diff --git a/WORKSPACE b/WORKSPACE
index 2371a75..1ccc5cb 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -693,9 +693,13 @@
     urls = ["https://github.com/google/benchmark/archive/refs/tags/v1.7.1.tar.gz"],
 )
 
-local_repository(
+http_archive(
     name = "com_google_ceres_solver",
-    path = "third_party/ceres",
+    patch_args = ["-p1"],
+    patches = ["//third_party:ceres.patch"],
+    sha256 = "a4c32939bd694a4b59fc50c244abda5d49863a56e77437b9d3bc398e17d59e20",
+    strip_prefix = "ceres-solver-7f9cc571b03632f1df93ea35725a1f5dfffe2c72",
+    urls = ["https://github.com/ceres-solver/ceres-solver/archive/7f9cc571b03632f1df93ea35725a1f5dfffe2c72.zip"],
 )
 
 http_archive(
diff --git a/third_party/ceres.patch b/third_party/ceres.patch
new file mode 100644
index 0000000..ce55b60
--- /dev/null
+++ b/third_party/ceres.patch
@@ -0,0 +1,134 @@
+diff -r -u a/bazel/ceres.bzl b/bazel/ceres.bzl
+--- a/bazel/ceres.bzl	2024-06-25 18:35:28.266797366 -0700
++++ b/bazel/ceres.bzl	2024-06-25 18:25:10.919515348 -0700
+@@ -189,6 +189,9 @@
+             "-I" + internal,
+             "-Wunused-parameter",
+             "-Wno-sign-compare",
++            "-Wno-format-nonliteral",
++            "-Wno-unused-parameter",
++            "-Wno-unused-but-set-variable",
+         ] + schur_eliminator_copts,
+ 
+         # These include directories and defines are propagated to other targets
+@@ -214,7 +217,7 @@
+         ],
+         visibility = ["//visibility:public"],
+         deps = [
+-            "@com_gitlab_libeigen_eigen//:eigen",
+             "@com_github_google_glog//:glog",
++            "@org_tuxfamily_eigen//:eigen",
+         ],
+     )
+diff -r -u a/BUILD b/BUILD
+--- a/BUILD	2024-06-25 18:35:28.266797366 -0700
++++ b/BUILD	2024-06-25 18:25:10.919515348 -0700
+@@ -32,6 +32,7 @@
+ # not support parameterization around threading choice or sparse backends.
+ 
+ load("//:bazel/ceres.bzl", "ceres_library")
++load("@org_frc971//tools/build_rules:select.bzl", "compiler_select")
+ 
+ ceres_library(
+     name = "ceres",
+@@ -57,6 +58,7 @@
+     ],
+     copts = [
+         "-Wno-sign-compare",
++        "-Wno-unused-but-set-variable",
+         "-DCERES_TEST_SRCDIR_SUFFIX=\\\"data/\\\"",
+     ],
+     includes = [
+@@ -165,12 +167,16 @@
+     # but in the future disable these warnings only for rotation_test.
+     # TODO(keir): When the tests are macro-ified, apply these selectively.
+     "-Wno-address",
+-]
++    "-Wno-unused-parameter",
++] + compiler_select({
++    "gcc": ["-Wno-use-after-free"],
++    "clang": [],
++})
+ 
+ TEST_DEPS = [
+     "//:ceres",
+     "//:test_util",
+-    "@com_gitlab_libeigen_eigen//:eigen",
++    "@org_tuxfamily_eigen//:eigen",
+     "@com_github_gflags_gflags//:gflags",
+ ]
+ 
+diff -r -u a/examples/BUILD b/examples/BUILD
+--- a/examples/BUILD	2024-06-25 18:35:28.270797439 -0700
++++ b/examples/BUILD	2024-06-25 18:25:32.355906091 -0700
+@@ -31,13 +31,14 @@
+ EXAMPLE_COPTS = [
+     # Needed to silence GFlags complaints.
+     "-Wno-sign-compare",
++    "-Wno-unused-parameter",
+     # Needed to put fscanf in a function.
+     "-Wno-format-nonliteral",
+ ]
+ 
+ EXAMPLE_DEPS = [
+     "//:ceres",
+-    "@com_gitlab_libeigen_eigen//:eigen",
++    "@org_tuxfamily_eigen//:eigen",
+     "@com_github_gflags_gflags//:gflags",
+ ]
+ 
+diff -r -u a/internal/ceres/autodiff_test.cc b/internal/ceres/autodiff_test.cc
+--- a/internal/ceres/autodiff_test.cc	2024-06-25 18:35:28.278797586 -0700
++++ b/internal/ceres/autodiff_test.cc	2024-06-25 18:25:10.935515640 -0700
+@@ -647,6 +647,10 @@
+   }
+ }
+ 
++#ifdef __clang__
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Wunused-but-set-variable"
++#endif
+ // This is fragile test that triggers the alignment bug on
+ // i686-apple-darwin10-llvm-g++-4.2 (GCC) 4.2.1. It is quite possible,
+ // that other combinations of operating system + compiler will
+@@ -671,5 +675,8 @@
+   // Need this to makes sure that x does not get optimized out.
+   x[0] = x[0] + JetT(1.0);
+ }
++#ifdef __clang__
++#pragma clang diagnostic pop
++#endif
+ 
+ }  // namespace ceres::internal
+diff -r -u a/internal/ceres/bundle_adjustment_test_util.h b/internal/ceres/bundle_adjustment_test_util.h
+--- a/internal/ceres/bundle_adjustment_test_util.h	2024-06-25 18:35:28.278797586 -0700
++++ b/internal/ceres/bundle_adjustment_test_util.h	2024-06-25 18:32:23.019406091 -0700
+@@ -97,7 +97,8 @@
+ 
+  private:
+   void ReadData(const std::string& filename) {
+-    FILE* fptr = fopen(filename.c_str(), "r");
++    FILE* fptr = fopen(
++        (std::string("../com_google_ceres_solver/") + filename).c_str(), "r");
+ 
+     if (!fptr) {
+       LOG(FATAL) << "File Error: unable to open file " << filename;
+diff -r -u a/internal/ceres/triplet_sparse_matrix_test.cc b/internal/ceres/triplet_sparse_matrix_test.cc
+--- a/internal/ceres/triplet_sparse_matrix_test.cc	2024-06-25 18:35:28.298797952 -0700
++++ b/internal/ceres/triplet_sparse_matrix_test.cc	2024-06-25 18:25:10.963516152 -0700
+@@ -184,8 +184,15 @@
+   orig.mutable_values()[1] = 5.2;
+   orig.set_num_nonzeros(2);
+ 
++#ifdef __clang__
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Wself-assign-overloaded"
++#endif
+   // Who's on earth gonna do this?
+   orig = orig;
++#ifdef __clang__
++#pragma clang diagnostic pop
++#endif
+ 
+   EXPECT_EQ(orig.num_rows(), 2);
+   EXPECT_EQ(orig.num_cols(), 5);
diff --git a/third_party/ceres/.clang-format b/third_party/ceres/.clang-format
deleted file mode 100644
index 21cad9e..0000000
--- a/third_party/ceres/.clang-format
+++ /dev/null
@@ -1,7 +0,0 @@
-BasedOnStyle: Google
-Standard: Cpp11
-BinPackArguments: false
-BinPackParameters: false
-PointerAlignment: Left
-DerivePointerAlignment: false
-CommentPragmas: NOLINT.*
diff --git a/third_party/ceres/.github/workflows/android.yml b/third_party/ceres/.github/workflows/android.yml
deleted file mode 100644
index ee5e966..0000000
--- a/third_party/ceres/.github/workflows/android.yml
+++ /dev/null
@@ -1,171 +0,0 @@
-name: Android
-
-on: [push, pull_request]
-
-jobs:
-  build-android:
-    name: NDK-${{matrix.abi}}-${{matrix.build_type}}-${{matrix.lib}}
-    runs-on: ${{matrix.os}}
-    defaults:
-      run:
-        shell: bash -e -o pipefail {0}
-    env:
-      CCACHE_DIR: ${{github.workspace}}/ccache
-      CMAKE_GENERATOR: Ninja
-      DEBIAN_FRONTEND: noninteractive
-    strategy:
-      fail-fast: true
-      matrix:
-        os:
-          - ubuntu-20.04
-        abi:
-          - arm64-v8a
-          - armeabi-v7a
-          - x86
-          - x86_64
-        build_type:
-          - Release
-        lib:
-          - shared
-          - static
-        android_api_level:
-          - '28'
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: Setup Dependencies
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y \
-            ccache \
-            ninja-build
-
-      # Ensure the declared NDK version is always installed even if it's removed
-      # from the virtual environment.
-      - name: Setup NDK
-        env:
-          ANDROID_NDK_VERSION: 23.2.8568313
-          ANDROID_SDK_ROOT: /usr/local/lib/android/sdk
-        run: |
-          echo 'y' | ${{env.ANDROID_SDK_ROOT}}/cmdline-tools/latest/bin/sdkmanager --install 'ndk;${{env.ANDROID_NDK_VERSION}}'
-          echo "ANDROID_NDK_ROOT=${{env.ANDROID_SDK_ROOT}}/ndk/${{env.ANDROID_NDK_VERSION}}" >> $GITHUB_ENV
-
-      - name: Cache Eigen
-        id: cache-eigen
-        uses: actions/cache@v4
-        with:
-          path: eigen/
-          key: NDK-${{matrix.os}}-eigen-3.4.0-${{matrix.abi}}
-
-      - name: Download Eigen
-        if: steps.cache-eigen.outputs.cache-hit != 'true'
-        run: |
-          wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
-          unzip eigen-3.4.0.zip
-
-      - name: Setup Eigen
-        if: steps.cache-eigen.outputs.cache-hit != 'true'
-        run: |
-          cmake -S eigen-3.4.0 -B build-eigen \
-                -DBUILD_TESTING=OFF \
-                -DCMAKE_ANDROID_API=${{matrix.android_api_level}} \
-                -DCMAKE_ANDROID_ARCH_ABI=${{matrix.abi}} \
-                -DCMAKE_ANDROID_STL_TYPE=c++_shared \
-                -DCMAKE_Fortran_COMPILER= \
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/eigen \
-                -DCMAKE_SYSTEM_NAME=Android \
-                -DEIGEN_BUILD_DOC=OFF
-          cmake --build build-eigen \
-                --config ${{matrix.build_type}} \
-                --target install
-
-      - name: Cache gflags
-        id: cache-gflags
-        uses: actions/cache@v4
-        with:
-          path: gflags/
-          key: NDK-${{matrix.os}}-gflags-2.2.2-${{matrix.abi}}-${{matrix.build_type}}-${{matrix.lib}}
-
-      - name: Download gflags
-        if: steps.cache-gflags.outputs.cache-hit != 'true'
-        run: |
-          wget https://github.com/gflags/gflags/archive/refs/tags/v2.2.2.zip
-          unzip v2.2.2.zip
-
-      - name: Setup gflags
-        if: steps.cache-gflags.outputs.cache-hit != 'true'
-        run: |
-          cmake -S gflags-2.2.2 -B build-gflags \
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-                -DBUILD_TESTING=OFF \
-                -DCMAKE_ANDROID_API=${{matrix.android_api_level}} \
-                -DCMAKE_ANDROID_ARCH_ABI=${{matrix.abi}} \
-                -DCMAKE_ANDROID_STL_TYPE=c++_shared \
-                -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/gflags \
-                -DCMAKE_SYSTEM_NAME=Android
-          cmake --build build-gflags \
-                --config ${{matrix.build_type}} \
-                --target install
-
-      - name: Cache glog
-        id: cache-glog
-        uses: actions/cache@v4
-        with:
-          path: glog/
-          key: NDK-${{matrix.os}}-glog-0.5-${{matrix.abi}}-${{matrix.build_type}}-${{matrix.lib}}
-
-      - name: Download glog
-        if: steps.cache-glog.outputs.cache-hit != 'true'
-        run: |
-          wget https://github.com/google/glog/archive/refs/tags/v0.5.0.zip
-          unzip v0.5.0.zip
-
-      - name: Setup glog
-        if: steps.cache-glog.outputs.cache-hit != 'true'
-        run: |
-          cmake -S glog-0.5.0 -B build-glog \
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-                -DBUILD_TESTING=OFF \
-                -DCMAKE_ANDROID_API=${{matrix.android_api_level}} \
-                -DCMAKE_ANDROID_ARCH_ABI=${{matrix.abi}} \
-                -DCMAKE_ANDROID_STL_TYPE=c++_shared \
-                -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-                -DCMAKE_FIND_ROOT_PATH=${{github.workspace}}/gflags \
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/glog \
-                -DCMAKE_SYSTEM_NAME=Android
-          cmake --build build-glog \
-                --config ${{matrix.build_type}} \
-                --target install
-
-      - name: Cache Build
-        id: cache-build
-        uses: actions/cache@v4
-        with:
-          path: ${{env.CCACHE_DIR}}
-          key: NDK-${{matrix.os}}-ccache-${{matrix.abi}}-${{matrix.build_type}}-${{matrix.lib}}-${{github.run_id}}
-          restore-keys: NDK-${{matrix.os}}-ccache-${{matrix.abi}}-${{matrix.build_type}}-${{matrix.lib}}-
-
-      - name: Setup Environment
-        if: matrix.build_type == 'Release'
-        run: |
-          echo 'CXXFLAGS=-flto' >> $GITHUB_ENV
-
-      - name: Configure
-        run: |
-          cmake -S . -B build_${{matrix.abi}} \
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-                -DCMAKE_ANDROID_API=${{matrix.android_api_level}} \
-                -DCMAKE_ANDROID_ARCH_ABI=${{matrix.abi}} \
-                -DCMAKE_ANDROID_STL_TYPE=c++_shared \
-                -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-                -DCMAKE_C_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_FIND_ROOT_PATH="${{github.workspace}}/eigen;${{github.workspace}}/gflags;${{github.workspace}}/glog" \
-                -DCMAKE_SYSTEM_NAME=Android
-
-      - name: Build
-        run: |
-          cmake --build build_${{matrix.abi}} \
-                --config ${{matrix.build_type}}
diff --git a/third_party/ceres/.github/workflows/linux.yml b/third_party/ceres/.github/workflows/linux.yml
deleted file mode 100644
index 8cd9d8e..0000000
--- a/third_party/ceres/.github/workflows/linux.yml
+++ /dev/null
@@ -1,122 +0,0 @@
-name: Linux
-
-on: [push, pull_request]
-
-jobs:
-  build:
-    name: ${{matrix.os}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.gpu}}
-    runs-on: ubuntu-latest
-    container: ${{matrix.os}}
-    defaults:
-      run:
-        shell: bash -e -o pipefail {0}
-    env:
-      CCACHE_DIR: ${{github.workspace}}/ccache
-      CMAKE_GENERATOR: Ninja
-      DEBIAN_FRONTEND: noninteractive
-    strategy:
-      fail-fast: true
-      matrix:
-        os:
-          - ubuntu:22.04
-          - ubuntu:24.04
-        build_type:
-          - Release
-        lib:
-          - shared
-          - static
-        gpu:
-          - cuda
-          - no-cuda
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: Setup Dependencies
-        run: |
-          apt-get update
-          apt-get install -y \
-            build-essential \
-            ccache \
-            cmake \
-            libbenchmark-dev \
-            libblas-dev \
-            libeigen3-dev \
-            libgflags-dev \
-            libgoogle-glog-dev \
-            liblapack-dev \
-            libmetis-dev \
-            libsuitesparse-dev \
-            ninja-build \
-            wget
-
-      # nvidia cuda toolkit + gcc combo shipped with 22.04LTS is broken
-      # and is not able to compile code that uses thrust
-      # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1006962
-      - name: Setup CUDA Toolkit Repositories (22.04)
-        if: matrix.gpu == 'cuda' && matrix.os == 'ubuntu:22.04'
-        run: |
-          wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
-          dpkg -i cuda-keyring_1.0-1_all.deb
-
-      - name: Setup CUDA Toolkit Repositories (24.04)
-        if: matrix.gpu == 'cuda' && matrix.os == 'ubuntu:24.04'
-        run: |
-          wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
-          dpkg -i cuda-keyring_1.1-1_all.deb
-
-      - name: Setup CUDA Toolkit (<24.04)
-        if: matrix.gpu == 'cuda' && matrix.os != 'ubuntu:24.04'
-        run: |
-          apt-get update
-          apt-get install -y cuda
-          echo "CUDACXX=/usr/local/cuda/bin/nvcc" >> $GITHUB_ENV
-
-      - name: Setup CUDA Toolkit (>=24.04)
-        if: matrix.gpu == 'cuda' && matrix.os == 'ubuntu:24.04'
-        run: |
-          apt-get update
-          apt-get install -y nvidia-cuda-toolkit
-          echo "CUDACXX=/usr/lib/nvidia-cuda-toolkit/bin/nvcc" >> $GITHUB_ENV
-
-      - name: Cache Build
-        id: cache-build
-        uses: actions/cache@v4
-        with:
-          path: ${{env.CCACHE_DIR}}
-          key: ${{matrix.os}}-ccache-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.gpu}}-${{github.run_id}}
-          restore-keys: ${{matrix.os}}-ccache-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.gpu}}-
-
-      - name: Setup Environment
-        if: matrix.build_type == 'Release'
-        run: |
-          echo 'CXXFLAGS=-flto' >> $GITHUB_ENV
-
-      - name: Configure
-        run: |
-          cmake -S . -B build_${{matrix.build_type}} \
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-                -DUSE_CUDA=${{matrix.gpu == 'cuda'}} \
-                -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-                -DCMAKE_C_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
-
-      - name: Build
-        run: |
-          cmake --build build_${{matrix.build_type}} \
-                --config ${{matrix.build_type}}
-
-      - name: Test
-        if: matrix.gpu == 'no-cuda'
-        run: |
-          cd build_${{matrix.build_type}}/
-          ctest --config ${{matrix.build_type}} \
-                --output-on-failure \
-                -j$(nproc)
-
-      - name: Install
-        run: |
-          cmake --build build_${{matrix.build_type}}/ \
-                --config ${{matrix.build_type}} \
-                --target install
diff --git a/third_party/ceres/.github/workflows/macos.yml b/third_party/ceres/.github/workflows/macos.yml
deleted file mode 100644
index 89c3534..0000000
--- a/third_party/ceres/.github/workflows/macos.yml
+++ /dev/null
@@ -1,108 +0,0 @@
-name: macOS
-
-on: [push, pull_request]
-
-jobs:
-  build:
-    name: ${{matrix.os}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.target}}
-    runs-on: ${{matrix.os}}
-    defaults:
-      run:
-        shell: bash -e -o pipefail {0}
-    env:
-      CCACHE_DIR: ${{github.workspace}}/ccache
-      CMAKE_GENERATOR: Ninja
-    strategy:
-      fail-fast: true
-      matrix:
-        os:
-          - macos-12
-          - macos-13
-          - macos-14
-        build_type:
-          - Release
-        lib:
-          - shared
-          - static
-        target:
-          - host
-          - ios
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: Setup Dependencies (iOS)
-        if: matrix.target == 'ios'
-        run: |
-          brew install \
-            ccache \
-            eigen \
-            ninja
-
-      - name: Setup Dependencies (Host)
-        if: matrix.target == 'host'
-        run: |
-          brew install \
-            ccache \
-            eigen \
-            gflags \
-            glog \
-            google-benchmark \
-            metis \
-            ninja \
-            suite-sparse
-
-      - name: Cache Build
-        id: cache-build
-        uses: actions/cache@v4
-        with:
-          path: ${{env.CCACHE_DIR}}
-          key: ${{matrix.os}}-ccache-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.target}}-${{github.run_id}}
-          restore-keys: ${{matrix.os}}-ccache-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.target}}-
-
-      - name: Setup Environment
-        if: matrix.build_type == 'Release'
-        run: |
-          echo 'CXXFLAGS=-flto' >> $GITHUB_ENV
-
-      - name: Configure (iOS)
-        if: matrix.target == 'ios'
-        run: |
-          cmake -S . -B build_${{matrix.build_type}} \
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-                -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-                -DCMAKE_C_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/cmake/iOS.cmake \
-                -DEigen3_DIR=$(brew --prefix)/share/eigen3/cmake \
-                -DIOS_PLATFORM=OS \
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
-
-      - name: Configure (Host)
-        if: matrix.target == 'host'
-        run: |
-          cmake -S . -B build_${{matrix.build_type}} \
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-                -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-                -DCMAKE_C_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
-
-      - name: Build
-        run: |
-          cmake --build build_${{matrix.build_type}} \
-                --config ${{matrix.build_type}}
-
-      - name: Test
-        if: matrix.target == 'host'
-        run: |
-          ctest --test-dir build_${{matrix.build_type}} \
-                --config ${{matrix.build_type}} \
-                --output-on-failure \
-                -j$(sysctl -n hw.ncpu)
-
-      - name: Install
-        run: |
-          cmake --build build_${{matrix.build_type}}/ \
-                --config ${{matrix.build_type}} \
-                --target install
diff --git a/third_party/ceres/.github/workflows/windows.yml b/third_party/ceres/.github/workflows/windows.yml
deleted file mode 100644
index c340f9f..0000000
--- a/third_party/ceres/.github/workflows/windows.yml
+++ /dev/null
@@ -1,259 +0,0 @@
-name: Windows
-
-on: [push, pull_request]
-
-jobs:
-  build-mingw:
-    name: ${{matrix.sys}}-${{matrix.env}}-${{matrix.build_type}}-${{matrix.lib}}
-    runs-on: windows-latest
-    defaults:
-      run:
-        shell: msys2 {0}
-    env:
-      CCACHE_DIR: ${{github.workspace}}/ccache
-    strategy:
-      fail-fast: true
-      matrix:
-        build_type: [Release]
-        sys: [mingw64]
-        lib: [shared, static]
-        include:
-          - sys: mingw64
-            env: x86_64
-
-    steps:
-    - uses: actions/checkout@v4
-
-    - name: Setup Dependencies
-      uses: msys2/setup-msys2@v2
-      with:
-        msystem: ${{matrix.sys}}
-        install: >-
-          mingw-w64-${{matrix.env}}-ccache
-          mingw-w64-${{matrix.env}}-cmake
-          mingw-w64-${{matrix.env}}-eigen3
-          mingw-w64-${{matrix.env}}-gcc
-          mingw-w64-${{matrix.env}}-gflags
-          mingw-w64-${{matrix.env}}-glog
-          ${{matrix.sys == 'mingw64' && format('mingw-w64-{0}-metis', matrix.env) || ''}}
-          mingw-w64-${{matrix.env}}-ninja
-          mingw-w64-${{matrix.env}}-suitesparse
-
-    - name: Setup Environment
-      if: ${{matrix.build_type == 'Release'}}
-      run: |
-        echo 'CFLAGS=-flto' >> ~/.bash_profile
-        echo 'CXXFLAGS=-flto' >> ~/.bash_profile
-
-    - name: Cache Build
-      id: cache-build
-      uses: actions/cache@v4
-      with:
-        path: ${{env.CCACHE_DIR}}
-        key: ${{runner.os}}-${{matrix.sys}}-${{matrix.env}}-${{matrix.build_type}}-${{matrix.lib}}-ccache-${{github.run_id}}
-        restore-keys: ${{runner.os}}-${{matrix.sys}}-${{matrix.env}}-${{matrix.build_type}}-${{matrix.lib}}-ccache-
-
-    - name: Configure
-      run: |
-        cmake -S . -B build_${{matrix.build_type}}/ \
-              -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-              -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-              -DCMAKE_C_COMPILER_LAUNCHER:FILEPATH=ccache \
-              -DCMAKE_CXX_COMPILER_LAUNCHER:FILEPATH=ccache \
-              -G Ninja
-
-    - name: Build
-      run: |
-        cmake --build build_${{matrix.build_type}}/ \
-              --config ${{matrix.build_type}}
-
-    - name: Test
-      run: |
-        cd build_${{matrix.build_type}}/
-        ctest --config ${{matrix.build_type}} \
-              --output-on-failure \
-              -j$(nproc)
-
-    - name: Install
-      run: |
-        cmake --build build_${{matrix.build_type}}/ \
-              --config ${{matrix.build_type}} \
-              --target install
-
-  build-msvc:
-    name: ${{matrix.msvc}}-${{matrix.arch}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.gpu}}
-    runs-on: ${{matrix.os}}
-    defaults:
-      run:
-        shell: powershell
-    env:
-      CL: /MP
-      CMAKE_GENERATOR: ${{matrix.generator}}
-      CMAKE_GENERATOR_PLATFORM: ${{matrix.arch}}
-    strategy:
-      fail-fast: true
-      matrix:
-        arch:
-          - x64
-        build_type:
-          - Release
-        msvc:
-          - VS-16-2019
-          - VS-17-2022
-        lib:
-          - shared
-        gpu:
-          - cuda
-          - no-cuda
-        include:
-          - msvc: VS-16-2019
-            os: windows-2019
-            generator: 'Visual Studio 16 2019'
-            marker: vc16
-          - msvc: VS-17-2022
-            os: windows-2022
-            generator: 'Visual Studio 17 2022'
-            marker: vc17
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: Download and install CUDA toolkit
-        if: matrix.gpu == 'cuda'
-        run: |
-          Invoke-WebRequest https://developer.download.nvidia.com/compute/cuda/12.2.1/network_installers/cuda_12.2.1_windows_network.exe -OutFile cuda_toolkit_windows.exe
-          Start-Process -Wait -FilePath .\cuda_toolkit_windows.exe -ArgumentList "-s cusolver_dev_12.2 cusparse_dev_12.2 cublas_dev_12.2 thrust_12.2 nvcc_12.2 cudart_12.2 nvrtc_dev_12.2 visual_studio_integration_12.2"
-          Remove-Item .\cuda_toolkit_windows.exe
-          $CUDA_PATH = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.2"
-          echo "CUDA_PATH=$CUDA_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-          echo "CUDA_PATH_V12_2=$CUDA_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-          echo "$CUDA_PATH/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
-
-      - name: Cache gflags
-        id: cache-gflags
-        uses: actions/cache@v4
-        with:
-          path: gflags/
-          key: ${{matrix.msvc}}-gflags-2.2.2-${{matrix.arch}}-${{matrix.build_type}}-${{matrix.lib}}
-
-      - name: Download gflags
-        if: steps.cache-gflags.outputs.cache-hit != 'true'
-        run: |
-          (New-Object System.Net.WebClient).DownloadFile("https://github.com/gflags/gflags/archive/refs/tags/v2.2.2.zip", "v2.2.2.zip");
-          Expand-Archive -Path v2.2.2.zip -DestinationPath .;
-
-      - name: Setup gflags
-        if: steps.cache-gflags.outputs.cache-hit != 'true'
-        run: |
-          cmake -S gflags-2.2.2 -B build-gflags `
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} `
-                -DBUILD_TESTING=OFF `
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/gflags
-          cmake --build build-gflags `
-                --config ${{matrix.build_type}} `
-                --target install
-
-      - name: Cache glog
-        id: cache-glog
-        uses: actions/cache@v4
-        with:
-          path: glog/
-          key: ${{matrix.msvc}}-glog-0.6.0-${{matrix.arch}}-${{matrix.build_type}}-${{matrix.lib}}
-
-      - name: Download glog
-        if: steps.cache-glog.outputs.cache-hit != 'true'
-        run: |
-          (New-Object System.Net.WebClient).DownloadFile("https://github.com/google/glog/archive/refs/tags/v0.6.0.zip", "v0.6.0.zip");
-          Expand-Archive -Path v0.6.0.zip -DestinationPath .;
-
-      - name: Setup glog
-        if: steps.cache-glog.outputs.cache-hit != 'true'
-        run: |
-          cmake -S glog-0.6.0 -B build-glog `
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} `
-                -DBUILD_TESTING=OFF `
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/glog `
-                -DCMAKE_PREFIX_PATH=${{github.workspace}}/gflags
-          cmake --build build-glog `
-                --config ${{matrix.build_type}} `
-                --target install
-
-      - name: Cache SuiteSparse
-        id: cache-suitesparse
-        uses: actions/cache@v4
-        with:
-          path: suitesparse/
-          key: ${{matrix.msvc}}-suitesparse-5.13.0-cmake.3-${{matrix.arch}}-${{matrix.build_type}}-${{matrix.lib}}
-
-      - name: Download SuiteSparse
-        if: steps.cache-suitesparse.outputs.cache-hit != 'true'
-        run: |
-          (New-Object System.Net.WebClient).DownloadFile("https://github.com/sergiud/SuiteSparse/releases/download/5.13.0-cmake.3/SuiteSparse-5.13.0-cmake.3-${{matrix.marker}}-Win64-${{matrix.build_type}}-${{matrix.lib}}-gpl-metis.zip", "suitesparse.zip");
-          Expand-Archive -Path suitesparse.zip -DestinationPath ${{github.workspace}}/suitesparse;
-
-      - name: Cache Eigen
-        id: cache-eigen
-        uses: actions/cache@v4
-        with:
-          path: eigen/
-          key: ${{runner.os}}-eigen-3.4.0
-
-      - name: Download Eigen
-        if: steps.cache-eigen.outputs.cache-hit != 'true'
-        run: |
-          (New-Object System.Net.WebClient).DownloadFile("https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip", "eigen-3.4.0.zip");
-          Expand-Archive -Path eigen-3.4.0.zip -DestinationPath .;
-
-      - name: Setup Eigen
-        if: steps.cache-eigen.outputs.cache-hit != 'true'
-        run: |
-          cmake -S eigen-3.4.0 -B build-eigen `
-                -DBUILD_TESTING=OFF `
-                -DCMAKE_Fortran_COMPILER= `
-                -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/eigen `
-                -DEIGEN_BUILD_DOC=OFF
-          cmake --build build-eigen `
-                --config ${{matrix.build_type}} `
-                --target install
-
-      - name: Setup Build Environment
-        run: |
-          echo "Eigen3_ROOT=${{github.workspace}}/eigen" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-          echo "gflags_ROOT=${{github.workspace}}/gflags" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-          echo "glog_ROOT=${{github.workspace}}/glog" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-          echo "CMAKE_PREFIX_PATH=${{github.workspace}}/suitesparse" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-
-      - name: Setup Runtime Environment
-        run: |
-          echo '${{github.workspace}}\gflags\bin' | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
-          echo '${{github.workspace}}\glog\bin' | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
-          echo '${{github.workspace}}\suitesparse\bin' | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
-
-      - name: Configure
-        run: |
-          cmake -S . -B build_${{matrix.build_type}}/ `
-                -DBLAS_blas_LIBRARY=${{github.workspace}}/suitesparse/lib/libblas.lib `
-                -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} `
-                -DCMAKE_CONFIGURATION_TYPES=${{matrix.build_type}} `
-                -DCMAKE_INSTALL_PREFIX:PATH=${{github.workspace}}/install `
-                -DLAPACK_lapack_LIBRARY=${{github.workspace}}/suitesparse/lib/liblapack.lib
-
-      - name: Build
-        run: |
-          cmake --build build_${{matrix.build_type}}/ `
-                --config ${{matrix.build_type}}
-
-      - name: Test
-        if: matrix.gpu == 'no-cuda'
-        env:
-          CTEST_OUTPUT_ON_FAILURE: 1
-        run: |
-          cmake --build build_${{matrix.build_type}}/ `
-                --config ${{matrix.build_type}} `
-                --target RUN_TESTS
-
-      - name: Install
-        run: |
-          cmake --build build_${{matrix.build_type}}/ `
-                --config ${{matrix.build_type}} `
-                --target INSTALL
diff --git a/third_party/ceres/.gitignore b/third_party/ceres/.gitignore
deleted file mode 100644
index ca55495..0000000
--- a/third_party/ceres/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*~
-.*.swp
-CMakeLists.txt.user*
-*.kdev*
-*.bak
-*.orig
-build/
-build-release/
-build-debug/
-docs/html
-*.aux
-*.blg
-*.toc
-*.fdb_latexmk
-*.bbl
-*.log
-*.synctex.gz
-ceres.pdf
-ceres-solver.pdf
-docs/minted.sty
-obj/
-jni/libs/
-.buildinfo
-bazel-*
-*.pyc
-.idea*
-
-cmake-build*
-small-blas-benchmarks
\ No newline at end of file
diff --git a/third_party/ceres/BUILD b/third_party/ceres/BUILD
deleted file mode 100644
index eba1473..0000000
--- a/third_party/ceres/BUILD
+++ /dev/null
@@ -1,220 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: mierle@gmail.com (Keir Mierle)
-#
-# These are Bazel rules to build Ceres. It's currently in Alpha state, and does
-# not support parameterization around threading choice or sparse backends.
-
-load("//:bazel/ceres.bzl", "ceres_library")
-load("@org_frc971//tools/build_rules:select.bzl", "compiler_select")
-
-ceres_library(
-    name = "ceres",
-    restrict_schur_specializations = False,
-)
-
-cc_library(
-    name = "test_util",
-    srcs = ["internal/ceres/" + x for x in [
-        "evaluator_test_utils.cc",
-        "numeric_diff_test_utils.cc",
-        "test_util.cc",
-        "gmock_gtest_all.cc",
-        "gmock_main.cc",
-        "gmock/gmock.h",
-        "gmock/mock-log.h",
-        "gtest/gtest.h",
-    ]],
-    hdrs = [
-        "internal/ceres/gmock/gmock.h",
-        "internal/ceres/gmock/mock-log.h",
-        "internal/ceres/gtest/gtest.h",
-    ],
-    copts = [
-        "-Wno-sign-compare",
-        "-Wno-unused-but-set-variable",
-        "-DCERES_TEST_SRCDIR_SUFFIX=\\\"data/\\\"",
-    ],
-    includes = [
-        "internal",
-        "internal/ceres",
-    ],
-    deps = [
-        "//:ceres",
-        "@com_github_gflags_gflags//:gflags",
-    ],
-)
-
-CERES_TESTS = [
-    "array_utils",
-    "autodiff_cost_function",
-    "autodiff_manifold",
-    "autodiff",
-    "block_jacobi_preconditioner",
-    "block_random_access_dense_matrix",
-    "block_random_access_diagonal_matrix",
-    "block_random_access_sparse_matrix",
-    "block_sparse_matrix",
-    "canonical_views_clustering",
-    "c_api",
-    "compressed_col_sparse_matrix_utils",
-    "compressed_row_sparse_matrix",
-    "concurrent_queue",
-    "conditioned_cost_function",
-    "conjugate_gradients_solver",
-    "corrector",
-    "cost_function_to_functor",
-    "covariance",
-    "cubic_interpolation",
-    "dense_cholesky",
-    "dense_linear_solver",
-    "dense_sparse_matrix",
-    "detect_structure",
-    "dogleg_strategy",
-    "dynamic_autodiff_cost_function",
-    "dynamic_compressed_row_sparse_matrix",
-    "dynamic_numeric_diff_cost_function",
-    "dynamic_sparse_normal_cholesky_solver",
-    "dynamic_sparsity",
-    "evaluation_callback",
-    "evaluator",
-    "gradient_checker",
-    "gradient_checking_cost_function",
-    "gradient_problem_solver",
-    "gradient_problem",
-    "graph_algorithms",
-    "graph",
-    "householder_vector",
-    "implicit_schur_complement",
-    "inner_product_computer",
-    "invert_psd_matrix",
-    "is_close",
-    "iterative_refiner",
-    "iterative_schur_complement_solver",
-    "jet",
-    "levenberg_marquardt_strategy",
-    "line_search_minimizer",
-    "line_search_preprocessor",
-    "loss_function",
-    "minimizer",
-    "normal_prior",
-    "numeric_diff_cost_function",
-    "ordered_groups",
-    "parallel_for",
-    "parallel_utils",
-    "parameter_block_ordering",
-    "parameter_block",
-    "partitioned_matrix_view",
-    "polynomial",
-    "problem",
-    "program",
-    "reorder_program",
-    "residual_block",
-    "residual_block_utils",
-    "rotation",
-    "schur_complement_solver",
-    "schur_eliminator",
-    "single_linkage_clustering",
-    "small_blas",
-    "solver",
-    "sparse_cholesky",
-    "sparse_normal_cholesky_solver",
-    "subset_preconditioner",
-    "system",
-    "thread_pool",
-    "tiny_solver_autodiff_function",
-    "tiny_solver_cost_function_adapter",
-    "tiny_solver",
-    "triplet_sparse_matrix",
-    "trust_region_minimizer",
-    "trust_region_preprocessor",
-    "visibility_based_preconditioner",
-    "visibility",
-]
-
-TEST_COPTS = [
-    # Needed to silence GFlags complaints.
-    "-Wno-sign-compare",
-
-    # These two warnings don't work well in conjunction with GMock, and
-    # trigger incorrectly on parts of rotation_test. For now, disable them,
-    # but in the future disable these warnings only for rotation_test.
-    # TODO(keir): When the tests are macro-ified, apply these selectively.
-    "-Wno-address",
-    "-Wno-unused-parameter",
-] + compiler_select({
-    "gcc": ["-Wno-use-after-free"],
-    "clang": [],
-})
-
-TEST_DEPS = [
-    "//:ceres",
-    "//:test_util",
-    "@org_tuxfamily_eigen//:eigen",
-    "@com_github_gflags_gflags//:gflags",
-]
-
-# Instantiate all the tests with a template.
-[cc_test(
-    name = test_name + "_test",
-    timeout = "short",
-    srcs = ["internal/ceres/" + test_name + "_test.cc"],
-    copts = TEST_COPTS,
-    deps = TEST_DEPS,
-) for test_name in CERES_TESTS]
-
-# Instantiate all the bundle adjustment tests. These are separate to
-# parallelize the execution of the tests; otherwise the tests take a long time.
-#
-# Note: While it is possible to run the Python script to generate the .cc files
-# as part of the build, it introduces an undesirable build-time Python
-# dependency that we'd prefer to avoid.
-[cc_test(
-    name = test_filename.split("/")[-1][:-3],  # Remove .cc.
-    timeout = "long",
-    srcs = [test_filename],
-    copts = TEST_COPTS,
-
-    # This is the data set that is bundled for the testing.
-    data = [":data/problem-16-22106-pre.txt"],
-    deps = TEST_DEPS,
-) for test_filename in glob([
-    "internal/ceres/generated_bundle_adjustment_tests/*_test.cc",
-])]
-
-# Build the benchmarks.
-[cc_binary(
-    name = benchmark_name,
-    srcs = ["internal/ceres/" + benchmark_name + ".cc"],
-    copts = TEST_COPTS,
-    deps = TEST_DEPS + ["@com_github_google_benchmark//:benchmark"],
-) for benchmark_name in [
-    "small_blas_gemm_benchmark",
-    "small_blas_gemv_benchmark",
-]]
diff --git a/third_party/ceres/CITATION.cff b/third_party/ceres/CITATION.cff
deleted file mode 100644
index 08848f8..0000000
--- a/third_party/ceres/CITATION.cff
+++ /dev/null
@@ -1,15 +0,0 @@
-cff-version: 1.2.0
-message: If you use Ceres Solver for a publication, please cite it as below.
-title: Ceres Solver
-abstract: A large scale non-linear optimization library
-authors:
-- family-names: Agarwal
-  given-names: Sameer
-- family-names: Mierle
-  given-names: Keir
-- name: The Ceres Solver Team
-version: 2.2
-date-released: 2023-10-13
-license: Apache-2.0
-repository-code: https://github.com/ceres-solver/ceres-solver
-url: http://ceres-solver.org
diff --git a/third_party/ceres/CMakeLists.txt b/third_party/ceres/CMakeLists.txt
deleted file mode 100644
index 6cbc942..0000000
--- a/third_party/ceres/CMakeLists.txt
+++ /dev/null
@@ -1,793 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2024 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: keir@google.com (Keir Mierle)
-#          alexs.mac@gmail.com (Alex Stewart)
-
-cmake_minimum_required(VERSION 3.16...3.29)
-project(Ceres C CXX)
-
-# NOTE: The following CMake variables must be applied consistently to all
-# targets in project to avoid visibility warnings by placing the variables at
-# the project top.
-
-# Always build position-independent code (PIC), even when building Ceres as a
-# static library so that shared libraries can link against it, not just
-# executables (PIC does not apply on Windows). Global variable can be overridden
-# by the user whereas target properties can be not.
-set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-# Set the default symbol visibility to hidden to unify the behavior among
-# the various compilers and to get smaller binaries
-set(CMAKE_C_VISIBILITY_PRESET hidden)
-set(CMAKE_CXX_VISIBILITY_PRESET hidden)
-set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
-
-# NOTE: The 'generic' CMake variables CMAKE_[SOURCE/BINARY]_DIR should not be
-#       used.  Always use the project-specific variants (generated by CMake):
-#       <PROJECT_NAME_MATCHING_CASE>_[SOURCE/BINARY]_DIR, e.g.
-#       Ceres_SOURCE_DIR (note, *not* CERES_SOURCE_DIR) instead, as these will
-#       always point to the correct directories for the Ceres project, even if
-#       it is nested inside another source tree, whereas the 'generic'
-#       CMake variables refer to the *first* project() declaration, i.e. the
-#       top-level project, not Ceres, if Ceres is nested.
-
-# Make CMake aware of the cmake folder for local FindXXX scripts,
-# append rather than set in case the user has passed their own
-# additional paths via -D.
-list(APPEND CMAKE_MODULE_PATH "${Ceres_SOURCE_DIR}/cmake")
-include(AddCompileFlagsIfSupported)
-include(CheckCXXCompilerFlag)
-include(CheckLibraryExists)
-include(GNUInstallDirs)
-include(UpdateCacheVariable)
-
-check_cxx_compiler_flag(/bigobj HAVE_BIGOBJ)
-check_library_exists(m pow "" HAVE_LIBM)
-
-# Xcode 11.0-1 with macOS 10.15 (Catalina) broke alignment.
-include(DetectBrokenStackCheckMacOSXcodePairing)
-detect_broken_stack_check_macos_xcode_pairing()
-
-# Set up the git hook to make Gerrit Change-Id: lines in commit messages.
-include(AddGerritCommitHook)
-add_gerrit_commit_hook(${Ceres_SOURCE_DIR} ${Ceres_BINARY_DIR})
-
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${Ceres_BINARY_DIR}/bin)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${Ceres_BINARY_DIR}/lib)
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${Ceres_BINARY_DIR}/lib)
-# Set postfixes for generated libraries based on buildtype.
-set(CMAKE_RELEASE_POSTFIX "")
-set(CMAKE_DEBUG_POSTFIX "-debug")
-
-# Read the Ceres version from the source, such that we only ever have a single
-# definition of the Ceres version.
-include(ReadCeresVersionFromSource)
-read_ceres_version_from_source(${Ceres_SOURCE_DIR})
-
-enable_testing()
-
-include(CMakeDependentOption)
-include(PrettyPrintCMakeList)
-
-option(MINIGLOG "Use a stripped down version of glog." OFF)
-option(GFLAGS "Enable Google Flags." ON)
-option(SUITESPARSE "Enable SuiteSparse." ON)
-if (APPLE)
-  option(ACCELERATESPARSE
-    "Enable use of sparse solvers in Apple's Accelerate framework." ON)
-  option(ENABLE_BITCODE
-    "Enable bitcode for iOS builds (disables inline optimizations for Eigen)." OFF)
-endif()
-# We can't have an option called 'CUDA' since that is a reserved word -- a
-# language definition.
-set(USE_CUDA "default" CACHE STRING "Enable use of CUDA linear algebra solvers.")
-option(LAPACK "Enable use of LAPACK directly within Ceres." ON)
-# Template specializations for the Schur complement based solvers. If
-# compile time, binary size or compiler performance is an issue, you
-# may consider disabling this.
-option(SCHUR_SPECIALIZATIONS "Enable fixed-size schur specializations." ON)
-option(CUSTOM_BLAS
-       "Use handcoded BLAS routines (usually faster) instead of Eigen."
-       ON)
-# Enable the use of Eigen as a sparse linear algebra library for
-# solving the nonlinear least squares problems.
-option(EIGENSPARSE "Enable Eigen as a sparse linear algebra library." ON)
-cmake_dependent_option(EIGENMETIS "Enable Eigen METIS support." ON EIGENSPARSE OFF)
-option(EXPORT_BUILD_DIR
-  "Export build directory using CMake (enables external use without install)." OFF)
-option(BUILD_TESTING "Enable tests" ON)
-option(BUILD_DOCUMENTATION "Build User's Guide (html)" OFF)
-option(BUILD_EXAMPLES "Build examples" ON)
-option(BUILD_BENCHMARKS "Build Ceres benchmarking suite" ON)
-option(BUILD_SHARED_LIBS "Build Ceres as a shared library." OFF)
-option(PROVIDE_UNINSTALL_TARGET "Add a custom target to ease removal of installed targets" ON)
-set(SANITIZERS "" CACHE STRING "Semicolon-separated list of sanitizers to use (e.g address, memory, thread)")
-include(EnableSanitizer)
-enable_sanitizer(${SANITIZERS})
-if (ANDROID)
-  option(ANDROID_STRIP_DEBUG_SYMBOLS "Strip debug symbols from Android builds (reduces file sizes)" ON)
-endif()
-
-# IOS is defined iff using the iOS.cmake CMake toolchain to build a static
-# library for iOS.
-if (IOS)
-  message(STATUS "Building Ceres for iOS platform: ${IOS_PLATFORM}")
-
-  # Ceres requires at least iOS 7.0+.
-  if (IOS_DEPLOYMENT_TARGET VERSION_LESS 7.0)
-    message(FATAL_ERROR "Unsupported iOS version: ${IOS_DEPLOYMENT_TARGET}, Ceres "
-      "requires at least iOS version 7.0")
-  endif()
-
-  update_cache_variable(MINIGLOG ON)
-  message(STATUS "Building for iOS: Forcing use of miniglog instead of glog.")
-
-  # Apple claims that the BLAS call dsyrk_ is a private API, and will not allow
-  # you to submit to the Apple Store if the symbol is present.
-  update_cache_variable(LAPACK OFF)
-  message(STATUS "Building for iOS: SuiteSparse, LAPACK, gflags "
-    "are not available.")
-
-  update_cache_variable(BUILD_EXAMPLES OFF)
-  message(STATUS "Building for iOS: Will not build examples.")
-endif (IOS)
-
-unset(CERES_COMPILE_OPTIONS)
-
-# Eigen.
-# Eigen delivers Eigen3Config.cmake since v3.3.3
-find_package(Eigen3 3.3 REQUIRED)
-if (Eigen3_FOUND)
-  message("-- Found Eigen version ${Eigen3_VERSION}: ${Eigen3_DIR}")
-  if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)" AND
-      Eigen3_VERSION VERSION_LESS 3.3.4)
-    # As per issue #289: https://github.com/ceres-solver/ceres-solver/issues/289
-    # the bundle_adjustment_test will fail for Eigen < 3.3.4 on aarch64.
-    message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.3.4 on aarch64. "
-      "Detected version of Eigen is: ${Eigen3_VERSION}.")
-  endif()
-
-  if (EIGENSPARSE)
-    message("-- Enabling use of Eigen as a sparse linear algebra library.")
-    list(APPEND CERES_COMPILE_OPTIONS CERES_USE_EIGEN_SPARSE)
-  else (EIGENSPARSE)
-    message("-- Disabling use of Eigen as a sparse linear algebra library.")
-    message("   This does not affect the covariance estimation algorithm ")
-    message("   which can still use the EIGEN_SPARSE_QR algorithm.")
-    add_definitions(-DEIGEN_MPL2_ONLY)
-  endif (EIGENSPARSE)
-endif (Eigen3_FOUND)
-
-if (CMAKE_VERSION VERSION_LESS 3.17)
-  set_property(CACHE USE_CUDA PROPERTY STRINGS OFF default)
-else (CMAKE_VERSION VERSION_LESS 3.17)
-  set_property(CACHE USE_CUDA PROPERTY STRINGS OFF default static)
-endif (CMAKE_VERSION VERSION_LESS 3.17)
-
-if (USE_CUDA)
-  if (CMAKE_VERSION VERSION_LESS 3.17)
-    # On older versions of CMake (20.04 default is 3.16) FindCUDAToolkit was
-    # not available, but FindCUDA was deprecated. To avoid special-case handling
-    # elsewhere, emulate the effects of FindCUDAToolkit locally in terms of the
-    # expected CMake imported targets and defined variables. This can be removed
-    # from as soon as the min CMake version is >= 3.17.
-    find_package(CUDA QUIET)
-    if (CUDA_FOUND)
-      message("-- Found CUDA version ${CUDA_VERSION} installed in: "
-        "${CUDA_TOOLKIT_ROOT_DIR} via legacy (< 3.17) CMake module. "
-        "Using the legacy CMake module means that any installation of "
-        "Ceres will require that the CUDA libraries be installed in a "
-        "location included in the LD_LIBRARY_PATH.")
-      enable_language(CUDA)
-
-      macro(DECLARE_IMPORTED_CUDA_TARGET COMPONENT)
-        add_library(CUDA::${COMPONENT} INTERFACE IMPORTED)
-        target_include_directories(
-          CUDA::${COMPONENT} INTERFACE ${CUDA_INCLUDE_DIRS})
-        target_link_libraries(
-          CUDA::${COMPONENT} INTERFACE ${CUDA_${COMPONENT}_LIBRARY} ${ARGN})
-      endmacro()
-
-      declare_imported_cuda_target(cublas)
-      declare_imported_cuda_target(cusolver)
-      declare_imported_cuda_target(cusparse)
-      declare_imported_cuda_target(cudart ${CUDA_LIBRARIES})
-
-      set(CERES_CUDA_TARGET_SUFFIX "")
-      set(CUDAToolkit_BIN_DIR ${CUDA_TOOLKIT_ROOT_DIR}/bin)
-
-    else (CUDA_FOUND)
-      message("-- Did not find CUDA, disabling CUDA support.")
-      update_cache_variable(USE_CUDA OFF)
-    endif (CUDA_FOUND)
-  else (CMAKE_VERSION VERSION_LESS 3.17)
-    find_package(CUDAToolkit QUIET)
-    if (CUDAToolkit_FOUND)
-      message("-- Found CUDA version ${CUDAToolkit_VERSION} installed in: "
-        "${CUDAToolkit_TARGET_DIR}")
-      set(CUDAToolkit_DEPENDENCY
-        "find_dependency(CUDAToolkit ${CUDAToolkit_VERSION})")
-      enable_language(CUDA)
-      if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.18")
-        # Support Maxwell GPUs (Default).
-        set(CMAKE_CUDA_ARCHITECTURES "50")
-        # Support other architectures depending on CUDA toolkit version.
-        if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "8.0")
-          # Support Pascal GPUs.
-          list(APPEND CMAKE_CUDA_ARCHITECTURES "60")
-        endif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "8.0")
-        if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "9.0")
-          # Support Volta GPUs.
-          list(APPEND CMAKE_CUDA_ARCHITECTURES "70")
-        endif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "9.0")
-        if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "10.0")
-          # Support Turing  GPUs.
-          list(APPEND CMAKE_CUDA_ARCHITECTURES "75")
-        endif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "10.0")
-        if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.0")
-          # Support Ampere GPUs.
-          list(APPEND CMAKE_CUDA_ARCHITECTURES "80")
-        endif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.0")
-        if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
-          # Support Hopper GPUs.
-          list(APPEND CMAKE_CUDA_ARCHITECTURES "90")
-        endif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
-        message("-- Setting CUDA Architecture to ${CMAKE_CUDA_ARCHITECTURES}")
-      endif()
-
-      if (USE_CUDA STREQUAL "static")
-        set(CERES_CUDA_TARGET_SUFFIX "_static")
-      else (USE_CUDA STREQUAL "static")
-        set(CERES_CUDA_TARGET_SUFFIX "")
-      endif (USE_CUDA STREQUAL "static")
-    else (CUDAToolkit_FOUND)
-      message("-- Did not find CUDA, disabling CUDA support.")
-      update_cache_variable(USE_CUDA OFF)
-    endif (CUDAToolkit_FOUND)
-  endif (CMAKE_VERSION VERSION_LESS 3.17)
-endif (USE_CUDA)
-
-if (USE_CUDA)
-  list(APPEND CERES_CUDA_LIBRARIES
-    CUDA::cublas${CERES_CUDA_TARGET_SUFFIX}
-    CUDA::cudart${CERES_CUDA_TARGET_SUFFIX}
-    CUDA::cusolver${CERES_CUDA_TARGET_SUFFIX}
-    CUDA::cusparse${CERES_CUDA_TARGET_SUFFIX})
-  unset (CERES_CUDA_TARGET_SUFFIX)
-  set(CMAKE_CUDA_RUNTIME_LIBRARY NONE)
-else (USE_CUDA)
-  message("-- Building without CUDA.")
-  list(APPEND CERES_COMPILE_OPTIONS CERES_NO_CUDA)
-endif (USE_CUDA)
-
-if (LAPACK)
-  find_package(LAPACK QUIET)
-  if (LAPACK_FOUND)
-    message("-- Found LAPACK library: ${LAPACK_LIBRARIES}")
-  else (LAPACK_FOUND)
-    message("-- Did not find LAPACK library, disabling LAPACK support.")
-    update_cache_variable(LAPACK OFF)
-    list(APPEND CERES_COMPILE_OPTIONS CERES_NO_LAPACK)
-  endif (LAPACK_FOUND)
-else (LAPACK)
-  message("-- Building without LAPACK.")
-  list(APPEND CERES_COMPILE_OPTIONS CERES_NO_LAPACK)
-endif (LAPACK)
-
-# Set the install path for the installed CeresConfig.cmake configuration file
-# relative to CMAKE_INSTALL_PREFIX.
-set(RELATIVE_CMAKECONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/Ceres)
-
-if (SUITESPARSE)
-  # By default, if SuiteSparse and all dependencies are found, Ceres is
-  # built with SuiteSparse support.
-
-  # Check for SuiteSparse and dependencies.
-  find_package(SuiteSparse 4.5.6 COMPONENTS CHOLMOD SPQR
-    OPTIONAL_COMPONENTS Partition)
-  if (SuiteSparse_FOUND)
-    set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION})")
-    # By default, if all of SuiteSparse's dependencies are found, Ceres is
-    # built with SuiteSparse support.
-    message("-- Found SuiteSparse ${SuiteSparse_VERSION}, "
-            "building with SuiteSparse.")
-
-    if (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR)
-      install(FILES ${Ceres_SOURCE_DIR}/cmake/FindSuiteSparse.cmake
-                    ${Ceres_SOURCE_DIR}/cmake/FindMETIS.cmake
-              DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
-    endif (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR)
-  else (SuiteSparse_FOUND)
-    # Disable use of SuiteSparse if it cannot be found and continue.
-    message("-- Did not find all SuiteSparse dependencies, disabling "
-      "SuiteSparse support.")
-    update_cache_variable(SUITESPARSE OFF)
-    list(APPEND CERES_COMPILE_OPTIONS CERES_NO_SUITESPARSE)
-  endif (SuiteSparse_FOUND)
-else (SUITESPARSE)
-  message("-- Building without SuiteSparse.")
-  list(APPEND CERES_COMPILE_OPTIONS CERES_NO_SUITESPARSE)
-endif (SUITESPARSE)
-
-if (NOT SuiteSparse_Partition_FOUND)
-  list (APPEND CERES_COMPILE_OPTIONS CERES_NO_CHOLMOD_PARTITION)
-endif (NOT SuiteSparse_Partition_FOUND)
-
-if (EIGENMETIS)
-  find_package (METIS)
-  if (METIS_FOUND)
-    # Since METIS is a private dependency of Ceres, it requires access to the
-    # link-only METIS::METIS target to avoid undefined linker errors in projects
-    # relying on Ceres. We do not actually need to propagate anything besides
-    # the link libraries (such as include directories.)
-    set(METIS_DEPENDENCY "find_dependency(METIS ${METIS_VERSION})")
-    # METIS find module must be installed unless a package config is being used.
-    if (NOT METIS_DIR)
-      install(FILES ${Ceres_SOURCE_DIR}/cmake/FindMETIS.cmake
-              DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
-    endif (NOT METIS_DIR)
-  else (METIS_FOUND)
-    message("-- Did not find METIS, disabling Eigen METIS support.")
-    update_cache_variable(EIGENMETIS OFF)
-    list (APPEND CERES_COMPILE_OPTIONS CERES_NO_EIGEN_METIS)
-  endif (METIS_FOUND)
-else (EIGENMETIS)
-  message("-- Building without Eigen METIS support.")
-  list (APPEND CERES_COMPILE_OPTIONS CERES_NO_EIGEN_METIS)
-endif (EIGENMETIS)
-
-if (ACCELERATESPARSE)
-  find_package(AccelerateSparse)
-  if (AccelerateSparse_FOUND)
-    message("-- Found Apple's Accelerate framework with sparse solvers, "
-      "building with Accelerate sparse support.")
-  else()
-    message("-- Failed to find Apple's Accelerate framework with sparse solvers, "
-      "building without Accelerate sparse support.")
-    update_cache_variable(ACCELERATESPARSE OFF)
-    list(APPEND CERES_COMPILE_OPTIONS CERES_NO_ACCELERATE_SPARSE)
-  endif()
-else()
-  message("-- Building without Apple's Accelerate sparse support.")
-  list(APPEND CERES_COMPILE_OPTIONS CERES_NO_ACCELERATE_SPARSE)
-  mark_as_advanced(FORCE AccelerateSparse_INCLUDE_DIR
-                         AccelerateSparse_LIBRARY)
-endif()
-
-# Ensure that the user understands they have disabled all sparse libraries.
-if (NOT SUITESPARSE AND NOT EIGENSPARSE AND NOT ACCELERATESPARSE)
-  message("   ===============================================================")
-  message("   Compiling without any sparse library: SuiteSparse, ")
-  message("   EigenSparse & Apple's Accelerate are all disabled or unavailable.  ")
-  message("   No sparse linear solvers (SPARSE_NORMAL_CHOLESKY & SPARSE_SCHUR)")
-  message("   will be available when Ceres is used.")
-  message("   ===============================================================")
-endif()
-
-# ANDROID define is set by the Android CMake toolchain file.
-if (ANDROID)
-  message("  ================================================================")
-  if (ANDROID_STRIP_DEBUG_SYMBOLS)
-    # Strip debug information unconditionally to avoid +200MB library file sizes.
-    set( CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -s" )
-    set( CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} -s" )
-    message("  Stripping debug information from Android build of Ceres library ")
-    message("  to avoid +200MB library files.")
-  else()
-    message("  Warning: not stripping debug information from Android build of ")
-    message("  Ceres library.  This will result in a large (+200MB) library.")
-  endif()
-  message("")
-  message("  You can control whether debug information is stripped via the ")
-  message("  ANDROID_STRIP_DEBUG_SYMBOLS CMake option when configuring Ceres.")
-  message("  ================================================================")
-endif()
-
-# GFlags.
-if (GFLAGS)
-  # Don't search with REQUIRED as we can continue without gflags.
-  find_package(gflags 2.2.0)
-  if (gflags_FOUND)
-    if (TARGET gflags)
-      message("-- Found Google Flags (gflags) version ${gflags_VERSION}: ${gflags_DIR}")
-    else()
-      message("-- Detected version of gflags: ${gflags_VERSION} does not define "
-        "expected gflags CMake target which should be exported by gflags 2.2+. "
-        "Building without gflags.")
-      update_cache_variable(GFLAGS OFF)
-    endif()
-  else (gflags_FOUND)
-    message("-- Did not find Google Flags (gflags), Building without gflags.")
-    update_cache_variable(GFLAGS OFF)
-  endif (gflags_FOUND)
-endif()
-if (NOT GFLAGS)
-  message("-- Use of gflags disabled - no tests or tools will be built!")
-endif()
-
-# MiniGLog.
-if (MINIGLOG)
-  message("-- Compiling minimal glog substitute into Ceres.")
-  set(GLOG_INCLUDE_DIRS internal/ceres/miniglog)
-  set(MINIGLOG_MAX_LOG_LEVEL 2 CACHE STRING "The maximum message severity level to be logged")
-  add_definitions("-DMAX_LOG_LEVEL=${MINIGLOG_MAX_LOG_LEVEL}")
-  message("-- Using minimal glog substitute (include): ${GLOG_INCLUDE_DIRS}")
-  message("-- Max log level for minimal glog substitute: ${MINIGLOG_MAX_LOG_LEVEL}")
-
-  # Mark as advanced (remove from default GUI view) the glog search
-  # variables in case user disables MINIGLOG, FindGlog did not find it, so
-  # made search variables visible in GUI for user to set, but then user enables
-  # MINIGLOG instead of setting them.
-  mark_as_advanced(FORCE GLOG_INCLUDE_DIR
-                         GLOG_LIBRARY)
-else (MINIGLOG)
-  unset(MINIGLOG_MAX_LOG_LEVEL CACHE)
-  # Don't search with REQUIRED so that configuration continues if not found and
-  # we can output an error messages explaining MINIGLOG option.
-  find_package(Glog)
-  if (NOT GLOG_FOUND)
-    message(FATAL_ERROR "Can't find Google Log (glog). Please set either: "
-      "glog_DIR (newer CMake built versions of glog) or GLOG_INCLUDE_DIR & "
-      "GLOG_LIBRARY or enable MINIGLOG option to use minimal glog "
-      "implementation.")
-  endif(NOT GLOG_FOUND)
-  # By default, assume gflags was found, updating the message if it was not.
-  set(GLOG_GFLAGS_DEPENDENCY_MESSAGE
-    " Assuming glog was built with gflags support as gflags was found. "
-    "This will make gflags a public dependency of Ceres.")
-  if (NOT gflags_FOUND)
-    set(GLOG_GFLAGS_DEPENDENCY_MESSAGE
-      " Assuming glog was NOT built with gflags support as gflags was "
-      "not found.  If glog was built with gflags, please set the "
-      "gflags search locations such that it can be found by Ceres.  "
-      "Otherwise, Ceres may fail to link due to missing gflags symbols.")
-  endif(NOT gflags_FOUND)
-  message("-- Found Google Log (glog)." ${GLOG_GFLAGS_DEPENDENCY_MESSAGE})
-endif (MINIGLOG)
-
-if (NOT SCHUR_SPECIALIZATIONS)
-  list(APPEND CERES_COMPILE_OPTIONS CERES_RESTRICT_SCHUR_SPECIALIZATION)
-  message("-- Disabling Schur specializations (faster compiles)")
-endif (NOT SCHUR_SPECIALIZATIONS)
-
-if (NOT CUSTOM_BLAS)
-  list(APPEND CERES_COMPILE_OPTIONS CERES_NO_CUSTOM_BLAS)
-  message("-- Disabling custom blas")
-endif (NOT CUSTOM_BLAS)
-
-if (BUILD_BENCHMARKS)
-  # Version 1.3 was first to provide import targets
-  find_package(benchmark 1.3 QUIET)
-  if (benchmark_FOUND)
-     message("-- Found Google benchmark library. Building Ceres benchmarks.")
-  else()
-     message("-- Failed to find Google benchmark library, disabling build of benchmarks.")
-     update_cache_variable(BUILD_BENCHMARKS OFF)
-  endif()
-  mark_as_advanced(benchmark_DIR)
-endif()
-
-# TODO Report features using the FeatureSummary CMake module
-if (BUILD_SHARED_LIBS)
-  message("-- Building Ceres as a shared library.")
-else (BUILD_SHARED_LIBS)
-  message("-- Building Ceres as a static library.")
-endif (BUILD_SHARED_LIBS)
-
-# Change the default build type from Debug to Release, while still
-# supporting overriding the build type.
-#
-# The CACHE STRING logic here and elsewhere is needed to force CMake
-# to pay attention to the value of these variables.
-if (NOT CMAKE_BUILD_TYPE)
-  message("-- No build type specified; defaulting to CMAKE_BUILD_TYPE=Release.")
-  set(CMAKE_BUILD_TYPE Release CACHE STRING
-    "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
-    FORCE)
-else (NOT CMAKE_BUILD_TYPE)
-  if (CMAKE_BUILD_TYPE STREQUAL "Debug")
-    message("\n=================================================================================")
-    message("\n-- Build type: Debug. Performance will be terrible!")
-    message("-- Add -DCMAKE_BUILD_TYPE=Release to the CMake command line to get an optimized build.")
-    message("\n=================================================================================")
-  endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
-endif (NOT CMAKE_BUILD_TYPE)
-
-if (MINGW)
-  # MinGW produces code that segfaults when performing matrix multiplications
-  # in Eigen when compiled with -O3 (see [1]), as such force the use of -O2
-  # which works.
-  #
-  # [1] http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556
-  message("-- MinGW detected, forcing -O2 instead of -O3 in Release for Eigen due "
-          "to a MinGW bug: http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556")
-  string(REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
-  update_cache_variable(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
-endif (MINGW)
-
-# After the tweaks for the compile settings, disable some warnings on MSVC.
-if (MSVC)
-  # Insecure standard library functions
-  add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
-  # std::numeric_limits<T>::has_denorm is deprecated in C++23
-  add_compile_definitions($<$<COMPILE_LANGUAGE:CXX>:_SILENCE_CXX23_DENORM_DEPRECATION_WARNING>)
-  # std::aligned_storage is deprecated in C++23
-  add_compile_definitions($<$<COMPILE_LANGUAGE:CXX>:_SILENCE_CXX23_ALIGNED_STORAGE_DEPRECATION_WARNING>)
-  # Disable signed/unsigned int conversion warnings.
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/wd4018>)
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/wd4267>)
-  # Disable warning about using struct/class for the same symbol.
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/wd4099>)
-  # Disable performance warning about int-to-bool conversion.
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/wd4800>)
-  # Disable warning about int64 to int32 conversion. Disabling
-  # this warning may not be correct; needs investigation.
-  # TODO(keir): Investigate these warnings in more detail.
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/wd4244>)
-  # It's not possible to use STL types in DLL interfaces in a portable and
-  # reliable way. However, that's what happens with Google Log and Google Flags
-  # on Windows. MSVC gets upset about this and throws warnings that we can't do
-  # much about. The real solution is to link static versions of Google Log and
-  # Google Test, but that seems tricky on Windows. So, disable the warning.
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/wd4251>)
-
-  # Add bigobj flag otherwise the build would fail due to large object files
-  # probably resulting from generated headers (like the fixed-size schur
-  # specializations).
-  add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/bigobj>)
-
-  # Google Flags doesn't have their DLL import/export stuff set up correctly,
-  # which results in linker warnings. This is irrelevant for Ceres, so ignore
-  # the warnings.
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4049")
-
-  # Tuple sizes of 10 are used by Gtest.
-  add_definitions("-D_VARIADIC_MAX=10")
-endif (MSVC)
-
-if (UNIX)
-  # Flags which we add to GCC to make it more picky about stuff
-  # we do care about,
-  add_cxx_compiler_flag_if_supported(CERES_STRICT_CXX_FLAGS
-                                     -Wmissing-declarations)
-  # Flags which we add to GCC to silence lots of annoying false-positives.
-  add_cxx_compiler_flag_if_supported(CERES_STRICT_CXX_FLAGS
-                                     -Wno-unknown-pragmas)
-  add_cxx_compiler_flag_if_supported(CERES_STRICT_CXX_FLAGS
-                                     -Wno-sign-compare)
-  add_cxx_compiler_flag_if_supported(CERES_STRICT_CXX_FLAGS
-                                     -Wno-unused-parameter)
-  add_cxx_compiler_flag_if_supported(CERES_STRICT_CXX_FLAGS
-                                     -Wno-missing-field-initializers)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CERES_STRICT_CXX_FLAGS}")
-endif (UNIX)
-
-if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Matches Clang & AppleClang.
-  # Optimize for Eigen OR enable bitcode; you cannot do both since bitcode is an
-  # intermediate representation.
-  if (ENABLE_BITCODE)
-    set(CMAKE_CXX_FLAGS
-      "${CMAKE_CXX_FLAGS} -fembed-bitcode")
-  else ()
-    # Use a larger inlining threshold for Clang, since it hobbles Eigen,
-    # resulting in an unreasonably slow version of the blas routines. The
-    # -Qunused-arguments is needed because CMake passes the inline
-    # threshold to the linker and clang complains about it and dies.
-    set(CMAKE_CXX_FLAGS
-      "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600")
-  endif ()
-  # Older versions of Clang (<= 2.9) do not support the 'return-type-c-linkage'
-  # option, so check for its presence before adding it to the default flags set.
-  check_cxx_compiler_flag("-Wno-return-type-c-linkage"
-                          HAVE_RETURN_TYPE_C_LINKAGE)
-  if (HAVE_RETURN_TYPE_C_LINKAGE)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage")
-  endif(HAVE_RETURN_TYPE_C_LINKAGE)
-endif ()
-
-add_compile_definitions($<$<BOOL:${WIN32}>:NOMINMAX>)
-
-# Configure the Ceres config.h compile options header using the current
-# compile options and put the configured header into the Ceres build
-# directory.  Note that the ceres/internal subdir in <build>/config where
-# the configured config.h is placed is important, because Ceres will be
-# built against this configured header, it needs to have the same relative
-# include path as it would if it were in the source tree (or installed).
-list(REMOVE_DUPLICATES CERES_COMPILE_OPTIONS)
-include(CreateCeresConfig)
-create_ceres_config("${CERES_COMPILE_OPTIONS}"
-  ${Ceres_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/ceres/internal)
-
-add_subdirectory(internal/ceres)
-
-if (BUILD_DOCUMENTATION)
-  find_package (Sphinx REQUIRED COMPONENTS sphinx_rtd_theme)
-  if (NOT Sphinx_FOUND)
-    message("-- Failed to find Sphinx and/or its dependencies, disabling build of documentation.")
-    update_cache_variable(BUILD_DOCUMENTATION OFF)
-  else()
-    # Generate the User's Guide (html).
-    # The corresponding target is ceres_docs, but is included in ALL.
-    message("-- Build the HTML documentation.")
-    add_subdirectory(docs)
-  endif()
-endif (BUILD_DOCUMENTATION)
-
-if (BUILD_EXAMPLES)
-  message("-- Build the examples.")
-  add_subdirectory(examples)
-else (BUILD_EXAMPLES)
-  message("-- Do not build any example.")
-endif (BUILD_EXAMPLES)
-
-# Setup installation of Ceres public headers.
-file(GLOB CERES_HDRS ${Ceres_SOURCE_DIR}/include/ceres/*.h)
-install(FILES ${CERES_HDRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ceres)
-
-file(GLOB CERES_PUBLIC_INTERNAL_HDRS ${Ceres_SOURCE_DIR}/include/ceres/internal/*.h)
-install(FILES ${CERES_PUBLIC_INTERNAL_HDRS} DESTINATION
-  ${CMAKE_INSTALL_INCLUDEDIR}/ceres/internal)
-
-# Also setup installation of Ceres config.h configured with the current
-# build options and export.h into the installed headers directory.
-install(DIRECTORY ${Ceres_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/
-        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-
-if (MINIGLOG)
-  # Install miniglog header if being used as logging #includes appear in
-  # installed public Ceres headers.
-  install(FILES ${Ceres_SOURCE_DIR}/internal/ceres/miniglog/glog/logging.h
-          DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ceres/internal/miniglog/glog)
-endif (MINIGLOG)
-
-# Ceres supports two mechanisms by which it can be detected & imported into
-# client code which uses CMake via find_package(Ceres):
-#
-#   1) Installation (e.g. to /usr/local), using CMake's install() function.
-#
-#   2) (Optional) Export of the current build directory into the local CMake
-#      package registry, using CMake's export() function.  This allows use of
-#      Ceres from other projects without requiring installation.
-#
-# In both cases, we need to generate a configured CeresConfig.cmake which
-# includes additional autogenerated files which in concert create an imported
-# target for Ceres in a client project when find_package(Ceres) is invoked.
-# The key distinctions are where this file is located, and whether client code
-# references installed copies of the compiled Ceres headers/libraries,
-# (option #1: installation), or the originals in the source/build directories
-# (option #2: export of build directory).
-#
-# NOTE: If Ceres is both exported and installed, provided that the installation
-#       path is present in CMAKE_MODULE_PATH when find_package(Ceres) is called,
-#       the installed version is preferred.
-
-# Build the list of Ceres components for CeresConfig.cmake from the current set
-# of compile options.
-include(CeresCompileOptionsToComponents)
-ceres_compile_options_to_components("${CERES_COMPILE_OPTIONS}"
-  CERES_COMPILED_COMPONENTS)
-
-include(CMakePackageConfigHelpers)
-
-# Create a CeresConfigVersion.cmake file containing the version information,
-# used by both export() & install().
-write_basic_package_version_file("${Ceres_BINARY_DIR}/CeresConfigVersion.cmake"
-  VERSION ${CERES_VERSION}
-  COMPATIBILITY SameMajorVersion)
-
-# Install method #1: Put Ceres in CMAKE_INSTALL_PREFIX: /usr/local or equivalent.
-
-# This "exports" for installation all targets which have been put into the
-# export set "CeresExport". This generates a CeresTargets.cmake file which,
-# when read in by a client project as part of find_package(Ceres) creates
-# imported library targets for Ceres (with dependency relations) which can be
-# used in target_link_libraries() calls in the client project to use Ceres.
-install(EXPORT CeresExport
-        NAMESPACE Ceres::
-        DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR} FILE CeresTargets.cmake)
-
-# Save the relative path from the installed CeresConfig.cmake file to the
-# install prefix.  We do not save an absolute path in case the installed package
-# is subsequently relocated after installation (on Windows).
-file(RELATIVE_PATH INSTALL_ROOT_REL_CONFIG_INSTALL_DIR
-     ${CMAKE_INSTALL_PREFIX}/${RELATIVE_CMAKECONFIG_INSTALL_DIR}
-     ${CMAKE_INSTALL_PREFIX})
-
-# Configure a CeresConfig.cmake file for an installed version of Ceres from the
-# template, reflecting the current build options.
-#
-# NOTE: The -install suffix is necessary to distinguish the install version from
-#       the exported version, which must be named CeresConfig.cmake in
-#       Ceres_BINARY_DIR to be detected.  The suffix is removed when
-#       it is installed.
-set(SETUP_CERES_CONFIG_FOR_INSTALLATION TRUE)
-configure_file("${Ceres_SOURCE_DIR}/cmake/CeresConfig.cmake.in"
-               "${Ceres_BINARY_DIR}/CeresConfig-install.cmake" @ONLY)
-
-# Install the configuration files into the same directory as the autogenerated
-# CeresTargets.cmake file.  We include the find_package() scripts for libraries
-# whose headers are included in the public API of Ceres and should thus be
-# present in CERES_INCLUDE_DIRS.
-install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake"
-        RENAME CeresConfig.cmake
-        DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
-install(FILES "${Ceres_BINARY_DIR}/CeresConfigVersion.cmake"
-        DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
-if (GLOG_FOUND AND NOT FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-  # Version of glog detected was not built with CMake, install our glog module
-  # file to enable detection in CeresConfig.
-  install(FILES "${Ceres_SOURCE_DIR}/cmake/FindGlog.cmake"
-          DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
-endif()
-
-if (PROVIDE_UNINSTALL_TARGET)
-  # Create an uninstall target to remove all installed files.
-  configure_file("${Ceres_SOURCE_DIR}/cmake/uninstall.cmake.in"
-                 "${Ceres_BINARY_DIR}/cmake/uninstall.cmake"
-                 @ONLY)
-  add_custom_target(uninstall
-                    COMMAND ${CMAKE_COMMAND} -P ${Ceres_BINARY_DIR}/cmake/uninstall.cmake)
-endif()
-
-# Install method #2: Put Ceres build into local CMake registry.
-#
-# Optionally export the Ceres build directory into the local CMake package
-# registry (~/.cmake/packages on *nix & OS X).  This allows the detection &
-# use of Ceres without requiring that it be installed.
-if (EXPORT_BUILD_DIR)
-  message("-- Export Ceres build directory to local CMake package registry.")
-
-  # Save the relative path from the build directory to the source directory.
-  file(RELATIVE_PATH INSTALL_ROOT_REL_CONFIG_INSTALL_DIR
-    ${Ceres_BINARY_DIR}
-    ${Ceres_SOURCE_DIR})
-
-  set (Ceres_EXPORT_TARGETS ceres)
-
-  if (TARGET ceres_cuda_kernels)
-    # The target ceres depends on ceres_cuda_kernels requiring the latter to be
-    # exported as part of the same export set.
-    list (APPEND Ceres_EXPORT_TARGETS ceres_cuda_kernels)
-  endif (TARGET ceres_cuda_kernels)
-
-  # Analogously to install(EXPORT ...), export the Ceres target from the build
-  # directory as a package called Ceres into the local CMake package registry.
-  export(TARGETS ${Ceres_EXPORT_TARGETS}
-         NAMESPACE Ceres::
-         FILE ${Ceres_BINARY_DIR}/CeresTargets.cmake)
-  export(PACKAGE ${CMAKE_PROJECT_NAME})
-
-  unset (Ceres_EXPORT_TARGETS)
-
-  # Configure a CeresConfig.cmake file for the export of the Ceres build
-  # directory from the template, reflecting the current build options.
-  set(SETUP_CERES_CONFIG_FOR_INSTALLATION FALSE)
-  configure_file("${Ceres_SOURCE_DIR}/cmake/CeresConfig.cmake.in"
-    "${Ceres_BINARY_DIR}/CeresConfig.cmake" @ONLY)
-
-endif (EXPORT_BUILD_DIR)
diff --git a/third_party/ceres/CONTRIBUTING.md b/third_party/ceres/CONTRIBUTING.md
deleted file mode 100644
index 5a03570..0000000
--- a/third_party/ceres/CONTRIBUTING.md
+++ /dev/null
@@ -1,14 +0,0 @@
----------------------------------
-Do not make GitHub pull requests!
----------------------------------
-
-Ceres development happens on
-[Gerrit](https://ceres-solver.googlesource.com/), including both
-repository hosting and code reviews.
-
-This GitHub Repository is a continuously updated mirror which is
-primarily meant for issue tracking.
-
-Please see our
-[Contributing to Ceres Guide](http://ceres-solver.org/contributing.html)
-for more details.
diff --git a/third_party/ceres/LICENSE b/third_party/ceres/LICENSE
deleted file mode 100644
index b5d967c..0000000
--- a/third_party/ceres/LICENSE
+++ /dev/null
@@ -1,257 +0,0 @@
-Ceres Solver - A fast non-linear least squares minimizer
-Copyright 2023 Google Inc. All rights reserved.
-http://ceres-solver.org/
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-* Neither the name of Google Inc. nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------------------------------------------------------------------------------------------
-
-                              Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
--------------------------------------------------------------------------------------------------------------------------------
-
-Some of the code in the examples directory derives from libmv, which is
-distributed under the MIT license as described below
-
-
-Copyright (c) 2007-2011 libmv authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
diff --git a/third_party/ceres/README.md b/third_party/ceres/README.md
deleted file mode 100644
index 7de8f0d..0000000
--- a/third_party/ceres/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-[![Android](https://github.com/ceres-solver/ceres-solver/actions/workflows/android.yml/badge.svg)](https://github.com/ceres-solver/ceres-solver/actions/workflows/android.yml)
-[![Linux](https://github.com/ceres-solver/ceres-solver/actions/workflows/linux.yml/badge.svg)](https://github.com/ceres-solver/ceres-solver/actions/workflows/linux.yml)
-[![macOS](https://github.com/ceres-solver/ceres-solver/actions/workflows/macos.yml/badge.svg)](https://github.com/ceres-solver/ceres-solver/actions/workflows/macos.yml)
-[![Windows](https://github.com/ceres-solver/ceres-solver/actions/workflows/windows.yml/badge.svg)](https://github.com/ceres-solver/ceres-solver/actions/workflows/windows.yml)
-
-Ceres Solver
-============
-
-Ceres Solver is an open source C++ library for modeling and solving
-large, complicated optimization problems. It is a feature rich, mature
-and performant library which has been used in production at Google
-since 2010. Ceres Solver can solve two kinds of problems.
-
-1. Non-linear Least Squares problems with bounds constraints.
-2. General unconstrained optimization problems.
-
-Please see [ceres-solver.org](http://ceres-solver.org/) for more
-information.
diff --git a/third_party/ceres/WORKSPACE b/third_party/ceres/WORKSPACE
deleted file mode 100644
index 40a84a3..0000000
--- a/third_party/ceres/WORKSPACE
+++ /dev/null
@@ -1,104 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: mierle@gmail.com (Keir Mierle)
-#
-# Bazel workspace file to enable building Ceres with Bazel.
-
-workspace(name = "com_google_ceres_solver")
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-# External dependency: Google Flags; has Bazel build already.
-http_archive(
-    name = "com_github_gflags_gflags",
-    sha256 = "6e16c8bc91b1310a44f3965e616383dbda48f83e8c1eaa2370a215057b00cabe",
-    strip_prefix = "gflags-77592648e3f3be87d6c7123eb81cbad75f9aef5a",
-    urls = [
-        "https://mirror.bazel.build/github.com/gflags/gflags/archive/77592648e3f3be87d6c7123eb81cbad75f9aef5a.tar.gz",
-        "https://github.com/gflags/gflags/archive/77592648e3f3be87d6c7123eb81cbad75f9aef5a.tar.gz",
-    ],
-)
-
-# External dependency: Google Log; has Bazel build already.
-http_archive(
-    name = "com_github_google_glog",
-    sha256 = "7083af285bed3995b5dc2c982f7de39bced9f0e6fd78d631f3285490922a0c3d",
-    strip_prefix = "glog-3106945d8d3322e5cbd5658d482c9ffed2d892c0",
-    urls = [
-        "https://github.com/drigz/glog/archive/3106945d8d3322e5cbd5658d482c9ffed2d892c0.tar.gz",
-    ],
-)
-
-# External dependency: Eigen; has no Bazel build.
-http_archive(
-    name = "com_gitlab_libeigen_eigen",
-    sha256 = "0215c6593c4ee9f1f7f28238c4e8995584ebf3b556e9dbf933d84feb98d5b9ef",
-    strip_prefix = "eigen-3.3.8",
-    urls = [
-        "https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.tar.bz2",
-    ],
-    build_file_content =
-"""
-# TODO(keir): Replace this with a better version, like from TensorFlow.
-# See https://github.com/ceres-solver/ceres-solver/issues/337.
-cc_library(
-    name = 'eigen',
-    srcs = [],
-    includes = ['.'],
-    hdrs = glob(['Eigen/**']),
-    visibility = ['//visibility:public'],
-)
-"""
-)
-
-# External dependency: Google Benchmark; has no Bazel build.
-http_archive(
-    name = "com_github_google_benchmark",
-    urls = ["https://github.com/google/benchmark/archive/56f52ee228783547f544d9ac4a533574b9010e3f.zip"],
-    sha256 = "8c1c6e90cd320b07504fabb86400f390faff2e599183ebd9396908817968ae79",
-    strip_prefix = "benchmark-56f52ee228783547f544d9ac4a533574b9010e3f",
-    build_file_content =
-"""
-cc_library(
-    name = "benchmark",
-    srcs = glob([
-        "src/*.h",
-        "src/*.cc",
-    ]),
-    hdrs = glob(["include/benchmark/*.h"]),
-    copts = [
-        "-DHAVE_STD_REGEX",
-    ],
-    includes = [
-        "include",
-    ],
-    visibility = ["//visibility:public"],
-)
-"""
-)
diff --git a/third_party/ceres/bazel/ceres.bzl b/third_party/ceres/bazel/ceres.bzl
deleted file mode 100644
index 7da049e..0000000
--- a/third_party/ceres/bazel/ceres.bzl
+++ /dev/null
@@ -1,223 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Support for building Ceres Solver with a specific configuration.
-
-CERES_SRCS = ["internal/ceres/" + filename for filename in [
-    "accelerate_sparse.cc",
-    "array_utils.cc",
-    "block_evaluate_preparer.cc",
-    "block_jacobi_preconditioner.cc",
-    "block_jacobian_writer.cc",
-    "block_random_access_dense_matrix.cc",
-    "block_random_access_diagonal_matrix.cc",
-    "block_random_access_matrix.cc",
-    "block_random_access_sparse_matrix.cc",
-    "block_sparse_matrix.cc",
-    "block_structure.cc",
-    "c_api.cc",
-    "callbacks.cc",
-    "canonical_views_clustering.cc",
-    "cgnr_solver.cc",
-    "compressed_col_sparse_matrix_utils.cc",
-    "compressed_row_jacobian_writer.cc",
-    "compressed_row_sparse_matrix.cc",
-    "conditioned_cost_function.cc",
-    "context.cc",
-    "context_impl.cc",
-    "coordinate_descent_minimizer.cc",
-    "corrector.cc",
-    "cost_function.cc",
-    "covariance.cc",
-    "covariance_impl.cc",
-    "dense_cholesky.cc",
-    "dense_normal_cholesky_solver.cc",
-    "dense_qr.cc",
-    "dense_qr_solver.cc",
-    "dense_sparse_matrix.cc",
-    "detect_structure.cc",
-    "dogleg_strategy.cc",
-    "dynamic_compressed_row_jacobian_writer.cc",
-    "dynamic_compressed_row_sparse_matrix.cc",
-    "dynamic_sparse_normal_cholesky_solver.cc",
-    "eigensparse.cc",
-    "evaluation_callback.cc",
-    "evaluator.cc",
-    "file.cc",
-    "first_order_function.cc",
-    "float_suitesparse.cc",
-    "function_sample.cc",
-    "gradient_checker.cc",
-    "gradient_checking_cost_function.cc",
-    "gradient_problem.cc",
-    "gradient_problem_solver.cc",
-    "implicit_schur_complement.cc",
-    "inner_product_computer.cc",
-    "is_close.cc",
-    "iteration_callback.cc",
-    "iterative_refiner.cc",
-    "iterative_schur_complement_solver.cc",
-    "levenberg_marquardt_strategy.cc",
-    "line_search.cc",
-    "line_search_direction.cc",
-    "line_search_minimizer.cc",
-    "line_search_preprocessor.cc",
-    "linear_least_squares_problems.cc",
-    "linear_operator.cc",
-    "linear_solver.cc",
-    "loss_function.cc",
-    "low_rank_inverse_hessian.cc",
-    "manifold.cc",
-    "minimizer.cc",
-    "normal_prior.cc",
-    "parallel_invoke.cc",
-    "parallel_utils.cc",
-    "parallel_vector_ops.cc",
-    "parameter_block_ordering.cc",
-    "partitioned_matrix_view.cc",
-    "polynomial.cc",
-    "power_series_expansion_preconditioner.cc",
-    "preconditioner.cc",
-    "preprocessor.cc",
-    "problem.cc",
-    "problem_impl.cc",
-    "program.cc",
-    "reorder_program.cc",
-    "residual_block.cc",
-    "residual_block_utils.cc",
-    "schur_complement_solver.cc",
-    "schur_eliminator.cc",
-    "schur_jacobi_preconditioner.cc",
-    "schur_templates.cc",
-    "scratch_evaluate_preparer.cc",
-    "single_linkage_clustering.cc",
-    "solver.cc",
-    "solver_utils.cc",
-    "sparse_cholesky.cc",
-    "sparse_matrix.cc",
-    "sparse_normal_cholesky_solver.cc",
-    "stringprintf.cc",
-    "subset_preconditioner.cc",
-    "suitesparse.cc",
-    "thread_pool.cc",
-    "thread_token_provider.cc",
-    "triplet_sparse_matrix.cc",
-    "trust_region_minimizer.cc",
-    "trust_region_preprocessor.cc",
-    "trust_region_step_evaluator.cc",
-    "trust_region_strategy.cc",
-    "types.cc",
-    "visibility_based_preconditioner.cc",
-    "visibility.cc",
-    "wall_time.cc",
-]]
-
-# TODO(rodrigoq): add support to configure Ceres into various permutations,
-# like SuiteSparse or not, threading or not, glog or not, and so on.
-# See https://github.com/ceres-solver/ceres-solver/issues/335.
-def ceres_library(name,
-                  restrict_schur_specializations=False):
-    # The path to internal/ depends on whether Ceres is the main workspace or
-    # an external repository.
-    if native.repository_name() != '@':
-        internal = 'external/%s/internal' % native.repository_name().lstrip('@')
-    else:
-        internal = 'internal'
-
-    # The fixed-size Schur eliminator template instantiations incur a large
-    # binary size penalty, and are slow to compile, so support disabling them.
-    schur_eliminator_copts = []
-    if restrict_schur_specializations:
-        schur_eliminator_copts.append("-DCERES_RESTRICT_SCHUR_SPECIALIZATION")
-        schur_sources = [
-            "internal/ceres/generated/schur_eliminator_d_d_d.cc",
-            "internal/ceres/generated/partitioned_matrix_view_d_d_d.cc",
-        ]
-    else:
-        schur_sources = native.glob(["internal/ceres/generated/*.cc"])
-
-    native.cc_library(
-        name = name,
-
-        # Internal sources, options, and dependencies.
-        srcs = CERES_SRCS + schur_sources + native.glob([
-            "include/ceres/internal/*.h",
-        ]) + native.glob([
-            "internal/ceres/*.h",
-        ]),
-
-        # These headers are made available to other targets.
-        hdrs =
-            native.glob(["include/ceres/*.h"]) + native.glob([
-                "include/ceres/internal/*.h",
-            ]) +
-
-            # This is an empty config and export, since the
-            # Bazel-based build does not generate a
-            # config.h/export.h. This is fine, since Bazel properly
-            # handles propagating -D defines to dependent targets.
-            native.glob([
-                "config/ceres/internal/config.h",
-                "config/ceres/internal/export.h",
-            ]),
-        copts = [
-            "-I" + internal,
-            "-Wunused-parameter",
-            "-Wno-sign-compare",
-            "-Wno-format-nonliteral",
-            "-Wno-unused-parameter",
-            "-Wno-unused-but-set-variable",
-        ] + schur_eliminator_copts,
-
-        # These include directories and defines are propagated to other targets
-        # depending on Ceres.
-        # TODO(keir): These defines are placeholders for now to facilitate getting
-        # started with a Bazel build. However, these should become configurable as
-        # part of a Skylark Ceres target macro.
-        # https://github.com/ceres-solver/ceres-solver/issues/396
-        defines = [
-            "CERES_EXPORT=",
-            "CERES_NO_ACCELERATE_SPARSE",
-            "CERES_NO_CHOLMOD_PARTITION",
-            "CERES_NO_CUDA",
-            "CERES_NO_EIGEN_METIS",
-            "CERES_NO_EXPORT=",
-            "CERES_NO_LAPACK",
-            "CERES_NO_SUITESPARSE",
-            "CERES_USE_EIGEN_SPARSE",
-        ],
-        includes = [
-            "config",
-            "include",
-        ],
-        visibility = ["//visibility:public"],
-        deps = [
-            "@com_github_google_glog//:glog",
-            "@org_tuxfamily_eigen//:eigen",
-        ],
-    )
diff --git a/third_party/ceres/cmake/AddCompileFlagsIfSupported.cmake b/third_party/ceres/cmake/AddCompileFlagsIfSupported.cmake
deleted file mode 100644
index d947fdf..0000000
--- a/third_party/ceres/cmake/AddCompileFlagsIfSupported.cmake
+++ /dev/null
@@ -1,51 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: sergey.vfx@gmail.com (Sergey Sharybin)
-
-function(add_cxx_compiler_flag_if_supported
-    AGGREGATED_CXX_FLAGS_VAR
-    FLAG_TO_ADD_IF_SUPPORTED)
-  include(CheckCXXCompilerFlag)
-  # Use of whitespace or '-' in variable names (used by CheckCXXSourceCompiles
-  # as #defines) will trigger errors.
-  string(STRIP "${FLAG_TO_ADD_IF_SUPPORTED}" FLAG_TO_ADD_IF_SUPPORTED)
-  # Build an informatively named test result variable so that it will be evident
-  # which tests were performed/succeeded in the CMake output, e.g for -Wall:
-  #
-  # -- Performing Test CHECK_CXX_FLAG_Wall - Success
-  #
-  # NOTE: This variable is also used to cache test result.
-  string(REPLACE "-" "_" CHECK_CXX_FLAG
-    "CHECK_CXX_FLAG${FLAG_TO_ADD_IF_SUPPORTED}")
-  check_cxx_compiler_flag(${FLAG_TO_ADD_IF_SUPPORTED} ${CHECK_CXX_FLAG})
-  if (${CHECK_CXX_FLAG})
-    set(${AGGREGATED_CXX_FLAGS_VAR}
-      "${${AGGREGATED_CXX_FLAGS_VAR}} ${FLAG_TO_ADD_IF_SUPPORTED}" PARENT_SCOPE)
-  endif()
-endfunction()
diff --git a/third_party/ceres/cmake/AddGerritCommitHook.cmake b/third_party/ceres/cmake/AddGerritCommitHook.cmake
deleted file mode 100644
index 070158c..0000000
--- a/third_party/ceres/cmake/AddGerritCommitHook.cmake
+++ /dev/null
@@ -1,84 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: keir@google.com (Keir Mierle)
-#          alexs.mac@gmail.com (Alex Stewart)
-
-# Set up the git hook to make Gerrit Change-Id: lines in commit messages.
-function(ADD_GERRIT_COMMIT_HOOK SOURCE_DIR BINARY_DIR)
-  if (NOT (EXISTS ${SOURCE_DIR} AND IS_DIRECTORY ${SOURCE_DIR}))
-    message(FATAL_ERROR "Specified SOURCE_DIR: ${SOURCE_DIR} does not exist, "
-      "or is not a directory, cannot add Gerrit commit hook.")
-  endif()
-  if (NOT (EXISTS ${BINARY_DIR} AND IS_DIRECTORY ${BINARY_DIR}))
-    message(FATAL_ERROR "Specified BINARY_DIR: ${BINARY_DIR} does not exist, "
-      "or is not a directory, cannot add Gerrit commit hook.")
-  endif()
-  unset (LOCAL_GIT_DIRECTORY)
-  if (EXISTS ${SOURCE_DIR}/.git)
-    if (IS_DIRECTORY ${SOURCE_DIR}/.git)
-      # .git directory can be found on Unix based system, or on Windows with
-      # Git Bash (shipped with msysgit).
-      set (LOCAL_GIT_DIRECTORY ${SOURCE_DIR}/.git)
-    else(IS_DIRECTORY ${SOURCE_DIR}/.git)
-      # .git is a file, this means Ceres is a git submodule of another project
-      # and our .git file contains the path to the git directory which manages
-      # Ceres, so we should add the gerrit hook there.
-      file(READ ${SOURCE_DIR}/.git GIT_SUBMODULE_FILE_CONTENTS)
-      # Strip any trailing newline characters, s/t we get a valid path.
-      string(REGEX REPLACE "gitdir:[ ]*([^$].*)[\n].*" "${SOURCE_DIR}/\\1"
-        GIT_SUBMODULE_GIT_DIRECTORY_PATH "${GIT_SUBMODULE_FILE_CONTENTS}")
-      get_filename_component(GIT_SUBMODULE_GIT_DIRECTORY_PATH
-        "${GIT_SUBMODULE_GIT_DIRECTORY_PATH}" ABSOLUTE)
-      if (EXISTS ${GIT_SUBMODULE_GIT_DIRECTORY_PATH}
-          AND IS_DIRECTORY ${GIT_SUBMODULE_GIT_DIRECTORY_PATH})
-        set(LOCAL_GIT_DIRECTORY "${GIT_SUBMODULE_GIT_DIRECTORY_PATH}")
-      endif()
-    endif()
-  else (EXISTS ${SOURCE_DIR}/.git)
-    # TODO(keir) Add proper Windows support.
-  endif (EXISTS ${SOURCE_DIR}/.git)
-
-  if (EXISTS ${LOCAL_GIT_DIRECTORY})
-    if (NOT EXISTS ${LOCAL_GIT_DIRECTORY}/hooks/commit-msg)
-      message(STATUS "Detected Ceres being used as a git submodule, adding "
-        "commit hook for Gerrit to: ${LOCAL_GIT_DIRECTORY}")
-      # Download the hook only if it is not already present.
-      file(DOWNLOAD https://ceres-solver-review.googlesource.com/tools/hooks/commit-msg
-        ${BINARY_DIR}/commit-msg)
-
-      # Make the downloaded file executable, since it is not by default.
-      file(COPY ${BINARY_DIR}/commit-msg
-        DESTINATION ${LOCAL_GIT_DIRECTORY}/hooks/
-        FILE_PERMISSIONS
-        OWNER_READ OWNER_WRITE OWNER_EXECUTE
-        GROUP_READ GROUP_WRITE GROUP_EXECUTE
-        WORLD_READ WORLD_EXECUTE)
-    endif (NOT EXISTS ${LOCAL_GIT_DIRECTORY}/hooks/commit-msg)
-  endif (EXISTS ${LOCAL_GIT_DIRECTORY})
-endfunction()
diff --git a/third_party/ceres/cmake/CeresCompileOptionsToComponents.cmake b/third_party/ceres/cmake/CeresCompileOptionsToComponents.cmake
deleted file mode 100644
index 64634d5..0000000
--- a/third_party/ceres/cmake/CeresCompileOptionsToComponents.cmake
+++ /dev/null
@@ -1,87 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: alexs.mac@gmail.com (Alex Stewart)
-#
-
-# Conditionally add a value to the output list based on whether the specified
-# value is found in the input list.
-function(update_output_if_found INPUT_LIST_VAR OUTPUT_LIST_VAR ITEM_TO_FIND VAR_TO_COPY_IF_FOUND VAR_TO_COPY_IF_NOT_FOUND)
-  list(FIND ${INPUT_LIST_VAR} "${ITEM_TO_FIND}" HAVE_ITEM)
-  # list(FIND ..) returns -1 if the element was not in the list, but CMake
-  # interprets if (VAR) to be true if VAR is any non-zero number, even
-  # negative ones, hence we have to explicitly check for >= 0.
-  if (HAVE_ITEM GREATER -1)
-    list(APPEND ${OUTPUT_LIST_VAR} "${VAR_TO_COPY_IF_FOUND}")
-  else()
-    list(APPEND ${OUTPUT_LIST_VAR} "${VAR_TO_COPY_IF_NOT_FOUND}")
-  endif()
-  set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} PARENT_SCOPE)
-endfunction()
-
-# Helpers for update_output_if_found() to improve legibility when dealing with
-# USE_XXX & NO_XXX option types in ceres_compile_options_to_components().
-macro(add_to_output_if_found INPUT_LIST_VAR OUTPUT_LIST_VAR ITEM_TO_FIND VAR_TO_COPY_IF_FOUND)
-  update_output_if_found(${INPUT_LIST_VAR}
-    ${OUTPUT_LIST_VAR}
-    "${ITEM_TO_FIND}"
-    "${VAR_TO_COPY_IF_FOUND}"
-    "") # Copy nothing if not found.
-endmacro()
-
-macro(add_to_output_if_not_found INPUT_LIST_VAR OUTPUT_LIST_VAR ITEM_TO_FIND VAR_TO_COPY_IF_NOT_FOUND)
-  update_output_if_found(${INPUT_LIST_VAR}
-    ${OUTPUT_LIST_VAR}
-    "${ITEM_TO_FIND}"
-    "" # Copy nothing if found
-    "${VAR_TO_COPY_IF_NOT_FOUND}")
-endmacro()
-
-# Convert the Ceres compile options specified by: CURRENT_CERES_COMPILE_OPTIONS
-# into the corresponding list of Ceres components (names), which may be used in:
-# find_package(Ceres COMPONENTS <XXX>).
-function(ceres_compile_options_to_components CURRENT_CERES_COMPILE_OPTIONS CERES_COMPONENTS_VAR)
-  # To enable users to specify that they want *a* sparse linear algebra backend
-  # without having to specify explicitly which one, for each sparse library we
-  # add the 'meta-module': SparseLinearAlgebraLibrary in addition to their own
-  # module name.
-  add_to_output_if_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR}
-    CERES_USE_EIGEN_SPARSE "EigenSparse;SparseLinearAlgebraLibrary")
-  add_to_output_if_not_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR}
-    CERES_NO_LAPACK "LAPACK")
-  add_to_output_if_not_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR}
-    CERES_NO_SUITESPARSE "SuiteSparse;SparseLinearAlgebraLibrary")
-  add_to_output_if_not_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR}
-    CERES_NO_ACCELERATE_SPARSE "AccelerateSparse;SparseLinearAlgebraLibrary")
-  add_to_output_if_not_found(CURRENT_CERES_COMPILE_OPTIONS ${CERES_COMPONENTS_VAR}
-    CERES_RESTRICT_SCHUR_SPECIALIZATION "SchurSpecializations")
-  # Remove duplicates of SparseLinearAlgebraLibrary if multiple sparse backends
-  # are present.
-  list(REMOVE_DUPLICATES ${CERES_COMPONENTS_VAR})
-  set(${CERES_COMPONENTS_VAR} "${${CERES_COMPONENTS_VAR}}" PARENT_SCOPE)
-endfunction()
diff --git a/third_party/ceres/cmake/CeresConfig.cmake.in b/third_party/ceres/cmake/CeresConfig.cmake.in
deleted file mode 100644
index ceb7e26..0000000
--- a/third_party/ceres/cmake/CeresConfig.cmake.in
+++ /dev/null
@@ -1,340 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2022 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: pablo.speciale@gmail.com (Pablo Speciale)
-#          alexs.mac@gmail.com (Alex Stewart)
-#
-
-# Config file for Ceres Solver - Find Ceres & dependencies.
-#
-# This file is used by CMake when find_package(Ceres) is invoked and either
-# the directory containing this file either is present in CMAKE_MODULE_PATH
-# (if Ceres was installed), or exists in the local CMake package registry if
-# the Ceres build directory was exported.
-#
-# This module defines the following variables:
-#
-# Ceres_FOUND / CERES_FOUND: True if Ceres has been successfully
-#                            found. Both variables are set as although
-#                            FindPackage() only references Ceres_FOUND
-#                            in Config mode, given the conventions for
-#                            <package>_FOUND when FindPackage() is
-#                            called in Module mode, users could
-#                            reasonably expect to use CERES_FOUND
-#                            instead.
-#
-# CERES_VERSION: Version of Ceres found.
-#
-# CERES_LIBRARIES: Libraries for Ceres and all
-#                  dependencies against which Ceres was
-#                  compiled. This will not include any optional
-#                  dependencies that were disabled when Ceres was
-#                  compiled.
-#
-# NOTE: There is no equivalent of CERES_INCLUDE_DIRS as the exported
-#       CMake target already includes the definition of its public
-#       include directories.
-
-include(CMakeFindDependencyMacro)
-
-# Called if we failed to find Ceres or any of its required dependencies,
-# unsets all public (designed to be used externally) variables and reports
-# error message at priority depending upon [REQUIRED/QUIET/<NONE>] argument.
-macro(CERES_REPORT_NOT_FOUND REASON_MSG)
-  # FindPackage() only references Ceres_FOUND, and requires it to be
-  # explicitly set FALSE to denote not found (not merely undefined).
-  set(Ceres_FOUND FALSE)
-  set(CERES_FOUND FALSE)
-  unset(CERES_INCLUDE_DIR)
-  unset(CERES_INCLUDE_DIRS)
-  unset(CERES_LIBRARIES)
-
-  # Reset the CMake module path to its state when this script was called.
-  set(CMAKE_MODULE_PATH ${CALLERS_CMAKE_MODULE_PATH})
-
-  # Note <package>_FIND_[REQUIRED/QUIETLY] variables defined by
-  # FindPackage() use the camelcase library name, not uppercase.
-  if (Ceres_FIND_QUIETLY)
-    message(STATUS "Failed to find Ceres - " ${REASON_MSG} ${ARGN})
-  elseif (Ceres_FIND_REQUIRED)
-    message(FATAL_ERROR "Failed to find Ceres - " ${REASON_MSG} ${ARGN})
-  else()
-    # Neither QUIETLY nor REQUIRED, use SEND_ERROR which emits an error
-    # that prevents generation, but continues configuration.
-    message(SEND_ERROR "Failed to find Ceres - " ${REASON_MSG} ${ARGN})
-  endif ()
-  return()
-endmacro(CERES_REPORT_NOT_FOUND)
-
-
-# ceres_message([mode] "message text")
-#
-# Wraps the standard cmake 'message' command, but suppresses output
-# if the QUIET flag was passed to the find_package(Ceres ...) call.
-function(ceres_message)
-  if (NOT Ceres_FIND_QUIETLY)
-    message(${ARGN})
-  endif()
-endfunction()
-
-
-# ceres_pretty_print_cmake_list( OUTPUT_VAR [item1 [item2 ... ]] )
-#
-# Sets ${OUTPUT_VAR} in the caller's scope to a human-readable string
-# representation of the list passed as the remaining arguments formed
-# as: "[item1, item2, ..., itemN]".
-function(ceres_pretty_print_cmake_list OUTPUT_VAR)
-  string(REPLACE ";" ", " PRETTY_LIST_STRING "[${ARGN}]")
-  set(${OUTPUT_VAR} "${PRETTY_LIST_STRING}" PARENT_SCOPE)
-endfunction()
-
-# The list of (optional) components this version of Ceres was compiled with.
-set(CERES_COMPILED_COMPONENTS "@CERES_COMPILED_COMPONENTS@")
-
-# If Ceres was not installed, then by definition it was exported
-# from a build directory.
-set(CERES_WAS_INSTALLED @SETUP_CERES_CONFIG_FOR_INSTALLATION@)
-
-# Record the state of the CMake module path when this script was
-# called so that we can ensure that we leave it in the same state on
-# exit as it was on entry, but modify it locally.
-set(CALLERS_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
-
-# Get the (current, i.e. installed) directory containing this file.
-get_filename_component(CERES_CURRENT_CONFIG_DIR
-  "${CMAKE_CURRENT_LIST_FILE}" PATH)
-
-if (CERES_WAS_INSTALLED)
-  # Reset CMake module path to the installation directory of this
-  # script, thus we will use the FindPackage() scripts shipped with
-  # Ceres to find Ceres' dependencies, even if the user has equivalently
-  # named FindPackage() scripts in their project.
-  set(CMAKE_MODULE_PATH ${CERES_CURRENT_CONFIG_DIR})
-
-  # Build the absolute root install directory as a relative path
-  # (determined when Ceres was configured & built) from the current
-  # install directory for this this file.  This allows for the install
-  # tree to be relocated, after Ceres was built, outside of CMake.
-  get_filename_component(CURRENT_ROOT_INSTALL_DIR
-    "${CERES_CURRENT_CONFIG_DIR}/@INSTALL_ROOT_REL_CONFIG_INSTALL_DIR@"
-    ABSOLUTE)
-  if (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR})
-    ceres_report_not_found(
-      "Ceres install root: ${CURRENT_ROOT_INSTALL_DIR}, "
-      "determined from relative path from CeresConfig.cmake install location: "
-      "${CERES_CURRENT_CONFIG_DIR}, does not exist. Either the install "
-      "directory was deleted, or the install tree was only partially relocated "
-      "outside of CMake after Ceres was built.")
-  endif (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR})
-
-else(CERES_WAS_INSTALLED)
-  # Ceres was exported from the build tree.
-  set(CERES_EXPORTED_BUILD_DIR ${CERES_CURRENT_CONFIG_DIR})
-  get_filename_component(CERES_EXPORTED_SOURCE_DIR
-    "${CERES_EXPORTED_BUILD_DIR}/@INSTALL_ROOT_REL_CONFIG_INSTALL_DIR@"
-    ABSOLUTE)
-  if (NOT EXISTS ${CERES_EXPORTED_SOURCE_DIR})
-    ceres_report_not_found(
-      "Ceres exported source directory: ${CERES_EXPORTED_SOURCE_DIR}, "
-      "determined from relative path from CeresConfig.cmake exported build "
-      "directory: ${CERES_EXPORTED_BUILD_DIR} does not exist.")
-  endif()
-
-  # Reset CMake module path to the cmake directory in the Ceres source
-  # tree which was exported, thus we will use the FindPackage() scripts shipped
-  # with Ceres to find Ceres' dependencies, even if the user has equivalently
-  # named FindPackage() scripts in their project.
-  set(CMAKE_MODULE_PATH ${CERES_EXPORTED_SOURCE_DIR}/cmake)
-endif(CERES_WAS_INSTALLED)
-
-# Set the version.
-set(CERES_VERSION @CERES_VERSION@)
-
-include(CMakeFindDependencyMacro)
-# Optional dependencies
-@METIS_DEPENDENCY@
-@SuiteSparse_DEPENDENCY@
-@CUDAToolkit_DEPENDENCY@
-@Threads_DEPENDENCY@
-
-# As imported CMake targets are not re-exported when a dependent target is
-# exported, we must invoke find_package(XXX) here to reload the definition
-# of their targets.  Without this, the dependency target names (e.g.
-# 'gflags-shared') which will be present in the ceres target would not be
-# defined, and so CMake will assume that they refer to a library name and
-# fail to link correctly.
-
-# Eigen.
-# Flag set during configuration and build of Ceres.
-set(CERES_EIGEN_VERSION @Eigen3_VERSION@)
-# Search quietly to control the timing of the error message if not found. The
-# search should be for an exact match, but for usability reasons do a soft
-# match and reject with an explanation below.
-find_package(Eigen3 ${CERES_EIGEN_VERSION} QUIET)
-if (Eigen3_FOUND)
-  if (NOT Eigen3_VERSION VERSION_EQUAL CERES_EIGEN_VERSION)
-    # CMake's VERSION check in FIND_PACKAGE() will accept any version >= the
-    # specified version. However, only version = is supported. Improve
-    # usability by explaining why we don't accept non-exact version matching.
-    ceres_report_not_found("Found Eigen dependency, but the version of Eigen "
-      "found (${Eigen3_VERSION}) does not exactly match the version of Eigen "
-      "Ceres was compiled with (${CERES_EIGEN_VERSION}). This can cause subtle "
-      "bugs by triggering violations of the One Definition Rule. See the "
-      "Wikipedia article http://en.wikipedia.org/wiki/One_Definition_Rule "
-      "for more details")
-  endif ()
-  ceres_message(STATUS "Found required Ceres dependency: "
-    "Eigen version ${CERES_EIGEN_VERSION} in ${Eigen3_DIR}")
-else (Eigen3_FOUND)
-  ceres_report_not_found("Missing required Ceres "
-    "dependency: Eigen version ${CERES_EIGEN_VERSION}, please set "
-    "Eigen3_DIR.")
-endif (Eigen3_FOUND)
-
-# glog (and maybe gflags).
-#
-# Flags set during configuration and build of Ceres.
-set(CERES_USES_MINIGLOG @MINIGLOG@)
-set(CERES_GLOG_VERSION @glog_VERSION@)
-set(CERES_GLOG_WAS_BUILT_WITH_CMAKE @FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION@)
-
-set(CERES_USES_GFLAGS @GFLAGS@)
-set(CERES_GFLAGS_VERSION @gflags_VERSION@)
-
-if (CERES_USES_MINIGLOG)
-  # Output message at standard log level (not the lower STATUS) so that
-  # the message is output in GUI during configuration to warn user.
-  ceres_message("-- Found Ceres compiled with miniglog substitute "
-    "for glog, beware this will likely cause problems if glog is later linked.")
-else(CERES_USES_MINIGLOG)
-  if (CERES_GLOG_WAS_BUILT_WITH_CMAKE)
-    find_package(glog ${CERES_GLOG_VERSION} CONFIG QUIET)
-    set(GLOG_FOUND ${glog_FOUND})
-  else()
-    # Version of glog against which Ceres was built was not built with CMake,
-    # use the exported glog find_package() module from Ceres to find it again.
-    # Append the locations of glog when Ceres was built to the search path hints.
-    list(APPEND GLOG_INCLUDE_DIR_HINTS "@GLOG_INCLUDE_DIR@")
-    get_filename_component(CERES_BUILD_GLOG_LIBRARY_DIR "@GLOG_LIBRARY@" PATH)
-    list(APPEND GLOG_LIBRARY_DIR_HINTS ${CERES_BUILD_GLOG_LIBRARY_DIR})
-
-    # Search quietly s/t we control the timing of the error message if not found.
-    find_package(Glog QUIET)
-  endif()
-
-  if (GLOG_FOUND)
-    ceres_message(STATUS "Found required Ceres dependency: glog")
-  else()
-    ceres_report_not_found("Missing required Ceres dependency: glog.")
-  endif()
-
-  # gflags is only a public dependency of Ceres via glog, thus is not required
-  # if Ceres was built with MINIGLOG.
-  if (CERES_USES_GFLAGS)
-    # Search quietly s/t we control the timing of the error message if not found.
-    find_package(gflags ${CERES_GFLAGS_VERSION} QUIET)
-    if (gflags_FOUND AND TARGET gflags)
-      ceres_message(STATUS "Found required Ceres dependency: gflags")
-    else()
-      ceres_report_not_found("Missing required Ceres "
-        "dependency: gflags (not found, or not found as exported CMake target).")
-    endif()
-  endif()
-endif(CERES_USES_MINIGLOG)
-
-# Import exported Ceres targets, if they have not already been imported.
-if (NOT TARGET ceres AND NOT Ceres_BINARY_DIR)
-  include(${CERES_CURRENT_CONFIG_DIR}/CeresTargets.cmake)
-endif (NOT TARGET ceres AND NOT Ceres_BINARY_DIR)
-# Set the expected XX_LIBRARIES variable for FindPackage().
-set(CERES_LIBRARIES Ceres::ceres)
-
-# Reset CMake module path to its state when this script was called.
-set(CMAKE_MODULE_PATH ${CALLERS_CMAKE_MODULE_PATH})
-
-# Build the detected Ceres version string to correctly capture whether it
-# was installed, or exported.
-ceres_pretty_print_cmake_list(CERES_COMPILED_COMPONENTS_STRING
-  ${CERES_COMPILED_COMPONENTS})
-if (CERES_WAS_INSTALLED)
-  set(CERES_DETECTED_VERSION_STRING "Ceres version: ${CERES_VERSION} "
-    "installed in: ${CURRENT_ROOT_INSTALL_DIR} with components: "
-    "${CERES_COMPILED_COMPONENTS_STRING}")
-else (CERES_WAS_INSTALLED)
-  set(CERES_DETECTED_VERSION_STRING "Ceres version: ${CERES_VERSION} "
-    "exported from build directory: ${CERES_EXPORTED_BUILD_DIR} with "
-    "components: ${CERES_COMPILED_COMPONENTS_STRING}")
-endif()
-
-# If the user called this script through find_package() whilst specifying
-# particular Ceres components that should be found via:
-# find_package(Ceres COMPONENTS XXX YYY), check the requested components against
-# those with which Ceres was compiled.  In this case, we should only report
-# Ceres as found if all the requested components have been found.
-if (Ceres_FIND_COMPONENTS)
-  foreach (REQUESTED_COMPONENT ${Ceres_FIND_COMPONENTS})
-    list(FIND CERES_COMPILED_COMPONENTS ${REQUESTED_COMPONENT} HAVE_REQUESTED_COMPONENT)
-    # list(FIND ..) returns -1 if the element was not in the list, but CMake
-    # interprets if (VAR) to be true if VAR is any non-zero number, even
-    # negative ones, hence we have to explicitly check for >= 0.
-    if (HAVE_REQUESTED_COMPONENT EQUAL -1)
-      # Check for the presence of all requested components before reporting
-      # not found, such that we report all of the missing components rather
-      # than just the first.
-      list(APPEND MISSING_CERES_COMPONENTS ${REQUESTED_COMPONENT})
-    endif()
-  endforeach()
-  if (MISSING_CERES_COMPONENTS)
-    ceres_pretty_print_cmake_list(REQUESTED_CERES_COMPONENTS_STRING
-      ${Ceres_FIND_COMPONENTS})
-    ceres_pretty_print_cmake_list(MISSING_CERES_COMPONENTS_STRING
-      ${MISSING_CERES_COMPONENTS})
-    ceres_report_not_found("Missing requested Ceres components: "
-      "${MISSING_CERES_COMPONENTS_STRING} (components requested: "
-      "${REQUESTED_CERES_COMPONENTS_STRING}). Detected "
-      "${CERES_DETECTED_VERSION_STRING}.")
-  endif()
-endif()
-
-# As we use CERES_REPORT_NOT_FOUND() to abort, if we reach this point we have
-# found Ceres and all required dependencies.
-ceres_message(STATUS "Found " ${CERES_DETECTED_VERSION_STRING})
-
-# Set CERES_FOUND to be equivalent to Ceres_FOUND, which is set to
-# TRUE by FindPackage() if this file is found and run, and after which
-# Ceres_FOUND is not (explicitly, i.e. undefined does not count) set
-# to FALSE.
-set(CERES_FOUND TRUE)
-
-if (NOT TARGET ceres)
-  # For backwards compatibility, create a local 'alias' target with the
-  # non-namespace-qualified Ceres target name. Note that this is not a
-  # true ALIAS library in CMake terms as they cannot point to imported targets.
-  add_library(ceres INTERFACE IMPORTED)
-  set_target_properties(ceres PROPERTIES INTERFACE_LINK_LIBRARIES Ceres::ceres)
-endif()
diff --git a/third_party/ceres/cmake/CreateCeresConfig.cmake b/third_party/ceres/cmake/CreateCeresConfig.cmake
deleted file mode 100644
index f0037cc..0000000
--- a/third_party/ceres/cmake/CreateCeresConfig.cmake
+++ /dev/null
@@ -1,115 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-
-# This must take place outside of CONFIGURE_CERES_CONFIG() in order that
-# we can determine where *this* file is, and thus the relative path to
-# config.h.in.  Inside of CONFIGURE_CERES_CONFIG(), CMAKE_CURRENT_LIST_DIR
-# refers to the caller of CONFIGURE_CERES_CONFIG(), not this file.
-set(CERES_CONFIG_IN_FILE "${CMAKE_CURRENT_LIST_DIR}/config.h.in")
-
-# CreateCeresConfig.cmake - Create the config.h for Ceres.
-#
-# This function configures the Ceres config.h file based on the current
-# compile options and copies it into the specified location.  It should be
-# called before Ceres is built so that the correct config.h is used when
-# Ceres is compiled.
-#
-# INPUTS:
-#   CURRENT_CERES_COMPILE_OPTIONS: List of currently enabled Ceres compile
-#                                  options. These are compared against the
-#                                  full list of valid options, which are read
-#                                  from config.h.in.  Any options present
-#                                  which are not part of the valid set will
-#                                  invoke an error.  Any valid option present
-#                                  will be enabled in the resulting config.h,
-#                                  all other options will be disabled.
-#
-#   CERES_CONFIG_OUTPUT_DIRECTORY: Path to output directory in which to save
-#                                  the configured config.h.  Typically this
-#                                  will be <src>/include/ceres/internal.
-
-function(CREATE_CERES_CONFIG CURRENT_CERES_COMPILE_OPTIONS CERES_CONFIG_OUTPUT_DIRECTORY)
-  # Create the specified output directory if it does not exist.
-  if (NOT EXISTS "${CERES_CONFIG_OUTPUT_DIRECTORY}")
-    message(STATUS "Creating configured Ceres config.h output directory: "
-      "${CERES_CONFIG_OUTPUT_DIRECTORY}")
-    file(MAKE_DIRECTORY "${CERES_CONFIG_OUTPUT_DIRECTORY}")
-  endif()
-  if (EXISTS "${CERES_CONFIG_OUTPUT_DIRECTORY}" AND
-      NOT IS_DIRECTORY "${CERES_CONFIG_OUTPUT_DIRECTORY}")
-    message(FATAL_ERROR "Ceres Bug: Specified CERES_CONFIG_OUTPUT_DIRECTORY: "
-      "${CERES_CONFIG_OUTPUT_DIRECTORY} exists, but is not a directory.")
-  endif()
-
-  # Read all possible configurable compile options from config.h.in, this avoids
-  # us having to hard-code in this file what the valid options are.
-  file(READ ${CERES_CONFIG_IN_FILE} CERES_CONFIG_IN_CONTENTS)
-  string(REGEX MATCHALL "@[^@ $]+@"
-    ALL_CONFIGURABLE_CERES_OPTIONS "${CERES_CONFIG_IN_CONTENTS}")
-  # Removing @ symbols at beginning and end of each option.
-  string(REPLACE "@" ""
-    ALL_CONFIGURABLE_CERES_OPTIONS "${ALL_CONFIGURABLE_CERES_OPTIONS}")
-
-  # Ensure that there are no repetitions in the current compile options.
-  list(REMOVE_DUPLICATES CURRENT_CERES_COMPILE_OPTIONS)
-
-  foreach (CERES_OPTION ${ALL_CONFIGURABLE_CERES_OPTIONS})
-    # Try and find the option in the list of current compile options, if it
-    # is present, then the option is enabled, otherwise it is disabled.
-    list(FIND CURRENT_CERES_COMPILE_OPTIONS ${CERES_OPTION} OPTION_ENABLED)
-
-    # list(FIND ..) returns -1 if the element was not in the list, but CMake
-    # interprets if (VAR) to be true if VAR is any non-zero number, even
-    # negative ones, hence we have to explicitly check for >= 0.
-    if (OPTION_ENABLED GREATER -1)
-      message(STATUS "Enabling ${CERES_OPTION} in Ceres config.h")
-      set(${CERES_OPTION} "#define ${CERES_OPTION}")
-
-      # Remove the item from the list of current options so that we can identify
-      # any options that were in CURRENT_CERES_COMPILE_OPTIONS, but not in
-      # ALL_CONFIGURABLE_CERES_OPTIONS (which is an error).
-      list(REMOVE_ITEM CURRENT_CERES_COMPILE_OPTIONS ${CERES_OPTION})
-    else()
-      set(${CERES_OPTION} "// #define ${CERES_OPTION}")
-    endif()
-  endforeach()
-
-  # CURRENT_CERES_COMPILE_OPTIONS should now be an empty list, any elements
-  # remaining were not present in ALL_CONFIGURABLE_CERES_OPTIONS read from
-  # config.h.in.
-  if (CURRENT_CERES_COMPILE_OPTIONS)
-    message(FATAL_ERROR "Ceres Bug: CURRENT_CERES_COMPILE_OPTIONS contained "
-      "the following options which were not present in config.h.in: "
-      "${CURRENT_CERES_COMPILE_OPTIONS}")
-  endif()
-
-  configure_file(${CERES_CONFIG_IN_FILE}
-    "${CERES_CONFIG_OUTPUT_DIRECTORY}/config.h" @ONLY)
-endfunction()
diff --git a/third_party/ceres/cmake/DetectBrokenStackCheckMacOSXcodePairing.cmake b/third_party/ceres/cmake/DetectBrokenStackCheckMacOSXcodePairing.cmake
deleted file mode 100644
index f333ed9..0000000
--- a/third_party/ceres/cmake/DetectBrokenStackCheckMacOSXcodePairing.cmake
+++ /dev/null
@@ -1,83 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-
-# As detailed in [1] the combination of macOS 10.15.x (Catalina) and
-# Xcode 11.0-1 enables by default a broken version of -fstack-check which
-# can break the alignment requirements for SIMD instructions resulting in
-# segfaults from within Eigen. This issue was apparently fixed in Xcode 11.2
-# despite not appearing in the official release notes.
-#
-# Although this can be worked around by compiling with -fno-stack-check, we
-# instead prevent generation as the update to Xcode 11.2 is free and failing
-# to include -fno-stack-check *everywhere* could still result in random
-# segfaults.
-#
-# [1]: https://forums.developer.apple.com/thread/121887
-function(detect_broken_stack_check_macos_xcode_pairing)
-  if (NOT APPLE)
-    return()
-  endif()
-
-  execute_process(COMMAND sw_vers -productVersion
-    OUTPUT_VARIABLE MACOS_VERSION
-    ERROR_QUIET
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  if (MACOS_VERSION VERSION_LESS 10.15)
-    # Only 10.15 (Catalina) is likely to be affected, irrespective of the Xcode
-    # version. Although it is possible to recreate the issue on 10.14 (Mojave)
-    # and Xcode 11.0-1 if -fstack-check is forced on, this is not the default.
-    return()
-  endif()
-
-  execute_process(COMMAND xcodebuild -version
-    OUTPUT_VARIABLE XCODE_VERSION
-    ERROR_QUIET
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}")
-  string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
-
-  if ((XCODE_VERSION VERSION_EQUAL 11.0) OR
-      (XCODE_VERSION VERSION_EQUAL 11.1))
-    message(FATAL_ERROR "Detected macOS version: ${MACOS_VERSION} and "
-      "Xcode version: ${XCODE_VERSION} which combined exhibit an "
-      "-fstack-check bug which can break alignment requirements for at least "
-      "AVX instructions as detailed here [1]."
-      "\n"
-      "This bug affected Xcode 11.0 and 11.1 but only when used with 10.15 "
-      "(Catalina), and was fixed in Xcode 11.2. Without the fix in place, "
-      "random segfaults will occur in Eigen operations used by Ceres that use "
-      "AVX instructions."
-      "\n"
-      "Please update to at least Xcode 11.2."
-      "\n"
-      "[1]: https://forums.developer.apple.com/thread/121887")
-  endif()
-endfunction()
diff --git a/third_party/ceres/cmake/EnableSanitizer.cmake b/third_party/ceres/cmake/EnableSanitizer.cmake
deleted file mode 100644
index 9a8d484..0000000
--- a/third_party/ceres/cmake/EnableSanitizer.cmake
+++ /dev/null
@@ -1,98 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-
-# Usage: enable_sanitizer(REQUIRED_SANITIZERS) where REQUIRED_SANITIZERS should
-# contain the list of sanitizers to enable by updating CMAKE_CXX_FLAGS and
-# CMAKE_EXE_LINKER_FLAGS.
-#
-# The specified sanitizers will be checked both for compatibility with the
-# current compiler and with each other as some sanitizers are mutually
-# exclusive.
-macro(enable_sanitizer)
-  # According to the Clang documentation [1] the following sanitizers are
-  # mututally exclusive.
-  # [1]: https://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
-  set(INCOMPATIBLE_SANITIZERS address thread memory)
-  # Set the recommended additional common compile flags for any sanitizer to
-  # get the best possible output, e.g [2] but make them visible in the cache
-  # so that the user can edit them if required.
-  # [2]: https://clang.llvm.org/docs/AddressSanitizer.html#usage
-  set(COMMON_SANITIZER_COMPILE_OPTIONS
-    "-g -fno-omit-frame-pointer -fno-optimize-sibling-calls"
-    CACHE STRING "Common compile flags enabled for any sanitizer")
-
-  # Check that the specified list of sanitizers to enable does not include
-  # multiple entries from the incompatible list.
-  set(MERGED_SANITIZERS ${ARGN} ${INCOMPATIBLE_SANITIZERS})
-  list(LENGTH MERGED_SANITIZERS COMBINED_LENGTH)
-  list(REMOVE_DUPLICATES MERGED_SANITIZERS)
-  list(LENGTH MERGED_SANITIZERS COMBINED_LENGTH_NO_DUPLICATES)
-  math(EXPR VALID_LENGTH "${COMBINED_LENGTH} - 1")
-  if (COMBINED_LENGTH_NO_DUPLICATES LESS VALID_LENGTH)
-    include(PrettyPrintCMakeList)
-    pretty_print_cmake_list(REQUESTED_SANITIZERS ${ARGN})
-    pretty_print_cmake_list(
-      PRETTY_INCOMPATIBLE_SANITIZERS ${INCOMPATIBLE_SANITIZERS})
-    message(FATAL_ERROR "Found incompatible sanitizers in requested set: "
-      "${REQUESTED_SANITIZERS}. The following sanitizers are mutually "
-      "exclusive: ${PRETTY_INCOMPATIBLE_SANITIZERS}")
-  endif()
-
-  # Until CMake 3.14 and CMAKE_REQUIRED_LINK_OPTIONS there was no equivalent to
-  # CMAKE_REQUIRED_FLAGS for try_compile() for linker flags. However, in CMake
-  # 3.2 CMP0056 was introduced that when enabled passes CMAKE_EXE_LINKER_FLAGS
-  # to try_compile() which allows us to achieve the same effect.
-  cmake_policy(SET CMP0056 NEW)
-  include(CheckCXXCompilerFlag)
-
-  unset(ADDED_SANITIZER)
-  foreach(REQUESTED_SANITIZER ${ARGN})
-    set(SANITIZER_FLAG -fsanitize=${REQUESTED_SANITIZER})
-    # Save the current CMAKE_EXE_LINKER_FLAGS before modifying it to test for
-    # the existence of the sanitizer flag so that we can revert after the test.
-    set(INITIAL_CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SANITIZER_FLAG}")
-    check_cxx_compiler_flag(${SANITIZER_FLAG} HAVE_SANITIZER)
-    set(CMAKE_EXE_LINKER_FLAGS "${INITIAL_CMAKE_EXE_LINKER_FLAGS}")
-    if (NOT HAVE_SANITIZER)
-      message(FATAL_ERROR "Specified sanitizer: ${REQUESTED_SANITIZER} is not "
-        "supported by the compiler.")
-    endif()
-    message(STATUS "Enabling sanitizer: ${REQUESTED_SANITIZER}")
-    set(ADDED_SANITIZER TRUE)
-    # As per the Clang documentation, the sanitizer flags must be added to both
-    # the compiler and linker flags.
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SANITIZER_FLAG}")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SANITIZER_FLAG}")
-  endforeach()
-  if (ADDED_SANITIZER)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_SANITIZER_COMPILE_OPTIONS}")
-  endif()
-endmacro()
diff --git a/third_party/ceres/cmake/FindAccelerateSparse.cmake b/third_party/ceres/cmake/FindAccelerateSparse.cmake
deleted file mode 100644
index 3a2e431..0000000
--- a/third_party/ceres/cmake/FindAccelerateSparse.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-#
-
-# FindAccelerateSparse.cmake - Find the sparse solvers in Apple's Accelerate
-#                              framework, introduced in Xcode 9.0 (2017).
-#                              Note that this is distinct from the Accelerate
-#                              framework on its own, which existed in previous
-#                              versions but without the sparse solvers.
-#
-# This module defines the following variables which should be referenced
-# by the caller to use the library.
-#
-# AccelerateSparse_FOUND: TRUE iff an Accelerate framework including the sparse
-#                         solvers, and all dependencies, has been found.
-# AccelerateSparse_INCLUDE_DIRS: Include directories for Accelerate framework.
-# AccelerateSparse_LIBRARIES: Libraries for Accelerate framework and all
-#                             dependencies.
-#
-# The following variables are also defined by this module, but in line with
-# CMake recommended FindPackage() module style should NOT be referenced directly
-# by callers (use the plural variables detailed above instead).  These variables
-# do however affect the behaviour of the module via FIND_[PATH/LIBRARY]() which
-# are NOT re-called (i.e. search for library is not repeated) if these variables
-# are set with valid values _in the CMake cache_. This means that if these
-# variables are set directly in the cache, either by the user in the CMake GUI,
-# or by the user passing -DVAR=VALUE directives to CMake when called (which
-# explicitly defines a cache variable), then they will be used verbatim,
-# bypassing the HINTS variables and other hard-coded search locations.
-#
-# AccelerateSparse_INCLUDE_DIR: Include directory for Accelerate framework, not
-#                               including the include directory of any
-#                               dependencies.
-# AccelerateSparse_LIBRARY: Accelerate framework, not including the libraries of
-#                           any dependencies.
-
-# Called if we failed to find the Accelerate framework with the sparse solvers.
-# Unsets all public (designed to be used externally) variables and reports
-# error message at priority depending upon [REQUIRED/QUIET/<NONE>] argument.
-macro(accelerate_sparse_report_not_found REASON_MSG)
-  unset(AccelerateSparse_FOUND)
-  unset(AccelerateSparse_INCLUDE_DIRS)
-  unset(AccelerateSparse_LIBRARIES)
-  # Make results of search visible in the CMake GUI if Accelerate has not
-  # been found so that user does not have to toggle to advanced view.
-  mark_as_advanced(CLEAR AccelerateSparse_INCLUDE_DIR
-                         AccelerateSparse_LIBRARY)
-
-  # Note <package>_FIND_[REQUIRED/QUIETLY] variables defined by FindPackage()
-  # use the camelcase library name, not uppercase.
-  if (AccelerateSparse_FIND_QUIETLY)
-    message(STATUS "Failed to find Accelerate framework with sparse solvers - "
-      ${REASON_MSG} ${ARGN})
-  elseif (AccelerateSparse_FIND_REQUIRED)
-    message(FATAL_ERROR "Failed to find Accelerate framework with sparse solvers - "
-      ${REASON_MSG} ${ARGN})
-  else()
-    # Neither QUIETLY nor REQUIRED, use no priority which emits a message
-    # but continues configuration and allows generation.
-    message("-- Failed to find Accelerate framework with sparse solvers - "
-      ${REASON_MSG} ${ARGN})
-  endif()
-  return()
-endmacro()
-
-unset(AccelerateSparse_FOUND)
-
-find_path(AccelerateSparse_INCLUDE_DIR NAMES Accelerate.h)
-if (NOT AccelerateSparse_INCLUDE_DIR OR
-    NOT EXISTS ${AccelerateSparse_INCLUDE_DIR})
-  accelerate_sparse_report_not_found(
-    "Could not find Accelerate framework headers. Set "
-    "AccelerateSparse_INCLUDE_DIR to the directory containing Accelerate.h")
-endif()
-
-find_library(AccelerateSparse_LIBRARY NAMES Accelerate)
-if (NOT AccelerateSparse_LIBRARY OR
-    NOT EXISTS ${AccelerateSparse_LIBRARY})
-  accelerate_sparse_report_not_found(
-    "Could not find Accelerate framework. Set AccelerateSparse_LIBRARY "
-    "to the Accelerate.framework directory")
-endif()
-
-set(AccelerateSparse_FOUND TRUE)
-
-# Determine if the Accelerate framework detected includes the sparse solvers.
-include(CheckCXXSourceCompiles)
-set(CMAKE_REQUIRED_INCLUDES ${AccelerateSparse_INCLUDE_DIR})
-set(CMAKE_REQUIRED_LIBRARIES ${AccelerateSparse_LIBRARY})
-check_cxx_source_compiles(
-  "#include <Accelerate.h>
-   int main() {
-     SparseMatrix_Double A;
-     SparseFactor(SparseFactorizationCholesky, A);
-     return 0;
-   }"
-   ACCELERATE_FRAMEWORK_HAS_SPARSE_SOLVER)
-unset(CMAKE_REQUIRED_INCLUDES)
-unset(CMAKE_REQUIRED_LIBRARIES)
-if (NOT ACCELERATE_FRAMEWORK_HAS_SPARSE_SOLVER)
-  accelerate_sparse_report_not_found(
-    "Detected Accelerate framework: ${AccelerateSparse_LIBRARY} does not "
-    "include the sparse solvers.")
-endif()
-
-if (AccelerateSparse_FOUND)
-  set(AccelerateSparse_INCLUDE_DIRS ${AccelerateSparse_INCLUDE_DIR})
-  set(AccelerateSparse_LIBRARIES ${AccelerateSparse_LIBRARY})
-endif()
-
-# Handle REQUIRED / QUIET optional arguments and version.
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(AccelerateSparse
-  REQUIRED_VARS AccelerateSparse_INCLUDE_DIRS AccelerateSparse_LIBRARIES)
-if (AccelerateSparse_FOUND)
-  mark_as_advanced(FORCE AccelerateSparse_INCLUDE_DIR
-                         AccelerateSparse_LIBRARY)
-endif()
diff --git a/third_party/ceres/cmake/FindGlog.cmake b/third_party/ceres/cmake/FindGlog.cmake
deleted file mode 100644
index 2ef6914..0000000
--- a/third_party/ceres/cmake/FindGlog.cmake
+++ /dev/null
@@ -1,384 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-#
-
-# FindGlog.cmake - Find Google glog logging library.
-#
-# This module defines the following variables:
-#
-# GLOG_FOUND: TRUE iff glog is found.
-# GLOG_INCLUDE_DIRS: Include directories for glog.
-# GLOG_LIBRARIES: Libraries required to link glog.
-# FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION: True iff the version of glog found
-#                                           was built & installed / exported
-#                                           as a CMake package.
-#
-# The following variables control the behaviour of this module:
-#
-# GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION: TRUE/FALSE, iff TRUE then
-#                           then prefer using an exported CMake configuration
-#                           generated by glog > 0.3.4 over searching for the
-#                           glog components manually.  Otherwise (FALSE)
-#                           ignore any exported glog CMake configurations and
-#                           always perform a manual search for the components.
-#                           Default: TRUE iff user does not define this variable
-#                           before we are called, and does NOT specify either
-#                           GLOG_INCLUDE_DIR_HINTS or GLOG_LIBRARY_DIR_HINTS
-#                           otherwise FALSE.
-# GLOG_INCLUDE_DIR_HINTS: List of additional directories in which to
-#                         search for glog includes, e.g: /timbuktu/include.
-# GLOG_LIBRARY_DIR_HINTS: List of additional directories in which to
-#                         search for glog libraries, e.g: /timbuktu/lib.
-#
-# The following variables are also defined by this module, but in line with
-# CMake recommended FindPackage() module style should NOT be referenced directly
-# by callers (use the plural variables detailed above instead).  These variables
-# do however affect the behaviour of the module via FIND_[PATH/LIBRARY]() which
-# are NOT re-called (i.e. search for library is not repeated) if these variables
-# are set with valid values _in the CMake cache_. This means that if these
-# variables are set directly in the cache, either by the user in the CMake GUI,
-# or by the user passing -DVAR=VALUE directives to CMake when called (which
-# explicitly defines a cache variable), then they will be used verbatim,
-# bypassing the HINTS variables and other hard-coded search locations.
-#
-# GLOG_INCLUDE_DIR: Include directory for glog, not including the
-#                   include directory of any dependencies.
-# GLOG_LIBRARY: glog library, not including the libraries of any
-#               dependencies.
-
-# Reset CALLERS_CMAKE_FIND_LIBRARY_PREFIXES to its value when
-# FindGlog was invoked.
-macro(GLOG_RESET_FIND_LIBRARY_PREFIX)
-  if (MSVC AND CALLERS_CMAKE_FIND_LIBRARY_PREFIXES)
-    set(CMAKE_FIND_LIBRARY_PREFIXES "${CALLERS_CMAKE_FIND_LIBRARY_PREFIXES}")
-  endif()
-endmacro(GLOG_RESET_FIND_LIBRARY_PREFIX)
-
-# Called if we failed to find glog or any of it's required dependencies,
-# unsets all public (designed to be used externally) variables and reports
-# error message at priority depending upon [REQUIRED/QUIET/<NONE>] argument.
-macro(GLOG_REPORT_NOT_FOUND REASON_MSG)
-  unset(GLOG_FOUND)
-  unset(GLOG_INCLUDE_DIRS)
-  unset(GLOG_LIBRARIES)
-  # Make results of search visible in the CMake GUI if glog has not
-  # been found so that user does not have to toggle to advanced view.
-  mark_as_advanced(CLEAR GLOG_INCLUDE_DIR
-                         GLOG_LIBRARY)
-
-  glog_reset_find_library_prefix()
-
-  # Note <package>_FIND_[REQUIRED/QUIETLY] variables defined by FindPackage()
-  # use the camelcase library name, not uppercase.
-  if (Glog_FIND_QUIETLY)
-    message(STATUS "Failed to find glog - " ${REASON_MSG} ${ARGN})
-  elseif (Glog_FIND_REQUIRED)
-    message(FATAL_ERROR "Failed to find glog - " ${REASON_MSG} ${ARGN})
-  else()
-    # Neither QUIETLY nor REQUIRED, use no priority which emits a message
-    # but continues configuration and allows generation.
-    message("-- Failed to find glog - " ${REASON_MSG} ${ARGN})
-  endif ()
-  return()
-endmacro(GLOG_REPORT_NOT_FOUND)
-
-# glog_message([mode] "message text")
-#
-# Wraps the standard cmake 'message' command, but suppresses output
-# if the QUIET flag was passed to the find_package(Glog ...) call.
-function(GLOG_MESSAGE)
-  if (NOT Glog_FIND_QUIETLY)
-    message(${ARGN})
-  endif()
-endfunction()
-
-# Protect against any alternative find_package scripts for this library having
-# been called previously (in a client project) which set GLOG_FOUND, but not
-# the other variables we require / set here which could cause the search logic
-# here to fail.
-unset(GLOG_FOUND)
-
-# -----------------------------------------------------------------
-# By default, if the user has expressed no preference for using an exported
-# glog CMake configuration over performing a search for the installed
-# components, and has not specified any hints for the search locations, then
-# prefer a glog exported configuration if available.
-if (NOT DEFINED GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION
-    AND NOT GLOG_INCLUDE_DIR_HINTS
-    AND NOT GLOG_LIBRARY_DIR_HINTS)
-  glog_message(STATUS "No preference for use of exported glog CMake "
-    "configuration set, and no hints for include/library directories provided. "
-    "Defaulting to preferring an installed/exported glog CMake configuration "
-    "if available.")
-  set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION TRUE)
-endif()
-
-# On macOS, add the Homebrew prefix (with appropriate suffixes) to the
-# respective HINTS directories (after any user-specified locations).  This
-# handles Homebrew installations into non-standard locations (not /usr/local).
-# We do not use CMAKE_PREFIX_PATH for this as given the search ordering of
-# find_xxx(), doing so would override any user-specified HINTS locations with
-# the Homebrew version if it exists.
-if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
-  find_program(HOMEBREW_EXECUTABLE brew)
-  mark_as_advanced(FORCE HOMEBREW_EXECUTABLE)
-  if (HOMEBREW_EXECUTABLE)
-    # Detected a Homebrew install, query for its install prefix.
-    execute_process(COMMAND ${HOMEBREW_EXECUTABLE} --prefix
-      OUTPUT_VARIABLE HOMEBREW_INSTALL_PREFIX
-      OUTPUT_STRIP_TRAILING_WHITESPACE)
-    glog_message(STATUS "Detected Homebrew with install prefix: "
-      "${HOMEBREW_INSTALL_PREFIX}, adding to CMake search paths.")
-    list(APPEND GLOG_INCLUDE_DIR_HINTS "${HOMEBREW_INSTALL_PREFIX}/include")
-    list(APPEND GLOG_LIBRARY_DIR_HINTS "${HOMEBREW_INSTALL_PREFIX}/lib")
-  endif()
-endif()
-
-if (GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION)
-  # Try to find an exported CMake configuration for glog, as generated by
-  # glog versions > 0.3.4
-  #
-  # We search twice, s/t we can invert the ordering of precedence used by
-  # find_package() for exported package build directories, and installed
-  # packages (found via CMAKE_SYSTEM_PREFIX_PATH), listed as items 6) and 7)
-  # respectively in [1].
-  #
-  # By default, exported build directories are (in theory) detected first, and
-  # this is usually the case on Windows.  However, on OS X & Linux, the install
-  # path (/usr/local) is typically present in the PATH environment variable
-  # which is checked in item 4) in [1] (i.e. before both of the above, unless
-  # NO_SYSTEM_ENVIRONMENT_PATH is passed).  As such on those OSs installed
-  # packages are usually detected in preference to exported package build
-  # directories.
-  #
-  # To ensure a more consistent response across all OSs, and as users usually
-  # want to prefer an installed version of a package over a locally built one
-  # where both exist (esp. as the exported build directory might be removed
-  # after installation), we first search with NO_CMAKE_PACKAGE_REGISTRY which
-  # means any build directories exported by the user are ignored, and thus
-  # installed directories are preferred.  If this fails to find the package
-  # we then research again, but without NO_CMAKE_PACKAGE_REGISTRY, so any
-  # exported build directories will now be detected.
-  #
-  # To prevent confusion on Windows, we also pass NO_CMAKE_BUILDS_PATH (which
-  # is item 5) in [1]), to not preferentially use projects that were built
-  # recently with the CMake GUI to ensure that we always prefer an installed
-  # version if available.
-  #
-  # NOTE: We use the NAMES option as glog erroneously uses 'google-glog' as its
-  #       project name when built with CMake, but exports itself as just 'glog'.
-  #       On Linux/OS X this does not break detection as the project name is
-  #       not used as part of the install path for the CMake package files,
-  #       e.g. /usr/local/lib/cmake/glog, where the <glog> suffix is hardcoded
-  #       in glog's CMakeLists.  However, on Windows the project name *is*
-  #       part of the install prefix: C:/Program Files/google-glog/[include,lib].
-  #       However, by default CMake checks:
-  #       C:/Program Files/<FIND_PACKAGE_ARGUMENT_NAME='glog'> which does not
-  #       exist and thus detection fails.  Thus we use the NAMES to force the
-  #       search to use both google-glog & glog.
-  #
-  # [1] http://www.cmake.org/cmake/help/v2.8.11/cmake.html#command:find_package
-  find_package(glog QUIET
-                    NAMES google-glog glog
-                    HINTS ${glog_DIR} ${HOMEBREW_INSTALL_PREFIX}
-                    NO_MODULE
-                    NO_CMAKE_PACKAGE_REGISTRY
-                    NO_CMAKE_BUILDS_PATH)
-  if (glog_FOUND)
-    glog_message(STATUS "Found installed version of glog: ${glog_DIR}")
-  else()
-    # Failed to find an installed version of glog, repeat search allowing
-    # exported build directories.
-    glog_message(STATUS "Failed to find installed glog CMake configuration, "
-      "searching for glog build directories exported with CMake.")
-    # Again pass NO_CMAKE_BUILDS_PATH, as we know that glog is exported and
-    # do not want to treat projects built with the CMake GUI preferentially.
-    find_package(glog QUIET
-                      NAMES google-glog glog
-                      NO_MODULE
-                      NO_CMAKE_BUILDS_PATH)
-    if (glog_FOUND)
-      glog_message(STATUS "Found exported glog build directory: ${glog_DIR}")
-    endif(glog_FOUND)
-  endif(glog_FOUND)
-
-  set(FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION ${glog_FOUND})
-
-  if (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-    glog_message(STATUS "Detected glog version: ${glog_VERSION}")
-    set(GLOG_FOUND ${glog_FOUND})
-    # glog wraps the include directories into the exported glog::glog target.
-    set(GLOG_INCLUDE_DIR "")
-    set(GLOG_LIBRARY glog::glog)
-  else (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-    glog_message(STATUS "Failed to find an installed/exported CMake "
-      "configuration for glog, will perform search for installed glog "
-      "components.")
-  endif (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-endif(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION)
-
-if (NOT GLOG_FOUND)
-  # Either failed to find an exported glog CMake configuration, or user
-  # told us not to use one.  Perform a manual search for all glog components.
-
-  # Handle possible presence of lib prefix for libraries on MSVC, see
-  # also GLOG_RESET_FIND_LIBRARY_PREFIX().
-  if (MSVC)
-    # Preserve the caller's original values for CMAKE_FIND_LIBRARY_PREFIXES
-    # s/t we can set it back before returning.
-    set(CALLERS_CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
-    # The empty string in this list is important, it represents the case when
-    # the libraries have no prefix (shared libraries / DLLs).
-    set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "" "${CMAKE_FIND_LIBRARY_PREFIXES}")
-  endif (MSVC)
-
-  # Search user-installed locations first, so that we prefer user installs
-  # to system installs where both exist.
-  list(APPEND GLOG_CHECK_INCLUDE_DIRS
-    /usr/local/include
-    /usr/local/homebrew/include # Mac OS X
-    /opt/local/var/macports/software # Mac OS X.
-    /opt/local/include
-    /usr/include)
-  # Windows (for C:/Program Files prefix).
-  list(APPEND GLOG_CHECK_PATH_SUFFIXES
-    glog/include
-    glog/Include
-    Glog/include
-    Glog/Include
-    google-glog/include # CMake installs with project name prefix.
-    google-glog/Include)
-
-  list(APPEND GLOG_CHECK_LIBRARY_DIRS
-    /usr/local/lib
-    /usr/local/homebrew/lib # Mac OS X.
-    /opt/local/lib
-    /usr/lib)
-  # Windows (for C:/Program Files prefix).
-  list(APPEND GLOG_CHECK_LIBRARY_SUFFIXES
-    glog/lib
-    glog/Lib
-    Glog/lib
-    Glog/Lib
-    google-glog/lib # CMake installs with project name prefix.
-    google-glog/Lib)
-
-  # Search supplied hint directories first if supplied.
-  find_path(GLOG_INCLUDE_DIR
-    NAMES glog/logging.h
-    HINTS ${GLOG_INCLUDE_DIR_HINTS}
-    PATHS ${GLOG_CHECK_INCLUDE_DIRS}
-    PATH_SUFFIXES ${GLOG_CHECK_PATH_SUFFIXES})
-  if (NOT GLOG_INCLUDE_DIR OR
-      NOT EXISTS ${GLOG_INCLUDE_DIR})
-    glog_report_not_found(
-      "Could not find glog include directory, set GLOG_INCLUDE_DIR "
-      "to directory containing glog/logging.h")
-  endif (NOT GLOG_INCLUDE_DIR OR
-    NOT EXISTS ${GLOG_INCLUDE_DIR})
-
-  find_library(GLOG_LIBRARY NAMES glog
-    HINTS ${GLOG_LIBRARY_DIR_HINTS}
-    PATHS ${GLOG_CHECK_LIBRARY_DIRS}
-    PATH_SUFFIXES ${GLOG_CHECK_LIBRARY_SUFFIXES})
-  if (NOT GLOG_LIBRARY OR
-      NOT EXISTS ${GLOG_LIBRARY})
-    glog_report_not_found(
-      "Could not find glog library, set GLOG_LIBRARY "
-      "to full path to libglog.")
-  endif (NOT GLOG_LIBRARY OR
-    NOT EXISTS ${GLOG_LIBRARY})
-
-  # Mark internally as found, then verify. GLOG_REPORT_NOT_FOUND() unsets
-  # if called.
-  set(GLOG_FOUND TRUE)
-
-  # Glog does not seem to provide any record of the version in its
-  # source tree, thus cannot extract version.
-
-  # Catch case when caller has set GLOG_INCLUDE_DIR in the cache / GUI and
-  # thus FIND_[PATH/LIBRARY] are not called, but specified locations are
-  # invalid, otherwise we would report the library as found.
-  if (GLOG_INCLUDE_DIR AND
-      NOT EXISTS ${GLOG_INCLUDE_DIR}/glog/logging.h)
-    glog_report_not_found(
-      "Caller defined GLOG_INCLUDE_DIR:"
-      " ${GLOG_INCLUDE_DIR} does not contain glog/logging.h header.")
-  endif (GLOG_INCLUDE_DIR AND
-    NOT EXISTS ${GLOG_INCLUDE_DIR}/glog/logging.h)
-  # TODO: This regex for glog library is pretty primitive, we use lowercase
-  #       for comparison to handle Windows using CamelCase library names, could
-  #       this check be better?
-  string(TOLOWER "${GLOG_LIBRARY}" LOWERCASE_GLOG_LIBRARY)
-  if (GLOG_LIBRARY AND
-      NOT "${LOWERCASE_GLOG_LIBRARY}" MATCHES ".*glog[^/]*")
-    glog_report_not_found(
-      "Caller defined GLOG_LIBRARY: "
-      "${GLOG_LIBRARY} does not match glog.")
-  endif (GLOG_LIBRARY AND
-    NOT "${LOWERCASE_GLOG_LIBRARY}" MATCHES ".*glog[^/]*")
-
-  # add glog::glog target
-  add_library(glog::glog INTERFACE IMPORTED)
-  target_include_directories(glog::glog INTERFACE ${GLOG_INCLUDE_DIRS})
-  target_link_libraries(glog::glog INTERFACE ${GLOG_LIBRARY})
-
-  glog_reset_find_library_prefix()
-
-endif(NOT GLOG_FOUND)
-
-# Set standard CMake FindPackage variables if found.
-if (GLOG_FOUND)
-  set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
-  set(GLOG_LIBRARIES ${GLOG_LIBRARY})
-endif (GLOG_FOUND)
-
-# If we are using an exported CMake glog target, the include directories are
-# wrapped into the target itself, and do not have to be (and are not)
-# separately specified.  In which case, we should not add GLOG_INCLUDE_DIRS
-# to the list of required variables in order that glog be reported as found.
-if (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-  set(GLOG_REQUIRED_VARIABLES GLOG_LIBRARIES)
-else()
-  set(GLOG_REQUIRED_VARIABLES GLOG_INCLUDE_DIRS GLOG_LIBRARIES)
-endif()
-
-# Handle REQUIRED / QUIET optional arguments.
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Glog DEFAULT_MSG
-  ${GLOG_REQUIRED_VARIABLES})
-
-# Only mark internal variables as advanced if we found glog, otherwise
-# leave them visible in the standard GUI for the user to set manually.
-if (GLOG_FOUND)
-  mark_as_advanced(FORCE GLOG_INCLUDE_DIR
-                         GLOG_LIBRARY
-                         glog_DIR) # Autogenerated by find_package(glog)
-endif (GLOG_FOUND)
diff --git a/third_party/ceres/cmake/FindMETIS.cmake b/third_party/ceres/cmake/FindMETIS.cmake
deleted file mode 100644
index 5f41792..0000000
--- a/third_party/ceres/cmake/FindMETIS.cmake
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 2022 Sergiu Deitsch
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTMETISLAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#
-#[=======================================================================[.rst:
-Module for locating METIS
-=========================
-
-Read-only variables:
-
-``METIS_FOUND``
-  Indicates whether the library has been found.
-
-``METIS_VERSION``
-  Indicates library version.
-
-Targets
--------
-
-``METIS::METIS``
-  Specifies targets that should be passed to target_link_libararies.
-]=======================================================================]
-
-include (FindPackageHandleStandardArgs)
-
-find_path (METIS_INCLUDE_DIR NAMES metis.h
-  PATH_SUFFIXES include
-  DOC "METIS include directory")
-find_library (METIS_LIBRARY_DEBUG NAMES metis
-  PATH_SUFFIXES Debug
-  DOC "METIS debug library")
-find_library (METIS_LIBRARY_RELEASE NAMES metis
-  PATH_SUFFIXES Release
-  DOC "METIS release library")
-
-if (METIS_LIBRARY_RELEASE)
-  if (METIS_LIBRARY_DEBUG)
-    set (METIS_LIBRARY debug ${METIS_LIBRARY_DEBUG} optimized
-      ${METIS_LIBRARY_RELEASE} CACHE STRING "METIS library")
-  else (METIS_LIBRARY_DEBUG)
-    set (METIS_LIBRARY ${METIS_LIBRARY_RELEASE} CACHE FILEPATH "METIS library")
-  endif (METIS_LIBRARY_DEBUG)
-elseif (METIS_LIBRARY_DEBUG)
-  set (METIS_LIBRARY ${METIS_LIBRARY_DEBUG} CACHE FILEPATH "METIS library")
-endif (METIS_LIBRARY_RELEASE)
-
-set (_METIS_VERSION_HEADER ${METIS_INCLUDE_DIR}/metis.h)
-
-if (EXISTS ${_METIS_VERSION_HEADER})
-  file (READ ${_METIS_VERSION_HEADER} _METIS_VERSION_CONTENTS)
-
-  string (REGEX REPLACE ".*#define METIS_VER_MAJOR[ \t]+([0-9]+).*" "\\1"
-    METIS_VERSION_MAJOR "${_METIS_VERSION_CONTENTS}")
-  string (REGEX REPLACE ".*#define METIS_VER_MINOR[ \t]+([0-9]+).*" "\\1"
-    METIS_VERSION_MINOR "${_METIS_VERSION_CONTENTS}")
-  string (REGEX REPLACE ".*#define METIS_VER_SUBMINOR[ \t]+([0-9]+).*" "\\1"
-    METIS_VERSION_PATCH "${_METIS_VERSION_CONTENTS}")
-
-  set (METIS_VERSION
-    ${METIS_VERSION_MAJOR}.${METIS_VERSION_MINOR}.${METIS_VERSION_PATCH})
-  set (METIS_VERSION_COMPONENTS 3)
-endif (EXISTS ${_METIS_VERSION_HEADER})
-
-mark_as_advanced (METIS_INCLUDE_DIR METIS_LIBRARY_DEBUG METIS_LIBRARY_RELEASE
-  METIS_LIBRARY)
-
-if (NOT TARGET METIS::METIS)
-  if (METIS_INCLUDE_DIR OR METIS_LIBRARY)
-    add_library (METIS::METIS IMPORTED UNKNOWN)
-  endif (METIS_INCLUDE_DIR OR METIS_LIBRARY)
-endif (NOT TARGET METIS::METIS)
-
-if (METIS_INCLUDE_DIR)
-  set_property (TARGET METIS::METIS PROPERTY INTERFACE_INCLUDE_DIRECTORIES
-    ${METIS_INCLUDE_DIR})
-endif (METIS_INCLUDE_DIR)
-
-if (METIS_LIBRARY_RELEASE)
-  set_property (TARGET METIS::METIS PROPERTY IMPORTED_LOCATION_RELEASE
-    ${METIS_LIBRARY_RELEASE})
-  set_property (TARGET METIS::METIS APPEND PROPERTY IMPORTED_CONFIGURATIONS
-    RELEASE)
-endif (METIS_LIBRARY_RELEASE)
-
-if (METIS_LIBRARY_DEBUG)
-  set_property (TARGET METIS::METIS PROPERTY IMPORTED_LOCATION_DEBUG
-    ${METIS_LIBRARY_DEBUG})
-  set_property (TARGET METIS::METIS APPEND PROPERTY IMPORTED_CONFIGURATIONS
-    DEBUG)
-endif (METIS_LIBRARY_DEBUG)
-
-find_package_handle_standard_args (METIS REQUIRED_VARS
-  METIS_INCLUDE_DIR METIS_LIBRARY VERSION_VAR METIS_VERSION)
diff --git a/third_party/ceres/cmake/FindSphinx.cmake b/third_party/ceres/cmake/FindSphinx.cmake
deleted file mode 100644
index d1488eb..0000000
--- a/third_party/ceres/cmake/FindSphinx.cmake
+++ /dev/null
@@ -1,124 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: pablo.speciale@gmail.com (Pablo Speciale)
-#
-
-#[=======================================================================[.rst:
-FindSphinx
-==========
-
-Module for locating Sphinx and its components.
-
-This modules defines the following variables:
-
-``Sphinx_FOUND``
-  ``TRUE`` iff Sphinx and all of its components have been found.
-
-``Sphinx_BUILD_EXECUTABLE``
-  Path to the ``sphinx-build`` tool.
-]=======================================================================]
-
-include (FindPackageHandleStandardArgs)
-
-find_program (Sphinx_BUILD_EXECUTABLE
-  NAMES sphinx-build
-  PATHS /opt/local/bin
-  DOC "Sphinx documentation generator"
-)
-
-mark_as_advanced (Sphinx_BUILD_EXECUTABLE)
-
-if (Sphinx_BUILD_EXECUTABLE)
-  execute_process (
-    COMMAND ${Sphinx_BUILD_EXECUTABLE} --version
-    ERROR_STRIP_TRAILING_WHITESPACE
-    ERROR_VARIABLE _Sphinx_BUILD_ERROR
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    OUTPUT_VARIABLE _Sphinx_VERSION_STRING
-    RESULT_VARIABLE _Sphinx_BUILD_RESULT
-  )
-
-  if (_Sphinx_BUILD_RESULT EQUAL 0)
-    string (REGEX REPLACE "^sphinx-build[ \t]+([^ \t]+)$" "\\1" Sphinx_VERSION
-      "${_Sphinx_VERSION_STRING}")
-
-    if (Sphinx_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
-      set (Sphinx_VERSION_COMPONENTS 3)
-      set (Sphinx_VERSION_MAJOR ${CMAKE_MATCH_1})
-      set (Sphinx_VERSION_MINOR ${CMAKE_MATCH_2})
-      set (Sphinx_VERSION_PATCH ${CMAKE_MATCH_3})
-    endif (Sphinx_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
-  else (_Sphinx_BUILD_RESULT EQUAL 0)
-    message (WARNING "Could not determine sphinx-build version: ${_Sphinx_BUILD_ERROR}")
-  endif (_Sphinx_BUILD_RESULT EQUAL 0)
-
-  unset (_Sphinx_BUILD_ERROR)
-  unset (_Sphinx_BUILD_RESULT)
-  unset (_Sphinx_VERSION_STRING)
-
-  find_package (Python COMPONENTS Interpreter)
-  set (_Sphinx_BUILD_RESULT FALSE)
-
-  if (Python_Interpreter_FOUND)
-    # Check for Sphinx theme dependency for documentation
-    foreach (component IN LISTS Sphinx_FIND_COMPONENTS)
-      string (REGEX MATCH "^(.+_theme)$" theme_component "${component}")
-
-      if (NOT theme_component STREQUAL component)
-        continue ()
-      endif (NOT theme_component STREQUAL component)
-
-      execute_process (
-        COMMAND ${Python_EXECUTABLE} -c "import ${theme_component}"
-        ERROR_STRIP_TRAILING_WHITESPACE
-        ERROR_VARIABLE _Sphinx_BUILD_ERROR
-        OUTPUT_QUIET
-        RESULT_VARIABLE _Sphinx_BUILD_RESULT
-      )
-
-      if (_Sphinx_BUILD_RESULT EQUAL 0)
-        set (Sphinx_${component}_FOUND TRUE)
-      elseif (_Sphinx_BUILD_RESULT EQUAL 0)
-        message (WARNING "Could not determine whether Sphinx component '${theme_component}' is available: ${_Sphinx_BUILD_ERROR}")
-        set (Sphinx_${component}_FOUND FALSE)
-      endif (_Sphinx_BUILD_RESULT EQUAL 0)
-
-      unset (_Sphinx_BUILD_ERROR)
-      unset (_Sphinx_BUILD_RESULT)
-    endforeach (component)
-
-    unset (theme_component)
-  endif (Python_Interpreter_FOUND)
-endif (Sphinx_BUILD_EXECUTABLE)
-
-find_package_handle_standard_args (Sphinx
-  REQUIRED_VARS Sphinx_BUILD_EXECUTABLE
-  VERSION_VAR Sphinx_VERSION
-  HANDLE_COMPONENTS
-)
diff --git a/third_party/ceres/cmake/FindSuiteSparse.cmake b/third_party/ceres/cmake/FindSuiteSparse.cmake
deleted file mode 100644
index 49c089c..0000000
--- a/third_party/ceres/cmake/FindSuiteSparse.cmake
+++ /dev/null
@@ -1,527 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-#
-
-#[=======================================================================[.rst:
-FindSuiteSparse
-===============
-
-Module for locating SuiteSparse libraries and its dependencies.
-
-This module defines the following variables:
-
-``SuiteSparse_FOUND``
-   ``TRUE`` iff SuiteSparse and all dependencies have been found.
-
-``SuiteSparse_VERSION``
-   Extracted from ``SuiteSparse_config.h`` (>= v4).
-
-``SuiteSparse_VERSION_MAJOR``
-    Equal to 4 if ``SuiteSparse_VERSION`` = 4.2.1
-
-``SuiteSparse_VERSION_MINOR``
-    Equal to 2 if ``SuiteSparse_VERSION`` = 4.2.1
-
-``SuiteSparse_VERSION_PATCH``
-    Equal to 1 if ``SuiteSparse_VERSION`` = 4.2.1
-
-The following variables control the behaviour of this module:
-
-``SuiteSparse_NO_CMAKE``
-  Do not attempt to use the native SuiteSparse CMake package configuration.
-
-
-Targets
--------
-
-The following targets define the SuiteSparse components searched for.
-
-``SuiteSparse::AMD``
-    Symmetric Approximate Minimum Degree (AMD)
-
-``SuiteSparse::CAMD``
-    Constrained Approximate Minimum Degree (CAMD)
-
-``SuiteSparse::COLAMD``
-    Column Approximate Minimum Degree (COLAMD)
-
-``SuiteSparse::CCOLAMD``
-    Constrained Column Approximate Minimum Degree (CCOLAMD)
-
-``SuiteSparse::CHOLMOD``
-    Sparse Supernodal Cholesky Factorization and Update/Downdate (CHOLMOD)
-
-``SuiteSparse::Partition``
-    CHOLMOD with METIS support
-
-``SuiteSparse::SPQR``
-    Multifrontal Sparse QR (SuiteSparseQR)
-
-``SuiteSparse::Config``
-    Common configuration for all but CSparse (SuiteSparse version >= 4).
-
-Optional SuiteSparse dependencies:
-
-``METIS::METIS``
-    Serial Graph Partitioning and Fill-reducing Matrix Ordering (METIS)
-]=======================================================================]
-
-if (NOT SuiteSparse_NO_CMAKE)
-  find_package (SuiteSparse NO_MODULE QUIET)
-endif (NOT SuiteSparse_NO_CMAKE)
-
-if (SuiteSparse_FOUND)
-  return ()
-endif (SuiteSparse_FOUND)
-
-# Push CMP0057 to enable support for IN_LIST, when cmake_minimum_required is
-# set to <3.3.
-cmake_policy (PUSH)
-cmake_policy (SET CMP0057 NEW)
-
-if (NOT SuiteSparse_FIND_COMPONENTS)
-  set (SuiteSparse_FIND_COMPONENTS
-    AMD
-    CAMD
-    CCOLAMD
-    CHOLMOD
-    COLAMD
-    SPQR
-  )
-
-  foreach (component IN LISTS SuiteSparse_FIND_COMPONENTS)
-    set (SuiteSparse_FIND_REQUIRED_${component} TRUE)
-  endforeach (component IN LISTS SuiteSparse_FIND_COMPONENTS)
-endif (NOT SuiteSparse_FIND_COMPONENTS)
-
-# Assume SuiteSparse was found and set it to false only if third-party
-# dependencies could not be located. SuiteSparse components are handled by
-# FindPackageHandleStandardArgs HANDLE_COMPONENTS option.
-set (SuiteSparse_FOUND TRUE)
-
-include (CheckLibraryExists)
-include (CheckSymbolExists)
-include (CMakePushCheckState)
-
-# Config is a base component and thus always required
-set (SuiteSparse_IMPLICIT_COMPONENTS Config)
-
-# CHOLMOD depends on AMD, CAMD, CCOLAMD, and COLAMD.
-if (CHOLMOD IN_LIST SuiteSparse_FIND_COMPONENTS)
-  list (APPEND SuiteSparse_IMPLICIT_COMPONENTS AMD CAMD CCOLAMD COLAMD)
-endif (CHOLMOD IN_LIST SuiteSparse_FIND_COMPONENTS)
-
-# SPQR depends on CHOLMOD.
-if (SPQR IN_LIST SuiteSparse_FIND_COMPONENTS)
-  list (APPEND SuiteSparse_IMPLICIT_COMPONENTS CHOLMOD)
-endif (SPQR IN_LIST SuiteSparse_FIND_COMPONENTS)
-
-# Implicit components are always required
-foreach (component IN LISTS SuiteSparse_IMPLICIT_COMPONENTS)
-  set (SuiteSparse_FIND_REQUIRED_${component} TRUE)
-endforeach (component IN LISTS SuiteSparse_IMPLICIT_COMPONENTS)
-
-list (APPEND SuiteSparse_FIND_COMPONENTS ${SuiteSparse_IMPLICIT_COMPONENTS})
-
-# Do not list components multiple times.
-list (REMOVE_DUPLICATES SuiteSparse_FIND_COMPONENTS)
-
-# Reset CALLERS_CMAKE_FIND_LIBRARY_PREFIXES to its value when
-# FindSuiteSparse was invoked.
-macro(SuiteSparse_RESET_FIND_LIBRARY_PREFIX)
-  if (MSVC)
-    set(CMAKE_FIND_LIBRARY_PREFIXES "${CALLERS_CMAKE_FIND_LIBRARY_PREFIXES}")
-  endif (MSVC)
-endmacro(SuiteSparse_RESET_FIND_LIBRARY_PREFIX)
-
-# Called if we failed to find SuiteSparse or any of it's required dependencies,
-# unsets all public (designed to be used externally) variables and reports
-# error message at priority depending upon [REQUIRED/QUIET/<NONE>] argument.
-macro(SuiteSparse_REPORT_NOT_FOUND REASON_MSG)
-  # Will be set to FALSE by find_package_handle_standard_args
-  unset (SuiteSparse_FOUND)
-
-  # Do NOT unset SuiteSparse_REQUIRED_VARS here, as it is used by
-  # FindPackageHandleStandardArgs() to generate the automatic error message on
-  # failure which highlights which components are missing.
-
-  suitesparse_reset_find_library_prefix()
-
-  # Note <package>_FIND_[REQUIRED/QUIETLY] variables defined by FindPackage()
-  # use the camelcase library name, not uppercase.
-  if (SuiteSparse_FIND_QUIETLY)
-    message(STATUS "Failed to find SuiteSparse - " ${REASON_MSG} ${ARGN})
-  elseif (SuiteSparse_FIND_REQUIRED)
-    message(FATAL_ERROR "Failed to find SuiteSparse - " ${REASON_MSG} ${ARGN})
-  else()
-    # Neither QUIETLY nor REQUIRED, use no priority which emits a message
-    # but continues configuration and allows generation.
-    message("-- Failed to find SuiteSparse - " ${REASON_MSG} ${ARGN})
-  endif (SuiteSparse_FIND_QUIETLY)
-
-  # Do not call return(), s/t we keep processing if not called with REQUIRED
-  # and report all missing components, rather than bailing after failing to find
-  # the first.
-endmacro(SuiteSparse_REPORT_NOT_FOUND)
-
-# Handle possible presence of lib prefix for libraries on MSVC, see
-# also SuiteSparse_RESET_FIND_LIBRARY_PREFIX().
-if (MSVC)
-  # Preserve the caller's original values for CMAKE_FIND_LIBRARY_PREFIXES
-  # s/t we can set it back before returning.
-  set(CALLERS_CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
-  # The empty string in this list is important, it represents the case when
-  # the libraries have no prefix (shared libraries / DLLs).
-  set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "" "${CMAKE_FIND_LIBRARY_PREFIXES}")
-endif (MSVC)
-
-# Additional suffixes to try appending to each search path.
-list(APPEND SuiteSparse_CHECK_PATH_SUFFIXES
-  suitesparse) # Windows/Ubuntu
-
-# Wrappers to find_path/library that pass the SuiteSparse search hints/paths.
-#
-# suitesparse_find_component(<component> [FILES name1 [name2 ...]]
-#                                        [LIBRARIES name1 [name2 ...]])
-macro(suitesparse_find_component COMPONENT)
-  include(CMakeParseArguments)
-  set(MULTI_VALUE_ARGS FILES LIBRARIES)
-  cmake_parse_arguments(SuiteSparse_FIND_COMPONENT_${COMPONENT}
-    "" "" "${MULTI_VALUE_ARGS}" ${ARGN})
-
-  set(SuiteSparse_${COMPONENT}_FOUND TRUE)
-  if (SuiteSparse_FIND_COMPONENT_${COMPONENT}_FILES)
-    find_path(SuiteSparse_${COMPONENT}_INCLUDE_DIR
-      NAMES ${SuiteSparse_FIND_COMPONENT_${COMPONENT}_FILES}
-      PATH_SUFFIXES ${SuiteSparse_CHECK_PATH_SUFFIXES})
-    if (SuiteSparse_${COMPONENT}_INCLUDE_DIR)
-      message(STATUS "Found ${COMPONENT} headers in: "
-        "${SuiteSparse_${COMPONENT}_INCLUDE_DIR}")
-      mark_as_advanced(SuiteSparse_${COMPONENT}_INCLUDE_DIR)
-    else()
-      # Specified headers not found.
-      set(SuiteSparse_${COMPONENT}_FOUND FALSE)
-      if (SuiteSparse_FIND_REQUIRED_${COMPONENT})
-        suitesparse_report_not_found(
-          "Did not find ${COMPONENT} header (required SuiteSparse component).")
-      else()
-        message(STATUS "Did not find ${COMPONENT} header (optional "
-          "SuiteSparse component).")
-        # Hide optional vars from CMake GUI even if not found.
-        mark_as_advanced(SuiteSparse_${COMPONENT}_INCLUDE_DIR)
-      endif()
-    endif()
-  endif()
-
-  if (SuiteSparse_FIND_COMPONENT_${COMPONENT}_LIBRARIES)
-    find_library(SuiteSparse_${COMPONENT}_LIBRARY
-      NAMES ${SuiteSparse_FIND_COMPONENT_${COMPONENT}_LIBRARIES}
-      PATH_SUFFIXES ${SuiteSparse_CHECK_PATH_SUFFIXES})
-    if (SuiteSparse_${COMPONENT}_LIBRARY)
-      message(STATUS "Found ${COMPONENT} library: ${SuiteSparse_${COMPONENT}_LIBRARY}")
-      mark_as_advanced(SuiteSparse_${COMPONENT}_LIBRARY)
-    else ()
-      # Specified libraries not found.
-      set(SuiteSparse_${COMPONENT}_FOUND FALSE)
-      if (SuiteSparse_FIND_REQUIRED_${COMPONENT})
-        suitesparse_report_not_found(
-          "Did not find ${COMPONENT} library (required SuiteSparse component).")
-      else()
-        message(STATUS "Did not find ${COMPONENT} library (optional SuiteSparse "
-          "dependency)")
-        # Hide optional vars from CMake GUI even if not found.
-        mark_as_advanced(SuiteSparse_${COMPONENT}_LIBRARY)
-      endif()
-    endif()
-  endif()
-
-  # A component can be optional (given to OPTIONAL_COMPONENTS). However, if the
-  # component is implicit (must be always present, such as the Config component)
-  # assume it be required as well.
-  if (SuiteSparse_FIND_REQUIRED_${COMPONENT})
-    list (APPEND SuiteSparse_REQUIRED_VARS SuiteSparse_${COMPONENT}_INCLUDE_DIR)
-    list (APPEND SuiteSparse_REQUIRED_VARS SuiteSparse_${COMPONENT}_LIBRARY)
-  endif (SuiteSparse_FIND_REQUIRED_${COMPONENT})
-
-  # Define the target only if the include directory and the library were found
-  if (SuiteSparse_${COMPONENT}_INCLUDE_DIR AND SuiteSparse_${COMPONENT}_LIBRARY)
-    if (NOT TARGET SuiteSparse::${COMPONENT})
-      add_library(SuiteSparse::${COMPONENT} IMPORTED UNKNOWN)
-    endif (NOT TARGET SuiteSparse::${COMPONENT})
-
-    set_property(TARGET SuiteSparse::${COMPONENT} PROPERTY
-      INTERFACE_INCLUDE_DIRECTORIES ${SuiteSparse_${COMPONENT}_INCLUDE_DIR})
-    set_property(TARGET SuiteSparse::${COMPONENT} PROPERTY
-      IMPORTED_LOCATION ${SuiteSparse_${COMPONENT}_LIBRARY})
-  endif (SuiteSparse_${COMPONENT}_INCLUDE_DIR AND SuiteSparse_${COMPONENT}_LIBRARY)
-endmacro()
-
-# Given the number of components of SuiteSparse, and to ensure that the
-# automatic failure message generated by FindPackageHandleStandardArgs()
-# when not all required components are found is helpful, we maintain a list
-# of all variables that must be defined for SuiteSparse to be considered found.
-unset(SuiteSparse_REQUIRED_VARS)
-
-# BLAS.
-find_package(BLAS QUIET)
-if (NOT BLAS_FOUND)
-  suitesparse_report_not_found(
-    "Did not find BLAS library (required for SuiteSparse).")
-endif (NOT BLAS_FOUND)
-
-# LAPACK.
-find_package(LAPACK QUIET)
-if (NOT LAPACK_FOUND)
-  suitesparse_report_not_found(
-    "Did not find LAPACK library (required for SuiteSparse).")
-endif (NOT LAPACK_FOUND)
-
-foreach (component IN LISTS SuiteSparse_FIND_COMPONENTS)
-  if (component STREQUAL Partition)
-    # Partition is a meta component that neither provides additional headers nor
-    # a separate library. It is strictly part of CHOLMOD.
-    continue ()
-  endif (component STREQUAL Partition)
-  string (TOLOWER ${component} component_library)
-
-  if (component STREQUAL "Config")
-    set (component_header SuiteSparse_config.h)
-    set (component_library suitesparseconfig)
-  elseif (component STREQUAL "SPQR")
-    set (component_header SuiteSparseQR.hpp)
-  else (component STREQUAL "SPQR")
-    set (component_header ${component_library}.h)
-  endif (component STREQUAL "Config")
-
-  suitesparse_find_component(${component}
-    FILES ${component_header}
-    LIBRARIES ${component_library})
-endforeach (component IN LISTS SuiteSparse_FIND_COMPONENTS)
-
-if (TARGET SuiteSparse::SPQR)
-  # SuiteSparseQR may be compiled with Intel Threading Building Blocks,
-  # we assume that if TBB is installed, SuiteSparseQR was compiled with
-  # support for it, this will do no harm if it wasn't.
-  find_package(TBB QUIET NO_MODULE)
-  if (TBB_FOUND)
-    message(STATUS "Found Intel Thread Building Blocks (TBB) library "
-      "(${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} / ${TBB_INTERFACE_VERSION}). "
-      "Assuming SuiteSparseQR was compiled with TBB.")
-    # Add the TBB libraries to the SuiteSparseQR libraries (the only
-    # libraries to optionally depend on TBB).
-    set_property (TARGET SuiteSparse::SPQR APPEND PROPERTY
-      INTERFACE_LINK_LIBRARIES TBB::tbb)
-  else (TBB_FOUND)
-    message(STATUS "Did not find Intel TBB library, assuming SuiteSparseQR was "
-      "not compiled with TBB.")
-  endif (TBB_FOUND)
-endif (TARGET SuiteSparse::SPQR)
-
-check_library_exists(rt shm_open "" HAVE_LIBRT)
-
-if (TARGET SuiteSparse::Config)
-  # SuiteSparse_config (SuiteSparse version >= 4) requires librt library for
-  # timing by default when compiled on Linux or Unix, but not on OSX (which
-  # does not have librt).
-  if (HAVE_LIBRT)
-    message(STATUS "Adding librt to "
-      "SuiteSparse_config libraries (required on Linux & Unix [not OSX] if "
-      "SuiteSparse is compiled with timing).")
-    set_property (TARGET SuiteSparse::Config APPEND PROPERTY
-      INTERFACE_LINK_LIBRARIES $<LINK_ONLY:rt>)
-  else (HAVE_LIBRT)
-    message(STATUS "Could not find librt, but found SuiteSparse_config, "
-      "assuming that SuiteSparse was compiled without timing.")
-  endif (HAVE_LIBRT)
-
-  # Add BLAS and LAPACK as dependencies of SuiteSparse::Config for convenience
-  # given that all components depend on it.
-  if (BLAS_FOUND)
-    if (TARGET BLAS::BLAS)
-      set_property (TARGET SuiteSparse::Config APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES $<LINK_ONLY:BLAS::BLAS>)
-    else (TARGET BLAS::BLAS)
-      set_property (TARGET SuiteSparse::Config APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
-    endif (TARGET BLAS::BLAS)
-  endif (BLAS_FOUND)
-
-  if (LAPACK_FOUND)
-    if (TARGET LAPACK::LAPACK)
-      set_property (TARGET SuiteSparse::Config APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES $<LINK_ONLY:LAPACK::LAPACK>)
-    else (TARGET LAPACK::LAPACK)
-      set_property (TARGET SuiteSparse::Config APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES ${LAPACK_LIBRARIES})
-    endif (TARGET LAPACK::LAPACK)
-  endif (LAPACK_FOUND)
-
-  # SuiteSparse version >= 4.
-  set(SuiteSparse_VERSION_FILE
-    ${SuiteSparse_Config_INCLUDE_DIR}/SuiteSparse_config.h)
-  if (NOT EXISTS ${SuiteSparse_VERSION_FILE})
-    suitesparse_report_not_found(
-      "Could not find file: ${SuiteSparse_VERSION_FILE} containing version "
-      "information for >= v4 SuiteSparse installs, but SuiteSparse_config was "
-      "found (only present in >= v4 installs).")
-  else (NOT EXISTS ${SuiteSparse_VERSION_FILE})
-    file(READ ${SuiteSparse_VERSION_FILE} Config_CONTENTS)
-
-    string(REGEX MATCH "#define SUITESPARSE_MAIN_VERSION[ \t]+([0-9]+)"
-      SuiteSparse_VERSION_LINE "${Config_CONTENTS}")
-    set (SuiteSparse_VERSION_MAJOR ${CMAKE_MATCH_1})
-
-    string(REGEX MATCH "#define SUITESPARSE_SUB_VERSION[ \t]+([0-9]+)"
-      SuiteSparse_VERSION_LINE "${Config_CONTENTS}")
-    set (SuiteSparse_VERSION_MINOR ${CMAKE_MATCH_1})
-
-    string(REGEX MATCH "#define SUITESPARSE_SUBSUB_VERSION[ \t]+([0-9]+)"
-      SuiteSparse_VERSION_LINE "${Config_CONTENTS}")
-    set (SuiteSparse_VERSION_PATCH ${CMAKE_MATCH_1})
-
-    unset (SuiteSparse_VERSION_LINE)
-
-    # This is on a single line s/t CMake does not interpret it as a list of
-    # elements and insert ';' separators which would result in 4.;2.;1 nonsense.
-    set(SuiteSparse_VERSION
-      "${SuiteSparse_VERSION_MAJOR}.${SuiteSparse_VERSION_MINOR}.${SuiteSparse_VERSION_PATCH}")
-
-    if (SuiteSparse_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
-      set(SuiteSparse_VERSION_COMPONENTS 3)
-    else (SuiteSparse_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
-      message (WARNING "Could not parse SuiteSparse_config.h: SuiteSparse "
-        "version will not be available")
-
-      unset (SuiteSparse_VERSION)
-      unset (SuiteSparse_VERSION_MAJOR)
-      unset (SuiteSparse_VERSION_MINOR)
-      unset (SuiteSparse_VERSION_PATCH)
-    endif (SuiteSparse_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
-  endif (NOT EXISTS ${SuiteSparse_VERSION_FILE})
-endif (TARGET SuiteSparse::Config)
-
-# CHOLMOD requires AMD CAMD CCOLAMD COLAMD
-if (TARGET SuiteSparse::CHOLMOD)
-  foreach (component IN ITEMS AMD CAMD CCOLAMD COLAMD)
-    if (TARGET SuiteSparse::${component})
-      set_property (TARGET SuiteSparse::CHOLMOD APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES SuiteSparse::${component})
-    else (TARGET SuiteSparse::${component})
-      # Consider CHOLMOD not found if COLAMD cannot be found
-      set (SuiteSparse_CHOLMOD_FOUND FALSE)
-    endif (TARGET SuiteSparse::${component})
-  endforeach (component IN ITEMS AMD CAMD CCOLAMD COLAMD)
-endif (TARGET SuiteSparse::CHOLMOD)
-
-# SPQR requires CHOLMOD
-if (TARGET SuiteSparse::SPQR)
-  if (TARGET SuiteSparse::CHOLMOD)
-    set_property (TARGET SuiteSparse::SPQR APPEND PROPERTY
-      INTERFACE_LINK_LIBRARIES SuiteSparse::CHOLMOD)
-  else (TARGET SuiteSparse::CHOLMOD)
-    # Consider SPQR not found if CHOLMOD cannot be found
-    set (SuiteSparse_SQPR_FOUND FALSE)
-  endif (TARGET SuiteSparse::CHOLMOD)
-endif (TARGET SuiteSparse::SPQR)
-
-# Add SuiteSparse::Config as dependency to all components
-if (TARGET SuiteSparse::Config)
-  foreach (component IN LISTS SuiteSparse_FIND_COMPONENTS)
-    if (component STREQUAL Config)
-      continue ()
-    endif (component STREQUAL Config)
-
-    if (TARGET SuiteSparse::${component})
-      set_property (TARGET SuiteSparse::${component} APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES SuiteSparse::Config)
-    endif (TARGET SuiteSparse::${component})
-  endforeach (component IN LISTS SuiteSparse_FIND_COMPONENTS)
-endif (TARGET SuiteSparse::Config)
-
-# Check whether CHOLMOD was compiled with METIS support. The check can be
-# performed only after the main components have been set up.
-if (TARGET SuiteSparse::CHOLMOD)
-  # NOTE If SuiteSparse was compiled as a static library we'll need to link
-  # against METIS already during the check. Otherwise, the check can fail due to
-  # undefined references even though SuiteSparse was compiled with METIS.
-  find_package (METIS)
-
-  if (TARGET METIS::METIS)
-    cmake_push_check_state (RESET)
-    set (CMAKE_REQUIRED_LIBRARIES SuiteSparse::CHOLMOD METIS::METIS)
-    check_symbol_exists (cholmod_metis cholmod.h SuiteSparse_CHOLMOD_USES_METIS)
-    cmake_pop_check_state ()
-
-    if (SuiteSparse_CHOLMOD_USES_METIS)
-      set_property (TARGET SuiteSparse::CHOLMOD APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES $<LINK_ONLY:METIS::METIS>)
-
-      # Provide the SuiteSparse::Partition component whose availability indicates
-      # that CHOLMOD was compiled with the Partition module.
-      if (NOT TARGET SuiteSparse::Partition)
-        add_library (SuiteSparse::Partition IMPORTED INTERFACE)
-      endif (NOT TARGET SuiteSparse::Partition)
-
-      set_property (TARGET SuiteSparse::Partition APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES SuiteSparse::CHOLMOD)
-    endif (SuiteSparse_CHOLMOD_USES_METIS)
-  endif (TARGET METIS::METIS)
-endif (TARGET SuiteSparse::CHOLMOD)
-
-# We do not use suitesparse_find_component to find Partition and therefore must
-# handle the availability in an extra step.
-if (TARGET SuiteSparse::Partition)
-  set (SuiteSparse_Partition_FOUND TRUE)
-else (TARGET SuiteSparse::Partition)
-  set (SuiteSparse_Partition_FOUND FALSE)
-endif (TARGET SuiteSparse::Partition)
-
-suitesparse_reset_find_library_prefix()
-
-# Handle REQUIRED and QUIET arguments to FIND_PACKAGE
-include(FindPackageHandleStandardArgs)
-if (SuiteSparse_FOUND)
-  find_package_handle_standard_args(SuiteSparse
-    REQUIRED_VARS ${SuiteSparse_REQUIRED_VARS}
-    VERSION_VAR SuiteSparse_VERSION
-    FAIL_MESSAGE "Failed to find some/all required components of SuiteSparse."
-    HANDLE_COMPONENTS)
-else (SuiteSparse_FOUND)
-  # Do not pass VERSION_VAR to FindPackageHandleStandardArgs() if we failed to
-  # find SuiteSparse to avoid a confusing autogenerated failure message
-  # that states 'not found (missing: FOO) (found version: x.y.z)'.
-  find_package_handle_standard_args(SuiteSparse
-    REQUIRED_VARS ${SuiteSparse_REQUIRED_VARS}
-    FAIL_MESSAGE "Failed to find some/all required components of SuiteSparse."
-    HANDLE_COMPONENTS)
-endif (SuiteSparse_FOUND)
-
-# Pop CMP0057.
-cmake_policy (POP)
diff --git a/third_party/ceres/cmake/PrettyPrintCMakeList.cmake b/third_party/ceres/cmake/PrettyPrintCMakeList.cmake
deleted file mode 100644
index 30151fe..0000000
--- a/third_party/ceres/cmake/PrettyPrintCMakeList.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: alexs.mac@gmail.com (Alex Stewart)
-
-# pretty_print_cmake_list( OUTPUT_VAR [item1 [item2 ... ]] )
-#
-# Sets ${OUTPUT_VAR} in the caller's scope to a human-readable string
-# representation of the list passed as the remaining arguments formed
-# as: "[item1, item2, ..., itemN]".
-function(pretty_print_cmake_list OUTPUT_VAR)
-  string(REPLACE ";" ", " PRETTY_LIST_STRING "[${ARGN}]")
-  set(${OUTPUT_VAR} "${PRETTY_LIST_STRING}" PARENT_SCOPE)
-endfunction()
diff --git a/third_party/ceres/cmake/ReadCeresVersionFromSource.cmake b/third_party/ceres/cmake/ReadCeresVersionFromSource.cmake
deleted file mode 100644
index 53e29c4..0000000
--- a/third_party/ceres/cmake/ReadCeresVersionFromSource.cmake
+++ /dev/null
@@ -1,81 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-#
-
-# Extract Ceres version from <CERES_SOURCE_ROOT>/include/ceres/version.h
-# so that we only have a single definition of the Ceres version, not two
-# one in the source and one in the CMakeLists.txt.
-macro(read_ceres_version_from_source CERES_SOURCE_ROOT)
-  set(CERES_VERSION_FILE ${CERES_SOURCE_ROOT}/include/ceres/version.h)
-  if (NOT EXISTS ${CERES_VERSION_FILE})
-    message(FATAL_ERROR "Cannot find Ceres version.h file in specified "
-      "Ceres source directory: ${CERES_SOURCE_ROOT}, it is not here: "
-      "${CERES_VERSION_FILE}")
-  endif()
-
-  file(READ ${CERES_VERSION_FILE} CERES_VERSION_FILE_CONTENTS)
-
-  string(REGEX MATCH "#define CERES_VERSION_MAJOR [0-9]+"
-    CERES_VERSION_MAJOR "${CERES_VERSION_FILE_CONTENTS}")
-  string(REGEX REPLACE "#define CERES_VERSION_MAJOR ([0-9]+)" "\\1"
-    CERES_VERSION_MAJOR "${CERES_VERSION_MAJOR}")
-  # NOTE: if (VAR) is FALSE if VAR is numeric and <= 0, as such we cannot use
-  #       it for testing version numbers, which might well be zero, at least
-  #       for the patch version, hence check for empty string explicitly.
-  if ("${CERES_VERSION_MAJOR}" STREQUAL "")
-    message(FATAL_ERROR "Failed to extract Ceres major version from "
-      "${CERES_VERSION_FILE}")
-  endif()
-
-  string(REGEX MATCH "#define CERES_VERSION_MINOR [0-9]+"
-    CERES_VERSION_MINOR "${CERES_VERSION_FILE_CONTENTS}")
-  string(REGEX REPLACE "#define CERES_VERSION_MINOR ([0-9]+)" "\\1"
-    CERES_VERSION_MINOR "${CERES_VERSION_MINOR}")
-  if ("${CERES_VERSION_MINOR}" STREQUAL "")
-    message(FATAL_ERROR "Failed to extract Ceres minor version from "
-      "${CERES_VERSION_FILE}")
-  endif()
-
-  string(REGEX MATCH "#define CERES_VERSION_REVISION [0-9]+"
-    CERES_VERSION_PATCH "${CERES_VERSION_FILE_CONTENTS}")
-  string(REGEX REPLACE "#define CERES_VERSION_REVISION ([0-9]+)" "\\1"
-    CERES_VERSION_PATCH "${CERES_VERSION_PATCH}")
-  if ("${CERES_VERSION_PATCH}" STREQUAL "")
-    message(FATAL_ERROR "Failed to extract Ceres patch version from "
-      "${CERES_VERSION_FILE}")
-  endif()
-
-  # This is on a single line s/t CMake does not interpret it as a list of
-  # elements and insert ';' separators which would result in 3.;2.;0 nonsense.
-  set(CERES_VERSION "${CERES_VERSION_MAJOR}.${CERES_VERSION_MINOR}.${CERES_VERSION_PATCH}")
-
-  message(STATUS "Detected Ceres version: ${CERES_VERSION} from "
-    "${CERES_VERSION_FILE}")
-endmacro()
diff --git a/third_party/ceres/cmake/UpdateCacheVariable.cmake b/third_party/ceres/cmake/UpdateCacheVariable.cmake
deleted file mode 100644
index bf3b594..0000000
--- a/third_party/ceres/cmake/UpdateCacheVariable.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-
-# By default, there is no easy way in CMake to set the value of a cache
-# variable without reinitialising it, which involves resetting its
-# associated help string.  This is particularly annoying for CMake options
-# where they need to programmatically updated.
-#
-# This function automates this process by getting the current help string
-# for the cache variable to update, then reinitialising it with the new
-# value, but with the original help string.
-function(UPDATE_CACHE_VARIABLE VAR_NAME VALUE)
-  get_property(IS_DEFINED_IN_CACHE CACHE ${VAR_NAME} PROPERTY VALUE SET)
-  if (NOT IS_DEFINED_IN_CACHE)
-    message(FATAL_ERROR "Specified variable to update in cache: "
-      "${VAR_NAME} has not been set in the cache.")
-  endif()
-  get_property(HELP_STRING CACHE ${VAR_NAME} PROPERTY HELPSTRING)
-  get_property(VAR_TYPE CACHE ${VAR_NAME} PROPERTY TYPE)
-  set(${VAR_NAME} ${VALUE} CACHE ${VAR_TYPE} "${HELP_STRING}" FORCE)
-endfunction()
diff --git a/third_party/ceres/cmake/config.h.in b/third_party/ceres/cmake/config.h.in
deleted file mode 100644
index 1566795..0000000
--- a/third_party/ceres/cmake/config.h.in
+++ /dev/null
@@ -1,95 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2022 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: alexs.mac@gmail.com (Alex Stewart)
-
-// Configuration options for Ceres.
-//
-// Do not edit this file, it was automatically configured by CMake when
-// Ceres was compiled with the relevant configuration for the machine
-// on which Ceres was compiled.
-//
-// Ceres Developers: All options should have the same name as their mapped
-//                   CMake options, in the preconfigured version of this file
-//                   all options should be enclosed in '@'.
-
-#ifndef CERES_PUBLIC_INTERNAL_CONFIG_H_
-#define CERES_PUBLIC_INTERNAL_CONFIG_H_
-
-// If defined, use the LGPL code in Eigen.
-@CERES_USE_EIGEN_SPARSE@
-
-// If defined, Ceres was compiled without LAPACK.
-@CERES_NO_LAPACK@
-
-// If defined, Ceres was compiled without SuiteSparse.
-@CERES_NO_SUITESPARSE@
-
-// If defined, Ceres was compiled without CUDA.
-@CERES_NO_CUDA@
-
-// If defined, Ceres was compiled without Apple's Accelerate framework solvers.
-@CERES_NO_ACCELERATE_SPARSE@
-
-#if defined(CERES_NO_SUITESPARSE) &&              \
-    defined(CERES_NO_ACCELERATE_SPARSE) &&        \
-    !defined(CERES_USE_EIGEN_SPARSE)  // NOLINT
-// If defined Ceres was compiled without any sparse linear algebra support.
-#define CERES_NO_SPARSE
-#endif
-
-// If defined, Ceres was compiled without Schur specializations.
-@CERES_RESTRICT_SCHUR_SPECIALIZATION@
-
-// If defined, Ceres was compiled to use Eigen instead of hardcoded BLAS
-// routines.
-@CERES_NO_CUSTOM_BLAS@
-
-// If defined, Ceres was compiled with a version of SuiteSparse/CHOLMOD without
-// the Partition module (requires METIS).
-@CERES_NO_CHOLMOD_PARTITION@
-// If defined Ceres was compiled without support for METIS via Eigen.
-@CERES_NO_EIGEN_METIS@
-
-
-// CERES_NO_SPARSE should be automatically defined by config.h if Ceres was
-// compiled without any sparse back-end.  Verify that it has not subsequently
-// been inconsistently redefined.
-#if defined(CERES_NO_SPARSE)
-#if !defined(CERES_NO_SUITESPARSE)
-#error CERES_NO_SPARSE requires CERES_NO_SUITESPARSE.
-#endif
-#if !defined(CERES_NO_ACCELERATE_SPARSE)
-#error CERES_NO_SPARSE requires CERES_NO_ACCELERATE_SPARSE
-#endif
-#if defined(CERES_USE_EIGEN_SPARSE)
-#error CERES_NO_SPARSE requires !CERES_USE_EIGEN_SPARSE
-#endif
-#endif
-
-#endif  // CERES_PUBLIC_INTERNAL_CONFIG_H_
diff --git a/third_party/ceres/cmake/iOS.cmake b/third_party/ceres/cmake/iOS.cmake
deleted file mode 100644
index 0773d13..0000000
--- a/third_party/ceres/cmake/iOS.cmake
+++ /dev/null
@@ -1,334 +0,0 @@
-# This file is part of the ios-cmake project. It was retrieved from
-# https://github.com/cristeab/ios-cmake.git, which is a fork of
-# https://code.google.com/p/ios-cmake/. Which in turn is based off of
-# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which
-# are included with CMake 2.8.4
-#
-# The ios-cmake project is licensed under the new BSD license.
-#
-# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software,
-# Kitware, Inc., Insight Software Consortium.  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 must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# 3. Neither the name of the copyright holder nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# This file is based off of the Platform/Darwin.cmake and
-# Platform/UnixPaths.cmake files which are included with CMake 2.8.4
-# It has been altered for iOS development.
-#
-# Updated by Alex Stewart (alexs.mac@gmail.com).
-
-# The following variables control the behaviour of this toolchain:
-#
-# IOS_PLATFORM: OS (default) or SIMULATOR or SIMULATOR64
-#    OS = Build for iPhoneOS.
-#    SIMULATOR = Build for x86 i386 iPhone Simulator.
-#    SIMULATOR64 = Build for x86 x86_64 iPhone Simulator.
-# CMAKE_OSX_SYSROOT: Path to the iOS SDK to use.  By default this is
-#    automatically determined from IOS_PLATFORM and xcodebuild, but
-#    can also be manually specified (although this should not be required).
-# CMAKE_IOS_DEVELOPER_ROOT: Path to the Developer directory for the iOS platform
-#    being compiled for.  By default this is automatically determined from
-#    CMAKE_OSX_SYSROOT, but can also be manually specified (although this should
-#    not be required).
-#
-# This toolchain defines the following variables for use externally:
-#
-# XCODE_VERSION: Version number (not including Build version) of Xcode detected.
-# IOS_SDK_VERSION: Version of iOS SDK being used.
-# CMAKE_OSX_ARCHITECTURES: Architectures being compiled for (generated from
-#    IOS_PLATFORM).
-#
-# This toolchain defines the following macros for use externally:
-#
-# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE)
-#   A convenience macro for setting xcode specific properties on targets
-#   example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1").
-#
-# find_host_package (PROGRAM ARGS)
-#   A macro used to find executable programs on the host system, not within the
-#   iOS environment.  Thanks to the android-cmake project for providing the
-#   command.
-
-# Get the Xcode version being used.
-execute_process(COMMAND xcodebuild -version
-  OUTPUT_VARIABLE XCODE_VERSION
-  ERROR_QUIET
-  OUTPUT_STRIP_TRAILING_WHITESPACE)
-string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}")
-string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
-message(STATUS "Building with Xcode version: ${XCODE_VERSION}")
-
-# Default to building for iPhoneOS if not specified otherwise, and we cannot
-# determine the platform from the CMAKE_OSX_ARCHITECTURES variable.  The use
-# of CMAKE_OSX_ARCHITECTURES is such that try_compile() projects can correctly
-# determine the value of IOS_PLATFORM from the root project, as
-# CMAKE_OSX_ARCHITECTURES is propagated to them by CMake.
-if (NOT DEFINED IOS_PLATFORM)
-  if (CMAKE_OSX_ARCHITECTURES)
-    if (CMAKE_OSX_ARCHITECTURES MATCHES ".*arm.*")
-      set(IOS_PLATFORM "OS")
-    elseif (CMAKE_OSX_ARCHITECTURES MATCHES "i386")
-      set(IOS_PLATFORM "SIMULATOR")
-    elseif (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
-      set(IOS_PLATFORM "SIMULATOR64")
-    endif()
-  endif()
-  if (NOT IOS_PLATFORM)
-    set(IOS_PLATFORM "OS")
-  endif()
-endif()
-set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING
-  "Type of iOS platform for which to build.")
-
-# Determine the platform name and architectures for use in xcodebuild commands
-# from the specified IOS_PLATFORM name.
-if (IOS_PLATFORM STREQUAL "OS")
-  set(XCODE_IOS_PLATFORM iphoneos)
-  set(IOS_ARCH armv7 armv7s arm64)
-elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
-  set(XCODE_IOS_PLATFORM iphonesimulator)
-  set(IOS_ARCH i386)
-elseif(IOS_PLATFORM STREQUAL "SIMULATOR64")
-  set(XCODE_IOS_PLATFORM iphonesimulator)
-  set(IOS_ARCH x86_64)
-else()
-  message(FATAL_ERROR "Invalid IOS_PLATFORM: ${IOS_PLATFORM}")
-endif()
-
-# If user did not specify the SDK root to use, then query xcodebuild for it.
-if (NOT CMAKE_OSX_SYSROOT)
-  execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
-    OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
-    ERROR_QUIET
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
-endif()
-if (NOT EXISTS ${CMAKE_OSX_SYSROOT})
-  message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} "
-    "does not exist.")
-endif()
-# Get the SDK version information.
-execute_process(COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion
-  OUTPUT_VARIABLE IOS_SDK_VERSION
-  ERROR_QUIET
-  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-# Find the Developer root for the specific iOS platform being compiled for
-# from CMAKE_OSX_SYSROOT.  Should be ../../ from SDK specified in
-# CMAKE_OSX_SYSROOT.  There does not appear to be a direct way to obtain
-# this information from xcrun or xcodebuild.
-if (NOT CMAKE_IOS_DEVELOPER_ROOT)
-  get_filename_component(IOS_PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT} PATH)
-  get_filename_component(CMAKE_IOS_DEVELOPER_ROOT ${IOS_PLATFORM_SDK_DIR} PATH)
-endif()
-if (NOT EXISTS ${CMAKE_IOS_DEVELOPER_ROOT})
-  message(FATAL_ERROR "Invalid CMAKE_IOS_DEVELOPER_ROOT: "
-    "${CMAKE_IOS_DEVELOPER_ROOT} does not exist.")
-endif()
-
-# Find the C & C++ compilers for the specified SDK.
-if (NOT CMAKE_C_COMPILER)
-  execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang
-    OUTPUT_VARIABLE CMAKE_C_COMPILER
-    ERROR_QUIET
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}")
-endif()
-if (NOT CMAKE_CXX_COMPILER)
-  execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang++
-    OUTPUT_VARIABLE CMAKE_CXX_COMPILER
-    ERROR_QUIET
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}")
-endif()
-
-# Find (Apple's) libtool.
-execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find libtool
-  OUTPUT_VARIABLE IOS_LIBTOOL
-  ERROR_QUIET
-  OUTPUT_STRIP_TRAILING_WHITESPACE)
-message(STATUS "Using libtool: ${IOS_LIBTOOL}")
-# Configure libtool to be used instead of ar + ranlib to build static libraries.
-# This is required on Xcode 7+, but should also work on previous versions of
-# Xcode.
-set(CMAKE_C_CREATE_STATIC_LIBRARY
-  "${IOS_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS> ")
-set(CMAKE_CXX_CREATE_STATIC_LIBRARY
-  "${IOS_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS> ")
-
-# Get the version of Darwin (OS X) of the host.
-execute_process(COMMAND uname -r
-  OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION
-  ERROR_QUIET
-  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-# Specify minimum version of deployment target.
-# Unless specified, the latest SDK version is used by default.
-set(IOS_DEPLOYMENT_TARGET "${IOS_SDK_VERSION}"
-    CACHE STRING "Minimum iOS version to build for." )
-message(STATUS "Building for minimum iOS version: ${IOS_DEPLOYMENT_TARGET}"
-               " (SDK version: ${IOS_SDK_VERSION})")
-if (NOT IOS_DEPLOYMENT_TARGET VERSION_LESS 11.0)
-  # iOS 11+ does not support 32-bit architectures (armv7).
-  foreach(ARCH ${IOS_ARCH})
-    if (ARCH MATCHES "armv7*")
-      message(STATUS "Removing iOS architecture: ${ARCH} from build as it is "
-        "not supported by the minimum iOS version to build for: "
-        "${IOS_DEPLOYMENT_TARGET} (iOS >= 11 requires 64-bit).")
-    else()
-      list(APPEND VALID_IOS_ARCH_FOR_SDK_VERSION ${ARCH})
-    endif()
-  endforeach()
-  set(IOS_ARCH ${VALID_IOS_ARCH_FOR_SDK_VERSION})
-endif()
-
-message(STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, "
-  "architecture(s): ${IOS_ARCH}")
-
-# Standard settings.
-set(CMAKE_SYSTEM_NAME Darwin)
-set(CMAKE_SYSTEM_VERSION ${IOS_SDK_VERSION})
-set(UNIX TRUE)
-set(APPLE TRUE)
-set(IOS TRUE)
-# Force unset of OS X-specific deployment target (otherwise autopopulated),
-# required as of cmake 2.8.10.
-set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING
-  "Must be empty for iOS builds." FORCE)
-# Set the architectures for which to build.
-set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
-
-# All iOS/Darwin specific settings - some may be redundant.
-set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
-set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
-set(CMAKE_SHARED_MODULE_PREFIX "lib")
-set(CMAKE_SHARED_MODULE_SUFFIX ".so")
-set(CMAKE_MODULE_EXISTS 1)
-set(CMAKE_DL_LIBS "")
-
-set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
-set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
-set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
-set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
-
-# Note that only Xcode 7+ supports the newer more specific:
-# -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use:
-# -m(ios/ios-simulator)-version-min instead.
-if (XCODE_VERSION VERSION_LESS 7.0)
-  if (IOS_PLATFORM STREQUAL "OS")
-    set(XCODE_IOS_PLATFORM_VERSION_FLAGS
-      "-mios-version-min=${IOS_DEPLOYMENT_TARGET}")
-  else()
-    # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
-    set(XCODE_IOS_PLATFORM_VERSION_FLAGS
-      "-mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
-  endif()
-else()
-  # Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM.
-  set(XCODE_IOS_PLATFORM_VERSION_FLAGS
-    "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
-endif()
-
-set(CMAKE_C_FLAGS
-  "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fobjc-abi-version=2 -fobjc-arc ${CMAKE_C_FLAGS}")
-# Hidden visibility is required for C++ on iOS.
-set(CMAKE_CXX_FLAGS
-  "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -fobjc-abi-version=2 -fobjc-arc ${CMAKE_CXX_FLAGS}")
-set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 -fomit-frame-pointer -ffast-math ${CMAKE_CXX_FLAGS_RELEASE}")
-
-set(CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
-set(CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS}  -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
-
-# In order to ensure that the updated compiler flags are used in try_compile()
-# tests, we have to forcibly set them in the CMake cache, not merely set them
-# in the local scope.
-list(APPEND VARS_TO_FORCE_IN_CACHE
-  CMAKE_C_FLAGS
-  CMAKE_CXX_FLAGS
-  CMAKE_CXX_RELEASE
-  CMAKE_C_LINK_FLAGS
-  CMAKE_CXX_LINK_FLAGS)
-foreach(VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE})
-  set(${VAR_TO_FORCE} "${${VAR_TO_FORCE}}" CACHE STRING "" FORCE)
-endforeach()
-
-set(CMAKE_PLATFORM_HAS_INSTALLNAME 1)
-set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names")
-set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names")
-set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
-set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
-set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
-
-# Hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old
-# build tree (where install_name_tool was hardcoded) and where
-# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't fail in
-# CMakeFindBinUtils.cmake (because it isn't rerun) hardcode
-# CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did
-# before, Alex.
-if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
-  find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
-endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
-
-# Set the find root to the iOS developer roots and to user defined paths.
-set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_OSX_SYSROOT}
-  ${CMAKE_PREFIX_PATH} CACHE STRING  "iOS find search path root" FORCE)
-
-# Default to searching for frameworks first.
-set(CMAKE_FIND_FRAMEWORK FIRST)
-
-# Set up the default search directories for frameworks.
-set(CMAKE_SYSTEM_FRAMEWORK_PATH
-  ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks
-  ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks
-  ${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks)
-
-# Only search the specified iOS SDK, not the remainder of the host filesystem.
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
-
-# This little macro lets you set any XCode specific property.
-macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
-  set_property(TARGET ${TARGET} PROPERTY
-    XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE})
-endmacro(set_xcode_property)
-
-# This macro lets you find executable programs on the host system.
-macro(find_host_package)
-  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
-  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
-  set(IOS FALSE)
-
-  find_package(${ARGN})
-
-  set(IOS TRUE)
-  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-endmacro(find_host_package)
diff --git a/third_party/ceres/cmake/uninstall.cmake.in b/third_party/ceres/cmake/uninstall.cmake.in
deleted file mode 100644
index 124deb1..0000000
--- a/third_party/ceres/cmake/uninstall.cmake.in
+++ /dev/null
@@ -1,92 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2015 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: arnaudgelas@gmail.com (Arnaud Gelas)
-#         alexs.mac@gmail.com (Alex Stewart)
-
-if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
-  message(FATAL_ERROR "Cannot find install manifest: "
-                      "\"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
-endif (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
-
-file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" INSTALL_MANIFEST)
-string(REGEX REPLACE "\n" ";" INSTALL_MANIFEST "${INSTALL_MANIFEST}")
-list(REVERSE INSTALL_MANIFEST)
-
-foreach (INSTALLED_FILE ${INSTALL_MANIFEST})
-  # Save the root ceres include install directory, e.g. /usr/local/include/ceres
-  # so that we can remove it at the end.
-  if (NOT CERES_INCLUDE_INSTALL_ROOT)
-    get_filename_component(FILE_NAME ${INSTALLED_FILE} NAME)
-    if (FILE_NAME STREQUAL ceres.h)
-      # Ensure that the directory is nested as we expect, as we are going to
-      # remove it, and we do not want to remove files pertaining to anyone else.
-      get_filename_component(PARENT_DIR ${INSTALLED_FILE} PATH)
-      get_filename_component(PARENT_DIR_NAME ${PARENT_DIR} NAME)
-      if (PARENT_DIR_NAME STREQUAL ceres AND IS_DIRECTORY ${PARENT_DIR})
-        set(CERES_INCLUDE_INSTALL_ROOT ${PARENT_DIR})
-      endif (PARENT_DIR_NAME STREQUAL ceres AND IS_DIRECTORY ${PARENT_DIR})
-    endif (FILE_NAME STREQUAL ceres.h)
-  endif (NOT CERES_INCLUDE_INSTALL_ROOT)
-
-  message(STATUS "Uninstalling \"$ENV{DESTDIR}${INSTALLED_FILE}\"")
-  if (EXISTS "$ENV{DESTDIR}${INSTALLED_FILE}")
-    execute_process(COMMAND @CMAKE_COMMAND@
-                    -E remove "$ENV{DESTDIR}${INSTALLED_FILE}"
-                    OUTPUT_VARIABLE RM_OUT
-                    RESULT_VARIABLE RM_RETVAL)
-    if (NOT ${RM_RETVAL} EQUAL 0)
-      message(FATAL_ERROR
-              "Problem when removing \"$ENV{DESTDIR}${INSTALLED_FILE}\"")
-    endif (NOT ${RM_RETVAL} EQUAL 0)
-  else (EXISTS "$ENV{DESTDIR}${INSTALLED_FILE}")
-    message(STATUS "File \"$ENV{DESTDIR}${INSTALLED_FILE}\" does not exist.")
-  endif (EXISTS "$ENV{DESTDIR}${INSTALLED_FILE}")
-endforeach(INSTALLED_FILE)
-
-# Removing Ceres include install directory.
-if (CERES_INCLUDE_INSTALL_ROOT AND
-    EXISTS ${CERES_INCLUDE_INSTALL_ROOT})
-  message(STATUS "Removing Ceres include install directory: "
-                 "\"$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT}\"")
-  execute_process(COMMAND @CMAKE_COMMAND@
-                  -E remove_directory
-                  "$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT}"
-                  OUTPUT_VARIABLE RM_OUT
-                  RESULT_VARIABLE RM_RETVAL)
-  if (NOT ${RM_RETVAL} EQUAL 0)
-    message(FATAL_ERROR
-      "Failed to remove: \"$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT\"")
-  endif (NOT ${RM_RETVAL} EQUAL 0)
-else (CERES_INCLUDE_INSTALL_ROOT AND
-    EXISTS ${CERES_INCLUDE_INSTALL_ROOT})
-  message(FATAL_ERROR "Failed to find Ceres installed include directory "
-                      "(e.g. /usr/local/include/ceres), candidate: "
-                      "\"$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT}\"")
-endif (CERES_INCLUDE_INSTALL_ROOT AND
-  EXISTS ${CERES_INCLUDE_INSTALL_ROOT})
diff --git a/third_party/ceres/config/ceres/internal/config.h b/third_party/ceres/config/ceres/internal/config.h
deleted file mode 100644
index 969e43b..0000000
--- a/third_party/ceres/config/ceres/internal/config.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2022 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: alexs.mac@gmail.com (Alex Stewart)
-
-// Default (empty) configuration options for Ceres.
-//
-// IMPORTANT: Most users of Ceres will not use this file, when compiling Ceres
-//            with CMake, CMake will configure a new config.h with the currently
-//            selected Ceres compile options in <BUILD_DIR>/config, which will
-//            be added to the include path for compilation, and installed with
-//            the public Ceres headers.  However, for some users of Ceres who
-//            compile without CMake (Bazel), this file ensures that Ceres will
-//            compile, with the user either specifying manually the Ceres
-//            compile options, or passing them directly through the compiler.
-
-#ifndef CERES_PUBLIC_INTERNAL_CONFIG_H_
-#define CERES_PUBLIC_INTERNAL_CONFIG_H_
-
-
-#endif  // CERES_PUBLIC_INTERNAL_CONFIG_H_
diff --git a/third_party/ceres/config/ceres/internal/export.h b/third_party/ceres/config/ceres/internal/export.h
deleted file mode 100644
index 0d4495d..0000000
--- a/third_party/ceres/config/ceres/internal/export.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2022 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: alexs.mac@gmail.com (Alex Stewart)
-
-// Default (empty) configuration options for Ceres.
-//
-// IMPORTANT: Most users of Ceres will not use this file, when compiling Ceres
-//            with CMake, CMake will configure a new config.h with the currently
-//            selected Ceres compile options in <BUILD_DIR>/export, which will
-//            be added to the include path for compilation, and installed with
-//            the public Ceres headers.  However, for some users of Ceres who
-//            compile without CMake (Bazel), this file ensures that Ceres will
-//            compile, with the user either specifying manually the Ceres
-//            compile options, or passing them directly through the compiler.
-
-#ifndef CERES_PUBLIC_INTERNAL_EXPORT_H_
-#define CERES_PUBLIC_INTERNAL_EXPORT_H_
-
-
-#endif  // CERES_PUBLIC_INTERNAL_EXPORT_H_
diff --git a/third_party/ceres/data/2x2.foe b/third_party/ceres/data/2x2.foe
deleted file mode 100644
index 67b1384..0000000
--- a/third_party/ceres/data/2x2.foe
+++ /dev/null
@@ -1,8 +0,0 @@
-2 3
-0 1 0 1
-0 0 1 1
-0.586612685392731 1.157638405566669 0.846059486257292
--0.0582774013402734 0.0339010363051084 -0.0501593018104054 0.0745568557931712
-0.0492112815304123 -0.0307820846538285 -0.123247230948424 0.104812330861557
-0.0562633568728865 0.0152832583489560 -0.0576215592718086 -0.0139673758425540
-
diff --git a/third_party/ceres/data/3x3.foe b/third_party/ceres/data/3x3.foe
deleted file mode 100644
index e0d6104..0000000
--- a/third_party/ceres/data/3x3.foe
+++ /dev/null
@@ -1,13 +0,0 @@
-3 8
-0 1 2 0 1 2 0 1 2
-0 0 0 1 1 1 2 2 2
-1.201143e-01 7.520515e-02 9.078330e-02 1.280545e-01 6.276734e-02 1.201840e-01 1.092460e-01 1.217102e-01
--1.06290 1.81622 -0.80592 0.27489 0.13790 -0.49836 0.76669 -1.95329 1.32468
--1.39695 1.62887 -0.27482 1.46226 -2.21903 0.82016 -0.12290 0.67906 -0.57683
-0.89899 0.27696 0.04805 -0.07191 0.00777 -0.00488 -0.80267 -0.31249 -0.03957
--0.86612 1.66525 -1.03168 1.87671 -3.28802 1.92990 -1.22515 2.01814 -1.08079
--0.37343 -0.23977 0.56955 -0.41741 0.05711 0.42774 -0.14881 0.02528 0.10072
-0.62783 0.27746 0.44180 -1.22190 -0.27753 -1.23532 0.54919 0.15855 0.68658
-0.46483 -1.12896 0.57926 0.22646 -0.25658 0.18881 0.57866 -1.13277 0.48707
-0.86662 0.19780 -1.06759 -1.92170 -0.10882 2.02231 1.14262 -0.09817 -1.03353
-
diff --git a/third_party/ceres/data/5x5.foe b/third_party/ceres/data/5x5.foe
deleted file mode 100644
index 0106827..0000000
--- a/third_party/ceres/data/5x5.foe
+++ /dev/null
@@ -1,32 +0,0 @@
-5 24
-0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4
-0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4
-
-5.472286e-02 6.425581e-02 5.031088e-02 5.989018e-02 4.424956e-02 5.119065e-02 6.743059e-02 2.339211e-02 5.973362e-02 6.281576e-02 1.495131e-02 5.693016e-02 3.189429e-02 7.672358e-02 4.524088e-02 3.681065e-02 6.383650e-02 4.347603e-02 2.264134e-02 2.561474e-02 5.886950e-02 4.114462e-02 4.893348e-02 5.834900e-02
-
-   -0.31071 1.04120 -0.78749 -0.47895 0.56812 -0.02713 0.12199 -0.19871 0.01017 0.08976 -0.05437 0.19638 -0.11093 -0.02853 0.00427 -0.19578 0.29112 -0.05108 -0.08012 0.02944 -0.87865 1.54098 -0.60090 -0.14424 0.05388 
-   0.59362 0.07378 0.01163 0.11076 0.38838 -1.56819 -0.12448 -0.26775 -0.14495 -1.26480 1.69550 0.23647 0.50640 0.20682 1.71141 -0.93659 -0.27274 -0.40550 -0.30937 -1.27168 0.21164 0.09704 0.14615 0.14513 0.43322 
-   0.84855 -1.15931 -0.04677 1.55189 -1.20232 -0.84787 0.88787 0.05491 -0.59425 0.44273 0.10771 0.15608 -0.20982 -0.40088 0.46844 0.00920 -0.34651 0.07722 1.10449 -1.00405 -0.00980 0.27614 0.32393 -1.83075 1.34408 
-   -1.03323 1.88111 -1.43100 0.78609 -0.25928 -0.03655 0.21945 -0.13154 -0.10918 0.11203 0.09740 -0.02567 -0.23481 0.18294 -0.07056 0.20877 -0.12025 -0.27859 0.34269 -0.10385 0.70720 -1.63594 1.39715 -0.56761 0.10165 
-   0.53443 -0.08024 -0.11745 -0.03402 0.25033 -0.96043 0.15798 0.15981 0.10961 -0.24634 0.77044 -0.18866 -0.27562 0.18315 0.07681 -0.74267 0.51002 0.40930 -0.00294 -1.63639 0.40120 -0.42511 -0.15842 -0.28824 1.59764 
-   -0.88573 -0.33458 -0.01419 -0.01103 0.00077 0.47044 0.43260 0.04198 -0.00840 0.00150 0.57390 0.08128 0.04955 -0.00643 0.01470 0.50375 0.07196 0.02376 0.03349 0.03517 -0.67904 -0.28139 -0.05936 -0.03884 -0.02249 
-   -0.01311 -0.01988 0.10721 -0.08376 0.01636 -0.32442 0.98192 -1.44473 1.21759 -0.47859 0.89529 -2.36566 3.17358 -2.70415 1.10629 -0.96782 2.47203 -3.22965 2.76881 -1.14343 0.42498 -1.09401 1.42223 -1.22142 0.50653 
-   0.21862 -0.20464 0.03462 -0.03753 0.01527 0.13402 -0.07069 -0.00552 -0.04434 -0.02653 0.15630 0.02185 0.04572 -0.11760 -0.06958 0.15633 -0.00898 0.00952 -0.06227 -0.12147 0.37032 0.05372 0.10450 -0.22764 -0.32445 
-   -0.02092 -0.35567 0.54827 0.50360 -0.95729 0.42842 0.61450 -1.06896 -0.96641 1.79327 -1.49830 -0.13333 0.96113 0.66182 -1.14234 2.35571 -0.68686 -0.72675 -0.09191 0.23092 -1.29917 0.56449 0.33405 -0.11554 0.06663 
-   -0.15212 -0.31661 -0.10629 -0.68078 1.64419 0.60883 0.48936 0.35629 0.85845 -2.71321 -1.02463 -0.40494 -0.33908 -0.03011 1.32162 0.87303 0.38931 0.15034 -0.46469 -0.16997 -0.30057 -0.21769 -0.03504 0.29551 -0.03051 
-   -0.63745 1.09815 0.07905 -1.29684 0.78552 0.31671 -0.60369 -0.31422 1.37878 -0.84617 -0.08181 0.25602 0.09426 -0.69533 0.50771 -0.26215 0.08620 0.18111 0.24247 -0.35641 0.18171 0.29815 -0.90155 0.49852 -0.00995 
-   -0.24394 0.32079 -0.18885 -0.43086 0.61484 0.95412 -1.08795 0.41381 1.25966 -1.62800 -1.63362 1.77016 -0.41047 -1.74982 2.02167 1.69856 -1.82451 0.27727 1.56121 -1.66173 -0.80206 0.85485 -0.10948 -0.64836 0.67266 
-   0.60487 -0.01646 0.13186 0.13391 0.66691 -0.16619 0.00981 0.02774 -0.14688 -0.23655 -0.03876 0.01428 -0.05848 0.00855 0.01915 0.28643 0.01215 0.00615 0.02837 -0.27025 -0.67548 -0.06341 -0.09492 -0.01467 -0.16753 
-   0.77534 -1.90839 2.47496 -2.26067 1.01011 -0.36223 0.89421 -1.24538 1.23108 -0.59609 -0.44538 1.04742 -1.25543 1.08209 -0.44929 -0.10218 0.51811 -0.92194 0.90930 -0.42024 0.18932 -0.73810 1.25011 -1.24150 0.56562 
-   0.93435 -0.03480 0.04710 -0.40291 -0.92490 -0.66962 0.13901 0.00497 0.31148 0.63533 0.30957 -0.23678 -0.07453 -0.24971 0.25021 0.68393 0.03453 -0.00104 -0.20619 -0.21134 -1.23377 0.08326 0.02804 0.53578 0.24696 
-   -0.31333 -0.06452 -0.14492 0.32917 0.18505 0.37680 -0.05739 -0.20598 -0.39758 0.33795 0.15776 -0.10590 -0.08163 -0.26879 0.26603 0.13942 0.14388 0.15602 -0.85931 0.46755 -0.37693 0.14924 0.18844 1.29502 -1.31627 
-   -0.57261 -0.15101 -0.03142 0.04828 -0.09470 1.30126 0.29676 0.02642 -0.10865 0.12241 -1.04666 -0.17702 0.10930 0.48806 0.79384 0.35790 0.00519 -0.09722 -0.76968 -1.93132 -0.05982 0.03488 -0.03692 0.34823 1.14489 
-   0.02861 -0.04563 -0.39979 -0.34141 0.84996 -0.11996 0.09395 0.10138 0.81867 -0.96541 0.17159 -0.18584 0.25071 -0.22578 -0.06749 1.50317 -1.28229 -0.16426 -0.02308 0.15558 -1.66312 1.45438 0.22480 -0.25807 0.09117 
-   -0.55490 0.19579 0.22691 0.60510 -0.46819 0.06905 -0.09310 -0.00511 -0.26410 0.29786 -0.15810 0.19022 0.02614 -0.00490 -0.06838 0.11087 -0.14454 -0.04154 -0.16050 0.23955 -0.60009 0.80946 0.13003 0.34930 -0.69227 
-   0.02280 0.50837 0.09286 -0.70868 0.16414 -0.80301 0.17835 0.36944 0.75854 -0.61169 0.44842 -0.99949 0.04847 0.08457 0.35292 0.60861 -0.02401 -0.48740 0.41152 -0.41065 -0.34356 0.41056 -0.01730 -0.58536 0.53149 
-   1.54887 -0.44899 -0.27397 -0.36683 -0.36138 -1.38762 0.36466 0.10235 0.35630 0.40105 -0.17410 -0.05898 0.13052 -0.04032 0.38137 -0.82904 0.31802 -0.02420 -0.20938 0.57263 0.95569 -0.26814 0.08144 0.25318 -1.02387 
-   0.26344 -0.49099 0.61113 -1.33142 0.89974 0.05990 -0.07519 0.14265 -0.33453 0.30248 0.08324 -0.12872 0.07988 -0.24786 0.14599 0.17826 -0.18072 0.08816 -0.10930 0.12304 0.45104 -0.70917 0.41756 -0.41199 0.18098 
-   -0.46895 0.79795 -0.38564 0.04986 -0.04034 0.11811 -0.23006 0.26011 -0.13551 0.03185 -0.01839 -0.09632 0.18000 -0.13208 0.03061 0.11165 -0.25590 0.42916 -0.49657 0.24341 0.51922 -1.52509 2.17579 -1.86952 0.70906 
-   -1.59203 1.37214 -0.36807 0.42638 -0.00689 2.86095 -2.02733 0.40858 -0.61961 -0.28165 -1.77476 0.55742 -0.12732 0.31007 0.76569 0.19805 0.83530 -0.18053 0.29590 -1.07493 0.27739 -0.69004 0.21195 -0.37112 0.59251 
-
-
diff --git a/third_party/ceres/data/README.foe b/third_party/ceres/data/README.foe
deleted file mode 100644
index 9d5077c..0000000
--- a/third_party/ceres/data/README.foe
+++ /dev/null
@@ -1,14 +0,0 @@
-The *.foe files contain coefficients provided by Stefan Roth, who agreed to
-release them under a BSD license. See his home page:
-
-  http://www.gris.informatik.tu-darmstadt.de/~sroth/research/foe/index.html
-
-The coefficients in the *.foe files have been obtained by extracting the
-matrices from the MATLAB files and performing matrix multiplication.
-
-The format of the files is ASCII:
-  <s = filter size> <K = number of filters>
-  <alpha_1> ... <alpha_K>
-  <f_1,1> ... <f_1,s^2>
-  ...
-  <f_K,1> ... <f_K,s^2>
diff --git a/third_party/ceres/data/ceres_noisy.pgm b/third_party/ceres/data/ceres_noisy.pgm
deleted file mode 100644
index 1669988..0000000
--- a/third_party/ceres/data/ceres_noisy.pgm
+++ /dev/null
@@ -1,6 +0,0 @@
-P2
-# PGM format
- # <width> <height> <levels> 
- # <data> ... 
-177 213 255 
-86 74 90 29 80 63 76 62 83 97 64 102 86 67 103 61 27 57 63 58 60 97 84 73 110 81 85 71 52 17 106 71 95 104 103 62 88 84 91 82 70 89 109 32 70 54 88 68 81 62 95 76 92 97 91 42 86 35 50 50 37 89 36 43 48 77 50 63 66 72 47 27 54 8 48 43 102 43 0 40 0 61 31 54 50 34 58 4 44 24 35 33 34 47 46 20 40 24 0 47 16 21 55 26 54 25 22 22 35 0 37 64 35 48 40 1 27 3 43 45 32 74 34 44 17 13 33 45 10 52 32 76 79 70 47 27 74 44 30 86 7 49 66 87 51 71 81 59 72 60 49 62 45 41 53 101 58 54 49 84 58 62 69 98 84 63 102 123 72 101 90 106 80 86 73 78 74 90 61 89 47 109 63 82 53 102 68 56 40 62 51 85 71 41 47 59 91 43 85 60 75 67 59 96 45 66 58 85 71 78 77 65 104 51 66 59 112 62 66 47 78 74 121 65 141 30 70 44 127 72 86 49 48 61 83 84 43 86 47 79 75 68 65 35 10 33 60 15 67 87 45 27 57 40 51 57 44 16 30 60 16 53 42 21 54 33 50 14 39 50 25 39 17 37 70 70 32 32 17 57 21 43 49 28 63 54 81 34 47 106 16 29 26 38 77 49 41 51 35 1 31 41 40 47 71 40 32 59 37 57 44 53 57 14 33 47 56 80 0 44 73 37 40 61 72 109 38 34 92 53 39 48 88 91 48 69 112 48 25 83 39 75 88 58 59 31 79 79 104 83 96 69 84 58 46 85 50 94 70 65 82 62 65 62 80 49 17 66 73 40 53 81 96 68 99 60 79 95 116 99 40 67 121 91 65 80 73 50 53 53 71 95 77 77 64 82 47 63 76 75 34 69 84 115 63 61 21 48 51 95 85 82 62 64 64 62 77 100 70 48 75 59 56 44 55 68 70 87 52 72 46 65 52 56 88 52 71 42 66 50 18 35 61 23 21 0 74 47 37 22 33 37 42 27 63 74 35 37 4 0 23 62 37 45 45 48 47 35 59 46 54 81 50 41 47 34 66 82 112 37 33 49 68 32 69 78 37 49 28 89 61 29 30 0 55 48 79 37 31 71 68 61 38 99 87 68 75 50 33 36 99 48 71 55 74 53 73 46 76 69 58 78 79 106 100 105 90 95 81 82 70 101 70 84 83 54 55 59 97 70 77 69 65 106 83 80 66 66 75 102 67 41 33 88 65 88 71 75 49 29 59 58 34 84 95 61 48 67 97 101 82 72 81 100 80 59 70 35 70 99 51 70 79 71 69 88 95 53 48 85 51 100 56 78 82 85 60 54 20 80 54 74 51 76 31 40 72 48 85 75 15 60 55 53 45 14 35 53 32 76 45 36 41 58 75 52 59 38 64 35 60 35 45 30 58 57 66 15 43 68 40 26 66 37 35 36 69 59 32 33 33 36 46 40 27 63 65 44 75 64 68 69 66 55 51 78 62 61 43 46 42 70 13 35 15 66 62 47 52 41 58 66 6 93 86 80 84 73 72 82 97 101 83 100 100 76 63 80 100 95 61 53 107 93 83 103 94 70 50 113 95 99 77 98 69 56 75 48 125 82 30 66 51 74 50 113 69 79 76 62 75 124 54 73 68 74 51 80 51 56 51 60 65 88 83 83 90 76 66 82 71 86 45 92 83 64 97 53 99 80 75 89 88 87 54 57 68 59 62 63 57 67 39 92 50 45 55 55 22 93 54 52 50 0 62 48 36 44 34 19 49 26 39 72 39 48 76 85 35 53 27 52 66 42 93 30 83 69 92 57 50 73 44 46 44 43 60 59 14 32 17 13 55 26 38 14 18 64 44 27 54 46 58 82 29 61 53 79 62 58 38 87 28 64 60 62 54 44 54 53 66 53 73 74 80 84 73 82 81 83 88 95 90 85 80 52 112 103 103 94 97 101 57 63 97 94 73 133 85 111 105 35 127 85 101 83 66 82 56 53 88 46 57 88 79 76 133 63 59 64 49 91 57 53 68 93 100 87 65 78 97 91 101 73 38 93 84 50 59 52 75 51 116 77 57 61 99 73 72 83 92 81 107 106 63 69 37 56 114 71 69 86 60 97 31 50 33 83 75 69 88 64 69 75 28 56 56 36 78 41 52 49 58 59 83 66 69 68 49 58 66 51 54 79 34 72 44 74 86 61 53 23 44 24 27 38 84 28 77 55 76 42 33 77 44 44 46 39 76 33 48 41 52 84 29 52 84 66 59 22 47 52 55 43 73 62 74 45 62 80 74 60 74 28 14 47 43 48 71 91 73 84 53 99 95 73 61 92 83 88 62 99 48 59 84 70 79 106 62 46 75 77 78 46 44 51 51 88 96 81 84 99 83 84 81 104 68 79 71 59 89 93 85 82 80 111 63 77 89 63 85 80 102 83 112 64 63 72 55 117 104 98 71 119 73 97 128 73 113 86 100 67 121 92 93 77 58 63 96 87 58 81 65 33 84 77 86 73 55 75 50 72 108 103 51 38 59 55 20 51 68 74 48 32 35 72 60 64 49 57 90 52 76 84 82 15 90 53 89 70 70 92 88 62 77 30 59 63 89 95 62 90 59 95 41 65 81 79 83 81 30 59 89 31 62 37 56 53 79 35 92 55 72 71 53 70 22 67 36 53 57 13 64 64 93 42 31 41 106 64 48 113 64 41 54 69 63 46 62 73 60 67 90 99 96 91 57 35 38 94 103 79 66 61 104 63 87 89 104 74 87 103 88 80 88 118 76 114 103 115 58 89 61 66 18 94 101 83 50 77 58 59 135 94 39 99 119 138 94 96 56 89 84 76 97 77 73 87 87 42 83 71 119 44 45 55 82 78 86 105 72 96 75 84 82 62 105 58 46 79 80 77 67 68 46 56 24 48 65 71 70 56 37 62 104 66 41 83 92 62 72 43 107 46 44 58 62 3 39 73 69 48 24 67 102 102 45 31 75 46 102 94 45 10 92 81 58 61 61 79 66 64 59 83 82 97 79 60 47 64 76 64 72 70 100 41 56 67 38 31 81 84 84 74 69 61 95 49 85 37 42 65 84 82 29 81 90 60 74 86 65 66 30 48 46 108 74 67 48 75 97 92 105 87 80 79 134 117 119 62 45 90 132 66 125 90 87 91 95 62 110 67 98 74 114 86 99 89 96 84 95 64 94 66 120 84 64 74 115 93 74 68 54 95 60 81 86 113 46 92 89 92 101 67 66 60 51 99 93 51 69 60 78 78 93 89 56 41 68 74 47 123 62 102 81 37 51 72 90 83 56 60 54 93 78 94 66 92 89 78 37 41 25 50 45 53 56 50 65 36 81 71 61 77 71 62 45 42 92 77 64 69 44 34 62 32 4 38 91 73 74 53 74 81 32 50 81 50 36 45 22 52 69 56 57 60 100 70 59 61 63 75 52 71 84 78 72 107 79 26 68 105 26 76 86 76 70 92 83 47 80 32 47 63 46 69 61 26 87 28 51 44 54 44 47 60 58 51 114 79 64 95 87 63 100 90 90 66 72 87 78 50 90 93 114 92 105 80 91 95 66 84 68 81 101 81 53 70 80 139 91 118 140 54 75 68 78 88 66 84 84 80 63 36 91 90 43 67 84 34 94 103 69 85 89 81 55 53 74 103 64 75 66 49 80 77 78 66 95 87 78 87 78 72 86 104 41 78 60 55 116 52 63 80 26 113 92 49 61 68 108 74 59 63 41 25 51 57 75 90 20 89 39 72 20 61 74 57 95 32 31 97 93 76 54 101 57 61 73 62 61 80 35 75 53 41 59 87 68 21 80 95 53 69 53 86 48 52 32 46 73 69 44 72 36 38 76 54 45 78 87 102 77 67 50 110 68 85 79 73 73 45 68 62 64 61 87 61 53 65 46 96 110 68 70 97 85 100 130 49 88 72 53 105 83 86 109 78 109 70 94 108 108 105 86 70 105 64 65 93 74 98 69 58 71 78 47 62 81 94 77 43 71 70 98 83 54 33 75 93 64 52 74 69 50 80 110 97 79 85 104 88 75 100 73 71 50 74 84 83 101 64 79 66 68 75 45 107 82 95 91 72 96 88 71 93 68 86 77 91 66 42 89 80 44 53 82 115 58 70 78 106 81 73 67 74 54 62 30 77 87 60 62 69 44 50 32 70 34 47 101 72 85 50 84 79 64 82 29 69 107 59 50 41 90 68 78 113 87 69 102 72 82 60 71 87 51 83 117 88 46 75 42 91 67 42 38 75 55 63 81 100 72 56 61 87 50 64 29 55 102 88 102 69 57 79 104 65 91 79 52 92 74 99 116 82 81 103 88 72 84 72 100 90 147 83 83 83 72 141 111 82 67 96 66 83 109 78 70 125 100 103 89 86 75 83 98 50 95 115 84 81 64 87 60 89 104 43 61 64 63 79 80 86 87 134 76 76 73 92 122 87 58 84 68 96 63 124 69 91 87 45 56 83 82 90 62 71 106 126 65 100 79 75 76 61 69 46 81 67 59 75 84 74 110 80 69 53 73 81 54 52 46 76 51 40 89 84 77 62 51 63 66 60 81 64 67 74 95 80 28 69 50 54 74 66 98 86 82 55 86 39 25 93 67 78 76 96 57 76 98 50 67 20 53 61 57 70 80 35 95 68 51 64 82 43 52 66 51 79 63 79 91 59 59 86 70 76 82 107 66 58 115 110 66 67 82 63 83 97 90 64 97 84 55 78 72 88 89 65 107 101 94 83 25 38 131 50 107 113 114 122 47 87 69 100 101 65 44 88 78 106 85 46 53 33 34 93 71 60 84 109 75 66 89 73 42 34 56 63 98 69 96 90 77 82 84 74 82 93 86 49 83 67 78 70 124 50 37 51 66 51 84 64 68 31 56 69 105 91 27 57 81 58 48 31 61 116 48 68 81 103 61 65 87 76 79 61 44 115 72 67 80 129 53 80 83 77 91 94 72 74 69 46 86 80 55 77 85 50 67 71 110 53 73 29 65 44 71 71 22 40 62 63 47 30 75 61 52 68 61 38 85 39 49 84 80 31 61 64 94 47 76 63 4 64 47 52 88 81 98 74 74 79 56 88 47 81 37 88 90 71 104 54 10 98 67 89 95 118 99 70 95 107 100 92 82 88 64 67 83 69 130 86 78 96 67 79 105 103 79 110 64 117 88 118 82 96 64 92 47 81 57 76 65 67 115 70 83 107 117 77 106 91 81 68 87 92 85 62 55 103 78 80 62 92 89 88 82 64 71 96 76 34 72 69 86 81 60 74 59 102 83 63 42 66 68 87 16 91 75 58 75 90 65 58 72 36 62 80 73 46 78 53 89 68 90 63 61 41 37 42 65 80 68 37 64 61 49 83 58 62 57 80 70 53 79 77 53 101 49 71 89 50 53 83 59 94 26 51 66 79 3 82 69 71 87 109 95 126 61 90 72 69 76 77 58 94 30 45 77 75 57 82 88 69 88 63 79 49 68 85 68 35 63 93 61 111 74 90 58 86 74 72 31 80 69 65 42 88 131 140 65 79 52 82 80 88 98 109 98 95 90 70 104 92 95 85 107 89 82 110 65 114 100 39 66 118 73 95 103 117 109 78 66 63 84 39 96 69 123 95 73 99 98 99 71 96 97 94 96 106 115 54 107 95 104 67 115 69 66 93 95 35 108 89 117 84 75 130 46 62 23 99 75 76 77 89 70 36 84 70 73 85 44 63 82 67 55 54 122 84 44 66 70 52 78 44 55 43 84 103 66 87 28 110 86 59 85 33 55 66 90 89 67 52 84 49 59 42 106 83 100 66 58 41 63 73 86 45 101 85 47 78 57 83 82 44 87 57 63 83 75 100 97 66 73 43 85 61 57 44 65 65 64 63 85 48 35 97 86 93 58 91 41 78 57 93 84 82 97 43 103 91 93 65 92 106 84 84 92 82 79 65 61 102 88 115 72 96 132 95 117 87 73 85 76 104 91 103 92 70 65 66 73 94 84 87 84 78 67 62 102 90 76 66 82 134 110 62 114 80 54 54 97 103 76 57 86 78 77 87 70 112 61 79 57 67 45 83 59 79 49 61 45 84 103 68 72 87 76 78 66 73 57 82 76 64 70 87 81 106 60 49 50 56 98 60 107 58 90 60 50 42 77 84 37 49 91 55 36 82 73 75 110 35 94 75 24 70 57 68 52 50 98 70 48 122 86 73 52 59 47 94 64 76 36 92 103 101 21 92 35 69 80 77 49 85 95 16 90 40 65 78 79 75 71 45 61 73 49 85 77 55 57 51 112 63 96 91 70 84 86 37 91 77 56 47 85 90 105 97 93 107 71 88 56 111 65 82 99 110 72 121 73 115 95 87 99 102 90 72 47 88 75 75 83 74 108 88 55 60 85 59 98 77 78 132 80 74 49 96 126 110 97 96 132 100 105 86 65 73 59 78 86 90 76 77 78 109 68 54 74 58 84 77 82 105 30 92 109 76 98 77 92 40 83 27 115 84 59 97 44 53 77 95 83 76 32 66 83 92 31 77 43 58 43 57 68 63 65 77 59 72 53 79 51 82 50 32 39 64 57 61 87 37 64 46 77 32 91 61 48 90 55 71 67 43 36 74 71 61 49 55 56 67 54 82 77 75 98 72 87 85 93 46 75 42 72 75 77 72 82 73 80 74 81 89 82 65 39 64 73 61 86 106 64 77 98 76 87 80 114 59 121 88 75 99 84 83 91 69 85 93 84 73 118 91 100 87 81 94 75 90 136 61 74 100 106 92 102 80 90 77 123 107 100 121 97 69 95 75 114 71 65 108 79 76 63 67 97 96 109 99 94 90 107 99 115 82 93 114 76 73 73 70 87 35 79 90 96 86 80 80 79 83 77 91 44 55 76 75 127 98 118 130 97 109 118 73 73 84 33 53 78 84 32 45 73 112 51 37 105 52 75 66 59 71 38 75 71 55 68 89 98 58 83 41 68 49 78 57 58 54 93 70 34 64 42 72 79 100 76 69 108 63 73 54 67 71 36 51 50 78 36 68 23 58 128 64 66 97 65 74 89 63 47 80 73 52 76 80 97 75 104 50 76 84 80 79 36 59 74 94 107 67 60 62 91 63 72 86 71 92 94 86 91 78 60 90 129 116 92 102 67 134 64 90 100 63 105 104 91 128 104 70 87 89 99 97 51 79 66 105 80 59 67 71 66 118 90 60 59 88 91 62 71 83 103 58 78 72 64 93 88 95 47 85 91 50 90 73 89 112 63 80 76 75 79 114 68 126 119 95 122 54 52 135 192 190 185 172 155 147 160 152 168 170 156 135 99 79 58 15 32 60 62 35 45 84 70 76 70 57 65 55 62 69 11 61 16 84 91 60 57 77 64 42 68 38 37 87 33 57 55 67 54 52 58 62 69 42 69 50 84 64 66 83 35 64 55 56 60 73 70 84 63 102 81 84 75 97 63 82 67 70 102 99 73 81 72 60 87 50 4 87 67 74 60 59 92 58 87 137 98 84 62 101 96 60 99 97 96 127 63 57 97 92 78 82 99 83 87 64 80 70 133 98 63 33 60 80 96 84 50 89 122 83 62 91 116 134 87 110 98 97 114 65 130 90 87 63 72 47 98 75 74 72 107 49 96 85 113 90 69 103 97 101 52 94 115 117 89 106 91 89 82 81 108 75 96 182 181 180 244 220 193 150 183 129 147 108 169 135 164 105 121 171 124 72 33 38 46 82 65 57 58 56 65 42 45 72 55 81 67 62 36 69 79 61 39 45 95 86 46 80 91 76 43 59 52 71 51 64 25 16 78 80 69 40 73 75 59 49 38 116 91 51 60 80 52 37 55 54 81 77 71 83 83 81 55 85 82 86 71 113 49 56 100 49 47 83 84 64 101 73 76 84 61 56 124 95 69 70 63 105 69 72 103 111 74 95 79 130 95 88 89 130 102 86 92 66 99 81 76 72 103 65 56 75 64 36 76 47 51 54 79 60 92 101 78 88 48 113 98 95 59 78 88 56 104 104 83 104 80 61 79 27 101 64 58 43 82 8 104 76 93 76 120 111 116 84 95 99 136 194 166 170 150 151 208 187 188 162 149 111 186 166 121 213 191 165 146 142 99 154 104 31 46 62 33 80 52 37 74 38 77 56 45 9 75 66 48 55 54 62 57 81 29 46 52 62 99 88 72 52 36 73 97 53 16 55 63 71 81 47 64 42 83 68 44 69 69 69 53 62 41 88 65 80 37 101 132 56 80 51 73 91 50 102 75 101 50 71 58 87 54 43 102 94 102 97 103 74 110 90 93 141 67 82 65 71 68 103 75 71 86 105 95 59 81 95 75 119 112 53 112 64 60 87 103 83 97 94 106 89 106 48 99 78 82 78 116 109 120 81 74 76 92 58 46 119 92 123 77 76 96 114 123 74 86 105 78 59 52 91 83 69 69 61 55 124 111 142 100 93 109 45 94 92 166 191 159 181 173 203 174 162 194 186 174 125 196 165 183 186 172 205 192 191 156 96 124 143 54 31 62 33 5 82 46 92 66 54 60 52 87 95 32 70 54 90 61 39 55 64 35 58 61 80 95 60 92 89 99 61 49 63 81 89 87 102 55 81 56 68 79 88 115 91 28 82 69 59 57 56 93 127 82 84 104 80 93 82 101 49 77 72 91 89 65 79 63 38 85 80 47 73 84 75 82 64 109 101 53 96 99 77 123 94 94 63 115 75 99 65 121 75 66 70 84 86 95 101 33 98 104 80 91 88 63 58 128 107 81 104 81 103 30 71 105 121 79 106 104 92 67 63 74 126 118 111 77 113 72 83 64 61 75 79 91 108 83 115 65 76 101 112 97 158 93 119 154 114 73 171 174 163 189 189 212 213 183 168 187 177 197 203 163 146 135 132 156 167 153 174 187 149 156 63 46 57 79 30 60 37 48 50 42 60 9 52 77 95 54 60 85 90 71 47 46 69 51 60 59 69 74 62 98 63 58 70 79 54 37 101 34 53 65 60 88 81 71 47 52 48 44 97 34 47 122 39 119 122 35 73 68 69 39 116 75 41 104 122 103 72 62 117 92 78 66 55 55 54 72 108 93 52 95 69 105 111 83 63 89 92 61 100 93 81 100 59 111 67 82 93 79 101 68 74 89 76 87 99 67 114 92 130 96 62 83 120 70 87 77 80 128 116 84 98 121 64 47 63 72 102 107 84 60 66 82 107 94 62 86 70 56 97 60 69 37 92 107 155 138 116 99 130 142 79 107 189 180 162 167 204 222 217 191 185 154 199 190 172 166 160 144 146 136 177 173 173 110 207 173 130 132 75 35 39 104 45 53 68 88 99 81 56 56 44 79 88 52 80 50 48 86 54 68 58 58 42 86 86 45 67 95 41 70 49 102 56 91 58 80 79 72 78 94 80 76 64 112 74 84 62 108 55 73 97 106 93 82 65 124 36 60 55 68 36 106 97 53 58 41 45 106 71 59 70 89 86 84 76 124 22 45 52 103 45 68 69 88 85 54 108 79 108 94 85 57 88 57 75 96 125 91 91 91 108 85 95 79 60 90 89 61 87 128 67 89 70 62 28 98 90 82 127 76 118 114 80 87 91 52 110 88 85 42 84 60 69 75 57 110 73 98 60 104 128 126 136 95 91 37 58 179 170 202 223 167 184 210 185 208 184 221 245 182 207 189 195 167 166 184 164 204 128 171 191 137 148 185 124 86 22 4 48 64 78 74 104 34 59 87 58 56 71 98 61 85 50 84 0 67 58 22 54 57 69 75 66 102 47 107 63 39 47 70 78 88 72 104 100 135 47 128 38 72 58 63 56 77 103 94 109 62 95 61 95 46 63 89 51 65 71 38 82 75 120 82 93 38 87 50 52 97 76 65 93 74 55 84 121 57 111 90 55 77 72 89 93 85 83 87 84 84 95 84 63 125 130 68 78 72 98 111 108 76 87 90 110 107 81 103 64 102 70 89 97 109 82 130 85 82 96 101 80 66 77 105 64 50 92 151 77 111 65 48 104 82 74 92 121 108 132 116 76 67 49 47 118 199 213 195 177 168 197 197 213 151 206 184 203 175 203 169 227 164 194 200 166 169 169 140 176 180 135 142 98 58 66 71 76 46 17 78 81 26 66 71 47 68 58 98 66 93 69 57 40 55 54 47 65 60 83 90 38 37 123 80 115 51 72 92 74 93 80 110 88 64 57 85 61 103 98 77 87 78 61 120 85 109 85 102 70 72 37 99 59 57 59 81 55 27 55 64 105 47 35 82 69 60 56 86 69 58 73 110 96 108 68 81 91 104 95 91 94 127 109 113 67 82 79 63 87 62 99 70 95 92 112 92 65 114 73 49 128 88 75 89 97 68 99 65 140 54 86 86 113 98 114 55 79 69 76 93 52 58 82 96 77 98 58 35 99 54 58 134 100 67 107 68 78 18 53 134 199 192 225 214 208 219 190 169 212 167 206 179 211 207 219 161 166 193 149 210 174 186 192 173 143 114 186 174 123 89 24 26 12 23 11 66 58 79 59 80 101 84 26 79 110 60 48 52 96 70 96 63 90 76 85 66 38 61 93 75 101 84 87 90 106 69 66 49 59 80 96 77 80 96 134 48 85 91 105 115 95 98 62 44 78 61 63 28 45 95 72 36 105 97 84 34 60 99 98 63 112 60 79 53 138 66 86 105 112 80 110 63 62 109 75 86 90 94 72 94 136 76 94 115 100 122 98 86 81 101 59 65 73 105 100 100 49 101 140 125 111 120 88 77 77 76 105 98 124 75 83 86 118 72 60 46 77 83 98 68 77 87 62 99 70 59 90 95 73 88 62 47 77 42 58 131 166 186 234 203 185 206 223 185 165 144 169 186 156 149 161 210 165 172 173 128 172 165 171 170 149 145 98 137 151 156 55 47 0 69 65 11 62 26 78 79 32 111 97 61 70 84 41 46 37 79 84 94 61 29 91 66 72 82 54 50 55 66 61 57 57 74 52 52 67 66 92 40 60 131 47 95 29 63 68 133 74 90 102 52 43 56 94 94 88 37 89 42 55 71 90 97 81 35 66 40 94 36 40 73 69 110 71 110 76 85 132 102 74 87 81 30 93 82 75 90 114 79 110 127 78 71 89 87 95 99 94 82 99 91 72 95 107 84 81 106 96 86 84 84 99 77 108 87 93 65 74 74 86 119 64 59 63 128 111 80 102 118 102 95 78 67 63 99 102 73 40 69 19 62 37 149 185 216 175 196 206 179 193 182 190 188 180 136 160 203 180 129 159 105 147 98 50 91 117 140 144 127 138 175 88 80 132 135 91 36 28 64 12 27 58 75 83 71 67 59 49 52 73 58 111 85 75 56 58 64 67 72 44 114 45 133 91 36 66 64 76 84 64 76 66 121 108 126 90 92 74 75 60 26 111 79 45 85 131 42 111 131 103 74 79 71 35 72 30 66 66 59 59 122 72 86 32 57 70 45 25 39 51 37 79 76 44 73 123 56 80 94 62 75 102 95 48 58 81 77 73 88 110 62 79 61 98 107 81 140 108 93 85 139 107 90 66 86 81 72 113 55 111 116 70 117 128 72 105 73 92 73 89 96 38 99 105 56 72 38 90 63 108 98 48 41 55 8 0 54 9 155 178 224 162 199 202 209 171 185 209 156 158 160 140 163 175 140 132 163 144 98 62 49 0 14 95 69 148 156 121 113 38 93 116 110 30 21 88 13 48 0 3 37 43 102 57 50 75 74 32 44 91 79 108 84 67 66 68 66 56 51 48 82 63 67 68 67 63 51 80 87 106 91 54 126 138 77 81 60 121 107 46 47 111 96 91 78 63 14 32 0 4 92 56 58 134 45 75 58 77 51 36 38 23 19 45 31 42 72 42 82 85 101 70 86 92 90 59 73 106 84 79 107 88 83 78 59 77 55 100 102 107 99 63 96 96 113 90 128 99 137 72 83 79 66 58 69 108 94 66 68 80 90 89 70 97 58 88 110 76 57 80 95 51 115 66 87 86 48 73 56 82 22 56 32 27 115 199 187 206 215 207 182 142 167 183 166 163 167 125 123 123 113 131 86 97 70 27 3 47 56 40 27 16 86 149 105 107 65 85 94 64 116 45 62 22 25 7 23 23 27 34 95 73 73 68 74 56 83 62 116 67 74 20 40 87 66 58 92 99 61 34 92 51 84 52 74 44 129 52 108 26 102 81 125 31 106 75 85 28 86 58 54 32 25 13 32 30 0 26 46 57 74 30 56 72 56 81 76 8 43 37 36 13 9 64 61 71 70 23 60 60 101 89 89 87 77 63 71 68 60 129 102 125 69 74 91 106 76 99 91 61 107 59 95 121 81 98 89 62 101 93 86 93 67 51 37 81 149 126 113 53 74 87 83 79 91 107 33 88 49 100 96 118 25 47 44 42 59 19 54 38 118 195 173 186 204 181 203 192 148 157 193 165 148 138 160 107 84 75 82 81 84 88 33 21 75 44 50 28 33 0 128 171 126 60 20 71 127 127 31 90 63 11 21 20 0 34 0 32 83 47 29 49 66 89 99 78 58 49 36 59 90 98 64 66 105 76 92 55 51 54 74 75 77 65 127 50 103 84 32 13 72 47 0 85 79 39 44 47 48 36 26 35 25 15 0 22 32 0 18 51 61 63 72 55 11 47 26 29 65 60 15 65 43 99 69 103 57 67 89 82 71 37 85 106 87 102 70 79 86 113 68 119 60 70 91 93 87 110 123 90 64 32 120 89 92 79 97 131 74 96 76 131 96 90 109 101 60 81 75 85 101 35 29 118 67 53 60 92 36 19 44 35 43 21 55 45 59 175 195 212 181 164 144 175 170 167 142 137 143 182 137 125 79 53 95 97 3 19 1 63 52 68 49 45 30 23 1 15 163 166 92 0 43 57 91 91 56 78 32 0 13 50 64 40 28 26 91 71 75 72 54 95 56 88 78 70 81 54 32 72 77 63 63 66 93 79 90 82 119 93 73 68 107 57 63 28 83 28 45 79 0 55 59 68 29 58 0 43 29 9 54 31 109 27 60 61 43 40 30 57 35 34 28 9 0 54 54 62 5 44 55 82 77 81 53 85 53 96 89 31 50 111 96 96 76 114 128 129 61 128 104 111 89 105 96 108 72 70 75 109 75 148 79 88 88 110 83 85 71 104 85 101 102 73 101 93 62 67 88 82 135 96 102 61 39 50 37 27 53 60 64 25 40 178 199 212 192 217 191 198 181 173 163 104 88 134 75 85 83 88 57 87 99 4 54 38 50 33 53 34 56 21 0 35 11 82 154 81 32 4 103 91 68 42 78 26 66 3 12 0 25 15 23 27 66 48 89 62 54 99 67 59 30 118 52 56 53 67 19 63 100 106 70 57 60 125 97 145 46 94 38 59 46 17 62 41 32 25 74 107 85 50 43 63 0 43 29 37 29 42 69 85 84 74 88 54 20 51 47 77 12 8 30 40 0 19 61 94 97 80 62 87 84 107 112 94 80 65 93 123 94 97 67 119 106 65 36 102 96 94 112 101 76 87 91 110 89 61 102 86 54 112 101 94 81 98 119 52 100 96 80 94 73 71 101 45 101 64 86 105 44 18 49 34 32 45 61 59 88 131 218 200 199 230 217 209 164 159 126 124 115 72 60 68 73 102 81 56 77 38 36 38 42 43 35 17 23 19 34 15 48 72 55 58 97 107 18 58 90 81 18 0 60 22 20 2 54 53 65 47 27 0 63 58 59 78 55 66 83 55 78 32 82 62 44 89 96 67 58 91 52 81 73 72 83 64 79 51 0 31 44 58 58 71 84 51 87 69 35 53 74 77 16 33 17 48 25 29 17 36 40 41 41 76 49 61 26 20 53 12 57 64 63 60 99 72 99 42 107 108 111 78 58 84 77 104 81 92 90 67 61 68 61 68 63 106 98 118 104 75 85 89 109 134 53 69 117 126 121 108 86 121 98 78 72 76 81 62 103 74 93 48 90 92 99 70 69 49 59 35 78 35 81 51 25 31 165 195 255 177 176 185 160 157 156 113 117 88 100 73 53 62 37 39 80 29 28 32 39 26 32 25 40 3 52 12 39 38 37 34 22 33 0 28 44 80 17 80 38 45 30 40 30 9 0 0 31 11 54 29 53 73 65 61 72 58 70 69 36 55 76 74 109 77 102 82 105 74 118 91 79 49 11 59 44 41 51 90 126 63 145 85 68 88 21 60 39 60 35 35 29 42 34 66 29 67 15 11 32 17 20 67 97 41 30 37 15 23 27 56 48 37 58 39 45 57 116 85 90 103 77 88 72 62 78 80 84 66 101 65 96 112 83 122 107 129 81 67 116 71 126 96 57 94 75 109 85 87 60 96 66 101 128 79 89 110 68 103 95 87 101 46 65 22 55 54 46 38 59 47 4 22 160 196 212 187 176 189 149 189 169 145 130 69 65 40 51 35 2 9 24 0 6 34 15 32 40 37 47 44 0 17 27 54 10 24 37 61 43 0 41 0 8 55 44 21 36 22 47 7 37 16 57 42 35 52 16 37 79 57 60 29 94 110 83 79 53 99 77 66 119 94 107 37 87 109 44 87 68 61 33 51 68 50 126 117 48 62 108 75 87 92 86 87 29 41 48 106 61 62 34 42 43 48 30 39 46 46 129 0 22 45 0 35 28 38 60 0 52 56 23 67 67 79 89 90 87 85 87 56 50 95 71 97 35 105 100 84 81 87 100 79 65 102 123 117 104 97 120 87 85 60 116 122 81 94 109 96 75 97 70 42 55 104 104 135 102 93 113 112 25 47 23 31 57 28 0 7 42 192 198 234 204 191 179 147 127 163 118 144 71 51 65 0 24 22 36 14 6 0 38 16 53 37 15 20 18 23 18 80 23 25 32 37 27 34 16 67 5 21 0 41 35 24 23 35 16 20 11 48 20 31 66 0 77 48 85 90 72 61 59 77 101 56 81 67 25 125 80 108 71 90 117 32 71 22 9 62 11 33 77 68 92 111 94 84 96 87 96 49 78 53 73 68 84 84 66 29 2 39 65 57 49 30 54 5 40 16 19 25 13 0 0 23 87 0 76 49 38 74 72 74 103 104 90 64 66 71 50 69 97 99 103 102 69 62 102 105 98 90 53 110 157 91 82 89 72 92 72 98 83 90 103 107 95 109 123 66 78 114 92 73 85 89 72 68 109 53 62 72 59 42 43 39 61 183 220 174 201 204 189 167 170 137 115 151 118 68 53 44 51 41 20 31 39 0 16 40 32 60 18 5 27 40 29 79 3 32 68 34 26 53 24 44 11 40 41 40 55 41 54 28 64 22 0 0 46 64 35 36 54 63 56 22 76 48 70 101 82 70 87 50 59 86 98 90 107 65 86 97 61 25 44 0 44 64 109 121 107 40 92 92 87 113 53 59 58 51 40 71 67 46 66 88 110 82 24 52 51 39 14 31 0 13 24 21 12 0 14 33 5 23 40 29 16 68 56 74 54 74 61 113 66 91 49 67 120 105 94 129 67 93 60 105 71 99 92 76 78 96 87 82 91 82 82 86 119 66 71 110 41 104 107 68 86 86 58 88 60 86 100 95 77 69 38 59 41 53 44 66 0 124 217 186 198 243 202 181 199 149 159 159 66 76 115 50 48 56 26 0 2 27 52 53 26 32 22 37 5 25 55 25 84 2 26 48 11 39 27 41 56 42 5 25 25 47 12 10 31 32 45 25 37 16 25 14 42 31 24 40 70 61 35 115 75 96 74 71 73 85 57 89 68 121 109 36 5 59 28 0 35 48 60 107 86 75 89 104 77 74 76 75 74 118 60 74 66 79 67 97 90 98 83 97 45 42 46 13 20 37 38 43 0 5 29 0 35 14 30 31 52 45 2 53 63 35 80 80 89 82 76 70 92 71 79 72 78 59 99 77 92 124 34 53 98 76 121 101 126 88 102 84 65 108 110 75 84 74 106 98 128 87 97 67 103 102 87 97 90 73 45 60 86 20 63 47 27 76 173 175 192 210 211 193 156 182 152 157 134 124 74 38 55 34 18 20 34 14 4 7 10 40 35 43 10 26 0 25 34 11 48 0 25 84 34 5 30 59 25 0 16 50 38 14 0 38 50 71 13 31 84 21 66 53 46 48 46 51 28 59 58 99 84 94 81 72 60 118 60 88 104 66 68 51 16 0 50 60 62 86 77 62 57 34 87 89 80 113 119 101 117 117 65 131 82 99 73 101 116 85 93 73 41 48 7 59 24 19 36 11 9 30 0 8 25 1 0 20 0 19 67 15 103 104 130 83 91 52 117 98 77 60 82 83 89 93 94 77 63 79 85 122 84 120 112 91 95 116 92 71 42 102 64 92 117 101 115 89 131 67 118 111 86 58 132 85 78 56 86 27 49 50 57 65 169 209 208 209 192 160 219 178 172 172 159 164 82 85 0 58 10 41 11 17 72 35 51 9 20 26 6 11 29 37 46 49 55 46 39 22 12 16 9 10 8 27 0 24 26 0 63 38 55 26 24 16 0 42 49 33 50 33 32 31 11 49 41 90 55 29 79 105 46 81 107 117 45 82 0 68 44 35 18 33 69 64 43 60 63 32 143 106 128 128 159 95 146 118 143 164 99 146 117 104 132 101 43 99 88 31 23 56 0 39 55 18 0 1 6 0 14 0 56 11 6 46 44 23 84 59 42 43 61 104 78 78 90 111 73 120 100 68 96 149 69 99 105 91 97 83 102 63 83 107 112 109 120 98 47 117 85 93 125 72 119 115 84 116 88 112 77 102 94 142 87 34 73 39 57 10 172 200 179 189 215 201 197 180 165 134 163 164 145 83 93 43 59 0 27 56 58 44 37 35 9 4 19 7 45 38 23 0 56 32 6 66 0 49 31 16 17 21 56 0 0 0 13 14 18 16 18 20 45 4 13 48 35 56 49 34 25 31 59 55 70 52 53 78 49 96 84 91 107 42 68 35 41 27 0 15 74 104 43 65 47 69 115 131 191 224 158 239 175 158 182 137 135 111 156 130 110 122 63 91 105 67 93 68 45 7 30 19 2 34 0 0 39 13 1 24 0 0 64 1 50 39 39 87 39 96 58 46 57 82 79 82 65 112 117 106 95 51 109 86 60 90 94 138 86 83 70 119 48 83 85 89 98 116 110 128 73 106 81 67 121 94 52 92 90 113 107 64 76 37 41 40 145 179 225 156 203 143 201 191 201 173 143 120 125 75 89 68 22 34 7 34 56 35 26 35 4 30 35 30 22 9 39 6 56 0 51 44 29 39 3 15 44 47 38 22 8 31 72 19 13 42 21 55 46 43 35 43 18 47 42 66 28 36 22 44 61 45 52 8 71 80 59 84 72 82 51 6 20 55 19 43 12 97 92 73 63 93 140 160 197 198 175 182 184 211 176 171 179 221 175 158 194 181 113 101 110 89 77 80 63 75 69 37 54 32 20 25 44 0 21 0 44 0 14 0 59 40 37 104 46 126 107 75 74 116 69 53 106 56 27 78 101 77 122 97 60 51 99 75 72 107 118 86 96 71 74 110 80 94 83 103 122 82 112 82 104 105 87 115 55 81 136 110 27 35 73 16 115 200 187 196 201 158 196 184 158 151 187 137 114 139 84 65 81 37 17 19 5 51 19 74 17 67 37 34 43 0 32 10 37 25 51 63 39 23 38 21 4 36 31 55 15 14 44 25 24 13 16 22 19 0 44 49 23 26 41 19 0 84 7 53 32 51 52 49 50 32 63 89 94 103 71 75 48 21 31 10 26 66 77 41 62 55 155 160 149 210 200 203 194 198 195 190 177 191 187 184 209 185 137 156 88 128 86 66 80 67 48 35 43 61 94 75 41 0 9 32 26 37 2 4 20 41 9 36 66 66 72 62 92 91 69 106 95 120 81 94 84 107 120 49 60 113 92 106 69 89 78 107 64 92 123 97 101 80 75 79 92 93 86 102 115 98 75 92 38 69 89 127 10 70 99 59 29 180 183 185 197 182 188 204 172 201 172 131 179 133 94 82 75 41 59 0 41 38 0 31 53 20 51 48 64 23 16 4 19 24 45 47 21 1 31 47 4 19 0 6 17 38 7 26 5 17 39 0 36 21 54 77 26 2 37 62 35 46 38 46 46 22 29 39 68 30 72 80 77 71 71 106 80 69 60 4 68 39 28 45 42 66 140 146 201 160 188 209 221 169 214 201 230 219 158 222 158 183 145 128 122 132 136 120 47 65 41 39 43 13 32 23 46 4 12 17 33 26 8 8 0 24 0 5 40 66 29 91 43 70 79 82 70 81 81 83 84 105 88 110 24 92 46 95 60 87 98 96 129 71 66 89 111 60 70 95 88 138 91 132 98 114 42 104 89 89 79 115 114 79 38 91 17 139 171 183 174 234 199 175 155 195 174 168 176 173 152 94 45 76 67 57 39 23 34 23 57 15 20 62 34 28 16 11 24 50 13 34 47 80 14 70 55 8 68 26 7 5 14 37 10 14 42 29 52 49 24 34 31 35 47 12 37 38 14 14 14 35 51 20 76 27 91 90 83 51 47 59 112 76 40 74 15 88 110 16 76 32 105 116 152 168 169 181 230 219 185 197 191 239 181 176 208 145 140 131 164 131 130 111 89 118 36 97 116 59 0 20 37 12 20 21 12 8 33 1 0 12 13 0 29 51 101 66 45 94 50 103 85 104 88 70 78 64 66 67 109 85 67 60 78 61 109 125 83 107 91 113 130 114 101 92 137 99 105 82 60 119 99 76 80 82 80 90 114 132 64 81 76 107 175 164 212 217 215 210 234 178 161 169 175 146 111 110 94 95 70 58 33 54 91 26 57 45 37 52 27 33 24 41 20 39 10 23 0 22 32 8 22 33 41 25 51 30 8 20 67 4 16 29 0 30 14 26 28 40 42 58 43 32 18 49 17 55 11 34 26 48 27 62 33 80 64 70 92 97 87 63 46 42 74 85 63 38 30 162 142 160 213 175 206 203 203 190 241 202 218 198 188 209 195 196 193 188 137 217 82 81 122 96 77 117 97 16 38 33 44 25 0 20 0 0 0 0 0 0 10 46 23 59 55 82 107 65 74 55 43 65 103 66 104 75 84 57 88 90 121 87 76 120 88 86 79 101 83 81 87 87 72 106 140 100 105 106 117 63 89 85 102 99 109 135 96 34 65 95 175 153 187 193 240 206 227 190 205 151 202 149 149 126 102 73 69 80 58 46 42 19 48 50 24 53 69 33 15 54 79 20 22 48 16 3 24 31 0 1 36 47 41 5 8 20 0 39 0 38 51 8 3 41 31 3 3 40 65 51 19 30 29 20 57 23 34 51 50 49 55 71 79 103 62 63 110 70 75 89 0 11 52 91 35 80 150 164 184 176 201 171 172 227 197 170 209 161 224 211 203 214 189 183 166 208 183 135 106 87 74 84 117 112 71 39 63 0 39 18 21 0 21 33 0 16 11 0 15 0 11 20 74 41 80 75 56 89 99 112 41 66 92 93 120 103 54 108 72 88 97 65 100 79 93 120 100 102 128 121 89 113 119 124 72 88 84 104 55 77 115 109 136 97 48 29 147 151 180 217 181 207 252 180 171 166 186 193 189 146 159 68 63 68 47 26 8 49 36 17 14 33 6 77 23 45 49 8 15 0 15 53 56 38 37 23 30 55 41 37 8 41 24 3 44 19 31 0 32 38 10 61 24 27 55 57 54 83 5 39 35 25 30 0 37 18 26 43 57 60 45 92 57 76 76 43 65 12 51 30 12 24 117 140 221 215 167 208 164 236 212 221 178 185 203 203 201 215 209 201 173 156 155 177 158 112 103 58 74 97 109 82 49 34 52 51 24 18 45 30 8 12 26 18 36 0 46 50 66 29 47 82 69 54 57 109 59 63 83 103 108 88 65 95 56 78 63 97 121 107 129 98 76 75 101 63 126 47 105 97 120 101 79 69 64 103 108 78 148 119 112 35 107 136 194 145 177 211 194 185 180 229 205 150 181 177 116 128 83 55 73 39 33 47 42 0 6 46 32 51 35 22 22 32 35 26 59 26 33 22 55 12 4 29 28 13 52 26 17 8 31 8 28 18 24 3 42 40 16 39 50 54 18 18 19 36 21 13 53 43 1 31 56 15 68 29 53 20 41 78 99 85 79 48 0 15 27 23 87 144 159 200 184 235 238 233 182 194 213 180 173 189 213 225 177 218 198 207 182 168 156 141 156 97 104 70 21 59 28 40 1 21 0 9 8 23 39 35 0 52 51 13 9 31 24 27 55 89 103 72 105 85 43 87 71 45 112 54 80 72 94 114 23 84 69 103 135 108 89 85 84 112 52 78 83 102 99 100 80 74 99 95 74 91 91 110 153 99 100 177 155 183 233 189 179 164 175 188 174 150 180 179 130 137 134 89 95 47 68 35 19 10 29 20 58 42 4 36 52 35 63 56 19 55 0 36 33 0 60 29 35 9 14 3 14 59 0 23 0 43 66 6 24 48 64 34 50 37 40 24 13 45 16 62 12 52 54 39 40 39 0 24 40 0 40 43 77 104 116 62 42 0 30 1 25 93 203 178 166 171 170 226 182 187 192 182 201 164 225 208 190 178 208 177 187 198 187 178 144 129 134 125 78 56 20 5 6 45 27 73 0 0 25 7 0 41 24 30 41 0 0 35 82 81 23 50 60 105 85 57 70 117 103 116 91 105 61 64 103 120 93 61 97 121 111 81 111 102 69 51 75 112 108 81 98 105 79 82 95 138 148 113 132 135 104 104 145 211 187 225 255 170 168 197 191 207 176 173 188 141 110 154 101 109 75 28 27 36 63 8 45 59 34 49 27 53 21 41 40 29 45 15 25 57 43 3 42 38 44 58 37 0 2 39 39 11 0 42 23 0 5 45 44 26 17 43 32 26 41 27 28 37 29 57 73 36 21 36 63 30 0 23 12 38 111 72 34 52 0 22 52 23 143 206 162 102 91 101 71 134 197 198 193 193 207 194 208 202 186 188 199 202 185 179 201 135 156 109 102 63 69 41 24 16 46 40 8 33 56 0 0 44 11 27 12 23 38 26 26 70 55 70 82 95 78 83 85 82 80 109 76 94 113 94 106 92 92 78 88 116 98 84 100 83 98 102 62 105 77 125 98 63 78 142 111 82 117 133 158 121 116 129 200 193 208 222 206 229 232 203 194 187 181 160 145 137 141 154 64 88 58 45 0 66 55 39 40 9 22 73 37 39 56 48 0 50 3 40 40 30 65 0 44 34 27 1 49 68 8 54 50 11 34 4 0 7 66 39 3 44 45 46 39 17 4 11 42 40 18 0 33 41 26 34 53 24 52 4 36 46 67 90 65 59 53 56 84 11 9 180 190 129 185 138 96 113 91 146 181 181 165 204 200 196 199 174 194 196 194 221 182 190 91 139 127 97 69 99 31 32 70 68 4 37 30 2 0 30 10 0 14 0 33 0 38 33 47 72 52 72 103 41 59 69 78 97 77 103 99 120 54 123 83 77 84 99 102 66 67 103 88 90 91 79 95 107 77 84 117 105 88 136 115 111 97 111 125 121 169 208 227 148 146 194 243 171 154 158 193 163 181 173 158 134 121 106 77 89 34 32 34 31 12 7 16 51 30 36 27 7 3 23 29 33 48 32 48 50 24 44 5 10 33 61 47 1 0 64 31 0 43 33 49 46 44 22 28 34 0 13 25 0 45 96 41 57 57 31 40 22 31 90 69 19 34 49 30 23 70 60 50 7 53 28 0 63 161 117 144 181 195 123 70 107 77 124 183 167 169 216 223 168 232 195 206 182 169 178 202 136 97 110 58 107 80 45 36 49 23 40 13 33 42 33 51 37 15 10 0 20 52 25 35 30 64 91 62 55 77 67 96 93 114 120 112 109 127 82 78 79 80 77 94 139 93 61 121 76 79 126 77 107 106 84 107 122 76 112 88 118 134 81 147 126 111 177 167 197 214 175 231 216 227 208 214 164 187 157 155 162 134 133 103 48 47 45 45 19 71 67 24 45 25 33 46 0 25 46 52 1 49 44 13 32 21 21 56 59 51 17 13 10 25 13 40 14 3 19 27 46 27 55 25 52 31 22 12 28 64 20 58 61 69 34 58 38 23 31 50 27 61 35 27 34 26 77 94 60 52 7 32 5 88 128 135 109 30 6 66 64 57 77 111 153 152 168 183 196 187 219 176 234 168 180 215 200 146 104 133 97 113 59 54 31 41 8 41 22 19 14 6 32 56 54 64 18 43 41 46 11 63 92 96 120 88 72 33 80 22 88 96 71 97 70 109 57 86 91 71 114 106 89 88 84 79 98 87 143 131 89 116 106 95 100 118 140 96 115 110 96 139 163 189 200 173 170 210 202 215 202 189 149 191 175 183 146 107 172 154 90 76 48 19 55 48 74 58 39 0 41 42 27 30 53 0 72 10 49 31 41 2 35 46 8 4 8 40 1 0 7 10 26 10 8 13 33 24 7 16 41 53 17 4 56 56 34 26 12 21 26 21 18 27 39 71 43 73 41 24 43 54 8 35 101 71 84 75 20 32 100 134 96 147 46 0 3 30 55 44 124 161 133 164 185 177 196 145 162 116 136 132 124 175 160 141 125 79 101 91 25 45 0 8 9 30 0 3 0 31 34 30 20 0 20 0 24 41 31 88 51 46 75 32 52 43 114 82 59 116 97 88 83 99 107 92 64 72 84 112 73 117 78 117 113 60 93 99 147 101 93 111 96 131 167 98 109 153 150 189 177 176 163 208 204 207 159 199 241 212 143 186 148 140 147 112 93 69 97 12 48 30 37 9 33 29 31 37 54 50 20 0 20 44 18 33 67 25 42 17 19 0 23 56 12 39 32 50 64 32 42 30 11 9 0 26 41 0 54 43 20 41 36 17 11 23 14 53 53 44 25 21 40 33 61 35 47 8 42 30 53 89 61 24 53 19 40 164 173 136 159 28 43 49 85 18 67 116 181 193 189 147 156 139 85 53 74 41 52 50 91 139 141 102 113 84 39 56 40 28 26 41 11 0 0 23 56 0 0 21 12 24 36 43 26 48 37 41 31 82 55 62 84 96 71 108 81 87 96 126 95 105 49 86 93 73 91 113 103 102 88 78 85 116 82 93 129 128 84 109 132 133 118 187 127 141 159 171 193 148 199 203 207 213 202 210 173 168 197 156 164 149 131 128 100 65 48 35 55 35 45 6 72 75 52 18 41 0 61 24 51 40 37 41 44 55 38 30 40 6 35 38 0 78 31 24 28 42 44 20 40 10 21 44 7 69 18 13 34 64 13 71 64 0 38 53 11 21 46 52 64 12 25 39 0 21 61 84 36 43 25 32 31 34 167 221 183 199 176 91 93 46 33 100 191 200 191 180 172 102 76 66 11 25 54 46 99 78 89 107 87 19 72 70 24 61 17 7 24 8 21 0 5 12 0 1 27 2 24 52 26 5 61 33 43 66 33 92 61 107 65 120 63 106 70 119 67 91 76 73 75 65 108 116 101 106 113 83 114 87 102 152 113 112 105 123 113 114 134 126 131 144 135 218 180 182 194 212 193 220 214 220 206 185 155 189 154 164 152 85 99 116 57 58 43 80 19 26 5 18 72 58 9 45 22 15 46 6 43 21 43 18 17 12 27 48 23 9 28 17 21 1 17 11 17 29 0 21 47 24 48 11 35 42 31 45 89 26 21 15 47 24 75 17 26 75 75 30 42 56 59 20 23 33 59 29 10 23 0 47 69 205 173 135 167 129 161 80 82 91 181 160 213 224 187 104 60 78 34 76 152 165 79 46 78 96 46 60 77 105 38 29 41 90 22 23 25 43 29 42 23 38 43 52 16 0 7 0 36 69 25 53 38 52 98 72 62 78 104 104 97 82 79 81 72 80 62 104 107 127 87 82 92 51 73 110 113 100 99 98 95 120 106 130 103 149 128 162 140 176 223 215 241 193 239 221 178 197 222 219 203 201 148 142 179 116 112 100 70 82 91 26 43 29 65 62 66 42 69 15 51 23 50 45 42 70 60 48 0 29 12 52 24 0 34 56 57 22 36 30 33 41 24 22 30 46 0 33 31 47 5 38 0 27 0 0 2 40 21 52 25 54 7 12 33 30 14 33 23 15 10 98 65 6 29 21 52 122 175 215 216 145 178 183 148 169 180 205 190 209 237 201 71 65 44 62 20 2 6 75 42 31 66 58 32 68 21 100 74 52 45 98 28 27 4 4 33 31 19 45 0 0 36 3 25 36 36 79 63 38 71 74 65 99 73 65 108 79 101 65 107 96 87 125 90 102 137 115 92 126 119 109 75 81 74 90 89 89 121 123 143 176 146 120 116 92 215 175 197 179 202 255 195 228 204 188 206 182 156 109 156 160 138 137 56 104 58 82 66 50 29 32 76 36 46 49 39 42 82 67 43 23 33 48 49 40 47 6 31 16 8 57 2 56 16 55 19 4 37 16 14 10 7 19 43 17 39 21 20 26 23 4 11 11 56 47 19 20 24 14 20 22 59 18 43 23 6 55 16 24 60 46 57 9 144 171 173 173 200 238 204 171 202 171 201 171 208 170 130 80 56 71 76 33 0 0 35 12 12 41 46 32 36 75 44 66 39 0 25 44 1 8 19 11 10 9 18 19 0 14 35 0 54 41 67 72 78 82 102 72 84 91 79 97 84 98 112 65 118 55 87 107 109 122 95 80 107 103 76 76 78 77 105 121 76 29 109 132 137 118 113 134 154 163 176 207 241 197 172 199 184 235 167 198 165 179 174 171 127 134 134 128 92 64 60 35 57 9 40 57 14 13 39 13 100 20 29 19 48 32 38 39 16 40 34 15 53 33 33 40 47 8 25 48 5 0 31 24 42 38 53 55 6 0 40 29 5 45 34 31 5 41 56 0 17 4 54 16 35 84 50 0 48 8 55 33 11 85 19 34 7 204 170 191 211 166 168 190 200 207 205 217 214 139 146 48 92 63 72 99 58 15 21 44 50 24 0 50 65 50 32 59 43 32 9 0 17 53 16 15 6 0 33 40 34 48 2 45 0 21 64 101 74 53 83 112 126 86 108 95 52 72 78 72 79 39 111 71 61 113 106 95 133 95 69 102 103 97 81 83 99 104 144 122 134 131 143 139 153 192 218 182 235 210 237 197 229 166 228 182 198 187 179 176 120 112 119 107 93 138 99 40 50 36 81 39 27 7 33 39 0 9 18 26 26 36 31 11 3 56 42 28 22 28 22 0 43 1 38 29 62 31 37 40 21 45 39 14 27 78 58 21 16 12 41 27 38 36 7 10 35 43 58 71 36 47 36 53 10 11 59 46 31 16 51 62 14 48 195 199 174 196 190 191 183 193 176 144 188 153 183 144 131 111 96 129 114 72 74 104 69 27 42 0 29 60 47 41 36 45 25 51 36 55 2 12 27 35 7 53 32 2 7 0 4 55 38 66 49 100 80 111 87 117 102 95 106 81 119 72 91 57 82 106 82 75 91 85 106 122 104 92 114 98 100 76 127 122 134 121 147 111 161 145 139 146 159 205 193 213 210 223 169 170 194 207 202 187 157 141 153 154 114 145 129 91 65 69 56 51 69 69 21 50 75 54 48 60 29 44 38 27 0 42 0 14 4 9 63 22 36 19 37 45 83 42 0 12 38 23 71 60 25 34 61 2 33 43 48 69 43 21 29 42 54 37 29 16 26 60 26 63 29 49 30 38 66 28 26 60 23 35 40 44 35 192 179 170 183 246 203 167 193 161 199 143 176 170 119 70 127 119 151 150 94 96 61 87 47 51 52 50 62 54 50 39 29 0 55 16 0 17 11 26 19 35 0 31 0 7 25 34 65 76 70 70 99 79 90 94 97 75 77 133 103 109 76 92 97 90 92 85 84 128 127 84 81 114 108 118 95 80 99 141 76 129 175 109 128 234 127 159 122 165 176 174 212 210 202 207 198 165 225 195 187 162 170 151 142 88 152 93 111 84 74 90 91 51 25 50 25 3 87 2 38 33 49 60 37 50 29 30 42 41 24 31 27 67 34 32 45 57 4 28 46 51 20 16 7 7 52 43 38 6 33 1 42 36 9 28 12 25 24 55 31 43 28 91 53 0 63 36 36 0 33 51 27 47 41 64 9 59 151 179 197 168 206 135 192 149 182 156 168 149 168 60 90 100 164 188 169 198 174 147 122 141 84 35 104 17 78 23 52 27 8 44 14 47 10 41 37 5 13 33 57 36 41 0 0 34 61 72 103 79 115 96 118 127 114 59 103 85 80 99 130 89 111 92 94 92 95 105 80 108 117 137 99 116 122 132 105 111 133 91 152 148 139 150 163 132 194 192 252 220 163 229 186 198 152 163 194 194 130 171 150 133 133 150 128 134 68 66 27 59 48 50 6 46 0 44 20 46 21 59 58 17 47 47 16 29 31 34 54 79 46 64 0 12 8 30 38 17 19 28 24 22 37 3 64 10 0 46 0 5 34 34 47 26 30 6 3 46 33 10 27 41 30 27 38 32 15 34 26 3 35 46 4 6 55 157 153 125 176 179 167 131 181 168 178 197 203 129 91 171 167 221 202 162 174 157 160 164 104 97 90 35 14 28 13 38 26 18 25 47 16 19 29 51 0 29 0 26 26 12 9 0 34 60 106 94 106 74 47 125 104 115 118 96 102 99 91 93 67 98 87 131 105 66 113 103 92 123 101 79 127 116 77 127 76 111 130 112 125 171 160 181 99 165 211 202 240 182 187 193 160 193 173 203 176 155 108 122 157 111 103 89 112 70 63 99 59 25 68 48 37 31 43 64 44 27 21 46 32 29 30 44 28 39 42 22 58 60 19 30 59 37 41 19 59 43 49 41 5 30 11 30 37 19 54 15 43 71 23 45 50 35 58 22 59 42 48 31 53 6 0 65 8 53 46 39 8 2 56 2 82 112 128 141 134 159 175 159 158 154 165 186 169 179 93 57 112 143 214 157 164 186 142 158 145 151 104 63 65 58 51 57 18 35 10 28 20 19 0 25 20 7 6 24 0 45 27 11 25 15 50 37 94 110 110 106 83 77 91 103 124 152 70 97 104 84 97 109 74 98 88 104 123 130 99 93 105 110 112 92 73 98 157 125 110 152 127 164 128 135 185 194 204 223 187 225 195 203 172 217 192 191 154 159 112 159 119 93 103 93 87 103 95 69 33 59 54 28 50 29 24 39 26 51 52 34 52 73 11 34 39 36 66 37 79 34 28 45 32 52 57 41 87 115 69 30 35 47 14 10 69 47 39 22 49 11 44 95 41 17 33 42 29 53 28 18 29 22 80 53 27 54 13 20 26 22 33 2 120 165 190 155 175 185 140 104 88 131 173 134 188 116 95 64 185 179 189 148 172 157 185 148 125 137 86 70 44 40 51 32 0 17 0 17 0 5 51 7 18 70 37 16 0 45 20 10 0 30 46 82 100 79 120 135 103 77 101 109 87 116 117 97 108 97 68 109 56 98 94 82 111 132 152 91 116 132 83 105 99 152 144 116 180 155 146 120 107 203 182 217 224 186 150 221 184 182 176 170 169 169 170 119 130 127 151 109 84 134 79 58 45 25 16 31 48 19 25 9 31 59 32 23 34 49 10 0 32 34 0 31 37 41 21 34 78 60 47 93 56 98 100 92 140 49 28 19 53 45 38 27 70 23 55 43 17 50 0 48 26 51 48 0 43 83 75 91 98 31 47 31 16 22 18 11 28 106 175 194 181 172 133 131 181 84 33 115 115 104 21 60 108 174 183 190 178 139 151 156 144 106 97 88 79 27 49 43 54 26 22 2 15 8 16 0 31 6 27 10 26 48 23 21 30 12 104 74 91 77 87 98 103 118 101 127 95 99 97 104 96 97 96 91 125 100 83 134 116 136 116 101 133 129 131 91 133 98 143 117 185 158 172 107 153 127 136 198 187 216 226 196 193 203 212 168 179 181 132 150 159 132 145 108 98 59 100 62 103 73 23 25 30 25 43 4 35 43 0 31 44 23 65 41 8 28 57 49 33 52 49 73 20 89 46 52 76 121 105 108 84 84 109 92 87 89 28 24 20 38 48 62 20 69 15 40 4 51 55 62 10 46 23 59 82 58 35 64 83 72 23 21 7 0 89 178 174 148 159 174 140 157 168 139 104 74 66 87 96 48 126 181 117 147 135 138 140 87 116 76 52 88 22 31 14 27 9 15 1 27 6 0 8 18 13 33 20 9 32 38 0 39 10 80 128 39 95 101 72 87 91 132 97 134 98 66 112 128 102 114 107 134 123 52 112 126 148 76 96 160 118 96 124 120 121 154 113 120 173 152 156 168 92 141 189 207 164 207 175 198 154 202 167 222 179 134 151 128 149 125 76 76 80 64 71 52 42 20 30 34 13 23 42 27 45 47 75 34 14 53 22 51 46 82 66 71 66 53 31 79 69 42 106 123 103 114 103 113 99 108 123 116 76 49 64 13 22 32 46 44 40 17 13 43 93 43 41 0 29 57 63 0 11 22 53 16 52 26 0 28 66 66 159 147 172 153 157 160 202 199 185 142 100 51 22 62 56 134 144 104 135 117 128 140 110 116 90 37 15 21 22 42 26 7 62 20 0 21 25 24 0 0 18 0 0 43 9 21 35 30 52 111 42 85 121 87 79 117 106 123 116 105 71 77 108 103 129 55 92 58 111 150 127 90 108 91 146 114 122 101 85 133 105 148 147 190 126 165 122 116 103 163 230 196 183 187 189 172 195 140 188 183 167 123 133 114 75 125 106 125 104 81 82 54 47 9 58 39 23 14 80 36 52 74 74 67 67 85 19 84 66 62 58 75 66 28 33 84 79 100 140 71 152 144 99 143 135 97 109 155 108 156 136 29 33 62 20 11 28 13 13 13 50 33 44 17 15 66 25 61 115 32 56 26 27 63 12 57 106 175 147 146 135 117 161 158 215 206 157 142 60 10 36 46 104 137 149 145 137 82 138 109 85 100 76 73 22 26 65 10 23 33 42 45 3 0 36 9 0 39 16 55 55 13 6 50 45 62 119 96 112 125 99 107 86 126 98 104 120 82 119 102 99 102 102 136 102 103 114 130 145 140 112 123 122 126 101 107 183 137 161 134 170 150 118 167 91 96 172 237 148 200 192 166 170 171 187 163 158 107 143 132 152 113 118 60 98 104 81 57 38 39 77 0 43 59 82 21 63 82 85 69 42 58 40 60 90 84 82 118 110 60 106 174 75 80 84 129 137 113 127 130 147 104 98 103 139 155 173 154 168 140 137 99 79 59 39 71 13 14 38 0 33 50 58 26 93 103 120 49 51 49 50 43 109 137 167 149 132 134 83 83 88 106 144 165 113 86 0 39 65 85 104 146 137 80 121 94 64 105 38 64 44 63 38 0 40 27 18 33 22 20 0 58 23 21 33 5 0 28 44 35 48 39 83 70 99 125 135 144 128 125 128 123 138 101 110 115 144 63 73 68 128 94 86 122 133 93 105 127 163 107 134 99 106 116 114 165 140 169 162 153 142 95 123 178 160 189 181 187 181 194 201 176 184 154 147 157 131 91 115 102 99 68 118 128 76 18 69 38 98 57 66 43 78 50 76 50 68 62 76 29 131 74 142 109 87 119 77 97 101 64 100 145 92 91 145 115 104 102 114 122 137 153 186 167 170 190 154 143 125 116 66 80 11 25 84 35 14 43 54 68 42 44 112 114 42 106 20 81 134 159 166 142 153 151 128 168 39 14 16 93 56 120 64 73 70 74 68 116 104 73 126 105 43 73 64 52 72 98 48 15 35 22 0 0 23 20 13 8 14 42 24 9 5 0 24 58 23 56 102 63 113 89 142 149 75 101 131 93 135 110 125 108 90 123 119 135 78 141 123 128 128 134 111 145 129 128 144 144 114 103 129 149 145 125 155 130 152 140 96 94 114 197 204 155 158 154 204 136 183 130 143 138 113 163 113 104 127 96 100 31 68 35 31 63 51 1 3 0 71 32 89 69 68 64 81 73 71 109 97 66 106 107 120 97 90 103 109 71 81 137 132 114 115 84 100 143 103 126 158 200 144 201 174 149 180 162 170 108 119 90 26 24 47 70 53 90 53 17 29 109 38 47 68 68 74 168 196 175 145 185 154 173 177 144 187 45 42 0 50 32 46 75 42 78 61 99 57 68 118 57 51 64 55 92 23 49 57 27 43 16 12 29 7 4 19 14 33 52 37 36 0 70 9 34 25 90 76 84 141 77 119 104 123 103 91 152 130 134 125 159 122 96 74 138 104 100 108 128 107 104 125 136 113 105 76 134 98 150 150 196 127 146 131 137 130 124 121 125 113 137 171 207 197 152 171 187 151 132 112 99 159 108 97 114 92 108 104 94 101 32 26 55 14 15 59 94 89 114 71 121 70 31 71 37 72 71 93 100 93 129 90 120 59 122 102 157 137 127 121 28 139 134 132 157 117 134 173 196 192 190 174 164 206 209 119 172 177 164 139 136 129 157 133 92 82 56 132 20 56 55 47 138 195 198 196 210 150 174 151 208 176 163 146 112 72 10 13 26 65 54 71 65 52 49 55 50 68 68 73 49 62 51 47 44 34 46 20 33 9 18 25 0 15 39 2 16 72 22 84 40 76 80 75 113 105 98 80 102 125 101 82 125 114 113 125 108 97 122 78 116 123 95 107 83 113 123 117 90 130 100 148 94 119 146 171 151 136 113 172 122 140 131 95 86 111 120 182 194 144 151 175 180 107 144 174 138 81 106 111 86 119 98 114 90 50 49 31 62 4 67 71 97 33 74 43 68 73 73 95 74 86 125 110 121 157 120 68 98 96 113 97 112 105 114 114 54 149 124 118 105 81 119 167 188 173 171 192 174 197 173 204 237 169 190 180 184 210 162 152 188 187 181 148 83 109 118 130 135 199 201 217 204 176 147 149 181 187 194 127 62 61 61 64 50 21 46 79 59 36 45 30 19 48 37 74 43 87 75 48 60 59 49 47 0 19 0 39 0 47 34 19 58 11 9 64 72 92 68 77 113 120 70 101 138 131 62 104 146 80 92 120 112 93 109 121 90 138 134 104 102 81 132 146 132 91 124 120 118 130 105 125 151 151 190 172 141 153 133 94 91 70 81 108 152 146 181 179 167 162 146 124 162 77 75 99 89 82 81 64 48 85 76 65 56 26 60 71 95 80 51 78 98 87 31 47 76 65 101 51 99 117 117 106 99 157 78 106 94 177 166 111 93 69 100 110 142 141 107 158 152 192 199 188 170 204 222 182 199 155 189 196 231 203 157 203 199 173 207 185 175 114 159 140 127 166 184 193 222 209 180 166 177 191 223 220 119 107 40 60 30 71 79 95 84 29 51 62 96 37 58 65 84 25 33 77 45 46 26 55 70 17 19 12 0 19 41 40 32 0 21 9 23 87 103 119 116 89 93 106 95 77 106 104 135 114 101 92 126 154 117 114 78 90 80 96 129 97 94 135 97 132 108 129 134 114 124 88 116 171 165 160 169 166 145 148 122 87 82 115 99 108 122 154 133 138 167 129 150 125 137 83 86 118 103 100 100 87 108 80 48 113 41 75 82 71 61 50 61 91 109 126 89 97 84 114 124 94 111 157 122 113 111 90 107 107 165 104 139 108 124 60 86 105 145 116 99 127 190 198 190 175 178 212 209 178 169 211 213 161 184 204 204 168 197 194 169 234 180 180 175 181 155 174 175 206 223 217 180 156 159 118 185 220 139 41 14 77 77 56 70 54 52 41 28 31 44 53 62 50 96 33 59 73 59 32 32 42 16 10 0 35 14 1 0 5 0 4 37 22 77 101 112 121 113 100 94 83 157 116 95 119 127 89 119 91 89 131 92 96 105 77 123 104 119 127 147 141 150 140 144 98 137 133 121 130 159 134 150 185 154 158 138 134 102 85 72 120 140 85 140 111 125 123 123 110 137 145 138 62 73 49 124 72 106 87 87 95 60 84 79 66 77 59 91 91 112 57 74 114 103 95 115 100 76 96 89 131 167 145 111 116 157 130 99 135 109 71 110 96 122 139 110 126 127 209 187 224 198 212 213 205 208 173 198 216 196 251 176 242 192 215 187 203 172 175 209 190 194 197 146 227 198 218 231 204 200 156 199 211 243 214 145 35 63 74 54 58 42 44 100 41 53 30 52 40 30 42 78 33 18 36 55 46 16 24 0 13 8 24 32 0 28 0 18 34 47 135 102 77 125 115 122 84 99 109 105 106 85 130 130 56 113 116 86 84 146 126 113 116 112 117 116 135 128 111 153 114 138 139 122 161 123 170 118 178 112 145 131 138 84 61 77 109 58 91 128 123 138 125 151 129 103 91 111 123 147 110 86 143 61 99 104 80 76 76 86 66 101 80 77 85 71 63 54 71 98 94 102 113 138 137 119 134 126 169 111 125 136 122 100 147 147 110 52 81 121 144 161 121 105 139 164 193 194 204 193 178 186 205 224 195 177 195 243 219 217 151 205 216 235 167 145 218 212 197 203 188 241 242 199 188 195 159 189 161 190 161 160 140 123 73 50 78 113 40 79 72 46 47 75 71 36 76 28 29 22 15 6 25 37 15 8 0 28 1 0 33 8 0 4 13 30 71 79 99 88 112 133 103 111 162 107 70 91 115 98 122 124 108 116 127 153 110 118 130 136 160 117 104 119 92 135 146 124 130 126 119 125 71 140 134 147 155 128 148 167 83 74 70 79 113 89 83 113 115 123 128 147 141 116 111 132 102 104 71 137 79 68 104 84 96 101 72 74 93 93 54 71 94 94 97 84 148 122 118 84 153 133 96 144 99 166 85 132 130 78 122 157 119 47 79 130 96 120 131 115 138 146 172 198 215 201 208 195 221 173 165 204 210 223 202 188 180 237 217 224 216 203 172 188 216 209 179 219 242 179 201 181 202 162 142 190 165 215 183 146 121 81 91 60 74 60 18 45 64 84 74 53 68 74 0 55 0 1 4 6 5 33 12 0 0 0 13 42 32 60 44 43 69 94 83 123 90 97 104 91 74 128 97 81 75 127 120 121 126 138 115 128 109 97 136 114 105 114 124 120 128 94 149 103 119 86 136 152 129 106 129 141 136 103 199 182 128 87 55 51 108 50 108 162 79 134 114 96 153 122 121 137 97 116 138 77 83 57 94 74 112 94 92 73 99 92 107 73 70 46 77 108 108 74 114 134 106 98 88 77 110 100 114 130 139 113 121 141 126 136 91 81 119 108 122 84 113 139 161 165 230 191 172 156 213 177 219 225 169 203 215 212 199 204 225 206 185 215 219 206 191 181 185 199 221 222 197 191 172 161 203 194 110 155 161 134 136 74 101 90 77 87 73 62 70 59 27 73 66 57 28 33 29 4 67 4 26 28 0 0 30 22 0 22 48 37 41 25 54 77 87 80 87 101 118 124 78 87 125 110 119 123 106 120 125 141 121 102 106 126 113 139 118 133 119 126 138 143 123 114 112 103 138 108 126 140 100 127 118 146 132 168 162 140 56 63 92 120 55 98 79 92 106 100 124 103 104 134 108 118 100 98 96 53 74 99 77 91 61 65 105 71 103 115 65 119 88 73 66 121 119 74 69 127 130 114 119 120 181 142 115 150 155 131 132 164 94 111 95 120 128 117 129 92 150 132 127 181 185 224 202 178 219 171 190 193 201 239 183 213 200 202 208 189 169 200 174 222 185 214 175 178 236 231 190 211 218 159 189 146 112 129 108 73 84 91 99 60 56 62 90 83 54 68 29 59 57 35 10 32 27 31 0 16 39 24 0 14 16 31 28 43 101 109 27 63 101 79 81 129 76 94 105 112 107 95 136 102 131 64 105 99 90 130 127 92 100 110 119 141 125 109 95 140 108 137 147 144 96 150 153 108 116 144 126 124 110 144 145 124 140 50 54 102 89 95 64 110 91 122 83 74 80 114 87 146 108 81 91 78 110 117 76 99 79 65 96 43 92 87 60 122 115 83 54 76 118 97 120 82 100 108 110 99 121 148 113 160 127 135 147 115 136 124 106 120 112 152 89 144 95 111 141 161 143 197 235 224 149 180 206 229 198 220 177 244 175 201 198 229 202 188 202 206 195 192 202 223 214 223 204 180 178 202 161 215 196 198 88 106 63 77 82 94 130 90 71 114 48 42 90 34 21 42 31 0 5 3 9 19 24 0 26 53 17 30 41 38 50 64 66 71 120 107 141 93 118 117 121 72 127 115 94 101 104 101 105 79 97 94 92 92 145 137 121 145 111 134 157 143 126 149 141 113 144 107 117 112 138 148 135 113 138 134 133 170 140 158 65 59 72 85 68 81 95 132 56 87 57 81 117 91 104 89 74 89 117 75 108 89 84 113 52 64 126 143 69 11 68 113 74 76 94 91 159 99 96 75 112 91 136 145 116 116 101 123 121 111 146 138 94 88 102 88 112 105 127 100 127 141 131 131 219 209 192 171 230 201 211 202 200 233 251 240 204 227 178 227 204 202 226 160 210 189 212 167 185 187 206 255 193 193 197 198 190 200 123 61 166 87 86 110 76 61 76 39 28 33 63 22 61 45 24 28 0 12 20 7 7 7 54 9 49 62 10 37 120 113 111 85 100 72 141 118 104 89 114 118 93 109 127 80 83 114 97 134 119 81 118 158 110 96 81 118 132 143 120 103 109 132 105 126 96 91 111 110 124 115 112 109 117 105 153 163 100 64 69 120 39 110 71 88 86 116 89 110 105 41 54 84 100 101 82 80 63 73 96 70 101 91 71 57 58 94 90 37 60 103 98 132 78 88 102 112 108 93 131 138 117 82 115 121 134 137 154 102 127 101 79 95 95 102 83 87 91 131 117 133 143 207 216 186 170 217 219 199 164 179 224 201 184 235 179 211 224 230 167 233 203 208 213 198 188 193 219 217 165 188 189 221 211 190 202 205 192 110 33 27 59 28 59 8 14 26 23 45 25 17 42 25 3 12 9 19 43 25 12 48 0 0 35 25 30 95 94 99 112 95 118 126 115 76 101 121 95 105 86 113 129 97 108 86 116 156 93 105 101 95 64 131 125 144 118 79 95 152 115 83 106 163 108 172 128 105 140 120 134 133 102 137 171 102 53 87 65 126 49 76 113 114 97 99 133 105 109 90 78 86 126 72 52 66 71 66 65 55 98 44 106 61 85 108 111 47 90 112 128 109 123 101 86 125 89 77 151 154 80 134 150 131 155 133 96 106 99 90 141 140 144 95 109 104 121 100 137 162 178 208 190 199 185 221 199 200 222 197 190 177 174 224 255 243 197 242 218 198 186 199 201 201 211 204 242 248 163 218 180 218 166 218 209 138 169 124 81 43 45 68 50 83 29 47 49 24 22 19 3 0 0 0 21 41 11 13 0 18 16 0 24 80 101 115 116 119 109 112 77 99 60 78 132 50 85 93 81 135 75 106 114 92 126 107 100 99 67 153 112 112 114 133 94 103 168 135 149 118 107 103 96 107 102 134 129 112 121 123 120 121 65 78 70 83 69 105 84 90 101 108 153 133 80 111 71 75 87 75 85 108 55 67 69 96 65 70 54 134 93 52 81 62 60 91 87 80 105 98 95 101 73 91 127 135 103 104 133 128 109 109 79 112 72 119 82 82 90 125 150 118 146 84 118 111 102 151 143 184 192 226 166 215 236 227 207 196 178 181 195 227 241 239 224 214 208 204 216 192 202 179 218 228 182 216 200 172 189 185 199 177 157 147 176 141 61 76 57 82 56 45 46 48 12 41 0 20 45 13 49 0 37 2 19 0 0 22 49 16 37 82 73 104 123 84 108 26 52 87 95 62 101 70 89 110 92 87 83 106 124 90 91 133 100 110 86 104 118 106 119 100 136 116 145 139 123 123 106 130 103 101 74 130 140 113 120 160 131 120 29 49 74 94 56 74 113 80 104 83 92 121 133 101 109 113 109 58 109 113 88 116 89 69 69 67 109 81 80 70 82 84 101 89 64 115 96 101 125 95 104 133 133 100 117 102 126 128 147 130 104 66 126 134 130 126 127 140 122 98 114 134 176 148 150 193 201 201 206 214 198 220 211 180 187 209 242 190 206 232 198 241 202 180 198 244 193 201 207 182 190 212 217 218 214 196 196 229 212 198 130 142 107 106 105 41 99 36 35 24 39 15 22 1 14 9 7 29 21 17 0 2 39 13 16 37 62 118 50 63 127 123 108 78 92 90 130 94 137 93 73 95 82 85 88 98 96 66 105 100 128 122 67 150 128 98 121 89 97 127 127 112 131 109 140 125 103 105 131 140 86 107 156 119 108 150 96 105 44 96 69 67 65 62 96 45 117 68 101 82 93 81 120 83 102 84 62 94 64 77 76 63 80 100 76 88 87 82 76 80 79 82 127 97 109 140 155 123 117 115 101 135 114 95 135 176 118 135 121 108 113 109 102 106 137 103 115 101 69 90 129 127 142 195 162 202 185 212 223 192 211 255 196 206 196 162 207 210 172 202 198 198 181 211 184 182 232 194 210 212 235 168 204 176 170 162 161 154 116 117 126 82 82 86 38 55 37 42 9 30 43 28 30 0 15 0 2 35 41 41 67 99 136 87 60 89 80 78 145 78 76 73 96 78 95 81 117 99 107 65 114 138 98 82 107 84 77 102 125 98 78 73 104 120 111 100 93 144 101 123 113 122 120 154 94 122 114 124 147 140 92 91 113 91 46 77 62 41 73 45 68 77 67 101 92 72 79 76 66 96 76 105 107 91 87 104 78 99 93 71 75 88 47 106 63 60 85 104 110 91 86 79 104 100 146 130 96 112 147 140 134 112 116 79 127 96 111 114 120 126 85 121 123 111 98 80 142 129 126 130 159 178 183 247 184 185 192 204 176 223 220 195 218 188 188 214 194 228 208 219 176 208 182 192 199 200 198 194 196 200 175 184 166 161 139 115 78 67 80 83 68 36 74 37 0 22 26 45 17 9 0 39 7 54 21 58 46 55 61 81 103 119 80 76 106 123 75 46 82 59 85 142 93 83 103 73 70 66 98 86 105 88 102 97 113 105 101 100 115 113 102 108 86 113 148 102 126 167 110 141 137 93 117 131 129 91 147 93 129 142 78 55 76 53 39 56 67 48 64 76 93 83 70 70 28 96 64 89 60 65 48 89 72 71 95 89 100 80 106 56 48 105 81 39 92 110 73 49 73 90 100 136 96 68 98 121 87 120 98 116 96 106 101 99 119 120 122 125 143 103 92 129 69 136 137 149 126 152 208 212 206 191 230 198 208 243 181 192 210 208 181 222 235 188 194 203 209 177 175 214 218 212 185 186 187 203 184 184 158 188 157 127 125 71 75 116 57 78 38 33 0 11 25 2 0 30 40 19 28 25 67 46 36 75 28 69 93 94 81 74 105 141 102 129 119 105 104 121 108 87 106 116 124 81 86 65 81 117 78 87 102 82 111 110 96 103 102 99 113 105 122 118 131 117 159 108 114 139 101 150 118 138 133 102 164 154 163 26 95 65 83 64 100 44 61 43 21 62 62 91 68 94 92 49 97 81 61 74 67 68 81 82 63 113 36 76 100 84 111 76 90 88 82 91 99 112 100 120 99 110 99 135 110 92 107 70 103 94 91 100 102 69 105 113 167 106 128 114 145 109 128 133 156 123 181 159 201 202 189 189 214 234 179 222 211 211 212 200 179 204 216 202 181 200 200 187 236 229 229 183 208 208 184 207 177 167 168 134 114 122 124 102 77 56 83 29 62 52 0 27 23 50 4 19 10 51 44 44 73 78 83 58 62 92 98 150 103 95 89 85 110 90 126 115 116 87 129 115 113 98 128 144 106 112 98 113 105 112 118 124 81 125 130 124 120 134 127 124 115 174 119 107 134 136 124 126 95 107 73 117 131 130 141 118 54 87 88 48 90 77 26 62 40 56 12 69 72 70 66 25 83 70 82 66 84 67 79 53 80 91 100 71 99 83 93 73 63 62 89 105 58 93 113 126 85 72 105 117 89 135 116 165 75 114 119 132 118 113 113 62 112 168 128 88 111 120 125 85 149 104 148 150 124 179 191 222 214 244 253 234 179 188 232 186 196 189 193 192 155 203 172 192 196 141 227 174 210 200 214 170 195 168 160 143 165 137 127 89 82 132 65 37 58 40 7 21 18 11 13 21 0 51 41 47 54 124 55 48 80 11 86 79 113 121 115 96 83 124 120 117 155 144 109 105 106 130 154 131 108 110 137 132 85 116 138 123 100 128 79 84 114 124 125 133 123 133 142 142 145 108 77 112 138 100 119 82 135 140 111 143 104 60 56 85 50 74 57 53 52 44 33 68 71 65 59 49 49 36 45 74 58 97 90 120 67 62 72 57 84 96 95 52 96 116 84 91 104 103 81 81 133 98 87 71 106 115 132 89 111 89 137 81 157 114 143 101 116 113 156 107 136 108 92 153 118 144 131 177 164 124 167 185 192 196 244 206 216 194 198 245 169 203 161 228 240 243 188 193 188 188 211 198 177 143 175 177 202 183 198 163 161 119 133 87 106 86 67 86 38 27 57 5 27 10 31 26 30 18 41 68 37 34 45 16 80 47 36 47 81 97 137 108 118 94 99 114 134 148 102 111 118 141 68 117 133 145 79 107 85 168 126 115 108 121 89 90 128 120 134 87 110 96 137 127 108 138 102 124 118 139 143 123 109 81 122 116 130 71 24 56 103 52 65 91 81 62 56 63 68 46 50 64 33 30 49 12 25 74 39 38 67 35 89 71 105 100 68 102 97 72 53 61 77 80 95 73 119 90 104 93 100 121 120 115 91 130 128 81 114 102 119 59 25 92 116 129 126 155 83 106 128 123 141 114 145 120 138 138 135 162 204 190 195 206 205 193 179 169 177 204 229 188 205 194 196 192 186 182 220 179 161 173 179 177 162 136 188 169 118 124 97 98 70 110 68 96 66 24 41 1 7 27 20 9 0 21 34 29 58 17 71 46 33 60 13 73 67 94 126 105 108 122 128 100 101 137 137 122 125 99 177 127 103 136 125 116 112 92 69 96 80 85 110 111 128 140 119 106 80 144 120 125 120 133 113 123 106 106 133 100 132 109 111 102 75 61 67 40 51 34 20 59 69 103 53 59 70 10 73 63 56 59 35 45 69 23 35 24 39 64 73 30 22 62 86 99 47 96 114 72 76 82 108 76 129 99 63 102 101 114 142 137 87 125 126 88 119 75 90 91 89 96 118 94 154 113 125 96 123 151 167 123 138 164 158 190 185 155 148 179 184 196 190 203 184 201 164 232 215 160 177 186 205 197 197 181 179 133 140 137 166 195 159 175 146 138 128 113 71 109 99 130 46 17 0 14 24 32 8 1 57 13 11 43 51 21 52 47 23 65 26 2 15 60 104 93 112 91 108 100 136 108 136 112 113 140 116 130 118 100 129 49 99 149 94 103 132 118 81 116 132 141 88 137 117 125 103 157 125 142 109 127 88 135 137 107 111 119 108 152 105 74 40 65 34 43 32 73 58 45 69 72 53 69 32 48 76 105 16 48 39 40 63 80 17 38 69 59 22 67 33 43 29 61 72 28 36 98 76 78 74 65 129 83 91 105 112 138 105 123 109 131 121 106 98 76 86 166 124 122 128 138 152 109 148 167 152 139 125 143 139 162 152 152 191 185 174 218 204 222 221 206 158 219 149 194 184 193 166 192 227 149 171 172 153 168 113 142 167 119 148 136 147 84 128 96 153 99 85 29 45 17 36 29 6 21 0 39 37 46 22 13 51 0 46 45 47 27 9 26 33 59 115 122 99 90 134 105 161 124 97 168 136 144 146 132 132 100 98 95 82 91 137 86 125 104 102 176 142 144 165 128 121 106 115 142 78 143 115 91 144 92 135 129 134 102 147 104 103 33 45 32 92 54 31 24 60 67 44 46 85 58 68 59 52 46 16 54 29 78 40 34 40 55 60 77 68 39 14 52 36 2 23 54 62 98 100 82 91 90 67 87 120 98 123 102 90 95 115 149 124 89 70 90 123 120 134 146 110 105 131 107 111 148 167 129 130 163 130 158 146 136 152 177 193 197 187 214 198 191 181 208 181 178 186 208 174 185 237 194 155 150 154 131 182 133 149 127 105 123 100 117 83 129 64 70 73 33 65 4 0 19 16 34 39 68 54 46 34 66 41 71 54 39 16 51 11 37 36 116 115 97 123 128 148 163 115 123 115 142 112 134 143 102 114 108 128 113 122 122 170 107 132 134 136 124 105 119 105 150 152 141 140 144 148 106 120 109 101 104 143 138 83 86 142 109 33 21 75 83 56 36 46 67 31 46 64 47 52 49 89 37 35 62 54 51 40 32 69 21 61 17 25 32 35 34 76 17 5 36 14 45 75 94 63 63 61 101 76 109 124 79 67 101 102 93 122 72 101 33 79 106 138 121 185 149 153 107 138 146 122 98 160 131 140 128 146 144 143 195 190 194 203 181 200 194 225 201 193 202 234 155 193 173 214 222 167 160 157 186 193 130 133 129 128 94 109 98 102 93 74 65 78 55 35 41 19 73 26 59 10 46 0 69 37 35 20 22 29 53 29 18 42 66 48 34 38 43 155 123 116 123 131 149 133 184 125 160 95 96 125 128 130 103 82 106 152 126 119 85 123 81 108 93 112 85 116 103 105 110 167 85 154 113 164 135 103 108 108 126 141 114 89 21 74 60 59 58 64 52 79 47 52 81 37 77 56 65 89 22 36 49 71 81 58 80 41 72 34 66 24 48 21 18 42 24 1 32 17 26 64 62 78 88 56 111 120 84 112 115 72 50 87 56 60 56 66 108 96 140 140 140 138 128 113 141 120 110 123 150 114 129 128 167 165 133 141 135 174 205 190 173 205 244 199 202 203 192 181 203 205 201 198 202 184 137 183 128 175 154 165 141 138 101 130 74 79 72 66 83 27 89 22 36 0 11 11 87 5 0 0 25 53 35 64 23 69 55 52 42 0 63 24 50 93 152 169 142 105 179 153 158 123 133 142 118 113 129 96 129 89 102 137 108 110 85 121 120 134 111 124 124 89 110 119 134 87 119 128 139 100 161 176 95 100 119 114 128 105 120 59 69 39 73 98 37 76 77 46 47 43 45 71 76 80 53 81 33 36 27 38 37 59 61 34 82 48 48 46 41 26 48 0 42 0 6 0 59 0 1 94 86 108 71 95 50 72 70 77 88 52 94 90 61 161 129 154 130 145 161 158 130 102 138 152 129 121 135 131 140 112 143 148 160 171 135 177 162 193 162 190 175 198 183 206 176 176 203 201 213 194 204 176 173 174 196 196 161 97 104 123 90 107 58 109 89 108 107 73 97 35 80 65 32 0 0 17 32 0 33 59 28 61 34 43 38 50 31 0 19 75 39 45 100 109 121 134 141 120 146 174 130 105 138 138 158 116 91 140 100 104 135 147 135 152 120 108 89 90 108 81 159 111 111 167 134 173 120 152 91 80 148 128 111 112 151 121 89 62 95 46 34 67 85 79 73 45 55 35 47 44 81 69 72 47 38 73 19 38 37 48 65 48 32 63 42 44 46 8 0 0 18 8 20 71 65 35 67 65 99 90 66 65 72 81 76 53 44 61 109 152 132 149 131 152 143 161 152 140 148 119 118 158 153 155 129 147 135 173 135 191 131 122 133 182 198 183 171 180 245 196 218 205 199 247 208 185 165 167 195 179 204 174 187 146 157 169 106 131 125 74 60 106 99 88 103 92 50 76 30 44 22 38 34 49 0 14 13 51 0 42 15 39 23 49 10 37 69 127 46 80 114 121 131 70 133 129 117 129 124 100 111 108 84 129 130 140 105 122 140 145 110 142 135 120 104 101 98 120 113 114 199 94 84 107 126 110 135 120 90 116 90 135 102 43 75 58 43 47 81 113 65 41 79 32 57 20 17 71 44 55 62 102 77 58 68 46 18 15 50 67 47 68 83 53 31 0 0 1 9 0 71 39 23 66 57 101 126 77 70 47 70 59 27 83 128 116 82 130 126 98 131 92 178 140 119 160 124 139 111 136 161 148 128 169 149 152 159 129 152 187 208 169 177 180 231 188 216 229 182 207 205 159 178 208 167 221 187 203 226 197 204 169 152 181 175 109 126 115 78 92 91 51 65 94 39 54 39 35 36 1 53 0 11 49 6 47 48 84 48 73 79 60 32 46 79 73 69 75 102 122 117 161 127 127 101 136 131 132 114 149 130 108 79 106 112 117 98 137 130 149 108 170 126 134 136 84 129 129 99 146 113 130 135 125 127 90 128 127 125 111 90 104 69 93 68 89 39 84 63 45 75 28 63 56 94 51 71 40 67 63 37 58 105 67 24 62 39 27 67 48 80 17 0 30 33 21 6 86 22 44 69 46 78 76 36 59 21 57 34 38 74 91 122 116 97 141 129 128 136 154 132 107 88 124 121 118 147 179 141 112 146 149 145 178 162 151 134 132 184 166 173 155 168 179 173 190 189 182 189 200 194 235 208 241 227 199 237 191 183 156 139 175 174 126 113 100 97 100 87 78 113 75 68 72 18 33 32 8 34 35 42 35 47 59 42 64 59 57 47 59 62 95 73 31 18 62 61 162 126 164 125 157 101 152 90 112 98 121 87 134 85 121 127 136 126 142 119 183 109 113 105 143 126 121 157 127 117 118 144 133 123 100 119 131 122 122 105 117 67 55 19 100 78 73 96 80 91 53 55 59 82 72 62 80 86 75 75 80 66 64 41 62 55 30 74 50 37 36 33 18 47 34 43 34 40 24 33 51 59 111 64 24 72 12 44 5 66 71 73 55 120 136 146 145 121 120 142 120 147 139 116 136 120 127 132 142 157 153 143 178 102 162 138 137 144 180 154 223 196 216 227 199 187 212 195 195 208 194 244 197 223 216 220 198 189 169 177 182 193 134 172 86 88 115 96 80 76 73 51 76 80 61 52 76 35 30 40 40 19 45 28 55 66 52 30 68 63 91 54 49 38 59 25 51 49 120 114 91 84 145 90 81 100 105 76 99 117 139 110 117 113 90 128 131 116 118 115 141 161 158 136 138 133 111 137 135 120 79 128 138 113 110 119 98 74 97 70 81 81 38 71 51 88 103 80 61 77 93 82 83 40 35 59 48 92 102 72 94 58 40 32 73 58 35 42 34 45 2 8 33 0 51 41 42 82 53 86 35 15 21 55 59 75 95 90 96 128 131 149 208 132 194 142 108 106 133 133 138 131 155 137 130 155 150 139 141 163 126 178 185 136 175 141 143 173 178 200 208 147 219 183 194 199 203 188 208 255 190 200 234 230 191 185 169 172 187 141 147 138 72 121 68 102 110 108 80 91 84 73 129 58 20 58 29 34 29 74 32 54 54 43 33 69 45 83 62 76 91 73 33 40 73 59 81 135 90 67 125 106 111 169 133 93 131 153 131 116 126 149 67 118 114 165 120 98 115 128 145 130 137 138 120 104 107 114 97 103 166 89 121 100 97 77 86 78 72 23 58 93 49 71 72 94 91 85 90 39 70 49 66 80 45 78 78 35 45 86 36 85 56 23 42 0 0 23 19 28 31 82 0 59 0 55 68 54 0 14 39 108 86 67 125 88 115 143 149 151 113 141 118 127 125 129 154 166 118 134 107 123 130 143 137 155 152 155 151 158 133 187 173 151 184 208 219 230 229 248 238 164 178 222 225 223 192 206 194 213 163 238 159 180 201 190 147 181 139 105 143 91 121 117 94 96 96 73 78 66 51 33 74 29 18 104 81 52 53 61 17 65 67 51 111 78 69 33 33 20 79 74 26 86 104 55 94 100 94 102 97 122 109 120 145 144 89 93 158 128 76 109 136 122 137 124 123 88 133 149 160 127 173 87 112 125 103 81 103 98 116 104 97 98 81 91 72 69 70 84 54 60 59 69 87 79 77 86 43 66 62 66 33 51 67 36 90 44 54 22 76 27 3 63 27 70 16 24 52 27 66 1 40 42 26 21 35 54 104 97 99 102 94 130 120 160 158 152 171 152 112 109 166 157 117 161 108 137 146 110 168 166 151 129 162 142 116 181 118 141 185 133 196 165 162 176 199 186 194 252 252 191 191 208 197 223 222 165 204 193 141 182 138 198 164 156 147 130 112 109 96 110 110 45 99 78 118 82 63 15 14 85 40 64 22 17 27 3 16 10 5 112 77 43 48 75 36 56 46 46 36 102 87 133 147 94 97 93 111 81 94 102 140 124 124 128 163 151 117 132 143 104 156 154 104 135 138 160 97 93 126 136 121 117 141 136 115 96 109 136 66 90 106 75 79 62 37 82 62 77 41 85 75 60 78 68 65 71 85 82 65 56 101 44 47 32 78 19 28 66 52 3 21 6 0 31 27 0 23 0 72 18 0 27 63 99 95 100 104 104 114 142 132 153 154 112 144 120 117 126 109 144 126 118 142 171 160 142 144 144 179 146 145 144 142 145 195 148 183 168 183 175 220 216 209 199 198 242 206 176 215 226 227 170 209 169 206 140 185 210 192 182 154 114 150 154 154 93 76 70 82 81 71 113 99 44 91 91 73 84 55 79 50 16 63 23 10 60 72 77 0 67 45 51 51 85 57 91 47 80 120 89 84 104 106 90 83 118 112 85 106 117 114 144 111 124 111 117 132 166 142 139 102 173 133 105 107 96 132 136 115 97 135 125 135 119 138 90 109 98 114 51 104 68 47 96 61 63 69 70 72 100 90 74 86 55 59 67 58 94 57 54 67 58 48 35 77 52 38 42 19 10 0 0 27 0 11 27 63 43 125 65 78 145 148 131 157 139 126 161 177 179 165 220 128 172 124 130 130 130 147 134 156 143 164 164 130 139 150 145 148 117 124 136 133 130 174 139 205 163 217 197 167 198 242 202 201 216 204 201 210 206 200 196 181 173 168 183 136 160 144 136 172 143 102 114 128 90 98 87 92 65 114 83 140 114 99 105 79 81 38 44 55 79 26 109 126 37 75 61 58 33 33 68 69 55 84 32 113 130 80 125 91 98 128 94 123 100 79 126 99 95 81 104 94 121 122 116 98 130 145 103 159 128 129 132 101 179 165 150 169 115 116 135 125 99 129 83 103 94 44 48 86 59 66 33 116 67 69 64 61 17 96 78 77 75 77 46 58 45 42 36 55 60 39 57 52 27 17 39 26 26 17 40 12 0 97 91 109 123 120 109 96 168 113 161 154 179 159 169 178 162 133 146 118 155 145 166 149 132 156 156 158 120 134 159 164 150 155 148 152 149 137 173 166 159 152 174 195 197 182 221 196 197 215 175 191 192 193 166 190 189 184 153 172 148 127 120 144 135 135 113 124 91 104 116 115 68 68 83 117 106 104 104 114 96 96 47 56 33 39 46 63 129 69 75 52 101 32 47 74 34 83 90 80 97 107 141 119 95 111 138 121 102 115 142 107 91 135 121 74 95 92 122 177 157 182 148 158 143 117 145 149 129 156 114 166 140 114 114 112 81 109 149 58 102 85 120 95 85 79 47 82 97 61 58 62 92 57 103 46 36 70 72 69 50 83 35 54 22 44 85 4 9 27 0 33 18 39 28 24 32 69 118 77 105 95 151 108 67 112 145 141 156 142 155 195 192 152 165 146 155 137 162 143 162 142 132 149 164 127 140 148 140 126 128 153 109 167 163 179 139 190 146 117 158 202 168 202 177 247 199 163 197 212 186 199 183 183 152 179 192 166 161 160 121 135 110 124 104 115 107 105 88 70 67 68 99 136 102 101 59 75 67 69 35 40 81 19 31 150 94 105 52 41 54 63 79 55 72 88 60 50 104 120 71 94 95 120 110 97 141 102 96 145 141 112 107 115 126 140 127 143 133 131 159 150 118 100 124 180 178 138 138 192 163 113 84 153 100 79 98 111 111 83 117 46 104 102 87 115 97 56 67 71 48 71 81 103 68 36 41 56 65 17 24 51 9 60 38 12 0 14 25 30 9 24 24 59 105 103 105 122 117 124 127 148 95 135 169 149 152 141 142 167 175 183 143 133 152 161 137 143 126 166 139 161 136 142 131 137 155 108 150 120 138 136 190 161 146 187 146 157 163 143 224 168 176 202 178 158 182 203 188 143 142 190 131 173 162 186 155 143 132 132 145 110 96 103 83 91 58 131 96 111 66 76 69 87 14 42 50 22 51 46 68 51 92 118 75 33 50 52 85 79 63 36 102 94 77 39 88 114 115 103 103 115 91 120 78 85 162 132 133 136 106 116 168 165 123 165 142 143 134 100 155 146 142 155 158 125 123 120 111 110 110 117 100 120 160 59 109 81 99 104 86 97 125 54 73 83 86 81 92 120 49 49 71 44 72 26 45 64 87 49 59 44 0 0 38 26 26 0 0 0 38 119 81 91 104 106 170 99 128 153 122 153 130 172 147 158 166 196 157 142 166 145 144 144 181 119 135 151 141 146 155 99 143 150 155 146 124 137 132 165 138 168 139 150 172 175 172 140 181 181 175 190 191 184 177 156 175 176 147 163 174 183 152 169 94 119 150 116 96 103 85 92 104 72 110 109 49 114 0 110 66 55 30 48 73 39 62 62 64 71 82 130 42 57 66 42 52 67 31 59 73 79 76 91 78 79 120 124 135 110 149 133 104 107 106 111 130 87 128 109 133 134 146 128 155 107 148 162 130 126 153 152 142 145 145 126 102 107 118 95 87 118 102 82 122 90 61 82 81 86 83 61 96 62 73 72 89 51 81 67 37 69 30 49 71 45 14 56 46 55 51 9 23 19 26 59 0 87 67 89 81 105 124 114 115 143 137 169 176 210 180 159 177 195 210 163 146 194 134 92 180 142 132 97 148 148 159 157 150 114 144 107 139 120 120 157 109 155 126 151 176 207 168 120 150 186 184 180 192 183 201 194 186 207 145 202 173 155 138 131 128 146 129 140 142 111 84 96 87 63 104 132 52 107 95 53 61 67 61 77 31 75 52 80 54 60 45 132 102 99 40 45 33 92 80 74 82 75 42 78 77 94 104 160 115 86 110 126 121 85 114 102 140 117 96 123 129 126 161 176 130 137 128 134 181 123 131 174 150 124 130 175 117 113 100 118 85 144 44 133 92 110 106 118 68 76 79 79 88 76 63 53 61 33 57 67 81 67 51 49 44 97 87 39 45 46 53 47 68 24 0 0 21 43 49 65 94 111 128 121 99 145 128 132 178 146 172 147 106 123 165 179 179 121 143 134 187 156 127 144 155 166 139 153 140 149 166 99 141 134 143 131 126 114 147 140 139 161 166 141 164 149 161 193 139 119 152 181 158 143 165 171 150 147 129 143 143 158 146 118 116 128 150 87 76 102 101 105 55 95 75 68 94 90 140 75 43 52 65 68 61 45 0 77 37 108 125 81 89 79 50 60 36 95 66 57 66 75 52 89 110 106 89 121 77 70 144 104 95 71 110 112 142 156 165 140 140 137 145 129 156 145 134 138 143 134 130 135 144 108 124 88 113 118 140 97 111 105 119 104 113 105 90 70 104 77 51 59 95 111 83 92 52 56 64 62 38 55 55 52 68 50 50 69 41 62 23 30 32 3 2 40 78 77 52 65 114 145 126 126 160 160 151 177 182 138 138 193 149 176 164 145 136 163 134 100 119 148 147 118 143 115 152 121 149 94 112 120 102 147 124 126 163 174 120 140 127 140 147 147 139 124 137 155 130 151 148 173 155 164 151 137 150 120 163 143 102 140 161 153 116 98 94 66 94 100 92 79 55 71 80 123 67 59 40 38 57 13 46 3 1 61 107 141 113 39 27 54 59 86 109 71 61 70 37 88 70 91 111 94 87 91 122 72 103 77 131 107 151 129 115 108 111 124 161 105 150 128 152 122 153 174 121 166 153 187 93 114 136 178 118 133 99 120 100 89 110 99 106 131 46 77 58 65 62 77 76 59 62 106 98 63 78 49 55 56 50 35 47 37 75 7 34 41 23 0 25 71 70 97 62 75 101 112 148 147 107 125 139 147 165 150 138 168 137 175 164 137 139 118 152 111 172 136 108 150 139 156 105 164 154 107 103 116 136 153 132 121 128 120 156 130 125 121 143 147 152 136 161 182 171 152 148 145 167 177 141 194 142 169 120 118 165 125 138 120 78 91 66 79 85 71 80 85 50 127 57 118 70 88 76 26 17 64 27 48 19 35 26 91 145 96 95 58 58 72 74 64 55 74 85 106 40 48 108 127 107 111 116 51 126 86 79 121 152 132 85 149 131 103 159 106 121 148 100 161 178 157 168 123 163 159 98 128 114 153 112 168 111 92 108 102 131 120 104 127 36 67 120 57 88 68 57 85 82 102 53 62 66 77 56 30 85 60 46 83 49 7 52 52 25 46 2 21 47 75 48 50 108 92 148 119 139 139 143 158 136 133 170 178 169 143 171 195 112 142 94 136 181 150 147 139 103 128 123 112 159 150 115 184 125 163 116 119 126 121 126 100 117 101 169 125 169 118 144 136 129 150 159 151 131 153 191 139 128 150 110 128 133 150 159 120 101 118 127 109 117 88 104 78 107 105 114 136 128 128 106 76 80 86 67 17 0 16 3 49 22 101 96 106 20 51 62 84 77 45 90 61 54 59 77 92 84 73 103 114 103 106 167 115 90 88 126 123 116 120 98 114 121 98 127 96 187 155 123 184 141 170 155 135 149 147 141 111 103 123 118 171 121 86 156 102 136 82 117 75 102 81 111 85 63 100 56 66 114 29 26 105 46 71 67 34 61 49 51 30 48 11 21 8 52 81 95 70 101 76 105 115 142 136 137 124 120 165 166 168 130 132 152 131 167 173 149 134 141 134 151 118 159 146 136 153 122 123 103 120 99 132 143 95 123 113 93 62 129 141 160 121 130 174 155 161 161 150 147 156 170 178 156 120 161 123 127 101 134 124 129 131 124 116 112 108 102 108 97 140 130 129 88 91 113 123 126 59 20 47 94 14 69 16 20 56 38 31 140 154 108 48 69 43 31 66 72 61 97 31 101 60 62 81 139 82 114 133 83 114 82 118 91 139 167 112 145 131 155 107 126 143 120 153 167 172 101 146 123 191 168 110 85 130 133 153 138 111 141 102 107 162 132 123 102 108 45 90 95 95 77 94 74 109 97 59 103 55 69 83 70 92 84 65 32 47 42 54 22 17 59 82 80 94 79 79 106 103 122 80 113 152 124 149 139 154 130 142 134 167 110 171 163 194 157 142 143 79 169 131 103 121 118 175 115 177 128 95 132 165 141 136 103 88 104 120 157 137 140 104 153 141 118 123 135 135 151 169 159 151 143 119 148 143 155 89 127 115 128 133 130 111 135 97 137 136 82 118 91 178 149 140 107 112 56 92 76 61 40 44 58 33 31 69 74 97 89 74 98 41 64 69 11 80 69 66 46 62 50 63 107 82 141 123 98 120 114 121 125 95 140 129 121 98 105 130 131 69 120 118 159 162 137 128 128 100 154 153 141 107 145 135 122 106 80 77 102 94 94 130 102 105 129 101 112 123 81 74 83 68 67 81 72 79 100 108 84 113 62 81 122 66 41 47 20 73 57 97 82 92 76 75 60 86 70 95 119 141 137 153 127 121 118 188 177 158 91 111 181 174 214 132 144 148 138 141 174 115 154 131 131 108 97 132 100 128 113 84 97 96 117 113 155 123 125 123 166 144 159 164 146 134 154 128 132 151 164 131 115 163 137 166 126 154 176 130 149 100 139 83 59 96 99 46 122 95 79 113 119 102 67 77 44 66 64 45 48 23 41 25 79 69 18 95 118 112 54 16 42 54 34 38 56 21 46 83 112 85 74 106 84 109 143 116 101 93 127 101 101 158 106 118 140 139 91 133 92 151 169 157 168 134 116 151 159 122 137 104 141 107 124 133 128 99 119 133 125 162 138 132 140 90 120 125 62 89 96 49 124 78 78 72 110 69 113 102 91 98 101 79 80 51 61 60 47 52 54 87 83 70 105 65 67 80 97 85 79 102 120 155 111 181 158 113 140 142 197 192 134 139 116 137 175 150 131 151 144 166 158 93 117 153 142 88 83 96 124 122 115 87 121 126 153 109 125 139 133 160 145 126 116 144 160 189 137 173 142 170 148 111 166 150 134 120 137 79 114 111 118 96 125 124 140 87 86 83 118 101 90 51 30 52 25 40 40 50 73 26 30 47 63 120 88 107 27 19 44 33 59 52 51 32 36 67 82 64 54 99 94 106 130 119 110 187 103 132 116 149 112 81 72 102 109 104 129 119 202 147 166 111 138 132 99 128 154 154 136 98 143 158 138 122 112 130 85 86 100 115 136 109 83 109 80 103 93 113 116 57 88 70 80 138 113 113 89 103 87 102 67 101 102 57 15 41 45 39 82 38 50 57 67 98 56 84 67 109 128 100 179 139 157 78 148 138 155 131 156 152 116 192 156 146 123 109 132 120 134 132 110 144 110 117 129 128 90 115 121 84 143 152 134 145 135 110 138 150 127 136 132 117 114 139 144 115 164 132 196 113 201 108 136 148 131 94 95 113 104 119 130 103 94 76 79 64 102 88 86 46 74 78 29 51 43 52 13 38 0 93 119 105 89 58 40 26 65 32 59 80 83 56 97 33 22 57 49 79 62 120 106 79 128 75 126 135 126 125 156 148 123 105 132 122 127 176 136 141 121 156 159 127 144 122 89 127 124 122 108 133 95 171 107 103 111 145 96 82 79 111 106 112 70 81 49 99 91 81 79 105 101 82 84 77 73 87 130 89 76 114 87 104 96 63 14 69 58 56 70 40 56 81 100 81 63 103 104 88 99 151 119 136 144 153 119 147 124 128 116 128 149 128 146 135 103 120 144 98 129 91 102 70 92 104 127 92 119 163 109 190 126 120 137 136 173 176 144 147 124 151 181 143 179 175 89 147 168 167 110 134 126 116 125 109 131 96 151 116 104 116 104 97 40 47 113 80 52 23 0 36 62 46 60 59 31 19 16 107 101 142 59 49 10 0 65 81 86 38 77 77 61 74 45 33 119 113 96 91 107 74 128 108 83 135 103 122 101 111 128 81 164 136 172 134 158 130 102 153 137 90 137 113 140 135 142 133 143 107 72 105 93 111 135 125 158 86 99 115 111 76 85 74 86 58 97 94 105 80 67 49 84 101 99 83 48 126 102 113 111 53 71 90 66 37 68 0 22 30 54 71 33 82 96 121 111 142 152 117 106 150 146 130 131 165 186 118 147 144 105 139 142 151 117 120 89 136 100 87 71 100 88 109 80 78 149 127 133 161 160 140 160 161 171 115 157 137 164 144 152 168 169 116 134 152 137 120 125 134 135 159 130 105 89 115 87 132 98 111 77 80 71 96 72 90 23 31 79 46 46 65 48 30 54 47 108 114 129 83 52 36 33 53 42 69 58 59 67 67 91 49 66 109 60 98 167 142 123 144 93 140 142 114 123 136 114 118 114 119 144 131 170 152 148 168 133 146 138 143 172 112 135 88 144 125 152 111 90 97 111 148 136 101 108 132 105 120 67 95 91 73 87 97 102 67 100 73 138 73 80 75 59 80 99 115 111 115 99 107 93 94 71 47 39 59 28 29 60 64 65 48 41 132 123 86 102 100 116 141 123 163 118 168 145 186 105 81 121 75 135 114 83 119 118 52 116 92 82 92 68 104 116 145 151 116 133 151 184 145 131 93 161 211 144 120 172 152 170 98 156 140 175 142 105 157 165 140 131 77 45 25 18 32 69 32 52 64 41 57 91 55 42 63 43 20 24 49 17 64 36 58 48 82 102 98 115 27 55 11 49 23 94 89 37 16 69 101 89 66 58 67 113 130 77 97 133 154 86 146 133 120 122 116 119 108 173 123 168 125 154 147 140 129 138 181 122 157 127 154 113 95 122 143 100 154 111 73 88 144 145 113 140 106 133 142 83 74 66 69 81 103 71 118 50 100 83 87 54 53 73 108 103 87 127 102 73 106 98 133 100 90 59 27 22 88 44 61 47 33 25 93 136 108 100 59 118 108 127 157 178 146 135 121 120 78 100 114 86 47 91 104 80 94 92 93 84 133 156 126 137 133 158 161 148 123 131 132 147 149 153 168 146 137 159 165 150 135 138 141 132 78 68 67 45 47 51 30 44 57 40 13 66 36 21 45 29 79 22 26 19 48 8 85 28 77 55 60 47 39 124 113 176 142 45 29 60 22 31 43 50 38 39 34 78 53 63 10 14 72 64 64 122 99 84 108 145 95 133 134 107 112 153 129 154 133 145 101 134 138 147 91 156 138 87 120 157 133 112 117 92 108 85 95 111 134 87 121 64 82 94 118 125 83 82 47 74 93 99 91 65 93 110 96 105 76 136 97 78 76 93 61 91 30 99 70 52 86 88 55 64 30 89 35 54 62 68 21 101 113 83 87 86 98 95 150 101 112 106 107 88 93 87 98 102 115 119 114 120 139 77 74 136 191 138 145 123 86 110 97 110 108 104 130 128 167 169 151 171 169 114 149 174 142 120 93 89 44 51 87 57 73 66 49 53 30 30 55 33 33 0 93 34 47 71 49 35 26 35 24 56 27 34 21 87 42 66 97 123 135 136 137 101 70 109 78 53 92 64 85 66 87 129 118 108 106 82 116 126 84 80 68 115 109 113 115 155 110 135 103 104 149 178 168 120 144 138 157 121 139 131 155 138 88 135 133 130 116 104 121 109 83 120 141 129 112 95 140 119 161 119 72 91 74 100 96 68 63 78 89 94 94 93 89 76 67 99 92 93 90 84 54 80 72 88 133 39 16 72 50 64 52 63 73 58 58 48 58 71 113 56 121 93 112 145 90 124 134 64 62 121 138 161 110 108 149 128 109 84 90 135 94 63 104 83 122 112 84 97 107 122 149 116 138 122 178 128 118 167 99 74 60 79 0 47 65 38 82 75 52 72 76 48 28 42 48 75 40 22 16 33 27 21 0 51 12 10 51 55 77 93 47 61 64 136 124 114 148 147 119 109 134 138 95 105 115 91 160 124 89 68 84 90 80 82 94 75 50 102 80 96 126 92 106 88 111 151 91 152 163 133 129 146 159 143 141 146 168 112 145 128 112 118 145 74 128 90 113 121 135 125 92 137 107 111 145 137 95 78 64 78 64 16 43 62 87 61 80 107 71 64 84 107 82 99 108 74 101 82 100 98 59 67 80 53 32 49 47 78 93 73 58 65 65 47 98 47 65 98 73 73 123 87 103 109 88 81 137 126 159 123 70 133 32 20 24 17 74 36 82 117 83 87 106 64 84 93 115 159 148 122 122 89 124 117 77 72 66 59 55 10 70 69 59 0 41 91 67 85 51 32 54 46 18 53 38 11 0 10 22 49 15 22 36 33 7 62 78 91 158 108 133 122 129 116 94 129 145 133 81 174 122 111 119 141 111 101 68 51 71 87 100 92 73 79 84 73 97 107 71 91 97 127 99 143 168 142 163 154 152 136 144 140 145 144 86 131 110 141 134 138 132 56 139 126 112 151 136 115 108 127 89 97 110 97 84 54 75 48 24 50 107 75 77 94 71 116 103 83 85 49 95 99 120 101 72 73 61 139 85 89 53 39 52 52 53 80 48 35 65 48 67 56 61 52 24 122 94 128 107 113 105 80 101 174 88 93 70 19 8 23 46 29 27 16 53 56 26 45 62 67 40 80 46 57 65 98 38 45 73 83 76 47 71 52 50 35 29 38 30 33 2 41 67 45 16 42 52 10 54 29 84 35 41 45 30 49 0 0 34 74 0 33 98 124 108 142 113 136 176 149 164 120 131 120 130 126 154 74 123 114 64 76 51 91 59 79 70 75 95 84 79 57 85 108 104 65 66 102 122 99 167 180 173 127 107 156 178 151 127 172 110 139 111 109 128 122 112 125 98 110 78 126 106 101 110 83 139 145 148 114 117 111 65 49 56 97 51 83 83 85 61 81 82 101 99 80 73 80 100 115 67 100 70 80 100 77 61 47 80 46 24 112 82 70 46 99 61 57 84 51 42 54 29 96 107 122 118 6 73 58 112 83 47 40 7 66 49 8 32 30 20 49 79 91 72 48 64 62 49 37 33 25 12 41 41 28 33 46 29 32 59 26 39 67 2 12 59 83 40 65 53 31 22 68 32 61 46 71 24 46 30 0 3 16 7 74 49 125 113 146 121 140 197 173 121 155 166 185 148 102 144 120 123 102 78 60 53 103 70 64 78 90 54 58 45 45 93 74 74 119 71 68 96 75 81 69 108 144 179 153 147 155 153 128 173 147 155 121 118 169 134 108 148 134 124 99 135 131 84 110 110 103 120 110 92 149 110 128 96 47 59 81 78 64 79 46 106 85 98 89 95 127 97 48 81 92 94 101 92 53 65 75 32 63 42 94 99 91 64 86 72 72 41 78 64 52 52 77 5 41 121 113 121 67 61 1 95 101 33 38 40 25 59 35 11 24 38 70 31 66 31 38 9 32 56 50 34 42 78 12 20 27 44 49 28 23 2 29 34 44 18 32 27 26 32 48 42 68 30 46 28 10 57 39 37 0 27 23 26 26 15 37 176 133 154 164 164 153 149 162 101 159 140 135 136 138 126 57 102 88 75 77 84 96 64 111 49 80 59 50 79 90 123 87 69 70 55 103 69 81 81 69 102 89 147 141 155 167 139 148 169 159 151 142 134 158 129 99 169 126 115 111 103 87 116 116 162 116 107 174 107 148 121 133 65 68 51 88 43 44 24 67 85 103 105 96 84 44 106 106 63 117 88 111 123 99 57 63 52 106 66 53 63 47 60 67 93 63 81 28 43 17 54 61 43 71 54 27 121 100 111 51 56 35 50 51 40 27 56 11 15 6 37 51 86 4 79 56 36 37 49 58 5 52 56 56 25 21 32 34 32 32 15 37 36 36 45 77 32 61 32 51 27 11 0 48 61 17 28 37 33 53 64 50 14 17 70 130 121 107 137 156 139 153 157 174 156 139 121 128 110 178 147 107 109 85 81 72 103 68 50 103 89 65 87 123 70 97 63 56 101 92 56 99 76 52 88 68 88 76 83 121 162 158 161 128 163 121 154 147 121 162 139 118 124 128 95 132 141 131 131 99 133 105 101 147 122 138 106 127 106 61 75 51 64 43 90 111 81 98 61 73 62 104 78 70 101 81 103 63 91 86 76 30 103 55 68 52 87 119 46 52 66 74 57 57 57 58 57 42 71 66 39 84 35 44 50 60 62 93 61 70 75 47 35 34 62 53 30 27 14 33 57 60 42 55 26 35 28 68 23 23 23 10 13 27 38 11 13 24 12 46 28 70 35 21 34 56 39 15 44 38 32 21 28 36 29 42 47 13 44 33 76 123 141 153 170 142 142 148 156 165 169 137 160 202 154 244 197 105 86 66 82 105 93 59 70 97 53 104 116 77 67 98 74 91 79 91 107 73 103 114 84 94 91 73 72 71 170 135 172 102 147 109 126 119 108 143 126 105 145 129 104 135 114 94 118 85 94 83 98 139 86 98 118 124 129 119 90 51 41 48 51 55 113 98 69 106 100 107 87 52 92 78 75 58 101 58 45 69 38 40 64 49 56 59 45 32 72 72 63 64 51 77 61 42 86 71 76 80 56 59 66 45 52 85 52 67 94 72 30 24 56 1 12 0 32 24 51 32 61 0 52 38 32 34 42 30 17 26 23 70 37 28 42 73 39 71 38 42 41 45 29 53 18 58 49 73 37 35 24 36 62 41 55 54 16 37 143 97 158 147 159 107 115 93 139 176 162 146 143 155 169 164 216 106 98 65 110 88 122 53 61 52 79 64 97 74 81 110 97 90 84 26 100 116 60 67 101 94 93 65 130 81 78 138 116 139 141 139 137 123 156 111 128 133 107 108 106 103 96 121 102 118 140 103 109 105 103 143 131 146 154 156 113 93 41 60 108 91 66 110 96 116 119 95 100 87 103 114 81 85 126 54 119 94 80 56 87 47 61 52 59 41 65 64 25 76 64 59 104 67 37 44 54 99 81 75 66 105 100 95 71 34 53 44 69 63 53 49 40 31 65 41 54 27 58 26 32 64 48 36 51 4 3 37 43 35 40 63 17 40 11 75 29 40 9 41 33 56 34 33 44 34 17 40 32 93 62 21 42 27 39 93 102 116 114 173 151 169 133 136 152 122 170 104 145 154 138 167 185 167 84 104 95 80 88 93 117 102 133 79 113 84 95 74 75 40 73 81 51 113 74 60 92 79 48 105 74 78 66 53 173 125 148 106 124 138 169 163 110 128 69 111 97 125 137 89 93 100 107 86 108 87 95 92 120 107 133 126 110 145 128 28 42 92 88 103 101 93 141 122 113 108 90 93 127 104 84 90 91 93 83 71 59 80 69 76 100 82 67 94 66 122 37 73 32 63 37 59 70 85 63 41 54 58 75 70 77 67 88 87 49 43 52 46 32 17 55 64 11 24 0 62 11 1 16 23 70 44 36 10 15 53 39 19 11 15 29 60 27 43 43 37 23 65 30 53 75 34 15 42 58 57 30 11 40 15 45 123 106 139 141 128 129 154 140 173 123 132 170 121 144 145 167 211 215 175 168 103 85 77 62 67 117 97 45 66 99 68 127 95 63 40 66 49 89 52 124 67 67 97 94 97 140 105 118 125 127 145 139 113 94 111 138 128 128 131 109 112 125 87 93 107 129 94 130 120 114 124 104 107 127 119 146 122 115 135 131 120 93 30 78 107 106 110 144 111 130 127 140 126 55 93 95 122 119 114 75 46 69 120 66 70 73 123 69 90 85 94 81 121 62 85 111 68 55 52 106 120 73 52 35 48 62 96 108 64 75 70 68 56 31 53 31 43 25 54 56 27 29 60 0 77 53 46 55 37 21 0 19 45 19 45 22 16 23 48 26 18 28 32 39 4 41 30 34 2 64 10 35 26 9 23 87 167 119 150 77 108 132 137 118 175 164 147 120 145 149 164 107 181 148 118 105 141 70 105 133 92 80 107 103 47 83 72 104 65 118 36 54 72 90 73 69 84 102 64 82 66 114 44 92 57 78 91 102 149 165 139 110 120 131 134 124 128 123 121 122 87 102 70 89 121 117 68 77 118 127 107 116 156 129 132 133 134 100 135 56 43 104 99 143 122 153 174 102 117 79 47 66 68 103 114 75 87 102 82 97 49 94 117 110 109 71 72 112 99 84 113 109 80 35 85 86 80 88 106 75 100 96 91 63 61 31 74 97 87 66 37 67 56 56 74 37 34 55 9 31 72 12 26 17 22 7 55 62 20 1 30 29 34 24 6 20 20 68 48 26 43 46 16 42 25 46 33 53 22 52 35 133 162 134 120 106 133 56 161 138 98 103 145 150 158 122 133 144 170 150 134 146 170 78 100 70 64 65 68 79 78 92 130 50 98 59 56 58 44 113 98 46 68 81 41 54 80 76 77 88 111 78 86 72 152 156 134 153 82 106 135 125 73 127 129 99 119 102 131 121 107 104 127 59 86 115 101 143 117 111 93 95 165 129 121 114 87 29 109 97 92 141 141 106 107 115 96 85 57 115 84 56 74 124 84 67 107 111 70 82 80 72 72 57 92 84 88 85 91 83 64 78 69 86 47 93 122 114 77 67 48 85 96 90 68 76 58 90 53 76 72 38 52 33 44 17 49 37 19 32 22 55 0 0 25 35 11 35 19 2 46 33 28 44 7 15 43 16 57 15 9 42 49 21 0 30 52 132 141 143 116 79 91 113 96 141 114 151 111 110 154 161 118 130 155 160 154 147 122 137 105 64 52 125 76 74 87 88 78 50 92 100 70 114 61 1 88 81 40 64 64 94 64 121 99 101 70 73 18 56 119 119 183 158 140 112 163 141 148 169 109 88 96 88 129 105 136 114 90 97 104 97 114 136 133 110 116 143 148 107 161 110 151 98 59 59 102 98 157 134 128 147 108 122 109 58 100 78 47 91 74 75 115 121 76 96 94 57 71 78 89 102 91 96 149 74 88 81 108 79 106 108 75 63 36 103 115 79 75 89 114 38 87 47 76 53 34 35 15 56 26 23 58 4 26 20 6 63 29 40 20 8 2 52 42 19 53 53 30 73 18 34 56 3 46 25 29 14 62 0 39 0 103 118 169 152 88 80 79 113 108 81 119 144 142 119 150 123 130 137 119 138 169 185 165 118 89 75 88 107 102 59 107 117 107 64 106 56 46 64 81 140 34 41 102 58 92 68 53 78 92 131 92 83 101 52 84 108 100 150 118 154 117 145 123 150 109 160 116 105 100 111 89 130 115 113 114 107 74 148 100 86 104 116 103 149 140 148 130 165 118 75 82 104 114 150 110 114 165 97 118 122 86 55 67 56 64 110 103 122 76 100 98 105 82 110 99 64 75 89 83 89 62 71 58 72 83 90 87 105 82 79 80 57 65 84 74 68 54 90 45 94 58 61 74 39 34 42 48 21 70 24 22 35 5 33 37 47 47 12 22 15 22 43 9 54 53 30 38 40 13 13 33 12 17 49 42 24 121 111 138 116 126 75 94 119 108 107 110 117 76 92 124 130 103 148 158 120 152 214 128 146 109 57 55 64 81 73 79 107 89 62 56 75 95 60 71 105 80 90 87 93 105 87 39 57 65 68 94 112 97 116 86 85 115 133 130 132 135 132 154 148 138 135 101 123 78 83 107 126 121 96 107 87 104 133 146 138 130 130 93 119 150 115 123 155 153 173 139 127 50 88 98 155 112 100 121 98 119 98 99 36 25 31 55 62 72 63 108 71 86 94 106 117 81 64 93 107 66 78 116 114 95 86 84 102 92 53 109 96 59 85 82 70 102 75 75 58 107 77 82 43 30 37 51 63 46 62 20 67 51 61 11 25 35 49 34 65 33 14 27 24 12 35 36 0 8 42 37 23 35 24 17 30 101 89 90 179 129 130 77 79 123 103 126 108 94 123 109 95 166 137 153 141 200 130 154 132 157 46 45 44 95 127 85 80 63 60 62 99 62 82 56 52 78 92 87 87 104 69 78 53 80 74 66 57 63 49 107 88 99 80 120 139 134 130 130 130 112 120 93 112 138 105 79 107 85 97 109 68 106 119 107 145 139 102 127 147 131 103 119 138 132 124 135 86 110 112 95 84 143 76 107 161 108 116 159 78 71 67 26 75 35 41 27 89 119 94 88 81 63 114 98 92 84 99 102 102 62 97 110 78 126 78 86 99 63 88 56 69 60 62 79 55 79 78 66 73 87 81 80 51 47 33 8 44 28 17 25 38 36 17 24 26 61 16 34 23 51 18 81 5 0 0 17 35 28 0 37 0 112 157 152 90 139 89 45 54 106 84 103 162 115 78 132 125 148 133 128 77 125 156 137 168 148 69 64 77 70 80 106 107 68 47 70 102 80 55 72 35 43 89 125 110 56 96 93 18 49 63 55 72 103 73 69 72 95 96 37 146 135 142 150 142 138 176 146 147 96 126 142 93 134 88 114 96 95 125 110 143 111 119 132 108 138 114 130 116 151 148 149 149 128 125 106 140 89 121 135 120 115 85 129 83 77 65 57 86 55 32 37 56 91 104 90 72 100 78 100 80 68 105 100 106 82 89 108 68 56 86 82 79 69 109 64 103 74 101 119 91 84 76 76 79 60 49 73 20 22 36 31 21 14 61 35 33 27 15 11 61 30 27 18 0 27 4 65 60 33 29 21 24 3 22 63 54 127 110 133 118 150 126 120 58 90 87 65 74 89 88 149 148 145 142 114 43 150 166 160 138 158 104 82 83 75 73 73 89 94 50 67 51 94 58 70 20 65 63 75 100 90 99 65 69 68 44 58 83 102 73 75 70 109 58 61 92 122 131 102 138 138 144 118 103 145 120 127 164 141 75 113 128 73 84 141 106 164 128 161 100 97 147 136 114 157 134 160 115 104 126 136 147 108 106 103 131 161 83 175 136 132 115 66 79 98 72 27 34 2 45 2 68 74 91 85 87 95 74 91 46 42 98 88 84 65 58 74 80 97 118 101 97 67 94 73 87 104 86 52 72 108 59 78 117 52 66 32 33 46 7 49 72 15 52 14 14 44 24 0 47 26 0 32 19 94 26 0 32 38 19 38 37 83 108 95 99 185 150 152 99 79 45 101 68 150 129 110 129 158 133 89 70 136 143 191 156 196 86 63 55 65 53 61 83 69 71 44 79 119 64 48 52 78 86 64 81 69 111 49 50 60 139 88 90 123 85 102 73 56 98 67 98 101 169 130 139 128 146 102 102 149 98 124 109 97 96 112 84 150 138 125 88 115 112 129 148 125 144 123 130 108 140 134 144 144 167 138 153 155 115 107 121 73 97 96 119 132 160 74 92 69 81 89 31 18 42 18 27 53 60 67 104 45 88 100 71 58 70 44 78 93 98 131 76 90 102 101 83 86 81 89 78 86 99 96 82 71 64 101 75 57 88 16 39 52 59 57 61 0 49 42 30 37 51 52 14 0 0 42 36 35 59 12 4 32 36 13 77 32 96 129 135 178 143 111 109 51 77 70 119 91 114 130 105 134 95 74 125 144 179 150 168 187 92 75 153 130 151 114 154 135 158 177 154 135 99 104 134 131 104 80 43 39 56 82 57 39 71 81 62 83 35 89 76 70 78 58 95 69 122 156 110 155 155 126 154 95 135 135 112 92 102 112 111 103 111 119 113 111 98 146 163 165 167 185 124 120 105 158 117 97 145 105 140 164 172 98 111 60 123 70 62 87 117 143 122 89 43 92 59 62 77 24 11 53 34 62 31 55 59 95 74 80 114 86 79 103 64 83 81 109 76 94 51 83 73 72 81 104 41 56 63 93 62 91 74 75 42 60 85 69 40 30 42 23 4 20 22 20 3 34 34 93 34 0 49 21 45 43 26 0 2 26 45 82 125 72 126 152 130 141 94 98 74 93 72 84 133 111 125 83 68 98 102 139 133 138 110 158 106 119 142 171 159 142 103 127 197 171 136 118 161 113 126 91 93 82 108 98 103 61 29 57 60 85 32 47 66 45 74 77 58 62 88 76 70 67 141 119 125 131 151 101 113 111 98 106 63 125 97 114 134 122 116 118 119 148 143 125 123 176 110 104 164 131 136 80 123 114 145 100 138 127 113 134 137 76 73 86 95 119 134 83 110 83 75 64 42 63 62 43 34 47 11 43 45 44 59 28 62 98 91 89 73 104 57 84 82 94 69 74 108 93 108 68 70 69 89 49 74 81 78 75 75 31 67 43 57 91 61 59 0 48 55 23 62 0 17 23 6 44 0 20 30 30 17 42 57 11 20 19 61 100 97 127 182 156 136 93 78 93 101 58 96 100 49 30 76 65 105 153 136 120 121 124 68 137 111 135 124 142 130 113 179 113 130 114 134 92 79 118 111 98 99 93 97 48 98 85 25 64 49 91 62 73 36 54 87 75 37 89 109 81 84 134 115 105 105 140 126 65 169 103 158 135 124 121 127 80 86 95 136 148 132 146 131 171 133 171 141 122 114 95 120 129 143 149 153 124 152 160 128 143 123 109 112 92 69 82 137 98 123 104 80 51 42 45 91 53 38 36 25 10 25 23 71 57 50 37 72 58 59 81 75 80 70 69 84 113 55 76 60 117 62 66 35 66 44 36 77 51 79 86 57 65 63 76 64 52 25 15 37 11 67 23 49 37 45 59 0 10 12 41 15 11 6 18 93 116 135 104 109 139 134 113 96 57 104 99 91 71 117 144 109 112 138 161 129 161 137 149 66 145 96 172 129 154 117 109 194 149 138 112 117 114 101 107 99 122 128 123 83 82 88 70 81 79 68 127 54 71 59 35 49 91 40 61 91 85 84 109 100 107 143 107 112 126 123 142 111 78 127 117 126 122 102 132 96 123 82 135 153 157 163 147 152 131 142 102 138 97 140 136 135 140 103 141 153 148 153 156 115 105 114 80 83 83 98 110 24 80 51 60 40 62 44 44 21 55 29 47 50 17 52 49 54 30 68 75 53 44 51 33 73 49 45 40 75 52 49 81 50 75 44 31 85 50 31 73 42 40 34 64 63 39 74 15 76 37 19 86 0 44 37 15 56 45 25 27 21 39 46 5 76 83 148 133 107 100 139 101 85 60 90 99 85 73 85 119 99 101 130 144 136 113 154 141 152 160 105 133 140 128 164 113 134 153 129 128 108 149 111 128 95 91 99 83 79 81 37 114 61 96 108 98 84 66 107 28 62 71 52 69 80 82 100 85 66 115 96 136 139 143 143 134 105 110 107 118 100 79 104 139 92 152 122 113 126 125 127 155 146 159 141 128 147 113 86 102 120 139 121 128 141 147 105 126 130 120 120 109 115 90 82 55 81 95 59 80 69 51 70 95 33 23 53 43 40 59 21 41 55 33 54 52 88 50 58 73 45 62 49 27 54 72 82 47 39 31 57 53 74 50 70 54 74 44 78 43 30 31 80 46 66 43 79 51 17 31 34 14 13 0 8 21 0 15 39 27 22 58 77 100 50 87 97 68 74 76 70 45 55 51 103 82 128 125 151 161 124 139 127 127 154 126 115 97 161 138 124 138 108 97 127 141 113 138 135 151 106 77 94 83 124 96 88 100 67 75 111 54 92 46 109 97 90 50 69 63 55 89 55 115 77 96 132 157 152 147 136 152 147 146 105 102 98 111 91 122 126 127 89 96 140 120 136 154 133 138 119 121 111 148 174 147 95 136 126 130 134 106 148 130 129 122 132 100 84 130 112 58 65 37 94 56 60 59 94 78 59 58 50 72 55 67 92 25 70 58 56 83 21 61 54 73 41 101 57 86 45 34 70 50 57 59 46 77 36 46 15 72 27 68 68 72 40 44 13 87 82 41 101 82 86 55 9 52 20 54 0 39 21 0 52 40 103 95 105 147 86 85 73 93 102 100 77 98 134 127 119 82 151 171 129 106 132 134 77 112 107 108 143 155 130 136 119 84 139 143 128 108 131 116 132 125 83 79 76 106 80 80 81 97 99 59 85 95 83 73 66 60 94 81 75 80 96 101 82 64 33 99 75 160 152 144 99 89 152 107 141 125 108 131 104 125 123 135 134 113 136 105 118 114 133 149 156 133 152 78 121 131 137 148 127 110 151 100 111 123 159 128 157 123 137 167 117 96 77 90 78 56 82 65 78 65 82 76 33 60 31 24 52 64 29 40 60 56 20 29 46 24 10 50 59 54 35 32 34 46 27 56 50 50 89 62 63 48 73 85 34 79 48 44 11 86 64 92 75 70 41 42 84 43 49 9 28 26 25 42 7 70 151 123 62 103 120 116 135 168 146 100 142 97 148 94 98 123 114 162 140 120 37 139 115 141 110 81 102 123 116 148 105 143 131 131 167 169 114 122 152 93 116 75 116 65 92 119 98 100 77 63 91 75 64 58 72 78 82 53 133 84 91 89 77 81 89 75 71 47 103 98 86 122 130 77 91 148 140 129 137 68 111 109 157 91 122 127 114 143 136 136 188 92 130 116 123 123 149 91 116 117 147 104 140 148 158 140 138 129 128 113 148 133 136 87 72 58 43 65 62 55 82 68 41 45 38 18 15 90 66 53 51 65 54 83 9 49 76 34 8 33 43 50 50 65 68 75 28 63 75 53 48 18 60 106 80 24 55 64 35 38 84 25 42 51 66 46 59 47 42 35 48 27 14 44 33 110 91 116 117 27 62 96 107 95 98 87 100 78 146 108 108 88 101 51 108 92 58 98 125 140 136 122 114 114 121 96 85 145 105 100 104 143 105 95 116 86 62 58 93 77 121 93 103 107 94 100 117 83 110 100 74 72 72 66 80 66 95 120 73 99 78 72 121 68 69 111 108 130 111 138 122 155 115 119 133 141 155 117 89 117 159 94 90 153 108 178 117 144 120 150 98 133 94 157 145 144 159 142 146 115 114 83 141 133 133 104 127 163 127 113 145 97 89 103 34 31 34 43 65 49 56 31 17 51 59 48 85 53 83 28 65 34 59 29 51 31 61 15 49 60 46 46 32 19 45 78 45 64 46 13 68 46 69 48 59 55 93 20 63 92 58 82 68 61 71 41 54 75 73 58 64 129 113 94 99 46 13 29 97 76 69 71 109 93 66 48 82 53 22 90 45 93 60 87 129 101 111 98 100 102 94 97 103 96 45 85 138 96 134 87 70 59 102 59 64 60 68 69 96 80 80 62 64 93 76 103 73 55 60 77 71 82 81 84 90 47 100 68 86 101 98 44 162 93 95 71 107 130 143 139 96 144 129 110 132 111 119 104 107 103 114 161 143 143 90 104 107 121 137 118 165 126 156 109 111 139 112 116 145 91 128 122 101 124 109 140 145 136 115 142 60 77 8 51 54 24 45 48 50 55 19 38 43 38 2 58 37 67 27 63 68 0 44 33 33 41 30 57 20 73 39 37 55 47 104 76 94 39 59 69 71 39 43 70 66 69 60 63 50 67 16 57 33 78 28 72 41 78 150 114 104 91 74 22 70 64 63 61 88 65 86 76 49 70 68 48 68 84 80 80 90 92 103 103 96 82 87 109 39 80 92 127 127 135 181 176 117 146 113 122 111 118 70 124 94 90 68 83 50 75 66 70 45 63 35 84 49 61 54 27 119 92 124 104 81 66 69 72 96 107 115 112 125 156 118 112 124 117 132 77 126 105 119 119 128 91 134 117 138 94 169 115 149 135 116 126 124 106 98 154 132 133 130 138 123 119 145 77 113 129 100 127 107 132 126 148 87 91 38 31 42 73 73 36 66 57 59 11 37 22 30 60 51 27 61 60 27 48 72 57 32 76 41 27 25 14 19 58 39 25 8 42 52 38 86 93 44 84 96 46 32 46 38 86 59 79 63 83 110 40 72 66 55 53 100 123 106 77 104 53 66 91 84 65 108 71 93 109 55 52 57 39 95 84 91 92 91 84 97 104 108 88 84 80 132 116 85 67 73 89 132 185 180 167 91 133 109 128 159 117 174 115 112 145 67 77 84 79 97 65 32 58 75 60 58 3 60 62 119 61 90 46 78 73 115 100 143 150 109 124 120 90 82 114 129 162 116 142 122 103 110 117 104 98 128 134 121 143 130 163 142 174 135 82 114 171 89 153 151 152 140 158 141 118 131 122 112 110 145 118 101 125 161 71 85 50 59 86 61 85 31 74 39 62 55 95 25 74 43 35 41 59 73 46 18 56 2 48 21 32 17 35 11 83 46 43 15 74 16 53 31 63 50 82 92 54 96 86 56 54 117 43 68 36 50 54 48 108 55 84 72 116 104 111 39 65 61 61 66 86 76 85 80 76 59 89 58 32 37 59 62 125 125 94 110 111 82 84 61 85 89 116 90 76 62 82 118 168 158 170 123 140 132 150 111 191 147 140 140 131 86 124 85 64 66 62 84 76 90 52 45 34 69 49 18 58 70 114 120 65 49 92 52 121 116 134 110 111 126 106 148 119 131 115 77 115 102 129 179 154 112 125 145 158 90 156 128 180 135 147 133 106 158 120 145 172 168 117 104 146 119 139 119 130 100 61 100 97 106 117 150 130 60 92 69 77 62 44 49 35 45 0 37 41 73 66 33 42 33 34 20 42 41 31 37 62 14 14 56 43 46 29 59 26 31 6 52 61 0 31 16 56 68 36 37 69 67 79 68 74 74 46 63 41 95 19 63 80 120 84 72 78 30 56 65 69 88 107 67 58 74 37 101 24 72 50 87 73 92 102 98 63 114 95 90 31 50 121 85 96 99 165 175 172 166 218 176 168 176 154 116 130 181 104 142 118 173 148 110 45 50 63 77 96 50 59 84 54 76 77 64 70 45 81 91 96 69 73 118 127 107 159 142 136 106 105 130 138 102 147 135 113 136 118 144 173 159 67 100 131 111 137 130 154 116 165 114 111 98 132 103 133 116 155 112 146 114 153 109 152 72 59 85 116 84 99 97 148 153 116 99 83 74 54 68 73 65 69 81 69 30 71 76 51 21 12 35 38 41 41 36 59 53 49 13 16 19 29 48 43 10 89 11 38 56 41 51 31 30 42 28 33 24 51 70 43 78 65 21 46 55 88 60 67 127 104 58 94 71 61 57 90 67 66 108 104 49 79 85 49 93 45 95 87 29 79 100 69 52 31 66 23 21 73 92 157 151 183 226 197 189 216 219 209 213 202 215 172 195 146 140 157 139 119 107 99 86 36 86 86 57 73 73 76 59 83 44 50 72 40 58 44 99 104 87 100 81 149 122 142 127 100 153 154 120 119 122 164 96 138 156 136 143 150 111 124 133 119 133 142 138 126 145 99 108 123 157 135 82 132 103 150 128 134 118 97 120 90 74 89 120 83 108 78 76 122 130 121 109 118 75 97 73 60 33 55 29 39 29 43 10 31 25 68 17 0 60 3 23 19 31 40 60 44 45 31 34 47 0 38 49 57 52 43 16 55 74 47 0 36 73 23 48 53 6 39 41 55 75 73 127 169 95 34 45 60 20 42 29 111 118 65 74 94 74 62 62 40 70 43 76 39 41 79 49 83 109 95 67 62 81 159 138 190 188 188 196 181 173 190 202 163 205 180 196 173 143 135 115 141 139 121 99 64 110 82 81 54 48 55 32 60 66 60 65 60 55 101 51 101 150 105 77 71 139 165 121 165 162 121 144 138 154 114 117 101 97 121 146 133 103 115 128 134 129 143 100 111 117 138 111 127 116 99 95 143 107 162 95 148 125 145 134 102 70 106 105 138 128 106 88 86 101 113 110 136 89 37 91 37 90 75 43 9 62 62 40 61 31 43 28 74 32 27 58 26 27 47 39 23 21 38 0 53 17 25 57 20 29 35 29 64 72 69 62 34 5 68 37 36 53 20 52 33 39 21 62 147 77 86 45 23 55 69 104 90 90 92 65 75 97 137 160 151 152 185 143 168 194 189 225 169 175 191 149 148 114 85 152 118 126 148 120 210 190 203 150 203 163 223 207 224 175 179 139 132 164 92 78 140 83 92 80 85 81 74 120 30 30 54 52 45 66 85 65 100 80 52 54 102 96 138 131 128 135 158 117 170 105 140 133 131 127 158 127 102 117 71 99 147 166 120 140 143 169 164 126 143 89 80 160 143 137 137 101 155 115 124 117 124 89 108 84 91 74 116 106 138 69 95 106 110 120 96 102 110 107 89 52 77 57 55 71 19 45 28 62 38 29 18 41 43 52 68 69 39 26 12 37 29 17 63 26 34 32 33 25 28 34 15 69 77 51 74 37 59 53 41 41 16 75 53 58 90 137 78 97 89 19 64 95 69 70 69 135 174 229 142 177 179 177 196 198 201 231 181 218 197 209 189 235 207 197 110 138 112 118 125 87 141 153 146 172 174 161 180 182 191 205 190 137 115 136 128 105 67 66 115 121 92 72 77 42 55 85 29 40 55 76 61 54 40 95 81 86 58 107 60 140 142 170 149 156 154 122 142 102 95 134 90 82 117 110 99 104 156 125 113 106 92 148 113 139 153 161 139 131 107 100 105 138 128 144 135 137 103 100 112 112 121 73 117 80 47 104 55 46 69 70 86 83 95 70 101 70 72 66 79 88 23 53 67 57 58 77 39 11 58 20 58 31 21 24 67 22 67 18 43 52 63 56 74 43 18 21 41 50 22 38 3 71 68 26 71 35 44 26 50 9 124 122 82 71 39 54 78 15 32 62 101 169 249 210 198 171 221 229 210 212 210 216 210 214 201 219 249 173 203 211 208 178 198 143 126 122 118 124 104 147 142 160 147 191 189 200 182 122 156 116 76 124 90 73 95 128 113 84 27 81 58 77 47 34 40 47 27 38 67 53 34 16 55 72 102 133 132 149 147 147 146 147 154 140 163 124 125 71 129 113 136 107 125 126 84 101 107 150 108 163 108 104 125 160 135 140 121 134 125 131 101 123 141 126 125 90 71 82 73 61 58 104 121 112 69 60 95 94 130 112 112 120 93 76 63 88 73 65 43 90 24 34 36 64 33 61 62 16 73 84 36 68 14 49 54 15 17 43 44 44 53 38 64 63 50 40 25 29 60 18 36 19 71 46 21 42 91 126 111 100 69 32 54 43 98 157 191 193 212 204 231 200 189 224 209 203 167 226 242 174 196 245 225 255 203 240 196 207 191 190 163 144 118 82 121 122 116 139 137 121 177 154 158 143 131 159 143 132 140 142 108 96 52 96 72 70 73 132 66 82 41 42 54 71 70 73 85 36 60 49 94 59 81 170 168 143 150 138 201 155 134 142 129 106 133 134 95 193 121 113 161 94 110 148 128 142 132 184 140 128 128 105 147 122 68 129 88 139 120 131 142 92 107 110 107 57 82 71 101 99 93 84 93 71 53 99 98 94 69 98 63 62 40 73 71 89 72 58 48 0 48 46 38 40 50 68 31 35 35 53 72 52 64 38 57 26 64 34 33 36 48 40 69 56 75 41 39 40 49 40 83 84 121 154 120 96 99 41 61 85 178 191 161 187 194 217 204 195 244 211 245 213 224 255 221 188 245 239 176 255 204 217 183 225 221 215 164 170 135 140 73 121 127 129 114 138 157 149 132 150 142 166 161 167 133 113 111 130 117 91 88 56 120 61 113 96 54 51 59 60 86 54 71 38 70 79 40 42 71 78 147 160 121 148 147 153 134 132 156 121 104 151 95 113 101 115 144 97 121 120 130 128 103 104 143 155 145 152 145 129 97 83 162 130 103 101 150 73 114 77 106 84 109 87 121 94 104 54 85 51 50 63 81 96 112 100 138 95 85 116 97 40 89 57 81 61 23 60 42 48 58 48 24 32 45 4 33 35 36 61 45 41 48 67 68 46 18 59 59 41 58 73 41 55 34 55 107 135 172 120 125 97 87 145 205 193 157 210 183 193 192 205 209 208 240 212 217 203 232 212 232 216 227 208 244 229 193 200 209 217 205 192 207 167 160 139 111 150 110 126 107 136 82 103 110 168 160 132 137 134 153 123 77 89 127 107 121 100 73 58 69 79 91 87 59 71 72 70 65 103 70 62 60 121 80 54 71 146 151 168 183 152 192 157 136 114 150 120 96 109 132 115 110 139 90 89 124 90 105 78 104 145 114 106 116 128 119 56 80 95 109 124 162 100 124 82 94 140 97 111 99 70 78 105 103 49 78 50 62 84 66 102 141 80 113 124 80 76 68 82 64 50 92 97 31 75 42 42 52 33 43 53 79 36 28 66 26 73 70 33 48 66 29 35 60 67 61 57 38 43 62 36 15 62 117 103 77 100 147 175 213 230 185 184 204 214 197 177 172 221 192 201 189 238 189 184 224 246 237 253 245 205 212 197 196 211 213 212 191 151 137 130 144 103 58 101 85 123 89 95 128 75 133 112 98 96 94 99 104 76 68 57 126 100 68 47 65 61 92 70 96 84 84 76 74 21 84 77 55 123 63 92 66 86 134 126 162 171 118 118 165 132 129 121 145 123 101 105 63 110 143 113 113 127 95 92 70 75 124 134 105 105 120 120 84 106 67 102 125 126 107 118 113 116 85 106 126 67 80 93 86 88 89 71 22 106 46 60 97 68 67 93 107 85 83 35 80 63 65 19 19 116 34 47 52 15 28 13 24 48 8 66 69 56 31 60 36 70 29 50 60 86 54 50 52 61 32 54 31 44 17 105 71 173 180 193 186 200 190 212 191 161 181 155 183 147 183 188 179 194 225 208 190 197 226 219 198 198 221 174 203 182 197 218 195 181 166 174 114 123 83 85 101 115 99 108 92 117 106 93 101 125 125 151 99 104 58 70 47 89 127 87 73 94 96 79 87 96 75 74 58 44 36 37 77 81 112 70 85 78 94 138 140 166 128 148 159 128 126 106 121 137 83 85 87 132 139 137 99 97 59 98 125 80 100 109 149 113 109 65 74 66 70 103 80 99 61 113 106 104 77 117 117 131 82 84 93 100 96 58 122 118 91 97 64 80 116 102 107 94 77 56 79 63 59 59 73 29 53 65 81 50 0 46 45 44 47 32 42 3 63 64 58 63 51 50 20 78 58 1 52 92 48 20 56 57 15 61 106 195 196 177 156 190 143 183 152 183 183 122 169 166 194 185 219 228 156 245 193 230 230 211 203 202 216 207 255 206 221 226 194 175 173 155 116 158 118 98 87 109 90 127 77 94 91 94 62 107 72 133 94 106 59 69 68 53 76 79 121 130 62 117 48 50 114 42 91 71 59 53 59 65 59 51 85 64 61 57 181 117 149 158 164 145 137 143 118 139 100 88 127 105 89 87 105 145 126 45 83 101 92 105 66 119 145 118 105 94 94 77 74 106 107 94 94 81 91 107 78 81 100 111 89 109 90 65 81 126 71 64 49 89 61 93 77 125 112 75 107 95 72 66 65 87 70 76 76 46 71 68 75 51 17 59 25 60 41 34 57 67 60 57 65 36 28 21 33 44 72 25 84 66 39 35 142 190 219 198 158 189 152 178 136 147 95 104 164 126 183 155 186 181 217 163 205 208 221 201 208 203 224 213 206 188 176 179 171 174 180 128 174 147 87 102 121 133 122 100 116 100 109 97 57 97 67 63 80 75 78 73 53 38 30 23 84 79 121 49 89 44 78 89 79 67 97 64 52 53 96 45 80 129 60 97 98 194 145 135 152 152 154 154 127 116 125 123 87 139 109 87 148 144 101 85 99 63 110 104 104 77 116 139 138 132 65 61 66 83 94 75 66 64 75 67 100 52 79 62 98 88 106 86 80 78 79 53 83 74 62 83 80 48 82 97 120 93 139 51 88 25 42 43 4 76 97 44 62 77 87 70 54 42 40 50 0 58 45 34 39 66 25 35 53 53 45 14 51 73 24 101 170 190 168 156 165 175 159 107 121 56 89 33 58 151 157 160 164 227 225 223 206 239 184 208 233 199 193 190 189 169 197 165 158 140 109 113 130 151 78 89 89 75 55 76 108 108 115 85 78 75 95 34 82 69 78 50 53 83 44 62 59 68 33 78 135 58 60 62 84 38 99 50 22 125 45 57 75 118 74 96 53 102 141 147 169 182 147 123 148 131 124 101 89 93 107 114 126 128 145 104 69 77 73 125 106 124 87 72 96 129 154 125 86 125 91 78 51 64 59 94 67 83 71 85 86 66 96 141 103 62 69 84 56 89 42 52 55 51 60 49 84 72 78 76 86 83 56 45 62 63 91 45 52 128 50 32 40 75 63 52 58 60 47 27 47 40 4 37 39 36 56 40 62 39 74 87 213 193 193 181 184 135 130 89 71 44 79 39 16 152 180 209 189 169 197 187 192 196 171 213 163 198 180 190 199 205 189 186 120 170 81 147 136 127 92 131 106 86 84 89 81 88 130 96 60 95 78 93 57 108 49 83 75 70 39 24 57 41 83 122 65 113 49 65 69 101 67 98 94 80 80 99 84 79 54 90 67 63 115 188 168 142 143 126 170 114 128 125 83 115 115 116 113 129 110 164 126 110 121 75 111 110 84 87 81 93 127 112 115 126 116 94 123 118 52 69 56 69 75 86 55 89 66 144 94 109 106 115 57 49 82 44 72 64 56 96 51 55 44 97 95 149 91 62 83 75 85 57 92 60 44 65 47 53 42 29 78 62 41 53 65 66 56 73 27 67 53 52 5 88 48 114 174 202 178 155 154 121 96 53 24 68 59 38 58 159 143 182 164 142 201 197 170 186 185 195 189 208 205 191 203 189 196 177 115 136 152 143 135 89 52 68 66 73 75 96 71 93 86 124 53 94 62 74 103 27 115 117 93 77 50 61 16 60 68 42 109 112 58 75 82 69 55 78 79 66 98 46 82 79 82 111 96 109 54 60 162 171 90 154 121 136 134 115 94 150 104 76 130 119 79 128 139 111 133 102 115 55 64 70 94 114 91 68 125 118 111 134 100 133 148 133 113 111 78 92 48 66 63 115 50 87 83 120 73 78 55 64 58 43 66 66 116 62 37 63 41 56 86 72 107 47 93 53 36 38 53 81 46 63 81 36 59 57 83 70 59 61 65 52 39 41 43 70 50 69 104 137 157 174 155 172 100 138 66 58 50 22 54 34 88 188 196 168 181 182 164 165 181 157 198 207 161 185 174 152 164 152 182 215 133 90 138 120 122 111 98 108 63 40 101 80 96 88 55 74 54 114 91 130 84 84 74 103 103 74 71 79 120 104 92 50 18 101 105 114 116 125 38 56 53 53 73 94 79 80 64 71 95 99 46 104 88 154 154 100 100 119 159 150 92 139 132 115 98 97 126 107 126 90 110 87 112 63 45 105 120 73 94 97 48 64 76 101 117 126 131 152 104 142 75 138 104 92 55 100 90 76 69 78 98 67 65 80 121 78 60 94 44 99 85 67 75 20 46 42 68 78 49 43 49 22 73 31 50 73 21 58 76 69 68 41 97 53 57 73 40 64 9 63 64 60 42 117 154 188 137 150 102 111 61 43 40 57 7 44 141 210 196 215 148 182 160 121 191 149 208 180 163 216 181 183 138 166 171 155 140 154 141 128 52 99 68 88 0 64 23 49 73 107 93 82 120 90 98 104 102 126 66 96 73 73 81 98 41 97 76 71 90 39 72 124 125 133 123 97 56 36 75 55 76 76 63 92 70 127 55 64 23 75 125 92 130 123 132 169 95 90 81 108 98 113 104 113 142 79 152 123 74 102 100 108 98 71 68 115 132 61 73 117 93 76 119 83 39 128 138 128 112 118 114 93 139 94 113 109 108 54 72 56 102 73 103 76 59 70 75 46 86 33 91 54 56 67 61 83 73 65 52 69 49 74 24 50 80 65 57 66 49 82 84 49 84 34 73 56 52 42 84 100 221 136 134 155 70 74 7 27 30 18 28 40 162 244 194 181 152 93 120 117 121 127 172 164 187 173 179 161 155 134 140 147 133 130 115 107 69 75 87 33 24 41 43 17 81 0 67 59 107 61 107 66 80 58 88 112 75 95 63 114 94 79 68 58 42 22 32 79 124 112 77 101 110 73 78 100 50 29 23 76 54 71 57 100 83 54 56 145 105 96 117 134 92 119 110 97 101 86 132 75 114 136 89 138 92 102 102 80 74 76 100 90 96 91 72 91 98 48 69 55 101 71 73 103 126 115 98 90 115 146 110 127 141 107 105 119 105 106 107 76 40 41 61 47 58 38 44 14 30 10 16 70 60 43 66 28 74 73 64 43 63 16 83 52 49 68 59 32 40 44 6 8 75 53 50 155 159 166 142 99 102 18 0 19 38 35 34 35 88 176 155 164 193 159 109 112 89 110 105 195 163 177 161 139 170 123 114 140 119 120 122 134 103 77 65 0 23 0 31 0 79 18 15 33 44 28 30 48 69 83 103 63 111 76 61 58 78 43 111 78 45 60 67 23 34 88 71 146 103 122 70 77 91 38 86 58 57 102 111 49 90 109 80 77 140 122 153 123 135 113 137 91 56 97 102 66 87 126 39 87 103 115 65 59 69 55 87 118 38 87 118 70 56 68 79 46 87 56 41 51 70 78 111 77 93 129 137 119 180 104 79 112 127 106 167 91 104 127 115 62 80 33 61 56 20 20 33 46 29 57 29 82 47 15 49 27 43 33 64 38 36 74 59 30 84 48 81 85 61 67 96 129 141 174 94 79 67 49 79 64 38 39 70 20 41 88 186 187 145 149 105 90 75 100 108 91 154 160 137 173 160 148 140 144 119 107 107 83 90 54 14 10 44 16 30 28 41 55 58 24 23 53 43 46 0 59 33 24 25 33 5 73 21 27 45 45 28 0 66 60 0 52 64 74 77 66 84 85 134 81 86 92 32 112 109 47 71 82 113 72 56 87 119 90 108 119 118 103 127 116 91 76 115 62 95 107 111 95 101 97 83 116 76 96 78 89 83 120 83 89 66 74 38 33 53 36 68 46 59 82 41 55 97 120 112 112 74 104 93 81 80 158 140 126 116 104 95 180 134 103 66 88 56 40 61 49 56 49 46 98 63 63 77 92 90 86 86 126 121 105 99 110 94 79 102 109 108 141 85 104 108 34 46 59 103 122 82 61 52 17 51 69 87 174 124 131 88 101 15 178 163 161 147 115 141 96 146 96 117 82 132 136 58 61 69 61 43 28 72 56 105 80 102 90 76 73 94 106 114 117 72 71 60 106 74 16 39 14 72 7 17 73 55 35 74 63 30 83 25 39 18 12 61 74 40 21 98 92 78 100 106 106 68 65 67 88 40 67 141 133 124 160 112 103 113 123 140 130 136 71 95 47 103 108 90 97 66 75 75 83 82 85 95 71 82 72 59 44 51 3 46 52 50 36 55 70 40 68 106 64 83 103 62 74 104 101 134 50 105 124 100 74 136 122 132 146 72 110 128 82 70 77 98 89 98 71 72 105 134 114 115 76 121 94 105 88 108 96 57 90 97 71 44 71 68 46 66 70 58 62 51 117 109 72 63 7 57 43 110 61 123 113 99 95 83 203 173 161 109 117 84 117 127 131 112 118 75 103 95 75 70 56 53 0 35 69 36 51 48 49 52 75 38 66 54 23 58 90 63 104 82 28 66 40 74 88 40 35 60 71 68 91 109 94 91 104 110 75 15 97 70 92 90 28 99 101 64 66 80 54 101 90 91 72 114 139 143 152 142 108 132 132 127 101 99 88 84 94 105 75 89 93 118 73 73 95 97 77 108 75 70 128 86 47 51 61 0 9 67 64 32 68 64 67 52 48 29 89 93 37 93 47 81 95 96 97 55 90 80 95 102 123 77 124 105 93 126 121 103 86 79 93 97 127 93 115 92 74 99 117 102 75 74 82 79 84 108 77 46 94 33 97 59 82 68 45 93 129 120 97 64 12 30 43 69 53 83 90 72 68 72 155 174 181 162 90 82 100 98 137 138 98 79 90 66 62 10 29 35 13 11 15 31 47 33 66 74 12 53 58 71 19 52 29 35 55 77 78 46 41 42 90 39 37 41 9 36 55 58 69 61 121 118 111 82 92 21 48 122 62 95 66 114 75 84 83 88 85 116 81 104 75 102 131 161 161 106 133 75 129 110 108 86 119 90 73 86 88 85 77 126 116 95 90 72 91 90 40 106 80 72 62 91 61 38 26 68 68 34 60 73 44 75 27 33 43 54 85 48 69 80 80 90 61 81 77 121 123 86 91 88 75 114 108 115 75 91 101 103 49 79 130 58 54 73 90 83 58 71 58 60 62 84 71 27 41 42 54 56 32 40 62 64 136 80 106 82 93 20 29 39 38 66 58 60 56 62 91 84 112 85 90 92 20 53 59 50 78 27 72 54 22 22 21 67 21 25 0 48 3 33 47 17 58 27 26 43 57 48 25 25 25 67 29 86 46 70 33 60 50 36 65 49 35 3 5 38 85 118 119 81 91 110 59 78 82 66 97 57 80 88 55 71 118 108 105 65 44 89 144 158 165 178 94 131 100 83 119 76 111 96 105 114 83 80 88 118 89 94 81 111 64 84 93 43 90 55 81 13 86 62 78 32 34 62 38 61 58 51 28 67 35 70 62 68 31 32 83 90 87 65 96 74 106 84 32 70 86 55 88 50 91 88 47 87 76 50 45 42 73 102 64 67 58 36 15 63 43 56 44 18 31 48 28 52 52 59 72 65 80 63 81 101 60 48 88 45 57 66 92 40 23 78 60 30 98 112 114 84 38 36 87 53 74 84 50 39 14 28 41 36 44 29 40 51 34 55 71 45 45 40 59 52 87 1 58 50 59 50 40 83 38 49 64 31 50 47 43 23 0 40 60 48 48 39 36 108 88 121 81 112 76 62 87 109 76 55 117 48 81 78 86 97 44 78 80 141 147 140 123 92 97 105 108 78 95 33 82 92 89 41 96 103 69 89 78 62 101 62 101 68 59 65 91 48 119 115 41 52 79 102 39 37 59 19 18 26 48 84 61 56 44 69 70 58 66 54 82 84 26 80 68 83 87 93 97 60 46 77 74 22 39 42 44 51 1 69 80 56 62 44 27 48 14 51 50 73 39 44 74 84 47 54 33 75 64 55 122 75 61 85 18 30 83 83 89 61 25 23 86 44 77 100 117 56 57 88 67 47 39 58 68 36 9 57 10 46 40 43 25 50 22 16 34 17 84 31 45 58 11 41 36 70 27 62 54 11 43 46 18 51 15 54 16 60 57 33 76 56 39 65 43 58 28 64 81 40 41 106 69 64 34 47 65 112 93 103 100 71 94 58 140 76 124 137 182 120 157 127 140 82 59 94 85 106 88 100 76 100 110 52 98 86 47 62 60 62 90 85 124 92 54 51 33 76 63 25 25 68 62 87 83 86 36 57 56 76 40 46 99 38 72 88 55 59 84 79 52 73 53 78 63 57 72 67 44 40 58 17 55 18 64 35 61 55 32 71 31 55 18 34 74 15 57 8 30 49 63 49 41 59 22 91 81 86 84 66 95 72 61 110 87 42 47 68 80 53 111 95 84 66 62 84 0 55 42 41 15 29 15 28 41 0 10 17 56 69 23 0 32 27 39 27 25 63 35 66 73 44 33 68 78 61 54 16 15 20 30 74 37 74 70 25 44 34 51 65 38 72 54 44 11 47 44 78 43 21 45 0 25 78 66 64 69 71 54 81 53 77 83 97 141 114 122 121 107 112 102 49 97 121 72 129 58 83 85 118 67 76 89 97 95 97 57 77 33 76 90 57 92 39 46 48 18 75 33 29 30 61 80 61 36 34 69 12 85 50 21 56 52 34 59 76 54 58 85 76 66 38 51 48 65 26 94 81 57 49 48 27 74 76 17 66 49 0 23 60 52 34 57 53 53 51 96 31 52 68 6 73 89 126 100 88 95 45 52 89 58 69 86 66 82 96 100 73 8 16 83 65 65 65 62 42 26 32 24 39 31 22 18 34 49 50 59 18 18 40 52 0 62 24 36 11 40 34 6 21 39 35 56 23 67 55 31 42 73 44 81 76 84 84 7 52 25 17 36 64 66 75 67 64 38 62 83 52 24 36 68 67 51 86 48 38 106 98 48 72 92 159 120 136 90 153 85 122 62 57 80 104 52 59 69 83 64 117 97 66 54 86 111 69 25 87 80 122 48 67 55 65 40 40 45 52 63 55 26 28 33 65 56 72 45 22 56 22 35 41 70 57 60 74 46 12 79 78 53 68 107 93 53 49 86 26 43 49 57 60 40 33 16 53 57 39 27 49 57 42 40 27 53 64 69 53 45 53 106 118 139 101 101 82 48 75 31 73 74 81 80 67 88 6 41 111 61 94 82 65 39 20 37 21 2 30 56 17 47 24 47 35 30 57 15 52 1 13 72 47 46 23 37 21 9 45 31 84 55 76 42 65 53 75 87 83 66 65 76 59 6 38 49 39 96 15 43 32 54 51 56 51 82 52 36 69 53 43 43 89 28 56 90 95 69 67 96 134 109 131 141 112 106 110 95 82 93 83 96 84 78 93 102 82 76 91 85 65 64 49 65 70 87 71 62 54 73 96 49 7 44 49 38 42 78 53 71 57 59 75 36 20 17 77 78 60 65 40 40 63 30 52 64 55 43 63 54 60 104 36 40 46 59 90 50 39 83 32 65 41 27 74 88 49 42 36 62 61 89 39 17 63 74 50 77 118 95 75 85 95 45 50 29 100 56 60 84 43 53 32 47 67 17 65 87 59 51 15 47 55 22 41 55 76 25 9 19 51 24 19 26 42 21 46 0 22 40 49 52 23 17 28 37 81 27 25 33 72 73 102 95 89 58 51 89 41 56 25 50 50 1 47 55 49 66 23 42 64 47 36 37 48 51 60 47 57 61 103 103 81 46 38 70 104 103 139 106 120 112 97 97 123 97 68 72 51 70 86 122 132 108 131 60 74 67 96 39 62 62 47 61 95 66 84 67 50 27 46 87 29 32 28 39 49 33 53 72 98 19 32 50 18 80 64 67 63 50 62 81 77 56 75 35 48 36 78 19 89 55 63 72 54 68 62 36 67 65 46 19 31 34 20 68 75 41 64 48 41 51 60 49 49 84 64 93 86 54 61 74 49 14 71 68 1 32 43 18 19 18 65 26 35 38 7 14 36 29 34 48 35 27 0 0 57 42 18 18 14 25 29 0 18 42 13 42 61 16 41 61 0 12 41 47 100 77 87 51 66 74 79 77 41 58 97 27 56 73 41 31 63 84 33 59 25 45 41 25 23 90 50 28 63 57 62 56 36 84 62 106 59 69 138 93 88 137 160 172 143 107 95 93 26 81 86 89 95 63 109 71 68 94 68 102 84 57 25 53 62 135 127 78 43 40 65 96 61 59 27 24 31 54 73 51 22 37 78 27 36 91 24 63 99 68 72 60 44 57 48 69 47 60 50 71 52 7 55 35 72 41 34 40 28 45 58 39 35 51 39 48 70 66 67 49 53 57 27 102 39 46 25 26 54 59 60 36 33 14 40 29 49 46 42 0 4 52 0 0 3 0 26 51 14 43 22 37 20 17 63 46 22 12 49 33 32 51 33 43 52 47 43 9 11 12 24 13 9 16 44 20 5 27 33 53 28 39 53 51 43 51 28 38 29 37 30 21 44 24 19 18 8 0 58 0 0 25 39 26 46 13 70 73 83 64 54 0 51 53 53 137 107 156 139 102 152 100 118 74 63 45 44 39 69 71 69 89 126 72 95 99 127 56 83 62 30 29 133 62 99 83 66 61 30 71 37 48 66 49 34 24 51 34 71 24 43 65 40 50 85 76 42 58 61 93 42 107 71 45 45 51 44 71 61 55 68 68 54 92 42 90 51 53 33 101 54 63 38 46 32 62 44 55 41 35 89 42 49 25 28 72 10 53 55 37 34 45 24 7 32 41 33 23 0 13 19 35 44 75 41 64 50 64 43 39 62 38 44 52 35 17 17 63 70 19 62 18 55 63 43 20 23 33 14 25 0 38 5 21 10 25 56 52 29 0 41 35 41 31 27 21 16 14 9 25 0 14 23 7 4 0 0 0 17 0 10 44 16 35 30 33 13 43 14 7 0 84 132 170 149 141 145 53 116 50 85 94 76 120 81 51 65 53 106 122 58 58 94 116 54 66 90 49 93 88 74 80 77 72 83 69 65 33 53 95 65 63 48 36 65 30 30 77 41 65 55 86 63 62 57 56 54 50 64 25 31 7 64 30 50 25 42 38 50 45 72 53 37 69 65 65 62 66 50 52 89 44 99 69 71 39 55 17 53 37 23 4 69 58 10 36 70 34 41 38 42 18 60 10 82 6 35 51 56 43 11 31 60 57 107 39 58 30 0 36 51 46 42 41 21 14 57 0 43 7 23 29 19 30 27 13 0 33 8 59 29 30 22 9 1 3 25 20 21 41 41 14 34 34 0 27 17 0 0 20 5 16 29 13 12 0 0 0 31 14 33 39 40 25 0 15 20 24 105 131 108 105 109 88 106 157 104 57 107 85 85 73 44 86 80 83 88 139 33 64 77 104 105 80 56 92 67 49 99 44 63 54 66 73 59 71 32 67 68 50 28 31 59 12 43 48 29 67 69 78 52 68 27 52 45 36 67 44 49 16 60 50 77 52 53 57 79 43 65 39 66 39 42 52 58 48 40 34 55 59 15 35 78 40 57 36 54 45 34 34 31 46 63 60 67 52 42 27 48 63 80 56 55 29 40 33 45 1 63 109 32 38 14 55 50 45 39 28 55 34 54 51 26 39 11 68 70 21 67 30 20 22 30 20 19 25 0 0 6 0 24 0 0 5 2 0 21 13 27 37 46 4 30 19 0 0 0 15 0 56 0 0 47 21 11 0 6 8 14 4 2 38 43 41 0 4 98 167 112 98 117 139 140 99 94 114 74 96 76 67 102 65 93 104 110 33 52 84 102 81 57 86 32 111 132 93 124 59 93 71 38 71 41 62 27 17 66 49 61 24 74 64 0 51 65 21 46 56 14 47 60 16 64 52 33 47 62 32 76 51 91 76 54 42 35 78 21 68 49 60 27 54 37 56 23 33 34 44 30 80 62 47 7 2 27 15 56 49 50 67 79 25 25 40 57 67 26 63 40 48 51 17 44 46 45 14 32 41 17 43 35 3 47 23 38 13 67 0 28 33 51 36 59 54 55 73 23 46 18 19 3 13 3 28 19 42 48 25 0 5 14 0 22 0 0 45 2 1 31 24 27 12 3 11 0 0 0 20 5 17 23 44 19 43 0 17 6 47 27 4 0 24 20 149 116 126 141 123 100 95 120 67 83 98 74 81 81 77 88 52 120 48 74 78 90 107 65 75 86 62 143 115 80 67 99 60 68 21 43 7 25 16 37 74 36 59 16 91 48 34 18 67 37 38 50 60 78 74 63 2 27 19 68 43 55 3 30 58 101 41 39 21 50 51 34 91 71 34 27 22 39 42 11 31 21 26 6 29 52 79 58 99 43 38 34 56 42 55 34 70 52 58 38 46 51 16 63 8 62 46 44 0 57 65 23 62 28 15 35 44 58 7 109 47 99 65 27 78 31 64 31 45 69 29 0 31 26 0 34 3 0 44 1 6 2 12 0 30 4 10 40 19 44 18 0 8 13 18 22 12 14 0 30 20 16 4 13 29 0 31 33 41 51 39 32 10 16 15 66 64 134 166 128 119 106 115 102 92 93 102 55 83 75 76 96 44 47 81 52 72 56 46 104 105 89 89 44 115 74 104 91 55 34 68 26 68 51 64 8 45 117 59 81 31 9 84 56 48 44 64 38 27 37 40 55 54 21 58 44 21 53 64 74 62 81 10 90 48 77 53 52 45 40 35 29 57 26 70 23 58 40 15 74 59 31 53 26 19 6 13 60 34 27 58 59 7 41 33 0 57 42 60 54 49 38 63 27 29 16 62 18 21 28 21 44 45 32 19 48 7 52 5 48 76 0 50 31 28 56 31 41 37 16 0 16 23 7 35 39 0 27 11 0 27 32 20 42 14 37 0 47 20 1 36 42 49 22 29 42 0 30 16 48 13 40 16 0 27 27 36 49 9 0 23 11 23 3 118 141 125 131 74 95 85 120 101 110 60 78 47 64 54 38 56 75 71 64 73 52 83 33 131 35 53 69 95 86 58 64 85 46 27 58 32 72 32 14 47 14 58 54 66 35 79 29 55 46 21 33 36 34 3 31 35 26 33 55 74 31 34 87 70 55 41 71 96 67 5 42 54 54 53 1 84 36 6 50 0 48 23 63 24 26 37 74 20 55 9 44 41 42 16 16 52 23 6 46 66 53 32 61 29 22 37 23 56 27 48 26 35 13 20 16 35 66 43 97 46 45 43 27 10 26 61 62 34 0 0 53 30 33 13 26 17 0 38 13 4 21 43 22 25 22 0 31 31 11 40 27 28 30 2 22 16 3 0 47 10 7 51 49 34 0 20 34 49 14 0 0 28 4 63 62 2 165 108 96 135 115 121 108 78 93 92 68 100 96 59 75 52 33 63 54 54 44 82 74 59 89 83 81 36 120 70 89 46 82 62 21 43 41 33 16 84 3 61 17 43 36 47 92 79 60 35 22 28 30 27 0 8 0 26 16 36 26 78 43 20 55 69 23 6 42 77 82 54 59 40 15 41 51 55 49 2 11 83 38 42 10 47 20 55 50 56 55 74 27 50 65 29 48 95 1 38 9 67 4 41 48 33 48 42 28 23 66 20 27 24 68 40 43 26 33 31 53 26 26 25 47 41 7 0 25 67 23 6 18 31 24 7 25 0 13 42 28 22 33 24 46 33 16 27 0 28 60 0 55 0 49 8 17 15 60 46 25 38 0 19 42 16 0 8 26 0 25 21 84 42 0 29 36 124 159 167 124 97 103 93 61 85 59 94 78 73 95 50 55 59 46 65 86 89 60 82 99 127 52 79 57 99 76 82 74 18 90 56 57 53 30 41 70 38 38 84 49 33 63 37 40 28 60 37 16 24 0 44 13 72 67 0 0 41 21 13 37 15 82 12 38 71 54 62 31 75 45 65 55 21 10 42 29 35 40 42 76 12 48 39 13 33 59 14 50 47 36 29 21 24 10 50 20 26 38 22 52 24 18 31 4 10 20 33 46 32 85 22 47 19 14 32 10 11 5 29 43 35 34 47 14 26 33 37 13 0 42 32 30 26 27 28 0 26 36 18 0 30 21 32 0 60 23 0 21 0 20 17 7 30 20 34 28 74 29 8 39 35 11 14 24 55 0 45 57 17 0 48 19 59 123 140 127 84 104 105 108 118 78 108 74 70 60 82 69 71 69 92 79 38 109 54 88 100 125 83 73 57 103 94 49 85 81 48 28 44 0 52 0 63 43 45 35 54 29 46 51 50 36 0 44 63 0 0 6 29 37 19 46 51 15 1 43 0 59 10 57 23 24 46 44 55 61 76 32 24 20 61 31 42 79 6 45 66 22 54 50 40 65 15 9 16 22 46 37 15 53 5 27 18 24 43 35 22 5 10 9 13 46 6 37 36 30 25 22 0 22 0 40 36 3 41 34 49 10 62 91 25 43 5 36 3 22 13 12 27 37 36 33 7 4 21 29 28 0 13 0 6 36 40 2 32 7 16 20 34 0 15 0 5 10 1 27 60 13 0 45 23 11 18 0 40 63 25 12 43 5 111 133 95 97 119 92 126 76 89 71 36 38 14 28 71 19 44 76 106 78 73 112 114 92 75 97 72 68 65 102 100 156 37 82 35 68 10 58 26 47 80 33 8 75 55 53 75 65 49 22 36 40 29 0 43 32 19 71 9 26 43 48 35 47 51 41 66 34 0 5 82 38 51 73 75 41 29 40 41 69 31 53 54 14 43 30 9 0 17 33 42 0 15 21 7 22 49 22 21 39 35 22 33 36 14 39 30 33 9 22 10 24 42 10 41 54 0 43 8 18 54 35 39 27 2 66 59 24 10 53 25 20 0 46 53 15 2 36 14 18 13 38 1 63 28 51 10 14 28 23 36 16 33 9 16 23 23 0 41 17 18 29 21 0 12 12 42 51 0 27 32 31 19 19 57 51 43 99 118 134 117 121 100 106 83 81 65 85 96 59 86 69 57 44 43 66 79 45 107 102 64 60 111 86 75 46 94 81 80 80 30 47 32 34 37 23 35 21 48 82 53 73 46 43 37 56 17 66 40 35 39 44 42 0 30 15 16 3 35 44 58 33 7 36 37 37 36 35 32 50 46 59 1 19 12 26 17 52 25 56 3 22 11 25 7 46 17 48 34 29 0 59 36 0 16 14 64 39 23 58 64 34 6 19 24 45 25 1 14 0 27 0 17 2 11 60 6 27 29 11 13 22 49 20 51 2 29 37 43 13 16 28 62 29 16 0 25 38 33 10 32 10 43 40 19 46 13 3 2 2 41 17 20 0 15 13 0 40 22 29 47 41 18 27 2 39 5 7 28 39 32 11 61 32 104 109 80 120 111 67 90 99 97 67 108 96 81 22 55 63 39 89 90 94 48 78 85 80 72 86 96 62 57 80 119 67 91 67 69 78 41 47 45 16 16 54 0 11 34 33 53 63 56 19 74 53 19 6 6 78 32 19 39 27 58 46 19 36 36 40 45 6 42 11 24 57 39 14 34 0 16 0 1 45 9 47 28 4 32 3 27 15 10 23 13 40 46 74 28 27 5 0 38 11 6 13 25 21 0 20 26 48 26 19 15 19 0 38 29 49 12 12 34 1 29 24 54 40 0 61 43 2 22 31 41 40 25 4 20 0 61 3 32 10 42 33 2 0 0 0 42 45 10 2 11 6 28 12 25 9 39 32 0 0 48 0 34 16 8 92 7 32 42 13 43 26 17 75 66 92 55 118 102 90 86 131 87 134 127 52 89 112 105 79 78 37 59 30 89 51 57 98 50 111 84 65 78 73 50 75 68 75 76 68 63 34 51 42 28 29 24 66 21 45 2 10 15 62 41 77 34 31 31 55 47 23 12 21 0 55 56 28 54 70 14 8 19 11 10 40 21 0 51 26 29 11 54 49 30 25 8 6 0 26 26 17 0 10 31 59 4 47 51 7 7 32 17 0 22 5 16 33 27 65 27 17 0 0 27 21 0 20 15 41 0 62 7 12 34 58 22 27 43 12 33 46 52 24 22 10 60 56 17 26 3 37 29 13 8 0 15 12 21 27 34 24 0 19 27 33 30 32 0 22 0 20 36 16 0 0 36 23 0 6 7 16 51 63 33 38 25 0 8 19 4 0 41 45 116 127 137 117 92 109 137 95 82 91 64 74 100 51 56 75 49 106 70 48 94 55 79 96 36 70 80 74 74 0 83 107 113 60 75 72 4 19 45 24 32 33 9 42 79 17 40 71 42 26 102 52 70 33 42 42 28 24 20 59 0 16 55 35 0 0 0 14 14 38 6 6 2 2 20 13 28 2 13 28 27 0 23 19 46 37 48 40 12 34 9 29 24 0 46 0 41 43 5 10 5 28 16 0 25 35 19 38 23 62 3 60 7 46 37 64 11 0 0 0 13 43 67 45 17 50 64 0 35 15 16 12 41 31 0 13 0 0 22 0 22 7 22 60 41 22 31 0 21 0 32 48 0 12 40 18 32 28 2 35 26 43 0 41 10 1 0 37 0 25 29 15 43 38 52 42 83 130 102 111 89 137 103 74 109 85 45 69 99 89 65 55 78 72 70 110 80 115 95 115 96 81 76 94 87 54 36 92 114 73 102 50 2 75 17 3 23 50 47 57 45 23 3 27 92 62 94 57 50 3 63 33 21 38 54 57 33 39 17 27 68 15 12 40 28 0 6 22 12 40 37 50 39 0 1 23 42 56 60 5 31 35 18 36 20 36 6 23 27 9 22 4 46 48 8 43 13 0 10 0 0 26 43 18 52 30 25 17 56 54 22 0 48 20 25 43 58 47 27 30 36 26 10 77 20 64 19 31 7 37 7 26 29 0 43 20 0 13 28 36 43 54 33 35 36 0 26 16 35 39 23 8 31 39 12 59 57 22 9 23 0 26 61 27 43 20 23 4 62 17 47 27 42 43 
\ No newline at end of file
diff --git a/third_party/ceres/data/libmv-ba-problems/Readme.txt b/third_party/ceres/data/libmv-ba-problems/Readme.txt
deleted file mode 100644
index 9465ad8..0000000
--- a/third_party/ceres/data/libmv-ba-problems/Readme.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Problem files are created from Tears of Steel production files.
-
-- problem_01.bin is a final camera motion refinement step of 07_1a scene.
-- problem_02.bin is a final camera motion refinement step of 03_2a scene.
-- problem_03.bin is a final camera motion refinement step of 09_1a scene.
diff --git a/third_party/ceres/data/libmv-ba-problems/problem_01.bin b/third_party/ceres/data/libmv-ba-problems/problem_01.bin
deleted file mode 100644
index 74891e8..0000000
--- a/third_party/ceres/data/libmv-ba-problems/problem_01.bin
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/data/libmv-ba-problems/problem_02.bin b/third_party/ceres/data/libmv-ba-problems/problem_02.bin
deleted file mode 100644
index 21bfade..0000000
--- a/third_party/ceres/data/libmv-ba-problems/problem_02.bin
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/data/libmv-ba-problems/problem_03.bin b/third_party/ceres/data/libmv-ba-problems/problem_03.bin
deleted file mode 100644
index 5a2910d..0000000
--- a/third_party/ceres/data/libmv-ba-problems/problem_03.bin
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/data/nist/Bennett5.dat b/third_party/ceres/data/nist/Bennett5.dat
deleted file mode 100644
index eba218a..0000000
--- a/third_party/ceres/data/nist/Bennett5.dat
+++ /dev/null
@@ -1,214 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Bennett5          (Bennett5.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  43)
-               Certified Values  (lines 41 to  48)
-               Data              (lines 61 to 214)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               superconductivity magnetization modeling.  The
-               response variable is magnetism, and the predictor
-               variable is the log of time in minutes.
-
-Reference:     Bennett, L., L. Swartzendruber, and H. Brown, 
-               NIST (1994).  
-               Superconductivity Magnetization Modeling.
-
-
-
-
-
-
-Data:          1 Response Variable  (y = magnetism)
-               1 Predictor Variable (x = log[time])
-               154 Observations
-               Higher Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               3 Parameters (b1 to b3)
-
-               y = b1 * (b2+x)**(-1/b3)  +  e
-
- 
- 
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   -2000       -1500        -2.5235058043E+03  2.9715175411E+02
-  b2 =      50          45         4.6736564644E+01  1.2448871856E+00
-  b3 =       0.8         0.85      9.3218483193E-01  2.0272299378E-02
-
-Residual Sum of Squares:                    5.2404744073E-04
-Residual Standard Deviation:                1.8629312528E-03
-Degrees of Freedom:                               151
-Number of Observations:                           154
-
-
-
-
-
-
-
-
-
-
-
-Data:   y               x
-     -34.834702E0      7.447168E0
-     -34.393200E0      8.102586E0
-     -34.152901E0      8.452547E0
-     -33.979099E0      8.711278E0
-     -33.845901E0      8.916774E0
-     -33.732899E0      9.087155E0
-     -33.640301E0      9.232590E0
-     -33.559200E0      9.359535E0
-     -33.486801E0      9.472166E0
-     -33.423100E0      9.573384E0
-     -33.365101E0      9.665293E0
-     -33.313000E0      9.749461E0
-     -33.260899E0      9.827092E0
-     -33.217400E0      9.899128E0
-     -33.176899E0      9.966321E0
-     -33.139198E0     10.029280E0
-     -33.101601E0     10.088510E0
-     -33.066799E0     10.144430E0
-     -33.035000E0     10.197380E0
-     -33.003101E0     10.247670E0
-     -32.971298E0     10.295560E0
-     -32.942299E0     10.341250E0
-     -32.916302E0     10.384950E0
-     -32.890202E0     10.426820E0
-     -32.864101E0     10.467000E0
-     -32.841000E0     10.505640E0
-     -32.817799E0     10.542830E0
-     -32.797501E0     10.578690E0
-     -32.774300E0     10.613310E0
-     -32.757000E0     10.646780E0
-     -32.733799E0     10.679150E0
-     -32.716400E0     10.710520E0
-     -32.699100E0     10.740920E0
-     -32.678799E0     10.770440E0
-     -32.661400E0     10.799100E0
-     -32.644001E0     10.826970E0
-     -32.626701E0     10.854080E0
-     -32.612202E0     10.880470E0
-     -32.597698E0     10.906190E0
-     -32.583199E0     10.931260E0
-     -32.568699E0     10.955720E0
-     -32.554298E0     10.979590E0
-     -32.539799E0     11.002910E0
-     -32.525299E0     11.025700E0
-     -32.510799E0     11.047980E0
-     -32.499199E0     11.069770E0
-     -32.487598E0     11.091100E0
-     -32.473202E0     11.111980E0
-     -32.461601E0     11.132440E0
-     -32.435501E0     11.152480E0
-     -32.435501E0     11.172130E0
-     -32.426800E0     11.191410E0
-     -32.412300E0     11.210310E0
-     -32.400799E0     11.228870E0
-     -32.392101E0     11.247090E0
-     -32.380501E0     11.264980E0
-     -32.366001E0     11.282560E0
-     -32.357300E0     11.299840E0
-     -32.348598E0     11.316820E0
-     -32.339901E0     11.333520E0
-     -32.328400E0     11.349940E0
-     -32.319698E0     11.366100E0
-     -32.311001E0     11.382000E0
-     -32.299400E0     11.397660E0
-     -32.290699E0     11.413070E0
-     -32.282001E0     11.428240E0
-     -32.273300E0     11.443200E0
-     -32.264599E0     11.457930E0
-     -32.256001E0     11.472440E0
-     -32.247299E0     11.486750E0
-     -32.238602E0     11.500860E0
-     -32.229900E0     11.514770E0
-     -32.224098E0     11.528490E0
-     -32.215401E0     11.542020E0
-     -32.203800E0     11.555380E0
-     -32.198002E0     11.568550E0
-     -32.189400E0     11.581560E0
-     -32.183601E0     11.594420E0
-     -32.174900E0     11.607121E0
-     -32.169102E0     11.619640E0
-     -32.163300E0     11.632000E0
-     -32.154598E0     11.644210E0
-     -32.145901E0     11.656280E0
-     -32.140099E0     11.668200E0
-     -32.131401E0     11.679980E0
-     -32.125599E0     11.691620E0
-     -32.119801E0     11.703130E0
-     -32.111198E0     11.714510E0
-     -32.105400E0     11.725760E0
-     -32.096699E0     11.736880E0
-     -32.090900E0     11.747890E0
-     -32.088001E0     11.758780E0
-     -32.079300E0     11.769550E0
-     -32.073502E0     11.780200E0
-     -32.067699E0     11.790730E0
-     -32.061901E0     11.801160E0
-     -32.056099E0     11.811480E0
-     -32.050301E0     11.821700E0
-     -32.044498E0     11.831810E0
-     -32.038799E0     11.841820E0
-     -32.033001E0     11.851730E0
-     -32.027199E0     11.861550E0
-     -32.024300E0     11.871270E0
-     -32.018501E0     11.880890E0
-     -32.012699E0     11.890420E0
-     -32.004002E0     11.899870E0
-     -32.001099E0     11.909220E0
-     -31.995300E0     11.918490E0
-     -31.989500E0     11.927680E0
-     -31.983700E0     11.936780E0
-     -31.977900E0     11.945790E0
-     -31.972099E0     11.954730E0
-     -31.969299E0     11.963590E0
-     -31.963501E0     11.972370E0
-     -31.957701E0     11.981070E0
-     -31.951900E0     11.989700E0
-     -31.946100E0     11.998260E0
-     -31.940300E0     12.006740E0
-     -31.937401E0     12.015150E0
-     -31.931601E0     12.023490E0
-     -31.925800E0     12.031760E0
-     -31.922899E0     12.039970E0
-     -31.917101E0     12.048100E0
-     -31.911301E0     12.056170E0
-     -31.908400E0     12.064180E0
-     -31.902599E0     12.072120E0
-     -31.896900E0     12.080010E0
-     -31.893999E0     12.087820E0
-     -31.888201E0     12.095580E0
-     -31.885300E0     12.103280E0
-     -31.882401E0     12.110920E0
-     -31.876600E0     12.118500E0
-     -31.873699E0     12.126030E0
-     -31.867901E0     12.133500E0
-     -31.862101E0     12.140910E0
-     -31.859200E0     12.148270E0
-     -31.856300E0     12.155570E0
-     -31.850500E0     12.162830E0
-     -31.844700E0     12.170030E0
-     -31.841801E0     12.177170E0
-     -31.838900E0     12.184270E0
-     -31.833099E0     12.191320E0
-     -31.830200E0     12.198320E0
-     -31.827299E0     12.205270E0
-     -31.821600E0     12.212170E0
-     -31.818701E0     12.219030E0
-     -31.812901E0     12.225840E0
-     -31.809999E0     12.232600E0
-     -31.807100E0     12.239320E0
-     -31.801300E0     12.245990E0
-     -31.798401E0     12.252620E0
-     -31.795500E0     12.259200E0
-     -31.789700E0     12.265750E0
-     -31.786800E0     12.272240E0
diff --git a/third_party/ceres/data/nist/BoxBOD.dat b/third_party/ceres/data/nist/BoxBOD.dat
deleted file mode 100644
index 6a742fd..0000000
--- a/third_party/ceres/data/nist/BoxBOD.dat
+++ /dev/null
@@ -1,66 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  BoxBOD            (BoxBOD.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 42)
-               Certified Values  (lines 41 to 47)
-               Data              (lines 61 to 66)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are described in detail in Box, Hunter and
-               Hunter (1978).  The response variable is biochemical
-               oxygen demand (BOD) in mg/l, and the predictor
-               variable is incubation time in days.
-
-
-Reference:     Box, G. P., W. G. Hunter, and J. S. Hunter (1978).
-               Statistics for Experimenters.  
-               New York, NY: Wiley, pp. 483-487.
-
-
-
-
-
-Data:          1 Response  (y = biochemical oxygen demand)
-               1 Predictor (x = incubation time)
-               6 Observations
-               Higher Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               2 Parameters (b1 and b2)
-
-               y = b1*(1-exp[-b2*x])  +  e
-
-
- 
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   1           100           2.1380940889E+02  1.2354515176E+01
-  b2 =   1             0.75        5.4723748542E-01  1.0455993237E-01
-
-Residual Sum of Squares:                    1.1680088766E+03
-Residual Standard Deviation:                1.7088072423E+01
-Degrees of Freedom:                                4
-Number of Observations:                            6  
-
-
-
-
-
-
-
-
-
-
-
-
-Data:   y             x
-      109             1
-      149             2
-      149             3
-      191             5
-      213             7
-      224            10
diff --git a/third_party/ceres/data/nist/Chwirut1.dat b/third_party/ceres/data/nist/Chwirut1.dat
deleted file mode 100644
index 4ad8aa5..0000000
--- a/third_party/ceres/data/nist/Chwirut1.dat
+++ /dev/null
@@ -1,274 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Chwirut1          (Chwirut1.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  43)
-               Certified Values  (lines 41 to  48)
-               Data              (lines 61 to 274)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               ultrasonic calibration.  The response variable is
-               ultrasonic response, and the predictor variable is
-               metal distance.
-
-Reference:     Chwirut, D., NIST (197?).  
-               Ultrasonic Reference Block Study. 
-
-
-
-
-
-
-
-Data:          1 Response Variable  (y = ultrasonic response)
-               1 Predictor Variable (x = metal distance)
-               214 Observations
-               Lower Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               3 Parameters (b1 to b3)
-
-               y = exp[-b1*x]/(b2+b3*x)  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   0.1         0.15          1.9027818370E-01  2.1938557035E-02
-  b2 =   0.01        0.008         6.1314004477E-03  3.4500025051E-04
-  b3 =   0.02        0.010         1.0530908399E-02  7.9281847748E-04
-
-Residual Sum of Squares:                    2.3844771393E+03
-Residual Standard Deviation:                3.3616721320E+00
-Degrees of Freedom:                               211
-Number of Observations:                           214
-
-
-
-
-
-
-
-
-
-
-
-Data:  y            x
-     92.9000E0     0.5000E0
-     78.7000E0     0.6250E0
-     64.2000E0     0.7500E0
-     64.9000E0     0.8750E0
-     57.1000E0     1.0000E0
-     43.3000E0     1.2500E0
-     31.1000E0     1.7500E0
-     23.6000E0     2.2500E0
-     31.0500E0     1.7500E0
-     23.7750E0     2.2500E0
-     17.7375E0     2.7500E0
-     13.8000E0     3.2500E0
-     11.5875E0     3.7500E0
-      9.4125E0     4.2500E0
-      7.7250E0     4.7500E0
-      7.3500E0     5.2500E0
-      8.0250E0     5.7500E0
-     90.6000E0     0.5000E0
-     76.9000E0     0.6250E0
-     71.6000E0     0.7500E0
-     63.6000E0     0.8750E0
-     54.0000E0     1.0000E0
-     39.2000E0     1.2500E0
-     29.3000E0     1.7500E0
-     21.4000E0     2.2500E0
-     29.1750E0     1.7500E0
-     22.1250E0     2.2500E0
-     17.5125E0     2.7500E0
-     14.2500E0     3.2500E0
-      9.4500E0     3.7500E0
-      9.1500E0     4.2500E0
-      7.9125E0     4.7500E0
-      8.4750E0     5.2500E0
-      6.1125E0     5.7500E0
-     80.0000E0     0.5000E0
-     79.0000E0     0.6250E0
-     63.8000E0     0.7500E0
-     57.2000E0     0.8750E0
-     53.2000E0     1.0000E0
-     42.5000E0     1.2500E0
-     26.8000E0     1.7500E0
-     20.4000E0     2.2500E0
-     26.8500E0     1.7500E0
-     21.0000E0     2.2500E0
-     16.4625E0     2.7500E0
-     12.5250E0     3.2500E0
-     10.5375E0     3.7500E0
-      8.5875E0     4.2500E0
-      7.1250E0     4.7500E0
-      6.1125E0     5.2500E0
-      5.9625E0     5.7500E0
-     74.1000E0     0.5000E0
-     67.3000E0     0.6250E0
-     60.8000E0     0.7500E0
-     55.5000E0     0.8750E0
-     50.3000E0     1.0000E0
-     41.0000E0     1.2500E0
-     29.4000E0     1.7500E0
-     20.4000E0     2.2500E0
-     29.3625E0     1.7500E0
-     21.1500E0     2.2500E0
-     16.7625E0     2.7500E0
-     13.2000E0     3.2500E0
-     10.8750E0     3.7500E0
-      8.1750E0     4.2500E0
-      7.3500E0     4.7500E0
-      5.9625E0     5.2500E0
-      5.6250E0     5.7500E0
-     81.5000E0      .5000E0
-     62.4000E0      .7500E0
-     32.5000E0     1.5000E0
-     12.4100E0     3.0000E0
-     13.1200E0     3.0000E0
-     15.5600E0     3.0000E0
-      5.6300E0     6.0000E0
-     78.0000E0      .5000E0
-     59.9000E0      .7500E0
-     33.2000E0     1.5000E0
-     13.8400E0     3.0000E0
-     12.7500E0     3.0000E0
-     14.6200E0     3.0000E0
-      3.9400E0     6.0000E0
-     76.8000E0      .5000E0
-     61.0000E0      .7500E0
-     32.9000E0     1.5000E0
-     13.8700E0     3.0000E0
-     11.8100E0     3.0000E0
-     13.3100E0     3.0000E0
-      5.4400E0     6.0000E0
-     78.0000E0      .5000E0
-     63.5000E0      .7500E0
-     33.8000E0     1.5000E0
-     12.5600E0     3.0000E0
-      5.6300E0     6.0000E0
-     12.7500E0     3.0000E0
-     13.1200E0     3.0000E0
-      5.4400E0     6.0000E0
-     76.8000E0      .5000E0
-     60.0000E0      .7500E0
-     47.8000E0     1.0000E0
-     32.0000E0     1.5000E0
-     22.2000E0     2.0000E0
-     22.5700E0     2.0000E0
-     18.8200E0     2.5000E0
-     13.9500E0     3.0000E0
-     11.2500E0     4.0000E0
-      9.0000E0     5.0000E0
-      6.6700E0     6.0000E0
-     75.8000E0      .5000E0
-     62.0000E0      .7500E0
-     48.8000E0     1.0000E0
-     35.2000E0     1.5000E0
-     20.0000E0     2.0000E0
-     20.3200E0     2.0000E0
-     19.3100E0     2.5000E0
-     12.7500E0     3.0000E0
-     10.4200E0     4.0000E0
-      7.3100E0     5.0000E0
-      7.4200E0     6.0000E0
-     70.5000E0      .5000E0
-     59.5000E0      .7500E0
-     48.5000E0     1.0000E0
-     35.8000E0     1.5000E0
-     21.0000E0     2.0000E0
-     21.6700E0     2.0000E0
-     21.0000E0     2.5000E0
-     15.6400E0     3.0000E0
-      8.1700E0     4.0000E0
-      8.5500E0     5.0000E0
-     10.1200E0     6.0000E0
-     78.0000E0      .5000E0
-     66.0000E0      .6250E0
-     62.0000E0      .7500E0
-     58.0000E0      .8750E0
-     47.7000E0     1.0000E0
-     37.8000E0     1.2500E0
-     20.2000E0     2.2500E0
-     21.0700E0     2.2500E0
-     13.8700E0     2.7500E0
-      9.6700E0     3.2500E0
-      7.7600E0     3.7500E0
-      5.4400E0     4.2500E0
-      4.8700E0     4.7500E0
-      4.0100E0     5.2500E0
-      3.7500E0     5.7500E0
-     24.1900E0     3.0000E0
-     25.7600E0     3.0000E0
-     18.0700E0     3.0000E0
-     11.8100E0     3.0000E0
-     12.0700E0     3.0000E0
-     16.1200E0     3.0000E0
-     70.8000E0      .5000E0
-     54.7000E0      .7500E0
-     48.0000E0     1.0000E0
-     39.8000E0     1.5000E0
-     29.8000E0     2.0000E0
-     23.7000E0     2.5000E0
-     29.6200E0     2.0000E0
-     23.8100E0     2.5000E0
-     17.7000E0     3.0000E0
-     11.5500E0     4.0000E0
-     12.0700E0     5.0000E0
-      8.7400E0     6.0000E0
-     80.7000E0      .5000E0
-     61.3000E0      .7500E0
-     47.5000E0     1.0000E0
-     29.0000E0     1.5000E0
-     24.0000E0     2.0000E0
-     17.7000E0     2.5000E0
-     24.5600E0     2.0000E0
-     18.6700E0     2.5000E0
-     16.2400E0     3.0000E0
-      8.7400E0     4.0000E0
-      7.8700E0     5.0000E0
-      8.5100E0     6.0000E0
-     66.7000E0      .5000E0
-     59.2000E0      .7500E0
-     40.8000E0     1.0000E0
-     30.7000E0     1.5000E0
-     25.7000E0     2.0000E0
-     16.3000E0     2.5000E0
-     25.9900E0     2.0000E0
-     16.9500E0     2.5000E0
-     13.3500E0     3.0000E0
-      8.6200E0     4.0000E0
-      7.2000E0     5.0000E0
-      6.6400E0     6.0000E0
-     13.6900E0     3.0000E0
-     81.0000E0      .5000E0
-     64.5000E0      .7500E0
-     35.5000E0     1.5000E0
-     13.3100E0     3.0000E0
-      4.8700E0     6.0000E0
-     12.9400E0     3.0000E0
-      5.0600E0     6.0000E0
-     15.1900E0     3.0000E0
-     14.6200E0     3.0000E0
-     15.6400E0     3.0000E0
-     25.5000E0     1.7500E0
-     25.9500E0     1.7500E0
-     81.7000E0      .5000E0
-     61.6000E0      .7500E0
-     29.8000E0     1.7500E0
-     29.8100E0     1.7500E0
-     17.1700E0     2.7500E0
-     10.3900E0     3.7500E0
-     28.4000E0     1.7500E0
-     28.6900E0     1.7500E0
-     81.3000E0      .5000E0
-     60.9000E0      .7500E0
-     16.6500E0     2.7500E0
-     10.0500E0     3.7500E0
-     28.9000E0     1.7500E0
-     28.9500E0     1.7500E0
diff --git a/third_party/ceres/data/nist/Chwirut2.dat b/third_party/ceres/data/nist/Chwirut2.dat
deleted file mode 100644
index 03703de..0000000
--- a/third_party/ceres/data/nist/Chwirut2.dat
+++ /dev/null
@@ -1,114 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Chwirut2          (Chwirut2.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  43)
-               Certified Values  (lines 41 to  48)
-               Data              (lines 61 to 114)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               ultrasonic calibration.  The response variable is
-               ultrasonic response, and the predictor variable is
-               metal distance.
-
-
-
-Reference:     Chwirut, D., NIST (197?).  
-               Ultrasonic Reference Block Study. 
-
-
-
-
-
-Data:          1 Response  (y = ultrasonic response)
-               1 Predictor (x = metal distance)
-               54 Observations
-               Lower Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               3 Parameters (b1 to b3)
-
-               y = exp(-b1*x)/(b2+b3*x)  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   0.1         0.15          1.6657666537E-01  3.8303286810E-02
-  b2 =   0.01        0.008         5.1653291286E-03  6.6621605126E-04
-  b3 =   0.02        0.010         1.2150007096E-02  1.5304234767E-03
-
-Residual Sum of Squares:                    5.1304802941E+02
-Residual Standard Deviation:                3.1717133040E+00
-Degrees of Freedom:                                51
-Number of Observations:                            54
-
-
-
-
-
-
-
-
-
- 
-
-Data:  y             x
-      92.9000E0     0.500E0
-      57.1000E0     1.000E0
-      31.0500E0     1.750E0
-      11.5875E0     3.750E0
-       8.0250E0     5.750E0
-      63.6000E0     0.875E0
-      21.4000E0     2.250E0
-      14.2500E0     3.250E0
-       8.4750E0     5.250E0
-      63.8000E0     0.750E0
-      26.8000E0     1.750E0
-      16.4625E0     2.750E0
-       7.1250E0     4.750E0
-      67.3000E0     0.625E0
-      41.0000E0     1.250E0
-      21.1500E0     2.250E0
-       8.1750E0     4.250E0
-      81.5000E0      .500E0
-      13.1200E0     3.000E0
-      59.9000E0      .750E0
-      14.6200E0     3.000E0
-      32.9000E0     1.500E0
-       5.4400E0     6.000E0
-      12.5600E0     3.000E0
-       5.4400E0     6.000E0
-      32.0000E0     1.500E0
-      13.9500E0     3.000E0
-      75.8000E0      .500E0
-      20.0000E0     2.000E0
-      10.4200E0     4.000E0
-      59.5000E0      .750E0
-      21.6700E0     2.000E0
-       8.5500E0     5.000E0
-      62.0000E0      .750E0
-      20.2000E0     2.250E0
-       7.7600E0     3.750E0
-       3.7500E0     5.750E0
-      11.8100E0     3.000E0
-      54.7000E0      .750E0
-      23.7000E0     2.500E0
-      11.5500E0     4.000E0
-      61.3000E0      .750E0
-      17.7000E0     2.500E0
-       8.7400E0     4.000E0
-      59.2000E0      .750E0
-      16.3000E0     2.500E0
-       8.6200E0     4.000E0
-      81.0000E0      .500E0
-       4.8700E0     6.000E0
-      14.6200E0     3.000E0
-      81.7000E0      .500E0
-      17.1700E0     2.750E0
-      81.3000E0      .500E0
-      28.9000E0     1.750E0
diff --git a/third_party/ceres/data/nist/DanWood.dat b/third_party/ceres/data/nist/DanWood.dat
deleted file mode 100644
index 479a9bd..0000000
--- a/third_party/ceres/data/nist/DanWood.dat
+++ /dev/null
@@ -1,66 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  DanWood           (DanWood.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 42)
-               Certified Values  (lines 41 to 47)
-               Data              (lines 61 to 66)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data and model are described in Daniel and Wood
-               (1980), and originally published in E.S.Keeping, 
-               "Introduction to Statistical Inference," Van Nostrand
-               Company, Princeton, NJ, 1962, p. 354.  The response
-               variable is energy radieted from a carbon filament
-               lamp per cm**2 per second, and the predictor variable
-               is the absolute temperature of the filament in 1000
-               degrees Kelvin.
-
-Reference:     Daniel, C. and F. S. Wood (1980).
-               Fitting Equations to Data, Second Edition. 
-               New York, NY:  John Wiley and Sons, pp. 428-431.
-
-
-Data:          1 Response Variable  (y = energy)
-               1 Predictor Variable (x = temperature)
-               6 Observations
-               Lower Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               2 Parameters (b1 and b2)
-
-               y  = b1*x**b2  +  e
-
-
- 
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   1           0.7           7.6886226176E-01  1.8281973860E-02
-  b2 =   5           4             3.8604055871E+00  5.1726610913E-02
- 
-Residual Sum of Squares:                    4.3173084083E-03
-Residual Standard Deviation:                3.2853114039E-02
-Degrees of Freedom:                                4
-Number of Observations:                            6 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-Data:  y              x
-      2.138E0        1.309E0
-      3.421E0        1.471E0
-      3.597E0        1.490E0
-      4.340E0        1.565E0
-      4.882E0        1.611E0
-      5.660E0        1.680E0
diff --git a/third_party/ceres/data/nist/ENSO.dat b/third_party/ceres/data/nist/ENSO.dat
deleted file mode 100644
index f374db2..0000000
--- a/third_party/ceres/data/nist/ENSO.dat
+++ /dev/null
@@ -1,228 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  ENSO              (ENSO.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  49)
-               Certified Values  (lines 41 to  54)
-               Data              (lines 61 to 228)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   The data are monthly averaged atmospheric pressure 
-               differences between Easter Island and Darwin, 
-               Australia.  This difference drives the trade winds in 
-               the southern hemisphere.  Fourier analysis of the data
-               reveals 3 significant cycles.  The annual cycle is the
-               strongest, but cycles with periods of approximately 44
-               and 26 months are also present.  These cycles
-               correspond to the El Nino and the Southern Oscillation.
-               Arguments to the SIN and COS functions are in radians.
-
-Reference:     Kahaner, D., C. Moler, and S. Nash, (1989). 
-               Numerical Methods and Software.  
-               Englewood Cliffs, NJ: Prentice Hall, pp. 441-445.
-
-Data:          1 Response  (y = atmospheric pressure)
-               1 Predictor (x = time)
-               168 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               9 Parameters (b1 to b9)
-
-               y = b1 + b2*cos( 2*pi*x/12 ) + b3*sin( 2*pi*x/12 ) 
-                      + b5*cos( 2*pi*x/b4 ) + b6*sin( 2*pi*x/b4 )
-                      + b8*cos( 2*pi*x/b7 ) + b9*sin( 2*pi*x/b7 )  + e
- 
-          Starting values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   11.0        10.0          1.0510749193E+01  1.7488832467E-01
-  b2 =    3.0         3.0          3.0762128085E+00  2.4310052139E-01
-  b3 =    0.5         0.5          5.3280138227E-01  2.4354686618E-01
-  b4 =   40.0        44.0          4.4311088700E+01  9.4408025976E-01
-  b5 =   -0.7        -1.5         -1.6231428586E+00  2.8078369611E-01
-  b6 =   -1.3         0.5          5.2554493756E-01  4.8073701119E-01
-  b7 =   25.0        26.0          2.6887614440E+01  4.1612939130E-01
-  b8 =   -0.3        -0.1          2.1232288488E-01  5.1460022911E-01
-  b9 =    1.4         1.5          1.4966870418E+00  2.5434468893E-01
-
-Residual Sum of Squares:                    7.8853978668E+02
-Residual Standard Deviation:                2.2269642403E+00
-Degrees of Freedom:                               159
-Number of Observations:                           168
-
-
-
-
-
-Data:   y          x
-    12.90000    1.000000
-    11.30000    2.000000
-    10.60000    3.000000
-    11.20000    4.000000
-    10.90000    5.000000
-    7.500000    6.000000
-    7.700000    7.000000
-    11.70000    8.000000
-    12.90000    9.000000
-    14.30000   10.000000
-    10.90000    11.00000
-    13.70000    12.00000
-    17.10000    13.00000
-    14.00000    14.00000
-    15.30000    15.00000
-    8.500000    16.00000
-    5.700000    17.00000
-    5.500000    18.00000
-    7.600000    19.00000
-    8.600000    20.00000
-    7.300000    21.00000
-    7.600000    22.00000
-    12.70000    23.00000
-    11.00000    24.00000
-    12.70000    25.00000
-    12.90000    26.00000
-    13.00000    27.00000
-    10.90000    28.00000
-   10.400000    29.00000
-   10.200000    30.00000
-    8.000000    31.00000
-    10.90000    32.00000
-    13.60000    33.00000
-   10.500000    34.00000
-    9.200000    35.00000
-    12.40000    36.00000
-    12.70000    37.00000
-    13.30000    38.00000
-   10.100000    39.00000
-    7.800000    40.00000
-    4.800000    41.00000
-    3.000000    42.00000
-    2.500000    43.00000
-    6.300000    44.00000
-    9.700000    45.00000
-    11.60000    46.00000
-    8.600000    47.00000
-    12.40000    48.00000
-   10.500000    49.00000
-    13.30000    50.00000
-   10.400000    51.00000
-    8.100000    52.00000
-    3.700000    53.00000
-    10.70000    54.00000
-    5.100000    55.00000
-   10.400000    56.00000
-    10.90000    57.00000
-    11.70000    58.00000
-    11.40000    59.00000
-    13.70000    60.00000
-    14.10000    61.00000
-    14.00000    62.00000
-    12.50000    63.00000
-    6.300000    64.00000
-    9.600000    65.00000
-    11.70000    66.00000
-    5.000000    67.00000
-    10.80000    68.00000
-    12.70000    69.00000
-    10.80000    70.00000
-    11.80000    71.00000
-    12.60000    72.00000
-    15.70000    73.00000
-    12.60000    74.00000
-    14.80000    75.00000
-    7.800000    76.00000
-    7.100000    77.00000
-    11.20000    78.00000
-    8.100000    79.00000
-    6.400000    80.00000
-    5.200000    81.00000
-    12.00000    82.00000
-   10.200000    83.00000
-    12.70000    84.00000
-   10.200000    85.00000
-    14.70000    86.00000
-    12.20000    87.00000
-    7.100000    88.00000
-    5.700000    89.00000
-    6.700000    90.00000
-    3.900000    91.00000
-    8.500000    92.00000
-    8.300000    93.00000
-    10.80000    94.00000
-    16.70000    95.00000
-    12.60000    96.00000
-    12.50000    97.00000
-    12.50000    98.00000
-    9.800000    99.00000
-    7.200000   100.00000
-    4.100000   101.00000
-    10.60000   102.00000
-   10.100000   103.00000
-   10.100000   104.00000
-    11.90000   105.00000
-    13.60000    106.0000
-    16.30000    107.0000
-    17.60000    108.0000
-    15.50000    109.0000
-    16.00000    110.0000
-    15.20000    111.0000
-    11.20000    112.0000
-    14.30000    113.0000
-    14.50000    114.0000
-    8.500000    115.0000
-    12.00000    116.0000
-    12.70000    117.0000
-    11.30000    118.0000
-    14.50000    119.0000
-    15.10000    120.0000
-   10.400000    121.0000
-    11.50000    122.0000
-    13.40000    123.0000
-    7.500000    124.0000
-   0.6000000    125.0000
-   0.3000000    126.0000
-    5.500000    127.0000
-    5.000000    128.0000
-    4.600000    129.0000
-    8.200000    130.0000
-    9.900000    131.0000
-    9.200000    132.0000
-    12.50000    133.0000
-    10.90000    134.0000
-    9.900000    135.0000
-    8.900000    136.0000
-    7.600000    137.0000
-    9.500000    138.0000
-    8.400000    139.0000
-    10.70000    140.0000
-    13.60000    141.0000
-    13.70000    142.0000
-    13.70000    143.0000
-    16.50000    144.0000
-    16.80000    145.0000
-    17.10000    146.0000
-    15.40000    147.0000
-    9.500000    148.0000
-    6.100000    149.0000
-   10.100000    150.0000
-    9.300000    151.0000
-    5.300000    152.0000
-    11.20000    153.0000
-    16.60000    154.0000
-    15.60000    155.0000
-    12.00000    156.0000
-    11.50000    157.0000
-    8.600000    158.0000
-    13.80000    159.0000
-    8.700000    160.0000
-    8.600000    161.0000
-    8.600000    162.0000
-    8.700000    163.0000
-    12.80000    164.0000
-    13.20000    165.0000
-    14.00000    166.0000
-    13.40000    167.0000
-    14.80000    168.0000
diff --git a/third_party/ceres/data/nist/Eckerle4.dat b/third_party/ceres/data/nist/Eckerle4.dat
deleted file mode 100644
index 2d0d8bf..0000000
--- a/third_party/ceres/data/nist/Eckerle4.dat
+++ /dev/null
@@ -1,95 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Eckerle4          (Eckerle4.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 43)
-               Certified Values  (lines 41 to 48)
-               Data              (lines 61 to 95)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               circular interference transmittance.  The response
-               variable is transmittance, and the predictor variable
-               is wavelength.
-
-
-Reference:     Eckerle, K., NIST (197?).  
-               Circular Interference Transmittance Study.
-
-
-
-
-
-
-Data:          1 Response Variable  (y = transmittance)
-               1 Predictor Variable (x = wavelength)
-               35 Observations
-               Higher Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               3 Parameters (b1 to b3)
-
-               y = (b1/b2) * exp[-0.5*((x-b3)/b2)**2]  +  e
-
-
-
-          Starting values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =     1           1.5         1.5543827178E+00  1.5408051163E-02
-  b2 =    10           5           4.0888321754E+00  4.6803020753E-02
-  b3 =   500         450           4.5154121844E+02  4.6800518816E-02
-
-Residual Sum of Squares:                    1.4635887487E-03
-Residual Standard Deviation:                6.7629245447E-03
-Degrees of Freedom:                                32
-Number of Observations:                            35
-
-
-
-
-
-
-
-
-
-
-
-Data:  y                x
-      0.0001575E0    400.000000E0
-      0.0001699E0    405.000000E0
-      0.0002350E0    410.000000E0
-      0.0003102E0    415.000000E0
-      0.0004917E0    420.000000E0
-      0.0008710E0    425.000000E0
-      0.0017418E0    430.000000E0
-      0.0046400E0    435.000000E0
-      0.0065895E0    436.500000E0
-      0.0097302E0    438.000000E0
-      0.0149002E0    439.500000E0
-      0.0237310E0    441.000000E0
-      0.0401683E0    442.500000E0
-      0.0712559E0    444.000000E0
-      0.1264458E0    445.500000E0
-      0.2073413E0    447.000000E0
-      0.2902366E0    448.500000E0
-      0.3445623E0    450.000000E0
-      0.3698049E0    451.500000E0
-      0.3668534E0    453.000000E0
-      0.3106727E0    454.500000E0
-      0.2078154E0    456.000000E0
-      0.1164354E0    457.500000E0
-      0.0616764E0    459.000000E0
-      0.0337200E0    460.500000E0
-      0.0194023E0    462.000000E0
-      0.0117831E0    463.500000E0
-      0.0074357E0    465.000000E0
-      0.0022732E0    470.000000E0
-      0.0008800E0    475.000000E0
-      0.0004579E0    480.000000E0
-      0.0002345E0    485.000000E0
-      0.0001586E0    490.000000E0
-      0.0001143E0    495.000000E0
-      0.0000710E0    500.000000E0
diff --git a/third_party/ceres/data/nist/Gauss1.dat b/third_party/ceres/data/nist/Gauss1.dat
deleted file mode 100644
index df8dfac..0000000
--- a/third_party/ceres/data/nist/Gauss1.dat
+++ /dev/null
@@ -1,310 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Gauss1            (Gauss1.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  48)
-               Certified Values  (lines 41 to  53)
-               Data              (lines 61 to 310)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   The data are two well-separated Gaussians on a 
-               decaying exponential baseline plus normally 
-               distributed zero-mean noise with variance = 6.25.
-
-Reference:     Rust, B., NIST (1996).
-
-
-
-
-
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               250 Observations
-               Lower Level of Difficulty
-               Generated Data
- 
-Model:         Exponential Class
-               8 Parameters (b1 to b8) 
- 
-               y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 )
-                                   + b6*exp( -(x-b7)**2 / b8**2 ) + e
- 
- 
-          Starting values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =    97.0        94.0         9.8778210871E+01  5.7527312730E-01
-  b2 =     0.009       0.0105      1.0497276517E-02  1.1406289017E-04
-  b3 =   100.0        99.0         1.0048990633E+02  5.8831775752E-01
-  b4 =    65.0        63.0         6.7481111276E+01  1.0460593412E-01
-  b5 =    20.0        25.0         2.3129773360E+01  1.7439951146E-01
-  b6 =    70.0        71.0         7.1994503004E+01  6.2622793913E-01
-  b7 =   178.0       180.0         1.7899805021E+02  1.2436988217E-01
-  b8 =    16.5        20.0         1.8389389025E+01  2.0134312832E-01
-
-Residual Sum of Squares:                    1.3158222432E+03
-Residual Standard Deviation:                2.3317980180E+00
-Degrees of Freedom:                               242
-Number of Observations:                           250
-
-
-
-
- 
-
-Data:   y          x
-    97.62227    1.000000
-    97.80724    2.000000
-    96.62247    3.000000
-    92.59022    4.000000
-    91.23869    5.000000
-    95.32704    6.000000
-    90.35040    7.000000
-    89.46235    8.000000
-    91.72520    9.000000
-    89.86916   10.000000
-    86.88076    11.00000
-    85.94360    12.00000
-    87.60686    13.00000
-    86.25839    14.00000
-    80.74976    15.00000
-    83.03551    16.00000
-    88.25837    17.00000
-    82.01316    18.00000
-    82.74098    19.00000
-    83.30034    20.00000
-    81.27850    21.00000
-    81.85506    22.00000
-    80.75195    23.00000
-    80.09573    24.00000
-    81.07633    25.00000
-    78.81542    26.00000
-    78.38596    27.00000
-    79.93386    28.00000
-    79.48474    29.00000
-    79.95942    30.00000
-    76.10691    31.00000
-    78.39830    32.00000
-    81.43060    33.00000
-    82.48867    34.00000
-    81.65462    35.00000
-    80.84323    36.00000
-    88.68663    37.00000
-    84.74438    38.00000
-    86.83934    39.00000
-    85.97739    40.00000
-    91.28509    41.00000
-    97.22411    42.00000
-    93.51733    43.00000
-    94.10159    44.00000
-   101.91760    45.00000
-    98.43134    46.00000
-    110.4214    47.00000
-    107.6628    48.00000
-    111.7288    49.00000
-    116.5115    50.00000
-    120.7609    51.00000
-    123.9553    52.00000
-    124.2437    53.00000
-    130.7996    54.00000
-    133.2960    55.00000
-    130.7788    56.00000
-    132.0565    57.00000
-    138.6584    58.00000
-    142.9252    59.00000
-    142.7215    60.00000
-    144.1249    61.00000
-    147.4377    62.00000
-    148.2647    63.00000
-    152.0519    64.00000
-    147.3863    65.00000
-    149.2074    66.00000
-    148.9537    67.00000
-    144.5876    68.00000
-    148.1226    69.00000
-    148.0144    70.00000
-    143.8893    71.00000
-    140.9088    72.00000
-    143.4434    73.00000
-    139.3938    74.00000
-    135.9878    75.00000
-    136.3927    76.00000
-    126.7262    77.00000
-    124.4487    78.00000
-    122.8647    79.00000
-    113.8557    80.00000
-    113.7037    81.00000
-    106.8407    82.00000
-    107.0034    83.00000
-   102.46290    84.00000
-    96.09296    85.00000
-    94.57555    86.00000
-    86.98824    87.00000
-    84.90154    88.00000
-    81.18023    89.00000
-    76.40117    90.00000
-    67.09200    91.00000
-    72.67155    92.00000
-    68.10848    93.00000
-    67.99088    94.00000
-    63.34094    95.00000
-    60.55253    96.00000
-    56.18687    97.00000
-    53.64482    98.00000
-    53.70307    99.00000
-    48.07893   100.00000
-    42.21258   101.00000
-    45.65181   102.00000
-    41.69728   103.00000
-    41.24946   104.00000
-    39.21349   105.00000
-    37.71696    106.0000
-    36.68395    107.0000
-    37.30393    108.0000
-    37.43277    109.0000
-    37.45012    110.0000
-    32.64648    111.0000
-    31.84347    112.0000
-    31.39951    113.0000
-    26.68912    114.0000
-    32.25323    115.0000
-    27.61008    116.0000
-    33.58649    117.0000
-    28.10714    118.0000
-    30.26428    119.0000
-    28.01648    120.0000
-    29.11021    121.0000
-    23.02099    122.0000
-    25.65091    123.0000
-    28.50295    124.0000
-    25.23701    125.0000
-    26.13828    126.0000
-    33.53260    127.0000
-    29.25195    128.0000
-    27.09847    129.0000
-    26.52999    130.0000
-    25.52401    131.0000
-    26.69218    132.0000
-    24.55269    133.0000
-    27.71763    134.0000
-    25.20297    135.0000
-    25.61483    136.0000
-    25.06893    137.0000
-    27.63930    138.0000
-    24.94851    139.0000
-    25.86806    140.0000
-    22.48183    141.0000
-    26.90045    142.0000
-    25.39919    143.0000
-    17.90614    144.0000
-    23.76039    145.0000
-    25.89689    146.0000
-    27.64231    147.0000
-    22.86101    148.0000
-    26.47003    149.0000
-    23.72888    150.0000
-    27.54334    151.0000
-    30.52683    152.0000
-    28.07261    153.0000
-    34.92815    154.0000
-    28.29194    155.0000
-    34.19161    156.0000
-    35.41207    157.0000
-    37.09336    158.0000
-    40.98330    159.0000
-    39.53923    160.0000
-    47.80123    161.0000
-    47.46305    162.0000
-    51.04166    163.0000
-    54.58065    164.0000
-    57.53001    165.0000
-    61.42089    166.0000
-    62.79032    167.0000
-    68.51455    168.0000
-    70.23053    169.0000
-    74.42776    170.0000
-    76.59911    171.0000
-    81.62053    172.0000
-    83.42208    173.0000
-    79.17451    174.0000
-    88.56985    175.0000
-    85.66525    176.0000
-    86.55502    177.0000
-    90.65907    178.0000
-    84.27290    179.0000
-    85.72220    180.0000
-    83.10702    181.0000
-    82.16884    182.0000
-    80.42568    183.0000
-    78.15692    184.0000
-    79.79691    185.0000
-    77.84378    186.0000
-    74.50327    187.0000
-    71.57289    188.0000
-    65.88031    189.0000
-    65.01385    190.0000
-    60.19582    191.0000
-    59.66726    192.0000
-    52.95478    193.0000
-    53.87792    194.0000
-    44.91274    195.0000
-    41.09909    196.0000
-    41.68018    197.0000
-    34.53379    198.0000
-    34.86419    199.0000
-    33.14787    200.0000
-    29.58864    201.0000
-    27.29462    202.0000
-    21.91439    203.0000
-    19.08159    204.0000
-    24.90290    205.0000
-    19.82341    206.0000
-    16.75551    207.0000
-    18.24558    208.0000
-    17.23549    209.0000
-    16.34934    210.0000
-    13.71285    211.0000
-    14.75676    212.0000
-    13.97169    213.0000
-    12.42867    214.0000
-    14.35519    215.0000
-    7.703309    216.0000
-   10.234410    217.0000
-    11.78315    218.0000
-    13.87768    219.0000
-    4.535700    220.0000
-   10.059280    221.0000
-    8.424824    222.0000
-   10.533120    223.0000
-    9.602255    224.0000
-    7.877514    225.0000
-    6.258121    226.0000
-    8.899865    227.0000
-    7.877754    228.0000
-    12.51191    229.0000
-    10.66205    230.0000
-    6.035400    231.0000
-    6.790655    232.0000
-    8.783535    233.0000
-    4.600288    234.0000
-    8.400915    235.0000
-    7.216561    236.0000
-   10.017410    237.0000
-    7.331278    238.0000
-    6.527863    239.0000
-    2.842001    240.0000
-   10.325070    241.0000
-    4.790995    242.0000
-    8.377101    243.0000
-    6.264445    244.0000
-    2.706213    245.0000
-    8.362329    246.0000
-    8.983658    247.0000
-    3.362571    248.0000
-    1.182746    249.0000
-    4.875359    250.0000
diff --git a/third_party/ceres/data/nist/Gauss2.dat b/third_party/ceres/data/nist/Gauss2.dat
deleted file mode 100644
index 38222eb..0000000
--- a/third_party/ceres/data/nist/Gauss2.dat
+++ /dev/null
@@ -1,310 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Gauss2            (Gauss2.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  48)
-               Certified Values  (lines 41 to  53)
-               Data              (lines 61 to 310)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   The data are two slightly-blended Gaussians on a 
-               decaying exponential baseline plus normally 
-               distributed zero-mean noise with variance = 6.25. 
-
-Reference:     Rust, B., NIST (1996). 
-
-
-
-
-
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               250 Observations
-               Lower Level of Difficulty
-               Generated Data
-
-Model:         Exponential Class
-               8 Parameters (b1 to b8)
-
-               y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 ) 
-                                   + b6*exp( -(x-b7)**2 / b8**2 ) + e
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =    96.0        98.0         9.9018328406E+01  5.3748766879E-01
-  b2 =     0.009       0.0105      1.0994945399E-02  1.3335306766E-04
-  b3 =   103.0       103.0         1.0188022528E+02  5.9217315772E-01
-  b4 =   106.0       105.0         1.0703095519E+02  1.5006798316E-01
-  b5 =    18.0        20.0         2.3578584029E+01  2.2695595067E-01
-  b6 =    72.0        73.0         7.2045589471E+01  6.1721965884E-01
-  b7 =   151.0       150.0         1.5327010194E+02  1.9466674341E-01
-  b8 =    18.0        20.0         1.9525972636E+01  2.6416549393E-01
-
-Residual Sum of Squares:                    1.2475282092E+03
-Residual Standard Deviation:                2.2704790782E+00
-Degrees of Freedom:                               242
-Number of Observations:                           250
-
-
-
-
-
- 
-Data:   y          x
-    97.58776    1.000000
-    97.76344    2.000000
-    96.56705    3.000000
-    92.52037    4.000000
-    91.15097    5.000000
-    95.21728    6.000000
-    90.21355    7.000000
-    89.29235    8.000000
-    91.51479    9.000000
-    89.60966   10.000000
-    86.56187    11.00000
-    85.55316    12.00000
-    87.13054    13.00000
-    85.67940    14.00000
-    80.04851    15.00000
-    82.18925    16.00000
-    87.24081    17.00000
-    80.79407    18.00000
-    81.28570    19.00000
-    81.56940    20.00000
-    79.22715    21.00000
-    79.43275    22.00000
-    77.90195    23.00000
-    76.75468    24.00000
-    77.17377    25.00000
-    74.27348    26.00000
-    73.11900    27.00000
-    73.84826    28.00000
-    72.47870    29.00000
-    71.92292    30.00000
-    66.92176    31.00000
-    67.93835    32.00000
-    69.56207    33.00000
-    69.07066    34.00000
-    66.53983    35.00000
-    63.87883    36.00000
-    69.71537    37.00000
-    63.60588    38.00000
-    63.37154    39.00000
-    60.01835    40.00000
-    62.67481    41.00000
-    65.80666    42.00000
-    59.14304    43.00000
-    56.62951    44.00000
-    61.21785    45.00000
-    54.38790    46.00000
-    62.93443    47.00000
-    56.65144    48.00000
-    57.13362    49.00000
-    58.29689    50.00000
-    58.91744    51.00000
-    58.50172    52.00000
-    55.22885    53.00000
-    58.30375    54.00000
-    57.43237    55.00000
-    51.69407    56.00000
-    49.93132    57.00000
-    53.70760    58.00000
-    55.39712    59.00000
-    52.89709    60.00000
-    52.31649    61.00000
-    53.98720    62.00000
-    53.54158    63.00000
-    56.45046    64.00000
-    51.32276    65.00000
-    53.11676    66.00000
-    53.28631    67.00000
-    49.80555    68.00000
-    54.69564    69.00000
-    56.41627    70.00000
-    54.59362    71.00000
-    54.38520    72.00000
-    60.15354    73.00000
-    59.78773    74.00000
-    60.49995    75.00000
-    65.43885    76.00000
-    60.70001    77.00000
-    63.71865    78.00000
-    67.77139    79.00000
-    64.70934    80.00000
-    70.78193    81.00000
-    70.38651    82.00000
-    77.22359    83.00000
-    79.52665    84.00000
-    80.13077    85.00000
-    85.67823    86.00000
-    85.20647    87.00000
-    90.24548    88.00000
-    93.61953    89.00000
-    95.86509    90.00000
-    93.46992    91.00000
-    105.8137    92.00000
-    107.8269    93.00000
-    114.0607    94.00000
-    115.5019    95.00000
-    118.5110    96.00000
-    119.6177    97.00000
-    122.1940    98.00000
-    126.9903    99.00000
-    125.7005   100.00000
-    123.7447   101.00000
-    130.6543   102.00000
-    129.7168   103.00000
-    131.8240   104.00000
-    131.8759   105.00000
-    131.9994    106.0000
-    132.1221    107.0000
-    133.4414    108.0000
-    133.8252    109.0000
-    133.6695    110.0000
-    128.2851    111.0000
-    126.5182    112.0000
-    124.7550    113.0000
-    118.4016    114.0000
-    122.0334    115.0000
-    115.2059    116.0000
-    118.7856    117.0000
-    110.7387    118.0000
-    110.2003    119.0000
-   105.17290    120.0000
-   103.44720    121.0000
-    94.54280    122.0000
-    94.40526    123.0000
-    94.57964    124.0000
-    88.76605    125.0000
-    87.28747    126.0000
-    92.50443    127.0000
-    86.27997    128.0000
-    82.44307    129.0000
-    80.47367    130.0000
-    78.36608    131.0000
-    78.74307    132.0000
-    76.12786    133.0000
-    79.13108    134.0000
-    76.76062    135.0000
-    77.60769    136.0000
-    77.76633    137.0000
-    81.28220    138.0000
-    79.74307    139.0000
-    81.97964    140.0000
-    80.02952    141.0000
-    85.95232    142.0000
-    85.96838    143.0000
-    79.94789    144.0000
-    87.17023    145.0000
-    90.50992    146.0000
-    93.23373    147.0000
-    89.14803    148.0000
-    93.11492    149.0000
-    90.34337    150.0000
-    93.69421    151.0000
-    95.74256    152.0000
-    91.85105    153.0000
-    96.74503    154.0000
-    87.60996    155.0000
-    90.47012    156.0000
-    88.11690    157.0000
-    85.70673    158.0000
-    85.01361    159.0000
-    78.53040    160.0000
-    81.34148    161.0000
-    75.19295    162.0000
-    72.66115    163.0000
-    69.85504    164.0000
-    66.29476    165.0000
-    63.58502    166.0000
-    58.33847    167.0000
-    57.50766    168.0000
-    52.80498    169.0000
-    50.79319    170.0000
-    47.03490    171.0000
-    46.47090    172.0000
-    43.09016    173.0000
-    34.11531    174.0000
-    39.28235    175.0000
-    32.68386    176.0000
-    30.44056    177.0000
-    31.98932    178.0000
-    23.63330    179.0000
-    23.69643    180.0000
-    20.26812    181.0000
-    19.07074    182.0000
-    17.59544    183.0000
-    16.08785    184.0000
-    18.94267    185.0000
-    18.61354    186.0000
-    17.25800    187.0000
-    16.62285    188.0000
-    13.48367    189.0000
-    15.37647    190.0000
-    13.47208    191.0000
-    15.96188    192.0000
-    12.32547    193.0000
-    16.33880    194.0000
-   10.438330    195.0000
-    9.628715    196.0000
-    13.12268    197.0000
-    8.772417    198.0000
-    11.76143    199.0000
-    12.55020    200.0000
-    11.33108    201.0000
-    11.20493    202.0000
-    7.816916    203.0000
-    6.800675    204.0000
-    14.26581    205.0000
-    10.66285    206.0000
-    8.911574    207.0000
-    11.56733    208.0000
-    11.58207    209.0000
-    11.59071    210.0000
-    9.730134    211.0000
-    11.44237    212.0000
-    11.22912    213.0000
-   10.172130    214.0000
-    12.50905    215.0000
-    6.201493    216.0000
-    9.019605    217.0000
-    10.80607    218.0000
-    13.09625    219.0000
-    3.914271    220.0000
-    9.567886    221.0000
-    8.038448    222.0000
-   10.231040    223.0000
-    9.367410    224.0000
-    7.695971    225.0000
-    6.118575    226.0000
-    8.793207    227.0000
-    7.796692    228.0000
-    12.45065    229.0000
-    10.61601    230.0000
-    6.001003    231.0000
-    6.765098    232.0000
-    8.764653    233.0000
-    4.586418    234.0000
-    8.390783    235.0000
-    7.209202    236.0000
-   10.012090    237.0000
-    7.327461    238.0000
-    6.525136    239.0000
-    2.840065    240.0000
-   10.323710    241.0000
-    4.790035    242.0000
-    8.376431    243.0000
-    6.263980    244.0000
-    2.705892    245.0000
-    8.362109    246.0000
-    8.983507    247.0000
-    3.362469    248.0000
-    1.182678    249.0000
-    4.875312    250.0000
diff --git a/third_party/ceres/data/nist/Gauss3.dat b/third_party/ceres/data/nist/Gauss3.dat
deleted file mode 100644
index e5eb56d..0000000
--- a/third_party/ceres/data/nist/Gauss3.dat
+++ /dev/null
@@ -1,310 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Gauss3            (Gauss3.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  48)
-               Certified Values  (lines 41 to  53)
-               Data              (lines 61 to 310)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   The data are two strongly-blended Gaussians on a 
-               decaying exponential baseline plus normally 
-               distributed zero-mean noise with variance = 6.25.
-
-Reference:     Rust, B., NIST (1996).
-
-
-
-
-
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               250 Observations
-               Average Level of Difficulty
-               Generated Data
-
-Model:         Exponential Class
-               8 Parameters (b1 to b8)
-
-               y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 )
-                                   + b6*exp( -(x-b7)**2 / b8**2 ) + e
- 
- 
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =    94.9        96.0         9.8940368970E+01  5.3005192833E-01
-  b2 =     0.009       0.0096      1.0945879335E-02  1.2554058911E-04
-  b3 =    90.1        80.0         1.0069553078E+02  8.1256587317E-01
-  b4 =   113.0       110.0         1.1163619459E+02  3.5317859757E-01
-  b5 =    20.0        25.0         2.3300500029E+01  3.6584783023E-01
-  b6 =    73.8        74.0         7.3705031418E+01  1.2091239082E+00
-  b7 =   140.0       139.0         1.4776164251E+02  4.0488183351E-01
-  b8 =    20.0        25.0         1.9668221230E+01  3.7806634336E-01
-
-Residual Sum of Squares:                    1.2444846360E+03  
-Residual Standard Deviation:                2.2677077625E+00
-Degrees of Freedom:                               242
-Number of Observations:                           250
-
-
-
-
-
-
-Data:   y          x
-    97.58776    1.000000
-    97.76344    2.000000
-    96.56705    3.000000
-    92.52037    4.000000
-    91.15097    5.000000
-    95.21728    6.000000
-    90.21355    7.000000
-    89.29235    8.000000
-    91.51479    9.000000
-    89.60965   10.000000
-    86.56187    11.00000
-    85.55315    12.00000
-    87.13053    13.00000
-    85.67938    14.00000
-    80.04849    15.00000
-    82.18922    16.00000
-    87.24078    17.00000
-    80.79401    18.00000
-    81.28564    19.00000
-    81.56932    20.00000
-    79.22703    21.00000
-    79.43259    22.00000
-    77.90174    23.00000
-    76.75438    24.00000
-    77.17338    25.00000
-    74.27296    26.00000
-    73.11830    27.00000
-    73.84732    28.00000
-    72.47746    29.00000
-    71.92128    30.00000
-    66.91962    31.00000
-    67.93554    32.00000
-    69.55841    33.00000
-    69.06592    34.00000
-    66.53371    35.00000
-    63.87094    36.00000
-    69.70526    37.00000
-    63.59295    38.00000
-    63.35509    39.00000
-    59.99747    40.00000
-    62.64843    41.00000
-    65.77345    42.00000
-    59.10141    43.00000
-    56.57750    44.00000
-    61.15313    45.00000
-    54.30767    46.00000
-    62.83535    47.00000
-    56.52957    48.00000
-    56.98427    49.00000
-    58.11459    50.00000
-    58.69576    51.00000
-    58.23322    52.00000
-    54.90490    53.00000
-    57.91442    54.00000
-    56.96629    55.00000
-    51.13831    56.00000
-    49.27123    57.00000
-    52.92668    58.00000
-    54.47693    59.00000
-    51.81710    60.00000
-    51.05401    61.00000
-    52.51731    62.00000
-    51.83710    63.00000
-    54.48196    64.00000
-    49.05859    65.00000
-    50.52315    66.00000
-    50.32755    67.00000
-    46.44419    68.00000
-    50.89281    69.00000
-    52.13203    70.00000
-    49.78741    71.00000
-    49.01637    72.00000
-    54.18198    73.00000
-    53.17456    74.00000
-    53.20827    75.00000
-    57.43459    76.00000
-    51.95282    77.00000
-    54.20282    78.00000
-    57.46687    79.00000
-    53.60268    80.00000
-    58.86728    81.00000
-    57.66652    82.00000
-    63.71034    83.00000
-    65.24244    84.00000
-    65.10878    85.00000
-    69.96313    86.00000
-    68.85475    87.00000
-    73.32574    88.00000
-    76.21241    89.00000
-    78.06311    90.00000
-    75.37701    91.00000
-    87.54449    92.00000
-    89.50588    93.00000
-    95.82098    94.00000
-    97.48390    95.00000
-   100.86070    96.00000
-   102.48510    97.00000
-    105.7311    98.00000
-    111.3489    99.00000
-    111.0305   100.00000
-    110.1920   101.00000
-    118.3581   102.00000
-    118.8086   103.00000
-    122.4249   104.00000
-    124.0953   105.00000
-    125.9337    106.0000
-    127.8533    107.0000
-    131.0361    108.0000
-    133.3343    109.0000
-    135.1278    110.0000
-    131.7113    111.0000
-    131.9151    112.0000
-    132.1107    113.0000
-    127.6898    114.0000
-    133.2148    115.0000
-    128.2296    116.0000
-    133.5902    117.0000
-    127.2539    118.0000
-    128.3482    119.0000
-    124.8694    120.0000
-    124.6031    121.0000
-    117.0648    122.0000
-    118.1966    123.0000
-    119.5408    124.0000
-    114.7946    125.0000
-    114.2780    126.0000
-    120.3484    127.0000
-    114.8647    128.0000
-    111.6514    129.0000
-    110.1826    130.0000
-    108.4461    131.0000
-    109.0571    132.0000
-    106.5308    133.0000
-    109.4691    134.0000
-    106.8709    135.0000
-    107.3192    136.0000
-    106.9000    137.0000
-    109.6526    138.0000
-    107.1602    139.0000
-    108.2509    140.0000
-   104.96310    141.0000
-    109.3601    142.0000
-    107.6696    143.0000
-    99.77286    144.0000
-   104.96440    145.0000
-    106.1376    146.0000
-    106.5816    147.0000
-   100.12860    148.0000
-   101.66910    149.0000
-    96.44254    150.0000
-    97.34169    151.0000
-    96.97412    152.0000
-    90.73460    153.0000
-    93.37949    154.0000
-    82.12331    155.0000
-    83.01657    156.0000
-    78.87360    157.0000
-    74.86971    158.0000
-    72.79341    159.0000
-    65.14744    160.0000
-    67.02127    161.0000
-    60.16136    162.0000
-    57.13996    163.0000
-    54.05769    164.0000
-    50.42265    165.0000
-    47.82430    166.0000
-    42.85748    167.0000
-    42.45495    168.0000
-    38.30808    169.0000
-    36.95794    170.0000
-    33.94543    171.0000
-    34.19017    172.0000
-    31.66097    173.0000
-    23.56172    174.0000
-    29.61143    175.0000
-    23.88765    176.0000
-    22.49812    177.0000
-    24.86901    178.0000
-    17.29481    179.0000
-    18.09291    180.0000
-    15.34813    181.0000
-    14.77997    182.0000
-    13.87832    183.0000
-    12.88891    184.0000
-    16.20763    185.0000
-    16.29024    186.0000
-    15.29712    187.0000
-    14.97839    188.0000
-    12.11330    189.0000
-    14.24168    190.0000
-    12.53824    191.0000
-    15.19818    192.0000
-    11.70478    193.0000
-    15.83745    194.0000
-   10.035850    195.0000
-    9.307574    196.0000
-    12.86800    197.0000
-    8.571671    198.0000
-    11.60415    199.0000
-    12.42772    200.0000
-    11.23627    201.0000
-    11.13198    202.0000
-    7.761117    203.0000
-    6.758250    204.0000
-    14.23375    205.0000
-    10.63876    206.0000
-    8.893581    207.0000
-    11.55398    208.0000
-    11.57221    209.0000
-    11.58347    210.0000
-    9.724857    211.0000
-    11.43854    212.0000
-    11.22636    213.0000
-   10.170150    214.0000
-    12.50765    215.0000
-    6.200494    216.0000
-    9.018902    217.0000
-    10.80557    218.0000
-    13.09591    219.0000
-    3.914033    220.0000
-    9.567723    221.0000
-    8.038338    222.0000
-   10.230960    223.0000
-    9.367358    224.0000
-    7.695937    225.0000
-    6.118552    226.0000
-    8.793192    227.0000
-    7.796682    228.0000
-    12.45064    229.0000
-    10.61601    230.0000
-    6.001000    231.0000
-    6.765096    232.0000
-    8.764652    233.0000
-    4.586417    234.0000
-    8.390782    235.0000
-    7.209201    236.0000
-   10.012090    237.0000
-    7.327461    238.0000
-    6.525136    239.0000
-    2.840065    240.0000
-   10.323710    241.0000
-    4.790035    242.0000
-    8.376431    243.0000
-    6.263980    244.0000
-    2.705892    245.0000
-    8.362109    246.0000
-    8.983507    247.0000
-    3.362469    248.0000
-    1.182678    249.0000
-    4.875312    250.0000
diff --git a/third_party/ceres/data/nist/Hahn1.dat b/third_party/ceres/data/nist/Hahn1.dat
deleted file mode 100644
index f3069d7..0000000
--- a/third_party/ceres/data/nist/Hahn1.dat
+++ /dev/null
@@ -1,296 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Hahn1             (Hahn1.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  47)
-               Certified Values  (lines 41 to  52)
-               Data              (lines 61 to 296)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               the thermal expansion of copper.  The response 
-               variable is the coefficient of thermal expansion, and
-               the predictor variable is temperature in degrees 
-               kelvin.
-
-
-Reference:     Hahn, T., NIST (197?). 
-               Copper Thermal Expansion Study.
-
-
-
-
-
-Data:          1 Response  (y = coefficient of thermal expansion)
-               1 Predictor (x = temperature, degrees kelvin)
-               236 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Rational Class (cubic/cubic)
-               7 Parameters (b1 to b7)
-
-               y = (b1+b2*x+b3*x**2+b4*x**3) /
-                   (1+b5*x+b6*x**2+b7*x**3)  +  e
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   10           1            1.0776351733E+00  1.7070154742E-01
-  b2 =   -1          -0.1         -1.2269296921E-01  1.2000289189E-02
-  b3 =    0.05        0.005        4.0863750610E-03  2.2508314937E-04
-  b4 =   -0.00001    -0.000001    -1.4262662514E-06  2.7578037666E-07
-  b5 =   -0.05       -0.005       -5.7609940901E-03  2.4712888219E-04
-  b6 =    0.001       0.0001       2.4053735503E-04  1.0449373768E-05
-  b7 =   -0.000001   -0.0000001   -1.2314450199E-07  1.3027335327E-08
-
-Residual Sum of Squares:                    1.5324382854E+00 
-Residual Standard Deviation:                8.1803852243E-02
-Degrees of Freedom:                               229
-Number of Observations:                           236
-
-
-
-
-
-
-  
-Data:   y              x
-        .591E0         24.41E0  
-       1.547E0         34.82E0  
-       2.902E0         44.09E0  
-       2.894E0         45.07E0  
-       4.703E0         54.98E0  
-       6.307E0         65.51E0  
-       7.03E0          70.53E0  
-       7.898E0         75.70E0  
-       9.470E0         89.57E0  
-       9.484E0         91.14E0  
-      10.072E0         96.40E0  
-      10.163E0         97.19E0  
-      11.615E0        114.26E0  
-      12.005E0        120.25E0  
-      12.478E0        127.08E0  
-      12.982E0        133.55E0  
-      12.970E0        133.61E0  
-      13.926E0        158.67E0  
-      14.452E0        172.74E0  
-      14.404E0        171.31E0  
-      15.190E0        202.14E0  
-      15.550E0        220.55E0  
-      15.528E0        221.05E0  
-      15.499E0        221.39E0  
-      16.131E0        250.99E0  
-      16.438E0        268.99E0  
-      16.387E0        271.80E0  
-      16.549E0        271.97E0  
-      16.872E0        321.31E0  
-      16.830E0        321.69E0  
-      16.926E0        330.14E0  
-      16.907E0        333.03E0  
-      16.966E0        333.47E0  
-      17.060E0        340.77E0  
-      17.122E0        345.65E0  
-      17.311E0        373.11E0  
-      17.355E0        373.79E0  
-      17.668E0        411.82E0  
-      17.767E0        419.51E0  
-      17.803E0        421.59E0  
-      17.765E0        422.02E0  
-      17.768E0        422.47E0  
-      17.736E0        422.61E0  
-      17.858E0        441.75E0  
-      17.877E0        447.41E0  
-      17.912E0        448.7E0   
-      18.046E0        472.89E0  
-      18.085E0        476.69E0  
-      18.291E0        522.47E0  
-      18.357E0        522.62E0  
-      18.426E0        524.43E0  
-      18.584E0        546.75E0  
-      18.610E0        549.53E0  
-      18.870E0        575.29E0  
-      18.795E0        576.00E0  
-      19.111E0        625.55E0  
-        .367E0         20.15E0  
-        .796E0         28.78E0  
-       0.892E0         29.57E0  
-       1.903E0         37.41E0  
-       2.150E0         39.12E0  
-       3.697E0         50.24E0  
-       5.870E0         61.38E0  
-       6.421E0         66.25E0  
-       7.422E0         73.42E0  
-       9.944E0         95.52E0  
-      11.023E0        107.32E0  
-      11.87E0         122.04E0  
-      12.786E0        134.03E0  
-      14.067E0        163.19E0  
-      13.974E0        163.48E0  
-      14.462E0        175.70E0  
-      14.464E0        179.86E0  
-      15.381E0        211.27E0  
-      15.483E0        217.78E0  
-      15.59E0         219.14E0  
-      16.075E0        262.52E0  
-      16.347E0        268.01E0  
-      16.181E0        268.62E0  
-      16.915E0        336.25E0  
-      17.003E0        337.23E0  
-      16.978E0        339.33E0  
-      17.756E0        427.38E0  
-      17.808E0        428.58E0  
-      17.868E0        432.68E0  
-      18.481E0        528.99E0  
-      18.486E0        531.08E0  
-      19.090E0        628.34E0  
-      16.062E0        253.24E0  
-      16.337E0        273.13E0  
-      16.345E0        273.66E0  
-      16.388E0        282.10E0  
-      17.159E0        346.62E0  
-      17.116E0        347.19E0  
-      17.164E0        348.78E0  
-      17.123E0        351.18E0  
-      17.979E0        450.10E0  
-      17.974E0        450.35E0  
-      18.007E0        451.92E0  
-      17.993E0        455.56E0  
-      18.523E0        552.22E0  
-      18.669E0        553.56E0  
-      18.617E0        555.74E0  
-      19.371E0        652.59E0  
-      19.330E0        656.20E0  
-       0.080E0         14.13E0  
-       0.248E0         20.41E0  
-       1.089E0         31.30E0  
-       1.418E0         33.84E0  
-       2.278E0         39.70E0  
-       3.624E0         48.83E0  
-       4.574E0         54.50E0  
-       5.556E0         60.41E0  
-       7.267E0         72.77E0  
-       7.695E0         75.25E0  
-       9.136E0         86.84E0  
-       9.959E0         94.88E0  
-       9.957E0         96.40E0  
-      11.600E0        117.37E0  
-      13.138E0        139.08E0  
-      13.564E0        147.73E0  
-      13.871E0        158.63E0  
-      13.994E0        161.84E0  
-      14.947E0        192.11E0  
-      15.473E0        206.76E0  
-      15.379E0        209.07E0  
-      15.455E0        213.32E0  
-      15.908E0        226.44E0  
-      16.114E0        237.12E0  
-      17.071E0        330.90E0  
-      17.135E0        358.72E0  
-      17.282E0        370.77E0  
-      17.368E0        372.72E0  
-      17.483E0        396.24E0  
-      17.764E0        416.59E0  
-      18.185E0        484.02E0  
-      18.271E0        495.47E0  
-      18.236E0        514.78E0  
-      18.237E0        515.65E0  
-      18.523E0        519.47E0  
-      18.627E0        544.47E0  
-      18.665E0        560.11E0  
-      19.086E0        620.77E0  
-       0.214E0         18.97E0  
-       0.943E0         28.93E0  
-       1.429E0         33.91E0  
-       2.241E0         40.03E0  
-       2.951E0         44.66E0  
-       3.782E0         49.87E0  
-       4.757E0         55.16E0  
-       5.602E0         60.90E0  
-       7.169E0         72.08E0  
-       8.920E0         85.15E0  
-      10.055E0         97.06E0  
-      12.035E0        119.63E0  
-      12.861E0        133.27E0  
-      13.436E0        143.84E0  
-      14.167E0        161.91E0  
-      14.755E0        180.67E0  
-      15.168E0        198.44E0  
-      15.651E0        226.86E0  
-      15.746E0        229.65E0  
-      16.216E0        258.27E0  
-      16.445E0        273.77E0  
-      16.965E0        339.15E0  
-      17.121E0        350.13E0  
-      17.206E0        362.75E0  
-      17.250E0        371.03E0  
-      17.339E0        393.32E0  
-      17.793E0        448.53E0  
-      18.123E0        473.78E0  
-      18.49E0         511.12E0  
-      18.566E0        524.70E0  
-      18.645E0        548.75E0  
-      18.706E0        551.64E0  
-      18.924E0        574.02E0  
-      19.1E0          623.86E0  
-       0.375E0         21.46E0  
-       0.471E0         24.33E0  
-       1.504E0         33.43E0  
-       2.204E0         39.22E0  
-       2.813E0         44.18E0  
-       4.765E0         55.02E0  
-       9.835E0         94.33E0  
-      10.040E0         96.44E0  
-      11.946E0        118.82E0  
-      12.596E0        128.48E0  
-      13.303E0        141.94E0  
-      13.922E0        156.92E0  
-      14.440E0        171.65E0  
-      14.951E0        190.00E0  
-      15.627E0        223.26E0  
-      15.639E0        223.88E0  
-      15.814E0        231.50E0  
-      16.315E0        265.05E0  
-      16.334E0        269.44E0  
-      16.430E0        271.78E0  
-      16.423E0        273.46E0  
-      17.024E0        334.61E0  
-      17.009E0        339.79E0  
-      17.165E0        349.52E0  
-      17.134E0        358.18E0  
-      17.349E0        377.98E0  
-      17.576E0        394.77E0  
-      17.848E0        429.66E0  
-      18.090E0        468.22E0  
-      18.276E0        487.27E0  
-      18.404E0        519.54E0  
-      18.519E0        523.03E0  
-      19.133E0        612.99E0  
-      19.074E0        638.59E0  
-      19.239E0        641.36E0  
-      19.280E0        622.05E0  
-      19.101E0        631.50E0  
-      19.398E0        663.97E0  
-      19.252E0        646.9E0   
-      19.89E0         748.29E0  
-      20.007E0        749.21E0  
-      19.929E0        750.14E0  
-      19.268E0        647.04E0  
-      19.324E0        646.89E0  
-      20.049E0        746.9E0   
-      20.107E0        748.43E0  
-      20.062E0        747.35E0  
-      20.065E0        749.27E0  
-      19.286E0        647.61E0  
-      19.972E0        747.78E0  
-      20.088E0        750.51E0  
-      20.743E0        851.37E0  
-      20.83E0         845.97E0  
-      20.935E0        847.54E0  
-      21.035E0        849.93E0  
-      20.93E0         851.61E0  
-      21.074E0        849.75E0  
-      21.085E0        850.98E0  
-      20.935E0        848.23E0  
diff --git a/third_party/ceres/data/nist/Kirby2.dat b/third_party/ceres/data/nist/Kirby2.dat
deleted file mode 100644
index 04df176..0000000
--- a/third_party/ceres/data/nist/Kirby2.dat
+++ /dev/null
@@ -1,211 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Kirby2            (Kirby2.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to  45)
-               Certified Values  (lines 41 to  50)
-               Data              (lines 61 to 211)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               scanning electron microscope line with standards.
-
-
-Reference:     Kirby, R., NIST (197?).  
-               Scanning electron microscope line width standards.
-
-
-
-
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               151 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Rational Class (quadratic/quadratic)
-               5 Parameters (b1 to b5)
-
-               y = (b1 + b2*x + b3*x**2) /
-                   (1 + b4*x + b5*x**2)  +  e
-
- 
-          Starting values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =    2           1.5          1.6745063063E+00  8.7989634338E-02
-  b2 =   -0.1        -0.15        -1.3927397867E-01  4.1182041386E-03
-  b3 =    0.003       0.0025       2.5961181191E-03  4.1856520458E-05
-  b4 =   -0.001      -0.0015      -1.7241811870E-03  5.8931897355E-05
-  b5 =    0.00001     0.00002      2.1664802578E-05  2.0129761919E-07
-
-Residual Sum of Squares:                    3.9050739624E+00
-Residual Standard Deviation:                1.6354535131E-01
-Degrees of Freedom:                               146
-Number of Observations:                           151
-
-
-
-
-
-
-
-
-
-Data:   y             x
-       0.0082E0      9.65E0
-       0.0112E0     10.74E0
-       0.0149E0     11.81E0
-       0.0198E0     12.88E0
-       0.0248E0     14.06E0
-       0.0324E0     15.28E0
-       0.0420E0     16.63E0
-       0.0549E0     18.19E0
-       0.0719E0     19.88E0
-       0.0963E0     21.84E0
-       0.1291E0     24.00E0
-       0.1710E0     26.25E0
-       0.2314E0     28.86E0
-       0.3227E0     31.85E0
-       0.4809E0     35.79E0
-       0.7084E0     40.18E0
-       1.0220E0     44.74E0
-       1.4580E0     49.53E0
-       1.9520E0     53.94E0
-       2.5410E0     58.29E0
-       3.2230E0     62.63E0
-       3.9990E0     67.03E0
-       4.8520E0     71.25E0
-       5.7320E0     75.22E0
-       6.7270E0     79.33E0
-       7.8350E0     83.56E0
-       9.0250E0     87.75E0
-      10.2670E0     91.93E0
-      11.5780E0     96.10E0
-      12.9440E0    100.28E0
-      14.3770E0    104.46E0
-      15.8560E0    108.66E0
-      17.3310E0    112.71E0
-      18.8850E0    116.88E0
-      20.5750E0    121.33E0
-      22.3200E0    125.79E0
-      22.3030E0    125.79E0
-      23.4600E0    128.74E0
-      24.0600E0    130.27E0
-      25.2720E0    133.33E0
-      25.8530E0    134.79E0
-      27.1100E0    137.93E0
-      27.6580E0    139.33E0
-      28.9240E0    142.46E0
-      29.5110E0    143.90E0
-      30.7100E0    146.91E0
-      31.3500E0    148.51E0
-      32.5200E0    151.41E0
-      33.2300E0    153.17E0
-      34.3300E0    155.97E0
-      35.0600E0    157.76E0
-      36.1700E0    160.56E0
-      36.8400E0    162.30E0
-      38.0100E0    165.21E0
-      38.6700E0    166.90E0
-      39.8700E0    169.92E0
-      40.0300E0    170.32E0
-      40.5000E0    171.54E0
-      41.3700E0    173.79E0
-      41.6700E0    174.57E0
-      42.3100E0    176.25E0
-      42.7300E0    177.34E0
-      43.4600E0    179.19E0
-      44.1400E0    181.02E0
-      44.5500E0    182.08E0
-      45.2200E0    183.88E0
-      45.9200E0    185.75E0
-      46.3000E0    186.80E0
-      47.0000E0    188.63E0
-      47.6800E0    190.45E0
-      48.0600E0    191.48E0
-      48.7400E0    193.35E0
-      49.4100E0    195.22E0
-      49.7600E0    196.23E0
-      50.4300E0    198.05E0
-      51.1100E0    199.97E0
-      51.5000E0    201.06E0
-      52.1200E0    202.83E0
-      52.7600E0    204.69E0
-      53.1800E0    205.86E0
-      53.7800E0    207.58E0
-      54.4600E0    209.50E0
-      54.8300E0    210.65E0
-      55.4000E0    212.33E0
-      56.4300E0    215.43E0
-      57.0300E0    217.16E0
-      58.0000E0    220.21E0
-      58.6100E0    221.98E0
-      59.5800E0    225.06E0
-      60.1100E0    226.79E0
-      61.1000E0    229.92E0
-      61.6500E0    231.69E0
-      62.5900E0    234.77E0
-      63.1200E0    236.60E0
-      64.0300E0    239.63E0
-      64.6200E0    241.50E0
-      65.4900E0    244.48E0
-      66.0300E0    246.40E0
-      66.8900E0    249.35E0
-      67.4200E0    251.32E0
-      68.2300E0    254.22E0
-      68.7700E0    256.24E0
-      69.5900E0    259.11E0
-      70.1100E0    261.18E0
-      70.8600E0    264.02E0
-      71.4300E0    266.13E0
-      72.1600E0    268.94E0
-      72.7000E0    271.09E0
-      73.4000E0    273.87E0
-      73.9300E0    276.08E0
-      74.6000E0    278.83E0
-      75.1600E0    281.08E0
-      75.8200E0    283.81E0
-      76.3400E0    286.11E0
-      76.9800E0    288.81E0
-      77.4800E0    291.08E0
-      78.0800E0    293.75E0
-      78.6000E0    295.99E0
-      79.1700E0    298.64E0
-      79.6200E0    300.84E0
-      79.8800E0    302.02E0
-      80.1900E0    303.48E0
-      80.6600E0    305.65E0
-      81.2200E0    308.27E0
-      81.6600E0    310.41E0
-      82.1600E0    313.01E0
-      82.5900E0    315.12E0
-      83.1400E0    317.71E0
-      83.5000E0    319.79E0
-      84.0000E0    322.36E0
-      84.4000E0    324.42E0
-      84.8900E0    326.98E0
-      85.2600E0    329.01E0
-      85.7400E0    331.56E0
-      86.0700E0    333.56E0
-      86.5400E0    336.10E0
-      86.8900E0    338.08E0
-      87.3200E0    340.60E0
-      87.6500E0    342.57E0
-      88.1000E0    345.08E0
-      88.4300E0    347.02E0
-      88.8300E0    349.52E0
-      89.1200E0    351.44E0
-      89.5400E0    353.93E0
-      89.8500E0    355.83E0
-      90.2500E0    358.32E0
-      90.5500E0    360.20E0
-      90.9300E0    362.67E0
-      91.2000E0    364.53E0
-      91.5500E0    367.00E0
-      92.2000E0    371.30E0
diff --git a/third_party/ceres/data/nist/Lanczos1.dat b/third_party/ceres/data/nist/Lanczos1.dat
deleted file mode 100644
index 8107320..0000000
--- a/third_party/ceres/data/nist/Lanczos1.dat
+++ /dev/null
@@ -1,84 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Lanczos1          (Lanczos1.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 46)
-               Certified Values  (lines 41 to 51)
-               Data              (lines 61 to 84)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are taken from an example discussed in
-               Lanczos (1956).  The data were generated to 14-digits
-               of accuracy using
-               f(x) = 0.0951*exp(-x) + 0.8607*exp(-3*x) 
-                                     + 1.5576*exp(-5*x).
-
-
-Reference:     Lanczos, C. (1956).
-               Applied Analysis.
-               Englewood Cliffs, NJ:  Prentice Hall, pp. 272-280.
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               24 Observations
-               Average Level of Difficulty
-               Generated Data
-
-Model:         Exponential Class
-               6 Parameters (b1 to b6)
-
-               y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x)  +  e
-
-
- 
-          Starting values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   1.2         0.5           9.5100000027E-02  5.3347304234E-11
-  b2 =   0.3         0.7           1.0000000001E+00  2.7473038179E-10
-  b3 =   5.6         3.6           8.6070000013E-01  1.3576062225E-10
-  b4 =   5.5         4.2           3.0000000002E+00  3.3308253069E-10
-  b5 =   6.5         4             1.5575999998E+00  1.8815731448E-10
-  b6 =   7.6         6.3           5.0000000001E+00  1.1057500538E-10
-
-Residual Sum of Squares:                    1.4307867721E-25
-Residual Standard Deviation:                8.9156129349E-14
-Degrees of Freedom:                                18
-Number of Observations:                            24
-
-
-
-
-
-
-
-
-Data:   y                   x
-       2.513400000000E+00  0.000000000000E+00
-       2.044333373291E+00  5.000000000000E-02
-       1.668404436564E+00  1.000000000000E-01
-       1.366418021208E+00  1.500000000000E-01
-       1.123232487372E+00  2.000000000000E-01
-       9.268897180037E-01  2.500000000000E-01
-       7.679338563728E-01  3.000000000000E-01
-       6.388775523106E-01  3.500000000000E-01
-       5.337835317402E-01  4.000000000000E-01
-       4.479363617347E-01  4.500000000000E-01
-       3.775847884350E-01  5.000000000000E-01
-       3.197393199326E-01  5.500000000000E-01
-       2.720130773746E-01  6.000000000000E-01
-       2.324965529032E-01  6.500000000000E-01
-       1.996589546065E-01  7.000000000000E-01
-       1.722704126914E-01  7.500000000000E-01
-       1.493405660168E-01  8.000000000000E-01
-       1.300700206922E-01  8.500000000000E-01
-       1.138119324644E-01  9.000000000000E-01
-       1.000415587559E-01  9.500000000000E-01
-       8.833209084540E-02  1.000000000000E+00
-       7.833544019350E-02  1.050000000000E+00
-       6.976693743449E-02  1.100000000000E+00
-       6.239312536719E-02  1.150000000000E+00
diff --git a/third_party/ceres/data/nist/Lanczos2.dat b/third_party/ceres/data/nist/Lanczos2.dat
deleted file mode 100644
index fc98e69..0000000
--- a/third_party/ceres/data/nist/Lanczos2.dat
+++ /dev/null
@@ -1,84 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Lanczos2          (Lanczos2.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 46)
-               Certified Values  (lines 41 to 51)
-               Data              (lines 61 to 84)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are taken from an example discussed in
-               Lanczos (1956).  The data were generated to 6-digits
-               of accuracy using
-               f(x) = 0.0951*exp(-x) + 0.8607*exp(-3*x) 
-                                     + 1.5576*exp(-5*x).
-
-
-Reference:     Lanczos, C. (1956).
-               Applied Analysis.
-               Englewood Cliffs, NJ:  Prentice Hall, pp. 272-280.
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               24 Observations
-               Average Level of Difficulty
-               Generated Data
- 
-Model:         Exponential Class
-               6 Parameters (b1 to b6)
- 
-               y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x)  +  e
- 
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   1.2         0.5           9.6251029939E-02  6.6770575477E-04
-  b2 =   0.3         0.7           1.0057332849E+00  3.3989646176E-03
-  b3 =   5.6         3.6           8.6424689056E-01  1.7185846685E-03
-  b4 =   5.5         4.2           3.0078283915E+00  4.1707005856E-03
-  b5 =   6.5         4             1.5529016879E+00  2.3744381417E-03
-  b6 =   7.6         6.3           5.0028798100E+00  1.3958787284E-03
-
-Residual Sum of Squares:                    2.2299428125E-11
-Residual Standard Deviation:                1.1130395851E-06
-Degrees of Freedom:                                18
-Number of Observations:                            24
-
-
-
-
-
-
-
-
-Data:   y            x
-       2.51340E+00  0.00000E+00
-       2.04433E+00  5.00000E-02
-       1.66840E+00  1.00000E-01
-       1.36642E+00  1.50000E-01
-       1.12323E+00  2.00000E-01
-       9.26890E-01  2.50000E-01
-       7.67934E-01  3.00000E-01
-       6.38878E-01  3.50000E-01
-       5.33784E-01  4.00000E-01
-       4.47936E-01  4.50000E-01
-       3.77585E-01  5.00000E-01
-       3.19739E-01  5.50000E-01
-       2.72013E-01  6.00000E-01
-       2.32497E-01  6.50000E-01
-       1.99659E-01  7.00000E-01
-       1.72270E-01  7.50000E-01
-       1.49341E-01  8.00000E-01
-       1.30070E-01  8.50000E-01
-       1.13812E-01  9.00000E-01
-       1.00042E-01  9.50000E-01
-       8.83321E-02  1.00000E+00
-       7.83354E-02  1.05000E+00
-       6.97669E-02  1.10000E+00
-       6.23931E-02  1.15000E+00
diff --git a/third_party/ceres/data/nist/Lanczos3.dat b/third_party/ceres/data/nist/Lanczos3.dat
deleted file mode 100644
index d930d65..0000000
--- a/third_party/ceres/data/nist/Lanczos3.dat
+++ /dev/null
@@ -1,84 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Lanczos3          (Lanczos3.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 46)
-               Certified Values  (lines 41 to 51)
-               Data              (lines 61 to 84)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are taken from an example discussed in
-               Lanczos (1956).  The data were generated to 5-digits
-               of accuracy using
-               f(x) = 0.0951*exp(-x) + 0.8607*exp(-3*x) 
-                                     + 1.5576*exp(-5*x).
-
-
-Reference:     Lanczos, C. (1956).
-               Applied Analysis.
-               Englewood Cliffs, NJ:  Prentice Hall, pp. 272-280.
-
-
-
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               24 Observations
-               Lower Level of Difficulty
-               Generated Data
- 
-Model:         Exponential Class
-               6 Parameters (b1 to b6)
- 
-               y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x)  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   1.2         0.5           8.6816414977E-02  1.7197908859E-02
-  b2 =   0.3         0.7           9.5498101505E-01  9.7041624475E-02
-  b3 =   5.6         3.6           8.4400777463E-01  4.1488663282E-02
-  b4 =   5.5         4.2           2.9515951832E+00  1.0766312506E-01
-  b5 =   6.5         4             1.5825685901E+00  5.8371576281E-02
-  b6 =   7.6         6.3           4.9863565084E+00  3.4436403035E-02
-
-Residual Sum of Squares:                    1.6117193594E-08
-Residual Standard Deviation:                2.9923229172E-05
-Degrees of Freedom:                                18
-Number of Observations:                            24
-
-
-
-
-
-
-
-
-Data:   y           x
-       2.5134E+00  0.00000E+00
-       2.0443E+00  5.00000E-02
-       1.6684E+00  1.00000E-01
-       1.3664E+00  1.50000E-01
-       1.1232E+00  2.00000E-01
-       0.9269E+00  2.50000E-01
-       0.7679E+00  3.00000E-01
-       0.6389E+00  3.50000E-01
-       0.5338E+00  4.00000E-01
-       0.4479E+00  4.50000E-01
-       0.3776E+00  5.00000E-01
-       0.3197E+00  5.50000E-01
-       0.2720E+00  6.00000E-01
-       0.2325E+00  6.50000E-01
-       0.1997E+00  7.00000E-01
-       0.1723E+00  7.50000E-01
-       0.1493E+00  8.00000E-01
-       0.1301E+00  8.50000E-01
-       0.1138E+00  9.00000E-01
-       0.1000E+00  9.50000E-01
-       0.0883E+00  1.00000E+00
-       0.0783E+00  1.05000E+00
-       0.0698E+00  1.10000E+00
-       0.0624E+00  1.15000E+00
diff --git a/third_party/ceres/data/nist/MGH09.dat b/third_party/ceres/data/nist/MGH09.dat
deleted file mode 100644
index 1f19af8..0000000
--- a/third_party/ceres/data/nist/MGH09.dat
+++ /dev/null
@@ -1,71 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  MGH09             (MGH09.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 44)
-               Certified Values  (lines 41 to 49)
-               Data              (lines 61 to 71)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   This problem was found to be difficult for some very 
-               good algorithms.  There is a local minimum at (+inf,
-               -14.07..., -inf, -inf) with final sum of squares 
-               0.00102734....
-
-               See More, J. J., Garbow, B. S., and Hillstrom, K. E. 
-               (1981).  Testing unconstrained optimization software.
-               ACM Transactions on Mathematical Software. 7(1): 
-               pp. 17-41.
-
-Reference:     Kowalik, J.S., and M. R. Osborne, (1978).  
-               Methods for Unconstrained Optimization Problems.  
-               New York, NY:  Elsevier North-Holland.
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               11 Observations
-               Higher Level of Difficulty
-               Generated Data
- 
-Model:         Rational Class (linear/quadratic)
-               4 Parameters (b1 to b4)
- 
-               y = b1*(x**2+x*b2) / (x**2+x*b3+b4)  +  e
- 
-
- 
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   25          0.25          1.9280693458E-01  1.1435312227E-02
-  b2 =   39          0.39          1.9128232873E-01  1.9633220911E-01
-  b3 =   41.5        0.415         1.2305650693E-01  8.0842031232E-02
-  b4 =   39          0.39          1.3606233068E-01  9.0025542308E-02
-
-Residual Sum of Squares:                    3.0750560385E-04
-Residual Standard Deviation:                6.6279236551E-03
-Degrees of Freedom:                                7
-Number of Observations:                           11
- 
- 
-
-
-
-
-
- 
- 
- 
-Data:  y               x
-       1.957000E-01    4.000000E+00
-       1.947000E-01    2.000000E+00
-       1.735000E-01    1.000000E+00
-       1.600000E-01    5.000000E-01
-       8.440000E-02    2.500000E-01
-       6.270000E-02    1.670000E-01
-       4.560000E-02    1.250000E-01
-       3.420000E-02    1.000000E-01
-       3.230000E-02    8.330000E-02
-       2.350000E-02    7.140000E-02
-       2.460000E-02    6.250000E-02
diff --git a/third_party/ceres/data/nist/MGH10.dat b/third_party/ceres/data/nist/MGH10.dat
deleted file mode 100644
index df88ea4..0000000
--- a/third_party/ceres/data/nist/MGH10.dat
+++ /dev/null
@@ -1,76 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  MGH10             (MGH10.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 43)
-               Certified Values  (lines 41 to 48)
-               Data              (lines 61 to 76)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   This problem was found to be difficult for some very
-               good algorithms.
-
-               See More, J. J., Garbow, B. S., and Hillstrom, K. E. 
-               (1981).  Testing unconstrained optimization software.
-               ACM Transactions on Mathematical Software. 7(1): 
-               pp. 17-41.
-
-Reference:     Meyer, R. R. (1970).  
-               Theoretical and computational aspects of nonlinear 
-               regression.  In Nonlinear Programming, Rosen, 
-               Mangasarian and Ritter (Eds).  
-               New York, NY: Academic Press, pp. 465-486.
-
-Data:          1 Response  (y)
-               1 Predictor (x)
-               16 Observations
-               Higher Level of Difficulty
-               Generated Data
- 
-Model:         Exponential Class
-               3 Parameters (b1 to b3)
- 
-               y = b1 * exp[b2/(x+b3)]  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =        2         0.02       5.6096364710E-03  1.5687892471E-04
-  b2 =   400000      4000          6.1813463463E+03  2.3309021107E+01
-  b3 =    25000       250          3.4522363462E+02  7.8486103508E-01
-
-Residual Sum of Squares:                    8.7945855171E+01
-Residual Standard Deviation:                2.6009740065E+00
-Degrees of Freedom:                                13
-Number of Observations:                            16
-
-
-
-
-
-
-
-
-
-
-
-Data:  y               x
-      3.478000E+04    5.000000E+01
-      2.861000E+04    5.500000E+01
-      2.365000E+04    6.000000E+01
-      1.963000E+04    6.500000E+01
-      1.637000E+04    7.000000E+01
-      1.372000E+04    7.500000E+01
-      1.154000E+04    8.000000E+01
-      9.744000E+03    8.500000E+01
-      8.261000E+03    9.000000E+01
-      7.030000E+03    9.500000E+01
-      6.005000E+03    1.000000E+02
-      5.147000E+03    1.050000E+02
-      4.427000E+03    1.100000E+02
-      3.820000E+03    1.150000E+02
-      3.307000E+03    1.200000E+02
-      2.872000E+03    1.250000E+02
diff --git a/third_party/ceres/data/nist/MGH17.dat b/third_party/ceres/data/nist/MGH17.dat
deleted file mode 100644
index 3b3b7e8..0000000
--- a/third_party/ceres/data/nist/MGH17.dat
+++ /dev/null
@@ -1,93 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  MGH17             (MGH17.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 45)
-               Certified Values  (lines 41 to 50)
-               Data              (lines 61 to 93)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   This problem was found to be difficult for some very
-               good algorithms.
-
-               See More, J. J., Garbow, B. S., and Hillstrom, K. E.
-               (1981).  Testing unconstrained optimization software.
-               ACM Transactions on Mathematical Software. 7(1):
-               pp. 17-41.
-
-Reference:     Osborne, M. R. (1972).  
-               Some aspects of nonlinear least squares 
-               calculations.  In Numerical Methods for Nonlinear 
-               Optimization, Lootsma (Ed).  
-               New York, NY:  Academic Press, pp. 171-189.
- 
-Data:          1 Response  (y)
-               1 Predictor (x)
-               33 Observations
-               Average Level of Difficulty
-               Generated Data
-
-Model:         Exponential Class
-               5 Parameters (b1 to b5)
-
-               y = b1 + b2*exp[-x*b4] + b3*exp[-x*b5]  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =     50         0.5          3.7541005211E-01  2.0723153551E-03
-  b2 =    150         1.5          1.9358469127E+00  2.2031669222E-01
-  b3 =   -100        -1           -1.4646871366E+00  2.2175707739E-01
-  b4 =      1          0.01        1.2867534640E-02  4.4861358114E-04
-  b5 =      2          0.02        2.2122699662E-02  8.9471996575E-04
-
-Residual Sum of Squares:                    5.4648946975E-05
-Residual Standard Deviation:                1.3970497866E-03
-Degrees of Freedom:                                28
-Number of Observations:                            33
-
-
-
-
-
-
-
-
-
-Data:  y               x
-      8.440000E-01    0.000000E+00
-      9.080000E-01    1.000000E+01
-      9.320000E-01    2.000000E+01
-      9.360000E-01    3.000000E+01
-      9.250000E-01    4.000000E+01
-      9.080000E-01    5.000000E+01
-      8.810000E-01    6.000000E+01
-      8.500000E-01    7.000000E+01
-      8.180000E-01    8.000000E+01
-      7.840000E-01    9.000000E+01
-      7.510000E-01    1.000000E+02
-      7.180000E-01    1.100000E+02
-      6.850000E-01    1.200000E+02
-      6.580000E-01    1.300000E+02
-      6.280000E-01    1.400000E+02
-      6.030000E-01    1.500000E+02
-      5.800000E-01    1.600000E+02
-      5.580000E-01    1.700000E+02
-      5.380000E-01    1.800000E+02
-      5.220000E-01    1.900000E+02
-      5.060000E-01    2.000000E+02
-      4.900000E-01    2.100000E+02
-      4.780000E-01    2.200000E+02
-      4.670000E-01    2.300000E+02
-      4.570000E-01    2.400000E+02
-      4.480000E-01    2.500000E+02
-      4.380000E-01    2.600000E+02
-      4.310000E-01    2.700000E+02
-      4.240000E-01    2.800000E+02
-      4.200000E-01    2.900000E+02
-      4.140000E-01    3.000000E+02
-      4.110000E-01    3.100000E+02
-      4.060000E-01    3.200000E+02
diff --git a/third_party/ceres/data/nist/Misra1a.dat b/third_party/ceres/data/nist/Misra1a.dat
deleted file mode 100644
index 332f37ef..0000000
--- a/third_party/ceres/data/nist/Misra1a.dat
+++ /dev/null
@@ -1,74 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Misra1a           (Misra1a.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 42)
-               Certified Values  (lines 41 to 47)
-               Data              (lines 61 to 74)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study regarding
-               dental research in monomolecular adsorption.  The
-               response variable is volume, and the predictor
-               variable is pressure.
-
-Reference:     Misra, D., NIST (1978).  
-               Dental Research Monomolecular Adsorption Study.
-
- 
-
-
-
-
-
-Data:          1 Response Variable  (y = volume)
-               1 Predictor Variable (x = pressure)
-               14 Observations
-               Lower Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               2 Parameters (b1 and b2)
-
-               y = b1*(1-exp[-b2*x])  +  e
-
-
- 
-          Starting values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   500         250           2.3894212918E+02  2.7070075241E+00
-  b2 =     0.0001      0.0005      5.5015643181E-04  7.2668688436E-06
-
-Residual Sum of Squares:                    1.2455138894E-01
-Residual Standard Deviation:                1.0187876330E-01
-Degrees of Freedom:                                12
-Number of Observations:                            14
-
-
-
-
-
-
-
-
-
-
-
-
-Data:   y               x
-      10.07E0      77.6E0
-      14.73E0     114.9E0
-      17.94E0     141.1E0
-      23.93E0     190.8E0
-      29.61E0     239.9E0
-      35.18E0     289.0E0
-      40.02E0     332.8E0
-      44.82E0     378.4E0
-      50.76E0     434.8E0
-      55.05E0     477.3E0
-      61.01E0     536.8E0
-      66.40E0     593.1E0
-      75.47E0     689.1E0
-      81.78E0     760.0E0
diff --git a/third_party/ceres/data/nist/Misra1b.dat b/third_party/ceres/data/nist/Misra1b.dat
deleted file mode 100644
index 7923d40..0000000
--- a/third_party/ceres/data/nist/Misra1b.dat
+++ /dev/null
@@ -1,74 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Misra1b           (Misra1b.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 42)
-               Certified Values  (lines 41 to 47)
-               Data              (lines 61 to 74)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study regarding
-               dental research in monomolecular adsorption.  The
-               response variable is volume, and the predictor
-               variable is pressure.
-
-Reference:     Misra, D., NIST (1978).  
-               Dental Research Monomolecular Adsorption Study.
-
-
-
-
-
-
-
-Data:          1 Response  (y = volume)
-               1 Predictor (x = pressure)
-               14 Observations
-               Lower Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               2 Parameters (b1 and b2)
-
-               y = b1 * (1-(1+b2*x/2)**(-2))  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   500         300           3.3799746163E+02  3.1643950207E+00
-  b2 =     0.0001      0.0002      3.9039091287E-04  4.2547321834E-06
- 
-Residual Sum of Squares:                    7.5464681533E-02
-Residual Standard Deviation:                7.9301471998E-02
-Degrees of Freedom:                                12
-Number of Observations:                            14
-
-
-
-
-
-
-
-
-
-
- 
- 
-Data:   y               x
-      10.07E0      77.6E0
-      14.73E0     114.9E0
-      17.94E0     141.1E0
-      23.93E0     190.8E0
-      29.61E0     239.9E0
-      35.18E0     289.0E0
-      40.02E0     332.8E0
-      44.82E0     378.4E0
-      50.76E0     434.8E0
-      55.05E0     477.3E0
-      61.01E0     536.8E0
-      66.40E0     593.1E0
-      75.47E0     689.1E0
-      81.78E0     760.0E0
diff --git a/third_party/ceres/data/nist/Misra1c.dat b/third_party/ceres/data/nist/Misra1c.dat
deleted file mode 100644
index d86bc82..0000000
--- a/third_party/ceres/data/nist/Misra1c.dat
+++ /dev/null
@@ -1,74 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Misra1c           (Misra1c.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 42)
-               Certified Values  (lines 41 to 47)
-               Data              (lines 61 to 74)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study regarding
-               dental research in monomolecular adsorption.  The
-               response variable is volume, and the predictor
-               variable is pressure.
-
-Reference:     Misra, D., NIST (1978).  
-               Dental Research Monomolecular Adsorption.
-
-
-
-
-
-
-
-Data:          1 Response  (y = volume)
-               1 Predictor (x = pressure)
-               14 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               2 Parameters (b1 and b2)
-
-               y = b1 * (1-(1+2*b2*x)**(-.5))  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   500         600           6.3642725809E+02  4.6638326572E+00
-  b2 =     0.0001      0.0002      2.0813627256E-04  1.7728423155E-06
-  
-Residual Sum of Squares:                    4.0966836971E-02
-Residual Standard Deviation:                5.8428615257E-02
-Degrees of Freedom:                                12
-Number of Observations:                            14
- 
-
- 
- 
- 
- 
- 
- 
- 
-  
-  
-  
-Data:   y            x 
-      10.07E0      77.6E0
-      14.73E0     114.9E0
-      17.94E0     141.1E0
-      23.93E0     190.8E0
-      29.61E0     239.9E0
-      35.18E0     289.0E0
-      40.02E0     332.8E0
-      44.82E0     378.4E0
-      50.76E0     434.8E0
-      55.05E0     477.3E0
-      61.01E0     536.8E0
-      66.40E0     593.1E0
-      75.47E0     689.1E0
-      81.78E0     760.0E0
diff --git a/third_party/ceres/data/nist/Misra1d.dat b/third_party/ceres/data/nist/Misra1d.dat
deleted file mode 100644
index 237de46..0000000
--- a/third_party/ceres/data/nist/Misra1d.dat
+++ /dev/null
@@ -1,74 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Misra1d           (Misra1d.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 42)
-               Certified Values  (lines 41 to 47)
-               Data              (lines 61 to 74)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study regarding
-               dental research in monomolecular adsorption.  The
-               response variable is volume, and the predictor
-               variable is pressure.
-
-Reference:     Misra, D., NIST (1978).  
-               Dental Research Monomolecular Adsorption Study.
-
-
-
-
-
-
-
-Data:          1 Response  (y = volume)
-               1 Predictor (x = pressure)
-               14 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               2 Parameters (b1 and b2)
-
-               y = b1*b2*x*((1+b2*x)**(-1))  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   500         450           4.3736970754E+02  3.6489174345E+00
-  b2 =     0.0001      0.0003      3.0227324449E-04  2.9334354479E-06
-
-Residual Sum of Squares:                    5.6419295283E-02
-Residual Standard Deviation:                6.8568272111E-02
-Degrees of Freedom:                                12
-Number of Observations:                            14
-
-
-
-
-
-
-
-
-
-
-
-
-Data:   y            x
-      10.07E0      77.6E0
-      14.73E0     114.9E0
-      17.94E0     141.1E0
-      23.93E0     190.8E0
-      29.61E0     239.9E0
-      35.18E0     289.0E0
-      40.02E0     332.8E0
-      44.82E0     378.4E0
-      50.76E0     434.8E0
-      55.05E0     477.3E0
-      61.01E0     536.8E0
-      66.40E0     593.1E0
-      75.47E0     689.1E0
-      81.78E0     760.0E0
diff --git a/third_party/ceres/data/nist/Nelson.dat b/third_party/ceres/data/nist/Nelson.dat
deleted file mode 100644
index 5ce1003..0000000
--- a/third_party/ceres/data/nist/Nelson.dat
+++ /dev/null
@@ -1,188 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Nelson            (Nelson.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 43)
-               Certified Values  (lines 41 to 48)
-               Data              (lines 61 to 188)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a study involving
-               the analysis of performance degradation data from
-               accelerated tests, published in IEEE Transactions
-               on Reliability.  The response variable is dialectric
-               breakdown strength in kilo-volts, and the predictor
-               variables are time in weeks and temperature in degrees
-               Celcius.
-
-
-Reference:     Nelson, W. (1981).  
-               Analysis of Performance-Degradation Data.  
-               IEEE Transactions on Reliability.
-               Vol. 2, R-30, No. 2, pp. 149-155.
-
-Data:          1 Response   ( y = dialectric breakdown strength) 
-               2 Predictors (x1 = time; x2 = temperature)
-               128 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               3 Parameters (b1 to b3)
-
-               log[y] = b1 - b2*x1 * exp[-b3*x2]  +  e
-
-
-
-          Starting values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =    2           2.5          2.5906836021E+00  1.9149996413E-02
-  b2 =    0.0001      0.000000005  5.6177717026E-09  6.1124096540E-09
-  b3 =   -0.01       -0.05        -5.7701013174E-02  3.9572366543E-03
-
-Residual Sum of Squares:                    3.7976833176E+00
-Residual Standard Deviation:                1.7430280130E-01
-Degrees of Freedom:                               125
-Number of Observations:                           128
-
-
-
-
-
-
-
-
-
-
-
-Data:   y              x1            x2
-      15.00E0         1E0         180E0
-      17.00E0         1E0         180E0
-      15.50E0         1E0         180E0
-      16.50E0         1E0         180E0
-      15.50E0         1E0         225E0
-      15.00E0         1E0         225E0
-      16.00E0         1E0         225E0
-      14.50E0         1E0         225E0
-      15.00E0         1E0         250E0
-      14.50E0         1E0         250E0
-      12.50E0         1E0         250E0
-      11.00E0         1E0         250E0
-      14.00E0         1E0         275E0
-      13.00E0         1E0         275E0
-      14.00E0         1E0         275E0
-      11.50E0         1E0         275E0
-      14.00E0         2E0         180E0
-      16.00E0         2E0         180E0
-      13.00E0         2E0         180E0
-      13.50E0         2E0         180E0
-      13.00E0         2E0         225E0
-      13.50E0         2E0         225E0
-      12.50E0         2E0         225E0
-      12.50E0         2E0         225E0
-      12.50E0         2E0         250E0
-      12.00E0         2E0         250E0
-      11.50E0         2E0         250E0
-      12.00E0         2E0         250E0
-      13.00E0         2E0         275E0
-      11.50E0         2E0         275E0
-      13.00E0         2E0         275E0
-      12.50E0         2E0         275E0
-      13.50E0         4E0         180E0
-      17.50E0         4E0         180E0
-      17.50E0         4E0         180E0
-      13.50E0         4E0         180E0
-      12.50E0         4E0         225E0
-      12.50E0         4E0         225E0
-      15.00E0         4E0         225E0
-      13.00E0         4E0         225E0
-      12.00E0         4E0         250E0
-      13.00E0         4E0         250E0
-      12.00E0         4E0         250E0
-      13.50E0         4E0         250E0
-      10.00E0         4E0         275E0
-      11.50E0         4E0         275E0
-      11.00E0         4E0         275E0
-       9.50E0         4E0         275E0
-      15.00E0         8E0         180E0
-      15.00E0         8E0         180E0
-      15.50E0         8E0         180E0
-      16.00E0         8E0         180E0
-      13.00E0         8E0         225E0
-      10.50E0         8E0         225E0
-      13.50E0         8E0         225E0
-      14.00E0         8E0         225E0
-      12.50E0         8E0         250E0
-      12.00E0         8E0         250E0
-      11.50E0         8E0         250E0
-      11.50E0         8E0         250E0
-       6.50E0         8E0         275E0
-       5.50E0         8E0         275E0
-       6.00E0         8E0         275E0
-       6.00E0         8E0         275E0
-      18.50E0        16E0         180E0
-      17.00E0        16E0         180E0
-      15.30E0        16E0         180E0
-      16.00E0        16E0         180E0
-      13.00E0        16E0         225E0
-      14.00E0        16E0         225E0
-      12.50E0        16E0         225E0
-      11.00E0        16E0         225E0
-      12.00E0        16E0         250E0
-      12.00E0        16E0         250E0
-      11.50E0        16E0         250E0
-      12.00E0        16E0         250E0
-       6.00E0        16E0         275E0
-       6.00E0        16E0         275E0
-       5.00E0        16E0         275E0
-       5.50E0        16E0         275E0
-      12.50E0        32E0         180E0
-      13.00E0        32E0         180E0
-      16.00E0        32E0         180E0
-      12.00E0        32E0         180E0
-      11.00E0        32E0         225E0
-       9.50E0        32E0         225E0
-      11.00E0        32E0         225E0
-      11.00E0        32E0         225E0
-      11.00E0        32E0         250E0
-      10.00E0        32E0         250E0
-      10.50E0        32E0         250E0
-      10.50E0        32E0         250E0
-       2.70E0        32E0         275E0
-       2.70E0        32E0         275E0
-       2.50E0        32E0         275E0
-       2.40E0        32E0         275E0
-      13.00E0        48E0         180E0
-      13.50E0        48E0         180E0
-      16.50E0        48E0         180E0
-      13.60E0        48E0         180E0
-      11.50E0        48E0         225E0
-      10.50E0        48E0         225E0
-      13.50E0        48E0         225E0
-      12.00E0        48E0         225E0
-       7.00E0        48E0         250E0
-       6.90E0        48E0         250E0
-       8.80E0        48E0         250E0
-       7.90E0        48E0         250E0
-       1.20E0        48E0         275E0
-       1.50E0        48E0         275E0
-       1.00E0        48E0         275E0
-       1.50E0        48E0         275E0
-      13.00E0        64E0         180E0
-      12.50E0        64E0         180E0
-      16.50E0        64E0         180E0
-      16.00E0        64E0         180E0
-      11.00E0        64E0         225E0
-      11.50E0        64E0         225E0
-      10.50E0        64E0         225E0
-      10.00E0        64E0         225E0
-       7.27E0        64E0         250E0
-       7.50E0        64E0         250E0
-       6.70E0        64E0         250E0
-       7.60E0        64E0         250E0
-       1.50E0        64E0         275E0
-       1.00E0        64E0         275E0
-       1.20E0        64E0         275E0
-       1.20E0        64E0         275E0
diff --git a/third_party/ceres/data/nist/Rat42.dat b/third_party/ceres/data/nist/Rat42.dat
deleted file mode 100644
index e112fbb..0000000
--- a/third_party/ceres/data/nist/Rat42.dat
+++ /dev/null
@@ -1,69 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Rat42             (Rat42.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 43)
-               Certified Values  (lines 41 to 48)
-               Data              (lines 61 to 69)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   This model and data are an example of fitting
-               sigmoidal growth curves taken from Ratkowsky (1983).
-               The response variable is pasture yield, and the
-               predictor variable is growing time.
-
-
-Reference:     Ratkowsky, D.A. (1983).  
-               Nonlinear Regression Modeling.
-               New York, NY:  Marcel Dekker, pp. 61 and 88.
-
-
-
-
-
-Data:          1 Response  (y = pasture yield)
-               1 Predictor (x = growing time)
-               9 Observations
-               Higher Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               3 Parameters (b1 to b3)
-
-               y = b1 / (1+exp[b2-b3*x])  +  e
-
-
-
-          Starting Values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   100         75            7.2462237576E+01  1.7340283401E+00
-  b2 =     1          2.5          2.6180768402E+00  8.8295217536E-02
-  b3 =     0.1        0.07         6.7359200066E-02  3.4465663377E-03
-
-Residual Sum of Squares:                    8.0565229338E+00
-Residual Standard Deviation:                1.1587725499E+00
-Degrees of Freedom:                                6
-Number of Observations:                            9 
-
-
-
-
-
-
-
-
-
-
-
-Data:   y              x
-       8.930E0        9.000E0
-      10.800E0       14.000E0
-      18.590E0       21.000E0
-      22.330E0       28.000E0
-      39.350E0       42.000E0
-      56.110E0       57.000E0
-      61.730E0       63.000E0
-      64.620E0       70.000E0
-      67.080E0       79.000E0
diff --git a/third_party/ceres/data/nist/Rat43.dat b/third_party/ceres/data/nist/Rat43.dat
deleted file mode 100644
index 347d846..0000000
--- a/third_party/ceres/data/nist/Rat43.dat
+++ /dev/null
@@ -1,75 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Rat43             (Rat43.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 44)
-               Certified Values  (lines 41 to 49)
-               Data              (lines 61 to 75)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   This model and data are an example of fitting  
-               sigmoidal growth curves taken from Ratkowsky (1983).  
-               The response variable is the dry weight of onion bulbs 
-               and tops, and the predictor variable is growing time. 
-
-
-Reference:     Ratkowsky, D.A. (1983).  
-               Nonlinear Regression Modeling.
-               New York, NY:  Marcel Dekker, pp. 62 and 88.
-
-
-
-
-
-Data:          1 Response  (y = onion bulb dry weight)
-               1 Predictor (x = growing time)
-               15 Observations
-               Higher Level of Difficulty
-               Observed Data
-
-Model:         Exponential Class
-               4 Parameters (b1 to b4)
-
-               y = b1 / ((1+exp[b2-b3*x])**(1/b4))  +  e
-
-
-
-          Starting Values                  Certified Values
- 
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   100         700           6.9964151270E+02  1.6302297817E+01
-  b2 =    10           5           5.2771253025E+00  2.0828735829E+00
-  b3 =     1           0.75        7.5962938329E-01  1.9566123451E-01
-  b4 =     1           1.3         1.2792483859E+00  6.8761936385E-01
- 
-Residual Sum of Squares:                    8.7864049080E+03
-Residual Standard Deviation:                2.8262414662E+01
-Degrees of Freedom:                                9
-Number of Observations:                           15 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-Data:   y          x
-      16.08E0     1.0E0
-      33.83E0     2.0E0
-      65.80E0     3.0E0
-      97.20E0     4.0E0
-     191.55E0     5.0E0
-     326.20E0     6.0E0
-     386.87E0     7.0E0
-     520.53E0     8.0E0
-     590.03E0     9.0E0
-     651.92E0    10.0E0
-     724.93E0    11.0E0
-     699.56E0    12.0E0
-     689.96E0    13.0E0
-     637.56E0    14.0E0
-     717.41E0    15.0E0
diff --git a/third_party/ceres/data/nist/Roszman1.dat b/third_party/ceres/data/nist/Roszman1.dat
deleted file mode 100644
index 1d67674..0000000
--- a/third_party/ceres/data/nist/Roszman1.dat
+++ /dev/null
@@ -1,85 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Roszman1          (Roszman1.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 44)
-               Certified Values  (lines 41 to 49)
-               Data              (lines 61 to 85)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               quantum defects in iodine atoms.  The response
-               variable is the number of quantum defects, and the
-               predictor variable is the excited energy state.
-               The argument to the ARCTAN function is in radians.
-
-Reference:     Roszman, L., NIST (19??).
-               Quantum Defects for Sulfur I Atom.
-
-
-
-
-
-
-Data:          1 Response  (y = quantum defect)
-               1 Predictor (x = excited state energy)
-               25 Observations
-               Average Level of Difficulty
-               Observed Data
-
-Model:         Miscellaneous Class
-               4 Parameters (b1 to b4)
-
-               pi = 3.141592653589793238462643383279E0
-               y =  b1 - b2*x - arctan[b3/(x-b4)]/pi  +  e
-
-
-          Starting Values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =      0.1         0.2         1.20196866396E-0  1.9172666023E-02
-  b2 =     -0.00001    -0.000005   -6.1953516256E-06  3.2058931691E-06
-  b3 =   1000        1200           1.2044556708E+03  7.4050983057E+01
-  b4 =   -100        -150          -1.8134269537E+02  4.9573513849E+01
-
-Residual Sum of Squares:                    4.9484847331E-04
-Residual Standard Deviation:                4.8542984060E-03
-Degrees of Freedom:                                 21
-Number of Observations:                             25
-
-
-
-
-
-
-
-
-
-
-Data:   y           x
-       0.252429    -4868.68
-       0.252141    -4868.09
-       0.251809    -4867.41
-       0.297989    -3375.19
-       0.296257    -3373.14
-       0.295319    -3372.03
-       0.339603    -2473.74
-       0.337731    -2472.35
-       0.333820    -2469.45
-       0.389510    -1894.65
-       0.386998    -1893.40
-       0.438864    -1497.24
-       0.434887    -1495.85
-       0.427893    -1493.41
-       0.471568    -1208.68
-       0.461699    -1206.18
-       0.461144    -1206.04
-       0.513532     -997.92
-       0.506641     -996.61
-       0.505062     -996.31
-       0.535648     -834.94
-       0.533726     -834.66
-       0.568064     -710.03
-       0.612886     -530.16
-       0.624169     -464.17
diff --git a/third_party/ceres/data/nist/Thurber.dat b/third_party/ceres/data/nist/Thurber.dat
deleted file mode 100644
index 6d72fd9..0000000
--- a/third_party/ceres/data/nist/Thurber.dat
+++ /dev/null
@@ -1,97 +0,0 @@
-NIST/ITL StRD
-Dataset Name:  Thurber           (Thurber.dat)
-
-File Format:   ASCII
-               Starting Values   (lines 41 to 47)
-               Certified Values  (lines 41 to 52)
-               Data              (lines 61 to 97)
-
-Procedure:     Nonlinear Least Squares Regression
-
-Description:   These data are the result of a NIST study involving
-               semiconductor electron mobility.  The response 
-               variable is a measure of electron mobility, and the 
-               predictor variable is the natural log of the density.
-
-
-Reference:     Thurber, R., NIST (197?).  
-               Semiconductor electron mobility modeling.
-
-
-
-
-
-
-Data:          1 Response Variable  (y = electron mobility)
-               1 Predictor Variable (x = log[density])
-               37 Observations
-               Higher Level of Difficulty
-               Observed Data
-
-Model:         Rational Class (cubic/cubic)
-               7 Parameters (b1 to b7)
-
-               y = (b1 + b2*x + b3*x**2 + b4*x**3) / 
-                   (1 + b5*x + b6*x**2 + b7*x**3)  +  e
-
-
-          Starting Values                  Certified Values
-
-        Start 1     Start 2           Parameter     Standard Deviation
-  b1 =   1000        1300          1.2881396800E+03  4.6647963344E+00
-  b2 =   1000        1500          1.4910792535E+03  3.9571156086E+01
-  b3 =    400         500          5.8323836877E+02  2.8698696102E+01
-  b4 =     40          75          7.5416644291E+01  5.5675370270E+00
-  b5 =      0.7         1          9.6629502864E-01  3.1333340687E-02
-  b6 =      0.3         0.4        3.9797285797E-01  1.4984928198E-02
-  b7 =      0.03        0.05       4.9727297349E-02  6.5842344623E-03
-
-Residual Sum of Squares:                    5.6427082397E+03
-Residual Standard Deviation:                1.3714600784E+01
-Degrees of Freedom:                                30
-Number of Observations:                            37
-
-
-
-
-
-
-
-Data:   y             x
-      80.574E0      -3.067E0
-      84.248E0      -2.981E0
-      87.264E0      -2.921E0
-      87.195E0      -2.912E0
-      89.076E0      -2.840E0
-      89.608E0      -2.797E0
-      89.868E0      -2.702E0
-      90.101E0      -2.699E0
-      92.405E0      -2.633E0
-      95.854E0      -2.481E0
-     100.696E0      -2.363E0
-     101.060E0      -2.322E0
-     401.672E0      -1.501E0
-     390.724E0      -1.460E0
-     567.534E0      -1.274E0
-     635.316E0      -1.212E0
-     733.054E0      -1.100E0
-     759.087E0      -1.046E0
-     894.206E0      -0.915E0
-     990.785E0      -0.714E0
-    1090.109E0      -0.566E0
-    1080.914E0      -0.545E0
-    1122.643E0      -0.400E0
-    1178.351E0      -0.309E0
-    1260.531E0      -0.109E0
-    1273.514E0      -0.103E0
-    1288.339E0       0.010E0
-    1327.543E0       0.119E0
-    1353.863E0       0.377E0
-    1414.509E0       0.790E0
-    1425.208E0       0.963E0
-    1421.384E0       1.006E0
-    1442.962E0       1.115E0
-    1464.350E0       1.572E0
-    1468.705E0       1.841E0
-    1447.894E0       2.047E0
-    1457.628E0       2.200E0
diff --git a/third_party/ceres/data/problem-16-22106-pre.txt b/third_party/ceres/data/problem-16-22106-pre.txt
deleted file mode 100644
index d278e91..0000000
--- a/third_party/ceres/data/problem-16-22106-pre.txt
+++ /dev/null
@@ -1,150181 +0,0 @@
-16 22106 83718
-0 0     -3.859900e+02 3.871200e+02
-1 0     -3.844000e+01 4.921200e+02
-2 0     -6.679200e+02 1.231100e+02
-7 0     -5.991800e+02 4.079300e+02
-12 0     -7.204300e+02 3.143400e+02
-13 0     -1.151300e+02 5.548999e+01
-0 1     3.838800e+02 -1.529999e+01
-1 1     5.597500e+02 -1.061500e+02
-10 1     3.531899e+02 1.649500e+02
-0 2     5.915500e+02 1.364400e+02
-1 2     8.638600e+02 -2.346997e+01
-2 2     4.947200e+02 1.125200e+02
-6 2     4.087800e+02 2.846700e+02
-7 2     4.246100e+02 3.101700e+02
-9 2     2.848900e+02 1.928900e+02
-10 2     5.826200e+02 3.637200e+02
-12 2     4.940601e+02 2.939500e+02
-13 2     7.968300e+02 -7.853003e+01
-15 2     7.798900e+02 4.082500e+02
-0 3     5.925000e+02 1.257500e+02
-1 3     8.610800e+02 -3.521997e+01
-2 3     4.985400e+02 1.015600e+02
-6 3     4.123100e+02 2.729200e+02
-7 3     4.267300e+02 2.995900e+02
-8 3     4.683800e+02 5.512000e+01
-9 3     2.879500e+02 1.839400e+02
-10 3     5.840500e+02 3.509700e+02
-12 3     4.973199e+02 2.825100e+02
-15 3     7.819500e+02 3.932600e+02
-0 4     3.487200e+02 5.583800e+02
-1 4     7.760300e+02 4.835300e+02
-2 4     7.780029e+00 3.263500e+02
-3 4     -1.372400e+02 -7.799988e+00
-5 4     7.500699e+02 -7.871997e+01
-6 4     -1.160900e+02 6.642200e+02
-8 4     8.704999e+01 2.563100e+02
-9 4     -1.471900e+02 3.578000e+02
-11 4     4.569200e+02 -1.971600e+02
-13 4     4.635800e+02 2.410300e+02
-14 4     6.482500e+02 -1.595700e+02
-0 5     1.401001e+01 9.642001e+01
-1 5     2.071300e+02 1.183600e+02
-3 5     1.859003e+01 -2.068000e+02
-4 5     -2.095300e+02 -4.217600e+02
-5 5     6.350900e+02 -5.616200e+02
-6 5     -6.738000e+01 1.258300e+02
-7 5     -9.081000e+01 2.093600e+02
-8 5     1.251800e+02 4.523999e+01
-9 5     -2.071997e+01 1.799200e+02
-10 5     -8.720001e+01 2.550200e+02
-13 5     3.672600e+02 -1.403400e+02
-15 5     -2.814001e+01 2.705200e+02
-0 6     2.027600e+02 3.409900e+02
-1 6     5.431801e+02 2.948100e+02
-2 6     -5.841998e+01 1.108300e+02
-6 6     -1.970800e+02 3.693100e+02
-9 6     -1.916600e+02 1.693800e+02
-10 6     1.095900e+02 5.662500e+02
-12 6     -4.534003e+01 3.656000e+02
-13 6     3.698700e+02 4.792999e+01
-14 6     5.376000e+02 -3.953000e+02
-0 7     2.784998e+01 6.340997e+01
-1 7     2.076700e+02 8.259000e+01
-3 7     5.706000e+01 -2.246000e+02
-4 7     -2.321000e+02 -4.337000e+02
-5 7     6.628300e+02 -5.977400e+02
-6 7     -3.060999e+01 9.716998e+01
-7 7     -6.769000e+01 1.800300e+02
-8 7     1.541100e+02 2.748001e+01
-10 7     -6.696997e+01 2.173500e+02
-12 7     -1.144000e+01 1.517900e+02
-13 7     3.881100e+02 -1.658300e+02
-15 7     -5.020020e+00 2.274200e+02
-0 8     -2.750000e+01 9.788000e+01
-1 8     1.702000e+02 1.310200e+02
-3 8     -3.317999e+01 -2.263400e+02
-4 8     -2.051100e+02 -3.883200e+02
-5 8     5.803199e+02 -5.634100e+02
-6 8     -1.245300e+02 1.102100e+02
-7 8     -1.350300e+02 2.014500e+02
-8 8     8.146002e+01 3.072000e+01
-10 8     -1.359700e+02 2.526800e+02
-12 8     -9.739001e+01 1.646700e+02
-13 8     3.259200e+02 -1.444000e+02
-15 8     -8.390997e+01 2.669100e+02
-0 9     -2.878700e+02 4.245500e+02
-1 9     6.648999e+01 5.046000e+02
-5 9     1.167700e+02 -2.296800e+02
-8 9     -3.860500e+02 1.203500e+02
-11 9     -1.079600e+02 -3.335700e+02
-13 9     -3.758002e+01 9.117999e+01
-14 9     3.228998e+01 -3.212400e+02
-0 10     2.057800e+02 4.791800e+02
-1 10     5.918000e+02 4.354700e+02
-3 10     -2.434800e+02 -9.378998e+01
-5 10     6.078101e+02 -1.671800e+02
-7 10     -2.639001e+01 5.679100e+02
-14 10     5.138800e+02 -2.489400e+02
-0 11     -3.105400e+02 3.763300e+02
-1 11     3.300000e+01 4.634700e+02
-2 11     -5.909000e+02 1.078800e+02
-7 11     -5.205800e+02 4.047900e+02
-8 11     -4.043000e+02 7.310999e+01
-11 11     -1.296200e+02 -3.755400e+02
-12 11     -6.313300e+02 3.121400e+02
-13 11     -5.696997e+01 4.944000e+01
-14 11     6.109985e+00 -3.718900e+02
-0 12     -2.168800e+02 -4.861600e+02
-1 12     -1.780400e+02 -3.683000e+02
-0 13     -3.132700e+02 4.044100e+02
-1 13     3.688000e+01 4.912400e+02
-7 13     -5.272300e+02 4.339600e+02
-10 13     -5.121800e+02 5.931300e+02
-11 13     -1.306200e+02 -3.524300e+02
-12 13     -6.389500e+02 3.464000e+02
-0 14     -4.466800e+02 2.216200e+02
-1 14     -1.351100e+02 3.486600e+02
-5 14     -6.496002e+01 -4.504900e+02
-7 14     -6.385100e+02 2.242000e+02
-10 14     -6.492300e+02 3.592700e+02
-11 14     -2.603000e+02 -5.149000e+02
-0 15     -3.948000e+02 3.086400e+02
-1 15     -6.462000e+01 4.186700e+02
-5 15     -3.280029e+00 -3.539900e+02
-7 15     -5.980400e+02 3.229200e+02
-8 15     -4.761100e+02 1.820007e+00
-10 15     -5.981700e+02 4.687200e+02
-11 15     -2.072500e+02 -4.353200e+02
-13 15     -1.271600e+02 -1.440002e+01
-14 15     -8.452002e+01 -4.475601e+02
-15 15     -6.041500e+02 5.064400e+02
-0 16     -3.705100e+02 3.271000e+02
-1 16     -3.682001e+01 4.306000e+02
-5 16     2.346997e+01 -3.346800e+02
-7 16     -5.754700e+02 3.454500e+02
-8 16     -4.551500e+02 2.050000e+01
-10 16     -5.711700e+02 4.937700e+02
-11 16     -1.851900e+02 -4.192400e+02
-12 16     -6.937400e+02 2.401900e+02
-15 16     -5.738200e+02 5.354800e+02
-0 17     -5.534700e+02 4.375600e+02
-1 17     -1.853700e+02 5.787300e+02
-11 17     -3.367200e+02 -3.189600e+02
-0 18     -4.341400e+02 4.274400e+02
-1 18     -7.542999e+01 5.424400e+02
-2 18     -7.231700e+02 1.731400e+02
-10 18     -6.657300e+02 6.132900e+02
-0 19     -5.044400e+02 3.330700e+02
-1 19     -1.632600e+02 4.683200e+02
-5 19     -1.100300e+02 -3.237900e+02
-7 19     -7.171000e+02 3.349000e+02
-8 19     -5.770300e+02 2.210999e+01
-10 19     -7.381500e+02 4.900900e+02
-15 19     -7.633900e+02 5.258700e+02
-0 20     -5.365200e+02 2.877000e+02
-1 20     -2.035200e+02 4.333000e+02
-7 20     -7.445700e+02 2.824400e+02
-13 20     -2.435300e+02 -3.773999e+01
-15 20     -7.996900e+02 4.587900e+02
-0 21     -5.267900e+02 2.775900e+02
-1 21     -1.966700e+02 4.214600e+02
-5 21     -1.414300e+02 -3.843900e+02
-7 21     -7.326900e+02 2.729400e+02
-10 21     -7.574700e+02 4.203400e+02
-11 21     -3.277800e+02 -4.606100e+02
-13 21     -2.362100e+02 -4.604999e+01
-14 21     -2.221800e+02 -4.812200e+02
-15 21     -7.843600e+02 4.459000e+02
-0 22     -4.797200e+02 4.078300e+02
-1 22     -1.228300e+02 5.340200e+02
-5 22     -7.429999e+01 -2.439400e+02
-7 22     -7.020000e+02 4.191500e+02
-8 22     -5.541900e+02 1.003900e+02
-11 22     -2.763800e+02 -3.458400e+02
-13 22     -1.917000e+02 7.029999e+01
-14 22     -1.567600e+02 -3.381400e+02
-0 23     -4.335900e+02 4.062700e+02
-1 23     -7.928003e+01 5.217400e+02
-2 23     -7.237600e+02 1.452100e+02
-5 23     -2.913000e+01 -2.471400e+02
-7 23     -6.527900e+02 4.227100e+02
-8 23     -5.123100e+02 9.954999e+01
-10 23     -6.613000e+02 5.869200e+02
-11 23     -2.364000e+02 -3.480900e+02
-13 23     -1.546000e+02 7.046997e+01
-14 23     -1.115200e+02 -3.399600e+02
-0 24     -5.171400e+02 3.709500e+02
-1 24     -1.664300e+02 5.075700e+02
-5 24     -1.168500e+02 -2.821500e+02
-7 24     -7.365900e+02 3.748800e+02
-8 24     -5.890700e+02 6.162000e+01
-10 24     -7.601400e+02 5.362900e+02
-11 24     -3.112400e+02 -3.771000e+02
-13 24     -2.233400e+02 3.629999e+01
-14 24     -1.986000e+02 -3.778700e+02
-15 24     -7.887000e+02 5.784900e+02
-0 25     -4.289100e+02 4.224400e+02
-1 25     -7.135999e+01 5.363700e+02
-2 25     -7.189300e+02 1.660800e+02
-4 25     3.250000e+00 -1.125400e+02
-5 25     -2.232001e+01 -2.294600e+02
-7 25     -6.505400e+02 4.405200e+02
-8 25     -5.083300e+02 1.163100e+02
-10 25     -6.577600e+02 6.075100e+02
-11 25     -2.316100e+02 -3.341900e+02
-12 25     -7.809300e+02 3.521600e+02
-13 25     -1.507800e+02 8.448001e+01
-14 25     -1.054500e+02 -3.228700e+02
-0 26     -5.069500e+02 4.007100e+02
-1 26     -1.502500e+02 5.334800e+02
-5 26     -1.021000e+02 -2.507300e+02
-7 26     -7.299800e+02 4.080800e+02
-8 26     -5.790900e+02 9.237000e+01
-10 26     -7.527500e+02 5.746400e+02
-11 26     -3.004900e+02 -3.519500e+02
-13 26     -2.141300e+02 6.309003e+01
-14 26     -1.845200e+02 -3.455300e+02
-0 27     -4.478900e+02 3.609900e+02
-1 27     -1.046800e+02 4.822400e+02
-5 27     -4.701001e+01 -2.956700e+02
-7 27     -6.602400e+02 3.726700e+02
-10 27     -6.716700e+02 5.292300e+02
-11 27     -2.528500e+02 -3.869000e+02
-12 27     -7.925600e+02 2.724600e+02
-13 27     -1.660900e+02 3.047998e+01
-15 27     -6.895500e+02 5.734000e+02
-0 28     -3.717700e+02 3.349400e+02
-1 28     -3.633002e+01 4.384600e+02
-4 28     -5.022998e+01 -1.328300e+02
-5 28     2.313000e+01 -3.257800e+02
-7 28     -5.778600e+02 3.534800e+02
-10 28     -5.736700e+02 5.032000e+02
-11 28     -1.857300e+02 -4.123600e+02
-13 28     -1.072800e+02 1.037000e+01
-14 28     -5.821002e+01 -4.180100e+02
-15 28     -5.771200e+02 5.461800e+02
-0 29     2.929399e+02 -2.407300e+02
-1 29     3.787000e+02 -3.008300e+02
-12 29     3.769700e+02 -1.269300e+02
-15 29     3.971500e+02 -1.510400e+02
-0 30     -2.287500e+02 4.542400e+02
-1 30     1.322000e+02 5.195400e+02
-2 30     -5.090100e+02 2.041600e+02
-4 30     4.530029e+00 -2.236600e+02
-8 30     -3.386600e+02 1.507000e+02
-11 30     -5.545001e+01 -3.074400e+02
-12 30     -5.499200e+02 4.199100e+02
-14 30     9.203003e+01 -2.891900e+02
-0 31     -4.568500e+02 3.491600e+02
-1 31     -1.144900e+02 4.727700e+02
-4 31     -3.435999e+01 -8.971997e+01
-7 31     -6.686900e+02 3.585800e+02
-8 31     -5.319300e+02 4.114999e+01
-11 31     -2.600300e+02 -3.975300e+02
-12 31     -8.016400e+02 2.550200e+02
-15 31     -6.988700e+02 5.560200e+02
-0 32     -3.717600e+02 3.534700e+02
-1 32     -3.197998e+01 4.563500e+02
-5 32     2.556000e+01 -3.052100e+02
-7 32     -5.805700e+02 3.736500e+02
-8 32     -4.570300e+02 4.829999e+01
-11 32     -1.844300e+02 -3.952500e+02
-12 32     -7.000700e+02 2.734700e+02
-13 32     -1.064700e+02 2.695001e+01
-14 32     -5.603003e+01 -3.973200e+02
-15 32     -5.806100e+02 5.728400e+02
-0 33     -3.686800e+02 4.200900e+02
-1 33     -1.358002e+01 5.199100e+02
-2 33     -6.536800e+02 1.625900e+02
-7 33     -5.868600e+02 4.445900e+02
-14 33     -4.654999e+01 -3.255900e+02
-0 34     -4.324200e+02 4.189200e+02
-1 34     -7.521002e+01 5.340000e+02
-2 34     -7.222900e+02 1.626000e+02
-7 34     -6.535700e+02 4.367300e+02
-10 34     -6.620400e+02 6.029000e+02
-14 34     -1.089800e+02 -3.260300e+02
-0 35     -3.240900e+02 3.997800e+02
-1 35     2.503003e+01 4.896100e+02
-2 35     -6.056300e+02 1.371600e+02
-7 35     -5.379100e+02 4.280500e+02
-10 35     -5.252000e+02 5.874300e+02
-14 35     -5.030029e+00 -3.471700e+02
-0 36     -3.227200e+02 4.045700e+02
-1 36     2.738000e+01 4.937000e+02
-2 36     -6.045500e+02 1.432400e+02
-5 36     8.033002e+01 -2.506500e+02
-7 36     -5.370200e+02 4.338700e+02
-8 36     -4.159600e+02 1.003900e+02
-10 36     -5.240400e+02 5.931200e+02
-11 36     -1.395000e+02 -3.507100e+02
-14 36     -3.229980e+00 -3.421200e+02
-0 37     -4.512100e+02 2.949200e+02
-1 37     -1.196900e+02 4.192700e+02
-7 37     -6.570100e+02 2.996800e+02
-12 37     -7.891500e+02 1.802900e+02
-15 37     -6.809600e+02 4.797900e+02
-0 38     -5.367500e+02 4.331500e+02
-1 38     -1.709100e+02 5.708900e+02
-5 38     -1.264100e+02 -2.160500e+02
-7 38     -7.673700e+02 4.398200e+02
-10 38     -7.968700e+02 6.137000e+02
-14 38     -2.089200e+02 -3.116900e+02
-0 39     -3.572000e+02 4.869300e+02
-1 39     1.285999e+01 5.821700e+02
-2 39     -6.419200e+02 2.459500e+02
-5 39     5.509003e+01 -1.631800e+02
-12 39     -7.054500e+02 4.434100e+02
-0 40     -1.078000e+02 5.097500e+02
-1 40     2.678101e+02 5.456900e+02
-2 40     -3.932500e+02 2.712600e+02
-3 40     -5.205600e+02 -5.933002e+01
-5 40     2.997200e+02 -1.402300e+02
-7 40     -3.341000e+02 5.671100e+02
-8 40     -2.438100e+02 2.049600e+02
-11 40     5.104999e+01 -2.584500e+02
-12 40     -4.236200e+02 5.055200e+02
-0 41     2.109985e+00 5.495000e+02
-1 41     3.916100e+02 5.594600e+02
-14 41     3.156400e+02 -1.853600e+02
-0 42     1.487500e+02 5.630600e+02
-1 42     5.527100e+02 5.382800e+02
-2 42     -1.632200e+02 3.308500e+02
-3 42     -2.981300e+02 -3.320007e+00
-4 42     4.272998e+01 -4.577200e+02
-5 42     5.509000e+02 -8.103003e+01
-6 42     -3.278400e+02 6.322900e+02
-9 42     -2.930800e+02 3.564300e+02
-11 42     2.764200e+02 -2.035800e+02
-12 42     -1.582800e+02 6.020600e+02
-13 42     3.058700e+02 2.321500e+02
-14 42     4.550200e+02 -1.650300e+02
-0 43     -1.188500e+02 5.298700e+02
-1 43     2.615601e+02 5.686500e+02
-2 43     -4.051700e+02 2.946100e+02
-5 43     2.900300e+02 -1.193800e+02
-7 43     -3.479300e+02 5.869700e+02
-12 43     -4.394600e+02 5.283000e+02
-0 44     -2.036300e+02 5.136900e+02
-1 44     1.714600e+02 5.725600e+02
-2 44     -4.865400e+02 2.763000e+02
-3 44     -6.126800e+02 -5.227002e+01
-5 44     2.067900e+02 -1.365200e+02
-7 44     -4.308400e+02 5.614800e+02
-11 44     -3.287000e+01 -2.564500e+02
-12 44     -5.319800e+02 4.973900e+02
-0 45     7.131000e+01 5.701300e+02
-1 45     4.704000e+02 5.640200e+02
-2 45     -2.320500e+02 3.384900e+02
-6 45     -4.131000e+02 6.261000e+02
-9 45     -3.520700e+02 3.614200e+02
-12 45     -2.403100e+02 6.003400e+02
-14 45     3.809399e+02 -1.618800e+02
-0 46     1.764301e+02 -3.612000e+01
-1 46     3.201801e+02 -5.872998e+01
-3 46     2.438500e+02 -2.726500e+02
-4 46     -3.235900e+02 -5.561801e+02
-6 46     1.748600e+02 3.790997e+01
-7 46     9.814001e+01 1.081400e+02
-8 46     3.133700e+02 -2.066000e+01
-10 46     1.146800e+02 1.174400e+02
-12 46     1.953900e+02 8.467999e+01
-13 46     5.342000e+02 -2.373600e+02
-15 46     2.092900e+02 1.120700e+02
-0 47     9.095001e+01 9.173999e+01
-1 47     2.778500e+02 9.273001e+01
-5 47     7.376600e+02 -5.687000e+02
-10 47     3.119995e+00 2.566800e+02
-12 47     5.871997e+01 1.968000e+02
-13 47     4.489900e+02 -1.384800e+02
-15 47     7.690997e+01 2.743000e+02
-0 48     -9.142999e+01 1.057600e+02
-1 48     1.259600e+02 1.531000e+02
-3 48     -1.718700e+02 -2.953600e+02
-5 48     4.640300e+02 -5.629301e+02
-6 48     -2.580300e+02 7.590997e+01
-7 48     -2.144800e+02 1.899300e+02
-9 48     -1.824600e+02 9.945999e+01
-10 48     -2.115500e+02 2.552300e+02
-12 48     -2.078700e+02 1.282100e+02
-15 48     -1.678100e+02 2.680300e+02
-0 49     5.475000e+02 2.152500e+02
-1 49     8.426700e+02 7.370001e+01
-3 49     2.869200e+02 -1.493700e+02
-7 49     3.703900e+02 3.780900e+02
-8 49     4.088600e+02 1.119200e+02
-9 49     2.248000e+02 2.411600e+02
-10 49     5.248199e+02 4.521400e+02
-13 49     7.440800e+02 -1.517999e+01
-15 49     7.092900e+02 5.130500e+02
-0 50     2.672998e+01 1.419700e+02
-1 50     2.359399e+02 1.589300e+02
-3 50     1.299988e+00 -1.743000e+02
-4 50     -1.827600e+02 -4.297900e+02
-5 50     6.362100e+02 -5.120300e+02
-7 50     -8.865997e+01 2.542000e+02
-10 50     -7.759998e+01 3.091700e+02
-12 50     -4.788000e+01 2.289800e+02
-15 50     -1.600000e+01 3.347100e+02
-0 51     2.051200e+02 8.492999e+01
-1 51     3.923500e+02 5.275000e+01
-3 51     1.980200e+02 -1.731900e+02
-6 51     1.469600e+02 1.702300e+02
-7 51     1.023100e+02 2.306500e+02
-8 51     2.876300e+02 7.006000e+01
-10 51     1.341600e+02 2.602300e+02
-12 51     1.784900e+02 2.176800e+02
-13 51     5.330400e+02 -1.343100e+02
-0 52     1.364400e+02 7.383002e+01
-1 52     3.163300e+02 6.177002e+01
-2 52     2.570699e+02 1.252300e+02
-3 52     1.561200e+02 -1.882000e+02
-4 52     -2.385800e+02 -5.203500e+02
-6 52     8.778003e+01 1.425800e+02
-7 52     3.813000e+01 2.088200e+02
-8 52     2.448400e+02 5.685001e+01
-9 52     9.975000e+01 1.989600e+02
-10 52     5.694000e+01 2.410000e+02
-12 52     1.123200e+02 1.938300e+02
-13 52     4.821000e+02 -1.478800e+02
-15 52     1.406899e+02 2.567300e+02
-0 53     9.415997e+01 7.465002e+01
-1 53     2.745400e+02 7.496002e+01
-2 53     2.158000e+02 1.186700e+02
-3 53     1.176500e+02 -1.953500e+02
-4 53     -2.327400e+02 -4.868101e+02
-6 53     4.244000e+01 1.312000e+02
-7 53     -3.820007e+00 2.030600e+02
-8 53     2.099300e+02 5.120999e+01
-10 53     8.090027e+00 2.374000e+02
-12 53     6.470001e+01 1.841200e+02
-13 53     4.458800e+02 -1.504200e+02
-15 53     8.301001e+01 2.520500e+02
-0 54     2.094600e+02 4.755000e+02
-1 54     5.947700e+02 4.311100e+02
-2 54     -9.934998e+01 2.337300e+02
-5 54     6.126899e+02 -1.718700e+02
-6 54     -2.449200e+02 5.317200e+02
-7 54     -2.227002e+01 5.645100e+02
-8 54     -2.030029e+00 1.810500e+02
-11 54     3.386700e+02 -2.766800e+02
-12 54     -7.845001e+01 5.086100e+02
-13 54     3.566000e+02 1.608400e+02
-14 54     5.184301e+02 -2.533000e+02
-0 55     2.328998e+01 1.258200e+02
-1 55     2.264301e+02 1.442700e+02
-2 55     1.037000e+02 1.328300e+02
-3 55     9.039978e+00 -1.848000e+02
-5 55     6.370400e+02 -5.291700e+02
-6 55     -7.306000e+01 1.592400e+02
-7 55     -8.800000e+01 2.388900e+02
-10 55     -7.959003e+01 2.902800e+02
-12 55     -4.472998e+01 2.127300e+02
-13 55     3.686300e+02 -1.156700e+02
-15 55     -1.884998e+01 3.122400e+02
-0 56     5.720001e+01 5.653998e+01
-1 56     2.327500e+02 6.775000e+01
-2 56     1.860400e+02 9.404999e+01
-3 56     9.217999e+01 -2.191300e+02
-5 56     7.025699e+02 -6.043900e+02
-6 56     9.239990e+00 9.994000e+01
-7 56     -3.756000e+01 1.791300e+02
-8 56     1.844500e+02 3.075000e+01
-10 56     -3.309998e+01 2.121200e+02
-12 56     2.802002e+01 1.539500e+02
-13 56     4.164399e+02 -1.688600e+02
-15 56     3.517999e+01 2.220200e+02
-0 57     2.094600e+02 4.755000e+02
-1 57     5.947700e+02 4.311100e+02
-2 57     -9.934998e+01 2.337300e+02
-4 57     -1.421002e+01 -4.918500e+02
-5 57     6.126899e+02 -1.718700e+02
-6 57     -2.449200e+02 5.317200e+02
-7 57     -2.227002e+01 5.645100e+02
-8 57     -2.030029e+00 1.810500e+02
-11 57     3.386700e+02 -2.766800e+02
-12 57     -7.845001e+01 5.086100e+02
-13 57     3.566000e+02 1.608400e+02
-14 57     5.184301e+02 -2.533000e+02
-0 58     4.862000e+02 3.568500e+02
-1 58     8.373101e+02 2.377200e+02
-2 58     2.756100e+02 2.385700e+02
-3 58     1.350000e+02 -8.741998e+01
-6 58     1.790800e+02 4.828700e+02
-7 58     2.788000e+02 4.965800e+02
-10 58     4.415699e+02 6.150400e+02
-12 58     2.906300e+02 4.753400e+02
-0 59     2.060300e+02 4.365100e+02
-1 59     5.802000e+02 3.907600e+02
-2 59     -9.892999e+01 1.913000e+02
-3 59     -2.388700e+02 -1.400200e+02
-5 59     6.091000e+02 -2.132700e+02
-7 59     -2.075000e+01 5.244800e+02
-8 59     -1.270020e+00 1.467800e+02
-9 59     -2.323400e+02 2.365900e+02
-11 59     3.393500e+02 -3.115000e+02
-12 59     -7.519000e+01 4.638100e+02
-13 59     3.544900e+02 1.278800e+02
-14 59     5.164200e+02 -2.941500e+02
-0 60     -4.165002e+01 5.609985e+00
-1 60     1.265400e+02 4.542999e+01
-2 60     8.404999e+01 2.940002e+00
-3 60     -1.890015e+00 -3.091900e+02
-7 60     -1.315700e+02 1.094200e+02
-8 60     9.983002e+01 -4.260999e+01
-15 60     -9.090997e+01 1.391400e+02
-0 61     2.959003e+01 4.290200e+02
-1 61     3.899600e+02 4.292200e+02
-2 61     -2.568600e+02 1.787500e+02
-3 61     -3.916600e+02 -1.522400e+02
-4 61     -2.870001e+01 -3.721900e+02
-5 61     4.313900e+02 -2.235600e+02
-7 61     -1.890500e+02 4.984500e+02
-8 61     -1.324900e+02 1.351900e+02
-12 61     -2.605200e+02 4.304000e+02
-13 61     2.142400e+02 1.112900e+02
-14 61     3.425699e+02 -3.088400e+02
-0 62     5.325100e+02 2.077600e+02
-1 62     8.242900e+02 6.931000e+01
-3 62     2.726200e+02 -1.621300e+02
-8 62     3.960000e+02 1.018100e+02
-9 62     2.106400e+02 2.263700e+02
-10 62     5.073800e+02 4.407300e+02
-15 62     6.888199e+02 4.992900e+02
-0 63     4.494000e+01 -1.564200e+02
-1 63     1.549000e+02 -1.363900e+02
-2 63     2.607600e+02 -1.221500e+02
-3 63     1.751700e+02 -4.234200e+02
-4 63     -3.924200e+02 -4.464200e+02
-6 63     7.772998e+01 -1.406899e+02
-7 63     -1.116998e+01 -3.394000e+01
-8 63     2.376300e+02 -1.508900e+02
-10 63     -2.477002e+01 -3.517999e+01
-12 63     8.328003e+01 -9.306000e+01
-15 63     4.648999e+01 -6.878998e+01
-0 64     -9.878998e+01 -2.223200e+02
-1 64     8.969971e+00 -1.575900e+02
-4 64     -4.192700e+02 -3.207200e+02
-7 64     -1.524300e+02 -1.325700e+02
-8 64     9.772998e+01 -2.745200e+02
-9 64     -1.782001e+01 -1.455200e+02
-10 64     -1.838900e+02 -1.263500e+02
-12 64     -8.770001e+01 -2.365600e+02
-13 64     2.947800e+02 -4.331300e+02
-15 64     -1.360200e+02 -1.772400e+02
-0 65     1.747400e+02 -2.422600e+02
-1 65     2.532100e+02 -2.607000e+02
-2 65     4.303300e+02 -1.697100e+02
-3 65     3.396500e+02 -4.645300e+02
-4 65     -4.870300e+02 -5.583000e+02
-6 65     2.523700e+02 -1.877200e+02
-7 65     1.332900e+02 -9.427002e+01
-8 65     3.775100e+02 -1.936000e+02
-9 65     2.568400e+02 -3.806000e+01
-10 65     1.335500e+02 -1.203600e+02
-12 65     2.635100e+02 -1.501700e+02
-15 65     2.334200e+02 -1.681500e+02
-0 66     1.431600e+02 6.653998e+01
-1 66     3.201100e+02 5.272998e+01
-2 66     2.679800e+02 1.219500e+02
-3 66     1.660500e+02 -1.911600e+02
-4 66     -2.442400e+02 -5.262800e+02
-6 66     9.925000e+01 1.375200e+02
-7 66     4.646002e+01 2.031500e+02
-8 66     2.531600e+02 5.389001e+01
-9 66     1.083700e+02 1.962100e+02
-10 66     6.596997e+01 2.332300e+02
-13 66     4.899100e+02 -1.530700e+02
-0 67     6.596002e+01 -8.371997e+01
-1 67     1.980900e+02 -7.198999e+01
-2 67     2.506200e+02 -4.296997e+01
-3 67     1.602700e+02 -3.486300e+02
-4 67     -3.414500e+02 -4.635500e+02
-6 67     7.146002e+01 -5.269000e+01
-7 67     -3.729980e+00 4.187000e+01
-8 67     2.328400e+02 -8.434003e+01
-10 67     -8.080017e+00 5.087000e+01
-12 67     8.314001e+01 -3.030029e+00
-13 67     4.426700e+02 -2.882900e+02
-0 68     7.303003e+01 -1.236000e+02
-1 68     1.933500e+02 -1.131800e+02
-3 68     1.819900e+02 -3.883000e+02
-7 68     9.419983e+00 2.760010e+00
-10 68     3.859985e+00 5.250000e+00
-13 68     4.529200e+02 -3.235100e+02
-15 68     7.971997e+01 -2.125000e+01
-0 69     5.801700e+02 1.987400e+02
-1 69     8.714900e+02 4.598999e+01
-2 69     4.654600e+02 1.690500e+02
-6 69     3.785400e+02 3.497600e+02
-7 69     4.049100e+02 3.676600e+02
-8 69     4.423500e+02 1.114100e+02
-9 69     2.583900e+02 2.396100e+02
-12 69     4.648900e+02 3.587100e+02
-13 69     7.781500e+02 -2.587000e+01
-0 70     1.219800e+02 -8.892999e+01
-1 70     2.503800e+02 -9.445001e+01
-2 70     3.099600e+02 -3.465997e+01
-3 70     2.155601e+02 -3.370200e+02
-4 70     -3.543000e+02 -5.099200e+02
-6 70     1.348500e+02 -4.078003e+01
-7 70     5.313000e+01 4.640997e+01
-8 70     2.824500e+02 -7.783002e+01
-10 70     5.728998e+01 5.051001e+01
-12 70     1.498200e+02 5.809998e+00
-13 70     4.931801e+02 -2.885300e+02
-15 70     1.422000e+02 3.288000e+01
-0 71     6.522500e+02 -5.717999e+01
-1 71     8.661000e+02 -2.480700e+02
-2 71     6.151000e+02 -5.621997e+01
-3 71     4.849600e+02 -3.596800e+02
-7 71     5.101200e+02 1.345800e+02
-8 71     5.629600e+02 -7.734998e+01
-10 71     6.687900e+02 1.433300e+02
-0 72     3.897998e+01 -9.863000e+01
-1 72     1.688199e+02 -7.881000e+01
-3 72     1.358100e+02 -3.759000e+02
-6 72     4.340997e+01 -8.114001e+01
-7 72     -2.895001e+01 2.152002e+01
-8 72     2.102200e+02 -1.069100e+02
-9 72     8.214001e+01 3.466998e+01
-10 72     -3.778998e+01 3.092999e+01
-12 72     5.390997e+01 -3.100000e+01
-13 72     4.186300e+02 -3.044400e+02
-15 72     3.117999e+01 8.489990e+00
-0 73     2.075300e+02 1.613000e+02
-1 73     4.285601e+02 1.255400e+02
-2 73     2.435300e+02 1.706300e+02
-3 73     1.331500e+02 -1.478300e+02
-10 73     1.313000e+02 3.507400e+02
-13 73     5.082000e+02 -7.570001e+01
-14 73     7.201700e+02 -5.638000e+02
-15 73     2.310699e+02 3.869100e+02
-0 74     2.095400e+02 3.241900e+02
-1 74     5.436300e+02 2.759900e+02
-7 74     4.840027e+00 4.178000e+02
-13 74     3.836700e+02 3.292999e+01
-14 74     5.553199e+02 -4.150100e+02
-0 75     1.646600e+02 -1.096000e+02
-1 75     2.880900e+02 -1.284900e+02
-3 75     2.568300e+02 -3.519400e+02
-6 75     1.827400e+02 -5.060999e+01
-7 75     9.727002e+01 3.253998e+01
-8 75     3.198900e+02 -9.028998e+01
-10 75     1.086600e+02 3.141998e+01
-13 75     5.305900e+02 -3.037100e+02
-15 75     2.032000e+02 1.056000e+01
-0 76     3.957001e+01 -9.128003e+01
-1 76     1.714500e+02 -7.182001e+01
-2 76     2.226899e+02 -6.179999e+01
-3 76     1.347200e+02 -3.671100e+02
-6 76     4.233002e+01 -7.196997e+01
-7 76     -2.952002e+01 2.909998e+01
-8 76     2.095000e+02 -9.896002e+01
-9 76     8.126001e+01 4.228998e+01
-10 76     -3.801001e+01 3.941998e+01
-13 76     4.187500e+02 -2.978500e+02
-15 76     3.091998e+01 1.852002e+01
-0 77     3.738000e+01 -1.083400e+02
-1 77     1.643700e+02 -8.750000e+01
-2 77     2.238000e+02 -8.284998e+01
-3 77     1.365900e+02 -3.869800e+02
-6 77     4.321002e+01 -9.517999e+01
-7 77     -2.981000e+01 1.145001e+01
-10 77     -3.771002e+01 1.984003e+01
-12 77     5.334003e+01 -4.489001e+01
-15 77     2.959998e+01 -4.690002e+00
-0 78     2.371300e+02 5.222300e+02
-1 78     6.381000e+02 4.729100e+02
-3 78     -2.219600e+02 -4.769000e+01
-9 78     -2.223800e+02 3.205000e+02
-0 79     3.245900e+02 5.168100e+02
-1 79     7.352600e+02 4.448800e+02
-4 79     4.119995e+00 -5.745100e+02
-5 79     7.284399e+02 -1.231900e+02
-6 79     -1.326600e+02 6.087100e+02
-9 79     -1.570300e+02 3.202900e+02
-11 79     4.401700e+02 -2.342200e+02
-0 80     5.932800e+02 1.561500e+02
-1 80     8.714800e+02 -2.419983e+00
-2 80     4.901300e+02 1.344100e+02
-3 80     3.528000e+02 -1.792000e+02
-6 80     4.045900e+02 3.092500e+02
-8 80     4.618700e+02 8.248001e+01
-9 80     2.800000e+02 2.117000e+02
-10 80     5.827700e+02 3.861300e+02
-12 80     4.896801e+02 3.178100e+02
-13 80     7.963000e+02 -6.135999e+01
-0 81     1.378000e+02 -1.078300e+02
-1 81     2.614399e+02 -1.178700e+02
-2 81     3.288800e+02 -5.229999e+01
-3 81     2.342800e+02 -3.555400e+02
-6 81     1.552700e+02 -5.659003e+01
-7 81     7.090997e+01 2.996997e+01
-8 81     2.982300e+02 -9.235999e+01
-10 81     7.731000e+01 3.041998e+01
-12 81     1.715800e+02 -1.119000e+01
-13 81     5.073800e+02 -3.039300e+02
-15 81     1.660100e+02 9.299988e+00
-0 82     1.180900e+02 4.264300e+02
-1 82     4.827500e+02 4.037700e+02
-2 82     -1.755100e+02 1.764400e+02
-3 82     -3.126400e+02 -1.555100e+02
-4 82     -3.728003e+01 -4.279600e+02
-7 82     -1.031100e+02 5.047800e+02
-8 82     -6.475000e+01 1.341400e+02
-9 82     -2.969500e+02 2.204900e+02
-13 82     2.849800e+02 1.135300e+02
-14 82     4.300800e+02 -3.091200e+02
-0 83     1.875300e+02 1.485999e+01
-1 83     3.485200e+02 -1.192999e+01
-2 83     3.299301e+02 8.263000e+01
-3 83     2.266600e+02 -2.272100e+02
-4 83     -2.874300e+02 -5.639100e+02
-7 83     9.904999e+01 1.593800e+02
-8 83     3.045100e+02 2.094000e+01
-10 83     1.211000e+02 1.772800e+02
-13 83     5.352700e+02 -1.932200e+02
-15 83     2.192000e+02 1.829900e+02
-0 84     1.012500e+02 -4.721002e+01
-1 84     2.425100e+02 -4.695001e+01
-2 84     2.761700e+02 7.289978e+00
-3 84     1.817000e+02 -2.992600e+02
-4 84     -3.192300e+02 -4.941700e+02
-7 84     2.585999e+01 8.460999e+01
-8 84     2.553500e+02 -4.210999e+01
-9 84     1.219900e+02 1.014100e+02
-10 84     2.822998e+01 9.665997e+01
-15 84     1.081400e+02 8.675000e+01
-0 85     1.011200e+02 -6.097998e+01
-1 85     2.378101e+02 -6.079999e+01
-2 85     2.810400e+02 -6.869995e+00
-3 85     1.873300e+02 -3.123900e+02
-7 85     2.800000e+01 7.090997e+01
-8 85     2.594400e+02 -5.442001e+01
-10 85     2.948999e+01 8.114001e+01
-13 85     4.722500e+02 -2.646400e+02
-0 86     1.825100e+02 -8.396002e+01
-1 86     3.130800e+02 -1.085700e+02
-2 86     3.623700e+02 -1.747998e+01
-3 86     2.641300e+02 -3.208200e+02
-6 86     1.925000e+02 -1.600000e+01
-8 86     3.272200e+02 -6.346997e+01
-10 86     1.267900e+02 6.278003e+01
-13 86     5.437600e+02 -2.792900e+02
-0 87     2.619995e+00 -4.784998e+01
-1 87     1.499200e+02 -1.878003e+01
-2 87     1.638300e+02 -2.902002e+01
-3 87     7.634003e+01 -3.364300e+02
-6 87     -1.867999e+01 -3.623999e+01
-7 87     -7.513000e+01 6.556000e+01
-8 87     1.618200e+02 -7.032001e+01
-9 87     3.042999e+01 6.702002e+01
-10 87     -8.562000e+01 8.606000e+01
-12 87     -7.359985e+00 1.709003e+01
-13 87     3.789301e+02 -2.633600e+02
-15 87     -2.513000e+01 7.285999e+01
-0 88     -1.764001e+01 -4.846002e+01
-1 88     1.317700e+02 -1.371002e+01
-2 88     1.380800e+02 -3.988000e+01
-3 88     5.256000e+01 -3.480800e+02
-4 88     -3.040000e+02 -3.959100e+02
-6 88     -4.419000e+01 -4.584998e+01
-7 88     -9.589001e+01 6.044000e+01
-8 88     1.415300e+02 -7.860999e+01
-9 88     1.297998e+01 5.758002e+01
-10 88     -1.081700e+02 8.295001e+01
-12 88     -3.196997e+01 8.429993e+00
-13 88     3.594200e+02 -2.663800e+02
-15 88     -5.103998e+01 6.888000e+01
-0 89     8.909003e+01 3.873300e+02
-1 89     4.421600e+02 3.724100e+02
-2 89     -1.972100e+02 1.303000e+02
-7 89     -1.251400e+02 4.616200e+02
-11 89     2.359100e+02 -3.608600e+02
-14 89     4.018600e+02 -3.511700e+02
-0 90     5.527700e+02 2.468200e+02
-1 90     8.579100e+02 1.050200e+02
-2 90     4.222900e+02 2.041800e+02
-3 90     2.845100e+02 -1.156200e+02
-7 90     3.712500e+02 4.096700e+02
-8 90     4.077200e+02 1.407300e+02
-9 90     2.208400e+02 2.677900e+02
-10 90     5.284900e+02 4.895400e+02
-11 90     6.797300e+02 -4.774800e+02
-12 90     4.213101e+02 4.013500e+02
-13 90     7.452400e+02 1.159998e+01
-15 90     7.128500e+02 5.575200e+02
-0 91     -5.580700e+02 3.910000e+02
-1 91     -2.000700e+02 5.359700e+02
-5 91     -1.539500e+02 -2.595000e+02
-7 91     -7.840600e+02 3.924600e+02
-10 91     -8.167200e+02 5.592100e+02
-11 91     -3.447500e+02 -3.585900e+02
-14 91     -2.358100e+02 -3.555900e+02
-0 92     -2.784100e+02 -4.636200e+02
-1 92     -2.255600e+02 -3.278400e+02
-4 92     -5.755000e+02 -1.689300e+02
-6 92     -2.134700e+02 -6.697100e+02
-0 93     -4.952300e+02 3.796100e+02
-1 93     -1.439600e+02 5.106800e+02
-10 93     -7.344400e+02 5.489400e+02
-14 93     -1.755300e+02 -3.688600e+02
-0 94     -5.432100e+02 3.561600e+02
-1 94     -1.940800e+02 4.993600e+02
-5 94     -1.446400e+02 -2.977500e+02
-14 94     -2.262900e+02 -3.938300e+02
-15 94     -8.224600e+02 5.540900e+02
-0 95     -3.520700e+02 4.695000e+02
-1 95     1.385999e+01 5.640500e+02
-2 95     -6.362600e+02 2.248700e+02
-5 95     5.790002e+01 -1.812400e+02
-7 95     -5.768300e+02 4.994100e+02
-11 95     -1.621600e+02 -2.941200e+02
-14 95     -2.632001e+01 -2.736800e+02
-0 96     -3.795500e+02 4.535100e+02
-1 96     -1.640997e+01 5.547800e+02
-7 96     -6.028400e+02 4.792600e+02
-11 96     -1.872100e+02 -3.079700e+02
-12 96     -7.260600e+02 3.983000e+02
-0 97     -3.508700e+02 3.998600e+02
-1 97     -8.800049e-01 4.957700e+02
-2 97     -6.348100e+02 1.374100e+02
-5 97     5.178998e+01 -2.556000e+02
-7 97     -5.657000e+02 4.252700e+02
-10 97     -5.581200e+02 5.855700e+02
-11 97     -1.642900e+02 -3.545300e+02
-14 97     -3.142999e+01 -3.471400e+02
-0 98     -4.993000e+02 4.040900e+02
-1 98     -1.422300e+02 5.350400e+02
-5 98     -9.415002e+01 -2.472300e+02
-8 98     -5.721500e+02 9.628000e+01
-10 98     -7.437100e+02 5.798600e+02
-0 99     -5.434000e+02 4.285100e+02
-1 99     -1.778800e+02 5.677600e+02
-5 99     -1.334200e+02 -2.205400e+02
-7 99     -7.737000e+02 4.342900e+02
-11 99     -3.285700e+02 -3.273300e+02
-13 99     -2.414700e+02 8.529001e+01
-14 99     -2.157300e+02 -3.166300e+02
-0 100     -4.288600e+02 3.977900e+02
-1 100     -7.672998e+01 5.124900e+02
-2 100     -7.188500e+02 1.338400e+02
-7 100     -6.465900e+02 4.138400e+02
-8 100     -5.081500e+02 9.078000e+01
-10 100     -6.542100e+02 5.764900e+02
-12 100     -7.765700e+02 3.205000e+02
-14 100     -1.080900e+02 -3.494400e+02
-0 101     -4.305600e+02 4.729600e+02
-1 101     -6.125000e+01 5.854000e+02
-2 101     -7.201900e+02 2.298600e+02
-5 101     -1.770001e+01 -1.766100e+02
-8 101     -5.107600e+02 1.656500e+02
-12 101     -7.913300e+02 4.157800e+02
-14 101     -1.012800e+02 -2.703700e+02
-0 102     -4.470000e+02 3.914400e+02
-1 102     -9.547998e+01 5.107100e+02
-5 102     -4.465002e+01 -2.619900e+02
-7 102     -6.648000e+02 4.050600e+02
-8 102     -5.245400e+02 8.395001e+01
-11 102     -2.490000e+02 -3.609200e+02
-12 102     -7.980000e+02 3.098200e+02
-13 102     -1.660700e+02 5.671002e+01
-14 102     -1.267400e+02 -3.562900e+02
-0 103     -5.123200e+02 4.442500e+02
-1 103     -1.454200e+02 5.758700e+02
-5 103     -1.008000e+02 -2.052600e+02
-7 103     -7.424600e+02 4.550500e+02
-14 103     -1.836900e+02 -3.003000e+02
-0 104     -4.244600e+02 4.563400e+02
-1 104     -5.928003e+01 5.681700e+02
-2 104     -7.138100e+02 2.086800e+02
-5 104     -1.378998e+01 -1.939400e+02
-11 104     -2.260300e+02 -3.049600e+02
-14 104     -9.726001e+01 -2.875500e+02
-0 105     -4.473600e+02 3.997000e+02
-1 105     -9.403003e+01 5.190600e+02
-7 105     -6.661600e+02 4.140400e+02
-10 105     -6.772900e+02 5.777700e+02
-12 105     -7.992300e+02 3.204300e+02
-14 105     -1.259200e+02 -3.472900e+02
-0 106     -4.846800e+02 3.848800e+02
-1 106     -1.327700e+02 5.132000e+02
-4 106     -1.228998e+01 -8.085999e+01
-11 106     -2.824800e+02 -3.661000e+02
-0 107     -5.400900e+02 4.395200e+02
-1 107     -1.726000e+02 5.776900e+02
-0 108     -1.249800e+02 1.093200e+02
-1 108     9.991998e+01 1.647000e+02
-2 108     -1.394900e+02 1.049988e+00
-5 108     4.123900e+02 -5.605900e+02
-6 108     -3.191900e+02 6.259003e+01
-7 108     -2.529300e+02 1.856300e+02
-10 108     -2.503500e+02 2.566600e+02
-12 108     -2.591900e+02 1.151500e+02
-15 108     -2.119900e+02 2.685300e+02
-0 109     -4.269300e+02 4.288600e+02
-1 109     -6.888000e+01 5.421700e+02
-4 109     6.320007e+00 -1.138800e+02
-5 109     -1.947998e+01 -2.230800e+02
-8 109     -5.064100e+02 1.223700e+02
-10 109     -6.571000e+02 6.152800e+02
-11 109     -2.305800e+02 -3.288500e+02
-12 109     -7.799600e+02 3.599700e+02
-13 109     -1.486900e+02 8.959000e+01
-14 109     -1.029600e+02 -3.166700e+02
-0 110     -3.159900e+02 4.188000e+02
-1 110     3.753003e+01 5.058000e+02
-2 110     -5.965700e+02 1.605000e+02
-4 110     -8.309998e+00 -1.725800e+02
-5 110     8.939001e+01 -2.363100e+02
-7 110     -5.316800e+02 4.487800e+02
-8 110     -4.091800e+02 1.139200e+02
-10 110     -5.177400e+02 6.110900e+02
-12 110     -6.438900e+02 3.634800e+02
-13 110     -5.966998e+01 8.534000e+01
-14 110     5.169983e+00 -3.271500e+02
-0 111     4.015997e+01 -2.316000e+02
-1 111     1.258000e+02 -2.071900e+02
-3 111     2.119200e+02 -4.950100e+02
-6 111     1.062500e+02 -2.247500e+02
-7 111     -1.280029e+00 -1.085000e+02
-8 111     2.610000e+02 -2.143600e+02
-9 111     1.468000e+02 -6.521002e+01
-12 111     1.055300e+02 -1.805500e+02
-13 111     4.427100e+02 -4.208100e+02
-15 111     4.958002e+01 -1.711500e+02
-0 112     -1.080017e+00 -2.227400e+02
-1 112     9.026001e+01 -1.856000e+02
-2 112     2.411500e+02 -2.042900e+02
-3 112     1.618700e+02 -5.037600e+02
-4 112     -4.353000e+02 -4.082500e+02
-6 112     5.341998e+01 -2.320601e+02
-7 112     -4.495001e+01 -1.079200e+02
-8 112     2.164700e+02 -2.190800e+02
-10 112     -7.192999e+01 -1.161300e+02
-12 112     5.128003e+01 -1.848300e+02
-13 112     4.029700e+02 -4.170200e+02
-15 112     -7.229980e+00 -1.643600e+02
-0 113     4.428003e+01 -2.320300e+02
-1 113     1.295900e+02 -2.088900e+02
-3 113     2.170400e+02 -4.930800e+02
-4 113     -4.512300e+02 -4.470800e+02
-6 113     1.116400e+02 -2.232300e+02
-7 113     3.140015e+00 -1.082200e+02
-8 113     2.655300e+02 -2.130100e+02
-9 113     1.514900e+02 -6.403003e+01
-10 113     -1.751001e+01 -1.228100e+02
-12 113     1.112700e+02 -1.790800e+02
-15 113     5.537000e+01 -1.710600e+02
-0 114     2.358002e+01 1.107400e+02
-1 114     2.209900e+02 1.296600e+02
-2 114     1.142900e+02 1.231500e+02
-5 114     6.428900e+02 -5.453199e+02
-6 114     -6.328003e+01 1.442300e+02
-7 114     -8.420001e+01 2.247100e+02
-10 114     -7.778998e+01 2.725600e+02
-12 114     -3.703003e+01 1.981100e+02
-15 114     -1.678998e+01 2.916800e+02
-0 115     -6.075000e+01 6.903998e+01
-1 115     1.311200e+02 1.112700e+02
-3 115     -6.425000e+01 -2.685400e+02
-4 115     -2.200000e+02 -3.615000e+02
-5 115     5.408400e+02 -5.975500e+02
-6 115     -1.587500e+02 6.437000e+01
-7 115     -1.654700e+02 1.666200e+02
-8 115     5.348999e+01 -2.940002e+00
-10 115     -1.710900e+02 2.135700e+02
-12 115     -1.326300e+02 1.202700e+02
-13 115     2.962500e+02 -1.713600e+02
-15 115     -1.245800e+02 2.222400e+02
-0 116     6.288000e+01 5.094800e+02
-1 116     4.458900e+02 5.034800e+02
-2 116     -2.343500e+02 2.716000e+02
-3 116     -3.673600e+02 -6.126001e+01
-5 116     4.666500e+02 -1.381900e+02
-6 116     -4.108600e+02 5.465100e+02
-7 116     -1.672900e+02 5.841000e+02
-8 116     -1.137100e+02 2.082200e+02
-9 116     -3.513900e+02 3.021800e+02
-12 116     -2.388900e+02 5.286800e+02
-14 116     3.737900e+02 -2.238600e+02
-0 117     1.317000e+02 1.395001e+01
-1 117     2.911500e+02 4.320007e+00
-2 117     2.825800e+02 7.484998e+01
-3 117     1.839000e+02 -2.350400e+02
-4 117     -2.794200e+02 -5.192500e+02
-6 117     1.100800e+02 7.967999e+01
-7 117     4.554999e+01 1.502600e+02
-8 117     2.629700e+02 1.398001e+01
-10 117     5.753003e+01 1.709900e+02
-13 117     4.893400e+02 -1.975900e+02
-0 118     -3.558002e+01 4.886500e+02
-1 118     3.372800e+02 5.066800e+02
-5 118     3.692400e+02 -1.619200e+02
-6 118     -5.169400e+02 4.991100e+02
-7 118     -2.602500e+02 5.525300e+02
-8 118     -1.865800e+02 1.867500e+02
-9 118     -4.264200e+02 2.774500e+02
-11 118     1.159300e+02 -2.747700e+02
-12 118     -3.409000e+02 4.898900e+02
-13 118     1.623800e+02 1.584100e+02
-14 118     2.793700e+02 -2.487000e+02
-0 119     5.560100e+02 2.534200e+02
-1 119     8.635000e+02 1.113800e+02
-2 119     4.238600e+02 2.117200e+02
-6 119     3.337600e+02 4.022500e+02
-8 119     4.084000e+02 1.468200e+02
-9 119     2.216400e+02 2.744500e+02
-10 119     5.315601e+02 4.979000e+02
-11 119     6.811801e+02 -4.702900e+02
-12 119     4.227600e+02 4.092000e+02
-15 119     7.162200e+02 5.676100e+02
-0 120     1.669983e+00 4.915200e+02
-1 120     3.769000e+02 5.000300e+02
-2 120     -2.892400e+02 2.497300e+02
-3 120     -4.201600e+02 -8.137000e+01
-4 120     9.349976e+00 -3.601500e+02
-5 120     4.059000e+02 -1.589400e+02
-6 120     -4.753500e+02 5.095500e+02
-7 120     -2.242000e+02 5.588000e+02
-8 120     -1.582600e+02 1.898000e+02
-9 120     -3.966600e+02 2.812700e+02
-11 120     1.491100e+02 -2.713700e+02
-12 120     -3.008100e+02 4.979900e+02
-0 121     -4.017999e+01 4.909500e+02
-1 121     3.326500e+02 5.100300e+02
-2 121     -3.277300e+02 2.496400e+02
-4 121     1.253998e+01 -3.354200e+02
-5 121     3.653000e+02 -1.590500e+02
-6 121     -5.220400e+02 5.028600e+02
-7 121     -2.650600e+02 5.543700e+02
-8 121     -1.896400e+02 1.897300e+02
-11 121     1.115200e+02 -2.725900e+02
-12 121     -3.452300e+02 4.936800e+02
-13 121     1.585000e+02 1.599200e+02
-14 121     2.747000e+02 -2.463600e+02
-0 122     1.183800e+02 4.099731e-01
-1 122     2.745200e+02 -5.500000e+00
-2 122     2.755601e+02 5.935999e+01
-3 122     1.777300e+02 -2.491600e+02
-4 122     -2.881500e+02 -5.126200e+02
-6 122     1.102200e+02 6.358002e+01
-7 122     3.548999e+01 1.349400e+02
-8 122     2.547200e+02 1.679993e+00
-10 122     4.467999e+01 1.536900e+02
-13 122     4.799600e+02 -2.103700e+02
-15 122     1.253100e+02 1.540400e+02
-0 123     5.598000e+02 1.577700e+02
-1 123     8.368101e+02 8.580017e+00
-7 123     3.901000e+02 3.244500e+02
-10 123     5.436700e+02 3.850400e+02
-12 123     4.510601e+02 3.059500e+02
-15 123     7.324301e+02 4.331700e+02
-0 124     -2.609003e+01 5.030800e+02
-1 124     3.511500e+02 5.191100e+02
-2 124     -3.154700e+02 2.647100e+02
-3 124     -4.451800e+02 -6.735999e+01
-4 124     1.872998e+01 -3.447100e+02
-5 124     3.791400e+02 -1.462800e+02
-6 124     -5.090400e+02 5.208800e+02
-7 124     -2.523900e+02 5.688900e+02
-12 124     -3.336100e+02 5.093400e+02
-0 125     1.272900e+02 4.483700e+02
-1 125     4.983199e+02 4.239100e+02
-2 125     -1.697500e+02 2.031000e+02
-3 125     -3.065200e+02 -1.292300e+02
-4 125     -2.490002e+01 -4.354399e+02
-5 125     5.297700e+02 -2.023700e+02
-7 125     -9.734998e+01 5.285700e+02
-8 125     -6.019000e+01 1.548200e+02
-12 125     -1.592700e+02 4.660300e+02
-13 125     2.917000e+02 1.336300e+02
-14 125     4.383800e+02 -2.847100e+02
-0 126     3.112600e+02 5.753000e+02
-1 126     7.379800e+02 5.111600e+02
-2 126     -2.534998e+01 3.437700e+02
-9 126     -1.761900e+02 3.721400e+02
-13 126     4.329700e+02 2.524900e+02
-14 126     6.101500e+02 -1.447200e+02
-0 127     -1.122400e+02 4.972900e+02
-1 127     2.604200e+02 5.344500e+02
-2 127     -3.962700e+02 2.573100e+02
-7 127     -3.367300e+02 5.540700e+02
-8 127     -2.457200e+02 1.946500e+02
-0 128     1.250900e+02 -3.498999e+01
-1 128     2.692700e+02 -4.201001e+01
-3 128     1.988500e+02 -2.805400e+02
-4 128     -3.145300e+02 -5.137000e+02
-6 128     1.215800e+02 2.328003e+01
-7 128     4.756000e+01 1.011500e+02
-8 128     2.721300e+02 -2.762000e+01
-10 128     5.510999e+01 1.133800e+02
-12 128     1.375300e+02 7.263000e+01
-13 128     4.903900e+02 -2.398400e+02
-15 128     1.388400e+02 1.067100e+02
-0 129     1.659399e+02 1.534003e+01
-1 129     3.262200e+02 -4.469971e+00
-2 129     3.132100e+02 8.178003e+01
-3 129     2.111200e+02 -2.282800e+02
-6 129     1.449500e+02 9.039001e+01
-7 129     7.853003e+01 1.570300e+02
-10 129     9.739001e+01 1.768100e+02
-12 129     1.673300e+02 1.397100e+02
-13 129     5.181801e+02 -1.937200e+02
-15 129     1.884900e+02 1.812900e+02
-0 130     4.867400e+02 3.696900e+02
-1 130     8.421801e+02 2.513500e+02
-3 130     1.328500e+02 -7.459998e+01
-7 130     2.772300e+02 5.095000e+02
-8 130     2.915100e+02 1.864100e+02
-9 130     8.914001e+01 3.028200e+02
-11 130     5.996200e+02 -3.592700e+02
-0 131     3.077200e+02 5.442700e+02
-1 131     7.244800e+02 4.785600e+02
-2 131     -2.483002e+01 3.105000e+02
-3 131     -1.684300e+02 -2.223999e+01
-5 131     7.096100e+02 -9.209003e+01
-8 131     6.031000e+01 2.463300e+02
-9 131     -1.744900e+02 3.460500e+02
-11 131     4.214200e+02 -2.109300e+02
-12 131     8.390015e+00 6.003700e+02
-13 131     4.314399e+02 2.256100e+02
-14 131     6.093000e+02 -1.768500e+02
-0 132     1.434000e+02 8.089001e+01
-1 132     3.259200e+02 6.684003e+01
-3 132     1.567900e+02 -1.824500e+02
-4 132     -2.348600e+02 -5.248500e+02
-6 132     9.050000e+01 1.517500e+02
-7 132     4.348999e+01 2.166000e+02
-8 132     2.464200e+02 6.223999e+01
-10 132     6.478003e+01 2.500600e+02
-12 132     1.168800e+02 2.025500e+02
-13 132     4.855200e+02 -1.415600e+02
-15 132     1.496100e+02 2.674000e+02
-0 133     1.866100e+02 5.805400e+02
-1 133     5.980500e+02 5.466600e+02
-5 133     5.882100e+02 -6.121002e+01
-6 133     -2.898800e+02 6.614100e+02
-11 133     3.086500e+02 -1.875400e+02
-13 133     3.352100e+02 2.485800e+02
-0 134     5.440002e+01 5.778800e+02
-1 134     4.545900e+02 5.760800e+02
-2 134     -2.480700e+02 3.471300e+02
-3 134     -3.791100e+02 1.395001e+01
-4 134     5.679999e+01 -3.992900e+02
-5 134     4.597300e+02 -6.746002e+01
-6 134     -4.331600e+02 6.325900e+02
-8 134     -1.247500e+02 2.680100e+02
-9 134     -3.662700e+02 3.687000e+02
-11 134     1.917200e+02 -1.956800e+02
-12 134     -2.596500e+02 6.068700e+02
-13 134     2.315500e+02 2.383200e+02
-14 134     3.646801e+02 -1.546200e+02
-0 135     4.948500e+02 4.219200e+02
-1 135     8.679500e+02 3.056400e+02
-7 135     2.783000e+02 5.618600e+02
-8 135     2.888300e+02 2.299800e+02
-9 135     8.448999e+01 3.488700e+02
-12 135     2.852800e+02 5.484700e+02
-0 136     1.682600e+02 5.214001e+01
-1 136     3.403600e+02 3.121002e+01
-2 136     2.987200e+02 1.127300e+02
-3 136     1.953600e+02 -1.985600e+02
-7 136     7.339001e+01 1.932300e+02
-10 136     9.602002e+01 2.196200e+02
-12 136     1.550000e+02 1.796100e+02
-13 136     5.131700e+02 -1.630100e+02
-0 137     5.222500e+02 3.573300e+02
-1 137     8.762100e+02 2.289500e+02
-2 137     3.168300e+02 2.542700e+02
-3 137     1.758000e+02 -7.090002e+01
-6 137     2.260400e+02 4.950800e+02
-7 137     3.148101e+02 5.036300e+02
-9 137     1.268500e+02 3.063100e+02
-10 137     4.845100e+02 6.198600e+02
-12 137     3.328600e+02 4.885400e+02
-0 138     -9.960022e+00 -1.144000e+01
-1 138     1.493199e+02 2.047998e+01
-2 138     1.350800e+02 3.349976e+00
-3 138     4.765997e+01 -3.071800e+02
-4 138     -2.793100e+02 -4.034400e+02
-6 138     -4.640002e+01 -1.309998e+00
-7 138     -9.453003e+01 9.913000e+01
-8 138     1.402200e+02 -4.420999e+01
-10 138     -1.040600e+02 1.275100e+02
-12 138     -3.332001e+01 5.365997e+01
-13 138     3.629500e+02 -2.332800e+02
-0 139     5.826500e+02 1.211600e+02
-1 139     8.492800e+02 -3.703998e+01
-2 139     4.884399e+02 9.165997e+01
-3 139     3.528600e+02 -2.210500e+02
-6 139     4.012000e+02 2.637400e+02
-7 139     4.175100e+02 2.932000e+02
-8 139     4.601400e+02 4.757999e+01
-9 139     2.795601e+02 1.753400e+02
-10 139     5.731801e+02 3.442700e+02
-12 139     4.870500e+02 2.732600e+02
-15 139     7.685699e+02 3.852300e+02
-0 140     3.710400e+02 5.120000e+02
-1 140     7.878400e+02 4.277700e+02
-2 140     3.257001e+01 2.777300e+02
-5 140     7.754800e+02 -1.263200e+02
-6 140     -8.391000e+01 6.117100e+02
-8 140     1.086300e+02 2.186100e+02
-9 140     -1.250300e+02 3.164000e+02
-11 140     4.834301e+02 -2.357800e+02
-12 140     7.819000e+01 5.725000e+02
-14 140     6.747400e+02 -2.056700e+02
-0 141     -5.090002e+01 4.513100e+02
-1 141     3.094900e+02 4.734500e+02
-2 141     -3.256200e+02 2.118900e+02
-3 141     -4.545500e+02 -1.188700e+02
-0 142     -4.115997e+01 1.206700e+02
-1 142     1.668500e+02 1.553900e+02
-2 142     1.952002e+01 9.678003e+01
-3 142     -7.147998e+01 -2.211200e+02
-4 142     -1.892900e+02 -3.756800e+02
-5 142     5.516801e+02 -5.381600e+02
-6 142     -1.621100e+02 1.279000e+02
-7 142     -1.557800e+02 2.196800e+02
-8 142     5.290002e+01 3.854001e+01
-9 142     -9.851001e+01 1.652400e+02
-10 142     -1.542200e+02 2.768500e+02
-12 142     -1.287000e+02 1.822200e+02
-13 142     3.051000e+02 -1.279500e+02
-15 142     -1.046100e+02 2.957100e+02
-0 143     2.126899e+02 4.965500e+02
-1 143     6.037800e+02 4.519600e+02
-2 143     -9.909998e+01 2.584600e+02
-3 143     -2.381100e+02 -7.434998e+01
-5 143     6.156200e+02 -1.511100e+02
-6 143     -2.451800e+02 5.581600e+02
-8 143     -1.659973e+00 2.000200e+02
-9 143     -2.354800e+02 2.950100e+02
-12 143     -7.872998e+01 5.340800e+02
-0 144     1.986400e+02 5.757000e+02
-1 144     6.106300e+02 5.389300e+02
-3 144     -2.585400e+02 1.010999e+01
-4 144     4.798999e+01 -4.916600e+02
-5 144     6.002700e+02 -6.533002e+01
-6 144     -2.759000e+02 6.579300e+02
-8 144     -1.950000e+01 2.687400e+02
-9 144     -2.569300e+02 3.700300e+02
-11 144     3.199600e+02 -1.908200e+02
-14 144     5.021100e+02 -1.502400e+02
-0 145     -2.119995e+00 -2.244000e+01
-1 145     1.531000e+02 7.520020e+00
-4 145     -2.866300e+02 -4.095500e+02
-6 145     -3.197998e+01 -9.650024e+00
-7 145     -8.403998e+01 9.054999e+01
-8 145     1.519800e+02 -4.875000e+01
-12 145     -2.002002e+01 4.591998e+01
-15 145     -3.453998e+01 1.073000e+02
-0 146     3.234998e+01 4.699707e-01
-1 146     1.913600e+02 2.010999e+01
-2 146     1.834800e+02 3.394000e+01
-3 146     9.253998e+01 -2.761600e+02
-4 146     -2.757200e+02 -4.385300e+02
-6 146     3.820007e+00 3.017999e+01
-7 146     -5.215997e+01 1.195300e+02
-8 146     1.798900e+02 -1.932999e+01
-13 146     4.027100e+02 -2.182200e+02
-15 146     8.530029e+00 1.421400e+02
-0 147     8.640002e+01 -3.359003e+01
-1 147     2.319900e+02 -2.896002e+01
-3 147     1.625800e+02 -2.893200e+02
-4 147     -3.070700e+02 -4.817500e+02
-6 147     7.817999e+01 1.485999e+01
-7 147     8.789978e+00 9.592001e+01
-9 147     1.048700e+02 1.097700e+02
-10 147     9.309998e+00 1.140300e+02
-12 147     9.184998e+01 6.613000e+01
-13 147     4.560699e+02 -2.421000e+02
-15 147     8.595001e+01 1.035000e+02
-0 148     4.340002e+01 1.379999e+01
-1 148     2.059100e+02 3.004999e+01
-2 148     1.903600e+02 5.101001e+01
-6 148     1.148999e+01 4.885999e+01
-7 148     -4.351001e+01 1.346200e+02
-12 148     2.672998e+01 1.028700e+02
-15 148     2.147998e+01 1.615600e+02
-0 149     2.114500e+02 5.230700e+02
-1 149     6.099900e+02 4.801700e+02
-2 149     -1.042500e+02 2.875300e+02
-6 149     -2.532700e+02 5.935300e+02
-8 149     -5.989990e+00 2.233900e+02
-9 149     -2.410700e+02 3.201700e+02
-11 149     3.359200e+02 -2.350100e+02
-12 149     -8.591998e+01 5.644500e+02
-13 149     3.563101e+02 2.021700e+02
-14 149     5.172800e+02 -2.030300e+02
-0 150     4.179999e+01 4.906900e+02
-1 150     4.184600e+02 4.889500e+02
-7 150     -1.850300e+02 5.626500e+02
-12 150     -2.576700e+02 5.040900e+02
-0 151     3.236500e+02 5.621100e+02
-1 151     7.479500e+02 4.937600e+02
-5 151     7.242300e+02 -7.563000e+01
-6 151     -1.427700e+02 6.644700e+02
-8 151     6.946002e+01 2.593400e+02
-9 151     -1.655300e+02 3.607800e+02
-13 151     4.432200e+02 2.425400e+02
-0 152     1.294800e+02 5.237900e+02
-1 152     5.207500e+02 5.015700e+02
-5 152     5.335500e+02 -1.214400e+02
-6 152     -3.401100e+02 5.786300e+02
-8 152     -6.428998e+01 2.232900e+02
-13 152     2.923500e+02 1.978800e+02
-14 152     4.387900e+02 -2.058500e+02
-0 153     2.565800e+02 5.710400e+02
-1 153     6.743600e+02 5.193900e+02
-2 153     -7.151001e+01 3.385400e+02
-5 153     6.569800e+02 -6.934003e+01
-6 153     -2.146100e+02 6.615100e+02
-8 153     2.165997e+01 2.646400e+02
-9 153     -2.147800e+02 3.660800e+02
-11 153     3.721600e+02 -1.920800e+02
-12 153     -4.853003e+01 6.236700e+02
-13 153     3.899399e+02 2.450600e+02
-0 154     3.088300e+02 5.534000e+02
-1 154     7.281801e+02 4.878900e+02
-2 154     -2.516998e+01 3.207000e+02
-3 154     -1.683300e+02 -1.315997e+01
-5 154     7.095200e+02 -8.552002e+01
-6 154     -1.567200e+02 6.500900e+02
-8 154     5.952002e+01 2.510900e+02
-9 154     -1.752700e+02 3.521800e+02
-11 154     4.213900e+02 -2.037600e+02
-12 154     7.630005e+00 6.107400e+02
-13 154     4.318500e+02 2.339500e+02
-14 154     6.095300e+02 -1.668700e+02
-0 155     2.007200e+02 2.082001e+01
-1 155     3.634800e+02 -9.919983e+00
-7 155     1.105000e+02 1.672700e+02
-10 155     1.368400e+02 1.860100e+02
-12 155     2.018900e+02 1.520900e+02
-15 155     2.353300e+02 1.931500e+02
-0 156     1.544200e+02 1.251001e+01
-1 156     3.130800e+02 -3.929993e+00
-2 156     3.039800e+02 7.734998e+01
-3 156     2.035400e+02 -2.320200e+02
-4 156     -2.841500e+02 -5.380100e+02
-6 156     1.344900e+02 8.403998e+01
-7 156     6.776001e+01 1.524200e+02
-9 156     1.421600e+02 1.602900e+02
-10 156     8.367999e+01 1.715000e+02
-13 156     5.091100e+02 -1.973400e+02
-15 156     1.725699e+02 1.753500e+02
-0 157     3.023300e+02 5.432700e+02
-1 157     7.184200e+02 4.791500e+02
-3 157     -1.720100e+02 -2.153003e+01
-4 157     2.196997e+01 -5.601200e+02
-5 157     7.036500e+02 -9.645001e+01
-6 157     -1.613200e+02 6.364500e+02
-9 157     -1.783100e+02 3.422100e+02
-11 157     4.167800e+02 -2.127900e+02
-12 157     3.080017e+00 5.979000e+02
-13 157     4.275800e+02 2.259100e+02
-0 158     3.971200e+02 5.727600e+02
-1 158     8.384399e+02 4.881200e+02
-5 158     7.981200e+02 -6.120001e+01
-6 158     -6.982001e+01 6.920900e+02
-9 158     -1.166000e+02 3.727700e+02
-11 158     4.993400e+02 -1.810400e+02
-0 159     4.323999e+01 5.559998e+00
-1 159     2.028199e+02 2.188000e+01
-2 159     1.937300e+02 4.312000e+01
-3 159     1.016600e+02 -2.669800e+02
-6 159     1.495001e+01 3.973999e+01
-7 159     -4.194000e+01 1.266500e+02
-8 159     1.888200e+02 -1.217001e+01
-10 159     -4.396997e+01 1.516300e+02
-12 159     2.898999e+01 9.321002e+01
-13 159     4.119800e+02 -2.128100e+02
-0 160     1.360700e+02 2.083002e+01
-1 160     2.975601e+02 9.580017e+00
-2 160     2.834399e+02 8.182001e+01
-3 160     1.841600e+02 -2.282500e+02
-4 160     -2.750500e+02 -5.220900e+02
-6 160     1.119400e+02 8.796002e+01
-7 160     4.856000e+01 1.575800e+02
-8 160     2.641100e+02 1.995001e+01
-10 160     6.184998e+01 1.792600e+02
-12 160     1.321700e+02 1.386300e+02
-13 160     4.918900e+02 -1.916100e+02
-15 160     1.465900e+02 1.842200e+02
-0 161     4.271700e+02 5.797700e+02
-1 161     8.769100e+02 4.885300e+02
-2 161     6.846997e+01 3.497200e+02
-3 161     -8.007001e+01 1.446002e+01
-6 161     -4.034998e+01 7.059900e+02
-8 161     1.376400e+02 2.762600e+02
-9 161     -9.678998e+01 3.798900e+02
-11 161     5.256899e+02 -1.738100e+02
-13 161     5.248300e+02 2.644100e+02
-14 161     7.225400e+02 -1.330100e+02
-0 162     4.886899e+02 3.777600e+02
-1 162     8.466700e+02 2.592600e+02
-2 162     2.730699e+02 2.592700e+02
-7 162     2.782400e+02 5.174200e+02
-12 162     2.880300e+02 4.982800e+02
-13 162     6.460601e+02 1.095900e+02
-0 163     2.382100e+02 4.838600e+02
-1 163     6.289500e+02 4.318200e+02
-4 163     -1.085999e+01 -5.121600e+02
-5 163     6.414200e+02 -1.609900e+02
-6 163     -2.165600e+02 5.499200e+02
-7 163     4.140015e+00 5.757800e+02
-9 163     -2.153200e+02 2.839400e+02
-11 163     3.647400e+02 -2.680300e+02
-12 163     -5.064001e+01 5.230300e+02
-14 163     5.456200e+02 -2.421300e+02
-0 164     2.618700e+02 4.796600e+02
-1 164     6.534500e+02 4.211900e+02
-4 164     -1.488000e+01 -5.278900e+02
-5 164     6.649000e+02 -1.647800e+02
-6 164     -1.915200e+02 5.489100e+02
-7 164     2.615002e+01 5.735600e+02
-8 164     3.454999e+01 1.869400e+02
-9 164     -1.979600e+02 2.806900e+02
-11 164     3.863400e+02 -2.706900e+02
-12 164     -2.628998e+01 5.209800e+02
-14 164     5.692800e+02 -2.456300e+02
-0 165     2.440002e+01 -3.365002e+01
-1 165     1.735300e+02 -1.089001e+01
-2 165     1.865700e+02 -3.869995e+00
-3 165     9.759003e+01 -3.123500e+02
-6 165     6.099976e+00 -1.170001e+01
-8 165     1.818000e+02 -5.117999e+01
-9 165     4.821002e+01 8.895001e+01
-10 165     -6.103998e+01 1.041500e+02
-12 165     1.795001e+01 4.059998e+01
-13 165     3.990000e+02 -2.487000e+02
-15 165     2.979980e+00 9.441000e+01
-0 166     3.053500e+02 5.600000e+02
-1 166     7.264399e+02 4.959200e+02
-3 166     -1.717100e+02 -6.830017e+00
-5 166     7.060200e+02 -7.821002e+01
-6 166     -1.615100e+02 6.584600e+02
-9 166     -1.785500e+02 3.580600e+02
-11 166     4.178400e+02 -1.984300e+02
-14 166     6.057800e+02 -1.597700e+02
-0 167     3.522800e+02 5.659100e+02
-1 167     7.826300e+02 4.910000e+02
-2 167     9.570007e+00 3.353500e+02
-3 167     -1.355400e+02 2.199707e-01
-5 167     7.532800e+02 -7.044000e+01
-6 167     -1.138200e+02 6.748700e+02
-8 167     8.888000e+01 2.633800e+02
-9 167     -1.461600e+02 3.651000e+02
-11 167     4.592100e+02 -1.904500e+02
-13 167     4.659200e+02 2.477200e+02
-14 167     6.510400e+02 -1.512900e+02
-0 168     4.340002e+01 1.379999e+01
-1 168     2.059100e+02 3.004999e+01
-9 168     4.921997e+01 1.348400e+02
-12 168     2.672998e+01 1.028700e+02
-0 169     5.065200e+02 3.321400e+02
-1 169     8.508600e+02 2.058500e+02
-2 169     3.046100e+02 2.228900e+02
-3 169     1.643800e+02 -1.018500e+02
-7 169     3.024301e+02 4.762100e+02
-9 169     1.177900e+02 2.793400e+02
-10 169     4.668700e+02 5.880300e+02
-13 169     6.680500e+02 7.373999e+01
-0 170     -1.005400e+02 4.959800e+02
-1 170     2.718600e+02 5.301500e+02
-7 170     -3.251000e+02 5.534800e+02
-8 170     -2.374100e+02 1.926400e+02
-11 170     5.808002e+01 -2.696400e+02
-0 171     9.150000e+01 5.075800e+02
-1 171     4.756400e+02 4.942300e+02
-2 171     -2.083000e+02 2.706500e+02
-3 171     -3.425700e+02 -6.331000e+01
-4 171     1.334998e+01 -4.170200e+02
-5 171     4.947100e+02 -1.397700e+02
-6 171     -3.790000e+02 5.501600e+02
-11 171     2.288101e+02 -2.535500e+02
-12 171     -2.078900e+02 5.303400e+02
-14 171     4.015400e+02 -2.242900e+02
-0 172     1.413101e+02 -5.045001e+01
-1 172     2.803101e+02 -6.185999e+01
-2 172     3.165400e+02 1.331000e+01
-3 172     2.192800e+02 -2.925400e+02
-4 172     -3.283800e+02 -5.257200e+02
-6 172     1.446200e+02 1.069000e+01
-7 172     6.608002e+01 8.850000e+01
-8 172     2.899400e+02 -3.823999e+01
-10 172     7.576001e+01 9.716998e+01
-12 172     1.617500e+02 5.902002e+01
-13 172     5.059700e+02 -2.519600e+02
-15 172     1.638000e+02 8.795999e+01
-0 173     -1.096700e+02 5.425200e+02
-1 173     2.738500e+02 5.792200e+02
-2 173     -3.969000e+02 3.091000e+02
-5 173     2.997100e+02 -1.063200e+02
-12 173     -4.312800e+02 5.443000e+02
-0 174     5.653003e+01 5.683900e+02
-1 174     4.543101e+02 5.660500e+02
-3 174     -3.767500e+02 3.419983e+00
-5 174     4.613400e+02 -7.701001e+01
-6 174     -4.291100e+02 6.222700e+02
-8 174     -1.224700e+02 2.603800e+02
-9 174     -3.632200e+02 3.593700e+02
-11 174     1.940000e+02 -2.030700e+02
-12 174     -2.559200e+02 5.967100e+02
-13 174     2.333900e+02 2.304700e+02
-14 174     3.668900e+02 -1.643100e+02
-0 175     -8.462000e+01 4.734700e+02
-1 175     2.827700e+02 5.036000e+02
-4 175     5.109985e+00 -3.073400e+02
-5 175     3.204600e+02 -1.785400e+02
-6 175     -5.701700e+02 4.689500e+02
-8 175     -2.234600e+02 1.716300e+02
-12 175     -3.921700e+02 4.653800e+02
-0 176     -1.002400e+02 5.035900e+02
-1 176     2.742600e+02 5.378600e+02
-2 176     -3.855200e+02 2.646100e+02
-3 176     -5.137000e+02 -6.644000e+01
-5 176     3.067100e+02 -1.460000e+02
-7 176     -3.259700e+02 5.618800e+02
-12 176     -4.141400e+02 4.998800e+02
-0 177     5.590100e+02 1.636700e+02
-1 177     8.379100e+02 1.507001e+01
-2 177     4.506000e+02 1.236000e+02
-6 177     3.605900e+02 3.030100e+02
-7 177     3.883101e+02 3.299500e+02
-8 177     4.295300e+02 7.464999e+01
-9 177     2.470000e+02 2.008100e+02
-10 177     5.418400e+02 3.917500e+02
-12 177     4.481899e+02 3.120300e+02
-15 177     7.307600e+02 4.412100e+02
-0 178     4.954600e+02 3.639700e+02
-1 178     8.494700e+02 2.431400e+02
-2 178     2.844800e+02 2.502800e+02
-3 178     1.439700e+02 -7.614001e+01
-7 178     2.869200e+02 5.055400e+02
-9 178     9.890002e+01 3.015000e+02
-11 178     6.080601e+02 -3.642600e+02
-12 178     2.995200e+02 4.866500e+02
-0 179     2.707001e+01 9.822000e+01
-1 179     2.195601e+02 1.164500e+02
-3 179     3.039001e+01 -2.009100e+02
-4 179     -2.096000e+02 -4.313700e+02
-5 179     6.505601e+02 -5.589000e+02
-6 179     -5.265002e+01 1.323600e+02
-8 179     1.367200e+02 5.010001e+01
-10 179     -7.258002e+01 2.582900e+02
-12 179     -2.834003e+01 1.865800e+02
-13 179     3.787900e+02 -1.373400e+02
-15 179     -1.064001e+01 2.747300e+02
-0 180     2.170001e+01 4.681500e+02
-1 180     3.919700e+02 4.705100e+02
-2 180     -2.681800e+02 2.240900e+02
-3 180     -4.007300e+02 -1.069400e+02
-4 180     -3.909973e+00 -3.706300e+02
-5 180     4.254100e+02 -1.816300e+02
-6 180     -4.486000e+02 4.856800e+02
-7 180     -2.018600e+02 5.373200e+02
-8 180     -1.412300e+02 1.702100e+02
-9 180     -3.777200e+02 2.595700e+02
-11 180     1.677100e+02 -2.915000e+02
-12 180     -2.755700e+02 4.752800e+02
-13 180     2.079100e+02 1.444900e+02
-14 180     3.349200e+02 -2.676200e+02
-0 181     8.965002e+01 5.364001e+01
-1 181     2.630699e+02 5.553998e+01
-2 181     2.217900e+02 1.008500e+02
-4 181     -2.463700e+02 -4.845699e+02
-5 181     7.424800e+02 -6.068800e+02
-6 181     4.707001e+01 1.081200e+02
-7 181     -3.690002e+00 1.816200e+02
-8 181     2.141900e+02 3.573001e+01
-10 181     4.809998e+00 2.122400e+02
-13 181     4.462100e+02 -1.684000e+02
-15 181     7.921002e+01 2.226400e+02
-0 182     6.813000e+01 -9.080017e+00
-1 182     2.219900e+02 5.700073e-01
-2 182     2.271300e+02 3.725000e+01
-3 182     1.343600e+02 -2.723600e+02
-4 182     -2.874900e+02 -4.672500e+02
-6 182     4.985999e+01 3.248999e+01
-7 182     -1.384003e+01 1.168300e+02
-8 182     2.161300e+02 -1.817001e+01
-10 182     -1.346997e+01 1.374300e+02
-12 182     6.396997e+01 8.482001e+01
-13 182     4.368500e+02 -2.229700e+02
-15 182     5.815002e+01 1.341800e+02
-0 183     -5.054999e+01 4.556200e+02
-1 183     3.113101e+02 4.775200e+02
-2 183     -3.267800e+02 2.161200e+02
-3 183     -4.558200e+02 -1.148800e+02
-5 183     3.585100e+02 -1.965400e+02
-6 183     -5.189700e+02 4.554200e+02
-7 183     -2.690500e+02 5.183200e+02
-8 183     -1.902300e+02 1.619000e+02
-11 183     1.025300e+02 -3.035500e+02
-12 183     -3.473500e+02 4.528100e+02
-13 183     1.549800e+02 1.301300e+02
-14 183     2.696899e+02 -2.829300e+02
-0 184     1.710900e+02 5.292500e+02
-1 184     5.675100e+02 4.967500e+02
-2 184     -1.398000e+02 2.940100e+02
-5 184     5.732900e+02 -1.150000e+02
-6 184     -2.969600e+02 5.931800e+02
-8 184     -3.559003e+01 2.278700e+02
-9 184     -2.712600e+02 3.251100e+02
-12 184     -1.283900e+02 5.660200e+02
-14 184     4.780400e+02 -1.987100e+02
-0 185     1.282000e+02 4.551100e+02
-1 185     5.009800e+02 4.307300e+02
-2 185     -1.695300e+02 2.104000e+02
-3 185     -3.062100e+02 -1.216600e+02
-4 185     -2.063000e+01 -4.365200e+02
-5 185     5.302600e+02 -1.953200e+02
-7 185     -9.759003e+01 5.356200e+02
-8 185     -6.012000e+01 1.613800e+02
-12 185     -1.605100e+02 4.739800e+02
-13 185     2.923300e+02 1.392100e+02
-14 185     4.391500e+02 -2.777100e+02
-0 186     -6.071997e+01 3.934998e+01
-1 186     1.210500e+02 8.322000e+01
-2 186     4.058002e+01 2.217999e+01
-3 186     -4.634003e+01 -2.916800e+02
-4 186     -2.399400e+02 -3.622400e+02
-6 186     -1.415700e+02 3.189001e+01
-7 186     -1.590200e+02 1.378000e+02
-8 186     6.619000e+01 -2.513000e+01
-9 186     -7.663000e+01 1.046200e+02
-12 186     -1.198200e+02 8.801001e+01
-0 187     1.971997e+01 9.695999e+01
-1 187     2.121700e+02 1.171500e+02
-2 187     1.175200e+02 1.122100e+02
-3 187     2.360999e+01 -2.037700e+02
-4 187     -2.095400e+02 -4.261700e+02
-5 187     6.421600e+02 -5.604500e+02
-6 187     -6.015997e+01 1.289600e+02
-7 187     -8.534003e+01 2.110400e+02
-10 187     -8.146002e+01 2.565900e+02
-12 187     -3.608002e+01 1.833200e+02
-13 187     3.715601e+02 -1.388400e+02
-15 187     -1.990997e+01 2.715300e+02
-0 188     -1.100600e+02 4.422800e+02
-1 188     2.488101e+02 4.786800e+02
-2 188     -3.909800e+02 1.910500e+02
-3 188     -5.225100e+02 -1.388500e+02
-5 188     2.934600e+02 -2.121600e+02
-7 188     -3.278700e+02 4.964900e+02
-11 188     4.962000e+01 -3.166000e+02
-12 188     -4.147700e+02 4.234400e+02
-14 188     2.064100e+02 -2.994700e+02
-0 189     -1.078000e+02 5.097500e+02
-1 189     2.678101e+02 5.456900e+02
-3 189     -5.205600e+02 -5.933002e+01
-5 189     2.997200e+02 -1.402300e+02
-7 189     -3.341000e+02 5.671100e+02
-8 189     -2.438100e+02 2.049600e+02
-0 190     -2.562000e+01 4.765700e+02
-1 190     3.445400e+02 4.917500e+02
-2 190     -3.136300e+02 2.323700e+02
-5 190     3.785000e+02 -1.747400e+02
-6 190     -5.035800e+02 4.852900e+02
-7 190     -2.489900e+02 5.408600e+02
-9 190     -4.171800e+02 2.654200e+02
-12 190     -3.279500e+02 4.766900e+02
-13 190     1.704100e+02 1.489100e+02
-14 190     2.888400e+02 -2.608000e+02
-0 191     -2.426001e+01 5.067999e+01
-1 191     1.561500e+02 8.445999e+01
-2 191     8.709003e+01 5.545001e+01
-3 191     -9.799805e-01 -2.589300e+02
-7 191     -1.214200e+02 1.577400e+02
-8 191     1.041000e+02 3.999939e-01
-10 191     -1.270600e+02 1.976700e+02
-12 191     -7.422998e+01 1.180200e+02
-13 191     3.395800e+02 -1.822700e+02
-15 191     -7.392999e+01 2.023800e+02
-0 192     2.979900e+02 5.761000e+02
-1 192     7.226899e+02 5.149500e+02
-2 192     -3.685999e+01 3.450000e+02
-0 193     8.165002e+01 -3.200073e-01
-1 193     2.376400e+02 5.229980e+00
-0 194     -3.080017e+00 4.811200e+02
-1 194     3.692000e+02 4.908300e+02
-2 194     -2.926300e+02 2.383300e+02
-3 194     -4.242400e+02 -9.319000e+01
-4 194     4.030029e+00 -3.564300e+02
-5 194     4.008300e+02 -1.695800e+02
-6 194     -4.791100e+02 4.961400e+02
-7 194     -2.273100e+02 5.482800e+02
-9 194     -3.998200e+02 2.710400e+02
-11 194     1.449600e+02 -2.803700e+02
-12 194     -3.041100e+02 4.850400e+02
-14 194     3.106801e+02 -2.551900e+02
-0 195     5.119995e+00 8.357001e+01
-1 195     1.939700e+02 1.072400e+02
-3 195     1.235999e+01 -2.208300e+02
-4 195     -2.162700e+02 -4.135000e+02
-6 195     -7.378003e+01 1.099300e+02
-12 195     -5.115997e+01 1.648900e+02
-15 195     -3.875000e+01 2.519300e+02
-0 196     9.795001e+01 5.679400e+02
-1 196     4.980699e+02 5.550300e+02
-2 196     -2.083500e+02 3.360000e+02
-3 196     -3.410400e+02 2.479980e+00
-4 196     4.865002e+01 -4.252700e+02
-5 196     5.013800e+02 -7.710999e+01
-6 196     -3.836600e+02 6.279600e+02
-8 196     -9.176001e+01 2.602100e+02
-9 196     -3.315000e+02 3.598700e+02
-11 196     2.302200e+02 -2.023400e+02
-12 196     -2.120900e+02 6.008300e+02
-13 196     2.652600e+02 2.319000e+02
-14 196     4.056801e+02 -1.635600e+02
-0 197     7.440997e+01 -2.972998e+01
-1 197     2.216400e+02 -2.159998e+01
-2 197     2.422900e+02 1.833002e+01
-3 197     1.495500e+02 -2.896000e+02
-4 197     -3.031600e+02 -4.726000e+02
-7 197     -3.770020e+00 9.754001e+01
-8 197     2.275100e+02 -3.357999e+01
-9 197     9.345001e+01 1.094900e+02
-10 197     -4.349976e+00 1.143800e+02
-12 197     7.798999e+01 6.290997e+01
-13 197     4.451700e+02 -2.400500e+02
-15 197     6.932001e+01 1.069300e+02
-0 198     -3.097998e+01 5.064700e+02
-1 198     3.464200e+02 5.235100e+02
-7 198     -2.580700e+02 5.715600e+02
-0 199     5.884301e+02 2.051100e+02
-1 199     8.823900e+02 5.046997e+01
-2 199     4.731300e+02 1.798200e+02
-3 199     3.342700e+02 -1.370200e+02
-6 199     3.870200e+02 3.605100e+02
-7 199     4.123199e+02 3.758500e+02
-8 199     4.487400e+02 1.195600e+02
-9 199     2.644800e+02 2.490500e+02
-10 199     5.736200e+02 4.439100e+02
-12 199     4.727800e+02 3.693500e+02
-15 199     7.676000e+02 5.043600e+02
-0 200     2.162200e+02 -1.194000e+01
-1 200     3.691200e+02 -4.721002e+01
-2 200     3.660601e+02 6.070001e+01
-3 200     2.613300e+02 -2.467600e+02
-7 200     1.311200e+02 1.375600e+02
-12 200     2.291300e+02 1.192600e+02
-13 200     5.627900e+02 -2.141400e+02
-15 200     2.609900e+02 1.505300e+02
-0 201     4.232001e+01 5.959998e+01
-1 201     2.197500e+02 7.495001e+01
-2 201     1.671400e+02 9.160999e+01
-3 201     7.359998e+01 -2.217400e+02
-6 201     -1.059003e+01 9.802002e+01
-7 201     -5.329999e+01 1.795000e+02
-10 201     -5.103998e+01 2.149400e+02
-12 201     8.070007e+00 1.525000e+02
-15 201     1.454999e+01 2.242300e+02
-0 202     5.592200e+02 2.350100e+02
-1 202     8.609399e+02 9.085999e+01
-3 202     2.938900e+02 -1.239100e+02
-7 202     3.790200e+02 3.990600e+02
-15 202     7.229600e+02 5.422100e+02
-0 203     2.084301e+02 5.401001e+01
-1 203     3.830800e+02 2.078003e+01
-2 203     3.284200e+02 1.169700e+02
-6 203     1.670100e+02 1.411300e+02
-8 203     3.046200e+02 5.012000e+01
-10 203     1.424200e+02 2.253100e+02
-12 203     1.968900e+02 1.887200e+02
-15 203     2.421200e+02 2.399700e+02
-0 204     5.598000e+02 1.577700e+02
-1 204     8.368101e+02 8.580017e+00
-7 204     3.901000e+02 3.244500e+02
-10 204     5.436700e+02 3.850400e+02
-12 204     4.510601e+02 3.059500e+02
-15 204     7.324301e+02 4.331700e+02
-0 205     5.809998e+01 -2.262000e+01
-1 205     2.093500e+02 -9.109985e+00
-3 205     1.304200e+02 -2.873300e+02
-4 205     -2.956700e+02 -4.594100e+02
-6 205     4.302002e+01 1.370001e+01
-7 205     -2.092999e+01 1.026700e+02
-8 205     2.109700e+02 -3.204999e+01
-12 205     5.623999e+01 6.640997e+01
-13 205     4.303700e+02 -2.343000e+02
-0 206     1.143900e+02 5.123999e+01
-1 206     2.860300e+02 4.620001e+01
-2 206     2.496600e+02 1.047100e+02
-3 206     1.504700e+02 -2.079400e+02
-4 206     -2.512900e+02 -5.048300e+02
-8 206     2.369300e+02 3.884000e+01
-9 206     9.448999e+01 1.810900e+02
-10 206     3.296002e+01 2.122500e+02
-12 206     9.726001e+01 1.651200e+02
-13 206     4.686400e+02 -1.679300e+02
-0 207     1.698999e+01 5.152700e+02
-1 207     3.979600e+02 5.207000e+02
-2 207     -2.764200e+02 2.778600e+02
-3 207     -4.079200e+02 -5.387000e+01
-4 207     2.245001e+01 -3.713800e+02
-5 207     4.217200e+02 -1.331200e+02
-6 207     -4.626000e+02 5.445600e+02
-9 207     -3.874500e+02 3.064200e+02
-11 207     1.610200e+02 -2.505500e+02
-12 207     -2.888500e+02 5.289300e+02
-13 207     2.033300e+02 1.839900e+02
-14 207     3.298101e+02 -2.191100e+02
-0 208     2.173999e+01 4.331400e+02
-1 208     3.828000e+02 4.357800e+02
-2 208     -2.655200e+02 1.830300e+02
-3 208     -3.988600e+02 -1.479400e+02
-4 208     -2.592999e+01 -3.674700e+02
-5 208     4.241400e+02 -2.203800e+02
-6 208     -4.422600e+02 4.391700e+02
-7 208     -1.973300e+02 5.017300e+02
-8 208     -1.385300e+02 1.378400e+02
-12 208     -2.690300e+02 4.329400e+02
-13 208     2.079301e+02 1.141100e+02
-14 208     3.347200e+02 -3.050500e+02
-0 209     4.454999e+01 5.764800e+02
-1 209     4.435601e+02 5.770000e+02
-2 209     -2.568100e+02 3.459400e+02
-3 209     -3.887500e+02 1.231000e+01
-4 209     5.653003e+01 -3.934700e+02
-5 209     4.502600e+02 -6.914001e+01
-6 209     -4.434800e+02 6.296100e+02
-8 209     -1.314800e+02 2.672900e+02
-12 209     -2.698800e+02 6.042700e+02
-13 209     2.239399e+02 2.368000e+02
-14 209     3.553500e+02 -1.563800e+02
-0 210     1.090000e+02 4.384998e+01
-1 210     2.784700e+02 4.057001e+01
-2 210     2.471400e+02 9.656000e+01
-6 210     7.388000e+01 1.034300e+02
-7 210     1.719000e+01 1.758800e+02
-8 210     2.345500e+02 3.201001e+01
-10 210     2.850000e+01 2.031600e+02
-12 210     9.396002e+01 1.554200e+02
-13 210     4.649700e+02 -1.746300e+02
-15 210     1.070300e+02 2.119700e+02
-0 211     5.716998e+01 5.062300e+02
-1 211     4.386500e+02 5.018300e+02
-2 211     -2.388700e+02 2.682200e+02
-3 211     -3.713800e+02 -6.481000e+01
-5 211     4.611700e+02 -1.412300e+02
-7 211     -1.720600e+02 5.804100e+02
-8 211     -1.173100e+02 2.056300e+02
-9 211     -3.543400e+02 2.992700e+02
-12 211     -2.438400e+02 5.249300e+02
-13 211     2.353400e+02 1.785000e+02
-14 211     3.687700e+02 -2.270700e+02
-0 212     -2.009998e+01 5.275900e+02
-1 212     3.629000e+02 5.424400e+02
-2 212     -3.120300e+02 2.914400e+02
-5 212     3.857200e+02 -1.208000e+02
-6 212     -5.065600e+02 5.533600e+02
-12 212     -3.308300e+02 5.384800e+02
-0 213     4.360999e+01 5.318700e+02
-1 213     4.311700e+02 5.313200e+02
-2 213     -2.544000e+02 2.976100e+02
-4 213     3.038000e+01 -3.889100e+02
-5 213     4.490100e+02 -1.122500e+02
-8 213     -1.292700e+02 2.333000e+02
-11 213     1.840300e+02 -2.346500e+02
-12 213     -2.630300e+02 5.547900e+02
-0 214     5.889001e+01 1.250000e+00
-1 214     2.164200e+02 1.319000e+01
-2 214     2.133500e+02 4.444000e+01
-3 214     1.205100e+02 -2.656100e+02
-4 214     -2.789900e+02 -4.601300e+02
-7 214     -2.498999e+01 1.254100e+02
-9 214     6.764001e+01 1.302000e+02
-10 214     -2.515002e+01 1.485200e+02
-13 214     4.270300e+02 -2.150100e+02
-15 214     4.432001e+01 1.468300e+02
-0 215     4.454999e+01 5.764800e+02
-1 215     4.435601e+02 5.770000e+02
-2 215     -2.568100e+02 3.459400e+02
-4 215     5.653003e+01 -3.934700e+02
-5 215     4.502600e+02 -6.914001e+01
-6 215     -4.434800e+02 6.296100e+02
-8 215     -1.314800e+02 2.672900e+02
-11 215     1.830800e+02 -1.971100e+02
-12 215     -2.698800e+02 6.042700e+02
-13 215     2.239399e+02 2.368000e+02
-14 215     3.553500e+02 -1.563800e+02
-0 216     3.796997e+01 -2.208002e+01
-1 216     1.894100e+02 -3.200012e+00
-2 216     1.986000e+02 1.359998e+01
-3 216     1.079700e+02 -2.953800e+02
-7 216     -4.265002e+01 9.839999e+01
-8 216     1.918400e+02 -3.703000e+01
-10 216     -4.703003e+01 1.193500e+02
-12 216     3.219000e+01 5.970001e+01
-13 216     4.107300e+02 -2.370300e+02
-15 216     1.921997e+01 1.121900e+02
-0 217     1.213500e+02 5.070001e+01
-1 217     2.924399e+02 4.426001e+01
-2 217     2.564700e+02 1.050700e+02
-3 217     1.570500e+02 -2.072400e+02
-4 217     -2.520800e+02 -5.089700e+02
-6 217     8.484998e+01 1.144600e+02
-8 217     2.430000e+02 3.904001e+01
-10 217     4.277002e+01 2.120700e+02
-12 217     1.063300e+02 1.661100e+02
-15 217     1.225400e+02 2.231700e+02
-0 218     4.856000e+01 5.450600e+02
-1 218     4.397200e+02 5.438400e+02
-2 218     -2.502400e+02 3.115400e+02
-5 218     4.533000e+02 -1.017200e+02
-6 218     -4.329700e+02 5.894200e+02
-8 218     -1.262900e+02 2.390100e+02
-9 218     -3.663900e+02 3.366000e+02
-12 218     -2.599400e+02 5.683900e+02
-13 218     2.277800e+02 2.107200e+02
-14 218     3.596300e+02 -1.876600e+02
-0 219     3.036899e+02 5.745200e+02
-1 219     7.287000e+02 5.121500e+02
-9 219     -1.811800e+02 3.709500e+02
-0 220     5.587000e+01 8.747000e+01
-1 220     2.421100e+02 9.870999e+01
-2 220     1.714800e+02 1.177200e+02
-3 220     7.465997e+01 -1.965700e+02
-4 220     -2.195900e+02 -4.568900e+02
-6 220     -6.239990e+00 1.318900e+02
-8 220     1.731200e+02 5.148999e+01
-10 220     -3.971002e+01 2.495200e+02
-12 220     1.647998e+01 1.852000e+02
-13 220     4.096899e+02 -1.432600e+02
-15 220     2.978003e+01 2.642500e+02
-0 221     8.166998e+01 9.720999e+01
-1 221     2.711200e+02 1.006900e+02
-2 221     1.860000e+02 1.324000e+02
-4 221     -2.166500e+02 -4.754600e+02
-5 221     7.192600e+02 -5.593199e+02
-6 221     1.291998e+01 1.515200e+02
-7 221     -2.166998e+01 2.220400e+02
-9 221     4.196002e+01 2.009100e+02
-12 221     3.763000e+01 2.043900e+02
-13 221     4.282800e+02 -1.318200e+02
-15 221     6.357001e+01 2.811800e+02
-0 222     9.183002e+01 -1.650024e+00
-1 222     2.468800e+02 7.899780e-01
-2 222     2.495601e+02 5.106000e+01
-3 222     1.541300e+02 -2.582100e+02
-6 222     7.392999e+01 4.877002e+01
-7 222     8.640015e+00 1.283900e+02
-10 222     1.322998e+01 1.483100e+02
-12 222     8.976001e+01 1.006000e+02
-15 222     8.946002e+01 1.475000e+02
-0 223     5.115699e+02 3.734200e+02
-1 223     8.698900e+02 2.490700e+02
-2 223     3.006700e+02 2.653500e+02
-3 223     1.595300e+02 -6.069000e+01
-6 223     2.087600e+02 5.106200e+02
-7 223     3.019100e+02 5.173200e+02
-8 223     3.135600e+02 1.971300e+02
-9 223     1.128200e+02 3.162600e+02
-11 223     6.219100e+02 -3.535300e+02
-13 223     6.696600e+02 1.092800e+02
-0 224     -4.229980e+00 9.957001e+01
-1 224     1.914200e+02 1.260800e+02
-3 224     -6.010010e+00 -2.129500e+02
-4 224     -2.053700e+02 -4.067000e+02
-6 224     -9.248001e+01 1.215700e+02
-7 224     -1.106000e+02 2.084600e+02
-12 224     -6.831000e+01 1.769500e+02
-13 224     3.487200e+02 -1.397800e+02
-15 224     -5.290997e+01 2.722100e+02
-0 225     5.784700e+02 1.036900e+02
-1 225     8.393199e+02 -5.426001e+01
-2 225     4.890601e+02 7.191998e+01
-3 225     3.543700e+02 -2.401000e+02
-6 225     4.009000e+02 2.427100e+02
-7 225     4.159500e+02 2.756800e+02
-8 225     4.597500e+02 3.113000e+01
-9 225     2.803500e+02 1.583800e+02
-10 225     5.696700e+02 3.234100e+02
-12 225     4.865500e+02 2.525900e+02
-15 225     7.651300e+02 3.600600e+02
-0 226     2.046300e+02 4.853800e+02
-1 226     5.915900e+02 4.425100e+02
-2 226     -1.063800e+02 2.466800e+02
-3 226     -2.445500e+02 -8.667999e+01
-4 226     -7.580017e+00 -4.894200e+02
-5 226     6.076600e+02 -1.609000e+02
-6 226     -2.533300e+02 5.456900e+02
-7 226     -2.826001e+01 5.734500e+02
-8 226     -6.830017e+00 1.902600e+02
-9 226     -2.409900e+02 2.845600e+02
-11 226     3.327400e+02 -2.682100e+02
-12 226     -8.658002e+01 5.217800e+02
-14 226     5.119200e+02 -2.397600e+02
-0 227     9.265002e+01 5.151800e+02
-1 227     4.788600e+02 5.018800e+02
-3 227     -3.400000e+02 -5.263000e+01
-5 227     4.982000e+02 -1.291700e+02
-6 227     -3.768500e+02 5.634500e+02
-9 227     -3.269600e+02 3.109400e+02
-13 227     2.626700e+02 1.875900e+02
-14 227     4.025601e+02 -2.168600e+02
-0 228     -8.965997e+01 4.681400e+02
-1 228     2.761801e+02 4.995300e+02
-2 228     -3.738200e+02 2.223600e+02
-6 228     -5.757300e+02 4.610700e+02
-7 228     -3.111800e+02 5.257000e+02
-8 228     -2.274200e+02 1.668300e+02
-11 228     6.779999e+01 -2.934700e+02
-0 229     5.912900e+02 1.399200e+02
-1 229     8.643900e+02 -1.982001e+01
-2 229     4.937300e+02 1.154700e+02
-3 229     3.578400e+02 -1.980100e+02
-7 229     4.238500e+02 3.131600e+02
-8 229     4.640900e+02 6.648001e+01
-9 229     2.831200e+02 1.954200e+02
-10 229     5.818400e+02 3.671300e+02
-13 229     7.965400e+02 -7.571002e+01
-15 229     7.788800e+02 4.128400e+02
-0 230     4.223700e+02 5.774600e+02
-1 230     8.710699e+02 4.870900e+02
-5 230     8.234600e+02 -5.541998e+01
-6 230     -4.466998e+01 7.018200e+02
-14 230     7.184301e+02 -1.355900e+02
-0 231     4.712600e+02 3.942700e+02
-1 231     8.337500e+02 2.816200e+02
-2 231     2.495300e+02 2.690200e+02
-3 231     1.093600e+02 -5.881000e+01
-7 231     2.585400e+02 5.306700e+02
-8 231     2.728400e+02 2.014200e+02
-9 231     6.865997e+01 3.174100e+02
-11 231     5.810200e+02 -3.366700e+02
-12 231     2.643600e+02 5.110100e+02
-13 231     6.277600e+02 1.219000e+02
-14 231     8.613300e+02 -3.119800e+02
-0 232     3.583700e+02 5.743400e+02
-1 232     7.926100e+02 4.987500e+02
-2 232     1.309998e+01 3.429000e+02
-3 232     -1.323800e+02 8.530029e+00
-5 232     7.585900e+02 -6.153003e+01
-6 232     -1.098900e+02 6.859100e+02
-9 232     -1.434400e+02 3.726500e+02
-11 232     4.636000e+02 -1.827700e+02
-13 232     4.701500e+02 2.550500e+02
-14 232     6.563700e+02 -1.428000e+02
-0 233     -3.472998e+01 1.007000e+02
-1 233     1.646700e+02 1.352800e+02
-2 233     4.415997e+01 8.964001e+01
-3 233     -4.614001e+01 -2.278100e+02
-4 233     -2.023400e+02 -3.823200e+02
-5 233     5.692600e+02 -5.595900e+02
-6 233     -1.366700e+02 1.106800e+02
-7 233     -1.437300e+02 2.034200e+02
-8 233     7.154999e+01 3.076999e+01
-10 233     -1.445000e+02 2.546100e+02
-12 233     -1.090100e+02 1.653800e+02
-13 233     3.179200e+02 -1.423400e+02
-15 233     -9.370001e+01 2.696000e+02
-0 234     2.446000e+02 1.934003e+01
-1 234     4.098900e+02 -2.551001e+01
-2 234     3.731600e+02 8.684003e+01
-3 234     2.664399e+02 -2.226600e+02
-7 234     1.517500e+02 1.705500e+02
-10 234     1.878500e+02 1.885000e+02
-13 234     5.796801e+02 -1.866900e+02
-15 234     2.967500e+02 1.970500e+02
-0 235     -9.320007e+00 1.190002e+00
-1 235     1.540400e+02 3.140997e+01
-4 235     -2.701100e+02 -4.044100e+02
-6 235     -4.963000e+01 1.328003e+01
-8 235     1.385800e+02 -3.310001e+01
-10 235     -1.025800e+02 1.401100e+02
-12 235     -3.445001e+01 6.779999e+01
-13 235     3.632900e+02 -2.228200e+02
-15 235     -4.577002e+01 1.363000e+02
-0 236     -2.603998e+01 3.287000e+01
-1 236     1.488900e+02 6.765002e+01
-2 236     9.525000e+01 3.962000e+01
-3 236     6.880005e+00 -2.732900e+02
-4 236     -2.470400e+02 -3.912800e+02
-6 236     -8.698999e+01 4.253003e+01
-7 236     -1.194600e+02 1.395800e+02
-10 236     -1.272300e+02 1.762600e+02
-12 236     -6.931000e+01 9.840997e+01
-13 236     3.410601e+02 -1.971600e+02
-15 236     -7.379999e+01 1.782400e+02
-0 237     1.095000e+02 5.719971e+00
-1 237     2.666100e+02 2.890015e+00
-2 237     2.643600e+02 6.240002e+01
-3 237     1.676000e+02 -2.473100e+02
-6 237     9.056000e+01 6.209998e+01
-7 237     2.502002e+01 1.387200e+02
-8 237     2.473600e+02 2.619995e+00
-10 237     3.306000e+01 1.589300e+02
-12 237     1.079300e+02 1.135600e+02
-13 237     4.715500e+02 -2.066600e+02
-15 237     1.124300e+02 1.599600e+02
-0 238     3.622000e+02 5.140900e+02
-1 238     7.775300e+02 4.329600e+02
-3 238     -1.198200e+02 -5.415997e+01
-5 238     7.657100e+02 -1.253900e+02
-6 238     -9.342001e+01 6.109500e+02
-9 238     -1.313500e+02 3.161100e+02
-11 238     4.745601e+02 -2.341600e+02
-13 238     4.770601e+02 2.044700e+02
-14 238     6.660699e+02 -2.043000e+02
-0 239     -1.937600e+02 5.080000e+02
-1 239     1.799800e+02 5.647200e+02
-2 239     -4.764000e+02 2.699200e+02
-3 239     -6.029600e+02 -5.914001e+01
-7 239     -4.201000e+02 5.567300e+02
-0 240     -6.419983e+00 4.749300e+02
-1 240     3.643000e+02 4.853200e+02
-2 240     -2.953700e+02 2.311900e+02
-5 240     3.972100e+02 -1.762300e+02
-6 240     -4.814500e+02 4.871600e+02
-7 240     -2.299000e+02 5.414700e+02
-8 240     -1.633100e+02 1.754200e+02
-9 240     -4.013200e+02 2.646900e+02
-11 240     1.426700e+02 -2.856600e+02
-12 240     -3.064500e+02 4.779300e+02
-0 241     -8.925000e+01 4.743600e+02
-1 241     2.780800e+02 5.054500e+02
-2 241     -3.734800e+02 2.290100e+02
-5 241     3.158700e+02 -1.778400e+02
-6 241     -5.758300e+02 4.688100e+02
-7 241     -3.113100e+02 5.319400e+02
-8 241     -2.275900e+02 1.721800e+02
-11 241     6.806000e+01 -2.881800e+02
-12 241     -3.971300e+02 4.648800e+02
-13 241     1.199800e+02 1.432200e+02
-14 241     2.272100e+02 -2.651000e+02
-0 242     -3.066998e+01 5.616400e+02
-1 242     3.604000e+02 5.797200e+02
-5 242     3.768700e+02 -8.644000e+01
-6 242     -5.252000e+02 5.962600e+02
-8 242     -1.873100e+02 2.524800e+02
-11 242     1.173800e+02 -2.123600e+02
-12 242     -3.481100e+02 5.767000e+02
-0 243     -2.281000e+01 5.676400e+02
-1 243     3.703800e+02 5.839900e+02
-2 243     -3.171800e+02 3.367100e+02
-5 243     3.847500e+02 -7.957001e+01
-0 244     2.101600e+02 5.526900e+02
-1 244     6.169399e+02 5.116100e+02
-2 244     -1.086700e+02 3.196200e+02
-3 244     -2.473600e+02 -1.428003e+01
-4 244     3.335999e+01 -4.975400e+02
-5 244     6.115900e+02 -8.892999e+01
-6 244     -2.600300e+02 6.309200e+02
-9 244     -2.459400e+02 3.484000e+02
-11 244     3.321899e+02 -2.099200e+02
-12 244     -9.263000e+01 5.982000e+02
-14 244     5.142200e+02 -1.729100e+02
-0 245     5.254999e+01 5.434800e+02
-1 245     4.438800e+02 5.416200e+02
-8 245     -1.233800e+02 2.388400e+02
-9 245     -3.631400e+02 3.357800e+02
-11 245     1.916300e+02 -2.250600e+02
-14 245     3.639600e+02 -1.890900e+02
-0 246     -1.074400e+02 5.323300e+02
-1 246     2.737900e+02 5.682100e+02
-2 246     -3.944500e+02 2.975100e+02
-12 246     -4.272000e+02 5.327200e+02
-0 247     2.832600e+02 5.630600e+02
-1 247     7.027700e+02 5.046500e+02
-2 247     -4.741998e+01 3.306100e+02
-3 247     -1.901800e+02 -3.729980e+00
-5 247     6.840400e+02 -7.585999e+01
-6 247     -1.852300e+02 6.577700e+02
-9 247     -1.951200e+02 3.600000e+02
-11 247     3.970699e+02 -1.968300e+02
-12 247     -1.896002e+01 6.183300e+02
-14 247     5.843400e+02 -1.585200e+02
-0 248     -1.050100e+02 5.271900e+02
-1 248     2.750800e+02 5.626500e+02
-2 248     -3.919500e+02 2.914700e+02
-4 248     3.735999e+01 -3.003400e+02
-5 248     3.033900e+02 -1.220400e+02
-8 248     -2.430200e+02 2.208200e+02
-11 248     5.312000e+01 -2.431600e+02
-12 248     -4.239300e+02 5.264400e+02
-0 249     -2.665000e+02 4.544700e+02
-1 249     9.477002e+01 5.290700e+02
-4 249     8.000000e+00 -2.028900e+02
-5 249     1.408600e+02 -1.985400e+02
-7 249     -4.864600e+02 4.922800e+02
-11 249     -8.852002e+01 -3.073100e+02
-12 249     -5.932500e+02 4.157800e+02
-0 250     5.981000e+01 -1.628000e+02
-1 250     1.671300e+02 -1.475200e+02
-2 250     2.783700e+02 -1.261000e+02
-3 250     1.921100e+02 -4.261801e+02
-6 250     9.641998e+01 -1.436700e+02
-13 250     4.482500e+02 -3.591200e+02
-15 250     6.758002e+01 -7.571002e+01
-0 251     3.272998e+01 -1.589800e+02
-1 251     1.432700e+02 -1.352100e+02
-2 251     2.468600e+02 -1.306200e+02
-3 251     1.623300e+02 -4.323600e+02
-4 251     -3.925200e+02 -4.357600e+02
-6 251     6.346997e+01 -1.494900e+02
-7 251     -2.340997e+01 -3.903998e+01
-8 251     2.261600e+02 -1.574600e+02
-10 251     -3.865997e+01 -3.960999e+01
-12 251     6.859003e+01 -1.014400e+02
-13 251     4.230699e+02 -3.576800e+02
-15 251     3.053003e+01 -7.390002e+01
-0 252     -7.710999e+01 -2.262700e+02
-1 252     2.562000e+01 -1.675100e+02
-3 252     5.309003e+01 -5.722800e+02
-4 252     -4.255500e+02 -3.400700e+02
-6 252     -5.690002e+01 -2.809900e+02
-7 252     -1.274000e+02 -1.310600e+02
-8 252     1.269500e+02 -2.653500e+02
-9 252     1.252002e+01 -1.321200e+02
-12 252     -5.470001e+01 -2.290400e+02
-15 252     -1.067800e+02 -1.796100e+02
-0 253     -1.627002e+01 -2.250500e+02
-1 253     7.664001e+01 -1.839000e+02
-2 253     2.226100e+02 -2.159300e+02
-3 253     1.458400e+02 -5.156801e+02
-4 253     -4.346400e+02 -3.952600e+02
-7 253     -6.025000e+01 -1.140700e+02
-8 253     2.034500e+02 -2.278900e+02
-10 253     -8.800000e+01 -1.212600e+02
-12 253     3.271002e+01 -1.953600e+02
-13 253     3.880100e+02 -4.217600e+02
-15 253     -2.653003e+01 -1.697300e+02
-0 254     -8.364001e+01 -2.469000e+02
-1 254     1.554999e+01 -1.858700e+02
-6 254     -6.142999e+01 -3.147400e+02
-7 254     -1.312900e+02 -1.541600e+02
-9 254     1.354999e+01 -1.698900e+02
-10 254     -1.631800e+02 -1.527000e+02
-12 254     -5.720001e+01 -2.630200e+02
-15 254     -1.123000e+02 -2.082300e+02
-0 255     -1.485000e+02 5.321100e+02
-1 255     2.316100e+02 5.779500e+02
-2 255     -4.335200e+02 2.976100e+02
-5 255     2.616899e+02 -1.170200e+02
-7 255     -3.778100e+02 5.865400e+02
-11 255     1.521002e+01 -2.399700e+02
-12 255     -4.723200e+02 5.275100e+02
-0 256     3.650000e+01 5.594500e+02
-1 256     4.306600e+02 5.614700e+02
-8 256     -1.365700e+02 2.518200e+02
-9 256     -3.779000e+02 3.509900e+02
-11 256     1.768900e+02 -2.116000e+02
-13 256     2.180000e+02 2.215800e+02
-0 257     3.623700e+02 5.779000e+02
-1 257     7.984301e+02 5.013700e+02
-5 257     7.630699e+02 -5.831000e+01
-11 257     4.673101e+02 -1.799900e+02
-13 257     4.734200e+02 2.579500e+02
-14 257     6.597300e+02 -1.391600e+02
-0 258     1.011200e+02 4.294100e+02
-1 258     4.655500e+02 4.112900e+02
-2 258     -1.927800e+02 1.802000e+02
-8 258     -7.879999e+01 1.366300e+02
-13 258     2.711000e+02 1.154100e+02
-14 258     4.128900e+02 -3.062900e+02
-0 259     -1.974100e+02 3.867000e+02
-1 259     1.473700e+02 4.454600e+02
-2 259     -4.744900e+02 1.223600e+02
-10 259     -3.695500e+02 5.820300e+02
-13 259     3.391998e+01 6.266998e+01
-14 259     1.186100e+02 -3.604500e+02
-0 260     6.696002e+01 6.401001e+01
-1 260     2.447100e+02 7.214001e+01
-2 260     1.921500e+02 1.032700e+02
-3 260     9.691998e+01 -2.107800e+02
-4 260     -2.364000e+02 -4.655800e+02
-5 260     7.118101e+02 -5.955400e+02
-6 260     1.645001e+01 1.114600e+02
-7 260     -2.900000e+01 1.881600e+02
-8 260     1.903500e+02 3.817001e+01
-9 260     4.746997e+01 1.775600e+02
-10 260     -2.273999e+01 2.222100e+02
-12 260     3.644000e+01 1.650400e+02
-13 260     4.234900e+02 -1.613100e+02
-15 260     4.735999e+01 2.336900e+02
-0 261     -3.140997e+01 1.115500e+02
-1 261     1.717600e+02 1.448600e+02
-2 261     4.096002e+01 9.821002e+01
-3 261     -5.034998e+01 -2.189100e+02
-4 261     -1.961500e+02 -3.845300e+02
-5 261     5.698300e+02 -5.475200e+02
-6 261     -1.392700e+02 1.227900e+02
-7 261     -1.429200e+02 2.145000e+02
-8 261     6.975000e+01 3.873999e+01
-10 261     -1.416700e+02 2.682200e+02
-12 261     -1.098500e+02 1.775400e+02
-13 261     3.180900e+02 -1.330000e+02
-15 261     -9.063000e+01 2.848200e+02
-0 262     3.697998e+01 1.866998e+01
-1 262     2.013199e+02 3.651001e+01
-2 262     1.805900e+02 5.353003e+01
-4 262     -2.642100e+02 -4.423800e+02
-6 262     2.010010e+00 5.165997e+01
-8 262     1.788700e+02 -3.549988e+00
-9 262     4.069000e+01 1.363100e+02
-12 262     1.703998e+01 1.058900e+02
-15 262     1.258002e+01 1.677300e+02
-0 263     2.417700e+02 5.731200e+02
-1 263     6.576500e+02 5.253700e+02
-2 263     -8.410999e+01 3.405500e+02
-4 263     4.381000e+01 -5.205200e+02
-5 263     6.425500e+02 -6.783002e+01
-6 263     -2.303500e+02 6.612000e+02
-8 263     1.091998e+01 2.655800e+02
-9 263     -2.257300e+02 3.674500e+02
-11 263     3.586300e+02 -1.913600e+02
-13 263     3.783000e+02 2.455500e+02
-14 263     5.433101e+02 -1.514300e+02
-0 264     2.159200e+02 5.201800e+02
-1 264     6.140900e+02 4.760000e+02
-3 264     -2.387400e+02 -4.929999e+01
-5 264     6.181500e+02 -1.240200e+02
-6 264     -2.494600e+02 5.982200e+02
-12 264     -8.278003e+01 5.678800e+02
-13 264     3.593700e+02 2.047700e+02
-14 264     5.210699e+02 -1.998400e+02
-0 265     1.049200e+02 4.273600e+02
-1 265     4.689000e+02 4.081600e+02
-2 265     -1.879400e+02 1.775400e+02
-7 265     -1.161300e+02 5.045300e+02
-8 265     -7.477002e+01 1.347000e+02
-9 265     -3.069500e+02 2.217800e+02
-13 265     2.741400e+02 1.135900e+02
-14 265     4.169301e+02 -3.086100e+02
-0 266     1.478199e+02 1.870300e+02
-1 266     3.776500e+02 1.678400e+02
-2 266     1.700700e+02 1.783900e+02
-8 266     1.827000e+02 1.084700e+02
-12 266     5.959003e+01 2.941700e+02
-13 266     4.501700e+02 -5.923999e+01
-14 266     6.443700e+02 -5.396899e+02
-15 266     1.460300e+02 4.141100e+02
-0 267     3.547998e+01 9.151999e+01
-1 267     2.247300e+02 1.076900e+02
-2 267     1.402700e+02 1.138600e+02
-4 267     -2.152400e+02 -4.391600e+02
-5 267     6.645000e+02 -5.671801e+02
-6 267     -3.645001e+01 1.286100e+02
-12 267     -1.356000e+01 1.829200e+02
-13 267     3.883900e+02 -1.414000e+02
-15 267     1.489990e+00 2.666000e+02
-0 268     1.698700e+02 4.897998e+01
-1 268     3.410400e+02 2.734003e+01
-3 268     1.984500e+02 -2.020800e+02
-4 268     -2.604800e+02 -5.484399e+02
-10 268     9.859998e+01 2.152800e+02
-15 268     1.894200e+02 2.274700e+02
-0 269     9.884003e+01 4.014001e+01
-1 269     2.674700e+02 3.944000e+01
-2 269     2.368800e+02 9.103003e+01
-3 269     1.411100e+02 -2.206300e+02
-4 269     -2.567100e+02 -4.916000e+02
-6 269     6.285999e+01 9.647998e+01
-7 269     8.090027e+00 1.704100e+02
-8 269     2.263600e+02 2.757999e+01
-10 269     1.671002e+01 1.976200e+02
-12 269     8.206000e+01 1.489000e+02
-13 269     4.565699e+02 -1.785800e+02
-15 269     9.353003e+01 2.053200e+02
-0 270     2.178000e+02 3.002930e-02
-1 270     3.743900e+02 -3.578998e+01
-2 270     3.622200e+02 7.148999e+01
-3 270     2.566200e+02 -2.365500e+02
-7 270     1.304400e+02 1.494900e+02
-8 270     3.309800e+02 1.116000e+01
-13 270     5.624100e+02 -2.036400e+02
-15 270     2.616801e+02 1.669200e+02
-0 271     7.344000e+01 2.595001e+01
-1 271     2.380200e+02 3.341998e+01
-4 271     -2.635600e+02 -4.718700e+02
-6 271     4.216998e+01 7.284003e+01
-8 271     2.104100e+02 1.148001e+01
-9 271     7.151001e+01 1.526300e+02
-10 271     -1.078998e+01 1.788900e+02
-13 271     4.370200e+02 -1.925100e+02
-15 271     6.092999e+01 1.828000e+02
-0 272     1.977002e+01 3.601001e+01
-1 272     1.909800e+02 5.821002e+01
-2 272     1.526200e+02 6.283002e+01
-4 272     -2.499200e+02 -4.284300e+02
-6 272     -2.714001e+01 6.441998e+01
-7 272     -7.188000e+01 1.520100e+02
-8 272     1.559900e+02 5.190002e+00
-9 272     1.645001e+01 1.431400e+02
-10 272     -7.431000e+01 1.847500e+02
-12 272     -1.059998e+01 1.190800e+02
-13 272     3.855300e+02 -1.895900e+02
-15 272     -1.287000e+01 1.888000e+02
-0 273     8.783002e+01 -8.509003e+01
-1 273     2.186300e+02 -7.996002e+01
-2 273     2.744500e+02 -3.715997e+01
-3 273     1.827400e+02 -3.424300e+02
-6 273     9.676001e+01 -4.582001e+01
-7 273     1.858002e+01 4.434998e+01
-8 273     2.527600e+02 -7.989001e+01
-9 273     1.221600e+02 6.509998e+01
-10 273     1.728003e+01 5.195001e+01
-13 273     4.625300e+02 -2.878400e+02
-15 273     9.527002e+01 3.387000e+01
-0 274     2.523600e+02 -1.251300e+02
-1 274     3.721400e+02 -1.718300e+02
-2 274     4.340000e+02 -5.158002e+01
-7 274     1.834200e+02 3.128998e+01
-9 274     2.523300e+02 5.822998e+01
-10 274     2.116801e+02 2.263000e+01
-15 274     3.262200e+02 9.500122e-01
-0 275     1.094000e+01 5.096800e+02
-1 275     3.913800e+02 5.166400e+02
-2 275     -2.821000e+02 2.717900e+02
-4 275     1.990997e+01 -3.671000e+02
-5 275     4.155000e+02 -1.389000e+02
-6 275     -4.689600e+02 5.365100e+02
-7 275     -2.175700e+02 5.793900e+02
-8 275     -1.527700e+02 2.075800e+02
-9 275     -3.920800e+02 3.007100e+02
-11 275     1.562200e+02 -2.550500e+02
-12 275     -2.945100e+02 5.220100e+02
-13 275     1.985200e+02 1.789700e+02
-14 275     3.239301e+02 -2.251200e+02
-0 276     5.522998e+01 4.937000e+02
-1 276     4.327600e+02 4.892400e+02
-2 276     -2.402700e+02 2.532400e+02
-3 276     -3.730500e+02 -7.915997e+01
-4 276     7.510010e+00 -3.930800e+02
-5 276     4.587000e+02 -1.556200e+02
-6 276     -4.165700e+02 5.245600e+02
-7 276     -1.725900e+02 5.671500e+02
-9 276     -3.550000e+02 2.860800e+02
-11 276     1.969100e+02 -2.672200e+02
-13 276     2.334600e+02 1.673100e+02
-14 276     3.669800e+02 -2.407100e+02
-0 277     -8.366998e+01 4.922300e+02
-1 277     2.885400e+02 5.224900e+02
-2 277     -3.693400e+02 2.516100e+02
-4 277     1.614001e+01 -3.096400e+02
-5 277     3.222200e+02 -1.585800e+02
-6 277     -5.727500e+02 4.949800e+02
-7 277     -3.080700e+02 5.516300e+02
-11 277     7.290997e+01 -2.723600e+02
-12 277     -3.941700e+02 4.883300e+02
-0 278     4.882000e+02 3.473600e+02
-1 278     8.363101e+02 2.270600e+02
-3 278     1.401100e+02 -9.559998e+01
-6 278     1.843000e+02 4.725500e+02
-7 278     2.817500e+02 4.880200e+02
-9 278     9.551001e+01 2.841400e+02
-11 278     6.044700e+02 -3.812000e+02
-12 278     2.944399e+02 4.649700e+02
-0 279     1.010800e+02 4.426600e+02
-1 279     4.688700e+02 4.248400e+02
-2 279     -1.934100e+02 1.951800e+02
-4 279     -2.631000e+01 -4.179900e+02
-5 279     5.033400e+02 -2.090000e+02
-6 279     -3.563900e+02 4.680400e+02
-7 279     -1.218900e+02 5.196600e+02
-8 279     -7.995001e+01 1.484400e+02
-12 279     -1.863600e+02 4.554300e+02
-13 279     2.706700e+02 1.265800e+02
-14 279     4.125300e+02 -2.923500e+02
-0 280     1.388700e+02 1.857700e+02
-1 280     3.689399e+02 1.690900e+02
-2 280     1.615100e+02 1.759800e+02
-3 280     5.517999e+01 -1.439200e+02
-7 280     8.820007e+00 3.100300e+02
-10 280     4.894000e+01 3.727000e+02
-13 280     4.410500e+02 -6.133002e+01
-14 280     6.328600e+02 -5.415000e+02
-15 280     1.333400e+02 4.109200e+02
-0 281     2.129399e+02 7.051001e+01
-1 281     3.936801e+02 3.546997e+01
-4 281     -2.513700e+02 -5.813000e+02
-6 281     1.644100e+02 1.581000e+02
-7 281     1.119200e+02 2.164900e+02
-10 281     1.460600e+02 2.450600e+02
-12 281     1.959500e+02 2.051900e+02
-13 281     5.449600e+02 -1.453300e+02
-15 281     2.463400e+02 2.631500e+02
-0 282     1.543800e+02 6.976001e+01
-1 282     3.325400e+02 5.253003e+01
-2 282     2.762900e+02 1.254100e+02
-3 282     1.739500e+02 -1.879000e+02
-5 282     8.142100e+02 -5.884100e+02
-6 282     1.088300e+02 1.434900e+02
-7 282     5.652002e+01 2.078000e+02
-8 282     2.613400e+02 5.648999e+01
-9 282     1.151000e+02 1.995500e+02
-10 282     7.823999e+01 2.381000e+02
-12 282     1.342400e+02 1.940700e+02
-13 282     4.983400e+02 -1.499700e+02
-0 283     -1.489700e+02 3.671800e+02
-1 283     1.916801e+02 4.137300e+02
-2 283     -4.242700e+02 9.923999e+01
-5 283     2.512200e+02 -2.933200e+02
-7 283     -3.549500e+02 4.145700e+02
-8 283     -2.677800e+02 6.939001e+01
-12 283     -4.420000e+02 3.280000e+02
-14 283     1.655601e+02 -3.810300e+02
-0 284     5.694700e+02 1.164700e+02
-1 284     8.336300e+02 -3.773999e+01
-2 284     4.747700e+02 7.984998e+01
-3 284     3.398400e+02 -2.328900e+02
-6 284     3.858500e+02 2.531600e+02
-7 284     4.050601e+02 2.859700e+02
-8 284     4.485000e+02 3.847000e+01
-9 284     2.686700e+02 1.650500e+02
-10 284     5.578600e+02 3.372300e+02
-12 284     4.722800e+02 2.626500e+02
-13 284     7.764000e+02 -9.970001e+01
-15 284     7.506200e+02 3.766000e+02
-0 285     -1.594300e+02 3.412100e+02
-1 285     1.742700e+02 3.907900e+02
-2 285     -4.335600e+02 6.600000e+01
-7 285     -3.631500e+02 3.857500e+02
-8 285     -2.760600e+02 4.295999e+01
-11 285     6.789978e+00 -4.074700e+02
-14 285     1.540800e+02 -4.097700e+02
-0 286     2.194399e+02 9.820007e+00
-1 286     3.796899e+02 -2.660999e+01
-2 286     3.582300e+02 8.053003e+01
-6 286     1.971600e+02 9.734998e+01
-7 286     1.299400e+02 1.588800e+02
-8 286     3.282000e+02 1.884000e+01
-13 286     5.613700e+02 -1.954300e+02
-0 287     2.269800e+02 3.979980e+00
-1 287     3.857500e+02 -3.477002e+01
-6 287     2.054000e+02 9.071997e+01
-7 287     1.383800e+02 1.543500e+02
-8 287     3.361800e+02 1.398999e+01
-12 287     2.339100e+02 1.369100e+02
-13 287     5.687100e+02 -2.002100e+02
-15 287     2.740900e+02 1.736700e+02
-0 288     2.409900e+02 -8.280029e+00
-1 288     3.966801e+02 -5.191998e+01
-2 288     3.834700e+02 6.285999e+01
-3 288     2.768800e+02 -2.444300e+02
-0 289     6.166998e+01 -1.004999e+01
-1 289     2.156700e+02 1.520020e+00
-2 289     2.210900e+02 3.401001e+01
-3 289     1.288900e+02 -2.751700e+02
-4 289     -2.874300e+02 -4.625500e+02
-6 289     4.314001e+01 2.897998e+01
-7 289     -1.996997e+01 1.147100e+02
-8 289     2.108900e+02 -2.035001e+01
-9 289     7.501001e+01 1.219900e+02
-10 289     -2.063000e+01 1.356200e+02
-12 289     5.637000e+01 8.215002e+01
-13 289     4.314800e+02 -2.244700e+02
-15 289     4.971002e+01 1.319600e+02
-0 290     7.127002e+01 -1.402002e+01
-1 290     2.236100e+02 -5.210022e+00
-2 290     2.328400e+02 3.358002e+01
-3 290     1.399900e+02 -2.769900e+02
-4 290     -2.920100e+02 -4.698400e+02
-9 290     8.484003e+01 1.217000e+02
-10 290     -9.299988e+00 1.327400e+02
-12 290     6.991998e+01 7.984003e+01
-13 290     4.403101e+02 -2.263500e+02
-15 290     6.306000e+01 1.285500e+02
-0 291     -1.437400e+02 9.188000e+01
-1 291     7.484003e+01 1.535500e+02
-2 291     -1.464800e+02 -1.478998e+01
-3 291     -2.391600e+02 -3.346200e+02
-4 291     -2.016400e+02 -2.890400e+02
-5 291     3.971100e+02 -5.811801e+02
-6 291     -3.277600e+02 3.748999e+01
-7 291     -2.677700e+02 1.657300e+02
-8 291     -7.640002e+01 -4.542001e+01
-10 291     -2.707300e+02 2.337000e+02
-12 291     -2.726200e+02 9.240002e+01
-13 291     1.897100e+02 -1.671500e+02
-15 291     -2.356300e+02 2.417000e+02
-0 292     3.199200e+02 5.215000e+02
-1 292     7.310200e+02 4.511900e+02
-3 292     -1.520900e+02 -4.469000e+01
-4 292     7.820007e+00 -5.671300e+02
-5 292     7.235300e+02 -1.176700e+02
-6 292     -1.375000e+02 6.152400e+02
-8 292     7.225000e+01 2.266600e+02
-12 292     2.546002e+01 5.790700e+02
-0 293     4.845000e+02 4.017500e+02
-1 293     8.500900e+02 2.865200e+02
-2 293     2.626300e+02 2.817200e+02
-3 293     1.219700e+02 -4.635999e+01
-6 293     1.654900e+02 5.334900e+02
-7 293     2.706200e+02 5.401300e+02
-8 293     2.833500e+02 2.106700e+02
-9 293     7.891998e+01 3.283200e+02
-0 294     1.423101e+02 5.101900e+02
-1 294     5.290400e+02 4.844900e+02
-2 294     -1.552800e+02 2.800200e+02
-3 294     -2.905900e+02 -5.292999e+01
-4 294     1.253003e+01 -4.519200e+02
-5 294     5.502200e+02 -1.352800e+02
-6 294     -3.161700e+02 5.657500e+02
-8 294     -4.903998e+01 2.158100e+02
-9 294     -2.829500e+02 3.122700e+02
-11 294     2.736200e+02 -2.494700e+02
-12 294     -1.508800e+02 5.440500e+02
-13 294     3.055601e+02 1.875200e+02
-14 294     4.550800e+02 -2.190800e+02
-0 295     2.506000e+01 5.105900e+02
-1 295     4.049100e+02 5.139700e+02
-2 295     -2.681600e+02 2.742000e+02
-3 295     -4.005900e+02 -5.906000e+01
-5 295     4.302500e+02 -1.367300e+02
-6 295     -4.524500e+02 5.427700e+02
-9 295     -3.802300e+02 3.037600e+02
-13 295     2.100200e+02 1.809200e+02
-14 295     3.378101e+02 -2.232600e+02
-0 296     8.390015e+00 5.011000e+02
-1 296     3.861899e+02 5.078600e+02
-4 296     1.452002e+01 -3.644300e+02
-6 296     -4.700600e+02 5.236000e+02
-7 296     -2.187500e+02 5.691900e+02
-8 296     -1.539000e+02 1.986000e+02
-9 296     -3.927700e+02 2.914000e+02
-11 296     1.544800e+02 -2.629900e+02
-12 296     -2.957300e+02 5.101100e+02
-0 297     2.356000e+01 4.950200e+02
-1 297     3.998700e+02 4.982400e+02
-2 297     -2.687000e+02 2.545300e+02
-3 297     -4.007800e+02 -7.721997e+01
-4 297     1.042999e+01 -3.739000e+02
-5 297     4.279301e+02 -1.543800e+02
-6 297     -4.513600e+02 5.199000e+02
-7 297     -2.034800e+02 5.651600e+02
-8 297     -1.416700e+02 1.942000e+02
-9 297     -3.795500e+02 2.865400e+02
-11 297     1.679200e+02 -2.674600e+02
-12 297     -2.778500e+02 5.057800e+02
-13 297     2.085900e+02 1.669700e+02
-14 297     3.361899e+02 -2.401300e+02
-0 298     2.341998e+01 4.865600e+02
-1 298     3.975500e+02 4.892700e+02
-2 298     -2.681200e+02 2.447300e+02
-6 298     -4.502100e+02 5.109200e+02
-7 298     -2.024500e+02 5.566500e+02
-8 298     -1.409900e+02 1.874700e+02
-9 298     -3.786500e+02 2.772400e+02
-11 298     1.685300e+02 -2.744900e+02
-14 298     3.359700e+02 -2.492300e+02
-0 299     -6.975000e+01 4.854000e+02
-1 299     3.008300e+02 5.118700e+02
-2 299     -3.557200e+02 2.423900e+02
-3 299     -4.850600e+02 -8.821997e+01
-4 299     1.121997e+01 -3.171000e+02
-5 299     3.354200e+02 -1.661000e+02
-6 299     -5.555600e+02 4.877400e+02
-7 299     -2.935600e+02 5.455100e+02
-8 299     -2.128600e+02 1.832300e+02
-11 299     8.512000e+01 -2.782100e+02
-12 299     -3.778000e+02 4.813500e+02
-13 299     1.352900e+02 1.537600e+02
-14 299     2.462300e+02 -2.530600e+02
-0 300     1.065000e+02 4.371900e+02
-1 300     4.730200e+02 4.177200e+02
-4 300     -3.032001e+01 -4.202400e+02
-6 300     -3.506500e+02 4.612100e+02
-7 300     -1.164000e+02 5.145300e+02
-8 300     -7.710999e+01 1.427600e+02
-13 300     2.755200e+02 1.224000e+02
-14 300     4.178700e+02 -2.980200e+02
-0 301     2.162000e+01 4.144300e+02
-1 301     3.780300e+02 4.168300e+02
-2 301     -2.639400e+02 1.605400e+02
-3 301     -3.982600e+02 -1.709800e+02
-5 301     4.230300e+02 -2.410300e+02
-6 301     -4.390500e+02 4.140200e+02
-7 301     -1.950600e+02 4.821900e+02
-8 301     -1.374900e+02 1.200700e+02
-12 301     -2.661200e+02 4.101700e+02
-13 301     2.078101e+02 9.763000e+01
-14 301     3.346300e+02 -3.253200e+02
-0 302     -1.309600e+02 3.790300e+02
-1 302     2.125500e+02 4.208000e+02
-2 302     -4.080000e+02 1.134700e+02
-5 302     2.691000e+02 -2.807800e+02
-7 302     -3.397500e+02 4.282400e+02
-8 302     -2.547200e+02 8.107999e+01
-13 302     8.701001e+01 5.920001e+01
-14 302     1.842400e+02 -3.675600e+02
-0 303     2.030029e+00 1.172500e+02
-1 303     2.040800e+02 1.421500e+02
-2 303     8.332001e+01 1.169800e+02
-3 303     -9.609985e+00 -2.001500e+02
-5 303     6.126500e+02 -5.407600e+02
-6 303     -9.573001e+01 1.411700e+02
-7 303     -1.082900e+02 2.265700e+02
-8 303     1.036900e+02 5.282999e+01
-12 303     -6.789001e+01 1.963800e+02
-15 303     -4.638000e+01 2.978800e+02
-0 304     2.316801e+02 -1.130005e+00
-1 304     3.891000e+02 -4.150000e+01
-2 304     3.716700e+02 7.027002e+01
-6 304     2.108000e+02 8.727002e+01
-7 304     1.433600e+02 1.500600e+02
-8 304     3.398200e+02 1.025000e+01
-10 304     1.749200e+02 1.635000e+02
-12 304     2.400699e+02 1.331500e+02
-0 305     6.727002e+01 1.339001e+01
-1 305     2.283600e+02 2.283002e+01
-2 305     2.173101e+02 5.772998e+01
-3 305     1.236500e+02 -2.523300e+02
-4 305     -2.706000e+02 -4.672100e+02
-6 305     4.026001e+01 5.959998e+01
-7 305     -1.877002e+01 1.385300e+02
-8 305     2.084500e+02 1.529999e+00
-9 305     7.071002e+01 1.413000e+02
-12 305     5.597998e+01 1.125400e+02
-15 305     5.417999e+01 1.648400e+02
-0 306     8.600000e+01 -6.080017e+00
-1 306     2.400300e+02 -1.890015e+00
-2 306     2.451600e+02 4.481000e+01
-3 306     1.505200e+02 -2.643400e+02
-4 306     -2.878800e+02 -4.817200e+02
-6 306     6.908002e+01 4.160999e+01
-7 306     3.419983e+00 1.227800e+02
-8 306     2.309400e+02 -1.166000e+01
-9 306     9.463000e+01 1.314000e+02
-10 306     6.469971e+00 1.424300e+02
-12 306     8.413000e+01 9.344000e+01
-13 306     4.521801e+02 -2.190300e+02
-15 306     8.175000e+01 1.406100e+02
-0 307     -1.712600e+02 4.999800e+02
-1 307     2.007500e+02 5.515500e+02
-2 307     -4.544100e+02 2.605100e+02
-3 307     -5.819300e+02 -7.006000e+01
-4 307     2.695001e+01 -2.603000e+02
-5 307     2.374500e+02 -1.502700e+02
-7 307     -3.964700e+02 5.506300e+02
-8 307     -2.938200e+02 1.956600e+02
-11 307     -5.159973e+00 -2.670400e+02
-12 307     -4.928500e+02 4.863000e+02
-13 307     5.535999e+01 1.612800e+02
-14 307     1.491500e+02 -2.400200e+02
-0 308     5.422200e+02 1.617100e+02
-1 308     8.197300e+02 1.792999e+01
-2 308     4.319200e+02 1.125400e+02
-6 308     3.398200e+02 2.938100e+02
-7 308     3.717200e+02 3.247200e+02
-8 308     4.138400e+02 6.657001e+01
-10 308     5.219800e+02 3.876400e+02
-12 308     4.296200e+02 3.017200e+02
-13 308     7.435300e+02 -6.346002e+01
-15 308     7.074800e+02 4.358400e+02
-0 309     -1.910999e+01 7.478003e+01
-1 309     1.695699e+02 1.060600e+02
-2 309     7.981000e+01 7.821997e+01
-5 309     5.992600e+02 -5.874100e+02
-6 309     -1.001200e+02 9.050000e+01
-7 309     -1.207300e+02 1.817300e+02
-8 309     9.840002e+01 1.998999e+01
-10 309     -1.235800e+02 2.262200e+02
-12 309     -7.746997e+01 1.459900e+02
-13 309     3.398900e+02 -1.614900e+02
-15 309     -6.973999e+01 2.363900e+02
-0 310     1.679200e+02 -1.114001e+01
-1 310     3.194399e+02 -3.152002e+01
-2 310     3.261700e+02 5.690997e+01
-3 310     2.247600e+02 -2.515500e+02
-7 310     8.563000e+01 1.313600e+02
-13 310     5.248700e+02 -2.161200e+02
-15 310     1.952100e+02 1.454200e+02
-0 311     1.453003e+01 -2.770001e+01
-1 311     1.666200e+02 -2.780029e+00
-2 311     1.730700e+02 -1.469971e+00
-3 311     8.445001e+01 -3.106100e+02
-4 311     -2.938700e+02 -4.236200e+02
-7 311     -6.537000e+01 8.806000e+01
-9 311     3.765997e+01 9.029999e+01
-10 311     -7.337000e+01 1.102500e+02
-12 311     3.109985e+00 4.485999e+01
-13 311     3.897600e+02 -2.445600e+02
-15 311     -1.107001e+01 1.009400e+02
-0 312     -5.080017e+00 -3.039001e+01
-1 312     1.482800e+02 -2.100220e-01
-2 312     1.488900e+02 -1.322998e+01
-3 312     5.948999e+01 -3.225700e+02
-6 312     -3.419000e+01 -2.021002e+01
-7 312     -8.590002e+01 8.148001e+01
-8 312     1.494900e+02 -5.820999e+01
-10 312     -9.666998e+01 1.055200e+02
-12 312     -2.270001e+01 3.397998e+01
-13 312     3.705601e+02 -2.489400e+02
-15 312     -3.771997e+01 9.537000e+01
-0 313     -1.665000e+02 4.893000e+02
-1 313     2.030900e+02 5.398800e+02
-2 313     -4.491800e+02 2.483700e+02
-3 313     -5.758700e+02 -8.247998e+01
-4 313     2.106000e+01 -2.618500e+02
-5 313     2.414200e+02 -1.608000e+02
-7 313     -3.903600e+02 5.403000e+02
-11 313     -6.699829e-01 -2.755900e+02
-13 313     5.945001e+01 1.526800e+02
-14 313     1.535699e+02 -2.506200e+02
-0 314     1.658600e+02 7.525000e+01
-1 314     3.462600e+02 5.467999e+01
-2 314     2.828500e+02 1.310400e+02
-3 314     1.800300e+02 -1.820800e+02
-6 314     1.164900e+02 1.532900e+02
-7 314     6.646997e+01 2.142700e+02
-10 314     9.146002e+01 2.457000e+02
-12 314     1.440100e+02 2.021300e+02
-13 314     5.061100e+02 -1.444300e+02
-15 314     1.808900e+02 2.629800e+02
-0 315     1.631000e+01 1.320001e+01
-1 315     1.814500e+02 3.546002e+01
-2 315     1.587600e+02 4.090997e+01
-4 315     -2.653400e+02 -4.263400e+02
-6 315     -2.196002e+01 3.845001e+01
-7 315     -6.892999e+01 1.283600e+02
-8 315     1.611800e+02 -1.335999e+01
-9 315     2.973999e+01 1.237800e+02
-10 315     -7.073999e+01 1.550200e+02
-12 315     -6.710022e+00 9.266998e+01
-13 315     3.862200e+02 -2.089500e+02
-0 316     5.439001e+01 -8.372998e+01
-1 316     1.880200e+02 -6.960999e+01
-2 316     2.385699e+02 -4.765002e+01
-4 316     -3.401300e+02 -4.546200e+02
-6 316     5.867999e+01 -5.760999e+01
-7 316     -1.469000e+01 3.934003e+01
-8 316     2.226400e+02 -8.789001e+01
-10 316     -2.065997e+01 4.898999e+01
-12 316     6.879999e+01 -6.710022e+00
-13 316     4.314900e+02 -2.895500e+02
-15 316     4.995001e+01 3.070001e+01
-0 317     1.692100e+02 2.459003e+01
-1 317     3.328900e+02 3.210022e+00
-3 317     2.082000e+02 -2.202100e+02
-4 317     -2.779500e+02 -5.489700e+02
-6 317     1.428800e+02 1.001000e+02
-7 317     8.046997e+01 1.660600e+02
-8 317     2.880800e+02 2.601999e+01
-10 317     1.003300e+02 1.864000e+02
-12 317     1.665900e+02 1.495500e+02
-13 317     5.195601e+02 -1.863900e+02
-15 317     1.916100e+02 1.939400e+02
-0 318     1.562700e+02 -2.485999e+01
-1 318     3.029600e+02 -4.112000e+01
-2 318     3.209200e+02 4.177002e+01
-3 318     2.210400e+02 -2.653500e+02
-4 318     -3.120800e+02 -5.394600e+02
-6 318     1.528000e+02 4.202002e+01
-7 318     7.615997e+01 1.161700e+02
-8 318     2.947000e+02 -1.535001e+01
-10 318     9.048999e+01 1.285700e+02
-12 318     1.713100e+02 9.083002e+01
-13 318     5.161100e+02 -2.292800e+02
-15 318     1.802700e+02 1.245000e+02
-0 319     1.997700e+02 2.460022e+00
-1 319     3.587000e+02 -2.772998e+01
-3 319     2.404800e+02 -2.373300e+02
-7 319     1.139700e+02 1.497000e+02
-8 319     3.175200e+02 1.129999e+01
-10 319     1.373000e+02 1.639400e+02
-13 319     5.487600e+02 -2.028500e+02
-15 319     2.378101e+02 1.680300e+02
-0 320     3.064800e+02 5.669800e+02
-1 320     7.299000e+02 5.033000e+02
-2 320     -2.882001e+01 3.351900e+02
-3 320     -1.717700e+02 3.599854e-01
-4 320     3.667999e+01 -5.645000e+02
-6 320     -1.618300e+02 6.670000e+02
-8 320     5.681000e+01 2.622200e+02
-9 320     -1.789200e+02 3.644500e+02
-11 320     4.176300e+02 -1.921100e+02
-13 320     4.294200e+02 2.453000e+02
-14 320     6.063199e+02 -1.532700e+02
-0 321     3.089900e+02 5.627800e+02
-1 321     7.313700e+02 4.981800e+02
-2 321     -2.604999e+01 3.311600e+02
-3 321     -1.692200e+02 -3.700012e+00
-4 321     3.390997e+01 -5.662100e+02
-6 321     -1.581600e+02 6.624500e+02
-9 321     -1.762900e+02 3.607700e+02
-11 321     4.197100e+02 -1.957200e+02
-13 321     4.314800e+02 2.421500e+02
-14 321     6.089700e+02 -1.570600e+02
-0 322     2.194100e+02 5.528200e+02
-1 322     6.260000e+02 5.093400e+02
-4 322     3.283002e+01 -5.037700e+02
-5 322     6.208199e+02 -8.903003e+01
-6 322     -2.506700e+02 6.321200e+02
-9 322     -2.393900e+02 3.483700e+02
-11 322     3.400000e+02 -2.090800e+02
-12 322     -8.363000e+01 5.990000e+02
-13 322     3.611200e+02 2.273000e+02
-14 322     5.229700e+02 -1.725100e+02
-0 323     2.053300e+02 5.657200e+02
-1 323     6.147700e+02 5.261700e+02
-2 323     -1.142300e+02 3.347100e+02
-4 323     4.170001e+01 -4.954100e+02
-5 323     6.067600e+02 -7.585999e+01
-6 323     -2.676400e+02 6.466200e+02
-8 323     -1.427002e+01 2.606100e+02
-9 323     -2.513500e+02 3.609000e+02
-11 323     3.268700e+02 -1.984600e+02
-12 323     -1.000000e+02 6.125300e+02
-13 323     3.500601e+02 2.378800e+02
-14 323     5.087800e+02 -1.597800e+02
-0 324     2.341400e+02 5.536200e+02
-1 324     6.425300e+02 5.067700e+02
-2 324     -8.877002e+01 3.205000e+02
-5 324     6.354399e+02 -8.708002e+01
-6 324     -2.352000e+02 6.368400e+02
-8 324     7.349976e+00 2.505200e+02
-11 324     3.530699e+02 -2.076500e+02
-12 324     -6.846997e+01 6.022400e+02
-0 325     6.463000e+01 5.706700e+02
-1 325     4.636300e+02 5.661600e+02
-2 325     -2.379100e+02 3.391100e+02
-4 325     5.207001e+01 -4.052100e+02
-5 325     4.694301e+02 -7.458002e+01
-6 325     -4.203500e+02 6.257400e+02
-8 325     -1.164400e+02 2.622000e+02
-9 325     -3.572000e+02 3.617200e+02
-11 325     2.014600e+02 -2.012000e+02
-12 325     -2.476400e+02 6.000400e+02
-14 325     3.746500e+02 -1.615100e+02
-0 326     8.132001e+01 5.738300e+02
-1 326     4.825900e+02 5.654000e+02
-2 326     -2.237000e+02 3.424300e+02
-3 326     -3.556800e+02 9.080017e+00
-4 326     5.288000e+01 -4.157300e+02
-5 326     4.855100e+02 -7.120001e+01
-6 326     -4.027400e+02 6.327200e+02
-8 326     -1.047400e+02 2.648700e+02
-9 326     -3.450200e+02 3.650500e+02
-11 326     2.157800e+02 -1.980500e+02
-12 326     -2.305400e+02 6.056300e+02
-13 326     2.530000e+02 2.365000e+02
-14 326     3.904000e+02 -1.576800e+02
-0 327     -1.433300e+02 5.387300e+02
-1 327     2.385400e+02 5.834100e+02
-2 327     -4.293700e+02 3.046900e+02
-3 327     -5.547100e+02 -2.510999e+01
-4 327     4.623999e+01 -2.794300e+02
-5 327     2.671200e+02 -1.104000e+02
-8 327     -2.733400e+02 2.312400e+02
-11 327     1.963000e+01 -2.341300e+02
-12 327     -4.682900e+02 5.355800e+02
-14 327     1.774301e+02 -2.000600e+02
-0 328     2.341400e+02 5.536200e+02
-1 328     6.425300e+02 5.067700e+02
-2 328     -8.877002e+01 3.205000e+02
-3 328     -2.281400e+02 -1.382001e+01
-4 328     3.290997e+01 -5.138600e+02
-5 328     6.354399e+02 -8.708002e+01
-6 328     -2.352000e+02 6.368400e+02
-8 328     7.349976e+00 2.505200e+02
-9 328     -2.288200e+02 3.498300e+02
-11 328     3.530699e+02 -2.076500e+02
-12 328     -6.846997e+01 6.022400e+02
-14 328     5.370000e+02 -1.707700e+02
-0 329     5.442500e+02 2.191100e+02
-1 329     8.395800e+02 7.838000e+01
-2 329     4.213101e+02 1.741100e+02
-3 329     2.842500e+02 -1.441000e+02
-7 329     3.667200e+02 3.815200e+02
-8 329     4.059500e+02 1.175900e+02
-9 329     2.211100e+02 2.429600e+02
-10 329     5.200699e+02 4.553600e+02
-11 329     6.768000e+02 -5.052100e+02
-13 329     7.402500e+02 -1.283002e+01
-15 329     7.037800e+02 5.173700e+02
-0 330     -2.756200e+02 4.454600e+02
-1 330     8.366998e+01 5.225300e+02
-2 330     -5.568500e+02 1.944100e+02
-8 330     -3.772300e+02 1.414800e+02
-0 331     -3.790700e+02 3.525100e+02
-1 331     -3.926001e+01 4.571100e+02
-2 331     -6.636800e+02 7.556000e+01
-5 331     1.821002e+01 -3.061700e+02
-7 331     -5.878700e+02 3.714900e+02
-8 331     -4.632500e+02 4.650000e+01
-11 331     -1.913800e+02 -3.960300e+02
-12 331     -7.084300e+02 2.708200e+02
-13 331     -1.124300e+02 2.551001e+01
-14 331     -6.352002e+01 -3.985600e+02
-15 331     -5.904500e+02 5.702300e+02
-0 332     -3.092900e+02 3.920100e+02
-1 332     3.800000e+01 4.781300e+02
-2 332     -5.895700e+02 1.274100e+02
-4 332     -2.388000e+01 -1.737700e+02
-5 332     9.226001e+01 -2.647400e+02
-7 332     -5.204800e+02 4.210400e+02
-12 332     -6.316700e+02 3.316300e+02
-13 332     -5.397998e+01 6.201001e+01
-14 332     1.045001e+01 -3.562800e+02
-0 333     -5.341300e+02 3.304900e+02
-1 333     -1.913800e+02 4.729700e+02
-4 333     -3.803998e+01 -4.675000e+01
-5 333     -1.401800e+02 -3.261100e+02
-10 333     -7.756700e+02 4.853000e+02
-11 333     -3.292000e+02 -4.124800e+02
-13 333     -2.391300e+02 2.500000e-01
-14 333     -2.211500e+02 -4.223300e+02
-15 333     -8.053500e+02 5.193700e+02
-0 334     -2.931100e+02 3.838400e+02
-1 334     5.190997e+01 4.669100e+02
-2 334     -5.725800e+02 1.177500e+02
-4 334     -2.948999e+01 -1.809200e+02
-5 334     1.076100e+02 -2.738900e+02
-7 334     -5.041000e+02 4.148000e+02
-8 334     -3.897800e+02 8.057999e+01
-10 334     -4.848500e+02 5.701100e+02
-12 334     -6.122600e+02 3.245500e+02
-14 334     2.464001e+01 -3.637200e+02
-0 335     -3.465500e+02 3.961100e+02
-1 335     2.599976e+00 4.912700e+02
-2 335     -6.290400e+02 1.320600e+02
-4 335     -1.812000e+01 -1.532300e+02
-5 335     5.559003e+01 -2.596100e+02
-7 335     -5.604900e+02 4.214800e+02
-8 335     -4.354800e+02 9.188000e+01
-10 335     -5.514000e+02 5.814400e+02
-11 335     -1.607600e+02 -3.583400e+02
-12 335     -6.767400e+02 3.311900e+02
-13 335     -8.526001e+01 6.444000e+01
-14 335     -2.738000e+01 -3.514400e+02
-0 336     -5.365800e+02 4.463500e+02
-1 336     -1.676700e+02 5.833900e+02
-5 336     -1.239700e+02 -2.021500e+02
-7 336     -7.691900e+02 4.545100e+02
-11 336     -3.215200e+02 -3.122800e+02
-14 336     -2.066400e+02 -2.978700e+02
-0 337     -4.297100e+02 4.486500e+02
-1 337     -6.595001e+01 5.618800e+02
-2 337     -7.196100e+02 1.992500e+02
-5 337     -1.971002e+01 -2.018700e+02
-8 337     -5.094000e+02 1.421500e+02
-12 337     -7.860800e+02 3.850300e+02
-14 337     -1.031900e+02 -2.957700e+02
-0 338     -4.169300e+02 4.488500e+02
-1 338     -5.362000e+01 5.591600e+02
-2 338     -7.057700e+02 1.993400e+02
-5 338     -6.950012e+00 -2.013300e+02
-12 338     -7.706900e+02 3.871500e+02
-14 338     -9.071997e+01 -2.950100e+02
-0 339     -2.633400e+02 4.381700e+02
-1 339     9.389001e+01 5.122700e+02
-7 339     -4.810400e+02 4.756600e+02
-0 340     -5.653700e+02 3.420700e+02
-1 340     -2.181600e+02 4.915900e+02
-5 340     -1.695800e+02 -3.117500e+02
-7 340     -7.846400e+02 3.380800e+02
-10 340     -8.174900e+02 4.971000e+02
-13 340     -2.643100e+02 9.669983e+00
-14 340     -2.510800e+02 -4.088900e+02
-15 340     -8.514600e+02 5.314300e+02
-0 341     -5.227900e+02 2.891500e+02
-1 341     -1.903200e+02 4.318900e+02
-5 341     -1.354100e+02 -3.717000e+02
-7 341     -7.300600e+02 2.856600e+02
-8 341     -5.946300e+02 -2.401999e+01
-10 341     -7.539200e+02 4.344600e+02
-11 341     -3.232300e+02 -4.490200e+02
-14 341     -2.162900e+02 -4.685400e+02
-15 341     -7.805900e+02 4.620600e+02
-0 342     -2.669400e+02 4.232500e+02
-1 342     8.663000e+01 4.985100e+02
-2 342     -5.465500e+02 1.673700e+02
-5 342     1.376600e+02 -2.314300e+02
-7 342     -4.827600e+02 4.593800e+02
-8 342     -3.686100e+02 1.202700e+02
-11 342     -8.972998e+01 -3.344100e+02
-12 342     -5.884400e+02 3.776100e+02
-14 342     5.295001e+01 -3.215900e+02
-0 343     -2.886900e+02 4.420400e+02
-1 343     6.996997e+01 5.226300e+02
-2 343     -5.697800e+02 1.905900e+02
-5 343     1.177300e+02 -2.111500e+02
-7 343     -5.074000e+02 4.772100e+02
-8 343     -3.880400e+02 1.379300e+02
-11 343     -1.082200e+02 -3.178300e+02
-12 343     -6.170700e+02 3.972900e+02
-13 343     -3.785999e+01 1.069800e+02
-14 343     3.303998e+01 -3.018800e+02
-0 344     -4.695800e+02 3.515900e+02
-1 344     -1.266900e+02 4.773900e+02
-7 344     -6.817000e+02 3.596400e+02
-0 345     -4.340500e+02 3.965300e+02
-1 345     -8.194000e+01 5.126900e+02
-4 345     -1.046997e+01 -1.069000e+02
-5 345     -3.094000e+01 -2.570500e+02
-7 345     -6.518200e+02 4.121600e+02
-8 345     -5.129400e+02 8.956000e+01
-10 345     -6.601300e+02 5.747600e+02
-11 345     -2.373800e+02 -3.564000e+02
-12 345     -7.826100e+02 3.183900e+02
-13 345     -1.551900e+02 6.187000e+01
-14 345     -1.130700e+02 -3.505900e+02
-0 346     -5.578100e+02 3.826000e+02
-1 346     -2.013700e+02 5.276900e+02
-4 346     -8.469971e+00 -4.221997e+01
-5 346     -1.523300e+02 -2.693300e+02
-11 346     -3.439200e+02 -3.663800e+02
-13 346     -2.545500e+02 4.509998e+01
-0 347     -3.046500e+02 3.981000e+02
-1 347     4.395001e+01 4.834000e+02
-2 347     -5.849000e+02 1.346300e+02
-4 347     -2.071002e+01 -1.764100e+02
-5 347     9.758002e+01 -2.584100e+02
-7 347     -5.174300e+02 4.282000e+02
-8 347     -3.999900e+02 9.420999e+01
-10 347     -5.008800e+02 5.866100e+02
-11 347     -1.235300e+02 -3.566900e+02
-12 347     -6.282700e+02 3.397800e+02
-13 347     -5.140997e+01 6.796002e+01
-14 347     1.428003e+01 -3.491000e+02
-0 348     -3.837400e+02 3.828800e+02
-1 348     -3.776001e+01 4.876500e+02
-5 348     1.923999e+01 -2.726300e+02
-7 348     -5.967600e+02 4.037500e+02
-10 348     -5.957600e+02 5.618800e+02
-11 348     -1.945000e+02 -3.692400e+02
-14 348     -6.346002e+01 -3.652700e+02
-0 349     -3.095300e+02 3.594800e+02
-1 349     3.001001e+01 4.466300e+02
-2 349     -5.897300e+02 8.600000e+01
-4 349     -4.169000e+01 -1.689400e+02
-5 349     8.785999e+01 -3.003000e+02
-7 349     -5.173000e+02 3.871700e+02
-10 349     -5.016100e+02 5.393000e+02
-11 349     -1.293700e+02 -3.908200e+02
-12 349     -6.282600e+02 2.904400e+02
-13 349     -5.657001e+01 3.420001e+01
-0 350     -4.067900e+02 4.235300e+02
-1 350     -4.909998e+01 5.322000e+02
-2 350     -6.931800e+02 1.677500e+02
-5 350     -9.997559e-02 -2.290000e+02
-7 350     -6.265400e+02 4.443300e+02
-8 350     -4.880700e+02 1.177900e+02
-10 350     -6.301100e+02 6.106800e+02
-11 350     -2.120000e+02 -3.332000e+02
-12 350     -7.529800e+02 3.571200e+02
-14 350     -8.295001e+01 -3.216600e+02
-0 351     -3.573200e+02 4.336400e+02
-1 351     7.199707e-01 5.306700e+02
-2 351     -6.424500e+02 1.799200e+02
-4 351     3.799988e+00 -1.515600e+02
-5 351     4.957001e+01 -2.189600e+02
-7 351     -5.772400e+02 4.606100e+02
-8 351     -4.460000e+02 1.292900e+02
-11 351     -1.684300e+02 -3.250500e+02
-12 351     -6.968000e+02 3.773800e+02
-14 351     -3.450000e+01 -3.110700e+02
-0 352     4.651200e+02 3.125500e+02
-1 352     8.009301e+02 1.959600e+02
-6 352     1.626900e+02 4.250500e+02
-7 352     2.633000e+02 4.495900e+02
-10 352     4.200900e+02 5.590200e+02
-11 352     5.889100e+02 -4.151100e+02
-12 352     2.756801e+02 4.195600e+02
-13 352     6.289000e+02 5.178998e+01
-14 352     8.680900e+02 -4.013400e+02
-0 353     -2.005400e+02 3.809300e+02
-1 353     1.427800e+02 4.405800e+02
-7 353     -4.102800e+02 4.227100e+02
-14 353     1.148500e+02 -3.662800e+02
-0 354     -2.126300e+02 3.498200e+02
-1 354     1.233800e+02 4.129800e+02
-2 354     -4.879400e+02 7.590002e+01
-5 354     1.847700e+02 -3.120700e+02
-7 354     -4.175700e+02 3.885400e+02
-10 354     -3.827200e+02 5.359100e+02
-11 354     -4.203998e+01 -3.998700e+02
-12 354     -5.133200e+02 2.950000e+02
-14 354     1.017800e+02 -4.007800e+02
-15 354     -3.572500e+02 5.880500e+02
-0 355     -1.818100e+02 3.305100e+02
-1 355     1.496300e+02 3.858700e+02
-5 355     2.138300e+02 -3.338600e+02
-7 355     -3.842000e+02 3.717300e+02
-14 355     1.311900e+02 -4.221000e+02
-15 355     -3.114200e+02 5.648000e+02
-0 356     4.688300e+02 2.972100e+02
-1 356     8.000500e+02 1.788700e+02
-6 356     1.717100e+02 4.079800e+02
-7 356     2.691700e+02 4.353200e+02
-10 356     4.253900e+02 5.411600e+02
-11 356     5.955200e+02 -4.298500e+02
-12 356     2.837200e+02 4.043800e+02
-0 357     -1.163100e+02 1.610000e+02
-1 357     1.540699e+02 2.060400e+02
-0 358     5.646500e+02 1.573300e+02
-1 358     8.417500e+02 6.669983e+00
-2 358     4.588300e+02 1.198800e+02
-6 358     3.696000e+02 2.981100e+02
-7 358     3.948800e+02 3.248200e+02
-8 358     4.363700e+02 7.166000e+01
-9 358     2.541100e+02 1.979000e+02
-10 358     5.489600e+02 3.847600e+02
-12 358     4.567500e+02 3.073700e+02
-13 358     7.669000e+02 -6.402002e+01
-15 358     7.395300e+02 4.333400e+02
-0 359     -1.346000e+02 1.004300e+02
-1 359     8.706000e+01 1.587100e+02
-0 360     1.808400e+02 7.787000e+01
-1 360     3.629399e+02 5.260999e+01
-10 360     1.082500e+02 2.504700e+02
-0 361     2.118600e+02 2.583002e+01
-1 361     3.770000e+02 -8.460022e+00
-7 361     1.198100e+02 1.735000e+02
-0 362     2.324500e+02 1.895001e+01
-1 362     3.965000e+02 -2.171002e+01
-10 362     1.738600e+02 1.870000e+02
-15 362     2.798500e+02 1.950100e+02
-0 363     2.394000e+02 8.409973e+00
-1 363     4.006200e+02 -3.447998e+01
-2 363     3.739399e+02 7.865002e+01
-6 363     2.147500e+02 9.991998e+01
-7 363     1.489100e+02 1.602600e+02
-10 363     1.829700e+02 1.755500e+02
-12 363     2.450200e+02 1.450800e+02
-15 363     2.905400e+02 1.814200e+02
-0 364     2.379200e+02 4.460022e+00
-1 364     3.975200e+02 -3.803003e+01
-6 364     2.153100e+02 9.621997e+01
-7 364     1.478700e+02 1.562500e+02
-12 364     2.444200e+02 1.410100e+02
-13 364     5.770400e+02 -1.990200e+02
-15 364     2.883199e+02 1.758900e+02
-0 365     2.871200e+02 5.590027e+00
-1 365     4.516100e+02 -5.294000e+01
-10 365     2.383600e+02 1.773100e+02
-12 365     2.906500e+02 1.485500e+02
-15 365     3.578600e+02 1.842300e+02
-0 366     2.328300e+02 -5.090027e+00
-1 366     3.888500e+02 -4.570001e+01
-7 366     1.453500e+02 1.460000e+02
-0 367     5.679100e+02 -1.303998e+01
-1 367     7.919800e+02 -1.736700e+02
-6 367     4.186600e+02 1.057900e+02
-7 367     4.209100e+02 1.600100e+02
-10 367     5.666700e+02 1.860900e+02
-12 367     5.032100e+02 1.170900e+02
-13 367     7.896600e+02 -2.163800e+02
-15 367     7.639100e+02 1.960700e+02
-0 368     2.408300e+02 -1.958002e+01
-1 368     3.929500e+02 -6.283002e+01
-7 368     1.550800e+02 1.332100e+02
-10 368     1.865700e+02 1.430100e+02
-15 368     2.961600e+02 1.434900e+02
-0 369     1.419200e+02 -3.238000e+01
-1 369     2.867800e+02 -4.452002e+01
-2 369     3.105601e+02 3.192999e+01
-3 369     2.125699e+02 -2.750400e+02
-6 369     1.385200e+02 3.065997e+01
-7 369     6.354999e+01 1.063500e+02
-8 369     2.847300e+02 -2.284000e+01
-10 369     7.444000e+01 1.181700e+02
-12 369     1.566100e+02 7.954999e+01
-15 369     1.615300e+02 1.124900e+02
-0 370     2.244700e+02 -3.670001e+01
-1 370     3.701600e+02 -7.479999e+01
-6 370     2.184900e+02 4.852002e+01
-7 370     1.429200e+02 1.144600e+02
-10 370     1.700800e+02 1.222400e+02
-15 370     2.755300e+02 1.178900e+02
-0 371     6.062800e+02 -4.853998e+01
-1 371     8.206000e+02 -2.234000e+02
-8 371     5.187900e+02 -8.857001e+01
-10 371     6.143900e+02 1.489900e+02
-12 371     5.577300e+02 9.309003e+01
-15 371     8.219100e+02 1.523100e+02
-0 372     5.569000e+01 -7.071002e+01
-1 372     1.919399e+02 -5.658002e+01
-8 372     2.209100e+02 -7.463000e+01
-13 372     4.322900e+02 -2.776700e+02
-0 373     6.385601e+02 -7.996002e+01
-1 373     8.443700e+02 -2.672600e+02
-2 373     6.068700e+02 -8.796997e+01
-3 373     4.790500e+02 -3.918600e+02
-7 373     4.997300e+02 1.099200e+02
-8 373     5.563600e+02 -1.026200e+02
-10 373     6.546700e+02 1.158800e+02
-12 373     6.037600e+02 7.117999e+01
-13 373     8.728101e+02 -2.674900e+02
-15 373     8.710000e+02 1.131900e+02
-0 374     8.717999e+01 -9.910999e+01
-1 374     2.140500e+02 -9.365002e+01
-4 374     -3.565200e+02 -4.805800e+02
-7 374     2.029999e+01 3.001001e+01
-12 374     1.121900e+02 -1.502002e+01
-13 374     4.636000e+02 -3.005800e+02
-15 374     9.634998e+01 1.439001e+01
-0 375     6.598800e+02 -8.965002e+01
-1 375     8.638199e+02 -2.850900e+02
-2 375     6.334200e+02 -8.566998e+01
-6 375     5.528199e+02 5.942999e+01
-7 375     5.219000e+02 1.050400e+02
-10 375     6.802000e+02 1.070400e+02
-12 375     6.312100e+02 6.896002e+01
-0 376     1.337900e+02 -1.142800e+02
-1 376     2.556600e+02 -1.231400e+02
-2 376     3.271400e+02 -6.101001e+01
-3 376     2.328900e+02 -3.635300e+02
-6 376     1.529900e+02 -6.546997e+01
-8 376     2.963300e+02 -9.945001e+01
-10 376     7.362000e+01 2.266998e+01
-15 376     1.622000e+02 5.999756e-02
-0 377     1.441899e+02 -2.469100e+02
-1 377     2.213199e+02 -2.556700e+02
-4 377     -4.844200e+02 -5.313000e+02
-7 377     1.041000e+02 -1.045600e+02
-10 377     9.938000e+01 -1.290300e+02
-15 377     1.927000e+02 -1.783000e+02
-0 378     1.492600e+02 -2.686000e+02
-1 378     2.226300e+02 -2.795200e+02
-0 379     3.262400e+02 -5.118500e+02
-1 379     3.308000e+02 -5.815900e+02
-10 379     3.359399e+02 -4.118900e+02
-0 380     -1.965800e+02 3.769900e+02
-1 380     1.458400e+02 4.357600e+02
-2 380     -4.733300e+02 1.096400e+02
-5 380     2.027000e+02 -2.828100e+02
-7 380     -4.052500e+02 4.186400e+02
-14 380     1.188000e+02 -3.713100e+02
-0 381     -1.965800e+02 3.769900e+02
-1 381     1.458400e+02 4.357600e+02
-2 381     -4.733300e+02 1.096400e+02
-5 381     2.027000e+02 -2.828100e+02
-7 381     -4.052500e+02 4.186400e+02
-14 381     1.188000e+02 -3.713100e+02
-0 382     4.910000e+02 3.664200e+02
-1 382     8.455200e+02 2.467400e+02
-2 382     2.787400e+02 2.502900e+02
-3 382     1.383000e+02 -7.588000e+01
-6 382     1.827400e+02 4.954100e+02
-7 382     2.821700e+02 5.069200e+02
-8 382     2.962500e+02 1.851800e+02
-9 382     9.396002e+01 3.020300e+02
-11 382     6.040000e+02 -3.624400e+02
-12 382     2.936500e+02 4.882000e+02
-13 382     6.498101e+02 1.011100e+02
-0 383     -1.997300e+02 3.489900e+02
-1 383     1.362700e+02 4.088000e+02
-5 383     1.974900e+02 -3.130400e+02
-7 383     -4.044700e+02 3.893600e+02
-8 383     -3.093400e+02 4.901001e+01
-10 383     -3.675100e+02 5.359200e+02
-14 383     1.144600e+02 -4.016800e+02
-0 384     4.610900e+02 3.292400e+02
-1 384     8.020900e+02 2.147000e+02
-6 384     1.534000e+02 4.416900e+02
-7 384     2.569900e+02 4.650300e+02
-8 384     2.747800e+02 1.447000e+02
-10 384     4.139000e+02 5.789200e+02
-11 384     5.828000e+02 -3.992700e+02
-12 384     2.672300e+02 4.352900e+02
-13 384     6.234100e+02 6.528998e+01
-14 384     8.598900e+02 -3.839500e+02
-0 385     -4.001400e+02 3.083900e+02
-1 385     -6.973999e+01 4.199100e+02
-7 385     -6.035100e+02 3.219000e+02
-8 385     -4.812800e+02 2.999878e-02
-11 385     -2.123500e+02 -4.348900e+02
-12 385     -7.261400e+02 2.109500e+02
-15 385     -6.118900e+02 5.057100e+02
-0 386     4.747100e+02 3.002200e+02
-1 386     8.067500e+02 1.807400e+02
-8 386     2.920500e+02 1.263000e+02
-0 387     1.025600e+02 1.854000e+02
-1 387     3.310500e+02 1.789900e+02
-15 387     8.379999e+01 4.051300e+02
-0 388     -1.405900e+02 1.010700e+02
-1 388     8.140002e+01 1.611000e+02
-2 388     -1.498900e+02 -7.479980e+00
-3 388     -2.425900e+02 -3.277500e+02
-5 388     3.975800e+02 -5.705800e+02
-6 388     -3.310800e+02 4.853003e+01
-7 388     -2.670200e+02 1.748200e+02
-10 388     -2.682900e+02 2.448300e+02
-12 388     -2.732300e+02 1.027100e+02
-13 388     1.903101e+02 -1.596000e+02
-15 388     -2.327500e+02 2.548800e+02
-0 389     5.276400e+02 1.122500e+02
-1 389     7.893000e+02 -2.978998e+01
-6 389     3.339300e+02 2.321200e+02
-8 389     4.105500e+02 1.876001e+01
-10 389     5.091500e+02 3.278700e+02
-12 389     4.234800e+02 2.420900e+02
-13 389     7.336600e+02 -1.091200e+02
-15 389     6.928000e+02 3.640600e+02
-0 390     -2.801500e+02 7.689001e+01
-1 390     -3.215002e+01 1.707600e+02
-0 391     7.131000e+01 8.439001e+01
-1 391     2.560800e+02 9.088000e+01
-2 391     1.857200e+02 1.202000e+02
-3 391     8.907001e+01 -1.945600e+02
-4 391     -2.234800e+02 -4.680200e+02
-5 391     7.113300e+02 -5.725300e+02
-6 391     1.098999e+01 1.340300e+02
-7 391     -2.912000e+01 2.084100e+02
-8 391     1.859000e+02 5.322000e+01
-10 391     -1.965997e+01 2.463600e+02
-12 391     3.347998e+01 1.875000e+02
-13 391     4.233199e+02 -1.444500e+02
-15 391     5.085999e+01 2.622300e+02
-0 392     5.550100e+02 8.695001e+01
-1 392     8.098000e+02 -6.457001e+01
-6 392     3.751600e+02 2.139700e+02
-7 392     3.947900e+02 2.545300e+02
-8 392     4.412700e+02 7.700012e+00
-12 392     4.622900e+02 2.236800e+02
-13 392     7.648900e+02 -1.273000e+02
-15 392     7.341899e+02 3.334300e+02
-0 393     5.449700e+02 8.473001e+01
-1 393     7.987700e+02 -6.409998e+01
-6 393     3.638600e+02 2.079100e+02
-7 393     3.851100e+02 2.503700e+02
-8 393     4.326600e+02 1.950012e+00
-10 393     5.316801e+02 2.976600e+02
-15 393     7.205000e+02 3.284900e+02
-0 394     5.759000e+02 8.564001e+01
-1 394     8.308900e+02 -7.270001e+01
-6 394     4.021600e+02 2.222100e+02
-9 394     2.827000e+02 1.422600e+02
-12 394     4.876500e+02 2.323400e+02
-0 395     1.180900e+02 6.912000e+01
-1 395     2.961300e+02 6.254999e+01
-4 395     -2.393300e+02 -5.063700e+02
-5 395     7.720601e+02 -5.888600e+02
-6 395     7.129999e+01 1.330000e+02
-7 395     2.154999e+01 2.016600e+02
-8 395     2.325100e+02 5.167001e+01
-9 395     8.815002e+01 1.937100e+02
-12 395     9.492999e+01 1.852200e+02
-13 395     4.683800e+02 -1.528000e+02
-15 395     1.164800e+02 2.477800e+02
-0 396     1.997800e+02 6.828003e+01
-1 396     3.792100e+02 3.723999e+01
-7 396     1.002700e+02 2.126000e+02
-10 396     1.315800e+02 2.415800e+02
-13 396     5.354800e+02 -1.479500e+02
-15 396     2.285400e+02 2.581300e+02
-0 397     2.140601e+02 6.432001e+01
-1 397     3.929000e+02 2.898999e+01
-2 397     3.282200e+02 1.257200e+02
-3 397     2.215699e+02 -1.863600e+02
-6 397     1.675700e+02 1.529900e+02
-7 397     1.146100e+02 2.107900e+02
-8 397     3.057000e+02 5.770001e+01
-10 397     1.482700e+02 2.377600e+02
-12 397     1.989301e+02 2.002800e+02
-13 397     5.470699e+02 -1.503700e+02
-15 397     2.490100e+02 2.546300e+02
-0 398     1.500244e-01 2.259003e+01
-1 398     1.686600e+02 5.064001e+01
-4 398     -2.571400e+02 -4.117300e+02
-6 398     -4.747998e+01 4.159003e+01
-8 398     1.398500e+02 -1.185001e+01
-10 398     -9.584003e+01 1.669300e+02
-15 398     -3.784998e+01 1.675900e+02
-0 399     2.468000e+02 1.119000e+01
-1 399     4.095100e+02 -3.407001e+01
-10 399     1.909500e+02 1.794200e+02
-13 399     5.820000e+02 -1.931000e+02
-15 399     3.009200e+02 1.862700e+02
-0 400     1.271500e+02 -7.719971e+00
-1 400     2.796300e+02 -1.547998e+01
-2 400     2.871400e+02 5.365002e+01
-3 400     1.888101e+02 -2.556800e+02
-4 400     -2.951100e+02 -5.156500e+02
-7 400     4.475000e+01 1.283900e+02
-10 400     5.444000e+01 1.450100e+02
-15 400     1.381300e+02 1.439900e+02
-0 401     5.588700e+02 -9.400024e+00
-1 401     7.837900e+02 -1.669400e+02
-7 401     4.113600e+02 1.618000e+02
-13 401     7.799500e+02 -2.143900e+02
-15 401     7.508300e+02 1.996800e+02
-0 402     3.372800e+02 -1.813000e+01
-1 402     5.023600e+02 -9.378998e+01
-10 402     2.991300e+02 1.550900e+02
-0 403     5.610601e+02 -1.765002e+01
-1 403     7.834301e+02 -1.762200e+02
-7 403     4.148500e+02 1.540000e+02
-10 403     5.590900e+02 1.800600e+02
-13 403     7.833900e+02 -2.217200e+02
-15 403     7.550300e+02 1.885800e+02
-0 404     2.069900e+02 -4.919000e+01
-1 404     3.477700e+02 -8.144000e+01
-2 404     3.726100e+02 2.254999e+01
-3 404     2.696801e+02 -2.825800e+02
-4 404     -3.385700e+02 -5.803500e+02
-6 404     2.072100e+02 3.038000e+01
-7 404     1.287500e+02 9.953000e+01
-8 404     3.378700e+02 -2.998001e+01
-13 404     5.602700e+02 -2.469600e+02
-15 404     2.529600e+02 9.845001e+01
-0 405     1.694399e+02 -5.629999e+01
-1 405     3.071200e+02 -7.666998e+01
-2 405     3.438400e+02 1.178003e+01
-3 405     2.444000e+02 -2.934000e+02
-6 405     1.737400e+02 1.240997e+01
-7 405     9.392999e+01 8.694000e+01
-8 405     3.127000e+02 -3.957001e+01
-10 405     1.082600e+02 9.334998e+01
-13 405     5.302600e+02 -2.555500e+02
-15 405     2.024600e+02 8.353000e+01
-0 406     1.122998e+01 -6.876001e+01
-1 406     1.512800e+02 -4.115997e+01
-3 406     9.463000e+01 -3.546500e+02
-4 406     -3.219600e+02 -4.185600e+02
-7 406     -6.257001e+01 4.615002e+01
-8 406     1.770400e+02 -8.715997e+01
-15 406     -1.054999e+01 4.541998e+01
-0 407     2.422700e+02 -7.672998e+01
-1 407     3.765400e+02 -1.201700e+02
-6 407     2.470100e+02 8.780029e+00
-7 407     1.655200e+02 7.698999e+01
-12 407     2.741899e+02 5.015997e+01
-15 407     3.055200e+02 6.550000e+01
-0 408     -5.030029e+00 -8.703003e+01
-1 408     1.317500e+02 -5.471002e+01
-7 408     -7.646997e+01 2.434003e+01
-10 408     -8.982001e+01 3.988000e+01
-15 408     -2.921002e+01 1.854999e+01
-0 409     2.586200e+02 -8.622998e+01
-1 409     3.918000e+02 -1.353600e+02
-3 409     3.171500e+02 -3.183400e+02
-6 409     2.629000e+02 1.109985e+00
-7 409     1.819399e+02 6.965002e+01
-10 409     2.150100e+02 6.840997e+01
-12 409     2.926700e+02 4.172998e+01
-13 409     6.044600e+02 -2.771500e+02
-15 409     3.295400e+02 5.471002e+01
-0 410     2.481899e+02 -8.792999e+01
-1 410     3.800400e+02 -1.337800e+02
-2 410     4.158300e+02 -1.757001e+01
-6 410     2.549500e+02 -3.450012e+00
-7 410     1.727700e+02 6.657001e+01
-8 410     3.743800e+02 -6.237000e+01
-10 410     2.027800e+02 6.514001e+01
-12 410     2.831000e+02 3.714001e+01
-13 410     5.967200e+02 -2.791100e+02
-15 410     3.154500e+02 5.134003e+01
-0 411     2.189900e+02 -9.837000e+01
-1 411     3.466000e+02 -1.348000e+02
-8 411     3.567100e+02 -7.451001e+01
-10 411     1.701300e+02 5.008002e+01
-12 411     2.563400e+02 1.898999e+01
-15 411     2.763500e+02 3.303003e+01
-0 412     4.278199e+02 -1.082700e+02
-1 412     5.681400e+02 -2.150300e+02
-7 412     3.393700e+02 7.059003e+01
-0 413     3.969700e+02 -1.637000e+02
-1 413     5.186400e+02 -2.613200e+02
-10 413     3.813000e+02 -6.010010e+00
-15 413     5.326400e+02 -3.428998e+01
-0 414     2.960400e+02 -2.422700e+02
-1 414     3.817500e+02 -3.036100e+02
-7 414     2.430500e+02 -7.734003e+01
-10 414     2.733000e+02 -1.064800e+02
-12 414     3.793300e+02 -1.294000e+02
-15 414     4.016000e+02 -1.526500e+02
-0 415     2.572000e+02 -2.577100e+02
-1 415     3.360800e+02 -3.051500e+02
-7 415     2.104301e+02 -9.814001e+01
-10 415     2.303600e+02 -1.286900e+02
-15 415     3.500900e+02 -1.784800e+02
-0 416     2.574800e+02 -2.610400e+02
-1 416     3.358800e+02 -3.085900e+02
-12 416     3.473400e+02 -1.589800e+02
-0 417     6.233800e+02 -2.664700e+02
-1 417     7.486200e+02 -4.518600e+02
-7 417     5.275500e+02 -6.054999e+01
-12 417     6.747000e+02 -1.105100e+02
-15 417     8.681801e+02 -1.453700e+02
-0 418     6.309700e+02 -3.364500e+02
-1 418     7.272100e+02 -5.261600e+02
-7 418     5.504800e+02 -1.220900e+02
-12 418     7.160500e+02 -1.751500e+02
-0 419     -1.681200e+02 -5.286200e+02
-1 419     -1.494200e+02 -4.227200e+02
-6 419     -3.721997e+01 -6.851300e+02
-7 419     -1.622200e+02 -4.542200e+02
-0 420     -1.720100e+02 -5.345300e+02
-1 420     -1.549000e+02 -4.269500e+02
-6 420     -3.839001e+01 -6.932000e+02
-7 420     -1.658200e+02 -4.606801e+02
-9 420     6.215002e+01 -4.610100e+02
-0 421     -7.948999e+01 -5.454500e+02
-1 421     -7.477002e+01 -4.681700e+02
-4 421     -6.968300e+02 -3.231800e+02
-7 421     -6.925000e+01 -4.514900e+02
-9 421     1.519900e+02 -4.324900e+02
-0 422     1.395900e+02 -5.392500e+02
-1 422     1.345700e+02 -5.387300e+02
-0 423     -8.203003e+01 -5.528900e+02
-1 423     -7.971997e+01 -4.739900e+02
-4 423     -7.027200e+02 -3.213900e+02
-7 423     -6.988000e+01 -4.587100e+02
-9 423     1.555100e+02 -4.370500e+02
-0 424     4.792600e+02 3.800900e+02
-1 424     8.376899e+02 2.642700e+02
-2 424     2.619399e+02 2.588700e+02
-3 424     1.218300e+02 -6.837000e+01
-7 424     2.687700e+02 5.183900e+02
-9 424     7.950000e+01 3.085800e+02
-11 424     5.906600e+02 -3.496700e+02
-12 424     2.766801e+02 4.987600e+02
-0 425     4.792600e+02 3.800900e+02
-1 425     8.376899e+02 2.642700e+02
-2 425     2.619399e+02 2.588700e+02
-3 425     1.218300e+02 -6.837000e+01
-8 425     2.827700e+02 1.925700e+02
-9 425     7.950000e+01 3.085800e+02
-11 425     5.906600e+02 -3.496700e+02
-12 425     2.766801e+02 4.987600e+02
-0 426     -2.814200e+02 3.579100e+02
-1 426     5.716998e+01 4.378300e+02
-4 426     -4.465002e+01 -1.845000e+02
-5 426     1.169900e+02 -3.031500e+02
-7 426     -4.880800e+02 3.882000e+02
-8 426     -3.786200e+02 5.554999e+01
-10 426     -4.668500e+02 5.391000e+02
-11 426     -1.035100e+02 -3.933900e+02
-13 426     -3.357001e+01 3.359998e+01
-14 426     3.444000e+01 -3.931500e+02
-0 427     5.180100e+02 3.551700e+02
-1 427     8.706600e+02 2.275800e+02
-3 427     1.722100e+02 -7.491998e+01
-6 427     2.212100e+02 4.917000e+02
-7 427     3.109800e+02 5.007000e+02
-8 427     3.229700e+02 1.852000e+02
-9 427     1.234000e+02 3.035100e+02
-11 427     6.311300e+02 -3.707900e+02
-0 428     4.733500e+02 3.347900e+02
-1 428     8.166600e+02 2.175500e+02
-2 428     2.659399e+02 2.104900e+02
-3 428     1.263900e+02 -1.142800e+02
-6 428     1.679500e+02 4.532100e+02
-7 428     2.687100e+02 4.727500e+02
-8 428     2.854300e+02 1.534300e+02
-9 428     8.413000e+01 2.675600e+02
-11 428     5.925300e+02 -3.921100e+02
-13 428     6.350000e+02 7.178998e+01
-14 428     8.744000e+02 -3.760500e+02
-0 429     4.733500e+02 3.347900e+02
-1 429     8.166600e+02 2.175500e+02
-2 429     2.659399e+02 2.104900e+02
-3 429     1.263900e+02 -1.142800e+02
-6 429     1.679500e+02 4.532100e+02
-7 429     2.687100e+02 4.727500e+02
-8 429     2.854300e+02 1.534300e+02
-9 429     8.413000e+01 2.675600e+02
-11 429     5.925300e+02 -3.921100e+02
-13 429     6.350000e+02 7.178998e+01
-14 429     8.744000e+02 -3.760500e+02
-0 430     -3.957400e+02 3.032900e+02
-1 430     -6.669000e+01 4.137700e+02
-4 430     -6.584003e+01 -1.164500e+02
-5 430     -5.049988e+00 -3.605700e+02
-7 430     -5.982100e+02 3.172600e+02
-8 430     -4.770200e+02 -4.700012e+00
-10 430     -5.983200e+02 4.627500e+02
-11 430     -2.087000e+02 -4.404200e+02
-12 430     -7.200200e+02 2.053400e+02
-13 430     -1.279700e+02 -1.825000e+01
-14 430     -8.590997e+01 -4.530900e+02
-15 430     -6.048000e+02 4.989300e+02
-0 431     2.489399e+02 2.751400e+02
-1 431     5.652400e+02 2.160500e+02
-0 432     8.095001e+01 2.646400e+02
-1 432     3.879399e+02 2.525400e+02
-11 432     2.280699e+02 -4.764200e+02
-0 433     2.328101e+02 2.296000e+02
-1 433     5.303800e+02 1.753400e+02
-11 433     3.749000e+02 -5.067300e+02
-0 434     5.442500e+02 2.191100e+02
-1 434     8.395800e+02 7.838000e+01
-11 434     6.768000e+02 -5.052100e+02
-0 435     -5.703003e+01 1.797000e+02
-1 435     2.186700e+02 2.077200e+02
-0 436     -1.236900e+02 1.571500e+02
-1 436     1.458700e+02 2.043300e+02
-5 436     3.201400e+02 -5.233600e+02
-7 436     -2.865500e+02 2.127600e+02
-13 436     1.346800e+02 -1.272300e+02
-0 437     5.932800e+02 1.561500e+02
-1 437     8.714800e+02 -2.419983e+00
-3 437     3.528000e+02 -1.792000e+02
-6 437     4.064900e+02 3.053700e+02
-9 437     2.800000e+02 2.117000e+02
-13 437     7.963000e+02 -6.135999e+01
-0 438     -1.011700e+02 1.023100e+02
-1 438     1.154300e+02 1.525100e+02
-4 438     -1.983000e+02 -3.214700e+02
-5 438     4.539600e+02 -5.665601e+02
-7 438     -2.235200e+02 1.855200e+02
-12 438     -2.180300e+02 1.226200e+02
-13 438     2.327100e+02 -1.535100e+02
-15 438     -1.808000e+02 2.618300e+02
-0 439     -2.606800e+02 6.635999e+01
-1 439     -1.788000e+01 1.558100e+02
-0 440     1.009900e+02 4.615002e+01
-1 440     2.713600e+02 4.508002e+01
-4 440     -2.526500e+02 -4.936000e+02
-5 440     7.580500e+02 -6.147100e+02
-6 440     6.375000e+01 1.033700e+02
-7 440     8.739990e+00 1.768400e+02
-8 440     2.268600e+02 3.223999e+01
-10 440     1.877002e+01 2.054700e+02
-12 440     8.334003e+01 1.557600e+02
-13 440     4.571200e+02 -1.729100e+02
-15 440     9.577002e+01 2.142000e+02
-0 441     5.588400e+02 -1.130005e+00
-1 441     7.863300e+02 -1.580900e+02
-6 441     4.039700e+02 1.157900e+02
-7 441     4.103101e+02 1.697100e+02
-10 441     5.554200e+02 1.989600e+02
-13 441     7.793700e+02 -2.071700e+02
-0 442     5.636100e+02 -1.400000e+01
-1 442     7.870900e+02 -1.731400e+02
-7 442     4.168101e+02 1.581500e+02
-10 442     5.613000e+02 1.852400e+02
-13 442     7.854900e+02 -2.179100e+02
-15 442     7.581500e+02 1.942500e+02
-0 443     2.107000e+02 -2.677002e+01
-1 443     3.587200e+02 -6.009998e+01
-2 443     3.669600e+02 4.639001e+01
-3 443     2.631801e+02 -2.601600e+02
-4 443     -3.221400e+02 -5.834500e+02
-6 443     2.024800e+02 5.659998e+01
-13 443     5.602500e+02 -2.270000e+02
-15 443     2.552000e+02 1.297300e+02
-0 444     3.321500e+02 -2.804999e+01
-1 444     4.925100e+02 -1.019000e+02
-10 444     2.939900e+02 1.438200e+02
-15 444     4.253600e+02 1.440100e+02
-0 445     5.853300e+02 -4.034998e+01
-1 445     8.013101e+02 -2.080300e+02
-7 445     4.418500e+02 1.371400e+02
-10 445     5.891801e+02 1.562100e+02
-13 445     8.118000e+02 -2.390400e+02
-15 445     7.916200e+02 1.605600e+02
-0 446     5.894000e+01 -7.514001e+01
-1 446     1.937800e+02 -6.164001e+01
-7 446     -1.198999e+01 4.928998e+01
-13 446     4.354600e+02 -2.808600e+02
-15 446     5.484003e+01 4.359003e+01
-0 447     6.084003e+01 -8.995001e+01
-1 447     1.915500e+02 -7.671002e+01
-2 447     2.469200e+02 -5.247998e+01
-3 447     1.571500e+02 -3.565600e+02
-6 447     6.741998e+01 -6.210999e+01
-7 447     -7.950012e+00 3.413000e+01
-8 447     2.293800e+02 -9.227002e+01
-9 447     1.002900e+02 5.173999e+01
-10 447     -1.329999e+01 4.242999e+01
-12 447     7.827002e+01 -1.165997e+01
-13 447     4.384301e+02 -2.948300e+02
-15 447     5.940002e+01 2.323999e+01
-0 448     -2.997800e+02 -1.247800e+02
-1 448     -1.229000e+02 -1.150000e+01
-6 448     -4.849900e+02 -3.105601e+02
-7 448     -3.985600e+02 -8.901001e+01
-13 448     4.829999e+01 -3.796200e+02
-0 449     -2.964100e+02 -1.297500e+02
-1 449     -1.213100e+02 -1.657001e+01
-0 450     -3.142600e+02 -1.516100e+02
-1 450     -1.456600e+02 -3.177002e+01
-8 450     -2.112500e+02 -3.353400e+02
-15 450     -4.303200e+02 -1.120900e+02
-0 451     -9.916998e+01 -5.071100e+02
-1 451     -7.831000e+01 -4.259500e+02
-4 451     -6.563100e+02 -3.065200e+02
-6 451     2.615997e+01 -6.306801e+02
-9 451     1.084000e+02 -4.134300e+02
-0 452     -1.916400e+02 3.504900e+02
-1 452     1.442300e+02 4.081100e+02
-5 452     2.057000e+02 -3.109900e+02
-7 452     -3.969100e+02 3.912100e+02
-8 452     -3.033500e+02 5.253000e+01
-12 452     -4.904400e+02 3.008100e+02
-13 452     3.788000e+01 3.231000e+01
-14 452     1.223000e+02 -3.994500e+02
-0 453     5.126700e+02 3.307700e+02
-1 453     8.569399e+02 2.028600e+02
-3 453     1.721200e+02 -1.002300e+02
-6 453     2.202200e+02 4.613400e+02
-7 453     3.085400e+02 4.761200e+02
-8 453     3.228100e+02 1.634500e+02
-9 453     1.231900e+02 2.795700e+02
-10 453     4.734000e+02 5.850400e+02
-12 453     3.277800e+02 4.557300e+02
-13 453     6.743101e+02 7.250000e+01
-0 454     5.010300e+02 2.699100e+02
-1 454     8.248500e+02 1.411900e+02
-6 454     2.212400e+02 3.882500e+02
-7 454     3.053800e+02 4.148200e+02
-8 454     3.241600e+02 1.102900e+02
-10 454     4.661100e+02 5.124500e+02
-12 454     3.291300e+02 3.859100e+02
-13 454     6.693800e+02 1.965002e+01
-15 454     6.407000e+02 5.810500e+02
-0 455     2.097100e+02 2.391700e+02
-1 455     5.102800e+02 1.911900e+02
-10 455     1.278100e+02 4.448500e+02
-0 456     5.849600e+02 1.399100e+02
-1 456     8.575800e+02 -1.781000e+01
-2 456     4.862300e+02 1.123900e+02
-3 456     3.498300e+02 -2.011300e+02
-6 456     3.995200e+02 2.855800e+02
-7 456     4.171100e+02 3.122100e+02
-8 456     4.584399e+02 6.438000e+01
-9 456     2.773800e+02 1.927600e+02
-10 456     5.735699e+02 3.664100e+02
-12 456     4.848500e+02 2.948400e+02
-15 456     7.698000e+02 4.121400e+02
-0 457     5.608000e+02 1.233600e+02
-1 457     8.270000e+02 -2.825000e+01
-2 457     4.633700e+02 8.251001e+01
-3 457     3.286700e+02 -2.308800e+02
-6 457     3.735800e+02 2.566400e+02
-7 457     3.954900e+02 2.909800e+02
-8 457     4.394399e+02 4.067999e+01
-9 457     2.586200e+02 1.665300e+02
-10 457     5.471300e+02 3.446300e+02
-12 457     4.605000e+02 2.662500e+02
-13 457     7.666300e+02 -9.508002e+01
-15 457     7.380400e+02 3.847400e+02
-0 458     5.260100e+02 1.044000e+02
-1 458     7.854200e+02 -3.765997e+01
-6 458     3.314500e+02 2.241000e+02
-7 458     3.629700e+02 2.660300e+02
-10 458     5.077100e+02 3.183400e+02
-12 458     4.216200e+02 2.334300e+02
-15 458     6.916700e+02 3.528900e+02
-0 459     2.668300e+02 1.025000e+02
-1 459     4.641899e+02 5.044000e+01
-6 459     1.915800e+02 2.022300e+02
-7 459     1.541600e+02 2.526700e+02
-10 459     2.059500e+02 2.880700e+02
-12 459     2.332000e+02 2.446400e+02
-13 459     5.772900e+02 -1.168500e+02
-15 459     3.186500e+02 3.147000e+02
-0 460     -2.902500e+02 6.751001e+01
-1 460     -4.489001e+01 1.648400e+02
-2 460     -4.304300e+02 -1.885100e+02
-4 460     -2.075200e+02 -1.697700e+02
-7 460     -4.352100e+02 1.006600e+02
-8 460     -2.909300e+02 -1.709300e+02
-13 460     9.000000e+00 -2.132000e+02
-15 460     -4.246200e+02 1.888700e+02
-0 461     -2.667400e+02 4.997998e+01
-1 461     -2.937000e+01 1.420300e+02
-2 461     -3.893800e+02 -1.972400e+02
-4 461     -2.209300e+02 -1.843400e+02
-7 461     -4.065600e+02 8.719000e+01
-13 461     3.467999e+01 -2.265600e+02
-15 461     -3.895300e+02 1.680100e+02
-0 462     5.466400e+02 4.350000e+01
-1 462     7.876600e+02 -1.077000e+02
-6 462     3.760300e+02 1.616400e+02
-7 462     3.919600e+02 2.106300e+02
-10 462     5.368600e+02 2.497700e+02
-12 462     4.629301e+02 1.725000e+02
-13 462     7.610300e+02 -1.677500e+02
-15 462     7.274200e+02 2.714000e+02
-0 463     6.003300e+02 4.421002e+01
-1 463     8.433600e+02 -1.237000e+02
-7 463     4.453000e+02 2.219700e+02
-8 463     4.930300e+02 -1.048001e+01
-10 463     6.013800e+02 2.565100e+02
-15 463     8.040900e+02 2.809900e+02
-0 464     6.378000e+02 -1.397998e+01
-1 464     8.644600e+02 -1.974000e+02
-0 465     6.451200e+02 -2.159003e+01
-1 465     8.698199e+02 -2.077600e+02
-2 465     5.976200e+02 -2.247998e+01
-3 465     4.658600e+02 -3.279000e+02
-6 465     5.165500e+02 1.297000e+02
-7 465     4.983300e+02 1.672900e+02
-8 465     5.489000e+02 -4.882001e+01
-10 465     6.571899e+02 1.839700e+02
-12 465     5.968101e+02 1.397600e+02
-13 465     8.716801e+02 -2.125700e+02
-0 466     6.316200e+02 -2.251001e+01
-1 466     8.551200e+02 -2.042100e+02
-7 466     4.848199e+02 1.642600e+02
-8 466     5.358101e+02 -5.454001e+01
-10 466     6.416801e+02 1.819100e+02
-12 466     5.798900e+02 1.339800e+02
-15 466     8.534399e+02 1.926200e+02
-0 467     2.149100e+02 -2.978003e+01
-1 467     3.622200e+02 -6.452002e+01
-7 467     1.337300e+02 1.193000e+02
-10 467     1.586100e+02 1.289000e+02
-15 467     2.619500e+02 1.256800e+02
-0 468     6.629700e+02 -1.130700e+02
-1 468     8.595699e+02 -3.105800e+02
-7 468     5.279600e+02 8.309000e+01
-0 469     1.465400e+02 -2.935000e+02
-1 469     2.156200e+02 -3.031600e+02
-4 469     -5.255900e+02 -5.258300e+02
-7 469     1.093900e+02 -1.536800e+02
-10 469     1.066400e+02 -1.816100e+02
-15 469     2.038700e+02 -2.411400e+02
-0 470     -7.092999e+01 -5.674000e+02
-1 470     -7.472998e+01 -4.907300e+02
-7 470     -5.523999e+01 -4.705100e+02
-9 470     1.755200e+02 -4.427900e+02
-0 471     -3.925800e+02 3.104100e+02
-1 471     -6.190002e+01 4.198800e+02
-4 471     -6.173999e+01 -1.191400e+02
-5 471     -4.600220e-01 -3.520000e+02
-7 471     -5.955700e+02 3.252800e+02
-8 471     -4.741300e+02 2.850006e+00
-10 471     -5.951100e+02 4.722900e+02
-12 471     -7.170800e+02 2.154400e+02
-15 471     -6.013000e+02 5.098800e+02
-0 472     4.840000e+02 3.215500e+02
-1 472     8.234900e+02 2.007000e+02
-2 472     2.813400e+02 2.023400e+02
-6 472     1.855200e+02 4.414400e+02
-7 472     2.810000e+02 4.619300e+02
-8 472     2.978900e+02 1.464700e+02
-9 472     9.762000e+01 2.609700e+02
-10 472     4.416000e+02 5.721100e+02
-11 472     6.053800e+02 -4.053000e+02
-12 472     2.960200e+02 4.359800e+02
-13 472     6.467100e+02 6.178003e+01
-0 473     -5.596997e+01 2.940400e+02
-1 473     2.620200e+02 3.177900e+02
-0 474     4.701100e+02 2.927400e+02
-1 474     7.998000e+02 1.736000e+02
-6 474     1.747600e+02 4.027400e+02
-7 474     2.709800e+02 4.311800e+02
-10 474     4.273900e+02 5.356700e+02
-11 474     5.984100e+02 -4.362100e+02
-12 474     2.866600e+02 3.987500e+02
-13 474     6.358600e+02 3.516998e+01
-14 474     8.785500e+02 -4.232100e+02
-0 475     4.902700e+02 2.925000e+02
-1 475     8.209500e+02 1.680700e+02
-6 475     2.012700e+02 4.103000e+02
-7 475     2.913199e+02 4.349000e+02
-8 475     3.091100e+02 1.250400e+02
-10 475     4.516200e+02 5.373600e+02
-11 475     6.167400e+02 -4.329200e+02
-12 475     3.107000e+02 4.066100e+02
-13 475     6.564900e+02 3.790002e+01
-0 476     5.095400e+02 2.713700e+02
-1 476     8.342800e+02 1.402000e+02
-6 476     2.345600e+02 3.919900e+02
-7 476     3.136600e+02 4.174300e+02
-8 476     3.314700e+02 1.139600e+02
-10 476     4.756100e+02 5.144100e+02
-11 476     6.394600e+02 -4.535400e+02
-12 476     3.398600e+02 3.897000e+02
-13 476     6.780300e+02 2.179999e+01
-0 477     5.101001e+01 2.494100e+02
-1 477     3.520699e+02 2.454000e+02
-11 477     2.004800e+02 -4.923300e+02
-0 478     3.032300e+02 1.964300e+02
-1 478     5.910000e+02 1.217800e+02
-10 478     2.394800e+02 4.038700e+02
-0 479     3.032300e+02 1.964300e+02
-1 479     5.910000e+02 1.217800e+02
-10 479     2.394800e+02 4.038700e+02
-0 480     5.531200e+02 1.886100e+02
-1 480     8.395300e+02 4.297998e+01
-2 480     4.372000e+02 1.454500e+02
-3 480     3.008000e+02 -1.705700e+02
-6 480     3.465700e+02 3.279600e+02
-7 480     3.790400e+02 3.524600e+02
-8 480     4.189600e+02 9.267999e+01
-9 480     2.347800e+02 2.186900e+02
-10 480     5.325100e+02 4.196700e+02
-12 480     4.349301e+02 3.364000e+02
-13 480     7.513101e+02 -3.842999e+01
-15 480     7.198101e+02 4.753200e+02
-0 481     9.606000e+01 9.609000e+01
-1 481     2.845100e+02 9.710999e+01
-2 481     2.033800e+02 1.337100e+02
-3 481     1.041100e+02 -1.818900e+02
-7 481     -7.070007e+00 2.230200e+02
-8 481     2.017100e+02 6.416000e+01
-12 481     5.679999e+01 2.050600e+02
-13 481     4.423500e+02 -1.340300e+02
-15 481     8.383002e+01 2.803400e+02
-0 482     1.157300e+02 6.115997e+01
-1 482     2.909600e+02 5.540002e+01
-3 482     1.434400e+02 -1.994200e+02
-7 482     2.053998e+01 1.936100e+02
-8 482     2.320700e+02 4.709000e+01
-15 482     1.141500e+02 2.363400e+02
-0 483     5.519000e+02 6.004999e+01
-1 483     7.979399e+02 -9.172998e+01
-6 483     3.789300e+02 1.823700e+02
-7 483     3.955400e+02 2.274900e+02
-12 483     4.654900e+02 1.928100e+02
-13 483     7.645000e+02 -1.521000e+02
-0 484     3.385800e+02 1.006000e+01
-1 484     5.134200e+02 -6.596002e+01
-15 484     4.303000e+02 1.972700e+02
-0 485     3.330200e+02 9.520020e+00
-1 485     5.058400e+02 -6.515997e+01
-10 485     2.915800e+02 1.868400e+02
-15 485     4.228600e+02 1.957300e+02
-0 486     1.951000e+02 -8.646997e+01
-1 486     3.252300e+02 -1.149400e+02
-3 486     2.745000e+02 -3.223000e+02
-8 486     3.379300e+02 -6.494000e+01
-15 486     2.417500e+02 4.616998e+01
-0 487     6.178101e+02 -2.824600e+02
-1 487     7.353900e+02 -4.663700e+02
-2 487     7.185800e+02 -2.293800e+02
-7 487     5.265000e+02 -7.560999e+01
-12 487     6.772900e+02 -1.271800e+02
-15 487     8.630300e+02 -1.674800e+02
-0 488     4.968300e+02 -4.150300e+02
-1 488     5.471899e+02 -5.521500e+02
-7 488     4.489200e+02 -2.155200e+02
-0 489     4.620601e+02 3.171800e+02
-1 489     7.992700e+02 2.017400e+02
-7 489     2.597300e+02 4.536800e+02
-11 489     5.846500e+02 -4.099600e+02
-13 489     6.255800e+02 5.540002e+01
-0 490     5.052300e+02 2.937700e+02
-1 490     8.369900e+02 1.653100e+02
-6 490     2.204800e+02 4.169100e+02
-7 490     3.064700e+02 4.384700e+02
-8 490     3.230700e+02 1.306400e+02
-10 490     4.693500e+02 5.410400e+02
-11 490     6.311300e+02 -4.313200e+02
-12 490     3.279500e+02 4.132400e+02
-13 490     6.715100e+02 4.033002e+01
-0 491     5.150300e+02 2.780500e+02
-1 491     8.422900e+02 1.457900e+02
-6 491     2.374100e+02 4.022400e+02
-7 491     3.182700e+02 4.250900e+02
-10 491     4.816801e+02 5.230300e+02
-12 491     3.440300e+02 3.986100e+02
-0 492     5.321997e+01 2.404100e+02
-1 492     3.508400e+02 2.365500e+02
-10 492     -5.633002e+01 4.302400e+02
-11 492     2.013000e+02 -5.004000e+02
-0 493     1.620200e+02 1.334600e+02
-1 493     3.603101e+02 1.174000e+02
-0 494     5.767000e+02 1.203300e+02
-1 494     8.428500e+02 -3.629999e+01
-2 494     4.823600e+02 8.821997e+01
-3 494     3.464200e+02 -2.246100e+02
-6 494     3.939600e+02 2.611000e+02
-7 494     4.119100e+02 2.913300e+02
-8 494     4.545400e+02 4.526999e+01
-9 494     2.747400e+02 1.721800e+02
-10 494     5.671700e+02 3.420300e+02
-12 494     4.799500e+02 2.707700e+02
-15 494     7.614800e+02 3.831300e+02
-0 495     6.238800e+02 -2.622998e+01
-1 495     8.460601e+02 -2.055600e+02
-7 495     4.780601e+02 1.585900e+02
-12 495     5.729399e+02 1.253100e+02
-13 495     8.503700e+02 -2.206900e+02
-15 495     8.439200e+02 1.860300e+02
-0 496     7.450000e+01 -7.554999e+01
-1 496     2.087600e+02 -6.629999e+01
-3 496     1.669600e+02 -3.365300e+02
-6 496     7.946997e+01 -3.940997e+01
-7 496     3.520020e+00 5.189001e+01
-8 496     2.389800e+02 -7.413000e+01
-13 496     4.504500e+02 -2.802300e+02
-15 496     7.559003e+01 4.496997e+01
-0 497     2.043700e+02 -7.975000e+01
-1 497     3.364600e+02 -1.112600e+02
-7 497     1.308100e+02 6.856000e+01
-10 497     1.508300e+02 6.959998e+01
-15 497     2.537800e+02 5.656000e+01
-0 498     2.184700e+02 3.290600e+02
-1 498     5.544399e+02 2.785100e+02
-11 498     3.565000e+02 -4.110100e+02
-0 499     5.538199e+02 9.189999e+01
-1 499     8.100300e+02 -5.890997e+01
-10 499     5.411801e+02 3.064200e+02
-12 499     4.599600e+02 2.316000e+02
-13 499     7.635699e+02 -1.230200e+02
-15 499     7.319600e+02 3.406000e+02
-0 500     6.073600e+02 -2.703600e+02
-1 500     7.292400e+02 -4.502300e+02
-7 500     5.132800e+02 -6.628998e+01
-12 500     6.590699e+02 -1.182000e+02
-0 501     -5.414300e+02 2.768800e+02
-1 501     -2.104700e+02 4.241600e+02
-7 501     -7.482800e+02 2.700500e+02
-10 501     -7.760300e+02 4.182300e+02
-11 501     -3.407900e+02 -4.607700e+02
-14 501     -2.370900e+02 -4.821600e+02
-15 501     -8.047800e+02 4.428400e+02
-0 502     -3.416400e+02 3.278400e+02
-1 502     -8.760010e+00 4.240600e+02
-5 502     5.304999e+01 -3.341600e+02
-7 502     -5.455500e+02 3.497900e+02
-11 502     -1.591700e+02 -4.188300e+02
-12 502     -6.592000e+02 2.461300e+02
-0 503     -5.241200e+02 4.458100e+02
-1 503     -1.560800e+02 5.803500e+02
-5 503     -1.117400e+02 -2.027400e+02
-7 503     -7.554500e+02 4.553800e+02
-8 503     -5.939700e+02 1.374300e+02
-14 503     -1.948800e+02 -2.983200e+02
-0 504     -5.198700e+02 4.467800e+02
-1 504     -1.519300e+02 5.801500e+02
-7 504     -7.511600e+02 4.565400e+02
-11 504     -3.080700e+02 -3.122200e+02
-14 504     -1.905900e+02 -2.976000e+02
-0 505     -5.307500e+02 3.480800e+02
-1 505     -1.850100e+02 4.889400e+02
-5 505     -1.312500e+02 -3.061300e+02
-8 505     -5.989700e+02 3.944000e+01
-11 505     -3.251300e+02 -3.975000e+02
-13 505     -2.338600e+02 1.642999e+01
-14 505     -2.129900e+02 -4.021500e+02
-15 505     -8.035600e+02 5.442300e+02
-0 506     1.310900e+02 5.681000e+02
-1 506     5.335000e+02 5.481300e+02
-2 506     -1.786800e+02 3.365900e+02
-3 506     -3.138300e+02 2.890015e+00
-4 506     4.709998e+01 -4.463800e+02
-5 506     5.337200e+02 -7.557001e+01
-6 506     -3.477600e+02 6.359500e+02
-9 506     -3.064300e+02 3.614300e+02
-11 506     2.592000e+02 -2.000300e+02
-12 506     -1.777800e+02 6.062700e+02
-13 506     2.915300e+02 2.349900e+02
-14 506     4.375100e+02 -1.611100e+02
-0 507     4.165000e+02 5.800300e+02
-1 507     8.640900e+02 4.913500e+02
-2 507     6.008002e+01 3.498300e+02
-3 507     -8.819000e+01 1.466998e+01
-5 507     8.177500e+02 -5.279999e+01
-6 507     -5.073999e+01 7.043300e+02
-9 507     -1.037700e+02 3.797800e+02
-14 507     7.121801e+02 -1.335000e+02
-0 508     2.876200e+02 5.574800e+02
-1 508     7.059700e+02 4.978600e+02
-2 508     -4.369000e+01 3.264600e+02
-3 508     -1.863000e+02 -9.979980e+00
-4 508     3.153998e+01 -5.498300e+02
-5 508     6.870300e+02 -8.212000e+01
-6 508     -1.806200e+02 6.512100e+02
-9 508     -1.915200e+02 3.548600e+02
-11 508     4.002000e+02 -2.021400e+02
-12 508     -1.538000e+01 6.131000e+02
-13 508     4.148800e+02 2.366400e+02
-0 509     3.268300e+02 5.809800e+02
-1 509     7.579800e+02 5.133800e+02
-14 509     6.243101e+02 -1.383400e+02
-0 510     2.991100e+02 5.657500e+02
-1 510     7.211801e+02 5.038200e+02
-2 510     -3.482001e+01 3.337200e+02
-4 510     3.646997e+01 -5.592900e+02
-5 510     6.997600e+02 -7.259998e+01
-6 510     -1.689700e+02 6.641500e+02
-9 510     -1.837100e+02 3.630400e+02
-11 510     4.111600e+02 -1.937600e+02
-13 510     4.237700e+02 2.437200e+02
-14 510     5.992900e+02 -1.548700e+02
-0 511     1.639000e+02 5.786700e+02
-1 511     5.731100e+02 5.504700e+02
-2 511     -1.520200e+02 3.478500e+02
-3 511     -2.882900e+02 1.340997e+01
-4 511     5.169000e+01 -4.685300e+02
-5 511     5.657100e+02 -6.364001e+01
-6 511     -3.149800e+02 6.547500e+02
-8 511     -4.521002e+01 2.704000e+02
-9 511     -2.842800e+02 3.718400e+02
-11 511     2.884800e+02 -1.896800e+02
-12 511     -1.456500e+02 6.220000e+02
-14 511     4.685500e+02 -1.488600e+02
-0 512     1.181700e+02 -3.924100e+02
-1 512     1.611899e+02 -3.903400e+02
-0 513     5.684200e+02 2.209500e+02
-1 513     8.660300e+02 7.335999e+01
-6 513     3.575200e+02 3.710300e+02
-7 513     3.899900e+02 3.874900e+02
-8 513     4.264900e+02 1.256100e+02
-10 513     5.476500e+02 4.613000e+02
-15 513     7.399100e+02 5.200300e+02
-0 514     5.007200e+02 4.029700e+02
-1 514     8.682100e+02 2.837500e+02
-3 514     1.403700e+02 -3.965002e+01
-6 514     1.867200e+02 5.385100e+02
-7 514     2.870900e+02 5.443400e+02
-8 514     2.981800e+02 2.168400e+02
-9 514     9.528998e+01 3.340400e+02
-11 514     6.066801e+02 -3.277200e+02
-0 515     3.352400e+02 4.606300e+02
-1 515     7.308600e+02 3.819600e+02
-2 515     1.044000e+01 2.219300e+02
-4 515     -3.202002e+01 -5.795400e+02
-5 515     7.415000e+02 -1.827600e+02
-6 515     -1.099200e+02 5.412200e+02
-7 515     9.770001e+01 5.621400e+02
-8 515     8.914001e+01 1.731400e+02
-9 515     -1.414500e+02 2.671000e+02
-12 515     5.277002e+01 5.102500e+02
-13 515     4.577000e+02 1.572900e+02
-14 515     6.443101e+02 -2.615100e+02
-0 516     3.702900e+02 5.021000e+02
-1 516     7.839301e+02 4.172200e+02
-2 516     3.350000e+01 2.671600e+02
-3 516     -1.126700e+02 -6.513000e+01
-5 516     7.755699e+02 -1.374000e+02
-6 516     -8.247000e+01 5.986800e+02
-8 516     1.086300e+02 2.091600e+02
-9 516     -1.236700e+02 3.072100e+02
-12 516     7.944000e+01 5.606000e+02
-13 516     4.835200e+02 1.950500e+02
-14 516     6.749800e+02 -2.158800e+02
-0 517     5.191600e+02 3.460900e+02
-1 517     8.685000e+02 2.180100e+02
-2 517     3.157500e+02 2.425800e+02
-3 517     1.748000e+02 -8.252002e+01
-7 517     3.125900e+02 4.923200e+02
-8 517     3.250200e+02 1.778800e+02
-9 517     1.255000e+02 2.963400e+02
-11 517     6.343800e+02 -3.800800e+02
-12 517     3.315400e+02 4.749600e+02
-13 517     6.796300e+02 8.731000e+01
-0 518     4.840000e+02 3.215500e+02
-1 518     8.234900e+02 2.007000e+02
-2 518     2.813400e+02 2.023400e+02
-6 518     1.855200e+02 4.414400e+02
-7 518     2.810000e+02 4.619300e+02
-8 518     2.978900e+02 1.464700e+02
-10 518     4.416000e+02 5.721100e+02
-11 518     6.053800e+02 -4.053000e+02
-13 518     6.467100e+02 6.178003e+01
-0 519     4.544000e+02 3.166200e+02
-1 519     7.909900e+02 2.029500e+02
-6 519     1.470400e+02 4.252700e+02
-7 519     2.519399e+02 4.516100e+02
-8 519     2.708800e+02 1.323200e+02
-10 519     4.070200e+02 5.628000e+02
-11 519     5.790500e+02 -4.121500e+02
-12 519     2.618199e+02 4.196700e+02
-13 519     6.178101e+02 5.371002e+01
-14 519     8.539100e+02 -3.985700e+02
-0 520     3.146400e+02 5.682200e+02
-1 520     7.393300e+02 5.025900e+02
-2 520     -2.184003e+01 3.367900e+02
-3 520     -1.647800e+02 1.950012e+00
-4 520     3.702002e+01 -5.700900e+02
-5 520     7.151500e+02 -6.946002e+01
-6 520     -1.534900e+02 6.701000e+02
-9 520     -1.728600e+02 3.660800e+02
-11 520     4.245100e+02 -1.907300e+02
-13 520     4.356600e+02 2.468200e+02
-14 520     6.141300e+02 -1.514400e+02
-0 521     5.044100e+02 4.060300e+02
-1 521     8.728600e+02 2.855500e+02
-2 521     2.847200e+02 2.939400e+02
-3 521     1.433600e+02 -3.402002e+01
-6 521     1.909300e+02 5.440500e+02
-7 521     2.907000e+02 5.473600e+02
-8 521     3.012600e+02 2.199000e+02
-11 521     6.091899e+02 -3.247200e+02
-13 521     6.591700e+02 1.354100e+02
-0 522     4.914200e+02 4.193500e+02
-1 522     8.635500e+02 3.034300e+02
-2 522     2.671801e+02 3.013700e+02
-3 522     1.256900e+02 -2.690002e+01
-6 522     1.704400e+02 5.561000e+02
-7 522     2.756100e+02 5.584100e+02
-8 522     2.869200e+02 2.269700e+02
-9 522     8.259998e+01 3.454000e+02
-11 522     5.951400e+02 -3.126700e+02
-12 522     2.822400e+02 5.447200e+02
-13 522     6.453800e+02 1.449900e+02
-0 523     4.670800e+02 3.837400e+02
-1 523     8.257700e+02 2.716400e+02
-2 523     2.466600e+02 2.572300e+02
-3 523     1.067700e+02 -7.020001e+01
-7 523     2.554301e+02 5.198200e+02
-8 523     2.705000e+02 1.915000e+02
-9 523     6.592999e+01 3.066000e+02
-11 523     5.789600e+02 -3.471500e+02
-12 523     2.617100e+02 4.983200e+02
-13 523     6.238500e+02 1.128500e+02
-14 523     8.567300e+02 -3.234700e+02
-0 524     5.823199e+02 2.087100e+02
-1 524     8.770900e+02 5.601001e+01
-2 524     4.645300e+02 1.805600e+02
-3 524     3.261000e+02 -1.369200e+02
-6 524     3.779900e+02 3.625500e+02
-7 524     4.057300e+02 3.781000e+02
-8 524     4.414900e+02 1.199900e+02
-9 524     2.574100e+02 2.491800e+02
-10 524     5.655200e+02 4.474300e+02
-11 524     7.179900e+02 -5.159200e+02
-13 524     7.785100e+02 -1.753003e+01
-15 524     7.588600e+02 5.085700e+02
-0 525     1.172998e+01 5.549800e+02
-1 525     4.042800e+02 5.623600e+02
-2 525     -2.854100e+02 3.220700e+02
-3 525     -4.175800e+02 -1.104999e+01
-4 525     4.594000e+01 -3.703100e+02
-5 525     4.167400e+02 -9.221997e+01
-6 525     -4.764500e+02 5.952900e+02
-8 525     -1.556200e+02 2.471400e+02
-11 525     1.550300e+02 -2.165200e+02
-12 525     -3.013800e+02 5.749700e+02
-13 525     1.990100e+02 2.170400e+02
-14 525     3.244000e+02 -1.791200e+02
-0 526     -2.115997e+01 1.203003e+01
-1 526     1.462300e+02 4.534003e+01
-3 526     2.245001e+01 -2.905300e+02
-7 526     -1.111400e+02 1.202600e+02
-10 526     -1.203400e+02 1.527900e+02
-15 526     -6.498999e+01 1.508000e+02
-0 527     -2.660600e+02 3.863100e+02
-1 527     7.883002e+01 4.619900e+02
-2 527     -5.442500e+02 1.199000e+02
-4 527     -3.041998e+01 -1.961200e+02
-5 527     1.348500e+02 -2.719900e+02
-7 527     -4.765800e+02 4.203100e+02
-8 527     -3.665600e+02 8.326999e+01
-10 527     -4.522000e+02 5.750800e+02
-11 527     -8.963000e+01 -3.674700e+02
-13 527     -2.085999e+01 5.890002e+01
-14 527     5.121997e+01 -3.620000e+02
-0 528     -3.153000e+02 4.062500e+02
-1 528     3.523999e+01 4.935800e+02
-2 528     -5.966100e+02 1.453500e+02
-7 528     -5.297700e+02 4.360000e+02
-10 528     -5.154900e+02 5.961900e+02
-11 528     -1.326400e+02 -3.494500e+02
-12 528     -6.421600e+02 3.488200e+02
-14 528     4.169983e+00 -3.403200e+02
-0 529     -5.645500e+02 3.069400e+02
-1 529     -2.251200e+02 4.580800e+02
-5 529     -1.745800e+02 -3.506900e+02
-15 529     -8.432800e+02 4.821000e+02
-0 530     -5.052600e+02 3.887900e+02
-1 530     -1.513800e+02 5.216900e+02
-8 530     -5.771600e+02 7.989001e+01
-14 530     -1.842900e+02 -3.590900e+02
-0 531     -4.252000e+02 3.101900e+02
-1 531     -9.251001e+01 4.271700e+02
-10 531     -6.345700e+02 4.680700e+02
-12 531     -7.581700e+02 2.080700e+02
-15 531     -6.465500e+02 5.041500e+02
-0 532     3.315200e+02 4.657300e+02
-1 532     7.279600e+02 3.881800e+02
-2 532     6.479980e+00 2.273500e+02
-3 532     -1.385500e+02 -1.044800e+02
-4 532     -2.794000e+01 -5.771899e+02
-5 532     7.370400e+02 -1.770500e+02
-6 532     -1.152400e+02 5.466200e+02
-7 532     9.366998e+01 5.672600e+02
-9 532     -1.451200e+02 2.721400e+02
-11 532     4.528199e+02 -2.789100e+02
-12 532     4.769000e+01 5.154700e+02
-14 532     6.399200e+02 -2.563000e+02
-0 533     1.181300e+02 4.194900e+02
-1 533     4.809000e+02 3.965800e+02
-2 533     -1.751100e+02 1.689300e+02
-3 533     -3.117800e+02 -1.626000e+02
-5 533     5.201200e+02 -2.338800e+02
-6 533     -3.332100e+02 4.418700e+02
-7 533     -1.025900e+02 4.977200e+02
-8 533     -6.452002e+01 1.278100e+02
-9 533     -2.963600e+02 2.145400e+02
-11 533     2.587300e+02 -3.310200e+02
-12 533     -1.640300e+02 4.308000e+02
-13 533     2.848300e+02 1.075000e+02
-14 533     4.299600e+02 -3.167900e+02
-0 534     3.352400e+02 4.606300e+02
-1 534     7.308600e+02 3.819600e+02
-2 534     1.044000e+01 2.219300e+02
-4 534     -3.202002e+01 -5.795400e+02
-5 534     7.415000e+02 -1.827600e+02
-6 534     -1.099200e+02 5.412200e+02
-7 534     9.770001e+01 5.621400e+02
-8 534     8.914001e+01 1.731400e+02
-9 534     -1.414500e+02 2.671000e+02
-11 534     4.572700e+02 -2.832000e+02
-12 534     5.277002e+01 5.102500e+02
-13 534     4.577000e+02 1.572900e+02
-14 534     6.443101e+02 -2.615100e+02
-0 535     -1.699500e+02 1.481200e+02
-1 535     9.758002e+01 2.082000e+02
-4 535     -1.733400e+02 -2.424900e+02
-5 535     2.694700e+02 -5.334100e+02
-7 535     -3.310200e+02 1.973500e+02
-9 535     -4.150600e+02 -2.106000e+01
-12 535     -3.876100e+02 8.940002e+01
-13 535     9.403003e+01 -1.380200e+02
-0 536     1.698999e+01 5.152700e+02
-1 536     3.979600e+02 5.207000e+02
-2 536     -2.764200e+02 2.778600e+02
-3 536     -4.079200e+02 -5.387000e+01
-5 536     4.217200e+02 -1.331200e+02
-6 536     -4.626000e+02 5.445600e+02
-8 536     -1.481700e+02 2.126300e+02
-11 536     1.610200e+02 -2.505500e+02
-13 536     2.033300e+02 1.839900e+02
-14 536     3.298101e+02 -2.191100e+02
-0 537     -6.969000e+01 4.670500e+02
-1 537     2.960900e+02 4.932700e+02
-2 537     -3.536400e+02 2.209800e+02
-3 537     -4.840400e+02 -1.094600e+02
-4 537     4.099731e-01 -3.158100e+02
-5 537     3.353101e+02 -1.855700e+02
-6 537     -5.512600e+02 4.636500e+02
-7 537     -2.907000e+02 5.265200e+02
-8 537     -2.109300e+02 1.662100e+02
-11 537     8.581000e+01 -2.942100e+02
-12 537     -3.735200e+02 4.592200e+02
-13 537     1.359000e+02 1.381500e+02
-14 537     2.463900e+02 -2.721700e+02
-0 538     1.676200e+02 3.628003e+01
-1 538     3.346400e+02 1.548999e+01
-2 538     3.032600e+02 1.004900e+02
-3 538     2.020900e+02 -2.110400e+02
-4 538     -2.687600e+02 -5.460000e+02
-6 538     1.350500e+02 1.146600e+02
-7 538     7.448999e+01 1.771900e+02
-8 538     2.818000e+02 3.538000e+01
-10 538     9.506000e+01 2.004100e+02
-12 538     1.591700e+02 1.624900e+02
-13 538     5.142500e+02 -1.767200e+02
-15 538     1.857700e+02 2.095200e+02
-0 539     3.371600e+02 4.397200e+02
-1 539     7.267700e+02 3.592200e+02
-2 539     1.590002e+01 1.992400e+02
-5 539     7.451600e+02 -2.052100e+02
-9 539     -1.363700e+02 2.473700e+02
-14 539     6.479100e+02 -2.835600e+02
-0 540     -1.282001e+01 -3.871002e+01
-1 540     1.381801e+02 -5.429993e+00
-2 540     1.414700e+02 -2.589001e+01
-3 540     5.739001e+01 -3.350000e+02
-6 540     -4.145001e+01 -3.269000e+01
-7 540     -9.240997e+01 7.142999e+01
-8 540     1.450700e+02 -6.814001e+01
-10 540     -1.036500e+02 9.464001e+01
-12 540     -2.910999e+01 2.133002e+01
-13 540     3.620699e+02 -2.566700e+02
-15 540     -4.650000e+01 8.272000e+01
-0 541     -4.654600e+02 3.989400e+02
-1 541     -1.114500e+02 5.223600e+02
-5 541     -6.175000e+01 -2.537300e+02
-10 541     -7.004300e+02 5.755700e+02
-12 541     -8.217700e+02 3.162800e+02
-14 541     -1.440200e+02 -3.477700e+02
-0 542     -1.008300e+02 5.394700e+02
-1 542     2.822700e+02 5.737900e+02
-4 542     4.382001e+01 -3.037200e+02
-8 542     -2.403300e+02 2.312800e+02
-11 542     5.671997e+01 -2.332500e+02
-0 543     -4.011300e+02 3.989200e+02
-1 543     -4.965002e+01 5.070600e+02
-2 543     -6.882600e+02 1.354100e+02
-7 543     -6.175900e+02 4.183500e+02
-10 543     -6.197100e+02 5.801700e+02
-11 543     -2.082900e+02 -3.549000e+02
-13 543     -1.289600e+02 6.503003e+01
-14 543     -8.060999e+01 -3.482800e+02
-0 544     -4.982000e+02 3.835000e+02
-1 544     -1.459800e+02 5.148000e+02
-5 544     -9.604999e+01 -2.696000e+02
-8 544     -5.709600e+02 7.414001e+01
-11 544     -2.940700e+02 -3.673900e+02
-0 545     -4.569700e+02 3.903600e+02
-1 545     -1.047500e+02 5.120500e+02
-4 545     -1.188000e+01 -9.303998e+01
-5 545     -5.428003e+01 -2.634700e+02
-8 545     -5.336000e+02 8.276999e+01
-11 545     -2.574400e+02 -3.614600e+02
-12 545     -8.107400e+02 3.063600e+02
-14 545     -1.358700e+02 -3.571000e+02
-0 546     3.194000e+01 5.193000e+02
-1 546     4.153800e+02 5.212200e+02
-2 546     -2.631100e+02 2.825200e+02
-3 546     -3.947100e+02 -4.965002e+01
-4 546     2.428998e+01 -3.809200e+02
-6 546     -4.465700e+02 5.532000e+02
-8 546     -1.370800e+02 2.162500e+02
-9 546     -3.762700e+02 3.109200e+02
-11 546     1.745200e+02 -2.462600e+02
-12 546     -2.731500e+02 5.361000e+02
-14 546     3.441600e+02 -2.148400e+02
-0 547     -4.891998e+01 4.394900e+02
-1 547     3.084700e+02 4.608700e+02
-2 547     -3.223600e+02 1.981800e+02
-5 547     3.609000e+02 -2.136300e+02
-6 547     -5.122600e+02 4.346400e+02
-7 547     -2.648800e+02 5.019600e+02
-11 547     1.040900e+02 -3.180600e+02
-12 547     -3.418800e+02 4.341300e+02
-14 547     2.724800e+02 -2.998300e+02
-0 548     -1.768800e+02 4.582700e+02
-1 548     1.850900e+02 5.110500e+02
-2 548     -4.577200e+02 2.103000e+02
-5 548     2.285500e+02 -1.950100e+02
-7 548     -3.963800e+02 5.060800e+02
-8 548     -2.967100e+02 1.554600e+02
-11 548     -1.025000e+01 -3.035300e+02
-12 548     -4.918500e+02 4.335800e+02
-13 548     5.065997e+01 1.252900e+02
-14 548     1.422700e+02 -2.836500e+02
-0 549     5.390015e+00 3.832700e+02
-1 549     3.533000e+02 3.895000e+02
-2 549     -2.765800e+02 1.224500e+02
-5 549     4.056700e+02 -2.752800e+02
-6 549     -4.512600e+02 3.694600e+02
-7 549     -2.063100e+02 4.484400e+02
-8 549     -1.478700e+02 8.979999e+01
-12 549     -2.773200e+02 3.706700e+02
-14 549     3.191000e+02 -3.597800e+02
-0 550     5.237000e+01 5.637500e+02
-1 550     4.486700e+02 5.619300e+02
-2 550     -2.488100e+02 3.316800e+02
-5 550     4.573600e+02 -8.179999e+01
-6 550     -4.327800e+02 6.141300e+02
-8 550     -1.255200e+02 2.556300e+02
-9 550     -3.661500e+02 3.549600e+02
-11 550     1.906600e+02 -2.075200e+02
-12 550     -2.591900e+02 5.910700e+02
-13 550     2.302500e+02 2.261900e+02
-14 550     3.628700e+02 -1.694600e+02
-0 551     1.263600e+02 4.268900e+02
-1 551     4.918000e+02 4.020300e+02
-3 551     -3.057800e+02 -1.548400e+02
-4 551     -3.802002e+01 -4.330699e+02
-7 551     -9.548999e+01 5.055300e+02
-9 551     -2.909700e+02 2.216400e+02
-11 551     2.660699e+02 -3.240500e+02
-12 551     -1.565400e+02 4.398100e+02
-0 552     3.608002e+01 1.054400e+02
-1 552     2.304399e+02 1.210100e+02
-2 552     1.329700e+02 1.242800e+02
-3 552     3.846002e+01 -1.920000e+02
-4 552     -2.061300e+02 -4.390800e+02
-5 552     6.608900e+02 -5.508600e+02
-6 552     -4.365002e+01 1.435800e+02
-7 552     -6.953003e+01 2.221000e+02
-10 552     -6.265997e+01 2.672000e+02
-13 552     3.862700e+02 -1.309300e+02
-15 552     8.900146e-01 2.860300e+02
-0 553     -1.206500e+02 1.614100e+02
-1 553     1.500699e+02 2.075200e+02
-7 553     -2.842000e+02 2.172100e+02
-13 553     1.355600e+02 -1.237800e+02
-0 554     7.070001e+01 5.805800e+02
-1 554     4.725800e+02 5.748500e+02
-2 554     -2.337300e+02 3.499000e+02
-4 554     5.732001e+01 -4.095100e+02
-5 554     4.752100e+02 -6.465997e+01
-6 554     -4.156600e+02 6.390400e+02
-8 554     -1.131000e+02 2.706000e+02
-9 554     -3.539400e+02 3.711100e+02
-11 554     2.058000e+02 -1.928300e+02
-12 554     -2.432100e+02 6.117600e+02
-13 554     2.443500e+02 2.417200e+02
-14 554     3.800900e+02 -1.513900e+02
-0 555     -1.956000e+02 4.695900e+02
-1 555     1.686600e+02 5.268000e+02
-2 555     -4.775600e+02 2.246000e+02
-4 555     1.121997e+01 -2.432300e+02
-5 555     2.107800e+02 -1.831400e+02
-7 555     -4.172400e+02 5.157300e+02
-11 555     -2.613000e+01 -2.939200e+02
-12 555     -5.156600e+02 4.444500e+02
-0 556     -1.917999e+01 8.673001e+01
-1 556     1.730800e+02 1.178200e+02
-3 556     -1.579999e+01 -2.289400e+02
-4 556     -2.131000e+02 -3.956300e+02
-5 556     5.946801e+02 -5.749000e+02
-6 556     -1.054600e+02 1.022300e+02
-7 556     -1.239300e+02 1.930300e+02
-8 556     9.547998e+01 2.754001e+01
-10 556     -1.250500e+02 2.401600e+02
-12 556     -8.151001e+01 1.576000e+02
-13 556     3.374700e+02 -1.515700e+02
-0 557     2.509003e+01 5.230300e+02
-1 557     4.084000e+02 5.268300e+02
-2 557     -2.695500e+02 2.857600e+02
-3 557     -4.012600e+02 -4.663000e+01
-4 557     2.638000e+01 -3.768300e+02
-5 557     4.304399e+02 -1.250500e+02
-6 557     -4.549300e+02 5.558300e+02
-8 557     -1.425400e+02 2.188200e+02
-9 557     -3.818800e+02 3.137000e+02
-11 557     1.675000e+02 -2.435500e+02
-14 557     3.370900e+02 -2.117800e+02
-0 558     -3.481000e+01 5.014200e+02
-1 558     3.412900e+02 5.196000e+02
-3 558     -4.534900e+02 -6.959003e+01
-4 558     1.802002e+01 -3.394800e+02
-5 558     3.705900e+02 -1.482200e+02
-6 558     -5.186000e+02 5.168800e+02
-7 558     -2.610600e+02 5.660600e+02
-11 558     1.160900e+02 -2.635600e+02
-12 558     -3.422500e+02 5.062600e+02
-0 559     -4.938000e+01 4.495500e+02
-1 559     3.104900e+02 4.711700e+02
-2 559     -3.242000e+02 2.101100e+02
-4 559     -1.002002e+01 -3.280900e+02
-5 559     3.605500e+02 -2.028200e+02
-6 559     -5.150400e+02 4.482100e+02
-7 559     -2.669000e+02 5.121800e+02
-8 559     -1.881200e+02 1.572000e+02
-11 559     1.031500e+02 -3.091700e+02
-12 559     -3.443700e+02 4.462500e+02
-13 559     1.570100e+02 1.251100e+02
-14 559     2.718700e+02 -2.892000e+02
-0 560     -9.952002e+01 1.833200e+02
-1 560     1.787000e+02 2.228000e+02
-8 560     -1.622400e+02 -6.032001e+01
-0 561     7.403003e+01 1.030400e+02
-1 561     2.657700e+02 1.082000e+02
-2 561     1.751800e+02 1.329300e+02
-5 561     7.065400e+02 -5.532500e+02
-6 561     1.979980e+00 1.530800e+02
-7 561     -3.048999e+01 2.265400e+02
-8 561     1.782900e+02 6.441000e+01
-10 561     -1.757001e+01 2.685800e+02
-12 561     2.723999e+01 2.067000e+02
-15 561     5.216998e+01 2.881000e+02
-0 562     3.609998e+01 6.625000e+01
-1 562     2.163400e+02 8.317001e+01
-2 562     1.568500e+02 9.460999e+01
-4 562     -2.316100e+02 -4.409600e+02
-5 562     6.733900e+02 -5.945800e+02
-6 562     -2.140002e+01 1.026000e+02
-7 562     -6.109998e+01 1.844900e+02
-9 562     1.742999e+01 1.695400e+02
-10 562     -5.813000e+01 2.212400e+02
-12 562     -1.979980e+00 1.571700e+02
-13 562     3.951100e+02 -1.629200e+02
-15 562     5.119995e+00 2.326000e+02
-0 563     1.157400e+02 4.487000e+01
-1 563     2.854900e+02 3.939001e+01
-4 563     -2.559400e+02 -5.055500e+02
-6 563     8.058002e+01 1.069400e+02
-9 563     9.765997e+01 1.769100e+02
-12 563     1.012000e+02 1.587400e+02
-15 563     1.160700e+02 2.142300e+02
-0 564     1.941998e+01 5.519300e+02
-1 564     4.115200e+02 5.649100e+02
-3 564     -4.081900e+02 -1.446997e+01
-5 564     4.249000e+02 -9.587000e+01
-6 564     -4.674000e+02 5.918600e+02
-0 565     7.039001e+01 8.942001e+01
-1 565     2.572100e+02 9.603000e+01
-2 565     1.819600e+02 1.245900e+02
-3 565     8.596002e+01 -1.907900e+02
-4 565     -2.189200e+02 -4.679100e+02
-5 565     7.090400e+02 -5.654000e+02
-6 565     6.950012e+00 1.403100e+02
-7 565     -3.088000e+01 2.131000e+02
-8 565     1.827700e+02 5.714001e+01
-9 565     3.846997e+01 1.944600e+02
-10 565     -2.104999e+01 2.520400e+02
-12 565     3.012000e+01 1.925500e+02
-13 565     4.218900e+02 -1.407800e+02
-15 565     4.900000e+01 2.692500e+02
-0 566     -1.444000e+01 5.471997e+01
-1 566     1.662400e+02 8.576001e+01
-2 566     9.942999e+01 6.292999e+01
-3 566     9.919983e+00 -2.511800e+02
-4 566     -2.343500e+02 -3.999400e+02
-5 566     6.099000e+02 -6.105601e+02
-6 566     -8.154999e+01 6.983002e+01
-7 566     -1.118100e+02 1.629800e+02
-8 566     1.133500e+02 6.609985e+00
-10 566     -1.161000e+02 2.032000e+02
-12 566     -6.216998e+01 1.253600e+02
-13 566     3.484800e+02 -1.780200e+02
-15 566     -6.113000e+01 2.094700e+02
-0 567     3.792999e+01 2.900000e+01
-1 567     2.056300e+02 4.620001e+01
-3 567     8.569000e+01 -2.484700e+02
-7 567     -5.150000e+01 1.486300e+02
-9 567     3.784003e+01 1.442000e+02
-10 567     -5.265997e+01 1.784700e+02
-13 567     4.039600e+02 -1.936400e+02
-15 567     1.239001e+01 1.817900e+02
-0 568     1.026900e+02 7.578003e+01
-1 568     2.832300e+02 7.342999e+01
-3 568     1.239700e+02 -1.920700e+02
-4 568     -2.325300e+02 -4.938900e+02
-5 568     7.517700e+02 -5.809100e+02
-6 568     5.107001e+01 1.352100e+02
-7 568     4.369995e+00 2.058200e+02
-8 568     2.162300e+02 5.404999e+01
-10 568     1.753998e+01 2.395100e+02
-12 568     7.376001e+01 1.877800e+02
-13 568     4.528700e+02 -1.485500e+02
-15 568     9.434998e+01 2.545600e+02
-0 569     1.609985e+00 7.213000e+01
-1 569     1.873101e+02 9.810999e+01
-3 569     2.271997e+01 -2.296200e+02
-4 569     -2.244900e+02 -4.132700e+02
-6 569     -6.921002e+01 9.544000e+01
-7 569     -9.779999e+01 1.832700e+02
-8 569     1.244100e+02 2.489999e+01
-9 569     -1.792999e+01 1.594300e+02
-10 569     -9.853003e+01 2.249000e+02
-12 569     -4.794000e+01 1.506300e+02
-13 569     3.616600e+02 -1.620700e+02
-15 569     -4.107001e+01 2.354200e+02
-0 570     4.410999e+01 5.340002e+01
-1 570     2.194000e+02 6.816998e+01
-2 570     1.715000e+02 8.733002e+01
-3 570     7.865002e+01 -2.262600e+02
-4 570     -2.408400e+02 -4.476100e+02
-5 570     6.855400e+02 -6.084000e+02
-6 570     -6.119995e+00 9.237000e+01
-7 570     -5.010999e+01 1.737700e+02
-8 570     1.722700e+02 2.504001e+01
-9 570     3.320001e+01 1.637000e+02
-10 570     -4.773999e+01 2.078000e+02
-12 570     1.252002e+01 1.466200e+02
-13 570     4.042300e+02 -1.719700e+02
-15 570     1.775000e+01 2.162000e+02
-0 571     7.944000e+01 4.854999e+01
-1 571     2.512700e+02 5.371002e+01
-3 571     1.181200e+02 -2.191300e+02
-4 571     -2.484500e+02 -4.757700e+02
-6 571     3.865002e+01 9.909003e+01
-7 571     -1.327002e+01 1.753400e+02
-8 571     2.075100e+02 2.964001e+01
-9 571     6.487000e+01 1.707300e+02
-10 571     -6.549988e+00 2.055800e+02
-12 571     5.719000e+01 1.523100e+02
-13 571     4.380200e+02 -1.732000e+02
-15 571     6.600000e+01 2.143800e+02
-0 572     7.039978e+00 2.109998e+01
-1 572     1.748199e+02 4.696997e+01
-3 572     5.345001e+01 -2.680400e+02
-4 572     -2.585100e+02 -4.177800e+02
-7 572     -8.228998e+01 1.348800e+02
-13 572     3.751500e+02 -2.032600e+02
-15 572     -2.803003e+01 1.667700e+02
-0 573     1.507300e+02 1.984003e+01
-1 573     3.117600e+02 4.469971e+00
-2 573     2.973600e+02 8.327002e+01
-3 573     1.964700e+02 -2.270100e+02
-4 573     -2.778700e+02 -5.339200e+02
-7 573     6.282001e+01 1.589100e+02
-8 573     2.759400e+02 2.151001e+01
-10 573     7.906000e+01 1.793600e+02
-12 573     1.492100e+02 1.415800e+02
-13 573     5.044000e+02 -1.914600e+02
-15 573     1.671500e+02 1.852300e+02
-0 574     2.055500e+02 5.421600e+02
-1 574     6.089301e+02 5.023400e+02
-2 574     -1.110600e+02 3.083800e+02
-3 574     -2.502400e+02 -2.651001e+01
-4 574     2.548999e+01 -4.936200e+02
-5 574     6.075601e+02 -1.001700e+02
-6 574     -2.628300e+02 6.182300e+02
-11 574     3.290601e+02 -2.195300e+02
-12 574     -9.571997e+01 5.874900e+02
-13 574     3.511100e+02 2.172900e+02
-14 574     5.105800e+02 -1.840500e+02
-0 575     3.303998e+01 4.507001e+01
-1 575     2.062400e+02 6.334998e+01
-3 575     7.388000e+01 -2.369600e+02
-6 575     -1.365997e+01 7.934998e+01
-8 575     1.676600e+02 1.619000e+01
-10 575     -6.000000e+01 1.953300e+02
-12 575     3.669983e+00 1.337500e+02
-15 575     3.859985e+00 2.023300e+02
-0 576     -1.535999e+01 9.692001e+01
-1 576     1.803400e+02 1.264200e+02
-2 576     7.331000e+01 9.742999e+01
-3 576     -1.921002e+01 -2.195000e+02
-4 576     -2.056600e+02 -3.978800e+02
-5 576     5.963500e+02 -5.619600e+02
-6 576     -1.068600e+02 1.152800e+02
-7 576     -1.223500e+02 2.044800e+02
-8 576     9.410999e+01 3.632001e+01
-10 576     -1.214900e+02 2.528000e+02
-12 576     -8.152002e+01 1.702100e+02
-13 576     3.381899e+02 -1.427700e+02
-15 576     -6.757001e+01 2.672100e+02
-0 577     3.095001e+01 8.842001e+01
-1 577     2.188500e+02 1.053700e+02
-2 577     1.365000e+02 1.085400e+02
-3 577     4.559003e+01 -2.054200e+02
-4 577     -2.170600e+02 -4.346600e+02
-5 577     6.564399e+02 -5.725100e+02
-6 577     -4.238000e+01 1.217700e+02
-7 577     -7.359998e+01 2.026400e+02
-8 577     1.447300e+02 4.373001e+01
-12 577     -2.019000e+01 1.760500e+02
-13 577     3.848400e+02 -1.454800e+02
-15 577     -6.869995e+00 2.597400e+02
-0 578     6.796002e+01 6.481000e+01
-1 578     2.442700e+02 7.279999e+01
-7 578     -2.856000e+01 1.896800e+02
-8 578     1.905700e+02 3.926999e+01
-10 578     -1.881000e+01 2.233800e+02
-13 578     4.241400e+02 -1.607700e+02
-15 578     4.823999e+01 2.346200e+02
-0 579     8.539001e+01 3.290002e+01
-1 579     2.520400e+02 3.616998e+01
-2 579     2.255699e+02 8.267999e+01
-3 579     1.305600e+02 -2.294400e+02
-4 579     -2.591100e+02 -4.806300e+02
-6 579     5.116998e+01 8.528003e+01
-7 579     -4.030029e+00 1.611700e+02
-8 579     2.157700e+02 2.029999e+01
-9 579     7.647998e+01 1.617000e+02
-10 579     2.030029e+00 1.885200e+02
-12 579     6.900000e+01 1.379400e+02
-13 579     4.452700e+02 -1.849200e+02
-15 579     7.621002e+01 1.939700e+02
-0 580     7.778998e+01 5.818400e+02
-1 580     4.803800e+02 5.744400e+02
-2 580     -2.271600e+02 3.513100e+02
-3 580     -3.593700e+02 1.658002e+01
-4 580     5.776001e+01 -4.142200e+02
-5 580     4.822900e+02 -6.301001e+01
-6 580     -4.079500e+02 6.425800e+02
-8 580     -1.076000e+02 2.718700e+02
-9 580     -3.484900e+02 3.727500e+02
-11 580     2.119400e+02 -1.915900e+02
-12 580     -2.356100e+02 6.146700e+02
-13 580     2.499100e+02 2.428100e+02
-14 580     3.868600e+02 -1.500600e+02
-0 581     2.610999e+01 5.411000e+02
-1 581     4.146000e+02 5.451100e+02
-2 581     -2.701000e+02 3.061600e+02
-3 581     -4.012800e+02 -2.577002e+01
-4 581     3.695001e+01 -3.791100e+02
-5 581     4.316700e+02 -1.065600e+02
-6 581     -4.571300e+02 5.791800e+02
-8 581     -1.427000e+02 2.348900e+02
-9 581     -3.832600e+02 3.317300e+02
-11 581     1.678900e+02 -2.275700e+02
-12 581     -2.832000e+02 5.597500e+02
-13 581     2.101600e+02 2.060600e+02
-14 581     3.383400e+02 -1.924800e+02
-0 582     2.271000e+02 1.054400e+02
-1 582     4.225300e+02 6.519000e+01
-15 582     2.623300e+02 3.124100e+02
-0 583     -5.793600e+02 3.882700e+02
-1 583     -2.205000e+02 5.380100e+02
-5 583     -1.750600e+02 -2.621100e+02
-7 583     -8.069700e+02 3.865000e+02
-11 583     -3.632600e+02 -3.609200e+02
-13 583     -2.725700e+02 4.937000e+01
-14 583     -2.571000e+02 -3.587600e+02
-0 584     -5.149600e+02 3.289400e+02
-1 584     -1.738800e+02 4.669800e+02
-4 584     -4.065997e+01 -5.652002e+01
-5 584     -1.211800e+02 -3.285100e+02
-8 584     -5.866800e+02 1.710999e+01
-10 584     -7.506200e+02 4.843000e+02
-11 584     -3.125800e+02 -4.151400e+02
-13 584     -2.237500e+02 -3.599854e-01
-14 584     -2.024700e+02 -4.242000e+02
-15 584     -7.774900e+02 5.195800e+02
-0 585     -2.889200e+02 3.896000e+02
-1 585     5.688000e+01 4.700500e+02
-4 585     -2.602002e+01 -1.840600e+02
-5 585     1.125500e+02 -2.679000e+02
-7 585     -5.006300e+02 4.216800e+02
-8 585     -3.861100e+02 8.720001e+01
-11 585     -1.102300e+02 -3.643400e+02
-12 585     -6.083600e+02 3.327600e+02
-13 585     -3.898999e+01 6.107001e+01
-14 585     2.903003e+01 -3.581400e+02
-0 586     -2.799800e+02 3.830700e+02
-1 586     6.433002e+01 4.622200e+02
-2 586     -5.588900e+02 1.169100e+02
-4 586     -3.084003e+01 -1.881000e+02
-5 586     1.209300e+02 -2.748400e+02
-7 586     -4.903900e+02 4.156700e+02
-8 586     -3.781400e+02 8.028000e+01
-10 586     -4.681900e+02 5.702400e+02
-11 586     -1.021500e+02 -3.699500e+02
-12 586     -5.965900e+02 3.253500e+02
-13 586     -3.183002e+01 5.600000e+01
-14 586     3.748999e+01 -3.651700e+02
-0 587     -3.774600e+02 3.310200e+02
-1 587     -4.258002e+01 4.361100e+02
-4 587     -5.178003e+01 -1.294700e+02
-5 587     1.709998e+01 -3.303200e+02
-7 587     -5.831500e+02 3.483100e+02
-8 587     -4.617200e+02 2.410999e+01
-10 587     -5.799100e+02 4.981800e+02
-11 587     -1.907400e+02 -4.154000e+02
-13 587     -1.118200e+02 6.289978e+00
-14 587     -6.416998e+01 -4.227600e+02
-15 587     -5.841700e+02 5.399800e+02
-0 588     2.557001e+01 5.648800e+02
-1 588     4.199500e+02 5.696700e+02
-2 588     -2.729100e+02 3.319400e+02
-3 588     -4.030300e+02 -3.599854e-01
-4 588     5.096002e+01 -3.808900e+02
-5 588     4.316100e+02 -8.154999e+01
-6 588     -4.624800e+02 6.106200e+02
-8 588     -1.449500e+02 2.565600e+02
-11 588     1.664800e+02 -2.077000e+02
-12 588     -2.879500e+02 5.879400e+02
-13 588     2.093600e+02 2.256400e+02
-14 588     3.375601e+02 -1.689700e+02
-0 589     4.678003e+01 5.680100e+02
-1 589     4.444800e+02 5.677700e+02
-3 589     -3.880000e+02 2.250000e+00
-5 589     4.538199e+02 -7.759998e+01
-8 589     -1.304000e+02 2.593000e+02
-11 589     1.869200e+02 -2.039300e+02
-12 589     -2.667600e+02 5.942700e+02
-0 590     2.721002e+01 5.561300e+02
-1 590     4.193500e+02 5.602600e+02
-2 590     -2.702300e+02 3.234500e+02
-4 590     4.588000e+01 -3.810200e+02
-5 590     4.329301e+02 -9.044000e+01
-6 590     -4.589800e+02 5.998600e+02
-8 590     -1.430400e+02 2.488700e+02
-11 590     1.678900e+02 -2.150400e+02
-12 590     -2.849700e+02 5.781800e+02
-13 590     2.108300e+02 2.187200e+02
-14 590     3.392900e+02 -1.775100e+02
-0 591     -5.142500e+02 3.236000e+02
-1 591     -1.745700e+02 4.620900e+02
-5 591     -1.210000e+02 -3.336200e+02
-7 591     -7.263000e+02 3.241100e+02
-8 591     -5.860600e+02 1.181000e+01
-10 591     -7.487800e+02 4.780600e+02
-11 591     -3.132700e+02 -4.195800e+02
-13 591     -2.233700e+02 -4.969971e+00
-14 591     -2.025100e+02 -4.298000e+02
-15 591     -7.754600e+02 5.123000e+02
-0 592     -3.440600e+02 3.319400e+02
-1 592     -1.044000e+01 4.287400e+02
-4 592     -5.407001e+01 -1.477400e+02
-5 592     5.077002e+01 -3.296000e+02
-7 592     -5.488900e+02 3.539500e+02
-8 592     -4.322200e+02 2.738000e+01
-10 592     -5.393300e+02 5.023300e+02
-11 592     -1.611800e+02 -4.151300e+02
-13 592     -8.526001e+01 8.799988e+00
-14 592     -3.089001e+01 -4.212200e+02
-15 592     -5.380900e+02 5.458500e+02
-0 593     -4.308100e+02 4.647000e+02
-1 593     -6.392999e+01 5.775500e+02
-2 593     -7.207500e+02 2.192800e+02
-5 593     -1.989001e+01 -1.854100e+02
-7 593     -6.588900e+02 4.855600e+02
-14 593     -1.022500e+02 -2.788100e+02
-0 594     -5.400900e+02 4.395200e+02
-1 594     -1.726000e+02 5.776900e+02
-5 594     -1.287400e+02 -2.091000e+02
-7 594     -7.722000e+02 4.468200e+02
-14 594     -2.113400e+02 -3.050100e+02
-0 595     -5.400900e+02 4.395200e+02
-1 595     -1.726000e+02 5.776900e+02
-5 595     -1.287400e+02 -2.091000e+02
-7 595     -7.722000e+02 4.468200e+02
-14 595     -2.113400e+02 -3.050100e+02
-0 596     -4.976700e+02 4.130600e+02
-1 596     -1.389500e+02 5.431100e+02
-10 596     -7.432600e+02 5.906200e+02
-0 597     -4.260000e+02 4.130900e+02
-1 597     -7.048999e+01 5.266300e+02
-2 597     -7.154000e+02 1.535600e+02
-7 597     -6.459800e+02 4.308200e+02
-10 597     -6.532000e+02 5.958600e+02
-13 597     -1.483300e+02 7.628998e+01
-14 597     -1.035600e+02 -3.330900e+02
-0 598     -5.227700e+02 2.777700e+02
-1 598     -1.923900e+02 4.201800e+02
-5 598     -1.369700e+02 -3.847900e+02
-7 598     -7.279000e+02 2.733000e+02
-10 598     -7.518400e+02 4.209100e+02
-11 598     -3.237200e+02 -4.606000e+02
-13 598     -2.323000e+02 -4.607001e+01
-14 598     -2.173500e+02 -4.814000e+02
-0 599     -5.171400e+02 3.709500e+02
-1 599     -1.664300e+02 5.075700e+02
-7 599     -7.365900e+02 3.748800e+02
-10 599     -7.601400e+02 5.362900e+02
-11 599     -3.112400e+02 -3.771000e+02
-13 599     -2.233400e+02 3.629999e+01
-14 599     -1.986000e+02 -3.778700e+02
-15 599     -7.887000e+02 5.784900e+02
-0 600     -4.552000e+02 2.017200e+02
-1 600     -1.497400e+02 3.323300e+02
-7 600     -6.428900e+02 2.034800e+02
-0 601     -4.556200e+02 1.969700e+02
-1 601     -1.517100e+02 3.280600e+02
-13 601     -1.727300e+02 -1.147100e+02
-0 602     -4.624600e+02 4.106200e+02
-1 602     -1.056500e+02 5.327800e+02
-4 602     -5.900269e-01 -9.360999e+01
-5 602     -5.690002e+01 -2.413900e+02
-8 602     -5.383400e+02 1.034900e+02
-10 602     -6.977500e+02 5.903700e+02
-11 602     -2.610600e+02 -3.438700e+02
-12 602     -8.203300e+02 3.317700e+02
-13 602     -1.775900e+02 7.315997e+01
-14 602     -1.392400e+02 -3.353000e+02
-0 603     -4.354500e+02 4.158500e+02
-1 603     -7.870001e+01 5.317500e+02
-2 603     -7.262200e+02 1.581800e+02
-4 603     2.700195e-01 -1.082400e+02
-5 603     -2.975000e+01 -2.362500e+02
-8 603     -5.136800e+02 1.095800e+02
-10 603     -6.655100e+02 5.991200e+02
-11 603     -2.373800e+02 -3.397100e+02
-12 603     -7.876600e+02 3.430400e+02
-0 604     -5.024300e+02 3.910900e+02
-1 604     -1.481100e+02 5.231400e+02
-4 604     -8.030029e+00 -7.071002e+01
-5 604     -9.894000e+01 -2.616700e+02
-7 604     -7.234300e+02 3.981200e+02
-8 604     -5.746000e+02 8.232999e+01
-10 604     -7.454900e+02 5.626000e+02
-11 604     -2.969800e+02 -3.603800e+02
-13 604     -2.104800e+02 5.435999e+01
-14 604     -1.810000e+02 -3.565500e+02
-0 605     -5.680000e+02 3.908800e+02
-1 605     -2.094100e+02 5.379300e+02
-5 605     -1.635600e+02 -2.595400e+02
-7 605     -7.947800e+02 3.905500e+02
-10 605     -8.292000e+02 5.579800e+02
-0 606     -3.654200e+02 4.007100e+02
-1 606     -1.490002e+01 5.004100e+02
-2 606     -6.497700e+02 1.380200e+02
-7 606     -5.810300e+02 4.243600e+02
-8 606     -4.504800e+02 9.551999e+01
-10 606     -5.779200e+02 5.851800e+02
-13 606     -1.000700e+02 6.804999e+01
-14 606     -4.532001e+01 -3.462600e+02
-0 607     1.865601e+02 -9.316998e+01
-1 607     3.145500e+02 -1.187900e+02
-6 607     1.999100e+02 -2.473999e+01
-7 607     1.155800e+02 5.270001e+01
-8 607     3.324300e+02 -7.071002e+01
-10 607     1.319300e+02 5.269000e+01
-13 607     5.474600e+02 -2.871800e+02
-15 607     2.305900e+02 3.558002e+01
-0 608     -3.446600e+02 3.363900e+02
-1 608     -9.890015e+00 4.331600e+02
-5 608     5.052002e+01 -3.244700e+02
-7 608     -5.498500e+02 3.586700e+02
-8 608     -4.326700e+02 3.176001e+01
-10 608     -5.409400e+02 5.076200e+02
-11 608     -1.621200e+02 -4.112100e+02
-12 608     -6.650200e+02 2.562900e+02
-13 608     -8.510999e+01 1.278998e+01
-15 608     -5.395800e+02 5.520000e+02
-0 609     -5.005100e+02 3.237300e+02
-1 609     -1.615500e+02 4.586100e+02
-5 609     -1.076900e+02 -3.344200e+02
-7 609     -7.114800e+02 3.257900e+02
-8 609     -5.733700e+02 1.188000e+01
-10 609     -7.320300e+02 4.792400e+02
-11 609     -3.006600e+02 -4.194300e+02
-13 609     -2.122600e+02 -4.419983e+00
-14 609     -1.886700e+02 -4.299300e+02
-15 609     -7.561000e+02 5.140500e+02
-0 610     -4.685500e+02 4.039200e+02
-1 610     -1.131500e+02 5.276600e+02
-5 610     -6.415002e+01 -2.482700e+02
-10 610     -7.047200e+02 5.810800e+02
-14 610     -1.461400e+02 -3.430100e+02
-0 611     -5.519600e+02 3.035600e+02
-1 611     -2.142500e+02 4.517200e+02
-5 611     -1.624900e+02 -3.550800e+02
-10 611     -7.932000e+02 4.498000e+02
-11 611     -3.476600e+02 -4.359100e+02
-14 611     -2.436600e+02 -4.522100e+02
-15 611     -8.247600e+02 4.787800e+02
-0 612     -5.401500e+02 2.888500e+02
-1 612     -2.064600e+02 4.352300e+02
-4 612     -6.025000e+01 -3.829999e+01
-5 612     -1.528700e+02 -3.716800e+02
-7 612     -7.485700e+02 2.832800e+02
-11 612     -3.385700e+02 -4.503300e+02
-13 612     -2.465900e+02 -3.690997e+01
-14 612     -2.337400e+02 -4.683700e+02
-15 612     -8.052400e+02 4.600000e+02
-0 613     -3.646500e+02 3.746500e+02
-1 613     -2.015002e+01 4.748400e+02
-2 613     -6.482100e+02 1.046700e+02
-5 613     3.537000e+01 -2.823300e+02
-7 613     -5.761100e+02 3.969300e+02
-8 613     -4.513700e+02 6.984000e+01
-11 613     -1.774100e+02 -3.767500e+02
-12 613     -6.949700e+02 3.014200e+02
-13 613     -1.002700e+02 4.540002e+01
-14 613     -4.712000e+01 -3.743500e+02
-0 614     -4.300400e+02 4.097000e+02
-1 614     -7.484998e+01 5.237200e+02
-4 614     -5.309998e+00 -1.107800e+02
-5 614     -2.490002e+01 -2.437900e+02
-7 614     -6.494900e+02 4.266500e+02
-8 614     -5.079200e+02 9.957001e+01
-0 615     -4.683500e+02 3.882400e+02
-1 615     -1.164100e+02 5.128400e+02
-4 615     -1.216998e+01 -8.788000e+01
-5 615     -6.625000e+01 -2.653200e+02
-8 615     -5.439000e+02 8.035001e+01
-10 615     -7.020500e+02 5.619400e+02
-11 615     -2.681100e+02 -3.631500e+02
-13 615     -1.835100e+02 5.333002e+01
-14 615     -1.483000e+02 -3.595800e+02
-0 616     -4.407600e+02 3.353003e+01
-1 616     -1.953500e+02 1.731700e+02
-2 616     -6.029200e+02 -2.553000e+02
-10 616     -6.158400e+02 1.350900e+02
-15 616     -6.269900e+02 1.212000e+02
-0 617     -5.401500e+02 2.888500e+02
-1 617     -2.064600e+02 4.352300e+02
-7 617     -7.485700e+02 2.832800e+02
-14 617     -2.337400e+02 -4.683700e+02
-15 617     -8.052400e+02 4.600000e+02
-0 618     -5.082700e+02 3.918700e+02
-1 618     -1.534800e+02 5.253800e+02
-7 618     -7.301700e+02 3.985100e+02
-8 618     -5.805700e+02 8.282001e+01
-10 618     -7.530300e+02 5.632900e+02
-11 618     -3.021800e+02 -3.592200e+02
-0 619     -5.212800e+02 2.832400e+02
-1 619     -1.902800e+02 4.253700e+02
-5 619     -1.347700e+02 -3.785000e+02
-7 619     -7.275500e+02 2.795400e+02
-8 619     -5.930600e+02 -3.173999e+01
-10 619     -7.511600e+02 4.275200e+02
-11 619     -3.223800e+02 -4.554400e+02
-13 619     -2.313500e+02 -4.097998e+01
-14 619     -2.157200e+02 -4.750300e+02
-15 619     -7.775000e+02 4.544100e+02
-0 620     -2.902500e+02 7.341998e+01
-1 620     -4.297998e+01 1.702100e+02
-7 620     -4.368900e+02 1.057600e+02
-15 620     -4.256900e+02 1.961000e+02
-0 621     -3.904400e+02 4.214000e+02
-1 621     -3.445001e+01 5.263900e+02
-2 621     -6.771600e+02 1.643400e+02
-5 621     1.521002e+01 -2.313600e+02
-7 621     -6.100000e+02 4.437400e+02
-8 621     -4.747500e+02 1.157600e+02
-10 621     -6.100600e+02 6.092000e+02
-12 621     -7.336600e+02 3.572100e+02
-13 621     -1.197300e+02 8.479001e+01
-14 621     -6.816998e+01 -3.244200e+02
-0 622     -2.832000e+02 4.189000e+02
-1 622     6.992999e+01 4.984300e+02
-4 622     -1.022998e+01 -1.902800e+02
-7 622     -4.988100e+02 4.533800e+02
-8 622     -3.825600e+02 1.164700e+02
-11 622     -1.041400e+02 -3.378900e+02
-12 622     -6.068400e+02 3.704600e+02
-13 622     -3.391998e+01 8.742001e+01
-14 622     3.665002e+01 -3.261900e+02
-0 623     -5.375000e+02 3.295800e+02
-1 623     -1.944400e+02 4.731600e+02
-10 623     -7.794900e+02 4.834300e+02
-11 623     -3.318100e+02 -4.129600e+02
-14 623     -2.247800e+02 -4.229700e+02
-15 623     -8.089600e+02 5.177000e+02
-0 624     -5.212800e+02 2.832400e+02
-1 624     -1.902800e+02 4.253700e+02
-5 624     -1.347700e+02 -3.785000e+02
-7 624     -7.275500e+02 2.795400e+02
-8 624     -5.930600e+02 -3.173999e+01
-10 624     -7.511600e+02 4.275200e+02
-11 624     -3.223800e+02 -4.554400e+02
-13 624     -2.313500e+02 -4.097998e+01
-15 624     -7.775000e+02 4.544100e+02
-0 625     -5.014100e+02 3.858100e+02
-1 625     -1.483700e+02 5.179500e+02
-5 625     -9.867999e+01 -2.668900e+02
-7 625     -7.219200e+02 3.926200e+02
-10 625     -7.435400e+02 5.562800e+02
-11 625     -2.965300e+02 -3.647000e+02
-14 625     -1.809800e+02 -3.620700e+02
-0 626     -2.941400e+02 4.484700e+02
-1 626     6.588000e+01 5.296400e+02
-2 626     -5.755900e+02 1.980700e+02
-4 626     6.640015e+00 -1.872500e+02
-5 626     1.130400e+02 -2.048200e+02
-7 626     -5.138400e+02 4.828100e+02
-8 626     -3.925700e+02 1.440700e+02
-11 626     -1.129400e+02 -3.127300e+02
-12 626     -6.243400e+02 4.042900e+02
-0 627     -3.431900e+02 3.499100e+02
-1 627     -5.059998e+00 4.458600e+02
-2 627     -6.242800e+02 7.377002e+01
-8 627     -4.316600e+02 4.560999e+01
-10 627     -5.408600e+02 5.243200e+02
-12 627     -6.648500e+02 2.741300e+02
-13 627     -8.346997e+01 2.465002e+01
-0 628     -4.905800e+02 3.828200e+02
-1 628     -1.387900e+02 5.127800e+02
-5 628     -8.870001e+01 -2.707600e+02
-8 628     -5.640200e+02 7.398001e+01
-10 628     -7.290100e+02 5.533100e+02
-11 628     -2.871500e+02 -3.668900e+02
-14 628     -1.705100e+02 -3.651800e+02
-0 629     -3.421700e+02 4.332100e+02
-1 629     1.506000e+01 5.264900e+02
-2 629     -6.264200e+02 1.783700e+02
-5 629     6.416998e+01 -2.196900e+02
-7 629     -5.614100e+02 4.616800e+02
-8 629     -4.325300e+02 1.288200e+02
-12 629     -6.790700e+02 3.776000e+02
-14 629     -1.990002e+01 -3.116900e+02
-0 630     -5.441000e+02 3.136800e+02
-1 630     -2.046500e+02 4.595100e+02
-5 630     -1.526200e+02 -3.439400e+02
-10 630     -7.854300e+02 4.633500e+02
-13 630     -2.483300e+02 -1.471002e+01
-14 630     -2.339600e+02 -4.405100e+02
-15 630     -8.155700e+02 4.942700e+02
-0 631     -4.262900e+02 4.639000e+02
-1 631     -5.928003e+01 5.755600e+02
-2 631     -7.158900e+02 2.185700e+02
-5 631     -1.469000e+01 -1.857400e+02
-7 631     -6.538800e+02 4.855200e+02
-12 631     -7.845900e+02 4.047800e+02
-14 631     -9.813000e+01 -2.797100e+02
-0 632     5.094000e+01 -8.045001e+01
-1 632     1.849800e+02 -6.440997e+01
-6 632     5.334003e+01 -5.484998e+01
-7 632     -1.956000e+01 4.296002e+01
-8 632     2.182100e+02 -8.522998e+01
-0 633     5.021500e+02 4.105300e+02
-1 633     8.718400e+02 2.911900e+02
-2 633     2.814100e+02 2.977600e+02
-3 633     1.399800e+02 -3.007001e+01
-6 633     1.876000e+02 5.494000e+02
-7 633     2.875200e+02 5.518200e+02
-8 633     2.988600e+02 2.235200e+02
-9 633     9.453003e+01 3.428700e+02
-11 633     6.070900e+02 -3.202500e+02
-12 633     2.976700e+02 5.388000e+02
-0 634     4.682200e+02 3.330700e+02
-1 634     8.108700e+02 2.167900e+02
-2 634     2.598800e+02 2.067600e+02
-6 634     1.613900e+02 4.494200e+02
-7 634     2.638000e+02 4.702700e+02
-10 634     4.220000e+02 5.841700e+02
-11 634     5.882600e+02 -3.947600e+02
-12 634     2.743400e+02 4.431800e+02
-13 634     6.297500e+02 6.975000e+01
-14 634     8.678400e+02 -3.783700e+02
-0 635     4.682200e+02 3.330700e+02
-1 635     8.108700e+02 2.167900e+02
-2 635     2.598800e+02 2.067600e+02
-6 635     1.613900e+02 4.494200e+02
-7 635     2.638000e+02 4.702700e+02
-8 635     2.805000e+02 1.505400e+02
-10 635     4.220000e+02 5.841700e+02
-11 635     5.882600e+02 -3.947600e+02
-12 635     2.743400e+02 4.431800e+02
-13 635     6.297500e+02 6.975000e+01
-14 635     8.678400e+02 -3.783700e+02
-0 636     4.679200e+02 3.224200e+02
-1 636     8.067800e+02 2.061000e+02
-6 636     1.623400e+02 4.386900e+02
-7 636     2.649100e+02 4.597900e+02
-8 636     2.819400e+02 1.420300e+02
-10 636     4.212300e+02 5.729600e+02
-12 636     2.746899e+02 4.330500e+02
-13 636     6.286500e+02 6.203998e+01
-14 636     8.673101e+02 -3.882600e+02
-0 637     4.882000e+02 3.473600e+02
-1 637     8.363101e+02 2.270600e+02
-3 637     1.401100e+02 -9.559998e+01
-6 637     1.843000e+02 4.725500e+02
-7 637     2.817500e+02 4.880200e+02
-10 637     4.449000e+02 6.036600e+02
-12 637     2.944399e+02 4.649700e+02
-0 638     5.877200e+02 1.234600e+02
-1 638     8.551100e+02 -3.570001e+01
-3 638     3.571400e+02 -2.153900e+02
-7 638     4.216300e+02 2.972800e+02
-8 638     4.627200e+02 5.251001e+01
-9 638     2.828900e+02 1.805900e+02
-12 638     4.915000e+02 2.787500e+02
-13 638     7.880500e+02 -8.720001e+01
-15 638     7.750200e+02 3.901900e+02
-0 639     1.585100e+02 -3.654999e+01
-1 639     3.020300e+02 -5.360999e+01
-2 639     3.274301e+02 3.060999e+01
-3 639     2.277400e+02 -2.763700e+02
-4 639     -3.212100e+02 -5.413199e+02
-6 639     1.575400e+02 3.084998e+01
-7 639     8.077002e+01 1.048400e+02
-8 639     2.996400e+02 -2.392999e+01
-9 639     1.618600e+02 1.224600e+02
-10 639     9.438000e+01 1.146800e+02
-12 639     1.766900e+02 7.856000e+01
-13 639     5.194100e+02 -2.391600e+02
-15 639     1.851400e+02 1.089200e+02
-0 640     5.766100e+02 1.101300e+02
-1 640     8.394900e+02 -4.678998e+01
-2 640     4.844399e+02 7.721002e+01
-3 640     3.497800e+02 -2.350000e+02
-6 640     3.967700e+02 2.488700e+02
-7 640     4.130400e+02 2.812900e+02
-8 640     4.566700e+02 3.606000e+01
-9 640     2.769200e+02 1.632200e+02
-10 640     5.670300e+02 3.299800e+02
-12 640     4.821200e+02 2.591800e+02
-13 640     7.842500e+02 -1.040000e+02
-15 640     7.616899e+02 3.689500e+02
-0 641     5.701600e+02 9.329001e+01
-1 641     8.273101e+02 -6.288000e+01
-2 641     4.818600e+02 5.610999e+01
-3 641     3.479700e+02 -2.558100e+02
-6 641     3.927200e+02 2.270600e+02
-7 641     4.087900e+02 2.633200e+02
-8 641     4.542900e+02 1.889999e+01
-9 641     2.754100e+02 1.454400e+02
-10 641     5.605900e+02 3.101200e+02
-12 641     4.788400e+02 2.370600e+02
-13 641     7.797500e+02 -1.204000e+02
-15 641     7.546500e+02 3.440800e+02
-0 642     4.958400e+02 3.920000e+02
-1 642     8.592900e+02 2.730200e+02
-2 642     2.779100e+02 2.772900e+02
-3 642     1.371700e+02 -5.009003e+01
-6 642     1.828500e+02 5.262600e+02
-7 642     2.836300e+02 5.326700e+02
-8 642     2.956200e+02 2.069300e+02
-9 642     9.240002e+01 3.248600e+02
-12 642     2.933101e+02 5.170800e+02
-13 642     6.516700e+02 1.229800e+02
-0 643     4.842500e+02 3.829300e+02
-1 643     8.438700e+02 2.659600e+02
-2 643     2.662200e+02 2.631500e+02
-3 643     1.263500e+02 -6.377002e+01
-6 643     1.693200e+02 5.125400e+02
-7 643     2.730500e+02 5.218800e+02
-8 643     2.861600e+02 1.958900e+02
-9 643     8.334003e+01 3.125000e+02
-12 643     2.813000e+02 5.029100e+02
-14 643     8.784600e+02 -3.225800e+02
-0 644     4.962800e+02 3.433800e+02
-1 644     8.436000e+02 2.205000e+02
-2 644     2.901500e+02 2.287300e+02
-3 644     1.502700e+02 -9.609998e+01
-6 644     1.962500e+02 4.691400e+02
-7 644     2.904000e+02 4.850300e+02
-8 644     3.056500e+02 1.671600e+02
-10 644     4.541801e+02 5.995500e+02
-11 644     6.129100e+02 -3.843600e+02
-12 644     3.061500e+02 4.622800e+02
-13 644     6.568199e+02 8.145001e+01
-0 645     5.924900e+02 1.460200e+02
-1 645     8.675601e+02 -1.382001e+01
-2 645     4.932800e+02 1.218000e+02
-3 645     3.563600e+02 -1.915600e+02
-6 645     4.069100e+02 2.951800e+02
-7 645     4.238700e+02 3.192500e+02
-8 645     4.638000e+02 7.163000e+01
-9 645     2.828400e+02 2.009200e+02
-10 645     5.821500e+02 3.736400e+02
-12 645     4.919600e+02 3.041400e+02
-15 645     7.801600e+02 4.214900e+02
-0 646     1.405000e+02 -2.517999e+01
-1 646     2.870100e+02 -3.660999e+01
-2 646     3.065100e+02 3.871002e+01
-3 646     2.084800e+02 -2.687100e+02
-4 646     -3.100700e+02 -5.267800e+02
-7 646     6.106000e+01 1.132900e+02
-8 646     2.830300e+02 -1.809000e+01
-9 646     1.445800e+02 1.283700e+02
-10 646     7.247998e+01 1.258200e+02
-12 646     1.545500e+02 8.571002e+01
-13 646     5.026300e+02 -2.308300e+02
-15 646     1.587800e+02 1.220000e+02
-0 647     2.659973e+00 -7.395001e+01
-1 647     1.424800e+02 -4.412000e+01
-2 647     1.698100e+02 -5.550000e+01
-3 647     8.544000e+01 -3.643000e+02
-4 647     -3.243700e+02 -4.111300e+02
-7 647     -7.090997e+01 3.938000e+01
-8 647     1.677000e+02 -9.425000e+01
-9 647     3.907001e+01 4.341998e+01
-10 647     -8.254999e+01 5.540997e+01
-13 647     3.810800e+02 -2.858200e+02
-15 647     -2.112000e+01 3.725000e+01
-0 648     5.611500e+02 2.203100e+02
-1 648     8.585800e+02 7.453998e+01
-2 648     4.385000e+02 1.820000e+02
-3 648     3.005500e+02 -1.360900e+02
-7 648     3.830100e+02 3.856400e+02
-8 648     4.205699e+02 1.223000e+02
-9 648     2.347100e+02 2.498200e+02
-10 648     5.401600e+02 4.592500e+02
-11 648     6.942600e+02 -5.045300e+02
-12 648     4.378900e+02 3.753500e+02
-13 648     7.564301e+02 -9.640015e+00
-15 648     7.273600e+02 5.216000e+02
-0 649     -3.608002e+01 4.551001e+01
-1 649     1.440400e+02 8.307999e+01
-3 649     -1.359003e+01 -2.703400e+02
-7 649     -1.333500e+02 1.494800e+02
-8 649     9.313000e+01 -8.130005e+00
-10 649     -1.400100e+02 1.905100e+02
-15 649     -8.900000e+01 1.942700e+02
-0 650     1.881200e+02 -4.754999e+01
-1 650     3.286000e+02 -7.384998e+01
-2 650     3.595699e+02 2.378998e+01
-3 650     2.597800e+02 -2.808200e+02
-10 650     1.299000e+02 1.057100e+02
-15 650     2.265900e+02 9.809000e+01
-0 651     1.745000e+02 -6.134003e+01
-1 651     3.109500e+02 -8.321002e+01
-2 651     3.520601e+02 7.900024e+00
-6 651     1.804400e+02 8.760010e+00
-7 651     9.977002e+01 8.285999e+01
-8 651     3.186500e+02 -4.273001e+01
-13 651     5.352000e+02 -2.597800e+02
-15 651     2.096200e+02 7.750000e+01
-0 652     -3.521002e+01 6.559998e+00
-1 652     1.327100e+02 4.463000e+01
-3 652     7.020020e+00 -3.032900e+02
-4 652     -2.646200e+02 -3.835800e+02
-6 652     -8.937000e+01 6.400024e+00
-7 652     -1.246900e+02 1.121000e+02
-8 652     1.066600e+02 -4.010001e+01
-10 652     -1.349000e+02 1.448400e+02
-13 652     3.350300e+02 -2.200300e+02
-15 652     -8.265002e+01 1.416000e+02
-0 653     7.090027e+00 -2.256000e+01
-1 653     1.611000e+02 4.890015e+00
-2 653     1.610700e+02 1.300049e-01
-3 653     7.327002e+01 -3.091200e+02
-4 653     -2.889000e+02 -4.176200e+02
-6 653     -1.978003e+01 -6.440002e+00
-7 653     -7.445001e+01 9.157001e+01
-8 653     1.610500e+02 -4.692999e+01
-9 653     2.689001e+01 9.154999e+01
-10 653     -8.271002e+01 1.153700e+02
-13 653     3.808199e+02 -2.409100e+02
-15 653     -2.181000e+01 1.070700e+02
-0 654     1.453003e+01 -2.770001e+01
-1 654     1.666200e+02 -2.780029e+00
-2 654     1.730700e+02 -1.469971e+00
-3 654     8.445001e+01 -3.106100e+02
-7 654     -6.537000e+01 8.806000e+01
-9 654     3.765997e+01 9.029999e+01
-10 654     -7.337000e+01 1.102500e+02
-13 654     3.897600e+02 -2.445600e+02
-15 654     -1.107001e+01 1.009400e+02
-0 655     2.440002e+01 -3.365002e+01
-1 655     1.735300e+02 -1.089001e+01
-2 655     1.865700e+02 -3.869995e+00
-9 655     4.821002e+01 8.895001e+01
-13 655     3.990000e+02 -2.487000e+02
-15 655     2.979980e+00 9.441000e+01
-0 656     1.463500e+02 -7.447998e+01
-1 656     2.793300e+02 -8.770001e+01
-2 656     3.284500e+02 -1.182001e+01
-3 656     2.316400e+02 -3.166800e+02
-6 656     1.559700e+02 -1.479999e+01
-7 656     7.470001e+01 6.515997e+01
-8 656     2.985900e+02 -5.920001e+01
-13 656     5.125300e+02 -2.734300e+02
-15 656     1.732400e+02 5.584003e+01
-0 657     1.463500e+02 -7.447998e+01
-1 657     2.793300e+02 -8.770001e+01
-2 657     3.284500e+02 -1.182001e+01
-3 657     2.316400e+02 -3.166800e+02
-4 657     -3.477900e+02 -5.306400e+02
-6 657     1.559700e+02 -1.479999e+01
-7 657     7.470001e+01 6.515997e+01
-8 657     2.985900e+02 -5.920001e+01
-10 657     8.410999e+01 7.044000e+01
-13 657     5.125300e+02 -2.734300e+02
-15 657     1.732400e+02 5.584003e+01
-0 658     -1.558002e+01 -2.339001e+01
-1 658     1.403900e+02 1.041998e+01
-2 658     1.333300e+02 -1.109003e+01
-3 658     4.621997e+01 -3.211100e+02
-6 658     -4.839001e+01 -1.781000e+01
-7 658     -9.795001e+01 8.639999e+01
-8 658     1.382400e+02 -5.651999e+01
-10 658     -1.091900e+02 1.125000e+02
-12 658     -3.600000e+01 3.671002e+01
-13 658     3.593500e+02 -2.439700e+02
-15 658     -5.233002e+01 1.035800e+02
-0 659     1.419000e+02 -8.204999e+01
-1 659     2.716700e+02 -9.356000e+01
-2 659     3.267500e+02 -2.135999e+01
-3 659     2.313600e+02 -3.251100e+02
-6 659     1.532400e+02 -2.525000e+01
-7 659     7.122998e+01 5.690002e+01
-8 659     2.967400e+02 -6.695001e+01
-10 659     7.928003e+01 6.106000e+01
-12 659     1.695600e+02 2.115997e+01
-15 659     1.681000e+02 4.503003e+01
-0 660     -6.535999e+01 -3.159973e+00
-1 660     1.038400e+02 4.370001e+01
-3 660     -3.322998e+01 -3.341800e+02
-4 660     -2.675800e+02 -3.576300e+02
-6 660     -1.307600e+02 -1.817999e+01
-7 660     -1.558700e+02 9.451999e+01
-8 660     7.354999e+01 -6.202002e+01
-10 660     -1.692000e+02 1.310600e+02
-12 660     -1.120300e+02 3.732001e+01
-13 660     3.043700e+02 -2.335300e+02
-15 660     -1.212800e+02 1.239200e+02
-0 661     4.910400e+02 4.087800e+02
-1 661     8.599200e+02 2.918800e+02
-2 661     2.692900e+02 2.910800e+02
-3 661     1.279500e+02 -3.687000e+01
-6 661     1.731100e+02 5.438200e+02
-7 661     2.769900e+02 5.478300e+02
-8 661     2.886600e+02 2.183700e+02
-9 661     8.481000e+01 3.365900e+02
-11 661     5.961899e+02 -3.219900e+02
-12 661     2.842400e+02 5.332900e+02
-13 661     6.460601e+02 1.359900e+02
-0 662     -1.821997e+01 -8.539978e+00
-1 662     1.426700e+02 2.546997e+01
-2 662     1.245300e+02 1.849976e+00
-3 662     3.771002e+01 -3.073300e+02
-7 662     -1.032800e+02 9.995001e+01
-10 662     -1.132200e+02 1.290900e+02
-13 662     3.553300e+02 -2.321300e+02
-15 662     -5.809998e+01 1.226200e+02
-0 663     -4.523999e+01 -8.880005e+00
-1 663     1.192800e+02 3.307001e+01
-2 663     8.427002e+01 -1.365002e+01
-3 663     -5.800171e-01 -3.258600e+02
-4 663     -2.734500e+02 -3.741400e+02
-6 663     -9.670001e+01 -1.528998e+01
-7 663     -1.328500e+02 9.382001e+01
-8 663     1.000300e+02 -5.750000e+01
-10 663     -1.447700e+02 1.246100e+02
-12 663     -8.100000e+01 3.979999e+01
-13 663     3.266100e+02 -2.359800e+02
-15 663     -9.384998e+01 1.185100e+02
-0 664     5.825000e+01 -6.165997e+01
-1 664     1.970000e+02 -4.839001e+01
-2 664     2.358800e+02 -2.100000e+01
-7 664     -1.485999e+01 6.237000e+01
-10 664     -1.945001e+01 7.520001e+01
-15 664     5.165002e+01 6.088000e+01
-0 665     5.825000e+01 -6.165997e+01
-1 665     1.970000e+02 -4.839001e+01
-2 665     2.358800e+02 -2.100000e+01
-3 665     1.454300e+02 -3.273000e+02
-4 665     -3.235300e+02 -4.581100e+02
-6 665     5.487000e+01 -2.915997e+01
-7 665     -1.485999e+01 6.237000e+01
-8 665     2.210100e+02 -6.589001e+01
-10 665     -1.945001e+01 7.520001e+01
-15 665     5.165002e+01 6.088000e+01
-0 666     8.319000e+01 -8.078003e+01
-1 666     2.152800e+02 -7.433002e+01
-2 666     2.686801e+02 -3.406000e+01
-3 666     1.769800e+02 -3.391700e+02
-4 666     -3.416400e+02 -4.782700e+02
-6 666     9.060999e+01 -4.294000e+01
-7 666     1.346997e+01 4.809003e+01
-8 666     2.479100e+02 -7.703998e+01
-9 666     1.173000e+02 6.719000e+01
-10 666     1.162000e+01 5.609998e+01
-12 666     1.032600e+02 6.580017e+00
-13 666     4.580300e+02 -2.839500e+02
-15 666     8.845001e+01 3.875000e+01
-0 667     8.887000e+01 -5.883002e+01
-1 667     2.268600e+02 -5.441998e+01
-2 667     2.678600e+02 -8.049988e+00
-3 667     1.751500e+02 -3.139500e+02
-6 667     9.113000e+01 -1.403003e+01
-7 667     1.550000e+01 7.112000e+01
-8 667     2.483900e+02 -5.500000e+01
-10 667     1.577002e+01 8.194000e+01
-13 667     4.608800e+02 -2.645700e+02
-15 667     9.290002e+01 6.919000e+01
-0 668     -3.055400e+02 3.808100e+02
-1 668     3.889001e+01 4.664900e+02
-2 668     -5.858600e+02 1.133400e+02
-5 668     9.441998e+01 -2.767700e+02
-7 668     -5.162100e+02 4.103100e+02
-8 668     -3.999800e+02 7.744000e+01
-10 668     -4.996900e+02 5.657100e+02
-11 668     -1.249400e+02 -3.713100e+02
-12 668     -6.265200e+02 3.185400e+02
-13 668     -5.290997e+01 5.307001e+01
-14 668     1.157001e+01 -3.676400e+02
-0 669     -3.972500e+02 4.260000e+02
-1 669     -4.004999e+01 5.326200e+02
-2 669     -6.844900e+02 1.705300e+02
-5 669     8.940002e+00 -2.262300e+02
-7 669     -6.177300e+02 4.479900e+02
-8 669     -4.813900e+02 1.204400e+02
-10 669     -6.191800e+02 6.142700e+02
-11 669     -2.040800e+02 -3.311600e+02
-12 669     -7.432500e+02 3.616200e+02
-13 669     -1.253000e+02 8.895999e+01
-14 669     -7.446002e+01 -3.191100e+02
-0 670     -4.685500e+02 4.039200e+02
-1 670     -1.131500e+02 5.276600e+02
-5 670     -6.415002e+01 -2.482700e+02
-8 670     -5.448600e+02 9.632001e+01
-10 670     -7.047200e+02 5.810800e+02
-11 670     -2.664800e+02 -3.487300e+02
-12 670     -8.267700e+02 3.222500e+02
-0 671     -4.407300e+02 3.924800e+02
-1 671     -8.929999e+01 5.103200e+02
-2 671     -7.320400e+02 1.271400e+02
-5 671     -3.796997e+01 -2.612900e+02
-7 671     -6.583500e+02 4.068300e+02
-10 671     -6.680600e+02 5.691400e+02
-11 671     -2.441600e+02 -3.590700e+02
-12 671     -7.901300e+02 3.119500e+02
-14 671     -1.203100e+02 -3.549500e+02
-0 672     -3.226000e+02 4.420100e+02
-1 672     3.657001e+01 5.305100e+02
-2 672     -6.049800e+02 1.910100e+02
-5 672     8.440002e+01 -2.104600e+02
-7 672     -5.421600e+02 4.733300e+02
-8 672     -4.164700e+02 1.388200e+02
-11 672     -1.379400e+02 -3.178900e+02
-12 672     -6.566500e+02 3.931600e+02
-0 673     -5.460400e+02 3.291900e+02
-1 673     -2.030100e+02 4.748500e+02
-5 673     -1.509500e+02 -3.255900e+02
-11 673     -3.403600e+02 -4.131400e+02
-13 673     -2.492600e+02 -1.630005e+00
-14 673     -2.336000e+02 -4.233200e+02
-15 673     -8.211700e+02 5.164300e+02
-0 674     -3.190000e+02 4.012700e+02
-1 674     3.051001e+01 4.899900e+02
-2 674     -6.004500e+02 1.391800e+02
-4 674     -1.729999e+01 -1.689000e+02
-5 674     8.359998e+01 -2.543400e+02
-7 674     -5.326300e+02 4.304800e+02
-8 674     -4.121900e+02 9.760001e+01
-10 674     -5.189800e+02 5.895700e+02
-11 674     -1.362800e+02 -3.533700e+02
-12 674     -6.457500e+02 3.422900e+02
-14 674     3.400269e-01 -3.453800e+02
-0 675     -4.754700e+02 3.916000e+02
-1 675     -1.224700e+02 5.176000e+02
-5 675     -7.303003e+01 -2.615400e+02
-10 675     -7.115300e+02 5.656300e+02
-11 675     -2.735600e+02 -3.597400e+02
-14 675     -1.546000e+02 -3.559000e+02
-0 676     -5.499400e+02 3.263300e+02
-1 676     -2.071800e+02 4.729600e+02
-4 676     -3.878003e+01 -3.798999e+01
-5 676     -1.567600e+02 -3.297100e+02
-10 676     -7.934800e+02 4.781000e+02
-11 676     -3.437700e+02 -4.159200e+02
-13 676     -2.523800e+02 -3.820007e+00
-14 676     -2.379200e+02 -4.264000e+02
-15 676     -8.261600e+02 5.112500e+02
-0 677     -3.459500e+02 3.427100e+02
-1 677     -9.530029e+00 4.397800e+02
-2 677     -6.270600e+02 6.437000e+01
-5 677     5.013000e+01 -3.173500e+02
-7 677     -5.523100e+02 3.651800e+02
-8 677     -4.346700e+02 3.810001e+01
-10 677     -5.433200e+02 5.152200e+02
-11 677     -1.629100e+02 -4.054300e+02
-14 677     -3.177002e+01 -4.093600e+02
-15 677     -5.427700e+02 5.608100e+02
-0 678     -4.371500e+02 4.083000e+02
-1 678     -8.239001e+01 5.245300e+02
-2 678     -7.277900e+02 1.474800e+02
-5 678     -3.225000e+01 -2.442800e+02
-7 678     -6.569400e+02 4.244000e+02
-10 678     -6.662500e+02 5.894100e+02
-12 678     -7.882500e+02 3.327500e+02
-13 678     -1.574200e+02 7.182001e+01
-14 678     -1.149100e+02 -3.381200e+02
-0 679     -5.499400e+02 3.263300e+02
-1 679     -2.071800e+02 4.729600e+02
-4 679     -3.878003e+01 -3.798999e+01
-5 679     -1.567600e+02 -3.297100e+02
-10 679     -7.934800e+02 4.781000e+02
-11 679     -3.437700e+02 -4.159200e+02
-13 679     -2.523800e+02 -3.820007e+00
-14 679     -2.379200e+02 -4.264000e+02
-15 679     -8.261600e+02 5.112500e+02
-0 680     -5.586300e+02 3.733500e+02
-1 680     -2.046400e+02 5.192100e+02
-4 680     -1.284003e+01 -3.965997e+01
-5 680     -1.570000e+02 -2.785000e+02
-7 680     -7.815000e+02 3.721900e+02
-10 680     -8.144100e+02 5.366600e+02
-14 680     -2.390800e+02 -3.748100e+02
-15 680     -8.478100e+02 5.766100e+02
-0 681     -5.680700e+02 3.392500e+02
-1 681     -2.211700e+02 4.893800e+02
-5 681     -1.722700e+02 -3.152600e+02
-7 681     -7.867800e+02 3.343900e+02
-10 681     -8.201400e+02 4.931700e+02
-11 681     -3.584500e+02 -4.039400e+02
-15 681     -8.544200e+02 5.271900e+02
-0 682     -4.011300e+02 3.989200e+02
-1 682     -4.965002e+01 5.070600e+02
-2 682     -6.882600e+02 1.354100e+02
-5 682     1.890015e+00 -2.555200e+02
-7 682     -6.175900e+02 4.183500e+02
-8 682     -4.834900e+02 9.289001e+01
-10 682     -6.197100e+02 5.801700e+02
-11 682     -2.082900e+02 -3.549000e+02
-12 682     -7.425600e+02 3.261200e+02
-13 682     -1.289600e+02 6.503003e+01
-14 682     -8.060999e+01 -3.482800e+02
-0 683     -4.119300e+02 3.940500e+02
-1 683     -6.138000e+01 5.050300e+02
-2 683     -7.000200e+02 1.290700e+02
-7 683     -6.282100e+02 4.120700e+02
-10 683     -6.326500e+02 5.731200e+02
-11 683     -2.182700e+02 -3.588600e+02
-12 683     -7.553000e+02 3.184300e+02
-13 683     -1.377100e+02 6.032001e+01
-0 684     -4.461100e+02 3.948200e+02
-1 684     -9.384003e+01 5.137900e+02
-4 684     -1.056000e+01 -1.001200e+02
-5 684     -4.327002e+01 -2.590600e+02
-8 684     -5.238700e+02 8.751999e+01
-10 684     -6.754900e+02 5.714600e+02
-11 684     -2.479000e+02 -3.576800e+02
-12 684     -7.974900e+02 3.136500e+02
-13 684     -1.652700e+02 5.981000e+01
-14 684     -1.253100e+02 -3.527300e+02
-0 685     -3.904400e+02 4.214000e+02
-1 685     -3.445001e+01 5.263900e+02
-2 685     -6.771600e+02 1.643400e+02
-7 685     -6.100000e+02 4.437400e+02
-8 685     -4.747500e+02 1.157600e+02
-10 685     -6.100600e+02 6.092000e+02
-13 685     -1.197300e+02 8.479001e+01
-14 685     -6.816998e+01 -3.244200e+02
-0 686     -3.480100e+02 4.070700e+02
-1 686     3.619995e+00 5.026600e+02
-2 686     -6.315600e+02 1.457500e+02
-5 686     5.571997e+01 -2.472600e+02
-7 686     -5.636300e+02 4.334100e+02
-8 686     -4.370000e+02 1.031100e+02
-10 686     -5.553800e+02 5.944600e+02
-13 686     -8.615997e+01 7.410999e+01
-14 686     -2.778998e+01 -3.394100e+02
-0 687     -5.602800e+02 3.419400e+02
-1 687     -2.129700e+02 4.899600e+02
-5 687     -1.649500e+02 -3.129000e+02
-7 687     -7.781200e+02 3.382500e+02
-10 687     -8.105400e+02 4.971400e+02
-15 687     -8.439600e+02 5.321400e+02
-0 688     -4.535200e+02 4.044000e+02
-1 688     -9.873999e+01 5.240400e+02
-5 688     -4.867999e+01 -2.492400e+02
-8 688     -5.296600e+02 9.545999e+01
-10 688     -6.860400e+02 5.832900e+02
-11 688     -2.539000e+02 -3.494200e+02
-12 688     -8.063900e+02 3.230800e+02
-0 689     -3.682700e+02 4.159400e+02
-1 689     -1.384998e+01 5.159400e+02
-2 689     -6.529400e+02 1.573800e+02
-5 689     3.628998e+01 -2.380700e+02
-10 689     -5.819200e+02 6.039900e+02
-11 689     -1.789700e+02 -3.401900e+02
-12 689     -7.060500e+02 3.532700e+02
-13 689     -1.022200e+02 8.076999e+01
-14 689     -4.684003e+01 -3.301300e+02
-0 690     -5.351800e+02 3.264900e+02
-1 690     -1.930600e+02 4.698500e+02
-5 690     -1.416000e+02 -3.302300e+02
-11 690     -3.307700e+02 -4.160600e+02
-15 690     -8.058800e+02 5.130900e+02
-0 691     -5.438100e+02 4.032300e+02
-1 691     -1.842700e+02 5.441100e+02
-4 691     1.950012e+00 -5.084003e+01
-5 691     -1.381300e+02 -2.472000e+02
-7 691     -7.700800e+02 4.065900e+02
-10 691     -8.007300e+02 5.749900e+02
-11 691     -3.313500e+02 -3.489000e+02
-13 691     -2.423400e+02 6.315002e+01
-14 691     -2.198400e+02 -3.431400e+02
-0 692     -5.035100e+02 1.737000e+02
-1 692     -2.038500e+02 3.174800e+02
-0 693     -5.039500e+02 3.728400e+02
-1 693     -1.537500e+02 5.073300e+02
-4 693     -1.826001e+01 -6.779999e+01
-5 693     -1.032600e+02 -2.821000e+02
-10 693     -7.436500e+02 5.396400e+02
-13 693     -2.124600e+02 3.858002e+01
-14 693     -1.850200e+02 -3.761100e+02
-15 693     -7.704200e+02 5.829500e+02
-0 694     -3.620300e+02 4.249400e+02
-1 694     -6.150024e+00 5.235000e+02
-2 694     -6.462700e+02 1.686300e+02
-5 694     4.364001e+01 -2.277800e+02
-7 694     -5.809900e+02 4.511900e+02
-8 694     -4.502500e+02 1.205400e+02
-10 694     -5.755500e+02 6.157800e+02
-13 694     -9.678998e+01 8.926999e+01
-0 695     -5.446200e+02 3.069500e+02
-1 695     -2.066100e+02 4.535000e+02
-4 695     -4.960999e+01 -3.839001e+01
-0 696     -5.446200e+02 3.069500e+02
-1 696     -2.066100e+02 4.535000e+02
-4 696     -4.960999e+01 -3.839001e+01
-5 696     -1.543800e+02 -3.512700e+02
-11 696     -3.409000e+02 -4.336400e+02
-15 696     -8.151600e+02 4.847300e+02
-0 697     -5.680700e+02 3.392500e+02
-1 697     -2.211700e+02 4.893800e+02
-5 697     -1.722700e+02 -3.152600e+02
-7 697     -7.867800e+02 3.343900e+02
-10 697     -8.201400e+02 4.931700e+02
-11 697     -3.584500e+02 -4.039400e+02
-13 697     -2.666400e+02 6.739990e+00
-14 697     -2.543400e+02 -4.120400e+02
-15 697     -8.544200e+02 5.271900e+02
-0 698     -4.896400e+02 3.967500e+02
-1 698     -1.347500e+02 5.257800e+02
-4 698     -5.820007e+00 -7.778998e+01
-5 698     -8.579999e+01 -2.554500e+02
-7 698     -7.108000e+02 4.058600e+02
-8 698     -5.631900e+02 8.856000e+01
-10 698     -7.304500e+02 5.708100e+02
-11 698     -2.853500e+02 -3.553000e+02
-13 698     -1.999700e+02 5.982001e+01
-0 699     -3.682700e+02 4.159400e+02
-1 699     -1.384998e+01 5.159400e+02
-2 699     -6.529400e+02 1.573800e+02
-5 699     3.628998e+01 -2.380700e+02
-7 699     -5.857300e+02 4.404800e+02
-10 699     -5.819200e+02 6.039900e+02
-11 699     -1.789700e+02 -3.401900e+02
-12 699     -7.060500e+02 3.532700e+02
-13 699     -1.022200e+02 8.076999e+01
-14 699     -4.684003e+01 -3.301300e+02
-0 700     -5.627800e+02 3.374100e+02
-1 700     -2.166500e+02 4.863300e+02
-4 700     -3.177002e+01 -3.290997e+01
-5 700     -1.675600e+02 -3.173700e+02
-7 700     -7.805900e+02 3.330000e+02
-10 700     -8.130800e+02 4.915400e+02
-11 700     -3.534800e+02 -4.058500e+02
-13 700     -2.621700e+02 5.500000e+00
-14 700     -2.489600e+02 -4.141100e+02
-15 700     -8.468900e+02 5.253200e+02
-0 701     -5.154500e+02 3.989800e+02
-1 701     -1.587500e+02 5.339400e+02
-4 701     -2.469971e+00 -6.473999e+01
-5 701     -1.110600e+02 -2.521600e+02
-7 701     -7.392700e+02 4.058400e+02
-8 701     -5.873700e+02 9.079001e+01
-10 701     -7.635800e+02 5.718800e+02
-11 701     -3.077000e+02 -3.528600e+02
-13 701     -2.210100e+02 6.146997e+01
-14 701     -1.932600e+02 -3.473400e+02
-0 702     -3.481700e+02 4.287100e+02
-1 702     8.409973e+00 5.233800e+02
-2 702     -6.317200e+02 1.735500e+02
-4 702     1.500244e-01 -1.559800e+02
-5 702     5.765997e+01 -2.244800e+02
-7 702     -5.668500e+02 4.561000e+02
-8 702     -4.382200e+02 1.234300e+02
-11 702     -1.610200e+02 -3.294500e+02
-12 702     -6.848800e+02 3.718600e+02
-13 702     -8.540997e+01 9.285001e+01
-14 702     -2.564001e+01 -3.165100e+02
-0 703     -4.444400e+02 4.115200e+02
-1 703     -8.848999e+01 5.295000e+02
-2 703     -7.360100e+02 1.517200e+02
-7 703     -6.651200e+02 4.271100e+02
-10 703     -6.761700e+02 5.925800e+02
-12 703     -7.981800e+02 3.358300e+02
-0 704     -3.777100e+02 -5.219971e+00
-1 704     -1.517500e+02 1.207100e+02
-7 704     -5.102800e+02 1.384998e+01
-15 704     -5.364400e+02 7.715002e+01
-0 705     -1.010000e+02 9.682001e+01
-1 705     1.130500e+02 1.471700e+02
-5 705     4.573700e+02 -5.723101e+02
-6 705     -2.621400e+02 6.419000e+01
-7 705     -2.217100e+02 1.801900e+02
-8 705     -2.595001e+01 -2.170999e+01
-10 705     -2.213400e+02 2.439400e+02
-12 705     -2.144400e+02 1.176800e+02
-13 705     2.351200e+02 -1.578100e+02
-15 705     -1.797000e+02 2.545900e+02
-0 706     2.707200e+02 5.072700e+02
-1 706     6.717000e+02 4.486800e+02
-2 706     -4.983002e+01 2.721700e+02
-3 706     -1.916600e+02 -6.103003e+01
-8 706     3.877002e+01 2.123000e+02
-9 706     -1.943200e+02 3.086500e+02
-11 706     3.917500e+02 -2.457700e+02
-0 707     9.453998e+01 5.453998e+01
-1 707     2.684200e+02 5.481000e+01
-3 707     1.301900e+02 -2.104900e+02
-6 707     5.042999e+01 1.101400e+02
-7 707     1.750000e+00 1.836100e+02
-8 707     2.159400e+02 3.707999e+01
-10 707     1.031000e+01 2.142000e+02
-12 707     7.040997e+01 1.630400e+02
-13 707     4.511500e+02 -1.671900e+02
-15 707     8.601001e+01 2.246100e+02
-0 708     1.415400e+02 1.271002e+01
-1 708     3.004800e+02 -4.998779e-02
-2 708     2.928900e+02 7.509998e+01
-3 708     1.935800e+02 -2.340400e+02
-7 708     5.564001e+01 1.506100e+02
-10 708     6.957001e+01 1.706000e+02
-15 708     1.554500e+02 1.740200e+02
-0 709     1.831899e+02 -9.880005e+00
-1 709     3.354600e+02 -3.509998e+01
-2 709     3.384301e+02 5.988000e+01
-3 709     2.374200e+02 -2.479000e+02
-4 709     -3.049600e+02 -5.610601e+02
-6 709     1.707100e+02 6.787000e+01
-7 709     9.947998e+01 1.347100e+02
-10 709     1.195600e+02 1.483100e+02
-12 709     1.935100e+02 1.155000e+02
-13 709     5.357600e+02 -2.143300e+02
-15 709     2.149200e+02 1.487900e+02
-0 710     2.474200e+02 -7.190002e+01
-1 710     3.840900e+02 -1.170200e+02
-2 710     4.100800e+02 -7.000732e-02
-6 710     2.491700e+02 1.462000e+01
-7 710     1.694900e+02 8.251001e+01
-8 710     3.700500e+02 -4.763000e+01
-10 710     1.998700e+02 8.325000e+01
-12 710     2.761899e+02 5.614001e+01
-13 710     5.942500e+02 -2.650200e+02
-15 710     3.119000e+02 7.275000e+01
-0 711     3.828500e+02 4.624500e+02
-1 711     7.862400e+02 3.712300e+02
-2 711     4.940002e+01 2.235800e+02
-5 711     7.909000e+02 -1.792800e+02
-7 711     1.415200e+02 5.687300e+02
-8 711     1.216900e+02 1.757100e+02
-9 711     -1.085600e+02 2.710300e+02
-11 711     5.021700e+02 -2.780300e+02
-12 711     1.000800e+02 5.185400e+02
-0 712     -2.638500e+02 5.716998e+01
-1 712     -2.428998e+01 1.479000e+02
-15 712     -3.875700e+02 1.775000e+02
-0 713     -3.100600e+02 2.223999e+01
-1 713     -8.017999e+01 1.282300e+02
-2 713     -4.243100e+02 -2.323300e+02
-10 713     -4.577600e+02 1.357700e+02
-13 713     2.270020e+00 -2.540400e+02
-15 713     -4.450300e+02 1.230800e+02
-0 714     -1.991900e+02 3.403800e+02
-1 714     1.349000e+02 4.002600e+02
-2 714     -4.744200e+02 6.362000e+01
-5 714     1.971700e+02 -3.227900e+02
-7 714     -4.030500e+02 3.801600e+02
-8 714     -3.091700e+02 4.048999e+01
-13 714     3.190002e+01 2.226001e+01
-14 714     1.145300e+02 -4.109100e+02
-0 715     1.565997e+01 4.723000e+02
-1 715     3.852100e+02 4.766000e+02
-2 715     -2.745200e+02 2.294400e+02
-4 715     -2.159973e+00 -3.669700e+02
-8 715     -1.465100e+02 1.732300e+02
-12 715     -2.831400e+02 4.769600e+02
-14 715     3.287600e+02 -2.641900e+02
-0 716     -4.524100e+02 4.170800e+02
-1 716     -9.478003e+01 5.364600e+02
-2 716     -7.448000e+02 1.592700e+02
-5 716     -4.665002e+01 -2.346300e+02
-8 716     -5.301900e+02 1.100900e+02
-10 716     -6.866900e+02 5.988900e+02
-12 716     -8.087200e+02 3.416800e+02
-14 716     -1.291300e+02 -3.285400e+02
-0 717     -1.152300e+02 -4.971801e+02
-1 717     -8.898999e+01 -4.119400e+02
-0 718     2.983400e+02 5.797000e+02
-1 718     7.240500e+02 5.188000e+02
-6 718     -1.736600e+02 6.797400e+02
-8 718     4.941998e+01 2.717200e+02
-9 718     -1.869300e+02 3.753300e+02
-11 718     4.077900e+02 -1.834200e+02
-13 718     4.225300e+02 2.551500e+02
-14 718     5.974700e+02 -1.410500e+02
-0 719     -2.752100e+02 4.217300e+02
-1 719     7.834003e+01 4.989600e+02
-7 719     -4.906300e+02 4.567900e+02
-8 719     -3.756900e+02 1.185100e+02
-12 719     -5.975000e+02 3.739800e+02
-13 719     -2.765002e+01 8.964999e+01
-0 720     -2.584900e+02 4.176100e+02
-1 720     9.407001e+01 4.912100e+02
-2 720     -5.376800e+02 1.606700e+02
-4 720     -1.309998e+01 -2.035700e+02
-5 720     1.450000e+02 -2.377200e+02
-7 720     -4.732600e+02 4.546900e+02
-8 720     -3.611800e+02 1.156200e+02
-10 720     -4.475700e+02 6.148700e+02
-11 720     -8.228003e+01 -3.391500e+02
-12 720     -5.778300e+02 3.724600e+02
-14 720     6.103998e+01 -3.272000e+02
-0 721     2.268500e+02 -3.420001e+01
-1 721     3.732500e+02 -7.283002e+01
-2 721     3.830000e+02 3.928003e+01
-3 721     2.781801e+02 -2.666900e+02
-6 721     2.202200e+02 5.207001e+01
-7 721     1.447500e+02 1.171300e+02
-10 721     1.724900e+02 1.248500e+02
-13 721     5.739900e+02 -2.327300e+02
-0 722     8.159998e+01 -1.626001e+01
-1 722     2.327400e+02 -1.034998e+01
-3 722     1.502900e+02 -2.765500e+02
-4 722     -2.946400e+02 -4.786300e+02
-8 722     2.299000e+02 -2.254001e+01
-9 722     9.551001e+01 1.225300e+02
-10 722     3.099976e+00 1.308500e+02
-12 722     8.226001e+01 7.813000e+01
-13 722     4.505000e+02 -2.278100e+02
-15 722     7.708002e+01 1.257200e+02
-0 723     1.575200e+02 -1.488100e+02
-1 723     2.663500e+02 -1.641800e+02
-2 723     3.714100e+02 -8.290997e+01
-3 723     2.768500e+02 -3.827700e+02
-7 723     9.881000e+01 -6.109985e+00
-10 723     1.036500e+02 -1.446997e+01
-13 723     5.328300e+02 -3.375100e+02
-15 723     1.983700e+02 -4.347998e+01
-0 724     5.065200e+02 3.321400e+02
-1 724     8.508600e+02 2.058500e+02
-7 724     3.024301e+02 4.762100e+02
-8 724     3.169000e+02 1.627200e+02
-9 724     1.177900e+02 2.793400e+02
-0 725     3.162800e+02 -1.061000e+02
-1 725     4.463101e+02 -1.743200e+02
-2 725     4.751899e+02 -2.903998e+01
-7 725     2.387600e+02 5.853998e+01
-10 725     2.827100e+02 5.144000e+01
-13 725     6.542800e+02 -2.911600e+02
-15 725     4.119500e+02 3.529999e+01
-0 726     1.968700e+02 -1.006100e+02
-1 726     3.230800e+02 -1.294400e+02
-3 726     2.793500e+02 -3.374800e+02
-15 726     2.460699e+02 2.717999e+01
-0 727     -2.704300e+02 4.298900e+02
-1 727     8.482001e+01 5.055900e+02
-2 727     -5.510300e+02 1.756100e+02
-4 727     -5.929993e+00 -1.977700e+02
-5 727     1.340800e+02 -2.253800e+02
-7 727     -4.871400e+02 4.659300e+02
-8 727     -3.726900e+02 1.253000e+02
-11 727     -9.279999e+01 -3.294600e+02
-12 727     -5.943900e+02 3.832700e+02
-13 727     -2.369000e+01 9.742001e+01
-14 727     4.984998e+01 -3.143500e+02
-0 728     -2.704300e+02 4.298900e+02
-1 728     8.482001e+01 5.055900e+02
-2 728     -5.510300e+02 1.756100e+02
-7 728     -4.871400e+02 4.659300e+02
-0 729     -1.444000e+01 5.471997e+01
-1 729     1.662400e+02 8.576001e+01
-3 729     9.919983e+00 -2.511800e+02
-7 729     -1.118100e+02 1.629800e+02
-10 729     -1.161000e+02 2.032000e+02
-15 729     -6.113000e+01 2.094700e+02
-0 730     3.272998e+01 -1.589800e+02
-1 730     1.432700e+02 -1.352100e+02
-3 730     1.623300e+02 -4.323600e+02
-7 730     -2.340997e+01 -3.903998e+01
-10 730     -3.865997e+01 -3.960999e+01
-12 730     6.859003e+01 -1.014400e+02
-13 730     4.230699e+02 -3.576800e+02
-15 730     3.053003e+01 -7.390002e+01
-0 731     1.433300e+02 3.609003e+01
-1 731     3.099000e+02 2.289001e+01
-7 731     5.244000e+01 1.737700e+02
-13 731     4.958500e+02 -1.784500e+02
-15 731     1.538101e+02 2.060200e+02
-0 732     1.433300e+02 3.609003e+01
-1 732     3.099000e+02 2.289001e+01
-7 732     5.244000e+01 1.737700e+02
-10 732     6.789001e+01 1.974100e+02
-13 732     4.958500e+02 -1.784500e+02
-15 732     1.538101e+02 2.060200e+02
-0 733     5.743900e+02 1.006100e+02
-1 733     8.342800e+02 -5.620001e+01
-2 733     4.823199e+02 6.721997e+01
-3 733     3.496899e+02 -2.460800e+02
-6 733     3.950700e+02 2.377900e+02
-8 733     4.567300e+02 2.734000e+01
-9 733     2.772700e+02 1.535200e+02
-10 733     5.644800e+02 3.195100e+02
-13 733     7.815601e+02 -1.119100e+02
-0 734     5.743900e+02 1.006100e+02
-1 734     8.342800e+02 -5.620001e+01
-2 734     4.823199e+02 6.721997e+01
-8 734     4.567300e+02 2.734000e+01
-10 734     5.644800e+02 3.195100e+02
-13 734     7.815601e+02 -1.119100e+02
-0 735     -4.454700e+02 4.019700e+02
-1 735     -9.166998e+01 5.206500e+02
-7 735     -6.646700e+02 4.164500e+02
-10 735     -6.753400e+02 5.801900e+02
-12 735     -7.974200e+02 3.229000e+02
-0 736     -2.699800e+02 4.510200e+02
-1 736     9.040997e+01 5.266300e+02
-2 736     -5.509500e+02 2.013700e+02
-5 736     1.368800e+02 -2.016000e+02
-7 736     -4.897000e+02 4.884700e+02
-11 736     -9.189001e+01 -3.102300e+02
-12 736     -5.969100e+02 4.113700e+02
-14 736     5.160999e+01 -2.924500e+02
-0 737     1.374800e+02 -1.700400e+02
-1 737     2.403700e+02 -1.786100e+02
-2 737     3.597300e+02 -1.100400e+02
-8 737     3.210400e+02 -1.413900e+02
-15 737     1.738000e+02 -7.496002e+01
-0 738     -2.369300e+02 4.013000e+02
-1 738     1.112900e+02 4.698100e+02
-2 738     -5.145200e+02 1.406600e+02
-7 738     -4.491900e+02 4.397200e+02
-12 738     -5.502100e+02 3.556800e+02
-0 739     -1.333700e+02 3.475700e+02
-1 739     2.024600e+02 3.900900e+02
-2 739     -4.080500e+02 7.475000e+01
-5 739     2.642500e+02 -3.154100e+02
-7 739     -3.379700e+02 3.953300e+02
-8 739     -2.550500e+02 5.023999e+01
-9 739     -4.910200e+02 1.235700e+02
-11 739     3.075000e+01 -4.017800e+02
-13 739     8.487000e+01 3.153003e+01
-14 739     1.805500e+02 -4.022400e+02
-0 740     4.585999e+01 5.623600e+02
-1 740     4.411801e+02 5.622900e+02
-8 740     -1.299800e+02 2.546500e+02
-9 740     -3.701800e+02 3.537600e+02
-11 740     1.846900e+02 -2.088000e+02
-12 740     -2.663200e+02 5.879400e+02
-0 741     -2.079500e+02 5.040800e+02
-1 741     1.648500e+02 5.643700e+02
-5 741     2.019600e+02 -1.461400e+02
-7 741     -4.339300e+02 5.513800e+02
-8 741     -3.234100e+02 1.989900e+02
-12 741     -5.347900e+02 4.857600e+02
-0 742     3.362000e+01 5.460700e+02
-1 742     4.239301e+02 5.484700e+02
-2 742     -2.638600e+02 3.123600e+02
-0 743     -2.146000e+02 4.062200e+02
-1 743     1.347600e+02 4.690900e+02
-2 743     -4.924900e+02 1.469700e+02
-8 743     -3.244800e+02 1.055300e+02
-11 743     -4.326001e+01 -3.492400e+02
-14 743     1.036500e+02 -3.393000e+02
-0 744     2.083199e+02 -5.617999e+01
-1 744     3.476200e+02 -8.885999e+01
-2 744     3.754301e+02 1.576001e+01
-6 744     2.099300e+02 2.334998e+01
-7 744     1.309400e+02 9.285999e+01
-8 744     3.399100e+02 -3.582001e+01
-10 744     1.539000e+02 9.752002e+01
-13 744     5.619200e+02 -2.527500e+02
-15 744     2.557800e+02 8.889001e+01
-0 745     2.495601e+02 -2.038600e+02
-1 745     3.420699e+02 -2.488700e+02
-2 745     4.735699e+02 -1.220500e+02
-6 745     3.059000e+02 -1.248400e+02
-7 745     1.964600e+02 -4.502002e+01
-8 745     4.175900e+02 -1.521900e+02
-10 745     2.160000e+02 -6.827002e+01
-12 745     3.274600e+02 -8.854999e+01
-13 745     6.197500e+02 -3.801300e+02
-15 745     3.314301e+02 -1.063700e+02
-0 746     7.065997e+01 -7.788000e+01
-1 746     2.041200e+02 -6.779999e+01
-2 746     2.538300e+02 -3.487000e+01
-3 746     1.643400e+02 -3.397700e+02
-7 746     2.100220e-01 4.853003e+01
-8 746     2.363800e+02 -7.737000e+01
-10 746     -3.000000e+00 5.840002e+01
-13 746     4.466300e+02 -2.827000e+02
-0 747     8.051001e+01 -3.753998e+01
-1 747     2.250699e+02 -3.104999e+01
-2 747     2.518000e+02 1.222998e+01
-3 747     1.586600e+02 -2.950800e+02
-4 747     -3.095200e+02 -4.772100e+02
-6 747     7.459998e+01 4.869995e+00
-7 747     3.719971e+00 9.082999e+01
-8 747     2.352100e+02 -3.894000e+01
-10 747     3.840027e+00 1.054600e+02
-12 747     8.787000e+01 5.606000e+01
-13 747     4.516801e+02 -2.463400e+02
-15 747     7.869000e+01 9.707001e+01
-0 748     -1.376600e+02 9.789999e+01
-1 748     8.312000e+01 1.573000e+02
-2 748     -1.431600e+02 -1.000000e+01
-3 748     -2.358400e+02 -3.296100e+02
-4 748     -1.984500e+02 -2.927300e+02
-5 748     4.018101e+02 -5.740699e+02
-6 748     -3.254200e+02 4.597998e+01
-7 748     -2.631200e+02 1.722700e+02
-8 748     -7.428003e+01 -4.056000e+01
-9 748     -2.361800e+02 6.791998e+01
-10 748     -2.643300e+02 2.415100e+02
-12 748     -2.687000e+02 1.002300e+02
-13 748     1.933800e+02 -1.619600e+02
-15 748     -2.283300e+02 2.509400e+02
-0 749     3.468500e+02 -6.328003e+01
-1 749     4.963700e+02 -1.422100e+02
-3 749     3.539700e+02 -3.031300e+02
-7 749     2.567500e+02 1.014200e+02
-8 749     4.228500e+02 -4.482999e+01
-9 749     2.739100e+02 1.014200e+02
-10 749     3.142100e+02 1.033700e+02
-12 749     3.663400e+02 7.783002e+01
-13 749     6.663000e+02 -2.540400e+02
-15 749     4.502400e+02 9.726001e+01
-0 750     6.509100e+02 -1.941998e+01
-1 750     8.767300e+02 -2.076400e+02
-2 750     6.027600e+02 -1.713000e+01
-7 750     5.037400e+02 1.709000e+02
-10 750     6.639600e+02 1.874800e+02
-0 751     1.421200e+02 -2.589000e+02
-1 751     2.176500e+02 -2.669900e+02
-2 751     3.999600e+02 -2.029600e+02
-6 751     2.201800e+02 -2.208199e+02
-7 751     1.032700e+02 -1.174600e+02
-9 751     2.335800e+02 -6.642999e+01
-12 751     2.286000e+02 -1.832900e+02
-15 751     1.921000e+02 -1.944500e+02
-0 752     5.428600e+02 1.565400e+02
-1 752     8.187400e+02 1.209998e+01
-2 752     4.349000e+02 1.087800e+02
-3 752     2.983600e+02 -2.065900e+02
-6 752     3.418300e+02 2.894000e+02
-7 752     3.730699e+02 3.203100e+02
-8 752     4.156100e+02 6.248001e+01
-10 752     5.233101e+02 3.819200e+02
-12 752     4.309000e+02 2.984600e+02
-13 752     7.446200e+02 -6.741998e+01
-0 753     1.284900e+02 -4.252002e+01
-1 753     2.702900e+02 -5.046997e+01
-2 753     3.015900e+02 1.851001e+01
-6 753     1.281100e+02 1.573999e+01
-7 753     5.217999e+01 9.409000e+01
-10 753     5.984003e+01 1.052100e+02
-13 753     4.943500e+02 -2.463300e+02
-15 753     1.445500e+02 9.679001e+01
-0 754     1.810400e+02 -1.095400e+02
-1 754     3.044399e+02 -1.331600e+02
-2 754     3.679800e+02 -4.710999e+01
-6 754     1.985100e+02 -4.565997e+01
-8 754     3.319000e+02 -8.792999e+01
-9 754     1.982100e+02 5.987000e+01
-12 754     2.191500e+02 -2.309998e+00
-15 754     2.256100e+02 1.290997e+01
-0 755     6.879999e+01 -7.390997e+01
-1 755     2.035100e+02 -6.334003e+01
-3 755     1.599100e+02 -3.359400e+02
-7 755     -2.219971e+00 5.273999e+01
-9 755     1.021200e+02 6.862000e+01
-15 755     6.778003e+01 4.671002e+01
-0 756     1.647200e+02 -4.734003e+01
-1 756     3.055400e+02 -6.654999e+01
-4 756     -3.300700e+02 -5.458700e+02
-6 756     1.671600e+02 2.137000e+01
-9 756     1.717400e+02 1.146000e+02
-15 756     1.950800e+02 9.514001e+01
-0 757     2.283002e+01 -5.015002e+01
-1 757     1.669800e+02 -2.727002e+01
-2 757     1.910800e+02 -2.273999e+01
-4 757     -3.108800e+02 -4.289500e+02
-7 757     -5.321002e+01 6.642999e+01
-9 757     5.317999e+01 7.234003e+01
-13 757     3.995699e+02 -2.638900e+02
-0 758     6.510800e+02 -7.752002e+01
-1 758     8.586200e+02 -2.691600e+02
-2 758     6.209000e+02 -7.833002e+01
-7 758     5.118300e+02 1.146000e+02
-8 758     5.674700e+02 -9.529999e+01
-12 758     6.183000e+02 7.908002e+01
-0 759     1.836700e+02 -3.548999e+01
-1 759     3.284500e+02 -6.073999e+01
-2 759     3.454700e+02 3.385999e+01
-3 759     2.438500e+02 -2.726500e+02
-4 759     -3.240800e+02 -5.615400e+02
-7 759     1.039600e+02 1.093900e+02
-9 759     1.756500e+02 1.257000e+02
-10 759     1.229800e+02 1.190400e+02
-0 760     -2.902500e+02 7.341998e+01
-1 760     -4.297998e+01 1.702100e+02
-7 760     -4.368900e+02 1.057600e+02
-15 760     -4.256900e+02 1.961000e+02
-0 761     -3.094700e+02 7.076001e+01
-1 761     -6.190997e+01 1.730000e+02
-13 761     -9.659973e+00 -2.120800e+02
-0 762     -3.094700e+02 7.076001e+01
-1 762     -6.190997e+01 1.730000e+02
-10 762     -4.642100e+02 1.923100e+02
-0 763     -2.406200e+02 4.220200e+02
-1 763     1.125100e+02 4.909900e+02
-2 763     -5.204100e+02 1.660500e+02
-5 763     1.630600e+02 -2.328700e+02
-7 763     -4.558700e+02 4.611200e+02
-8 763     -3.472300e+02 1.201800e+02
-11 763     -6.647998e+01 -3.354400e+02
-13 763     -2.899780e-01 9.157999e+01
-0 764     -2.283400e+02 2.496800e+02
-1 764     7.962000e+01 3.199400e+02
-7 764     -4.148000e+02 2.853400e+02
-15 764     -3.626500e+02 4.460000e+02
-0 765     -2.229900e+02 2.162600e+02
-1 765     7.207001e+01 2.870300e+02
-7 765     -4.021400e+02 2.539200e+02
-11 765     -5.725000e+01 -5.251600e+02
-0 766     -3.926400e+02 7.120001e+01
-1 766     -1.385100e+02 1.954600e+02
-10 766     -5.628500e+02 1.848500e+02
-0 767     -3.489300e+02 2.251400e+02
-1 767     -4.342999e+01 3.275500e+02
-7 767     -5.359800e+02 2.426300e+02
-11 767     -1.720300e+02 -5.144500e+02
-13 767     -8.379999e+01 -8.478998e+01
-0 768     -2.929600e+02 4.023100e+02
-1 768     5.603003e+01 4.844700e+02
-5 768     1.096200e+02 -2.534000e+02
-7 768     -5.061600e+02 4.344900e+02
-8 768     -3.903700e+02 9.960999e+01
-10 768     -4.871800e+02 5.930500e+02
-11 768     -1.133600e+02 -3.528000e+02
-12 768     -6.151500e+02 3.476600e+02
-13 768     -4.207001e+01 7.267999e+01
-14 768     2.596997e+01 -3.437600e+02
-0 769     -2.924900e+02 7.789001e+01
-1 769     -4.370001e+01 1.750400e+02
-5 769     1.493500e+02 -6.118000e+02
-7 769     -4.399600e+02 1.096200e+02
-13 769     4.219971e+00 -2.047100e+02
-15 769     -4.288300e+02 2.016600e+02
-0 770     -4.485300e+02 3.194900e+02
-1 770     -1.108600e+02 4.480500e+02
-11 770     -2.526600e+02 -4.248500e+02
-0 771     -5.339100e+02 3.950000e+02
-1 771     -1.766700e+02 5.346700e+02
-10 771     -7.849800e+02 5.646900e+02
-11 771     -3.236500e+02 -3.553300e+02
-13 771     -2.350000e+02 5.634998e+01
-0 772     -2.162300e+02 4.290000e+02
-1 772     1.386500e+02 4.917600e+02
-2 772     -4.956400e+02 1.745600e+02
-7 772     -4.320700e+02 4.710200e+02
-14 772     1.025000e+02 -3.150600e+02
-0 773     -5.226500e+02 3.506200e+02
-1 773     -1.767500e+02 4.896300e+02
-10 773     -7.634700e+02 5.110500e+02
-11 773     -3.184700e+02 -3.952200e+02
-15 773     -7.921300e+02 5.492600e+02
-0 774     -2.329900e+02 4.417800e+02
-1 774     1.248300e+02 5.082900e+02
-4 774     -1.719971e+00 -2.199400e+02
-5 774     1.722600e+02 -2.124200e+02
-8 774     -3.417000e+02 1.382900e+02
-11 774     -5.931000e+01 -3.181500e+02
-12 774     -5.530700e+02 4.046400e+02
-13 774     6.270020e+00 1.092300e+02
-0 775     -2.230200e+02 3.983300e+02
-1 775     1.244400e+02 4.634500e+02
-11 775     -5.106000e+01 -3.563400e+02
-14 775     9.422998e+01 -3.480500e+02
-0 776     -2.178500e+02 4.257700e+02
-1 776     1.362700e+02 4.891100e+02
-2 776     -4.974000e+02 1.699200e+02
-7 776     -4.330800e+02 4.678900e+02
-14 776     1.009000e+02 -3.184100e+02
-0 777     -2.650100e+02 4.342800e+02
-1 777     9.152002e+01 5.087800e+02
-2 777     -5.452200e+02 1.806700e+02
-4 777     -3.330017e+00 -2.016600e+02
-5 777     1.401900e+02 -2.198300e+02
-7 777     -4.821900e+02 4.712600e+02
-8 777     -3.677300e+02 1.311300e+02
-11 777     -8.762000e+01 -3.250700e+02
-12 777     -5.883600e+02 3.911600e+02
-13 777     -1.932001e+01 1.009800e+02
-14 777     5.540002e+01 -3.100800e+02
-0 778     -5.595001e+01 -6.734998e+01
-1 778     9.070001e+01 -2.083002e+01
-7 778     -1.324100e+02 3.392999e+01
-10 778     -1.508800e+02 5.669000e+01
-13 778     3.250699e+02 -2.870000e+02
-15 778     -1.002700e+02 3.763000e+01
-0 779     -3.225800e+02 3.456800e+02
-1 779     1.408002e+01 4.365200e+02
-2 779     -6.026500e+02 6.803998e+01
-14 779     -8.109985e+00 -4.063000e+02
-15 779     -5.099100e+02 5.679000e+02
-0 780     -4.260000e+02 4.130900e+02
-1 780     -7.048999e+01 5.266300e+02
-7 780     -6.459800e+02 4.308200e+02
-8 780     -5.056300e+02 1.067300e+02
-12 780     -7.752900e+02 3.409000e+02
-13 780     -1.483300e+02 7.628998e+01
-14 780     -1.035600e+02 -3.330900e+02
-0 781     -3.121600e+02 3.262100e+02
-1 781     2.019000e+01 4.149800e+02
-7 781     -5.151400e+02 3.515400e+02
-10 781     -4.992400e+02 4.984300e+02
-14 781     7.199707e-01 -4.277700e+02
-15 781     -4.911700e+02 5.422300e+02
-0 782     -2.162300e+02 4.290000e+02
-1 782     1.386500e+02 4.917600e+02
-2 782     -4.956400e+02 1.745600e+02
-5 782     1.878500e+02 -2.259500e+02
-7 782     -4.320700e+02 4.710200e+02
-12 782     -5.312900e+02 3.915200e+02
-14 782     1.025000e+02 -3.150600e+02
-0 783     -1.068800e+02 -5.352200e+02
-1 783     -9.588000e+01 -4.491500e+02
-0 784     -2.542200e+02 -4.306800e+02
-1 784     -1.916600e+02 -3.055700e+02
-6 784     -2.070200e+02 -6.229200e+02
-7 784     -2.756000e+02 -3.777100e+02
-9 784     -9.219000e+01 -4.241200e+02
-0 785     -1.492700e+02 -5.222000e+02
-1 785     -1.298300e+02 -4.230300e+02
-4 785     -6.566700e+02 -2.665200e+02
-7 785     -1.455100e+02 -4.435400e+02
-9 785     7.373999e+01 -4.432600e+02
-0 786     -1.916400e+02 -5.028400e+02
-1 786     -1.615900e+02 -3.914400e+02
-4 786     -6.289800e+02 -2.331000e+02
-6 786     -8.298001e+01 -6.696700e+02
-7 786     -1.943600e+02 -4.340400e+02
-9 786     1.991998e+01 -4.476500e+02
-0 787     -1.593900e+02 -5.170300e+02
-1 787     -1.371400e+02 -4.149100e+02
-6 787     -3.512000e+01 -6.683500e+02
-7 787     -1.568500e+02 -4.408900e+02
-0 788     7.440997e+01 -2.972998e+01
-1 788     2.216400e+02 -2.159998e+01
-3 788     1.495500e+02 -2.896000e+02
-4 788     -3.031600e+02 -4.726000e+02
-9 788     9.345001e+01 1.094900e+02
-15 788     6.932001e+01 1.069300e+02
-0 789     -1.494900e+02 -4.932800e+02
-1 789     -1.194200e+02 -3.964300e+02
-6 789     -4.008002e+01 -6.389301e+02
-7 789     -1.527300e+02 -4.157000e+02
-9 789     5.325000e+01 -4.242700e+02
-12 789     -5.852002e+01 -5.887700e+02
-0 790     -1.670400e+02 -4.871300e+02
-1 790     -1.334400e+02 -3.847700e+02
-6 790     -6.340997e+01 -6.403400e+02
-7 790     -1.720100e+02 -4.137200e+02
-9 790     3.415002e+01 -4.270000e+02
-0 791     -1.742400e+02 -5.134500e+02
-1 791     -1.496100e+02 -4.067300e+02
-6 791     -5.577002e+01 -6.718600e+02
-7 791     -1.730900e+02 -4.407700e+02
-0 792     -1.063300e+02 -2.346100e+02
-1 792     -5.399780e-01 -1.658000e+02
-4 792     -4.286100e+02 -3.113900e+02
-6 792     -1.079900e+02 -3.142000e+02
-10 792     -1.916700e+02 -1.418500e+02
-12 792     -9.962000e+01 -2.600400e+02
-13 792     2.841200e+02 -4.482800e+02
-15 792     -1.446000e+02 -1.945900e+02
-0 793     9.134003e+01 7.904999e+01
-1 793     2.732100e+02 7.985999e+01
-4 793     -2.294600e+02 -4.848199e+02
-10 793     4.099976e+00 2.415300e+02
-13 793     4.425601e+02 -1.474100e+02
-15 793     7.856000e+01 2.575000e+02
-0 794     5.969971e+00 -2.653300e+02
-1 794     8.969000e+01 -2.304000e+02
-4 794     -4.720000e+02 -4.068500e+02
-7 794     -3.465002e+01 -1.521300e+02
-10 794     -5.770001e+01 -1.645500e+02
-13 794     4.051600e+02 -4.592700e+02
-15 794     9.710022e+00 -2.210400e+02
-0 795     -3.157700e+02 3.880900e+02
-1 795     3.041998e+01 4.763600e+02
-2 795     -5.966200e+02 1.225800e+02
-7 795     -5.277900e+02 4.167800e+02
-10 795     -5.132200e+02 5.737900e+02
-12 795     -6.395100e+02 3.258900e+02
-14 795     2.159973e+00 -3.597000e+02
-0 796     -3.435300e+02 3.439500e+02
-1 796     -7.299988e+00 4.382500e+02
-2 796     -6.254900e+02 7.027002e+01
-4 796     -4.589001e+01 -1.493300e+02
-5 796     5.266998e+01 -3.131200e+02
-8 796     -4.324700e+02 4.354999e+01
-10 796     -5.407400e+02 5.167700e+02
-11 796     -1.605200e+02 -4.109900e+02
-12 796     -6.660300e+02 2.719200e+02
-15 796     -5.385900e+02 5.580100e+02
-0 797     -3.485900e+02 3.320300e+02
-1 797     -1.452002e+01 4.297100e+02
-8 797     -4.379200e+02 2.645999e+01
-10 797     -5.451300e+02 5.018600e+02
-11 797     -1.668500e+02 -4.156100e+02
-14 797     -3.520001e+01 -4.217200e+02
-0 798     -7.953200e+02 5.884998e+01
-1 798     -4.946900e+02 2.844400e+02
-0 799     -3.008500e+02 4.894800e+02
-1 799     6.883002e+01 5.716200e+02
-2 799     -5.833900e+02 2.485000e+02
-5 799     1.104700e+02 -1.609100e+02
-7 799     -5.267500e+02 5.259000e+02
-8 799     -3.991800e+02 1.835900e+02
-12 799     -6.391000e+02 4.545300e+02
-0 800     -4.203900e+02 3.213700e+02
-1 800     -8.544000e+01 4.362100e+02
-7 800     -6.261300e+02 3.327300e+02
-10 800     -6.313500e+02 4.833200e+02
-11 800     -2.291600e+02 -4.246100e+02
-15 800     -6.423300e+02 5.205100e+02
-0 801     -2.026800e+02 4.509300e+02
-1 801     1.574700e+02 5.101300e+02
-2 801     -4.831200e+02 2.012000e+02
-5 801     2.028300e+02 -2.024000e+02
-7 801     -4.214200e+02 4.956500e+02
-11 801     -3.226001e+01 -3.100300e+02
-12 801     -5.200100e+02 4.207900e+02
-13 801     3.029999e+01 1.177400e+02
-14 801     1.167800e+02 -2.917600e+02
-0 802     -2.415700e+02 4.378800e+02
-1 802     1.154400e+02 5.068400e+02
-2 802     -5.215600e+02 1.846300e+02
-5 802     1.636300e+02 -2.165600e+02
-7 802     -4.589400e+02 4.775600e+02
-8 802     -3.484700e+02 1.345800e+02
-12 802     -5.618500e+02 3.989000e+02
-0 803     -2.603100e+02 3.995400e+02
-1 803     8.787000e+01 4.740400e+02
-5 803     1.424400e+02 -2.572100e+02
-8 803     -3.619800e+02 9.817999e+01
-11 803     -8.362000e+01 -3.555000e+02
-12 803     -5.764000e+02 3.492200e+02
-13 803     -1.609998e+01 7.113000e+01
-0 804     -2.512900e+02 4.232900e+02
-1 804     1.013600e+02 4.952500e+02
-4 804     -1.325000e+01 -2.063900e+02
-0 805     -2.882400e+02 3.830100e+02
-1 805     5.626001e+01 4.645100e+02
-5 805     1.123700e+02 -2.749400e+02
-7 805     -4.987700e+02 4.147400e+02
-8 805     -3.851300e+02 8.081000e+01
-10 805     -4.786400e+02 5.696100e+02
-11 805     -1.094300e+02 -3.694900e+02
-12 805     -6.062100e+02 3.249500e+02
-13 805     -3.864001e+01 5.545001e+01
-14 805     2.916998e+01 -3.656800e+02
-0 806     -5.062200e+02 2.274800e+02
-1 806     -1.886100e+02 3.689100e+02
-4 806     -9.771997e+01 -4.825000e+01
-0 807     -2.458400e+02 4.419100e+02
-1 807     1.121300e+02 5.118800e+02
-2 807     -5.261800e+02 1.904400e+02
-5 807     1.598400e+02 -2.116100e+02
-7 807     -4.640100e+02 4.815100e+02
-12 807     -5.674700e+02 4.037900e+02
-14 807     7.438000e+01 -3.017000e+02
-0 808     -4.135000e+02 2.665000e+02
-1 808     -9.090002e+01 3.825700e+02
-7 808     -6.113800e+02 2.757200e+02
-0 809     -3.210500e+02 3.504600e+02
-1 809     1.646997e+01 4.405500e+02
-2 809     -6.014200e+02 7.427002e+01
-7 809     -5.280500e+02 3.762500e+02
-8 809     -4.124600e+02 4.589999e+01
-10 809     -5.141100e+02 5.268400e+02
-12 809     -6.393200e+02 2.779300e+02
-14 809     -6.359985e+00 -4.010600e+02
-15 809     -5.087100e+02 5.745400e+02
-0 810     -4.004900e+02 4.178400e+02
-1 810     -4.475000e+01 5.253300e+02
-2 810     -6.872900e+02 1.596600e+02
-5 810     5.109985e+00 -2.351000e+02
-7 810     -6.198500e+02 4.387200e+02
-8 810     -4.829500e+02 1.115400e+02
-10 810     -6.224200e+02 6.038800e+02
-12 810     -7.450600e+02 3.501300e+02
-0 811     -5.904200e+02 4.103300e+02
-1 811     -2.258000e+02 5.615000e+02
-7 811     -8.227000e+02 4.096400e+02
-11 811     -3.705600e+02 -3.413500e+02
-14 811     -2.644000e+02 -3.351100e+02
-0 812     -3.010700e+02 3.388300e+02
-1 812     3.335999e+01 4.248900e+02
-2 812     -5.797300e+02 6.257001e+01
-5 812     9.548999e+01 -3.253100e+02
-8 812     -3.955800e+02 3.748001e+01
-10 812     -4.883000e+02 5.106100e+02
-12 812     -6.172100e+02 2.719700e+02
-0 813     4.539001e+01 -7.023999e+01
-1 813     1.822600e+02 -5.247998e+01
-2 813     2.238600e+02 -3.510999e+01
-3 813     1.345300e+02 -3.407900e+02
-4 813     -3.291800e+02 -4.486500e+02
-7 813     -2.715002e+01 5.171997e+01
-9 813     7.952002e+01 6.470001e+01
-15 813     3.560999e+01 4.803003e+01
-0 814     -5.309000e+02 3.381200e+02
-1 814     -1.858000e+02 4.746300e+02
-15 814     -7.983900e+02 5.230200e+02
-0 815     -2.103900e+02 4.027200e+02
-1 815     1.381600e+02 4.648200e+02
-2 815     -4.851800e+02 1.476600e+02
-4 815     -2.338000e+01 -2.321400e+02
-8 815     -3.185800e+02 1.057700e+02
-14 815     1.065000e+02 -3.425200e+02
-0 816     -4.051600e+02 3.706200e+02
-1 816     -6.082001e+01 4.818000e+02
-2 816     -6.892400e+02 1.011800e+02
-4 816     -2.725000e+01 -1.196900e+02
-7 816     -6.159400e+02 3.887000e+02
-10 816     -6.202100e+02 5.444600e+02
-11 816     -2.144800e+02 -3.791000e+02
-13 816     -1.312300e+02 4.056000e+01
-0 817     -2.584200e+02 4.247400e+02
-1 817     9.535999e+01 4.977900e+02
-2 817     -5.378900e+02 1.690100e+02
-4 817     -8.809998e+00 -2.045000e+02
-5 817     1.460600e+02 -2.294400e+02
-7 817     -4.744400e+02 4.618800e+02
-8 817     -3.618100e+02 1.225500e+02
-11 817     -8.240002e+01 -3.334600e+02
-12 817     -5.790800e+02 3.808600e+02
-13 817     -1.432001e+01 9.320001e+01
-14 817     6.104999e+01 -3.199800e+02
-0 818     6.348500e+02 -3.428003e+01
-1 818     8.553199e+02 -2.183200e+02
-2 818     5.900000e+02 -4.187000e+01
-7 818     4.900800e+02 1.533500e+02
-8 818     5.420100e+02 -6.478998e+01
-12 818     5.877800e+02 1.202900e+02
-13 818     8.632000e+02 -2.259800e+02
-15 818     8.605400e+02 1.762500e+02
-0 819     -3.205300e+02 1.972600e+02
-1 819     -2.695001e+01 2.941100e+02
-7 819     -4.986100e+02 2.205100e+02
-0 820     -4.305600e+02 4.729600e+02
-1 820     -6.125000e+01 5.854000e+02
-2 820     -7.201900e+02 2.298600e+02
-5 820     -1.770001e+01 -1.766100e+02
-7 820     -6.595400e+02 4.945400e+02
-8 820     -5.107600e+02 1.656500e+02
-12 820     -7.913300e+02 4.157800e+02
-14 820     -1.012800e+02 -2.703700e+02
-0 821     -4.308100e+02 4.647000e+02
-1 821     -6.392999e+01 5.775500e+02
-2 821     -7.207500e+02 2.192800e+02
-7 821     -6.588900e+02 4.855600e+02
-8 821     -5.105000e+02 1.575200e+02
-12 821     -7.871400e+02 4.060500e+02
-14 821     -1.022500e+02 -2.788100e+02
-0 822     -4.004900e+02 4.178400e+02
-1 822     -4.475000e+01 5.253300e+02
-2 822     -6.872900e+02 1.596600e+02
-5 822     5.109985e+00 -2.351000e+02
-7 822     -6.198500e+02 4.387200e+02
-8 822     -4.829500e+02 1.115400e+02
-14 822     -7.804999e+01 -3.279900e+02
-0 823     -3.734200e+02 3.379100e+02
-1 823     -3.727002e+01 4.416700e+02
-7 823     -5.801700e+02 3.570900e+02
-10 823     -5.765200e+02 5.069300e+02
-15 823     -5.799000e+02 5.503400e+02
-0 824     -3.071100e+02 4.294400e+02
-1 824     4.870001e+01 5.142000e+02
-2 824     -5.888700e+02 1.748200e+02
-11 824     -1.250100e+02 -3.287400e+02
-14 824     1.409998e+01 -3.156000e+02
-0 825     -3.329800e+02 4.853700e+02
-1 825     3.612000e+01 5.749800e+02
-2 825     -6.166500e+02 2.436500e+02
-7 825     -5.592400e+02 5.182100e+02
-12 825     -6.763200e+02 4.446500e+02
-0 826     -2.904000e+02 1.073900e+02
-1 826     -2.917999e+01 2.005500e+02
-4 826     -1.849300e+02 -1.699400e+02
-8 826     -3.096200e+02 -1.429100e+02
-0 827     -3.051800e+02 2.200500e+02
-1 827     -4.619995e+00 3.117400e+02
-7 827     -4.880100e+02 2.447000e+02
-11 827     -1.323400e+02 -5.200400e+02
-0 828     -4.785100e+02 1.521900e+02
-1 828     -1.868400e+02 2.923800e+02
-7 828     -6.574200e+02 1.508100e+02
-0 829     -4.410600e+02 1.522700e+02
-1 829     -1.537500e+02 2.831900e+02
-7 829     -6.147700e+02 1.573200e+02
-13 829     -1.483600e+02 -1.510900e+02
-0 830     -4.872500e+02 1.293200e+02
-1 830     -2.036400e+02 2.734100e+02
-5 830     -8.926001e+01 -5.518199e+02
-7 830     -6.586600e+02 1.265500e+02
-0 831     -3.762000e+02 2.980700e+02
-1 831     -4.906000e+01 4.038200e+02
-5 831     1.398999e+01 -3.666600e+02
-7 831     -5.771500e+02 3.141500e+02
-10 831     -5.737000e+02 4.580600e+02
-14 831     -6.675000e+01 -4.587000e+02
-15 831     -5.763900e+02 4.939900e+02
-0 832     -4.639700e+02 1.373000e+02
-1 832     -1.799100e+02 2.749900e+02
-5 832     -6.634003e+01 -5.426899e+02
-7 832     -6.373000e+02 1.385500e+02
-10 832     -6.597800e+02 2.567000e+02
-13 832     -1.672200e+02 -1.651300e+02
-0 833     -4.395100e+02 1.569200e+02
-1 833     -1.507800e+02 2.869300e+02
-7 833     -6.153200e+02 1.622900e+02
-0 834     -2.964600e+02 1.998300e+02
-1 834     -3.260010e+00 2.904900e+02
-0 835     -4.403700e+02 1.406600e+02
-1 835     -1.573000e+02 2.721700e+02
-5 835     -3.790002e+01 -5.395800e+02
-0 836     -3.843900e+02 3.145400e+02
-1 836     -5.307001e+01 4.217900e+02
-5 836     7.919983e+00 -3.482100e+02
-7 836     -5.877800e+02 3.304700e+02
-10 836     -5.860700e+02 4.777700e+02
-11 836     -1.979000e+02 -4.305900e+02
-12 836     -7.083600e+02 2.212700e+02
-13 836     -1.182700e+02 -8.390015e+00
-14 836     -7.362000e+01 -4.414900e+02
-15 836     -5.908200e+02 5.162300e+02
-0 837     -3.130400e+02 4.296400e+02
-1 837     4.271002e+01 5.162500e+02
-2 837     -5.945500e+02 1.746300e+02
-5 837     9.254999e+01 -2.238300e+02
-7 837     -5.305600e+02 4.610900e+02
-8 837     -4.081100e+02 1.256000e+02
-12 837     -6.428600e+02 3.783000e+02
-14 837     8.309998e+00 -3.154300e+02
-0 838     -4.603600e+02 2.004100e+02
-1 838     -1.549400e+02 3.322900e+02
-7 838     -6.479200e+02 2.013000e+02
-10 838     -6.625500e+02 3.325400e+02
-13 838     -1.779400e+02 -1.117900e+02
-14 838     -1.555000e+02 -5.698000e+02
-0 839     -3.434500e+02 4.290000e+02
-1 839     1.303998e+01 5.223800e+02
-7 839     -5.619700e+02 4.570100e+02
-11 839     -1.566300e+02 -3.303500e+02
-12 839     -6.786900e+02 3.724400e+02
-0 840     -3.047600e+02 3.565500e+02
-1 840     3.381000e+01 4.429600e+02
-5 840     9.282001e+01 -3.032400e+02
-7 840     -5.120400e+02 3.847700e+02
-10 840     -4.951300e+02 5.357600e+02
-12 840     -6.212500e+02 2.884100e+02
-0 841     -3.071100e+02 4.294400e+02
-1 841     4.870001e+01 5.142000e+02
-2 841     -5.888700e+02 1.748200e+02
-7 841     -5.248400e+02 4.615700e+02
-8 841     -4.031500e+02 1.255000e+02
-11 841     -1.250100e+02 -3.287400e+02
-12 841     -6.364400e+02 3.790000e+02
-14 841     1.409998e+01 -3.156000e+02
-0 842     -3.909600e+02 2.903100e+02
-1 842     -6.497998e+01 4.002300e+02
-7 842     -5.915300e+02 3.037700e+02
-10 842     -5.908700e+02 4.473300e+02
-13 842     -1.246600e+02 -2.992999e+01
-14 842     -8.258002e+01 -4.679200e+02
-15 842     -5.956800e+02 4.813100e+02
-0 843     3.014200e+02 1.378998e+01
-1 843     4.705100e+02 -4.972998e+01
-7 843     2.033500e+02 1.717800e+02
-13 843     6.219399e+02 -1.890900e+02
-15 843     3.771500e+02 1.965600e+02
-0 844     2.946200e+02 6.059998e+00
-1 844     4.603000e+02 -5.469000e+01
-6 844     2.611300e+02 1.065700e+02
-7 844     1.990400e+02 1.637300e+02
-10 844     2.470900e+02 1.782500e+02
-12 844     2.981700e+02 1.480100e+02
-13 844     6.182400e+02 -1.962500e+02
-15 844     3.682100e+02 1.856500e+02
-0 845     3.198101e+02 -4.009998e+01
-1 845     4.737800e+02 -1.102000e+02
-7 845     2.281801e+02 1.209800e+02
-10 845     2.805300e+02 1.278100e+02
-15 845     4.092400e+02 1.256600e+02
-0 846     5.371002e+01 -2.197400e+02
-1 846     1.414200e+02 -1.999700e+02
-3 846     2.238500e+02 -4.717000e+02
-6 846     1.204400e+02 -2.036400e+02
-7 846     1.162000e+01 -9.337000e+01
-10 846     -7.530029e+00 -1.075500e+02
-12 846     1.206200e+02 -1.591500e+02
-13 846     4.558300e+02 -4.076300e+02
-15 846     6.628998e+01 -1.532900e+02
-0 847     2.295300e+02 3.507800e+02
-1 847     5.748101e+02 2.973500e+02
-2 847     -3.666998e+01 1.209000e+02
-7 847     1.827002e+01 4.452400e+02
-8 847     4.557001e+01 8.881000e+01
-13 847     3.905000e+02 5.741998e+01
-14 847     5.630699e+02 -3.842400e+02
-0 848     6.160699e+02 7.648999e+01
-1 848     8.704000e+02 -9.509998e+01
-2 848     5.386100e+02 6.320001e+01
-6 848     4.549200e+02 2.269100e+02
-7 848     4.567200e+02 2.565800e+02
-8 848     5.009600e+02 2.254999e+01
-9 848     3.224200e+02 1.534000e+02
-10 848     6.155400e+02 2.954900e+02
-12 848     5.389000e+02 2.359100e+02
-13 848     8.288700e+02 -1.281800e+02
-0 849     -2.112000e+01 6.328998e+01
-1 849     1.634301e+02 9.570999e+01
-3 849     -3.830017e+00 -2.467900e+02
-4 849     -2.268700e+02 -3.945800e+02
-5 849     5.984200e+02 -6.004301e+02
-7 849     -1.205300e+02 1.701400e+02
-8 849     1.022000e+02 1.151999e+01
-10 849     -1.249900e+02 2.122200e+02
-12 849     -7.410999e+01 1.329600e+02
-13 849     3.400699e+02 -1.712900e+02
-15 849     -7.121002e+01 2.201900e+02
-0 850     -3.488000e+01 6.392999e+01
-1 850     1.517600e+02 1.001900e+02
-4 850     -2.257800e+02 -3.836100e+02
-5 850     5.790800e+02 -6.004301e+02
-7 850     -1.360200e+02 1.680200e+02
-8 850     8.628998e+01 5.809998e+00
-10 850     -1.411400e+02 2.119200e+02
-12 850     -9.360999e+01 1.273700e+02
-15 850     -8.953998e+01 2.192600e+02
-0 851     2.194399e+02 9.820007e+00
-1 851     3.796899e+02 -2.660999e+01
-6 851     1.971600e+02 9.734998e+01
-7 851     1.299400e+02 1.588800e+02
-10 851     1.597000e+02 1.748100e+02
-12 851     2.249500e+02 1.432600e+02
-13 851     5.613700e+02 -1.954300e+02
-15 851     2.623800e+02 1.803500e+02
-0 852     2.298900e+02 -1.489001e+01
-1 852     3.827400e+02 -5.437000e+01
-2 852     3.767300e+02 5.716998e+01
-7 852     1.440400e+02 1.363900e+02
-15 852     2.802700e+02 1.491500e+02
-0 853     1.162800e+02 7.553998e+01
-1 853     2.965900e+02 6.923999e+01
-5 853     7.683500e+02 -5.810300e+02
-7 853     1.803998e+01 2.073600e+02
-0 854     3.145699e+02 -1.129900e+02
-1 854     4.416801e+02 -1.806100e+02
-7 854     2.389399e+02 5.171997e+01
-15 854     4.099000e+02 2.571997e+01
-0 855     9.907001e+01 4.190200e+02
-1 855     4.601899e+02 4.022300e+02
-2 855     -1.933900e+02 1.676400e+02
-3 855     -3.301000e+02 -1.618400e+02
-7 855     -1.207300e+02 4.951100e+02
-8 855     -7.809003e+01 1.246200e+02
-13 855     2.689399e+02 1.071300e+02
-0 856     -1.655100e+02 3.931300e+02
-1 856     1.832000e+02 4.442100e+02
-7 856     -3.756700e+02 4.385600e+02
-8 856     -2.836200e+02 9.129001e+01
-13 856     5.927002e+01 6.878003e+01
-14 856     1.500601e+02 -3.539800e+02
-0 857     -2.474900e+02 3.989600e+02
-1 857     9.951001e+01 4.691800e+02
-4 857     -2.491998e+01 -2.076200e+02
-5 857     1.537000e+02 -2.596600e+02
-10 857     -4.315500e+02 5.925900e+02
-11 857     -7.347998e+01 -3.569300e+02
-12 857     -5.630200e+02 3.472900e+02
-13 857     -6.599976e+00 7.040002e+01
-0 858     -4.431000e+02 1.441500e+02
-1 858     -1.585800e+02 2.760600e+02
-5 858     -4.257001e+01 -5.360900e+02
-7 858     -6.150100e+02 1.489100e+02
-8 858     -4.802400e+02 -1.445200e+02
-0 859     -2.796700e+02 1.873400e+02
-1 859     7.869995e+00 2.743400e+02
-7 859     -4.529300e+02 2.174600e+02
-0 860     1.940900e+02 3.448300e+02
-1 860     5.353500e+02 3.008200e+02
-6 860     -2.092500e+02 3.724300e+02
-10 860     9.866998e+01 5.694700e+02
-0 861     2.822500e+02 3.355200e+02
-1 861     6.248000e+02 2.674600e+02
-6 861     -1.005700e+02 3.854400e+02
-7 861     7.228998e+01 4.382400e+02
-11 861     4.167500e+02 -4.015000e+02
-0 862     2.822500e+02 3.355200e+02
-1 862     6.248000e+02 2.674600e+02
-6 862     -1.005700e+02 3.854400e+02
-7 862     7.228998e+01 4.382400e+02
-11 862     4.167500e+02 -4.015000e+02
-0 863     2.074200e+02 3.527900e+02
-1 863     5.525500e+02 3.051500e+02
-2 863     -6.121997e+01 1.197600e+02
-6 863     -1.992200e+02 3.849100e+02
-12 863     -4.413000e+01 3.782800e+02
-13 863     3.704800e+02 5.808002e+01
-14 863     5.382700e+02 -3.825200e+02
-0 864     1.129200e+02 4.379100e+02
-1 864     4.803101e+02 4.168300e+02
-2 864     -1.820100e+02 1.897500e+02
-4 864     -3.002002e+01 -4.253100e+02
-5 864     5.152000e+02 -2.139400e+02
-6 864     -3.425400e+02 4.644900e+02
-7 864     -1.098800e+02 5.160000e+02
-8 864     -6.991998e+01 1.447300e+02
-12 864     -1.727100e+02 4.517900e+02
-13 864     2.804500e+02 1.233300e+02
-0 865     2.664399e+02 4.854600e+02
-1 865     6.604000e+02 4.267100e+02
-5 865     6.704600e+02 -1.598200e+02
-7 865     3.041998e+01 5.801600e+02
-8 865     3.810999e+01 1.918500e+02
-11 865     3.899600e+02 -2.650800e+02
-12 865     -2.156000e+01 5.278700e+02
-13 865     4.016801e+02 1.734700e+02
-14 865     5.741300e+02 -2.400400e+02
-0 866     1.032200e+02 3.968900e+02
-1 866     4.594600e+02 3.777500e+02
-4 866     -5.378998e+01 -4.154900e+02
-7 866     -1.141600e+02 4.735100e+02
-11 866     2.467100e+02 -3.513000e+02
-0 867     1.380300e+02 4.573900e+02
-1 867     5.120000e+02 4.304300e+02
-4 867     -1.990002e+01 -4.434500e+02
-5 867     5.410900e+02 -1.924200e+02
-7 867     -8.783002e+01 5.386100e+02
-8 867     -5.232001e+01 1.630300e+02
-12 867     -1.493300e+02 4.779300e+02
-14 867     4.492500e+02 -2.752300e+02
-0 868     2.203998e+01 4.226100e+02
-1 868     3.805300e+02 4.249300e+02
-2 868     -2.641700e+02 1.699300e+02
-5 868     4.238600e+02 -2.320900e+02
-6 868     -4.397200e+02 4.248000e+02
-7 868     -1.956600e+02 4.906100e+02
-8 868     -1.375300e+02 1.277300e+02
-12 868     -2.668400e+02 4.199800e+02
-13 868     2.082400e+02 1.048000e+02
-14 868     3.351200e+02 -3.165900e+02
-0 869     -2.153600e+02 4.951600e+02
-1 869     1.553800e+02 5.569300e+02
-5 869     1.944200e+02 -1.558000e+02
-7 869     -4.400300e+02 5.407800e+02
-0 870     -1.612500e+02 4.608200e+02
-1 870     2.016400e+02 5.095500e+02
-2 870     -4.425900e+02 2.134600e+02
-4 870     3.580017e+00 -2.622900e+02
-5 870     2.443700e+02 -1.924200e+02
-7 870     -3.811800e+02 5.103100e+02
-8 870     -2.838900e+02 1.582700e+02
-12 870     -4.747000e+02 4.386100e+02
-13 870     6.315002e+01 1.282700e+02
-14 870     1.572000e+02 -2.808000e+02
-0 871     -1.986900e+02 4.088000e+02
-1 871     1.514301e+02 4.673600e+02
-2 871     -4.769100e+02 1.500400e+02
-5 871     2.037600e+02 -2.477600e+02
-7 871     -4.115400e+02 4.518400e+02
-10 871     -3.738600e+02 6.089700e+02
-12 871     -5.079100e+02 3.703000e+02
-14 871     1.186600e+02 -3.365400e+02
-0 872     -7.304999e+01 4.943700e+02
-1 872     2.998000e+02 5.218100e+02
-2 872     -3.592700e+02 2.541800e+02
-3 872     -4.881700e+02 -7.731000e+01
-4 872     1.644000e+01 -3.158600e+02
-5 872     3.326100e+02 -1.567700e+02
-6 872     -5.609700e+02 4.990600e+02
-7 872     -2.979100e+02 5.547400e+02
-8 872     -2.158100e+02 1.919500e+02
-11 872     8.222998e+01 -2.706000e+02
-12 872     -3.827800e+02 4.915400e+02
-14 872     2.432900e+02 -2.433900e+02
-0 873     -1.286400e+02 4.184100e+02
-1 873     2.241801e+02 4.589400e+02
-2 873     -4.082300e+02 1.621700e+02
-4 873     -2.365002e+01 -2.765100e+02
-5 873     2.734800e+02 -2.381400e+02
-7 873     -3.429800e+02 4.692800e+02
-8 873     -2.556600e+02 1.183900e+02
-11 873     3.401001e+01 -3.382800e+02
-12 873     -4.313500e+02 3.911100e+02
-13 873     8.863000e+01 9.345001e+01
-14 873     1.874399e+02 -3.250000e+02
-0 874     8.602002e+01 5.686800e+02
-1 874     4.859200e+02 5.589200e+02
-4 874     4.983002e+01 -4.182900e+02
-5 874     4.896801e+02 -7.606000e+01
-13 874     2.559301e+02 2.320900e+02
-0 875     5.134998e+01 5.853800e+02
-1 875     4.531700e+02 5.845900e+02
-3 875     -3.823800e+02 2.204999e+01
-5 875     4.567500e+02 -6.012000e+01
-11 875     1.887900e+02 -1.898200e+02
-13 875     2.291300e+02 2.443000e+02
-14 875     3.617800e+02 -1.471700e+02
-0 876     1.209400e+02 4.153400e+02
-1 876     4.828300e+02 3.916500e+02
-2 876     -1.717400e+02 1.645200e+02
-3 876     -3.088200e+02 -1.673700e+02
-5 876     5.234800e+02 -2.384100e+02
-7 876     -9.913000e+01 4.940400e+02
-9 876     -2.931200e+02 2.108700e+02
-0 877     9.196997e+01 4.388300e+02
-1 877     4.581500e+02 4.233400e+02
-7 877     -1.295700e+02 5.156700e+02
-0 878     -3.393600e+02 3.764600e+02
-1 878     4.809998e+00 4.706800e+02
-2 878     -6.212400e+02 1.073800e+02
-7 878     -5.502300e+02 4.015600e+02
-11 878     -1.550900e+02 -3.755300e+02
-12 878     -6.652900e+02 3.075700e+02
-0 879     -3.505300e+02 3.109400e+02
-1 879     -2.140997e+01 4.100000e+02
-7 879     -5.528800e+02 3.306800e+02
-15 879     -5.434600e+02 5.146800e+02
-0 880     -4.488000e+01 2.627600e+02
-1 880     2.614900e+02 2.844800e+02
-7 880     -2.316800e+02 3.247800e+02
-10 880     -1.737100e+02 4.472500e+02
-15 880     -1.133500e+02 4.892100e+02
-0 881     -1.588100e+02 -8.973999e+01
-1 881     -1.062000e+01 -1.258002e+01
-3 881     -9.242999e+01 -4.457600e+02
-6 881     -2.043100e+02 -1.510300e+02
-7 881     -2.354700e+02 -8.469971e+00
-8 881     1.294000e+01 -1.557800e+02
-10 881     -2.679900e+02 1.984998e+01
-12 881     -1.969000e+02 -9.057001e+01
-15 881     -2.360700e+02 -6.460022e+00
-0 882     -1.448000e+02 -9.584998e+01
-1 882     1.599731e-01 -2.267999e+01
-3 882     -7.247998e+01 -4.470000e+02
-7 882     -2.197400e+02 -1.184998e+01
-8 882     2.864001e+01 -1.577300e+02
-10 882     -2.516000e+02 1.471997e+01
-12 882     -1.766800e+02 -9.281000e+01
-13 882     2.465300e+02 -3.205200e+02
-15 882     -2.159400e+02 -1.240997e+01
-0 883     -1.467800e+02 -5.010100e+02
-1 883     -1.197900e+02 -4.044600e+02
-4 883     -6.388200e+02 -2.684100e+02
-6 883     -3.115997e+01 -6.462000e+02
-7 883     -1.483000e+02 -4.230200e+02
-9 883     6.147998e+01 -4.285400e+02
-0 884     3.420001e+01 -6.138000e+01
-1 884     1.745800e+02 -4.077002e+01
-3 884     1.193600e+02 -3.361800e+02
-7 884     -3.963000e+01 5.847998e+01
-8 884     1.983000e+02 -7.215997e+01
-10 884     -4.783002e+01 7.413000e+01
-13 884     4.110200e+02 -2.712000e+02
-15 884     1.931000e+01 5.865997e+01
-0 885     8.347998e+01 4.104999e+01
-1 885     2.526100e+02 4.494000e+01
-2 885     2.220100e+02 8.872998e+01
-4 885     -2.541200e+02 -4.793700e+02
-7 885     -7.580017e+00 1.689000e+02
-8 885     2.137300e+02 2.551001e+01
-10 885     -9.699707e-01 1.975300e+02
-12 885     6.559003e+01 1.461300e+02
-13 885     4.431600e+02 -1.787800e+02
-15 885     7.271002e+01 2.048800e+02
-0 886     3.024100e+02 -1.843100e+02
-1 886     4.042200e+02 -2.474300e+02
-2 886     5.030400e+02 -9.937000e+01
-6 886     3.445200e+02 -9.019000e+01
-7 886     2.414200e+02 -1.826001e+01
-8 886     4.454399e+02 -1.320300e+02
-10 886     2.745400e+02 -4.027002e+01
-12 886     3.731300e+02 -5.575000e+01
-13 886     6.589100e+02 -3.597800e+02
-15 886     4.022800e+02 -7.300000e+01
-0 887     -1.947700e+02 4.287600e+02
-1 887     1.602000e+02 4.861100e+02
-2 887     -4.741900e+02 1.747500e+02
-5 887     2.094200e+02 -2.261100e+02
-7 887     -4.101500e+02 4.731200e+02
-8 887     -3.091300e+02 1.266000e+02
-11 887     -2.513000e+01 -3.294800e+02
-12 887     -5.066300e+02 3.947200e+02
-0 888     -5.000000e-01 4.731100e+02
-1 888     3.698600e+02 4.819600e+02
-2 888     -2.895100e+02 2.290500e+02
-4 888     -9.199829e-01 -3.575300e+02
-5 888     4.033900e+02 -1.781400e+02
-6 888     -4.743100e+02 4.860000e+02
-7 888     -2.239800e+02 5.402500e+02
-8 888     -1.582000e+02 1.735300e+02
-9 888     -3.960300e+02 2.632000e+02
-11 888     1.479600e+02 -2.871000e+02
-12 888     -2.998300e+02 4.766300e+02
-13 888     1.895900e+02 1.469800e+02
-14 888     3.127700e+02 -2.637100e+02
-0 889     2.601100e+02 5.228600e+02
-1 889     6.624399e+02 4.680100e+02
-2 889     -5.446997e+01 2.948200e+02
-3 889     -1.949900e+02 -3.846002e+01
-4 889     1.278998e+01 -5.319800e+02
-5 889     6.676700e+02 -1.182300e+02
-6 889     -1.935400e+02 6.052500e+02
-11 889     3.793300e+02 -2.328000e+02
-12 889     -3.163000e+01 5.740700e+02
-0 890     2.227000e+02 9.576001e+01
-1 890     4.138900e+02 5.702002e+01
-3 890     2.042100e+02 -1.650400e+02
-7 890     1.151900e+02 2.414300e+02
-10 890     1.548700e+02 2.755000e+02
-12 890     1.928600e+02 2.328700e+02
-13 890     5.453900e+02 -1.241500e+02
-15 890     2.575500e+02 2.989100e+02
-0 891     1.557800e+02 -4.984998e+01
-1 891     2.953900e+02 -6.642999e+01
-6 891     1.581900e+02 1.490002e+01
-7 891     8.003998e+01 9.112000e+01
-8 891     3.007400e+02 -3.644000e+01
-15 891     1.829600e+02 9.101001e+01
-0 892     2.241200e+02 -5.234003e+01
-1 892     3.648900e+02 -9.032001e+01
-6 892     2.235100e+02 3.037000e+01
-7 892     1.450000e+02 9.838000e+01
-8 892     3.504900e+02 -3.157001e+01
-13 892     5.738500e+02 -2.488600e+02
-15 892     2.770400e+02 9.626999e+01
-0 893     1.882400e+02 -1.742300e+02
-1 893     2.902200e+02 -1.993600e+02
-6 893     2.332800e+02 -1.126600e+02
-8 893     3.601200e+02 -1.389800e+02
-10 893     1.424600e+02 -4.091998e+01
-12 893     2.507500e+02 -7.288000e+01
-15 893     2.436200e+02 -7.398999e+01
-0 894     2.917000e+02 -2.386700e+02
-1 894     3.774700e+02 -2.983800e+02
-6 894     3.495800e+02 -1.545300e+02
-7 894     2.394800e+02 -7.364001e+01
-12 894     3.759900e+02 -1.235100e+02
-15 894     3.955000e+02 -1.483000e+02
-0 895     2.917000e+02 -2.386700e+02
-1 895     3.774700e+02 -2.983800e+02
-6 895     3.495800e+02 -1.545300e+02
-7 895     2.394800e+02 -7.364001e+01
-12 895     3.759900e+02 -1.235100e+02
-15 895     3.955000e+02 -1.483000e+02
-0 896     2.195300e+02 8.667999e+01
-1 896     4.067200e+02 4.937000e+01
-6 896     1.582700e+02 1.777600e+02
-7 896     1.143800e+02 2.323200e+02
-10 896     1.525500e+02 2.644400e+02
-12 896     1.946400e+02 2.229800e+02
-13 896     5.457600e+02 -1.316900e+02
-15 896     2.541400e+02 2.860800e+02
-0 897     1.413101e+02 -5.045001e+01
-1 897     2.803101e+02 -6.185999e+01
-2 897     3.165400e+02 1.331000e+01
-3 897     2.192800e+02 -2.925400e+02
-7 897     6.608002e+01 8.850000e+01
-8 897     2.899400e+02 -3.823999e+01
-10 897     7.576001e+01 9.716998e+01
-13 897     5.059700e+02 -2.519600e+02
-15 897     1.638000e+02 8.795999e+01
-0 898     7.690002e+01 -5.635999e+01
-1 898     2.161400e+02 -4.856000e+01
-3 898     1.627800e+02 -3.153500e+02
-7 898     3.489990e+00 7.150000e+01
-8 898     2.372300e+02 -5.548001e+01
-10 898     1.469971e+00 8.446997e+01
-13 898     4.509800e+02 -2.628800e+02
-15 898     7.666998e+01 7.101001e+01
-0 899     1.340500e+02 -7.435999e+01
-1 899     2.668800e+02 -8.370001e+01
-2 899     3.178500e+02 -1.389001e+01
-6 899     1.438100e+02 -1.875000e+01
-7 899     6.253998e+01 6.321002e+01
-8 899     2.895400e+02 -6.089001e+01
-10 899     6.945001e+01 6.889001e+01
-13 899     5.021500e+02 -2.740000e+02
-15 899     1.565200e+02 5.442999e+01
-0 900     1.906700e+02 -9.381000e+01
-1 900     3.181700e+02 -1.207500e+02
-4 900     -3.702400e+02 -5.663101e+02
-6 900     2.042800e+02 -2.496002e+01
-7 900     1.199000e+02 5.244000e+01
-8 900     3.354600e+02 -7.194000e+01
-10 900     1.368000e+02 5.173999e+01
-12 900     2.252000e+02 1.848999e+01
-13 900     5.506700e+02 -2.877400e+02
-15 900     2.365900e+02 3.547998e+01
-0 901     1.730000e+02 -1.065400e+02
-1 901     2.960400e+02 -1.286500e+02
-6 901     1.899000e+02 -4.672998e+01
-0 902     -8.440002e+00 -2.145700e+02
-1 902     8.548999e+01 -1.757000e+02
-2 902     2.344600e+02 -1.953400e+02
-3 902     1.569000e+02 -4.949700e+02
-4 902     -4.273600e+02 -4.038100e+02
-6 902     4.645001e+01 -2.244399e+02
-7 902     -5.265997e+01 -1.011000e+02
-8 902     2.120700e+02 -2.116000e+02
-10 902     -8.056000e+01 -1.077900e+02
-12 902     4.328003e+01 -1.766000e+02
-13 902     3.968101e+02 -4.100900e+02
-15 902     -1.790997e+01 -1.542600e+02
-0 903     1.296400e+02 -2.712000e+02
-1 903     2.028199e+02 -2.755200e+02
-4 903     -5.032100e+02 -5.149700e+02
-6 903     2.077100e+02 -2.428101e+02
-7 903     9.189001e+01 -1.332300e+02
-10 903     8.485999e+01 -1.582400e+02
-12 903     2.159800e+02 -2.053400e+02
-15 903     1.771300e+02 -2.133000e+02
-0 904     3.498800e+02 -3.395400e+02
-1 904     4.140300e+02 -4.207400e+02
-10 904     3.443900e+02 -2.118300e+02
-12 904     4.534200e+02 -2.401800e+02
-0 905     9.102002e+01 -2.291000e+02
-1 905     1.731600e+02 -2.206600e+02
-2 905     3.508900e+02 -1.712800e+02
-3 905     2.655699e+02 -4.676400e+02
-4 905     -4.578000e+02 -4.880100e+02
-6 905     1.654600e+02 -1.994500e+02
-7 905     5.041998e+01 -9.554999e+01
-8 905     3.092900e+02 -1.943500e+02
-10 905     3.672998e+01 -1.139900e+02
-12 905     1.677600e+02 -1.571600e+02
-15 905     1.182600e+02 -1.607700e+02
-0 906     3.702900e+02 5.021000e+02
-1 906     7.839301e+02 4.172200e+02
-5 906     7.755699e+02 -1.374000e+02
-6 906     -8.247000e+01 5.986800e+02
-8 906     1.086300e+02 2.091600e+02
-11 906     4.850500e+02 -2.440200e+02
-12 906     7.944000e+01 5.606000e+02
-13 906     4.835200e+02 1.950500e+02
-14 906     6.749800e+02 -2.158800e+02
-0 907     1.467800e+02 4.686400e+02
-1 907     5.248400e+02 4.401000e+02
-6 907     -3.097200e+02 5.193100e+02
-7 907     -8.129999e+01 5.505700e+02
-12 907     -1.411700e+02 5.019000e+02
-13 907     3.090400e+02 1.575400e+02
-14 907     4.599700e+02 -2.554700e+02
-0 908     4.070007e+00 -2.673200e+02
-1 908     8.708002e+01 -2.318400e+02
-3 908     1.672600e+02 -5.763000e+02
-4 908     -4.731100e+02 -4.050100e+02
-6 908     6.020001e+01 -2.918101e+02
-7 908     -3.663000e+01 -1.547900e+02
-8 908     2.216800e+02 -2.755400e+02
-10 908     -6.057001e+01 -1.671200e+02
-12 908     6.162000e+01 -2.467700e+02
-13 908     4.035601e+02 -4.615200e+02
-15 908     7.539978e+00 -2.241600e+02
-0 909     -3.877200e+02 3.151900e+02
-1 909     -5.587000e+01 4.220400e+02
-5 909     2.250000e+00 -3.403000e+02
-8 909     -4.742300e+02 1.367999e+01
-10 909     -5.927300e+02 4.777000e+02
-14 909     -7.848999e+01 -4.479900e+02
-0 910     5.500000e+01 -1.015900e+02
-1 910     1.827400e+02 -8.640997e+01
-2 910     2.438500e+02 -6.828003e+01
-4 910     -3.533100e+02 -4.540601e+02
-6 910     6.400000e+01 -7.808002e+01
-8 910     2.266100e+02 -1.048000e+02
-9 910     9.803998e+01 3.744000e+01
-13 910     4.344100e+02 -3.059500e+02
-15 910     5.372998e+01 6.630005e+00
-0 911     4.129999e+01 -2.826001e+01
-1 911     1.907600e+02 -1.034998e+01
-4 911     -2.977300e+02 -4.453300e+02
-13 911     4.152500e+02 -2.426100e+02
-15 911     2.473999e+01 1.049000e+02
-0 912     1.628500e+02 -7.289001e+01
-1 912     2.950300e+02 -9.151001e+01
-2 912     3.425601e+02 -8.750000e+00
-6 912     1.713000e+02 -9.739990e+00
-7 912     8.979999e+01 6.859998e+01
-8 912     3.110900e+02 -5.614001e+01
-10 912     1.033500e+02 7.434998e+01
-13 912     5.258600e+02 -2.713800e+02
-15 912     1.957600e+02 6.060999e+01
-0 913     -3.440300e+02 8.167999e+01
-1 913     -8.998999e+01 1.925000e+02
-10 913     -5.069800e+02 2.030300e+02
-0 914     -3.925800e+02 3.104100e+02
-1 914     -6.190002e+01 4.198800e+02
-5 914     -4.600220e-01 -3.520000e+02
-7 914     -5.955700e+02 3.252800e+02
-10 914     -5.951100e+02 4.722900e+02
-13 914     -1.245800e+02 -1.171997e+01
-14 914     -8.103003e+01 -4.444900e+02
-15 914     -6.013000e+02 5.098800e+02
-0 915     -3.787500e+02 3.142200e+02
-1 915     -4.746997e+01 4.204400e+02
-7 915     -5.820000e+02 3.308700e+02
-0 916     -3.979300e+02 3.345000e+02
-1 916     -6.159998e+01 4.446300e+02
-7 916     -6.048100e+02 3.500000e+02
-8 916     -4.787500e+02 2.863000e+01
-10 916     -6.060500e+02 5.007500e+02
-12 916     -7.279800e+02 2.455700e+02
-14 916     -8.440002e+01 -4.186400e+02
-15 916     -6.137100e+02 5.424500e+02
-0 917     -3.694300e+02 3.035800e+02
-1 917     -4.120001e+01 4.074600e+02
-5 917     2.128998e+01 -3.606900e+02
-7 917     -5.708100e+02 3.205000e+02
-10 917     -5.660600e+02 4.656600e+02
-11 917     -1.852300e+02 -4.406900e+02
-13 917     -1.063800e+02 -1.748999e+01
-14 917     -5.912000e+01 -4.533300e+02
-15 917     -5.682200e+02 5.027300e+02
-0 918     -3.736400e+02 3.170300e+02
-1 918     -4.234003e+01 4.205900e+02
-4 918     -6.012000e+01 -1.298800e+02
-7 918     -5.769700e+02 3.335000e+02
-8 918     -4.574700e+02 9.209991e+00
-11 918     -1.880800e+02 -4.293400e+02
-12 918     -6.954800e+02 2.253600e+02
-15 918     -5.761500e+02 5.209600e+02
-0 919     -3.304400e+02 4.423900e+02
-1 919     2.882001e+01 5.327400e+02
-0 920     -5.263800e+02 4.349400e+02
-1 920     -1.607400e+02 5.704100e+02
-7 920     -7.564600e+02 4.432500e+02
-8 920     -5.969100e+02 1.265600e+02
-10 920     -7.838100e+02 6.164300e+02
-14 920     -1.985200e+02 -3.096600e+02
-0 921     -2.414100e+02 4.120700e+02
-1 921     1.128700e+02 4.797200e+02
-10 921     -4.251700e+02 6.084500e+02
-0 922     -1.655100e+02 3.931300e+02
-1 922     1.832000e+02 4.442100e+02
-2 922     -4.431200e+02 1.281700e+02
-4 922     -3.563000e+01 -2.526900e+02
-5 922     2.354700e+02 -2.667300e+02
-7 922     -3.756700e+02 4.385600e+02
-8 922     -2.836200e+02 9.129001e+01
-11 922     1.679993e+00 -3.612800e+02
-12 922     -4.680800e+02 3.536800e+02
-13 922     5.927002e+01 6.878003e+01
-14 922     1.500601e+02 -3.539800e+02
-0 923     1.823101e+02 4.016100e+02
-1 923     5.450300e+02 3.610400e+02
-0 924     2.054200e+02 4.107400e+02
-1 924     5.726400e+02 3.642000e+02
-2 924     -9.612000e+01 1.611800e+02
-7 924     -1.828998e+01 4.983000e+02
-8 924     7.700195e-01 1.231400e+02
-11 924     3.412200e+02 -3.349400e+02
-12 924     -7.097998e+01 4.334800e+02
-13 924     3.549200e+02 1.054400e+02
-14 924     5.173800e+02 -3.220600e+02
-0 925     4.975300e+02 4.076700e+02
-1 925     8.663800e+02 2.894400e+02
-2 925     2.764600e+02 2.931600e+02
-3 925     1.353000e+02 -3.503998e+01
-7 925     2.835400e+02 5.484000e+02
-9 925     9.094000e+01 3.383100e+02
-11 925     6.030000e+02 -3.231200e+02
-0 926     2.496700e+02 4.519700e+02
-1 926     6.326000e+02 3.954500e+02
-2 926     -6.241998e+01 2.098900e+02
-3 926     -2.044700e+02 -1.216600e+02
-5 926     6.531600e+02 -1.954700e+02
-6 926     -1.984400e+02 5.117500e+02
-7 926     1.852002e+01 5.447200e+02
-8 926     2.871997e+01 1.618900e+02
-9 926     -2.025200e+02 2.536300e+02
-11 926     3.785699e+02 -2.953900e+02
-12 926     -3.302002e+01 4.873800e+02
-13 926     3.891400e+02 1.442800e+02
-14 926     5.591500e+02 -2.752500e+02
-0 927     3.296600e+02 4.607700e+02
-1 927     7.244301e+02 3.833600e+02
-6 927     -1.167400e+02 5.398000e+02
-7 927     9.217999e+01 5.616600e+02
-8 927     8.477002e+01 1.727700e+02
-9 927     -1.462200e+02 2.662400e+02
-11 927     4.519301e+02 -2.832000e+02
-12 927     4.641998e+01 5.091100e+02
-13 927     4.528800e+02 1.573300e+02
-0 928     1.503400e+02 -1.133100e+02
-1 928     2.722800e+02 -1.272800e+02
-2 928     3.423500e+02 -5.682001e+01
-4 928     -3.783800e+02 -5.319700e+02
-6 928     1.697100e+02 -5.910999e+01
-7 928     8.410999e+01 2.645001e+01
-8 928     3.094900e+02 -9.595001e+01
-10 928     9.259003e+01 2.559003e+01
-12 928     1.871600e+02 -1.476001e+01
-15 928     1.845100e+02 3.479980e+00
-0 929     2.509800e+02 -7.922998e+01
-1 929     3.855601e+02 -1.258400e+02
-2 929     4.153199e+02 -7.549988e+00
-6 929     2.548700e+02 7.299988e+00
-7 929     1.740900e+02 7.571002e+01
-8 929     3.742500e+02 -5.429001e+01
-12 929     2.835400e+02 4.859003e+01
-15 929     3.179800e+02 6.339001e+01
-0 930     1.479700e+02 6.995001e+01
-1 930     3.261801e+02 5.450000e+01
-2 930     2.696899e+02 1.255700e+02
-3 930     1.676400e+02 -1.878300e+02
-4 930     -2.424200e+02 -5.298800e+02
-5 930     8.064301e+02 -5.877400e+02
-6 930     1.019600e+02 1.423800e+02
-8 930     2.555000e+02 5.659000e+01
-9 930     1.095600e+02 1.996400e+02
-15 930     1.571400e+02 2.530100e+02
-0 931     1.605300e+02 -1.143800e+02
-1 931     2.825300e+02 -1.317200e+02
-2 931     3.513500e+02 -5.603003e+01
-3 931     2.548300e+02 -3.583200e+02
-6 931     1.793200e+02 -5.727002e+01
-10 931     1.043100e+02 2.535999e+01
-15 931     1.982700e+02 3.539978e+00
-0 932     8.241998e+01 -2.235500e+02
-1 932     1.675500e+02 -2.126300e+02
-3 932     2.532700e+02 -4.665699e+02
-4 932     -4.518800e+02 -4.806000e+02
-6 932     1.533600e+02 -1.972800e+02
-7 932     4.042999e+01 -9.213000e+01
-10 932     2.541998e+01 -1.089400e+02
-12 932     1.554600e+02 -1.543800e+02
-13 932     4.820100e+02 -4.092100e+02
-0 933     5.863900e+02 8.251999e+01
-1 933     8.411899e+02 -7.921997e+01
-6 933     4.164400e+02 2.223100e+02
-7 933     4.269600e+02 2.564700e+02
-8 933     4.720601e+02 1.660001e+01
-9 933     2.938800e+02 1.443700e+02
-12 933     5.016100e+02 2.324500e+02
-15 933     7.789700e+02 3.316600e+02
-0 934     2.328600e+02 -8.790997e+01
-1 934     3.637100e+02 -1.286900e+02
-2 934     4.041700e+02 -1.772998e+01
-6 934     2.410500e+02 -6.869995e+00
-7 934     1.585000e+02 6.456000e+01
-12 934     2.675100e+02 3.450000e+01
-15 934     2.936100e+02 4.913000e+01
-0 935     3.473400e+02 -1.814600e+02
-1 935     4.518101e+02 -2.599600e+02
-2 935     5.374000e+02 -8.901001e+01
-6 935     3.849900e+02 -7.360999e+01
-7 935     2.832300e+02 -8.359985e+00
-10 935     3.257800e+02 -3.210999e+01
-12 935     4.182100e+02 -4.112000e+01
-15 935     4.641200e+02 -6.335999e+01
-0 936     2.955500e+02 -1.840100e+02
-1 936     3.972400e+02 -2.447300e+02
-7 936     2.354100e+02 -1.915997e+01
-8 936     4.414500e+02 -1.335900e+02
-10 936     2.669600e+02 -4.033002e+01
-12 936     3.662400e+02 -5.756000e+01
-13 936     6.533199e+02 -3.601000e+02
-15 936     3.927200e+02 -7.344000e+01
-0 937     2.383002e+01 -2.525500e+02
-1 937     1.074100e+02 -2.229400e+02
-2 937     2.706899e+02 -2.421300e+02
-3 937     1.915900e+02 -5.409800e+02
-4 937     -4.647600e+02 -4.252100e+02
-6 937     8.516998e+01 -2.624600e+02
-7 937     -1.666998e+01 -1.348500e+02
-8 937     2.427100e+02 -2.488500e+02
-9 937     1.296500e+02 -1.038600e+02
-10 937     -3.892999e+01 -1.480100e+02
-12 937     8.615997e+01 -2.178100e+02
-13 937     4.246000e+02 -4.445000e+02
-15 937     3.134998e+01 -2.014100e+02
-0 938     1.120100e+02 3.439001e+01
-1 938     2.783800e+02 3.004999e+01
-2 938     2.543800e+02 8.934003e+01
-6 938     8.090002e+01 9.462000e+01
-7 938     2.234998e+01 1.669800e+02
-10 938     3.296002e+01 1.924100e+02
-12 938     1.002800e+02 1.463700e+02
-15 938     1.122000e+02 1.994600e+02
-0 939     6.279500e+02 6.559998e+01
-1 939     8.796100e+02 -1.100600e+02
-2 939     5.539600e+02 5.823999e+01
-6 939     4.718400e+02 2.197900e+02
-7 939     4.698600e+02 2.484800e+02
-9 939     3.362500e+02 1.498300e+02
-10 939     6.304100e+02 2.839400e+02
-12 939     5.541000e+02 2.298400e+02
-15 939     8.387700e+02 3.143100e+02
-0 940     8.876001e+01 -1.673200e+02
-1 940     1.936700e+02 -1.604400e+02
-3 940     2.228800e+02 -4.196801e+02
-6 940     1.303700e+02 -1.367800e+02
-7 940     3.470001e+01 -3.646002e+01
-10 940     2.714001e+01 -4.323999e+01
-12 940     1.384200e+02 -9.157001e+01
-13 940     4.754301e+02 -3.598300e+02
-15 940     1.071200e+02 -7.769000e+01
-0 941     2.272200e+02 -9.220001e+01
-1 941     3.564900e+02 -1.313100e+02
-2 941     4.011300e+02 -2.341998e+01
-3 941     2.990200e+02 -3.252800e+02
-6 941     2.371500e+02 -1.353998e+01
-7 941     1.540000e+02 5.914001e+01
-8 941     3.613100e+02 -6.778998e+01
-12 941     2.626100e+02 2.759003e+01
-13 941     5.804900e+02 -2.839600e+02
-15 941     2.871899e+02 4.228003e+01
-0 942     8.971002e+01 5.170600e+02
-1 942     4.764800e+02 5.040700e+02
-2 942     -2.108600e+02 2.805300e+02
-3 942     -3.455700e+02 -5.246002e+01
-5 942     4.933700e+02 -1.298000e+02
-8 942     -9.398001e+01 2.161000e+02
-9 942     -3.315800e+02 3.108600e+02
-11 942     2.266100e+02 -2.458900e+02
-14 942     3.998300e+02 -2.150600e+02
-0 943     1.623700e+02 -1.006900e+02
-1 943     2.873199e+02 -1.183700e+02
-3 943     2.528900e+02 -3.431300e+02
-0 944     2.147400e+02 -1.093900e+02
-1 944     3.392300e+02 -1.440900e+02
-3 944     2.942700e+02 -3.455200e+02
-6 944     2.297500e+02 -3.645001e+01
-8 944     3.549200e+02 -8.476001e+01
-12 944     2.539399e+02 5.020020e+00
-15 944     2.720400e+02 1.762000e+01
-0 945     5.902700e+02 1.116100e+02
-1 945     8.544100e+02 -4.929999e+01
-6 945     4.131500e+02 2.570100e+02
-9 945     2.897600e+02 1.714900e+02
-12 945     4.980000e+02 2.668500e+02
-15 945     7.807300e+02 3.734100e+02
-0 946     6.587300e+02 -5.646997e+01
-1 946     8.735200e+02 -2.496000e+02
-2 946     6.224399e+02 -5.171002e+01
-3 946     4.921000e+02 -3.553800e+02
-6 946     5.413500e+02 9.692999e+01
-7 946     5.164200e+02 1.361900e+02
-8 946     5.686899e+02 -7.363000e+01
-10 946     6.762800e+02 1.446700e+02
-12 946     6.200900e+02 1.067700e+02
-0 947     1.582500e+02 -1.117800e+02
-1 947     2.807400e+02 -1.283200e+02
-6 947     1.768900e+02 -5.477002e+01
-8 947     3.152000e+02 -9.306000e+01
-15 947     1.948199e+02 6.739990e+00
-0 948     1.319900e+02 -9.564001e+01
-1 948     2.587300e+02 -1.041300e+02
-2 948     3.208400e+02 -3.928003e+01
-6 948     1.467500e+02 -4.406000e+01
-7 948     6.383002e+01 4.156000e+01
-8 948     2.913500e+02 -8.128998e+01
-12 948     1.624100e+02 1.809998e+00
-15 948     1.568400e+02 2.532001e+01
-0 949     6.647700e+02 -1.092700e+02
-1 949     8.631100e+02 -3.073300e+02
-2 949     6.443500e+02 -1.042900e+02
-6 949     5.642200e+02 3.952002e+01
-12 949     6.422500e+02 4.895001e+01
-0 950     6.072300e+02 1.314200e+02
-1 950     8.785300e+02 -3.364001e+01
-2 950     5.131899e+02 1.149800e+02
-3 950     3.762300e+02 -1.980300e+02
-6 950     4.292900e+02 2.850900e+02
-7 950     4.406700e+02 3.079400e+02
-8 950     4.807400e+02 6.570999e+01
-9 950     3.005400e+02 1.957200e+02
-10 950     6.011200e+02 3.589200e+02
-12 950     5.132700e+02 2.949100e+02
-13 950     8.132900e+02 -8.091998e+01
-15 950     8.022300e+02 4.034300e+02
-0 951     2.327800e+02 5.659973e+00
-1 951     3.921899e+02 -3.508002e+01
-2 951     3.702300e+02 7.620001e+01
-3 951     2.638900e+02 -2.318500e+02
-6 951     2.109000e+02 9.620001e+01
-7 951     1.433000e+02 1.567700e+02
-8 951     3.388600e+02 1.573001e+01
-10 951     1.755600e+02 1.716700e+02
-12 951     2.397700e+02 1.412700e+02
-13 951     5.727200e+02 -1.982900e+02
-15 951     2.819200e+02 1.768700e+02
-0 952     2.916500e+02 -2.743500e+02
-1 952     3.715601e+02 -3.348400e+02
-2 952     5.062700e+02 -2.261200e+02
-6 952     3.473100e+02 -2.069500e+02
-7 952     2.406300e+02 -1.133300e+02
-8 952     4.472300e+02 -2.337900e+02
-10 952     2.715601e+02 -1.444800e+02
-12 952     3.767600e+02 -1.765800e+02
-13 952     6.514000e+02 -4.496899e+02
-15 952     4.011899e+02 -1.972000e+02
-0 953     1.914000e+02 -9.075000e+01
-1 953     3.200100e+02 -1.179900e+02
-2 953     3.726300e+02 -2.360999e+01
-6 953     2.041300e+02 -2.066998e+01
-8 953     3.353000e+02 -6.890997e+01
-12 953     2.257800e+02 2.340002e+01
-15 953     2.371801e+02 3.970001e+01
-0 954     3.217400e+02 5.498100e+02
-1 954     7.421300e+02 4.810700e+02
-5 954     7.228199e+02 -8.873999e+01
-6 954     -1.426000e+02 6.483800e+02
-8 954     6.923999e+01 2.483500e+02
-9 954     -1.654100e+02 3.491400e+02
-12 954     2.134998e+01 6.084400e+02
-13 954     4.423900e+02 2.317500e+02
-14 954     6.225699e+02 -1.698800e+02
-0 955     6.072300e+02 1.314200e+02
-1 955     8.785300e+02 -3.364001e+01
-2 955     5.131899e+02 1.149800e+02
-3 955     3.762300e+02 -1.980300e+02
-6 955     4.292900e+02 2.850900e+02
-7 955     4.406700e+02 3.079400e+02
-8 955     4.807400e+02 6.570999e+01
-9 955     3.005400e+02 1.957200e+02
-10 955     6.011200e+02 3.589200e+02
-12 955     5.132700e+02 2.949100e+02
-13 955     8.132900e+02 -8.091998e+01
-0 956     2.363700e+02 4.490400e+02
-1 956     6.178500e+02 3.961700e+02
-2 956     -7.437000e+01 2.052200e+02
-8 956     1.853003e+01 1.584200e+02
-12 956     -4.742999e+01 4.817200e+02
-14 956     5.450699e+02 -2.797400e+02
-0 957     2.002900e+02 -2.431600e+02
-1 957     2.784301e+02 -2.708500e+02
-2 957     4.518300e+02 -1.677300e+02
-3 957     3.594000e+02 -4.613700e+02
-6 957     2.768000e+02 -1.811899e+02
-7 957     1.577800e+02 -9.126001e+01
-9 957     2.744600e+02 -3.476001e+01
-12 957     2.906899e+02 -1.454100e+02
-15 957     2.687800e+02 -1.661700e+02
-0 958     1.995400e+02 4.332600e+02
-1 958     5.723800e+02 3.892200e+02
-2 958     -1.038700e+02 1.860600e+02
-5 958     6.025200e+02 -2.170500e+02
-7 958     -2.656000e+01 5.204800e+02
-11 958     3.336200e+02 -3.147400e+02
-12 958     -8.141998e+01 4.594600e+02
-13 958     3.494200e+02 1.243200e+02
-14 958     5.103500e+02 -2.981800e+02
-0 959     3.465100e+02 4.712700e+02
-1 959     7.467900e+02 3.902000e+02
-2 959     1.795001e+01 2.333300e+02
-3 959     -1.278500e+02 -9.947998e+01
-5 959     7.521600e+02 -1.711600e+02
-6 959     -1.007600e+02 5.566500e+02
-7 959     1.067200e+02 5.737600e+02
-8 959     9.566998e+01 1.822600e+02
-9 959     -1.356000e+02 2.773500e+02
-11 959     4.670000e+02 -2.724600e+02
-12 959     6.178998e+01 5.233900e+02
-13 959     4.657400e+02 1.667200e+02
-14 959     6.542400e+02 -2.497000e+02
-0 960     3.535200e+02 5.241300e+02
-1 960     7.708300e+02 4.452500e+02
-2 960     1.626001e+01 2.905000e+02
-3 960     -1.290400e+02 -4.159998e+01
-5 960     7.566100e+02 -1.142200e+02
-6 960     -1.045600e+02 6.232700e+02
-8 960     9.413000e+01 2.278300e+02
-9 960     -1.388700e+02 3.267800e+02
-11 960     4.656000e+02 -2.261200e+02
-12 960     5.782001e+01 5.835100e+02
-13 960     4.687200e+02 2.129700e+02
-14 960     6.558101e+02 -1.936400e+02
-0 961     3.523199e+02 4.965000e+02
-1 961     7.612400e+02 4.158800e+02
-2 961     1.913000e+01 2.596900e+02
-5 961     7.567500e+02 -1.436700e+02
-6 961     -1.000900e+02 5.885600e+02
-8 961     9.645001e+01 2.037300e+02
-9 961     -1.353800e+02 3.011800e+02
-12 961     6.242999e+01 5.521400e+02
-13 961     4.694301e+02 1.889000e+02
-14 961     6.576100e+02 -2.227600e+02
-0 962     6.593101e+02 -1.004200e+02
-1 962     8.599200e+02 -2.959200e+02
-6 962     5.549200e+02 4.776001e+01
-7 962     5.227300e+02 9.460999e+01
-10 962     6.802400e+02 9.459003e+01
-12 962     6.337600e+02 5.733002e+01
-0 963     1.875200e+02 -1.716000e+02
-1 963     2.900400e+02 -1.965300e+02
-2 963     4.038000e+02 -1.030600e+02
-3 963     3.081000e+02 -4.022400e+02
-4 963     -4.316700e+02 -5.655900e+02
-6 963     2.317900e+02 -1.098700e+02
-7 963     1.309400e+02 -2.410999e+01
-10 963     1.412300e+02 -3.796002e+01
-12 963     2.490900e+02 -6.985999e+01
-13 963     5.605601e+02 -3.561100e+02
-15 963     2.423101e+02 -7.071997e+01
-0 964     1.710200e+02 -7.041998e+01
-1 964     3.047500e+02 -9.127002e+01
-2 964     3.495601e+02 -3.349976e+00
-3 964     2.507100e+02 -3.074900e+02
-6 964     1.796600e+02 -2.950012e+00
-7 964     9.789001e+01 7.319000e+01
-8 964     3.171700e+02 -5.198999e+01
-12 964     1.996801e+02 4.298999e+01
-13 964     5.334900e+02 -2.676400e+02
-15 964     2.062800e+02 6.453003e+01
-0 965     3.643101e+02 5.436300e+02
-1 965     7.904800e+02 4.636700e+02
-2 965     2.313000e+01 3.123900e+02
-6 965     -9.616000e+01 6.501900e+02
-0 966     3.404301e+02 5.572400e+02
-1 966     7.662300e+02 4.844300e+02
-2 966     8.800049e-01 3.260000e+02
-3 966     -1.435300e+02 -8.840027e+00
-6 966     -1.244900e+02 6.626500e+02
-9 966     -1.533400e+02 3.574400e+02
-11 966     4.498500e+02 -1.982300e+02
-13 966     4.569200e+02 2.393400e+02
-14 966     6.402800e+02 -1.611500e+02
-0 967     3.522400e+02 5.037500e+02
-1 967     7.633800e+02 4.236700e+02
-2 967     1.863000e+01 2.685600e+02
-3 967     -1.272500e+02 -6.372998e+01
-5 967     7.565699e+02 -1.358000e+02
-6 967     -1.010700e+02 5.977900e+02
-8 967     9.602002e+01 2.101300e+02
-9 967     -1.362800e+02 3.080200e+02
-11 967     4.677400e+02 -2.439000e+02
-12 967     6.152002e+01 5.608300e+02
-13 967     4.691500e+02 1.952100e+02
-14 967     6.570000e+02 -2.152200e+02
-0 968     1.253700e+02 -1.659000e+02
-1 968     2.293900e+02 -1.707200e+02
-2 968     3.476200e+02 -1.072000e+02
-7 968     7.067999e+01 -2.816998e+01
-13 968     5.082100e+02 -3.554100e+02
-15 968     1.567500e+02 -7.127002e+01
-0 969     1.985699e+02 -8.065997e+01
-1 969     3.300800e+02 -1.102400e+02
-2 969     3.751600e+02 -1.087000e+01
-6 969     2.086600e+02 -7.020020e+00
-7 969     1.253300e+02 6.723999e+01
-8 969     3.394900e+02 -5.820999e+01
-10 969     1.443100e+02 6.857001e+01
-12 969     2.312200e+02 3.678003e+01
-13 969     5.564800e+02 -2.750700e+02
-15 969     2.456100e+02 5.446002e+01
-0 970     4.773000e+02 3.380100e+02
-1 970     8.218800e+02 2.196900e+02
-6 970     1.725300e+02 4.578300e+02
-7 970     2.720699e+02 4.767800e+02
-8 970     2.883900e+02 1.576200e+02
-12 970     2.842600e+02 4.519300e+02
-14 970     8.788600e+02 -3.722700e+02
-0 971     5.531200e+02 1.886100e+02
-1 971     8.395300e+02 4.297998e+01
-6 971     3.465700e+02 3.279600e+02
-7 971     3.790400e+02 3.524600e+02
-10 971     5.325100e+02 4.196700e+02
-12 971     4.349301e+02 3.364000e+02
-13 971     7.513101e+02 -3.842999e+01
-15 971     7.198101e+02 4.753200e+02
-0 972     9.090002e+01 -1.124100e+02
-1 972     2.141000e+02 -1.077700e+02
-2 972     2.845000e+02 -6.879999e+01
-3 972     1.934000e+02 -3.723500e+02
-6 972     1.070700e+02 -7.741998e+01
-7 972     2.528003e+01 1.734998e+01
-8 972     2.607300e+02 -1.058400e+02
-10 972     2.344000e+01 2.053003e+01
-12 972     1.194200e+02 -3.008002e+01
-15 972     1.031600e+02 -3.109985e+00
-0 973     2.756801e+02 -1.995900e+02
-1 973     3.703900e+02 -2.533400e+02
-2 973     4.936700e+02 -1.139000e+02
-3 973     3.933600e+02 -4.097400e+02
-8 973     4.354000e+02 -1.451600e+02
-10 973     2.454301e+02 -6.044000e+01
-12 973     3.534600e+02 -7.712000e+01
-13 973     6.416100e+02 -3.744200e+02
-15 973     3.667500e+02 -9.733002e+01
-0 974     2.122100e+02 -6.633002e+01
-1 974     3.484399e+02 -1.000300e+02
-3 974     2.796200e+02 -2.982800e+02
-6 974     2.169400e+02 1.276001e+01
-7 974     1.362100e+02 8.367999e+01
-13 974     5.664301e+02 -2.611200e+02
-15 974     2.624000e+02 7.590997e+01
-0 975     4.965000e+02 4.113600e+02
-1 975     8.663900e+02 2.936400e+02
-6 975     1.785300e+02 5.486800e+02
-7 975     2.816400e+02 5.517400e+02
-9 975     8.903003e+01 3.410900e+02
-0 976     6.591300e+02 -8.606000e+01
-1 976     8.644200e+02 -2.807600e+02
-2 976     6.314200e+02 -8.240997e+01
-6 976     5.510300e+02 6.334998e+01
-7 976     5.206801e+02 1.082800e+02
-8 976     5.762400e+02 -9.917999e+01
-10 976     6.791801e+02 1.108600e+02
-12 976     6.294399e+02 7.278003e+01
-0 977     4.812300e+02 3.331100e+02
-1 977     8.243500e+02 2.133000e+02
-2 977     2.754100e+02 2.126000e+02
-3 977     1.358100e+02 -1.123100e+02
-6 977     1.792900e+02 4.537200e+02
-7 977     2.769100e+02 4.722600e+02
-8 977     2.928300e+02 1.555100e+02
-10 977     4.376100e+02 5.854700e+02
-12 977     2.904900e+02 4.471400e+02
-13 977     6.432700e+02 7.123999e+01
-0 978     1.053700e+02 -8.659003e+01
-1 978     2.351200e+02 -8.669000e+01
-2 978     2.927600e+02 -3.503003e+01
-4 978     -3.496500e+02 -4.959399e+02
-6 978     1.164700e+02 -4.178003e+01
-7 978     3.613000e+01 4.615997e+01
-8 978     2.678700e+02 -7.783002e+01
-12 978     1.301800e+02 6.190002e+00
-13 978     4.782200e+02 -2.874100e+02
-15 978     1.190800e+02 3.378003e+01
-0 979     6.551001e+01 -1.608900e+02
-1 979     1.730200e+02 -1.472100e+02
-2 979     2.845000e+02 -1.193300e+02
-10 979     -6.599731e-01 -3.806000e+01
-12 979     1.092000e+02 -9.133002e+01
-15 979     7.479999e+01 -7.221002e+01
-0 980     2.196600e+02 -1.063500e+02
-1 980     3.449700e+02 -1.427100e+02
-2 980     3.986300e+02 -4.007001e+01
-3 980     2.970000e+02 -3.419300e+02
-6 980     2.337100e+02 -3.152002e+01
-7 980     1.489500e+02 4.417999e+01
-8 980     3.581900e+02 -8.141998e+01
-10 980     1.716200e+02 4.095001e+01
-12 980     2.584399e+02 9.770020e+00
-13 980     5.754301e+02 -2.971100e+02
-15 980     2.782900e+02 2.240002e+01
-0 981     9.090002e+01 -1.124100e+02
-1 981     2.141000e+02 -1.077700e+02
-2 981     2.845000e+02 -6.879999e+01
-3 981     1.934000e+02 -3.723500e+02
-6 981     1.070700e+02 -7.741998e+01
-7 981     2.528003e+01 1.734998e+01
-8 981     2.607300e+02 -1.058400e+02
-10 981     2.344000e+01 2.053003e+01
-13 981     4.668000e+02 -3.118800e+02
-15 981     1.031600e+02 -3.109985e+00
-0 982     3.424200e+02 5.479100e+02
-1 982     7.656400e+02 4.737800e+02
-2 982     3.989990e+00 3.156500e+02
-5 982     7.444600e+02 -8.940002e+01
-6 982     -1.202700e+02 6.499000e+02
-8 982     8.415002e+01 2.470900e+02
-9 982     -1.497400e+02 3.487100e+02
-12 982     4.291998e+01 6.083700e+02
-13 982     4.592600e+02 2.320400e+02
-14 982     6.434100e+02 -1.703200e+02
-0 983     5.737400e+02 2.051000e+02
-1 983     8.666000e+02 5.477002e+01
-2 983     4.566700e+02 1.724500e+02
-3 983     3.188300e+02 -1.442700e+02
-6 983     3.688500e+02 3.549800e+02
-8 983     4.350400e+02 1.145800e+02
-9 983     2.503700e+02 2.424600e+02
-10 983     5.560800e+02 4.426900e+02
-12 983     4.560601e+02 3.634400e+02
-13 983     7.710601e+02 -2.121997e+01
-15 983     7.465800e+02 5.021100e+02
-0 984     2.247700e+02 -7.954999e+01
-1 984     3.577000e+02 -1.176300e+02
-2 984     3.957300e+02 -8.650024e+00
-3 984     2.931700e+02 -3.123100e+02
-6 984     2.318900e+02 4.899902e-01
-7 984     1.498900e+02 7.177002e+01
-8 984     3.567600e+02 -5.557999e+01
-10 984     1.746300e+02 7.251001e+01
-13 984     5.775000e+02 -2.727500e+02
-15 984     2.815900e+02 5.944000e+01
-0 985     4.820699e+02 3.294900e+02
-1 985     8.241400e+02 2.095100e+02
-2 985     2.771700e+02 2.094100e+02
-3 985     1.381500e+02 -1.158900e+02
-6 985     1.808800e+02 4.497500e+02
-7 985     2.782400e+02 4.692200e+02
-8 985     2.944500e+02 1.522700e+02
-9 985     9.420001e+01 2.666700e+02
-12 985     2.920400e+02 4.442100e+02
-13 985     6.444500e+02 6.817999e+01
-0 986     2.583300e+02 -2.060600e+02
-1 986     3.498900e+02 -2.535000e+02
-2 986     4.822600e+02 -1.205800e+02
-6 986     3.165300e+02 -1.238700e+02
-7 986     2.052900e+02 -4.507001e+01
-8 986     4.254000e+02 -1.512700e+02
-10 986     2.261000e+02 -6.909003e+01
-12 986     3.381801e+02 -8.807001e+01
-15 986     3.434000e+02 -1.080700e+02
-0 987     2.295900e+02 4.334800e+02
-1 987     6.051200e+02 3.812700e+02
-7 987     1.849976e+00 5.239700e+02
-8 987     1.615997e+01 1.433800e+02
-11 987     3.616801e+02 -3.138600e+02
-14 987     5.402100e+02 -2.962100e+02
-0 988     6.040200e+02 9.834000e+01
-1 988     8.644500e+02 -6.806000e+01
-2 988     5.189399e+02 7.921002e+01
-6 988     4.341000e+02 2.465500e+02
-7 988     4.417800e+02 2.750900e+02
-8 988     4.849600e+02 3.685001e+01
-9 988     3.058400e+02 1.661100e+02
-10 988     5.998700e+02 3.196300e+02
-13 988     8.143900e+02 -1.109800e+02
-15 988     8.017600e+02 3.563600e+02
-0 989     2.385200e+02 5.571900e+02
-1 989     6.320601e+02 5.114000e+02
-0 990     -8.845001e+01 1.102100e+02
-1 990     1.303500e+02 1.563400e+02
-3 990     -1.726000e+02 -2.913100e+02
-4 990     -1.948800e+02 -3.299800e+02
-5 990     4.661899e+02 -5.574800e+02
-6 990     -2.579200e+02 8.258002e+01
-7 990     -2.123600e+02 1.947900e+02
-8 990     -2.214001e+01 -1.228000e+01
-9 990     -1.828300e+02 1.029300e+02
-10 990     -2.081600e+02 2.609200e+02
-12 990     -2.063700e+02 1.336600e+02
-13 990     2.417700e+02 -1.461900e+02
-15 990     -1.641600e+02 2.744300e+02
-0 991     6.150024e+00 -1.955300e+02
-1 991     1.050500e+02 -1.617800e+02
-3 991     1.601400e+02 -4.695200e+02
-4 991     -4.149800e+02 -4.158500e+02
-6 991     5.346997e+01 -1.970200e+02
-7 991     -4.116998e+01 -7.925000e+01
-10 991     -6.550000e+01 -8.448999e+01
-12 991     5.228003e+01 -1.488700e+02
-13 991     4.079000e+02 -3.914300e+02
-15 991     -9.899902e-01 -1.264500e+02
-0 992     -7.892999e+01 -1.500600e+02
-1 992     4.146002e+01 -9.288000e+01
-4 992     -3.671300e+02 -3.478600e+02
-6 992     -6.965997e+01 -1.826801e+02
-7 992     -1.386400e+02 -5.173999e+01
-8 992     1.193800e+02 -1.782700e+02
-10 992     -1.687900e+02 -4.115997e+01
-12 992     -7.012000e+01 -1.283200e+02
-13 992     3.198800e+02 -3.603400e+02
-15 992     -1.211700e+02 -7.709998e+01
-0 993     2.009399e+02 -2.833000e+02
-1 993     2.718700e+02 -3.113900e+02
-2 993     4.500900e+02 -2.309100e+02
-3 993     3.602400e+02 -5.257500e+02
-4 993     -5.295600e+02 -5.746400e+02
-6 993     2.770400e+02 -2.349100e+02
-7 993     1.606600e+02 -1.335700e+02
-8 993     3.953000e+02 -2.414700e+02
-9 993     2.742400e+02 -8.825000e+01
-10 993     1.677200e+02 -1.642600e+02
-12 993     2.936700e+02 -2.011000e+02
-13 993     5.831300e+02 -4.590300e+02
-15 993     2.765200e+02 -2.204100e+02
-0 994     5.706600e+02 2.496800e+02
-1 994     8.774399e+02 1.026700e+02
-2 994     4.413900e+02 2.126100e+02
-7 994     3.880699e+02 4.140900e+02
-8 994     4.229000e+02 1.470500e+02
-12 994     4.409399e+02 4.073700e+02
-13 994     7.623700e+02 1.445001e+01
-15 994     7.380400e+02 5.658400e+02
-0 995     -1.084700e+02 5.510010e+00
-1 995     6.950000e+01 6.321002e+01
-2 995     -1.671002e+01 -4.022998e+01
-4 995     -2.572700e+02 -3.227500e+02
-6 995     -1.993400e+02 -2.951001e+01
-7 995     -2.048600e+02 9.338000e+01
-8 995     1.942999e+01 -7.422998e+01
-10 995     -2.201200e+02 1.364600e+02
-12 995     -1.753300e+02 2.810999e+01
-13 995     2.574500e+02 -2.317700e+02
-15 995     -1.797300e+02 1.295100e+02
-0 996     1.791998e+01 -1.128500e+02
-1 996     1.437900e+02 -8.609998e+01
-6 996     2.734998e+01 -1.034400e+02
-7 996     -4.722998e+01 4.070007e+00
-9 996     7.175000e+01 1.977002e+01
-10 996     -6.090002e+01 1.245001e+01
-12 996     3.462000e+01 -5.291998e+01
-13 996     4.027900e+02 -3.182700e+02
-15 996     4.450012e+00 -1.334003e+01
-0 997     9.071997e+01 -1.727000e+02
-1 997     1.940200e+02 -1.664600e+02
-4 997     -4.136800e+02 -4.840800e+02
-6 997     1.340500e+02 -1.425500e+02
-7 997     3.767999e+01 -4.179999e+01
-8 997     2.824800e+02 -1.544900e+02
-10 997     2.982001e+01 -4.928003e+01
-12 997     1.420700e+02 -9.796002e+01
-13 997     4.775500e+02 -3.643900e+02
-15 997     1.104700e+02 -8.466998e+01
-0 998     -2.015997e+01 -1.980700e+02
-1 998     7.846002e+01 -1.557900e+02
-2 998     2.189600e+02 -1.759400e+02
-3 998     1.400000e+02 -4.767200e+02
-4 998     -4.122000e+02 -3.965300e+02
-6 998     2.912000e+01 -2.080699e+02
-7 998     -6.684003e+01 -8.617999e+01
-10 998     -9.504999e+01 -9.044000e+01
-12 998     2.519000e+01 -1.589200e+02
-15 998     -3.587000e+01 -1.337700e+02
-0 999     1.806200e+02 -3.320800e+02
-1 999     2.423700e+02 -3.533000e+02
-6 999     2.575000e+02 -3.079900e+02
-7 999     1.447900e+02 -1.886400e+02
-8 999     3.773300e+02 -3.072400e+02
-9 999     2.605699e+02 -1.582000e+02
-10 999     1.500200e+02 -2.218900e+02
-12 999     2.752300e+02 -2.752500e+02
-13 999     5.619500e+02 -5.110100e+02
-15 999     2.568700e+02 -2.892400e+02
-0 1000     7.328003e+01 -2.245900e+02
-1 1000     1.584700e+02 -2.110100e+02
-3 1000     2.432400e+02 -4.695400e+02
-4 1000     -4.499400e+02 -4.716600e+02
-6 1000     1.430600e+02 -2.012900e+02
-7 1000     3.154999e+01 -9.433002e+01
-8 1000     2.900800e+02 -1.949900e+02
-10 1000     1.432001e+01 -1.105800e+02
-12 1000     1.441300e+02 -1.579900e+02
-13 1000     4.733000e+02 -4.099500e+02
-15 1000     9.314001e+01 -1.569700e+02
-0 1001     1.177002e+01 -2.121800e+02
-1 1001     1.040200e+02 -1.793900e+02
-2 1001     2.583800e+02 -1.807000e+02
-3 1001     1.783300e+02 -4.796000e+02
-4 1001     -4.290800e+02 -4.209400e+02
-6 1001     7.004999e+01 -2.118300e+02
-7 1001     -3.256000e+01 -9.400000e+01
-8 1001     2.321700e+02 -2.005600e+02
-10 1001     -5.702002e+01 -1.032000e+02
-12 1001     6.752002e+01 -1.649000e+02
-13 1001     4.166700e+02 -4.050300e+02
-15 1001     8.080017e+00 -1.484600e+02
-0 1002     -7.951001e+01 -1.602800e+02
-1 1002     3.750000e+01 -1.024800e+02
-3 1002     5.046002e+01 -4.694301e+02
-6 1002     -6.278998e+01 -1.924800e+02
-8 1002     1.259100e+02 -1.847300e+02
-10 1002     -1.677500e+02 -5.300000e+01
-12 1002     -6.471002e+01 -1.386100e+02
-13 1002     3.214399e+02 -3.682300e+02
-15 1002     -1.205100e+02 -9.041998e+01
-0 1003     2.884003e+01 -2.326500e+02
-1 1003     1.157700e+02 -2.051000e+02
-2 1003     2.794301e+02 -2.048800e+02
-3 1003     1.980300e+02 -5.023400e+02
-4 1003     -4.489500e+02 -4.329500e+02
-6 1003     9.208002e+01 -2.314200e+02
-7 1003     -1.273999e+01 -1.120300e+02
-8 1003     2.496400e+02 -2.200000e+02
-10 1003     -3.551001e+01 -1.245400e+02
-12 1003     9.142999e+01 -1.865900e+02
-13 1003     4.321100e+02 -4.233900e+02
-15 1003     3.465997e+01 -1.738400e+02
-0 1004     1.510999e+01 -2.211600e+02
-1 1004     1.050600e+02 -1.889900e+02
-3 1004     1.825600e+02 -4.924900e+02
-4 1004     -4.368600e+02 -4.229500e+02
-6 1004     7.521997e+01 -2.220400e+02
-7 1004     -2.809003e+01 -1.027800e+02
-8 1004     2.359900e+02 -2.101400e+02
-10 1004     -5.252002e+01 -1.129700e+02
-12 1004     7.312000e+01 -1.756300e+02
-13 1004     4.195601e+02 -4.136700e+02
-15 1004     1.445001e+01 -1.601900e+02
-0 1005     -9.291998e+01 -1.725700e+02
-1 1005     2.298999e+01 -1.107100e+02
-2 1005     1.072200e+02 -1.937400e+02
-3 1005     3.116998e+01 -4.978300e+02
-4 1005     -3.817800e+02 -3.350200e+02
-6 1005     -8.104001e+01 -2.165699e+02
-7 1005     -1.498300e+02 -7.709003e+01
-8 1005     1.093200e+02 -2.065200e+02
-12 1005     -8.160999e+01 -1.625800e+02
-15 1005     -1.372700e+02 -1.089800e+02
-0 1006     3.260900e+02 5.041400e+02
-1 1006     7.332100e+02 4.307100e+02
-2 1006     -3.679993e+00 2.694500e+02
-5 1006     7.299301e+02 -1.373800e+02
-6 1006     -1.291600e+02 5.952400e+02
-8 1006     7.753998e+01 2.109000e+02
-9 1006     -1.554600e+02 3.090600e+02
-11 1006     4.429100e+02 -2.447000e+02
-12 1006     3.451001e+01 5.590700e+02
-13 1006     4.467600e+02 1.971800e+02
-14 1006     6.294700e+02 -2.125700e+02
-0 1007     1.731899e+02 -3.053600e+02
-1 1007     2.393000e+02 -3.221800e+02
-2 1007     4.208500e+02 -2.721700e+02
-7 1007     1.348600e+02 -1.611700e+02
-8 1007     3.685700e+02 -2.746200e+02
-9 1007     2.536000e+02 -1.237900e+02
-0 1008     6.115100e+02 1.307700e+02
-1 1008     8.830300e+02 -3.560999e+01
-2 1008     5.180900e+02 1.165600e+02
-3 1008     3.807000e+02 -1.963500e+02
-7 1008     4.447000e+02 3.086200e+02
-8 1008     4.857900e+02 6.635001e+01
-9 1008     3.055900e+02 1.974400e+02
-10 1008     6.062800e+02 3.587200e+02
-12 1008     5.177600e+02 2.983100e+02
-13 1008     8.189500e+02 -8.148999e+01
-15 1008     8.091801e+02 4.027600e+02
-0 1009     6.722900e+02 -2.746400e+02
-1 1009     8.011300e+02 -4.799399e+02
-0 1010     -2.405000e+02 4.504400e+02
-1 1010     1.193800e+02 5.184300e+02
-2 1010     -5.208600e+02 2.016300e+02
-4 1010     3.419983e+00 -2.166100e+02
-5 1010     1.655100e+02 -2.034300e+02
-7 1010     -4.594600e+02 4.902900e+02
-11 1010     -6.595001e+01 -3.110900e+02
-12 1010     -5.628700e+02 4.141300e+02
-0 1011     -3.768000e+02 4.244100e+02
-1 1011     -2.038000e+01 5.260400e+02
-7 1011     -5.960200e+02 4.485500e+02
-8 1011     -4.628900e+02 1.192300e+02
-10 1011     -5.936200e+02 6.140200e+02
-12 1011     -7.178300e+02 3.625200e+02
-14 1011     -5.415002e+01 -3.212400e+02
-0 1012     -1.930900e+02 4.649800e+02
-1 1012     1.702000e+02 5.216600e+02
-5 1012     2.132600e+02 -1.881000e+02
-7 1012     -4.137900e+02 5.111600e+02
-12 1012     -5.112600e+02 4.391100e+02
-0 1013     -3.572000e+02 4.869300e+02
-1 1013     1.285999e+01 5.821700e+02
-8 1013     -4.472700e+02 1.800100e+02
-12 1013     -7.054500e+02 4.434100e+02
-0 1014     -2.410999e+01 -6.006000e+01
-1 1014     1.223700e+02 -2.302002e+01
-3 1014     4.754999e+01 -3.647300e+02
-7 1014     -1.012200e+02 4.715002e+01
-8 1014     1.367900e+02 -9.265002e+01
-10 1014     -1.148900e+02 6.882001e+01
-15 1014     -5.873999e+01 5.203003e+01
-0 1015     -3.400000e+01 5.159003e+01
-1 1015     1.479399e+02 8.788000e+01
-2 1015     7.423999e+01 5.045001e+01
-3 1015     -1.420001e+01 -2.633900e+02
-5 1015     5.839900e+02 -6.144900e+02
-6 1015     -1.075300e+02 5.845001e+01
-7 1015     -1.322000e+02 1.562800e+02
-8 1015     9.328998e+01 -2.929993e+00
-10 1015     -1.384400e+02 1.974700e+02
-12 1015     -8.712000e+01 1.143000e+02
-13 1015     3.292900e+02 -1.827400e+02
-15 1015     -8.691998e+01 2.025500e+02
-0 1016     2.770020e+00 -2.641300e+02
-1 1016     8.666998e+01 -2.280400e+02
-3 1016     1.651600e+02 -5.720400e+02
-4 1016     -4.702000e+02 -4.039000e+02
-6 1016     5.700000e+01 -2.884000e+02
-7 1016     -3.784998e+01 -1.518000e+02
-9 1016     1.076600e+02 -1.298300e+02
-10 1016     -6.135999e+01 -1.634100e+02
-12 1016     5.933002e+01 -2.431900e+02
-13 1016     4.017500e+02 -4.585200e+02
-15 1016     5.250000e+00 -2.199300e+02
-0 1017     1.194000e+01 -2.362400e+02
-1 1017     1.000000e+02 -2.038800e+02
-2 1017     2.575699e+02 -2.200700e+02
-3 1017     1.793000e+02 -5.193000e+02
-6 1017     7.050000e+01 -2.449301e+02
-7 1017     -2.998999e+01 -1.199700e+02
-8 1017     2.317300e+02 -2.316700e+02
-9 1017     1.193300e+02 -8.628003e+01
-12 1017     6.978003e+01 -1.992400e+02
-15 1017     1.248999e+01 -1.808600e+02
-0 1018     -4.795001e+01 -1.125400e+02
-1 1018     8.272998e+01 -6.623999e+01
-2 1018     1.339400e+02 -1.124000e+02
-3 1018     5.276001e+01 -4.182500e+02
-6 1018     -5.122998e+01 -1.292900e+02
-7 1018     -1.146500e+02 -8.479980e+00
-8 1018     1.347800e+02 -1.397900e+02
-9 1018     1.069000e+01 -3.119995e+00
-10 1018     -1.369800e+02 5.549988e+00
-12 1018     -4.622998e+01 -7.563000e+01
-13 1018     3.417000e+02 -3.245900e+02
-15 1018     -8.414001e+01 -2.197998e+01
-0 1019     -1.235200e+02 -3.454999e+01
-1 1019     4.216998e+01 2.923999e+01
-3 1019     -9.400000e+01 -3.935900e+02
-4 1019     -2.817700e+02 -3.116200e+02
-7 1019     -2.118000e+02 5.160999e+01
-9 1019     -1.152200e+02 1.562000e+01
-10 1019     -2.332000e+02 8.796002e+01
-13 1019     2.513900e+02 -2.670000e+02
-15 1019     -1.948500e+02 7.313000e+01
-0 1020     -8.408002e+01 -1.023800e+02
-1 1020     5.401001e+01 -4.628998e+01
-2 1020     8.032001e+01 -1.226500e+02
-3 1020     5.100098e-01 -4.301400e+02
-6 1020     -1.047700e+02 -1.355200e+02
-7 1020     -1.548600e+02 -6.590027e+00
-10 1020     -1.797100e+02 1.346002e+01
-12 1020     -9.784003e+01 -7.965997e+01
-15 1020     -1.335000e+02 -1.317999e+01
-0 1021     -2.776001e+01 -2.748999e+01
-1 1021     1.284500e+02 9.479980e+00
-2 1021     1.172800e+02 -2.412000e+01
-3 1021     3.183002e+01 -3.320800e+02
-4 1021     -2.880300e+02 -3.889500e+02
-6 1021     -6.508002e+01 -2.612000e+01
-10 1021     -1.244700e+02 1.044000e+02
-12 1021     -5.187000e+01 2.921997e+01
-15 1021     -6.840002e+01 9.557999e+01
-0 1022     -9.431000e+01 -2.284000e+02
-1 1022     1.146997e+01 -1.644900e+02
-3 1022     2.146002e+01 -5.957700e+02
-4 1022     -4.254600e+02 -3.238100e+02
-6 1022     -8.467999e+01 -2.971100e+02
-7 1022     -1.468600e+02 -1.381600e+02
-8 1022     1.038600e+02 -2.808800e+02
-9 1022     -1.313000e+01 -1.509400e+02
-12 1022     -7.940002e+01 -2.441800e+02
-13 1022     2.992000e+02 -4.389800e+02
-0 1023     -5.228003e+01 -1.177400e+02
-1 1023     7.704999e+01 -7.009003e+01
-7 1023     -1.181300e+02 -1.471997e+01
-8 1023     1.307700e+02 -1.469200e+02
-10 1023     -1.422200e+02 -1.270020e+00
-12 1023     -5.103003e+01 -8.401001e+01
-0 1024     1.392999e+01 -2.491600e+02
-1 1024     9.906000e+01 -2.166000e+02
-2 1024     2.582200e+02 -2.411800e+02
-3 1024     1.793400e+02 -5.404500e+02
-4 1024     -4.598800e+02 -4.170900e+02
-6 1024     7.251001e+01 -2.624900e+02
-7 1024     -2.723999e+01 -1.335300e+02
-8 1024     2.323000e+02 -2.481600e+02
-9 1024     1.195100e+02 -1.034500e+02
-10 1024     -5.067999e+01 -1.455900e+02
-12 1024     7.282001e+01 -2.176400e+02
-13 1024     4.146400e+02 -4.424900e+02
-15 1024     1.746997e+01 -1.982700e+02
-0 1025     -4.473999e+01 -1.136000e+02
-1 1025     8.521002e+01 -6.790002e+01
-3 1025     5.725000e+01 -4.181200e+02
-6 1025     -4.648999e+01 -1.286500e+02
-7 1025     -1.111400e+02 -8.669983e+00
-13 1025     3.448101e+02 -3.252200e+02
-15 1025     -7.962000e+01 -2.302002e+01
-0 1026     -5.559998e+00 -2.713200e+02
-1 1026     7.781000e+01 -2.326600e+02
-6 1026     4.728998e+01 -3.021700e+02
-7 1026     -4.589001e+01 -1.614800e+02
-8 1026     2.106300e+02 -2.848100e+02
-10 1026     -7.069000e+01 -1.730800e+02
-12 1026     4.940997e+01 -2.569500e+02
-13 1026     3.932100e+02 -4.672400e+02
-15 1026     -4.559998e+00 -2.307400e+02
-0 1027     -1.803998e+01 -1.305700e+02
-1 1027     1.039500e+02 -9.222998e+01
-2 1027     1.803100e+02 -1.162300e+02
-6 1027     -4.760010e+00 -1.360600e+02
-7 1027     -7.977002e+01 -2.014001e+01
-8 1027     1.715100e+02 -1.445500e+02
-10 1027     -1.005700e+02 -1.204999e+01
-12 1027     -9.400024e-01 -8.429999e+01
-13 1027     3.737100e+02 -3.369800e+02
-15 1027     -4.171002e+01 -4.232001e+01
-0 1028     -6.870001e+01 -1.079900e+02
-1 1028     6.592999e+01 -5.627002e+01
-3 1028     2.313000e+01 -4.268500e+02
-6 1028     -8.178000e+01 -1.345100e+02
-12 1028     -7.571002e+01 -7.952002e+01
-0 1029     4.084998e+01 -1.458900e+02
-1 1029     1.539900e+02 -1.246000e+02
-2 1029     2.533800e+02 -1.105900e+02
-6 1029     7.056000e+01 -1.298800e+02
-7 1029     -1.698999e+01 -2.365002e+01
-8 1029     2.319600e+02 -1.411900e+02
-10 1029     -3.058002e+01 -2.379999e+01
-15 1029     3.945001e+01 -5.520001e+01
-0 1030     4.169000e+01 -1.630300e+02
-1 1030     1.502600e+02 -1.416200e+02
-2 1030     2.577200e+02 -1.321000e+02
-3 1030     1.727200e+02 -4.334900e+02
-6 1030     7.523999e+01 -1.513000e+02
-7 1030     -1.366998e+01 -4.160999e+01
-10 1030     -2.814001e+01 -4.346997e+01
-13 1030     4.311600e+02 -3.604800e+02
-15 1030     4.288000e+01 -7.817999e+01
-0 1031     -4.346002e+01 -1.262000e+02
-1 1031     8.321002e+01 -8.056000e+01
-2 1031     1.432700e+02 -1.277500e+02
-3 1031     6.258002e+01 -4.329399e+02
-6 1031     -4.164001e+01 -1.443500e+02
-7 1031     -1.078300e+02 -2.219000e+01
-10 1031     -1.299500e+02 -1.021002e+01
-12 1031     -3.690002e+01 -9.153003e+01
-13 1031     3.468500e+02 -3.369100e+02
-15 1031     -7.607001e+01 -4.008002e+01
-0 1032     -4.346002e+01 -1.262000e+02
-1 1032     8.321002e+01 -8.056000e+01
-2 1032     1.432700e+02 -1.277500e+02
-3 1032     6.258002e+01 -4.329399e+02
-6 1032     -4.164001e+01 -1.443500e+02
-7 1032     -1.078300e+02 -2.219000e+01
-10 1032     -1.299500e+02 -1.021002e+01
-12 1032     -3.690002e+01 -9.153003e+01
-15 1032     -7.607001e+01 -4.008002e+01
-0 1033     6.128003e+01 -1.591400e+02
-1 1033     1.694600e+02 -1.444900e+02
-3 1033     1.926600e+02 -4.205300e+02
-6 1033     9.734998e+01 -1.384301e+02
-7 1033     5.520020e+00 -3.391998e+01
-8 1033     2.535600e+02 -1.488000e+02
-10 1033     -5.940002e+00 -3.771002e+01
-12 1033     1.036800e+02 -9.146002e+01
-13 1033     4.496300e+02 -3.551600e+02
-15 1033     6.881000e+01 -7.044000e+01
-0 1034     -2.969971e+00 -2.755500e+02
-1 1034     7.915002e+01 -2.373900e+02
-4 1034     -4.786100e+02 -3.977700e+02
-6 1034     5.078998e+01 -3.064500e+02
-7 1034     -4.287000e+01 -1.653100e+02
-8 1034     2.149900e+02 -2.883300e+02
-9 1034     1.020600e+02 -1.482500e+02
-10 1034     -6.782001e+01 -1.772600e+02
-12 1034     5.444000e+01 -2.609100e+02
-15 1034     -5.599976e-01 -2.360700e+02
-0 1035     3.500000e+01 -1.540800e+02
-1 1035     1.466400e+02 -1.312600e+02
-2 1035     2.485601e+02 -1.231700e+02
-3 1035     1.633500e+02 -4.249200e+02
-4 1035     -3.887800e+02 -4.379700e+02
-6 1035     6.515002e+01 -1.420601e+02
-7 1035     -2.176001e+01 -3.341998e+01
-8 1035     2.275400e+02 -1.513100e+02
-10 1035     -3.627002e+01 -3.394000e+01
-12 1035     7.058002e+01 -9.396002e+01
-13 1035     4.251500e+02 -3.528600e+02
-0 1036     -1.532001e+01 -2.716700e+02
-1 1036     6.912000e+01 -2.299600e+02
-4 1036     -4.730500e+02 -3.874200e+02
-6 1036     3.409003e+01 -3.076500e+02
-7 1036     -5.584998e+01 -1.638300e+02
-8 1036     2.008900e+02 -2.888800e+02
-9 1036     8.904999e+01 -1.491700e+02
-10 1036     -8.171997e+01 -1.741700e+02
-12 1036     3.635999e+01 -2.614100e+02
-13 1036     3.838101e+02 -4.686200e+02
-15 1036     -1.769000e+01 -2.327200e+02
-0 1037     -5.840027e+00 -2.478000e+02
-1 1037     8.158002e+01 -2.092700e+02
-2 1037     2.335400e+02 -2.491100e+02
-3 1037     1.556800e+02 -5.489100e+02
-4 1037     -4.551700e+02 -3.996200e+02
-6 1037     4.710999e+01 -2.700500e+02
-7 1037     -4.881000e+01 -1.361700e+02
-8 1037     2.109500e+02 -2.540000e+02
-15 1037     -9.729980e+00 -1.990600e+02
-0 1038     -8.609003e+01 -2.527200e+02
-1 1038     1.233002e+01 -1.905600e+02
-6 1038     -6.696997e+01 -3.223700e+02
-7 1038     -1.342300e+02 -1.612300e+02
-8 1038     1.174400e+02 -3.023300e+02
-10 1038     -1.654000e+02 -1.601900e+02
-13 1038     3.091300e+02 -4.604700e+02
-15 1038     -1.144900e+02 -2.166300e+02
-0 1039     3.800000e+01 -2.351400e+02
-1 1039     1.232900e+02 -2.100400e+02
-2 1039     2.899800e+02 -2.021100e+02
-3 1039     2.102800e+02 -5.009600e+02
-4 1039     -4.532000e+02 -4.407000e+02
-6 1039     1.032900e+02 -2.300900e+02
-7 1039     -3.070007e+00 -1.128600e+02
-8 1039     2.588900e+02 -2.192200e+02
-9 1039     1.447500e+02 -7.113000e+01
-10 1039     -2.452002e+01 -1.268200e+02
-12 1039     1.031900e+02 -1.859000e+02
-13 1039     4.403800e+02 -4.241600e+02
-15 1039     4.733002e+01 -1.761800e+02
-0 1040     8.042999e+01 -1.682400e+02
-1 1040     1.854100e+02 -1.588600e+02
-2 1040     3.022900e+02 -1.238900e+02
-3 1040     2.144100e+02 -4.241801e+02
-4 1040     -4.080500e+02 -4.754200e+02
-6 1040     1.211800e+02 -1.412600e+02
-7 1040     2.622998e+01 -3.904999e+01
-8 1040     2.724200e+02 -1.525700e+02
-10 1040     1.716998e+01 -4.521002e+01
-12 1040     1.287400e+02 -9.579999e+01
-13 1040     4.679700e+02 -3.613500e+02
-15 1040     9.604999e+01 -8.009998e+01
-0 1041     -6.539001e+01 -2.456000e+02
-1 1041     3.003998e+01 -1.876900e+02
-2 1041     1.460700e+02 -2.868900e+02
-4 1041     -4.428700e+02 -3.485300e+02
-6 1041     -3.684998e+01 -2.994000e+02
-7 1041     -1.120800e+02 -1.478900e+02
-8 1041     1.413900e+02 -2.814900e+02
-9 1041     2.813000e+01 -1.481400e+02
-10 1041     -1.425900e+02 -1.495000e+02
-12 1041     -3.542999e+01 -2.482300e+02
-15 1041     -8.847998e+01 -2.039000e+02
-0 1042     2.937200e+02 5.577100e+02
-1 1042     7.126200e+02 4.964200e+02
-2 1042     -3.815997e+01 3.260900e+02
-4 1042     3.170001e+01 -5.551000e+02
-5 1042     6.947000e+02 -8.097998e+01
-8 1042     4.906000e+01 2.553000e+02
-9 1042     -1.862400e+02 3.559400e+02
-11 1042     4.073800e+02 -2.007200e+02
-12 1042     -8.200012e+00 6.148000e+02
-13 1042     4.199100e+02 2.369500e+02
-14 1042     5.946300e+02 -1.629100e+02
-0 1043     -3.234800e+02 4.967500e+02
-1 1043     4.826001e+01 5.839200e+02
-2 1043     -6.068100e+02 2.568100e+02
-7 1043     -5.508900e+02 5.312600e+02
-12 1043     -6.664100e+02 4.593300e+02
-14 1043     3.500000e+00 -2.456200e+02
-0 1044     -3.130700e+02 4.875700e+02
-1 1044     5.625000e+01 5.723500e+02
-2 1044     -5.960700e+02 2.462600e+02
-7 1044     -5.390700e+02 5.224000e+02
-8 1044     -4.096600e+02 1.815200e+02
-12 1044     -6.532500e+02 4.497300e+02
-0 1045     -3.005100e+02 3.818100e+02
-1 1045     4.402002e+01 4.663300e+02
-2 1045     -5.802200e+02 1.148800e+02
-5 1045     9.981000e+01 -2.757900e+02
-7 1045     -5.111700e+02 4.119700e+02
-8 1045     -3.959200e+02 7.854001e+01
-10 1045     -4.935000e+02 5.675200e+02
-11 1045     -1.201500e+02 -3.706000e+02
-12 1045     -6.206700e+02 3.204000e+02
-13 1045     -4.871997e+01 5.419000e+01
-14 1045     1.678998e+01 -3.663500e+02
-0 1046     -5.196700e+02 2.803400e+02
-1 1046     -1.886400e+02 4.219000e+02
-5 1046     -1.314100e+02 -3.821800e+02
-7 1046     -7.239200e+02 2.768400e+02
-10 1046     -7.482200e+02 4.247600e+02
-14 1046     -2.122400e+02 -4.785800e+02
-15 1046     -7.739200e+02 4.509500e+02
-0 1047     -3.146500e+02 4.128500e+02
-1 1047     3.781000e+01 5.001500e+02
-7 1047     -5.297300e+02 4.431200e+02
-8 1047     -4.090600e+02 1.090500e+02
-10 1047     -5.149300e+02 6.051500e+02
-12 1047     -6.422900e+02 3.575900e+02
-0 1048     -4.552300e+02 3.607700e+02
-1 1048     -1.109600e+02 4.832300e+02
-7 1048     -6.679100e+02 3.711300e+02
-8 1048     -5.285200e+02 5.448999e+01
-10 1048     -6.810800e+02 5.286200e+02
-11 1048     -2.583600e+02 -3.879300e+02
-0 1049     -2.756200e+02 4.454600e+02
-1 1049     8.366998e+01 5.225300e+02
-5 1049     1.313100e+02 -2.074900e+02
-7 1049     -4.940300e+02 4.823200e+02
-8 1049     -3.772300e+02 1.414800e+02
-0 1050     -2.971100e+02 4.434100e+02
-1 1050     6.162000e+01 5.256900e+02
-2 1050     -5.787000e+02 1.922700e+02
-5 1050     1.095600e+02 -2.097100e+02
-7 1050     -5.162600e+02 4.773400e+02
-12 1050     -6.271800e+02 3.977200e+02
-14 1050     2.485999e+01 -3.007800e+02
-0 1051     -1.560800e+02 3.354300e+02
-1 1051     1.765601e+02 3.841800e+02
-7 1051     -3.597200e+02 3.796800e+02
-11 1051     9.760010e+00 -4.129600e+02
-14 1051     1.565200e+02 -4.165100e+02
-15 1051     -2.772300e+02 5.745200e+02
-0 1052     -2.405000e+02 4.504400e+02
-1 1052     1.193800e+02 5.184300e+02
-2 1052     -5.208600e+02 2.016300e+02
-5 1052     1.655100e+02 -2.034300e+02
-7 1052     -4.594600e+02 4.902900e+02
-11 1052     -6.595001e+01 -3.110900e+02
-12 1052     -5.628700e+02 4.141300e+02
-14 1052     8.004999e+01 -2.931400e+02
-0 1053     -2.155500e+02 2.253400e+02
-1 1053     8.248999e+01 2.937300e+02
-11 1053     -5.064001e+01 -5.163199e+02
-0 1054     -2.993900e+02 4.208000e+02
-1 1054     5.428003e+01 5.038600e+02
-2 1054     -5.805700e+02 1.638000e+02
-5 1054     1.047900e+02 -2.336000e+02
-7 1054     -5.155200e+02 4.530800e+02
-10 1054     -4.977100e+02 6.152900e+02
-11 1054     -1.182400e+02 -3.368300e+02
-12 1054     -6.259600e+02 3.692900e+02
-14 1054     2.090997e+01 -3.246800e+02
-0 1055     -2.251000e+02 4.544100e+02
-1 1055     1.358900e+02 5.190100e+02
-2 1055     -5.058200e+02 2.056600e+02
-7 1055     -4.445900e+02 4.972000e+02
-0 1056     -2.186700e+02 3.837000e+02
-1 1056     1.255100e+02 4.484100e+02
-4 1056     -3.632001e+01 -2.226200e+02
-14 1056     9.769000e+01 -3.632200e+02
-0 1057     -1.672400e+02 3.633500e+02
-1 1057     1.720500e+02 4.147300e+02
-2 1057     -4.427300e+02 9.409003e+01
-5 1057     2.312400e+02 -2.976200e+02
-7 1057     -3.741600e+02 4.082300e+02
-8 1057     -2.836800e+02 6.509000e+01
-13 1057     5.750000e+01 4.378998e+01
-0 1058     -3.282300e+02 4.206700e+02
-1 1058     2.595001e+01 5.104200e+02
-2 1058     -6.105400e+02 1.632400e+02
-5 1058     7.640997e+01 -2.335100e+02
-7 1058     -5.449500e+02 4.495300e+02
-10 1058     -5.335900e+02 6.130700e+02
-12 1058     -6.595200e+02 3.640400e+02
-13 1058     -6.991998e+01 8.645001e+01
-14 1058     -7.320007e+00 -3.250800e+02
-0 1059     -3.768000e+02 4.244100e+02
-1 1059     -2.038000e+01 5.260400e+02
-2 1059     -6.623000e+02 1.684000e+02
-7 1059     -5.960200e+02 4.485500e+02
-10 1059     -5.936200e+02 6.140200e+02
-11 1059     -1.855900e+02 -3.326200e+02
-12 1059     -7.178300e+02 3.625200e+02
-14 1059     -5.415002e+01 -3.212400e+02
-0 1060     -4.952300e+02 3.796100e+02
-1 1060     -1.439600e+02 5.106800e+02
-14 1060     -1.755300e+02 -3.688600e+02
-0 1061     -3.640100e+02 3.071900e+02
-1 1061     -3.520001e+01 4.096800e+02
-7 1061     -5.657500e+02 3.250700e+02
-10 1061     -5.601400e+02 4.703200e+02
-13 1061     -1.022000e+02 -1.363000e+01
-14 1061     -5.357001e+01 -4.488900e+02
-15 1061     -5.610000e+02 5.082400e+02
-0 1062     -3.324200e+02 2.079700e+02
-1 1062     -3.425000e+01 3.074300e+02
-7 1062     -5.136800e+02 2.290100e+02
-8 1062     -3.957000e+02 -8.112000e+01
-10 1062     -5.081200e+02 3.535100e+02
-13 1062     -6.390997e+01 -9.778998e+01
-14 1062     -1.185999e+01 -5.592400e+02
-0 1063     -7.641700e+02 4.679993e+00
-1 1063     -4.868100e+02 2.287100e+02
-0 1064     -7.930800e+02 1.850000e+01
-1 1064     -5.051500e+02 2.482000e+02
-0 1065     -8.141800e+02 -7.800293e-01
-1 1065     -5.285900e+02 2.364300e+02
-0 1066     -2.028600e+02 3.778900e+02
-1 1066     1.397200e+02 4.360400e+02
-2 1066     -4.797000e+02 1.132200e+02
-5 1066     1.977100e+02 -2.796700e+02
-7 1066     -4.105500e+02 4.202800e+02
-8 1066     -3.134500e+02 7.912000e+01
-11 1066     -3.247998e+01 -3.748600e+02
-12 1066     -5.067700e+02 3.335200e+02
-13 1066     2.909998e+01 5.446002e+01
-14 1066     1.123400e+02 -3.703200e+02
-0 1067     -1.930900e+02 4.649800e+02
-1 1067     1.702000e+02 5.216600e+02
-2 1067     -4.741700e+02 2.181800e+02
-7 1067     -4.137900e+02 5.111600e+02
-0 1068     -3.839200e+02 4.360300e+02
-1 1068     -2.475000e+01 5.393500e+02
-2 1068     -6.686900e+02 1.830400e+02
-12 1068     -7.277500e+02 3.766000e+02
-0 1069     -2.472800e+02 4.457100e+02
-1 1069     1.117700e+02 5.159900e+02
-2 1069     -5.276000e+02 1.949500e+02
-5 1069     1.588500e+02 -2.076500e+02
-7 1069     -4.657200e+02 4.852300e+02
-12 1069     -5.696500e+02 4.079700e+02
-14 1069     7.339001e+01 -2.978300e+02
-0 1070     -2.705600e+02 4.422100e+02
-1 1070     8.735999e+01 5.181100e+02
-2 1070     -5.514800e+02 1.902300e+02
-4 1070     1.419983e+00 -1.990600e+02
-5 1070     1.355000e+02 -2.115600e+02
-7 1070     -4.889800e+02 4.788200e+02
-8 1070     -3.747700e+02 1.369900e+02
-12 1070     -5.963200e+02 4.000200e+02
-13 1070     -2.403998e+01 1.072100e+02
-14 1070     5.026001e+01 -3.019200e+02
-0 1071     -2.181200e+02 4.644800e+02
-1 1071     1.452100e+02 5.271700e+02
-2 1071     -4.989900e+02 2.181700e+02
-4 1071     1.001001e+01 -2.306900e+02
-5 1071     1.894100e+02 -1.881100e+02
-7 1071     -4.384600e+02 5.081300e+02
-8 1071     -3.297300e+02 1.612000e+02
-11 1071     -4.545001e+01 -2.985800e+02
-12 1071     -5.394700e+02 4.353900e+02
-0 1072     -2.936100e+02 1.866200e+02
-1 1072     -5.630005e+00 2.773500e+02
-7 1072     -4.683000e+02 2.143800e+02
-0 1073     -4.469100e+02 2.484400e+02
-1 1073     -1.277100e+02 3.739800e+02
-7 1073     -6.442600e+02 2.514900e+02
-11 1073     -2.585300e+02 -4.899200e+02
-13 1073     -1.732900e+02 -6.972998e+01
-14 1073     -1.463800e+02 -5.154800e+02
-0 1074     -3.167800e+02 1.945600e+02
-1 1074     -2.423999e+01 2.908200e+02
-13 1074     -4.663000e+01 -1.080200e+02
-0 1075     -3.393600e+02 3.764600e+02
-1 1075     4.809998e+00 4.706800e+02
-2 1075     -6.212400e+02 1.073800e+02
-7 1075     -5.502300e+02 4.015600e+02
-10 1075     -5.401900e+02 5.574800e+02
-11 1075     -1.550900e+02 -3.755300e+02
-12 1075     -6.652900e+02 3.075700e+02
-0 1076     -1.851200e+02 4.395500e+02
-1 1076     1.723000e+02 4.947700e+02
-5 1076     2.193500e+02 -2.144400e+02
-7 1076     -4.021300e+02 4.856500e+02
-8 1076     -3.026100e+02 1.376500e+02
-12 1076     -4.980600e+02 4.099900e+02
-0 1077     -1.851200e+02 4.395500e+02
-1 1077     1.723000e+02 4.947700e+02
-2 1077     -4.649600e+02 1.875200e+02
-5 1077     2.193500e+02 -2.144400e+02
-7 1077     -4.021300e+02 4.856500e+02
-12 1077     -4.980600e+02 4.099900e+02
-0 1078     -3.047600e+02 3.565500e+02
-1 1078     3.381000e+01 4.429600e+02
-5 1078     9.282001e+01 -3.032400e+02
-7 1078     -5.120400e+02 3.847700e+02
-8 1078     -3.989100e+02 5.314001e+01
-10 1078     -4.951300e+02 5.357600e+02
-12 1078     -6.212500e+02 2.884100e+02
-14 1078     1.031000e+01 -3.939100e+02
-0 1079     -1.914700e+02 3.419300e+02
-1 1079     1.428101e+02 3.996500e+02
-2 1079     -4.663900e+02 6.602002e+01
-5 1079     2.052600e+02 -3.213800e+02
-7 1079     -3.952800e+02 3.825000e+02
-8 1079     -3.026400e+02 4.223001e+01
-12 1079     -4.884900e+02 2.879400e+02
-15 1079     -3.268300e+02 5.793500e+02
-0 1080     -2.149700e+02 4.000900e+02
-1 1080     1.330100e+02 4.632100e+02
-2 1080     -4.930200e+02 1.389000e+02
-4 1080     -2.651001e+01 -2.258700e+02
-5 1080     1.867800e+02 -2.567900e+02
-7 1080     -4.269200e+02 4.409700e+02
-8 1080     -3.249300e+02 9.916000e+01
-10 1080     -3.924900e+02 5.971300e+02
-11 1080     -4.375000e+01 -3.549000e+02
-12 1080     -5.250600e+02 3.569000e+02
-13 1080     2.027002e+01 7.384003e+01
-14 1080     1.024200e+02 -3.457100e+02
-0 1081     -3.383800e+02 4.730500e+02
-1 1081     2.803998e+01 5.646200e+02
-2 1081     -6.221700e+02 2.291200e+02
-5 1081     7.210999e+01 -1.773800e+02
-7 1081     -5.632100e+02 5.046500e+02
-14 1081     -1.271997e+01 -2.696200e+02
-0 1082     -2.904100e+02 4.371500e+02
-1 1082     6.702002e+01 5.177300e+02
-2 1082     -5.716400e+02 1.841400e+02
-7 1082     -5.085500e+02 4.714800e+02
-8 1082     -3.893900e+02 1.329800e+02
-12 1082     -6.183200e+02 3.907200e+02
-13 1082     -3.933002e+01 1.022700e+02
-14 1082     3.104999e+01 -3.074100e+02
-0 1083     -3.383800e+02 4.730500e+02
-1 1083     2.803998e+01 5.646200e+02
-2 1083     -6.221700e+02 2.291200e+02
-5 1083     7.210999e+01 -1.773800e+02
-7 1083     -5.632100e+02 5.046500e+02
-14 1083     -1.271997e+01 -2.696200e+02
-0 1084     -2.919700e+02 3.973300e+02
-1 1084     5.553003e+01 4.790900e+02
-4 1084     -2.182001e+01 -1.835800e+02
-5 1084     1.111900e+02 -2.591600e+02
-8 1084     -3.876800e+02 9.512000e+01
-11 1084     -1.125700e+02 -3.577700e+02
-13 1084     -4.078003e+01 6.808002e+01
-14 1084     2.728998e+01 -3.495800e+02
-0 1085     -2.859800e+02 3.706700e+02
-1 1085     5.592999e+01 4.519300e+02
-5 1085     1.133100e+02 -2.880200e+02
-7 1085     -4.939700e+02 4.022700e+02
-8 1085     -3.825700e+02 6.873001e+01
-10 1085     -4.735900e+02 5.552200e+02
-13 1085     -3.703003e+01 4.526001e+01
-14 1085     3.073999e+01 -3.781600e+02
-0 1086     -2.610000e+02 4.514500e+02
-1 1086     9.928998e+01 5.247300e+02
-11 1086     -8.377002e+01 -3.099300e+02
-12 1086     -5.865100e+02 4.125000e+02
-14 1086     6.034998e+01 -2.921900e+02
-0 1087     -2.246700e+02 3.929200e+02
-1 1087     1.217000e+02 4.583100e+02
-2 1087     -5.020700e+02 1.295900e+02
-7 1087     -4.352300e+02 4.324100e+02
-8 1087     -3.327200e+02 9.167999e+01
-10 1087     -4.029800e+02 5.871300e+02
-11 1087     -5.232001e+01 -3.612800e+02
-12 1087     -5.348100e+02 3.461600e+02
-0 1088     -2.899100e+02 3.551900e+02
-1 1088     4.854999e+01 4.375100e+02
-5 1088     1.077600e+02 -3.057800e+02
-7 1088     -4.963800e+02 3.851000e+02
-10 1088     -4.765900e+02 5.348900e+02
-13 1088     -4.060999e+01 3.048999e+01
-14 1088     2.525000e+01 -3.964500e+02
-0 1089     -2.610000e+02 4.514500e+02
-1 1089     9.928998e+01 5.247300e+02
-2 1089     -5.415900e+02 2.015700e+02
-5 1089     1.457900e+02 -2.019400e+02
-7 1089     -4.805500e+02 4.894600e+02
-8 1089     -3.650900e+02 1.471700e+02
-11 1089     -8.377002e+01 -3.099300e+02
-12 1089     -5.865100e+02 4.125000e+02
-14 1089     6.034998e+01 -2.921900e+02
-0 1090     -2.603400e+02 4.378200e+02
-1 1090     9.665997e+01 5.113600e+02
-7 1090     -4.780700e+02 4.756800e+02
-12 1090     -5.835200e+02 3.964400e+02
-14 1090     6.007001e+01 -3.062400e+02
-0 1091     -3.210500e+02 3.504600e+02
-1 1091     1.646997e+01 4.405500e+02
-2 1091     -6.014200e+02 7.427002e+01
-7 1091     -5.280500e+02 3.762500e+02
-10 1091     -5.141100e+02 5.268400e+02
-12 1091     -6.393200e+02 2.779300e+02
-14 1091     -6.359985e+00 -4.010600e+02
-15 1091     -5.087100e+02 5.745400e+02
-0 1092     -4.260000e+02 4.130900e+02
-1 1092     -7.048999e+01 5.266300e+02
-2 1092     -7.154000e+02 1.535600e+02
-5 1092     -2.066998e+01 -2.398500e+02
-8 1092     -5.056300e+02 1.067300e+02
-13 1092     -1.483300e+02 7.628998e+01
-14 1092     -1.035600e+02 -3.330900e+02
-0 1093     -3.669600e+02 3.336200e+02
-1 1093     -3.196997e+01 4.359000e+02
-7 1093     -5.727300e+02 3.527000e+02
-10 1093     -5.674500e+02 5.020000e+02
-13 1093     -1.035500e+02 9.219971e+00
-14 1093     -5.369000e+01 -4.196000e+02
-15 1093     -5.700400e+02 5.451000e+02
-0 1094     -3.787500e+02 3.142200e+02
-1 1094     -4.746997e+01 4.204400e+02
-5 1094     1.335999e+01 -3.488700e+02
-7 1094     -5.820000e+02 3.308700e+02
-10 1094     -5.795400e+02 4.774900e+02
-11 1094     -1.929300e+02 -4.307600e+02
-15 1094     -5.831200e+02 5.163200e+02
-0 1095     -3.797200e+02 2.986400e+02
-1 1095     -5.223999e+01 4.052600e+02
-7 1095     -5.809500e+02 3.137200e+02
-10 1095     -5.779800e+02 4.578300e+02
-13 1095     -1.150700e+02 -2.258002e+01
-15 1095     -5.815200e+02 4.951000e+02
-0 1096     -2.847500e+02 3.534100e+02
-1 1096     5.302002e+01 4.344200e+02
-5 1096     1.125500e+02 -3.074900e+02
-7 1096     -4.910400e+02 3.837300e+02
-8 1096     -3.811100e+02 5.057999e+01
-10 1096     -4.705100e+02 5.334300e+02
-11 1096     -1.069900e+02 -3.961900e+02
-12 1096     -5.971700e+02 2.867200e+02
-0 1097     -2.329900e+02 4.417800e+02
-1 1097     1.248300e+02 5.082900e+02
-2 1097     -5.134900e+02 1.915800e+02
-4 1097     -1.719971e+00 -2.199400e+02
-5 1097     1.722600e+02 -2.124200e+02
-8 1097     -3.417000e+02 1.382900e+02
-11 1097     -5.931000e+01 -3.181500e+02
-12 1097     -5.530700e+02 4.046400e+02
-13 1097     6.270020e+00 1.092300e+02
-14 1097     8.696997e+01 -3.011400e+02
-0 1098     -4.332000e+02 4.502900e+02
-1 1098     -6.913000e+01 5.632400e+02
-5 1098     -2.284998e+01 -2.001200e+02
-8 1098     -5.123800e+02 1.429600e+02
-12 1098     -7.906600e+02 3.863700e+02
-13 1098     -1.526600e+02 1.067600e+02
-14 1098     -1.061900e+02 -2.936900e+02
-0 1099     -2.324000e+02 4.496200e+02
-1 1099     1.272500e+02 5.161700e+02
-7 1099     -4.514500e+02 4.908800e+02
-8 1099     -3.411600e+02 1.463300e+02
-11 1099     -5.871002e+01 -3.115100e+02
-13 1099     6.869995e+00 1.157000e+02
-14 1099     8.783002e+01 -2.935600e+02
-0 1100     -2.287500e+02 4.542400e+02
-1 1100     1.322000e+02 5.195400e+02
-2 1100     -5.090100e+02 2.041600e+02
-4 1100     4.530029e+00 -2.236600e+02
-5 1100     1.777700e+02 -1.999900e+02
-8 1100     -3.386600e+02 1.507000e+02
-11 1100     -5.545001e+01 -3.074400e+02
-12 1100     -5.499200e+02 4.199100e+02
-13 1100     9.979980e+00 1.194400e+02
-14 1100     9.203003e+01 -2.891900e+02
-0 1101     2.829999e+01 -2.527000e+02
-1 1101     1.111600e+02 -2.244100e+02
-2 1101     2.763600e+02 -2.391800e+02
-3 1101     1.969301e+02 -5.376700e+02
-4 1101     -4.657900e+02 -4.292500e+02
-6 1101     9.113000e+01 -2.600800e+02
-7 1101     -1.203998e+01 -1.341300e+02
-8 1101     2.475400e+02 -2.469400e+02
-9 1101     1.342100e+02 -1.013900e+02
-12 1101     9.209003e+01 -2.160100e+02
-13 1101     4.289301e+02 -4.440900e+02
-15 1101     3.746997e+01 -2.012700e+02
-0 1102     -8.066998e+01 -2.277800e+02
-1 1102     2.253998e+01 -1.681300e+02
-4 1102     -4.261300e+02 -3.364900e+02
-6 1102     -6.256000e+01 -2.848199e+02
-7 1102     -1.312700e+02 -1.338900e+02
-12 1102     -5.979999e+01 -2.325100e+02
-15 1102     -1.111000e+02 -1.816300e+02
-0 1103     4.229980e+00 -2.477800e+02
-1 1103     9.120001e+01 -2.127300e+02
-6 1103     6.117999e+01 -2.639600e+02
-7 1103     -3.753003e+01 -1.338400e+02
-9 1103     1.099000e+02 -1.053900e+02
-10 1103     -6.247998e+01 -1.447400e+02
-12 1103     6.029999e+01 -2.184700e+02
-13 1103     4.057400e+02 -4.417700e+02
-15 1103     4.570007e+00 -1.976300e+02
-0 1104     -7.720001e+01 -2.337100e+02
-1 1104     2.445001e+01 -1.748200e+02
-6 1104     -5.760999e+01 -2.920800e+02
-8 1104     1.260800e+02 -2.753900e+02
-9 1104     1.217999e+01 -1.427000e+02
-12 1104     -5.434003e+01 -2.404900e+02
-13 1104     3.187200e+02 -4.404399e+02
-15 1104     -1.051600e+02 -1.897900e+02
-0 1105     2.338000e+01 -2.608000e+02
-1 1105     1.051300e+02 -2.309900e+02
-4 1105     -4.714500e+02 -4.230100e+02
-10 1105     -3.906000e+01 -1.572700e+02
-15 1105     3.214001e+01 -2.128200e+02
-0 1106     -2.195400e+02 4.963000e+02
-1 1106     1.512700e+02 5.592800e+02
-2 1106     -5.015200e+02 2.558700e+02
-5 1106     1.900000e+02 -1.546200e+02
-7 1106     -4.444300e+02 5.415900e+02
-8 1106     -3.327300e+02 1.909200e+02
-12 1106     -5.465900e+02 4.742200e+02
-0 1107     -1.976100e+02 4.003500e+02
-1 1107     1.506400e+02 4.592100e+02
-2 1107     -4.753700e+02 1.398200e+02
-5 1107     2.040699e+02 -2.561500e+02
-7 1107     -4.094000e+02 4.438900e+02
-8 1107     -3.104300e+02 1.002300e+02
-10 1107     -3.714800e+02 5.988900e+02
-12 1107     -5.054100e+02 3.606500e+02
-14 1107     1.191600e+02 -3.463100e+02
-0 1108     -1.852800e+02 4.464300e+02
-1 1108     1.740300e+02 5.013800e+02
-2 1108     -4.657700e+02 1.960000e+02
-7 1108     -4.035100e+02 4.927800e+02
-12 1108     -4.991100e+02 4.182300e+02
-14 1108     1.334100e+02 -2.962400e+02
-0 1109     -5.686100e+02 3.048600e+02
-1 1109     -2.292300e+02 4.570700e+02
-14 1109     -2.600900e+02 -4.501600e+02
-15 1109     -8.489100e+02 4.785700e+02
-0 1110     -3.717700e+02 3.349400e+02
-1 1110     -3.633002e+01 4.384600e+02
-4 1110     -5.022998e+01 -1.328300e+02
-5 1110     2.313000e+01 -3.257800e+02
-11 1110     -1.857300e+02 -4.123600e+02
-13 1110     -1.072800e+02 1.037000e+01
-14 1110     -5.821002e+01 -4.180100e+02
-15 1110     -5.771200e+02 5.461800e+02
-0 1111     -4.220900e+02 2.885300e+02
-1 1111     -9.476001e+01 4.060100e+02
-7 1111     -6.238000e+02 2.976400e+02
-11 1111     -2.331700e+02 -4.529800e+02
-12 1111     -7.503500e+02 1.803100e+02
-0 1112     -4.552300e+02 3.607700e+02
-1 1112     -1.109600e+02 4.832300e+02
-5 1112     -5.448999e+01 -2.954600e+02
-7 1112     -6.679100e+02 3.711300e+02
-8 1112     -5.285200e+02 5.448999e+01
-10 1112     -6.810800e+02 5.286200e+02
-11 1112     -2.583600e+02 -3.879300e+02
-12 1112     -8.007800e+02 2.700400e+02
-0 1113     -3.848900e+02 3.502600e+02
-1 1113     -4.544000e+01 4.564100e+02
-4 1113     -4.033002e+01 -1.275300e+02
-5 1113     1.177002e+01 -3.085200e+02
-7 1113     -5.937800e+02 3.681400e+02
-8 1113     -4.686200e+02 4.451001e+01
-10 1113     -5.912700e+02 5.196900e+02
-15 1113     -5.981800e+02 5.659500e+02
-0 1114     -1.136800e+02 -1.646002e+01
-1 1114     5.600000e+01 4.406000e+01
-10 1114     -2.234300e+02 1.103200e+02
-15 1114     -1.841700e+02 9.922000e+01
-0 1115     2.543400e+02 -6.270001e+01
-1 1115     3.939600e+02 -1.103300e+02
-12 1115     2.817900e+02 6.834998e+01
-15 1115     3.203800e+02 8.629999e+01
-0 1116     1.487200e+02 -2.025800e+02
-1 1116     2.413600e+02 -2.141100e+02
-7 1116     9.954999e+01 -6.078003e+01
-10 1116     9.984003e+01 -7.727002e+01
-15 1116     1.934800e+02 -1.175200e+02
-0 1117     2.673800e+02 -1.846600e+02
-1 1117     3.679399e+02 -2.360100e+02
-10 1117     2.342500e+02 -4.414001e+01
-0 1118     1.969900e+02 -2.866400e+02
-1 1118     2.674200e+02 -3.133200e+02
-12 1118     2.929700e+02 -1.972600e+02
-15 1118     2.716801e+02 -2.253400e+02
-0 1119     -1.186000e+02 5.679993e+00
-1 1119     5.995001e+01 6.614001e+01
-6 1119     -2.108200e+02 -3.300000e+01
-15 1119     -1.935700e+02 1.283400e+02
-0 1120     -1.074700e+02 8.532999e+01
-1 1120     1.020800e+02 1.380000e+02
-6 1120     -2.604000e+02 5.091998e+01
-7 1120     -2.252000e+02 1.687100e+02
-10 1120     -2.279100e+02 2.295200e+02
-12 1120     -2.159200e+02 1.055400e+02
-15 1120     -1.872500e+02 2.381000e+02
-0 1121     3.510800e+02 -5.694000e+01
-1 1121     5.034800e+02 -1.374800e+02
-7 1121     2.589000e+02 1.085000e+02
-10 1121     3.182700e+02 1.116500e+02
-12 1121     3.674600e+02 8.467999e+01
-15 1121     4.551801e+02 1.069800e+02
-0 1122     2.168199e+02 -2.115200e+02
-1 1122     3.059800e+02 -2.452200e+02
-6 1122     2.787600e+02 -1.419800e+02
-7 1122     1.671500e+02 -5.763000e+01
-10 1122     1.787000e+02 -8.067999e+01
-12 1122     2.963000e+02 -1.047400e+02
-15 1122     2.871300e+02 -1.209400e+02
-0 1123     4.850000e+01 -1.284300e+02
-1 1123     1.672800e+02 -1.102300e+02
-15 1123     4.773999e+01 -3.028998e+01
-0 1124     -2.634003e+01 -1.860900e+02
-1 1124     7.733002e+01 -1.426700e+02
-3 1124     1.230900e+02 -4.719200e+02
-4 1124     -4.025000e+02 -3.901000e+02
-6 1124     1.353998e+01 -1.990900e+02
-7 1124     -7.683002e+01 -7.600000e+01
-8 1124     1.861500e+02 -1.908700e+02
-10 1124     -1.043800e+02 -7.695001e+01
-12 1124     1.103003e+01 -1.489800e+02
-0 1125     -7.459003e+01 -1.558200e+02
-1 1125     4.353998e+01 -9.965002e+01
-2 1125     1.272700e+02 -1.618500e+02
-6 1125     -6.097998e+01 -1.870300e+02
-7 1125     -1.327500e+02 -5.606000e+01
-10 1125     -1.642800e+02 -4.753003e+01
-12 1125     -6.265997e+01 -1.333400e+02
-15 1125     -1.145200e+02 -8.403003e+01
-0 1126     -1.816800e+02 4.013000e+01
-1 1126     1.884998e+01 1.150300e+02
-6 1126     -3.333000e+02 -2.778003e+01
-7 1126     -2.936300e+02 1.103100e+02
-10 1126     -3.096000e+02 1.692100e+02
-15 1126     -2.817700e+02 1.663400e+02
-0 1127     -1.982100e+02 -4.210900e+02
-1 1127     -1.374800e+02 -3.145400e+02
-4 1127     -5.583200e+02 -2.286200e+02
-7 1127     -2.204800e+02 -3.562300e+02
-15 1127     -2.418700e+02 -4.595100e+02
-0 1128     2.043400e+02 1.025000e+01
-1 1128     3.638600e+02 -2.151001e+01
-2 1128     3.467500e+02 8.031000e+01
-3 1128     2.422900e+02 -2.286700e+02
-6 1128     1.834300e+02 9.428003e+01
-7 1128     1.157900e+02 1.575200e+02
-8 1128     3.189000e+02 1.845999e+01
-10 1128     1.422900e+02 1.739500e+02
-12 1128     2.095200e+02 1.413300e+02
-13 1128     5.493700e+02 -1.958800e+02
-15 1128     2.420200e+02 1.792100e+02
-0 1129     7.245001e+01 2.287000e+02
-1 1129     3.657300e+02 2.195500e+02
-5 1129     5.200000e+02 -4.416600e+02
-6 1129     -2.732700e+02 2.096200e+02
-7 1129     -1.066700e+02 3.100200e+02
-10 1129     -3.222998e+01 4.182300e+02
-11 1129     2.204000e+02 -5.117800e+02
-0 1130     2.294399e+02 -2.244000e+01
-1 1130     3.799700e+02 -6.183002e+01
-2 1130     3.796400e+02 5.100000e+01
-3 1130     2.742800e+02 -2.557900e+02
-7 1130     1.449000e+02 1.292500e+02
-10 1130     1.746300e+02 1.386400e+02
-13 1130     5.743600e+02 -2.224000e+02
-15 1130     2.808500e+02 1.379300e+02
-0 1131     6.270020e+00 1.627300e+02
-1 1131     2.267000e+02 1.840300e+02
-5 1131     5.970800e+02 -4.913300e+02
-6 1131     -1.263000e+02 1.877700e+02
-7 1131     -1.165300e+02 2.689700e+02
-12 1131     -8.745001e+01 2.387900e+02
-13 1131     3.388000e+02 -8.896002e+01
-14 1131     5.008900e+02 -5.727500e+02
-15 1131     -4.558002e+01 3.600900e+02
-0 1132     5.584800e+02 6.017999e+01
-1 1132     8.048900e+02 -9.384003e+01
-6 1132     3.868400e+02 1.851900e+02
-13 1132     7.711700e+02 -1.509900e+02
-15 1132     7.419301e+02 2.962400e+02
-0 1133     -1.641700e+02 -5.812000e+01
-1 1133     -3.179993e+00 1.819000e+01
-6 1133     -2.356000e+02 -1.214500e+02
-7 1133     -2.491000e+02 2.077002e+01
-10 1133     -2.777700e+02 5.615997e+01
-12 1133     -2.207400e+02 -5.967999e+01
-13 1133     2.178700e+02 -2.909800e+02
-15 1133     -2.467100e+02 3.545001e+01
-0 1134     1.582500e+02 -1.117800e+02
-1 1134     2.807400e+02 -1.283200e+02
-2 1134     3.487300e+02 -5.351001e+01
-6 1134     1.768900e+02 -5.477002e+01
-7 1134     9.128003e+01 2.933002e+01
-8 1134     3.152000e+02 -9.306000e+01
-10 1134     1.013900e+02 2.809003e+01
-15 1134     1.948199e+02 6.739990e+00
-0 1135     1.282400e+02 -2.364500e+02
-1 1135     2.073500e+02 -2.399100e+02
-6 1135     2.068800e+02 -1.951100e+02
-7 1135     8.825000e+01 -9.596997e+01
-13 1135     5.251899e+02 -4.162100e+02
-15 1135     1.689200e+02 -1.660700e+02
-0 1136     2.485300e+02 8.989999e+01
-1 1136     4.390100e+02 4.347998e+01
-6 1136     1.840600e+02 1.874300e+02
-12 1136     2.218900e+02 2.315600e+02
-13 1136     5.672000e+02 -1.275200e+02
-15 1136     2.939700e+02 2.944700e+02
-0 1137     1.822600e+02 -3.350400e+02
-1 1137     2.431300e+02 -3.568000e+02
-4 1137     -5.721600e+02 -5.497200e+02
-6 1137     2.589800e+02 -3.121000e+02
-7 1137     1.464399e+02 -1.916100e+02
-9 1137     2.615601e+02 -1.622200e+02
-10 1137     1.518200e+02 -2.249900e+02
-12 1137     2.769100e+02 -2.795300e+02
-13 1137     5.627900e+02 -5.142000e+02
-15 1137     2.595400e+02 -2.929700e+02
-0 1138     1.386300e+02 5.140002e+01
-1 1138     3.103600e+02 3.914001e+01
-7 1138     4.507001e+01 1.878600e+02
-10 1138     6.166998e+01 2.156800e+02
-12 1138     1.240400e+02 1.721600e+02
-15 1138     1.464301e+02 2.264500e+02
-0 1139     1.845601e+02 -1.734900e+02
-1 1139     2.867500e+02 -1.972500e+02
-2 1139     4.006000e+02 -1.051100e+02
-10 1139     1.378200e+02 -3.944000e+01
-12 1139     2.449600e+02 -7.009003e+01
-13 1139     5.579800e+02 -3.575200e+02
-15 1139     2.384301e+02 -7.340997e+01
-0 1140     6.478998e+01 1.655200e+02
-1 1140     2.846801e+02 1.703100e+02
-7 1140     -5.771997e+01 2.802500e+02
-10 1140     -3.506000e+01 3.407700e+02
-15 1140     3.396002e+01 3.725500e+02
-0 1141     7.290997e+01 2.326800e+02
-1 1141     3.677700e+02 2.232400e+02
-7 1141     -1.070200e+02 3.136400e+02
-10 1141     -3.210999e+01 4.230200e+02
-0 1142     -7.637000e+01 1.221700e+02
-1 1142     1.471200e+02 1.644800e+02
-3 1142     -1.719800e+02 -2.845000e+02
-5 1142     4.739900e+02 -5.449399e+02
-6 1142     -2.531800e+02 9.756000e+01
-8 1142     -1.952002e+01 -5.579987e+00
-9 1142     -1.828400e+02 1.077900e+02
-10 1142     -1.950500e+02 2.762000e+02
-12 1142     -1.988700e+02 1.476000e+02
-0 1143     5.919200e+02 1.301000e+02
-1 1143     8.617500e+02 -3.076001e+01
-8 1143     4.668101e+02 5.867999e+01
-10 1143     5.832500e+02 3.559000e+02
-15 1143     7.805900e+02 3.992100e+02
-0 1144     -9.047998e+01 -2.257300e+02
-1 1144     1.508002e+01 -1.630100e+02
-4 1144     -4.234800e+02 -3.277700e+02
-7 1144     -1.427900e+02 -1.341700e+02
-10 1144     -1.737900e+02 -1.297000e+02
-12 1144     -7.490002e+01 -2.371400e+02
-15 1144     -1.244500e+02 -1.810100e+02
-0 1145     -5.559003e+01 -1.577700e+02
-1 1145     6.067999e+01 -1.072600e+02
-4 1145     -3.760300e+02 -3.651600e+02
-6 1145     -3.959998e+01 -1.817100e+02
-7 1145     -1.127200e+02 -5.464001e+01
-8 1145     1.436900e+02 -1.783900e+02
-10 1145     -1.409500e+02 -4.753998e+01
-12 1145     -3.946997e+01 -1.288400e+02
-13 1145     3.426000e+02 -3.640900e+02
-15 1145     -8.875000e+01 -8.407001e+01
-0 1146     1.999301e+02 4.101600e+02
-1 1146     5.670500e+02 3.650500e+02
-14 1146     5.122500e+02 -3.227600e+02
-0 1147     -2.626900e+02 3.957100e+02
-1 1147     8.447998e+01 4.704800e+02
-2 1147     -5.419200e+02 1.332500e+02
-7 1147     -4.744300e+02 4.307100e+02
-8 1147     -3.646200e+02 9.347000e+01
-11 1147     -8.645001e+01 -3.585200e+02
-14 1147     5.544000e+01 -3.511100e+02
-0 1148     -2.654999e+01 5.105600e+02
-1 1148     3.518400e+02 5.265400e+02
-2 1148     -3.164200e+02 2.718400e+02
-6 1148     -5.107600e+02 5.311100e+02
-7 1148     -2.541200e+02 5.761800e+02
-8 1148     -1.809800e+02 2.081200e+02
-11 1148     1.233200e+02 -2.551500e+02
-12 1148     -3.347100e+02 5.184600e+02
-0 1149     -6.745001e+01 4.722900e+02
-1 1149     2.997400e+02 4.982900e+02
-2 1149     -3.526900e+02 2.274800e+02
-5 1149     3.372200e+02 -1.794700e+02
-6 1149     -5.506400e+02 4.713400e+02
-7 1149     -2.898300e+02 5.323900e+02
-12 1149     -3.731300e+02 4.663700e+02
-14 1149     2.479301e+02 -2.665000e+02
-0 1150     5.528003e+01 5.009998e+01
-1 1150     2.282000e+02 6.212000e+01
-6 1150     9.469971e+00 9.201001e+01
-8 1150     1.841000e+02 2.445001e+01
-12 1150     2.746997e+01 1.459500e+02
-0 1151     -1.230300e+02 4.888100e+02
-1 1151     2.472600e+02 5.284000e+02
-2 1151     -4.065900e+02 2.472200e+02
-3 1151     -5.345500e+02 -8.323999e+01
-0 1152     1.595699e+02 3.846997e+01
-1 1152     3.271000e+02 2.019000e+01
-15 1152     1.767000e+02 2.118300e+02
-0 1153     8.763000e+01 2.628700e+02
-1 1153     3.941100e+02 2.488800e+02
-5 1153     5.255699e+02 -4.054900e+02
-6 1153     -2.785400e+02 2.512200e+02
-9 1153     -2.432600e+02 1.031100e+02
-11 1153     2.343500e+02 -4.780200e+02
-12 1153     -1.379600e+02 2.648200e+02
-14 1153     4.387200e+02 -4.860800e+02
-0 1154     -5.470001e+01 -3.909003e+01
-1 1154     1.022700e+02 5.900024e+00
-3 1154     -1.679993e+00 -3.626000e+02
-7 1154     -1.378500e+02 6.140002e+01
-10 1154     -1.526200e+02 9.000000e+01
-13 1154     3.198400e+02 -2.634300e+02
-15 1154     -1.022300e+02 7.657001e+01
-0 1155     4.308002e+01 1.273400e+02
-1 1155     2.452800e+02 1.402200e+02
-15 1155     7.710022e+00 3.170300e+02
-0 1156     -4.457900e+02 6.670001e+01
-1 1156     -1.880500e+02 2.051700e+02
-13 1156     -1.327300e+02 -2.239200e+02
-15 1156     -6.386400e+02 1.655700e+02
-0 1157     -4.078300e+02 -2.659973e+00
-1 1157     -1.780500e+02 1.313700e+02
-15 1157     -5.773500e+02 7.614001e+01
-0 1158     2.538400e+02 -2.529100e+02
-1 1158     3.331200e+02 -2.989500e+02
-7 1158     2.073199e+02 -9.328003e+01
-10 1158     2.260500e+02 -1.235700e+02
-15 1158     3.444800e+02 -1.723600e+02
-0 1159     -3.046997e+01 -2.987000e+02
-1 1159     5.021997e+01 -2.510700e+02
-4 1159     -4.917200e+02 -3.707100e+02
-6 1159     1.756000e+01 -3.488700e+02
-7 1159     -6.916998e+01 -1.948800e+02
-10 1159     -9.625000e+01 -2.064800e+02
-12 1159     2.017999e+01 -3.031300e+02
-13 1159     3.668101e+02 -4.967200e+02
-0 1160     5.907600e+02 1.913000e+02
-1 1160     8.805200e+02 3.497998e+01
-6 1160     3.938200e+02 3.450600e+02
-7 1160     4.168500e+02 3.624900e+02
-0 1161     -4.320000e+02 1.152002e+01
-1 1161     -1.949400e+02 1.508500e+02
-15 1161     -6.122500e+02 9.173999e+01
-0 1162     -4.541300e+02 -8.520020e+00
-1 1162     -2.216900e+02 1.381600e+02
-10 1162     -6.264400e+02 8.384003e+01
-12 1162     -6.717100e+02 -1.567800e+02
-0 1163     -3.084800e+02 -4.711000e+02
-1 1163     -2.545100e+02 -3.248400e+02
-7 1163     -3.214100e+02 -4.283100e+02
-0 1164     5.257000e+02 3.572100e+02
-1 1164     8.796400e+02 2.278400e+02
-3 1164     1.794800e+02 -6.954999e+01
-7 1164     3.180100e+02 5.041200e+02
-9 1164     1.301800e+02 3.081400e+02
-11 1164     6.378900e+02 -3.690500e+02
-13 1164     6.851600e+02 9.717999e+01
-0 1165     5.564100e+02 2.491900e+02
-1 1165     8.627400e+02 1.072400e+02
-7 1165     3.759800e+02 4.109100e+02
-11 1165     6.825500e+02 -4.744700e+02
-12 1165     4.241600e+02 4.052100e+02
-0 1166     6.438199e+02 -1.434003e+01
-1 1166     8.708101e+02 -1.997400e+02
-2 1166     5.936200e+02 -1.513000e+01
-3 1166     4.613000e+02 -3.210700e+02
-6 1166     5.123900e+02 1.367900e+02
-7 1166     4.960900e+02 1.743400e+02
-8 1166     5.455200e+02 -4.341000e+01
-10 1166     6.553000e+02 1.930200e+02
-12 1166     5.926700e+02 1.467000e+02
-13 1166     8.696700e+02 -2.060900e+02
-0 1167     3.851200e+02 -1.748900e+02
-1 1167     5.013600e+02 -2.674600e+02
-10 1167     3.687200e+02 -2.044000e+01
-15 1167     5.176600e+02 -4.934003e+01
-0 1168     6.233002e+01 2.647500e+02
-1 1168     3.692700e+02 2.575700e+02
-6 1168     -3.102700e+02 2.460300e+02
-7 1168     -1.244600e+02 3.423300e+02
-0 1169     -4.758600e+02 1.870300e+02
-1 1169     -1.736700e+02 3.239400e+02
-7 1169     -6.614400e+02 1.851500e+02
-10 1169     -6.800400e+02 3.144800e+02
-13 1169     -1.890400e+02 -1.247000e+02
-0 1170     3.595000e+02 -3.301500e+02
-1 1170     4.278199e+02 -4.149800e+02
-0 1171     -1.202300e+02 -5.327900e+02
-1 1171     -1.072200e+02 -4.426801e+02
-0 1172     2.058199e+02 -7.012000e+01
-1 1172     3.404900e+02 -1.020600e+02
-10 1172     1.519900e+02 8.151001e+01
-15 1172     2.544100e+02 6.975000e+01
-0 1173     6.700012e+00 1.394700e+02
-1 1173     2.166000e+02 1.615900e+02
-7 1173     -1.090700e+02 2.485400e+02
-10 1173     -1.006000e+02 3.045600e+02
-15 1173     -4.282001e+01 3.287000e+02
-0 1174     8.346002e+01 -1.334400e+02
-1 1174     1.997800e+02 -1.259300e+02
-7 1174     2.296997e+01 -4.270020e+00
-10 1174     1.722998e+01 -4.580017e+00
-15 1174     9.553998e+01 -3.257001e+01
-0 1175     -5.432100e+02 3.561600e+02
-1 1175     -1.940800e+02 4.993600e+02
-5 1175     -1.446400e+02 -2.977500e+02
-0 1176     -4.113900e+02 3.130100e+02
-1 1176     -7.929999e+01 4.283500e+02
-7 1176     -6.158400e+02 3.267500e+02
-10 1176     -6.195100e+02 4.735700e+02
-12 1176     -7.407300e+02 2.153500e+02
-15 1176     -6.283400e+02 5.105100e+02
-0 1177     9.394000e+01 -2.201000e+02
-1 1177     1.800601e+02 -2.132600e+02
-0 1178     -1.398700e+02 1.633200e+02
-1 1178     1.322100e+02 2.144700e+02
-5 1178     3.029399e+02 -5.168101e+02
-13 1178     1.193400e+02 -1.240600e+02
-0 1179     2.544100e+02 1.025000e+01
-1 1179     4.171000e+02 -3.752002e+01
-6 1179     2.272000e+02 1.053600e+02
-10 1179     2.004000e+02 1.793200e+02
-12 1179     2.597300e+02 1.493100e+02
-0 1180     -2.299988e+00 1.266500e+02
-1 1180     2.034600e+02 1.516400e+02
-5 1180     6.019399e+02 -5.283400e+02
-6 1180     -1.098800e+02 1.509100e+02
-7 1180     -1.156600e+02 2.347000e+02
-10 1180     -1.098400e+02 2.889200e+02
-12 1180     -7.997998e+01 2.049500e+02
-13 1180     3.422300e+02 -1.173300e+02
-15 1180     -5.367999e+01 3.101300e+02
-0 1181     1.808199e+02 -3.279900e+02
-1 1181     2.431500e+02 -3.493400e+02
-4 1181     -5.654000e+02 -5.498000e+02
-12 1181     2.750601e+02 -2.698900e+02
-13 1181     5.622400e+02 -5.069500e+02
-15 1181     2.564301e+02 -2.835600e+02
-0 1182     5.420100e+02 2.018800e+02
-1 1182     8.323500e+02 6.070001e+01
-2 1182     4.213500e+02 1.537000e+02
-3 1182     2.848000e+02 -1.644700e+02
-6 1182     3.303600e+02 3.385500e+02
-7 1182     3.662200e+02 3.637400e+02
-8 1182     4.061100e+02 9.937000e+01
-9 1182     2.215900e+02 2.257800e+02
-10 1182     5.189200e+02 4.348800e+02
-13 1182     7.384600e+02 -2.809003e+01
-15 1182     7.031200e+02 4.917200e+02
-0 1183     -2.510600e+02 3.881000e+02
-1 1183     9.396997e+01 4.603200e+02
-2 1183     -5.296200e+02 1.230500e+02
-5 1183     1.494400e+02 -2.699800e+02
-7 1183     -4.619100e+02 4.240500e+02
-8 1183     -3.546800e+02 8.594000e+01
-10 1183     -4.344400e+02 5.789300e+02
-11 1183     -7.609003e+01 -3.654100e+02
-12 1183     -5.647800e+02 3.356300e+02
-13 1183     -9.020020e+00 6.144000e+01
-14 1183     6.601001e+01 -3.596000e+02
-0 1184     1.791998e+01 -1.128500e+02
-1 1184     1.437900e+02 -8.609998e+01
-6 1184     2.734998e+01 -1.034400e+02
-10 1184     -6.090002e+01 1.245001e+01
-13 1184     4.027900e+02 -3.182700e+02
-0 1185     2.679000e+02 -2.852800e+02
-1 1185     3.433199e+02 -3.372000e+02
-6 1185     3.310800e+02 -2.223101e+02
-0 1186     2.947000e+02 9.523001e+01
-1 1186     4.924500e+02 3.237000e+01
-7 1186     1.801200e+02 2.462200e+02
-15 1186     3.585400e+02 3.079800e+02
-0 1187     -9.478998e+01 -1.362600e+02
-1 1187     3.195001e+01 -7.550000e+01
-3 1187     1.151001e+01 -4.574399e+02
-4 1187     -3.539900e+02 -3.353800e+02
-6 1187     -9.973001e+01 -1.721400e+02
-7 1187     -1.579000e+02 -4.059003e+01
-8 1187     9.569000e+01 -1.707500e+02
-10 1187     -1.887000e+02 -2.676001e+01
-12 1187     -9.767999e+01 -1.172300e+02
-13 1187     3.022000e+02 -3.490000e+02
-15 1187     -1.436700e+02 -6.002002e+01
-0 1188     9.979980e+00 1.234800e+02
-1 1188     2.132700e+02 1.458000e+02
-5 1188     6.216700e+02 -5.326000e+02
-7 1188     -1.019000e+02 2.337400e+02
-10 1188     -9.417999e+01 2.855600e+02
-13 1188     3.564800e+02 -1.187600e+02
-15 1188     -3.617999e+01 3.071900e+02
-0 1189     6.434998e+01 -2.274600e+02
-1 1189     1.485400e+02 -2.103900e+02
-2 1189     3.226600e+02 -1.781000e+02
-3 1189     2.394100e+02 -4.750900e+02
-4 1189     -4.516500e+02 -4.652300e+02
-6 1189     1.360200e+02 -2.079301e+02
-7 1189     2.347998e+01 -9.872998e+01
-8 1189     2.853500e+02 -1.996300e+02
-9 1189     1.702100e+02 -4.858002e+01
-10 1189     4.969971e+00 -1.149000e+02
-12 1189     1.360300e+02 -1.643000e+02
-13 1189     4.671300e+02 -4.138100e+02
-15 1189     8.146997e+01 -1.622000e+02
-0 1190     1.034600e+02 -2.259998e+01
-1 1190     2.520900e+02 -2.353998e+01
-3 1190     1.748700e+02 -2.744800e+02
-4 1190     -3.018400e+02 -4.963300e+02
-9 1190     1.163900e+02 1.228800e+02
-10 1190     2.884998e+01 1.250700e+02
-15 1190     1.075900e+02 1.205600e+02
-0 1191     1.689800e+02 -3.128400e+02
-1 1191     2.337900e+02 -3.300200e+02
-4 1191     -5.487300e+02 -5.422400e+02
-0 1192     2.229999e+01 -4.344000e+01
-1 1192     1.692300e+02 -1.983002e+01
-3 1192     1.000200e+02 -3.226500e+02
-4 1192     -3.058800e+02 -4.294900e+02
-7 1192     -5.464001e+01 7.407001e+01
-9 1192     5.094000e+01 8.017001e+01
-10 1192     -6.259003e+01 9.297998e+01
-13 1192     3.983600e+02 -2.570800e+02
-15 1192     1.049988e+00 8.110999e+01
-0 1193     -1.068800e+02 -5.352200e+02
-1 1193     -9.588000e+01 -4.491500e+02
-4 1193     -6.803800e+02 -3.006500e+02
-6 1193     3.557001e+01 -6.620000e+02
-7 1193     -9.928003e+01 -4.474301e+02
-9 1193     1.218100e+02 -4.358700e+02
-0 1194     1.591600e+02 -1.443000e+02
-1 1194     2.699301e+02 -1.602700e+02
-2 1194     3.681300e+02 -7.994000e+01
-3 1194     2.734100e+02 -3.799700e+02
-4 1194     -4.038500e+02 -5.414200e+02
-7 1194     9.922998e+01 -1.510010e+00
-9 1194     2.015699e+02 3.325000e+01
-10 1194     1.056400e+02 -9.200012e+00
-12 1194     2.099301e+02 -4.490002e+01
-13 1194     5.332100e+02 -3.336000e+02
-15 1194     1.996700e+02 -3.719000e+01
-0 1195     -1.322200e+02 -5.330900e+02
-1 1195     -1.181400e+02 -4.389800e+02
-4 1195     -6.701800e+02 -2.790400e+02
-0 1196     -2.297100e+02 4.687300e+02
-1 1196     1.345200e+02 5.344700e+02
-2 1196     -5.095400e+02 2.235400e+02
-4 1196     1.396002e+01 -2.253200e+02
-7 1196     -4.507000e+02 5.116400e+02
-0 1197     -3.870001e+01 4.969300e+02
-1 1197     3.358900e+02 5.157100e+02
-5 1197     3.666600e+02 -1.534900e+02
-6 1197     -5.222300e+02 5.093500e+02
-7 1197     -2.643400e+02 5.608900e+02
-11 1197     1.123900e+02 -2.672700e+02
-12 1197     -3.456400e+02 4.992500e+02
-14 1197     2.763900e+02 -2.403400e+02
-0 1198     -1.564000e+02 4.736200e+02
-1 1198     2.094301e+02 5.213700e+02
-2 1198     -4.383600e+02 2.286500e+02
-7 1198     -3.777600e+02 5.244900e+02
-8 1198     -2.802700e+02 1.705400e+02
-12 1198     -4.712800e+02 4.550900e+02
-0 1199     -4.490002e+01 4.812200e+02
-1 1199     3.257200e+02 5.014500e+02
-4 1199     6.809998e+00 -3.311500e+02
-5 1199     3.594301e+02 -1.703700e+02
-6 1199     -5.267700e+02 4.865200e+02
-7 1199     -2.684600e+02 5.439400e+02
-8 1199     -1.934300e+02 1.793200e+02
-9 1199     -4.335500e+02 2.697700e+02
-11 1199     1.078600e+02 -2.815700e+02
-12 1199     -3.501900e+02 4.792200e+02
-13 1199     1.549500e+02 1.515100e+02
-14 1199     2.701500e+02 -2.563000e+02
-0 1200     -4.313300e+02 4.415300e+02
-1 1200     -6.903998e+01 5.552900e+02
-11 1200     -2.323200e+02 -3.173600e+02
-12 1200     -7.867100e+02 3.763400e+02
-0 1201     7.285999e+01 -1.606000e+02
-1 1201     1.805000e+02 -1.488400e+02
-10 1201     7.770020e+00 -3.677002e+01
-0 1202     -1.347800e+02 1.562600e+02
-1 1202     1.344000e+02 2.063400e+02
-5 1202     3.085200e+02 -5.244500e+02
-0 1203     -2.090800e+02 2.086200e+02
-1 1203     8.232001e+01 2.761900e+02
-5 1203     2.073500e+02 -4.666200e+02
-7 1203     -3.860300e+02 2.488100e+02
-10 1203     -3.616300e+02 3.663500e+02
-15 1203     -3.317100e+02 3.918700e+02
-0 1204     -5.419983e+00 5.036400e+02
-1 1204     3.721700e+02 5.143800e+02
-3 1204     -4.270200e+02 -6.746997e+01
-5 1204     3.996600e+02 -1.460800e+02
-6 1204     -4.856800e+02 5.247100e+02
-7 1204     -2.326900e+02 5.712800e+02
-9 1204     -4.042500e+02 2.937100e+02
-12 1204     -3.105400e+02 5.117600e+02
-14 1204     3.088500e+02 -2.323900e+02
-0 1205     5.796002e+01 5.110100e+02
-1 1205     4.405800e+02 5.061500e+02
-2 1205     -2.380700e+02 2.734100e+02
-5 1205     4.623101e+02 -1.369000e+02
-7 1205     -1.715400e+02 5.852900e+02
-11 1205     1.985100e+02 -2.523600e+02
-12 1205     -2.436600e+02 5.297800e+02
-14 1205     3.697200e+02 -2.223100e+02
-0 1206     -1.430500e+02 9.806000e+01
-1 1206     7.781000e+01 1.591500e+02
-5 1206     3.959301e+02 -5.739301e+02
-7 1206     -2.686100e+02 1.715800e+02
-10 1206     -2.705800e+02 2.412300e+02
-15 1206     -2.356600e+02 2.503900e+02
-0 1207     1.739001e+01 4.898999e+01
-1 1207     1.930000e+02 7.170001e+01
-7 1207     -7.706000e+01 1.644400e+02
-10 1207     -7.838000e+01 1.996200e+02
-15 1207     -1.764001e+01 2.061700e+02
-0 1208     5.453199e+02 1.546500e+02
-1 1208     8.208101e+02 9.369995e+00
-2 1208     4.374000e+02 1.071800e+02
-6 1208     3.457300e+02 2.879400e+02
-8 1208     4.185900e+02 6.159000e+01
-10 1208     5.265400e+02 3.795700e+02
-15 1208     7.126700e+02 4.262600e+02
-0 1209     1.198600e+02 3.070001e+01
-1 1209     2.845000e+02 2.444000e+01
-10 1209     4.245001e+01 1.890800e+02
-15 1209     1.229400e+02 1.955000e+02
-0 1210     1.198600e+02 3.070001e+01
-1 1210     2.845000e+02 2.444000e+01
-10 1210     4.245001e+01 1.890800e+02
-15 1210     1.229400e+02 1.955000e+02
-0 1211     4.785999e+01 -1.483600e+02
-1 1211     1.592500e+02 -1.301400e+02
-2 1211     2.622100e+02 -1.104100e+02
-7 1211     -9.630005e+00 -2.606000e+01
-15 1211     4.903003e+01 -5.815002e+01
-0 1212     -1.950200e+02 -5.251700e+02
-1 1212     -1.724400e+02 -4.105600e+02
-4 1212     -6.482600e+02 -2.308500e+02
-6 1212     -7.091998e+01 -6.946600e+02
-7 1212     -1.909600e+02 -4.567300e+02
-9 1212     3.446002e+01 -4.642700e+02
-0 1213     -1.994100e+02 -5.257900e+02
-1 1213     -1.767400e+02 -4.097100e+02
-4 1213     -6.466700e+02 -2.274600e+02
-6 1213     -7.602002e+01 -6.969500e+02
-7 1213     -1.952500e+02 -4.577600e+02
-9 1213     3.058002e+01 -4.658800e+02
-0 1214     -1.228800e+02 -5.434600e+02
-1 1214     -1.136300e+02 -4.512500e+02
-4 1214     -6.826300e+02 -2.875300e+02
-6 1214     2.454999e+01 -6.790601e+02
-7 1214     -1.134500e+02 -4.584500e+02
-9 1214     1.134300e+02 -4.469600e+02
-0 1215     1.019200e+02 6.264001e+01
-1 1215     2.778400e+02 6.100000e+01
-2 1215     2.311200e+02 1.107400e+02
-4 1215     -2.405700e+02 -4.940500e+02
-6 1215     5.716998e+01 1.208700e+02
-8 1215     2.205500e+02 4.406000e+01
-12 1215     7.837000e+01 1.744600e+02
-15 1215     9.484003e+01 2.367900e+02
-0 1216     5.761700e+02 1.422100e+02
-1 1216     8.490400e+02 -1.277002e+01
-2 1216     4.758199e+02 1.100300e+02
-3 1216     3.397400e+02 -2.037900e+02
-6 1216     3.865600e+02 2.858400e+02
-8 1216     4.491100e+02 6.326001e+01
-9 1216     2.678400e+02 1.906800e+02
-10 1216     5.634900e+02 3.684400e+02
-15 1216     7.570400e+02 4.138700e+02
-0 1217     7.347998e+01 9.970999e+01
-1 1217     2.642200e+02 1.052400e+02
-5 1217     7.077600e+02 -5.558600e+02
-6 1217     4.609985e+00 1.507700e+02
-7 1217     -3.059998e+01 2.231300e+02
-10 1217     -1.891998e+01 2.645500e+02
-15 1217     5.159003e+01 2.831500e+02
-0 1218     6.933002e+01 -4.026000e+02
-1 1218     1.091700e+02 -3.831000e+02
-7 1218     5.113000e+01 -2.782100e+02
-9 1218     2.104500e+02 -2.446800e+02
-0 1219     1.765002e+01 -5.825000e+01
-1 1219     1.602400e+02 -3.303003e+01
-3 1219     9.762000e+01 -3.404900e+02
-7 1219     -5.798999e+01 5.834003e+01
-10 1219     -6.683002e+01 7.604999e+01
-13 1219     3.944000e+02 -2.709000e+02
-15 1219     -2.989990e+00 6.091998e+01
-0 1220     1.031600e+02 -9.247998e+01
-1 1220     2.314200e+02 -9.194000e+01
-4 1220     -3.544300e+02 -4.939301e+02
-6 1220     1.150500e+02 -4.996997e+01
-7 1220     3.458002e+01 3.969000e+01
-8 1220     2.665400e+02 -8.426001e+01
-9 1220     1.367300e+02 6.041998e+01
-15 1220     1.168900e+02 2.576001e+01
-0 1221     -5.040997e+01 7.358002e+01
-1 1221     1.414399e+02 1.133200e+02
-4 1221     -2.184200e+02 -3.702500e+02
-5 1221     5.545000e+02 -5.912400e+02
-7 1221     -1.550000e+02 1.735600e+02
-10 1221     -1.598800e+02 2.215900e+02
-13 1221     3.073500e+02 -1.668400e+02
-15 1221     -1.116300e+02 2.301000e+02
-0 1222     -2.123300e+02 -4.298500e+02
-1 1222     -1.532500e+02 -3.184400e+02
-6 1222     -1.578600e+02 -6.016300e+02
-7 1222     -2.320100e+02 -3.679300e+02
-9 1222     -5.117999e+01 -4.062000e+02
-10 1222     -2.918500e+02 -3.788000e+02
-15 1222     -2.599600e+02 -4.734900e+02
-0 1223     -1.567700e+02 -8.123999e+01
-1 1223     -5.390015e+00 -5.330017e+00
-2 1223     -2.214001e+01 -1.312100e+02
-6 1223     -2.086200e+02 -1.427600e+02
-10 1223     -2.674600e+02 3.010999e+01
-0 1224     4.352002e+01 -1.658300e+02
-1 1224     1.515400e+02 -1.455100e+02
-7 1224     -1.145001e+01 -4.423999e+01
-13 1224     4.323101e+02 -3.629000e+02
-15 1224     4.558002e+01 -8.175000e+01
-0 1225     1.409998e+01 -1.531000e+01
-1 1225     1.698000e+02 9.929993e+00
-9 1225     3.206000e+01 1.010500e+02
-15 1225     -1.352002e+01 1.188900e+02
-0 1226     2.034500e+02 -1.532800e+02
-1 1226     3.116300e+02 -1.833000e+02
-13 1226     5.731899e+02 -3.379400e+02
-15 1226     2.613101e+02 -4.366998e+01
-0 1227     2.896002e+01 -2.093800e+02
-1 1227     1.211000e+02 -1.819800e+02
-7 1227     -1.546997e+01 -8.809998e+01
-10 1227     -3.712000e+01 -9.827002e+01
-15 1227     3.177002e+01 -1.427100e+02
-0 1228     1.721500e+02 5.396997e+01
-1 1228     3.451100e+02 3.169000e+01
-2 1228     3.004900e+02 1.156000e+02
-3 1228     1.970200e+02 -1.963400e+02
-6 1228     1.343100e+02 1.324300e+02
-7 1228     7.696002e+01 1.953500e+02
-8 1228     2.808200e+02 4.834000e+01
-10 1228     1.005400e+02 2.215700e+02
-12 1228     1.600300e+02 1.819000e+02
-13 1228     5.161400e+02 -1.614000e+02
-15 1228     1.921600e+02 2.346300e+02
-0 1229     -1.742400e+02 -5.134500e+02
-1 1229     -1.496100e+02 -4.067300e+02
-6 1229     -5.577002e+01 -6.718600e+02
-7 1229     -1.730900e+02 -4.407700e+02
-9 1229     4.588000e+01 -4.476500e+02
-0 1230     3.944200e+02 -1.019700e+02
-1 1230     5.352200e+02 -1.974700e+02
-3 1230     4.049700e+02 -3.353800e+02
-7 1230     3.066400e+02 7.115997e+01
-8 1230     4.658400e+02 -7.292999e+01
-10 1230     3.728199e+02 6.451001e+01
-12 1230     4.254500e+02 4.428003e+01
-15 1230     5.218800e+02 5.147998e+01
-0 1231     -3.597600e+02 4.365300e+02
-1 1231     -1.099976e+00 5.340200e+02
-0 1232     -5.069000e+01 4.999600e+02
-1 1232     3.242400e+02 5.222400e+02
-2 1232     -3.394500e+02 2.607800e+02
-3 1232     -4.680100e+02 -7.120001e+01
-5 1232     3.549100e+02 -1.497200e+02
-6 1232     -5.368000e+02 5.116100e+02
-7 1232     -2.767000e+02 5.630200e+02
-8 1232     -1.995600e+02 1.973700e+02
-12 1232     -3.597300e+02 5.022700e+02
-14 1232     2.643800e+02 -2.367800e+02
-0 1233     8.688000e+01 -2.149200e+02
-1 1233     1.753300e+02 -2.060500e+02
-4 1233     -4.455700e+02 -4.834399e+02
-6 1233     1.513000e+02 -1.876801e+02
-0 1234     1.634998e+01 -4.152002e+01
-1 1234     1.635500e+02 -1.652002e+01
-2 1234     1.800000e+02 -1.546002e+01
-3 1234     9.146002e+01 -3.240100e+02
-6 1234     -1.179993e+00 -2.328003e+01
-7 1234     -6.165002e+01 7.434003e+01
-12 1234     1.034998e+01 3.010999e+01
-13 1234     3.921500e+02 -2.565900e+02
-15 1234     -7.119995e+00 8.303000e+01
-0 1235     6.323000e+02 -9.014001e+01
-1 1235     8.343900e+02 -2.757100e+02
-7 1235     4.953199e+02 9.906000e+01
-10 1235     6.483900e+02 1.036600e+02
-13 1235     8.687600e+02 -2.776900e+02
-15 1235     8.630400e+02 9.832001e+01
-0 1236     1.106800e+02 -3.061900e+02
-1 1236     1.777100e+02 -3.037500e+02
-4 1236     -5.289600e+02 -4.929100e+02
-6 1236     1.875300e+02 -2.970000e+02
-7 1236     7.559998e+01 -1.738600e+02
-8 1236     3.236700e+02 -2.878000e+02
-10 1236     6.642999e+01 -2.001900e+02
-12 1236     1.966000e+02 -2.596000e+02
-13 1236     5.027500e+02 -4.892400e+02
-15 1236     1.569500e+02 -2.628200e+02
-0 1237     2.039500e+02 -7.190002e+00
-1 1237     3.575000e+02 -3.875000e+01
-2 1237     3.541600e+02 6.495001e+01
-4 1237     -3.060500e+02 -5.780100e+02
-0 1238     -2.704600e+02 5.494000e+01
-1 1238     -3.104999e+01 1.476900e+02
-7 1238     -4.119500e+02 9.100000e+01
-13 1238     2.940997e+01 -2.232900e+02
-15 1238     -3.959700e+02 1.732500e+02
-0 1239     -1.302200e+02 4.375400e+02
-1 1239     2.273800e+02 4.790000e+02
-2 1239     -4.103000e+02 1.855500e+02
-3 1239     -5.403000e+02 -1.442900e+02
-5 1239     2.732800e+02 -2.170200e+02
-7 1239     -3.469700e+02 4.895900e+02
-12 1239     -4.353200e+02 4.155400e+02
-14 1239     1.866600e+02 -3.046100e+02
-0 1240     -1.419200e+02 4.476600e+02
-1 1240     2.179301e+02 4.920800e+02
-2 1240     -4.226100e+02 1.975300e+02
-7 1240     -3.599100e+02 4.987100e+02
-12 1240     -4.510200e+02 4.260000e+02
-14 1240     1.755400e+02 -2.939800e+02
-0 1241     -1.536400e+02 4.797400e+02
-1 1241     2.137500e+02 5.269400e+02
-3 1241     -5.642600e+02 -9.271997e+01
-5 1241     2.531801e+02 -1.718700e+02
-7 1241     -3.760600e+02 5.313100e+02
-0 1242     -1.805100e+02 5.046400e+02
-1 1242     1.924600e+02 5.580500e+02
-2 1242     -4.635700e+02 2.653000e+02
-7 1242     -4.062300e+02 5.541700e+02
-0 1243     -2.071800e+02 4.982600e+02
-1 1243     1.639500e+02 5.583700e+02
-2 1243     -4.895000e+02 2.584600e+02
-3 1243     -6.161700e+02 -7.065997e+01
-5 1243     2.021200e+02 -1.523400e+02
-7 1243     -4.323600e+02 5.449600e+02
-11 1243     -3.639001e+01 -2.693900e+02
-12 1243     -5.330200e+02 4.783100e+02
-0 1244     -1.407001e+01 5.019400e+02
-1 1244     3.628300e+02 5.149800e+02
-2 1244     -3.046900e+02 2.621000e+02
-3 1244     -4.350700e+02 -6.940002e+01
-5 1244     3.909000e+02 -1.477800e+02
-7 1244     -2.407200e+02 5.685700e+02
-12 1244     -3.197500e+02 5.087200e+02
-14 1244     3.000000e+02 -2.342500e+02
-0 1245     -2.887000e+02 3.305200e+02
-1 1245     4.365002e+01 4.133100e+02
-2 1245     -5.662900e+02 4.919000e+01
-5 1245     1.062300e+02 -3.324000e+02
-7 1245     -4.918700e+02 3.589700e+02
-10 1245     -4.724000e+02 5.052800e+02
-11 1245     -1.109500e+02 -4.170100e+02
-13 1245     -4.028998e+01 9.440002e+00
-14 1245     2.432001e+01 -4.229700e+02
-15 1245     -4.601200e+02 5.508100e+02
-0 1246     -2.874200e+02 3.398100e+02
-1 1246     4.714001e+01 4.214500e+02
-2 1246     -5.652100e+02 6.078003e+01
-5 1246     1.086500e+02 -3.229700e+02
-10 1246     -4.715100e+02 5.162600e+02
-15 1246     -4.598300e+02 5.638200e+02
-0 1247     2.109985e+00 5.495000e+02
-1 1247     3.916100e+02 5.594600e+02
-6 1247     -4.854300e+02 5.858100e+02
-12 1247     -3.095800e+02 5.666100e+02
-14 1247     3.156400e+02 -1.853600e+02
-0 1248     -1.354400e+02 3.569700e+02
-1 1248     2.019200e+02 3.999800e+02
-2 1248     -4.113000e+02 8.641998e+01
-5 1248     2.621300e+02 -3.050800e+02
-7 1248     -3.419300e+02 4.048200e+02
-8 1248     -2.578500e+02 5.898001e+01
-11 1248     2.854999e+01 -3.931300e+02
-13 1248     8.278003e+01 3.942999e+01
-14 1248     1.780601e+02 -3.921800e+02
-0 1249     1.684100e+02 5.742400e+02
-1 1249     5.770900e+02 5.447600e+02
-6 1249     -3.080900e+02 6.498100e+02
-12 1249     -1.396400e+02 6.172300e+02
-0 1250     4.138199e+02 5.823000e+02
-1 1250     8.614000e+02 4.942100e+02
-3 1250     -9.075000e+01 1.733002e+01
-5 1250     8.144399e+02 -5.069000e+01
-6 1250     -5.451001e+01 7.060700e+02
-9 1250     -1.065700e+02 3.813800e+02
-13 1250     5.138600e+02 2.654200e+02
-14 1250     7.092300e+02 -1.314800e+02
-0 1251     -2.199707e-01 -8.090997e+01
-1 1251     1.375400e+02 -4.954999e+01
-3 1251     8.451001e+01 -3.742500e+02
-7 1251     -7.228998e+01 3.140002e+01
-8 1251     1.669500e+02 -1.027900e+02
-10 1251     -8.477002e+01 4.694000e+01
-15 1251     -2.359003e+01 2.721002e+01
-0 1252     2.712000e+01 1.357800e+02
-1 1252     2.340100e+02 1.533400e+02
-5 1252     6.379399e+02 -5.179900e+02
-7 1252     -8.689001e+01 2.490600e+02
-10 1252     -7.635999e+01 3.023200e+02
-12 1252     -4.453003e+01 2.232700e+02
-15 1252     -1.504999e+01 3.265100e+02
-0 1253     3.998400e+02 -8.966998e+01
-1 1253     5.461300e+02 -1.870200e+02
-3 1253     4.001700e+02 -3.287000e+02
-6 1253     3.778600e+02 2.535999e+01
-7 1253     3.088300e+02 8.289001e+01
-8 1253     4.636600e+02 -6.621997e+01
-9 1253     3.147700e+02 7.994000e+01
-12 1253     4.246801e+02 5.646997e+01
-13 1253     7.129399e+02 -2.749200e+02
-0 1254     -1.408300e+02 9.473001e+01
-1 1254     7.890002e+01 1.552300e+02
-2 1254     -1.456400e+02 -1.295001e+01
-3 1254     -2.373000e+02 -3.319500e+02
-6 1254     -3.263800e+02 4.128998e+01
-8 1254     -7.460999e+01 -4.345999e+01
-10 1254     -2.678700e+02 2.372600e+02
-12 1254     -2.705200e+02 9.571997e+01
-0 1255     -1.497500e+02 -4.809700e+02
-1 1255     -1.151100e+02 -3.851200e+02
-6 1255     -4.809003e+01 -6.260800e+02
-7 1255     -1.555400e+02 -4.038300e+02
-9 1255     4.431000e+01 -4.158400e+02
-12 1255     -6.459003e+01 -5.745100e+02
-0 1256     6.378000e+02 -1.397998e+01
-1 1256     8.644600e+02 -1.974000e+02
-2 1256     5.873199e+02 -1.871997e+01
-6 1256     5.055400e+02 1.344500e+02
-7 1256     4.904900e+02 1.733400e+02
-8 1256     5.404200e+02 -4.589001e+01
-10 1256     6.486600e+02 1.919500e+02
-12 1256     5.859399e+02 1.445400e+02
-13 1256     8.633900e+02 -2.070900e+02
-15 1256     8.621200e+02 2.046500e+02
-0 1257     -1.969100e+02 -4.433400e+02
-1 1257     -1.444600e+02 -3.354800e+02
-7 1257     -2.129000e+02 -3.768300e+02
-9 1257     -2.687000e+01 -4.089200e+02
-10 1257     -2.720300e+02 -3.907500e+02
-15 1257     -2.365700e+02 -4.883199e+02
-0 1258     -2.961300e+02 -2.394400e+02
-1 1258     -1.602100e+02 -1.183500e+02
-9 1258     -2.745500e+02 -3.079300e+02
-12 1258     -3.647200e+02 -3.592300e+02
-13 1258     7.903003e+01 -4.794500e+02
-15 1258     -3.951200e+02 -2.272900e+02
-0 1259     1.019200e+02 -5.572100e+02
-1 1259     9.270001e+01 -5.418900e+02
-0 1260     1.284600e+02 -3.142300e+02
-1 1260     1.940000e+02 -3.177400e+02
-7 1260     9.387000e+01 -1.789600e+02
-9 1260     2.242100e+02 -1.452800e+02
-15 1260     1.825699e+02 -2.712900e+02
-0 1261     3.398600e+02 5.600100e+02
-1 1261     7.667500e+02 4.878900e+02
-3 1261     -1.440500e+02 -5.659973e+00
-14 1261     6.392400e+02 -1.575900e+02
-0 1262     1.109800e+02 -7.403003e+01
-1 1262     2.439600e+02 -7.682001e+01
-7 1262     4.009003e+01 5.927002e+01
-10 1262     4.259998e+01 6.656000e+01
-13 1262     4.822500e+02 -2.757200e+02
-15 1262     1.249600e+02 5.152002e+01
-0 1263     7.921997e+01 -3.511000e+02
-1 1263     1.355500e+02 -3.364800e+02
-7 1263     5.031000e+01 -2.258400e+02
-9 1263     1.931600e+02 -1.991400e+02
-10 1263     3.528998e+01 -2.550100e+02
-13 1263     4.751000e+02 -5.359301e+02
-0 1264     6.224900e+02 2.196997e+01
-1 1264     8.597500e+02 -1.545400e+02
-2 1264     5.610100e+02 1.037000e+01
-3 1264     4.272100e+02 -2.975700e+02
-6 1264     4.778800e+02 1.687500e+02
-7 1264     4.703900e+02 2.050800e+02
-10 1264     6.275100e+02 2.325800e+02
-12 1264     5.606400e+02 1.786600e+02
-13 1264     8.426300e+02 -1.764200e+02
-15 1264     8.362900e+02 2.527600e+02
-0 1265     5.555200e+02 2.251600e+02
-1 1265     8.539700e+02 8.097000e+01
-2 1265     4.305500e+02 1.830800e+02
-3 1265     2.929500e+02 -1.348100e+02
-6 1265     3.405500e+02 3.706300e+02
-15 1265     7.192500e+02 5.269900e+02
-0 1266     5.846400e+02 6.363000e+01
-1 1266     8.330900e+02 -9.856000e+01
-2 1266     5.067900e+02 3.331000e+01
-7 1266     4.273900e+02 2.376700e+02
-15 1266     7.780300e+02 3.050000e+02
-0 1267     -5.847998e+01 -1.781100e+02
-1 1267     5.000000e+01 -1.256400e+02
-3 1267     8.666998e+01 -4.740800e+02
-4 1267     -3.906300e+02 -3.649800e+02
-6 1267     -2.704999e+01 -2.025300e+02
-7 1267     -1.106600e+02 -7.412000e+01
-8 1267     1.557100e+02 -1.909900e+02
-12 1267     -3.088000e+01 -1.502000e+02
-13 1267     3.462100e+02 -3.816100e+02
-0 1268     -7.334998e+01 7.842999e+01
-1 1268     1.249000e+02 1.238600e+02
-6 1268     -1.865500e+02 6.658002e+01
-7 1268     -1.823500e+02 1.721600e+02
-9 1268     -1.172900e+02 1.197500e+02
-15 1268     -1.422000e+02 2.333800e+02
-0 1269     5.624700e+02 9.985999e+01
-1 1269     8.216300e+02 -5.329999e+01
-6 1269     3.814100e+02 2.312100e+02
-7 1269     4.002600e+02 2.685000e+02
-9 1269     2.662500e+02 1.474400e+02
-10 1269     5.508000e+02 3.171600e+02
-12 1269     4.679399e+02 2.407000e+02
-13 1269     7.710800e+02 -1.153200e+02
-15 1269     7.430300e+02 3.522600e+02
-0 1270     5.629500e+02 6.810999e+01
-1 1270     8.121801e+02 -8.681000e+01
-6 1270     3.903900e+02 1.961400e+02
-7 1270     4.049301e+02 2.378800e+02
-10 1270     5.538800e+02 2.804500e+02
-12 1270     4.766801e+02 2.064500e+02
-15 1270     7.473500e+02 3.082500e+02
-0 1271     5.530000e+02 1.283300e+02
-1 1271     8.206500e+02 -2.052002e+01
-9 1271     2.501700e+02 1.678000e+02
-13 1271     7.581300e+02 -9.115997e+01
-15 1271     7.266500e+02 3.907400e+02
-0 1272     1.164900e+02 4.045300e+02
-1 1272     4.754800e+02 3.817400e+02
-2 1272     -1.750300e+02 1.509500e+02
-7 1272     -1.017300e+02 4.829800e+02
-11 1272     2.589100e+02 -3.443300e+02
-13 1272     2.841300e+02 9.473001e+01
-14 1272     4.291000e+02 -3.325100e+02
-0 1273     -3.003900e+02 4.627800e+02
-1 1273     6.291998e+01 5.454600e+02
-5 1273     1.088000e+02 -1.896600e+02
-8 1273     -3.977900e+02 1.570400e+02
-12 1273     -6.338000e+02 4.194600e+02
-0 1274     3.015002e+01 5.423100e+02
-1 1274     4.196700e+02 5.450500e+02
-2 1274     -2.668600e+02 3.076700e+02
-8 1274     -1.404500e+02 2.364000e+02
-12 1274     -2.795800e+02 5.619600e+02
-13 1274     2.134399e+02 2.072400e+02
-0 1275     -1.554700e+02 3.466200e+02
-1 1275     1.802600e+02 3.948100e+02
-2 1275     -4.299600e+02 7.309998e+01
-5 1275     2.419301e+02 -3.164000e+02
-7 1275     -3.598400e+02 3.919200e+02
-8 1275     -2.734600e+02 4.829999e+01
-14 1275     1.581400e+02 -4.036800e+02
-0 1276     2.295300e+02 3.507800e+02
-1 1276     5.748101e+02 2.973500e+02
-2 1276     -3.666998e+01 1.209000e+02
-7 1276     1.827002e+01 4.452400e+02
-9 1276     -1.741900e+02 1.786800e+02
-13 1276     3.905000e+02 5.741998e+01
-14 1276     5.630699e+02 -3.842400e+02
-0 1277     5.037000e+01 5.665800e+02
-1 1277     4.473900e+02 5.651500e+02
-2 1277     -2.509100e+02 3.346600e+02
-12 1277     -2.619000e+02 5.932400e+02
-0 1278     2.600699e+02 5.021900e+02
-1 1278     6.582400e+02 4.455300e+02
-2 1278     -5.987000e+01 2.651800e+02
-8 1278     3.182001e+01 2.062000e+02
-9 1278     -2.022300e+02 3.022500e+02
-0 1279     -2.752900e+02 1.188000e+01
-1 1279     -5.095001e+01 1.085200e+02
-0 1280     -2.535999e+01 5.428700e+02
-1 1280     3.615400e+02 5.596000e+02
-0 1281     -1.282001e+01 5.127800e+02
-1 1281     3.665601e+02 5.255200e+02
-2 1281     -3.041500e+02 2.744600e+02
-0 1282     3.222998e+01 4.259700e+02
-1 1282     3.922700e+02 4.257000e+02
-2 1282     -2.540100e+02 1.767500e+02
-6 1282     -4.262900e+02 4.319900e+02
-0 1283     -1.325200e+02 2.645400e+02
-1 1283     1.766801e+02 3.094400e+02
-0 1284     6.770020e+00 2.927800e+02
-1 1284     3.241000e+02 3.000000e+02
-5 1284     4.250200e+02 -3.728800e+02
-6 1284     -3.986200e+02 2.621900e+02
-0 1285     2.158400e+02 1.178998e+01
-1 1285     3.761801e+02 -2.365997e+01
-0 1286     -1.475700e+02 2.747700e+02
-1 1286     1.655800e+02 3.232200e+02
-11 1286     1.557001e+01 -4.692100e+02
-0 1287     4.222600e+02 1.825800e+02
-1 1287     7.135000e+02 7.206000e+01
-14 1287     8.440900e+02 -5.538000e+02
-0 1288     -3.228300e+02 -1.205500e+02
-1 1288     -1.424600e+02 -7.700195e-01
-0 1289     6.341998e+01 -1.413200e+02
-1 1289     1.765100e+02 -1.272300e+02
-0 1290     -1.704700e+02 2.243400e+02
-1 1290     1.251800e+02 2.808800e+02
-7 1290     -3.499800e+02 2.702200e+02
-10 1290     -3.171900e+02 3.893500e+02
-11 1290     -8.150024e+00 -5.172200e+02
-0 1291     1.327400e+02 -1.294600e+02
-1 1291     2.499301e+02 -1.376900e+02
-7 1291     6.903998e+01 7.539978e+00
-10 1291     7.314001e+01 5.260010e+00
-13 1291     5.047100e+02 -3.236600e+02
-15 1291     1.604700e+02 -2.077002e+01
-0 1292     4.133700e+02 -1.141400e+02
-1 1292     5.501801e+02 -2.161300e+02
-6 1292     4.056200e+02 7.210022e+00
-10 1292     3.958700e+02 5.362000e+01
-15 1292     5.498500e+02 3.859003e+01
-0 1293     -3.260800e+02 -1.264300e+02
-1 1293     -1.474800e+02 -5.390015e+00
-0 1294     -2.002900e+02 2.142300e+02
-1 1294     9.285999e+01 2.789700e+02
-0 1295     2.461300e+02 9.460999e+01
-1 1295     4.384600e+02 4.853998e+01
-10 1295     1.804800e+02 2.771800e+02
-15 1295     2.896000e+02 3.009500e+02
-0 1296     -7.406000e+01 4.981800e+02
-1 1296     3.001000e+02 5.260300e+02
-0 1297     -4.434700e+02 2.211900e+02
-1 1297     -1.322200e+02 3.476500e+02
-7 1297     -6.344700e+02 2.245900e+02
-10 1297     -6.446700e+02 3.594200e+02
-14 1297     -1.409300e+02 -5.462200e+02
-0 1298     -2.102100e+02 2.144700e+02
-1 1298     8.313000e+01 2.819700e+02
-5 1298     2.056200e+02 -4.604900e+02
-8 1298     -2.791800e+02 -5.709000e+01
-10 1298     -3.641400e+02 3.733000e+02
-11 1298     -4.591998e+01 -5.268700e+02
-14 1298     1.235100e+02 -5.494800e+02
-0 1299     -4.342800e+02 4.579400e+02
-1 1299     -6.795001e+01 5.718200e+02
-2 1299     -7.249000e+02 2.085500e+02
-12 1299     -7.933600e+02 3.937700e+02
-13 1299     -1.532200e+02 1.145200e+02
-14 1299     -1.061300e+02 -2.860500e+02
-0 1300     -2.800300e+02 5.162000e+01
-1 1300     -4.140997e+01 1.471400e+02
-0 1301     -1.192000e+02 4.594000e+01
-1 1301     7.526001e+01 1.040200e+02
-7 1301     -2.266900e+02 1.296600e+02
-10 1301     -2.369700e+02 1.825200e+02
-15 1301     -1.985000e+02 1.828900e+02
-0 1302     -3.988000e+01 4.734200e+02
-1 1302     3.286700e+02 4.920400e+02
-0 1303     -7.805600e+02 3.238000e+01
-1 1303     -4.905200e+02 2.575800e+02
-0 1304     -3.162900e+02 7.798999e+01
-1 1304     -6.558002e+01 1.816800e+02
-4 1304     -1.988700e+02 -1.538800e+02
-8 1304     -3.219900e+02 -1.686000e+02
-10 1304     -4.723300e+02 2.014200e+02
-0 1305     -1.693500e+02 2.284800e+02
-1 1305     1.276500e+02 2.845900e+02
-0 1306     2.593900e+02 -1.240900e+02
-1 1306     3.797900e+02 -1.734700e+02
-7 1306     1.898400e+02 3.323999e+01
-12 1306     3.064700e+02 2.800293e-01
-15 1306     3.350000e+02 3.140015e+00
-0 1307     -3.463600e+02 2.187700e+02
-1 1307     -4.363000e+01 3.210800e+02
-11 1307     -1.710300e+02 -5.210000e+02
-0 1308     -1.029500e+02 2.846500e+02
-1 1308     2.125699e+02 3.209100e+02
-0 1309     3.044200e+02 8.262000e+01
-1 1309     5.005500e+02 1.750000e+01
-15 1309     3.732300e+02 2.925600e+02
-0 1310     -3.967999e+01 2.383300e+02
-1 1310     2.576200e+02 2.595000e+02
-0 1311     6.543900e+02 -8.690997e+01
-1 1311     8.588300e+02 -2.800400e+02
-7 1311     5.160699e+02 1.060200e+02
-0 1312     3.355400e+02 -1.593300e+02
-1 1312     4.487800e+02 -2.342000e+02
-10 1312     3.099600e+02 -8.070007e+00
-0 1313     3.906100e+02 -4.239001e+01
-1 1313     5.562300e+02 -1.372600e+02
-7 1313     2.877400e+02 1.245200e+02
-15 1313     5.095601e+02 1.321200e+02
-0 1314     1.051000e+02 2.906700e+02
-1 1314     4.226400e+02 2.713000e+02
-6 1314     -2.770700e+02 2.873300e+02
-11 1314     2.512100e+02 -4.509900e+02
-13 1314     2.984200e+02 -1.070007e+00
-0 1315     -4.403100e+02 4.990997e+01
-1 1315     -1.889900e+02 1.882700e+02
-2 1315     -6.121700e+02 -2.412000e+02
-10 1315     -6.173500e+02 1.544600e+02
-13 1315     -1.228500e+02 -2.380900e+02
-15 1315     -6.279900e+02 1.436900e+02
-0 1316     4.091200e+02 -7.473999e+01
-1 1316     5.625900e+02 -1.750500e+02
-10 1316     3.870200e+02 9.704999e+01
-15 1316     5.394399e+02 9.091000e+01
-0 1317     2.166000e+02 -1.312500e+02
-1 1317     3.329900e+02 -1.663200e+02
-7 1317     1.518500e+02 2.012000e+01
-9 1317     2.336700e+02 5.002002e+01
-13 1317     5.786000e+02 -3.186200e+02
-15 1317     2.779301e+02 -1.187000e+01
-0 1318     5.099600e+02 -3.558600e+02
-1 1318     5.859200e+02 -4.980699e+02
-7 1318     4.462200e+02 -1.607100e+02
-0 1319     7.427002e+01 -1.336800e+02
-1 1319     1.905100e+02 -1.231600e+02
-10 1319     6.869995e+00 -5.650024e+00
-12 1319     1.107200e+02 -5.750000e+01
-0 1320     1.141500e+02 7.926999e+01
-1 1320     2.960200e+02 7.359003e+01
-2 1320     2.325601e+02 1.251600e+02
-6 1320     6.126001e+01 1.414600e+02
-15 1320     1.096500e+02 2.610500e+02
-0 1321     1.907700e+02 3.889700e+02
-1 1321     5.493199e+02 3.459600e+02
-0 1322     1.911801e+02 5.159998e+01
-1 1322     3.643199e+02 2.342999e+01
-6 1322     1.523000e+02 1.326800e+02
-8 1322     2.946900e+02 4.695999e+01
-10 1322     1.227800e+02 2.205900e+02
-12 1322     1.797900e+02 1.814300e+02
-15 1322     2.190800e+02 2.340000e+02
-0 1323     -1.415300e+02 7.046997e+01
-1 1323     6.856000e+01 1.325900e+02
-7 1323     -2.598400e+02 1.458800e+02
-10 1323     -2.656700e+02 2.090400e+02
-13 1323     1.984000e+02 -1.847100e+02
-15 1323     -2.305200e+02 2.129500e+02
-0 1324     1.906000e+02 3.807600e+02
-1 1324     5.458000e+02 3.378700e+02
-10 1324     9.114001e+01 6.127800e+02
-14 1324     5.099301e+02 -3.541900e+02
-0 1325     1.803000e+02 8.250000e+01
-1 1325     3.639900e+02 5.727002e+01
-6 1325     1.265200e+02 1.630700e+02
-8 1325     2.738300e+02 6.781000e+01
-12 1325     1.560900e+02 2.118700e+02
-13 1325     5.158600e+02 -1.372000e+02
-15 1325     1.998900e+02 2.747600e+02
-0 1326     2.966500e+02 3.648000e+02
-1 1326     6.521700e+02 2.933400e+02
-0 1327     -5.900269e-01 7.428003e+01
-1 1327     1.854900e+02 1.010100e+02
-15 1327     -4.522998e+01 2.383500e+02
-0 1328     1.679999e+01 -2.749300e+02
-1 1328     9.712000e+01 -2.428700e+02
-3 1328     1.822000e+02 -5.812500e+02
-6 1328     7.534998e+01 -2.955800e+02
-9 1328     1.216700e+02 -1.373900e+02
-10 1328     -4.439001e+01 -1.746500e+02
-0 1329     -1.196100e+02 5.309998e+00
-1 1329     5.879999e+01 6.602002e+01
-0 1330     7.520020e+00 -1.134600e+02
-1 1330     1.334500e+02 -8.371002e+01
-0 1331     -9.720001e+01 2.452000e+02
-1 1331     2.037600e+02 2.815500e+02
-5 1331     3.240601e+02 -4.268600e+02
-7 1331     -2.801500e+02 3.006900e+02
-10 1331     -2.329900e+02 4.210200e+02
-11 1331     6.115002e+01 -4.974600e+02
-14 1331     2.412700e+02 -5.128300e+02
-0 1332     -2.297000e+02 1.917500e+02
-1 1332     5.671002e+01 2.655500e+02
-0 1333     7.644000e+01 7.312000e+01
-1 1333     2.567600e+02 7.853998e+01
-0 1334     2.896700e+02 3.686700e+02
-1 1334     6.466600e+02 2.988800e+02
-0 1335     -1.207100e+02 2.795700e+02
-1 1335     1.932600e+02 3.209100e+02
-0 1336     -1.134700e+02 2.516200e+02
-1 1336     1.903199e+02 2.921600e+02
-0 1337     2.224700e+02 -2.759700e+02
-1 1337     2.947000e+02 -3.109400e+02
-10 1337     1.920699e+02 -1.531100e+02
-13 1337     6.024900e+02 -4.496801e+02
-0 1338     -1.820100e+02 -5.221000e+02
-1 1338     -1.596700e+02 -4.121400e+02
-0 1339     3.003600e+02 6.406000e+01
-1 1339     4.873300e+02 1.380005e+00
-15 1339     3.700200e+02 2.691400e+02
-0 1340     1.393000e+02 -1.402300e+02
-1 1340     2.519100e+02 -1.501600e+02
-10 1340     8.248999e+01 -6.349976e+00
-0 1341     -2.636900e+02 -4.504200e+02
-1 1341     -2.074100e+02 -3.204100e+02
-7 1341     -2.803300e+02 -3.985700e+02
-0 1342     3.183101e+02 7.558002e+01
-1 1342     5.134900e+02 6.500000e+00
-15 1342     3.937000e+02 2.841900e+02
-0 1343     -1.705500e+02 -5.043700e+02
-1 1343     -1.425300e+02 -3.998400e+02
-4 1343     -6.349400e+02 -2.497300e+02
-6 1343     -5.640997e+01 -6.585800e+02
-7 1343     -1.713100e+02 -4.306000e+02
-0 1344     -4.721100e+02 1.324300e+02
-1 1344     -1.890400e+02 2.722700e+02
-7 1344     -6.437500e+02 1.322100e+02
-10 1344     -6.674200e+02 2.491500e+02
-0 1345     2.255601e+02 3.711700e+02
-1 1345     5.787000e+02 3.189800e+02
-0 1346     -3.343800e+02 6.403003e+01
-1 1346     -8.712000e+01 1.733500e+02
-10 1346     -4.926300e+02 1.825000e+02
-0 1347     1.854000e+02 -1.299900e+02
-1 1347     3.020699e+02 -1.550300e+02
-0 1348     -3.689001e+01 8.929999e+01
-1 1348     1.587100e+02 1.249500e+02
-2 1348     4.816998e+01 7.885999e+01
-4 1348     -2.094800e+02 -3.809600e+02
-5 1348     5.698500e+02 -5.727000e+02
-6 1348     -1.327900e+02 9.703998e+01
-7 1348     -1.435300e+02 1.920200e+02
-10 1348     -1.456600e+02 2.408800e+02
-12 1348     -1.070500e+02 1.525900e+02
-13 1348     3.182700e+02 -1.521000e+02
-15 1348     -9.534003e+01 2.535700e+02
-0 1349     7.290400e+02 -3.458500e+02
-1 1349     8.370100e+02 -5.769900e+02
-0 1350     -1.369100e+02 2.398800e+02
-1 1350     1.630500e+02 2.869400e+02
-2 1350     -3.602500e+02 -2.131000e+01
-11 1350     2.428003e+01 -5.022800e+02
-13 1350     1.013300e+02 -5.964001e+01
-14 1350     1.981400e+02 -5.198700e+02
-0 1351     -1.084100e+02 1.314500e+02
-1 1351     1.244500e+02 1.810600e+02
-0 1352     -9.071002e+01 2.219800e+02
-1 1352     2.015400e+02 2.574600e+02
-0 1353     -1.266300e+02 2.507000e+02
-1 1353     1.770699e+02 2.946300e+02
-0 1354     3.365200e+02 -1.758100e+02
-1 1354     4.430699e+02 -2.504800e+02
-6 1354     3.720600e+02 -7.192999e+01
-7 1354     2.718600e+02 -4.880005e+00
-12 1354     4.044700e+02 -3.879999e+01
-13 1354     6.858000e+02 -3.504200e+02
-15 1354     4.484100e+02 -5.703998e+01
-0 1355     -1.573000e+02 -5.235699e+02
-1 1355     -1.360900e+02 -4.215500e+02
-4 1355     -6.568200e+02 -2.588400e+02
-6 1355     -3.020001e+01 -6.769500e+02
-7 1355     -1.533400e+02 -4.472200e+02
-0 1356     1.851001e+01 1.634100e+02
-1 1356     2.378800e+02 1.813800e+02
-10 1356     -8.912000e+01 3.337300e+02
-15 1356     -2.909998e+01 3.628900e+02
-0 1357     1.373000e+02 -5.511500e+02
-1 1357     1.294900e+02 -5.490699e+02
-10 1357     1.233000e+02 -4.772400e+02
-0 1358     1.531899e+02 -2.168900e+02
-1 1358     2.398800e+02 -2.294100e+02
-10 1358     1.064000e+02 -9.359998e+01
-0 1359     3.615601e+02 3.367999e+01
-1 1359     5.537000e+02 -5.104999e+01
-7 1359     2.448000e+02 1.923100e+02
-10 1359     3.212100e+02 2.189400e+02
-15 1359     4.602700e+02 2.334400e+02
-0 1360     1.748800e+02 -2.048800e+02
-1 1360     2.665900e+02 -2.250000e+02
-10 1360     1.301900e+02 -7.719000e+01
-0 1361     -1.070001e+01 1.477500e+02
-1 1361     2.050400e+02 1.743000e+02
-10 1361     -1.212600e+02 3.127100e+02
-15 1361     -6.692999e+01 3.374100e+02
-0 1362     -1.218300e+02 -1.159500e+02
-1 1362     1.440997e+01 -4.847998e+01
-12 1362     -1.392900e+02 -1.063800e+02
-13 1362     2.725601e+02 -3.350300e+02
-0 1363     2.748700e+02 9.776999e+01
-1 1363     4.719700e+02 4.357001e+01
-15 1363     3.301400e+02 3.091700e+02
-0 1364     -1.825400e+02 -5.257400e+02
-1 1364     -1.613200e+02 -4.152200e+02
-6 1364     -5.578998e+01 -6.891300e+02
-7 1364     -1.782200e+02 -4.544500e+02
-9 1364     4.647998e+01 -4.594399e+02
-0 1365     3.242900e+02 -1.597800e+02
-1 1365     4.370900e+02 -2.308300e+02
-7 1365     2.560400e+02 7.739990e+00
-15 1365     4.299100e+02 -3.677002e+01
-0 1366     4.071801e+02 -9.100000e+01
-1 1366     5.533700e+02 -1.906500e+02
-10 1366     3.866100e+02 7.803998e+01
-0 1367     -4.573400e+02 1.247700e+02
-1 1367     -1.783200e+02 2.615800e+02
-7 1367     -6.259500e+02 1.272000e+02
-0 1368     -2.346500e+02 1.941000e+02
-1 1368     5.323999e+01 2.690000e+02
-7 1368     -4.092100e+02 2.306500e+02
-0 1369     -1.349800e+02 -1.125300e+02
-1 1369     3.210022e+00 -4.115002e+01
-2 1369     2.795001e+01 -1.462300e+02
-4 1369     -3.324200e+02 -3.056100e+02
-6 1369     -1.597700e+02 -1.653700e+02
-7 1369     -2.050500e+02 -2.583002e+01
-8 1369     4.734998e+01 -1.657000e+02
-12 1369     -1.562400e+02 -1.066900e+02
-13 1369     2.599800e+02 -3.331100e+02
-15 1369     -2.010600e+02 -3.378998e+01
-0 1370     -4.516200e+02 3.200000e+01
-1 1370     -2.054000e+02 1.747100e+02
-0 1371     2.458600e+02 -4.685999e+01
-1 1371     3.897700e+02 -9.204999e+01
-0 1372     6.253998e+01 2.540400e+02
-1 1372     3.651500e+02 2.469600e+02
-6 1372     -3.034600e+02 2.341400e+02
-10 1372     -4.603998e+01 4.477000e+02
-0 1373     -1.244900e+02 2.816500e+02
-1 1373     1.903400e+02 3.238600e+02
-7 1373     -3.164300e+02 3.314100e+02
-10 1373     -2.697900e+02 4.618100e+02
-15 1373     -2.248500e+02 5.045400e+02
-0 1374     5.443500e+02 6.740997e+01
-1 1374     7.927400e+02 -8.203003e+01
-6 1374     3.669200e+02 1.872700e+02
-7 1374     3.865100e+02 2.333300e+02
-10 1374     5.321200e+02 2.769500e+02
-12 1374     4.546300e+02 1.979500e+02
-13 1374     7.560200e+02 -1.467800e+02
-15 1374     7.215200e+02 3.041500e+02
-0 1375     -3.343600e+02 5.840002e+01
-1 1375     -8.913000e+01 1.681400e+02
-13 1375     -2.903998e+01 -2.240800e+02
-0 1376     3.540500e+02 3.425000e+02
-1 1376     7.053199e+02 2.545000e+02
-0 1377     -9.887000e+01 -2.287000e+01
-1 1377     6.760999e+01 3.369000e+01
-10 1377     -2.051000e+02 1.044300e+02
-15 1377     -1.631500e+02 9.239001e+01
-0 1378     -1.501100e+02 2.812800e+02
-1 1378     1.657800e+02 3.298700e+02
-10 1378     -3.002300e+02 4.590900e+02
-0 1379     -2.468900e+02 -4.181600e+02
-1 1379     -1.805600e+02 -2.964600e+02
-0 1380     -2.472600e+02 -4.914100e+02
-1 1380     -2.074600e+02 -3.627800e+02
-6 1380     -1.559800e+02 -6.844200e+02
-0 1381     -8.036900e+02 4.720001e+01
-1 1381     -5.048500e+02 2.762400e+02
-0 1382     -7.918800e+02 3.725000e+01
-1 1382     -4.983700e+02 2.646300e+02
-0 1383     -8.758700e+02 -3.146997e+01
-1 1383     -5.881100e+02 2.234800e+02
-0 1384     -7.878000e+02 4.977002e+01
-1 1384     -4.913600e+02 2.749700e+02
-0 1385     2.548000e+02 1.432100e+02
-1 1385     4.686300e+02 9.382999e+01
-0 1386     2.988900e+02 -3.132001e+01
-1 1386     4.524301e+02 -9.387000e+01
-7 1386     2.091801e+02 1.283500e+02
-10 1386     2.556500e+02 1.352900e+02
-15 1386     3.787300e+02 1.347400e+02
-0 1387     -8.484900e+02 -4.218100e+02
-1 1387     -6.875000e+02 -1.201000e+02
-4 1387     -4.366800e+02 1.925700e+02
-0 1388     -2.385800e+02 -4.676200e+02
-1 1388     -1.909000e+02 -3.440600e+02
-4 1388     -5.880600e+02 -1.983000e+02
-6 1388     -1.620800e+02 -6.545500e+02
-7 1388     -2.500300e+02 -4.100900e+02
-9 1388     -4.902002e+01 -4.425601e+02
-0 1389     -2.102800e+02 -4.826400e+02
-1 1389     -1.712600e+02 -3.667300e+02
-6 1389     -1.189400e+02 -6.570100e+02
-7 1389     -2.160000e+02 -4.181500e+02
-9 1389     -1.034998e+01 -4.399399e+02
-0 1390     -1.453003e+01 5.276100e+02
-1 1390     3.690699e+02 5.409700e+02
-2 1390     -3.069400e+02 2.915400e+02
-3 1390     -4.366700e+02 -4.013000e+01
-12 1390     -3.244900e+02 5.390300e+02
-0 1391     8.804999e+01 5.524300e+02
-1 1391     4.835699e+02 5.416800e+02
-5 1391     4.925900e+02 -9.302002e+01
-0 1392     -2.009998e+01 5.275900e+02
-1 1392     3.629000e+02 5.424400e+02
-5 1392     3.857200e+02 -1.208000e+02
-0 1393     -7.234500e+02 -4.637000e+02
-1 1393     -6.032900e+02 -1.918100e+02
-4 1393     -4.874300e+02 1.253700e+02
-0 1394     -4.224300e+02 3.127300e+02
-1 1394     -8.946002e+01 4.293100e+02
-7 1394     -6.279500e+02 3.233700e+02
-0 1395     -4.224300e+02 3.127300e+02
-1 1395     -8.946002e+01 4.293100e+02
-5 1395     -3.198999e+01 -3.492300e+02
-7 1395     -6.279500e+02 3.233700e+02
-8 1395     -5.033800e+02 2.769989e+00
-10 1395     -6.325600e+02 4.716400e+02
-13 1395     -1.498500e+02 -1.157001e+01
-14 1395     -1.126000e+02 -4.425500e+02
-0 1396     -1.852800e+02 4.464300e+02
-1 1396     1.740300e+02 5.013800e+02
-2 1396     -4.657700e+02 1.960000e+02
-14 1396     1.334100e+02 -2.962400e+02
-0 1397     2.922900e+02 5.455800e+02
-1 1397     7.072100e+02 4.835500e+02
-2 1397     -3.809998e+01 3.122400e+02
-6 1397     -1.720300e+02 6.364300e+02
-11 1397     4.075000e+02 -2.113600e+02
-12 1397     -7.289978e+00 5.992800e+02
-13 1397     4.192000e+02 2.262200e+02
-14 1397     5.939800e+02 -1.760100e+02
-0 1398     3.590400e+02 4.616000e+02
-1 1398     7.585100e+02 3.768200e+02
-6 1398     -8.610999e+01 5.471600e+02
-12 1398     7.603998e+01 5.142300e+02
-14 1398     6.675200e+02 -2.589300e+02
-0 1399     2.094600e+02 4.110900e+02
-1 1399     5.772900e+02 3.638000e+02
-3 1399     -2.330800e+02 -1.694400e+02
-7 1399     -1.442999e+01 4.998600e+02
-11 1399     3.450400e+02 -3.334400e+02
-12 1399     -6.707001e+01 4.353400e+02
-14 1399     5.212800e+02 -3.209400e+02
-0 1400     9.700000e+01 5.010500e+02
-1 1400     4.799600e+02 4.857500e+02
-8 1400     -8.716998e+01 2.017100e+02
-11 1400     2.354900e+02 -2.592400e+02
-12 1400     -2.008000e+02 5.232000e+02
-14 1400     4.071100e+02 -2.312300e+02
-0 1401     2.584500e+02 -1.163500e+02
-1 1401     3.820800e+02 -1.654800e+02
-10 1401     2.176600e+02 3.359998e+01
-15 1401     3.332300e+02 1.370001e+01
-0 1402     2.832700e+02 -2.526500e+02
-1 1402     3.659399e+02 -3.089700e+02
-15 1402     3.853800e+02 -1.679700e+02
-0 1403     2.555100e+02 -2.739200e+02
-1 1403     3.308101e+02 -3.210800e+02
-10 1403     2.297900e+02 -1.476400e+02
-15 1403     3.501700e+02 -2.009700e+02
-0 1404     -2.033300e+02 -5.425800e+02
-1 1404     -1.862600e+02 -4.234300e+02
-4 1404     -6.612900e+02 -2.244000e+02
-0 1405     -2.790400e+02 1.921200e+02
-1 1405     1.021997e+01 2.786800e+02
-0 1406     1.016998e+01 1.088900e+02
-1 1406     2.077100e+02 1.313700e+02
-4 1406     -2.011000e+02 -4.176500e+02
-10 1406     -9.319000e+01 2.689500e+02
-15 1406     -3.454999e+01 2.872100e+02
-0 1407     -1.076200e+02 -7.999878e-01
-1 1407     6.779999e+01 5.681000e+01
-2 1407     -1.027002e+01 -4.391998e+01
-4 1407     -2.612600e+02 -3.237500e+02
-6 1407     -1.933800e+02 -3.572998e+01
-7 1407     -2.023500e+02 8.773001e+01
-8 1407     2.407001e+01 -7.790002e+01
-10 1407     -2.182800e+02 1.289400e+02
-13 1407     2.603500e+02 -2.367900e+02
-15 1407     -1.778300e+02 1.212100e+02
-0 1408     5.852200e+02 -4.465997e+01
-1 1408     7.995500e+02 -2.121300e+02
-7 1408     4.432700e+02 1.328400e+02
-10 1408     5.907400e+02 1.509900e+02
-13 1408     8.126000e+02 -2.429100e+02
-15 1408     7.924301e+02 1.545100e+02
-0 1409     -1.817100e+02 -5.149800e+02
-1 1409     -1.577700e+02 -4.044700e+02
-6 1409     -6.190997e+01 -6.769700e+02
-0 1410     6.263000e+02 -2.714000e+02
-1 1410     7.496200e+02 -4.584000e+02
-0 1411     -8.203003e+01 -5.528900e+02
-1 1411     -7.971997e+01 -4.739900e+02
-7 1411     -6.988000e+01 -4.587100e+02
-9 1411     1.555100e+02 -4.370500e+02
-0 1412     4.555300e+02 3.096600e+02
-1 1412     7.901400e+02 1.954800e+02
-0 1413     -6.789001e+01 2.277002e+01
-1 1413     1.095400e+02 6.891998e+01
-3 1413     -5.085999e+01 -3.130200e+02
-6 1413     -1.455400e+02 9.840027e+00
-7 1413     -1.634200e+02 1.200600e+02
-10 1413     -1.759100e+02 1.602600e+02
-15 1413     -1.281500e+02 1.586700e+02
-0 1414     1.859800e+02 6.128003e+01
-1 1414     3.623101e+02 3.476001e+01
-6 1414     1.434200e+02 1.437100e+02
-10 1414     1.159400e+02 2.312600e+02
-12 1414     1.709900e+02 1.922900e+02
-13 1414     5.260699e+02 -1.548900e+02
-15 1414     2.104500e+02 2.466500e+02
-0 1415     3.045900e+02 9.517001e+01
-1 1415     5.052700e+02 3.073999e+01
-15 1415     3.725100e+02 3.096000e+02
-0 1416     -3.426001e+01 -1.593000e+02
-1 1416     8.035999e+01 -1.151300e+02
-7 1416     -9.142999e+01 -5.264001e+01
-15 1416     -6.003998e+01 -8.423999e+01
-0 1417     2.159700e+02 -8.331000e+01
-1 1417     3.472200e+02 -1.188800e+02
-2 1417     3.902600e+02 -1.427002e+01
-6 1417     2.250600e+02 -6.640015e+00
-7 1417     1.423300e+02 6.641998e+01
-8 1417     3.517300e+02 -6.073999e+01
-10 1417     1.651200e+02 6.670001e+01
-12 1417     2.495800e+02 3.592999e+01
-13 1417     5.707800e+02 -2.770000e+02
-15 1417     2.703300e+02 5.295001e+01
-0 1418     6.380200e+02 -8.403003e+01
-1 1418     8.425900e+02 -2.710600e+02
-2 1418     6.080601e+02 -9.304999e+01
-3 1418     4.796801e+02 -3.965900e+02
-8 1418     5.568900e+02 -1.071300e+02
-10 1418     6.541700e+02 1.114600e+02
-12 1418     6.042500e+02 6.621002e+01
-13 1418     8.730100e+02 -2.714700e+02
-15 1418     8.708101e+02 1.074100e+02
-0 1419     2.799500e+02 -2.525000e+02
-1 1419     3.622800e+02 -3.079900e+02
-0 1420     -1.984500e+02 -4.523400e+02
-1 1420     -1.494200e+02 -3.434900e+02
-6 1420     -1.252100e+02 -6.191200e+02
-15 1420     -2.395900e+02 -5.016300e+02
-0 1421     6.409600e+02 -2.376900e+02
-1 1421     7.807300e+02 -4.299100e+02
-7 1421     5.367600e+02 -3.194000e+01
-0 1422     3.131600e+02 5.610999e+01
-1 1422     4.994399e+02 -1.137000e+01
-7 1422     2.051400e+02 2.125000e+02
-10 1422     2.642200e+02 2.384100e+02
-15 1422     3.891100e+02 2.562300e+02
-0 1423     2.955601e+02 -2.945100e+02
-1 1423     3.720400e+02 -3.567700e+02
-15 1423     4.097700e+02 -2.238700e+02
-0 1424     6.440400e+02 -2.656900e+02
-1 1424     7.728300e+02 -4.602200e+02
-7 1424     5.450200e+02 -5.642999e+01
-10 1424     6.760400e+02 -9.728998e+01
-12 1424     6.947800e+02 -1.037900e+02
-0 1425     6.004600e+02 -4.013100e+02
-1 1425     6.647300e+02 -5.791899e+02
-7 1425     5.383101e+02 -1.856300e+02
-12 1425     7.181300e+02 -2.458300e+02
-15 1425     8.504200e+02 -3.330400e+02
-0 1426     2.919800e+02 1.056700e+02
-1 1426     4.949700e+02 4.531000e+01
-15 1426     3.533600e+02 3.229900e+02
-0 1427     2.629800e+02 -2.766500e+02
-1 1427     3.389500e+02 -3.265200e+02
-6 1427     3.271200e+02 -2.117800e+02
-7 1427     2.151300e+02 -1.185800e+02
-10 1427     2.379900e+02 -1.500600e+02
-12 1427     3.517800e+02 -1.807000e+02
-13 1427     6.308900e+02 -4.505500e+02
-15 1427     3.601100e+02 -2.043500e+02
-0 1428     -2.116800e+02 -4.980400e+02
-1 1428     -1.779100e+02 -3.800500e+02
-0 1429     2.357500e+02 1.133700e+02
-1 1429     4.347600e+02 7.096997e+01
-7 1429     1.236000e+02 2.591900e+02
-10 1429     1.677700e+02 2.976900e+02
-13 1429     5.513400e+02 -1.096000e+02
-15 1429     2.734800e+02 3.249600e+02
-0 1430     4.141899e+02 -5.521997e+01
-1 1430     5.765601e+02 -1.584500e+02
-0 1431     2.993199e+02 -2.383000e+02
-1 1431     3.862500e+02 -3.002300e+02
-15 1431     4.058800e+02 -1.470900e+02
-0 1432     2.993199e+02 -2.383000e+02
-1 1432     3.862500e+02 -3.002300e+02
-15 1432     4.058800e+02 -1.470900e+02
-0 1433     2.897900e+02 -2.919000e+02
-1 1433     3.654900e+02 -3.519900e+02
-7 1433     2.412000e+02 -1.301200e+02
-10 1433     2.708900e+02 -1.641800e+02
-15 1433     4.012000e+02 -2.210500e+02
-0 1434     2.887500e+02 -3.011700e+02
-1 1434     3.626000e+02 -3.607900e+02
-10 1434     2.704399e+02 -1.754000e+02
-15 1434     4.011000e+02 -2.336100e+02
-0 1435     6.289200e+02 -2.264000e+02
-1 1435     7.716700e+02 -4.136500e+02
-0 1436     1.228900e+02 -5.840997e+01
-1 1436     2.603600e+02 -6.446002e+01
-2 1436     3.018300e+02 1.070007e+00
-7 1436     4.906000e+01 7.746997e+01
-8 1436     2.765700e+02 -4.876001e+01
-10 1436     5.447998e+01 8.640997e+01
-15 1436     1.389100e+02 7.432001e+01
-0 1437     1.228900e+02 -5.840997e+01
-1 1437     2.603600e+02 -6.446002e+01
-0 1438     3.646200e+02 4.431100e+02
-1 1438     7.591801e+02 3.554400e+02
-5 1438     7.740300e+02 -2.007400e+02
-14 1438     6.765500e+02 -2.776200e+02
-0 1439     -4.594900e+02 3.659700e+02
-1 1439     -1.140000e+02 4.894700e+02
-7 1439     -6.733600e+02 3.766800e+02
-11 1439     -2.613200e+02 -3.830300e+02
-15 1439     -7.060500e+02 5.787700e+02
-0 1440     4.780500e+02 2.870700e+02
-1 1440     8.064000e+02 1.656700e+02
-7 1440     2.801600e+02 4.269100e+02
-10 1440     4.370699e+02 5.299800e+02
-0 1441     4.796899e+02 2.740500e+02
-1 1441     8.033300e+02 1.504700e+02
-10 1441     4.398000e+02 5.126900e+02
-0 1442     9.452002e+01 4.871600e+02
-1 1442     4.743700e+02 4.727400e+02
-0 1443     -1.437500e+02 5.340300e+02
-1 1443     2.369700e+02 5.787300e+02
-2 1443     -4.292600e+02 2.996100e+02
-11 1443     1.915997e+01 -2.382700e+02
-0 1444     2.382700e+02 4.237100e+02
-1 1444     6.121200e+02 3.685700e+02
-0 1445     7.346000e+02 -3.049600e+02
-1 1445     8.614800e+02 -5.371899e+02
-7 1445     6.339500e+02 -7.679999e+01
-0 1446     5.424700e+02 1.423000e+02
-1 1446     8.140900e+02 -2.630005e+00
-2 1446     4.374600e+02 9.320001e+01
-0 1447     1.079000e+02 4.044600e+02
-1 1447     4.662300e+02 3.839900e+02
-9 1447     -3.023600e+02 1.988900e+02
-0 1448     3.324200e+02 4.924100e+02
-1 1448     7.370200e+02 4.169200e+02
-3 1448     -1.416400e+02 -7.702002e+01
-4 1448     -1.128003e+01 -5.787100e+02
-6 1448     -1.199400e+02 5.801900e+02
-8 1448     8.342999e+01 2.008600e+02
-11 1448     4.503400e+02 -2.540400e+02
-12 1448     4.354999e+01 5.452800e+02
-0 1449     1.534800e+02 5.590200e+02
-1 1449     5.562900e+02 5.324800e+02
-2 1449     -1.585700e+02 3.261100e+02
-6 1449     -3.216700e+02 6.279200e+02
-12 1449     -1.524200e+02 5.976100e+02
-14 1449     4.596100e+02 -1.694000e+02
-0 1450     -4.484100e+02 3.669000e+01
-1 1450     -2.007000e+02 1.781500e+02
-8 1450     -4.372900e+02 -2.226100e+02
-10 1450     -6.207900e+02 1.406500e+02
-13 1450     -1.246100e+02 -2.485900e+02
-15 1450     -6.376600e+02 1.243500e+02
-0 1451     -1.373400e+02 3.369300e+02
-1 1451     1.959700e+02 3.808800e+02
-9 1451     -4.934100e+02 1.115300e+02
-11 1451     2.723999e+01 -4.108800e+02
-0 1452     3.009399e+02 5.769700e+02
-1 1452     7.259800e+02 5.150200e+02
-2 1452     -3.420001e+01 3.450500e+02
-9 1452     -1.835000e+02 3.732100e+02
-13 1452     4.251400e+02 2.534600e+02
-14 1452     6.006400e+02 -1.432300e+02
-0 1453     3.326001e+01 5.712500e+02
-1 1453     4.303600e+02 5.744200e+02
-0 1454     -3.087700e+02 4.152400e+02
-1 1454     4.398999e+01 5.008400e+02
-2 1454     -5.900400e+02 1.571300e+02
-13 1454     -5.467999e+01 8.289999e+01
-0 1455     -2.257000e+02 -5.281500e+02
-1 1455     -2.007500e+02 -4.026000e+02
-4 1455     -6.445400e+02 -2.081200e+02
-6 1455     -1.044800e+02 -7.137200e+02
-0 1456     2.636300e+02 -1.106000e+02
-1 1456     3.904399e+02 -1.610300e+02
-7 1456     1.904500e+02 4.627002e+01
-10 1456     2.228500e+02 4.103998e+01
-13 1456     6.106500e+02 -2.985300e+02
-15 1456     3.395800e+02 2.210999e+01
-0 1457     -1.260600e+02 -2.896997e+01
-1 1457     4.176001e+01 3.484003e+01
-2 1457     -1.852002e+01 -7.578998e+01
-3 1457     -1.004500e+02 -3.887100e+02
-4 1457     -2.774400e+02 -3.099600e+02
-6 1457     -2.032000e+02 -7.347998e+01
-7 1457     -2.156400e+02 5.656000e+01
-8 1457     1.528003e+01 -1.046800e+02
-9 1457     -1.210400e+02 1.984998e+01
-10 1457     -2.366900e+02 9.412000e+01
-12 1457     -1.840300e+02 -1.478003e+01
-13 1457     2.477900e+02 -2.619800e+02
-15 1457     -1.989500e+02 8.022000e+01
-0 1458     -1.301400e+02 -3.666998e+01
-1 1458     3.644000e+01 2.884998e+01
-4 1458     -2.823700e+02 -3.059300e+02
-7 1458     -2.192700e+02 4.709003e+01
-9 1458     -1.250700e+02 7.679993e+00
-10 1458     -2.406300e+02 8.413000e+01
-15 1458     -2.033400e+02 6.842999e+01
-0 1459     -3.008500e+02 4.894800e+02
-1 1459     6.883002e+01 5.716200e+02
-2 1459     -5.833900e+02 2.485000e+02
-5 1459     1.104700e+02 -1.609100e+02
-7 1459     -5.267500e+02 5.259000e+02
-8 1459     -3.991800e+02 1.835900e+02
-12 1459     -6.391000e+02 4.545300e+02
-0 1460     -3.021000e+02 3.267300e+02
-1 1460     2.965997e+01 4.130000e+02
-5 1460     9.240002e+01 -3.362600e+02
-7 1460     -5.050500e+02 3.536700e+02
-15 1460     -4.779500e+02 5.438800e+02
-0 1461     5.703600e+02 3.279999e+01
-1 1461     8.086400e+02 -1.264500e+02
-6 1461     4.094600e+02 1.586400e+02
-7 1461     4.171899e+02 2.051600e+02
-10 1461     5.652600e+02 2.400000e+02
-12 1461     4.944900e+02 1.691200e+02
-13 1461     7.870601e+02 -1.742400e+02
-15 1461     7.619000e+02 2.599000e+02
-0 1462     5.755900e+02 2.723999e+01
-1 1462     8.122900e+02 -1.336700e+02
-6 1462     4.171400e+02 1.554700e+02
-7 1462     4.229399e+02 2.005800e+02
-10 1462     5.717300e+02 2.337200e+02
-13 1462     7.929399e+02 -1.783900e+02
-15 1462     7.697800e+02 2.530300e+02
-0 1463     6.118500e+02 1.180600e+02
-1 1463     8.788101e+02 -4.928998e+01
-6 1463     4.392200e+02 2.711500e+02
-7 1463     4.471400e+02 2.956000e+02
-8 1463     4.887000e+02 5.589001e+01
-9 1463     3.089800e+02 1.861500e+02
-10 1463     6.081400e+02 3.435700e+02
-12 1463     5.229000e+02 2.808000e+02
-13 1463     8.200500e+02 -9.227002e+01
-15 1463     8.106000e+02 3.852800e+02
-0 1464     2.097900e+02 -1.613800e+02
-1 1464     3.152000e+02 -1.938100e+02
-7 1464     1.510900e+02 -1.019000e+01
-13 1464     5.794000e+02 -3.452000e+02
-15 1464     2.712400e+02 -5.367999e+01
-0 1465     5.959399e+02 1.239001e+01
-1 1465     8.288700e+02 -1.558800e+02
-6 1465     4.472900e+02 1.475300e+02
-7 1465     4.458199e+02 1.902700e+02
-15 1465     8.004700e+02 2.351300e+02
-0 1466     5.924000e+02 -1.709998e+01
-1 1466     8.159800e+02 -1.859600e+02
-6 1466     4.500900e+02 1.117700e+02
-7 1466     4.457200e+02 1.609700e+02
-10 1466     5.954100e+02 1.841100e+02
-12 1466     5.331000e+02 1.225100e+02
-13 1466     8.160900e+02 -2.164300e+02
-15 1466     7.987100e+02 1.937700e+02
-0 1467     -2.487200e+02 3.923800e+02
-1 1467     9.778003e+01 4.641800e+02
-7 1467     -4.606000e+02 4.290100e+02
-13 1467     -6.750000e+00 6.572998e+01
-14 1467     6.912000e+01 -3.542500e+02
-0 1468     6.492600e+02 -9.402002e+01
-1 1468     8.516600e+02 -2.860400e+02
-2 1468     6.250900e+02 -9.690002e+01
-8 1468     5.705200e+02 -1.106200e+02
-0 1469     6.684500e+02 -6.559003e+01
-1 1469     8.807400e+02 -2.620900e+02
-2 1469     6.356600e+02 -5.552002e+01
-0 1470     -2.112600e+02 4.081500e+02
-1 1470     1.384700e+02 4.702700e+02
-7 1470     -4.241100e+02 4.499100e+02
-10 1470     -3.891900e+02 6.073800e+02
-12 1470     -5.218300e+02 3.669500e+02
-0 1471     -3.508700e+02 3.998600e+02
-1 1471     -8.800049e-01 4.957700e+02
-0 1472     -6.540300e+02 3.990300e+02
-1 1472     -2.671800e+02 5.643600e+02
-0 1473     -2.741800e+02 3.489100e+02
-1 1473     6.254999e+01 4.278900e+02
-8 1473     -3.716000e+02 4.542001e+01
-11 1473     -9.759003e+01 -4.001400e+02
-0 1474     -1.286400e+02 4.184100e+02
-1 1474     2.241801e+02 4.589400e+02
-2 1474     -4.082300e+02 1.621700e+02
-8 1474     -2.556600e+02 1.183900e+02
-0 1475     5.460022e+00 4.512000e+02
-1 1475     3.707400e+02 4.582400e+02
-2 1475     -2.824900e+02 2.033600e+02
-6 1475     -4.636600e+02 4.585900e+02
-7 1475     -2.152200e+02 5.182700e+02
-14 1475     3.187400e+02 -2.866800e+02
-0 1476     5.876001e+01 -1.161300e+02
-1 1476     1.822700e+02 -1.017900e+02
-3 1476     1.631700e+02 -3.863900e+02
-10 1476     -1.313000e+01 1.290997e+01
-13 1476     4.386100e+02 -3.180300e+02
-0 1477     -1.744100e+02 4.408500e+02
-1 1477     1.834301e+02 4.933400e+02
-2 1477     -4.541600e+02 1.894200e+02
-7 1477     -3.915400e+02 4.881900e+02
-0 1478     3.501801e+02 4.694700e+02
-1 1478     7.507200e+02 3.874700e+02
-2 1478     2.158002e+01 2.316100e+02
-3 1478     -1.242900e+02 -1.000400e+02
-5 1478     7.566100e+02 -1.728900e+02
-6 1478     -9.645001e+01 5.549800e+02
-7 1478     1.104800e+02 5.725800e+02
-9 1478     -1.324300e+02 2.757600e+02
-12 1478     6.601001e+01 5.217300e+02
-0 1479     1.890300e+02 5.320400e+02
-1 1479     5.882400e+02 4.950800e+02
-2 1479     -1.247500e+02 2.971400e+02
-5 1479     5.907100e+02 -1.117100e+02
-12 1479     -1.105600e+02 5.712600e+02
-0 1480     3.501801e+02 4.694700e+02
-1 1480     7.507200e+02 3.874700e+02
-0 1481     3.468400e+02 4.885300e+02
-1 1481     7.524900e+02 4.086400e+02
-5 1481     7.516000e+02 -1.523500e+02
-6 1481     -1.040900e+02 5.777700e+02
-12 1481     5.860999e+01 5.430100e+02
-14 1481     6.527900e+02 -2.313500e+02
-0 1482     -1.453003e+01 5.276100e+02
-1 1482     3.690699e+02 5.409700e+02
-2 1482     -3.069400e+02 2.915400e+02
-6 1482     -5.003500e+02 5.546900e+02
-12 1482     -3.244900e+02 5.390300e+02
-0 1483     -1.261000e+02 4.587000e+02
-1 1483     2.368500e+02 4.990100e+02
-8 1483     -2.557600e+02 1.573200e+02
-0 1484     2.248700e+02 3.568300e+02
-1 1484     5.722900e+02 3.044600e+02
-2 1484     -4.556000e+01 1.257900e+02
-7 1484     1.292999e+01 4.509100e+02
-8 1484     3.813000e+01 9.217999e+01
-9 1484     -1.826900e+02 1.824300e+02
-11 1484     3.610800e+02 -3.840600e+02
-13 1484     3.849000e+02 6.259003e+01
-14 1484     5.566700e+02 -3.765300e+02
-0 1485     3.370800e+02 4.563200e+02
-1 1485     7.315601e+02 3.766700e+02
-2 1485     1.215997e+01 2.175600e+02
-5 1485     7.429700e+02 -1.876800e+02
-6 1485     -1.078900e+02 5.358800e+02
-7 1485     1.001200e+02 5.579100e+02
-8 1485     9.059998e+01 1.696700e+02
-9 1485     -1.398200e+02 2.630400e+02
-12 1485     5.471997e+01 5.053200e+02
-13 1485     4.587100e+02 1.540900e+02
-14 1485     6.459500e+02 -2.656200e+02
-0 1486     -9.206000e+01 -1.545200e+02
-1 1486     2.722998e+01 -9.320001e+01
-3 1486     3.384003e+01 -4.693900e+02
-7 1486     -1.504200e+02 -5.797998e+01
-15 1486     -1.384100e+02 -8.475000e+01
-0 1487     -1.111100e+02 7.931000e+01
-1 1487     9.671997e+01 1.337000e+02
-4 1487     -2.114200e+02 -3.161400e+02
-5 1487     4.526801e+02 -5.926600e+02
-6 1487     -2.601500e+02 4.233002e+01
-7 1487     -2.275000e+02 1.619000e+02
-8 1487     -2.538000e+01 -3.395001e+01
-9 1487     -1.801800e+02 8.213000e+01
-10 1487     -2.310800e+02 2.224300e+02
-12 1487     -2.175000e+02 9.757001e+01
-13 1487     2.315400e+02 -1.730000e+02
-15 1487     -1.915300e+02 2.295100e+02
-0 1488     -1.432300e+02 2.879300e+02
-1 1488     1.747800e+02 3.346700e+02
-13 1488     8.309003e+01 -2.090002e+01
-14 1488     1.765500e+02 -4.687900e+02
-0 1489     1.071000e+02 2.950700e+02
-1 1489     4.263900e+02 2.752600e+02
-2 1489     -1.271500e+02 6.312000e+01
-4 1489     -1.143400e+02 -4.217400e+02
-6 1489     -2.779300e+02 2.928700e+02
-9 1489     -2.473000e+02 1.257500e+02
-15 1489     9.103003e+01 5.555300e+02
-0 1490     2.308800e+02 3.663200e+02
-1 1490     5.827100e+02 3.126200e+02
-7 1490     1.628998e+01 4.600900e+02
-9 1490     -1.835000e+02 1.874700e+02
-14 1490     5.585500e+02 -3.677600e+02
-0 1491     -6.870001e+01 -1.079900e+02
-1 1491     6.592999e+01 -5.627002e+01
-2 1491     1.034300e+02 -1.195000e+02
-3 1491     2.313000e+01 -4.268500e+02
-4 1491     -3.389500e+02 -3.548300e+02
-6 1491     -8.178000e+01 -1.345100e+02
-7 1491     -1.376800e+02 -8.770020e+00
-10 1491     -1.615500e+02 8.880005e+00
-12 1491     -7.571002e+01 -7.952002e+01
-13 1491     3.199399e+02 -3.232800e+02
-15 1491     -1.123900e+02 -1.882001e+01
-0 1492     2.390699e+02 4.596800e+02
-1 1492     6.232700e+02 4.057200e+02
-6 1492     -2.107600e+02 5.187800e+02
-7 1492     8.130005e+00 5.508500e+02
-9 1492     -2.108600e+02 2.605900e+02
-11 1492     3.686000e+02 -2.894900e+02
-0 1493     2.322998e+01 -5.966998e+01
-1 1493     1.652700e+02 -3.595001e+01
-15 1493     4.489990e+00 5.928998e+01
-0 1494     -1.416200e+02 2.954500e+02
-1 1494     1.790400e+02 3.414600e+02
-7 1494     -3.367400e+02 3.419500e+02
-10 1494     -2.913000e+02 4.763200e+02
-13 1494     8.282001e+01 -1.403998e+01
-14 1494     1.765601e+02 -4.598400e+02
-0 1495     1.881000e+02 -8.642999e+01
-1 1495     3.179000e+02 -1.124800e+02
-2 1495     3.689800e+02 -1.900000e+01
-6 1495     1.998100e+02 -1.644000e+01
-0 1496     -3.546002e+01 -7.402002e+01
-1 1496     1.077900e+02 -3.301001e+01
-2 1496     1.264800e+02 -7.509003e+01
-3 1496     4.314001e+01 -3.829600e+02
-6 1496     -5.703003e+01 -8.378003e+01
-7 1496     -1.103900e+02 3.117999e+01
-8 1496     1.305100e+02 -1.078200e+02
-10 1496     -1.261300e+02 5.181000e+01
-12 1496     -4.675000e+01 -2.960999e+01
-13 1496     3.461700e+02 -2.907500e+02
-15 1496     -7.178998e+01 3.191998e+01
-0 1497     1.285100e+02 -1.042600e+02
-1 1497     2.531300e+02 -1.115800e+02
-3 1497     2.252200e+02 -3.529300e+02
-8 1497     2.901700e+02 -9.010999e+01
-0 1498     -5.092999e+01 -8.328003e+01
-1 1498     8.928003e+01 -3.712000e+01
-3 1498     3.320001e+01 -3.926700e+02
-6 1498     -6.809998e+01 -9.787000e+01
-7 1498     -1.234300e+02 2.014001e+01
-12 1498     -6.047998e+01 -4.284998e+01
-15 1498     -9.178003e+01 1.752002e+01
-0 1499     1.596100e+02 6.104999e+01
-1 1499     3.347400e+02 4.250000e+01
-6 1499     1.183100e+02 1.364600e+02
-15 1499     1.740000e+02 2.427400e+02
-0 1500     2.804200e+02 -2.851600e+02
-1 1500     3.569500e+02 -3.416500e+02
-2 1500     5.015100e+02 -2.365700e+02
-10 1500     2.594800e+02 -1.575900e+02
-15 1500     3.871300e+02 -2.129600e+02
-0 1501     6.468900e+02 6.530029e+00
-1 1501     8.805699e+02 -1.784300e+02
-6 1501     5.111600e+02 1.604600e+02
-7 1501     4.963000e+02 1.950000e+02
-10 1501     6.572200e+02 2.177300e+02
-15 1501     8.722700e+02 2.344800e+02
-0 1502     -1.376600e+02 9.789999e+01
-1 1502     8.312000e+01 1.573000e+02
-2 1502     -1.431600e+02 -1.000000e+01
-3 1502     -2.358400e+02 -3.296100e+02
-5 1502     4.018101e+02 -5.740699e+02
-6 1502     -3.254200e+02 4.597998e+01
-7 1502     -2.631200e+02 1.722700e+02
-9 1502     -2.361800e+02 6.791998e+01
-10 1502     -2.643300e+02 2.415100e+02
-13 1502     1.933800e+02 -1.619600e+02
-15 1502     -2.283300e+02 2.509400e+02
-0 1503     5.860200e+02 3.084003e+01
-1 1503     8.242800e+02 -1.333000e+02
-7 1503     4.328300e+02 2.064900e+02
-0 1504     5.530000e+02 1.283300e+02
-1 1504     8.206500e+02 -2.052002e+01
-2 1504     4.530800e+02 8.410999e+01
-7 1504     3.871400e+02 2.943400e+02
-9 1504     2.501700e+02 1.678000e+02
-10 1504     5.375000e+02 3.494900e+02
-13 1504     7.581300e+02 -9.115997e+01
-15 1504     7.266500e+02 3.907400e+02
-0 1505     5.398900e+02 9.248001e+01
-1 1505     7.959700e+02 -5.442999e+01
-10 1505     5.247000e+02 3.056900e+02
-13 1505     7.484301e+02 -1.248000e+02
-15 1505     7.125400e+02 3.380800e+02
-0 1506     1.479301e+02 -1.095200e+02
-1 1506     2.711000e+02 -1.228700e+02
-6 1506     1.663000e+02 -5.540002e+01
-15 1506     1.802900e+02 8.440002e+00
-0 1507     2.323900e+02 -3.687000e+01
-1 1507     3.783199e+02 -7.740002e+01
-7 1507     1.504900e+02 1.149400e+02
-10 1507     1.791200e+02 1.223000e+02
-15 1507     2.864100e+02 1.184300e+02
-0 1508     1.758199e+02 -9.300000e+01
-1 1508     3.034700e+02 -1.152800e+02
-7 1508     1.055700e+02 5.165997e+01
-15 1508     2.160500e+02 3.458002e+01
-0 1509     2.927700e+02 -1.174300e+02
-1 1509     4.175699e+02 -1.775100e+02
-7 1509     2.192900e+02 4.441998e+01
-13 1509     6.378101e+02 -3.023800e+02
-15 1509     3.805200e+02 1.679999e+01
-0 1510     2.768800e+02 -1.020300e+02
-1 1510     4.072800e+02 -1.574900e+02
-6 1510     2.819300e+02 -1.334003e+01
-7 1510     2.004200e+02 5.579999e+01
-10 1510     2.368700e+02 5.177002e+01
-15 1510     3.568800e+02 3.571002e+01
-0 1511     -6.879999e+01 -1.548100e+02
-1 1511     4.928998e+01 -1.006300e+02
-6 1511     -5.587000e+01 -1.840200e+02
-7 1511     -1.273200e+02 -5.409003e+01
-10 1511     -1.565800e+02 -4.575000e+01
-15 1511     -1.068600e+02 -8.213000e+01
-0 1512     4.131801e+02 -9.753003e+01
-1 1512     5.569100e+02 -1.994300e+02
-6 1512     3.954100e+02 2.238000e+01
-7 1512     3.230100e+02 7.801001e+01
-10 1512     3.944800e+02 7.156000e+01
-12 1512     4.423600e+02 5.272998e+01
-15 1512     5.475900e+02 5.989001e+01
-0 1513     1.985800e+02 -1.432100e+02
-1 1513     3.100100e+02 -1.719600e+02
-2 1513     4.023700e+02 -7.209998e+01
-4 1513     -4.106100e+02 -5.745900e+02
-7 1513     1.367000e+02 5.919983e+00
-10 1513     1.509500e+02 -3.789978e+00
-12 1513     2.520699e+02 -3.359003e+01
-13 1513     5.665900e+02 -3.301400e+02
-15 1513     2.535200e+02 -3.048999e+01
-0 1514     2.181500e+02 -1.259100e+02
-1 1514     3.369700e+02 -1.616200e+02
-10 1514     1.718300e+02 1.817999e+01
-15 1514     2.787300e+02 -4.359985e+00
-0 1515     1.149400e+02 -1.358900e+02
-1 1515     2.297200e+02 -1.381500e+02
-2 1515     3.204200e+02 -8.410999e+01
-7 1515     5.376001e+01 -1.510010e+00
-10 1515     5.359998e+01 -4.260010e+00
-13 1515     4.923101e+02 -3.302600e+02
-15 1515     1.387400e+02 -3.148999e+01
-0 1516     -1.678800e+02 -6.285999e+01
-1 1516     -8.780029e+00 1.566998e+01
-3 1516     -1.266000e+02 -4.325699e+02
-4 1516     -2.947700e+02 -2.802400e+02
-6 1516     -2.342800e+02 -1.280200e+02
-8 1516     -1.051001e+01 -1.414700e+02
-13 1516     2.163900e+02 -2.955700e+02
-15 1516     -2.511500e+02 2.881000e+01
-0 1517     3.440997e+01 -2.502100e+02
-1 1517     1.175400e+02 -2.239200e+02
-2 1517     2.850100e+02 -2.291000e+02
-3 1517     2.049399e+02 -5.272000e+02
-6 1517     9.889001e+01 -2.523600e+02
-7 1517     -5.489990e+00 -1.291500e+02
-8 1517     2.543300e+02 -2.394200e+02
-9 1517     1.408300e+02 -9.203998e+01
-10 1517     -2.635999e+01 -1.437600e+02
-12 1517     1.000500e+02 -2.080700e+02
-13 1517     4.357800e+02 -4.396200e+02
-15 1517     4.533002e+01 -1.964700e+02
-0 1518     -2.744000e+01 -7.517999e+01
-1 1518     1.146800e+02 -3.633002e+01
-6 1518     -4.685999e+01 -8.233002e+01
-7 1518     -1.021200e+02 3.156000e+01
-10 1518     -1.171800e+02 5.098999e+01
-12 1518     -3.570001e+01 -2.859003e+01
-13 1518     3.520000e+02 -2.912900e+02
-15 1518     -6.132001e+01 3.156000e+01
-0 1519     2.191400e+02 -1.156600e+02
-1 1519     3.420000e+02 -1.522200e+02
-3 1519     2.999900e+02 -3.517800e+02
-7 1519     1.498199e+02 3.476001e+01
-10 1519     1.716800e+02 3.033002e+01
-15 1519     2.788199e+02 9.570007e+00
-0 1520     5.469700e+02 1.663100e+02
-1 1520     8.260400e+02 2.146997e+01
-3 1520     2.981801e+02 -1.958400e+02
-7 1520     3.753199e+02 3.300800e+02
-10 1520     5.274301e+02 3.930200e+02
-15 1520     7.137800e+02 4.428500e+02
-0 1521     1.990400e+02 -2.086400e+02
-1 1521     2.891500e+02 -2.362600e+02
-7 1521     1.495100e+02 -5.782001e+01
-13 1521     5.780699e+02 -3.876300e+02
-15 1521     2.625699e+02 -1.189700e+02
-0 1522     -8.770001e+01 -1.222400e+02
-1 1522     4.457001e+01 -6.458002e+01
-7 1522     -1.544900e+02 -2.647998e+01
-15 1522     -1.355700e+02 -4.022998e+01
-0 1523     1.461300e+02 -1.473500e+02
-1 1523     2.556899e+02 -1.590400e+02
-7 1523     8.748999e+01 -6.719971e+00
-10 1523     9.096997e+01 -1.390002e+01
-15 1523     1.823101e+02 -4.287000e+01
-0 1524     1.401200e+02 -2.656500e+02
-1 1524     2.142300e+02 -2.731500e+02
-4 1524     -4.998800e+02 -5.249600e+02
-6 1524     2.177900e+02 -2.309000e+02
-7 1524     1.015300e+02 -1.252300e+02
-9 1524     2.318800e+02 -7.591998e+01
-10 1524     9.662000e+01 -1.507500e+02
-12 1524     2.269100e+02 -1.932100e+02
-15 1524     1.903600e+02 -2.041900e+02
-0 1525     2.913900e+02 -1.721800e+02
-1 1525     3.979100e+02 -2.318900e+02
-10 1525     2.605699e+02 -2.734003e+01
-0 1526     1.285100e+02 -1.042600e+02
-1 1526     2.531300e+02 -1.115800e+02
-3 1526     2.252200e+02 -3.529300e+02
-6 1526     1.450600e+02 -5.521997e+01
-8 1526     2.901700e+02 -9.010999e+01
-0 1527     1.832001e+01 -9.403998e+01
-1 1527     1.503000e+02 -6.716998e+01
-3 1527     1.128500e+02 -3.802000e+02
-7 1527     -5.059998e+01 2.173999e+01
-10 1527     -6.107001e+01 3.353998e+01
-13 1527     3.999700e+02 -3.031900e+02
-15 1527     2.739990e+00 1.209998e+01
-0 1528     -5.870001e+01 -6.023999e+01
-1 1528     8.991998e+01 -1.338000e+01
-7 1528     -1.373500e+02 3.994000e+01
-8 1528     1.035100e+02 -1.042800e+02
-13 1528     3.209100e+02 -2.820200e+02
-15 1528     -1.057200e+02 4.698999e+01
-0 1529     2.871997e+01 -7.631000e+01
-1 1529     1.654700e+02 -5.395001e+01
-7 1529     -4.260999e+01 4.189001e+01
-8 1529     1.959500e+02 -8.832001e+01
-10 1529     -5.263000e+01 5.546002e+01
-13 1529     4.076899e+02 -2.856100e+02
-15 1529     1.432001e+01 3.740002e+01
-0 1530     3.488000e+02 -3.338900e+02
-1 1530     4.149800e+02 -4.149200e+02
-2 1530     5.651300e+02 -2.901200e+02
-3 1530     4.715800e+02 -5.839301e+02
-8 1530     4.983199e+02 -2.863600e+02
-9 1530     3.677900e+02 -1.338400e+02
-12 1530     4.478000e+02 -2.350800e+02
-0 1531     4.594000e+01 -1.329400e+02
-1 1531     1.631300e+02 -1.135900e+02
-2 1531     2.545000e+02 -9.578998e+01
-3 1531     1.675300e+02 -3.985300e+02
-7 1531     -1.392999e+01 -1.006000e+01
-10 1531     -2.545001e+01 -8.630005e+00
-15 1531     4.437000e+01 -3.677002e+01
-0 1532     -5.309003e+01 -5.527002e+01
-1 1532     9.814001e+01 -1.038000e+01
-3 1532     7.409973e+00 -3.762700e+02
-6 1532     -8.957001e+01 -7.128003e+01
-7 1532     -1.337500e+02 4.547998e+01
-10 1532     -1.492800e+02 7.148999e+01
-12 1532     -7.696002e+01 -1.597998e+01
-13 1532     3.238199e+02 -2.765600e+02
-15 1532     -9.812000e+01 5.503998e+01
-0 1533     2.964001e+01 -1.329999e+01
-1 1533     1.832800e+02 7.979980e+00
-7 1533     -5.152002e+01 1.055900e+02
-0 1534     5.528000e+02 2.237900e+02
-1 1534     8.505800e+02 8.076999e+01
-3 1534     2.907700e+02 -1.372500e+02
-7 1534     3.744500e+02 3.870900e+02
-8 1534     4.120300e+02 1.216700e+02
-9 1534     2.267200e+02 2.484400e+02
-10 1534     5.299301e+02 4.620000e+02
-11 1534     6.844800e+02 -5.002900e+02
-15 1534     7.152200e+02 5.250300e+02
-0 1535     1.992000e+02 -3.950012e+00
-1 1535     3.536801e+02 -3.389001e+01
-2 1535     3.497700e+02 6.740997e+01
-3 1535     2.459100e+02 -2.407800e+02
-6 1535     1.849200e+02 7.783002e+01
-7 1535     1.139200e+02 1.433100e+02
-8 1535     3.200100e+02 7.119995e+00
-10 1535     1.381700e+02 1.572900e+02
-12 1535     2.094800e+02 1.249700e+02
-13 1535     5.484200e+02 -2.080700e+02
-15 1535     2.368900e+02 1.592200e+02
-0 1536     -3.940002e+01 -3.296997e+01
-1 1536     1.169800e+02 7.619995e+00
-2 1536     1.040500e+02 -3.397998e+01
-6 1536     -7.857001e+01 -3.812000e+01
-7 1536     -1.215000e+02 7.188000e+01
-10 1536     -1.351100e+02 9.913000e+01
-12 1536     -6.516998e+01 1.744000e+01
-15 1536     -8.264001e+01 8.706000e+01
-0 1537     2.170001e+01 5.349976e+00
-1 1537     1.829800e+02 2.789001e+01
-2 1537     1.683700e+02 3.539001e+01
-7 1537     -6.389001e+01 1.224600e+02
-13 1537     3.920601e+02 -2.148300e+02
-15 1537     -6.260010e+00 1.478300e+02
-0 1538     2.149800e+02 -5.028003e+01
-1 1538     3.559200e+02 -8.491998e+01
-6 1538     2.145200e+02 3.146997e+01
-7 1538     1.360000e+02 9.967999e+01
-8 1538     3.437300e+02 -2.988000e+01
-10 1538     1.600900e+02 1.049600e+02
-15 1538     2.638199e+02 9.792001e+01
-0 1539     5.599399e+02 2.244500e+02
-1 1539     8.583199e+02 7.985001e+01
-2 1539     4.361700e+02 1.856800e+02
-3 1539     2.982500e+02 -1.332400e+02
-7 1539     3.812300e+02 3.893300e+02
-11 1539     6.918900e+02 -5.006300e+02
-15 1539     7.250699e+02 5.274900e+02
-0 1540     5.981899e+02 1.463500e+02
-1 1540     8.736899e+02 -1.496997e+01
-2 1540     4.988800e+02 1.253700e+02
-6 1540     4.138000e+02 2.981900e+02
-7 1540     4.297400e+02 3.206000e+02
-8 1540     4.691600e+02 7.426001e+01
-9 1540     2.878400e+02 2.041700e+02
-15 1540     7.875699e+02 4.230200e+02
-0 1541     6.451400e+02 -3.159973e+00
-1 1541     8.759100e+02 -1.885400e+02
-2 1541     5.920699e+02 -3.450012e+00
-15 1541     8.711000e+02 2.208400e+02
-0 1542     6.510699e+02 -4.563000e+01
-1 1542     8.685400e+02 -2.354000e+02
-2 1542     6.112000e+02 -4.425000e+01
-3 1542     4.803700e+02 -3.487500e+02
-7 1542     5.072800e+02 1.456600e+02
-0 1543     2.248400e+02 3.482600e+02
-1 1543     5.689301e+02 2.960700e+02
-2 1543     -4.060999e+01 1.191800e+02
-6 1543     -1.751700e+02 3.840800e+02
-7 1543     1.417999e+01 4.422000e+02
-11 1543     3.620900e+02 -3.920400e+02
-14 1543     5.585400e+02 -3.869900e+02
-0 1544     1.643900e+02 -5.173500e+02
-1 1544     1.679100e+02 -5.271300e+02
-10 1544     1.505500e+02 -4.351300e+02
-0 1545     -3.920001e+01 -2.059900e+02
-1 1545     5.690997e+01 -1.574200e+02
-2 1545     2.057600e+02 -1.861200e+02
-3 1545     1.294700e+02 -4.864301e+02
-4 1545     -4.145400e+02 -3.824900e+02
-6 1545     1.373999e+01 -2.217700e+02
-8 1545     1.873400e+02 -2.047300e+02
-10 1545     -1.159400e+02 -1.017500e+02
-12 1545     6.969971e+00 -1.717800e+02
-15 1545     -6.112000e+01 -1.469600e+02
-0 1546     2.937000e+02 -1.533800e+02
-1 1546     4.076801e+02 -2.137700e+02
-6 1546     3.192200e+02 -6.365997e+01
-7 1546     2.261600e+02 8.409973e+00
-8 1546     4.245800e+02 -1.152800e+02
-10 1546     2.616400e+02 -5.130005e+00
-13 1546     6.431000e+02 -3.350100e+02
-15 1546     3.865800e+02 -3.256000e+01
-0 1547     -2.694000e+01 -6.789001e+01
-1 1547     1.179400e+02 -2.978998e+01
-3 1547     4.684003e+01 -3.749100e+02
-6 1547     -5.090002e+01 -7.253998e+01
-7 1547     -1.028100e+02 3.890997e+01
-8 1547     1.355800e+02 -1.007600e+02
-10 1547     -1.176500e+02 6.001001e+01
-12 1547     -3.890002e+01 -1.878998e+01
-13 1547     3.514100e+02 -2.847600e+02
-15 1547     -6.138000e+01 4.151001e+01
-0 1548     2.369000e+02 -2.104100e+02
-1 1548     3.260500e+02 -2.505800e+02
-2 1548     4.697100e+02 -1.289700e+02
-3 1548     3.729800e+02 -4.250400e+02
-7 1548     1.868199e+02 -5.345001e+01
-10 1548     2.015100e+02 -7.737000e+01
-15 1548     3.144200e+02 -1.171100e+02
-0 1549     -6.400000e+01 -3.469000e+01
-1 1549     9.621997e+01 1.119000e+01
-10 1549     -1.627900e+02 9.328998e+01
-13 1549     3.082800e+02 -2.604900e+02
-15 1549     -1.146200e+02 8.062000e+01
-0 1550     2.312600e+02 7.885999e+01
-1 1550     4.164700e+02 3.771997e+01
-6 1550     1.744700e+02 1.726100e+02
-12 1550     2.083600e+02 2.184200e+02
-13 1550     5.562700e+02 -1.368800e+02
-15 1550     2.709301e+02 2.772900e+02
-0 1551     1.883400e+02 7.246997e+01
-1 1551     3.684700e+02 4.503998e+01
-13 1551     5.252800e+02 -1.452100e+02
-15 1551     2.123700e+02 2.622400e+02
-0 1552     1.619500e+02 7.865997e+01
-1 1552     3.437300e+02 5.877002e+01
-2 1552     2.770699e+02 1.327900e+02
-4 1552     -2.393000e+02 -5.403600e+02
-6 1552     1.107000e+02 1.548300e+02
-8 1552     2.624100e+02 6.289999e+01
-9 1552     1.158900e+02 2.052700e+02
-10 1552     8.534003e+01 2.504700e+02
-12 1552     1.382400e+02 2.040500e+02
-13 1552     5.017600e+02 -1.412900e+02
-15 1552     1.750100e+02 2.669200e+02
-0 1553     9.979980e+00 1.234800e+02
-1 1553     2.132700e+02 1.458000e+02
-2 1553     8.996997e+01 1.254500e+02
-3 1553     -1.099854e-01 -1.932200e+02
-4 1553     -1.921700e+02 -4.170800e+02
-5 1553     6.216700e+02 -5.326000e+02
-6 1553     -8.798999e+01 1.514700e+02
-7 1553     -1.019000e+02 2.337400e+02
-8 1553     1.108400e+02 5.931000e+01
-12 1553     -6.034003e+01 2.054200e+02
-13 1553     3.564800e+02 -1.187600e+02
-15 1553     -3.617999e+01 3.071900e+02
-0 1554     2.192000e+02 4.312500e+02
-1 1554     5.933600e+02 3.821600e+02
-7 1554     -7.739990e+00 5.206500e+02
-11 1554     3.524301e+02 -3.159600e+02
-14 1554     5.298800e+02 -2.991600e+02
-0 1555     7.971002e+01 5.098200e+02
-1 1555     4.644000e+02 4.997000e+02
-7 1555     -1.505900e+02 5.864500e+02
-0 1556     5.476000e+02 5.669983e+00
-1 1556     7.767200e+02 -1.477700e+02
-7 1556     3.980900e+02 1.739600e+02
-0 1557     5.538900e+02 -2.020020e+00
-1 1557     7.809900e+02 -1.576700e+02
-7 1557     4.055601e+02 1.677700e+02
-10 1557     5.491400e+02 1.976000e+02
-13 1557     7.740200e+02 -2.083600e+02
-0 1558     -7.835200e+02 -4.747000e+02
-1 1558     -6.539200e+02 -1.837500e+02
-4 1558     -4.844500e+02 1.621800e+02
-0 1559     -1.329600e+02 3.421400e+02
-1 1559     2.017900e+02 3.848300e+02
-2 1559     -4.076000e+02 6.815997e+01
-5 1559     2.642200e+02 -3.211400e+02
-7 1559     -3.370600e+02 3.901200e+02
-9 1559     -4.902400e+02 1.180600e+02
-14 1559     1.807300e+02 -4.080500e+02
-0 1560     -1.351000e+02 2.810500e+02
-1 1560     1.793800e+02 3.260900e+02
-7 1560     -3.265100e+02 3.300000e+02
-11 1560     2.895001e+01 -4.635000e+02
-0 1561     -1.396900e+02 -1.045900e+02
-1 1561     1.760010e+00 -3.215997e+01
-7 1561     -2.121400e+02 -1.912000e+01
-15 1561     -2.085000e+02 -2.378998e+01
-0 1562     -1.020700e+02 2.902500e+02
-1 1562     2.156200e+02 3.263300e+02
-2 1562     -3.523400e+02 2.284003e+01
-7 1562     -2.964700e+02 3.432000e+02
-9 1562     -4.381700e+02 8.114999e+01
-10 1562     -2.444600e+02 4.747400e+02
-13 1562     1.190000e+02 -1.521002e+01
-14 1562     2.213600e+02 -4.633700e+02
-0 1563     6.582001e+01 3.704400e+02
-1 1563     4.128199e+02 3.605900e+02
-7 1563     -1.462100e+02 4.424100e+02
-0 1564     4.066500e+02 -5.597998e+01
-1 1564     5.679700e+02 -1.559700e+02
-7 1564     3.062500e+02 1.145800e+02
-10 1564     3.822200e+02 1.185600e+02
-15 1564     5.337700e+02 1.157500e+02
-0 1565     7.267200e+02 -3.495300e+02
-1 1565     8.329301e+02 -5.799399e+02
-7 1565     6.372300e+02 -1.177500e+02
-12 1565     8.159700e+02 -1.609200e+02
-0 1566     1.400300e+02 5.453998e+01
-1 1566     3.132500e+02 4.234003e+01
-6 1566     1.020700e+02 1.226600e+02
-7 1566     4.595001e+01 1.918500e+02
-13 1566     4.897000e+02 -1.631600e+02
-15 1566     1.483101e+02 2.315700e+02
-0 1567     2.125300e+02 -2.050200e+02
-1 1567     3.042000e+02 -2.374900e+02
-7 1567     1.614900e+02 -5.208002e+01
-10 1567     1.733100e+02 -7.317999e+01
-15 1567     2.808101e+02 -1.126600e+02
-0 1568     1.279999e+01 -1.310700e+02
-1 1568     1.318200e+02 -1.017500e+02
-7 1568     -4.765002e+01 -1.409003e+01
-15 1568     -5.200195e-01 -3.865002e+01
-0 1569     3.296700e+02 4.448300e+02
-1 1569     7.201899e+02 3.666700e+02
-6 1569     -1.129800e+02 5.199600e+02
-7 1569     9.446997e+01 5.460000e+02
-14 1569     6.398500e+02 -2.786300e+02
-0 1570     5.004999e+01 -1.349200e+02
-1 1570     1.661899e+02 -1.168600e+02
-7 1570     -9.549988e+00 -1.146997e+01
-15 1570     5.040002e+01 -3.921002e+01
-0 1571     5.114301e+02 2.656300e+02
-1 1571     8.342700e+02 1.335600e+02
-7 1571     3.157600e+02 4.118700e+02
-0 1572     1.783199e+02 4.612000e+01
-1 1572     3.486100e+02 2.207001e+01
-2 1572     3.096899e+02 1.094700e+02
-7 1572     8.458002e+01 1.885800e+02
-10 1572     1.086300e+02 2.131300e+02
-13 1572     5.229900e+02 -1.676000e+02
-15 1572     2.017400e+02 2.247800e+02
-0 1573     -1.304900e+02 3.320100e+02
-1 1573     2.015300e+02 3.739100e+02
-9 1573     -4.863200e+02 1.073500e+02
-11 1573     3.325000e+01 -4.160600e+02
-0 1574     -1.991500e+02 4.754000e+02
-1 1574     1.661200e+02 5.338700e+02
-7 1574     -4.211700e+02 5.216700e+02
-0 1575     -4.563000e+01 4.858700e+02
-1 1575     3.259301e+02 5.062000e+02
-7 1575     -2.698300e+02 5.487000e+02
-0 1576     4.422998e+01 -1.178100e+02
-1 1576     1.676801e+02 -9.878003e+01
-7 1576     -1.996002e+01 3.890015e+00
-10 1576     -2.977002e+01 9.320007e+00
-12 1576     6.746002e+01 -5.064001e+01
-0 1577     2.655400e+02 -2.946100e+02
-1 1577     3.385699e+02 -3.464000e+02
-7 1577     2.198600e+02 -1.365700e+02
-10 1577     2.430900e+02 -1.703400e+02
-13 1577     6.328700e+02 -4.689000e+02
-0 1578     -1.286600e+02 3.400000e+02
-1 1578     2.036000e+02 3.810200e+02
-2 1578     -4.031700e+02 6.522998e+01
-8 1578     -2.506900e+02 4.372000e+01
-9 1578     -4.861900e+02 1.157300e+02
-13 1578     8.828998e+01 2.500000e+01
-0 1579     5.072998e+01 -4.587000e+01
-1 1579     1.945200e+02 -3.053003e+01
-2 1579     2.231000e+02 -6.609985e+00
-3 1579     1.326100e+02 -3.137800e+02
-7 1579     -2.465997e+01 7.678998e+01
-10 1579     -2.971997e+01 9.265002e+01
-13 1579     4.260601e+02 -2.566500e+02
-15 1579     3.981000e+01 8.150000e+01
-0 1580     -7.340997e+01 -6.217999e+01
-1 1580     7.590997e+01 -1.070001e+01
-7 1580     -1.521000e+02 3.608002e+01
-10 1580     -1.720400e+02 6.134998e+01
-15 1580     -1.247200e+02 4.257001e+01
-0 1581     1.997600e+02 -2.460600e+02
-1 1581     2.780300e+02 -2.735700e+02
-2 1581     4.506500e+02 -1.715600e+02
-7 1581     1.577300e+02 -9.404999e+01
-8 1581     3.959100e+02 -1.940700e+02
-9 1581     2.736100e+02 -3.862000e+01
-12 1581     2.891500e+02 -1.492600e+02
-0 1582     1.874500e+02 5.700073e-01
-1 1582     3.432300e+02 -2.575000e+01
-7 1582     1.019700e+02 1.457600e+02
-13 1582     5.380699e+02 -2.052500e+02
-15 1582     2.197500e+02 1.638400e+02
-0 1583     -1.517700e+02 3.691800e+02
-1 1583     1.892200e+02 4.162900e+02
-2 1583     -4.275800e+02 1.016300e+02
-5 1583     2.471801e+02 -2.916000e+02
-7 1583     -3.594500e+02 4.158600e+02
-10 1583     -3.125600e+02 5.648100e+02
-14 1583     1.629399e+02 -3.787600e+02
-0 1584     2.517000e+02 4.643600e+02
-1 1584     6.383101e+02 4.078700e+02
-7 1584     1.864001e+01 5.576700e+02
-0 1585     3.297000e+02 -9.410999e+01
-1 1585     4.651100e+02 -1.670000e+02
-7 1585     2.479700e+02 7.150000e+01
-10 1585     2.971300e+02 6.653998e+01
-15 1585     4.292300e+02 5.328003e+01
-0 1586     -1.027700e+02 3.830800e+02
-1 1586     2.419200e+02 4.176200e+02
-5 1586     2.975300e+02 -2.759500e+02
-7 1586     -3.127300e+02 4.358400e+02
-0 1587     -1.805100e+02 5.046400e+02
-1 1587     1.924600e+02 5.580500e+02
-2 1587     -4.635700e+02 2.653000e+02
-7 1587     -4.062300e+02 5.541700e+02
-12 1587     -5.038600e+02 4.887900e+02
-0 1588     -2.153600e+02 4.951600e+02
-1 1588     1.553800e+02 5.569300e+02
-7 1588     -4.400300e+02 5.407800e+02
-0 1589     -2.348999e+01 1.365002e+01
-1 1589     1.448500e+02 4.844000e+01
-6 1589     -7.506000e+01 2.167999e+01
-7 1589     -1.137600e+02 1.212100e+02
-10 1589     -1.224200e+02 1.545400e+02
-13 1589     3.464000e+02 -2.131400e+02
-15 1589     -6.847998e+01 1.525600e+02
-0 1590     1.426100e+02 4.696800e+02
-1 1590     5.203101e+02 4.419400e+02
-7 1590     -8.520001e+01 5.516700e+02
-0 1591     -3.921997e+01 5.119400e+02
-1 1591     3.376899e+02 5.316800e+02
-7 1591     -2.674000e+02 5.764800e+02
-0 1592     2.308800e+02 3.663200e+02
-1 1592     5.827100e+02 3.126200e+02
-7 1592     1.628998e+01 4.600900e+02
-0 1593     -2.079500e+02 5.040800e+02
-1 1593     1.648500e+02 5.643700e+02
-3 1593     -6.169900e+02 -6.316998e+01
-5 1593     2.019600e+02 -1.461400e+02
-7 1593     -4.339300e+02 5.513800e+02
-11 1593     -3.672998e+01 -2.645800e+02
-0 1594     2.819800e+02 -2.878700e+02
-1 1594     3.576200e+02 -3.448600e+02
-7 1594     2.336700e+02 -1.267900e+02
-10 1594     2.613400e+02 -1.604500e+02
-15 1594     3.895800e+02 -2.165500e+02
-0 1595     7.330200e+02 -3.359400e+02
-1 1595     8.460000e+02 -5.682500e+02
-7 1595     6.392500e+02 -1.045900e+02
-0 1596     1.504500e+02 4.714700e+02
-1 1596     5.294600e+02 4.417900e+02
-7 1596     -7.791998e+01 5.544500e+02
-0 1597     2.155300e+02 1.581700e+02
-1 1597     4.352000e+02 1.205400e+02
-7 1597     9.051001e+01 2.958600e+02
-10 1597     1.405500e+02 3.475600e+02
-15 1597     2.421500e+02 3.838400e+02
-0 1598     4.930699e+02 2.901300e+02
-1 1598     8.230000e+02 1.645200e+02
-6 1598     2.055100e+02 4.084700e+02
-7 1598     2.946899e+02 4.328900e+02
-8 1598     3.123900e+02 1.237200e+02
-11 1598     6.192800e+02 -4.353500e+02
-13 1598     6.594000e+02 3.597998e+01
-0 1599     2.893000e+02 -1.844300e+02
-1 1599     3.905300e+02 -2.431300e+02
-7 1599     2.292800e+02 -2.054999e+01
-10 1599     2.596700e+02 -4.184998e+01
-0 1600     7.903998e+01 -1.553600e+02
-1 1600     1.874399e+02 -1.456000e+02
-7 1600     2.320001e+01 -2.598999e+01
-10 1600     1.457001e+01 -3.022998e+01
-15 1600     9.216998e+01 -6.262000e+01
-0 1601     2.247700e+02 -7.954999e+01
-1 1601     3.577000e+02 -1.176300e+02
-7 1601     1.498900e+02 7.177002e+01
-15 1601     2.815900e+02 5.944000e+01
-0 1602     -3.023999e+01 -9.801001e+01
-1 1602     1.032700e+02 -5.726001e+01
-3 1602     6.665997e+01 -3.959800e+02
-7 1602     -9.884003e+01 9.559998e+00
-8 1602     1.481900e+02 -1.217700e+02
-15 1602     -6.215997e+01 4.600220e-01
-0 1603     3.721700e+02 1.706000e+01
-1 1603     5.579399e+02 -7.121997e+01
-7 1603     2.593700e+02 1.782200e+02
-0 1604     -6.478003e+01 -1.467900e+02
-1 1604     5.640997e+01 -9.420001e+01
-6 1604     -5.652002e+01 -1.743600e+02
-7 1604     -1.251800e+02 -4.559998e+01
-12 1604     -5.496997e+01 -1.205100e+02
-0 1605     3.247600e+02 -7.882001e+01
-1 1605     4.666600e+02 -1.501900e+02
-7 1605     2.398101e+02 8.470999e+01
-10 1605     2.902200e+02 8.373999e+01
-15 1605     4.209800e+02 7.376001e+01
-0 1606     1.966400e+02 4.289300e+02
-1 1606     5.680800e+02 3.853700e+02
-5 1606     5.998400e+02 -2.222200e+02
-7 1606     -2.876001e+01 5.159900e+02
-14 1606     5.076899e+02 -3.027500e+02
-0 1607     2.041998e+01 4.866300e+02
-1 1607     3.948199e+02 4.903500e+02
-4 1607     5.710022e+00 -3.715500e+02
-7 1607     -2.052500e+02 5.562400e+02
-11 1607     1.660200e+02 -2.746500e+02
-13 1607     2.063700e+02 1.595600e+02
-0 1608     -1.838300e+02 4.253100e+02
-1 1608     1.700500e+02 4.807700e+02
-2 1608     -4.626400e+02 1.707300e+02
-7 1608     -3.993600e+02 4.715100e+02
-11 1608     -1.585999e+01 -3.321500e+02
-0 1609     -1.484400e+02 3.554800e+02
-1 1609     1.886899e+02 4.020800e+02
-7 1609     -3.544600e+02 4.020100e+02
-0 1610     3.070601e+02 -2.515800e+02
-1 1610     3.926400e+02 -3.172500e+02
-7 1610     2.526700e+02 -8.694000e+01
-10 1610     2.860900e+02 -1.172300e+02
-12 1610     3.898600e+02 -1.409100e+02
-15 1610     4.187700e+02 -1.640700e+02
-0 1611     -8.640997e+01 2.255600e+02
-1 1611     2.073700e+02 2.598300e+02
-7 1611     -2.646500e+02 2.839400e+02
-0 1612     4.509301e+02 3.007600e+02
-1 1612     7.822100e+02 1.872800e+02
-6 1612     1.469800e+02 4.053700e+02
-7 1612     2.503400e+02 4.352200e+02
-14 1612     8.519100e+02 -4.165700e+02
-0 1613     -1.214200e+02 1.988700e+02
-1 1613     1.632200e+02 2.435000e+02
-7 1613     -2.935800e+02 2.530400e+02
-0 1614     -6.460022e+00 -1.241800e+02
-1 1614     1.157100e+02 -8.908002e+01
-2 1614     1.942900e+02 -1.023500e+02
-6 1614     9.400024e+00 -1.232700e+02
-7 1614     -6.841998e+01 -1.089001e+01
-8 1614     1.836500e+02 -1.336100e+02
-10 1614     -8.753998e+01 -3.789978e+00
-12 1614     1.273999e+01 -7.194000e+01
-15 1614     -2.726001e+01 -3.217999e+01
-0 1615     1.300049e-01 -8.644000e+01
-1 1615     1.366600e+02 -5.557001e+01
-2 1615     1.730600e+02 -7.401001e+01
-7 1615     -7.139001e+01 2.559003e+01
-10 1615     -8.417999e+01 4.110999e+01
-13 1615     3.801300e+02 -2.981000e+02
-15 1615     -2.252002e+01 1.984998e+01
-0 1616     -2.347100e+02 4.652800e+02
-1 1616     1.285200e+02 5.321300e+02
-2 1616     -5.155800e+02 2.193100e+02
-7 1616     -4.557400e+02 5.073600e+02
-0 1617     1.642400e+02 -1.268000e+02
-1 1617     2.822500e+02 -1.451200e+02
-7 1617     9.960999e+01 1.560999e+01
-10 1617     1.097700e+02 1.176001e+01
-15 1617     2.051200e+02 -1.284998e+01
-0 1618     -3.741500e+02 3.012600e+02
-1 1618     -4.646997e+01 4.062500e+02
-7 1618     -5.756000e+02 3.172600e+02
-10 1618     -5.722100e+02 4.617400e+02
-15 1618     -5.741700e+02 4.986300e+02
-0 1619     -4.398500e+02 3.730000e+02
-1 1619     -9.379999e+01 4.915600e+02
-7 1619     -6.539200e+02 3.865800e+02
-0 1620     1.732400e+02 -1.361400e+02
-1 1620     2.875100e+02 -1.570700e+02
-7 1620     1.105900e+02 8.210022e+00
-10 1620     1.213600e+02 1.530029e+00
-0 1621     3.204900e+02 -1.081700e+02
-1 1621     4.497700e+02 -1.779500e+02
-7 1621     2.431899e+02 5.687000e+01
-10 1621     2.879500e+02 4.945001e+01
-13 1621     6.583400e+02 -2.925100e+02
-15 1621     4.181600e+02 3.323999e+01
-0 1622     3.398400e+02 -1.708700e+02
-1 1622     4.485500e+02 -2.468100e+02
-7 1622     2.732500e+02 7.600098e-01
-13 1622     6.870800e+02 -3.450100e+02
-15 1622     4.528700e+02 -4.919000e+01
-0 1623     -1.049700e+02 -1.465400e+02
-1 1623     1.809998e+01 -8.188000e+01
-6 1623     -1.009300e+02 -1.882100e+02
-7 1623     -1.658500e+02 -5.248999e+01
-10 1623     -1.994100e+02 -4.010999e+01
-12 1623     -1.024800e+02 -1.321600e+02
-15 1623     -1.566900e+02 -7.563000e+01
-0 1624     2.812500e+02 2.976100e+02
-1 1624     6.085900e+02 2.294200e+02
-6 1624     -7.671997e+01 3.439100e+02
-7 1624     8.045001e+01 4.030700e+02
-0 1625     -9.351001e+01 4.989900e+02
-1 1625     2.796400e+02 5.315500e+02
-7 1625     -3.184200e+02 5.576100e+02
-0 1626     3.615900e+02 -2.313000e+01
-1 1626     5.291700e+02 -1.075600e+02
-7 1626     2.602200e+02 1.405800e+02
-10 1626     3.276801e+02 1.520200e+02
-12 1626     3.608600e+02 1.178900e+02
-13 1626     6.659301e+02 -2.210600e+02
-15 1626     4.668900e+02 1.545200e+02
-0 1627     2.477400e+02 4.607000e+02
-1 1627     6.329200e+02 4.051200e+02
-2 1627     -6.528998e+01 2.197800e+02
-5 1627     6.510900e+02 -1.859500e+02
-6 1627     -2.021800e+02 5.230300e+02
-7 1627     1.554999e+01 5.533800e+02
-8 1627     2.619000e+01 1.695100e+02
-9 1627     -2.051800e+02 2.623800e+02
-11 1627     3.758101e+02 -2.883300e+02
-12 1627     -3.654999e+01 4.980200e+02
-14 1627     5.566300e+02 -2.660100e+02
-0 1628     -1.524100e+02 -1.844000e+01
-1 1628     2.421997e+01 5.202002e+01
-6 1628     -2.517500e+02 -7.760999e+01
-7 1628     -2.480900e+02 6.001001e+01
-10 1628     -2.684900e+02 1.039900e+02
-15 1628     -2.350100e+02 9.114001e+01
-0 1629     1.309000e+02 4.706400e+02
-1 1629     5.079600e+02 4.461200e+02
-7 1629     -9.751001e+01 5.512600e+02
-0 1630     -3.097998e+01 5.064700e+02
-1 1630     3.464200e+02 5.235100e+02
-2 1630     -3.206500e+02 2.677400e+02
-6 1630     -5.153300e+02 5.237300e+02
-7 1630     -2.580700e+02 5.715600e+02
-0 1631     1.081800e+02 4.441900e+02
-1 1631     4.768400e+02 4.246400e+02
-7 1631     -1.148500e+02 5.221800e+02
-0 1632     -6.034998e+01 -1.425300e+02
-1 1632     6.220001e+01 -9.162000e+01
-7 1632     -1.218700e+02 -4.108002e+01
-10 1632     -1.482800e+02 -3.064001e+01
-15 1632     -9.677002e+01 -6.428003e+01
-0 1633     -5.640002e+01 -1.245300e+02
-1 1633     7.233002e+01 -7.545001e+01
-7 1633     -1.216700e+02 -2.340997e+01
-10 1633     -1.453200e+02 -9.429993e+00
-15 1633     -9.346002e+01 -3.946997e+01
-0 1634     3.089000e+02 2.220200e+02
-1 1634     6.072200e+02 1.456500e+02
-7 1634     1.242400e+02 3.373300e+02
-0 1635     -6.122998e+01 -1.301400e+02
-1 1635     6.616998e+01 -7.925000e+01
-2 1635     1.205700e+02 -1.413200e+02
-7 1635     -1.267700e+02 -2.966998e+01
-0 1636     2.158002e+01 7.165002e+01
-1 1636     2.048800e+02 9.242001e+01
-7 1636     -7.717999e+01 1.869400e+02
-15 1636     -1.484998e+01 2.375100e+02
-0 1637     3.331600e+02 -1.785600e+02
-1 1637     4.383800e+02 -2.519600e+02
-6 1637     3.707100e+02 -7.565997e+01
-7 1637     2.690100e+02 -8.090027e+00
-12 1637     4.024600e+02 -4.251001e+01
-15 1637     4.440900e+02 -6.121997e+01
-0 1638     -2.495200e+02 4.138300e+02
-1 1638     1.016400e+02 4.853200e+02
-7 1638     -4.638200e+02 4.516500e+02
-10 1638     -4.366200e+02 6.109300e+02
-11 1638     -7.464001e+01 -3.424400e+02
-0 1639     -3.600000e+01 5.080500e+02
-1 1639     3.412600e+02 5.265900e+02
-7 1639     -2.630200e+02 5.726600e+02
-11 1639     1.144900e+02 -2.575100e+02
-0 1640     -2.178500e+02 4.257700e+02
-1 1640     1.362700e+02 4.891100e+02
-2 1640     -4.974000e+02 1.699200e+02
-7 1640     -4.330800e+02 4.678900e+02
-14 1640     1.009000e+02 -3.184100e+02
-0 1641     -2.453000e+02 3.166000e+02
-1 1641     8.356000e+01 3.890700e+02
-7 1641     -4.465700e+02 3.501700e+02
-0 1642     4.923600e+02 2.779700e+02
-1 1642     8.184399e+02 1.518900e+02
-7 1642     2.955200e+02 4.207100e+02
-10 1642     4.549800e+02 5.203700e+02
-0 1643     -2.471700e+02 3.109100e+02
-1 1643     8.040002e+01 3.837800e+02
-7 1643     -4.474100e+02 3.429300e+02
-11 1643     -7.365997e+01 -4.349800e+02
-0 1644     -2.221900e+02 4.834700e+02
-1 1644     1.454100e+02 5.472000e+02
-2 1644     -5.036600e+02 2.410200e+02
-7 1644     -4.456600e+02 5.278400e+02
-11 1644     -4.962000e+01 -2.822400e+02
-12 1644     -5.475500e+02 4.582300e+02
-0 1645     -2.824000e+02 3.455800e+02
-1 1645     5.322998e+01 4.265400e+02
-7 1645     -4.875500e+02 3.763100e+02
-0 1646     4.103000e+02 -1.383002e+01
-1 1646     5.901200e+02 -1.153300e+02
-7 1646     2.990699e+02 1.532100e+02
-0 1647     -2.218700e+02 4.947300e+02
-1 1647     1.482600e+02 5.581200e+02
-2 1647     -5.042500e+02 2.538200e+02
-7 1647     -4.466800e+02 5.398700e+02
-0 1648     4.871300e+02 3.460300e+02
-1 1648     8.346400e+02 2.256200e+02
-3 1648     1.391700e+02 -9.700000e+01
-6 1648     1.834700e+02 4.702200e+02
-7 1648     2.809700e+02 4.863100e+02
-12 1648     2.942700e+02 4.635900e+02
-13 1648     6.479000e+02 8.285999e+01
-0 1649     5.541500e+02 3.502002e+01
-1 1649     7.925500e+02 -1.189200e+02
-6 1649     3.876900e+02 1.546600e+02
-7 1649     4.005601e+02 2.037400e+02
-15 1649     7.388700e+02 2.605400e+02
-0 1650     5.538900e+02 -2.020020e+00
-1 1650     7.809900e+02 -1.576700e+02
-7 1650     4.055601e+02 1.677700e+02
-0 1651     1.603199e+02 1.140002e+01
-1 1651     3.188600e+02 -6.710022e+00
-7 1651     7.360999e+01 1.522500e+02
-15 1651     1.811300e+02 1.745600e+02
-0 1652     1.842500e+02 -1.140002e+01
-1 1652     3.360400e+02 -3.702002e+01
-7 1652     1.008100e+02 1.335600e+02
-10 1652     1.209200e+02 1.467700e+02
-15 1652     2.166200e+02 1.469300e+02
-0 1653     2.668300e+02 -1.996300e+02
-1 1653     3.612800e+02 -2.502800e+02
-7 1653     2.119600e+02 -3.819000e+01
-10 1653     2.349700e+02 -6.153998e+01
-15 1653     3.548700e+02 -9.850000e+01
-0 1654     8.198999e+01 -5.556899e+02
-1 1654     7.340002e+01 -5.338300e+02
-7 1654     9.213000e+01 -4.270600e+02
-0 1655     6.360300e+02 -2.659200e+02
-1 1655     7.628700e+02 -4.565699e+02
-7 1655     5.396500e+02 -5.728003e+01
-10 1655     6.689800e+02 -9.765997e+01
-12 1655     6.872100e+02 -1.054500e+02
-0 1656     -1.207200e+02 -5.378800e+02
-1 1656     -1.096100e+02 -4.469600e+02
-6 1656     2.263000e+01 -6.717000e+02
-7 1656     -1.123500e+02 -4.532600e+02
-0 1657     6.245200e+02 4.994000e+01
-1 1657     8.707300e+02 -1.252200e+02
-7 1657     4.685400e+02 2.325000e+02
-10 1657     6.280900e+02 2.656400e+02
-13 1657     8.412900e+02 -1.507700e+02
-0 1658     -1.023900e+02 -1.308200e+02
-1 1658     2.675000e+01 -6.800000e+01
-2 1658     7.759998e+01 -1.511000e+02
-6 1658     -1.093600e+02 -1.722100e+02
-7 1658     -1.671800e+02 -3.744000e+01
-12 1658     -1.079600e+02 -1.159600e+02
-13 1658     2.940500e+02 -3.461400e+02
-15 1658     -1.548700e+02 -5.433002e+01
-0 1659     6.108400e+02 -1.376001e+01
-1 1659     8.364200e+02 -1.879900e+02
-6 1659     4.724500e+02 1.248300e+02
-7 1659     4.636100e+02 1.689200e+02
-12 1659     5.542900e+02 1.347500e+02
-13 1659     8.351200e+02 -2.103800e+02
-15 1659     8.240300e+02 2.016900e+02
-0 1660     -5.640002e+01 -1.245300e+02
-1 1660     7.233002e+01 -7.545001e+01
-2 1660     1.246100e+02 -1.335700e+02
-7 1660     -1.216700e+02 -2.340997e+01
-9 1660     3.260010e+00 -2.091998e+01
-10 1660     -1.453200e+02 -9.429993e+00
-15 1660     -9.346002e+01 -3.946997e+01
-0 1661     6.220601e+02 -9.549988e+00
-1 1661     8.492300e+02 -1.870700e+02
-6 1661     4.847300e+02 1.335300e+02
-7 1661     4.738400e+02 1.746000e+02
-10 1661     6.291400e+02 1.963800e+02
-13 1661     8.461500e+02 -2.049200e+02
-15 1661     8.391700e+02 2.087100e+02
-0 1662     -4.539978e+00 -8.406000e+01
-1 1662     1.330100e+02 -5.160999e+01
-2 1662     1.650200e+02 -7.367999e+01
-7 1662     -7.716998e+01 2.728003e+01
-9 1662     3.375000e+01 3.013000e+01
-0 1663     -4.210999e+01 -3.165997e+01
-1 1663     1.150300e+02 9.659973e+00
-7 1663     -1.247900e+02 7.196002e+01
-15 1663     -8.634998e+01 8.817999e+01
-0 1664     5.967000e+02 4.717999e+01
-1 1664     8.405200e+02 -1.194600e+02
-2 1664     5.239900e+02 2.231000e+01
-7 1664     4.409900e+02 2.241400e+02
-10 1664     5.952200e+02 2.591500e+02
-13 1664     8.126200e+02 -1.573300e+02
-15 1664     7.967500e+02 2.836000e+02
-0 1665     -1.341800e+02 -4.821100e+02
-1 1665     -1.013600e+02 -3.914000e+02
-6 1665     -2.926001e+01 -6.199500e+02
-7 1665     -1.398500e+02 -4.019200e+02
-0 1666     2.151001e+01 -9.000244e-01
-1 1666     1.812800e+02 2.188000e+01
-7 1666     -6.291998e+01 1.163100e+02
-10 1666     -6.791998e+01 1.425300e+02
-15 1666     -5.840027e+00 1.391500e+02
-0 1667     4.878003e+01 -9.489001e+01
-1 1667     1.789000e+02 -7.800000e+01
-2 1667     2.348900e+02 -6.201001e+01
-3 1667     1.464100e+02 -3.662300e+02
-6 1667     5.465002e+01 -7.284003e+01
-7 1667     -1.951001e+01 2.700000e+01
-9 1667     9.070001e+01 4.240002e+01
-15 1667     4.417999e+01 1.513000e+01
-0 1668     1.096200e+02 -1.075000e+02
-1 1668     2.337100e+02 -1.089700e+02
-7 1668     4.331000e+01 2.540997e+01
-10 1668     4.465002e+01 2.797998e+01
-15 1668     1.281500e+02 5.750000e+00
-0 1669     1.060300e+02 -1.135400e+02
-1 1669     2.285900e+02 -1.141800e+02
-7 1669     4.063000e+01 1.890002e+01
-15 1669     1.236600e+02 -2.450012e+00
-0 1670     1.008700e+02 -1.160400e+02
-1 1670     2.228900e+02 -1.146400e+02
-6 1670     1.186300e+02 -7.832001e+01
-7 1670     3.604999e+01 1.554999e+01
-8 1670     2.700100e+02 -1.070400e+02
-12 1670     1.318900e+02 -3.173999e+01
-15 1670     1.174500e+02 -6.739990e+00
-0 1671     -6.460022e+00 -1.241800e+02
-1 1671     1.157100e+02 -8.908002e+01
-7 1671     -6.841998e+01 -1.089001e+01
-10 1671     -8.753998e+01 -3.789978e+00
-15 1671     -2.726001e+01 -3.217999e+01
-0 1672     6.051300e+02 1.059003e+01
-1 1672     8.377600e+02 -1.607500e+02
-7 1672     4.544100e+02 1.904800e+02
-10 1672     6.081700e+02 2.175200e+02
-13 1672     8.254000e+02 -1.898000e+02
-15 1672     8.131700e+02 2.341900e+02
-0 1673     6.552800e+02 -7.784998e+01
-1 1673     8.628800e+02 -2.708100e+02
-2 1673     6.250699e+02 -7.629999e+01
-6 1673     5.443400e+02 7.058002e+01
-7 1673     5.159600e+02 1.151500e+02
-10 1673     6.741300e+02 1.198800e+02
-0 1674     6.475100e+02 -9.809998e+01
-1 1674     8.481700e+02 -2.893900e+02
-7 1674     5.110100e+02 9.422000e+01
-8 1674     5.679600e+02 -1.148100e+02
-10 1674     6.665400e+02 9.603003e+01
-0 1675     6.409200e+02 -6.972998e+01
-1 1675     8.500300e+02 -2.571100e+02
-2 1675     6.069800e+02 -7.534003e+01
-7 1675     5.007500e+02 1.205000e+02
-12 1675     6.039200e+02 8.446002e+01
-13 1675     8.739301e+02 -2.573000e+02
-15 1675     8.725699e+02 1.280700e+02
-0 1676     -9.584003e+01 -5.101500e+02
-1 1676     -7.628998e+01 -4.300400e+02
-4 1676     -6.597400e+02 -3.087200e+02
-6 1676     3.253998e+01 -6.311801e+02
-7 1676     -9.394000e+01 -4.204300e+02
-0 1677     5.796600e+02 -2.343100e+02
-1 1677     7.128500e+02 -4.028500e+02
-7 1677     4.808500e+02 -3.901001e+01
-15 1677     8.027700e+02 -1.070800e+02
-0 1678     6.253003e+01 4.162000e+01
-1 1678     2.330699e+02 5.163000e+01
-2 1678     1.991300e+02 8.290002e+01
-3 1678     1.048200e+02 -2.292100e+02
-6 1678     2.221997e+01 8.628998e+01
-7 1678     -2.873999e+01 1.659900e+02
-10 1678     -2.492999e+01 1.956500e+02
-12 1678     3.989001e+01 1.397100e+02
-13 1678     4.245200e+02 -1.802500e+02
-15 1678     4.417999e+01 2.027600e+02
-0 1679     -2.197500e+02 -4.192600e+02
-1 1679     -1.564900e+02 -3.062100e+02
-6 1679     -1.729000e+02 -5.934900e+02
-7 1679     -2.424600e+02 -3.587600e+02
-10 1679     -3.014500e+02 -3.670800e+02
-15 1679     -2.709800e+02 -4.600100e+02
-0 1680     -4.800000e+02 1.187200e+02
-1 1680     -2.010300e+02 2.618500e+02
-4 1680     -1.588000e+02 -5.770001e+01
-7 1680     -6.500300e+02 1.177500e+02
-10 1680     -6.752700e+02 2.326400e+02
-13 1680     -1.764700e+02 -1.816200e+02
-0 1681     1.543700e+02 -1.532400e+02
-1 1681     2.615300e+02 -1.678400e+02
-2 1681     3.706700e+02 -8.691998e+01
-7 1681     9.683002e+01 -1.091998e+01
-10 1681     1.010100e+02 -1.994000e+01
-13 1681     5.317100e+02 -3.413900e+02
-15 1681     1.942000e+02 -4.996002e+01
-0 1682     1.857000e+02 -2.067100e+02
-1 1682     2.764700e+02 -2.303600e+02
-7 1682     1.362100e+02 -5.820001e+01
-15 1682     2.442100e+02 -1.180800e+02
-0 1683     4.159100e+02 -3.787000e+01
-1 1683     5.855000e+02 -1.412400e+02
-6 1683     3.605900e+02 7.884998e+01
-7 1683     3.099100e+02 1.327500e+02
-10 1683     3.915500e+02 1.403200e+02
-12 1683     4.144301e+02 1.081400e+02
-13 1683     7.088101e+02 -2.312400e+02
-15 1683     5.449399e+02 1.416600e+02
-0 1684     3.675699e+02 -9.347998e+01
-1 1684     5.095699e+02 -1.798100e+02
-6 1684     3.523300e+02 1.359003e+01
-7 1684     2.804399e+02 7.457001e+01
-10 1684     3.409500e+02 7.100000e+01
-15 1684     4.828900e+02 5.912000e+01
-0 1685     3.574800e+02 -1.709900e+02
-1 1685     4.668400e+02 -2.531000e+02
-7 1685     2.894600e+02 2.530029e+00
-12 1685     4.234600e+02 -2.909998e+01
-15 1685     4.766801e+02 -4.798999e+01
-0 1686     3.235300e+02 -2.061000e+02
-1 1686     4.190699e+02 -2.764100e+02
-7 1686     2.650200e+02 -3.640997e+01
-15 1686     4.342500e+02 -1.000100e+02
-0 1687     1.393101e+02 -2.362000e+02
-1 1687     2.191600e+02 -2.438700e+02
-7 1687     9.840002e+01 -9.400000e+01
-10 1687     9.232001e+01 -1.170000e+02
-13 1687     5.343500e+02 -4.151300e+02
-0 1688     -1.934300e+02 -4.625100e+02
-1 1688     -1.481400e+02 -3.541600e+02
-6 1688     -1.125600e+02 -6.273199e+02
-7 1688     -2.054700e+02 -3.955700e+02
-9 1688     -1.060999e+01 -4.213600e+02
-0 1689     -1.654800e+02 -5.214700e+02
-1 1689     -1.445100e+02 -4.170400e+02
-6 1689     -3.909003e+01 -6.759301e+02
-7 1689     -1.616600e+02 -4.466100e+02
-0 1690     -1.744300e+02 -5.288300e+02
-1 1690     -1.550900e+02 -4.206500e+02
-4 1690     -6.564200e+02 -2.465300e+02
-6 1690     -4.453003e+01 -6.884399e+02
-7 1690     -1.690000e+02 -4.554200e+02
-9 1690     5.603998e+01 -4.582400e+02
-0 1691     2.295500e+02 1.402900e+02
-1 1691     4.407100e+02 9.854999e+01
-7 1691     1.094900e+02 2.821800e+02
-10 1691     1.586500e+02 3.283500e+02
-15 1691     2.630300e+02 3.614300e+02
-0 1692     5.569600e+02 6.853998e+01
-1 1692     8.060601e+02 -8.472998e+01
-6 1692     3.858100e+02 1.925200e+02
-7 1692     3.996500e+02 2.364000e+02
-10 1692     5.477000e+02 2.790500e+02
-0 1693     2.954100e+02 3.606000e+01
-1 1693     4.713700e+02 -2.540997e+01
-7 1693     1.939700e+02 1.924500e+02
-10 1693     2.452400e+02 2.131500e+02
-13 1693     6.132300e+02 -1.705700e+02
-15 1693     3.657200e+02 2.270100e+02
-0 1694     2.085601e+02 -2.008900e+02
-1 1694     3.016200e+02 -2.319900e+02
-7 1694     1.564500e+02 -4.890002e+01
-15 1694     2.749500e+02 -1.071700e+02
-0 1695     -7.651001e+01 -4.646997e+01
-1 1695     7.935999e+01 4.979980e+00
-7 1695     -1.590500e+02 5.113000e+01
-0 1696     -1.353700e+02 -3.563000e+01
-1 1696     3.260999e+01 3.104999e+01
-7 1696     -2.255200e+02 4.747998e+01
-10 1696     -2.468400e+02 8.596002e+01
-15 1696     -2.105800e+02 7.042999e+01
-0 1697     -4.571002e+01 -6.701001e+01
-1 1697     1.011000e+02 -2.377002e+01
-7 1697     -1.225100e+02 3.634998e+01
-15 1697     -8.626001e+01 3.987000e+01
-0 1698     -1.288000e+01 -1.082400e+02
-1 1698     1.159800e+02 -7.264001e+01
-7 1698     -7.941998e+01 3.140015e+00
-10 1698     -9.684003e+01 1.497998e+01
-13 1698     3.744100e+02 -3.168100e+02
-15 1698     -3.759998e+01 -1.139001e+01
-0 1699     -1.522998e+01 -1.660300e+02
-1 1699     9.647998e+01 -1.273400e+02
-7 1699     -7.056000e+01 -5.537000e+01
-10 1699     -9.346997e+01 -5.272998e+01
-15 1699     -3.301001e+01 -8.978998e+01
-0 1700     2.421801e+02 -2.172800e+02
-1 1700     3.294600e+02 -2.592000e+02
-7 1700     1.934200e+02 -5.785999e+01
-10 1700     2.089301e+02 -8.410999e+01
-15 1700     3.231100e+02 -1.252800e+02
-0 1701     3.548900e+02 -4.959003e+01
-1 1701     5.107200e+02 -1.312000e+02
-7 1701     2.605100e+02 1.155900e+02
-10 1701     3.223500e+02 1.206800e+02
-15 1701     4.598700e+02 1.178400e+02
-0 1702     3.692000e+02 -1.058200e+02
-1 1702     5.070300e+02 -1.927900e+02
-7 1702     2.849700e+02 6.378003e+01
-10 1702     3.432500e+02 5.735999e+01
-15 1702     4.870400e+02 4.226001e+01
-0 1703     2.662400e+02 -1.209300e+02
-1 1703     3.880500e+02 -1.723200e+02
-7 1703     1.955300e+02 3.720001e+01
-10 1703     2.264900e+02 2.891998e+01
-13 1703     6.167200e+02 -3.064300e+02
-15 1703     3.443600e+02 8.679993e+00
-0 1704     2.298400e+02 -1.207300e+02
-1 1704     3.501600e+02 -1.607600e+02
-2 1704     4.127200e+02 -5.263000e+01
-3 1704     3.104399e+02 -3.533500e+02
-7 1704     1.601801e+02 3.119000e+01
-10 1704     1.841000e+02 2.552002e+01
-13 1704     5.846000e+02 -3.089600e+02
-15 1704     2.938700e+02 3.989990e+00
-0 1705     6.677800e+02 -3.451700e+02
-1 1705     7.661400e+02 -5.502800e+02
-7 1705     5.847900e+02 -1.238500e+02
-12 1705     7.564100e+02 -1.734400e+02
-0 1706     3.346000e+02 -6.239001e+01
-1 1706     4.840900e+02 -1.378000e+02
-7 1706     2.454000e+02 1.007900e+02
-10 1706     2.992600e+02 1.033100e+02
-15 1706     4.329200e+02 9.723999e+01
-0 1707     3.980000e+02 -7.854999e+01
-1 1707     5.495300e+02 -1.756000e+02
-7 1707     3.039301e+02 9.270999e+01
-10 1707     3.745500e+02 9.176001e+01
-15 1707     5.243900e+02 8.345999e+01
-0 1708     3.710500e+02 -1.483000e+02
-1 1708     4.907500e+02 -2.348100e+02
-7 1708     2.968900e+02 2.576001e+01
-10 1708     3.498400e+02 8.989990e+00
-0 1709     3.394700e+02 -1.588900e+02
-1 1709     4.531600e+02 -2.348300e+02
-7 1709     2.699301e+02 1.092999e+01
-0 1710     3.394700e+02 -1.588900e+02
-1 1710     4.531600e+02 -2.348300e+02
-15 1710     4.507800e+02 -3.407001e+01
-0 1711     6.153003e+01 -1.299600e+02
-1 1711     1.797100e+02 -1.155800e+02
-7 1711     -9.997559e-02 -5.859985e+00
-15 1711     6.620001e+01 -3.020001e+01
-0 1712     3.124301e+02 -2.325300e+02
-1 1712     4.022300e+02 -2.986600e+02
-10 1712     2.910300e+02 -9.509998e+01
-15 1712     4.231400e+02 -1.370800e+02
-0 1713     1.760800e+02 -3.337800e+02
-1 1713     2.377600e+02 -3.529000e+02
-7 1713     1.406100e+02 -1.911500e+02
-0 1714     3.618300e+02 -1.139900e+02
-1 1714     4.951801e+02 -1.981800e+02
-7 1714     2.787500e+02 5.596997e+01
-10 1714     3.370800e+02 4.656000e+01
-15 1714     4.768500e+02 3.073999e+01
-0 1715     2.837000e+01 -2.092300e+02
-1 1715     1.206100e+02 -1.815000e+02
-7 1715     -1.560999e+01 -8.825000e+01
-0 1716     -7.509003e+01 -2.858700e+02
-1 1716     1.539001e+01 -2.257400e+02
-7 1716     -1.185700e+02 -1.939000e+02
-10 1716     -1.476700e+02 -1.974000e+02
-13 1716     3.162300e+02 -4.949600e+02
-15 1716     -9.337000e+01 -2.603200e+02
-0 1717     2.413900e+02 -2.636600e+02
-1 1717     3.161200e+02 -3.054400e+02
-7 1717     2.020100e+02 -1.018700e+02
-0 1718     -9.529999e+01 6.203998e+01
-1 1718     1.035300e+02 1.139300e+02
-7 1718     -2.072600e+02 1.476600e+02
-10 1718     -2.103000e+02 2.023500e+02
-13 1718     2.510900e+02 -1.880500e+02
-15 1718     -1.685600e+02 2.073000e+02
-0 1719     1.170700e+02 -2.646997e+01
-1 1719     2.632100e+02 -3.225000e+01
-3 1719     1.866700e+02 -2.766700e+02
-4 1719     -3.058200e+02 -5.067900e+02
-7 1719     3.501001e+01 1.050500e+02
-10 1719     4.438000e+01 1.222100e+02
-13 1719     4.822600e+02 -2.331600e+02
-15 1719     1.242000e+02 1.141700e+02
-0 1720     -4.510010e+00 4.708600e+02
-1 1720     3.647600e+02 4.805100e+02
-2 1720     -2.931300e+02 2.260500e+02
-3 1720     -4.245900e+02 -1.053200e+02
-6 1720     -4.786800e+02 4.819800e+02
-7 1720     -2.275400e+02 5.375500e+02
-8 1720     -1.618400e+02 1.710100e+02
-11 1720     1.443400e+02 -2.896100e+02
-12 1720     -3.041700e+02 4.735100e+02
-0 1721     -1.761000e+02 1.640800e+02
-1 1721     9.756000e+01 2.250600e+02
-7 1721     -3.416100e+02 2.113600e+02
-10 1721     -3.169000e+02 3.169500e+02
-0 1722     -1.067400e+02 5.801001e+01
-1 1722     9.201001e+01 1.120800e+02
-7 1722     -2.167900e+02 1.432200e+02
-10 1722     -2.234100e+02 1.980300e+02
-15 1722     -1.828100e+02 2.010800e+02
-0 1723     -1.427200e+02 -1.245700e+02
-1 1723     -8.789978e+00 -4.994000e+01
-6 1723     -1.600800e+02 -1.801300e+02
-7 1723     -2.098300e+02 -3.841998e+01
-10 1723     -2.454700e+02 -1.888000e+01
-12 1723     -1.595200e+02 -1.211600e+02
-15 1723     -2.102600e+02 -5.110999e+01
-0 1724     -1.551001e+01 1.079000e+02
-1 1724     1.840900e+02 1.369700e+02
-3 1724     -2.604999e+01 -2.138200e+02
-4 1724     -1.990800e+02 -3.971700e+02
-5 1724     5.920300e+02 -5.499500e+02
-7 1724     -1.248500e+02 2.140500e+02
-10 1724     -1.231900e+02 2.658000e+02
-13 1724     3.353500e+02 -1.345600e+02
-0 1725     -1.027800e+02 7.833002e+01
-1 1725     1.038000e+02 1.300300e+02
-5 1725     4.627600e+02 -5.922500e+02
-6 1725     -2.494100e+02 4.576001e+01
-7 1725     -2.187800e+02 1.627800e+02
-10 1725     -2.216000e+02 2.219000e+02
-13 1725     2.391200e+02 -1.724600e+02
-15 1725     -1.801700e+02 2.292200e+02
-0 1726     1.732001e+01 4.189900e+02
-1 1726     3.745601e+02 4.226200e+02
-7 1726     -1.995600e+02 4.864300e+02
-9 1726     -3.754300e+02 2.084800e+02
-12 1726     -2.713100e+02 4.155900e+02
-0 1727     1.157300e+02 6.115997e+01
-1 1727     2.909600e+02 5.540002e+01
-4 1727     -2.453500e+02 -5.064399e+02
-5 1727     7.735200e+02 -5.992300e+02
-7 1727     2.053998e+01 1.936100e+02
-15 1727     1.141500e+02 2.363400e+02
-0 1728     1.876001e+01 1.419100e+02
-1 1728     2.280100e+02 1.602500e+02
-4 1728     -1.811700e+02 -4.233400e+02
-5 1728     6.257100e+02 -5.113500e+02
-6 1728     -9.029999e+01 1.754800e+02
-7 1728     -9.634998e+01 2.529600e+02
-10 1728     -8.614001e+01 3.081700e+02
-12 1728     -5.840997e+01 2.280600e+02
-15 1728     -2.615002e+01 3.335600e+02
-0 1729     5.283002e+01 7.966000e+01
-1 1729     2.367200e+02 9.167001e+01
-7 1729     -4.703003e+01 2.008400e+02
-10 1729     -4.060999e+01 2.393900e+02
-15 1729     2.653003e+01 2.529900e+02
-0 1730     -3.187400e+02 -1.104900e+02
-1 1730     -1.347800e+02 7.270020e+00
-6 1730     -5.209400e+02 -3.020900e+02
-7 1730     -4.216800e+02 -7.742999e+01
-13 1730     2.662000e+01 -3.681300e+02
-15 1730     -4.415400e+02 -5.715997e+01
-0 1731     -3.734200e+02 3.379100e+02
-1 1731     -3.727002e+01 4.416700e+02
-7 1731     -5.801700e+02 3.570900e+02
-15 1731     -5.799000e+02 5.503400e+02
-0 1732     -3.764500e+02 4.379100e+02
-1 1732     -1.765002e+01 5.394700e+02
-7 1732     -5.977600e+02 4.631200e+02
-11 1732     -1.850500e+02 -3.209800e+02
-0 1733     1.770800e+02 5.228998e+01
-1 1733     3.495800e+02 2.838000e+01
-2 1733     3.049301e+02 1.150700e+02
-4 1733     -2.591800e+02 -5.543600e+02
-6 1733     1.392200e+02 1.320500e+02
-7 1733     8.210999e+01 1.943500e+02
-12 1733     1.653000e+02 1.811900e+02
-13 1733     5.205900e+02 -1.622700e+02
-15 1733     1.990300e+02 2.329100e+02
-0 1734     2.349700e+02 7.552002e+01
-1 1734     4.188900e+02 3.385999e+01
-7 1734     1.311500e+02 2.231800e+02
-15 1734     2.765500e+02 2.727700e+02
-0 1735     3.985999e+01 4.185999e+01
-1 1735     2.115300e+02 5.840997e+01
-6 1735     -5.770020e+00 7.929999e+01
-7 1735     -5.184003e+01 1.617700e+02
-10 1735     -5.113000e+01 1.938200e+02
-15 1735     1.357001e+01 1.993800e+02
-0 1736     2.404600e+02 4.520300e+02
-1 1736     6.225100e+02 3.979800e+02
-2 1736     -7.059998e+01 2.093000e+02
-5 1736     6.436400e+02 -1.954900e+02
-6 1736     -2.084400e+02 5.098100e+02
-7 1736     9.799988e+00 5.439500e+02
-9 1736     -2.093800e+02 2.532400e+02
-11 1736     3.699000e+02 -2.956500e+02
-12 1736     -4.254999e+01 4.864900e+02
-14 1736     5.495800e+02 -2.757300e+02
-0 1737     1.628900e+02 2.062000e+01
-1 1737     3.244500e+02 1.609985e+00
-10 1737     9.290002e+01 1.816700e+02
-12 1737     1.622900e+02 1.435100e+02
-15 1737     1.833000e+02 1.878000e+02
-0 1738     -1.010010e+00 -1.172500e+02
-1 1738     1.236900e+02 -8.445001e+01
-6 1738     1.042999e+01 -1.140900e+02
-7 1738     -6.477002e+01 -3.500000e+00
-10 1738     -8.210999e+01 4.919983e+00
-12 1738     1.529999e+01 -6.240002e+01
-13 1738     3.878101e+02 -3.234200e+02
-15 1738     -2.067999e+01 -2.202002e+01
-0 1739     3.579700e+02 4.841800e+02
-1 1739     7.640200e+02 4.010700e+02
-5 1739     7.632100e+02 -1.566700e+02
-6 1739     -9.153000e+01 5.744900e+02
-7 1739     1.157800e+02 5.881500e+02
-11 1739     4.754200e+02 -2.610500e+02
-12 1739     7.076001e+01 5.394500e+02
-0 1740     3.067999e+01 -2.038200e+02
-1 1740     1.250700e+02 -1.774000e+02
-6 1740     8.564001e+01 -1.962300e+02
-7 1740     -1.541998e+01 -8.246002e+01
-10 1740     -3.628003e+01 -9.132001e+01
-12 1740     8.554999e+01 -1.497000e+02
-15 1740     3.308002e+01 -1.346900e+02
-0 1741     1.310900e+02 5.681000e+02
-1 1741     5.335000e+02 5.481300e+02
-3 1741     -3.138300e+02 2.890015e+00
-11 1741     2.592000e+02 -2.000300e+02
-13 1741     2.915300e+02 2.349900e+02
-0 1742     -8.542999e+01 4.844300e+02
-1 1742     2.846300e+02 5.150300e+02
-7 1742     -3.088800e+02 5.432900e+02
-11 1742     7.146997e+01 -2.793600e+02
-0 1743     -1.042600e+02 4.815500e+02
-1 1743     2.646500e+02 5.165000e+02
-2 1743     -3.885000e+02 2.383700e+02
-7 1743     -3.271900e+02 5.381300e+02
-12 1743     -4.150500e+02 4.720900e+02
-0 1744     2.794000e+01 -4.606000e+01
-1 1744     1.731801e+02 -2.392999e+01
-2 1744     1.956700e+02 -1.526001e+01
-8 1744     1.892200e+02 -6.115002e+01
-10 1744     -5.625000e+01 9.121997e+01
-12 1744     2.725000e+01 2.765002e+01
-15 1744     8.979980e+00 7.828003e+01
-0 1745     2.000400e+02 2.596400e+02
-1 1745     5.080400e+02 2.142100e+02
-6 1745     -1.445200e+02 2.796500e+02
-7 1745     1.053998e+01 3.565700e+02
-15 1745     2.232000e+02 5.194900e+02
-0 1746     2.435601e+02 2.669000e+02
-1 1746     5.562200e+02 2.093800e+02
-6 1746     -9.944000e+01 3.002500e+02
-7 1746     5.153998e+01 3.697100e+02
-10 1746     1.631700e+02 4.814300e+02
-11 1746     3.839900e+02 -4.694500e+02
-0 1747     2.145200e+02 2.646400e+02
-1 1747     5.251200e+02 2.152400e+02
-7 1747     2.375000e+01 3.634300e+02
-15 1747     2.431500e+02 5.289100e+02
-0 1748     2.761400e+02 -2.479300e+02
-1 1748     3.587300e+02 -3.017400e+02
-7 1748     2.261899e+02 -8.559998e+01
-0 1749     3.198101e+02 -4.009998e+01
-1 1749     4.737800e+02 -1.102000e+02
-7 1749     2.281801e+02 1.209800e+02
-10 1749     2.805300e+02 1.278100e+02
-15 1749     4.092400e+02 1.256600e+02
-0 1750     -3.007400e+02 7.581000e+01
-1 1750     -5.181000e+01 1.753200e+02
-2 1750     -4.494900e+02 -1.849900e+02
-7 1750     -4.485200e+02 1.059900e+02
-10 1750     -4.533200e+02 1.999100e+02
-0 1751     -1.139900e+02 -1.052002e+01
-1 1751     5.781000e+01 4.935999e+01
-7 1751     -2.062000e+02 7.745001e+01
-10 1751     -2.245800e+02 1.170000e+02
-15 1751     -1.854100e+02 1.067800e+02
-0 1752     -4.464500e+02 -6.770020e+00
-1 1752     -2.146400e+02 1.378800e+02
-2 1752     -5.844800e+02 -2.929100e+02
-15 1752     -6.312000e+02 6.495001e+01
-0 1753     3.378199e+02 1.091900e+02
-1 1753     5.661000e+02 2.984003e+01
-10 1753     2.875500e+02 3.039800e+02
-15 1753     4.226100e+02 3.326400e+02
-0 1754     -4.046002e+01 -3.153500e+02
-1 1754     3.644000e+01 -2.652200e+02
-6 1754     1.020001e+01 -3.783600e+02
-10 1754     -1.060700e+02 -2.270700e+02
-12 1754     1.307001e+01 -3.317600e+02
-13 1754     3.580300e+02 -5.154399e+02
-0 1755     -3.053100e+02 1.050300e+02
-1 1755     -4.547998e+01 2.037200e+02
-4 1755     -1.847400e+02 -1.610500e+02
-0 1756     4.895200e+02 2.812700e+02
-1 1756     8.162700e+02 1.564000e+02
-10 1756     4.511000e+02 5.243900e+02
-0 1757     3.859700e+02 -7.710999e+01
-1 1757     5.366400e+02 -1.696900e+02
-10 1757     3.601600e+02 9.215002e+01
-15 1757     5.068900e+02 8.404999e+01
-0 1758     7.612000e+01 2.267400e+02
-1 1758     3.686500e+02 2.165900e+02
-5 1758     5.237600e+02 -4.443400e+02
-6 1758     -2.674500e+02 2.082300e+02
-14 1758     4.386500e+02 -5.257400e+02
-0 1759     2.820300e+02 -1.939200e+02
-1 1759     3.790800e+02 -2.500100e+02
-10 1759     2.520200e+02 -5.316998e+01
-15 1759     3.751801e+02 -8.867999e+01
-0 1760     3.343300e+02 -2.422500e+02
-1 1760     4.260100e+02 -3.185300e+02
-6 1760     3.807000e+02 -1.537500e+02
-10 1760     3.169600e+02 -1.026700e+02
-12 1760     4.143199e+02 -1.244600e+02
-15 1760     4.548199e+02 -1.478600e+02
-0 1761     2.406300e+02 1.175600e+02
-1 1761     4.415900e+02 7.345001e+01
-7 1761     1.263900e+02 2.651400e+02
-10 1761     1.734900e+02 3.029300e+02
-12 1761     1.995601e+02 2.576700e+02
-15 1761     2.795699e+02 3.322400e+02
-0 1762     7.394000e+01 -3.983700e+02
-1 1762     1.156700e+02 -3.810000e+02
-4 1762     -6.016300e+02 -4.578900e+02
-7 1762     5.496002e+01 -2.729600e+02
-9 1762     2.121899e+02 -2.405100e+02
-0 1763     2.672998e+01 -2.472900e+02
-1 1763     1.109700e+02 -2.187900e+02
-4 1763     -4.608300e+02 -4.285800e+02
-7 1763     -1.404999e+01 -1.285000e+02
-10 1763     -3.587000e+01 -1.417100e+02
-15 1763     3.434003e+01 -1.940300e+02
-0 1764     1.675300e+02 -3.207200e+02
-1 1764     2.304000e+02 -3.376300e+02
-4 1764     -5.559400e+02 -5.401200e+02
-10 1764     1.332700e+02 -2.106200e+02
-15 1764     2.365000e+02 -2.754500e+02
-0 1765     -2.937000e+02 3.555700e+02
-1 1765     4.450000e+01 4.388200e+02
-2 1765     -5.724000e+02 8.150000e+01
-5 1765     1.038400e+02 -3.039300e+02
-7 1765     -5.007600e+02 3.852700e+02
-8 1765     -3.895000e+02 5.242001e+01
-10 1765     -4.815700e+02 5.355500e+02
-12 1765     -6.083800e+02 2.894000e+02
-0 1766     -2.939100e+02 3.897700e+02
-1 1766     5.234998e+01 4.734600e+02
-2 1766     -5.743000e+02 1.256600e+02
-5 1766     1.068400e+02 -2.667700e+02
-7 1766     -5.060700e+02 4.212900e+02
-10 1766     -4.865000e+02 5.781800e+02
-11 1766     -1.154900e+02 -3.630800e+02
-13 1766     -4.364001e+01 6.178003e+01
-14 1766     2.365997e+01 -3.573900e+02
-0 1767     -4.234000e+02 3.188600e+02
-1 1767     -8.917999e+01 4.354400e+02
-0 1768     -8.675000e+01 -1.150800e+02
-1 1768     4.776001e+01 -5.803003e+01
-7 1768     -1.553000e+02 -1.941998e+01
-15 1768     -1.357600e+02 -3.083002e+01
-0 1769     -2.711200e+02 3.998500e+02
-1 1769     7.660999e+01 4.769900e+02
-5 1769     1.324000e+02 -2.565100e+02
-7 1769     -4.832200e+02 4.346400e+02
-10 1769     -4.599500e+02 5.917300e+02
-14 1769     4.837000e+01 -3.466600e+02
-0 1770     -1.506500e+02 3.184200e+02
-1 1770     1.780200e+02 3.656300e+02
-2 1770     -4.228800e+02 3.765997e+01
-7 1770     -3.512500e+02 3.629600e+02
-11 1770     1.487000e+01 -4.285500e+02
-13 1770     7.062000e+01 5.400024e+00
-14 1770     1.620601e+02 -4.347500e+02
-0 1771     4.118600e+02 3.293200e+02
-1 1771     7.635100e+02 2.250000e+02
-7 1771     1.970300e+02 4.492200e+02
-0 1772     9.364001e+01 1.733700e+02
-1 1772     3.185500e+02 1.700100e+02
-6 1772     -4.113000e+01 2.217000e+02
-7 1772     -3.335999e+01 2.918000e+02
-13 1772     4.079100e+02 -7.407001e+01
-14 1772     5.898000e+02 -5.570800e+02
-15 1772     7.315002e+01 3.875800e+02
-0 1773     -2.004500e+02 4.211700e+02
-1 1773     1.531400e+02 4.799100e+02
-5 1773     2.042100e+02 -2.341000e+02
-7 1773     -4.141600e+02 4.649900e+02
-11 1773     -2.990997e+01 -3.360500e+02
-0 1774     -2.172300e+02 -4.476100e+02
-1 1774     -1.645000e+02 -3.328000e+02
-6 1774     -1.500900e+02 -6.226400e+02
-7 1774     -2.333400e+02 -3.857000e+02
-9 1774     -4.319000e+01 -4.198700e+02
-10 1774     -2.961400e+02 -3.990100e+02
-15 1774     -2.649400e+02 -4.977700e+02
-0 1775     3.682200e+02 -5.900024e+00
-1 1775     5.436300e+02 -9.279999e+01
-7 1775     2.618000e+02 1.569300e+02
-15 1775     4.742900e+02 1.791700e+02
-0 1776     -3.338400e+02 -1.295600e+02
-1 1776     -1.558200e+02 -6.030029e+00
-7 1776     -4.337900e+02 -9.921997e+01
-13 1776     1.707001e+01 -3.861400e+02
-0 1777     -3.007800e+02 -4.712700e+02
-1 1777     -2.478700e+02 -3.270800e+02
-6 1777     -2.372200e+02 -6.886200e+02
-7 1777     -3.135800e+02 -4.267000e+02
-15 1777     -3.754800e+02 -5.418900e+02
-0 1778     -1.175600e+02 6.821002e+01
-1 1778     8.589001e+01 1.249200e+02
-5 1778     4.498199e+02 -6.040200e+02
-6 1778     -2.589700e+02 2.998999e+01
-7 1778     -2.308800e+02 1.507700e+02
-12 1778     -2.192300e+02 8.565997e+01
-15 1778     -1.989600e+02 2.133600e+02
-0 1779     4.696000e+02 2.831900e+02
-1 1779     7.961700e+02 1.636300e+02
-6 1779     1.755900e+02 3.923500e+02
-7 1779     2.715800e+02 4.218200e+02
-10 1779     4.271500e+02 5.245200e+02
-13 1779     6.357900e+02 2.703003e+01
-14 1779     8.791600e+02 -4.337300e+02
-0 1780     -1.632700e+02 1.368600e+02
-1 1780     1.000900e+02 1.957700e+02
-7 1780     -3.216000e+02 1.875400e+02
-10 1780     -2.983900e+02 2.859100e+02
-15 1780     -2.596800e+02 2.998600e+02
-0 1781     -7.470001e+01 -7.539978e+00
-1 1781     9.484003e+01 4.144000e+01
-6 1781     -1.440000e+02 -2.862000e+01
-7 1781     -1.657400e+02 8.804999e+01
-10 1781     -1.795300e+02 1.244500e+02
-15 1781     -1.329000e+02 1.163900e+02
-0 1782     -9.198999e+01 2.387200e+02
-1 1782     2.062000e+02 2.738600e+02
-4 1782     -1.294100e+02 -2.919200e+02
-7 1782     -2.735800e+02 2.951600e+02
-9 1782     -3.952100e+02 5.267999e+01
-10 1782     -2.258300e+02 4.140500e+02
-11 1782     6.517999e+01 -5.041400e+02
-0 1783     5.353000e+02 -4.153100e+02
-1 1783     5.886400e+02 -5.674000e+02
-7 1783     4.828800e+02 -2.100100e+02
-0 1784     5.679200e+02 -1.637300e+02
-1 1784     7.298101e+02 -3.268500e+02
-2 1784     5.999500e+02 -1.619200e+02
-6 1784     5.005500e+02 -4.283002e+01
-7 1784     4.538800e+02 2.307001e+01
-8 1784     5.445601e+02 -1.672700e+02
-12 1784     5.704301e+02 -2.714001e+01
-13 1784     8.330500e+02 -3.459200e+02
-0 1785     6.048600e+02 1.556000e+01
-1 1785     8.391801e+02 -1.557900e+02
-2 1785     5.423300e+02 -5.789978e+00
-6 1785     4.567200e+02 1.543900e+02
-7 1785     4.537200e+02 1.954100e+02
-10 1785     6.073800e+02 2.228400e+02
-13 1785     8.252500e+02 -1.846600e+02
-15 1785     8.124200e+02 2.410300e+02
-0 1786     -2.949600e+02 -4.225600e+02
-1 1786     -2.252800e+02 -2.852100e+02
-4 1786     -5.385700e+02 -1.580700e+02
-7 1786     -3.195200e+02 -3.781500e+02
-10 1786     -3.891400e+02 -3.799800e+02
-15 1786     -3.727700e+02 -4.751200e+02
-0 1787     2.579500e+02 2.537800e+02
-1 1787     5.661000e+02 1.921400e+02
-4 1787     -1.536100e+02 -5.348101e+02
-7 1787     6.928998e+01 3.593200e+02
-14 1787     6.309000e+02 -4.858400e+02
-0 1788     -3.112000e+01 7.253998e+01
-1 1788     1.577200e+02 1.069500e+02
-7 1788     -1.336900e+02 1.768400e+02
-15 1788     -8.559003e+01 2.312300e+02
-0 1789     -1.987300e+02 4.309000e+02
-1 1789     1.566300e+02 4.892500e+02
-2 1789     -4.780000e+02 1.768000e+02
-7 1789     -4.146500e+02 4.751000e+02
-8 1789     -3.128200e+02 1.299700e+02
-11 1789     -2.890997e+01 -3.269700e+02
-12 1789     -5.118900e+02 3.968300e+02
-0 1790     5.803600e+02 -3.591998e+01
-1 1790     7.974600e+02 -2.016700e+02
-7 1790     4.361700e+02 1.404500e+02
-13 1790     8.063199e+02 -2.359700e+02
-15 1790     7.843101e+02 1.660400e+02
-0 1791     -1.605800e+02 -5.223800e+02
-1 1791     -1.404000e+02 -4.194200e+02
-4 1791     -6.541700e+02 -2.585800e+02
-6 1791     -3.273999e+01 -6.749600e+02
-7 1791     -1.563300e+02 -4.461200e+02
-0 1792     -1.599700e+02 3.328200e+02
-1 1792     1.723500e+02 3.823500e+02
-2 1792     -4.332400e+02 5.552002e+01
-7 1792     -3.626900e+02 3.770100e+02
-8 1792     -2.753100e+02 3.454001e+01
-10 1792     -3.181500e+02 5.201600e+02
-11 1792     6.750000e+00 -4.157300e+02
-15 1792     -2.811500e+02 5.711300e+02
-0 1793     1.991700e+02 3.023500e+02
-1 1793     5.240601e+02 2.570000e+02
-6 1793     -1.740800e+02 3.264100e+02
-7 1793     -3.997803e-02 3.961800e+02
-12 1793     -3.138000e+01 3.283700e+02
-13 1793     3.768600e+02 1.546997e+01
-14 1793     5.470601e+02 -4.372600e+02
-15 1793     2.176899e+02 5.790700e+02
-0 1794     6.178900e+02 -2.750600e+02
-1 1794     7.380100e+02 -4.585601e+02
-7 1794     5.253300e+02 -6.948999e+01
-12 1794     6.747500e+02 -1.200400e+02
-15 1794     8.621899e+02 -1.581800e+02
-0 1795     -6.881000e+01 2.963000e+02
-1 1795     2.503300e+02 3.233800e+02
-7 1795     -2.640900e+02 3.532700e+02
-15 1795     -1.512000e+02 5.324500e+02
-0 1796     2.068600e+02 -3.262000e+01
-1 1796     3.528000e+02 -6.537000e+01
-7 1796     1.259000e+02 1.154600e+02
-10 1796     1.496200e+02 1.244800e+02
-13 1796     5.581000e+02 -2.331300e+02
-0 1797     -8.640997e+01 1.727400e+02
-1 1797     1.873800e+02 2.090500e+02
-7 1797     -2.518900e+02 2.335500e+02
-8 1797     -1.448700e+02 -6.462000e+01
-0 1798     6.169000e+01 2.409100e+02
-1 1798     3.594800e+02 2.343300e+02
-7 1798     -1.205700e+02 3.196100e+02
-10 1798     -4.708002e+01 4.304200e+02
-11 1798     2.095300e+02 -5.006100e+02
-14 1798     4.178101e+02 -5.111200e+02
-0 1799     -1.654800e+02 -5.214700e+02
-1 1799     -1.445100e+02 -4.170400e+02
-7 1799     -1.616600e+02 -4.466100e+02
-0 1800     7.228300e+02 -3.541600e+02
-1 1800     8.260200e+02 -5.831600e+02
-7 1800     6.350601e+02 -1.226200e+02
-12 1800     8.148500e+02 -1.665900e+02
-0 1801     2.001100e+02 -1.415002e+01
-1 1801     3.515400e+02 -4.440997e+01
-7 1801     1.165600e+02 1.330400e+02
-10 1801     1.398500e+02 1.450500e+02
-13 1801     5.504200e+02 -2.169400e+02
-15 1801     2.391000e+02 1.452400e+02
-0 1802     -4.340500e+02 3.349500e+02
-1 1802     -9.589001e+01 4.533700e+02
-7 1802     -6.434400e+02 3.453300e+02
-11 1802     -2.412300e+02 -4.111600e+02
-12 1802     -7.732600e+02 2.376700e+02
-15 1802     -6.645700e+02 5.381100e+02
-0 1803     5.315000e+02 2.037700e+02
-1 1803     8.220100e+02 6.527002e+01
-0 1804     5.852200e+02 3.553003e+01
-1 1804     8.248500e+02 -1.279500e+02
-10 1804     5.826700e+02 2.445300e+02
-13 1804     8.021600e+02 -1.694100e+02
-0 1805     4.965997e+01 9.989990e+00
-1 1805     2.105699e+02 2.438000e+01
-2 1805     1.992000e+02 4.953998e+01
-7 1805     -3.601001e+01 1.323200e+02
-10 1805     -3.691998e+01 1.576300e+02
-15 1805     3.077002e+01 1.576300e+02
-0 1806     -5.849976e+00 -1.989200e+02
-1 1806     9.229999e+01 -1.613500e+02
-7 1806     -5.308002e+01 -8.446002e+01
-10 1806     -7.884003e+01 -8.978003e+01
-15 1806     -1.632001e+01 -1.328400e+02
-0 1807     1.458000e+02 -4.640015e+00
-1 1807     2.995000e+02 -1.804999e+01
-2 1807     3.037400e+02 5.997998e+01
-7 1807     6.294000e+01 1.347900e+02
-10 1807     7.631000e+01 1.509200e+02
-15 1807     1.635300e+02 1.513000e+02
-0 1808     -4.192400e+02 2.982500e+02
-1 1808     -8.954999e+01 4.145900e+02
-7 1808     -6.215900e+02 3.090300e+02
-10 1808     -6.265100e+02 4.553800e+02
-11 1808     -2.292800e+02 -4.446100e+02
-12 1808     -7.497500e+02 1.930000e+02
-0 1809     -7.946800e+02 4.166998e+01
-1 1809     -4.998300e+02 2.688500e+02
-0 1810     -4.253800e+02 9.700000e+01
-1 1810     -1.589300e+02 2.279600e+02
-4 1810     -1.766600e+02 -8.925000e+01
-10 1810     -6.051500e+02 2.123400e+02
-0 1811     -4.875000e+02 1.690300e+02
-1 1811     -1.903100e+02 3.097900e+02
-7 1811     -6.696500e+02 1.661100e+02
-0 1812     -4.783500e+02 1.632000e+02
-1 1812     -1.840400e+02 3.024300e+02
-7 1812     -6.579100e+02 1.617000e+02
-0 1813     -3.877900e+02 3.610500e+02
-1 1813     -4.659003e+01 4.685100e+02
-7 1813     -5.977200e+02 3.797000e+02
-10 1813     -5.977300e+02 5.353100e+02
-11 1813     -1.983800e+02 -3.869100e+02
-0 1814     2.966000e+02 -7.200012e+00
-1 1814     4.582900e+02 -6.865997e+01
-6 1814     2.662400e+02 9.457001e+01
-7 1814     2.030900e+02 1.517300e+02
-10 1814     2.505900e+02 1.634800e+02
-12 1814     3.034900e+02 1.351700e+02
-13 1814     6.217400e+02 -2.065500e+02
-15 1814     3.724301e+02 1.679300e+02
-0 1815     -4.501500e+02 2.212300e+02
-1 1815     -1.384600e+02 3.492700e+02
-10 1815     -6.534000e+02 3.587200e+02
-0 1816     -4.937200e+02 4.044500e+02
-1 1816     -1.368700e+02 5.343600e+02
-10 1816     -7.376400e+02 5.807900e+02
-0 1817     -2.035700e+02 -4.645699e+02
-1 1817     -1.583000e+02 -3.527900e+02
-6 1817     -1.228700e+02 -6.343500e+02
-7 1817     -2.148600e+02 -3.993100e+02
-10 1817     -2.781600e+02 -4.173000e+02
-0 1818     1.174200e+02 2.546002e+01
-1 1818     2.815900e+02 1.920001e+01
-2 1818     2.661801e+02 8.201001e+01
-7 1818     3.060999e+01 1.589900e+02
-10 1818     4.092999e+01 1.825200e+02
-15 1818     1.211900e+02 1.876300e+02
-0 1819     -2.754800e+02 3.076600e+02
-1 1819     5.003998e+01 3.871400e+02
-10 1819     -4.522700e+02 4.776400e+02
-15 1819     -4.387900e+02 5.195600e+02
-0 1820     -4.485300e+02 3.194900e+02
-1 1820     -1.108600e+02 4.480500e+02
-11 1820     -2.526600e+02 -4.248500e+02
-0 1821     -2.954999e+01 4.789900e+02
-1 1821     3.409100e+02 4.952500e+02
-2 1821     -3.176800e+02 2.355100e+02
-6 1821     -5.087600e+02 4.878500e+02
-7 1821     -2.532600e+02 5.430800e+02
-14 1821     2.845500e+02 -2.585800e+02
-0 1822     1.679800e+02 4.954100e+02
-1 1822     5.541801e+02 4.623500e+02
-11 1822     2.986700e+02 -2.614200e+02
-0 1823     -2.526600e+02 3.320800e+02
-1 1823     7.984003e+01 4.045700e+02
-0 1824     -2.824400e+02 4.601600e+02
-1 1824     7.990002e+01 5.386500e+02
-7 1824     -5.038000e+02 4.967400e+02
-0 1825     -4.471500e+02 4.104100e+02
-1 1825     -9.147998e+01 5.290100e+02
-5 1825     -4.203998e+01 -2.420100e+02
-10 1825     -6.793000e+02 5.904000e+02
-12 1825     -8.011500e+02 3.337900e+02
-0 1826     -5.057001e+01 4.703300e+02
-1 1826     3.168600e+02 4.918600e+02
-4 1826     1.549988e+00 -3.280100e+02
-5 1826     3.551000e+02 -1.804000e+02
-6 1826     -5.293100e+02 4.745600e+02
-7 1826     -2.719100e+02 5.324700e+02
-11 1826     1.028500e+02 -2.907600e+02
-13 1826     1.515400e+02 1.425700e+02
-14 1826     2.657900e+02 -2.672000e+02
-0 1827     -1.947700e+02 4.287600e+02
-1 1827     1.602000e+02 4.861100e+02
-4 1827     -1.206000e+01 -2.402500e+02
-7 1827     -4.101500e+02 4.731200e+02
-8 1827     -3.091300e+02 1.266000e+02
-12 1827     -5.066300e+02 3.947200e+02
-0 1828     -4.213100e+02 9.700012e+00
-1 1828     -1.859000e+02 1.462100e+02
-2 1828     -5.605000e+02 -2.715100e+02
-13 1828     -9.632001e+01 -2.711400e+02
-15 1828     -5.972900e+02 9.072000e+01
-0 1829     -4.465800e+02 1.000800e+02
-1 1829     -1.773200e+02 2.361900e+02
-2 1829     -6.545300e+02 -2.002000e+02
-7 1829     -6.085200e+02 1.046000e+02
-13 1829     -1.408700e+02 -1.951500e+02
-0 1830     -2.543000e+02 -5.523800e+02
-1 1830     -2.354400e+02 -4.155500e+02
-4 1830     -6.572800e+02 -1.849400e+02
-6 1830     -1.219600e+02 -7.532600e+02
-7 1830     -2.445700e+02 -4.959600e+02
-9 1830     -1.150024e+00 -5.082600e+02
-0 1831     -2.669800e+02 -4.552100e+02
-1 1831     -2.118200e+02 -3.236100e+02
-4 1831     -5.711900e+02 -1.776200e+02
-6 1831     -2.055300e+02 -6.552500e+02
-7 1831     -2.822100e+02 -4.038700e+02
-9 1831     -8.638000e+01 -4.455400e+02
-0 1832     7.502002e+01 8.785001e+01
-1 1832     2.611899e+02 9.334000e+01
-2 1832     1.872400e+02 1.236000e+02
-5 1832     7.141899e+02 -5.687300e+02
-6 1832     1.297998e+01 1.387600e+02
-9 1832     4.184003e+01 1.949700e+02
-12 1832     3.603003e+01 1.917900e+02
-0 1833     -1.006100e+02 6.903998e+01
-1 1833     1.022300e+02 1.207400e+02
-3 1833     -1.492700e+02 -3.164500e+02
-5 1833     4.688800e+02 -6.022900e+02
-8 1833     -9.510010e+00 -3.644000e+01
-9 1833     -1.632700e+02 8.145999e+01
-10 1833     -2.177700e+02 2.112400e+02
-12 1833     -1.992400e+02 9.153003e+01
-15 1833     -1.761000e+02 2.167600e+02
-0 1834     2.330300e+02 -4.247998e+01
-1 1834     3.772700e+02 -8.321997e+01
-10 1834     1.803400e+02 1.157000e+02
-0 1835     -5.460999e+01 -1.149000e+02
-1 1835     7.628998e+01 -6.673999e+01
-0 1836     3.180100e+02 -2.449100e+02
-1 1836     4.061300e+02 -3.141000e+02
-10 1836     2.985000e+02 -1.078900e+02
-0 1837     2.206100e+02 2.391300e+02
-1 1837     5.213800e+02 1.881100e+02
-10 1837     1.396200e+02 4.460600e+02
-0 1838     -1.858800e+02 2.220700e+02
-1 1838     1.097700e+02 2.828500e+02
-0 1839     -1.957000e+02 2.128700e+02
-1 1839     9.690002e+01 2.765900e+02
-7 1839     -3.727400e+02 2.551000e+02
-10 1839     -3.460600e+02 3.727700e+02
-11 1839     -3.175000e+01 -5.286000e+02
-14 1839     1.411600e+02 -5.511801e+02
-15 1839     -3.137800e+02 3.995400e+02
-0 1840     2.526600e+02 1.384600e+02
-1 1840     4.638800e+02 9.045999e+01
-10 1840     1.858500e+02 3.285500e+02
-15 1840     2.951100e+02 3.619900e+02
-0 1841     1.479700e+02 6.995001e+01
-1 1841     3.261801e+02 5.450000e+01
-0 1842     2.110200e+02 5.103998e+01
-1 1842     3.847700e+02 1.684003e+01
-0 1843     2.110200e+02 5.103998e+01
-1 1843     3.847700e+02 1.684003e+01
-15 1843     2.463400e+02 2.360800e+02
-0 1844     3.641899e+02 -1.934003e+01
-1 1844     5.334800e+02 -1.045700e+02
-6 1844     3.124000e+02 8.835999e+01
-7 1844     2.615699e+02 1.443200e+02
-10 1844     3.297100e+02 1.568200e+02
-12 1844     3.612600e+02 1.219100e+02
-13 1844     6.667500e+02 -2.173600e+02
-15 1844     4.702900e+02 1.601100e+02
-0 1845     3.562000e+02 -3.010999e+01
-1 1845     5.204000e+02 -1.128400e+02
-7 1845     2.566200e+02 1.337300e+02
-10 1845     3.217000e+02 1.431900e+02
-15 1845     4.598800e+02 1.443700e+02
-0 1846     2.233400e+02 -2.628998e+01
-1 1846     3.721000e+02 -6.409998e+01
-7 1846     1.401600e+02 1.242000e+02
-15 1846     2.727500e+02 1.316300e+02
-0 1847     -1.235200e+02 -3.454999e+01
-1 1847     4.216998e+01 2.923999e+01
-10 1847     -2.332000e+02 8.796002e+01
-15 1847     -1.948500e+02 7.313000e+01
-0 1848     2.150100e+02 -7.503003e+01
-1 1848     3.487600e+02 -1.093900e+02
-6 1848     2.213500e+02 4.169983e+00
-7 1848     1.398900e+02 7.544000e+01
-8 1848     3.491100e+02 -5.148999e+01
-10 1848     1.632300e+02 7.675000e+01
-13 1848     5.691500e+02 -2.691500e+02
-15 1848     2.677300e+02 6.427002e+01
-0 1849     4.390002e+01 -1.347600e+02
-1 1849     1.604200e+02 -1.148800e+02
-7 1849     -1.554999e+01 -1.201001e+01
-15 1849     4.201001e+01 -3.953003e+01
-0 1850     1.414500e+02 -2.445200e+02
-1 1850     2.191500e+02 -2.525200e+02
-15 1850     1.884900e+02 -1.754300e+02
-0 1851     6.723400e+02 -2.669600e+02
-1 1851     8.044000e+02 -4.722300e+02
-0 1852     -1.308300e+02 2.355100e+02
-1 1852     1.674900e+02 2.811100e+02
-0 1853     3.295000e+02 2.076200e+02
-1 1853     6.230400e+02 1.252500e+02
-7 1853     1.469200e+02 3.265600e+02
-10 1853     2.690400e+02 4.194700e+02
-0 1854     -1.865500e+02 2.295200e+02
-1 1854     1.113800e+02 2.900400e+02
-7 1854     -3.676400e+02 2.722900e+02
-10 1854     -3.379800e+02 3.935800e+02
-13 1854     6.100000e+01 -7.141998e+01
-14 1854     1.471100e+02 -5.327900e+02
-0 1855     3.103300e+02 2.029400e+02
-1 1855     6.009200e+02 1.263500e+02
-7 1855     1.301500e+02 3.196300e+02
-0 1856     2.854100e+02 1.972100e+02
-1 1856     5.725900e+02 1.277100e+02
-10 1856     2.189399e+02 4.028400e+02
-0 1857     2.850800e+02 1.905900e+02
-1 1857     5.696600e+02 1.210400e+02
-0 1858     1.025600e+02 1.854000e+02
-1 1858     3.310500e+02 1.789900e+02
-0 1859     2.640100e+02 1.086300e+02
-1 1859     4.637500e+02 5.716998e+01
-7 1859     1.501100e+02 2.575200e+02
-0 1860     -4.733700e+02 9.832999e+01
-1 1860     -2.022800e+02 2.412600e+02
-0 1861     4.049700e+02 3.398999e+01
-1 1861     6.054399e+02 -6.608002e+01
-6 1861     3.028200e+02 1.425500e+02
-7 1861     2.817400e+02 1.954000e+02
-10 1861     3.726000e+02 2.233400e+02
-12 1861     3.651899e+02 1.704900e+02
-0 1862     -1.105400e+02 5.733002e+01
-1 1862     8.827002e+01 1.125000e+02
-7 1862     -2.208400e+02 1.416500e+02
-10 1862     -2.283200e+02 1.965400e+02
-15 1862     -1.881700e+02 1.995300e+02
-0 1863     2.103600e+02 -9.940997e+01
-1 1863     3.375400e+02 -1.327600e+02
-2 1863     3.894000e+02 -3.251001e+01
-6 1863     2.236900e+02 -2.584998e+01
-8 1863     3.504600e+02 -7.570001e+01
-13 1863     5.672700e+02 -2.916100e+02
-0 1864     1.805900e+02 -1.428900e+02
-1 1864     2.919500e+02 -1.659600e+02
-12 1864     2.322600e+02 -3.773999e+01
-13 1864     5.508400e+02 -3.307500e+02
-15 1864     2.288800e+02 -3.275000e+01
-0 1865     3.152800e+02 -2.396500e+02
-1 1865     4.038700e+02 -3.076200e+02
-7 1865     2.593199e+02 -7.214001e+01
-10 1865     2.946899e+02 -1.017700e+02
-15 1865     4.282400e+02 -1.466700e+02
-0 1866     -2.093800e+02 -4.262000e+02
-1 1866     -1.495900e+02 -3.157500e+02
-0 1867     -4.377100e+02 -5.234200e+02
-1 1867     -3.863700e+02 -3.305000e+02
-0 1868     1.171400e+02 1.835300e+02
-1 1868     3.457900e+02 1.729500e+02
-15 1868     1.043200e+02 4.048100e+02
-0 1869     2.932400e+02 6.726001e+01
-1 1869     4.805200e+02 7.090027e+00
-7 1869     1.851700e+02 2.218700e+02
-10 1869     2.396200e+02 2.495200e+02
-12 1869     2.725300e+02 2.115700e+02
-13 1869     6.046100e+02 -1.451600e+02
-15 1869     3.592300e+02 2.693700e+02
-0 1870     3.073900e+02 -1.112500e+02
-1 1870     4.351300e+02 -1.765700e+02
-15 1870     4.001500e+02 2.717999e+01
-0 1871     7.294000e+01 -1.191300e+02
-1 1871     1.946400e+02 -1.088200e+02
-7 1871     8.090027e+00 7.359985e+00
-15 1871     7.945001e+01 -1.460999e+01
-0 1872     2.686600e+02 -1.879800e+02
-1 1872     3.679800e+02 -2.395900e+02
-7 1872     2.106100e+02 -2.731000e+01
-10 1872     2.363800e+02 -4.791998e+01
-15 1872     3.561200e+02 -8.241998e+01
-0 1873     1.251100e+02 -2.094000e+02
-1 1873     2.151600e+02 -2.130900e+02
-0 1874     5.106899e+02 -3.267400e+02
-1 1874     5.982600e+02 -4.701200e+02
-0 1875     -2.646000e+02 -4.134500e+02
-1 1875     -1.945100e+02 -2.869500e+02
-0 1876     2.461000e+02 1.341500e+02
-1 1876     4.542000e+02 8.807001e+01
-7 1876     1.280800e+02 2.794800e+02
-10 1876     1.790800e+02 3.226400e+02
-15 1876     2.867800e+02 3.552300e+02
-0 1877     -1.464300e+02 6.528003e+01
-1 1877     6.200000e+01 1.288700e+02
-10 1877     -2.708500e+02 2.024200e+02
-15 1877     -2.359600e+02 2.051300e+02
-0 1878     2.659600e+02 4.088000e+01
-1 1878     4.399700e+02 -1.092999e+01
-7 1878     1.666400e+02 1.935300e+02
-10 1878     2.112200e+02 2.169100e+02
-15 1878     3.237000e+02 2.296800e+02
-0 1879     2.086300e+02 -1.337300e+02
-1 1879     3.244000e+02 -1.661600e+02
-7 1879     1.439500e+02 1.606000e+01
-10 1879     1.616500e+02 8.059998e+00
-13 1879     5.721500e+02 -3.216000e+02
-15 1879     2.666899e+02 -1.656000e+01
-0 1880     1.519301e+02 -1.443800e+02
-1 1880     2.625601e+02 -1.580400e+02
-4 1880     -4.027000e+02 -5.359200e+02
-7 1880     9.277002e+01 -2.469971e+00
-10 1880     9.806000e+01 -9.760010e+00
-13 1880     5.269700e+02 -3.340000e+02
-15 1880     1.903700e+02 -3.802002e+01
-0 1881     -1.293100e+02 -5.150000e+02
-1 1881     -1.091700e+02 -4.231100e+02
-7 1881     -1.263000e+02 -4.322400e+02
-0 1882     -2.706900e+02 3.847998e+01
-1 1882     -3.726001e+01 1.325700e+02
-0 1883     6.602600e+02 -3.143400e+02
-1 1883     7.701899e+02 -5.157000e+02
-7 1883     5.712200e+02 -9.676001e+01
-0 1884     -2.513900e+02 -4.256800e+02
-1 1884     -1.870700e+02 -3.017700e+02
-6 1884     -2.067500e+02 -6.152300e+02
-7 1884     -2.731000e+02 -3.718800e+02
-0 1885     3.218300e+02 5.463000e+01
-1 1885     5.091200e+02 -1.579999e+01
-0 1886     -2.702900e+02 2.750000e+01
-1 1886     -4.103003e+01 1.219500e+02
-0 1887     -2.102500e+02 -5.485500e+02
-1 1887     -1.948700e+02 -4.274400e+02
-4 1887     -6.646500e+02 -2.189000e+02
-6 1887     -7.339001e+01 -7.252200e+02
-7 1887     -1.996600e+02 -4.801300e+02
-9 1887     3.684998e+01 -4.843000e+02
-0 1888     3.997900e+02 -2.261700e+02
-1 1888     5.110800e+02 -3.252900e+02
-7 1888     3.237900e+02 -5.390997e+01
-0 1889     -1.127800e+02 -5.129200e+02
-1 1889     -9.290997e+01 -4.268200e+02
-0 1890     3.732400e+02 -2.179800e+02
-1 1890     4.803300e+02 -3.082600e+02
-10 1890     3.592500e+02 -7.117999e+01
-15 1890     5.078800e+02 -1.103400e+02
-0 1891     -3.827300e+02 -5.270400e+02
-1 1891     -3.398300e+02 -3.512200e+02
-0 1892     2.010000e+02 -2.765002e+01
-1 1892     3.481600e+02 -5.803998e+01
-2 1892     3.598300e+02 4.445001e+01
-7 1892     1.194200e+02 1.201200e+02
-10 1892     1.422900e+02 1.297200e+02
-15 1892     2.422300e+02 1.269800e+02
-0 1893     -4.076100e+02 7.799988e+00
-1 1893     -1.747100e+02 1.407400e+02
-15 1893     -5.789600e+02 8.976999e+01
-0 1894     -4.044900e+02 -1.035800e+02
-1 1894     -2.104900e+02 3.791998e+01
-0 1895     6.220500e+02 9.304999e+01
-1 1895     8.819399e+02 -7.894000e+01
-2 1895     5.401700e+02 8.334003e+01
-6 1895     4.574301e+02 2.475700e+02
-7 1895     4.603199e+02 2.736800e+02
-8 1895     5.024100e+02 3.895001e+01
-10 1895     6.211700e+02 3.154200e+02
-12 1895     5.403300e+02 2.571500e+02
-15 1895     8.271300e+02 3.519900e+02
-0 1896     4.241600e+02 -2.546997e+01
-1 1896     5.999500e+02 -1.316800e+02
-6 1896     3.597800e+02 9.282001e+01
-7 1896     3.145500e+02 1.447300e+02
-10 1896     4.001801e+02 1.566400e+02
-12 1896     4.160400e+02 1.209100e+02
-15 1896     5.556801e+02 1.599000e+02
-0 1897     1.297200e+02 -1.958900e+02
-1 1897     2.251801e+02 -2.013800e+02
-0 1898     3.291000e+02 2.031800e+02
-1 1898     6.211400e+02 1.208300e+02
-7 1898     1.475300e+02 3.226200e+02
-10 1898     2.691100e+02 4.144300e+02
-0 1899     3.536000e+02 -2.568400e+02
-1 1899     4.478500e+02 -3.406400e+02
-15 1899     4.855100e+02 -1.655400e+02
-0 1900     5.477200e+02 -3.788100e+02
-1 1900     6.170100e+02 -5.357900e+02
-0 1901     3.146801e+02 -2.196600e+02
-1 1901     4.069200e+02 -2.869700e+02
-7 1901     2.581200e+02 -5.154999e+01
-10 1901     2.920601e+02 -7.927002e+01
-0 1902     -1.816900e+02 -1.494100e+02
-1 1902     -3.396002e+01 -6.467999e+01
-15 1902     -2.543600e+02 -9.094000e+01
-0 1903     -4.022400e+02 -1.505800e+02
-1 1903     -2.249900e+02 -6.030029e+00
-0 1904     -1.393000e+02 -1.204800e+02
-1 1904     -4.109985e+00 -4.704999e+01
-6 1904     -1.581800e+02 -1.750900e+02
-7 1904     -2.074400e+02 -3.412000e+01
-10 1904     -2.416800e+02 -1.363000e+01
-15 1904     -2.059800e+02 -4.526001e+01
-0 1905     -6.913000e+01 -1.710200e+02
-1 1905     4.258002e+01 -1.155700e+02
-4 1905     -3.836000e+02 -3.564000e+02
-10 1905     -1.552600e+02 -6.446002e+01
-13 1905     3.349301e+02 -3.767200e+02
-15 1905     -1.056900e+02 -1.038000e+02
-0 1906     1.938199e+02 -8.215997e+01
-1 1906     3.247300e+02 -1.095400e+02
-2 1906     3.722700e+02 -1.404999e+01
-6 1906     2.044400e+02 -1.046002e+01
-8 1906     3.361000e+02 -6.013000e+01
-0 1907     2.001801e+02 4.268500e+02
-1 1907     5.714000e+02 3.822900e+02
-7 1907     -2.516998e+01 5.142200e+02
-11 1907     3.348500e+02 -3.203500e+02
-14 1907     5.112200e+02 -3.047100e+02
-0 1908     -4.263300e+02 8.130005e+00
-1 1908     -1.908900e+02 1.459700e+02
-15 1908     -6.036300e+02 8.834000e+01
-0 1909     1.462200e+02 -2.198500e+02
-1 1909     2.319399e+02 -2.298300e+02
-7 1909     1.018500e+02 -7.750000e+01
-10 1909     9.881000e+01 -9.783002e+01
-15 1909     1.919301e+02 -1.415700e+02
-0 1910     1.658002e+01 -2.784000e+02
-1 1910     9.626001e+01 -2.463500e+02
-4 1910     -4.836600e+02 -4.140800e+02
-10 1910     -4.428003e+01 -1.780600e+02
-12 1910     7.772998e+01 -2.556300e+02
-13 1910     4.144301e+02 -4.715500e+02
-0 1911     3.164001e+01 -2.663400e+02
-1 1911     1.122400e+02 -2.391200e+02
-6 1911     9.352002e+01 -2.787900e+02
-10 1911     -2.854999e+01 -1.633000e+02
-12 1911     9.590002e+01 -2.357700e+02
-15 1911     4.414001e+01 -2.194000e+02
-0 1912     2.382200e+02 -2.335400e+02
-1 1912     3.179500e+02 -2.743900e+02
-7 1912     1.936100e+02 -7.446997e+01
-8 1912     4.257300e+02 -1.701100e+02
-10 1912     2.057200e+02 -1.031100e+02
-15 1912     3.189500e+02 -1.479700e+02
-0 1913     -6.991998e+01 -5.719200e+02
-1 1913     -7.542999e+01 -4.955300e+02
-4 1913     -7.248700e+02 -3.299200e+02
-9 1913     1.787500e+02 -4.463000e+02
-10 1913     -1.120000e+02 -5.250100e+02
-0 1914     -7.866998e+01 -5.549399e+02
-1 1914     -7.695001e+01 -4.769200e+02
-7 1914     -6.609998e+01 -4.602900e+02
-0 1915     3.294000e+01 5.569000e+02
-1 1915     4.262800e+02 5.594000e+02
-2 1915     -2.654900e+02 3.236100e+02
-3 1915     -3.962600e+02 -8.880005e+00
-5 1915     4.383400e+02 -8.956000e+01
-8 1915     -1.391500e+02 2.493500e+02
-9 1915     -3.804000e+02 3.476300e+02
-12 1915     -2.790900e+02 5.798600e+02
-13 1915     2.155100e+02 2.195900e+02
-14 1915     3.451300e+02 -1.767500e+02
-0 1916     -5.910600e+02 1.203003e+01
-1 1916     -3.359600e+02 1.927800e+02
-7 1916     -7.433600e+02 -7.739990e+00
-0 1917     6.853003e+01 1.655100e+02
-1 1917     2.886700e+02 1.695500e+02
-10 1917     -3.090997e+01 3.413200e+02
-14 1917     5.690500e+02 -5.667500e+02
-0 1918     1.006700e+02 2.164001e+01
-1 1918     2.629700e+02 2.100000e+01
-15 1918     9.839001e+01 1.805500e+02
-0 1919     1.262700e+02 -6.010999e+01
-1 1919     2.628700e+02 -6.716998e+01
-2 1919     3.055000e+02 -2.600098e-01
-3 1919     2.097800e+02 -3.056100e+02
-4 1919     -3.330000e+02 -5.144100e+02
-6 1919     1.314700e+02 -5.140015e+00
-7 1919     5.287000e+01 7.604999e+01
-15 1919     1.438700e+02 7.256000e+01
-0 1920     1.340500e+02 -7.435999e+01
-1 1920     2.668800e+02 -8.370001e+01
-2 1920     3.178500e+02 -1.389001e+01
-7 1920     6.253998e+01 6.321002e+01
-8 1920     2.895400e+02 -6.089001e+01
-10 1920     6.945001e+01 6.889001e+01
-13 1920     5.021500e+02 -2.740000e+02
-15 1920     1.565200e+02 5.442999e+01
-0 1921     1.374300e+02 -4.444000e+01
-1 1921     2.787600e+02 -5.489001e+01
-2 1921     3.111600e+02 1.890997e+01
-3 1921     2.135601e+02 -2.875100e+02
-8 1921     2.849400e+02 -3.414999e+01
-10 1921     7.014001e+01 1.035600e+02
-15 1921     1.570900e+02 9.557999e+01
-0 1922     -4.289001e+01 5.042400e+02
-1 1922     3.336200e+02 5.244500e+02
-6 1922     -5.287400e+02 5.182900e+02
-0 1923     5.637400e+02 2.830300e+02
-1 1923     8.812100e+02 1.411700e+02
-6 1923     3.363600e+02 4.382000e+02
-9 1923     2.223800e+02 3.025200e+02
-12 1923     4.247000e+02 4.446700e+02
-0 1924     2.305601e+02 8.440002e+00
-1 1924     3.906500e+02 -3.144000e+01
-6 1924     2.082500e+02 9.839001e+01
-7 1924     1.406200e+02 1.590300e+02
-8 1924     3.372800e+02 1.776001e+01
-10 1924     1.725800e+02 1.747300e+02
-15 1924     2.782800e+02 1.802900e+02
-0 1925     8.735999e+01 3.816998e+01
-1 1925     2.556100e+02 4.103998e+01
-2 1925     2.272500e+02 8.688000e+01
-6 1925     5.215997e+01 9.067999e+01
-7 1925     -3.020020e+00 1.667600e+02
-8 1925     2.180900e+02 2.401999e+01
-10 1925     4.169983e+00 1.943700e+02
-12 1925     7.053003e+01 1.435300e+02
-15 1925     7.839001e+01 2.011900e+02
-0 1926     -1.073200e+02 7.290997e+01
-1 1926     9.760999e+01 1.262600e+02
-2 1926     -7.101001e+01 1.070007e+00
-3 1926     -1.610700e+02 -3.162000e+02
-5 1926     4.592200e+02 -5.986300e+02
-6 1926     -2.514200e+02 3.815002e+01
-7 1926     -2.223800e+02 1.565400e+02
-8 1926     -1.859998e+01 -3.617999e+01
-12 1926     -2.107000e+02 9.321997e+01
-13 1926     2.365000e+02 -1.773700e+02
-15 1926     -1.856400e+02 2.211700e+02
-0 1927     3.597800e+02 4.663700e+02
-1 1927     7.608500e+02 3.816900e+02
-2 1927     2.984998e+01 2.295600e+02
-5 1927     7.661500e+02 -1.757100e+02
-6 1927     -8.632001e+01 5.533400e+02
-7 1927     1.199000e+02 5.713200e+02
-9 1927     -1.254800e+02 2.731000e+02
-11 1927     4.798101e+02 -2.761200e+02
-0 1928     2.325500e+02 4.897800e+02
-1 1928     6.245000e+02 4.399500e+02
-2 1928     -8.213000e+01 2.500800e+02
-4 1928     -6.570007e+00 -5.082600e+02
-5 1928     6.346100e+02 -1.552900e+02
-6 1928     -2.243700e+02 5.551900e+02
-7 1928     -2.270020e+00 5.814000e+02
-8 1928     1.260999e+01 1.942100e+02
-9 1928     -2.207200e+02 2.892800e+02
-12 1928     -5.803998e+01 5.281500e+02
-13 1928     3.738900e+02 1.746400e+02
-14 1928     5.396100e+02 -2.365300e+02
-0 1929     1.684100e+02 5.742400e+02
-1 1929     5.770900e+02 5.447600e+02
-6 1929     -3.080900e+02 6.498100e+02
-12 1929     -1.396400e+02 6.172300e+02
-0 1930     -4.396002e+01 -5.401001e+01
-1 1930     1.069800e+02 -1.195001e+01
-2 1930     1.043100e+02 -6.290997e+01
-6 1930     -7.883002e+01 -6.617999e+01
-7 1930     -1.232600e+02 4.904999e+01
-8 1930     1.133100e+02 -9.584998e+01
-10 1930     -1.382900e+02 7.444000e+01
-12 1930     -6.563000e+01 -1.134998e+01
-13 1930     3.330000e+02 -2.753100e+02
-0 1931     4.921997e+01 -2.108002e+01
-1 1931     2.001500e+02 -5.809998e+00
-2 1931     2.111400e+02 1.864001e+01
-6 1931     3.228998e+01 1.264001e+01
-7 1931     -3.108002e+01 1.012600e+02
-10 1931     -3.447998e+01 1.220500e+02
-13 1931     4.210100e+02 -2.353700e+02
-15 1931     3.421002e+01 1.150300e+02
-0 1932     1.224100e+02 1.704999e+01
-1 1932     2.830100e+02 1.026001e+01
-2 1932     2.723199e+02 7.584003e+01
-6 1932     9.975000e+01 7.846002e+01
-7 1932     3.573999e+01 1.519100e+02
-10 1932     4.654999e+01 1.734000e+02
-12 1932     1.187000e+02 1.298900e+02
-15 1932     1.284700e+02 1.772400e+02
-0 1933     7.789001e+01 -2.520020e+00
-1 1933     2.334600e+02 4.349976e+00
-2 1933     2.353800e+02 4.648999e+01
-4 1933     -2.844900e+02 -4.752400e+02
-7 1933     -5.109985e+00 1.255400e+02
-9 1933     8.627002e+01 1.323700e+02
-10 1933     -2.760010e+00 1.465200e+02
-15 1933     7.053003e+01 1.444800e+02
-0 1934     -2.952300e+02 4.042100e+02
-1 1934     5.358002e+01 4.866000e+02
-8 1934     -3.941300e+02 1.017700e+02
-10 1934     -4.914800e+02 5.946500e+02
-11 1934     -1.164900e+02 -3.513300e+02
-12 1934     -6.217200e+02 3.526200e+02
-0 1935     -3.005700e+02 4.162900e+02
-1 1935     5.121002e+01 5.001600e+02
-7 1935     -5.155600e+02 4.479700e+02
-11 1935     -1.201200e+02 -3.401900e+02
-0 1936     3.069800e+02 -2.520001e+01
-1 1936     4.638500e+02 -9.040002e+01
-7 1936     2.151300e+02 1.347400e+02
-10 1936     2.642600e+02 1.441100e+02
-0 1937     2.810300e+02 5.156000e+01
-1 1937     4.608000e+02 -5.049988e+00
-7 1937     1.780800e+02 2.059000e+02
-10 1937     2.270400e+02 2.303300e+02
-13 1937     5.996700e+02 -1.579800e+02
-15 1937     3.437800e+02 2.461500e+02
-0 1938     3.213600e+02 -4.200012e+00
-1 1938     4.870500e+02 -7.415002e+01
-7 1938     2.238101e+02 1.564800e+02
-10 1938     2.787300e+02 1.694200e+02
-0 1939     3.474700e+02 -1.477400e+02
-1 1939     4.661500e+02 -2.267300e+02
-12 1939     4.014700e+02 -9.539978e+00
-0 1940     2.461100e+02 -3.064400e+02
-1 1940     3.152700e+02 -3.506700e+02
-7 1940     2.029000e+02 -1.518800e+02
-10 1940     2.219200e+02 -1.855700e+02
-15 1940     3.425500e+02 -2.464300e+02
-0 1941     3.163800e+02 4.352002e+01
-1 1941     4.978700e+02 -2.416998e+01
-7 1941     2.101400e+02 2.017000e+02
-10 1941     2.687900e+02 2.249100e+02
-15 1941     3.945900e+02 2.404700e+02
-0 1942     3.032900e+02 4.732001e+01
-1 1942     4.837700e+02 -1.714001e+01
-7 1942     1.980800e+02 2.040800e+02
-10 1942     2.530300e+02 2.272100e+02
-15 1942     3.751400e+02 2.441500e+02
-0 1943     3.105200e+02 6.516998e+01
-1 1943     5.000100e+02 -9.000244e-01
-7 1943     2.007600e+02 2.217300e+02
-15 1943     3.840400e+02 2.691400e+02
-0 1944     3.005100e+02 -2.069200e+02
-1 1944     3.936400e+02 -2.691200e+02
-7 1944     2.452400e+02 -3.941998e+01
-10 1944     2.740400e+02 -6.637000e+01
-0 1945     2.571700e+02 5.645001e+01
-1 1945     4.365100e+02 7.440002e+00
-7 1945     1.550900e+02 2.078400e+02
-13 1945     5.808900e+02 -1.549400e+02
-15 1945     3.091100e+02 2.497200e+02
-0 1946     1.838500e+02 5.806000e+01
-1 1946     3.585601e+02 3.223999e+01
-10 1946     1.137500e+02 2.274900e+02
-12 1946     1.706100e+02 1.880500e+02
-13 1946     5.250400e+02 -1.575000e+02
-15 1946     2.078600e+02 2.417700e+02
-0 1947     1.721200e+02 1.646997e+01
-1 1947     3.324700e+02 -5.479980e+00
-7 1947     8.408002e+01 1.591000e+02
-0 1948     -1.948500e+02 3.886600e+02
-1 1948     1.505800e+02 4.469300e+02
-2 1948     -4.720400e+02 1.247900e+02
-7 1948     -4.049500e+02 4.314400e+02
-8 1948     -3.071900e+02 8.839999e+01
-10 1948     -3.668900e+02 5.850100e+02
-12 1948     -4.999600e+02 3.455300e+02
-14 1948     1.212900e+02 -3.580500e+02
-0 1949     1.078900e+02 3.953400e+02
-1 1949     4.641801e+02 3.746000e+02
-7 1949     -1.090100e+02 4.722000e+02
-9 1949     -3.004900e+02 1.897300e+02
-10 1949     -7.840027e+00 6.216200e+02
-14 1949     4.208300e+02 -3.432200e+02
-0 1950     5.813300e+02 -5.246002e+01
-1 1950     7.916801e+02 -2.189400e+02
-0 1951     3.340400e+02 -6.696002e+01
-1 1951     4.813800e+02 -1.417200e+02
-7 1951     2.456000e+02 9.713000e+01
-15 1951     4.328400e+02 9.103000e+01
-0 1952     -7.240997e+01 -1.390800e+02
-1 1952     5.210999e+01 -8.466998e+01
-0 1953     -2.640015e+00 4.491400e+02
-1 1953     3.618600e+02 4.584500e+02
-0 1954     -2.640015e+00 4.491400e+02
-1 1954     3.618600e+02 4.584500e+02
-0 1955     4.431801e+02 3.067300e+02
-1 1955     7.764500e+02 1.956800e+02
-7 1955     2.421400e+02 4.399900e+02
-14 1955     8.409200e+02 -4.106000e+02
-0 1956     9.951001e+01 3.953700e+02
-1 1956     4.551100e+02 3.769100e+02
-0 1957     2.522200e+02 2.452700e+02
-1 1957     5.565900e+02 1.855000e+02
-0 1958     3.045699e+02 2.312800e+02
-1 1958     6.063300e+02 1.562600e+02
-10 1958     2.386000e+02 4.451300e+02
-0 1959     5.449700e+02 8.473001e+01
-1 1959     7.987700e+02 -6.409998e+01
-7 1959     3.851100e+02 2.503700e+02
-10 1959     5.316801e+02 2.976600e+02
-15 1959     7.205000e+02 3.284900e+02
-0 1960     5.771300e+02 6.128998e+01
-1 1960     8.245500e+02 -9.851001e+01
-7 1960     4.201300e+02 2.340200e+02
-10 1960     5.702100e+02 2.740400e+02
-15 1960     7.678800e+02 3.007300e+02
-0 1961     5.389900e+02 6.834998e+01
-1 1961     7.873101e+02 -7.904999e+01
-0 1962     6.026000e+02 1.275000e+01
-1 1962     8.357100e+02 -1.575300e+02
-6 1962     4.548199e+02 1.504600e+02
-7 1962     4.517800e+02 1.924200e+02
-15 1962     8.089500e+02 2.370300e+02
-0 1963     5.512400e+02 -4.807001e+01
-1 1963     7.600200e+02 -2.041200e+02
-0 1964     1.908600e+02 -1.184998e+01
-1 1964     3.430100e+02 -3.939001e+01
-7 1964     1.075500e+02 1.341500e+02
-15 1964     2.261400e+02 1.471200e+02
-0 1965     6.717300e+02 -1.257700e+02
-1 1965     8.649200e+02 -3.270100e+02
-0 1966     6.752100e+02 -1.287700e+02
-1 1966     8.677100e+02 -3.313700e+02
-0 1967     1.683500e+02 -3.827002e+01
-1 1967     3.112900e+02 -5.865997e+01
-6 1967     1.671000e+02 3.237000e+01
-15 1967     1.983500e+02 1.079700e+02
-0 1968     3.877100e+02 -1.012600e+02
-1 1968     5.284399e+02 -1.944200e+02
-12 1968     4.187800e+02 4.391998e+01
-0 1969     -1.778998e+01 -1.675000e+01
-1 1969     1.406600e+02 1.714001e+01
-0 1970     3.567800e+02 -1.420600e+02
-1 1970     4.782100e+02 -2.243500e+02
-0 1971     3.427400e+02 -1.432000e+02
-1 1971     4.632000e+02 -2.206600e+02
-0 1972     3.237000e+02 -1.781200e+02
-1 1972     4.287100e+02 -2.486000e+02
-0 1973     -8.780029e+00 -1.148100e+02
-1 1973     1.174500e+02 -7.970001e+01
-6 1973     6.799927e-01 -1.138500e+02
-0 1974     -1.015997e+01 -1.182000e+02
-1 1974     1.148500e+02 -8.294000e+01
-7 1974     -7.389001e+01 -5.750000e+00
-10 1974     -9.239001e+01 2.700012e+00
-15 1974     -3.309998e+01 -2.440002e+01
-0 1975     4.166998e+01 -1.371300e+02
-1 1975     1.567900e+02 -1.161100e+02
-0 1976     5.980800e+02 -2.867700e+02
-1 1976     7.111899e+02 -4.628199e+02
-0 1977     5.291000e+02 -3.514900e+02
-1 1977     6.081801e+02 -5.011700e+02
-0 1978     4.278800e+02 -4.738000e+02
-1 1978     4.502300e+02 -5.832200e+02
-0 1979     1.421000e+02 -5.576000e+02
-1 1979     1.305200e+02 -5.571600e+02
-6 1979     3.162400e+02 -5.764399e+02
-10 1979     1.292500e+02 -4.838600e+02
-0 1980     -9.681000e+01 -5.034000e+02
-1 1980     -7.478998e+01 -4.234600e+02
-6 1980     2.667999e+01 -6.249399e+02
-7 1980     -9.725000e+01 -4.143200e+02
-0 1981     -2.386300e+02 -4.850500e+02
-1 1981     -1.970700e+02 -3.598300e+02
-6 1981     -1.499000e+02 -6.732200e+02
-0 1982     1.118500e+02 4.041300e+02
-1 1982     4.702900e+02 3.824300e+02
-2 1982     -1.796200e+02 1.505800e+02
-7 1982     -1.066600e+02 4.817400e+02
-11 1982     2.544000e+02 -3.446300e+02
-13 1982     2.800200e+02 9.394000e+01
-14 1982     4.241100e+02 -3.334300e+02
-0 1983     4.147300e+02 3.320800e+02
-1 1983     7.681600e+02 2.270600e+02
-6 1983     4.995001e+01 4.167800e+02
-7 1983     1.995000e+02 4.519100e+02
-10 1983     3.593101e+02 5.774500e+02
-0 1984     3.653199e+02 3.046800e+02
-1 1984     7.022600e+02 2.127600e+02
-6 1984     1.321002e+01 3.743200e+02
-0 1985     5.619399e+02 2.017100e+02
-1 1985     8.531200e+02 5.458002e+01
-13 1985     7.591300e+02 -2.579999e+01
-15 1985     7.309800e+02 4.954500e+02
-0 1986     -9.797998e+01 2.419500e+02
-1 1986     2.016899e+02 2.785700e+02
-5 1986     3.239301e+02 -4.299600e+02
-7 1986     -2.806800e+02 2.974000e+02
-10 1986     -2.339200e+02 4.170700e+02
-11 1986     6.003003e+01 -5.006400e+02
-13 1986     1.352700e+02 -5.521997e+01
-14 1986     2.410100e+02 -5.161300e+02
-0 1987     -3.390800e+02 7.942999e+01
-1 1987     -8.609998e+01 1.888100e+02
-10 1987     -4.995800e+02 1.995800e+02
-0 1988     7.303800e+02 -2.733000e+02
-1 1988     8.704100e+02 -5.028199e+02
-0 1989     7.037800e+02 -2.929200e+02
-1 1989     8.303101e+02 -5.120900e+02
-7 1989     6.043900e+02 -7.154999e+01
-0 1990     5.922300e+02 -3.256900e+02
-1 1990     6.882400e+02 -5.002400e+02
-0 1991     2.570007e+00 -2.501700e+02
-1 1991     8.906000e+01 -2.144400e+02
-15 1991     2.679993e+00 -2.012700e+02
-0 1992     -2.669300e+02 -4.272100e+02
-1 1992     -2.019500e+02 -2.983900e+02
-0 1993     -1.070200e+02 4.434900e+02
-1 1993     2.521400e+02 4.792300e+02
-0 1994     1.135999e+01 4.205200e+02
-1 1994     3.688101e+02 4.255700e+02
-7 1994     -2.058600e+02 4.874100e+02
-0 1995     5.731300e+02 2.003000e+02
-1 1995     8.644800e+02 5.015997e+01
-13 1995     7.709500e+02 -2.544000e+01
-0 1996     5.569600e+02 6.853998e+01
-1 1996     8.060601e+02 -8.472998e+01
-0 1997     -2.502100e+02 4.004999e+01
-1 1997     -1.757001e+01 1.281400e+02
-10 1997     -3.903100e+02 1.629100e+02
-0 1998     2.067800e+02 -1.428300e+02
-1 1998     3.181700e+02 -1.743700e+02
-10 1998     1.600700e+02 -2.969971e+00
-15 1998     2.648300e+02 -2.878998e+01
-0 1999     -1.307200e+02 -9.263000e+01
-1 1999     1.550000e+01 -2.402002e+01
-0 2000     -5.522998e+01 -1.511400e+02
-1 2000     6.360999e+01 -1.011700e+02
-12 2000     -4.103998e+01 -1.222400e+02
-0 2001     5.056700e+02 -3.677600e+02
-1 2001     5.766899e+02 -5.086500e+02
-0 2002     1.095600e+02 -5.720699e+02
-1 2002     9.363000e+01 -5.592900e+02
-7 2002     1.232100e+02 -4.368000e+02
-10 2002     9.365997e+01 -5.040400e+02
-0 2003     1.072200e+02 4.085800e+02
-1 2003     4.662400e+02 3.883000e+02
-4 2003     -4.753003e+01 -4.185700e+02
-7 2003     -1.126900e+02 4.851800e+02
-8 2003     -7.153003e+01 1.178900e+02
-9 2003     -3.032100e+02 2.032900e+02
-11 2003     2.485699e+02 -3.414400e+02
-13 2003     2.753400e+02 9.701999e+01
-14 2003     4.184301e+02 -3.291900e+02
-0 2004     3.541998e+01 1.227700e+02
-1 2004     2.369800e+02 1.383500e+02
-4 2004     -1.946900e+02 -4.373800e+02
-5 2004     6.535500e+02 -5.317400e+02
-7 2004     -7.498999e+01 2.389000e+02
-10 2004     -6.564001e+01 2.876000e+02
-12 2004     -2.804999e+01 2.136200e+02
-13 2004     3.809399e+02 -1.175300e+02
-15 2004     -2.409973e+00 3.099000e+02
-0 2005     5.187400e+02 -3.591500e+02
-1 2005     5.941400e+02 -5.046600e+02
-7 2005     4.553500e+02 -1.619600e+02
-12 2005     6.156300e+02 -2.294600e+02
-0 2006     3.067500e+02 2.491400e+02
-1 2006     6.157700e+02 1.735400e+02
-0 2007     -8.620001e+01 1.911500e+02
-1 2007     1.946500e+02 2.265400e+02
-0 2008     5.568199e+02 -3.820000e+02
-1 2008     6.255300e+02 -5.424900e+02
-0 2009     6.429200e+02 -2.948200e+02
-1 2009     7.586100e+02 -4.889600e+02
-0 2010     -2.519700e+02 -4.703300e+02
-1 2010     -2.041300e+02 -3.420400e+02
-6 2010     -1.765100e+02 -6.642900e+02
-7 2010     -2.625700e+02 -4.147800e+02
-0 2011     6.160400e+02 -3.161300e+02
-1 2011     7.188700e+02 -4.996300e+02
-0 2012     6.264800e+02 -3.272900e+02
-1 2012     7.246899e+02 -5.156801e+02
-0 2013     5.143199e+02 -3.449300e+02
-1 2013     5.947600e+02 -4.890000e+02
-7 2013     4.477600e+02 -1.506200e+02
-13 2013     8.420500e+02 -5.097500e+02
-0 2014     -2.349200e+02 -4.552300e+02
-1 2014     -1.833300e+02 -3.340000e+02
-7 2014     -2.494500e+02 -3.972600e+02
-0 2015     5.400100e+02 1.135999e+01
-1 2015     7.709600e+02 -1.391900e+02
-6 2015     3.767700e+02 1.217400e+02
-7 2015     3.899900e+02 1.781200e+02
-10 2015     5.320601e+02 2.117800e+02
-12 2015     4.636300e+02 1.334500e+02
-0 2016     2.234800e+02 -1.117600e+02
-1 2016     3.476600e+02 -1.495400e+02
-7 2016     1.527500e+02 3.972998e+01
-10 2016     1.763800e+02 3.515997e+01
-0 2017     5.187400e+02 -3.591500e+02
-1 2017     5.941400e+02 -5.046600e+02
-12 2017     6.156300e+02 -2.294600e+02
-0 2018     -2.535900e+02 4.390000e+02
-1 2018     1.037500e+02 5.110400e+02
-0 2019     4.481000e+01 -2.099200e+02
-1 2019     1.365700e+02 -1.879100e+02
-6 2019     1.048000e+02 -1.972800e+02
-7 2019     1.699829e-01 -8.571997e+01
-10 2019     -1.940002e+01 -9.703998e+01
-12 2019     1.052000e+02 -1.519800e+02
-15 2019     5.292999e+01 -1.410100e+02
-0 2020     4.906300e+02 3.145700e+02
-1 2020     8.282600e+02 1.911200e+02
-2 2020     2.904500e+02 1.984400e+02
-7 2020     2.886000e+02 4.561700e+02
-9 2020     1.062500e+02 2.579100e+02
-13 2020     6.542300e+02 5.666998e+01
-0 2021     2.645001e+01 3.177002e+01
-1 2021     1.959800e+02 5.176001e+01
-2 2021     1.618700e+02 6.215002e+01
-4 2021     -2.533200e+02 -4.341600e+02
-7 2021     -6.403003e+01 1.491700e+02
-9 2021     2.625000e+01 1.425600e+02
-10 2021     -6.610999e+01 1.806700e+02
-13 2021     3.919399e+02 -1.922300e+02
-15 2021     -3.640015e+00 1.840500e+02
-0 2022     -1.226100e+02 -4.987900e+02
-1 2022     -9.622998e+01 -4.105900e+02
-0 2023     2.141899e+02 3.227800e+02
-1 2023     5.477100e+02 2.736300e+02
-7 2023     9.890015e+00 4.175200e+02
-14 2023     5.566300e+02 -4.141600e+02
-0 2024     1.444500e+02 -1.319600e+02
-1 2024     2.604600e+02 -1.437300e+02
-7 2024     8.215997e+01 7.669983e+00
-10 2024     8.709998e+01 3.599976e+00
-13 2024     5.169399e+02 -3.245700e+02
-15 2024     1.787000e+02 -2.239001e+01
-0 2025     5.956000e+01 2.671600e+02
-1 2025     3.673199e+02 2.607800e+02
-7 2025     -1.283000e+02 3.441100e+02
-10 2025     -5.125000e+01 4.626700e+02
-0 2026     4.252900e+02 -1.205800e+02
-1 2026     5.606100e+02 -2.267800e+02
-10 2026     4.098900e+02 4.635999e+01
-15 2026     5.665800e+02 2.965002e+01
-0 2027     6.870200e+02 -2.983700e+02
-1 2027     8.084200e+02 -5.104500e+02
-0 2028     5.107600e+02 -3.980600e+02
-1 2028     5.690200e+02 -5.406000e+02
-0 2029     -1.298400e+02 -5.172500e+02
-1 2029     -1.103900e+02 -4.250500e+02
-6 2029     -8.800049e-01 -6.545900e+02
-7 2029     -1.265500e+02 -4.347100e+02
-12 2029     -2.142999e+01 -6.074900e+02
-15 2029     -1.382300e+02 -5.804000e+02
-0 2030     -8.373999e+01 -5.225100e+02
-1 2030     -6.985999e+01 -4.451000e+02
-7 2030     -7.875000e+01 -4.301700e+02
-0 2031     -1.653100e+02 -5.051899e+02
-1 2031     -1.379300e+02 -4.021600e+02
-6 2031     -5.002002e+01 -6.586200e+02
-0 2032     -2.013900e+02 -5.017500e+02
-1 2032     -1.696300e+02 -3.872000e+02
-7 2032     -2.034200e+02 -4.349399e+02
-0 2033     -3.384998e+01 -4.023600e+02
-1 2033     1.810999e+01 -3.505400e+02
-7 2033     -5.637000e+01 -3.017500e+02
-15 2033     -2.370001e+01 -4.115300e+02
-0 2034     3.146400e+02 2.320700e+02
-1 2034     6.174301e+02 1.536000e+02
-10 2034     2.500400e+02 4.477900e+02
-11 2034     4.560500e+02 -5.011000e+02
-0 2035     7.184998e+01 -1.728100e+02
-1 2035     1.761000e+02 -1.606600e+02
-3 2035     2.068300e+02 -4.336899e+02
-6 2035     1.123100e+02 -1.496200e+02
-7 2035     1.810999e+01 -4.525000e+01
-10 2035     8.090027e+00 -5.142999e+01
-13 2035     4.601300e+02 -3.665500e+02
-15 2035     8.516998e+01 -8.740002e+01
-0 2036     2.871997e+01 -7.631000e+01
-1 2036     1.654700e+02 -5.395001e+01
-3 2036     1.185200e+02 -3.550000e+02
-7 2036     -4.260999e+01 4.189001e+01
-13 2036     4.076899e+02 -2.856100e+02
-15 2036     1.432001e+01 3.740002e+01
-0 2037     7.286300e+02 -3.030100e+02
-1 2037     8.551801e+02 -5.326700e+02
-7 2037     6.284900e+02 -7.608002e+01
-0 2038     1.392300e+02 -4.256500e+02
-1 2038     1.739200e+02 -4.306100e+02
-7 2038     1.206000e+02 -2.900600e+02
-0 2039     -2.692400e+02 -4.536600e+02
-1 2039     -2.134200e+02 -3.214400e+02
-6 2039     -2.102300e+02 -6.543700e+02
-0 2040     -3.375800e+02 -2.116100e+02
-1 2040     -1.882000e+02 -8.028003e+01
-6 2040     -4.707200e+02 -4.225400e+02
-9 2040     -3.381800e+02 -3.042500e+02
-0 2041     -4.144000e+02 3.309600e+02
-1 2041     -7.915002e+01 4.431300e+02
-7 2041     -6.222300e+02 3.470600e+02
-8 2041     -4.958000e+02 2.885001e+01
-10 2041     -6.259800e+02 4.961900e+02
-12 2041     -7.498100e+02 2.435900e+02
-15 2041     -6.364300e+02 5.359700e+02
-0 2042     1.219700e+02 4.253100e+02
-1 2042     4.866000e+02 4.016500e+02
-11 2042     2.619500e+02 -3.250100e+02
-0 2043     1.423101e+02 5.101900e+02
-1 2043     5.290400e+02 4.844900e+02
-6 2043     -3.161700e+02 5.657500e+02
-11 2043     2.736200e+02 -2.494700e+02
-12 2043     -1.508800e+02 5.440500e+02
-14 2043     4.550800e+02 -2.190800e+02
-0 2044     2.576700e+02 4.919400e+02
-1 2044     6.524100e+02 4.349100e+02
-2 2044     -6.015997e+01 2.537300e+02
-3 2044     -2.018200e+02 -7.981000e+01
-5 2044     6.606100e+02 -1.530200e+02
-6 2044     -1.979100e+02 5.636100e+02
-8 2044     3.063000e+01 1.976600e+02
-9 2044     -2.030100e+02 2.931500e+02
-12 2044     -3.251001e+01 5.345400e+02
-0 2045     3.064800e+02 5.669800e+02
-1 2045     7.299000e+02 5.033000e+02
-3 2045     -1.717700e+02 3.599854e-01
-9 2045     -1.789200e+02 3.644500e+02
-11 2045     4.176300e+02 -1.921100e+02
-0 2046     3.266600e+02 5.226100e+02
-1 2046     7.389200e+02 4.505000e+02
-3 2046     -1.520900e+02 -4.469000e+01
-11 2046     4.413400e+02 -2.290000e+02
-0 2047     2.576700e+02 4.919400e+02
-1 2047     6.524100e+02 4.349100e+02
-3 2047     -2.018200e+02 -7.981000e+01
-9 2047     -2.030100e+02 2.931500e+02
-11 2047     3.810000e+02 -2.599200e+02
-0 2048     3.374900e+02 2.644000e+01
-1 2048     5.177800e+02 -4.937000e+01
-10 2048     2.946600e+02 2.066800e+02
-15 2048     4.267900e+02 2.192900e+02
-0 2049     2.593900e+02 -1.240900e+02
-1 2049     3.797900e+02 -1.734700e+02
-7 2049     1.898400e+02 3.323999e+01
-10 2049     2.183600e+02 2.489001e+01
-12 2049     3.064700e+02 2.800293e-01
-13 2049     6.113199e+02 -3.096200e+02
-15 2049     3.350000e+02 3.140015e+00
-0 2050     2.449399e+02 -1.296300e+02
-1 2050     3.627300e+02 -1.739400e+02
-7 2050     1.772300e+02 2.553003e+01
-10 2050     2.030000e+02 1.684998e+01
-12 2050     2.948700e+02 -8.489990e+00
-13 2050     6.016300e+02 -3.157300e+02
-15 2050     3.158600e+02 -6.070007e+00
-0 2051     2.771300e+02 5.729000e+02
-1 2051     6.980400e+02 5.167900e+02
-2 2051     -5.409998e+01 3.411700e+02
-5 2051     6.775200e+02 -6.619000e+01
-9 2051     -2.004900e+02 3.689200e+02
-11 2051     3.912100e+02 -1.888500e+02
-13 2051     4.058800e+02 2.481900e+02
-14 2051     5.774600e+02 -1.490400e+02
-0 2052     -1.640600e+02 -5.389700e+02
-1 2052     -1.497600e+02 -4.330800e+02
-4 2052     -6.683100e+02 -2.548200e+02
-6 2052     -2.715997e+01 -6.937300e+02
-7 2052     -1.568800e+02 -4.630400e+02
-9 2052     7.248999e+01 -4.614600e+02
-0 2053     -1.042100e+02 3.997200e+02
-1 2053     2.452700e+02 4.350500e+02
-2 2053     -3.825700e+02 1.403600e+02
-6 2053     -5.786000e+02 3.674600e+02
-7 2053     -3.157000e+02 4.535200e+02
-9 2053     -4.721400e+02 1.822800e+02
-10 2053     -2.594600e+02 6.069900e+02
-14 2053     2.114399e+02 -3.443900e+02
-0 2054     3.429700e+02 5.711000e+02
-1 2054     7.731100e+02 4.986300e+02
-3 2054     -1.432400e+02 5.200012e+00
-5 2054     7.430200e+02 -6.547998e+01
-6 2054     -1.242500e+02 6.791000e+02
-9 2054     -1.533900e+02 3.692100e+02
-11 2054     4.507100e+02 -1.859100e+02
-0 2055     3.323500e+02 5.485900e+02
-1 2055     7.541801e+02 4.770100e+02
-2 2055     -4.510010e+00 3.162600e+02
-9 2055     -1.576600e+02 3.492600e+02
-11 2055     4.439000e+02 -2.064200e+02
-13 2055     4.508800e+02 2.320800e+02
-14 2055     6.330601e+02 -1.700800e+02
-0 2056     4.521100e+02 3.467600e+02
-1 2056     7.985900e+02 2.358800e+02
-2 2056     2.376600e+02 2.141000e+02
-6 2056     1.356300e+02 4.590800e+02
-8 2056     2.630200e+02 1.565900e+02
-9 2056     6.021002e+01 2.694200e+02
-0 2057     6.113199e+02 7.048999e+01
-1 2057     8.630601e+02 -9.937000e+01
-2 2057     5.341801e+02 5.484998e+01
-3 2057     3.995800e+02 -2.550600e+02
-9 2057     3.189500e+02 1.460900e+02
-12 2057     5.326500e+02 2.299000e+02
-15 2057     8.148600e+02 3.189400e+02
-0 2058     -1.414100e+02 3.438500e+02
-1 2058     1.938199e+02 3.889300e+02
-7 2058     -3.453900e+02 3.910500e+02
-13 2058     7.828998e+01 2.788000e+01
-14 2058     1.724301e+02 -4.062600e+02
-0 2059     8.594000e+01 5.495300e+02
-1 2059     4.807600e+02 5.391800e+02
-3 2059     -3.495400e+02 -1.656000e+01
-9 2059     -3.387900e+02 3.423100e+02
-0 2060     -1.808300e+02 -5.101000e+02
-1 2060     -1.542400e+02 -4.015600e+02
-6 2060     -6.471002e+01 -6.715100e+02
-7 2060     -1.797900e+02 -4.391500e+02
-9 2060     3.654999e+01 -4.474700e+02
-0 2061     1.359500e+02 -3.195100e+02
-1 2061     2.002300e+02 -3.258400e+02
-9 2061     2.322800e+02 -1.471300e+02
-10 2061     9.698999e+01 -2.132800e+02
-15 2061     1.931300e+02 -2.776300e+02
-0 2062     2.266200e+02 4.707400e+02
-1 2062     6.116300e+02 4.210600e+02
-2 2062     -8.515002e+01 2.291900e+02
-5 2062     6.296400e+02 -1.756000e+02
-6 2062     -2.266600e+02 5.304700e+02
-7 2062     -5.690002e+00 5.611900e+02
-8 2062     1.009998e+01 1.776300e+02
-9 2062     -2.220400e+02 2.703900e+02
-11 2062     3.558199e+02 -2.795100e+02
-12 2062     -6.028003e+01 5.059200e+02
-0 2063     -1.357500e+02 3.303300e+02
-1 2063     1.959600e+02 3.738200e+02
-7 2063     -3.379400e+02 3.774100e+02
-9 2063     -4.908600e+02 1.050900e+02
-14 2063     1.772700e+02 -4.215400e+02
-0 2064     1.135999e+01 4.205200e+02
-1 2064     3.688101e+02 4.255700e+02
-2 2064     -2.738200e+02 1.670900e+02
-7 2064     -2.058600e+02 4.874100e+02
-9 2064     -3.802400e+02 2.087900e+02
-13 2064     1.998900e+02 1.025200e+02
-0 2065     -2.078900e+02 -5.297200e+02
-1 2065     -1.857500e+02 -4.103900e+02
-6 2065     -8.257999e+01 -7.055200e+02
-7 2065     -2.027900e+02 -4.640100e+02
-9 2065     2.628998e+01 -4.724900e+02
-10 2065     -2.757600e+02 -4.931899e+02
-0 2066     -2.098900e+02 -4.509000e+02
-1 2066     -1.590800e+02 -3.381400e+02
-7 2066     -2.248300e+02 -3.877300e+02
-9 2066     -3.456000e+01 -4.196100e+02
-10 2066     -2.870500e+02 -4.025400e+02
-15 2066     -2.546800e+02 -5.017100e+02
-0 2067     -1.126900e+02 -5.096801e+02
-1 2067     -9.107001e+01 -4.235300e+02
-7 2067     -1.110000e+02 -4.240500e+02
-9 2067     9.925000e+01 -4.218800e+02
-0 2068     6.600800e+02 -9.315997e+01
-1 2068     8.630400e+02 -2.884900e+02
-6 2068     5.546801e+02 5.553998e+01
-8 2068     5.790800e+02 -1.050200e+02
-0 2069     -1.782600e+02 -4.842900e+02
-1 2069     -1.422500e+02 -3.788800e+02
-6 2069     -7.907999e+01 -6.432900e+02
-9 2069     2.059998e+01 -4.293100e+02
-0 2070     -1.758000e+02 -4.942500e+02
-1 2070     -1.441600e+02 -3.879600e+02
-6 2070     -6.546002e+01 -6.541300e+02
-7 2070     -1.767100e+02 -4.236400e+02
-9 2070     3.284003e+01 -4.359800e+02
-0 2071     5.381500e+02 -4.400024e-01
-1 2071     7.644800e+02 -1.505800e+02
-7 2071     3.893600e+02 1.663000e+02
-10 2071     5.304900e+02 1.979100e+02
-0 2072     -6.569000e+01 1.855900e+02
-1 2072     2.122600e+02 2.157500e+02
-5 2072     3.789100e+02 -4.911300e+02
-6 2072     -4.119600e+02 1.190300e+02
-7 2072     -2.345300e+02 2.487600e+02
-8 2072     -1.313600e+02 -5.270999e+01
-9 2072     -3.348700e+02 2.646997e+01
-0 2073     -9.496002e+01 9.504999e+01
-1 2073     1.181100e+02 1.439900e+02
-7 2073     -2.157300e+02 1.799900e+02
-15 2073     -1.716200e+02 2.541600e+02
-0 2074     5.503600e+02 -8.530029e+00
-1 2074     7.752900e+02 -1.632700e+02
-10 2074     5.450400e+02 1.904500e+02
-0 2075     5.227500e+02 1.194300e+02
-1 2075     7.866100e+02 -2.091998e+01
-7 2075     3.578199e+02 2.800300e+02
-10 2075     5.025200e+02 3.362700e+02
-12 2075     4.157100e+02 2.474800e+02
-13 2075     7.277900e+02 -1.032900e+02
-15 2075     6.852500e+02 3.739500e+02
-0 2076     -5.319800e+02 3.276600e+02
-1 2076     -1.902200e+02 4.704900e+02
-5 2076     -1.385200e+02 -3.289000e+02
-10 2076     -7.722000e+02 4.815300e+02
-13 2076     -2.377500e+02 -1.820007e+00
-15 2076     -8.016600e+02 5.159900e+02
-0 2077     1.594600e+02 5.195400e+02
-1 2077     5.521000e+02 4.894900e+02
-11 2077     2.894000e+02 -2.404400e+02
-0 2078     2.420900e+02 4.914900e+02
-1 2078     6.349000e+02 4.391000e+02
-7 2078     6.489990e+00 5.838300e+02
-11 2078     3.673400e+02 -2.605100e+02
-0 2079     4.097500e+02 3.583700e+02
-1 2079     7.738101e+02 2.556300e+02
-10 2079     3.503900e+02 6.091200e+02
-13 2079     5.437300e+02 7.839999e+01
-0 2080     3.713500e+02 3.354700e+02
-1 2080     7.207700e+02 2.427800e+02
-10 2080     3.081500e+02 5.770200e+02
-0 2081     2.120699e+02 3.120000e+02
-1 2081     5.411400e+02 2.632700e+02
-6 2081     -1.661800e+02 3.407600e+02
-0 2082     2.647500e+02 2.699100e+02
-1 2082     5.798600e+02 2.062600e+02
-0 2083     3.908800e+02 4.878800e+02
-1 2083     8.036100e+02 3.966500e+02
-2 2083     5.238000e+01 2.528300e+02
-3 2083     -9.488000e+01 -7.951001e+01
-5 2083     7.971300e+02 -1.517200e+02
-11 2083     5.060900e+02 -2.554500e+02
-12 2083     1.026500e+02 5.474600e+02
-14 2083     6.972100e+02 -2.292500e+02
-0 2084     2.428101e+02 2.530900e+02
-1 2084     5.497500e+02 1.961500e+02
-6 2084     -9.059000e+01 2.845200e+02
-7 2084     5.377002e+01 3.566600e+02
-15 2084     2.835900e+02 5.171500e+02
-0 2085     2.257600e+02 5.057900e+02
-1 2085     6.212800e+02 4.581600e+02
-11 2085     3.508800e+02 -2.490600e+02
-0 2086     1.679800e+02 4.954100e+02
-1 2086     5.541801e+02 4.623500e+02
-11 2086     2.986700e+02 -2.614200e+02
-0 2087     2.293900e+02 3.411300e+02
-1 2087     5.716801e+02 2.875500e+02
-7 2087     1.958002e+01 4.356800e+02
-13 2087     3.926400e+02 4.970001e+01
-14 2087     5.660699e+02 -3.940700e+02
-0 2088     -1.970300e+02 3.708000e+02
-1 2088     1.439800e+02 4.295500e+02
-2 2088     -4.733500e+02 1.005100e+02
-5 2088     2.019600e+02 -2.903300e+02
-7 2088     -4.048000e+02 4.120500e+02
-10 2088     -3.669100e+02 5.617900e+02
-13 2088     3.401001e+01 4.765997e+01
-14 2088     1.182000e+02 -3.792200e+02
-0 2089     2.861500e+02 3.603700e+02
-1 2089     6.387300e+02 2.914800e+02
-7 2089     7.084003e+01 4.613300e+02
-0 2090     2.027600e+02 3.409900e+02
-1 2090     5.431801e+02 2.948100e+02
-0 2091     2.186200e+02 4.891000e+02
-1 2091     6.087000e+02 4.425400e+02
-11 2091     3.460500e+02 -2.642800e+02
-0 2092     2.046899e+02 3.357800e+02
-1 2092     5.427600e+02 2.890000e+02
-0 2093     -2.450200e+02 4.735300e+02
-1 2093     1.201100e+02 5.431400e+02
-5 2093     1.634300e+02 -1.789100e+02
-7 2093     -4.674700e+02 5.151400e+02
-0 2094     -4.606500e+02 3.182500e+02
-1 2094     -1.230500e+02 4.437000e+02
-7 2094     -6.704400e+02 3.234000e+02
-10 2094     -6.809400e+02 4.760400e+02
-11 2094     -2.652800e+02 -4.251500e+02
-12 2094     -8.058300e+02 2.092800e+02
-15 2094     -6.983800e+02 5.113100e+02
-0 2095     -4.264500e+02 3.047700e+02
-1 2095     -9.359003e+01 4.227100e+02
-7 2095     -6.307900e+02 3.142100e+02
-11 2095     -2.359400e+02 -4.385200e+02
-0 2096     2.003000e+02 5.712300e+02
-1 2096     6.114700e+02 5.340300e+02
-2 2096     -1.187900e+02 3.403200e+02
-14 2096     5.038600e+02 -1.546600e+02
-0 2097     3.439000e+02 -1.877000e+02
-1 2097     4.461000e+02 -2.652200e+02
-2 2097     5.406100e+02 -9.403003e+01
-6 2097     3.861300e+02 -8.078998e+01
-10 2097     3.224100e+02 -3.979999e+01
-12 2097     4.180800e+02 -4.831000e+01
-0 2098     -1.756600e+02 -4.752000e+02
-1 2098     -1.365200e+02 -3.713800e+02
-6 2098     -8.273999e+01 -6.331500e+02
-7 2098     -1.848500e+02 -4.055400e+02
-9 2098     1.566998e+01 -4.230700e+02
-0 2099     -2.580200e+02 -4.118700e+02
-1 2099     -1.883900e+02 -2.872800e+02
-7 2099     -2.837100e+02 -3.593400e+02
-15 2099     -3.235100e+02 -4.551100e+02
-0 2100     7.315997e+01 3.523999e+01
-1 2100     2.407900e+02 4.248999e+01
-7 2100     -1.694000e+01 1.610600e+02
-10 2100     -1.237000e+01 1.891600e+02
-0 2101     3.279700e+02 -2.735999e+01
-1 2101     4.877000e+02 -1.000900e+02
-10 2101     2.887300e+02 1.437400e+02
-15 2101     4.190699e+02 1.445800e+02
-0 2102     3.061400e+02 1.069600e+02
-1 2102     5.128400e+02 4.121002e+01
-10 2102     2.505800e+02 2.978500e+02
-0 2103     5.460100e+02 8.729980e+00
-1 2103     7.764700e+02 -1.439800e+02
-6 2103     3.846200e+02 1.207600e+02
-7 2103     3.963700e+02 1.764500e+02
-10 2103     5.393500e+02 2.086500e+02
-12 2103     4.714301e+02 1.316800e+02
-13 2103     7.644900e+02 -2.000700e+02
-0 2104     3.819200e+02 -2.246000e+02
-1 2104     4.920900e+02 -3.188500e+02
-7 2104     3.072900e+02 -5.588000e+01
-15 2104     5.221000e+02 -1.180300e+02
-0 2105     -5.241998e+01 -1.557000e+02
-1 2105     6.483002e+01 -1.063000e+02
-7 2105     -1.102400e+02 -5.201001e+01
-15 2105     -8.344000e+01 -8.142999e+01
-0 2106     -4.784700e+02 1.599100e+02
-1 2106     -1.853800e+02 2.994200e+02
-0 2107     5.889500e+02 -3.244100e+02
-1 2107     6.851500e+02 -4.972900e+02
-0 2108     2.349200e+02 4.616998e+01
-1 2108     4.086000e+02 4.609985e+00
-15 2108     2.799399e+02 2.323900e+02
-0 2109     1.201300e+02 4.024700e+02
-1 2109     4.785800e+02 3.785300e+02
-5 2109     5.218500e+02 -2.525300e+02
-7 2109     -9.834003e+01 4.810400e+02
-8 2109     -6.166998e+01 1.122500e+02
-11 2109     2.625300e+02 -3.458300e+02
-0 2110     3.221300e+02 -3.034600e+02
-1 2110     3.980900e+02 -3.751600e+02
-7 2110     2.704500e+02 -1.380600e+02
-10 2110     3.093900e+02 -1.744400e+02
-15 2110     4.480800e+02 -2.329200e+02
-0 2111     -1.579400e+02 4.828998e+01
-1 2111     4.437000e+01 1.148000e+02
-2 2111     -1.266700e+02 -4.491998e+01
-4 2111     -2.261100e+02 -2.819800e+02
-7 2111     -2.706300e+02 1.220500e+02
-8 2111     -6.409998e+01 -7.239001e+01
-10 2111     -2.827700e+02 1.798300e+02
-15 2111     -2.506400e+02 1.795300e+02
-0 2112     4.940500e+02 2.599600e+02
-1 2112     8.146700e+02 1.321300e+02
-7 2112     2.992200e+02 4.037100e+02
-10 2112     4.580200e+02 4.999500e+02
-0 2113     -3.040100e+02 -1.138500e+02
-1 2113     -1.228700e+02 -2.800293e-01
-0 2114     5.438800e+02 6.919983e+00
-1 2114     7.735200e+02 -1.449000e+02
-0 2115     6.975000e+02 -3.552600e+02
-1 2115     7.955500e+02 -5.731300e+02
-12 2115     7.902400e+02 -1.745800e+02
-0 2116     2.381200e+02 -2.276300e+02
-1 2116     3.204100e+02 -2.680600e+02
-7 2116     1.917100e+02 -6.864001e+01
-10 2116     2.047900e+02 -9.659998e+01
-15 2116     3.181200e+02 -1.399900e+02
-0 2117     2.047600e+02 3.591400e+02
-1 2117     5.523400e+02 3.123800e+02
-10 2117     1.097700e+02 5.880300e+02
-0 2118     3.518199e+02 -1.932500e+02
-1 2118     4.520601e+02 -2.732400e+02
-10 2118     3.322700e+02 -4.526001e+01
-15 2118     4.715200e+02 -7.890002e+01
-0 2119     9.858002e+01 7.494000e+01
-1 2119     2.788900e+02 7.384998e+01
-2 2119     2.189200e+02 1.200600e+02
-8 2119     2.129400e+02 5.242999e+01
-15 2119     8.909998e+01 2.530600e+02
-0 2120     4.879301e+02 -4.324400e+02
-1 2120     5.305300e+02 -5.656700e+02
-0 2121     -2.169600e+02 3.892200e+02
-1 2121     1.284300e+02 4.529500e+02
-2 2121     -4.940000e+02 1.262800e+02
-5 2121     1.839300e+02 -2.688000e+02
-7 2121     -4.269100e+02 4.291700e+02
-10 2121     -3.932500e+02 5.833300e+02
-0 2122     2.990800e+02 -2.445500e+02
-1 2122     3.848400e+02 -3.068700e+02
-10 2122     2.766200e+02 -1.096300e+02
-15 2122     4.066801e+02 -1.555000e+02
-0 2123     -2.695700e+02 4.093400e+02
-1 2123     8.077002e+01 4.859200e+02
-7 2123     -4.838100e+02 4.448700e+02
-10 2123     -4.602500e+02 6.039600e+02
-11 2123     -9.290002e+01 -3.462800e+02
-0 2124     4.022300e+02 -1.099200e+02
-1 2124     5.399600e+02 -2.081400e+02
-6 2124     3.928200e+02 7.950012e+00
-12 2124     4.375300e+02 3.884998e+01
-13 2124     7.205000e+02 -2.912800e+02
-15 2124     5.330601e+02 4.109998e+01
-0 2125     6.223199e+02 -3.020100e+02
-1 2125     7.325000e+02 -4.879100e+02
-0 2126     9.788000e+01 5.696002e+01
-1 2126     2.722600e+02 5.583002e+01
-6 2126     5.528003e+01 1.139000e+02
-0 2127     2.128500e+02 3.471700e+02
-1 2127     5.559000e+02 2.982300e+02
-0 2128     5.438800e+02 6.919983e+00
-1 2128     7.735200e+02 -1.449000e+02
-6 2128     3.822600e+02 1.183500e+02
-10 2128     5.368199e+02 2.069200e+02
-0 2129     3.871200e+02 -1.767400e+02
-1 2129     5.033700e+02 -2.713500e+02
-10 2129     3.710300e+02 -2.297998e+01
-0 2130     2.574900e+02 1.066000e+02
-1 2130     4.556100e+02 5.739001e+01
-7 2130     1.448500e+02 2.552800e+02
-15 2130     3.047200e+02 3.189100e+02
-0 2131     -3.220900e+02 -1.312700e+02
-1 2131     -1.457800e+02 -1.112000e+01
-6 2131     -5.095900e+02 -3.259500e+02
-7 2131     -4.197100e+02 -9.871002e+01
-12 2131     -4.484700e+02 -2.481700e+02
-13 2131     2.882001e+01 -3.864000e+02
-0 2132     2.935900e+02 -2.491500e+02
-1 2132     3.778800e+02 -3.095600e+02
-15 2132     3.993300e+02 -1.621400e+02
-0 2133     9.592999e+01 -3.548999e+01
-1 2133     2.405900e+02 -3.363000e+01
-2 2133     2.668500e+02 1.856000e+01
-7 2133     1.859003e+01 9.589999e+01
-15 2133     9.944000e+01 1.020900e+02
-0 2134     -9.619000e+01 1.093600e+02
-1 2134     1.222800e+02 1.571300e+02
-7 2134     -2.202600e+02 1.931300e+02
-13 2134     2.348000e+02 -1.473300e+02
-0 2135     -3.759900e+02 -1.530100e+02
-1 2135     -2.019500e+02 -1.565997e+01
-7 2135     -4.708500e+02 -1.304400e+02
-0 2136     6.239200e+02 -3.343000e+02
-1 2136     7.204100e+02 -5.213400e+02
-7 2136     5.436700e+02 -1.215500e+02
-0 2137     6.040200e+02 9.834000e+01
-1 2137     8.644500e+02 -6.806000e+01
-7 2137     4.417800e+02 2.750900e+02
-10 2137     5.998700e+02 3.196300e+02
-15 2137     8.017600e+02 3.563600e+02
-0 2138     6.450100e+02 -3.384600e+02
-1 2138     7.429301e+02 -5.342300e+02
-7 2138     5.637900e+02 -1.213200e+02
-12 2138     7.312800e+02 -1.724800e+02
-0 2139     -1.860900e+02 1.607400e+02
-1 2139     8.669000e+01 2.247700e+02
-7 2139     -3.508200e+02 2.068000e+02
-10 2139     -3.284900e+02 3.120100e+02
-12 2139     -4.128400e+02 9.778998e+01
-15 2139     -2.942900e+02 3.294300e+02
-0 2140     -2.052000e+02 -4.443700e+02
-1 2140     -1.519600e+02 -3.329500e+02
-6 2140     -1.388300e+02 -6.141000e+02
-7 2140     -2.216300e+02 -3.807800e+02
-15 2140     -2.492200e+02 -4.925100e+02
-0 2141     4.958400e+02 3.920000e+02
-1 2141     8.592900e+02 2.730200e+02
-7 2141     2.836300e+02 5.326700e+02
-0 2142     5.261801e+02 2.554999e+01
-1 2142     7.613600e+02 -1.199100e+02
-6 2142     3.550100e+02 1.319400e+02
-7 2142     3.738900e+02 1.890400e+02
-12 2142     4.432100e+02 1.438000e+02
-15 2142     7.009900e+02 2.436400e+02
-0 2143     4.814800e+02 3.511200e+02
-1 2143     8.305500e+02 2.325400e+02
-6 2143     1.749300e+02 4.740800e+02
-7 2143     2.748500e+02 4.902000e+02
-9 2143     8.877002e+01 2.845600e+02
-10 2143     4.368500e+02 6.071900e+02
-0 2144     1.166900e+02 -2.141100e+02
-1 2144     2.050500e+02 -2.146100e+02
-10 2144     6.396002e+01 -9.410999e+01
-0 2145     3.406899e+02 -1.471002e+01
-1 2145     5.081200e+02 -9.172998e+01
-10 2145     3.030699e+02 1.597000e+02
-15 2145     4.367600e+02 1.637700e+02
-0 2146     2.122500e+02 -3.239900e+02
-1 2146     2.750601e+02 -3.559700e+02
-12 2146     3.100300e+02 -2.546400e+02
-15 2146     2.986100e+02 -2.742200e+02
-0 2147     9.303003e+01 3.131000e+01
-1 2147     2.587700e+02 3.265997e+01
-3 2147     1.400700e+02 -2.294100e+02
-7 2147     3.799988e+00 1.608900e+02
-10 2147     1.096002e+01 1.872600e+02
-13 2147     4.531400e+02 -1.864600e+02
-15 2147     8.678003e+01 1.928700e+02
-0 2148     8.840002e+01 1.746400e+02
-1 2148     3.157600e+02 1.731900e+02
-10 2148     -9.010010e+00 3.541500e+02
-13 2148     4.042600e+02 -7.387000e+01
-14 2148     5.847700e+02 -5.560500e+02
-15 2148     6.582001e+01 3.884300e+02
-0 2149     6.726500e+02 -3.699700e+02
-1 2149     7.603700e+02 -5.777200e+02
-12 2149     7.732200e+02 -1.953500e+02
-0 2150     -1.870700e+02 -4.946400e+02
-1 2150     -1.541400e+02 -3.855100e+02
-6 2150     -8.253000e+01 -6.584000e+02
-7 2150     -1.902900e+02 -4.253100e+02
-9 2150     1.888000e+01 -4.403101e+02
-0 2151     5.702800e+02 1.133400e+02
-1 2151     8.338700e+02 -4.173999e+01
-0 2152     3.285999e+01 2.102500e+02
-1 2152     3.190200e+02 2.124500e+02
-6 2152     -3.079200e+02 1.775200e+02
-10 2152     -7.676001e+01 3.924800e+02
-14 2152     3.961899e+02 -5.456700e+02
-0 2153     -4.490600e+02 9.573001e+01
-1 2153     -1.809900e+02 2.328000e+02
-5 2153     -3.827002e+01 -5.896899e+02
-7 2153     -6.101100e+02 1.003700e+02
-0 2154     3.095100e+02 -1.559998e+00
-1 2154     4.742500e+02 -6.729999e+01
-0 2155     3.051300e+02 -5.996002e+01
-1 2155     4.514800e+02 -1.268900e+02
-7 2155     2.203800e+02 9.984000e+01
-10 2155     2.646000e+02 1.039800e+02
-15 2155     3.894301e+02 9.607999e+01
-0 2156     1.283400e+02 1.472700e+02
-1 2156     3.387300e+02 1.360500e+02
-0 2157     3.061400e+02 1.069600e+02
-1 2157     5.128400e+02 4.121002e+01
-0 2158     2.445601e+02 -2.231100e+02
-1 2158     3.294900e+02 -2.659100e+02
-7 2158     1.970800e+02 -6.365002e+01
-15 2158     3.265900e+02 -1.326900e+02
-0 2159     2.454301e+02 -3.026100e+02
-1 2159     3.149700e+02 -3.465800e+02
-10 2159     2.209500e+02 -1.814100e+02
-15 2159     3.407400e+02 -2.413300e+02
-0 2160     -2.321300e+02 -4.391500e+02
-1 2160     -1.744800e+02 -3.203700e+02
-9 2160     -6.429999e+01 -4.198400e+02
-0 2161     8.588000e+01 -9.251001e+01
-1 2161     2.147300e+02 -8.678003e+01
-7 2161     1.760999e+01 3.684998e+01
-10 2161     1.588000e+01 4.327002e+01
-15 2161     9.370001e+01 2.328998e+01
-0 2162     4.389000e+02 3.154500e+02
-1 2162     7.747700e+02 2.058200e+02
-7 2162     2.363500e+02 4.475700e+02
-11 2162     5.639900e+02 -4.140000e+02
-13 2162     6.020400e+02 5.098999e+01
-14 2162     8.335699e+02 -4.016000e+02
-0 2163     -2.052000e+02 -4.443700e+02
-1 2163     -1.519600e+02 -3.329500e+02
-7 2163     -2.216300e+02 -3.807800e+02
-9 2163     -3.420001e+01 -4.139500e+02
-15 2163     -2.492200e+02 -4.925100e+02
-0 2164     -3.653998e+01 1.371100e+02
-1 2164     1.781100e+02 1.704000e+02
-4 2164     -1.802100e+02 -3.772900e+02
-5 2164     5.498700e+02 -5.212300e+02
-7 2164     -1.560200e+02 2.364100e+02
-10 2164     -1.507800e+02 2.977000e+02
-13 2164     3.034000e+02 -1.144100e+02
-15 2164     -1.002800e+02 3.190300e+02
-0 2165     9.252002e+01 5.800000e+01
-1 2165     2.674900e+02 5.895001e+01
-7 2165     -1.739990e+00 1.868100e+02
-10 2165     8.250000e+00 2.180900e+02
-0 2166     1.771400e+02 3.871997e+01
-1 2166     3.449900e+02 1.528998e+01
-0 2167     2.978900e+02 -2.879100e+02
-1 2167     3.755000e+02 -3.511400e+02
-10 2167     2.795400e+02 -1.590600e+02
-15 2167     4.119500e+02 -2.146400e+02
-0 2168     -1.863600e+02 -5.011600e+02
-1 2168     -1.559100e+02 -3.915700e+02
-7 2168     -1.882600e+02 -4.310500e+02
-0 2169     2.096100e+02 3.177002e+01
-1 2169     3.762800e+02 -1.179993e+00
-3 2169     2.347700e+02 -2.121200e+02
-7 2169     1.165600e+02 1.788000e+02
-10 2169     1.465800e+02 1.991500e+02
-15 2169     2.459800e+02 2.096800e+02
-0 2170     2.951899e+02 -3.065200e+02
-1 2170     3.691600e+02 -3.686000e+02
-0 2171     -2.439000e+02 -4.438900e+02
-1 2171     -1.867400e+02 -3.208700e+02
-7 2171     -2.580700e+02 -3.849200e+02
-0 2172     -1.479600e+02 -1.170700e+02
-1 2172     -1.009998e+01 -4.192999e+01
-10 2172     -2.522000e+02 -1.063000e+01
-15 2172     -2.177800e+02 -4.187000e+01
-0 2173     -1.880800e+02 1.580200e+02
-1 2173     8.390002e+01 2.225100e+02
-4 2173     -1.673900e+02 -2.328100e+02
-7 2173     -3.502900e+02 2.017700e+02
-8 2173     -2.310600e+02 -9.287000e+01
-9 2173     -4.348900e+02 -2.031000e+01
-10 2173     -3.299200e+02 3.070800e+02
-13 2173     8.031000e+01 -1.335800e+02
-0 2174     -1.157100e+02 -5.090100e+02
-1 2174     -9.419000e+01 -4.224300e+02
-4 2174     -6.536000e+02 -2.930000e+02
-6 2174     9.150024e+00 -6.399200e+02
-9 2174     9.502002e+01 -4.214600e+02
-0 2175     -1.188600e+02 7.346997e+01
-1 2175     8.653003e+01 1.298400e+02
-4 2175     -2.132800e+02 -3.116300e+02
-5 2175     4.460200e+02 -5.966100e+02
-10 2175     -2.402000e+02 2.143800e+02
-12 2175     -2.237800e+02 9.175000e+01
-13 2175     2.265601e+02 -1.763100e+02
-15 2175     -2.014100e+02 2.205000e+02
-0 2176     -1.788700e+02 -7.600098e-01
-1 2176     5.469971e+00 7.626001e+01
-4 2176     -2.537200e+02 -2.696100e+02
-6 2176     -2.971400e+02 -6.926001e+01
-10 2176     -3.018400e+02 1.212800e+02
-12 2176     -2.679000e+02 -8.020020e+00
-15 2176     -2.733600e+02 1.109600e+02
-0 2177     -1.799200e+02 -4.204999e+01
-1 2177     -1.197998e+01 3.822998e+01
-4 2177     -2.798800e+02 -2.711800e+02
-6 2177     -2.641700e+02 -1.113300e+02
-7 2177     -2.694100e+02 3.291998e+01
-10 2177     -2.978200e+02 7.321002e+01
-12 2177     -2.464000e+02 -4.945001e+01
-15 2177     -2.699400e+02 5.534998e+01
-0 2178     1.904500e+02 7.527002e+01
-1 2178     3.715900e+02 4.738000e+01
-2 2178     3.041600e+02 1.320700e+02
-4 2178     -2.451300e+02 -5.630300e+02
-6 2178     1.412900e+02 1.578800e+02
-7 2178     8.989001e+01 2.178500e+02
-9 2178     1.376300e+02 2.059000e+02
-10 2178     1.196000e+02 2.481600e+02
-12 2178     1.704000e+02 2.065900e+02
-13 2178     5.262600e+02 -1.432800e+02
-15 2178     2.148300e+02 2.663300e+02
-0 2179     -9.760010e+00 8.404999e+01
-1 2179     1.807500e+02 1.126700e+02
-4 2179     -2.151700e+02 -4.032200e+02
-5 2179     6.081500e+02 -5.767100e+02
-7 2179     -1.129100e+02 1.929200e+02
-10 2179     -1.137100e+02 2.380300e+02
-12 2179     -6.840002e+01 1.590600e+02
-15 2179     -5.826001e+01 2.505100e+02
-0 2180     3.408900e+02 -1.599900e+02
-1 2180     4.540601e+02 -2.365600e+02
-7 2180     2.713400e+02 1.016998e+01
-10 2180     3.163000e+02 -8.250000e+00
-12 2180     4.007200e+02 -2.253998e+01
-15 2180     4.527900e+02 -3.502002e+01
-0 2181     -1.670000e+02 -5.010200e+02
-1 2181     -1.385700e+02 -3.978000e+02
-0 2182     2.880800e+02 5.117999e+01
-1 2182     4.688000e+02 -7.619995e+00
-7 2182     1.839500e+02 2.062200e+02
-10 2182     2.353000e+02 2.305700e+02
-0 2183     3.206000e+01 4.216998e+01
-1 2183     2.043300e+02 6.031000e+01
-7 2183     -5.997998e+01 1.603800e+02
-10 2183     -6.100000e+01 1.930700e+02
-13 2183     3.965601e+02 -1.831400e+02
-15 2183     2.609985e+00 1.985800e+02
-0 2184     -4.359700e+02 1.031200e+02
-1 2184     -1.665100e+02 2.362200e+02
-4 2184     -1.721600e+02 -8.290997e+01
-0 2185     2.781000e+02 4.715997e+01
-1 2185     4.559700e+02 -8.320007e+00
-7 2185     1.763700e+02 2.016900e+02
-10 2185     2.241300e+02 2.238700e+02
-13 2185     5.984800e+02 -1.614100e+02
-15 2185     3.402700e+02 2.395100e+02
-0 2186     4.060200e+02 -4.694900e+02
-1 2186     4.291100e+02 -5.705100e+02
-0 2187     2.349200e+02 4.872500e+02
-1 2187     6.260100e+02 4.363100e+02
-9 2187     -2.185100e+02 2.867800e+02
-14 2187     5.420900e+02 -2.391500e+02
-0 2188     2.349200e+02 4.872500e+02
-1 2188     6.260100e+02 4.363100e+02
-9 2188     -2.185100e+02 2.867800e+02
-14 2188     5.420900e+02 -2.391500e+02
-0 2189     2.305900e+02 4.757200e+02
-1 2189     6.179600e+02 4.252400e+02
-14 2189     5.385800e+02 -2.514100e+02
-0 2190     3.757000e+02 4.710300e+02
-1 2190     7.808000e+02 3.823900e+02
-0 2191     1.369300e+02 4.621100e+02
-1 2191     5.117700e+02 4.355800e+02
-0 2192     2.130400e+02 4.303500e+02
-1 2192     5.865900e+02 3.827000e+02
-0 2193     -4.637000e+02 3.205800e+02
-1 2193     -1.255200e+02 4.465700e+02
-7 2193     -6.740200e+02 3.253400e+02
-10 2193     -6.852700e+02 4.782100e+02
-12 2193     -8.103700e+02 2.114300e+02
-15 2193     -7.033200e+02 5.141800e+02
-0 2194     -1.660999e+01 1.524400e+02
-1 2194     2.019500e+02 1.803700e+02
-10 2194     -1.286500e+02 3.176500e+02
-15 2194     -7.514001e+01 3.427800e+02
-0 2195     -1.196100e+02 5.309998e+00
-1 2195     5.879999e+01 6.602002e+01
-0 2196     6.198500e+02 -1.697998e+01
-1 2196     8.445699e+02 -1.947400e+02
-0 2197     3.075699e+02 -1.861100e+02
-1 2197     4.087300e+02 -2.508400e+02
-7 2197     2.467000e+02 -1.912000e+01
-10 2197     2.804000e+02 -4.159003e+01
-12 2197     3.799600e+02 -5.639001e+01
-15 2197     4.095601e+02 -7.487000e+01
-0 2198     6.396500e+02 -2.431300e+02
-1 2198     7.767700e+02 -4.345500e+02
-0 2199     7.181300e+02 -3.491400e+02
-1 2199     8.225400e+02 -5.756700e+02
-12 2199     8.066500e+02 -1.632100e+02
-0 2200     1.597700e+02 4.804700e+02
-1 2200     5.418500e+02 4.486100e+02
-2 2200     -1.446300e+02 2.393700e+02
-6 2200     -2.994400e+02 5.290100e+02
-7 2200     -7.009998e+01 5.643000e+02
-8 2200     -3.902002e+01 1.846600e+02
-13 2200     3.166899e+02 1.625900e+02
-14 2200     4.690000e+02 -2.497900e+02
-0 2201     3.801000e+02 4.858700e+02
-1 2201     7.904100e+02 3.971800e+02
-14 2201     6.863500e+02 -2.321500e+02
-0 2202     -5.678998e+01 4.667300e+02
-1 2202     3.091600e+02 4.892700e+02
-11 2202     9.709998e+01 -2.944800e+02
-0 2203     -5.409973e+00 4.560600e+02
-1 2203     3.603199e+02 4.659800e+02
-5 2203     3.977300e+02 -1.962800e+02
-6 2203     -4.766900e+02 4.626700e+02
-7 2203     -2.265000e+02 5.221600e+02
-14 2203     3.082400e+02 -2.818500e+02
-0 2204     1.997500e+02 4.465600e+02
-1 2204     5.761801e+02 4.031500e+02
-7 2204     -2.800000e+01 5.341500e+02
-0 2205     9.790997e+01 4.382700e+02
-1 2205     4.644399e+02 4.209800e+02
-7 2205     -1.240800e+02 5.149600e+02
-0 2206     2.056600e+02 4.068300e+02
-1 2206     5.717400e+02 3.602800e+02
-14 2206     5.176300e+02 -3.257100e+02
-0 2207     5.709003e+01 2.161600e+02
-1 2207     3.456400e+02 2.115800e+02
-10 2207     -4.853003e+01 4.022100e+02
-0 2208     2.998900e+02 1.934000e+02
-1 2208     5.860400e+02 1.196900e+02
-10 2208     2.369000e+02 4.000800e+02
-0 2209     -4.698200e+02 1.290900e+02
-1 2209     -1.881000e+02 2.687500e+02
-0 2210     -4.253800e+02 9.104001e+01
-1 2210     -1.614600e+02 2.224100e+02
-0 2211     1.939000e+02 7.363000e+01
-1 2211     3.744900e+02 4.465997e+01
-6 2211     1.453800e+02 1.575500e+02
-7 2211     9.379999e+01 2.170200e+02
-0 2212     5.673101e+02 -2.020020e+00
-1 2212     7.946100e+02 -1.623300e+02
-7 2212     4.190000e+02 1.703900e+02
-0 2213     4.803700e+02 -2.472500e+02
-1 2213     5.978000e+02 -3.787900e+02
-0 2214     6.236300e+02 -2.852000e+02
-1 2214     7.405300e+02 -4.711899e+02
-0 2215     7.254900e+02 -2.999600e+02
-1 2215     8.528500e+02 -5.283101e+02
-12 2215     7.903400e+02 -1.148900e+02
-0 2216     4.616801e+02 -4.580000e+02
-1 2216     4.919200e+02 -5.809100e+02
-0 2217     1.438600e+02 -5.546300e+02
-1 2217     1.332800e+02 -5.547400e+02
-4 2217     -7.696500e+02 -5.184399e+02
-7 2217     1.516200e+02 -4.131900e+02
-9 2217     3.356100e+02 -3.576500e+02
-10 2217     1.311300e+02 -4.801899e+02
-0 2218     -4.662300e+02 3.169300e+02
-1 2218     -1.280000e+02 4.437100e+02
-10 2218     -6.866900e+02 4.740800e+02
-11 2218     -2.708500e+02 -4.265800e+02
-0 2219     2.424301e+02 3.341800e+02
-1 2219     5.821700e+02 2.770900e+02
-9 2219     -1.542700e+02 1.720600e+02
-11 2219     3.787700e+02 -4.046100e+02
-13 2219     4.053300e+02 4.491998e+01
-14 2219     5.823800e+02 -4.006700e+02
-0 2220     4.864000e+02 2.788300e+02
-1 2220     8.120699e+02 1.540800e+02
-7 2220     2.893800e+02 4.200200e+02
-13 2220     6.537000e+02 2.463000e+01
-0 2221     4.763000e+01 2.496400e+02
-1 2221     3.488800e+02 2.468300e+02
-7 2221     -1.356100e+02 3.259900e+02
-10 2221     -6.359003e+01 4.406100e+02
-11 2221     1.964900e+02 -4.913101e+02
-0 2222     -4.258200e+02 2.355800e+02
-1 2222     -1.119300e+02 3.563000e+02
-5 2222     -4.473999e+01 -4.354800e+02
-13 2222     -1.552000e+02 -8.051001e+01
-14 2222     -1.241800e+02 -5.305100e+02
-0 2223     5.684200e+02 2.209500e+02
-1 2223     8.660300e+02 7.335999e+01
-7 2223     3.899900e+02 3.874900e+02
-10 2223     5.476500e+02 4.613000e+02
-0 2224     -4.811400e+02 1.771700e+02
-1 2224     -1.819800e+02 3.157200e+02
-7 2224     -6.644800e+02 1.756700e+02
-10 2224     -6.858700e+02 3.021500e+02
-13 2224     -1.911100e+02 -1.322400e+02
-0 2225     -7.151001e+01 1.750700e+02
-1 2225     2.028700e+02 2.073600e+02
-0 2226     -4.348300e+02 1.110500e+02
-1 2226     -1.629000e+02 2.432800e+02
-0 2227     4.728998e+01 1.147300e+02
-1 2227     2.443700e+02 1.270200e+02
-7 2227     -6.070001e+01 2.332600e+02
-15 2227     1.471997e+01 3.006100e+02
-0 2228     5.670001e+01 6.277002e+01
-1 2228     2.347700e+02 7.385999e+01
-7 2228     -3.903998e+01 1.850900e+02
-8 2228     1.815000e+02 3.459000e+01
-10 2228     -3.315997e+01 2.202500e+02
-13 2228     4.151801e+02 -1.633400e+02
-15 2228     3.337000e+01 2.305400e+02
-0 2229     5.526100e+02 2.772998e+01
-1 2229     7.888800e+02 -1.262900e+02
-10 2229     5.452700e+02 2.311200e+02
-0 2230     -1.164100e+02 9.330017e+00
-1 2230     6.342999e+01 6.879999e+01
-6 2230     -2.115100e+02 -2.819000e+01
-7 2230     -2.139100e+02 9.587000e+01
-0 2231     5.861300e+02 1.897998e+01
-1 2231     8.204000e+02 -1.458600e+02
-10 2231     5.849500e+02 2.247700e+02
-12 2231     5.159500e+02 1.613900e+02
-15 2231     7.852500e+02 2.429000e+02
-0 2232     5.861300e+02 1.897998e+01
-1 2232     8.204000e+02 -1.458600e+02
-15 2232     7.852500e+02 2.429000e+02
-0 2233     -1.755100e+02 -6.295001e+01
-1 2233     -1.566998e+01 1.684998e+01
-10 2233     -2.909400e+02 5.056000e+01
-15 2233     -2.616400e+02 2.767999e+01
-0 2234     1.094500e+02 -3.123800e+02
-1 2234     1.754301e+02 -3.094200e+02
-0 2235     7.439600e+02 -3.013100e+02
-1 2235     8.744500e+02 -5.377000e+02
-7 2235     6.409700e+02 -7.222998e+01
-0 2236     4.095500e+02 -4.713400e+02
-1 2236     4.324700e+02 -5.736700e+02
-0 2237     -4.627400e+02 1.279000e+02
-1 2237     -1.820800e+02 2.658600e+02
-0 2238     2.074600e+02 4.273200e+02
-1 2238     5.792800e+02 3.807100e+02
-7 2238     -1.834003e+01 5.151900e+02
-11 2238     3.410300e+02 -3.203100e+02
-0 2239     8.647998e+01 -1.172400e+02
-1 2239     2.085300e+02 -1.114600e+02
-2 2239     2.809700e+02 -7.590002e+01
-3 2239     1.907100e+02 -3.795300e+02
-7 2239     2.187000e+01 1.167999e+01
-10 2239     1.923999e+01 1.445001e+01
-13 2239     4.630100e+02 -3.162900e+02
-15 2239     9.809003e+01 -1.028003e+01
-0 2240     -1.934200e+02 2.071600e+02
-1 2240     9.691998e+01 2.705900e+02
-0 2241     6.120900e+02 -3.498500e+02
-1 2241     6.999700e+02 -5.322500e+02
-0 2242     2.150200e+02 3.379600e+02
-1 2242     5.544301e+02 2.886000e+02
-0 2243     6.217800e+02 -3.372100e+02
-1 2243     7.165601e+02 -5.233199e+02
-0 2244     -4.554000e+02 3.140500e+02
-1 2244     -1.196900e+02 4.397000e+02
-11 2244     -2.616700e+02 -4.286400e+02
-0 2245     6.326300e+02 -3.184700e+02
-1 2245     7.374000e+02 -5.093300e+02
-7 2245     5.486899e+02 -1.055200e+02
-0 2246     5.194900e+02 -1.426200e+02
-1 2246     6.850900e+02 -2.883400e+02
-0 2247     -2.005100e+02 1.658900e+02
-1 2247     7.510999e+01 2.331700e+02
-0 2248     2.196300e+02 1.633400e+02
-1 2248     4.398800e+02 1.244000e+02
-7 2248     9.390997e+01 3.018900e+02
-10 2248     1.450000e+02 3.542900e+02
-13 2248     5.204700e+02 -7.225000e+01
-14 2248     7.357100e+02 -5.597400e+02
-15 2248     2.470601e+02 3.915300e+02
-0 2249     5.465100e+02 1.409973e+00
-1 2249     7.744000e+02 -1.513900e+02
-7 2249     3.976200e+02 1.696000e+02
-12 2249     4.731100e+02 1.247000e+02
-13 2249     7.652500e+02 -2.061300e+02
-0 2250     3.593500e+02 -1.949200e+02
-1 2250     4.584900e+02 -2.772500e+02
-7 2250     2.975500e+02 -1.829999e+01
-10 2250     3.407800e+02 -4.604999e+01
-15 2250     4.817800e+02 -7.972998e+01
-0 2251     7.435999e+01 2.168300e+02
-1 2251     3.630900e+02 2.073800e+02
-6 2251     -2.620800e+02 1.973200e+02
-10 2251     -2.922998e+01 4.042300e+02
-0 2252     6.273999e+01 -5.301001e+01
-1 2252     2.036700e+02 -4.092999e+01
-9 2252     9.160999e+01 8.544000e+01
-13 2252     4.369900e+02 -2.616200e+02
-0 2253     -1.708200e+02 1.395500e+02
-1 2253     9.390002e+01 2.003400e+02
-5 2253     2.701899e+02 -5.439200e+02
-9 2253     -4.085600e+02 -2.696997e+01
-0 2254     -9.950012e+00 1.514300e+02
-1 2254     2.067200e+02 1.773100e+02
-6 2254     -1.394400e+02 1.713000e+02
-7 2254     -1.310100e+02 2.559100e+02
-10 2254     -1.212800e+02 3.166600e+02
-12 2254     -1.027700e+02 2.232800e+02
-13 2254     3.273500e+02 -9.934003e+01
-0 2255     6.306500e+02 -3.522300e+02
-1 2255     7.200601e+02 -5.420500e+02
-0 2256     3.310601e+02 -5.161700e+02
-1 2256     3.337500e+02 -5.872300e+02
-0 2257     2.523900e+02 2.968500e+02
-1 2257     5.776801e+02 2.367100e+02
-0 2258     2.523900e+02 2.968500e+02
-1 2258     5.776801e+02 2.367100e+02
-0 2259     -8.553998e+01 1.127800e+02
-1 2259     1.342100e+02 1.581100e+02
-7 2259     -2.102200e+02 1.976200e+02
-10 2259     -2.039200e+02 2.651300e+02
-15 2259     -1.595700e+02 2.791500e+02
-0 2260     5.698800e+02 -6.469971e+00
-1 2260     7.962200e+02 -1.675300e+02
-6 2260     4.191800e+02 1.145400e+02
-7 2260     4.221100e+02 1.667300e+02
-10 2260     5.685500e+02 1.938500e+02
-0 2261     6.333199e+02 -2.459800e+02
-1 2261     7.677200e+02 -4.354301e+02
-7 2261     5.320500e+02 -4.070001e+01
-10 2261     6.629399e+02 -7.602002e+01
-12 2261     6.748199e+02 -8.820001e+01
-0 2262     -1.003400e+02 2.950300e+02
-1 2262     2.190000e+02 3.303200e+02
-7 2262     -2.952400e+02 3.476600e+02
-11 2262     5.972998e+01 -4.501700e+02
-13 2262     1.190300e+02 -1.117999e+01
-14 2262     2.218700e+02 -4.583400e+02
-0 2263     6.878998e+01 2.654600e+02
-1 2263     3.759700e+02 2.564300e+02
-4 2263     -1.284000e+02 -3.967800e+02
-6 2263     -3.032300e+02 2.490600e+02
-7 2263     -1.199100e+02 3.438400e+02
-9 2263     -2.622600e+02 1.018400e+02
-11 2263     2.166700e+02 -4.757600e+02
-12 2263     -1.600700e+02 2.636500e+02
-13 2263     2.736000e+02 -2.379999e+01
-14 2263     4.166700e+02 -4.828600e+02
-0 2264     6.984003e+01 2.252200e+02
-1 2264     3.623000e+02 2.166700e+02
-5 2264     5.185300e+02 -4.453800e+02
-6 2264     -2.738500e+02 2.051300e+02
-7 2264     -1.083100e+02 3.065700e+02
-11 2264     2.182900e+02 -5.154600e+02
-13 2264     2.860200e+02 -5.745001e+01
-14 2264     4.325601e+02 -5.273700e+02
-0 2265     2.885300e+02 1.668700e+02
-1 2265     5.636300e+02 9.664001e+01
-0 2266     1.083500e+02 6.582001e+01
-1 2266     2.852800e+02 6.226001e+01
-15 2266     1.030100e+02 2.424000e+02
-0 2267     -1.722700e+02 3.806000e+01
-1 2267     2.725000e+01 1.106000e+02
-10 2267     -2.980200e+02 1.676800e+02
-12 2267     -2.800500e+02 3.266998e+01
-15 2267     -2.685600e+02 1.649700e+02
-0 2268     -3.670600e+02 3.609985e+00
-1 2268     -1.387500e+02 1.259200e+02
-7 2268     -5.001800e+02 2.529999e+01
-0 2269     3.721700e+02 1.706000e+01
-1 2269     5.579399e+02 -7.121997e+01
-6 2269     2.958900e+02 1.242200e+02
-7 2269     2.593700e+02 1.782200e+02
-13 2269     6.614000e+02 -1.878100e+02
-15 2269     4.776300e+02 2.111300e+02
-0 2270     2.930400e+02 -6.140015e+00
-1 2270     4.542600e+02 -6.640997e+01
-13 2270     6.192300e+02 -2.061100e+02
-15 2270     3.673600e+02 1.688800e+02
-0 2271     2.247200e+02 3.633100e+02
-1 2271     5.759600e+02 3.111400e+02
-7 2271     1.103003e+01 4.565500e+02
-13 2271     3.824700e+02 6.758002e+01
-14 2271     5.525699e+02 -3.710100e+02
-0 2272     4.637900e+02 2.925700e+02
-1 2272     7.929700e+02 1.750900e+02
-0 2273     -3.138300e+02 -1.118300e+02
-1 2273     -1.311300e+02 4.710022e+00
-13 2273     3.240002e+01 -3.690200e+02
-15 2273     -4.337300e+02 -5.825000e+01
-0 2274     6.401000e+02 -2.541200e+02
-1 2274     7.722600e+02 -4.459000e+02
-7 2274     5.404399e+02 -4.709003e+01
-0 2275     6.494900e+02 -2.772500e+02
-1 2275     7.734500e+02 -4.734600e+02
-7 2275     5.533500e+02 -6.637000e+01
-12 2275     7.061801e+02 -1.142400e+02
-0 2276     7.999878e-01 3.890002e+01
-1 2276     1.745200e+02 6.690002e+01
-6 2276     -5.078003e+01 5.790997e+01
-8 2276     1.383200e+02 -4.800110e-01
-12 2276     -3.503003e+01 1.138400e+02
-15 2276     -3.856000e+01 1.899900e+02
-0 2277     -4.426000e+02 -1.280029e+00
-1 2277     -2.087500e+02 1.418000e+02
-0 2278     1.438600e+02 -5.546300e+02
-1 2278     1.332800e+02 -5.547400e+02
-10 2278     1.311300e+02 -4.801899e+02
-0 2279     1.425200e+02 -5.496400e+02
-1 2279     1.338800e+02 -5.495200e+02
-7 2279     1.493199e+02 -4.089000e+02
-10 2279     1.296400e+02 -4.745699e+02
-0 2280     4.486600e+02 3.227000e+02
-1 2280     7.874900e+02 2.104000e+02
-10 2280     4.000200e+02 5.693300e+02
-13 2280     6.118101e+02 5.795001e+01
-0 2281     5.309800e+02 9.719971e+00
-1 2281     7.612700e+02 -1.381900e+02
-7 2281     3.808700e+02 1.746000e+02
-10 2281     5.214900e+02 2.089000e+02
-0 2282     6.412100e+02 -2.879900e+02
-1 2282     7.597300e+02 -4.815500e+02
-0 2283     1.055100e+02 4.190400e+02
-1 2283     4.676700e+02 3.995500e+02
-7 2283     -1.144600e+02 4.962000e+02
-14 2283     4.175900e+02 -3.174400e+02
-0 2284     3.778998e+01 2.125700e+02
-1 2284     3.247100e+02 2.133600e+02
-6 2284     -3.037000e+02 1.817500e+02
-10 2284     -7.169000e+01 3.950200e+02
-0 2285     6.187000e+02 1.388000e+01
-1 2285     8.530500e+02 -1.619100e+02
-2 2285     5.583101e+02 -1.099854e-01
-6 2285     4.747300e+02 1.590700e+02
-7 2285     4.677600e+02 1.962900e+02
-13 2285     8.397100e+02 -1.839400e+02
-0 2286     4.051001e+01 -4.373999e+01
-1 2286     1.854800e+02 -2.558002e+01
-15 2286     2.528003e+01 8.275000e+01
-0 2287     6.263000e+02 -2.714000e+02
-1 2287     7.496200e+02 -4.584000e+02
-7 2287     5.315699e+02 -6.494000e+01
-15 2287     8.727700e+02 -1.523200e+02
-0 2288     5.199500e+02 -3.962000e+02
-1 2288     5.797900e+02 -5.422000e+02
-7 2288     4.648900e+02 -1.953600e+02
-0 2289     2.144399e+02 3.622600e+02
-1 2289     5.632200e+02 3.130400e+02
-0 2290     5.727000e+02 6.035999e+01
-1 2290     8.199000e+02 -9.812000e+01
-6 2290     4.054000e+02 1.916800e+02
-7 2290     4.162300e+02 2.319300e+02
-13 2290     7.863300e+02 -1.490600e+02
-15 2290     7.621100e+02 2.986900e+02
-0 2291     2.272300e+02 -5.953998e+01
-1 2291     3.658900e+02 -9.771997e+01
-2 2291     3.910800e+02 1.309998e+01
-6 2291     2.277600e+02 2.459998e+01
-7 2291     1.489700e+02 9.229999e+01
-13 2291     5.773199e+02 -2.550100e+02
-15 2291     2.820200e+02 8.698999e+01
-0 2292     4.538500e+02 2.998300e+02
-1 2292     7.854399e+02 1.854600e+02
-7 2292     2.536400e+02 4.352100e+02
-10 2292     4.077100e+02 5.427600e+02
-0 2293     -2.743400e+02 4.808002e+01
-1 2293     -3.721997e+01 1.422400e+02
-0 2294     3.126600e+02 2.268000e+02
-1 2294     6.129301e+02 1.498300e+02
-0 2295     -4.801800e+02 1.323600e+02
-1 2295     -1.963600e+02 2.744100e+02
-7 2295     -6.531800e+02 1.315700e+02
-0 2296     2.306100e+02 1.237000e+01
-1 2296     3.922500e+02 -2.757001e+01
-0 2297     1.819600e+02 -2.236000e+02
-1 2297     2.658500e+02 -2.451200e+02
-15 2297     2.408101e+02 -1.413800e+02
-0 2298     -2.800400e+02 -4.605300e+02
-1 2298     -2.255600e+02 -3.243300e+02
-4 2298     -5.723100e+02 -1.686100e+02
-6 2298     -2.177600e+02 -6.669600e+02
-7 2298     -2.942300e+02 -4.115200e+02
-10 2298     -3.674100e+02 -4.221200e+02
-0 2299     1.907500e+02 3.311700e+02
-1 2299     5.263700e+02 2.881600e+02
-10 2299     9.573999e+01 5.536300e+02
-13 2299     3.619200e+02 3.909003e+01
-0 2300     -4.614900e+02 1.332900e+02
-1 2300     -1.790000e+02 2.705800e+02
-4 2300     -1.532400e+02 -6.894000e+01
-0 2301     2.359600e+02 -3.281200e+02
-1 2301     3.051700e+02 -3.681600e+02
-0 2302     -2.240000e+02 -4.203100e+02
-1 2302     -1.607700e+02 -3.058000e+02
-7 2302     -2.472000e+02 -3.612100e+02
-10 2302     -3.069500e+02 -3.695600e+02
-15 2302     -2.777300e+02 -4.629100e+02
-0 2303     3.169301e+02 2.182200e+02
-1 2303     6.142800e+02 1.396200e+02
-7 2303     1.336000e+02 3.349900e+02
-10 2303     2.550601e+02 4.313000e+02
-0 2304     3.294399e+02 2.119600e+02
-1 2304     6.250500e+02 1.298200e+02
-0 2305     5.099600e+02 -3.558600e+02
-1 2305     5.859200e+02 -4.980699e+02
-7 2305     4.462200e+02 -1.607100e+02
-0 2306     -2.282100e+02 -4.301600e+02
-1 2306     -1.680500e+02 -3.131400e+02
-0 2307     -6.701001e+01 -1.431000e+02
-1 2307     5.557001e+01 -8.992999e+01
-7 2307     -1.285100e+02 -4.273999e+01
-10 2307     -1.558400e+02 -3.182001e+01
-15 2307     -1.059400e+02 -6.569000e+01
-0 2308     4.921100e+02 4.303600e+02
-1 2308     8.678700e+02 3.150900e+02
-7 2308     2.746100e+02 5.694200e+02
-9 2308     8.071997e+01 3.544900e+02
-0 2309     -4.410000e+02 3.058600e+02
-1 2309     -1.073700e+02 4.272300e+02
-7 2309     -6.477600e+02 3.127300e+02
-10 2309     -6.546000e+02 4.617700e+02
-12 2309     -7.791100e+02 1.960800e+02
-15 2309     -6.684800e+02 4.963900e+02
-0 2310     -2.782200e+02 3.416300e+02
-1 2310     5.640002e+01 4.215000e+02
-7 2310     -4.827500e+02 3.722100e+02
-15 2310     -4.474200e+02 5.676100e+02
-0 2311     -4.632600e+02 1.645900e+02
-1 2311     -1.696300e+02 3.000100e+02
-7 2311     -6.421700e+02 1.660200e+02
-0 2312     -2.053600e+02 2.207900e+02
-1 2312     9.026001e+01 2.869200e+02
-7 2312     -3.847600e+02 2.610700e+02
-14 2312     1.275300e+02 -5.427100e+02
-15 2312     -3.282300e+02 4.089100e+02
-0 2313     -3.315700e+02 2.135700e+02
-1 2313     -3.137000e+01 3.122600e+02
-7 2313     -5.134400e+02 2.345800e+02
-10 2313     -5.077300e+02 3.602200e+02
-11 2313     -1.559900e+02 -5.257000e+02
-0 2314     -3.589200e+02 3.312200e+02
-1 2314     -2.431000e+01 4.312000e+02
-4 2314     -5.350000e+01 -1.393600e+02
-7 2314     -5.640600e+02 3.509100e+02
-10 2314     -5.568000e+02 4.997600e+02
-13 2314     -9.672998e+01 7.250000e+00
-15 2314     -5.579200e+02 5.428000e+02
-0 2315     -4.318900e+02 3.592800e+02
-1 2315     -8.641998e+01 4.763100e+02
-10 2315     -6.514200e+02 5.284900e+02
-15 2315     -6.659500e+02 5.730300e+02
-0 2316     -3.343600e+02 5.840002e+01
-1 2316     -8.913000e+01 1.681400e+02
-10 2316     -4.917200e+02 1.756800e+02
-0 2317     -3.791600e+02 3.809800e+02
-1 2317     -3.303003e+01 4.856000e+02
-7 2317     -5.923800e+02 4.027100e+02
-11 2317     -1.902500e+02 -3.702500e+02
-0 2318     -4.220900e+02 2.885300e+02
-1 2318     -9.476001e+01 4.060100e+02
-7 2318     -6.238000e+02 2.976400e+02
-11 2318     -2.331700e+02 -4.529800e+02
-12 2318     -7.503500e+02 1.803100e+02
-0 2319     -4.783500e+02 1.632000e+02
-1 2319     -1.840400e+02 3.024300e+02
-7 2319     -6.579100e+02 1.617000e+02
-13 2319     -1.857200e+02 -1.436500e+02
-0 2320     -4.342900e+02 2.598999e+01
-1 2320     -1.922300e+02 1.645000e+02
-10 2320     -6.081300e+02 1.262800e+02
-0 2321     5.408500e+02 -3.036100e+02
-1 2321     6.410900e+02 -4.579500e+02
-2 2321     6.709100e+02 -2.623900e+02
-7 2321     4.618300e+02 -1.081000e+02
-12 2321     6.099700e+02 -1.683300e+02
-0 2322     7.969000e+01 -5.538000e+02
-1 2322     7.210999e+01 -5.311200e+02
-6 2322     2.500100e+02 -5.985601e+02
-7 2322     8.963000e+01 -4.255900e+02
-9 2322     2.872100e+02 -3.788700e+02
-10 2322     5.760999e+01 -4.864900e+02
-12 2322     2.429700e+02 -5.702400e+02
-0 2323     -2.048600e+02 -5.259100e+02
-1 2323     -1.818600e+02 -4.086200e+02
-0 2324     4.021500e+02 -5.998999e+01
-1 2324     5.614900e+02 -1.584300e+02
-0 2325     -2.913600e+02 -4.287400e+02
-1 2325     -2.242600e+02 -2.918500e+02
-4 2325     -5.437100e+02 -1.609000e+02
-7 2325     -3.145700e+02 -3.831200e+02
-10 2325     -3.843000e+02 -3.861900e+02
-15 2325     -3.674900e+02 -4.829200e+02
-0 2326     1.838800e+02 1.577002e+01
-1 2326     3.443199e+02 -1.001001e+01
-15 2326     2.127800e+02 1.838800e+02
-0 2327     -6.850100e+02 -5.167800e+02
-1 2327     -5.893600e+02 -2.484600e+02
-0 2328     2.918600e+02 2.515002e+01
-1 2328     4.634500e+02 -3.466998e+01
-0 2329     -2.190500e+02 -1.187600e+02
-1 2329     -5.497998e+01 -2.744000e+01
-0 2330     -3.547998e+01 -1.650800e+02
-1 2330     7.690002e+01 -1.202200e+02
-0 2331     1.028700e+02 -3.379100e+02
-1 2331     1.643600e+02 -3.328100e+02
-10 2331     6.170001e+01 -2.370500e+02
-15 2331     1.520500e+02 -3.068100e+02
-0 2332     -1.396900e+02 -1.045900e+02
-1 2332     1.760010e+00 -3.215997e+01
-6 2332     -1.709700e+02 -1.597500e+02
-7 2332     -2.121400e+02 -1.912000e+01
-12 2332     -1.661700e+02 -1.003000e+02
-15 2332     -2.085000e+02 -2.378998e+01
-0 2333     2.822000e+02 -1.854500e+02
-1 2333     3.827500e+02 -2.415900e+02
-10 2333     2.514200e+02 -4.364001e+01
-15 2333     3.740100e+02 -7.715997e+01
-0 2334     9.456000e+01 -2.377000e+02
-1 2334     1.733500e+02 -2.299400e+02
-7 2334     5.584003e+01 -1.028800e+02
-10 2334     4.152002e+01 -1.238600e+02
-15 2334     1.237200e+02 -1.721300e+02
-0 2335     -2.456600e+02 -5.066600e+02
-1 2335     -2.114600e+02 -3.774100e+02
-7 2335     -2.474900e+02 -4.499000e+02
-9 2335     -2.697998e+01 -4.724100e+02
-10 2335     -3.224300e+02 -4.716300e+02
-0 2336     1.967600e+02 -1.084700e+02
-1 2336     3.204700e+02 -1.376400e+02
-6 2336     2.132700e+02 -4.047998e+01
-12 2336     2.355500e+02 1.770020e+00
-15 2336     2.471801e+02 1.628003e+01
-0 2337     9.898999e+01 -2.900100e+02
-1 2337     1.674900e+02 -2.828400e+02
-0 2338     1.758199e+02 -3.301300e+02
-1 2338     2.379200e+02 -3.498800e+02
-10 2338     1.440600e+02 -2.202400e+02
-15 2338     2.500699e+02 -2.869300e+02
-0 2339     7.603998e+01 -2.239400e+02
-1 2339     1.609600e+02 -2.107700e+02
-12 2339     1.484100e+02 -1.567800e+02
-0 2340     -6.608700e+02 -5.025400e+02
-1 2340     -5.654300e+02 -2.438800e+02
-0 2341     2.429301e+02 -2.412400e+02
-1 2341     3.195400e+02 -2.826600e+02
-10 2341     2.123400e+02 -1.116300e+02
-15 2341     3.268500e+02 -1.577100e+02
-0 2342     1.309400e+02 -4.132001e+01
-1 2342     2.730300e+02 -4.990002e+01
-15 2342     1.475000e+02 9.866000e+01
-0 2343     -3.165000e+02 -5.567400e+02
-1 2343     -2.923900e+02 -3.992300e+02
-0 2344     1.730500e+02 -2.690997e+01
-1 2344     3.196100e+02 -4.826001e+01
-0 2345     1.868600e+02 -1.329999e+01
-1 2345     3.378700e+02 -3.978003e+01
-10 2345     1.240300e+02 1.453100e+02
-15 2345     2.204500e+02 1.445100e+02
-0 2346     -1.409500e+02 -5.381400e+02
-1 2346     -1.285000e+02 -4.400601e+02
-0 2347     -3.547998e+01 -1.650800e+02
-1 2347     7.690002e+01 -1.202200e+02
-0 2348     2.918600e+02 2.515002e+01
-1 2348     4.634500e+02 -3.466998e+01
-15 2348     3.621600e+02 2.115900e+02
-0 2349     -8.226600e+02 -4.331899e+02
-1 2349     -6.712700e+02 -1.373000e+02
-0 2350     3.931100e+02 5.037000e+01
-1 2350     5.997500e+02 -4.578003e+01
-15 2350     5.050699e+02 2.602500e+02
-0 2351     2.555100e+02 -2.739200e+02
-1 2351     3.308101e+02 -3.210800e+02
-15 2351     3.501700e+02 -2.009700e+02
-0 2352     2.300000e+02 1.422998e+01
-1 2352     3.922300e+02 -2.534998e+01
-15 2352     2.766801e+02 1.886100e+02
-0 2353     1.315500e+02 -7.716998e+01
-1 2353     2.634399e+02 -8.534998e+01
-6 2353     1.416800e+02 -2.301001e+01
-8 2353     2.879800e+02 -6.406000e+01
-0 2354     1.408900e+02 3.380005e+00
-1 2354     2.969000e+02 -8.919983e+00
-7 2354     5.633002e+01 1.415100e+02
-10 2354     7.014001e+01 1.598000e+02
-15 2354     1.554200e+02 1.608700e+02
-0 2355     1.613101e+02 -1.474200e+02
-1 2355     2.708199e+02 -1.639800e+02
-7 2355     1.021100e+02 -4.010010e+00
-15 2355     2.030400e+02 -4.114001e+01
-0 2356     -2.523800e+02 -4.514700e+02
-1 2356     -1.975700e+02 -3.250200e+02
-0 2357     5.429600e+02 1.146002e+01
-1 2357     7.739000e+02 -1.401400e+02
-6 2357     3.795500e+02 1.230000e+02
-7 2357     3.926400e+02 1.789000e+02
-12 2357     4.668400e+02 1.341000e+02
-0 2358     1.894900e+02 -5.829999e+01
-1 2358     3.270601e+02 -8.545001e+01
-0 2359     -2.146900e+02 -5.141600e+02
-1 2359     -1.870400e+02 -3.939600e+02
-6 2359     -1.032700e+02 -6.927900e+02
-0 2360     1.993700e+02 -1.047998e+01
-1 2360     3.517800e+02 -4.076001e+01
-15 2360     2.375200e+02 1.504900e+02
-0 2361     2.821700e+02 -1.102002e+01
-1 2361     4.402700e+02 -6.766998e+01
-0 2362     -2.544400e+02 -5.490800e+02
-1 2362     -2.343600e+02 -4.123900e+02
-0 2363     -1.788500e+02 -5.044500e+02
-1 2363     -1.505400e+02 -3.973000e+02
-0 2364     1.945100e+02 1.037000e+01
-1 2364     3.535200e+02 -1.845001e+01
-7 2364     1.067500e+02 1.562300e+02
-10 2364     1.308100e+02 1.730900e+02
-12 2364     1.991000e+02 1.394900e+02
-15 2364     2.282700e+02 1.780700e+02
-0 2365     -3.039400e+02 -4.635100e+02
-1 2365     -2.478700e+02 -3.190700e+02
-4 2365     -5.702300e+02 -1.509300e+02
-7 2365     -3.186900e+02 -4.194400e+02
-9 2365     -1.165100e+02 -4.668600e+02
-15 2365     -3.803400e+02 -5.330900e+02
-0 2366     9.592999e+01 -3.548999e+01
-1 2366     2.405900e+02 -3.363000e+01
-2 2366     2.668500e+02 1.856000e+01
-7 2366     1.859003e+01 9.589999e+01
-0 2367     -4.015997e+01 -1.958500e+02
-1 2367     5.956000e+01 -1.470700e+02
-6 2367     6.679993e+00 -2.135100e+02
-7 2367     -8.767999e+01 -8.763000e+01
-10 2367     -1.185900e+02 -9.017999e+01
-12 2367     8.300171e-01 -1.630300e+02
-15 2367     -6.394000e+01 -1.333700e+02
-0 2368     7.221002e+01 -2.084700e+02
-1 2368     1.635200e+02 -1.950200e+02
-2 2368     3.156899e+02 -1.622000e+02
-4 2368     -4.379800e+02 -4.702200e+02
-7 2368     2.662000e+01 -7.953998e+01
-10 2368     1.172998e+01 -9.244000e+01
-15 2368     9.012000e+01 -1.356000e+02
-0 2369     9.642999e+01 -2.406500e+02
-1 2369     1.742400e+02 -2.333400e+02
-7 2369     5.842999e+01 -1.053700e+02
-10 2369     4.328998e+01 -1.268000e+02
-0 2370     7.190900e+02 -3.067200e+02
-1 2370     8.422900e+02 -5.325601e+02
-7 2370     6.207100e+02 -8.115997e+01
-0 2371     -1.993200e+02 -5.288600e+02
-1 2371     -1.778000e+02 -4.125600e+02
-4 2371     -6.498800e+02 -2.273500e+02
-6 2371     -7.321002e+01 -7.004200e+02
-7 2371     -1.943500e+02 -4.612800e+02
-10 2371     -2.661200e+02 -4.914500e+02
-0 2372     -1.258300e+02 -5.327400e+02
-1 2372     -1.123600e+02 -4.408300e+02
-6 2372     1.378003e+01 -6.691400e+02
-7 2372     -1.190600e+02 -4.490400e+02
-0 2373     2.983600e+02 -6.940997e+01
-1 2373     4.404000e+02 -1.316000e+02
-7 2373     2.143800e+02 9.057001e+01
-10 2373     2.585800e+02 9.296002e+01
-15 2373     3.828101e+02 8.363000e+01
-0 2374     2.636100e+02 -1.525500e+02
-1 2374     3.749500e+02 -2.029900e+02
-7 2374     1.989700e+02 6.130005e+00
-10 2374     2.271300e+02 -7.469971e+00
-15 2374     3.447600e+02 -3.482001e+01
-0 2375     -6.954800e+02 -3.586100e+02
-1 2375     -5.473900e+02 -1.086500e+02
-7 2375     -7.662400e+02 -4.024800e+02
-0 2376     3.121000e+02 -2.167400e+02
-1 2376     4.043000e+02 -2.832700e+02
-6 2376     3.637600e+02 -1.235300e+02
-7 2376     2.555800e+02 -4.866998e+01
-10 2376     2.889000e+02 -7.628003e+01
-12 2376     3.923000e+02 -9.138000e+01
-15 2376     4.199100e+02 -1.160100e+02
-0 2377     2.508199e+02 -2.885500e+02
-1 2377     3.235100e+02 -3.343400e+02
-7 2377     2.061000e+02 -1.317200e+02
-10 2377     2.256801e+02 -1.644800e+02
-15 2377     3.462300e+02 -2.214600e+02
-0 2378     6.435400e+02 -2.618600e+02
-1 2378     7.733700e+02 -4.554399e+02
-7 2378     5.445000e+02 -5.350000e+01
-0 2379     -2.140700e+02 -5.258199e+02
-1 2379     -1.897900e+02 -4.048500e+02
-6 2379     -9.287000e+01 -7.047100e+02
-7 2379     -2.098500e+02 -4.609700e+02
-10 2379     -2.831900e+02 -4.891300e+02
-0 2380     -8.576001e+01 -5.554500e+02
-1 2380     -8.408002e+01 -4.749399e+02
-4 2380     -7.042300e+02 -3.186700e+02
-7 2380     -7.278998e+01 -4.621801e+02
-9 2380     1.545000e+02 -4.401700e+02
-0 2381     6.045100e+02 -1.882001e+01
-1 2381     8.280900e+02 -1.916500e+02
-7 2381     4.584900e+02 1.621700e+02
-12 2381     5.480200e+02 1.255000e+02
-13 2381     8.296700e+02 -2.159600e+02
-15 2381     8.161400e+02 1.932000e+02
-0 2382     3.288600e+02 -1.204700e+02
-1 2382     4.559900e+02 -1.931900e+02
-7 2382     2.521700e+02 4.575000e+01
-0 2383     3.170400e+02 -1.916400e+02
-1 2383     4.161200e+02 -2.591900e+02
-6 2383     3.638800e+02 -9.321002e+01
-7 2383     2.562800e+02 -2.370001e+01
-8 2383     4.611300e+02 -1.347700e+02
-10 2383     2.918101e+02 -4.748999e+01
-12 2383     3.928900e+02 -5.983002e+01
-13 2383     6.730900e+02 -3.658000e+02
-15 2383     4.225800e+02 -8.173999e+01
-0 2384     9.445001e+01 -3.393200e+02
-1 2384     1.549700e+02 -3.307900e+02
-7 2384     6.309003e+01 -2.135600e+02
-15 2384     1.403000e+02 -3.097400e+02
-0 2385     -1.863600e+02 -5.011600e+02
-1 2385     -1.559100e+02 -3.915700e+02
-7 2385     -1.882600e+02 -4.310500e+02
-0 2386     6.484500e+02 -2.665200e+02
-1 2386     7.761100e+02 -4.620300e+02
-7 2386     5.499399e+02 -5.635999e+01
-0 2387     2.379301e+02 -7.466998e+01
-1 2387     3.729200e+02 -1.169500e+02
-6 2387     2.424600e+02 9.469971e+00
-10 2387     1.897700e+02 7.928998e+01
-15 2387     2.993000e+02 6.785999e+01
-0 2388     2.349500e+02 -7.266998e+01
-1 2388     3.705000e+02 -1.141600e+02
-6 2388     2.393900e+02 1.066998e+01
-7 2388     1.585699e+02 7.990997e+01
-15 2388     2.946100e+02 7.044000e+01
-0 2389     2.374800e+02 -8.256000e+01
-1 2389     3.703300e+02 -1.252700e+02
-10 2389     1.898199e+02 7.009998e+01
-15 2389     2.997100e+02 5.690997e+01
-0 2390     2.816899e+02 -2.410500e+02
-1 2390     3.655300e+02 -2.967100e+02
-6 2390     3.424400e+02 -1.601600e+02
-10 2390     2.563500e+02 -1.075200e+02
-15 2390     3.812700e+02 -1.529800e+02
-0 2391     -2.078900e+02 -5.297200e+02
-1 2391     -1.857500e+02 -4.103900e+02
-7 2391     -2.027900e+02 -4.640100e+02
-9 2391     2.628998e+01 -4.724900e+02
-10 2391     -2.757600e+02 -4.931899e+02
-0 2392     -1.670400e+02 -4.871300e+02
-1 2392     -1.334400e+02 -3.847700e+02
-7 2392     -1.720100e+02 -4.137200e+02
-9 2392     3.415002e+01 -4.270000e+02
-0 2393     2.322100e+02 -1.077300e+02
-1 2393     3.577400e+02 -1.484300e+02
-6 2393     2.450800e+02 -2.904999e+01
-7 2393     1.604900e+02 4.484998e+01
-12 2393     2.712900e+02 1.147998e+01
-15 2393     2.956000e+02 2.190002e+01
-0 2394     9.715002e+01 -2.360000e+02
-1 2394     1.765500e+02 -2.292000e+02
-7 2394     5.809003e+01 -1.006000e+02
-10 2394     4.390002e+01 -1.216800e+02
-15 2394     1.268400e+02 -1.694600e+02
-0 2395     -9.794000e+01 -5.127900e+02
-1 2395     -7.921997e+01 -4.317000e+02
-9 2395     1.121300e+02 -4.178700e+02
-0 2396     -1.033002e+01 -6.265002e+01
-1 2396     1.338600e+02 -2.939001e+01
-3 2396     6.678003e+01 -3.596900e+02
-7 2396     -8.628998e+01 4.769000e+01
-10 2396     -9.882001e+01 6.715997e+01
-15 2396     -3.996997e+01 5.057001e+01
-0 2397     7.500000e+01 -5.951001e+01
-1 2397     2.132800e+02 -5.109998e+01
-2 2397     2.536300e+02 -1.282001e+01
-7 2397     1.780029e+00 6.781000e+01
-13 2397     4.493199e+02 -2.660600e+02
-15 2397     7.420001e+01 6.646997e+01
-0 2398     2.949900e+02 1.098999e+01
-1 2398     4.621801e+02 -5.010999e+01
-15 2398     3.680200e+02 1.925400e+02
-0 2399     3.473400e+02 -1.814600e+02
-1 2399     4.518101e+02 -2.599600e+02
-15 2399     4.641200e+02 -6.335999e+01
-0 2400     1.777100e+02 -2.432300e+02
-1 2400     2.559800e+02 -2.631700e+02
-7 2400     1.357800e+02 -9.483002e+01
-10 2400     1.372500e+02 -1.210000e+02
-15 2400     2.378800e+02 -1.688800e+02
-0 2401     -1.720100e+02 -5.345300e+02
-1 2401     -1.549000e+02 -4.269500e+02
-6 2401     -3.839001e+01 -6.932000e+02
-7 2401     -1.658200e+02 -4.606801e+02
-9 2401     6.525000e+01 -4.612300e+02
-0 2402     -1.267000e+02 -5.418199e+02
-1 2402     -1.160400e+02 -4.483900e+02
-4 2402     -6.808900e+02 -2.847100e+02
-6 2402     1.902002e+01 -6.793500e+02
-7 2402     -1.172300e+02 -4.578101e+02
-9 2402     1.086500e+02 -4.481600e+02
-0 2403     -1.267000e+02 -5.418199e+02
-1 2403     -1.160400e+02 -4.483900e+02
-6 2403     1.902002e+01 -6.793500e+02
-7 2403     -1.172300e+02 -4.578101e+02
-9 2403     1.086500e+02 -4.481600e+02
-0 2404     -3.271700e+02 -1.862900e+02
-1 2404     -1.698700e+02 -6.004999e+01
-0 2405     2.622200e+02 -2.032300e+02
-1 2405     3.551600e+02 -2.523400e+02
-6 2405     3.188900e+02 -1.200100e+02
-7 2405     2.086000e+02 -4.223999e+01
-10 2405     2.303700e+02 -6.622998e+01
-12 2405     3.415800e+02 -8.442999e+01
-15 2405     3.489399e+02 -1.039400e+02
-0 2406     1.819600e+02 -2.236000e+02
-1 2406     2.658500e+02 -2.451200e+02
-10 2406     1.399700e+02 -9.741998e+01
-15 2406     2.408101e+02 -1.413800e+02
-0 2407     -2.351700e+02 -4.160700e+02
-1 2407     -1.692400e+02 -2.981500e+02
-0 2408     2.073600e+02 -3.413300e+02
-1 2408     2.666100e+02 -3.721300e+02
-15 2408     2.946899e+02 -2.985800e+02
-0 2409     6.745900e+02 -2.642000e+02
-1 2409     8.081899e+02 -4.704700e+02
-7 2409     5.728700e+02 -5.059003e+01
-0 2410     -1.808600e+02 -4.785800e+02
-1 2410     -1.427600e+02 -3.728800e+02
-6 2410     -8.648001e+01 -6.383900e+02
-7 2410     -1.886400e+02 -4.083600e+02
-9 2410     1.339001e+01 -4.267500e+02
-0 2411     2.854399e+02 2.347998e+01
-1 2411     4.558300e+02 -3.384003e+01
-7 2411     1.875500e+02 1.799500e+02
-13 2411     6.085100e+02 -1.811600e+02
-0 2412     3.746300e+02 -7.853998e+01
-1 2412     5.224100e+02 -1.671700e+02
-15 2412     4.912800e+02 8.119000e+01
-0 2413     1.552000e+02 -1.287300e+02
-1 2413     2.724900e+02 -1.439600e+02
-7 2413     9.163000e+01 1.200000e+01
-10 2413     9.990997e+01 8.349976e+00
-13 2413     5.253101e+02 -3.213200e+02
-15 2413     1.930200e+02 -1.682001e+01
-0 2414     2.741400e+02 -2.010700e+02
-1 2414     3.679000e+02 -2.537000e+02
-10 2414     2.436801e+02 -6.241998e+01
-15 2414     3.643600e+02 -9.956000e+01
-0 2415     2.955601e+02 -2.945100e+02
-1 2415     3.720400e+02 -3.567700e+02
-10 2415     2.776400e+02 -1.667200e+02
-15 2415     4.097700e+02 -2.238700e+02
-0 2416     2.336500e+02 -3.089100e+02
-1 2416     2.998000e+02 -3.489800e+02
-10 2416     2.081000e+02 -1.901200e+02
-15 2416     3.255400e+02 -2.513800e+02
-0 2417     2.996899e+02 -2.972200e+02
-1 2417     3.765100e+02 -3.606200e+02
-15 2417     4.162100e+02 -2.274100e+02
-0 2418     1.721500e+02 -3.259000e+02
-1 2418     2.344700e+02 -3.449700e+02
-10 2418     1.392900e+02 -2.159200e+02
-15 2418     2.430300e+02 -2.815900e+02
-0 2419     2.354100e+02 -3.228300e+02
-1 2419     3.003400e+02 -3.636800e+02
-10 2419     2.118101e+02 -2.059000e+02
-15 2419     3.308000e+02 -2.699600e+02
-0 2420     6.428101e+02 -2.702500e+02
-1 2420     7.688199e+02 -4.637900e+02
-7 2420     5.455800e+02 -6.126001e+01
-10 2420     6.760601e+02 -1.031200e+02
-12 2420     6.954900e+02 -1.094400e+02
-0 2421     -1.142700e+02 -5.166100e+02
-1 2421     -9.572998e+01 -4.298000e+02
-4 2421     -6.608800e+02 -2.940400e+02
-6 2421     1.676001e+01 -6.467600e+02
-7 2421     -1.112500e+02 -4.307800e+02
-9 2421     1.015100e+02 -4.259600e+02
-0 2422     3.210100e+02 2.409003e+01
-1 2422     4.967800e+02 -4.515997e+01
-15 2422     4.031400e+02 2.142900e+02
-0 2423     3.210100e+02 2.409003e+01
-1 2423     4.967800e+02 -4.515997e+01
-7 2423     2.183300e+02 1.837400e+02
-15 2423     4.031400e+02 2.142900e+02
-0 2424     3.305000e+02 2.431000e+01
-1 2424     5.081700e+02 -4.859003e+01
-10 2424     2.869500e+02 2.037100e+02
-15 2424     4.169900e+02 2.155800e+02
-0 2425     2.464900e+02 -2.454600e+02
-1 2425     3.227300e+02 -2.886600e+02
-6 2425     3.263800e+02 -1.661400e+02
-7 2425     2.032000e+02 -8.412000e+01
-10 2425     2.160100e+02 -1.161700e+02
-12 2425     3.441899e+02 -1.303700e+02
-15 2425     3.314600e+02 -1.633400e+02
-0 2426     -1.728800e+02 -5.236600e+02
-1 2426     -1.519900e+02 -4.165700e+02
-6 2426     -4.600000e+01 -6.817500e+02
-7 2426     -1.693300e+02 -4.505300e+02
-0 2427     -1.361000e+02 -5.394000e+02
-1 2427     -1.240900e+02 -4.431200e+02
-4 2427     -6.754200e+02 -2.761500e+02
-6 2427     5.770020e+00 -6.810000e+02
-7 2427     -1.278900e+02 -4.573800e+02
-9 2427     9.665997e+01 -4.497600e+02
-0 2428     5.371002e+01 -2.197400e+02
-1 2428     1.414200e+02 -1.999700e+02
-7 2428     1.162000e+01 -9.337000e+01
-10 2428     -7.530029e+00 -1.075500e+02
-13 2428     4.558300e+02 -4.076300e+02
-15 2428     6.628998e+01 -1.532900e+02
-0 2429     -2.494600e+02 -4.618400e+02
-1 2429     -1.986800e+02 -3.353400e+02
-4 2429     -5.805500e+02 -1.903300e+02
-6 2429     -1.793600e+02 -6.537700e+02
-7 2429     -2.624400e+02 -4.066800e+02
-9 2429     -6.400000e+01 -4.428500e+02
-0 2430     3.849301e+02 -7.440997e+01
-1 2430     5.363700e+02 -1.667300e+02
-7 2430     2.907800e+02 9.564001e+01
-10 2430     3.593700e+02 9.538000e+01
-15 2430     5.062000e+02 8.710001e+01
-0 2431     -1.322200e+02 -5.330900e+02
-1 2431     -1.181400e+02 -4.389800e+02
-6 2431     7.150024e+00 -6.720200e+02
-0 2432     9.102002e+01 -2.291000e+02
-1 2432     1.731600e+02 -2.206600e+02
-7 2432     5.041998e+01 -9.554999e+01
-10 2432     3.672998e+01 -1.139900e+02
-15 2432     1.182600e+02 -1.607700e+02
-0 2433     3.343300e+02 -2.422500e+02
-1 2433     4.260100e+02 -3.185300e+02
-6 2433     3.807000e+02 -1.537500e+02
-10 2433     3.169600e+02 -1.026700e+02
-12 2433     4.143199e+02 -1.244600e+02
-15 2433     4.548199e+02 -1.478600e+02
-0 2434     3.816500e+02 -2.076400e+02
-1 2434     4.932600e+02 -2.977600e+02
-0 2435     3.588800e+02 -2.168400e+02
-1 2435     4.572300e+02 -3.019900e+02
-10 2435     3.417800e+02 -7.114001e+01
-15 2435     4.839000e+02 -1.112400e+02
-0 2436     -1.550700e+02 -5.052000e+02
-1 2436     -1.282200e+02 -4.052600e+02
-7 2436     -1.547000e+02 -4.292700e+02
-0 2437     5.179000e+02 -1.455000e+02
-1 2437     6.820699e+02 -2.907400e+02
-6 2437     4.409600e+02 -4.048999e+01
-0 2438     -2.722900e+02 -4.550200e+02
-1 2438     -2.165400e+02 -3.219900e+02
-4 2438     -5.698100e+02 -1.736800e+02
-7 2438     -2.882700e+02 -4.051400e+02
-9 2438     -9.216998e+01 -4.481500e+02
-0 2439     2.337400e+02 -5.382300e+02
-1 2439     2.275200e+02 -5.721300e+02
-6 2439     3.962600e+02 -5.202600e+02
-7 2439     2.328600e+02 -3.799200e+02
-9 2439     3.899500e+02 -3.197000e+02
-0 2440     5.231600e+02 -2.988000e+02
-1 2440     6.234600e+02 -4.462400e+02
-0 2441     6.148300e+02 -3.753500e+02
-1 2441     6.918400e+02 -5.584900e+02
-7 2441     5.474700e+02 -1.599700e+02
-12 2441     7.212200e+02 -2.162600e+02
-0 2442     2.180000e+02 -2.206000e+01
-1 2442     3.677000e+02 -5.791998e+01
-6 2442     2.085000e+02 6.272998e+01
-10 2442     1.611000e+02 1.379500e+02
-15 2442     2.644500e+02 1.370300e+02
-0 2443     -1.247300e+02 -5.099000e+02
-1 2443     -1.025800e+02 -4.195600e+02
-4 2443     -6.523900e+02 -2.860400e+02
-6 2443     -2.001953e-02 -6.446100e+02
-7 2443     -1.233600e+02 -4.266000e+02
-9 2443     8.758002e+01 -4.253500e+02
-0 2444     5.575100e+02 3.767999e+01
-1 2444     7.966899e+02 -1.173200e+02
-15 2444     7.438600e+02 2.651600e+02
-0 2445     1.618101e+02 -5.557001e+01
-1 2445     2.996700e+02 -7.352002e+01
-2 2445     3.369600e+02 1.140002e+01
-6 2445     1.659500e+02 1.104999e+01
-8 2445     3.064500e+02 -3.991000e+01
-0 2446     -1.705500e+02 -5.043700e+02
-1 2446     -1.425300e+02 -3.998400e+02
-7 2446     -1.713100e+02 -4.306000e+02
-0 2447     6.623800e+02 -9.689001e+01
-1 2447     8.645100e+02 -2.935300e+02
-6 2447     5.578900e+02 5.228003e+01
-7 2447     5.253800e+02 9.839001e+01
-8 2447     5.813800e+02 -1.074800e+02
-10 2447     6.838600e+02 9.863000e+01
-12 2447     6.358800e+02 6.192999e+01
-0 2448     2.001300e+02 -2.140002e+01
-1 2448     3.492500e+02 -5.176001e+01
-15 2448     2.399000e+02 1.352900e+02
-0 2449     2.922900e+02 5.455800e+02
-1 2449     7.072100e+02 4.835500e+02
-2 2449     -3.809998e+01 3.122400e+02
-6 2449     -1.720300e+02 6.364300e+02
-11 2449     4.075000e+02 -2.113600e+02
-12 2449     -7.289978e+00 5.992800e+02
-13 2449     4.192000e+02 2.262200e+02
-14 2449     5.939800e+02 -1.760100e+02
-0 2450     3.404301e+02 5.572400e+02
-1 2450     7.662300e+02 4.844300e+02
-11 2450     4.498500e+02 -1.982300e+02
-13 2450     4.569200e+02 2.393400e+02
-14 2450     6.402800e+02 -1.611500e+02
-0 2451     2.292000e+02 4.660400e+02
-1 2451     6.136801e+02 4.155200e+02
-5 2451     6.319900e+02 -1.806300e+02
-6 2451     -2.231600e+02 5.252900e+02
-12 2451     -5.702002e+01 5.017400e+02
-0 2452     8.827002e+01 5.109900e+02
-1 2452     4.735200e+02 4.985800e+02
-11 2452     2.254600e+02 -2.510200e+02
-0 2453     2.237300e+02 4.586200e+02
-1 2453     6.058300e+02 4.091800e+02
-7 2453     -6.849976e+00 5.487900e+02
-0 2454     3.320100e+02 4.502900e+02
-1 2454     7.243700e+02 3.719600e+02
-6 2454     -1.118700e+02 5.282100e+02
-7 2454     9.587000e+01 5.518000e+02
-13 2454     4.551801e+02 1.484000e+02
-0 2455     3.703600e+02 4.929600e+02
-1 2455     7.811500e+02 4.073000e+02
-2 2455     3.481000e+01 2.574200e+02
-11 2455     4.858900e+02 -2.524800e+02
-14 2455     6.759600e+02 -2.251600e+02
-0 2456     3.002100e+02 5.588100e+02
-1 2456     7.202000e+02 4.959600e+02
-2 2456     -3.296002e+01 3.278000e+02
-3 2456     -1.759900e+02 -8.200012e+00
-5 2456     7.008800e+02 -7.960999e+01
-8 2456     5.345001e+01 2.560500e+02
-9 2456     -1.821700e+02 3.567200e+02
-11 2456     4.126899e+02 -1.994700e+02
-12 2456     -2.049988e+00 6.173400e+02
-13 2456     4.249100e+02 2.382700e+02
-0 2457     2.442000e+02 5.580200e+02
-1 2457     6.569800e+02 5.087400e+02
-11 2457     3.631600e+02 -2.034300e+02
-13 2457     3.808500e+02 2.335900e+02
-14 2457     5.467800e+02 -1.658100e+02
-0 2458     2.238300e+02 4.501300e+02
-1 2458     6.036000e+02 4.004800e+02
-7 2458     -5.679993e+00 5.409500e+02
-0 2459     3.326001e+01 5.712500e+02
-1 2459     4.303600e+02 5.744200e+02
-2 2459     -2.665000e+02 3.398400e+02
-5 2459     4.388700e+02 -7.481000e+01
-0 2460     3.564000e+02 4.500200e+02
-1 2460     7.521500e+02 3.650500e+02
-0 2461     4.393900e+02 5.041800e+02
-1 2461     8.669301e+02 4.018900e+02
-3 2461     -6.045001e+01 -6.187000e+01
-0 2462     3.886000e+02 5.048000e+02
-1 2462     8.061700e+02 4.154700e+02
-3 2462     -9.915002e+01 -6.134998e+01
-8 2462     1.204200e+02 2.112300e+02
-9 2462     -1.115500e+02 3.105700e+02
-0 2463     4.154800e+02 4.569600e+02
-1 2463     8.227000e+02 3.567400e+02
-6 2463     -2.720001e+01 5.532100e+02
-7 2463     1.723800e+02 5.666500e+02
-11 2463     5.342800e+02 -2.814100e+02
-0 2464     1.240500e+02 4.995200e+02
-1 2464     5.086500e+02 4.778600e+02
-7 2464     -1.067700e+02 5.801300e+02
-0 2465     3.995400e+02 4.502400e+02
-1 2465     8.017900e+02 3.537300e+02
-7 2465     1.590500e+02 5.582000e+02
-0 2466     1.361300e+02 4.510200e+02
-1 2466     5.083199e+02 4.239900e+02
-7 2466     -8.859003e+01 5.319900e+02
-8 2466     -5.253003e+01 1.573700e+02
-0 2467     2.213400e+02 4.726900e+02
-1 2467     6.070500e+02 4.244600e+02
-7 2467     -1.079999e+01 5.627600e+02
-11 2467     3.500500e+02 -2.787700e+02
-12 2467     -6.615997e+01 5.073500e+02
-0 2468     1.011400e+02 4.475500e+02
-1 2468     4.702900e+02 4.296800e+02
-7 2468     -1.220900e+02 5.245600e+02
-0 2469     4.164900e+02 4.543000e+02
-1 2469     8.230900e+02 3.535800e+02
-6 2469     -2.566998e+01 5.499400e+02
-7 2469     1.735300e+02 5.640500e+02
-0 2470     3.482000e+02 4.487400e+02
-1 2470     7.422100e+02 3.657600e+02
-2 2470     2.271002e+01 2.093000e+02
-9 2470     -1.310500e+02 2.563500e+02
-13 2470     4.684600e+02 1.480300e+02
-14 2470     6.579000e+02 -2.733700e+02
-0 2471     2.577800e+02 5.295900e+02
-1 2471     6.620800e+02 4.754400e+02
-4 2471     1.728998e+01 -5.304399e+02
-5 2471     6.645900e+02 -1.112600e+02
-6 2471     -1.978900e+02 6.128300e+02
-13 2471     3.961100e+02 2.112300e+02
-14 2471     5.660100e+02 -1.934800e+02
-0 2472     2.577800e+02 5.295900e+02
-1 2472     6.620800e+02 4.754400e+02
-11 2472     3.768101e+02 -2.269300e+02
-0 2473     1.543400e+02 5.057400e+02
-1 2473     5.426000e+02 4.766700e+02
-11 2473     2.853101e+02 -2.521700e+02
-0 2474     3.374200e+02 3.994100e+02
-1 2474     7.109500e+02 3.174200e+02
-11 2474     4.650900e+02 -3.384800e+02
-0 2475     1.353600e+02 5.149600e+02
-1 2475     5.238600e+02 4.912500e+02
-11 2475     2.670400e+02 -2.459000e+02
-12 2475     -1.623400e+02 5.445800e+02
-0 2476     4.140699e+02 4.594900e+02
-1 2476     8.229000e+02 3.595800e+02
-11 2476     5.314700e+02 -2.785500e+02
-0 2477     4.088300e+02 4.604200e+02
-1 2477     8.171600e+02 3.621500e+02
-0 2478     1.657200e+02 5.309900e+02
-1 2478     5.625100e+02 4.998500e+02
-5 2478     5.685200e+02 -1.133600e+02
-14 2478     4.736000e+02 -1.970700e+02
-0 2479     -1.042600e+02 4.815500e+02
-1 2479     2.646500e+02 5.165000e+02
-2 2479     -3.885000e+02 2.383700e+02
-3 2479     -5.171700e+02 -9.198999e+01
-7 2479     -3.271900e+02 5.381300e+02
-12 2479     -4.150500e+02 4.720900e+02
-0 2480     -3.280029e+00 4.738600e+02
-1 2480     3.668101e+02 4.833600e+02
-2 2480     -2.918200e+02 2.294600e+02
-5 2480     4.006000e+02 -1.774800e+02
-6 2480     -4.773300e+02 4.863300e+02
-7 2480     -2.267100e+02 5.406900e+02
-8 2480     -1.599800e+02 1.740300e+02
-12 2480     -3.028800e+02 4.768900e+02
-0 2481     -2.079500e+02 5.040800e+02
-1 2481     1.648500e+02 5.643700e+02
-5 2481     2.019600e+02 -1.461400e+02
-7 2481     -4.339300e+02 5.513800e+02
-0 2482     -3.528998e+01 4.782100e+02
-1 2482     3.349301e+02 4.961000e+02
-2 2482     -3.227700e+02 2.347500e+02
-5 2482     3.689200e+02 -1.728400e+02
-6 2482     -5.147000e+02 4.858000e+02
-7 2482     -2.585800e+02 5.420900e+02
-8 2482     -1.854900e+02 1.777700e+02
-12 2482     -3.387600e+02 4.782000e+02
-14 2482     2.793500e+02 -2.595200e+02
-0 2483     -1.896300e+02 4.249200e+02
-1 2483     1.641500e+02 4.812300e+02
-7 2483     -4.048400e+02 4.698600e+02
-12 2483     -5.005700e+02 3.914400e+02
-0 2484     -3.570001e+01 5.459700e+02
-1 2484     3.511600e+02 5.647900e+02
-2 2484     -3.278300e+02 3.114300e+02
-0 2485     -2.927900e+02 4.697100e+02
-1 2485     7.196997e+01 5.501600e+02
-2 2485     -5.753900e+02 2.244000e+02
-4 2485     1.828998e+01 -1.900900e+02
-5 2485     1.157600e+02 -1.822800e+02
-7 2485     -5.157800e+02 5.056700e+02
-0 2486     8.333002e+01 5.526001e+01
-1 2486     2.574100e+02 5.848999e+01
-6 2486     3.942999e+01 1.078900e+02
-15 2486     7.048999e+01 2.237900e+02
-0 2487     1.065500e+02 4.203998e+01
-1 2487     2.754200e+02 3.926001e+01
-6 2487     7.192999e+01 1.006900e+02
-12 2487     9.164001e+01 1.527500e+02
-15 2487     1.039200e+02 2.092200e+02
-0 2488     2.301001e+01 1.611900e+02
-1 2488     2.407000e+02 1.783100e+02
-10 2488     -8.375000e+01 3.314200e+02
-15 2488     -2.314001e+01 3.604600e+02
-0 2489     -1.148100e+02 7.317999e+01
-1 2489     9.044000e+01 1.286600e+02
-5 2489     4.514900e+02 -5.979900e+02
-10 2489     -2.346600e+02 2.146200e+02
-0 2490     1.271500e+02 -7.719971e+00
-1 2490     2.796300e+02 -1.547998e+01
-2 2490     2.871400e+02 5.365002e+01
-10 2490     5.444000e+01 1.450100e+02
-15 2490     1.381300e+02 1.439900e+02
-0 2491     2.121002e+01 8.856000e+01
-1 2491     2.112800e+02 1.084300e+02
-3 2491     3.189001e+01 -2.095800e+02
-4 2491     -2.154200e+02 -4.277400e+02
-5 2491     6.467800e+02 -5.705200e+02
-7 2491     -8.159998e+01 2.032200e+02
-8 2491     1.359900e+02 4.248999e+01
-15 2491     -1.752002e+01 2.610600e+02
-0 2492     -2.063000e+01 1.222600e+02
-1 2492     1.857800e+02 1.522300e+02
-15 2492     -7.740002e+01 3.009600e+02
-0 2493     -8.940002e+00 1.165000e+02
-1 2493     1.934301e+02 1.437200e+02
-3 2493     -2.407001e+01 -2.043500e+02
-4 2493     -1.940900e+02 -4.022300e+02
-5 2493     5.982300e+02 -5.403900e+02
-6 2493     -1.104100e+02 1.369400e+02
-7 2493     -1.199700e+02 2.240700e+02
-10 2493     -1.160500e+02 2.760700e+02
-12 2493     -8.203998e+01 1.909200e+02
-13 2493     3.396500e+02 -1.262800e+02
-15 2493     -6.120001e+01 2.948900e+02
-0 2494     -4.575000e+01 -1.726400e+02
-1 2494     6.398999e+01 -1.246300e+02
-6 2494     -1.838000e+01 -1.928199e+02
-7 2494     -9.952002e+01 -6.665002e+01
-8 2494     1.616400e+02 -1.855400e+02
-12 2494     -1.920001e+01 -1.406900e+02
-0 2495     -1.398000e+02 -1.006700e+02
-1 2495     3.270020e+00 -2.860999e+01
-7 2495     -2.132900e+02 -1.534998e+01
-10 2495     -2.449200e+02 9.640015e+00
-12 2495     -1.687100e+02 -9.590997e+01
-15 2495     -2.091100e+02 -1.840002e+01
-0 2496     6.158002e+01 -2.018700e+02
-1 2496     1.559399e+02 -1.852500e+02
-3 2496     2.172700e+02 -4.594900e+02
-6 2496     1.169300e+02 -1.841400e+02
-7 2496     1.478998e+01 -7.658002e+01
-10 2496     -8.900146e-01 -8.597998e+01
-12 2496     1.202000e+02 -1.397900e+02
-13 2496     4.573800e+02 -3.927100e+02
-15 2496     7.460999e+01 -1.280200e+02
-0 2497     1.240600e+02 -2.197200e+02
-1 2497     2.102800e+02 -2.225600e+02
-7 2497     8.028998e+01 -8.096997e+01
-10 2497     7.308002e+01 -9.979999e+01
-15 2497     1.615100e+02 -1.440100e+02
-0 2498     4.775000e+01 1.350600e+02
-1 2498     2.550400e+02 1.447100e+02
-10 2498     -5.167999e+01 3.029000e+02
-15 2498     1.315997e+01 3.281800e+02
-0 2499     3.393800e+02 4.957600e+02
-1 2499     7.457800e+02 4.180300e+02
-11 2499     4.565400e+02 -2.516900e+02
-14 2499     6.447700e+02 -2.240300e+02
-0 2500     3.739990e+00 4.936300e+02
-1 2500     3.789900e+02 5.018000e+02
-2 2500     -2.875600e+02 2.527600e+02
-5 2500     4.075800e+02 -1.566600e+02
-6 2500     -4.735800e+02 5.135400e+02
-7 2500     -2.223400e+02 5.619100e+02
-11 2500     1.506800e+02 -2.688100e+02
-14 2500     3.165500e+02 -2.422400e+02
-0 2501     -1.877500e+02 1.508700e+02
-1 2501     8.171997e+01 2.155600e+02
-12 2501     -4.101000e+02 8.723999e+01
-13 2501     7.904999e+01 -1.367700e+02
-0 2502     2.135999e+01 -7.044000e+01
-1 2502     1.606600e+02 -4.552002e+01
-2 2502     1.936801e+02 -4.477002e+01
-4 2502     -3.242500e+02 -4.261600e+02
-13 2502     3.986700e+02 -2.808500e+02
-15 2502     3.200012e+00 4.509003e+01
-0 2503     3.005800e+02 2.967999e+01
-1 2503     4.756899e+02 -3.248999e+01
-7 2503     1.995000e+02 1.868600e+02
-10 2503     2.515500e+02 2.065200e+02
-13 2503     6.178000e+02 -1.761600e+02
-15 2503     3.737500e+02 2.186900e+02
-0 2504     1.209400e+02 4.153400e+02
-1 2504     4.828300e+02 3.916500e+02
-2 2504     -1.717400e+02 1.645200e+02
-8 2504     -6.167999e+01 1.246300e+02
-13 2504     2.875100e+02 1.042400e+02
-0 2505     1.025600e+02 4.887500e+02
-1 2505     4.822700e+02 4.722300e+02
-0 2506     3.406700e+02 5.017200e+02
-1 2506     7.491500e+02 4.244700e+02
-13 2506     4.597800e+02 1.925000e+02
-14 2506     6.454800e+02 -2.182900e+02
-0 2507     5.885300e+02 -3.712000e+01
-1 2507     8.056899e+02 -2.056400e+02
-7 2507     4.448000e+02 1.409200e+02
-13 2507     8.147400e+02 -2.357800e+02
-15 2507     7.958900e+02 1.654000e+02
-0 2508     4.416000e+02 3.232500e+02
-1 2508     7.799200e+02 2.134300e+02
-13 2508     6.039700e+02 5.796997e+01
-14 2508     8.352800e+02 -3.923200e+02
-0 2509     -5.084300e+02 2.353000e+02
-1 2509     -1.889900e+02 3.766400e+02
-11 2509     -3.144200e+02 -5.010000e+02
-13 2509     -2.233100e+02 -8.378003e+01
-14 2509     -2.098500e+02 -5.302500e+02
-0 2510     -5.014300e+02 -4.304000e+02
-1 2510     -4.090800e+02 -2.286100e+02
-7 2510     -5.342400e+02 -4.298700e+02
-0 2511     -5.843000e+02 -4.661000e+02
-1 2511     -4.909300e+02 -2.347700e+02
-0 2512     5.917100e+02 -4.513000e+01
-1 2512     8.064800e+02 -2.149800e+02
-13 2512     8.190800e+02 -2.425400e+02
-0 2513     4.266998e+01 5.651800e+02
-1 2513     4.392600e+02 5.655000e+02
-11 2513     1.812000e+02 -2.070600e+02
-12 2513     -2.694200e+02 5.909800e+02
-13 2513     2.230400e+02 2.268600e+02
-14 2513     3.539301e+02 -1.680700e+02
-0 2514     4.896600e+02 3.985900e+02
-1 2514     8.552100e+02 2.820100e+02
-2 2514     2.695699e+02 2.823500e+02
-3 2514     1.288100e+02 -4.541998e+01
-7 2514     2.764500e+02 5.386600e+02
-9 2514     8.529999e+01 3.281600e+02
-13 2514     6.454600e+02 1.287800e+02
-0 2515     -5.014300e+02 -4.304000e+02
-1 2515     -4.090800e+02 -2.286100e+02
-7 2515     -5.342400e+02 -4.298700e+02
-0 2516     1.935300e+02 5.359000e+02
-1 2516     5.934700e+02 4.982000e+02
-13 2516     3.413900e+02 2.115700e+02
-14 2516     4.991600e+02 -1.909200e+02
-0 2517     -3.201300e+02 8.687000e+01
-1 2517     -6.548999e+01 1.907700e+02
-13 2517     -2.262000e+01 -1.992500e+02
-0 2518     -3.558002e+01 4.886500e+02
-1 2518     3.372800e+02 5.066800e+02
-5 2518     3.692400e+02 -1.619200e+02
-6 2518     -5.169400e+02 4.991100e+02
-11 2518     1.159300e+02 -2.747700e+02
-13 2518     1.623800e+02 1.584100e+02
-14 2518     2.793700e+02 -2.487000e+02
-0 2519     3.268300e+02 5.809800e+02
-1 2519     7.579800e+02 5.133800e+02
-13 2519     4.446100e+02 2.579700e+02
-14 2519     6.243101e+02 -1.383400e+02
-0 2520     5.472400e+02 1.313200e+02
-1 2520     8.156400e+02 -1.588000e+01
-2 2520     4.463101e+02 8.387000e+01
-7 2520     3.812200e+02 2.961500e+02
-15 2520     7.186700e+02 3.936700e+02
-0 2521     -3.268700e+02 8.632001e+01
-1 2521     -7.283002e+01 1.920400e+02
-8 2521     -3.345800e+02 -1.630800e+02
-13 2521     -2.647998e+01 -1.991700e+02
-0 2522     -1.492700e+02 -5.222000e+02
-1 2522     -1.298300e+02 -4.230300e+02
-4 2522     -6.566700e+02 -2.665200e+02
-6 2522     -1.987000e+01 -6.692800e+02
-7 2522     -1.455100e+02 -4.435400e+02
-9 2522     7.373999e+01 -4.432600e+02
-0 2523     -3.161600e+02 -1.340200e+02
-1 2523     -1.411600e+02 -1.528003e+01
-6 2523     -5.001900e+02 -3.267000e+02
-7 2523     -4.133700e+02 -1.001500e+02
-8 2523     -2.217800e+02 -3.226200e+02
-13 2523     3.515002e+01 -3.884100e+02
-0 2524     -3.884998e+01 2.909998e+01
-1 2524     1.364300e+02 6.758002e+01
-7 2524     -1.329300e+02 1.331600e+02
-10 2524     -1.419500e+02 1.710900e+02
-13 2524     3.280900e+02 -2.021200e+02
-15 2524     -9.058002e+01 1.717100e+02
-0 2525     -9.654999e+01 -1.420100e+02
-1 2525     2.803003e+01 -8.003998e+01
-4 2525     -3.584800e+02 -3.343300e+02
-10 2525     -1.904100e+02 -3.366998e+01
-12 2525     -9.503998e+01 -1.255000e+02
-15 2525     -1.463100e+02 -6.813000e+01
-0 2526     -1.342200e+02 -2.234200e+02
-1 2526     -1.959003e+01 -1.485700e+02
-10 2526     -2.244700e+02 -1.314400e+02
-15 2526     -1.822200e+02 -1.839800e+02
-0 2527     -4.069200e+02 -3.409003e+01
-1 2527     -1.883200e+02 1.020900e+02
-0 2528     -4.205700e+02 5.253998e+01
-1 2528     -1.697100e+02 1.852600e+02
-10 2528     -5.941700e+02 1.595100e+02
-13 2528     -1.061700e+02 -2.346900e+02
-0 2529     2.499301e+02 2.567300e+02
-1 2529     5.589100e+02 1.975900e+02
-7 2529     5.963000e+01 3.614400e+02
-10 2529     1.723200e+02 4.698700e+02
-13 2529     4.336801e+02 -1.835999e+01
-14 2529     6.202400e+02 -4.831600e+02
-0 2530     5.403700e+02 6.270020e+00
-1 2530     7.697800e+02 -1.446200e+02
-7 2530     3.908900e+02 1.731100e+02
-10 2530     5.329301e+02 2.061000e+02
-13 2530     7.589000e+02 -2.025800e+02
-0 2531     -2.760500e+02 5.921002e+01
-1 2531     -3.490002e+01 1.531500e+02
-2 2531     -4.072600e+02 -1.920700e+02
-4 2531     -2.144400e+02 -1.781900e+02
-7 2531     -4.185700e+02 9.482001e+01
-0 2532     4.416000e+02 3.232500e+02
-1 2532     7.799200e+02 2.134300e+02
-6 2532     1.274300e+02 4.270400e+02
-7 2532     2.376801e+02 4.559900e+02
-11 2532     5.646801e+02 -4.059300e+02
-12 2532     2.440800e+02 4.229600e+02
-13 2532     6.039700e+02 5.796997e+01
-14 2532     8.352800e+02 -3.923200e+02
-0 2533     2.422700e+02 -2.032500e+02
-1 2533     3.348000e+02 -2.456000e+02
-7 2533     1.894100e+02 -4.553998e+01
-10 2533     2.067700e+02 -6.807001e+01
-13 2533     6.132400e+02 -3.797200e+02
-0 2534     -1.179600e+02 -1.119900e+02
-1 2534     1.940997e+01 -4.546997e+01
-2 2534     4.485999e+01 -1.417500e+02
-3 2534     -3.233002e+01 -4.497700e+02
-7 2534     -1.881400e+02 -2.209998e+01
-8 2534     6.173999e+01 -1.617800e+02
-9 2534     -6.246002e+01 -3.126001e+01
-10 2534     -2.177100e+02 -1.729980e+00
-12 2534     -1.363100e+02 -1.012700e+02
-13 2534     2.739800e+02 -3.312200e+02
-15 2534     -1.778200e+02 -3.096002e+01
-0 2535     -1.641800e+02 -4.722100e+02
-1 2535     -1.247900e+02 -3.722300e+02
-6 2535     -7.092999e+01 -6.231600e+02
-7 2535     -1.725800e+02 -3.981600e+02
-9 2535     2.478003e+01 -4.151700e+02
-12 2535     -8.641998e+01 -5.689500e+02
-0 2536     -4.067900e+02 -7.838000e+01
-1 2536     -2.032800e+02 6.110999e+01
-10 2536     -5.605800e+02 6.789978e+00
-15 2536     -5.638600e+02 -2.663000e+01
-0 2537     -2.237500e+02 -4.426300e+02
-1 2537     -1.685500e+02 -3.262000e+02
-6 2537     -1.615400e+02 -6.195601e+02
-7 2537     -2.414300e+02 -3.829400e+02
-9 2537     -5.322998e+01 -4.192800e+02
-0 2538     -9.285999e+01 -5.755699e+02
-1 2538     -9.790002e+01 -4.910200e+02
-4 2538     -7.215800e+02 -3.136000e+02
-6 2538     7.964001e+01 -6.977400e+02
-7 2538     -7.475000e+01 -4.831600e+02
-9 2538     1.630699e+02 -4.559600e+02
-0 2539     -1.468400e+02 -5.165400e+02
-1 2539     -1.257500e+02 -4.187500e+02
-4 2539     -6.523500e+02 -2.682800e+02
-7 2539     -1.446700e+02 -4.376801e+02
-9 2539     7.216998e+01 -4.381500e+02
-0 2540     -2.494100e+02 -4.548400e+02
-1 2540     -1.961100e+02 -3.290100e+02
-4 2540     -5.746800e+02 -1.910600e+02
-6 2540     -1.835700e+02 -6.457400e+02
-7 2540     -2.632700e+02 -3.993600e+02
-9 2540     -6.839001e+01 -4.369600e+02
-0 2541     -2.027300e+02 -4.758199e+02
-1 2541     -1.614700e+02 -3.631600e+02
-6 2541     -1.135000e+02 -6.457500e+02
-7 2541     -2.102300e+02 -4.103500e+02
-0 2542     -1.833000e+02 -4.831400e+02
-1 2542     -1.468400e+02 -3.762200e+02
-6 2542     -8.597000e+01 -6.441500e+02
-7 2542     -1.896100e+02 -4.132500e+02
-9 2542     1.453003e+01 -4.305500e+02
-0 2543     6.433101e+02 -3.724300e+02
-1 2543     7.260000e+02 -5.678900e+02
-7 2543     5.681100e+02 -1.526200e+02
-0 2544     -2.350500e+02 3.958100e+02
-1 2544     1.121200e+02 4.639500e+02
-2 2544     -5.127600e+02 1.339900e+02
-7 2544     -4.464000e+02 4.345900e+02
-10 2544     -4.158800e+02 5.902300e+02
-11 2544     -6.164001e+01 -3.588400e+02
-0 2545     1.662500e+02 -2.439100e+02
-1 2545     2.437600e+02 -2.597600e+02
-2 2545     4.223800e+02 -1.749200e+02
-6 2545     2.440900e+02 -1.929100e+02
-8 2545     3.709400e+02 -1.971900e+02
-9 2545     2.505601e+02 -4.221997e+01
-10 2545     1.246000e+02 -1.233000e+02
-13 2545     5.568500e+02 -4.216700e+02
-15 2545     2.228800e+02 -1.714000e+02
-0 2546     1.280500e+02 -6.903003e+01
-1 2546     2.622100e+02 -7.639001e+01
-15 2546     1.476200e+02 6.053003e+01
-0 2547     -1.383800e+02 5.339000e+02
-1 2547     2.423700e+02 5.773500e+02
-2 2547     -4.238900e+02 2.995100e+02
-5 2547     2.714100e+02 -1.155100e+02
-12 2547     -4.617100e+02 5.303700e+02
-13 2547     8.151001e+01 1.914100e+02
-14 2547     1.819100e+02 -2.048000e+02
-0 2548     -4.878998e+01 -2.622998e+01
-1 2548     1.108400e+02 1.635999e+01
-2 2548     8.740997e+01 -3.390997e+01
-7 2548     -1.331600e+02 7.575000e+01
-13 2548     3.256899e+02 -2.511900e+02
-15 2548     -9.581000e+01 9.463000e+01
-0 2549     2.812000e+02 5.502100e+02
-1 2549     6.960200e+02 4.914300e+02
-13 2549     4.102700e+02 2.297800e+02
-14 2549     5.830601e+02 -1.716000e+02
-0 2550     -3.409000e+02 5.790002e+01
-1 2550     -9.532001e+01 1.695000e+02
-4 2550     -2.081600e+02 -1.385500e+02
-13 2550     -3.459003e+01 -2.247700e+02
-0 2551     1.984000e+02 9.372000e+01
-1 2551     3.880900e+02 6.253998e+01
-4 2551     -2.326200e+02 -5.676700e+02
-7 2551     9.302002e+01 2.357100e+02
-10 2551     1.274500e+02 2.711000e+02
-13 2551     5.278101e+02 -1.276800e+02
-15 2551     2.245100e+02 2.927800e+02
-0 2552     6.087000e+01 9.620999e+01
-1 2552     2.502500e+02 1.047400e+02
-2 2552     1.668000e+02 1.266100e+02
-4 2552     -2.145400e+02 -4.599100e+02
-5 2552     6.958500e+02 -5.597600e+02
-7 2552     -4.231000e+01 2.174100e+02
-10 2552     -3.331000e+01 2.589100e+02
-13 2552     4.111500e+02 -1.354400e+02
-15 2552     3.515997e+01 2.770800e+02
-0 2553     -3.220900e+02 -1.312700e+02
-1 2553     -1.457800e+02 -1.112000e+01
-7 2553     -4.197100e+02 -9.871002e+01
-12 2553     -4.484700e+02 -2.481700e+02
-13 2553     2.882001e+01 -3.864000e+02
-0 2554     4.039301e+02 -4.594000e+01
-1 2554     5.693400e+02 -1.450100e+02
-6 2554     3.550200e+02 6.763000e+01
-7 2554     3.016300e+02 1.229700e+02
-10 2554     3.783800e+02 1.298800e+02
-12 2554     4.068199e+02 9.809003e+01
-13 2554     7.016100e+02 -2.388900e+02
-15 2554     5.292600e+02 1.292300e+02
-0 2555     3.249100e+02 4.633700e+02
-1 2555     7.200000e+02 3.875200e+02
-5 2555     7.300500e+02 -1.806000e+02
-6 2555     -1.217900e+02 5.417500e+02
-7 2555     8.752002e+01 5.640200e+02
-12 2555     4.138000e+01 5.113200e+02
-13 2555     4.491300e+02 1.588900e+02
-14 2555     6.333600e+02 -2.591500e+02
-0 2556     -4.823999e+01 -1.106000e+01
-1 2556     1.156200e+02 3.100000e+01
-3 2556     -3.510010e+00 -3.292400e+02
-6 2556     -1.015800e+02 -1.858002e+01
-7 2556     -1.356600e+02 9.104001e+01
-12 2556     -8.608002e+01 3.702002e+01
-13 2556     3.238000e+02 -2.380300e+02
-15 2556     -9.752002e+01 1.153300e+02
-0 2557     -3.974300e+02 8.473999e+01
-1 2557     -1.385100e+02 2.093500e+02
-2 2557     -5.774600e+02 -2.004500e+02
-7 2557     -5.514200e+02 9.841000e+01
-10 2557     -5.694200e+02 2.003100e+02
-13 2557     -9.196997e+01 -2.061100e+02
-15 2557     -5.732900e+02 1.964600e+02
-0 2558     5.716500e+02 2.072900e+02
-1 2558     8.645601e+02 5.800000e+01
-2 2558     4.565100e+02 1.729200e+02
-8 2558     4.343300e+02 1.143300e+02
-9 2558     2.514500e+02 2.429300e+02
-12 2558     4.549200e+02 3.624800e+02
-13 2558     7.694100e+02 -2.021002e+01
-15 2558     7.430500e+02 5.050600e+02
-0 2559     2.878600e+02 5.395600e+02
-1 2559     7.002500e+02 4.783200e+02
-11 2559     4.040699e+02 -2.161600e+02
-13 2559     4.160500e+02 2.206500e+02
-14 2559     5.905300e+02 -1.821600e+02
-0 2560     4.948700e+02 2.937200e+02
-1 2560     8.260900e+02 1.680500e+02
-6 2560     2.069700e+02 4.131700e+02
-7 2560     2.958400e+02 4.367100e+02
-13 2560     6.608400e+02 3.928003e+01
-0 2561     5.155900e+02 -1.655300e+02
-1 2561     6.712400e+02 -3.098600e+02
-7 2561     4.070300e+02 1.284003e+01
-12 2561     5.187700e+02 -4.315002e+01
-13 2561     7.869000e+02 -3.520600e+02
-0 2562     5.210699e+02 2.247998e+01
-1 2562     7.550601e+02 -1.218400e+02
-7 2562     3.694100e+02 1.845500e+02
-13 2562     7.366200e+02 -1.909300e+02
-0 2563     1.202800e+02 2.165997e+01
-1 2563     2.818101e+02 1.559998e+01
-2 2563     2.685500e+02 7.971002e+01
-7 2563     3.251001e+01 1.559900e+02
-10 2563     4.456000e+01 1.774700e+02
-13 2563     4.785699e+02 -1.922700e+02
-15 2563     1.252500e+02 1.831700e+02
-0 2564     -2.928700e+02 -2.581100e+02
-1 2564     -1.645400e+02 -1.360400e+02
-9 2564     -2.586100e+02 -3.208500e+02
-10 2564     -4.057600e+02 -1.892500e+02
-13 2564     8.560999e+01 -4.956000e+02
-15 2564     -3.895900e+02 -2.530200e+02
-0 2565     1.807300e+02 -4.086300e+02
-1 2565     2.189000e+02 -4.269400e+02
-7 2565     1.586801e+02 -2.629100e+02
-13 2565     5.742800e+02 -5.831899e+02
-0 2566     5.917100e+02 -4.513000e+01
-1 2566     8.064800e+02 -2.149800e+02
-7 2566     4.489800e+02 1.337400e+02
-10 2566     5.969399e+02 1.514600e+02
-13 2566     8.190800e+02 -2.425400e+02
-0 2567     1.750100e+02 5.240700e+02
-1 2567     5.705300e+02 4.902200e+02
-9 2567     -2.685200e+02 3.201700e+02
-13 2567     3.272300e+02 2.006900e+02
-14 2567     4.815800e+02 -2.036700e+02
-0 2568     1.948101e+02 6.831000e+01
-1 2568     3.739600e+02 3.890002e+01
-6 2568     1.485100e+02 1.529500e+02
-7 2568     9.550000e+01 2.122700e+02
-10 2568     1.257400e+02 2.405200e+02
-12 2568     1.776200e+02 2.012400e+02
-13 2568     5.312700e+02 -1.480100e+02
-15 2568     2.220601e+02 2.575500e+02
-0 2569     4.912500e+02 3.079500e+02
-1 2569     8.271100e+02 1.845100e+02
-7 2569     2.904000e+02 4.501000e+02
-12 2569     3.078101e+02 4.246300e+02
-13 2569     6.556600e+02 5.098999e+01
-0 2570     1.588800e+02 -1.402800e+02
-1 2570     2.713400e+02 -1.563200e+02
-7 2570     9.788000e+01 1.840027e+00
-10 2570     1.045600e+02 -4.900024e+00
-12 2570     2.074800e+02 -4.138000e+01
-13 2570     5.316000e+02 -3.304700e+02
-15 2570     1.990601e+02 -3.182001e+01
-0 2571     9.884998e+01 4.211300e+02
-1 2571     4.607500e+02 4.034100e+02
-2 2571     -1.928300e+02 1.702800e+02
-7 2571     -1.210800e+02 4.975500e+02
-8 2571     -7.883002e+01 1.290800e+02
-9 2571     -3.113900e+02 2.150600e+02
-13 2571     2.693101e+02 1.078900e+02
-14 2571     4.109399e+02 -3.154000e+02
-0 2572     1.740997e+01 1.547700e+02
-1 2572     2.323300e+02 1.731800e+02
-5 2572     6.174000e+02 -4.977100e+02
-13 2572     3.534900e+02 -9.278998e+01
-15 2572     -2.983002e+01 3.489200e+02
-0 2573     5.560100e+02 8.385999e+01
-1 2573     8.094600e+02 -6.869000e+01
-2 2573     4.686300e+02 3.904999e+01
-6 2573     3.776600e+02 2.108200e+02
-12 2573     4.650800e+02 2.207700e+02
-13 2573     7.663800e+02 -1.304000e+02
-15 2573     7.358800e+02 3.285400e+02
-0 2574     -4.897100e+02 1.891200e+02
-1 2574     -1.854800e+02 3.292400e+02
-13 2574     -2.018200e+02 -1.237100e+02
-0 2575     -2.617600e+02 4.103200e+02
-1 2575     8.865997e+01 4.846500e+02
-5 2575     1.407000e+02 -2.457200e+02
-7 2575     -4.752800e+02 4.464400e+02
-10 2575     -4.504500e+02 6.053800e+02
-14 2575     5.691998e+01 -3.355700e+02
-0 2576     -1.475700e+02 2.747700e+02
-1 2576     1.655800e+02 3.232200e+02
-11 2576     1.557001e+01 -4.692100e+02
-14 2576     1.766400e+02 -4.821400e+02
-0 2577     3.967000e+02 3.297100e+02
-1 2577     7.471600e+02 2.295300e+02
-13 2577     5.400900e+02 5.378998e+01
-14 2577     7.531200e+02 -3.947600e+02
-0 2578     -2.415200e+02 3.098300e+02
-1 2578     8.558002e+01 3.813500e+02
-14 2578     6.938000e+01 -4.460699e+02
-0 2579     8.819000e+01 5.029900e+02
-1 2579     4.710100e+02 4.902100e+02
-2 2579     -2.109200e+02 2.641200e+02
-5 2579     4.910100e+02 -1.444700e+02
-6 2579     -3.817000e+02 5.430400e+02
-7 2579     -1.416900e+02 5.801400e+02
-8 2579     -9.385999e+01 2.029100e+02
-12 2579     -2.109500e+02 5.243500e+02
-14 2579     3.985400e+02 -2.294600e+02
-0 2580     3.653000e+02 4.925200e+02
-1 2580     7.751300e+02 4.080500e+02
-11 2580     4.812300e+02 -2.532000e+02
-14 2580     6.708199e+02 -2.261500e+02
-0 2581     3.732100e+02 4.803800e+02
-1 2581     7.807000e+02 3.932200e+02
-11 2581     4.905300e+02 -2.630000e+02
-14 2581     6.802800e+02 -2.382400e+02
-0 2582     7.153003e+01 4.973900e+02
-1 2582     4.518500e+02 4.888100e+02
-9 2582     -3.426700e+02 2.901800e+02
-14 2582     3.824600e+02 -2.361000e+02
-0 2583     -1.541800e+02 4.465800e+02
-1 2583     2.050699e+02 4.938800e+02
-2 2583     -4.349400e+02 1.961700e+02
-7 2583     -3.717200e+02 4.960000e+02
-12 2583     -4.639100e+02 4.220400e+02
-14 2583     1.637700e+02 -2.957300e+02
-0 2584     -4.539978e+00 4.522400e+02
-1 2584     3.609900e+02 4.620300e+02
-5 2584     3.979301e+02 -2.005700e+02
-7 2584     -2.248900e+02 5.184200e+02
-8 2584     -1.600200e+02 1.545300e+02
-11 2584     1.454100e+02 -3.054800e+02
-12 2584     -3.001000e+02 4.518300e+02
-13 2584     1.871100e+02 1.289200e+02
-14 2584     3.090900e+02 -2.858200e+02
-0 2585     2.434000e+02 4.505200e+02
-1 2585     6.256000e+02 3.957900e+02
-2 2585     -6.782001e+01 2.066600e+02
-5 2585     6.469399e+02 -1.971100e+02
-7 2585     1.281000e+01 5.427700e+02
-11 2585     3.726200e+02 -2.973000e+02
-12 2585     -3.917999e+01 4.850000e+02
-14 2585     5.528600e+02 -2.772800e+02
-0 2586     -1.382700e+02 3.330700e+02
-1 2586     1.940699e+02 3.772600e+02
-2 2586     -4.122300e+02 5.675000e+01
-7 2586     -3.415000e+02 3.799300e+02
-11 2586     2.653998e+01 -4.148100e+02
-14 2586     1.747500e+02 -4.185500e+02
-0 2587     -2.462300e+02 3.027000e+02
-1 2587     7.939001e+01 3.748600e+02
-7 2587     -4.453600e+02 3.347100e+02
-14 2587     6.341998e+01 -4.538800e+02
-15 2587     -3.957200e+02 5.173000e+02
-0 2588     2.361100e+02 4.285300e+02
-1 2588     6.110300e+02 3.745800e+02
-7 2588     8.789978e+00 5.197100e+02
-14 2588     5.470900e+02 -3.009900e+02
-0 2589     -3.102400e+02 3.990700e+02
-1 2589     3.842999e+01 4.853100e+02
-2 2589     -5.911700e+02 1.364600e+02
-7 2589     -5.235300e+02 4.290900e+02
-8 2589     -4.048300e+02 9.554001e+01
-10 2589     -5.078900e+02 5.879200e+02
-14 2589     8.609985e+00 -3.479500e+02
-0 2590     2.558800e+02 4.750500e+02
-1 2590     6.458000e+02 4.182700e+02
-6 2590     -1.966200e+02 5.421000e+02
-7 2590     2.175000e+01 5.687200e+02
-9 2590     -2.015400e+02 2.762600e+02
-13 2590     3.930601e+02 1.642200e+02
-14 2590     5.636700e+02 -2.507400e+02
-0 2591     2.434000e+02 4.505200e+02
-1 2591     6.256000e+02 3.957900e+02
-2 2591     -6.782001e+01 2.066600e+02
-5 2591     6.469399e+02 -1.971100e+02
-7 2591     1.281000e+01 5.427700e+02
-11 2591     3.726200e+02 -2.973000e+02
-12 2591     -3.917999e+01 4.850000e+02
-13 2591     3.840800e+02 1.427000e+02
-14 2591     5.528600e+02 -2.772800e+02
-0 2592     3.660999e+01 4.239800e+02
-1 2592     3.963600e+02 4.229100e+02
-7 2592     -1.814500e+02 4.940100e+02
-14 2592     3.497700e+02 -3.143900e+02
-0 2593     -1.650800e+02 2.297100e+02
-1 2593     1.319900e+02 2.845200e+02
-7 2593     -3.456400e+02 2.755200e+02
-14 2593     1.699000e+02 -5.320000e+02
-15 2593     -2.742700e+02 4.263800e+02
-0 2594     2.018101e+02 4.538600e+02
-1 2594     5.802900e+02 4.099000e+02
-2 2594     -1.048400e+02 2.097900e+02
-7 2594     -2.725000e+01 5.416600e+02
-14 2594     5.108400e+02 -2.759400e+02
-0 2595     -1.033600e+02 4.446700e+02
-1 2595     2.559700e+02 4.790200e+02
-7 2595     -3.210500e+02 4.999100e+02
-13 2595     1.091200e+02 1.177700e+02
-14 2595     2.133400e+02 -2.961100e+02
-0 2596     3.402600e+02 4.482500e+02
-1 2596     7.328101e+02 3.673300e+02
-7 2596     1.035900e+02 5.504300e+02
-13 2596     4.618500e+02 1.467300e+02
-14 2596     6.500601e+02 -2.746200e+02
-0 2597     5.031000e+01 5.031700e+02
-1 2597     4.311700e+02 4.999800e+02
-2 2597     -2.450600e+02 2.640200e+02
-3 2597     -3.778400e+02 -6.797998e+01
-5 2597     4.544399e+02 -1.457500e+02
-7 2597     -1.781600e+02 5.765000e+02
-13 2597     2.298500e+02 1.754300e+02
-14 2597     3.621400e+02 -2.306200e+02
-0 2598     2.297300e+02 4.244800e+02
-1 2598     6.028400e+02 3.719300e+02
-7 2598     3.179993e+00 5.149900e+02
-11 2598     3.628000e+02 -3.210700e+02
-14 2598     5.411500e+02 -3.053700e+02
-0 2599     1.081800e+02 4.441900e+02
-1 2599     4.768400e+02 4.246400e+02
-7 2599     -1.148500e+02 5.221800e+02
-14 2599     4.197100e+02 -2.902400e+02
-0 2600     -3.159900e+02 4.188000e+02
-1 2600     3.753003e+01 5.058000e+02
-4 2600     -8.309998e+00 -1.725800e+02
-7 2600     -5.316800e+02 4.487800e+02
-10 2600     -5.177400e+02 6.110900e+02
-11 2600     -1.329100e+02 -3.385700e+02
-13 2600     -5.966998e+01 8.534000e+01
-14 2600     5.169983e+00 -3.271500e+02
-0 2601     -1.998999e+01 4.817100e+02
-1 2601     3.516801e+02 4.955100e+02
-3 2601     -4.394000e+02 -9.270001e+01
-5 2601     3.841100e+02 -1.691600e+02
-6 2601     -4.982500e+02 4.933000e+02
-7 2601     -2.439500e+02 5.469500e+02
-12 2601     -3.224900e+02 4.839300e+02
-14 2601     2.941700e+02 -2.555400e+02
-0 2602     -6.985999e+01 4.916100e+02
-1 2602     3.024301e+02 5.180600e+02
-3 2602     -4.847000e+02 -8.039001e+01
-5 2602     3.355601e+02 -1.597600e+02
-6 2602     -5.564600e+02 4.960900e+02
-7 2602     -2.941800e+02 5.519500e+02
-11 2602     8.546997e+01 -2.724500e+02
-12 2602     -3.785700e+02 4.884300e+02
-14 2602     2.464500e+02 -2.465200e+02
-0 2603     -2.040002e+01 4.740200e+02
-1 2603     3.491100e+02 4.879000e+02
-2 2603     -3.082000e+02 2.296500e+02
-6 2603     -4.968800e+02 4.828700e+02
-7 2603     -2.434100e+02 5.389600e+02
-8 2603     -1.735200e+02 1.737500e+02
-11 2603     1.300100e+02 -2.869700e+02
-12 2603     -3.217400e+02 4.745800e+02
-14 2603     2.939000e+02 -2.635100e+02
-0 2604     -5.419983e+00 5.036400e+02
-1 2604     3.721700e+02 5.143800e+02
-2 2604     -2.960900e+02 2.638400e+02
-3 2604     -4.270200e+02 -6.746997e+01
-6 2604     -4.856800e+02 5.247100e+02
-7 2604     -2.326900e+02 5.712800e+02
-9 2604     -4.042500e+02 2.937100e+02
-12 2604     -3.105400e+02 5.117600e+02
-14 2604     3.088500e+02 -2.323900e+02
-0 2605     2.573000e+02 4.826700e+02
-1 2605     6.498101e+02 4.257400e+02
-7 2605     2.223999e+01 5.767100e+02
-14 2605     5.650100e+02 -2.424000e+02
-0 2606     3.631200e+02 4.522000e+02
-1 2606     7.605500e+02 3.655200e+02
-6 2606     -8.028000e+01 5.356300e+02
-7 2606     1.244700e+02 5.566200e+02
-11 2606     4.848400e+02 -2.892700e+02
-14 2606     6.728199e+02 -2.687900e+02
-0 2607     3.433500e+02 4.730400e+02
-1 2607     7.439900e+02 3.931700e+02
-6 2607     -1.045300e+02 5.582700e+02
-7 2607     1.036800e+02 5.752900e+02
-12 2607     5.815002e+01 5.254800e+02
-14 2607     6.507400e+02 -2.478100e+02
-0 2608     -9.950000e+01 4.735000e+02
-1 2608     2.674800e+02 5.072600e+02
-2 2608     -3.832100e+02 2.287500e+02
-3 2608     -5.125100e+02 -1.018300e+02
-5 2608     3.057500e+02 -1.783000e+02
-7 2608     -3.214900e+02 5.302200e+02
-12 2608     -4.081500e+02 4.634400e+02
-14 2608     2.172000e+02 -2.661800e+02
-0 2609     -3.528998e+01 4.782100e+02
-1 2609     3.349301e+02 4.961000e+02
-7 2609     -2.585800e+02 5.420900e+02
-14 2609     2.793500e+02 -2.595200e+02
-0 2610     -8.412000e+01 4.679700e+02
-1 2610     2.821100e+02 4.978700e+02
-2 2610     -3.683100e+02 2.222400e+02
-6 2610     -5.686000e+02 4.620600e+02
-7 2610     -3.053700e+02 5.261200e+02
-8 2610     -2.227300e+02 1.669500e+02
-12 2610     -3.905500e+02 4.586200e+02
-14 2610     2.318900e+02 -2.715300e+02
-0 2611     -1.191900e+02 4.217100e+02
-1 2611     2.348400e+02 4.603200e+02
-2 2611     -3.992100e+02 1.667300e+02
-5 2611     2.831600e+02 -2.339500e+02
-7 2611     -3.341000e+02 4.742000e+02
-8 2611     -2.479700e+02 1.223700e+02
-12 2611     -4.210400e+02 3.975000e+02
-14 2611     1.966300e+02 -3.214400e+02
-0 2612     -1.660800e+02 3.268100e+02
-1 2612     1.646899e+02 3.782500e+02
-7 2612     -3.681000e+02 3.701000e+02
-14 2612     1.466899e+02 -4.257200e+02
-0 2613     -4.282300e+02 4.445100e+02
-1 2613     -6.541998e+01 5.575700e+02
-2 2613     -7.176400e+02 1.939600e+02
-5 2613     -1.891998e+01 -2.060400e+02
-14 2613     -1.020900e+02 -2.998900e+02
-0 2614     2.991100e+02 5.657500e+02
-1 2614     7.211801e+02 5.038200e+02
-11 2614     4.111600e+02 -1.937600e+02
-13 2614     4.237700e+02 2.437200e+02
-14 2614     5.992900e+02 -1.548700e+02
-0 2615     1.947000e+02 4.025000e+02
-1 2615     5.585300e+02 3.585400e+02
-13 2615     3.473900e+02 9.781000e+01
-0 2616     3.651300e+02 4.565400e+02
-1 2616     7.640200e+02 3.695900e+02
-7 2616     1.259500e+02 5.609400e+02
-13 2616     4.814600e+02 1.557100e+02
-14 2616     6.744100e+02 -2.640500e+02
-0 2617     9.122998e+01 5.005800e+02
-1 2617     4.733300e+02 4.869200e+02
-2 2617     -2.080100e+02 2.614600e+02
-13 2617     2.618400e+02 1.756700e+02
-14 2617     4.013300e+02 -2.317900e+02
-0 2618     3.576300e+02 4.415700e+02
-1 2618     7.510100e+02 3.557100e+02
-2 2618     3.177002e+01 2.014900e+02
-14 2618     6.689500e+02 -2.804700e+02
-0 2619     3.118101e+02 -4.209003e+01
-1 2619     4.641400e+02 -1.088600e+02
-7 2619     2.221700e+02 1.187900e+02
-10 2619     2.716500e+02 1.242800e+02
-15 2619     3.983500e+02 1.215900e+02
-0 2620     -8.306000e+01 4.887400e+02
-1 2620     2.881899e+02 5.186700e+02
-3 2620     -4.969400e+02 -8.359003e+01
-5 2620     3.229900e+02 -1.617500e+02
-6 2620     -5.712400e+02 4.903600e+02
-7 2620     -3.067900e+02 5.481800e+02
-12 2620     -3.929200e+02 4.833000e+02
-0 2621     5.546500e+02 6.462000e+01
-1 2621     8.024700e+02 -8.803003e+01
-6 2621     3.812400e+02 1.886200e+02
-15 2621     7.366100e+02 3.016800e+02
-0 2622     5.286300e+02 7.982999e+01
-1 2622     7.803600e+02 -6.437000e+01
-6 2622     3.437000e+02 1.955800e+02
-7 2622     3.691500e+02 2.424000e+02
-10 2622     5.129301e+02 2.905300e+02
-15 2622     6.980601e+02 3.190800e+02
-0 2623     5.748000e+02 -3.094000e+01
-1 2623     7.933900e+02 -1.944900e+02
-13 2623     7.991700e+02 -2.316900e+02
-15 2623     7.755000e+02 1.721900e+02
-0 2624     4.120400e+02 -5.360999e+01
-1 2624     5.745699e+02 -1.554700e+02
-6 2624     3.669900e+02 6.271002e+01
-10 2624     3.883700e+02 1.218900e+02
-12 2624     4.187300e+02 9.296002e+01
-15 2624     5.411899e+02 1.193700e+02
-0 2625     -1.768700e+02 -1.341998e+01
-1 2625     2.460022e+00 6.371002e+01
-10 2625     -2.976500e+02 1.067500e+02
-15 2625     -2.690300e+02 9.419000e+01
-0 2626     3.923800e+02 -7.959003e+01
-1 2626     5.422000e+02 -1.744800e+02
-12 2626     4.118900e+02 6.471997e+01
-15 2626     5.161100e+02 8.142999e+01
-0 2627     5.221300e+02 1.089700e+02
-1 2627     7.829399e+02 -3.202002e+01
-7 2627     3.589399e+02 2.692800e+02
-13 2627     7.284301e+02 -1.128200e+02
-15 2627     6.856100e+02 3.587300e+02
-0 2628     1.301600e+02 -8.557001e+01
-1 2628     2.598300e+02 -9.353998e+01
-2 2628     3.164399e+02 -2.754999e+01
-6 2628     1.423400e+02 -3.328998e+01
-7 2628     6.053998e+01 5.113000e+01
-12 2628     1.579300e+02 1.390002e+01
-13 2628     4.996899e+02 -2.844700e+02
-15 2628     1.527700e+02 3.834003e+01
-0 2629     5.753000e+02 -1.632001e+01
-1 2629     7.984399e+02 -1.790700e+02
-6 2629     4.293900e+02 1.054200e+02
-7 2629     4.290200e+02 1.582700e+02
-10 2629     5.753600e+02 1.828500e+02
-15 2629     7.747400e+02 1.927400e+02
-0 2630     -4.037300e+02 7.899780e-01
-1 2630     -1.731400e+02 1.332300e+02
-15 2630     -5.715600e+02 8.139001e+01
-0 2631     -1.050500e+02 9.607001e+01
-1 2631     1.089900e+02 1.474400e+02
-7 2631     -2.256900e+02 1.787000e+02
-10 2631     -2.264300e+02 2.422800e+02
-15 2631     -1.850500e+02 2.530900e+02
-0 2632     -1.554100e+02 3.246997e+01
-1 2632     4.028998e+01 1.008800e+02
-7 2632     -2.642900e+02 1.072500e+02
-10 2632     -2.787100e+02 1.633100e+02
-15 2632     -2.448500e+02 1.593300e+02
-0 2633     2.648900e+02 1.321300e+02
-1 2633     4.748199e+02 8.026999e+01
-10 2633     2.007300e+02 3.221700e+02
-15 2633     3.127900e+02 3.547900e+02
-0 2634     7.091998e+01 5.552002e+01
-1 2634     2.460000e+02 6.253998e+01
-15 2634     5.377002e+01 2.226100e+02
-0 2635     9.669000e+01 -2.296100e+02
-1 2635     1.788000e+02 -2.229700e+02
-10 2635     4.242999e+01 -1.145400e+02
-15 2635     1.255300e+02 -1.612700e+02
-0 2636     2.837300e+02 1.129500e+02
-1 2636     4.881700e+02 5.484003e+01
-15 2636     3.411500e+02 3.312200e+02
-0 2637     3.950699e+02 -6.004999e+01
-1 2637     5.538101e+02 -1.561900e+02
-15 2637     5.183900e+02 1.085700e+02
-0 2638     3.010699e+02 -1.142400e+02
-1 2638     4.264500e+02 -1.771900e+02
-7 2638     2.257600e+02 4.846997e+01
-10 2638     2.652400e+02 3.991998e+01
-15 2638     3.911100e+02 2.200000e+01
-0 2639     2.858700e+02 8.606000e+01
-1 2639     4.794200e+02 2.784003e+01
-7 2639     1.749600e+02 2.388600e+02
-10 2639     2.290900e+02 2.702300e+02
-13 2639     5.950300e+02 -1.298000e+02
-15 2639     3.467200e+02 2.943500e+02
-0 2640     3.006899e+02 -9.897998e+01
-1 2640     4.331500e+02 -1.623700e+02
-15 2640     3.897700e+02 4.323999e+01
-0 2641     2.423000e+02 -2.341000e+02
-1 2641     3.220601e+02 -2.752900e+02
-12 2641     3.360300e+02 -1.197500e+02
-15 2641     3.246500e+02 -1.481800e+02
-0 2642     -8.358002e+01 -1.476700e+02
-1 2642     3.796002e+01 -8.919000e+01
-3 2642     3.331000e+01 -4.630000e+02
-4 2642     -3.643000e+02 -3.441200e+02
-6 2642     -7.640997e+01 -1.817700e+02
-7 2642     -1.440200e+02 -4.977002e+01
-8 2642     1.132100e+02 -1.774900e+02
-10 2642     -1.743200e+02 -3.896002e+01
-12 2642     -7.673999e+01 -1.270800e+02
-13 2642     3.148900e+02 -3.581900e+02
-15 2642     -1.275600e+02 -7.421002e+01
-0 2643     2.832000e+02 -1.192700e+02
-1 2643     4.064301e+02 -1.765600e+02
-10 2643     2.460000e+02 3.234998e+01
-15 2643     3.674600e+02 1.273999e+01
-0 2644     6.542999e+01 8.106000e+01
-1 2644     2.493400e+02 8.937000e+01
-7 2644     -3.441998e+01 2.042600e+02
-15 2644     4.282001e+01 2.568000e+02
-0 2645     2.424000e+02 -5.145001e+01
-1 2645     3.847400e+02 -9.509998e+01
-7 2645     1.619900e+02 1.018000e+02
-13 2645     5.884800e+02 -2.475700e+02
-15 2645     3.024000e+02 9.998001e+01
-0 2646     -1.806700e+02 -4.587000e+02
-1 2646     -1.351500e+02 -3.546100e+02
-6 2646     -9.950000e+01 -6.171500e+02
-7 2646     -1.928600e+02 -3.891900e+02
-15 2646     -2.141700e+02 -5.081700e+02
-0 2647     2.513300e+02 -5.188000e+01
-1 2647     3.940200e+02 -9.864001e+01
-7 2647     1.701200e+02 1.027700e+02
-10 2647     2.030800e+02 1.072500e+02
-13 2647     5.951100e+02 -2.470600e+02
-15 2647     3.148800e+02 1.006200e+02
-0 2648     -1.191200e+02 6.158002e+01
-1 2648     8.151001e+01 1.190300e+02
-15 2648     -2.005800e+02 2.042600e+02
-0 2649     1.998900e+02 5.196002e+01
-1 2649     3.731200e+02 2.096002e+01
-7 2649     1.036800e+02 1.967500e+02
-10 2649     1.327600e+02 2.222000e+02
-13 2649     5.386400e+02 -1.612300e+02
-15 2649     2.303101e+02 2.358200e+02
-0 2650     3.757700e+02 -1.415700e+02
-1 2650     4.985400e+02 -2.302400e+02
-6 2650     3.878200e+02 -2.879999e+01
-7 2650     2.993000e+02 3.241998e+01
-10 2650     3.546600e+02 1.684998e+01
-12 2650     4.272000e+02 3.229980e+00
-13 2650     7.081700e+02 -3.190900e+02
-15 2650     4.995400e+02 -5.030029e+00
-0 2651     2.419000e+02 -1.360900e+02
-1 2651     3.567600e+02 -1.789400e+02
-10 2651     1.997200e+02 8.940002e+00
-15 2651     3.116500e+02 -1.521997e+01
-0 2652     2.899600e+02 7.871997e+01
-1 2652     4.811899e+02 1.900000e+01
-7 2652     1.800000e+02 2.323700e+02
-10 2652     2.351300e+02 2.630000e+02
-15 2652     3.536100e+02 2.851000e+02
-0 2653     2.365100e+02 2.377100e+02
-1 2653     5.374100e+02 1.824700e+02
-10 2653     1.585100e+02 4.458700e+02
-15 2653     2.766200e+02 4.947700e+02
-0 2654     3.674100e+02 -4.353998e+01
-1 2654     5.265000e+02 -1.295200e+02
-7 2654     2.709000e+02 1.226400e+02
-10 2654     3.360400e+02 1.286700e+02
-15 2654     4.767500e+02 1.274300e+02
-0 2655     5.909003e+01 -1.289900e+02
-1 2655     1.769500e+02 -1.142900e+02
-7 2655     -2.900024e+00 -4.359985e+00
-12 2655     8.971997e+01 -5.747998e+01
-15 2655     6.198999e+01 -2.996002e+01
-0 2656     -2.553300e+02 1.971500e+02
-1 2656     3.469000e+01 2.772500e+02
-15 2656     -3.937500e+02 3.694400e+02
-0 2657     2.634600e+02 1.403200e+02
-1 2657     4.772400e+02 8.879999e+01
-15 2657     3.104301e+02 3.661800e+02
-0 2658     3.246200e+02 3.064001e+01
-1 2658     5.031899e+02 -4.046002e+01
-15 2658     4.075200e+02 2.234300e+02
-0 2659     -4.120200e+02 -1.395300e+02
-1 2659     -2.296700e+02 6.890015e+00
-7 2659     -5.123600e+02 -1.238800e+02
-15 2659     -5.652600e+02 -1.097200e+02
-0 2660     1.840000e+02 7.712000e+01
-1 2660     3.657600e+02 5.116998e+01
-10 2660     1.120200e+02 2.498900e+02
-15 2660     2.058199e+02 2.681400e+02
-0 2661     1.672800e+02 -2.189200e+02
-1 2661     2.528101e+02 -2.357100e+02
-2 2661     4.127100e+02 -1.482800e+02
-10 2661     1.236000e+02 -9.432001e+01
-15 2661     2.204301e+02 -1.372200e+02
-0 2662     2.136700e+02 4.422998e+01
-1 2662     3.852100e+02 9.440002e+00
-10 2662     1.497600e+02 2.144100e+02
-15 2662     2.505800e+02 2.273000e+02
-0 2663     8.458002e+01 -1.981400e+02
-1 2663     1.798101e+02 -1.892200e+02
-10 2663     2.521997e+01 -7.951001e+01
-15 2663     1.054700e+02 -1.200900e+02
-0 2664     1.892400e+02 2.778998e+01
-1 2664     3.541100e+02 2.999878e-01
-7 2664     9.887000e+01 1.720400e+02
-10 2664     1.230100e+02 1.931000e+02
-15 2664     2.188600e+02 2.010300e+02
-0 2665     -2.081600e+02 2.243300e+02
-1 2665     8.890997e+01 2.907800e+02
-8 2665     -2.814900e+02 -5.025000e+01
-11 2665     -4.283002e+01 -5.175000e+02
-13 2665     4.190997e+01 -7.652002e+01
-14 2665     1.235300e+02 -5.385699e+02
-15 2665     -3.325000e+02 4.134400e+02
-0 2666     2.149399e+02 8.926001e+01
-1 2666     4.026700e+02 5.328998e+01
-15 2666     2.476801e+02 2.888800e+02
-0 2667     2.836100e+02 6.241998e+01
-1 2667     4.670300e+02 4.640015e+00
-7 2667     1.780100e+02 2.142900e+02
-10 2667     2.291600e+02 2.411300e+02
-15 2667     3.465800e+02 2.610400e+02
-0 2668     3.080500e+02 -1.011400e+02
-1 2668     4.394500e+02 -1.670300e+02
-7 2668     2.302000e+02 6.165002e+01
-10 2668     2.727100e+02 5.613000e+01
-15 2668     4.005900e+02 4.110999e+01
-0 2669     2.934100e+02 5.926001e+01
-1 2669     4.772800e+02 -1.549988e+00
-7 2669     1.867800e+02 2.139200e+02
-15 2669     3.602800e+02 2.584900e+02
-0 2670     -4.575000e+01 -1.726400e+02
-1 2670     6.398999e+01 -1.246300e+02
-7 2670     -9.952002e+01 -6.665002e+01
-12 2670     -1.920001e+01 -1.406900e+02
-15 2670     -7.370001e+01 -1.030200e+02
-0 2671     7.221002e+01 -2.084700e+02
-1 2671     1.635200e+02 -1.950200e+02
-4 2671     -4.379800e+02 -4.702200e+02
-7 2671     2.662000e+01 -7.953998e+01
-10 2671     1.172998e+01 -9.244000e+01
-0 2672     -1.221300e+02 -2.121500e+02
-1 2672     -7.960022e+00 -1.409500e+02
-10 2672     -2.118800e+02 -1.174100e+02
-12 2672     -1.225100e+02 -2.357900e+02
-15 2672     -1.685800e+02 -1.664800e+02
-0 2673     -1.482700e+02 -6.701001e+01
-1 2673     7.909973e+00 5.179993e+00
-6 2673     -2.095500e+02 -1.248500e+02
-12 2673     -1.961800e+02 -6.485999e+01
-15 2673     -2.245900e+02 2.541998e+01
-0 2674     2.198900e+02 -1.431500e+02
-1 2674     3.314900e+02 -1.789200e+02
-15 2674     2.831300e+02 -2.812000e+01
-0 2675     2.521899e+02 3.796997e+01
-1 2675     4.243300e+02 -9.260010e+00
-10 2675     1.952200e+02 2.109000e+02
-15 2675     3.051600e+02 2.235900e+02
-0 2676     2.886899e+02 1.075300e+02
-1 2676     4.919100e+02 4.840002e+01
-15 2676     3.488199e+02 3.244800e+02
-0 2677     1.650800e+02 -1.297600e+02
-1 2677     2.820300e+02 -1.481500e+02
-10 2677     1.110700e+02 8.190002e+00
-15 2677     2.064600e+02 -1.675000e+01
-0 2678     2.477100e+02 8.548999e+01
-1 2678     4.366899e+02 3.954999e+01
-10 2678     1.849800e+02 2.661000e+02
-15 2678     2.935699e+02 2.886400e+02
-0 2679     2.700699e+02 6.460999e+01
-1 2679     4.535400e+02 1.159998e+01
-7 2679     1.659000e+02 2.168200e+02
-15 2679     3.266801e+02 2.627800e+02
-0 2680     3.859700e+02 -8.316998e+01
-1 2680     5.342100e+02 -1.760300e+02
-10 2680     3.611400e+02 8.490997e+01
-15 2680     5.077400e+02 7.578998e+01
-0 2681     2.647200e+02 1.228998e+01
-1 2681     4.287500e+02 -3.871002e+01
-7 2681     1.703800e+02 1.662900e+02
-10 2681     2.113800e+02 1.821000e+02
-13 2681     5.953400e+02 -1.916200e+02
-15 2681     3.248300e+02 1.896200e+02
-0 2682     3.248400e+02 -3.721997e+01
-1 2682     4.804900e+02 -1.089900e+02
-15 2682     4.159399e+02 1.306700e+02
-0 2683     2.651300e+02 -1.558500e+02
-1 2683     3.758600e+02 -2.065000e+02
-10 2683     2.287100e+02 -1.178003e+01
-15 2683     3.474399e+02 -3.906000e+01
-0 2684     3.875800e+02 -6.865997e+01
-1 2684     5.420900e+02 -1.622400e+02
-7 2684     2.919301e+02 1.004300e+02
-10 2684     3.619200e+02 1.023400e+02
-15 2684     5.088300e+02 9.591000e+01
-0 2685     1.232200e+02 -2.060200e+02
-1 2685     2.147200e+02 -2.089600e+02
-15 2685     1.588600e+02 -1.252300e+02
-0 2686     2.833400e+02 -1.157300e+02
-1 2686     4.080400e+02 -1.729500e+02
-10 2686     2.459900e+02 3.690997e+01
-13 2686     6.291700e+02 -3.013900e+02
-15 2686     3.673000e+02 1.787000e+01
-0 2687     2.330900e+02 -1.066400e+02
-1 2687     3.593900e+02 -1.474300e+02
-2 2687     4.080500e+02 -3.907001e+01
-10 2687     1.860200e+02 4.128998e+01
-12 2687     2.712900e+02 1.147998e+01
-15 2687     2.972600e+02 2.402002e+01
-0 2688     9.909998e+01 -1.340300e+02
-1 2688     2.146500e+02 -1.313700e+02
-10 2688     3.542999e+01 -3.599976e+00
-15 2688     1.168600e+02 -3.134998e+01
-0 2689     4.182000e+02 -9.870001e+01
-1 2689     5.620601e+02 -2.024500e+02
-10 2689     3.993101e+02 7.058002e+01
-15 2689     5.541500e+02 5.876001e+01
-0 2690     2.399700e+02 2.981000e+01
-1 2690     4.084600e+02 -1.323999e+01
-7 2690     1.450200e+02 1.808200e+02
-10 2690     1.811500e+02 2.003400e+02
-13 2690     5.736600e+02 -1.778800e+02
-15 2690     2.885601e+02 2.104600e+02
-0 2691     -1.757800e+02 -4.538900e+02
-1 2691     -1.290200e+02 -3.520400e+02
-6 2691     -9.550000e+01 -6.099399e+02
-15 2691     -2.072600e+02 -5.012300e+02
-0 2692     2.359399e+02 -1.369200e+02
-1 2692     3.507600e+02 -1.778800e+02
-7 2692     1.706500e+02 1.763000e+01
-10 2692     1.936500e+02 7.390015e+00
-15 2692     3.041300e+02 -1.725000e+01
-0 2693     -1.467999e+01 -2.672300e+02
-1 2693     7.052002e+01 -2.257200e+02
-6 2693     3.546997e+01 -3.011200e+02
-7 2693     -5.596002e+01 -1.590000e+02
-9 2693     8.975000e+01 -1.427700e+02
-10 2693     -8.150000e+01 -1.692600e+02
-12 2693     3.709998e+01 -2.545700e+02
-13 2693     3.844900e+02 -4.639800e+02
-15 2693     -1.750000e+01 -2.262400e+02
-0 2694     3.153199e+02 -1.900024e+00
-1 2694     4.808500e+02 -7.006000e+01
-15 2694     3.980400e+02 1.777100e+02
-0 2695     2.383700e+02 -1.284300e+02
-1 2695     3.566200e+02 -1.705400e+02
-7 2695     1.710300e+02 2.589001e+01
-10 2695     1.956400e+02 1.738000e+01
-12 2695     2.869500e+02 -9.349976e+00
-15 2695     3.067400e+02 -5.340027e+00
-0 2696     2.423000e+02 -2.341000e+02
-1 2696     3.220601e+02 -2.752900e+02
-12 2696     3.360300e+02 -1.197500e+02
-15 2696     3.246500e+02 -1.481800e+02
-0 2697     2.888400e+02 1.215300e+02
-1 2697     4.985000e+02 6.190002e+01
-15 2697     3.479200e+02 3.434900e+02
-0 2698     3.248400e+02 -3.721997e+01
-1 2698     4.804900e+02 -1.089900e+02
-13 2698     6.449100e+02 -2.317400e+02
-15 2698     4.159399e+02 1.306700e+02
-0 2699     5.863000e+01 -2.025800e+02
-1 2699     1.529100e+02 -1.849700e+02
-15 2699     7.050000e+01 -1.289500e+02
-0 2700     -1.464700e+02 -1.208100e+02
-1 2700     -1.090002e+01 -4.484998e+01
-10 2700     -2.505000e+02 -1.471997e+01
-12 2700     -1.660400e+02 -1.187800e+02
-15 2700     -2.156700e+02 -4.660999e+01
-0 2701     -1.762700e+02 -4.569600e+02
-1 2701     -1.306200e+02 -3.546900e+02
-15 2701     -2.082500e+02 -5.051200e+02
-0 2702     3.331600e+02 -1.785600e+02
-1 2702     4.383800e+02 -2.519600e+02
-6 2702     3.707100e+02 -7.565997e+01
-7 2702     2.690100e+02 -8.090027e+00
-10 2702     3.092300e+02 -3.072998e+01
-12 2702     4.024600e+02 -4.251001e+01
-13 2702     6.838101e+02 -3.528900e+02
-15 2702     4.440900e+02 -6.121997e+01
-0 2703     1.129800e+02 -2.066200e+02
-1 2703     2.041700e+02 -2.061500e+02
-15 2703     1.446100e+02 -1.274800e+02
-0 2704     1.324500e+02 -1.431400e+02
-1 2704     2.439800e+02 -1.507900e+02
-12 2704     1.796600e+02 -5.075000e+01
-15 2704     1.632400e+02 -3.871002e+01
-0 2705     4.090400e+02 -8.463000e+01
-1 2705     5.582200e+02 -1.852300e+02
-6 2705     3.832400e+02 3.303998e+01
-7 2705     3.155500e+02 8.879001e+01
-10 2705     3.877000e+02 8.564001e+01
-12 2705     4.312100e+02 6.365002e+01
-15 2705     5.400601e+02 7.659998e+01
-0 2706     3.037400e+02 8.848001e+01
-1 2706     5.011700e+02 2.406000e+01
-7 2706     1.892800e+02 2.420400e+02
-10 2706     2.500500e+02 2.749800e+02
-15 2706     3.718700e+02 3.000100e+02
-0 2707     9.909998e+01 -1.340300e+02
-1 2707     2.146500e+02 -1.313700e+02
-10 2707     3.542999e+01 -3.599976e+00
-15 2707     1.168600e+02 -3.134998e+01
-0 2708     3.682200e+02 -5.900024e+00
-1 2708     5.436300e+02 -9.279999e+01
-6 2708     3.073900e+02 1.021300e+02
-7 2708     2.618000e+02 1.569300e+02
-10 2708     3.331100e+02 1.728000e+02
-12 2708     3.582600e+02 1.351700e+02
-15 2708     4.742900e+02 1.791700e+02
-0 2709     3.263600e+02 -2.001001e+01
-1 2709     4.884301e+02 -9.178998e+01
-7 2709     2.306000e+02 1.414100e+02
-10 2709     2.868900e+02 1.511600e+02
-15 2709     4.163900e+02 1.541500e+02
-0 2710     -1.288300e+02 -1.107000e+02
-1 2710     9.919983e+00 -4.131000e+01
-7 2710     -1.992000e+02 -2.296997e+01
-10 2710     -2.310500e+02 -9.699707e-01
-13 2710     2.642600e+02 -3.310100e+02
-15 2710     -1.924500e+02 -3.064001e+01
-0 2711     2.479399e+02 1.572200e+02
-1 2711     4.680400e+02 1.102400e+02
-10 2711     1.783500e+02 3.504400e+02
-15 2711     2.867600e+02 3.873500e+02
-0 2712     -1.861400e+02 -4.601000e+02
-1 2712     -1.406900e+02 -3.543300e+02
-6 2712     -1.050500e+02 -6.211700e+02
-15 2712     -2.211600e+02 -5.106801e+02
-0 2713     3.584800e+02 -4.425000e+01
-1 2713     5.168700e+02 -1.275000e+02
-7 2713     2.626100e+02 1.209700e+02
-10 2713     3.258300e+02 1.269600e+02
-15 2713     4.646500e+02 1.251400e+02
-0 2714     3.128300e+02 9.304001e+01
-1 2714     5.143300e+02 2.565997e+01
-10 2714     2.598700e+02 2.819500e+02
-15 2714     3.847900e+02 3.078400e+02
-0 2715     3.241300e+02 6.745001e+01
-1 2715     5.172500e+02 -3.669983e+00
-10 2715     2.752500e+02 2.535700e+02
-15 2715     4.032500e+02 2.741600e+02
-0 2716     1.792300e+02 -1.135999e+01
-1 2716     3.308400e+02 -3.534998e+01
-2 2716     3.358700e+02 5.773999e+01
-15 2716     2.099000e+02 1.457300e+02
-0 2717     2.874000e+02 9.850000e+01
-1 2717     4.865000e+02 4.062000e+01
-10 2717     2.301300e+02 2.834200e+02
-15 2717     3.476500e+02 3.115200e+02
-0 2718     3.382600e+02 8.595001e+01
-1 2718     5.518900e+02 7.710022e+00
-10 2718     2.896300e+02 2.766000e+02
-15 2718     4.236600e+02 3.009900e+02
-0 2719     1.613101e+02 -1.474200e+02
-1 2719     2.708199e+02 -1.639800e+02
-7 2719     1.021100e+02 -4.010010e+00
-10 2719     1.085200e+02 -1.229999e+01
-15 2719     2.030400e+02 -4.114001e+01
-0 2720     2.466500e+02 -2.096700e+02
-1 2720     3.364100e+02 -2.532800e+02
-2 2720     4.754500e+02 -1.253000e+02
-6 2720     3.069900e+02 -1.309500e+02
-8 2720     4.191600e+02 -1.553000e+02
-10 2720     2.130000e+02 -7.545001e+01
-15 2720     3.278900e+02 -1.149300e+02
-0 2721     4.151801e+02 -4.896997e+01
-1 2721     5.800500e+02 -1.521100e+02
-7 2721     3.124800e+02 1.219100e+02
-13 2721     7.123400e+02 -2.406200e+02
-15 2721     5.452600e+02 1.262200e+02
-0 2722     -7.676001e+01 -1.396600e+02
-1 2722     4.795001e+01 -8.377002e+01
-6 2722     -7.506000e+01 -1.715699e+02
-7 2722     -1.389400e+02 -4.123999e+01
-10 2722     -1.668500e+02 -2.878003e+01
-12 2722     -7.271002e+01 -1.171700e+02
-13 2722     3.191600e+02 -3.515900e+02
-15 2722     -1.192500e+02 -6.240002e+01
-0 2723     -3.369995e+00 -1.055800e+02
-1 2723     1.261000e+02 -7.271002e+01
-6 2723     -6.500244e-01 -1.035300e+02
-7 2723     -7.007001e+01 7.150024e+00
-10 2723     -8.609998e+01 1.835999e+01
-12 2723     6.349976e+00 -5.175000e+01
-15 2723     -2.506000e+01 -6.609985e+00
-0 2724     3.875800e+02 -6.865997e+01
-1 2724     5.420900e+02 -1.622400e+02
-7 2724     2.919301e+02 1.004300e+02
-10 2724     3.619200e+02 1.023400e+02
-15 2724     5.088300e+02 9.591000e+01
-0 2725     1.251100e+02 -2.094000e+02
-1 2725     2.151600e+02 -2.130900e+02
-7 2725     7.847998e+01 -7.101001e+01
-10 2725     7.348999e+01 -8.789001e+01
-13 2725     5.145100e+02 -3.934100e+02
-15 2725     1.619700e+02 -1.297500e+02
-0 2726     -3.145900e+02 3.028998e+01
-1 2726     -8.106000e+01 1.366500e+02
-2 2726     -4.359100e+02 -2.260000e+02
-7 2726     -4.520500e+02 5.953998e+01
-10 2726     -4.651200e+02 1.444800e+02
-13 2726     -4.059998e+00 -2.470700e+02
-0 2727     3.196000e+02 3.231000e+01
-1 2727     4.977500e+02 -3.682001e+01
-15 2727     4.005100e+02 2.253500e+02
-0 2728     3.281600e+02 3.239990e+00
-1 2728     4.978500e+02 -6.882001e+01
-15 2728     4.161600e+02 1.854900e+02
-0 2729     4.207100e+02 -1.184800e+02
-1 2729     5.566000e+02 -2.229700e+02
-2 2729     5.518800e+02 -4.103003e+01
-6 2729     4.151000e+02 5.000000e+00
-7 2729     3.349200e+02 5.998999e+01
-8 2729     4.936400e+02 -7.934003e+01
-10 2729     4.043000e+02 4.826001e+01
-12 2729     4.604200e+02 3.510999e+01
-15 2729     5.598900e+02 3.190997e+01
-0 2730     2.887000e+02 -2.012000e+02
-1 2730     3.830800e+02 -2.594100e+02
-6 2730     3.427200e+02 -1.100900e+02
-10 2730     2.607700e+02 -6.129999e+01
-13 2730     6.528800e+02 -3.751200e+02
-15 2730     3.854100e+02 -9.820001e+01
-0 2731     9.358002e+01 -2.114100e+02
-1 2731     1.834600e+02 -2.045500e+02
-10 2731     3.694000e+01 -9.392999e+01
-15 2731     1.189800e+02 -1.371700e+02
-0 2732     -1.465800e+02 -1.123800e+02
-1 2732     -7.979980e+00 -3.745001e+01
-6 2732     -1.729100e+02 -1.689200e+02
-7 2732     -2.170900e+02 -2.772998e+01
-8 2732     3.726001e+01 -1.671500e+02
-10 2732     -2.511000e+02 -4.780029e+00
-12 2732     -1.701500e+02 -1.098400e+02
-15 2732     -2.168700e+02 -3.523999e+01
-0 2733     2.527300e+02 8.066000e+01
-1 2733     4.400000e+02 3.291998e+01
-7 2733     1.470100e+02 2.299100e+02
-10 2733     1.918300e+02 2.600400e+02
-15 2733     3.015900e+02 2.829500e+02
-0 2734     3.031700e+02 5.785999e+01
-1 2734     4.879600e+02 -5.969971e+00
-7 2734     1.960300e+02 2.135200e+02
-10 2734     2.524000e+02 2.395400e+02
-15 2734     3.744200e+02 2.579500e+02
-0 2735     2.899600e+02 7.871997e+01
-1 2735     4.811899e+02 1.900000e+01
-7 2735     1.800000e+02 2.323700e+02
-10 2735     2.351300e+02 2.630000e+02
-15 2735     3.536100e+02 2.851000e+02
-0 2736     2.280400e+02 -2.018300e+02
-1 2736     3.212900e+02 -2.396400e+02
-7 2736     1.754600e+02 -4.663000e+01
-10 2736     1.911600e+02 -6.815997e+01
-13 2736     6.000900e+02 -3.797600e+02
-15 2736     3.017300e+02 -1.063100e+02
-0 2737     3.580200e+02 -4.823999e+01
-1 2737     5.145900e+02 -1.311000e+02
-6 2737     3.255400e+02 6.021997e+01
-7 2737     2.633600e+02 1.176000e+02
-10 2737     3.258000e+02 1.226400e+02
-12 2737     3.703700e+02 9.395001e+01
-13 2737     6.713900e+02 -2.411100e+02
-15 2737     4.644200e+02 1.201500e+02
-0 2738     2.527300e+02 8.066000e+01
-1 2738     4.400000e+02 3.291998e+01
-10 2738     1.918300e+02 2.600400e+02
-15 2738     3.015900e+02 2.829500e+02
-0 2739     4.074200e+02 -6.912000e+01
-1 2739     5.630500e+02 -1.694100e+02
-15 2739     5.364200e+02 9.792001e+01
-0 2740     3.458000e+02 -1.628600e+02
-1 2740     4.582400e+02 -2.412700e+02
-3 2740     4.170200e+02 -3.754000e+02
-6 2740     3.728900e+02 -5.709003e+01
-7 2740     2.769000e+02 8.289978e+00
-8 2740     4.658700e+02 -1.129900e+02
-10 2740     3.224000e+02 -1.066998e+01
-13 2740     6.898900e+02 -3.390200e+02
-15 2740     4.601500e+02 -3.829999e+01
-0 2741     1.208200e+02 -2.616100e+02
-1 2741     1.956000e+02 -2.626300e+02
-4 2741     -4.918800e+02 -5.093300e+02
-10 2741     7.398999e+01 -1.477400e+02
-15 2741     1.633000e+02 -2.012000e+02
-0 2742     1.883199e+02 -2.438000e+02
-1 2742     2.662700e+02 -2.674100e+02
-4 2742     -4.914900e+02 -5.701400e+02
-6 2742     2.653000e+02 -1.863101e+02
-7 2742     1.465699e+02 -9.369000e+01
-9 2742     2.663900e+02 -3.796002e+01
-12 2742     2.775800e+02 -1.498200e+02
-15 2742     2.526500e+02 -1.682800e+02
-0 2743     8.142999e+01 -6.187000e+01
-1 2743     2.188300e+02 -5.551001e+01
-2 2743     2.609301e+02 -1.296002e+01
-7 2743     8.679993e+00 6.657001e+01
-10 2743     7.299988e+00 7.769000e+01
-15 2743     8.320001e+01 6.419000e+01
-0 2744     -4.669983e+00 -7.821997e+01
-1 2744     1.350000e+02 -4.645001e+01
-4 2744     -3.272800e+02 -4.050000e+02
-8 2744     1.620000e+02 -1.022900e+02
-15 2744     -3.028998e+01 3.023999e+01
-0 2745     3.062900e+02 -2.084003e+01
-1 2745     4.642900e+02 -8.581000e+01
-15 2745     3.880500e+02 1.505000e+02
-0 2746     2.282200e+02 -9.400024e+00
-1 2746     3.826000e+02 -4.858002e+01
-3 2746     2.690500e+02 -2.440500e+02
-7 2746     1.417900e+02 1.415600e+02
-10 2746     1.717500e+02 1.536500e+02
-15 2746     2.774301e+02 1.556700e+02
-0 2747     5.396801e+02 2.170600e+02
-1 2747     8.345100e+02 7.726001e+01
-7 2747     3.619500e+02 3.782200e+02
-10 2747     5.151600e+02 4.529100e+02
-15 2747     6.976000e+02 5.133500e+02
-0 2748     7.969000e+01 -1.247000e+02
-1 2748     1.997100e+02 -1.167300e+02
-7 2748     1.635999e+01 3.429993e+00
-10 2748     1.109003e+01 5.530029e+00
-15 2748     8.921002e+01 -2.108002e+01
-0 2749     3.598300e+02 -1.532400e+02
-1 2749     4.767100e+02 -2.363900e+02
-7 2749     2.874100e+02 1.940997e+01
-10 2749     3.379399e+02 1.030029e+00
-15 2749     4.785601e+02 -2.317999e+01
-0 2750     -6.334600e+02 -3.581300e+02
-1 2750     -4.965000e+02 -1.259200e+02
-4 2750     -4.288000e+02 6.032001e+01
-7 2750     -6.964900e+02 -3.870900e+02
-15 2750     -8.438100e+02 -4.383000e+02
-0 2751     4.025000e+02 -2.277200e+02
-1 2751     5.130300e+02 -3.297900e+02
-10 2751     3.940300e+02 -7.885999e+01
-15 2751     5.509700e+02 -1.199000e+02
-0 2752     3.550100e+02 -1.912200e+02
-1 2752     4.555900e+02 -2.720900e+02
-15 2752     4.757000e+02 -7.578998e+01
-0 2753     3.341998e+01 -1.218400e+02
-1 2753     1.551200e+02 -9.928003e+01
-2 2753     2.327700e+02 -9.133002e+01
-3 2753     1.463600e+02 -3.947800e+02
-6 2753     5.016998e+01 -1.071100e+02
-7 2753     -2.944000e+01 -1.750000e+00
-13 2753     4.189500e+02 -3.247000e+02
-15 2753     2.635999e+01 -2.346997e+01
-0 2754     5.660000e+02 6.378998e+01
-1 2754     8.137300e+02 -9.232001e+01
-6 2754     3.954800e+02 1.926700e+02
-10 2754     5.578199e+02 2.754600e+02
-12 2754     4.810200e+02 2.030400e+02
-15 2754     7.520200e+02 3.024500e+02
-0 2755     2.454800e+02 1.245400e+02
-1 2755     4.497200e+02 7.894000e+01
-15 2755     2.869000e+02 3.417000e+02
-0 2756     3.511700e+02 -1.722200e+02
-1 2756     4.598300e+02 -2.520000e+02
-6 2756     3.836300e+02 -6.347998e+01
-7 2756     2.846100e+02 1.280029e+00
-15 2756     4.682700e+02 -4.983002e+01
-0 2757     4.090900e+02 -7.369995e+00
-1 2757     5.916300e+02 -1.083600e+02
-6 2757     3.348000e+02 1.049300e+02
-10 2757     3.812300e+02 1.754800e+02
-15 2757     5.329000e+02 1.828800e+02
-0 2758     5.540002e+01 -1.153100e+02
-1 2758     1.793700e+02 -9.970001e+01
-7 2758     -9.619995e+00 7.869995e+00
-15 2758     5.582001e+01 -1.181000e+01
-0 2759     3.638101e+02 -4.284003e+01
-1 2759     5.233000e+02 -1.278200e+02
-15 2759     4.718199e+02 1.281600e+02
-0 2760     3.873000e+02 5.972998e+01
-1 2760     5.978000e+02 -3.465002e+01
-7 2760     2.589500e+02 2.157900e+02
-15 2760     4.959800e+02 2.717900e+02
-0 2761     1.913500e+02 -2.039000e+02
-1 2761     2.837400e+02 -2.292300e+02
-7 2761     1.408000e+02 -5.462000e+01
-10 2761     1.488100e+02 -7.428998e+01
-13 2761     5.696000e+02 -3.843000e+02
-15 2761     2.512700e+02 -1.140700e+02
-0 2762     3.583199e+02 -2.444900e+02
-1 2762     4.551400e+02 -3.295500e+02
-10 2762     3.447500e+02 -1.031800e+02
-15 2762     4.905100e+02 -1.481400e+02
-0 2763     1.805900e+02 -1.428900e+02
-1 2763     2.919500e+02 -1.659600e+02
-13 2763     5.508400e+02 -3.307500e+02
-15 2763     2.288800e+02 -3.275000e+01
-0 2764     -7.415002e+01 -1.522900e+02
-1 2764     4.527002e+01 -9.621002e+01
-4 2764     -3.693800e+02 -3.514900e+02
-10 2764     -1.629100e+02 -4.321997e+01
-15 2764     -1.144900e+02 -7.884998e+01
-0 2765     -4.452900e+02 3.102002e+01
-1 2765     -2.000500e+02 1.721600e+02
-15 2765     -6.330600e+02 1.168400e+02
-0 2766     3.249100e+02 4.003003e+01
-1 2766     5.068900e+02 -3.090002e+01
-15 2766     4.068800e+02 2.364300e+02
-0 2767     3.048000e+02 -2.429900e+02
-1 2767     3.916700e+02 -3.074000e+02
-6 2767     3.580800e+02 -1.596000e+02
-7 2767     2.505601e+02 -7.721002e+01
-10 2767     2.835601e+02 -1.066200e+02
-12 2767     3.873500e+02 -1.289100e+02
-15 2767     4.140900e+02 -1.526500e+02
-0 2768     2.324500e+02 1.895001e+01
-1 2768     3.965000e+02 -2.171002e+01
-10 2768     1.738600e+02 1.870000e+02
-15 2768     2.798500e+02 1.950100e+02
-0 2769     2.125100e+02 -7.659998e+01
-1 2769     3.455300e+02 -1.104800e+02
-2 2769     3.846500e+02 -6.469971e+00
-6 2769     2.199000e+02 7.199707e-01
-7 2769     1.380400e+02 7.292999e+01
-8 2769     3.472100e+02 -5.389001e+01
-15 2769     2.641100e+02 6.195001e+01
-0 2770     -1.105400e+02 5.733002e+01
-1 2770     8.827002e+01 1.125000e+02
-7 2770     -2.208400e+02 1.416500e+02
-10 2770     -2.283200e+02 1.965400e+02
-13 2770     2.392000e+02 -1.901100e+02
-15 2770     -1.881700e+02 1.995300e+02
-0 2771     -1.266300e+02 2.507000e+02
-1 2771     1.770699e+02 2.946300e+02
-15 2771     -2.241500e+02 4.613100e+02
-0 2772     2.763101e+02 6.141998e+01
-1 2772     4.592600e+02 6.460022e+00
-10 2772     2.207300e+02 2.409500e+02
-15 2772     3.361700e+02 2.591700e+02
-0 2773     1.366300e+02 -2.665600e+02
-1 2773     2.108900e+02 -2.723000e+02
-6 2773     2.136200e+02 -2.332900e+02
-7 2773     9.810999e+01 -1.265700e+02
-12 2773     2.223900e+02 -1.949700e+02
-15 2773     1.859301e+02 -2.047700e+02
-0 2774     6.996997e+01 -2.185200e+02
-1 2774     1.574500e+02 -2.038500e+02
-6 2774     1.367000e+02 -1.970601e+02
-7 2774     2.728998e+01 -8.914001e+01
-10 2774     1.046997e+01 -1.042700e+02
-12 2774     1.384600e+02 -1.534300e+02
-15 2774     8.791998e+01 -1.494200e+02
-0 2775     5.954800e+02 -8.300171e-01
-1 2775     8.241801e+02 -1.696300e+02
-6 2775     4.493900e+02 1.317200e+02
-7 2775     4.467000e+02 1.774500e+02
-8 2775     4.977000e+02 -5.128000e+01
-15 2775     8.010601e+02 2.167700e+02
-0 2776     5.264600e+02 1.977002e+01
-1 2776     7.597600e+02 -1.260800e+02
-15 2776     7.022100e+02 2.357400e+02
-0 2777     2.754000e+02 -1.058400e+02
-1 2777     4.041600e+02 -1.606900e+02
-7 2777     2.003400e+02 5.223999e+01
-10 2777     2.360300e+02 4.727002e+01
-15 2777     3.554200e+02 3.015997e+01
-0 2778     4.169700e+02 -1.124500e+02
-1 2778     5.547500e+02 -2.156000e+02
-12 2778     4.541600e+02 3.996997e+01
-15 2778     5.540601e+02 3.966998e+01
-0 2779     2.843300e+02 4.190002e+00
-1 2779     4.472400e+02 -5.323999e+01
-7 2779     1.900699e+02 1.608900e+02
-12 2779     2.900601e+02 1.468000e+02
-13 2779     6.115699e+02 -1.974600e+02
-15 2779     3.534200e+02 1.817100e+02
-0 2780     5.396801e+02 2.170600e+02
-1 2780     8.345100e+02 7.726001e+01
-7 2780     3.619500e+02 3.782200e+02
-15 2780     6.976000e+02 5.133500e+02
-0 2781     3.409100e+02 -7.708002e+01
-1 2781     4.839800e+02 -1.536400e+02
-10 2781     3.084399e+02 8.746997e+01
-15 2781     4.431000e+02 7.844000e+01
-0 2782     6.451400e+02 -3.159973e+00
-1 2782     8.759100e+02 -1.885400e+02
-2 2782     5.920699e+02 -3.450012e+00
-15 2782     8.711000e+02 2.208400e+02
-0 2783     -3.012400e+02 -4.570699e+02
-1 2783     -2.432800e+02 -3.144100e+02
-15 2783     -3.775200e+02 -5.226500e+02
-0 2784     3.152300e+02 1.040997e+01
-1 2784     4.852400e+02 -5.714001e+01
-7 2784     2.161700e+02 1.699000e+02
-10 2784     2.705200e+02 1.853700e+02
-15 2784     3.966801e+02 1.947500e+02
-0 2785     2.835200e+02 -2.377200e+02
-1 2785     3.678700e+02 -2.939300e+02
-10 2785     2.575601e+02 -1.036300e+02
-15 2785     3.830000e+02 -1.481400e+02
-0 2786     -5.935999e+01 -3.078003e+01
-1 2786     1.007100e+02 1.484998e+01
-10 2786     -1.588600e+02 9.889001e+01
-15 2786     -1.095400e+02 8.692999e+01
-0 2787     3.228000e+02 -3.114001e+01
-1 2787     4.803400e+02 -1.016500e+02
-7 2787     2.295800e+02 1.302400e+02
-10 2787     2.832000e+02 1.384000e+02
-15 2787     4.124700e+02 1.386500e+02
-0 2788     2.742200e+02 1.032300e+02
-1 2788     4.731899e+02 4.859998e+01
-7 2788     1.603700e+02 2.535300e+02
-10 2788     2.138300e+02 2.895400e+02
-13 2788     5.819000e+02 -1.165600e+02
-15 2788     3.286000e+02 3.165600e+02
-0 2789     4.100500e+02 -5.969000e+01
-1 2789     5.697900e+02 -1.607000e+02
-7 2789     3.104600e+02 1.113900e+02
-10 2789     3.866300e+02 1.144400e+02
-13 2789     7.112900e+02 -2.498100e+02
-15 2789     5.389301e+02 1.107100e+02
-0 2790     2.742200e+02 1.032300e+02
-1 2790     4.731899e+02 4.859998e+01
-7 2790     1.603700e+02 2.535300e+02
-10 2790     2.138300e+02 2.895400e+02
-13 2790     5.819000e+02 -1.165600e+02
-15 2790     3.286000e+02 3.165600e+02
-0 2791     -2.389400e+02 -4.072400e+02
-1 2791     -1.692600e+02 -2.890200e+02
-6 2791     -2.054500e+02 -5.901801e+02
-7 2791     -2.654600e+02 -3.511200e+02
-15 2791     -2.983700e+02 -4.463500e+02
-0 2792     -1.491000e+02 8.257999e+01
-1 2792     6.597998e+01 1.458600e+02
-6 2792     -3.267700e+02 2.659003e+01
-7 2792     -2.708200e+02 1.563100e+02
-10 2792     -2.759000e+02 2.226800e+02
-12 2792     -2.744500e+02 8.257001e+01
-15 2792     -2.422300e+02 2.284800e+02
-0 2793     -1.333600e+02 2.611400e+02
-1 2793     1.743400e+02 3.063800e+02
-2 2793     -3.696100e+02 -4.539978e+00
-7 2793     -3.214200e+02 3.109300e+02
-11 2793     2.816998e+01 -4.821400e+02
-15 2793     -2.349200e+02 4.749300e+02
-0 2794     2.300000e+01 -1.183400e+02
-1 2794     1.465300e+02 -9.275000e+01
-6 2794     3.665002e+01 -1.072100e+02
-7 2794     -4.042999e+01 -4.799805e-01
-10 2794     -5.459998e+01 6.590027e+00
-15 2794     1.220001e+01 -2.031000e+01
-0 2795     2.836801e+02 4.490997e+01
-1 2795     4.612400e+02 -1.216998e+01
-7 2795     1.816801e+02 2.002900e+02
-10 2795     2.307300e+02 2.222600e+02
-13 2795     6.027100e+02 -1.629600e+02
-15 2795     3.483199e+02 2.374100e+02
-0 2796     2.017500e+02 -2.729980e+00
-1 2796     3.573400e+02 -3.346997e+01
-10 2796     1.403900e+02 1.585800e+02
-15 2796     2.387300e+02 1.604900e+02
-0 2797     1.862100e+02 -3.429993e+00
-1 2797     3.409399e+02 -2.966998e+01
-15 2797     2.179900e+02 1.578400e+02
-0 2798     2.643101e+02 4.903003e+01
-1 2798     4.415500e+02 -2.049988e+00
-10 2798     2.081100e+02 2.250900e+02
-15 2798     3.207400e+02 2.406600e+02
-0 2799     1.407700e+02 -2.080800e+02
-1 2799     2.310000e+02 -2.168800e+02
-15 2799     1.829200e+02 -1.262000e+02
-0 2800     3.909100e+02 -2.004000e+02
-1 2800     5.074200e+02 -2.976700e+02
-10 2800     3.782700e+02 -4.882001e+01
-15 2800     5.309900e+02 -8.415997e+01
-0 2801     4.069600e+02 -4.923999e+01
-1 2801     5.710400e+02 -1.493400e+02
-6 2801     3.596600e+02 6.557001e+01
-15 2801     5.341600e+02 1.249500e+02
-0 2802     3.269100e+02 -1.510999e+01
-1 2802     4.903700e+02 -8.723999e+01
-10 2802     2.863900e+02 1.574800e+02
-15 2802     4.162700e+02 1.606600e+02
-0 2803     -4.474400e+02 4.096997e+01
-1 2803     -1.982000e+02 1.817200e+02
-10 2803     -6.251000e+02 1.427400e+02
-15 2803     -6.373800e+02 1.299500e+02
-0 2804     8.940002e+00 -1.093900e+02
-1 2804     1.365000e+02 -8.015002e+01
-6 2804     1.588000e+01 -1.030600e+02
-10 2804     -7.153998e+01 1.484998e+01
-12 2804     2.295001e+01 -5.185999e+01
-15 2804     -7.919983e+00 -1.014001e+01
-0 2805     4.030800e+02 -4.167999e+01
-1 2805     5.701000e+02 -1.407700e+02
-6 2805     3.509200e+02 7.184998e+01
-7 2805     2.995699e+02 1.268600e+02
-15 2805     5.278900e+02 1.343000e+02
-0 2806     1.531700e+02 -2.212300e+02
-1 2806     2.378300e+02 -2.332600e+02
-7 2806     1.084700e+02 -7.729999e+01
-10 2806     1.070600e+02 -9.829999e+01
-15 2806     2.015300e+02 -1.421000e+02
-0 2807     3.512200e+02 -1.375400e+02
-1 2807     4.742400e+02 -2.180000e+02
-2 2807     5.107200e+02 -6.154999e+01
-7 2807     2.755500e+02 3.246997e+01
-12 2807     4.001700e+02 1.150024e+00
-13 2807     6.861899e+02 -3.174600e+02
-15 2807     4.648000e+02 -3.059998e+00
-0 2808     2.452700e+02 -2.690002e+00
-1 2808     4.029800e+02 -4.733002e+01
-7 2808     1.558600e+02 1.502300e+02
-10 2808     1.905400e+02 1.633200e+02
-15 2808     3.001400e+02 1.671000e+02
-0 2809     2.399900e+02 -4.241998e+01
-1 2809     3.846100e+02 -8.534003e+01
-6 2809     2.342700e+02 4.585999e+01
-7 2809     1.578700e+02 1.103800e+02
-10 2809     1.891000e+02 1.168800e+02
-15 2809     2.976400e+02 1.119600e+02
-0 2810     4.297200e+02 -1.937000e+01
-1 2810     6.089000e+02 -1.271800e+02
-10 2810     4.057900e+02 1.635200e+02
-15 2810     5.629200e+02 1.690500e+02
-0 2811     3.295100e+02 -2.144000e+01
-1 2811     4.911801e+02 -9.439001e+01
-10 2811     2.902100e+02 1.509700e+02
-15 2811     4.207700e+02 1.527500e+02
-0 2812     4.149500e+02 -1.103800e+02
-1 2812     5.534200e+02 -2.127700e+02
-6 2812     4.048900e+02 1.113000e+01
-12 2812     4.507000e+02 4.151001e+01
-15 2812     5.510500e+02 4.233002e+01
-0 2813     9.415997e+01 7.465002e+01
-1 2813     2.745400e+02 7.496002e+01
-7 2813     -3.820007e+00 2.030600e+02
-10 2813     8.090027e+00 2.374000e+02
-13 2813     4.458800e+02 -1.504200e+02
-15 2813     8.301001e+01 2.520500e+02
-0 2814     2.424399e+02 -1.267700e+02
-1 2814     3.616801e+02 -1.704000e+02
-15 2814     3.121700e+02 -2.619995e+00
-0 2815     2.247600e+02 -3.867300e+02
-1 2815     2.680000e+02 -4.219200e+02
-6 2815     3.249100e+02 -3.530699e+02
-15 2815     3.238900e+02 -3.578800e+02
-0 2816     7.779999e+01 -1.347900e+02
-1 2816     1.932000e+02 -1.254300e+02
-10 2816     1.084003e+01 -6.950012e+00
-15 2816     8.794000e+01 -3.539001e+01
-0 2817     3.664001e+01 -2.053800e+02
-1 2817     1.303000e+02 -1.808200e+02
-7 2817     -9.030029e+00 -8.309998e+01
-15 2817     4.119000e+01 -1.360100e+02
-0 2818     1.095000e+02 5.719971e+00
-1 2818     2.666100e+02 2.890015e+00
-6 2818     9.056000e+01 6.209998e+01
-10 2818     3.306000e+01 1.589300e+02
-12 2818     1.079300e+02 1.135600e+02
-13 2818     4.715500e+02 -2.066600e+02
-15 2818     1.124300e+02 1.599600e+02
-0 2819     3.108600e+02 -2.003998e+01
-1 2819     4.700400e+02 -8.678003e+01
-6 2819     2.812200e+02 8.391998e+01
-7 2819     2.175300e+02 1.405500e+02
-10 2819     2.683800e+02 1.501400e+02
-15 2819     3.942000e+02 1.521900e+02
-0 2820     2.323000e+02 -1.290900e+02
-1 2820     3.501300e+02 -1.691700e+02
-7 2820     1.654200e+02 2.434003e+01
-10 2820     1.883600e+02 1.621997e+01
-15 2820     2.982800e+02 -6.770020e+00
-0 2821     1.756000e+01 -1.638700e+02
-1 2821     1.279200e+02 -1.354800e+02
-2 2821     2.303800e+02 -1.436900e+02
-6 2821     4.696002e+01 -1.617300e+02
-7 2821     -3.790002e+01 -4.725000e+01
-10 2821     -5.544000e+01 -4.696002e+01
-15 2821     1.121002e+01 -8.259003e+01
-0 2822     2.763101e+02 6.141998e+01
-1 2822     4.592600e+02 6.460022e+00
-10 2822     2.207300e+02 2.409500e+02
-15 2822     3.361700e+02 2.591700e+02
-0 2823     -1.170600e+02 7.690002e+01
-1 2823     8.976001e+01 1.326500e+02
-15 2823     -1.992900e+02 2.254100e+02
-0 2824     2.300000e+02 -1.312700e+02
-1 2824     3.464900e+02 -1.703000e+02
-7 2824     1.637700e+02 2.187000e+01
-12 2824     2.809600e+02 -1.451001e+01
-0 2825     2.427600e+02 2.486900e+02
-1 2825     5.484000e+02 1.913900e+02
-15 2825     2.833000e+02 5.112300e+02
-0 2826     5.758199e+02 1.525200e+02
-1 2826     8.518900e+02 -1.760010e+00
-10 2826     5.624100e+02 3.804400e+02
-13 2826     7.789399e+02 -6.669000e+01
-15 2826     7.554399e+02 4.281500e+02
-0 2827     5.758199e+02 1.525200e+02
-1 2827     8.518900e+02 -1.760010e+00
-2 2827     4.733700e+02 1.209600e+02
-3 2827     3.367800e+02 -1.935100e+02
-6 2827     3.851300e+02 2.970500e+02
-10 2827     5.624100e+02 3.804400e+02
-13 2827     7.789399e+02 -6.669000e+01
-15 2827     7.554399e+02 4.281500e+02
-0 2828     1.810300e+02 1.904200e+02
-1 2828     4.116500e+02 1.622200e+02
-15 2828     1.916200e+02 4.235300e+02
-0 2829     1.737900e+02 1.883000e+02
-1 2829     4.039399e+02 1.621700e+02
-10 2829     8.939001e+01 3.790200e+02
-13 2829     4.736300e+02 -5.632001e+01
-14 2829     6.740900e+02 -5.364800e+02
-15 2829     1.816000e+02 4.194500e+02
-0 2830     1.343300e+02 1.878700e+02
-1 2830     3.643700e+02 1.723700e+02
-15 2830     1.272800e+02 4.133300e+02
-0 2831     1.335800e+02 1.821900e+02
-1 2831     3.634399e+02 1.661000e+02
-7 2831     3.140015e+00 3.057400e+02
-10 2831     4.308002e+01 3.677000e+02
-0 2832     5.508500e+02 1.350900e+02
-1 2832     8.203500e+02 -1.273999e+01
-10 2832     5.343600e+02 3.567800e+02
-13 2832     7.549200e+02 -8.590997e+01
-15 2832     7.226400e+02 3.999700e+02
-0 2833     1.369700e+02 6.370001e+01
-1 2833     3.127000e+02 5.184003e+01
-2 2833     2.637200e+02 1.185300e+02
-5 2833     7.960800e+02 -5.954600e+02
-6 2833     9.409998e+01 1.327000e+02
-8 2833     2.496600e+02 5.038000e+01
-10 2833     5.873999e+01 2.289900e+02
-12 2833     1.175900e+02 1.837800e+02
-15 2833     1.425601e+02 2.429600e+02
-0 2834     6.019600e+02 -3.347998e+01
-1 2834     8.207700e+02 -2.061200e+02
-13 2834     8.281300e+02 -2.299300e+02
-15 2834     8.141000e+02 1.726600e+02
-0 2835     2.326600e+02 1.919983e+00
-1 2835     3.910000e+02 -3.889001e+01
-7 2835     1.437800e+02 1.530400e+02
-10 2835     1.759000e+02 1.675500e+02
-12 2835     2.405400e+02 1.372800e+02
-15 2835     2.820601e+02 1.717300e+02
-0 2836     1.842500e+02 -1.140002e+01
-1 2836     3.360400e+02 -3.702002e+01
-7 2836     1.008100e+02 1.335600e+02
-10 2836     1.209200e+02 1.467700e+02
-15 2836     2.166200e+02 1.469300e+02
-0 2837     -4.564600e+02 3.810999e+01
-1 2837     -2.078000e+02 1.815100e+02
-10 2837     -6.355600e+02 1.383700e+02
-15 2837     -6.495400e+02 1.247700e+02
-0 2838     2.028900e+02 -1.724600e+02
-1 2838     3.053700e+02 -2.018200e+02
-2 2838     4.176000e+02 -1.014300e+02
-3 2838     3.209000e+02 -3.995699e+02
-4 2838     -4.352700e+02 -5.788800e+02
-6 2838     2.469700e+02 -1.054200e+02
-13 2838     5.739100e+02 -3.552900e+02
-15 2838     2.633500e+02 -6.958002e+01
-0 2839     -6.966998e+01 -1.508100e+02
-1 2839     5.004999e+01 -9.633002e+01
-7 2839     -1.291900e+02 -5.046997e+01
-12 2839     -5.859998e+01 -1.264000e+02
-15 2839     -1.084100e+02 -7.663000e+01
-0 2840     5.763000e+02 -3.193500e+02
-1 2840     6.732500e+02 -4.870601e+02
-7 2840     4.978300e+02 -1.162300e+02
-12 2840     6.544500e+02 -1.740900e+02
-15 2840     8.078000e+02 -2.239900e+02
-0 2841     6.064500e+02 -3.915200e+02
-1 2841     6.761100e+02 -5.718400e+02
-10 2841     6.454399e+02 -2.458100e+02
-15 2841     8.576600e+02 -3.192500e+02
-0 2842     1.656801e+02 1.903400e+02
-1 2842     3.967200e+02 1.660800e+02
-10 2842     7.956000e+01 3.805100e+02
-14 2842     6.646700e+02 -5.348900e+02
-15 2842     1.700900e+02 4.211000e+02
-0 2843     1.985699e+02 1.781900e+02
-1 2843     4.249800e+02 1.450600e+02
-10 2843     1.189600e+02 3.698000e+02
-15 2843     2.165601e+02 4.089500e+02
-0 2844     1.029900e+02 1.754600e+02
-1 2844     3.260500e+02 1.685600e+02
-15 2844     8.571002e+01 3.921500e+02
-0 2845     7.731000e+01 1.769300e+02
-1 2845     3.018600e+02 1.782500e+02
-10 2845     -2.164001e+01 3.562200e+02
-15 2845     5.001001e+01 3.899900e+02
-0 2846     3.373500e+02 1.127800e+02
-1 2846     5.672600e+02 3.370001e+01
-7 2846     1.982200e+02 2.564300e+02
-10 2846     2.867100e+02 3.077200e+02
-15 2846     4.217000e+02 3.376600e+02
-0 2847     3.900900e+02 5.471997e+01
-1 2847     5.988900e+02 -4.060999e+01
-7 2847     2.630100e+02 2.117700e+02
-10 2847     3.536500e+02 2.458000e+02
-15 2847     5.008000e+02 2.653900e+02
-0 2848     2.176300e+02 6.246997e+01
-1 2848     3.958900e+02 2.590997e+01
-6 2848     1.716400e+02 1.520300e+02
-7 2848     1.178400e+02 2.095500e+02
-10 2848     1.522400e+02 2.363900e+02
-12 2848     2.026600e+02 1.989500e+02
-15 2848     2.539301e+02 2.526400e+02
-0 2849     6.187000e+02 1.388000e+01
-1 2849     8.530500e+02 -1.619100e+02
-2 2849     5.583101e+02 -1.099854e-01
-6 2849     4.747300e+02 1.590700e+02
-7 2849     4.677600e+02 1.962900e+02
-13 2849     8.397100e+02 -1.839400e+02
-15 2849     8.317800e+02 2.407100e+02
-0 2850     5.246300e+02 2.297998e+01
-1 2850     7.589700e+02 -1.222900e+02
-7 2850     3.727100e+02 1.860700e+02
-10 2850     5.130200e+02 2.236200e+02
-13 2850     7.404000e+02 -1.896700e+02
-15 2850     6.992900e+02 2.396100e+02
-0 2851     -2.608700e+02 5.846997e+01
-1 2851     -2.082001e+01 1.482600e+02
-2 2851     -3.879400e+02 -1.891100e+02
-7 2851     -4.027300e+02 9.620999e+01
-15 2851     -3.835200e+02 1.795000e+02
-0 2852     6.055900e+02 -4.496002e+01
-1 2852     8.214399e+02 -2.193300e+02
-7 2852     4.624399e+02 1.367300e+02
-10 2852     6.133400e+02 1.531600e+02
-12 2852     5.558600e+02 9.679999e+01
-15 2852     8.207200e+02 1.573600e+02
-0 2853     2.531500e+02 -1.329100e+02
-1 2853     3.700500e+02 -1.796400e+02
-7 2853     1.863000e+02 2.423999e+01
-10 2853     2.125699e+02 1.377002e+01
-15 2853     3.275800e+02 -9.369995e+00
-0 2854     -1.095001e+01 -1.688600e+02
-1 2854     9.877002e+01 -1.316500e+02
-7 2854     -6.571002e+01 -5.722998e+01
-10 2854     -8.809998e+01 -5.565997e+01
-15 2854     -2.701001e+01 -9.317999e+01
-0 2855     6.162000e+02 -2.603200e+02
-1 2855     7.431200e+02 -4.428600e+02
-12 2855     6.641000e+02 -1.060900e+02
-15 2855     8.571200e+02 -1.379300e+02
-0 2856     5.473600e+02 -4.178100e+02
-1 2856     5.999800e+02 -5.744399e+02
-15 2856     7.763400e+02 -3.619500e+02
-0 2857     -2.508100e+02 -4.110100e+02
-1 2857     -1.816700e+02 -2.889500e+02
-6 2857     -2.170800e+02 -5.999600e+02
-7 2857     -2.768900e+02 -3.575300e+02
-15 2857     -3.144300e+02 -4.536100e+02
-0 2858     3.946002e+01 1.352200e+02
-1 2858     2.447200e+02 1.487100e+02
-15 2858     2.080017e+00 3.273400e+02
-0 2859     6.135000e+02 -3.504999e+01
-1 2859     8.324200e+02 -2.119500e+02
-7 2859     4.693101e+02 1.479000e+02
-12 2859     5.622900e+02 1.112700e+02
-15 2859     8.306600e+02 1.716900e+02
-0 2860     -2.628900e+02 -4.097800e+02
-1 2860     -1.918600e+02 -2.840300e+02
-15 2860     -3.302100e+02 -4.537100e+02
-0 2861     -1.534900e+02 1.997300e+02
-1 2861     1.329200e+02 2.526900e+02
-15 2861     -2.547500e+02 3.872000e+02
-0 2862     6.373600e+02 -1.287300e+02
-1 2862     8.233700e+02 -3.170300e+02
-7 2862     5.082500e+02 6.483002e+01
-10 2862     6.570000e+02 5.962000e+01
-15 2862     8.744000e+02 4.553003e+01
-0 2863     5.944100e+02 -2.658500e+02
-1 2863     7.159000e+02 -4.402500e+02
-7 2863     5.015300e+02 -6.519000e+01
-12 2863     6.462700e+02 -1.177000e+02
-15 2863     8.271200e+02 -1.483300e+02
-0 2864     5.715100e+02 3.802002e+01
-1 2864     8.114600e+02 -1.211100e+02
-7 2864     4.175500e+02 2.106000e+02
-10 2864     5.654000e+02 2.458400e+02
-13 2864     7.877500e+02 -1.692700e+02
-15 2864     7.627000e+02 2.674100e+02
-0 2865     -4.792999e+01 6.363000e+01
-1 2865     1.404500e+02 1.022600e+02
-3 2865     -3.948999e+01 -2.627000e+02
-5 2865     5.609500e+02 -6.016400e+02
-7 2865     -1.496200e+02 1.645100e+02
-10 2865     -1.560700e+02 2.102700e+02
-15 2865     -1.069700e+02 2.171200e+02
-0 2866     1.300000e+01 3.478003e+01
-1 2866     1.845500e+02 5.928003e+01
-2 2866     1.439600e+02 5.769000e+01
-7 2866     -7.871002e+01 1.499500e+02
-10 2866     -8.209998e+01 1.832200e+02
-15 2866     -2.184003e+01 1.865700e+02
-0 2867     1.836700e+02 -3.548999e+01
-1 2867     3.284500e+02 -6.073999e+01
-2 2867     3.482600e+02 3.726001e+01
-3 2867     2.466100e+02 -2.688600e+02
-4 2867     -3.240800e+02 -5.615400e+02
-10 2867     1.229800e+02 1.190400e+02
-13 2867     5.403800e+02 -2.346900e+02
-0 2868     8.409998e+01 1.745800e+02
-1 2868     3.073900e+02 1.738100e+02
-10 2868     -1.363000e+01 3.536900e+02
-14 2868     5.822100e+02 -5.562500e+02
-15 2868     5.882001e+01 3.876300e+02
-0 2869     2.009900e+02 -9.335999e+01
-1 2869     3.293000e+02 -1.242100e+02
-3 2869     2.796200e+02 -3.293000e+02
-7 2869     1.294700e+02 5.453998e+01
-10 2869     1.484000e+02 5.383002e+01
-13 2869     5.592500e+02 -2.866600e+02
-15 2869     2.503400e+02 3.747998e+01
-0 2870     3.081000e+02 -1.240100e+02
-1 2870     4.314100e+02 -1.888200e+02
-7 2870     2.349000e+02 4.037000e+01
-10 2870     2.751700e+02 3.079999e+01
-15 2870     4.027800e+02 9.320007e+00
-0 2871     -2.086300e+02 -4.358500e+02
-1 2871     -1.524900e+02 -3.247500e+02
-7 2871     -2.269400e+02 -3.725800e+02
-10 2871     -2.866300e+02 -3.846500e+02
-15 2871     -2.542400e+02 -4.810000e+02
-0 2872     -3.798999e+01 -2.210022e+00
-1 2872     1.266600e+02 3.728998e+01
-3 2872     6.440002e+00 -3.142900e+02
-7 2872     -1.260900e+02 1.020300e+02
-13 2872     3.333300e+02 -2.283800e+02
-15 2872     -8.495001e+01 1.288200e+02
-0 2873     2.596400e+02 -2.616998e+01
-1 2873     4.130699e+02 -8.042999e+01
-7 2873     1.750800e+02 1.287600e+02
-10 2873     2.098400e+02 1.384100e+02
-13 2873     5.979200e+02 -2.227200e+02
-15 2873     3.238199e+02 1.361700e+02
-0 2874     -4.356100e+02 1.697998e+01
-1 2874     -1.963300e+02 1.567000e+02
-10 2874     -6.077000e+02 1.160600e+02
-15 2874     -6.180400e+02 9.914999e+01
-0 2875     -5.258800e+02 3.457000e+02
-1 2875     -1.810700e+02 4.859100e+02
-8 2875     -5.931200e+02 3.528000e+01
-15 2875     -7.961700e+02 5.416100e+02
-0 2876     -4.600400e+02 3.536600e+02
-1 2876     -1.169000e+02 4.773500e+02
-10 2876     -6.862300e+02 5.192000e+02
-11 2876     -2.629700e+02 -3.936100e+02
-15 2876     -7.051400e+02 5.614600e+02
-0 2877     -3.999800e+02 -8.962000e+01
-1 2877     -2.014600e+02 4.912000e+01
-7 2877     -5.124300e+02 -7.262000e+01
-10 2877     -5.513400e+02 -5.229980e+00
-12 2877     -5.668400e+02 -2.272900e+02
-13 2877     -5.263000e+01 -3.556400e+02
-15 2877     -5.551900e+02 -4.020001e+01
-0 2878     -2.477200e+02 7.371997e+01
-1 2878     -2.859985e+00 1.588000e+02
-7 2878     -3.934100e+02 1.133300e+02
-10 2878     -3.904900e+02 2.025000e+02
-15 2878     -3.673700e+02 2.019100e+02
-0 2879     6.159003e+01 -1.530000e+02
-1 2879     1.717100e+02 -1.377500e+02
-2 2879     2.784000e+02 -1.108400e+02
-7 2879     5.210022e+00 -2.695001e+01
-15 2879     6.832001e+01 -6.196002e+01
-0 2880     6.378700e+02 -8.973999e+01
-1 2880     8.408000e+02 -2.775400e+02
-3 2880     4.830699e+02 -4.026700e+02
-7 2880     5.007500e+02 1.002800e+02
-8 2880     5.579301e+02 -1.117100e+02
-10 2880     6.545200e+02 1.049100e+02
-13 2880     8.741200e+02 -2.766900e+02
-15 2880     8.713101e+02 9.964001e+01
-0 2881     1.128998e+01 -7.966998e+01
-1 2881     1.487200e+02 -5.217999e+01
-7 2881     -6.046997e+01 3.509003e+01
-10 2881     -7.229999e+01 4.982001e+01
-13 2881     3.911000e+02 -2.906300e+02
-15 2881     -7.909973e+00 3.028003e+01
-0 2882     7.919000e+01 -6.959998e+01
-1 2882     2.146300e+02 -6.209003e+01
-10 2882     6.349976e+00 6.839001e+01
-15 2882     8.159003e+01 5.357001e+01
-0 2883     5.857000e+02 1.492500e+02
-1 2883     8.611700e+02 -8.090027e+00
-15 2883     7.699800e+02 4.250200e+02
-0 2884     4.470001e+01 -9.640002e+01
-1 2884     1.745500e+02 -7.834998e+01
-2 2884     2.307700e+02 -6.654999e+01
-7 2884     -2.335999e+01 2.456000e+01
-15 2884     3.876001e+01 1.234003e+01
-0 2885     3.676001e+01 -2.410999e+01
-1 2885     1.878800e+02 -4.960022e+00
-2 2885     1.981500e+02 1.109003e+01
-10 2885     -4.821002e+01 1.167800e+02
-15 2885     1.779999e+01 1.091700e+02
-0 2886     1.300049e-01 -8.644000e+01
-1 2886     1.366600e+02 -5.557001e+01
-2 2886     1.730600e+02 -7.401001e+01
-3 2886     8.716998e+01 -3.803700e+02
-7 2886     -7.139001e+01 2.559003e+01
-10 2886     -8.417999e+01 4.110999e+01
-13 2886     3.801300e+02 -2.981000e+02
-15 2886     -2.252002e+01 1.984998e+01
-0 2887     5.955300e+02 3.727002e+01
-1 2887     8.362100e+02 -1.295400e+02
-15 2887     7.963800e+02 2.699400e+02
-0 2888     5.596600e+02 2.517700e+02
-1 2888     8.669500e+02 1.084500e+02
-7 2888     3.776700e+02 4.159600e+02
-10 2888     5.359900e+02 4.961200e+02
-15 2888     7.221500e+02 5.658800e+02
-0 2889     5.076899e+02 2.710700e+02
-1 2889     8.320699e+02 1.403800e+02
-10 2889     4.733800e+02 5.140900e+02
-15 2889     6.499100e+02 5.837900e+02
-0 2890     5.935100e+02 1.529999e+01
-1 2890     8.272300e+02 -1.521300e+02
-6 2890     4.429000e+02 1.492300e+02
-7 2890     4.426600e+02 1.927300e+02
-8 2890     4.927500e+02 -3.831000e+01
-10 2890     5.941500e+02 2.214800e+02
-13 2890     8.133800e+02 -1.865600e+02
-15 2890     7.966100e+02 2.389200e+02
-0 2891     6.931000e+01 2.942999e+01
-1 2891     2.355000e+02 3.771002e+01
-15 2891     5.482001e+01 1.867700e+02
-0 2892     6.100601e+02 1.171997e+01
-1 2892     8.436801e+02 -1.617300e+02
-7 2892     4.596300e+02 1.924000e+02
-13 2892     8.312300e+02 -1.876400e+02
-15 2892     8.201801e+02 2.363300e+02
-0 2893     -2.954999e+01 4.789900e+02
-1 2893     3.409100e+02 4.952500e+02
-2 2893     -3.176800e+02 2.355100e+02
-6 2893     -5.087600e+02 4.878500e+02
-7 2893     -2.532600e+02 5.430800e+02
-8 2893     -1.818700e+02 1.783600e+02
-12 2893     -3.331100e+02 4.795300e+02
-14 2893     2.845500e+02 -2.585800e+02
-0 2894     2.272998e+01 2.928300e+02
-1 2894     3.400000e+02 2.955400e+02
-4 2894     -1.085000e+02 -3.650700e+02
-5 2894     4.433199e+02 -3.730800e+02
-7 2894     -1.710200e+02 3.633800e+02
-8 2894     -1.020700e+02 2.717001e+01
-10 2894     -9.756000e+01 4.893800e+02
-11 2894     1.735600e+02 -4.506000e+02
-15 2894     -2.428003e+01 5.407800e+02
-0 2895     -6.353003e+01 1.815900e+02
-1 2895     2.130300e+02 2.113200e+02
-5 2895     3.809200e+02 -4.956200e+02
-6 2895     -4.062200e+02 1.158100e+02
-7 2895     -2.314000e+02 2.454900e+02
-10 2895     -1.866900e+02 3.488200e+02
-13 2895     1.807100e+02 -1.030000e+02
-14 2895     2.979600e+02 -5.813300e+02
-0 2896     -1.655400e+02 1.848900e+02
-1 2896     1.154100e+02 2.418700e+02
-0 2897     -1.609900e+02 1.763100e+02
-1 2897     1.165900e+02 2.326300e+02
-7 2897     -3.270800e+02 2.262800e+02
-0 2898     1.026900e+02 7.578003e+01
-1 2898     2.832300e+02 7.342999e+01
-0 2899     -1.049200e+02 4.899500e+02
-1 2899     2.661000e+02 5.254400e+02
-0 2900     2.862100e+02 5.111500e+02
-1 2900     6.900100e+02 4.487100e+02
-3 2900     -1.814900e+02 -5.740002e+01
-9 2900     -1.847300e+02 3.128000e+02
-11 2900     4.054100e+02 -2.416100e+02
-0 2901     1.609000e+02 7.003003e+01
-1 2901     3.394200e+02 5.126001e+01
-4 2901     -2.438400e+02 -5.399100e+02
-13 2901     5.033800e+02 -1.487700e+02
-15 2901     1.749500e+02 2.555900e+02
-0 2902     -6.516998e+01 1.918100e+02
-1 2902     2.153000e+02 2.215200e+02
-0 2903     -1.983000e+02 3.662200e+02
-1 2903     1.416000e+02 4.253700e+02
-2 2903     -4.743900e+02 9.682001e+01
-10 2903     -3.684800e+02 5.572000e+02
-14 2903     1.165600e+02 -3.827200e+02
-0 2904     -2.078800e+02 2.194000e+02
-1 2904     8.740002e+01 2.859600e+02
-7 2904     -3.870700e+02 2.592000e+02
-11 2904     -4.338000e+01 -5.220800e+02
-13 2904     4.371002e+01 -8.142999e+01
-14 2904     1.248500e+02 -5.447000e+02
-0 2905     -5.217999e+01 -2.827002e+01
-1 2905     1.075400e+02 1.565997e+01
-2 2905     8.128998e+01 -3.887000e+01
-4 2905     -2.855300e+02 -3.677200e+02
-7 2905     -1.370300e+02 7.301001e+01
-9 2905     -3.863000e+01 5.560999e+01
-15 2905     -1.005100e+02 9.166000e+01
-0 2906     8.221997e+01 -4.210999e+01
-1 2906     2.254600e+02 -3.600000e+01
-4 2906     -3.130500e+02 -4.779200e+02
-15 2906     8.172998e+01 9.147000e+01
-0 2907     1.695001e+01 3.983400e+02
-1 2907     3.690000e+02 4.020000e+02
-2 2907     -2.667400e+02 1.416700e+02
-6 2907     -4.408800e+02 3.924300e+02
-7 2907     -1.973400e+02 4.656400e+02
-9 2907     -3.728500e+02 1.883700e+02
-10 2907     -1.157500e+02 6.176200e+02
-14 2907     3.300900e+02 -3.426800e+02
-0 2908     1.523101e+02 2.163000e+01
-1 2908     3.140699e+02 5.880005e+00
-7 2908     6.390997e+01 1.613600e+02
-10 2908     8.087000e+01 1.820800e+02
-12 2908     1.504300e+02 1.426100e+02
-15 2908     1.688000e+02 1.876900e+02
-0 2909     1.633002e+01 5.691998e+01
-1 2909     1.949800e+02 7.992999e+01
-4 2909     -2.353700e+02 -4.254600e+02
-5 2909     6.503500e+02 -6.061400e+02
-7 2909     -8.116998e+01 1.731900e+02
-10 2909     -8.047998e+01 2.092400e+02
-12 2909     -2.278998e+01 1.396800e+02
-15 2909     -1.998999e+01 2.168200e+02
-0 2910     -1.471100e+02 1.803800e+02
-1 2910     1.312400e+02 2.327400e+02
-7 2910     -3.151400e+02 2.318600e+02
-0 2911     -3.069000e+01 -4.119000e+01
-1 2911     1.218700e+02 -3.059998e+00
-3 2911     3.285999e+01 -3.483900e+02
-6 2911     -6.452002e+01 -4.437000e+01
-13 2911     3.455100e+02 -2.618400e+02
-15 2911     -7.032001e+01 7.675000e+01
-0 2912     -4.664500e+02 1.884900e+02
-1 2912     -1.647100e+02 3.229500e+02
-7 2912     -6.514500e+02 1.884300e+02
-0 2913     -8.032400e+02 1.245001e+01
-1 2913     -5.157800e+02 2.455800e+02
-0 2914     -8.079200e+02 4.530029e+00
-1 2914     -5.215000e+02 2.391100e+02
-0 2915     -4.471500e+02 1.385800e+02
-1 2915     -1.642000e+02 2.718200e+02
-7 2915     -6.195300e+02 1.425600e+02
-0 2916     1.593300e+02 -8.340027e+00
-1 2916     3.116500e+02 -2.617999e+01
-2 2916     3.169399e+02 5.853998e+01
-7 2916     7.637000e+01 1.328900e+02
-15 2916     1.821400e+02 1.475900e+02
-0 2917     2.995001e+01 1.396000e+02
-1 2917     2.379200e+02 1.558000e+02
-15 2917     -1.146997e+01 3.315600e+02
-0 2918     -4.387000e+01 2.582600e+02
-1 2918     2.602900e+02 2.797000e+02
-7 2918     -2.294900e+02 3.212200e+02
-8 2918     -1.458800e+02 -3.630005e+00
-9 2918     -3.614700e+02 7.453003e+01
-10 2918     -1.716600e+02 4.425500e+02
-12 2918     -2.871800e+02 2.305700e+02
-13 2918     1.781400e+02 -3.782001e+01
-14 2918     2.956000e+02 -4.960601e+02
-15 2918     -1.111300e+02 4.834400e+02
-0 2919     -1.066000e+02 1.254600e+02
-1 2919     1.235300e+02 1.748500e+02
-5 2919     4.267400e+02 -5.445100e+02
-6 2919     -3.101100e+02 8.426001e+01
-7 2919     -2.394200e+02 2.031400e+02
-10 2919     -2.316700e+02 2.768600e+02
-15 2919     -1.894400e+02 2.927800e+02
-0 2920     8.547998e+01 -1.307001e+01
-1 2920     2.372200e+02 -8.700012e+00
-2 2920     2.477400e+02 3.826001e+01
-7 2920     4.530029e+00 1.160500e+02
-15 2920     8.251001e+01 1.311700e+02
-0 2921     7.159003e+01 1.109985e+00
-1 2921     2.286000e+02 9.549988e+00
-6 2921     4.983002e+01 4.431000e+01
-7 2921     -1.210999e+01 1.276100e+02
-12 2921     6.487000e+01 9.695001e+01
-15 2921     6.162000e+01 1.486400e+02
-0 2922     5.521997e+01 -6.075000e+01
-1 2922     1.944600e+02 -4.637000e+01
-3 2922     1.412200e+02 -3.268900e+02
-7 2922     -1.815002e+01 6.284003e+01
-9 2922     8.679999e+01 7.681000e+01
-10 2922     -2.325000e+01 7.698999e+01
-13 2922     4.308400e+02 -2.690100e+02
-15 2922     4.766998e+01 6.217999e+01
-0 2923     8.221997e+01 -4.210999e+01
-1 2923     2.254600e+02 -3.600000e+01
-15 2923     8.172998e+01 9.147000e+01
-0 2924     -2.407000e+02 3.948300e+02
-1 2924     1.062100e+02 4.643200e+02
-2 2924     -5.181000e+02 1.322300e+02
-7 2924     -4.517200e+02 4.323900e+02
-13 2924     -4.600220e-01 6.791998e+01
-14 2924     7.665997e+01 -3.519400e+02
-0 2925     2.229999e+01 -4.344000e+01
-1 2925     1.692300e+02 -1.983002e+01
-7 2925     -5.464001e+01 7.407001e+01
-15 2925     1.049988e+00 8.110999e+01
-0 2926     -1.896300e+02 2.109600e+02
-1 2926     1.015600e+02 2.732800e+02
-7 2926     -3.672200e+02 2.542600e+02
-10 2926     -3.391500e+02 3.716000e+02
-15 2926     -3.057500e+02 3.978600e+02
-0 2927     -1.896300e+02 2.109600e+02
-1 2927     1.015600e+02 2.732800e+02
-7 2927     -3.672200e+02 2.542600e+02
-0 2928     1.925300e+02 -1.703998e+01
-1 2928     3.427500e+02 -4.501001e+01
-2 2928     3.491500e+02 5.432001e+01
-7 2928     1.097900e+02 1.293400e+02
-10 2928     1.313400e+02 1.412900e+02
-15 2928     2.290601e+02 1.403100e+02
-0 2929     2.125400e+02 -3.581000e+01
-1 2929     3.577000e+02 -6.989001e+01
-2 2929     3.723900e+02 3.646997e+01
-3 2929     2.686100e+02 -2.694600e+02
-6 2929     2.079200e+02 4.652002e+01
-7 2929     1.318800e+02 1.134600e+02
-15 2929     2.590400e+02 1.174900e+02
-0 2930     1.180300e+02 -8.592999e+01
-1 2930     2.475000e+02 -8.985999e+01
-6 2930     1.306300e+02 -3.733002e+01
-7 2930     4.882001e+01 4.900000e+01
-8 2930     2.793900e+02 -7.479999e+01
-15 2930     1.363200e+02 3.612000e+01
-0 2931     2.404600e+02 4.520300e+02
-1 2931     6.225100e+02 3.979800e+02
-2 2931     -7.059998e+01 2.093000e+02
-5 2931     6.436400e+02 -1.954900e+02
-6 2931     -2.084400e+02 5.098100e+02
-7 2931     9.799988e+00 5.439500e+02
-12 2931     -4.254999e+01 4.864900e+02
-0 2932     -1.816800e+02 4.013000e+01
-1 2932     1.884998e+01 1.150300e+02
-6 2932     -3.333000e+02 -2.778003e+01
-7 2932     -2.936300e+02 1.103100e+02
-10 2932     -3.096000e+02 1.692100e+02
-12 2932     -2.919900e+02 3.219000e+01
-15 2932     -2.817700e+02 1.663400e+02
-0 2933     -2.109003e+01 5.270001e+01
-1 2933     1.595000e+02 8.550000e+01
-3 2933     1.820007e+00 -2.554900e+02
-4 2933     -2.346700e+02 -3.947300e+02
-5 2933     6.011899e+02 -6.124500e+02
-8 2933     1.069000e+02 3.079987e+00
-15 2933     -6.982001e+01 2.059300e+02
-0 2934     1.975800e+02 -1.119100e+02
-1 2934     3.206200e+02 -1.411300e+02
-2 2934     3.826300e+02 -4.802002e+01
-7 2934     1.286600e+02 3.539001e+01
-12 2934     2.372200e+02 -1.630005e+00
-13 2934     5.578101e+02 -3.035800e+02
-15 2934     2.485100e+02 1.172998e+01
-0 2935     3.734600e+02 4.770900e+02
-1 2935     7.795500e+02 3.896100e+02
-3 2935     -1.070400e+02 -9.110999e+01
-8 2935     1.135200e+02 1.878600e+02
-14 2935     6.802800e+02 -2.415200e+02
-0 2936     4.076001e+01 -1.056900e+02
-1 2936     1.685699e+02 -8.621002e+01
-2 2936     2.276300e+02 -7.870001e+01
-3 2936     1.397100e+02 -3.831400e+02
-7 2936     -2.617999e+01 1.451001e+01
-9 2936     8.512000e+01 2.872998e+01
-10 2936     -3.459998e+01 2.281000e+01
-13 2936     4.208000e+02 -3.108500e+02
-15 2936     3.470001e+01 -7.100220e-01
-0 2937     -3.052002e+01 7.652002e+01
-1 2937     1.595500e+02 1.112600e+02
-3 2937     -2.495001e+01 -2.421200e+02
-5 2937     5.829301e+02 -5.867600e+02
-6 2937     -1.215100e+02 8.925000e+01
-7 2937     -1.344900e+02 1.817700e+02
-8 2937     8.315997e+01 1.725000e+01
-10 2937     -1.375100e+02 2.277000e+02
-13 2937     3.270800e+02 -1.609600e+02
-15 2937     -8.589001e+01 2.379700e+02
-0 2938     1.881200e+02 -4.754999e+01
-1 2938     3.286000e+02 -7.384998e+01
-2 2938     3.595699e+02 2.378998e+01
-3 2938     2.597800e+02 -2.808200e+02
-6 2938     1.908200e+02 2.821997e+01
-8 2938     3.258300e+02 -2.923999e+01
-10 2938     1.299000e+02 1.057100e+02
-15 2938     2.265900e+02 9.809000e+01
-0 2939     2.043700e+02 -7.975000e+01
-1 2939     3.364600e+02 -1.112600e+02
-3 2939     2.771000e+02 -3.143100e+02
-7 2939     1.308100e+02 6.856000e+01
-13 2939     5.611300e+02 -2.744200e+02
-15 2939     2.537800e+02 5.656000e+01
-0 2940     -1.888000e+01 -7.396002e+01
-1 2940     1.232200e+02 -3.826001e+01
-3 2940     5.938000e+01 -3.761400e+02
-7 2940     -9.321002e+01 3.441998e+01
-10 2940     -1.073200e+02 5.369000e+01
-12 2940     -2.554999e+01 -2.358002e+01
-13 2940     3.605100e+02 -2.894300e+02
-0 2941     6.509100e+02 -1.941998e+01
-1 2941     8.767300e+02 -2.076400e+02
-2 2941     6.027600e+02 -1.713000e+01
-6 2941     5.226500e+02 1.341300e+02
-0 2942     -6.426001e+01 4.820100e+02
-1 2942     3.055900e+02 5.072000e+02
-3 2942     -4.795400e+02 -9.207001e+01
-5 2942     3.409700e+02 -1.691900e+02
-6 2942     -5.482900e+02 4.847400e+02
-7 2942     -2.875500e+02 5.428500e+02
-12 2942     -3.709900e+02 4.784100e+02
-0 2943     -1.173900e+02 5.528998e+01
-1 2943     8.067999e+01 1.123700e+02
-5 2943     4.550300e+02 -6.176899e+02
-7 2943     -2.272900e+02 1.385800e+02
-10 2943     -2.360400e+02 1.935800e+02
-15 2943     -1.974200e+02 1.958800e+02
-0 2944     7.053003e+01 -1.291000e+02
-1 2944     1.887400e+02 -1.178000e+02
-7 2944     8.880005e+00 -2.219971e+00
-12 2944     1.034200e+02 -5.434998e+01
-0 2945     1.404700e+02 7.392999e+01
-1 2945     3.204800e+02 6.123999e+01
-6 2945     9.196997e+01 1.440200e+02
-12 2945     1.167800e+02 1.949300e+02
-15 2945     1.461300e+02 2.583300e+02
-0 2946     6.282000e+02 -3.921600e+02
-1 2946     7.004700e+02 -5.816000e+02
-2 2946     8.024000e+02 -3.007300e+02
-0 2947     -8.542999e+01 4.844300e+02
-1 2947     2.846300e+02 5.150300e+02
-6 2947     -5.734800e+02 4.842500e+02
-7 2947     -3.088800e+02 5.432900e+02
-0 2948     1.329200e+02 7.653998e+01
-1 2948     3.137000e+02 6.552002e+01
-3 2948     1.505600e+02 -1.858000e+02
-7 2948     3.407001e+01 2.109200e+02
-10 2948     5.275000e+01 2.439600e+02
-13 2948     4.784900e+02 -1.454400e+02
-15 2948     1.356300e+02 2.597200e+02
-0 2949     2.428500e+02 -2.221002e+01
-1 2949     3.944900e+02 -6.626001e+01
-10 2949     1.902300e+02 1.409200e+02
-13 2949     5.843400e+02 -2.214600e+02
-15 2949     2.988900e+02 1.400900e+02
-0 2950     3.144301e+02 -9.860999e+01
-1 2950     4.472700e+02 -1.664100e+02
-7 2950     2.345800e+02 6.457001e+01
-10 2950     2.795601e+02 5.947998e+01
-12 2950     3.518600e+02 3.734998e+01
-13 2950     6.498300e+02 -2.854800e+02
-15 2950     4.084700e+02 4.519000e+01
-0 2951     -1.139700e+02 3.558500e+02
-1 2951     2.242500e+02 3.933300e+02
-2 2951     -3.895000e+02 8.601001e+01
-5 2951     2.839500e+02 -3.058200e+02
-6 2951     -5.822900e+02 3.058900e+02
-7 2951     -3.201000e+02 4.063100e+02
-8 2951     -2.402400e+02 5.941000e+01
-9 2951     -4.756500e+02 1.344100e+02
-10 2951     -2.660900e+02 5.524600e+02
-11 2951     4.827002e+01 -3.941900e+02
-12 2951     -4.039800e+02 3.185500e+02
-14 2951     1.999000e+02 -3.926600e+02
-0 2952     -1.172200e+02 2.844700e+02
-1 2952     1.987800e+02 3.246100e+02
-2 2952     -3.654000e+02 1.583002e+01
-7 2952     -3.095200e+02 3.354300e+02
-10 2952     -2.610300e+02 4.660400e+02
-15 2952     -2.149700e+02 5.096300e+02
-0 2953     9.551001e+01 -4.925000e+01
-1 2953     2.362700e+02 -4.734998e+01
-2 2953     2.714500e+02 4.059998e+00
-6 2953     9.400000e+01 -2.119995e+00
-7 2953     2.071997e+01 8.167999e+01
-10 2953     2.283002e+01 9.354999e+01
-15 2953     1.007300e+02 8.312000e+01
-0 2954     2.414500e+02 -1.645001e+01
-1 2954     3.948300e+02 -5.990997e+01
-2 2954     3.855601e+02 5.534003e+01
-13 2954     5.825300e+02 -2.169200e+02
-15 2954     2.979800e+02 1.480100e+02
-0 2955     1.910300e+02 -5.396997e+01
-1 2955     3.301100e+02 -8.115997e+01
-2 2955     3.609301e+02 1.684003e+01
-3 2955     2.597800e+02 -2.884600e+02
-6 2955     1.934700e+02 2.101001e+01
-8 2955     3.275100e+02 -3.512000e+01
-10 2955     1.333800e+02 9.844000e+01
-15 2955     2.318300e+02 8.989001e+01
-0 2956     5.641300e+02 1.416400e+02
-1 2956     8.366500e+02 -9.780029e+00
-2 2956     4.625100e+02 1.030700e+02
-6 2956     3.730200e+02 2.807200e+02
-9 2956     2.574100e+02 1.849600e+02
-15 2956     7.406400e+02 4.109700e+02
-0 2957     6.008900e+02 8.842001e+01
-1 2957     8.583600e+02 -7.777002e+01
-2 2957     5.183199e+02 6.760999e+01
-6 2957     4.329800e+02 2.343600e+02
-9 2957     3.056700e+02 1.564300e+02
-15 2957     7.984200e+02 3.417900e+02
-0 2958     6.480400e+02 -4.539978e+00
-1 2958     8.786000e+02 -1.910200e+02
-3 2958     4.624900e+02 -3.091600e+02
-6 2958     5.149700e+02 1.493300e+02
-10 2958     6.593800e+02 2.043200e+02
-12 2958     5.956400e+02 1.590100e+02
-15 2958     8.753199e+02 2.192700e+02
-0 2959     3.420001e+01 -6.138000e+01
-1 2959     1.745800e+02 -4.077002e+01
-7 2959     -3.963000e+01 5.847998e+01
-13 2959     4.110200e+02 -2.712000e+02
-15 2959     1.931000e+01 5.865997e+01
-0 2960     6.550000e+01 -1.187700e+02
-1 2960     1.877300e+02 -1.064200e+02
-3 2960     1.720100e+02 -3.865300e+02
-7 2960     7.600098e-01 6.400024e+00
-15 2960     6.931000e+01 -1.506000e+01
-0 2961     -6.701001e+01 -1.431000e+02
-1 2961     5.557001e+01 -8.992999e+01
-6 2961     -6.052002e+01 -1.716400e+02
-7 2961     -1.285100e+02 -4.273999e+01
-12 2961     -5.856000e+01 -1.177600e+02
-15 2961     -1.059400e+02 -6.569000e+01
-0 2962     1.149400e+02 -1.358900e+02
-1 2962     2.297200e+02 -1.381500e+02
-3 2962     2.295000e+02 -3.848100e+02
-7 2962     5.376001e+01 -1.510010e+00
-15 2962     1.387400e+02 -3.148999e+01
-0 2963     5.702800e+02 1.133400e+02
-1 2963     8.338700e+02 -4.173999e+01
-0 2964     2.407000e+02 -8.515002e+01
-1 2964     3.732400e+02 -1.286800e+02
-2 2964     4.087800e+02 -1.459003e+01
-3 2964     3.047300e+02 -3.170600e+02
-6 2964     2.468900e+02 -2.309998e+00
-7 2964     1.652700e+02 6.819000e+01
-10 2964     1.942500e+02 6.779999e+01
-12 2964     2.741700e+02 3.879999e+01
-13 2964     5.903101e+02 -2.769200e+02
-15 2964     3.044600e+02 5.390002e+01
-0 2965     -1.355100e+02 -1.239100e+02
-1 2965     -1.820007e+00 -5.170001e+01
-3 2965     -3.803003e+01 -4.616300e+02
-6 2965     -1.514300e+02 -1.772100e+02
-7 2965     -2.021000e+02 -3.695001e+01
-12 2965     -1.503600e+02 -1.186700e+02
-15 2965     -1.996900e+02 -5.006000e+01
-0 2966     5.416000e+02 2.120700e+02
-1 2966     8.350100e+02 7.142999e+01
-6 2966     3.268700e+02 3.518900e+02
-7 2966     3.648300e+02 3.739200e+02
-9 2966     2.193000e+02 2.348800e+02
-10 2966     5.181300e+02 4.477600e+02
-13 2966     7.378199e+02 -1.940997e+01
-15 2966     7.010300e+02 5.067300e+02
-0 2967     2.244900e+02 -6.821997e+01
-1 2967     3.604200e+02 -1.066000e+02
-2 2967     3.935500e+02 4.260010e+00
-6 2967     2.293800e+02 1.342999e+01
-7 2967     1.480601e+02 8.248999e+01
-13 2967     5.765200e+02 -2.627200e+02
-0 2968     3.890997e+01 6.983002e+01
-1 2968     2.204800e+02 8.556000e+01
-2 2968     1.549900e+02 9.815002e+01
-3 2968     6.517999e+01 -2.160600e+02
-4 2968     -2.295300e+02 -4.430500e+02
-5 2968     6.732900e+02 -5.895100e+02
-6 2968     -2.259998e+01 1.075700e+02
-7 2968     -5.884998e+01 1.886300e+02
-8 2968     1.593800e+02 3.507999e+01
-9 2968     1.947998e+01 1.730200e+02
-10 2968     -5.594000e+01 2.263600e+02
-12 2968     -2.599976e+00 1.619600e+02
-15 2968     8.989990e+00 2.377700e+02
-0 2969     5.731300e+02 2.003000e+02
-1 2969     8.644800e+02 5.015997e+01
-9 2969     2.513400e+02 2.381800e+02
-0 2970     1.940100e+02 -2.269100e+02
-1 2970     2.766600e+02 -2.520700e+02
-2 2970     4.423300e+02 -1.475100e+02
-10 2970     1.541500e+02 -1.004900e+02
-13 2970     5.781300e+02 -4.036800e+02
-0 2971     -4.504200e+02 3.205800e+02
-1 2971     -1.134700e+02 4.435400e+02
-10 2971     -6.693300e+02 4.793700e+02
-15 2971     -6.842500e+02 5.156100e+02
-0 2972     -5.952800e+02 3.672500e+02
-1 2972     -2.406800e+02 5.216800e+02
-0 2973     -5.876500e+02 3.641500e+02
-1 2973     -2.336900e+02 5.169400e+02
-0 2974     -4.718200e+02 3.210500e+02
-1 2974     -1.333100e+02 4.491300e+02
-7 2974     -6.825900e+02 3.248000e+02
-10 2974     -6.952100e+02 4.777200e+02
-11 2974     -2.750300e+02 -4.224600e+02
-15 2974     -7.144300e+02 5.131900e+02
-0 2975     -1.911500e+02 3.957001e+01
-1 2975     9.780029e+00 1.170500e+02
-4 2975     -2.273500e+02 -2.601100e+02
-7 2975     -3.024400e+02 1.085800e+02
-10 2975     -3.204300e+02 1.675200e+02
-15 2975     -2.944500e+02 1.647900e+02
-0 2976     2.151700e+02 3.261200e+02
-1 2976     5.499800e+02 2.762500e+02
-6 2976     -1.723300e+02 3.575100e+02
-7 2976     9.609985e+00 4.206500e+02
-11 2976     3.537400e+02 -4.133200e+02
-12 2976     -2.531000e+01 3.548200e+02
-13 2976     3.849600e+02 3.609003e+01
-14 2976     5.564600e+02 -4.108800e+02
-0 2977     2.091200e+02 3.185900e+02
-1 2977     5.407500e+02 2.705700e+02
-6 2977     -1.731300e+02 3.468000e+02
-7 2977     5.960022e+00 4.128100e+02
-10 2977     1.185400e+02 5.396300e+02
-12 2977     -2.787000e+01 3.460300e+02
-0 2978     2.896000e+02 1.908900e+02
-1 2978     5.743500e+02 1.202300e+02
-10 2978     2.244600e+02 3.956100e+02
-15 2978     3.541100e+02 4.375400e+02
-0 2979     2.508600e+02 5.622998e+01
-1 2979     4.294200e+02 9.530029e+00
-7 2979     1.498400e+02 2.070600e+02
-10 2979     1.917800e+02 2.324300e+02
-15 2979     3.012100e+02 2.487700e+02
-0 2980     2.508600e+02 5.622998e+01
-1 2980     4.294200e+02 9.530029e+00
-10 2980     1.917800e+02 2.324300e+02
-15 2980     3.012100e+02 2.487700e+02
-0 2981     2.820200e+02 4.060999e+01
-1 2981     4.577600e+02 -1.565002e+01
-7 2981     1.809700e+02 1.957700e+02
-10 2981     2.291899e+02 2.174800e+02
-15 2981     3.461899e+02 2.316900e+02
-0 2982     2.588199e+02 1.159003e+01
-1 2982     4.223500e+02 -3.745001e+01
-6 2982     2.298800e+02 1.072800e+02
-7 2982     1.657600e+02 1.654000e+02
-10 2982     2.050000e+02 1.808500e+02
-13 2982     5.910699e+02 -1.925200e+02
-15 2982     3.172900e+02 1.883100e+02
-0 2983     2.402000e+02 -7.190002e+00
-1 2983     3.961300e+02 -5.040002e+01
-10 2983     1.852200e+02 1.575500e+02
-12 2983     2.510300e+02 1.280400e+02
-15 2983     2.936600e+02 1.601200e+02
-0 2984     3.069800e+02 -2.520001e+01
-1 2984     4.638500e+02 -9.040002e+01
-6 2984     2.808700e+02 7.657001e+01
-7 2984     2.151300e+02 1.347400e+02
-10 2984     2.642600e+02 1.441100e+02
-15 2984     3.892800e+02 1.446400e+02
-0 2985     2.212400e+02 -4.875000e+01
-1 2985     3.631899e+02 -8.550000e+01
-6 2985     2.194300e+02 3.491998e+01
-7 2985     1.418000e+02 1.022100e+02
-8 2985     3.467600e+02 -2.807999e+01
-10 2985     1.677700e+02 1.076400e+02
-13 2985     5.712600e+02 -2.457300e+02
-15 2985     2.725800e+02 1.008400e+02
-0 2986     2.123101e+02 -8.308002e+01
-1 2986     3.438000e+02 -1.168600e+02
-6 2986     2.215400e+02 -5.909973e+00
-7 2986     1.388300e+02 6.673999e+01
-13 2986     5.679800e+02 -2.766700e+02
-15 2986     2.650400e+02 5.281000e+01
-0 2987     4.086000e+02 -3.022998e+01
-1 2987     5.812100e+02 -1.311000e+02
-6 2987     3.489700e+02 8.329999e+01
-7 2987     3.019100e+02 1.381300e+02
-10 2987     3.824000e+02 1.490100e+02
-13 2987     7.005500e+02 -2.260500e+02
-15 2987     5.342900e+02 1.514900e+02
-0 2988     -5.812000e+01 -1.624500e+02
-1 2988     5.664001e+01 -1.109900e+02
-4 2988     -3.795000e+02 -3.641100e+02
-10 2988     -1.430400e+02 -5.310999e+01
-12 2988     -3.898999e+01 -1.345600e+02
-13 2988     3.410300e+02 -3.683800e+02
-15 2988     -9.157001e+01 -9.081000e+01
-0 2989     3.074600e+02 -1.164300e+02
-1 2989     4.327300e+02 -1.817600e+02
-7 2989     2.332400e+02 4.751001e+01
-10 2989     2.738600e+02 3.850000e+01
-13 2989     6.501000e+02 -3.002900e+02
-15 2989     4.007800e+02 2.009998e+01
-0 2990     3.567800e+02 -1.420600e+02
-1 2990     4.782100e+02 -2.243500e+02
-6 2990     3.705100e+02 -3.490997e+01
-7 2990     2.819900e+02 2.914001e+01
-10 2990     3.330500e+02 1.460999e+01
-12 2990     4.081100e+02 -2.020020e+00
-15 2990     4.732700e+02 -8.400024e+00
-0 2991     -1.866000e+02 -5.198600e+02
-1 2991     -1.629900e+02 -4.088300e+02
-4 2991     -6.455600e+02 -2.370700e+02
-6 2991     -6.478998e+01 -6.851100e+02
-7 2991     -1.835100e+02 -4.499500e+02
-0 2992     -1.995200e+02 -5.390200e+02
-1 2992     -1.815800e+02 -4.216600e+02
-4 2992     -6.590800e+02 -2.266900e+02
-6 2992     -6.690997e+01 -7.115800e+02
-7 2992     -1.923400e+02 -4.711500e+02
-9 2992     4.045001e+01 -4.759900e+02
-0 2993     4.689100e+02 2.736200e+02
-1 2993     7.924900e+02 1.538500e+02
-10 2993     4.275100e+02 5.130700e+02
-0 2994     5.106700e+02 -1.979300e+02
-1 2994     6.521400e+02 -3.408400e+02
-7 2994     4.096400e+02 -1.703998e+01
-13 2994     7.912600e+02 -3.801700e+02
-0 2995     1.421000e+02 7.444000e+01
-1 2995     3.220601e+02 6.073999e+01
-15 2995     1.483300e+02 2.585300e+02
-0 2996     3.855900e+02 -9.565997e+01
-1 2996     5.285500e+02 -1.883900e+02
-10 2996     3.616200e+02 7.057001e+01
-15 2996     5.087500e+02 5.857001e+01
-0 2997     4.174800e+02 -1.062300e+02
-1 2997     5.575699e+02 -2.098300e+02
-15 2997     5.550800e+02 4.763000e+01
-0 2998     2.178900e+02 4.765997e+01
-1 2998     3.908400e+02 1.140002e+01
-7 2998     1.215700e+02 1.950100e+02
-15 2998     2.564100e+02 2.318400e+02
-0 2999     2.210100e+02 3.546997e+01
-1 2999     3.897900e+02 -1.330017e+00
-7 2999     1.265400e+02 1.841900e+02
-0 3000     2.104200e+02 1.877002e+01
-1 3000     3.733101e+02 -1.513000e+01
-10 3000     1.481300e+02 1.846700e+02
-12 3000     2.107800e+02 1.512200e+02
-15 3000     2.487900e+02 1.915400e+02
-0 3001     1.949100e+02 8.423999e+01
-1 3001     3.796100e+02 5.454999e+01
-7 3001     9.177002e+01 2.272400e+02
-13 3001     5.266801e+02 -1.341600e+02
-15 3001     2.200200e+02 2.792100e+02
-0 3002     3.091500e+02 4.294000e+01
-1 3002     4.897100e+02 -2.259003e+01
-7 3002     2.044200e+02 2.011300e+02
-10 3002     2.607100e+02 2.239800e+02
-13 3002     6.209000e+02 -1.633300e+02
-15 3002     3.845800e+02 2.387600e+02
-0 3003     1.275400e+02 -8.269000e+01
-1 3003     2.579100e+02 -9.001001e+01
-0 3004     9.858002e+01 7.494000e+01
-1 3004     2.788900e+02 7.384998e+01
-15 3004     8.909998e+01 2.530600e+02
-0 3005     2.357500e+02 -2.156000e+01
-1 3005     3.866500e+02 -6.317999e+01
-2 3005     3.839600e+02 5.090997e+01
-3 3005     2.775400e+02 -2.561400e+02
-6 3005     2.235500e+02 6.777002e+01
-7 3005     1.507900e+02 1.305700e+02
-10 3005     1.817600e+02 1.405400e+02
-13 3005     5.791200e+02 -2.216000e+02
-0 3006     2.181801e+02 1.522998e+01
-1 3006     3.797500e+02 -2.084998e+01
-2 3006     3.557300e+02 8.465997e+01
-7 3006     1.280100e+02 1.641200e+02
-0 3007     2.778300e+02 1.335999e+01
-1 3007     4.438800e+02 -4.196002e+01
-7 3007     1.824900e+02 1.692700e+02
-10 3007     2.271801e+02 1.853100e+02
-13 3007     6.045800e+02 -1.901400e+02
-15 3007     3.438000e+02 1.935200e+02
-0 3008     1.577700e+02 -1.971002e+01
-1 3008     3.067000e+02 -3.666998e+01
-2 3008     3.203900e+02 4.740997e+01
-10 3008     9.151001e+01 1.344600e+02
-15 3008     1.816600e+02 1.319000e+02
-0 3009     1.303100e+02 -6.083002e+01
-1 3009     2.666801e+02 -6.953998e+01
-2 3009     3.099200e+02 -7.700195e-01
-3 3009     2.139600e+02 -3.064200e+02
-6 3009     1.358200e+02 -4.869995e+00
-10 3009     6.396997e+01 8.340997e+01
-12 3009     1.517300e+02 4.372998e+01
-13 3009     4.979000e+02 -2.627800e+02
-0 3010     5.841998e+01 -1.117700e+02
-1 3010     1.833000e+02 -9.732001e+01
-2 3010     2.492400e+02 -7.916998e+01
-3 3010     1.603400e+02 -3.832300e+02
-7 3010     -7.450012e+00 1.191998e+01
-9 3010     1.034100e+02 2.917999e+01
-10 3010     -1.383002e+01 1.744000e+01
-13 3010     4.373400e+02 -3.143400e+02
-15 3010     5.912000e+01 -6.559998e+00
-0 3011     -1.337300e+02 2.434000e+02
-1 3011     1.674700e+02 2.894900e+02
-7 3011     -3.172000e+02 2.932800e+02
-11 3011     2.676001e+01 -4.996500e+02
-0 3012     6.622998e+01 -5.091998e+01
-1 3012     2.075200e+02 -3.985999e+01
-2 3012     2.405900e+02 -6.950012e+00
-3 3012     1.486000e+02 -3.139400e+02
-7 3012     -9.489990e+00 7.447998e+01
-9 3012     9.340997e+01 8.870999e+01
-10 3012     -1.284003e+01 8.831000e+01
-13 3012     4.395800e+02 -2.594400e+02
-15 3012     6.021997e+01 7.658002e+01
-0 3013     -4.831500e+02 1.408200e+02
-1 3013     -1.963000e+02 2.830400e+02
-0 3014     -3.471997e+01 -1.765100e+02
-1 3014     7.296002e+01 -1.313100e+02
-7 3014     -8.791998e+01 -6.809003e+01
-10 3014     -1.148100e+02 -6.684003e+01
-12 3014     -2.349976e+00 -1.428200e+02
-15 3014     -5.810999e+01 -1.064000e+02
-0 3015     -8.650024e+00 -1.853400e+02
-1 3015     9.452002e+01 -1.474000e+02
-15 3015     -2.294000e+01 -1.155300e+02
-0 3016     -1.663400e+02 -5.400000e+01
-1 3016     -4.200012e+00 2.271997e+01
-0 3017     -3.299600e+02 5.990997e+01
-1 3017     -8.462000e+01 1.682800e+02
-4 3017     -2.080200e+02 -1.453300e+02
-8 3017     -3.272700e+02 -1.840700e+02
-10 3017     -4.867400e+02 1.779600e+02
-0 3018     -7.786700e+02 -5.699399e+02
-1 3018     -6.785000e+02 -2.657700e+02
-0 3019     -2.828700e+02 2.522998e+01
-1 3019     -5.371997e+01 1.234900e+02
-4 3019     -2.336400e+02 -1.738100e+02
-0 3020     -4.614700e+02 1.414300e+02
-1 3020     -1.762900e+02 2.780700e+02
-13 3020     -1.650800e+02 -1.616500e+02
-0 3021     -3.299500e+02 6.496002e+01
-1 3021     -8.287000e+01 1.728100e+02
-0 3022     -7.246100e+02 -4.551000e+02
-1 3022     -6.015400e+02 -1.841100e+02
-4 3022     -4.815200e+02 1.251500e+02
-7 3022     -7.740100e+02 -5.072500e+02
-0 3023     2.781000e+02 4.715997e+01
-1 3023     4.559700e+02 -8.320007e+00
-7 3023     1.763700e+02 2.016900e+02
-10 3023     2.241300e+02 2.238700e+02
-13 3023     5.984800e+02 -1.614100e+02
-15 3023     3.402700e+02 2.395100e+02
-0 3024     8.553003e+01 5.119900e+02
-1 3024     4.702500e+02 5.003200e+02
-2 3024     -2.136600e+02 2.745300e+02
-5 3024     4.889399e+02 -1.345700e+02
-11 3024     2.232500e+02 -2.502300e+02
-12 3024     -2.152100e+02 5.352100e+02
-14 3024     3.957300e+02 -2.202800e+02
-0 3025     2.110800e+02 -4.546002e+01
-1 3025     3.536300e+02 -7.933002e+01
-6 3025     2.093700e+02 3.471002e+01
-7 3025     1.319000e+02 1.035500e+02
-8 3025     3.392300e+02 -2.712000e+01
-13 3025     5.629600e+02 -2.433900e+02
-15 3025     2.581100e+02 1.039800e+02
-0 3026     -5.227700e+02 2.777700e+02
-1 3026     -1.923900e+02 4.201800e+02
-10 3026     -7.518400e+02 4.209100e+02
-13 3026     -2.323000e+02 -4.607001e+01
-0 3027     8.795001e+01 5.142300e+02
-1 3027     4.734900e+02 5.020300e+02
-6 3027     -3.837600e+02 5.575700e+02
-14 3027     3.982400e+02 -2.179300e+02
-0 3028     3.351700e+02 -1.692600e+02
-1 3028     4.442700e+02 -2.439500e+02
-6 3028     3.667000e+02 -6.627002e+01
-7 3028     2.684600e+02 7.100220e-01
-10 3028     3.105699e+02 -1.921997e+01
-12 3028     3.997700e+02 -3.321002e+01
-15 3028     4.460000e+02 -4.844000e+01
-0 3029     9.941998e+01 -2.221300e+02
-1 3029     1.844500e+02 -2.163700e+02
-2 3029     3.511000e+02 -1.646000e+02
-3 3029     2.657000e+02 -4.615500e+02
-4 3029     -4.536500e+02 -4.937800e+02
-6 3029     1.693700e+02 -1.900900e+02
-7 3029     5.623999e+01 -8.712000e+01
-8 3029     3.112900e+02 -1.884600e+02
-10 3029     4.475000e+01 -1.048800e+02
-15 3029     1.282600e+02 -1.502100e+02
-0 3030     -2.331000e+02 4.626700e+02
-1 3030     1.298500e+02 5.293500e+02
-2 3030     -5.142200e+02 2.165100e+02
-5 3030     1.739800e+02 -1.895000e+02
-7 3030     -4.538600e+02 5.049100e+02
-11 3030     -5.906000e+01 -2.999100e+02
-12 3030     -5.566400e+02 4.312800e+02
-0 3031     -1.130600e+02 2.213600e+02
-1 3031     1.793800e+02 2.629300e+02
-0 3032     1.275400e+02 -8.269000e+01
-1 3032     2.579100e+02 -9.001001e+01
-6 3032     1.389300e+02 -3.046002e+01
-7 3032     5.750000e+01 5.382001e+01
-8 3032     2.853000e+02 -6.989001e+01
-0 3033     -7.657001e+01 -5.293400e+02
-1 3033     -6.578003e+01 -4.544200e+02
-6 3033     6.666998e+01 -6.426700e+02
-7 3033     -7.014001e+01 -4.352500e+02
-9 3033     1.437100e+02 -4.198400e+02
-0 3034     6.350000e+01 5.455100e+02
-1 3034     4.560400e+02 5.404900e+02
-2 3034     -2.357600e+02 3.126700e+02
-5 3034     4.689200e+02 -1.009000e+02
-0 3035     -6.870001e+01 -1.079900e+02
-1 3035     6.592999e+01 -5.627002e+01
-8 3035     1.101700e+02 -1.446100e+02
-12 3035     -7.571002e+01 -7.952002e+01
-0 3036     7.646002e+01 3.953998e+01
-1 3036     2.454800e+02 4.590002e+01
-6 3036     3.971002e+01 8.829999e+01
-15 3036     6.340002e+01 2.017500e+02
-0 3037     5.693101e+02 -1.829999e+01
-1 3037     7.916300e+02 -1.794100e+02
-12 3037     5.056300e+02 1.122300e+02
-13 3037     7.919301e+02 -2.207500e+02
-15 3037     7.662200e+02 1.891100e+02
-0 3038     -2.545100e+02 -4.579301e+02
-1 3038     -2.017600e+02 -3.300700e+02
-6 3038     -1.876100e+02 -6.525000e+02
-7 3038     -2.688100e+02 -4.043400e+02
-0 3039     -8.570001e+01 -5.800200e+02
-1 3039     -9.340997e+01 -4.975400e+02
-0 3040     2.525699e+02 4.495600e+02
-1 3040     6.349800e+02 3.920100e+02
-2 3040     -5.963000e+01 2.064500e+02
-5 3040     6.561700e+02 -1.979000e+02
-6 3040     -1.948900e+02 5.088700e+02
-7 3040     2.171002e+01 5.426100e+02
-11 3040     3.810200e+02 -2.980700e+02
-12 3040     -2.953003e+01 4.849100e+02
-14 3040     5.623101e+02 -2.782000e+02
-0 3041     2.394301e+02 4.442400e+02
-1 3041     6.192300e+02 3.898400e+02
-2 3041     -7.042999e+01 2.005300e+02
-3 3041     -2.117000e+02 -1.315100e+02
-5 3041     6.425400e+02 -2.039200e+02
-6 3041     -2.079500e+02 4.996500e+02
-7 3041     9.789978e+00 5.358800e+02
-8 3041     2.191998e+01 1.543200e+02
-11 3041     3.699399e+02 -3.035200e+02
-12 3041     -4.227002e+01 4.772600e+02
-14 3041     5.493600e+02 -2.842200e+02
-0 3042     -8.071997e+01 4.871600e+02
-1 3042     2.901899e+02 5.167300e+02
-7 3042     -3.044400e+02 5.469500e+02
-0 3043     -1.107600e+02 4.829200e+02
-1 3043     2.581899e+02 5.196900e+02
-7 3043     -3.335800e+02 5.385000e+02
-11 3043     4.882001e+01 -2.812700e+02
-12 3043     -4.220500e+02 4.721500e+02
-14 3043     2.067200e+02 -2.568600e+02
-0 3044     4.668900e+02 2.929900e+02
-1 3044     7.964900e+02 1.744600e+02
-6 3044     1.703200e+02 4.018800e+02
-7 3044     2.678199e+02 4.306700e+02
-10 3044     4.235601e+02 5.354000e+02
-0 3045     2.081300e+02 -4.190002e+00
-1 3045     3.626400e+02 -3.687000e+01
-7 3045     1.220400e+02 1.439600e+02
-10 3045     1.475500e+02 1.579100e+02
-13 3045     5.554900e+02 -2.080400e+02
-15 3045     2.486899e+02 1.598700e+02
-0 3046     7.687000e+01 -6.290002e+01
-1 3046     2.144600e+02 -5.498999e+01
-7 3046     4.340027e+00 6.501001e+01
-8 3046     2.380700e+02 -6.171002e+01
-0 3047     -1.008800e+02 -5.631899e+02
-1 3047     -1.007600e+02 -4.768800e+02
-6 3047     6.215002e+01 -6.885601e+02
-7 3047     -8.598999e+01 -4.728000e+02
-0 3048     9.122998e+01 5.005800e+02
-1 3048     4.733300e+02 4.869200e+02
-2 3048     -2.080100e+02 2.614600e+02
-7 3048     -1.385000e+02 5.778100e+02
-14 3048     4.013300e+02 -2.317900e+02
-0 3049     -2.369000e+01 4.888900e+02
-1 3049     3.499399e+02 5.040600e+02
-6 3049     -5.031000e+02 5.022500e+02
-7 3049     -2.481000e+02 5.544900e+02
-11 3049     1.265100e+02 -2.740000e+02
-14 3049     2.910300e+02 -2.477300e+02
-0 3050     -2.369000e+01 4.888900e+02
-1 3050     3.499399e+02 5.040600e+02
-2 3050     -3.123900e+02 2.471000e+02
-6 3050     -5.031000e+02 5.022500e+02
-7 3050     -2.481000e+02 5.544900e+02
-11 3050     1.265100e+02 -2.740000e+02
-14 3050     2.910300e+02 -2.477300e+02
-0 3051     2.103400e+02 4.235000e+02
-1 3051     5.810699e+02 3.761800e+02
-7 3051     -1.525000e+01 5.117800e+02
-11 3051     3.446500e+02 -3.230900e+02
-13 3051     3.580699e+02 1.167700e+02
-14 3051     5.211300e+02 -3.081600e+02
-0 3052     3.643600e+02 3.380600e+02
-1 3052     7.149200e+02 2.473100e+02
-6 3052     -1.021997e+01 4.098300e+02
-7 3052     1.504200e+02 4.514200e+02
-10 3052     2.992400e+02 5.795400e+02
-0 3053     4.138600e+02 -1.053000e+02
-1 3053     5.544399e+02 -2.076000e+02
-6 3053     4.015100e+02 1.494000e+01
-7 3053     3.250100e+02 7.102002e+01
-10 3053     3.953300e+02 6.250000e+01
-15 3053     5.491000e+02 4.900000e+01
-0 3054     7.700195e-01 -1.054100e+02
-1 3054     1.301600e+02 -7.312000e+01
-6 3054     4.469971e+00 -1.024900e+02
-7 3054     -6.627002e+01 8.250000e+00
-0 3055     9.363000e+01 2.669200e+02
-1 3055     4.018000e+02 2.511000e+02
-6 3055     -2.751800e+02 2.576400e+02
-7 3055     -9.428003e+01 3.487900e+02
-9 3055     -2.425100e+02 1.071000e+02
-11 3055     2.398400e+02 -4.738000e+02
-12 3055     -1.339500e+02 2.711700e+02
-13 3055     2.943199e+02 -2.100000e+01
-14 3055     4.430400e+02 -4.803199e+02
-0 3056     6.022998e+01 2.300100e+02
-1 3056     3.540800e+02 2.242100e+02
-5 3056     5.061500e+02 -4.405601e+02
-6 3056     -2.883400e+02 2.072200e+02
-7 3056     -1.188200e+02 3.094900e+02
-10 3056     -4.656000e+01 4.186400e+02
-13 3056     2.767000e+02 -5.422998e+01
-14 3056     4.209000e+02 -5.225800e+02
-0 3057     -4.515002e+01 -5.760010e+00
-1 3057     1.203000e+02 3.522998e+01
-6 3057     -9.864001e+01 -1.058002e+01
-7 3057     -1.330800e+02 9.692001e+01
-8 3057     9.871002e+01 -5.329999e+01
-10 3057     -1.450300e+02 1.296600e+02
-12 3057     -8.273999e+01 4.542999e+01
-0 3058     -6.569000e+01 -6.632001e+01
-1 3058     8.207001e+01 -1.683002e+01
-4 3058     -3.102300e+02 -3.579800e+02
-7 3058     -1.426600e+02 3.306000e+01
-10 3058     -1.624500e+02 5.715997e+01
-13 3058     3.170500e+02 -2.871500e+02
-15 3058     -1.136800e+02 3.796997e+01
-0 3059     -7.174000e+02 -3.620500e+02
-1 3059     -5.662000e+02 -1.057200e+02
-7 3059     -7.890600e+02 -4.098200e+02
-0 3060     1.162500e+02 4.582400e+02
-1 3060     4.889600e+02 4.368900e+02
-2 3060     -1.810200e+02 2.134800e+02
-3 3060     -3.171300e+02 -1.185900e+02
-5 3060     5.184500e+02 -1.918100e+02
-6 3060     -3.428600e+02 4.913200e+02
-7 3060     -1.091800e+02 5.373500e+02
-8 3060     -6.956000e+01 1.631600e+02
-12 3060     -1.732000e+02 4.759200e+02
-14 3060     4.270900e+02 -2.751900e+02
-0 3061     -7.790002e+01 4.967800e+02
-1 3061     2.954700e+02 5.253800e+02
-5 3061     3.282100e+02 -1.537600e+02
-11 3061     7.783002e+01 -2.685200e+02
-13 3061     1.287100e+02 1.630300e+02
-0 3062     -2.526000e+02 4.166700e+02
-1 3062     9.942999e+01 4.885800e+02
-2 3062     -5.320000e+02 1.595700e+02
-7 3062     -4.672500e+02 4.541000e+02
-13 3062     -9.809998e+00 8.648999e+01
-0 3063     6.368300e+02 -2.430500e+02
-1 3063     7.736801e+02 -4.335400e+02
-7 3063     5.343500e+02 -3.784998e+01
-12 3063     6.765601e+02 -8.473999e+01
-0 3064     6.244000e+02 -2.354700e+02
-1 3064     7.632500e+02 -4.208100e+02
-12 3064     6.608000e+02 -8.053003e+01
-0 3065     -2.347100e+02 4.652800e+02
-1 3065     1.285200e+02 5.321300e+02
-2 3065     -5.155800e+02 2.193100e+02
-7 3065     -4.557400e+02 5.073600e+02
-0 3066     -3.421900e+02 8.409000e+01
-1 3066     -8.733002e+01 1.940600e+02
-8 3066     -3.502400e+02 -1.687900e+02
-10 3066     -5.040200e+02 2.049800e+02
-13 3066     -4.228003e+01 -2.028000e+02
-0 3067     2.328300e+02 -5.090027e+00
-1 3067     3.888500e+02 -4.570001e+01
-7 3067     1.453500e+02 1.460000e+02
-10 3067     1.766100e+02 1.589900e+02
-15 3067     2.830699e+02 1.620900e+02
-0 3068     -4.213100e+02 9.700012e+00
-1 3068     -1.859000e+02 1.462100e+02
-13 3068     -9.632001e+01 -2.711400e+02
-15 3068     -5.972900e+02 9.072000e+01
-0 3069     2.097200e+02 3.879700e+02
-1 3069     5.688800e+02 3.399800e+02
-0 3070     4.538500e+02 2.998300e+02
-1 3070     7.854399e+02 1.854600e+02
-7 3070     2.536400e+02 4.352100e+02
-10 3070     4.077100e+02 5.427600e+02
-0 3071     1.028900e+02 9.723001e+01
-1 3071     2.925800e+02 9.416000e+01
-4 3071     -2.160500e+02 -4.943900e+02
-7 3071     -1.099976e+00 2.250800e+02
-8 3071     2.056700e+02 7.072000e+01
-15 3071     9.240997e+01 2.838300e+02
-0 3072     -3.309998e+00 1.091200e+02
-1 3072     1.956500e+02 1.353200e+02
-6 3072     -9.845999e+01 1.322700e+02
-7 3072     -1.123000e+02 2.181400e+02
-10 3072     -1.089500e+02 2.678900e+02
-12 3072     -7.150000e+01 1.866700e+02
-15 3072     -5.273999e+01 2.855800e+02
-0 3073     1.224900e+02 7.101001e+01
-1 3073     3.012200e+02 6.315997e+01
-6 3073     7.469000e+01 1.360000e+02
-7 3073     2.503003e+01 2.042300e+02
-8 3073     2.346700e+02 5.364999e+01
-10 3073     4.128003e+01 2.361100e+02
-15 3073     1.220300e+02 2.509300e+02
-0 3074     1.224900e+02 7.101001e+01
-1 3074     3.012200e+02 6.315997e+01
-6 3074     7.469000e+01 1.360000e+02
-7 3074     2.503003e+01 2.042300e+02
-8 3074     2.346700e+02 5.364999e+01
-10 3074     4.128003e+01 2.361100e+02
-15 3074     1.220300e+02 2.509300e+02
-0 3075     1.556600e+02 6.170001e+01
-1 3075     3.313500e+02 4.414001e+01
-2 3075     2.810500e+02 1.199300e+02
-6 3075     1.133200e+02 1.362700e+02
-7 3075     5.978003e+01 2.003300e+02
-8 3075     2.639700e+02 5.160999e+01
-10 3075     8.089001e+01 2.290600e+02
-15 3075     1.685900e+02 2.429500e+02
-0 3076     2.940800e+02 -9.000244e-01
-1 3076     4.570800e+02 -6.157001e+01
-7 3076     1.997200e+02 1.572600e+02
-10 3076     2.472200e+02 1.703800e+02
-15 3076     3.683101e+02 1.761800e+02
-0 3077     5.625200e+02 -9.530029e+00
-1 3077     7.874399e+02 -1.682200e+02
-6 3077     4.106900e+02 1.077700e+02
-7 3077     4.150300e+02 1.623000e+02
-10 3077     5.598700e+02 1.895900e+02
-12 3077     4.957800e+02 1.191600e+02
-15 3077     7.560500e+02 1.999300e+02
-0 3078     2.027700e+02 7.190002e+00
-1 3078     3.611801e+02 -2.409003e+01
-6 3078     1.820800e+02 9.091998e+01
-10 3078     1.400400e+02 1.707600e+02
-0 3079     5.693101e+02 -1.829999e+01
-1 3079     7.916300e+02 -1.794100e+02
-10 3079     5.686700e+02 1.803300e+02
-13 3079     7.919301e+02 -2.207500e+02
-15 3079     7.662200e+02 1.891100e+02
-0 3080     1.225200e+02 6.969971e+00
-1 3080     2.797500e+02 2.001953e-02
-2 3080     2.769301e+02 6.638000e+01
-7 3080     3.777002e+01 1.419700e+02
-10 3080     4.790997e+01 1.616400e+02
-15 3080     1.300100e+02 1.634700e+02
-0 3081     3.109900e+02 -2.745001e+01
-1 3081     4.677100e+02 -9.391998e+01
-6 3081     2.844900e+02 7.467999e+01
-7 3081     2.191899e+02 1.326500e+02
-10 3081     2.690000e+02 1.415300e+02
-15 3081     3.952300e+02 1.419900e+02
-0 3082     5.459301e+02 -2.940002e+01
-1 3082     7.616500e+02 -1.829300e+02
-15 3082     7.352500e+02 1.703700e+02
-0 3083     3.485100e+02 -5.958002e+01
-1 3083     4.994399e+02 -1.394600e+02
-10 3083     3.157600e+02 1.085100e+02
-0 3084     1.720601e+02 -4.067999e+01
-1 3084     3.144800e+02 -6.208002e+01
-2 3084     3.404900e+02 2.791998e+01
-6 3084     1.714600e+02 3.029999e+01
-7 3084     9.422998e+01 1.027100e+02
-10 3084     1.098000e+02 1.114500e+02
-0 3085     4.124800e+02 -1.009600e+02
-1 3085     5.546500e+02 -2.025300e+02
-6 3085     3.963600e+02 1.935999e+01
-7 3085     3.228700e+02 7.496997e+01
-10 3085     3.937400e+02 6.796997e+01
-12 3085     4.430500e+02 4.989001e+01
-0 3086     3.586000e+02 -1.093200e+02
-1 3086     4.940000e+02 -1.927900e+02
-0 3087     -1.133500e+02 6.250000e+00
-1 3087     6.517999e+01 6.519000e+01
-7 3087     -2.098300e+02 9.331000e+01
-10 3087     -2.257300e+02 1.367500e+02
-12 3087     -1.814000e+02 2.723999e+01
-15 3087     -1.862400e+02 1.297000e+02
-0 3088     1.994399e+02 -1.042900e+02
-1 3088     3.245400e+02 -1.340500e+02
-6 3088     2.154700e+02 -3.516998e+01
-12 3088     2.378300e+02 7.260010e+00
-13 3088     5.589100e+02 -2.964500e+02
-15 3088     2.503900e+02 2.213000e+01
-0 3089     1.710200e+02 -1.001100e+02
-1 3089     2.967000e+02 -1.206200e+02
-6 3089     1.869900e+02 -3.778998e+01
-7 3089     1.021100e+02 4.309003e+01
-10 3089     1.147200e+02 4.297998e+01
-15 3089     2.104900e+02 2.437000e+01
-0 3090     -9.508002e+01 -2.278998e+01
-1 3090     7.113000e+01 3.273999e+01
-2 3090     2.097998e+01 -5.590002e+01
-6 3090     -1.623100e+02 -5.348999e+01
-7 3090     -1.837900e+02 6.915002e+01
-10 3090     -2.013800e+02 1.046600e+02
-15 3090     -1.583300e+02 9.317999e+01
-0 3091     -9.508002e+01 -2.278998e+01
-1 3091     7.113000e+01 3.273999e+01
-6 3091     -1.623100e+02 -5.348999e+01
-0 3092     1.186900e+02 -1.106400e+02
-1 3092     2.416200e+02 -1.147200e+02
-2 3092     3.121700e+02 -6.000000e+01
-10 3092     5.556000e+01 2.585999e+01
-15 3092     1.406400e+02 3.070007e+00
-0 3093     -3.944000e+01 -7.653998e+01
-1 3093     1.030500e+02 -3.433002e+01
-7 3093     -1.133700e+02 2.832001e+01
-15 3093     -7.688000e+01 2.795001e+01
-0 3094     3.903003e+01 -1.021100e+02
-1 3094     1.679500e+02 -8.219000e+01
-6 3094     4.415002e+01 -8.533002e+01
-7 3094     -2.851001e+01 1.783002e+01
-9 3094     8.301001e+01 3.128003e+01
-10 3094     -3.753003e+01 2.660999e+01
-15 3094     3.148999e+01 3.869995e+00
-0 3095     -1.372700e+02 -1.096600e+02
-1 3095     1.909973e+00 -3.756000e+01
-2 3095     2.253003e+01 -1.454000e+02
-6 3095     -1.646200e+02 -1.637400e+02
-10 3095     -2.410200e+02 -7.199707e-01
-12 3095     -1.611900e+02 -1.049700e+02
-13 3095     2.568199e+02 -3.314100e+02
-0 3096     -6.407001e+01 -1.359500e+02
-1 3096     6.119000e+01 -8.420001e+01
-15 3096     -1.024500e+02 -5.577002e+01
-0 3097     -7.417999e+01 -1.479800e+02
-1 3097     4.678998e+01 -9.223999e+01
-6 3097     -6.563000e+01 -1.789100e+02
-7 3097     -1.345100e+02 -4.847998e+01
-10 3097     -1.634200e+02 -3.817999e+01
-15 3097     -1.149800e+02 -7.328003e+01
-0 3098     -3.654999e+01 -1.926500e+02
-1 3098     6.464001e+01 -1.457800e+02
-6 3098     7.450012e+00 -2.090300e+02
-7 3098     -8.488000e+01 -8.378003e+01
-10 3098     -1.153700e+02 -8.602002e+01
-12 3098     2.659973e+00 -1.585600e+02
-15 3098     -5.912000e+01 -1.287100e+02
-0 3099     9.642999e+01 -2.406500e+02
-1 3099     1.742400e+02 -2.333400e+02
-7 3099     5.842999e+01 -1.053700e+02
-10 3099     4.328998e+01 -1.268000e+02
-15 3099     1.263600e+02 -1.757900e+02
-0 3100     6.074800e+02 1.189300e+02
-1 3100     8.747800e+02 -4.696997e+01
-2 3100     5.173900e+02 1.023600e+02
-6 3100     4.332900e+02 2.714400e+02
-7 3100     4.425800e+02 2.957300e+02
-8 3100     4.834301e+02 5.545999e+01
-9 3100     3.039500e+02 1.854500e+02
-10 3100     6.022700e+02 3.439100e+02
-12 3100     5.172600e+02 2.810000e+02
-13 3100     8.154000e+02 -9.184998e+01
-15 3100     8.041200e+02 3.860600e+02
-0 3101     5.992900e+02 -3.138000e+01
-1 3101     8.183700e+02 -2.027300e+02
-7 3101     4.546400e+02 1.490400e+02
-0 3102     6.601899e+02 -5.525000e+01
-1 3102     8.749600e+02 -2.487200e+02
-7 3102     5.176000e+02 1.382900e+02
-0 3103     5.605400e+02 -2.134998e+01
-1 3103     7.811801e+02 -1.795300e+02
-7 3103     4.150900e+02 1.505900e+02
-10 3103     5.586000e+02 1.759700e+02
-13 3103     7.836899e+02 -2.250300e+02
-15 3103     7.544100e+02 1.835500e+02
-0 3104     2.149100e+02 -2.978003e+01
-1 3104     3.622200e+02 -6.452002e+01
-10 3104     1.586100e+02 1.289000e+02
-15 3104     2.619500e+02 1.256800e+02
-0 3105     3.641801e+02 -1.233900e+02
-1 3105     4.936300e+02 -2.084900e+02
-7 3105     2.841200e+02 4.722998e+01
-10 3105     3.396000e+02 3.596997e+01
-15 3105     4.816801e+02 1.760999e+01
-0 3106     -3.797998e+01 -1.044000e+02
-1 3106     9.347998e+01 -6.116998e+01
-3 3106     6.442999e+01 -4.023600e+02
-7 3106     -1.050900e+02 2.140015e+00
-10 3106     -1.261300e+02 1.559998e+01
-15 3106     -7.217999e+01 -9.700012e+00
-0 3107     3.095000e+02 -2.430300e+02
-1 3107     3.969100e+02 -3.091400e+02
-6 3107     3.617500e+02 -1.595400e+02
-7 3107     2.550500e+02 -7.681000e+01
-10 3107     2.895500e+02 -1.059000e+02
-12 3107     3.919100e+02 -1.284400e+02
-15 3107     4.207300e+02 -1.520200e+02
-0 3108     -8.841998e+01 -1.476200e+02
-1 3108     3.351001e+01 -8.767999e+01
-7 3108     -1.488600e+02 -5.076001e+01
-10 3108     -1.801400e+02 -3.942999e+01
-0 3109     5.489200e+02 2.250100e+02
-1 3109     8.470400e+02 8.342999e+01
-7 3109     3.702800e+02 3.878500e+02
-10 3109     5.256899e+02 4.633900e+02
-15 3109     7.098800e+02 5.262800e+02
-0 3110     5.863900e+02 8.251999e+01
-1 3110     8.411899e+02 -7.921997e+01
-6 3110     4.164400e+02 2.223100e+02
-7 3110     4.269600e+02 2.564700e+02
-8 3110     4.720601e+02 1.660001e+01
-9 3110     2.938800e+02 1.443700e+02
-12 3110     5.016100e+02 2.324500e+02
-15 3110     7.789700e+02 3.316600e+02
-0 3111     5.746100e+02 1.802002e+01
-1 3111     8.084800e+02 -1.432500e+02
-10 3111     5.715300e+02 2.228200e+02
-15 3111     7.695200e+02 2.405500e+02
-0 3112     5.851400e+02 -3.388000e+01
-1 3112     8.030500e+02 -2.010400e+02
-10 3112     5.888800e+02 1.633300e+02
-13 3112     8.105200e+02 -2.330600e+02
-0 3113     1.227500e+02 -6.240002e+01
-1 3113     2.590400e+02 -6.833002e+01
-0 3114     -1.267800e+02 -1.350800e+02
-1 3114     2.469971e+00 -6.442999e+01
-6 3114     -1.360700e+02 -1.854600e+02
-12 3114     -1.357600e+02 -1.280100e+02
-15 3114     -1.875500e+02 -6.308002e+01
-0 3115     2.320800e+02 -5.299700e+02
-1 3115     2.296899e+02 -5.637700e+02
-0 3116     5.619500e+02 7.409003e+01
-1 3116     8.128400e+02 -8.058002e+01
-6 3116     3.874700e+02 2.027000e+02
-7 3116     4.033000e+02 2.422800e+02
-10 3116     5.525300e+02 2.860600e+02
-12 3116     4.740000e+02 2.126900e+02
-15 3116     7.455900e+02 3.153600e+02
-0 3117     5.605400e+02 5.338000e+01
-1 3117     8.051100e+02 -1.017000e+02
-6 3117     3.910000e+02 1.784700e+02
-7 3117     4.046899e+02 2.228000e+02
-10 3117     5.519900e+02 2.623500e+02
-13 3117     7.741200e+02 -1.569900e+02
-15 3117     7.455100e+02 2.869600e+02
-0 3118     -6.684003e+01 -5.377002e+01
-1 3118     8.527002e+01 -5.239990e+00
-7 3118     -1.469900e+02 4.484998e+01
-15 3118     -1.168300e+02 5.433002e+01
-0 3119     -4.620001e+01 -6.035999e+01
-1 3119     1.027300e+02 -1.689001e+01
-7 3119     -1.248700e+02 4.226001e+01
-10 3119     -1.405300e+02 6.638000e+01
-15 3119     -8.856000e+01 4.915002e+01
-0 3120     1.246997e+01 -1.187400e+02
-1 3120     1.362600e+02 -8.979999e+01
-4 3120     -3.587900e+02 -4.206900e+02
-6 3120     2.602002e+01 -1.112700e+02
-12 3120     3.190002e+01 -6.040002e+01
-15 3120     -1.890015e+00 -2.229999e+01
-0 3121     -9.203003e+01 -1.113800e+02
-1 3121     4.432001e+01 -5.281000e+01
-7 3121     -1.618200e+02 -1.731000e+01
-10 3121     -1.881200e+02 2.340027e+00
-15 3121     -1.426700e+02 -2.646002e+01
-0 3122     6.180000e+02 -3.547200e+02
-1 3122     7.046600e+02 -5.396100e+02
-0 3123     5.248199e+02 -3.555500e+02
-1 3123     6.018199e+02 -5.035500e+02
-0 3124     5.095400e+02 2.713700e+02
-1 3124     8.342800e+02 1.402000e+02
-7 3124     3.136600e+02 4.174300e+02
-10 3124     4.756100e+02 5.144100e+02
-0 3125     5.319000e+01 -1.284300e+02
-1 3125     1.718300e+02 -1.116200e+02
-7 3125     -8.469971e+00 -4.210022e+00
-15 3125     5.392999e+01 -2.979999e+01
-0 3126     5.645200e+02 -2.906200e+02
-1 3126     6.727000e+02 -4.539301e+02
-6 3126     5.692600e+02 -1.647900e+02
-0 3127     5.485800e+02 -3.862700e+02
-1 3127     6.146700e+02 -5.436000e+02
-0 3128     9.835999e+01 -1.191500e+02
-1 3128     2.194700e+02 -1.173300e+02
-3 3128     2.025699e+02 -3.777800e+02
-7 3128     3.376001e+01 1.159003e+01
-10 3128     3.215002e+01 1.356000e+01
-13 3128     4.732500e+02 -3.169600e+02
-15 3128     1.131700e+02 -1.120001e+01
-0 3129     1.178003e+01 -2.057000e+02
-1 3129     1.057500e+02 -1.727100e+02
-7 3129     -3.388000e+01 -8.771002e+01
-10 3129     -5.846002e+01 -9.537000e+01
-13 3129     4.161899e+02 -3.994700e+02
-15 3129     6.859985e+00 -1.393400e+02
-0 3130     -8.933002e+01 4.807300e+02
-1 3130     2.796899e+02 5.121200e+02
-2 3130     -3.740100e+02 2.377600e+02
-4 3130     9.969971e+00 -3.052400e+02
-5 3130     3.161801e+02 -1.706800e+02
-6 3130     -5.773300e+02 4.782200e+02
-7 3130     -3.121400e+02 5.388600e+02
-8 3130     -2.278800e+02 1.777900e+02
-13 3130     1.200800e+02 1.497900e+02
-14 3130     2.273400e+02 -2.581200e+02
-0 3131     2.266200e+02 4.707400e+02
-1 3131     6.116300e+02 4.210600e+02
-2 3131     -8.515002e+01 2.291900e+02
-5 3131     6.296400e+02 -1.756000e+02
-6 3131     -2.266600e+02 5.304700e+02
-7 3131     -5.690002e+00 5.611900e+02
-8 3131     1.009998e+01 1.776300e+02
-9 3131     -2.220400e+02 2.703900e+02
-11 3131     3.558199e+02 -2.795100e+02
-12 3131     -6.028003e+01 5.059200e+02
-14 3131     5.344800e+02 -2.570200e+02
-0 3132     3.283400e+02 4.515700e+02
-1 3132     7.204800e+02 3.739700e+02
-2 3132     5.640015e+00 2.110200e+02
-7 3132     9.228003e+01 5.522500e+02
-8 3132     8.488000e+01 1.642500e+02
-9 3132     -1.453600e+02 2.578900e+02
-11 3132     4.519399e+02 -2.914400e+02
-12 3132     4.715997e+01 4.993500e+02
-13 3132     4.521899e+02 1.487700e+02
-14 3132     6.379200e+02 -2.717200e+02
-0 3133     7.747998e+01 4.978900e+02
-1 3133     4.582000e+02 4.877800e+02
-2 3133     -2.203900e+02 2.578000e+02
-7 3133     -1.512700e+02 5.738800e+02
-9 3133     -3.378800e+02 2.910600e+02
-11 3133     2.169100e+02 -2.627900e+02
-0 3134     3.438400e+02 5.373300e+02
-1 3134     7.634600e+02 4.620000e+02
-2 3134     7.140015e+00 3.053100e+02
-3 3134     -1.371200e+02 -2.859003e+01
-6 3134     -1.169200e+02 6.382000e+02
-8 3134     8.694000e+01 2.395100e+02
-9 3134     -1.472000e+02 3.392200e+02
-12 3134     4.626001e+01 5.985400e+02
-13 3134     4.605601e+02 2.229400e+02
-14 3134     6.452600e+02 -1.813100e+02
-0 3135     -3.071900e+02 -1.314300e+02
-1 3135     -1.319500e+02 -1.558002e+01
-15 3135     -4.232100e+02 -8.440997e+01
-0 3136     5.445000e+02 6.447998e+01
-1 3136     7.918900e+02 -8.523999e+01
-7 3136     3.869301e+02 2.305800e+02
-10 3136     5.329200e+02 2.738100e+02
-12 3136     4.558101e+02 1.943600e+02
-0 3137     1.707300e+02 2.299805e-01
-1 3137     3.256801e+02 -2.089001e+01
-7 3137     8.557001e+01 1.429800e+02
-13 3137     5.241500e+02 -2.066000e+02
-15 3137     1.964200e+02 1.609500e+02
-0 3138     -2.800000e+01 -1.421900e+02
-1 3138     9.215002e+01 -1.007100e+02
-7 3138     -8.914001e+01 -3.457001e+01
-10 3138     -1.108600e+02 -2.694000e+01
-15 3138     -5.332001e+01 -5.947998e+01
-0 3139     5.479200e+02 3.176001e+01
-1 3139     7.852500e+02 -1.201400e+02
-6 3139     3.811200e+02 1.486600e+02
-7 3139     3.948700e+02 1.992700e+02
-10 3139     5.393500e+02 2.360700e+02
-12 3139     4.680400e+02 1.595900e+02
-13 3139     7.635601e+02 -1.783500e+02
-0 3140     5.545601e+02 -6.239990e+00
-1 3140     7.807100e+02 -1.625500e+02
-7 3140     4.066801e+02 1.638700e+02
-10 3140     5.500601e+02 1.928200e+02
-13 3140     7.746100e+02 -2.121600e+02
-0 3141     -4.106900e+02 2.403400e+02
-1 3141     -9.556000e+01 3.568400e+02
-7 3141     -6.047700e+02 2.472200e+02
-11 3141     -2.266300e+02 -4.995800e+02
-13 3141     -1.429800e+02 -7.567999e+01
-0 3142     5.583500e+02 -1.409003e+01
-1 3142     7.818600e+02 -1.718100e+02
-7 3142     4.115500e+02 1.569300e+02
-10 3142     5.553900e+02 1.839700e+02
-15 3142     7.508400e+02 1.932200e+02
-0 3143     -4.319000e+02 1.807001e+01
-1 3143     -1.926200e+02 1.566800e+02
-2 3143     -5.800600e+02 -2.660000e+02
-8 3143     -4.137100e+02 -2.335300e+02
-15 3143     -6.128600e+02 1.008700e+02
-0 3144     -1.870700e+02 -4.946400e+02
-1 3144     -1.541400e+02 -3.855100e+02
-6 3144     -8.253000e+01 -6.584000e+02
-7 3144     -1.902900e+02 -4.253100e+02
-0 3145     -2.188600e+02 -5.248400e+02
-1 3145     -1.939500e+02 -4.023900e+02
-6 3145     -9.904999e+01 -7.050601e+02
-7 3145     -2.152500e+02 -4.609700e+02
-10 3145     -2.889200e+02 -4.888700e+02
-0 3146     6.234399e+02 1.492999e+01
-1 3146     8.585300e+02 -1.620200e+02
-7 3146     4.721500e+02 1.985700e+02
-15 3146     8.385500e+02 2.430700e+02
-0 3147     5.986500e+02 -5.030029e+00
-1 3147     8.262200e+02 -1.751000e+02
-6 3147     4.550300e+02 1.280300e+02
-12 3147     5.374500e+02 1.385300e+02
-13 3147     8.212400e+02 -2.046800e+02
-0 3148     6.556200e+02 -1.057200e+02
-1 3148     8.542500e+02 -3.002200e+02
-8 3148     5.773900e+02 -1.178400e+02
-10 3148     6.766500e+02 8.769000e+01
-0 3149     -7.039978e+00 -8.885999e+01
-1 3149     1.294200e+02 -5.567999e+01
-6 3149     -1.688000e+01 -8.859003e+01
-7 3149     -7.947998e+01 2.215997e+01
-10 3149     -9.387000e+01 3.790002e+01
-15 3149     -3.228998e+01 1.612000e+01
-0 3150     6.726300e+02 -2.801400e+02
-1 3150     7.993300e+02 -4.856600e+02
-12 3150     7.278900e+02 -1.108000e+02
-0 3151     -2.014900e+02 -5.202900e+02
-1 3151     -1.768000e+02 -4.041400e+02
-6 3151     -8.214999e+01 -6.928800e+02
-7 3151     -1.990100e+02 -4.536300e+02
-9 3151     2.487000e+01 -4.646000e+02
-0 3152     5.078000e+02 2.850300e+02
-1 3152     8.367800e+02 1.549500e+02
-6 3152     2.272700e+02 4.056400e+02
-7 3152     3.099301e+02 4.301200e+02
-8 3152     3.270800e+02 1.237600e+02
-10 3152     4.725699e+02 5.306100e+02
-12 3152     3.342400e+02 4.020900e+02
-13 3152     6.746700e+02 3.287000e+01
-0 3153     6.113199e+02 7.048999e+01
-1 3153     8.630601e+02 -9.937000e+01
-2 3153     5.341801e+02 5.484998e+01
-3 3153     3.995800e+02 -2.550600e+02
-15 3153     8.148600e+02 3.189400e+02
-0 3154     6.316500e+02 -2.953400e+02
-1 3154     7.448199e+02 -4.849800e+02
-7 3154     5.427900e+02 -8.416998e+01
-12 3154     6.977300e+02 -1.348600e+02
-0 3155     2.987000e+01 -5.041998e+01
-1 3155     1.734900e+02 -2.853003e+01
-3 3155     1.084200e+02 -3.268900e+02
-7 3155     -4.664001e+01 6.822998e+01
-10 3155     -5.394000e+01 8.585999e+01
-15 3155     1.233002e+01 7.260999e+01
-0 3156     4.651200e+02 3.125500e+02
-1 3156     8.009301e+02 1.959600e+02
-10 3156     4.200900e+02 5.590200e+02
-0 3157     2.162200e+02 -1.194000e+01
-1 3157     3.691200e+02 -4.721002e+01
-7 3157     1.311200e+02 1.375600e+02
-10 3157     1.581600e+02 1.496600e+02
-13 3157     5.627900e+02 -2.141400e+02
-15 3157     2.609900e+02 1.505300e+02
-0 3158     5.859003e+01 6.875000e+01
-1 3158     2.383500e+02 7.935001e+01
-6 3158     4.270020e+00 1.134600e+02
-7 3158     -3.859998e+01 1.912500e+02
-10 3158     -3.266998e+01 2.270400e+02
-15 3158     3.529999e+01 2.392400e+02
-0 3159     4.677002e+01 -2.700195e-01
-1 3159     2.044100e+02 1.546002e+01
-7 3159     -3.702002e+01 1.217500e+02
-10 3159     -3.910999e+01 1.455400e+02
-15 3159     2.828003e+01 1.431900e+02
-0 3160     5.155100e+02 -3.091000e+02
-1 3160     6.113900e+02 -4.536000e+02
-0 3161     -2.517999e+01 -1.597300e+02
-1 3161     8.903998e+01 -1.186600e+02
-7 3161     -8.254999e+01 -5.071002e+01
-10 3161     -1.054000e+02 -4.675000e+01
-15 3161     -4.725000e+01 -8.289001e+01
-0 3162     5.139700e+02 2.456300e+02
-1 3162     8.305200e+02 1.116300e+02
-6 3162     2.448900e+02 3.639500e+02
-7 3162     3.215100e+02 3.931900e+02
-8 3162     3.400900e+02 9.401001e+01
-12 3162     3.501899e+02 3.628100e+02
-15 3162     6.617500e+02 5.488300e+02
-0 3163     5.476000e+02 5.669983e+00
-1 3163     7.767200e+02 -1.477700e+02
-7 3163     3.980900e+02 1.739600e+02
-0 3164     6.593101e+02 -1.004200e+02
-1 3164     8.599200e+02 -2.959200e+02
-2 3164     6.362400e+02 -9.729999e+01
-6 3164     5.549200e+02 4.776001e+01
-7 3164     5.227300e+02 9.460999e+01
-10 3164     6.802400e+02 9.459003e+01
-12 3164     6.337600e+02 5.733002e+01
-0 3165     1.131000e+01 -7.510999e+01
-1 3165     1.499399e+02 -4.756000e+01
-2 3165     1.840100e+02 -5.520001e+01
-7 3165     -6.128003e+01 3.982001e+01
-8 3165     1.781800e+02 -9.313000e+01
-9 3165     4.852002e+01 4.578998e+01
-13 3165     3.904500e+02 -2.865100e+02
-15 3165     -9.130005e+00 3.672998e+01
-0 3166     1.030600e+02 -1.125100e+02
-1 3166     2.259301e+02 -1.116400e+02
-2 3166     2.968199e+02 -6.490997e+01
-6 3166     1.203600e+02 -7.309003e+01
-7 3166     3.764001e+01 1.991998e+01
-8 3166     2.709800e+02 -1.030200e+02
-10 3166     3.784003e+01 2.197998e+01
-15 3166     1.198300e+02 -1.320007e+00
-0 3167     1.245900e+02 -7.715002e+01
-1 3167     2.563900e+02 -8.345001e+01
-7 3167     5.371997e+01 5.871002e+01
-8 3167     2.816400e+02 -6.502002e+01
-0 3168     5.528600e+02 1.107001e+01
-1 3168     7.838400e+02 -1.437300e+02
-0 3169     2.149600e+02 5.134800e+02
-1 3169     6.112400e+02 4.689800e+02
-2 3169     -9.957001e+01 2.782500e+02
-9 3169     -2.360700e+02 3.126300e+02
-11 3169     3.409000e+02 -2.435500e+02
-0 3170     2.222998e+01 5.207300e+02
-1 3170     4.054399e+02 5.253900e+02
-4 3170     2.581000e+01 -3.756700e+02
-5 3170     4.276801e+02 -1.271700e+02
-12 3170     -2.830300e+02 5.371000e+02
-13 3170     2.078900e+02 1.889500e+02
-0 3171     2.881300e+02 5.708300e+02
-1 3171     7.098900e+02 5.117600e+02
-9 3171     -1.927600e+02 3.668700e+02
-11 3171     4.008199e+02 -1.901600e+02
-13 3171     4.147600e+02 2.472600e+02
-14 3171     5.877900e+02 -1.505900e+02
-0 3172     2.560601e+02 4.786300e+02
-1 3172     6.470699e+02 4.217500e+02
-2 3172     -6.021997e+01 2.394900e+02
-6 3172     -1.970400e+02 5.466000e+02
-7 3172     2.123999e+01 5.722300e+02
-14 3172     5.634200e+02 -2.471800e+02
-0 3173     4.428600e+02 3.021700e+02
-1 3173     7.749100e+02 1.907800e+02
-6 3173     1.358900e+02 4.044200e+02
-7 3173     2.422800e+02 4.353400e+02
-10 3173     3.945000e+02 5.446600e+02
-12 3173     2.516899e+02 3.996900e+02
-0 3174     6.101500e+02 2.919000e+01
-1 3174     8.490100e+02 -1.428300e+02
-7 3174     4.570300e+02 2.096600e+02
-10 3174     6.125900e+02 2.394900e+02
-13 3174     8.287500e+02 -1.717100e+02
-15 3174     8.178000e+02 2.608500e+02
-0 3175     2.954100e+02 3.606000e+01
-1 3175     4.713700e+02 -2.540997e+01
-7 3175     1.939700e+02 1.924500e+02
-10 3175     2.452400e+02 2.131500e+02
-13 3175     6.132300e+02 -1.705700e+02
-15 3175     3.657200e+02 2.270100e+02
-0 3176     2.121899e+02 1.196002e+01
-1 3176     3.727400e+02 -2.228998e+01
-2 3176     3.523600e+02 8.203998e+01
-4 3176     -2.933800e+02 -5.835500e+02
-7 3176     1.229000e+02 1.602900e+02
-10 3176     1.513700e+02 1.771600e+02
-13 3176     5.555000e+02 -1.938300e+02
-15 3176     2.525400e+02 1.827400e+02
-0 3177     7.378003e+01 -2.275000e+01
-1 3177     2.230800e+02 -1.457001e+01
-2 3177     2.392500e+02 2.520001e+01
-3 3177     1.457700e+02 -2.827200e+02
-7 3177     -5.659973e+00 1.044300e+02
-10 3177     -5.450012e+00 1.221000e+02
-13 3177     4.438500e+02 -2.340200e+02
-15 3177     6.765002e+01 1.163200e+02
-0 3178     1.903101e+02 -8.008002e+01
-1 3178     3.217800e+02 -1.068300e+02
-6 3178     2.003400e+02 -8.250000e+00
-7 3178     1.177400e+02 6.664001e+01
-8 3178     3.329600e+02 -5.867999e+01
-10 3178     1.355300e+02 6.831000e+01
-13 3178     5.499700e+02 -2.751100e+02
-0 3179     3.108600e+02 -1.078200e+02
-1 3179     4.397000e+02 -1.742300e+02
-10 3179     2.766600e+02 4.864001e+01
-12 3179     3.526600e+02 2.773999e+01
-13 3179     6.502300e+02 -2.927700e+02
-15 3179     4.047300e+02 3.209998e+01
-0 3180     -1.610800e+02 -7.560999e+01
-1 3180     -7.280029e+00 8.200073e-01
-7 3180     -2.413000e+02 4.630005e+00
-10 3180     -2.717300e+02 3.604999e+01
-12 3180     -2.066000e+02 -7.716998e+01
-15 3180     -2.404700e+02 1.253003e+01
-0 3181     2.506400e+02 4.744900e+02
-1 3181     6.399301e+02 4.188300e+02
-2 3181     -6.423999e+01 2.346100e+02
-5 3181     6.537800e+02 -1.707500e+02
-6 3181     -2.017400e+02 5.406900e+02
-7 3181     1.681000e+01 5.679200e+02
-11 3181     3.773800e+02 -2.751600e+02
-13 3181     3.891700e+02 1.635800e+02
-14 3181     5.587800e+02 -2.513900e+02
-0 3182     4.895200e+02 2.812700e+02
-1 3182     8.162700e+02 1.564000e+02
-6 3182     2.023300e+02 3.971300e+02
-7 3182     2.921200e+02 4.236000e+02
-8 3182     3.103300e+02 1.152300e+02
-10 3182     4.511000e+02 5.243900e+02
-12 3182     3.117700e+02 3.940700e+02
-13 3182     6.563900e+02 2.796997e+01
-0 3183     -1.026500e+02 3.716100e+02
-1 3183     2.387200e+02 4.062700e+02
-2 3183     -3.799300e+02 1.055800e+02
-5 3183     2.961801e+02 -2.888700e+02
-6 3183     -5.717600e+02 3.296600e+02
-7 3183     -3.116400e+02 4.237500e+02
-10 3183     -2.546100e+02 5.726600e+02
-13 3183     1.086200e+02 5.384998e+01
-14 3183     2.109000e+02 -3.754700e+02
-0 3184     2.255200e+02 1.619000e+01
-1 3184     3.882000e+02 -2.225000e+01
-7 3184     1.344900e+02 1.660500e+02
-10 3184     1.663100e+02 1.830600e+02
-12 3184     2.287700e+02 1.512300e+02
-13 3184     5.652700e+02 -1.897600e+02
-15 3184     2.705800e+02 1.903200e+02
-0 3185     5.725000e+02 -2.271002e+01
-1 3185     7.936500e+02 -1.851800e+02
-7 3185     4.266700e+02 1.516800e+02
-10 3185     5.726000e+02 1.757000e+02
-12 3185     5.107600e+02 1.084500e+02
-13 3185     7.959100e+02 -2.245900e+02
-15 3185     7.716500e+02 1.831300e+02
-0 3186     4.416998e+01 2.081000e+01
-1 3186     2.090300e+02 3.607001e+01
-3 3186     9.628003e+01 -2.530000e+02
-7 3186     -4.372998e+01 1.419400e+02
-10 3186     -4.463000e+01 1.698900e+02
-13 3186     4.104200e+02 -1.997000e+02
-15 3186     2.203003e+01 1.715400e+02
-0 3187     2.144800e+02 -2.142999e+01
-1 3187     3.640800e+02 -5.623999e+01
-2 3187     3.684301e+02 5.026001e+01
-3 3187     2.639301e+02 -2.565300e+02
-6 3187     2.047300e+02 6.281000e+01
-7 3187     1.312700e+02 1.276400e+02
-10 3187     1.573300e+02 1.383200e+02
-13 3187     5.628700e+02 -2.229700e+02
-15 3187     2.596600e+02 1.371700e+02
-0 3188     2.789600e+02 -1.416700e+02
-1 3188     3.946801e+02 -1.968900e+02
-7 3188     2.113900e+02 1.884003e+01
-10 3188     2.435000e+02 7.929993e+00
-0 3189     6.741998e+01 -2.257900e+02
-1 3189     1.520000e+02 -2.100600e+02
-6 3189     1.374100e+02 -2.046500e+02
-12 3189     1.375800e+02 -1.609300e+02
-13 3189     4.694100e+02 -4.115000e+02
-15 3189     8.475000e+01 -1.594500e+02
-0 3190     3.411100e+02 4.628500e+02
-1 3190     7.382500e+02 3.827300e+02
-4 3190     -3.103003e+01 -5.840800e+02
-5 3190     7.475100e+02 -1.800600e+02
-6 3190     -1.041700e+02 5.454100e+02
-7 3190     1.031400e+02 5.651500e+02
-9 3190     -1.371000e+02 2.694400e+02
-12 3190     5.850000e+01 5.134500e+02
-13 3190     4.621200e+02 1.597300e+02
-14 3190     6.498800e+02 -2.586300e+02
-0 3191     1.879600e+02 1.735000e+02
-1 3191     4.136000e+02 1.430900e+02
-7 3191     5.984003e+01 3.052500e+02
-13 3191     4.882100e+02 -6.777002e+01
-14 3191     6.931200e+02 -5.518101e+02
-15 3191     2.027900e+02 4.010400e+02
-0 3192     2.153500e+02 1.632700e+02
-1 3192     4.366500e+02 1.260600e+02
-13 3192     5.160300e+02 -7.287000e+01
-14 3192     7.303199e+02 -5.605300e+02
-15 3192     2.414100e+02 3.910000e+02
-0 3193     3.070000e+02 3.359985e+00
-1 3193     4.730601e+02 -6.165997e+01
-7 3193     2.099000e+02 1.626300e+02
-10 3193     2.605100e+02 1.774200e+02
-15 3193     3.859800e+02 1.838600e+02
-0 3194     7.598999e+01 6.549988e+00
-1 3194     2.343101e+02 1.359003e+01
-2 3194     2.299600e+02 5.403998e+01
-3 3194     1.355100e+02 -2.554400e+02
-7 3194     -8.900024e+00 1.336400e+02
-9 3194     8.073999e+01 1.394500e+02
-13 3194     4.420601e+02 -2.090200e+02
-15 3194     6.660999e+01 1.565900e+02
-0 3195     2.170001e+01 5.349976e+00
-1 3195     1.829800e+02 2.789001e+01
-2 3195     1.683700e+02 3.539001e+01
-3 3195     7.831000e+01 -2.746800e+02
-7 3195     -6.389001e+01 1.224600e+02
-9 3195     3.131000e+01 1.215000e+02
-13 3195     3.920601e+02 -2.148300e+02
-15 3195     -6.260010e+00 1.478300e+02
-0 3196     1.227500e+02 -6.240002e+01
-1 3196     2.590400e+02 -6.833002e+01
-7 3196     5.017999e+01 7.292999e+01
-10 3196     5.575000e+01 8.094000e+01
-13 3196     4.921200e+02 -2.654400e+02
-15 3196     1.394900e+02 6.890997e+01
-0 3197     3.519700e+02 5.393700e+02
-1 3197     7.739200e+02 4.623400e+02
-13 3197     4.674900e+02 2.256400e+02
-14 3197     6.537400e+02 -1.783200e+02
-0 3198     1.444900e+02 5.033300e+02
-1 3198     5.292400e+02 4.770100e+02
-5 3198     5.531500e+02 -1.421700e+02
-6 3198     -3.111300e+02 5.574800e+02
-11 3198     2.756300e+02 -2.556100e+02
-12 3198     -1.470300e+02 5.369500e+02
-13 3198     3.082000e+02 1.819500e+02
-14 3198     4.584000e+02 -2.259200e+02
-0 3199     2.402200e+02 1.280400e+02
-1 3199     4.450601e+02 8.400000e+01
-7 3199     1.238600e+02 2.730800e+02
-10 3199     1.714300e+02 3.151100e+02
-13 3199     5.496400e+02 -9.796997e+01
-15 3199     2.780800e+02 3.459000e+02
-0 3200     5.498900e+02 7.506000e+01
-1 3200     8.008800e+02 -7.548999e+01
-6 3200     3.719700e+02 1.975700e+02
-7 3200     3.909700e+02 2.418200e+02
-10 3200     5.379399e+02 2.864100e+02
-12 3200     4.592500e+02 2.073700e+02
-13 3200     7.608300e+02 -1.393000e+02
-15 3200     7.282400e+02 3.156900e+02
-0 3201     5.518900e+02 1.934003e+01
-1 3201     7.854399e+02 -1.324400e+02
-6 3201     3.892000e+02 1.359900e+02
-12 3201     4.746801e+02 1.480200e+02
-0 3202     4.532900e+02 3.257700e+02
-1 3202     7.931100e+02 2.129500e+02
-6 3202     1.443900e+02 4.357600e+02
-7 3202     2.502100e+02 4.603600e+02
-10 3202     4.057200e+02 5.735700e+02
-13 3202     6.166200e+02 6.137000e+01
-14 3202     8.506899e+02 -3.881800e+02
-0 3203     -7.488000e+01 3.237000e+01
-1 3203     1.071600e+02 7.998999e+01
-3 3203     -6.556000e+01 -3.081300e+02
-7 3203     -1.731500e+02 1.272600e+02
-10 3203     -1.835500e+02 1.706000e+02
-13 3203     2.888400e+02 -2.048700e+02
-15 3203     -1.384200e+02 1.705400e+02
-0 3204     1.469200e+02 -3.771002e+01
-1 3204     2.898199e+02 -5.109998e+01
-10 3204     8.042999e+01 1.127000e+02
-13 3204     5.090100e+02 -2.409000e+02
-15 3204     1.688700e+02 1.061200e+02
-0 3205     -1.131600e+02 4.358300e+02
-1 3205     2.444399e+02 4.740400e+02
-2 3205     -3.936000e+02 1.835700e+02
-3 3205     -5.256700e+02 -1.457700e+02
-4 3205     -1.434003e+01 -2.872200e+02
-5 3205     2.896700e+02 -2.190200e+02
-7 3205     -3.299400e+02 4.895700e+02
-8 3205     -2.440200e+02 1.356100e+02
-11 3205     4.692999e+01 -3.220500e+02
-12 3205     -4.168100e+02 4.152100e+02
-13 3205     1.012400e+02 1.093300e+02
-14 3205     2.033101e+02 -3.060200e+02
-0 3206     4.943700e+02 2.734400e+02
-1 3206     8.188101e+02 1.464800e+02
-6 3206     2.115400e+02 3.880700e+02
-7 3206     2.982300e+02 4.164500e+02
-8 3206     3.164400e+02 1.094600e+02
-10 3206     4.574900e+02 5.154600e+02
-13 3206     6.621200e+02 2.144000e+01
-0 3207     5.255800e+02 1.316200e+02
-1 3207     7.935500e+02 -8.830017e+00
-7 3207     3.590200e+02 2.919100e+02
-10 3207     5.045800e+02 3.494000e+02
-13 3207     7.292000e+02 -9.276001e+01
-15 3207     6.877400e+02 3.908500e+02
-0 3208     1.220000e+02 -1.286300e+02
-1 3208     2.401801e+02 -1.337000e+02
-7 3208     5.954999e+01 6.590027e+00
-13 3208     4.967700e+02 -3.237100e+02
-15 3208     1.477100e+02 -2.090997e+01
-0 3209     -2.346700e+02 -5.170500e+02
-1 3209     -2.051000e+02 -3.900500e+02
-4 3209     -6.308200e+02 -2.004800e+02
-6 3209     -1.240300e+02 -7.053900e+02
-7 3209     -2.331800e+02 -4.570800e+02
-9 3209     -8.669983e+00 -4.746200e+02
-10 3209     -3.083200e+02 -4.818101e+02
-0 3210     1.266200e+02 4.234003e+01
-1 3210     2.957300e+02 3.367999e+01
-7 3210     3.572998e+01 1.779200e+02
-15 3210     1.312300e+02 2.116600e+02
-0 3211     6.043199e+02 5.359003e+01
-1 3211     8.504700e+02 -1.145900e+02
-7 3211     4.476899e+02 2.323500e+02
-10 3211     6.030100e+02 2.678300e+02
-13 3211     8.193101e+02 -1.496400e+02
-15 3211     8.067200e+02 2.945800e+02
-0 3212     1.065500e+02 4.203998e+01
-1 3212     2.754200e+02 3.926001e+01
-2 3212     2.448000e+02 9.465997e+01
-6 3212     7.192999e+01 1.006900e+02
-7 3212     1.540002e+01 1.736300e+02
-12 3212     9.164001e+01 1.527500e+02
-15 3212     1.039200e+02 2.092200e+02
-0 3213     7.804999e+01 -1.167200e+02
-1 3213     2.009000e+02 -1.083300e+02
-3 3213     1.821700e+02 -3.815900e+02
-15 3213     8.627002e+01 -1.062000e+01
-0 3214     8.496002e+01 -7.869000e+01
-1 3214     2.170100e+02 -7.215997e+01
-13 3214     4.588600e+02 -2.816700e+02
-15 3214     8.923999e+01 4.270001e+01
-0 3215     8.475000e+01 -1.221600e+02
-1 3215     2.053900e+02 -1.155500e+02
-3 3215     1.917200e+02 -3.841200e+02
-10 3215     1.766998e+01 8.690002e+00
-13 3215     4.625300e+02 -3.207900e+02
-0 3216     7.012000e+01 -1.642500e+02
-1 3216     1.772600e+02 -1.518400e+02
-2 3216     2.912300e+02 -1.225700e+02
-10 3216     4.809998e+00 -4.171002e+01
-0 3217     5.857000e+02 1.492500e+02
-1 3217     8.611700e+02 -8.090027e+00
-3 3217     3.476400e+02 -1.924000e+02
-12 3217     4.834301e+02 3.048100e+02
-13 3217     7.893800e+02 -6.864001e+01
-15 3217     7.699800e+02 4.250200e+02
-0 3218     2.496700e+02 4.519700e+02
-1 3218     6.326000e+02 3.954500e+02
-5 3218     6.531600e+02 -1.954700e+02
-6 3218     -1.984400e+02 5.117500e+02
-7 3218     1.852002e+01 5.447200e+02
-8 3218     2.871997e+01 1.618900e+02
-9 3218     -2.025200e+02 2.536300e+02
-11 3218     3.785699e+02 -2.953900e+02
-12 3218     -3.302002e+01 4.873800e+02
-13 3218     3.891400e+02 1.442800e+02
-0 3219     -2.308700e+02 4.658000e+02
-1 3219     1.328400e+02 5.317300e+02
-2 3219     -5.116600e+02 2.199700e+02
-7 3219     -4.518100e+02 5.083700e+02
-11 3219     -5.695001e+01 -2.973800e+02
-0 3220     5.558400e+02 1.637600e+02
-1 3220     8.345601e+02 1.623999e+01
-2 3220     4.472600e+02 1.219400e+02
-7 3220     3.852000e+02 3.294200e+02
-10 3220     5.379700e+02 3.919000e+02
-12 3220     4.447200e+02 3.106900e+02
-15 3220     7.262100e+02 4.408800e+02
-0 3221     3.916998e+01 2.421997e+01
-1 3221     2.048900e+02 4.082001e+01
-7 3221     -4.953003e+01 1.437300e+02
-13 3221     4.058500e+02 -1.981600e+02
-0 3222     1.176500e+02 -9.650024e+00
-1 3222     2.696200e+02 -1.473999e+01
-2 3222     2.789800e+02 4.996997e+01
-6 3222     1.052400e+02 4.882001e+01
-7 3222     3.558002e+01 1.251200e+02
-10 3222     4.401001e+01 1.424900e+02
-13 3222     4.804700e+02 -2.187300e+02
-15 3222     1.252100e+02 1.403500e+02
-0 3223     6.590900e+02 -1.093300e+02
-1 3223     8.569500e+02 -3.054100e+02
-2 3223     6.386200e+02 -1.070200e+02
-7 3223     5.237000e+02 8.578000e+01
-8 3223     5.815800e+02 -1.196900e+02
-10 3223     6.809600e+02 8.428003e+01
-0 3224     3.814900e+02 4.780400e+02
-1 3224     7.900800e+02 3.881500e+02
-0 3225     1.020020e+00 -4.991998e+01
-1 3225     1.474000e+02 -2.021002e+01
-3 3225     7.595001e+01 -3.389500e+02
-7 3225     -7.641998e+01 6.284003e+01
-8 3225     1.611900e+02 -7.208002e+01
-13 3225     3.781801e+02 -2.653800e+02
-15 3225     -2.687000e+01 6.954999e+01
-0 3226     7.299805e-01 -9.421997e+01
-1 3226     1.346000e+02 -6.290002e+01
-3 3226     9.290997e+01 -3.866600e+02
-6 3226     -3.090027e+00 -9.091998e+01
-7 3226     -6.915997e+01 1.810999e+01
-8 3226     1.725500e+02 -1.139500e+02
-13 3226     3.821801e+02 -3.046600e+02
-15 3226     -2.092999e+01 9.039978e+00
-0 3227     -1.498700e+02 1.722000e+02
-1 3227     1.260800e+02 2.256300e+02
-0 3228     6.587300e+02 -5.646997e+01
-1 3228     8.735200e+02 -2.496000e+02
-3 3228     4.921000e+02 -3.553800e+02
-6 3228     5.413500e+02 9.692999e+01
-7 3228     5.164200e+02 1.361900e+02
-10 3228     6.762800e+02 1.446700e+02
-0 3229     4.563000e+01 -1.126900e+02
-1 3229     1.707200e+02 -9.398999e+01
-6 3229     5.725000e+01 -9.538000e+01
-7 3229     -1.933002e+01 8.630005e+00
-10 3229     -2.813000e+01 1.526001e+01
-12 3229     6.664001e+01 -4.550000e+01
-13 3229     4.272300e+02 -3.163900e+02
-15 3229     4.207001e+01 -9.530029e+00
-0 3230     1.127400e+02 -5.625100e+02
-1 3230     1.001800e+02 -5.510100e+02
-7 3230     1.243000e+02 -4.274800e+02
-10 3230     9.669000e+01 -4.928700e+02
-0 3231     5.013000e+01 -1.079600e+02
-1 3231     1.764200e+02 -9.101001e+01
-2 3231     2.387700e+02 -7.729999e+01
-3 3231     1.495500e+02 -3.818300e+02
-7 3231     -1.665002e+01 1.429999e+01
-10 3231     -2.459003e+01 2.165002e+01
-13 3231     4.292400e+02 -3.114100e+02
-15 3231     4.703003e+01 -2.309998e+00
-0 3232     1.016500e+02 -5.490900e+02
-1 3232     9.475000e+01 -5.345699e+02
-6 3232     2.694100e+02 -5.852000e+02
-9 3232     3.009600e+02 -3.687900e+02
-10 3232     8.281000e+01 -4.784800e+02
-0 3233     3.657700e+02 4.516800e+02
-1 3233     7.640601e+02 3.641200e+02
-13 3233     4.826200e+02 1.520200e+02
-14 3233     6.755200e+02 -2.687600e+02
-0 3234     3.646200e+02 4.431100e+02
-1 3234     7.591801e+02 3.554400e+02
-2 3234     3.798999e+01 2.036900e+02
-5 3234     7.740300e+02 -2.007400e+02
-6 3234     -7.470001e+01 5.248000e+02
-8 3234     1.119700e+02 1.585500e+02
-14 3234     6.765500e+02 -2.776200e+02
-0 3235     2.707001e+01 9.822000e+01
-1 3235     2.195601e+02 1.164500e+02
-3 3235     3.039001e+01 -2.009100e+02
-5 3235     6.505601e+02 -5.589000e+02
-7 3235     -7.758002e+01 2.136400e+02
-8 3235     1.367200e+02 5.010001e+01
-10 3235     -7.258002e+01 2.582900e+02
-12 3235     -2.834003e+01 1.865800e+02
-13 3235     3.787900e+02 -1.373400e+02
-15 3235     -1.064001e+01 2.747300e+02
-0 3236     2.742300e+02 -1.178400e+02
-1 3236     3.981801e+02 -1.718700e+02
-7 3236     2.022000e+02 4.115997e+01
-12 3236     3.193900e+02 9.000000e+00
-0 3237     2.258400e+02 -2.196500e+02
-1 3237     3.113900e+02 -2.559900e+02
-7 3237     1.779600e+02 -6.353998e+01
-8 3237     4.093400e+02 -1.646200e+02
-10 3237     1.897600e+02 -8.875000e+01
-12 3237     3.109000e+02 -1.101900e+02
-15 3237     3.003000e+02 -1.308600e+02
-0 3238     -9.766998e+01 -1.997998e+01
-1 3238     6.972998e+01 3.596002e+01
-15 3238     -1.624000e+02 9.614001e+01
-0 3239     1.749600e+02 -3.291998e+01
-1 3239     3.200100e+02 -5.540997e+01
-15 3239     2.068199e+02 1.163100e+02
-0 3240     9.900000e+01 -1.771002e+01
-1 3240     2.491801e+02 -1.684998e+01
-2 3240     2.633600e+02 3.728003e+01
-4 3240     -2.979800e+02 -4.924700e+02
-8 3240     2.454900e+02 -1.770001e+01
-10 3240     2.325000e+01 1.307600e+02
-15 3240     1.010900e+02 1.266300e+02
-0 3241     8.547998e+01 -1.307001e+01
-1 3241     2.372200e+02 -8.700012e+00
-2 3241     2.477400e+02 3.826001e+01
-7 3241     4.530029e+00 1.160500e+02
-15 3241     8.251001e+01 1.311700e+02
-0 3242     5.412500e+02 -3.814800e+02
-1 3242     6.093500e+02 -5.359399e+02
-13 3242     8.786600e+02 -5.402200e+02
-0 3243     4.866998e+01 -1.426001e+01
-1 3243     2.022000e+02 1.359985e+00
-2 3243     2.077500e+02 2.537000e+01
-3 3243     1.162400e+02 -2.838000e+02
-7 3243     -3.266998e+01 1.083400e+02
-9 3243     6.463000e+01 1.140900e+02
-10 3243     -3.559003e+01 1.296000e+02
-12 3243     4.191998e+01 7.237000e+01
-15 3243     3.270001e+01 1.247200e+02
-0 3244     3.190997e+01 -2.190002e+01
-1 3244     1.844100e+02 -1.669983e+00
-3 3244     1.026400e+02 -2.973300e+02
-4 3244     -2.921900e+02 -4.379700e+02
-7 3244     -4.831000e+01 9.722000e+01
-10 3244     -5.346002e+01 1.187300e+02
-13 3244     4.055200e+02 -2.374300e+02
-15 3244     1.119000e+01 1.119400e+02
-0 3245     6.551001e+01 -2.728003e+01
-1 3245     2.140000e+02 -1.664001e+01
-2 3245     2.319100e+02 1.815002e+01
-3 3245     1.399000e+02 -2.903300e+02
-4 3245     -2.998600e+02 -4.649500e+02
-6 3245     5.354999e+01 1.165997e+01
-8 3245     2.189500e+02 -3.434000e+01
-9 3245     8.484003e+01 1.086300e+02
-12 3245     6.690997e+01 6.366998e+01
-13 3245     4.368900e+02 -2.390000e+02
-15 3245     5.696997e+01 1.088800e+02
-0 3246     1.615997e+01 -1.585999e+01
-1 3246     1.713900e+02 8.710022e+00
-2 3246     1.705800e+02 1.104999e+01
-0 3247     9.688000e+01 8.909973e+00
-1 3247     2.551500e+02 9.750000e+00
-7 3247     1.206000e+01 1.397600e+02
-13 3247     4.604100e+02 -2.048000e+02
-15 3247     9.498999e+01 1.626300e+02
-0 3248     9.688000e+01 8.909973e+00
-1 3248     2.551500e+02 9.750000e+00
-2 3248     2.503800e+02 6.235999e+01
-7 3248     1.206000e+01 1.397600e+02
-9 3248     9.717999e+01 1.459100e+02
-13 3248     4.604100e+02 -2.048000e+02
-15 3248     9.498999e+01 1.626300e+02
-0 3249     1.288000e+02 -3.289001e+01
-1 3249     2.736200e+02 -4.089001e+01
-2 3249     2.984500e+02 2.890997e+01
-3 3249     2.015000e+02 -2.781400e+02
-4 3249     -3.136200e+02 -5.169500e+02
-7 3249     5.079999e+01 1.038100e+02
-10 3249     5.914001e+01 1.158900e+02
-13 3249     4.934100e+02 -2.381700e+02
-15 3249     1.436600e+02 1.099500e+02
-0 3250     -1.213100e+02 -9.731000e+01
-1 3250     2.207001e+01 -3.082001e+01
-0 3251     1.496000e+02 -6.377002e+01
-1 3251     2.851000e+02 -7.792999e+01
-2 3251     3.288700e+02 -1.400024e+00
-3 3251     2.318400e+02 -3.049300e+02
-4 3251     -3.398100e+02 -5.332200e+02
-6 3251     1.564900e+02 -2.770020e+00
-7 3251     7.640002e+01 7.622998e+01
-8 3251     2.995100e+02 -4.970999e+01
-10 3251     8.620001e+01 8.226001e+01
-13 3251     5.146801e+02 -2.640800e+02
-15 3251     1.762200e+02 7.016998e+01
-0 3252     6.450300e+02 -7.894000e+01
-1 3252     8.518600e+02 -2.684900e+02
-7 3252     5.059301e+02 1.123000e+02
-8 3252     5.607600e+02 -9.884998e+01
-10 3252     6.621700e+02 1.178300e+02
-13 3252     8.801100e+02 -2.656000e+02
-0 3253     5.939600e+02 1.189400e+02
-1 3253     8.603199e+02 -4.310999e+01
-3 3253     3.661700e+02 -2.163100e+02
-6 3253     4.163600e+02 2.671100e+02
-8 3253     4.713400e+02 5.081000e+01
-10 3253     5.867100e+02 3.433900e+02
-12 3253     5.011000e+02 2.771100e+02
-13 3253     8.014800e+02 -9.373999e+01
-15 3253     7.852700e+02 3.842900e+02
-0 3254     1.409998e+01 -1.531000e+01
-1 3254     1.698000e+02 9.929993e+00
-9 3254     3.206000e+01 1.010500e+02
-15 3254     -1.352002e+01 1.188900e+02
-0 3255     6.932001e+01 -8.859998e+01
-1 3255     1.998101e+02 -7.807001e+01
-2 3255     2.566500e+02 -4.750000e+01
-6 3255     7.723999e+01 -5.637000e+01
-13 3255     4.463199e+02 -2.920700e+02
-0 3256     2.859500e+02 -7.299805e-01
-1 3256     4.479600e+02 -5.878998e+01
-6 3256     2.566000e+02 9.970001e+01
-7 3256     1.924200e+02 1.566500e+02
-10 3256     2.377900e+02 1.701000e+02
-12 3256     2.922300e+02 1.411400e+02
-13 3256     6.131700e+02 -2.015400e+02
-15 3256     3.567400e+02 1.753200e+02
-0 3257     1.060500e+02 5.364001e+01
-1 3257     2.786700e+02 5.107001e+01
-3 3257     1.405500e+02 -2.078500e+02
-4 3257     -2.486800e+02 -4.976200e+02
-5 3257     7.630100e+02 -6.076600e+02
-6 3257     6.607001e+01 1.132000e+02
-7 3257     1.253003e+01 1.849400e+02
-12 3257     8.585999e+01 1.653500e+02
-0 3258     1.559700e+02 5.508002e+01
-1 3258     3.289399e+02 3.758002e+01
-4 3258     -2.541500e+02 -5.369399e+02
-6 3258     1.170200e+02 1.292200e+02
-12 3258     1.416900e+02 1.797400e+02
-13 3258     5.028101e+02 -1.619100e+02
-15 3258     1.694301e+02 2.338100e+02
-0 3259     5.276400e+02 1.122500e+02
-1 3259     7.893000e+02 -2.978998e+01
-6 3259     3.339300e+02 2.321200e+02
-7 3259     3.637500e+02 2.738800e+02
-12 3259     4.234800e+02 2.420900e+02
-13 3259     7.336600e+02 -1.091200e+02
-15 3259     6.928000e+02 3.640600e+02
-0 3260     -1.803998e+01 -1.305700e+02
-1 3260     1.039500e+02 -9.222998e+01
-2 3260     1.803100e+02 -1.162300e+02
-7 3260     -7.977002e+01 -2.014001e+01
-8 3260     1.715100e+02 -1.445500e+02
-9 3260     4.897998e+01 -4.260010e+00
-10 3260     -1.005700e+02 -1.204999e+01
-13 3260     3.737100e+02 -3.369800e+02
-15 3260     -4.171002e+01 -4.232001e+01
-0 3261     5.953700e+02 2.073999e+01
-1 3261     8.309900e+02 -1.471800e+02
-6 3261     4.435500e+02 1.571400e+02
-7 3261     4.440500e+02 1.982500e+02
-8 3261     4.934200e+02 -3.250000e+01
-10 3261     5.959301e+02 2.279300e+02
-13 3261     8.148199e+02 -1.814900e+02
-15 3261     7.988700e+02 2.466900e+02
-0 3262     2.096100e+02 3.177002e+01
-1 3262     3.762800e+02 -1.179993e+00
-7 3262     1.165600e+02 1.788000e+02
-10 3262     1.465800e+02 1.991500e+02
-15 3262     2.459800e+02 2.096800e+02
-0 3263     6.183002e+01 -8.526001e+01
-1 3263     1.938500e+02 -7.221002e+01
-2 3263     2.466500e+02 -4.576001e+01
-3 3263     1.567700e+02 -3.515100e+02
-6 3263     6.739001e+01 -5.575000e+01
-7 3263     -7.369995e+00 3.978998e+01
-8 3263     2.293000e+02 -8.704999e+01
-9 3263     9.960999e+01 5.638000e+01
-10 3263     -1.258002e+01 4.882001e+01
-15 3263     6.001001e+01 2.982001e+01
-0 3264     5.802800e+02 -2.303200e+02
-1 3264     7.155300e+02 -3.987700e+02
-6 3264     5.503500e+02 -1.027300e+02
-12 3264     6.152700e+02 -8.709003e+01
-13 3264     8.660000e+02 -4.023300e+02
-0 3265     -1.105600e+02 -5.196600e+02
-1 3265     -9.337000e+01 -4.339000e+02
-4 3265     -6.645800e+02 -2.971600e+02
-6 3265     2.169000e+01 -6.487600e+02
-7 3265     -1.069500e+02 -4.332000e+02
-9 3265     1.065800e+02 -4.265500e+02
-0 3266     1.849399e+02 -8.990002e+01
-1 3266     3.141000e+02 -1.151200e+02
-3 3266     2.668800e+02 -3.271000e+02
-6 3266     1.982600e+02 -2.127002e+01
-7 3266     1.139700e+02 5.567999e+01
-8 3266     3.306700e+02 -6.853998e+01
-10 3266     1.302100e+02 5.621002e+01
-12 3266     2.193199e+02 2.271002e+01
-0 3267     -5.502002e+01 5.017100e+02
-1 3267     3.198600e+02 5.249200e+02
-2 3267     -3.428500e+02 2.623400e+02
-6 3267     -5.415600e+02 5.129900e+02
-7 3267     -2.807600e+02 5.644000e+02
-0 3268     6.640300e+02 -5.582001e+01
-1 3268     8.793199e+02 -2.506800e+02
-2 3268     6.281899e+02 -4.776001e+01
-3 3268     4.971300e+02 -3.515200e+02
-7 3268     5.215500e+02 1.384300e+02
-10 3268     6.825699e+02 1.463200e+02
-0 3269     7.035999e+01 -7.369000e+01
-1 3269     2.050699e+02 -6.362000e+01
-7 3269     -6.799927e-01 5.284998e+01
-10 3269     -4.289978e+00 6.314001e+01
-0 3270     -9.830017e+00 -5.009003e+01
-1 3270     1.379700e+02 -1.740002e+01
-3 3270     6.296002e+01 -3.451000e+02
-6 3270     -3.246002e+01 -4.484003e+01
-7 3270     -8.771997e+01 6.070001e+01
-9 3270     1.896997e+01 5.940002e+01
-10 3270     -9.981000e+01 8.212000e+01
-12 3270     -2.150000e+01 8.940002e+00
-13 3270     3.674800e+02 -2.665600e+02
-15 3270     -4.134003e+01 6.779999e+01
-0 3271     3.582001e+01 -5.765997e+01
-1 3271     1.773300e+02 -3.776001e+01
-2 3271     2.086600e+02 -2.465002e+01
-3 3271     1.197000e+02 -3.314400e+02
-7 3271     -3.852002e+01 6.226001e+01
-8 3271     1.989400e+02 -6.859003e+01
-10 3271     -4.594000e+01 7.769000e+01
-13 3271     4.125300e+02 -2.682200e+02
-15 3271     2.116998e+01 6.378003e+01
-0 3272     5.865699e+02 1.602000e+02
-1 3272     8.655000e+02 2.690002e+00
-9 3272     2.729800e+02 2.106400e+02
-13 3272     7.888700e+02 -5.877002e+01
-15 3272     7.693300e+02 4.410400e+02
-0 3273     2.946002e+01 5.114000e+02
-1 3273     4.106600e+02 5.132900e+02
-2 3273     -2.646500e+02 2.722800e+02
-6 3273     -4.484200e+02 5.423900e+02
-7 3273     -1.995600e+02 5.825400e+02
-11 3273     1.727600e+02 -2.530000e+02
-12 3273     -2.746900e+02 5.260300e+02
-0 3274     2.799000e+02 -2.886300e+02
-1 3274     3.555100e+02 -3.453900e+02
-6 3274     3.412900e+02 -2.245900e+02
-10 3274     2.591801e+02 -1.617000e+02
-12 3274     3.695200e+02 -1.949500e+02
-15 3274     3.865200e+02 -2.175600e+02
-0 3275     -1.136500e+02 4.687000e+01
-1 3275     8.096997e+01 1.034400e+02
-4 3275     -2.306200e+02 -3.165700e+02
-6 3275     -2.374600e+02 1.023999e+01
-7 3275     -2.210900e+02 1.316300e+02
-10 3275     -2.307100e+02 1.842600e+02
-13 3275     2.398300e+02 -1.984200e+02
-15 3275     -1.913500e+02 1.850500e+02
-0 3276     2.334200e+02 8.420999e+01
-1 3276     4.208300e+02 4.221002e+01
-6 3276     1.738800e+02 1.780500e+02
-7 3276     1.279700e+02 2.317700e+02
-10 3276     1.682900e+02 2.634900e+02
-12 3276     2.088900e+02 2.235700e+02
-13 3276     5.569700e+02 -1.328900e+02
-15 3276     2.735100e+02 2.845100e+02
-0 3277     8.854999e+01 4.162000e+01
-1 3277     2.582500e+02 4.378003e+01
-2 3277     2.268000e+02 9.013000e+01
-3 3277     1.312700e+02 -2.217900e+02
-4 3277     -2.542900e+02 -4.838700e+02
-6 3277     5.165997e+01 9.503998e+01
-7 3277     -2.190002e+00 1.701600e+02
-8 3277     2.175100e+02 2.685999e+01
-10 3277     4.590027e+00 1.985700e+02
-12 3277     7.028998e+01 1.478200e+02
-13 3277     4.473300e+02 -1.782400e+02
-15 3277     7.934003e+01 2.062300e+02
-0 3278     -4.976001e+01 -8.676001e+01
-1 3278     8.916998e+01 -4.096002e+01
-6 3278     -6.407001e+01 -1.006700e+02
-7 3278     -1.212400e+02 1.685999e+01
-12 3278     -5.678003e+01 -4.591998e+01
-15 3278     -8.984003e+01 1.270001e+01
-0 3279     2.321100e+02 2.385700e+02
-1 3279     5.329000e+02 1.846400e+02
-6 3279     -9.364999e+01 2.662200e+02
-7 3279     4.648999e+01 3.417700e+02
-10 3279     1.528400e+02 4.460500e+02
-11 3279     3.731600e+02 -4.975100e+02
-13 3279     4.227000e+02 -3.469000e+01
-14 3279     6.071801e+02 -5.042500e+02
-0 3280     1.718199e+02 -2.437700e+02
-1 3280     2.498800e+02 -2.617700e+02
-2 3280     4.272900e+02 -1.729000e+02
-6 3280     2.494000e+02 -1.909800e+02
-7 3280     1.305600e+02 -9.648999e+01
-8 3280     3.756700e+02 -1.954500e+02
-10 3280     1.303500e+02 -1.223500e+02
-12 3280     2.602400e+02 -1.534500e+02
-13 3280     5.615699e+02 -4.207000e+02
-15 3280     2.300800e+02 -1.703800e+02
-0 3281     5.498199e+02 8.523001e+01
-1 3281     8.036899e+02 -6.500000e+01
-6 3281     3.694300e+02 2.096700e+02
-8 3281     4.365900e+02 3.589996e+00
-10 3281     5.371100e+02 2.983600e+02
-12 3281     4.567300e+02 2.200300e+02
-13 3281     7.596100e+02 -1.300900e+02
-15 3281     7.269900e+02 3.297100e+02
-0 3282     -2.704600e+02 5.494000e+01
-1 3282     -3.104999e+01 1.476900e+02
-2 3282     -3.992000e+02 -1.952900e+02
-7 3282     -4.119500e+02 9.100000e+01
-13 3282     2.940997e+01 -2.232900e+02
-15 3282     -3.959700e+02 1.732500e+02
-0 3283     2.255200e+02 1.619000e+01
-1 3283     3.882000e+02 -2.225000e+01
-2 3283     3.599100e+02 8.559998e+01
-7 3283     1.344900e+02 1.660500e+02
-10 3283     1.663100e+02 1.830600e+02
-13 3283     5.652700e+02 -1.897600e+02
-15 3283     2.705800e+02 1.903200e+02
-0 3284     1.184003e+01 -2.085500e+02
-1 3284     1.048700e+02 -1.760100e+02
-6 3284     6.945001e+01 -2.072000e+02
-15 3284     7.559998e+00 -1.439100e+02
-0 3285     5.385999e+01 2.145700e+02
-1 3285     3.415000e+02 2.108900e+02
-6 3285     -2.855200e+02 1.882600e+02
-7 3285     -1.220500e+02 2.941100e+02
-11 3285     2.019300e+02 -5.261400e+02
-14 3285     4.183400e+02 -5.404100e+02
-0 3286     -1.271600e+02 -2.413800e+02
-1 3286     -1.734003e+01 -1.682100e+02
-6 3286     -1.405500e+02 -3.368800e+02
-7 3286     -1.828700e+02 -1.607900e+02
-13 3286     2.590000e+02 -4.575300e+02
-15 3286     -1.699000e+02 -2.069100e+02
-0 3287     -2.932200e+02 6.162000e+01
-1 3287     -5.056000e+01 1.601100e+02
-4 3287     -2.110600e+02 -1.678600e+02
-0 3288     2.121899e+02 1.196002e+01
-1 3288     3.727400e+02 -2.228998e+01
-7 3288     1.229000e+02 1.602900e+02
-15 3288     2.525400e+02 1.827400e+02
-0 3289     6.389900e+02 -2.795700e+02
-1 3289     7.602200e+02 -4.716700e+02
-10 3289     6.721300e+02 -1.143000e+02
-12 3289     6.967200e+02 -1.185300e+02
-0 3290     6.459100e+02 -1.019300e+02
-1 3290     8.448800e+02 -2.927300e+02
-7 3290     5.103700e+02 9.047000e+01
-0 3291     -2.188600e+02 -5.248400e+02
-1 3291     -1.939500e+02 -4.023900e+02
-7 3291     -2.152500e+02 -4.609700e+02
-10 3291     -2.889200e+02 -4.888700e+02
-0 3292     8.465002e+01 3.567999e+01
-1 3292     2.519700e+02 3.952002e+01
-2 3292     2.258300e+02 8.387000e+01
-7 3292     -5.570007e+00 1.639000e+02
-13 3292     4.450800e+02 -1.835500e+02
-15 3292     7.478998e+01 1.969400e+02
-0 3293     4.895699e+02 2.866900e+02
-1 3293     8.182100e+02 1.617700e+02
-6 3293     2.016500e+02 4.028400e+02
-7 3293     2.914399e+02 4.287300e+02
-8 3293     3.094600e+02 1.196600e+02
-11 3293     6.165400e+02 -4.394900e+02
-12 3293     3.111600e+02 3.994000e+02
-13 3293     6.560000e+02 3.228003e+01
-0 3294     -1.673000e+02 -5.324800e+02
-1 3294     -1.497600e+02 -4.265200e+02
-6 3294     -3.415002e+01 -6.888400e+02
-7 3294     -1.614200e+02 -4.577000e+02
-9 3294     6.583002e+01 -4.576200e+02
-0 3295     5.986500e+02 -5.030029e+00
-1 3295     8.262200e+02 -1.751000e+02
-6 3295     4.550300e+02 1.280300e+02
-7 3295     4.503600e+02 1.741200e+02
-10 3295     6.016000e+02 1.989500e+02
-12 3295     5.374500e+02 1.385300e+02
-13 3295     8.212400e+02 -2.046800e+02
-0 3296     -1.994100e+02 -5.257900e+02
-1 3296     -1.767400e+02 -4.097100e+02
-4 3296     -6.466700e+02 -2.274600e+02
-6 3296     -7.602002e+01 -6.969500e+02
-7 3296     -1.952500e+02 -4.577600e+02
-9 3296     3.058002e+01 -4.658800e+02
-0 3297     5.468101e+02 9.845001e+01
-1 3297     8.044800e+02 -4.959998e+01
-6 3297     3.619000e+02 2.241700e+02
-7 3297     3.845500e+02 2.642700e+02
-8 3297     4.313101e+02 1.417001e+01
-10 3297     5.334600e+02 3.123300e+02
-12 3297     4.491200e+02 2.344700e+02
-13 3297     7.549100e+02 -1.182900e+02
-15 3297     7.211600e+02 3.483100e+02
-0 3298     -1.907900e+02 -5.160200e+02
-1 3298     -1.654200e+02 -4.037300e+02
-4 3298     -6.410600e+02 -2.343300e+02
-6 3298     -7.210999e+01 -6.820400e+02
-7 3298     -1.893900e+02 -4.474800e+02
-9 3298     3.201001e+01 -4.557000e+02
-0 3299     -1.973400e+02 -5.125500e+02
-1 3299     -1.699700e+02 -3.982100e+02
-6 3299     -8.235999e+01 -6.824600e+02
-0 3300     -1.065100e+02 -2.186300e+02
-1 3300     3.369995e+00 -1.522900e+02
-8 3300     8.745001e+01 -2.744600e+02
-9 3300     -2.891998e+01 -1.469600e+02
-15 3300     -1.464200e+02 -1.732600e+02
-0 3301     -8.239990e+00 -1.050400e+02
-1 3301     1.213800e+02 -7.059998e+01
-4 3301     -3.454200e+02 -4.034800e+02
-6 3301     -5.809998e+00 -1.044100e+02
-7 3301     -7.540002e+01 6.770020e+00
-10 3301     -9.138000e+01 1.816998e+01
-12 3301     1.299988e+00 -5.250000e+01
-0 3302     6.183002e+01 -2.230500e+02
-1 3302     1.475601e+02 -2.054700e+02
-2 3302     3.183600e+02 -1.739400e+02
-4 3302     -4.473000e+02 -4.634700e+02
-6 3302     1.317200e+02 -2.037800e+02
-7 3302     2.071002e+01 -9.504999e+01
-8 3302     2.818500e+02 -1.962000e+02
-9 3302     1.666600e+02 -4.544000e+01
-12 3302     1.322100e+02 -1.599000e+02
-13 3302     4.646500e+02 -4.100300e+02
-15 3302     7.751001e+01 -1.566400e+02
-0 3303     -5.026001e+01 -1.713500e+02
-1 3303     6.073999e+01 -1.219500e+02
-4 3303     -3.874900e+02 -3.704300e+02
-6 3303     -2.415997e+01 -1.932500e+02
-12 3303     -2.623999e+01 -1.410000e+02
-0 3304     6.351200e+02 -7.915002e+01
-1 3304     8.410900e+02 -2.652400e+02
-3 3304     4.752300e+02 -3.933800e+02
-7 3304     4.964100e+02 1.098900e+02
-8 3304     5.525100e+02 -1.035000e+02
-10 3304     6.505500e+02 1.169100e+02
-15 3304     8.657400e+02 1.141200e+02
-0 3305     3.509998e+01 -2.861100e+02
-1 3305     1.117100e+02 -2.598200e+02
-6 3305     9.928003e+01 -3.029399e+02
-7 3305     -1.469971e+00 -1.685000e+02
-9 3305     1.422800e+02 -1.434100e+02
-15 3305     5.228998e+01 -2.454000e+02
-0 3306     3.870300e+02 -8.845001e+01
-1 3306     5.329900e+02 -1.820000e+02
-0 3307     3.309998e+00 2.016998e+01
-1 3307     1.709399e+02 4.745001e+01
-2 3307     1.388200e+02 4.079999e+01
-6 3307     -4.178998e+01 4.040997e+01
-10 3307     -9.215997e+01 1.643300e+02
-12 3307     -2.637000e+01 9.532001e+01
-13 3307     3.718101e+02 -2.047300e+02
-15 3307     -3.303003e+01 1.647800e+02
-0 3308     2.905699e+02 -1.094600e+02
-1 3308     4.184500e+02 -1.694000e+02
-7 3308     2.157600e+02 5.150000e+01
-10 3308     2.536200e+02 4.466998e+01
-12 3308     3.323000e+02 2.146002e+01
-13 3308     6.336400e+02 -2.957200e+02
-0 3309     6.116400e+02 -5.423999e+01
-1 3309     8.241899e+02 -2.311400e+02
-2 3309     5.689600e+02 -7.614001e+01
-7 3309     4.696400e+02 1.291600e+02
-8 3309     5.243300e+02 -9.144000e+01
-10 3309     6.205800e+02 1.432100e+02
-13 3309     8.407800e+02 -2.476900e+02
-15 3309     8.301000e+02 1.450900e+02
-0 3310     9.891998e+01 -2.142000e+02
-1 3310     1.874100e+02 -2.092100e+02
-4 3310     -4.471300e+02 -4.922600e+02
-7 3310     5.396002e+01 -8.046002e+01
-10 3310     4.306000e+01 -9.634998e+01
-12 3310     1.680300e+02 -1.404900e+02
-13 3310     4.920200e+02 -3.994200e+02
-15 3310     1.267600e+02 -1.398300e+02
-0 3311     5.015601e+02 3.294500e+02
-1 3311     8.445800e+02 2.044200e+02
-2 3311     3.008000e+02 2.178600e+02
-10 3311     4.633900e+02 5.832700e+02
-0 3312     6.586200e+02 -9.719000e+01
-1 3312     8.603101e+02 -2.924600e+02
-2 3312     6.341500e+02 -9.471002e+01
-6 3312     5.532000e+02 5.046002e+01
-7 3312     5.217000e+02 9.745001e+01
-8 3312     5.782500e+02 -1.094700e+02
-10 3312     6.792800e+02 9.821997e+01
-12 3312     6.318101e+02 6.014001e+01
-0 3313     6.495500e+02 -8.421997e+01
-1 3313     8.547000e+02 -2.754600e+02
-2 3313     6.204000e+02 -8.679999e+01
-3 3313     4.920900e+02 -3.898500e+02
-7 3313     5.109500e+02 1.080200e+02
-8 3313     5.668800e+02 -1.019800e+02
-0 3314     8.434003e+01 4.352002e+01
-1 3314     2.542200e+02 4.753003e+01
-6 3314     4.720001e+01 9.577002e+01
-7 3314     -7.609985e+00 1.715000e+02
-8 3314     2.138400e+02 2.737000e+01
-10 3314     -3.099976e-01 2.003200e+02
-12 3314     6.579999e+01 1.485100e+02
-15 3314     7.333002e+01 2.080600e+02
-0 3315     1.115800e+02 7.295001e+01
-1 3315     2.910900e+02 6.820001e+01
-2 3315     2.337300e+02 1.206600e+02
-4 3315     -2.361700e+02 -5.007400e+02
-5 3315     7.627800e+02 -5.858400e+02
-6 3315     6.221002e+01 1.347600e+02
-9 3315     8.070001e+01 1.944800e+02
-10 3315     2.828998e+01 2.373400e+02
-12 3315     8.485999e+01 1.868800e+02
-13 3315     4.610800e+02 -1.510100e+02
-15 3315     1.068200e+02 2.517100e+02
-0 3316     1.553400e+02 4.934998e+01
-1 3316     3.265601e+02 3.207001e+01
-2 3316     2.884399e+02 1.101500e+02
-3 3316     1.866400e+02 -2.018400e+02
-4 3316     -2.581900e+02 -5.371000e+02
-6 3316     1.198000e+02 1.231500e+02
-7 3316     6.184003e+01 1.882600e+02
-10 3316     8.131000e+01 2.140000e+02
-12 3316     1.434200e+02 1.730000e+02
-13 3316     5.032500e+02 -1.665500e+02
-15 3316     1.696600e+02 2.257700e+02
-0 3317     -5.742999e+01 6.390015e+00
-1 3317     1.135800e+02 5.046997e+01
-2 3317     6.010999e+01 -5.809998e+00
-6 3317     -1.222800e+02 -2.219971e+00
-7 3317     -1.487900e+02 1.065800e+02
-12 3317     -1.040400e+02 5.381000e+01
-13 3317     3.118101e+02 -2.235100e+02
-15 3317     -1.120300e+02 1.378500e+02
-0 3318     -1.164100e+02 9.330017e+00
-1 3318     6.342999e+01 6.879999e+01
-2 3318     -2.820001e+01 -3.988000e+01
-6 3318     -2.115100e+02 -2.819000e+01
-7 3318     -2.139100e+02 9.587000e+01
-8 3318     1.034003e+01 -7.373999e+01
-0 3319     1.523300e+02 -1.385200e+02
-1 3319     2.654301e+02 -1.524900e+02
-2 3319     3.583700e+02 -7.869000e+01
-3 3319     2.631899e+02 -3.789600e+02
-4 3319     -3.981100e+02 -5.346500e+02
-7 3319     9.104999e+01 2.820007e+00
-9 3319     1.928300e+02 3.383002e+01
-10 3319     9.723999e+01 -3.549988e+00
-13 3319     5.254600e+02 -3.292900e+02
-15 3319     1.898900e+02 -3.032001e+01
-0 3320     -6.419983e+00 4.749300e+02
-1 3320     3.643000e+02 4.853200e+02
-2 3320     -2.953700e+02 2.311900e+02
-3 3320     -4.266800e+02 -1.003000e+02
-5 3320     3.972100e+02 -1.762300e+02
-7 3320     -2.299000e+02 5.414700e+02
-0 3321     5.052300e+02 2.937700e+02
-1 3321     8.369900e+02 1.653100e+02
-6 3321     2.204800e+02 4.169100e+02
-7 3321     3.064700e+02 4.384700e+02
-8 3321     3.230700e+02 1.306400e+02
-12 3321     3.279500e+02 4.132400e+02
-13 3321     6.715100e+02 4.033002e+01
-0 3322     4.852700e+02 3.173600e+02
-1 3322     8.236100e+02 1.957000e+02
-2 3322     2.836200e+02 1.989100e+02
-6 3322     1.879900e+02 4.377200e+02
-7 3322     2.828000e+02 4.581800e+02
-10 3322     4.436200e+02 5.670900e+02
-12 3322     2.986600e+02 4.323300e+02
-0 3323     5.601801e+02 8.995999e+01
-1 3323     8.162200e+02 -6.388000e+01
-7 3323     4.002100e+02 2.576100e+02
-8 3323     4.471100e+02 1.135001e+01
-10 3323     5.490601e+02 3.051000e+02
-12 3323     4.681600e+02 2.285800e+02
-13 3323     7.696100e+02 -1.246000e+02
-15 3323     7.415000e+02 3.375200e+02
-0 3324     6.383800e+02 -2.328003e+01
-1 3324     8.622300e+02 -2.073400e+02
-2 3324     5.901600e+02 -2.759998e+01
-6 3324     5.086200e+02 1.255500e+02
-7 3324     4.915400e+02 1.648600e+02
-8 3324     5.429399e+02 -5.270999e+01
-10 3324     6.495300e+02 1.810800e+02
-12 3324     5.888500e+02 1.355700e+02
-13 3324     8.650900e+02 -2.149300e+02
-15 3324     8.633900e+02 1.919600e+02
-0 3325     -1.863600e+02 -5.011600e+02
-1 3325     -1.559100e+02 -3.915700e+02
-6 3325     -7.758002e+01 -6.642700e+02
-7 3325     -1.882600e+02 -4.310500e+02
-9 3325     2.464001e+01 -4.439000e+02
-0 3326     -4.899700e+02 1.481400e+02
-1 3326     -1.997400e+02 2.915100e+02
-7 3326     -6.661700e+02 1.445500e+02
-0 3327     2.262100e+02 -3.730700e+02
-1 3327     2.795000e+02 -4.096000e+02
-0 3328     1.618300e+02 6.766998e+01
-1 3328     3.392800e+02 4.795001e+01
-0 3329     1.406500e+02 6.794000e+01
-1 3329     3.183700e+02 5.459998e+01
-3 3329     1.623600e+02 -1.899500e+02
-4 3329     -2.423500e+02 -5.241000e+02
-7 3329     4.346002e+01 2.041400e+02
-8 3329     2.504400e+02 5.475000e+01
-9 3329     1.051400e+02 1.971300e+02
-10 3329     6.272998e+01 2.344900e+02
-0 3330     9.077002e+01 -2.020001e+01
-1 3330     2.400200e+02 -1.690002e+01
-2 3330     2.564800e+02 3.237000e+01
-3 3330     1.628400e+02 -2.764700e+02
-4 3330     -2.991700e+02 -4.861400e+02
-7 3330     1.104999e+01 1.096900e+02
-9 3330     1.032300e+02 1.215400e+02
-10 3330     1.496002e+01 1.262000e+02
-13 3330     4.593800e+02 -2.308100e+02
-15 3330     8.991998e+01 1.222400e+02
-0 3331     1.763400e+02 1.340002e+01
-1 3331     3.354800e+02 -9.580017e+00
-4 3331     -2.872200e+02 -5.550100e+02
-7 3331     8.876001e+01 1.562000e+02
-10 3331     1.093500e+02 1.747200e+02
-13 3331     5.271200e+02 -1.951700e+02
-15 3331     2.028300e+02 1.795800e+02
-0 3332     1.426899e+02 -2.359985e+00
-1 3332     2.967600e+02 -1.415997e+01
-7 3332     5.866998e+01 1.373300e+02
-10 3332     7.204999e+01 1.540200e+02
-15 3332     1.578900e+02 1.545200e+02
-0 3333     1.470200e+02 5.727002e+01
-1 3333     3.203300e+02 4.257001e+01
-7 3333     5.219000e+01 1.937800e+02
-13 3333     4.948300e+02 -1.603900e+02
-15 3333     1.571200e+02 2.353500e+02
-0 3334     -4.183100e+02 3.546300e+02
-1 3334     -7.635999e+01 4.684200e+02
-7 3334     -6.288600e+02 3.689200e+02
-15 3334     -6.458200e+02 5.678800e+02
-0 3335     -5.005100e+02 3.237300e+02
-1 3335     -1.615500e+02 4.586100e+02
-10 3335     -7.320300e+02 4.792400e+02
-15 3335     -7.561000e+02 5.140500e+02
-0 3336     -3.105400e+02 3.763300e+02
-1 3336     3.300000e+01 4.634700e+02
-7 3336     -5.205800e+02 4.047900e+02
-0 3337     -4.687200e+02 3.241800e+02
-1 3337     -1.293900e+02 4.513000e+02
-7 3337     -6.799300e+02 3.286000e+02
-10 3337     -6.923500e+02 4.825000e+02
-11 3337     -2.719700e+02 -4.197300e+02
-12 3337     -8.170800e+02 2.152700e+02
-15 3337     -7.109000e+02 5.185400e+02
-0 3338     -1.432500e+02 3.274600e+02
-1 3338     1.877700e+02 3.729500e+02
-2 3338     -4.164600e+02 4.913000e+01
-7 3338     -3.452600e+02 3.734700e+02
-8 3338     -2.626800e+02 3.026001e+01
-11 3338     2.138000e+01 -4.202000e+02
-13 3338     7.675000e+01 1.338000e+01
-14 3338     1.698800e+02 -4.248900e+02
-0 3339     9.453998e+01 5.453998e+01
-1 3339     2.684200e+02 5.481000e+01
-3 3339     1.301900e+02 -2.104900e+02
-4 3339     -2.463800e+02 -4.877400e+02
-7 3339     1.750000e+00 1.836100e+02
-8 3339     2.159400e+02 3.707999e+01
-9 3339     7.608002e+01 1.787900e+02
-10 3339     1.031000e+01 2.142000e+02
-12 3339     7.040997e+01 1.630400e+02
-15 3339     8.601001e+01 2.246100e+02
-0 3340     -8.149900e+02 1.065997e+01
-1 3340     -5.254200e+02 2.465900e+02
-0 3341     -5.508800e+02 1.377002e+01
-1 3341     -3.000800e+02 1.837900e+02
-10 3341     -7.486900e+02 9.921997e+01
-13 3341     -2.173000e+02 -2.761600e+02
-0 3342     -4.271500e+02 4.084003e+01
-1 3342     -1.803400e+02 1.763600e+02
-0 3343     -4.697300e+02 1.127300e+02
-1 3343     -1.936500e+02 2.538700e+02
-0 3344     -4.274800e+02 4.346997e+01
-1 3344     -1.796800e+02 1.789500e+02
-15 3344     -6.103900e+02 1.362300e+02
-0 3345     -2.563000e+02 2.051700e+02
-1 3345     3.615997e+01 2.851200e+02
-5 3345     1.558700e+02 -4.701000e+02
-0 3346     -2.116700e+02 2.175300e+02
-1 3346     8.319000e+01 2.853800e+02
-10 3346     -3.654600e+02 3.765800e+02
-0 3347     -6.019100e+02 1.828003e+01
-1 3347     -3.432600e+02 2.009000e+02
-0 3348     -5.949400e+02 1.906000e+01
-1 3348     -3.370200e+02 2.000700e+02
-0 3349     -4.821700e+02 1.736900e+02
-1 3349     -1.841800e+02 3.130800e+02
-7 3349     -6.656500e+02 1.710400e+02
-10 3349     -6.866500e+02 2.980300e+02
-0 3350     -6.058200e+02 4.190997e+01
-1 3350     -3.390500e+02 2.235800e+02
-7 3350     -7.669100e+02 1.946002e+01
-0 3351     -4.937100e+02 1.654700e+02
-1 3351     -1.971400e+02 3.082200e+02
-7 3351     -6.753500e+02 1.613700e+02
-0 3352     -6.019400e+02 3.235999e+01
-1 3352     -3.378600e+02 2.141400e+02
-7 3352     -7.602000e+02 1.039001e+01
-0 3353     5.007100e+02 4.392700e+02
-1 3353     8.801500e+02 3.228500e+02
-2 3353     2.721200e+02 3.247300e+02
-3 3353     1.303400e+02 -4.760010e+00
-6 3353     1.769500e+02 5.818500e+02
-0 3354     -1.145900e+02 2.421000e+02
-1 3354     1.860699e+02 2.828400e+02
-0 3355     -9.198999e+01 2.387200e+02
-1 3355     2.062000e+02 2.738600e+02
-7 3355     -2.735800e+02 2.951600e+02
-10 3355     -2.258300e+02 4.140500e+02
-0 3356     -4.461400e+02 1.384003e+01
-1 3356     -2.073500e+02 1.567600e+02
-15 3356     -6.320100e+02 9.387000e+01
-0 3357     -1.480300e+02 2.824500e+02
-1 3357     1.679100e+02 3.305800e+02
-7 3357     -3.409200e+02 3.289000e+02
-11 3357     1.610999e+01 -4.623000e+02
-0 3358     -4.540100e+02 1.309400e+02
-1 3358     -1.730800e+02 2.664600e+02
-0 3359     -4.163300e+02 3.539900e+02
-1 3359     -7.482001e+01 4.675900e+02
-7 3359     -6.270700e+02 3.683700e+02
-15 3359     -6.435400e+02 5.672800e+02
-0 3360     -3.294700e+02 2.219200e+02
-1 3360     -2.698999e+01 3.196200e+02
-7 3360     -5.153500e+02 2.425300e+02
-13 3360     -6.596997e+01 -8.633002e+01
-14 3360     -1.312000e+01 -5.440000e+02
-0 3361     -8.021800e+02 5.010999e+01
-1 3361     -5.029200e+02 2.782200e+02
-0 3362     -8.710400e+02 -3.271997e+01
-1 3362     -5.846400e+02 2.220000e+02
-0 3363     -8.249400e+02 1.634003e+01
-1 3363     -5.320800e+02 2.535100e+02
-0 3364     -2.402700e+02 2.019000e+02
-1 3364     4.991998e+01 2.775400e+02
-7 3364     -4.160400e+02 2.381700e+02
-0 3365     1.917700e+02 1.198999e+01
-1 3365     3.513000e+02 -1.592999e+01
-7 3365     1.040000e+02 1.568700e+02
-10 3365     1.278300e+02 1.739600e+02
-15 3365     2.242200e+02 1.797900e+02
-0 3366     2.126899e+02 5.544900e+02
-1 3366     6.195699e+02 5.126600e+02
-0 3367     -4.565400e+02 3.694200e+02
-1 3367     -1.103900e+02 4.921300e+02
-10 3367     -6.838600e+02 5.391100e+02
-0 3368     -3.846300e+02 3.441800e+02
-1 3368     -4.656000e+01 4.505800e+02
-11 3368     -1.966900e+02 -4.031800e+02
-12 3368     -7.132800e+02 2.597600e+02
-15 3368     -5.966000e+02 5.578500e+02
-0 3369     5.249100e+02 -2.786700e+02
-1 3369     6.337900e+02 -4.270700e+02
-2 3369     6.424399e+02 -2.489600e+02
-0 3370     1.959200e+02 4.928700e+02
-1 3370     5.857600e+02 4.526800e+02
-11 3370     3.245800e+02 -2.623500e+02
-0 3371     -4.946200e+02 1.579800e+02
-1 3371     -2.003500e+02 3.019500e+02
-7 3371     -6.747400e+02 1.557200e+02
-0 3372     -5.516200e+02 1.956000e+01
-1 3372     -2.988600e+02 1.894000e+02
-0 3373     -4.628500e+02 1.231400e+02
-1 3373     -1.840600e+02 2.615900e+02
-0 3374     1.818000e+02 4.979600e+02
-1 3374     5.699600e+02 4.616100e+02
-11 3374     3.118400e+02 -2.586600e+02
-0 3375     1.527500e+02 4.929600e+02
-1 3375     5.367300e+02 4.638700e+02
-11 3375     2.850699e+02 -2.639800e+02
-0 3376     -2.563400e+02 -5.492200e+02
-1 3376     -2.358700e+02 -4.119700e+02
-4 3376     -6.542200e+02 -1.838500e+02
-0 3377     5.476001e+01 2.263600e+02
-1 3377     3.472300e+02 2.222100e+02
-6 3377     -2.926700e+02 2.013200e+02
-0 3378     -2.256400e+02 5.112800e+02
-1 3378     1.486700e+02 5.755300e+02
-0 3379     3.039001e+01 1.241000e+02
-1 3379     2.321500e+02 1.406700e+02
-0 3380     -1.070001e+01 1.477500e+02
-1 3380     2.050400e+02 1.743000e+02
-10 3380     -1.212600e+02 3.127100e+02
-0 3381     -3.582400e+02 -5.343199e+02
-1 3381     -3.211200e+02 -3.656400e+02
-0 3382     2.576700e+02 3.519400e+02
-1 3382     6.050500e+02 2.911900e+02
-0 3383     2.177100e+02 3.439300e+02
-1 3383     5.597200e+02 2.935900e+02
-14 3383     5.525699e+02 -3.916500e+02
-0 3384     3.025300e+02 1.977500e+02
-1 3384     5.910100e+02 1.230500e+02
-0 3385     2.027700e+02 1.641500e+02
-1 3385     4.249301e+02 1.300100e+02
-10 3385     1.255700e+02 3.537800e+02
-0 3386     2.378500e+02 1.381100e+02
-1 3386     4.473199e+02 9.479001e+01
-0 3387     -5.623999e+01 9.982001e+01
-1 3387     1.463800e+02 1.398900e+02
-0 3388     3.006899e+02 -9.897998e+01
-1 3388     4.331500e+02 -1.623700e+02
-0 3389     2.071600e+02 -2.177100e+02
-1 3389     2.932400e+02 -2.476200e+02
-0 3390     2.475200e+02 -2.791600e+02
-1 3390     3.213199e+02 -3.234400e+02
-15 3390     3.400900e+02 -2.086500e+02
-0 3391     5.434399e+02 -2.755200e+02
-1 3391     6.556899e+02 -4.307200e+02
-0 3392     5.378700e+02 -2.999600e+02
-1 3392     6.387000e+02 -4.531801e+02
-0 3393     1.577400e+02 -4.230700e+02
-1 3393     1.925400e+02 -4.341700e+02
-0 3394     2.586200e+02 1.402400e+02
-1 3394     4.715400e+02 9.063000e+01
-10 3394     1.928500e+02 3.311900e+02
-0 3395     5.376000e+02 -2.790900e+02
-1 3395     6.479700e+02 -4.318700e+02
-12 3395     5.958000e+02 -1.450300e+02
-0 3396     5.262500e+02 -3.299800e+02
-1 3396     6.141700e+02 -4.786801e+02
-7 3396     4.547800e+02 -1.338700e+02
-0 3397     -2.010000e+02 -5.155000e+02
-1 3397     -1.745100e+02 -3.996100e+02
-0 3398     6.282000e+02 -3.921600e+02
-1 3398     7.004700e+02 -5.816000e+02
-0 3399     4.147900e+02 -4.719600e+02
-1 3399     4.373300e+02 -5.762800e+02
-0 3400     4.147900e+02 -4.719600e+02
-1 3400     4.373300e+02 -5.762800e+02
-0 3401     -6.163000e+01 2.863900e+02
-1 3401     2.538300e+02 3.115300e+02
-15 3401     -1.392600e+02 5.200000e+02
-0 3402     2.554500e+02 2.663400e+02
-1 3402     5.685699e+02 2.058800e+02
-0 3403     1.575000e+01 1.381400e+02
-1 3403     2.240500e+02 1.581300e+02
-0 3404     -3.723700e+02 -2.400024e+00
-1 3404     -1.455100e+02 1.219900e+02
-7 3404     -5.053800e+02 1.701001e+01
-0 3405     1.020700e+02 -1.367800e+02
-1 3405     2.167700e+02 -1.349300e+02
-0 3406     3.441000e+02 -1.496600e+02
-1 3406     4.619900e+02 -2.268300e+02
-0 3407     4.451100e+02 3.320800e+02
-1 3407     7.865500e+02 2.218900e+02
-6 3407     1.299400e+02 4.410600e+02
-7 3407     2.401600e+02 4.654700e+02
-11 3407     5.671700e+02 -3.970800e+02
-12 3407     2.459301e+02 4.345600e+02
-0 3408     2.461000e+02 1.341500e+02
-1 3408     4.542000e+02 8.807001e+01
-0 3409     -8.107001e+01 -5.223800e+02
-1 3409     -6.703998e+01 -4.464100e+02
-0 3410     3.620300e+02 3.944600e+02
-1 3410     7.359399e+02 3.056500e+02
-0 3411     3.828400e+02 3.734500e+02
-1 3411     7.503000e+02 2.782800e+02
-0 3412     2.842700e+02 -7.735999e+01
-1 3412     4.242800e+02 -1.336200e+02
-0 3413     9.996002e+01 -3.462400e+02
-1 3413     1.592500e+02 -3.398200e+02
-7 3413     6.876001e+01 -2.178000e+02
-15 3413     1.491400e+02 -3.184700e+02
-0 3414     4.148400e+02 -3.094000e+01
-1 3414     5.874000e+02 -1.337600e+02
-0 3415     -1.471100e+02 1.803800e+02
-1 3415     1.312400e+02 2.327400e+02
-0 3416     -1.397400e+02 -5.341801e+02
-1 3416     -1.257900e+02 -4.372000e+02
-0 3417     2.404600e+02 -1.434200e+02
-1 3417     3.528000e+02 -1.862700e+02
-7 3417     1.769301e+02 1.221002e+01
-0 3418     6.084800e+02 -3.943200e+02
-1 3418     6.773800e+02 -5.756200e+02
-10 3418     6.472500e+02 -2.484300e+02
-15 3418     8.609301e+02 -3.227300e+02
-0 3419     -2.782200e+02 3.416300e+02
-1 3419     5.640002e+01 4.215000e+02
-7 3419     -4.827500e+02 3.722100e+02
-0 3420     -8.280029e+00 1.438900e+02
-1 3420     2.052900e+02 1.701600e+02
-7 3420     -1.265600e+02 2.492900e+02
-10 3420     -1.181800e+02 3.086500e+02
-15 3420     -6.317999e+01 3.329300e+02
-0 3421     9.790997e+01 -2.331100e+02
-1 3421     1.786700e+02 -2.266500e+02
-10 3421     4.440002e+01 -1.181300e+02
-15 3421     1.275300e+02 -1.656200e+02
-0 3422     2.031400e+02 -3.448200e+02
-1 3422     2.613900e+02 -3.739500e+02
-7 3422     1.676300e+02 -1.975700e+02
-13 3422     5.818800e+02 -5.221801e+02
-15 3422     2.895200e+02 -3.030600e+02
-0 3423     1.741300e+02 1.909600e+02
-1 3423     4.051200e+02 1.646500e+02
-7 3423     4.259003e+01 3.207700e+02
-15 3423     1.817800e+02 4.232300e+02
-0 3424     2.206000e+02 -4.219600e+02
-1 3424     2.549900e+02 -4.552800e+02
-0 3425     2.244600e+02 -2.435800e+02
-1 3425     3.025100e+02 -2.790200e+02
-15 3425     3.017700e+02 -1.634600e+02
-0 3426     2.514000e+02 -2.686100e+02
-1 3426     3.275100e+02 -3.142400e+02
-15 3426     3.437500e+02 -1.940700e+02
-0 3427     1.550400e+02 1.770600e+02
-1 3427     3.833199e+02 1.559200e+02
-14 3427     6.536600e+02 -5.506500e+02
-15 3427     1.571899e+02 4.013900e+02
-0 3428     2.971899e+02 -2.825300e+02
-1 3428     3.751100e+02 -3.451200e+02
-10 3428     2.780601e+02 -1.531700e+02
-15 3428     4.098700e+02 -2.073500e+02
-0 3429     4.233400e+02 -1.003700e+02
-1 3429     5.666400e+02 -2.054300e+02
-7 3429     3.328900e+02 7.687000e+01
-15 3429     5.620000e+02 5.721997e+01
-0 3430     2.764600e+02 -2.946900e+02
-1 3430     3.499500e+02 -3.492100e+02
-10 3430     2.562600e+02 -1.692300e+02
-0 3431     3.840500e+02 -6.404999e+01
-1 3431     5.400601e+02 -1.564000e+02
-10 3431     3.570900e+02 1.072400e+02
-15 3431     5.035500e+02 1.013200e+02
-0 3432     -4.010999e+01 -3.477300e+02
-1 3432     3.107001e+01 -2.957000e+02
-15 3432     -3.815002e+01 -3.368100e+02
-0 3433     -7.238000e+01 -2.567800e+02
-1 3433     2.278998e+01 -1.979600e+02
-15 3433     -9.565002e+01 -2.199800e+02
-0 3434     2.091801e+02 1.704300e+02
-1 3434     4.327400e+02 1.343500e+02
-10 3434     1.322200e+02 3.611500e+02
-13 3434     5.088300e+02 -6.796997e+01
-14 3434     7.205200e+02 -5.536600e+02
-0 3435     2.724100e+02 -8.515002e+01
-1 3435     4.063101e+02 -1.403600e+02
-10 3435     2.297600e+02 7.051001e+01
-15 3435     3.485000e+02 5.656000e+01
-0 3436     2.887500e+02 -3.011700e+02
-1 3436     3.626000e+02 -3.607900e+02
-10 3436     2.704399e+02 -1.754000e+02
-15 3436     4.011000e+02 -2.336100e+02
-0 3437     2.919399e+02 -7.979999e+01
-1 3437     4.322400e+02 -1.388400e+02
-15 3437     3.751801e+02 6.737000e+01
-0 3438     3.860699e+02 -2.395300e+02
-1 3438     4.934100e+02 -3.356700e+02
-0 3439     5.331000e+01 -3.934800e+02
-1 3439     9.816998e+01 -3.696000e+02
-0 3440     3.976700e+02 -1.376100e+02
-1 3440     5.233800e+02 -2.332600e+02
-7 3440     3.185000e+02 3.934998e+01
-0 3441     -5.130200e+02 1.065600e+02
-1 3441     -2.346400e+02 2.590800e+02
-0 3442     -5.074700e+02 1.693900e+02
-1 3442     -2.081000e+02 3.154400e+02
-0 3443     3.628998e+01 4.853800e+02
-1 3443     4.113300e+02 4.862700e+02
-2 3443     -2.555800e+02 2.445900e+02
-0 3444     7.003003e+01 5.466800e+02
-1 3444     4.630601e+02 5.401500e+02
-5 3444     4.746200e+02 -9.935999e+01
-6 3444     -4.090800e+02 5.957300e+02
-9 3444     -3.487500e+02 3.396600e+02
-12 3444     -2.374100e+02 5.727600e+02
-0 3445     2.208300e+02 5.205600e+02
-1 3445     6.189301e+02 4.749800e+02
-2 3445     -9.485999e+01 2.849200e+02
-3 3445     -2.344800e+02 -4.791998e+01
-9 3445     -2.329400e+02 3.184400e+02
-0 3446     -4.501500e+02 2.212300e+02
-1 3446     -1.384600e+02 3.492700e+02
-0 3447     2.406100e+02 -1.989900e+02
-1 3447     3.348400e+02 -2.408100e+02
-7 3447     1.864399e+02 -4.185999e+01
-10 3447     2.046200e+02 -6.339001e+01
-13 3447     6.100800e+02 -3.765100e+02
-15 3447     3.184900e+02 -1.007000e+02
-0 3448     2.047700e+02 -8.503003e+01
-1 3448     3.351100e+02 -1.165200e+02
-7 3448     1.319200e+02 6.341998e+01
-10 3448     1.525300e+02 6.389001e+01
-0 3449     2.897500e+02 -1.592800e+02
-1 3449     4.014000e+02 -2.186700e+02
-10 3449     2.577200e+02 -1.272998e+01
-15 3449     3.821100e+02 -4.121997e+01
-0 3450     3.502000e+02 -1.290900e+02
-1 3450     4.769000e+02 -2.094200e+02
-7 3450     2.726300e+02 3.960999e+01
-10 3450     3.246100e+02 2.825000e+01
-0 3451     5.243800e+02 1.153003e+01
-1 3451     7.547500e+02 -1.338800e+02
-0 3452     3.696700e+02 -1.242500e+02
-1 3452     4.992500e+02 -2.115700e+02
-7 3452     2.895100e+02 4.682001e+01
-12 3452     4.120000e+02 1.796002e+01
-15 3452     4.892900e+02 1.741998e+01
-0 3453     6.585999e+01 -1.843400e+02
-1 3453     1.672700e+02 -1.702700e+02
-7 3453     1.390997e+01 -5.794000e+01
-10 3453     2.510010e+00 -6.503998e+01
-15 3453     7.854999e+01 -1.038000e+02
-0 3454     2.346300e+02 1.417600e+02
-1 3454     4.460100e+02 9.876999e+01
-7 3454     1.144800e+02 2.848300e+02
-10 3454     1.645100e+02 3.301400e+02
-13 3454     5.402500e+02 -8.725000e+01
-15 3454     2.696200e+02 3.640500e+02
-0 3455     1.444000e+01 -1.728000e+02
-1 3455     1.222600e+02 -1.428300e+02
-15 3455     8.119995e+00 -9.484003e+01
-0 3456     9.691998e+01 -1.922600e+02
-1 3456     1.943600e+02 -1.872100e+02
-0 3457     -2.460100e+02 -4.746000e+02
-1 3457     -2.003400e+02 -3.481200e+02
-4 3457     -5.920200e+02 -1.922700e+02
-6 3457     -1.664500e+02 -6.656200e+02
-9 3457     -5.106000e+01 -4.503700e+02
-0 3458     -2.696002e+01 -2.073000e+02
-1 3458     7.026001e+01 -1.643100e+02
-7 3458     -7.184998e+01 -9.491998e+01
-0 3459     2.004500e+02 3.074600e+02
-1 3459     5.270900e+02 2.619900e+02
-0 3460     1.125800e+02 -9.183002e+01
-1 3460     2.409200e+02 -9.420001e+01
-10 3460     4.642999e+01 4.627002e+01
-0 3461     -7.876600e+02 1.467999e+01
-1 3461     -5.021000e+02 2.433800e+02
-0 3462     -7.880100e+02 5.853003e+01
-1 3462     -4.884400e+02 2.823800e+02
-0 3463     -7.867900e+02 1.479980e+00
-1 3463     -5.056800e+02 2.317100e+02
-0 3464     -9.797998e+01 2.419500e+02
-1 3464     2.016899e+02 2.785700e+02
-11 3464     6.003003e+01 -5.006400e+02
-13 3464     1.352700e+02 -5.521997e+01
-14 3464     2.410100e+02 -5.161300e+02
-0 3465     6.369995e+00 5.390015e+00
-1 3465     1.689100e+02 3.217999e+01
-7 3465     -7.995001e+01 1.196400e+02
-15 3465     -2.677002e+01 1.455100e+02
-0 3466     -4.832400e+02 1.682100e+02
-1 3466     -1.875800e+02 3.085600e+02
-0 3467     6.100000e+02 -4.796002e+01
-1 3467     8.244600e+02 -2.240500e+02
-7 3467     4.678000e+02 1.346600e+02
-12 3467     5.619900e+02 9.503998e+01
-15 3467     8.275800e+02 1.535500e+02
-0 3468     6.153900e+02 -2.373300e+02
-1 3468     7.519900e+02 -4.200900e+02
-15 3468     8.541200e+02 -1.067900e+02
-0 3469     5.291801e+02 1.221200e+02
-1 3469     7.943300e+02 -1.990002e+01
-15 3469     6.939500e+02 3.784400e+02
-0 3470     -9.370001e+01 -5.274900e+02
-1 3470     -8.110999e+01 -4.463101e+02
-0 3471     3.385699e+02 -3.065200e+02
-1 3471     4.155900e+02 -3.842000e+02
-10 3471     3.278900e+02 -1.760200e+02
-0 3472     1.286200e+02 -3.324000e+02
-1 3472     1.904800e+02 -3.361200e+02
-10 3472     9.002002e+01 -2.281300e+02
-0 3473     -2.384400e+02 -5.127100e+02
-1 3473     -2.069300e+02 -3.848700e+02
-4 3473     -6.261600e+02 -1.983900e+02
-6 3473     -1.306900e+02 -7.024399e+02
-9 3473     -1.542999e+01 -4.733300e+02
-0 3474     1.921500e+02 -2.163700e+02
-1 3474     2.791200e+02 -2.416700e+02
-13 3474     5.750500e+02 -3.948900e+02
-0 3475     -8.682001e+01 -5.662100e+02
-1 3475     -8.909003e+01 -4.845200e+02
-0 3476     6.739399e+02 -3.689200e+02
-1 3476     7.620699e+02 -5.770000e+02
-7 3476     5.953199e+02 -1.440700e+02
-0 3477     7.097600e+02 -3.570300e+02
-1 3477     8.092100e+02 -5.800300e+02
-10 3477     7.609800e+02 -1.949800e+02
-0 3478     6.456899e+02 -3.358900e+02
-1 3478     7.449100e+02 -5.315800e+02
-0 3479     6.262500e+02 -2.310700e+02
-1 3479     7.665800e+02 -4.175800e+02
-0 3480     1.176200e+02 -5.656801e+02
-1 3480     1.038700e+02 -5.559900e+02
-6 3480     2.968000e+02 -5.945000e+02
-7 3480     1.292900e+02 -4.292800e+02
-9 3480     3.237600e+02 -3.734700e+02
-10 3480     1.021700e+02 -4.960300e+02
-0 3481     7.357500e+02 -3.470100e+02
-1 3481     8.444800e+02 -5.813900e+02
-0 3482     -2.185500e+02 -1.090000e+02
-1 3482     -5.067999e+01 -1.853003e+01
-0 3483     -2.879200e+02 -2.568400e+02
-1 3483     -1.589900e+02 -1.363200e+02
-15 3483     -3.816700e+02 -2.496300e+02
-0 3484     -7.885999e+01 -5.640400e+02
-1 3484     -8.069000e+01 -4.855100e+02
-0 3485     6.440400e+02 -2.656900e+02
-1 3485     7.728300e+02 -4.602200e+02
-0 3486     -6.321997e+01 -5.703800e+02
-1 3486     -6.865997e+01 -4.962500e+02
-7 3486     -4.692999e+01 -4.714000e+02
-0 3487     3.202000e+02 -2.915800e+02
-1 3487     4.006600e+02 -3.630300e+02
-0 3488     -6.888800e+02 -4.802100e+02
-1 3488     -5.807400e+02 -2.162500e+02
-0 3489     -2.686200e+02 -5.319800e+02
-1 3489     -2.410800e+02 -3.925000e+02
-0 3490     3.963700e+02 -9.503003e+01
-1 3490     5.401700e+02 -1.911400e+02
-15 3490     5.239301e+02 6.084998e+01
-0 3491     5.067600e+02 4.207700e+02
-1 3491     8.803700e+02 3.011000e+02
-12 3491     2.991500e+02 5.519800e+02
-0 3492     3.951001e+01 1.799300e+02
-1 3492     2.655800e+02 1.914400e+02
-7 3492     -8.710999e+01 2.904000e+02
-15 3492     -1.869995e+00 3.886500e+02
-0 3493     -1.787700e+02 1.547500e+02
-1 3493     9.214001e+01 2.167800e+02
-7 3493     -3.415900e+02 2.024100e+02
-15 3493     -2.832800e+02 3.224000e+02
-0 3494     1.596100e+02 6.104999e+01
-1 3494     3.347400e+02 4.250000e+01
-6 3494     1.183100e+02 1.364600e+02
-10 3494     8.529999e+01 2.285800e+02
-15 3494     1.740000e+02 2.427400e+02
-0 3495     2.349200e+02 4.616998e+01
-1 3495     4.086000e+02 4.609985e+00
-10 3495     1.741000e+02 2.187100e+02
-15 3495     2.799399e+02 2.323900e+02
-0 3496     -1.688800e+02 -6.401001e+01
-1 3496     -9.869995e+00 1.432001e+01
-7 3496     -2.522700e+02 1.428998e+01
-10 3496     -2.825100e+02 4.904999e+01
-15 3496     -2.524100e+02 2.716998e+01
-0 3497     -1.192900e+02 -1.368700e+02
-1 3497     8.409973e+00 -6.848999e+01
-15 3497     -1.772600e+02 -6.453003e+01
-0 3498     1.624500e+02 -2.443800e+02
-1 3498     2.401300e+02 -2.595600e+02
-6 3498     2.399800e+02 -1.949800e+02
-7 3498     1.215500e+02 -9.871002e+01
-15 3498     2.173700e+02 -1.727600e+02
-0 3499     -3.390997e+01 -2.652200e+02
-1 3499     5.271997e+01 -2.176400e+02
-15 3499     -4.396002e+01 -2.262400e+02
-0 3500     3.335400e+02 -2.157600e+02
-1 3500     4.286400e+02 -2.901800e+02
-15 3500     4.500300e+02 -1.120700e+02
-0 3501     -1.318400e+02 -2.076800e+02
-1 3501     -1.488000e+01 -1.340900e+02
-15 3501     -1.817700e+02 -1.619100e+02
-0 3502     2.928300e+02 -2.972700e+02
-1 3502     3.682400e+02 -3.585700e+02
-15 3502     4.065400e+02 -2.279800e+02
-0 3503     -5.623999e+01 9.982001e+01
-1 3503     1.463800e+02 1.398900e+02
-10 3503     -1.699400e+02 2.510200e+02
-15 3503     -1.227200e+02 2.645700e+02
-0 3504     -6.246002e+01 8.648999e+01
-1 3504     1.362200e+02 1.285200e+02
-7 3504     -1.717500e+02 1.829800e+02
-10 3504     -1.757800e+02 2.351300e+02
-15 3504     -1.291000e+02 2.458800e+02
-0 3505     -7.032001e+01 5.439001e+01
-1 3505     1.183100e+02 9.992999e+01
-10 3505     -1.813100e+02 1.974200e+02
-15 3505     -1.352100e+02 2.015000e+02
-0 3506     2.960022e+00 -1.155000e+02
-1 3506     1.282200e+02 -8.407001e+01
-15 3506     -1.534998e+01 -1.909998e+01
-0 3507     3.218700e+02 -2.503000e+02
-1 3507     4.089301e+02 -3.215800e+02
-12 3507     4.024600e+02 -1.364400e+02
-15 3507     4.391300e+02 -1.604400e+02
-0 3508     -8.507001e+01 4.704999e+01
-1 3508     1.044500e+02 9.589999e+01
-7 3508     -1.885100e+02 1.389900e+02
-15 3508     -1.532800e+02 1.888100e+02
-0 3509     -4.158600e+02 -1.704400e+02
-1 3509     -2.437000e+02 -2.019000e+01
-15 3509     -5.674500e+02 -1.520300e+02
-0 3510     2.655400e+02 -2.946100e+02
-1 3510     3.385699e+02 -3.464000e+02
-7 3510     2.198600e+02 -1.365700e+02
-10 3510     2.430900e+02 -1.703400e+02
-15 3510     3.673900e+02 -2.279100e+02
-0 3511     -3.069600e+02 3.052002e+01
-1 3511     -7.392999e+01 1.347600e+02
-7 3511     -4.439800e+02 6.217999e+01
-10 3511     -4.553800e+02 1.473100e+02
-15 3511     -4.422200e+02 1.371900e+02
-0 3512     5.500699e+02 8.164001e+01
-1 3512     8.030300e+02 -6.866998e+01
-15 3512     7.279600e+02 3.246900e+02
-0 3513     3.316998e+01 -1.019400e+02
-1 3513     1.627300e+02 -8.032001e+01
-10 3513     -4.372998e+01 2.603003e+01
-15 3513     2.410999e+01 3.169983e+00
-0 3514     2.742300e+02 -1.178400e+02
-1 3514     3.981801e+02 -1.718700e+02
-0 3515     -7.470001e+01 1.003003e+01
-1 3515     1.002500e+02 5.845001e+01
-7 3515     -1.692500e+02 1.061900e+02
-10 3515     -1.809500e+02 1.451400e+02
-13 3515     2.915800e+02 -2.232800e+02
-15 3515     -1.354900e+02 1.410200e+02
-0 3516     1.775300e+02 -2.396700e+02
-1 3516     2.561500e+02 -2.594700e+02
-6 3516     2.541200e+02 -1.838900e+02
-10 3516     1.365000e+02 -1.169800e+02
-15 3516     2.367100e+02 -1.641400e+02
-0 3517     9.790997e+01 -2.331100e+02
-1 3517     1.786700e+02 -2.266500e+02
-6 3517     1.751100e+02 -2.009000e+02
-10 3517     4.440002e+01 -1.181300e+02
-15 3517     1.275300e+02 -1.656200e+02
-0 3518     2.660500e+02 -2.807200e+02
-1 3518     3.419500e+02 -3.319900e+02
-15 3518     3.663500e+02 -2.089500e+02
-0 3519     2.928300e+02 -2.972700e+02
-1 3519     3.682400e+02 -3.585700e+02
-15 3519     4.065400e+02 -2.279800e+02
-0 3520     4.428003e+01 -1.384900e+02
-1 3520     1.591300e+02 -1.184100e+02
-15 3520     4.284998e+01 -4.446997e+01
-0 3521     1.231500e+02 -4.759003e+01
-1 3521     2.637200e+02 -5.390997e+01
-10 3521     5.396002e+01 9.915997e+01
-15 3521     1.378000e+02 8.914999e+01
-0 3522     -4.080400e+02 -1.746000e+02
-1 3522     -2.382600e+02 -2.632001e+01
-7 3522     -5.009600e+02 -1.589000e+02
-15 3522     -5.561800e+02 -1.571600e+02
-0 3523     -3.084800e+02 -4.711000e+02
-1 3523     -2.545100e+02 -3.248400e+02
-7 3523     -3.214100e+02 -4.283100e+02
-15 3523     -3.862300e+02 -5.429399e+02
-0 3524     -4.758002e+01 -1.488700e+02
-1 3524     7.165997e+01 -1.013200e+02
-15 3524     -7.870001e+01 -7.125000e+01
-0 3525     -1.913500e+02 -3.662000e+01
-1 3525     -2.016998e+01 4.609003e+01
-10 3525     -3.119900e+02 7.854999e+01
-15 3525     -2.859300e+02 6.095001e+01
-0 3526     3.357700e+02 4.334100e+02
-1 3526     7.232700e+02 3.529800e+02
-14 3526     6.468199e+02 -2.905400e+02
-0 3527     1.222100e+02 4.111700e+02
-1 3527     4.831200e+02 3.870700e+02
-5 3527     5.245000e+02 -2.425900e+02
-8 3527     -6.006000e+01 1.212700e+02
-14 3527     4.346000e+02 -3.248400e+02
-0 3528     2.064700e+02 3.322400e+02
-1 3528     5.432600e+02 2.848900e+02
-6 3528     -1.856200e+02 3.614200e+02
-0 3529     -3.268600e+02 2.971000e+02
-1 3529     -3.450012e+00 3.910900e+02
-0 3530     -3.236200e+02 2.894900e+02
-1 3530     -2.080017e+00 3.827900e+02
-0 3531     -3.260400e+02 2.865900e+02
-1 3531     -4.979980e+00 3.806400e+02
-8 3531     -4.085300e+02 -1.701001e+01
-0 3532     -3.315100e+02 2.846300e+02
-1 3532     -1.097998e+01 3.800500e+02
-8 3532     -4.135600e+02 -1.928000e+01
-0 3533     4.430100e+02 2.801000e+02
-1 3533     7.670800e+02 1.679300e+02
-10 3533     3.961600e+02 5.183200e+02
-0 3534     -3.456100e+02 2.795700e+02
-1 3534     -2.584998e+01 3.787900e+02
-0 3535     -3.824300e+02 2.726600e+02
-1 3535     -6.089001e+01 3.810000e+02
-7 3535     -5.800700e+02 2.862600e+02
-10 3535     -5.776900e+02 4.270200e+02
-0 3536     4.477000e+02 2.449600e+02
-1 3536     7.614301e+02 1.295100e+02
-0 3537     6.429999e+01 2.427300e+02
-1 3537     3.629200e+02 2.352700e+02
-0 3538     4.428400e+02 2.426500e+02
-1 3538     7.552000e+02 1.286700e+02
-0 3539     4.546700e+02 2.414400e+02
-1 3539     7.675200e+02 1.237400e+02
-0 3540     4.602400e+02 2.344200e+02
-1 3540     7.709200e+02 1.150200e+02
-0 3541     3.079700e+02 2.333400e+02
-1 3541     6.110500e+02 1.574000e+02
-7 3541     1.208700e+02 3.475100e+02
-10 3541     2.422600e+02 4.480000e+02
-0 3542     2.030900e+02 2.332300e+02
-1 3542     5.008199e+02 1.873100e+02
-6 3542     -1.235500e+02 2.524200e+02
-0 3543     4.714800e+02 2.310300e+02
-1 3543     7.816000e+02 1.080600e+02
-0 3544     4.541801e+02 2.233200e+02
-1 3544     7.613000e+02 1.050200e+02
-0 3545     4.564500e+02 2.211100e+02
-1 3545     7.627200e+02 1.020500e+02
-0 3546     -3.174700e+02 1.995000e+02
-1 3546     -2.315997e+01 2.955100e+02
-0 3547     -2.441700e+02 1.909100e+02
-1 3547     4.285999e+01 2.685800e+02
-0 3548     -2.341300e+02 1.907000e+02
-1 3548     5.209998e+01 2.655700e+02
-7 3548     -4.071800e+02 2.281600e+02
-0 3549     -1.988900e+02 1.821700e+02
-1 3549     8.294000e+01 2.484300e+02
-0 3550     -1.365400e+02 1.802200e+02
-1 3550     1.417200e+02 2.298300e+02
-6 3550     -4.982500e+02 9.079999e+01
-0 3551     -1.996600e+02 1.792600e+02
-1 3551     8.070001e+01 2.456700e+02
-0 3552     2.027700e+02 1.641500e+02
-1 3552     4.249301e+02 1.300100e+02
-13 3552     5.031600e+02 -7.310999e+01
-14 3552     7.133600e+02 -5.604100e+02
-0 3553     4.940100e+02 1.501800e+02
-1 3553     7.790601e+02 1.701001e+01
-0 3554     5.297800e+02 1.154800e+02
-1 3554     7.926100e+02 -2.753003e+01
-6 3554     3.363400e+02 2.362300e+02
-7 3554     3.657300e+02 2.769200e+02
-10 3554     5.114700e+02 3.318100e+02
-12 3554     4.258600e+02 2.461200e+02
-0 3555     -1.444700e+02 8.860999e+01
-1 3555     7.291998e+01 1.505500e+02
-10 3555     -2.715400e+02 2.294200e+02
-12 3555     -2.723000e+02 8.919000e+01
-0 3556     4.173999e+01 8.716000e+01
-1 3556     2.291000e+02 1.017500e+02
-5 3556     6.732600e+02 -5.705900e+02
-8 3556     1.565700e+02 4.726999e+01
-10 3556     -5.428998e+01 2.469200e+02
-15 3556     1.001001e+01 2.619900e+02
-0 3557     -3.157200e+02 6.790997e+01
-1 3557     -6.875000e+01 1.720700e+02
-0 3558     1.808600e+02 5.801001e+01
-1 3558     3.555400e+02 3.302002e+01
-0 3559     -3.183000e+02 5.342999e+01
-1 3559     -7.609003e+01 1.593500e+02
-0 3560     2.643101e+02 4.903003e+01
-1 3560     4.415500e+02 -2.049988e+00
-10 3560     2.081100e+02 2.250900e+02
-0 3561     5.320300e+02 4.750000e+00
-1 3561     7.604500e+02 -1.434800e+02
-0 3562     5.585000e+02 -2.440997e+01
-1 3562     7.777400e+02 -1.822400e+02
-0 3563     -4.069200e+02 -3.409003e+01
-1 3563     -1.883200e+02 1.020900e+02
-0 3564     -4.153300e+02 -3.967999e+01
-1 3564     -1.977900e+02 9.929001e+01
-0 3565     2.821200e+02 -1.036900e+02
-1 3565     4.119900e+02 -1.608300e+02
-10 3565     2.435500e+02 5.033002e+01
-0 3566     3.378800e+02 -1.407200e+02
-1 3566     4.591400e+02 -2.167100e+02
-0 3567     6.007900e+02 -2.325800e+02
-1 3567     7.371200e+02 -4.087600e+02
-6 3567     5.705601e+02 -9.829999e+01
-0 3568     6.366200e+02 -2.371800e+02
-1 3568     7.761600e+02 -4.277500e+02
-12 3568     6.734000e+02 -7.884003e+01
-0 3569     6.390900e+02 -2.580100e+02
-1 3569     7.698500e+02 -4.496600e+02
-10 3569     6.701700e+02 -8.883002e+01
-12 3569     6.855900e+02 -9.809003e+01
-0 3570     6.369700e+02 -2.874800e+02
-1 3570     7.549700e+02 -4.789800e+02
-7 3570     5.443600e+02 -7.754999e+01
-0 3571     -3.871997e+01 -3.773300e+02
-1 3571     1.872998e+01 -3.235900e+02
-15 3571     -3.385999e+01 -3.783000e+02
-0 3572     5.199500e+02 -3.962000e+02
-1 3572     5.797900e+02 -5.422000e+02
-7 3572     4.648900e+02 -1.953600e+02
-0 3573     5.327000e+02 -4.023900e+02
-1 3573     5.910900e+02 -5.535400e+02
-0 3574     4.912400e+02 -4.362800e+02
-1 3574     5.322400e+02 -5.706801e+02
-0 3575     -1.723900e+02 -5.386400e+02
-1 3575     -1.568600e+02 -4.306000e+02
-7 3575     -1.636400e+02 -4.654399e+02
-0 3576     -8.317999e+01 -5.398900e+02
-1 3576     -7.610999e+01 -4.618600e+02
-6 3576     6.623999e+01 -6.566500e+02
-0 3577     -1.236100e+02 -5.481100e+02
-1 3577     -1.159600e+02 -4.550900e+02
-6 3577     2.710999e+01 -6.843101e+02
-0 3578     -6.676001e+01 -5.655400e+02
-1 3578     -7.020001e+01 -4.906100e+02
-0 3579     -6.321997e+01 -5.703800e+02
-1 3579     -6.865997e+01 -4.962500e+02
-0 3580     3.463199e+02 4.355400e+02
-1 3580     7.361100e+02 3.523700e+02
-0 3581     3.395900e+02 4.344500e+02
-1 3581     7.278800e+02 3.529600e+02
-0 3582     1.822600e+02 3.957800e+02
-1 3582     5.431100e+02 3.550500e+02
-0 3583     2.102100e+02 3.834500e+02
-1 3583     5.675400e+02 3.354000e+02
-0 3584     1.928800e+02 3.411200e+02
-1 3584     5.325400e+02 2.976700e+02
-6 3584     -2.074600e+02 3.677000e+02
-0 3585     1.928800e+02 3.411200e+02
-1 3585     5.325400e+02 2.976700e+02
-6 3585     -2.074600e+02 3.677000e+02
-9 3585     -2.005900e+02 1.675300e+02
-10 3585     9.667999e+01 5.653500e+02
-14 3585     5.264301e+02 -3.959800e+02
-0 3586     2.542500e+02 3.130700e+02
-1 3586     5.863101e+02 2.523700e+02
-0 3587     -3.202400e+02 3.047700e+02
-1 3587     5.119995e+00 3.967200e+02
-0 3588     4.451500e+02 2.820000e+02
-1 3588     7.705200e+02 1.688400e+02
-0 3589     5.767999e+01 2.428300e+02
-1 3589     3.561300e+02 2.373800e+02
-6 3589     -3.013600e+02 2.204600e+02
-0 3590     4.933700e+02 2.421900e+02
-1 3590     8.069200e+02 1.146000e+02
-0 3591     -4.465700e+02 2.253100e+02
-1 3591     -1.335700e+02 3.521100e+02
-0 3592     4.802600e+02 2.237800e+02
-1 3592     7.884900e+02 9.809000e+01
-0 3593     -1.707200e+02 2.199900e+02
-1 3593     1.234600e+02 2.767200e+02
-0 3594     4.643700e+02 2.069100e+02
-1 3594     7.669700e+02 8.438000e+01
-0 3595     -2.237000e+02 2.022900e+02
-1 3595     6.610999e+01 2.739900e+02
-0 3596     4.622600e+02 1.998900e+02
-1 3596     7.622500e+02 7.802002e+01
-0 3597     4.425900e+02 1.891700e+02
-1 3597     7.385200e+02 7.291998e+01
-0 3598     -2.342400e+02 1.852300e+02
-1 3598     4.994000e+01 2.605400e+02
-0 3599     -1.470000e+02 1.773100e+02
-1 3599     1.304300e+02 2.297900e+02
-9 3599     -4.094700e+02 2.679993e+00
-0 3600     5.767500e+02 4.435999e+01
-1 3600     8.186400e+02 -1.160600e+02
-0 3601     -2.620900e+02 3.757001e+01
-1 3601     -2.950000e+01 1.290400e+02
-0 3602     6.118800e+02 -1.940002e+00
-1 3602     8.410000e+02 -1.761200e+02
-0 3603     5.712200e+02 -3.020020e+00
-1 3603     7.981600e+02 -1.639700e+02
-6 3603     4.198100e+02 1.186400e+02
-0 3604     5.132400e+02 -1.137900e+02
-1 3604     6.900601e+02 -2.568600e+02
-0 3605     -6.967999e+01 -1.243300e+02
-1 3605     6.075000e+01 -7.146002e+01
-0 3606     -3.736500e+02 -1.577200e+02
-1 3606     -2.017600e+02 -2.065997e+01
-0 3607     5.218500e+02 -1.759100e+02
-1 3607     6.732600e+02 -3.224000e+02
-0 3608     2.354100e+02 -1.765400e+02
-1 3608     3.380200e+02 -2.176200e+02
-0 3609     5.704900e+02 -2.202100e+02
-1 3609     7.083500e+02 -3.850700e+02
-0 3610     -4.565300e+02 -2.496500e+02
-1 3610     -3.078200e+02 -8.040997e+01
-0 3611     5.463101e+02 -3.691800e+02
-1 3611     6.197600e+02 -5.256899e+02
-0 3612     5.463101e+02 -3.691800e+02
-1 3612     6.197600e+02 -5.256899e+02
-0 3613     6.572300e+02 -3.770800e+02
-1 3613     7.397200e+02 -5.782800e+02
-0 3614     5.549399e+02 -3.794600e+02
-1 3614     6.244900e+02 -5.390200e+02
-0 3615     -6.645001e+01 -5.023900e+02
-1 3615     -4.607001e+01 -4.327900e+02
-0 3616     -1.168300e+02 -5.232700e+02
-1 3616     -1.003700e+02 -4.348300e+02
-0 3617     -9.972998e+01 -5.541700e+02
-1 3617     -9.645001e+01 -4.692600e+02
-6 3617     5.769000e+01 -6.793500e+02
-0 3618     1.966100e+02 4.227700e+02
-1 3618     5.661899e+02 3.791600e+02
-0 3619     1.862000e+02 3.705400e+02
-1 3619     5.370400e+02 3.286800e+02
-10 3619     8.632001e+01 5.997500e+02
-0 3620     5.057600e+02 3.472300e+02
-1 3620     8.549000e+02 2.222600e+02
-0 3621     -4.508100e+02 2.235800e+02
-1 3621     -1.380800e+02 3.517300e+02
-0 3622     -1.238700e+02 2.231900e+02
-1 3622     1.697600e+02 2.675900e+02
-0 3623     4.654000e+02 1.971300e+02
-1 3623     7.644301e+02 7.459003e+01
-0 3624     -2.168100e+02 1.699700e+02
-1 3624     6.120001e+01 2.415500e+02
-0 3625     3.642100e+02 2.028003e+01
-1 3625     5.504200e+02 -6.591998e+01
-7 3625     2.510601e+02 1.799400e+02
-0 3626     4.124900e+02 1.770001e+01
-1 3626     6.063101e+02 -8.445001e+01
-0 3627     5.451300e+02 -3.520020e+00
-1 3627     7.715100e+02 -1.562300e+02
-7 3627     3.970300e+02 1.647000e+02
-10 3627     5.392600e+02 1.949700e+02
-13 3627     7.641200e+02 -2.109200e+02
-0 3628     -3.740900e+02 -1.708800e+02
-1 3628     -2.073200e+02 -3.244000e+01
-6 3628     -5.495800e+02 -3.930000e+02
-0 3629     -3.839700e+02 -1.716800e+02
-1 3629     -2.160300e+02 -3.019000e+01
-0 3630     4.526001e+01 -1.906900e+02
-1 3630     1.445800e+02 -1.699000e+02
-10 3630     -2.081000e+01 -7.492999e+01
-0 3631     6.269800e+02 -2.220000e+02
-1 3631     7.709000e+02 -4.076400e+02
-0 3632     6.010400e+02 -2.290000e+02
-1 3632     7.389900e+02 -4.054400e+02
-0 3633     6.634900e+02 -2.845700e+02
-1 3633     7.867400e+02 -4.867200e+02
-0 3634     6.419399e+02 -2.982200e+02
-1 3634     7.561300e+02 -4.918600e+02
-0 3635     4.829900e+02 -3.849800e+02
-1 3635     5.445601e+02 -5.170000e+02
-0 3636     -1.538400e+02 -5.241200e+02
-1 3636     -1.346100e+02 -4.234300e+02
-6 3636     -2.317999e+01 -6.737100e+02
-7 3636     -1.485500e+02 -4.466500e+02
-0 3637     -1.228800e+02 -5.434600e+02
-1 3637     -1.136300e+02 -4.512500e+02
-7 3637     -1.134500e+02 -4.584500e+02
-9 3637     1.134300e+02 -4.469600e+02
-0 3638     -1.276400e+02 -5.553400e+02
-1 3638     -1.224900e+02 -4.606100e+02
-0 3639     1.192900e+02 -5.608400e+02
-1 3639     1.073100e+02 -5.518500e+02
-6 3639     2.950600e+02 -5.900100e+02
-10 3639     1.026700e+02 -4.912300e+02
-0 3640     1.947000e+02 4.025000e+02
-1 3640     5.585300e+02 3.585400e+02
-8 3640     -5.359985e+00 1.155300e+02
-11 3640     3.329100e+02 -3.428900e+02
-0 3641     1.949000e+02 3.967100e+02
-1 3641     5.567400e+02 3.527100e+02
-13 3641     3.489200e+02 9.357001e+01
-14 3641     5.101300e+02 -3.366100e+02
-0 3642     3.808300e+02 3.537500e+02
-1 3642     7.395000e+02 2.588500e+02
-0 3643     3.664000e+02 3.329800e+02
-1 3643     7.150800e+02 2.410900e+02
-0 3644     -2.945600e+02 3.269700e+02
-1 3644     3.707001e+01 4.112100e+02
-0 3645     -3.092800e+02 2.976700e+02
-1 3645     1.403998e+01 3.868200e+02
-0 3646     -1.479100e+02 1.896400e+02
-1 3646     1.340200e+02 2.419900e+02
-0 3647     -1.838500e+02 1.884100e+02
-1 3647     9.937000e+01 2.502400e+02
-0 3648     -1.430000e+02 1.738300e+02
-1 3648     1.334400e+02 2.253100e+02
-0 3649     -1.785100e+02 1.701700e+02
-1 3649     9.740997e+01 2.314000e+02
-0 3650     -1.580300e+02 1.691500e+02
-1 3650     1.170400e+02 2.248200e+02
-0 3651     1.427000e+02 -2.158500e+02
-1 3651     2.300400e+02 -2.251500e+02
-0 3652     6.038000e+02 -2.239000e+02
-1 3652     7.445300e+02 -4.017600e+02
-0 3653     7.407800e+02 -3.102100e+02
-1 3653     8.664900e+02 -5.455699e+02
-7 3653     6.403500e+02 -8.056000e+01
-0 3654     6.008800e+02 -3.207200e+02
-1 3654     7.006801e+02 -4.982900e+02
-0 3655     1.785300e+02 -3.478600e+02
-1 3655     2.364800e+02 -3.683200e+02
-0 3656     5.537900e+02 -3.749800e+02
-1 3656     6.254200e+02 -5.342800e+02
-0 3657     5.553300e+02 -3.899300e+02
-1 3657     6.203101e+02 -5.498700e+02
-0 3658     4.078199e+02 3.688300e+02
-1 3658     7.772700e+02 2.668700e+02
-0 3659     3.833600e+02 3.638200e+02
-1 3659     7.464399e+02 2.684300e+02
-0 3660     -2.037800e+02 1.715100e+02
-1 3660     7.414001e+01 2.394200e+02
-0 3661     -3.433200e+02 2.838200e+02
-1 3661     -2.183002e+01 3.824500e+02
-0 3662     -3.433200e+02 2.838200e+02
-1 3662     -2.183002e+01 3.824500e+02
-0 3663     1.019200e+02 -5.572100e+02
-1 3663     9.270001e+01 -5.418900e+02
-0 3664     -3.409600e+02 3.075100e+02
-1 3664     -1.453003e+01 4.047500e+02
-5 3664     5.226001e+01 -3.571500e+02
-0 3665     -3.355800e+02 2.975200e+02
-1 3665     -1.195001e+01 3.935800e+02
-0 3666     -4.386700e+02 2.588500e+02
-1 3666     -1.170800e+02 3.819400e+02
-0 3667     -3.196000e+02 2.951400e+02
-1 3667     3.169983e+00 3.872400e+02
-0 3668     3.103400e+02 -2.624200e+02
-1 3668     3.943000e+02 -3.292400e+02
-12 3668     3.928300e+02 -1.560000e+02
-15 3668     4.252100e+02 -1.784000e+02
-0 3669     5.854800e+02 1.832900e+02
-1 3669     8.719600e+02 2.790002e+01
-10 3669     5.714600e+02 4.180400e+02
-0 3670     3.143000e+02 -6.234003e+01
-1 3670     4.607600e+02 -1.302700e+02
-7 3670     2.275900e+02 9.903000e+01
-10 3670     2.765000e+02 1.015800e+02
-13 3670     6.419399e+02 -2.549100e+02
-15 3670     4.045300e+02 9.470999e+01
-0 3671     -1.943400e+02 -4.537700e+02
-1 3671     -1.458200e+02 -3.457000e+02
-0 3672     -2.454900e+02 -5.802400e+02
-1 3672     -2.380600e+02 -4.433700e+02
-9 3672     2.703998e+01 -5.247300e+02
-0 3673     5.297998e+01 4.916900e+02
-1 3673     4.305300e+02 4.877600e+02
-0 3674     3.541000e+02 -3.287600e+02
-1 3674     4.227100e+02 -4.118300e+02
-0 3675     3.502000e+02 5.475600e+02
-1 3675     7.744600e+02 4.714700e+02
-0 3676     -1.582000e+02 3.185800e+02
-1 3676     1.703300e+02 3.680300e+02
-11 3676     7.719971e+00 -4.285300e+02
-0 3677     1.671100e+02 5.281900e+02
-1 3677     5.623000e+02 4.964500e+02
-0 3678     3.183101e+02 5.467600e+02
-1 3678     7.374800e+02 4.785200e+02
-0 3679     3.577900e+02 -2.521002e+01
-1 3679     5.244500e+02 -1.082500e+02
-15 3679     4.616700e+02 1.516500e+02
-0 3680     2.689700e+02 8.599854e-01
-1 3680     4.301300e+02 -5.165997e+01
-15 3680     3.329301e+02 1.749700e+02
-0 3681     1.849000e+02 8.101001e+01
-1 3681     3.680300e+02 5.467999e+01
-0 3682     -6.335900e+02 -3.714000e+02
-1 3682     -5.007100e+02 -1.376600e+02
-0 3683     6.331000e+01 -7.873999e+01
-1 3683     1.970100e+02 -6.648999e+01
-0 3684     3.761500e+02 4.847100e+02
-1 3684     7.849800e+02 3.965700e+02
-0 3685     -2.557600e+02 3.261600e+02
-1 3685     7.560999e+01 4.007000e+02
-2 3685     -5.339100e+02 4.198999e+01
-15 3685     -4.130800e+02 5.491900e+02
-0 3686     3.614100e+02 5.469100e+02
-1 3686     7.874301e+02 4.681100e+02
-5 3686     7.638500e+02 -8.973999e+01
-12 3686     6.201001e+01 6.103900e+02
-0 3687     3.814200e+02 4.817700e+02
-1 3687     7.907000e+02 3.924700e+02
-0 3688     3.277300e+02 5.120100e+02
-1 3688     7.376600e+02 4.391300e+02
-0 3689     2.613000e+01 -7.321002e+01
-1 3689     1.640400e+02 -4.987000e+01
-15 3689     1.040002e+01 4.140997e+01
-0 3690     2.374700e+02 3.866998e+01
-1 3690     4.087000e+02 -3.919983e+00
-13 3690     5.704301e+02 -1.700800e+02
-0 3691     2.532000e+02 4.583600e+02
-1 3691     6.381899e+02 4.012000e+02
-14 3691     5.624200e+02 -2.684300e+02
-0 3692     1.450300e+02 4.718600e+02
-1 3692     5.237200e+02 4.435500e+02
-0 3693     -3.520700e+02 4.695000e+02
-1 3693     1.385999e+01 5.640500e+02
-0 3694     2.675500e+02 -3.130005e+00
-1 3694     4.271500e+02 -5.508002e+01
-7 3694     1.764600e+02 1.520400e+02
-10 3694     2.165900e+02 1.648200e+02
-15 3694     3.312200e+02 1.692600e+02
-0 3695     3.455400e+02 4.671100e+02
-1 3695     7.446400e+02 3.861200e+02
-7 3695     1.063500e+02 5.697900e+02
-0 3696     2.078400e+02 3.443100e+02
-1 3696     5.495800e+02 2.968200e+02
-6 3696     -1.919300e+02 3.753800e+02
-13 3696     3.734301e+02 5.048999e+01
-14 3696     5.419200e+02 -3.921900e+02
-0 3697     3.526300e+02 4.851200e+02
-1 3697     7.581200e+02 4.034600e+02
-5 3697     7.574100e+02 -1.560300e+02
-6 3697     -9.751999e+01 5.747100e+02
-12 3697     6.495001e+01 5.400400e+02
-14 3697     6.591300e+02 -2.349300e+02
-0 3698     2.837600e+02 5.317600e+02
-1 3698     6.931600e+02 4.712600e+02
-0 3699     1.603199e+02 1.140002e+01
-1 3699     3.188600e+02 -6.710022e+00
-15 3699     1.811300e+02 1.745600e+02
-0 3700     1.945500e+02 4.797200e+02
-1 3700     5.797900e+02 4.386600e+02
-0 3701     4.637000e+01 3.815997e+01
-1 3701     2.164100e+02 5.312000e+01
-7 3701     -4.359003e+01 1.589000e+02
-10 3701     -4.028998e+01 1.885700e+02
-15 3701     2.290997e+01 1.954000e+02
-0 3702     2.333101e+02 -1.993100e+02
-1 3702     3.275200e+02 -2.388200e+02
-15 3702     3.086400e+02 -1.022000e+02
-0 3703     2.222200e+02 4.131800e+02
-1 3703     5.914000e+02 3.621300e+02
-13 3703     3.682600e+02 1.087300e+02
-14 3703     5.340900e+02 -3.185000e+02
-0 3704     2.238300e+02 4.501300e+02
-1 3704     6.036000e+02 4.004800e+02
-0 3705     1.524200e+02 5.251100e+02
-1 3705     5.460100e+02 4.970100e+02
-0 3706     1.149800e+02 5.046100e+02
-1 3706     5.001100e+02 4.851100e+02
-0 3707     1.885200e+02 5.347700e+02
-1 3707     5.879200e+02 4.980300e+02
-14 3707     4.944301e+02 -1.923200e+02
-0 3708     2.206700e+02 4.455200e+02
-1 3708     5.987800e+02 3.963300e+02
-6 3708     -2.281500e+02 4.973600e+02
-11 3708     3.519700e+02 -3.027600e+02
-12 3708     -6.178998e+01 4.758300e+02
-0 3709     3.547600e+02 5.406500e+02
-1 3709     7.775000e+02 4.628600e+02
-5 3709     7.571899e+02 -9.685999e+01
-14 3709     6.559700e+02 -1.770100e+02
-0 3710     3.585300e+02 5.440700e+02
-1 3710     7.833000e+02 4.658300e+02
-2 3710     1.787000e+01 3.122800e+02
-14 3710     6.592300e+02 -1.731700e+02
-0 3711     2.460200e+02 5.123500e+02
-1 3711     6.447800e+02 4.601300e+02
-0 3712     1.125800e+02 -9.183002e+01
-1 3712     2.409200e+02 -9.420001e+01
-0 3713     4.084998e+01 -1.458900e+02
-1 3713     1.539900e+02 -1.246000e+02
-7 3713     -1.698999e+01 -2.365002e+01
-0 3714     5.196801e+02 -1.669800e+02
-1 3714     6.749800e+02 -3.127100e+02
-7 3714     4.110200e+02 1.242999e+01
-12 3714     5.235100e+02 -4.290997e+01
-0 3715     -4.696500e+02 -2.280100e+02
-1 3715     -3.117300e+02 -5.715997e+01
-0 3716     3.643600e+02 3.380600e+02
-1 3716     7.149200e+02 2.473100e+02
-6 3716     -1.021997e+01 4.098300e+02
-0 3717     1.834500e+02 4.921300e+02
-1 3717     5.700800e+02 4.547800e+02
-11 3717     3.141500e+02 -2.638300e+02
-0 3718     2.477300e+02 3.510700e+02
-1 3718     5.948400e+02 2.927000e+02
-0 3719     4.505900e+02 2.879200e+02
-1 3719     7.781600e+02 1.739500e+02
-10 3719     4.047300e+02 5.283500e+02
-0 3720     -1.261000e+02 4.587000e+02
-1 3720     2.368500e+02 4.990100e+02
-2 3720     -4.080500e+02 2.109900e+02
-12 3720     -4.351000e+02 4.417300e+02
-0 3721     -1.191200e+02 6.158002e+01
-1 3721     8.151001e+01 1.190300e+02
-0 3722     -6.123999e+01 -1.658002e+01
-1 3722     1.030600e+02 2.931000e+01
-10 3722     -1.626100e+02 1.153800e+02
-0 3723     3.506000e+01 4.793400e+02
-1 3723     4.082200e+02 4.794900e+02
-0 3724     -3.329999e+01 -1.798800e+02
-1 3724     7.348999e+01 -1.349300e+02
-0 3725     1.370001e+01 -2.167300e+02
-1 3725     1.046900e+02 -1.842100e+02
-10 3725     -5.440002e+01 -1.081100e+02
-15 3725     1.159998e+01 -1.543600e+02
-0 3726     5.119995e+00 8.357001e+01
-1 3726     1.939700e+02 1.072400e+02
-10 3726     -9.602002e+01 2.386800e+02
-15 3726     -3.875000e+01 2.519300e+02
-0 3727     -8.681400e+02 -2.117999e+01
-1 3727     -5.789200e+02 2.306400e+02
-0 3728     -8.686800e+02 -3.962000e+01
-1 3728     -5.851400e+02 2.147000e+02
-0 3729     -8.730700e+02 -2.467999e+01
-1 3729     -5.837300e+02 2.291000e+02
-0 3730     -8.664600e+02 -6.396997e+01
-1 3730     -5.908600e+02 1.930800e+02
-0 3731     -3.163200e+02 1.749900e+02
-1 3731     -3.082001e+01 2.721900e+02
-0 3732     -2.743300e+02 1.901000e+02
-1 3732     1.378003e+01 2.755500e+02
-0 3733     -7.878000e+02 4.977002e+01
-1 3733     -4.913600e+02 2.749700e+02
-0 3734     -4.585100e+02 8.787000e+01
-1 3734     -1.921600e+02 2.279700e+02
-0 3735     -8.655500e+02 -2.790002e+01
-1 3735     -5.788600e+02 2.245000e+02
-0 3736     -4.439600e+02 4.770001e+01
-1 3736     -1.930400e+02 1.872300e+02
-0 3737     -4.439600e+02 4.770001e+01
-1 3737     -1.930400e+02 1.872300e+02
-0 3738     -4.101100e+02 4.865002e+01
-1 3738     -1.622100e+02 1.792800e+02
-0 3739     -4.596500e+02 2.849000e+02
-1 3739     -1.299700e+02 4.116200e+02
-7 3739     -6.641300e+02 2.878600e+02
-0 3740     -4.505200e+02 -5.200012e+00
-1 3740     -2.174800e+02 1.403100e+02
-2 3740     -5.892300e+02 -2.918400e+02
-0 3741     5.231400e+02 -1.409700e+02
-1 3741     6.897500e+02 -2.880200e+02
-0 3742     -5.900269e-01 7.428003e+01
-1 3742     1.854900e+02 1.010100e+02
-10 3742     -1.023600e+02 2.277400e+02
-0 3743     -8.755800e+02 -1.501001e+01
-1 3743     -5.826400e+02 2.383200e+02
-0 3744     -6.650800e+02 3.969300e+02
-1 3744     -2.734200e+02 5.594400e+02
-0 3745     2.899800e+02 1.971400e+02
-1 3745     5.774700e+02 1.261400e+02
-10 3745     2.246600e+02 4.031100e+02
-0 3746     3.177700e+02 2.223100e+02
-1 3746     6.168000e+02 1.433900e+02
-7 3746     1.328200e+02 3.386900e+02
-0 3747     2.475699e+02 3.360700e+02
-1 3747     5.878400e+02 2.776100e+02
-7 3747     3.841998e+01 4.342600e+02
-0 3748     3.557500e+02 5.011500e+02
-1 3748     7.669200e+02 4.202300e+02
-6 3748     -9.720001e+01 5.956200e+02
-12 3748     6.504999e+01 5.587200e+02
-14 3748     6.606500e+02 -2.178800e+02
-0 3749     -3.124100e+02 -1.242300e+02
-1 3749     -1.343100e+02 -7.119995e+00
-0 3750     -8.152002e+01 2.263600e+02
-1 3750     2.125400e+02 2.587400e+02
-0 3751     -4.087800e+02 -7.163000e+01
-1 3751     -2.032900e+02 6.776001e+01
-15 3751     -5.697800e+02 -1.771002e+01
-0 3752     3.493700e+02 5.610800e+02
-1 3752     7.769000e+02 4.861500e+02
-14 3752     6.485400e+02 -1.564900e+02
-0 3753     -8.940002e+00 1.165000e+02
-1 3753     1.934301e+02 1.437200e+02
-12 3753     -8.203998e+01 1.909200e+02
-0 3754     2.289200e+02 -4.129100e+02
-1 3754     2.644800e+02 -4.492300e+02
-0 3755     -2.479300e+02 -5.147600e+02
-1 3755     -2.161300e+02 -3.834800e+02
-6 3755     -1.408700e+02 -7.106100e+02
-0 3756     3.508900e+02 4.895400e+02
-1 3756     7.569800e+02 4.085500e+02
-5 3756     7.555601e+02 -1.514300e+02
-14 3756     6.567200e+02 -2.302000e+02
-0 3757     -5.680300e+02 6.010010e+00
-1 3757     -3.175100e+02 1.811600e+02
-10 3757     -7.683400e+02 8.898999e+01
-0 3758     3.438900e+02 5.194500e+02
-1 3758     7.582900e+02 4.428700e+02
-11 3758     4.577800e+02 -2.307700e+02
-0 3759     -8.515800e+02 -1.647400e+02
-1 3759     -6.108700e+02 1.015900e+02
-0 3760     -4.653700e+02 2.938900e+02
-1 3760     -1.337400e+02 4.215100e+02
-0 3761     -4.490600e+02 -1.869995e+00
-1 3761     -2.145100e+02 1.427600e+02
-0 3762     -3.421900e+02 8.409000e+01
-1 3762     -8.733002e+01 1.940600e+02
-0 3763     2.042300e+02 5.116700e+02
-1 3763     5.987300e+02 4.698800e+02
-0 3764     2.753500e+02 4.797900e+02
-1 3764     6.686500e+02 4.176800e+02
-0 3765     1.915400e+02 5.187800e+02
-1 3765     5.870601e+02 4.805600e+02
-11 3765     3.185400e+02 -2.397500e+02
-0 3766     2.834600e+02 4.919400e+02
-1 3766     6.832700e+02 4.300300e+02
-0 3767     -1.470100e+02 2.441600e+02
-1 3767     1.549200e+02 2.937500e+02
-0 3768     -1.509000e+02 2.841100e+02
-1 3768     1.654301e+02 3.331500e+02
-10 3768     -3.013700e+02 4.624200e+02
-0 3769     2.524700e+02 2.782700e+02
-1 3769     5.703199e+02 2.181600e+02
-6 3769     -9.717001e+01 3.146400e+02
-13 3769     4.298700e+02 -3.400269e-01
-14 3769     6.149500e+02 -4.600100e+02
-0 3770     -2.468900e+02 -4.181600e+02
-1 3770     -1.805600e+02 -2.964600e+02
-15 3770     -3.085500e+02 -4.615100e+02
-0 3771     -1.119900e+02 2.551600e+02
-1 3771     1.932600e+02 2.949900e+02
-10 3771     -2.522800e+02 4.309200e+02
-15 3771     -2.050000e+02 4.690900e+02
-0 3772     -4.729999e+01 3.028000e+02
-1 3772     2.741400e+02 3.239700e+02
-6 3772     -4.735700e+02 2.578700e+02
-0 3773     -2.393400e+02 1.980400e+02
-1 3773     4.997998e+01 2.737400e+02
-0 3774     -1.134700e+02 2.516200e+02
-1 3774     1.903199e+02 2.921600e+02
-0 3775     2.865300e+02 -1.205600e+02
-1 3775     4.092000e+02 -1.786200e+02
-10 3775     2.493199e+02 3.220001e+01
-0 3776     -6.734998e+01 2.869800e+02
-1 3776     2.483600e+02 3.139900e+02
-6 3776     -4.878000e+02 2.334900e+02
-15 3776     -1.473700e+02 5.197200e+02
-0 3777     -2.092200e+02 -4.780500e+02
-1 3777     -1.680400e+02 -3.631200e+02
-0 3778     -2.367600e+02 1.732500e+02
-1 3778     4.353003e+01 2.497500e+02
-0 3779     -1.410400e+02 1.554700e+02
-1 3779     1.282600e+02 2.073900e+02
-0 3780     -1.991400e+02 2.368000e+02
-1 3780     1.020700e+02 3.004300e+02
-0 3781     2.571700e+02 5.645001e+01
-1 3781     4.365100e+02 7.440002e+00
-0 3782     -4.862400e+02 1.795700e+02
-1 3782     -1.855100e+02 3.195200e+02
-0 3783     6.125601e+02 1.570007e+00
-1 3783     8.428800e+02 -1.727900e+02
-0 3784     2.412200e+02 4.719200e+02
-1 3784     6.286600e+02 4.184500e+02
-6 3784     -2.116700e+02 5.349400e+02
-12 3784     -4.559998e+01 5.094900e+02
-0 3785     3.608900e+02 -5.109003e+01
-1 3785     5.163900e+02 -1.350800e+02
-6 3785     3.295500e+02 5.815002e+01
-10 3785     3.291801e+02 1.197200e+02
-12 3785     3.743101e+02 9.254999e+01
-15 3785     4.685000e+02 1.164900e+02
-0 3786     5.511100e+02 2.385600e+02
-1 3786     8.532800e+02 9.694000e+01
-7 3786     3.708300e+02 4.013400e+02
-10 3786     5.267400e+02 4.793500e+02
-11 3786     6.798700e+02 -4.842100e+02
-15 3786     7.112100e+02 5.456200e+02
-0 3787     5.412700e+02 2.246500e+02
-1 3787     8.380000e+02 8.514999e+01
-10 3787     5.161300e+02 4.619600e+02
-15 3787     6.989100e+02 5.243900e+02
-0 3788     -1.237400e+02 -5.082200e+02
-1 3788     -1.015000e+02 -4.188300e+02
-0 3789     3.143199e+02 -2.083100e+02
-1 3789     4.081899e+02 -2.756200e+02
-10 3789     2.906000e+02 -6.626001e+01
-15 3789     4.215699e+02 -1.043700e+02
-0 3790     3.534900e+02 2.365002e+01
-1 3790     5.408500e+02 -5.859998e+01
-15 3790     4.508400e+02 2.176200e+02
-0 3791     4.765997e+01 -3.970300e+02
-1 3791     9.104999e+01 -3.707700e+02
-7 3791     2.870001e+01 -2.770400e+02
-13 3791     4.551000e+02 -5.821100e+02
-0 3792     2.928700e+02 2.025500e+02
-1 3792     5.824399e+02 1.310100e+02
-0 3793     3.640200e+02 -1.176300e+02
-1 3793     4.963101e+02 -2.025800e+02
-10 3793     3.392800e+02 4.256000e+01
-0 3794     1.550300e+02 1.847300e+02
-1 3794     3.843199e+02 1.635600e+02
-10 3794     6.765997e+01 3.737800e+02
-15 3794     1.562200e+02 4.130800e+02
-0 3795     3.866600e+02 -3.631000e+01
-1 3795     5.545601e+02 -1.299000e+02
-10 3795     3.579301e+02 1.397400e+02
-15 3795     5.046000e+02 1.402500e+02
-0 3796     7.959998e+01 2.567400e+02
-1 3796     3.834301e+02 2.449400e+02
-0 3797     2.124301e+02 2.073999e+01
-1 3797     3.756600e+02 -1.341998e+01
-10 3797     1.501500e+02 1.875100e+02
-15 3797     2.516300e+02 1.947200e+02
-0 3798     -1.863900e+02 -4.899399e+02
-1 3798     -1.518900e+02 -3.815300e+02
-7 3798     -1.912300e+02 -4.192300e+02
-0 3799     -3.653998e+01 1.371100e+02
-1 3799     1.781100e+02 1.704000e+02
-15 3799     -1.002800e+02 3.190300e+02
-0 3800     -5.451001e+01 2.389500e+02
-1 3800     2.431200e+02 2.641800e+02
-0 3801     2.336000e+02 1.346800e+02
-1 3801     4.424200e+02 9.187000e+01
-10 3801     1.635800e+02 3.232300e+02
-15 3801     2.689600e+02 3.553100e+02
-0 3802     6.199301e+02 -8.979980e+00
-1 3802     8.470300e+02 -1.860100e+02
-0 3803     5.782500e+02 -1.962000e+01
-1 3803     8.005699e+02 -1.838700e+02
-0 3804     2.455200e+02 1.044900e+02
-1 3804     4.416000e+02 5.914001e+01
-15 3804     2.880500e+02 3.140900e+02
-0 3805     -6.388000e+01 1.878600e+02
-1 3805     2.154000e+02 2.173600e+02
-0 3806     6.805601e+02 -1.204000e+02
-1 3806     8.764800e+02 -3.247300e+02
-0 3807     1.080700e+02 -3.521000e+02
-1 3807     1.659600e+02 -3.485300e+02
-15 3807     1.613400e+02 -3.252500e+02
-0 3808     2.615400e+02 -3.032700e+02
-1 3808     3.330100e+02 -3.519400e+02
-0 3809     1.079999e+01 -2.801100e+02
-1 3809     9.065997e+01 -2.461700e+02
-7 3809     -2.813000e+01 -1.668800e+02
-10 3809     -5.096997e+01 -1.809000e+02
-15 3809     1.878003e+01 -2.405000e+02
-0 3810     -1.801100e+02 -4.776001e+01
-1 3810     -1.408002e+01 3.265002e+01
-12 3810     -2.453300e+02 -5.460999e+01
-15 3810     -2.692800e+02 4.735999e+01
-0 3811     2.047600e+02 3.591400e+02
-1 3811     5.523400e+02 3.123800e+02
-10 3811     1.097700e+02 5.880300e+02
-0 3812     2.599000e+02 2.961200e+02
-1 3812     5.855200e+02 2.340100e+02
-0 3813     2.029000e+02 3.214100e+02
-1 3813     5.355800e+02 2.751500e+02
-0 3814     -1.397400e+02 -5.341801e+02
-1 3814     -1.257900e+02 -4.372000e+02
-0 3815     3.255100e+02 5.779000e+02
-1 3815     7.556600e+02 5.105000e+02
-2 3815     -1.679999e+01 3.458100e+02
-14 3815     6.241000e+02 -1.413200e+02
-0 3816     2.269800e+02 5.089400e+02
-1 3816     6.227400e+02 4.613600e+02
-0 3817     2.196500e+02 5.075300e+02
-1 3817     6.142900e+02 4.618100e+02
-0 3818     2.895200e+02 5.694700e+02
-1 3818     7.109301e+02 5.102700e+02
-14 3818     5.897200e+02 -1.519700e+02
-0 3819     6.192999e+01 2.501600e+02
-1 3819     3.633700e+02 2.432500e+02
-0 3820     -4.390900e+02 9.548999e+01
-1 3820     -1.721200e+02 2.297300e+02
-0 3821     -1.164500e+02 3.539500e+02
-1 3821     2.211899e+02 3.925500e+02
-0 3822     2.360900e+02 3.458000e+02
-1 3822     5.796000e+02 2.905300e+02
-0 3823     5.486100e+02 2.326400e+02
-1 3823     8.489000e+02 9.095001e+01
-11 3823     6.789700e+02 -4.923600e+02
-15 3823     7.085699e+02 5.365600e+02
-0 3824     -2.410999e+01 -6.006000e+01
-1 3824     1.223700e+02 -2.302002e+01
-0 3825     6.463300e+02 -2.384200e+02
-1 3825     7.867500e+02 -4.328100e+02
-10 3825     6.769700e+02 -6.565002e+01
-0 3826     -4.933002e+01 1.912800e+02
-1 3826     2.305500e+02 2.166700e+02
-7 3826     -2.178900e+02 2.584000e+02
-10 3826     -1.701300e+02 3.621800e+02
-0 3827     -1.302500e+02 -4.854900e+02
-1 3827     -9.903998e+01 -3.956300e+02
-0 3828     2.366700e+02 1.629500e+02
-1 3828     4.577500e+02 1.188900e+02
-15 3828     2.703000e+02 3.936500e+02
-0 3829     2.095601e+02 -4.036600e+02
-1 3829     2.479600e+02 -4.335601e+02
-0 3830     1.259900e+02 -2.508600e+02
-1 3830     2.032500e+02 -2.537900e+02
-10 3830     7.827002e+01 -1.347700e+02
-0 3831     8.819000e+01 5.029900e+02
-1 3831     4.710100e+02 4.902100e+02
-0 3832     -3.113800e+02 5.415002e+01
-1 3832     -6.946997e+01 1.579900e+02
-0 3833     -2.798400e+02 1.832400e+02
-1 3833     6.130005e+00 2.704400e+02
-0 3834     -4.627400e+02 1.279000e+02
-1 3834     -1.820800e+02 2.658600e+02
-0 3835     -4.540100e+02 1.309400e+02
-1 3835     -1.730800e+02 2.664600e+02
-0 3836     -7.824500e+02 6.409973e+00
-1 3836     -5.010200e+02 2.348600e+02
-0 3837     3.553199e+02 5.845900e+02
-1 3837     7.918300e+02 5.108400e+02
-14 3837     6.518700e+02 -1.327200e+02
-0 3838     -9.469000e+01 2.332200e+02
-1 3838     2.019399e+02 2.692100e+02
-10 3838     -2.270400e+02 4.071000e+02
-0 3839     -1.790000e+02 2.298700e+02
-1 3839     1.191000e+02 2.885500e+02
-0 3840     3.899200e+02 -8.769000e+01
-1 3840     5.365000e+02 -1.818300e+02
-0 3841     6.964700e+02 -3.105000e+02
-1 3841     8.135300e+02 -5.271500e+02
-7 3841     6.018101e+02 -8.823999e+01
-0 3842     7.478000e+02 -3.044500e+02
-1 3842     8.775000e+02 -5.424800e+02
-0 3843     -1.206700e+02 -5.135500e+02
-1 3843     -1.005900e+02 -4.245300e+02
-0 3844     6.432200e+02 -2.826000e+02
-1 3844     7.646400e+02 -4.767200e+02
-7 3844     5.489200e+02 -7.208002e+01
-0 3845     4.174800e+02 -1.062300e+02
-1 3845     5.575699e+02 -2.098300e+02
-0 3846     3.220900e+02 5.450000e+01
-1 3846     5.091200e+02 -1.579999e+01
-15 3846     4.012800e+02 2.561600e+02
-0 3847     6.752700e+02 -3.604000e+02
-1 3847     7.675500e+02 -5.690400e+02
-7 3847     5.947200e+02 -1.362300e+02
-12 3847     7.714500e+02 -1.856300e+02
-0 3848     3.429000e+02 -1.173100e+02
-1 3848     4.734399e+02 -1.942100e+02
-7 3848     2.634000e+02 5.001001e+01
-0 3849     -2.720800e+02 6.789001e+01
-1 3849     -2.806000e+01 1.603000e+02
-0 3850     -3.051800e+02 2.200500e+02
-1 3850     -4.619995e+00 3.117400e+02
-0 3851     -2.005100e+02 1.658900e+02
-1 3851     7.510999e+01 2.331700e+02
-0 3852     6.044500e+02 -2.826600e+02
-1 3852     7.206200e+02 -4.613300e+02
-3 3852     5.970100e+02 -5.292200e+02
-15 3852     8.427200e+02 -1.701300e+02
-0 3853     -1.564000e+02 4.736200e+02
-1 3853     2.094301e+02 5.213700e+02
-3 3853     -5.662200e+02 -1.005400e+02
-0 3854     3.870300e+02 5.432600e+02
-1 3854     8.165601e+02 4.578100e+02
-3 3854     -1.054700e+02 -2.231000e+01
-0 3855     3.161899e+02 5.366400e+02
-1 3855     7.319301e+02 4.681200e+02
-2 3855     -1.660999e+01 3.030400e+02
-0 3856     1.930400e+02 4.848500e+02
-1 3856     5.792500e+02 4.445900e+02
-9 3856     -2.492600e+02 2.829400e+02
-0 3857     1.974301e+02 5.010000e+02
-1 3857     5.879700e+02 4.604200e+02
-0 3858     1.538700e+02 4.865300e+02
-1 3858     5.368700e+02 4.567400e+02
-11 3858     2.876500e+02 -2.697500e+02
-0 3859     5.460999e+01 3.270020e+00
-1 3859     2.130699e+02 1.663000e+01
-10 3859     -3.041998e+01 1.502700e+02
-15 3859     3.809003e+01 1.492200e+02
-0 3860     2.277900e+02 2.324600e+02
-1 3860     5.258700e+02 1.796800e+02
-10 3860     1.485500e+02 4.386900e+02
-13 3860     4.206100e+02 -4.023999e+01
-14 3860     6.049399e+02 -5.116801e+02
-0 3861     3.121600e+02 5.358500e+02
-1 3861     7.269800e+02 4.682500e+02
-14 3861     6.150601e+02 -1.844900e+02
-0 3862     1.631899e+02 5.141800e+02
-1 3862     5.546801e+02 4.827400e+02
-14 3862     4.707800e+02 -2.149700e+02
-0 3863     3.511700e+02 5.524300e+02
-1 3863     7.772300e+02 4.761400e+02
-6 3863     -1.120700e+02 6.557800e+02
-14 3863     6.513300e+02 -1.655300e+02
-0 3864     3.501001e+01 1.502900e+02
-1 3864     2.470300e+02 1.645000e+02
-5 3864     6.414900e+02 -5.017800e+02
-6 3864     -7.541998e+01 1.878900e+02
-15 3864     -5.570007e+00 3.469600e+02
-0 3865     -4.559300e+02 9.592001e+01
-1 3865     -1.862700e+02 2.348400e+02
-0 3866     -1.615500e+02 1.761000e+02
-1 3866     1.161800e+02 2.325100e+02
-0 3867     2.499301e+02 2.567300e+02
-1 3867     5.589100e+02 1.975900e+02
-10 3867     1.723400e+02 4.696100e+02
-14 3867     6.202400e+02 -4.831600e+02
-0 3868     5.159003e+01 1.120000e+02
-1 3868     2.473199e+02 1.231500e+02
-0 3869     -2.152700e+02 -4.819900e+02
-1 3869     -1.749800e+02 -3.646300e+02
-0 3870     4.305601e+02 2.646400e+02
-1 3870     7.505400e+02 1.546700e+02
-14 3870     8.323700e+02 -4.596300e+02
-0 3871     2.502100e+02 2.601100e+02
-1 3871     5.606700e+02 2.007400e+02
-6 3871     -8.754999e+01 2.947200e+02
-0 3872     -1.414400e+02 2.309200e+02
-1 3872     1.555300e+02 2.795900e+02
-0 3873     3.310500e+02 -2.946997e+01
-1 3873     4.905300e+02 -1.032500e+02
-7 3873     2.359301e+02 1.323000e+02
-10 3873     2.925699e+02 1.412100e+02
-0 3874     -2.582900e+02 -4.258900e+02
-1 3874     -1.937700e+02 -2.999100e+02
-0 3875     -1.265900e+02 2.347200e+02
-1 3875     1.713000e+02 2.792500e+02
-0 3876     -5.109300e+02 1.390800e+02
-1 3876     -2.215400e+02 2.882900e+02
-0 3877     1.532800e+02 -5.453199e+02
-1 3877     1.460699e+02 -5.496200e+02
-10 3877     1.411800e+02 -4.688101e+02
-0 3878     6.810999e+01 2.601600e+02
-1 3878     3.733101e+02 2.514900e+02
-0 3879     6.651801e+02 -9.409003e+01
-1 3879     8.682400e+02 -2.915100e+02
-0 3880     5.255800e+02 1.316200e+02
-1 3880     7.935500e+02 -8.830017e+00
-0 3881     -6.502002e+01 -5.657400e+02
-1 3881     -6.877002e+01 -4.915900e+02
-0 3882     4.137600e+02 4.644800e+02
-1 3882     8.232500e+02 3.648400e+02
-7 3882     1.728101e+02 5.719100e+02
-0 3883     3.590100e+02 -9.198999e+01
-1 3883     4.996300e+02 -1.750100e+02
-0 3884     1.318000e+02 -1.791800e+02
-1 3884     2.321801e+02 -1.861200e+02
-10 3884     7.772998e+01 -5.196997e+01
-15 3884     1.673000e+02 -8.745001e+01
-0 3885     2.700200e+02 -2.902900e+02
-1 3885     3.462100e+02 -3.428200e+02
-15 3885     3.738300e+02 -2.203800e+02
-0 3886     6.350000e+01 1.584600e+02
-1 3886     2.816600e+02 1.642700e+02
-10 3886     -3.632001e+01 3.326500e+02
-15 3886     3.304999e+01 3.626100e+02
-0 3887     2.931500e+02 2.755300e+02
-1 3887     6.123600e+02 2.037200e+02
-6 3887     -4.896997e+01 3.234200e+02
-0 3888     1.597800e+02 4.938600e+02
-1 3888     5.449000e+02 4.627800e+02
-11 3888     2.915601e+02 -2.632400e+02
-0 3889     -7.145600e+02 -3.606100e+02
-1 3889     -5.637800e+02 -1.054700e+02
-0 3890     4.044301e+02 -2.188900e+02
-1 3890     5.186200e+02 -3.201200e+02
-7 3890     3.270100e+02 -4.696997e+01
-15 3890     5.530200e+02 -1.066300e+02
-0 3891     2.975300e+02 5.616200e+02
-1 3891     7.181500e+02 4.997200e+02
-11 3891     4.104900e+02 -1.973300e+02
-0 3892     -1.211300e+02 2.577600e+02
-1 3892     1.855000e+02 2.998300e+02
-15 3892     -2.179100e+02 4.719800e+02
-0 3893     3.991700e+02 4.590500e+02
-1 3893     8.039301e+02 3.633300e+02
-0 3894     5.173900e+02 -3.242000e+02
-1 3894     6.071500e+02 -4.690601e+02
-7 3894     4.457500e+02 -1.307900e+02
-10 3894     5.351500e+02 -1.769800e+02
-0 3895     3.556801e+02 5.722700e+02
-1 3895     7.885500e+02 4.970800e+02
-0 3896     1.578998e+01 5.728000e+02
-1 3896     4.119900e+02 5.802800e+02
-11 3896     1.574000e+02 -2.017100e+02
-0 3897     3.345100e+02 5.665900e+02
-1 3897     7.620200e+02 4.960300e+02
-0 3898     4.184900e+02 5.518500e+02
-1 3898     8.567400e+02 4.594800e+02
-0 3899     3.491200e+02 5.688000e+02
-1 3899     7.799399e+02 4.949000e+02
-2 3899     6.010010e+00 3.377600e+02
-6 3899     -1.185000e+02 6.772900e+02
-8 3899     8.573999e+01 2.654600e+02
-0 3900     4.167700e+02 5.471100e+02
-1 3900     8.530800e+02 4.545200e+02
-0 3901     3.217400e+02 5.498100e+02
-1 3901     7.421300e+02 4.810700e+02
-2 3901     -1.382001e+01 3.169400e+02
-5 3901     7.228199e+02 -8.873999e+01
-6 3901     -1.426000e+02 6.483800e+02
-13 3901     4.423900e+02 2.317500e+02
-14 3901     6.225699e+02 -1.698800e+02
-0 3902     1.534800e+02 5.844300e+02
-1 3902     5.630300e+02 5.586200e+02
-0 3903     1.786100e+02 5.222900e+02
-1 3903     5.738900e+02 4.876800e+02
-0 3904     4.154800e+02 4.569600e+02
-1 3904     8.227000e+02 3.567400e+02
-5 3904     8.242400e+02 -1.840300e+02
-7 3904     1.723800e+02 5.666500e+02
-0 3905     2.241200e+02 4.896700e+02
-1 3905     6.148101e+02 4.415100e+02
-7 3905     -1.060999e+01 5.802200e+02
-0 3906     3.494000e+02 4.652100e+02
-1 3906     7.481700e+02 3.827700e+02
-2 3906     2.133002e+01 2.264700e+02
-7 3906     1.101400e+02 5.677800e+02
-9 3906     -1.322200e+02 2.724700e+02
-11 3906     4.698800e+02 -2.787500e+02
-0 3907     3.776700e+02 4.556900e+02
-1 3907     7.782000e+02 3.652700e+02
-0 3908     3.094500e+02 3.915100e+02
-1 3908     6.772200e+02 3.168600e+02
-6 3908     -1.064000e+02 4.542900e+02
-7 3908     8.609998e+01 4.931200e+02
-13 3908     4.487600e+02 9.748001e+01
-0 3909     8.619995e+00 4.878003e+01
-1 3909     1.849700e+02 7.440997e+01
-0 3910     -6.125000e+01 -5.581899e+02
-1 3910     -6.187000e+01 -4.862200e+02
-7 3910     -4.803003e+01 -4.595500e+02
-10 3910     -1.038400e+02 -5.081600e+02
-0 3911     -6.941998e+01 -5.573400e+02
-1 3911     -6.990002e+01 -4.824800e+02
-0 3912     2.532100e+02 -1.057800e+02
-1 3912     3.803199e+02 -1.527600e+02
-10 3912     2.100601e+02 4.459998e+01
-0 3913     2.230699e+02 2.951800e+02
-1 3913     5.459600e+02 2.433600e+02
-0 3914     -7.797900e+02 -8.690002e+00
-1 3914     -5.035700e+02 2.209000e+02
-0 3915     -5.767800e+02 -4.369995e+00
-1 3915     -3.289900e+02 1.742900e+02
-0 3916     3.417999e+01 -1.272800e+02
-1 3916     1.539600e+02 -1.045300e+02
-6 3916     5.466998e+01 -1.124500e+02
-12 3916     6.090002e+01 -6.279999e+01
-15 3916     2.803998e+01 -3.064001e+01
-0 3917     8.151001e+01 2.450400e+02
-1 3917     3.810400e+02 2.330700e+02
-0 3918     3.536400e+02 -1.771800e+02
-1 3918     4.602500e+02 -2.577800e+02
-0 3919     -5.026001e+01 -1.713500e+02
-1 3919     6.073999e+01 -1.219500e+02
-0 3920     -2.931000e+01 -3.432200e+02
-1 3920     4.189001e+01 -2.954000e+02
-0 3921     3.959900e+02 -1.115002e+01
-1 3921     5.743101e+02 -1.071900e+02
-0 3922     1.822300e+02 -3.617900e+02
-1 3922     2.386300e+02 -3.844800e+02
-0 3923     1.943500e+02 -3.792200e+02
-1 3923     2.448700e+02 -4.044000e+02
-0 3924     5.209000e+02 -2.723900e+02
-1 3924     6.323199e+02 -4.189800e+02
-0 3925     5.113101e+02 -3.692700e+02
-1 3925     5.818000e+02 -5.120699e+02
-0 3926     6.195300e+02 -3.508800e+02
-1 3926     7.083600e+02 -5.362100e+02
-15 3926     8.716400e+02 -2.618500e+02
-0 3927     5.321997e+01 2.404100e+02
-1 3927     3.508400e+02 2.365500e+02
-7 3927     -1.286400e+02 3.178700e+02
-0 3928     2.054301e+02 5.152000e+02
-1 3928     6.011700e+02 4.733200e+02
-0 3929     2.996600e+02 5.306100e+02
-1 3929     7.110000e+02 4.660500e+02
-0 3930     2.630500e+02 -1.439900e+02
-1 3930     3.763700e+02 -1.937800e+02
-7 3930     1.973101e+02 1.469000e+01
-10 3930     2.251400e+02 2.010010e+00
-0 3931     3.664000e+02 3.329800e+02
-1 3931     7.150800e+02 2.410900e+02
-6 3931     -4.510010e+00 4.049200e+02
-0 3932     1.131200e+02 1.774000e+02
-1 3932     3.393500e+02 1.670200e+02
-0 3933     -7.881700e+02 -5.370699e+02
-1 3933     -6.757700e+02 -2.351400e+02
-0 3934     -7.023400e+02 -5.800000e+02
-1 3934     -6.223300e+02 -2.975100e+02
-0 3935     -1.417500e+02 2.733000e+02
-1 3935     1.707300e+02 3.201000e+02
-11 3935     2.106000e+01 -4.710100e+02
-15 3935     -2.478800e+02 4.904900e+02
-0 3936     -1.957000e+02 2.128700e+02
-1 3936     9.690002e+01 2.765900e+02
-0 3937     5.190200e+02 -2.590400e+02
-1 3937     6.357300e+02 -4.044200e+02
-0 3938     -5.558400e+02 6.359985e+00
-1 3938     -3.070600e+02 1.783900e+02
-0 3939     -7.390997e+01 -2.766700e+02
-1 3939     1.816998e+01 -2.170200e+02
-7 3939     -1.193100e+02 -1.846000e+02
-15 3939     -9.434998e+01 -2.472100e+02
-0 3940     -1.538400e+02 -5.241200e+02
-1 3940     -1.346100e+02 -4.234300e+02
-4 3940     -6.580100e+02 -2.633700e+02
-7 3940     -1.485500e+02 -4.466500e+02
-9 3940     7.290997e+01 -4.465500e+02
-0 3941     -6.892999e+01 -1.369000e+02
-1 3941     5.648999e+01 -8.354999e+01
-10 3941     -1.583100e+02 -2.481000e+01
-0 3942     7.225000e+01 -1.502002e+01
-1 3942     2.241899e+02 -6.080017e+00
-0 3943     -2.402002e+01 -3.137200e+02
-1 3943     5.326001e+01 -2.686700e+02
-15 3943     -2.222998e+01 -2.906400e+02
-0 3944     7.436300e+02 -3.300900e+02
-1 3944     8.617400e+02 -5.673000e+02
-0 3945     5.264600e+02 1.977002e+01
-1 3945     7.597600e+02 -1.260800e+02
-6 3945     3.567300e+02 1.258400e+02
-7 3945     3.751400e+02 1.833800e+02
-10 3945     5.151200e+02 2.210100e+02
-13 3945     7.426600e+02 -1.920900e+02
-15 3945     7.022100e+02 2.357400e+02
-0 3946     2.032900e+02 2.679400e+02
-1 3946     5.145500e+02 2.218500e+02
-0 3947     1.020700e+02 -1.367800e+02
-1 3947     2.167700e+02 -1.349300e+02
-0 3948     3.889900e+02 -2.935300e+02
-1 3948     4.735400e+02 -3.898700e+02
-0 3949     -1.070300e+02 2.439400e+02
-1 3949     1.937200e+02 2.829000e+02
-0 3950     -2.940400e+02 3.206400e+02
-1 3950     3.600000e+01 4.050600e+02
-0 3951     1.206400e+02 -2.166800e+02
-1 3951     2.079301e+02 -2.185600e+02
-0 3952     7.353998e+01 2.212100e+02
-1 3952     3.639200e+02 2.118800e+02
-6 3952     -2.664800e+02 2.018800e+02
-10 3952     -3.058002e+01 4.093000e+02
-13 3952     2.904600e+02 -5.984998e+01
-14 3952     4.381100e+02 -5.308600e+02
-0 3953     3.489800e+02 4.594600e+02
-1 3953     7.467500e+02 3.768100e+02
-6 3953     -9.589001e+01 5.422900e+02
-14 3953     6.581801e+02 -2.619300e+02
-0 3954     3.433700e+02 5.143500e+02
-1 3954     7.562800e+02 4.373800e+02
-5 3954     7.470300e+02 -1.253600e+02
-6 3954     -1.123500e+02 6.089400e+02
-11 3954     4.579399e+02 -2.347000e+02
-12 3954     5.020001e+01 5.714200e+02
-13 3954     4.615000e+02 2.036200e+02
-14 3954     6.472400e+02 -2.048100e+02
-0 3955     5.679200e+02 -1.637300e+02
-1 3955     7.298101e+02 -3.268500e+02
-15 3955     7.790300e+02 -1.144000e+01
-0 3956     3.585300e+02 5.440700e+02
-1 3956     7.833000e+02 4.658300e+02
-0 3957     1.528700e+02 4.748400e+02
-1 3957     5.328900e+02 4.445300e+02
-2 3957     -1.499500e+02 2.330200e+02
-5 3957     5.553800e+02 -1.732000e+02
-6 3957     -3.058900e+02 5.201600e+02
-0 3958     3.489800e+02 4.594600e+02
-1 3958     7.467500e+02 3.768100e+02
-6 3958     -9.589001e+01 5.422900e+02
-0 3959     4.030800e+02 3.782200e+02
-1 3959     7.753400e+02 2.777600e+02
-6 3959     6.890015e+00 4.630600e+02
-0 3960     2.554100e+02 2.566100e+02
-1 3960     5.646700e+02 1.958200e+02
-6 3960     -7.957001e+01 2.923900e+02
-11 3960     3.953500e+02 -4.787900e+02
-0 3961     1.155800e+02 4.476400e+02
-1 3961     4.856500e+02 4.260700e+02
-2 3961     -1.804500e+02 2.013600e+02
-6 3961     -3.413800e+02 4.774400e+02
-7 3961     -1.084500e+02 5.262200e+02
-0 3962     3.910000e+02 5.010600e+02
-1 3962     8.075900e+02 4.110500e+02
-6 3962     -6.108002e+01 6.023700e+02
-12 3962     1.004700e+02 5.629000e+02
-0 3963     1.960000e+02 3.141200e+02
-1 3963     5.252200e+02 2.695900e+02
-10 3963     1.032900e+02 5.322500e+02
-0 3964     5.127200e+02 -1.382800e+02
-1 3964     6.794500e+02 -2.813800e+02
-0 3965     2.431200e+02 3.373800e+02
-1 3965     5.840400e+02 2.800500e+02
-0 3966     3.106700e+02 -2.140400e+02
-1 3966     4.033300e+02 -2.797500e+02
-15 3966     4.174900e+02 -1.121300e+02
-0 3967     -1.640300e+02 1.335700e+02
-1 3967     9.802002e+01 1.931200e+02
-13 3967     1.043100e+02 -1.495800e+02
-0 3968     3.963700e+02 -9.503003e+01
-1 3968     5.401700e+02 -1.911400e+02
-15 3968     5.239301e+02 6.084998e+01
-0 3969     3.104700e+02 -1.954700e+02
-1 3969     4.077600e+02 -2.608900e+02
-12 3969     3.879100e+02 -6.421997e+01
-0 3970     -6.638000e+01 1.836700e+02
-1 3970     2.108500e+02 2.138500e+02
-0 3971     5.893300e+02 -1.253998e+01
-1 3971     8.141000e+02 -1.800900e+02
-7 3971     4.421000e+02 1.647900e+02
-15 3971     7.938900e+02 2.000600e+02
-0 3972     -4.263300e+02 8.130005e+00
-1 3972     -1.908900e+02 1.459700e+02
-0 3973     2.876801e+02 1.146100e+02
-1 3973     4.939900e+02 5.532001e+01
-10 3973     2.288700e+02 3.046200e+02
-0 3974     1.261600e+02 -1.929999e+01
-1 3974     2.749700e+02 -2.673999e+01
-15 3974     1.377900e+02 1.280300e+02
-0 3975     -8.484900e+02 -4.218100e+02
-1 3975     -6.875000e+02 -1.201000e+02
-4 3975     -4.366800e+02 1.925700e+02
-0 3976     -1.910000e+02 1.736500e+02
-1 3976     8.665997e+01 2.382800e+02
-0 3977     3.154301e+02 2.353200e+02
-1 3977     6.193800e+02 1.571100e+02
-6 3977     1.380005e+00 2.862100e+02
-0 3978     2.601100e+02 5.066200e+02
-1 3978     6.592500e+02 4.501200e+02
-0 3979     3.126600e+02 2.268000e+02
-1 3979     6.129301e+02 1.498300e+02
-0 3980     2.257600e+02 5.057900e+02
-1 3980     6.212800e+02 4.581600e+02
-0 3981     1.891400e+02 4.992400e+02
-1 3981     5.784900e+02 4.610000e+02
-11 3981     3.182100e+02 -2.573800e+02
-0 3982     2.537000e+02 5.034100e+02
-1 3982     6.514800e+02 4.486800e+02
-11 3982     3.766100e+02 -2.501400e+02
-0 3983     3.861801e+02 -1.212500e+02
-1 3983     5.176600e+02 -2.137000e+02
-0 3984     2.034800e+02 -2.024500e+02
-1 3984     2.961000e+02 -2.318000e+02
-7 3984     1.520300e+02 -5.121997e+01
-0 3985     -2.913600e+02 -4.287400e+02
-1 3985     -2.242600e+02 -2.918500e+02
-4 3985     -5.437100e+02 -1.609000e+02
-0 3986     -1.522300e+02 2.070700e+02
-1 3986     1.364200e+02 2.596600e+02
-0 3987     3.535400e+02 -1.147400e+02
-1 3987     4.861500e+02 -1.966000e+02
-0 3988     -1.487700e+02 2.272900e+02
-1 3988     1.470100e+02 2.779300e+02
-7 3988     -3.288500e+02 2.758500e+02
-0 3989     -1.024800e+02 2.453200e+02
-1 3989     1.982000e+02 2.830000e+02
-0 3990     5.914100e+02 -2.441600e+02
-1 3990     7.224800e+02 -4.174600e+02
-6 3990     5.683600e+02 -1.122600e+02
-0 3991     3.772500e+02 3.334600e+02
-1 3991     7.267100e+02 2.391700e+02
-0 3992     -3.273800e+02 3.021300e+02
-1 3992     -2.849976e+00 3.961200e+02
-0 3993     2.401600e+02 5.021400e+02
-1 3993     6.355500e+02 4.507400e+02
-0 3994     2.195200e+02 4.990000e+02
-1 3994     6.118199e+02 4.526700e+02
-0 3995     1.521200e+02 4.821100e+02
-1 3995     5.340800e+02 4.523600e+02
-0 3996     3.776700e+02 4.556900e+02
-1 3996     7.782000e+02 3.652700e+02
-6 3996     -6.579999e+01 5.430200e+02
-0 3997     -1.369400e+02 4.600600e+02
-1 3997     2.259600e+02 5.028800e+02
-2 3997     -4.182500e+02 2.122600e+02
-0 3998     -5.084300e+02 2.353000e+02
-1 3998     -1.889900e+02 3.766400e+02
-0 3999     -3.008500e+02 4.894800e+02
-1 3999     6.883002e+01 5.716200e+02
-5 3999     1.104700e+02 -1.609100e+02
-12 3999     -6.391000e+02 4.545300e+02
-0 4000     1.693900e+02 5.241200e+02
-1 4000     5.645400e+02 4.919000e+02
-0 4001     -1.076200e+02 -7.999878e-01
-1 4001     6.779999e+01 5.681000e+01
-0 4002     3.575400e+02 4.514500e+02
-1 4002     7.540200e+02 3.662600e+02
-0 4003     2.279200e+02 4.679700e+02
-1 4003     6.130300e+02 4.179300e+02
-7 4003     -3.770020e+00 5.587100e+02
-0 4004     2.363700e+02 2.802000e+02
-1 4004     5.540900e+02 2.246500e+02
-0 4005     -2.400300e+02 -4.172700e+02
-1 4005     -1.741500e+02 -2.980500e+02
-0 4006     1.221300e+02 -5.630699e+02
-1 4006     1.091400e+02 -5.550900e+02
-0 4007     3.660300e+02 -2.279200e+02
-1 4007     4.685800e+02 -3.152800e+02
-0 4008     -1.257000e+02 -5.287700e+02
-1 4008     -1.107300e+02 -4.369800e+02
-6 4008     1.119000e+01 -6.646700e+02
-7 4008     -1.200600e+02 -4.447800e+02
-0 4009     -8.133002e+01 -1.369100e+02
-1 4009     4.470001e+01 -8.003998e+01
-7 4009     -1.441000e+02 -3.890002e+01
-12 4009     -7.965002e+01 -1.155500e+02
-15 4009     -1.258000e+02 -5.946997e+01
-0 4010     7.259998e+01 7.681000e+01
-1 4010     2.543900e+02 8.314999e+01
-10 4010     -1.756000e+01 2.379500e+02
-15 4010     5.352002e+01 2.515600e+02
-0 4011     -7.015997e+01 -5.421002e+01
-1 4011     8.231000e+01 -4.330017e+00
-15 4011     -1.210300e+02 5.384003e+01
-0 4012     3.006899e+02 -9.897998e+01
-1 4012     4.331500e+02 -1.623700e+02
-15 4012     3.897700e+02 4.323999e+01
-0 4013     4.956000e+01 1.770900e+02
-1 4013     2.731700e+02 1.860900e+02
-7 4013     -7.596002e+01 2.900500e+02
-0 4014     3.790200e+02 -1.741300e+02
-1 4014     4.919500e+02 -2.645700e+02
-10 4014     3.619700e+02 -1.973999e+01
-15 4014     5.082900e+02 -4.975000e+01
-0 4015     1.943101e+02 3.486600e+02
-1 4015     5.371801e+02 3.046500e+02
-0 4016     -1.371000e+02 -4.897700e+02
-1 4016     -1.071700e+02 -3.973900e+02
-0 4017     -4.209998e+01 2.936200e+02
-1 4017     2.759301e+02 3.137600e+02
-0 4018     -2.623100e+02 2.737000e+01
-1 4018     -3.432001e+01 1.195600e+02
-0 4019     1.973500e+02 2.634200e+02
-1 4019     5.067700e+02 2.189500e+02
-6 4019     -1.505900e+02 2.830600e+02
-15 4019     2.191899e+02 5.247100e+02
-0 4020     -2.752200e+02 -4.254800e+02
-1 4020     -2.085600e+02 -2.941900e+02
-0 4021     2.213400e+02 4.726900e+02
-1 4021     6.070500e+02 4.244600e+02
-0 4022     2.658800e+02 2.739100e+02
-1 4022     5.824500e+02 2.100300e+02
-11 4022     4.048300e+02 -4.620900e+02
-0 4023     -1.858800e+02 4.746002e+01
-1 4023     1.763000e+01 1.231800e+02
-7 4023     -2.991600e+02 1.168800e+02
-10 4023     -3.147100e+02 1.775500e+02
-0 4024     2.328998e+01 1.258200e+02
-1 4024     2.264301e+02 1.442700e+02
-15 4024     -1.884998e+01 3.122400e+02
-0 4025     2.177100e+02 3.439300e+02
-1 4025     5.597200e+02 2.935900e+02
-0 4026     3.875500e+02 -1.805400e+02
-1 4026     5.040400e+02 -2.747700e+02
-10 4026     3.723300e+02 -2.640997e+01
-0 4027     4.147800e+02 -4.679100e+02
-1 4027     4.393199e+02 -5.724900e+02
-0 4028     -4.219000e+01 2.884500e+02
-1 4028     2.738800e+02 3.088500e+02
-7 4028     -2.353500e+02 3.490000e+02
-0 4029     7.190900e+02 -3.067200e+02
-1 4029     8.422900e+02 -5.325601e+02
-7 4029     6.207100e+02 -8.115997e+01
-12 4029     7.870100e+02 -1.229300e+02
-0 4030     2.219000e+01 -9.821997e+01
-1 4030     1.532800e+02 -7.301001e+01
-10 4030     -5.795001e+01 2.989001e+01
-0 4031     -1.337000e+02 -1.093400e+02
-1 4031     5.659973e+00 -3.838000e+01
-10 4031     -2.363200e+02 1.599731e-01
-0 4032     6.510699e+02 -4.563000e+01
-1 4032     8.685400e+02 -2.354000e+02
-0 4033     3.703600e+02 2.052002e+01
-1 4033     5.575000e+02 -6.714001e+01
-10 4033     3.342000e+02 2.034800e+02
-0 4034     5.852200e+02 3.553003e+01
-1 4034     8.248500e+02 -1.279500e+02
-10 4034     5.826700e+02 2.445300e+02
-0 4035     -1.405100e+02 -2.390015e+00
-1 4035     4.073999e+01 6.362000e+01
-10 4035     -2.566700e+02 1.236100e+02
-0 4036     -3.588500e+02 2.095200e+02
-1 4036     -5.829999e+01 3.155700e+02
-10 4036     -5.400000e+02 3.531100e+02
-0 4037     3.749399e+02 -1.139500e+02
-1 4037     5.091100e+02 -2.025700e+02
-10 4037     3.512900e+02 4.851001e+01
-15 4037     4.952800e+02 3.229999e+01
-0 4038     2.559600e+02 -1.262200e+02
-1 4038     3.757500e+02 -1.743100e+02
-10 4038     2.159399e+02 2.165997e+01
-0 4039     4.234301e+02 -6.226001e+01
-1 4039     5.831600e+02 -1.681600e+02
-10 4039     4.024399e+02 1.130900e+02
-15 4039     5.576200e+02 1.107000e+02
-0 4040     5.793400e+02 -2.460600e+02
-1 4040     7.079301e+02 -4.143100e+02
-7 4040     4.824700e+02 -4.934003e+01
-15 4040     8.029399e+02 -1.221800e+02
-0 4041     -1.809300e+02 3.891300e+02
-1 4041     1.639800e+02 4.434400e+02
-7 4041     -3.914600e+02 4.328600e+02
-11 4041     -1.334003e+01 -3.644600e+02
-0 4042     2.113199e+02 -5.448900e+02
-1 4042     2.032200e+02 -5.704500e+02
-0 4043     -7.275000e+02 -3.005900e+02
-1 4043     -5.546900e+02 -4.940002e+01
-0 4044     3.263900e+02 5.381400e+02
-1 4044     7.442200e+02 4.672200e+02
-13 4044     4.475000e+02 2.227700e+02
-0 4045     5.767500e+02 2.173100e+02
-1 4045     8.737500e+02 6.678998e+01
-10 4045     5.584800e+02 4.570800e+02
-15 4045     7.497300e+02 5.197300e+02
-0 4046     1.946200e+02 2.534000e+02
-1 4046     5.001300e+02 2.097900e+02
-7 4046     6.640015e+00 3.498300e+02
-10 4046     1.080500e+02 4.601600e+02
-15 4046     2.164500e+02 5.102500e+02
-0 4047     2.860601e+02 -1.822700e+02
-1 4047     3.882100e+02 -2.397900e+02
-7 4047     2.258101e+02 -1.888000e+01
-0 4048     7.002900e+02 -3.545200e+02
-1 4048     7.990200e+02 -5.733000e+02
-0 4049     3.603400e+02 -1.912000e+02
-1 4049     4.610601e+02 -2.738200e+02
-0 4050     3.861899e+02 -4.227002e+01
-1 4050     5.516100e+02 -1.361700e+02
-10 4050     3.573500e+02 1.328400e+02
-15 4050     5.038500e+02 1.322100e+02
-0 4051     -4.796997e+01 2.852300e+02
-1 4051     2.670699e+02 3.070200e+02
-0 4052     9.028998e+01 3.735700e+02
-1 4052     4.393400e+02 3.572700e+02
-0 4053     -1.145900e+02 2.421000e+02
-1 4053     1.860699e+02 2.828400e+02
-0 4054     1.788199e+02 5.081700e+02
-1 4054     5.695699e+02 4.729000e+02
-0 4055     3.103500e+02 5.325000e+02
-1 4055     7.238900e+02 4.652800e+02
-0 4056     2.937700e+02 4.842000e+02
-1 4056     6.918101e+02 4.177900e+02
-0 4057     3.524500e+02 4.594900e+02
-1 4057     7.504399e+02 3.758800e+02
-0 4058     3.948199e+02 4.635400e+02
-1 4058     8.000100e+02 3.690300e+02
-0 4059     2.471000e+02 5.043400e+02
-1 4059     6.440200e+02 4.511600e+02
-0 4060     1.721500e+02 5.078800e+02
-1 4060     5.621000e+02 4.742200e+02
-0 4061     1.459301e+02 4.810000e+02
-1 4061     5.268700e+02 4.527600e+02
-0 4062     3.524500e+02 4.594900e+02
-1 4062     7.504399e+02 3.758800e+02
-0 4063     1.740200e+02 5.140800e+02
-1 4063     5.664200e+02 4.799800e+02
-0 4064     3.655601e+02 5.595500e+02
-1 4064     7.961700e+02 4.807600e+02
-2 4064     2.151001e+01 3.273500e+02
-0 4065     3.677800e+02 4.735900e+02
-1 4065     7.717800e+02 3.870600e+02
-0 4066     1.946700e+02 5.102000e+02
-1 4066     5.874900e+02 4.709500e+02
-0 4067     1.280400e+02 4.935900e+02
-1 4067     5.120800e+02 4.704700e+02
-0 4068     3.629700e+02 4.638600e+02
-1 4068     7.636100e+02 3.781900e+02
-0 4069     4.239100e+02 4.590400e+02
-1 4069     8.336300e+02 3.566100e+02
-0 4070     1.897100e+02 5.089200e+02
-1 4070     5.814800e+02 4.707000e+02
-0 4071     2.524399e+02 5.150600e+02
-1 4071     6.516899e+02 4.614500e+02
-0 4072     2.747600e+02 5.141700e+02
-1 4072     6.787300e+02 4.547700e+02
-0 4073     4.192800e+02 4.598200e+02
-1 4073     8.282800e+02 3.589000e+02
-0 4074     4.189600e+02 4.515300e+02
-1 4074     8.260500e+02 3.494800e+02
-0 4075     2.837600e+02 5.317600e+02
-1 4075     6.931600e+02 4.712600e+02
-0 4076     2.747600e+02 5.141700e+02
-1 4076     6.787300e+02 4.547700e+02
-11 4076     3.956200e+02 -2.391600e+02
-0 4077     2.424900e+02 5.276600e+02
-1 4077     6.460601e+02 4.772200e+02
-0 4078     2.531600e+02 5.054600e+02
-1 4078     6.511500e+02 4.508400e+02
-0 4079     1.898600e+02 5.275400e+02
-1 4079     5.874700e+02 4.898700e+02
-0 4080     2.488300e+02 5.157800e+02
-1 4080     6.478000e+02 4.632000e+02
-0 4081     1.580601e+02 5.103900e+02
-1 4081     5.478800e+02 4.803400e+02
-0 4082     1.280400e+02 4.935900e+02
-1 4082     5.120800e+02 4.704700e+02
-0 4083     -1.820100e+02 -5.221000e+02
-1 4083     -1.596700e+02 -4.121400e+02
-0 4084     2.166600e+02 2.304700e+02
-1 4084     5.138500e+02 1.806400e+02
-6 4084     -1.061600e+02 2.533200e+02
-0 4085     3.103600e+02 2.662600e+02
-1 4085     6.269000e+02 1.896200e+02
-6 4085     -2.346002e+01 3.177200e+02
-0 4086     2.166600e+02 2.304700e+02
-1 4086     5.138500e+02 1.806400e+02
-6 4086     -1.061600e+02 2.533200e+02
-0 4087     -2.445000e+02 -4.823199e+02
-1 4087     -2.014800e+02 -3.555800e+02
-6 4087     -1.588800e+02 -6.730300e+02
-0 4088     2.363700e+02 2.802000e+02
-1 4088     5.540900e+02 2.246500e+02
-6 4088     -1.167000e+02 3.125200e+02
-0 4089     5.819800e+02 -2.655900e+02
-1 4089     7.022100e+02 -4.352400e+02
-6 4089     5.718199e+02 -1.357700e+02
-0 4090     -6.771002e+01 -5.216500e+02
-1 4090     -5.470001e+01 -4.499301e+02
-6 4090     7.108002e+01 -6.309700e+02
-0 4091     2.039700e+02 2.636800e+02
-1 4091     5.142600e+02 2.172500e+02
-6 4091     -1.429900e+02 2.860200e+02
-0 4092     -2.089900e+02 -5.652000e+02
-1 4092     -1.998300e+02 -4.422000e+02
-6 4092     -5.952002e+01 -7.438500e+02
-0 4093     5.524399e+02 -3.213500e+02
-1 4093     6.465200e+02 -4.795500e+02
-6 4093     5.756700e+02 -1.983101e+02
-0 4094     -2.719800e+02 -4.456600e+02
-1 4094     -2.126000e+02 -3.135500e+02
-6 4094     -2.178800e+02 -6.482300e+02
-0 4095     4.306700e+02 -4.716500e+02
-1 4095     4.540000e+02 -5.819700e+02
-6 4095     5.480300e+02 -3.819800e+02
-0 4096     2.435601e+02 2.669000e+02
-1 4096     5.562200e+02 2.093800e+02
-6 4096     -9.944000e+01 3.002500e+02
-0 4097     -5.057001e+01 1.943800e+02
-1 4097     2.305601e+02 2.200400e+02
-6 4097     -3.996500e+02 1.338800e+02
-0 4098     -7.819000e+01 1.989000e+02
-1 4098     2.051000e+02 2.318700e+02
-6 4098     -4.368100e+02 1.306400e+02
-0 4099     -5.909998e+01 1.990000e+02
-1 4099     2.236100e+02 2.268700e+02
-6 4099     -4.135700e+02 1.366600e+02
-0 4100     5.864700e+02 -2.664700e+02
-1 4100     7.068700e+02 -4.378400e+02
-6 4100     5.765699e+02 -1.352100e+02
-0 4101     6.463000e+01 2.249300e+02
-1 4101     3.562600e+02 2.176400e+02
-6 4101     -2.800600e+02 2.032500e+02
-0 4102     2.381700e+02 2.566900e+02
-1 4102     5.467200e+02 2.006700e+02
-6 4102     -9.900000e+01 2.871300e+02
-0 4103     -2.381900e+02 -5.526000e+02
-1 4103     -2.210800e+02 -4.210800e+02
-6 4103     -1.029700e+02 -7.447900e+02
-0 4104     2.921801e+02 9.857001e+01
-1 4104     4.915400e+02 3.809998e+01
-7 4104     1.768800e+02 2.504500e+02
-10 4104     2.352800e+02 2.860800e+02
-15 4104     3.544399e+02 3.129100e+02
-0 4105     1.984998e+01 1.536600e+02
-1 4105     2.346000e+02 1.718600e+02
-0 4106     5.363800e+02 4.219971e+00
-1 4106     7.650900e+02 -1.455700e+02
-7 4106     3.868700e+02 1.704400e+02
-10 4106     5.281400e+02 2.030800e+02
-0 4107     -1.647900e+02 -5.143199e+02
-1 4107     -1.412200e+02 -4.105500e+02
-0 4108     5.283800e+02 -4.068300e+02
-1 4108     5.847800e+02 -5.561000e+02
-7 4108     4.760699e+02 -2.032600e+02
-0 4109     3.277500e+02 -1.283700e+02
-1 4109     4.523700e+02 -2.008000e+02
-15 4109     4.309600e+02 6.469971e+00
-0 4110     5.241400e+02 -2.727700e+02
-1 4110     6.357000e+02 -4.207900e+02
-0 4111     2.091998e+01 1.565800e+02
-1 4111     2.366700e+02 1.743400e+02
-0 4112     3.635400e+02 4.608600e+02
-1 4112     7.635100e+02 3.746400e+02
-0 4113     1.042900e+02 -2.210900e+02
-1 4113     1.901200e+02 -2.176400e+02
-12 4113     1.786800e+02 -1.457600e+02
-0 4114     7.014001e+01 2.485100e+02
-1 4114     3.706801e+02 2.394800e+02
-0 4115     2.408400e+02 2.777300e+02
-1 4115     5.578800e+02 2.208900e+02
-6 4115     -1.106200e+02 3.109400e+02
-0 4116     3.206801e+02 2.287700e+02
-1 4116     6.224100e+02 1.491800e+02
-0 4117     7.700195e-01 -1.054100e+02
-1 4117     1.301600e+02 -7.312000e+01
-0 4118     -8.462900e+02 -1.607700e+02
-1 4118     -6.053700e+02 1.037200e+02
-0 4119     2.258800e+02 -3.915000e+02
-1 4119     2.675200e+02 -4.268600e+02
-0 4120     -2.256400e+02 5.112800e+02
-1 4120     1.486700e+02 5.755300e+02
-2 4120     -5.080500e+02 2.740200e+02
-0 4121     3.167600e+02 2.385000e+02
-1 4121     6.221700e+02 1.600200e+02
-0 4122     -3.050300e+02 -1.208800e+02
-1 4122     -1.261700e+02 -6.169983e+00
-0 4123     5.504800e+02 -2.923300e+02
-1 4123     6.560200e+02 -4.501700e+02
-6 4123     5.576100e+02 -1.708700e+02
-0 4124     -4.903600e+02 1.523900e+02
-1 4124     -1.984300e+02 2.954300e+02
-0 4125     3.133101e+02 1.506000e+01
-1 4125     4.845000e+02 -5.207001e+01
-0 4126     -4.747200e+02 1.707700e+02
-1 4126     -1.779900e+02 3.085200e+02
-0 4127     -1.564800e+02 2.191800e+02
-1 4127     1.367100e+02 2.722000e+02
-0 4128     -7.744500e+02 -5.683101e+02
-1 4128     -6.746100e+02 -2.655300e+02
-0 4129     -2.284400e+02 2.041600e+02
-1 4129     6.257001e+01 2.769900e+02
-0 4130     2.665000e+02 -2.315900e+02
-1 4130     3.509000e+02 -2.817600e+02
-10 4130     2.383700e+02 -9.772998e+01
-0 4131     3.190200e+02 -2.130000e+02
-1 4131     4.133600e+02 -2.809000e+02
-0 4132     -7.792000e+02 -4.716400e+02
-1 4132     -6.491700e+02 -1.821900e+02
-0 4133     -8.292200e+02 -4.361100e+02
-1 4133     -6.771500e+02 -1.377300e+02
-0 4134     -2.022600e+02 2.300900e+02
-1 4134     9.670001e+01 2.946800e+02
-10 4134     -3.556100e+02 3.925400e+02
-0 4135     2.058600e+02 3.159800e+02
-1 4135     5.362700e+02 2.687100e+02
-0 4136     -7.550100e+02 -4.539100e+02
-1 4136     -6.250000e+02 -1.741000e+02
-0 4137     -6.648700e+02 -4.973800e+02
-1 4137     -5.667000e+02 -2.376300e+02
-0 4138     2.024000e+02 -6.526001e+01
-1 4138     3.383101e+02 -9.610999e+01
-0 4139     -8.228003e+01 2.834700e+02
-1 4139     2.322900e+02 3.145400e+02
-0 4140     8.853998e+01 -5.571899e+02
-1 4140     7.948999e+01 -5.373900e+02
-0 4141     -2.678400e+02 -4.208300e+02
-1 4141     -2.004500e+02 -2.922200e+02
-0 4142     5.683002e+01 2.485300e+02
-1 4142     3.573800e+02 2.431500e+02
-0 4143     2.815002e+01 -1.807200e+02
-1 4143     1.321400e+02 -1.547100e+02
-15 4143     2.692999e+01 -1.037600e+02
-0 4144     -7.491200e+02 -4.744200e+02
-1 4144     -6.266200e+02 -1.935700e+02
-0 4145     -2.669300e+02 -4.272100e+02
-1 4145     -2.019500e+02 -2.983900e+02
-0 4146     -1.049000e+02 -5.723400e+02
-1 4146     -1.080100e+02 -4.834500e+02
-6 4146     6.346002e+01 -7.004000e+02
-0 4147     -7.756500e+02 -5.524000e+02
-1 4147     -6.707900e+02 -2.518300e+02
-4 4147     -5.422600e+02 1.665200e+02
-0 4148     -4.747200e+02 1.707700e+02
-1 4148     -1.779900e+02 3.085200e+02
-0 4149     -2.692400e+02 -4.536600e+02
-1 4149     -2.134200e+02 -3.214400e+02
-0 4150     -7.742000e+02 -5.566700e+02
-1 4150     -6.710700e+02 -2.556600e+02
-0 4151     -7.087000e+01 2.928700e+02
-1 4151     2.472100e+02 3.206400e+02
-10 4151     -2.077000e+02 4.808100e+02
-0 4152     -2.278800e+02 1.756500e+02
-1 4152     5.251001e+01 2.498100e+02
-0 4153     3.713000e+02 6.888000e+01
-1 4153     5.843000e+02 -2.053003e+01
-0 4154     -7.925900e+02 -5.380601e+02
-1 4154     -6.795000e+02 -2.347200e+02
-0 4155     -5.664500e+02 1.126001e+01
-1 4155     -3.143800e+02 1.856000e+02
-0 4156     4.064301e+02 3.721002e+01
-1 4156     6.083600e+02 -6.362000e+01
-0 4157     -4.668800e+02 -2.366500e+02
-1 4157     -3.123100e+02 -6.598999e+01
-0 4158     -4.416700e+02 -2.672500e+02
-1 4158     -3.005300e+02 -1.004800e+02
-0 4159     2.053700e+02 -3.814800e+02
-1 4159     2.550300e+02 -4.108900e+02
-0 4160     3.957500e+02 -7.880005e+00
-1 4160     5.770100e+02 -1.049600e+02
-0 4161     -1.103000e+02 -5.101300e+02
-1 4161     -8.976001e+01 -4.252100e+02
-0 4162     -1.852000e+02 -5.230500e+02
-1 4162     -1.628200e+02 -4.115800e+02
-0 4163     -1.552300e+02 1.880900e+02
-1 4163     1.264100e+02 2.420800e+02
-0 4164     5.788600e+02 -4.021002e+01
-1 4164     7.941300e+02 -2.059100e+02
-10 4164     5.830699e+02 1.547600e+02
-15 4164     7.839000e+02 1.582500e+02
-0 4165     -2.510900e+02 1.978700e+02
-1 4165     3.850000e+01 2.766300e+02
-15 4165     -3.882300e+02 3.713700e+02
-0 4166     3.677800e+02 4.735900e+02
-1 4166     7.717800e+02 3.870600e+02
-0 4167     2.936300e+02 4.769500e+02
-1 4167     6.891600e+02 4.101900e+02
-0 4168     -2.986500e+02 -5.702400e+02
-1 4168     -2.812600e+02 -4.168700e+02
-6 4168     -1.622500e+02 -7.952200e+02
-0 4169     -6.996997e+01 1.959700e+02
-1 4169     2.120400e+02 2.268700e+02
-0 4170     -5.839700e+02 -3.000000e+00
-1 4170     -3.346600e+02 1.772800e+02
-0 4171     -1.966000e+02 -4.997300e+02
-1 4171     -1.646300e+02 -3.869200e+02
-0 4172     -4.069400e+02 2.264400e+02
-1 4172     -9.707001e+01 3.433700e+02
-0 4173     -5.312700e+02 1.730900e+02
-1 4173     -2.281500e+02 3.246200e+02
-0 4174     6.191000e+02 -2.091400e+02
-1 4174     7.682200e+02 -3.920600e+02
-0 4175     -1.939800e+02 -5.571500e+02
-1 4175     -1.831300e+02 -4.398199e+02
-0 4176     -1.221800e+02 2.507700e+02
-1 4176     1.816000e+02 2.934500e+02
-0 4177     -5.438600e+02 -5.891998e+01
-1 4177     -3.186200e+02 1.160400e+02
-0 4178     -7.815100e+02 -5.667700e+02
-1 4178     -6.797300e+02 -2.622600e+02
-0 4179     -7.582300e+02 -5.648800e+02
-1 4179     -6.614300e+02 -2.676200e+02
-4 4179     -5.551600e+02 1.573400e+02
-0 4180     6.240300e+02 -3.306500e+02
-1 4180     7.213800e+02 -5.173300e+02
-0 4181     6.823000e+02 -3.147000e+02
-1 4181     7.957800e+02 -5.251500e+02
-0 4182     -5.893600e+02 -4.792500e+02
-1 4182     -4.988100e+02 -2.451200e+02
-10 4182     -7.345300e+02 -4.864700e+02
-0 4183     -8.401001e+01 -5.201001e+01
-1 4183     7.021002e+01 2.099976e+00
-0 4184     -7.234500e+02 -4.637000e+02
-1 4184     -6.032900e+02 -1.918100e+02
-0 4185     2.310100e+02 1.601200e+02
-1 4185     4.496000e+02 1.182300e+02
-0 4186     7.458199e+02 -3.291700e+02
-1 4186     8.653400e+02 -5.674600e+02
-0 4187     2.865800e+02 -1.010500e+02
-1 4187     4.175699e+02 -1.597300e+02
-0 4188     2.345000e+02 3.236400e+02
-1 4188     5.694301e+02 2.686600e+02
-0 4189     5.122400e+02 -1.919000e+02
-1 4189     6.562800e+02 -3.351900e+02
-0 4190     6.085300e+02 -2.837300e+02
-1 4190     7.243101e+02 -4.638700e+02
-0 4191     1.010800e+02 4.426600e+02
-1 4191     4.688700e+02 4.248400e+02
-0 4192     -2.090800e+02 2.086200e+02
-1 4192     8.232001e+01 2.761900e+02
-0 4193     -2.170900e+02 -4.219500e+02
-1 4193     -1.548800e+02 -3.097300e+02
-0 4194     3.762700e+02 -9.481000e+01
-1 4194     5.190500e+02 -1.844800e+02
-10 4194     3.513300e+02 7.108002e+01
-15 4194     4.956700e+02 5.848999e+01
-0 4195     2.929600e+02 -1.914100e+02
-1 4195     3.910601e+02 -2.511900e+02
-0 4196     2.336100e+02 -1.953300e+02
-1 4196     3.295200e+02 -2.349200e+02
-0 4197     -9.904999e+01 2.639300e+02
-1 4197     2.088101e+02 2.998900e+02
-0 4198     -7.327100e+02 -4.311800e+02
-1 4198     -6.004100e+02 -1.609100e+02
-0 4199     2.138101e+02 -3.928400e+02
-1 4199     2.547100e+02 -4.241100e+02
-0 4200     -7.771900e+02 -5.243199e+02
-1 4200     -6.640000e+02 -2.277200e+02
-4 4200     -5.212600e+02 1.642900e+02
-0 4201     -9.821002e+01 -5.551600e+02
-1 4201     -9.558002e+01 -4.706300e+02
-7 4201     -8.600000e+01 -4.657500e+02
-0 4202     5.111200e+02 -3.139000e+02
-1 4202     6.043199e+02 -4.572100e+02
-0 4203     -4.363900e+02 -2.605500e+02
-1 4203     -2.937900e+02 -9.539001e+01
-0 4204     -7.804999e+01 2.078500e+02
-1 4204     2.085500e+02 2.405300e+02
-0 4205     4.026600e+02 3.534600e+02
-1 4205     7.633000e+02 2.526100e+02
-0 4206     2.745900e+02 3.115600e+02
-1 4206     6.070200e+02 2.455100e+02
-0 4207     -8.107001e+01 -5.223800e+02
-1 4207     -6.703998e+01 -4.464100e+02
-0 4208     3.462400e+02 -7.534003e+01
-1 4208     4.903000e+02 -1.539200e+02
-10 4208     3.139700e+02 8.982001e+01
-0 4209     4.959800e+02 -4.098600e+02
-1 4209     5.483199e+02 -5.466700e+02
-0 4210     3.875500e+02 -1.805400e+02
-1 4210     5.040400e+02 -2.747700e+02
-0 4211     5.062300e+02 -2.049000e+02
-1 4211     6.449000e+02 -3.458000e+02
-0 4212     2.426400e+02 1.507600e+02
-1 4212     4.579200e+02 1.053300e+02
-0 4213     7.327600e+02 -3.501200e+02
-1 4213     8.394900e+02 -5.829200e+02
-0 4214     4.665601e+02 2.642000e+02
-1 4214     7.862500e+02 1.450000e+02
-0 4215     4.707000e+02 2.610400e+02
-1 4215     7.900400e+02 1.399800e+02
-0 4216     -1.814500e+02 -5.513199e+02
-1 4216     -1.691800e+02 -4.388700e+02
-0 4217     4.707000e+02 2.610400e+02
-1 4217     7.900400e+02 1.399800e+02
-0 4218     -4.726700e+02 1.610600e+02
-1 4218     -1.798800e+02 2.990300e+02
-0 4219     4.994500e+02 3.890000e+02
-1 4219     8.622800e+02 2.688600e+02
-0 4220     1.019400e+02 -5.411000e+02
-1 4220     9.845001e+01 -5.273800e+02
-0 4221     3.516700e+02 3.279600e+02
-1 4221     6.967400e+02 2.406200e+02
-0 4222     -2.015500e+02 1.874100e+02
-1 4222     8.215997e+01 2.538900e+02
-0 4223     6.405200e+02 -9.815997e+01
-1 4223     8.407200e+02 -2.874600e+02
-10 4223     6.599100e+02 9.509998e+01
-12 4223     6.116400e+02 5.194000e+01
-0 4224     -1.512400e+02 -5.387600e+02
-1 4224     -1.378800e+02 -4.382000e+02
-0 4225     3.418500e+02 -2.701700e+02
-1 4225     4.280200e+02 -3.506900e+02
-15 4225     4.686100e+02 -1.887800e+02
-0 4226     -2.223600e+02 -4.007200e+02
-1 4226     -1.520000e+02 -2.884200e+02
-7 4226     -2.503000e+02 -3.410300e+02
-15 4226     -2.769900e+02 -4.352200e+02
-0 4227     -3.149900e+02 -1.945000e+02
-1 4227     -1.616400e+02 -7.103003e+01
-10 4227     -4.384300e+02 -1.177500e+02
-15 4227     -4.260200e+02 -1.696100e+02
-0 4228     -1.452100e+02 1.301001e+01
-1 4228     4.241998e+01 7.957999e+01
-15 4228     -2.286100e+02 1.348200e+02
-0 4229     -1.910500e+02 -3.535500e+02
-1 4229     -1.089000e+02 -2.546400e+02
-15 4229     -2.405100e+02 -3.675900e+02
-0 4230     6.307600e+02 -1.201001e+01
-1 4230     8.582000e+02 -1.932400e+02
-15 4230     8.527000e+02 2.064000e+02
-0 4231     3.852900e+02 -4.812000e+01
-1 4231     5.484399e+02 -1.406800e+02
-15 4231     5.033300e+02 1.234000e+02
-0 4232     -8.176001e+01 5.832001e+01
-1 4232     1.111600e+02 1.068600e+02
-15 4232     -1.507500e+02 2.048800e+02
-0 4233     -1.847900e+02 -1.583400e+02
-1 4233     -3.934003e+01 -7.364001e+01
-15 4233     -2.570900e+02 -1.029300e+02
-0 4234     3.344900e+02 -1.696997e+01
-1 4234     4.991000e+02 -9.171002e+01
-15 4234     4.269600e+02 1.597200e+02
-0 4235     1.151200e+02 -5.371002e+01
-1 4235     2.537100e+02 -5.716998e+01
-15 4235     1.275600e+02 8.009000e+01
-0 4236     -1.426800e+02 1.004999e+01
-1 4236     4.391998e+01 7.614001e+01
-10 4236     -2.604900e+02 1.378600e+02
-15 4236     -2.254000e+02 1.303500e+02
-0 4237     -6.335900e+02 -3.205000e+02
-1 4237     -4.840400e+02 -9.297998e+01
-15 4237     -8.480500e+02 -3.871400e+02
-0 4238     1.228600e+02 -1.279400e+02
-1 4238     2.405300e+02 -1.330500e+02
-15 4238     1.486500e+02 -1.996002e+01
-0 4239     -7.915002e+01 -2.548100e+02
-1 4239     1.598999e+01 -1.949200e+02
-10 4239     -1.584200e+02 -1.625100e+02
-15 4239     -1.060000e+02 -2.187900e+02
-0 4240     -1.412900e+02 1.787500e+02
-1 4240     1.364500e+02 2.297600e+02
-0 4241     2.119900e+02 4.681900e+02
-1 4241     5.950400e+02 4.223000e+02
-0 4242     -1.054600e+02 2.952800e+02
-1 4242     2.143700e+02 3.319300e+02
-0 4243     2.826600e+02 3.542800e+02
-1 4243     6.332400e+02 2.864500e+02
-0 4244     3.967000e+02 3.297100e+02
-1 4244     7.471600e+02 2.295300e+02
-0 4245     2.176200e+02 -2.858600e+02
-1 4245     2.879399e+02 -3.195000e+02
-15 4245     2.996200e+02 -2.216300e+02
-0 4246     6.469000e+01 -3.997700e+02
-1 4246     1.060700e+02 -3.790000e+02
-0 4247     -2.532000e+02 -5.205601e+02
-1 4247     -2.232800e+02 -3.872900e+02
-0 4248     -4.779700e+02 2.043600e+02
-1 4248     -1.695200e+02 3.402200e+02
-0 4249     -5.854999e+01 -1.389000e+02
-1 4249     6.512000e+01 -8.883002e+01
-0 4250     2.354100e+02 -1.765400e+02
-1 4250     3.380200e+02 -2.176200e+02
-0 4251     -1.303600e+02 1.783400e+02
-1 4251     1.469100e+02 2.262600e+02
-0 4252     3.554800e+02 4.903003e+01
-1 4252     5.538800e+02 -3.404999e+01
-0 4253     2.687600e+02 3.308500e+02
-1 4253     6.083000e+02 2.665900e+02
-0 4254     2.635200e+02 3.216800e+02
-1 4254     6.004700e+02 2.579100e+02
-0 4255     2.049700e+02 2.323000e+02
-1 4255     5.023000e+02 1.859100e+02
-0 4256     -2.459200e+02 4.309003e+01
-1 4256     -1.248999e+01 1.296200e+02
-0 4257     4.207800e+02 3.430500e+02
-1 4257     7.796500e+02 2.366400e+02
-7 4257     2.025900e+02 4.628400e+02
-0 4258     1.686600e+02 4.759800e+02
-1 4258     5.499600e+02 4.413300e+02
-0 4259     5.258400e+02 -3.198400e+02
-1 4259     6.173500e+02 -4.679000e+02
-7 4259     4.521500e+02 -1.247800e+02
-0 4260     1.726100e+02 -5.745699e+02
-1 4260     1.533600e+02 -5.840000e+02
-7 4260     1.846600e+02 -4.260200e+02
-0 4261     3.793600e+02 3.635300e+02
-1 4261     7.421200e+02 2.691200e+02
-0 4262     1.881100e+02 3.743600e+02
-1 4262     5.406600e+02 3.320700e+02
-0 4263     1.940300e+02 3.244700e+02
-1 4263     5.272600e+02 2.804300e+02
-0 4264     3.229500e+02 2.493700e+02
-1 4264     6.331000e+02 1.690300e+02
-0 4265     -2.556700e+02 4.194000e+01
-1 4265     -2.196997e+01 1.312800e+02
-0 4266     5.427200e+02 -2.006700e+02
-1 4266     6.856400e+02 -3.549700e+02
-0 4267     -2.569600e+02 3.878998e+01
-1 4267     -2.426001e+01 1.287800e+02
-0 4268     4.121200e+02 3.020300e+02
-1 4268     7.518900e+02 1.967800e+02
-0 4269     -7.990002e+01 1.955500e+02
-1 4269     2.022000e+02 2.290700e+02
-0 4270     5.403400e+02 -3.547700e+02
-1 4270     6.191600e+02 -5.086600e+02
-0 4271     3.106500e+02 3.855700e+02
-1 4271     6.763199e+02 3.105200e+02
-0 4272     -1.972998e+01 -1.584500e+02
-1 4272     9.512000e+01 -1.186500e+02
-0 4273     5.755601e+02 -3.707800e+02
-1 4273     6.514900e+02 -5.384600e+02
-0 4274     3.102200e+02 2.218700e+02
-1 4274     6.089399e+02 1.448500e+02
-0 4275     2.583400e+02 3.163000e+02
-1 4275     5.912800e+02 2.546600e+02
-0 4276     -7.827002e+01 1.819400e+02
-1 4276     1.987500e+02 2.157100e+02
-0 4277     -5.782600e+02 8.969971e+00
-1 4277     -3.261300e+02 1.864500e+02
-10 4277     -7.793300e+02 9.206000e+01
-0 4278     5.351700e+02 -2.813000e+02
-1 4278     6.441400e+02 -4.330699e+02
-12 4278     5.943700e+02 -1.485300e+02
-0 4279     4.906300e+02 3.145700e+02
-1 4279     8.282600e+02 1.911200e+02
-0 4280     1.773000e+02 3.517600e+02
-1 4280     5.204600e+02 3.123800e+02
-13 4280     3.450400e+02 5.433002e+01
-0 4281     1.368300e+02 -5.448300e+02
-1 4281     1.304600e+02 -5.431400e+02
-15 4281     2.254500e+02 -5.838101e+02
-0 4282     -3.076700e+02 -2.385000e+02
-1 4282     -1.706800e+02 -1.133800e+02
-7 4282     -3.789200e+02 -2.002500e+02
-10 4282     -4.246200e+02 -1.683900e+02
-15 4282     -4.107000e+02 -2.280300e+02
-0 4283     -5.601001e+01 8.616000e+01
-1 4283     1.418300e+02 1.268900e+02
-15 4283     -1.213800e+02 2.452300e+02
-0 4284     9.187000e+01 -3.454500e+02
-1 4284     1.511100e+02 -3.365400e+02
-10 4284     4.910999e+01 -2.469400e+02
-15 4284     1.376500e+02 -3.188800e+02
-0 4285     -1.395100e+02 2.632300e+02
-1 4285     1.690200e+02 3.100900e+02
-15 4285     -2.431200e+02 4.764500e+02
-0 4286     -1.530800e+02 9.130005e+00
-1 4286     3.385999e+01 7.815997e+01
-15 4286     -2.389200e+02 1.283400e+02
-0 4287     5.809800e+02 -3.804900e+02
-1 4287     6.527400e+02 -5.508600e+02
-15 4287     8.199301e+02 -3.073000e+02
-0 4288     -1.282500e+02 -2.662100e+02
-1 4288     -2.338000e+01 -1.921400e+02
-15 4288     -1.671300e+02 -2.405500e+02
-0 4289     4.567600e+02 2.503600e+02
-1 4289     7.725400e+02 1.325700e+02
-0 4290     4.465800e+02 2.122000e+02
-1 4290     7.501700e+02 9.528000e+01
-0 4291     3.237000e+02 -1.781200e+02
-1 4291     4.287100e+02 -2.486000e+02
-0 4292     -2.703900e+02 -5.110800e+02
-1 4292     -2.351600e+02 -3.731200e+02
-0 4293     -1.414500e+02 -5.441899e+02
-1 4293     -1.307600e+02 -4.458300e+02
-0 4294     4.664600e+02 2.440700e+02
-1 4294     7.803600e+02 1.233400e+02
-0 4295     -1.463600e+02 -5.429100e+02
-1 4295     -1.349700e+02 -4.427500e+02
-0 4296     4.792100e+02 2.284600e+02
-1 4296     7.887600e+02 1.037400e+02
-0 4297     4.432300e+02 1.997600e+02
-1 4297     7.419100e+02 8.453000e+01
-0 4298     4.075500e+02 3.645000e+02
-1 4298     7.735200e+02 2.623300e+02
-0 4299     7.374800e+02 -2.789000e+02
-1 4299     8.762900e+02 -5.119000e+02
-0 4300     2.565601e+02 3.070100e+02
-1 4300     5.859900e+02 2.459400e+02
-0 4301     -2.458500e+02 -5.855000e+02
-1 4301     -2.396600e+02 -4.477600e+02
-0 4302     -8.454300e+02 -1.936300e+02
-1 4302     -6.148100e+02 7.507001e+01
-0 4303     6.582001e+01 3.704400e+02
-1 4303     4.128199e+02 3.605900e+02
-0 4304     -4.431000e+02 1.264700e+02
-1 4304     -1.648800e+02 2.596300e+02
-0 4305     2.309301e+02 4.678100e+02
-1 4305     6.166500e+02 4.167800e+02
-14 4305     5.395300e+02 -2.595200e+02
-0 4306     2.885100e+02 1.827500e+02
-1 4306     5.699800e+02 1.124300e+02
-0 4307     5.767500e+02 4.435999e+01
-1 4307     8.186400e+02 -1.160600e+02
-0 4308     2.533101e+02 -1.215400e+02
-1 4308     3.749500e+02 -1.688100e+02
-0 4309     5.571100e+02 -2.452300e+02
-1 4309     6.825200e+02 -4.054900e+02
-0 4310     3.608900e+02 -5.109003e+01
-1 4310     5.163900e+02 -1.350800e+02
-0 4311     3.780699e+02 4.018700e+02
-1 4311     7.570800e+02 3.090100e+02
-0 4312     -4.979700e+02 1.337400e+02
-1 4312     -2.117300e+02 2.803400e+02
-0 4313     -4.447700e+02 5.177002e+01
-1 4313     -1.926200e+02 1.910400e+02
-0 4314     5.248900e+02 -3.653900e+02
-1 4314     5.980300e+02 -5.135200e+02
-0 4315     2.780400e+02 5.275600e+02
-1 4315     6.855500e+02 4.679900e+02
-0 4316     -4.385000e+02 1.627100e+02
-1 4316     -1.480300e+02 2.921500e+02
-0 4317     4.231899e+02 3.665400e+02
-1 4317     7.925699e+02 2.600500e+02
-0 4318     1.687300e+02 -5.732500e+02
-1 4318     1.503199e+02 -5.816100e+02
-0 4319     5.666300e+02 -2.874800e+02
-1 4319     6.764399e+02 -4.518600e+02
-0 4320     -2.790900e+02 3.064001e+01
-1 4320     -4.804999e+01 1.275400e+02
-0 4321     3.783600e+02 4.485100e+02
-1 4321     7.769100e+02 3.575700e+02
-0 4322     5.052000e+02 -4.185700e+02
-1 4322     5.542600e+02 -5.589000e+02
-0 4323     7.419000e+01 4.792100e+02
-1 4323     4.509000e+02 4.699100e+02
-0 4324     3.012500e+02 3.281100e+02
-1 4324     6.419301e+02 2.549800e+02
-0 4325     3.867900e+02 4.717700e+02
-1 4325     7.937400e+02 3.802000e+02
-0 4326     -2.922900e+02 5.609003e+01
-1 4326     -5.096997e+01 1.546600e+02
-0 4327     1.233000e+02 3.676100e+02
-1 4327     4.708700e+02 3.424800e+02
-0 4328     4.908500e+02 -2.620500e+02
-1 4328     6.041899e+02 -3.975100e+02
-0 4329     5.424900e+02 -1.201001e+01
-1 4329     7.651899e+02 -1.640700e+02
-0 4330     -1.927300e+02 1.856900e+02
-1 4330     8.976001e+01 2.498200e+02
-0 4331     -7.519000e+01 -5.005601e+02
-1 4331     -5.359003e+01 -4.283100e+02
-0 4332     -3.047900e+02 -5.846500e+02
-1 4332     -2.920000e+02 -4.279200e+02
-0 4333     7.214700e+02 -3.076800e+02
-1 4333     8.453500e+02 -5.351899e+02
-0 4334     -3.119600e+02 -4.660699e+02
-1 4334     -2.558700e+02 -3.193400e+02
-0 4335     3.958199e+02 -2.854400e+02
-1 4335     4.842400e+02 -3.842900e+02
-0 4336     -5.146997e+01 2.417100e+02
-1 4336     2.471600e+02 2.660800e+02
-0 4337     5.290900e+02 -3.877200e+02
-1 4337     5.928800e+02 -5.371300e+02
-0 4338     -1.804600e+02 1.848600e+02
-1 4338     1.013600e+02 2.459600e+02
-0 4339     3.500400e+02 3.802700e+02
-1 4339     7.172800e+02 2.944100e+02
-0 4340     -1.206700e+02 -5.135500e+02
-1 4340     -1.005900e+02 -4.245300e+02
-0 4341     2.336300e+02 2.084100e+02
-1 4341     5.226700e+02 1.541000e+02
-0 4342     3.053700e+02 2.557400e+02
-1 4342     6.172700e+02 1.806600e+02
-0 4343     -2.238100e+02 1.988500e+02
-1 4343     6.467999e+01 2.705700e+02
-0 4344     5.113400e+02 -3.762900e+02
-1 4344     5.786700e+02 -5.191400e+02
-0 4345     -5.225000e+01 1.859000e+02
-1 4345     2.256400e+02 2.123600e+02
-0 4346     -3.116200e+02 1.041600e+02
-1 4346     -5.183002e+01 2.044500e+02
-0 4347     2.579600e+02 2.929400e+02
-1 4347     5.818199e+02 2.312800e+02
-0 4348     3.022200e+02 2.146500e+02
-1 4348     5.972300e+02 1.402000e+02
-0 4349     6.575000e+01 4.635200e+02
-1 4349     4.367900e+02 4.539400e+02
-0 4350     -2.791000e+02 -4.470900e+02
-1 4350     -2.204300e+02 -3.126600e+02
-0 4351     7.033600e+02 -2.859800e+02
-1 4351     8.323400e+02 -5.046600e+02
-0 4352     -7.856100e+02 -4.898700e+02
-1 4352     -6.598300e+02 -1.956100e+02
-0 4353     6.687700e+02 -2.740100e+02
-1 4353     7.973400e+02 -4.780601e+02
-0 4354     -1.189300e+02 1.793800e+02
-1 4354     1.584100e+02 2.242300e+02
-0 4355     5.866700e+02 -2.151001e+01
-1 4355     8.087300e+02 -1.888000e+02
-0 4356     -1.477100e+02 -4.782700e+02
-1 4356     -1.124300e+02 -3.830200e+02
-0 4357     6.811100e+02 -2.808800e+02
-1 4357     8.087900e+02 -4.901700e+02
-0 4358     -1.778900e+02 1.482900e+02
-1 4358     9.026001e+01 2.105600e+02
-0 4359     4.293700e+02 1.433200e+02
-1 4359     7.036600e+02 3.145001e+01
-0 4360     -2.966400e+02 -4.837200e+02
-1 4360     -2.486900e+02 -3.399500e+02
-0 4361     -6.775200e+02 -5.347900e+02
-1 4361     -5.890400e+02 -2.662600e+02
-0 4362     5.929200e+02 -3.521200e+02
-1 4362     6.778000e+02 -5.268300e+02
-0 4363     3.858800e+02 4.567800e+02
-1 4363     7.880699e+02 3.644000e+02
-0 4364     4.912400e+02 -4.362800e+02
-1 4364     5.322400e+02 -5.706801e+02
-0 4365     3.135200e+02 2.645000e+02
-1 4365     6.295300e+02 1.870000e+02
-0 4366     -4.217500e+02 9.264001e+01
-1 4366     -1.574800e+02 2.228000e+02
-0 4367     -7.804999e+01 2.078500e+02
-1 4367     2.085500e+02 2.405300e+02
-0 4368     -3.994500e+02 8.439999e+01
-1 4368     -1.394300e+02 2.094000e+02
-0 4369     3.180800e+02 3.881000e+02
-1 4369     6.853000e+02 3.110800e+02
-0 4370     4.081000e+02 3.544000e+02
-1 4370     7.700500e+02 2.515600e+02
-0 4371     -1.551500e+02 3.937000e+01
-1 4371     4.315002e+01 1.067300e+02
-0 4372     -1.023700e+02 6.206000e+01
-1 4372     9.789001e+01 1.147000e+02
-0 4373     2.157900e+02 5.006100e+02
-1 4373     6.077900e+02 4.553600e+02
-0 4374     -4.307700e+02 3.096997e+01
-1 4374     -1.869200e+02 1.683200e+02
-0 4375     -2.968900e+02 1.707300e+02
-1 4375     -1.459003e+01 2.630600e+02
-0 4376     2.461400e+02 3.136300e+02
-1 4376     5.775800e+02 2.553500e+02
-0 4377     -5.053300e+02 1.191000e+02
-1 4377     -2.235000e+02 2.686200e+02
-0 4378     -6.749300e+02 3.944500e+02
-1 4378     -2.801500e+02 5.601800e+02
-0 4379     5.354600e+02 -2.655900e+02
-1 4379     6.510200e+02 -4.175700e+02
-0 4380     -3.281700e+02 4.897998e+01
-1 4380     -8.753003e+01 1.580800e+02
-0 4381     -4.064000e+02 5.248999e+01
-1 4381     -1.571300e+02 1.818500e+02
-0 4382     3.199500e+02 2.540800e+02
-1 4382     6.321100e+02 1.746000e+02
-0 4383     -1.428300e+02 -5.086801e+02
-1 4383     -1.192700e+02 -4.129600e+02
-0 4384     3.828400e+02 3.734500e+02
-1 4384     7.503000e+02 2.782800e+02
-0 4385     -2.111700e+02 1.946400e+02
-1 4385     7.525000e+01 2.633700e+02
-0 4386     -2.329100e+02 1.812500e+02
-1 4386     4.997998e+01 2.564900e+02
-0 4387     4.030800e+02 3.782200e+02
-1 4387     7.753400e+02 2.777600e+02
-0 4388     -5.877100e+02 -4.677500e+02
-1 4388     -4.944500e+02 -2.352100e+02
-0 4389     -2.064900e+02 -4.874700e+02
-1 4389     -1.693300e+02 -3.725400e+02
-0 4390     -3.029500e+02 5.919000e+01
-1 4390     -5.987000e+01 1.603900e+02
-0 4391     -2.093400e+02 1.816900e+02
-1 4391     7.233002e+01 2.505600e+02
-0 4392     -1.929500e+02 1.902100e+02
-1 4392     9.123999e+01 2.546800e+02
-0 4393     4.174500e+02 1.950200e+02
-1 4393     7.129301e+02 8.610001e+01
-0 4394     2.232700e+02 4.090200e+02
-1 4394     5.906899e+02 3.576300e+02
-0 4395     6.469100e+02 -3.289000e+02
-1 4395     7.486000e+02 -5.251899e+02
-0 4396     3.712400e+02 4.323000e+02
-1 4396     7.623101e+02 3.426900e+02
-0 4397     -4.893800e+02 -1.316000e+02
-1 4397     -2.954000e+02 3.533002e+01
-0 4398     -4.355600e+02 -2.929200e+02
-1 4398     -3.042400e+02 -1.255800e+02
-0 4399     7.374800e+02 -2.789000e+02
-1 4399     8.762900e+02 -5.119000e+02
-0 4400     -3.955800e+02 -6.563000e+01
-1 4400     -1.891100e+02 7.001001e+01
-0 4401     -6.496900e+02 -3.366100e+02
-1 4401     -5.026300e+02 -1.025400e+02
-0 4402     -3.230900e+02 -2.063700e+02
-1 4402     -1.734500e+02 -7.967999e+01
-0 4403     6.923400e+02 -3.177600e+02
-1 4403     8.059700e+02 -5.325500e+02
-0 4404     1.983600e+02 3.122400e+02
-1 4404     5.271000e+02 2.671500e+02
-0 4405     3.730200e+02 1.109985e+00
-1 4405     5.519000e+02 -8.712000e+01
-0 4406     -7.846100e+02 -5.197500e+02
-1 4406     -6.680000e+02 -2.214600e+02
-0 4407     8.115997e+01 4.162400e+02
-1 4407     4.417200e+02 4.032000e+02
-0 4408     7.204200e+02 -3.484200e+02
-1 4408     8.258600e+02 -5.760100e+02
-0 4409     5.095400e+02 -3.264700e+02
-1 4409     5.975699e+02 -4.686100e+02
-0 4410     5.243400e+02 -1.939700e+02
-1 4410     6.689100e+02 -3.416600e+02
-0 4411     2.322500e+02 2.805400e+02
-1 4411     5.497600e+02 2.260100e+02
-0 4412     -4.173000e+02 -1.792400e+02
-1 4412     -2.482500e+02 -2.740997e+01
-0 4413     8.870001e+01 2.656100e+02
-1 4413     3.961801e+02 2.512300e+02
-0 4414     -2.834600e+02 3.784998e+01
-1 4414     -4.906000e+01 1.352800e+02
-0 4415     5.853900e+02 -2.084900e+02
-1 4415     7.303101e+02 -3.788500e+02
-0 4416     2.150200e+02 3.848800e+02
-1 4416     5.733900e+02 3.351700e+02
-0 4417     -6.983500e+02 -4.776200e+02
-1 4417     -5.876000e+02 -2.109600e+02
-0 4418     -3.265300e+02 -2.217900e+02
-1 4418     -1.822200e+02 -9.316998e+01
-0 4419     -4.690600e+02 -1.631000e+02
-1 4419     -2.885200e+02 1.099976e+00
-0 4420     1.533600e+02 -2.473900e+02
-1 4420     2.305800e+02 -2.591600e+02
-0 4421     -4.019700e+02 -1.176900e+02
-1 4421     -2.126200e+02 2.407001e+01
-0 4422     5.674200e+02 -4.087200e+02
-1 4422     6.254500e+02 -5.731000e+02
-0 4423     4.499100e+02 2.376600e+02
-1 4423     7.612900e+02 1.214100e+02
-0 4424     6.870200e+02 -2.983700e+02
-1 4424     8.084200e+02 -5.104500e+02
-0 4425     -7.264100e+02 -4.604600e+02
-1 4425     -6.044900e+02 -1.879900e+02
-0 4426     2.510000e+02 3.641900e+02
-1 4426     6.028000e+02 3.048300e+02
-0 4427     -4.290100e+02 2.626400e+02
-1 4427     -1.071500e+02 3.828700e+02
-0 4428     6.508199e+02 -3.066600e+02
-1 4428     7.628900e+02 -5.045100e+02
-0 4429     3.678500e+02 4.496800e+02
-1 4429     7.651000e+02 3.615200e+02
-0 4430     -3.318600e+02 -1.784100e+02
-1 4430     -1.713500e+02 -5.144000e+01
-0 4431     3.048199e+02 3.370000e+02
-1 4431     6.499200e+02 2.625700e+02
-0 4432     5.248900e+02 -3.653900e+02
-1 4432     5.980300e+02 -5.135200e+02
-0 4433     1.646899e+02 -5.208900e+02
-1 4433     1.669600e+02 -5.311200e+02
-0 4434     -3.298500e+02 3.456000e+01
-1 4434     -9.358002e+01 1.445500e+02
-0 4435     5.997400e+02 -3.487800e+02
-1 4435     6.868500e+02 -5.263000e+02
-0 4436     2.746400e+02 3.053100e+02
-1 4436     6.046801e+02 2.394700e+02
-0 4437     1.601400e+02 4.968500e+02
-1 4437     5.461200e+02 4.654600e+02
-0 4438     5.402000e+02 -1.624000e+02
-1 4438     6.999399e+02 -3.158900e+02
-0 4439     1.038200e+02 4.009000e+02
-1 4439     4.610000e+02 3.814000e+02
-0 4440     4.342100e+02 1.423100e+02
-1 4440     7.091500e+02 2.908002e+01
-0 4441     5.532900e+02 -4.105900e+02
-1 4441     6.097300e+02 -5.697900e+02
-0 4442     -4.365600e+02 -2.845100e+02
-1 4442     -3.021300e+02 -1.173900e+02
-0 4443     -4.263900e+02 -2.791200e+02
-1 4443     -2.913900e+02 -1.155200e+02
-0 4444     -3.075000e+02 -2.045100e+02
-1 4444     -1.584800e+02 -8.271002e+01
-0 4445     3.033700e+02 2.256300e+02
-1 4445     6.026600e+02 1.510100e+02
-0 4446     -6.090400e+02 3.631000e+01
-1 4446     -3.433100e+02 2.190800e+02
-0 4447     6.748800e+02 -2.718500e+02
-1 4447     8.051700e+02 -4.780800e+02
-0 4448     5.820800e+02 -3.777100e+02
-1 4448     6.553000e+02 -5.485500e+02
-0 4449     3.987300e+02 4.467500e+02
-1 4449     7.993900e+02 3.500900e+02
-0 4450     3.849301e+02 3.799200e+02
-1 4450     7.553500e+02 2.844400e+02
-0 4451     2.965100e+02 2.148400e+02
-1 4451     5.915300e+02 1.423500e+02
-0 4452     1.256500e+02 4.887600e+02
-1 4452     5.073400e+02 4.657200e+02
-0 4453     1.151900e+02 4.658300e+02
-1 4453     4.901899e+02 4.451300e+02
-0 4454     7.281801e+02 -2.809000e+02
-1 4454     8.643700e+02 -5.097500e+02
-0 4455     -3.317200e+02 4.304999e+01
-1 4455     -9.220001e+01 1.530800e+02
-0 4456     5.571002e+01 2.300400e+02
-1 4456     3.492700e+02 2.254700e+02
-0 4457     -4.771700e+02 1.037100e+02
-1 4457     -2.035500e+02 2.472100e+02
-0 4458     -4.130500e+02 -4.470601e+02
-1 4458     -3.384500e+02 -2.704900e+02
-0 4459     5.508700e+02 -3.385500e+02
-1 4459     6.369900e+02 -4.965601e+02
-0 4460     2.932600e+02 -1.703998e+01
-1 4460     4.506899e+02 -7.758002e+01
-0 4461     2.127700e+02 2.780800e+02
-1 4461     5.288000e+02 2.292500e+02
-0 4462     -5.239990e+00 1.254400e+02
-1 4462     2.003700e+02 1.514100e+02
-0 4463     -3.131800e+02 -1.186400e+02
-1 4463     -1.329600e+02 -2.039978e+00
-0 4464     6.784900e+02 -3.100200e+02
-1 4464     7.934399e+02 -5.188900e+02
-0 4465     7.324700e+02 -3.207700e+02
-1 4465     8.521100e+02 -5.527200e+02
-0 4466     5.870900e+02 -3.282500e+02
-1 4466     6.813800e+02 -4.996899e+02
-0 4467     -2.767500e+02 -4.748101e+02
-1 4467     -2.277200e+02 -3.383800e+02
-0 4468     5.719100e+02 -1.807600e+02
-1 4468     7.267300e+02 -3.461300e+02
-0 4469     -1.227500e+02 2.073200e+02
-1 4469     1.649399e+02 2.518900e+02
-0 4470     -7.378400e+02 -3.250400e+02
-1 4470     -5.714600e+02 -6.776001e+01
-0 4471     -7.282100e+02 -4.471801e+02
-1 4471     -6.020800e+02 -1.762800e+02
-0 4472     4.753500e+02 2.400200e+02
-1 4472     7.882600e+02 1.167700e+02
-0 4473     5.164301e+02 -3.371400e+02
-1 4473     6.006600e+02 -4.820699e+02
-0 4474     5.446100e+02 -3.602300e+02
-1 4474     6.216200e+02 -5.158800e+02
-0 4475     5.624900e+02 -4.004900e+02
-1 4475     6.240400e+02 -5.631000e+02
-0 4476     -2.130100e+02 -4.407000e+02
-1 4476     -1.578900e+02 -3.276900e+02
-0 4477     -1.901000e+02 -3.320300e+02
-1 4477     -1.001700e+02 -2.350200e+02
-0 4478     5.724100e+02 -2.836600e+02
-1 4478     6.841200e+02 -4.499700e+02
-0 4479     4.567600e+02 2.503600e+02
-1 4479     7.725400e+02 1.325700e+02
-0 4480     7.390500e+02 -2.872300e+02
-1 4480     8.750400e+02 -5.210800e+02
-0 4481     4.931000e+02 -1.004200e+02
-1 4481     6.736300e+02 -2.366100e+02
-0 4482     -7.215800e+02 -4.693600e+02
-1 4482     -6.035400e+02 -1.970400e+02
-0 4483     6.890997e+01 4.713900e+02
-1 4483     4.419600e+02 4.610200e+02
-0 4484     5.420699e+02 -2.624700e+02
-1 4484     6.595500e+02 -4.168900e+02
-0 4485     -2.731500e+02 -4.393300e+02
-1 4485     -2.118000e+02 -3.073500e+02
-0 4486     4.305601e+02 2.646400e+02
-1 4486     7.505400e+02 1.546700e+02
-0 4487     5.483300e+02 -3.641100e+02
-1 4487     6.242400e+02 -5.212200e+02
-0 4488     5.611500e+02 -2.667100e+02
-1 4488     6.787200e+02 -4.285100e+02
-0 4489     1.143900e+02 4.734600e+02
-1 4489     4.909399e+02 4.525700e+02
-0 4490     3.145699e+02 2.555100e+02
-1 4490     6.267700e+02 1.777200e+02
-0 4491     -4.669000e+01 2.884700e+02
-1 4491     2.699900e+02 3.100200e+02
-0 4492     -6.749300e+02 3.944500e+02
-1 4492     -2.801500e+02 5.601800e+02
-0 4493     -3.011100e+02 1.438200e+02
-1 4493     -2.788000e+01 2.391000e+02
-0 4494     -7.572500e+02 -4.583600e+02
-1 4494     -6.280600e+02 -1.774900e+02
-0 4495     -2.198200e+02 1.865400e+02
-1 4495     6.408002e+01 2.578800e+02
-0 4496     -6.143600e+02 5.340997e+01
-1 4496     -3.420100e+02 2.362600e+02
-0 4497     -9.277002e+01 1.484003e+01
-1 4497     8.803998e+01 6.734998e+01
-0 4498     -2.273400e+02 3.164700e+02
-1 4498     1.013000e+02 3.840600e+02
-0 4499     6.236300e+02 -2.852000e+02
-1 4499     7.405300e+02 -4.711899e+02
-0 4500     3.087900e+02 2.434400e+02
-1 4500     6.160900e+02 1.671600e+02
-0 4501     -1.902700e+02 2.000500e+02
-1 4501     9.721002e+01 2.628600e+02
-0 4502     4.366100e+02 3.027300e+02
-1 4502     7.685500e+02 1.932400e+02
-0 4503     -1.463900e+02 3.316998e+01
-1 4503     4.965002e+01 9.875000e+01
-0 4504     -2.480700e+02 3.478000e+02
-1 4504     8.820001e+01 4.198100e+02
-0 4505     5.062800e+02 -1.215200e+02
-1 4505     6.792400e+02 -2.620300e+02
-0 4506     5.784301e+02 -3.776800e+02
-1 4506     6.512100e+02 -5.471000e+02
-0 4507     1.101400e+02 4.740500e+02
-1 4507     4.868800e+02 4.540400e+02
-0 4508     -4.263900e+02 -2.791200e+02
-1 4508     -2.913900e+02 -1.155200e+02
-0 4509     2.764200e+02 5.113600e+02
-1 4509     6.787300e+02 4.511900e+02
-0 4510     -8.228003e+01 2.834700e+02
-1 4510     2.322900e+02 3.145400e+02
-0 4511     4.064301e+02 3.721002e+01
-1 4511     6.083600e+02 -6.362000e+01
-0 4512     2.018700e+02 2.140500e+02
-1 4512     4.919399e+02 1.686800e+02
-0 4513     4.620000e+02 2.376900e+02
-1 4513     7.737300e+02 1.177500e+02
-0 4514     6.099600e+02 -2.954900e+02
-1 4514     7.209700e+02 -4.763700e+02
-0 4515     4.951001e+01 3.786500e+02
-1 4515     3.990500e+02 3.730000e+02
-0 4516     2.099000e+02 3.916900e+02
-1 4516     5.705200e+02 3.435900e+02
-0 4517     -2.984900e+02 -9.215002e+01
-1 4517     -1.102100e+02 1.802002e+01
-0 4518     1.742700e+02 3.732200e+02
-1 4518     5.258000e+02 3.345400e+02
-0 4519     3.299800e+02 4.319200e+02
-1 4519     7.161000e+02 3.528000e+02
-0 4520     2.352100e+02 2.755700e+02
-1 4520     5.510200e+02 2.204600e+02
-0 4521     -3.275300e+02 -1.987100e+02
-1 4521     -1.742400e+02 -7.120001e+01
-0 4522     -7.958900e+02 -5.043400e+02
-1 4522     -6.721500e+02 -2.052800e+02
-0 4523     5.532900e+02 -4.105900e+02
-1 4523     6.097300e+02 -5.697900e+02
-0 4524     6.261600e+02 -2.169200e+02
-1 4524     7.727200e+02 -4.029800e+02
-0 4525     4.566300e+02 2.092600e+02
-1 4525     7.594000e+02 8.957001e+01
-0 4526     -1.270000e+02 1.647000e+02
-1 4526     1.452800e+02 2.124500e+02
-0 4527     2.345601e+02 3.714300e+02
-1 4527     5.886000e+02 3.166100e+02
-0 4528     5.482400e+02 -3.138000e+01
-1 4528     7.636500e+02 -1.858400e+02
-0 4529     3.429600e+02 -5.038500e+02
-1 4529     3.508500e+02 -5.800000e+02
-0 4530     6.210000e+02 -2.746100e+02
-1 4530     7.422000e+02 -4.595800e+02
-0 4531     2.269100e+02 2.127100e+02
-1 4531     5.175400e+02 1.602900e+02
-0 4532     6.866500e+02 -2.767000e+02
-1 4532     8.169600e+02 -4.883800e+02
-0 4533     -3.019000e+02 9.932001e+01
-1 4533     -4.452002e+01 1.979300e+02
-0 4534     -2.400300e+02 -4.172700e+02
-1 4534     -1.741500e+02 -2.980500e+02
-0 4535     2.908800e+02 3.244300e+02
-1 4535     6.295300e+02 2.539500e+02
-0 4536     -5.907500e+02 -4.649600e+02
-1 4536     -4.959900e+02 -2.319600e+02
-0 4537     5.995500e+02 -3.501001e+01
-1 4537     8.179500e+02 -2.070600e+02
-0 4538     2.042600e+02 5.043100e+02
-1 4538     5.963800e+02 4.624600e+02
-0 4539     -6.845800e+02 -4.375800e+02
-1 4539     -5.638700e+02 -1.805800e+02
-0 4540     -2.156800e+02 -4.420800e+02
-1 4540     -1.610000e+02 -3.282700e+02
-0 4541     2.427600e+02 2.486900e+02
-1 4541     5.484000e+02 1.913900e+02
-0 4542     7.103000e+02 -3.424800e+02
-1 4542     8.161400e+02 -5.661500e+02
-0 4543     2.838000e+02 1.762300e+02
-1 4543     5.621200e+02 1.074800e+02
-0 4544     2.468000e+02 3.103100e+02
-1 4544     5.773300e+02 2.518200e+02
-0 4545     5.515300e+02 -2.953800e+02
-1 4545     6.561500e+02 -4.539600e+02
-0 4546     3.136400e+02 1.901001e+01
-1 4546     4.859800e+02 -4.834003e+01
-0 4547     3.037800e+02 1.899800e+02
-1 4547     5.884800e+02 1.152200e+02
-0 4548     -4.180100e+02 -4.475000e+02
-1 4548     -3.428200e+02 -2.695300e+02
-0 4549     -4.197900e+02 2.437000e+01
-1 4549     -1.797200e+02 1.591700e+02
-0 4550     6.386500e+02 -2.434998e+01
-1 4550     8.620699e+02 -2.086800e+02
-0 4551     3.110900e+02 3.947200e+02
-1 4551     6.802800e+02 3.197400e+02
-0 4552     2.979800e+02 3.995700e+02
-1 4552     6.678800e+02 3.278400e+02
-0 4553     3.280000e+02 -4.515997e+01
-1 4553     4.822000e+02 -1.172600e+02
-0 4554     5.885500e+02 -2.505800e+02
-1 4554     7.159000e+02 -4.228400e+02
-0 4555     5.213700e+02 -3.723500e+02
-1 4555     5.914000e+02 -5.189100e+02
-0 4556     2.657400e+02 3.152000e+02
-1 4556     5.989800e+02 2.516000e+02
-0 4557     6.326300e+02 -3.184700e+02
-1 4557     7.374000e+02 -5.093300e+02
-0 4558     -1.499400e+02 2.112200e+02
-1 4558     1.401500e+02 2.629200e+02
-0 4559     3.907900e+02 -2.436100e+02
-1 4559     4.961700e+02 -3.416800e+02
-0 4560     -1.458500e+02 -8.500000e+00
-1 4560     3.353998e+01 5.956000e+01
-0 4561     2.260200e+02 -5.331899e+02
-1 4561     2.226500e+02 -5.647600e+02
-0 4562     -9.690997e+01 2.166800e+02
-1 4562     1.935200e+02 2.540600e+02
-0 4563     5.983300e+02 -2.458900e+02
-1 4563     7.291600e+02 -4.215400e+02
-0 4564     4.276500e+02 1.261500e+02
-1 4564     6.959200e+02 1.325000e+01
-0 4565     -3.675400e+02 -1.575400e+02
-1 4565     -1.961200e+02 -2.223999e+01
-0 4566     6.687700e+02 -2.740100e+02
-1 4566     7.973400e+02 -4.780601e+02
-0 4567     -7.819000e+01 1.989000e+02
-1 4567     2.051000e+02 2.318700e+02
-0 4568     -6.664600e+02 -5.467500e+02
-1 4568     -5.839800e+02 -2.801400e+02
-0 4569     4.696500e+02 2.282900e+02
-1 4569     7.790800e+02 1.058600e+02
-0 4570     -1.235500e+02 1.732200e+02
-1 4570     1.518101e+02 2.195700e+02
-0 4571     4.867500e+02 2.169600e+02
-1 4571     7.928300e+02 8.919000e+01
-0 4572     2.307300e+02 2.701500e+02
-1 4572     5.444200e+02 2.159800e+02
-0 4573     6.274399e+02 -1.171000e+02
-1 4573     8.167000e+02 -3.012400e+02
-0 4574     -2.775000e+01 -1.513600e+02
-1 4574     9.015997e+01 -1.096100e+02
-0 4575     1.683800e+02 -5.697500e+02
-1 4575     1.510900e+02 -5.780000e+02
-0 4576     -1.627200e+02 -4.764700e+02
-1 4576     -1.254800e+02 -3.769600e+02
-0 4577     1.392900e+02 4.728500e+02
-1 4577     5.177500e+02 4.463100e+02
-0 4578     3.073900e+02 3.504700e+02
-1 4578     6.578000e+02 2.755700e+02
-0 4579     5.283500e+02 -2.416300e+02
-1 4579     6.533700e+02 -3.909000e+02
-0 4580     2.206400e+02 1.983000e+02
-1 4580     5.051100e+02 1.477700e+02
-0 4581     1.075300e+02 4.987400e+02
-1 4581     4.904000e+02 4.807600e+02
-0 4582     5.952900e+02 -3.600700e+02
-1 4582     6.774900e+02 -5.355900e+02
-0 4583     5.303600e+02 -2.571400e+02
-1 4583     6.489600e+02 -4.078300e+02
-0 4584     -4.683800e+02 1.026600e+02
-1 4584     -1.954600e+02 2.440700e+02
-0 4585     -9.337000e+01 -2.217500e+02
-1 4585     1.331000e+01 -1.584500e+02
-0 4586     5.879999e+01 2.459900e+02
-1 4586     3.586700e+02 2.400400e+02
-0 4587     1.891200e+02 3.976700e+02
-1 4587     5.509200e+02 3.552800e+02
-0 4588     -4.872998e+01 1.966100e+02
-1 4588     2.330699e+02 2.219400e+02
-0 4589     6.429999e+01 2.427300e+02
-1 4589     3.629200e+02 2.352700e+02
-0 4590     2.369800e+02 3.290300e+02
-1 4590     5.742800e+02 2.733500e+02
-0 4591     1.679600e+02 3.393800e+02
-1 4591     5.060300e+02 3.025600e+02
-0 4592     1.255700e+02 -5.058900e+02
-1 4592     1.332400e+02 -5.023400e+02
-0 4593     1.867700e+02 3.539100e+02
-1 4593     5.315100e+02 3.121000e+02
-0 4594     2.312200e+02 -2.028500e+02
-1 4594     3.240699e+02 -2.416700e+02
-0 4595     -3.428900e+02 4.483002e+01
-1 4595     -1.017500e+02 1.576400e+02
-0 4596     -3.966700e+02 -9.440997e+01
-1 4596     -2.001200e+02 4.366998e+01
-0 4597     -4.256300e+02 2.606400e+02
-1 4597     -1.045600e+02 3.804700e+02
-0 4598     3.594700e+02 4.388300e+02
-1 4598     7.518700e+02 3.520700e+02
-0 4599     2.540699e+02 2.681700e+02
-1 4599     5.682800e+02 2.071000e+02
-0 4600     6.928900e+02 -2.954700e+02
-1 4600     8.161801e+02 -5.099301e+02
-0 4601     3.942900e+02 3.734900e+02
-1 4601     7.633800e+02 2.755300e+02
-0 4602     4.545900e+02 2.139500e+02
-1 4602     7.587700e+02 9.492001e+01
-0 4603     4.879301e+02 -4.136900e+02
-1 4603     5.381700e+02 -5.472600e+02
-0 4604     5.725100e+02 -3.360000e+02
-1 4604     6.621600e+02 -5.024900e+02
-0 4605     5.252100e+02 -3.879600e+02
-1 4605     5.889100e+02 -5.361000e+02
-0 4606     2.106899e+02 2.740300e+02
-1 4606     5.251000e+02 2.260300e+02
-0 4607     -1.673200e+02 1.311800e+02
-1 4607     9.426001e+01 1.914000e+02
-0 4608     4.514800e+02 1.948100e+02
-1 4608     7.496801e+02 7.626001e+01
-0 4609     -8.028200e+02 -4.399000e+02
-1 4609     -6.579800e+02 -1.484900e+02
-0 4610     5.508900e+02 -3.119000e+02
-1 4610     6.484700e+02 -4.698400e+02
-0 4611     -1.290100e+02 2.054100e+02
-1 4611     1.585800e+02 2.519000e+02
-0 4612     6.061801e+02 -3.453600e+02
-1 4612     6.957000e+02 -5.254600e+02
-0 4613     -4.865200e+02 1.143600e+02
-1 4613     -2.083300e+02 2.593700e+02
-0 4614     5.664000e+02 -2.556600e+02
-1 4614     6.887900e+02 -4.192700e+02
-0 4615     5.830800e+02 -3.239300e+02
-1 4615     6.791000e+02 -4.945800e+02
-0 4616     5.324800e+02 -2.256000e+01
-1 4616     7.499200e+02 -1.719400e+02
-0 4617     -7.625500e+02 -5.332100e+02
-1 4617     -6.546900e+02 -2.395200e+02
-0 4618     4.502000e+02 2.121800e+02
-1 4618     7.538000e+02 9.434000e+01
-0 4619     5.291000e+02 -3.514900e+02
-1 4619     6.081801e+02 -5.011700e+02
-0 4620     4.635601e+02 2.107100e+02
-1 4620     7.667300e+02 8.922000e+01
-0 4621     -3.397000e+02 -1.876300e+02
-1 4621     -1.815000e+02 -5.762000e+01
-0 4622     4.753500e+02 2.400200e+02
-1 4622     7.882600e+02 1.167700e+02
-0 4623     4.843800e+02 2.222100e+02
-1 4623     7.921300e+02 9.548999e+01
-0 4624     3.925601e+02 -2.277002e+01
-1 4624     5.665699e+02 -1.181700e+02
-0 4625     5.767400e+02 -3.616700e+02
-1 4625     6.556100e+02 -5.302300e+02
-0 4626     -7.378400e+02 -3.250400e+02
-1 4626     -5.714600e+02 -6.776001e+01
-0 4627     4.407000e+02 -2.495001e+01
-1 4627     6.182500e+02 -1.365500e+02
-0 4628     5.275100e+02 -2.672700e+02
-1 4628     6.415200e+02 -4.167400e+02
-0 4629     4.955500e+02 -4.241100e+02
-1 4629     5.420200e+02 -5.606700e+02
-0 4630     6.035400e+02 -3.415600e+02
-1 4630     6.937900e+02 -5.207000e+02
-0 4631     4.921600e+02 -1.397700e+02
-1 4631     6.564600e+02 -2.757300e+02
-0 4632     4.094000e+01 2.205800e+02
-1 4632     3.307400e+02 2.203100e+02
-0 4633     -3.275300e+02 -1.987100e+02
-1 4633     -1.742400e+02 -7.120001e+01
-0 4634     -7.413700e+02 -3.429100e+02
-1 4634     -5.795900e+02 -8.226001e+01
-0 4635     9.284998e+01 4.808300e+02
-1 4635     4.694399e+02 4.665500e+02
-0 4636     9.708002e+01 4.779800e+02
-1 4636     4.725900e+02 4.626800e+02
-0 4637     3.290400e+02 5.390300e+02
-1 4637     7.473101e+02 4.674500e+02
-0 4638     5.612700e+02 -3.130700e+02
-1 4638     6.593600e+02 -4.755601e+02
-0 4639     -2.132000e+02 -5.036801e+02
-1 4639     -1.810100e+02 -3.850500e+02
-0 4640     -2.963700e+02 3.953003e+01
-1 4640     -6.073999e+01 1.404100e+02
-0 4641     -1.589900e+02 -5.088600e+02
-1 4641     -1.338800e+02 -4.078100e+02
-0 4642     5.503600e+02 -8.530029e+00
-1 4642     7.752900e+02 -1.632700e+02
-0 4643     3.736000e+02 3.966000e+02
-1 4643     7.502000e+02 3.046200e+02
-0 4644     2.363900e+02 3.759700e+02
-1 4644     5.923199e+02 3.207800e+02
-0 4645     -2.873300e+02 1.820800e+02
-1 4645     -1.380005e+00 2.715000e+02
-0 4646     -3.448300e+02 2.133700e+02
-1 4646     -4.391998e+01 3.156400e+02
-0 4647     4.075900e+02 -4.109985e+00
-1 4647     5.912200e+02 -1.048400e+02
-0 4648     1.789399e+02 -2.035500e+02
-1 4648     2.710800e+02 -2.249200e+02
-0 4649     3.171100e+02 2.126800e+02
-1 4649     6.123199e+02 1.339800e+02
-0 4650     -6.881000e+01 2.963000e+02
-1 4650     2.503300e+02 3.233800e+02
-0 4651     5.051300e+02 -3.334700e+02
-1 4651     5.896801e+02 -4.741300e+02
-0 4652     -6.258100e+02 -2.367200e+02
-1 4652     -4.497700e+02 -2.112000e+01
-0 4653     5.693600e+02 -3.661400e+02
-1 4653     6.459700e+02 -5.315000e+02
-0 4654     5.606000e+02 -3.288000e+02
-1 4654     6.520601e+02 -4.905500e+02
-0 4655     7.074399e+02 -2.962000e+02
-1 4655     8.334399e+02 -5.166200e+02
-0 4656     4.630000e+02 4.010600e+02
-1 4656     8.270699e+02 2.909400e+02
-0 4657     -1.290100e+02 2.054100e+02
-1 4657     1.585800e+02 2.519000e+02
-0 4658     -7.148200e+02 -4.067400e+02
-1 4658     -5.783800e+02 -1.452200e+02
-0 4659     2.000100e+02 2.036700e+02
-1 4659     4.862200e+02 1.591100e+02
-0 4660     -2.632600e+02 4.292999e+01
-1 4660     -2.858002e+01 1.345200e+02
-0 4661     3.714700e+02 2.958200e+02
-1 4661     7.048600e+02 2.023800e+02
-0 4662     -3.176000e+02 -1.452100e+02
-1 4662     -1.466400e+02 -2.514001e+01
-0 4663     2.894600e+02 1.861600e+02
-1 4663     5.723700e+02 1.156300e+02
-0 4664     5.827900e+02 1.881200e+02
-1 4664     8.710601e+02 3.367999e+01
-0 4665     -1.029000e+02 -5.258300e+02
-1 4665     -8.870001e+01 -4.420400e+02
-0 4666     -1.227500e+02 2.073200e+02
-1 4666     1.649399e+02 2.518900e+02
-0 4667     -8.385800e+02 -8.929999e+01
-1 4667     -5.770200e+02 1.642600e+02
-0 4668     -3.747700e+02 -1.473400e+02
-1 4668     -1.989500e+02 -1.087000e+01
-0 4669     -9.590997e+01 2.047100e+02
-1 4669     1.903300e+02 2.421200e+02
-0 4670     4.902900e+02 -9.781000e+01
-1 4670     6.716600e+02 -2.328300e+02
-0 4671     -1.354100e+02 2.906500e+02
-1 4671     1.832700e+02 3.351700e+02
-0 4672     5.307100e+02 -3.903300e+02
-1 4672     5.938101e+02 -5.404800e+02
-0 4673     1.002500e+02 4.577700e+02
-1 4673     4.720000e+02 4.407100e+02
-0 4674     -7.678800e+02 -4.615300e+02
-1 4674     -6.371400e+02 -1.769400e+02
-0 4675     3.603400e+02 -1.912000e+02
-1 4675     4.610601e+02 -2.738200e+02
-0 4676     -1.206000e+02 2.344700e+02
-1 4676     1.767300e+02 2.773100e+02
-0 4677     -3.137800e+02 1.202800e+02
-1 4677     -4.816998e+01 2.203100e+02
-0 4678     4.882100e+02 2.209200e+02
-1 4678     7.957300e+02 9.295999e+01
-0 4679     4.218000e+02 3.748900e+02
-1 4679     7.942700e+02 2.694100e+02
-0 4680     2.025601e+02 4.914700e+02
-1 4680     5.914200e+02 4.491900e+02
-0 4681     -2.251900e+02 -3.793700e+02
-1 4681     -1.466500e+02 -2.679100e+02
-0 4682     3.598800e+02 3.588700e+02
-1 4682     7.183101e+02 2.695900e+02
-0 4683     1.986000e+02 2.228000e+02
-1 4683     4.921200e+02 1.781300e+02
-0 4684     5.018800e+02 -1.216000e+02
-1 4684     6.745601e+02 -2.609600e+02
-0 4685     4.828600e+02 1.474900e+02
-1 4685     7.658500e+02 1.758002e+01
-0 4686     6.417600e+02 -3.061100e+02
-1 4686     7.530900e+02 -5.003400e+02
-0 4687     -1.902500e+02 1.698900e+02
-1 4687     8.662000e+01 2.339700e+02
-0 4688     4.029700e+02 3.740000e+02
-1 4688     7.732400e+02 2.732900e+02
-0 4689     -2.927500e+02 -5.722900e+02
-1 4689     -2.767500e+02 -4.207800e+02
-0 4690     -2.834700e+02 -1.089300e+02
-1 4690     -1.019400e+02 -1.460022e+00
-0 4691     -8.633400e+02 -2.078998e+01
-1 4691     -5.748600e+02 2.305900e+02
-0 4692     -2.052200e+02 1.997800e+02
-1 4692     8.281000e+01 2.667200e+02
-0 4693     6.403998e+01 4.553600e+02
-1 4693     4.332200e+02 4.472400e+02
-0 4694     -3.212900e+02 5.141998e+01
-1 4694     -7.975000e+01 1.581000e+02
-0 4695     -1.683100e+02 2.001200e+02
-1 4695     1.182600e+02 2.570400e+02
-0 4696     -1.188600e+02 2.638400e+02
-1 4696     1.897100e+02 3.048600e+02
-0 4697     5.469800e+02 -2.982100e+02
-1 4697     6.497100e+02 -4.545300e+02
-0 4698     -1.163100e+02 -5.281400e+02
-1 4698     -1.018200e+02 -4.397200e+02
-0 4699     5.820800e+02 -3.777100e+02
-1 4699     6.553000e+02 -5.485500e+02
-0 4700     -2.691200e+02 -5.352200e+02
-1 4700     -2.425000e+02 -3.953300e+02
-0 4701     6.090997e+01 4.806400e+02
-1 4701     4.367400e+02 4.741300e+02
-0 4702     -3.343500e+02 2.350200e+02
-1 4702     -2.687000e+01 3.330900e+02
-0 4703     -2.790600e+02 -4.308300e+02
-1 4703     -2.141800e+02 -2.978300e+02
-0 4704     -2.238900e+02 1.801000e+02
-1 4704     5.796002e+01 2.529600e+02
-0 4705     3.908000e+02 -4.733000e+02
-1 4705     4.121000e+02 -5.682900e+02
-0 4706     -1.278500e+02 2.032100e+02
-1 4706     1.585601e+02 2.493100e+02
-0 4707     3.217300e+02 3.907600e+02
-1 4707     6.900800e+02 3.127700e+02
-0 4708     6.261200e+02 -4.359985e+00
-1 4708     8.552400e+02 -1.835500e+02
-0 4709     -4.180100e+02 -4.475000e+02
-1 4709     -3.428200e+02 -2.695300e+02
-0 4710     1.983600e+02 3.122400e+02
-1 4710     5.271000e+02 2.671500e+02
-0 4711     -1.988400e+02 -4.866899e+02
-1 4711     -1.618400e+02 -3.744400e+02
-0 4712     -7.221200e+02 -4.582400e+02
-1 4712     -6.005300e+02 -1.875300e+02
-0 4713     -1.347800e+02 1.562600e+02
-1 4713     1.344000e+02 2.063400e+02
-0 4714     -7.279800e+02 -3.909700e+02
-1 4714     -5.838400e+02 -1.276800e+02
-0 4715     -4.599100e+02 -2.436200e+02
-1 4715     -3.086500e+02 -7.423999e+01
-0 4716     -3.710300e+02 -3.460700e+02
-1 4716     -2.658000e+02 -1.926900e+02
-0 4717     6.874500e+02 -2.939000e+02
-1 4717     8.107600e+02 -5.061100e+02
-0 4718     5.283400e+02 -3.461900e+02
-1 4718     6.097300e+02 -4.953900e+02
-0 4719     3.780200e+02 -2.966000e+02
-1 4719     4.606700e+02 -3.888000e+02
-0 4720     6.516899e+02 -2.576400e+02
-1 4720     7.842000e+02 -4.545900e+02
-0 4721     5.485300e+02 -3.502900e+02
-1 4721     6.293300e+02 -5.078600e+02
-0 4722     5.786100e+02 -3.252900e+02
-1 4722     6.733500e+02 -4.941400e+02
-0 4723     5.247900e+02 -3.537700e+02
-1 4723     6.026600e+02 -5.020100e+02
-0 4724     7.076801e+02 -3.146500e+02
-1 4724     8.249200e+02 -5.358900e+02
-0 4725     5.349399e+02 -3.803200e+02
-1 4725     6.026400e+02 -5.322900e+02
-0 4726     -7.543200e+02 -4.680601e+02
-1 4726     -6.287300e+02 -1.864400e+02
-0 4727     6.597998e+01 3.524600e+02
-1 4727     4.064100e+02 3.427600e+02
-0 4728     5.091899e+02 -2.883100e+02
-1 4728     6.131899e+02 -4.301300e+02
-0 4729     -1.497000e+02 -5.046100e+02
-1 4729     -1.236200e+02 -4.068200e+02
-0 4730     3.995699e+02 4.400100e+02
-1 4730     7.976300e+02 3.429900e+02
-0 4731     -3.643800e+02 2.725100e+02
-1 4731     -4.664001e+01 3.769200e+02
-0 4732     4.878600e+02 1.658800e+02
-1 4732     7.780300e+02 3.510999e+01
-0 4733     5.292300e+02 -3.787900e+02
-1 4733     5.977700e+02 -5.283800e+02
-0 4734     3.727400e+02 4.026400e+02
-1 4734     7.515300e+02 3.114400e+02
-0 4735     1.209200e+02 -5.751899e+02
-1 4735     1.035200e+02 -5.659800e+02
-0 4736     8.373999e+01 4.532200e+02
-1 4736     4.538500e+02 4.401600e+02
-0 4737     3.826500e+02 3.529000e+02
-1 4737     7.413700e+02 2.572900e+02
-0 4738     -4.490600e+02 9.573001e+01
-1 4738     -1.809900e+02 2.328000e+02
-0 4739     -3.743100e+02 -1.763900e+02
-1 4739     -2.089100e+02 -3.751001e+01
-0 4740     7.276400e+02 -2.939700e+02
-1 4740     8.581200e+02 -5.231100e+02
-0 4741     4.158199e+02 -5.821997e+01
-1 4741     5.769399e+02 -1.612600e+02
-0 4742     -3.544900e+02 6.427002e+01
-1 4742     -1.059000e+02 1.791300e+02
-0 4743     4.683300e+02 1.990100e+02
-1 4743     7.668700e+02 7.464001e+01
-0 4744     3.344900e+02 -1.696997e+01
-1 4744     4.991000e+02 -9.171002e+01
-0 4745     7.210300e+02 -2.978500e+02
-1 4745     8.470100e+02 -5.232200e+02
-0 4746     -1.612700e+02 -5.721600e+02
-1 4746     -1.593000e+02 -4.645800e+02
-0 4747     -3.099900e+02 3.090200e+02
-1 4747     1.613000e+01 3.978200e+02
-0 4748     -4.071500e+02 -5.678400e+02
-1 4748     -3.751900e+02 -3.793300e+02
-0 4749     -2.622400e+02 -3.020020e+00
-1 4749     -4.435999e+01 9.110999e+01
-0 4750     -1.463500e+02 1.965000e+02
-1 4750     1.376100e+02 2.475600e+02
-0 4751     -1.064600e+02 2.401600e+02
-1 4751     1.927800e+02 2.791300e+02
-0 4752     5.524399e+02 -3.213500e+02
-1 4752     6.465200e+02 -4.795500e+02
-0 4753     -1.312100e+02 2.098200e+02
-1 4753     1.577400e+02 2.567900e+02
-0 4754     5.400000e+02 -1.502200e+02
-1 4754     7.042300e+02 -3.033700e+02
-0 4755     5.402000e+02 -1.624000e+02
-1 4755     6.999399e+02 -3.158900e+02
-0 4756     -1.526200e+02 -5.650024e+00
-1 4756     2.819000e+01 6.396997e+01
-0 4757     2.030200e+02 4.848000e+02
-1 4757     5.903199e+02 4.420100e+02
-0 4758     6.798500e+02 -2.968000e+02
-1 4758     8.004000e+02 -5.060300e+02
-0 4759     -9.581000e+01 1.141998e+01
-1 4759     8.390002e+01 6.504999e+01
-0 4760     -1.574900e+02 1.766600e+02
-1 4760     1.200900e+02 2.318700e+02
-0 4761     2.570500e+02 2.604600e+02
-1 4761     5.679600e+02 1.992800e+02
-0 4762     6.052300e+02 -2.331500e+02
-1 4762     7.421100e+02 -4.117400e+02
-0 4763     6.748101e+02 -3.056100e+02
-1 4763     7.906899e+02 -5.128700e+02
-0 4764     -2.155500e+02 2.253400e+02
-1 4764     8.248999e+01 2.937300e+02
-0 4765     2.709700e+02 5.320300e+02
-1 4765     6.791899e+02 4.746500e+02
-0 4766     -8.541500e+02 -4.293500e+02
-1 4766     -6.941400e+02 -1.252800e+02
-0 4767     2.421200e+02 4.055600e+02
-1 4767     6.102900e+02 3.491600e+02
-0 4768     -6.978998e+01 -5.856600e+02
-1 4768     -8.059998e+01 -5.081500e+02
-0 4769     -1.487800e+02 -1.003998e+01
-1 4769     3.002002e+01 5.914001e+01
-0 4770     3.627400e+02 3.414400e+02
-1 4770     7.143199e+02 2.512900e+02
-0 4771     5.320800e+02 -3.652200e+02
-1 4771     6.055800e+02 -5.163500e+02
-0 4772     7.096200e+02 -3.000500e+02
-1 4772     8.344500e+02 -5.213800e+02
-0 4773     -3.769800e+02 -1.759200e+02
-1 4773     -2.116900e+02 -3.631000e+01
-0 4774     3.022200e+02 2.146500e+02
-1 4774     5.972300e+02 1.402000e+02
-0 4775     3.099399e+02 2.173700e+02
-1 4775     6.067200e+02 1.408400e+02
-0 4776     -2.834700e+02 -1.089300e+02
-1 4776     -1.019400e+02 -1.460022e+00
-0 4777     -4.780800e+02 -1.423100e+02
-1 4777     -2.893400e+02 2.271997e+01
-0 4778     -4.605400e+02 -2.489400e+02
-1 4778     -3.110300e+02 -7.856000e+01
-0 4779     -2.598300e+02 -4.969000e+02
-1 4779     -2.207600e+02 -3.636900e+02
-0 4780     7.437500e+02 -2.886800e+02
-1 4780     8.795400e+02 -5.242500e+02
-0 4781     4.108500e+02 4.377600e+02
-1 4781     8.099100e+02 3.372300e+02
-0 4782     -8.265997e+01 2.071400e+02
-1 4782     2.039500e+02 2.409600e+02
-0 4783     3.462400e+02 -7.534003e+01
-1 4783     4.903000e+02 -1.539200e+02
-0 4784     7.541500e+02 -3.298900e+02
-1 4784     8.743199e+02 -5.716801e+02
-0 4785     -1.009700e+02 4.391300e+02
-1 4785     2.565800e+02 4.731500e+02
-0 4786     5.882800e+02 -3.548500e+02
-1 4786     6.717900e+02 -5.277500e+02
-0 4787     -6.637000e+01 -3.997200e+02
-1 4787     -1.073999e+01 -3.367100e+02
-0 4788     -6.078800e+02 1.373999e+01
-1 4788     -3.497900e+02 1.982200e+02
-0 4789     2.887700e+02 3.557800e+02
-1 4789     6.401100e+02 2.861000e+02
-0 4790     -3.098200e+02 2.952500e+02
-1 4790     1.298999e+01 3.849400e+02
-0 4791     4.946997e+01 2.140300e+02
-1 4791     3.370100e+02 2.114300e+02
-0 4792     -5.181100e+02 1.307400e+02
-1 4792     -2.309500e+02 2.825200e+02
-0 4793     7.005800e+02 -2.638700e+02
-1 4793     8.388500e+02 -4.806000e+02
-0 4794     -2.154400e+02 -4.374700e+02
-1 4794     -1.591600e+02 -3.239900e+02
-0 4795     3.899200e+02 -8.769000e+01
-1 4795     5.365000e+02 -1.818300e+02
-0 4796     -7.530700e+02 -4.743400e+02
-1 4796     -6.299100e+02 -1.925200e+02
-0 4797     -1.213000e+02 3.111000e+02
-1 4797     2.044900e+02 3.513000e+02
-0 4798     2.228199e+02 2.262700e+02
-1 4798     5.187700e+02 1.742400e+02
-0 4799     5.341200e+02 -3.588700e+02
-1 4799     6.108300e+02 -5.103199e+02
-0 4800     -2.683100e+02 3.057500e+02
-1 4800     5.834003e+01 3.840000e+02
-0 4801     -3.174400e+02 -2.135800e+02
-1 4801     -1.703700e+02 -8.800000e+01
-0 4802     -1.676500e+02 1.280900e+02
-1 4802     9.257001e+01 1.887500e+02
-0 4803     -2.971300e+02 3.216400e+02
-1 4803     3.359003e+01 4.067100e+02
-0 4804     -4.355600e+02 -2.929200e+02
-1 4804     -3.042400e+02 -1.255800e+02
-0 4805     -3.107300e+02 3.136300e+02
-1 4805     1.790002e+01 4.031100e+02
-0 4806     6.832600e+02 -3.008300e+02
-1 4806     8.023800e+02 -5.114000e+02
-0 4807     -4.613500e+02 8.545999e+01
-1 4807     -1.955900e+02 2.264200e+02
-0 4808     -4.378700e+02 1.440002e+00
-1 4808     -2.036100e+02 1.430700e+02
-0 4809     -2.961200e+02 3.018000e+02
-1 4809     2.838000e+01 3.861200e+02
-0 4810     2.206400e+02 1.983000e+02
-1 4810     5.051100e+02 1.477700e+02
-0 4811     -4.421997e+01 -1.335700e+02
-1 4811     8.047998e+01 -8.764001e+01
-0 4812     -7.580017e+00 2.829800e+02
-1 4812     3.062200e+02 2.940900e+02
-0 4813     6.307001e+01 2.328900e+02
-1 4813     3.577700e+02 2.260400e+02
-0 4814     -1.097500e+02 2.978400e+02
-1 4814     2.108900e+02 3.355100e+02
-0 4815     -2.551400e+02 -4.979700e+02
-1 4815     -2.169700e+02 -3.660900e+02
-0 4816     -2.790600e+02 -4.308300e+02
-1 4816     -2.141800e+02 -2.978300e+02
-0 4817     5.537000e+02 -3.818500e+02
-1 4817     6.221500e+02 -5.410300e+02
-0 4818     6.813000e+01 3.641400e+02
-1 4818     4.131500e+02 3.537000e+02
-0 4819     -7.556400e+02 -4.644000e+02
-1 4819     -6.287900e+02 -1.830200e+02
-0 4820     -2.864600e+02 -7.809998e+00
-1 4820     -7.700000e+01 9.529001e+01
-0 4821     2.752600e+02 2.850400e+02
-1 4821     5.971100e+02 2.185500e+02
-0 4822     -1.269000e+02 3.090200e+02
-1 4822     1.983600e+02 3.510100e+02
-0 4823     -4.897200e+02 1.247700e+02
-1 4823     -2.073500e+02 2.697600e+02
-0 4824     -7.606700e+02 -5.675900e+02
-1 4824     -6.639400e+02 -2.691400e+02
-0 4825     5.630000e+02 1.099976e+00
-1 4825     7.911200e+02 -1.572100e+02
-0 4826     2.167100e+02 2.265700e+02
-1 4826     5.122300e+02 1.768800e+02
-0 4827     6.929700e+02 -2.916000e+02
-1 4827     8.175400e+02 -5.063700e+02
-0 4828     2.375699e+02 1.065100e+02
-1 4828     4.338300e+02 6.346997e+01
-0 4829     -4.479200e+02 1.354300e+02
-1 4829     -1.664500e+02 2.687000e+02
-0 4830     -1.893500e+02 1.887200e+02
-1 4830     9.400000e+01 2.518400e+02
-0 4831     5.276000e+02 -3.928600e+02
-1 4831     5.895100e+02 -5.419000e+02
-0 4832     -8.033002e+01 -4.950800e+02
-1 4832     -5.603003e+01 -4.212900e+02
-0 4833     5.640800e+02 1.432001e+01
-1 4833     7.962500e+02 -1.438900e+02
-0 4834     3.055000e+02 2.067200e+02
-1 4834     5.975200e+02 1.310800e+02
-0 4835     6.679399e+02 -3.097600e+02
-1 4835     7.813700e+02 -5.141000e+02
-0 4836     3.033700e+02 2.256300e+02
-1 4836     6.026600e+02 1.510100e+02
-0 4837     2.258500e+02 3.034700e+02
-1 4837     5.519500e+02 2.510300e+02
-0 4838     -1.663700e+02 1.670000e+02
-1 4838     1.076800e+02 2.250300e+02
-0 4839     -1.308700e+02 -4.915500e+02
-1 4839     -1.016700e+02 -4.014800e+02
-0 4840     -1.076700e+02 3.093300e+02
-1 4840     2.173600e+02 3.460500e+02
-0 4841     -4.348900e+02 -2.878500e+02
-1 4841     -3.017400e+02 -1.213000e+02
-0 4842     2.968400e+02 2.313800e+02
-1 4842     5.982600e+02 1.586700e+02
-0 4843     2.374301e+02 2.620400e+02
-1 4843     5.482200e+02 2.062800e+02
-0 4844     -2.051300e+02 -3.876000e+02
-1 4844     -1.317100e+02 -2.819000e+02
-0 4845     -7.540700e+02 -4.242000e+02
-1 4845     -6.151400e+02 -1.488800e+02
-0 4846     -8.157500e+02 -4.341500e+02
-1 4846     -6.661300e+02 -1.397700e+02
-0 4847     3.462300e+02 4.850200e+02
-1 4847     7.507600e+02 4.050700e+02
-0 4848     5.913600e+02 -5.281000e+01
-1 4848     8.027100e+02 -2.220900e+02
-0 4849     4.035500e+02 -6.590027e+00
-1 4849     5.858800e+02 -1.056600e+02
-0 4850     6.004100e+02 -3.266300e+02
-1 4850     6.971100e+02 -5.044600e+02
-0 4851     -2.366000e+02 -4.243300e+02
-1 4851     -1.735100e+02 -3.054000e+02
-0 4852     -1.150600e+02 2.370900e+02
-1 4852     1.835200e+02 2.784200e+02
-0 4853     5.268700e+02 -3.569300e+02
-1 4853     6.035100e+02 -5.058700e+02
-0 4854     3.700300e+02 2.959500e+02
-1 4854     7.035400e+02 2.028400e+02
-0 4855     -1.358600e+02 3.046000e+02
-1 4855     1.879600e+02 3.487900e+02
-0 4856     -7.676100e+02 -2.635400e+02
-1 4856     -5.751200e+02 -6.280029e+00
-0 4857     4.878600e+02 1.658800e+02
-1 4857     7.780300e+02 3.510999e+01
-0 4858     6.501300e+02 -1.063100e+02
-1 4858     8.479600e+02 -2.989700e+02
-0 4859     3.561200e+02 3.679800e+02
-1 4859     7.179399e+02 2.803700e+02
-0 4860     -1.092400e+02 3.018400e+02
-1 4860     2.128400e+02 3.390100e+02
-0 4861     -1.797200e+02 -3.355400e+02
-1 4861     -9.213000e+01 -2.416000e+02
-0 4862     -3.124800e+02 4.640997e+01
-1 4862     -7.303998e+01 1.512400e+02
-0 4863     2.425500e+02 3.045600e+02
-1 4863     5.704600e+02 2.473200e+02
-0 4864     -2.241400e+02 -4.630400e+02
-1 4864     -1.761500e+02 -3.441900e+02
-0 4865     2.064700e+02 3.322400e+02
-1 4865     5.432600e+02 2.848900e+02
-0 4866     -1.783000e+02 1.284900e+02
-1 4866     8.263000e+01 1.917900e+02
-0 4867     -8.284998e+01 2.101900e+02
-1 4867     2.045900e+02 2.441300e+02
-0 4868     2.905699e+02 5.733800e+02
-1 4868     7.137600e+02 5.141000e+02
-0 4869     2.244500e+02 2.242300e+02
-1 4869     5.193000e+02 1.725100e+02
-0 4870     2.676400e+02 5.020900e+02
-1 4870     6.666100e+02 4.435000e+02
-0 4871     -2.842400e+02 -4.431100e+02
-1 4871     -2.230800e+02 -3.071900e+02
-0 4872     2.244301e+02 -5.428000e+02
-1 4872     2.164800e+02 -5.733300e+02
-0 4873     -5.026001e+01 -1.713500e+02
-1 4873     6.073999e+01 -1.219500e+02
-0 4874     -3.046600e+02 8.866000e+01
-1 4874     -5.071997e+01 1.884600e+02
-0 4875     8.865997e+01 3.973400e+02
-1 4875     4.438500e+02 3.814900e+02
-0 4876     5.030601e+02 -1.967400e+02
-1 4876     6.448000e+02 -3.369600e+02
-0 4877     3.649000e+02 4.179300e+02
-1 4877     7.496200e+02 3.290800e+02
-0 4878     8.635999e+01 3.610100e+02
-1 4878     4.307900e+02 3.457200e+02
-0 4879     -3.099900e+02 3.090200e+02
-1 4879     1.613000e+01 3.978200e+02
-0 4880     5.999000e+02 -3.570800e+02
-1 4880     6.837800e+02 -5.350500e+02
-0 4881     4.867500e+02 2.169600e+02
-1 4881     7.928300e+02 8.919000e+01
-0 4882     -3.230900e+02 -2.063700e+02
-1 4882     -1.734500e+02 -7.967999e+01
-0 4883     -1.247600e+02 2.402500e+02
-1 4883     1.751500e+02 2.840400e+02
-0 4884     7.059000e+02 -3.238800e+02
-1 4884     8.189500e+02 -5.448000e+02
-0 4885     -2.834600e+02 3.784998e+01
-1 4885     -4.906000e+01 1.352800e+02
-0 4886     5.466998e+01 2.551500e+02
-1 4886     3.581600e+02 2.503100e+02
-0 4887     1.240000e+02 4.680400e+02
-1 4887     4.999100e+02 4.451400e+02
-0 4888     -4.435900e+02 2.663300e+02
-1 4888     -1.192600e+02 3.899100e+02
-0 4889     4.701899e+02 2.497400e+02
-1 4889     7.857900e+02 1.276700e+02
-0 4890     4.892300e+02 2.287800e+02
-1 4890     7.992100e+02 1.009200e+02
-0 4891     2.936300e+02 4.769500e+02
-1 4891     6.891600e+02 4.101900e+02
-0 4892     -6.613500e+02 2.099800e+02
-1 4892     -3.300500e+02 3.890900e+02
-0 4893     2.613500e+02 3.031700e+02
-1 4893     5.896100e+02 2.407500e+02
-0 4894     6.043300e+02 -3.188100e+02
-1 4894     7.047300e+02 -4.978101e+02
-0 4895     -2.620400e+02 1.866700e+02
-1 4895     2.421997e+01 2.691900e+02
-0 4896     -4.550300e+02 1.100100e+02
-1 4896     -1.815200e+02 2.476500e+02
-0 4897     6.679399e+02 -3.097600e+02
-1 4897     7.813700e+02 -5.141000e+02
-0 4898     2.871100e+02 1.787000e+02
-1 4898     5.667000e+02 1.087900e+02
-0 4899     2.502100e+02 2.601100e+02
-1 4899     5.606700e+02 2.007400e+02
-0 4900     -3.518200e+02 2.825700e+02
-1 4900     -3.112000e+01 3.826900e+02
-0 4901     -6.208500e+02 1.178998e+01
-1 4901     -3.616800e+02 2.000300e+02
-0 4902     4.121200e+02 3.020300e+02
-1 4902     7.518900e+02 1.967800e+02
-0 4903     6.088400e+02 -2.363400e+02
-1 4903     7.450300e+02 -4.163800e+02
-0 4904     -1.690500e+02 2.149100e+02
-1 4904     1.231700e+02 2.713900e+02
-0 4905     -2.989600e+02 2.992000e+02
-1 4905     2.416998e+01 3.857300e+02
-0 4906     2.529000e+02 3.483800e+02
-1 4906     5.984000e+02 2.884800e+02
-0 4907     4.231899e+02 3.665400e+02
-1 4907     7.925699e+02 2.600500e+02
-0 4908     -3.251100e+02 3.114001e+01
-1 4908     -9.037000e+01 1.404300e+02
-0 4909     2.108900e+02 2.744300e+02
-1 4909     5.251000e+02 2.260300e+02
-0 4910     5.599301e+02 -3.973900e+02
-1 4910     6.223000e+02 -5.592000e+02
-0 4911     -1.611500e+02 -5.182100e+02
-1 4911     -1.393500e+02 -4.154400e+02
-0 4912     -1.745400e+02 -5.184500e+02
-1 4912     -1.516600e+02 -4.114400e+02
-0 4913     -3.880500e+02 -4.648500e+02
-1 4913     -3.230100e+02 -2.943100e+02
-0 4914     -4.499300e+02 3.845300e+02
-1 4914     -9.978998e+01 5.048700e+02
-0 4915     5.196100e+02 -3.101600e+02
-1 4915     6.153900e+02 -4.561899e+02
-0 4916     -4.061700e+02 -4.417100e+02
-1 4916     -3.306300e+02 -2.677900e+02
-0 4917     -7.708100e+02 -5.574399e+02
-1 4917     -6.685700e+02 -2.576300e+02
-0 4918     -1.007300e+02 2.369700e+02
-1 4918     1.973600e+02 2.742800e+02
-0 4919     3.429600e+02 -5.038500e+02
-1 4919     3.508500e+02 -5.800000e+02
-0 4920     5.144301e+02 -3.485200e+02
-1 4920     5.936300e+02 -4.927800e+02
-0 4921     5.695900e+02 -3.899900e+02
-1 4921     6.362000e+02 -5.555500e+02
-0 4922     -5.212200e+02 1.256600e+02
-1 4922     -2.355600e+02 2.786500e+02
-0 4923     5.560100e+02 2.534200e+02
-1 4923     8.635000e+02 1.113800e+02
-0 4924     2.205400e+02 2.517100e+02
-1 4924     5.264301e+02 2.007100e+02
-0 4925     6.271997e+01 4.605200e+02
-1 4925     4.330100e+02 4.520500e+02
-0 4926     -2.828700e+02 2.522998e+01
-1 4926     -5.371997e+01 1.234900e+02
-0 4927     1.138800e+02 4.525100e+02
-1 4927     4.852700e+02 4.314700e+02
-0 4928     -7.625500e+02 -5.332100e+02
-1 4928     -6.546900e+02 -2.395200e+02
-0 4929     3.070400e+02 3.706600e+02
-1 4929     6.657700e+02 2.964900e+02
-0 4930     -4.108002e+01 2.448900e+02
-1 4930     2.587000e+02 2.662000e+02
-0 4931     5.349800e+02 -3.979200e+02
-1 4931     5.953900e+02 -5.497500e+02
-0 4932     5.132400e+02 -1.137900e+02
-1 4932     6.900601e+02 -2.568600e+02
-0 4933     2.849800e+02 2.963600e+02
-1 4933     6.113500e+02 2.275800e+02
-0 4934     2.270800e+02 2.179100e+02
-1 4934     5.198400e+02 1.651900e+02
-0 4935     4.073800e+02 3.489300e+02
-1 4935     7.667900e+02 2.465600e+02
-0 4936     -2.156800e+02 -4.420800e+02
-1 4936     -1.610000e+02 -3.282700e+02
-0 4937     -2.532800e+02 -4.051600e+02
-1 4937     -1.819600e+02 -2.826800e+02
-0 4938     4.217700e+02 -2.181000e+01
-1 4938     5.991899e+02 -1.269600e+02
-0 4939     1.986300e+02 2.733800e+02
-1 4939     5.121000e+02 2.284200e+02
-0 4940     4.620300e+02 2.284300e+02
-1 4940     7.710699e+02 1.078000e+02
-0 4941     -6.262000e+01 1.612000e+02
-1 4941     1.804600e+02 1.968900e+02
-0 4942     6.843600e+02 -3.045400e+02
-1 4942     8.018300e+02 -5.154800e+02
-0 4943     4.064600e+02 4.186500e+02
-1 4943     7.960699e+02 3.189800e+02
-0 4944     -5.087000e+01 2.368700e+02
-1 4944     2.462500e+02 2.613100e+02
-0 4945     -3.396500e+02 7.378003e+01
-1 4945     -8.884003e+01 1.837000e+02
-0 4946     -3.674200e+02 2.351700e+02
-1 4946     -5.722998e+01 3.417000e+02
-0 4947     3.039001e+01 1.241000e+02
-1 4947     2.321500e+02 1.406700e+02
-0 4948     2.228199e+02 2.262700e+02
-1 4948     5.187700e+02 1.742400e+02
-0 4949     5.065500e+02 -2.651100e+02
-1 4949     6.197200e+02 -4.063300e+02
-0 4950     1.301600e+02 4.727500e+02
-1 4950     5.075900e+02 4.473600e+02
-0 4951     2.820699e+02 5.461500e+02
-1 4951     6.960400e+02 4.867100e+02
-0 4952     4.513900e+02 2.253800e+02
-1 4952     7.590601e+02 1.077900e+02
-0 4953     4.654600e+02 2.014300e+02
-1 4953     7.658000e+02 7.903000e+01
-0 4954     -4.156000e+01 2.490800e+02
-1 4954     2.595400e+02 2.705700e+02
-0 4955     5.524399e+02 -3.213500e+02
-1 4955     6.465200e+02 -4.795500e+02
-0 4956     -3.216400e+02 -2.152500e+02
-1 4956     -1.752200e+02 -8.841998e+01
-0 4957     -3.710300e+02 -3.460700e+02
-1 4957     -2.658000e+02 -1.926900e+02
-0 4958     -8.811400e+02 7.659973e+00
-1 4958     -5.798700e+02 2.591400e+02
-0 4959     7.137400e+02 -3.165400e+02
-1 4959     8.313900e+02 -5.400900e+02
-0 4960     4.906500e+02 1.695400e+02
-1 4960     7.821000e+02 3.816998e+01
-0 4961     4.803900e+02 -3.905500e+02
-1 4961     5.401300e+02 -5.217700e+02
-0 4962     -6.092600e+02 5.864001e+01
-1 4962     -3.361600e+02 2.391100e+02
-0 4963     5.093101e+02 -4.335900e+02
-1 4963     5.528101e+02 -5.752400e+02
-0 4964     2.275000e+02 5.219500e+02
-1 4964     6.277200e+02 4.750300e+02
-0 4965     -7.353500e+02 -3.904100e+02
-1 4965     -5.894200e+02 -1.252900e+02
-0 4966     -1.339400e+02 2.234400e+02
-1 4966     1.600400e+02 2.704300e+02
-0 4967     2.037500e+02 -4.142900e+02
-1 4967     2.402900e+02 -4.415900e+02
-0 4968     -2.735400e+02 -2.794900e+02
-1 4968     -1.544600e+02 -1.613500e+02
-0 4969     3.675601e+02 3.469300e+02
-1 4969     7.219800e+02 2.553200e+02
-0 4970     5.359900e+02 -2.032001e+01
-1 4970     7.545300e+02 -1.704800e+02
-0 4971     5.040699e+02 -3.761100e+02
-1 4971     5.712000e+02 -5.162300e+02
-0 4972     1.206400e+02 -2.166800e+02
-1 4972     2.079301e+02 -2.185600e+02
-0 4973     -7.594300e+02 -4.541500e+02
-1 4973     -6.284700e+02 -1.732000e+02
-0 4974     -7.767300e+02 3.354999e+01
-1 4974     -4.869900e+02 2.577900e+02
-0 4975     -2.620400e+02 1.866700e+02
-1 4975     2.421997e+01 2.691900e+02
-0 4976     -6.573300e+02 -5.494500e+02
-1 4976     -5.778700e+02 -2.853600e+02
-0 4977     -3.068300e+02 -2.341500e+02
-1 4977     -1.682600e+02 -1.095400e+02
-0 4978     -2.965100e+02 -1.149000e+02
-1 4978     -1.163000e+02 -3.520020e+00
-0 4979     3.490100e+02 -3.877300e+02
-1 4979     4.011100e+02 -4.685900e+02
-0 4980     -1.513600e+02 1.682900e+02
-1 4980     1.232700e+02 2.222100e+02
-0 4981     5.116200e+02 -2.635000e+02
-1 4981     6.259700e+02 -4.063800e+02
-0 4982     -1.673200e+02 1.311800e+02
-1 4982     9.426001e+01 1.914000e+02
-0 4983     2.431100e+02 -5.300000e+02
-1 4983     2.404301e+02 -5.680100e+02
-0 4984     -4.551200e+02 2.676900e+02
-1 4984     -1.296200e+02 3.942600e+02
-0 4985     4.092900e+02 1.974700e+02
-1 4985     7.051600e+02 9.112000e+01
-0 4986     3.590400e+02 3.869100e+02
-1 4986     7.289500e+02 2.998600e+02
-0 4987     1.947100e+02 2.215700e+02
-1 4987     4.879600e+02 1.778300e+02
-0 4988     -6.626800e+02 -5.059500e+02
-1 4988     -5.679500e+02 -2.459400e+02
-0 4989     8.664001e+01 3.664000e+02
-1 4989     4.328600e+02 3.510300e+02
-0 4990     2.018400e+02 2.476500e+02
-1 4990     5.056100e+02 2.018400e+02
-0 4991     -7.674300e+02 -4.820601e+02
-1 4991     -6.432000e+02 -1.946800e+02
-0 4992     4.868700e+02 2.424500e+02
-1 4992     8.000200e+02 1.166100e+02
-0 4993     5.653003e+01 2.363100e+02
-1 4993     3.523900e+02 2.313400e+02
-0 4994     3.973700e+02 3.859300e+02
-1 4994     7.716700e+02 2.874000e+02
-0 4995     -2.612700e+02 -5.543199e+02
-1 4995     -2.422600e+02 -4.153800e+02
-0 4996     7.085200e+02 -3.400900e+02
-1 4996     8.152800e+02 -5.622700e+02
-0 4997     -4.593900e+02 2.791800e+02
-1 4997     -1.310600e+02 4.060500e+02
-0 4998     4.006700e+02 -4.604100e+02
-1 4998     4.275900e+02 -5.596700e+02
-0 4999     4.202000e+02 -7.096997e+01
-1 4999     5.764700e+02 -1.749900e+02
-0 5000     5.106300e+02 -9.037000e+01
-1 5000     6.969600e+02 -2.326300e+02
-0 5001     -2.472600e+02 -4.914100e+02
-1 5001     -2.074600e+02 -3.627800e+02
-0 5002     -1.759600e+02 -5.546899e+02
-1 5002     -1.659800e+02 -4.436500e+02
-6 5002     -2.871002e+01 -7.157300e+02
-0 5003     -1.152300e+02 -4.971801e+02
-1 5003     -8.898999e+01 -4.119400e+02
-0 5004     7.009000e+02 -2.944100e+02
-1 5004     8.264800e+02 -5.120400e+02
-0 5005     2.137700e+02 -5.388800e+02
-1 5005     2.091801e+02 -5.653600e+02
-0 5006     6.602600e+02 -3.143400e+02
-1 5006     7.701899e+02 -5.157000e+02
-0 5007     6.073400e+02 -4.025700e+02
-1 5007     6.724600e+02 -5.838900e+02
-0 5008     -1.431800e+02 -5.329500e+02
-1 5008     -1.282100e+02 -4.349200e+02
-0 5009     -1.479300e+02 -5.186700e+02
-1 5009     -1.274000e+02 -4.203600e+02
-0 5010     7.263000e+01 3.457700e+02
-1 5010     4.106801e+02 3.343700e+02
-11 5010     2.200500e+02 -3.997100e+02
-0 5011     7.263000e+01 3.457700e+02
-1 5011     4.106801e+02 3.343700e+02
-11 5011     2.200500e+02 -3.997100e+02
-0 5012     7.156300e+02 -3.564900e+02
-1 5012     8.164700e+02 -5.823000e+02
-0 5013     5.395400e+02 -2.815500e+02
-1 5013     6.486000e+02 -4.353400e+02
-0 5014     -2.826600e+02 -3.959500e+02
-1 5014     -2.047900e+02 -2.651400e+02
-0 5015     -1.689300e+02 1.349700e+02
-1 5015     9.388000e+01 1.954500e+02
-0 5016     2.357800e+02 -5.259700e+02
-1 5016     2.346400e+02 -5.613101e+02
-0 5017     3.323500e+02 5.485900e+02
-1 5017     7.541801e+02 4.770100e+02
-0 5018     5.255699e+02 -3.500300e+02
-1 5018     6.051100e+02 -4.984800e+02
-0 5019     1.676700e+02 -5.657400e+02
-1 5019     1.524100e+02 -5.741400e+02
-0 5020     -2.604600e+02 -4.155400e+02
-1 5020     -1.919300e+02 -2.898200e+02
-0 5021     5.346801e+02 -3.425400e+02
-1 5021     6.180200e+02 -4.943101e+02
-0 5022     5.219399e+02 -3.792300e+02
-1 5022     5.892700e+02 -5.261300e+02
-0 5023     -1.022900e+02 1.961400e+02
-1 5023     1.810400e+02 2.358800e+02
-0 5024     5.402600e+02 -3.459500e+02
-1 5024     6.229301e+02 -5.000500e+02
-0 5025     4.935800e+02 5.884000e+02
-2 5025     1.198600e+02 3.585100e+02
-6 5025     2.440002e+01 7.282800e+02
-9 5025     -5.375000e+01 3.890400e+02
-0 5026     -5.098500e+02 5.860500e+02
-2 5026     -8.053000e+02 3.710600e+02
-0 5027     -5.098500e+02 5.860500e+02
-2 5027     -8.053000e+02 3.710600e+02
-0 5028     -1.006900e+02 5.848300e+02
-3 5028     -5.163800e+02 2.598999e+01
-12 5028     -4.286400e+02 5.964200e+02
-0 5029     3.836400e+02 5.850200e+02
-6 5029     -8.562000e+01 7.033700e+02
-14 5029     6.796400e+02 -1.306300e+02
-0 5030     4.395300e+02 5.839200e+02
-14 5030     7.344900e+02 -1.281300e+02
-0 5031     -3.764500e+02 5.836600e+02
-2 5031     -6.624800e+02 3.629700e+02
-13 5031     -1.034300e+02 2.222600e+02
-14 5031     -3.906000e+01 -1.587300e+02
-0 5032     3.233000e+02 5.837300e+02
-14 5032     6.198900e+02 -1.361600e+02
-0 5033     -1.105900e+02 5.830400e+02
-2 5033     -4.000800e+02 3.551200e+02
-0 5034     -6.054800e+02 5.817200e+02
-14 5034     -2.518700e+02 -1.620400e+02
-0 5035     4.570300e+02 5.814200e+02
-6 5035     -9.909973e+00 7.133300e+02
-14 5035     7.516801e+02 -1.294200e+02
-0 5036     -5.429900e+02 5.808700e+02
-14 5036     -1.947200e+02 -1.624400e+02
-0 5037     -4.753900e+02 5.808400e+02
-2 5037     -7.673100e+02 3.630800e+02
-8 5037     -5.501100e+02 2.697000e+02
-11 5037     -2.613700e+02 -2.026600e+02
-14 5037     -1.315200e+02 -1.622000e+02
-0 5038     -1.484700e+02 5.806800e+02
-2 5038     -4.359600e+02 3.534300e+02
-14 5038     1.741500e+02 -1.586300e+02
-0 5039     4.377400e+02 5.805300e+02
-2 5039     7.657001e+01 3.501000e+02
-3 5039     -7.300000e+01 1.515997e+01
-8 5039     1.440100e+02 2.764700e+02
-9 5039     -9.027002e+01 3.805700e+02
-11 5039     5.346899e+02 -1.726600e+02
-14 5039     7.325800e+02 -1.315900e+02
-0 5040     -1.073600e+02 5.790100e+02
-2 5040     -3.968900e+02 3.508000e+02
-0 5041     -1.073600e+02 5.790100e+02
-2 5041     -3.968900e+02 3.508000e+02
-0 5042     5.977100e+02 5.784700e+02
-6 5042     2.648800e+02 7.628800e+02
-0 5043     5.977100e+02 5.784700e+02
-6 5043     2.648800e+02 7.628800e+02
-0 5044     -2.224000e+02 5.770700e+02
-2 5044     -5.072100e+02 3.506700e+02
-3 5044     -6.298300e+02 2.160999e+01
-5 5044     1.938500e+02 -7.123999e+01
-12 5044     -5.635200e+02 5.721200e+02
-14 5044     1.043900e+02 -1.631900e+02
-0 5045     -1.196700e+02 5.767300e+02
-12 5045     -4.482900e+02 5.838500e+02
-0 5046     -5.212500e+02 5.752200e+02
-2 5046     -8.182400e+02 3.584400e+02
-8 5046     -5.899500e+02 2.646600e+02
-0 5047     -3.164900e+02 5.749900e+02
-5 5047     1.035300e+02 -7.288000e+01
-14 5047     1.597998e+01 -1.665700e+02
-0 5048     -3.164900e+02 5.749900e+02
-5 5048     1.035300e+02 -7.288000e+01
-14 5048     1.597998e+01 -1.665700e+02
-0 5049     -2.442300e+02 5.746700e+02
-14 5049     8.408002e+01 -1.659800e+02
-0 5050     3.701700e+02 5.744000e+02
-5 5050     7.704301e+02 -6.034998e+01
-6 5050     -9.714999e+01 6.890000e+02
-14 5050     6.678400e+02 -1.419600e+02
-0 5051     4.405300e+02 5.744000e+02
-9 5051     -8.690997e+01 3.754600e+02
-11 5051     5.391100e+02 -1.777300e+02
-14 5051     7.364100e+02 -1.376600e+02
-0 5052     5.722100e+02 5.739200e+02
-2 5052     3.185601e+02 4.733400e+02
-3 5052     1.736300e+02 1.369400e+02
-9 5052     1.233400e+02 4.955100e+02
-13 5052     7.072600e+02 2.798100e+02
-0 5053     1.491000e+02 5.720600e+02
-12 5053     -1.596000e+02 6.125200e+02
-0 5054     2.942700e+02 5.719900e+02
-14 5054     5.944200e+02 -1.488600e+02
-0 5055     3.713700e+02 5.720000e+02
-2 5055     2.416998e+01 3.414100e+02
-5 5055     7.719000e+02 -6.298999e+01
-6 5055     -9.579999e+01 6.857800e+02
-9 5055     -1.343300e+02 3.711900e+02
-0 5056     1.891600e+02 5.705200e+02
-6 5056     -2.857000e+02 6.493400e+02
-14 5056     4.935400e+02 -1.556500e+02
-0 5057     -4.676900e+02 5.701300e+02
-2 5057     -7.591300e+02 3.503800e+02
-5 5057     -4.040002e+01 -7.642999e+01
-8 5057     -5.429800e+02 2.595800e+02
-14 5057     -1.256200e+02 -1.724600e+02
-0 5058     3.685300e+02 5.688400e+02
-14 5058     6.664100e+02 -1.472100e+02
-0 5059     5.715601e+02 5.690900e+02
-2 5059     3.192400e+02 4.687600e+02
-3 5059     1.738800e+02 1.337100e+02
-6 5059     2.351700e+02 7.468500e+02
-0 5060     4.284000e+02 5.686500e+02
-13 5060     5.260800e+02 2.551300e+02
-14 5060     7.250100e+02 -1.439500e+02
-0 5061     5.443700e+02 5.680000e+02
-2 5061     2.905601e+02 4.590100e+02
-6 5061     2.010400e+02 7.386400e+02
-8 5061     3.070600e+02 3.543600e+02
-13 5061     6.812100e+02 2.723800e+02
-0 5062     5.443700e+02 5.680000e+02
-2 5062     2.905601e+02 4.590100e+02
-6 5062     2.010400e+02 7.386400e+02
-13 5062     6.812100e+02 2.723800e+02
-0 5063     -3.592200e+02 5.676100e+02
-11 5063     -1.649100e+02 -2.129600e+02
-14 5063     -2.435999e+01 -1.744700e+02
-0 5064     5.887400e+02 5.675100e+02
-2 5064     3.377700e+02 4.725700e+02
-3 5064     1.916801e+02 1.365400e+02
-6 5064     2.568300e+02 7.481500e+02
-0 5065     -3.703300e+02 5.670300e+02
-2 5065     -6.560500e+02 3.429400e+02
-14 5065     -3.495001e+01 -1.750500e+02
-0 5066     -1.160900e+02 5.667800e+02
-12 5066     -4.424200e+02 5.724900e+02
-0 5067     -4.737900e+02 5.665700e+02
-5 5067     -4.645001e+01 -8.013000e+01
-0 5068     -4.737900e+02 5.665700e+02
-2 5068     -7.657600e+02 3.461100e+02
-5 5068     -4.645001e+01 -8.013000e+01
-14 5068     -1.313600e+02 -1.761400e+02
-0 5069     -3.667900e+02 5.663700e+02
-2 5069     -6.524800e+02 3.418000e+02
-5 5069     5.476001e+01 -8.188000e+01
-12 5069     -7.302200e+02 5.413300e+02
-14 5069     -3.171997e+01 -1.756900e+02
-0 5070     5.985999e+01 5.662000e+02
-2 5070     -2.421000e+02 3.343200e+02
-0 5071     5.129100e+02 5.663300e+02
-6 5071     1.605900e+02 7.289000e+02
-9 5071     6.921002e+01 4.708000e+02
-13 5071     6.512600e+02 2.678200e+02
-14 5071     8.794800e+02 -1.328900e+02
-0 5072     -4.847700e+02 5.651100e+02
-8 5072     -5.572300e+02 2.547600e+02
-11 5072     -2.689300e+02 -2.154900e+02
-13 5072     -1.879900e+02 2.021400e+02
-0 5073     -3.792900e+02 5.641800e+02
-5 5073     4.258002e+01 -8.357001e+01
-0 5074     -3.225600e+02 5.639900e+02
-2 5074     -6.066300e+02 3.381800e+02
-0 5075     -3.225600e+02 5.639900e+02
-2 5075     -6.066300e+02 3.381800e+02
-12 5075     -6.776000e+02 5.443400e+02
-0 5076     6.172900e+02 5.637300e+02
-2 5076     3.690500e+02 4.782000e+02
-3 5076     2.212900e+02 1.422200e+02
-6 5076     2.929300e+02 7.510700e+02
-9 5076     1.663600e+02 5.011900e+02
-13 5076     7.512100e+02 2.757400e+02
-0 5077     4.357900e+02 5.632500e+02
-2 5077     7.846997e+01 3.328400e+02
-14 5077     7.328600e+02 -1.492800e+02
-0 5078     -4.722600e+02 5.628000e+02
-2 5078     -7.642900e+02 3.417300e+02
-0 5079     4.651400e+02 5.629000e+02
-14 5079     7.616801e+02 -1.474200e+02
-0 5080     -1.430300e+02 5.625600e+02
-2 5080     -4.298400e+02 3.327500e+02
-11 5080     1.903003e+01 -2.140200e+02
-0 5081     8.298999e+01 5.624600e+02
-6 5081     -3.995800e+02 6.189400e+02
-0 5082     3.034500e+02 5.623600e+02
-2 5082     -3.113000e+01 3.307500e+02
-6 5082     -1.647400e+02 6.607600e+02
-9 5082     -1.805700e+02 3.603400e+02
-0 5083     3.034500e+02 5.623600e+02
-2 5083     -3.113000e+01 3.307500e+02
-6 5083     -1.647400e+02 6.607600e+02
-9 5083     -1.805700e+02 3.603400e+02
-0 5084     4.187800e+02 5.625600e+02
-14 5084     7.165000e+02 -1.505600e+02
-0 5085     -4.984500e+02 5.621900e+02
-2 5085     -7.928700e+02 3.425800e+02
-7 5085     -7.466400e+02 5.857100e+02
-8 5085     -5.705100e+02 2.520700e+02
-14 5085     -1.548700e+02 -1.802400e+02
-0 5086     5.665900e+02 5.620200e+02
-3 5086     1.703800e+02 1.260600e+02
-0 5087     1.086500e+02 5.612900e+02
-3 5087     -3.293900e+02 -5.380005e+00
-0 5088     2.313700e+02 5.616700e+02
-14 5088     5.341400e+02 -1.629100e+02
-0 5089     -4.820100e+02 5.597400e+02
-7 5089     -7.283400e+02 5.844000e+02
-8 5089     -5.553700e+02 2.491900e+02
-11 5089     -2.674600e+02 -2.194300e+02
-14 5089     -1.400900e+02 -1.828900e+02
-0 5090     5.638800e+02 5.596100e+02
-3 5090     1.683600e+02 1.221400e+02
-0 5091     5.638800e+02 5.596100e+02
-3 5091     1.683600e+02 1.221400e+02
-0 5092     1.534800e+02 5.590200e+02
-14 5092     4.596100e+02 -1.694000e+02
-0 5093     -4.146400e+02 5.582800e+02
-2 5093     -7.026800e+02 3.338400e+02
-0 5094     -3.662200e+02 5.586400e+02
-5 5094     5.448999e+01 -8.965002e+01
-8 5094     -4.555500e+02 2.476400e+02
-11 5094     -1.711300e+02 -2.204300e+02
-12 5094     -7.279600e+02 5.312400e+02
-13 5094     -9.617999e+01 2.021500e+02
-14 5094     -3.172998e+01 -1.833500e+02
-0 5095     -3.662200e+02 5.586400e+02
-2 5095     -6.518900e+02 3.330100e+02
-13 5095     -9.617999e+01 2.021500e+02
-0 5096     -2.994100e+02 5.585800e+02
-8 5096     -4.000000e+02 2.476200e+02
-11 5096     -1.148800e+02 -2.202900e+02
-13 5096     -4.402002e+01 2.045700e+02
-14 5096     3.109003e+01 -1.826300e+02
-0 5097     -2.186300e+02 5.585700e+02
-2 5097     -5.030100e+02 3.295000e+02
-12 5097     -5.562300e+02 5.500800e+02
-0 5098     3.216600e+02 5.587100e+02
-3 5098     -1.585600e+02 -7.320007e+00
-9 5098     -1.671000e+02 3.575500e+02
-14 5098     6.219900e+02 -1.603700e+02
-0 5099     6.107400e+02 5.576700e+02
-2 5099     3.632300e+02 4.712800e+02
-3 5099     2.161400e+02 1.356000e+02
-6 5099     2.862500e+02 7.430400e+02
-8 5099     3.662800e+02 3.630700e+02
-9 5099     1.618400e+02 4.947700e+02
-11 5099     6.768000e+02 -1.835100e+02
-13 5099     7.456700e+02 2.705800e+02
-0 5100     -3.776700e+02 5.576100e+02
-2 5100     -6.639200e+02 3.314100e+02
-5 5100     4.359003e+01 -9.088000e+01
-8 5100     -4.647300e+02 2.464600e+02
-11 5100     -1.811600e+02 -2.211900e+02
-12 5100     -7.411300e+02 5.280500e+02
-14 5100     -4.253998e+01 -1.845200e+02
-0 5101     -3.776700e+02 5.576100e+02
-2 5101     -6.639200e+02 3.314100e+02
-5 5101     4.359003e+01 -9.088000e+01
-8 5101     -4.647300e+02 2.464600e+02
-12 5101     -7.411300e+02 5.280500e+02
-14 5101     -4.253998e+01 -1.845200e+02
-0 5102     6.440997e+01 5.573600e+02
-9 5102     -3.560200e+02 3.492200e+02
-0 5103     4.605000e+02 5.575500e+02
-14 5103     7.580500e+02 -1.533000e+02
-0 5104     -3.097800e+02 5.567500e+02
-2 5104     -5.935400e+02 3.291000e+02
-8 5104     -4.087300e+02 2.465700e+02
-11 5104     -1.234500e+02 -2.213600e+02
-14 5104     2.142999e+01 -1.846000e+02
-0 5105     1.557800e+02 5.563700e+02
-2 5105     -1.564700e+02 3.232200e+02
-9 5105     -2.870000e+02 3.500000e+02
-13 5105     3.110800e+02 2.266100e+02
-0 5106     -1.744000e+02 5.558400e+02
-2 5106     -4.599200e+02 3.251500e+02
-0 5107     5.734998e+01 5.561600e+02
-2 5107     -2.434100e+02 3.236100e+02
-6 5107     -4.255600e+02 6.057200e+02
-9 5107     -3.605500e+02 3.480200e+02
-0 5108     -5.009600e+02 5.551700e+02
-5 5108     -7.434998e+01 -9.190997e+01
-0 5109     4.373300e+02 5.551600e+02
-11 5109     5.390300e+02 -1.940900e+02
-14 5109     7.354700e+02 -1.575700e+02
-0 5110     5.909700e+02 5.551300e+02
-2 5110     3.430800e+02 4.635000e+02
-3 5110     1.968400e+02 1.284800e+02
-6 5110     2.623900e+02 7.370100e+02
-8 5110     3.494300e+02 3.577300e+02
-9 5110     1.439600e+02 4.884200e+02
-13 5110     7.272300e+02 2.670800e+02
-0 5111     -3.904900e+02 5.541100e+02
-2 5111     -6.770500e+02 3.286200e+02
-7 5111     -6.294100e+02 5.864900e+02
-12 5111     -7.568700e+02 5.238400e+02
-14 5111     -5.488000e+01 -1.875700e+02
-0 5112     -3.033200e+02 5.523500e+02
-2 5112     -5.883200e+02 3.234700e+02
-12 5112     -6.529200e+02 5.317200e+02
-0 5113     3.511700e+02 5.524300e+02
-14 5113     6.513300e+02 -1.655300e+02
-0 5114     -5.220400e+02 5.513300e+02
-8 5114     -5.918200e+02 2.418800e+02
-0 5115     -2.985400e+02 5.517000e+02
-2 5115     -5.824600e+02 3.239900e+02
-5 5115     1.185500e+02 -9.635999e+01
-12 5115     -6.472800e+02 5.317300e+02
-0 5116     5.396899e+02 5.503400e+02
-3 5116     1.456400e+02 1.065400e+02
-8 5116     3.064900e+02 3.394500e+02
-0 5117     -5.628200e+02 5.497400e+02
-14 5117     -2.169700e+02 -1.929000e+02
-0 5118     -3.057700e+02 5.482500e+02
-2 5118     -5.892700e+02 3.190400e+02
-12 5118     -6.547200e+02 5.265800e+02
-0 5119     -4.440600e+02 5.478200e+02
-14 5119     -1.044200e+02 -1.940800e+02
-0 5120     5.741100e+02 5.472900e+02
-2 5120     3.272200e+02 4.505000e+02
-3 5120     1.818400e+02 1.157500e+02
-6 5120     2.434300e+02 7.232000e+02
-0 5121     -3.221200e+02 5.470800e+02
-12 5121     -6.738200e+02 5.229900e+02
-14 5121     8.770020e+00 -1.943700e+02
-0 5122     -3.129300e+02 5.471000e+02
-5 5122     1.038700e+02 -1.016600e+02
-7 5122     -5.475100e+02 5.859200e+02
-12 5122     -6.635700e+02 5.234700e+02
-0 5123     6.023500e+02 5.472500e+02
-2 5123     3.572700e+02 4.598900e+02
-6 5123     2.786200e+02 7.301800e+02
-8 5123     3.611800e+02 3.542500e+02
-9 5123     1.566801e+02 4.849500e+02
-11 5123     6.705900e+02 -1.923600e+02
-13 5123     7.391700e+02 2.615900e+02
-0 5124     -4.497300e+02 5.466400e+02
-14 5124     -1.097500e+02 -1.955600e+02
-0 5125     -4.185100e+02 5.464000e+02
-2 5125     -7.058500e+02 3.190900e+02
-0 5126     2.988000e+02 5.462700e+02
-2 5126     -3.250000e+01 3.131300e+02
-3 5126     -1.756200e+02 -2.082001e+01
-5 5126     6.997600e+02 -9.321997e+01
-6 5126     -1.656000e+02 6.394200e+02
-11 5126     4.129600e+02 -2.104100e+02
-12 5126     -5.300293e-01 6.018500e+02
-14 5126     6.004399e+02 -1.746700e+02
-0 5127     -2.278100e+02 5.459200e+02
-2 5127     -5.114600e+02 3.150400e+02
-12 5127     -5.648000e+02 5.340300e+02
-0 5128     -2.278100e+02 5.459200e+02
-12 5128     -5.648000e+02 5.340300e+02
-0 5129     6.015601e+02 5.445300e+02
-3 5129     2.110000e+02 1.215300e+02
-0 5130     4.020200e+02 5.440500e+02
-6 5130     -5.862000e+01 6.571000e+02
-12 5130     1.027400e+02 6.125900e+02
-14 5130     7.019301e+02 -1.705100e+02
-0 5131     3.279100e+02 5.415400e+02
-14 5131     6.293500e+02 -1.777500e+02
-0 5132     3.454100e+02 5.416400e+02
-5 5132     7.473000e+02 -9.615002e+01
-9 5132     -1.476600e+02 3.424900e+02
-0 5133     -3.525300e+02 5.408000e+02
-5 5133     6.547998e+01 -1.073100e+02
-12 5133     -7.088900e+02 5.115700e+02
-0 5134     3.547600e+02 5.406500e+02
-14 5134     6.559700e+02 -1.770100e+02
-0 5135     -6.498000e+02 5.398600e+02
-5 5135     -2.346200e+02 -1.061900e+02
-13 5135     -3.327900e+02 1.725700e+02
-0 5136     -6.191000e+02 5.401100e+02
-5 5136     -1.873300e+02 -1.046300e+02
-11 5136     -3.809200e+02 -2.345600e+02
-14 5136     -2.707800e+02 -2.026400e+02
-0 5137     -6.191000e+02 5.401100e+02
-14 5137     -2.707800e+02 -2.026400e+02
-0 5138     -4.570300e+02 5.398800e+02
-5 5138     -3.403003e+01 -1.069400e+02
-8 5138     -5.344000e+02 2.307600e+02
-0 5139     3.194301e+02 5.400400e+02
-14 5139     6.212800e+02 -1.798000e+02
-0 5140     4.457700e+02 5.400100e+02
-14 5140     7.457800e+02 -1.719300e+02
-0 5141     5.942200e+02 5.399600e+02
-2 5141     3.504399e+02 4.509900e+02
-3 5141     2.040300e+02 1.163400e+02
-6 5141     2.707400e+02 7.208500e+02
-9 5141     1.512400e+02 4.770000e+02
-13 5141     7.319900e+02 2.552400e+02
-0 5142     -4.133000e+02 5.397100e+02
-2 5142     -7.018000e+02 3.115100e+02
-5 5142     7.159973e+00 -1.077700e+02
-7 5142     -6.518300e+02 5.687600e+02
-11 5142     -2.120500e+02 -2.357200e+02
-14 5142     -7.815002e+01 -2.022300e+02
-0 5143     -2.158300e+02 5.391400e+02
-2 5143     -4.996000e+02 3.066900e+02
-3 5143     -6.243600e+02 -2.178003e+01
-5 5143     1.968900e+02 -1.101400e+02
-7 5143     -4.468000e+02 5.871300e+02
-8 5143     -3.312600e+02 2.309900e+02
-12 5143     -5.498700e+02 5.266100e+02
-0 5144     -3.091700e+02 5.379500e+02
-7 5144     -5.423100e+02 5.769900e+02
-0 5145     2.523600e+02 5.382400e+02
-14 5145     5.568800e+02 -1.851500e+02
-0 5146     -1.451300e+02 5.369800e+02
-14 5146     1.758500e+02 -2.014300e+02
-0 5147     6.170100e+02 5.370400e+02
-2 5147     3.752500e+02 4.552800e+02
-3 5147     2.278101e+02 1.211000e+02
-6 5147     2.994500e+02 7.219300e+02
-9 5147     1.723700e+02 4.813300e+02
-13 5147     7.541600e+02 2.547300e+02
-0 5148     -3.256200e+02 5.351800e+02
-2 5148     -6.097300e+02 3.040200e+02
-7 5148     -5.588000e+02 5.723900e+02
-8 5148     -4.213700e+02 2.269600e+02
-11 5148     -1.378400e+02 -2.384700e+02
-12 5148     -6.762700e+02 5.083600e+02
-0 5149     2.726001e+01 5.348000e+02
-2 5149     -2.691000e+02 2.998500e+02
-6 5149     -4.552900e+02 5.722500e+02
-12 5149     -2.814000e+02 5.532700e+02
-0 5150     6.041200e+02 5.350400e+02
-2 5150     3.622900e+02 4.494600e+02
-0 5151     -5.371100e+02 5.346000e+02
-5 5151     -1.110100e+02 -1.109000e+02
-14 5151     -1.949400e+02 -2.076100e+02
-0 5152     -3.835200e+02 5.347500e+02
-7 5152     -6.194800e+02 5.657300e+02
-0 5153     -4.564000e+02 5.341900e+02
-2 5153     -7.475800e+02 3.065300e+02
-5 5153     -3.469000e+01 -1.134600e+02
-7 5153     -6.965900e+02 5.588600e+02
-8 5153     -5.328500e+02 2.251300e+02
-0 5154     3.905900e+02 5.339400e+02
-2 5154     4.565002e+01 3.015400e+02
-6 5154     -6.812000e+01 6.421200e+02
-0 5155     2.070800e+02 5.332800e+02
-5 5155     6.086500e+02 -1.098000e+02
-6 5155     -2.596300e+02 6.055200e+02
-12 5155     -9.216998e+01 5.750100e+02
-14 5155     5.123500e+02 -1.929700e+02
-0 5156     6.440000e+02 5.335700e+02
-6 5156     3.747000e+02 7.340900e+02
-0 5157     -3.082400e+02 5.325000e+02
-2 5157     -5.920200e+02 3.001800e+02
-7 5157     -5.402700e+02 5.707400e+02
-0 5158     -2.163100e+02 5.327800e+02
-7 5158     -4.464300e+02 5.802900e+02
-12 5158     -5.493400e+02 5.191100e+02
-0 5159     -6.104800e+02 5.317800e+02
-5 5159     -1.813100e+02 -1.132100e+02
-11 5159     -3.760600e+02 -2.416100e+02
-13 5159     -2.883900e+02 1.699500e+02
-14 5159     -2.640500e+02 -2.107400e+02
-0 5160     -5.592300e+02 5.318000e+02
-14 5160     -2.161500e+02 -2.105500e+02
-0 5161     -5.256200e+02 5.321300e+02
-5 5161     -9.921997e+01 -1.138600e+02
-14 5161     -1.830400e+02 -2.103500e+02
-0 5162     -1.232900e+02 5.320500e+02
-12 5162     -4.445400e+02 5.295400e+02
-0 5163     -1.232900e+02 5.320500e+02
-12 5163     -4.445400e+02 5.295400e+02
-0 5164     3.928199e+02 5.318100e+02
-14 5164     6.943800e+02 -1.835400e+02
-0 5165     1.614600e+02 5.305200e+02
-2 5165     -1.478600e+02 2.953200e+02
-5 5165     5.639500e+02 -1.134700e+02
-6 5165     -3.071600e+02 5.937100e+02
-0 5166     1.983900e+02 5.306900e+02
-9 5166     -2.521300e+02 3.271300e+02
-0 5167     -2.086100e+02 5.302100e+02
-5 5167     2.035699e+02 -1.190400e+02
-7 5167     -4.380500e+02 5.785700e+02
-12 5167     -5.399800e+02 5.171300e+02
-0 5168     1.531600e+02 5.299100e+02
-5 5168     5.554600e+02 -1.151200e+02
-0 5169     -6.990600e+02 5.296100e+02
-5 5169     -3.426800e+02 -1.213700e+02
-13 5169     -4.184000e+02 1.539200e+02
-0 5170     -1.044000e+01 5.294400e+02
-2 5170     -3.029200e+02 2.932100e+02
-5 5170     3.956400e+02 -1.187900e+02
-0 5171     3.945200e+02 5.295500e+02
-5 5171     7.985601e+02 -1.067200e+02
-6 5171     -6.334998e+01 6.378600e+02
-12 5171     9.808002e+01 5.952000e+02
-14 5171     6.962800e+02 -1.857700e+02
-0 5172     -3.181300e+02 5.289700e+02
-7 5172     -5.501900e+02 5.666300e+02
-8 5172     -4.148400e+02 2.209700e+02
-12 5172     -6.664700e+02 5.016000e+02
-0 5173     -3.181300e+02 5.289700e+02
-5 5173     9.747998e+01 -1.195500e+02
-7 5173     -5.501900e+02 5.666300e+02
-8 5173     -4.148400e+02 2.209700e+02
-0 5174     -2.238200e+02 5.288900e+02
-7 5174     -4.534700e+02 5.756500e+02
-11 5174     -5.059003e+01 -2.435400e+02
-12 5174     -5.573000e+02 5.134400e+02
-0 5175     4.458500e+02 5.279100e+02
-6 5175     -1.115002e+01 6.463600e+02
-13 5175     5.425200e+02 2.230900e+02
-14 5175     7.469000e+02 -1.840000e+02
-0 5176     -3.312400e+02 5.277200e+02
-2 5176     -6.153200e+02 2.953900e+02
-5 5176     8.478998e+01 -1.210900e+02
-14 5176     -1.369995e+00 -2.139600e+02
-0 5177     -9.821997e+01 5.264100e+02
-2 5177     -3.850700e+02 2.904600e+02
-5 5177     3.098199e+02 -1.226300e+02
-7 5177     -3.266700e+02 5.854000e+02
-12 5177     -4.157700e+02 5.270600e+02
-0 5178     -9.821997e+01 5.264100e+02
-2 5178     -3.850700e+02 2.904600e+02
-5 5178     3.098199e+02 -1.226300e+02
-12 5178     -4.157700e+02 5.270600e+02
-0 5179     -9.821997e+01 5.264100e+02
-2 5179     -3.850700e+02 2.904600e+02
-5 5179     3.098199e+02 -1.226300e+02
-7 5179     -3.266700e+02 5.854000e+02
-12 5179     -4.157700e+02 5.270600e+02
-0 5180     -5.376900e+02 5.262400e+02
-5 5180     -1.130100e+02 -1.203700e+02
-13 5180     -2.316500e+02 1.681300e+02
-14 5180     -1.965000e+02 -2.165100e+02
-0 5181     6.090300e+02 5.262000e+02
-6 5181     2.926700e+02 7.084300e+02
-0 5182     6.221400e+02 5.250200e+02
-3 5182     2.361500e+02 1.131200e+02
-9 5182     1.800800e+02 4.743800e+02
-0 5183     6.981000e+02 5.245800e+02
-6 5183     4.409600e+02 7.377000e+02
-0 5184     -4.390200e+02 5.238300e+02
-11 5184     -2.345000e+02 -2.482300e+02
-14 5184     -1.037800e+02 -2.187200e+02
-0 5185     -2.269900e+02 5.236600e+02
-7 5185     -4.559500e+02 5.701700e+02
-0 5186     9.133002e+01 5.236800e+02
-6 5186     -3.816800e+02 5.704200e+02
-0 5187     3.964500e+02 5.229200e+02
-5 5187     8.009301e+02 -1.133700e+02
-6 5187     -5.985999e+01 6.304400e+02
-14 5187     6.988101e+02 -1.925200e+02
-0 5188     -5.515300e+02 5.226200e+02
-5 5188     -1.267100e+02 -1.232300e+02
-7 5188     -7.983700e+02 5.373300e+02
-11 5188     -3.278000e+02 -2.486400e+02
-14 5188     -2.102900e+02 -2.199400e+02
-0 5189     6.113400e+02 5.224400e+02
-6 5189     2.965500e+02 7.048500e+02
-0 5190     -2.173800e+02 5.221300e+02
-2 5190     -5.006200e+02 2.867000e+02
-3 5190     -6.259500e+02 -4.217999e+01
-7 5190     -4.460100e+02 5.689300e+02
-8 5190     -3.318100e+02 2.150100e+02
-12 5190     -5.486000e+02 5.055600e+02
-0 5191     6.187600e+02 5.218200e+02
-2 5191     3.811000e+02 4.428000e+02
-6 5191     3.055500e+02 7.061300e+02
-0 5192     6.987600e+02 5.214200e+02
-6 5192     4.419800e+02 7.342000e+02
-9 5192     2.868700e+02 5.333700e+02
-0 5193     -3.168300e+02 5.212400e+02
-2 5193     -6.003700e+02 2.875300e+02
-0 5194     -3.168300e+02 5.212400e+02
-2 5194     -6.003700e+02 2.875300e+02
-7 5194     -5.476600e+02 5.583100e+02
-0 5195     2.978003e+01 5.208300e+02
-2 5195     -2.653400e+02 2.840500e+02
-6 5195     -4.497100e+02 5.549500e+02
-12 5195     -2.760100e+02 5.373100e+02
-0 5196     6.461300e+02 5.184900e+02
-2 5196     4.546899e+02 4.930000e+02
-11 5196     7.082600e+02 -2.155000e+02
-0 5197     2.687000e+01 5.175000e+02
-5 5197     4.314000e+02 -1.299600e+02
-6 5197     -4.523800e+02 5.503900e+02
-11 5197     1.704100e+02 -2.473500e+02
-0 5198     -5.270800e+02 5.168400e+02
-2 5198     -8.265800e+02 2.864000e+02
-5 5198     -1.041300e+02 -1.300100e+02
-7 5198     -7.697200e+02 5.320900e+02
-11 5198     -3.078100e+02 -2.548100e+02
-13 5198     -2.237400e+02 1.607100e+02
-14 5198     -1.876700e+02 -2.260800e+02
-0 5199     -4.024000e+02 5.157200e+02
-2 5199     -6.898700e+02 2.802200e+02
-7 5199     -6.357900e+02 5.434900e+02
-8 5199     -4.864100e+02 2.056100e+02
-11 5199     -2.034800e+02 -2.563900e+02
-12 5199     -7.643000e+02 4.708300e+02
-0 5200     -3.097600e+02 5.157000e+02
-2 5200     -5.931100e+02 2.802700e+02
-5 5200     1.046100e+02 -1.333200e+02
-7 5200     -5.394300e+02 5.531800e+02
-0 5201     1.525000e+01 5.155700e+02
-2 5201     -2.779900e+02 2.781800e+02
-5 5201     4.202400e+02 -1.326100e+02
-0 5202     1.065997e+01 5.148000e+02
-3 5202     -4.141600e+02 -5.469000e+01
-6 5202     -4.697100e+02 5.428500e+02
-0 5203     7.960999e+01 5.152400e+02
-5 5203     4.832700e+02 -1.321100e+02
-6 5203     -3.931800e+02 5.569700e+02
-8 5203     -1.016900e+02 2.137400e+02
-9 5203     -3.390100e+02 3.085400e+02
-12 5203     -2.217200e+02 5.374700e+02
-0 5204     7.573999e+01 5.147000e+02
-14 5204     3.870100e+02 -2.178600e+02
-0 5205     7.209003e+01 5.140300e+02
-2 5205     -2.259500e+02 2.768600e+02
-3 5205     -3.586800e+02 -5.535999e+01
-6 5205     -3.998900e+02 5.554700e+02
-7 5205     -1.582500e+02 5.899900e+02
-9 5205     -3.432900e+02 3.077000e+02
-14 5205     3.832900e+02 -2.187300e+02
-0 5206     -1.596000e+02 5.136100e+02
-12 5206     -4.820100e+02 5.036900e+02
-0 5207     -1.596000e+02 5.136100e+02
-12 5207     -4.820100e+02 5.036900e+02
-0 5208     -5.548800e+02 5.128500e+02
-5 5208     -1.317500e+02 -1.332700e+02
-0 5209     1.291998e+01 5.123900e+02
-5 5209     4.174399e+02 -1.354100e+02
-7 5209     -2.157200e+02 5.823300e+02
-11 5209     1.577800e+02 -2.527600e+02
-14 5209     3.259800e+02 -2.218700e+02
-0 5210     7.852002e+01 5.124100e+02
-2 5210     -2.204200e+02 2.749300e+02
-5 5210     4.819000e+02 -1.349200e+02
-6 5210     -3.940600e+02 5.534800e+02
-14 5210     3.891400e+02 -2.201200e+02
-0 5211     -3.188800e+02 5.118100e+02
-7 5211     -5.487900e+02 5.481200e+02
-0 5212     7.264001e+01 5.114000e+02
-2 5212     -2.251000e+02 2.739000e+02
-3 5212     -3.580800e+02 -5.890997e+01
-5 5212     4.765500e+02 -1.360900e+02
-6 5212     -3.998500e+02 5.510200e+02
-7 5212     -1.575800e+02 5.872200e+02
-8 5212     -1.050500e+02 2.105100e+02
-9 5212     -3.430000e+02 3.047700e+02
-14 5212     3.834900e+02 -2.214000e+02
-0 5213     6.330500e+02 5.115700e+02
-2 5213     4.427600e+02 4.820400e+02
-3 5213     2.959200e+02 1.470300e+02
-8 5213     4.272300e+02 3.684200e+02
-9 5213     2.326500e+02 5.064700e+02
-11 5213     6.983600e+02 -2.228800e+02
-0 5214     -9.803998e+01 5.112500e+02
-2 5214     -3.840800e+02 2.728500e+02
-0 5215     -3.347200e+02 5.106500e+02
-2 5215     -6.189700e+02 2.746300e+02
-7 5215     -5.646300e+02 5.450000e+02
-8 5215     -4.284900e+02 2.028200e+02
-12 5215     -6.829200e+02 4.759800e+02
-0 5216     5.244000e+01 5.103000e+02
-2 5216     -2.433600e+02 2.725800e+02
-3 5216     -3.758500e+02 -5.990997e+01
-5 5216     4.565500e+02 -1.373200e+02
-6 5216     -4.219600e+02 5.462700e+02
-7 5216     -1.770300e+02 5.839800e+02
-8 5216     -1.206600e+02 2.091900e+02
-9 5216     -3.586000e+02 3.031800e+02
-11 5216     1.935400e+02 -2.530400e+02
-0 5217     7.595001e+01 5.093400e+02
-2 5217     -2.220600e+02 2.715400e+02
-5 5217     4.791400e+02 -1.385700e+02
-7 5217     -1.540800e+02 5.854700e+02
-0 5218     6.116500e+02 5.094200e+02
-6 5218     3.026000e+02 6.912800e+02
-0 5219     5.666400e+02 5.065100e+02
-2 5219     3.296300e+02 4.117800e+02
-3 5219     1.849200e+02 7.909998e+01
-13 5219     7.094900e+02 2.250900e+02
-0 5220     6.637000e+01 5.052800e+02
-2 5220     -2.310400e+02 2.666900e+02
-3 5220     -3.642800e+02 -6.615997e+01
-5 5220     4.697600e+02 -1.429400e+02
-6 5220     -4.063700e+02 5.415900e+02
-8 5220     -1.107700e+02 2.041900e+02
-9 5220     -3.483600e+02 2.975900e+02
-12 5220     -2.342900e+02 5.240700e+02
-0 5221     1.099000e+02 5.053300e+02
-13 5221     2.765400e+02 1.805000e+02
-0 5222     4.620000e+02 5.056100e+02
-14 5222     7.659600e+02 -2.062500e+02
-0 5223     -4.085200e+02 5.048600e+02
-2 5223     -6.963000e+02 2.687800e+02
-5 5223     7.359985e+00 -1.435800e+02
-7 5223     -6.407100e+02 5.312400e+02
-8 5223     -4.916800e+02 1.968700e+02
-12 5223     -7.700400e+02 4.589900e+02
-0 5224     6.284998e+01 5.042400e+02
-7 5224     -1.663400e+02 5.788400e+02
-14 5224     3.741500e+02 -2.286600e+02
-0 5225     6.996100e+02 5.044000e+02
-2 5225     5.115300e+02 4.977400e+02
-6 5225     4.469301e+02 7.168600e+02
-8 5225     4.841200e+02 3.800900e+02
-0 5226     -1.860100e+02 5.034900e+02
-12 5226     -5.102000e+02 4.871900e+02
-0 5227     9.446002e+01 5.033800e+02
-6 5227     -3.749500e+02 5.448700e+02
-12 5227     -2.040400e+02 5.255600e+02
-0 5228     -3.665002e+01 5.029400e+02
-7 5228     -2.628800e+02 5.674600e+02
-0 5229     5.677600e+02 5.032200e+02
-2 5229     3.315300e+02 4.089800e+02
-3 5229     1.865500e+02 7.635999e+01
-6 5229     2.468400e+02 6.722000e+02
-8 5229     3.396700e+02 3.125900e+02
-0 5230     2.883002e+01 5.023300e+02
-6 5230     -4.474200e+02 5.305100e+02
-7 5230     -1.991400e+02 5.733600e+02
-0 5231     -6.885800e+02 5.018100e+02
-5 5231     -3.343700e+02 -1.481600e+02
-11 5231     -4.321800e+02 -2.639300e+02
-13 5231     -4.091900e+02 1.322900e+02
-14 5231     -4.127500e+02 -2.474400e+02
-0 5232     -9.401001e+01 5.015700e+02
-3 5232     -5.072000e+02 -6.814001e+01
-0 5233     -4.560999e+01 5.013100e+02
-6 5233     -5.311000e+02 5.149000e+02
-7 5233     -2.718100e+02 5.648700e+02
-0 5234     -6.257001e+01 5.003400e+02
-7 5234     -2.881200e+02 5.620900e+02
-0 5235     -2.138000e+01 5.005500e+02
-2 5235     -3.112900e+02 2.603600e+02
-6 5235     -5.030400e+02 5.173500e+02
-7 5235     -2.477900e+02 5.665100e+02
-12 5235     -3.275100e+02 5.061900e+02
-0 5236     6.633002e+01 5.002600e+02
-2 5236     -2.302900e+02 2.602700e+02
-5 5236     4.696801e+02 -1.482500e+02
-6 5236     -4.053400e+02 5.352200e+02
-7 5236     -1.625000e+02 5.748200e+02
-13 5236     2.422800e+02 1.735300e+02
-14 5236     3.774600e+02 -2.337300e+02
-0 5237     6.453900e+02 4.998200e+02
-3 5237     3.112800e+02 1.420600e+02
-6 5237     3.843400e+02 6.991900e+02
-0 5238     6.949100e+02 4.999800e+02
-2 5238     5.080800e+02 4.917700e+02
-3 5238     3.572200e+02 1.575300e+02
-6 5238     4.421801e+02 7.104600e+02
-8 5238     4.809399e+02 3.752800e+02
-9 5238     2.880500e+02 5.162700e+02
-0 5239     5.119500e+02 4.979000e+02
-2 5239     2.717200e+02 3.836700e+02
-3 5239     1.290600e+02 5.144000e+01
-6 5239     1.774200e+02 6.506800e+02
-8 5239     2.914200e+02 2.930100e+02
-9 5239     8.439001e+01 4.159900e+02
-0 5240     7.160500e+02 4.977700e+02
-6 5240     4.676801e+02 7.144500e+02
-0 5241     -6.421997e+01 4.973100e+02
-2 5241     -3.516900e+02 2.572300e+02
-7 5241     -2.900000e+02 5.589000e+02
-14 5241     2.517900e+02 -2.404800e+02
-0 5242     6.073999e+01 4.972100e+02
-7 5242     -1.671400e+02 5.712400e+02
-14 5242     3.726300e+02 -2.367500e+02
-0 5243     6.075601e+02 4.960300e+02
-6 5243     2.992200e+02 6.749900e+02
-8 5243     3.757500e+02 3.188100e+02
-0 5244     6.075601e+02 4.960300e+02
-6 5244     2.992200e+02 6.749900e+02
-8 5244     3.757500e+02 3.188100e+02
-0 5245     -6.902900e+02 4.953800e+02
-14 5245     -4.151900e+02 -2.542300e+02
-0 5246     -2.153600e+02 4.951600e+02
-2 5246     -4.975600e+02 2.547800e+02
-7 5246     -4.400300e+02 5.407800e+02
-0 5247     -3.339000e+02 4.918100e+02
-5 5247     7.846997e+01 -1.582100e+02
-7 5247     -5.611400e+02 5.249900e+02
-12 5247     -6.786600e+02 4.526400e+02
-0 5248     -3.339000e+02 4.918100e+02
-7 5248     -5.611400e+02 5.249900e+02
-12 5248     -6.786600e+02 4.526400e+02
-0 5249     -1.980500e+02 4.910800e+02
-7 5249     -4.220200e+02 5.383100e+02
-0 5250     -1.980500e+02 4.910800e+02
-7 5250     -4.220200e+02 5.383100e+02
-0 5251     7.643400e+02 4.904500e+02
-2 5251     5.778199e+02 5.074900e+02
-0 5252     -3.627500e+02 4.898600e+02
-14 5252     -3.458002e+01 -2.524200e+02
-0 5253     -3.627500e+02 4.898600e+02
-12 5253     -7.125900e+02 4.473400e+02
-14 5253     -3.458002e+01 -2.524200e+02
-0 5254     -1.085800e+02 4.895700e+02
-2 5254     -3.922900e+02 2.484300e+02
-0 5255     -3.959600e+02 4.886700e+02
-5 5255     1.739001e+01 -1.607000e+02
-7 5255     -6.257600e+02 5.151400e+02
-12 5255     -7.526000e+02 4.402600e+02
-0 5256     6.693700e+02 4.886000e+02
-3 5256     3.365500e+02 1.409600e+02
-6 5256     4.149800e+02 6.931800e+02
-9 5256     2.691700e+02 5.011700e+02
-11 5256     7.361600e+02 -2.407500e+02
-0 5257     6.651801e+02 4.879000e+02
-6 5257     4.099900e+02 6.910400e+02
-0 5258     -5.518500e+02 4.875500e+02
-7 5258     -7.928300e+02 4.984000e+02
-11 5258     -3.310700e+02 -2.779000e+02
-0 5259     -5.518500e+02 4.875500e+02
-7 5259     -7.928300e+02 4.984000e+02
-11 5259     -3.310700e+02 -2.779000e+02
-0 5260     -3.130700e+02 4.875700e+02
-7 5260     -5.390700e+02 5.224000e+02
-8 5260     -4.096600e+02 1.815200e+02
-0 5261     7.662700e+02 4.874100e+02
-2 5261     5.806300e+02 5.051700e+02
-6 5261     5.267500e+02 7.150800e+02
-0 5262     6.996000e+02 4.871400e+02
-2 5262     5.160000e+02 4.832300e+02
-6 5262     4.509399e+02 6.988500e+02
-8 5262     4.878500e+02 3.682500e+02
-11 5262     7.636500e+02 -2.404800e+02
-0 5263     -7.827002e+01 4.860300e+02
-2 5263     -3.637800e+02 2.433600e+02
-6 5263     -5.654000e+02 4.868600e+02
-0 5264     -4.153003e+01 4.853600e+02
-2 5264     -3.288400e+02 2.431200e+02
-7 5264     -2.655400e+02 5.486700e+02
-0 5265     5.955900e+02 4.850900e+02
-2 5265     3.635699e+02 4.025600e+02
-6 5265     2.840500e+02 6.602100e+02
-8 5265     3.670700e+02 3.061100e+02
-9 5265     1.636300e+02 4.349500e+02
-0 5266     7.038700e+02 4.847100e+02
-2 5266     5.208800e+02 4.826300e+02
-8 5266     4.917800e+02 3.676600e+02
-9 5266     2.998500e+02 5.087100e+02
-0 5267     4.984301e+02 4.839900e+02
-2 5267     2.591600e+02 3.661100e+02
-13 5267     6.452800e+02 1.995200e+02
-0 5268     -1.498600e+02 4.836300e+02
-12 5268     -4.662900e+02 4.686500e+02
-0 5269     3.377700e+02 4.841900e+02
-11 5269     4.565699e+02 -2.617200e+02
-14 5269     6.445200e+02 -2.363100e+02
-0 5270     -4.210200e+02 4.823300e+02
-2 5270     -7.098400e+02 2.410800e+02
-14 5270     -9.112000e+01 -2.607400e+02
-0 5271     -4.210200e+02 4.823300e+02
-2 5271     -7.098400e+02 2.410800e+02
-14 5271     -9.112000e+01 -2.607400e+02
-0 5272     -2.331000e+01 4.825200e+02
-14 5272     2.908800e+02 -2.546500e+02
-0 5273     6.399301e+02 4.827300e+02
-3 5273     3.100699e+02 1.264900e+02
-6 5273     3.816300e+02 6.788000e+02
-0 5274     6.685500e+02 4.825100e+02
-2 5274     4.861000e+02 4.688600e+02
-3 5274     3.375601e+02 1.361500e+02
-0 5275     6.685500e+02 4.825100e+02
-2 5275     4.861000e+02 4.688600e+02
-3 5275     3.375601e+02 1.361500e+02
-0 5276     -6.426001e+01 4.820100e+02
-2 5276     -3.499200e+02 2.387500e+02
-3 5276     -4.795400e+02 -9.207001e+01
-5 5276     3.409700e+02 -1.691900e+02
-6 5276     -5.482900e+02 4.847400e+02
-7 5276     -2.875500e+02 5.428500e+02
-12 5276     -3.709900e+02 4.784100e+02
-0 5277     -6.426001e+01 4.820100e+02
-2 5277     -3.499200e+02 2.387500e+02
-7 5277     -2.875500e+02 5.428500e+02
-12 5277     -3.709900e+02 4.784100e+02
-0 5278     6.919100e+02 4.818600e+02
-2 5278     5.096700e+02 4.765300e+02
-6 5278     4.430200e+02 6.917600e+02
-8 5278     4.821500e+02 3.623100e+02
-9 5278     2.896700e+02 5.028900e+02
-11 5278     7.576899e+02 -2.456400e+02
-0 5279     -1.042600e+02 4.815500e+02
-2 5279     -3.885000e+02 2.383700e+02
-3 5279     -5.171700e+02 -9.198999e+01
-7 5279     -3.271900e+02 5.381300e+02
-12 5279     -4.150500e+02 4.720900e+02
-0 5280     -5.817999e+01 4.814500e+02
-2 5280     -3.445600e+02 2.383300e+02
-6 5280     -5.415200e+02 4.854400e+02
-0 5281     -5.817999e+01 4.814500e+02
-2 5281     -3.445600e+02 2.383300e+02
-0 5282     -1.998999e+01 4.817100e+02
-2 5282     -3.090900e+02 2.390100e+02
-5 5282     3.841100e+02 -1.691600e+02
-6 5282     -4.982500e+02 4.933000e+02
-7 5282     -2.439500e+02 5.469500e+02
-9 5282     -4.136400e+02 2.715000e+02
-11 5282     1.301200e+02 -2.800100e+02
-12 5282     -3.224900e+02 4.839300e+02
-14 5282     2.941700e+02 -2.555400e+02
-0 5283     -4.315800e+02 4.810000e+02
-2 5283     -7.215000e+02 2.397100e+02
-5 5283     -1.753998e+01 -1.680300e+02
-7 5283     -6.620400e+02 5.032100e+02
-12 5283     -7.939900e+02 4.262000e+02
-14 5283     -1.015700e+02 -2.621300e+02
-0 5284     5.190800e+02 4.804100e+02
-2 5284     2.831700e+02 3.705800e+02
-6 5284     1.905200e+02 6.337500e+02
-12 5284     2.995200e+02 6.196400e+02
-0 5285     5.190800e+02 4.804100e+02
-6 5285     1.905200e+02 6.337500e+02
-12 5285     2.995200e+02 6.196400e+02
-0 5286     1.946002e+01 4.792500e+02
-7 5286     -2.051500e+02 5.487500e+02
-11 5286     1.652200e+02 -2.809700e+02
-14 5286     3.325699e+02 -2.564300e+02
-0 5287     -6.304300e+02 4.790900e+02
-5 5287     -2.241700e+02 -1.671700e+02
-0 5288     -6.304300e+02 4.790900e+02
-5 5288     -2.241700e+02 -1.671700e+02
-0 5289     -9.140997e+01 4.782000e+02
-7 5289     -3.138000e+02 5.359300e+02
-0 5290     7.069000e+02 4.779700e+02
-2 5290     5.256000e+02 4.779100e+02
-6 5290     4.616400e+02 6.910100e+02
-8 5290     4.953800e+02 3.632600e+02
-9 5290     3.032600e+02 5.047500e+02
-11 5290     7.725100e+02 -2.480200e+02
-0 5291     3.694000e+02 4.773600e+02
-2 5291     3.610999e+01 2.405600e+02
-8 5291     1.105000e+02 1.886100e+02
-14 5291     6.764100e+02 -2.416200e+02
-0 5292     -3.227002e+01 4.769000e+02
-2 5292     -3.196700e+02 2.331300e+02
-0 5293     -7.671997e+01 4.763500e+02
-7 5293     -2.980800e+02 5.370700e+02
-12 5293     -3.825900e+02 4.715100e+02
-14 5293     2.406100e+02 -2.612600e+02
-0 5294     -5.017999e+01 4.766100e+02
-6 5294     -5.311000e+02 4.805300e+02
-7 5294     -2.730100e+02 5.386500e+02
-12 5294     -3.547200e+02 4.738000e+02
-14 5294     2.651300e+02 -2.615800e+02
-0 5295     6.925800e+02 4.766300e+02
-2 5295     5.119000e+02 4.727100e+02
-8 5295     4.846801e+02 3.601400e+02
-9 5295     2.920500e+02 5.003700e+02
-11 5295     7.601100e+02 -2.489900e+02
-0 5296     -5.256200e+02 4.760900e+02
-5 5296     -1.087500e+02 -1.712600e+02
-7 5296     -7.622000e+02 4.882900e+02
-11 5296     -3.103800e+02 -2.872900e+02
-0 5297     -6.008002e+01 4.760900e+02
-6 5297     -5.430200e+02 4.785600e+02
-7 5297     -2.827600e+02 5.373500e+02
-9 5297     -4.456000e+02 2.639900e+02
-0 5298     3.480400e+02 4.760000e+02
-6 5298     -1.000500e+02 5.624000e+02
-12 5298     6.247998e+01 5.285900e+02
-0 5299     8.004800e+02 4.759600e+02
-6 5299     5.678700e+02 7.111600e+02
-0 5300     1.495800e+02 4.742500e+02
-2 5300     -1.528400e+02 2.322000e+02
-5 5300     5.521801e+02 -1.740300e+02
-11 5300     2.839500e+02 -2.801900e+02
-14 5300     4.592900e+02 -2.569800e+02
-0 5301     -9.950000e+01 4.735000e+02
-3 5301     -5.125100e+02 -1.018300e+02
-7 5301     -3.214900e+02 5.302200e+02
-14 5301     2.172000e+02 -2.661800e+02
-0 5302     3.306000e+02 4.736100e+02
-14 5302     6.381000e+02 -2.480700e+02
-0 5303     -5.448700e+02 4.707200e+02
-5 5303     -1.283200e+02 -1.765800e+02
-7 5303     -7.821300e+02 4.804600e+02
-14 5303     -2.111900e+02 -2.725400e+02
-0 5304     -3.393200e+02 4.702200e+02
-7 5304     -5.640000e+02 5.012600e+02
-0 5305     -7.604999e+01 4.705000e+02
-2 5305     -3.606400e+02 2.247700e+02
-6 5305     -5.600000e+02 4.667700e+02
-0 5306     -3.994000e+02 4.694100e+02
-2 5306     -6.865200e+02 2.249600e+02
-5 5306     1.212000e+01 -1.805600e+02
-0 5307     1.554399e+02 4.695500e+02
-3 5307     -2.809500e+02 -1.004200e+02
-0 5308     6.977700e+02 4.693800e+02
-6 5308     4.530800e+02 6.796600e+02
-0 5309     7.846899e+02 4.688200e+02
-2 5309     6.021801e+02 4.948900e+02
-6 5309     5.513101e+02 7.001100e+02
-0 5310     -5.147100e+02 4.681800e+02
-14 5310     -1.827800e+02 -2.751900e+02
-0 5311     -3.454999e+01 4.675400e+02
-7 5311     -2.567800e+02 5.308900e+02
-0 5312     -3.454999e+01 4.675400e+02
-5 5312     3.693700e+02 -1.842200e+02
-7 5312     -2.567800e+02 5.308900e+02
-13 5312     1.628800e+02 1.404500e+02
-14 5312     2.796801e+02 -2.707200e+02
-0 5313     -3.193000e+02 4.670400e+02
-2 5313     -6.019700e+02 2.213500e+02
-5 5313     9.046997e+01 -1.840200e+02
-7 5313     -5.424900e+02 5.003100e+02
-12 5313     -6.567600e+02 4.244800e+02
-0 5314     3.455400e+02 4.671100e+02
-6 5314     -1.010200e+02 5.507600e+02
-0 5315     -2.475300e+02 4.667400e+02
-2 5315     -5.277700e+02 2.209700e+02
-12 5315     -5.970800e+02 4.255800e+02
-0 5316     6.618300e+02 4.649800e+02
-2 5316     4.836899e+02 4.513300e+02
-0 5317     -4.150000e+02 4.645900e+02
-2 5317     -7.042700e+02 2.177700e+02
-12 5317     -7.715100e+02 4.078800e+02
-0 5318     -3.646600e+02 4.637200e+02
-2 5318     -6.494300e+02 2.174800e+02
-12 5318     -7.103200e+02 4.138400e+02
-0 5319     -3.646600e+02 4.637200e+02
-7 5319     -5.891900e+02 4.922400e+02
-0 5320     -5.329800e+02 4.634400e+02
-7 5320     -7.678000e+02 4.736800e+02
-14 5320     -2.006200e+02 -2.801000e+02
-0 5321     3.249100e+02 4.633700e+02
-14 5321     6.333600e+02 -2.591500e+02
-0 5322     6.771100e+02 4.636200e+02
-3 5322     3.503199e+02 1.230100e+02
-6 5322     4.300800e+02 6.674000e+02
-9 5322     2.816400e+02 4.844800e+02
-0 5323     -1.501500e+02 4.624900e+02
-2 5323     -4.315200e+02 2.153300e+02
-7 5323     -3.701200e+02 5.131800e+02
-0 5324     6.906100e+02 4.626900e+02
-3 5324     3.634600e+02 1.273600e+02
-0 5325     -2.518000e+02 4.618200e+02
-7 5325     -4.726800e+02 5.018500e+02
-0 5326     5.537100e+02 4.620700e+02
-2 5326     3.265300e+02 3.668100e+02
-3 5326     1.827800e+02 3.676001e+01
-6 5326     2.401200e+02 6.229400e+02
-12 5326     3.449700e+02 6.111500e+02
-0 5327     -4.261700e+02 4.606300e+02
-2 5327     -7.155700e+02 2.142400e+02
-8 5327     -5.064000e+02 1.532700e+02
-0 5328     -4.261700e+02 4.606300e+02
-2 5328     -7.155700e+02 2.142400e+02
-8 5328     -5.064000e+02 1.532700e+02
-0 5329     -2.469300e+02 4.600400e+02
-2 5329     -5.280200e+02 2.132100e+02
-5 5329     1.601200e+02 -1.922100e+02
-12 5329     -5.720800e+02 4.257200e+02
-14 5329     7.444000e+01 -2.821200e+02
-0 5330     -2.643800e+02 4.595400e+02
-2 5330     -5.455800e+02 2.120600e+02
-5 5330     1.428300e+02 -1.927900e+02
-8 5330     -3.688300e+02 1.553900e+02
-0 5331     6.896200e+02 4.597900e+02
-6 5331     4.460601e+02 6.679100e+02
-0 5332     8.189500e+02 4.588500e+02
-2 5332     6.369200e+02 4.977900e+02
-0 5333     2.044000e+02 4.575500e+02
-2 5333     -1.024700e+02 2.142900e+02
-6 5333     -2.483300e+02 5.092000e+02
-7 5333     -2.507001e+01 5.456700e+02
-12 5333     -8.145001e+01 4.877700e+02
-14 5333     5.139500e+02 -2.718300e+02
-0 5334     3.441899e+02 4.572000e+02
-14 5334     6.537100e+02 -2.645500e+02
-0 5335     -4.244600e+02 4.563400e+02
-5 5335     -1.378998e+01 -1.939400e+02
-8 5335     -5.050000e+02 1.494000e+02
-12 5335     -7.804700e+02 3.953300e+02
-14 5335     -9.726001e+01 -2.875500e+02
-0 5336     -5.409973e+00 4.560600e+02
-5 5336     3.977300e+02 -1.962800e+02
-14 5336     3.082400e+02 -2.818500e+02
-0 5337     6.295200e+02 4.556600e+02
-2 5337     4.528800e+02 4.318600e+02
-6 5337     3.754200e+02 6.471100e+02
-0 5338     8.270400e+02 4.549200e+02
-3 5338     4.854100e+02 1.636400e+02
-0 5339     3.514500e+02 4.524200e+02
-14 5339     6.605800e+02 -2.693600e+02
-0 5340     6.902100e+02 4.527200e+02
-2 5340     5.153300e+02 4.505600e+02
-3 5340     3.659000e+02 1.190400e+02
-6 5340     4.482900e+02 6.593800e+02
-0 5341     2.042300e+02 4.527000e+02
-6 5341     -2.470200e+02 5.029100e+02
-12 5341     -8.014001e+01 4.819200e+02
-14 5341     5.139500e+02 -2.771800e+02
-0 5342     6.157200e+02 4.513500e+02
-2 5342     4.396200e+02 4.228900e+02
-3 5342     2.945400e+02 9.226001e+01
-0 5343     -5.528100e+02 4.492700e+02
-5 5343     -1.396300e+02 -1.987500e+02
-14 5343     -2.220000e+02 -2.947900e+02
-0 5344     -3.107100e+02 4.494400e+02
-2 5344     -5.930600e+02 1.998600e+02
-0 5345     -3.107100e+02 4.494400e+02
-2 5345     -5.930600e+02 1.998600e+02
-0 5346     -2.730400e+02 4.495400e+02
-7 5346     -4.932400e+02 4.863900e+02
-0 5347     6.691000e+02 4.488900e+02
-2 5347     4.956300e+02 4.394500e+02
-0 5348     -6.128998e+01 4.481800e+02
-14 5348     2.571000e+02 -2.908200e+02
-0 5349     6.422300e+02 4.479300e+02
-2 5349     4.676500e+02 4.297700e+02
-3 5349     3.209700e+02 9.896002e+01
-6 5349     3.924900e+02 6.422700e+02
-8 5349     4.473000e+02 3.243000e+02
-9 5349     2.542900e+02 4.615000e+02
-0 5350     6.845300e+02 4.476700e+02
-2 5350     5.112100e+02 4.440700e+02
-6 5350     4.429700e+02 6.533800e+02
-9 5350     2.915800e+02 4.752200e+02
-13 5350     8.515900e+02 1.943900e+02
-0 5351     -4.258800e+02 4.471200e+02
-2 5351     -7.153200e+02 1.966600e+02
-11 5351     -2.273000e+02 -3.124500e+02
-0 5352     5.172800e+02 4.466600e+02
-6 5352     1.967000e+02 5.955700e+02
-9 5352     1.009900e+02 3.779400e+02
-0 5353     6.457900e+02 4.467200e+02
-2 5353     4.723800e+02 4.301500e+02
-3 5353     3.256000e+02 9.950000e+01
-6 5353     3.975900e+02 6.424300e+02
-9 5353     2.586000e+02 4.623800e+02
-13 5353     8.147200e+02 1.895500e+02
-0 5354     -4.224800e+02 4.455100e+02
-2 5354     -7.114100e+02 1.956800e+02
-5 5354     -1.350000e+01 -2.054200e+02
-12 5354     -7.768800e+02 3.822300e+02
-14 5354     -9.631000e+01 -2.986500e+02
-0 5355     5.353800e+02 4.453400e+02
-2 5355     3.106200e+02 3.430600e+02
-3 5355     1.676700e+02 1.265997e+01
-6 5355     2.207500e+02 5.978900e+02
-8 5355     3.223000e+02 2.591500e+02
-9 5355     1.189100e+02 3.819300e+02
-12 5355     3.274800e+02 5.851600e+02
-13 5355     6.856700e+02 1.714100e+02
-0 5356     3.353998e+01 4.440100e+02
-7 5356     -1.875200e+02 5.137700e+02
-14 5356     3.460100e+02 -2.933000e+02
-0 5357     5.180100e+02 4.439100e+02
-2 5357     2.913300e+02 3.358700e+02
-3 5357     1.487300e+02 6.239990e+00
-6 5357     1.989200e+02 5.920400e+02
-7 5357     2.991899e+02 5.869200e+02
-9 5357     1.025400e+02 3.756700e+02
-11 5357     6.153700e+02 -2.890100e+02
-13 5357     6.688700e+02 1.686700e+02
-0 5358     -2.971100e+02 4.434100e+02
-14 5358     2.485999e+01 -3.007800e+02
-0 5359     -2.536800e+02 4.428100e+02
-2 5359     -5.340800e+02 1.910900e+02
-7 5359     -4.718300e+02 4.815800e+02
-12 5359     -5.765100e+02 4.036000e+02
-0 5360     -2.536800e+02 4.428100e+02
-2 5360     -5.340800e+02 1.910900e+02
-7 5360     -4.718300e+02 4.815800e+02
-12 5360     -5.765100e+02 4.036000e+02
-0 5361     -3.058600e+02 4.413500e+02
-7 5361     -5.250000e+02 4.741900e+02
-8 5361     -4.022300e+02 1.375600e+02
-11 5361     -1.237200e+02 -3.184600e+02
-12 5361     -6.367800e+02 3.939800e+02
-14 5361     1.628998e+01 -3.028800e+02
-0 5362     2.084000e+02 4.416500e+02
-14 5362     5.196100e+02 -2.885700e+02
-0 5363     -1.824200e+02 4.405100e+02
-2 5363     -4.620800e+02 1.887700e+02
-7 5363     -3.993700e+02 4.868800e+02
-0 5364     -5.216998e+01 4.399500e+02
-2 5364     -3.255200e+02 1.992300e+02
-6 5364     -5.163200e+02 4.343200e+02
-7 5364     -2.683700e+02 5.020500e+02
-0 5365     -2.181000e+02 4.389000e+02
-2 5365     -4.980300e+02 1.869400e+02
-7 5365     -4.353200e+02 4.813000e+02
-11 5365     -4.617999e+01 -3.205800e+02
-0 5366     -3.074300e+02 4.380100e+02
-2 5366     -5.886700e+02 1.854500e+02
-0 5367     2.478300e+02 4.379700e+02
-12 5367     -3.203003e+01 4.716400e+02
-0 5368     7.362400e+02 4.361900e+02
-2 5368     5.652900e+02 4.520400e+02
-6 5368     5.055100e+02 6.546900e+02
-9 5368     3.376600e+02 4.833500e+02
-0 5369     7.362400e+02 4.361900e+02
-2 5369     5.652900e+02 4.520400e+02
-6 5369     5.055100e+02 6.546900e+02
-9 5369     3.376600e+02 4.833500e+02
-0 5370     -5.263800e+02 4.349400e+02
-7 5370     -7.564600e+02 4.432500e+02
-8 5370     -5.969100e+02 1.265600e+02
-10 5370     -7.838100e+02 6.164300e+02
-11 5370     -3.141800e+02 -3.220100e+02
-14 5370     -1.985200e+02 -3.096600e+02
-0 5371     -1.324200e+02 4.352000e+02
-3 5371     -5.430400e+02 -1.477900e+02
-0 5372     -3.914800e+02 4.345500e+02
-7 5372     -6.125400e+02 4.575100e+02
-0 5373     3.235300e+02 4.344700e+02
-14 5373     6.345100e+02 -2.901100e+02
-0 5374     -2.120400e+02 4.341900e+02
-2 5374     -4.915900e+02 1.807000e+02
-5 5374     1.921300e+02 -2.201700e+02
-7 5374     -4.288100e+02 4.770200e+02
-0 5375     -3.744000e+02 4.333800e+02
-2 5375     -6.595300e+02 1.802700e+02
-7 5375     -5.949000e+02 4.585600e+02
-12 5375     -7.171000e+02 3.749300e+02
-0 5376     5.453199e+02 4.333100e+02
-2 5376     3.244100e+02 3.383600e+02
-11 5376     6.417700e+02 -2.976700e+02
-12 5376     3.422500e+02 5.759900e+02
-0 5377     -1.379900e+02 4.298300e+02
-2 5377     -4.180600e+02 1.763000e+02
-7 5377     -3.540100e+02 4.804600e+02
-0 5378     5.442100e+02 4.293200e+02
-3 5378     1.810000e+02 3.469971e+00
-0 5379     -5.508100e+02 4.296300e+02
-7 5379     -7.820200e+02 4.345800e+02
-10 5379     -8.148600e+02 6.085400e+02
-14 5379     -2.229600e+02 -3.152700e+02
-0 5380     5.219000e+02 4.295700e+02
-2 5380     2.987400e+02 3.237100e+02
-6 5380     2.073400e+02 5.767900e+02
-7 5380     3.048000e+02 5.739700e+02
-13 5380     6.740500e+02 1.572500e+02
-0 5381     1.224000e+02 4.275200e+02
-14 5381     4.343101e+02 -3.081900e+02
-0 5382     6.053101e+02 4.272100e+02
-3 5382     2.905300e+02 6.804999e+01
-8 5382     4.197800e+02 2.991700e+02
-9 5382     2.272300e+02 4.331800e+02
-0 5383     6.079900e+02 4.271000e+02
-6 5383     3.559300e+02 6.109500e+02
-0 5384     -2.064100e+02 4.267000e+02
-7 5384     -4.219300e+02 4.697400e+02
-0 5385     -3.519800e+02 4.257800e+02
-7 5385     -5.706000e+02 4.526900e+02
-0 5386     -3.519800e+02 4.257800e+02
-7 5386     -5.706000e+02 4.526900e+02
-0 5387     -6.414100e+02 4.246600e+02
-13 5387     -3.527600e+02 7.246002e+01
-14 5387     -3.520500e+02 -3.246300e+02
-0 5388     -1.963700e+02 4.251400e+02
-7 5388     -4.116200e+02 4.692700e+02
-0 5389     -1.963700e+02 4.251400e+02
-7 5389     -4.116200e+02 4.692700e+02
-0 5390     2.989001e+01 4.250300e+02
-2 5390     -2.562400e+02 1.741500e+02
-6 5390     -4.298400e+02 4.297300e+02
-0 5391     -3.472000e+02 4.238800e+02
-2 5391     -6.312200e+02 1.676700e+02
-8 5391     -4.378900e+02 1.189400e+02
-0 5392     -2.302600e+02 4.231600e+02
-2 5392     -5.094500e+02 1.672500e+02
-7 5392     -4.455500e+02 4.634400e+02
-0 5393     -2.993900e+02 4.208000e+02
-5 5393     1.047900e+02 -2.336000e+02
-0 5394     -2.993900e+02 4.208000e+02
-5 5394     1.047900e+02 -2.336000e+02
-7 5394     -5.155200e+02 4.530800e+02
-0 5395     -3.558800e+02 4.206100e+02
-2 5395     -6.398200e+02 1.629700e+02
-7 5395     -5.736800e+02 4.465000e+02
-10 5395     -5.673800e+02 6.103300e+02
-0 5396     -3.558800e+02 4.206100e+02
-2 5396     -6.398200e+02 1.629700e+02
-7 5396     -5.736800e+02 4.465000e+02
-10 5396     -5.673800e+02 6.103300e+02
-0 5397     -3.558800e+02 4.206100e+02
-7 5397     -5.736800e+02 4.465000e+02
-10 5397     -5.673800e+02 6.103300e+02
-0 5398     -2.367400e+02 4.199300e+02
-10 5398     -4.217000e+02 6.189600e+02
-14 5398     8.184998e+01 -3.250900e+02
-0 5399     2.009301e+02 4.201100e+02
-7 5399     -2.367999e+01 5.074400e+02
-0 5400     4.841000e+02 4.192900e+02
-8 5400     2.797000e+02 2.246100e+02
-0 5401     7.601000e+02 4.193200e+02
-2 5401     5.925000e+02 4.453300e+02
-6 5401     5.364399e+02 6.427900e+02
-0 5402     -4.649500e+02 4.181100e+02
-5 5402     -5.788000e+01 -2.340700e+02
-8 5402     -5.403600e+02 1.105600e+02
-10 5402     -7.033300e+02 5.992600e+02
-14 5402     -1.405700e+02 -3.279400e+02
-0 5403     1.246400e+02 4.177500e+02
-2 5403     -1.686700e+02 1.673300e+02
-3 5403     -3.053200e+02 -1.642300e+02
-5 5403     5.275400e+02 -2.354100e+02
-6 5403     -3.244400e+02 4.415000e+02
-7 5403     -9.588000e+01 4.969000e+02
-8 5403     -5.832001e+01 1.269400e+02
-9 5403     -2.902000e+02 2.140800e+02
-12 5403     -1.558100e+02 4.303900e+02
-0 5404     -4.063100e+02 4.165200e+02
-5 5404     -6.400146e-01 -2.369400e+02
-8 5404     -4.883800e+02 1.100400e+02
-10 5404     -6.285100e+02 6.018000e+02
-0 5405     -3.268800e+02 4.149500e+02
-7 5405     -5.431600e+02 4.439700e+02
-0 5406     7.383500e+02 4.148400e+02
-2 5406     5.731000e+02 4.343600e+02
-0 5407     4.923000e+02 4.146700e+02
-2 5407     2.684800e+02 2.972300e+02
-6 5407     1.726100e+02 5.510000e+02
-8 5407     2.875100e+02 2.237600e+02
-9 5407     8.378998e+01 3.421400e+02
-11 5407     5.966400e+02 -3.167100e+02
-0 5408     -2.654900e+02 4.136800e+02
-2 5408     -5.454200e+02 1.551900e+02
-7 5408     -4.798600e+02 4.492800e+02
-0 5409     7.100100e+02 4.135000e+02
-3 5409     3.951500e+02 9.477002e+01
-6 5409     4.808900e+02 6.238800e+02
-0 5410     7.100100e+02 4.135000e+02
-3 5410     3.951500e+02 9.477002e+01
-6 5410     4.808900e+02 6.238800e+02
-0 5411     -3.004500e+02 4.130300e+02
-2 5411     -5.813300e+02 1.539800e+02
-5 5411     1.032600e+02 -2.421500e+02
-7 5411     -5.152900e+02 4.448200e+02
-12 5411     -6.250200e+02 3.594700e+02
-0 5412     7.129800e+02 4.124200e+02
-6 5412     4.847900e+02 6.236600e+02
-0 5413     7.129800e+02 4.124200e+02
-6 5413     4.847900e+02 6.236600e+02
-9 5413     3.240400e+02 4.589300e+02
-0 5414     -4.444400e+02 4.115200e+02
-7 5414     -6.651200e+02 4.271100e+02
-8 5414     -5.212100e+02 1.050400e+02
-10 5414     -6.761700e+02 5.925800e+02
-12 5414     -7.981800e+02 3.358300e+02
-0 5415     -2.071300e+02 4.098600e+02
-5 5415     1.950200e+02 -2.458800e+02
-7 5415     -4.206200e+02 4.524100e+02
-12 5415     -5.184200e+02 3.712600e+02
-14 5415     1.099400e+02 -3.351000e+02
-0 5416     -3.053400e+02 4.095500e+02
-2 5416     -5.862500e+02 1.498900e+02
-7 5416     -5.205200e+02 4.407600e+02
-10 5416     -5.033600e+02 6.008600e+02
-11 5416     -1.233800e+02 -3.464200e+02
-14 5416     1.421997e+01 -3.366600e+02
-0 5417     -3.053400e+02 4.095500e+02
-2 5417     -5.862500e+02 1.498900e+02
-5 5417     9.795001e+01 -2.457500e+02
-7 5417     -5.205200e+02 4.407600e+02
-11 5417     -1.233800e+02 -3.464200e+02
-12 5417     -6.311300e+02 3.549300e+02
-14 5417     1.421997e+01 -3.366600e+02
-0 5418     -4.492200e+02 4.080300e+02
-2 5418     -7.408100e+02 1.474800e+02
-5 5418     -4.404999e+01 -2.445900e+02
-7 5418     -6.696900e+02 4.228200e+02
-12 5418     -8.032200e+02 3.306700e+02
-0 5419     -3.132700e+02 4.082400e+02
-7 5419     -5.277900e+02 4.379100e+02
-10 5419     -5.127800e+02 5.987100e+02
-12 5419     -6.398500e+02 3.514100e+02
-14 5419     6.409973e+00 -3.385200e+02
-0 5420     7.025800e+02 4.071400e+02
-3 5420     3.898800e+02 8.688000e+01
-6 5420     4.735400e+02 6.138600e+02
-9 5420     3.162400e+02 4.505800e+02
-13 5420     8.738000e+02 1.635200e+02
-0 5421     6.680000e+02 4.060600e+02
-2 5421     5.054700e+02 4.019200e+02
-3 5421     3.577100e+02 7.387000e+01
-6 5421     4.341000e+02 6.052900e+02
-7 5421     4.641600e+02 5.839000e+02
-0 5422     7.145900e+02 4.059700e+02
-6 5422     4.892600e+02 6.172800e+02
-0 5423     5.428600e+02 4.048800e+02
-7 5423     3.288199e+02 5.533100e+02
-0 5424     -4.172100e+02 4.045900e+02
-2 5424     -7.064600e+02 1.426500e+02
-12 5424     -7.638000e+02 3.309400e+02
-14 5424     -9.665997e+01 -3.426100e+02
-0 5425     6.415800e+02 4.043000e+02
-2 5425     4.785400e+02 3.904400e+02
-6 5425     4.025500e+02 5.953200e+02
-7 5425     4.385100e+02 5.778000e+02
-11 5425     7.296500e+02 -3.191200e+02
-12 5425     4.863300e+02 6.021300e+02
-0 5426     6.599301e+02 4.046800e+02
-2 5426     4.972300e+02 3.977700e+02
-6 5426     4.242100e+02 6.012400e+02
-7 5426     4.563800e+02 5.815200e+02
-11 5426     7.462800e+02 -3.183700e+02
-12 5426     5.072000e+02 6.088000e+02
-0 5427     6.703700e+02 4.046500e+02
-2 5427     5.080800e+02 4.013700e+02
-6 5427     4.367600e+02 6.038200e+02
-11 5427     7.564399e+02 -3.178100e+02
-12 5427     5.190400e+02 6.125800e+02
-0 5428     -2.820000e+02 4.024500e+02
-10 5428     -4.737800e+02 5.944000e+02
-14 5428     3.779999e+01 -3.441500e+02
-0 5429     -3.918800e+02 4.020300e+02
-2 5429     -6.789400e+02 1.389500e+02
-7 5429     -6.087200e+02 4.225800e+02
-10 5429     -6.085900e+02 5.846200e+02
-12 5429     -7.325900e+02 3.314300e+02
-0 5430     7.001200e+02 4.016800e+02
-2 5430     5.387100e+02 4.098600e+02
-3 5430     3.893900e+02 8.160999e+01
-6 5430     4.723600e+02 6.091700e+02
-7 5430     4.960300e+02 5.849500e+02
-8 5430     5.055800e+02 3.067300e+02
-9 5430     3.158300e+02 4.464700e+02
-12 5430     5.534200e+02 6.186400e+02
-13 5430     8.722600e+02 1.592100e+02
-0 5431     -2.793400e+02 4.010300e+02
-7 5431     -4.917100e+02 4.351500e+02
-10 5431     -4.706700e+02 5.925500e+02
-0 5432     -3.019900e+02 4.004100e+02
-7 5432     -5.151400e+02 4.315500e+02
-0 5433     3.402002e+01 3.995000e+02
-7 5433     -1.809500e+02 4.683100e+02
-10 5433     -9.551001e+01 6.203000e+02
-0 5434     5.304900e+02 3.994700e+02
-7 5434     3.179000e+02 5.462700e+02
-0 5435     -2.648100e+02 3.987500e+02
-5 5435     1.378100e+02 -2.579900e+02
-7 5435     -4.765700e+02 4.339900e+02
-10 5435     -4.520300e+02 5.910200e+02
-14 5435     5.360999e+01 -3.478700e+02
-0 5436     -1.947800e+02 3.987500e+02
-2 5436     -4.722500e+02 1.378500e+02
-12 5436     -5.017800e+02 3.586300e+02
-0 5437     -1.947800e+02 3.987500e+02
-2 5437     -4.722500e+02 1.378500e+02
-5 5437     2.067500e+02 -2.584000e+02
-7 5437     -4.064500e+02 4.419500e+02
-8 5437     -3.077700e+02 9.864999e+01
-10 5437     -3.682500e+02 5.973400e+02
-12 5437     -5.017800e+02 3.586300e+02
-0 5438     -6.045500e+02 3.981200e+02
-5 5438     -2.050800e+02 -2.508400e+02
-7 5438     -8.382300e+02 3.929600e+02
-13 5438     -2.975800e+02 5.621997e+01
-14 5438     -2.866500e+02 -3.485700e+02
-0 5439     -3.528900e+02 3.979100e+02
-2 5439     -6.364400e+02 1.345900e+02
-0 5440     -3.579600e+02 3.974400e+02
-2 5440     -6.417200e+02 1.339300e+02
-7 5440     -5.725400e+02 4.217300e+02
-0 5441     -2.975400e+02 3.973800e+02
-2 5441     -5.781900e+02 1.365300e+02
-5 5441     1.044500e+02 -2.582900e+02
-7 5441     -5.105200e+02 4.291100e+02
-8 5441     -3.938900e+02 9.489999e+01
-14 5441     2.071997e+01 -3.485800e+02
-0 5442     -2.975400e+02 3.973800e+02
-14 5442     2.071997e+01 -3.485800e+02
-0 5443     -5.302100e+02 3.954800e+02
-7 5443     -7.544300e+02 3.997700e+02
-10 5443     -7.818600e+02 5.670200e+02
-14 5443     -2.077700e+02 -3.517200e+02
-0 5444     6.389900e+02 3.948800e+02
-2 5444     4.779301e+02 3.808900e+02
-6 5444     4.015600e+02 5.841500e+02
-8 5444     4.548800e+02 2.841200e+02
-11 5444     7.290601e+02 -3.281600e+02
-12 5444     4.854301e+02 5.908500e+02
-0 5445     -3.327500e+02 3.944500e+02
-2 5445     -6.149200e+02 1.305900e+02
-7 5445     -5.462700e+02 4.216100e+02
-10 5445     -5.347100e+02 5.802100e+02
-0 5446     -3.327500e+02 3.944500e+02
-2 5446     -6.149200e+02 1.305900e+02
-7 5446     -5.462700e+02 4.216100e+02
-0 5447     -3.327500e+02 3.944500e+02
-2 5447     -6.149200e+02 1.305900e+02
-7 5447     -5.462700e+02 4.216100e+02
-0 5448     -2.869800e+02 3.941700e+02
-2 5448     -5.661800e+02 1.321300e+02
-10 5448     -4.789800e+02 5.834300e+02
-11 5448     -1.080500e+02 -3.600100e+02
-12 5448     -6.065800e+02 3.389100e+02
-0 5449     -2.718400e+02 3.939400e+02
-13 5449     -2.490997e+01 6.617999e+01
-14 5449     4.656000e+01 -3.529700e+02
-0 5450     -2.603600e+02 3.938900e+02
-2 5450     -5.385100e+02 1.312900e+02
-7 5450     -4.718800e+02 4.294000e+02
-12 5450     -5.760000e+02 3.428300e+02
-0 5451     6.259301e+02 3.935500e+02
-2 5451     4.649500e+02 3.745500e+02
-7 5451     4.245500e+02 5.648700e+02
-0 5452     -4.956800e+02 3.932500e+02
-7 5452     -7.166100e+02 4.007500e+02
-8 5452     -5.687000e+02 8.456000e+01
-10 5452     -7.373700e+02 5.660400e+02
-0 5453     -4.706200e+02 3.931800e+02
-5 5453     -6.765997e+01 -2.600100e+02
-8 5453     -5.458200e+02 8.529001e+01
-10 5453     -7.057000e+02 5.677000e+02
-12 5453     -8.270800e+02 3.080700e+02
-0 5454     -3.021800e+02 3.928900e+02
-7 5454     -5.143700e+02 4.234100e+02
-0 5455     -3.021800e+02 3.928900e+02
-7 5455     -5.143700e+02 4.234100e+02
-10 5455     -4.974900e+02 5.808700e+02
-14 5455     1.627002e+01 -3.544000e+02
-0 5456     -4.322400e+02 3.914500e+02
-2 5456     -7.226100e+02 1.256300e+02
-5 5456     -3.013000e+01 -2.624200e+02
-7 5456     -6.495400e+02 4.069700e+02
-14 5456     -1.120000e+02 -3.561500e+02
-0 5457     -4.287900e+02 3.913700e+02
-2 5457     -7.182500e+02 1.253500e+02
-7 5457     -6.451500e+02 4.070500e+02
-8 5457     -5.076400e+02 8.406000e+01
-10 5457     -6.523700e+02 5.687800e+02
-11 5457     -2.323900e+02 -3.613500e+02
-14 5457     -1.086400e+02 -3.565800e+02
-0 5458     -4.287900e+02 3.913700e+02
-2 5458     -7.182500e+02 1.253500e+02
-7 5458     -6.451500e+02 4.070500e+02
-8 5458     -5.076400e+02 8.406000e+01
-10 5458     -6.523700e+02 5.687800e+02
-14 5458     -1.086400e+02 -3.565800e+02
-0 5459     5.635900e+02 3.915600e+02
-7 5459     3.510699e+02 5.435900e+02
-0 5460     -2.538700e+02 3.902700e+02
-2 5460     -5.321200e+02 1.264700e+02
-7 5460     -4.647300e+02 4.262800e+02
-14 5460     6.359998e+01 -3.573300e+02
-0 5461     -2.599800e+02 3.900700e+02
-7 5461     -4.709500e+02 4.254800e+02
-10 5461     -4.455700e+02 5.804600e+02
-14 5461     5.747998e+01 -3.571300e+02
-0 5462     2.329999e+01 3.893800e+02
-8 5462     -1.339100e+02 9.629001e+01
-14 5462     3.365000e+02 -3.524500e+02
-0 5463     2.329999e+01 3.893800e+02
-2 5463     -2.598100e+02 1.303100e+02
-6 5463     -4.318000e+02 3.820300e+02
-7 5463     -1.902900e+02 4.568800e+02
-8 5463     -1.339100e+02 9.629001e+01
-9 5463     -3.667300e+02 1.784000e+02
-10 5463     -1.074800e+02 6.065100e+02
-12 5463     -2.594300e+02 3.807400e+02
-14 5463     3.365000e+02 -3.524500e+02
-0 5464     7.172800e+02 3.893800e+02
-2 5464     5.590000e+02 4.048400e+02
-6 5464     4.951300e+02 6.003500e+02
-7 5464     5.141200e+02 5.758500e+02
-8 5464     5.222900e+02 3.023100e+02
-0 5465     -3.108700e+02 3.875800e+02
-2 5465     -5.913200e+02 1.222100e+02
-7 5465     -5.226700e+02 4.167500e+02
-10 5465     -5.064800e+02 5.726000e+02
-0 5466     -3.057500e+02 3.869400e+02
-2 5466     -5.856800e+02 1.214200e+02
-7 5466     -5.168700e+02 4.165300e+02
-10 5466     -5.004200e+02 5.728800e+02
-14 5466     1.215997e+01 -3.611000e+02
-0 5467     -1.323700e+02 3.867400e+02
-11 5467     3.125000e+01 -3.663500e+02
-12 5467     -4.282700e+02 3.525100e+02
-0 5468     -4.721300e+02 3.861700e+02
-8 5468     -5.467500e+02 7.829999e+01
-0 5469     -3.372800e+02 3.853600e+02
-5 5469     6.428998e+01 -2.708200e+02
-7 5469     -5.491800e+02 4.115900e+02
-0 5470     -3.372800e+02 3.853600e+02
-5 5470     6.428998e+01 -2.708200e+02
-7 5470     -5.491800e+02 4.115900e+02
-8 5470     -4.269600e+02 8.154999e+01
-0 5471     6.253800e+02 3.855500e+02
-2 5471     4.662300e+02 3.675900e+02
-0 5472     -2.741900e+02 3.840800e+02
-7 5472     -4.845700e+02 4.171800e+02
-10 5472     -4.616200e+02 5.714000e+02
-14 5472     4.310999e+01 -3.639300e+02
-0 5473     -5.169500e+02 3.842200e+02
-13 5473     -2.224500e+02 4.813000e+01
-0 5474     5.465400e+02 3.845200e+02
-2 5474     3.374301e+02 2.909500e+02
-3 5474     1.950400e+02 -3.571997e+01
-6 5474     2.504800e+02 5.335500e+02
-7 5474     3.354500e+02 5.339700e+02
-8 5474     3.436400e+02 2.166400e+02
-9 5474     1.435100e+02 3.387200e+02
-12 5474     3.547800e+02 5.259500e+02
-0 5475     -1.949800e+02 3.840000e+02
-2 5475     -4.718200e+02 1.190100e+02
-7 5475     -4.042600e+02 4.265700e+02
-8 5475     -3.073600e+02 8.356000e+01
-14 5475     1.208500e+02 -3.634300e+02
-0 5476     -1.949800e+02 3.840000e+02
-2 5476     -4.718200e+02 1.190100e+02
-14 5476     1.208500e+02 -3.634300e+02
-0 5477     2.746002e+01 3.841500e+02
-5 5477     4.279800e+02 -2.742700e+02
-6 5477     -4.263000e+02 3.763700e+02
-9 5477     -3.625800e+02 1.735200e+02
-10 5477     -1.021300e+02 6.011600e+02
-12 5477     -2.539700e+02 3.752100e+02
-0 5478     2.746002e+01 3.841500e+02
-5 5478     4.279800e+02 -2.742700e+02
-10 5478     -1.021300e+02 6.011600e+02
-12 5478     -2.539700e+02 3.752100e+02
-0 5479     -3.038800e+02 3.834300e+02
-2 5479     -5.845000e+02 1.171100e+02
-10 5479     -4.976300e+02 5.688900e+02
-11 5479     -1.224500e+02 -3.687200e+02
-0 5480     -3.569500e+02 3.825600e+02
-2 5480     -6.400500e+02 1.141900e+02
-7 5480     -5.692000e+02 4.057300e+02
-10 5480     -5.627900e+02 5.630700e+02
-14 5480     -3.894000e+01 -3.666300e+02
-0 5481     6.867700e+02 3.806800e+02
-2 5481     5.310300e+02 3.859800e+02
-0 5482     7.030400e+02 3.805600e+02
-2 5482     5.469301e+02 3.922200e+02
-3 5482     3.976400e+02 6.577002e+01
-6 5482     4.806801e+02 5.873800e+02
-7 5482     5.015100e+02 5.651900e+02
-9 5482     3.232200e+02 4.313900e+02
-12 5482     5.618700e+02 5.972000e+02
-13 5482     8.777000e+02 1.422700e+02
-0 5483     -2.691500e+02 3.801000e+02
-2 5483     -5.453800e+02 1.129500e+02
-11 5483     -9.245001e+01 -3.728400e+02
-0 5484     2.656000e+01 3.797300e+02
-2 5484     -2.558300e+02 1.194700e+02
-5 5484     4.269200e+02 -2.791100e+02
-6 5484     -4.263700e+02 3.694200e+02
-7 5484     -1.857000e+02 4.475200e+02
-9 5484     -3.628000e+02 1.685800e+02
-10 5484     -1.022800e+02 5.949800e+02
-11 5484     1.764000e+02 -3.695000e+02
-12 5484     -2.539900e+02 3.700700e+02
-14 5484     3.401100e+02 -3.626300e+02
-0 5485     5.531100e+02 3.797800e+02
-2 5485     3.458400e+02 2.890600e+02
-3 5485     2.032600e+02 -3.753003e+01
-6 5485     2.598300e+02 5.303700e+02
-7 5485     3.424600e+02 5.304900e+02
-8 5485     3.503700e+02 2.151200e+02
-9 5485     1.509200e+02 3.374500e+02
-11 5485     6.596801e+02 -3.465900e+02
-12 5485     3.634900e+02 5.230000e+02
-13 5485     7.097800e+02 1.193400e+02
-0 5486     6.292500e+02 3.796700e+02
-2 5486     4.716200e+02 3.631000e+02
-8 5486     4.494200e+02 2.694200e+02
-9 5486     2.595500e+02 4.051200e+02
-0 5487     7.130601e+02 3.789600e+02
-2 5487     5.577900e+02 3.942700e+02
-9 5487     3.323500e+02 4.337200e+02
-0 5488     5.586400e+02 3.762600e+02
-2 5488     3.527900e+02 2.881200e+02
-3 5488     2.101000e+02 -3.803998e+01
-6 5488     2.677100e+02 5.282800e+02
-7 5488     3.481300e+02 5.284000e+02
-12 5488     3.707600e+02 5.213000e+02
-0 5489     -4.771000e+02 3.760400e+02
-5 5489     -7.569000e+01 -2.784300e+02
-7 5489     -6.942600e+02 3.847800e+02
-14 5489     -1.578500e+02 -3.729000e+02
-0 5490     -5.828400e+02 3.742800e+02
-14 5490     -2.624600e+02 -3.740300e+02
-0 5491     -2.068100e+02 3.745300e+02
-7 5491     -4.150500e+02 4.149600e+02
-10 5491     -3.794400e+02 5.666900e+02
-0 5492     7.189200e+02 3.738700e+02
-2 5492     5.647500e+02 3.917500e+02
-6 5492     5.010300e+02 5.845700e+02
-7 5492     5.177600e+02 5.613500e+02
-8 5492     5.271899e+02 2.915100e+02
-9 5492     3.382700e+02 4.318100e+02
-12 5492     5.812400e+02 5.953300e+02
-0 5493     -2.151800e+02 3.734200e+02
-7 5493     -4.234900e+02 4.125000e+02
-10 5493     -3.911200e+02 5.727900e+02
-0 5494     6.963700e+02 3.734600e+02
-3 5494     3.937500e+02 5.735999e+01
-6 5494     4.752200e+02 5.780400e+02
-8 5494     5.085601e+02 2.849000e+02
-9 5494     3.196000e+02 4.240300e+02
-11 5494     7.892300e+02 -3.455100e+02
-0 5495     6.963700e+02 3.734600e+02
-2 5495     5.427200e+02 3.833100e+02
-3 5495     3.937500e+02 5.735999e+01
-6 5495     4.752200e+02 5.780400e+02
-7 5495     4.962100e+02 5.572500e+02
-8 5495     5.085601e+02 2.849000e+02
-9 5495     3.196000e+02 4.240300e+02
-12 5495     5.560601e+02 5.876300e+02
-0 5496     -3.687100e+02 3.730700e+02
-2 5496     -6.525600e+02 1.028000e+02
-7 5496     -5.802000e+02 3.945500e+02
-8 5496     -4.546700e+02 6.767001e+01
-10 5496     -5.757800e+02 5.505500e+02
-0 5497     -3.444400e+02 3.730800e+02
-2 5497     -6.267500e+02 1.035800e+02
-5 5497     5.492999e+01 -2.841600e+02
-7 5497     -5.553000e+02 3.978500e+02
-10 5497     -5.462500e+02 5.527300e+02
-14 5497     -2.751001e+01 -3.761700e+02
-0 5498     5.618600e+02 3.713400e+02
-2 5498     3.578199e+02 2.841900e+02
-3 5498     2.150500e+02 -4.194000e+01
-6 5498     2.730600e+02 5.235700e+02
-7 5498     3.521899e+02 5.237300e+02
-8 5498     3.600900e+02 2.106800e+02
-9 5498     1.614399e+02 3.330800e+02
-11 5498     6.694399e+02 -3.539400e+02
-12 5498     3.756899e+02 5.169200e+02
-13 5498     7.194301e+02 1.129900e+02
-0 5499     6.707600e+02 3.699600e+02
-2 5499     5.184301e+02 3.709000e+02
-3 5499     3.714399e+02 4.521997e+01
-8 5499     4.883300e+02 2.749700e+02
-9 5499     2.991899e+02 4.127400e+02
-12 5499     5.283400e+02 5.753500e+02
-0 5500     -1.983000e+02 3.662200e+02
-2 5500     -4.743900e+02 9.682001e+01
-10 5500     -3.684800e+02 5.572000e+02
-0 5501     -1.080017e+00 3.660600e+02
-14 5501     3.124800e+02 -3.789500e+02
-0 5502     7.885601e+02 3.658000e+02
-6 5502     5.813400e+02 5.950400e+02
-9 5502     3.965000e+02 4.484200e+02
-12 5502     6.606100e+02 6.093000e+02
-0 5503     -5.663000e+02 3.658400e+02
-7 5503     -7.891900e+02 3.637700e+02
-10 5503     -8.232700e+02 5.266900e+02
-13 5503     -2.634000e+02 3.010999e+01
-15 5503     -8.570900e+02 5.649100e+02
-0 5504     5.599800e+02 3.654000e+02
-11 5504     6.686300e+02 -3.596600e+02
-12 5504     3.753900e+02 5.092400e+02
-0 5505     6.784800e+02 3.650800e+02
-2 5505     5.265601e+02 3.691900e+02
-6 5505     4.562500e+02 5.639000e+02
-7 5505     4.798700e+02 5.461600e+02
-8 5505     4.949399e+02 2.736000e+02
-9 5505     3.061700e+02 4.115900e+02
-12 5505     5.379399e+02 5.729400e+02
-0 5506     6.100300e+02 3.645200e+02
-6 5506     3.738400e+02 5.428800e+02
-7 5506     4.125200e+02 5.341800e+02
-9 5506     2.456400e+02 3.860900e+02
-0 5507     6.100300e+02 3.645200e+02
-2 5507     4.553000e+02 3.419700e+02
-6 5507     3.738400e+02 5.428800e+02
-7 5507     4.125200e+02 5.341800e+02
-12 5507     4.596000e+02 5.492600e+02
-0 5508     6.870000e+02 3.641500e+02
-2 5508     5.360000e+02 3.711000e+02
-3 5508     3.881300e+02 4.652002e+01
-6 5508     4.670000e+02 5.660500e+02
-7 5508     4.888700e+02 5.474500e+02
-9 5508     3.142600e+02 4.144200e+02
-12 5508     5.483300e+02 5.752700e+02
-13 5508     8.644100e+02 1.272000e+02
-0 5509     -3.072100e+02 3.623300e+02
-2 5509     -5.864600e+02 8.981000e+01
-5 5509     9.164001e+01 -2.967500e+02
-7 5509     -5.152700e+02 3.905900e+02
-10 5509     -4.985000e+02 5.425800e+02
-0 5510     -3.938600e+02 3.614800e+02
-2 5510     -6.800700e+02 8.753003e+01
-15 5510     -6.129800e+02 5.811500e+02
-0 5511     7.694500e+02 3.611600e+02
-3 5511     4.633900e+02 7.322998e+01
-7 5511     5.673700e+02 5.570500e+02
-0 5512     -4.132500e+02 3.604300e+02
-7 5512     -6.249700e+02 3.759900e+02
-10 5512     -6.288500e+02 5.318100e+02
-11 5512     -2.213900e+02 -3.881300e+02
-13 5512     -1.401500e+02 3.152002e+01
-15 5512     -6.401300e+02 5.771800e+02
-0 5513     5.683700e+02 3.605800e+02
-3 5513     2.251700e+02 -4.837000e+01
-6 5513     2.842600e+02 5.137100e+02
-0 5514     4.871300e+02 3.595500e+02
-6 5514     1.801600e+02 4.861900e+02
-13 5514     6.466000e+02 9.445999e+01
-0 5515     6.884900e+02 3.590700e+02
-2 5515     5.383199e+02 3.673200e+02
-6 5515     4.693300e+02 5.603300e+02
-7 5515     4.902900e+02 5.420500e+02
-8 5515     5.043199e+02 2.721800e+02
-9 5515     3.159301e+02 4.105600e+02
-11 5515     7.852200e+02 -3.593200e+02
-12 5515     5.506801e+02 5.696400e+02
-0 5516     -3.020700e+02 3.581600e+02
-5 5516     9.682001e+01 -3.012400e+02
-7 5516     -5.095900e+02 3.867100e+02
-8 5516     -3.953900e+02 5.557001e+01
-0 5517     -2.890400e+02 3.581700e+02
-5 5517     1.089900e+02 -3.016800e+02
-14 5517     2.638000e+01 -3.918600e+02
-0 5518     9.429993e+00 3.578400e+02
-2 5518     -2.699100e+02 9.229999e+01
-5 5518     4.089100e+02 -3.032100e+02
-6 5518     -4.411500e+02 3.371600e+02
-7 5518     -1.994600e+02 4.229300e+02
-9 5518     -3.733300e+02 1.445800e+02
-10 5518     -1.203000e+02 5.666400e+02
-11 5518     1.619600e+02 -3.902400e+02
-14 5518     3.228900e+02 -3.875600e+02
-0 5519     -3.812800e+02 3.571100e+02
-2 5519     -6.662300e+02 8.128003e+01
-7 5519     -5.909300e+02 3.759400e+02
-0 5520     5.507100e+02 3.567100e+02
-2 5520     3.491100e+02 2.655600e+02
-3 5520     2.070699e+02 -5.959998e+01
-6 5520     2.629400e+02 5.033600e+02
-7 5520     3.431600e+02 5.078200e+02
-9 5520     1.541100e+02 3.171400e+02
-11 5520     6.614800e+02 -3.679300e+02
-0 5521     -3.905000e+02 3.567000e+02
-2 5521     -6.760000e+02 8.163000e+01
-5 5521     7.070007e+00 -3.010700e+02
-0 5522     -1.521600e+02 3.562500e+02
-7 5522     -3.580000e+02 4.024500e+02
-14 5522     1.620400e+02 -3.929600e+02
-0 5523     -3.783900e+02 3.561500e+02
-2 5523     -6.629100e+02 8.048999e+01
-7 5523     -5.878500e+02 3.752300e+02
-10 5523     -5.858500e+02 5.286000e+02
-14 5523     -6.334003e+01 -3.949900e+02
-15 5523     -5.903100e+02 5.750100e+02
-0 5524     -3.144100e+02 3.554700e+02
-7 5524     -5.216300e+02 3.824100e+02
-10 5524     -5.066000e+02 5.338200e+02
-12 5524     -6.320000e+02 2.849900e+02
-15 5524     -5.005000e+02 5.826800e+02
-0 5525     -1.943300e+02 3.531100e+02
-2 5525     -4.699900e+02 7.979999e+01
-7 5525     -3.992600e+02 3.938200e+02
-14 5525     1.199300e+02 -3.970500e+02
-0 5526     -1.943300e+02 3.531100e+02
-7 5526     -3.992600e+02 3.938200e+02
-14 5526     1.199300e+02 -3.970500e+02
-0 5527     6.296400e+02 3.525700e+02
-2 5527     4.790200e+02 3.386000e+02
-6 5527     4.007700e+02 5.357900e+02
-7 5527     4.335699e+02 5.257400e+02
-13 5527     8.100100e+02 1.105600e+02
-0 5528     6.326600e+02 3.527600e+02
-6 5528     4.045800e+02 5.369500e+02
-7 5528     4.364399e+02 5.266100e+02
-0 5529     6.266400e+02 3.517000e+02
-2 5529     4.760300e+02 3.363500e+02
-6 5529     3.972600e+02 5.338600e+02
-11 5529     7.273199e+02 -3.700700e+02
-12 5529     4.815601e+02 5.413100e+02
-0 5530     6.266400e+02 3.517000e+02
-2 5530     4.760300e+02 3.363500e+02
-7 5530     4.306600e+02 5.245400e+02
-0 5531     -3.210500e+02 3.504600e+02
-7 5531     -5.280500e+02 3.762500e+02
-12 5531     -6.393200e+02 2.779300e+02
-15 5531     -5.087100e+02 5.745400e+02
-0 5532     -2.853200e+02 3.507000e+02
-2 5532     -5.634300e+02 7.559998e+01
-7 5532     -4.915100e+02 3.806600e+02
-10 5532     -4.704000e+02 5.299300e+02
-15 5532     -4.593600e+02 5.796000e+02
-0 5533     -1.720100e+02 3.506900e+02
-2 5533     -4.467900e+02 7.778998e+01
-7 5533     -3.773600e+02 3.942800e+02
-14 5533     1.424700e+02 -3.993800e+02
-0 5534     -1.158800e+02 3.496400e+02
-6 5534     -5.832100e+02 2.974600e+02
-10 5534     -2.672000e+02 5.446400e+02
-0 5535     6.039700e+02 3.494100e+02
-2 5535     4.527600e+02 3.253700e+02
-3 5535     3.098700e+02 5.800171e-01
-6 5535     3.700100e+02 5.241500e+02
-7 5535     4.085699e+02 5.185100e+02
-9 5535     2.441100e+02 3.718600e+02
-10 5535     5.824000e+02 6.190200e+02
-11 5535     7.060900e+02 -3.729600e+02
-13 5535     7.853300e+02 1.050400e+02
-0 5536     -1.119100e+02 3.464700e+02
-2 5536     -3.863300e+02 7.428998e+01
-0 5537     5.414700e+02 3.457800e+02
-2 5537     3.414500e+02 2.511000e+02
-6 5537     2.533700e+02 4.879100e+02
-7 5537     3.350400e+02 4.956300e+02
-9 5537     1.478600e+02 3.043600e+02
-10 5537     5.071700e+02 6.084900e+02
-11 5537     6.552300e+02 -3.795500e+02
-0 5538     -5.457200e+02 3.455000e+02
-7 5538     -7.635800e+02 3.439900e+02
-10 5538     -7.930600e+02 5.029600e+02
-14 5538     -2.307500e+02 -4.053600e+02
-15 5538     -8.242000e+02 5.388400e+02
-0 5539     6.709500e+02 3.438300e+02
-2 5539     5.242600e+02 3.468200e+02
-6 5539     4.522200e+02 5.388700e+02
-7 5539     4.752600e+02 5.245800e+02
-8 5539     4.924900e+02 2.553300e+02
-12 5539     5.344600e+02 5.477100e+02
-0 5540     7.144200e+02 3.438700e+02
-2 5540     5.684399e+02 3.634100e+02
-3 5540     4.191700e+02 3.960999e+01
-6 5540     5.033500e+02 5.514700e+02
-7 5540     5.174500e+02 5.317800e+02
-8 5540     5.296801e+02 2.678000e+02
-12 5540     5.838700e+02 5.619800e+02
-0 5541     -5.474500e+02 3.435800e+02
-5 5541     -1.515700e+02 -3.114200e+02
-10 5541     -7.944500e+02 5.002000e+02
-0 5542     6.267300e+02 3.432100e+02
-2 5542     4.782900e+02 3.287500e+02
-3 5542     3.341300e+02 4.760010e+00
-0 5543     6.267300e+02 3.432100e+02
-2 5543     4.782900e+02 3.287500e+02
-3 5543     3.341300e+02 4.760010e+00
-6 5543     3.995400e+02 5.248400e+02
-7 5543     4.319900e+02 5.163800e+02
-8 5543     4.545400e+02 2.413100e+02
-9 5543     2.657300e+02 3.757500e+02
-10 5543     6.099700e+02 6.140700e+02
-11 5543     7.294301e+02 -3.776600e+02
-12 5543     4.839900e+02 5.321600e+02
-0 5544     1.876500e+02 3.427300e+02
-6 5544     -2.141500e+02 3.682900e+02
-10 5544     9.127002e+01 5.662700e+02
-0 5545     -5.173400e+02 3.421500e+02
-13 5545     -2.229300e+02 1.147998e+01
-15 5545     -7.836400e+02 5.378500e+02
-0 5546     -1.467800e+02 3.421100e+02
-2 5546     -4.215800e+02 6.766998e+01
-5 5546     2.500000e+02 -3.212200e+02
-7 5546     -3.507100e+02 3.881700e+02
-9 5546     -5.022800e+02 1.168900e+02
-0 5547     2.418400e+02 3.421400e+02
-11 5547     3.785300e+02 -3.974300e+02
-14 5547     5.795699e+02 -3.921300e+02
-0 5548     6.215300e+02 3.395000e+02
-2 5548     4.740500e+02 3.233200e+02
-6 5548     3.944300e+02 5.191600e+02
-7 5548     4.273500e+02 5.119800e+02
-9 5548     2.626000e+02 3.709500e+02
-10 5548     6.042600e+02 6.094100e+02
-0 5549     7.890200e+02 3.396000e+02
-2 5549     6.419100e+02 3.870000e+02
-0 5550     2.025200e+02 3.390300e+02
-5 5550     6.284500e+02 -3.183800e+02
-0 5551     -1.676000e+02 3.379600e+02
-7 5551     -3.710600e+02 3.813000e+02
-15 5551     -2.927000e+02 5.774700e+02
-0 5552     -8.788000e+02 3.375400e+02
-5 5552     -5.636000e+02 -3.157000e+02
-14 5552     -6.463000e+02 -4.216600e+02
-0 5553     6.074301e+02 3.371500e+02
-9 5553     2.501899e+02 3.637800e+02
-10 5553     5.870400e+02 6.046200e+02
-0 5554     5.816801e+02 3.364200e+02
-7 5554     3.879800e+02 5.017900e+02
-0 5555     6.363300e+02 3.360500e+02
-7 5555     4.422100e+02 5.110100e+02
-0 5556     6.363300e+02 3.360500e+02
-2 5556     4.902600e+02 3.258800e+02
-3 5556     3.459000e+02 2.460022e+00
-7 5556     4.422100e+02 5.110100e+02
-0 5557     -5.661300e+02 3.356800e+02
-5 5557     -1.720100e+02 -3.203900e+02
-0 5558     4.436400e+02 3.348100e+02
-2 5558     2.298500e+02 1.976700e+02
-7 5558     2.387000e+02 4.674900e+02
-0 5559     6.153300e+02 3.345700e+02
-6 5559     3.879500e+02 5.115500e+02
-8 5559     4.467800e+02 2.310500e+02
-9 5559     2.573000e+02 3.649100e+02
-10 5559     5.968400e+02 6.021800e+02
-0 5560     7.143199e+02 3.343200e+02
-7 5560     5.189700e+02 5.224200e+02
-0 5561     -1.631300e+02 3.338400e+02
-7 5561     -3.659800e+02 3.781700e+02
-11 5561     3.270020e+00 -4.146500e+02
-0 5562     6.436300e+02 3.335900e+02
-6 5562     4.222300e+02 5.188900e+02
-8 5562     4.712900e+02 2.384900e+02
-9 5562     2.829399e+02 3.742100e+02
-13 5562     8.258800e+02 9.637000e+01
-0 5563     -4.769000e+02 3.325900e+02
-7 5563     -6.880000e+02 3.375800e+02
-11 5563     -2.786200e+02 -4.116300e+02
-0 5564     -3.296100e+02 3.325700e+02
-2 5564     -6.090100e+02 5.089001e+01
-0 5565     6.370400e+02 3.326900e+02
-2 5565     4.923101e+02 3.234000e+02
-3 5565     3.477900e+02 -7.000732e-02
-7 5565     4.437200e+02 5.079600e+02
-13 5565     8.195900e+02 9.516000e+01
-0 5566     7.124600e+02 3.325600e+02
-2 5566     5.694800e+02 3.523800e+02
-6 5566     5.037500e+02 5.385500e+02
-7 5566     5.168900e+02 5.205500e+02
-8 5566     5.303300e+02 2.585700e+02
-9 5566     3.426801e+02 3.983500e+02
-10 5566     7.132100e+02 6.111700e+02
-0 5567     -3.824200e+02 3.315400e+02
-7 5567     -5.885400e+02 3.488600e+02
-10 5567     -5.864400e+02 4.988900e+02
-15 5567     -5.914500e+02 5.402100e+02
-0 5568     -5.296200e+02 3.295500e+02
-5 5568     -1.357000e+02 -3.271400e+02
-8 5568     -6.003900e+02 1.734000e+01
-10 5568     -7.692600e+02 4.833000e+02
-11 5568     -3.254500e+02 -4.133700e+02
-15 5568     -7.981700e+02 5.180500e+02
-0 5569     -5.107700e+02 3.290500e+02
-7 5569     -7.231000e+02 3.304700e+02
-0 5570     -4.003000e+02 3.289700e+02
-5 5570     -6.239990e+00 -3.316600e+02
-7 5570     -6.066000e+02 3.437600e+02
-8 5570     -4.819600e+02 2.123001e+01
-10 5570     -6.078400e+02 4.939400e+02
-11 5570     -2.118700e+02 -4.177200e+02
-12 5570     -7.303400e+02 2.370700e+02
-14 5570     -8.758002e+01 -4.247600e+02
-0 5571     -2.997300e+02 3.281900e+02
-2 5571     -5.781000e+02 4.581000e+01
-7 5571     -5.030000e+02 3.554000e+02
-15 5571     -4.750000e+02 5.462900e+02
-0 5572     -2.997300e+02 3.281900e+02
-7 5572     -5.030000e+02 3.554000e+02
-10 5572     -4.851600e+02 5.017500e+02
-15 5572     -4.750000e+02 5.462900e+02
-0 5573     -2.997300e+02 3.281900e+02
-2 5573     -5.781000e+02 4.581000e+01
-7 5573     -5.030000e+02 3.554000e+02
-15 5573     -4.750000e+02 5.462900e+02
-0 5574     -3.826600e+02 3.276700e+02
-7 5574     -5.881000e+02 3.447300e+02
-10 5574     -5.855300e+02 4.939500e+02
-0 5575     -5.054800e+02 3.269800e+02
-7 5575     -7.170200e+02 3.288400e+02
-14 5575     -1.932400e+02 -4.263900e+02
-15 5575     -7.635500e+02 5.178000e+02
-0 5576     -3.705100e+02 3.271000e+02
-5 5576     2.346997e+01 -3.346800e+02
-7 5576     -5.754700e+02 3.454500e+02
-8 5576     -4.551500e+02 2.050000e+01
-10 5576     -5.711700e+02 4.937700e+02
-11 5576     -1.851900e+02 -4.192400e+02
-0 5577     7.197700e+02 3.268900e+02
-2 5577     5.784399e+02 3.500900e+02
-3 5577     4.288400e+02 2.748999e+01
-6 5577     5.135500e+02 5.348400e+02
-7 5577     5.247400e+02 5.163100e+02
-8 5577     5.375200e+02 2.566000e+02
-9 5577     3.502000e+02 3.966600e+02
-10 5577     7.221200e+02 6.052400e+02
-12 5577     5.936899e+02 5.453300e+02
-0 5578     7.799600e+02 3.268100e+02
-7 5578     5.839500e+02 5.265900e+02
-10 5578     7.955601e+02 6.125100e+02
-0 5579     -4.548500e+02 3.261300e+02
-7 5579     -6.654700e+02 3.317900e+02
-12 5579     -8.001700e+02 2.199400e+02
-15 5579     -6.917500e+02 5.225800e+02
-0 5580     -4.574300e+02 3.239400e+02
-7 5580     -6.681400e+02 3.298100e+02
-10 5580     -6.783300e+02 4.831400e+02
-12 5580     -8.031800e+02 2.170300e+02
-15 5580     -6.948700e+02 5.197600e+02
-0 5581     2.042700e+02 3.239500e+02
-6 5581     -1.829100e+02 3.518500e+02
-0 5582     6.393600e+02 3.237200e+02
-2 5582     4.975000e+02 3.153400e+02
-6 5582     4.198900e+02 5.073700e+02
-7 5582     4.468700e+02 4.996400e+02
-9 5582     2.822400e+02 3.652800e+02
-0 5583     -3.139900e+02 3.232400e+02
-14 5583     -1.510010e+00 -4.313200e+02
-15 5583     -4.939600e+02 5.377600e+02
-0 5584     6.243800e+02 3.219000e+02
-2 5584     4.816600e+02 3.081100e+02
-7 5584     4.323800e+02 4.952900e+02
-10 5584     6.084200e+02 5.879900e+02
-11 5584     7.326400e+02 -3.983500e+02
-0 5585     6.243800e+02 3.219000e+02
-2 5585     4.816600e+02 3.081100e+02
-6 5585     4.021100e+02 5.009500e+02
-7 5585     4.323800e+02 4.952900e+02
-10 5585     6.084200e+02 5.879900e+02
-11 5585     7.326400e+02 -3.983500e+02
-12 5585     4.865300e+02 5.089400e+02
-0 5586     -4.591400e+02 3.213900e+02
-10 5586     -6.801500e+02 4.796900e+02
-12 5586     -8.044800e+02 2.133400e+02
-0 5587     4.978700e+02 3.212200e+02
-7 5587     2.949900e+02 4.639000e+02
-10 5587     4.581400e+02 5.731100e+02
-0 5588     -5.268400e+02 3.202300e+02
-7 5588     -7.389800e+02 3.186500e+02
-14 5588     -2.155300e+02 -4.335800e+02
-15 5588     -7.923500e+02 5.055500e+02
-0 5589     -5.711600e+02 3.197000e+02
-13 5589     -2.701100e+02 -1.058002e+01
-14 5589     -2.601100e+02 -4.337600e+02
-0 5590     -5.233900e+02 3.187000e+02
-5 5590     -1.314800e+02 -3.392300e+02
-7 5590     -7.354900e+02 3.175500e+02
-14 5590     -2.124400e+02 -4.351500e+02
-15 5590     -7.875600e+02 5.039300e+02
-0 5591     7.589800e+02 3.184400e+02
-3 5591     4.675400e+02 3.542999e+01
-6 5591     5.602600e+02 5.377200e+02
-7 5591     5.634600e+02 5.150200e+02
-8 5591     5.720601e+02 2.622100e+02
-9 5591     3.846200e+02 4.042300e+02
-10 5591     7.701899e+02 5.999500e+02
-12 5591     6.396400e+02 5.501600e+02
-0 5592     8.351300e+02 3.180300e+02
-3 5592     5.332300e+02 6.250000e+01
-12 5592     7.236200e+02 5.749200e+02
-0 5593     -5.031400e+02 3.169700e+02
-5 5593     -1.112400e+02 -3.416200e+02
-7 5593     -7.133900e+02 3.183200e+02
-8 5593     -5.754300e+02 5.570007e+00
-14 5593     -1.924800e+02 -4.372900e+02
-15 5593     -7.586800e+02 5.041800e+02
-0 5594     -4.555200e+02 3.169000e+02
-7 5594     -6.641000e+02 3.226900e+02
-10 5594     -6.746000e+02 4.744500e+02
-15 5594     -6.908800e+02 5.098700e+02
-0 5595     2.985999e+01 3.170000e+02
-14 5595     3.576100e+02 -4.300000e+02
-15 5595     -1.690997e+01 5.752400e+02
-0 5596     5.553300e+02 3.172300e+02
-2 5596     3.645100e+02 2.292800e+02
-6 5596     2.798500e+02 4.603900e+02
-9 5596     1.688600e+02 2.873000e+02
-10 5596     5.272100e+02 5.751300e+02
-12 5596     3.827600e+02 4.564300e+02
-0 5597     6.198900e+02 3.153200e+02
-6 5597     3.984700e+02 4.920000e+02
-7 5597     4.289500e+02 4.881000e+02
-9 5597     2.664200e+02 3.507600e+02
-0 5598     -5.103300e+02 3.136700e+02
-5 5598     -1.188500e+02 -3.451700e+02
-7 5598     -7.205000e+02 3.137800e+02
-10 5598     -7.424800e+02 4.658900e+02
-11 5598     -3.102800e+02 -4.283800e+02
-15 5598     -7.679500e+02 4.987000e+02
-0 5599     -5.103300e+02 3.136700e+02
-5 5599     -1.188500e+02 -3.451700e+02
-10 5599     -7.424800e+02 4.658900e+02
-15 5599     -7.679500e+02 4.987000e+02
-0 5600     8.358002e+01 3.108900e+02
-14 5600     4.179301e+02 -4.340400e+02
-15 5600     5.721002e+01 5.743400e+02
-0 5601     5.691500e+02 3.109200e+02
-2 5601     4.240800e+02 2.742100e+02
-6 5601     3.362800e+02 4.713000e+02
-7 5601     3.789000e+02 4.750500e+02
-9 5601     2.205400e+02 3.274300e+02
-10 5601     5.432600e+02 5.682600e+02
-11 5601     6.814100e+02 -4.122400e+02
-12 5601     4.241801e+02 4.775900e+02
-13 5601     7.545800e+02 6.840002e+01
-0 5602     -1.937600e+02 3.095900e+02
-2 5602     -4.666200e+02 2.460999e+01
-0 5603     -3.548000e+02 3.090100e+02
-7 5603     -5.566300e+02 3.285500e+02
-10 5603     -5.499700e+02 4.734900e+02
-0 5604     -2.100900e+02 3.067300e+02
-2 5604     -4.826200e+02 2.119000e+01
-7 5604     -4.091600e+02 3.439500e+02
-15 5604     -3.461900e+02 5.280200e+02
-0 5605     -2.100900e+02 3.067300e+02
-2 5605     -4.826200e+02 2.119000e+01
-5 5605     1.837900e+02 -3.602800e+02
-7 5605     -4.091600e+02 3.439500e+02
-13 5605     2.353998e+01 -7.950012e+00
-14 5605     1.027700e+02 -4.488800e+02
-0 5606     3.480200e+02 3.066600e+02
-6 5606     -8.020020e+00 3.715400e+02
-0 5607     -4.026200e+02 3.060000e+02
-7 5607     -6.054500e+02 3.193200e+02
-10 5607     -6.075000e+02 4.657600e+02
-15 5607     -6.148400e+02 5.020400e+02
-0 5608     6.218000e+02 3.060200e+02
-3 5608     3.399301e+02 -2.967999e+01
-8 5608     4.581801e+02 2.112000e+02
-9 5608     2.712200e+02 3.444200e+02
-10 5608     6.055900e+02 5.683500e+02
-11 5608     7.349500e+02 -4.140400e+02
-12 5608     4.870300e+02 4.904400e+02
-0 5609     3.653199e+02 3.046800e+02
-6 5609     1.321002e+01 3.743200e+02
-0 5610     -5.652700e+02 3.039200e+02
-10 5610     -8.105200e+02 4.497300e+02
-14 5610     -2.568300e+02 -4.510100e+02
-0 5611     4.669100e+02 3.042500e+02
-7 5611     2.662500e+02 4.419400e+02
-0 5612     -2.093500e+02 3.034800e+02
-5 5612     1.841100e+02 -3.636700e+02
-15 5612     -3.448400e+02 5.233800e+02
-0 5613     5.991700e+02 3.014000e+02
-6 5613     3.762400e+02 4.701300e+02
-0 5614     -5.364700e+02 2.998900e+02
-5 5614     -1.476300e+02 -3.594100e+02
-7 5614     -7.464500e+02 2.956500e+02
-10 5614     -7.733400e+02 4.472400e+02
-14 5614     -2.285700e+02 -4.559301e+02
-15 5614     -8.020200e+02 4.757800e+02
-0 5615     -2.195400e+02 2.992800e+02
-14 5615     9.078003e+01 -4.574700e+02
-0 5616     5.674200e+02 2.991700e+02
-2 5616     4.253400e+02 2.618800e+02
-3 5616     2.848800e+02 -6.017999e+01
-7 5616     3.787600e+02 4.631600e+02
-9 5616     2.214399e+02 3.169600e+02
-10 5616     5.417800e+02 5.538500e+02
-12 5616     4.252300e+02 4.635400e+02
-0 5617     6.046600e+02 2.990500e+02
-2 5617     4.664900e+02 2.783000e+02
-3 5617     3.246801e+02 -4.332001e+01
-6 5617     3.836700e+02 4.695000e+02
-9 5617     2.566700e+02 3.323500e+02
-10 5617     5.863000e+02 5.580000e+02
-0 5618     6.046600e+02 2.990500e+02
-2 5618     4.664900e+02 2.783000e+02
-3 5618     3.246801e+02 -4.332001e+01
-6 5618     3.836700e+02 4.695000e+02
-7 5618     4.160100e+02 4.697700e+02
-9 5618     2.566700e+02 3.323500e+02
-10 5618     5.863000e+02 5.580000e+02
-12 5618     4.692300e+02 4.769700e+02
-0 5619     7.788199e+02 2.986600e+02
-10 5619     7.952800e+02 5.783400e+02
-12 5619     6.668400e+02 5.363500e+02
-0 5620     -4.449300e+02 2.975900e+02
-7 5620     -6.508200e+02 3.032400e+02
-0 5621     5.898300e+02 2.963600e+02
-2 5621     4.512100e+02 2.694300e+02
-6 5621     3.658300e+02 4.611800e+02
-7 5621     4.016300e+02 4.644400e+02
-10 5621     5.689301e+02 5.529400e+02
-12 5621     4.521801e+02 4.680400e+02
-0 5622     6.761200e+02 2.966100e+02
-2 5622     5.422600e+02 3.055500e+02
-3 5622     3.961100e+02 -1.558002e+01
-6 5622     4.700400e+02 4.892000e+02
-7 5622     4.864600e+02 4.798900e+02
-9 5622     3.202400e+02 3.571000e+02
-10 5622     6.718199e+02 5.635300e+02
-11 5622     7.896801e+02 -4.220800e+02
-0 5623     6.517500e+02 2.948700e+02
-2 5623     5.177600e+02 2.938800e+02
-7 5623     4.628700e+02 4.739200e+02
-10 5623     6.427800e+02 5.585800e+02
-0 5624     -5.113800e+02 2.940500e+02
-5 5624     -1.231900e+02 -3.667900e+02
-7 5624     -7.186400e+02 2.923700e+02
-8 5624     -5.837800e+02 -1.964999e+01
-10 5624     -7.407400e+02 4.417400e+02
-14 5624     -2.039600e+02 -4.630500e+02
-15 5624     -7.657200e+02 4.707500e+02
-0 5625     7.032700e+02 2.919000e+02
-2 5625     5.711200e+02 3.120800e+02
-0 5626     -3.122800e+02 2.916900e+02
-12 5626     -6.299400e+02 1.865200e+02
-0 5627     -3.122800e+02 2.916900e+02
-2 5627     -5.526800e+02 1.070001e+01
-10 5627     -4.923900e+02 4.519200e+02
-15 5627     -4.932200e+02 4.896900e+02
-0 5628     3.838400e+02 2.915000e+02
-7 5628     1.797600e+02 4.112500e+02
-0 5629     -1.409000e+02 2.905100e+02
-7 5629     -3.354400e+02 3.375200e+02
-10 5629     -2.903300e+02 4.709600e+02
-0 5630     5.650400e+02 2.906200e+02
-2 5630     4.248900e+02 2.523800e+02
-6 5630     3.359800e+02 4.469400e+02
-7 5630     3.774700e+02 4.543600e+02
-12 5630     4.246600e+02 4.528700e+02
-13 5630     7.524000e+02 5.090997e+01
-0 5631     6.633900e+02 2.900300e+02
-2 5631     5.308700e+02 2.942600e+02
-6 5631     4.570200e+02 4.785500e+02
-7 5631     4.748500e+02 4.714300e+02
-11 5631     7.789100e+02 -4.288800e+02
-12 5631     5.392000e+02 4.877600e+02
-0 5632     6.633900e+02 2.900300e+02
-2 5632     5.308700e+02 2.942600e+02
-6 5632     4.570200e+02 4.785500e+02
-10 5632     6.564200e+02 5.540900e+02
-11 5632     7.789100e+02 -4.288800e+02
-12 5632     5.392000e+02 4.877600e+02
-0 5633     7.686899e+02 2.884500e+02
-6 5633     5.793300e+02 5.092600e+02
-0 5634     9.737000e+01 2.878200e+02
-6 5634     -2.844300e+02 2.818000e+02
-7 5634     -9.608002e+01 3.689100e+02
-11 5634     2.432800e+02 -4.537400e+02
-15 5634     7.866998e+01 5.445300e+02
-0 5635     7.546997e+01 2.875700e+02
-2 5635     -1.557000e+02 5.264001e+01
-5 5635     5.036100e+02 -3.771800e+02
-6 5635     -3.104000e+02 2.757500e+02
-13 5635     2.744399e+02 -5.619995e+00
-14 5635     4.174800e+02 -4.593300e+02
-15 5635     4.885999e+01 5.410500e+02
-0 5636     3.303998e+01 2.870300e+02
-7 5636     -1.594500e+02 3.592500e+02
-10 5636     -8.451001e+01 4.841600e+02
-11 5636     1.833900e+02 -4.561300e+02
-14 5636     3.707800e+02 -4.620800e+02
-15 5636     -9.380005e+00 5.339100e+02
-0 5637     4.808400e+02 2.865600e+02
-12 5637     3.007600e+02 3.963000e+02
-13 5637     6.474700e+02 3.114001e+01
-0 5638     6.689600e+02 2.861800e+02
-2 5638     5.375800e+02 2.927900e+02
-3 5638     3.921700e+02 -2.748999e+01
-6 5638     4.642500e+02 4.759900e+02
-7 5638     4.808101e+02 4.686000e+02
-9 5638     3.167900e+02 3.468600e+02
-10 5638     6.638400e+02 5.500300e+02
-11 5638     7.855300e+02 -4.326800e+02
-12 5638     5.461400e+02 4.854300e+02
-13 5638     8.562700e+02 6.001001e+01
-0 5639     -5.240700e+02 2.854700e+02
-7 5639     -7.307600e+02 2.817000e+02
-15 5639     -7.819200e+02 4.572700e+02
-0 5640     6.903998e+01 2.856700e+02
-6 5640     -3.168500e+02 2.717300e+02
-11 5640     2.169100e+02 -4.567900e+02
-0 5641     6.464600e+02 2.848900e+02
-7 5641     4.590000e+02 4.634900e+02
-0 5642     6.464600e+02 2.848900e+02
-2 5642     5.145500e+02 2.824100e+02
-6 5642     4.377200e+02 4.674200e+02
-7 5642     4.590000e+02 4.634900e+02
-8 5642     4.842000e+02 2.019100e+02
-0 5643     -5.482900e+02 2.845100e+02
-7 5643     -7.568100e+02 2.774400e+02
-15 5643     -8.158900e+02 4.527300e+02
-0 5644     8.922998e+01 2.822800e+02
-2 5644     -1.374600e+02 5.123999e+01
-6 5644     -2.903600e+02 2.736100e+02
-7 5644     -1.028200e+02 3.626900e+02
-11 5644     2.359200e+02 -4.595400e+02
-12 5644     -1.447400e+02 2.848000e+02
-0 5645     -5.805800e+02 2.787600e+02
-7 5645     -7.944200e+02 2.639600e+02
-13 5645     -2.906300e+02 -4.923999e+01
-0 5646     -5.128900e+02 2.780100e+02
-7 5646     -7.177100e+02 2.749600e+02
-8 5646     -5.849800e+02 -3.695001e+01
-10 5646     -7.398500e+02 4.218300e+02
-11 5646     -3.154700e+02 -4.607900e+02
-0 5647     -5.128900e+02 2.780100e+02
-7 5647     -7.177100e+02 2.749600e+02
-0 5648     6.776300e+02 2.745800e+02
-7 5648     4.909600e+02 4.594500e+02
-0 5649     -2.091300e+02 2.728200e+02
-14 5649     1.089100e+02 -4.858500e+02
-0 5650     6.336300e+02 2.722800e+02
-6 5650     4.256400e+02 4.496200e+02
-9 5650     2.892800e+02 3.220200e+02
-10 5650     6.226400e+02 5.294300e+02
-0 5651     6.336300e+02 2.722800e+02
-6 5651     4.256400e+02 4.496200e+02
-9 5651     2.892800e+02 3.220200e+02
-10 5651     6.226400e+02 5.294300e+02
-0 5652     3.326300e+02 2.713600e+02
-6 5652     -2.580017e+00 3.295300e+02
-0 5653     6.650699e+02 2.714500e+02
-6 5653     4.641400e+02 4.589400e+02
-0 5654     -3.854000e+02 2.709300e+02
-7 5654     -5.827600e+02 2.839100e+02
-11 5654     -2.010000e+02 -4.706200e+02
-13 5654     -1.204500e+02 -4.712000e+01
-14 5654     -7.871002e+01 -4.899800e+02
-15 5654     -5.843300e+02 4.548100e+02
-0 5655     -5.394700e+02 2.698600e+02
-5 5655     -1.554900e+02 -3.928600e+02
-7 5655     -7.449600e+02 2.628200e+02
-15 5655     -8.006900e+02 4.331900e+02
-0 5656     -5.394700e+02 2.698600e+02
-7 5656     -7.449600e+02 2.628200e+02
-15 5656     -8.006900e+02 4.331900e+02
-0 5657     3.400500e+02 2.702700e+02
-6 5657     7.070007e+00 3.306500e+02
-0 5658     6.464000e+02 2.698000e+02
-2 5658     5.187900e+02 2.683800e+02
-3 5658     3.753400e+02 -5.109998e+01
-6 5658     4.416300e+02 4.512800e+02
-7 5658     4.609800e+02 4.489700e+02
-8 5658     4.870500e+02 1.908600e+02
-9 5658     3.012800e+02 3.255000e+02
-10 5658     6.381400e+02 5.275900e+02
-11 5658     7.671600e+02 -4.500800e+02
-12 5658     5.245601e+02 4.602400e+02
-13 5658     8.362400e+02 4.351001e+01
-0 5659     -9.190002e+00 2.683300e+02
-6 5659     -4.010200e+02 2.296300e+02
-10 5659     -1.327600e+02 4.574900e+02
-15 5659     -6.534998e+01 5.020200e+02
-0 5660     -1.922500e+02 2.674800e+02
-11 5660     -2.544000e+01 -4.757400e+02
-14 5660     1.290200e+02 -4.911100e+02
-15 5660     -3.168100e+02 4.757000e+02
-0 5661     6.095400e+02 2.677300e+02
-2 5661     4.797700e+02 2.504200e+02
-6 5661     3.975500e+02 4.369000e+02
-7 5661     4.249399e+02 4.404900e+02
-8 5661     4.549900e+02 1.771800e+02
-9 5661     2.686200e+02 3.093000e+02
-10 5661     5.940300e+02 5.208800e+02
-13 5661     7.997400e+02 3.701001e+01
-0 5662     2.971200e+02 2.660100e+02
-6 5662     -3.864001e+01 3.140800e+02
-0 5663     -4.993600e+02 2.616600e+02
-7 5663     -7.008200e+02 2.591800e+02
-10 5663     -7.204300e+02 4.029400e+02
-14 5663     -1.965900e+02 -5.000000e+02
-0 5664     6.204399e+02 2.610800e+02
-2 5664     4.932200e+02 2.488100e+02
-3 5664     3.514000e+02 -7.062000e+01
-6 5664     4.124300e+02 4.330900e+02
-7 5664     4.365400e+02 4.358900e+02
-9 5664     2.802300e+02 3.081100e+02
-10 5664     6.074700e+02 5.142200e+02
-11 5664     7.433300e+02 -4.598100e+02
-12 5664     4.966100e+02 4.415700e+02
-13 5664     8.110300e+02 3.314001e+01
-15 5664     8.064800e+02 5.888400e+02
-0 5665     6.607400e+02 2.601200e+02
-8 5665     5.010601e+02 1.871900e+02
-0 5666     2.000400e+02 2.596400e+02
-6 5666     -1.445200e+02 2.796500e+02
-0 5667     6.059301e+02 2.592500e+02
-2 5667     4.780500e+02 2.408000e+02
-6 5667     3.950100e+02 4.266800e+02
-7 5667     4.223400e+02 4.317300e+02
-8 5667     4.530100e+02 1.692000e+02
-9 5667     2.673101e+02 3.006700e+02
-10 5667     5.903300e+02 5.104100e+02
-11 5667     7.291500e+02 -4.623100e+02
-13 5667     7.971801e+02 2.969000e+01
-15 5667     7.861801e+02 5.844000e+02
-0 5668     6.433700e+02 2.589700e+02
-2 5668     5.183101e+02 2.566700e+02
-3 5668     3.754399e+02 -6.217999e+01
-6 5668     4.406700e+02 4.383000e+02
-7 5668     4.594200e+02 4.381900e+02
-8 5668     4.858300e+02 1.811200e+02
-9 5668     3.010100e+02 3.155600e+02
-10 5668     6.347600e+02 5.146800e+02
-12 5668     5.235200e+02 4.469700e+02
-13 5668     8.346000e+02 3.389001e+01
-0 5669     -5.550000e+01 2.586800e+02
-5 5669     3.662800e+02 -4.114301e+02
-7 5669     -2.407800e+02 3.195700e+02
-14 5669     2.836801e+02 -4.960900e+02
-15 5669     -1.274500e+02 4.821200e+02
-0 5670     6.907300e+02 2.582700e+02
-2 5670     5.677800e+02 2.761200e+02
-6 5670     4.972800e+02 4.532300e+02
-8 5670     5.277400e+02 1.960000e+02
-9 5670     3.427100e+02 3.335800e+02
-10 5670     6.917300e+02 5.188600e+02
-12 5670     5.783700e+02 4.632500e+02
-0 5671     -7.068100e+02 2.567600e+02
-5 5671     -3.674600e+02 -4.049200e+02
-0 5672     -3.769000e+02 2.559000e+02
-5 5672     8.380005e+00 -4.140300e+02
-7 5672     -5.713500e+02 2.692700e+02
-14 5672     -7.164001e+01 -5.072800e+02
-0 5673     -1.984800e+02 2.560300e+02
-7 5673     -3.859700e+02 2.959100e+02
-10 5673     -3.542500e+02 4.239800e+02
-15 5673     -3.238100e+02 4.583900e+02
-0 5674     3.145699e+02 2.555100e+02
-6 5674     -1.202002e+01 3.077100e+02
-0 5675     5.835000e+02 2.553200e+02
-2 5675     4.544700e+02 2.268800e+02
-6 5675     3.682800e+02 4.145000e+02
-9 5675     2.475900e+02 2.880600e+02
-11 5675     7.078300e+02 -4.671400e+02
-12 5675     4.550000e+02 4.221800e+02
-13 5675     7.751300e+02 2.335999e+01
-15 5675     7.549500e+02 5.747800e+02
-0 5676     6.064100e+02 2.554900e+02
-2 5676     4.798000e+02 2.375800e+02
-3 5676     3.384100e+02 -8.157001e+01
-6 5676     3.959200e+02 4.217400e+02
-7 5676     4.233700e+02 4.279600e+02
-10 5676     5.913800e+02 5.062300e+02
-15 5676     7.874399e+02 5.788700e+02
-0 5677     6.183000e+02 2.545500e+02
-3 5677     3.511200e+02 -7.665002e+01
-15 5677     8.044399e+02 5.804400e+02
-0 5678     -3.739600e+02 2.539600e+02
-14 5678     -6.910999e+01 -5.096600e+02
-0 5679     -2.928998e+01 2.535000e+02
-14 5679     3.136600e+02 -5.011200e+02
-15 5679     -9.084003e+01 4.785000e+02
-0 5680     8.665300e+02 2.526300e+02
-2 5680     7.397500e+02 3.407700e+02
-0 5681     5.893700e+02 2.519500e+02
-2 5681     4.617500e+02 2.262500e+02
-6 5681     3.763700e+02 4.127500e+02
-10 5681     5.712500e+02 4.992700e+02
-0 5682     5.945800e+02 2.519800e+02
-2 5682     4.675400e+02 2.283400e+02
-6 5682     3.828000e+02 4.142300e+02
-7 5682     4.121400e+02 4.224300e+02
-8 5682     4.441600e+02 1.594600e+02
-10 5682     5.774100e+02 5.004000e+02
-12 5682     4.687700e+02 4.221500e+02
-15 5682     7.710100e+02 5.717300e+02
-0 5683     -2.108900e+02 2.507300e+02
-7 5683     -3.976400e+02 2.891600e+02
-0 5684     -1.982900e+02 2.502800e+02
-7 5684     -3.842500e+02 2.903200e+02
-10 5684     -3.532900e+02 4.167100e+02
-11 5684     -3.216998e+01 -4.922600e+02
-15 5684     -3.222700e+02 4.505900e+02
-0 5685     8.582900e+02 2.502400e+02
-3 5685     5.737800e+02 1.723999e+01
-7 5685     6.660400e+02 4.664800e+02
-9 5685     4.796200e+02 3.881200e+02
-12 5685     7.664399e+02 5.121200e+02
-0 5686     8.507800e+02 2.486600e+02
-3 5686     5.678800e+02 1.360999e+01
-7 5686     6.590900e+02 4.638700e+02
-9 5686     4.736100e+02 3.845200e+02
-0 5687     -5.554800e+02 2.486500e+02
-5 5687     -1.751800e+02 -4.160000e+02
-0 5688     7.564200e+02 2.479900e+02
-3 5688     4.866500e+02 -2.365002e+01
-8 5688     5.855400e+02 2.091600e+02
-12 5688     6.576400e+02 4.968500e+02
-0 5689     7.564200e+02 2.479900e+02
-3 5689     4.866500e+02 -2.365002e+01
-6 5689     5.755699e+02 4.629700e+02
-7 5689     5.704399e+02 4.472500e+02
-8 5689     5.855400e+02 2.091600e+02
-0 5690     8.481300e+02 2.478400e+02
-2 5690     7.233900e+02 3.286800e+02
-3 5690     5.660000e+02 1.119000e+01
-0 5691     6.035300e+02 2.472100e+02
-7 5691     4.215400e+02 4.194400e+02
-9 5691     2.675400e+02 2.902200e+02
-13 5691     7.961700e+02 1.890997e+01
-15 5691     7.838900e+02 5.669100e+02
-0 5692     8.759399e+02 2.469300e+02
-7 5692     6.826500e+02 4.662500e+02
-9 5692     4.936200e+02 3.912600e+02
-0 5693     5.821300e+02 2.464200e+02
-3 5693     3.159600e+02 -1.016500e+02
-6 5693     3.687300e+02 4.036300e+02
-12 5693     4.557400e+02 4.114600e+02
-15 5693     7.543199e+02 5.619700e+02
-0 5694     6.371100e+02 2.463200e+02
-3 5694     3.724301e+02 -7.647998e+01
-6 5694     4.363700e+02 4.223900e+02
-9 5694     2.991801e+02 3.027400e+02
-15 5694     8.317600e+02 5.705300e+02
-0 5695     6.343400e+02 2.450300e+02
-2 5695     5.122900e+02 2.395300e+02
-6 5695     4.332500e+02 4.202800e+02
-7 5695     4.524399e+02 4.229000e+02
-11 5695     7.614900e+02 -4.757200e+02
-0 5696     5.442800e+02 2.441300e+02
-2 5696     4.133500e+02 1.972600e+02
-3 5696     2.755900e+02 -1.217600e+02
-6 5696     3.216900e+02 3.882500e+02
-7 5696     3.629301e+02 4.055500e+02
-10 5696     5.184200e+02 4.858300e+02
-0 5697     6.500100e+02 2.428400e+02
-2 5697     5.297800e+02 2.442600e+02
-3 5697     3.865200e+02 -7.404999e+01
-6 5697     4.527300e+02 4.228000e+02
-7 5697     4.680500e+02 4.235300e+02
-9 5697     3.110000e+02 3.052700e+02
-10 5697     6.440601e+02 4.954400e+02
-12 5697     5.354000e+02 4.318300e+02
-15 5697     8.502300e+02 5.680400e+02
-0 5698     -4.114001e+01 2.415500e+02
-6 5698     -4.214300e+02 1.896900e+02
-0 5699     6.356600e+02 2.414700e+02
-6 5699     4.358400e+02 4.167900e+02
-7 5699     4.540300e+02 4.195600e+02
-8 5699     4.836000e+02 1.650900e+02
-10 5699     6.264100e+02 4.920000e+02
-11 5699     7.640699e+02 -4.788800e+02
-12 5699     5.191600e+02 4.256100e+02
-15 5699     8.296500e+02 5.631200e+02
-0 5700     4.740002e+01 2.400300e+02
-6 5700     -3.110800e+02 2.148500e+02
-0 5701     6.558800e+02 2.400300e+02
-7 5701     4.741000e+02 4.218100e+02
-10 5701     6.514399e+02 4.929000e+02
-0 5702     8.570200e+02 2.382100e+02
-2 5702     7.349500e+02 3.244600e+02
-0 5703     -1.427002e+01 2.375700e+02
-6 5703     -3.850400e+02 1.935200e+02
-0 5704     6.328800e+02 2.376400e+02
-9 5704     2.970100e+02 2.933300e+02
-0 5705     8.707300e+02 2.376700e+02
-2 5705     7.480200e+02 3.290200e+02
-3 5705     5.887800e+02 1.220001e+01
-7 5705     6.792900e+02 4.566500e+02
-12 5705     7.829800e+02 5.032800e+02
-0 5706     8.707300e+02 2.376700e+02
-3 5706     5.887800e+02 1.220001e+01
-0 5707     -6.968400e+02 2.370000e+02
-14 5707     -4.334000e+02 -5.297000e+02
-0 5708     -6.968400e+02 2.370000e+02
-14 5708     -4.334000e+02 -5.297000e+02
-0 5709     -4.860600e+02 2.350200e+02
-7 5709     -6.828500e+02 2.323700e+02
-10 5709     -6.997500e+02 3.719600e+02
-13 5709     -2.049000e+02 -8.307001e+01
-14 5709     -1.870000e+02 -5.305699e+02
-0 5710     -2.180000e+02 2.346700e+02
-7 5710     -4.010800e+02 2.725300e+02
-15 5710     -3.476700e+02 4.269600e+02
-0 5711     -5.909998e+01 2.340600e+02
-6 5711     -4.385000e+02 1.761300e+02
-7 5711     -2.387500e+02 2.957300e+02
-0 5712     5.438300e+02 2.324000e+02
-7 5712     3.639900e+02 3.936100e+02
-15 5712     7.021300e+02 5.364500e+02
-0 5713     6.630300e+02 2.317900e+02
-3 5713     4.030800e+02 -7.790002e+01
-15 5713     8.700100e+02 5.540400e+02
-0 5714     6.630300e+02 2.317900e+02
-2 5714     5.463800e+02 2.392700e+02
-3 5714     4.030800e+02 -7.790002e+01
-6 5714     4.711801e+02 4.153700e+02
-7 5714     4.824900e+02 4.151600e+02
-10 5714     6.607000e+02 4.839100e+02
-15 5714     8.700100e+02 5.540400e+02
-0 5715     6.072300e+02 2.310100e+02
-2 5715     4.874200e+02 2.137300e+02
-15 5715     7.911801e+02 5.440800e+02
-0 5716     5.220300e+02 2.306200e+02
-6 5716     2.593200e+02 3.500800e+02
-10 5716     4.936000e+02 4.677400e+02
-15 5716     6.746899e+02 5.289500e+02
-0 5717     6.314700e+02 2.297700e+02
-2 5717     5.130200e+02 2.232500e+02
-6 5717     4.336899e+02 4.021100e+02
-13 5717     8.262400e+02 7.250000e+00
-15 5717     8.253199e+02 5.458300e+02
-0 5718     -5.880005e+00 2.280800e+02
-5 5718     4.317300e+02 -4.439200e+02
-10 5718     -1.243500e+02 4.094800e+02
-11 5718     1.459700e+02 -5.135000e+02
-15 5718     -5.625000e+01 4.465100e+02
-0 5719     6.295601e+02 2.265600e+02
-3 5719     3.703500e+02 -9.796002e+01
-6 5719     4.319600e+02 3.979100e+02
-7 5719     4.499900e+02 4.043000e+02
-8 5719     4.809200e+02 1.509300e+02
-9 5719     2.964399e+02 2.838000e+02
-10 5719     6.206200e+02 4.739700e+02
-12 5719     5.154399e+02 4.063100e+02
-15 5719     8.233101e+02 5.413700e+02
-0 5720     6.295601e+02 2.265600e+02
-2 5720     5.115699e+02 2.192000e+02
-3 5720     3.703500e+02 -9.796002e+01
-6 5720     4.319600e+02 3.979100e+02
-10 5720     6.206200e+02 4.739700e+02
-13 5720     8.241801e+02 4.460022e+00
-0 5721     6.295601e+02 2.265600e+02
-2 5721     5.115699e+02 2.192000e+02
-3 5721     3.703500e+02 -9.796002e+01
-6 5721     4.319600e+02 3.979100e+02
-7 5721     4.499900e+02 4.043000e+02
-8 5721     4.809200e+02 1.509300e+02
-9 5721     2.964399e+02 2.838000e+02
-10 5721     6.206200e+02 4.739700e+02
-13 5721     8.241801e+02 4.460022e+00
-15 5721     8.233101e+02 5.413700e+02
-0 5722     4.998779e-02 2.244500e+02
-6 5722     -3.583000e+02 1.829800e+02
-10 5722     -1.162900e+02 4.062000e+02
-0 5723     -4.975700e+02 2.235900e+02
-7 5723     -6.932800e+02 2.185900e+02
-10 5723     -7.120000e+02 3.573000e+02
-11 5723     -3.068200e+02 -5.114900e+02
-0 5724     -1.133700e+02 2.224500e+02
-6 5724     -4.996500e+02 1.458700e+02
-0 5725     -6.840027e+00 2.220200e+02
-5 5725     4.323300e+02 -4.505300e+02
-6 5725     -3.652000e+02 1.783900e+02
-10 5725     -1.246400e+02 4.022800e+02
-13 5725     2.196200e+02 -6.578998e+01
-14 5725     3.478800e+02 -5.346000e+02
-15 5725     -5.673999e+01 4.380700e+02
-0 5726     -6.840027e+00 2.220200e+02
-6 5726     -3.652000e+02 1.783900e+02
-9 5726     -3.036100e+02 6.078003e+01
-10 5726     -1.246400e+02 4.022800e+02
-11 5726     1.448400e+02 -5.196400e+02
-14 5726     3.478800e+02 -5.346000e+02
-15 5726     -5.673999e+01 4.380700e+02
-0 5727     6.581200e+02 2.219600e+02
-2 5727     5.433600e+02 2.275600e+02
-7 5727     4.786100e+02 4.049100e+02
-10 5727     6.550000e+02 4.715600e+02
-0 5728     7.982800e+02 2.210800e+02
-7 5728     6.136500e+02 4.289900e+02
-10 5728     8.225800e+02 4.868900e+02
-0 5729     7.445000e+02 2.204000e+02
-2 5729     6.328101e+02 2.637900e+02
-6 5729     5.692600e+02 4.302600e+02
-7 5729     5.628800e+02 4.188300e+02
-8 5729     5.817300e+02 1.843100e+02
-0 5730     6.195699e+02 2.194300e+02
-2 5730     5.034100e+02 2.081100e+02
-3 5730     3.629200e+02 -1.086200e+02
-6 5730     4.218800e+02 3.866700e+02
-7 5730     4.411600e+02 3.954500e+02
-8 5730     4.736801e+02 1.417400e+02
-9 5730     2.894200e+02 2.741000e+02
-10 5730     6.093101e+02 4.641300e+02
-11 5730     7.536100e+02 -5.037600e+02
-12 5730     5.062600e+02 3.954900e+02
-15 5730     8.098800e+02 5.296100e+02
-0 5731     7.025400e+02 2.193600e+02
-2 5731     5.902500e+02 2.443700e+02
-6 5731     5.210200e+02 4.146900e+02
-0 5732     6.265699e+02 2.183100e+02
-2 5732     5.111899e+02 2.098800e+02
-6 5732     4.305900e+02 3.880300e+02
-7 5732     4.482200e+02 3.956600e+02
-9 5732     2.961700e+02 2.759000e+02
-10 5732     6.176100e+02 4.636500e+02
-12 5732     5.142900e+02 3.967100e+02
-13 5732     8.225699e+02 -3.099976e+00
-15 5732     8.197200e+02 5.292800e+02
-0 5733     -2.971002e+01 2.166300e+02
-6 5733     -3.891300e+02 1.653900e+02
-11 5733     1.222800e+02 -5.242400e+02
-0 5734     7.294100e+02 2.153000e+02
-2 5734     6.188300e+02 2.526300e+02
-3 5734     4.718500e+02 -6.287000e+01
-6 5734     5.531200e+02 4.202500e+02
-7 5734     5.489800e+02 4.114300e+02
-0 5735     6.033900e+02 2.112300e+02
-2 5735     4.877100e+02 1.925100e+02
-3 5735     3.480699e+02 -1.241000e+02
-6 5735     4.043800e+02 3.730000e+02
-7 5735     4.263500e+02 3.844400e+02
-8 5735     4.609000e+02 1.299500e+02
-12 5735     4.895699e+02 3.814100e+02
-15 5735     7.876400e+02 5.154400e+02
-0 5736     6.033900e+02 2.112300e+02
-7 5736     4.263500e+02 3.844400e+02
-0 5737     7.113000e+02 2.107600e+02
-2 5737     6.014800e+02 2.401700e+02
-3 5737     4.559301e+02 -7.506000e+01
-6 5737     5.334100e+02 4.088000e+02
-7 5737     5.319900e+02 4.036900e+02
-8 5737     5.557000e+02 1.657300e+02
-9 5737     3.723300e+02 3.043900e+02
-10 5737     7.190300e+02 4.644200e+02
-0 5738     3.584998e+01 2.095800e+02
-6 5738     -3.039000e+02 1.773600e+02
-0 5739     -2.439800e+02 2.078500e+02
-7 5739     -4.216600e+02 2.424600e+02
-0 5740     2.875000e+01 2.079700e+02
-6 5740     -3.117500e+02 1.732600e+02
-7 5740     -1.455300e+02 2.840200e+02
-10 5740     -8.121002e+01 3.893400e+02
-14 5740     3.924900e+02 -5.482600e+02
-0 5741     6.833500e+02 2.077000e+02
-3 5741     4.302400e+02 -9.045001e+01
-7 5741     5.051801e+02 3.955300e+02
-8 5741     5.320800e+02 1.548000e+02
-10 5741     6.861200e+02 4.573400e+02
-0 5742     -2.110200e+02 2.055600e+02
-14 5742     1.255800e+02 -5.597100e+02
-0 5743     5.884301e+02 2.051100e+02
-3 5743     3.342700e+02 -1.370200e+02
-6 5743     3.870200e+02 3.605100e+02
-7 5743     4.123199e+02 3.758500e+02
-8 5743     4.487400e+02 1.195600e+02
-9 5743     2.644800e+02 2.490500e+02
-12 5743     4.727800e+02 3.693500e+02
-15 5743     7.676000e+02 5.043600e+02
-0 5744     6.848400e+02 2.045200e+02
-6 5744     5.038400e+02 3.933100e+02
-0 5745     6.848400e+02 2.045200e+02
-6 5745     5.038400e+02 3.933100e+02
-8 5745     5.344301e+02 1.521100e+02
-0 5746     6.488500e+02 2.032300e+02
-2 5746     5.390400e+02 2.059100e+02
-8 5746     5.025200e+02 1.387300e+02
-12 5746     5.438700e+02 3.878100e+02
-0 5747     6.141801e+02 2.031900e+02
-3 5747     3.612700e+02 -1.268300e+02
-6 5747     4.195200e+02 3.671100e+02
-9 5747     2.883199e+02 2.584000e+02
-11 5747     7.518900e+02 -5.208600e+02
-15 5747     8.039800e+02 5.060700e+02
-0 5748     -1.634600e+02 2.025200e+02
-7 5748     -3.381300e+02 2.500900e+02
-10 5748     -3.070200e+02 3.636300e+02
-15 5748     -2.688900e+02 3.899800e+02
-0 5749     6.285699e+02 2.014800e+02
-2 5749     5.176801e+02 1.946300e+02
-15 5749     8.241500e+02 5.056700e+02
-0 5750     -1.777002e+01 2.006100e+02
-6 5750     -3.637100e+02 1.506300e+02
-10 5750     -1.349200e+02 3.757400e+02
-14 5750     3.429200e+02 -5.586899e+02
-0 5751     1.690002e+01 2.000300e+02
-6 5751     -3.203100e+02 1.608100e+02
-0 5752     -4.538300e+02 1.996000e+02
-7 5752     -6.400400e+02 2.013900e+02
-10 5752     -6.543000e+02 3.320500e+02
-14 5752     -1.473500e+02 -5.708800e+02
-0 5753     -1.672998e+01 1.978400e+02
-6 5753     -3.597400e+02 1.485200e+02
-10 5753     -1.336100e+02 3.728000e+02
-13 5753     2.172400e+02 -8.629999e+01
-14 5753     3.447000e+02 -5.614600e+02
-0 5754     5.522400e+02 1.980600e+02
-7 5754     3.769800e+02 3.620000e+02
-9 5754     2.323101e+02 2.270400e+02
-10 5754     5.302300e+02 4.314000e+02
-15 5754     7.172800e+02 4.885800e+02
-0 5755     -3.205300e+02 1.972600e+02
-7 5755     -4.986100e+02 2.205100e+02
-0 5756     -4.266998e+01 1.973500e+02
-14 5756     3.165100e+02 -5.631500e+02
-0 5757     -3.831000e+01 1.969800e+02
-7 5757     -2.099300e+02 2.640000e+02
-10 5757     -1.590700e+02 3.700200e+02
-12 5757     -2.535800e+02 1.713800e+02
-14 5757     3.209301e+02 -5.631700e+02
-0 5758     5.306801e+02 1.958100e+02
-2 5758     4.099301e+02 1.420700e+02
-3 5758     2.743300e+02 -1.757800e+02
-7 5758     3.557100e+02 3.557400e+02
-9 5758     2.118300e+02 2.149300e+02
-10 5758     5.060400e+02 4.267600e+02
-13 5758     7.278600e+02 -3.502002e+01
-15 5758     6.874100e+02 4.819000e+02
-0 5759     6.009800e+02 1.926400e+02
-3 5759     3.489700e+02 -1.435400e+02
-6 5759     4.059000e+02 3.514200e+02
-8 5759     4.627100e+02 1.139200e+02
-9 5759     2.774900e+02 2.442200e+02
-0 5760     5.907600e+02 1.913000e+02
-3 5760     3.410699e+02 -1.494500e+02
-6 5760     3.938200e+02 3.450600e+02
-7 5760     4.168500e+02 3.624900e+02
-8 5760     4.537400e+02 1.081100e+02
-9 5760     2.705100e+02 2.380200e+02
-10 5760     5.777500e+02 4.267500e+02
-12 5760     4.796899e+02 3.535900e+02
-15 5760     7.728000e+02 4.845400e+02
-0 5761     6.155000e+02 1.910900e+02
-7 5761     4.411500e+02 3.673200e+02
-12 5761     5.084200e+02 3.623900e+02
-0 5762     -6.078003e+01 1.903000e+02
-6 5762     -4.091300e+02 1.264400e+02
-0 5763     6.115000e+02 1.870900e+02
-6 5763     4.195000e+02 3.495900e+02
-7 5763     4.375699e+02 3.626200e+02
-9 5763     2.901300e+02 2.446400e+02
-10 5763     6.022800e+02 4.252900e+02
-0 5764     8.467400e+02 1.863700e+02
-7 5764     6.638600e+02 4.040000e+02
-0 5765     6.250800e+02 1.839700e+02
-3 5765     3.794301e+02 -1.385600e+02
-6 5765     4.379900e+02 3.500200e+02
-7 5765     4.511801e+02 3.621200e+02
-8 5765     4.860500e+02 1.151900e+02
-9 5765     3.036200e+02 2.476600e+02
-10 5765     6.182900e+02 4.227400e+02
-12 5765     5.217500e+02 3.593100e+02
-13 5765     8.250601e+02 -3.284998e+01
-15 5765     8.216000e+02 4.804500e+02
-0 5766     7.165800e+02 1.829900e+02
-6 5766     5.471100e+02 3.809300e+02
-7 5766     5.409900e+02 3.779700e+02
-0 5767     -1.023800e+02 1.815300e+02
-5 5767     3.369000e+02 -4.963300e+02
-14 5767     2.549900e+02 -5.828400e+02
-0 5768     -1.472800e+02 1.810200e+02
-5 5768     2.862500e+02 -4.975500e+02
-0 5769     6.085699e+02 1.807200e+02
-2 5769     5.021000e+02 1.649100e+02
-6 5769     4.187700e+02 3.402900e+02
-7 5769     4.359800e+02 3.562200e+02
-8 5769     4.721899e+02 1.067500e+02
-9 5769     2.895500e+02 2.376000e+02
-10 5769     5.991100e+02 4.172400e+02
-12 5769     5.031400e+02 3.491100e+02
-15 5769     7.987000e+02 4.731600e+02
-0 5770     2.063400e+02 1.785500e+02
-7 5770     7.753998e+01 3.140700e+02
-10 5770     1.281600e+02 3.709800e+02
-15 5770     2.273400e+02 4.105000e+02
-0 5771     8.379100e+02 1.785400e+02
-2 5771     7.343000e+02 2.631100e+02
-3 5771     5.804900e+02 -4.891998e+01
-7 5771     6.563700e+02 3.951300e+02
-0 5772     -2.613800e+02 1.778500e+02
-7 5772     -4.324400e+02 2.113100e+02
-10 5772     -4.189400e+02 3.253000e+02
-0 5773     7.109900e+02 1.780200e+02
-6 5773     5.423000e+02 3.742900e+02
-7 5773     5.363101e+02 3.727600e+02
-0 5774     9.656000e+01 1.769800e+02
-6 5774     -3.889001e+01 2.271300e+02
-10 5774     4.699707e-01 3.574100e+02
-15 5774     7.665002e+01 3.927800e+02
-0 5775     7.392200e+02 1.753200e+02
-7 5775     5.633900e+02 3.744500e+02
-10 5775     7.547800e+02 4.252400e+02
-0 5776     6.268500e+02 1.717800e+02
-3 5776     3.834800e+02 -1.494700e+02
-6 5776     4.427800e+02 3.374600e+02
-7 5776     4.545500e+02 3.510900e+02
-9 5776     3.075400e+02 2.383000e+02
-10 5776     6.209000e+02 4.091300e+02
-15 5776     8.251000e+02 4.635200e+02
-0 5777     7.130800e+02 1.697400e+02
-3 5777     4.705400e+02 -1.104100e+02
-6 5777     5.461000e+02 3.653200e+02
-8 5777     5.661100e+02 1.343100e+02
-9 5777     3.829800e+02 2.733600e+02
-10 5777     7.240400e+02 4.159700e+02
-12 5777     6.259200e+02 3.757400e+02
-0 5778     -1.413900e+02 1.685300e+02
-6 5778     -4.961100e+02 7.589001e+01
-0 5779     7.103000e+02 1.685300e+02
-2 5779     6.125601e+02 2.000700e+02
-6 5779     5.430699e+02 3.630100e+02
-7 5779     5.364600e+02 3.628600e+02
-8 5779     5.642200e+02 1.318900e+02
-10 5779     7.208600e+02 4.137800e+02
-12 5779     6.227300e+02 3.735700e+02
-0 5780     -8.200400e+02 1.674500e+02
-5 5780     -4.778900e+02 -4.994301e+02
-0 5781     6.270200e+02 1.674900e+02
-2 5781     5.254800e+02 1.608200e+02
-9 5781     3.095100e+02 2.349000e+02
-15 5781     8.259800e+02 4.572300e+02
-0 5782     7.390200e+02 1.676200e+02
-2 5782     6.416899e+02 2.119500e+02
-6 5782     5.761400e+02 3.718900e+02
-7 5782     5.644500e+02 3.673500e+02
-10 5782     7.549800e+02 4.160000e+02
-0 5783     6.936801e+02 1.665900e+02
-6 5783     5.236100e+02 3.549100e+02
-7 5783     5.203900e+02 3.581200e+02
-9 5783     3.676400e+02 2.620900e+02
-10 5783     7.002800e+02 4.100200e+02
-0 5784     6.090200e+02 1.653900e+02
-6 5784     4.232600e+02 3.235600e+02
-8 5784     4.750000e+02 9.392001e+01
-9 5784     2.929700e+02 2.243300e+02
-10 5784     6.011100e+02 3.991100e+02
-12 5784     5.067100e+02 3.322800e+02
-15 5784     8.009200e+02 4.515000e+02
-0 5785     6.090200e+02 1.653900e+02
-6 5785     4.232600e+02 3.235600e+02
-8 5785     4.750000e+02 9.392001e+01
-10 5785     6.011100e+02 3.991100e+02
-15 5785     8.009200e+02 4.515000e+02
-0 5786     7.229200e+02 1.649600e+02
-2 5786     6.265200e+02 2.025500e+02
-6 5786     5.583900e+02 3.639200e+02
-12 5786     6.377600e+02 3.747000e+02
-0 5787     -8.203900e+02 1.635600e+02
-5 5787     -4.756600e+02 -5.028199e+02
-0 5788     8.265900e+02 1.629900e+02
-7 5788     6.482200e+02 3.785000e+02
-0 5789     7.236899e+02 1.616900e+02
-2 5789     6.279800e+02 1.996100e+02
-3 5789     4.830300e+02 -1.127100e+02
-6 5789     5.602500e+02 3.604500e+02
-7 5789     5.500601e+02 3.590200e+02
-8 5789     5.767300e+02 1.315500e+02
-9 5789     3.950500e+02 2.710500e+02
-10 5789     7.369399e+02 4.075400e+02
-12 5789     6.397400e+02 3.710800e+02
-0 5790     5.599100e+02 1.606400e+02
-2 5790     4.537000e+02 1.212800e+02
-6 5790     3.638900e+02 2.999900e+02
-7 5790     3.906000e+02 3.271700e+02
-9 5790     2.501100e+02 1.989700e+02
-12 5790     4.477900e+02 3.088300e+02
-15 5790     7.333600e+02 4.371800e+02
-0 5791     -4.833700e+02 1.598600e+02
-7 5791     -6.624600e+02 1.577900e+02
-10 5791     -6.844200e+02 2.814000e+02
-0 5792     5.814600e+02 1.593400e+02
-6 5792     3.899500e+02 3.062600e+02
-9 5792     2.694900e+02 2.075400e+02
-12 5792     4.758600e+02 3.159200e+02
-13 5792     7.838900e+02 -6.048999e+01
-15 5792     7.627400e+02 4.382900e+02
-0 5793     6.441200e+02 1.594100e+02
-12 5793     5.489700e+02 3.398500e+02
-0 5794     8.485400e+02 1.588800e+02
-7 5794     6.689200e+02 3.783100e+02
-0 5795     6.487000e+02 1.584900e+02
-2 5795     5.515601e+02 1.622800e+02
-3 5795     4.112000e+02 -1.509300e+02
-6 5795     4.731300e+02 3.304600e+02
-7 5795     4.781899e+02 3.419700e+02
-8 5795     5.128700e+02 1.030300e+02
-9 5795     3.315000e+02 2.369200e+02
-10 5795     6.485100e+02 3.951800e+02
-12 5795     5.550300e+02 3.404500e+02
-15 5795     8.580300e+02 4.478600e+02
-0 5796     6.938500e+02 1.586200e+02
-7 5796     5.220800e+02 3.508600e+02
-0 5797     6.550699e+02 1.567800e+02
-6 5797     4.809900e+02 3.310300e+02
-10 5797     6.558400e+02 3.937600e+02
-0 5798     6.389800e+02 1.550000e+02
-7 5798     4.689301e+02 3.368900e+02
-10 5798     6.374800e+02 3.898600e+02
-15 5798     8.440900e+02 4.414400e+02
-0 5799     7.342300e+02 1.549400e+02
-2 5799     6.409399e+02 1.979700e+02
-3 5799     4.957900e+02 -1.135100e+02
-7 5799     5.616300e+02 3.545200e+02
-9 5799     4.065200e+02 2.702000e+02
-0 5800     6.587700e+02 1.541400e+02
-10 5800     6.607500e+02 3.911600e+02
-12 5800     5.685200e+02 3.384600e+02
-15 5800     8.724600e+02 4.435100e+02
-0 5801     6.552700e+02 1.537000e+02
-2 5801     5.595200e+02 1.607800e+02
-6 5801     4.817800e+02 3.277400e+02
-7 5801     4.848600e+02 3.389600e+02
-8 5801     5.194800e+02 1.018000e+02
-9 5801     3.377600e+02 2.360800e+02
-10 5801     6.560500e+02 3.906900e+02
-15 5801     8.672700e+02 4.425800e+02
-0 5802     6.552700e+02 1.537000e+02
-2 5802     5.595200e+02 1.607800e+02
-7 5802     4.848600e+02 3.389600e+02
-9 5802     3.377600e+02 2.360800e+02
-10 5802     6.560500e+02 3.906900e+02
-0 5803     7.150400e+02 1.522900e+02
-2 5803     6.218300e+02 1.865800e+02
-6 5803     5.526400e+02 3.473500e+02
-7 5803     5.431600e+02 3.483500e+02
-10 5803     7.273600e+02 3.953600e+02
-12 5803     6.324200e+02 3.579400e+02
-0 5804     7.282500e+02 1.527300e+02
-3 5804     4.904600e+02 -1.184200e+02
-9 5804     4.017800e+02 2.652000e+02
-10 5804     7.430100e+02 3.975500e+02
-0 5805     8.371801e+02 1.514800e+02
-7 5805     6.596600e+02 3.694700e+02
-0 5806     8.813900e+02 1.517600e+02
-2 5806     7.827900e+02 2.570800e+02
-7 5806     7.002600e+02 3.774800e+02
-0 5807     5.981801e+02 1.510800e+02
-2 5807     4.987300e+02 1.299600e+02
-3 5807     3.611200e+02 -1.839000e+02
-6 5807     4.135900e+02 3.033600e+02
-9 5807     2.876300e+02 2.080000e+02
-15 5807     7.879200e+02 4.293700e+02
-0 5808     7.490601e+02 1.512900e+02
-2 5808     6.582700e+02 2.032300e+02
-3 5808     5.122500e+02 -1.079700e+02
-7 5808     5.769000e+02 3.539900e+02
-9 5808     4.211700e+02 2.749100e+02
-0 5809     6.561400e+02 1.498200e+02
-3 5809     4.210500e+02 -1.555100e+02
-10 5809     6.579500e+02 3.860800e+02
-15 5809     8.694900e+02 4.367300e+02
-0 5810     6.645100e+02 1.499900e+02
-6 5810     4.939500e+02 3.271100e+02
-7 5810     4.945800e+02 3.367600e+02
-8 5810     5.293199e+02 1.019000e+02
-10 5810     6.675400e+02 3.870900e+02
-0 5811     6.891600e+02 1.489800e+02
-2 5811     5.964399e+02 1.720600e+02
-7 5811     5.186200e+02 3.405400e+02
-10 5811     6.962300e+02 3.883800e+02
-0 5812     6.516100e+02 1.484600e+02
-7 5812     4.815400e+02 3.329500e+02
-0 5813     7.181000e+02 1.484400e+02
-2 5813     6.261100e+02 1.843500e+02
-6 5813     5.576300e+02 3.440800e+02
-7 5813     5.471000e+02 3.450400e+02
-10 5813     7.310500e+02 3.914400e+02
-12 5813     6.372600e+02 3.545500e+02
-0 5814     7.422600e+02 1.482200e+02
-2 5814     6.504399e+02 1.951700e+02
-3 5814     5.048600e+02 -1.161100e+02
-6 5814     5.849500e+02 3.526300e+02
-7 5814     5.700300e+02 3.494600e+02
-8 5814     5.950800e+02 1.275100e+02
-9 5814     4.138600e+02 2.680600e+02
-10 5814     7.600800e+02 3.934200e+02
-12 5814     6.640200e+02 3.634700e+02
-0 5815     8.664600e+02 1.484200e+02
-2 5815     7.706000e+02 2.480800e+02
-0 5816     -1.102400e+02 1.459200e+02
-3 5816     -3.850700e+02 -4.165500e+02
-6 5816     -4.387700e+02 6.117999e+01
-0 5817     -1.102400e+02 1.459200e+02
-6 5817     -4.387700e+02 6.117999e+01
-0 5818     6.701000e+02 1.459500e+02
-6 5818     5.015900e+02 3.245400e+02
-7 5818     4.998000e+02 3.341900e+02
-0 5819     2.232100e+02 1.455000e+02
-7 5819     1.014100e+02 2.853700e+02
-10 5819     1.512000e+02 3.336000e+02
-15 5819     2.541801e+02 3.671400e+02
-0 5820     7.504900e+02 1.455100e+02
-2 5820     6.596899e+02 1.964100e+02
-3 5820     5.140900e+02 -1.145700e+02
-7 5820     5.788000e+02 3.482300e+02
-9 5820     4.220000e+02 2.693600e+02
-10 5820     7.697000e+02 3.913200e+02
-12 5820     6.743900e+02 3.636700e+02
-0 5821     1.458000e+02 1.450500e+02
-12 5821     8.332001e+01 2.596000e+02
-14 5821     6.654600e+02 -5.831000e+02
-15 5821     1.470100e+02 3.558500e+02
-0 5822     7.198900e+02 1.446000e+02
-2 5822     6.285900e+02 1.816300e+02
-6 5822     5.601200e+02 3.405900e+02
-7 5822     5.488400e+02 3.419200e+02
-8 5822     5.776801e+02 1.163200e+02
-9 5822     3.964900e+02 2.555500e+02
-10 5822     7.332600e+02 3.870400e+02
-12 5822     6.388400e+02 3.517500e+02
-0 5823     5.892100e+02 1.446600e+02
-2 5823     4.897300e+02 1.189900e+02
-0 5824     6.452400e+02 1.449100e+02
-2 5824     5.510100e+02 1.467500e+02
-6 5824     4.721801e+02 3.141000e+02
-7 5824     4.762600e+02 3.281000e+02
-12 5824     5.543900e+02 3.237500e+02
-13 5824     8.504000e+02 -6.410999e+01
-15 5824     8.546600e+02 4.283200e+02
-0 5825     8.579500e+02 1.445300e+02
-3 5825     6.087200e+02 -6.894000e+01
-7 5825     6.794800e+02 3.666300e+02
-9 5825     5.072400e+02 3.099200e+02
-12 5825     7.926801e+02 4.008100e+02
-0 5826     1.417900e+02 1.438400e+02
-2 5826     2.046801e+02 1.631400e+02
-3 5826     1.000600e+02 -1.545300e+02
-6 5826     4.091998e+01 2.114700e+02
-9 5826     5.717999e+01 2.234100e+02
-10 5826     5.653003e+01 3.234200e+02
-0 5827     8.213199e+02 1.436900e+02
-2 5827     7.294500e+02 2.254000e+02
-3 5827     5.782500e+02 -8.473999e+01
-9 5827     4.795400e+02 2.959100e+02
-0 5828     8.213199e+02 1.436900e+02
-2 5828     7.294500e+02 2.254000e+02
-3 5828     5.782500e+02 -8.473999e+01
-7 5828     6.459800e+02 3.594300e+02
-0 5829     5.340200e+02 1.423500e+02
-7 5829     3.662700e+02 3.050800e+02
-15 5829     6.982800e+02 4.078900e+02
-0 5830     -4.520400e+02 1.405000e+02
-7 5830     -6.243500e+02 1.436700e+02
-0 5831     8.489100e+02 1.402900e+02
-3 5831     6.026899e+02 -7.651001e+01
-7 5831     6.719700e+02 3.609300e+02
-0 5832     -4.542000e+02 1.386400e+02
-5 5832     -5.481000e+01 -5.418101e+02
-0 5833     6.759900e+02 1.383500e+02
-2 5833     5.857100e+02 1.554300e+02
-6 5833     5.108700e+02 3.184300e+02
-7 5833     5.074500e+02 3.277400e+02
-8 5833     5.412600e+02 9.659000e+01
-9 5833     3.609100e+02 2.323400e+02
-10 5833     6.820699e+02 3.746100e+02
-12 5833     5.916600e+02 3.286000e+02
-0 5834     8.695000e+02 1.385300e+02
-9 5834     5.174399e+02 3.101800e+02
-0 5835     -4.004999e+01 1.372700e+02
-5 5835     5.435500e+02 -5.210300e+02
-6 5835     -1.760000e+02 1.428200e+02
-7 5835     -1.602600e+02 2.355900e+02
-9 5835     -1.144200e+02 1.703900e+02
-10 5835     -1.547700e+02 2.970000e+02
-12 5835     -1.376000e+02 1.955400e+02
-13 5835     2.989600e+02 -1.146300e+02
-15 5835     -1.048200e+02 3.185800e+02
-0 5836     -8.840027e+00 1.377300e+02
-7 5836     -1.253900e+02 2.434200e+02
-10 5836     -1.184600e+02 3.006400e+02
-15 5836     -6.337000e+01 3.239500e+02
-0 5837     7.030500e+02 1.373300e+02
-6 5837     5.426700e+02 3.266800e+02
-12 5837     6.225100e+02 3.375500e+02
-0 5838     5.432800e+02 1.356200e+02
-7 5838     3.763900e+02 2.997400e+02
-0 5839     8.033700e+02 1.357100e+02
-2 5839     7.154200e+02 2.113000e+02
-3 5839     5.656700e+02 -9.851001e+01
-7 5839     6.300601e+02 3.487500e+02
-0 5840     7.045400e+02 1.344500e+02
-2 5840     6.163300e+02 1.645800e+02
-3 5840     4.736700e+02 -1.463200e+02
-6 5840     5.453500e+02 3.243100e+02
-0 5841     7.045400e+02 1.344500e+02
-3 5841     4.736700e+02 -1.463200e+02
-6 5841     5.453500e+02 3.243100e+02
-8 5841     5.666000e+02 1.031700e+02
-9 5841     3.861600e+02 2.410700e+02
-0 5842     7.075601e+02 1.342300e+02
-2 5842     6.194900e+02 1.657100e+02
-3 5842     4.765400e+02 -1.453400e+02
-6 5842     5.488400e+02 3.250300e+02
-10 5842     7.195100e+02 3.726400e+02
-12 5842     6.285200e+02 3.346500e+02
-0 5843     2.097998e+01 1.341400e+02
-5 5843     6.305601e+02 -5.200800e+02
-6 5843     -8.151999e+01 1.668000e+02
-10 5843     -8.325000e+01 2.996100e+02
-12 5843     -5.115002e+01 2.199200e+02
-15 5843     -2.288000e+01 3.231700e+02
-0 5844     8.018300e+02 1.333600e+02
-2 5844     7.150300e+02 2.085700e+02
-7 5844     6.291700e+02 3.462200e+02
-0 5845     5.422400e+02 1.329800e+02
-2 5845     4.396899e+02 8.328998e+01
-6 5845     3.475500e+02 2.615900e+02
-10 5845     5.247100e+02 3.540700e+02
-15 5845     7.107800e+02 3.956300e+02
-0 5846     7.231100e+02 1.322700e+02
-2 5846     6.359301e+02 1.711100e+02
-7 5846     5.537300e+02 3.305300e+02
-8 5846     5.831899e+02 1.079700e+02
-9 5846     4.025601e+02 2.474300e+02
-10 5846     7.382600e+02 3.725600e+02
-0 5847     -4.580000e+02 1.314800e+02
-7 5847     -6.280700e+02 1.338700e+02
-0 5848     7.696200e+02 1.316400e+02
-2 5848     6.826200e+02 1.919000e+02
-3 5848     5.357600e+02 -1.180400e+02
-7 5848     5.983000e+02 3.386400e+02
-9 5848     4.412400e+02 2.662800e+02
-10 5848     7.936700e+02 3.768000e+02
-12 5848     6.991600e+02 3.557400e+02
-0 5849     7.171801e+02 1.312500e+02
-7 5849     5.481600e+02 3.285300e+02
-10 5849     7.310601e+02 3.703900e+02
-0 5850     7.374900e+02 1.311700e+02
-2 5850     6.507700e+02 1.768200e+02
-6 5850     5.842400e+02 3.324800e+02
-7 5850     5.677500e+02 3.322900e+02
-10 5850     7.556600e+02 3.729000e+02
-12 5850     6.632000e+02 3.436500e+02
-0 5851     7.374900e+02 1.311700e+02
-7 5851     5.677500e+02 3.322900e+02
-10 5851     7.556600e+02 3.729000e+02
-0 5852     7.793400e+02 1.295500e+02
-2 5852     6.940601e+02 1.969200e+02
-9 5852     4.508300e+02 2.704900e+02
-10 5852     8.049500e+02 3.760800e+02
-0 5853     -3.369995e+00 1.295600e+02
-6 5853     -1.123300e+02 1.527000e+02
-12 5853     -8.154999e+01 2.060400e+02
-0 5854     7.082000e+02 1.289500e+02
-7 5854     5.396300e+02 3.245900e+02
-0 5855     7.082000e+02 1.289500e+02
-7 5855     5.396300e+02 3.245900e+02
-0 5856     7.738400e+02 1.290400e+02
-2 5856     6.877300e+02 1.913000e+02
-3 5856     5.405400e+02 -1.183400e+02
-9 5856     4.453000e+02 2.658800e+02
-10 5856     7.990800e+02 3.742200e+02
-12 5856     7.045900e+02 3.545000e+02
-0 5857     8.684301e+02 1.289500e+02
-2 5857     7.780601e+02 2.316300e+02
-12 5857     8.086801e+02 3.882000e+02
-0 5858     8.684301e+02 1.289500e+02
-2 5858     7.780601e+02 2.316300e+02
-12 5858     8.086801e+02 3.882000e+02
-0 5859     -4.389300e+02 1.286700e+02
-7 5859     -6.076400e+02 1.343700e+02
-0 5860     -5.127002e+01 1.284200e+02
-7 5860     -1.703500e+02 2.244500e+02
-8 5860     3.300000e+01 3.438000e+01
-9 5860     -1.226000e+02 1.581600e+02
-12 5860     -1.489900e+02 1.813900e+02
-15 5860     -1.186700e+02 3.049800e+02
-0 5861     -5.127002e+01 1.284200e+02
-7 5861     -1.703500e+02 2.244500e+02
-10 5861     -1.670000e+02 2.860800e+02
-12 5861     -1.489900e+02 1.813900e+02
-15 5861     -1.186700e+02 3.049800e+02
-0 5862     6.927300e+02 1.284700e+02
-6 5862     5.325100e+02 3.135200e+02
-0 5863     8.307200e+02 1.285800e+02
-7 5863     6.563700e+02 3.465600e+02
-0 5864     7.459900e+02 1.281800e+02
-2 5864     6.601700e+02 1.776600e+02
-3 5864     5.154399e+02 -1.321900e+02
-9 5864     4.231300e+02 2.535700e+02
-10 5864     7.656801e+02 3.703000e+02
-12 5864     6.734100e+02 3.434100e+02
-0 5865     7.109600e+02 1.276800e+02
-2 5865     6.246700e+02 1.610900e+02
-6 5865     5.544700e+02 3.193600e+02
-7 5865     5.426400e+02 3.240200e+02
-10 5865     7.239100e+02 3.657800e+02
-12 5865     6.338400e+02 3.297900e+02
-0 5866     -4.958800e+02 1.268700e+02
-7 5866     -6.679100e+02 1.228700e+02
-0 5867     8.055000e+02 1.260400e+02
-2 5867     7.201100e+02 2.024200e+02
-0 5868     -2.255600e+02 1.255100e+02
-6 5868     -5.743000e+02 -9.500122e-01
-7 5868     -3.826100e+02 1.664200e+02
-10 5868     -3.707000e+02 2.661100e+02
-15 5868     -3.436200e+02 2.756100e+02
-0 5869     8.520020e+00 1.239800e+02
-6 5869     -9.226999e+01 1.518000e+02
-7 5869     -1.032900e+02 2.343000e+02
-12 5869     -6.308002e+01 2.056100e+02
-15 5869     -3.873999e+01 3.073300e+02
-0 5870     8.520020e+00 1.239800e+02
-6 5870     -9.226999e+01 1.518000e+02
-7 5870     -1.032900e+02 2.343000e+02
-12 5870     -6.308002e+01 2.056100e+02
-15 5870     -3.873999e+01 3.073300e+02
-0 5871     7.973600e+02 1.240500e+02
-7 5871     6.261801e+02 3.366900e+02
-10 5871     8.272100e+02 3.709900e+02
-0 5872     8.594000e+02 1.231600e+02
-3 5872     6.175100e+02 -8.639001e+01
-7 5872     6.837600e+02 3.465800e+02
-9 5872     5.136700e+02 2.942500e+02
-0 5873     6.338300e+02 1.226600e+02
-2 5873     5.449700e+02 1.200700e+02
-7 5873     4.678700e+02 3.049100e+02
-9 5873     3.265601e+02 2.007100e+02
-10 5873     6.331500e+02 3.507200e+02
-13 5873     8.415400e+02 -8.496002e+01
-0 5874     7.778000e+02 1.222700e+02
-2 5874     6.936600e+02 1.864700e+02
-3 5874     5.464100e+02 -1.226500e+02
-7 5874     6.073900e+02 3.311200e+02
-10 5874     8.039900e+02 3.667900e+02
-12 5874     7.104600e+02 3.484700e+02
-0 5875     7.019900e+02 1.217300e+02
-6 5875     5.455500e+02 3.095900e+02
-7 5875     5.348600e+02 3.165500e+02
-12 5875     6.255100e+02 3.196200e+02
-0 5876     5.715200e+02 1.209600e+02
-3 5876     3.412600e+02 -2.269100e+02
-6 5876     3.873100e+02 2.587100e+02
-9 5876     2.697300e+02 1.701000e+02
-12 5876     4.736000e+02 2.680000e+02
-15 5876     7.530601e+02 3.830700e+02
-0 5877     6.533700e+02 1.205600e+02
-6 5877     4.887200e+02 2.905100e+02
-7 5877     4.875500e+02 3.063500e+02
-0 5878     8.223900e+02 1.200500e+02
-7 5878     6.500800e+02 3.369400e+02
-0 5879     8.313101e+02 1.199200e+02
-9 5879     4.935601e+02 2.808700e+02
-0 5880     8.313101e+02 1.199200e+02
-2 5880     7.460300e+02 2.067500e+02
-3 5880     5.946500e+02 -1.015200e+02
-7 5880     6.582700e+02 3.381500e+02
-9 5880     4.935601e+02 2.808700e+02
-0 5881     6.516300e+02 1.185000e+02
-2 5881     5.647500e+02 1.238400e+02
-3 5881     4.261600e+02 -1.873900e+02
-6 5881     4.867400e+02 2.875100e+02
-7 5881     4.859399e+02 3.040300e+02
-12 5881     5.683500e+02 2.973900e+02
-15 5881     8.663199e+02 3.920700e+02
-0 5882     6.516300e+02 1.185000e+02
-2 5882     5.647500e+02 1.238400e+02
-3 5882     4.261600e+02 -1.873900e+02
-6 5882     4.867400e+02 2.875100e+02
-7 5882     4.859399e+02 3.040300e+02
-12 5882     5.683500e+02 2.973900e+02
-15 5882     8.663199e+02 3.920700e+02
-0 5883     6.630000e+02 1.184100e+02
-2 5883     5.773400e+02 1.294100e+02
-6 5883     5.006200e+02 2.922300e+02
-7 5883     4.971801e+02 3.059200e+02
-9 5883     3.542900e+02 2.106700e+02
-10 5883     6.679600e+02 3.495500e+02
-12 5883     5.820601e+02 3.023100e+02
-13 5883     8.720000e+02 -8.484003e+01
-0 5884     7.396600e+02 1.177200e+02
-3 5884     5.126700e+02 -1.444100e+02
-7 5884     5.717000e+02 3.197400e+02
-0 5885     6.486801e+02 1.172900e+02
-2 5885     5.624600e+02 1.219400e+02
-6 5885     4.834399e+02 2.849600e+02
-7 5885     4.833800e+02 3.023300e+02
-9 5885     3.418199e+02 2.028200e+02
-10 5885     6.511100e+02 3.468300e+02
-12 5885     5.651300e+02 2.948400e+02
-13 5885     8.574000e+02 -8.759003e+01
-15 5885     8.621700e+02 3.897400e+02
-0 5886     2.493500e+02 1.162200e+02
-7 5886     1.350800e+02 2.634500e+02
-10 5886     1.836400e+02 3.014100e+02
-15 5886     2.922200e+02 3.307700e+02
-0 5887     6.921700e+02 1.157200e+02
-6 5887     5.355900e+02 2.992500e+02
-7 5887     5.259700e+02 3.089900e+02
-8 5887     5.599700e+02 8.334000e+01
-9 5887     3.802600e+02 2.206400e+02
-12 5887     6.153300e+02 3.091800e+02
-0 5888     8.228700e+02 1.157000e+02
-2 5888     7.391400e+02 1.996500e+02
-7 5888     6.508700e+02 3.327700e+02
-0 5889     7.839301e+02 1.147600e+02
-2 5889     7.016801e+02 1.820200e+02
-3 5889     5.544500e+02 -1.266400e+02
-7 5889     6.143500e+02 3.250600e+02
-9 5889     4.573500e+02 2.585500e+02
-10 5889     8.117500e+02 3.586700e+02
-12 5889     7.193700e+02 3.426400e+02
-0 5890     -8.106000e+01 1.143500e+02
-6 5890     -2.531000e+02 8.821002e+01
-15 5890     -1.546000e+02 2.809700e+02
-0 5891     7.105000e+02 1.146500e+02
-6 5891     5.571500e+02 3.052000e+02
-10 5891     7.242900e+02 3.504500e+02
-12 5891     6.368000e+02 3.155000e+02
-0 5892     8.776300e+02 1.128300e+02
-9 5892     5.307800e+02 2.937700e+02
-12 5892     8.231100e+02 3.742400e+02
-0 5893     7.203500e+02 1.118000e+02
-3 5893     4.966500e+02 -1.591200e+02
-9 5893     4.075400e+02 2.295800e+02
-10 5893     7.366600e+02 3.481400e+02
-0 5894     6.465800e+02 1.117600e+02
-2 5894     5.611600e+02 1.140100e+02
-3 5894     4.231000e+02 -1.965100e+02
-6 5894     4.821500e+02 2.776300e+02
-7 5894     4.820300e+02 2.962500e+02
-8 5894     5.208300e+02 6.362000e+01
-10 5894     6.487000e+02 3.398600e+02
-12 5894     5.640100e+02 2.875100e+02
-15 5894     8.598600e+02 3.816200e+02
-0 5895     7.899200e+02 1.115000e+02
-2 5895     7.083199e+02 1.837500e+02
-7 5895     6.202600e+02 3.230000e+02
-9 5895     4.631801e+02 2.587400e+02
-10 5895     8.191600e+02 3.551800e+02
-0 5896     7.463700e+02 1.107900e+02
-2 5896     6.659200e+02 1.617200e+02
-3 5896     5.212600e+02 -1.474500e+02
-7 5896     5.790400e+02 3.144000e+02
-9 5896     4.275500e+02 2.399700e+02
-10 5896     7.674000e+02 3.497800e+02
-12 5896     6.785800e+02 3.248100e+02
-0 5897     7.790300e+02 1.111800e+02
-3 5897     5.513199e+02 -1.322600e+02
-10 5897     8.060100e+02 3.535900e+02
-12 5897     7.148800e+02 3.367400e+02
-0 5898     7.790300e+02 1.111800e+02
-3 5898     5.513199e+02 -1.322600e+02
-10 5898     8.060100e+02 3.535900e+02
-12 5898     7.148800e+02 3.367400e+02
-0 5899     8.427000e+02 1.106900e+02
-3 5899     6.077000e+02 -1.037900e+02
-9 5899     5.047300e+02 2.790200e+02
-0 5900     -2.649400e+02 1.080000e+02
-5 5900     1.725400e+02 -5.783000e+02
-15 5900     -3.951700e+02 2.465500e+02
-0 5901     7.154700e+02 1.079200e+02
-6 5901     5.652400e+02 2.998500e+02
-10 5901     7.307300e+02 3.433400e+02
-0 5902     8.107200e+02 1.078700e+02
-7 5902     6.405900e+02 3.234500e+02
-0 5903     -1.180200e+02 1.073900e+02
-2 5903     -1.294200e+02 7.999878e-01
-5 5903     4.213700e+02 -5.638199e+02
-6 5903     -3.088300e+02 6.263000e+01
-7 5903     -2.452000e+02 1.844900e+02
-8 5903     -6.063000e+01 -3.185001e+01
-10 5903     -2.421900e+02 2.546900e+02
-12 5903     -2.495100e+02 1.147000e+02
-15 5903     -2.025500e+02 2.664800e+02
-0 5904     -1.180200e+02 1.073900e+02
-3 5904     -2.235200e+02 -3.190100e+02
-5 5904     4.213700e+02 -5.638199e+02
-6 5904     -3.088300e+02 6.263000e+01
-7 5904     -2.452000e+02 1.844900e+02
-8 5904     -6.063000e+01 -3.185001e+01
-10 5904     -2.421900e+02 2.546900e+02
-12 5904     -2.495100e+02 1.147000e+02
-15 5904     -2.025500e+02 2.664800e+02
-0 5905     6.671000e+02 1.069500e+02
-2 5905     5.851899e+02 1.199000e+02
-6 5905     5.078300e+02 2.814500e+02
-9 5905     3.603101e+02 2.029200e+02
-10 5905     6.733900e+02 3.367100e+02
-12 5905     5.889000e+02 2.914200e+02
-13 5905     8.776200e+02 -9.396002e+01
-0 5906     7.800500e+02 1.065600e+02
-7 5906     6.119600e+02 3.166200e+02
-10 5906     8.074900e+02 3.482400e+02
-12 5906     7.171100e+02 3.323900e+02
-0 5907     7.800500e+02 1.065600e+02
-7 5907     6.119600e+02 3.166200e+02
-10 5907     8.074900e+02 3.482400e+02
-12 5907     7.171100e+02 3.323900e+02
-0 5908     6.492400e+02 1.059300e+02
-3 5908     4.272900e+02 -1.999700e+02
-6 5908     4.869301e+02 2.727900e+02
-9 5908     3.446200e+02 1.937600e+02
-10 5908     6.526600e+02 3.334400e+02
-12 5908     5.686899e+02 2.825200e+02
-15 5908     8.640100e+02 3.740600e+02
-0 5909     6.394200e+02 1.056300e+02
-2 5909     5.554200e+02 1.040800e+02
-3 5909     4.178400e+02 -2.064900e+02
-0 5910     7.363400e+02 1.057500e+02
-2 5910     6.568300e+02 1.518900e+02
-0 5911     8.246500e+02 1.054600e+02
-2 5911     7.437800e+02 1.912100e+02
-3 5911     5.939399e+02 -1.155700e+02
-7 5911     6.538101e+02 3.237500e+02
-0 5912     7.753101e+02 1.047700e+02
-2 5912     6.963800e+02 1.688800e+02
-7 5912     6.075100e+02 3.140200e+02
-0 5913     7.302000e+02 1.046200e+02
-2 5913     6.510000e+02 1.479000e+02
-3 5913     5.080000e+02 -1.612400e+02
-7 5913     5.644600e+02 3.059000e+02
-9 5913     4.157800e+02 2.287500e+02
-10 5913     7.485500e+02 3.409200e+02
-0 5914     -2.930100e+02 1.020500e+02
-2 5914     -4.574500e+02 -1.615200e+02
-5 5914     1.414900e+02 -5.846300e+02
-7 5914     -4.469400e+02 1.328200e+02
-10 5914     -4.480700e+02 2.313600e+02
-15 5914     -4.332200e+02 2.344400e+02
-0 5915     3.815997e+01 1.021400e+02
-10 5915     -5.934003e+01 2.643200e+02
-12 5915     -1.534998e+01 1.946300e+02
-15 5915     3.919983e+00 2.818800e+02
-0 5916     3.815997e+01 1.021400e+02
-10 5916     -5.934003e+01 2.643200e+02
-12 5916     -1.534998e+01 1.946300e+02
-15 5916     3.919983e+00 2.818800e+02
-0 5917     6.391700e+02 1.014000e+02
-2 5917     5.566600e+02 1.006300e+02
-3 5917     4.189500e+02 -2.097500e+02
-6 5917     4.761500e+02 2.639300e+02
-7 5917     4.761801e+02 2.850900e+02
-8 5917     5.160900e+02 5.257999e+01
-9 5917     3.373400e+02 1.854400e+02
-10 5917     6.407800e+02 3.270800e+02
-13 5917     8.499399e+02 -1.030500e+02
-15 5917     8.506400e+02 3.661100e+02
-0 5918     -1.219600e+02 1.009600e+02
-6 5918     -3.085700e+02 5.414001e+01
-12 5918     -2.509400e+02 1.069000e+02
-0 5919     8.509000e+02 1.011800e+02
-2 5919     7.701600e+02 1.986100e+02
-3 5919     6.180400e+02 -1.083100e+02
-7 5919     6.788500e+02 3.243000e+02
-9 5919     5.131200e+02 2.744400e+02
-12 5919     7.967500e+02 3.519100e+02
-0 5920     6.489900e+02 9.754999e+01
-2 5920     5.681700e+02 1.012300e+02
-6 5920     4.891100e+02 2.628900e+02
-10 5920     6.525000e+02 3.232100e+02
-12 5920     5.702700e+02 2.725800e+02
-0 5921     8.804800e+02 9.773001e+01
-7 5921     7.068600e+02 3.267100e+02
-0 5922     -6.382001e+01 9.664999e+01
-3 5922     -9.146997e+01 -2.510300e+02
-5 5922     5.267500e+02 -5.658600e+02
-6 5922     -1.814500e+02 9.212000e+01
-7 5922     -1.753600e+02 1.926100e+02
-13 5922     2.863900e+02 -1.496700e+02
-15 5922     -1.314900e+02 2.599000e+02
-0 5923     7.407400e+02 9.675000e+01
-3 5923     5.199100e+02 -1.635000e+02
-0 5924     7.348900e+02 9.601999e+01
-7 5924     5.701000e+02 2.981800e+02
-10 5924     7.543000e+02 3.315000e+02
-0 5925     7.695800e+02 9.612000e+01
-3 5925     5.477400e+02 -1.498500e+02
-7 5925     6.029200e+02 3.048000e+02
-9 5925     4.508199e+02 2.379800e+02
-10 5925     7.963300e+02 3.346100e+02
-12 5925     7.085500e+02 3.170800e+02
-0 5926     8.414900e+02 9.439999e+01
-7 5926     6.711700e+02 3.166100e+02
-0 5927     4.487700e+02 9.357999e+01
-7 5927     2.859800e+02 2.384500e+02
-15 5927     5.864800e+02 3.255800e+02
-0 5928     7.448101e+02 9.370999e+01
-3 5928     5.253700e+02 -1.638300e+02
-7 5928     5.794700e+02 2.977500e+02
-9 5928     4.303500e+02 2.260400e+02
-10 5928     7.663400e+02 3.297400e+02
-0 5929     6.493500e+02 9.300000e+01
-2 5929     5.699700e+02 9.721002e+01
-3 5929     4.317300e+02 -2.127500e+02
-6 5929     4.908700e+02 2.586300e+02
-7 5929     4.872300e+02 2.788900e+02
-8 5929     5.273101e+02 4.939999e+01
-9 5929     3.485699e+02 1.832000e+02
-10 5929     6.534301e+02 3.180700e+02
-12 5929     5.723199e+02 2.683800e+02
-13 5929     8.613101e+02 -1.089900e+02
-15 5929     8.660400e+02 3.559700e+02
-0 5930     7.716000e+02 9.229001e+01
-7 5930     6.053000e+02 3.010500e+02
-10 5930     7.974900e+02 3.308200e+02
-12 5930     7.107100e+02 3.138700e+02
-0 5931     7.939399e+02 9.044000e+01
-2 5931     7.186801e+02 1.634600e+02
-9 5931     4.718500e+02 2.429600e+02
-10 5931     8.252100e+02 3.311500e+02
-0 5932     8.556400e+02 9.039001e+01
-2 5932     7.779200e+02 1.911000e+02
-0 5933     5.484301e+02 9.019000e+01
-6 5933     3.666200e+02 2.163000e+02
-7 5933     3.874600e+02 2.562800e+02
-12 5933     4.541500e+02 2.265900e+02
-13 5933     7.578700e+02 -1.254500e+02
-15 5933     7.244900e+02 3.367500e+02
-0 5934     6.549800e+02 9.017999e+01
-7 5934     4.931400e+02 2.772000e+02
-10 5934     6.602700e+02 3.154500e+02
-15 5934     8.740200e+02 3.527400e+02
-0 5935     6.549800e+02 9.017999e+01
-6 5935     4.980699e+02 2.573200e+02
-7 5935     4.931400e+02 2.772000e+02
-9 5935     3.541801e+02 1.831300e+02
-10 5935     6.602700e+02 3.154500e+02
-12 5935     5.791300e+02 2.672300e+02
-15 5935     8.740200e+02 3.527400e+02
-0 5936     1.070001e+01 8.919000e+01
-2 5936     1.122500e+02 1.027000e+02
-3 5936     1.942999e+01 -2.127000e+02
-5 5936     6.334301e+02 -5.696000e+02
-7 5936     -9.271997e+01 2.019800e+02
-12 5936     -4.375000e+01 1.719800e+02
-0 5937     1.070001e+01 8.919000e+01
-2 5937     1.122500e+02 1.027000e+02
-3 5937     1.942999e+01 -2.127000e+02
-6 5937     -6.660999e+01 1.168800e+02
-7 5937     -9.271997e+01 2.019800e+02
-10 5937     -9.052002e+01 2.459600e+02
-12 5937     -4.375000e+01 1.719800e+02
-15 5937     -3.165002e+01 2.602400e+02
-0 5938     -3.175000e+01 8.895999e+01
-2 5938     5.559003e+01 8.222998e+01
-3 5938     -3.473999e+01 -2.340100e+02
-4 5938     -2.102900e+02 -3.852800e+02
-5 5938     5.766899e+02 -5.722800e+02
-6 5938     -1.250200e+02 9.934003e+01
-7 5938     -1.379100e+02 1.929700e+02
-8 5938     8.015997e+01 2.422000e+01
-10 5938     -1.399200e+02 2.411100e+02
-12 5938     -9.965002e+01 1.546900e+02
-13 5938     3.237400e+02 -1.514700e+02
-15 5938     -8.846997e+01 2.537200e+02
-0 5939     6.008900e+02 8.842001e+01
-6 5939     4.329800e+02 2.343600e+02
-9 5939     3.056700e+02 1.564300e+02
-12 5939     5.168500e+02 2.443300e+02
-15 5939     7.984200e+02 3.417900e+02
-0 5940     7.450400e+02 8.831000e+01
-2 5940     6.708400e+02 1.393800e+02
-7 5940     5.807000e+02 2.927200e+02
-10 5940     7.673300e+02 3.230100e+02
-0 5941     7.450400e+02 8.831000e+01
-2 5941     6.708400e+02 1.393800e+02
-7 5941     5.807000e+02 2.927200e+02
-10 5941     7.673300e+02 3.230100e+02
-12 5941     6.827200e+02 2.998500e+02
-0 5942     7.400601e+02 8.629999e+01
-7 5942     5.763000e+02 2.899700e+02
-10 5942     7.624399e+02 3.205400e+02
-0 5943     6.178998e+01 8.612000e+01
-6 5943     -8.800049e-01 1.313800e+02
-7 5943     -3.896002e+01 2.081800e+02
-10 5943     -3.064001e+01 2.468900e+02
-13 5943     4.146300e+02 -1.442400e+02
-0 5944     6.763300e+02 8.632999e+01
-2 5944     6.008300e+02 1.045400e+02
-7 5944     5.147300e+02 2.779700e+02
-9 5944     3.744800e+02 1.897700e+02
-0 5945     5.406400e+02 8.529999e+01
-7 5945     3.802400e+02 2.499000e+02
-0 5946     -4.777100e+02 8.482001e+01
-7 5946     -6.385600e+02 8.487000e+01
-0 5947     4.552002e+01 8.501999e+01
-3 5947     6.226001e+01 -2.021200e+02
-5 5947     6.792900e+02 -5.724700e+02
-10 5947     -4.953003e+01 2.449500e+02
-13 5947     3.997700e+02 -1.462000e+02
-15 5947     1.577002e+01 2.598100e+02
-0 5948     6.052400e+02 8.512000e+01
-7 5948     4.448800e+02 2.623300e+02
-0 5949     7.612500e+02 8.372000e+01
-2 5949     6.884700e+02 1.415200e+02
-7 5949     5.966000e+02 2.911000e+02
-9 5949     4.467500e+02 2.243700e+02
-0 5950     2.262000e+02 8.284000e+01
-6 5950     1.689800e+02 1.743300e+02
-7 5950     1.215800e+02 2.296200e+02
-10 5950     1.608300e+02 2.608800e+02
-12 5950     2.029900e+02 2.205200e+02
-0 5951     6.776500e+02 8.307999e+01
-2 5951     6.029000e+02 1.015500e+02
-3 5951     4.639500e+02 -2.070900e+02
-6 5951     5.272500e+02 2.583700e+02
-7 5951     5.162800e+02 2.748700e+02
-8 5951     5.546400e+02 5.173999e+01
-9 5951     3.764200e+02 1.875800e+02
-10 5951     6.876300e+02 3.096900e+02
-12 5951     6.073900e+02 2.684900e+02
-0 5952     8.294000e+02 8.289001e+01
-2 5952     7.550900e+02 1.723300e+02
-7 5952     6.609900e+02 3.034500e+02
-12 5952     7.781700e+02 3.246500e+02
-0 5953     -1.278400e+02 8.157999e+01
-7 5953     -2.489000e+02 1.585800e+02
-0 5954     5.896002e+01 8.167001e+01
-2 5954     1.738100e+02 1.154900e+02
-0 5955     6.542999e+01 8.106000e+01
-3 5955     8.503003e+01 -1.986300e+02
-4 5955     -2.248900e+02 -4.635900e+02
-5 5955     7.049301e+02 -5.767800e+02
-6 5955     5.880005e+00 1.285500e+02
-7 5955     -3.441998e+01 2.042600e+02
-9 5955     3.700000e+01 1.881700e+02
-10 5955     -2.627002e+01 2.422400e+02
-13 5955     4.185000e+02 -1.476200e+02
-15 5955     4.282001e+01 2.568000e+02
-0 5956     7.169100e+02 8.112000e+01
-7 5956     5.544000e+02 2.801700e+02
-9 5956     4.109200e+02 2.033000e+02
-0 5957     7.480000e+02 8.042001e+01
-7 5957     5.847400e+02 2.857700e+02
-10 5957     7.715300e+02 3.139800e+02
-0 5958     7.480000e+02 8.042001e+01
-2 5958     6.761000e+02 1.338800e+02
-7 5958     5.847400e+02 2.857700e+02
-10 5958     7.715300e+02 3.139800e+02
-0 5959     5.984003e+01 7.884998e+01
-2 5959     1.767000e+02 1.133100e+02
-3 5959     8.133002e+01 -2.014900e+02
-4 5959     -2.255000e+02 -4.597500e+02
-5 5959     6.989301e+02 -5.787100e+02
-6 5959     8.300171e-01 1.249100e+02
-7 5959     -3.934998e+01 2.012000e+02
-8 5959     1.781000e+02 4.710999e+01
-9 5959     3.398999e+01 1.859300e+02
-12 5959     2.210999e+01 1.786600e+02
-0 5960     7.450000e+02 7.920999e+01
-2 5960     6.736000e+02 1.305400e+02
-3 5960     5.305900e+02 -1.770500e+02
-7 5960     5.819301e+02 2.839600e+02
-9 5960     4.349600e+02 2.149800e+02
-10 5960     7.679900e+02 3.123300e+02
-12 5960     6.851000e+02 2.902200e+02
-0 5961     7.450000e+02 7.920999e+01
-2 5961     6.736000e+02 1.305400e+02
-3 5961     5.305900e+02 -1.770500e+02
-7 5961     5.819301e+02 2.839600e+02
-9 5961     4.349600e+02 2.149800e+02
-10 5961     7.679900e+02 3.123300e+02
-12 5961     6.851000e+02 2.902200e+02
-0 5962     7.587600e+02 7.821002e+01
-7 5962     5.955400e+02 2.855200e+02
-10 5962     7.843800e+02 3.126100e+02
-12 5962     7.013000e+02 2.938700e+02
-0 5963     1.270000e+02 7.678998e+01
-8 5963     2.367700e+02 5.563000e+01
-0 5964     -5.358002e+01 7.621997e+01
-6 5964     -1.501500e+02 7.546997e+01
-8 5964     6.033002e+01 5.450012e+00
-15 5964     -1.158500e+02 2.334400e+02
-0 5965     4.340002e+01 7.587000e+01
-5 5965     6.794000e+02 -5.831400e+02
-6 5965     -1.782001e+01 1.153600e+02
-7 5965     -5.573999e+01 1.954900e+02
-15 5965     1.396997e+01 2.466900e+02
-0 5966     8.178800e+02 7.595001e+01
-2 5966     7.463800e+02 1.607200e+02
-3 5966     5.984200e+02 -1.452700e+02
-7 5966     6.513400e+02 2.944600e+02
-12 5966     7.671801e+02 3.130700e+02
-0 5967     -9.883002e+01 7.525000e+01
-5 5967     4.684500e+02 -5.954900e+02
-6 5967     -2.423000e+02 4.354999e+01
-7 5967     -2.136200e+02 1.606200e+02
-10 5967     -2.164100e+02 2.188100e+02
-12 5967     -2.002400e+02 9.814001e+01
-15 5967     -1.743900e+02 2.254300e+02
-0 5968     6.236801e+02 7.576001e+01
-2 5968     5.464301e+02 6.707001e+01
-12 5968     5.461200e+02 2.405000e+02
-15 5968     8.316600e+02 3.276600e+02
-0 5969     7.848000e+02 7.463000e+01
-7 5969     6.205601e+02 2.869800e+02
-0 5970     3.833002e+01 7.420001e+01
-6 5970     -2.331000e+01 1.120400e+02
-10 5970     -5.688000e+01 2.313500e+02
-12 5970     -3.000000e+00 1.664200e+02
-15 5970     7.500000e+00 2.435000e+02
-0 5971     7.611000e+02 7.354999e+01
-3 5971     5.480400e+02 -1.737700e+02
-7 5971     5.980601e+02 2.816900e+02
-10 5971     7.869600e+02 3.078700e+02
-12 5971     7.049800e+02 2.902600e+02
-0 5972     7.611000e+02 7.354999e+01
-3 5972     5.480400e+02 -1.737700e+02
-7 5972     5.980601e+02 2.816900e+02
-12 5972     7.049800e+02 2.902600e+02
-0 5973     5.192200e+02 7.313000e+01
-6 5973     3.335500e+02 1.838300e+02
-10 5973     5.025400e+02 2.813800e+02
-12 5973     4.231500e+02 1.946300e+02
-0 5974     7.745000e+02 7.215002e+01
-2 5974     7.048700e+02 1.371900e+02
-7 5974     6.109100e+02 2.827000e+02
-10 5974     8.029399e+02 3.072300e+02
-0 5975     2.192600e+02 7.134998e+01
-7 5975     1.178300e+02 2.180600e+02
-15 5975     2.554700e+02 2.651100e+02
-0 5976     -3.946900e+02 7.096002e+01
-7 5976     -5.463600e+02 8.539001e+01
-0 5977     -3.946900e+02 7.096002e+01
-7 5977     -5.463600e+02 8.539001e+01
-0 5978     8.464301e+02 7.088000e+01
-2 5978     7.750200e+02 1.688100e+02
-7 5978     6.786300e+02 2.948200e+02
-9 5978     5.180900e+02 2.497500e+02
-12 5978     7.998300e+02 3.178800e+02
-0 5979     -2.494900e+02 7.047998e+01
-7 5979     -3.939000e+02 1.096700e+02
-13 5979     4.447998e+01 -2.084300e+02
-15 5979     -3.692000e+02 1.974800e+02
-0 5980     5.938101e+02 6.996997e+01
-9 5980     3.034500e+02 1.373700e+02
-15 5980     7.904200e+02 3.153600e+02
-0 5981     7.015800e+02 7.010999e+01
-2 5981     6.309800e+02 1.000700e+02
-3 5981     4.920800e+02 -2.074400e+02
-6 5981     5.580800e+02 2.530800e+02
-9 5981     3.996600e+02 1.878400e+02
-10 5981     7.165500e+02 2.971200e+02
-0 5982     7.639000e+02 6.845001e+01
-2 5982     6.959200e+02 1.299200e+02
-3 5982     5.519399e+02 -1.766000e+02
-9 5982     4.534500e+02 2.139400e+02
-0 5983     7.680300e+02 6.845001e+01
-2 5983     7.000800e+02 1.311200e+02
-3 5983     5.557100e+02 -1.748800e+02
-7 5983     6.054399e+02 2.780000e+02
-9 5983     4.568700e+02 2.158000e+02
-10 5983     7.959600e+02 3.023000e+02
-12 5983     7.138600e+02 2.873700e+02
-0 5984     8.129100e+02 6.765002e+01
-2 5984     7.439700e+02 1.506300e+02
-12 5984     7.633400e+02 3.031400e+02
-0 5985     5.158199e+02 6.707001e+01
-6 5985     3.306200e+02 1.753400e+02
-7 5985     3.578900e+02 2.274300e+02
-10 5985     4.988500e+02 2.740800e+02
-12 5985     4.200900e+02 1.863100e+02
-13 5985     7.262600e+02 -1.511500e+02
-15 5985     6.815900e+02 2.996300e+02
-0 5986     1.367500e+02 6.644000e+01
-6 5986     9.304999e+01 1.355800e+02
-15 5986     1.427100e+02 2.469000e+02
-0 5987     5.127200e+02 6.608002e+01
-7 5987     3.551700e+02 2.257800e+02
-13 5987     7.234399e+02 -1.524500e+02
-15 5987     6.773300e+02 2.979300e+02
-0 5988     6.809800e+02 6.619000e+01
-10 5988     6.930601e+02 2.906500e+02
-12 5988     6.160400e+02 2.515200e+02
-0 5989     -2.902300e+02 6.537000e+01
-7 5989     -4.349900e+02 9.832001e+01
-0 5990     6.865601e+02 6.539001e+01
-2 5990     6.172600e+02 8.814001e+01
-6 5990     5.424100e+02 2.424600e+02
-7 5990     5.273800e+02 2.596800e+02
-8 5990     5.663600e+02 4.059000e+01
-9 5990     3.888800e+02 1.771500e+02
-10 5990     6.993600e+02 2.898000e+02
-12 5990     6.222600e+02 2.525600e+02
-0 5991     -2.590200e+02 6.492999e+01
-7 5991     -4.028500e+02 1.032500e+02
-15 5991     -3.822000e+02 1.891600e+02
-0 5992     -2.590200e+02 6.492999e+01
-7 5992     -4.028500e+02 1.032500e+02
-15 5992     -3.822000e+02 1.891600e+02
-0 5993     8.734301e+02 6.431000e+01
-2 5993     8.029700e+02 1.746900e+02
-0 5994     7.060000e+02 6.345001e+01
-2 5994     6.381700e+02 9.590002e+01
-6 5994     5.657600e+02 2.478900e+02
-7 5994     5.464500e+02 2.614100e+02
-9 5994     4.063199e+02 1.843900e+02
-10 5994     7.226100e+02 2.898800e+02
-12 5994     6.451600e+02 2.577500e+02
-0 5995     8.803199e+02 6.339001e+01
-2 5995     8.086400e+02 1.767400e+02
-0 5996     1.251200e+02 6.250000e+01
-6 5996     8.185999e+01 1.279900e+02
-10 5996     4.539001e+01 2.269200e+02
-15 5996     1.265300e+02 2.394300e+02
-0 5997     6.679100e+02 6.195001e+01
-6 5997     5.208300e+02 2.310700e+02
-0 5998     2.124301e+02 6.160999e+01
-6 5998     1.676500e+02 1.500700e+02
-7 5998     1.139100e+02 2.075900e+02
-10 5998     1.466300e+02 2.344500e+02
-12 5998     1.983000e+02 1.971900e+02
-15 5998     2.469700e+02 2.502300e+02
-0 5999     7.040300e+02 6.140997e+01
-2 5999     6.369500e+02 9.334998e+01
-3 5999     4.974301e+02 -2.141200e+02
-6 5999     5.649301e+02 2.443800e+02
-7 5999     5.447400e+02 2.592100e+02
-8 5999     5.833300e+02 4.344000e+01
-9 5999     4.055100e+02 1.817800e+02
-12 5999     6.433000e+02 2.548200e+02
-0 6000     8.588600e+02 6.085999e+01
-2 6000     7.899600e+02 1.652200e+02
-0 6001     -4.734600e+02 6.040997e+01
-2 6001     -6.642900e+02 -2.408700e+02
-13 6001     -1.562400e+02 -2.315700e+02
-15 6001     -6.758000e+02 1.528500e+02
-0 6002     1.022100e+02 5.903998e+01
-2 6002     2.322400e+02 1.082400e+02
-7 6002     7.500000e+00 1.893900e+02
-10 6002     1.917999e+01 2.201200e+02
-0 6003     6.798000e+02 5.829999e+01
-3 6003     4.743800e+02 -2.296600e+02
-7 6003     5.217200e+02 2.515000e+02
-9 6003     3.849399e+02 1.680900e+02
-10 6003     6.919399e+02 2.808800e+02
-0 6004     5.319700e+02 5.813000e+01
-6 6004     3.538500e+02 1.722000e+02
-7 6004     3.756700e+02 2.219200e+02
-13 6004     7.445900e+02 -1.568500e+02
-15 6004     7.055000e+02 2.896000e+02
-0 6005     5.476500e+02 5.741998e+01
-7 6005     3.916000e+02 2.241500e+02
-0 6006     7.834800e+02 5.683002e+01
-7 6006     6.217300e+02 2.698600e+02
-10 6006     8.148199e+02 2.905300e+02
-0 6007     7.834800e+02 5.683002e+01
-3 6007     5.739399e+02 -1.778200e+02
-7 6007     6.217300e+02 2.698600e+02
-9 6007     4.736400e+02 2.131700e+02
-10 6007     8.148199e+02 2.905300e+02
-12 6007     7.345900e+02 2.805900e+02
-0 6008     6.984301e+02 5.669000e+01
-6 6008     5.579000e+02 2.370400e+02
-7 6008     5.398199e+02 2.535100e+02
-10 6008     7.143500e+02 2.808900e+02
-0 6009     6.984301e+02 5.669000e+01
-7 6009     5.398199e+02 2.535100e+02
-10 6009     7.143500e+02 2.808900e+02
-0 6010     4.916600e+02 5.603003e+01
-7 6010     3.352400e+02 2.116300e+02
-10 6010     4.719100e+02 2.585400e+02
-13 6010     7.022100e+02 -1.645400e+02
-15 6010     6.494500e+02 2.806100e+02
-0 6011     -1.508300e+02 5.582001e+01
-7 6011     -2.657500e+02 1.303600e+02
-0 6012     7.865800e+02 5.440997e+01
-7 6012     6.250900e+02 2.682500e+02
-10 6012     8.199500e+02 2.875500e+02
-0 6013     6.668101e+02 5.383002e+01
-2 6013     6.000699e+02 6.646997e+01
-6 6013     5.222200e+02 2.219300e+02
-7 6013     5.096000e+02 2.445300e+02
-8 6013     5.514100e+02 2.335999e+01
-9 6013     3.747500e+02 1.582000e+02
-10 6013     6.767900e+02 2.742800e+02
-0 6014     6.668101e+02 5.383002e+01
-6 6014     5.222200e+02 2.219300e+02
-8 6014     5.514100e+02 2.335999e+01
-10 6014     6.767900e+02 2.742800e+02
-0 6015     6.668101e+02 5.383002e+01
-6 6015     5.222200e+02 2.219300e+02
-7 6015     5.096000e+02 2.445300e+02
-8 6015     5.514100e+02 2.335999e+01
-9 6015     3.747500e+02 1.582000e+02
-10 6015     6.767900e+02 2.742800e+02
-13 6015     8.845699e+02 -1.414200e+02
-0 6016     7.200900e+02 5.382001e+01
-6 6016     5.860100e+02 2.429700e+02
-8 6016     5.995000e+02 4.404001e+01
-9 6016     4.210500e+02 1.829600e+02
-12 6016     6.646500e+02 2.528500e+02
-0 6017     8.021997e+01 5.176001e+01
-12 6017     5.684003e+01 1.558600e+02
-0 6018     6.854800e+02 5.189001e+01
-6 6018     5.446400e+02 2.273600e+02
-8 6018     5.686400e+02 2.889001e+01
-9 6018     3.913199e+02 1.655200e+02
-12 6018     6.242200e+02 2.371500e+02
-0 6019     7.014301e+02 5.146997e+01
-2 6019     6.371899e+02 8.201001e+01
-3 6019     4.982600e+02 -2.246800e+02
-6 6019     5.636801e+02 2.329500e+02
-7 6019     5.436500e+02 2.490700e+02
-8 6019     5.825800e+02 3.447000e+01
-9 6019     4.053600e+02 1.725800e+02
-10 6019     7.181899e+02 2.750500e+02
-12 6019     6.426200e+02 2.427400e+02
-0 6020     7.014301e+02 5.146997e+01
-12 6020     6.426200e+02 2.427400e+02
-0 6021     7.014301e+02 5.146997e+01
-2 6021     6.371899e+02 8.201001e+01
-3 6021     4.982600e+02 -2.246800e+02
-6 6021     5.636801e+02 2.329500e+02
-7 6021     5.436500e+02 2.490700e+02
-9 6021     4.053600e+02 1.725800e+02
-10 6021     7.181899e+02 2.750500e+02
-0 6022     -2.480700e+02 5.071997e+01
-6 6022     -5.473400e+02 -9.357001e+01
-0 6023     7.934900e+02 4.951001e+01
-3 6023     5.862800e+02 -1.795300e+02
-7 6023     6.328700e+02 2.645100e+02
-0 6024     7.125699e+02 4.903998e+01
-2 6024     6.490800e+02 8.415997e+01
-3 6024     5.092400e+02 -2.220800e+02
-0 6025     8.064500e+02 4.915997e+01
-3 6025     5.974700e+02 -1.738900e+02
-0 6026     8.064500e+02 4.915997e+01
-3 6026     5.974700e+02 -1.738900e+02
-0 6027     7.989900e+02 4.844000e+01
-7 6027     6.373101e+02 2.649700e+02
-9 6027     4.879600e+02 2.136200e+02
-12 6027     7.548199e+02 2.781500e+02
-0 6028     7.267000e+02 4.656000e+01
-2 6028     6.647700e+02 8.954999e+01
-7 6028     5.687300e+02 2.492200e+02
-9 6028     4.285000e+02 1.799100e+02
-10 6028     7.481899e+02 2.724100e+02
-12 6028     6.726500e+02 2.473700e+02
-0 6029     8.043000e+02 4.441998e+01
-7 6029     6.429100e+02 2.619500e+02
-0 6030     7.098700e+02 4.326001e+01
-2 6030     6.432700e+02 7.597998e+01
-8 6030     5.889399e+02 2.945001e+01
-10 6030     7.291801e+02 2.666000e+02
-12 6030     6.525601e+02 2.354900e+02
-0 6031     7.098700e+02 4.326001e+01
-6 6031     5.752600e+02 2.265600e+02
-7 6031     5.528700e+02 2.428200e+02
-8 6031     5.916100e+02 2.979001e+01
-10 6031     7.291801e+02 2.666000e+02
-0 6032     6.808199e+02 4.284003e+01
-2 6032     6.177300e+02 6.228003e+01
-6 6032     5.422900e+02 2.151800e+02
-10 6032     6.950400e+02 2.629300e+02
-12 6032     6.218900e+02 2.250400e+02
-0 6033     6.808199e+02 4.284003e+01
-2 6033     6.177300e+02 6.228003e+01
-3 6033     4.811600e+02 -2.438700e+02
-6 6033     5.422900e+02 2.151800e+02
-7 6033     5.248600e+02 2.367600e+02
-8 6033     5.667800e+02 1.941000e+01
-9 6033     3.903000e+02 1.558600e+02
-10 6033     6.950400e+02 2.629300e+02
-12 6033     6.218900e+02 2.250400e+02
-0 6034     7.275200e+02 4.215997e+01
-2 6034     6.671700e+02 8.623999e+01
-9 6034     4.299500e+02 1.768600e+02
-0 6035     -6.478003e+01 4.150000e+01
-3 6035     -5.456000e+01 -2.933600e+02
-4 6035     -2.382600e+02 -3.583900e+02
-6 6035     -1.499000e+02 3.194000e+01
-7 6035     -1.640800e+02 1.391900e+02
-8 6035     5.966998e+01 -2.576999e+01
-9 6035     -8.329999e+01 1.029200e+02
-10 6035     -1.732200e+02 1.829400e+02
-12 6035     -1.270500e+02 8.853998e+01
-15 6035     -1.264800e+02 1.845100e+02
-0 6036     6.253003e+01 4.162000e+01
-2 6036     1.991300e+02 8.290002e+01
-6 6036     2.221997e+01 8.628998e+01
-12 6036     3.989001e+01 1.397100e+02
-15 6036     4.417999e+01 2.027600e+02
-0 6037     7.303600e+02 4.154999e+01
-7 6037     5.728900e+02 2.453600e+02
-9 6037     4.327200e+02 1.772600e+02
-10 6037     7.531100e+02 2.667700e+02
-12 6037     6.783000e+02 2.434600e+02
-0 6038     7.303600e+02 4.154999e+01
-3 6038     5.294800e+02 -2.186300e+02
-7 6038     5.728900e+02 2.453600e+02
-9 6038     4.327200e+02 1.772600e+02
-10 6038     7.531100e+02 2.667700e+02
-12 6038     6.783000e+02 2.434600e+02
-0 6039     8.040200e+02 4.166998e+01
-7 6039     6.430000e+02 2.593400e+02
-0 6040     5.208400e+02 4.053998e+01
-10 6040     5.071801e+02 2.440800e+02
-13 6040     7.345100e+02 -1.743500e+02
-15 6040     6.919500e+02 2.636400e+02
-0 6041     -4.791500e+02 3.996997e+01
-7 6041     -6.288600e+02 3.988000e+01
-15 6041     -6.812500e+02 1.242700e+02
-0 6042     -4.791500e+02 3.996997e+01
-7 6042     -6.288600e+02 3.988000e+01
-13 6042     -1.568700e+02 -2.493100e+02
-15 6042     -6.812500e+02 1.242700e+02
-0 6043     8.447998e+01 4.016998e+01
-7 6043     -6.289978e+00 1.680000e+02
-10 6043     1.699829e-01 1.964500e+02
-15 6043     7.397998e+01 2.036800e+02
-0 6044     8.447998e+01 4.016998e+01
-2 6044     2.234399e+02 8.764001e+01
-6 6044     4.770001e+01 9.213000e+01
-7 6044     -6.289978e+00 1.680000e+02
-10 6044     1.699829e-01 1.964500e+02
-15 6044     7.397998e+01 2.036800e+02
-0 6045     5.019800e+02 4.015002e+01
-7 6045     3.478101e+02 1.982400e+02
-10 6045     4.854000e+02 2.414100e+02
-13 6045     7.145300e+02 -1.775300e+02
-15 6045     6.658400e+02 2.600300e+02
-0 6046     7.121000e+02 4.012000e+01
-2 6046     6.513800e+02 7.613000e+01
-3 6046     5.121899e+02 -2.300500e+02
-6 6046     5.791500e+02 2.246500e+02
-7 6046     5.554700e+02 2.403400e+02
-8 6046     5.946100e+02 2.950000e+01
-9 6046     4.175601e+02 1.684400e+02
-12 6046     6.576100e+02 2.335600e+02
-0 6047     7.121000e+02 4.012000e+01
-3 6047     5.121899e+02 -2.300500e+02
-6 6047     5.791500e+02 2.246500e+02
-7 6047     5.554700e+02 2.403400e+02
-8 6047     5.946100e+02 2.950000e+01
-9 6047     4.175601e+02 1.684400e+02
-12 6047     6.576100e+02 2.335600e+02
-0 6048     -7.550000e+01 3.885999e+01
-3 6048     -7.083002e+01 -3.041100e+02
-7 6048     -1.755800e+02 1.337300e+02
-13 6048     2.864800e+02 -1.994800e+02
-15 6048     -1.404000e+02 1.787700e+02
-0 6049     5.342100e+02 3.873999e+01
-6 6049     3.622800e+02 1.507000e+02
-0 6050     6.594700e+02 3.865997e+01
-6 6050     5.179900e+02 2.017800e+02
-0 6051     7.340800e+02 3.863000e+01
-3 6051     5.340699e+02 -2.200600e+02
-9 6051     4.367700e+02 1.764400e+02
-10 6051     7.576600e+02 2.635200e+02
-12 6051     6.830800e+02 2.418700e+02
-0 6052     -4.284998e+01 3.632001e+01
-6 6052     -1.132000e+02 3.784003e+01
-7 6052     -1.386800e+02 1.389800e+02
-8 6052     8.832001e+01 -1.870999e+01
-15 6052     -9.650000e+01 1.807400e+02
-0 6053     6.575900e+02 3.671997e+01
-2 6053     5.942400e+02 4.412000e+01
-3 6053     4.589200e+02 -2.629500e+02
-6 6053     5.153300e+02 1.993300e+02
-7 6053     5.028700e+02 2.262000e+02
-8 6053     5.465699e+02 4.959991e+00
-9 6053     3.706000e+02 1.393300e+02
-10 6053     6.675900e+02 2.532000e+02
-0 6054     1.154800e+02 3.552002e+01
-2 6054     2.569301e+02 9.133002e+01
-10 6054     3.690997e+01 1.942900e+02
-12 6054     1.041000e+02 1.487600e+02
-15 6054     1.167700e+02 2.015900e+02
-0 6055     5.852200e+02 3.553003e+01
-6 6055     4.272400e+02 1.685500e+02
-10 6055     5.826700e+02 2.445300e+02
-12 6055     5.116400e+02 1.790900e+02
-13 6055     8.021600e+02 -1.694100e+02
-15 6055     7.824000e+02 2.660200e+02
-0 6056     1.080000e+02 3.529999e+01
-6 6056     7.677002e+01 9.401001e+01
-10 6056     2.801001e+01 1.933400e+02
-12 6056     9.594000e+01 1.460500e+02
-15 6056     1.065700e+02 2.000900e+02
-0 6057     8.129800e+02 3.509998e+01
-7 6057     6.521801e+02 2.548200e+02
-0 6058     8.129800e+02 3.509998e+01
-7 6058     6.521801e+02 2.548200e+02
-0 6059     5.224800e+02 3.467999e+01
-6 6059     3.475400e+02 1.416300e+02
-0 6060     6.536300e+02 3.472998e+01
-3 6060     4.551100e+02 -2.671500e+02
-6 6060     5.107600e+02 1.972200e+02
-8 6060     5.431400e+02 2.350006e+00
-9 6060     3.673900e+02 1.362100e+02
-12 6060     5.916100e+02 2.076000e+02
-0 6061     7.633800e+02 3.471002e+01
-3 6061     5.633400e+02 -2.082900e+02
-7 6061     6.054399e+02 2.450800e+02
-9 6061     4.622400e+02 1.871500e+02
-10 6061     7.933700e+02 2.622900e+02
-12 6061     7.183900e+02 2.486900e+02
-0 6062     8.089600e+02 3.458002e+01
-9 6062     4.988700e+02 2.061100e+02
-0 6063     7.439100e+02 3.414001e+01
-2 6063     6.860100e+02 8.559003e+01
-9 6063     4.458101e+02 1.778900e+02
-10 6063     7.699900e+02 2.590700e+02
-0 6064     8.786000e+02 3.403998e+01
-2 6064     8.167400e+02 1.491000e+02
-7 6064     7.134000e+02 2.660100e+02
-9 6064     5.523199e+02 2.349500e+02
-0 6065     6.749399e+02 3.363000e+01
-2 6065     6.137200e+02 5.010999e+01
-3 6065     4.771700e+02 -2.562700e+02
-6 6065     5.367500e+02 2.027800e+02
-7 6065     5.201200e+02 2.267200e+02
-9 6065     3.865699e+02 1.452200e+02
-10 6065     6.881801e+02 2.515500e+02
-12 6065     6.169900e+02 2.127000e+02
-0 6066     3.909973e+00 3.290997e+01
-3 6066     4.434003e+01 -2.594100e+02
-7 6066     -8.784998e+01 1.457600e+02
-10 6066     -9.315002e+01 1.802500e+02
-15 6066     -3.369000e+01 1.824200e+02
-0 6067     7.125000e+02 3.309998e+01
-2 6067     6.534500e+02 6.901001e+01
-6 6067     5.817900e+02 2.175300e+02
-7 6067     5.567500e+02 2.336500e+02
-8 6067     5.970300e+02 2.420001e+01
-10 6067     7.325500e+02 2.546600e+02
-12 6067     6.605601e+02 2.275100e+02
-0 6068     7.125000e+02 3.309998e+01
-3 6068     5.148300e+02 -2.362100e+02
-6 6068     5.817900e+02 2.175300e+02
-7 6068     5.567500e+02 2.336500e+02
-8 6068     5.970300e+02 2.420001e+01
-12 6068     6.605601e+02 2.275100e+02
-0 6069     7.212400e+02 3.302002e+01
-10 6069     7.428600e+02 2.557100e+02
-12 6069     6.699800e+02 2.302800e+02
-0 6070     1.228000e+02 3.271997e+01
-2 6070     2.649301e+02 9.007001e+01
-7 6070     3.347998e+01 1.674400e+02
-10 6070     4.597998e+01 1.916800e+02
-13 6070     4.794600e+02 -1.827500e+02
-15 6070     1.267400e+02 1.988800e+02
-0 6071     6.522100e+02 3.190997e+01
-2 6071     5.899399e+02 3.638000e+01
-3 6071     4.549100e+02 -2.704700e+02
-6 6071     5.100100e+02 1.918700e+02
-7 6071     4.981100e+02 2.206200e+02
-9 6071     3.666100e+02 1.328700e+02
-10 6071     6.618101e+02 2.467200e+02
-12 6071     5.905400e+02 2.017700e+02
-0 6072     7.531500e+02 3.206000e+01
-2 6072     6.961100e+02 8.841998e+01
-3 6072     5.546000e+02 -2.162600e+02
-10 6072     7.806400e+02 2.575600e+02
-12 6072     7.067700e+02 2.411900e+02
-0 6073     7.645200e+02 3.178998e+01
-2 6073     7.077800e+02 9.365002e+01
-0 6074     7.645200e+02 3.178998e+01
-2 6074     7.077800e+02 9.365002e+01
-3 6074     5.657800e+02 -2.103700e+02
-7 6074     6.068600e+02 2.425200e+02
-9 6074     4.642000e+02 1.848900e+02
-10 6074     7.944200e+02 2.593800e+02
-0 6075     7.300200e+02 3.144000e+01
-2 6075     6.724100e+02 7.632001e+01
-3 6075     5.328600e+02 -2.290200e+02
-7 6075     5.737800e+02 2.352700e+02
-10 6075     7.536300e+02 2.548600e+02
-0 6076     6.547000e+02 3.132001e+01
-2 6076     5.927900e+02 3.722998e+01
-6 6076     5.133700e+02 1.923100e+02
-12 6076     5.939000e+02 2.025100e+02
-15 6076     8.803400e+02 2.704300e+02
-0 6077     6.758700e+02 3.096002e+01
-3 6077     4.796100e+02 -2.580700e+02
-6 6077     5.392100e+02 1.998700e+02
-7 6077     5.218101e+02 2.243900e+02
-9 6077     3.885100e+02 1.432800e+02
-10 6077     6.892300e+02 2.489400e+02
-0 6078     7.559500e+02 2.984998e+01
-3 6078     5.584200e+02 -2.163600e+02
-7 6078     5.992800e+02 2.390500e+02
-9 6078     4.579700e+02 1.796900e+02
-12 6078     7.106700e+02 2.403400e+02
-0 6079     -8.295001e+01 2.935999e+01
-7 6079     -1.826000e+02 1.222500e+02
-15 6079     -1.487900e+02 1.655000e+02
-0 6080     5.141400e+02 2.952002e+01
-7 6080     3.614800e+02 1.907800e+02
-10 6080     5.001400e+02 2.298800e+02
-12 6080     4.278900e+02 1.439000e+02
-13 6080     7.286100e+02 -1.850100e+02
-15 6080     6.838600e+02 2.472200e+02
-0 6081     1.825000e+01 2.870001e+01
-2 6081     1.546200e+02 5.487000e+01
-6 6081     -2.566998e+01 5.522998e+01
-7 6081     -7.201001e+01 1.446700e+02
-10 6081     -7.544000e+01 1.762300e+02
-12 6081     -1.007001e+01 1.101400e+02
-15 6081     -1.406000e+01 1.789600e+02
-0 6082     1.728300e+02 2.777002e+01
-13 6082     5.215000e+02 -1.831700e+02
-0 6083     1.728300e+02 2.777002e+01
-13 6083     5.215000e+02 -1.831700e+02
-0 6084     5.233400e+02 2.716998e+01
-6 6084     3.506100e+02 1.323900e+02
-7 6084     3.709301e+02 1.895900e+02
-10 6084     5.110100e+02 2.286600e+02
-12 6084     4.392700e+02 1.441000e+02
-15 6084     6.970300e+02 2.454800e+02
-0 6085     -3.767400e+02 2.637000e+01
-7 6085     -5.163900e+02 4.498999e+01
-10 6085     -5.385400e+02 1.333000e+02
-0 6086     -3.767400e+02 2.637000e+01
-7 6086     -5.163900e+02 4.498999e+01
-10 6086     -5.385400e+02 1.333000e+02
-0 6087     7.390500e+02 2.606000e+01
-7 6087     5.833199e+02 2.319900e+02
-0 6088     7.390500e+02 2.606000e+01
-3 6088     5.431400e+02 -2.286700e+02
-0 6089     7.424500e+02 2.596002e+01
-7 6089     5.864900e+02 2.325700e+02
-10 6089     7.689200e+02 2.499600e+02
-0 6090     7.091000e+02 2.506000e+01
-2 6090     6.524600e+02 5.902002e+01
-3 6090     5.142300e+02 -2.462200e+02
-6 6090     5.797400e+02 2.067600e+02
-7 6090     5.544800e+02 2.252000e+02
-8 6090     5.955200e+02 1.532999e+01
-9 6090     4.188700e+02 1.537500e+02
-10 6090     7.291500e+02 2.450900e+02
-12 6090     6.584700e+02 2.163600e+02
-0 6091     -3.261900e+02 2.446997e+01
-7 6091     -4.627200e+02 5.179999e+01
-10 6091     -4.777800e+02 1.364300e+02
-15 6091     -4.687300e+02 1.241100e+02
-0 6092     -1.106400e+02 2.419000e+01
-2 6092     -3.451001e+01 -2.913000e+01
-6 6092     -2.167700e+02 -1.153998e+01
-7 6092     -2.120600e+02 1.113600e+02
-8 6092     6.489990e+00 -6.398999e+01
-10 6092     -2.246000e+02 1.580200e+02
-12 6092     -1.878400e+02 4.604999e+01
-13 6092     2.496000e+02 -2.163700e+02
-0 6093     -5.421997e+01 2.435999e+01
-2 6093     5.809003e+01 1.354999e+01
-3 6093     -2.945001e+01 -3.002800e+02
-8 6093     7.903998e+01 -3.295001e+01
-9 6093     -6.198999e+01 9.735999e+01
-10 6093     -1.591700e+02 1.638200e+02
-15 6093     -1.104800e+02 1.626700e+02
-0 6094     7.064100e+02 2.429999e+01
-12 6094     6.556300e+02 2.142800e+02
-0 6095     7.064100e+02 2.429999e+01
-7 6095     5.509800e+02 2.244500e+02
-12 6095     6.556300e+02 2.142800e+02
-0 6096     8.313199e+02 2.465997e+01
-2 6096     7.749100e+02 1.188200e+02
-0 6097     8.165997e+01 2.396997e+01
-7 6097     -6.239990e+00 1.521100e+02
-0 6098     6.661700e+02 2.150000e+01
-8 6098     5.574399e+02 -3.950012e+00
-0 6099     1.003100e+02 2.044000e+01
-2 6099     2.489301e+02 7.395001e+01
-7 6099     1.316998e+01 1.516000e+02
-10 6099     2.073999e+01 1.750000e+02
-12 6099     9.223999e+01 1.276400e+02
-15 6099     9.801001e+01 1.788000e+02
-0 6100     7.007500e+02 2.059003e+01
-6 6100     5.709700e+02 1.991400e+02
-7 6100     5.470699e+02 2.193100e+02
-8 6100     5.887400e+02 8.329987e+00
-10 6100     7.194900e+02 2.390100e+02
-12 6100     6.501100e+02 2.092800e+02
-0 6101     7.085500e+02 2.072998e+01
-2 6101     6.531400e+02 5.440002e+01
-3 6101     5.155000e+02 -2.502100e+02
-6 6101     5.800400e+02 2.021000e+02
-8 6101     5.953900e+02 1.154001e+01
-10 6101     7.288600e+02 2.400500e+02
-12 6101     6.584100e+02 2.116300e+02
-0 6102     8.186801e+02 2.059998e+01
-2 6102     7.640400e+02 1.087100e+02
-3 6102     6.183900e+02 -1.938700e+02
-7 6102     6.595601e+02 2.421600e+02
-9 6102     5.103199e+02 1.993500e+02
-12 6102     7.831200e+02 2.541600e+02
-0 6103     6.526899e+02 2.010999e+01
-2 6103     5.938800e+02 2.484998e+01
-3 6103     4.592500e+02 -2.811300e+02
-7 6103     5.002100e+02 2.091100e+02
-9 6103     3.706500e+02 1.233000e+02
-13 6103     8.739700e+02 -1.739500e+02
-15 6103     8.788400e+02 2.546800e+02
-0 6104     -1.049800e+02 1.881000e+01
-6 6104     -2.051500e+02 -1.485999e+01
-7 6104     -2.047300e+02 1.067500e+02
-10 6104     -2.171300e+02 1.520200e+02
-12 6104     -1.779600e+02 4.220001e+01
-0 6105     7.298199e+02 1.821997e+01
-2 6105     6.761100e+02 6.307001e+01
-7 6105     5.753700e+02 2.227200e+02
-9 6105     4.383500e+02 1.580300e+02
-10 6105     7.542700e+02 2.394900e+02
-0 6106     7.505300e+02 1.866998e+01
-2 6106     6.971801e+02 7.404999e+01
-7 6106     5.953500e+02 2.274700e+02
-10 6106     7.786000e+02 2.419400e+02
-12 6106     7.070500e+02 2.260900e+02
-0 6107     1.631100e+02 1.803998e+01
-12 6107     1.635600e+02 1.410500e+02
-0 6108     7.420900e+02 1.797998e+01
-2 6108     6.880699e+02 6.940997e+01
-7 6108     5.872800e+02 2.250100e+02
-12 6108     6.985699e+02 2.219800e+02
-0 6109     6.990400e+02 1.654999e+01
-3 6109     5.077400e+02 -2.595900e+02
-6 6109     5.701500e+02 1.938500e+02
-7 6109     5.459000e+02 2.151500e+02
-9 6109     4.122100e+02 1.425400e+02
-10 6109     7.178400e+02 2.344200e+02
-0 6110     6.990400e+02 1.654999e+01
-3 6110     5.077400e+02 -2.595900e+02
-6 6110     5.701500e+02 1.938500e+02
-7 6110     5.459000e+02 2.151500e+02
-9 6110     4.122100e+02 1.425400e+02
-10 6110     7.178400e+02 2.344200e+02
-0 6111     6.047998e+01 1.572998e+01
-7 6111     -2.608002e+01 1.403500e+02
-0 6112     -5.991200e+02 1.579999e+01
-7 6112     -7.532600e+02 -5.599976e+00
-0 6113     -3.034003e+01 1.477002e+01
-2 6113     9.689001e+01 1.883002e+01
-7 6113     -1.212900e+02 1.211400e+02
-10 6113     -1.304600e+02 1.551100e+02
-13 6113     3.391400e+02 -2.132300e+02
-15 6113     -7.708002e+01 1.530300e+02
-0 6114     3.133101e+02 1.506000e+01
-7 6114     2.136200e+02 1.741300e+02
-0 6115     8.398800e+02 1.521997e+01
-3 6115     6.390699e+02 -1.880000e+02
-9 6115     5.282500e+02 2.044700e+02
-0 6116     8.398800e+02 1.521997e+01
-3 6116     6.390699e+02 -1.880000e+02
-0 6117     6.728700e+02 1.429999e+01
-2 6117     6.174200e+02 2.900000e+01
-3 6117     4.818900e+02 -2.763900e+02
-6 6117     5.399500e+02 1.806600e+02
-8 6117     5.655601e+02 -7.630005e+00
-9 6117     3.901899e+02 1.276900e+02
-10 6117     6.871400e+02 2.288900e+02
-0 6118     6.728700e+02 1.429999e+01
-3 6118     4.818900e+02 -2.763900e+02
-6 6118     5.399500e+02 1.806600e+02
-8 6118     5.655601e+02 -7.630005e+00
-10 6118     6.871400e+02 2.288900e+02
-0 6119     8.368800e+02 1.460999e+01
-7 6119     6.771899e+02 2.400800e+02
-0 6120     -3.175400e+02 1.391998e+01
-7 6120     -4.513000e+02 4.308002e+01
-10 6120     -4.655700e+02 1.250200e+02
-15 6120     -4.553400e+02 1.110800e+02
-0 6121     -3.175400e+02 1.391998e+01
-7 6121     -4.513000e+02 4.308002e+01
-10 6121     -4.655700e+02 1.250200e+02
-15 6121     -4.553400e+02 1.110800e+02
-0 6122     1.912200e+02 1.404999e+01
-6 6122     1.697900e+02 9.520001e+01
-10 6122     1.268200e+02 1.774800e+02
-0 6123     7.378199e+02 1.404999e+01
-7 6123     5.830400e+02 2.209600e+02
-12 6123     6.931200e+02 2.166800e+02
-0 6124     7.842800e+02 1.395001e+01
-7 6124     6.277100e+02 2.293700e+02
-0 6125     7.345500e+02 1.373999e+01
-2 6125     6.818600e+02 6.085999e+01
-0 6126     7.515601e+02 1.352002e+01
-2 6126     6.998000e+02 6.921997e+01
-7 6126     5.974000e+02 2.222600e+02
-12 6126     7.089301e+02 2.207300e+02
-0 6127     5.839001e+01 1.294000e+01
-7 6127     -2.752002e+01 1.367700e+02
-10 6127     -2.696997e+01 1.619500e+02
-15 6127     4.209998e+01 1.629700e+02
-0 6128     6.462100e+02 1.275000e+01
-8 6128     5.415000e+02 -1.891000e+01
-9 6128     3.658700e+02 1.138700e+02
-0 6129     -3.205100e+02 1.246002e+01
-7 6129     -4.532600e+02 4.156000e+01
-10 6129     -4.694100e+02 1.224000e+02
-0 6130     -3.669000e+02 1.178003e+01
-7 6130     -5.020400e+02 3.220001e+01
-15 6130     -5.225700e+02 1.011300e+02
-0 6131     -3.669000e+02 1.178003e+01
-7 6131     -5.020400e+02 3.220001e+01
-15 6131     -5.225700e+02 1.011300e+02
-0 6132     -3.289200e+02 1.132001e+01
-7 6132     -4.619600e+02 3.856000e+01
-13 6132     -1.226001e+01 -2.639500e+02
-15 6132     -4.704700e+02 1.057400e+02
-0 6133     -3.151300e+02 1.146997e+01
-7 6133     -4.477100e+02 4.152002e+01
-15 6133     -4.514800e+02 1.081500e+02
-0 6134     5.400100e+02 1.135999e+01
-6 6134     3.767700e+02 1.217400e+02
-10 6134     5.320601e+02 2.117800e+02
-13 6134     7.577700e+02 -1.982300e+02
-0 6135     7.129200e+02 1.164001e+01
-2 6135     6.602900e+02 4.778003e+01
-7 6135     5.599100e+02 2.130500e+02
-9 6135     4.256100e+02 1.443500e+02
-10 6135     7.344200e+02 2.292500e+02
-12 6135     6.659900e+02 2.020600e+02
-0 6136     7.543900e+02 1.037000e+01
-2 6136     7.032000e+02 6.783002e+01
-3 6136     5.629200e+02 -2.356400e+02
-7 6136     5.999700e+02 2.199300e+02
-9 6136     4.609399e+02 1.630500e+02
-10 6136     7.838101e+02 2.325800e+02
-12 6136     7.136100e+02 2.182700e+02
-0 6137     1.246500e+02 8.590027e+00
-7 6137     3.962000e+01 1.438900e+02
-0 6138     2.394000e+02 8.409973e+00
-2 6138     3.739399e+02 7.865002e+01
-6 6138     2.147500e+02 9.991998e+01
-7 6138     1.489100e+02 1.602600e+02
-10 6138     1.829700e+02 1.755500e+02
-12 6138     2.450200e+02 1.450800e+02
-15 6138     2.905400e+02 1.814200e+02
-0 6139     4.053000e+02 7.840027e+00
-7 6139     2.885900e+02 1.720500e+02
-15 6139     5.262500e+02 2.031500e+02
-0 6140     4.053000e+02 7.840027e+00
-7 6140     2.885900e+02 1.720500e+02
-15 6140     5.262500e+02 2.031500e+02
-0 6141     6.408400e+02 7.489990e+00
-7 6141     4.901500e+02 1.947000e+02
-0 6142     5.554399e+02 7.119995e+00
-6 6142     3.974900e+02 1.241400e+02
-7 6142     4.057100e+02 1.771500e+02
-12 6142     4.834100e+02 1.355400e+02
-13 6142     7.747600e+02 -1.996000e+02
-0 6143     8.511100e+02 7.119995e+00
-2 6143     7.993500e+02 1.115200e+02
-3 6143     6.517000e+02 -1.899400e+02
-7 6143     6.914301e+02 2.354200e+02
-0 6144     8.511100e+02 7.119995e+00
-2 6144     7.993500e+02 1.115200e+02
-3 6144     6.517000e+02 -1.899400e+02
-7 6144     6.914301e+02 2.354200e+02
-12 6144     8.221600e+02 2.524400e+02
-0 6145     8.480300e+02 6.309998e+00
-3 6145     6.495300e+02 -1.920700e+02
-7 6145     6.887400e+02 2.342800e+02
-0 6146     7.113700e+02 5.900024e+00
-2 6146     6.604900e+02 4.065997e+01
-3 6146     5.233900e+02 -2.634900e+02
-7 6146     5.592300e+02 2.069200e+02
-9 6146     4.260500e+02 1.388100e+02
-10 6146     7.335300e+02 2.230600e+02
-0 6147     6.953500e+02 5.630005e+00
-2 6147     6.433101e+02 3.244000e+01
-3 6147     5.072600e+02 -2.721900e+02
-6 6147     5.685400e+02 1.801400e+02
-7 6147     5.437100e+02 2.037400e+02
-8 6147     5.875200e+02 -6.079987e+00
-9 6147     4.119700e+02 1.313700e+02
-10 6147     7.146200e+02 2.208300e+02
-12 6147     6.471200e+02 1.894600e+02
-0 6148     6.814399e+02 4.700012e+00
-3 6148     4.935900e+02 -2.811000e+02
-8 6148     5.754200e+02 -1.241000e+01
-0 6149     7.285601e+02 2.520020e+00
-2 6149     6.791801e+02 4.656000e+01
-3 6149     5.413800e+02 -2.570200e+02
-7 6149     5.762400e+02 2.073700e+02
-10 6149     7.535800e+02 2.209100e+02
-0 6150     7.285601e+02 2.520020e+00
-2 6150     6.791801e+02 4.656000e+01
-3 6150     5.413800e+02 -2.570200e+02
-7 6150     5.762400e+02 2.073700e+02
-9 6150     4.418500e+02 1.445200e+02
-0 6151     7.501899e+02 2.020020e+00
-2 6151     7.015300e+02 5.728003e+01
-7 6151     5.970100e+02 2.115400e+02
-12 6151     7.111100e+02 2.081100e+02
-0 6152     -3.547100e+02 7.100220e-01
-2 6152     -4.673000e+02 -2.612000e+02
-15 6152     -5.039700e+02 8.817001e+01
-0 6153     6.764700e+02 2.999878e-01
-7 6153     5.256600e+02 1.951300e+02
-10 6153     6.924600e+02 2.129200e+02
-0 6154     7.269700e+02 -2.190002e+00
-12 6154     6.854000e+02 1.930900e+02
-0 6155     6.516600e+02 -3.539978e+00
-2 6155     5.998400e+02 -7.899780e-01
-6 6155     5.199100e+02 1.515300e+02
-7 6155     5.027700e+02 1.859700e+02
-8 6155     5.508000e+02 -3.173001e+01
-10 6155     6.638400e+02 2.057100e+02
-12 6155     6.000200e+02 1.617500e+02
-13 6155     8.767200e+02 -1.956700e+02
-0 6156     7.387900e+02 -4.650024e+00
-10 6156     7.669500e+02 2.133100e+02
-12 6156     6.994399e+02 1.959000e+02
-0 6157     7.275300e+02 -5.460022e+00
-3 6157     5.433000e+02 -2.650300e+02
-7 6157     5.764200e+02 1.994800e+02
-12 6157     6.875400e+02 1.899900e+02
-0 6158     6.935500e+02 -6.299988e+00
-2 6158     6.450200e+02 1.937000e+01
-6 6158     5.695900e+02 1.663700e+02
-7 6158     5.435500e+02 1.921100e+02
-10 6158     7.132400e+02 2.068900e+02
-12 6158     6.481500e+02 1.760200e+02
-0 6159     6.935500e+02 -6.299988e+00
-2 6159     6.450200e+02 1.937000e+01
-6 6159     5.695900e+02 1.663700e+02
-7 6159     5.435500e+02 1.921100e+02
-9 6159     4.137500e+02 1.205800e+02
-10 6159     7.132400e+02 2.068900e+02
-12 6159     6.481500e+02 1.760200e+02
-0 6160     7.249700e+02 -6.030029e+00
-2 6160     6.780900e+02 3.634003e+01
-7 6160     5.739399e+02 1.985200e+02
-12 6160     6.842000e+02 1.889000e+02
-0 6161     7.249700e+02 -6.030029e+00
-2 6161     6.780900e+02 3.634003e+01
-7 6161     5.739399e+02 1.985200e+02
-12 6161     6.842000e+02 1.889000e+02
-0 6162     1.824700e+02 -7.179993e+00
-12 6162     1.924900e+02 1.177600e+02
-15 6162     2.139399e+02 1.527400e+02
-0 6163     3.378003e+01 -7.570007e+00
-7 6163     -4.915002e+01 1.120800e+02
-0 6164     3.055300e+02 -8.359985e+00
-7 6164     2.109700e+02 1.508900e+02
-10 6164     2.608700e+02 1.632300e+02
-15 6164     3.847200e+02 1.672600e+02
-0 6165     6.564301e+02 -9.719971e+00
-6 6165     5.269600e+02 1.478400e+02
-0 6166     8.483500e+02 -1.014001e+01
-7 6166     6.908800e+02 2.186900e+02
-0 6167     4.171899e+02 -1.103998e+01
-6 6167     3.444800e+02 1.039000e+02
-7 6167     3.046500e+02 1.567000e+02
-10 6167     3.911100e+02 1.722600e+02
-15 6167     5.448800e+02 1.789600e+02
-0 6168     -6.638000e+01 -1.175000e+01
-2 6168     5.428998e+01 -3.176001e+01
-3 6168     -3.088000e+01 -3.434000e+02
-6 6168     -1.282800e+02 -2.825000e+01
-8 6168     7.491998e+01 -6.933002e+01
-12 6168     -1.102500e+02 2.784003e+01
-0 6169     9.544000e+01 -1.157001e+01
-7 6169     1.413000e+01 1.194800e+02
-0 6170     9.544000e+01 -1.157001e+01
-3 6170     1.623300e+02 -2.661900e+02
-7 6170     1.413000e+01 1.194800e+02
-9 6170     1.049800e+02 1.302600e+02
-15 6170     9.741998e+01 1.328900e+02
-0 6171     6.550699e+02 -1.215997e+01
-3 6171     4.703700e+02 -3.103900e+02
-6 6171     5.228300e+02 1.470500e+02
-8 6171     5.557600e+02 -3.757001e+01
-9 6171     3.810100e+02 9.685001e+01
-10 6171     6.684800e+02 1.962900e+02
-12 6171     6.028101e+02 1.567600e+02
-0 6172     9.990997e+01 -1.253003e+01
-2 6172     2.622200e+02 4.190002e+01
-4 6172     -2.940100e+02 -4.932000e+02
-7 6172     1.853998e+01 1.187100e+02
-9 6172     1.083500e+02 1.304500e+02
-13 6172     4.654000e+02 -2.232700e+02
-15 6172     1.009800e+02 1.334700e+02
-0 6173     7.285200e+02 -1.245001e+01
-7 6173     5.781000e+02 1.928400e+02
-12 6173     6.911899e+02 1.823000e+02
-0 6174     7.250500e+02 -1.337000e+01
-3 6174     5.434399e+02 -2.744100e+02
-7 6174     5.750400e+02 1.916700e+02
-9 6174     4.432500e+02 1.294800e+02
-0 6175     7.250500e+02 -1.337000e+01
-3 6175     5.434399e+02 -2.744100e+02
-7 6175     5.750400e+02 1.916700e+02
-9 6175     4.432500e+02 1.294800e+02
-0 6176     8.761100e+02 -1.365997e+01
-3 6176     6.805000e+02 -1.965700e+02
-0 6177     -3.869800e+02 -1.456000e+01
-7 6177     -5.173900e+02 3.489990e+00
-15 6177     -5.469200e+02 6.328998e+01
-0 6178     4.866998e+01 -1.426001e+01
-2 6178     2.077500e+02 2.537000e+01
-7 6178     -3.266998e+01 1.083400e+02
-9 6178     6.463000e+01 1.140900e+02
-15 6178     3.270001e+01 1.247200e+02
-0 6179     7.072100e+02 -1.759998e+01
-2 6179     6.621100e+02 1.540997e+01
-7 6179     5.585601e+02 1.837900e+02
-0 6180     -3.784400e+02 -2.038000e+01
-7 6180     -5.066600e+02 -1.039978e+00
-15 6180     -5.343700e+02 5.622998e+01
-0 6181     7.344200e+02 -2.322998e+01
-2 6181     6.929600e+02 2.359998e+01
-3 6181     5.555601e+02 -2.785400e+02
-7 6181     5.852100e+02 1.839100e+02
-10 6181     7.623000e+02 1.915100e+02
-0 6182     4.406000e+01 -2.425000e+01
-2 6182     2.068600e+02 1.389001e+01
-3 6182     1.158200e+02 -2.946400e+02
-7 6182     -3.566998e+01 9.731000e+01
-10 6182     -4.009998e+01 1.175200e+02
-15 6182     2.784003e+01 1.102300e+02
-0 6183     5.166998e+01 -2.425000e+01
-12 6183     4.909003e+01 6.213000e+01
-0 6184     2.300000e+02 -2.400000e+01
-7 6184     1.462300e+02 1.273600e+02
-10 6184     1.755000e+02 1.370000e+02
-0 6185     7.068101e+02 -2.387000e+01
-9 6185     4.306500e+02 1.123100e+02
-0 6186     6.663000e+02 -2.459003e+01
-2 6186     6.214100e+02 -1.371002e+01
-3 6186     4.882400e+02 -3.183200e+02
-6 6186     5.426500e+02 1.340600e+02
-7 6186     5.195100e+02 1.688400e+02
-8 6186     5.683800e+02 -4.339001e+01
-10 6186     6.825100e+02 1.828500e+02
-0 6187     6.992700e+02 -2.433002e+01
-6 6187     5.814399e+02 1.487800e+02
-7 6187     5.515100e+02 1.758800e+02
-9 6187     4.236200e+02 1.082000e+02
-12 6187     6.598700e+02 1.579800e+02
-0 6188     6.992700e+02 -2.433002e+01
-2 6188     6.567700e+02 4.030029e+00
-3 6188     5.221200e+02 -2.992200e+02
-6 6188     5.814399e+02 1.487800e+02
-7 6188     5.515100e+02 1.758800e+02
-9 6188     4.236200e+02 1.082000e+02
-10 6188     7.219900e+02 1.865100e+02
-12 6188     6.598700e+02 1.579800e+02
-0 6189     -1.118300e+02 -2.528003e+01
-3 6189     -7.827002e+01 -3.732000e+02
-7 6189     -2.005000e+02 6.389001e+01
-15 6189     -1.807600e+02 8.742999e+01
-0 6190     7.186200e+02 -2.675000e+01
-3 6190     5.417900e+02 -2.906500e+02
-9 6190     4.408700e+02 1.154000e+02
-10 6190     7.442000e+02 1.856200e+02
-0 6191     7.186200e+02 -2.675000e+01
-2 6191     6.776400e+02 1.190997e+01
-3 6191     5.417900e+02 -2.906500e+02
-7 6191     5.706300e+02 1.772400e+02
-9 6191     4.408700e+02 1.154000e+02
-10 6191     7.442000e+02 1.856200e+02
-12 6191     6.823800e+02 1.631600e+02
-0 6192     7.794700e+02 -2.654999e+01
-2 6192     7.403600e+02 4.365002e+01
-12 6192     7.513400e+02 1.875800e+02
-0 6193     -1.100000e+02 -2.796997e+01
-7 6193     -1.978100e+02 6.178003e+01
-13 6193     2.658800e+02 -2.590400e+02
-0 6194     6.740800e+02 -2.776001e+01
-2 6194     6.314399e+02 -1.317999e+01
-6 6194     5.527200e+02 1.343100e+02
-8 6194     5.758900e+02 -4.301999e+01
-9 6194     4.026400e+02 9.295001e+01
-10 6194     6.916899e+02 1.798700e+02
-12 6194     6.313700e+02 1.437600e+02
-0 6195     7.837700e+02 -2.773999e+01
-7 6195     6.326100e+02 1.895500e+02
-0 6196     -2.446997e+01 -2.846997e+01
-2 6196     1.224200e+02 -2.156000e+01
-6 6196     -5.981000e+01 -2.620001e+01
-7 6196     -1.065200e+02 7.913000e+01
-12 6196     -4.696002e+01 2.848999e+01
-0 6197     2.185100e+02 -2.837000e+01
-7 6197     1.359600e+02 1.215100e+02
-0 6198     7.065100e+02 -2.846002e+01
-2 6198     6.655900e+02 3.729980e+00
-10 6198     7.299700e+02 1.827800e+02
-12 6198     6.685800e+02 1.566300e+02
-0 6199     7.335200e+02 -2.831000e+01
-2 6199     6.936700e+02 1.752002e+01
-0 6200     7.725800e+02 -2.909003e+01
-3 6200     5.944600e+02 -2.633200e+02
-7 6200     6.225100e+02 1.859000e+02
-10 6200     8.082800e+02 1.883200e+02
-0 6201     7.725800e+02 -2.909003e+01
-3 6201     5.944600e+02 -2.633200e+02
-10 6201     8.082800e+02 1.883200e+02
-0 6202     7.877200e+02 -2.889001e+01
-2 6202     7.494600e+02 4.573999e+01
-3 6202     6.091500e+02 -2.551700e+02
-7 6202     6.370300e+02 1.889800e+02
-10 6202     8.266500e+02 1.905200e+02
-0 6203     7.110500e+02 -3.031000e+01
-9 6203     4.354000e+02 1.091400e+02
-0 6204     6.276100e+02 -3.115002e+01
-7 6204     4.824200e+02 1.549300e+02
-0 6205     8.469500e+02 -3.083002e+01
-2 6205     8.078600e+02 7.345001e+01
-0 6206     8.469500e+02 -3.083002e+01
-2 6206     8.078600e+02 7.345001e+01
-0 6207     -1.109100e+02 -3.158002e+01
-7 6207     -1.980000e+02 5.790997e+01
-15 6207     -1.787700e+02 7.900000e+01
-0 6208     2.360000e+02 -3.145001e+01
-6 6208     2.267500e+02 5.671997e+01
-15 6208     2.908000e+02 1.264600e+02
-0 6209     2.775300e+02 -3.156000e+01
-7 6209     1.894200e+02 1.243500e+02
-0 6210     7.257500e+02 -3.232001e+01
-3 6210     5.502200e+02 -2.919900e+02
-7 6210     5.781300e+02 1.733900e+02
-9 6210     4.489399e+02 1.138600e+02
-12 6210     6.921400e+02 1.595600e+02
-0 6211     7.870699e+02 -3.177002e+01
-2 6211     7.493400e+02 4.288000e+01
-0 6212     2.377300e+02 -3.340002e+01
-7 6212     1.544500e+02 1.192000e+02
-10 6212     1.847400e+02 1.269500e+02
-0 6213     7.538000e+02 -3.340997e+01
-2 6213     7.158600e+02 2.409998e+01
-3 6213     5.778500e+02 -2.775500e+02
-7 6213     6.050699e+02 1.781700e+02
-9 6213     4.728500e+02 1.269300e+02
-10 6213     7.862100e+02 1.821600e+02
-12 6213     7.246600e+02 1.704600e+02
-0 6214     7.148101e+02 -3.384003e+01
-2 6214     6.760200e+02 2.530029e+00
-7 6214     5.678400e+02 1.698000e+02
-9 6214     4.399600e+02 1.078000e+02
-10 6214     7.403600e+02 1.770500e+02
-12 6214     6.804301e+02 1.541600e+02
-0 6215     -1.088200e+02 -3.512000e+01
-7 6215     -1.950200e+02 5.490997e+01
-0 6216     6.714700e+02 -3.509998e+01
-2 6216     6.302800e+02 -2.195001e+01
-3 6216     4.984200e+02 -3.262500e+02
-0 6217     6.702500e+02 -3.729999e+01
-3 6217     4.967800e+02 -3.290300e+02
-7 6217     5.250400e+02 1.576100e+02
-8 6217     5.747000e+02 -5.239999e+01
-9 6217     4.013600e+02 8.297000e+01
-12 6217     6.297900e+02 1.320000e+02
-0 6218     7.524200e+02 -3.722998e+01
-7 6218     6.042300e+02 1.739500e+02
-10 6218     7.846700e+02 1.768500e+02
-0 6219     -1.933100e+02 -3.906000e+01
-7 6219     -2.838800e+02 3.367999e+01
-10 6219     -3.141000e+02 7.547998e+01
-15 6219     -2.882600e+02 5.744000e+01
-0 6220     8.799200e+02 -3.901001e+01
-7 6220     7.238400e+02 1.973000e+02
-0 6221     2.935000e+02 -3.952002e+01
-7 6221     2.061000e+02 1.194600e+02
-0 6222     2.384600e+02 -4.013000e+01
-7 6222     1.565100e+02 1.125200e+02
-10 6222     1.866700e+02 1.191500e+02
-15 6222     2.955900e+02 1.145400e+02
-0 6223     6.997400e+02 -4.000000e+01
-6 6223     5.863101e+02 1.314900e+02
-7 6223     5.540100e+02 1.608400e+02
-9 6223     4.279600e+02 9.489001e+01
-10 6223     7.229399e+02 1.685600e+02
-0 6224     8.380800e+02 -3.996997e+01
-2 6224     8.026100e+02 6.004999e+01
-3 6224     6.584800e+02 -2.390700e+02
-12 6224     8.204700e+02 1.964900e+02
-0 6225     8.707600e+02 -4.009003e+01
-7 6225     7.155800e+02 1.943700e+02
-0 6226     1.048200e+02 -4.140997e+01
-2 6226     2.780500e+02 1.446002e+01
-6 6226     1.023200e+02 9.530029e+00
-7 6226     2.865997e+01 9.123001e+01
-8 6226     2.569800e+02 -3.685999e+01
-15 6226     1.122800e+02 9.509000e+01
-0 6227     2.399900e+02 -4.241998e+01
-6 6227     2.342700e+02 4.585999e+01
-7 6227     1.578700e+02 1.103800e+02
-10 6227     1.891000e+02 1.168800e+02
-0 6228     8.341200e+02 -4.323999e+01
-3 6228     6.556400e+02 -2.439700e+02
-7 6228     6.823199e+02 1.844400e+02
-12 6228     8.166600e+02 1.910600e+02
-0 6229     2.380500e+02 -4.322998e+01
-7 6229     1.566300e+02 1.096000e+02
-0 6230     2.380500e+02 -4.322998e+01
-7 6230     1.566300e+02 1.096000e+02
-0 6231     -1.804000e+02 -4.471002e+01
-6 6231     -2.636400e+02 -1.135700e+02
-7 6231     -2.691800e+02 3.096002e+01
-12 6231     -2.460900e+02 -5.163000e+01
-13 6231     1.999500e+02 -2.807400e+02
-0 6232     1.942100e+02 -4.572998e+01
-7 6232     1.162600e+02 1.009900e+02
-0 6233     6.927900e+02 -4.577002e+01
-2 6233     6.559700e+02 -2.102002e+01
-3 6233     5.228700e+02 -3.238600e+02
-6 6233     5.798300e+02 1.226200e+02
-8 6233     5.970100e+02 -5.051001e+01
-9 6233     4.236801e+02 8.704001e+01
-10 6233     7.152800e+02 1.611300e+02
-12 6233     6.578400e+02 1.319300e+02
-0 6234     -3.280800e+02 -4.587000e+01
-2 6234     -4.011600e+02 -2.936300e+02
-7 6234     -4.474000e+02 -1.684003e+01
-15 6234     -4.618600e+02 2.870001e+01
-0 6235     8.344200e+02 -4.619000e+01
-3 6235     6.570699e+02 -2.471700e+02
-9 6235     5.416200e+02 1.534000e+02
-0 6236     4.199829e-01 -4.627002e+01
-7 6236     -7.753998e+01 6.653003e+01
-0 6237     6.037600e+02 -4.922998e+01
-8 6237     5.162600e+02 -9.032001e+01
-10 6237     6.114900e+02 1.480200e+02
-15 6237     8.185200e+02 1.510300e+02
-0 6238     6.037600e+02 -4.922998e+01
-8 6238     5.162600e+02 -9.032001e+01
-15 6238     8.185200e+02 1.510300e+02
-0 6239     7.190699e+02 -4.884998e+01
-3 6239     5.495699e+02 -3.127600e+02
-9 6239     4.471801e+02 9.664001e+01
-0 6240     1.077600e+02 -4.989001e+01
-6 6240     1.084000e+02 5.999756e-01
-10 6240     3.676001e+01 9.408002e+01
-12 6240     1.235200e+02 4.997998e+01
-15 6240     1.174000e+02 8.401999e+01
-0 6241     6.765200e+02 -5.025000e+01
-2 6241     6.394100e+02 -3.546002e+01
-6 6241     5.610601e+02 1.105800e+02
-9 6241     4.100900e+02 7.465997e+01
-10 6241     6.964500e+02 1.540900e+02
-12 6241     6.398600e+02 1.199700e+02
-0 6242     -1.001300e+02 -5.047998e+01
-7 6242     -1.821000e+02 4.190997e+01
-0 6243     -3.925000e+01 -5.092999e+01
-8 6243     1.183000e+02 -9.064001e+01
-10 6243     -1.335500e+02 7.796997e+01
-0 6244     3.656899e+02 -5.134003e+01
-7 6244     2.711300e+02 1.157400e+02
-0 6245     8.342500e+02 -5.212000e+01
-9 6245     5.432700e+02 1.485300e+02
-0 6246     8.342500e+02 -5.212000e+01
-12 6246     8.192100e+02 1.818500e+02
-0 6247     -1.952700e+02 -5.292999e+01
-7 6247     -2.836400e+02 1.915002e+01
-10 6247     -3.150500e+02 5.821997e+01
-15 6247     -2.893700e+02 3.796997e+01
-0 6248     6.770800e+02 -5.295001e+01
-2 6248     6.418000e+02 -3.806000e+01
-3 6248     5.097200e+02 -3.410000e+02
-6 6248     5.633800e+02 1.072700e+02
-8 6248     5.848300e+02 -6.371002e+01
-12 6248     6.416500e+02 1.164400e+02
-0 6249     6.770800e+02 -5.295001e+01
-10 6249     6.976200e+02 1.510900e+02
-12 6249     6.416500e+02 1.164400e+02
-0 6250     3.360200e+02 -5.444000e+01
-7 6250     2.442900e+02 1.084800e+02
-15 6250     4.343000e+02 1.084400e+02
-0 6251     -3.787400e+02 -5.540997e+01
-2 6251     -4.602800e+02 -3.156100e+02
-7 6251     -4.983600e+02 -3.497998e+01
-12 6251     -5.554500e+02 -1.834400e+02
-15 6251     -5.302300e+02 8.799988e+00
-0 6252     -3.600100e+02 -5.496002e+01
-7 6252     -4.790100e+02 -3.162000e+01
-15 6252     -5.048000e+02 1.165997e+01
-0 6253     7.985100e+02 -5.578998e+01
-2 6253     7.678600e+02 2.453998e+01
-7 6253     6.504500e+02 1.656700e+02
-9 6253     5.153800e+02 1.292800e+02
-12 6253     7.807600e+02 1.630100e+02
-0 6254     3.510800e+02 -5.694000e+01
-7 6254     2.589000e+02 1.085000e+02
-12 6254     3.674600e+02 8.467999e+01
-15 6254     4.551801e+02 1.069800e+02
-0 6255     1.664000e+02 -5.765002e+01
-6 6255     1.710400e+02 9.950012e+00
-10 6255     1.052800e+02 9.164001e+01
-15 6255     1.980900e+02 8.176999e+01
-0 6256     7.043900e+02 -5.776001e+01
-7 6256     5.608900e+02 1.446100e+02
-0 6257     8.637400e+02 -5.904999e+01
-7 6257     7.118700e+02 1.754400e+02
-0 6258     -1.776100e+02 -5.928003e+01
-6 6258     -2.497100e+02 -1.271700e+02
-7 6258     -2.627200e+02 1.732001e+01
-10 6258     -2.935200e+02 5.358002e+01
-12 6258     -2.355900e+02 -6.541998e+01
-13 6258     2.066700e+02 -2.925900e+02
-15 6258     -2.651000e+02 3.217999e+01
-0 6259     7.911200e+02 -5.997998e+01
-3 6259     6.221600e+02 -2.826400e+02
-0 6260     -1.637000e+01 -6.119000e+01
-2 6260     1.450300e+02 -5.340002e+01
-7 6260     -9.266998e+01 4.790997e+01
-10 6260     -1.056100e+02 6.820001e+01
-15 6260     -4.803998e+01 5.157001e+01
-0 6261     -1.637000e+01 -6.119000e+01
-2 6261     1.450300e+02 -5.340002e+01
-7 6261     -9.266998e+01 4.790997e+01
-13 6261     3.618300e+02 -2.775700e+02
-0 6262     7.149700e+02 -6.082001e+01
-3 6262     5.500500e+02 -3.265500e+02
-7 6262     5.716300e+02 1.439500e+02
-9 6262     4.476500e+02 8.510001e+01
-0 6263     7.149700e+02 -6.082001e+01
-3 6263     5.500500e+02 -3.265500e+02
-7 6263     5.716300e+02 1.439500e+02
-12 6263     6.871801e+02 1.241100e+02
-0 6264     -1.788800e+02 -6.212000e+01
-2 6264     -6.588000e+01 -1.244700e+02
-3 6264     -1.429100e+02 -4.366200e+02
-6 6264     -2.514100e+02 -1.312200e+02
-7 6264     -2.636500e+02 1.414001e+01
-8 6264     -2.410999e+01 -1.439800e+02
-12 6264     -2.370100e+02 -6.934998e+01
-15 6264     -2.661100e+02 2.812000e+01
-0 6265     7.025900e+02 -6.188000e+01
-2 6265     6.715601e+02 -3.257001e+01
-7 6265     5.602900e+02 1.406200e+02
-9 6265     4.375100e+02 7.796002e+01
-12 6265     6.735699e+02 1.182500e+02
-0 6266     -2.290002e+01 -6.300000e+01
-2 6266     1.359200e+02 -5.933002e+01
-3 6266     5.087000e+01 -3.672000e+02
-7 6266     -9.927002e+01 4.453998e+01
-8 6266     1.393200e+02 -9.492999e+01
-10 6266     -1.131000e+02 6.554999e+01
-13 6266     3.556500e+02 -2.800400e+02
-15 6266     -5.648999e+01 4.840997e+01
-0 6267     7.136801e+02 -6.387000e+01
-7 6267     5.708199e+02 1.408200e+02
-10 6267     7.413700e+02 1.423300e+02
-0 6268     7.136801e+02 -6.387000e+01
-7 6268     5.708199e+02 1.408200e+02
-9 6268     4.471000e+02 8.194000e+01
-10 6268     7.413700e+02 1.423300e+02
-0 6269     7.136801e+02 -6.387000e+01
-2 6269     6.833400e+02 -2.815997e+01
-7 6269     5.708199e+02 1.408200e+02
-9 6269     4.471000e+02 8.194000e+01
-10 6269     7.413700e+02 1.423300e+02
-12 6269     6.864600e+02 1.207700e+02
-0 6270     7.095900e+02 -6.697998e+01
-2 6270     6.800699e+02 -3.401001e+01
-7 6270     5.671500e+02 1.370900e+02
-0 6271     -7.109985e+00 -6.790002e+01
-2 6271     1.589000e+02 -5.642999e+01
-10 6271     -9.397998e+01 6.175000e+01
-0 6272     -1.233002e+01 -7.135999e+01
-2 6272     1.522800e+02 -6.281000e+01
-3 6272     6.665997e+01 -3.704500e+02
-6 6272     -2.937000e+01 -7.165997e+01
-7 6272     -8.691998e+01 3.851001e+01
-10 6272     -9.979999e+01 5.672998e+01
-15 6272     -4.142999e+01 3.854999e+01
-0 6273     6.719200e+02 -7.135999e+01
-9 6273     4.132000e+02 5.404999e+01
-10 6273     6.927900e+02 1.288100e+02
-0 6274     2.908101e+02 -7.182001e+01
-6 6274     2.804800e+02 2.157001e+01
-10 6274     2.507200e+02 8.800000e+01
-12 6274     3.160100e+02 5.978998e+01
-13 6274     6.245601e+02 -2.637700e+02
-15 6274     3.730900e+02 7.859003e+01
-0 6275     7.760000e+02 -7.228998e+01
-7 6275     6.313900e+02 1.452300e+02
-0 6276     1.970100e+02 -7.359998e+01
-7 6276     1.230100e+02 7.367999e+01
-0 6277     4.153600e+02 -7.460999e+01
-7 6277     3.190699e+02 9.889001e+01
-15 6277     5.480900e+02 9.129001e+01
-0 6278     -1.680600e+02 -7.515997e+01
-7 6278     -2.486000e+02 3.809998e+00
-15 6278     -2.502200e+02 1.203003e+01
-0 6279     6.981899e+02 -7.559998e+01
-2 6279     6.702800e+02 -4.954999e+01
-3 6279     5.386801e+02 -3.511000e+02
-0 6280     9.012000e+01 -7.598999e+01
-8 6280     2.529800e+02 -7.102002e+01
-10 6280     1.860999e+01 6.233002e+01
-15 6280     9.708002e+01 4.609998e+01
-0 6281     -4.208200e+02 -7.790002e+01
-2 6281     -5.009100e+02 -3.479700e+02
-7 6281     -5.372000e+02 -6.519000e+01
-10 6281     -5.778000e+02 6.289978e+00
-13 6281     -7.510999e+01 -3.470000e+02
-0 6282     7.133400e+02 -7.809998e+01
-2 6282     6.870800e+02 -4.363000e+01
-7 6282     5.721801e+02 1.271500e+02
-9 6282     4.501000e+02 6.985999e+01
-10 6282     7.418800e+02 1.257500e+02
-0 6283     -1.750900e+02 -8.009998e+01
-2 6283     -5.858002e+01 -1.481000e+02
-3 6283     -1.360200e+02 -4.598300e+02
-4 6283     -3.057500e+02 -2.724300e+02
-6 6283     -2.433200e+02 -1.534600e+02
-8 6283     -1.846997e+01 -1.622100e+02
-9 6283     -1.497500e+02 -4.217999e+01
-12 6283     -2.284900e+02 -9.148999e+01
-15 6283     -2.583200e+02 4.799988e+00
-0 6284     7.772900e+02 -8.184998e+01
-2 6284     7.547400e+02 -1.196002e+01
-7 6284     6.341400e+02 1.370700e+02
-12 6284     7.638000e+02 1.273500e+02
-0 6285     7.480200e+02 -8.248999e+01
-7 6285     6.061000e+02 1.301200e+02
-9 6285     4.814100e+02 8.354001e+01
-0 6286     3.883002e+01 -8.396002e+01
-2 6286     2.205800e+02 -5.356000e+01
-3 6286     1.318500e+02 -3.589100e+02
-6 6286     4.000000e+01 -6.353998e+01
-7 6286     -3.121002e+01 3.621002e+01
-8 6286     2.073000e+02 -9.139001e+01
-10 6286     -3.925000e+01 4.770001e+01
-12 6286     5.077002e+01 -1.259003e+01
-13 6286     4.177400e+02 -2.910800e+02
-0 6287     3.883002e+01 -8.396002e+01
-4 6287     -3.359300e+02 -4.410000e+02
-7 6287     -3.121002e+01 3.621002e+01
-8 6287     2.073000e+02 -9.139001e+01
-9 6287     7.796997e+01 4.969000e+01
-0 6288     2.613800e+02 -8.452002e+01
-7 6288     1.848800e+02 7.328998e+01
-0 6289     6.458400e+02 -8.440002e+01
-7 6289     5.074100e+02 1.070800e+02
-0 6290     -8.679999e+01 -8.515997e+01
-2 6290     7.117999e+01 -1.023900e+02
-13 6290     3.000900e+02 -3.051500e+02
-15 6290     -1.396800e+02 9.859985e+00
-0 6291     5.875000e+01 -8.664001e+01
-9 6291     9.740002e+01 5.378998e+01
-0 6292     -4.131100e+02 -8.846997e+01
-7 6292     -5.265100e+02 -7.400000e+01
-10 6292     -5.672600e+02 -5.599976e+00
-15 6292     -5.731400e+02 -4.070001e+01
-0 6293     -4.131100e+02 -8.846997e+01
-7 6293     -5.265100e+02 -7.400000e+01
-10 6293     -5.672600e+02 -5.599976e+00
-15 6293     -5.731400e+02 -4.070001e+01
-0 6294     -1.535700e+02 -8.916998e+01
-6 6294     -1.990500e+02 -1.487100e+02
-7 6294     -2.302400e+02 -6.890015e+00
-12 6294     -1.911400e+02 -8.865997e+01
-0 6295     6.598800e+02 -8.965002e+01
-2 6295     6.334200e+02 -8.566998e+01
-6 6295     5.528199e+02 5.942999e+01
-9 6295     4.072300e+02 3.227002e+01
-0 6296     1.056700e+02 -9.014001e+01
-3 6296     2.005800e+02 -3.430000e+02
-6 6296     1.173900e+02 -4.646002e+01
-8 6296     2.684900e+02 -8.133002e+01
-10 6296     3.808002e+01 4.759998e+01
-15 6296     1.199600e+02 2.897998e+01
-0 6297     1.849399e+02 -8.990002e+01
-3 6297     2.668800e+02 -3.271000e+02
-6 6297     1.982600e+02 -2.127002e+01
-7 6297     1.139700e+02 5.567999e+01
-8 6297     3.306700e+02 -6.853998e+01
-12 6297     2.193199e+02 2.271002e+01
-0 6298     6.964600e+02 -9.003998e+01
-2 6298     6.732500e+02 -6.501001e+01
-12 6298     6.736600e+02 8.391998e+01
-0 6299     1.613400e+02 -9.319000e+01
-6 6299     1.755800e+02 -3.167999e+01
-10 6299     1.028200e+02 5.045001e+01
-15 6299     1.963000e+02 3.246997e+01
-0 6300     -6.484998e+01 -9.364001e+01
-2 6300     1.058000e+02 -9.908002e+01
-7 6300     -1.353800e+02 6.950012e+00
-10 6300     -1.585700e+02 2.532001e+01
-13 6300     3.239100e+02 -3.097100e+02
-15 6300     -1.092600e+02 1.020020e+00
-0 6301     3.803800e+02 -9.346997e+01
-7 6301     2.912500e+02 7.671997e+01
-0 6302     -2.709998e+01 -9.514001e+01
-10 6302     -1.152200e+02 2.827002e+01
-12 6302     -2.659998e+01 -4.782001e+01
-0 6303     -2.709998e+01 -9.514001e+01
-12 6303     -2.659998e+01 -4.782001e+01
-0 6304     8.289800e+02 -9.507001e+01
-7 6304     6.838101e+02 1.348600e+02
-0 6305     -6.198999e+01 -9.559003e+01
-7 6305     -1.320800e+02 5.739990e+00
-15 6305     -1.051200e+02 -9.500122e-01
-0 6306     1.565601e+02 -9.689001e+01
-6 6306     1.718900e+02 -3.771002e+01
-7 6306     8.777002e+01 4.423999e+01
-12 6306     1.899301e+02 6.859985e+00
-15 6306     1.905500e+02 2.671997e+01
-0 6307     6.623800e+02 -9.689001e+01
-7 6307     5.253800e+02 9.839001e+01
-10 6307     6.838600e+02 9.863000e+01
-12 6307     6.358800e+02 6.192999e+01
-0 6308     6.650300e+02 -9.726001e+01
-6 6308     5.608900e+02 5.320001e+01
-7 6308     5.278600e+02 9.894000e+01
-0 6309     -1.411600e+02 -9.759998e+01
-7 6309     -2.153200e+02 -1.277002e+01
-0 6310     -1.685700e+02 -9.853998e+01
-4 6310     -3.195800e+02 -2.755400e+02
-10 6310     -2.782800e+02 8.840027e+00
-15 6310     -2.466900e+02 -1.985999e+01
-0 6311     3.824600e+02 -9.862000e+01
-7 6311     2.945000e+02 7.244000e+01
-15 6311     5.041899e+02 5.432001e+01
-0 6312     6.926000e+02 -9.962000e+01
-2 6312     6.716700e+02 -7.720001e+01
-0 6313     4.233400e+02 -1.003700e+02
-7 6313     3.328900e+02 7.687000e+01
-0 6314     8.354100e+02 -1.032700e+02
-2 6314     8.190699e+02 -3.489990e+00
-9 6314     5.576801e+02 1.079800e+02
-0 6315     -1.486100e+02 -1.045600e+02
-6 6315     -1.809500e+02 -1.624600e+02
-7 6315     -2.210200e+02 -2.050000e+01
-0 6316     3.144301e+02 -1.052400e+02
-6 6316     3.200000e+02 -5.489990e+00
-0 6317     1.383199e+02 -1.053700e+02
-3 6317     2.342200e+02 -3.519800e+02
-10 6317     7.792999e+01 3.347998e+01
-0 6318     -4.759998e+01 -1.061100e+02
-2 6318     1.331200e+02 -1.041600e+02
-3 6318     5.187000e+01 -4.101000e+02
-7 6318     -1.151200e+02 -1.890015e+00
-10 6318     -1.372400e+02 1.314001e+01
-15 6318     -8.465997e+01 -1.323999e+01
-0 6319     -4.759998e+01 -1.061100e+02
-2 6319     1.331200e+02 -1.041600e+02
-3 6319     5.187000e+01 -4.101000e+02
-6 6319     -5.217999e+01 -1.213200e+02
-7 6319     -1.151200e+02 -1.890015e+00
-8 6319     1.342500e+02 -1.333600e+02
-12 6319     -4.732001e+01 -6.738000e+01
-15 6319     -8.465997e+01 -1.323999e+01
-0 6320     2.373700e+02 -1.061200e+02
-7 6320     1.652700e+02 4.690997e+01
-10 6320     1.923500e+02 4.331000e+01
-15 6320     3.029700e+02 2.497998e+01
-0 6321     1.107001e+01 -1.079600e+02
-7 6321     -5.515002e+01 7.570007e+00
-0 6322     -3.201001e+01 -1.085700e+02
-7 6322     -9.804999e+01 -8.200073e-01
-15 6322     -6.402002e+01 -1.471997e+01
-0 6323     7.009800e+02 -1.096800e+02
-2 6323     6.839500e+02 -8.351001e+01
-9 6323     4.485699e+02 3.646997e+01
-0 6324     7.319200e+02 -1.113700e+02
-2 6324     7.172000e+02 -6.790002e+01
-0 6325     7.319200e+02 -1.113700e+02
-2 6325     7.172000e+02 -6.790002e+01
-9 6325     4.765400e+02 5.035999e+01
-10 6325     7.663700e+02 8.947998e+01
-12 6325     7.204700e+02 7.425000e+01
-0 6326     1.834700e+02 -1.120600e+02
-2 6326     3.704900e+02 -5.017999e+01
-6 6326     2.017000e+02 -4.776001e+01
-7 6326     1.155000e+02 3.296997e+01
-8 6326     3.337600e+02 -9.015997e+01
-0 6327     -4.795001e+01 -1.125400e+02
-3 6327     5.276001e+01 -4.182500e+02
-6 6327     -5.122998e+01 -1.292900e+02
-7 6327     -1.146500e+02 -8.479980e+00
-10 6327     -1.369800e+02 5.549988e+00
-12 6327     -4.622998e+01 -7.563000e+01
-13 6327     3.417000e+02 -3.245900e+02
-15 6327     -8.414001e+01 -2.197998e+01
-0 6328     3.423199e+02 -1.123800e+02
-7 6328     2.620100e+02 5.478003e+01
-0 6329     8.517200e+02 -1.138600e+02
-7 6329     7.076600e+02 1.212400e+02
-0 6330     8.801200e+02 -1.146700e+02
-7 6330     7.372800e+02 1.310300e+02
-9 6330     6.085500e+02 1.378200e+02
-0 6331     7.165997e+01 -1.152000e+02
-2 6331     2.653199e+02 -7.872998e+01
-7 6331     6.849976e+00 1.071997e+01
-13 6331     4.502800e+02 -3.163900e+02
-15 6331     7.770001e+01 -9.559998e+00
-0 6332     -1.266600e+02 -1.168200e+02
-7 6332     -1.954000e+02 -2.857001e+01
-10 6332     -2.274600e+02 -7.989990e+00
-0 6333     -1.587000e+01 -1.184600e+02
-7 6333     -7.935999e+01 -7.219971e+00
-15 6333     -4.071002e+01 -2.597998e+01
-0 6334     -1.587000e+01 -1.184600e+02
-7 6334     -7.935999e+01 -7.219971e+00
-15 6334     -4.071002e+01 -2.597998e+01
-0 6335     4.067700e+02 -1.194000e+02
-7 6335     3.225601e+02 5.728003e+01
-0 6336     -1.164500e+02 -1.206700e+02
-7 6336     -1.839700e+02 -3.025000e+01
-10 6336     -2.153200e+02 -1.121997e+01
-12 6336     -1.299300e+02 -1.096300e+02
-15 6336     -1.750400e+02 -4.220001e+01
-0 6337     -1.132000e+02 -1.213500e+02
-7 6337     -1.810300e+02 -3.046002e+01
-10 6337     -2.115900e+02 -1.175000e+01
-15 6337     -1.708300e+02 -4.279999e+01
-0 6338     2.234800e+02 -1.218200e+02
-7 6338     1.550000e+02 2.933002e+01
-15 6338     2.853900e+02 1.460022e+00
-0 6339     7.484800e+02 -1.221400e+02
-2 6339     7.371300e+02 -6.948999e+01
-7 6339     6.119399e+02 9.226999e+01
-0 6340     -2.962100e+02 -1.232600e+02
-2 6340     -3.064600e+02 -3.509800e+02
-8 6340     -2.068100e+02 -3.103100e+02
-0 6341     8.179399e+02 -1.241800e+02
-2 6341     8.085601e+02 -3.357001e+01
-7 6341     6.776400e+02 1.045500e+02
-0 6342     -4.064100e+02 -1.259500e+02
-7 6342     -5.102600e+02 -1.092000e+02
-15 6342     -5.592100e+02 -9.040997e+01
-0 6343     -1.515900e+02 -1.258400e+02
-7 6343     -2.181900e+02 -4.162000e+01
-10 6343     -2.554500e+02 -2.139001e+01
-15 6343     -2.218200e+02 -5.416998e+01
-0 6344     7.272400e+02 -1.267000e+02
-7 6344     5.919800e+02 8.334000e+01
-0 6345     4.081899e+02 -1.275400e+02
-7 6345     3.256500e+02 5.001001e+01
-0 6346     1.502300e+02 -1.279700e+02
-7 6346     8.603003e+01 1.182001e+01
-10 6346     9.348999e+01 8.669983e+00
-15 6346     1.854600e+02 -1.633002e+01
-0 6347     8.761400e+02 -1.292400e+02
-9 6347     6.094200e+02 1.222200e+02
-0 6348     8.794500e+02 -1.290400e+02
-7 6348     7.380200e+02 1.167500e+02
-0 6349     7.644301e+02 -1.305000e+02
-2 6349     7.569301e+02 -6.920001e+01
-12 6349     7.617500e+02 6.687000e+01
-0 6350     -7.735999e+01 -1.308800e+02
-7 6350     -1.422400e+02 -3.306000e+01
-10 6350     -1.690600e+02 -1.871002e+01
-12 6350     -7.844000e+01 -1.089200e+02
-15 6350     -1.211100e+02 -5.072998e+01
-0 6351     7.371997e+01 -1.309000e+02
-6 6351     9.854999e+01 -1.024900e+02
-7 6351     1.266998e+01 -3.460022e+00
-12 6351     1.079400e+02 -5.496002e+01
-15 6351     8.201001e+01 -3.035999e+01
-0 6352     7.493800e+02 -1.336300e+02
-2 6352     7.422400e+02 -8.076001e+01
-9 6352     4.968900e+02 4.076001e+01
-12 6352     7.455000e+02 5.734998e+01
-0 6353     3.841801e+02 -1.341500e+02
-6 6353     3.914300e+02 -1.957001e+01
-12 6353     4.323400e+02 1.203998e+01
-0 6354     -1.229100e+02 -1.371400e+02
-7 6354     -1.861500e+02 -4.712000e+01
-15 6354     -1.818700e+02 -6.545001e+01
-0 6355     -4.690002e+00 -1.368100e+02
-2 6355     1.996500e+02 -1.164200e+02
-6 6355     1.479999e+01 -1.372600e+02
-7 6355     -6.491998e+01 -2.356000e+01
-12 6355     1.803998e+01 -8.684003e+01
-0 6356     -4.690002e+00 -1.368100e+02
-2 6356     1.996500e+02 -1.164200e+02
-6 6356     1.479999e+01 -1.372600e+02
-10 6356     -8.434998e+01 -1.812000e+01
-12 6356     1.803998e+01 -8.684003e+01
-15 6356     -2.307001e+01 -4.910999e+01
-0 6357     6.993800e+02 -1.367300e+02
-2 6357     6.903800e+02 -1.127200e+02
-3 6357     5.628900e+02 -4.129100e+02
-7 6357     5.667600e+02 6.796997e+01
-12 6357     6.892900e+02 3.290002e+01
-0 6358     8.354900e+02 -1.372000e+02
-7 6358     6.954000e+02 9.612000e+01
-0 6359     7.376700e+02 -1.391500e+02
-2 6359     7.313900e+02 -9.292999e+01
-7 6359     6.034700e+02 7.404999e+01
-0 6360     1.878400e+02 -1.394300e+02
-10 6360     1.382600e+02 -3.800049e-01
-12 6360     2.387400e+02 -3.284003e+01
-0 6361     -2.502002e+01 -1.403600e+02
-2 6361     1.722000e+02 -1.338300e+02
-3 6361     9.069000e+01 -4.375300e+02
-6 6361     -1.234998e+01 -1.521300e+02
-7 6361     -8.596002e+01 -3.191998e+01
-8 6361     1.655900e+02 -1.580900e+02
-10 6361     -1.075800e+02 -2.446997e+01
-12 6361     -8.789978e+00 -1.003400e+02
-0 6362     8.276300e+02 -1.407600e+02
-2 6362     8.234200e+02 -4.522998e+01
-7 6362     6.885800e+02 9.089001e+01
-9 6362     5.624100e+02 7.379999e+01
-0 6363     -1.042900e+02 -1.425500e+02
-2 6363     8.535999e+01 -1.592100e+02
-3 6363     9.429993e+00 -4.646600e+02
-6 6363     -1.029000e+02 -1.842300e+02
-7 6363     -1.660000e+02 -4.871997e+01
-10 6363     -1.987200e+02 -3.509003e+01
-0 6364     1.174400e+02 -1.436300e+02
-12 6364     1.635800e+02 -5.553998e+01
-0 6365     8.264500e+02 -1.441800e+02
-2 6365     8.234000e+02 -4.919000e+01
-3 6365     6.874700e+02 -3.441200e+02
-7 6365     6.880200e+02 8.735001e+01
-9 6365     5.628400e+02 7.023999e+01
-0 6366     5.221801e+02 -1.441400e+02
-6 6366     4.443900e+02 -3.771997e+01
-7 6366     4.080100e+02 3.346997e+01
-0 6367     -3.025300e+02 -1.446200e+02
-7 6367     -3.963800e+02 -1.081900e+02
-12 6367     -4.173900e+02 -2.568900e+02
-0 6368     -3.145200e+02 -1.474600e+02
-7 6368     -4.084800e+02 -1.131800e+02
-15 6368     -4.305700e+02 -1.062200e+02
-0 6369     -1.073300e+02 -1.482300e+02
-7 6369     -1.676500e+02 -5.494000e+01
-13 6369     2.946600e+02 -3.612500e+02
-0 6370     7.509700e+02 -1.481800e+02
-7 6370     6.177100e+02 6.809003e+01
-0 6371     7.509700e+02 -1.481800e+02
-7 6371     6.177100e+02 6.809003e+01
-10 6371     7.911899e+02 4.840002e+01
-12 6371     7.511400e+02 4.160999e+01
-0 6372     -1.177600e+02 -1.524600e+02
-2 6372     6.640997e+01 -1.818500e+02
-6 6372     -1.211700e+02 -2.035500e+02
-7 6372     -1.795100e+02 -6.232001e+01
-8 6372     7.756000e+01 -1.957300e+02
-10 6372     -2.137200e+02 -4.789001e+01
-12 6372     -1.210700e+02 -1.467700e+02
-0 6373     -1.146100e+02 -1.524600e+02
-2 6373     7.182001e+01 -1.788900e+02
-3 6373     -3.020020e+00 -4.848300e+02
-4 6373     -3.632200e+02 -3.195900e+02
-7 6373     -1.758700e+02 -6.159998e+01
-8 6373     8.184998e+01 -1.937000e+02
-10 6373     -2.099600e+02 -4.813000e+01
-13 6373     2.850601e+02 -3.664700e+02
-15 6373     -1.684500e+02 -8.508002e+01
-0 6374     3.802002e+01 -1.525300e+02
-2 6374     2.520000e+02 -1.201400e+02
-6 6374     6.862000e+01 -1.390400e+02
-7 6374     -1.879999e+01 -3.121002e+01
-10 6374     -3.334003e+01 -3.121997e+01
-12 6374     7.396002e+01 -9.073999e+01
-15 6374     3.678998e+01 -6.438000e+01
-0 6375     7.215800e+02 -1.532400e+02
-2 6375     7.196500e+02 -1.174800e+02
-7 6375     5.901899e+02 5.687000e+01
-9 6375     4.794100e+02 9.570007e+00
-0 6376     8.048300e+02 -1.533400e+02
-7 6376     6.689500e+02 7.427002e+01
-0 6377     8.740100e+02 -1.532600e+02
-3 6377     7.333700e+02 -3.263900e+02
-7 6377     7.330100e+02 8.850000e+01
-0 6378     8.774700e+02 -1.539100e+02
-7 6378     7.360800e+02 8.845999e+01
-9 6378     6.047400e+02 8.616000e+01
-0 6379     8.636801e+02 -1.542600e+02
-7 6379     7.237800e+02 8.560999e+01
-0 6380     7.903998e+01 -1.553600e+02
-2 6380     2.983101e+02 -1.076400e+02
-7 6380     2.320001e+01 -2.598999e+01
-15 6380     9.216998e+01 -6.262000e+01
-0 6381     8.425300e+02 -1.553400e+02
-9 6381     5.781801e+02 6.867999e+01
-0 6382     -8.090002e+01 -1.564300e+02
-12 6382     -6.914001e+01 -1.349200e+02
-0 6383     3.900000e+01 -1.570800e+02
-2 6383     2.537000e+02 -1.255900e+02
-3 6383     1.687100e+02 -4.280601e+02
-6 6383     7.066998e+01 -1.444100e+02
-7 6383     -1.717999e+01 -3.581000e+01
-8 6383     2.319400e+02 -1.531800e+02
-10 6383     -3.146997e+01 -3.664001e+01
-12 6383     7.614001e+01 -9.656000e+01
-15 6383     3.857001e+01 -7.040997e+01
-0 6384     8.105699e+02 -1.568900e+02
-7 6384     6.748500e+02 7.210999e+01
-9 6384     5.540200e+02 5.190002e+01
-0 6385     7.689600e+02 -1.591400e+02
-7 6385     6.361700e+02 6.135999e+01
-10 6385     8.139301e+02 3.744000e+01
-0 6386     7.286200e+02 -1.607200e+02
-2 6386     7.279399e+02 -1.210200e+02
-9 6386     4.865800e+02 6.950012e+00
-12 6386     7.288800e+02 1.829999e+01
-0 6387     2.903998e+01 -1.609000e+02
-2 6387     2.429100e+02 -1.348700e+02
-6 6387     5.956000e+01 -1.532700e+02
-8 6387     2.226700e+02 -1.602200e+02
-0 6388     7.291300e+02 -1.633700e+02
-2 6388     7.302700e+02 -1.233800e+02
-0 6389     2.071899e+02 -1.639600e+02
-6 6389     2.497600e+02 -9.460999e+01
-7 6389     1.488700e+02 -1.270001e+01
-10 6389     1.632400e+02 -2.673999e+01
-12 6389     2.688000e+02 -5.427002e+01
-15 6389     2.681700e+02 -5.748999e+01
-0 6390     2.094399e+02 -1.655900e+02
-6 6390     2.522100e+02 -9.603003e+01
-10 6390     1.657900e+02 -2.835999e+01
-12 6390     2.716200e+02 -5.646997e+01
-15 6390     2.708800e+02 -5.990997e+01
-0 6391     8.515699e+02 -1.665900e+02
-7 6391     7.137600e+02 7.115997e+01
-0 6392     8.515699e+02 -1.665900e+02
-7 6392     7.137600e+02 7.115997e+01
-0 6393     8.643900e+02 -1.700900e+02
-7 6393     7.267500e+02 7.115997e+01
-9 6393     5.994700e+02 6.748999e+01
-0 6394     7.350000e+02 -1.712100e+02
-2 6394     7.388300e+02 -1.287300e+02
-7 6394     6.051899e+02 4.247998e+01
-0 6395     3.275100e+02 -1.723700e+02
-7 6395     2.624500e+02 -3.260010e+00
-0 6396     8.657900e+02 -1.730300e+02
-3 6396     7.344600e+02 -3.501900e+02
-9 6396     6.015601e+02 6.526001e+01
-0 6397     3.661899e+02 -1.730900e+02
-7 6397     2.983800e+02 2.099976e+00
-15 6397     4.894399e+02 -4.941998e+01
-0 6398     8.630200e+02 -1.733700e+02
-3 6398     7.317600e+02 -3.517500e+02
-7 6398     7.252700e+02 6.740997e+01
-9 6398     5.990900e+02 6.359003e+01
-0 6399     -1.613300e+02 -1.750200e+02
-6 6399     -2.054900e+02 -2.727000e+02
-7 6399     -2.299900e+02 -1.008600e+02
-8 6399     7.200012e+00 -2.641400e+02
-10 6399     -2.614400e+02 -7.854999e+01
-13 6399     2.211700e+02 -4.000700e+02
-15 6399     -2.251300e+02 -1.221700e+02
-0 6400     1.270900e+02 -1.752600e+02
-7 6400     7.340997e+01 -3.896997e+01
-15 6400     1.601300e+02 -8.397998e+01
-0 6401     7.899200e+02 -1.756600e+02
-2 6401     7.972600e+02 -1.016200e+02
-3 6401     6.662300e+02 -3.970200e+02
-7 6401     6.579600e+02 5.007001e+01
-9 6401     5.422600e+02 2.613000e+01
-0 6402     7.389001e+01 -1.769100e+02
-6 6402     1.150300e+02 -1.547600e+02
-10 6402     1.065997e+01 -5.600000e+01
-15 6402     8.827002e+01 -9.265997e+01
-0 6403     7.927500e+02 -1.772900e+02
-2 6403     8.005100e+02 -1.015000e+02
-3 6403     6.695900e+02 -3.965700e+02
-0 6404     8.704700e+02 -1.806100e+02
-7 6404     7.335300e+02 6.191998e+01
-9 6404     6.066500e+02 6.103998e+01
-0 6405     8.137100e+02 -1.829600e+02
-2 6405     8.237400e+02 -9.541998e+01
-0 6406     3.654399e+02 -1.833500e+02
-7 6406     3.003500e+02 -6.950012e+00
-0 6407     8.253400e+02 -1.844900e+02
-3 6407     7.027800e+02 -3.842100e+02
-7 6407     6.921300e+02 4.903998e+01
-9 6407     5.735200e+02 3.626001e+01
-0 6408     8.684500e+02 -1.844700e+02
-7 6408     7.316899e+02 5.787000e+01
-9 6408     6.064100e+02 5.710999e+01
-0 6409     8.684500e+02 -1.844700e+02
-3 6409     7.410000e+02 -3.593300e+02
-7 6409     7.316899e+02 5.787000e+01
-9 6409     6.064100e+02 5.710999e+01
-0 6410     3.486200e+02 -1.885500e+02
-2 6410     5.446801e+02 -9.379999e+01
-6 6410     3.910300e+02 -8.010999e+01
-8 6410     4.812400e+02 -1.276800e+02
-0 6411     1.451700e+02 -1.887500e+02
-2 6411     3.692000e+02 -1.334700e+02
-7 6411     9.240997e+01 -4.856000e+01
-15 6411     1.867900e+02 -9.933002e+01
-0 6412     8.180900e+02 -1.888000e+02
-2 6412     8.297300e+02 -9.920001e+01
-7 6412     6.858900e+02 4.342999e+01
-0 6413     9.830017e+00 -1.921500e+02
-12 6413     5.546997e+01 -1.436500e+02
-0 6414     2.651500e+02 -1.930700e+02
-12 6414     3.388101e+02 -7.369000e+01
-0 6415     8.407200e+02 -1.930400e+02
-3 6415     7.198700e+02 -3.832100e+02
-9 6415     5.876000e+02 3.712000e+01
-0 6416     3.352000e+02 -1.937300e+02
-10 6416     3.129500e+02 -4.765997e+01
-12 6416     4.119800e+02 -5.701001e+01
-15 6416     4.488700e+02 -8.156000e+01
-0 6417     2.841100e+02 -1.942500e+02
-6 6417     3.333600e+02 -1.051700e+02
-10 6417     2.547300e+02 -5.314001e+01
-12 6417     3.591000e+02 -7.040002e+01
-15 6417     3.779800e+02 -8.872998e+01
-0 6418     1.067999e+01 -1.965200e+02
-7 6418     -3.759003e+01 -7.941998e+01
-15 6418     5.219971e+00 -1.277100e+02
-0 6419     7.744600e+02 -1.980800e+02
-7 6419     6.460300e+02 2.570001e+01
-12 6419     7.897500e+02 -2.429993e+00
-0 6420     3.279900e+02 -2.002400e+02
-7 6420     2.685699e+02 -2.953003e+01
-15 6420     4.393500e+02 -9.214001e+01
-0 6421     7.728300e+02 -2.001000e+02
-12 6421     7.897100e+02 -6.859985e+00
-0 6422     8.329800e+02 -2.010700e+02
-7 6422     7.014900e+02 3.497998e+01
-0 6423     -1.315000e+02 -2.015700e+02
-4 6423     -3.995200e+02 -2.958900e+02
-15 6423     -1.824300e+02 -1.535000e+02
-0 6424     -1.315000e+02 -2.015700e+02
-3 6424     -3.771002e+01 -5.859301e+02
-6 6424     -1.460400e+02 -2.827800e+02
-8 6424     5.564001e+01 -2.695800e+02
-9 6424     -6.377002e+01 -1.444900e+02
-12 6424     -1.382000e+02 -2.262300e+02
-13 6424     2.591300e+02 -4.181600e+02
-15 6424     -1.824300e+02 -1.535000e+02
-0 6425     1.637000e+01 -2.014100e+02
-10 6425     -5.291998e+01 -9.042999e+01
-12 6425     6.815997e+01 -1.520200e+02
-0 6426     8.322998e+01 -2.020000e+02
-7 6426     3.596002e+01 -7.166998e+01
-12 6426     1.438900e+02 -1.328200e+02
-0 6427     3.334600e+02 -2.018300e+02
-7 6427     2.732600e+02 -3.052002e+01
-10 6427     3.119500e+02 -5.679999e+01
-12 6427     4.107700e+02 -6.841998e+01
-15 6427     4.472900e+02 -9.303998e+01
-0 6428     9.960022e+00 -2.027000e+02
-6 6428     6.323999e+01 -2.026300e+02
-7 6428     -3.665002e+01 -8.553003e+01
-10 6428     -6.042999e+01 -9.254999e+01
-12 6428     6.140997e+01 -1.550200e+02
-15 6428     4.669983e+00 -1.361400e+02
-0 6429     -3.398100e+02 -2.030300e+02
-7 6429     -4.214900e+02 -1.726200e+02
-0 6430     -4.043100e+02 -2.045600e+02
-2 6430     -3.887800e+02 -4.572300e+02
-7 6430     -4.885700e+02 -1.865200e+02
-12 6430     -5.206400e+02 -3.568000e+02
-15 6430     -5.470600e+02 -1.967600e+02
-0 6431     1.687000e+01 -2.047300e+02
-6 6431     7.203003e+01 -2.019500e+02
-10 6431     -5.215997e+01 -9.381000e+01
-12 6431     7.053998e+01 -1.551000e+02
-15 6431     1.427002e+01 -1.374200e+02
-0 6432     7.852600e+02 -2.060300e+02
-2 6432     8.024700e+02 -1.363500e+02
-0 6433     8.686300e+02 -2.062200e+02
-3 6433     7.501200e+02 -3.813200e+02
-7 6433     7.345699e+02 3.728003e+01
-9 6433     6.126801e+02 3.910999e+01
-0 6434     7.823500e+02 -2.071200e+02
-2 6434     7.996899e+02 -1.387500e+02
-3 6434     6.730500e+02 -4.338800e+02
-12 6434     8.026100e+02 -1.071997e+01
-0 6435     -1.340997e+01 -2.081000e+02
-3 6435     1.488900e+02 -4.871600e+02
-6 6435     3.858002e+01 -2.180300e+02
-8 6435     2.066500e+02 -2.050200e+02
-12 6435     3.517999e+01 -1.696500e+02
-0 6436     2.930100e+02 -2.097200e+02
-7 6436     2.389800e+02 -4.300000e+01
-15 6436     3.920699e+02 -1.088900e+02
-0 6437     7.819600e+02 -2.095900e+02
-2 6437     8.000699e+02 -1.416300e+02
-7 6437     6.549500e+02 1.587000e+01
-12 6437     8.031300e+02 -1.407001e+01
-0 6438     8.438199e+02 -2.111900e+02
-3 6438     7.305601e+02 -4.007400e+02
-7 6438     7.126200e+02 2.759003e+01
-9 6438     5.956400e+02 2.315002e+01
-0 6439     2.168199e+02 -2.115200e+02
-7 6439     1.671500e+02 -5.763000e+01
-10 6439     1.787000e+02 -8.067999e+01
-15 6439     2.871300e+02 -1.209400e+02
-0 6440     -2.071997e+01 -2.121100e+02
-3 6440     1.406900e+02 -4.973700e+02
-4 6440     -4.232800e+02 -3.940400e+02
-6 6440     2.934998e+01 -2.268700e+02
-7 6440     -6.651001e+01 -1.011900e+02
-10 6440     -9.551001e+01 -1.059500e+02
-12 6440     2.579999e+01 -1.782800e+02
-15 6440     -3.470001e+01 -1.526400e+02
-0 6441     2.809800e+02 -2.116700e+02
-2 6441     5.070400e+02 -1.197600e+02
-6 6441     3.419600e+02 -1.215800e+02
-10 6441     2.530800e+02 -7.354999e+01
-12 6441     3.654100e+02 -8.721002e+01
-13 6441     6.497700e+02 -3.838000e+02
-15 6441     3.755000e+02 -1.128300e+02
-0 6442     -3.494900e+02 -2.151700e+02
-7 6442     -4.280600e+02 -1.860200e+02
-0 6443     -3.494900e+02 -2.151700e+02
-7 6443     -4.280600e+02 -1.860200e+02
-0 6444     8.505699e+02 -2.156500e+02
-3 6444     7.381700e+02 -4.003500e+02
-0 6445     9.176001e+01 -2.170300e+02
-7 6445     4.771997e+01 -8.390997e+01
-0 6446     9.176001e+01 -2.170300e+02
-7 6446     4.771997e+01 -8.390997e+01
-0 6447     -1.144000e+01 -2.182000e+02
-3 6447     1.512700e+02 -5.022700e+02
-6 6447     4.138000e+01 -2.311899e+02
-7 6447     -5.628003e+01 -1.057500e+02
-8 6447     2.089200e+02 -2.173000e+02
-10 6447     -8.271997e+01 -1.126200e+02
-12 6447     3.838000e+01 -1.831600e+02
-13 6447     3.933101e+02 -4.137700e+02
-15 6447     -2.148999e+01 -1.597000e+02
-0 6448     7.810400e+02 -2.201300e+02
-2 6448     8.026300e+02 -1.530600e+02
-12 6448     8.042700e+02 -2.571002e+01
-0 6449     2.009000e+02 -2.209100e+02
-6 6449     2.693800e+02 -1.555699e+02
-13 6449     5.835400e+02 -3.974900e+02
-0 6450     1.179300e+02 -2.241000e+02
-6 6450     1.889200e+02 -1.859301e+02
-12 6450     1.944100e+02 -1.448000e+02
-0 6451     -3.446100e+02 -2.259900e+02
-2 6451     -2.942400e+02 -4.569100e+02
-6 6451     -4.692000e+02 -4.417200e+02
-7 6451     -4.202800e+02 -1.955200e+02
-9 6451     -3.356000e+02 -3.169500e+02
-0 6452     1.491200e+02 -2.269200e+02
-7 6452     1.061600e+02 -8.303998e+01
-10 6452     1.022900e+02 -1.050400e+02
-15 6452     1.960900e+02 -1.501500e+02
-0 6453     2.324700e+02 -2.269800e+02
-7 6453     1.860699e+02 -6.910999e+01
-10 6453     1.983800e+02 -9.678003e+01
-15 6453     3.103000e+02 -1.394400e+02
-0 6454     1.863300e+02 -2.314400e+02
-6 6454     2.624000e+02 -1.701700e+02
-10 6454     1.454300e+02 -1.063900e+02
-12 6454     2.746200e+02 -1.324400e+02
-13 6454     5.742500e+02 -4.074400e+02
-15 6454     2.480601e+02 -1.519100e+02
-0 6455     1.395800e+02 -2.329600e+02
-6 6455     2.171100e+02 -1.871200e+02
-10 6455     9.237000e+01 -1.135000e+02
-12 6455     2.237200e+02 -1.473300e+02
-15 6455     1.841000e+02 -1.600500e+02
-0 6456     1.878101e+02 -2.339500e+02
-2 6456     4.414000e+02 -1.549200e+02
-3 6456     3.495200e+02 -4.494000e+02
-6 6456     2.649500e+02 -1.728600e+02
-8 6456     3.872300e+02 -1.810300e+02
-9 6456     2.648300e+02 -2.594000e+01
-12 6456     2.767200e+02 -1.353700e+02
-13 6456     5.749399e+02 -4.103800e+02
-15 6456     2.502300e+02 -1.547800e+02
-0 6457     -1.333500e+02 -2.343200e+02
-7 6457     -1.899000e+02 -1.552000e+02
-10 6457     -2.224600e+02 -1.436100e+02
-15 6457     -1.793400e+02 -1.979900e+02
-0 6458     2.940400e+02 -2.362000e+02
-7 6458     2.410100e+02 -7.134003e+01
-0 6459     1.930300e+02 -2.373200e+02
-2 6459     4.450100e+02 -1.585300e+02
-6 6459     2.693500e+02 -1.754399e+02
-10 6459     1.538000e+02 -1.124000e+02
-12 6459     2.824900e+02 -1.383700e+02
-0 6460     -2.840027e+00 -2.378700e+02
-6 6460     5.119000e+01 -2.541200e+02
-7 6460     -4.571002e+01 -1.248500e+02
-15 6460     -6.760010e+00 -1.852300e+02
-0 6461     2.886801e+02 -2.377900e+02
-12 6461     3.743800e+02 -1.220100e+02
-0 6462     3.353800e+02 -2.384700e+02
-6 6462     3.799300e+02 -1.490699e+02
-8 6462     4.715300e+02 -1.900800e+02
-10 6462     3.180500e+02 -9.862000e+01
-12 6462     4.136100e+02 -1.199700e+02
-15 6462     4.564100e+02 -1.425500e+02
-0 6463     1.442800e+02 -2.431700e+02
-3 6463     3.144900e+02 -4.718600e+02
-6 6463     2.223200e+02 -1.987500e+02
-7 6463     1.040200e+02 -1.002700e+02
-10 6463     9.871002e+01 -1.244300e+02
-12 6463     2.301100e+02 -1.598200e+02
-15 6463     1.923600e+02 -1.732300e+02
-0 6464     -1.821997e+01 -2.439700e+02
-4 6464     -4.498100e+02 -3.901700e+02
-13 6464     3.834500e+02 -4.407100e+02
-15 6464     -2.621997e+01 -1.954300e+02
-0 6465     1.838400e+02 -2.441300e+02
-2 6465     4.373199e+02 -1.724400e+02
-7 6465     1.419100e+02 -9.484998e+01
-15 6465     2.464399e+02 -1.695000e+02
-0 6466     2.982001e+01 -2.491500e+02
-2 6466     2.783700e+02 -2.328900e+02
-6 6466     9.254999e+01 -2.549900e+02
-7 6466     -1.071002e+01 -1.300600e+02
-10 6466     -3.214001e+01 -1.440300e+02
-13 6466     4.308700e+02 -4.401400e+02
-0 6467     -1.149600e+02 -2.495200e+02
-6 6467     -1.198800e+02 -3.401000e+02
-15 6467     -1.524300e+02 -2.161300e+02
-0 6468     1.569200e+02 -2.560000e+02
-2 6468     4.132800e+02 -1.969000e+02
-4 6468     -4.950600e+02 -5.407600e+02
-6 6468     2.343600e+02 -2.125000e+02
-9 6468     2.436500e+02 -6.153003e+01
-12 6468     2.445300e+02 -1.749900e+02
-0 6469     2.293600e+02 -2.583700e+02
-2 6469     4.773700e+02 -1.845400e+02
-3 6469     3.839100e+02 -4.781300e+02
-7 6469     1.865100e+02 -1.022800e+02
-0 6470     1.579200e+02 -2.644900e+02
-6 6470     2.353300e+02 -2.228700e+02
-10 6470     1.164800e+02 -1.473500e+02
-0 6471     5.819800e+02 -2.655900e+02
-6 6471     5.718199e+02 -1.357700e+02
-0 6472     6.157300e+02 -2.661000e+02
-7 6472     5.207500e+02 -6.139001e+01
-15 6472     8.568600e+02 -1.457800e+02
-0 6473     5.864700e+02 -2.664700e+02
-6 6473     5.765699e+02 -1.352100e+02
-0 6474     5.650900e+02 -2.718600e+02
-6 6474     5.596700e+02 -1.469399e+02
-0 6475     2.214500e+02 -2.727400e+02
-2 6475     4.680699e+02 -2.096600e+02
-6 6475     2.963900e+02 -2.144700e+02
-7 6475     1.792400e+02 -1.188400e+02
-10 6475     1.906500e+02 -1.500400e+02
-15 6475     3.026100e+02 -2.033700e+02
-0 6476     1.658002e+01 -2.784000e+02
-3 6476     1.813900e+02 -5.882000e+02
-6 6476     7.520001e+01 -3.012800e+02
-7 6476     -2.217999e+01 -1.641200e+02
-8 6476     2.333900e+02 -2.845600e+02
-9 6476     1.214600e+02 -1.423300e+02
-10 6476     -4.428003e+01 -1.780600e+02
-13 6476     4.144301e+02 -4.715500e+02
-15 6476     2.614001e+01 -2.375200e+02
-0 6477     -6.024100e+02 -2.802800e+02
-7 6477     -6.824100e+02 -3.019200e+02
-10 6477     -7.740400e+02 -2.544500e+02
-0 6478     2.784900e+02 -2.829700e+02
-2 6478     4.993199e+02 -2.348800e+02
-3 6478     4.043600e+02 -5.306000e+02
-6 6478     3.381000e+02 -2.187400e+02
-10 6478     2.566400e+02 -1.556700e+02
-12 6478     3.662500e+02 -1.884600e+02
-15 6478     3.839500e+02 -2.104800e+02
-0 6479     2.026600e+02 -2.865300e+02
-2 6479     4.519000e+02 -2.355800e+02
-3 6479     3.621400e+02 -5.303199e+02
-6 6479     2.784700e+02 -2.386100e+02
-7 6479     1.623500e+02 -1.365900e+02
-8 6479     3.966500e+02 -2.449200e+02
-12 6479     2.956899e+02 -2.049600e+02
-15 6479     2.793900e+02 -2.245100e+02
-0 6480     2.672400e+02 -3.047500e+02
-7 6480     2.223101e+02 -1.467700e+02
-10 6480     2.463600e+02 -1.814500e+02
-15 6480     3.717400e+02 -2.412500e+02
-0 6481     7.933000e+02 -3.047500e+02
-7 6481     6.840900e+02 -6.703998e+01
-0 6482     2.599200e+02 -3.086000e+02
-7 6482     2.155900e+02 -1.520100e+02
-10 6482     2.382900e+02 -1.867200e+02
-13 6482     6.269399e+02 -4.837600e+02
-15 6482     3.624301e+02 -2.476500e+02
-0 6483     1.284600e+02 -3.142300e+02
-7 6483     9.387000e+01 -1.789600e+02
-9 6483     2.242100e+02 -1.452800e+02
-10 6483     8.796002e+01 -2.070200e+02
-13 6483     5.183600e+02 -4.957800e+02
-15 6483     1.825699e+02 -2.712900e+02
-0 6484     7.768300e+02 -3.143200e+02
-7 6484     6.723300e+02 -7.808002e+01
-0 6485     -4.513000e+01 -3.150200e+02
-7 6485     -8.171997e+01 -2.154900e+02
-8 6485     1.735300e+02 -3.510000e+02
-9 6485     6.613000e+01 -2.160800e+02
-10 6485     -1.116300e+02 -2.272300e+02
-13 6485     3.535601e+02 -5.150500e+02
-15 6485     -5.109003e+01 -2.951400e+02
-0 6486     -1.728998e+01 -3.164300e+02
-2 6486     2.159000e+02 -3.681400e+02
-6 6486     3.408002e+01 -3.709600e+02
-7 6486     -5.394000e+01 -2.120600e+02
-8 6486     1.981800e+02 -3.473500e+02
-9 6486     8.922998e+01 -2.114200e+02
-10 6486     -7.931000e+01 -2.256300e+02
-12 6486     3.906000e+01 -3.257900e+02
-13 6486     3.778800e+02 -5.147100e+02
-15 6486     -1.297998e+01 -2.934300e+02
-0 6487     -1.997998e+01 -3.182400e+02
-7 6487     -5.656000e+01 -2.142200e+02
-9 6487     8.701001e+01 -2.141000e+02
-10 6487     -8.195001e+01 -2.280200e+02
-15 6487     -1.659998e+01 -2.961000e+02
-0 6488     1.642200e+02 -3.240000e+02
-7 6488     1.291300e+02 -1.823000e+02
-15 6488     2.325601e+02 -2.800400e+02
-0 6489     6.845699e+02 -3.250000e+02
-7 6489     5.948700e+02 -1.025900e+02
-0 6490     6.796400e+02 -3.502500e+02
-7 6490     5.970900e+02 -1.261500e+02
-0 6491     7.887200e+02 -3.576300e+02
-7 6491     6.916400e+02 -1.144500e+02
-0 6492     7.887200e+02 -3.576300e+02
-7 6492     6.916400e+02 -1.144500e+02
-0 6493     8.373999e+01 -3.641200e+02
-7 6493     5.637000e+01 -2.383300e+02
-15 6493     1.292500e+02 -3.446900e+02
-0 6494     7.391000e+02 -3.787100e+02
-7 6494     6.542700e+02 -1.416000e+02
-0 6495     -6.402002e+01 -3.854000e+02
-9 6495     7.197998e+01 -2.988500e+02
-0 6496     4.721000e+02 -3.929400e+02
-6 6496     5.408000e+02 -2.931500e+02
-0 6497     -2.826600e+02 -3.959500e+02
-6 6497     -2.671800e+02 -5.994600e+02
-0 6498     -2.556800e+02 -3.974600e+02
-7 6498     -2.852700e+02 -3.447800e+02
-15 6498     -3.225400e+02 -4.354301e+02
-0 6499     3.428101e+02 -3.985000e+02
-7 6499     3.050300e+02 -2.277900e+02
-0 6500     8.265997e+01 -4.121600e+02
-7 6500     6.528998e+01 -2.857200e+02
-0 6501     8.682600e+02 -4.124400e+02
-7 6501     7.690699e+02 -1.482700e+02
-0 6502     7.550200e+02 -4.131800e+02
-7 6502     6.753000e+02 -1.688900e+02
-0 6503     4.817800e+02 -4.166000e+02
-6 6503     5.640400e+02 -3.119399e+02
-0 6504     7.807000e+02 -4.166600e+02
-7 6504     6.979500e+02 -1.676700e+02
-0 6505     7.950699e+02 -4.167300e+02
-7 6505     7.097500e+02 -1.652900e+02
-0 6506     1.260010e+00 -4.220600e+02
-7 6506     -1.764001e+01 -3.148500e+02
-15 6506     2.658002e+01 -4.339800e+02
-0 6507     4.749900e+02 -4.221700e+02
-6 6507     5.607600e+02 -3.195200e+02
-0 6508     4.749900e+02 -4.221700e+02
-6 6508     5.607600e+02 -3.195200e+02
-0 6509     -2.115200e+02 -4.231900e+02
-7 6509     -2.334100e+02 -3.609200e+02
-0 6510     8.429800e+02 -4.355500e+02
-7 6510     7.532700e+02 -1.733000e+02
-0 6511     4.417900e+02 -4.385200e+02
-7 6511     4.034399e+02 -2.479800e+02
-15 6511     6.322300e+02 -4.027700e+02
-0 6512     4.377900e+02 -4.404800e+02
-6 6512     5.363101e+02 -3.495900e+02
-15 6512     6.267100e+02 -4.063300e+02
-0 6513     4.456600e+02 -4.513101e+02
-6 6513     5.502500e+02 -3.569100e+02
-0 6514     4.414900e+02 -4.536500e+02
-7 6514     4.068101e+02 -2.619400e+02
-0 6515     4.414900e+02 -4.536500e+02
-6 6515     5.474700e+02 -3.611300e+02
-0 6516     -1.765400e+02 -4.599000e+02
-7 6516     -1.887400e+02 -3.890400e+02
-15 6516     -2.085300e+02 -5.085200e+02
-0 6517     -2.006300e+02 -4.627000e+02
-7 6517     -2.123400e+02 -3.970800e+02
-9 6517     -1.678998e+01 -4.237400e+02
-0 6518     7.961700e+02 -4.660601e+02
-7 6518     7.209900e+02 -2.082700e+02
-0 6519     4.839399e+02 -4.672000e+02
-7 6519     4.488900e+02 -2.664700e+02
-0 6520     -3.074200e+02 -4.759200e+02
-7 6520     -3.191100e+02 -4.329399e+02
-0 6521     -1.350900e+02 -4.774301e+02
-7 6521     -1.419800e+02 -3.975800e+02
-0 6522     -2.929500e+02 -4.783300e+02
-6 6522     -2.204200e+02 -6.929900e+02
-7 6522     -3.034200e+02 -4.320900e+02
-0 6523     7.361300e+02 -4.788300e+02
-7 6523     6.738800e+02 -2.303600e+02
-0 6524     -2.481100e+02 -4.822300e+02
-6 6524     -1.635900e+02 -6.745400e+02
-0 6525     -1.555700e+02 -4.857300e+02
-4 6525     -6.232400e+02 -2.614500e+02
-6 6525     -5.196997e+01 -6.342100e+02
-7 6525     -1.606400e+02 -4.102500e+02
-12 6525     -6.896997e+01 -5.824700e+02
-0 6526     4.245500e+02 -4.892300e+02
-6 6526     5.525100e+02 -4.006801e+02
-12 6526     5.844800e+02 -3.858100e+02
-0 6527     7.376801e+02 -4.896100e+02
-7 6527     6.768600e+02 -2.398500e+02
-0 6528     -1.954700e+02 -4.933400e+02
-6 6528     -9.316000e+01 -6.609500e+02
-0 6529     4.225200e+02 -4.946700e+02
-6 6529     5.540200e+02 -4.066400e+02
-7 6529     3.993400e+02 -3.029600e+02
-0 6530     -2.772500e+02 -4.962900e+02
-6 6530     -1.903400e+02 -7.040400e+02
-0 6531     7.064500e+02 -4.961000e+02
-7 6531     6.522900e+02 -2.510300e+02
-10 6531     7.705400e+02 -3.546700e+02
-0 6532     -1.264500e+02 -5.005100e+02
-9 6532     7.916998e+01 -4.195100e+02
-0 6533     4.317600e+02 -5.027300e+02
-7 6533     4.097500e+02 -3.083000e+02
-0 6534     5.183000e+02 -5.097800e+02
-7 6534     4.898101e+02 -2.984300e+02
-10 6534     5.545900e+02 -3.895900e+02
-0 6535     -3.231800e+02 -5.107300e+02
-6 6535     -2.350700e+02 -7.436600e+02
-7 6535     -3.263900e+02 -4.705400e+02
-10 6535     -4.124100e+02 -4.859100e+02
-0 6536     -1.879700e+02 -5.124500e+02
-7 6536     -1.870000e+02 -4.425200e+02
-0 6537     -3.685999e+01 -5.168400e+02
-7 6537     -3.409998e+01 -4.148200e+02
-15 6537     -1.314001e+01 -5.675000e+02
-0 6538     5.332200e+02 -5.180800e+02
-10 6538     5.725100e+02 -3.969400e+02
-12 6538     7.101400e+02 -3.801600e+02
-0 6539     7.591300e+02 -5.225601e+02
-7 6539     7.020900e+02 -2.647000e+02
-0 6540     -1.993200e+02 -5.288600e+02
-7 6540     -1.943500e+02 -4.612800e+02
-10 6540     -2.661200e+02 -4.914500e+02
-0 6541     8.295900e+02 -5.307600e+02
-7 6541     7.617900e+02 -2.585500e+02
-0 6542     -1.384000e+02 -5.309301e+02
-6 6542     -1.429993e+00 -6.734200e+02
-0 6543     -4.566400e+02 -5.323400e+02
-7 6543     -4.608100e+02 -5.218000e+02
-0 6544     -9.317999e+01 -5.339399e+02
-6 6544     5.096002e+01 -6.549500e+02
-7 6544     -8.594000e+01 -4.427800e+02
-0 6545     3.645900e+02 -5.340800e+02
-12 6545     5.449200e+02 -4.507600e+02
-0 6546     -1.259100e+02 -5.377500e+02
-4 6546     -6.771800e+02 -2.851500e+02
-9 6546     1.060500e+02 -4.445400e+02
-0 6547     1.082200e+02 -5.405100e+02
-6 6547     2.709100e+02 -5.735400e+02
-10 6547     8.903998e+01 -4.683300e+02
-15 6547     1.859700e+02 -5.812200e+02
-0 6548     -8.076001e+01 -5.422100e+02
-6 6548     7.053003e+01 -6.580000e+02
-0 6549     7.011600e+02 -5.439399e+02
-7 6549     6.577800e+02 -2.942200e+02
-10 6549     7.685900e+02 -4.100000e+02
-0 6550     6.140002e+01 -5.459399e+02
-2 6550     4.178600e+02 -5.879200e+02
-6 6550     2.262800e+02 -5.985500e+02
-0 6551     3.604399e+02 -5.458400e+02
-12 6551     5.466600e+02 -4.644000e+02
-0 6552     -2.041000e+02 -5.464000e+02
-7 6552     -1.948200e+02 -4.793900e+02
-0 6553     3.443300e+02 -5.464900e+02
-7 6553     3.393300e+02 -3.656700e+02
-10 6553     3.588400e+02 -4.494301e+02
-0 6554     -1.489001e+01 -5.471400e+02
-7 6554     -5.049988e+00 -4.390500e+02
-0 6555     6.117999e+01 -5.487300e+02
-4 6555     -7.397900e+02 -4.436899e+02
-6 6555     2.272500e+02 -6.015900e+02
-7 6555     7.028003e+01 -4.248700e+02
-10 6555     3.565997e+01 -4.829200e+02
-0 6556     1.454800e+02 -5.496200e+02
-7 6556     1.521500e+02 -4.084800e+02
-10 6556     1.333400e+02 -4.740300e+02
-0 6557     -2.514300e+02 -5.498199e+02
-7 6557     -2.421200e+02 -4.930900e+02
-10 6557     -3.243400e+02 -5.220300e+02
-0 6558     1.591000e+02 -5.500800e+02
-6 6558     3.289400e+02 -5.620400e+02
-10 6558     1.479500e+02 -4.734000e+02
-0 6559     -7.452002e+01 -5.507500e+02
-4 6559     -7.027300e+02 -3.282700e+02
-9 6559     1.603500e+02 -4.321000e+02
-0 6560     1.111000e+02 -5.511300e+02
-7 6560     1.194500e+02 -4.165500e+02
-0 6561     3.295000e+02 -5.509000e+02
-12 6561     5.158800e+02 -4.796300e+02
-0 6562     2.389000e+02 -5.517700e+02
-6 6562     4.105600e+02 -5.312100e+02
-7 6562     2.418400e+02 -3.916300e+02
-10 6562     2.393800e+02 -4.667800e+02
-0 6563     2.535999e+01 -5.531899e+02
-2 6563     3.871500e+02 -6.072700e+02
-0 6564     6.512900e+02 -5.558101e+02
-7 6564     6.172500e+02 -3.139400e+02
-0 6565     5.790200e+02 -5.563500e+02
-7 6565     5.546500e+02 -3.283600e+02
-10 6565     6.291200e+02 -4.363900e+02
-0 6566     4.189001e+01 -5.591600e+02
-2 6566     4.087300e+02 -6.058900e+02
-7 6566     5.387000e+01 -4.386000e+02
-12 6566     2.028700e+02 -5.897300e+02
-0 6567     4.189001e+01 -5.591600e+02
-2 6567     4.087300e+02 -6.058900e+02
-7 6567     5.387000e+01 -4.386000e+02
-9 6567     2.612900e+02 -3.953200e+02
-12 6567     2.028700e+02 -5.897300e+02
-0 6568     1.920900e+02 -5.619500e+02
-7 6568     2.001000e+02 -4.103200e+02
-10 6568     1.871800e+02 -4.835601e+02
-0 6569     4.395200e+02 -5.620000e+02
-7 6569     4.309800e+02 -3.613200e+02
-0 6570     4.165300e+02 -5.624000e+02
-7 6570     4.099600e+02 -3.658900e+02
-0 6571     3.284998e+01 -5.628600e+02
-2 6571     4.026700e+02 -6.126899e+02
-12 6571     1.944600e+02 -5.979100e+02
-0 6572     1.294800e+02 -5.631600e+02
-6 6572     3.071900e+02 -5.868300e+02
-7 6572     1.400800e+02 -4.242400e+02
-10 6572     1.155500e+02 -4.914500e+02
-0 6573     2.425000e+02 -5.636600e+02
-7 6573     2.480699e+02 -4.016000e+02
-0 6574     2.425000e+02 -5.636600e+02
-6 6574     4.214200e+02 -5.409700e+02
-7 6574     2.480699e+02 -4.016000e+02
-12 6574     4.297900e+02 -5.231200e+02
-0 6575     2.425000e+02 -5.636600e+02
-6 6575     4.214200e+02 -5.409700e+02
-7 6575     2.480699e+02 -4.016000e+02
-12 6575     4.297900e+02 -5.231200e+02
-0 6576     -2.059003e+01 -5.640100e+02
-4 6576     -7.310200e+02 -3.733000e+02
-6 6576     1.506600e+02 -6.528900e+02
-7 6576     -6.099976e+00 -4.561400e+02
-9 6576     2.146000e+02 -4.211100e+02
-10 6576     -5.587000e+01 -5.100100e+02
-12 6576     1.321800e+02 -6.184200e+02
-0 6577     6.414200e+02 -5.646600e+02
-7 6577     6.109200e+02 -3.241200e+02
-10 6577     7.016700e+02 -4.397800e+02
-0 6578     1.414301e+02 -5.656600e+02
-6 6578     3.201800e+02 -5.851801e+02
-0 6579     7.461200e+02 -5.660100e+02
-7 6579     7.001200e+02 -3.049900e+02
-0 6580     -2.326001e+01 -5.674500e+02
-6 6580     1.500400e+02 -6.574600e+02
-10 6580     -5.853998e+01 -5.138900e+02
-0 6581     1.169400e+02 -5.690699e+02
-6 6581     2.981500e+02 -5.983300e+02
-0 6582     -2.151001e+01 -5.696300e+02
-7 6582     -5.719971e+00 -4.620400e+02
-10 6582     -5.622998e+01 -5.160000e+02
-0 6583     -2.151001e+01 -5.696300e+02
-6 6583     1.532200e+02 -6.585200e+02
-7 6583     -5.719971e+00 -4.620400e+02
-10 6583     -5.622998e+01 -5.160000e+02
-0 6584     3.813700e+02 -5.783400e+02
-7 6584     3.813900e+02 -3.873600e+02
-0 6585     6.638000e+01 -5.814301e+02
-7 6585     8.365002e+01 -4.547200e+02
-10 6585     4.528003e+01 -5.197700e+02
-0 6586     3.992100e+02 -5.812300e+02
-7 6586     3.986600e+02 -3.865500e+02
-10 6586     4.255900e+02 -4.837800e+02
-12 6586     6.065100e+02 -4.878400e+02
-0 6587     6.232001e+01 -5.842600e+02
-7 6587     8.039001e+01 -4.582800e+02
-10 6587     4.152002e+01 -5.234700e+02
-12 6587     2.395100e+02 -6.095200e+02
-0 6588     6.642700e+02 -5.854301e+02
-7 6588     6.351700e+02 -3.380700e+02
-10 6588     7.299600e+02 -4.611300e+02
-0 6589     6.642700e+02 -5.854301e+02
-7 6589     6.351700e+02 -3.380700e+02
-10 6589     7.299600e+02 -4.611300e+02
-0 6590     -5.850900e+02 5.859000e+02
-5 6590     -1.484300e+02 -5.990997e+01
-13 6590     -2.657700e+02 2.152800e+02
-14 6590     -2.329000e+02 -1.581000e+02
-0 6591     2.479500e+02 5.854900e+02
-2 6591     -8.077002e+01 3.547300e+02
-14 6591     5.482700e+02 -1.380900e+02
-0 6592     -5.220400e+02 5.850200e+02
-2 6592     -8.185600e+02 3.706600e+02
-5 6592     -8.931000e+01 -6.138000e+01
-8 6592     -5.912800e+02 2.736200e+02
-11 6592     -2.989000e+02 -1.990400e+02
-13 6592     -2.166500e+02 2.174400e+02
-0 6593     -5.285500e+02 5.832000e+02
-2 6593     -8.246900e+02 3.677000e+02
-5 6593     -9.444000e+01 -6.394000e+01
-8 6593     -5.952500e+02 2.711900e+02
-0 6594     3.718900e+02 5.831500e+02
-2 6594     2.300000e+01 3.527100e+02
-3 6594     -1.226300e+02 1.751001e+01
-6 6594     -9.760001e+01 6.989200e+02
-8 6594     9.970001e+01 2.775600e+02
-9 6594     -1.354300e+02 3.809600e+02
-11 6594     4.745800e+02 -1.744800e+02
-13 6594     4.805699e+02 2.632800e+02
-14 6594     6.685100e+02 -1.331500e+02
-0 6595     -3.304100e+02 5.822500e+02
-2 6595     -6.150600e+02 3.596400e+02
-5 6595     9.082001e+01 -6.604999e+01
-11 6595     -1.407400e+02 -2.009100e+02
-12 6595     -6.900300e+02 5.649700e+02
-13 6595     -6.778998e+01 2.230400e+02
-14 6595     3.669983e+00 -1.597000e+02
-0 6596     -3.304100e+02 5.822500e+02
-5 6596     9.082001e+01 -6.604999e+01
-11 6596     -1.407400e+02 -2.009100e+02
-12 6596     -6.900300e+02 5.649700e+02
-13 6596     -6.778998e+01 2.230400e+02
-14 6596     3.669983e+00 -1.597000e+02
-0 6597     -1.819300e+02 5.820100e+02
-2 6597     -4.679500e+02 3.550700e+02
-5 6597     2.324900e+02 -6.634003e+01
-13 6597     4.770001e+01 2.293700e+02
-14 6597     1.423700e+02 -1.578300e+02
-0 6598     4.443800e+02 5.820000e+02
-2 6598     8.172998e+01 3.515700e+02
-3 6598     -6.804999e+01 1.656000e+01
-6 6598     -2.362000e+01 7.112600e+02
-8 6598     1.492400e+02 2.779800e+02
-9 6598     -8.596997e+01 3.819800e+02
-11 6598     5.403600e+02 -1.711800e+02
-14 6598     7.388199e+02 -1.298500e+02
-0 6599     4.443800e+02 5.820000e+02
-2 6599     8.172998e+01 3.515700e+02
-6 6599     -2.362000e+01 7.112600e+02
-8 6599     1.492400e+02 2.779800e+02
-9 6599     -8.596997e+01 3.819800e+02
-14 6599     7.388199e+02 -1.298500e+02
-0 6600     -3.479300e+02 5.816400e+02
-2 6600     -6.326500e+02 3.596900e+02
-13 6600     -8.135999e+01 2.218600e+02
-14 6600     -1.269000e+01 -1.604800e+02
-0 6601     -4.694200e+02 5.806100e+02
-2 6601     -7.609300e+02 3.626500e+02
-8 6601     -5.445800e+02 2.689400e+02
-14 6601     -1.257300e+02 -1.621400e+02
-0 6602     -4.837800e+02 5.800200e+02
-2 6602     -7.768600e+02 3.621800e+02
-5 6602     -5.420001e+01 -6.667999e+01
-11 6602     -2.687900e+02 -2.038500e+02
-0 6603     -4.837800e+02 5.800200e+02
-5 6603     -5.420001e+01 -6.667999e+01
-0 6604     8.128003e+01 5.801000e+02
-2 6604     -2.243300e+02 3.495700e+02
-0 6605     8.128003e+01 5.801000e+02
-2 6605     -2.243300e+02 3.495700e+02
-0 6606     2.626899e+02 5.797400e+02
-2 6606     -6.744000e+01 3.481900e+02
-3 6606     -2.083300e+02 1.379999e+01
-5 6606     6.624399e+02 -5.985999e+01
-9 6606     -2.124000e+02 3.740700e+02
-0 6607     -3.099600e+02 5.784300e+02
-2 6607     -5.944800e+02 3.546000e+02
-5 6607     1.100900e+02 -6.981000e+01
-8 6607     -4.097300e+02 2.664000e+02
-12 6607     -6.651900e+02 5.627200e+02
-13 6607     -5.190997e+01 2.209000e+02
-14 6607     2.246997e+01 -1.631000e+02
-0 6608     -2.418300e+02 5.784000e+02
-5 6608     1.757100e+02 -6.992999e+01
-11 6608     -6.534003e+01 -2.026800e+02
-12 6608     -5.855200e+02 5.718100e+02
-0 6609     -5.672800e+02 5.771900e+02
-14 6609     -2.171000e+02 -1.664000e+02
-0 6610     -1.847600e+02 5.755200e+02
-2 6610     -4.705800e+02 3.483400e+02
-0 6611     -1.847600e+02 5.755200e+02
-2 6611     -4.705800e+02 3.483400e+02
-3 6611     -5.941400e+02 1.804999e+01
-5 6611     2.295400e+02 -7.314001e+01
-12 6611     -5.207400e+02 5.742600e+02
-13 6611     4.556000e+01 2.237300e+02
-14 6611     1.396000e+02 -1.643100e+02
-0 6612     2.736300e+02 5.754300e+02
-6 6612     -1.973900e+02 6.710900e+02
-0 6613     -4.390100e+02 5.732500e+02
-2 6613     -7.283000e+02 3.526500e+02
-11 6613     -2.314900e+02 -2.083400e+02
-14 6613     -9.821997e+01 -1.697400e+02
-0 6614     2.771300e+02 5.729000e+02
-2 6614     -5.409998e+01 3.411700e+02
-5 6614     6.775200e+02 -6.619000e+01
-13 6614     4.058800e+02 2.481900e+02
-14 6614     5.774600e+02 -1.490400e+02
-0 6615     -5.036200e+02 5.715200e+02
-2 6615     -7.985300e+02 3.532200e+02
-5 6615     -7.402002e+01 -7.534998e+01
-8 6615     -5.744400e+02 2.602800e+02
-14 6615     -1.589300e+02 -1.714200e+02
-0 6616     3.909100e+02 5.715500e+02
-2 6616     4.027002e+01 3.412600e+02
-5 6616     7.916899e+02 -6.314001e+01
-6 6616     -7.577002e+01 6.885000e+02
-8 6616     1.146400e+02 2.687400e+02
-9 6616     -1.205400e+02 3.715800e+02
-11 6616     4.938700e+02 -1.830600e+02
-13 6616     4.961200e+02 2.551400e+02
-14 6616     6.877900e+02 -1.433100e+02
-0 6617     4.225000e+02 5.712500e+02
-2 6617     6.608002e+01 3.406200e+02
-6 6617     -4.350000e+01 6.938900e+02
-9 6617     -9.875000e+01 3.715800e+02
-11 6617     5.225300e+02 -1.814900e+02
-0 6618     4.395800e+02 5.710000e+02
-2 6618     7.978998e+01 3.405400e+02
-11 6618     5.384399e+02 -1.808200e+02
-14 6618     7.359000e+02 -1.406700e+02
-0 6619     3.745300e+02 5.694400e+02
-2 6619     2.709998e+01 3.390800e+02
-5 6619     7.753900e+02 -6.571997e+01
-6 6619     -9.226001e+01 6.830700e+02
-8 6619     1.037300e+02 2.666500e+02
-9 6619     -1.314900e+02 3.692600e+02
-11 6619     4.787600e+02 -1.858800e+02
-13 6619     4.833800e+02 2.524800e+02
-14 6619     6.720200e+02 -1.464200e+02
-0 6620     -2.258200e+02 5.681900e+02
-5 6620     1.896300e+02 -8.059003e+01
-12 6620     -5.659700e+02 5.601700e+02
-0 6621     5.688000e+02 5.677000e+02
-2 6621     3.168600e+02 4.669800e+02
-3 6621     1.716200e+02 1.309000e+02
-6 6621     2.320700e+02 7.443300e+02
-8 6621     3.285800e+02 3.604900e+02
-9 6621     1.216700e+02 4.899900e+02
-13 6621     7.048300e+02 2.746200e+02
-0 6622     -1.460200e+02 5.671100e+02
-2 6622     -4.329500e+02 3.379700e+02
-3 6622     -5.577000e+02 7.539978e+00
-12 6622     -4.760300e+02 5.694500e+02
-14 6622     1.754000e+02 -1.714800e+02
-0 6623     2.684600e+02 5.668800e+02
-4 6623     3.889001e+01 -5.388700e+02
-6 6623     -1.998800e+02 6.603500e+02
-8 6623     3.128003e+01 2.625200e+02
-9 6623     -2.045500e+02 3.642700e+02
-11 6623     3.847600e+02 -1.932200e+02
-13 6623     3.995699e+02 2.425700e+02
-14 6623     5.694600e+02 -1.555400e+02
-0 6624     2.554200e+02 5.665400e+02
-2 6624     -7.215002e+01 3.341900e+02
-9 6624     -2.160000e+02 3.621500e+02
-11 6624     3.704500e+02 -1.957400e+02
-14 6624     5.566000e+02 -1.566600e+02
-0 6625     -4.456600e+02 5.654500e+02
-2 6625     -7.358200e+02 3.435300e+02
-13 6625     -1.580100e+02 2.043700e+02
-0 6626     4.295000e+02 5.647400e+02
-9 6626     -9.256000e+01 3.665400e+02
-0 6627     -4.489400e+02 5.641800e+02
-2 6627     -7.386800e+02 3.417800e+02
-8 6627     -5.268700e+02 2.538800e+02
-11 6627     -2.404800e+02 -2.159100e+02
-0 6628     1.274700e+02 5.637000e+02
-2 6628     -1.813900e+02 3.321500e+02
-3 6628     -3.167700e+02 -2.039978e+00
-5 6628     5.307300e+02 -8.000000e+01
-6 6628     -3.506100e+02 6.290000e+02
-9 6628     -3.084700e+02 3.570400e+02
-11 6628     2.565300e+02 -2.044200e+02
-12 6628     -1.802600e+02 6.004300e+02
-14 6628     4.352100e+02 -1.652100e+02
-0 6629     -9.821997e+01 5.612400e+02
-5 6629     3.117900e+02 -8.720001e+01
-0 6630     5.076100e+02 5.614900e+02
-2 6630     2.513101e+02 4.410100e+02
-3 6630     1.088400e+02 1.056200e+02
-6 6630     1.552800e+02 7.221800e+02
-9 6630     6.538000e+01 4.656000e+02
-11 6630     5.855800e+02 -1.867000e+02
-13 6630     6.465200e+02 2.635300e+02
-14 6630     8.741000e+02 -1.382800e+02
-0 6631     2.569200e+02 5.600700e+02
-2 6631     -6.921997e+01 3.274700e+02
-3 6631     -2.101000e+02 -6.650024e+00
-4 6631     3.537000e+01 -5.299700e+02
-5 6631     6.585500e+02 -7.957001e+01
-6 6631     -2.120900e+02 6.491300e+02
-8 6631     2.316998e+01 2.560900e+02
-9 6631     -2.127900e+02 3.564800e+02
-11 6631     3.739900e+02 -2.006900e+02
-12 6631     -4.634003e+01 6.118000e+02
-13 6631     3.905200e+02 2.360100e+02
-14 6631     5.589000e+02 -1.630800e+02
-0 6632     2.517100e+02 5.590300e+02
-2 6632     -7.439001e+01 3.262100e+02
-5 6632     6.522600e+02 -8.126001e+01
-6 6632     -2.180800e+02 6.464800e+02
-8 6632     1.885999e+01 2.548400e+02
-9 6632     -2.172800e+02 3.551600e+02
-11 6632     3.685200e+02 -2.020700e+02
-13 6632     3.863101e+02 2.349200e+02
-14 6632     5.536400e+02 -1.643200e+02
-0 6633     6.065100e+02 5.574100e+02
-8 6633     3.625300e+02 3.615500e+02
-9 6633     1.579900e+02 4.928800e+02
-11 6633     6.722200e+02 -1.840400e+02
-13 6633     7.416600e+02 2.699700e+02
-0 6634     2.665699e+02 5.571800e+02
-2 6634     -6.115997e+01 3.249600e+02
-8 6634     3.017999e+01 2.542500e+02
-0 6635     2.297100e+02 5.563700e+02
-2 6635     -9.240997e+01 3.233300e+02
-5 6635     6.307700e+02 -8.469000e+01
-8 6635     3.650024e+00 2.524800e+02
-12 6635     -7.309998e+01 6.045600e+02
-13 6635     3.698600e+02 2.314200e+02
-14 6635     5.333700e+02 -1.680200e+02
-0 6636     2.569200e+02 5.563800e+02
-12 6636     -4.437000e+01 6.087700e+02
-0 6637     5.626600e+02 5.566900e+02
-2 6637     3.130100e+02 4.552500e+02
-3 6637     1.681000e+02 1.200200e+02
-6 6637     2.272600e+02 7.312000e+02
-8 6637     3.253300e+02 3.510600e+02
-13 6637     7.001400e+02 2.653600e+02
-0 6638     4.269100e+02 5.554700e+02
-11 6638     5.293500e+02 -1.944400e+02
-13 6638     5.256600e+02 2.437100e+02
-14 6638     7.251899e+02 -1.577400e+02
-0 6639     -4.528300e+02 5.547900e+02
-2 6639     -7.439400e+02 3.319300e+02
-14 6639     -1.134200e+02 -1.874200e+02
-0 6640     -4.410500e+02 5.543000e+02
-7 6640     -6.829600e+02 5.822100e+02
-11 6640     -2.341400e+02 -2.235000e+02
-13 6640     -1.547300e+02 1.955600e+02
-14 6640     -1.023300e+02 -1.880300e+02
-0 6641     2.683400e+02 5.542900e+02
-2 6641     -5.881000e+01 3.215500e+02
-4 6641     3.071002e+01 -5.379500e+02
-5 6641     6.698600e+02 -8.591998e+01
-6 6641     -1.979000e+02 6.439000e+02
-8 6641     3.238000e+01 2.514500e+02
-9 6641     -2.035100e+02 3.513300e+02
-11 6641     3.859301e+02 -2.051500e+02
-12 6641     -3.231000e+01 6.069100e+02
-13 6641     4.008800e+02 2.319600e+02
-0 6642     -4.337200e+02 5.541800e+02
-5 6642     -1.040997e+01 -9.321997e+01
-7 6642     -6.752300e+02 5.822800e+02
-11 6642     -2.281600e+02 -2.238800e+02
-12 6642     -8.096100e+02 5.176800e+02
-13 6642     -1.492100e+02 1.956200e+02
-14 6642     -9.547998e+01 -1.882700e+02
-0 6643     3.513000e+01 5.537300e+02
-2 6643     -2.635300e+02 3.213100e+02
-3 6643     -3.949000e+02 -1.201001e+01
-5 6643     4.397300e+02 -9.247998e+01
-6 6643     -4.494300e+02 5.987900e+02
-8 6643     -1.370900e+02 2.471800e+02
-9 6643     -3.779600e+02 3.449400e+02
-0 6644     3.088300e+02 5.534000e+02
-11 6644     4.213900e+02 -2.037600e+02
-13 6644     4.318500e+02 2.339500e+02
-14 6644     6.095300e+02 -1.668700e+02
-0 6645     -4.299500e+02 5.531300e+02
-2 6645     -7.193300e+02 3.281900e+02
-5 6645     -6.989990e+00 -9.417999e+01
-0 6646     3.183500e+02 5.529400e+02
-12 6646     1.740997e+01 6.134500e+02
-13 6646     4.397400e+02 2.342000e+02
-0 6647     3.183500e+02 5.529400e+02
-2 6647     -1.709998e+01 3.200700e+02
-0 6648     5.026600e+02 5.527300e+02
-2 6648     2.480500e+02 4.317100e+02
-6 6648     1.508700e+02 7.116500e+02
-9 6648     6.259998e+01 4.574400e+02
-13 6648     6.429100e+02 2.560400e+02
-14 6648     8.700100e+02 -1.467900e+02
-0 6649     4.372900e+02 5.517200e+02
-9 6649     -8.567999e+01 3.550900e+02
-13 6649     5.335400e+02 2.416200e+02
-14 6649     7.348800e+02 -1.608300e+02
-0 6650     4.679399e+02 5.512000e+02
-14 6650     7.663700e+02 -1.588200e+02
-0 6651     -4.452800e+02 5.508900e+02
-14 6651     -1.060000e+02 -1.913900e+02
-0 6652     -6.175100e+02 5.502900e+02
-11 6652     -3.790000e+02 -2.265000e+02
-13 6652     -2.924300e+02 1.850400e+02
-14 6652     -2.673700e+02 -1.925700e+02
-0 6653     -6.175100e+02 5.502900e+02
-11 6653     -3.790000e+02 -2.265000e+02
-13 6653     -2.924300e+02 1.850400e+02
-14 6653     -2.673700e+02 -1.925700e+02
-0 6654     3.704999e+01 5.504600e+02
-9 6654     -3.746200e+02 3.425800e+02
-12 6654     -2.730200e+02 5.746800e+02
-0 6655     2.293600e+02 5.503800e+02
-4 6655     3.042999e+01 -5.100699e+02
-14 6655     5.332400e+02 -1.734200e+02
-0 6656     3.217400e+02 5.498100e+02
-2 6656     -1.382001e+01 3.169400e+02
-5 6656     7.228199e+02 -8.873999e+01
-6 6656     -1.426000e+02 6.483800e+02
-8 6656     6.923999e+01 2.483500e+02
-9 6656     -1.654100e+02 3.491400e+02
-11 6656     4.333400e+02 -2.061300e+02
-12 6656     2.134998e+01 6.084400e+02
-13 6656     4.423900e+02 2.317500e+02
-14 6656     6.225699e+02 -1.698800e+02
-0 6657     4.625300e+02 5.498300e+02
-13 6657     5.544600e+02 2.421200e+02
-14 6657     7.608900e+02 -1.608500e+02
-0 6658     2.065100e+02 5.494400e+02
-2 6658     -1.116900e+02 3.161000e+02
-5 6658     6.078900e+02 -9.265997e+01
-6 6658     -2.635700e+02 6.253600e+02
-12 6658     -9.622998e+01 5.929500e+02
-14 6658     5.108700e+02 -1.761300e+02
-0 6659     5.704000e+02 5.488100e+02
-6 6659     2.384400e+02 7.237000e+02
-0 6660     -7.284600e+02 5.483600e+02
-4 6660     7.520001e+01 4.651001e+01
-5 6660     -3.968600e+02 -1.037500e+02
-13 6660     -4.624500e+02 1.641900e+02
-14 6660     -4.727300e+02 -2.050400e+02
-0 6661     -3.254100e+02 5.484800e+02
-2 6661     -6.096500e+02 3.199000e+02
-5 6661     9.251001e+01 -9.964001e+01
-7 6661     -5.605900e+02 5.863000e+02
-13 6661     -6.459998e+01 1.952200e+02
-14 6661     5.640015e+00 -1.930300e+02
-0 6662     -3.254100e+02 5.484800e+02
-7 6662     -5.605900e+02 5.863000e+02
-0 6663     6.672700e+02 5.480800e+02
-2 6663     4.718101e+02 5.274200e+02
-3 6663     3.224200e+02 1.893400e+02
-6 6663     4.013400e+02 7.555700e+02
-0 6664     6.672700e+02 5.480800e+02
-2 6664     4.718101e+02 5.274200e+02
-3 6664     3.224200e+02 1.893400e+02
-6 6664     4.013400e+02 7.555700e+02
-13 6664     8.244800e+02 2.722000e+02
-0 6665     5.488101e+02 5.470600e+02
-2 6665     2.998400e+02 4.417900e+02
-6 6665     2.119200e+02 7.164800e+02
-8 6665     3.145300e+02 3.400300e+02
-9 6665     1.082500e+02 4.676700e+02
-13 6665     6.876300e+02 2.561900e+02
-0 6666     5.522998e+01 5.465200e+02
-2 6666     -2.440300e+02 3.138800e+02
-8 6666     -1.213200e+02 2.419300e+02
-9 6666     -3.612600e+02 3.393800e+02
-11 6666     1.934500e+02 -2.216500e+02
-12 6666     -2.534500e+02 5.724700e+02
-13 6666     2.327600e+02 2.125200e+02
-0 6667     5.522998e+01 5.465200e+02
-2 6667     -2.440300e+02 3.138800e+02
-8 6667     -1.213200e+02 2.419300e+02
-9 6667     -3.612600e+02 3.393800e+02
-11 6667     1.934500e+02 -2.216500e+02
-13 6667     2.327600e+02 2.125200e+02
-0 6668     5.295300e+02 5.432800e+02
-2 6668     2.799399e+02 4.320400e+02
-3 6668     1.366200e+02 9.771997e+01
-6 6668     1.880200e+02 7.081100e+02
-9 6668     9.075000e+01 4.579700e+02
-13 6668     6.697200e+02 2.514700e+02
-0 6669     6.541300e+02 5.425300e+02
-3 6669     3.072000e+02 1.785300e+02
-6 6669     3.841900e+02 7.458400e+02
-8 6669     4.387000e+02 3.953700e+02
-9 6669     2.437900e+02 5.355000e+02
-11 6669     7.106801e+02 -1.954500e+02
-0 6670     6.541300e+02 5.425300e+02
-6 6670     3.841900e+02 7.458400e+02
-0 6671     6.644700e+02 5.416800e+02
-2 6671     4.681400e+02 5.189000e+02
-3 6671     3.190000e+02 1.814200e+02
-6 6671     3.974400e+02 7.476900e+02
-8 6671     4.482800e+02 3.978400e+02
-9 6671     2.538600e+02 5.385400e+02
-13 6671     8.217200e+02 2.667900e+02
-0 6672     -5.940200e+02 5.412500e+02
-5 6672     -1.643400e+02 -1.041600e+02
-13 6672     -2.751700e+02 1.785800e+02
-14 6672     -2.471100e+02 -2.013300e+02
-0 6673     4.597200e+02 5.367000e+02
-14 6673     7.598700e+02 -1.740900e+02
-0 6674     4.516400e+02 5.358700e+02
-2 6674     9.490002e+01 3.052500e+02
-13 6674     5.466801e+02 2.298800e+02
-14 6674     7.521000e+02 -1.762500e+02
-0 6675     1.594600e+02 5.351600e+02
-12 6675     -1.414800e+02 5.712400e+02
-0 6676     6.692200e+02 5.349500e+02
-2 6676     4.732400e+02 5.140200e+02
-6 6676     4.037600e+02 7.415700e+02
-11 6676     7.260500e+02 -2.011900e+02
-0 6677     6.692200e+02 5.349500e+02
-2 6677     4.732400e+02 5.140200e+02
-6 6677     4.037600e+02 7.415700e+02
-8 6677     4.530300e+02 3.938100e+02
-11 6677     7.260500e+02 -2.011900e+02
-0 6678     1.561000e+02 5.324900e+02
-11 6678     2.853700e+02 -2.296200e+02
-12 6678     -1.447800e+02 5.677600e+02
-13 6678     3.123199e+02 2.066500e+02
-14 6678     4.629600e+02 -1.963300e+02
-0 6679     3.054600e+02 5.315000e+02
-14 6679     6.281899e+02 -1.844100e+02
-0 6680     -4.449200e+02 5.307200e+02
-5 6680     -2.384003e+01 -1.167700e+02
-0 6681     4.580500e+02 5.306100e+02
-2 6681     1.012500e+02 2.991400e+02
-13 6681     5.515000e+02 2.250900e+02
-14 6681     7.582500e+02 -1.811300e+02
-0 6682     -2.327002e+01 5.291400e+02
-3 6682     -4.445200e+02 -3.852002e+01
-0 6683     -4.445800e+02 5.269500e+02
-2 6683     -7.349800e+02 2.969500e+02
-12 6683     -8.181800e+02 4.827300e+02
-14 6683     -1.088600e+02 -2.154900e+02
-0 6684     6.056200e+02 5.269100e+02
-8 6684     3.681300e+02 3.402300e+02
-13 6684     7.445400e+02 2.454700e+02
-0 6685     -6.115000e+02 5.261600e+02
-13 6685     -2.895300e+02 1.651800e+02
-14 6685     -2.659300e+02 -2.166600e+02
-0 6686     7.179200e+02 5.238300e+02
-2 6686     5.278900e+02 5.230100e+02
-3 6686     3.750000e+02 1.859200e+02
-6 6686     4.662000e+02 7.420500e+02
-8 6686     4.977500e+02 4.006200e+02
-9 6686     3.048199e+02 5.435400e+02
-13 6686     8.749000e+02 2.583500e+02
-0 6687     -5.576600e+02 5.224700e+02
-5 6687     -1.324000e+02 -1.229300e+02
-7 6687     -8.053000e+02 5.366200e+02
-13 6687     -2.477100e+02 1.644800e+02
-14 6687     -2.160200e+02 -2.201200e+02
-0 6688     4.342700e+02 5.222100e+02
-2 6688     7.912000e+01 2.862400e+02
-3 6688     -7.040997e+01 -4.628003e+01
-12 6688     1.363700e+02 5.906900e+02
-0 6689     -2.933100e+02 5.189500e+02
-2 6689     -5.763800e+02 2.839000e+02
-12 6689     -6.353600e+02 4.916000e+02
-0 6690     3.657800e+02 5.180000e+02
-2 6690     2.762000e+01 2.834400e+02
-6 6690     -9.044000e+01 6.172400e+02
-12 6690     7.142999e+01 5.771100e+02
-13 6690     4.790000e+02 2.078600e+02
-0 6691     3.943700e+02 5.175900e+02
-2 6691     5.015002e+01 2.839400e+02
-6 6691     -6.353003e+01 6.221100e+02
-0 6692     7.169983e+00 5.138600e+02
-2 6692     -2.860500e+02 2.760800e+02
-5 6692     4.122900e+02 -1.345400e+02
-6 6692     -4.737700e+02 5.408100e+02
-7 6692     -2.216200e+02 5.830000e+02
-8 6692     -1.555800e+02 2.110900e+02
-9 6692     -3.957900e+02 3.045300e+02
-11 6692     1.528500e+02 -2.516500e+02
-14 6692     3.204100e+02 -2.209900e+02
-0 6693     7.169983e+00 5.138600e+02
-2 6693     -2.860500e+02 2.760800e+02
-5 6693     4.122900e+02 -1.345400e+02
-7 6693     -2.216200e+02 5.830000e+02
-8 6693     -1.555800e+02 2.110900e+02
-9 6693     -3.957900e+02 3.045300e+02
-14 6693     3.204100e+02 -2.209900e+02
-0 6694     -2.036300e+02 5.136900e+02
-3 6694     -6.126800e+02 -5.227002e+01
-0 6695     -1.720800e+02 5.126700e+02
-5 6695     2.377000e+02 -1.375700e+02
-7 6695     -3.987300e+02 5.635600e+02
-11 6695     -5.520020e+00 -2.567800e+02
-13 6695     5.498999e+01 1.719400e+02
-14 6695     1.488101e+02 -2.268900e+02
-0 6696     -1.720800e+02 5.126700e+02
-2 6696     -4.558900e+02 2.754000e+02
-7 6696     -3.987300e+02 5.635600e+02
-13 6696     5.498999e+01 1.719400e+02
-14 6696     1.488101e+02 -2.268900e+02
-0 6697     6.646100e+02 5.126200e+02
-2 6697     4.743000e+02 4.931100e+02
-3 6697     3.256300e+02 1.580900e+02
-6 6697     4.033700e+02 7.165900e+02
-8 6697     4.532900e+02 3.765700e+02
-9 6697     2.591700e+02 5.166800e+02
-11 6697     7.258300e+02 -2.200100e+02
-13 6697     8.243700e+02 2.438800e+02
-0 6698     -1.326001e+01 5.096800e+02
-2 6698     -3.041200e+02 2.716900e+02
-6 6698     -4.957700e+02 5.316700e+02
-7 6698     -2.411100e+02 5.765800e+02
-8 6698     -1.708200e+02 2.072300e+02
-9 6698     -4.109400e+02 2.998900e+02
-12 6698     -3.203200e+02 5.186100e+02
-0 6699     -1.326001e+01 5.096800e+02
-2 6699     -3.041200e+02 2.716900e+02
-6 6699     -4.957700e+02 5.316700e+02
-7 6699     -2.411100e+02 5.765800e+02
-8 6699     -1.708200e+02 2.072300e+02
-9 6699     -4.109400e+02 2.998900e+02
-12 6699     -3.203200e+02 5.186100e+02
-0 6700     -3.036300e+02 5.091200e+02
-2 6700     -5.867500e+02 2.721900e+02
-5 6700     1.098600e+02 -1.405800e+02
-7 6700     -5.322300e+02 5.465900e+02
-8 6700     -4.022400e+02 2.017600e+02
-11 6700     -1.199400e+02 -2.609500e+02
-12 6700     -6.457900e+02 4.781700e+02
-0 6701     -3.036300e+02 5.091200e+02
-2 6701     -5.867500e+02 2.721900e+02
-5 6701     1.098600e+02 -1.405800e+02
-7 6701     -5.322300e+02 5.465900e+02
-8 6701     -4.022400e+02 2.017600e+02
-11 6701     -1.199400e+02 -2.609500e+02
-12 6701     -6.457900e+02 4.781700e+02
-0 6702     -5.282200e+02 5.084400e+02
-2 6702     -8.279600e+02 2.765500e+02
-5 6702     -1.065000e+02 -1.380300e+02
-7 6702     -7.702400e+02 5.237300e+02
-8 6702     -5.973200e+02 1.996100e+02
-13 6702     -2.254100e+02 1.536400e+02
-14 6702     -1.902600e+02 -2.342300e+02
-0 6703     -5.213200e+02 5.083800e+02
-2 6703     -8.198000e+02 2.743800e+02
-5 6703     -9.971997e+01 -1.397800e+02
-7 6703     -7.618300e+02 5.238900e+02
-11 6703     -3.036700e+02 -2.608600e+02
-13 6703     -2.198200e+02 1.538000e+02
-14 6703     -1.833900e+02 -2.345400e+02
-0 6704     6.587700e+02 5.085400e+02
-2 6704     4.695000e+02 4.878800e+02
-3 6704     3.212400e+02 1.527200e+02
-6 6704     3.977400e+02 7.107500e+02
-8 6704     4.491400e+02 3.721800e+02
-9 6704     2.554100e+02 5.114900e+02
-11 6704     7.217100e+02 -2.246700e+02
-13 6704     8.194500e+02 2.399300e+02
-0 6705     3.569399e+02 5.068100e+02
-2 6705     2.159998e+01 2.722600e+02
-9 6705     -1.340400e+02 3.110600e+02
-13 6705     4.726801e+02 1.984100e+02
-14 6705     6.610300e+02 -2.118100e+02
-0 6706     3.569399e+02 5.068100e+02
-2 6706     2.159998e+01 2.722600e+02
-8 6706     9.883002e+01 2.135100e+02
-9 6706     -1.340400e+02 3.110600e+02
-13 6706     4.726801e+02 1.984100e+02
-14 6706     6.610300e+02 -2.118100e+02
-0 6707     -5.240600e+02 5.059200e+02
-2 6707     -8.231300e+02 2.734800e+02
-5 6707     -1.029400e+02 -1.407300e+02
-7 6707     -7.649600e+02 5.207000e+02
-11 6707     -3.061900e+02 -2.634800e+02
-14 6707     -1.862900e+02 -2.360400e+02
-0 6708     -6.940700e+02 5.057400e+02
-5 6708     -3.413400e+02 -1.434500e+02
-11 6708     -4.358600e+02 -2.605300e+02
-0 6709     2.108002e+01 5.054400e+02
-14 6709     3.338900e+02 -2.290300e+02
-0 6710     7.099900e+02 5.024300e+02
-2 6710     5.218500e+02 4.994300e+02
-6 6710     4.595400e+02 7.178200e+02
-9 6710     3.001200e+02 5.233900e+02
-0 6711     -6.774800e+02 5.004400e+02
-4 6711     5.347998e+01 1.750000e+01
-5 6711     -3.111300e+02 -1.501400e+02
-0 6712     5.696000e+02 4.994200e+02
-2 6712     3.336300e+02 4.065900e+02
-6 6712     2.495200e+02 6.689000e+02
-0 6713     3.452300e+02 4.973800e+02
-6 6713     -1.072000e+02 5.882000e+02
-11 6713     4.617700e+02 -2.496500e+02
-13 6713     4.639800e+02 1.897700e+02
-14 6713     6.508400e+02 -2.218300e+02
-0 6714     -6.858600e+02 4.959700e+02
-4 6714     5.140002e+01 2.528998e+01
-5 6714     -3.320000e+02 -1.542400e+02
-11 6714     -4.310900e+02 -2.686800e+02
-13 6714     -4.064100e+02 1.278800e+02
-14 6714     -4.097300e+02 -2.531500e+02
-0 6715     6.903101e+02 4.950500e+02
-2 6715     5.048500e+02 4.867700e+02
-6 6715     4.378400e+02 7.042800e+02
-8 6715     4.784900e+02 3.711000e+02
-9 6715     2.850900e+02 5.114100e+02
-13 6715     8.515100e+02 2.325600e+02
-0 6716     7.617900e+02 4.918000e+02
-2 6716     5.778199e+02 5.074900e+02
-3 6716     4.201000e+02 1.723900e+02
-6 6716     5.234200e+02 7.178500e+02
-8 6716     5.398101e+02 3.873700e+02
-9 6716     3.451100e+02 5.310100e+02
-0 6717     -6.183100e+02 4.905300e+02
-13 6717     -2.976000e+02 1.352900e+02
-14 6717     -2.782400e+02 -2.520400e+02
-0 6718     -3.162000e+01 4.905700e+02
-2 6718     -3.199100e+02 2.491300e+02
-7 6718     -2.564800e+02 5.550100e+02
-9 6718     -4.235300e+02 2.799200e+02
-0 6719     -3.162000e+01 4.905700e+02
-2 6719     -3.199100e+02 2.491300e+02
-7 6719     -2.564800e+02 5.550100e+02
-9 6719     -4.235300e+02 2.799200e+02
-0 6720     7.788900e+02 4.906400e+02
-6 6720     5.416899e+02 7.213600e+02
-0 6721     5.282600e+02 4.899400e+02
-3 6721     1.465600e+02 5.296002e+01
-6 6721     1.982200e+02 6.501000e+02
-8 6721     3.050600e+02 2.938500e+02
-9 6721     1.020500e+02 4.159200e+02
-0 6722     5.227200e+02 4.895900e+02
-2 6722     2.843199e+02 3.798500e+02
-6 6722     1.922200e+02 6.446500e+02
-9 6722     9.571997e+01 4.136000e+02
-0 6723     -3.038900e+02 4.874200e+02
-2 6723     -5.867000e+02 2.467700e+02
-7 6723     -5.296300e+02 5.236900e+02
-11 6723     -1.204600e+02 -2.788300e+02
-12 6723     -6.424900e+02 4.525900e+02
-0 6724     -2.243500e+02 4.869800e+02
-2 6724     -5.057700e+02 2.445600e+02
-5 6724     1.848900e+02 -1.642600e+02
-7 6724     -4.477100e+02 5.310500e+02
-8 6724     -3.360200e+02 1.817400e+02
-11 6724     -5.170001e+01 -2.791400e+02
-12 6724     -5.506600e+02 4.620900e+02
-0 6725     -1.751100e+02 4.870300e+02
-2 6725     -4.571400e+02 2.455700e+02
-7 6725     -3.989200e+02 5.366700e+02
-0 6726     -4.077600e+02 4.856900e+02
-14 6726     -7.834998e+01 -2.572300e+02
-0 6727     -3.539400e+02 4.855900e+02
-11 6727     -1.637700e+02 -2.804600e+02
-12 6727     -7.016200e+02 4.430400e+02
-14 6727     -2.726001e+01 -2.568400e+02
-0 6728     6.691000e+02 4.853600e+02
-2 6728     4.859500e+02 4.711400e+02
-3 6728     3.369600e+02 1.378900e+02
-6 6728     4.158100e+02 6.890800e+02
-8 6728     4.625300e+02 3.586800e+02
-9 6728     2.696600e+02 4.981100e+02
-11 6728     7.364600e+02 -2.437600e+02
-13 6728     8.321600e+02 2.225600e+02
-0 6729     6.655300e+02 4.814900e+02
-2 6729     4.831899e+02 4.697400e+02
-3 6729     3.345400e+02 1.363600e+02
-6 6729     4.124900e+02 6.873400e+02
-13 6729     8.293800e+02 2.193000e+02
-0 6730     7.043500e+02 4.799300e+02
-6 6730     4.581600e+02 6.923500e+02
-9 6730     3.005400e+02 5.054900e+02
-0 6731     7.559900e+02 4.799200e+02
-6 6731     5.166400e+02 7.047200e+02
-9 6731     3.422200e+02 5.204200e+02
-0 6732     -4.121997e+01 4.787800e+02
-2 6732     -3.280700e+02 2.351300e+02
-7 6732     -2.645600e+02 5.416000e+02
-0 6733     -4.121997e+01 4.787800e+02
-2 6733     -3.280700e+02 2.351300e+02
-6 6733     -5.216000e+02 4.850500e+02
-7 6733     -2.645600e+02 5.416000e+02
-12 6733     -3.452700e+02 4.776300e+02
-0 6734     2.317999e+01 4.778200e+02
-7 6734     -2.010900e+02 5.475200e+02
-0 6735     2.317999e+01 4.778200e+02
-7 6735     -2.010900e+02 5.475200e+02
-0 6736     -6.574500e+02 4.765100e+02
-5 6736     -2.812100e+02 -1.727300e+02
-0 6737     -5.509900e+02 4.763500e+02
-14 6737     -2.166600e+02 -2.664000e+02
-0 6738     -2.898500e+02 4.741900e+02
-2 6738     -5.719300e+02 2.298700e+02
-8 6738     -3.897600e+02 1.695800e+02
-12 6738     -6.237200e+02 4.368700e+02
-0 6739     4.982100e+02 4.728000e+02
-3 6739     1.201200e+02 2.520001e+01
-8 6739     2.831200e+02 2.708000e+02
-0 6740     2.610601e+02 4.695500e+02
-2 6740     -5.460999e+01 2.287100e+02
-5 6740     6.641000e+02 -1.763200e+02
-6 6740     -1.904500e+02 5.351900e+02
-7 6740     2.684998e+01 5.632500e+02
-8 6740     3.491998e+01 1.777600e+02
-9 6740     -1.969100e+02 2.708800e+02
-11 6740     3.870200e+02 -2.792300e+02
-12 6740     -2.519000e+01 5.084000e+02
-0 6741     6.363900e+02 4.693500e+02
-2 6741     4.566700e+02 4.466300e+02
-3 6741     3.101700e+02 1.144900e+02
-6 6741     3.805700e+02 6.641800e+02
-8 6741     4.379000e+02 3.385300e+02
-9 6741     2.450500e+02 4.759600e+02
-11 6741     7.101400e+02 -2.596700e+02
-13 6741     8.029900e+02 2.067900e+02
-0 6742     -3.825000e+01 4.682700e+02
-7 6742     -2.603100e+02 5.314700e+02
-14 6742     2.762600e+02 -2.698400e+02
-0 6743     6.919500e+02 4.667800e+02
-2 6743     5.138500e+02 4.640600e+02
-6 6743     4.469100e+02 6.753500e+02
-8 6743     4.848700e+02 3.491100e+02
-9 6743     2.928600e+02 4.896800e+02
-11 6743     7.611300e+02 -2.599800e+02
-0 6744     6.919500e+02 4.667800e+02
-2 6744     5.138500e+02 4.640600e+02
-6 6744     4.469100e+02 6.753500e+02
-8 6744     4.848700e+02 3.491100e+02
-9 6744     2.928600e+02 4.896800e+02
-11 6744     7.611300e+02 -2.599800e+02
-0 6745     7.703600e+02 4.671800e+02
-2 6745     5.893000e+02 4.891200e+02
-0 6746     5.513700e+02 4.652800e+02
-8 6746     3.330500e+02 2.802800e+02
-11 6746     6.414000e+02 -2.670600e+02
-13 6746     6.996801e+02 1.894400e+02
-0 6747     2.195500e+02 4.652100e+02
-2 6747     -9.065002e+01 2.233000e+02
-14 6747     5.282300e+02 -2.627800e+02
-0 6748     2.052600e+02 4.635100e+02
-6 6748     -2.491400e+02 5.155000e+02
-7 6748     -2.510999e+01 5.519000e+02
-8 6748     -4.760010e+00 1.703500e+02
-9 6748     -2.371400e+02 2.626300e+02
-12 6748     -8.225000e+01 4.935500e+02
-14 6748     5.145500e+02 -2.649800e+02
-0 6749     -1.833300e+02 4.623300e+02
-5 6749     2.234301e+02 -1.916700e+02
-8 6749     -3.005500e+02 1.583400e+02
-0 6750     8.306600e+02 4.616400e+02
-2 6750     6.484000e+02 5.047300e+02
-3 6750     4.872200e+02 1.707400e+02
-8 6750     5.989600e+02 3.841400e+02
-9 6750     4.065200e+02 5.298000e+02
-0 6751     1.084998e+01 4.584800e+02
-2 6751     -2.775200e+02 2.135400e+02
-6 6751     -4.593800e+02 4.697400e+02
-8 6751     -1.487000e+02 1.612300e+02
-12 6751     -2.856100e+02 4.612900e+02
-14 6751     3.240601e+02 -2.785100e+02
-0 6752     8.460699e+02 4.577100e+02
-2 6752     6.641500e+02 5.060500e+02
-3 6752     5.011100e+02 1.720500e+02
-9 6752     4.189399e+02 5.311100e+02
-0 6753     2.253998e+01 4.569500e+02
-2 6753     -2.655300e+02 2.111300e+02
-6 6753     -4.445100e+02 4.704300e+02
-7 6753     -1.990800e+02 5.261400e+02
-11 6753     1.695500e+02 -3.000400e+02
-12 6753     -2.717700e+02 4.615000e+02
-0 6754     8.412100e+02 4.565200e+02
-2 6754     6.585699e+02 5.035600e+02
-3 6754     4.968800e+02 1.697800e+02
-9 6754     4.147300e+02 5.291200e+02
-0 6755     3.575300e+02 4.546400e+02
-9 6755     -1.251700e+02 2.622400e+02
-0 6756     3.575300e+02 4.546400e+02
-9 6756     -1.251700e+02 2.622400e+02
-11 6756     4.795200e+02 -2.869400e+02
-0 6757     8.474100e+02 4.537700e+02
-2 6757     6.655800e+02 5.031500e+02
-9 6757     4.209100e+02 5.289000e+02
-0 6758     8.474100e+02 4.537700e+02
-2 6758     6.655800e+02 5.031500e+02
-3 6758     5.032000e+02 1.695900e+02
-9 6758     4.209100e+02 5.289000e+02
-0 6759     5.541600e+02 4.538900e+02
-8 6759     3.370800e+02 2.714700e+02
-13 6759     7.029301e+02 1.809200e+02
-0 6760     6.868199e+02 4.522600e+02
-2 6760     5.122200e+02 4.488500e+02
-3 6760     3.628000e+02 1.177700e+02
-6 6760     4.443600e+02 6.588800e+02
-8 6760     4.840200e+02 3.395600e+02
-9 6760     2.923900e+02 4.796000e+02
-13 6760     8.531899e+02 1.982800e+02
-0 6761     8.400400e+02 4.483400e+02
-9 6761     4.158600e+02 5.219100e+02
-0 6762     2.270300e+02 4.472700e+02
-3 6762     -2.223200e+02 -1.279400e+02
-7 6762     -2.309998e+00 5.370100e+02
-14 6762     5.367100e+02 -2.824000e+02
-0 6763     8.629800e+02 4.463800e+02
-3 6763     5.183000e+02 1.687300e+02
-0 6764     -2.260300e+02 4.413200e+02
-7 6764     -4.435800e+02 4.829000e+02
-0 6765     -1.212000e+02 4.404700e+02
-2 6765     -4.016400e+02 1.893700e+02
-3 6765     -5.316000e+02 -1.408800e+02
-7 6765     -3.380400e+02 4.936600e+02
-8 6765     -2.503300e+02 1.404700e+02
-12 6765     -4.264300e+02 4.200200e+02
-13 6765     9.528998e+01 1.130200e+02
-14 6765     1.962600e+02 -3.010700e+02
-0 6766     6.357300e+02 4.404100e+02
-9 6766     2.505200e+02 4.538200e+02
-0 6767     -4.335800e+02 4.384800e+02
-14 6767     -1.077600e+02 -3.067100e+02
-0 6768     6.323800e+02 4.375000e+02
-2 6768     4.604399e+02 4.169500e+02
-3 6768     3.145900e+02 8.683002e+01
-6 6768     3.834000e+02 6.286900e+02
-8 6768     4.408800e+02 3.139400e+02
-9 6768     2.485900e+02 4.505900e+02
-13 6768     8.024600e+02 1.808800e+02
-0 6769     6.380000e+02 4.364800e+02
-2 6769     4.662500e+02 4.179500e+02
-3 6769     3.204399e+02 8.817999e+01
-6 6769     3.900800e+02 6.292800e+02
-8 6769     4.455400e+02 3.152800e+02
-9 6769     2.533300e+02 4.515900e+02
-0 6770     7.416600e+02 4.361500e+02
-2 6770     5.716700e+02 4.536700e+02
-9 6770     3.400900e+02 4.859800e+02
-0 6771     8.422000e+02 4.332900e+02
-9 6771     4.207800e+02 5.121200e+02
-0 6772     8.513800e+02 4.333900e+02
-3 6772     5.122000e+02 1.551600e+02
-0 6773     7.410300e+02 4.321400e+02
-2 6773     5.708500e+02 4.502700e+02
-3 6773     4.182200e+02 1.199900e+02
-6 6773     5.115601e+02 6.519100e+02
-8 6773     5.325200e+02 3.401800e+02
-9 6773     3.421899e+02 4.819700e+02
-0 6774     7.410300e+02 4.321400e+02
-2 6774     5.708500e+02 4.502700e+02
-3 6774     4.182200e+02 1.199900e+02
-6 6774     5.115601e+02 6.519100e+02
-8 6774     5.325200e+02 3.401800e+02
-9 6774     3.421899e+02 4.819700e+02
-0 6775     -6.490200e+02 4.305500e+02
-13 6775     -3.645000e+02 7.646997e+01
-0 6776     -2.799500e+02 4.306900e+02
-7 6776     -4.968700e+02 4.657300e+02
-0 6777     6.871100e+02 4.294600e+02
-8 6777     4.888800e+02 3.236700e+02
-0 6778     -1.088300e+02 4.288900e+02
-2 6778     -3.895300e+02 1.754000e+02
-7 6778     -3.248600e+02 4.830000e+02
-8 6778     -2.401700e+02 1.298000e+02
-11 6778     5.128998e+01 -3.279800e+02
-13 6778     1.045000e+02 1.038300e+02
-0 6779     1.966400e+02 4.289300e+02
-2 6779     -1.055800e+02 1.810700e+02
-5 6779     5.998400e+02 -2.222200e+02
-7 6779     -2.876001e+01 5.159900e+02
-0 6780     7.491400e+02 4.262600e+02
-3 6780     4.268600e+02 1.180700e+02
-0 6781     -1.071700e+02 4.258500e+02
-2 6781     -3.871700e+02 1.719200e+02
-0 6782     -1.838300e+02 4.253100e+02
-2 6782     -4.626400e+02 1.707300e+02
-7 6782     -3.993600e+02 4.715100e+02
-0 6783     6.863101e+02 4.256300e+02
-6 6783     4.500200e+02 6.303100e+02
-8 6783     4.886600e+02 3.199800e+02
-11 6783     7.661899e+02 -2.967800e+02
-0 6784     6.950699e+02 4.242200e+02
-2 6784     5.277600e+02 4.271500e+02
-3 6784     3.780601e+02 9.841998e+01
-8 6784     4.963101e+02 3.223200e+02
-9 6784     3.058800e+02 4.616900e+02
-13 6784     8.644700e+02 1.765500e+02
-0 6785     -1.935800e+02 4.228500e+02
-7 6785     -4.084700e+02 4.670800e+02
-0 6786     -3.638900e+02 4.209100e+02
-5 6786     4.119000e+01 -2.331800e+02
-7 6786     -5.818500e+02 4.451000e+02
-11 6786     -1.742200e+02 -3.365800e+02
-0 6787     -4.035700e+02 4.194600e+02
-2 6787     -6.913100e+02 1.616800e+02
-5 6787     1.840027e+00 -2.339700e+02
-10 6787     -6.261300e+02 6.060000e+02
-0 6788     -4.035700e+02 4.194600e+02
-2 6788     -6.913100e+02 1.616800e+02
-5 6788     1.840027e+00 -2.339700e+02
-7 6788     -6.234100e+02 4.399400e+02
-10 6788     -6.262200e+02 6.061300e+02
-12 6788     -7.496700e+02 3.512500e+02
-13 6788     -1.297700e+02 8.339001e+01
-0 6789     -2.701800e+02 4.191800e+02
-5 6789     1.336700e+02 -2.355800e+02
-7 6789     -4.856000e+02 4.548800e+02
-13 6789     -2.381000e+01 8.810999e+01
-14 6789     4.915002e+01 -3.258700e+02
-0 6790     8.688199e+02 4.175300e+02
-3 6790     5.304301e+02 1.480400e+02
-0 6791     6.411600e+02 4.165900e+02
-2 6791     4.750601e+02 4.014700e+02
-6 6791     4.004800e+02 6.075900e+02
-12 6791     4.842400e+02 6.142600e+02
-13 6791     8.134900e+02 1.645500e+02
-0 6792     7.045100e+02 4.144800e+02
-2 6792     5.396801e+02 4.219700e+02
-3 6792     3.895900e+02 9.332001e+01
-6 6792     4.743199e+02 6.235000e+02
-8 6792     5.065699e+02 3.172100e+02
-9 6792     3.163300e+02 4.572500e+02
-11 6792     7.862900e+02 -3.062900e+02
-0 6793     4.928900e+02 4.115100e+02
-2 6793     2.705601e+02 2.949700e+02
-6 6793     1.750500e+02 5.482500e+02
-7 6793     2.781700e+02 5.512900e+02
-9 6793     8.496002e+01 3.395600e+02
-11 6793     5.979100e+02 -3.197600e+02
-0 6794     5.102200e+02 4.110500e+02
-7 6794     2.953900e+02 5.538800e+02
-9 6794     1.024300e+02 3.460800e+02
-0 6795     5.377000e+02 4.080000e+02
-2 6795     3.224200e+02 3.095900e+02
-3 6795     1.802800e+02 -1.800000e+01
-7 6795     3.234100e+02 5.554800e+02
-8 6795     3.315000e+02 2.318000e+02
-11 6795     6.392400e+02 -3.206300e+02
-13 6795     6.921100e+02 1.410500e+02
-0 6796     -3.480100e+02 4.070700e+02
-5 6796     5.571997e+01 -2.472600e+02
-13 6796     -8.615997e+01 7.410999e+01
-14 6796     -2.778998e+01 -3.394100e+02
-0 6797     7.909100e+02 4.045500e+02
-3 6797     4.695100e+02 1.148600e+02
-0 6798     -7.316400e+02 4.035700e+02
-13 6798     -4.692900e+02 4.341998e+01
-14 6798     -4.969100e+02 -3.517900e+02
-0 6799     5.402600e+02 4.039600e+02
-7 6799     3.264000e+02 5.517000e+02
-0 6800     5.402600e+02 4.039600e+02
-7 6800     3.264000e+02 5.517000e+02
-0 6801     -6.265900e+02 4.014300e+02
-5 6801     -2.514300e+02 -2.481700e+02
-7 6801     -8.703200e+02 3.890500e+02
-13 6801     -3.343300e+02 5.548999e+01
-14 6801     -3.314800e+02 -3.470700e+02
-0 6802     4.742300e+02 3.987700e+02
-2 6802     2.514900e+02 2.751400e+02
-7 6802     2.609600e+02 5.356100e+02
-13 6802     6.297400e+02 1.262500e+02
-14 6802     8.635400e+02 -3.066500e+02
-0 6803     5.982500e+02 3.978800e+02
-2 6803     4.340601e+02 3.680400e+02
-8 6803     4.191100e+02 2.742000e+02
-9 6803     2.273500e+02 4.077100e+02
-12 6803     4.379100e+02 5.805800e+02
-13 6803     7.737400e+02 1.444900e+02
-0 6804     -2.690400e+02 3.975900e+02
-5 6804     1.330200e+02 -2.593900e+02
-0 6805     -2.690400e+02 3.975900e+02
-5 6805     1.330200e+02 -2.593900e+02
-7 6805     -4.811500e+02 4.320500e+02
-10 6805     -4.572800e+02 5.889400e+02
-14 6805     4.945001e+01 -3.490300e+02
-0 6806     2.557001e+01 3.965900e+02
-5 6806     4.266100e+02 -2.622200e+02
-6 6806     -4.306200e+02 3.920200e+02
-7 6806     -1.892600e+02 4.646200e+02
-12 6806     -2.580200e+02 3.898300e+02
-14 6806     3.387100e+02 -3.441800e+02
-0 6807     -3.008200e+02 3.960600e+02
-7 6807     -5.141300e+02 4.267800e+02
-8 6807     -3.965000e+02 9.337000e+01
-10 6807     -4.952200e+02 5.852700e+02
-12 6807     -6.237200e+02 3.386900e+02
-0 6808     6.100200e+02 3.956700e+02
-2 6808     4.473500e+02 3.704400e+02
-3 6808     3.033800e+02 4.297998e+01
-6 6808     3.660300e+02 5.759000e+02
-7 6808     4.083900e+02 5.639400e+02
-8 6808     4.289700e+02 2.753400e+02
-9 6808     2.382600e+02 4.096600e+02
-13 6808     7.855100e+02 1.436200e+02
-0 6809     -4.066500e+02 3.947900e+02
-2 6809     -6.940400e+02 1.300800e+02
-5 6809     -3.849976e+00 -2.599000e+02
-7 6809     -6.228300e+02 4.133000e+02
-8 6809     -4.880300e+02 8.885999e+01
-10 6809     -6.261500e+02 5.744100e+02
-11 6809     -2.137800e+02 -3.584900e+02
-13 6809     -1.334900e+02 6.113000e+01
-14 6809     -8.651001e+01 -3.528500e+02
-0 6810     -4.066500e+02 3.947900e+02
-2 6810     -6.940400e+02 1.300800e+02
-10 6810     -6.261500e+02 5.744100e+02
-0 6811     -4.014200e+02 3.949400e+02
-7 6811     -6.163800e+02 4.138800e+02
-13 6811     -1.284800e+02 6.152002e+01
-0 6812     -2.742700e+02 3.922900e+02
-5 6812     1.276000e+02 -2.643300e+02
-7 6812     -4.855200e+02 4.262100e+02
-8 6812     -3.736400e+02 9.009000e+01
-10 6812     -4.628200e+02 5.825500e+02
-12 6812     -5.915800e+02 3.384200e+02
-0 6813     5.334800e+02 3.896300e+02
-2 6813     3.215900e+02 2.905300e+02
-3 6813     1.796900e+02 -3.648999e+01
-6 6813     2.323200e+02 5.352600e+02
-7 6813     3.215601e+02 5.367700e+02
-8 6813     3.308500e+02 2.168500e+02
-9 6813     1.299100e+02 3.377600e+02
-11 6813     6.391801e+02 -3.378900e+02
-12 6813     3.383400e+02 5.269200e+02
-13 6813     6.895100e+02 1.253100e+02
-0 6814     -5.529600e+02 3.879300e+02
-5 6814     -1.494200e+02 -2.638700e+02
-0 6815     5.965300e+02 3.880100e+02
-6 6815     3.514600e+02 5.640500e+02
-9 6815     2.278400e+02 3.991300e+02
-11 6815     6.911200e+02 -3.366900e+02
-12 6815     4.380100e+02 5.692300e+02
-13 6815     7.732400e+02 1.358200e+02
-0 6816     6.458600e+02 3.883500e+02
-2 6816     4.873199e+02 3.781800e+02
-3 6816     3.408500e+02 4.976001e+01
-7 6816     4.447000e+02 5.632800e+02
-8 6816     4.621899e+02 2.815900e+02
-12 6816     4.954200e+02 5.872700e+02
-13 6816     8.217300e+02 1.424300e+02
-0 6817     -5.416500e+02 3.840000e+02
-5 6817     -1.387900e+02 -2.675100e+02
-11 6817     -3.311900e+02 -3.658300e+02
-13 6817     -2.427600e+02 4.613000e+01
-14 6817     -2.209600e+02 -3.642200e+02
-0 6818     -9.573999e+01 3.841300e+02
-2 6818     -3.730600e+02 1.214400e+02
-5 6818     3.047700e+02 -2.750200e+02
-6 6818     -5.658700e+02 3.480800e+02
-7 6818     -3.054800e+02 4.378900e+02
-8 6818     -2.269700e+02 8.728000e+01
-9 6818     -4.632900e+02 1.662500e+02
-10 6818     -2.477900e+02 5.885700e+02
-12 6818     -3.880100e+02 3.552800e+02
-13 6818     1.151900e+02 6.540002e+01
-14 6818     2.192900e+02 -3.610800e+02
-0 6819     6.478300e+02 3.841900e+02
-2 6819     4.900500e+02 3.747200e+02
-3 6819     3.441400e+02 4.770001e+01
-6 6819     4.149300e+02 5.754600e+02
-7 6819     4.472100e+02 5.597100e+02
-8 6819     4.647700e+02 2.788000e+02
-9 6819     2.748300e+02 4.151500e+02
-11 6819     7.400500e+02 -3.375300e+02
-12 6819     4.981801e+02 5.829600e+02
-13 6819     8.238101e+02 1.388800e+02
-0 6820     -4.982000e+02 3.835000e+02
-5 6820     -9.604999e+01 -2.696000e+02
-8 6820     -5.709600e+02 7.414001e+01
-13 6820     -2.075800e+02 4.826001e+01
-14 6820     -1.780800e+02 -3.642700e+02
-0 6821     -5.414100e+02 3.801500e+02
-5 6821     -1.389800e+02 -2.719400e+02
-14 6821     -2.210400e+02 -3.680300e+02
-0 6822     -5.414100e+02 3.801500e+02
-14 6822     -2.210400e+02 -3.680300e+02
-0 6823     -5.043400e+02 3.792900e+02
-8 6823     -5.770300e+02 7.056000e+01
-10 6823     -7.454600e+02 5.478100e+02
-11 6823     -2.994200e+02 -3.702100e+02
-13 6823     -2.126700e+02 4.414001e+01
-14 6823     -1.842700e+02 -3.690800e+02
-0 6824     -4.916000e+02 3.743400e+02
-14 6824     -1.725700e+02 -3.742800e+02
-0 6825     5.510400e+02 3.743700e+02
-2 6825     3.451500e+02 2.824200e+02
-7 6825     3.410601e+02 5.246400e+02
-8 6825     3.497300e+02 2.096300e+02
-9 6825     1.505000e+02 3.313700e+02
-11 6825     6.584700e+02 -3.515300e+02
-0 6826     8.462200e+02 3.728600e+02
-2 6826     6.862300e+02 4.352100e+02
-3 6826     5.255900e+02 1.080700e+02
-0 6827     8.462200e+02 3.728600e+02
-2 6827     6.862300e+02 4.352100e+02
-3 6827     5.255900e+02 1.080700e+02
-7 6827     6.385000e+02 5.804000e+02
-9 6827     4.391500e+02 4.715300e+02
-0 6828     6.259301e+02 3.716000e+02
-2 6828     4.701500e+02 3.549300e+02
-3 6828     3.258000e+02 2.919000e+01
-6 6828     3.918400e+02 5.553700e+02
-7 6828     4.272000e+02 5.438400e+02
-12 6828     4.761400e+02 5.622600e+02
-0 6829     5.657600e+02 3.708600e+02
-2 6829     3.620900e+02 2.854600e+02
-3 6829     2.192300e+02 -4.007001e+01
-7 6829     3.562500e+02 5.240200e+02
-8 6829     3.634700e+02 2.120100e+02
-12 6829     3.805400e+02 5.177200e+02
-0 6830     -1.427400e+02 3.699100e+02
-13 6830     7.766998e+01 5.087000e+01
-0 6831     -5.405300e+02 3.694100e+02
-5 6831     -1.399300e+02 -2.832700e+02
-7 6831     -7.614300e+02 3.700700e+02
-10 6831     -7.900100e+02 5.328600e+02
-15 6831     -8.212900e+02 5.729800e+02
-0 6832     -1.088500e+02 3.697100e+02
-5 6832     2.895699e+02 -2.904700e+02
-8 6832     -2.374100e+02 7.345001e+01
-0 6833     5.096100e+02 3.696000e+02
-2 6833     2.990500e+02 2.608700e+02
-7 6833     2.999100e+02 5.124700e+02
-9 6833     1.117800e+02 3.098200e+02
-0 6834     5.585300e+02 3.690600e+02
-3 6834     2.122100e+02 -4.478003e+01
-7 6834     3.491801e+02 5.209800e+02
-8 6834     3.575300e+02 2.082400e+02
-11 6834     6.666400e+02 -3.561900e+02
-13 6834     7.166700e+02 1.109700e+02
-0 6835     5.674900e+02 3.677000e+02
-2 6835     3.648000e+02 2.831400e+02
-3 6835     2.217100e+02 -4.227002e+01
-6 6835     2.810900e+02 5.211900e+02
-8 6835     3.659300e+02 2.098300e+02
-9 6835     1.671801e+02 3.328000e+02
-13 6835     7.251899e+02 1.108600e+02
-0 6836     -4.073800e+02 3.658400e+02
-7 6836     -6.175700e+02 3.833800e+02
-0 6837     -4.109400e+02 3.640200e+02
-2 6837     -6.838500e+02 9.785999e+01
-10 6837     -6.269800e+02 5.360600e+02
-0 6838     5.671801e+02 3.637500e+02
-2 6838     3.654301e+02 2.791400e+02
-3 6838     2.224600e+02 -4.614001e+01
-6 6838     2.818000e+02 5.166100e+02
-7 6838     3.582800e+02 5.175000e+02
-8 6838     3.662000e+02 2.067100e+02
-9 6838     1.679800e+02 3.295000e+02
-12 6838     3.838700e+02 5.104100e+02
-13 6838     7.255400e+02 1.074900e+02
-0 6839     -1.965000e+02 3.636300e+02
-12 6839     -4.975400e+02 3.149500e+02
-0 6840     -1.965000e+02 3.636300e+02
-12 6840     -4.975400e+02 3.149500e+02
-14 6840     1.184600e+02 -3.853100e+02
-0 6841     -7.310200e+02 3.612600e+02
-13 6841     -4.601600e+02 8.289978e+00
-14 6841     -4.904900e+02 -3.961800e+02
-0 6842     -1.511700e+02 3.610000e+02
-2 6842     -4.269900e+02 9.106000e+01
-7 6842     -3.576300e+02 4.078800e+02
-13 6842     7.059998e+01 4.258002e+01
-14 6842     1.630200e+02 -3.876200e+02
-0 6843     6.780029e+00 3.605600e+02
-2 6843     -2.726600e+02 9.519000e+01
-5 6843     4.062200e+02 -3.006000e+02
-6 6843     -4.447100e+02 3.405200e+02
-7 6843     -2.023700e+02 4.250800e+02
-8 6843     -1.447400e+02 6.856000e+01
-9 6843     -3.758100e+02 1.475800e+02
-13 6843     1.966500e+02 4.981000e+01
-14 6843     3.201500e+02 -3.849500e+02
-0 6844     7.811400e+02 3.579200e+02
-2 6844     6.298500e+02 4.003800e+02
-3 6844     4.750200e+02 7.602002e+01
-7 6844     5.794301e+02 5.561200e+02
-9 6844     3.926300e+02 4.405800e+02
-0 6845     2.619995e+00 3.555100e+02
-5 6845     4.020800e+02 -3.059400e+02
-10 6845     -1.279900e+02 5.631800e+02
-0 6846     -5.636500e+02 3.529300e+02
-5 6846     -1.655100e+02 -3.001200e+02
-7 6846     -7.839500e+02 3.500300e+02
-10 6846     -8.168800e+02 5.107900e+02
-14 6846     -2.473400e+02 -3.968900e+02
-15 6846     -8.509400e+02 5.470200e+02
-0 6847     6.740100e+02 3.530200e+02
-2 6847     5.254000e+02 3.566700e+02
-7 6847     4.772300e+02 5.339300e+02
-9 6847     3.054000e+02 4.010000e+02
-13 6847     8.530699e+02 1.162300e+02
-0 6848     6.740100e+02 3.530200e+02
-2 6848     5.254000e+02 3.566700e+02
-6 6848     4.541899e+02 5.499500e+02
-7 6848     4.772300e+02 5.339300e+02
-8 6848     4.938800e+02 2.634800e+02
-9 6848     3.054000e+02 4.010000e+02
-0 6849     6.740100e+02 3.530200e+02
-2 6849     5.254000e+02 3.566700e+02
-6 6849     4.541899e+02 5.499500e+02
-7 6849     4.772300e+02 5.339300e+02
-8 6849     4.938800e+02 2.634800e+02
-9 6849     3.054000e+02 4.010000e+02
-12 6849     5.362300e+02 5.592600e+02
-0 6850     -3.839100e+02 3.517000e+02
-2 6850     -6.683300e+02 7.528998e+01
-5 6850     1.339001e+01 -3.064300e+02
-7 6850     -5.929100e+02 3.703800e+02
-8 6850     -4.672700e+02 4.617001e+01
-10 6850     -5.908300e+02 5.228900e+02
-11 6850     -1.955200e+02 -3.962500e+02
-14 6850     -6.846997e+01 -3.992100e+02
-15 6850     -5.970400e+02 5.685800e+02
-0 6851     -2.707900e+02 3.507700e+02
-7 6851     -4.772100e+02 3.817000e+02
-0 6852     -3.652100e+02 3.485300e+02
-11 6852     -1.791700e+02 -3.996300e+02
-13 6852     -1.016400e+02 2.267999e+01
-0 6853     1.893700e+02 3.485700e+02
-6 6853     -2.165300e+02 3.753800e+02
-0 6854     -4.090100e+02 3.469200e+02
-10 6854     -6.210300e+02 5.152300e+02
-11 6854     -2.175400e+02 -4.001100e+02
-13 6854     -1.372700e+02 1.971002e+01
-0 6855     2.184998e+01 3.469000e+02
-13 6855     2.115800e+02 3.953998e+01
-14 6855     3.397300e+02 -3.988100e+02
-0 6856     7.840300e+02 3.468200e+02
-2 6856     6.354301e+02 3.915300e+02
-3 6856     4.808900e+02 6.728998e+01
-6 6856     5.809800e+02 5.747100e+02
-7 6856     5.835000e+02 5.462000e+02
-8 6856     5.863400e+02 2.897000e+02
-9 6856     3.971600e+02 4.340500e+02
-12 6856     6.608900e+02 5.879500e+02
-0 6857     6.850800e+02 3.465300e+02
-2 6857     5.382200e+02 3.548200e+02
-3 6857     3.908400e+02 3.072998e+01
-6 6857     4.686200e+02 5.460200e+02
-7 6857     4.886500e+02 5.295600e+02
-8 6857     5.044000e+02 2.615900e+02
-9 6857     3.163500e+02 3.996900e+02
-12 6857     5.501600e+02 5.554000e+02
-13 6857     8.647200e+02 1.122400e+02
-0 6858     7.471700e+02 3.460200e+02
-3 6858     4.478600e+02 5.338000e+01
-7 6858     5.485200e+02 5.393200e+02
-0 6859     7.999301e+02 3.441600e+02
-2 6859     6.509800e+02 3.949800e+02
-0 6860     7.999301e+02 3.441600e+02
-2 6860     6.509800e+02 3.949800e+02
-3 6860     4.955300e+02 7.079999e+01
-7 6860     5.990500e+02 5.460100e+02
-9 6860     4.110400e+02 4.366200e+02
-12 6860     6.787900e+02 5.905900e+02
-0 6861     6.174000e+02 3.420100e+02
-7 6861     4.229900e+02 5.139600e+02
-0 6862     6.174000e+02 3.420100e+02
-3 6862     3.250699e+02 -3.599854e-01
-0 6863     7.822200e+02 3.413400e+02
-2 6863     6.352500e+02 3.860600e+02
-3 6863     4.810400e+02 6.253003e+01
-0 6864     7.469700e+02 3.412400e+02
-2 6864     6.014600e+02 3.737700e+02
-3 6864     4.494600e+02 4.994000e+01
-6 6864     5.412400e+02 5.586900e+02
-7 6864     5.491801e+02 5.351400e+02
-9 6864     3.694500e+02 4.170800e+02
-0 6865     6.141700e+02 3.407300e+02
-2 6865     4.656400e+02 3.213800e+02
-6 6865     3.847500e+02 5.183900e+02
-8 6865     4.442400e+02 2.354600e+02
-9 6865     2.550699e+02 3.696300e+02
-0 6866     -1.413400e+02 3.345900e+02
-2 6866     -4.146900e+02 5.798999e+01
-11 6866     2.326001e+01 -4.142600e+02
-0 6867     3.266998e+01 3.347400e+02
-7 6867     -1.708700e+02 4.037400e+02
-0 6868     -3.325700e+02 3.342300e+02
-2 6868     -6.119900e+02 5.241998e+01
-7 6868     -5.381000e+02 3.583200e+02
-14 6868     -2.026001e+01 -4.178000e+02
-0 6869     6.026000e+02 3.339700e+02
-2 6869     4.549600e+02 3.092700e+02
-3 6869     3.124800e+02 -1.364001e+01
-6 6869     3.723300e+02 5.070000e+02
-8 6869     4.352800e+02 2.263500e+02
-9 6869     2.463600e+02 3.591500e+02
-11 6869     7.085400e+02 -3.878900e+02
-0 6870     6.874200e+02 3.334200e+02
-7 6870     4.924900e+02 5.183500e+02
-9 6870     3.214200e+02 3.908500e+02
-0 6871     -5.044400e+02 3.330700e+02
-5 6871     -1.100300e+02 -3.237900e+02
-7 6871     -7.171000e+02 3.349000e+02
-8 6871     -5.770300e+02 2.210999e+01
-10 6871     -7.381500e+02 4.900900e+02
-14 6871     -1.913200e+02 -4.186800e+02
-15 6871     -7.633900e+02 5.258700e+02
-0 6872     8.152500e+02 3.327500e+02
-2 6872     6.683700e+02 3.906200e+02
-9 6872     4.255699e+02 4.328000e+02
-0 6873     8.152500e+02 3.327500e+02
-2 6873     6.683700e+02 3.906200e+02
-7 6873     6.149399e+02 5.375200e+02
-9 6873     4.255699e+02 4.328000e+02
-0 6874     6.597800e+02 3.318500e+02
-6 6874     4.420699e+02 5.226100e+02
-7 6874     4.657700e+02 5.110500e+02
-8 6874     4.862600e+02 2.429300e+02
-9 6874     2.974500e+02 3.786700e+02
-12 6874     5.246500e+02 5.312000e+02
-13 6874     8.419700e+02 9.726001e+01
-0 6875     8.237400e+02 3.315200e+02
-2 6875     6.772200e+02 3.924500e+02
-3 6875     5.193199e+02 6.894000e+01
-7 6875     6.231100e+02 5.378000e+02
-9 6875     4.329100e+02 4.352300e+02
-12 6875     7.079900e+02 5.851700e+02
-0 6876     8.237400e+02 3.315200e+02
-2 6876     6.772200e+02 3.924500e+02
-3 6876     5.193199e+02 6.894000e+01
-7 6876     6.231100e+02 5.378000e+02
-9 6876     4.329100e+02 4.352300e+02
-12 6876     7.079900e+02 5.851700e+02
-0 6877     5.730500e+02 3.296300e+02
-3 6877     2.834500e+02 -3.009003e+01
-10 6877     5.468900e+02 5.913400e+02
-13 6877     7.568900e+02 8.454999e+01
-0 6878     8.070000e+02 3.284800e+02
-3 6878     5.061801e+02 6.085999e+01
-7 6878     6.076200e+02 5.324800e+02
-10 6878     8.283700e+02 6.184200e+02
-0 6879     -4.694600e+02 3.278700e+02
-10 6879     -6.934400e+02 4.864500e+02
-11 6879     -2.724200e+02 -4.164200e+02
-12 6879     -8.184200e+02 2.197900e+02
-0 6880     6.535000e+02 3.280400e+02
-2 6880     5.104000e+02 3.251300e+02
-3 6880     3.651801e+02 2.059998e+00
-6 6880     4.353199e+02 5.161400e+02
-7 6880     4.600699e+02 5.064100e+02
-8 6880     4.809600e+02 2.375500e+02
-9 6880     2.928500e+02 3.735200e+02
-10 6880     6.427700e+02 5.986600e+02
-11 6880     7.593199e+02 -3.915900e+02
-12 6880     5.183900e+02 5.241400e+02
-13 6880     8.360800e+02 9.295999e+01
-0 6881     -4.659200e+02 3.271500e+02
-7 6881     -6.774500e+02 3.321800e+02
-10 6881     -6.893900e+02 4.863100e+02
-12 6881     -8.141300e+02 2.197300e+02
-15 6881     -7.076400e+02 5.229900e+02
-0 6882     -3.151300e+02 3.263200e+02
-7 6882     -5.183300e+02 3.513400e+02
-10 6882     -5.039800e+02 4.977100e+02
-13 6882     -6.190002e+01 4.859985e+00
-14 6882     -2.700012e+00 -4.275700e+02
-15 6882     -4.961200e+02 5.415400e+02
-0 6883     -2.431100e+02 3.259800e+02
-7 6883     -4.457100e+02 3.599400e+02
-15 6883     -3.958500e+02 5.510700e+02
-0 6884     -1.495100e+02 3.260000e+02
-7 6884     -3.513500e+02 3.712600e+02
-11 6884     1.598999e+01 -4.214600e+02
-14 6884     1.634100e+02 -4.265100e+02
-0 6885     7.522300e+02 3.246600e+02
-2 6885     6.108101e+02 3.600900e+02
-3 6885     4.591500e+02 3.850000e+01
-6 6885     5.513600e+02 5.426700e+02
-7 6885     5.562700e+02 5.197700e+02
-8 6885     5.650699e+02 2.652500e+02
-9 6885     3.774600e+02 4.067400e+02
-10 6885     7.616300e+02 6.067500e+02
-12 6885     6.306200e+02 5.539600e+02
-0 6886     7.522300e+02 3.246600e+02
-3 6886     4.591500e+02 3.850000e+01
-6 6886     5.513600e+02 5.426700e+02
-7 6886     5.562700e+02 5.197700e+02
-8 6886     5.650699e+02 2.652500e+02
-10 6886     7.616300e+02 6.067500e+02
-12 6886     6.306200e+02 5.539600e+02
-0 6887     -4.687200e+02 3.241800e+02
-7 6887     -6.799300e+02 3.286000e+02
-10 6887     -6.923500e+02 4.825000e+02
-11 6887     -2.719700e+02 -4.197300e+02
-12 6887     -8.170800e+02 2.152700e+02
-15 6887     -7.109000e+02 5.185400e+02
-0 6888     5.789100e+02 3.210500e+02
-2 6888     4.331700e+02 2.882900e+02
-3 6888     2.941300e+02 -3.360999e+01
-6 6888     3.492200e+02 4.864100e+02
-7 6888     3.899000e+02 4.875500e+02
-8 6888     4.187700e+02 2.097600e+02
-9 6888     2.294600e+02 3.402900e+02
-12 6888     4.362200e+02 4.920300e+02
-0 6889     -5.179100e+02 3.196500e+02
-7 6889     -7.295500e+02 3.193100e+02
-10 6889     -7.531800e+02 4.726500e+02
-14 6889     -2.066300e+02 -4.340900e+02
-15 6889     -7.801400e+02 5.059100e+02
-0 6890     -5.681000e+02 3.180100e+02
-5 6890     -1.759100e+02 -3.380700e+02
-10 6890     -8.166300e+02 4.670000e+02
-11 6890     -3.603700e+02 -4.226200e+02
-14 6890     -2.575800e+02 -4.357000e+02
-15 6890     -8.503400e+02 4.972600e+02
-0 6891     -3.990100e+02 3.177900e+02
-5 6891     -6.359985e+00 -3.443900e+02
-8 6891     -4.802000e+02 9.869995e+00
-12 6891     -7.255000e+02 2.214400e+02
-15 6891     -6.119300e+02 5.187100e+02
-0 6892     8.440800e+02 3.168400e+02
-2 6892     6.999800e+02 3.870100e+02
-3 6892     5.411899e+02 6.441998e+01
-7 6892     6.438700e+02 5.271600e+02
-0 6893     7.107400e+02 3.155600e+02
-2 6893     5.724399e+02 3.370100e+02
-6 6893     5.057400e+02 5.203800e+02
-7 6893     5.172900e+02 5.045900e+02
-0 6894     7.107400e+02 3.155600e+02
-2 6894     5.724399e+02 3.370100e+02
-0 6895     -1.985600e+02 3.131800e+02
-2 6895     -4.716900e+02 2.901001e+01
-7 6895     -3.983200e+02 3.517000e+02
-14 6895     1.136800e+02 -4.417100e+02
-15 6895     -3.315400e+02 5.385400e+02
-0 6896     7.503998e+01 3.137000e+02
-7 6896     -1.242200e+02 3.899000e+02
-15 6896     4.506000e+01 5.768300e+02
-0 6897     6.557800e+02 3.136300e+02
-3 6897     3.710800e+02 -9.280029e+00
-6 6897     4.423300e+02 5.019600e+02
-7 6897     4.643800e+02 4.929100e+02
-0 6898     6.178199e+02 3.094300e+02
-2 6898     4.781100e+02 2.932200e+02
-3 6898     3.354399e+02 -2.906000e+01
-6 6898     3.974400e+02 4.849800e+02
-7 6898     4.275900e+02 4.821100e+02
-8 6898     4.536801e+02 2.125900e+02
-9 6898     2.661700e+02 3.458800e+02
-10 6898     6.012900e+02 5.724800e+02
-11 6898     7.293800e+02 -4.118800e+02
-12 6898     4.825000e+02 4.920000e+02
-13 6898     8.034700e+02 7.303998e+01
-0 6899     -1.817100e+02 3.083300e+02
-7 6899     -3.810900e+02 3.487700e+02
-15 6899     -3.079100e+02 5.335600e+02
-0 6900     -5.725700e+02 3.007100e+02
-10 6900     -8.191200e+02 4.448200e+02
-13 6900     -2.711200e+02 -2.851001e+01
-0 6901     3.624000e+02 2.992900e+02
-6 6901     1.284998e+01 3.677300e+02
-14 6901     7.280100e+02 -4.292200e+02
-0 6902     4.494000e+02 2.980600e+02
-10 6902     4.024800e+02 5.397200e+02
-11 6902     5.767500e+02 -4.284800e+02
-12 6902     2.602200e+02 3.973000e+02
-0 6903     6.092600e+02 2.971400e+02
-2 6903     4.719500e+02 2.783900e+02
-3 6903     3.301300e+02 -4.315002e+01
-6 6903     3.900100e+02 4.689900e+02
-7 6903     4.206899e+02 4.688700e+02
-8 6903     4.487200e+02 2.001600e+02
-9 6903     2.615500e+02 3.326900e+02
-10 6903     5.918400e+02 5.565100e+02
-11 6903     7.229301e+02 -4.235400e+02
-12 6903     4.753300e+02 4.764800e+02
-13 6903     7.961000e+02 6.191998e+01
-0 6904     6.578101e+02 2.968900e+02
-2 6904     5.229600e+02 2.987200e+02
-3 6904     3.782800e+02 -2.253998e+01
-6 6904     4.485000e+02 4.843200e+02
-9 6904     3.045500e+02 3.510400e+02
-0 6905     -3.698700e+02 2.960300e+02
-7 6905     -5.701100e+02 3.125100e+02
-10 6905     -5.655600e+02 4.559200e+02
-11 6905     -1.858900e+02 -4.475600e+02
-0 6906     -4.479500e+02 2.954800e+02
-7 6906     -6.536000e+02 3.005400e+02
-10 6906     -6.621600e+02 4.489000e+02
-11 6906     -2.556300e+02 -4.463200e+02
-12 6906     -7.860100e+02 1.820200e+02
-15 6906     -6.763700e+02 4.809100e+02
-0 6907     8.781000e+01 2.943600e+02
-2 6907     -1.470300e+02 5.935999e+01
-7 6907     -1.070500e+02 3.737400e+02
-9 6907     -2.634700e+02 1.219400e+02
-0 6908     7.720601e+02 2.943900e+02
-7 6908     5.790500e+02 4.937600e+02
-8 6908     5.886200e+02 2.484000e+02
-12 6908     6.613900e+02 5.288500e+02
-0 6909     7.720601e+02 2.943900e+02
-3 6909     4.863600e+02 2.151001e+01
-6 6909     5.820500e+02 5.160900e+02
-8 6909     5.886200e+02 2.484000e+02
-9 6909     4.009800e+02 3.908400e+02
-10 6909     7.870601e+02 5.728100e+02
-0 6910     8.722000e+02 2.930700e+02
-2 6910     7.326000e+02 3.765600e+02
-3 6910     5.718199e+02 5.591998e+01
-0 6911     7.821000e+02 2.908900e+02
-7 6911     5.890601e+02 4.924300e+02
-10 6911     7.994399e+02 5.691400e+02
-0 6912     4.576400e+02 2.897600e+02
-6 6912     1.590700e+02 3.940500e+02
-7 6912     2.586200e+02 4.263200e+02
-12 6912     2.726100e+02 3.902900e+02
-14 6912     8.629600e+02 -4.288700e+02
-0 6913     4.576400e+02 2.897600e+02
-7 6913     2.586200e+02 4.263200e+02
-0 6914     -5.199400e+02 2.898500e+02
-7 6914     -7.275800e+02 2.873200e+02
-10 6914     -7.518400e+02 4.368600e+02
-15 6914     -7.770800e+02 4.640700e+02
-0 6915     -2.176900e+02 2.886500e+02
-7 6915     -4.135800e+02 3.248000e+02
-10 6915     -3.800800e+02 4.615100e+02
-14 6915     9.475000e+01 -4.683199e+02
-15 6915     -3.538300e+02 5.017700e+02
-0 6916     -5.129900e+02 2.882300e+02
-7 6916     -7.199000e+02 2.862500e+02
-0 6917     7.827100e+02 2.871800e+02
-2 6917     6.509100e+02 3.391300e+02
-3 6917     4.979301e+02 1.883002e+01
-7 6917     5.902800e+02 4.890700e+02
-10 6917     8.005100e+02 5.651100e+02
-0 6918     7.784600e+02 2.863700e+02
-2 6918     6.473700e+02 3.371300e+02
-3 6918     4.948500e+02 1.685999e+01
-7 6918     5.864600e+02 4.876100e+02
-8 6918     5.952900e+02 2.447900e+02
-10 6918     7.953400e+02 5.628800e+02
-12 6918     6.697800e+02 5.228800e+02
-0 6919     -4.596500e+02 2.849000e+02
-7 6919     -6.641300e+02 2.878600e+02
-0 6920     7.846600e+02 2.834700e+02
-3 6920     5.006600e+02 1.585999e+01
-7 6920     5.923800e+02 4.857700e+02
-10 6920     8.024700e+02 5.612700e+02
-0 6921     2.714500e+02 2.824700e+02
-13 6921     4.437300e+02 4.599976e+00
-0 6922     -4.022000e+02 2.820500e+02
-7 6922     -6.018900e+02 2.934800e+02
-0 6923     4.895200e+02 2.812700e+02
-6 6923     2.023300e+02 3.971300e+02
-7 6923     2.921200e+02 4.236000e+02
-8 6923     3.103300e+02 1.152300e+02
-10 6923     4.511000e+02 5.243900e+02
-12 6923     3.117700e+02 3.940700e+02
-13 6923     6.563900e+02 2.796997e+01
-0 6924     -5.544700e+02 2.807300e+02
-13 6924     -2.588600e+02 -4.437000e+01
-0 6925     6.622900e+02 2.800500e+02
-2 6925     5.324800e+02 2.842400e+02
-3 6925     3.876500e+02 -3.527002e+01
-6 6925     4.580500e+02 4.677700e+02
-7 6925     4.752900e+02 4.615100e+02
-8 6925     4.983900e+02 2.039200e+02
-10 6925     6.560400e+02 5.416600e+02
-12 6925     5.402900e+02 4.765300e+02
-13 6925     8.509000e+02 5.388000e+01
-0 6926     -5.227700e+02 2.777700e+02
-5 6926     -1.369700e+02 -3.847900e+02
-8 6926     -5.947800e+02 -3.810999e+01
-14 6926     -2.173500e+02 -4.814000e+02
-0 6927     5.800500e+02 2.758600e+02
-2 6927     4.445400e+02 2.453800e+02
-6 6927     3.587800e+02 4.362400e+02
-9 6927     2.394399e+02 3.036600e+02
-10 6927     5.582600e+02 5.274900e+02
-12 6927     4.454399e+02 4.440000e+02
-0 6928     5.837900e+02 2.747400e+02
-2 6928     4.491100e+02 2.457600e+02
-3 6928     3.090400e+02 -7.503998e+01
-6 6928     3.620900e+02 4.365200e+02
-0 6929     5.837900e+02 2.747400e+02
-3 6929     3.090400e+02 -7.503998e+01
-0 6930     6.662700e+02 2.742900e+02
-2 6930     5.384200e+02 2.807600e+02
-3 6930     3.938800e+02 -3.871997e+01
-7 6930     4.799600e+02 4.568800e+02
-13 6930     8.554399e+02 4.984003e+01
-0 6931     6.662700e+02 2.742900e+02
-2 6931     5.384200e+02 2.807600e+02
-6 6931     4.661899e+02 4.631100e+02
-8 6931     5.044800e+02 2.012700e+02
-9 6931     3.189900e+02 3.373800e+02
-12 6931     5.470500e+02 4.721200e+02
-13 6931     8.554399e+02 4.984003e+01
-0 6932     5.812800e+02 2.716500e+02
-2 6932     4.480400e+02 2.411600e+02
-3 6932     3.078700e+02 -7.879999e+01
-6 6932     3.611700e+02 4.312300e+02
-8 6932     4.286500e+02 1.705200e+02
-9 6932     2.414900e+02 3.004800e+02
-13 6932     7.710900e+02 3.665997e+01
-0 6933     7.717300e+02 2.707500e+02
-8 6933     5.931300e+02 2.302700e+02
-10 6933     7.881500e+02 5.434900e+02
-12 6933     6.662200e+02 5.052000e+02
-0 6934     8.472998e+01 2.668400e+02
-3 6934     -2.611200e+02 -2.893700e+02
-6 6934     -2.852700e+02 2.552900e+02
-7 6934     -1.037000e+02 3.478300e+02
-12 6934     -1.435700e+02 2.693500e+02
-13 6934     2.874500e+02 -2.201001e+01
-14 6934     4.343800e+02 -4.811100e+02
-0 6935     6.796400e+02 2.669400e+02
-7 6935     4.937000e+02 4.520200e+02
-12 6935     5.636500e+02 4.694100e+02
-0 6936     -1.803600e+02 2.659900e+02
-7 6936     -3.701100e+02 3.079800e+02
-11 6936     -1.471997e+01 -4.776500e+02
-13 6936     5.688000e+01 -4.035999e+01
-14 6936     1.427900e+02 -4.923400e+02
-15 6936     -3.003000e+02 4.748700e+02
-0 6937     8.129301e+02 2.637700e+02
-2 6937     6.859200e+02 3.297200e+02
-3 6937     5.313400e+02 1.094000e+01
-0 6938     -1.645500e+02 2.635000e+02
-7 6938     -3.531700e+02 3.082400e+02
-15 6938     -2.784000e+02 4.742500e+02
-0 6939     7.683199e+02 2.626000e+02
-3 6939     4.930100e+02 -6.830017e+00
-6 6939     5.851801e+02 4.815100e+02
-7 6939     5.798900e+02 4.630900e+02
-9 6939     4.063300e+02 3.657100e+02
-10 6939     7.843300e+02 5.331400e+02
-12 6939     6.642200e+02 4.934700e+02
-0 6940     8.568800e+02 2.604300e+02
-9 6940     4.765200e+02 3.955700e+02
-0 6941     8.631200e+02 2.604700e+02
-3 6941     5.762800e+02 2.783002e+01
-7 6941     6.693400e+02 4.770600e+02
-0 6942     6.628000e+02 2.574600e+02
-2 6942     5.384700e+02 2.633900e+02
-3 6942     3.954900e+02 -5.560999e+01
-9 6942     3.191500e+02 3.214800e+02
-0 6943     8.621500e+02 2.574700e+02
-9 6943     4.809800e+02 3.952100e+02
-0 6944     6.228800e+02 2.572000e+02
-3 6944     3.552100e+02 -7.285999e+01
-7 6944     4.394600e+02 4.323500e+02
-8 6944     4.689500e+02 1.730600e+02
-9 6944     2.833700e+02 3.059800e+02
-10 6944     6.108000e+02 5.102800e+02
-0 6945     -3.777002e+01 2.548700e+02
-7 6945     -2.226900e+02 3.182800e+02
-10 6945     -1.644100e+02 4.380500e+02
-13 6945     1.844900e+02 -4.103003e+01
-15 6945     -1.029700e+02 4.789200e+02
-0 6946     7.648000e+02 2.551200e+02
-2 6946     6.428400e+02 3.038200e+02
-3 6946     4.920300e+02 -1.485999e+01
-6 6946     5.832800e+02 4.731300e+02
-7 6946     5.775100e+02 4.553500e+02
-8 6946     5.910300e+02 2.170400e+02
-10 6946     7.803600e+02 5.233200e+02
-0 6947     2.984301e+02 2.518600e+02
-6 6947     -2.796997e+01 2.988500e+02
-0 6948     -5.547400e+02 2.517600e+02
-13 6948     -2.592100e+02 -7.046002e+01
-14 6948     -2.532800e+02 -5.105100e+02
-0 6949     7.630400e+02 2.508300e+02
-2 6949     6.420100e+02 2.953600e+02
-3 6949     4.916200e+02 -2.058002e+01
-6 6949     5.823800e+02 4.679700e+02
-9 6949     4.049600e+02 3.520800e+02
-10 6949     7.773700e+02 5.148600e+02
-0 6950     -1.465002e+01 2.503500e+02
-6 6950     -3.947100e+02 2.075800e+02
-10 6950     -1.367600e+02 4.353800e+02
-0 6951     -5.337400e+02 2.496000e+02
-5 6951     -1.505400e+02 -4.154100e+02
-14 6951     -2.307100e+02 -5.125500e+02
-0 6952     -5.197998e+01 2.492900e+02
-7 6952     -2.359800e+02 3.113700e+02
-10 6952     -1.808000e+02 4.306700e+02
-0 6953     4.763000e+01 2.496400e+02
-7 6953     -1.356100e+02 3.259900e+02
-10 6953     -6.359003e+01 4.406100e+02
-0 6954     6.096000e+02 2.481400e+02
-7 6954     4.278700e+02 4.217000e+02
-10 6954     5.956400e+02 4.977000e+02
-0 6955     -2.245700e+02 2.472800e+02
-7 6955     -4.108300e+02 2.839400e+02
-11 6955     -5.650000e+01 -4.951400e+02
-15 6955     -3.581600e+02 4.434700e+02
-0 6956     5.234200e+02 2.462000e+02
-7 6956     3.311000e+02 3.950600e+02
-10 6956     4.940500e+02 4.859400e+02
-15 6956     6.748000e+02 5.511800e+02
-0 6957     6.315400e+02 2.455800e+02
-6 6957     4.304100e+02 4.182700e+02
-7 6957     4.495200e+02 4.228200e+02
-9 6957     2.936600e+02 3.003700e+02
-11 6957     7.589301e+02 -4.761400e+02
-12 6957     5.141400e+02 4.267400e+02
-15 6957     8.238199e+02 5.690000e+02
-0 6958     3.335400e+02 2.423100e+02
-6 6958     1.707001e+01 2.983000e+02
-7 6958     1.434700e+02 3.590900e+02
-11 6958     4.734301e+02 -4.905000e+02
-0 6959     6.327700e+02 2.413000e+02
-3 6959     3.701300e+02 -8.297998e+01
-7 6959     4.513199e+02 4.190800e+02
-10 6959     6.236100e+02 4.922400e+02
-13 6959     8.260100e+02 1.735999e+01
-0 6960     -3.967999e+01 2.383300e+02
-6 6960     -4.173800e+02 1.867200e+02
-7 6960     -2.206100e+02 3.027500e+02
-10 6960     -1.646200e+02 4.188900e+02
-12 6960     -2.726100e+02 2.120700e+02
-14 6960     3.065100e+02 -5.178101e+02
-0 6961     8.789000e+02 2.379700e+02
-2 6961     7.546100e+02 3.319500e+02
-7 6961     6.866899e+02 4.586000e+02
-9 6961     4.980699e+02 3.856300e+02
-0 6962     -4.139300e+02 2.361500e+02
-13 6962     -1.445800e+02 -7.870001e+01
-14 6962     -1.110800e+02 -5.290900e+02
-0 6963     -6.938000e+01 2.313600e+02
-7 6963     -2.482700e+02 2.918700e+02
-0 6964     -4.563000e+01 2.310200e+02
-6 6964     -4.198500e+02 1.765200e+02
-0 6965     -3.719971e+00 2.308600e+02
-6 6965     -3.673900e+02 1.889300e+02
-10 6965     -1.217000e+02 4.136000e+02
-13 6965     2.203800e+02 -5.783002e+01
-0 6966     -1.685999e+01 2.304200e+02
-6 6966     -3.832600e+02 1.843500e+02
-0 6967     8.014399e+02 2.306000e+02
-3 6967     5.320400e+02 -2.075000e+01
-9 6967     4.420500e+02 3.543400e+02
-0 6968     5.139399e+02 2.291800e+02
-7 6968     3.246400e+02 3.773900e+02
-10 6968     4.853800e+02 4.651800e+02
-15 6968     6.634700e+02 5.258500e+02
-0 6969     6.615300e+02 2.289700e+02
-7 6969     4.810900e+02 4.123400e+02
-8 6969     5.083800e+02 1.636300e+02
-9 6969     3.244000e+02 2.988900e+02
-10 6969     6.587400e+02 4.806000e+02
-15 6969     8.679301e+02 5.500900e+02
-0 6970     7.279301e+02 2.292500e+02
-2 6970     6.132500e+02 2.646100e+02
-3 6970     4.657400e+02 -5.138000e+01
-6 6970     5.477300e+02 4.342400e+02
-7 6970     5.456200e+02 4.243800e+02
-8 6970     5.655800e+02 1.856600e+02
-9 6970     3.815000e+02 3.254800e+02
-10 6970     7.375400e+02 4.883900e+02
-0 6971     7.279301e+02 2.292500e+02
-2 6971     6.132500e+02 2.646100e+02
-6 6971     5.477300e+02 4.342400e+02
-7 6971     5.456200e+02 4.243800e+02
-9 6971     3.815000e+02 3.254800e+02
-0 6972     7.115601e+02 2.265900e+02
-2 6972     5.975699e+02 2.552700e+02
-3 6972     4.512800e+02 -6.095001e+01
-7 6972     5.301400e+02 4.189500e+02
-10 6972     7.183400e+02 4.832500e+02
-0 6973     7.115601e+02 2.265900e+02
-2 6973     5.975699e+02 2.552700e+02
-3 6973     4.512800e+02 -6.095001e+01
-6 6973     5.294399e+02 4.259400e+02
-7 6973     5.301400e+02 4.189500e+02
-8 6973     5.522100e+02 1.781900e+02
-9 6973     3.683900e+02 3.168700e+02
-10 6973     7.183400e+02 4.832500e+02
-0 6974     -3.509600e+02 2.260900e+02
-14 6974     -3.714001e+01 -5.396500e+02
-0 6975     -4.873600e+02 2.253900e+02
-10 6975     -6.995100e+02 3.605900e+02
-14 6975     -1.896900e+02 -5.417200e+02
-0 6976     5.644800e+02 2.201700e+02
-8 6976     4.234301e+02 1.239000e+02
-10 6976     5.445300e+02 4.595700e+02
-0 6977     -6.070007e+00 2.158300e+02
-6 6977     -3.592900e+02 1.717300e+02
-13 6977     2.221000e+02 -7.072998e+01
-14 6977     3.511899e+02 -5.412200e+02
-0 6978     6.052400e+02 2.156500e+02
-6 6978     4.051200e+02 3.774700e+02
-7 6978     4.274500e+02 3.893400e+02
-9 6978     2.772700e+02 2.648100e+02
-10 6978     5.924600e+02 4.590300e+02
-11 6978     7.395400e+02 -5.087000e+02
-15 6978     7.898700e+02 5.219500e+02
-0 6979     6.207900e+02 2.158500e+02
-2 6979     5.054700e+02 2.049700e+02
-6 6979     4.239500e+02 3.825000e+02
-13 6979     8.171000e+02 -5.760010e+00
-0 6980     -2.707001e+01 2.145500e+02
-6 6980     -3.849200e+02 1.634100e+02
-0 6981     -3.324200e+02 2.079700e+02
-7 6981     -5.136800e+02 2.290100e+02
-10 6981     -5.081200e+02 3.535100e+02
-13 6981     -6.390997e+01 -9.778998e+01
-14 6981     -1.185999e+01 -5.592400e+02
-0 6982     6.221400e+02 2.069200e+02
-7 6982     4.452300e+02 3.839900e+02
-0 6983     -4.310999e+01 2.067300e+02
-7 6983     -2.163000e+02 2.721900e+02
-10 6983     -1.655800e+02 3.813600e+02
-12 6983     -2.622600e+02 1.795800e+02
-13 6983     1.925900e+02 -8.087000e+01
-14 6983     3.135400e+02 -5.531300e+02
-0 6984     6.808700e+02 2.025900e+02
-6 6984     5.000300e+02 3.898900e+02
-7 6984     5.035601e+02 3.905900e+02
-8 6984     5.310699e+02 1.488100e+02
-9 6984     3.483800e+02 2.858900e+02
-0 6985     -1.607200e+02 2.002600e+02
-7 6985     -3.348700e+02 2.476800e+02
-10 6985     -3.034800e+02 3.609100e+02
-15 6985     -2.645400e+02 3.867400e+02
-0 6986     8.530200e+02 1.984600e+02
-2 6986     7.425900e+02 2.871900e+02
-0 6987     7.364200e+02 1.968800e+02
-2 6987     6.317300e+02 2.389500e+02
-3 6987     4.846700e+02 -7.601001e+01
-6 6987     5.660800e+02 4.018100e+02
-7 6987     5.582100e+02 3.945900e+02
-10 6987     7.497800e+02 4.509000e+02
-0 6988     -1.596997e+01 1.949100e+02
-5 6988     4.313000e+02 -4.798400e+02
-6 6988     -3.567200e+02 1.454600e+02
-9 6988     -2.946400e+02 4.339001e+01
-10 6988     -1.311000e+02 3.705300e+02
-13 6988     2.191400e+02 -8.834003e+01
-14 6988     3.474500e+02 -5.638600e+02
-0 6989     7.389900e+02 1.926000e+02
-7 6989     5.609900e+02 3.910100e+02
-8 6989     5.831300e+02 1.615400e+02
-10 6989     7.531200e+02 4.455600e+02
-0 6990     -2.194000e+01 1.916600e+02
-10 6990     -1.393900e+02 3.645200e+02
-13 6990     2.149800e+02 -9.187000e+01
-14 6990     3.417700e+02 -5.686000e+02
-0 6991     8.071997e+01 1.890500e+02
-13 6991     3.974800e+02 -6.178003e+01
-14 6991     5.758700e+02 -5.397900e+02
-15 6991     5.290997e+01 4.073000e+02
-0 6992     1.139300e+02 1.855700e+02
-7 6992     -1.559998e+01 3.065000e+02
-10 6992     1.989001e+01 3.698500e+02
-15 6992     9.972998e+01 4.072300e+02
-0 6993     -4.499000e+02 1.843600e+02
-5 6993     -6.012000e+01 -4.911600e+02
-7 6993     -6.328000e+02 1.872600e+02
-0 6994     6.174100e+02 1.829100e+02
-2 6994     5.113500e+02 1.713900e+02
-6 6994     4.287500e+02 3.460700e+02
-7 6994     4.442700e+02 3.596600e+02
-8 6994     4.790000e+02 1.119700e+02
-9 6994     2.968000e+02 2.433800e+02
-10 6994     6.095300e+02 4.207800e+02
-12 6994     5.125200e+02 3.554800e+02
-15 6994     8.113300e+02 4.775200e+02
-0 6995     6.241801e+02 1.806200e+02
-2 6995     5.184301e+02 1.722400e+02
-3 6995     3.789399e+02 -1.427800e+02
-6 6995     4.374600e+02 3.458400e+02
-7 6995     4.507900e+02 3.588700e+02
-9 6995     3.032400e+02 2.443900e+02
-10 6995     6.171300e+02 4.190100e+02
-15 6995     8.204301e+02 4.757200e+02
-0 6996     5.870100e+02 1.799200e+02
-3 6996     3.406400e+02 -1.628300e+02
-7 6996     4.139800e+02 3.506500e+02
-13 6996     7.875601e+02 -4.201001e+01
-0 6997     2.064001e+01 1.777000e+02
-7 6997     -1.068400e+02 2.845700e+02
-15 6997     -2.735999e+01 3.827900e+02
-0 6998     6.020800e+02 1.753400e+02
-3 6998     3.574301e+02 -1.580000e+02
-7 6998     4.299800e+02 3.493600e+02
-10 6998     5.917800e+02 4.099000e+02
-15 6998     7.898700e+02 4.654500e+02
-0 6999     6.875800e+02 1.736000e+02
-6 6999     5.150000e+02 3.604100e+02
-7 6999     5.138101e+02 3.637300e+02
-9 6999     3.612900e+02 2.652200e+02
-0 7000     6.875800e+02 1.736000e+02
-6 7000     5.150000e+02 3.604100e+02
-7 7000     5.138101e+02 3.637300e+02
-8 7000     5.430800e+02 1.281400e+02
-9 7000     3.612900e+02 2.652200e+02
-12 7000     5.952900e+02 3.703000e+02
-0 7001     6.035200e+02 1.720100e+02
-2 7001     4.986700e+02 1.533600e+02
-3 7001     3.602000e+02 -1.613500e+02
-7 7001     4.317800e+02 3.463700e+02
-8 7001     4.692400e+02 9.712000e+01
-9 7001     2.869000e+02 2.275700e+02
-10 7001     5.936200e+02 4.063700e+02
-12 7001     4.990699e+02 3.373000e+02
-13 7001     8.047000e+02 -4.620001e+01
-15 7001     7.923500e+02 4.600500e+02
-0 7002     7.394200e+02 1.711900e+02
-7 7002     5.641100e+02 3.708400e+02
-10 7002     7.548199e+02 4.204700e+02
-0 7003     -3.238800e+02 1.704500e+02
-7 7003     -4.962100e+02 1.941600e+02
-10 7003     -4.925300e+02 3.096300e+02
-12 7003     -5.867600e+02 7.158002e+01
-15 7003     -4.847000e+02 3.243400e+02
-0 7004     8.299600e+02 1.703600e+02
-2 7004     7.299500e+02 2.525600e+02
-7 7004     6.505300e+02 3.860600e+02
-9 7004     4.796400e+02 3.191100e+02
-0 7005     6.389700e+02 1.694400e+02
-3 7005     3.978900e+02 -1.459300e+02
-6 7005     4.581600e+02 3.390200e+02
-7 7005     4.668500e+02 3.508600e+02
-9 7005     3.195200e+02 2.415300e+02
-10 7005     6.352400e+02 4.073300e+02
-12 7005     5.407000e+02 3.486600e+02
-15 7005     8.426400e+02 4.620400e+02
-0 7006     5.430000e+02 1.691300e+02
-7 7006     3.715800e+02 3.318900e+02
-9 7006     2.301000e+02 1.977300e+02
-10 7006     5.224000e+02 3.963400e+02
-13 7006     7.433000e+02 -5.713000e+01
-0 7007     6.302100e+02 1.688000e+02
-7 7007     4.584700e+02 3.487000e+02
-9 7007     3.115300e+02 2.380500e+02
-15 7007     8.303600e+02 4.604800e+02
-0 7008     -9.501001e+01 1.663700e+02
-5 7008     3.494200e+02 -5.134800e+02
-0 7009     7.143101e+02 1.640200e+02
-2 7009     6.179600e+02 1.973700e+02
-3 7009     4.735699e+02 -1.151800e+02
-6 7009     5.489500e+02 3.597700e+02
-7 7009     5.410699e+02 3.592700e+02
-8 7009     5.685100e+02 1.301800e+02
-9 7009     3.867800e+02 2.688300e+02
-10 7009     7.257600e+02 4.089700e+02
-12 7009     6.286300e+02 3.702700e+02
-0 7010     7.129000e+02 1.603000e+02
-2 7010     6.175500e+02 1.929700e+02
-3 7010     4.734500e+02 -1.191200e+02
-6 7010     5.483300e+02 3.552400e+02
-7 7010     5.403101e+02 3.559900e+02
-8 7010     5.681500e+02 1.265200e+02
-9 7010     3.865601e+02 2.651900e+02
-12 7010     6.280100e+02 3.659000e+02
-0 7011     7.001801e+02 1.591700e+02
-2 7011     6.046600e+02 1.858000e+02
-3 7011     4.616899e+02 -1.261400e+02
-9 7011     3.758199e+02 2.591600e+02
-0 7012     8.699700e+02 1.587100e+02
-2 7012     7.703600e+02 2.583800e+02
-7 7012     6.887100e+02 3.821000e+02
-9 7012     5.124900e+02 3.246300e+02
-12 7012     8.023600e+02 4.192700e+02
-0 7013     7.045400e+02 1.583900e+02
-7 7013     5.320200e+02 3.523600e+02
-10 7013     7.142600e+02 4.015000e+02
-0 7014     7.045400e+02 1.583900e+02
-2 7014     6.093700e+02 1.875000e+02
-3 7014     4.657700e+02 -1.247400e+02
-6 7014     5.387100e+02 3.498700e+02
-7 7014     5.320200e+02 3.523600e+02
-8 7014     5.611000e+02 1.220800e+02
-9 7014     3.794900e+02 2.601300e+02
-10 7014     7.142600e+02 4.015000e+02
-12 7014     6.184301e+02 3.599600e+02
-0 7015     7.255100e+02 1.582300e+02
-2 7015     6.312400e+02 1.969300e+02
-6 7015     5.635200e+02 3.572700e+02
-10 7015     7.391700e+02 4.036400e+02
-12 7015     6.429600e+02 3.677800e+02
-0 7016     7.143600e+02 1.560600e+02
-2 7016     6.200699e+02 1.895400e+02
-3 7016     4.759100e+02 -1.223000e+02
-6 7016     5.509100e+02 3.509200e+02
-7 7016     5.422300e+02 3.518000e+02
-8 7016     5.703199e+02 1.234900e+02
-9 7016     3.889100e+02 2.626300e+02
-10 7016     7.261300e+02 3.994000e+02
-12 7016     6.305400e+02 3.612900e+02
-0 7017     7.143600e+02 1.560600e+02
-2 7017     6.200699e+02 1.895400e+02
-3 7017     4.759100e+02 -1.223000e+02
-6 7017     5.509100e+02 3.509200e+02
-7 7017     5.422300e+02 3.518000e+02
-8 7017     5.703199e+02 1.234900e+02
-9 7017     3.889100e+02 2.626300e+02
-10 7017     7.261300e+02 3.994000e+02
-12 7017     6.305400e+02 3.612900e+02
-0 7018     7.684900e+02 1.549300e+02
-7 7018     5.939100e+02 3.603800e+02
-10 7018     7.906100e+02 4.042300e+02
-0 7019     7.684900e+02 1.549300e+02
-7 7019     5.939100e+02 3.603800e+02
-0 7020     8.227400e+02 1.550400e+02
-3 7020     5.757200e+02 -7.503003e+01
-7 7020     6.456000e+02 3.703400e+02
-0 7021     8.227400e+02 1.550400e+02
-3 7021     5.757200e+02 -7.503003e+01
-7 7021     6.456000e+02 3.703400e+02
-0 7022     8.634399e+02 1.544100e+02
-7 7022     6.836000e+02 3.769900e+02
-9 7022     5.087100e+02 3.194600e+02
-0 7023     8.210500e+02 1.514000e+02
-7 7023     6.445300e+02 3.664800e+02
-0 7024     8.210500e+02 1.514000e+02
-2 7024     7.271700e+02 2.327200e+02
-7 7024     6.445300e+02 3.664800e+02
-0 7025     -5.794000e+01 1.504600e+02
-7 7025     -1.964500e+02 2.339700e+02
-8 7025     -3.151001e+01 4.599915e-01
-0 7026     6.465300e+02 1.474100e+02
-2 7026     5.514500e+02 1.510800e+02
-3 7026     4.120500e+02 -1.624700e+02
-9 7026     3.319200e+02 2.277500e+02
-13 7026     8.513500e+02 -6.087000e+01
-0 7027     7.090800e+02 1.466300e+02
-2 7027     6.173800e+02 1.789300e+02
-3 7027     4.746300e+02 -1.331000e+02
-6 7027     5.477300e+02 3.392500e+02
-7 7027     5.385200e+02 3.417600e+02
-8 7027     5.675300e+02 1.146000e+02
-9 7027     3.866100e+02 2.532900e+02
-0 7028     8.182400e+02 1.462600e+02
-2 7028     7.261801e+02 2.267600e+02
-7 7028     6.426200e+02 3.612900e+02
-0 7029     -2.129500e+02 1.442300e+02
-7 7029     -3.739500e+02 1.866300e+02
-8 7029     -2.504800e+02 -1.046700e+02
-10 7029     -3.580300e+02 2.896600e+02
-13 7029     5.928003e+01 -1.442600e+02
-15 7029     -3.287100e+02 3.029100e+02
-0 7030     8.290800e+02 1.446400e+02
-2 7030     7.369800e+02 2.294900e+02
-7 7030     6.532300e+02 3.619100e+02
-9 7030     4.855900e+02 2.993800e+02
-0 7031     6.733500e+02 1.442100e+02
-6 7031     5.073800e+02 3.243000e+02
-7 7031     5.038400e+02 3.328100e+02
-9 7031     3.574500e+02 2.364300e+02
-12 7031     5.891100e+02 3.343000e+02
-0 7032     -6.826001e+01 1.429300e+02
-7 7032     -2.049400e+02 2.253500e+02
-10 7032     -1.883600e+02 3.017400e+02
-0 7033     8.168500e+02 1.430700e+02
-2 7033     7.257800e+02 2.232200e+02
-3 7033     5.746899e+02 -8.691998e+01
-7 7033     6.417700e+02 3.581100e+02
-0 7034     6.701100e+02 1.425300e+02
-3 7034     4.378800e+02 -1.553600e+02
-7 7034     5.009301e+02 3.308300e+02
-8 7034     5.347500e+02 9.813000e+01
-0 7035     6.701100e+02 1.425300e+02
-3 7035     4.378800e+02 -1.553600e+02
-7 7035     5.009301e+02 3.308300e+02
-8 7035     5.347500e+02 9.813000e+01
-0 7036     1.431600e+02 1.416600e+02
-4 7036     -1.953100e+02 -5.160500e+02
-6 7036     4.407001e+01 2.085900e+02
-8 7036     2.094200e+02 9.041000e+01
-13 7036     4.645800e+02 -9.441998e+01
-0 7037     7.497800e+02 1.422400e+02
-2 7037     6.601500e+02 1.929100e+02
-3 7037     5.144500e+02 -1.179800e+02
-7 7037     5.781899e+02 3.450200e+02
-9 7037     4.224301e+02 2.662900e+02
-10 7037     7.692800e+02 3.873800e+02
-12 7037     6.744000e+02 3.599000e+02
-0 7038     7.270200e+02 1.412200e+02
-2 7038     6.374000e+02 1.816700e+02
-3 7038     4.929800e+02 -1.291800e+02
-6 7038     5.696200e+02 3.397800e+02
-7 7038     5.564500e+02 3.399500e+02
-8 7038     5.844900e+02 1.164600e+02
-9 7038     4.034800e+02 2.561200e+02
-10 7038     7.423400e+02 3.836700e+02
-12 7038     6.487500e+02 3.504500e+02
-0 7039     8.358300e+02 1.412400e+02
-2 7039     7.436400e+02 2.286700e+02
-7 7039     6.596500e+02 3.596400e+02
-9 7039     4.912900e+02 2.991200e+02
-0 7040     8.018800e+02 1.408200e+02
-2 7040     7.122100e+02 2.150700e+02
-7 7040     6.277400e+02 3.532700e+02
-0 7041     7.968800e+02 1.400000e+02
-2 7041     7.074000e+02 2.112200e+02
-3 7041     5.589200e+02 -9.785999e+01
-7 7041     6.234399e+02 3.517800e+02
-10 7041     8.255900e+02 3.904800e+02
-0 7042     8.189800e+02 1.395600e+02
-2 7042     7.284600e+02 2.204200e+02
-7 7042     6.441300e+02 3.552000e+02
-9 7042     4.789600e+02 2.914900e+02
-0 7043     8.189800e+02 1.395600e+02
-2 7043     7.284600e+02 2.204200e+02
-3 7043     5.776000e+02 -8.925000e+01
-7 7043     6.441300e+02 3.552000e+02
-0 7044     7.545800e+02 1.388100e+02
-2 7044     6.660300e+02 1.918700e+02
-3 7044     5.196400e+02 -1.187900e+02
-7 7044     5.830300e+02 3.428200e+02
-9 7044     4.270500e+02 2.657900e+02
-10 7044     7.754399e+02 3.837200e+02
-12 7044     6.805200e+02 3.578400e+02
-0 7045     -7.247000e+02 1.383000e+02
-5 7045     -3.647800e+02 -5.338199e+02
-0 7046     7.384100e+02 1.371000e+02
-2 7046     6.502600e+02 1.825600e+02
-7 7046     5.679301e+02 3.381100e+02
-10 7046     7.564100e+02 3.795600e+02
-12 7046     6.624700e+02 3.504600e+02
-0 7047     7.384100e+02 1.371000e+02
-2 7047     6.502600e+02 1.825600e+02
-7 7047     5.679301e+02 3.381100e+02
-10 7047     7.564100e+02 3.795600e+02
-12 7047     6.624700e+02 3.504600e+02
-0 7048     5.199399e+02 1.366400e+02
-7 7048     3.527200e+02 2.961000e+02
-8 7048     3.984100e+02 3.567999e+01
-13 7048     7.229100e+02 -8.846002e+01
-15 7048     6.791600e+02 3.973500e+02
-0 7049     8.210400e+02 1.355100e+02
-2 7049     7.317500e+02 2.176200e+02
-3 7049     5.807200e+02 -9.165997e+01
-7 7049     6.465601e+02 3.514300e+02
-9 7049     4.814700e+02 2.893900e+02
-0 7050     7.616801e+02 1.344200e+02
-2 7050     6.740300e+02 1.907200e+02
-3 7050     5.281500e+02 -1.195900e+02
-9 7050     4.346000e+02 2.647900e+02
-10 7050     7.837600e+02 3.795400e+02
-12 7050     6.897100e+02 3.555900e+02
-0 7051     -8.252002e+01 1.342100e+02
-7 7051     -2.168000e+02 2.148400e+02
-15 7051     -1.577700e+02 3.079700e+02
-0 7052     6.770300e+02 1.332100e+02
-3 7052     4.468400e+02 -1.607100e+02
-6 7052     5.130400e+02 3.135600e+02
-7 7052     5.087200e+02 3.230200e+02
-8 7052     5.427900e+02 9.323001e+01
-9 7052     3.624399e+02 2.289400e+02
-10 7052     6.837900e+02 3.688800e+02
-12 7052     5.942200e+02 3.240000e+02
-0 7053     8.115500e+02 1.327900e+02
-2 7053     7.236600e+02 2.115900e+02
-3 7053     5.734900e+02 -9.804999e+01
-7 7053     6.380300e+02 3.472500e+02
-9 7053     4.751600e+02 2.837200e+02
-0 7054     8.211700e+02 1.307400e+02
-7 7054     6.474000e+02 3.468200e+02
-0 7055     6.048500e+02 1.290800e+02
-3 7055     3.741400e+02 -2.004800e+02
-7 7055     4.384200e+02 3.054400e+02
-9 7055     2.991300e+02 1.932100e+02
-15 7055     7.987500e+02 4.009200e+02
-0 7056     8.100699e+02 1.286500e+02
-2 7056     7.233800e+02 2.072800e+02
-3 7056     5.733500e+02 -1.023200e+02
-7 7056     6.371600e+02 3.429000e+02
-9 7056     4.749301e+02 2.796400e+02
-0 7057     7.424200e+02 1.278200e+02
-8 7057     6.004100e+02 1.115100e+02
-9 7057     4.200601e+02 2.518100e+02
-10 7057     7.615699e+02 3.704500e+02
-12 7057     6.698300e+02 3.415700e+02
-0 7058     7.424200e+02 1.278200e+02
-7 7058     5.730500e+02 3.297700e+02
-9 7058     4.200601e+02 2.518100e+02
-12 7058     6.698300e+02 3.415700e+02
-0 7059     7.597700e+02 1.258200e+02
-7 7059     5.896899e+02 3.292500e+02
-0 7060     7.317100e+02 1.251900e+02
-3 7060     5.017300e+02 -1.409300e+02
-6 7060     5.789301e+02 3.242500e+02
-7 7060     5.624900e+02 3.260400e+02
-8 7060     5.915300e+02 1.056200e+02
-9 7060     4.109900e+02 2.456700e+02
-12 7060     6.579301e+02 3.347600e+02
-0 7061     7.317100e+02 1.251900e+02
-2 7061     6.469600e+02 1.681300e+02
-3 7061     5.017300e+02 -1.409300e+02
-6 7061     5.789301e+02 3.242500e+02
-7 7061     5.624900e+02 3.260400e+02
-8 7061     5.915300e+02 1.056200e+02
-9 7061     4.109900e+02 2.456700e+02
-10 7061     7.497700e+02 3.646800e+02
-12 7061     6.579301e+02 3.347600e+02
-0 7062     -2.578000e+02 1.237400e+02
-13 7062     2.403998e+01 -1.643600e+02
-0 7063     7.808800e+02 1.239800e+02
-2 7063     6.961200e+02 1.894100e+02
-3 7063     5.485300e+02 -1.198500e+02
-7 7063     6.100000e+02 3.333800e+02
-9 7063     4.524200e+02 2.647300e+02
-10 7063     8.075900e+02 3.691200e+02
-12 7063     7.138199e+02 3.514400e+02
-0 7064     8.030800e+02 1.237100e+02
-2 7064     7.189399e+02 1.995300e+02
-7 7064     6.314399e+02 3.371900e+02
-9 7064     4.710800e+02 2.745500e+02
-0 7065     7.453500e+02 1.219400e+02
-2 7065     6.614399e+02 1.713600e+02
-10 7065     7.654301e+02 3.630900e+02
-12 7065     6.744500e+02 3.364600e+02
-0 7066     -1.116700e+02 1.216600e+02
-5 7066     4.227800e+02 -5.485601e+02
-0 7067     7.977200e+02 1.209700e+02
-7 7067     6.265300e+02 3.341600e+02
-0 7068     6.366100e+02 1.199500e+02
-2 7068     5.484900e+02 1.177400e+02
-3 7068     4.102800e+02 -1.930700e+02
-6 7068     4.681000e+02 2.825800e+02
-8 7068     5.094700e+02 6.645001e+01
-9 7068     3.298900e+02 1.994700e+02
-15 7068     8.446400e+02 3.920500e+02
-0 7069     7.886801e+02 1.185300e+02
-3 7069     5.576899e+02 -1.209100e+02
-7 7069     6.183000e+02 3.296400e+02
-10 7069     8.175500e+02 3.635500e+02
-0 7070     7.886801e+02 1.185300e+02
-2 7070     7.054100e+02 1.880400e+02
-3 7070     5.576899e+02 -1.209100e+02
-7 7070     6.183000e+02 3.296400e+02
-9 7070     4.603500e+02 2.636700e+02
-12 7070     7.242100e+02 3.486800e+02
-0 7071     7.967600e+02 1.179200e+02
-7 7071     6.264600e+02 3.311300e+02
-0 7072     7.601300e+02 1.171100e+02
-2 7072     6.773000e+02 1.734400e+02
-3 7072     5.316899e+02 -1.356200e+02
-7 7072     5.912800e+02 3.229800e+02
-9 7072     4.371300e+02 2.505800e+02
-10 7072     7.832500e+02 3.588500e+02
-12 7072     6.922100e+02 3.365800e+02
-0 7073     7.601300e+02 1.171100e+02
-2 7073     6.773000e+02 1.734400e+02
-7 7073     5.912800e+02 3.229800e+02
-9 7073     4.371300e+02 2.505800e+02
-10 7073     7.832500e+02 3.588500e+02
-12 7073     6.922100e+02 3.365800e+02
-0 7074     8.200400e+02 1.171600e+02
-2 7074     7.362300e+02 2.004300e+02
-3 7074     5.857300e+02 -1.081300e+02
-7 7074     6.479900e+02 3.338800e+02
-0 7075     8.200400e+02 1.171600e+02
-2 7075     7.362300e+02 2.004300e+02
-3 7075     5.857300e+02 -1.081300e+02
-7 7075     6.479900e+02 3.338800e+02
-0 7076     -4.760800e+02 1.148800e+02
-7 7076     -6.428300e+02 1.153400e+02
-0 7077     -1.098400e+02 1.142000e+02
-5 7077     4.272100e+02 -5.560900e+02
-6 7077     -3.050100e+02 7.154999e+01
-7 7077     -2.391700e+02 1.921500e+02
-10 7077     -2.337800e+02 2.637800e+02
-13 7077     2.124399e+02 -1.471700e+02
-15 7077     -1.923500e+02 2.770900e+02
-0 7078     6.398300e+02 1.141100e+02
-2 7078     5.538199e+02 1.139400e+02
-3 7078     4.154399e+02 -1.971500e+02
-6 7078     4.736000e+02 2.782100e+02
-7 7078     4.751200e+02 2.974500e+02
-9 7078     3.346000e+02 1.962200e+02
-10 7078     6.408500e+02 3.418300e+02
-12 7078     5.555000e+02 2.882600e+02
-13 7078     8.488000e+02 -9.160999e+01
-15 7078     8.501200e+02 3.839400e+02
-0 7079     4.366100e+02 1.130500e+02
-13 7079     6.354100e+02 -1.221600e+02
-0 7080     6.436200e+02 1.126400e+02
-2 7080     5.582300e+02 1.137300e+02
-3 7080     4.201700e+02 -1.970600e+02
-6 7080     4.785601e+02 2.779600e+02
-7 7080     4.790000e+02 2.967500e+02
-8 7080     5.178300e+02 6.384000e+01
-9 7080     3.382800e+02 1.967000e+02
-10 7080     6.453400e+02 3.407100e+02
-12 7080     5.605100e+02 2.877200e+02
-13 7080     8.527900e+02 -9.264001e+01
-15 7080     8.554600e+02 3.827800e+02
-0 7081     8.715699e+02 1.118100e+02
-2 7081     7.862000e+02 2.174000e+02
-7 7081     6.966100e+02 3.381000e+02
-0 7082     7.497700e+02 1.103000e+02
-2 7082     6.692000e+02 1.623000e+02
-3 7082     5.245699e+02 -1.464300e+02
-7 7082     5.826100e+02 3.145600e+02
-9 7082     4.311200e+02 2.409600e+02
-10 7082     7.715200e+02 3.496000e+02
-12 7082     6.824100e+02 3.255200e+02
-0 7083     -2.826600e+02 1.094700e+02
-7 7083     -4.382900e+02 1.417800e+02
-10 7083     -4.369900e+02 2.413900e+02
-0 7084     6.413900e+02 1.098900e+02
-7 7084     4.774100e+02 2.937200e+02
-9 7084     3.370800e+02 1.937900e+02
-13 7084     8.507100e+02 -9.478998e+01
-15 7084     8.530400e+02 3.783000e+02
-0 7085     1.016998e+01 1.088900e+02
-2 7085     9.728003e+01 1.159800e+02
-4 7085     -2.011000e+02 -4.176500e+02
-5 7085     6.259700e+02 -5.479100e+02
-6 7085     -8.019000e+01 1.372900e+02
-7 7085     -9.783002e+01 2.203900e+02
-8 7085     1.149000e+02 5.172000e+01
-10 7085     -9.319000e+01 2.689500e+02
-12 7085     -5.396997e+01 1.914800e+02
-15 7085     -3.454999e+01 2.872100e+02
-0 7086     5.865000e+02 1.091000e+02
-9 7086     2.867400e+02 1.671300e+02
-0 7087     8.156300e+02 1.084200e+02
-7 7087     6.448800e+02 3.248700e+02
-9 7087     4.842400e+02 2.670900e+02
-0 7088     8.000200e+02 1.066500e+02
-7 7088     6.306899e+02 3.205900e+02
-9 7088     4.725200e+02 2.588600e+02
-12 7088     7.398600e+02 3.403100e+02
-0 7089     6.458101e+02 1.045400e+02
-3 7089     4.245300e+02 -2.035300e+02
-8 7089     5.211801e+02 5.762000e+01
-9 7089     3.419399e+02 1.906200e+02
-15 7089     8.591100e+02 3.713100e+02
-0 7090     8.154399e+02 1.038400e+02
-7 7090     6.452800e+02 3.205300e+02
-9 7090     4.854200e+02 2.628700e+02
-0 7091     8.154399e+02 1.038400e+02
-2 7091     7.358300e+02 1.858800e+02
-7 7091     6.452800e+02 3.205300e+02
-0 7092     7.608002e+01 1.025700e+02
-2 7092     1.802300e+02 1.338100e+02
-6 7092     6.840027e+00 1.538000e+02
-8 7092     1.819700e+02 6.500000e+01
-9 7092     3.564001e+01 2.029300e+02
-10 7092     -1.525000e+01 2.684600e+02
-12 7092     3.190002e+01 2.066200e+02
-15 7092     5.646002e+01 2.875800e+02
-0 7093     8.622000e+02 1.027000e+02
-7 7093     6.890800e+02 3.280100e+02
-0 7094     6.505800e+02 1.019700e+02
-6 7094     4.896000e+02 2.687500e+02
-7 7094     4.872100e+02 2.877400e+02
-9 7094     3.470800e+02 1.910300e+02
-10 7094     6.541300e+02 3.289300e+02
-12 7094     5.708800e+02 2.788000e+02
-0 7095     7.696600e+02 9.989999e+01
-2 7095     6.920100e+02 1.614500e+02
-3 7095     5.465300e+02 -1.464300e+02
-7 7095     6.025699e+02 3.082200e+02
-9 7095     4.500900e+02 2.413400e+02
-10 7095     7.956300e+02 3.394300e+02
-0 7096     6.447400e+02 9.779001e+01
-2 7096     5.635100e+02 9.959998e+01
-6 7096     4.837800e+02 2.619600e+02
-7 7096     4.821899e+02 2.824900e+02
-9 7096     3.430699e+02 1.850200e+02
-12 7096     5.654301e+02 2.718900e+02
-13 7096     8.556801e+02 -1.054800e+02
-15 7096     8.587100e+02 3.621600e+02
-0 7097     7.967200e+02 9.589999e+01
-2 7097     7.193900e+02 1.697400e+02
-7 7097     6.292200e+02 3.092200e+02
-9 7097     4.725601e+02 2.493700e+02
-12 7097     7.385900e+02 3.268000e+02
-0 7098     5.569800e+02 9.432001e+01
-6 7098     3.762500e+02 2.233200e+02
-8 7098     4.418500e+02 1.442001e+01
-0 7099     -8.246002e+01 9.414999e+01
-6 7099     -2.387300e+02 6.744000e+01
-7 7099     -2.021200e+02 1.806300e+02
-10 7099     -1.993300e+02 2.425400e+02
-12 7099     -1.914400e+02 1.202200e+02
-13 7099     2.516600e+02 -1.586300e+02
-15 7099     -1.544200e+02 2.535900e+02
-0 7100     7.940300e+02 9.379999e+01
-2 7100     7.189200e+02 1.665200e+02
-3 7100     5.707400e+02 -1.403400e+02
-7 7100     6.265500e+02 3.069700e+02
-9 7100     4.710900e+02 2.463400e+02
-10 7100     8.253000e+02 3.349900e+02
-0 7101     -4.471300e+02 9.244000e+01
-7 7101     -6.074500e+02 9.738000e+01
-0 7102     5.200100e+02 8.891000e+01
-6 7102     3.308100e+02 2.022700e+02
-7 7102     3.594500e+02 2.494100e+02
-10 7102     5.019700e+02 2.998600e+02
-12 7102     4.205300e+02 2.127300e+02
-13 7102     7.287000e+02 -1.310100e+02
-15 7102     6.845601e+02 3.305000e+02
-0 7103     8.478000e+02 8.929001e+01
-2 7103     7.712300e+02 1.864800e+02
-3 7103     6.194700e+02 -1.196700e+02
-7 7103     6.775800e+02 3.126600e+02
-9 7103     5.144800e+02 2.649300e+02
-12 7103     7.968000e+02 3.395600e+02
-0 7104     -8.502002e+01 8.864001e+01
-7 7104     -2.031900e+02 1.751400e+02
-10 7104     -2.016800e+02 2.359700e+02
-15 7104     -1.572000e+02 2.456700e+02
-0 7105     7.247200e+02 8.807999e+01
-3 7105     5.080800e+02 -1.787300e+02
-6 7105     5.805601e+02 2.797700e+02
-7 7105     5.613700e+02 2.883000e+02
-8 7105     5.947000e+02 7.107999e+01
-9 7105     4.154700e+02 2.121500e+02
-12 7105     6.597500e+02 2.889300e+02
-0 7106     7.483300e+02 8.741000e+01
-2 7106     6.744000e+02 1.400400e+02
-7 7106     5.839399e+02 2.925100e+02
-0 7107     7.884200e+02 8.364001e+01
-2 7107     7.153300e+02 1.548200e+02
-3 7107     5.690100e+02 -1.518900e+02
-7 7107     6.225601e+02 2.962700e+02
-9 7107     4.691400e+02 2.361400e+02
-10 7107     8.192000e+02 3.221100e+02
-12 7107     7.323800e+02 3.111000e+02
-0 7108     7.884200e+02 8.364001e+01
-2 7108     7.153300e+02 1.548200e+02
-12 7108     7.323800e+02 3.111000e+02
-0 7109     2.195000e+02 8.257999e+01
-7 7109     1.156900e+02 2.285500e+02
-0 7110     5.286300e+02 7.982999e+01
-6 7110     3.437000e+02 1.955800e+02
-7 7110     3.691500e+02 2.424000e+02
-0 7111     6.483900e+02 7.867999e+01
-2 7111     5.724900e+02 8.296997e+01
-7 7111     4.881600e+02 2.652900e+02
-0 7112     7.247200e+02 7.784998e+01
-7 7112     5.623101e+02 2.786800e+02
-8 7112     5.962100e+02 6.467999e+01
-9 7112     4.181000e+02 2.039600e+02
-0 7113     8.428900e+02 7.478003e+01
-3 7113     6.211801e+02 -1.339200e+02
-7 7113     6.752600e+02 2.978400e+02
-9 7113     5.148500e+02 2.515900e+02
-0 7114     6.899399e+02 7.363000e+01
-2 7114     6.184301e+02 9.810999e+01
-3 7114     4.793199e+02 -2.097900e+02
-6 7114     5.441801e+02 2.526600e+02
-7 7114     5.296600e+02 2.680800e+02
-8 7114     5.674900e+02 4.850000e+01
-9 7114     3.894100e+02 1.854000e+02
-10 7114     7.028900e+02 2.999400e+02
-12 7114     6.238500e+02 2.627200e+02
-0 7115     7.133600e+02 7.344000e+01
-2 7115     6.429100e+02 1.099300e+02
-3 7115     5.021700e+02 -1.980700e+02
-6 7115     5.718199e+02 2.616900e+02
-7 7115     5.522000e+02 2.724000e+02
-8 7115     5.878300e+02 5.707001e+01
-9 7115     4.097500e+02 1.957400e+02
-10 7115     7.308400e+02 3.022000e+02
-12 7115     6.509700e+02 2.717400e+02
-0 7116     8.800500e+02 7.269000e+01
-7 7116     7.094600e+02 3.027000e+02
-0 7117     -1.351500e+02 7.251001e+01
-7 7117     -2.536000e+02 1.490800e+02
-0 7118     1.758500e+02 7.234998e+01
-6 7118     1.280900e+02 1.527400e+02
-10 7118     1.027300e+02 2.432100e+02
-12 7118     1.556800e+02 2.019500e+02
-0 7119     7.489301e+02 7.202002e+01
-2 7119     6.793900e+02 1.252900e+02
-3 7119     5.364900e+02 -1.815100e+02
-7 7119     5.865200e+02 2.779300e+02
-10 7119     7.732500e+02 3.044500e+02
-0 7120     7.489301e+02 7.202002e+01
-2 7120     6.793900e+02 1.252900e+02
-3 7120     5.364900e+02 -1.815100e+02
-7 7120     5.865200e+02 2.779300e+02
-9 7120     4.401700e+02 2.101300e+02
-10 7120     7.732500e+02 3.044500e+02
-12 7120     6.914000e+02 2.835000e+02
-0 7121     -6.266998e+01 7.023999e+01
-7 7121     -1.680800e+02 1.672200e+02
-13 7121     2.943000e+02 -1.713800e+02
-0 7122     7.850601e+02 7.064001e+01
-7 7122     6.212100e+02 2.834200e+02
-10 7122     8.157800e+02 3.070200e+02
-0 7123     8.781899e+02 6.795001e+01
-2 7123     8.057200e+02 1.798500e+02
-7 7123     7.082000e+02 2.977900e+02
-9 7123     5.426100e+02 2.595400e+02
-0 7124     1.023800e+02 6.703003e+01
-2 7124     2.282700e+02 1.142800e+02
-6 7124     5.541998e+01 1.259900e+02
-9 7124     7.637000e+01 1.887000e+02
-15 7124     9.520001e+01 2.428500e+02
-0 7125     7.079500e+02 6.678003e+01
-2 7125     6.383600e+02 9.846997e+01
-6 7125     5.666600e+02 2.505300e+02
-7 7125     5.477000e+02 2.647900e+02
-8 7125     5.843600e+02 4.931000e+01
-9 7125     4.062300e+02 1.876400e+02
-10 7125     7.242700e+02 2.934100e+02
-12 7125     6.457000e+02 2.605500e+02
-0 7126     1.211100e+02 6.653003e+01
-13 7126     4.706899e+02 -1.547800e+02
-15 7126     1.209400e+02 2.444100e+02
-0 7127     1.723600e+02 6.462000e+01
-7 7127     7.552002e+01 2.051800e+02
-10 7127     1.002500e+02 2.339700e+02
-15 7127     1.916100e+02 2.488400e+02
-0 7128     6.708300e+02 6.296002e+01
-2 7128     6.008600e+02 7.788000e+01
-3 7128     4.633700e+02 -2.300600e+02
-6 7128     5.241600e+02 2.335600e+02
-7 7128     5.123500e+02 2.540600e+02
-8 7128     5.529301e+02 3.253000e+01
-9 7128     3.752800e+02 1.677800e+02
-10 7128     6.811801e+02 2.852500e+02
-12 7128     6.043300e+02 2.434200e+02
-0 7129     -2.869900e+02 6.264001e+01
-4 7129     -2.111600e+02 -1.712600e+02
-0 7130     -4.819500e+02 6.194000e+01
-7 7130     -6.375000e+02 6.097998e+01
-0 7131     7.948400e+02 6.147998e+01
-2 7131     7.284500e+02 1.369700e+02
-3 7131     5.827400e+02 -1.683100e+02
-7 7131     6.317200e+02 2.765500e+02
-9 7131     4.806000e+02 2.218200e+02
-12 7131     7.456400e+02 2.899700e+02
-0 7132     -3.027002e+01 5.992999e+01
-3 7132     -1.408002e+01 -2.550000e+02
-5 7132     5.871300e+02 -6.050900e+02
-6 7132     -1.080000e+02 6.954999e+01
-7 7132     -1.296700e+02 1.650300e+02
-8 7132     9.334003e+01 4.980011e+00
-13 7132     3.316100e+02 -1.754100e+02
-15 7132     -8.279999e+01 2.144300e+02
-0 7133     1.246500e+02 5.877002e+01
-7 7133     3.000000e+01 1.923900e+02
-15 7133     1.263000e+02 2.344100e+02
-0 7134     1.246500e+02 5.877002e+01
-7 7134     3.000000e+01 1.923900e+02
-8 7134     2.416500e+02 4.570001e+01
-10 7134     4.491998e+01 2.224300e+02
-15 7134     1.263000e+02 2.344100e+02
-0 7135     4.642999e+01 5.582001e+01
-2 7135     1.741300e+02 8.998999e+01
-3 7135     8.032001e+01 -2.236500e+02
-6 7135     -3.770020e+00 9.534998e+01
-7 7135     -4.801001e+01 1.768100e+02
-8 7135     1.742800e+02 2.710001e+01
-10 7135     -4.567999e+01 2.106700e+02
-0 7136     2.615300e+02 5.514001e+01
-7 7136     1.594399e+02 2.075400e+02
-10 7136     2.041000e+02 2.325600e+02
-15 7136     3.160699e+02 2.486800e+02
-0 7137     5.006100e+02 5.495001e+01
-7 7137     3.442600e+02 2.125900e+02
-0 7138     -3.723700e+02 5.152002e+01
-4 7138     -2.083500e+02 -1.197700e+02
-0 7139     7.619200e+02 5.117999e+01
-3 7139     5.564100e+02 -1.942300e+02
-7 7139     6.019100e+02 2.603600e+02
-10 7139     7.901500e+02 2.812800e+02
-0 7140     2.018300e+02 4.887000e+01
-8 7140     3.032000e+02 4.617001e+01
-10 7140     1.353900e+02 2.184500e+02
-13 7140     5.403800e+02 -1.640200e+02
-15 7140     2.330800e+02 2.314100e+02
-0 7141     5.310100e+02 4.860999e+01
-7 7141     3.759800e+02 2.128400e+02
-10 7141     5.183300e+02 2.550100e+02
-13 7141     7.443500e+02 -1.651200e+02
-15 7141     7.051700e+02 2.761200e+02
-0 7142     1.845400e+02 4.728003e+01
-13 7142     5.270900e+02 -1.662300e+02
-15 7142     2.101400e+02 2.270600e+02
-0 7143     4.999399e+02 4.372998e+01
-7 7143     3.444900e+02 2.017700e+02
-10 7143     4.824800e+02 2.450600e+02
-13 7143     7.119700e+02 -1.745100e+02
-15 7143     6.620900e+02 2.651700e+02
-0 7144     6.638400e+02 4.259003e+01
-2 7144     5.994399e+02 5.376001e+01
-3 7144     4.630800e+02 -2.535000e+02
-6 7144     5.213400e+02 2.086800e+02
-7 7144     5.081600e+02 2.332000e+02
-8 7144     5.512600e+02 1.276001e+01
-9 7144     3.745300e+02 1.476900e+02
-10 7144     6.747900e+02 2.609600e+02
-0 7145     7.192800e+02 4.252002e+01
-7 7145     5.621100e+02 2.441500e+02
-0 7146     3.874100e+02 4.192999e+01
-7 7146     2.636600e+02 1.997700e+02
-15 7146     4.980300e+02 2.471300e+02
-0 7147     7.345500e+02 4.197998e+01
-10 7147     7.547800e+02 2.691200e+02
-12 7147     6.830800e+02 2.452100e+02
-0 7148     6.956000e+02 4.108002e+01
-3 7148     4.959700e+02 -2.377400e+02
-6 7148     5.593199e+02 2.185100e+02
-7 7148     5.393500e+02 2.378100e+02
-8 7148     5.798199e+02 2.301999e+01
-10 7148     7.119399e+02 2.626700e+02
-12 7148     6.383000e+02 2.284200e+02
-0 7149     6.992800e+02 4.071997e+01
-2 7149     6.376300e+02 7.003003e+01
-3 7149     4.994800e+02 -2.360600e+02
-6 7149     5.640400e+02 2.201100e+02
-7 7149     5.430200e+02 2.382800e+02
-8 7149     5.829800e+02 2.497000e+01
-9 7149     4.063101e+02 1.623900e+02
-10 7149     7.165300e+02 2.623800e+02
-0 7150     5.068000e+02 3.960999e+01
-10 7150     4.893300e+02 2.415000e+02
-13 7150     7.177400e+02 -1.770100e+02
-15 7150     6.719200e+02 2.602800e+02
-0 7151     5.068000e+02 3.960999e+01
-7 7151     3.529900e+02 1.985700e+02
-12 7151     4.157300e+02 1.519000e+02
-15 7151     6.719200e+02 2.602800e+02
-0 7152     6.655699e+02 3.857001e+01
-2 7152     6.025601e+02 5.029999e+01
-3 7152     4.666600e+02 -2.570500e+02
-7 7152     5.104900e+02 2.291500e+02
-8 7152     5.534399e+02 1.006000e+01
-10 7152     6.767200e+02 2.562900e+02
-0 7153     7.149600e+02 3.828998e+01
-2 7153     6.547100e+02 7.646002e+01
-6 7153     5.831600e+02 2.238200e+02
-7 7153     5.584800e+02 2.390800e+02
-10 7153     7.353400e+02 2.619000e+02
-12 7153     6.617500e+02 2.335700e+02
-0 7154     -1.722700e+02 3.806000e+01
-12 7154     -2.800500e+02 3.266998e+01
-0 7155     7.039100e+02 3.825000e+01
-6 7155     5.701801e+02 2.193600e+02
-7 7155     5.476500e+02 2.369200e+02
-8 7155     5.872500e+02 2.470999e+01
-9 7155     4.114900e+02 1.624700e+02
-10 7155     7.218800e+02 2.603100e+02
-12 7155     6.487800e+02 2.293600e+02
-0 7156     8.648400e+02 3.784998e+01
-2 7156     8.020200e+02 1.463800e+02
-3 7156     6.525100e+02 -1.570100e+02
-7 7156     6.999301e+02 2.669300e+02
-9 7156     5.412800e+02 2.316200e+02
-12 7156     8.283400e+02 2.902900e+02
-0 7157     -1.907001e+01 3.750000e+01
-3 7157     1.307001e+01 -2.667600e+02
-4 7157     -2.444500e+02 -3.972900e+02
-6 7157     -7.951001e+01 5.015997e+01
-7 7157     -1.137300e+02 1.455100e+02
-13 7157     3.468700e+02 -1.926500e+02
-15 7157     -6.488000e+01 1.856800e+02
-0 7158     -4.839200e+02 3.719000e+01
-13 7158     -1.607400e+02 -2.519000e+02
-0 7159     6.911400e+02 3.522998e+01
-7 7159     5.357400e+02 2.313900e+02
-10 7159     7.078300e+02 2.549100e+02
-0 7160     7.039301e+02 3.396002e+01
-2 7160     6.448199e+02 6.538000e+01
-6 7160     5.712800e+02 2.147600e+02
-10 7160     7.228400e+02 2.545700e+02
-12 7160     6.502400e+02 2.240500e+02
-0 7161     7.094500e+02 3.420001e+01
-2 7161     6.502900e+02 6.848999e+01
-3 7161     5.119700e+02 -2.371000e+02
-6 7161     5.778700e+02 2.173600e+02
-7 7161     5.537400e+02 2.340500e+02
-9 7161     4.167100e+02 1.617900e+02
-10 7161     7.289399e+02 2.558200e+02
-0 7162     8.220400e+02 3.210999e+01
-2 7162     7.635000e+02 1.214500e+02
-3 7162     6.174200e+02 -1.815800e+02
-7 7162     6.611899e+02 2.536900e+02
-9 7162     5.100000e+02 2.100600e+02
-12 7162     7.838300e+02 2.682100e+02
-0 7163     8.778000e+02 3.131000e+01
-2 7163     8.168199e+02 1.459900e+02
-3 7163     6.654301e+02 -1.565800e+02
-7 7163     7.127900e+02 2.631300e+02
-9 7163     5.525500e+02 2.317000e+02
-0 7164     6.962200e+02 3.109998e+01
-2 7164     6.371600e+02 5.841998e+01
-3 7164     4.994900e+02 -2.472100e+02
-6 7164     5.628500e+02 2.085800e+02
-7 7164     5.411600e+02 2.284500e+02
-8 7164     5.824200e+02 1.526001e+01
-9 7164     4.063000e+02 1.526800e+02
-10 7164     7.133500e+02 2.509200e+02
-12 7164     6.419301e+02 2.176400e+02
-0 7165     7.175800e+02 3.096002e+01
-3 7165     5.205100e+02 -2.356700e+02
-7 7165     5.618000e+02 2.325100e+02
-10 7165     7.388800e+02 2.524700e+02
-12 7165     6.664800e+02 2.256100e+02
-0 7166     5.089399e+02 3.065997e+01
-7 7166     3.558101e+02 1.907700e+02
-10 7166     4.939600e+02 2.314800e+02
-13 7166     7.228101e+02 -1.848100e+02
-15 7166     6.764500e+02 2.482500e+02
-0 7167     7.450300e+02 3.064001e+01
-2 7167     6.877300e+02 8.292999e+01
-3 7167     5.471400e+02 -2.215800e+02
-7 7167     5.883900e+02 2.376300e+02
-9 7167     4.479700e+02 1.751500e+02
-10 7167     7.714800e+02 2.556500e+02
-12 7167     6.978000e+02 2.369300e+02
-0 7168     8.651700e+02 3.064001e+01
-2 7168     8.054600e+02 1.395500e+02
-7 7168     7.013300e+02 2.602500e+02
-0 7169     6.657300e+02 2.975000e+01
-2 7169     6.051899e+02 4.140997e+01
-3 7169     4.689800e+02 -2.649700e+02
-6 7169     5.269000e+02 1.949300e+02
-7 7169     5.116000e+02 2.212300e+02
-8 7169     5.557400e+02 2.690002e+00
-9 7169     3.795200e+02 1.375200e+02
-10 7169     6.777400e+02 2.459300e+02
-12 7169     6.070400e+02 2.045900e+02
-0 7170     7.120400e+02 3.004999e+01
-2 7170     6.538300e+02 6.566998e+01
-3 7170     5.151400e+02 -2.395700e+02
-6 7170     5.816500e+02 2.136200e+02
-7 7170     5.570000e+02 2.305900e+02
-8 7170     5.968900e+02 2.095001e+01
-9 7170     4.200100e+02 1.595900e+02
-0 7171     8.197400e+02 3.002002e+01
-2 7171     7.620601e+02 1.188400e+02
-3 7171     6.167300e+02 -1.847700e+02
-7 7171     6.589800e+02 2.514200e+02
-9 7171     5.092400e+02 2.074500e+02
-0 7172     8.197400e+02 3.002002e+01
-2 7172     7.620601e+02 1.188400e+02
-3 7172     6.167300e+02 -1.847700e+02
-7 7172     6.589800e+02 2.514200e+02
-9 7172     5.092400e+02 2.074500e+02
-0 7173     7.342800e+02 2.603003e+01
-2 7173     6.780000e+02 7.306000e+01
-3 7173     5.384100e+02 -2.315700e+02
-7 7173     5.789301e+02 2.307200e+02
-9 7173     4.397600e+02 1.665200e+02
-12 7173     6.865300e+02 2.274600e+02
-0 7174     7.736200e+02 2.489001e+01
-7 7174     6.163700e+02 2.377200e+02
-0 7175     -1.547500e+02 2.448999e+01
-7 7175     -2.611500e+02 9.994000e+01
-10 7175     -2.760900e+02 1.529700e+02
-15 7175     -2.434700e+02 1.477600e+02
-0 7176     6.625300e+02 2.366998e+01
-3 7176     4.682100e+02 -2.731600e+02
-7 7176     5.093199e+02 2.146500e+02
-0 7177     6.625300e+02 2.366998e+01
-2 7177     6.033000e+02 3.307001e+01
-3 7177     4.682100e+02 -2.731600e+02
-6 7177     5.246300e+02 1.865300e+02
-7 7177     5.093199e+02 2.146500e+02
-8 7177     5.538800e+02 -3.920013e+00
-9 7177     3.783600e+02 1.306300e+02
-12 7177     6.046200e+02 1.962100e+02
-0 7178     7.026000e+02 2.338000e+01
-2 7178     6.465699e+02 5.433002e+01
-3 7178     5.080900e+02 -2.511700e+02
-7 7178     5.484600e+02 2.223800e+02
-10 7178     7.217600e+02 2.427700e+02
-0 7179     8.711600e+02 2.240997e+01
-2 7179     8.130100e+02 1.348000e+02
-3 7179     6.631000e+02 -1.675000e+02
-7 7179     7.078600e+02 2.536300e+02
-9 7179     5.499301e+02 2.224100e+02
-0 7180     5.622800e+02 2.207001e+01
-6 7180     4.022900e+02 1.444200e+02
-7 7180     4.109700e+02 1.930300e+02
-10 7180     5.571400e+02 2.263100e+02
-13 7180     7.804600e+02 -1.847600e+02
-15 7180     7.519800e+02 2.435700e+02
-0 7181     -3.193400e+02 2.092999e+01
-7 7181     -4.545600e+02 4.984998e+01
-10 7181     -4.696200e+02 1.330900e+02
-13 7181     -6.169983e+00 -2.550400e+02
-15 7181     -4.584300e+02 1.203300e+02
-0 7182     4.416998e+01 2.081000e+01
-3 7182     9.628003e+01 -2.530000e+02
-8 7182     1.845500e+02 4.200134e-01
-0 7183     7.251400e+02 1.969000e+01
-7 7183     5.706500e+02 2.233200e+02
-10 7183     7.484100e+02 2.407100e+02
-0 7184     -3.438600e+02 1.891998e+01
-13 7184     -2.784998e+01 -2.583300e+02
-15 7184     -4.921700e+02 1.141500e+02
-0 7185     7.146801e+02 1.921002e+01
-7 7185     5.606400e+02 2.206200e+02
-10 7185     7.365699e+02 2.386500e+02
-0 7186     -3.667300e+02 1.771002e+01
-7 7186     -5.030500e+02 3.783002e+01
-13 7186     -4.833002e+01 -2.609900e+02
-15 7186     -5.234300e+02 1.091900e+02
-0 7187     7.330699e+02 1.790997e+01
-3 7187     5.403000e+02 -2.401000e+02
-9 7187     4.415699e+02 1.591600e+02
-10 7187     7.576400e+02 2.390400e+02
-0 7188     7.330699e+02 1.790997e+01
-3 7188     5.403000e+02 -2.401000e+02
-7 7188     5.784301e+02 2.230500e+02
-9 7188     4.415699e+02 1.591600e+02
-10 7188     7.576400e+02 2.390400e+02
-0 7189     -3.479600e+02 1.770001e+01
-7 7189     -4.838700e+02 4.140002e+01
-15 7189     -4.976500e+02 1.118300e+02
-0 7190     1.055500e+02 1.739001e+01
-4 7190     -2.740100e+02 -4.977800e+02
-8 7190     2.403300e+02 1.135001e+01
-12 7190     9.825000e+01 1.254300e+02
-13 7190     4.663900e+02 -1.970300e+02
-0 7191     7.961300e+02 1.731000e+01
-7 7191     6.385900e+02 2.344300e+02
-0 7192     6.432400e+02 1.384998e+01
-2 7192     5.851899e+02 1.357001e+01
-9 7192     3.636899e+02 1.132200e+02
-12 7192     5.847800e+02 1.787900e+02
-0 7193     -3.480100e+02 1.378003e+01
-2 7193     -4.665400e+02 -2.479500e+02
-7 7193     -4.824300e+02 3.803003e+01
-13 7193     -3.003003e+01 -2.629200e+02
-0 7194     -3.480100e+02 1.378003e+01
-4 7194     -2.331100e+02 -1.341400e+02
-7 7194     -4.824300e+02 3.803003e+01
-13 7194     -3.003003e+01 -2.629200e+02
-15 7194     -4.967900e+02 1.069600e+02
-0 7195     5.305000e+02 1.357001e+01
-7 7195     3.798300e+02 1.781200e+02
-10 7195     5.204200e+02 2.129200e+02
-13 7195     7.475200e+02 -1.978500e+02
-0 7196     6.795500e+02 1.175000e+01
-8 7196     5.723000e+02 -7.679993e+00
-0 7197     7.345699e+02 9.940002e+00
-2 7197     6.834600e+02 5.754999e+01
-7 7197     5.810900e+02 2.156500e+02
-12 7197     6.917300e+02 2.107800e+02
-0 7198     8.477200e+02 9.780029e+00
-9 7198     5.360601e+02 2.034900e+02
-0 7199     -8.258002e+01 9.250000e+00
-3 7199     -6.951001e+01 -3.371800e+02
-7 7199     -1.780400e+02 1.025400e+02
-10 7199     -1.902600e+02 1.434600e+02
-13 7199     2.825500e+02 -2.260200e+02
-15 7199     -1.454200e+02 1.377200e+02
-0 7200     6.830601e+02 7.619995e+00
-3 7200     4.941000e+02 -2.770600e+02
-6 7200     5.542300e+02 1.784100e+02
-8 7200     5.764200e+02 -8.320007e+00
-10 7200     7.001899e+02 2.225200e+02
-0 7201     -8.912000e+01 6.669983e+00
-7 7201     -1.853400e+02 9.759000e+01
-0 7202     -3.164500e+02 5.849976e+00
-7 7202     -4.476100e+02 3.545001e+01
-13 7202     7.800293e-01 -2.679600e+02
-15 7202     -4.529000e+02 1.000300e+02
-0 7203     -3.237900e+02 3.869995e+00
-7 7203     -4.545900e+02 3.275000e+01
-8 7203     -2.960300e+02 -2.230100e+02
-9 7203     -4.748400e+02 -1.534400e+02
-13 7203     -5.929993e+00 -2.700900e+02
-0 7204     -3.537000e+02 3.359985e+00
-8 7204     -3.252900e+02 -2.286800e+02
-15 7204     -5.032200e+02 9.178000e+01
-0 7205     8.570200e+02 3.580017e+00
-2 7205     8.064100e+02 1.108900e+02
-3 7205     6.584600e+02 -1.905000e+02
-0 7206     8.570200e+02 3.580017e+00
-2 7206     8.064100e+02 1.108900e+02
-3 7206     6.584600e+02 -1.905000e+02
-7 7206     6.971500e+02 2.334500e+02
-9 7206     5.449700e+02 2.024600e+02
-12 7206     8.299800e+02 2.507500e+02
-0 7207     5.974800e+02 2.419983e+00
-7 7207     4.492700e+02 1.808400e+02
-8 7207     5.003700e+02 -4.757999e+01
-10 7207     6.001100e+02 2.071400e+02
-12 7207     5.351899e+02 1.470600e+02
-13 7207     8.197000e+02 -1.978300e+02
-15 7207     8.043600e+02 2.216900e+02
-0 7208     8.529000e+02 2.760010e+00
-2 7208     8.024399e+02 1.084400e+02
-3 7208     6.550000e+02 -1.928200e+02
-7 7208     6.935699e+02 2.317100e+02
-9 7208     5.418600e+02 2.001000e+02
-12 7208     8.250000e+02 2.484500e+02
-0 7209     8.147800e+02 1.539978e+00
-2 7209     7.666100e+02 8.928003e+01
-7 7209     6.583199e+02 2.235100e+02
-0 7210     -9.681000e+01 1.229980e+00
-7 7210     -1.919700e+02 9.148001e+01
-0 7211     6.829301e+02 1.239990e+00
-2 7211     6.315601e+02 2.181000e+01
-6 7211     5.554500e+02 1.700300e+02
-7 7211     5.324100e+02 1.971100e+02
-9 7211     4.028800e+02 1.214300e+02
-10 7211     6.996500e+02 2.155200e+02
-0 7212     6.829301e+02 1.239990e+00
-7 7212     5.324100e+02 1.971100e+02
-12 7212     6.342200e+02 1.797500e+02
-0 7213     8.706801e+02 -8.200073e-01
-2 7213     8.190300e+02 1.135200e+02
-7 7213     7.100900e+02 2.321000e+02
-9 7213     5.557400e+02 2.047700e+02
-0 7214     1.674000e+02 -1.750000e+00
-3 7214     2.205601e+02 -2.431300e+02
-6 7214     1.520100e+02 7.253998e+01
-7 7214     8.341998e+01 1.396200e+02
-8 7214     2.952200e+02 6.459991e+00
-10 7214     1.007200e+02 1.565400e+02
-13 7214     5.218600e+02 -2.086500e+02
-15 7214     1.925100e+02 1.576700e+02
-0 7215     5.673101e+02 -2.020020e+00
-6 7215     4.152700e+02 1.176100e+02
-7 7215     4.190000e+02 1.703900e+02
-0 7216     3.600500e+02 -3.929993e+00
-12 7216     3.490900e+02 1.348600e+02
-0 7217     7.124200e+02 -4.070007e+00
-3 7217     5.274200e+02 -2.719700e+02
-7 7217     5.616400e+02 1.974600e+02
-10 7217     7.347300e+02 2.134500e+02
-0 7218     -4.505200e+02 -5.200012e+00
-2 7218     -5.892300e+02 -2.918400e+02
-0 7219     6.763300e+02 -5.469971e+00
-7 7219     5.267200e+02 1.892400e+02
-9 7219     3.988199e+02 1.130400e+02
-12 7219     6.285100e+02 1.698400e+02
-0 7220     1.000600e+02 -7.309998e+00
-6 7220     8.419000e+01 4.506000e+01
-8 7220     2.436000e+02 -9.440002e+00
-10 7220     2.502002e+01 1.433800e+02
-15 7220     1.007800e+02 1.408500e+02
-0 7221     6.882100e+02 -8.750000e+00
-2 7221     6.403700e+02 1.354999e+01
-3 7221     5.053199e+02 -2.906200e+02
-8 7221     5.843300e+02 -2.042001e+01
-10 7221     7.067700e+02 2.032700e+02
-0 7222     -1.788000e+02 -9.059998e+00
-2 7222     -1.051800e+02 -8.681000e+01
-3 7222     -1.868100e+02 -4.021500e+02
-6 7222     -2.898900e+02 -7.687000e+01
-10 7222     -3.003800e+02 1.118200e+02
-12 7222     -2.627100e+02 -1.548999e+01
-15 7222     -2.721000e+02 1.000700e+02
-0 7223     -3.808500e+02 -9.919983e+00
-7 7223     -5.119700e+02 8.719971e+00
-13 7223     -5.494000e+01 -2.858900e+02
-15 7223     -5.386300e+02 7.042999e+01
-0 7224     -1.139900e+02 -1.052002e+01
-6 7224     -1.934900e+02 -4.728998e+01
-7 7224     -2.062000e+02 7.745001e+01
-10 7224     -2.245800e+02 1.170000e+02
-12 7224     -1.736300e+02 1.083002e+01
-15 7224     -1.854100e+02 1.067800e+02
-0 7225     6.737300e+02 -1.128998e+01
-3 7225     4.909301e+02 -3.003400e+02
-6 7225     5.483199e+02 1.517600e+02
-9 7225     3.976100e+02 1.069800e+02
-0 7226     2.790500e+02 -1.502002e+01
-12 7226     2.903900e+02 1.252100e+02
-13 7226     6.103900e+02 -2.143300e+02
-0 7227     6.789399e+02 -1.497998e+01
-2 7227     6.326200e+02 2.400024e+00
-6 7227     5.553500e+02 1.505000e+02
-8 7227     5.780699e+02 -3.023001e+01
-9 7227     4.039301e+02 1.059000e+02
-10 7227     6.965699e+02 1.954000e+02
-12 7227     6.341700e+02 1.598700e+02
-0 7228     -3.799700e+02 -1.617999e+01
-2 7228     -4.885500e+02 -2.820500e+02
-7 7228     -5.093300e+02 2.900024e+00
-8 7228     -3.436500e+02 -2.485100e+02
-13 7228     -5.197998e+01 -2.908100e+02
-15 7228     -5.368700e+02 6.181000e+01
-0 7229     -6.517999e+01 -1.690002e+01
-2 7229     5.720001e+01 -3.603998e+01
-4 7229     -2.767700e+02 -3.570500e+02
-7 7229     -1.534700e+02 8.129001e+01
-8 7229     7.723999e+01 -7.340002e+01
-12 7229     -1.080700e+02 2.244000e+01
-15 7229     -1.191400e+02 1.051400e+02
-0 7230     -6.517999e+01 -1.690002e+01
-7 7230     -1.534700e+02 8.129001e+01
-10 7230     -1.668500e+02 1.143600e+02
-15 7230     -1.191400e+02 1.051400e+02
-0 7231     8.554100e+02 -1.792999e+01
-2 7231     8.114700e+02 8.984003e+01
-7 7231     6.992500e+02 2.123900e+02
-9 7231     5.495300e+02 1.850400e+02
-0 7232     6.441998e+01 -2.206000e+01
-3 7232     1.358900e+02 -2.858400e+02
-4 7232     -2.965100e+02 -4.640500e+02
-6 7232     4.997998e+01 1.635999e+01
-8 7232     2.157400e+02 -3.004001e+01
-15 7232     5.494000e+01 1.159800e+02
-0 7233     6.183400e+02 -2.188000e+01
-12 7233     5.636200e+02 1.271300e+02
-0 7234     -9.887000e+01 -2.287000e+01
-7 7234     -1.875900e+02 6.845001e+01
-12 7234     -1.486300e+02 2.479980e+00
-0 7235     2.418700e+02 -2.603998e+01
-7 7235     1.573300e+02 1.265300e+02
-15 7235     2.986600e+02 1.340200e+02
-0 7236     7.039900e+02 -2.590002e+01
-2 7236     6.628199e+02 4.619995e+00
-3 7236     5.274399e+02 -2.982500e+02
-7 7236     5.564100e+02 1.752200e+02
-9 7236     4.287200e+02 1.091000e+02
-10 7236     7.269200e+02 1.852200e+02
-12 7236     6.659500e+02 1.578500e+02
-0 7237     1.105100e+02 -2.696002e+01
-4 7237     -3.056500e+02 -5.022000e+02
-8 7237     2.577400e+02 -2.309000e+01
-9 7237     1.228500e+02 1.210600e+02
-15 7237     1.180800e+02 1.158800e+02
-0 7238     7.152100e+02 -2.714001e+01
-2 7238     6.743800e+02 1.001001e+01
-3 7238     5.384301e+02 -2.929200e+02
-7 7238     5.672400e+02 1.763700e+02
-10 7238     7.410000e+02 1.845200e+02
-12 7238     6.790800e+02 1.610600e+02
-0 7239     7.001100e+02 -2.785999e+01
-6 7239     5.834100e+02 1.447300e+02
-0 7240     6.699500e+02 -2.937000e+01
-2 7240     6.270000e+02 -1.651001e+01
-6 7240     5.482700e+02 1.320200e+02
-8 7240     5.732400e+02 -4.528000e+01
-10 7240     6.874301e+02 1.779000e+02
-12 7240     6.275100e+02 1.418600e+02
-0 7241     6.699500e+02 -2.937000e+01
-6 7241     5.482700e+02 1.320200e+02
-8 7241     5.732400e+02 -4.528000e+01
-10 7241     6.874301e+02 1.779000e+02
-12 7241     6.275100e+02 1.418600e+02
-0 7242     7.269800e+02 -2.934998e+01
-2 7242     6.868600e+02 1.317999e+01
-3 7242     5.508500e+02 -2.886100e+02
-7 7242     5.790200e+02 1.764600e+02
-9 7242     4.486400e+02 1.171400e+02
-10 7242     7.540800e+02 1.833300e+02
-12 7242     6.925000e+02 1.628700e+02
-0 7243     8.640601e+02 -3.066998e+01
-2 7243     8.239700e+02 8.170001e+01
-3 7243     6.773101e+02 -2.174600e+02
-7 7243     7.083199e+02 2.022800e+02
-9 7243     5.597700e+02 1.785100e+02
-0 7244     8.548600e+02 -3.153998e+01
-2 7244     8.154301e+02 7.688000e+01
-7 7244     6.998199e+02 1.995800e+02
-0 7245     8.584600e+02 -3.269000e+01
-2 7245     8.191899e+02 7.751001e+01
-3 7245     6.730800e+02 -2.221400e+02
-7 7245     7.035000e+02 1.992900e+02
-9 7245     5.562300e+02 1.748600e+02
-0 7246     8.584600e+02 -3.269000e+01
-2 7246     8.191899e+02 7.751001e+01
-7 7246     7.035000e+02 1.992900e+02
-0 7247     6.562400e+02 -3.442999e+01
-6 7247     5.333500e+02 1.191100e+02
-12 7247     6.127500e+02 1.287900e+02
-0 7248     -7.694000e+01 -3.503003e+01
-7 7248     -1.617800e+02 6.092999e+01
-10 7248     -1.786700e+02 9.207001e+01
-0 7249     7.750200e+02 -3.517999e+01
-2 7249     7.394600e+02 3.316998e+01
-3 7249     5.989301e+02 -2.674900e+02
-7 7249     6.255900e+02 1.806500e+02
-9 7249     4.906700e+02 1.353100e+02
-10 7249     8.117100e+02 1.822000e+02
-12 7249     7.483900e+02 1.768400e+02
-0 7250     7.750200e+02 -3.517999e+01
-2 7250     7.394600e+02 3.316998e+01
-3 7250     5.989301e+02 -2.674900e+02
-7 7250     6.255900e+02 1.806500e+02
-9 7250     4.906700e+02 1.353100e+02
-10 7250     8.117100e+02 1.822000e+02
-0 7251     -2.575300e+02 -3.546997e+01
-7 7251     -3.767000e+02 6.080017e+00
-12 7251     -4.113600e+02 -1.257300e+02
-13 7251     6.410999e+01 -2.990700e+02
-15 7251     -3.671100e+02 5.265002e+01
-0 7252     -2.575300e+02 -3.546997e+01
-7 7252     -3.767000e+02 6.080017e+00
-15 7252     -3.671100e+02 5.265002e+01
-0 7253     6.564001e+01 -3.604999e+01
-3 7253     1.430900e+02 -2.985900e+02
-9 7253     8.825000e+01 1.013300e+02
-0 7254     4.338600e+02 -3.722998e+01
-7 7254     3.265500e+02 1.354900e+02
-0 7255     6.900200e+02 -3.947998e+01
-2 7255     6.510900e+02 -1.642999e+01
-3 7255     5.178800e+02 -3.192200e+02
-6 7255     5.750100e+02 1.283900e+02
-7 7255     5.446899e+02 1.595400e+02
-9 7255     4.202200e+02 9.110999e+01
-12 7255     6.528199e+02 1.371200e+02
-0 7256     -4.794400e+02 -3.990997e+01
-7 7256     -6.094000e+02 -3.915997e+01
-0 7257     -4.056200e+02 -4.015002e+01
-7 7257     -5.307300e+02 -2.491998e+01
-13 7257     -7.050000e+01 -3.130800e+02
-15 7257     -5.695300e+02 2.570001e+01
-0 7258     8.420400e+02 -4.071997e+01
-3 7258     6.617000e+02 -2.376400e+02
-7 7258     6.891300e+02 1.885600e+02
-0 7259     1.355500e+02 -4.151001e+01
-2 7259     3.081500e+02 2.112000e+01
-7 7259     5.895001e+01 9.609000e+01
-10 7259     6.821997e+01 1.064600e+02
-13 7259     5.001100e+02 -2.449800e+02
-15 7259     1.541100e+02 9.919000e+01
-0 7260     6.668600e+02 -4.342999e+01
-8 7260     5.733800e+02 -5.959003e+01
-0 7261     7.233600e+02 -4.421997e+01
-2 7261     6.878600e+02 -2.549988e+00
-3 7261     5.524600e+02 -3.051500e+02
-7 7261     5.775000e+02 1.619300e+02
-9 7261     4.499800e+02 1.035900e+02
-10 7261     7.512700e+02 1.660600e+02
-12 7261     6.928600e+02 1.466600e+02
-0 7262     7.622800e+02 -4.377002e+01
-2 7262     7.275800e+02 1.728003e+01
-3 7262     5.899600e+02 -2.830400e+02
-7 7262     6.146000e+02 1.697400e+02
-9 7262     4.826600e+02 1.219200e+02
-10 7262     7.974000e+02 1.706000e+02
-12 7262     7.363800e+02 1.616000e+02
-0 7263     -4.809998e+00 -4.459003e+01
-7 7263     -8.316998e+01 6.726001e+01
-15 7263     -3.495001e+01 7.571997e+01
-0 7264     -4.715600e+02 -4.560999e+01
-7 7264     -5.993900e+02 -4.248999e+01
-0 7265     -1.852800e+02 -4.571997e+01
-2 7265     -8.252002e+01 -1.124400e+02
-4 7265     -2.811800e+02 -2.675500e+02
-6 7265     -2.685400e+02 -1.160900e+02
-7 7265     -2.742400e+02 2.890002e+01
-8 7265     -3.725000e+01 -1.335000e+02
-10 7265     -3.018700e+02 6.659998e+01
-12 7265     -2.510900e+02 -5.403003e+01
-15 7265     -2.748000e+02 4.753003e+01
-0 7266     -4.770001e+01 -4.532001e+01
-13 7266     3.278500e+02 -2.674600e+02
-15 7266     -9.175000e+01 6.908002e+01
-0 7267     -3.736900e+02 -5.283002e+01
-2 7267     -4.556700e+02 -3.126700e+02
-7 7267     -4.936200e+02 -3.195001e+01
-8 7267     -3.201500e+02 -2.744800e+02
-9 7267     -4.910900e+02 -2.073600e+02
-12 7267     -5.500700e+02 -1.800600e+02
-15 7267     -5.237500e+02 1.289001e+01
-0 7268     8.700800e+02 -5.253003e+01
-7 7268     7.167400e+02 1.828000e+02
-9 7268     5.705400e+02 1.640800e+02
-0 7269     7.026400e+02 -5.391998e+01
-2 7269     6.689900e+02 -2.484998e+01
-3 7269     5.361899e+02 -3.267500e+02
-7 7269     5.587100e+02 1.479500e+02
-9 7269     4.350100e+02 8.463000e+01
-10 7269     7.275200e+02 1.523100e+02
-12 7269     6.713700e+02 1.258700e+02
-0 7270     -1.748900e+02 -5.435999e+01
-6 7270     -2.511200e+02 -1.213100e+02
-7 7270     -2.611900e+02 2.252002e+01
-15 7270     -2.619500e+02 3.942999e+01
-0 7271     -4.682600e+02 -5.490997e+01
-2 7271     -5.805200e+02 -3.413700e+02
-7 7271     -5.934400e+02 -5.134998e+01
-12 7271     -6.724800e+02 -2.116200e+02
-13 7271     -1.244900e+02 -3.303400e+02
-0 7272     -3.718700e+02 -5.873999e+01
-2 7272     -4.488400e+02 -3.164300e+02
-7 7272     -4.898900e+02 -3.689001e+01
-8 7272     -3.155400e+02 -2.785300e+02
-9 7272     -4.845800e+02 -2.109600e+02
-12 7272     -5.451300e+02 -1.853700e+02
-0 7273     -4.402100e+02 -5.906000e+01
-2 7273     -5.389200e+02 -3.362000e+02
-8 7273     -3.866700e+02 -2.934500e+02
-10 7273     -5.999500e+02 2.669000e+01
-13 7273     -9.640997e+01 -3.314100e+02
-0 7274     2.700195e-01 -5.896997e+01
-2 7274     1.658800e+02 -4.191998e+01
-15 7274     -2.616998e+01 5.709003e+01
-0 7275     -4.035999e+01 -5.938000e+01
-7 7275     -1.187300e+02 4.417999e+01
-0 7276     6.710500e+02 -5.971002e+01
-6 7276     5.579301e+02 9.726001e+01
-8 7276     5.807600e+02 -7.179999e+01
-9 7276     4.086700e+02 6.394000e+01
-12 7276     6.363500e+02 1.066200e+02
-0 7277     6.956100e+02 -5.978998e+01
-2 7277     6.632500e+02 -3.427002e+01
-3 7277     5.307800e+02 -3.366800e+02
-7 7277     5.525601e+02 1.411100e+02
-9 7277     4.302000e+02 7.628003e+01
-10 7277     7.202300e+02 1.447900e+02
-12 7277     6.647700e+02 1.170600e+02
-0 7278     -6.581400e+02 -6.137000e+01
-13 7278     -2.991300e+02 -3.476200e+02
-0 7279     -4.148500e+02 -6.200000e+01
-2 7279     -5.021100e+02 -3.322200e+02
-7 7279     -5.348200e+02 -4.932001e+01
-8 7279     -3.595600e+02 -2.909300e+02
-10 7279     -5.728600e+02 2.398999e+01
-0 7280     -1.561800e+02 -6.240997e+01
-6 7280     -2.220900e+02 -1.225800e+02
-7 7280     -2.399000e+02 1.778003e+01
-10 7280     -2.681400e+02 5.178998e+01
-12 7280     -2.080200e+02 -6.234998e+01
-13 7280     2.259399e+02 -2.935300e+02
-15 7280     -2.355500e+02 3.065002e+01
-0 7281     -9.881000e+01 -6.283002e+01
-7 7281     -1.784300e+02 2.991998e+01
-10 7281     -2.013900e+02 5.772998e+01
-15 7281     -1.586700e+02 3.834998e+01
-0 7282     7.574800e+02 -6.259998e+01
-3 7282     5.930699e+02 -3.041200e+02
-7 7282     6.128700e+02 1.505500e+02
-10 7282     7.930699e+02 1.481100e+02
-12 7282     7.371000e+02 1.387200e+02
-0 7283     7.574800e+02 -6.259998e+01
-2 7283     7.288101e+02 -3.270020e+00
-3 7283     5.930699e+02 -3.041200e+02
-7 7283     6.128700e+02 1.505500e+02
-10 7283     7.930699e+02 1.481100e+02
-12 7283     7.371000e+02 1.387200e+02
-0 7284     2.975900e+02 -6.284998e+01
-8 7284     3.966700e+02 -4.187000e+01
-0 7285     7.914500e+02 -6.392999e+01
-2 7285     7.634900e+02 1.251001e+01
-3 7285     6.247900e+02 -2.865200e+02
-7 7285     6.448900e+02 1.564900e+02
-0 7286     2.044000e+01 -6.641998e+01
-7 7286     -5.321997e+01 5.009998e+01
-10 7286     -6.298999e+01 6.590002e+01
-0 7287     8.118600e+02 -6.721997e+01
-7 7287     6.644700e+02 1.575300e+02
-0 7288     -4.188100e+02 -6.800000e+01
-2 7288     -5.053400e+02 -3.389600e+02
-8 7288     -3.612800e+02 -2.962100e+02
-9 7288     -5.311300e+02 -2.332400e+02
-10 7288     -5.769700e+02 1.751001e+01
-13 7288     -7.554999e+01 -3.385800e+02
-15 7288     -5.831800e+02 -1.482001e+01
-0 7289     1.015800e+02 -6.897998e+01
-6 7289     1.075800e+02 -2.278998e+01
-0 7290     8.694600e+02 -6.903003e+01
-7 7290     7.183900e+02 1.669000e+02
-9 7290     5.754500e+02 1.505700e+02
-0 7291     -3.844200e+02 -6.948999e+01
-7 7291     -5.007600e+02 -4.990997e+01
-0 7292     -3.844200e+02 -6.948999e+01
-7 7292     -5.007600e+02 -4.990997e+01
-0 7293     3.824100e+02 -6.959998e+01
-7 7293     2.876200e+02 9.832001e+01
-0 7294     6.821801e+02 -7.006000e+01
-2 7294     6.494301e+02 -5.282001e+01
-3 7294     5.209200e+02 -3.549300e+02
-8 7294     5.924399e+02 -7.602002e+01
-9 7294     4.198500e+02 6.031000e+01
-10 7294     7.024900e+02 1.321700e+02
-12 7294     6.498101e+02 1.004000e+02
-0 7295     7.662200e+02 -7.062000e+01
-7 7295     6.218500e+02 1.447500e+02
-10 7295     8.041000e+02 1.405300e+02
-0 7296     2.944301e+02 -7.095001e+01
-7 7296     2.106801e+02 8.801001e+01
-13 7296     6.275200e+02 -2.630000e+02
-15 7296     3.780100e+02 8.035001e+01
-0 7297     7.627300e+02 -7.087000e+01
-2 7297     7.369200e+02 -8.919983e+00
-9 7297     4.903500e+02 1.002200e+02
-10 7297     7.997600e+02 1.387800e+02
-12 7297     7.445500e+02 1.328800e+02
-0 7298     -4.275000e+02 -7.171002e+01
-7 7298     -5.461700e+02 -6.046002e+01
-13 7298     -8.301001e+01 -3.419000e+02
-0 7299     8.578600e+02 -7.140997e+01
-7 7299     7.080500e+02 1.624300e+02
-9 7299     5.666899e+02 1.438700e+02
-0 7300     1.067800e+02 -7.239001e+01
-2 7300     2.906600e+02 -1.778003e+01
-13 7300     4.786100e+02 -2.748600e+02
-15 7300     1.190000e+02 5.331000e+01
-0 7301     6.814301e+02 -7.367999e+01
-6 7301     5.752200e+02 8.708002e+01
-9 7301     4.215500e+02 5.714001e+01
-12 7301     6.519500e+02 9.570001e+01
-0 7302     8.476700e+02 -7.971002e+01
-2 7302     8.227900e+02 2.696997e+01
-7 7302     6.992300e+02 1.531100e+02
-9 7302     5.604301e+02 1.330400e+02
-0 7303     -1.877200e+02 -8.026001e+01
-7 7303     -2.740300e+02 -9.760010e+00
-0 7304     3.357300e+02 -8.122998e+01
-7 7304     2.507200e+02 8.379999e+01
-0 7305     8.753600e+02 -8.150000e+01
-9 7305     5.827200e+02 1.435700e+02
-0 7306     2.202002e+01 -8.845001e+01
-3 7306     1.128300e+02 -3.720700e+02
-7 7306     -4.844000e+01 2.834998e+01
-0 7307     -4.154400e+02 -8.978003e+01
-7 7307     -5.290100e+02 -7.577002e+01
-8 7307     -3.474000e+02 -3.120700e+02
-10 7307     -5.703500e+02 -7.510010e+00
-13 7307     -6.742999e+01 -3.570000e+02
-15 7307     -5.765600e+02 -4.289001e+01
-0 7308     6.700900e+02 -9.071002e+01
-6 7308     5.658700e+02 6.323999e+01
-7 7308     5.318400e+02 1.063500e+02
-9 7308     4.168700e+02 3.696997e+01
-0 7309     6.910900e+02 -9.089001e+01
-2 7309     6.673300e+02 -6.952002e+01
-3 7309     5.372600e+02 -3.710800e+02
-7 7309     5.524399e+02 1.101300e+02
-9 7309     4.351700e+02 4.722998e+01
-0 7310     -3.320300e+02 -9.240002e+01
-7 7310     -4.399800e+02 -6.240997e+01
-13 7310     1.014001e+01 -3.532500e+02
-0 7311     6.986400e+02 -9.253998e+01
-2 7311     6.765000e+02 -6.675000e+01
-3 7311     5.461700e+02 -3.677200e+02
-7 7311     5.600000e+02 1.101600e+02
-9 7311     4.425500e+02 5.016998e+01
-10 7311     7.258700e+02 1.075700e+02
-12 7311     6.770200e+02 8.233002e+01
-0 7312     1.094700e+02 -9.326001e+01
-2 7312     2.985500e+02 -4.134003e+01
-6 7312     1.224200e+02 -4.871997e+01
-8 7312     2.725200e+02 -8.358002e+01
-10 7312     4.376001e+01 4.514001e+01
-12 7312     1.368500e+02 -9.500122e-01
-0 7313     1.684900e+02 -9.381000e+01
-2 7313     3.536400e+02 -3.010999e+01
-6 7313     1.830300e+02 -3.034003e+01
-8 7313     3.195300e+02 -7.401001e+01
-13 7313     5.328800e+02 -2.889800e+02
-15 7313     2.062800e+02 3.321002e+01
-0 7314     2.283101e+02 -9.534003e+01
-10 7314     1.810000e+02 5.434998e+01
-13 7314     5.813300e+02 -2.868900e+02
-0 7315     -4.181400e+02 -9.583002e+01
-2 7315     -4.843600e+02 -3.629800e+02
-7 7315     -5.296900e+02 -8.206000e+01
-8 7315     -3.480800e+02 -3.175700e+02
-10 7315     -5.716900e+02 -1.460999e+01
-12 7315     -5.885400e+02 -2.405100e+02
-15 7315     -5.785600e+02 -5.116998e+01
-0 7316     -4.647300e+02 -9.767999e+01
-7 7316     -5.795000e+02 -9.320001e+01
-8 7316     -3.969000e+02 -3.296400e+02
-0 7317     -4.704600e+02 -9.859998e+01
-7 7317     -5.851400e+02 -9.515997e+01
-13 7317     -1.162900e+02 -3.685700e+02
-0 7318     7.646500e+02 -9.958002e+01
-7 7318     6.241899e+02 1.170200e+02
-0 7319     1.389399e+02 -1.006700e+02
-2 7319     3.285699e+02 -4.448999e+01
-3 7319     2.334399e+02 -3.467100e+02
-6 7319     1.549400e+02 -4.838000e+01
-8 7319     2.982700e+02 -8.544000e+01
-15 7319     1.662800e+02 1.859998e+01
-0 7320     -3.911000e+02 -1.014000e+02
-7 7320     -4.999800e+02 -8.244000e+01
-9 7320     -4.754100e+02 -2.459400e+02
-13 7320     -4.154999e+01 -3.651200e+02
-15 7320     -5.411800e+02 -5.520001e+01
-0 7321     5.960999e+01 -1.022100e+02
-6 7321     6.915002e+01 -7.703998e+01
-7 7321     -7.440002e+00 2.194000e+01
-8 7321     2.306800e+02 -1.040800e+02
-13 7321     4.386100e+02 -3.055300e+02
-15 7321     6.021002e+01 6.690002e+00
-0 7322     4.090699e+02 -1.038600e+02
-6 7322     3.949700e+02 1.512000e+01
-10 7322     3.896700e+02 6.371002e+01
-12 7322     4.410900e+02 4.583002e+01
-0 7323     6.890800e+02 -1.038000e+02
-2 7323     6.686700e+02 -8.337000e+01
-3 7323     5.397800e+02 -3.850100e+02
-7 7323     5.523199e+02 9.754999e+01
-9 7323     4.361801e+02 3.559998e+01
-12 7323     6.679700e+02 6.627002e+01
-0 7324     -4.355000e+02 -1.051600e+02
-7 7324     -5.467900e+02 -9.489001e+01
-15 7324     -6.027100e+02 -6.751001e+01
-0 7325     2.418400e+02 -1.049100e+02
-2 7325     4.144301e+02 -3.697998e+01
-3 7325     3.123800e+02 -3.391200e+02
-6 7325     2.529900e+02 -2.454999e+01
-7 7325     1.692300e+02 4.890002e+01
-10 7325     1.972800e+02 4.497998e+01
-12 7325     2.801500e+02 1.616998e+01
-13 7325     5.929800e+02 -2.945900e+02
-15 7325     3.086200e+02 2.698999e+01
-0 7326     7.308300e+02 -1.054500e+02
-2 7326     7.140601e+02 -6.225000e+01
-7 7326     5.926300e+02 1.047600e+02
-9 7326     4.733900e+02 5.547998e+01
-10 7326     7.644800e+02 9.629999e+01
-12 7326     7.169700e+02 8.112000e+01
-0 7327     4.074600e+02 -1.076300e+02
-6 7327     3.966100e+02 1.131000e+01
-10 7327     3.883199e+02 5.925000e+01
-12 7327     4.423300e+02 4.190002e+01
-0 7328     3.108600e+02 -1.078200e+02
-6 7328     3.182600e+02 -8.780029e+00
-7 7328     2.343900e+02 5.633002e+01
-12 7328     3.526600e+02 2.773999e+01
-13 7328     6.502300e+02 -2.927700e+02
-15 7328     4.047300e+02 3.209998e+01
-0 7329     3.204900e+02 -1.081700e+02
-10 7329     2.879500e+02 4.945001e+01
-13 7329     6.583400e+02 -2.925100e+02
-15 7329     4.181600e+02 3.323999e+01
-0 7330     1.385699e+02 -1.116100e+02
-3 7330     2.362100e+02 -3.593400e+02
-7 7330     7.239001e+01 2.615997e+01
-0 7331     2.876899e+02 -1.117300e+02
-7 7331     2.134100e+02 4.865002e+01
-15 7331     3.728000e+02 2.401001e+01
-0 7332     4.075200e+02 -1.120200e+02
-7 7332     3.212200e+02 6.406000e+01
-12 7332     4.437300e+02 3.812000e+01
-0 7333     2.435699e+02 -1.155200e+02
-13 7333     5.960200e+02 -3.035800e+02
-0 7334     7.772300e+02 -1.167900e+02
-2 7334     7.654900e+02 -4.857001e+01
-3 7334     6.314500e+02 -3.458600e+02
-7 7334     6.381899e+02 1.031600e+02
-9 7334     5.156300e+02 6.878003e+01
-10 7334     8.205200e+02 8.719000e+01
-12 7334     7.726500e+02 8.757001e+01
-0 7335     -2.672998e+01 -1.174800e+02
-3 7335     8.212000e+01 -4.105601e+02
-7 7335     -9.106000e+01 -8.460022e+00
-15 7335     -5.534998e+01 -2.534003e+01
-0 7336     -1.450000e+01 -1.232500e+02
-7 7336     -7.759003e+01 -1.165002e+01
-0 7337     1.045000e+02 -1.284900e+02
-13 7337     4.815900e+02 -3.246700e+02
-0 7338     -3.001800e+02 -1.298200e+02
-2 7338     -3.060800e+02 -3.581100e+02
-6 7338     -4.816700e+02 -3.159100e+02
-13 7338     4.895001e+01 -3.834200e+02
-0 7339     -1.095700e+02 -1.310900e+02
-7 7339     -1.747500e+02 -3.951001e+01
-15 7339     -1.651600e+02 -5.562000e+01
-0 7340     -1.477400e+02 -1.345200e+02
-7 7340     -2.127400e+02 -4.928998e+01
-10 7340     -2.508900e+02 -3.090997e+01
-15 7340     -2.161500e+02 -6.537000e+01
-0 7341     2.477800e+02 -1.375900e+02
-7 7341     1.823700e+02 1.878003e+01
-10 7341     2.071801e+02 8.030029e+00
-15 7341     3.210699e+02 -1.609003e+01
-0 7342     6.888000e+02 -1.377100e+02
-7 7342     5.564600e+02 6.490002e+01
-9 7342     4.464600e+02 5.989990e+00
-0 7343     2.541100e+02 -1.426400e+02
-10 7343     2.155200e+02 2.169983e+00
-13 7343     6.134100e+02 -3.256300e+02
-0 7344     8.756400e+02 -1.447400e+02
-7 7344     7.332700e+02 9.679001e+01
-9 7344     5.997700e+02 9.220001e+01
-0 7345     1.133100e+02 -1.481500e+02
-7 7345     5.584998e+01 -1.284003e+01
-10 7345     5.279999e+01 -1.869000e+01
-0 7346     1.095000e+02 -1.510700e+02
-6 7346     1.488200e+02 -1.098300e+02
-12 7346     1.579600e+02 -6.467999e+01
-0 7347     8.240900e+02 -1.508300e+02
-2 7347     8.237900e+02 -5.742999e+01
-7 7347     6.866899e+02 8.056000e+01
-9 7347     5.631200e+02 6.327002e+01
-0 7348     -1.030000e+02 -1.513800e+02
-6 7348     -9.678000e+01 -1.932900e+02
-7 7348     -1.628600e+02 -5.712000e+01
-13 7348     2.987000e+02 -3.631900e+02
-15 7348     -1.536100e+02 -8.195001e+01
-0 7349     1.594700e+02 -1.532100e+02
-13 7349     5.358300e+02 -3.409400e+02
-15 7349     2.013500e+02 -4.914001e+01
-0 7350     7.596000e+02 -1.529200e+02
-2 7350     7.590601e+02 -9.507001e+01
-9 7350     5.115699e+02 2.966998e+01
-12 7350     7.623300e+02 3.991998e+01
-0 7351     7.196100e+02 -1.556500e+02
-2 7351     7.177000e+02 -1.209300e+02
-7 7351     5.883199e+02 5.440997e+01
-0 7352     -6.457001e+01 -1.566300e+02
-10 7352     -1.511000e+02 -4.716998e+01
-12 7352     -4.981000e+01 -1.302500e+02
-13 7352     3.342900e+02 -3.643400e+02
-0 7353     -1.350300e+02 -1.575100e+02
-4 7353     -3.648800e+02 -3.009900e+02
-7 7353     -1.986400e+02 -7.235999e+01
-12 7353     -1.470200e+02 -1.641700e+02
-15 7353     -1.950500e+02 -9.362000e+01
-0 7354     3.831700e+02 -1.591300e+02
-7 7354     3.098500e+02 1.682001e+01
-10 7354     3.646600e+02 -2.950012e+00
-15 7354     5.116700e+02 -2.835999e+01
-0 7355     7.953700e+02 -1.589500e+02
-2 7355     7.970100e+02 -8.148999e+01
-9 7355     5.421000e+02 4.233002e+01
-12 7355     8.041899e+02 4.802002e+01
-0 7356     3.790997e+01 -1.609000e+02
-2 7356     2.532900e+02 -1.308300e+02
-3 7356     1.687700e+02 -4.323800e+02
-6 7356     7.035999e+01 -1.492400e+02
-8 7356     2.317800e+02 -1.572400e+02
-10 7356     -3.234998e+01 -4.103003e+01
-12 7356     7.577002e+01 -1.015600e+02
-13 7356     4.283199e+02 -3.587600e+02
-15 7356     3.802002e+01 -7.567999e+01
-0 7357     -1.431000e+01 -1.607800e+02
-7 7357     -7.096997e+01 -4.970001e+01
-10 7357     -9.283002e+01 -4.675000e+01
-15 7357     -3.242999e+01 -8.221002e+01
-0 7358     7.344301e+02 -1.618900e+02
-7 7358     6.035800e+02 5.119000e+01
-0 7359     8.744900e+02 -1.618800e+02
-7 7359     7.344600e+02 8.029001e+01
-0 7360     8.744900e+02 -1.618800e+02
-7 7360     7.344600e+02 8.029001e+01
-0 7361     8.348600e+02 -1.688400e+02
-7 7361     6.987700e+02 6.572998e+01
-0 7362     7.695601e+02 -1.706700e+02
-7 7362     6.382800e+02 5.028003e+01
-0 7363     8.026899e+02 -1.718400e+02
-2 7363     8.090200e+02 -9.029999e+01
-7 7363     6.696400e+02 5.621997e+01
-12 7363     8.161801e+02 3.728998e+01
-0 7364     8.026899e+02 -1.718400e+02
-2 7364     8.090200e+02 -9.029999e+01
-7 7364     6.696400e+02 5.621997e+01
-12 7364     8.161801e+02 3.728998e+01
-0 7365     -6.364001e+01 -1.747400e+02
-6 7365     -3.478003e+01 -2.015800e+02
-10 7365     -1.482600e+02 -6.821002e+01
-12 7365     -3.841998e+01 -1.488600e+02
-13 7365     3.411300e+02 -3.795800e+02
-15 7365     -9.834998e+01 -1.073300e+02
-0 7366     7.493400e+02 -1.750100e+02
-2 7366     7.549500e+02 -1.242800e+02
-3 7366     6.279500e+02 -4.211300e+02
-7 7366     6.192000e+02 4.203998e+01
-10 7366     7.921801e+02 1.731000e+01
-0 7367     7.826500e+02 -1.751900e+02
-2 7367     7.893000e+02 -1.048000e+02
-7 7367     6.508199e+02 4.898999e+01
-9 7367     5.363800e+02 2.253003e+01
-0 7368     3.202002e+01 -1.753400e+02
-7 7368     -2.190997e+01 -5.557001e+01
-10 7368     -3.788000e+01 -5.820001e+01
-15 7368     3.153003e+01 -9.590997e+01
-0 7369     7.531100e+02 -1.754600e+02
-3 7369     6.313101e+02 -4.192700e+02
-7 7369     6.229399e+02 4.240002e+01
-0 7370     9.957001e+01 -1.784300e+02
-2 7370     3.252500e+02 -1.296700e+02
-3 7370     2.364900e+02 -4.290900e+02
-6 7370     1.452000e+02 -1.461400e+02
-8 7370     2.914700e+02 -1.576600e+02
-12 7370     1.536500e+02 -1.019100e+02
-0 7371     2.099600e+02 -1.784100e+02
-6 7371     2.549700e+02 -1.109700e+02
-7 7371     1.530000e+02 -2.697998e+01
-12 7371     2.744500e+02 -7.202002e+01
-15 7371     2.734500e+02 -7.676001e+01
-0 7372     7.543700e+02 -1.792900e+02
-2 7372     7.616600e+02 -1.260100e+02
-7 7372     6.249100e+02 3.887000e+01
-9 7372     5.143500e+02 4.190002e+00
-10 7372     7.987200e+02 1.279999e+01
-0 7373     7.543700e+02 -1.792900e+02
-2 7373     7.616600e+02 -1.260100e+02
-7 7373     6.249100e+02 3.887000e+01
-9 7373     5.143500e+02 4.190002e+00
-0 7374     7.543700e+02 -1.792900e+02
-2 7374     7.616600e+02 -1.260100e+02
-7 7374     6.249100e+02 3.887000e+01
-9 7374     5.143500e+02 4.190002e+00
-10 7374     7.987200e+02 1.279999e+01
-12 7374     7.637500e+02 8.080017e+00
-0 7375     5.896997e+01 -1.819800e+02
-7 7375     7.359985e+00 -5.710999e+01
-0 7376     8.427500e+02 -1.838500e+02
-7 7376     7.079700e+02 5.291998e+01
-0 7377     -9.187000e+01 -1.846800e+02
-2 7377     1.067300e+02 -2.117700e+02
-4 7377     -3.907500e+02 -3.338600e+02
-6 7377     -8.035999e+01 -2.318300e+02
-7 7377     -1.473000e+02 -9.019000e+01
-12 7377     -7.991998e+01 -1.779700e+02
-15 7377     -1.329100e+02 -1.255100e+02
-0 7378     2.125400e+02 -1.846700e+02
-6 7378     2.590900e+02 -1.175700e+02
-0 7379     -4.280200e+02 -1.852400e+02
-7 7379     -5.187000e+02 -1.718400e+02
-15 7379     -5.817900e+02 -1.735800e+02
-0 7380     3.317600e+02 -1.880500e+02
-6 7380     3.751200e+02 -8.459998e+01
-12 7380     4.059500e+02 -5.188000e+01
-0 7381     8.434900e+02 -1.879300e+02
-3 7381     7.203400e+02 -3.768200e+02
-7 7381     7.094399e+02 4.957001e+01
-9 7381     5.885400e+02 4.235999e+01
-0 7382     3.330699e+02 -1.914800e+02
-3 7382     4.297100e+02 -3.940900e+02
-10 7382     3.100400e+02 -4.528003e+01
-15 7382     4.451200e+02 -7.885999e+01
-0 7383     3.330699e+02 -1.914800e+02
-6 7383     3.783000e+02 -8.759003e+01
-10 7383     3.100400e+02 -4.528003e+01
-12 7383     4.090100e+02 -5.475000e+01
-15 7383     4.451200e+02 -7.885999e+01
-0 7384     -8.221002e+01 -1.924400e+02
-2 7384     1.230600e+02 -2.155100e+02
-3 7384     4.741998e+01 -5.199700e+02
-6 7384     -6.297998e+01 -2.366600e+02
-7 7384     -1.359700e+02 -9.559003e+01
-8 7384     1.229000e+02 -2.240900e+02
-9 7384     7.059998e+00 -8.876001e+01
-12 7384     -6.345001e+01 -1.837400e+02
-15 7384     -1.189000e+02 -1.342700e+02
-0 7385     7.932200e+02 -1.940000e+02
-7 7385     6.634600e+02 3.323999e+01
-0 7386     -8.933002e+01 -1.945800e+02
-6 7386     -7.596002e+01 -2.451899e+02
-10 7386     -1.764400e+02 -9.394000e+01
-15 7386     -1.280000e+02 -1.382800e+02
-0 7387     -4.972998e+01 -1.954700e+02
-2 7387     1.767900e+02 -1.902800e+02
-3 7387     1.005800e+02 -4.921300e+02
-4 7387     -4.051300e+02 -3.704900e+02
-6 7387     -1.163000e+01 -2.198000e+02
-7 7387     -9.871002e+01 -9.042999e+01
-8 7387     1.650700e+02 -2.059000e+02
-12 7387     -1.534003e+01 -1.692300e+02
-0 7388     3.196500e+02 -1.961600e+02
-6 7388     3.685700e+02 -9.609003e+01
-10 7388     2.953500e+02 -5.207001e+01
-12 7388     3.972400e+02 -6.296002e+01
-15 7388     4.272900e+02 -8.694000e+01
-0 7389     3.605300e+02 -1.995400e+02
-7 7389     2.994200e+02 -2.265997e+01
-15 7389     4.842100e+02 -8.640002e+01
-0 7390     2.250000e+01 -2.000100e+02
-6 7390     7.494000e+01 -1.960300e+02
-7 7390     -2.492999e+01 -8.090997e+01
-10 7390     -4.628998e+01 -8.867999e+01
-12 7390     7.453998e+01 -1.493300e+02
-15 7390     2.127002e+01 -1.312200e+02
-0 7391     3.242600e+02 -2.013300e+02
-7 7391     2.654000e+02 -3.062000e+01
-10 7391     3.014399e+02 -5.701001e+01
-15 7391     4.344700e+02 -9.328003e+01
-0 7392     7.809100e+02 -2.029100e+02
-12 7392     7.998500e+02 -6.710022e+00
-0 7393     7.705500e+02 -2.032500e+02
-2 7393     7.860300e+02 -1.411600e+02
-0 7394     7.705500e+02 -2.032500e+02
-2 7394     7.860300e+02 -1.411600e+02
-12 7394     7.884000e+02 -1.144000e+01
-0 7395     6.508002e+01 -2.038900e+02
-7 7395     1.808002e+01 -7.617999e+01
-10 7395     3.130005e+00 -8.773999e+01
-15 7395     7.971002e+01 -1.302700e+02
-0 7396     7.870000e+02 -2.074100e+02
-3 7396     6.763900e+02 -4.310500e+02
-12 7396     8.085900e+02 -8.859985e+00
-0 7397     8.559000e+02 -2.092800e+02
-7 7397     7.235300e+02 3.196997e+01
-9 7397     6.040900e+02 3.051001e+01
-0 7398     1.169700e+02 -2.101000e+02
-7 7398     7.084998e+01 -7.309003e+01
-10 7398     6.396997e+01 -8.928998e+01
-15 7398     1.510100e+02 -1.317800e+02
-0 7399     2.622700e+02 -2.100800e+02
-7 7399     2.102700e+02 -4.816998e+01
-10 7399     2.318900e+02 -7.391998e+01
-15 7399     3.497800e+02 -1.133200e+02
-0 7400     1.082500e+02 -2.104500e+02
-4 7400     -4.467000e+02 -5.000601e+02
-7 7400     6.207001e+01 -7.475000e+01
-10 7400     5.371002e+01 -9.023999e+01
-13 7400     5.001000e+02 -3.955900e+02
-15 7400     1.389200e+02 -1.331900e+02
-0 7401     2.545699e+02 -2.117400e+02
-2 7401     4.835800e+02 -1.252900e+02
-3 7401     3.854100e+02 -4.208000e+02
-6 7401     3.159000e+02 -1.300800e+02
-8 7401     4.259301e+02 -1.553500e+02
-12 7401     3.369500e+02 -9.442999e+01
-13 7401     6.266899e+02 -3.859500e+02
-0 7402     8.628900e+02 -2.146700e+02
-7 7402     7.305100e+02 2.854999e+01
-9 7402     6.108300e+02 2.967999e+01
-0 7403     2.717400e+02 -2.149500e+02
-6 7403     3.349900e+02 -1.278300e+02
-7 7403     2.198700e+02 -5.159003e+01
-8 7403     4.405500e+02 -1.546800e+02
-10 7403     2.417500e+02 -7.896997e+01
-12 7403     3.570800e+02 -9.321002e+01
-13 7403     6.421899e+02 -3.874500e+02
-15 7403     3.628300e+02 -1.187600e+02
-0 7404     2.403003e+01 -2.158300e+02
-7 7404     -1.889001e+01 -9.471002e+01
-13 7404     4.287800e+02 -4.070200e+02
-0 7405     -1.739990e+00 -2.185200e+02
-2 7405     2.409301e+02 -1.980700e+02
-3 7405     1.624200e+02 -4.974200e+02
-6 7405     5.350000e+01 -2.265601e+02
-7 7405     -4.509998e+01 -1.040100e+02
-8 7405     2.183000e+02 -2.139400e+02
-10 7405     -7.137000e+01 -1.122800e+02
-12 7405     5.063000e+01 -1.795300e+02
-13 7405     4.021300e+02 -4.129000e+02
-15 7405     -8.500000e+00 -1.589300e+02
-0 7406     8.416998e+01 -2.191500e+02
-3 7406     2.508500e+02 -4.634000e+02
-4 7406     -4.486900e+02 -4.812600e+02
-6 7406     1.519600e+02 -1.928900e+02
-8 7406     2.977100e+02 -1.896800e+02
-12 7406     1.548000e+02 -1.499400e+02
-0 7407     6.202002e+01 -2.192700e+02
-2 7407     3.162700e+02 -1.712000e+02
-4 7407     -4.441600e+02 -4.635400e+02
-13 7407     4.636500e+02 -4.070300e+02
-15 7407     7.729999e+01 -1.510200e+02
-0 7408     1.240600e+02 -2.197200e+02
-7 7408     8.028998e+01 -8.096997e+01
-10 7408     7.308002e+01 -9.979999e+01
-15 7408     1.615100e+02 -1.440100e+02
-0 7409     1.240600e+02 -2.197200e+02
-3 7409     2.861100e+02 -4.543101e+02
-4 7409     -4.572800e+02 -5.147600e+02
-6 7409     1.923300e+02 -1.799000e+02
-12 7409     1.991600e+02 -1.390000e+02
-13 7409     5.169200e+02 -4.022800e+02
-0 7410     7.062000e+01 -2.296600e+02
-7 7410     2.994000e+01 -9.954999e+01
-13 7410     4.735300e+02 -4.150400e+02
-0 7411     -4.236600e+02 -2.313700e+02
-6 7411     -5.721100e+02 -4.847100e+02
-7 7411     -5.024600e+02 -2.166700e+02
-8 7411     -2.882900e+02 -4.250100e+02
-10 7411     -5.630400e+02 -1.741000e+02
-15 7411     -5.704700e+02 -2.355700e+02
-0 7412     1.712400e+02 -2.352300e+02
-7 7412     1.294000e+02 -8.741998e+01
-10 7412     1.296800e+02 -1.121900e+02
-13 7412     5.617400e+02 -4.118700e+02
-15 7412     2.275300e+02 -1.588300e+02
-0 7413     1.341300e+02 -2.364900e+02
-10 7413     8.584998e+01 -1.177200e+02
-13 7413     5.298700e+02 -4.158100e+02
-15 7413     1.778500e+02 -1.651700e+02
-0 7414     1.775300e+02 -2.396700e+02
-3 7414     3.415200e+02 -4.592700e+02
-6 7414     2.541200e+02 -1.838900e+02
-7 7414     1.355300e+02 -9.119000e+01
-10 7414     1.365000e+02 -1.169800e+02
-13 7414     5.664800e+02 -4.160000e+02
-15 7414     2.367100e+02 -1.641400e+02
-0 7415     2.096000e+02 -2.421300e+02
-7 7415     1.661000e+02 -8.853003e+01
-10 7415     1.735600e+02 -1.166100e+02
-15 7415     2.811700e+02 -1.635300e+02
-0 7416     -1.319000e+01 -2.422800e+02
-3 7416     1.483000e+02 -5.445500e+02
-6 7416     3.890997e+01 -2.652100e+02
-12 7416     3.783002e+01 -2.184400e+02
-15 7416     -1.959003e+01 -1.928700e+02
-0 7417     1.065002e+01 -2.442300e+02
-4 7417     -4.554100e+02 -4.148700e+02
-6 7417     6.859003e+01 -2.569600e+02
-7 7417     -3.078003e+01 -1.294000e+02
-8 7417     2.293400e+02 -2.425000e+02
-9 7417     1.162400e+02 -9.802002e+01
-13 7417     4.120900e+02 -4.374000e+02
-0 7418     1.639900e+02 -2.470800e+02
-2 7418     4.194900e+02 -1.799300e+02
-4 7418     -4.889100e+02 -5.485800e+02
-6 7418     2.412400e+02 -1.978300e+02
-7 7418     1.229500e+02 -1.015600e+02
-9 7418     2.484100e+02 -4.673999e+01
-10 7418     1.220100e+02 -1.270300e+02
-12 7418     2.515100e+02 -1.600100e+02
-15 7418     2.201801e+02 -1.762800e+02
-0 7419     8.402500e+02 -2.479400e+02
-3 7419     7.424800e+02 -4.400900e+02
-0 7420     1.385300e+02 -2.477500e+02
-4 7420     -4.837300e+02 -5.266600e+02
-0 7421     -9.838000e+01 -2.497300e+02
-2 7421     9.544000e+01 -3.196400e+02
-7 7421     -1.480700e+02 -1.610800e+02
-8 7421     1.009700e+02 -3.055000e+02
-9 7421     -1.165997e+01 -1.772800e+02
-10 7421     -1.804900e+02 -1.581000e+02
-13 7421     2.949100e+02 -4.596700e+02
-15 7421     -1.312800e+02 -2.143100e+02
-0 7422     -1.322700e+02 -2.511600e+02
-7 7422     -1.860200e+02 -1.717800e+02
-15 7422     -1.750800e+02 -2.208700e+02
-0 7423     4.859985e+00 -2.510700e+02
-2 7423     2.444200e+02 -2.484800e+02
-3 7423     1.675200e+02 -5.480300e+02
-6 7423     5.946997e+01 -2.688101e+02
-8 7423     2.209500e+02 -2.537100e+02
-9 7423     1.099800e+02 -1.102100e+02
-10 7423     -6.058002e+01 -1.485200e+02
-12 7423     5.928998e+01 -2.232500e+02
-15 7423     6.950012e+00 -2.024400e+02
-0 7424     7.438400e+02 -2.688700e+02
-7 7424     6.340400e+02 -4.354999e+01
-0 7425     1.703998e+01 -2.898300e+02
-3 7425     1.823300e+02 -6.071600e+02
-7 7425     -2.115002e+01 -1.763900e+02
-9 7425     1.221900e+02 -1.579200e+02
-10 7425     -4.278003e+01 -1.915900e+02
-15 7425     2.871997e+01 -2.531500e+02
-0 7426     -3.164100e+02 -2.963500e+02
-7 7426     -3.736800e+02 -2.588300e+02
-10 7426     -4.280100e+02 -2.365700e+02
-0 7427     6.131700e+02 -3.002800e+02
-2 7427     7.264301e+02 -2.437400e+02
-15 7427     8.562900e+02 -1.931300e+02
-0 7428     3.245699e+02 -3.011300e+02
-7 7428     2.723900e+02 -1.352200e+02
-10 7428     3.124100e+02 -1.715700e+02
-15 7428     4.516400e+02 -2.294400e+02
-0 7429     3.245699e+02 -3.011300e+02
-7 7429     2.723900e+02 -1.352200e+02
-0 7430     2.644399e+02 -3.083400e+02
-10 7430     2.424500e+02 -1.860700e+02
-13 7430     6.310699e+02 -4.831200e+02
-15 7430     3.676200e+02 -2.465900e+02
-0 7431     2.605500e+02 -3.129600e+02
-3 7431     4.003300e+02 -5.717500e+02
-7 7431     2.170300e+02 -1.559000e+02
-9 7431     3.078900e+02 -1.245800e+02
-10 7431     2.393900e+02 -1.916500e+02
-13 7431     6.284000e+02 -4.877100e+02
-15 7431     3.637100e+02 -2.533300e+02
-0 7432     8.036300e+02 -3.150900e+02
-7 7432     6.953199e+02 -7.438000e+01
-0 7433     5.259900e+02 -3.263500e+02
-6 7433     5.532100e+02 -2.117900e+02
-7 7433     4.537700e+02 -1.312500e+02
-0 7434     5.175900e+02 -3.342900e+02
-7 7434     4.490800e+02 -1.396300e+02
-0 7435     1.641899e+02 -3.349200e+02
-7 7435     1.303800e+02 -1.936900e+02
-0 7436     1.689800e+02 -3.378400e+02
-7 7436     1.344600e+02 -1.965300e+02
-0 7437     1.843400e+02 -3.419300e+02
-7 7437     1.493000e+02 -1.983900e+02
-9 7437     2.644399e+02 -1.698500e+02
-10 7437     1.548500e+02 -2.330200e+02
-15 7437     2.631500e+02 -3.020700e+02
-0 7438     3.520601e+02 -3.488900e+02
-9 7438     3.774500e+02 -1.441000e+02
-10 7438     3.482700e+02 -2.222600e+02
-0 7439     1.873700e+02 -3.495800e+02
-9 7439     2.666000e+02 -1.780700e+02
-0 7440     7.425000e+02 -3.532100e+02
-7 7440     6.515300e+02 -1.183800e+02
-0 7441     8.426001e+01 -3.570500e+02
-7 7441     5.639001e+01 -2.310500e+02
-10 7441     4.190997e+01 -2.611000e+02
-15 7441     1.290100e+02 -3.352200e+02
-0 7442     7.182500e+02 -3.670000e+02
-7 7442     6.336100e+02 -1.348100e+02
-0 7443     8.716899e+02 -3.734000e+02
-7 7443     7.638400e+02 -1.139300e+02
-0 7444     7.159399e+02 -3.740900e+02
-7 7444     6.331700e+02 -1.413400e+02
-0 7445     7.159399e+02 -3.740900e+02
-7 7445     6.331700e+02 -1.413400e+02
-12 7445     8.174600e+02 -1.871200e+02
-0 7446     4.859700e+02 -3.779700e+02
-6 7446     5.453500e+02 -2.739600e+02
-0 7447     7.812900e+02 -3.815300e+02
-7 7447     6.908600e+02 -1.365300e+02
-0 7448     7.998600e+02 -3.822000e+02
-7 7448     7.067500e+02 -1.340600e+02
-0 7449     7.342100e+02 -3.834500e+02
-7 7449     6.511100e+02 -1.466800e+02
-0 7450     6.911000e+02 -3.854300e+02
-7 7450     6.145300e+02 -1.554800e+02
-0 7451     -3.974500e+02 -3.921700e+02
-7 7451     -4.350400e+02 -3.697600e+02
-10 7451     -5.129100e+02 -3.582700e+02
-15 7451     -5.152900e+02 -4.495900e+02
-0 7452     7.659200e+02 -3.954700e+02
-7 7452     6.809000e+02 -1.516400e+02
-0 7453     -3.949800e+02 -3.968500e+02
-6 7453     -4.089300e+02 -6.559100e+02
-7 7453     -4.304200e+02 -3.740800e+02
-15 7453     -5.118800e+02 -4.558000e+02
-0 7454     7.145900e+02 -3.981600e+02
-7 7454     6.373900e+02 -1.627800e+02
-0 7455     3.116700e+02 -4.027800e+02
-7 7455     2.766100e+02 -2.378100e+02
-0 7456     -1.458002e+01 -4.049400e+02
-7 7456     -3.587000e+01 -3.006100e+02
-15 7456     2.780029e+00 -4.128700e+02
-0 7457     7.115699e+02 -4.064000e+02
-7 7457     6.366500e+02 -1.707200e+02
-0 7458     4.879301e+02 -4.136900e+02
-6 7458     5.680601e+02 -3.072300e+02
-0 7459     1.453003e+01 -4.172300e+02
-7 7459     -5.690002e+00 -3.063200e+02
-0 7460     6.930200e+02 -4.181100e+02
-7 7460     6.229399e+02 -1.839700e+02
-0 7461     1.348900e+02 -4.240100e+02
-7 7461     1.161200e+02 -2.889900e+02
-0 7462     1.547800e+02 -4.331100e+02
-9 7462     2.758101e+02 -2.646400e+02
-0 7463     -2.034600e+02 -4.375200e+02
-4 7463     -5.701000e+02 -2.247200e+02
-6 7463     -1.409900e+02 -6.054301e+02
-7 7463     -2.215200e+02 -3.724400e+02
-9 7463     -3.763000e+01 -4.071400e+02
-10 7463     -2.806400e+02 -3.855100e+02
-15 7463     -2.470700e+02 -4.812700e+02
-0 7464     6.346200e+02 -4.373900e+02
-7 7464     5.769600e+02 -2.120200e+02
-0 7465     6.157100e+02 -4.396600e+02
-7 7465     5.609900e+02 -2.174300e+02
-10 7465     6.604700e+02 -2.996300e+02
-12 7465     7.535000e+02 -2.785300e+02
-0 7466     8.495601e+02 -4.418500e+02
-7 7466     7.600100e+02 -1.776700e+02
-0 7467     6.257900e+02 -4.430100e+02
-10 7467     6.719399e+02 -3.025900e+02
-12 7467     7.641100e+02 -2.787100e+02
-0 7468     7.667800e+02 -4.439301e+02
-7 7468     6.920100e+02 -1.943400e+02
-0 7469     4.168300e+02 -4.523101e+02
-6 7469     5.230200e+02 -3.689100e+02
-0 7470     4.168300e+02 -4.523101e+02
-2 7470     6.738000e+02 -3.995900e+02
-6 7470     5.230200e+02 -3.689100e+02
-0 7471     -1.954000e+02 -4.595900e+02
-2 7471     7.085999e+01 -6.120000e+02
-6 7471     -1.161100e+02 -6.252500e+02
-9 7471     -1.403998e+01 -4.199500e+02
-15 7471     -2.339400e+02 -5.117100e+02
-0 7472     -2.800400e+02 -4.605300e+02
-6 7472     -2.177600e+02 -6.669600e+02
-0 7473     -2.035700e+02 -4.645699e+02
-4 7473     -5.931900e+02 -2.244500e+02
-7 7473     -2.148600e+02 -3.993100e+02
-9 7473     -1.840997e+01 -4.263000e+02
-0 7474     -1.432200e+02 -4.752600e+02
-6 7474     -4.491998e+01 -6.167400e+02
-0 7475     -1.236200e+02 -4.800300e+02
-7 7475     -1.297600e+02 -3.972900e+02
-0 7476     5.532600e+02 -4.909200e+02
-10 7476     5.937200e+02 -3.647200e+02
-12 7476     7.169000e+02 -3.474400e+02
-15 7476     7.944500e+02 -4.617600e+02
-0 7477     7.132600e+02 -4.918101e+02
-7 7477     6.568400e+02 -2.467400e+02
-0 7478     8.009399e+02 -4.928700e+02
-7 7478     7.305100e+02 -2.311800e+02
-0 7479     7.012000e+02 -4.950800e+02
-7 7479     6.471600e+02 -2.512000e+02
-10 7479     7.636100e+02 -3.542000e+02
-0 7480     5.067900e+02 -4.970900e+02
-2 7480     7.818700e+02 -4.057000e+02
-12 7480     6.734600e+02 -3.681200e+02
-0 7481     8.572600e+02 -4.997500e+02
-7 7481     7.782500e+02 -2.269000e+02
-0 7482     -1.142900e+02 -5.007800e+02
-2 7482     1.966100e+02 -6.162100e+02
-4 7482     -6.466700e+02 -2.941400e+02
-9 7482     8.992999e+01 -4.156500e+02
-0 7483     7.398800e+02 -5.035300e+02
-7 7483     6.819500e+02 -2.515000e+02
-0 7484     7.398800e+02 -5.035300e+02
-7 7484     6.819500e+02 -2.515000e+02
-0 7485     -2.422300e+02 -5.052700e+02
-9 7485     -2.470001e+01 -4.694399e+02
-0 7486     -5.990002e+01 -5.090100e+02
-7 7486     -5.867999e+01 -4.119000e+02
-15 7486     -4.470001e+01 -5.599900e+02
-0 7487     -1.674600e+02 -5.184500e+02
-7 7487     -1.641900e+02 -4.443800e+02
-0 7488     5.283700e+02 -5.220100e+02
-10 7488     5.677200e+02 -4.020500e+02
-12 7488     7.068500e+02 -3.862500e+02
-0 7489     7.619399e+02 -5.257700e+02
-7 7489     7.049301e+02 -2.666100e+02
-0 7490     -3.227300e+02 -5.279399e+02
-7 7490     -3.216800e+02 -4.874800e+02
-0 7491     -1.066900e+02 -5.285400e+02
-4 7491     -6.738900e+02 -3.005600e+02
-6 7491     3.272998e+01 -6.557600e+02
-7 7491     -1.005000e+02 -4.406600e+02
-0 7492     -3.180500e+02 -5.299301e+02
-6 7492     -2.146300e+02 -7.617400e+02
-7 7492     -3.164200e+02 -4.882900e+02
-0 7493     -2.757100e+02 -5.309301e+02
-7 7493     -2.725500e+02 -4.797100e+02
-10 7493     -3.543100e+02 -5.036400e+02
-0 7494     -7.996997e+01 -5.318500e+02
-7 7494     -7.365997e+01 -4.381300e+02
-0 7495     4.013900e+02 -5.319000e+02
-6 7495     5.561899e+02 -4.492100e+02
-0 7496     -1.205700e+02 -5.401100e+02
-6 7496     2.484998e+01 -6.748600e+02
-0 7497     4.541998e+01 -5.445300e+02
-2 7497     4.012300e+02 -5.931500e+02
-7 7497     5.427002e+01 -4.241200e+02
-12 7497     1.997000e+02 -5.728000e+02
-0 7498     7.453600e+02 -5.447800e+02
-7 7498     6.953600e+02 -2.868600e+02
-0 7499     4.937000e+01 -5.462000e+02
-7 7499     5.747998e+01 -4.245800e+02
-0 7500     5.870699e+02 -5.479000e+02
-12 7500     7.794000e+02 -3.935400e+02
-0 7501     7.406000e+01 -5.483800e+02
-6 7501     2.409200e+02 -5.958000e+02
-10 7501     4.938000e+01 -4.800300e+02
-0 7502     1.373000e+02 -5.511500e+02
-7 7502     1.447500e+02 -4.111500e+02
-10 7502     1.233000e+02 -4.772400e+02
-0 7503     -3.413000e+01 -5.520200e+02
-7 7503     -2.233002e+01 -4.479000e+02
-9 7503     1.952500e+02 -4.183200e+02
-0 7504     1.538800e+02 -5.522000e+02
-2 7504     5.126200e+02 -5.596500e+02
-6 7504     3.253700e+02 -5.657900e+02
-0 7505     2.105500e+02 -5.536500e+02
-7 7505     2.154200e+02 -3.988000e+02
-0 7506     6.407800e+02 -5.545699e+02
-7 7506     6.080200e+02 -3.150900e+02
-0 7507     4.852002e+01 -5.554800e+02
-7 7507     6.050000e+01 -4.338800e+02
-0 7508     1.312600e+02 -5.561600e+02
-7 7508     1.397000e+02 -4.175200e+02
-10 7508     1.168100e+02 -4.837900e+02
-0 7509     -1.692999e+01 -5.575500e+02
-7 7509     -3.710022e+00 -4.496100e+02
-10 7509     -5.234998e+01 -5.022400e+02
-0 7510     -1.692999e+01 -5.575500e+02
-4 7510     -7.258100e+02 -3.761500e+02
-7 7510     -3.710022e+00 -4.496100e+02
-9 7510     2.133199e+02 -4.155300e+02
-10 7510     -5.234998e+01 -5.022400e+02
-0 7511     2.410900e+02 -5.579200e+02
-6 7511     4.165000e+02 -5.363500e+02
-7 7511     2.457000e+02 -3.968300e+02
-10 7511     2.422600e+02 -4.736500e+02
-0 7512     2.410900e+02 -5.579200e+02
-6 7512     4.165000e+02 -5.363500e+02
-7 7512     2.457000e+02 -3.968300e+02
-9 7512     4.083900e+02 -3.283500e+02
-10 7512     2.422600e+02 -4.736500e+02
-0 7513     7.184600e+02 -5.589200e+02
-7 7513     6.754800e+02 -3.036000e+02
-0 7514     1.979399e+02 -5.594600e+02
-2 7514     5.602900e+02 -5.501100e+02
-4 7514     -7.908900e+02 -5.691300e+02
-6 7514     3.741300e+02 -5.553400e+02
-7 7514     2.049301e+02 -4.068300e+02
-9 7514     3.787300e+02 -3.434700e+02
-10 7514     1.934800e+02 -4.799700e+02
-0 7515     8.059003e+01 -5.616500e+02
-7 7515     9.260999e+01 -4.323101e+02
-10 7515     5.926001e+01 -4.957700e+02
-12 7515     2.479700e+02 -5.783700e+02
-0 7516     1.846400e+02 -5.623101e+02
-7 7516     1.929000e+02 -4.122100e+02
-10 7516     1.786100e+02 -4.847600e+02
-0 7517     1.732400e+02 -5.636801e+02
-6 7517     3.513400e+02 -5.698800e+02
-0 7518     3.871002e+01 -5.650200e+02
-6 7518     2.144700e+02 -6.277000e+02
-7 7518     5.226001e+01 -4.447700e+02
-9 7518     2.629399e+02 -3.999100e+02
-0 7519     7.638000e+02 -5.677700e+02
-7 7519     7.153900e+02 -3.033000e+02
-0 7520     -5.201001e+01 -5.681801e+02
-7 7520     -3.622998e+01 -4.673000e+02
-10 7520     -9.197998e+01 -5.185300e+02
-0 7521     -5.201001e+01 -5.681801e+02
-7 7521     -3.622998e+01 -4.673000e+02
-10 7521     -9.197998e+01 -5.185300e+02
-0 7522     5.211500e+02 -5.684399e+02
-7 7522     5.060699e+02 -3.510100e+02
-0 7523     6.596500e+02 -5.736200e+02
-7 7523     6.284200e+02 -3.282400e+02
-0 7524     5.393400e+02 -5.774800e+02
-7 7524     5.243400e+02 -3.553100e+02
-0 7525     7.526899e+02 -5.781300e+02
-7 7525     7.082900e+02 -3.144000e+02
-0 7526     7.526899e+02 -5.781300e+02
-7 7526     7.082900e+02 -3.144000e+02
-0 7527     -5.946997e+01 -5.809800e+02
-7 7527     -4.035999e+01 -4.812400e+02
-0 7528     -5.946997e+01 -5.809800e+02
-4 7528     -7.360400e+02 -3.411200e+02
-7 7528     -4.035999e+01 -4.812400e+02
-0 7529     -4.220001e+01 -5.812800e+02
-4 7529     -7.412300e+02 -3.555600e+02
-7 7529     -2.315997e+01 -4.774600e+02
-9 7529     2.094500e+02 -4.403300e+02
-10 7529     -7.917999e+01 -5.323199e+02
-0 7530     -4.220001e+01 -5.812800e+02
-7 7530     -2.315997e+01 -4.774600e+02
-10 7530     -7.917999e+01 -5.323199e+02
-0 7531     6.854900e+02 -5.824800e+02
-7 7531     6.523700e+02 -3.311000e+02
-10 7531     7.535400e+02 -4.553400e+02
-0 7532     4.379200e+02 -5.833101e+02
-7 7532     4.344399e+02 -3.805100e+02
-10 7532     4.694399e+02 -4.815699e+02
-0 7533     7.415200e+02 -5.838400e+02
-7 7533     7.002200e+02 -3.217100e+02
-0 7534     9.138000e+01 -5.845699e+02
-7 7534     1.086100e+02 -4.524000e+02
-0 7535     -4.365002e+01 -5.849200e+02
-4 7535     -7.445500e+02 -3.547300e+02
-7 7535     -2.369000e+01 -4.813900e+02
-9 7535     2.109301e+02 -4.431200e+02
-10 7535     -8.045001e+01 -5.366200e+02
-0 7536     3.749301e+02 5.866700e+02
-2 7536     2.469000e+01 3.563600e+02
-11 7536     4.766400e+02 -1.713100e+02
-13 7536     4.824100e+02 2.664500e+02
-14 7536     6.706400e+02 -1.293900e+02
-0 7537     -5.551500e+02 5.843800e+02
-5 7537     -1.203700e+02 -6.346002e+01
-11 7537     -3.251000e+02 -2.007300e+02
-13 7537     -2.421700e+02 2.151100e+02
-14 7537     -2.047300e+02 -1.598800e+02
-0 7538     9.420001e+01 5.843900e+02
-5 7538     4.979399e+02 -6.091998e+01
-6 7538     -3.906200e+02 6.475900e+02
-8 7538     -9.573999e+01 2.742400e+02
-12 7538     -2.188200e+02 6.183200e+02
-13 7538     2.624700e+02 2.459000e+02
-14 7538     4.022200e+02 -1.469000e+02
-0 7539     9.420001e+01 5.843900e+02
-5 7539     4.979399e+02 -6.091998e+01
-6 7539     -3.906200e+02 6.475900e+02
-8 7539     -9.573999e+01 2.742400e+02
-11 7539     2.263300e+02 -1.891000e+02
-12 7539     -2.188200e+02 6.183200e+02
-13 7539     2.624700e+02 2.459000e+02
-14 7539     4.022200e+02 -1.469000e+02
-0 7540     4.216200e+02 5.833900e+02
-2 7540     6.375000e+01 3.529800e+02
-3 7540     -8.453998e+01 1.803998e+01
-5 7540     8.221600e+02 -4.934998e+01
-8 7540     1.336900e+02 2.785100e+02
-9 7540     -1.009600e+02 3.827800e+02
-11 7540     5.203900e+02 -1.712100e+02
-13 7540     5.201400e+02 2.669700e+02
-14 7540     7.170000e+02 -1.297800e+02
-0 7541     8.516998e+01 5.829600e+02
-3 7541     -3.526700e+02 1.922998e+01
-5 7541     4.902200e+02 -6.160999e+01
-6 7541     -3.997300e+02 6.451300e+02
-8 7541     -1.018300e+02 2.729500e+02
-9 7541     -3.427100e+02 3.745200e+02
-11 7541     2.185700e+02 -1.901900e+02
-12 7541     -2.278900e+02 6.166400e+02
-14 7541     3.936400e+02 -1.484100e+02
-0 7542     -4.516900e+02 5.812100e+02
-2 7542     -7.417400e+02 3.627600e+02
-5 7542     -2.357001e+01 -6.579999e+01
-0 7543     2.894500e+02 5.801500e+02
-2 7543     -4.492999e+01 3.464900e+02
-3 7543     -1.867200e+02 1.203998e+01
-4 7543     4.478003e+01 -5.531000e+02
-6 7543     -1.820400e+02 6.774400e+02
-8 7543     4.356000e+01 2.714500e+02
-9 7543     -1.927500e+02 3.740300e+02
-11 7543     4.008300e+02 -1.822800e+02
-13 7543     4.150900e+02 2.531200e+02
-14 7543     5.884600e+02 -1.424400e+02
-0 7544     6.296002e+01 5.794200e+02
-2 7544     -2.402100e+02 3.494200e+02
-3 7544     -3.718700e+02 1.571997e+01
-4 7544     5.715002e+01 -4.046800e+02
-5 7544     4.677700e+02 -6.600000e+01
-8 7544     -1.186800e+02 2.692400e+02
-12 7544     -2.511800e+02 6.093600e+02
-14 7544     3.730100e+02 -1.526000e+02
-0 7545     -7.678100e+02 5.745000e+02
-5 7545     -4.583300e+02 -7.941998e+01
-11 7545     -4.774400e+02 -2.061300e+02
-0 7546     1.550000e+01 5.720400e+02
-12 7546     -3.002500e+02 5.948400e+02
-14 7546     3.281000e+02 -1.624300e+02
-0 7547     5.658300e+02 5.717000e+02
-6 7547     2.270600e+02 7.480100e+02
-8 7547     3.252400e+02 3.624700e+02
-9 7547     1.182900e+02 4.918300e+02
-11 7547     6.339500e+02 -1.745400e+02
-0 7548     3.845100e+02 5.703700e+02
-2 7548     3.479999e+01 3.398200e+02
-3 7548     -1.118900e+02 4.690002e+00
-5 7548     7.846300e+02 -6.445001e+01
-6 7548     -8.294000e+01 6.860500e+02
-8 7548     1.093800e+02 2.674400e+02
-9 7548     -1.251400e+02 3.701500e+02
-11 7548     4.885100e+02 -1.844200e+02
-13 7548     4.911100e+02 2.537000e+02
-14 7548     6.818199e+02 -1.449800e+02
-0 7549     -3.304500e+02 5.701200e+02
-8 7549     -4.259100e+02 2.567100e+02
-11 7549     -1.413800e+02 -2.135500e+02
-12 7549     -6.871600e+02 5.473600e+02
-13 7549     -6.790997e+01 2.128500e+02
-14 7549     2.929993e+00 -1.718900e+02
-0 7550     4.673101e+02 5.693400e+02
-8 7550     1.654700e+02 2.680900e+02
-9 7550     -6.810999e+01 3.716700e+02
-0 7551     1.654600e+02 5.659000e+02
-4 7551     4.335999e+01 -4.692900e+02
-5 7551     5.673500e+02 -7.679999e+01
-6 7551     -3.096000e+02 6.388100e+02
-8 7551     -4.248999e+01 2.598700e+02
-9 7551     -2.800300e+02 3.597500e+02
-11 7551     2.910200e+02 -2.010200e+02
-0 7552     4.466500e+02 5.663400e+02
-3 7552     -6.337000e+01 9.699707e-01
-13 7552     5.409500e+02 2.546400e+02
-0 7553     5.636500e+02 5.640600e+02
-3 7553     1.674100e+02 1.262100e+02
-6 7553     2.267800e+02 7.389400e+02
-13 7553     7.004200e+02 2.710200e+02
-0 7554     -2.665997e+01 5.635700e+02
-5 7554     3.810000e+02 -8.326001e+01
-8 7554     -1.845700e+02 2.547700e+02
-11 7554     1.211000e+02 -2.102000e+02
-12 7554     -3.440600e+02 5.806700e+02
-0 7555     -2.665997e+01 5.635700e+02
-2 7555     -3.204700e+02 3.309800e+02
-3 7555     -4.487600e+02 -1.270020e+00
-8 7555     -1.845700e+02 2.547700e+02
-12 7555     -3.440600e+02 5.806700e+02
-0 7556     -3.516998e+01 5.625200e+02
-2 7556     -3.281400e+02 3.313000e+02
-5 7556     3.728800e+02 -8.458002e+01
-6 7556     -5.300700e+02 5.968700e+02
-8 7556     -1.904600e+02 2.541000e+02
-0 7557     4.261400e+02 5.620000e+02
-2 7557     7.016998e+01 3.306000e+02
-9 7557     -9.483002e+01 3.636900e+02
-13 7557     5.245400e+02 2.492000e+02
-14 7557     7.229900e+02 -1.516200e+02
-0 7558     4.654399e+02 5.612600e+02
-14 7558     7.623900e+02 -1.488500e+02
-0 7559     -3.553100e+02 5.609200e+02
-2 7559     -6.404300e+02 3.346100e+02
-4 7559     7.208002e+01 -1.659100e+02
-5 7559     6.525000e+01 -8.725000e+01
-8 7559     -4.467900e+02 2.498100e+02
-11 7559     -1.620100e+02 -2.186300e+02
-12 7559     -7.158500e+02 5.353500e+02
-13 7559     -8.767999e+01 2.043200e+02
-0 7560     5.795100e+02 5.563700e+02
-2 7560     3.309000e+02 4.598500e+02
-13 7560     7.161700e+02 2.662400e+02
-0 7561     4.195900e+02 5.538000e+02
-9 7561     -9.790997e+01 3.561000e+02
-11 7561     5.227500e+02 -1.965400e+02
-13 7561     5.203101e+02 2.422000e+02
-14 7561     7.183000e+02 -1.597700e+02
-0 7562     2.530100e+02 5.521800e+02
-2 7562     -7.208002e+01 3.197700e+02
-4 7562     3.038000e+01 -5.264301e+02
-5 7562     6.539800e+02 -8.863000e+01
-8 7562     2.103998e+01 2.499100e+02
-9 7562     -2.149000e+02 3.490200e+02
-11 7562     3.710400e+02 -2.080500e+02
-12 7562     -4.882001e+01 6.025900e+02
-13 7562     3.877900e+02 2.293100e+02
-14 7562     5.555800e+02 -1.708300e+02
-0 7563     4.134100e+02 5.526300e+02
-9 7563     -1.019200e+02 3.550900e+02
-11 7563     5.177900e+02 -1.976700e+02
-13 7563     5.152200e+02 2.407500e+02
-14 7563     7.122700e+02 -1.611700e+02
-0 7564     5.984600e+02 5.526000e+02
-2 7564     3.505699e+02 4.643400e+02
-3 7564     2.040800e+02 1.293900e+02
-6 7564     2.708500e+02 7.371600e+02
-8 7564     3.558900e+02 3.581300e+02
-9 7564     1.507600e+02 4.884100e+02
-11 7564     6.667200e+02 -1.887300e+02
-13 7564     7.339700e+02 2.662500e+02
-0 7565     4.069301e+02 5.508800e+02
-5 7565     8.095300e+02 -8.378998e+01
-6 7565     -5.509003e+01 6.662400e+02
-8 7565     1.281000e+02 2.512800e+02
-9 7565     -1.060300e+02 3.531200e+02
-11 7565     5.116000e+02 -1.997200e+02
-12 7565     1.063200e+02 6.199900e+02
-13 7565     5.102900e+02 2.389600e+02
-14 7565     7.060800e+02 -1.633200e+02
-0 7566     -4.520600e+02 5.499900e+02
-13 7566     -1.624000e+02 1.914100e+02
-14 7566     -1.111900e+02 -1.927600e+02
-0 7567     7.322998e+01 5.498800e+02
-2 7567     -2.277600e+02 3.174800e+02
-5 7567     4.780400e+02 -9.564001e+01
-11 7567     2.103000e+02 -2.179000e+02
-0 7568     6.052300e+02 5.500000e+02
-3 7568     2.127100e+02 1.282300e+02
-6 7568     2.818000e+02 7.343400e+02
-8 7568     3.633000e+02 3.565900e+02
-9 7568     1.582800e+02 4.884100e+02
-11 7568     6.729100e+02 -1.903300e+02
-0 7569     2.234600e+02 5.491300e+02
-5 7569     6.250500e+02 -9.248999e+01
-13 7569     3.646899e+02 2.255100e+02
-14 7569     5.271400e+02 -1.750100e+02
-0 7570     5.146600e+02 5.489000e+02
-2 7570     2.624700e+02 4.318600e+02
-3 7570     1.188600e+02 9.717999e+01
-6 7570     1.669600e+02 7.102800e+02
-8 7570     2.835000e+02 3.329700e+02
-9 7570     7.478998e+01 4.578900e+02
-11 7570     5.939800e+02 -1.967100e+02
-13 7570     6.546700e+02 2.542500e+02
-0 7571     6.412500e+02 5.482000e+02
-2 7571     4.417000e+02 5.161900e+02
-3 7571     2.937100e+02 1.787200e+02
-6 7571     3.673000e+02 7.494700e+02
-8 7571     4.264800e+02 3.963200e+02
-9 7571     2.315699e+02 5.358300e+02
-11 7571     6.978400e+02 -1.908700e+02
-13 7571     7.976899e+02 2.696100e+02
-0 7572     2.549500e+02 5.435000e+02
-4 7572     2.565997e+01 -5.275000e+02
-5 7572     6.564301e+02 -9.704999e+01
-11 7572     3.737900e+02 -2.152500e+02
-0 7573     4.056100e+02 5.428200e+02
-11 7573     5.110800e+02 -2.063800e+02
-14 7573     7.052500e+02 -1.716200e+02
-0 7574     -6.458000e+02 5.401400e+02
-4 7574     7.779999e+01 -1.388000e+01
-5 7574     -2.264200e+02 -1.063200e+02
-14 7574     -3.085600e+02 -2.048900e+02
-0 7575     6.436600e+02 5.403200e+02
-2 7575     4.463400e+02 5.107000e+02
-3 7575     2.986500e+02 1.734400e+02
-6 7575     3.721200e+02 7.418600e+02
-8 7575     4.305000e+02 3.918100e+02
-9 7575     2.353700e+02 5.309400e+02
-11 7575     7.015400e+02 -1.972200e+02
-13 7575     8.014301e+02 2.639900e+02
-0 7576     5.539001e+01 5.372200e+02
-2 7576     -2.430100e+02 3.032400e+02
-6 7576     -4.238600e+02 5.820300e+02
-9 7576     -3.597800e+02 3.301300e+02
-0 7577     6.645800e+02 5.339900e+02
-6 7577     3.987300e+02 7.395000e+02
-0 7578     -3.219100e+02 5.331000e+02
-2 7578     -6.059900e+02 3.012500e+02
-5 7578     9.447998e+01 -1.155600e+02
-8 7578     -4.187000e+02 2.239400e+02
-11 7578     -1.348000e+02 -2.408800e+02
-12 7578     -6.713800e+02 5.054300e+02
-0 7579     -1.833700e+02 5.308800e+02
-13 7579     4.703003e+01 1.872800e+02
-0 7580     -1.833700e+02 5.308800e+02
-4 7580     4.501001e+01 -2.567900e+02
-5 7580     2.287700e+02 -1.176300e+02
-7 7580     -4.118800e+02 5.824700e+02
-8 7580     -3.038500e+02 2.243500e+02
-11 7580     -1.406000e+01 -2.407000e+02
-12 7580     -5.104900e+02 5.222700e+02
-13 7580     4.703003e+01 1.872800e+02
-0 7581     -1.010800e+02 5.311900e+02
-4 7581     3.935999e+01 -3.029200e+02
-0 7582     -1.100700e+02 5.291800e+02
-8 7582     -2.470900e+02 2.227000e+02
-0 7583     4.388700e+02 5.240400e+02
-2 7583     8.419000e+01 2.901100e+02
-0 7584     -4.469200e+02 5.232500e+02
-2 7584     -7.373000e+02 2.931200e+02
-4 7584     5.872998e+01 -1.146700e+02
-7 7584     -6.842700e+02 5.479900e+02
-11 7584     -2.407000e+02 -2.485700e+02
-12 7584     -8.203500e+02 4.779800e+02
-13 7584     -1.601300e+02 1.700500e+02
-0 7585     7.156300e+02 5.167400e+02
-6 7585     4.628199e+02 7.333600e+02
-8 7585     4.955601e+02 3.929000e+02
-11 7585     7.710699e+02 -2.138500e+02
-0 7586     5.634900e+02 5.163900e+02
-2 7586     3.236600e+02 4.198900e+02
-9 7586     1.282900e+02 4.490200e+02
-13 7586     7.051700e+02 2.329900e+02
-0 7587     1.662800e+02 5.156000e+02
-11 7587     2.956000e+02 -2.441200e+02
-14 7587     4.735699e+02 -2.129500e+02
-0 7588     -1.571997e+01 5.130100e+02
-5 7588     3.898199e+02 -1.354600e+02
-6 7588     -4.993100e+02 5.363400e+02
-7 7588     -2.440600e+02 5.799200e+02
-11 7588     1.319400e+02 -2.531300e+02
-12 7588     -3.236800e+02 5.224800e+02
-0 7589     -6.972400e+02 5.115600e+02
-4 7589     5.927002e+01 2.998999e+01
-5 7589     -3.454800e+02 -1.375600e+02
-11 7589     -4.374300e+02 -2.559500e+02
-13 7589     -4.185800e+02 1.391300e+02
-14 7589     -4.230300e+02 -2.388100e+02
-0 7590     -2.172998e+01 5.083900e+02
-2 7590     -3.123600e+02 2.698600e+02
-4 7590     2.132001e+01 -3.473400e+02
-6 7590     -5.052200e+02 5.278700e+02
-8 7590     -1.777800e+02 2.054000e+02
-9 7590     -4.179900e+02 2.981500e+02
-11 7590     1.273400e+02 -2.574900e+02
-0 7591     -2.172998e+01 5.083900e+02
-2 7591     -3.123600e+02 2.698600e+02
-8 7591     -1.777800e+02 2.054000e+02
-9 7591     -4.179900e+02 2.981500e+02
-0 7592     -8.727002e+01 5.054900e+02
-2 7592     -3.731300e+02 2.659000e+02
-3 7592     -5.014700e+02 -6.484003e+01
-0 7593     -1.732001e+01 5.051800e+02
-2 7593     -3.077800e+02 2.673500e+02
-4 7593     1.912000e+01 -3.499100e+02
-6 7593     -4.997600e+02 5.253400e+02
-7 7593     -2.444600e+02 5.717700e+02
-8 7593     -1.739000e+02 2.028200e+02
-9 7593     -4.139300e+02 2.953500e+02
-12 7593     -3.241100e+02 5.135100e+02
-0 7594     -3.423400e+02 5.041300e+02
-5 7594     7.187000e+01 -1.459900e+02
-8 7594     -4.348000e+02 1.961400e+02
-11 7594     -1.532200e+02 -2.653400e+02
-0 7595     5.894500e+02 5.020800e+02
-2 7595     3.550000e+02 4.159700e+02
-3 7595     2.100699e+02 8.342999e+01
-6 7595     2.750300e+02 6.765100e+02
-8 7595     3.594500e+02 3.177800e+02
-13 7595     7.316400e+02 2.241500e+02
-0 7596     4.153700e+02 4.998700e+02
-12 7596     1.199400e+02 5.573100e+02
-0 7597     4.694000e+01 4.991400e+02
-6 7597     -4.272700e+02 5.292700e+02
-8 7597     -1.250200e+02 1.980900e+02
-12 7597     -2.542900e+02 5.138100e+02
-0 7598     7.117900e+02 4.979900e+02
-2 7598     5.264500e+02 4.964600e+02
-6 7598     4.620300e+02 7.130500e+02
-9 7598     3.018000e+02 5.201400e+02
-0 7599     -6.022998e+01 4.966600e+02
-7 7599     -2.856900e+02 5.583800e+02
-11 7599     9.304999e+01 -2.685800e+02
-0 7600     6.777002e+01 4.961700e+02
-2 7600     -2.288200e+02 2.560700e+02
-3 7600     -3.623600e+02 -7.600000e+01
-4 7600     8.090027e+00 -4.010100e+02
-5 7600     4.709600e+02 -1.525100e+02
-6 7600     -4.030900e+02 5.302200e+02
-7 7600     -1.605700e+02 5.709500e+02
-8 7600     -1.085000e+02 1.958100e+02
-9 7600     -3.457200e+02 2.888100e+02
-11 7600     2.082800e+02 -2.645700e+02
-12 7600     -2.311300e+02 5.131300e+02
-13 7600     2.435100e+02 1.705200e+02
-14 7600     3.789100e+02 -2.373000e+02
-0 7601     7.663199e+02 4.931800e+02
-2 7601     5.803300e+02 5.103100e+02
-3 7601     4.240400e+02 1.751200e+02
-6 7601     5.263101e+02 7.208000e+02
-8 7601     5.411801e+02 3.899800e+02
-9 7601     3.492200e+02 5.336700e+02
-0 7602     4.917999e+01 4.920200e+02
-4 7602     6.940002e+00 -3.892300e+02
-6 7602     -4.228000e+02 5.208500e+02
-7 7602     -1.781200e+02 5.647900e+02
-9 7602     -3.596500e+02 2.838600e+02
-11 7602     1.913400e+02 -2.694900e+02
-12 7602     -2.504100e+02 5.061600e+02
-0 7603     6.000300e+02 4.921300e+02
-2 7603     3.690000e+02 4.104900e+02
-3 7603     2.228400e+02 7.845001e+01
-6 7603     2.903000e+02 6.687100e+02
-8 7603     3.704800e+02 3.136400e+02
-9 7603     1.678800e+02 4.422900e+02
-13 7603     7.433600e+02 2.170500e+02
-0 7604     -4.927002e+01 4.908900e+02
-2 7604     -3.367100e+02 2.500000e+02
-4 7604     1.217999e+01 -3.295300e+02
-5 7604     3.558700e+02 -1.595500e+02
-6 7604     -5.328400e+02 4.990800e+02
-7 7604     -2.741200e+02 5.537200e+02
-8 7604     -1.971000e+02 1.873400e+02
-12 7604     -3.556600e+02 4.890200e+02
-13 7604     1.513199e+02 1.598300e+02
-14 7604     2.659500e+02 -2.465100e+02
-0 7605     -4.927002e+01 4.908900e+02
-2 7605     -3.367100e+02 2.500000e+02
-4 7605     1.217999e+01 -3.295300e+02
-5 7605     3.558700e+02 -1.595500e+02
-6 7605     -5.328400e+02 4.990800e+02
-7 7605     -2.741200e+02 5.537200e+02
-11 7605     1.034700e+02 -2.732600e+02
-12 7605     -3.556600e+02 4.890200e+02
-13 7605     1.513199e+02 1.598300e+02
-14 7605     2.659500e+02 -2.465100e+02
-0 7606     6.611899e+02 4.883900e+02
-3 7606     3.292500e+02 1.377800e+02
-6 7606     4.058300e+02 6.902800e+02
-9 7606     2.625500e+02 4.977200e+02
-0 7607     7.696700e+02 4.879200e+02
-2 7607     5.839500e+02 5.068500e+02
-3 7607     4.277800e+02 1.716800e+02
-6 7607     5.306300e+02 7.161900e+02
-8 7607     5.449500e+02 3.866800e+02
-9 7607     3.523101e+02 5.303600e+02
-0 7608     7.108700e+02 4.876600e+02
-2 7608     5.268199e+02 4.871300e+02
-3 7608     3.752700e+02 1.534700e+02
-6 7608     4.637800e+02 7.013900e+02
-8 7608     4.976801e+02 3.711200e+02
-9 7608     3.039800e+02 5.122300e+02
-13 7608     8.714700e+02 2.289300e+02
-0 7609     2.085400e+02 4.865000e+02
-7 7609     -2.427002e+01 5.763100e+02
-8 7609     -3.789978e+00 1.917500e+02
-11 7609     3.370699e+02 -2.671600e+02
-14 7609     5.166300e+02 -2.405200e+02
-0 7610     2.796700e+02 4.858900e+02
-14 7610     5.869100e+02 -2.382600e+02
-0 7611     7.839500e+02 4.843700e+02
-6 7611     5.471000e+02 7.151600e+02
-8 7611     5.569100e+02 3.873000e+02
-9 7611     3.645400e+02 5.319900e+02
-0 7612     1.183002e+01 4.838900e+02
-4 7612     4.330017e+00 -3.653800e+02
-5 7612     4.153900e+02 -1.667900e+02
-6 7612     -4.632700e+02 5.019000e+02
-7 7612     -2.135700e+02 5.522600e+02
-8 7612     -1.500200e+02 1.832800e+02
-9 7612     -3.882900e+02 2.740400e+02
-11 7612     1.578100e+02 -2.775300e+02
-12 7612     -2.890600e+02 4.897600e+02
-13 7612     1.995900e+02 1.570300e+02
-0 7613     -3.790997e+01 4.827600e+02
-4 7613     7.239990e+00 -3.357800e+02
-6 7613     -5.185400e+02 4.906500e+02
-7 7613     -2.616700e+02 5.458600e+02
-11 7613     1.139400e+02 -2.797100e+02
-12 7613     -3.423700e+02 4.810900e+02
-0 7614     3.669000e+02 4.830000e+02
-2 7614     3.385999e+01 2.467500e+02
-9 7614     -1.227700e+02 2.892600e+02
-11 7614     4.836700e+02 -2.611600e+02
-14 7614     6.741500e+02 -2.360700e+02
-0 7615     7.738101e+02 4.830400e+02
-2 7615     5.887700e+02 5.032300e+02
-3 7615     4.321700e+02 1.688300e+02
-6 7615     5.360100e+02 7.118500e+02
-8 7615     5.492600e+02 3.838700e+02
-9 7615     3.563900e+02 5.275700e+02
-0 7616     8.051300e+02 4.825900e+02
-3 7616     4.622600e+02 1.810000e+02
-6 7616     5.734900e+02 7.196500e+02
-8 7616     5.768000e+02 3.940900e+02
-9 7616     3.858500e+02 5.390100e+02
-0 7617     7.922200e+02 4.801700e+02
-2 7617     6.087400e+02 5.071900e+02
-3 7617     4.505699e+02 1.726800e+02
-6 7617     5.591200e+02 7.122800e+02
-8 7617     5.660500e+02 3.863600e+02
-9 7617     3.733600e+02 5.310800e+02
-0 7618     8.096100e+02 4.793000e+02
-2 7618     6.266600e+02 5.149800e+02
-3 7618     4.669000e+02 1.797200e+02
-0 7619     8.096100e+02 4.793000e+02
-2 7619     6.266600e+02 5.149800e+02
-3 7619     4.669000e+02 1.797200e+02
-0 7620     7.497500e+02 4.778700e+02
-3 7620     4.125900e+02 1.574900e+02
-0 7621     8.026801e+02 4.728100e+02
-2 7621     6.193000e+02 5.048300e+02
-3 7621     4.606100e+02 1.705300e+02
-6 7621     5.713500e+02 7.090400e+02
-8 7621     5.747800e+02 3.851300e+02
-9 7621     3.820699e+02 5.296400e+02
-0 7622     5.621600e+02 4.719000e+02
-2 7622     3.320100e+02 3.775600e+02
-6 7622     2.478600e+02 6.364200e+02
-13 7622     7.077200e+02 1.960800e+02
-0 7623     8.077600e+02 4.721100e+02
-2 7623     6.244200e+02 5.058600e+02
-3 7623     4.656100e+02 1.715300e+02
-6 7623     5.772000e+02 7.086100e+02
-8 7623     5.794600e+02 3.854200e+02
-9 7623     3.868000e+02 5.303900e+02
-0 7624     -4.282500e+02 4.692300e+02
-2 7624     -7.185300e+02 2.245500e+02
-4 7624     2.812000e+01 -1.177900e+02
-5 7624     -1.590997e+01 -1.805600e+02
-7 7624     -6.566600e+02 4.904800e+02
-8 7624     -5.090700e+02 1.616600e+02
-12 7624     -7.882100e+02 4.110400e+02
-0 7625     8.322100e+02 4.688500e+02
-3 7625     4.887100e+02 1.785300e+02
-0 7626     3.283900e+02 4.677800e+02
-3 7626     -1.417200e+02 -1.035700e+02
-5 7626     7.332900e+02 -1.754500e+02
-6 7626     -1.192600e+02 5.482100e+02
-7 7626     8.988000e+01 5.683900e+02
-8 7626     8.339001e+01 1.783800e+02
-9 7626     -1.482700e+02 2.728000e+02
-11 7626     4.490900e+02 -2.773700e+02
-12 7626     4.423999e+01 5.172000e+02
-13 7626     4.513700e+02 1.627300e+02
-14 7626     6.362700e+02 -2.545700e+02
-0 7627     7.575200e+02 4.665200e+02
-3 7627     4.229600e+02 1.511300e+02
-6 7627     5.223000e+02 6.906500e+02
-0 7628     8.393900e+02 4.653700e+02
-2 7628     6.578900e+02 5.126000e+02
-3 7628     4.958199e+02 1.779400e+02
-0 7629     7.674100e+02 4.650700e+02
-9 7629     3.550601e+02 5.128900e+02
-0 7630     8.251200e+02 4.646500e+02
-2 7630     6.427800e+02 5.048900e+02
-3 7630     4.818300e+02 1.711000e+02
-8 7630     5.949301e+02 3.840700e+02
-9 7630     4.021700e+02 5.293700e+02
-0 7631     6.357600e+02 4.641200e+02
-3 7631     3.110300e+02 1.094600e+02
-6 7631     3.805600e+02 6.580600e+02
-11 7631     7.097200e+02 -2.637500e+02
-0 7632     8.359500e+02 4.621700e+02
-2 7632     6.540000e+02 5.076000e+02
-3 7632     4.920900e+02 1.736000e+02
-9 7632     4.104900e+02 5.320600e+02
-0 7633     -5.563800e+02 4.613300e+02
-5 7633     -1.407900e+02 -1.863600e+02
-7 7633     -7.926700e+02 4.680900e+02
-11 7633     -3.365400e+02 -2.998200e+02
-13 7633     -2.501800e+02 1.131100e+02
-14 7633     -2.232700e+02 -2.827600e+02
-0 7634     7.760000e+02 4.561600e+02
-3 7634     4.413101e+02 1.493900e+02
-6 7634     5.438800e+02 6.846900e+02
-0 7635     5.146200e+02 4.552600e+02
-12 7635     3.003900e+02 5.917300e+02
-0 7636     8.235500e+02 4.549900e+02
-2 7636     6.423500e+02 4.960400e+02
-8 7636     5.941600e+02 3.772400e+02
-9 7636     4.016801e+02 5.220100e+02
-0 7637     5.067000e+02 4.550300e+02
-2 7637     2.755900e+02 3.422800e+02
-3 7637     1.337800e+02 1.204999e+01
-6 7637     1.814600e+02 6.019300e+02
-8 7637     2.943800e+02 2.596500e+02
-9 7637     8.882001e+01 3.805400e+02
-12 7637     2.913300e+02 5.884000e+02
-13 7637     6.566400e+02 1.765600e+02
-0 7638     5.067000e+02 4.550300e+02
-6 7638     1.814600e+02 6.019300e+02
-13 7638     6.566400e+02 1.765600e+02
-0 7639     5.067000e+02 4.550300e+02
-2 7639     2.755900e+02 3.422800e+02
-3 7639     1.337800e+02 1.204999e+01
-8 7639     2.943800e+02 2.596500e+02
-9 7639     8.882001e+01 3.805400e+02
-12 7639     2.913300e+02 5.884000e+02
-13 7639     6.566400e+02 1.765600e+02
-0 7640     -6.754300e+02 4.519100e+02
-5 7640     -3.334300e+02 -1.995700e+02
-0 7641     8.625400e+02 4.509000e+02
-3 7641     5.171899e+02 1.728000e+02
-0 7642     9.400024e+00 4.490800e+02
-2 7642     -2.785300e+02 1.987700e+02
-3 7642     -4.113700e+02 -1.327300e+02
-4 7642     -1.596002e+01 -3.611600e+02
-5 7642     4.119500e+02 -2.042900e+02
-9 7642     -3.854900e+02 2.367800e+02
-12 7642     -2.853000e+02 4.472700e+02
-13 7642     1.980100e+02 1.268800e+02
-0 7643     -3.024600e+02 4.478400e+02
-2 7643     -5.848600e+02 1.986200e+02
-7 7643     -5.227100e+02 4.818200e+02
-11 7643     -1.202400e+02 -3.125800e+02
-12 7643     -6.343200e+02 4.028900e+02
-0 7644     8.592500e+02 4.477400e+02
-2 7644     6.786899e+02 5.017900e+02
-3 7644     5.151400e+02 1.684300e+02
-9 7644     4.309700e+02 5.280300e+02
-0 7645     8.679200e+02 4.482100e+02
-2 7645     6.866200e+02 5.053900e+02
-3 7645     5.213300e+02 1.718300e+02
-0 7646     -3.152300e+02 4.447300e+02
-5 7646     9.334998e+01 -2.083000e+02
-12 7646     -6.468500e+02 3.971000e+02
-0 7647     5.311600e+02 4.444500e+02
-6 7647     2.149100e+02 5.950400e+02
-11 7647     6.265300e+02 -2.886900e+02
-12 7647     3.220699e+02 5.835200e+02
-0 7648     8.491500e+02 4.424900e+02
-2 7648     6.693300e+02 4.935700e+02
-0 7649     8.789301e+02 4.393000e+02
-2 7649     6.982400e+02 5.012000e+02
-3 7649     5.323700e+02 1.681200e+02
-9 7649     4.479500e+02 5.274200e+02
-0 7650     4.848000e+02 4.383100e+02
-2 7650     2.536300e+02 3.174600e+02
-3 7650     1.132200e+02 -1.228003e+01
-0 7651     6.210022e+00 4.377900e+02
-2 7651     -2.792300e+02 1.893500e+02
-4 7651     -2.157001e+01 -3.590300e+02
-6 7651     -4.596400e+02 4.421400e+02
-0 7652     6.901899e+02 4.369100e+02
-3 7652     3.701200e+02 1.065400e+02
-6 7652     4.519301e+02 6.431500e+02
-8 7652     4.895601e+02 3.296400e+02
-9 7652     2.986500e+02 4.688200e+02
-11 7652     7.670900e+02 -2.862100e+02
-0 7653     -3.972000e+02 4.340500e+02
-4 7653     7.320007e+00 -1.306200e+02
-7 7653     -6.185900e+02 4.571900e+02
-8 7653     -4.803400e+02 1.291000e+02
-11 7653     -2.031500e+02 -3.237600e+02
-0 7654     5.063700e+02 4.338400e+02
-6 7654     1.866500e+02 5.773000e+02
-7 7654     2.887800e+02 5.753100e+02
-8 7654     2.966100e+02 2.434200e+02
-9 7654     9.345001e+01 3.634400e+02
-11 7654     6.074399e+02 -2.996500e+02
-12 7654     2.961100e+02 5.657200e+02
-13 7654     6.587100e+02 1.591500e+02
-0 7655     5.063700e+02 4.338400e+02
-2 7655     2.800699e+02 3.219100e+02
-3 7655     1.386600e+02 -7.169983e+00
-6 7655     1.866500e+02 5.773000e+02
-7 7655     2.887800e+02 5.753100e+02
-8 7655     2.966100e+02 2.434200e+02
-9 7655     9.345001e+01 3.634400e+02
-11 7655     6.074399e+02 -2.996500e+02
-12 7655     2.961100e+02 5.657200e+02
-13 7655     6.587100e+02 1.591500e+02
-0 7656     -1.053900e+02 4.330800e+02
-2 7656     -3.854500e+02 1.807000e+02
-3 7656     -5.158700e+02 -1.499700e+02
-4 7656     -1.613000e+01 -2.921300e+02
-8 7656     -2.368700e+02 1.344300e+02
-11 7656     5.363000e+01 -3.252900e+02
-12 7656     -4.067400e+02 4.145400e+02
-13 7656     1.076000e+02 1.075000e+02
-14 7656     2.113500e+02 -3.082100e+02
-0 7657     -1.407800e+02 4.326900e+02
-5 7657     2.622600e+02 -2.226500e+02
-7 7657     -3.569400e+02 4.827900e+02
-0 7658     5.117100e+02 4.305900e+02
-6 7658     1.935100e+02 5.748700e+02
-7 7658     2.940100e+02 5.728900e+02
-12 7658     3.025100e+02 5.634100e+02
-13 7658     6.637300e+02 1.569300e+02
-0 7659     6.260200e+02 4.304500e+02
-6 7659     3.777800e+02 6.191400e+02
-0 7660     6.260200e+02 4.304500e+02
-6 7660     3.777800e+02 6.191400e+02
-8 7660     4.369500e+02 3.070400e+02
-9 7660     2.446700e+02 4.427200e+02
-11 7660     7.092100e+02 -2.958000e+02
-0 7661     -2.103300e+02 4.291300e+02
-2 7661     -4.893500e+02 1.744100e+02
-7 7661     -4.260700e+02 4.716300e+02
-11 7661     -3.926001e+01 -3.295000e+02
-0 7662     4.749600e+02 4.284900e+02
-2 7662     2.453700e+02 3.040700e+02
-3 7662     1.049600e+02 -2.507001e+01
-6 7662     1.458800e+02 5.627400e+02
-7 7662     2.577800e+02 5.646900e+02
-8 7662     2.702700e+02 2.290900e+02
-9 7662     6.371997e+01 3.474200e+02
-13 7662     6.276200e+02 1.509000e+02
-14 7662     8.586300e+02 -2.754800e+02
-0 7663     5.365300e+02 4.279900e+02
-7 7663     3.193700e+02 5.747400e+02
-9 7663     1.235800e+02 3.692500e+02
-11 7663     6.347600e+02 -3.022600e+02
-0 7664     6.286200e+02 4.268400e+02
-2 7664     4.593800e+02 4.056000e+02
-3 7664     3.139900e+02 7.642999e+01
-8 7664     4.403000e+02 3.045900e+02
-9 7664     2.481100e+02 4.408000e+02
-11 7664     7.121899e+02 -2.990400e+02
-12 7664     4.663300e+02 6.207400e+02
-13 7664     8.003800e+02 1.712600e+02
-0 7665     -2.249000e+02 4.260200e+02
-2 7665     -5.042000e+02 1.702600e+02
-5 7665     1.790200e+02 -2.284700e+02
-7 7665     -4.403800e+02 4.673200e+02
-8 7665     -3.339300e+02 1.239300e+02
-11 7665     -5.213000e+01 -3.314800e+02
-12 7665     -5.411200e+02 3.880400e+02
-13 7665     1.248999e+01 9.545999e+01
-0 7666     6.238800e+02 4.233600e+02
-6 7666     3.757700e+02 6.113300e+02
-0 7667     1.966100e+02 4.227700e+02
-2 7667     -1.048300e+02 1.737700e+02
-3 7667     -2.446700e+02 -1.579500e+02
-7 7667     -2.778998e+01 5.091900e+02
-11 7667     3.315000e+02 -3.248800e+02
-0 7668     6.357300e+02 4.208800e+02
-2 7668     4.679800e+02 4.032900e+02
-3 7668     3.223900e+02 7.427002e+01
-6 7668     3.913400e+02 6.115100e+02
-8 7668     4.471899e+02 3.024900e+02
-9 7668     2.555100e+02 4.388200e+02
-11 7668     7.202200e+02 -3.039100e+02
-12 7668     4.754800e+02 6.180400e+02
-13 7668     8.079500e+02 1.674600e+02
-0 7669     7.035601e+02 4.200800e+02
-6 7669     4.718700e+02 6.298700e+02
-9 7669     3.143600e+02 4.610600e+02
-0 7670     6.692700e+02 4.178500e+02
-2 7670     5.042000e+02 4.126700e+02
-3 7670     3.562800e+02 8.441998e+01
-6 7670     4.326200e+02 6.181000e+02
-8 7670     4.765900e+02 3.100400e+02
-9 7670     2.858700e+02 4.481700e+02
-0 7671     1.030500e+02 4.150000e+02
-2 7671     -1.890100e+02 1.628700e+02
-7 7671     -1.164800e+02 4.915500e+02
-0 7672     -4.865700e+02 4.095600e+02
-5 7672     -8.095001e+01 -2.421200e+02
-8 7672     -5.611500e+02 1.017100e+02
-10 7672     -7.286000e+02 5.868800e+02
-0 7673     -4.948800e+02 4.077200e+02
-5 7673     -8.909998e+01 -2.436100e+02
-8 7673     -5.677200e+02 9.976001e+01
-13 7673     -2.036700e+02 6.942999e+01
-14 7673     -1.713300e+02 -3.382700e+02
-0 7674     6.809600e+02 4.072700e+02
-3 7674     3.696801e+02 7.934998e+01
-6 7674     4.488600e+02 6.095900e+02
-7 7674     4.764700e+02 5.872600e+02
-8 7674     4.881400e+02 3.053700e+02
-0 7675     -3.266300e+02 4.056200e+02
-5 7675     7.625000e+01 -2.496600e+02
-10 7675     -5.265800e+02 5.957800e+02
-0 7676     8.710601e+02 4.042900e+02
-3 7676     5.362700e+02 1.399900e+02
-0 7677     -5.387800e+02 3.989800e+02
-4 7677     -6.300049e-01 -5.346997e+01
-0 7678     5.238600e+02 3.963900e+02
-2 7678     3.092500e+02 2.929100e+02
-3 7678     1.674800e+02 -3.440002e+01
-7 7678     3.110300e+02 5.417500e+02
-8 7678     3.209200e+02 2.192200e+02
-9 7678     1.192500e+02 3.392400e+02
-11 7678     6.291500e+02 -3.324200e+02
-12 7678     3.253400e+02 5.306700e+02
-13 7678     6.794301e+02 1.297400e+02
-0 7679     1.941998e+01 3.940300e+02
-2 7679     -2.641800e+02 1.365500e+02
-4 7679     -4.978003e+01 -3.629900e+02
-6 7679     -4.372600e+02 3.867200e+02
-7 7679     -1.944000e+02 4.609000e+02
-9 7679     -3.704300e+02 1.828800e+02
-10 7679     -1.120300e+02 6.104900e+02
-11 7679     1.696400e+02 -3.569400e+02
-13 7679     2.064000e+02 7.978000e+01
-0 7680     -2.596000e+02 3.922800e+02
-2 7680     -5.378300e+02 1.290500e+02
-4 7680     -2.745001e+01 -2.005200e+02
-5 7680     1.420400e+02 -2.652600e+02
-11 7680     -8.353003e+01 -3.619000e+02
-12 7680     -5.747200e+02 3.405300e+02
-13 7680     -1.559998e+01 6.490002e+01
-14 7680     5.808002e+01 -3.551100e+02
-0 7681     5.290400e+02 3.925200e+02
-3 7681     1.737200e+02 -3.576001e+01
-7 7681     3.167300e+02 5.389100e+02
-8 7681     3.260800e+02 2.175100e+02
-11 7681     6.341600e+02 -3.356400e+02
-0 7682     7.749399e+02 3.926100e+02
-2 7682     6.140800e+02 4.278800e+02
-7 7682     5.688000e+02 5.881100e+02
-9 7682     3.784301e+02 4.633200e+02
-0 7683     7.947900e+02 3.917100e+02
-2 7683     6.332200e+02 4.337100e+02
-6 7683     5.815900e+02 6.239400e+02
-9 7683     3.949399e+02 4.690900e+02
-0 7684     -5.629800e+02 3.885400e+02
-4 7684     -4.869995e+00 -3.937000e+01
-5 7684     -1.588400e+02 -2.633300e+02
-10 7684     -8.217700e+02 5.544200e+02
-11 7684     -3.487800e+02 -3.616500e+02
-0 7685     -5.629800e+02 3.885400e+02
-4 7685     -4.869995e+00 -3.937000e+01
-5 7685     -1.588400e+02 -2.633300e+02
-10 7685     -8.217700e+02 5.544200e+02
-0 7686     6.728300e+02 3.877800e+02
-6 7686     4.439301e+02 5.864300e+02
-7 7686     4.712400e+02 5.672700e+02
-8 7686     4.850900e+02 2.885000e+02
-11 7686     7.629800e+02 -3.329200e+02
-0 7687     3.317999e+01 3.868000e+02
-2 7687     -2.501300e+02 1.272200e+02
-5 7687     4.336899e+02 -2.715500e+02
-6 7687     -4.202700e+02 3.808700e+02
-7 7687     -1.802200e+02 4.551700e+02
-10 7687     -9.527002e+01 6.040700e+02
-11 7687     1.825000e+02 -3.625000e+02
-12 7687     -2.482500e+02 3.788000e+02
-13 7687     2.174800e+02 7.407001e+01
-14 7687     3.462900e+02 -3.556600e+02
-0 7688     4.308199e+02 3.867300e+02
-12 7688     1.792500e+02 4.553900e+02
-13 7688     5.542500e+02 1.038600e+02
-14 7688     7.684600e+02 -3.319200e+02
-0 7689     -6.978998e+01 3.836600e+02
-11 7689     8.773999e+01 -3.688600e+02
-12 7689     -3.557300e+02 3.705200e+02
-0 7690     1.003998e+01 3.830600e+02
-2 7690     -2.715300e+02 1.229300e+02
-6 7690     -4.455700e+02 3.704800e+02
-7 7690     -2.019700e+02 4.486000e+02
-11 7690     1.616100e+02 -3.672100e+02
-13 7690     1.993800e+02 7.026001e+01
-0 7691     5.421200e+02 3.833000e+02
-2 7691     3.336200e+02 2.877100e+02
-3 7691     1.912500e+02 -3.866998e+01
-6 7691     2.461400e+02 5.306300e+02
-7 7691     3.311300e+02 5.322000e+02
-8 7691     3.403400e+02 2.143400e+02
-9 7691     1.394600e+02 3.359700e+02
-11 7691     6.488000e+02 -3.436000e+02
-13 7691     6.993000e+02 1.208100e+02
-0 7692     -5.346100e+02 3.821800e+02
-5 7692     -1.321400e+02 -2.699100e+02
-13 7692     -2.370000e+02 4.542999e+01
-0 7693     -5.346100e+02 3.821800e+02
-5 7693     -1.321400e+02 -2.699100e+02
-11 7693     -3.260900e+02 -3.671000e+02
-13 7693     -2.370000e+02 4.542999e+01
-14 7693     -2.143600e+02 -3.657200e+02
-0 7694     -7.136500e+02 3.815100e+02
-13 7694     -4.489000e+02 2.598999e+01
-0 7695     3.038000e+01 3.812700e+02
-5 7695     4.307700e+02 -2.773500e+02
-7 7695     -1.823300e+02 4.489200e+02
-11 7695     1.802900e+02 -3.683300e+02
-13 7695     2.153199e+02 6.945001e+01
-14 7695     3.435000e+02 -3.612200e+02
-0 7696     -2.047600e+02 3.808100e+02
-2 7696     -4.815600e+02 1.150400e+02
-4 7696     -3.833002e+01 -2.299300e+02
-7 7696     -4.140900e+02 4.218000e+02
-10 7696     -3.782100e+02 5.746600e+02
-13 7696     2.823999e+01 5.751001e+01
-14 7696     1.114600e+02 -3.667200e+02
-0 7697     5.490601e+02 3.795600e+02
-2 7697     3.416100e+02 2.870200e+02
-3 7697     1.988600e+02 -3.917999e+01
-7 7697     3.385000e+02 5.295600e+02
-8 7697     3.468100e+02 2.134300e+02
-9 7697     1.473000e+02 3.354300e+02
-11 7697     6.555800e+02 -3.465900e+02
-12 7697     3.589800e+02 5.212000e+02
-13 7697     7.060699e+02 1.185700e+02
-0 7698     6.627400e+02 3.796600e+02
-6 7698     4.337200e+02 5.748400e+02
-8 7698     4.785100e+02 2.792000e+02
-9 7698     2.892200e+02 4.167000e+02
-0 7699     4.744900e+02 3.788100e+02
-7 7699     2.637000e+02 5.161400e+02
-11 7699     5.863800e+02 -3.506600e+02
-0 7700     6.110400e+02 3.783200e+02
-2 7700     4.539399e+02 3.550600e+02
-3 7700     3.091500e+02 2.872998e+01
-6 7700     3.718200e+02 5.583400e+02
-7 7700     4.115300e+02 5.475700e+02
-8 7700     4.341300e+02 2.633300e+02
-9 7700     2.433800e+02 3.973400e+02
-12 7700     4.572100e+02 5.643200e+02
-13 7700     7.894600e+02 1.296100e+02
-0 7701     6.110400e+02 3.783200e+02
-2 7701     4.539399e+02 3.550600e+02
-3 7701     3.091500e+02 2.872998e+01
-6 7701     3.718200e+02 5.583400e+02
-7 7701     4.115300e+02 5.475700e+02
-8 7701     4.341300e+02 2.633300e+02
-9 7701     2.433800e+02 3.973400e+02
-11 7701     7.062600e+02 -3.451100e+02
-12 7701     4.572100e+02 5.643200e+02
-13 7701     7.894600e+02 1.296100e+02
-0 7702     5.259100e+02 3.768000e+02
-2 7702     3.160000e+02 2.711500e+02
-6 7702     2.256900e+02 5.151300e+02
-8 7702     3.262200e+02 2.013900e+02
-12 7702     3.322900e+02 5.065500e+02
-0 7703     1.787000e+01 3.753900e+02
-7 7703     -1.934200e+02 4.419200e+02
-9 7703     -3.690000e+02 1.633900e+02
-10 7703     -1.121100e+02 5.891400e+02
-11 7703     1.695100e+02 -3.734500e+02
-13 7703     2.055400e+02 6.360999e+01
-14 7703     3.312500e+02 -3.684800e+02
-0 7704     5.557400e+02 3.745500e+02
-2 7704     3.501801e+02 2.849500e+02
-7 7704     3.457800e+02 5.258600e+02
-8 7704     3.532600e+02 2.118900e+02
-9 7704     1.548101e+02 3.338000e+02
-11 7704     6.626300e+02 -3.508800e+02
-12 7704     3.671600e+02 5.187100e+02
-13 7704     7.128600e+02 1.154000e+02
-0 7705     3.117999e+01 3.723800e+02
-2 7705     -2.513800e+02 1.109300e+02
-7 7705     -1.804700e+02 4.399800e+02
-8 7705     -1.271000e+02 8.075000e+01
-10 7705     -9.619000e+01 5.862700e+02
-11 7705     1.814500e+02 -3.762600e+02
-12 7705     -2.479000e+02 3.613600e+02
-13 7705     2.157500e+02 6.189001e+01
-14 7705     3.440699e+02 -3.707800e+02
-0 7706     1.000000e+00 3.715200e+02
-2 7706     -2.795800e+02 1.081300e+02
-7 7706     -2.096600e+02 4.356500e+02
-9 7706     -3.824600e+02 1.580100e+02
-10 7706     -1.320200e+02 5.820600e+02
-11 7706     1.539500e+02 -3.777400e+02
-13 7706     1.919000e+02 5.938000e+01
-14 7706     3.139800e+02 -3.727600e+02
-0 7707     6.825300e+02 3.711000e+02
-2 7707     5.297800e+02 3.761600e+02
-9 7707     3.082300e+02 4.177400e+02
-13 7707     8.598400e+02 1.323000e+02
-0 7708     7.213600e+02 3.694800e+02
-3 7708     4.190200e+02 6.177002e+01
-7 7708     5.204900e+02 5.590100e+02
-9 7708     3.411100e+02 4.301800e+02
-12 7708     5.910400e+02 5.858900e+02
-0 7709     7.848199e+02 3.671900e+02
-2 7709     6.304800e+02 4.092700e+02
-9 7709     3.930800e+02 4.486000e+02
-12 7709     6.562000e+02 6.101700e+02
-0 7710     7.848199e+02 3.671900e+02
-2 7710     6.304800e+02 4.092700e+02
-9 7710     3.930800e+02 4.486000e+02
-0 7711     4.010010e+00 3.661200e+02
-2 7711     -2.759500e+02 1.024000e+02
-4 7711     -6.485999e+01 -3.508400e+02
-6 7711     -4.491800e+02 3.468400e+02
-7 7711     -2.059100e+02 4.307200e+02
-9 7711     -3.791400e+02 1.529600e+02
-10 7711     -1.272100e+02 5.763300e+02
-11 7711     1.565800e+02 -3.829100e+02
-12 7711     -2.759700e+02 3.495500e+02
-13 7711     1.947900e+02 5.501001e+01
-14 7711     3.175699e+02 -3.783700e+02
-0 7712     -2.122900e+02 3.634200e+02
-4 7712     -4.785999e+01 -2.236300e+02
-7 7712     -4.191700e+02 4.027500e+02
-11 7712     -4.184998e+01 -3.875800e+02
-0 7713     -2.015200e+02 3.631100e+02
-2 7713     -4.770300e+02 9.310999e+01
-7 7713     -4.082500e+02 4.038000e+02
-8 7713     -3.117900e+02 6.406000e+01
-10 7713     -3.714500e+02 5.525300e+02
-13 7713     3.041998e+01 4.213000e+01
-0 7714     -2.015200e+02 3.631100e+02
-7 7714     -4.082500e+02 4.038000e+02
-8 7714     -3.117900e+02 6.406000e+01
-10 7714     -3.714500e+02 5.525300e+02
-0 7715     -7.061300e+02 3.586600e+02
-5 7715     -3.842100e+02 -2.971500e+02
-13 7715     -4.374400e+02 7.390015e+00
-14 7715     -4.631300e+02 -3.987200e+02
-0 7716     -3.971400e+02 3.590800e+02
-2 7716     -6.835600e+02 8.428998e+01
-7 7716     -6.078700e+02 3.763000e+02
-10 7716     -6.091700e+02 5.311200e+02
-13 7716     -1.269600e+02 3.054999e+01
-14 7716     -8.064001e+01 -3.913300e+02
-15 7716     -6.175700e+02 5.771300e+02
-0 7717     -1.626900e+02 3.575600e+02
-2 7717     -4.389700e+02 8.664001e+01
-7 7717     -3.687100e+02 4.026300e+02
-11 7717     3.530029e+00 -3.927700e+02
-14 7717     1.513400e+02 -3.917100e+02
-0 7718     -1.626900e+02 3.575600e+02
-2 7718     -4.389700e+02 8.664001e+01
-5 7718     2.349900e+02 -3.040600e+02
-14 7718     1.513400e+02 -3.917100e+02
-0 7719     -3.451400e+02 3.563700e+02
-2 7719     -6.262200e+02 8.208002e+01
-5 7719     5.278998e+01 -3.025900e+02
-7 7719     -5.534500e+02 3.797000e+02
-8 7719     -4.338300e+02 5.195999e+01
-10 7719     -5.455000e+02 5.320200e+02
-11 7719     -1.612800e+02 -3.931900e+02
-12 7719     -6.683800e+02 2.819700e+02
-15 7719     -5.437700e+02 5.800600e+02
-0 7720     -2.104900e+02 3.535100e+02
-5 7720     1.871900e+02 -3.079000e+02
-7 7720     -4.156900e+02 3.924300e+02
-8 7720     -3.185200e+02 5.392999e+01
-10 7720     -3.809000e+02 5.409400e+02
-0 7721     -4.392300e+02 3.478500e+02
-4 7721     -3.698999e+01 -9.794000e+01
-10 7721     -6.624600e+02 5.123500e+02
-15 7721     -6.771400e+02 5.536500e+02
-0 7722     5.860601e+02 3.481500e+02
-2 7722     4.329000e+02 3.165000e+02
-3 7722     2.913000e+02 -7.719971e+00
-6 7722     3.482800e+02 5.177100e+02
-7 7722     3.910200e+02 5.138900e+02
-8 7722     4.179800e+02 2.320900e+02
-9 7722     2.277900e+02 3.639200e+02
-12 7722     4.349200e+02 5.232000e+02
-13 7722     7.668400e+02 1.016900e+02
-0 7723     -4.014300e+02 3.474300e+02
-5 7723     -5.010010e+00 -3.112500e+02
-7 7723     -6.103300e+02 3.635100e+02
-11 7723     -2.117100e+02 -4.000200e+02
-14 7723     -8.634003e+01 -4.038800e+02
-0 7724     -1.202800e+02 3.416400e+02
-2 7724     -3.948700e+02 6.725000e+01
-7 7724     -3.247700e+02 3.905100e+02
-8 7724     -2.441100e+02 4.531000e+01
-9 7724     -4.789400e+02 1.187700e+02
-11 7724     4.264001e+01 -4.071100e+02
-13 7724     9.485999e+01 2.670001e+01
-0 7725     -2.999600e+02 3.409600e+02
-2 7725     -5.784200e+02 6.215002e+01
-4 7725     -5.306000e+01 -1.728800e+02
-15 7725     -4.777700e+02 5.644500e+02
-0 7726     8.128101e+02 3.398900e+02
-3 7726     5.084800e+02 7.107001e+01
-7 7726     6.117500e+02 5.441400e+02
-9 7726     4.218300e+02 4.379300e+02
-0 7727     -5.561600e+02 3.396700e+02
-5 7727     -1.602200e+02 -3.156900e+02
-7 7727     -7.738400e+02 3.359300e+02
-11 7727     -3.481400e+02 -4.040000e+02
-15 7727     -8.379600e+02 5.293800e+02
-0 7728     -5.627800e+02 3.374100e+02
-4 7728     -3.177002e+01 -3.290997e+01
-5 7728     -1.675600e+02 -3.173700e+02
-7 7728     -7.805900e+02 3.330000e+02
-10 7728     -8.130800e+02 4.915400e+02
-13 7728     -2.621700e+02 5.500000e+00
-14 7728     -2.489600e+02 -4.141100e+02
-15 7728     -8.468900e+02 5.253200e+02
-0 7729     6.169000e+02 3.376200e+02
-2 7729     4.692900e+02 3.195900e+02
-3 7729     3.263101e+02 -4.599976e+00
-6 7729     3.886500e+02 5.159600e+02
-7 7729     4.228700e+02 5.093500e+02
-9 7729     2.584500e+02 3.675700e+02
-10 7729     5.986500e+02 6.056000e+02
-11 7729     7.213500e+02 -3.835400e+02
-12 7729     4.730400e+02 5.230100e+02
-13 7729     7.992000e+02 9.645999e+01
-0 7730     6.169000e+02 3.376200e+02
-3 7730     3.263101e+02 -4.599976e+00
-6 7730     3.886500e+02 5.159600e+02
-7 7730     4.228700e+02 5.093500e+02
-8 7730     4.470000e+02 2.340800e+02
-9 7730     2.584500e+02 3.675700e+02
-10 7730     5.986500e+02 6.056000e+02
-11 7730     7.213500e+02 -3.835400e+02
-12 7730     4.730400e+02 5.230100e+02
-13 7730     7.992000e+02 9.645999e+01
-0 7731     6.117200e+02 3.372100e+02
-2 7731     4.641300e+02 3.174800e+02
-3 7731     3.211200e+02 -6.520020e+00
-7 7731     4.179399e+02 5.081700e+02
-8 7731     4.430000e+02 2.322400e+02
-9 7731     2.542800e+02 3.653300e+02
-10 7731     5.921899e+02 6.056300e+02
-11 7731     7.162300e+02 -3.837200e+02
-12 7731     4.678199e+02 5.210600e+02
-13 7731     7.940000e+02 9.592999e+01
-0 7732     8.262100e+02 3.349000e+02
-2 7732     6.782000e+02 3.962300e+02
-3 7732     5.203800e+02 7.253003e+01
-7 7732     6.249200e+02 5.414700e+02
-9 7732     4.340200e+02 4.382300e+02
-0 7733     -4.340500e+02 3.349500e+02
-10 7733     -6.505200e+02 4.985400e+02
-11 7733     -2.412300e+02 -4.111600e+02
-12 7733     -7.732600e+02 2.376700e+02
-15 7733     -6.645700e+02 5.381100e+02
-0 7734     7.263000e+01 3.332700e+02
-7 7734     -1.312400e+02 4.081200e+02
-11 7734     2.202300e+02 -4.116000e+02
-13 7734     2.590400e+02 3.179999e+01
-14 7734     3.980500e+02 -4.105200e+02
-0 7735     6.191000e+02 3.337600e+02
-2 7735     4.710400e+02 3.154200e+02
-3 7735     3.289200e+02 -7.440002e+00
-6 7735     3.914700e+02 5.111300e+02
-7 7735     4.255000e+02 5.056700e+02
-9 7735     2.609900e+02 3.646700e+02
-12 7735     4.754200e+02 5.178000e+02
-13 7735     8.010800e+02 9.329999e+01
-0 7736     -3.860900e+02 3.326100e+02
-5 7736     8.590027e+00 -3.277400e+02
-7 7736     -5.923100e+02 3.495500e+02
-8 7736     -4.695100e+02 2.551999e+01
-10 7736     -5.909300e+02 4.994900e+02
-12 7736     -7.135600e+02 2.447100e+02
-13 7736     -1.190100e+02 7.679993e+00
-14 7736     -7.273999e+01 -4.203400e+02
-15 7736     -5.968200e+02 5.413800e+02
-0 7737     6.699700e+02 3.321900e+02
-2 7737     5.264700e+02 3.358200e+02
-3 7737     3.801700e+02 1.267999e+01
-6 7737     4.542400e+02 5.262100e+02
-7 7737     4.758800e+02 5.132800e+02
-9 7737     3.068800e+02 3.828400e+02
-12 7737     5.360699e+02 5.352200e+02
-0 7738     6.699700e+02 3.321900e+02
-2 7738     5.264700e+02 3.358200e+02
-3 7738     3.801700e+02 1.267999e+01
-7 7738     4.758800e+02 5.132800e+02
-0 7739     -2.016400e+02 3.308300e+02
-7 7739     -4.042000e+02 3.698900e+02
-13 7739     2.959998e+01 1.409003e+01
-15 7739     -3.391900e+02 5.636000e+02
-0 7740     5.998300e+02 3.314100e+02
-2 7740     4.528500e+02 3.070000e+02
-6 7740     3.698200e+02 5.033700e+02
-8 7740     4.334399e+02 2.239600e+02
-9 7740     2.446700e+02 3.560100e+02
-0 7741     4.193900e+02 3.305000e+02
-6 7741     5.581000e+01 4.161900e+02
-0 7742     -5.149600e+02 3.289400e+02
-5 7742     -1.211800e+02 -3.285100e+02
-10 7742     -7.506200e+02 4.843000e+02
-15 7742     -7.774900e+02 5.195800e+02
-0 7743     8.138900e+02 3.274900e+02
-3 7743     5.120300e+02 6.210999e+01
-7 7743     6.143101e+02 5.322600e+02
-0 7744     4.755300e+02 3.267800e+02
-6 7744     1.732800e+02 4.442900e+02
-7 7744     2.718800e+02 4.654300e+02
-8 7744     2.877800e+02 1.474100e+02
-12 7744     2.841801e+02 4.379700e+02
-0 7745     -4.514200e+02 3.248300e+02
-7 7745     -6.620600e+02 3.311200e+02
-12 7745     -7.959300e+02 2.189900e+02
-0 7746     6.293000e+02 3.230500e+02
-3 7746     3.428199e+02 -1.196997e+01
-6 7746     4.076500e+02 5.032100e+02
-7 7746     4.371100e+02 4.972400e+02
-8 7746     4.607700e+02 2.264700e+02
-9 7746     2.729399e+02 3.601400e+02
-10 7746     6.141400e+02 5.899300e+02
-11 7746     7.370500e+02 -3.974200e+02
-12 7746     4.916899e+02 5.115500e+02
-0 7747     -1.859800e+02 3.192500e+02
-7 7747     -3.866400e+02 3.599200e+02
-15 7747     -3.150200e+02 5.488800e+02
-0 7748     4.826400e+02 3.144300e+02
-7 7748     2.806801e+02 4.547700e+02
-10 7748     4.409399e+02 5.631200e+02
-0 7749     5.347800e+02 3.134500e+02
-7 7749     3.328101e+02 4.626000e+02
-9 7749     1.487900e+02 2.737900e+02
-10 7749     5.026801e+02 5.684700e+02
-0 7750     5.347800e+02 3.134500e+02
-7 7750     3.328101e+02 4.626000e+02
-10 7750     5.026801e+02 5.684700e+02
-0 7751     7.808800e+02 3.110500e+02
-8 7751     5.924800e+02 2.634700e+02
-9 7751     4.053101e+02 4.073700e+02
-0 7752     6.090027e+00 3.090600e+02
-6 7752     -4.114300e+02 2.803400e+02
-0 7753     -5.740100e+02 3.080500e+02
-13 7753     -2.730000e+02 -2.109998e+01
-14 7753     -2.647300e+02 -4.467400e+02
-0 7754     8.356000e+01 3.071500e+02
-6 7754     -3.145400e+02 2.997100e+02
-11 7754     2.302400e+02 -4.356500e+02
-0 7755     7.622300e+02 3.041200e+02
-2 7755     6.251400e+02 3.456100e+02
-3 7755     4.735200e+02 2.469000e+01
-6 7755     5.669500e+02 5.234800e+02
-7 7755     5.681300e+02 5.017400e+02
-10 7755     7.737700e+02 5.831000e+02
-0 7756     -4.502800e+02 3.025200e+02
-7 7756     -6.569300e+02 3.075800e+02
-15 7756     -6.805800e+02 4.901800e+02
-0 7757     6.294399e+02 3.022300e+02
-2 7757     4.918900e+02 2.920600e+02
-6 7757     4.129300e+02 4.814600e+02
-7 7757     4.398700e+02 4.774400e+02
-9 7757     2.781600e+02 3.448800e+02
-10 7757     6.158300e+02 5.649000e+02
-12 7757     4.971500e+02 4.889300e+02
-13 7757     8.156200e+02 6.895001e+01
-0 7758     4.747100e+02 3.002200e+02
-6 7758     1.809700e+02 4.119600e+02
-8 7758     2.949400e+02 1.246600e+02
-12 7758     2.932500e+02 4.074000e+02
-13 7758     6.413900e+02 4.096997e+01
-0 7759     6.896997e+01 2.939100e+02
-6 7759     -3.229200e+02 2.810200e+02
-0 7760     -3.820200e+02 2.931800e+02
-11 7760     -1.970000e+02 -4.497200e+02
-13 7760     -1.172700e+02 -2.728998e+01
-14 7760     -7.237000e+01 -4.646700e+02
-0 7761     8.190200e+02 2.931000e+02
-2 7761     6.849800e+02 3.594900e+02
-0 7762     8.676500e+02 2.924100e+02
-2 7762     7.285300e+02 3.747300e+02
-3 7762     5.685699e+02 5.390997e+01
-7 7762     6.690699e+02 5.078800e+02
-0 7763     5.425000e+02 2.898500e+02
-2 7763     3.572900e+02 1.956900e+02
-8 7763     3.585200e+02 1.388700e+02
-9 7763     1.635300e+02 2.575500e+02
-10 7763     5.135000e+02 5.397800e+02
-0 7764     -5.401500e+02 2.888500e+02
-4 7764     -6.025000e+01 -3.829999e+01
-5 7764     -1.528700e+02 -3.716800e+02
-11 7764     -3.385700e+02 -4.503300e+02
-13 7764     -2.465900e+02 -3.690997e+01
-14 7764     -2.337400e+02 -4.683700e+02
-0 7765     5.317000e+02 2.884400e+02
-2 7765     3.449900e+02 1.905700e+02
-9 7765     1.525300e+02 2.528700e+02
-10 7765     5.001500e+02 5.373900e+02
-0 7766     5.317000e+02 2.884400e+02
-2 7766     3.449900e+02 1.905700e+02
-9 7766     1.525300e+02 2.528700e+02
-0 7767     8.739399e+02 2.885700e+02
-2 7767     7.357400e+02 3.738100e+02
-3 7767     5.748300e+02 5.306000e+01
-7 7767     6.756899e+02 5.052400e+02
-0 7768     -3.856900e+02 2.863600e+02
-5 7768     2.929993e+00 -3.792700e+02
-7 7768     -5.852500e+02 3.003000e+02
-8 7768     -4.677600e+02 -2.201001e+01
-10 7768     -5.835700e+02 4.430800e+02
-11 7768     -2.002100e+02 -4.556800e+02
-13 7768     -1.201200e+02 -3.332001e+01
-14 7768     -7.734003e+01 -4.722800e+02
-15 7768     -5.875200e+02 4.764700e+02
-0 7769     -5.393600e+02 2.839400e+02
-5 7769     -1.558300e+02 -3.781000e+02
-7 7769     -7.472700e+02 2.777400e+02
-10 7769     -7.738700e+02 4.263800e+02
-11 7769     -3.383000e+02 -4.548000e+02
-15 7769     -8.036500e+02 4.530600e+02
-0 7770     6.033500e+02 2.814400e+02
-3 7770     3.274399e+02 -5.964001e+01
-7 7770     4.168900e+02 4.524800e+02
-9 7770     2.589000e+02 3.180200e+02
-10 7770     5.849100e+02 5.379400e+02
-0 7771     7.624600e+02 2.812300e+02
-2 7771     6.335601e+02 3.266000e+02
-3 7771     4.823600e+02 7.210022e+00
-6 7771     5.741899e+02 5.000000e+02
-8 7771     5.834800e+02 2.360600e+02
-12 7771     6.533101e+02 5.125500e+02
-0 7772     5.146200e+02 2.810500e+02
-8 7772     3.346500e+02 1.237800e+02
-10 7772     4.810601e+02 5.269700e+02
-0 7773     -3.873500e+02 2.806600e+02
-7 7773     -5.862700e+02 2.941700e+02
-10 7773     -5.849200e+02 4.363900e+02
-15 7773     -5.889500e+02 4.682900e+02
-0 7774     -3.827300e+02 2.798000e+02
-5 7774     4.700012e+00 -3.870100e+02
-8 7774     -4.650500e+02 -2.910001e+01
-10 7774     -5.791000e+02 4.357600e+02
-0 7775     2.280300e+02 2.791600e+02
-6 7775     -1.261000e+02 3.086900e+02
-0 7776     7.752300e+02 2.794300e+02
-3 7776     4.940400e+02 1.044000e+01
-0 7777     -5.196800e+02 2.729400e+02
-7 7777     -7.246800e+02 2.679400e+02
-13 7777     -2.301700e+02 -5.064001e+01
-14 7777     -2.152500e+02 -4.872500e+02
-0 7778     6.746000e+02 2.697500e+02
-8 7778     5.113101e+02 1.995500e+02
-9 7778     3.257800e+02 3.355900e+02
-0 7779     6.693500e+02 2.681800e+02
-2 7779     5.427400e+02 2.762800e+02
-3 7779     3.976600e+02 -4.320001e+01
-6 7779     4.696600e+02 4.567600e+02
-8 7779     5.066000e+02 1.967800e+02
-9 7779     3.219600e+02 3.329900e+02
-10 7779     6.657300e+02 5.283700e+02
-12 7779     5.516899e+02 4.660300e+02
-13 7779     8.593300e+02 4.478003e+01
-0 7780     9.363000e+01 2.669200e+02
-7 7780     -9.428003e+01 3.487900e+02
-11 7780     2.398400e+02 -4.738000e+02
-0 7781     6.302600e+02 2.669600e+02
-7 7781     4.457500e+02 4.433600e+02
-10 7781     6.189301e+02 5.225100e+02
-0 7782     6.302600e+02 2.669600e+02
-2 7782     5.025900e+02 2.586700e+02
-6 7782     4.230700e+02 4.428300e+02
-7 7782     4.457500e+02 4.433600e+02
-9 7782     2.877500e+02 3.168100e+02
-10 7782     6.189301e+02 5.225100e+02
-0 7783     6.302600e+02 2.669600e+02
-6 7783     4.230700e+02 4.428300e+02
-7 7783     4.457500e+02 4.433600e+02
-9 7783     2.877500e+02 3.168100e+02
-10 7783     6.189301e+02 5.225100e+02
-11 7783     7.518300e+02 -4.529300e+02
-0 7784     8.095001e+01 2.646400e+02
-5 7784     5.175601e+02 -4.024200e+02
-7 7784     -1.068900e+02 3.448700e+02
-9 7784     -2.503800e+02 1.033500e+02
-12 7784     -1.460100e+02 2.657000e+02
-13 7784     2.852900e+02 -2.503998e+01
-14 7784     4.314600e+02 -4.849100e+02
-0 7785     6.035400e+02 2.641600e+02
-7 7785     4.191100e+02 4.361600e+02
-8 7785     4.496700e+02 1.718900e+02
-9 7785     2.635400e+02 3.029600e+02
-0 7786     -1.781400e+02 2.621000e+02
-7 7786     -3.667500e+02 3.048900e+02
-11 7786     -1.256000e+01 -4.825700e+02
-15 7786     -2.964100e+02 4.699600e+02
-0 7787     5.779800e+02 2.620800e+02
-2 7787     4.473101e+02 2.307700e+02
-3 7787     3.080000e+02 -8.976001e+01
-0 7788     5.779800e+02 2.620800e+02
-3 7788     3.080000e+02 -8.976001e+01
-6 7788     3.620400e+02 4.196900e+02
-8 7788     4.292000e+02 1.620400e+02
-9 7788     2.428300e+02 2.915600e+02
-12 7788     4.496600e+02 4.276900e+02
-0 7789     -4.204500e+02 2.617000e+02
-7 7789     -6.178200e+02 2.692100e+02
-0 7790     7.595699e+02 2.610900e+02
-2 7790     6.365100e+02 3.064700e+02
-3 7790     4.862100e+02 -1.195001e+01
-7 7790     5.715900e+02 4.602200e+02
-8 7790     5.854800e+02 2.200800e+02
-9 7790     3.993199e+02 3.622300e+02
-10 7790     7.736400e+02 5.303800e+02
-12 7790     6.576400e+02 4.968500e+02
-0 7791     -5.220400e+02 2.601700e+02
-5 7791     -1.372300e+02 -4.041200e+02
-10 7791     -7.483900e+02 3.992100e+02
-0 7792     6.310500e+02 2.554800e+02
-2 7792     5.066400e+02 2.476400e+02
-6 7792     4.267300e+02 4.305900e+02
-7 7792     4.474700e+02 4.325900e+02
-8 7792     4.765500e+02 1.742700e+02
-9 7792     2.911200e+02 3.078500e+02
-12 7792     5.104100e+02 4.392100e+02
-15 7792     8.221500e+02 5.826700e+02
-0 7793     -5.014600e+02 2.548400e+02
-7 7793     -7.017400e+02 2.519900e+02
-0 7794     7.566200e+02 2.549500e+02
-2 7794     6.351400e+02 2.999600e+02
-3 7794     4.854399e+02 -1.800000e+01
-6 7794     5.744301e+02 4.703900e+02
-7 7794     5.695800e+02 4.540100e+02
-8 7794     5.842700e+02 2.140900e+02
-9 7794     3.980800e+02 3.557700e+02
-10 7794     7.702900e+02 5.229900e+02
-0 7795     2.309301e+02 2.537800e+02
-6 7795     -1.052400e+02 2.815200e+02
-0 7796     -2.018300e+02 2.498600e+02
-7 7796     -3.875600e+02 2.889700e+02
-10 7796     -3.571400e+02 4.158600e+02
-11 7796     -3.489001e+01 -4.932400e+02
-13 7796     4.256000e+01 -5.565997e+01
-14 7796     1.241400e+02 -5.112900e+02
-0 7797     -4.984900e+02 2.493900e+02
-7 7797     -6.981800e+02 2.461300e+02
-11 7797     -3.053500e+02 -4.877300e+02
-0 7798     -4.984900e+02 2.493900e+02
-7 7798     -6.981800e+02 2.461300e+02
-0 7799     -4.077300e+02 2.483700e+02
-7 7799     -6.027600e+02 2.570500e+02
-8 7799     -4.876500e+02 -6.481000e+01
-14 7799     -1.057400e+02 -5.159000e+02
-0 7800     6.466998e+01 2.471100e+02
-6 7800     -2.960500e+02 2.271000e+02
-0 7801     -2.508002e+01 2.432800e+02
-3 7801     -3.618700e+02 -3.275500e+02
-8 7801     -1.222100e+02 -1.032999e+01
-9 7801     -3.349600e+02 6.984003e+01
-0 7802     -2.508002e+01 2.432800e+02
-4 7802     -1.327400e+02 -3.352100e+02
-9 7802     -3.349600e+02 6.984003e+01
-14 7802     3.208101e+02 -5.110400e+02
-0 7803     -1.640000e+02 2.383700e+02
-7 7803     -3.467600e+02 2.841400e+02
-8 7803     -2.463500e+02 -3.407001e+01
-11 7803     -1.320007e+00 -5.035300e+02
-13 7803     7.792999e+01 -6.228003e+01
-14 7803     1.686700e+02 -5.220000e+02
-15 7803     -2.740200e+02 4.390100e+02
-0 7804     8.732200e+02 2.355200e+02
-3 7804     5.918400e+02 1.208002e+01
-7 7804     6.824500e+02 4.557600e+02
-12 7804     7.871000e+02 5.034300e+02
-0 7805     7.070007e+00 2.226200e+02
-6 7805     -3.483800e+02 1.832100e+02
-0 7806     -1.380005e+00 2.203800e+02
-6 7806     -3.571300e+02 1.781200e+02
-0 7807     5.781000e+01 2.179500e+02
-4 7807     -1.558200e+02 -3.917700e+02
-6 7807     -2.830200e+02 1.928600e+02
-11 7807     2.060500e+02 -5.223800e+02
-0 7808     6.460601e+02 2.177700e+02
-2 7808     5.321801e+02 2.184000e+02
-3 7808     3.901400e+02 -9.823999e+01
-7 7808     4.671000e+02 3.982700e+02
-8 7808     4.974301e+02 1.494600e+02
-9 7808     3.138800e+02 2.839100e+02
-10 7808     6.402400e+02 4.647500e+02
-12 7808     5.371500e+02 4.038700e+02
-15 7808     8.477300e+02 5.319300e+02
-0 7809     -3.439001e+01 2.149300e+02
-5 7809     4.030400e+02 -4.581300e+02
-7 7809     -2.099500e+02 2.817800e+02
-10 7809     -1.549700e+02 3.919700e+02
-12 7809     -2.574000e+02 1.897400e+02
-13 7809     1.978500e+02 -7.275000e+01
-14 7809     3.199200e+02 -5.427900e+02
-0 7810     6.476700e+02 2.112200e+02
-2 7810     5.358400e+02 2.131200e+02
-9 7810     3.173400e+02 2.794000e+02
-13 7810     8.447000e+02 -5.950012e+00
-15 7810     8.511500e+02 5.222800e+02
-0 7811     -1.173999e+01 2.095700e+02
-5 7811     4.309200e+02 -4.641200e+02
-6 7811     -3.623100e+02 1.629700e+02
-0 7812     -1.173999e+01 2.095700e+02
-6 7812     -3.623100e+02 1.629700e+02
-0 7813     -1.692999e+01 2.085100e+02
-6 7813     -3.676500e+02 1.600600e+02
-0 7814     5.936200e+02 2.019400e+02
-2 7814     4.795601e+02 1.791100e+02
-3 7814     3.410100e+02 -1.375900e+02
-6 7814     3.943900e+02 3.588500e+02
-7 7814     4.177700e+02 3.737900e+02
-8 7814     4.537100e+02 1.190800e+02
-9 7814     2.701200e+02 2.486200e+02
-10 7814     5.795300e+02 4.414000e+02
-11 7814     7.312100e+02 -5.221300e+02
-12 7814     4.799301e+02 3.676400e+02
-13 7814     7.912000e+02 -2.101001e+01
-15 7814     7.752700e+02 5.008300e+02
-0 7815     5.936200e+02 2.019400e+02
-2 7815     4.795601e+02 1.791100e+02
-3 7815     3.410100e+02 -1.375900e+02
-6 7815     3.943900e+02 3.588500e+02
-7 7815     4.177700e+02 3.737900e+02
-8 7815     4.537100e+02 1.190800e+02
-9 7815     2.701200e+02 2.486200e+02
-10 7815     5.795300e+02 4.414000e+02
-11 7815     7.312100e+02 -5.221300e+02
-12 7815     4.799301e+02 3.676400e+02
-13 7815     7.912000e+02 -2.101001e+01
-0 7816     6.226801e+02 1.977900e+02
-2 7816     5.125400e+02 1.884500e+02
-3 7816     3.719800e+02 -1.269800e+02
-6 7816     4.309800e+02 3.646900e+02
-7 7816     4.469700e+02 3.752800e+02
-8 7816     4.808199e+02 1.256400e+02
-9 7816     2.971899e+02 2.582800e+02
-10 7816     6.139200e+02 4.393600e+02
-12 7816     5.147400e+02 3.735300e+02
-13 7816     8.207800e+02 -2.062000e+01
-15 7816     8.161600e+02 5.004800e+02
-0 7817     1.444399e+02 1.952800e+02
-10 7817     5.490002e+01 3.849100e+02
-13 7817     4.478101e+02 -5.248999e+01
-14 7817     6.402100e+02 -5.301801e+02
-15 7817     1.402700e+02 4.250900e+02
-0 7818     6.024500e+02 1.948500e+02
-3 7818     3.526100e+02 -1.398100e+02
-6 7818     4.075600e+02 3.541200e+02
-7 7818     4.278400e+02 3.686900e+02
-8 7818     4.634301e+02 1.165600e+02
-9 7818     2.804301e+02 2.467300e+02
-10 7818     5.912300e+02 4.333800e+02
-12 7818     4.926100e+02 3.630600e+02
-15 7818     7.888400e+02 4.922000e+02
-0 7819     8.679900e+02 1.891400e+02
-2 7819     7.599399e+02 2.848700e+02
-3 7819     6.017900e+02 -2.828998e+01
-7 7819     6.829301e+02 4.104400e+02
-9 7819     5.029399e+02 3.464800e+02
-0 7820     6.211000e+02 1.856500e+02
-2 7820     5.138199e+02 1.759900e+02
-3 7820     3.741600e+02 -1.392100e+02
-6 7820     4.322500e+02 3.510300e+02
-8 7820     4.818700e+02 1.155500e+02
-9 7820     2.992800e+02 2.474600e+02
-10 7820     6.133700e+02 4.243100e+02
-12 7820     5.160900e+02 3.600800e+02
-13 7820     8.209700e+02 -3.177002e+01
-15 7820     8.156000e+02 4.827300e+02
-0 7821     8.318600e+02 1.822500e+02
-2 7821     7.282000e+02 2.670600e+02
-3 7821     5.742200e+02 -4.515997e+01
-0 7822     -3.214200e+02 1.806000e+02
-7 7822     -4.955900e+02 2.044300e+02
-13 7822     -4.726001e+01 -1.205200e+02
-0 7823     7.151700e+02 1.790300e+02
-7 7823     5.404900e+02 3.742500e+02
-10 7823     7.263000e+02 4.264800e+02
-0 7824     -4.410999e+01 1.786400e+02
-5 7824     4.040900e+02 -4.990699e+02
-8 7824     -1.095200e+02 -5.442001e+01
-9 7824     -3.105500e+02 2.723999e+01
-10 7824     -1.634000e+02 3.470900e+02
-13 7824     1.987200e+02 -1.041900e+02
-14 7824     3.209200e+02 -5.839200e+02
-0 7825     -4.410999e+01 1.786400e+02
-5 7825     4.040900e+02 -4.990699e+02
-9 7825     -3.105500e+02 2.723999e+01
-10 7825     -1.634000e+02 3.470900e+02
-13 7825     1.987200e+02 -1.041900e+02
-14 7825     3.209200e+02 -5.839200e+02
-0 7826     7.218300e+02 1.741700e+02
-7 7826     5.475400e+02 3.710400e+02
-10 7826     7.337100e+02 4.221000e+02
-0 7827     -8.640997e+01 1.727400e+02
-7 7827     -2.518900e+02 2.335500e+02
-0 7828     -1.039400e+02 1.719500e+02
-7 7828     -2.691000e+02 2.299700e+02
-0 7829     2.021500e+02 1.689800e+02
-2 7829     2.341200e+02 1.765400e+02
-10 7829     1.246300e+02 3.593400e+02
-15 7829     2.228300e+02 3.971000e+02
-0 7830     4.200100e+02 1.688800e+02
-7 7830     2.415000e+02 3.037600e+02
-10 7830     3.787400e+02 3.834700e+02
-0 7831     5.269100e+02 1.683800e+02
-7 7831     3.557200e+02 3.281900e+02
-10 7831     5.036300e+02 3.940500e+02
-15 7831     6.861300e+02 4.431000e+02
-0 7832     8.190000e+02 1.685800e+02
-2 7832     7.197600e+02 2.470900e+02
-7 7832     6.402300e+02 3.825800e+02
-0 7833     8.190000e+02 1.685800e+02
-2 7833     7.197600e+02 2.470900e+02
-3 7833     5.678700e+02 -6.458002e+01
-7 7833     6.402300e+02 3.825800e+02
-0 7834     -2.316600e+02 1.659200e+02
-7 7834     -3.987000e+02 2.041100e+02
-13 7834     3.654999e+01 -1.271600e+02
-15 7834     -3.574800e+02 3.300100e+02
-0 7835     8.820200e+02 1.646200e+02
-2 7835     7.797100e+02 2.690400e+02
-3 7835     6.225900e+02 -4.264001e+01
-7 7835     6.994600e+02 3.895800e+02
-9 7835     5.201700e+02 3.331600e+02
-12 7835     8.144301e+02 4.300600e+02
-0 7836     8.228101e+02 1.639800e+02
-9 7836     4.750400e+02 3.119100e+02
-0 7837     7.375200e+02 1.633700e+02
-7 7837     5.643500e+02 3.634300e+02
-10 7837     7.534200e+02 4.107600e+02
-0 7838     -1.086800e+02 1.632000e+02
-5 7838     3.358600e+02 -5.167600e+02
-13 7838     1.461100e+02 -1.217400e+02
-0 7839     -1.086800e+02 1.632000e+02
-5 7839     3.358600e+02 -5.167600e+02
-7 7839     -2.719700e+02 2.212800e+02
-8 7839     -1.597100e+02 -7.485999e+01
-9 7839     -3.612700e+02 3.169983e+00
-13 7839     1.461100e+02 -1.217400e+02
-0 7840     7.091300e+02 1.614900e+02
-2 7840     6.134500e+02 1.916500e+02
-3 7840     4.696899e+02 -1.205800e+02
-6 7840     5.437900e+02 3.561800e+02
-7 7840     5.364100e+02 3.559500e+02
-8 7840     5.648199e+02 1.272000e+02
-9 7840     3.830800e+02 2.655300e+02
-10 7840     7.194500e+02 4.042100e+02
-12 7840     6.237000e+02 3.671000e+02
-0 7841     6.714000e+02 1.594500e+02
-6 7841     5.001700e+02 3.396900e+02
-7 7841     5.001400e+02 3.471100e+02
-8 7841     5.333101e+02 1.116100e+02
-9 7841     3.516200e+02 2.474000e+02
-13 7841     8.749301e+02 -4.785999e+01
-0 7842     6.445300e+02 1.574600e+02
-3 7842     4.067100e+02 -1.540300e+02
-6 7842     4.679000e+02 3.279300e+02
-7 7842     4.739000e+02 3.403400e+02
-8 7842     5.088700e+02 1.008700e+02
-9 7842     3.274100e+02 2.344000e+02
-10 7842     6.433300e+02 3.937300e+02
-12 7842     5.503300e+02 3.376100e+02
-13 7842     8.481400e+02 -5.279999e+01
-15 7842     8.518300e+02 4.460100e+02
-0 7843     2.111000e+02 1.559900e+02
-7 7843     8.584003e+01 2.924100e+02
-0 7844     -1.743100e+02 1.555600e+02
-5 7844     2.613500e+02 -5.248900e+02
-7 7844     -3.377400e+02 2.040200e+02
-0 7845     -1.138700e+02 1.557700e+02
-2 7845     -2.776200e+02 -8.057001e+01
-5 7845     3.322800e+02 -5.253101e+02
-7 7845     -2.761400e+02 2.136300e+02
-8 7845     -1.622500e+02 -8.059998e+01
-13 7845     1.430400e+02 -1.277600e+02
-0 7846     -1.216700e+02 1.531700e+02
-7 7846     -2.831600e+02 2.095800e+02
-8 7846     -1.684500e+02 -8.321997e+01
-13 7846     1.372500e+02 -1.304300e+02
-0 7847     7.058400e+02 1.510000e+02
-2 7847     6.131600e+02 1.813000e+02
-3 7847     4.699200e+02 -1.300700e+02
-6 7847     5.417000e+02 3.430300e+02
-7 7847     5.344100e+02 3.454200e+02
-8 7847     5.640400e+02 1.169300e+02
-9 7847     3.819900e+02 2.550500e+02
-10 7847     7.167900e+02 3.923200e+02
-12 7847     6.211899e+02 3.534000e+02
-0 7848     7.341500e+02 1.509100e+02
-2 7848     6.417300e+02 1.940200e+02
-3 7848     4.967800e+02 -1.173200e+02
-6 7848     5.753600e+02 3.526900e+02
-7 7848     5.618700e+02 3.504600e+02
-8 7848     5.886100e+02 1.266900e+02
-9 7848     4.068199e+02 2.667700e+02
-10 7848     7.502600e+02 3.958600e+02
-12 7848     6.542300e+02 3.636400e+02
-0 7849     -1.152500e+02 1.502500e+02
-9 7849     -3.597100e+02 -6.250000e+00
-0 7850     -1.152500e+02 1.502500e+02
-7 7850     -2.765800e+02 2.080100e+02
-9 7850     -3.597100e+02 -6.250000e+00
-13 7850     1.436000e+02 -1.325700e+02
-0 7851     -2.177700e+02 1.498500e+02
-7 7851     -3.805100e+02 1.910900e+02
-13 7851     5.304999e+01 -1.394300e+02
-0 7852     7.010800e+02 1.482000e+02
-2 7852     6.084301e+02 1.761100e+02
-6 7852     5.369500e+02 3.381400e+02
-7 7852     5.301899e+02 3.418900e+02
-8 7852     5.598500e+02 1.129300e+02
-10 7852     7.107400e+02 3.887400e+02
-12 7852     6.169100e+02 3.482300e+02
-0 7853     -2.793600e+02 1.458200e+02
-10 7853     -4.371600e+02 2.842200e+02
-13 7853     -9.299927e-01 -1.473700e+02
-0 7854     8.337600e+02 1.453300e+02
-2 7854     7.413500e+02 2.310000e+02
-3 7854     5.881300e+02 -7.800000e+01
-7 7854     6.570200e+02 3.632300e+02
-9 7854     4.884700e+02 3.014700e+02
-0 7855     7.127400e+02 1.446100e+02
-3 7855     4.782400e+02 -1.327800e+02
-7 7855     5.419500e+02 3.401900e+02
-8 7855     5.711500e+02 1.135700e+02
-12 7855     6.314100e+02 3.476500e+02
-0 7856     8.066200e+02 1.436600e+02
-2 7856     7.151500e+02 2.189200e+02
-3 7856     5.649800e+02 -9.131000e+01
-7 7856     6.318400e+02 3.568100e+02
-0 7857     6.624500e+02 1.433400e+02
-3 7857     4.295300e+02 -1.573000e+02
-6 7857     4.934500e+02 3.199300e+02
-7 7857     4.934000e+02 3.301900e+02
-9 7857     3.468800e+02 2.313600e+02
-10 7857     6.659399e+02 3.794500e+02
-12 7857     5.747900e+02 3.298700e+02
-0 7858     7.449600e+02 1.420600e+02
-2 7858     6.553300e+02 1.906300e+02
-9 7858     4.177200e+02 2.654300e+02
-10 7858     7.637300e+02 3.863000e+02
-12 7858     6.683700e+02 3.608100e+02
-0 7859     -2.105000e+02 1.402600e+02
-3 7859     -5.021200e+02 -4.454399e+02
-7 7859     -3.712100e+02 1.828100e+02
-8 7859     -2.467300e+02 -1.067300e+02
-10 7859     -3.548500e+02 2.849700e+02
-15 7859     -3.252900e+02 2.972700e+02
-0 7860     4.450012e+00 1.397400e+02
-10 7860     -1.039900e+02 3.047400e+02
-13 7860     3.454000e+02 -1.066900e+02
-0 7861     4.450012e+00 1.397400e+02
-7 7861     -1.127100e+02 2.481800e+02
-0 7862     7.133800e+02 1.397600e+02
-2 7862     6.234399e+02 1.735900e+02
-6 7862     5.538400e+02 3.330200e+02
-7 7862     5.435000e+02 3.359600e+02
-8 7862     5.726300e+02 1.102700e+02
-9 7862     3.919900e+02 2.488900e+02
-10 7862     7.262100e+02 3.803000e+02
-12 7862     6.335699e+02 3.434300e+02
-0 7863     -1.173700e+02 1.395700e+02
-5 7863     3.328400e+02 -5.431400e+02
-8 7863     -1.580700e+02 -9.159998e+01
-9 7863     -3.548700e+02 -1.306000e+01
-0 7864     -1.173700e+02 1.395700e+02
-5 7864     3.328400e+02 -5.431400e+02
-6 7864     -4.438900e+02 5.164001e+01
-8 7864     -1.580700e+02 -9.159998e+01
-9 7864     -3.548700e+02 -1.306000e+01
-0 7865     7.432000e+02 1.381300e+02
-2 7865     6.545400e+02 1.856900e+02
-7 7865     5.720300e+02 3.396400e+02
-9 7865     4.178199e+02 2.603000e+02
-10 7865     7.621700e+02 3.819300e+02
-0 7866     1.575000e+01 1.381400e+02
-6 7866     -9.185001e+01 1.691500e+02
-15 7866     -3.044000e+01 3.280200e+02
-0 7867     7.593900e+02 1.378600e+02
-2 7867     6.710000e+02 1.933200e+02
-3 7867     5.242600e+02 -1.172300e+02
-7 7867     5.878101e+02 3.425100e+02
-9 7867     4.311300e+02 2.669400e+02
-10 7867     7.822000e+02 3.830500e+02
-12 7867     6.866000e+02 3.587600e+02
-0 7868     -4.639700e+02 1.373000e+02
-13 7868     -1.672200e+02 -1.651300e+02
-0 7869     7.286899e+02 1.366600e+02
-2 7869     6.414100e+02 1.788600e+02
-3 7869     4.970500e+02 -1.316200e+02
-6 7869     5.725800e+02 3.347300e+02
-7 7869     5.585300e+02 3.358900e+02
-8 7869     5.869600e+02 1.133400e+02
-9 7869     4.060699e+02 2.533200e+02
-10 7869     7.450100e+02 3.788100e+02
-12 7869     6.515900e+02 3.454400e+02
-0 7870     7.906600e+02 1.357300e+02
-7 7870     6.179200e+02 3.463600e+02
-10 7870     8.185000e+02 3.840000e+02
-0 7871     6.809301e+02 1.343900e+02
-3 7871     4.505800e+02 -1.573900e+02
-6 7871     5.177700e+02 3.160800e+02
-7 7871     5.127400e+02 3.249400e+02
-8 7871     5.464100e+02 9.539001e+01
-9 7871     3.654800e+02 2.314900e+02
-10 7871     6.881400e+02 3.704700e+02
-0 7872     7.173900e+02 1.335000e+02
-2 7872     6.297700e+02 1.696000e+02
-3 7872     4.865000e+02 -1.412500e+02
-6 7872     5.605601e+02 3.276700e+02
-7 7872     5.480900e+02 3.306200e+02
-8 7872     5.781100e+02 1.063800e+02
-9 7872     3.972800e+02 2.457600e+02
-10 7872     7.315300e+02 3.735900e+02
-12 7872     6.400000e+02 3.379000e+02
-0 7873     7.173900e+02 1.335000e+02
-2 7873     6.297700e+02 1.696000e+02
-3 7873     4.865000e+02 -1.412500e+02
-6 7873     5.605601e+02 3.276700e+02
-7 7873     5.480900e+02 3.306200e+02
-8 7873     5.781100e+02 1.063800e+02
-9 7873     3.972800e+02 2.457600e+02
-10 7873     7.315300e+02 3.735900e+02
-12 7873     6.400000e+02 3.379000e+02
-0 7874     7.410300e+02 1.323600e+02
-2 7874     6.540100e+02 1.795100e+02
-3 7874     5.090800e+02 -1.307300e+02
-7 7874     5.707300e+02 3.342500e+02
-8 7874     5.984000e+02 1.142000e+02
-9 7874     4.174000e+02 2.549900e+02
-12 7874     6.668000e+02 3.461300e+02
-0 7875     -2.145500e+02 1.315200e+02
-10 7875     -3.581600e+02 2.743100e+02
-13 7875     6.097998e+01 -1.545300e+02
-0 7876     -2.228400e+02 1.308100e+02
-7 7876     -3.807600e+02 1.718700e+02
-8 7876     -2.537700e+02 -1.155000e+02
-10 7876     -3.675200e+02 2.729500e+02
-13 7876     5.356000e+01 -1.557700e+02
-15 7876     -3.399900e+02 2.834500e+02
-0 7877     -1.187000e+01 1.287800e+02
-7 7877     -1.263300e+02 2.344900e+02
-10 7877     -1.216100e+02 2.897100e+02
-12 7877     -9.222998e+01 2.027600e+02
-13 7877     3.330699e+02 -1.173100e+02
-15 7877     -6.692999e+01 3.108700e+02
-0 7878     7.555200e+02 1.262200e+02
-7 7878     5.856200e+02 3.307400e+02
-10 7878     7.786300e+02 3.674600e+02
-0 7879     7.555200e+02 1.262200e+02
-2 7879     6.702900e+02 1.801600e+02
-7 7879     5.856200e+02 3.307400e+02
-9 7879     4.298400e+02 2.580800e+02
-0 7880     7.148300e+02 1.256000e+02
-2 7880     6.294900e+02 1.608800e+02
-3 7880     4.864700e+02 -1.492600e+02
-6 7880     5.596100e+02 3.187600e+02
-7 7880     5.465900e+02 3.228300e+02
-8 7880     5.774399e+02 9.962000e+01
-9 7880     3.971100e+02 2.385600e+02
-10 7880     7.288500e+02 3.638400e+02
-12 7880     6.388700e+02 3.292300e+02
-0 7881     7.148300e+02 1.256000e+02
-2 7881     6.294900e+02 1.608800e+02
-3 7881     4.864700e+02 -1.492600e+02
-7 7881     5.465900e+02 3.228300e+02
-8 7881     5.774399e+02 9.962000e+01
-9 7881     3.971100e+02 2.385600e+02
-10 7881     7.288500e+02 3.638400e+02
-0 7882     8.630500e+02 1.253300e+02
-2 7882     7.740000e+02 2.259900e+02
-3 7882     6.198900e+02 -8.275000e+01
-7 7882     6.869700e+02 3.494000e+02
-9 7882     5.160601e+02 2.974600e+02
-12 7882     8.037300e+02 3.820800e+02
-0 7883     7.750800e+02 1.247900e+02
-7 7883     6.044200e+02 3.331300e+02
-9 7883     4.479000e+02 2.627900e+02
-12 7883     7.072300e+02 3.499400e+02
-0 7884     -4.687100e+02 1.246100e+02
-4 7884     -1.569300e+02 -6.431000e+01
-7 7884     -6.382600e+02 1.253400e+02
-10 7884     -6.620500e+02 2.402900e+02
-13 7884     -1.670900e+02 -1.766100e+02
-0 7885     7.534600e+02 1.223200e+02
-2 7885     6.692200e+02 1.756000e+02
-3 7885     5.238300e+02 -1.339300e+02
-7 7885     5.839301e+02 3.269700e+02
-9 7885     4.303800e+02 2.522300e+02
-10 7885     7.751801e+02 3.641300e+02
-12 7885     6.834700e+02 3.396600e+02
-0 7886     8.053900e+02 1.208400e+02
-2 7886     7.216801e+02 1.980900e+02
-3 7886     5.720400e+02 -1.109000e+02
-7 7886     6.335000e+02 3.346900e+02
-0 7887     8.053900e+02 1.208400e+02
-2 7887     7.216801e+02 1.980900e+02
-3 7887     5.720400e+02 -1.109000e+02
-7 7887     6.335000e+02 3.346900e+02
-0 7888     7.497200e+02 1.202100e+02
-3 7888     5.212800e+02 -1.376100e+02
-7 7888     5.809500e+02 3.240600e+02
-10 7888     7.708101e+02 3.611900e+02
-0 7889     7.497200e+02 1.202100e+02
-3 7889     5.212800e+02 -1.376100e+02
-7 7889     5.809500e+02 3.240600e+02
-10 7889     7.708101e+02 3.611900e+02
-0 7890     -2.765300e+02 1.200200e+02
-4 7890     -1.790100e+02 -1.785500e+02
-0 7891     6.932600e+02 1.199800e+02
-2 7891     6.083600e+02 1.456800e+02
-3 7891     4.668101e+02 -1.646800e+02
-6 7891     5.356801e+02 3.048300e+02
-7 7891     5.264600e+02 3.134600e+02
-8 7891     5.594800e+02 8.776001e+01
-9 7891     3.794500e+02 2.250700e+02
-10 7891     7.036899e+02 3.550700e+02
-12 7891     6.153900e+02 3.150100e+02
-0 7892     -2.260300e+02 1.197300e+02
-7 7892     -3.813900e+02 1.613000e+02
-15 7892     -3.429600e+02 2.677100e+02
-0 7893     7.450601e+02 1.179000e+02
-2 7893     6.622500e+02 1.672200e+02
-3 7893     5.174500e+02 -1.412900e+02
-7 7893     5.766700e+02 3.212200e+02
-9 7893     4.245601e+02 2.451300e+02
-10 7893     7.652900e+02 3.580900e+02
-12 7893     6.751300e+02 3.313500e+02
-0 7894     8.755900e+02 1.166500e+02
-2 7894     7.885300e+02 2.234700e+02
-3 7894     6.335400e+02 -8.484003e+01
-7 7894     6.995400e+02 3.434900e+02
-9 7894     5.277800e+02 2.958900e+02
-0 7895     6.994301e+02 1.157300e+02
-2 7895     6.167300e+02 1.449300e+02
-3 7895     4.749200e+02 -1.652700e+02
-6 7895     5.442400e+02 3.022200e+02
-7 7895     5.332600e+02 3.104100e+02
-8 7895     5.665300e+02 8.662000e+01
-9 7895     3.864900e+02 2.241100e+02
-10 7895     7.112800e+02 3.505100e+02
-12 7895     6.241899e+02 3.126000e+02
-0 7896     8.272800e+02 1.150300e+02
-3 7896     5.933300e+02 -1.070400e+02
-7 7896     6.549800e+02 3.331900e+02
-9 7896     4.915100e+02 2.754500e+02
-0 7897     8.386100e+02 1.155300e+02
-2 7897     7.537000e+02 2.059700e+02
-12 7897     7.797600e+02 3.622600e+02
-0 7898     8.142300e+02 1.145100e+02
-2 7898     7.311300e+02 1.946700e+02
-3 7898     5.818600e+02 -1.133700e+02
-0 7899     7.664700e+02 1.130500e+02
-3 7899     5.394301e+02 -1.358800e+02
-7 7899     5.976899e+02 3.203800e+02
-9 7899     4.436300e+02 2.502100e+02
-10 7899     7.909800e+02 3.546300e+02
-12 7899     7.002000e+02 3.345400e+02
-0 7900     -3.565002e+01 1.122100e+02
-4 7900     -1.947300e+02 -3.807200e+02
-5 7900     5.636899e+02 -5.466400e+02
-6 7900     -1.454900e+02 1.225300e+02
-7 7900     -1.477400e+02 2.140900e+02
-9 7900     -8.596002e+01 1.664600e+02
-12 7900     -1.157400e+02 1.761900e+02
-15 7900     -9.651001e+01 2.855000e+02
-0 7901     6.253400e+02 1.127300e+02
-2 7901     5.384500e+02 1.051400e+02
-3 7901     4.013000e+02 -2.064500e+02
-6 7901     4.568199e+02 2.710100e+02
-7 7901     4.612000e+02 2.934900e+02
-8 7901     5.012000e+02 5.703000e+01
-9 7901     3.219600e+02 1.886400e+02
-10 7901     6.239399e+02 3.387600e+02
-13 7901     8.343800e+02 -9.488000e+01
-15 7901     8.298101e+02 3.801700e+02
-0 7902     8.031000e+02 1.117400e+02
-7 7902     6.329000e+02 3.261100e+02
-0 7903     6.227600e+02 1.082800e+02
-2 7903     5.371899e+02 9.984998e+01
-7 7903     4.592400e+02 2.890300e+02
-8 7903     5.003900e+02 5.276999e+01
-10 7903     6.214900e+02 3.333700e+02
-15 7903     8.268199e+02 3.735400e+02
-0 7904     6.227600e+02 1.082800e+02
-2 7904     5.371899e+02 9.984998e+01
-7 7904     4.592400e+02 2.890300e+02
-8 7904     5.003900e+02 5.276999e+01
-9 7904     3.205000e+02 1.839100e+02
-10 7904     6.214900e+02 3.333700e+02
-15 7904     8.268199e+02 3.735400e+02
-0 7905     7.770500e+02 1.078700e+02
-2 7905     6.970300e+02 1.725300e+02
-3 7905     5.507200e+02 -1.358500e+02
-7 7905     6.086801e+02 3.173800e+02
-9 7905     4.536100e+02 2.505000e+02
-10 7905     8.040900e+02 3.495600e+02
-0 7906     7.770500e+02 1.078700e+02
-3 7906     5.507200e+02 -1.358500e+02
-0 7907     7.942400e+02 1.071100e+02
-3 7907     5.665500e+02 -1.285400e+02
-7 7907     6.249000e+02 3.196400e+02
-0 7908     7.616998e+01 1.064800e+02
-7 7908     -2.951001e+01 2.291300e+02
-10 7908     -1.638000e+01 2.726400e+02
-15 7908     5.492999e+01 2.930500e+02
-0 7909     2.792900e+02 1.046900e+02
-7 7909     1.645400e+02 2.554900e+02
-10 7909     2.195300e+02 2.912100e+02
-13 7909     5.848900e+02 -1.150200e+02
-15 7909     3.357000e+02 3.192200e+02
-0 7910     7.602500e+02 1.046300e+02
-2 7910     6.811200e+02 1.618400e+02
-3 7910     5.362200e+02 -1.465300e+02
-7 7910     5.934100e+02 3.108800e+02
-10 7910     7.844100e+02 3.438200e+02
-12 7910     6.955300e+02 3.228900e+02
-0 7911     7.683101e+02 1.043200e+02
-2 7911     6.893800e+02 1.651900e+02
-3 7911     5.439900e+02 -1.427700e+02
-7 7911     6.007400e+02 3.123900e+02
-9 7911     4.474000e+02 2.442000e+02
-0 7912     7.901899e+02 1.032000e+02
-2 7912     7.116000e+02 1.722600e+02
-3 7912     5.643400e+02 -1.341000e+02
-7 7912     6.217100e+02 3.148600e+02
-9 7912     4.655100e+02 2.522900e+02
-10 7912     8.198600e+02 3.454100e+02
-12 7912     7.294800e+02 3.322300e+02
-0 7913     7.150000e+02 1.031700e+02
-2 7913     6.354399e+02 1.395900e+02
-3 7913     4.932800e+02 -1.695000e+02
-6 7913     5.648101e+02 2.945400e+02
-7 7913     5.493300e+02 3.014800e+02
-9 7913     4.022400e+02 2.207700e+02
-10 7913     7.306300e+02 3.373800e+02
-12 7913     6.439600e+02 3.048400e+02
-0 7914     8.739301e+02 1.015300e+02
-3 7914     6.375300e+02 -9.878003e+01
-0 7915     7.837200e+02 9.985999e+01
-2 7915     7.067100e+02 1.680900e+02
-3 7915     5.589301e+02 -1.395700e+02
-9 7915     4.613600e+02 2.469900e+02
-0 7916     -9.979980e+00 9.578000e+01
-3 7916     -9.640015e+00 -2.189700e+02
-4 7916     -2.084100e+02 -4.027000e+02
-5 7916     6.042200e+02 -5.647500e+02
-6 7916     -9.891000e+01 1.149400e+02
-12 7916     -7.433002e+01 1.700100e+02
-0 7917     6.541600e+02 9.504001e+01
-3 7917     4.360300e+02 -2.089300e+02
-6 7917     4.958000e+02 2.623000e+02
-7 7917     4.916200e+02 2.817700e+02
-8 7917     5.304800e+02 5.164001e+01
-9 7917     3.518199e+02 1.858000e+02
-15 7917     8.725300e+02 3.596200e+02
-0 7918     7.561899e+02 9.503000e+01
-2 7918     6.798800e+02 1.507200e+02
-7 7918     5.904000e+02 3.012100e+02
-9 7918     4.396200e+02 2.316900e+02
-10 7918     7.800400e+02 3.322400e+02
-12 7918     6.934700e+02 3.111800e+02
-0 7919     8.399399e+02 9.395999e+01
-2 7919     7.614301e+02 1.866900e+02
-7 7919     6.699500e+02 3.159800e+02
-0 7920     8.399399e+02 9.395999e+01
-7 7920     6.699500e+02 3.159800e+02
-12 7920     7.869500e+02 3.416000e+02
-0 7921     7.175900e+02 9.323001e+01
-7 7921     5.540100e+02 2.922600e+02
-10 7921     7.339700e+02 3.250100e+02
-0 7922     7.900000e+02 9.098999e+01
-2 7922     7.146899e+02 1.620600e+02
-3 7922     5.680500e+02 -1.450000e+02
-7 7922     6.231400e+02 3.034200e+02
-9 7922     4.683500e+02 2.423800e+02
-10 7922     8.205100e+02 3.312600e+02
-12 7922     7.325200e+02 3.189300e+02
-0 7923     7.900000e+02 9.098999e+01
-2 7923     7.146899e+02 1.620600e+02
-3 7923     5.680500e+02 -1.450000e+02
-7 7923     6.231400e+02 3.034200e+02
-9 7923     4.683500e+02 2.423800e+02
-10 7923     8.205100e+02 3.312600e+02
-12 7923     7.325200e+02 3.189300e+02
-0 7924     7.336100e+02 8.963000e+01
-2 7924     6.585300e+02 1.355900e+02
-3 7924     5.162400e+02 -1.725200e+02
-7 7924     5.695000e+02 2.918700e+02
-9 7924     4.222500e+02 2.181800e+02
-12 7924     6.687600e+02 2.972800e+02
-0 7925     -1.560999e+01 8.862000e+01
-2 7925     7.827002e+01 9.032001e+01
-4 7925     -2.116900e+02 -3.985500e+02
-6 7925     -1.019000e+02 1.062900e+02
-7 7925     -1.202500e+02 1.953300e+02
-8 7925     9.828003e+01 3.051999e+01
-12 7925     -7.787000e+01 1.613500e+02
-15 7925     -6.687000e+01 2.552000e+02
-0 7926     -6.246002e+01 8.648999e+01
-7 7926     -1.717500e+02 1.829800e+02
-10 7926     -1.757800e+02 2.351300e+02
-15 7926     -1.291000e+02 2.458800e+02
-0 7927     7.468800e+02 8.401001e+01
-2 7927     6.742200e+02 1.366100e+02
-7 7927     5.831100e+02 2.891600e+02
-9 7927     4.353800e+02 2.196200e+02
-10 7927     7.697900e+02 3.183000e+02
-12 7927     6.862500e+02 2.966700e+02
-0 7928     7.468800e+02 8.401001e+01
-2 7928     6.742200e+02 1.366100e+02
-3 7928     5.309500e+02 -1.706000e+02
-7 7928     5.831100e+02 2.891600e+02
-9 7928     4.353800e+02 2.196200e+02
-10 7928     7.697900e+02 3.183000e+02
-12 7928     6.862500e+02 2.966700e+02
-0 7929     5.248101e+02 8.345001e+01
-6 7929     3.382800e+02 1.986000e+02
-0 7930     5.248101e+02 8.345001e+01
-6 7930     3.382800e+02 1.986000e+02
-7 7930     3.657000e+02 2.451100e+02
-10 7930     5.091700e+02 2.940600e+02
-15 7930     6.929900e+02 3.237500e+02
-0 7931     -2.633000e+02 8.301999e+01
-2 7931     -4.081700e+02 -1.701200e+02
-7 7931     -4.116500e+02 1.194600e+02
-13 7931     2.909003e+01 -1.991600e+02
-15 7931     -3.898500e+02 2.112800e+02
-0 7932     7.726200e+02 8.163000e+01
-2 7932     7.002500e+02 1.450200e+02
-7 7932     6.078199e+02 2.913700e+02
-10 7932     8.004301e+02 3.180600e+02
-12 7932     7.149900e+02 3.017900e+02
-0 7933     7.726200e+02 8.163000e+01
-2 7933     7.002500e+02 1.450200e+02
-7 7933     6.078199e+02 2.913700e+02
-10 7933     8.004301e+02 3.180600e+02
-12 7933     7.149900e+02 3.017900e+02
-0 7934     5.180200e+02 7.970001e+01
-6 7934     3.300500e+02 1.906800e+02
-7 7934     3.579301e+02 2.399300e+02
-12 7934     4.196801e+02 2.015800e+02
-13 7934     7.270300e+02 -1.391900e+02
-15 7934     6.830000e+02 3.169300e+02
-0 7935     6.268900e+02 7.873999e+01
-2 7935     5.485100e+02 7.123999e+01
-3 7935     4.130200e+02 -2.383700e+02
-6 7935     4.658300e+02 2.338700e+02
-7 7935     4.663800e+02 2.614500e+02
-9 7935     3.312800e+02 1.599900e+02
-10 7935     6.279900e+02 2.990800e+02
-12 7935     5.480000e+02 2.438100e+02
-13 7935     8.395800e+02 -1.244100e+02
-15 7935     8.356600e+02 3.328100e+02
-0 7936     7.716200e+02 7.377002e+01
-2 7936     7.014000e+02 1.374600e+02
-3 7936     5.569600e+02 -1.690200e+02
-7 7936     6.079200e+02 2.839500e+02
-10 7936     7.995900e+02 3.083700e+02
-12 7936     7.160900e+02 2.945000e+02
-0 7937     7.716200e+02 7.377002e+01
-2 7937     7.014000e+02 1.374600e+02
-3 7937     5.569600e+02 -1.690200e+02
-7 7937     6.079200e+02 2.839500e+02
-12 7937     7.160900e+02 2.945000e+02
-0 7938     -3.939001e+01 7.344000e+01
-3 7938     -3.508002e+01 -2.498500e+02
-10 7938     -1.469300e+02 2.230400e+02
-13 7938     3.192700e+02 -1.645300e+02
-0 7939     -3.112000e+01 7.253998e+01
-7 7939     -1.336900e+02 1.768400e+02
-13 7939     3.274900e+02 -1.652200e+02
-15 7939     -8.559003e+01 2.312300e+02
-0 7940     -1.215997e+01 7.133002e+01
-8 7940     1.091200e+02 2.017999e+01
-10 7940     -1.151200e+02 2.231700e+02
-15 7940     -5.997998e+01 2.325200e+02
-0 7941     -4.500200e+02 6.973999e+01
-10 7941     -6.315300e+02 1.767700e+02
-13 7941     -1.373200e+02 -2.223600e+02
-15 7941     -6.447400e+02 1.687600e+02
-0 7942     8.782200e+02 6.390002e+01
-3 7942     6.540100e+02 -1.283700e+02
-7 7942     7.087100e+02 2.940200e+02
-0 7943     5.619200e+02 6.340002e+01
-6 7943     3.900300e+02 1.900000e+02
-7 7943     4.043300e+02 2.330300e+02
-8 7943     4.520100e+02 -9.700012e+00
-10 7943     5.525699e+02 2.746200e+02
-12 7943     4.760699e+02 2.003000e+02
-13 7943     7.745601e+02 -1.478000e+02
-15 7943     7.459500e+02 3.014500e+02
-0 7944     7.684600e+02 6.340002e+01
-7 7944     6.068900e+02 2.732500e+02
-0 7945     1.430100e+02 6.221002e+01
-12 7945     1.251800e+02 1.834000e+02
-0 7946     -4.505200e+02 6.077002e+01
-10 7946     -6.318100e+02 1.661500e+02
-13 7946     -1.356500e+02 -2.298300e+02
-15 7946     -6.442200e+02 1.570800e+02
-0 7947     7.734900e+02 6.020001e+01
-3 7947     5.630300e+02 -1.800700e+02
-7 7947     6.113199e+02 2.714600e+02
-10 7947     8.037200e+02 2.936000e+02
-12 7947     7.227900e+02 2.804100e+02
-0 7948     8.042700e+02 5.856000e+01
-2 7948     7.386200e+02 1.390000e+02
-3 7948     5.916700e+02 -1.666500e+02
-7 7948     6.410200e+02 2.760400e+02
-9 7948     4.891100e+02 2.241300e+02
-12 7948     7.570500e+02 2.926700e+02
-0 7949     4.947600e+02 5.807001e+01
-7 7949     3.379900e+02 2.140800e+02
-10 7949     4.751100e+02 2.611900e+02
-13 7949     7.052800e+02 -1.625800e+02
-15 7949     6.535300e+02 2.838500e+02
-0 7950     7.786100e+02 5.535999e+01
-2 7950     7.150400e+02 1.231900e+02
-3 7950     5.707400e+02 -1.822300e+02
-7 7950     6.172300e+02 2.674900e+02
-9 7950     4.695500e+02 2.095800e+02
-10 7950     8.099200e+02 2.880700e+02
-12 7950     7.303101e+02 2.757800e+02
-0 7951     8.042200e+02 5.332001e+01
-9 7951     4.898199e+02 2.196100e+02
-0 7952     7.959500e+02 5.240997e+01
-2 7952     7.320200e+02 1.283100e+02
-3 7952     5.870300e+02 -1.759400e+02
-7 7952     6.342200e+02 2.679900e+02
-9 7952     4.844000e+02 2.151200e+02
-12 7952     7.497900e+02 2.812400e+02
-0 7953     -1.637700e+02 5.069000e+01
-2 7953     -1.370700e+02 -4.528003e+01
-3 7953     -2.238600e+02 -3.629200e+02
-4 7953     -2.240000e+02 -2.777100e+02
-6 7953     -3.190300e+02 -1.120001e+01
-7 7953     -2.772400e+02 1.238200e+02
-8 7953     -7.156000e+01 -7.253003e+01
-9 7953     -2.262500e+02 3.932001e+01
-10 7953     -2.896300e+02 1.832900e+02
-12 7953     -2.757000e+02 4.712000e+01
-13 7953     1.853101e+02 -2.024900e+02
-15 7953     -2.584500e+02 1.830200e+02
-0 7954     -4.709998e+01 5.058002e+01
-2 7954     5.529999e+01 4.216998e+01
-4 7954     -2.330800e+02 -3.736700e+02
-5 7954     5.659800e+02 -6.168600e+02
-6 7954     -1.261600e+02 5.122998e+01
-7 7954     -1.462500e+02 1.523000e+02
-8 7954     7.847998e+01 -9.529999e+00
-10 7954     -1.533400e+02 1.948900e+02
-12 7954     -1.048000e+02 1.072300e+02
-13 7954     3.157300e+02 -1.850900e+02
-15 7954     -1.040900e+02 1.995300e+02
-0 7955     7.146000e+02 5.028998e+01
-2 7955     6.506500e+02 8.672998e+01
-3 7955     5.115800e+02 -2.188300e+02
-6 7955     5.789600e+02 2.360500e+02
-7 7955     5.563199e+02 2.504400e+02
-8 7955     5.941100e+02 3.801001e+01
-9 7955     4.166000e+02 1.769400e+02
-0 7956     -4.775200e+02 4.922998e+01
-13 7956     -1.579500e+02 -2.415500e+02
-0 7957     5.674500e+02 4.823999e+01
-7 7957     4.118500e+02 2.192900e+02
-0 7958     7.091200e+02 4.779999e+01
-2 7958     6.461500e+02 8.189001e+01
-3 7958     5.068199e+02 -2.244500e+02
-6 7958     5.738101e+02 2.319900e+02
-7 7958     5.515300e+02 2.469500e+02
-8 7958     5.902200e+02 3.445999e+01
-9 7958     4.130300e+02 1.730300e+02
-10 7958     7.273199e+02 2.717100e+02
-12 7958     6.523900e+02 2.417900e+02
-0 7959     8.380300e+02 4.826001e+01
-3 7959     6.250500e+02 -1.604600e+02
-7 7959     6.737700e+02 2.717300e+02
-9 7959     5.173700e+02 2.287800e+02
-0 7960     5.082000e+02 4.745001e+01
-7 7960     3.534900e+02 2.065700e+02
-10 7960     4.923101e+02 2.502800e+02
-12 7960     4.156899e+02 1.615300e+02
-13 7960     7.205000e+02 -1.700000e+02
-15 7960     6.737700e+02 2.711800e+02
-0 7961     -4.683800e+02 4.678998e+01
-2 7961     -6.480700e+02 -2.513100e+02
-13 7961     -1.480000e+02 -2.428600e+02
-15 7961     -6.668500e+02 1.352300e+02
-0 7962     -8.507001e+01 4.704999e+01
-2 7962     -5.510010e+00 6.710022e+00
-3 7962     -9.472998e+01 -3.071500e+02
-6 7962     -1.880800e+02 2.607001e+01
-7 7962     -1.885100e+02 1.389900e+02
-8 7962     2.969000e+01 -3.526001e+01
-9 7962     -1.155800e+02 8.987000e+01
-12 7962     -1.600700e+02 8.204999e+01
-13 7962     2.728199e+02 -1.937700e+02
-0 7963     2.092900e+02 4.625000e+01
-4 7963     -2.680500e+02 -5.795200e+02
-7 7963     1.134800e+02 1.926600e+02
-13 7963     5.467200e+02 -1.654400e+02
-15 7963     2.443199e+02 2.289600e+02
-0 7964     7.940200e+02 4.353998e+01
-2 7964     7.324399e+02 1.195400e+02
-3 7964     5.872100e+02 -1.849700e+02
-7 7964     6.331400e+02 2.593300e+02
-9 7964     4.834800e+02 2.074200e+02
-12 7964     7.491801e+02 2.702000e+02
-0 7965     8.085601e+02 4.331000e+01
-3 7965     6.015300e+02 -1.781700e+02
-9 7965     4.992400e+02 2.135700e+02
-12 7965     7.704500e+02 2.754000e+02
-0 7966     8.631801e+02 4.119000e+01
-2 7966     8.003000e+02 1.490000e+02
-3 7966     6.497900e+02 -1.543500e+02
-7 7966     6.980400e+02 2.699000e+02
-9 7966     5.390200e+02 2.337500e+02
-0 7967     8.631801e+02 4.119000e+01
-2 7967     8.003000e+02 1.490000e+02
-3 7967     6.497900e+02 -1.543500e+02
-7 7967     6.980400e+02 2.699000e+02
-9 7967     5.390200e+02 2.337500e+02
-12 7967     8.258500e+02 2.930700e+02
-0 7968     6.785100e+02 4.037000e+01
-8 7968     5.652700e+02 1.576001e+01
-0 7969     7.622400e+02 4.012000e+01
-2 7969     7.027600e+02 1.010800e+02
-9 7969     4.597400e+02 1.909100e+02
-10 7969     7.914500e+02 2.687800e+02
-0 7970     7.995699e+02 3.978998e+01
-7 7970     6.389500e+02 2.567800e+02
-9 7970     4.896000e+02 2.080800e+02
-0 7971     -6.053800e+02 3.817999e+01
-7 7971     -7.663200e+02 1.557001e+01
-15 7971     -8.574000e+02 1.045800e+02
-0 7972     -6.053800e+02 3.817999e+01
-7 7972     -7.663200e+02 1.557001e+01
-0 7973     4.924800e+02 3.801001e+01
-7 7973     3.383400e+02 1.948600e+02
-10 7973     4.736500e+02 2.381700e+02
-15 7973     6.520200e+02 2.561700e+02
-0 7974     6.948300e+02 3.720001e+01
-3 7974     4.963000e+02 -2.426800e+02
-7 7974     5.390500e+02 2.339800e+02
-10 7974     7.114301e+02 2.574000e+02
-0 7975     8.254301e+02 3.657001e+01
-7 7975     6.637400e+02 2.588800e+02
-9 7975     5.115000e+02 2.153900e+02
-12 7975     7.861300e+02 2.757400e+02
-0 7976     -1.897500e+02 3.553998e+01
-7 7976     -3.002000e+02 1.042700e+02
-10 7976     -3.182900e+02 1.627100e+02
-12 7976     -3.002300e+02 2.246002e+01
-15 7976     -2.922700e+02 1.587800e+02
-0 7977     7.219900e+02 3.541998e+01
-2 7977     6.628500e+02 7.621997e+01
-7 7977     5.656500e+02 2.375000e+02
-0 7978     5.925400e+02 3.406000e+01
-6 7978     4.365500e+02 1.698300e+02
-7 7978     4.387300e+02 2.110500e+02
-10 7978     5.914000e+02 2.436600e+02
-15 7978     7.926500e+02 2.651900e+02
-0 7979     5.925400e+02 3.406000e+01
-6 7979     4.365500e+02 1.698300e+02
-7 7979     4.387300e+02 2.110500e+02
-10 7979     5.914000e+02 2.436600e+02
-15 7979     7.926500e+02 2.651900e+02
-0 7980     -1.122200e+02 3.278998e+01
-6 7980     -2.247400e+02 -3.789978e+00
-7 7980     -2.162000e+02 1.185300e+02
-10 7980     -2.273600e+02 1.678400e+02
-12 7980     -1.940600e+02 5.339001e+01
-13 7980     2.455800e+02 -2.100400e+02
-15 7980     -1.878600e+02 1.661700e+02
-0 7981     2.339100e+02 3.121002e+01
-13 7981     5.689500e+02 -1.765700e+02
-15 7981     2.804200e+02 2.118000e+02
-0 7982     8.272100e+02 3.046002e+01
-2 7982     7.690100e+02 1.220600e+02
-7 7982     6.659600e+02 2.533600e+02
-9 7982     5.142700e+02 2.109500e+02
-12 7982     7.892500e+02 2.688600e+02
-0 7983     5.128800e+02 2.726001e+01
-7 7983     3.603101e+02 1.878600e+02
-13 7983     7.273700e+02 -1.877900e+02
-15 7983     6.823000e+02 2.439500e+02
-0 7984     -8.380300e+02 2.585999e+01
-13 7984     -4.860100e+02 -2.824200e+02
-0 7985     8.188101e+02 2.571002e+01
-2 7985     7.623900e+02 1.142700e+02
-3 7985     6.168800e+02 -1.888700e+02
-7 7985     6.589100e+02 2.470700e+02
-9 7985     5.086700e+02 2.036100e+02
-0 7986     1.314600e+02 2.528003e+01
-7 7986     4.331000e+01 1.617300e+02
-13 7986     4.873600e+02 -1.881100e+02
-15 7986     1.399000e+02 1.898500e+02
-0 7987     1.314600e+02 2.528003e+01
-7 7987     4.331000e+01 1.617300e+02
-13 7987     4.873600e+02 -1.881100e+02
-0 7988     8.488400e+02 2.384998e+01
-2 7988     7.920800e+02 1.265000e+02
-9 7988     5.331600e+02 2.151400e+02
-12 7988     8.155601e+02 2.714000e+02
-0 7989     8.353900e+02 2.347998e+01
-2 7989     7.781500e+02 1.204200e+02
-3 7989     6.310900e+02 -1.823900e+02
-7 7989     6.737300e+02 2.488300e+02
-9 7989     5.217100e+02 2.094700e+02
-0 7990     5.579100e+02 2.253003e+01
-6 7990     3.964100e+02 1.420500e+02
-7 7990     4.064600e+02 1.921700e+02
-10 7990     5.519700e+02 2.256900e+02
-12 7990     4.823500e+02 1.529100e+02
-13 7990     7.754800e+02 -1.855000e+02
-0 7991     8.239700e+02 2.192999e+01
-2 7991     7.689900e+02 1.127000e+02
-3 7991     6.232900e+02 -1.895600e+02
-7 7991     6.641600e+02 2.443100e+02
-9 7991     5.138400e+02 2.023900e+02
-0 7992     5.861300e+02 1.897998e+01
-6 7992     4.325300e+02 1.504300e+02
-12 7992     5.159500e+02 1.613900e+02
-0 7993     6.711801e+02 1.848999e+01
-6 7993     5.362500e+02 1.849400e+02
-7 7993     5.182600e+02 2.114100e+02
-9 7993     3.873600e+02 1.302100e+02
-0 7994     2.298000e+02 1.496997e+01
-7 7994     1.385500e+02 1.656800e+02
-12 7994     2.330200e+02 1.511700e+02
-13 7994     5.687800e+02 -1.896100e+02
-0 7995     7.248500e+02 1.252002e+01
-2 7995     6.727700e+02 5.488000e+01
-7 7995     5.712400e+02 2.163900e+02
-9 7995     4.359200e+02 1.512000e+02
-10 7995     7.486700e+02 2.322900e+02
-0 7996     -1.211400e+02 1.073999e+01
-6 7996     -2.183100e+02 -2.923999e+01
-12 7996     -1.939100e+02 2.878003e+01
-0 7997     6.447300e+02 9.789978e+00
-2 7997     5.881000e+02 9.880005e+00
-3 7997     4.541899e+02 -2.969500e+02
-6 7997     5.081600e+02 1.641900e+02
-7 7997     4.938199e+02 1.977900e+02
-8 7997     5.410900e+02 -2.247000e+01
-9 7997     3.661100e+02 1.104200e+02
-10 7997     6.544100e+02 2.210000e+02
-12 7997     5.894399e+02 1.743200e+02
-15 7997     8.702200e+02 2.384900e+02
-0 7998     8.422000e+02 9.380005e+00
-3 7998     6.444000e+02 -1.920200e+02
-7 7998     6.831200e+02 2.359500e+02
-9 7998     5.319500e+02 2.008900e+02
-0 7999     6.389000e+02 5.520020e+00
-6 7999     5.001801e+02 1.571100e+02
-7 7999     4.882300e+02 1.927800e+02
-8 7999     5.362500e+02 -2.895001e+01
-9 7999     3.614000e+02 1.032300e+02
-12 7999     5.810300e+02 1.662400e+02
-0 8000     6.646300e+02 5.719971e+00
-2 8000     6.107000e+02 1.640997e+01
-6 8000     5.321400e+02 1.682600e+02
-8 8000     5.598400e+02 -1.823999e+01
-9 8000     3.853000e+02 1.171300e+02
-12 8000     6.118400e+02 1.779100e+02
-0 8001     6.646300e+02 5.719971e+00
-2 8001     6.107000e+02 1.640997e+01
-6 8001     5.321400e+02 1.682600e+02
-7 8001     5.137700e+02 1.978600e+02
-8 8001     5.598400e+02 -1.823999e+01
-9 8001     3.853000e+02 1.171300e+02
-10 8001     6.783600e+02 2.182200e+02
-12 8001     6.118400e+02 1.779100e+02
-0 8002     8.648101e+02 2.830017e+00
-2 8002     8.140800e+02 1.140200e+02
-3 8002     6.652700e+02 -1.871100e+02
-7 8002     7.047700e+02 2.340700e+02
-9 8002     5.514800e+02 2.051800e+02
-0 8003     5.420601e+02 1.599976e+00
-7 8003     3.931500e+02 1.689800e+02
-0 8004     5.420601e+02 1.599976e+00
-7 8004     3.931500e+02 1.689800e+02
-0 8005     6.660100e+02 1.479980e+00
-2 8005     6.129700e+02 1.321997e+01
-6 8005     5.347000e+02 1.645400e+02
-7 8005     5.156100e+02 1.945000e+02
-9 8005     3.874200e+02 1.141000e+02
-10 8005     6.799301e+02 2.138000e+02
-12 8005     6.140100e+02 1.752600e+02
-0 8006     -3.600700e+02 1.460022e+00
-4 8006     -2.387800e+02 -1.255300e+02
-13 8006     -3.854999e+01 -2.741400e+02
-15 8006     -5.130900e+02 8.889999e+01
-0 8007     6.784399e+02 -2.330017e+00
-2 8007     6.280300e+02 1.496002e+01
-7 8007     5.283600e+02 1.927700e+02
-8 8007     5.742800e+02 -1.942001e+01
-9 8007     3.995900e+02 1.164000e+02
-10 8007     6.949100e+02 2.100100e+02
-12 8007     6.297500e+02 1.743500e+02
-0 8008     6.784399e+02 -2.330017e+00
-2 8008     6.280300e+02 1.496002e+01
-6 8008     5.507300e+02 1.646300e+02
-7 8008     5.283600e+02 1.927700e+02
-8 8008     5.742800e+02 -1.942001e+01
-9 8008     3.995900e+02 1.164000e+02
-10 8008     6.949100e+02 2.100100e+02
-12 8008     6.297500e+02 1.743500e+02
-0 8009     6.319900e+02 -2.989990e+00
-7 8009     4.828300e+02 1.829300e+02
-15 8009     8.524500e+02 2.193000e+02
-0 8010     4.973999e+01 -3.250000e+00
-7 8010     -3.266998e+01 1.191300e+02
-0 8011     8.742900e+02 -3.510010e+00
-2 8011     8.244399e+02 1.122400e+02
-3 8011     6.747700e+02 -1.885200e+02
-7 8011     7.142300e+02 2.300500e+02
-9 8011     5.606100e+02 2.041400e+02
-0 8012     4.429993e+00 -4.650024e+00
-2 8012     1.516300e+02 1.678003e+01
-7 8012     -8.002002e+01 1.088900e+02
-10 8012     -8.797998e+01 1.359200e+02
-13 8012     3.766200e+02 -2.258200e+02
-15 8012     -2.802002e+01 1.312200e+02
-0 8013     8.691300e+02 -4.510010e+00
-2 8013     8.201300e+02 1.091500e+02
-3 8013     6.712800e+02 -1.914900e+02
-7 8013     7.094301e+02 2.281000e+02
-9 8013     5.561100e+02 2.012700e+02
-0 8014     5.913300e+02 -6.440002e+00
-7 8014     4.432800e+02 1.714300e+02
-10 8014     5.934000e+02 1.964900e+02
-15 8014     7.960699e+02 2.084900e+02
-0 8015     7.180601e+02 -6.859985e+00
-3 8015     5.371200e+02 -2.725100e+02
-7 8015     5.673500e+02 1.965600e+02
-9 8015     4.372000e+02 1.312500e+02
-12 8015     6.800400e+02 1.835800e+02
-0 8016     8.653500e+02 -7.210022e+00
-2 8016     8.176600e+02 1.046900e+02
-3 8016     6.692500e+02 -1.960300e+02
-7 8016     7.064000e+02 2.246500e+02
-9 8016     5.544100e+02 1.975000e+02
-0 8017     -5.520800e+02 -8.530029e+00
-4 8017     -2.223400e+02 -1.151001e+01
-10 8017     -7.465400e+02 7.314001e+01
-0 8018     8.570900e+02 -8.469971e+00
-7 8018     6.989000e+02 2.221100e+02
-9 8018     5.482300e+02 1.929800e+02
-0 8019     -5.565800e+02 -9.169983e+00
-4 8019     -2.221600e+02 -8.489990e+00
-0 8020     4.737000e+01 -9.700012e+00
-2 8020     2.052500e+02 2.946997e+01
-7 8020     -3.458002e+01 1.122000e+02
-10 8020     -3.721997e+01 1.343900e+02
-0 8021     -1.014000e+02 -1.110999e+01
-7 8021     -1.927600e+02 7.926001e+01
-10 8021     -2.098600e+02 1.178700e+02
-0 8022     7.025800e+02 -1.178003e+01
-3 8022     5.211899e+02 -2.853800e+02
-8 8022     5.983101e+02 -1.797000e+01
-9 8022     4.233300e+02 1.201800e+02
-0 8023     7.025800e+02 -1.178003e+01
-3 8023     5.211899e+02 -2.853800e+02
-6 8023     5.825100e+02 1.638800e+02
-7 8023     5.533600e+02 1.884000e+02
-9 8023     4.233300e+02 1.201800e+02
-0 8024     8.712400e+02 -1.214001e+01
-7 8024     7.127800e+02 2.210100e+02
-0 8025     5.967300e+02 -1.203003e+01
-7 8025     4.492900e+02 1.674800e+02
-10 8025     5.997000e+02 1.915600e+02
-12 8025     5.371200e+02 1.299700e+02
-15 8025     8.036500e+02 2.028800e+02
-0 8026     5.530200e+02 -1.512000e+01
-7 8026     4.071700e+02 1.548000e+02
-10 8026     5.492800e+02 1.824300e+02
-12 8026     4.862800e+02 1.091200e+02
-13 8026     7.750100e+02 -2.202000e+02
-0 8027     -2.608100e+02 -1.542999e+01
-3 8027     -4.431800e+02 -5.835000e+02
-4 8027     -2.612700e+02 -1.872200e+02
-8 8027     -2.234300e+02 -2.241100e+02
-13 8027     5.591998e+01 -2.821500e+02
-0 8028     2.360800e+02 -1.763000e+01
-10 8028     1.822700e+02 1.448300e+02
-13 8028     5.792800e+02 -2.181600e+02
-15 8028     2.895900e+02 1.455300e+02
-0 8029     -2.527002e+01 -1.945001e+01
-3 8029     3.144000e+01 -3.220200e+02
-0 8030     -3.846200e+02 -2.037000e+01
-2 8030     -4.915200e+02 -2.868100e+02
-7 8030     -5.131100e+02 -2.109985e+00
-8 8030     -3.463300e+02 -2.526600e+02
-13 8030     -5.478998e+01 -2.945400e+02
-15 8030     -5.426700e+02 5.510999e+01
-0 8031     7.158900e+02 -2.290997e+01
-2 8031     6.736100e+02 1.392999e+01
-3 8031     5.379600e+02 -2.886000e+02
-7 8031     5.674500e+02 1.803900e+02
-9 8031     4.380100e+02 1.173000e+02
-10 8031     7.407400e+02 1.898500e+02
-12 8031     6.782000e+02 1.660400e+02
-0 8032     5.642900e+02 -2.609998e+01
-7 8032     4.192300e+02 1.469800e+02
-15 8032     7.606600e+02 1.772100e+02
-0 8033     -3.692300e+02 -2.634998e+01
-8 8033     -3.280700e+02 -2.540500e+02
-0 8034     2.896700e+02 -2.697998e+01
-12 8034     3.043300e+02 1.140300e+02
-15 8034     3.651700e+02 1.396600e+02
-0 8035     -5.478003e+01 -3.122998e+01
-2 8035     7.840002e+01 -4.375000e+01
-3 8035     -5.640015e+00 -3.545800e+02
-4 8035     -2.877100e+02 -3.653400e+02
-7 8035     -1.393800e+02 6.925000e+01
-13 8035     3.192200e+02 -2.568100e+02
-15 8035     -1.034500e+02 8.698999e+01
-0 8036     6.792500e+02 -3.313000e+01
-3 8036     5.049700e+02 -3.195300e+02
-6 8036     5.602600e+02 1.306000e+02
-7 8036     5.333000e+02 1.632500e+02
-8 8036     5.819000e+02 -4.545001e+01
-9 8036     4.086000e+02 9.092001e+01
-10 8036     6.986600e+02 1.742200e+02
-12 8036     6.387100e+02 1.400500e+02
-0 8037     7.101200e+02 -3.308002e+01
-2 8037     6.701000e+02 9.400024e-01
-3 8037     5.353199e+02 -3.017700e+02
-7 8037     5.630100e+02 1.696500e+02
-9 8037     4.350300e+02 1.060400e+02
-12 8037     6.739200e+02 1.526700e+02
-0 8038     7.101200e+02 -3.308002e+01
-2 8038     6.701000e+02 9.400024e-01
-3 8038     5.353199e+02 -3.017700e+02
-7 8038     5.630100e+02 1.696500e+02
-9 8038     4.350300e+02 1.060400e+02
-12 8038     6.739200e+02 1.526700e+02
-0 8039     6.851200e+02 -3.414001e+01
-6 8039     5.681200e+02 1.313200e+02
-8 8039     5.874600e+02 -4.348001e+01
-9 8039     4.142400e+02 9.248001e+01
-0 8040     1.608900e+02 -3.459998e+01
-2 8040     3.289301e+02 3.321002e+01
-4 8040     -3.196200e+02 -5.426801e+02
-6 8040     1.588800e+02 3.422998e+01
-8 8040     3.010100e+02 -2.160999e+01
-13 8040     5.202800e+02 -2.370600e+02
-0 8041     -3.734000e+02 -3.585999e+01
-7 8041     -4.975100e+02 -1.528003e+01
-9 8041     -5.022300e+02 -1.949800e+02
-13 8041     -4.140997e+01 -3.073000e+02
-15 8041     -5.255900e+02 3.603998e+01
-0 8042     -3.734000e+02 -3.585999e+01
-7 8042     -4.975100e+02 -1.528003e+01
-15 8042     -5.255900e+02 3.603998e+01
-0 8043     6.660500e+02 -3.853003e+01
-2 8043     6.194500e+02 -2.778998e+01
-3 8043     4.907700e+02 -3.322400e+02
-6 8043     5.392500e+02 1.213000e+02
-7 8043     5.163101e+02 1.573200e+02
-8 8043     5.664399e+02 -5.423999e+01
-9 8043     3.930400e+02 8.012000e+01
-10 8043     6.775699e+02 1.699300e+02
-12 8043     6.184600e+02 1.310900e+02
-0 8044     -1.140500e+02 -3.959998e+01
-2 8044     5.809998e+00 -7.815997e+01
-7 8044     -2.000900e+02 4.859003e+01
-8 8044     3.429999e+01 -1.086800e+02
-13 8044     2.626700e+02 -2.698100e+02
-15 8044     -1.818100e+02 6.709998e+01
-0 8045     -4.712400e+02 -4.079999e+01
-2 8045     -5.942000e+02 -3.295800e+02
-7 8045     -6.002700e+02 -3.840997e+01
-8 8045     -4.295300e+02 -2.869500e+02
-0 8046     2.229999e+01 -4.344000e+01
-6 8046     6.820007e+00 -2.313000e+01
-7 8046     -5.464001e+01 7.407001e+01
-8 8046     1.821400e+02 -5.958002e+01
-10 8046     -6.259003e+01 9.297998e+01
-15 8046     1.049988e+00 8.110999e+01
-0 8047     -1.400100e+02 -4.612000e+01
-7 8047     -2.276200e+02 3.639001e+01
-0 8048     -3.355900e+02 -5.026001e+01
-2 8048     -4.080600e+02 -2.994500e+02
-7 8048     -4.541600e+02 -2.240002e+01
-9 8048     -4.509400e+02 -1.933600e+02
-13 8048     -3.549988e+00 -3.171100e+02
-0 8049     -1.360500e+02 -5.058002e+01
-7 8049     -2.221100e+02 3.266998e+01
-10 8049     -2.458700e+02 6.762000e+01
-15 8049     -2.089700e+02 4.910999e+01
-0 8050     -4.675100e+02 -5.075000e+01
-7 8050     -5.942000e+02 -4.629999e+01
-13 8050     -1.244500e+02 -3.267800e+02
-0 8051     2.886899e+02 -5.122998e+01
-2 8051     4.259800e+02 1.409998e+01
-6 8051     2.732300e+02 4.431000e+01
-7 8051     2.026600e+02 1.072600e+02
-8 8051     3.863000e+02 -3.426999e+01
-10 8051     2.453500e+02 1.111500e+02
-12 8051     3.091100e+02 8.384003e+01
-13 8051     6.205900e+02 -2.458600e+02
-15 8051     3.673700e+02 1.065700e+02
-0 8052     6.983500e+02 -5.690997e+01
-2 8052     6.650699e+02 -3.065002e+01
-3 8052     5.324700e+02 -3.323700e+02
-9 8052     4.313500e+02 8.076999e+01
-12 8052     6.672000e+02 1.205400e+02
-0 8053     7.269000e+02 -5.812000e+01
-2 8053     6.953500e+02 -1.578003e+01
-3 8053     5.614399e+02 -3.168000e+02
-7 8053     5.823500e+02 1.491300e+02
-9 8053     4.569301e+02 9.323999e+01
-12 8053     7.000601e+02 1.319600e+02
-0 8054     1.731200e+02 -5.882001e+01
-6 8054     1.780900e+02 1.076001e+01
-0 8055     -4.391300e+02 -6.659998e+01
-7 8055     -5.597500e+02 -5.771002e+01
-8 8055     -3.836200e+02 -2.998000e+02
-13 8055     -9.478003e+01 -3.385300e+02
-15 8055     -6.119600e+02 -1.559003e+01
-0 8056     7.107100e+02 -7.103998e+01
-7 8056     5.687400e+02 1.332900e+02
-9 8056     4.466801e+02 7.434003e+01
-10 8056     7.379301e+02 1.337900e+02
-12 8056     6.850900e+02 1.106700e+02
-0 8057     8.624000e+02 -7.256000e+01
-7 8057     7.122200e+02 1.622800e+02
-0 8058     1.109800e+02 -7.403003e+01
-2 8058     2.948700e+02 -1.852002e+01
-13 8058     4.822500e+02 -2.757200e+02
-15 8058     1.249600e+02 5.152002e+01
-0 8059     -4.531800e+02 -7.626001e+01
-8 8059     -3.939800e+02 -3.098300e+02
-0 8060     2.422700e+02 -7.672998e+01
-6 8060     2.470100e+02 8.780029e+00
-7 8060     1.655200e+02 7.698999e+01
-12 8060     2.741899e+02 5.015997e+01
-13 8060     5.909900e+02 -2.694100e+02
-0 8061     1.245900e+02 -7.715002e+01
-2 8061     3.088500e+02 -2.001001e+01
-7 8061     5.371997e+01 5.871002e+01
-13 8061     4.940699e+02 -2.772700e+02
-15 8061     1.440601e+02 4.976001e+01
-0 8062     -7.940002e+01 -7.765997e+01
-7 8062     -1.540400e+02 2.031000e+01
-15 8062     -1.312800e+02 2.075000e+01
-0 8063     2.469500e+02 -7.894000e+01
-2 8063     4.118400e+02 -6.750000e+00
-3 8063     3.074800e+02 -3.103100e+02
-6 8063     2.510000e+02 7.229980e+00
-7 8063     1.701500e+02 7.559003e+01
-8 8063     3.709300e+02 -5.389001e+01
-10 8063     2.005000e+02 7.539001e+01
-12 8063     2.789000e+02 4.847998e+01
-13 8063     5.946700e+02 -2.710000e+02
-15 8063     3.125601e+02 6.303998e+01
-0 8064     6.969600e+02 -8.098999e+01
-7 8064     5.568900e+02 1.209400e+02
-10 8064     7.227800e+02 1.201800e+02
-0 8065     6.969600e+02 -8.098999e+01
-3 8065     5.397900e+02 -3.575200e+02
-7 8065     5.568900e+02 1.209400e+02
-9 8065     4.374200e+02 5.901001e+01
-10 8065     7.227800e+02 1.201800e+02
-0 8066     6.926001e+01 -8.892999e+01
-2 8066     2.556899e+02 -4.845001e+01
-4 8066     -3.459600e+02 -4.659301e+02
-7 8066     4.400024e-01 3.708002e+01
-8 8066     2.369600e+02 -8.878003e+01
-10 8066     -4.090027e+00 4.523999e+01
-13 8066     4.460000e+02 -2.928100e+02
-15 8066     7.054999e+01 2.566998e+01
-0 8067     3.998400e+02 -8.966998e+01
-6 8067     3.778600e+02 2.535999e+01
-7 8067     3.088300e+02 8.289001e+01
-10 8067     3.784000e+02 7.903998e+01
-12 8067     4.246801e+02 5.646997e+01
-13 8067     7.129399e+02 -2.749200e+02
-15 8067     5.285699e+02 6.865997e+01
-0 8068     3.957001e+01 -9.128003e+01
-2 8068     2.226899e+02 -6.179999e+01
-3 8068     1.347200e+02 -3.671100e+02
-6 8068     4.233002e+01 -7.196997e+01
-7 8068     -2.952002e+01 2.909998e+01
-8 8068     2.095000e+02 -9.896002e+01
-10 8068     -3.801001e+01 3.941998e+01
-12 8068     5.246997e+01 -2.135999e+01
-13 8068     4.187500e+02 -2.978500e+02
-15 8068     3.091998e+01 1.852002e+01
-0 8069     3.957001e+01 -9.128003e+01
-4 8069     -3.429800e+02 -4.413000e+02
-6 8069     4.233002e+01 -7.196997e+01
-7 8069     -2.952002e+01 2.909998e+01
-8 8069     2.095000e+02 -9.896002e+01
-10 8069     -3.801001e+01 3.941998e+01
-13 8069     4.187500e+02 -2.978500e+02
-15 8069     3.091998e+01 1.852002e+01
-0 8070     -3.196997e+01 -9.309003e+01
-7 8070     -1.019000e+02 1.384998e+01
-15 8070     -6.532001e+01 6.400024e+00
-0 8071     -3.196997e+01 -9.309003e+01
-7 8071     -1.019000e+02 1.384998e+01
-15 8071     -6.532001e+01 6.400024e+00
-0 8072     6.945500e+02 -9.298999e+01
-2 8072     6.723000e+02 -6.995001e+01
-12 8072     6.728400e+02 7.910999e+01
-0 8073     5.358800e+02 -9.753003e+01
-7 8073     4.099000e+02 7.764001e+01
-12 8073     5.073800e+02 2.698999e+01
-0 8074     -3.023999e+01 -9.801001e+01
-7 8074     -9.884003e+01 9.559998e+00
-0 8075     7.373600e+02 -9.958002e+01
-2 8075     7.181700e+02 -5.201001e+01
-7 8075     5.975500e+02 1.117700e+02
-9 8075     4.768101e+02 6.366998e+01
-10 8075     7.714301e+02 1.041800e+02
-0 8076     7.315300e+02 -1.008900e+02
-2 8076     7.144399e+02 -5.677002e+01
-3 8076     5.823800e+02 -3.561900e+02
-7 8076     5.927700e+02 1.090400e+02
-9 8076     4.733700e+02 5.965997e+01
-12 8076     7.174100e+02 8.638000e+01
-0 8077     7.315300e+02 -1.008900e+02
-2 8077     7.144399e+02 -5.677002e+01
-7 8077     5.927700e+02 1.090400e+02
-9 8077     4.733700e+02 5.965997e+01
-12 8077     7.174100e+02 8.638000e+01
-0 8078     6.987500e+02 -1.022500e+02
-7 8078     5.613101e+02 1.009700e+02
-0 8079     5.602200e+02 -1.052400e+02
-12 8079     5.357800e+02 2.622998e+01
-0 8080     -9.021002e+01 -1.060200e+02
-7 8080     -1.605600e+02 -1.159003e+01
-15 8080     -1.402800e+02 -1.920001e+01
-0 8081     5.324100e+02 -1.071200e+02
-12 8081     5.075300e+02 1.689001e+01
-0 8082     2.954500e+02 -1.132800e+02
-7 8082     2.212700e+02 4.896997e+01
-15 8082     3.838600e+02 2.306000e+01
-0 8083     6.572800e+02 -1.135200e+02
-7 8083     5.227800e+02 8.142001e+01
-0 8084     -7.996997e+01 -1.158600e+02
-7 8084     -1.483700e+02 -1.928998e+01
-0 8085     7.272200e+02 -1.175600e+02
-7 8085     5.906801e+02 9.192001e+01
-0 8086     -3.228300e+02 -1.205500e+02
-2 8086     -3.418300e+02 -3.561700e+02
-6 8086     -5.184200e+02 -3.153300e+02
-13 8086     2.607001e+01 -3.773200e+02
-0 8087     6.539001e+01 -1.228500e+02
-10 8087     -4.969971e+00 5.789978e+00
-13 8087     4.457800e+02 -3.232500e+02
-0 8088     5.454100e+02 -1.252700e+02
-6 8088     4.567700e+02 -1.258002e+01
-7 8088     4.249100e+02 5.422998e+01
-12 8088     5.299500e+02 3.380005e+00
-0 8089     5.454100e+02 -1.252700e+02
-6 8089     4.567700e+02 -1.258002e+01
-8 8089     5.095400e+02 -1.476800e+02
-12 8089     5.299500e+02 3.380005e+00
-13 8089     8.012000e+02 -3.151200e+02
-0 8090     -1.087100e+02 -1.306600e+02
-3 8090     -5.150024e+00 -4.588600e+02
-6 8090     -1.164500e+02 -1.737400e+02
-7 8090     -1.719800e+02 -3.791998e+01
-10 8090     -2.035100e+02 -2.137000e+01
-15 8090     -1.612100e+02 -5.426001e+01
-0 8091     5.515900e+02 -1.321800e+02
-12 8091     5.387500e+02 -1.549988e+00
-0 8092     5.515900e+02 -1.321800e+02
-12 8092     5.387500e+02 -1.549988e+00
-0 8093     7.572200e+02 -1.322600e+02
-2 8093     7.493101e+02 -7.532001e+01
-7 8093     6.218900e+02 8.419000e+01
-9 8093     5.027400e+02 4.566998e+01
-0 8094     7.572200e+02 -1.322600e+02
-2 8094     7.493101e+02 -7.532001e+01
-7 8094     6.218900e+02 8.419000e+01
-9 8094     5.027400e+02 4.566998e+01
-10 8094     7.979500e+02 6.765002e+01
-12 8094     7.542000e+02 6.203003e+01
-0 8095     6.834003e+01 -1.396200e+02
-7 8095     9.510010e+00 -1.247998e+01
-10 8095     -4.099731e-01 -1.357001e+01
-15 8095     7.542999e+01 -4.290002e+01
-0 8096     -1.246300e+02 -1.449400e+02
-2 8096     5.726001e+01 -1.757100e+02
-3 8096     -1.727002e+01 -4.825200e+02
-6 8096     -1.309100e+02 -1.979200e+02
-8 8096     6.996997e+01 -1.901900e+02
-10 8096     -2.222300e+02 -4.013000e+01
-15 8096     -1.826300e+02 -7.613000e+01
-0 8097     2.680699e+02 -1.449900e+02
-7 8097     2.020400e+02 1.425000e+01
-13 8097     6.232300e+02 -3.276100e+02
-0 8098     8.236300e+02 -1.465500e+02
-2 8098     8.217900e+02 -5.291998e+01
-3 8098     6.861899e+02 -3.482400e+02
-7 8098     6.858400e+02 8.441000e+01
-9 8098     5.614700e+02 6.670001e+01
-0 8099     -1.241998e+01 -1.536300e+02
-2 8099     1.922200e+02 -1.429000e+02
-7 8099     -7.048999e+01 -4.260999e+01
-10 8099     -9.142999e+01 -3.832001e+01
-15 8099     -3.103003e+01 -7.275000e+01
-0 8100     -1.241998e+01 -1.536300e+02
-2 8100     1.922200e+02 -1.429000e+02
-7 8100     -7.048999e+01 -4.260999e+01
-10 8100     -9.142999e+01 -3.832001e+01
-15 8100     -3.103003e+01 -7.275000e+01
-0 8101     -8.634003e+01 -1.587700e+02
-2 8101     1.148300e+02 -1.657100e+02
-3 8101     3.891998e+01 -4.702300e+02
-4 8101     -3.719500e+02 -3.432300e+02
-6 8101     -7.188000e+01 -1.931500e+02
-7 8101     -1.436300e+02 -6.096997e+01
-8 8101     1.162000e+02 -1.847500e+02
-10 8101     -1.761400e+02 -5.233002e+01
-12 8101     -7.438000e+01 -1.387200e+02
-13 8101     3.158400e+02 -3.675000e+02
-15 8101     -1.298900e+02 -8.978003e+01
-0 8102     -1.381600e+02 -1.612000e+02
-4 8102     -3.669700e+02 -2.978000e+02
-10 8102     -2.361300e+02 -5.971002e+01
-15 8102     -1.980600e+02 -9.977002e+01
-0 8103     8.348900e+02 -1.632400e+02
-7 8103     6.981100e+02 7.109003e+01
-9 8103     5.744301e+02 5.867999e+01
-0 8104     8.687200e+02 -1.644600e+02
-3 8104     7.345900e+02 -3.399500e+02
-9 8104     6.017700e+02 7.359003e+01
-0 8105     3.520000e+02 -1.670500e+02
-6 8105     3.811600e+02 -5.939001e+01
-12 8105     4.163800e+02 -2.654999e+01
-0 8106     3.655000e+02 -1.676900e+02
-6 8106     3.959600e+02 -5.528998e+01
-10 8106     3.466600e+02 -1.456000e+01
-15 8106     4.887900e+02 -4.226001e+01
-0 8107     5.340027e+00 -1.691700e+02
-7 8107     -4.929999e+01 -5.423999e+01
-15 8107     -4.969971e+00 -9.133002e+01
-0 8108     -1.984003e+01 -1.724200e+02
-7 8108     -7.353003e+01 -6.191998e+01
-10 8108     -9.791998e+01 -6.103003e+01
-0 8109     2.633002e+01 -1.739600e+02
-7 8109     -2.758002e+01 -5.515002e+01
-10 8109     -4.440997e+01 -5.747998e+01
-0 8110     6.548900e+02 -1.790000e+02
-7 8110     5.352900e+02 2.290002e+01
-0 8111     2.791899e+02 -1.807800e+02
-10 8111     2.475400e+02 -3.871997e+01
-13 8111     6.382100e+02 -3.587400e+02
-0 8112     8.221600e+02 -1.817200e+02
-7 8112     6.888900e+02 5.071002e+01
-9 8112     5.702100e+02 3.790002e+01
-0 8113     8.221600e+02 -1.817200e+02
-7 8113     6.888900e+02 5.071002e+01
-0 8114     -2.096002e+01 -1.822600e+02
-6 8114     1.513000e+01 -1.937700e+02
-12 8114     1.438000e+01 -1.437500e+02
-0 8115     8.643600e+02 -1.880600e+02
-3 8115     7.386500e+02 -3.658800e+02
-7 8115     7.279399e+02 5.309998e+01
-9 8115     6.038500e+02 5.169000e+01
-0 8116     8.694000e+02 -1.888200e+02
-7 8116     7.332500e+02 5.410999e+01
-0 8117     3.676001e+01 -1.934300e+02
-2 8117     2.707200e+02 -1.607100e+02
-3 8117     1.880900e+02 -4.606500e+02
-4 8117     -4.197300e+02 -4.401300e+02
-6 8117     8.544000e+01 -1.848700e+02
-7 8117     -1.195001e+01 -7.156000e+01
-8 8117     2.441500e+02 -1.832700e+02
-10 8117     -3.032001e+01 -7.892999e+01
-12 8117     8.765002e+01 -1.382500e+02
-13 8117     4.334100e+02 -3.870500e+02
-15 8117     4.020001e+01 -1.199900e+02
-0 8118     -8.521002e+01 -1.990300e+02
-2 8118     1.171500e+02 -2.293900e+02
-3 8118     4.178998e+01 -5.344700e+02
-6 8118     -6.945001e+01 -2.492700e+02
-8 8118     1.178200e+02 -2.354200e+02
-9 8118     2.070007e+00 -1.008200e+02
-12 8118     -6.863000e+01 -1.962400e+02
-15 8118     -1.219700e+02 -1.443500e+02
-0 8119     3.119500e+02 -1.990100e+02
-2 8119     5.223101e+02 -1.068500e+02
-3 8119     4.192700e+02 -4.022100e+02
-6 8119     3.632600e+02 -1.006000e+02
-10 8119     2.873600e+02 -5.572998e+01
-12 8119     3.911500e+02 -6.714001e+01
-13 8119     6.719399e+02 -3.711100e+02
-15 8119     4.170000e+02 -9.171002e+01
-0 8120     2.085601e+02 -2.008900e+02
-7 8120     1.564500e+02 -4.890002e+01
-13 8120     5.836300e+02 -3.801700e+02
-15 8120     2.749500e+02 -1.071700e+02
-0 8121     -4.584998e+01 -2.068900e+02
-12 8121     -1.179993e+00 -1.759900e+02
-15 8121     -6.995001e+01 -1.491700e+02
-0 8122     8.512000e+01 -2.118700e+02
-6 8122     1.478800e+02 -1.852200e+02
-13 8122     4.808400e+02 -3.986400e+02
-15 8122     1.080100e+02 -1.387300e+02
-0 8123     8.512000e+01 -2.118700e+02
-6 8123     1.478800e+02 -1.852200e+02
-0 8124     6.546500e+02 -2.168300e+02
-12 8124     6.817200e+02 -5.535999e+01
-0 8125     -4.693600e+02 -2.189300e+02
-4 8125     -3.617000e+02 -5.058002e+01
-7 8125     -5.547100e+02 -2.138200e+02
-15 8125     -6.338500e+02 -2.256000e+02
-0 8126     -3.305900e+02 -2.199500e+02
-7 8126     -4.073900e+02 -1.870600e+02
-0 8127     2.615601e+02 -2.197400e+02
-2 8127     4.967100e+02 -1.286200e+02
-3 8127     3.979200e+02 -4.232100e+02
-6 8127     3.282100e+02 -1.352000e+02
-8 8127     4.364200e+02 -1.585100e+02
-10 8127     2.313900e+02 -8.504999e+01
-12 8127     3.488900e+02 -1.002800e+02
-13 8127     6.355300e+02 -3.920900e+02
-15 8127     3.495400e+02 -1.263300e+02
-0 8128     -3.222800e+02 -2.241000e+02
-7 8128     -3.973400e+02 -1.893600e+02
-0 8129     3.331000e+01 -2.300600e+02
-2 8129     2.842700e+02 -1.980400e+02
-3 8129     2.039700e+02 -4.967900e+02
-6 8129     9.763000e+01 -2.259301e+02
-8 8129     2.536500e+02 -2.147900e+02
-10 8129     -3.028003e+01 -1.220000e+02
-12 8129     9.684998e+01 -1.811300e+02
-13 8129     4.364100e+02 -4.208500e+02
-15 8129     4.065002e+01 -1.708200e+02
-0 8130     2.454301e+02 -2.316000e+02
-6 8130     3.203200e+02 -1.508800e+02
-8 8130     4.307100e+02 -1.680500e+02
-10 8130     2.137000e+02 -1.007200e+02
-12 8130     3.384800e+02 -1.156100e+02
-15 8130     3.285900e+02 -1.447000e+02
-0 8131     2.454301e+02 -2.316000e+02
-7 8131     1.997000e+02 -7.100000e+01
-10 8131     2.137000e+02 -1.007200e+02
-15 8131     3.285900e+02 -1.447000e+02
-0 8132     -4.719100e+02 -2.321000e+02
-4 8132     -3.695900e+02 -4.813000e+01
-0 8133     -3.184600e+02 -2.327600e+02
-7 8133     -3.919500e+02 -1.969100e+02
-10 8133     -4.384900e+02 -1.622800e+02
-0 8134     -3.366200e+02 -2.352100e+02
-7 8134     -4.099700e+02 -2.030700e+02
-0 8135     1.440000e+02 -2.364300e+02
-7 8135     1.031500e+02 -9.339001e+01
-10 8135     9.769000e+01 -1.166500e+02
-15 8135     1.905800e+02 -1.640100e+02
-0 8136     5.658700e+02 -2.382700e+02
-6 8136     5.414800e+02 -1.141600e+02
-7 8136     4.702800e+02 -4.335999e+01
-12 8136     6.039399e+02 -9.808002e+01
-0 8137     1.466998e+01 -2.433300e+02
-2 8137     2.597000e+02 -2.298800e+02
-3 8137     1.811300e+02 -5.286500e+02
-4 8137     -4.547600e+02 -4.186100e+02
-6 8137     7.353998e+01 -2.531300e+02
-7 8137     -2.698999e+01 -1.269500e+02
-8 8137     2.334800e+02 -2.395800e+02
-9 8137     1.205900e+02 -9.402002e+01
-10 8137     -5.087000e+01 -1.372000e+02
-12 8137     7.348999e+01 -2.074400e+02
-15 8137     1.747998e+01 -1.902800e+02
-0 8138     -8.870001e+01 -2.480700e+02
-7 8138     -1.376800e+02 -1.572700e+02
-9 8138     0.000000e+00 -1.691100e+02
-15 8138     -1.188300e+02 -2.111000e+02
-0 8139     1.611200e+02 -2.573600e+02
-2 8139     4.171801e+02 -1.971400e+02
-3 8139     3.285300e+02 -4.924301e+02
-6 8139     2.387300e+02 -2.127100e+02
-7 8139     1.210300e+02 -1.127800e+02
-8 8139     3.662000e+02 -2.153500e+02
-9 8139     2.471300e+02 -6.116998e+01
-10 8139     1.193200e+02 -1.388300e+02
-12 8139     2.493600e+02 -1.755500e+02
-15 8139     2.174600e+02 -1.901700e+02
-0 8140     3.265800e+02 -2.623900e+02
-7 8140     2.699900e+02 -9.576001e+01
-0 8141     -2.974800e+02 -2.635800e+02
-8 8141     -1.352100e+02 -4.185700e+02
-10 8141     -4.100800e+02 -1.968300e+02
-13 8141     8.398999e+01 -5.009600e+02
-15 8141     -3.936200e+02 -2.610600e+02
-0 8142     -8.832001e+01 -2.646200e+02
-2 8142     1.118700e+02 -3.349000e+02
-7 8142     -1.352800e+02 -1.741300e+02
-8 8142     1.142100e+02 -3.181200e+02
-9 8142     2.320007e+00 -1.890000e+02
-10 8142     -1.666900e+02 -1.738400e+02
-15 8142     -1.152500e+02 -2.327500e+02
-0 8143     6.301200e+02 -2.647100e+02
-2 8143     7.167000e+02 -2.156300e+02
-12 8143     6.804600e+02 -1.071600e+02
-0 8144     2.861801e+02 -2.769400e+02
-7 8144     2.359500e+02 -1.157700e+02
-10 8144     2.641801e+02 -1.483400e+02
-15 8144     3.933800e+02 -2.014800e+02
-0 8145     2.009399e+02 -2.833000e+02
-4 8145     -5.295600e+02 -5.746400e+02
-0 8146     -2.532900e+02 -2.865900e+02
-13 8146     1.336800e+02 -5.162300e+02
-0 8147     7.613400e+02 -2.899100e+02
-7 8147     6.538500e+02 -5.941998e+01
-0 8148     1.646000e+02 -3.142800e+02
-7 8148     1.292400e+02 -1.725100e+02
-0 8149     1.694100e+02 -3.166200e+02
-7 8149     1.337100e+02 -1.739000e+02
-15 8149     2.384200e+02 -2.693900e+02
-0 8150     1.694100e+02 -3.166200e+02
-7 8150     1.337100e+02 -1.739000e+02
-10 8150     1.347000e+02 -2.058900e+02
-15 8150     2.384200e+02 -2.693900e+02
-0 8151     1.619600e+02 -3.213700e+02
-13 8151     5.483300e+02 -5.009900e+02
-15 8151     2.287900e+02 -2.768500e+02
-0 8152     1.619600e+02 -3.213700e+02
-7 8152     1.270900e+02 -1.800800e+02
-10 8152     1.270700e+02 -2.116200e+02
-15 8152     2.287900e+02 -2.768500e+02
-0 8153     -3.901001e+01 -3.230100e+02
-4 8153     -5.110700e+02 -3.616800e+02
-6 8153     1.322998e+01 -3.872600e+02
-7 8153     -7.378998e+01 -2.225500e+02
-10 8153     -1.038100e+02 -2.357100e+02
-12 8153     1.623999e+01 -3.410400e+02
-13 8153     3.598300e+02 -5.225601e+02
-15 8153     -4.190002e+01 -3.051000e+02
-0 8154     2.075601e+02 -3.244400e+02
-2 8154     4.543900e+02 -2.959200e+02
-3 8154     3.668700e+02 -5.915800e+02
-4 8154     -5.686800e+02 -5.734700e+02
-6 8154     2.837500e+02 -2.886400e+02
-8 8154     3.992600e+02 -2.927900e+02
-12 8154     3.035400e+02 -2.569500e+02
-15 8154     2.928300e+02 -2.753700e+02
-0 8155     2.080400e+02 -3.351900e+02
-2 8155     4.551700e+02 -3.136400e+02
-7 8155     1.711400e+02 -1.871700e+02
-10 8155     1.815800e+02 -2.225400e+02
-12 8155     3.061801e+02 -2.721900e+02
-13 8155     5.859900e+02 -5.128000e+02
-15 8155     2.948800e+02 -2.899900e+02
-0 8156     6.139001e+01 -3.387300e+02
-2 8156     3.129900e+02 -3.607700e+02
-7 8156     2.922998e+01 -2.181700e+02
-8 8156     2.782100e+02 -3.439800e+02
-9 8156     1.687500e+02 -2.013200e+02
-10 8156     1.409998e+01 -2.425200e+02
-13 8156     4.544200e+02 -5.275500e+02
-15 8156     9.621002e+01 -3.133700e+02
-0 8157     7.245100e+02 -3.770100e+02
-7 8157     6.414700e+02 -1.425900e+02
-12 8157     8.268700e+02 -1.874600e+02
-0 8158     -1.484998e+01 -3.773400e+02
-7 8158     -3.797998e+01 -2.706200e+02
-15 8158     -2.460022e+00 -3.751700e+02
-0 8159     4.918000e+02 -3.837900e+02
-6 8159     5.539100e+02 -2.774301e+02
-0 8160     4.754900e+02 -3.905100e+02
-6 8160     5.425800e+02 -2.892000e+02
-7 8160     4.227100e+02 -1.980500e+02
-0 8161     4.754900e+02 -3.905100e+02
-7 8161     4.227100e+02 -1.980500e+02
-0 8162     4.803900e+02 -3.905500e+02
-6 8162     5.470699e+02 -2.880300e+02
-0 8163     6.253800e+02 -3.959400e+02
-7 8163     5.591300e+02 -1.767100e+02
-12 8163     7.407900e+02 -2.342600e+02
-0 8164     -2.577900e+02 -4.028600e+02
-6 8164     -2.310900e+02 -5.938101e+02
-7 8164     -2.856200e+02 -3.510900e+02
-9 8164     -1.159700e+02 -4.064700e+02
-0 8165     -1.842999e+01 -4.076700e+02
-7 8165     -3.954999e+01 -3.040700e+02
-15 8165     -2.270020e+00 -4.168200e+02
-0 8166     6.127400e+02 -4.086600e+02
-7 8166     5.508600e+02 -1.902800e+02
-15 8166     8.684900e+02 -3.421700e+02
-0 8167     4.451300e+02 -4.098300e+02
-6 8167     5.245800e+02 -3.184200e+02
-0 8168     7.888800e+02 -4.100000e+02
-7 8168     7.030000e+02 -1.604600e+02
-0 8169     -1.427400e+02 -4.175800e+02
-7 8169     -1.638500e+02 -3.402300e+02
-15 8169     -1.678300e+02 -4.463500e+02
-0 8170     5.531801e+02 -4.183500e+02
-10 8170     5.857400e+02 -2.817900e+02
-12 8170     6.793300e+02 -2.763000e+02
-15 8170     7.855200e+02 -3.625400e+02
-0 8171     4.685000e+02 -4.252200e+02
-6 8171     5.566801e+02 -3.246400e+02
-7 8171     4.250200e+02 -2.309900e+02
-0 8172     6.364600e+02 -4.262500e+02
-7 8172     5.756600e+02 -2.014100e+02
-12 8172     7.657700e+02 -2.591500e+02
-0 8173     8.707001e+01 -4.343000e+02
-7 8173     7.084998e+01 -3.085800e+02
-0 8174     8.363900e+02 -4.391801e+02
-7 8174     7.489500e+02 -1.774700e+02
-0 8175     4.448500e+02 -4.465400e+02
-7 8175     4.087500e+02 -2.548000e+02
-0 8176     7.566500e+02 -4.466000e+02
-7 8176     6.841000e+02 -1.982100e+02
-0 8177     5.584900e+02 -4.914399e+02
-10 8177     5.989399e+02 -3.645500e+02
-12 8177     7.215601e+02 -3.460100e+02
-0 8178     4.491899e+02 -4.968600e+02
-6 8178     5.800200e+02 -3.986500e+02
-0 8179     -1.762200e+02 -4.997200e+02
-6 8179     -6.653003e+01 -6.580601e+02
-0 8180     3.974000e+02 -5.090300e+02
-2 8180     6.997700e+02 -4.465601e+02
-0 8181     1.211000e+02 -5.207200e+02
-2 8181     4.575699e+02 -5.462800e+02
-0 8182     -3.100100e+02 -5.259000e+02
-7 8182     -3.091300e+02 -4.826200e+02
-0 8183     4.059998e+00 -5.358600e+02
-7 8183     1.141998e+01 -4.245300e+02
-0 8184     7.337000e+02 -5.367300e+02
-7 8184     6.838101e+02 -2.820500e+02
-0 8185     1.703003e+01 -5.399500e+02
-9 8185     2.272500e+02 -3.922100e+02
-0 8186     -6.926001e+01 -5.427000e+02
-4 8186     -6.973600e+02 -3.316900e+02
-7 8186     -5.963000e+01 -4.467400e+02
-9 8186     1.594399e+02 -4.256100e+02
-10 8186     -1.141300e+02 -4.916801e+02
-0 8187     2.316998e+01 -5.484100e+02
-2 8187     3.809900e+02 -6.041899e+02
-7 8187     3.265002e+01 -4.321700e+02
-9 8187     2.382600e+02 -3.951900e+02
-12 8187     1.749600e+02 -5.848800e+02
-0 8188     -7.789900e+02 -5.496300e+02
-4 8188     -5.396900e+02 1.681800e+02
-0 8189     5.079399e+02 -5.519200e+02
-7 8189     4.903000e+02 -3.379500e+02
-12 8189     7.018500e+02 -4.215900e+02
-0 8190     -1.462000e+01 -5.540400e+02
-4 8190     -7.225600e+02 -3.777100e+02
-7 8190     -2.830017e+00 -4.454301e+02
-9 8190     2.121500e+02 -4.122800e+02
-0 8191     5.840500e+02 -5.596700e+02
-7 8191     5.599700e+02 -3.307500e+02
-0 8192     -1.706000e+01 -5.618700e+02
-4 8192     -7.307900e+02 -3.766700e+02
-7 8192     -3.140015e+00 -4.537200e+02
-9 8192     2.168101e+02 -4.184600e+02
-12 8192     1.361600e+02 -6.147800e+02
-0 8193     9.625000e+01 -5.786899e+02
-7 8193     1.116000e+02 -4.460699e+02
-10 8193     7.879999e+01 -5.135900e+02
-0 8194     3.953800e+02 -5.785000e+02
-7 8194     3.944000e+02 -3.848300e+02
-0 8195     -2.902800e+02 -5.793101e+02
-6 8195     -1.458300e+02 -8.007900e+02
-7 8195     -2.749600e+02 -5.310699e+02
-0 8196     5.113000e+01 -5.800100e+02
-4 8196     -7.676700e+02 -4.369600e+02
-7 8196     6.826001e+01 -4.565300e+02
-9 8196     2.835699e+02 -4.046500e+02
-12 8196     2.233000e+02 -6.101700e+02
-0 8197     5.113000e+01 -5.800100e+02
-7 8197     6.826001e+01 -4.565300e+02
-0 8198     5.844600e+02 5.842200e+02
-2 8198     3.291600e+02 4.858500e+02
-3 8198     1.829900e+02 1.490700e+02
-6 8198     2.473700e+02 7.658200e+02
-11 8198     6.486000e+02 -1.628800e+02
-0 8199     -3.157900e+02 5.799700e+02
-2 8199     -6.001100e+02 3.569900e+02
-4 8199     8.027002e+01 -1.890700e+02
-5 8199     1.050400e+02 -6.722998e+01
-8 8199     -4.138200e+02 2.686500e+02
-12 8199     -6.719500e+02 5.657900e+02
-13 8199     -5.647998e+01 2.219400e+02
-0 8200     -2.322200e+02 5.789200e+02
-4 8200     7.429999e+01 -2.339200e+02
-11 8200     -5.744000e+01 -2.023300e+02
-13 8200     9.030029e+00 2.250700e+02
-0 8201     3.804399e+02 5.781400e+02
-2 8201     3.072998e+01 3.471500e+02
-5 8201     7.807900e+02 -5.644000e+01
-6 8201     -8.767001e+01 6.948300e+02
-9 8201     -1.283500e+02 3.768100e+02
-11 8201     4.839200e+02 -1.778900e+02
-13 8201     4.877800e+02 2.597600e+02
-14 8201     6.775900e+02 -1.375200e+02
-0 8202     -4.515500e+02 5.756100e+02
-2 8202     -7.419000e+02 3.558500e+02
-8 8202     -5.289600e+02 2.642600e+02
-11 8202     -2.417900e+02 -2.057300e+02
-13 8202     -1.622400e+02 2.126200e+02
-14 8202     -1.096600e+02 -1.671900e+02
-0 8203     -4.515500e+02 5.756100e+02
-2 8203     -7.419000e+02 3.558500e+02
-8 8203     -5.289600e+02 2.642600e+02
-13 8203     -1.622400e+02 2.126200e+02
-14 8203     -1.096600e+02 -1.671900e+02
-0 8204     9.291998e+01 5.758700e+02
-2 8204     -2.131700e+02 3.447200e+02
-3 8204     -3.460400e+02 1.128003e+01
-4 8204     5.329999e+01 -4.227600e+02
-5 8204     4.968500e+02 -6.883002e+01
-6 8204     -3.906000e+02 6.370900e+02
-9 8204     -3.361200e+02 3.673400e+02
-0 8205     5.939100e+02 5.744700e+02
-6 8205     2.617800e+02 7.576200e+02
-8 8205     3.489300e+02 3.716800e+02
-9 8205     1.430100e+02 5.021600e+02
-0 8206     3.287000e+02 5.698400e+02
-5 8206     7.290100e+02 -6.754999e+01
-8 8206     6.915002e+01 2.655300e+02
-13 8206     4.435300e+02 2.486100e+02
-0 8207     -5.894200e+02 5.691400e+02
-13 8207     -2.697400e+02 2.017300e+02
-14 8207     -2.387800e+02 -1.740500e+02
-0 8208     -5.894200e+02 5.691400e+02
-4 8208     8.903003e+01 -4.831000e+01
-5 8208     -1.547100e+02 -7.988000e+01
-11 8208     -3.541100e+02 -2.123700e+02
-13 8208     -2.697400e+02 2.017300e+02
-14 8208     -2.387800e+02 -1.740500e+02
-0 8209     -4.017400e+02 5.662000e+02
-2 8209     -6.890600e+02 3.424600e+02
-4 8209     7.765002e+01 -1.421000e+02
-5 8209     2.140002e+01 -8.178003e+01
-12 8209     -7.724300e+02 5.363400e+02
-13 8209     -1.238400e+02 2.069800e+02
-14 8209     -6.452002e+01 -1.763500e+02
-0 8210     -1.635600e+02 5.636400e+02
-2 8210     -4.496100e+02 3.346000e+02
-3 8210     -5.742500e+02 4.969971e+00
-4 8210     6.134998e+01 -2.703200e+02
-5 8210     2.492400e+02 -8.527002e+01
-12 8210     -4.947100e+02 5.624100e+02
-13 8210     6.228003e+01 2.151000e+02
-14 8210     1.593000e+02 -1.754300e+02
-0 8211     1.414001e+01 5.629700e+02
-6 8211     -4.756700e+02 6.064100e+02
-8 8211     -1.540300e+02 2.538300e+02
-11 8211     1.562900e+02 -2.093100e+02
-12 8211     -3.003800e+02 5.835400e+02
-0 8212     2.350500e+02 5.621200e+02
-8 8212     7.000000e+00 2.555500e+02
-13 8212     3.734900e+02 2.372800e+02
-0 8213     2.350500e+02 5.621200e+02
-8 8213     7.000000e+00 2.555500e+02
-13 8213     3.734900e+02 2.372800e+02
-0 8214     -4.870000e+02 5.610500e+02
-2 8214     -7.801600e+02 3.388500e+02
-4 8214     8.047998e+01 -9.821002e+01
-11 8214     -2.721500e+02 -2.185200e+02
-0 8215     4.125000e+02 5.601300e+02
-2 8215     5.953003e+01 3.287600e+02
-13 8215     5.140300e+02 2.469000e+02
-14 8215     7.103700e+02 -1.540400e+02
-0 8216     -3.447700e+02 5.576700e+02
-2 8216     -6.290100e+02 3.307900e+02
-0 8217     4.379600e+02 5.571900e+02
-6 8217     -2.428003e+01 6.807100e+02
-9 8217     -8.633002e+01 3.600500e+02
-11 8217     5.393700e+02 -1.923700e+02
-13 8217     5.346600e+02 2.460000e+02
-14 8217     7.358400e+02 -1.555400e+02
-0 8218     5.702100e+02 5.538300e+02
-2 8218     3.214301e+02 4.550200e+02
-3 8218     1.767800e+02 1.200900e+02
-6 8218     2.370500e+02 7.301100e+02
-8 8218     3.321500e+02 3.513400e+02
-11 8218     6.416400e+02 -1.886600e+02
-0 8219     -4.387500e+02 5.498700e+02
-13 8219     -1.530200e+02 1.924700e+02
-0 8220     -5.604300e+02 5.483100e+02
-4 8220     7.848999e+01 -5.996002e+01
-5 8220     -1.310600e+02 -9.815002e+01
-13 8220     -2.485000e+02 1.853800e+02
-14 8220     -2.149300e+02 -1.946300e+02
-0 8221     2.644800e+02 5.474600e+02
-11 8221     3.820100e+02 -2.115600e+02
-14 8221     5.669200e+02 -1.755700e+02
-0 8222     5.200699e+02 5.482500e+02
-6 8222     1.778200e+02 7.085000e+02
-9 8222     8.204999e+01 4.580600e+02
-11 8222     6.004500e+02 -1.982600e+02
-13 8222     6.591600e+02 2.538100e+02
-0 8223     2.139800e+02 5.474400e+02
-4 8223     2.979999e+01 -4.996300e+02
-5 8223     6.155300e+02 -9.433002e+01
-6 8223     -2.552900e+02 6.257800e+02
-8 8223     -6.349976e+00 2.458800e+02
-9 8223     -2.427100e+02 3.441500e+02
-11 8223     3.358600e+02 -2.135500e+02
-12 8223     -8.798999e+01 5.932400e+02
-13 8223     3.574200e+02 2.228900e+02
-0 8224     6.127200e+02 5.471100e+02
-2 8224     3.682100e+02 4.630500e+02
-9 8224     1.662200e+02 4.880600e+02
-11 8224     6.800200e+02 -1.927600e+02
-13 8224     7.489100e+02 2.624700e+02
-0 8225     -3.092500e+02 5.432800e+02
-4 8225     5.956000e+01 -1.887100e+02
-7 8225     -5.428700e+02 5.821100e+02
-11 8225     -1.236500e+02 -2.326800e+02
-12 8225     -6.581200e+02 5.192900e+02
-0 8226     -3.092500e+02 5.432800e+02
-2 8226     -5.932500e+02 3.124800e+02
-4 8226     5.956000e+01 -1.887100e+02
-5 8226     1.076700e+02 -1.057600e+02
-8 8226     -4.075800e+02 2.339400e+02
-12 8226     -6.581200e+02 5.192900e+02
-0 8227     2.122100e+02 5.384900e+02
-2 8227     -1.052400e+02 3.041000e+02
-4 8227     2.435999e+01 -4.977000e+02
-5 8227     6.137300e+02 -1.042800e+02
-6 8227     -2.552800e+02 6.130600e+02
-8 8227     -6.609985e+00 2.359900e+02
-9 8227     -2.425900e+02 3.353400e+02
-11 8227     3.347600e+02 -2.220200e+02
-14 8227     5.174301e+02 -1.873300e+02
-0 8228     -4.453500e+02 5.375400e+02
-2 8228     -7.359200e+02 3.102500e+02
-4 8228     6.570001e+01 -1.167700e+02
-5 8228     -2.334003e+01 -1.095000e+02
-7 8228     -6.855200e+02 5.635400e+02
-8 8228     -5.236100e+02 2.288300e+02
-11 8228     -2.388900e+02 -2.372400e+02
-12 8228     -8.209200e+02 4.963200e+02
-13 8228     -1.590200e+02 1.814500e+02
-14 8228     -1.082800e+02 -2.046000e+02
-0 8229     -1.093600e+02 5.373600e+02
-2 8229     -3.964200e+02 3.028900e+02
-5 8229     2.998600e+02 -1.116200e+02
-0 8230     -1.093600e+02 5.373600e+02
-2 8230     -3.964200e+02 3.028900e+02
-3 8230     -5.234300e+02 -2.703998e+01
-4 8230     4.334003e+01 -2.988100e+02
-5 8230     2.998600e+02 -1.116200e+02
-8 8230     -2.464900e+02 2.301300e+02
-11 8230     4.908002e+01 -2.350700e+02
-12 8230     -4.300100e+02 5.381500e+02
-0 8231     6.726600e+02 5.380800e+02
-9 8231     2.618000e+02 5.379800e+02
-0 8232     6.390200e+02 5.355100e+02
-2 8232     4.433400e+02 5.053000e+02
-3 8232     2.959100e+02 1.687500e+02
-8 8232     4.280200e+02 3.874900e+02
-9 8232     2.327900e+02 5.262300e+02
-11 8232     6.996300e+02 -2.012500e+02
-13 8232     7.978101e+02 2.597900e+02
-0 8233     2.532900e+02 5.354700e+02
-13 8233     3.899700e+02 2.157300e+02
-14 8233     5.588800e+02 -1.878400e+02
-0 8234     6.812600e+02 5.340100e+02
-2 8234     4.867300e+02 5.175300e+02
-3 8234     3.370000e+02 1.806900e+02
-6 8234     4.194400e+02 7.430000e+02
-8 8234     4.635800e+02 3.963200e+02
-9 8234     2.701100e+02 5.376500e+02
-13 8234     8.378400e+02 2.624200e+02
-0 8235     2.374900e+02 5.312500e+02
-3 8235     -2.227300e+02 -3.733002e+01
-9 8235     -2.227600e+02 3.283700e+02
-0 8236     -3.217100e+02 5.245300e+02
-2 8236     -6.054800e+02 2.904600e+02
-4 8236     5.034003e+01 -1.802200e+02
-5 8236     9.353998e+01 -1.246600e+02
-7 8236     -5.531600e+02 5.611200e+02
-8 8236     -4.178800e+02 2.161100e+02
-12 8236     -6.698300e+02 4.946400e+02
-0 8237     -3.217100e+02 5.245300e+02
-5 8237     9.353998e+01 -1.246600e+02
-0 8238     -4.340700e+02 5.215200e+02
-2 8238     -7.236900e+02 2.898900e+02
-4 8238     5.662000e+01 -1.209600e+02
-5 8238     -1.442999e+01 -1.258200e+02
-8 8238     -5.138700e+02 2.126000e+02
-13 8238     -1.504600e+02 1.690800e+02
-14 8238     -9.907001e+01 -2.201400e+02
-0 8239     -3.045200e+02 5.196600e+02
-2 8239     -5.879700e+02 2.849100e+02
-4 8239     4.660999e+01 -1.890100e+02
-7 8239     -5.344100e+02 5.578300e+02
-0 8240     -3.045200e+02 5.196600e+02
-2 8240     -5.879700e+02 2.849100e+02
-4 8240     4.660999e+01 -1.890100e+02
-5 8240     1.097300e+02 -1.297200e+02
-7 8240     -5.344100e+02 5.578300e+02
-8 8240     -4.026500e+02 2.124100e+02
-12 8240     -6.481200e+02 4.916800e+02
-0 8241     -4.428900e+02 5.194700e+02
-2 8241     -7.332600e+02 2.878700e+02
-4 8241     5.616998e+01 -1.160600e+02
-5 8241     -2.334003e+01 -1.280700e+02
-0 8242     -2.093200e+02 5.179400e+02
-2 8242     -4.922200e+02 2.807100e+02
-4 8242     3.915002e+01 -2.405800e+02
-5 8242     2.016400e+02 -1.320400e+02
-7 8242     -4.371800e+02 5.652800e+02
-8 8242     -3.254400e+02 2.109800e+02
-11 8242     -3.796997e+01 -2.529600e+02
-12 8242     -5.388200e+02 5.019700e+02
-0 8243     2.233002e+01 5.118200e+02
-14 8243     3.350800e+02 -2.223600e+02
-0 8244     7.546100e+02 5.115800e+02
-2 8244     5.670900e+02 5.252900e+02
-6 8244     5.112300e+02 7.389700e+02
-8 8244     5.306801e+02 4.023000e+02
-0 8245     -3.214700e+02 5.085300e+02
-2 8245     -6.052800e+02 2.718800e+02
-5 8245     9.208002e+01 -1.410300e+02
-7 8245     -5.504300e+02 5.440100e+02
-0 8246     4.514500e+02 5.093100e+02
-3 8246     -5.160999e+01 -5.521002e+01
-6 8246     -1.570007e+00 6.248900e+02
-9 8246     -6.904999e+01 3.180000e+02
-11 8246     5.592000e+02 -2.331300e+02
-0 8247     -9.799805e-01 5.069800e+02
-2 8247     -2.925500e+02 2.684500e+02
-3 8247     -4.228500e+02 -6.337000e+01
-4 8247     1.914001e+01 -3.601400e+02
-5 8247     4.040200e+02 -1.419700e+02
-6 8247     -4.815200e+02 5.307700e+02
-7 8247     -2.286600e+02 5.752200e+02
-8 8247     -1.606000e+02 2.050400e+02
-9 8247     -4.005000e+02 2.978800e+02
-12 8247     -3.065300e+02 5.170900e+02
-13 8247     1.894399e+02 1.760600e+02
-14 8247     3.126500e+02 -2.282300e+02
-0 8248     5.486300e+02 5.049500e+02
-2 8248     3.103300e+02 4.042000e+02
-3 8248     1.662800e+02 7.151001e+01
-6 8248     2.222400e+02 6.705100e+02
-9 8248     1.172500e+02 4.349000e+02
-11 8248     6.315500e+02 -2.328000e+02
-13 8248     6.922100e+02 2.223100e+02
-0 8249     6.924000e+02 5.050000e+02
-2 8249     5.039900e+02 4.958800e+02
-6 8249     4.379500e+02 7.157000e+02
-9 8249     2.839200e+02 5.196000e+02
-0 8250     7.233300e+02 5.049000e+02
-2 8250     5.347500e+02 5.060300e+02
-3 8250     3.819800e+02 1.700800e+02
-6 8250     4.741400e+02 7.226900e+02
-8 8250     5.043800e+02 3.860700e+02
-9 8250     3.113600e+02 5.285000e+02
-11 8250     7.804600e+02 -2.241000e+02
-0 8251     1.088300e+02 5.042000e+02
-2 8251     -1.923200e+02 2.657500e+02
-6 8251     -3.586600e+02 5.500800e+02
-7 8251     -1.218300e+02 5.837300e+02
-8 8251     -7.917999e+01 2.051700e+02
-9 8251     -3.149300e+02 2.986400e+02
-0 8252     4.523000e+02 5.007700e+02
-13 8252     5.492400e+02 1.999400e+02
-14 8252     7.568600e+02 -2.117700e+02
-0 8253     -6.929300e+02 4.989200e+02
-4 8253     5.340002e+01 2.923999e+01
-5 8253     -3.404700e+02 -1.505500e+02
-0 8254     3.525000e+01 4.969900e+02
-2 8254     -2.579400e+02 2.569600e+02
-3 8254     -3.900900e+02 -7.491998e+01
-4 8254     1.078998e+01 -3.814800e+02
-5 8254     4.395699e+02 -1.522200e+02
-6 8254     -4.386100e+02 5.249300e+02
-7 8254     -1.918700e+02 5.685100e+02
-9 8254     -3.704300e+02 2.884700e+02
-13 8254     2.180699e+02 1.693200e+02
-0 8255     7.367200e+02 4.967000e+02
-2 8255     5.498800e+02 5.021000e+02
-3 8255     3.962300e+02 1.675700e+02
-0 8256     -6.956700e+02 4.939800e+02
-4 8256     5.121997e+01 3.229999e+01
-11 8256     -4.378000e+02 -2.704000e+02
-0 8257     6.519200e+02 4.925100e+02
-2 8257     4.669600e+02 4.711700e+02
-3 8257     3.192500e+02 1.377400e+02
-6 8257     3.938100e+02 6.916400e+02
-9 8257     2.534800e+02 4.967700e+02
-0 8258     1.687000e+01 4.898100e+02
-4 8258     8.059998e+00 -3.692900e+02
-7 8258     -2.094900e+02 5.594700e+02
-11 8258     1.619000e+02 -2.721400e+02
-0 8259     1.687000e+01 4.898100e+02
-2 8259     -2.745500e+02 2.515000e+02
-7 8259     -2.094900e+02 5.594700e+02
-8 8259     -1.465800e+02 1.924600e+02
-11 8259     1.619000e+02 -2.721400e+02
-0 8260     -5.867999e+01 4.872100e+02
-4 8260     1.146002e+01 -3.237900e+02
-5 8260     3.458500e+02 -1.647900e+02
-6 8260     -5.432300e+02 4.920400e+02
-7 8260     -2.832300e+02 5.478400e+02
-8 8260     -2.053200e+02 1.833900e+02
-11 8260     9.521997e+01 -2.762400e+02
-0 8261     1.180300e+02 4.866400e+02
-2 8261     -1.799100e+02 2.494100e+02
-0 8262     8.101500e+02 4.856400e+02
-9 8262     3.874500e+02 5.440700e+02
-0 8263     -3.044100e+02 4.851700e+02
-2 8263     -5.889000e+02 2.424700e+02
-4 8263     2.770001e+01 -1.846600e+02
-5 8263     1.051100e+02 -1.659300e+02
-7 8263     -5.305700e+02 5.205200e+02
-8 8263     -4.037900e+02 1.786500e+02
-12 8263     -6.446900e+02 4.476100e+02
-0 8264     -2.960999e+01 4.845800e+02
-2 8264     -3.180100e+02 2.417700e+02
-3 8264     -4.488700e+02 -8.942999e+01
-6 8264     -5.093700e+02 4.951800e+02
-9 8264     -4.216900e+02 2.734700e+02
-13 8264     1.665300e+02 1.550800e+02
-0 8265     -2.960999e+01 4.845800e+02
-2 8265     -3.180100e+02 2.417700e+02
-4 8265     7.900024e+00 -3.408900e+02
-5 8265     3.754800e+02 -1.660700e+02
-6 8265     -5.093700e+02 4.951800e+02
-8 8265     -1.818500e+02 1.831100e+02
-9 8265     -4.216900e+02 2.734700e+02
-0 8266     1.970100e+02 4.843800e+02
-9 8266     -2.466400e+02 2.826700e+02
-11 8266     3.261200e+02 -2.694100e+02
-0 8267     5.065400e+02 4.842100e+02
-6 8267     1.749100e+02 6.331800e+02
-0 8268     5.065400e+02 4.842100e+02
-2 8268     2.683000e+02 3.689700e+02
-3 8268     1.262300e+02 3.746002e+01
-6 8268     1.749100e+02 6.331800e+02
-8 8268     2.890500e+02 2.811200e+02
-13 8268     6.532200e+02 2.007300e+02
-0 8269     6.868900e+02 4.835000e+02
-2 8269     5.044800e+02 4.767000e+02
-3 8269     3.545800e+02 1.429000e+02
-6 8269     4.370400e+02 6.923200e+02
-8 8269     4.779301e+02 3.648900e+02
-9 8269     2.850200e+02 5.027600e+02
-13 8269     8.493600e+02 2.239200e+02
-0 8270     5.284600e+02 4.809400e+02
-6 8270     2.022100e+02 6.370300e+02
-9 8270     1.035900e+02 4.083100e+02
-0 8271     5.284600e+02 4.809400e+02
-6 8271     2.022100e+02 6.370300e+02
-9 8271     1.035900e+02 4.083100e+02
-0 8272     -9.908002e+01 4.802400e+02
-2 8272     -3.833500e+02 2.373000e+02
-3 8272     -5.116200e+02 -9.320001e+01
-4 8272     9.849976e+00 -2.995400e+02
-5 8272     3.064700e+02 -1.722600e+02
-7 8272     -3.214600e+02 5.369800e+02
-8 8272     -2.355400e+02 1.783300e+02
-11 8272     5.959998e+01 -2.832900e+02
-13 8272     1.125200e+02 1.478300e+02
-14 8272     2.181000e+02 -2.596600e+02
-0 8273     -5.433002e+01 4.789200e+02
-4 8273     6.440002e+00 -3.256800e+02
-5 8273     3.503600e+02 -1.732100e+02
-6 8273     -5.366200e+02 4.815000e+02
-11 8273     9.946997e+01 -2.832800e+02
-0 8274     7.865900e+02 4.789600e+02
-2 8274     6.027300e+02 5.049200e+02
-3 8274     4.452100e+02 1.703300e+02
-6 8274     5.516700e+02 7.110600e+02
-8 8274     5.606400e+02 3.849200e+02
-0 8275     -5.560100e+02 4.769200e+02
-5 8275     -1.382200e+02 -1.702100e+02
-7 8275     -7.953300e+02 4.858100e+02
-11 8275     -3.356000e+02 -2.867200e+02
-13 8275     -2.485700e+02 1.259500e+02
-14 8275     -2.203900e+02 -2.662600e+02
-0 8276     2.404000e+02 4.759100e+02
-2 8276     -7.346002e+01 2.355200e+02
-5 8276     6.437200e+02 -1.695100e+02
-6 8276     -2.130000e+02 5.397300e+02
-7 8276     6.719971e+00 5.678800e+02
-9 8276     -2.126500e+02 2.762900e+02
-11 8276     3.667100e+02 -2.749600e+02
-13 8276     3.805300e+02 1.636700e+02
-14 8276     5.486300e+02 -2.505000e+02
-0 8277     -3.542100e+02 4.753200e+02
-2 8277     -6.384600e+02 2.310700e+02
-5 8277     5.722998e+01 -1.750700e+02
-0 8278     -3.542100e+02 4.753200e+02
-2 8278     -6.384600e+02 2.310700e+02
-5 8278     5.722998e+01 -1.750700e+02
-0 8279     2.039600e+02 4.751400e+02
-3 8279     -2.450100e+02 -9.798999e+01
-4 8279     -1.350000e+01 -4.874100e+02
-5 8279     6.057200e+02 -1.713600e+02
-6 8279     -2.527000e+02 5.316400e+02
-7 8279     -2.834003e+01 5.638300e+02
-8 8279     -7.159973e+00 1.812800e+02
-11 8279     3.327400e+02 -2.769200e+02
-13 8279     3.509800e+02 1.610700e+02
-0 8280     1.003003e+01 4.743400e+02
-4 8280     -7.999878e-01 -3.636900e+02
-5 8280     4.133900e+02 -1.765500e+02
-6 8280     -4.633000e+02 4.902500e+02
-7 8280     -2.139500e+02 5.426000e+02
-8 8280     -1.508400e+02 1.748900e+02
-11 8280     1.568700e+02 -2.855300e+02
-13 8280     1.982400e+02 1.487500e+02
-14 8280     3.234301e+02 -2.618100e+02
-0 8281     -9.460999e+01 4.719600e+02
-2 8281     -3.784300e+02 2.271800e+02
-3 8281     -5.076200e+02 -1.029400e+02
-4 8281     5.380005e+00 -3.016500e+02
-5 8281     3.104399e+02 -1.805300e+02
-6 8281     -5.814600e+02 4.656500e+02
-7 8281     -3.161600e+02 5.292400e+02
-8 8281     -2.317800e+02 1.703800e+02
-11 8281     6.366998e+01 -2.902800e+02
-12 8281     -4.022800e+02 4.620600e+02
-13 8281     1.158300e+02 1.411600e+02
-14 8281     2.221600e+02 -2.675100e+02
-0 8282     -4.205700e+02 4.709400e+02
-4 8282     2.889001e+01 -1.251600e+02
-5 8282     -6.059998e+00 -1.787300e+02
-8 8282     -4.998700e+02 1.641900e+02
-0 8283     -1.871300e+02 4.704400e+02
-2 8283     -4.677800e+02 2.255300e+02
-4 8283     1.096002e+01 -2.485500e+02
-5 8283     2.200300e+02 -1.819400e+02
-7 8283     -4.079500e+02 5.179700e+02
-11 8283     -1.820001e+01 -2.931600e+02
-12 8283     -5.053700e+02 4.472500e+02
-13 8283     4.303003e+01 1.354200e+02
-14 8283     1.331000e+02 -2.710400e+02
-0 8284     -1.039500e+02 4.694600e+02
-2 8284     -3.870600e+02 2.241400e+02
-3 8284     -5.158300e+02 -1.060100e+02
-5 8284     3.014301e+02 -1.829200e+02
-7 8284     -3.248300e+02 5.256300e+02
-0 8285     -1.039500e+02 4.694600e+02
-2 8285     -3.870600e+02 2.241400e+02
-3 8285     -5.158300e+02 -1.060100e+02
-7 8285     -3.248300e+02 5.256300e+02
-0 8286     -1.039500e+02 4.694600e+02
-4 8286     4.320007e+00 -2.958300e+02
-5 8286     3.014301e+02 -1.829200e+02
-7 8286     -3.248300e+02 5.256300e+02
-8 8286     -2.387400e+02 1.671600e+02
-0 8287     -5.339600e+02 4.680400e+02
-4 8287     3.515002e+01 -6.388000e+01
-0 8288     -8.840997e+01 4.635400e+02
-2 8288     -3.724400e+02 2.167900e+02
-3 8288     -5.018200e+02 -1.132800e+02
-7 8288     -3.099900e+02 5.204500e+02
-11 8288     6.895001e+01 -2.976000e+02
-0 8289     1.478998e+01 4.635300e+02
-2 8289     -2.743900e+02 2.178800e+02
-4 8289     -7.700012e+00 -3.654400e+02
-5 8289     4.175300e+02 -1.881100e+02
-6 8289     -4.559800e+02 4.761500e+02
-7 8289     -2.082300e+02 5.319700e+02
-8 8289     -1.464100e+02 1.649300e+02
-9 8289     -3.830000e+02 2.545700e+02
-12 8289     -2.826500e+02 4.672300e+02
-13 8289     2.020200e+02 1.393100e+02
-14 8289     3.277800e+02 -2.737500e+02
-0 8290     -2.265700e+02 4.619100e+02
-4 8290     9.150024e+00 -2.258000e+02
-5 8290     1.807300e+02 -1.908800e+02
-7 8290     -4.468500e+02 5.043900e+02
-8 8290     -3.372700e+02 1.601600e+02
-11 8290     -5.356000e+01 -3.005900e+02
-12 8290     -5.486800e+02 4.306200e+02
-0 8291     -5.270900e+02 4.607000e+02
-4 8291     3.075000e+01 -6.597998e+01
-5 8291     -1.126000e+02 -1.873000e+02
-7 8291     -7.607500e+02 4.707200e+02
-13 8291     -2.267700e+02 1.131300e+02
-14 8291     -1.955900e+02 -2.830600e+02
-0 8292     7.849900e+02 4.610200e+02
-9 8292     3.698400e+02 5.153400e+02
-0 8293     4.989500e+02 4.593400e+02
-2 8293     2.656200e+02 3.444000e+02
-3 8293     1.239600e+02 1.400000e+01
-6 8293     1.700700e+02 6.053400e+02
-8 8293     2.861300e+02 2.620200e+02
-9 8293     8.022998e+01 3.807100e+02
-11 8293     5.953700e+02 -2.747700e+02
-12 8293     2.812900e+02 5.921600e+02
-13 8293     6.484100e+02 1.802200e+02
-0 8294     -5.054999e+01 4.556200e+02
-13 8294     1.549800e+02 1.301300e+02
-14 8294     2.696899e+02 -2.829300e+02
-0 8295     1.421002e+01 4.531000e+02
-2 8295     -2.741200e+02 2.051400e+02
-4 8295     -1.378003e+01 -3.641300e+02
-5 8295     4.168101e+02 -1.989100e+02
-6 8295     -4.545100e+02 4.628700e+02
-7 8295     -2.073400e+02 5.206200e+02
-8 8295     -1.460400e+02 1.547600e+02
-9 8295     -3.821900e+02 2.435100e+02
-11 8295     1.612500e+02 -3.042300e+02
-13 8295     2.016000e+02 1.294800e+02
-14 8295     3.272400e+02 -2.851700e+02
-0 8296     7.919900e+02 4.531900e+02
-2 8296     6.136899e+02 4.843900e+02
-6 8296     5.636200e+02 6.858700e+02
-0 8297     8.426300e+02 4.518500e+02
-2 8297     6.616400e+02 4.996000e+02
-3 8297     4.996899e+02 1.661300e+02
-9 8297     4.175699e+02 5.255600e+02
-0 8298     8.705601e+02 4.518000e+02
-2 8298     6.895500e+02 5.112100e+02
-3 8298     5.245300e+02 1.768200e+02
-9 8298     4.402800e+02 5.358000e+02
-0 8299     -6.833500e+02 4.497000e+02
-4 8299     2.650000e+01 3.364001e+01
-5 8299     -3.547600e+02 -2.027600e+02
-13 8299     -4.205400e+02 8.617999e+01
-14 8299     -4.319900e+02 -3.027600e+02
-0 8300     5.021000e+02 4.474000e+02
-2 8300     2.719900e+02 3.327300e+02
-3 8300     1.304700e+02 3.049988e+00
-8 8300     2.910300e+02 2.518800e+02
-9 8300     8.609998e+01 3.723100e+02
-11 8300     6.000800e+02 -2.867200e+02
-12 8300     2.876600e+02 5.779700e+02
-13 8300     6.526100e+02 1.697700e+02
-0 8301     5.021000e+02 4.474000e+02
-2 8301     2.719900e+02 3.327300e+02
-3 8301     1.304700e+02 3.049988e+00
-6 8301     1.764600e+02 5.925400e+02
-8 8301     2.910300e+02 2.518800e+02
-9 8301     8.609998e+01 3.723100e+02
-11 8301     6.000800e+02 -2.867200e+02
-12 8301     2.876600e+02 5.779700e+02
-13 8301     6.526100e+02 1.697700e+02
-0 8302     5.237400e+02 4.469900e+02
-2 8302     2.965900e+02 3.409900e+02
-3 8302     1.541800e+02 1.146002e+01
-8 8302     3.110200e+02 2.579600e+02
-9 8302     1.070400e+02 3.804700e+02
-0 8303     3.499756e-01 4.453000e+02
-2 8303     -2.861300e+02 1.965200e+02
-4 8303     -1.684003e+01 -3.556100e+02
-5 8303     4.034900e+02 -2.071900e+02
-6 8303     -4.680100e+02 4.510300e+02
-7 8303     -2.194800e+02 5.118400e+02
-9 8303     -3.918500e+02 2.351000e+02
-11 8303     1.494800e+02 -3.118700e+02
-12 8303     -2.937500e+02 4.450600e+02
-13 8303     1.909301e+02 1.230200e+02
-14 8303     3.140000e+02 -2.932100e+02
-0 8304     1.358002e+01 4.450400e+02
-2 8304     -2.741200e+02 1.972100e+02
-3 8304     -4.071500e+02 -1.332400e+02
-4 8304     -1.803003e+01 -3.633400e+02
-5 8304     4.158400e+02 -2.074000e+02
-6 8304     -4.536400e+02 4.532100e+02
-7 8304     -2.068900e+02 5.129300e+02
-8 8304     -1.460100e+02 1.487100e+02
-11 8304     1.611700e+02 -3.115500e+02
-12 8304     -2.805600e+02 4.462300e+02
-13 8304     2.012200e+02 1.240300e+02
-14 8304     3.266600e+02 -2.925300e+02
-0 8305     -3.155000e+02 4.390100e+02
-7 8305     -5.348000e+02 4.705000e+02
-11 8305     -1.314500e+02 -3.205200e+02
-12 8305     -6.482700e+02 3.891700e+02
-13 8305     -5.938000e+01 1.030700e+02
-0 8306     -2.017400e+02 4.392600e+02
-4 8306     -5.710022e+00 -2.373100e+02
-5 8306     2.030800e+02 -2.151400e+02
-7 8306     -4.188300e+02 4.832800e+02
-11 8306     -3.159003e+01 -3.210500e+02
-0 8307     -2.054800e+02 4.331000e+02
-7 8307     -4.214700e+02 4.763100e+02
-11 8307     -3.464001e+01 -3.259900e+02
-0 8308     -2.274300e+02 4.323200e+02
-2 8308     -5.066200e+02 1.786200e+02
-4 8308     -7.330017e+00 -2.224600e+02
-5 8308     1.773700e+02 -2.221000e+02
-7 8308     -4.437700e+02 4.733700e+02
-8 8308     -3.360100e+02 1.301100e+02
-11 8308     -5.419000e+01 -3.265000e+02
-12 8308     -5.448700e+02 3.944000e+02
-14 8308     9.246002e+01 -3.115200e+02
-0 8309     -3.135500e+02 4.244500e+02
-2 8309     -5.949000e+02 1.682100e+02
-4 8309     -5.049988e+00 -1.744800e+02
-5 8309     9.198999e+01 -2.300400e+02
-7 8309     -5.304100e+02 4.552500e+02
-8 8309     -4.076900e+02 1.205500e+02
-12 8309     -6.421400e+02 3.716000e+02
-14 8309     7.539978e+00 -3.213000e+02
-0 8310     -4.150600e+02 4.214000e+02
-5 8310     -8.919983e+00 -2.308400e+02
-0 8311     -2.260500e+02 4.200200e+02
-2 8311     -5.055200e+02 1.640400e+02
-5 8311     1.772300e+02 -2.348800e+02
-7 8311     -4.414400e+02 4.612500e+02
-8 8311     -3.354300e+02 1.190100e+02
-11 8311     -5.383002e+01 -3.365700e+02
-12 8311     -5.420700e+02 3.811200e+02
-13 8311     1.096997e+01 9.054999e+01
-14 8311     9.171002e+01 -3.247000e+02
-0 8312     -4.428400e+02 4.191200e+02
-2 8312     -7.311700e+02 1.624600e+02
-5 8312     -3.459003e+01 -2.323700e+02
-8 8312     -5.203500e+02 1.129100e+02
-10 8312     -6.751100e+02 6.021800e+02
-12 8312     -7.945400e+02 3.466500e+02
-13 8312     -1.620000e+02 8.123001e+01
-0 8313     -2.481200e+02 4.186800e+02
-7 8313     -4.630900e+02 4.567900e+02
-10 8313     -4.354600e+02 6.169400e+02
-11 8313     -7.335999e+01 -3.384300e+02
-13 8313     -6.210022e+00 8.801001e+01
-14 8313     7.040997e+01 -3.267200e+02
-0 8314     -1.135900e+02 4.193100e+02
-2 8314     -3.938000e+02 1.636700e+02
-4 8314     -2.360999e+01 -2.854000e+02
-5 8314     2.884600e+02 -2.364300e+02
-7 8314     -3.281400e+02 4.726000e+02
-8 8314     -2.436700e+02 1.207200e+02
-13 8314     1.005700e+02 9.522000e+01
-14 8314     2.019900e+02 -3.234100e+02
-0 8315     -3.940600e+02 4.158200e+02
-2 8315     -6.809700e+02 1.576200e+02
-5 8315     1.090002e+01 -2.368800e+02
-12 8315     -7.373600e+02 3.487000e+02
-0 8316     -3.940600e+02 4.158200e+02
-2 8316     -6.809700e+02 1.576200e+02
-5 8316     1.090002e+01 -2.368800e+02
-12 8316     -7.373600e+02 3.487000e+02
-0 8317     -2.384300e+02 4.162500e+02
-2 8317     -5.162800e+02 1.608100e+02
-0 8318     -2.384300e+02 4.162500e+02
-2 8318     -5.162800e+02 1.608100e+02
-7 8318     -4.521200e+02 4.568400e+02
-8 8318     -3.438000e+02 1.167200e+02
-11 8318     -6.365002e+01 -3.391000e+02
-12 8318     -5.536000e+02 3.773100e+02
-0 8319     -3.550700e+02 4.155500e+02
-2 8319     -6.387000e+02 1.561200e+02
-4 8319     -6.840027e+00 -1.508800e+02
-5 8319     4.953003e+01 -2.391600e+02
-7 8319     -5.718800e+02 4.409800e+02
-11 8319     -1.672300e+02 -3.412300e+02
-12 8319     -6.901900e+02 3.532800e+02
-13 8319     -9.145001e+01 8.048999e+01
-0 8320     6.661700e+02 4.126200e+02
-2 8320     5.016500e+02 4.064100e+02
-3 8320     3.541899e+02 7.792999e+01
-6 8320     4.298900e+02 6.103700e+02
-8 8320     4.747600e+02 3.042700e+02
-9 8320     2.840699e+02 4.423400e+02
-11 8320     7.505000e+02 -3.098600e+02
-12 8320     5.123000e+02 6.175300e+02
-13 8320     8.381000e+02 1.636700e+02
-0 8321     -2.917500e+02 4.095200e+02
-2 8321     -5.702200e+02 1.522300e+02
-5 8321     1.128500e+02 -2.477900e+02
-8 8321     -3.879500e+02 1.064700e+02
-0 8322     -2.434300e+02 4.015100e+02
-13 8322     -2.630005e+00 7.359003e+01
-0 8323     6.104900e+02 4.009400e+02
-2 8323     4.464301e+02 3.753500e+02
-3 8323     3.025300e+02 4.778003e+01
-6 8323     3.654400e+02 5.824900e+02
-7 8323     4.081600e+02 5.692600e+02
-8 8323     4.286600e+02 2.800100e+02
-11 8323     7.011700e+02 -3.240700e+02
-12 8323     4.510400e+02 5.875400e+02
-13 8323     7.854600e+02 1.482200e+02
-0 8324     6.044600e+02 3.990900e+02
-2 8324     4.408000e+02 3.717900e+02
-3 8324     2.973199e+02 4.403003e+01
-6 8324     3.588300e+02 5.792100e+02
-7 8324     4.026100e+02 5.671900e+02
-8 8324     4.242700e+02 2.778100e+02
-9 8324     2.329100e+02 4.114200e+02
-11 8324     6.956600e+02 -3.258400e+02
-12 8324     4.448800e+02 5.849000e+02
-13 8324     7.799700e+02 1.464700e+02
-0 8325     -1.005800e+02 3.954000e+02
-2 8325     -3.790500e+02 1.351800e+02
-3 8325     -5.110000e+02 -1.961200e+02
-4 8325     -3.854999e+01 -2.908600e+02
-5 8325     3.000400e+02 -2.626100e+02
-6 8325     -5.739900e+02 3.625800e+02
-7 8325     -3.121500e+02 4.491300e+02
-8 8325     -2.319300e+02 9.807001e+01
-9 8325     -4.690500e+02 1.781700e+02
-12 8325     -3.958800e+02 3.687500e+02
-14 8325     2.144200e+02 -3.487400e+02
-0 8326     -3.092900e+02 3.920100e+02
-2 8326     -5.895700e+02 1.274100e+02
-5 8326     9.226001e+01 -2.647400e+02
-8 8326     -4.042100e+02 8.835001e+01
-12 8326     -6.316700e+02 3.316300e+02
-0 8327     -3.092900e+02 3.920100e+02
-2 8327     -5.895700e+02 1.274100e+02
-4 8327     -2.388000e+01 -1.737700e+02
-5 8327     9.226001e+01 -2.647400e+02
-7 8327     -5.204800e+02 4.210400e+02
-12 8327     -6.316700e+02 3.316300e+02
-13 8327     -5.397998e+01 6.201001e+01
-14 8327     1.045001e+01 -3.562800e+02
-0 8328     -3.111500e+02 3.861000e+02
-2 8328     -5.923200e+02 1.199900e+02
-7 8328     -5.234400e+02 4.150600e+02
-10 8328     -5.068500e+02 5.721000e+02
-0 8329     -3.111500e+02 3.861000e+02
-2 8329     -5.923200e+02 1.199900e+02
-4 8329     -2.647998e+01 -1.707800e+02
-7 8329     -5.234400e+02 4.150600e+02
-10 8329     -5.068500e+02 5.721000e+02
-11 8329     -1.302300e+02 -3.671100e+02
-0 8330     1.965997e+01 3.851000e+02
-2 8330     -2.630400e+02 1.253100e+02
-5 8330     4.204800e+02 -2.730400e+02
-8 8330     -1.370600e+02 9.185999e+01
-12 8330     -2.629100e+02 3.747400e+02
-13 8330     2.067300e+02 7.209998e+01
-14 8330     3.327100e+02 -3.575300e+02
-0 8331     1.965997e+01 3.851000e+02
-2 8331     -2.630400e+02 1.253100e+02
-4 8331     -5.463000e+01 -3.623000e+02
-5 8331     4.204800e+02 -2.730400e+02
-6 8331     -4.352900e+02 3.751900e+02
-7 8331     -1.929100e+02 4.519600e+02
-9 8331     -3.690200e+02 1.733900e+02
-10 8331     -1.100900e+02 6.012900e+02
-11 8331     1.708800e+02 -3.647300e+02
-12 8331     -2.629100e+02 3.747400e+02
-13 8331     2.067300e+02 7.209998e+01
-14 8331     3.327100e+02 -3.575300e+02
-0 8332     -5.495000e+02 3.840800e+02
-7 8332     -7.732600e+02 3.850000e+02
-14 8332     -2.275800e+02 -3.630200e+02
-0 8333     -3.219600e+02 3.834900e+02
-4 8333     -2.690997e+01 -1.653200e+02
-5 8333     7.873999e+01 -2.735400e+02
-7 8333     -5.333100e+02 4.113400e+02
-10 8333     -5.196600e+02 5.674200e+02
-11 8333     -1.392300e+02 -3.685300e+02
-12 8333     -6.459800e+02 3.193700e+02
-13 8333     -6.575000e+01 5.507001e+01
-0 8334     5.326500e+02 3.812100e+02
-2 8334     3.226801e+02 2.819500e+02
-3 8334     1.808600e+02 -4.457001e+01
-6 8334     2.334400e+02 5.252900e+02
-7 8334     3.218199e+02 5.283200e+02
-8 8334     3.317000e+02 2.095100e+02
-9 8334     1.307800e+02 3.303900e+02
-11 8334     6.400900e+02 -3.462700e+02
-12 8334     3.393500e+02 5.173300e+02
-13 8334     6.894399e+02 1.182200e+02
-0 8335     -4.870600e+02 3.793500e+02
-5 8335     -8.620001e+01 -2.747100e+02
-8 8335     -5.599700e+02 7.244000e+01
-11 8335     -2.843800e+02 -3.709800e+02
-0 8336     -4.870600e+02 3.793500e+02
-8 8336     -5.599700e+02 7.244000e+01
-11 8336     -2.843800e+02 -3.709800e+02
-0 8337     5.455000e+02 3.728900e+02
-2 8337     3.424600e+02 2.790600e+02
-6 8337     2.535000e+02 5.190700e+02
-7 8337     3.359399e+02 5.223600e+02
-8 8337     3.466600e+02 2.066900e+02
-9 8337     1.451400e+02 3.282700e+02
-13 8337     7.054000e+02 1.118300e+02
-0 8338     -2.176300e+02 3.683400e+02
-2 8338     -4.940700e+02 9.772998e+01
-4 8338     -4.454999e+01 -2.213800e+02
-5 8338     1.811000e+02 -2.924000e+02
-7 8338     -4.249900e+02 4.063000e+02
-8 8338     -3.251700e+02 6.762000e+01
-11 8338     -4.632001e+01 -3.835300e+02
-12 8338     -5.221700e+02 3.157600e+02
-0 8339     5.537000e+02 3.676700e+02
-6 8339     2.638200e+02 5.161700e+02
-7 8339     3.446300e+02 5.189500e+02
-11 8339     6.620100e+02 -3.578600e+02
-0 8340     6.726100e+02 3.643600e+02
-2 8340     5.214600e+02 3.647200e+02
-3 8340     3.744399e+02 3.919000e+01
-7 8340     4.743300e+02 5.431200e+02
-11 8340     7.685400e+02 -3.566700e+02
-0 8341     5.614000e+02 3.623000e+02
-3 8341     2.172700e+02 -4.982001e+01
-6 8341     2.757000e+02 5.128900e+02
-7 8341     3.529800e+02 5.150600e+02
-9 8341     1.630500e+02 3.260400e+02
-12 8341     3.780100e+02 5.066000e+02
-0 8342     5.477700e+02 3.612900e+02
-3 8342     2.023900e+02 -5.650000e+01
-6 8342     2.575600e+02 5.069000e+02
-7 8342     3.394500e+02 5.118300e+02
-8 8342     3.491700e+02 1.986900e+02
-9 8342     1.500800e+02 3.196700e+02
-11 8342     6.578000e+02 -3.643300e+02
-12 8342     3.613700e+02 4.998900e+02
-13 8342     7.065000e+02 1.028700e+02
-0 8343     -4.602100e+02 3.582700e+02
-10 8343     -6.865000e+02 5.249800e+02
-13 8343     -1.760100e+02 2.770001e+01
-15 8343     -7.060200e+02 5.680100e+02
-0 8344     4.934000e+02 3.566500e+02
-2 8344     2.810100e+02 2.422600e+02
-3 8344     1.432500e+02 -8.483002e+01
-6 8344     1.887300e+02 4.842200e+02
-9 8344     9.812000e+01 2.938600e+02
-10 8344     4.477200e+02 6.177300e+02
-11 8344     6.079200e+02 -3.712900e+02
-12 8344     2.987700e+02 4.764800e+02
-0 8345     8.403600e+02 3.565800e+02
-2 8345     6.850800e+02 4.198600e+02
-0 8346     -6.951500e+02 3.559300e+02
-13 8346     -4.274700e+02 4.820007e+00
-14 8346     -4.512300e+02 -4.028800e+02
-0 8347     5.539100e+02 3.530600e+02
-2 8347     3.536500e+02 2.636900e+02
-3 8347     2.113700e+02 -6.070001e+01
-6 8347     2.682900e+02 5.018900e+02
-7 8347     3.468101e+02 5.049400e+02
-9 8347     1.578400e+02 3.157400e+02
-12 8347     3.713500e+02 4.957400e+02
-13 8347     7.135699e+02 9.698999e+01
-0 8348     5.539100e+02 3.530600e+02
-2 8348     3.536500e+02 2.636900e+02
-3 8348     2.113700e+02 -6.070001e+01
-7 8348     3.468101e+02 5.049400e+02
-9 8348     1.578400e+02 3.157400e+02
-11 8348     6.653800e+02 -3.699800e+02
-12 8348     3.713500e+02 4.957400e+02
-13 8348     7.135699e+02 9.698999e+01
-0 8349     6.652800e+02 3.527900e+02
-2 8349     5.167300e+02 3.526800e+02
-3 8349     3.703500e+02 2.814001e+01
-6 8349     4.438800e+02 5.465900e+02
-7 8349     4.689200e+02 5.319400e+02
-8 8349     4.867800e+02 2.600900e+02
-9 8349     2.981000e+02 3.971100e+02
-11 8349     7.643900e+02 -3.668800e+02
-12 8349     5.261500e+02 5.549800e+02
-13 8349     8.450200e+02 1.148000e+02
-0 8350     -5.630000e+02 3.475200e+02
-4 8350     -2.648999e+01 -3.392999e+01
-5 8350     -1.658700e+02 -3.064500e+02
-11 8350     -3.533800e+02 -3.973500e+02
-0 8351     -5.630000e+02 3.475200e+02
-4 8351     -2.648999e+01 -3.392999e+01
-5 8351     -1.658700e+02 -3.064500e+02
-11 8351     -3.533800e+02 -3.973500e+02
-13 8351     -2.628100e+02 1.200000e+01
-0 8352     -4.115200e+02 3.466400e+02
-4 8352     -4.006000e+01 -1.127100e+02
-7 8352     -6.204700e+02 3.617200e+02
-8 8352     -4.913700e+02 3.954001e+01
-11 8352     -2.198100e+02 -4.004700e+02
-15 8352     -6.345100e+02 5.577700e+02
-0 8353     -3.600400e+02 3.467400e+02
-2 8353     -6.422700e+02 6.757001e+01
-4 8353     -4.459998e+01 -1.406200e+02
-8 8353     -4.459700e+02 4.070001e+01
-10 8353     -5.606900e+02 5.184200e+02
-12 8353     -6.846500e+02 2.668700e+02
-15 8353     -5.627400e+02 5.646900e+02
-0 8354     7.784500e+02 3.469900e+02
-6 8354     5.752500e+02 5.734700e+02
-7 8354     5.783000e+02 5.453800e+02
-8 8354     5.816600e+02 2.890500e+02
-9 8354     3.933900e+02 4.319700e+02
-12 8354     6.542700e+02 5.870300e+02
-0 8355     -5.533100e+02 3.444600e+02
-4 8355     -2.895001e+01 -3.865997e+01
-5 8355     -1.570800e+02 -3.101700e+02
-7 8355     -7.712200e+02 3.413400e+02
-10 8355     -8.016800e+02 5.008200e+02
-11 8355     -3.449000e+02 -3.998200e+02
-13 8355     -2.539100e+02 1.179999e+01
-15 8355     -8.345400e+02 5.364500e+02
-0 8356     8.242000e+02 3.419200e+02
-3 8356     5.167000e+02 7.734003e+01
-7 8356     6.221700e+02 5.476800e+02
-12 8356     7.059000e+02 5.965500e+02
-0 8357     8.242000e+02 3.419200e+02
-2 8357     6.746801e+02 4.015600e+02
-3 8357     5.167000e+02 7.734003e+01
-7 8357     6.221700e+02 5.476800e+02
-9 8357     4.303600e+02 4.429000e+02
-12 8357     7.059000e+02 5.965500e+02
-0 8358     8.579900e+02 3.414000e+02
-2 8358     7.060400e+02 4.125700e+02
-7 8358     6.533199e+02 5.521000e+02
-9 8358     4.564399e+02 4.517200e+02
-0 8359     3.695900e+02 3.310400e+02
-6 8359     1.150024e+00 4.034600e+02
-0 8360     -3.484100e+02 3.274000e+02
-7 8360     -5.529500e+02 3.483500e+02
-10 8360     -5.440400e+02 4.963500e+02
-11 8360     -1.658200e+02 -4.193200e+02
-13 8360     -8.869000e+01 4.619995e+00
-14 8360     -3.514001e+01 -4.266800e+02
-15 8360     -5.438300e+02 5.389900e+02
-0 8361     -1.738900e+02 3.214000e+02
-2 8361     -4.471900e+02 4.069000e+01
-7 8361     -3.747600e+02 3.634500e+02
-15 8361     -2.985800e+02 5.531000e+02
-0 8362     -5.491900e+02 3.195800e+02
-4 8362     -4.216998e+01 -3.788000e+01
-11 8362     -3.435200e+02 -4.220000e+02
-13 8362     -2.519400e+02 -8.770020e+00
-15 8362     -8.244400e+02 5.024500e+02
-0 8363     -5.015200e+02 3.187600e+02
-7 8363     -7.118500e+02 3.204100e+02
-10 8363     -7.320700e+02 4.730500e+02
-13 8363     -2.132700e+02 -8.539978e+00
-14 8363     -1.901200e+02 -4.349100e+02
-15 8363     -7.565400e+02 5.070400e+02
-0 8364     -4.609800e+02 3.141800e+02
-7 8364     -6.699900e+02 3.187100e+02
-10 8364     -6.804100e+02 4.708200e+02
-12 8364     -8.055000e+02 2.034500e+02
-15 8364     -6.977800e+02 5.051700e+02
-0 8365     -4.513900e+02 3.144700e+02
-7 8365     -6.601200e+02 3.201100e+02
-11 8365     -2.576400e+02 -4.292100e+02
-12 8365     -7.936800e+02 2.059500e+02
-15 8365     -6.847400e+02 5.068800e+02
-0 8366     -6.684500e+02 3.111900e+02
-13 8366     -3.934700e+02 -3.037000e+01
-14 8366     -4.142000e+02 -4.497300e+02
-0 8367     6.136500e+02 3.062500e+02
-2 8367     4.744000e+02 2.890800e+02
-3 8367     3.317600e+02 -3.294000e+01
-6 8367     3.930900e+02 4.806700e+02
-7 8367     4.241300e+02 4.785400e+02
-8 8367     4.508600e+02 2.088800e+02
-9 8367     2.631400e+02 3.417500e+02
-10 8367     5.966300e+02 5.679100e+02
-13 8367     7.996500e+02 7.025000e+01
-0 8368     6.136500e+02 3.062500e+02
-2 8368     4.744000e+02 2.890800e+02
-3 8368     3.317600e+02 -3.294000e+01
-6 8368     3.930900e+02 4.806700e+02
-7 8368     4.241300e+02 4.785400e+02
-8 8368     4.508600e+02 2.088800e+02
-9 8368     2.631400e+02 3.417500e+02
-10 8368     5.966300e+02 5.679100e+02
-11 8368     7.255300e+02 -4.147500e+02
-12 8368     4.780601e+02 4.882400e+02
-13 8368     7.996500e+02 7.025000e+01
-0 8369     6.709800e+02 3.054900e+02
-7 8369     4.802900e+02 4.875000e+02
-9 8369     3.141400e+02 3.630100e+02
-10 8369     6.648700e+02 5.728400e+02
-12 8369     5.440699e+02 5.071900e+02
-0 8370     7.767300e+02 3.037800e+02
-2 8370     6.411801e+02 3.518600e+02
-3 8370     4.883101e+02 3.096997e+01
-6 8370     5.848199e+02 5.273400e+02
-7 8370     5.824700e+02 5.037800e+02
-8 8370     5.903700e+02 2.569200e+02
-9 8370     4.029301e+02 3.999100e+02
-10 8370     7.923500e+02 5.844400e+02
-12 8370     6.633900e+02 5.404400e+02
-0 8371     6.148400e+02 3.004100e+02
-2 8371     4.771500e+02 2.833400e+02
-6 8371     3.955200e+02 4.740000e+02
-7 8371     4.258700e+02 4.722400e+02
-8 8371     4.530200e+02 2.040100e+02
-9 8371     2.658000e+02 3.367800e+02
-10 8371     5.983400e+02 5.605700e+02
-11 8371     7.274500e+02 -4.200600e+02
-12 8371     4.801899e+02 4.814500e+02
-13 8371     8.009301e+02 6.506000e+01
-0 8372     7.825400e+02 3.010500e+02
-8 8372     5.954900e+02 2.562900e+02
-0 8373     3.120001e+01 2.986800e+02
-4 8373     -1.057100e+02 -3.696800e+02
-7 8373     -1.651100e+02 3.695200e+02
-10 8373     -8.887000e+01 4.971000e+02
-11 8373     1.806100e+02 -4.453300e+02
-15 8373     -1.450000e+01 5.495600e+02
-0 8374     8.610800e+02 2.976300e+02
-2 8374     7.209000e+02 3.772400e+02
-3 8374     5.614399e+02 5.552002e+01
-12 8374     7.572000e+02 5.620700e+02
-0 8375     8.671801e+02 2.977200e+02
-2 8375     7.260800e+02 3.781700e+02
-7 8375     6.680100e+02 5.127800e+02
-9 8375     4.739800e+02 4.248600e+02
-12 8375     7.634200e+02 5.642500e+02
-0 8376     8.440002e+01 2.899500e+02
-4 8376     -1.152300e+02 -4.061800e+02
-6 8376     -3.012900e+02 2.807600e+02
-7 8376     -1.099400e+02 3.688400e+02
-11 8376     2.320300e+02 -4.521800e+02
-12 8376     -1.539000e+02 2.907900e+02
-15 8376     6.038000e+01 5.454100e+02
-0 8377     6.979800e+02 2.904000e+02
-2 8377     5.660000e+02 3.091300e+02
-3 8377     4.203199e+02 -1.151001e+01
-6 8377     4.976700e+02 4.904300e+02
-7 8377     5.087700e+02 4.778200e+02
-8 8377     5.269500e+02 2.232800e+02
-9 8377     3.410300e+02 3.615700e+02
-10 8377     6.986500e+02 5.584100e+02
-0 8378     6.635999e+01 2.889700e+02
-6 8378     -3.231000e+02 2.740200e+02
-0 8379     6.012200e+02 2.878700e+02
-2 8379     4.659000e+02 2.661200e+02
-3 8379     3.245200e+02 -5.495001e+01
-6 8379     3.818200e+02 4.560200e+02
-7 8379     4.142700e+02 4.583100e+02
-9 8379     2.560800e+02 3.217800e+02
-11 8379     7.171899e+02 -4.332600e+02
-13 8379     7.890400e+02 5.309003e+01
-0 8380     -5.614400e+02 2.828300e+02
-7 8380     -7.707100e+02 2.739200e+02
-10 8380     -8.019600e+02 4.238700e+02
-13 8380     -2.640300e+02 -4.287000e+01
-14 8380     -2.562400e+02 -4.749301e+02
-15 8380     -8.339400e+02 4.485000e+02
-0 8381     8.289001e+01 2.807300e+02
-2 8381     -1.436300e+02 4.838000e+01
-4 8381     -1.208200e+02 -4.055700e+02
-6 8381     -2.966900e+02 2.702800e+02
-7 8381     -1.084500e+02 3.598800e+02
-9 8381     -2.587100e+02 1.130200e+02
-11 8381     2.296300e+02 -4.614100e+02
-12 8381     -1.513100e+02 2.816000e+02
-13 8381     2.819100e+02 -1.125000e+01
-14 8381     4.272400e+02 -4.669900e+02
-15 8381     6.002002e+01 5.314800e+02
-0 8382     -2.459100e+02 2.799600e+02
-13 8382     -4.919983e+00 -3.275000e+01
-14 8382     6.602002e+01 -4.785601e+02
-0 8383     5.847500e+02 2.789600e+02
-2 8383     4.504301e+02 2.499000e+02
-10 8383     5.643600e+02 5.319200e+02
-13 8383     7.739800e+02 4.316998e+01
-0 8384     7.956000e+01 2.759700e+02
-7 8384     -1.108200e+02 3.548100e+02
-11 8384     2.267800e+02 -4.657900e+02
-12 8384     -1.505200e+02 2.764400e+02
-13 8384     2.818500e+02 -1.546002e+01
-0 8385     8.812000e+01 2.763900e+02
-4 8385     -1.240200e+02 -4.098800e+02
-7 8385     -1.026500e+02 3.571100e+02
-11 8385     2.344700e+02 -4.646800e+02
-15 8385     6.698999e+01 5.273400e+02
-0 8386     8.812000e+01 2.763900e+02
-4 8386     -1.240200e+02 -4.098800e+02
-6 8386     -2.865200e+02 2.655200e+02
-8 8386     -3.862000e+01 2.645001e+01
-9 8386     -2.515100e+02 1.119700e+02
-11 8386     2.344700e+02 -4.646800e+02
-12 8386     -1.434200e+02 2.787800e+02
-13 8386     2.878800e+02 -1.377002e+01
-14 8386     4.344900e+02 -4.704800e+02
-15 8386     6.698999e+01 5.273400e+02
-0 8387     7.656000e+02 2.763100e+02
-2 8387     6.380400e+02 3.228900e+02
-3 8387     4.869700e+02 3.619995e+00
-7 8387     5.754301e+02 4.757200e+02
-8 8387     5.873000e+02 2.329900e+02
-10 8387     7.798600e+02 5.491800e+02
-12 8387     6.584000e+02 5.078900e+02
-0 8388     -2.032100e+02 2.749200e+02
-7 8388     -3.953300e+02 3.136700e+02
-10 8388     -3.607500e+02 4.472700e+02
-15 8388     -3.312000e+02 4.851500e+02
-0 8389     -5.210022e+00 2.718900e+02
-9 8389     -3.334400e+02 9.072000e+01
-0 8390     -5.210022e+00 2.718900e+02
-4 8390     -1.179800e+02 -3.470300e+02
-6 8390     -3.988600e+02 2.347700e+02
-10 8390     -1.281500e+02 4.620800e+02
-15 8390     -5.979999e+01 5.074600e+02
-0 8391     9.398999e+01 2.718100e+02
-6 8391     -2.773300e+02 2.632500e+02
-7 8391     -9.578998e+01 3.533000e+02
-11 8391     2.409301e+02 -4.695200e+02
-12 8391     -1.355300e+02 2.759900e+02
-15 8391     7.608002e+01 5.212200e+02
-0 8392     -2.733002e+01 2.711700e+02
-7 8392     -2.159500e+02 3.360700e+02
-10 8392     -1.536800e+02 4.597400e+02
-15 8392     -8.990002e+01 5.041400e+02
-0 8393     -6.667500e+02 2.679500e+02
-13 8393     -3.808900e+02 -6.521997e+01
-14 8393     -4.030300e+02 -4.949700e+02
-0 8394     -5.240900e+02 2.656000e+02
-4 8394     -7.413000e+01 -4.408002e+01
-5 8394     -1.396200e+02 -3.968000e+02
-7 8394     -7.274000e+02 2.609400e+02
-8 8394     -5.946100e+02 -4.882001e+01
-10 8394     -7.517400e+02 4.060900e+02
-0 8395     3.069100e+02 2.613000e+02
-6 8395     -2.395001e+01 3.118800e+02
-0 8396     -1.842400e+02 2.590600e+02
-7 8396     -3.729300e+02 3.016000e+02
-10 8396     -3.379600e+02 4.297500e+02
-11 8396     -1.956000e+01 -4.832800e+02
-15 8396     -3.048000e+02 4.661200e+02
-0 8397     -5.480800e+02 2.536600e+02
-14 8397     -2.455900e+02 -5.090300e+02
-0 8398     -6.634500e+02 2.529600e+02
-13 8398     -3.746500e+02 -7.813000e+01
-14 8398     -3.971800e+02 -5.121600e+02
-0 8399     8.625900e+02 2.525400e+02
-3 8399     5.762800e+02 2.114001e+01
-7 8399     6.696000e+02 4.694700e+02
-0 8400     -5.421300e+02 2.505800e+02
-14 8400     -2.387200e+02 -5.119200e+02
-0 8401     6.482000e+02 2.495400e+02
-7 8401     4.648101e+02 4.298000e+02
-9 8401     3.066700e+02 3.095600e+02
-0 8402     8.794900e+02 2.476200e+02
-2 8402     7.528400e+02 3.405700e+02
-3 8402     5.925601e+02 2.290002e+01
-7 8402     6.861100e+02 4.674400e+02
-9 8402     4.962200e+02 3.929200e+02
-12 8402     7.895900e+02 5.160900e+02
-0 8403     -7.099976e+00 2.462300e+02
-4 8403     -1.326600e+02 -3.467000e+02
-6 8403     -3.824800e+02 2.054300e+02
-8 8403     -1.080100e+02 -5.670013e+00
-10 8403     -1.274200e+02 4.313900e+02
-11 8403     1.453700e+02 -4.957800e+02
-13 8403     2.127000e+02 -4.498999e+01
-14 8403     3.394100e+02 -5.070400e+02
-15 8403     -6.006000e+01 4.721400e+02
-0 8404     2.374700e+02 2.451700e+02
-5 8404     7.002300e+02 -4.197700e+02
-6 8404     -9.209000e+01 2.750100e+02
-7 8404     5.009003e+01 3.483600e+02
-10 8404     1.582800e+02 4.548600e+02
-11 8404     3.780400e+02 -4.911600e+02
-14 8404     6.107000e+02 -4.963199e+02
-15 8404     2.758600e+02 5.051600e+02
-0 8405     -5.502500e+02 2.406500e+02
-10 8405     -7.801900e+02 3.714600e+02
-13 8405     -2.564400e+02 -8.112000e+01
-14 8405     -2.509600e+02 -5.245900e+02
-0 8406     8.528800e+02 2.367800e+02
-2 8406     7.315400e+02 3.216300e+02
-3 8406     5.743500e+02 5.330017e+00
-7 8406     6.626801e+02 4.531300e+02
-12 8406     7.636600e+02 4.967600e+02
-0 8407     8.655300e+02 2.370300e+02
-2 8407     7.430800e+02 3.263500e+02
-3 8407     5.857200e+02 9.849976e+00
-7 8407     6.745601e+02 4.552300e+02
-9 8407     4.886899e+02 3.809200e+02
-12 8407     7.786100e+02 5.010800e+02
-0 8408     -7.028003e+01 2.356400e+02
-7 8408     -2.516300e+02 2.955100e+02
-0 8409     8.587200e+02 2.361200e+02
-2 8409     7.373400e+02 3.237100e+02
-7 8409     6.683700e+02 4.537300e+02
-9 8409     4.835100e+02 3.782800e+02
-0 8410     8.587200e+02 2.361200e+02
-7 8410     6.683700e+02 4.537300e+02
-9 8410     4.835100e+02 3.782800e+02
-0 8411     8.554700e+02 2.307900e+02
-2 8411     7.362700e+02 3.176300e+02
-3 8411     5.789301e+02 1.409973e+00
-7 8411     6.659900e+02 4.476400e+02
-9 8411     4.827300e+02 3.729600e+02
-0 8412     8.670800e+02 2.314800e+02
-3 8412     5.883500e+02 4.950012e+00
-7 8412     6.771899e+02 4.498600e+02
-9 8412     4.933101e+02 3.760700e+02
-0 8413     8.587600e+02 2.271800e+02
-2 8413     7.399000e+02 3.141400e+02
-0 8414     8.587600e+02 2.271800e+02
-2 8414     7.399000e+02 3.141400e+02
-0 8415     -3.392500e+02 2.222900e+02
-7 8415     -5.239300e+02 2.418900e+02
-0 8416     5.540699e+02 2.161700e+02
-7 8416     3.765800e+02 3.811900e+02
-15 8416     7.180601e+02 5.141300e+02
-0 8417     6.142000e+02 2.173200e+02
-9 8417     2.843101e+02 2.690400e+02
-15 8417     8.025200e+02 5.257300e+02
-0 8418     7.267400e+02 2.167500e+02
-2 8418     6.152200e+02 2.522200e+02
-6 8418     5.491300e+02 4.202400e+02
-7 8418     5.457000e+02 4.121400e+02
-8 8418     5.670100e+02 1.752800e+02
-9 8418     3.835100e+02 3.148000e+02
-10 8418     7.364301e+02 4.730300e+02
-0 8419     8.415200e+02 2.157700e+02
-2 8419     7.275400e+02 2.994200e+02
-0 8420     8.520800e+02 2.137700e+02
-2 8420     7.379800e+02 3.014700e+02
-3 8420     5.814301e+02 -1.384998e+01
-7 8420     6.654200e+02 4.311000e+02
-9 8420     4.849800e+02 3.596100e+02
-12 8420     7.698700e+02 4.730400e+02
-0 8421     -1.207001e+01 2.044200e+02
-5 8421     4.318300e+02 -4.706899e+02
-6 8421     -3.584900e+02 1.569400e+02
-9 8421     -2.972400e+02 4.890997e+01
-10 8421     -1.290800e+02 3.802200e+02
-0 8422     6.043300e+02 2.008900e+02
-3 8422     3.523300e+02 -1.337400e+02
-6 8422     4.073200e+02 3.606600e+02
-7 8422     4.283900e+02 3.744200e+02
-8 8422     4.634301e+02 1.214000e+02
-9 8422     2.799700e+02 2.518900e+02
-12 8422     4.924000e+02 3.696000e+02
-15 8422     7.901801e+02 5.005100e+02
-0 8423     6.086100e+02 1.962500e+02
-2 8423     4.976899e+02 1.799600e+02
-3 8423     3.566700e+02 -1.345400e+02
-6 8423     4.139800e+02 3.581400e+02
-7 8423     4.335400e+02 3.710900e+02
-9 8423     2.847000e+02 2.508700e+02
-10 8423     5.978400e+02 4.350600e+02
-12 8423     4.987400e+02 3.668500e+02
-13 8423     8.071200e+02 -2.383002e+01
-15 8423     7.967600e+02 4.957800e+02
-0 8424     7.304700e+02 1.914500e+02
-7 8424     5.531400e+02 3.888000e+02
-10 8424     7.432600e+02 4.432300e+02
-0 8425     6.070100e+02 1.859200e+02
-2 8425     4.983300e+02 1.697900e+02
-3 8425     3.592100e+02 -1.457600e+02
-6 8425     4.147800e+02 3.459100e+02
-7 8425     4.330000e+02 3.609700e+02
-8 8425     4.689900e+02 1.109300e+02
-9 8425     2.860000e+02 2.415200e+02
-10 8425     5.964900e+02 4.237000e+02
-12 8425     4.991700e+02 3.551300e+02
-13 8425     8.067600e+02 -3.316998e+01
-15 8425     7.957500e+02 4.805900e+02
-0 8426     -5.262000e+01 1.851000e+02
-8 8426     -1.203900e+02 -5.179001e+01
-9 8426     -3.224600e+02 2.919000e+01
-13 8426     1.894200e+02 -9.942999e+01
-14 8426     3.090300e+02 -5.771700e+02
-0 8427     7.334200e+02 1.853000e+02
-2 8427     6.323000e+02 2.257600e+02
-7 8427     5.572700e+02 3.836800e+02
-8 8427     5.810800e+02 1.535700e+02
-0 8428     7.334200e+02 1.853000e+02
-2 8428     6.323000e+02 2.257600e+02
-3 8428     4.857000e+02 -8.752002e+01
-6 8428     5.665699e+02 3.890000e+02
-7 8428     5.572700e+02 3.836800e+02
-8 8428     5.810800e+02 1.535700e+02
-0 8429     8.864001e+01 1.810700e+02
-10 8429     -9.210022e+00 3.615600e+02
-13 8429     4.038101e+02 -6.865997e+01
-0 8430     8.341500e+02 1.769200e+02
-3 8430     5.783300e+02 -5.108002e+01
-7 8430     6.534000e+02 3.930100e+02
-0 8431     8.341500e+02 1.769200e+02
-2 8431     7.319000e+02 2.607500e+02
-3 8431     5.783300e+02 -5.108002e+01
-7 8431     6.534000e+02 3.930100e+02
-9 8431     4.807600e+02 3.257900e+02
-0 8432     -3.217200e+02 1.750800e+02
-7 8432     -4.952000e+02 1.988900e+02
-10 8432     -4.914300e+02 3.150800e+02
-15 8432     -4.831400e+02 3.308700e+02
-0 8433     6.934399e+02 1.752000e+02
-3 8433     4.496899e+02 -1.145100e+02
-0 8434     6.934399e+02 1.752000e+02
-3 8434     4.496899e+02 -1.145100e+02
-6 8434     5.217900e+02 3.637900e+02
-7 8434     5.194900e+02 3.662400e+02
-8 8434     5.479200e+02 1.321300e+02
-9 8434     3.664000e+02 2.685700e+02
-0 8435     -2.410400e+02 1.688200e+02
-7 8435     -4.091400e+02 2.051900e+02
-15 8435     -3.705200e+02 3.324200e+02
-0 8436     7.306600e+02 1.688000e+02
-2 8436     6.360800e+02 2.106700e+02
-3 8436     4.909900e+02 -1.015600e+02
-7 8436     5.576300e+02 3.669600e+02
-10 8436     7.454800e+02 4.161500e+02
-0 8437     -1.038500e+02 1.671800e+02
-2 8437     -2.736800e+02 -6.952002e+01
-5 8437     3.397800e+02 -5.122000e+02
-7 8437     -2.681500e+02 2.252300e+02
-8 8437     -1.579900e+02 -7.104999e+01
-9 8437     -3.592300e+02 7.140015e+00
-13 8437     1.493199e+02 -1.177900e+02
-0 8438     -5.532600e+02 1.649600e+02
-7 8438     -7.394900e+02 1.510700e+02
-0 8439     -2.690900e+02 1.637700e+02
-8 8439     -3.130000e+02 -1.005700e+02
-0 8440     6.029500e+02 1.642500e+02
-2 8440     4.971100e+02 1.462800e+02
-3 8440     3.590601e+02 -1.680000e+02
-8 8440     4.676801e+02 9.164001e+01
-13 8440     8.057600e+02 -5.307001e+01
-0 8441     -2.434600e+02 1.590000e+02
-7 8441     -4.099200e+02 1.953600e+02
-15 8441     -3.711200e+02 3.204500e+02
-0 8442     -2.176500e+02 1.554900e+02
-5 8442     2.164600e+02 -5.249600e+02
-0 8443     -2.647700e+02 1.530000e+02
-7 8443     -4.298300e+02 1.868100e+02
-0 8444     8.390699e+02 1.531600e+02
-9 8444     4.899301e+02 3.095900e+02
-0 8445     6.372200e+02 1.481000e+02
-2 8445     5.419600e+02 1.455800e+02
-3 8445     4.026200e+02 -1.663200e+02
-6 8445     4.615200e+02 3.140500e+02
-7 8445     4.680500e+02 3.297000e+02
-8 8445     5.041899e+02 8.944000e+01
-9 8445     3.235100e+02 2.228200e+02
-10 8445     6.351300e+02 3.812700e+02
-12 8445     5.445500e+02 3.231700e+02
-13 8445     8.419200e+02 -6.246002e+01
-15 8445     8.424700e+02 4.314800e+02
-0 8446     -8.174500e+02 1.464700e+02
-4 8446     -1.123300e+02 1.230400e+02
-5 8446     -4.701100e+02 -5.221300e+02
-0 8447     -2.884003e+01 1.426300e+02
-4 8447     -1.776000e+02 -3.832900e+02
-5 8447     5.592100e+02 -5.153300e+02
-6 8447     -1.604700e+02 1.534100e+02
-7 8447     -1.487300e+02 2.434100e+02
-10 8447     -1.421600e+02 3.052200e+02
-13 8447     3.101801e+02 -1.090200e+02
-15 8447     -9.054999e+01 3.278600e+02
-0 8448     6.798700e+02 1.409200e+02
-2 8448     5.883199e+02 1.587200e+02
-3 8448     4.467600e+02 -1.527100e+02
-7 8448     5.107400e+02 3.312100e+02
-8 8448     5.419000e+02 9.959000e+01
-12 8448     5.927100e+02 3.353000e+02
-0 8449     -1.532800e+02 1.397500e+02
-7 8449     -3.110400e+02 1.905700e+02
-0 8450     7.048900e+02 1.395900e+02
-2 8450     6.151500e+02 1.696500e+02
-3 8450     4.721500e+02 -1.415600e+02
-6 8450     5.441300e+02 3.298600e+02
-8 8450     5.655699e+02 1.072300e+02
-9 8450     3.853000e+02 2.453600e+02
-10 8450     7.162300e+02 3.791200e+02
-12 8450     6.234301e+02 3.399900e+02
-0 8451     7.048900e+02 1.395900e+02
-6 8451     5.441300e+02 3.298600e+02
-8 8451     5.655699e+02 1.072300e+02
-9 8451     3.853000e+02 2.453600e+02
-10 8451     7.162300e+02 3.791200e+02
-12 8451     6.234301e+02 3.399900e+02
-0 8452     -4.493000e+02 1.387400e+02
-4 8452     -1.512400e+02 -7.678003e+01
-7 8452     -6.209200e+02 1.427800e+02
-0 8453     -3.017300e+02 1.375700e+02
-7 8453     -4.633600e+02 1.657700e+02
-15 8453     -4.480000e+02 2.813400e+02
-0 8454     7.098101e+02 1.357100e+02
-2 8454     6.204600e+02 1.686900e+02
-0 8455     7.338199e+02 1.342700e+02
-3 8455     5.017000e+02 -1.322700e+02
-6 8455     5.793300e+02 3.346700e+02
-7 8455     5.638300e+02 3.345000e+02
-9 8455     4.109000e+02 2.534700e+02
-10 8455     7.510699e+02 3.762000e+02
-12 8455     6.583199e+02 3.454500e+02
-0 8456     7.338199e+02 1.342700e+02
-2 8456     6.463700e+02 1.782400e+02
-3 8456     5.017000e+02 -1.322700e+02
-6 8456     5.793300e+02 3.346700e+02
-7 8456     5.638300e+02 3.345000e+02
-8 8456     5.919700e+02 1.134000e+02
-9 8456     4.109000e+02 2.534700e+02
-10 8456     7.510699e+02 3.762000e+02
-12 8456     6.583199e+02 3.454500e+02
-0 8457     7.833800e+02 1.314400e+02
-3 8457     5.504200e+02 -1.100700e+02
-7 8457     6.122600e+02 3.411300e+02
-0 8458     7.203700e+02 1.276200e+02
-3 8458     4.913900e+02 -1.451500e+02
-7 8458     5.520400e+02 3.253500e+02
-9 8458     4.018600e+02 2.419600e+02
-12 8458     6.451600e+02 3.325900e+02
-0 8459     7.548300e+02 1.290400e+02
-3 8459     5.235300e+02 -1.277700e+02
-9 8459     4.298400e+02 2.580800e+02
-12 8459     6.835900e+02 3.470700e+02
-0 8460     7.473199e+02 1.261800e+02
-3 8460     5.170800e+02 -1.334900e+02
-7 8460     5.782500e+02 3.290600e+02
-0 8461     -6.646002e+01 1.248100e+02
-7 8461     -1.935400e+02 2.124100e+02
-10 8461     -1.841000e+02 2.804500e+02
-15 8461     -1.363500e+02 2.976800e+02
-0 8462     7.036100e+02 1.175000e+02
-3 8462     4.788000e+02 -1.616500e+02
-6 8462     5.490601e+02 3.061700e+02
-7 8462     5.370400e+02 3.131000e+02
-8 8462     5.700800e+02 9.010001e+01
-9 8462     3.901600e+02 2.276300e+02
-12 8462     6.285601e+02 3.166800e+02
-0 8463     7.036100e+02 1.175000e+02
-3 8463     4.788000e+02 -1.616500e+02
-6 8463     5.490601e+02 3.061700e+02
-7 8463     5.370400e+02 3.131000e+02
-8 8463     5.700800e+02 9.010001e+01
-9 8463     3.901600e+02 2.276300e+02
-12 8463     6.285601e+02 3.166800e+02
-0 8464     -7.725000e+01 1.161700e+02
-4 8464     -1.926400e+02 -3.374200e+02
-5 8464     4.771400e+02 -5.509100e+02
-6 8464     -2.490500e+02 9.196002e+01
-7 8464     -2.027400e+02 2.019600e+02
-10 8464     -1.962800e+02 2.685000e+02
-12 8464     -1.962500e+02 1.424200e+02
-15 8464     -1.498700e+02 2.837800e+02
-0 8465     8.323800e+02 1.137200e+02
-2 8465     7.486500e+02 2.025800e+02
-3 8465     5.982400e+02 -1.059400e+02
-7 8465     6.599900e+02 3.331600e+02
-9 8465     4.955800e+02 2.770400e+02
-0 8466     8.323800e+02 1.137200e+02
-2 8466     7.486500e+02 2.025800e+02
-7 8466     6.599900e+02 3.331600e+02
-9 8466     4.955800e+02 2.770400e+02
-0 8467     8.323800e+02 1.137200e+02
-2 8467     7.486500e+02 2.025800e+02
-7 8467     6.599900e+02 3.331600e+02
-9 8467     4.955800e+02 2.770400e+02
-0 8468     7.186500e+02 1.118500e+02
-3 8468     4.962500e+02 -1.596700e+02
-7 8468     5.527000e+02 3.101700e+02
-12 8468     6.481600e+02 3.149200e+02
-0 8469     7.065300e+02 1.092600e+02
-2 8469     6.259000e+02 1.415600e+02
-3 8469     4.834700e+02 -1.679400e+02
-6 8469     5.539000e+02 2.981300e+02
-7 8469     5.405800e+02 3.058000e+02
-8 8469     5.739800e+02 8.401001e+01
-9 8469     3.937900e+02 2.221900e+02
-10 8469     7.197300e+02 3.439500e+02
-12 8469     6.334700e+02 3.085800e+02
-0 8470     7.634301e+02 1.084600e+02
-2 8470     6.830400e+02 1.667800e+02
-3 8470     5.376700e+02 -1.416400e+02
-7 8470     5.954399e+02 3.153100e+02
-10 8470     7.877800e+02 3.487700e+02
-0 8471     7.634301e+02 1.084600e+02
-2 8471     6.830400e+02 1.667800e+02
-3 8471     5.376700e+02 -1.416400e+02
-7 8471     5.954399e+02 3.153100e+02
-9 8471     4.419399e+02 2.452900e+02
-10 8471     7.877800e+02 3.487700e+02
-12 8471     6.976801e+02 3.283400e+02
-0 8472     5.027002e+01 1.064700e+02
-4 8472     -2.068800e+02 -4.498000e+02
-5 8472     6.778400e+02 -5.487000e+02
-6 8472     -2.752002e+01 1.500100e+02
-8 8472     1.560400e+02 6.237000e+01
-12 8472     -1.979980e+00 2.032300e+02
-13 8472     3.986300e+02 -1.286100e+02
-15 8472     1.956000e+01 2.893700e+02
-0 8473     6.321200e+02 1.059000e+02
-2 8473     5.481400e+02 9.828998e+01
-6 8473     4.663500e+02 2.623300e+02
-7 8473     4.684000e+02 2.877300e+02
-8 8473     5.093000e+02 5.017999e+01
-9 8473     3.304399e+02 1.824500e+02
-10 8473     6.315200e+02 3.305200e+02
-12 8473     5.484301e+02 2.719700e+02
-13 8473     8.416400e+02 -1.012400e+02
-15 8473     8.400100e+02 3.714500e+02
-0 8474     -7.760999e+01 1.051900e+02
-7 8474     -2.001900e+02 1.916000e+02
-10 8474     -1.944400e+02 2.564100e+02
-0 8475     5.842400e+02 1.035200e+02
-9 8475     2.859800e+02 1.610000e+02
-10 8475     5.758101e+02 3.230100e+02
-0 8476     5.842400e+02 1.035200e+02
-6 8476     4.068900e+02 2.433100e+02
-10 8476     5.758101e+02 3.230100e+02
-0 8477     7.545200e+02 1.021000e+02
-3 8477     5.313600e+02 -1.515700e+02
-7 8477     5.875601e+02 3.077600e+02
-10 8477     7.770900e+02 3.407500e+02
-0 8478     7.801300e+02 1.017500e+02
-2 8478     7.017900e+02 1.680600e+02
-3 8478     5.557200e+02 -1.396700e+02
-7 8478     6.123300e+02 3.120100e+02
-9 8478     4.575300e+02 2.468900e+02
-10 8478     8.079600e+02 3.428700e+02
-12 8478     7.184800e+02 3.271300e+02
-0 8479     8.070100e+02 1.019100e+02
-3 8479     5.795300e+02 -1.270800e+02
-7 8479     6.377400e+02 3.170200e+02
-9 8479     4.790400e+02 2.579700e+02
-12 8479     7.484700e+02 3.373400e+02
-0 8480     2.744700e+02 9.657001e+01
-7 8480     1.615400e+02 2.485700e+02
-10 8480     2.150400e+02 2.820400e+02
-13 8480     5.832800e+02 -1.207200e+02
-15 8480     3.298199e+02 3.078000e+02
-0 8481     7.845601e+02 9.356000e+01
-7 8481     6.175699e+02 3.050100e+02
-9 8481     4.628000e+02 2.420100e+02
-10 8481     8.139000e+02 3.339300e+02
-12 8481     7.250200e+02 3.193700e+02
-0 8482     7.097300e+02 9.248001e+01
-7 8482     5.455200e+02 2.895800e+02
-9 8482     4.010800e+02 2.086000e+02
-0 8483     -2.755800e+02 9.151001e+01
-7 8483     -4.268800e+02 1.251400e+02
-15 8483     -4.083900e+02 2.220500e+02
-0 8484     7.515300e+02 9.157999e+01
-2 8484     6.762900e+02 1.455700e+02
-7 8484     5.865100e+02 2.970400e+02
-9 8484     4.373000e+02 2.267900e+02
-10 8484     7.749600e+02 3.275000e+02
-12 8484     6.890500e+02 3.060700e+02
-0 8485     7.515300e+02 9.157999e+01
-2 8485     6.762900e+02 1.455700e+02
-3 8485     5.324500e+02 -1.625200e+02
-7 8485     5.865100e+02 2.970400e+02
-9 8485     4.373000e+02 2.267900e+02
-10 8485     7.749600e+02 3.275000e+02
-12 8485     6.890500e+02 3.060700e+02
-0 8486     -2.759300e+02 8.585001e+01
-5 8486     1.654300e+02 -6.031200e+02
-7 8486     -4.249600e+02 1.196600e+02
-15 8486     -4.075400e+02 2.145900e+02
-0 8487     5.498199e+02 8.523001e+01
-6 8487     3.694300e+02 2.096700e+02
-10 8487     5.371100e+02 2.983600e+02
-12 8487     4.567300e+02 2.200300e+02
-13 8487     7.596100e+02 -1.300900e+02
-15 8487     7.269900e+02 3.297100e+02
-0 8488     7.411300e+02 8.326001e+01
-2 8488     6.681600e+02 1.332400e+02
-9 8488     4.302100e+02 2.164800e+02
-10 8488     7.630601e+02 3.170700e+02
-12 8488     6.795601e+02 2.933300e+02
-0 8489     7.779800e+02 8.304999e+01
-2 8489     7.050601e+02 1.485900e+02
-3 8489     5.595500e+02 -1.573600e+02
-7 8489     6.128000e+02 2.936700e+02
-9 8489     4.608800e+02 2.310100e+02
-10 8489     8.068101e+02 3.203400e+02
-12 8489     7.202700e+02 3.056500e+02
-0 8490     5.563000e+02 8.032999e+01
-6 8490     3.788400e+02 2.069300e+02
-7 8490     3.971300e+02 2.473900e+02
-8 8490     4.441000e+02 1.980011e+00
-10 8490     5.459900e+02 2.925700e+02
-12 8490     4.659100e+02 2.171000e+02
-13 8490     7.669000e+02 -1.336500e+02
-15 8490     7.372000e+02 3.232200e+02
-0 8491     -2.537500e+02 7.923999e+01
-7 8491     -4.013200e+02 1.174200e+02
-15 8491     -3.769700e+02 2.089600e+02
-0 8492     9.134003e+01 7.904999e+01
-4 8492     -2.294600e+02 -4.848199e+02
-5 8492     7.378700e+02 -5.783300e+02
-6 8492     3.744000e+01 1.349200e+02
-10 8492     4.099976e+00 2.415300e+02
-12 8492     5.953003e+01 1.875600e+02
-15 8492     7.856000e+01 2.575000e+02
-0 8493     6.790100e+02 7.709003e+01
-2 8493     6.070400e+02 9.577002e+01
-3 8493     4.672500e+02 -2.126900e+02
-6 8493     5.311200e+02 2.521300e+02
-7 8493     5.186500e+02 2.691200e+02
-8 8493     5.584700e+02 4.707001e+01
-9 8493     3.800200e+02 1.830800e+02
-12 8493     6.113900e+02 2.620800e+02
-0 8494     7.494700e+02 7.722998e+01
-2 8494     6.786100e+02 1.311200e+02
-3 8494     5.357600e+02 -1.761600e+02
-7 8494     5.866700e+02 2.829000e+02
-9 8494     4.392000e+02 2.150900e+02
-12 8494     6.911500e+02 2.895300e+02
-0 8495     5.371200e+02 7.506000e+01
-6 8495     3.545400e+02 1.937600e+02
-7 8495     3.781100e+02 2.394400e+02
-10 8495     5.233000e+02 2.854800e+02
-13 8495     7.476500e+02 -1.408200e+02
-15 8495     7.107200e+02 3.137800e+02
-0 8496     6.850900e+02 7.133002e+01
-2 8496     6.134399e+02 9.404999e+01
-3 8496     4.743199e+02 -2.139600e+02
-6 8496     5.388800e+02 2.490100e+02
-7 8496     5.249600e+02 2.652700e+02
-9 8496     3.856600e+02 1.818700e+02
-12 8496     6.179500e+02 2.594000e+02
-0 8497     6.850900e+02 7.133002e+01
-2 8497     6.134399e+02 9.404999e+01
-3 8497     4.743199e+02 -2.139600e+02
-6 8497     5.388800e+02 2.490100e+02
-9 8497     3.856600e+02 1.818700e+02
-0 8498     4.060999e+01 6.467999e+01
-6 8498     -1.482001e+01 1.029100e+02
-7 8498     -5.604999e+01 1.840400e+02
-12 8498     4.919983e+00 1.571400e+02
-13 8498     3.998600e+02 -1.635000e+02
-15 8498     1.112000e+01 2.310800e+02
-0 8499     -2.859200e+02 5.776001e+01
-2 8499     -4.180400e+02 -1.963900e+02
-4 8499     -2.146100e+02 -1.721800e+02
-13 8499     1.526001e+01 -2.219500e+02
-0 8500     6.722700e+02 5.706000e+01
-2 8500     6.049399e+02 7.245001e+01
-6 8500     5.280601e+02 2.267900e+02
-7 8500     5.143900e+02 2.485600e+02
-0 8501     6.722700e+02 5.706000e+01
-7 8501     5.143900e+02 2.485600e+02
-0 8502     -4.748100e+02 5.521997e+01
-4 8502     -1.948300e+02 -5.896002e+01
-13 8502     -1.563200e+02 -2.355500e+02
-15 8502     -6.772600e+02 1.456400e+02
-0 8503     7.078000e+02 5.445001e+01
-3 8503     5.017600e+02 -2.182900e+02
-6 8503     5.703000e+02 2.389600e+02
-8 8503     5.868000e+02 3.985999e+01
-9 8503     4.094500e+02 1.780400e+02
-10 8503     7.259600e+02 2.791800e+02
-12 8503     6.486801e+02 2.489300e+02
-0 8504     1.259800e+02 5.322998e+01
-2 8504     2.590300e+02 1.090500e+02
-5 8504     7.866100e+02 -6.067400e+02
-8 8504     2.453400e+02 4.237000e+01
-10 8504     4.752002e+01 2.159900e+02
-15 8504     1.288500e+02 2.272900e+02
-0 8505     6.951000e+02 4.975000e+01
-2 8505     6.306700e+02 7.609998e+01
-6 8505     5.568300e+02 2.287300e+02
-7 8505     5.377100e+02 2.462900e+02
-9 8505     4.002000e+02 1.676300e+02
-10 8505     7.106801e+02 2.720100e+02
-0 8506     1.553400e+02 4.934998e+01
-4 8506     -2.581900e+02 -5.371000e+02
-10 8506     8.131000e+01 2.140000e+02
-0 8507     8.193300e+02 4.860999e+01
-2 8507     7.559600e+02 1.360000e+02
-3 8507     6.090200e+02 -1.683000e+02
-9 8507     5.034700e+02 2.216100e+02
-12 8507     7.760900e+02 2.858100e+02
-0 8508     -4.423400e+02 4.790002e+01
-2 8508     -6.142100e+02 -2.432000e+02
-0 8509     6.802100e+02 4.834998e+01
-3 8509     4.773800e+02 -2.380800e+02
-6 8509     5.395100e+02 2.190200e+02
-9 8509     3.877100e+02 1.582000e+02
-0 8510     7.143600e+02 4.285999e+01
-2 8510     6.526500e+02 7.978003e+01
-7 8510     5.572300e+02 2.433200e+02
-8 8510     5.958199e+02 3.239001e+01
-9 8510     4.182600e+02 1.714400e+02
-10 8510     7.342200e+02 2.665800e+02
-12 8510     6.596801e+02 2.383100e+02
-0 8511     8.201899e+02 3.502002e+01
-2 8511     7.611600e+02 1.243000e+02
-3 8511     6.145200e+02 -1.795500e+02
-7 8511     6.590400e+02 2.563700e+02
-9 8511     5.080601e+02 2.117000e+02
-12 8511     7.805500e+02 2.720200e+02
-0 8512     6.689600e+02 3.353998e+01
-2 8512     6.056600e+02 4.748999e+01
-3 8512     4.691801e+02 -2.589900e+02
-6 8512     5.292000e+02 2.005800e+02
-7 8512     5.138800e+02 2.256700e+02
-8 8512     5.583000e+02 5.200012e+00
-9 8512     3.801100e+02 1.425400e+02
-12 8512     6.084200e+02 2.107000e+02
-0 8513     8.382700e+02 3.257001e+01
-2 8513     7.801200e+02 1.312800e+02
-7 8513     6.768800e+02 2.580100e+02
-9 8513     5.232600e+02 2.183100e+02
-12 8513     8.019301e+02 2.778400e+02
-0 8514     7.349700e+02 3.215002e+01
-2 8514     6.781899e+02 7.908002e+01
-3 8514     5.390000e+02 -2.256300e+02
-9 8514     4.399399e+02 1.716000e+02
-12 8514     6.864200e+02 2.342600e+02
-0 8515     6.603700e+02 2.934003e+01
-2 8515     5.994200e+02 3.785999e+01
-7 8515     5.064399e+02 2.197700e+02
-8 8515     5.506600e+02 7.000732e-02
-9 8515     3.747600e+02 1.344600e+02
-10 8515     6.711300e+02 2.447200e+02
-0 8516     5.187900e+02 2.609003e+01
-7 8516     3.661600e+02 1.882000e+02
-0 8517     7.470100e+02 2.373999e+01
-2 8517     6.920900e+02 7.726001e+01
-3 8517     5.516700e+02 -2.269000e+02
-7 8517     5.911400e+02 2.314500e+02
-10 8517     7.739600e+02 2.477900e+02
-12 8517     7.018199e+02 2.303800e+02
-0 8518     7.470100e+02 2.373999e+01
-2 8518     6.920900e+02 7.726001e+01
-3 8518     5.516700e+02 -2.269000e+02
-7 8518     5.911400e+02 2.314500e+02
-10 8518     7.739600e+02 2.477900e+02
-12 8518     7.018199e+02 2.303800e+02
-0 8519     -7.788600e+02 2.295001e+01
-13 8519     -4.294100e+02 -2.812900e+02
-0 8520     -3.017700e+02 2.310999e+01
-4 8520     -2.327100e+02 -1.620300e+02
-7 8520     -4.367700e+02 5.491998e+01
-10 8520     -4.490600e+02 1.378800e+02
-15 8520     -4.347000e+02 1.256100e+02
-0 8521     -5.839001e+01 2.173999e+01
-3 8521     -3.484003e+01 -3.063500e+02
-7 8521     -1.530800e+02 1.209400e+02
-15 8521     -1.151300e+02 1.587600e+02
-0 8522     2.216000e+02 2.065997e+01
-10 8522     1.605700e+02 1.875200e+02
-13 8522     5.614900e+02 -1.867200e+02
-15 8522     2.642300e+02 1.961300e+02
-0 8523     7.039500e+02 1.770001e+01
-2 8523     6.498700e+02 4.879999e+01
-3 8523     5.129700e+02 -2.563600e+02
-6 8523     5.760699e+02 1.967300e+02
-7 8523     5.506899e+02 2.168400e+02
-8 8523     5.922500e+02 7.220001e+00
-9 8523     4.170601e+02 1.453200e+02
-10 8523     7.232900e+02 2.361700e+02
-12 8523     6.547500e+02 2.063500e+02
-0 8524     8.288199e+02 1.765002e+01
-2 8524     7.754200e+02 1.117300e+02
-3 8524     6.280300e+02 -1.917600e+02
-7 8524     6.697300e+02 2.413000e+02
-9 8524     5.198900e+02 2.021800e+02
-12 8524     7.940800e+02 2.578500e+02
-0 8525     7.496300e+02 1.631000e+01
-9 8525     4.561899e+02 1.652500e+02
-0 8526     4.753700e+02 1.403998e+01
-7 8526     3.292200e+02 1.708700e+02
-0 8527     5.588400e+02 1.134998e+01
-6 8527     4.013100e+02 1.294900e+02
-0 8528     6.051300e+02 1.059003e+01
-6 8528     4.583000e+02 1.485300e+02
-12 8528     5.413700e+02 1.586200e+02
-13 8528     8.254000e+02 -1.898000e+02
-15 8528     8.131700e+02 2.341900e+02
-0 8529     6.973300e+02 1.067999e+01
-2 8529     6.450900e+02 3.852002e+01
-3 8529     5.081600e+02 -2.661000e+02
-6 8529     5.701801e+02 1.867100e+02
-7 8529     5.452500e+02 2.089900e+02
-8 8529     5.886801e+02 -1.089996e+00
-9 8529     4.132000e+02 1.366100e+02
-10 8529     7.165601e+02 2.270000e+02
-12 8529     6.491200e+02 1.963100e+02
-0 8530     6.973300e+02 1.067999e+01
-2 8530     6.450900e+02 3.852002e+01
-3 8530     5.081600e+02 -2.661000e+02
-6 8530     5.701801e+02 1.867100e+02
-7 8530     5.452500e+02 2.089900e+02
-8 8530     5.886801e+02 -1.089996e+00
-9 8530     4.132000e+02 1.366100e+02
-10 8530     7.165601e+02 2.270000e+02
-12 8530     6.491200e+02 1.963100e+02
-0 8531     2.856600e+02 1.089001e+01
-7 8531     1.900200e+02 1.692200e+02
-15 8531     3.550400e+02 1.915700e+02
-0 8532     7.484900e+02 8.669983e+00
-2 8532     6.972200e+02 6.370001e+01
-3 8532     5.576500e+02 -2.400000e+02
-7 8532     5.946500e+02 2.172600e+02
-9 8532     4.563700e+02 1.594700e+02
-10 8532     7.772200e+02 2.301400e+02
-0 8533     -3.489200e+02 7.750000e+00
-4 8533     -2.367200e+02 -1.329300e+02
-15 8533     -4.973800e+02 9.904001e+01
-0 8534     7.166500e+02 7.960022e+00
-3 8534     5.283900e+02 -2.589200e+02
-7 8534     5.643500e+02 2.102200e+02
-9 8534     4.312400e+02 1.427800e+02
-10 8534     7.394600e+02 2.263300e+02
-0 8535     -4.023600e+02 6.789978e+00
-2 8535     -5.331200e+02 -2.681100e+02
-15 8535     -5.705200e+02 9.057999e+01
-0 8536     -4.180000e+02 4.130005e+00
-2 8536     -5.524000e+02 -2.749100e+02
-15 8536     -5.921500e+02 8.376001e+01
-0 8537     -8.388000e+01 4.349976e+00
-7 8537     -1.786500e+02 9.750000e+01
-15 8537     -1.464900e+02 1.310700e+02
-0 8538     -3.333900e+02 2.890015e+00
-13 8538     -1.331000e+01 -2.718700e+02
-0 8539     3.013400e+02 3.090027e+00
-12 8539     3.045800e+02 1.455900e+02
-0 8540     7.070800e+02 2.729980e+00
-2 8540     6.570500e+02 3.528998e+01
-3 8540     5.205699e+02 -2.689100e+02
-9 8540     4.229200e+02 1.344700e+02
-12 8540     6.616899e+02 1.908600e+02
-0 8541     7.070800e+02 2.729980e+00
-2 8541     6.570500e+02 3.528998e+01
-3 8541     5.205699e+02 -2.689100e+02
-9 8541     4.229200e+02 1.344700e+02
-12 8541     6.616899e+02 1.908600e+02
-0 8542     8.475400e+02 3.309998e+00
-2 8542     7.973000e+02 1.062400e+02
-3 8542     6.501600e+02 -1.951100e+02
-7 8542     6.885900e+02 2.310800e+02
-12 8542     8.187300e+02 2.467400e+02
-0 8543     8.475400e+02 3.309998e+00
-2 8543     7.973000e+02 1.062400e+02
-3 8543     6.501600e+02 -1.951100e+02
-7 8543     6.885900e+02 2.310800e+02
-9 8543     5.377200e+02 1.980600e+02
-12 8543     8.187300e+02 2.467400e+02
-0 8544     6.465699e+02 2.090027e+00
-2 8544     5.925300e+02 2.840027e+00
-3 8544     4.585300e+02 -3.037700e+02
-6 8544     5.115300e+02 1.565900e+02
-7 8544     4.968199e+02 1.906000e+02
-8 8544     5.449399e+02 -2.834000e+01
-9 8544     3.688600e+02 1.036300e+02
-10 8544     6.565200e+02 2.115700e+02
-13 8544     8.699399e+02 -1.908000e+02
-15 8544     8.725699e+02 2.282500e+02
-0 8545     6.465699e+02 2.090027e+00
-2 8545     5.925300e+02 2.840027e+00
-3 8545     4.585300e+02 -3.037700e+02
-6 8545     5.115300e+02 1.565900e+02
-7 8545     4.968199e+02 1.906000e+02
-8 8545     5.449399e+02 -2.834000e+01
-9 8545     3.688600e+02 1.036300e+02
-12 8545     5.921200e+02 1.661600e+02
-13 8545     8.699399e+02 -1.908000e+02
-15 8545     8.725699e+02 2.282500e+02
-0 8546     7.486100e+02 2.309998e+00
-7 8546     5.954200e+02 2.112200e+02
-10 8546     7.774600e+02 2.229300e+02
-12 8546     7.087700e+02 2.070300e+02
-0 8547     7.486100e+02 2.309998e+00
-3 8547     5.599100e+02 -2.464900e+02
-7 8547     5.954200e+02 2.112200e+02
-10 8547     7.774600e+02 2.229300e+02
-12 8547     7.087700e+02 2.070300e+02
-0 8548     7.486100e+02 2.309998e+00
-3 8548     5.599100e+02 -2.464900e+02
-7 8548     5.954200e+02 2.112200e+02
-9 8548     4.582200e+02 1.536200e+02
-10 8548     7.774600e+02 2.229300e+02
-12 8548     7.087700e+02 2.070300e+02
-0 8549     -4.131000e+02 4.899902e-01
-2 8549     -5.432000e+02 -2.767500e+02
-13 8549     -8.646997e+01 -2.786800e+02
-15 8549     -5.848100e+02 7.966998e+01
-0 8550     5.171000e+02 6.300049e-01
-7 8550     3.708400e+02 1.643800e+02
-10 8550     5.067100e+02 1.968200e+02
-0 8551     -4.213100e+02 -1.989990e+00
-13 8551     -9.363000e+01 -2.812700e+02
-0 8552     6.562400e+02 -1.809998e+00
-6 8552     5.239399e+02 1.561800e+02
-9 8552     3.792100e+02 1.064300e+02
-12 8552     6.040200e+02 1.661900e+02
-0 8553     6.562400e+02 -1.809998e+00
-3 8553     4.702900e+02 -3.008800e+02
-6 8553     5.239399e+02 1.561800e+02
-12 8553     6.040200e+02 1.661900e+02
-0 8554     -4.583300e+02 -3.289978e+00
-10 8554     -6.329200e+02 8.933002e+01
-13 8554     -1.280100e+02 -2.848300e+02
-15 8554     -6.469600e+02 6.883002e+01
-0 8555     8.481899e+02 -2.750000e+00
-3 8555     6.531400e+02 -2.004900e+02
-9 8555     5.400300e+02 1.930700e+02
-12 8555     8.212000e+02 2.400100e+02
-0 8556     -3.971300e+02 -6.239990e+00
-13 8556     -7.066998e+01 -2.829800e+02
-15 8556     -5.620300e+02 7.344000e+01
-0 8557     5.756400e+02 -8.530029e+00
-6 8557     4.277700e+02 1.139700e+02
-7 8557     4.282300e+02 1.657100e+02
-12 8557     5.116600e+02 1.251200e+02
-13 8557     7.970100e+02 -2.107200e+02
-0 8558     -3.343900e+02 -1.384998e+01
-4 8558     -2.521700e+02 -1.417600e+02
-13 8558     -1.025000e+01 -2.865600e+02
-0 8559     6.378000e+02 -1.397998e+01
-6 8559     5.055400e+02 1.344500e+02
-12 8559     5.859399e+02 1.445400e+02
-0 8560     8.752100e+02 -1.550000e+01
-3 8560     6.799100e+02 -1.983900e+02
-7 8560     7.163900e+02 2.187200e+02
-9 8560     5.636100e+02 1.954300e+02
-0 8561     -3.381700e+02 -1.808002e+01
-4 8561     -2.534300e+02 -1.391100e+02
-0 8562     6.095699e+02 -2.127002e+01
-7 8562     4.634600e+02 1.608700e+02
-15 8562     8.235100e+02 1.901800e+02
-0 8563     6.095699e+02 -2.127002e+01
-7 8563     4.634600e+02 1.608700e+02
-0 8564     7.216400e+02 -2.171997e+01
-2 8564     6.801200e+02 1.825000e+01
-3 8564     5.435500e+02 -2.842800e+02
-7 8564     5.728900e+02 1.827300e+02
-9 8564     4.428600e+02 1.211900e+02
-10 8564     7.473400e+02 1.920900e+02
-12 8564     6.852800e+02 1.706800e+02
-0 8565     7.487900e+02 -2.214001e+01
-2 8565     7.076100e+02 3.241998e+01
-7 8565     5.988500e+02 1.878000e+02
-9 8565     4.658500e+02 1.337500e+02
-10 8565     7.802400e+02 1.941200e+02
-0 8566     6.316200e+02 -2.251001e+01
-8 8566     5.358101e+02 -5.454001e+01
-10 8566     6.416801e+02 1.819100e+02
-12 8566     5.798900e+02 1.339800e+02
-0 8567     -4.917000e+02 -2.362000e+01
-13 8567     -1.532200e+02 -3.048500e+02
-0 8568     6.931100e+02 -2.540002e+01
-2 8568     6.503101e+02 -8.900146e-01
-3 8568     5.161100e+02 -3.046800e+02
-6 8568     5.744700e+02 1.450800e+02
-8 8568     5.928101e+02 -3.319000e+01
-9 8568     4.187300e+02 1.036500e+02
-10 8568     7.141899e+02 1.849200e+02
-12 8568     6.528000e+02 1.545300e+02
-0 8569     7.202600e+02 -3.328998e+01
-2 8569     6.812800e+02 6.489990e+00
-3 8569     5.458199e+02 -2.962400e+02
-7 8569     5.730100e+02 1.712700e+02
-9 8569     4.443800e+02 1.109600e+02
-10 8569     7.470000e+02 1.782000e+02
-12 8569     6.862500e+02 1.565600e+02
-0 8570     7.202600e+02 -3.328998e+01
-2 8570     6.812800e+02 6.489990e+00
-3 8570     5.458199e+02 -2.962400e+02
-7 8570     5.730100e+02 1.712700e+02
-9 8570     4.443800e+02 1.109600e+02
-10 8570     7.470000e+02 1.782000e+02
-0 8571     7.202600e+02 -3.328998e+01
-2 8571     6.812800e+02 6.489990e+00
-3 8571     5.458199e+02 -2.962400e+02
-9 8571     4.443800e+02 1.109600e+02
-10 8571     7.470000e+02 1.782000e+02
-0 8572     6.730699e+02 -3.400000e+01
-2 8572     6.309200e+02 -1.966998e+01
-3 8572     4.981400e+02 -3.234200e+02
-6 8572     5.529200e+02 1.276400e+02
-7 8572     5.271899e+02 1.615300e+02
-8 8572     5.766801e+02 -4.831000e+01
-9 8572     4.030601e+02 8.737000e+01
-12 8572     6.318000e+02 1.373000e+02
-0 8573     1.969800e+02 -3.446002e+01
-7 8573     1.157200e+02 1.122300e+02
-13 8573     5.493600e+02 -2.349500e+02
-15 8573     2.363500e+02 1.168800e+02
-0 8574     3.531500e+02 -3.808002e+01
-10 8574     3.184700e+02 1.343600e+02
-13 8574     6.636100e+02 -2.324100e+02
-15 8574     4.561400e+02 1.330700e+02
-0 8575     2.860601e+02 -4.152002e+01
-7 8575     1.986500e+02 1.164300e+02
-10 8575     2.418300e+02 1.230200e+02
-12 8575     3.039800e+02 9.475000e+01
-13 8575     6.182600e+02 -2.372700e+02
-15 8575     3.627400e+02 1.191800e+02
-0 8576     -3.670300e+02 -4.423999e+01
-4 8576     -2.657500e+02 -1.204600e+02
-7 8576     -4.887900e+02 -2.212000e+01
-8 8576     -3.179900e+02 -2.672500e+02
-9 8576     -4.897200e+02 -1.998200e+02
-15 8576     -5.154200e+02 2.588000e+01
-0 8577     -3.670300e+02 -4.423999e+01
-2 8577     -4.522300e+02 -3.031000e+02
-4 8577     -2.657500e+02 -1.204600e+02
-7 8577     -4.887900e+02 -2.212000e+01
-8 8577     -3.179900e+02 -2.672500e+02
-9 8577     -4.897200e+02 -1.998200e+02
-13 8577     -3.362000e+01 -3.143400e+02
-15 8577     -5.154200e+02 2.588000e+01
-0 8578     -4.203998e+01 -4.378998e+01
-3 8578     1.933002e+01 -3.581300e+02
-4 8578     -2.978800e+02 -3.761700e+02
-7 8578     -1.224700e+02 5.947998e+01
-10 8578     -1.369300e+02 8.566998e+01
-13 8578     3.346200e+02 -2.655600e+02
-15 8578     -8.458002e+01 7.190002e+01
-0 8579     -4.290100e+02 -4.527002e+01
-2 8579     -5.335500e+02 -3.213300e+02
-8 8579     -3.827000e+02 -2.808000e+02
-13 8579     -9.060999e+01 -3.193500e+02
-15 8579     -6.021900e+02 1.491998e+01
-0 8580     -1.732200e+02 -4.759998e+01
-2 8580     -6.482001e+01 -1.109400e+02
-4 8580     -2.835900e+02 -2.754600e+02
-6 8580     -2.518800e+02 -1.140600e+02
-7 8580     -2.608900e+02 2.895001e+01
-12 8580     -2.383100e+02 -5.191998e+01
-15 8580     -2.606500e+02 4.867999e+01
-0 8581     -5.988000e+01 -5.003998e+01
-7 8581     -1.412800e+02 4.969000e+01
-10 8581     -1.573900e+02 7.677002e+01
-13 8581     3.169600e+02 -2.732000e+02
-15 8581     -1.080700e+02 6.071997e+01
-0 8582     2.149800e+02 -5.028003e+01
-3 8582     2.763900e+02 -2.829100e+02
-4 8582     -3.408900e+02 -5.868900e+02
-15 8582     2.638199e+02 9.792001e+01
-0 8583     -4.208400e+02 -5.112000e+01
-7 8583     -5.442900e+02 -3.894000e+01
-15 8583     -5.895100e+02 8.440002e+00
-0 8584     -3.657500e+02 -5.077002e+01
-2 8584     -4.461700e+02 -3.069200e+02
-4 8584     -2.696500e+02 -1.213500e+02
-7 8584     -4.849900e+02 -2.753998e+01
-8 8584     -3.128000e+02 -2.699700e+02
-9 8584     -4.836700e+02 -2.025400e+02
-15 8584     -5.122100e+02 1.795001e+01
-0 8585     7.250900e+02 -5.301001e+01
-7 8585     5.801700e+02 1.534500e+02
-10 8585     7.536600e+02 1.563500e+02
-12 8585     6.965300e+02 1.373900e+02
-0 8586     7.250900e+02 -5.301001e+01
-2 8586     6.921300e+02 -1.075000e+01
-3 8586     5.575800e+02 -3.127900e+02
-7 8586     5.801700e+02 1.534500e+02
-9 8586     4.535699e+02 9.679999e+01
-10 8586     7.536600e+02 1.563500e+02
-12 8586     6.965300e+02 1.373900e+02
-0 8587     -4.370400e+02 -5.391998e+01
-2 8587     -5.397000e+02 -3.312800e+02
-7 8587     -5.604600e+02 -4.460999e+01
-8 8587     -3.874300e+02 -2.895900e+02
-10 8587     -6.006900e+02 3.216998e+01
-13 8587     -9.589001e+01 -3.273400e+02
-15 8587     -6.105400e+02 2.750000e+00
-0 8588     2.927300e+02 -6.303003e+01
-2 8588     4.332500e+02 2.739990e+00
-6 8588     2.805900e+02 3.273999e+01
-7 8588     2.080000e+02 9.582999e+01
-8 8588     3.911400e+02 -4.219000e+01
-10 8588     2.518300e+02 9.828003e+01
-12 8588     3.163400e+02 7.148999e+01
-13 8588     6.256600e+02 -2.560700e+02
-15 8588     3.745500e+02 9.107999e+01
-0 8589     -3.370500e+02 -6.694000e+01
-2 8589     -3.980700e+02 -3.139400e+02
-8 8589     -2.756200e+02 -2.768600e+02
-0 8590     7.846000e+02 -6.678998e+01
-2 8590     7.592800e+02 6.609985e+00
-0 8591     -3.311000e+02 -6.740002e+01
-2 8591     -3.901800e+02 -3.125900e+02
-7 8591     -4.450700e+02 -3.785999e+01
-8 8591     -2.696000e+02 -2.760700e+02
-9 8591     -4.332400e+02 -2.036000e+02
-0 8592     -1.707800e+02 -6.796002e+01
-7 8592     -2.532000e+02 1.006000e+01
-13 8592     2.153800e+02 -2.992200e+02
-15 8592     -2.538500e+02 2.109003e+01
-0 8593     -1.707800e+02 -6.796002e+01
-2 8593     -4.459998e+01 -1.247300e+02
-4 8593     -2.977100e+02 -2.782800e+02
-6 8593     -2.347500e+02 -1.337800e+02
-7 8593     -2.532000e+02 1.006000e+01
-8 8593     -1.050000e+01 -1.449100e+02
-10 8593     -2.839900e+02 4.402002e+01
-12 8593     -2.227900e+02 -7.246002e+01
-13 8593     2.153800e+02 -2.992200e+02
-15 8593     -2.538500e+02 2.109003e+01
-0 8594     1.280500e+02 -6.903003e+01
-4 8594     -3.403900e+02 -5.155699e+02
-12 8594     1.518300e+02 3.400000e+01
-15 8594     1.476200e+02 6.053003e+01
-0 8595     1.280500e+02 -6.903003e+01
-4 8595     -3.403900e+02 -5.155699e+02
-8 8595     2.833800e+02 -5.722000e+01
-15 8595     1.476200e+02 6.053003e+01
-0 8596     6.959900e+02 -6.853003e+01
-7 8596     5.540699e+02 1.324800e+02
-10 8596     7.212200e+02 1.346200e+02
-0 8597     6.748900e+02 -7.177002e+01
-2 8597     6.466700e+02 -5.835999e+01
-9 8597     4.169100e+02 5.582001e+01
-10 8597     6.967900e+02 1.292600e+02
-0 8598     8.235000e+02 -7.550000e+01
-2 8598     7.984100e+02 1.798999e+01
-7 8598     6.763199e+02 1.519000e+02
-9 8598     5.406500e+02 1.249400e+02
-12 8598     8.136801e+02 1.516700e+02
-0 8599     -4.695300e+02 -8.714001e+01
-7 8599     -5.874000e+02 -8.340997e+01
-8 8599     -4.073800e+02 -3.222300e+02
-13 8599     -1.179600e+02 -3.582400e+02
-0 8600     6.933199e+02 -9.177002e+01
-2 8600     6.700400e+02 -6.898999e+01
-7 8600     5.542700e+02 1.102400e+02
-9 8600     4.368300e+02 4.794000e+01
-0 8601     -4.017300e+02 -1.084200e+02
-2 8601     -4.535600e+02 -3.697700e+02
-7 8601     -5.097900e+02 -9.169000e+01
-8 8601     -3.230500e+02 -3.238100e+02
-15 8601     -5.552300e+02 -6.659003e+01
-0 8602     3.073900e+02 -1.112500e+02
-7 8602     2.322600e+02 5.241998e+01
-10 8602     2.738600e+02 4.453998e+01
-15 8602     4.001500e+02 2.717999e+01
-0 8603     5.384600e+02 -1.148100e+02
-7 8603     4.164500e+02 6.229999e+01
-0 8604     7.685300e+02 -1.172500e+02
-2 8604     7.566899e+02 -5.309998e+01
-7 8604     6.302300e+02 1.012200e+02
-9 8604     5.078199e+02 6.446002e+01
-10 8604     8.097400e+02 8.587000e+01
-12 8604     7.626700e+02 8.384003e+01
-0 8605     -2.677002e+01 -1.238100e+02
-2 8605     1.658700e+02 -1.136600e+02
-10 8605     -1.104900e+02 -5.409973e+00
-15 8605     -5.409003e+01 -3.421997e+01
-0 8606     -4.255300e+02 -1.261700e+02
-7 8606     -5.308900e+02 -1.136200e+02
-0 8607     6.882100e+02 -1.289100e+02
-2 8607     6.763400e+02 -1.115600e+02
-3 8607     5.491600e+02 -4.119200e+02
-7 8607     5.546200e+02 7.309998e+01
-9 8607     4.424600e+02 1.263000e+01
-0 8608     -4.032100e+02 -1.298200e+02
-7 8608     -5.061000e+02 -1.122100e+02
-15 8608     -5.541900e+02 -9.409003e+01
-0 8609     7.963900e+02 -1.418700e+02
-3 8609     6.589200e+02 -3.591500e+02
-9 8609     5.380601e+02 5.778003e+01
-0 8610     7.963900e+02 -1.418700e+02
-3 8610     6.589200e+02 -3.591500e+02
-0 8611     1.360100e+02 -1.450500e+02
-7 8611     7.665002e+01 -5.479980e+00
-10 8611     7.939001e+01 -1.231000e+01
-15 8611     1.684301e+02 -4.065002e+01
-0 8612     2.089700e+02 -1.479500e+02
-10 8612     1.644600e+02 -7.570007e+00
-13 8612     5.758101e+02 -3.330400e+02
-15 8612     2.690000e+02 -3.498999e+01
-0 8613     1.575200e+02 -1.488100e+02
-4 8613     -4.071600e+02 -5.411200e+02
-10 8613     1.036500e+02 -1.446997e+01
-12 8613     2.102100e+02 -4.964001e+01
-13 8613     5.328300e+02 -3.375100e+02
-15 8613     1.983700e+02 -4.347998e+01
-0 8614     -1.745400e+02 -1.522600e+02
-7 8614     -2.510200e+02 -8.332001e+01
-15 8614     -2.450900e+02 -9.277002e+01
-0 8615     6.159003e+01 -1.530000e+02
-2 8615     2.784000e+02 -1.108400e+02
-3 8615     1.915601e+02 -4.124301e+02
-4 8615     -3.931600e+02 -4.605900e+02
-6 8615     9.639001e+01 -1.302100e+02
-7 8615     5.210022e+00 -2.695001e+01
-8 8615     2.528400e+02 -1.417200e+02
-10 8615     -5.900024e+00 -2.963000e+01
-12 8615     1.026300e+02 -8.329999e+01
-15 8615     6.832001e+01 -6.196002e+01
-0 8616     2.868700e+02 -1.527800e+02
-2 8616     4.714700e+02 -7.792999e+01
-3 8616     3.676500e+02 -3.763200e+02
-6 8616     3.132700e+02 -6.366998e+01
-7 8616     2.199600e+02 8.940002e+00
-8 8616     4.199500e+02 -1.131300e+02
-10 8616     2.538900e+02 -5.369995e+00
-12 8616     3.431801e+02 -2.732001e+01
-13 8616     6.378101e+02 -3.342500e+02
-15 8616     3.771400e+02 -3.214001e+01
-0 8617     8.327300e+02 -1.526100e+02
-7 8617     6.950300e+02 8.113000e+01
-9 8617     5.688700e+02 6.627002e+01
-0 8618     1.727600e+02 -1.573100e+02
-13 8618     5.469800e+02 -3.439700e+02
-15 8618     2.198800e+02 -5.358002e+01
-0 8619     7.883900e+02 -1.580900e+02
-7 8619     6.545601e+02 6.652002e+01
-0 8620     8.763700e+02 -1.581700e+02
-3 8620     7.365900e+02 -3.295200e+02
-9 8620     6.048199e+02 8.220001e+01
-0 8621     7.202400e+02 -1.652800e+02
-2 8621     7.215100e+02 -1.305400e+02
-7 8621     5.902600e+02 4.523999e+01
-9 8621     4.814301e+02 -1.369995e+00
-0 8622     -1.522998e+01 -1.660300e+02
-7 8622     -7.056000e+01 -5.537000e+01
-10 8622     -9.346997e+01 -5.272998e+01
-0 8623     -4.270400e+02 -1.717700e+02
-7 8623     -5.205000e+02 -1.591300e+02
-9 8623     -4.666400e+02 -3.087500e+02
-13 8623     -5.884998e+01 -4.295300e+02
-15 8623     -5.818400e+02 -1.556800e+02
-0 8624     -1.334003e+01 -1.776100e+02
-6 8624     2.133002e+01 -1.868300e+02
-12 8624     2.121002e+01 -1.369900e+02
-0 8625     8.385800e+02 -1.777900e+02
-7 8625     7.033400e+02 5.778003e+01
-9 8625     5.819900e+02 4.848999e+01
-0 8626     2.651500e+02 -1.831900e+02
-7 8626     2.055800e+02 -2.266998e+01
-0 8627     -4.536700e+02 -1.871900e+02
-7 8627     -5.451100e+02 -1.791000e+02
-15 8627     -6.167300e+02 -1.803200e+02
-0 8628     -4.571997e+01 -1.922300e+02
-2 8628     1.870600e+02 -1.805700e+02
-4 8628     -4.036700e+02 -3.749400e+02
-6 8628     -4.390015e+00 -2.132600e+02
-7 8628     -9.504999e+01 -8.564001e+01
-8 8628     1.730500e+02 -1.992700e+02
-9 8628     5.972998e+01 -5.672998e+01
-10 8628     -1.256000e+02 -8.637000e+01
-12 8628     -9.559998e+00 -1.620300e+02
-0 8629     -1.354600e+02 -1.955000e+02
-2 8629     3.297998e+01 -2.713700e+02
-3 8629     -4.103998e+01 -5.810601e+02
-7 8629     -1.955800e+02 -1.136400e+02
-8 8629     5.154999e+01 -2.642000e+02
-9 8629     -6.603003e+01 -1.408500e+02
-10 8629     -2.289800e+02 -9.950000e+01
-12 8629     -1.435200e+02 -2.199700e+02
-13 8629     2.562100e+02 -4.131800e+02
-15 8629     -1.884400e+02 -1.460200e+02
-0 8630     -1.085999e+01 -2.006800e+02
-7 8630     -5.721002e+01 -8.690002e+01
-10 8630     -8.477002e+01 -9.265997e+01
-13 8630     3.940400e+02 -3.969900e+02
-0 8631     3.056500e+02 -2.014200e+02
-6 8631     3.583000e+02 -1.053000e+02
-7 8631     2.482000e+02 -3.378998e+01
-8 8631     4.571801e+02 -1.419200e+02
-10 8631     2.802800e+02 -5.938000e+01
-0 8632     -4.696002e+01 -2.020800e+02
-4 8632     -4.095800e+02 -3.756100e+02
-6 8632     2.260010e+00 -2.211200e+02
-7 8632     -9.315997e+01 -9.463000e+01
-10 8632     -1.257600e+02 -9.796002e+01
-12 8632     -4.830017e+00 -1.704200e+02
-15 8632     -7.210999e+01 -1.427700e+02
-0 8633     -4.696002e+01 -2.020800e+02
-6 8633     2.260010e+00 -2.211200e+02
-7 8633     -9.315997e+01 -9.463000e+01
-10 8633     -1.257600e+02 -9.796002e+01
-12 8633     -4.830017e+00 -1.704200e+02
-15 8633     -7.210999e+01 -1.427700e+02
-0 8634     8.512600e+02 -2.016100e+02
-3 8634     7.327500e+02 -3.868000e+02
-7 8634     7.181200e+02 3.776001e+01
-9 8634     5.977900e+02 3.508002e+01
-0 8635     -4.434900e+02 -2.061600e+02
-7 8635     -5.294800e+02 -1.957400e+02
-0 8636     2.895300e+02 -2.066400e+02
-7 8636     2.348700e+02 -4.083002e+01
-10 8636     2.618800e+02 -6.728003e+01
-15 8636     3.867100e+02 -1.050600e+02
-0 8637     7.750500e+02 -2.074100e+02
-2 8637     7.920300e+02 -1.435600e+02
-12 8637     7.946899e+02 -1.412000e+01
-0 8638     8.565800e+02 -2.160600e+02
-3 8638     7.434399e+02 -3.982000e+02
-7 8638     7.245800e+02 2.542999e+01
-9 8638     6.063199e+02 2.504999e+01
-0 8639     9.710022e+00 -2.267600e+02
-4 8639     -4.412200e+02 -4.172400e+02
-0 8640     1.698800e+02 -2.308300e+02
-10 8640     1.281600e+02 -1.080100e+02
-13 8640     5.599100e+02 -4.084900e+02
-15 8640     2.258400e+02 -1.531800e+02
-0 8641     2.329700e+02 -2.339000e+02
-6 8641     3.087600e+02 -1.573500e+02
-12 8641     3.250000e+02 -1.220600e+02
-15 8641     3.133300e+02 -1.477300e+02
-0 8642     1.553800e+02 -2.428900e+02
-2 8642     4.125900e+02 -1.769900e+02
-6 8642     2.329500e+02 -1.959000e+02
-7 8642     1.145500e+02 -9.895001e+01
-9 8642     2.411000e+02 -4.398999e+01
-12 8642     2.423800e+02 -1.577900e+02
-15 8642     2.066700e+02 -1.712700e+02
-0 8643     2.753000e+02 -2.723900e+02
-6 8643     3.371400e+02 -2.025000e+02
-7 8643     2.265000e+02 -1.107200e+02
-12 8643     3.631200e+02 -1.712300e+02
-13 8643     6.404900e+02 -4.449100e+02
-15 8643     3.775601e+02 -1.963600e+02
-0 8644     -1.366998e+01 -2.784900e+02
-6 8644     3.665002e+01 -3.165400e+02
-9 8644     9.031000e+01 -1.601200e+02
-10 8644     -7.914001e+01 -1.820600e+02
-12 8644     3.922998e+01 -2.711500e+02
-13 8644     3.845300e+02 -4.749399e+02
-15 8644     -1.421997e+01 -2.417600e+02
-0 8645     5.079999e+01 -2.960900e+02
-2 8645     3.007900e+02 -2.974600e+02
-3 8645     2.217500e+02 -5.965100e+02
-4 8645     -5.074300e+02 -4.416100e+02
-6 8645     1.183400e+02 -3.088600e+02
-8 8645     2.681100e+02 -2.937000e+02
-9 8645     1.560900e+02 -1.486200e+02
-10 8645     -2.719971e+00 -1.950500e+02
-13 8645     4.467300e+02 -4.852900e+02
-15 8645     7.477002e+01 -2.568900e+02
-0 8646     2.952600e+02 -3.018100e+02
-7 8646     2.458000e+02 -1.403100e+02
-10 8646     2.780800e+02 -1.746800e+02
-15 8646     4.108600e+02 -2.337000e+02
-0 8647     3.229600e+02 -3.115200e+02
-7 8647     2.725900e+02 -1.453100e+02
-10 8647     3.110900e+02 -1.829200e+02
-15 8647     4.506801e+02 -2.437400e+02
-0 8648     3.490200e+02 -3.287600e+02
-12 8648     4.457000e+02 -2.295800e+02
-0 8649     7.352900e+02 -3.496500e+02
-7 8649     6.447500e+02 -1.162900e+02
-0 8650     3.781200e+02 -3.648600e+02
-6 8650     4.415200e+02 -2.934000e+02
-10 8650     3.800601e+02 -2.382400e+02
-0 8651     3.781200e+02 -3.648600e+02
-2 8651     5.879900e+02 -3.356100e+02
-6 8651     4.415200e+02 -2.934000e+02
-8 8651     5.187900e+02 -3.226000e+02
-9 8651     3.868900e+02 -1.711500e+02
-10 8651     3.800601e+02 -2.382400e+02
-0 8652     6.069000e+01 -4.007700e+02
-7 8652     4.215002e+01 -2.779100e+02
-0 8653     4.660100e+02 -4.124600e+02
-7 8653     4.191600e+02 -2.199400e+02
-0 8654     4.497300e+02 -4.217700e+02
-6 8654     5.361100e+02 -3.282600e+02
-0 8655     7.659000e+02 -4.296200e+02
-7 8655     6.882500e+02 -1.817700e+02
-0 8656     -2.640400e+02 -4.333700e+02
-6 8656     -2.173800e+02 -6.305100e+02
-7 8656     -2.847700e+02 -3.819300e+02
-0 8657     7.387600e+02 -4.620000e+02
-7 8657     6.727700e+02 -2.153600e+02
-0 8658     -2.404700e+02 -4.731300e+02
-4 8658     -5.917500e+02 -1.965400e+02
-6 8658     -1.611700e+02 -6.609800e+02
-9 8658     -4.762000e+01 -4.468800e+02
-0 8659     7.290300e+02 -4.849800e+02
-7 8659     6.686100e+02 -2.369400e+02
-0 8660     -1.220400e+02 -5.043700e+02
-4 8660     -6.479400e+02 -2.877100e+02
-6 8660     -1.320007e+00 -6.374900e+02
-9 8660     8.519000e+01 -4.205000e+02
-0 8661     -1.220400e+02 -5.043700e+02
-6 8661     -1.320007e+00 -6.374900e+02
-9 8661     8.519000e+01 -4.205000e+02
-0 8662     -1.887200e+02 -5.090300e+02
-4 8662     -6.358400e+02 -2.357100e+02
-6 8662     -7.465002e+01 -6.742700e+02
-9 8662     2.884998e+01 -4.509600e+02
-0 8663     4.131801e+02 -5.131899e+02
-6 8663     5.561100e+02 -4.275100e+02
-0 8664     -8.703998e+01 -5.321600e+02
-6 8664     5.684003e+01 -6.501300e+02
-9 8664     1.360700e+02 -4.256900e+02
-0 8665     -5.278998e+01 -5.379700e+02
-9 8665     1.689100e+02 -4.155200e+02
-0 8666     -3.100500e+02 -5.421600e+02
-7 8666     -3.055800e+02 -4.978700e+02
-0 8667     1.482500e+02 -5.450000e+02
-2 8667     5.016500e+02 -5.560601e+02
-9 8667     3.327800e+02 -3.508500e+02
-12 8667     3.156300e+02 -5.368500e+02
-0 8668     1.178998e+01 -5.465300e+02
-2 8668     3.714700e+02 -6.051300e+02
-7 8668     2.175000e+01 -4.327800e+02
-9 8668     2.286400e+02 -3.994000e+02
-0 8669     -7.810999e+01 -5.504600e+02
-4 8669     -7.012800e+02 -3.248700e+02
-9 8669     1.571000e+02 -4.335800e+02
-0 8670     1.617800e+02 -5.545900e+02
-6 8670     3.344400e+02 -5.654600e+02
-0 8671     4.665002e+01 -5.559800e+02
-2 8671     4.117400e+02 -6.021200e+02
-7 8671     5.766998e+01 -4.346899e+02
-0 8672     7.635999e+01 -5.571300e+02
-2 8672     4.409800e+02 -5.909700e+02
-4 8672     -7.518000e+02 -4.573500e+02
-9 8672     2.860300e+02 -3.818900e+02
-10 8672     5.396002e+01 -4.903800e+02
-12 8672     2.414100e+02 -5.751899e+02
-0 8673     -1.137000e+01 -5.588800e+02
-9 8673     2.176300e+02 -4.158400e+02
-0 8674     1.127400e+02 -5.625100e+02
-2 8674     4.837500e+02 -5.827700e+02
-7 8674     1.243000e+02 -4.274800e+02
-9 8674     3.195000e+02 -3.728600e+02
-10 8674     9.669000e+01 -4.928700e+02
-0 8675     7.812800e+02 -5.644100e+02
-7 8675     7.295300e+02 -2.970400e+02
-0 8676     5.164100e+02 -5.765200e+02
-7 8676     5.037300e+02 -3.587600e+02
-0 8677     5.709100e+02 5.825100e+02
-2 8677     3.153900e+02 4.802900e+02
-3 8677     1.700800e+02 1.435900e+02
-6 8677     2.309000e+02 7.619600e+02
-8 8677     3.274000e+02 3.717000e+02
-9 8677     1.203300e+02 5.017600e+02
-11 8677     6.367800e+02 -1.648900e+02
-13 8677     7.051000e+02 2.869100e+02
-0 8678     -5.064300e+02 5.795300e+02
-2 8678     -8.016200e+02 3.630600e+02
-4 8678     9.139001e+01 -9.056000e+01
-5 8678     -7.553998e+01 -6.688000e+01
-8 8678     -5.774300e+02 2.683200e+02
-11 8678     -2.864000e+02 -2.034600e+02
-13 8678     -2.045600e+02 2.138100e+02
-14 8678     -1.602400e+02 -1.632700e+02
-0 8679     2.704200e+02 5.783700e+02
-2 8679     -6.034998e+01 3.461500e+02
-3 8679     -2.014900e+02 1.166998e+01
-4 8679     4.523999e+01 -5.400699e+02
-5 8679     6.705400e+02 -6.128003e+01
-6 8679     -2.011700e+02 6.734100e+02
-8 8679     3.071997e+01 2.710600e+02
-9 8679     -2.059200e+02 3.730300e+02
-11 8679     3.841899e+02 -1.848800e+02
-13 8679     4.008300e+02 2.522900e+02
-14 8679     5.704500e+02 -1.438800e+02
-0 8680     4.591100e+02 5.779900e+02
-3 8680     -5.679999e+01 1.290002e+01
-11 8680     5.551600e+02 -1.737100e+02
-13 8680     5.497600e+02 2.649800e+02
-14 8680     7.536000e+02 -1.331500e+02
-0 8681     4.662000e+02 5.785500e+02
-3 8681     -5.014001e+01 1.379999e+01
-0 8682     1.988101e+02 5.700300e+02
-2 8682     -1.204000e+02 3.392200e+02
-4 8682     4.377002e+01 -4.904900e+02
-5 8682     6.000300e+02 -7.182001e+01
-6 8682     -2.754300e+02 6.507800e+02
-8 8682     -1.884998e+01 2.650200e+02
-11 8682     3.197100e+02 -1.969200e+02
-13 8682     3.451801e+02 2.413400e+02
-0 8683     2.630699e+02 5.697100e+02
-2 8683     -6.520001e+01 3.383200e+02
-4 8683     4.094000e+01 -5.350400e+02
-5 8683     6.631400e+02 -7.021997e+01
-6 8683     -2.079300e+02 6.617900e+02
-9 8683     -2.103400e+02 3.656000e+02
-11 8683     3.787900e+02 -1.922800e+02
-13 8683     3.958101e+02 2.451300e+02
-14 8683     5.640900e+02 -1.529700e+02
-0 8684     -7.203700e+02 5.672700e+02
-4 8684     8.498999e+01 3.676001e+01
-0 8685     -3.498500e+02 5.666800e+02
-5 8685     7.092999e+01 -8.157001e+01
-0 8686     6.083300e+02 5.666500e+02
-2 8686     3.585699e+02 4.780700e+02
-3 8686     2.116801e+02 1.421100e+02
-6 8686     2.810600e+02 7.521000e+02
-8 8686     3.624000e+02 3.690400e+02
-9 8686     1.577400e+02 5.004900e+02
-13 8686     7.420100e+02 2.772200e+02
-0 8687     6.083300e+02 5.666500e+02
-3 8687     2.116801e+02 1.421100e+02
-6 8687     2.810600e+02 7.521000e+02
-9 8687     1.577400e+02 5.004900e+02
-13 8687     7.420100e+02 2.772200e+02
-0 8688     -5.954600e+02 5.662600e+02
-5 8688     -1.610900e+02 -7.807001e+01
-0 8689     -1.445000e+02 5.642000e+02
-2 8689     -4.316800e+02 3.364400e+02
-0 8690     -1.445000e+02 5.642000e+02
-2 8690     -4.316800e+02 3.364400e+02
-0 8691     3.847400e+02 5.638300e+02
-2 8691     3.640997e+01 3.340900e+02
-5 8691     7.863199e+02 -7.126001e+01
-6 8691     -8.050000e+01 6.794300e+02
-9 8691     -1.233800e+02 3.652400e+02
-11 8691     4.892200e+02 -1.901800e+02
-13 8691     4.916400e+02 2.487000e+02
-14 8691     6.826000e+02 -1.512400e+02
-0 8692     -1.570000e+02 5.621200e+02
-3 8692     -5.689200e+02 3.997803e-02
-0 8693     -1.570000e+02 5.621200e+02
-2 8693     -4.436000e+02 3.311900e+02
-3 8693     -5.689200e+02 3.997803e-02
-4 8693     6.089001e+01 -2.740200e+02
-5 8693     2.543300e+02 -8.856000e+01
-11 8693     6.809998e+00 -2.149000e+02
-13 8693     6.635999e+01 2.131500e+02
-14 8693     1.641300e+02 -1.783600e+02
-0 8694     2.562000e+01 5.478600e+02
-2 8694     -2.715100e+02 3.149300e+02
-3 8694     -4.020000e+02 -1.746002e+01
-4 8694     4.146002e+01 -3.794100e+02
-5 8694     4.310100e+02 -9.840997e+01
-6 8694     -4.594200e+02 5.894900e+02
-8 8694     -1.440500e+02 2.421000e+02
-12 8694     -2.853500e+02 5.689000e+02
-13 8694     2.095601e+02 2.125400e+02
-14 8694     3.377400e+02 -1.854000e+02
-0 8695     2.256200e+02 5.472700e+02
-2 8695     -9.446002e+01 3.149700e+02
-4 8695     2.877002e+01 -5.075601e+02
-5 8695     6.275900e+02 -9.379999e+01
-6 8695     -2.425900e+02 6.279400e+02
-9 8695     -2.338800e+02 3.447000e+02
-12 8695     -7.576001e+01 5.943600e+02
-0 8696     2.256200e+02 5.472700e+02
-2 8696     -9.446002e+01 3.149700e+02
-4 8696     2.877002e+01 -5.075601e+02
-5 8696     6.275900e+02 -9.379999e+01
-6 8696     -2.425900e+02 6.279400e+02
-8 8696     2.150024e+00 2.453400e+02
-9 8696     -2.338800e+02 3.447000e+02
-12 8696     -7.576001e+01 5.943600e+02
-0 8697     -4.124100e+02 5.449700e+02
-2 8697     -7.007500e+02 3.175300e+02
-4 8697     6.731000e+01 -1.347400e+02
-5 8697     8.880005e+00 -1.027000e+02
-7 8697     -6.509700e+02 5.741000e+02
-8 8697     -4.954700e+02 2.351900e+02
-11 8697     -2.110600e+02 -2.316600e+02
-12 8697     -7.813300e+02 5.089800e+02
-13 8697     -1.324200e+02 1.888500e+02
-14 8697     -7.640002e+01 -1.972400e+02
-0 8698     2.382100e+02 5.426000e+02
-2 8698     -8.342999e+01 3.088700e+02
-3 8698     -2.236600e+02 -2.554999e+01
-4 8698     2.528003e+01 -5.156801e+02
-5 8698     6.398000e+02 -9.912000e+01
-8 8698     1.148999e+01 2.406200e+02
-9 8698     -2.240300e+02 3.397600e+02
-11 8698     3.581300e+02 -2.171400e+02
-12 8698     -6.217999e+01 5.894900e+02
-13 8698     3.764301e+02 2.203300e+02
-14 8698     5.418800e+02 -1.815900e+02
-0 8699     2.319900e+02 5.396300e+02
-2 8699     -8.848999e+01 3.055100e+02
-14 8699     5.361801e+02 -1.854500e+02
-0 8700     2.319900e+02 5.396300e+02
-2 8700     -8.848999e+01 3.055100e+02
-14 8700     5.361801e+02 -1.854500e+02
-0 8701     1.091998e+01 5.373700e+02
-2 8701     -2.840800e+02 3.023100e+02
-4 8701     3.575000e+01 -3.694300e+02
-5 8701     4.163700e+02 -1.105500e+02
-6 8701     -4.738500e+02 5.719100e+02
-9 8701     -3.950100e+02 3.274600e+02
-11 8701     1.553700e+02 -2.314800e+02
-12 8701     -2.990200e+02 5.535100e+02
-13 8701     1.984301e+02 2.017300e+02
-14 8701     3.239399e+02 -1.972200e+02
-0 8702     2.655601e+02 5.367900e+02
-6 8702     -1.911300e+02 6.228600e+02
-11 8702     3.846300e+02 -2.199000e+02
-0 8703     2.530699e+02 5.354800e+02
-4 8703     2.060999e+01 -5.268199e+02
-5 8703     6.562200e+02 -1.054800e+02
-0 8704     6.064800e+02 5.351600e+02
-2 8704     3.650400e+02 4.503500e+02
-3 8704     2.183400e+02 1.163400e+02
-6 8704     2.875300e+02 7.180200e+02
-8 8704     3.673000e+02 3.466500e+02
-11 8704     6.777200e+02 -2.032200e+02
-13 8704     7.444700e+02 2.522700e+02
-0 8705     5.945000e+02 5.338100e+02
-2 8705     3.525900e+02 4.450700e+02
-3 8705     2.064800e+02 1.110800e+02
-6 8705     2.727600e+02 7.128600e+02
-8 8705     3.570000e+02 3.418400e+02
-9 8705     1.531400e+02 4.714400e+02
-11 8705     6.669100e+02 -2.052200e+02
-13 8705     7.330400e+02 2.497000e+02
-0 8706     1.333300e+02 5.320100e+02
-4 8706     2.551001e+01 -4.460601e+02
-11 8706     2.651400e+02 -2.306900e+02
-0 8707     1.643000e+02 5.323900e+02
-12 8707     -1.367800e+02 5.681900e+02
-0 8708     -5.962200e+02 5.312400e+02
-4 8708     7.196997e+01 -3.995001e+01
-5 8708     -1.679800e+02 -1.144700e+02
-11 8708     -3.625700e+02 -2.433600e+02
-13 8708     -2.787800e+02 1.696100e+02
-14 8708     -2.527400e+02 -2.117000e+02
-0 8709     -5.962200e+02 5.312400e+02
-4 8709     7.196997e+01 -3.995001e+01
-5 8709     -1.679800e+02 -1.144700e+02
-13 8709     -2.787800e+02 1.696100e+02
-14 8709     -2.527400e+02 -2.117000e+02
-0 8710     -6.116800e+02 5.286000e+02
-14 8710     -2.657700e+02 -2.138700e+02
-0 8711     4.454800e+02 5.269800e+02
-2 8711     9.067999e+01 2.948500e+02
-11 8711     5.520699e+02 -2.179800e+02
-12 8711     1.494500e+02 5.981300e+02
-13 8711     5.420200e+02 2.213500e+02
-14 8711     7.461801e+02 -1.857400e+02
-0 8712     6.047000e+02 5.274700e+02
-6 8712     2.866300e+02 7.080800e+02
-8 8712     3.668000e+02 3.397900e+02
-13 8712     7.433300e+02 2.452400e+02
-0 8713     6.667300e+02 5.205700e+02
-2 8713     4.740900e+02 5.004900e+02
-3 8713     3.251500e+02 1.642600e+02
-6 8713     4.037500e+02 7.255300e+02
-8 8713     4.533700e+02 3.830500e+02
-9 8713     2.591300e+02 5.224500e+02
-13 8713     8.255900e+02 2.501800e+02
-0 8714     6.667300e+02 5.205700e+02
-2 8714     4.740900e+02 5.004900e+02
-3 8714     3.251500e+02 1.642600e+02
-6 8714     4.037500e+02 7.255300e+02
-8 8714     4.533700e+02 3.830500e+02
-9 8714     2.591300e+02 5.224500e+02
-13 8714     8.255900e+02 2.501800e+02
-0 8715     -1.025700e+02 5.146300e+02
-4 8715     3.015997e+01 -3.005400e+02
-5 8715     3.050900e+02 -1.352400e+02
-8 8715     -2.401200e+02 2.098000e+02
-0 8716     5.345400e+02 5.143700e+02
-2 8716     2.925900e+02 4.076800e+02
-3 8716     1.490500e+02 7.462000e+01
-8 8716     3.080800e+02 3.126200e+02
-9 8716     1.027800e+02 4.377000e+02
-0 8717     2.342200e+02 5.074100e+02
-9 8717     -2.225400e+02 3.073700e+02
-0 8718     6.381400e+02 5.073800e+02
-2 8718     4.487000e+02 4.803100e+02
-6 8718     3.738300e+02 7.060300e+02
-8 8718     4.316200e+02 3.665600e+02
-9 8718     2.374800e+02 5.046900e+02
-13 8718     8.002100e+02 2.372500e+02
-0 8719     6.534700e+02 5.030400e+02
-2 8719     4.654700e+02 4.818100e+02
-3 8719     3.176801e+02 1.466100e+02
-6 8719     3.933500e+02 7.046200e+02
-8 8719     4.462600e+02 3.675700e+02
-9 8719     2.526200e+02 5.064200e+02
-11 8719     7.183800e+02 -2.289000e+02
-13 8719     8.151400e+02 2.351400e+02
-0 8720     1.675000e+01 5.003900e+02
-2 8720     -2.754600e+02 2.613700e+02
-3 8720     -4.072000e+02 -7.045001e+01
-5 8720     4.211500e+02 -1.483900e+02
-6 8720     -4.603400e+02 5.252500e+02
-7 8720     -2.108200e+02 5.698500e+02
-13 8720     2.033700e+02 1.711600e+02
-14 8720     3.298000e+02 -2.350300e+02
-0 8721     1.675000e+01 5.003900e+02
-2 8721     -2.754600e+02 2.613700e+02
-3 8721     -4.072000e+02 -7.045001e+01
-4 8721     1.464001e+01 -3.700500e+02
-5 8721     4.211500e+02 -1.483900e+02
-7 8721     -2.108200e+02 5.698500e+02
-13 8721     2.033700e+02 1.711600e+02
-14 8721     3.298000e+02 -2.350300e+02
-0 8722     -6.085400e+02 4.965900e+02
-4 8722     5.523999e+01 -2.990997e+01
-5 8722     -1.847800e+02 -1.492700e+02
-7 8722     -8.571200e+02 5.017600e+02
-14 8722     -2.677700e+02 -2.468200e+02
-0 8723     -5.759800e+02 4.939800e+02
-4 8723     5.078003e+01 -4.553998e+01
-5 8723     -1.546100e+02 -1.539000e+02
-0 8724     1.065997e+01 4.924800e+02
-2 8724     -2.809100e+02 2.512900e+02
-4 8724     1.077002e+01 -3.645400e+02
-6 8724     -4.678100e+02 5.141700e+02
-7 8724     -2.157000e+02 5.611300e+02
-8 8724     -1.515800e+02 1.913200e+02
-9 8724     -3.918200e+02 2.835100e+02
-13 8724     1.986200e+02 1.640000e+02
-14 8724     3.239000e+02 -2.431600e+02
-0 8725     -7.012300e+02 4.914900e+02
-4 8725     4.992999e+01 3.767999e+01
-5 8725     -3.688000e+02 -1.535100e+02
-11 8725     -4.409100e+02 -2.732000e+02
-0 8726     -4.123700e+02 4.784600e+02
-2 8726     -7.001800e+02 2.375100e+02
-8 8726     -4.944200e+02 1.724300e+02
-11 8726     -2.144400e+02 -2.860800e+02
-12 8726     -7.693900e+02 4.277300e+02
-14 8726     -8.348999e+01 -2.644500e+02
-0 8727     -6.630200e+02 4.762500e+02
-4 8727     4.187000e+01 1.228998e+01
-11 8727     -4.174300e+02 -2.854100e+02
-0 8728     -5.474800e+02 4.758000e+02
-4 8728     4.019000e+01 -5.821002e+01
-5 8728     -1.290100e+02 -1.713500e+02
-0 8729     -6.125600e+02 4.737000e+02
-11 8729     -3.828700e+02 -2.884100e+02
-13 8729     -2.940000e+02 1.211300e+02
-14 8729     -2.755900e+02 -2.693600e+02
-0 8730     7.835699e+02 4.720300e+02
-2 8730     6.015400e+02 4.974700e+02
-3 8730     4.437900e+02 1.636000e+02
-6 8730     5.497100e+02 7.029200e+02
-0 8731     6.426899e+02 4.705000e+02
-2 8731     4.626801e+02 4.499600e+02
-3 8731     3.160800e+02 1.183200e+02
-9 8731     2.502900e+02 4.794700e+02
-13 8731     8.089700e+02 2.090400e+02
-0 8732     7.326000e+02 4.691000e+02
-2 8732     5.529500e+02 4.780200e+02
-6 8732     4.926300e+02 6.866400e+02
-9 8732     3.259900e+02 5.051700e+02
-0 8733     8.299988e+00 4.648000e+02
-2 8733     -2.806500e+02 2.196200e+02
-4 8733     -6.080017e+00 -3.618200e+02
-5 8733     4.112900e+02 -1.866000e+02
-6 8733     -4.632700e+02 4.775900e+02
-7 8733     -2.143600e+02 5.327200e+02
-8 8733     -1.513600e+02 1.663400e+02
-9 8733     -3.885000e+02 2.550800e+02
-11 8733     1.566100e+02 -2.934300e+02
-12 8733     -2.891100e+02 4.686300e+02
-14 8733     3.216700e+02 -2.719400e+02
-0 8734     5.223700e+02 4.614900e+02
-2 8734     2.910400e+02 3.538900e+02
-3 8734     1.487200e+02 2.353003e+01
-6 8734     1.992300e+02 6.133400e+02
-9 8734     1.021200e+02 3.909300e+02
-11 8734     6.156500e+02 -2.719600e+02
-12 8734     3.079200e+02 6.000200e+02
-0 8735     5.223700e+02 4.614900e+02
-2 8735     2.910400e+02 3.538900e+02
-3 8735     1.487200e+02 2.353003e+01
-6 8735     1.992300e+02 6.133400e+02
-9 8735     1.021200e+02 3.909300e+02
-11 8735     6.156500e+02 -2.719600e+02
-12 8735     3.079200e+02 6.000200e+02
-0 8736     3.991700e+02 4.590500e+02
-5 8736     8.088600e+02 -1.816300e+02
-6 8736     -4.322998e+01 5.534400e+02
-0 8737     -2.457200e+02 4.578200e+02
-4 8737     8.559998e+00 -2.147500e+02
-5 8737     1.613400e+02 -1.946900e+02
-7 8737     -4.658200e+02 4.983500e+02
-8 8737     -3.524600e+02 1.543300e+02
-11 8737     -7.092999e+01 -3.042700e+02
-0 8738     7.809200e+02 4.516300e+02
-3 8738     4.472200e+02 1.477400e+02
-0 8739     -1.483900e+02 4.506400e+02
-2 8739     -4.297500e+02 2.011100e+02
-4 8739     -3.070007e+00 -2.685600e+02
-5 8739     2.559399e+02 -2.030300e+02
-7 8739     -3.668200e+02 5.011600e+02
-8 8739     -2.732500e+02 1.490800e+02
-12 8739     -4.589500e+02 4.283400e+02
-13 8739     7.365002e+01 1.203300e+02
-14 8739     1.695000e+02 -2.911100e+02
-0 8740     5.151200e+02 4.511900e+02
-3 8740     1.436800e+02 1.152002e+01
-6 8740     1.929300e+02 5.998400e+02
-8 8740     3.026000e+02 2.588100e+02
-9 8740     9.769000e+01 3.803100e+02
-11 8740     6.112400e+02 -2.827900e+02
-0 8741     -2.587400e+02 4.458300e+02
-2 8741     -5.396200e+02 1.944300e+02
-5 8741     1.472700e+02 -2.075700e+02
-7 8741     -4.774600e+02 4.844100e+02
-0 8742     -2.222100e+02 4.443900e+02
-2 8742     -5.019900e+02 1.931600e+02
-4 8742     -1.070007e+00 -2.262600e+02
-5 8742     1.833900e+02 -2.093400e+02
-7 8742     -4.399200e+02 4.866400e+02
-8 8742     -3.328900e+02 1.411800e+02
-11 8742     -5.052002e+01 -3.167900e+02
-12 8742     -5.411200e+02 4.095800e+02
-13 8742     1.520001e+01 1.115300e+02
-14 8742     9.817999e+01 -2.988300e+02
-0 8743     -1.795100e+02 4.432500e+02
-4 8743     -5.250000e+00 -2.497200e+02
-5 8743     2.248300e+02 -2.110700e+02
-8 8743     -2.981900e+02 1.408800e+02
-11 8743     -1.192999e+01 -3.166600e+02
-13 8743     4.844000e+01 1.121100e+02
-0 8744     -4.277600e+02 4.390000e+02
-2 8744     -7.171000e+02 1.868000e+02
-4 8744     1.197998e+01 -1.150600e+02
-5 8744     -1.885999e+01 -2.121900e+02
-8 8744     -5.072100e+02 1.321500e+02
-11 8744     -2.295500e+02 -3.199800e+02
-12 8744     -7.822000e+02 3.727800e+02
-13 8744     -1.484300e+02 9.854001e+01
-14 8744     -1.019800e+02 -3.056200e+02
-0 8745     -5.330300e+02 4.381000e+02
-4 8745     1.941998e+01 -6.056000e+01
-5 8745     -1.217400e+02 -2.109100e+02
-11 8745     -3.192500e+02 -3.194000e+02
-13 8745     -2.327800e+02 9.375000e+01
-14 8745     -2.044600e+02 -3.065200e+02
-0 8746     -6.023400e+02 4.350300e+02
-14 8746     -2.721300e+02 -3.082800e+02
-0 8747     -2.390700e+02 4.294100e+02
-2 8747     -5.188600e+02 1.748600e+02
-4 8747     -8.000000e+00 -2.156200e+02
-5 8747     1.657600e+02 -2.250000e+02
-7 8747     -4.550200e+02 4.692400e+02
-8 8747     -3.459500e+02 1.271400e+02
-11 8747     -6.445001e+01 -3.291000e+02
-12 8747     -5.573000e+02 3.895200e+02
-13 8747     1.119995e+00 9.762000e+01
-14 8747     8.022998e+01 -3.151400e+02
-0 8748     6.287600e+02 4.192300e+02
-2 8748     4.616200e+02 3.983900e+02
-3 8748     3.159000e+02 6.991998e+01
-7 8748     4.258700e+02 5.851500e+02
-13 8748     8.011000e+02 1.645500e+02
-0 8749     -3.050700e+02 4.161400e+02
-2 8749     -5.862500e+02 1.581000e+02
-4 8749     -1.031000e+01 -1.778800e+02
-5 8749     9.857001e+01 -2.387500e+02
-8 8749     -4.008500e+02 1.123100e+02
-10 8749     -5.039700e+02 6.093500e+02
-12 8749     -6.316700e+02 3.626600e+02
-14 8749     1.553998e+01 -3.295200e+02
-0 8750     6.867100e+02 4.137700e+02
-8 8750     4.918101e+02 3.125800e+02
-9 8750     3.013500e+02 4.513000e+02
-0 8751     -3.725500e+02 4.107300e+02
-2 8751     -6.574700e+02 1.508800e+02
-4 8751     -7.729980e+00 -1.408700e+02
-5 8751     3.137000e+01 -2.430800e+02
-7 8751     -5.896500e+02 4.340900e+02
-8 8751     -4.592800e+02 1.051300e+02
-10 8751     -5.865000e+02 5.978000e+02
-11 8751     -1.828600e+02 -3.446700e+02
-12 8751     -7.111400e+02 3.455000e+02
-13 8751     -1.054700e+02 7.662000e+01
-14 8751     -5.134003e+01 -3.351600e+02
-0 8752     -2.154700e+02 4.075600e+02
-4 8752     -2.215002e+01 -2.264600e+02
-5 8752     1.871400e+02 -2.489900e+02
-7 8752     -4.285100e+02 4.485700e+02
-10 8752     -3.940100e+02 6.060300e+02
-11 8752     -4.415997e+01 -3.484500e+02
-12 8752     -5.262200e+02 3.654800e+02
-14 8752     1.021100e+02 -3.381000e+02
-0 8753     2.121997e+01 4.075000e+02
-2 8753     -2.633000e+02 1.518400e+02
-3 8753     -3.972500e+02 -1.793800e+02
-5 8753     4.226700e+02 -2.484400e+02
-6 8753     -4.376700e+02 4.047900e+02
-7 8753     -1.942400e+02 4.748800e+02
-8 8753     -1.372100e+02 1.132100e+02
-12 8753     -2.650100e+02 4.014700e+02
-13 8753     2.077900e+02 9.151001e+01
-14 8753     3.345400e+02 -3.328000e+02
-0 8754     8.692999e+01 4.030700e+02
-7 8754     -1.301400e+02 4.779600e+02
-0 8755     -3.211900e+02 3.938900e+02
-2 8755     -6.025600e+02 1.301600e+02
-4 8755     -2.115997e+01 -1.669500e+02
-5 8755     8.046997e+01 -2.622300e+02
-7 8755     -5.340400e+02 4.223400e+02
-8 8755     -4.136700e+02 9.032999e+01
-10 8755     -5.203300e+02 5.803800e+02
-11 8755     -1.372500e+02 -3.596900e+02
-12 8755     -6.469500e+02 3.328000e+02
-13 8755     -6.472998e+01 6.407001e+01
-14 8755     -2.440002e+00 -3.532500e+02
-0 8756     -7.103500e+02 3.870000e+02
-13 8756     -4.471300e+02 3.033002e+01
-0 8757     6.937300e+02 3.814000e+02
-3 8757     3.889600e+02 6.292999e+01
-6 8757     4.701300e+02 5.854300e+02
-7 8757     4.921400e+02 5.642100e+02
-8 8757     5.040800e+02 2.896900e+02
-9 8757     3.149500e+02 4.285000e+02
-12 8757     5.511700e+02 5.952700e+02
-13 8757     8.686899e+02 1.416600e+02
-0 8758     -6.678500e+02 3.800900e+02
-13 8758     -4.069600e+02 2.751001e+01
-14 8758     -4.229500e+02 -3.759100e+02
-0 8759     -1.309600e+02 3.790300e+02
-7 8759     -3.397500e+02 4.282400e+02
-11 8759     3.226001e+01 -3.734000e+02
-0 8760     4.618000e+02 3.792900e+02
-2 8760     2.408900e+02 2.508100e+02
-6 8760     1.412000e+02 5.007300e+02
-7 8760     2.503900e+02 5.149500e+02
-8 8760     2.660100e+02 1.861100e+02
-9 8760     6.228003e+01 3.002500e+02
-12 8760     2.560300e+02 4.915400e+02
-0 8761     5.608600e+02 3.767300e+02
-6 8761     2.704400e+02 5.296000e+02
-7 8761     3.509700e+02 5.289800e+02
-13 8761     7.175200e+02 1.180300e+02
-0 8762     9.789978e+00 3.631600e+02
-2 8762     -2.696400e+02 9.791998e+01
-5 8762     4.100000e+02 -2.979300e+02
-6 8762     -4.410700e+02 3.435300e+02
-7 8762     -1.995300e+02 4.282500e+02
-8 8762     -1.414500e+02 7.098001e+01
-9 8762     -3.728000e+02 1.494000e+02
-10 8762     -1.198300e+02 5.729400e+02
-11 8762     1.626400e+02 -3.854500e+02
-0 8763     -3.036600e+02 3.506700e+02
-7 8763     -5.098800e+02 3.786100e+02
-8 8763     -3.972300e+02 4.738000e+01
-10 8763     -4.936000e+02 5.281700e+02
-11 8763     -1.235500e+02 -3.985800e+02
-13 8763     -5.152002e+01 2.698999e+01
-14 8763     1.163000e+01 -4.004000e+02
-15 8763     -4.844500e+02 5.774800e+02
-0 8764     -3.036600e+02 3.506700e+02
-2 8764     -5.828300e+02 7.460999e+01
-4 8764     -4.715002e+01 -1.717600e+02
-5 8764     9.359998e+01 -3.097700e+02
-8 8764     -3.972300e+02 4.738000e+01
-10 8764     -4.936000e+02 5.281700e+02
-11 8764     -1.235500e+02 -3.985800e+02
-15 8764     -4.844500e+02 5.774800e+02
-0 8765     2.028400e+02 3.488300e+02
-2 8765     -6.516998e+01 1.152300e+02
-6 8765     -2.012900e+02 3.782000e+02
-9 8765     -1.976700e+02 1.729800e+02
-12 8765     -4.897998e+01 3.723700e+02
-0 8766     2.028400e+02 3.488300e+02
-6 8766     -2.012900e+02 3.782000e+02
-0 8767     -7.024800e+02 3.481600e+02
-4 8767     -2.231000e+01 5.257001e+01
-13 8767     -4.321600e+02 -1.090027e+00
-14 8767     -4.572500e+02 -4.099200e+02
-0 8768     -6.529400e+02 3.483200e+02
-13 8768     -3.865800e+02 1.960022e+00
-14 8768     -4.016100e+02 -4.094200e+02
-0 8769     5.324200e+02 3.477400e+02
-3 8769     1.894000e+02 -7.540997e+01
-6 8769     2.418400e+02 4.875000e+02
-7 8769     3.262100e+02 4.960200e+02
-8 8769     3.375700e+02 1.835200e+02
-9 8769     1.385300e+02 3.030900e+02
-10 8769     4.965800e+02 6.095700e+02
-12 8769     3.471500e+02 4.815100e+02
-13 8769     6.928900e+02 9.031000e+01
-0 8770     -3.286800e+02 3.441000e+02
-4 8770     -4.822998e+01 -1.575700e+02
-5 8770     6.787000e+01 -3.161000e+02
-7 8770     -5.347600e+02 3.687500e+02
-8 8770     -4.189200e+02 3.919000e+01
-15 8770     -5.178200e+02 5.662300e+02
-0 8771     7.951700e+02 3.394500e+02
-2 8771     6.481801e+02 3.889500e+02
-3 8771     4.928800e+02 6.547998e+01
-7 8771     5.948600e+02 5.408000e+02
-9 8771     4.082800e+02 4.315600e+02
-12 8771     6.740500e+02 5.840700e+02
-0 8772     -1.806900e+02 3.367000e+02
-2 8772     -4.553300e+02 5.909998e+01
-7 8772     -3.838000e+02 3.783600e+02
-8 8772     -2.935100e+02 3.692001e+01
-13 8772     4.671002e+01 1.971002e+01
-15 8772     -3.110100e+02 5.736500e+02
-0 8773     -3.281800e+02 3.358600e+02
-4 8773     -5.332001e+01 -1.566300e+02
-7 8773     -5.330500e+02 3.595000e+02
-11 8773     -1.469500e+02 -4.118800e+02
-15 8773     -5.160400e+02 5.531400e+02
-0 8774     7.177400e+02 3.333100e+02
-6 8774     5.094900e+02 5.424800e+02
-7 8774     5.220800e+02 5.211200e+02
-8 8774     5.341200e+02 2.621500e+02
-9 8774     3.460800e+02 4.021300e+02
-10 8774     7.194500e+02 6.113000e+02
-12 8774     5.897900e+02 5.528400e+02
-0 8775     5.302600e+02 3.288700e+02
-7 8775     3.263199e+02 4.772900e+02
-10 8775     4.956000e+02 5.856600e+02
-13 8775     6.929000e+02 7.371997e+01
-0 8776     5.302600e+02 3.288700e+02
-7 8776     3.263199e+02 4.772900e+02
-10 8776     4.956000e+02 5.856600e+02
-0 8777     6.388700e+02 3.286400e+02
-2 8777     4.939700e+02 3.200000e+02
-3 8777     3.503900e+02 -3.229980e+00
-6 8777     4.163500e+02 5.132400e+02
-7 8777     4.456700e+02 5.044300e+02
-9 8777     2.793700e+02 3.683900e+02
-10 8777     6.249700e+02 5.977300e+02
-11 8777     7.435900e+02 -3.906400e+02
-13 8777     8.204700e+02 9.198999e+01
-0 8778     6.606200e+02 3.277600e+02
-2 8778     5.177200e+02 3.279700e+02
-3 8778     3.725601e+02 4.979980e+00
-6 8778     4.440699e+02 5.184200e+02
-7 8778     4.671500e+02 5.072000e+02
-8 8778     4.872700e+02 2.398600e+02
-9 8778     2.994000e+02 3.762300e+02
-10 8778     6.511200e+02 5.992500e+02
-11 8778     7.660601e+02 -3.915200e+02
-12 8778     5.266300e+02 5.269000e+02
-13 8778     8.430900e+02 9.382001e+01
-0 8779     -1.218800e+02 3.262200e+02
-2 8779     -3.946000e+02 4.888000e+01
-7 8779     -3.244200e+02 3.742100e+02
-9 8779     -4.775700e+02 1.020800e+02
-11 8779     4.081000e+01 -4.210600e+02
-14 8779     1.910100e+02 -4.251900e+02
-0 8780     2.095400e+02 3.241900e+02
-6 8780     -1.775200e+02 3.532300e+02
-9 8780     -1.767900e+02 1.607800e+02
-0 8781     5.821002e+01 3.229600e+02
-7 8781     -1.435600e+02 3.959100e+02
-10 8781     -5.916998e+01 5.290400e+02
-11 8781     2.066200e+02 -4.219000e+02
-0 8782     6.368500e+02 3.162000e+02
-3 8782     3.526200e+02 -1.501001e+01
-6 8782     4.188000e+02 4.980900e+02
-7 8782     4.454800e+02 4.919600e+02
-8 8782     4.693300e+02 2.228200e+02
-9 8782     2.815800e+02 3.579000e+02
-10 8782     6.233600e+02 5.835900e+02
-11 8782     7.457700e+02 -4.041600e+02
-12 8782     5.022900e+02 5.059700e+02
-13 8782     8.213400e+02 8.078000e+01
-0 8783     -1.666000e+02 3.143800e+02
-2 8783     -4.400400e+02 3.122998e+01
-7 8783     -3.668100e+02 3.568000e+02
-8 8783     -2.800800e+02 1.623999e+01
-13 8783     5.760999e+01 7.600098e-01
-14 8783     1.455100e+02 -4.397700e+02
-0 8784     -5.399300e+02 3.125900e+02
-4 8784     -4.723999e+01 -4.153003e+01
-10 8784     -7.795500e+02 4.627400e+02
-11 8784     -3.362400e+02 -4.283900e+02
-15 8784     -8.098400e+02 4.935900e+02
-0 8785     -5.399300e+02 3.125900e+02
-4 8785     -4.723999e+01 -4.153003e+01
-10 8785     -7.795500e+02 4.627400e+02
-11 8785     -3.362400e+02 -4.283900e+02
-15 8785     -8.098400e+02 4.935900e+02
-0 8786     -5.621300e+02 3.069300e+02
-10 8786     -8.060800e+02 4.534600e+02
-11 8786     -3.558600e+02 -4.328900e+02
-13 8786     -2.632600e+02 -2.140997e+01
-14 8786     -2.530100e+02 -4.479800e+02
-0 8787     -4.264500e+02 3.047700e+02
-7 8787     -6.307900e+02 3.142100e+02
-10 8787     -6.383000e+02 4.612800e+02
-11 8787     -2.359400e+02 -4.385200e+02
-15 8787     -6.486600e+02 4.969700e+02
-0 8788     5.351899e+02 3.027600e+02
-7 8788     3.345699e+02 4.529200e+02
-10 8788     5.028101e+02 5.552700e+02
-0 8789     -3.887100e+02 3.011400e+02
-7 8789     -5.921000e+02 3.167800e+02
-11 8789     -2.027400e+02 -4.419200e+02
-0 8790     -2.473000e+02 2.972400e+02
-7 8790     -4.455400e+02 3.285100e+02
-11 8790     -7.413000e+01 -4.480400e+02
-13 8790     -8.530029e+00 -1.864001e+01
-14 8790     6.214001e+01 -4.603900e+02
-15 8790     -3.962200e+02 5.095500e+02
-0 8791     -4.880005e+00 2.948900e+02
-5 8791     4.114200e+02 -3.719200e+02
-7 8791     -1.993900e+02 3.611400e+02
-9 8791     -3.480900e+02 1.040800e+02
-10 8791     -1.298000e+02 4.895500e+02
-11 8791     1.482800e+02 -4.488600e+02
-13 8791     2.025900e+02 -5.619995e+00
-14 8791     3.266700e+02 -4.556801e+02
-15 8791     -6.315997e+01 5.391200e+02
-0 8792     -4.880005e+00 2.948900e+02
-5 8792     4.114200e+02 -3.719200e+02
-7 8792     -1.993900e+02 3.611400e+02
-10 8792     -1.298000e+02 4.895500e+02
-11 8792     1.482800e+02 -4.488600e+02
-13 8792     2.025900e+02 -5.619995e+00
-14 8792     3.266700e+02 -4.556801e+02
-15 8792     -6.315997e+01 5.391200e+02
-0 8793     7.609800e+02 2.944300e+02
-3 8793     4.759700e+02 1.678998e+01
-6 8793     5.682200e+02 5.136500e+02
-7 8793     5.687500e+02 4.922000e+02
-8 8793     5.786100e+02 2.452100e+02
-9 8793     3.926600e+02 3.868000e+02
-10 8793     7.752900e+02 5.699800e+02
-12 8793     6.471700e+02 5.255800e+02
-0 8794     7.854999e+01 2.928600e+02
-7 8794     -1.165300e+02 3.711400e+02
-0 8795     -5.163700e+02 2.893400e+02
-5 8795     -1.293300e+02 -3.718300e+02
-0 8796     -5.653400e+02 2.764500e+02
-7 8796     -7.741600e+02 2.668000e+02
-10 8796     -8.062300e+02 4.157600e+02
-11 8796     -3.619500e+02 -4.607000e+02
-13 8796     -2.678700e+02 -4.889001e+01
-14 8796     -2.613600e+02 -4.822500e+02
-15 8796     -8.385900e+02 4.393100e+02
-0 8797     -5.345100e+02 2.752300e+02
-4 8797     -6.860999e+01 -3.965002e+01
-5 8797     -1.495400e+02 -3.875200e+02
-7 8797     -7.405100e+02 2.689500e+02
-10 8797     -7.666600e+02 4.165500e+02
-13 8797     -2.423400e+02 -4.898999e+01
-14 8797     -2.300900e+02 -4.844600e+02
-0 8798     -5.454900e+02 2.719500e+02
-5 8798     -1.633200e+02 -3.912800e+02
-15 8798     -8.096000e+02 4.355200e+02
-0 8799     7.456000e+01 2.688000e+02
-4 8799     -1.276800e+02 -4.010900e+02
-6 8799     -2.982400e+02 2.545800e+02
-7 8799     -1.138800e+02 3.466900e+02
-9 8799     -2.577600e+02 1.043800e+02
-11 8799     2.225200e+02 -4.747000e+02
-12 8799     -1.546600e+02 2.677100e+02
-13 8799     2.790800e+02 -2.252002e+01
-0 8800     5.820400e+02 2.680700e+02
-8 8800     4.293500e+02 1.685100e+02
-9 8800     2.424900e+02 2.971800e+02
-10 8800     5.616899e+02 5.180000e+02
-12 8800     4.492800e+02 4.364200e+02
-13 8800     7.717800e+02 3.410999e+01
-0 8801     2.421200e+02 2.604500e+02
-6 8801     -9.610001e+01 2.921800e+02
-7 8801     5.206000e+01 3.633000e+02
-10 8801     1.630100e+02 4.741000e+02
-11 8801     3.837400e+02 -4.765000e+02
-13 8801     4.267400e+02 -1.646002e+01
-0 8802     -6.791000e+02 2.567500e+02
-13 8802     -3.903300e+02 -7.687000e+01
-14 8802     -4.162100e+02 -5.090900e+02
-0 8803     2.135000e+02 2.553700e+02
-5 8803     6.695100e+02 -4.093199e+02
-6 8803     -1.266300e+02 2.792500e+02
-7 8803     2.500000e+01 3.544300e+02
-10 8803     1.297000e+02 4.640000e+02
-0 8804     6.019900e+02 2.543100e+02
-2 8804     4.749900e+02 2.332500e+02
-3 8804     3.344100e+02 -8.521002e+01
-6 8804     3.909000e+02 4.182400e+02
-7 8804     4.192700e+02 4.258600e+02
-8 8804     4.504700e+02 1.626300e+02
-9 8804     2.643400e+02 2.942100e+02
-10 8804     5.857600e+02 5.039900e+02
-12 8804     4.763900e+02 4.254500e+02
-13 8804     7.934301e+02 2.450000e+01
-0 8805     6.243000e+02 2.534600e+02
-6 8805     4.193500e+02 4.256400e+02
-7 8805     4.412100e+02 4.292200e+02
-0 8806     6.243000e+02 2.534600e+02
-3 8806     3.572200e+02 -7.617999e+01
-6 8806     4.193500e+02 4.256400e+02
-7 8806     4.412100e+02 4.292200e+02
-8 8806     4.706801e+02 1.701500e+02
-9 8806     2.861100e+02 3.030900e+02
-13 8806     8.159700e+02 2.664001e+01
-15 8806     8.130100e+02 5.787800e+02
-0 8807     -7.051300e+02 2.521700e+02
-13 8807     -4.126600e+02 -8.092999e+01
-14 8807     -4.443800e+02 -5.125500e+02
-0 8808     5.870100e+02 2.443000e+02
-7 8808     4.051200e+02 4.135800e+02
-9 8808     2.535900e+02 2.799000e+02
-10 8808     5.686000e+02 4.906200e+02
-15 8808     7.609399e+02 5.600300e+02
-0 8809     -8.539001e+01 2.406600e+02
-7 8809     -2.673600e+02 2.978700e+02
-8 8809     -1.744800e+02 -2.139999e+01
-9 8809     -3.902000e+02 5.490002e+01
-11 8809     7.052002e+01 -5.024700e+02
-0 8810     6.586100e+02 2.401900e+02
-2 8810     5.398900e+02 2.480700e+02
-7 8810     4.770800e+02 4.227200e+02
-8 8810     5.042800e+02 1.744600e+02
-9 8810     3.200100e+02 3.092400e+02
-10 8810     6.549500e+02 4.935900e+02
-13 8810     8.521600e+02 2.083002e+01
-0 8811     -5.434600e+02 2.388500e+02
-5 8811     -1.622400e+02 -4.265200e+02
-13 8811     -2.498900e+02 -8.066998e+01
-14 8811     -2.427100e+02 -5.246100e+02
-0 8812     6.518800e+02 2.369400e+02
-3 8812     3.903101e+02 -7.847998e+01
-7 8812     4.704399e+02 4.178600e+02
-10 8812     6.463900e+02 4.895600e+02
-13 8812     8.456700e+02 1.547998e+01
-15 8812     8.534100e+02 5.603100e+02
-0 8813     6.653199e+02 2.372400e+02
-2 8813     5.471700e+02 2.453600e+02
-3 8813     4.033400e+02 -7.156000e+01
-6 8813     4.721600e+02 4.222500e+02
-7 8813     4.841000e+02 4.206000e+02
-8 8813     5.097500e+02 1.713400e+02
-10 8813     6.627600e+02 4.906500e+02
-12 8813     5.536200e+02 4.317900e+02
-15 8813     8.728900e+02 5.624700e+02
-0 8814     6.947300e+02 2.368900e+02
-2 8814     5.792500e+02 2.582100e+02
-6 8814     5.088101e+02 4.314800e+02
-7 8814     5.131801e+02 4.262100e+02
-8 8814     5.368101e+02 1.808400e+02
-9 8814     3.527200e+02 3.188500e+02
-0 8815     6.130800e+02 2.329100e+02
-2 8815     4.926000e+02 2.181100e+02
-3 8815     3.519000e+02 -1.001000e+02
-8 8815     4.649900e+02 1.502200e+02
-0 8816     5.858199e+02 2.256800e+02
-2 8816     4.640400e+02 1.979200e+02
-3 8816     3.252300e+02 -1.193000e+02
-6 8816     3.780900e+02 3.810900e+02
-7 8816     4.065699e+02 3.952800e+02
-10 8816     5.682600e+02 4.681600e+02
-13 8816     7.802400e+02 -2.549988e+00
-15 8816     7.613600e+02 5.334000e+02
-0 8817     5.858199e+02 2.256800e+02
-2 8817     4.640400e+02 1.979200e+02
-6 8817     3.780900e+02 3.810900e+02
-7 8817     4.065699e+02 3.952800e+02
-8 8817     4.412800e+02 1.344000e+02
-9 8817     2.561100e+02 2.640800e+02
-10 8817     5.682600e+02 4.681600e+02
-12 8817     4.646400e+02 3.891500e+02
-13 8817     7.802400e+02 -2.549988e+00
-0 8818     6.225500e+02 2.248100e+02
-3 8818     3.640200e+02 -1.024500e+02
-6 8818     4.240300e+02 3.938500e+02
-7 8818     4.431899e+02 4.012900e+02
-8 8818     4.749900e+02 1.470000e+02
-9 8818     2.901100e+02 2.797100e+02
-10 8818     6.127000e+02 4.710000e+02
-12 8818     5.083400e+02 4.021200e+02
-13 8818     8.177800e+02 2.109985e+00
-15 8818     8.133900e+02 5.381100e+02
-0 8819     -3.203998e+01 2.197800e+02
-6 8819     -3.958500e+02 1.683300e+02
-0 8820     5.475000e+02 2.152500e+02
-3 8820     2.869200e+02 -1.493700e+02
-7 8820     3.703900e+02 3.780900e+02
-8 8820     4.088600e+02 1.119200e+02
-9 8820     2.248000e+02 2.411600e+02
-0 8821     -8.548999e+01 2.113800e+02
-7 8821     -2.594400e+02 2.722700e+02
-0 8822     6.845200e+02 2.112000e+02
-2 8822     5.736899e+02 2.291000e+02
-3 8822     4.305100e+02 -8.621997e+01
-6 8822     5.013600e+02 4.005500e+02
-7 8822     5.055000e+02 3.993100e+02
-8 8822     5.318300e+02 1.573000e+02
-9 8822     3.479399e+02 2.940100e+02
-10 8822     6.865800e+02 4.616600e+02
-12 8822     5.824000e+02 4.105000e+02
-0 8823     6.922300e+02 2.087700e+02
-2 8823     5.835500e+02 2.303700e+02
-3 8823     4.386801e+02 -8.496997e+01
-6 8823     5.127600e+02 4.009300e+02
-7 8823     5.140300e+02 3.986500e+02
-8 8823     5.404500e+02 1.585400e+02
-9 8823     3.576400e+02 2.961100e+02
-10 8823     6.968600e+02 4.599800e+02
-12 8823     5.938000e+02 4.114300e+02
-0 8824     -3.397900e+02 2.076300e+02
-13 8824     -7.120001e+01 -9.876001e+01
-0 8825     -3.397900e+02 2.076300e+02
-7 8825     -5.213800e+02 2.272200e+02
-10 8825     -5.160800e+02 3.518500e+02
-0 8826     6.130000e+02 2.068600e+02
-2 8826     4.997100e+02 1.924800e+02
-3 8826     3.594100e+02 -1.234900e+02
-6 8826     4.173800e+02 3.709900e+02
-7 8826     4.365000e+02 3.819800e+02
-8 8826     4.705300e+02 1.294600e+02
-9 8826     2.864301e+02 2.609300e+02
-10 8826     6.025601e+02 4.486100e+02
-13 8826     8.108600e+02 -1.453998e+01
-15 8826     8.019800e+02 5.110000e+02
-0 8827     5.880100e+02 1.993300e+02
-2 8827     4.742100e+02 1.738500e+02
-3 8827     3.356200e+02 -1.427100e+02
-6 8827     3.883800e+02 3.535900e+02
-8 8827     4.491200e+02 1.146900e+02
-10 8827     5.736400e+02 4.371700e+02
-12 8827     4.744700e+02 3.625400e+02
-13 8827     7.861700e+02 -2.437000e+01
-15 8827     7.676500e+02 4.963700e+02
-0 8828     9.875000e+01 1.897600e+02
-10 8828     1.450012e+00 3.732200e+02
-13 8828     4.102400e+02 -6.072998e+01
-14 8828     5.927200e+02 -5.389399e+02
-0 8829     -3.179400e+02 1.861500e+02
-4 8829     -1.371000e+02 -1.535600e+02
-0 8830     -3.179400e+02 1.861500e+02
-4 8830     -1.371000e+02 -1.535600e+02
-0 8831     5.975500e+02 1.821000e+02
-3 8831     3.515601e+02 -1.546200e+02
-6 8831     4.061400e+02 3.371800e+02
-7 8831     4.263300e+02 3.542500e+02
-8 8831     4.622700e+02 1.035500e+02
-9 8831     2.799800e+02 2.333400e+02
-10 8831     5.881000e+02 4.165100e+02
-12 8831     4.917000e+02 3.457700e+02
-13 8831     7.970601e+02 -3.796997e+01
-15 8831     7.861200e+02 4.724600e+02
-0 8832     7.590002e+01 1.794700e+02
-10 8832     -2.365997e+01 3.587000e+02
-13 8832     3.952000e+02 -7.034003e+01
-14 8832     5.726000e+02 -5.512500e+02
-15 8832     4.738000e+01 3.933600e+02
-0 8833     7.172800e+02 1.577700e+02
-6 8833     5.542500e+02 3.537500e+02
-7 8833     5.449200e+02 3.537600e+02
-0 8834     7.103199e+02 1.551800e+02
-7 8834     5.383900e+02 3.500400e+02
-10 8834     7.215800e+02 3.980900e+02
-0 8835     7.103199e+02 1.551800e+02
-2 8835     6.163000e+02 1.869500e+02
-3 8835     4.725900e+02 -1.248700e+02
-6 8835     5.465400e+02 3.486300e+02
-7 8835     5.383900e+02 3.500400e+02
-8 8835     5.670699e+02 1.215000e+02
-9 8835     3.855699e+02 2.600200e+02
-10 8835     7.215800e+02 3.980900e+02
-12 8835     6.261500e+02 3.589900e+02
-0 8836     7.103199e+02 1.551800e+02
-2 8836     6.163000e+02 1.869500e+02
-3 8836     4.725900e+02 -1.248700e+02
-6 8836     5.465400e+02 3.486300e+02
-7 8836     5.383900e+02 3.500400e+02
-8 8836     5.670699e+02 1.215000e+02
-9 8836     3.855699e+02 2.600200e+02
-10 8836     7.215800e+02 3.980900e+02
-12 8836     6.261500e+02 3.589900e+02
-0 8837     2.301700e+02 1.524900e+02
-2 8837     2.760699e+02 1.769100e+02
-3 8837     1.660400e+02 -1.404000e+02
-7 8837     1.075500e+02 2.935700e+02
-9 8837     1.114800e+02 2.416000e+02
-10 8837     1.583800e+02 3.425100e+02
-13 8837     5.333700e+02 -7.937000e+01
-0 8838     6.487600e+02 1.497100e+02
-6 8838     4.755800e+02 3.211400e+02
-9 8838     3.336300e+02 2.300600e+02
-15 8838     8.591801e+02 4.355900e+02
-0 8839     5.924900e+02 1.460200e+02
-3 8839     3.563600e+02 -1.915600e+02
-6 8839     4.069100e+02 2.951800e+02
-7 8839     4.238700e+02 3.192500e+02
-8 8839     4.638000e+02 7.163000e+01
-12 8839     4.919600e+02 3.041400e+02
-15 8839     7.801600e+02 4.214900e+02
-0 8840     7.068600e+02 1.460800e+02
-3 8840     4.678500e+02 -1.361400e+02
-6 8840     5.406600e+02 3.364300e+02
-8 8840     5.620900e+02 1.118900e+02
-9 8840     3.814399e+02 2.499600e+02
-12 8840     6.206100e+02 3.464600e+02
-0 8841     7.305601e+02 1.458000e+02
-2 8841     6.396300e+02 1.874600e+02
-3 8841     4.948101e+02 -1.235900e+02
-6 8841     5.723300e+02 3.460000e+02
-7 8841     5.592200e+02 3.448300e+02
-8 8841     5.864900e+02 1.214000e+02
-9 8841     4.044100e+02 2.614900e+02
-10 8841     7.464000e+02 3.891600e+02
-12 8841     6.513101e+02 3.568100e+02
-0 8842     6.964900e+02 1.451000e+02
-2 8842     6.052000e+02 1.711600e+02
-7 8842     5.260500e+02 3.380800e+02
-9 8842     3.757600e+02 2.464100e+02
-12 8842     6.131200e+02 3.428900e+02
-0 8843     3.952002e+01 1.426700e+02
-7 8843     -7.492999e+01 2.580100e+02
-15 8843     1.190002e+00 3.375900e+02
-0 8844     -8.149000e+02 1.402900e+02
-4 8844     -1.157500e+02 1.222000e+02
-0 8845     -8.149000e+02 1.402900e+02
-4 8845     -1.157500e+02 1.222000e+02
-0 8846     7.201300e+02 1.401800e+02
-2 8846     6.305300e+02 1.774700e+02
-3 8846     4.867600e+02 -1.336600e+02
-7 8846     5.498101e+02 3.376100e+02
-8 8846     5.788300e+02 1.132100e+02
-9 8846     3.977700e+02 2.525100e+02
-10 8846     7.341899e+02 3.815800e+02
-0 8847     7.382300e+02 1.405900e+02
-2 8847     6.490800e+02 1.865100e+02
-3 8847     5.039700e+02 -1.245800e+02
-6 8847     5.829500e+02 3.430700e+02
-7 8847     5.671801e+02 3.412300e+02
-8 8847     5.943000e+02 1.198400e+02
-9 8847     4.129399e+02 2.605200e+02
-10 8847     7.558800e+02 3.839000e+02
-12 8847     6.616801e+02 3.537900e+02
-0 8848     -2.205300e+02 1.371300e+02
-3 8848     -5.115700e+02 -4.500699e+02
-7 8848     -3.801500e+02 1.786600e+02
-8 8848     -2.548400e+02 -1.105800e+02
-13 8848     5.387000e+01 -1.504800e+02
-15 8848     -3.378800e+02 2.917500e+02
-0 8849     6.989100e+02 1.373300e+02
-2 8849     6.098300e+02 1.646700e+02
-3 8849     4.673199e+02 -1.463700e+02
-6 8849     5.379399e+02 3.254200e+02
-7 8849     5.296300e+02 3.310000e+02
-8 8849     5.610699e+02 1.034900e+02
-9 8849     3.805800e+02 2.411400e+02
-10 8849     7.092400e+02 3.757000e+02
-12 8849     6.177200e+02 3.356300e+02
-0 8850     -2.804500e+02 1.344900e+02
-7 8850     -4.421100e+02 1.663100e+02
-0 8851     6.501200e+02 1.305000e+02
-2 8851     5.601000e+02 1.348100e+02
-3 8851     4.214900e+02 -1.771600e+02
-7 8851     4.830200e+02 3.150600e+02
-8 8851     5.200601e+02 7.981000e+01
-9 8851     3.392800e+02 2.144900e+02
-10 8851     6.518000e+02 3.625300e+02
-13 8851     8.561300e+02 -7.540002e+01
-0 8852     -2.314300e+02 1.293700e+02
-7 8852     -3.918100e+02 1.683000e+02
-15 8852     -3.554100e+02 2.789900e+02
-0 8853     6.975699e+02 1.299400e+02
-3 8853     4.677500e+02 -1.544600e+02
-6 8853     5.387100e+02 3.164100e+02
-7 8853     5.295900e+02 3.230600e+02
-9 8853     3.811100e+02 2.343000e+02
-12 8853     6.197000e+02 3.266800e+02
-0 8854     6.319000e+02 1.264100e+02
-2 8854     5.402600e+02 1.230700e+02
-3 8854     4.023400e+02 -1.892200e+02
-6 8854     4.587500e+02 2.902200e+02
-7 8854     4.656100e+02 3.076200e+02
-8 8854     5.025900e+02 7.150000e+01
-9 8854     3.224500e+02 2.039100e+02
-10 8854     6.279200e+02 3.583500e+02
-12 8854     5.407200e+02 3.005800e+02
-13 8854     8.388300e+02 -8.164001e+01
-0 8855     6.319000e+02 1.264100e+02
-2 8855     5.402600e+02 1.230700e+02
-3 8855     4.023400e+02 -1.892200e+02
-6 8855     4.587500e+02 2.902200e+02
-7 8855     4.656100e+02 3.076200e+02
-8 8855     5.025900e+02 7.150000e+01
-9 8855     3.224500e+02 2.039100e+02
-10 8855     6.279200e+02 3.583500e+02
-12 8855     5.407200e+02 3.005800e+02
-13 8855     8.388300e+02 -8.164001e+01
-0 8856     7.808900e+02 1.263800e+02
-3 8856     5.472700e+02 -1.152300e+02
-7 8856     6.094500e+02 3.365400e+02
-9 8856     4.513900e+02 2.690700e+02
-10 8856     8.067400e+02 3.727200e+02
-0 8857     7.061700e+02 1.250700e+02
-2 8857     6.211000e+02 1.564900e+02
-3 8857     4.787000e+02 -1.538000e+02
-7 8857     5.385699e+02 3.207100e+02
-9 8857     3.904700e+02 2.343400e+02
-0 8858     7.569000e+02 1.223300e+02
-7 8858     5.874600e+02 3.273500e+02
-9 8858     4.333000e+02 2.533500e+02
-10 8858     7.786801e+02 3.645200e+02
-0 8859     7.646100e+02 1.218100e+02
-3 8859     5.346300e+02 -1.293500e+02
-7 8859     5.949000e+02 3.281700e+02
-10 8859     7.882600e+02 3.648800e+02
-12 8859     6.961600e+02 3.429900e+02
-0 8860     -4.115997e+01 1.206700e+02
-4 8860     -1.892900e+02 -3.756800e+02
-5 8860     5.516801e+02 -5.381600e+02
-6 8860     -1.621100e+02 1.279000e+02
-10 8860     -1.542200e+02 2.768500e+02
-12 8860     -1.287000e+02 1.822200e+02
-15 8860     -1.046100e+02 2.957100e+02
-0 8861     8.075000e+02 1.215200e+02
-7 8861     6.362400e+02 3.358900e+02
-9 8861     4.753101e+02 2.738600e+02
-0 8862     8.162000e+02 1.183400e+02
-2 8862     7.319900e+02 1.997600e+02
-3 8862     5.823800e+02 -1.089800e+02
-7 8862     6.442700e+02 3.342300e+02
-9 8862     4.819000e+02 2.745000e+02
-0 8863     -2.876600e+02 1.162200e+02
-4 8863     -1.804200e+02 -1.714800e+02
-7 8863     -4.450000e+02 1.465800e+02
-10 8863     -4.436000e+02 2.477800e+02
-15 8863     -4.280200e+02 2.531600e+02
-0 8864     2.673999e+01 1.172400e+02
-3 8864     1.873999e+01 -1.879200e+02
-4 8864     -1.972600e+02 -4.315700e+02
-5 8864     6.447500e+02 -5.379100e+02
-6 8864     -6.284003e+01 1.521200e+02
-7 8864     -8.258002e+01 2.323000e+02
-8 8864     1.279500e+02 6.248001e+01
-10 8864     -7.589001e+01 2.815000e+02
-12 8864     -3.521997e+01 2.061800e+02
-13 8864     3.746500e+02 -1.216500e+02
-0 8865     7.337900e+02 1.167400e+02
-2 8865     6.514301e+02 1.612400e+02
-3 8865     5.077300e+02 -1.482400e+02
-7 8865     5.661200e+02 3.178200e+02
-8 8865     5.958199e+02 9.920001e+01
-9 8865     4.155200e+02 2.395100e+02
-10 8865     7.520500e+02 3.554200e+02
-12 8865     6.630900e+02 3.259900e+02
-0 8866     6.325300e+02 1.158600e+02
-2 8866     5.455200e+02 1.114600e+02
-7 8866     4.675500e+02 2.976000e+02
-15 8866     8.393600e+02 3.856800e+02
-0 8867     7.523199e+02 1.162100e+02
-2 8867     6.696899e+02 1.691500e+02
-3 8867     5.245601e+02 -1.399100e+02
-7 8867     5.837000e+02 3.207500e+02
-9 8867     4.305800e+02 2.467700e+02
-10 8867     7.739200e+02 3.568800e+02
-12 8867     6.831600e+02 3.325700e+02
-0 8868     7.734399e+02 1.147800e+02
-2 8868     6.914301e+02 1.775000e+02
-3 8868     5.451700e+02 -1.312100e+02
-7 8868     6.043000e+02 3.231200e+02
-9 8868     4.488800e+02 2.545100e+02
-10 8868     7.993400e+02 3.573400e+02
-12 8868     7.078900e+02 3.387300e+02
-0 8869     6.491300e+02 1.114900e+02
-2 8869     5.649800e+02 1.158800e+02
-6 8869     4.857900e+02 2.791400e+02
-7 8869     4.852000e+02 2.965600e+02
-8 8869     5.232100e+02 6.498999e+01
-9 8869     3.440300e+02 1.984100e+02
-12 8869     5.675500e+02 2.891700e+02
-13 8869     8.590200e+02 -9.257001e+01
-15 8869     8.639100e+02 3.815900e+02
-0 8870     6.491300e+02 1.114900e+02
-2 8870     5.649800e+02 1.158800e+02
-6 8870     4.857900e+02 2.791400e+02
-7 8870     4.852000e+02 2.965600e+02
-13 8870     8.590200e+02 -9.257001e+01
-15 8870     8.639100e+02 3.815900e+02
-0 8871     6.659600e+02 1.107500e+02
-6 8871     5.064200e+02 2.829600e+02
-7 8871     5.013300e+02 2.994800e+02
-8 8871     5.380601e+02 6.916000e+01
-13 8871     8.759000e+02 -9.103998e+01
-0 8872     7.431600e+02 1.103500e+02
-2 8872     6.630601e+02 1.594000e+02
-3 8872     5.185500e+02 -1.494900e+02
-7 8872     5.759800e+02 3.134200e+02
-9 8872     4.253800e+02 2.382200e+02
-10 8872     7.636200e+02 3.490300e+02
-12 8872     6.754700e+02 3.222800e+02
-0 8873     7.236600e+02 1.094000e+02
-2 8873     6.428400e+02 1.488400e+02
-3 8873     5.005100e+02 -1.597300e+02
-6 8873     5.741700e+02 3.039500e+02
-7 8873     5.573300e+02 3.087800e+02
-9 8873     4.086700e+02 2.291500e+02
-10 8873     7.404900e+02 3.456000e+02
-12 8873     6.535300e+02 3.140400e+02
-0 8874     7.556200e+02 1.085400e+02
-2 8874     6.758400e+02 1.634200e+02
-3 8874     5.308199e+02 -1.451700e+02
-7 8874     5.877700e+02 3.139700e+02
-9 8874     4.361400e+02 2.421700e+02
-10 8874     7.785200e+02 3.481900e+02
-12 8874     6.896000e+02 3.254800e+02
-0 8875     -8.441998e+01 1.071600e+02
-2 8875     -7.240997e+01 2.678003e+01
-4 8875     -1.974400e+02 -3.327000e+02
-5 8875     4.722500e+02 -5.616000e+02
-6 8875     -2.507100e+02 7.973999e+01
-7 8875     -2.075000e+02 1.926400e+02
-9 8875     -1.773800e+02 1.024600e+02
-10 8875     -2.030000e+02 2.578400e+02
-12 8875     -2.001700e+02 1.316600e+02
-13 8875     2.461500e+02 -1.485200e+02
-15 8875     -1.581300e+02 2.713400e+02
-0 8876     7.317900e+02 1.044900e+02
-3 8876     5.093700e+02 -1.604000e+02
-8 8876     5.958800e+02 8.723001e+01
-9 8876     4.169399e+02 2.283600e+02
-12 8876     6.627100e+02 3.107700e+02
-0 8877     3.571002e+01 9.951001e+01
-4 8877     -2.095800e+02 -4.397500e+02
-8 8877     1.456100e+02 5.385001e+01
-0 8878     7.439900e+02 9.714001e+01
-2 8878     6.671200e+02 1.467900e+02
-3 8878     5.232700e+02 -1.610900e+02
-7 8878     5.783500e+02 3.009500e+02
-9 8878     4.286600e+02 2.280800e+02
-10 8878     7.656200e+02 3.331900e+02
-12 8878     6.787200e+02 3.084600e+02
-0 8879     7.915200e+02 9.326001e+01
-2 8879     7.155500e+02 1.654800e+02
-3 8879     5.684900e+02 -1.418800e+02
-7 8879     6.242100e+02 3.059300e+02
-9 8879     4.686600e+02 2.448500e+02
-10 8879     8.222600e+02 3.341300e+02
-0 8880     7.915200e+02 9.326001e+01
-2 8880     7.155500e+02 1.654800e+02
-3 8880     5.684900e+02 -1.418800e+02
-7 8880     6.242100e+02 3.059300e+02
-9 8880     4.686600e+02 2.448500e+02
-10 8880     8.222600e+02 3.341300e+02
-0 8881     7.398101e+02 9.073999e+01
-2 8881     6.653000e+02 1.394500e+02
-3 8881     5.221500e+02 -1.686400e+02
-7 8881     5.752700e+02 2.948900e+02
-9 8881     4.272100e+02 2.216100e+02
-10 8881     7.608900e+02 3.255200e+02
-12 8881     6.765699e+02 3.005900e+02
-0 8882     -2.877600e+02 8.916000e+01
-2 8882     -4.424300e+02 -1.706900e+02
-4 8882     -1.951200e+02 -1.720600e+02
-7 8882     -4.387500e+02 1.213800e+02
-15 8882     -4.235500e+02 2.187300e+02
-0 8883     7.736400e+02 8.869000e+01
-2 8883     6.994700e+02 1.522600e+02
-3 8883     5.545200e+02 -1.547100e+02
-7 8883     6.074900e+02 2.984900e+02
-9 8883     4.556200e+02 2.334900e+02
-10 8883     8.003300e+02 3.268800e+02
-12 8883     7.137800e+02 3.100100e+02
-0 8884     -7.961700e+02 8.164001e+01
-13 8884     -4.587900e+02 -2.312900e+02
-0 8885     -6.289001e+01 8.212000e+01
-4 8885     -2.106600e+02 -3.590100e+02
-5 8885     5.323900e+02 -5.812700e+02
-6 8885     -1.725200e+02 8.010999e+01
-8 8885     4.341998e+01 5.709991e+00
-9 8885     -1.049500e+02 1.318400e+02
-10 8885     -1.756600e+02 2.298000e+02
-12 8885     -1.427200e+02 1.346800e+02
-13 8885     2.907900e+02 -1.605800e+02
-15 8885     -1.290100e+02 2.394200e+02
-0 8886     7.664600e+02 7.872998e+01
-2 8886     6.955000e+02 1.393200e+02
-3 8886     5.509800e+02 -1.666600e+02
-7 8886     6.026801e+02 2.882800e+02
-9 8886     4.529500e+02 2.232200e+02
-10 8886     7.940100e+02 3.152200e+02
-12 8886     7.095500e+02 2.954600e+02
-0 8887     6.160699e+02 7.648999e+01
-12 8887     5.389000e+02 2.359100e+02
-0 8888     7.866500e+02 7.717999e+01
-2 8888     7.152400e+02 1.479400e+02
-3 8888     5.695500e+02 -1.584100e+02
-7 8888     6.216899e+02 2.898800e+02
-9 8888     4.687600e+02 2.304700e+02
-10 8888     8.173800e+02 3.145700e+02
-12 8888     7.315800e+02 3.037800e+02
-0 8889     7.426400e+02 7.356000e+01
-2 8889     6.728101e+02 1.233500e+02
-3 8889     5.306200e+02 -1.833900e+02
-7 8889     5.799600e+02 2.778900e+02
-9 8889     4.341100e+02 2.079400e+02
-10 8889     7.651300e+02 3.053500e+02
-12 8889     6.834600e+02 2.803900e+02
-0 8890     -2.806900e+02 6.997998e+01
-7 8890     -4.269400e+02 1.042000e+02
-0 8891     2.129399e+02 7.051001e+01
-4 8891     -2.513700e+02 -5.813000e+02
-10 8891     1.460600e+02 2.450600e+02
-13 8891     5.449600e+02 -1.453300e+02
-15 8891     2.463400e+02 2.631500e+02
-0 8892     7.762700e+02 7.009003e+01
-2 8892     7.077600e+02 1.365800e+02
-3 8892     5.632800e+02 -1.696200e+02
-7 8892     6.134200e+02 2.813400e+02
-9 8892     4.636400e+02 2.208000e+02
-10 8892     8.058199e+02 3.054100e+02
-12 8892     7.231000e+02 2.921700e+02
-0 8893     8.430100e+02 6.481000e+01
-2 8893     7.740400e+02 1.610400e+02
-3 8893     6.243900e+02 -1.434300e+02
-7 8893     6.764500e+02 2.881400e+02
-9 8893     5.168400e+02 2.433100e+02
-12 8893     7.961801e+02 3.102900e+02
-0 8894     1.258002e+01 6.407001e+01
-3 8894     3.757001e+01 -2.291300e+02
-5 8894     6.438700e+02 -5.971100e+02
-10 8894     -8.542999e+01 2.157900e+02
-0 8895     7.156500e+02 6.246997e+01
-2 8895     6.473300e+02 9.935999e+01
-3 8895     5.078199e+02 -2.070400e+02
-6 8895     5.760000e+02 2.503400e+02
-7 8895     5.555400e+02 2.623500e+02
-8 8895     5.917100e+02 4.891000e+01
-9 8895     4.130500e+02 1.880200e+02
-10 8895     7.336700e+02 2.889800e+02
-12 8895     6.547000e+02 2.603300e+02
-0 8896     7.700601e+02 6.096997e+01
-2 8896     7.039000e+02 1.249700e+02
-3 8896     5.608900e+02 -1.808800e+02
-7 8896     6.082800e+02 2.714800e+02
-9 8896     4.605699e+02 2.108700e+02
-10 8896     7.992200e+02 2.938100e+02
-12 8896     7.189900e+02 2.791500e+02
-0 8897     7.902100e+02 5.904999e+01
-2 8897     7.241600e+02 1.326100e+02
-3 8897     5.790000e+02 -1.727100e+02
-7 8897     6.277100e+02 2.734100e+02
-9 8897     4.766899e+02 2.179200e+02
-10 8897     8.228500e+02 2.938800e+02
-12 8897     7.397300e+02 2.862300e+02
-0 8898     6.875800e+02 5.700000e+01
-2 8898     6.203900e+02 8.071997e+01
-3 8898     4.819700e+02 -2.266200e+02
-6 8898     5.455601e+02 2.339600e+02
-7 8898     5.291899e+02 2.518900e+02
-8 8898     5.685800e+02 3.437000e+01
-9 8898     3.914399e+02 1.709100e+02
-10 8898     7.010900e+02 2.798900e+02
-12 8898     6.249200e+02 2.441800e+02
-0 8899     2.034000e+02 5.508002e+01
-7 8899     1.069900e+02 2.005300e+02
-10 8899     1.374800e+02 2.264600e+02
-12 8899     1.930200e+02 1.895000e+02
-13 8899     5.415200e+02 -1.583000e+02
-15 8899     2.360200e+02 2.407200e+02
-0 8900     3.289978e+00 5.370001e+01
-4 8900     -2.365900e+02 -4.148500e+02
-6 8900     -5.820001e+01 7.633002e+01
-7 8900     -9.077002e+01 1.645900e+02
-13 8900     3.662300e+02 -1.770000e+02
-0 8901     1.472800e+02 5.319000e+01
-4 8901     -2.543900e+02 -5.313300e+02
-5 8901     8.125900e+02 -6.072300e+02
-6 8901     1.108700e+02 1.250400e+02
-8 8901     2.624300e+02 4.503000e+01
-12 8901     1.340900e+02 1.756500e+02
-13 8901     4.966200e+02 -1.635100e+02
-15 8901     1.589900e+02 2.301800e+02
-0 8902     1.472800e+02 5.319000e+01
-3 8902     1.774400e+02 -2.000800e+02
-5 8902     8.125900e+02 -6.072300e+02
-8 8902     2.624300e+02 4.503000e+01
-13 8902     4.966200e+02 -1.635100e+02
-0 8903     6.172400e+02 5.231000e+01
-2 8903     5.463600e+02 3.948999e+01
-3 8903     4.116100e+02 -2.698600e+02
-7 8903     4.611700e+02 2.333800e+02
-9 8903     3.298199e+02 1.332600e+02
-10 8903     6.190100e+02 2.674100e+02
-0 8904     8.114800e+02 4.921002e+01
-2 8904     7.471300e+02 1.341800e+02
-7 8904     6.489800e+02 2.685300e+02
-9 8904     4.965500e+02 2.197600e+02
-0 8905     2.178900e+02 4.765997e+01
-7 8905     1.215700e+02 1.950100e+02
-15 8905     2.564100e+02 2.318400e+02
-0 8906     6.691801e+02 4.556000e+01
-3 8906     4.676899e+02 -2.479600e+02
-6 8906     5.268400e+02 2.137900e+02
-8 8906     5.551801e+02 1.729001e+01
-9 8906     3.785601e+02 1.523500e+02
-10 8906     6.810000e+02 2.642100e+02
-0 8907     8.686500e+02 4.577002e+01
-3 8907     6.532000e+02 -1.480300e+02
-7 8907     7.028700e+02 2.752700e+02
-9 8907     5.422100e+02 2.394800e+02
-0 8908     5.317900e+02 4.540002e+01
-6 8908     3.573000e+02 1.570400e+02
-7 8908     3.774301e+02 2.094500e+02
-10 8908     5.196300e+02 2.509000e+02
-12 8908     4.460900e+02 1.678600e+02
-15 8908     7.068000e+02 2.722200e+02
-0 8909     5.317900e+02 4.540002e+01
-7 8909     3.774301e+02 2.094500e+02
-12 8909     4.460900e+02 1.678600e+02
-0 8910     5.684900e+02 4.547998e+01
-6 8910     4.030800e+02 1.721200e+02
-10 8910     5.625200e+02 2.540100e+02
-13 8910     7.833400e+02 -1.627600e+02
-15 8910     7.581300e+02 2.774300e+02
-0 8911     7.034700e+02 4.496997e+01
-2 8911     6.432700e+02 7.597998e+01
-3 8911     5.045000e+02 -2.301800e+02
-7 8911     5.468199e+02 2.431000e+02
-9 8911     4.115100e+02 1.678300e+02
-0 8912     5.143500e+02 4.060999e+01
-7 8912     3.605200e+02 2.011900e+02
-10 8912     4.996899e+02 2.428000e+02
-13 8912     7.278900e+02 -1.755200e+02
-15 8912     6.834301e+02 2.624000e+02
-0 8913     5.143500e+02 4.060999e+01
-7 8913     3.605200e+02 2.011900e+02
-10 8913     4.996899e+02 2.428000e+02
-15 8913     6.834301e+02 2.624000e+02
-0 8914     -1.115200e+02 4.034998e+01
-7 8914     -2.170400e+02 1.255500e+02
-10 8914     -2.273200e+02 1.766300e+02
-13 8914     2.438000e+02 -2.039500e+02
-15 8914     -1.878200e+02 1.760500e+02
-0 8915     4.637000e+01 3.815997e+01
-9 8915     4.107001e+01 1.537300e+02
-13 8915     4.101200e+02 -1.851800e+02
-15 8915     2.290997e+01 1.954000e+02
-0 8916     7.156000e+02 3.497998e+01
-2 8916     6.566000e+02 7.214001e+01
-3 8916     5.175500e+02 -2.329100e+02
-7 8916     5.594800e+02 2.360000e+02
-9 8916     4.220400e+02 1.653400e+02
-10 8916     7.360900e+02 2.576800e+02
-12 8916     6.634800e+02 2.300600e+02
-0 8917     -1.841300e+02 3.397998e+01
-3 8917     -2.312900e+02 -3.772700e+02
-4 8917     -2.321200e+02 -2.646700e+02
-6 8917     -3.311800e+02 -3.576001e+01
-7 8917     -2.939200e+02 1.042300e+02
-12 8917     -2.923000e+02 2.456000e+01
-15 8917     -2.845200e+02 1.575500e+02
-0 8918     7.057000e+02 2.892999e+01
-2 8918     6.454600e+02 6.215997e+01
-3 8918     5.091500e+02 -2.436000e+02
-6 8918     5.742900e+02 2.105600e+02
-8 8918     5.916100e+02 1.784000e+01
-9 8918     4.151700e+02 1.564100e+02
-12 8918     6.504600e+02 2.212000e+02
-0 8919     6.770200e+02 2.758002e+01
-2 8919     6.175800e+02 4.470001e+01
-3 8919     4.817500e+02 -2.612900e+02
-6 8919     5.412700e+02 1.967400e+02
-7 8919     5.228199e+02 2.210900e+02
-8 8919     5.665500e+02 4.959991e+00
-9 8919     3.906000e+02 1.409600e+02
-10 8919     6.904100e+02 2.448500e+02
-12 8919     6.209000e+02 2.063400e+02
-0 8920     6.770200e+02 2.758002e+01
-2 8920     6.175800e+02 4.470001e+01
-3 8920     4.817500e+02 -2.612900e+02
-6 8920     5.412700e+02 1.967400e+02
-7 8920     5.228199e+02 2.210900e+02
-8 8920     5.665500e+02 4.959991e+00
-9 8920     3.906000e+02 1.409600e+02
-10 8920     6.904100e+02 2.448500e+02
-0 8921     -1.199500e+02 2.700000e+01
-4 8921     -2.422700e+02 -3.136000e+02
-7 8921     -2.223900e+02 1.117100e+02
-10 8921     -2.357600e+02 1.600300e+02
-12 8921     -2.001700e+02 4.566998e+01
-15 8921     -1.978200e+02 1.570600e+02
-0 8922     -1.058700e+02 2.583002e+01
-7 8922     -2.077200e+02 1.128900e+02
-10 8922     -2.190900e+02 1.602000e+02
-15 8922     -1.787300e+02 1.575600e+02
-0 8923     8.808002e+01 2.638000e+01
-2 8923     2.332300e+02 7.665002e+01
-4 8923     -2.642900e+02 -4.832600e+02
-7 8923     -3.300171e-01 1.552100e+02
-8 8923     2.226800e+02 1.582999e+01
-12 8923     7.540997e+01 1.320200e+02
-15 8923     8.016998e+01 1.859800e+02
-0 8924     2.285900e+02 2.459003e+01
-3 8924     2.510601e+02 -2.174900e+02
-7 8924     1.355400e+02 1.743100e+02
-10 8924     1.686600e+02 1.930400e+02
-13 8924     5.652100e+02 -1.830600e+02
-0 8925     2.285900e+02 2.459003e+01
-2 8925     3.578199e+02 9.223999e+01
-3 8925     2.510601e+02 -2.174900e+02
-6 8925     1.980600e+02 1.142800e+02
-7 8925     1.355400e+02 1.743100e+02
-8 8925     3.290400e+02 2.962000e+01
-10 8925     1.686600e+02 1.930400e+02
-12 8925     2.277900e+02 1.602800e+02
-13 8925     5.652100e+02 -1.830600e+02
-15 8925     2.732300e+02 2.020800e+02
-0 8926     -4.342300e+02 2.407001e+01
-8 8926     -4.200500e+02 -2.304400e+02
-0 8927     7.190400e+02 1.909003e+01
-3 8927     5.260699e+02 -2.461700e+02
-7 8927     5.649000e+02 2.211800e+02
-9 8927     4.283400e+02 1.537200e+02
-10 8927     7.413000e+02 2.390700e+02
-0 8928     -1.771200e+02 1.802002e+01
-4 8928     -2.423100e+02 -2.703400e+02
-6 8928     -3.093300e+02 -4.842999e+01
-15 8928     -2.726300e+02 1.363000e+02
-0 8929     6.897200e+02 1.781000e+01
-2 8929     6.342500e+02 4.184998e+01
-3 8929     4.977800e+02 -2.638200e+02
-6 8929     5.588800e+02 1.912500e+02
-7 8929     5.365200e+02 2.143800e+02
-8 8929     5.797800e+02 1.750000e+00
-9 8929     4.039700e+02 1.388100e+02
-10 8929     7.067400e+02 2.347300e+02
-0 8930     8.681300e+02 1.734998e+01
-2 8930     8.131300e+02 1.275400e+02
-3 8930     6.630400e+02 -1.734200e+02
-7 8930     7.059600e+02 2.479700e+02
-9 8930     5.492200e+02 2.167500e+02
-0 8931     -7.628998e+01 1.622998e+01
-7 8931     -1.720500e+02 1.111600e+02
-15 8931     -1.382100e+02 1.485100e+02
-0 8932     8.103199e+02 1.535999e+01
-2 8932     7.577000e+02 9.990997e+01
-7 8932     6.519700e+02 2.356100e+02
-9 8932     5.045300e+02 1.917400e+02
-12 8932     7.750900e+02 2.456100e+02
-0 8933     8.103199e+02 1.535999e+01
-7 8933     6.519700e+02 2.356100e+02
-9 8933     5.045300e+02 1.917400e+02
-0 8934     -1.544500e+02 1.377002e+01
-7 8934     -2.583200e+02 9.029999e+01
-10 8934     -2.744600e+02 1.413800e+02
-15 8934     -2.415800e+02 1.344200e+02
-0 8935     7.308400e+02 8.429993e+00
-2 8935     6.804800e+02 5.397998e+01
-3 8935     5.414399e+02 -2.504000e+02
-7 8935     5.776200e+02 2.135800e+02
-9 8935     4.421100e+02 1.505900e+02
-10 8935     7.563199e+02 2.280400e+02
-12 8935     6.874399e+02 2.068800e+02
-0 8936     6.970601e+02 -1.130005e+00
-2 8936     6.482000e+02 2.588000e+01
-3 8936     5.128600e+02 -2.783700e+02
-6 8936     5.723101e+02 1.732100e+02
-9 8936     4.162800e+02 1.261100e+02
-12 8936     6.502800e+02 1.829200e+02
-0 8937     -1.138100e+02 -2.359985e+00
-7 8937     -2.079800e+02 8.512000e+01
-10 8937     -2.253900e+02 1.270000e+02
-15 8937     -1.858400e+02 1.184100e+02
-0 8938     -4.837800e+02 -6.859985e+00
-2 8938     -6.354300e+02 -3.024100e+02
-13 8938     -1.500800e+02 -2.897000e+02
-0 8939     7.329700e+02 -6.159973e+00
-2 8939     6.868000e+02 3.972998e+01
-3 8939     5.486000e+02 -2.632300e+02
-7 8939     5.817800e+02 1.996300e+02
-9 8939     4.478900e+02 1.390800e+02
-10 8939     7.597300e+02 2.113100e+02
-12 8939     6.942300e+02 1.909400e+02
-0 8940     -3.722200e+02 -8.159973e+00
-2 8940     -4.843100e+02 -2.730700e+02
-7 8940     -5.028300e+02 1.246002e+01
-13 8940     -4.691998e+01 -2.830000e+02
-15 8940     -5.269400e+02 7.388000e+01
-0 8941     -3.722200e+02 -8.159973e+00
-13 8941     -4.691998e+01 -2.830000e+02
-15 8941     -5.269400e+02 7.388000e+01
-0 8942     6.737200e+02 -7.590027e+00
-2 8942     6.239700e+02 7.969971e+00
-3 8942     4.898900e+02 -2.969100e+02
-6 8942     5.465500e+02 1.573600e+02
-7 8942     5.245100e+02 1.870600e+02
-8 8942     5.707500e+02 -2.513000e+01
-9 8942     3.962200e+02 1.103300e+02
-10 8942     6.899000e+02 2.034200e+02
-12 8942     6.255699e+02 1.672700e+02
-0 8943     6.481200e+02 -1.083002e+01
-2 8943     5.973199e+02 -1.008002e+01
-6 8943     5.164700e+02 1.421700e+02
-7 8943     4.999200e+02 1.784400e+02
-8 8943     5.486700e+02 -3.913000e+01
-9 8943     3.744301e+02 9.429001e+01
-10 8943     6.594900e+02 1.974900e+02
-12 8943     5.966200e+02 1.519700e+02
-13 8943     8.739600e+02 -2.028300e+02
-0 8944     7.086899e+02 -1.077002e+01
-2 8944     6.623400e+02 2.278003e+01
-3 8944     5.263500e+02 -2.809200e+02
-7 8944     5.588300e+02 1.906600e+02
-9 8944     4.282700e+02 1.239800e+02
-10 8944     7.309100e+02 2.031400e+02
-12 8944     6.666899e+02 1.774000e+02
-0 8945     -3.647500e+02 -1.298999e+01
-2 8945     -4.694700e+02 -2.756500e+02
-7 8945     -4.923900e+02 8.859985e+00
-8 8945     -3.287700e+02 -2.436800e+02
-13 8945     -3.746002e+01 -2.871700e+02
-0 8946     -3.701400e+02 -1.485999e+01
-2 8946     -4.778700e+02 -2.791800e+02
-7 8946     -5.000400e+02 5.159973e+00
-8 8946     -3.348200e+02 -2.461800e+02
-13 8946     -4.331000e+01 -2.893100e+02
-15 8946     -5.245200e+02 6.414001e+01
-0 8947     6.854301e+02 -1.721997e+01
-2 8947     6.397700e+02 3.809998e+00
-3 8947     5.056400e+02 -3.001100e+02
-6 8947     5.631400e+02 1.507900e+02
-7 8947     5.370300e+02 1.798300e+02
-8 8947     5.839301e+02 -2.945001e+01
-9 8947     4.096801e+02 1.072800e+02
-10 8947     7.042000e+02 1.936800e+02
-12 8947     6.416200e+02 1.601400e+02
-0 8948     6.994600e+02 -1.695001e+01
-2 8948     6.565601e+02 1.078998e+01
-9 8948     4.233300e+02 1.141800e+02
-10 8948     7.223700e+02 1.944800e+02
-0 8949     -8.183002e+01 -2.338000e+01
-7 8949     -1.701600e+02 7.106000e+01
-10 8949     -1.860600e+02 1.054600e+02
-15 8949     -1.410900e+02 9.414001e+01
-0 8950     -4.427800e+02 -2.392999e+01
-10 8950     -6.097400e+02 6.741998e+01
-13 8950     -1.073100e+02 -3.007200e+02
-15 8950     -6.204700e+02 4.353998e+01
-0 8951     7.109200e+02 -2.606000e+01
-3 8951     5.334100e+02 -2.939000e+02
-7 8951     5.631700e+02 1.764000e+02
-10 8951     7.352500e+02 1.856400e+02
-12 8951     6.730400e+02 1.609800e+02
-0 8952     7.109200e+02 -2.606000e+01
-2 8952     6.690900e+02 8.500000e+00
-3 8952     5.334100e+02 -2.939000e+02
-7 8952     5.631700e+02 1.764000e+02
-9 8952     4.340500e+02 1.123900e+02
-10 8952     7.352500e+02 1.856400e+02
-12 8952     6.730400e+02 1.609800e+02
-0 8953     -3.952700e+02 -2.913000e+01
-2 8953     -4.998500e+02 -2.975000e+02
-8 8953     -3.535700e+02 -2.609100e+02
-13 8953     -6.295001e+01 -3.033000e+02
-15 8953     -5.566200e+02 4.284998e+01
-0 8954     -4.279600e+02 -3.053003e+01
-2 8954     -5.426400e+02 -3.074300e+02
-13 8954     -9.296002e+01 -3.062700e+02
-15 8954     -6.008400e+02 3.584998e+01
-0 8955     6.857900e+02 -3.108002e+01
-3 8955     5.105900e+02 -3.142100e+02
-7 8955     5.393700e+02 1.665300e+02
-8 8955     5.871300e+02 -4.070999e+01
-0 8956     6.857900e+02 -3.108002e+01
-3 8956     5.105900e+02 -3.142100e+02
-7 8956     5.393700e+02 1.665300e+02
-0 8957     -7.296002e+01 -3.458002e+01
-7 8957     -1.588300e+02 6.172998e+01
-10 8957     -1.743200e+02 9.334998e+01
-15 8957     -1.276700e+02 7.969000e+01
-0 8958     -3.227002e+01 -3.610999e+01
-2 8958     1.133700e+02 -3.453003e+01
-3 8958     2.809003e+01 -3.440700e+02
-4 8958     -2.936700e+02 -3.839700e+02
-7 8958     -1.139200e+02 6.940002e+01
-10 8958     -1.272600e+02 9.572998e+01
-13 8958     3.437400e+02 -2.576700e+02
-15 8958     -7.342999e+01 8.397000e+01
-0 8959     8.675500e+02 -3.632001e+01
-9 8959     5.627000e+02 1.738900e+02
-0 8960     3.462000e+01 -4.004999e+01
-4 8960     -3.038300e+02 -4.393000e+02
-7 8960     -4.392999e+01 8.064001e+01
-10 8960     -4.965002e+01 9.896002e+01
-13 8960     4.090000e+02 -2.524600e+02
-0 8961     -4.531300e+02 -4.131000e+01
-7 8961     -5.795700e+02 -3.548999e+01
-13 8961     -1.135000e+02 -3.168100e+02
-0 8962     6.964700e+02 -4.101001e+01
-2 8962     6.574399e+02 -1.409003e+01
-3 8962     5.235900e+02 -3.169500e+02
-7 8962     5.505500e+02 1.596000e+02
-9 8962     4.250200e+02 9.316000e+01
-10 8962     7.192900e+02 1.668900e+02
-12 8962     6.595900e+02 1.390900e+02
-0 8963     8.363300e+02 -4.159998e+01
-2 8963     8.008101e+02 5.773999e+01
-3 8963     6.570100e+02 -2.413000e+02
-7 8963     6.839399e+02 1.866500e+02
-9 8963     5.416801e+02 1.580000e+02
-12 8963     8.189900e+02 1.939400e+02
-0 8964     7.042700e+02 -4.175000e+01
-2 8964     6.666200e+02 -1.083002e+01
-3 8964     5.319600e+02 -3.128800e+02
-7 8964     5.585800e+02 1.597000e+02
-9 8964     4.325900e+02 9.614001e+01
-10 8964     7.285400e+02 1.665300e+02
-12 8964     6.695699e+02 1.410200e+02
-0 8965     7.042700e+02 -4.175000e+01
-9 8965     4.325900e+02 9.614001e+01
-12 8965     6.695699e+02 1.410200e+02
-0 8966     6.734900e+02 -4.628003e+01
-2 8966     6.354700e+02 -3.251001e+01
-3 8966     5.039800e+02 -3.362300e+02
-6 8966     5.568300e+02 1.137700e+02
-7 8966     5.297000e+02 1.493400e+02
-8 8966     5.799900e+02 -5.908002e+01
-9 8966     4.067500e+02 7.678998e+01
-12 8966     6.355699e+02 1.231800e+02
-0 8967     1.557800e+02 -4.984998e+01
-2 8967     3.289600e+02 1.800000e+01
-7 8967     8.003998e+01 9.112000e+01
-8 8967     3.007400e+02 -3.644000e+01
-15 8967     1.829600e+02 9.101001e+01
-0 8968     6.969301e+02 -5.339001e+01
-3 8968     5.303700e+02 -3.296400e+02
-7 8968     5.531600e+02 1.475100e+02
-9 8968     4.301000e+02 8.214001e+01
-0 8969     6.969301e+02 -5.339001e+01
-3 8969     5.303700e+02 -3.296400e+02
-9 8969     4.301000e+02 8.214001e+01
-0 8970     -4.719700e+02 -5.420001e+01
-2 8970     -5.870700e+02 -3.420000e+02
-8 8970     -4.257800e+02 -2.979800e+02
-0 8971     -4.504900e+02 -5.509998e+01
-2 8971     -5.571500e+02 -3.365100e+02
-0 8972     1.857000e+02 -6.013000e+01
-10 8972     1.280500e+02 9.059003e+01
-13 8972     5.430100e+02 -2.577900e+02
-0 8973     1.745000e+02 -6.134003e+01
-12 8973     2.003000e+02 5.306000e+01
-15 8973     2.096200e+02 7.750000e+01
-0 8974     6.764900e+02 -6.003998e+01
-3 8974     5.129700e+02 -3.488200e+02
-6 8974     5.633900e+02 9.960999e+01
-8 8974     5.854399e+02 -6.954999e+01
-9 8974     4.135699e+02 6.613000e+01
-12 8974     6.419500e+02 1.095500e+02
-0 8975     8.090699e+02 -6.742999e+01
-2 8975     7.814600e+02 1.758002e+01
-7 8975     6.618700e+02 1.566400e+02
-9 8975     5.267000e+02 1.241000e+02
-12 8975     7.944900e+02 1.536100e+02
-0 8976     8.090699e+02 -6.742999e+01
-7 8976     6.618700e+02 1.566400e+02
-0 8977     -4.054400e+02 -6.789001e+01
-2 8977     -4.874300e+02 -3.340900e+02
-7 8977     -5.230200e+02 -5.197998e+01
-13 8977     -6.340002e+01 -3.368200e+02
-15 8977     -5.652400e+02 -1.078998e+01
-0 8978     1.922100e+02 -6.983002e+01
-6 8978     1.996900e+02 2.960022e+00
-7 8978     1.185900e+02 7.685999e+01
-13 8978     5.505900e+02 -2.662400e+02
-0 8979     1.922100e+02 -6.983002e+01
-2 8979     3.669500e+02 3.400269e-01
-6 8979     1.996900e+02 2.960022e+00
-7 8979     1.185900e+02 7.685999e+01
-10 8979     1.370000e+02 8.022998e+01
-15 8979     2.360400e+02 6.821997e+01
-0 8980     7.175400e+02 -7.152002e+01
-2 8980     6.899399e+02 -3.483002e+01
-3 8980     5.572600e+02 -3.359200e+02
-7 8980     5.753700e+02 1.342100e+02
-9 8980     4.525300e+02 7.715997e+01
-10 8980     7.465601e+02 1.336000e+02
-12 8980     6.930400e+02 1.126300e+02
-0 8981     6.904800e+02 -7.228003e+01
-2 8981     6.632900e+02 -5.085999e+01
-3 8981     5.324399e+02 -3.526900e+02
-7 8981     5.500300e+02 1.277800e+02
-9 8981     4.306801e+02 6.288000e+01
-10 8981     7.153000e+02 1.297600e+02
-12 8981     6.641300e+02 9.995001e+01
-0 8982     8.639399e+02 -7.184003e+01
-3 8982     6.944700e+02 -2.556500e+02
-7 8982     7.141100e+02 1.629100e+02
-9 8982     5.722800e+02 1.459600e+02
-0 8983     8.328900e+02 -7.414001e+01
-2 8983     8.082100e+02 2.470001e+01
-7 8983     6.853600e+02 1.550400e+02
-0 8984     -4.167200e+02 -8.106000e+01
-2 8984     -4.939900e+02 -3.499100e+02
-7 8984     -5.318600e+02 -6.757001e+01
-8 8984     -3.539700e+02 -3.054200e+02
-10 8984     -5.732000e+02 3.250000e+00
-13 8984     -7.016998e+01 -3.497200e+02
-15 8984     -5.779200e+02 -3.204999e+01
-0 8985     5.059998e+00 -8.241998e+01
-3 8985     9.237000e+01 -3.736500e+02
-4 8985     -3.316100e+02 -4.131300e+02
-6 8985     -5.320007e+00 -7.602002e+01
-7 8985     -6.658002e+01 3.040997e+01
-8 8985     1.730800e+02 -1.018700e+02
-10 8985     -7.847998e+01 4.535999e+01
-13 8985     3.845400e+02 -2.933200e+02
-15 8985     -1.651001e+01 2.571997e+01
-0 8986     1.062000e+01 -8.826001e+01
-3 8986     1.014200e+02 -3.780500e+02
-10 8986     -7.202002e+01 3.922998e+01
-15 8986     -8.520020e+00 1.897998e+01
-0 8987     -4.037400e+02 -9.257001e+01
-2 8987     -4.673500e+02 -3.549800e+02
-7 8987     -5.158500e+02 -7.622998e+01
-9 8987     -4.970400e+02 -2.443000e+02
-10 8987     -5.566800e+02 -9.909973e+00
-13 8987     -5.625000e+01 -3.583900e+02
-15 8987     -5.600400e+02 -4.484003e+01
-0 8988     2.009900e+02 -9.335999e+01
-2 8988     3.795500e+02 -2.659003e+01
-3 8988     2.796200e+02 -3.293000e+02
-7 8988     1.294700e+02 5.453998e+01
-10 8988     1.484000e+02 5.383002e+01
-13 8988     5.592500e+02 -2.866600e+02
-15 8988     2.503400e+02 3.747998e+01
-0 8989     9.350000e+01 -9.385999e+01
-2 8989     2.825000e+02 -4.648999e+01
-3 8989     1.914800e+02 -3.504600e+02
-4 8989     -3.535600e+02 -4.855601e+02
-6 8989     1.053200e+02 -5.519000e+01
-7 8989     2.548999e+01 3.653003e+01
-8 8989     2.589600e+02 -8.754999e+01
-9 8989     1.298100e+02 5.733002e+01
-10 8989     2.488000e+01 4.202002e+01
-12 8989     1.179400e+02 -7.159973e+00
-13 8989     4.681700e+02 -2.949200e+02
-15 8989     1.047100e+02 2.229999e+01
-0 8990     -6.890997e+01 -1.005100e+02
-7 8990     -1.394000e+02 -9.199829e-01
-10 8990     -1.630200e+02 1.697998e+01
-13 8990     3.199900e+02 -3.168600e+02
-15 8990     -1.142100e+02 -8.270020e+00
-0 8991     -2.129999e+01 -1.041800e+02
-7 8991     -8.762000e+01 5.530029e+00
-10 8991     -1.065200e+02 1.803998e+01
-0 8992     7.584800e+02 -1.039900e+02
-2 8992     7.418400e+02 -4.677002e+01
-7 8992     6.191300e+02 1.120600e+02
-9 8992     4.963400e+02 6.823999e+01
-10 8992     7.970200e+02 9.970001e+01
-12 8992     7.476400e+02 9.202002e+01
-0 8993     7.584800e+02 -1.039900e+02
-7 8993     6.191300e+02 1.120600e+02
-0 8994     7.067200e+02 -1.080700e+02
-2 8994     6.895800e+02 -7.846997e+01
-3 8994     5.603900e+02 -3.789900e+02
-7 8994     5.699399e+02 9.698999e+01
-9 8994     4.536700e+02 4.085999e+01
-12 8994     6.908700e+02 6.815002e+01
-0 8995     8.441300e+02 -1.094400e+02
-3 8995     6.903600e+02 -3.011500e+02
-7 8995     7.004500e+02 1.234300e+02
-9 8995     5.669900e+02 1.062700e+02
-0 8996     2.499900e+02 -1.149200e+02
-13 8996     6.008400e+02 -3.035600e+02
-15 8996     3.209800e+02 1.423999e+01
-0 8997     2.388600e+02 -1.192400e+02
-10 8997     1.941899e+02 2.769000e+01
-13 8997     5.915601e+02 -3.080400e+02
-0 8998     2.145900e+02 -1.218800e+02
-10 8998     1.668800e+02 2.237000e+01
-13 8998     5.729900e+02 -3.116000e+02
-15 8998     2.738700e+02 9.400024e-01
-0 8999     7.745500e+02 -1.216200e+02
-2 8999     7.647400e+02 -5.495001e+01
-3 8999     6.314200e+02 -3.520500e+02
-7 8999     6.361700e+02 9.826001e+01
-9 8999     5.152900e+02 6.331000e+01
-10 8999     8.172700e+02 8.203003e+01
-12 8999     7.714700e+02 8.128003e+01
-0 9000     1.962600e+02 -1.238600e+02
-13 9000     5.586899e+02 -3.142200e+02
-0 9001     -1.031600e+02 -1.279100e+02
-10 9001     -1.992400e+02 -1.766998e+01
-12 9001     -1.105200e+02 -1.125300e+02
-15 9001     -1.563400e+02 -5.029999e+01
-0 9002     1.186400e+02 -1.459800e+02
-13 9002     4.998400e+02 -3.380700e+02
-15 9002     1.453199e+02 -4.484998e+01
-0 9003     2.937000e+02 -1.533800e+02
-10 9003     2.616400e+02 -5.130005e+00
-13 9003     6.431000e+02 -3.350100e+02
-15 9003     3.865800e+02 -3.256000e+01
-0 9004     8.540200e+02 -1.542800e+02
-9 9004     5.877100e+02 7.503998e+01
-0 9005     7.654600e+02 -1.586300e+02
-2 9005     7.660601e+02 -9.728003e+01
-7 9005     6.324200e+02 6.115997e+01
-9 9005     5.172000e+02 2.800000e+01
-0 9006     -4.229300e+02 -1.653300e+02
-7 9006     -5.187400e+02 -1.512900e+02
-15 9006     -5.774400e+02 -1.459600e+02
-0 9007     -4.491800e+02 -1.945800e+02
-7 9007     -5.392200e+02 -1.849600e+02
-15 9007     -6.101300e+02 -1.891000e+02
-0 9008     -4.124200e+02 -2.098600e+02
-7 9008     -4.958800e+02 -1.927300e+02
-8 9008     -2.860500e+02 -4.053900e+02
-15 9008     -5.576200e+02 -2.043200e+02
-0 9009     -9.428998e+01 -2.145700e+02
-4 9009     -4.150700e+02 -3.258400e+02
-7 9009     -1.481700e+02 -1.243300e+02
-10 9009     -1.795800e+02 -1.187400e+02
-12 9009     -8.201001e+01 -2.263800e+02
-15 9009     -1.317000e+02 -1.672100e+02
-0 9010     7.879999e+01 -2.194900e+02
-3 9010     2.453900e+02 -4.652500e+02
-4 9010     -4.473000e+02 -4.762400e+02
-8 9010     2.925400e+02 -1.909300e+02
-12 9010     1.478600e+02 -1.512500e+02
-13 9010     4.774100e+02 -4.055900e+02
-15 9010     1.001100e+02 -1.496900e+02
-0 9011     -8.409973e+00 -2.207400e+02
-2 9011     2.326300e+02 -2.050200e+02
-3 9011     1.568100e+02 -5.044600e+02
-7 9011     -5.313000e+01 -1.075700e+02
-8 9011     2.094600e+02 -2.184600e+02
-0 9012     1.464200e+02 -2.222000e+02
-4 9012     -4.637300e+02 -5.336500e+02
-6 9012     2.173600e+02 -1.746899e+02
-12 9012     2.269800e+02 -1.342700e+02
-13 9012     5.367500e+02 -4.027100e+02
-15 9012     1.919500e+02 -1.443600e+02
-0 9013     -1.064500e+02 -2.224300e+02
-2 9013     7.865997e+01 -2.881300e+02
-3 9013     3.450012e+00 -5.953900e+02
-4 9013     -4.180300e+02 -3.141800e+02
-6 9013     -1.039500e+02 -2.949600e+02
-7 9013     -1.606600e+02 -1.345400e+02
-8 9013     8.785999e+01 -2.796900e+02
-9 9013     -2.871997e+01 -1.515300e+02
-10 9013     -1.920300e+02 -1.275800e+02
-12 9013     -9.798999e+01 -2.411400e+02
-15 9013     -1.459500e+02 -1.782400e+02
-0 9014     1.340700e+02 -2.244000e+02
-3 9014     2.977600e+02 -4.550400e+02
-4 9014     -4.631500e+02 -5.233700e+02
-6 9014     2.052000e+02 -1.812200e+02
-8 9014     3.403400e+02 -1.840100e+02
-10 9014     8.525000e+01 -1.040300e+02
-12 9014     2.121801e+02 -1.408200e+02
-0 9015     -4.327600e+02 -2.273100e+02
-10 9015     -5.744300e+02 -1.699500e+02
-12 9015     -5.455600e+02 -3.935700e+02
-15 9015     -5.829100e+02 -2.315400e+02
-0 9016     1.042200e+02 -2.333700e+02
-4 9016     -4.644000e+02 -4.991300e+02
-6 9016     1.815600e+02 -2.002200e+02
-7 9016     6.362000e+01 -9.803998e+01
-8 9016     3.217700e+02 -1.957000e+02
-10 9016     5.225000e+01 -1.171600e+02
-12 9016     1.841800e+02 -1.581300e+02
-15 9016     1.358400e+02 -1.645700e+02
-0 9017     8.603003e+01 -2.359200e+02
-4 9017     -4.631000e+02 -4.843400e+02
-6 9017     1.646500e+02 -2.078900e+02
-7 9017     4.722998e+01 -1.031800e+02
-9 9017     1.938101e+02 -4.784998e+01
-12 9017     1.656200e+02 -1.660800e+02
-0 9018     1.002600e+02 -2.463500e+02
-3 9018     2.872700e+02 -4.757600e+02
-4 9018     -4.736700e+02 -4.980500e+02
-6 9018     1.855800e+02 -2.126300e+02
-7 9018     6.383002e+01 -1.100900e+02
-8 9018     3.254200e+02 -2.031300e+02
-9 9018     2.109500e+02 -4.864001e+01
-10 9018     4.944000e+01 -1.333100e+02
-12 9018     1.867700e+02 -1.714300e+02
-15 9018     1.326100e+02 -1.831400e+02
-0 9019     3.378998e+01 -2.523300e+02
-2 9019     2.835000e+02 -2.339000e+02
-3 9019     2.029600e+02 -5.320900e+02
-4 9019     -4.666700e+02 -4.338500e+02
-6 9019     9.764001e+01 -2.560300e+02
-7 9019     -6.229980e+00 -1.322200e+02
-8 9019     2.529900e+02 -2.441800e+02
-9 9019     1.397200e+02 -9.662000e+01
-10 9019     -2.728003e+01 -1.467900e+02
-12 9019     9.914001e+01 -2.123700e+02
-13 9019     4.347200e+02 -4.424301e+02
-15 9019     4.469000e+01 -1.998800e+02
-0 9020     9.640997e+01 -2.529200e+02
-3 9020     2.866600e+02 -4.834800e+02
-4 9020     -4.781900e+02 -4.931899e+02
-6 9020     1.829100e+02 -2.225300e+02
-7 9020     6.160999e+01 -1.172100e+02
-8 9020     3.239900e+02 -2.106200e+02
-9 9020     2.106801e+02 -5.596002e+01
-10 9020     4.458002e+01 -1.408200e+02
-12 9020     1.834000e+02 -1.815500e+02
-15 9020     1.265900e+02 -1.926300e+02
-0 9021     -9.659003e+01 -2.566900e+02
-2 9021     9.553003e+01 -3.327500e+02
-6 9021     -8.626999e+01 -3.361000e+02
-7 9021     -1.468100e+02 -1.687100e+02
-9 9021     -1.187000e+01 -1.886500e+02
-10 9021     -1.769800e+02 -1.657600e+02
-12 9021     -8.021002e+01 -2.823500e+02
-13 9021     2.951500e+02 -4.667700e+02
-15 9021     -1.271800e+02 -2.234700e+02
-0 9022     3.717999e+01 -2.601100e+02
-2 9022     2.871500e+02 -2.465300e+02
-3 9022     2.072900e+02 -5.444700e+02
-4 9022     -4.739400e+02 -4.356500e+02
-6 9022     1.015300e+02 -2.661600e+02
-8 9022     2.561700e+02 -2.533300e+02
-9 9022     1.428199e+02 -1.068100e+02
-12 9022     1.036900e+02 -2.232500e+02
-15 9022     5.134998e+01 -2.101700e+02
-0 9023     -8.377100e+02 -2.841200e+02
-4 9023     -3.494200e+02 1.713600e+02
-0 9024     6.524301e+02 -2.906800e+02
-7 9024     5.586801e+02 -7.829999e+01
-0 9025     7.943000e+02 -3.126200e+02
-7 9025     6.869301e+02 -7.400000e+01
-0 9026     7.605100e+02 -3.245000e+02
-7 9026     6.605000e+02 -9.028998e+01
-0 9027     1.593199e+02 -3.288100e+02
-7 9027     1.253900e+02 -1.880600e+02
-10 9027     1.248700e+02 -2.207900e+02
-15 9027     2.266300e+02 -2.876200e+02
-0 9028     7.524000e+02 -3.435800e+02
-7 9028     6.582100e+02 -1.081400e+02
-0 9029     7.285200e+02 -3.590000e+02
-7 9029     6.399301e+02 -1.257800e+02
-0 9030     2.976801e+02 -3.742200e+02
-7 9030     2.622700e+02 -2.096400e+02
-0 9031     6.829100e+02 -3.806800e+02
-7 9031     6.059100e+02 -1.529800e+02
-0 9032     -2.086300e+02 -4.358500e+02
-7 9032     -2.269400e+02 -3.725800e+02
-10 9032     -2.866300e+02 -3.846500e+02
-15 9032     -2.542400e+02 -4.810000e+02
-0 9033     -1.673300e+02 -4.561700e+02
-6 9033     -8.500000e+01 -6.081100e+02
-0 9034     7.416500e+02 -4.746600e+02
-7 9034     6.769600e+02 -2.259400e+02
-0 9035     5.660800e+02 -4.774600e+02
-2 9035     8.144301e+02 -3.753100e+02
-10 9035     6.066899e+02 -3.473300e+02
-12 9035     7.212100e+02 -3.299200e+02
-15 9035     8.104399e+02 -4.409900e+02
-0 9036     4.739200e+02 -4.815900e+02
-7 9036     4.441600e+02 -2.822100e+02
-0 9037     1.312100e+02 -5.101899e+02
-2 9037     4.607600e+02 -5.304399e+02
-10 9037     1.123400e+02 -4.310900e+02
-0 9038     1.221300e+02 -5.193500e+02
-7 9038     1.215600e+02 -3.850700e+02
-9 9038     2.949900e+02 -3.441300e+02
-0 9039     -9.452002e+01 -5.352300e+02
-6 9039     5.022998e+01 -6.576899e+02
-0 9040     4.511200e+02 -5.363600e+02
-7 9040     4.351600e+02 -3.352400e+02
-0 9041     1.332001e+01 -5.372200e+02
-2 9041     3.610300e+02 -5.981400e+02
-7 9041     2.013000e+01 -4.235200e+02
-9 9041     2.223600e+02 -3.917300e+02
-0 9042     -3.228600e+02 -5.392500e+02
-4 9042     -6.299800e+02 -1.347200e+02
-6 9042     -2.132000e+02 -7.748800e+02
-9 9042     -7.626001e+01 -5.289100e+02
-0 9043     7.084900e+02 -5.384500e+02
-7 9043     6.626801e+02 -2.876400e+02
-0 9044     4.688600e+02 -5.411200e+02
-2 9044     7.842300e+02 -4.484301e+02
-7 9044     4.529301e+02 -3.362800e+02
-0 9045     5.215002e+01 -5.483800e+02
-2 9045     4.134500e+02 -5.933900e+02
-7 9045     6.189001e+01 -4.265300e+02
-0 9046     6.433002e+01 -5.505900e+02
-2 9046     4.237900e+02 -5.907200e+02
-7 9046     7.333002e+01 -4.258500e+02
-0 9047     2.890015e+00 -5.507500e+02
-7 9047     1.302002e+01 -4.390300e+02
-9 9047     2.244700e+02 -4.039300e+02
-0 9048     7.644000e+01 -5.504000e+02
-2 9048     4.434000e+02 -5.839800e+02
-9 9048     2.870200e+02 -3.765600e+02
-10 9048     5.821997e+01 -4.834700e+02
-0 9049     1.225800e+02 -5.585400e+02
-2 9049     4.888900e+02 -5.761500e+02
-6 9049     2.979200e+02 -5.855601e+02
-0 9050     5.597100e+02 -5.600300e+02
-7 9050     5.387500e+02 -3.364800e+02
-0 9051     3.437000e+01 -5.611801e+02
-2 9051     4.025400e+02 -6.099000e+02
-12 9051     1.945800e+02 -5.942100e+02
-0 9052     4.227002e+01 -5.707400e+02
-2 9052     4.178300e+02 -6.160800e+02
-4 9052     -7.553500e+02 -4.284300e+02
-7 9052     5.707001e+01 -4.496100e+02
-9 9052     2.695500e+02 -4.023400e+02
-0 9053     -1.515600e+02 5.830800e+02
-2 9053     -4.391600e+02 3.558500e+02
-3 9053     -5.631100e+02 2.551001e+01
-4 9053     7.128998e+01 -2.789100e+02
-5 9053     2.616100e+02 -6.509998e+01
-8 9053     -2.825300e+02 2.706500e+02
-11 9053     1.203003e+01 -1.977100e+02
-12 9053     -4.848700e+02 5.873700e+02
-13 9053     7.160999e+01 2.316000e+02
-0 9054     7.778998e+01 5.818400e+02
-4 9054     5.776001e+01 -4.142200e+02
-11 9054     2.119400e+02 -1.915900e+02
-0 9055     -5.182300e+02 5.786300e+02
-2 9055     -8.148000e+02 3.619800e+02
-4 9055     9.128998e+01 -8.444000e+01
-5 9055     -8.678998e+01 -6.803003e+01
-8 9055     -5.877800e+02 2.667300e+02
-11 9055     -2.963200e+02 -2.045900e+02
-13 9055     -2.138900e+02 2.123400e+02
-14 9055     -1.715000e+02 -1.648000e+02
-0 9056     2.821000e+02 5.773400e+02
-2 9056     -5.131000e+01 3.432800e+02
-4 9056     4.338000e+01 -5.470200e+02
-5 9056     6.823000e+02 -6.352002e+01
-9 9056     -1.981000e+02 3.714900e+02
-11 9056     3.940699e+02 -1.849500e+02
-13 9056     4.098199e+02 2.522900e+02
-14 9056     5.815200e+02 -1.444100e+02
-0 9057     -5.300100e+02 5.768300e+02
-2 9057     -8.283400e+02 3.606500e+02
-5 9057     -9.840997e+01 -6.959003e+01
-8 9057     -5.987300e+02 2.655400e+02
-0 9058     -4.625600e+02 5.758400e+02
-2 9058     -7.536500e+02 3.557700e+02
-4 9058     8.632001e+01 -1.121100e+02
-5 9058     -3.475000e+01 -7.171997e+01
-8 9058     -5.383700e+02 2.640400e+02
-13 9058     -1.707300e+02 2.121900e+02
-14 9058     -1.199900e+02 -1.676000e+02
-0 9059     -4.625600e+02 5.758400e+02
-2 9059     -7.536500e+02 3.557700e+02
-13 9059     -1.707300e+02 2.121900e+02
-0 9060     -2.526700e+02 5.744100e+02
-2 9060     -5.384800e+02 3.490400e+02
-11 9060     -7.467999e+01 -2.063600e+02
-13 9060     -6.460022e+00 2.198900e+02
-14 9060     7.616998e+01 -1.663400e+02
-0 9061     5.128101e+02 5.733600e+02
-6 9061     1.585800e+02 7.379900e+02
-13 9061     6.504100e+02 2.740400e+02
-0 9062     -3.565600e+02 5.724900e+02
-13 9062     -8.878003e+01 2.144100e+02
-0 9063     -3.565600e+02 5.724900e+02
-2 9063     -6.422300e+02 3.499300e+02
-4 9063     7.881000e+01 -1.665200e+02
-5 9063     6.541998e+01 -7.452002e+01
-11 9063     -1.635800e+02 -2.084500e+02
-13 9063     -8.878003e+01 2.144100e+02
-0 9064     1.189001e+01 5.716300e+02
-2 9064     -2.859000e+02 3.395800e+02
-4 9064     5.771002e+01 -3.715600e+02
-8 9064     -1.556300e+02 2.611700e+02
-12 9064     -3.037600e+02 5.931200e+02
-13 9064     1.986700e+02 2.303800e+02
-0 9065     3.685800e+02 5.637900e+02
-2 9065     2.423999e+01 3.326100e+02
-3 9065     -1.225100e+02 -1.880005e+00
-5 9065     7.708700e+02 -7.288000e+01
-6 9065     -9.566000e+01 6.746600e+02
-8 9065     1.007900e+02 2.613000e+02
-9 9065     -1.342000e+02 3.636000e+02
-11 9065     4.747000e+02 -1.909600e+02
-13 9065     4.789301e+02 2.468100e+02
-14 9065     6.669900e+02 -1.525900e+02
-0 9066     5.905900e+02 5.621900e+02
-2 9066     3.411700e+02 4.686800e+02
-3 9066     1.950800e+02 1.329900e+02
-6 9066     2.604100e+02 7.433600e+02
-8 9066     3.482600e+02 3.615800e+02
-9 9066     1.425200e+02 4.919800e+02
-13 9066     7.261400e+02 2.721500e+02
-0 9067     1.372500e+02 5.619700e+02
-3 9067     -3.082500e+02 -3.900024e+00
-4 9067     4.227002e+01 -4.503000e+02
-5 9067     5.407900e+02 -8.246002e+01
-8 9067     -6.220001e+01 2.556800e+02
-12 9067     -1.695300e+02 5.998800e+02
-0 9068     5.161500e+02 5.594500e+02
-3 9068     1.182400e+02 1.069300e+02
-6 9068     1.667200e+02 7.229500e+02
-8 9068     2.832600e+02 3.409900e+02
-9 9068     7.369000e+01 4.669600e+02
-11 9068     5.934700e+02 -1.876100e+02
-13 9068     6.547600e+02 2.630200e+02
-0 9069     5.395200e+02 5.590700e+02
-2 9069     2.876600e+02 4.497800e+02
-3 9069     1.437900e+02 1.141600e+02
-6 9069     1.977700e+02 7.275500e+02
-8 9069     3.045300e+02 3.467600e+02
-9 9069     9.690997e+01 4.739700e+02
-11 9069     6.141100e+02 -1.864900e+02
-13 9069     6.779700e+02 2.648000e+02
-0 9070     -5.168100e+02 5.569600e+02
-2 9070     -8.142100e+02 3.358800e+02
-4 9070     8.033002e+01 -8.266998e+01
-5 9070     -8.865002e+01 -8.944000e+01
-8 9070     -5.871400e+02 2.466400e+02
-11 9070     -2.966400e+02 -2.214600e+02
-13 9070     -2.139900e+02 1.946200e+02
-14 9070     -1.730500e+02 -1.857900e+02
-0 9071     2.037400e+02 5.565800e+02
-2 9071     -1.143600e+02 3.233700e+02
-4 9071     3.642999e+01 -4.937500e+02
-5 9071     6.054000e+02 -8.538000e+01
-6 9071     -2.673500e+02 6.347000e+02
-8 9071     -1.451001e+01 2.520000e+02
-9 9071     -2.511300e+02 3.516800e+02
-11 9071     3.262500e+02 -2.066400e+02
-12 9071     -9.978998e+01 6.016000e+02
-13 9071     3.492000e+02 2.300300e+02
-14 9071     5.079301e+02 -1.692200e+02
-0 9072     3.170200e+02 5.564700e+02
-2 9072     -1.629999e+01 3.239900e+02
-3 9072     -1.601200e+02 -9.609985e+00
-9 9072     -1.679100e+02 3.552100e+02
-13 9072     4.392400e+02 2.371100e+02
-0 9073     3.439001e+01 5.496700e+02
-4 9073     4.148999e+01 -3.848200e+02
-12 9073     -2.762300e+02 5.712700e+02
-13 9073     2.157300e+02 2.125600e+02
-0 9074     5.704000e+02 5.458900e+02
-2 9074     3.244301e+02 4.483700e+02
-3 9074     1.796100e+02 1.135300e+02
-6 9074     2.395300e+02 7.201100e+02
-8 9074     3.343400e+02 3.448100e+02
-13 9074     7.088500e+02 2.565900e+02
-0 9075     5.973500e+02 5.424000e+02
-2 9075     3.529000e+02 4.535500e+02
-3 9075     2.066700e+02 1.192000e+02
-6 9075     2.738300e+02 7.233500e+02
-8 9075     3.579000e+02 3.492800e+02
-9 9075     1.531600e+02 4.791100e+02
-11 9075     6.673500e+02 -1.972800e+02
-13 9075     7.344800e+02 2.570500e+02
-0 9076     -7.142800e+02 5.408200e+02
-4 9076     7.447998e+01 3.715002e+01
-5 9076     -3.690300e+02 -1.050100e+02
-0 9077     4.206801e+02 5.360200e+02
-2 9077     6.891998e+01 3.044300e+02
-3 9077     -7.867999e+01 -2.953003e+01
-6 9077     -3.825000e+01 6.521300e+02
-8 9077     1.392100e+02 2.403000e+02
-9 9077     -9.431000e+01 3.410700e+02
-11 9077     5.258199e+02 -2.112500e+02
-12 9077     1.221700e+02 6.067800e+02
-13 9077     5.214600e+02 2.273100e+02
-14 9077     7.208600e+02 -1.777200e+02
-0 9078     2.245000e+02 5.331700e+02
-2 9078     -9.370001e+01 2.987200e+02
-3 9078     -2.337900e+02 -3.376001e+01
-9 9078     -2.324200e+02 3.304500e+02
-13 9078     3.667300e+02 2.122600e+02
-14 9078     5.296600e+02 -1.912500e+02
-0 9079     -7.039800e+02 5.314000e+02
-4 9079     6.754999e+01 3.234998e+01
-5 9079     -3.532700e+02 -1.163600e+02
-13 9079     -4.260100e+02 1.584400e+02
-14 9079     -4.294800e+02 -2.150400e+02
-0 9080     3.475699e+02 5.305300e+02
-2 9080     1.141998e+01 3.005300e+02
-5 9080     7.502100e+02 -1.071600e+02
-8 9080     8.959003e+01 2.356400e+02
-9 9080     -1.437000e+02 3.347900e+02
-13 9080     4.608300e+02 2.160600e+02
-14 9080     6.457300e+02 -1.897700e+02
-0 9081     6.651200e+02 5.285900e+02
-2 9081     4.714900e+02 5.072100e+02
-3 9081     3.218500e+02 1.710200e+02
-6 9081     3.998200e+02 7.343700e+02
-8 9081     4.500900e+02 3.885900e+02
-9 9081     2.556600e+02 5.286000e+02
-11 9081     7.228500e+02 -2.064400e+02
-13 9081     8.231500e+02 2.565400e+02
-0 9082     2.233900e+02 5.264500e+02
-2 9082     -9.409003e+01 2.909100e+02
-9 9082     -2.326800e+02 3.243700e+02
-0 9083     6.778003e+01 5.114200e+02
-4 9083     1.634998e+01 -4.022900e+02
-5 9083     4.714200e+02 -1.370400e+02
-6 9083     -4.048500e+02 5.478400e+02
-8 9083     -1.092100e+02 2.080000e+02
-9 9083     -3.465100e+02 3.015800e+02
-11 9083     2.071800e+02 -2.519700e+02
-12 9083     -2.331100e+02 5.293000e+02
-13 9083     2.432400e+02 1.831600e+02
-14 9083     3.786100e+02 -2.215500e+02
-0 9084     -6.791900e+02 4.969600e+02
-4 9084     5.258002e+01 1.992999e+01
-11 9084     -4.268000e+02 -2.681800e+02
-0 9085     -6.791900e+02 4.969600e+02
-4 9085     5.258002e+01 1.992999e+01
-11 9085     -4.268000e+02 -2.681800e+02
-0 9086     -1.516800e+02 4.912200e+02
-3 9086     -5.607800e+02 -8.015997e+01
-0 9087     4.988900e+02 4.818800e+02
-6 9087     1.655300e+02 6.300600e+02
-8 9087     2.820600e+02 2.782400e+02
-9 9087     7.604999e+01 3.995900e+02
-11 9087     5.914399e+02 -2.559100e+02
-12 9087     2.761400e+02 6.147400e+02
-13 9087     6.466500e+02 1.984700e+02
-0 9088     4.988900e+02 4.818800e+02
-8 9088     2.820600e+02 2.782400e+02
-9 9088     7.604999e+01 3.995900e+02
-12 9088     2.761400e+02 6.147400e+02
-13 9088     6.466500e+02 1.984700e+02
-0 9089     6.324600e+02 4.793100e+02
-3 9089     3.040200e+02 1.206400e+02
-6 9089     3.733400e+02 6.728200e+02
-8 9089     4.329800e+02 3.436800e+02
-9 9089     2.389600e+02 4.814400e+02
-13 9089     7.978500e+02 2.138300e+02
-0 9090     5.134399e+02 4.659700e+02
-2 9090     2.801500e+02 3.547000e+02
-3 9090     1.382400e+02 2.413000e+01
-8 9090     2.983800e+02 2.695800e+02
-9 9090     9.287000e+01 3.914900e+02
-11 9090     6.078800e+02 -2.697900e+02
-12 9090     2.968300e+02 6.017200e+02
-13 9090     6.618400e+02 1.863400e+02
-0 9091     5.887100e+02 4.614500e+02
-2 9091     3.618600e+02 3.766200e+02
-3 9091     2.176600e+02 4.739001e+01
-8 9091     3.663700e+02 2.875500e+02
-13 9091     7.343101e+02 1.910700e+02
-0 9092     5.352000e+02 4.546000e+02
-2 9092     3.070200e+02 3.504500e+02
-3 9092     1.646500e+02 2.202002e+01
-8 9092     3.195700e+02 2.654900e+02
-9 9092     1.164400e+02 3.893200e+02
-13 9092     6.841400e+02 1.782500e+02
-0 9093     -6.067100e+02 4.540200e+02
-13 9093     -2.904800e+02 1.049800e+02
-14 9093     -2.729900e+02 -2.888100e+02
-0 9094     6.798000e+02 4.536000e+02
-2 9094     5.047700e+02 4.473200e+02
-3 9094     3.559900e+02 1.166400e+02
-6 9094     4.357100e+02 6.574800e+02
-8 9094     4.778300e+02 3.381000e+02
-9 9094     2.859700e+02 4.770600e+02
-13 9094     8.461300e+02 1.984700e+02
-0 9095     -8.290002e+01 4.488400e+02
-2 9095     -3.645200e+02 1.997900e+02
-5 9095     3.203500e+02 -2.063500e+02
-7 9095     -3.021000e+02 5.055700e+02
-11 9095     7.384003e+01 -3.111000e+02
-13 9095     1.253100e+02 1.212500e+02
-14 9095     2.331000e+02 -2.919300e+02
-0 9096     -6.542200e+02 4.443000e+02
-4 9096     2.592999e+01 1.196997e+01
-5 9096     -2.921800e+02 -2.031900e+02
-11 9096     -4.134400e+02 -3.121900e+02
-0 9097     -5.627000e+02 4.419500e+02
-4 9097     2.422998e+01 -4.615997e+01
-5 9097     -1.500700e+02 -2.054500e+02
-7 9097     -7.975200e+02 4.475300e+02
-13 9097     -2.562600e+02 9.639999e+01
-14 9097     -2.327800e+02 -3.019000e+02
-0 9098     8.432000e+02 4.420900e+02
-2 9098     6.639399e+02 4.914000e+02
-3 9098     5.020000e+02 1.588000e+02
-9 9098     4.190200e+02 5.187200e+02
-0 9099     8.572900e+02 4.357700e+02
-2 9099     6.787800e+02 4.905800e+02
-3 9099     5.153400e+02 1.582400e+02
-9 9099     4.316200e+02 5.180600e+02
-0 9100     7.214301e+02 4.244100e+02
-2 9100     5.538400e+02 4.367400e+02
-3 9100     4.026899e+02 1.072900e+02
-6 9100     4.926100e+02 6.387700e+02
-8 9100     5.185900e+02 3.291100e+02
-0 9101     6.783800e+02 4.049800e+02
-2 9101     5.160699e+02 4.045700e+02
-3 9101     3.677500e+02 7.667999e+01
-6 9101     4.461500e+02 6.066000e+02
-7 9101     4.743600e+02 5.847200e+02
-8 9101     4.866200e+02 3.029700e+02
-12 9101     5.282800e+02 6.146400e+02
-13 9101     8.515000e+02 1.589900e+02
-0 9102     6.783800e+02 4.049800e+02
-2 9102     5.160699e+02 4.045700e+02
-3 9102     3.677500e+02 7.667999e+01
-6 9102     4.461500e+02 6.066000e+02
-7 9102     4.743600e+02 5.847200e+02
-8 9102     4.866200e+02 3.029700e+02
-9 9102     2.966100e+02 4.415200e+02
-12 9102     5.282800e+02 6.146400e+02
-13 9102     8.515000e+02 1.589900e+02
-0 9103     7.088900e+02 4.044400e+02
-3 9103     3.967200e+02 8.703003e+01
-6 9103     4.821200e+02 6.138500e+02
-8 9103     5.119700e+02 3.110500e+02
-9 9103     3.226400e+02 4.509400e+02
-0 9104     7.088900e+02 4.044400e+02
-2 9104     5.467000e+02 4.149500e+02
-3 9104     3.967200e+02 8.703003e+01
-6 9104     4.821200e+02 6.138500e+02
-8 9104     5.119700e+02 3.110500e+02
-9 9104     3.226400e+02 4.509400e+02
-0 9105     -2.753200e+02 3.933400e+02
-7 9105     -4.864800e+02 4.267600e+02
-10 9105     -4.639100e+02 5.830300e+02
-0 9106     6.997700e+02 3.934900e+02
-2 9106     5.412100e+02 4.019200e+02
-3 9106     3.915500e+02 7.485999e+01
-6 9106     4.746500e+02 5.999200e+02
-7 9106     4.970200e+02 5.765800e+02
-8 9106     5.073400e+02 3.006400e+02
-9 9106     3.176600e+02 4.399000e+02
-12 9106     5.553101e+02 6.094800e+02
-13 9106     8.734000e+02 1.522000e+02
-0 9107     6.438000e+02 3.901900e+02
-2 9107     4.844399e+02 3.790300e+02
-3 9107     3.385000e+02 5.196997e+01
-6 9107     4.087800e+02 5.811800e+02
-7 9107     4.423600e+02 5.644000e+02
-8 9107     4.602900e+02 2.831900e+02
-9 9107     2.698199e+02 4.186600e+02
-11 9107     7.345200e+02 -3.319400e+02
-12 9107     4.923500e+02 5.880200e+02
-13 9107     8.192600e+02 1.434100e+02
-0 9108     6.285601e+02 3.889100e+02
-2 9108     4.687100e+02 3.713600e+02
-3 9108     3.240100e+02 4.471997e+01
-7 9108     4.275800e+02 5.608300e+02
-8 9108     4.472700e+02 2.764700e+02
-9 9108     2.569301e+02 4.117000e+02
-11 9108     7.206700e+02 -3.339700e+02
-12 9108     4.748000e+02 5.807000e+02
-13 9108     8.043800e+02 1.407300e+02
-0 9109     6.285601e+02 3.889100e+02
-2 9109     4.687100e+02 3.713600e+02
-3 9109     3.240100e+02 4.471997e+01
-7 9109     4.275800e+02 5.608300e+02
-8 9109     4.472700e+02 2.764700e+02
-9 9109     2.569301e+02 4.117000e+02
-11 9109     7.206700e+02 -3.339700e+02
-12 9109     4.748000e+02 5.807000e+02
-13 9109     8.043800e+02 1.407300e+02
-0 9110     6.673600e+02 3.820900e+02
-2 9110     5.113600e+02 3.768700e+02
-6 9110     4.390601e+02 5.741100e+02
-7 9110     4.668300e+02 5.604600e+02
-8 9110     4.820601e+02 2.792000e+02
-9 9110     2.925100e+02 4.166200e+02
-12 9110     5.208101e+02 5.815400e+02
-0 9111     7.926300e+02 3.768900e+02
-2 9111     6.350300e+02 4.197400e+02
-3 9111     4.800200e+02 9.340002e+01
-7 9111     5.877900e+02 5.757700e+02
-9 9111     3.961200e+02 4.568600e+02
-0 9112     -5.171800e+02 3.672300e+02
-4 9112     -2.210999e+01 -5.419000e+01
-13 9112     -2.234800e+02 3.157001e+01
-14 9112     -1.992300e+02 -3.838800e+02
-15 9112     -7.881300e+02 5.730000e+02
-0 9113     7.807000e+02 3.626100e+02
-2 9113     6.278199e+02 4.040000e+02
-3 9113     4.733300e+02 7.864001e+01
-6 9113     5.734600e+02 5.894700e+02
-7 9113     5.783101e+02 5.600200e+02
-8 9113     5.798000e+02 3.003900e+02
-9 9113     3.907600e+02 4.429900e+02
-12 9113     6.526801e+02 6.030900e+02
-0 9114     6.819100e+02 3.563400e+02
-2 9114     5.326000e+02 3.622600e+02
-3 9114     3.851801e+02 3.747998e+01
-6 9114     4.625699e+02 5.549200e+02
-7 9114     4.842900e+02 5.381800e+02
-8 9114     4.998300e+02 2.677000e+02
-11 9114     7.792200e+02 -3.624500e+02
-12 9114     5.438900e+02 5.645500e+02
-0 9115     -5.480500e+02 3.510000e+02
-5 9115     -1.505300e+02 -3.031600e+02
-10 9115     -7.933800e+02 5.097800e+02
-13 9115     -2.490300e+02 1.802002e+01
-14 9115     -2.320200e+02 -3.992500e+02
-15 9115     -8.290100e+02 5.462600e+02
-0 9116     5.424900e+02 3.416400e+02
-2 9116     3.440100e+02 2.476500e+02
-3 9116     2.023300e+02 -7.682001e+01
-6 9116     2.572600e+02 4.838200e+02
-7 9116     3.369301e+02 4.914400e+02
-8 9116     3.485000e+02 1.814600e+02
-9 9116     1.503101e+02 3.017500e+02
-10 9116     5.097000e+02 6.032100e+02
-11 9116     6.567900e+02 -3.825900e+02
-12 9116     3.609200e+02 4.778600e+02
-13 9116     7.037200e+02 8.592999e+01
-0 9117     7.803600e+02 3.408600e+02
-7 9117     5.807600e+02 5.397000e+02
-8 9117     5.846500e+02 2.848000e+02
-9 9117     3.962800e+02 4.277500e+02
-12 9117     6.572000e+02 5.793300e+02
-0 9118     8.496300e+02 3.414200e+02
-2 9118     6.982700e+02 4.102600e+02
-3 9118     5.381600e+02 8.542999e+01
-7 9118     6.457900e+02 5.510700e+02
-9 9118     4.497600e+02 4.505100e+02
-12 9118     7.334700e+02 6.047200e+02
-0 9119     8.496300e+02 3.414200e+02
-2 9119     6.982700e+02 4.102600e+02
-3 9119     5.381600e+02 8.542999e+01
-7 9119     6.457900e+02 5.510700e+02
-9 9119     4.497600e+02 4.505100e+02
-12 9119     7.334700e+02 6.047200e+02
-0 9120     5.228700e+02 3.374500e+02
-3 9120     1.823800e+02 -8.960999e+01
-6 9120     2.332200e+02 4.712900e+02
-7 9120     3.183101e+02 4.838400e+02
-8 9120     3.319300e+02 1.713900e+02
-9 9120     1.326100e+02 2.900900e+02
-10 9120     4.871801e+02 5.947900e+02
-12 9120     3.398000e+02 4.658100e+02
-13 9120     6.852600e+02 7.947000e+01
-0 9121     6.693101e+02 3.369700e+02
-2 9121     5.247000e+02 3.396500e+02
-3 9121     3.784800e+02 1.634003e+01
-6 9121     4.524200e+02 5.307500e+02
-7 9121     4.745500e+02 5.173800e+02
-8 9121     4.930000e+02 2.493900e+02
-9 9121     3.048700e+02 3.862200e+02
-10 9121     6.611600e+02 6.112800e+02
-12 9121     5.343700e+02 5.397000e+02
-13 9121     8.507000e+02 1.023900e+02
-0 9122     6.693101e+02 3.369700e+02
-3 9122     3.784800e+02 1.634003e+01
-6 9122     4.524200e+02 5.307500e+02
-7 9122     4.745500e+02 5.173800e+02
-0 9123     4.462000e+01 3.348600e+02
-7 9123     -1.584800e+02 4.059900e+02
-13 9123     2.346700e+02 3.103998e+01
-14 9123     3.679200e+02 -4.102400e+02
-0 9124     8.162000e+02 3.283600e+02
-2 9124     6.710601e+02 3.869700e+02
-3 9124     5.138600e+02 6.396997e+01
-7 9124     6.170100e+02 5.333600e+02
-9 9124     4.285800e+02 4.305400e+02
-12 9124     7.009500e+02 5.795400e+02
-0 9125     6.051500e+02 3.233700e+02
-2 9125     4.602600e+02 3.008700e+02
-3 9125     3.183800e+02 -2.191998e+01
-6 9125     3.776200e+02 4.954600e+02
-7 9125     4.130900e+02 4.932700e+02
-9 9125     2.506400e+02 3.510100e+02
-12 9125     4.640400e+02 5.015900e+02
-13 9125     7.886000e+02 8.317001e+01
-0 9126     4.840002e+01 3.207300e+02
-7 9126     -1.525000e+02 3.928500e+02
-10 9126     -7.082001e+01 5.253400e+02
-11 9126     1.977300e+02 -4.239600e+02
-0 9127     4.620601e+02 3.171800e+02
-10 9127     4.155601e+02 5.649700e+02
-11 9127     5.846500e+02 -4.099600e+02
-13 9127     6.255800e+02 5.540002e+01
-0 9128     6.612600e+02 3.139600e+02
-3 9128     3.769800e+02 -6.510010e+00
-6 9128     4.480300e+02 5.039100e+02
-7 9128     4.694900e+02 4.941400e+02
-9 9128     3.030601e+02 3.657800e+02
-10 9128     6.528800e+02 5.825800e+02
-11 9128     7.699700e+02 -4.047400e+02
-12 9128     5.300500e+02 5.128700e+02
-13 9128     8.457400e+02 8.223001e+01
-0 9129     7.373800e+02 3.086200e+02
-2 9129     6.000200e+02 3.404000e+02
-3 9129     4.502900e+02 1.928003e+01
-7 9129     5.432400e+02 5.023100e+02
-9 9129     3.684399e+02 3.891100e+02
-10 9129     7.428199e+02 5.862700e+02
-0 9130     6.561500e+02 3.013100e+02
-3 9130     3.756700e+02 -1.963000e+01
-7 9130     4.663400e+02 4.808600e+02
-10 9130     6.474399e+02 5.669500e+02
-12 9130     5.279399e+02 4.972600e+02
-0 9131     6.561500e+02 3.013100e+02
-2 9131     5.203101e+02 3.016800e+02
-3 9131     3.756700e+02 -1.963000e+01
-6 9131     4.455000e+02 4.887000e+02
-7 9131     4.663400e+02 4.808600e+02
-9 9131     3.019800e+02 3.541000e+02
-12 9131     5.279399e+02 4.972600e+02
-0 9132     5.966700e+02 2.971400e+02
-2 9132     4.586899e+02 2.725900e+02
-3 9132     3.173500e+02 -4.871002e+01
-6 9132     3.743700e+02 4.644600e+02
-7 9132     4.081300e+02 4.665000e+02
-8 9132     4.377100e+02 1.954800e+02
-9 9132     2.496600e+02 3.271900e+02
-10 9132     5.768500e+02 5.544600e+02
-11 9132     7.115200e+02 -4.248600e+02
-12 9132     4.606700e+02 4.714100e+02
-13 9132     7.837300e+02 6.009003e+01
-0 9133     6.689200e+02 2.947200e+02
-7 9133     4.795500e+02 4.771800e+02
-10 9133     6.622800e+02 5.608400e+02
-0 9134     6.095100e+02 2.889500e+02
-7 9134     4.220000e+02 4.608600e+02
-0 9135     -3.775500e+02 2.870700e+02
-5 9135     1.281000e+01 -3.787000e+02
-0 9136     7.056899e+02 2.847000e+02
-2 9136     5.754100e+02 3.063100e+02
-3 9136     4.279800e+02 -1.346002e+01
-6 9136     5.077300e+02 4.860300e+02
-7 9136     5.166700e+02 4.735300e+02
-8 9136     5.343500e+02 2.205400e+02
-9 9136     3.487000e+02 3.594900e+02
-10 9136     7.071600e+02 5.527300e+02
-12 9136     5.880400e+02 4.962000e+02
-0 9137     -1.351000e+02 2.810500e+02
-7 9137     -3.265100e+02 3.300000e+02
-0 9138     6.152002e+01 2.608000e+02
-4 9138     -1.306100e+02 -3.914100e+02
-7 9138     -1.253600e+02 3.388800e+02
-11 9138     2.099300e+02 -4.809000e+02
-0 9139     6.132100e+02 2.609200e+02
-2 9139     4.853400e+02 2.445100e+02
-3 9139     3.440400e+02 -7.459998e+01
-6 9139     4.034900e+02 4.295300e+02
-7 9139     4.292700e+02 4.341600e+02
-10 9139     5.989301e+02 5.124800e+02
-11 9139     7.362000e+02 -4.604500e+02
-13 9139     8.041100e+02 3.133002e+01
-0 9140     6.515000e+02 2.592200e+02
-2 9140     5.265400e+02 2.601100e+02
-3 9140     3.832600e+02 -5.875000e+01
-6 9140     4.503199e+02 4.410100e+02
-7 9140     4.670601e+02 4.397600e+02
-8 9140     4.933700e+02 1.837600e+02
-9 9140     3.078900e+02 3.188500e+02
-10 9140     6.444200e+02 5.161400e+02
-11 9140     7.744301e+02 -4.603900e+02
-12 9140     5.327600e+02 4.499900e+02
-13 9140     8.424500e+02 3.483002e+01
-0 9141     -4.164400e+02 2.557600e+02
-7 9141     -6.149600e+02 2.618600e+02
-11 9141     -2.304600e+02 -4.839600e+02
-0 9142     -3.999200e+02 2.516200e+02
-5 9142     -1.665997e+01 -4.174900e+02
-7 9142     -5.942500e+02 2.614500e+02
-0 9143     -6.244000e+01 2.305000e+02
-7 9143     -2.420200e+02 2.920900e+02
-10 9143     -1.905200e+02 4.067100e+02
-13 9143     1.691500e+02 -6.278998e+01
-14 9143     2.840200e+02 -5.278400e+02
-0 9144     7.216100e+02 2.255000e+02
-2 9144     6.085000e+02 2.588500e+02
-3 9144     4.612600e+02 -5.725000e+01
-6 9144     5.420100e+02 4.284800e+02
-7 9144     5.396899e+02 4.200300e+02
-8 9144     5.614700e+02 1.810200e+02
-9 9144     3.773700e+02 3.203200e+02
-10 9144     7.302100e+02 4.836000e+02
-0 9145     -7.039001e+01 2.200200e+02
-7 9145     -2.466300e+02 2.819200e+02
-10 9145     -1.985100e+02 3.936400e+02
-0 9146     6.338000e+02 2.183600e+02
-2 9146     5.182100e+02 2.131000e+02
-3 9146     3.770900e+02 -1.033000e+02
-6 9146     4.387300e+02 3.902300e+02
-7 9146     4.550900e+02 3.969900e+02
-8 9146     4.854900e+02 1.452800e+02
-9 9146     3.015200e+02 2.786600e+02
-10 9146     6.258800e+02 4.646200e+02
-13 9146     8.292500e+02 -1.989990e+00
-15 9146     8.302400e+02 5.306400e+02
-0 9147     7.195601e+02 2.115200e+02
-2 9147     6.099100e+02 2.445900e+02
-3 9147     4.637700e+02 -7.069000e+01
-6 9147     5.426200e+02 4.124900e+02
-7 9147     5.398800e+02 4.060900e+02
-8 9147     5.623800e+02 1.690100e+02
-9 9147     3.786400e+02 3.085000e+02
-0 9148     7.709600e+02 2.119800e+02
-7 9148     5.882700e+02 4.157500e+02
-10 9148     7.895100e+02 4.731400e+02
-0 9149     7.042100e+02 1.964200e+02
-2 9149     5.984399e+02 2.227000e+02
-3 9149     4.541200e+02 -9.095001e+01
-6 9149     5.287500e+02 3.895600e+02
-7 9149     5.269500e+02 3.884000e+02
-8 9149     5.529200e+02 1.504900e+02
-9 9149     3.692700e+02 2.893400e+02
-10 9149     7.111400e+02 4.463500e+02
-0 9150     -5.330700e+02 1.926500e+02
-13 9150     -2.423900e+02 -1.217000e+02
-0 9151     8.012700e+02 1.921500e+02
-7 9151     6.199700e+02 4.019000e+02
-0 9152     8.797998e+01 1.842200e+02
-10 9152     -1.048999e+01 3.658500e+02
-13 9152     4.031600e+02 -6.622998e+01
-14 9152     5.833400e+02 -5.456899e+02
-0 9153     -2.827600e+02 1.758500e+02
-7 9153     -4.539600e+02 2.070000e+02
-0 9154     -2.600900e+02 1.744400e+02
-7 9154     -4.298300e+02 2.086400e+02
-0 9155     6.978600e+02 1.564900e+02
-2 9155     6.032800e+02 1.828800e+02
-3 9155     4.602300e+02 -1.294100e+02
-6 9155     5.316899e+02 3.459700e+02
-7 9155     5.258300e+02 3.492000e+02
-8 9155     5.564800e+02 1.185800e+02
-9 9155     3.743500e+02 2.561200e+02
-12 9155     6.119900e+02 3.567300e+02
-0 9156     8.065601e+02 1.387600e+02
-2 9156     7.189800e+02 2.151600e+02
-7 9156     6.323500e+02 3.521900e+02
-9 9156     4.722200e+02 2.887200e+02
-0 9157     6.905100e+02 1.357600e+02
-2 9157     6.010100e+02 1.596700e+02
-3 9157     4.596500e+02 -1.516000e+02
-7 9157     5.217700e+02 3.280400e+02
-8 9157     5.538700e+02 9.947000e+01
-9 9157     3.731200e+02 2.365800e+02
-10 9157     6.989900e+02 3.734500e+02
-12 9157     6.088101e+02 3.307900e+02
-0 9158     6.905100e+02 1.357600e+02
-2 9158     6.010100e+02 1.596700e+02
-3 9158     4.596500e+02 -1.516000e+02
-7 9158     5.217700e+02 3.280400e+02
-8 9158     5.538700e+02 9.947000e+01
-9 9158     3.731200e+02 2.365800e+02
-10 9158     6.989900e+02 3.734500e+02
-12 9158     6.088101e+02 3.307900e+02
-0 9159     7.719000e+02 1.316500e+02
-2 9159     6.849900e+02 1.939100e+02
-3 9159     5.381000e+02 -1.157600e+02
-7 9159     6.009700e+02 3.394100e+02
-10 9159     7.965100e+02 3.772700e+02
-0 9160     8.209700e+02 1.270500e+02
-2 9160     7.346600e+02 2.102400e+02
-3 9160     5.843900e+02 -9.900000e+01
-7 9160     6.479000e+02 3.436700e+02
-9 9160     4.832700e+02 2.829800e+02
-0 9161     7.230200e+02 1.257700e+02
-3 9161     4.946300e+02 -1.458300e+02
-8 9161     5.848300e+02 1.019200e+02
-12 9161     6.483700e+02 3.308900e+02
-0 9162     7.388500e+02 1.263000e+02
-3 9162     5.089500e+02 -1.374200e+02
-0 9163     7.847300e+02 1.074100e+02
-2 9163     7.048400e+02 1.754700e+02
-3 9163     5.579200e+02 -1.327200e+02
-7 9163     6.158000e+02 3.181400e+02
-9 9163     4.599900e+02 2.531700e+02
-10 9163     8.131400e+02 3.497400e+02
-12 9163     7.221700e+02 3.347200e+02
-0 9164     8.740000e+02 1.055100e+02
-7 9164     6.998000e+02 3.297600e+02
-9 9164     5.295300e+02 2.853200e+02
-12 9164     8.212900e+02 3.621900e+02
-0 9165     8.346200e+02 1.039500e+02
-2 9165     7.534200e+02 1.941500e+02
-3 9165     6.031000e+02 -1.132700e+02
-7 9165     6.630000e+02 3.240600e+02
-9 9165     4.997100e+02 2.702200e+02
-0 9166     -4.808200e+02 9.864001e+01
-7 9166     -6.453300e+02 9.863000e+01
-0 9167     5.538199e+02 9.189999e+01
-10 9167     5.411801e+02 3.064200e+02
-12 9167     4.599600e+02 2.316000e+02
-15 9167     7.319600e+02 3.406000e+02
-0 9168     7.544000e+02 8.710999e+01
-2 9168     6.801400e+02 1.422600e+02
-3 9168     5.365100e+02 -1.650400e+02
-7 9168     5.897000e+02 2.932700e+02
-0 9169     8.355300e+02 8.767001e+01
-7 9169     6.659301e+02 3.086800e+02
-0 9170     8.355300e+02 8.767001e+01
-7 9170     6.659301e+02 3.086800e+02
-0 9171     7.120699e+02 8.112000e+01
-2 9171     6.391500e+02 1.161000e+02
-3 9171     4.982300e+02 -1.916700e+02
-6 9171     5.675900e+02 2.688500e+02
-7 9171     5.496300e+02 2.794100e+02
-8 9171     5.851700e+02 6.254001e+01
-9 9171     4.059500e+02 2.011800e+02
-12 9171     6.464800e+02 2.785900e+02
-0 9172     7.735500e+02 7.766998e+01
-2 9172     7.024700e+02 1.425800e+02
-3 9172     5.577400e+02 -1.642200e+02
-7 9172     6.093199e+02 2.879700e+02
-9 9172     4.587000e+02 2.253100e+02
-10 9172     8.019200e+02 3.139500e+02
-12 9172     7.172700e+02 2.995000e+02
-0 9173     7.735500e+02 7.766998e+01
-2 9173     7.024700e+02 1.425800e+02
-3 9173     5.577400e+02 -1.642200e+02
-7 9173     6.093199e+02 2.879700e+02
-9 9173     4.587000e+02 2.253100e+02
-10 9173     8.019200e+02 3.139500e+02
-12 9173     7.172700e+02 2.995000e+02
-0 9174     8.114700e+02 7.453003e+01
-3 9174     5.933199e+02 -1.494200e+02
-7 9174     6.452800e+02 2.916600e+02
-9 9174     4.893000e+02 2.373200e+02
-12 9174     7.592400e+02 3.078600e+02
-0 9175     8.694200e+02 6.523999e+01
-2 9175     7.990900e+02 1.744200e+02
-3 9175     6.466000e+02 -1.296100e+02
-7 9175     7.007900e+02 2.946000e+02
-9 9175     5.372600e+02 2.547100e+02
-0 9176     -4.385900e+02 5.647998e+01
-10 9176     -6.143100e+02 1.629000e+02
-13 9176     -1.231400e+02 -2.321800e+02
-15 9176     -6.251800e+02 1.534600e+02
-0 9177     -3.893100e+02 5.328998e+01
-2 9177     -5.498900e+02 -2.262300e+02
-7 9177     -5.374300e+02 6.840997e+01
-8 9177     -3.870100e+02 -2.005300e+02
-10 9177     -5.592400e+02 1.629700e+02
-13 9177     -7.876001e+01 -2.331900e+02
-15 9177     -5.607600e+02 1.540900e+02
-0 9178     5.514600e+02 5.021002e+01
-6 9178     3.803000e+02 1.710500e+02
-10 9178     5.420800e+02 2.585400e+02
-0 9179     5.514600e+02 5.021002e+01
-6 9179     3.803000e+02 1.710500e+02
-7 9179     3.979800e+02 2.177300e+02
-10 9179     5.420800e+02 2.585400e+02
-13 9179     7.648199e+02 -1.608700e+02
-15 9179     7.341100e+02 2.819500e+02
-0 9180     -4.689000e+02 4.942999e+01
-13 9180     -1.497600e+02 -2.398000e+02
-0 9181     -4.689000e+02 4.942999e+01
-2 9181     -6.509900e+02 -2.485000e+02
-13 9181     -1.497600e+02 -2.398000e+02
-0 9182     -3.389400e+02 4.859003e+01
-4 9182     -2.129500e+02 -1.393800e+02
-0 9183     5.158199e+02 4.847998e+01
-10 9183     5.000699e+02 2.527700e+02
-13 9183     7.280000e+02 -1.673000e+02
-15 9183     6.838800e+02 2.742500e+02
-0 9184     -4.185400e+02 4.403003e+01
-2 9184     -5.808100e+02 -2.404500e+02
-13 9184     -1.016100e+02 -2.414300e+02
-0 9185     -4.714400e+02 4.146997e+01
-2 9185     -6.514500e+02 -2.576600e+02
-13 9185     -1.496100e+02 -2.475600e+02
-0 9186     -5.746997e+01 3.532001e+01
-7 9186     -1.545200e+02 1.349100e+02
-13 9186     3.071899e+02 -1.990600e+02
-15 9186     -1.154900e+02 1.766400e+02
-0 9187     -8.625200e+02 3.031000e+01
-13 9187     -5.079100e+02 -2.796100e+02
-0 9188     6.446899e+02 1.831000e+01
-2 9188     5.850100e+02 1.866998e+01
-3 9188     4.509500e+02 -2.881200e+02
-6 9188     5.044800e+02 1.737600e+02
-7 9188     4.925000e+02 2.059400e+02
-8 9188     5.389200e+02 -1.537000e+01
-10 9188     6.533101e+02 2.309100e+02
-12 9188     5.852700e+02 1.834400e+02
-13 9188     8.660000e+02 -1.765000e+02
-0 9189     -8.014200e+02 3.659973e+00
-13 9189     -4.464200e+02 -2.997800e+02
-0 9190     -1.821997e+01 -8.539978e+00
-3 9190     3.771002e+01 -3.073300e+02
-4 9190     -2.757400e+02 -3.983900e+02
-6 9190     -5.875000e+01 4.699707e-01
-8 9190     1.302500e+02 -4.347000e+01
-12 9190     -4.504999e+01 5.535999e+01
-13 9190     3.553300e+02 -2.321300e+02
-0 9191     -2.148999e+01 -1.817999e+01
-2 9191     1.213600e+02 -8.750000e+00
-7 9191     -1.057900e+02 9.051999e+01
-10 9191     -1.164800e+02 1.178400e+02
-15 9191     -6.126001e+01 1.099700e+02
-0 9192     -2.148999e+01 -1.817999e+01
-2 9192     1.213600e+02 -8.750000e+00
-3 9192     3.573999e+01 -3.191200e+02
-7 9192     -1.057900e+02 9.051999e+01
-10 9192     -1.164800e+02 1.178400e+02
-13 9192     3.526200e+02 -2.397100e+02
-15 9192     -6.126001e+01 1.099700e+02
-0 9193     2.105000e+02 -1.900000e+01
-7 9193     1.269200e+02 1.296700e+02
-8 9193     3.299000e+02 -4.579987e+00
-9 9193     1.906400e+02 1.418900e+02
-10 9193     1.520300e+02 1.407500e+02
-12 9193     2.231200e+02 1.100100e+02
-13 9193     5.587900e+02 -2.208800e+02
-15 9193     2.537000e+02 1.400900e+02
-0 9194     8.191500e+02 -1.931000e+01
-2 9194     7.767400e+02 7.066998e+01
-7 9194     6.649600e+02 2.045400e+02
-9 9194     5.216200e+02 1.685400e+02
-12 9194     7.935100e+02 2.100000e+02
-0 9195     1.855900e+02 -2.277002e+01
-2 9195     3.393199e+02 4.641998e+01
-3 9195     2.412400e+02 -2.599000e+02
-9 9195     1.751200e+02 1.370500e+02
-0 9196     -3.363800e+02 -2.613000e+01
-13 9196     -1.009003e+01 -2.965100e+02
-0 9197     8.506700e+02 -2.696002e+01
-2 9197     8.101500e+02 7.914001e+01
-3 9197     6.647100e+02 -2.206700e+02
-7 9197     6.954399e+02 2.034100e+02
-9 9197     5.487400e+02 1.758100e+02
-0 9198     8.506700e+02 -2.696002e+01
-2 9198     8.101500e+02 7.914001e+01
-3 9198     6.647100e+02 -2.206700e+02
-7 9198     6.954399e+02 2.034100e+02
-9 9198     5.487400e+02 1.758100e+02
-0 9199     -3.509700e+02 -3.110999e+01
-4 9199     -2.602600e+02 -1.303300e+02
-7 9199     -4.749400e+02 -5.429993e+00
-9 9199     -4.815600e+02 -1.864200e+02
-15 9199     -4.962900e+02 4.565002e+01
-0 9200     -1.456200e+02 -3.142999e+01
-7 9200     -2.363500e+02 4.915997e+01
-15 9200     -2.241800e+02 7.396002e+01
-0 9201     7.486700e+02 -3.177002e+01
-3 9201     5.724600e+02 -2.788600e+02
-0 9202     8.425300e+02 -3.500000e+01
-2 9202     8.048800e+02 6.740997e+01
-3 9202     6.604200e+02 -2.319900e+02
-7 9202     6.887900e+02 1.940800e+02
-9 9202     5.438000e+02 1.669600e+02
-0 9203     8.425300e+02 -3.500000e+01
-2 9203     8.048800e+02 6.740997e+01
-3 9203     6.604200e+02 -2.319900e+02
-7 9203     6.887900e+02 1.940800e+02
-9 9203     5.438000e+02 1.669600e+02
-0 9204     7.566700e+02 -3.816998e+01
-2 9204     7.199600e+02 2.120001e+01
-3 9204     5.826000e+02 -2.805000e+02
-7 9204     6.085699e+02 1.740600e+02
-9 9204     4.762800e+02 1.246700e+02
-10 9204     7.904800e+02 1.766600e+02
-12 9204     7.284800e+02 1.673000e+02
-0 9205     7.130900e+02 -4.009998e+01
-2 9205     6.758500e+02 -4.789978e+00
-3 9205     5.414500e+02 -3.072600e+02
-9 9205     4.401500e+02 1.014600e+02
-10 9205     7.386899e+02 1.691600e+02
-0 9206     -4.676300e+02 -4.721997e+01
-2 9206     -5.848100e+02 -3.335100e+02
-7 9206     -5.947300e+02 -4.382001e+01
-13 9206     -1.255100e+02 -3.232600e+02
-0 9207     3.295699e+02 -5.501001e+01
-7 9207     2.389100e+02 1.071200e+02
-10 9207     2.928500e+02 1.116800e+02
-15 9207     4.253700e+02 1.072000e+02
-0 9208     -3.974400e+02 -6.895001e+01
-2 9208     -4.759300e+02 -3.334700e+02
-7 9208     -5.140400e+02 -5.097998e+01
-8 9208     -3.377300e+02 -2.916100e+02
-9 9208     -5.068400e+02 -2.267600e+02
-13 9208     -5.446002e+01 -3.367100e+02
-15 9208     -5.522200e+02 -1.017999e+01
-0 9209     2.135999e+01 -7.044000e+01
-13 9209     3.986700e+02 -2.808500e+02
-15 9209     3.200012e+00 4.509003e+01
-0 9210     -4.129700e+02 -7.359998e+01
-7 9210     -5.296500e+02 -6.206000e+01
-13 9210     -6.878003e+01 -3.431100e+02
-0 9211     3.308900e+02 -8.217999e+01
-13 9211     6.587600e+02 -2.704300e+02
-15 9211     4.298101e+02 7.013000e+01
-0 9212     7.050400e+02 -8.302002e+01
-2 9212     6.796700e+02 -5.329999e+01
-3 9212     5.485400e+02 -3.548900e+02
-7 9212     5.651600e+02 1.209700e+02
-9 9212     4.456000e+02 6.190002e+01
-10 9212     7.330601e+02 1.195600e+02
-12 9212     6.812000e+02 9.526001e+01
-0 9213     2.547300e+02 -1.052200e+02
-13 9213     6.040200e+02 -2.942500e+02
-15 9213     3.266100e+02 2.820001e+01
-0 9214     2.740400e+02 -1.139600e+02
-7 9214     2.009200e+02 4.459003e+01
-10 9214     2.346400e+02 3.800000e+01
-13 9214     6.190800e+02 -3.000800e+02
-15 9214     3.535500e+02 1.892999e+01
-0 9215     3.385601e+02 -1.142800e+02
-7 9215     2.584301e+02 5.360999e+01
-0 9216     1.697600e+02 -1.181100e+02
-3 9216     2.638900e+02 -3.605200e+02
-10 9216     1.148300e+02 2.219000e+01
-13 9216     5.355100e+02 -3.115400e+02
-15 9216     2.114700e+02 -5.200195e-01
-0 9217     8.276100e+02 -1.230200e+02
-9 9217     5.578300e+02 8.831000e+01
-0 9218     9.490997e+01 -1.266100e+02
-7 9218     3.288000e+01 3.349976e+00
-15 9218     1.109300e+02 -2.221002e+01
-0 9219     2.215601e+02 -1.318500e+02
-2 9219     4.150400e+02 -6.045001e+01
-0 9220     7.878900e+02 -1.317300e+02
-2 9220     7.806200e+02 -5.746997e+01
-9 9220     5.274700e+02 6.153003e+01
-0 9221     -2.423999e+01 -1.437000e+02
-7 9221     -8.456000e+01 -3.564001e+01
-10 9221     -1.064000e+02 -2.832001e+01
-15 9221     -4.834003e+01 -6.109998e+01
-0 9222     -1.918500e+02 -1.480700e+02
-4 9222     -3.519600e+02 -2.456100e+02
-13 9222     1.772800e+02 -3.814800e+02
-15 9222     -2.684900e+02 -9.091998e+01
-0 9223     2.870100e+02 -1.579200e+02
-3 9223     3.703600e+02 -3.848000e+02
-7 9223     2.214700e+02 2.340027e+00
-10 9223     2.541700e+02 -1.123999e+01
-13 9223     6.384100e+02 -3.392800e+02
-15 9223     3.783600e+02 -3.941998e+01
-0 9224     7.744399e+02 -1.663100e+02
-2 9224     7.790601e+02 -1.008800e+02
-7 9224     6.424399e+02 5.545001e+01
-12 9224     7.837000e+02 3.090997e+01
-0 9225     -4.347500e+02 -1.719200e+02
-7 9225     -5.296700e+02 -1.597900e+02
-15 9225     -5.932700e+02 -1.562300e+02
-0 9226     3.026700e+02 -1.737200e+02
-7 9226     2.392100e+02 -8.530029e+00
-10 9226     2.740900e+02 -2.759998e+01
-13 9226     6.558900e+02 -3.506900e+02
-15 9226     4.017300e+02 -5.873999e+01
-0 9227     8.283700e+02 -1.783200e+02
-7 9227     6.945800e+02 5.519000e+01
-0 9228     2.070500e+02 -1.802300e+02
-7 9228     1.517000e+02 -2.832001e+01
-13 9228     5.790699e+02 -3.624100e+02
-0 9229     1.068600e+02 -2.245500e+02
-10 9229     5.332001e+01 -1.067400e+02
-12 9229     1.840500e+02 -1.484000e+02
-15 9229     1.377700e+02 -1.522000e+02
-0 9230     1.571300e+02 -2.293400e+02
-13 9230     5.484200e+02 -4.081300e+02
-0 9231     1.571300e+02 -2.293400e+02
-6 9231     2.320000e+02 -1.776100e+02
-10 9231     1.120200e+02 -1.071200e+02
-15 9231     2.079100e+02 -1.524900e+02
-0 9232     5.735999e+01 -2.864000e+02
-3 9232     2.279800e+02 -5.762900e+02
-8 9232     2.732800e+02 -2.786400e+02
-0 9233     9.820007e+00 -2.885200e+02
-3 9233     1.732600e+02 -6.079500e+02
-4 9233     -4.909200e+02 -4.081800e+02
-6 9233     6.734998e+01 -3.156600e+02
-7 9233     -2.859003e+01 -1.762300e+02
-9 9233     1.149000e+02 -1.589900e+02
-10 9233     -5.050000e+01 -1.904700e+02
-12 9233     7.138000e+01 -2.713500e+02
-15 9233     1.870001e+01 -2.517700e+02
-0 9234     5.529999e+01 -3.069000e+02
-2 9234     3.061700e+02 -3.131200e+02
-8 9234     2.726400e+02 -3.056100e+02
-10 9234     2.909973e+00 -2.069300e+02
-12 9234     1.300600e+02 -2.811000e+02
-15 9234     8.221002e+01 -2.709000e+02
-0 9235     1.086800e+02 -3.095200e+02
-4 9235     -5.313600e+02 -4.909800e+02
-10 9235     6.440002e+01 -2.043900e+02
-15 9235     1.547300e+02 -2.678600e+02
-0 9236     1.222400e+02 -3.168600e+02
-7 9236     8.775000e+01 -1.826900e+02
-13 9236     5.124600e+02 -4.991700e+02
-0 9237     6.120900e+02 -3.498500e+02
-7 9237     5.363900e+02 -1.376300e+02
-15 9237     8.609399e+02 -2.615300e+02
-0 9238     7.636700e+02 -3.561100e+02
-7 9238     6.703600e+02 -1.176100e+02
-0 9239     7.783199e+02 -3.581000e+02
-7 9239     6.830601e+02 -1.165800e+02
-0 9240     -2.720900e+02 -4.327800e+02
-6 9240     -2.289300e+02 -6.339600e+02
-7 9240     -2.948000e+02 -3.834400e+02
-0 9241     7.839100e+02 -4.352300e+02
-7 9241     7.050100e+02 -1.834000e+02
-0 9242     4.605300e+02 -4.360300e+02
-6 9242     5.551801e+02 -3.379000e+02
-7 9242     4.194900e+02 -2.425200e+02
-0 9243     4.512100e+02 -4.516801e+02
-6 9243     5.554600e+02 -3.554399e+02
-7 9243     4.153500e+02 -2.582100e+02
-0 9244     4.397600e+02 -4.595699e+02
-2 9244     6.968000e+02 -3.976100e+02
-6 9244     5.487000e+02 -3.665100e+02
-7 9244     4.068300e+02 -2.675500e+02
-0 9245     7.483500e+02 -4.666100e+02
-7 9245     6.810800e+02 -2.174100e+02
-0 9246     -1.442000e+02 -4.773400e+02
-6 9246     -4.603003e+01 -6.192000e+02
-9 9246     4.689001e+01 -4.113600e+02
-12 9246     -5.977002e+01 -5.688400e+02
-0 9247     5.286400e+02 -5.053400e+02
-12 9247     6.972100e+02 -3.689600e+02
-0 9248     -7.807800e+02 -5.380800e+02
-4 9248     -5.303400e+02 1.679000e+02
-0 9249     4.688800e+02 -5.542000e+02
-7 9249     4.551500e+02 -3.483900e+02
-0 9250     7.383500e+02 -5.648199e+02
-7 9250     6.932400e+02 -3.058300e+02
-0 9251     -5.044200e+02 5.573600e+02
-11 9251     -2.867300e+02 -2.208900e+02
-13 9251     -2.048400e+02 1.957500e+02
-0 9252     -5.044200e+02 5.573600e+02
-2 9252     -8.006400e+02 3.372100e+02
-4 9252     8.034998e+01 -8.866998e+01
-5 9252     -7.732001e+01 -8.784003e+01
-8 9252     -5.760300e+02 2.486400e+02
-11 9252     -2.867300e+02 -2.208900e+02
-13 9252     -2.048400e+02 1.957500e+02
-0 9253     2.998700e+02 5.527900e+02
-3 9253     -1.761000e+02 -1.352002e+01
-13 9253     4.249100e+02 2.334100e+02
-0 9254     5.521700e+02 5.531700e+02
-2 9254     3.029700e+02 4.487700e+02
-3 9254     1.585400e+02 1.135600e+02
-6 9254     2.151200e+02 7.243200e+02
-8 9254     3.171200e+02 3.458700e+02
-9 9254     1.109600e+02 4.740600e+02
-11 9254     6.262000e+02 -1.908900e+02
-0 9255     5.804800e+02 5.491800e+02
-2 9255     3.334100e+02 4.543000e+02
-6 9255     2.510600e+02 7.271900e+02
-8 9255     3.418400e+02 3.503300e+02
-9 9255     1.365900e+02 4.797900e+02
-11 9255     6.517500e+02 -1.923000e+02
-13 9255     7.178300e+02 2.609400e+02
-0 9256     3.949500e+02 5.410000e+02
-2 9256     4.794000e+01 3.087800e+02
-3 9256     -9.894000e+01 -2.444000e+01
-5 9256     7.976500e+02 -9.552002e+01
-6 9256     -6.578003e+01 6.510300e+02
-8 9256     1.205300e+02 2.424500e+02
-9 9256     -1.128800e+02 3.433700e+02
-11 9256     5.016400e+02 -2.093500e+02
-12 9256     9.578003e+01 6.070100e+02
-13 9256     5.006200e+02 2.296100e+02
-14 9256     6.946700e+02 -1.740700e+02
-0 9257     7.217700e+02 5.125200e+02
-2 9257     5.329800e+02 5.130500e+02
-3 9257     3.800300e+02 1.770000e+02
-6 9257     4.717500e+02 7.313800e+02
-8 9257     5.023000e+02 3.927300e+02
-9 9257     3.086899e+02 5.346900e+02
-11 9257     7.772000e+02 -2.167700e+02
-0 9258     3.556300e+02 5.025500e+02
-2 9258     1.990997e+01 2.647200e+02
-3 9258     -1.261100e+02 -6.808002e+01
-5 9258     7.590500e+02 -1.388400e+02
-8 9258     9.734003e+01 2.078800e+02
-9 9258     -1.350600e+02 3.047400e+02
-11 9258     4.695400e+02 -2.471900e+02
-14 9258     6.602600e+02 -2.166600e+02
-0 9259     7.173400e+02 4.898500e+02
-2 9259     5.331000e+02 4.908900e+02
-3 9259     3.810200e+02 1.569000e+02
-6 9259     4.709800e+02 7.051600e+02
-8 9259     5.018900e+02 3.738600e+02
-9 9259     3.090601e+02 5.156500e+02
-0 9260     -1.848300e+02 4.849900e+02
-7 9260     -4.078400e+02 5.343200e+02
-0 9261     1.174800e+02 4.833300e+02
-7 9261     -1.113800e+02 5.628400e+02
-0 9262     7.623101e+02 4.804300e+02
-2 9262     5.816400e+02 4.988500e+02
-6 9262     5.246200e+02 7.064200e+02
-8 9262     5.410200e+02 3.790600e+02
-9 9262     3.482300e+02 5.228000e+02
-0 9263     7.492700e+02 4.745300e+02
-2 9263     5.682400e+02 4.882700e+02
-3 9263     4.137300e+02 1.544900e+02
-6 9263     5.114200e+02 6.972900e+02
-9 9263     3.389301e+02 5.153700e+02
-0 9264     8.242600e+02 4.750800e+02
-9 9264     3.962500e+02 5.385200e+02
-0 9265     3.007001e+01 4.731000e+02
-4 9265     -2.510010e+00 -3.792400e+02
-8 9265     -1.329100e+02 1.776400e+02
-12 9265     -2.631800e+02 4.863500e+02
-0 9266     6.301899e+02 4.630000e+02
-2 9266     4.513400e+02 4.392400e+02
-3 9266     3.057100e+02 1.072200e+02
-6 9266     3.745300e+02 6.555400e+02
-8 9266     4.344700e+02 3.318500e+02
-9 9266     2.406100e+02 4.690700e+02
-11 9266     7.058400e+02 -2.662500e+02
-13 9266     7.973500e+02 2.011700e+02
-0 9267     7.715100e+02 4.614500e+02
-2 9267     5.927300e+02 4.840000e+02
-6 9267     5.387500e+02 6.877900e+02
-0 9268     7.379200e+02 4.590200e+02
-2 9268     5.606700e+02 4.717900e+02
-3 9268     4.076801e+02 1.396700e+02
-6 9268     5.016200e+02 6.792800e+02
-9 9268     3.335500e+02 5.005600e+02
-0 9269     7.379200e+02 4.590200e+02
-2 9269     5.606700e+02 4.717900e+02
-3 9269     4.076801e+02 1.396700e+02
-6 9269     5.016200e+02 6.792800e+02
-9 9269     3.335500e+02 5.005600e+02
-0 9270     7.069600e+02 4.387600e+02
-2 9270     5.358700e+02 4.441700e+02
-3 9270     3.854500e+02 1.135100e+02
-6 9270     4.714500e+02 6.496300e+02
-8 9270     5.035300e+02 3.356300e+02
-9 9270     3.123700e+02 4.758200e+02
-13 9270     8.741500e+02 1.895800e+02
-0 9271     7.335500e+02 4.253100e+02
-2 9271     5.650200e+02 4.414900e+02
-3 9271     4.131600e+02 1.120700e+02
-6 9271     5.039301e+02 6.429500e+02
-8 9271     5.279000e+02 3.330100e+02
-9 9271     3.369700e+02 4.742700e+02
-0 9272     6.586100e+02 4.155300e+02
-2 9272     4.931801e+02 4.070600e+02
-3 9272     3.457600e+02 7.821002e+01
-6 9272     4.205000e+02 6.130800e+02
-8 9272     4.675900e+02 3.054000e+02
-9 9272     2.771200e+02 4.431900e+02
-11 9272     7.433000e+02 -3.077200e+02
-12 9272     5.026899e+02 6.208200e+02
-13 9272     8.306300e+02 1.658900e+02
-0 9273     6.498700e+02 4.058300e+02
-3 9273     3.405900e+02 6.590002e+01
-0 9274     5.464800e+02 3.967500e+02
-7 9274     3.339800e+02 5.461400e+02
-8 9274     3.432300e+02 2.259900e+02
-13 9274     7.036600e+02 1.325200e+02
-0 9275     5.688600e+02 3.827500e+02
-7 9275     3.578199e+02 5.365800e+02
-0 9276     -6.196700e+02 3.782400e+02
-4 9276     -9.840027e+00 -9.699707e-01
-11 9276     -3.952900e+02 -3.695800e+02
-0 9277     -6.999400e+02 3.635600e+02
-13 9277     -4.328600e+02 1.221002e+01
-14 9277     -4.566000e+02 -3.935000e+02
-0 9278     8.138199e+02 3.616700e+02
-3 9278     5.017500e+02 8.938000e+01
-7 9278     6.099800e+02 5.645100e+02
-9 9278     4.173000e+02 4.537400e+02
-12 9278     6.893101e+02 6.138500e+02
-0 9279     -7.082900e+02 3.555700e+02
-13 9279     -4.380100e+02 5.169983e+00
-14 9279     -4.639500e+02 -4.017800e+02
-0 9280     -7.082900e+02 3.555700e+02
-13 9280     -4.380100e+02 5.169983e+00
-14 9280     -4.639500e+02 -4.017800e+02
-0 9281     -5.770100e+02 3.558000e+02
-4 9281     -2.026001e+01 -2.828998e+01
-5 9281     -1.734000e+02 -2.967500e+02
-13 9281     -2.722000e+02 2.225000e+01
-14 9281     -2.593100e+02 -3.922900e+02
-0 9282     7.162100e+02 3.528100e+02
-3 9282     4.182900e+02 4.706000e+01
-7 9282     5.178199e+02 5.394000e+02
-0 9283     8.098300e+02 3.468500e+02
-2 9283     6.598900e+02 4.005800e+02
-7 9283     6.080200e+02 5.499800e+02
-9 9283     4.176200e+02 4.415500e+02
-12 9283     6.886100e+02 5.965100e+02
-0 9284     8.406000e+02 3.330400e+02
-7 9284     6.397600e+02 5.411200e+02
-9 9284     4.457400e+02 4.409400e+02
-0 9285     7.681700e+02 3.204700e+02
-2 9285     6.318700e+02 3.666800e+02
-6 9285     5.709200e+02 5.435900e+02
-9 9285     3.925000e+02 4.097200e+02
-12 9285     6.500200e+02 5.564500e+02
-0 9286     6.852000e+02 3.163600e+02
-2 9286     5.453800e+02 3.272400e+02
-3 9286     3.990699e+02 5.049988e+00
-7 9286     4.926600e+02 5.003800e+02
-9 9286     3.227900e+02 3.757200e+02
-10 9286     6.810100e+02 5.884600e+02
-0 9287     6.272000e+02 3.070400e+02
-2 9287     4.882600e+02 2.951400e+02
-6 9287     4.085800e+02 4.850000e+02
-7 9287     4.369200e+02 4.813500e+02
-8 9287     4.621100e+02 2.133400e+02
-9 9287     2.746500e+02 3.472100e+02
-10 9287     6.123300e+02 5.700800e+02
-13 9287     8.124500e+02 7.234998e+01
-0 9288     -4.520200e+02 3.031200e+02
-7 9288     -6.589300e+02 3.095600e+02
-0 9289     -1.938400e+02 3.009900e+02
-13 9289     3.777002e+01 -1.147998e+01
-14 9289     1.206600e+02 -4.543199e+02
-0 9290     -1.938400e+02 3.009900e+02
-13 9290     3.777002e+01 -1.147998e+01
-14 9290     1.206600e+02 -4.543199e+02
-0 9291     6.297500e+02 2.888700e+02
-2 9291     4.961100e+02 2.794500e+02
-3 9291     3.533400e+02 -4.128998e+01
-6 9291     4.169400e+02 4.670700e+02
-8 9291     4.685601e+02 2.004200e+02
-9 9291     2.815400e+02 3.345100e+02
-10 9291     6.167900e+02 5.491300e+02
-11 9291     7.454500e+02 -4.306900e+02
-12 9291     5.010500e+02 4.754200e+02
-13 9291     8.175200e+02 5.771997e+01
-0 9292     6.443199e+02 2.882900e+02
-2 9292     5.088500e+02 2.840900e+02
-3 9292     3.662000e+02 -3.665002e+01
-6 9292     4.313900e+02 4.700200e+02
-7 9292     4.547900e+02 4.666100e+02
-8 9292     4.801000e+02 2.040900e+02
-10 9292     6.318400e+02 5.493400e+02
-12 9292     5.157100e+02 4.787200e+02
-13 9292     8.295000e+02 5.870001e+01
-0 9293     5.729700e+02 2.885800e+02
-2 9293     4.341300e+02 2.554000e+02
-3 9293     2.941300e+02 -6.653003e+01
-6 9293     3.466900e+02 4.490300e+02
-7 9293     3.855300e+02 4.545200e+02
-8 9293     4.176300e+02 1.824500e+02
-9 9293     2.289900e+02 3.118300e+02
-10 9293     5.494399e+02 5.420700e+02
-13 9293     7.612200e+02 5.087000e+01
-0 9294     6.516400e+02 2.758400e+02
-2 9294     5.222500e+02 2.764800e+02
-3 9294     3.781400e+02 -4.347998e+01
-6 9294     4.460000e+02 4.599000e+02
-7 9294     4.647300e+02 4.560800e+02
-8 9294     4.898400e+02 1.973400e+02
-9 9294     3.040800e+02 3.325200e+02
-10 9294     6.433900e+02 5.359000e+02
-11 9294     7.719800e+02 -4.444400e+02
-13 9294     8.426801e+02 4.856000e+01
-0 9295     7.289000e+02 2.705900e+02
-2 9295     6.024100e+02 3.022000e+02
-6 9295     5.382500e+02 4.764500e+02
-7 9295     5.408300e+02 4.639600e+02
-8 9295     5.575200e+02 2.156900e+02
-9 9295     3.711801e+02 3.567500e+02
-10 9295     7.362400e+02 5.380700e+02
-0 9296     -5.260600e+02 2.550600e+02
-13 9296     -2.350900e+02 -6.584003e+01
-14 9296     -2.227500e+02 -5.062900e+02
-0 9297     6.587000e+01 2.513700e+02
-6 9297     -2.970600e+02 2.320300e+02
-11 9297     2.140800e+02 -4.903000e+02
-13 9297     2.770400e+02 -3.558002e+01
-14 9297     4.209800e+02 -4.983000e+02
-0 9298     6.164600e+02 1.819100e+02
-6 9298     4.275500e+02 3.450700e+02
-7 9298     4.424200e+02 3.588200e+02
-10 9298     6.081899e+02 4.193800e+02
-12 9298     5.114800e+02 3.544300e+02
-15 9298     8.092500e+02 4.761200e+02
-0 9299     6.164600e+02 1.819100e+02
-6 9299     4.275500e+02 3.450700e+02
-10 9299     6.081899e+02 4.193800e+02
-12 9299     5.114800e+02 3.544300e+02
-0 9300     6.001899e+02 1.814300e+02
-7 9300     4.263300e+02 3.542500e+02
-10 9300     5.881000e+02 4.165100e+02
-15 9300     7.861200e+02 4.724600e+02
-0 9301     8.459000e+02 1.798900e+02
-2 9301     7.421801e+02 2.680700e+02
-3 9301     5.872700e+02 -4.483002e+01
-7 9301     6.640300e+02 3.977100e+02
-9 9301     4.889700e+02 3.318100e+02
-0 9302     7.057700e+02 1.663600e+02
-3 9302     4.631000e+02 -1.166400e+02
-7 9302     5.324399e+02 3.603200e+02
-10 9302     7.156400e+02 4.113300e+02
-12 9302     6.141700e+02 3.691600e+02
-0 9303     7.200100e+02 1.675700e+02
-3 9303     4.781700e+02 -1.073000e+02
-7 9303     5.458900e+02 3.646800e+02
-8 9303     5.753800e+02 1.363800e+02
-9 9303     3.947200e+02 2.758600e+02
-10 9303     7.324000e+02 4.139200e+02
-0 9304     -2.649700e+02 1.631700e+02
-7 9304     -4.316100e+02 1.967400e+02
-0 9305     7.300300e+02 1.606000e+02
-2 9305     6.352200e+02 2.032800e+02
-3 9305     4.898101e+02 -1.090800e+02
-7 9305     5.570900e+02 3.592700e+02
-10 9305     7.448700e+02 4.067500e+02
-0 9306     8.609500e+02 1.339900e+02
-2 9306     7.688600e+02 2.320500e+02
-7 9306     6.833000e+02 3.567200e+02
-0 9307     6.704800e+02 1.272800e+02
-2 9307     5.829900e+02 1.408200e+02
-3 9307     4.429200e+02 -1.700600e+02
-6 9307     5.070300e+02 3.030900e+02
-7 9307     5.033800e+02 3.155300e+02
-8 9307     5.384100e+02 8.410001e+01
-9 9307     3.583600e+02 2.196400e+02
-10 9307     6.760900e+02 3.600800e+02
-12 9307     5.882200e+02 3.122400e+02
-0 9308     8.411200e+02 1.265700e+02
-2 9308     7.530300e+02 2.184200e+02
-3 9308     6.005100e+02 -9.094000e+01
-7 9308     6.663900e+02 3.466400e+02
-9 9308     4.989700e+02 2.904700e+02
-0 9309     6.955601e+02 1.107200e+02
-2 9309     6.129700e+02 1.366200e+02
-0 9310     8.036700e+02 9.263000e+01
-7 9310     6.356801e+02 3.081400e+02
-9 9310     4.790601e+02 2.496700e+02
-12 9310     7.475400e+02 3.265500e+02
-0 9311     -9.760010e+00 8.404999e+01
-2 9311     8.801001e+01 8.963000e+01
-3 9311     -2.580017e+00 -2.260500e+02
-5 9311     6.081500e+02 -5.767100e+02
-6 9311     -9.160999e+01 1.037400e+02
-7 9311     -1.129100e+02 1.929200e+02
-8 9311     1.060600e+02 2.942999e+01
-10 9311     -1.137100e+02 2.380300e+02
-12 9311     -6.840002e+01 1.590600e+02
-13 9311     3.465000e+02 -1.528900e+02
-15 9311     -5.826001e+01 2.505100e+02
-0 9312     -9.760010e+00 8.404999e+01
-2 9312     8.801001e+01 8.963000e+01
-4 9312     -2.151700e+02 -4.032200e+02
-5 9312     6.081500e+02 -5.767100e+02
-6 9312     -9.160999e+01 1.037400e+02
-7 9312     -1.129100e+02 1.929200e+02
-8 9312     1.060600e+02 2.942999e+01
-10 9312     -1.137100e+02 2.380300e+02
-12 9312     -6.840002e+01 1.590600e+02
-13 9312     3.465000e+02 -1.528900e+02
-15 9312     -5.826001e+01 2.505100e+02
-0 9313     8.398700e+02 8.100000e+01
-2 9313     7.654399e+02 1.759000e+02
-7 9313     6.711700e+02 3.035400e+02
-12 9313     7.911400e+02 3.260900e+02
-0 9314     8.561100e+02 7.166998e+01
-2 9314     7.844399e+02 1.733500e+02
-3 9314     6.328900e+02 -1.316400e+02
-7 9314     6.878000e+02 2.969200e+02
-9 9314     5.256500e+02 2.537400e+02
-12 9314     8.106300e+02 3.218500e+02
-0 9315     -3.952400e+02 6.115002e+01
-13 9315     -8.484003e+01 -2.262200e+02
-0 9316     8.580100e+02 5.098999e+01
-2 9316     7.912400e+02 1.551900e+02
-3 9316     6.413900e+02 -1.483600e+02
-9 9316     5.315601e+02 2.391700e+02
-12 9316     8.172200e+02 3.013100e+02
-0 9317     6.871000e+02 4.546002e+01
-3 9317     4.864600e+02 -2.409800e+02
-6 9317     5.483600e+02 2.198100e+02
-9 9317     3.949800e+02 1.580600e+02
-12 9317     6.271700e+02 2.278800e+02
-0 9318     6.871000e+02 4.546002e+01
-9 9318     3.949800e+02 1.580600e+02
-0 9319     8.297000e+02 4.337000e+01
-2 9319     7.672500e+02 1.364400e+02
-3 9319     6.195100e+02 -1.674000e+02
-9 9319     5.123800e+02 2.221100e+02
-12 9319     7.881700e+02 2.842900e+02
-0 9320     6.501000e+02 3.765002e+01
-2 9320     5.860800e+02 4.104999e+01
-3 9320     4.510400e+02 -2.662800e+02
-6 9320     5.062000e+02 1.972900e+02
-7 9320     4.953000e+02 2.255300e+02
-8 9320     5.403600e+02 2.959991e+00
-10 9320     6.590000e+02 2.529400e+02
-12 9320     5.872100e+02 2.070400e+02
-0 9321     -3.556300e+02 1.095001e+01
-7 9321     -4.909500e+02 3.282001e+01
-0 9322     -1.654000e+02 6.900024e+00
-7 9322     -2.685000e+02 8.134000e+01
-10 9322     -2.876500e+02 1.310400e+02
-12 9322     -2.558200e+02 3.530029e+00
-13 9322     1.955300e+02 -2.386800e+02
-0 9323     7.913700e+02 3.510010e+00
-2 9323     7.432700e+02 7.944000e+01
-7 9323     6.362200e+02 2.208100e+02
-12 9323     7.574301e+02 2.255000e+02
-0 9324     -4.235500e+02 -5.070007e+00
-13 9324     -9.472998e+01 -2.843500e+02
-0 9325     -3.542100e+02 -7.789978e+00
-7 9325     -4.854000e+02 1.467999e+01
-15 9325     -5.054000e+02 7.514001e+01
-0 9326     -4.252300e+02 -1.901001e+01
-2 9326     -5.468700e+02 -2.971800e+02
-13 9326     -9.265997e+01 -2.964000e+02
-15 9326     -5.991300e+02 5.173999e+01
-0 9327     2.102600e+02 -1.906000e+01
-2 9327     3.629000e+02 5.254999e+01
-3 9327     2.590800e+02 -2.545000e+02
-7 9327     1.269200e+02 1.296700e+02
-8 9327     3.299000e+02 -4.579987e+00
-9 9327     1.906400e+02 1.418900e+02
-10 9327     1.520300e+02 1.407500e+02
-12 9327     2.231200e+02 1.100100e+02
-13 9327     5.587900e+02 -2.208800e+02
-15 9327     2.537000e+02 1.400900e+02
-0 9328     8.611200e+02 -2.171997e+01
-2 9328     8.182400e+02 8.876001e+01
-3 9328     6.712600e+02 -2.109600e+02
-7 9328     7.045500e+02 2.100900e+02
-9 9328     5.551500e+02 1.843200e+02
-0 9329     7.120699e+02 -5.356000e+01
-7 9329     5.673800e+02 1.505600e+02
-10 9329     7.381899e+02 1.543000e+02
-0 9330     7.120699e+02 -5.356000e+01
-2 9330     6.750500e+02 -1.856000e+01
-3 9330     5.428500e+02 -3.210100e+02
-7 9330     5.673800e+02 1.505600e+02
-10 9330     7.381899e+02 1.543000e+02
-0 9331     6.962100e+02 -6.484998e+01
-2 9331     6.655900e+02 -3.952002e+01
-3 9331     5.336500e+02 -3.421100e+02
-7 9331     5.538800e+02 1.364300e+02
-0 9332     7.476300e+02 -7.002002e+01
-2 9332     7.218199e+02 -1.678998e+01
-7 9332     6.043500e+02 1.418000e+02
-0 9333     7.476300e+02 -7.002002e+01
-2 9333     7.218199e+02 -1.678998e+01
-7 9333     6.043500e+02 1.418000e+02
-10 9333     7.821200e+02 1.392900e+02
-12 9333     7.295800e+02 1.266600e+02
-0 9334     -4.531700e+02 -7.204999e+01
-7 9334     -5.736400e+02 -6.584998e+01
-13 9334     -1.064400e+02 -3.437000e+02
-0 9335     -3.998400e+02 -8.198999e+01
-7 9335     -5.152600e+02 -6.578998e+01
-8 9335     -3.366000e+02 -3.029300e+02
-15 9335     -5.585500e+02 -3.065997e+01
-0 9336     -4.222800e+02 -9.059003e+01
-13 9336     -7.250000e+01 -3.593200e+02
-0 9337     2.304200e+02 -9.751001e+01
-2 9337     4.043000e+02 -2.996997e+01
-3 9337     3.023900e+02 -3.317500e+02
-6 9337     2.407400e+02 -1.977002e+01
-7 9337     1.574900e+02 5.428998e+01
-8 9337     3.637200e+02 -7.314001e+01
-10 9337     1.838100e+02 5.233002e+01
-13 9337     5.831100e+02 -2.889100e+02
-15 9337     2.918700e+02 3.566998e+01
-0 9338     -5.598999e+01 -1.041100e+02
-7 9338     -1.240100e+02 -1.140015e+00
-15 9338     -9.571002e+01 -1.173999e+01
-0 9339     -4.335300e+02 -1.108600e+02
-2 9339     -4.931900e+02 -3.803700e+02
-13 9339     -7.776001e+01 -3.751100e+02
-0 9340     -4.034003e+01 -1.147800e+02
-7 9340     -1.058200e+02 -8.770020e+00
-0 9341     -4.497200e+02 -1.146100e+02
-2 9341     -5.132300e+02 -3.893700e+02
-7 9341     -5.591100e+02 -1.072300e+02
-8 9341     -3.723200e+02 -3.397300e+02
-13 9341     -9.275000e+01 -3.812800e+02
-0 9342     7.548101e+02 -1.181400e+02
-2 9342     7.428101e+02 -6.160999e+01
-3 9342     6.106801e+02 -3.596400e+02
-7 9342     6.171801e+02 9.779001e+01
-9 9342     4.970601e+02 5.728998e+01
-10 9342     7.939100e+02 8.370001e+01
-12 9342     7.478500e+02 7.667999e+01
-0 9343     7.398800e+02 -1.222900e+02
-7 9343     6.025900e+02 9.007001e+01
-0 9344     1.829700e+02 -1.280200e+02
-10 9344     1.312800e+02 1.184998e+01
-13 9344     5.476400e+02 -3.184300e+02
-15 9344     2.308500e+02 -1.212000e+01
-0 9345     8.369600e+02 -1.291400e+02
-7 9345     6.958000e+02 1.031800e+02
-9 9345     5.664000e+02 8.642999e+01
-0 9346     -5.112000e+01 -1.406900e+02
-7 9346     -1.134000e+02 -3.778003e+01
-15 9346     -8.408002e+01 -6.015997e+01
-0 9347     -9.246997e+01 -1.501100e+02
-6 9347     -8.378000e+01 -1.876700e+02
-7 9347     -1.520800e+02 -5.390997e+01
-10 9347     -1.845400e+02 -4.282001e+01
-12 9347     -8.490997e+01 -1.326100e+02
-15 9347     -1.399500e+02 -7.860999e+01
-0 9348     -4.542100e+02 -1.638000e+02
-7 9348     -5.517300e+02 -1.560300e+02
-15 9348     -6.198000e+02 -1.485100e+02
-0 9349     1.326600e+02 -1.645100e+02
-10 9349     7.738000e+01 -3.553003e+01
-13 9349     5.139399e+02 -3.525000e+02
-15 9349     1.665900e+02 -6.884998e+01
-0 9350     1.326600e+02 -1.645100e+02
-10 9350     7.738000e+01 -3.553003e+01
-13 9350     5.139399e+02 -3.525000e+02
-15 9350     1.665900e+02 -6.884998e+01
-0 9351     5.097600e+02 -1.650300e+02
-7 9351     4.008900e+02 1.253998e+01
-0 9352     8.526899e+02 -1.962600e+02
-3 9352     7.329399e+02 -3.782400e+02
-9 9352     5.978000e+02 3.983002e+01
-0 9353     1.622700e+02 -2.179200e+02
-10 9353     1.166300e+02 -9.421997e+01
-13 9353     5.488400e+02 -3.980800e+02
-15 9353     2.133500e+02 -1.366200e+02
-0 9354     1.940100e+02 -2.269100e+02
-10 9354     1.541500e+02 -1.004900e+02
-13 9354     5.781300e+02 -4.036800e+02
-15 9354     2.582100e+02 -1.446100e+02
-0 9355     3.221700e+02 -2.406900e+02
-2 9355     5.260699e+02 -1.718600e+02
-6 9355     3.706900e+02 -1.524900e+02
-7 9355     2.654200e+02 -7.306000e+01
-8 9355     4.650200e+02 -1.909800e+02
-9 9355     3.326100e+02 -3.533002e+01
-10 9355     3.030900e+02 -1.019900e+02
-12 9355     4.026300e+02 -1.224900e+02
-15 9355     4.383101e+02 -1.472000e+02
-0 9356     -7.188000e+01 -2.726500e+02
-7 9356     -1.167800e+02 -1.773800e+02
-10 9356     -1.465000e+02 -1.800600e+02
-15 9356     -9.189001e+01 -2.398100e+02
-0 9357     3.156000e+02 -2.748700e+02
-7 9357     2.614900e+02 -1.096900e+02
-10 9357     2.986500e+02 -1.417200e+02
-12 9357     3.979800e+02 -1.731000e+02
-13 9357     6.690100e+02 -4.488900e+02
-15 9357     4.348199e+02 -1.946900e+02
-0 9358     3.426200e+02 -2.913100e+02
-6 9358     3.889600e+02 -2.209301e+02
-8 9358     4.781000e+02 -2.563500e+02
-9 9358     3.455300e+02 -1.067800e+02
-15 9358     4.746300e+02 -2.147000e+02
-0 9359     -1.882001e+01 -2.961900e+02
-2 9359     2.122600e+02 -3.388200e+02
-4 9359     -4.936000e+02 -3.809000e+02
-6 9359     3.009003e+01 -3.458400e+02
-7 9359     -5.763000e+01 -1.911900e+02
-8 9359     1.958300e+02 -3.248000e+02
-9 9359     8.534003e+01 -1.867300e+02
-10 9359     -8.314001e+01 -2.022200e+02
-12 9359     3.437000e+01 -3.001500e+02
-13 9359     3.774399e+02 -4.952800e+02
-15 9359     -1.813000e+01 -2.660700e+02
-0 9360     -3.301001e+01 -3.304900e+02
-4 9360     -5.189600e+02 -3.626700e+02
-7 9360     -6.758002e+01 -2.285900e+02
-10 9360     -9.603003e+01 -2.428100e+02
-12 9360     1.928998e+01 -3.560100e+02
-13 9360     3.619000e+02 -5.306801e+02
-15 9360     -3.248999e+01 -3.130800e+02
-0 9361     7.146400e+02 -3.453200e+02
-12 9361     8.011700e+02 -1.609300e+02
-0 9362     7.516600e+02 -3.533100e+02
-7 9362     6.596200e+02 -1.168200e+02
-0 9363     2.035200e+02 -3.569700e+02
-2 9363     4.574100e+02 -3.391300e+02
-8 9363     4.015400e+02 -3.301900e+02
-9 9363     2.807800e+02 -1.776900e+02
-10 9363     1.797300e+02 -2.512500e+02
-13 9363     5.823500e+02 -5.307900e+02
-0 9364     4.877600e+02 -4.210200e+02
-7 9364     4.409200e+02 -2.246300e+02
-0 9365     4.444200e+02 -4.449600e+02
-6 9365     5.452000e+02 -3.515800e+02
-0 9366     4.674500e+02 -4.442400e+02
-7 9366     4.290699e+02 -2.483200e+02
-0 9367     5.436000e+02 -4.492100e+02
-12 9367     6.849000e+02 -3.091000e+02
-0 9368     5.573101e+02 -4.525699e+02
-12 9368     7.010900e+02 -3.078500e+02
-0 9369     8.415400e+02 -4.606200e+02
-7 9369     7.576600e+02 -1.955400e+02
-0 9370     8.415400e+02 -4.606200e+02
-7 9370     7.576600e+02 -1.955400e+02
-0 9371     7.608500e+02 -4.691500e+02
-7 9371     6.925900e+02 -2.168000e+02
-0 9372     -1.850300e+02 -4.696200e+02
-7 9372     -1.943300e+02 -3.997500e+02
-0 9373     -1.395600e+02 -4.812400e+02
-7 9373     -1.446200e+02 -4.018200e+02
-9 9373     4.689001e+01 -4.113600e+02
-0 9374     -1.420000e+02 -5.171200e+02
-4 9374     -6.533100e+02 -2.721800e+02
-6 9374     -1.740997e+01 -6.595601e+02
-9 9374     7.507001e+01 -4.366500e+02
-0 9375     7.523101e+02 -5.411801e+02
-7 9375     7.001000e+02 -2.817400e+02
-9 9375     7.102400e+02 -1.802300e+02
-0 9376     1.697998e+01 -5.527100e+02
-7 9376     2.765997e+01 -4.387000e+02
-0 9377     1.697998e+01 -5.527100e+02
-7 9377     2.765997e+01 -4.387000e+02
-0 9378     4.227900e+02 -5.566200e+02
-2 9378     7.559600e+02 -4.742700e+02
-7 9378     4.129301e+02 -3.593600e+02
-0 9379     7.275500e+02 -5.672200e+02
-7 9379     6.850000e+02 -3.106400e+02
-0 9380     7.610601e+02 5.036300e+02
-2 9380     5.723000e+02 5.186000e+02
-3 9380     4.167400e+02 1.830100e+02
-6 9380     5.198600e+02 7.293400e+02
-0 9381     7.935100e+02 4.664400e+02
-2 9381     6.119200e+02 4.962700e+02
-3 9381     4.540601e+02 1.625400e+02
-8 9381     5.684000e+02 3.776400e+02
-9 9381     3.757600e+02 5.222700e+02
-0 9382     5.876300e+02 4.388100e+02
-2 9382     3.684700e+02 3.563300e+02
-3 9382     2.239399e+02 2.725000e+01
-13 9382     7.370400e+02 1.716200e+02
-0 9383     -5.279500e+02 4.138900e+02
-10 9383     -7.822500e+02 5.907000e+02
-14 9383     -2.027800e+02 -3.311100e+02
-0 9384     6.375800e+02 4.153600e+02
-2 9384     4.720100e+02 3.948400e+02
-3 9384     3.262900e+02 6.684003e+01
-6 9384     3.951600e+02 6.017400e+02
-8 9384     4.501000e+02 2.960800e+02
-9 9384     2.587000e+02 4.331100e+02
-12 9384     4.793300e+02 6.076100e+02
-13 9384     8.101600e+02 1.594500e+02
-0 9385     -5.916700e+02 4.023800e+02
-13 9385     -2.811100e+02 6.196002e+01
-14 9385     -2.664200e+02 -3.429400e+02
-0 9386     5.750000e+02 3.945700e+02
-2 9386     3.653101e+02 3.102800e+02
-3 9386     2.215601e+02 -1.590002e+01
-7 9386     3.619301e+02 5.484000e+02
-8 9386     3.666800e+02 2.317800e+02
-13 9386     7.293600e+02 1.340600e+02
-0 9387     7.915900e+02 3.906100e+02
-2 9387     6.306400e+02 4.341500e+02
-3 9387     4.743800e+02 1.057600e+02
-6 9387     5.785500e+02 6.252800e+02
-8 9387     5.827700e+02 3.269800e+02
-9 9387     3.929500e+02 4.696300e+02
-0 9388     -5.294200e+02 3.873800e+02
-4 9388     -8.260010e+00 -5.614001e+01
-5 9388     -1.258300e+02 -2.655100e+02
-10 9388     -7.787700e+02 5.560900e+02
-11 9388     -3.213800e+02 -3.630600e+02
-0 9389     6.552700e+02 3.873000e+02
-2 9389     4.973700e+02 3.804600e+02
-3 9389     3.509000e+02 5.362000e+01
-6 9389     4.235900e+02 5.810800e+02
-7 9389     4.544600e+02 5.638500e+02
-8 9389     4.710000e+02 2.830000e+02
-9 9389     2.811600e+02 4.202000e+02
-12 9389     5.062900e+02 5.886200e+02
-13 9389     8.311100e+02 1.421900e+02
-0 9390     6.552700e+02 3.873000e+02
-2 9390     4.973700e+02 3.804600e+02
-3 9390     3.509000e+02 5.362000e+01
-6 9390     4.235900e+02 5.810800e+02
-7 9390     4.544600e+02 5.638500e+02
-8 9390     4.710000e+02 2.830000e+02
-11 9390     7.460400e+02 -3.342400e+02
-12 9390     5.062900e+02 5.886200e+02
-13 9390     8.311100e+02 1.421900e+02
-0 9391     -4.632300e+02 3.532100e+02
-7 9391     -6.776500e+02 3.627600e+02
-15 9391     -7.105100e+02 5.592700e+02
-0 9392     5.824100e+02 3.046500e+02
-2 9392     4.406000e+02 2.747600e+02
-7 9392     3.931300e+02 4.708300e+02
-8 9392     4.231500e+02 1.976200e+02
-9 9392     2.356400e+02 3.298500e+02
-10 9392     5.599700e+02 5.625900e+02
-0 9393     7.837400e+02 2.890500e+02
-2 9393     6.529600e+02 3.398100e+02
-3 9393     4.973300e+02 2.044000e+01
-10 9393     8.033400e+02 5.661200e+02
-0 9394     6.818300e+02 2.855500e+02
-2 9394     5.509500e+02 2.977400e+02
-3 9394     4.050000e+02 -2.245001e+01
-6 9394     4.795601e+02 4.794500e+02
-7 9394     4.937100e+02 4.707500e+02
-8 9394     5.138500e+02 2.144800e+02
-9 9394     3.278101e+02 3.516200e+02
-10 9394     6.796400e+02 5.507100e+02
-12 9394     5.610800e+02 4.888200e+02
-0 9395     6.623800e+02 2.672700e+02
-2 9395     5.359000e+02 2.725000e+02
-3 9395     3.914800e+02 -4.659998e+01
-6 9395     4.611100e+02 4.537500e+02
-7 9395     4.768101e+02 4.492500e+02
-8 9395     5.011801e+02 1.937900e+02
-9 9395     3.158500e+02 3.295500e+02
-10 9395     6.569700e+02 5.265000e+02
-12 9395     5.429800e+02 4.627100e+02
-13 9395     8.519500e+02 4.339001e+01
-0 9396     6.901100e+02 2.489400e+02
-2 9396     5.701500e+02 2.672200e+02
-3 9396     4.250400e+02 -5.057001e+01
-6 9396     4.992000e+02 4.430200e+02
-7 9396     5.071600e+02 4.365600e+02
-8 9396     5.295500e+02 1.886000e+02
-9 9396     3.451100e+02 3.262200e+02
-10 9396     6.912700e+02 5.081400e+02
-12 9396     5.805100e+02 4.529700e+02
-0 9397     -7.901001e+01 2.293000e+02
-7 9397     -2.572500e+02 2.878700e+02
-0 9398     -5.478000e+02 2.212100e+02
-13 9398     -2.569300e+02 -9.658002e+01
-14 9398     -2.530200e+02 -5.440000e+02
-0 9399     6.494600e+02 2.212500e+02
-2 9399     5.349900e+02 2.233800e+02
-3 9399     3.928700e+02 -9.358002e+01
-6 9399     4.579200e+02 3.999900e+02
-7 9399     4.706801e+02 4.024200e+02
-8 9399     5.000900e+02 1.541900e+02
-9 9399     3.164600e+02 2.881700e+02
-10 9399     6.448900e+02 4.692100e+02
-12 9399     5.403700e+02 4.100800e+02
-13 9399     8.454600e+02 2.750000e+00
-15 9399     8.523900e+02 5.369900e+02
-0 9400     6.494600e+02 2.212500e+02
-2 9400     5.349900e+02 2.233800e+02
-6 9400     4.579200e+02 3.999900e+02
-7 9400     4.706801e+02 4.024200e+02
-8 9400     5.000900e+02 1.541900e+02
-9 9400     3.164600e+02 2.881700e+02
-10 9400     6.448900e+02 4.692100e+02
-13 9400     8.454600e+02 2.750000e+00
-15 9400     8.523900e+02 5.369900e+02
-0 9401     5.446500e+02 2.169500e+02
-7 9401     3.667100e+02 3.802800e+02
-0 9402     7.706600e+02 1.975000e+02
-2 9402     6.610300e+02 2.525200e+02
-3 9402     5.143300e+02 -6.232001e+01
-10 9402     7.903900e+02 4.555800e+02
-0 9403     -1.758100e+02 1.749300e+02
-7 9403     -3.435500e+02 2.225700e+02
-0 9404     7.602800e+02 1.739300e+02
-7 9404     5.792500e+02 3.787000e+02
-10 9404     7.741300e+02 4.295600e+02
-0 9405     -2.517600e+02 1.651000e+02
-7 9405     -4.198400e+02 2.008400e+02
-0 9406     6.257300e+02 1.626100e+02
-2 9406     5.246600e+02 1.561700e+02
-3 9406     3.853800e+02 -1.577600e+02
-6 9406     4.430200e+02 3.273500e+02
-7 9406     4.547500e+02 3.418600e+02
-8 9406     4.902300e+02 9.864001e+01
-9 9406     3.084301e+02 2.309600e+02
-10 9406     6.207400e+02 3.980300e+02
-12 9406     5.267500e+02 3.367900e+02
-13 9406     8.287300e+02 -5.107001e+01
-15 9406     8.250800e+02 4.504200e+02
-0 9407     7.477100e+02 1.628700e+02
-7 9407     5.729800e+02 3.648500e+02
-10 9407     7.654100e+02 4.119700e+02
-0 9408     8.199000e+02 1.411000e+02
-2 9408     7.291300e+02 2.229500e+02
-3 9408     5.785100e+02 -8.759998e+01
-7 9408     6.449000e+02 3.569600e+02
-9 9408     4.788101e+02 2.940000e+02
-0 9409     7.433600e+02 1.028000e+02
-2 9409     6.640000e+02 1.534300e+02
-3 9409     5.193000e+02 -1.550000e+02
-7 9409     5.768000e+02 3.069900e+02
-9 9409     4.267300e+02 2.332000e+02
-10 9409     7.644700e+02 3.400500e+02
-12 9409     6.757600e+02 3.163200e+02
-0 9410     5.477002e+01 7.323999e+01
-2 9410     1.793400e+02 1.069800e+02
-3 9410     8.453998e+01 -2.073900e+02
-4 9410     -2.301000e+02 -4.571801e+02
-5 9410     6.999301e+02 -5.871300e+02
-6 9410     2.600098e-01 1.160900e+02
-7 9410     -4.357001e+01 1.948500e+02
-8 9410     1.799900e+02 4.175000e+01
-12 9410     1.934003e+01 1.703900e+02
-0 9411     5.994900e+02 3.588000e+01
-6 9411     4.453900e+02 1.742200e+02
-7 9411     4.465300e+02 2.156600e+02
-10 9411     6.005900e+02 2.480300e+02
-13 9411     8.165500e+02 -1.668100e+02
-15 9411     8.028500e+02 2.691100e+02
-0 9412     1.734998e+01 2.738000e+01
-4 9412     -2.512300e+02 -4.219200e+02
-8 9412     1.564400e+02 -2.429993e+00
-13 9412     3.816899e+02 -1.959500e+02
-15 9412     -1.504999e+01 1.768700e+02
-0 9413     8.038800e+02 2.814001e+01
-2 9413     7.472300e+02 1.093000e+02
-3 9413     6.031300e+02 -1.941800e+02
-7 9413     6.441600e+02 2.466300e+02
-9 9413     4.964800e+02 1.989700e+02
-12 9413     7.639000e+02 2.565300e+02
-0 9414     -8.105500e+02 2.342999e+01
-13 9414     -4.593000e+02 -2.825800e+02
-0 9415     6.569800e+02 2.282001e+01
-3 9415     4.597100e+02 -2.781500e+02
-7 9415     5.022500e+02 2.125500e+02
-10 9415     6.649900e+02 2.371300e+02
-0 9416     -3.360600e+02 -4.159973e+00
-4 9416     -2.446700e+02 -1.404400e+02
-7 9416     -4.661600e+02 2.292999e+01
-15 9416     -4.795400e+02 8.501999e+01
-0 9417     -6.634003e+01 -1.648999e+01
-7 9417     -1.543800e+02 8.050000e+01
-10 9417     -1.689100e+02 1.148200e+02
-0 9418     -6.634003e+01 -1.648999e+01
-7 9418     -1.543800e+02 8.050000e+01
-10 9418     -1.689100e+02 1.148200e+02
-0 9419     -3.590200e+02 -2.370001e+01
-7 9419     -4.860700e+02 -1.280029e+00
-13 9419     -3.162000e+01 -2.969100e+02
-15 9419     -5.079800e+02 5.406000e+01
-0 9420     2.919399e+02 -7.979999e+01
-10 9420     2.520800e+02 7.846002e+01
-13 9420     6.263000e+02 -2.719700e+02
-15 9420     3.751801e+02 6.737000e+01
-0 9421     -4.066100e+02 -9.709003e+01
-7 9421     -5.176900e+02 -8.158002e+01
-15 9421     -5.619400e+02 -4.940997e+01
-0 9422     -1.471800e+02 -1.049100e+02
-7 9422     -2.187300e+02 -2.153003e+01
-10 9422     -2.532600e+02 4.419983e+00
-15 9422     -2.190700e+02 -2.457001e+01
-0 9423     -4.304600e+02 -1.255600e+02
-7 9423     -5.362200e+02 -1.136100e+02
-0 9424     3.497100e+02 -1.992500e+02
-10 9424     3.299500e+02 -5.214001e+01
-12 9424     4.279100e+02 -5.751001e+01
-15 9424     4.683400e+02 -8.845001e+01
-0 9425     2.293300e+02 -2.251400e+02
-2 9425     4.738700e+02 -1.386700e+02
-3 9425     3.781700e+02 -4.334301e+02
-6 9425     3.005700e+02 -1.501600e+02
-7 9425     1.835900e+02 -6.840002e+01
-8 9425     4.159800e+02 -1.673200e+02
-10 9425     1.944200e+02 -9.471997e+01
-12 9425     3.179399e+02 -1.138800e+02
-15 9425     3.056000e+02 -1.375800e+02
-0 9426     1.213900e+02 -2.304900e+02
-6 9426     1.969600e+02 -1.908101e+02
-7 9426     8.145001e+01 -9.159998e+01
-12 9426     2.010800e+02 -1.503400e+02
-15 9426     1.599500e+02 -1.589100e+02
-0 9427     -2.963500e+02 -2.493200e+02
-13 9427     8.209003e+01 -4.884800e+02
-15 9427     -3.943800e+02 -2.421200e+02
-0 9428     -1.440002e+00 -2.506500e+02
-4 9428     -4.583900e+02 -4.031100e+02
-9 9428     1.038100e+02 -1.133100e+02
-15 9428     -3.169983e+00 -2.022100e+02
-0 9429     2.627002e+01 -2.754200e+02
-2 9429     2.709800e+02 -2.780700e+02
-4 9429     -4.832300e+02 -4.233900e+02
-7 9429     -1.222998e+01 -1.590900e+02
-8 9429     2.446400e+02 -2.729400e+02
-9 9429     1.317600e+02 -1.340400e+02
-10 9429     -3.340002e+01 -1.738800e+02
-13 9429     4.243300e+02 -4.669301e+02
-15 9429     3.869000e+01 -2.325800e+02
-0 9430     2.627002e+01 -2.754200e+02
-4 9430     -4.832300e+02 -4.233900e+02
-6 9430     8.778003e+01 -2.917000e+02
-8 9430     2.446400e+02 -2.729400e+02
-10 9430     -3.340002e+01 -1.738800e+02
-12 9430     9.057001e+01 -2.483100e+02
-15 9430     3.869000e+01 -2.325800e+02
-0 9431     3.326700e+02 -2.996500e+02
-9 9431     3.428199e+02 -1.128500e+02
-10 9431     3.208199e+02 -1.681200e+02
-13 9431     6.837200e+02 -4.729500e+02
-15 9431     4.619301e+02 -2.255300e+02
-0 9432     -4.771997e+01 -3.302400e+02
-4 9432     -5.138200e+02 -3.538300e+02
-6 9432     2.289978e+00 -3.986600e+02
-7 9432     -8.258002e+01 -2.318000e+02
-10 9432     -1.126600e+02 -2.451000e+02
-12 9432     5.580017e+00 -3.514600e+02
-13 9432     3.504700e+02 -5.300601e+02
-15 9432     -5.195001e+01 -3.159300e+02
-0 9433     7.577800e+02 -3.341500e+02
-7 9433     6.609301e+02 -9.907001e+01
-0 9434     -3.095001e+01 -3.522800e+02
-7 9434     -6.238000e+01 -2.487300e+02
-10 9434     -9.150000e+01 -2.653600e+02
-0 9435     8.485300e+02 -4.100100e+02
-7 9435     7.528600e+02 -1.502800e+02
-0 9436     -1.528500e+02 -4.840500e+02
-6 9436     -4.865002e+01 -6.318101e+02
-7 9436     -1.580100e+02 -4.079600e+02
-9 9436     4.517999e+01 -4.206400e+02
-0 9437     -3.066998e+01 -5.586200e+02
-7 9437     -1.678003e+01 -4.527500e+02
-0 9438     -3.066998e+01 -5.586200e+02
-7 9438     -1.678003e+01 -4.527500e+02
-0 9439     -9.859998e+01 -5.671899e+02
-7 9439     -8.290002e+01 -4.764700e+02
-0 9440     -1.433100e+02 5.719100e+02
-2 9440     -4.304900e+02 3.427100e+02
-4 9440     6.472998e+01 -2.825600e+02
-5 9440     2.694301e+02 -7.644000e+01
-8 9440     -2.746100e+02 2.612300e+02
-11 9440     1.934998e+01 -2.064500e+02
-12 9440     -4.738000e+02 5.752500e+02
-0 9441     -1.433100e+02 5.719100e+02
-2 9441     -4.304900e+02 3.427100e+02
-4 9441     6.472998e+01 -2.825600e+02
-5 9441     2.694301e+02 -7.644000e+01
-8 9441     -2.746100e+02 2.612300e+02
-11 9441     1.934998e+01 -2.064500e+02
-12 9441     -4.738000e+02 5.752500e+02
-0 9442     1.552100e+02 5.541200e+02
-2 9442     -1.613300e+02 3.194100e+02
-4 9442     3.184003e+01 -4.548101e+02
-6 9442     -3.235200e+02 6.210500e+02
-8 9442     -5.185999e+01 2.490000e+02
-11 9442     2.796801e+02 -2.112900e+02
-12 9442     -1.549200e+02 5.904600e+02
-13 9442     3.077200e+02 2.242500e+02
-14 9442     4.567300e+02 -1.753200e+02
-0 9443     4.355400e+02 5.532600e+02
-2 9443     7.909998e+01 3.209900e+02
-3 9443     -6.696997e+01 -1.270001e+01
-6 9443     -2.607001e+01 6.744200e+02
-8 9443     1.472800e+02 2.537100e+02
-9 9443     -8.647998e+01 3.553500e+02
-13 9443     5.326200e+02 2.423500e+02
-14 9443     7.335200e+02 -1.598500e+02
-0 9444     6.568800e+02 5.320900e+02
-2 9444     4.619000e+02 5.087500e+02
-3 9444     3.130699e+02 1.721700e+02
-9 9444     2.493300e+02 5.325000e+02
-13 9444     8.156200e+02 2.606200e+02
-0 9445     1.250400e+02 5.075100e+02
-2 9445     -1.729400e+02 2.730100e+02
-14 9445     4.362700e+02 -2.231700e+02
-0 9446     9.192999e+01 5.035700e+02
-2 9446     -2.065900e+02 2.666900e+02
-3 9446     -3.406300e+02 -6.852002e+01
-6 9446     -3.760200e+02 5.487700e+02
-8 9446     -9.002002e+01 2.058400e+02
-12 9446     -2.040500e+02 5.313200e+02
-13 9446     2.633400e+02 1.778400e+02
-0 9447     7.477300e+02 4.901400e+02
-3 9447     4.074399e+02 1.672000e+02
-8 9447     5.264200e+02 3.841500e+02
-9 9447     3.331700e+02 5.274200e+02
-0 9448     8.094301e+02 4.053100e+02
-2 9448     6.435400e+02 4.500500e+02
-9 9448     4.036300e+02 4.830100e+02
-0 9449     5.292000e+02 3.793300e+02
-2 9449     3.210100e+02 2.792500e+02
-7 9449     3.190200e+02 5.257500e+02
-8 9449     3.294300e+02 2.064300e+02
-9 9449     1.297400e+02 3.282300e+02
-11 9449     6.370000e+02 -3.511100e+02
-13 9449     6.867000e+02 1.164700e+02
-0 9450     5.185200e+02 3.320600e+02
-3 9450     1.783200e+02 -9.623999e+01
-7 9450     3.143700e+02 4.780700e+02
-9 9450     1.289200e+02 2.841200e+02
-13 9450     6.808101e+02 7.539001e+01
-0 9451     7.758600e+02 9.169000e+01
-2 9451     7.010200e+02 1.571500e+02
-3 9451     5.552700e+02 -1.505100e+02
-7 9451     6.097400e+02 3.014300e+02
-9 9451     4.570400e+02 2.372400e+02
-10 9451     8.033700e+02 3.305400e+02
-12 9451     7.169399e+02 3.160200e+02
-0 9452     6.443500e+02 7.939999e+01
-2 9452     5.681300e+02 8.097998e+01
-6 9452     4.883800e+02 2.416000e+02
-7 9452     4.839600e+02 2.646100e+02
-8 9452     5.248700e+02 3.609000e+01
-10 9452     6.488900e+02 3.018700e+02
-12 9452     5.719000e+02 2.510800e+02
-0 9453     8.382000e+02 5.423999e+01
-2 9453     7.712900e+02 1.493700e+02
-3 9453     6.241400e+02 -1.544100e+02
-7 9453     6.719500e+02 2.773900e+02
-12 9453     7.942200e+02 2.973600e+02
-0 9454     -3.195001e+01 4.551001e+01
-7 9454     -1.287000e+02 1.501700e+02
-0 9455     -6.402002e+01 2.719000e+01
-2 9455     3.979999e+01 8.049988e+00
-3 9455     -4.792999e+01 -3.037700e+02
-6 9455     -1.432600e+02 1.709998e+01
-7 9455     -1.606700e+02 1.257000e+02
-8 9455     6.459998e+01 -3.564999e+01
-10 9455     -1.703600e+02 1.658600e+02
-12 9455     -1.218000e+02 7.333002e+01
-13 9455     3.003600e+02 -2.075600e+02
-15 9455     -1.229700e+02 1.651600e+02
-0 9456     -3.798999e+01 -2.210022e+00
-3 9456     6.440002e+00 -3.142900e+02
-4 9456     -2.700000e+02 -3.809500e+02
-6 9456     -8.832001e+01 -3.880005e+00
-7 9456     -1.260900e+02 1.020300e+02
-8 9456     1.071200e+02 -4.787000e+01
-13 9456     3.333300e+02 -2.283800e+02
-15 9456     -8.495001e+01 1.288200e+02
-0 9457     3.008101e+02 -3.688000e+01
-7 9457     2.117700e+02 1.229300e+02
-10 9457     2.576899e+02 1.293600e+02
-13 9457     6.284800e+02 -2.323800e+02
-15 9457     3.815000e+02 1.276400e+02
-0 9458     2.222000e+02 -8.471002e+01
-3 9458     2.906200e+02 -3.281400e+02
-7 9458     1.493700e+02 6.545001e+01
-10 9458     1.750900e+02 6.592999e+01
-13 9458     5.763000e+02 -2.780300e+02
-15 9458     2.794000e+02 5.190997e+01
-0 9459     -4.252002e+01 -2.284500e+02
-3 9459     1.208200e+02 -5.207900e+02
-4 9459     -4.319900e+02 -3.724000e+02
-10 9459     -1.190100e+02 -1.269600e+02
-12 9459     6.500244e-01 -2.016000e+02
-15 9459     -6.481000e+01 -1.772300e+02
-0 9460     2.831000e+02 -2.696900e+02
-7 9460     2.348300e+02 -1.098900e+02
-0 9461     6.073600e+02 -2.703600e+02
-7 9461     5.132800e+02 -6.628998e+01
-12 9461     6.590699e+02 -1.182000e+02
-0 9462     1.067100e+02 -3.989600e+02
-7 9462     7.884998e+01 -2.701900e+02
-0 9463     6.496400e+02 -4.262600e+02
-12 9463     7.783199e+02 -2.558500e+02
-0 9464     -9.920001e+01 -5.228400e+02
-7 9464     -9.429999e+01 -4.329399e+02
-0 9465     3.417300e+02 5.261000e+02
-5 9465     7.437300e+02 -1.106300e+02
-6 9465     -1.183300e+02 6.308000e+02
-0 9466     1.610699e+02 5.158800e+02
-2 9466     -1.434900e+02 2.803100e+02
-3 9466     -2.776400e+02 -5.529999e+01
-4 9466     1.625000e+01 -4.615900e+02
-5 9466     5.640100e+02 -1.265700e+02
-6 9466     -3.041200e+02 5.769900e+02
-8 9466     -3.887000e+01 2.184900e+02
-11 9466     2.897500e+02 -2.429200e+02
-12 9466     -1.370000e+02 5.523100e+02
-13 9466     3.189200e+02 1.920400e+02
-0 9467     7.707100e+02 4.710600e+02
-2 9467     5.881000e+02 4.932700e+02
-3 9467     4.329100e+02 1.587100e+02
-6 9467     5.350500e+02 7.002900e+02
-8 9467     5.481600e+02 3.757100e+02
-0 9468     7.107700e+02 3.821800e+02
-2 9468     5.546801e+02 3.956500e+02
-3 9468     4.054399e+02 7.022998e+01
-6 9468     4.896801e+02 5.913600e+02
-8 9468     5.187300e+02 2.954300e+02
-9 9468     3.292300e+02 4.347300e+02
-0 9469     -2.267100e+02 3.143600e+02
-5 9469     1.669100e+02 -3.551700e+02
-15 9469     -3.690600e+02 5.334900e+02
-0 9470     6.506100e+02 9.950000e+01
-3 9470     4.282200e+02 -2.051200e+02
-6 9470     4.887000e+02 2.675000e+02
-8 9470     5.248000e+02 5.685999e+01
-10 9470     6.571000e+02 3.274000e+02
-12 9470     5.701500e+02 2.777900e+02
-0 9471     7.936500e+02 4.969000e+01
-2 9471     7.323000e+02 1.251500e+02
-3 9471     5.872800e+02 -1.795800e+02
-7 9471     6.331899e+02 2.645000e+02
-9 9471     4.836200e+02 2.118100e+02
-12 9471     7.491000e+02 2.757400e+02
-0 9472     2.964001e+01 -1.329999e+01
-10 9472     -5.653003e+01 1.278100e+02
-13 9472     4.039500e+02 -2.294500e+02
-15 9472     7.489990e+00 1.229900e+02
-0 9473     -3.617999e+01 -1.914100e+02
-7 9473     -8.464001e+01 -8.370001e+01
-10 9473     -1.143500e+02 -8.457001e+01
-0 9474     9.609998e+01 -2.348600e+02
-4 9474     -4.652900e+02 -4.943700e+02
-10 9474     4.213000e+01 -1.189400e+02
-15 9474     1.243100e+02 -1.667800e+02
-0 9475     -2.591998e+01 -2.383600e+02
-7 9475     -6.713000e+01 -1.305600e+02
-15 9475     -3.912000e+01 -1.898700e+02
-0 9476     7.784998e+01 -2.487200e+02
-6 9476     1.597600e+02 -2.264200e+02
-8 9476     3.067800e+02 -2.155500e+02
-10 9476     2.232001e+01 -1.363600e+02
-12 9476     1.595600e+02 -1.854100e+02
-15 9476     1.009200e+02 -1.878200e+02
-0 9477     5.363000e+01 -2.854100e+02
-2 9477     3.045400e+02 -2.792000e+02
-4 9477     -4.987500e+02 -4.466500e+02
-6 9477     1.234100e+02 -2.953700e+02
-8 9477     2.723600e+02 -2.799200e+02
-9 9477     1.569600e+02 -1.329400e+02
-10 9477     -5.200195e-01 -1.833300e+02
-12 9477     1.271600e+02 -2.533800e+02
-15 9477     7.667999e+01 -2.421100e+02
-0 9478     4.615002e+01 -3.400600e+02
-7 9478     1.404999e+01 -2.214500e+02
-10 9478     -1.679993e+00 -2.450400e+02
-15 9478     7.654999e+01 -3.159200e+02
-0 9479     8.332001e+01 -3.583900e+02
-4 9479     -5.701800e+02 -4.629800e+02
-6 9479     1.643700e+02 -3.853900e+02
-12 9479     1.717300e+02 -3.477600e+02
-15 9479     1.270800e+02 -3.365300e+02
-0 9480     9.876001e+01 -3.815800e+02
-6 9480     1.867000e+02 -3.978101e+02
-7 9480     7.252002e+01 -2.514300e+02
-9 9480     2.096000e+02 -2.298700e+02
-0 9481     -2.215200e+02 -4.706500e+02
-7 9481     -2.316500e+02 -4.087600e+02
-0 9482     4.210999e+01 5.000400e+02
-5 9482     4.466801e+02 -1.474100e+02
-0 9483     4.210999e+01 5.000400e+02
-2 9483     -2.510400e+02 2.585000e+02
-3 9483     -3.837700e+02 -7.765997e+01
-5 9483     4.466801e+02 -1.474100e+02
-6 9483     -4.299400e+02 5.301900e+02
-8 9483     -1.265700e+02 1.983900e+02
-12 9483     -2.572000e+02 5.155100e+02
-13 9483     2.241400e+02 1.702000e+02
-14 9483     3.549000e+02 -2.367400e+02
-0 9484     7.307400e+02 1.163300e+02
-2 9484     6.501000e+02 1.593600e+02
-3 9484     5.060100e+02 -1.492800e+02
-7 9484     5.635400e+02 3.164600e+02
-9 9484     4.135500e+02 2.384100e+02
-10 9484     7.486600e+02 3.548900e+02
-0 9485     7.964301e+02 1.117000e+02
-2 9485     7.150400e+02 1.869700e+02
-3 9485     5.661899e+02 -1.214300e+02
-0 9486     6.914399e+02 9.219000e+01
-7 9486     5.281700e+02 2.858600e+02
-10 9486     7.037100e+02 3.200100e+02
-0 9487     8.024399e+02 7.631000e+01
-2 9487     7.335900e+02 1.549200e+02
-3 9487     5.852900e+02 -1.511600e+02
-7 9487     6.376400e+02 2.917600e+02
-9 9487     4.843700e+02 2.371600e+02
-12 9487     7.530500e+02 3.089900e+02
-0 9488     8.024399e+02 7.631000e+01
-3 9488     5.852900e+02 -1.511600e+02
-7 9488     6.376400e+02 2.917600e+02
-9 9488     4.843700e+02 2.371600e+02
-0 9489     2.306300e+02 -2.677002e+01
-2 9489     3.793400e+02 4.601001e+01
-3 9489     2.755900e+02 -2.615700e+02
-7 9489     1.450000e+02 1.254100e+02
-10 9489     1.766500e+02 1.328400e+02
-13 9489     5.757900e+02 -2.268500e+02
-15 9489     2.827200e+02 1.316400e+02
-0 9490     -7.919000e+01 -1.328300e+02
-3 9490     3.023999e+01 -4.423300e+02
-7 9490     -1.415100e+02 -3.309998e+01
-15 9490     -1.188300e+02 -5.114001e+01
-0 9491     3.559003e+01 -1.855100e+02
-7 9491     -1.637000e+01 -6.487000e+01
-10 9491     -3.106000e+01 -6.683002e+01
-15 9491     3.971997e+01 -1.083600e+02
-0 9492     1.789100e+02 5.503200e+02
-2 9492     -1.351800e+02 3.180900e+02
-3 9492     -2.733700e+02 -1.865002e+01
-5 9492     5.813600e+02 -9.194000e+01
-6 9492     -2.925700e+02 6.223600e+02
-8 9492     -3.121997e+01 2.472800e+02
-9 9492     -2.683400e+02 3.446900e+02
-13 9492     3.292000e+02 2.232100e+02
-14 9492     4.837800e+02 -1.765900e+02
-0 9493     7.288000e+01 5.325700e+02
-2 9493     -2.269800e+02 2.965200e+02
-3 9493     -3.607900e+02 -3.753998e+01
-4 9493     3.067999e+01 -4.068600e+02
-5 9493     4.776600e+02 -1.115900e+02
-6 9493     -4.038500e+02 5.801500e+02
-8 9493     -1.073400e+02 2.305200e+02
-12 9493     -2.316100e+02 5.588300e+02
-13 9493     2.467300e+02 2.028400e+02
-14 9493     3.831300e+02 -1.999600e+02
-0 9494     7.288000e+01 5.325700e+02
-4 9494     3.067999e+01 -4.068600e+02
-5 9494     4.776600e+02 -1.115900e+02
-11 9494     2.102100e+02 -2.325400e+02
-12 9494     -2.316100e+02 5.588300e+02
-13 9494     2.467300e+02 2.028400e+02
-14 9494     3.831300e+02 -1.999600e+02
-0 9495     1.063800e+02 5.140500e+02
-5 9495     5.072800e+02 -1.325600e+02
-0 9496     1.063800e+02 5.140500e+02
-5 9496     5.072800e+02 -1.325600e+02
-13 9496     2.725800e+02 1.850900e+02
-14 9496     4.147400e+02 -2.208100e+02
-0 9497     3.018600e+02 4.925500e+02
-13 9497     4.285200e+02 1.819700e+02
-14 9497     6.081300e+02 -2.282900e+02
-0 9498     7.225200e+02 4.869400e+02
-2 9498     5.362000e+02 4.906400e+02
-3 9498     3.838500e+02 1.551400e+02
-8 9498     5.052700e+02 3.735300e+02
-9 9498     3.141700e+02 5.169100e+02
-0 9499     7.391899e+02 5.934003e+01
-2 9499     6.718300e+02 1.080600e+02
-3 9499     5.306801e+02 -1.980500e+02
-7 9499     5.776400e+02 2.642800e+02
-9 9499     4.350900e+02 1.954600e+02
-12 9499     6.818500e+02 2.657400e+02
-0 9500     2.358700e+02 -6.192999e+01
-2 9500     3.988199e+02 1.165002e+01
-7 9500     1.565900e+02 8.942001e+01
-13 9500     5.851200e+02 -2.550600e+02
-15 9500     2.929000e+02 8.420001e+01
-0 9501     1.039200e+02 -1.378300e+02
-13 9501     4.842800e+02 -3.351500e+02
-0 9502     -2.321000e+02 4.416500e+02
-4 9502     2.600098e-01 -2.186200e+02
-5 9502     1.741400e+02 -2.098200e+02
-0 9503     -2.321000e+02 4.416500e+02
-2 9503     -5.086800e+02 1.927000e+02
-4 9503     2.600098e-01 -2.186200e+02
-5 9503     1.741400e+02 -2.098200e+02
-7 9503     -4.547600e+02 4.821600e+02
-8 9503     -3.376500e+02 1.426800e+02
-11 9503     -5.935999e+01 -3.173400e+02
-12 9503     -5.504700e+02 4.103000e+02
-0 9504     7.844600e+02 1.901000e+02
-3 9504     5.267800e+02 -6.932001e+01
-7 9504     6.010400e+02 3.967500e+02
-0 9505     7.290000e+02 8.301001e+01
-7 9505     5.668800e+02 2.834500e+02
-1 9506     2.632600e+02 5.856400e+02
-2 9506     -4.080600e+02 3.136300e+02
-5 9506     2.886801e+02 -1.026800e+02
-8 9506     -2.560400e+02 2.386200e+02
-12 9506     -4.445600e+02 5.474300e+02
-1 9507     5.008400e+02 5.857200e+02
-2 9507     -2.153700e+02 3.668600e+02
-3 9507     -3.476900e+02 3.248999e+01
-6 9507     -3.940600e+02 6.631800e+02
-8 9507     -9.750000e+01 2.845100e+02
-9 9507     -3.389300e+02 3.868100e+02
-1 9508     6.144800e+02 5.855700e+02
-6 9508     -2.929900e+02 7.084300e+02
-1 9509     -5.626001e+01 5.838100e+02
-2 9509     -7.145300e+02 2.290200e+02
-7 9509     -6.540600e+02 4.948900e+02
-8 9509     -5.057800e+02 1.653500e+02
-1 9510     -5.626001e+01 5.838100e+02
-2 9510     -7.145300e+02 2.290200e+02
-7 9510     -6.540600e+02 4.948900e+02
-1 9511     -3.419983e+00 5.840600e+02
-8 9511     -4.608400e+02 1.785100e+02
-14 9511     -4.546997e+01 -2.573500e+02
-1 9512     6.113600e+02 5.836300e+02
-5 9512     5.898600e+02 -2.603998e+01
-6 9512     -2.946400e+02 7.052600e+02
-1 9513     5.079399e+02 5.832000e+02
-6 9513     -3.865000e+02 6.629600e+02
-1 9514     6.296997e+01 5.824700e+02
-2 9514     -5.920300e+02 2.595000e+02
-7 9514     -5.360800e+02 5.346400e+02
-12 9514     -6.500600e+02 4.646600e+02
-1 9515     6.296997e+01 5.824700e+02
-12 9515     -6.500600e+02 4.646600e+02
-1 9516     6.296997e+01 5.824700e+02
-7 9516     -5.360800e+02 5.346400e+02
-12 9516     -6.500600e+02 4.646600e+02
-1 9517     5.945601e+02 5.807600e+02
-6 9517     -3.081500e+02 6.952900e+02
-1 9518     6.027800e+02 5.801300e+02
-5 9518     5.842200e+02 -3.047998e+01
-1 9519     6.027800e+02 5.801300e+02
-5 9519     5.842200e+02 -3.047998e+01
-9 9519     -2.734900e+02 4.020300e+02
-1 9520     2.612700e+02 5.797100e+02
-2 9520     -4.079900e+02 3.064700e+02
-5 9520     2.883700e+02 -1.085900e+02
-12 9520     -4.437100e+02 5.400100e+02
-1 9521     2.612700e+02 5.797100e+02
-5 9521     2.883700e+02 -1.085900e+02
-1 9522     2.612700e+02 5.797100e+02
-2 9522     -4.079900e+02 3.064700e+02
-12 9522     -4.437100e+02 5.400100e+02
-1 9523     5.988199e+02 5.793400e+02
-2 9523     -1.410700e+02 3.800200e+02
-3 9523     -2.776800e+02 4.498999e+01
-1 9524     5.988199e+02 5.793400e+02
-2 9524     -1.410700e+02 3.800200e+02
-1 9525     -6.763000e+01 5.784900e+02
-2 9525     -7.255800e+02 2.192400e+02
-5 9525     -2.339001e+01 -1.849000e+02
-7 9525     -6.631500e+02 4.850400e+02
-8 9525     -5.145500e+02 1.579700e+02
-14 9525     -1.068300e+02 -2.789500e+02
-1 9526     -5.928003e+01 5.755600e+02
-7 9526     -6.538800e+02 4.855200e+02
-1 9527     6.971700e+02 5.693200e+02
-2 9527     -7.060999e+01 3.888700e+02
-6 9527     -2.160200e+02 7.228700e+02
-1 9528     -1.554500e+02 5.684400e+02
-8 9528     -5.911200e+02 1.260700e+02
-10 9528     -7.769200e+02 6.162700e+02
-11 9528     -3.091200e+02 -3.224800e+02
-1 9529     8.070007e+00 5.662300e+02
-2 9529     -6.428400e+02 2.253900e+02
-5 9529     5.272998e+01 -1.805200e+02
-7 9529     -5.831600e+02 4.993800e+02
-12 9529     -7.034400e+02 4.223900e+02
-14 9529     -3.196002e+01 -2.729600e+02
-1 9530     8.070007e+00 5.662300e+02
-2 9530     -6.428400e+02 2.253900e+02
-5 9530     5.272998e+01 -1.805200e+02
-7 9530     -5.831600e+02 4.993800e+02
-12 9530     -7.034400e+02 4.223900e+02
-14 9530     -3.196002e+01 -2.729600e+02
-1 9531     -6.595001e+01 5.618800e+02
-2 9531     -7.196100e+02 1.992500e+02
-8 9531     -5.094000e+02 1.421500e+02
-14 9531     -1.031900e+02 -2.957700e+02
-1 9532     2.192100e+02 5.615100e+02
-2 9532     -4.404200e+02 2.761600e+02
-7 9532     -3.833300e+02 5.666200e+02
-1 9533     -1.727400e+02 5.590200e+02
-5 9533     -1.275300e+02 -2.288800e+02
-11 9533     -3.233700e+02 -3.336700e+02
-14 9533     -2.097300e+02 -3.243900e+02
-1 9534     -1.727400e+02 5.590200e+02
-10 9534     -7.936500e+02 5.983200e+02
-1 9535     -1.727400e+02 5.590200e+02
-5 9535     -1.275300e+02 -2.288800e+02
-7 9535     -7.645600e+02 4.269200e+02
-10 9535     -7.936500e+02 5.983200e+02
-14 9535     -2.097300e+02 -3.243900e+02
-1 9536     6.351700e+02 5.587900e+02
-5 9536     6.149100e+02 -4.297998e+01
-6 9536     -2.639600e+02 6.880200e+02
-1 9537     -6.541998e+01 5.575700e+02
-2 9537     -7.176400e+02 1.939600e+02
-5 9537     -1.891998e+01 -2.060400e+02
-12 9537     -7.837800e+02 3.806400e+02
-1 9538     6.721700e+02 5.528400e+02
-2 9538     -8.283002e+01 3.691800e+02
-4 9538     5.928003e+01 -5.253800e+02
-6 9538     -2.301200e+02 6.958100e+02
-8 9538     1.213000e+01 2.885900e+02
-11 9538     3.609600e+02 -1.683600e+02
-1 9539     4.302100e+02 5.486300e+02
-11 9539     1.793100e+02 -2.216700e+02
-12 9539     -2.708300e+02 5.700200e+02
-14 9539     3.504800e+02 -1.852000e+02
-1 9540     1.649800e+02 5.461200e+02
-7 9540     -4.272100e+02 5.334700e+02
-1 9541     6.777200e+02 5.448400e+02
-11 9541     3.675500e+02 -1.732500e+02
-14 9541     5.535500e+02 -1.298400e+02
-1 9542     6.284399e+02 5.418400e+02
-2 9542     -1.097000e+02 3.507400e+02
-6 9542     -2.623700e+02 6.673100e+02
-9 9542     -2.480600e+02 3.755100e+02
-11 9542     3.320100e+02 -1.853800e+02
-13 9542     3.555000e+02 2.510900e+02
-14 9542     5.153300e+02 -1.436900e+02
-1 9543     3.921300e+02 5.409100e+02
-12 9543     -3.029300e+02 5.477500e+02
-1 9544     -8.815002e+01 5.398600e+02
-5 9544     -3.917999e+01 -2.303000e+02
-10 9544     -6.801500e+02 6.051800e+02
-12 9544     -8.008800e+02 3.484300e+02
-14 9544     -1.216400e+02 -3.239500e+02
-1 9545     -8.106000e+01 5.399100e+02
-2 9545     -7.287500e+02 1.678300e+02
-1 9546     -1.948300e+02 5.396600e+02
-10 9546     -8.113100e+02 5.660200e+02
-14 9546     -2.300400e+02 -3.502000e+02
-1 9547     -1.285999e+01 5.389700e+02
-7 9547     -5.928000e+02 4.641600e+02
-1 9548     4.275300e+02 5.389200e+02
-5 9548     4.424900e+02 -1.101700e+02
-1 9549     6.798800e+02 5.384800e+02
-2 9549     -7.350000e+01 3.574600e+02
-1 9550     4.178400e+02 5.368500e+02
-6 9550     -4.516000e+02 5.710900e+02
-9 9550     -3.795100e+02 3.250100e+02
-1 9551     -1.489001e+01 5.365200e+02
-2 9551     -6.590500e+02 1.830500e+02
-1 9552     3.085601e+02 5.338400e+02
-7 9552     -2.940200e+02 5.689200e+02
-12 9552     -3.781300e+02 5.085500e+02
-1 9553     7.238000e+01 5.324100e+02
-8 9553     -3.881400e+02 1.473600e+02
-1 9554     1.946700e+02 5.303800e+02
-3 9554     -5.821600e+02 -9.465002e+01
-1 9555     -1.396100e+02 5.297600e+02
-5 9555     -9.082001e+01 -2.523600e+02
-10 9555     -7.383200e+02 5.737600e+02
-1 9556     2.952200e+02 5.282700e+02
-2 9556     -3.636100e+02 2.599300e+02
-1 9557     -1.505200e+02 5.265400e+02
-5 9557     -1.015100e+02 -2.584100e+02
-8 9557     -5.777900e+02 8.510001e+01
-14 9557     -1.835600e+02 -3.534900e+02
-1 9558     3.357300e+02 5.264800e+02
-2 9558     -3.302300e+02 2.679600e+02
-7 9558     -2.679800e+02 5.708500e+02
-1 9559     3.001000e+02 5.260300e+02
-2 9559     -3.599800e+02 2.585100e+02
-1 9560     -1.534800e+02 5.253800e+02
-7 9560     -7.301700e+02 3.985100e+02
-10 9560     -7.530300e+02 5.632900e+02
-1 9561     -3.696997e+01 5.251100e+02
-10 9561     -6.124200e+02 6.067700e+02
-1 9562     3.198600e+02 5.249200e+02
-2 9562     -3.428500e+02 2.623400e+02
-7 9562     -2.807600e+02 5.644000e+02
-1 9563     7.785000e+02 5.239000e+02
-5 9563     7.404800e+02 -4.134998e+01
-6 9563     -1.308600e+02 7.065700e+02
-14 9563     6.376899e+02 -1.243600e+02
-1 9564     -2.020900e+02 5.229200e+02
-10 9564     -8.127400e+02 5.421100e+02
-15 9564     -8.462500e+02 5.826600e+02
-1 9565     7.856000e+01 5.222500e+02
-2 9565     -5.613500e+02 1.927400e+02
-5 9565     1.258700e+02 -2.090500e+02
-11 9565     -1.006100e+02 -3.164600e+02
-12 9565     -6.075500e+02 4.014800e+02
-1 9566     3.350100e+02 5.220300e+02
-6 9566     -5.257700e+02 5.168600e+02
-1 9567     -1.164200e+02 5.209300e+02
-10 9567     -7.058500e+02 5.717300e+02
-1 9568     1.078900e+02 5.207700e+02
-7 9568     -4.710500e+02 4.889600e+02
-1 9569     8.103998e+01 5.196100e+02
-5 9569     1.288300e+02 -2.113400e+02
-12 9569     -6.036200e+02 3.992700e+02
-1 9570     4.294800e+02 5.190500e+02
-12 9570     -2.599400e+02 5.386800e+02
-1 9571     -3.046002e+01 5.178000e+02
-7 9571     -6.028200e+02 4.363300e+02
-1 9572     -3.046002e+01 5.178000e+02
-2 9572     -6.705600e+02 1.548700e+02
-7 9572     -6.028200e+02 4.363300e+02
-12 9572     -7.257400e+02 3.477400e+02
-1 9573     2.901899e+02 5.167300e+02
-6 9573     -5.681000e+02 4.895800e+02
-7 9573     -3.044400e+02 5.469500e+02
-11 9573     7.565002e+01 -2.763800e+02
-12 9573     -3.897000e+02 4.833600e+02
-1 9574     4.271002e+01 5.162500e+02
-5 9574     9.254999e+01 -2.238300e+02
-1 9575     1.071500e+02 5.161700e+02
-12 9575     -5.745800e+02 4.062100e+02
-1 9576     2.757600e+02 5.157800e+02
-2 9576     -3.785300e+02 2.411000e+02
-5 9576     3.119500e+02 -1.681000e+02
-6 9576     -5.827100e+02 4.804600e+02
-8 9576     -2.312700e+02 1.809300e+02
-1 9577     3.924399e+02 5.145900e+02
-7 9577     -2.155500e+02 5.778300e+02
-1 9578     3.295400e+02 5.140000e+02
-5 9578     3.610699e+02 -1.565400e+02
-6 9578     -5.280600e+02 5.038200e+02
-7 9578     -2.693600e+02 5.570300e+02
-9 9578     -4.341900e+02 2.826000e+02
-12 9578     -3.510200e+02 4.948300e+02
-1 9579     7.433002e+01 5.136000e+02
-2 9579     -5.630100e+02 1.813800e+02
-7 9579     -4.999200e+02 4.698800e+02
-12 9579     -6.084300e+02 3.894300e+02
-1 9580     4.304900e+02 5.137500e+02
-2 9580     -2.493900e+02 2.780300e+02
-5 9580     4.506899e+02 -1.327100e+02
-6 9580     -4.295700e+02 5.511700e+02
-12 9580     -2.567900e+02 5.331800e+02
-1 9581     9.389001e+01 5.122700e+02
-2 9581     -5.434600e+02 1.856800e+02
-7 9581     -4.810400e+02 4.756600e+02
-1 9582     1.011200e+02 5.116400e+02
-2 9582     -5.361200e+02 1.870100e+02
-5 9582     1.498300e+02 -2.141600e+02
-7 9582     -4.738400e+02 4.776100e+02
-12 9582     -5.789100e+02 3.988400e+02
-14 9582     6.434998e+01 -3.047500e+02
-1 9583     -1.610000e+02 5.109800e+02
-5 9583     -1.112100e+02 -2.774700e+02
-7 9583     -7.319600e+02 3.804600e+02
-8 9583     -5.844100e+02 6.585999e+01
-10 9583     -7.556000e+02 5.429200e+02
-14 9583     -1.932400e+02 -3.727900e+02
-15 9583     -7.829100e+02 5.858900e+02
-1 9584     6.245400e+02 5.097700e+02
-2 9584     -1.023300e+02 3.194800e+02
-8 9584     -4.510010e+00 2.489400e+02
-1 9585     8.439500e+02 5.094400e+02
-5 9585     7.964600e+02 -4.094000e+01
-6 9585     -7.365997e+01 7.154700e+02
-8 9585     1.151000e+02 2.857600e+02
-9 9585     -1.194800e+02 3.904000e+02
-1 9586     2.834500e+02 5.082400e+02
-5 9586     3.207000e+02 -1.734700e+02
-6 9586     -5.712400e+02 4.753800e+02
-1 9587     -1.092100e+02 5.074000e+02
-7 9587     -6.773500e+02 3.966200e+02
-10 9587     -6.915100e+02 5.581000e+02
-12 9587     -8.121100e+02 2.992800e+02
-1 9588     2.577100e+02 5.072900e+02
-2 9588     -3.917800e+02 2.260100e+02
-7 9588     -3.301000e+02 5.272500e+02
-1 9589     6.410500e+02 5.073500e+02
-2 9589     -9.041998e+01 3.205400e+02
-8 9589     5.580017e+00 2.501500e+02
-9 9589     -2.305300e+02 3.495300e+02
-12 9589     -7.064001e+01 6.018200e+02
-1 9590     -1.696400e+02 5.069400e+02
-7 9590     -7.391700e+02 3.729500e+02
-8 9590     -5.920400e+02 5.951999e+01
-11 9590     -3.149100e+02 -3.783000e+02
-13 9590     -2.261500e+02 3.513000e+01
-15 9590     -7.927900e+02 5.759000e+02
-1 9591     8.439800e+02 5.070200e+02
-14 9591     6.917400e+02 -1.248500e+02
-1 9592     -1.255100e+02 5.061600e+02
-10 9592     -7.097400e+02 5.505100e+02
-12 9592     -8.307900e+02 2.903300e+02
-1 9593     3.259301e+02 5.062000e+02
-2 9593     -3.330400e+02 2.432100e+02
-5 9593     3.593101e+02 -1.651000e+02
-6 9593     -5.280500e+02 4.933000e+02
-7 9593     -2.698300e+02 5.487000e+02
-9 9593     -4.344100e+02 2.743100e+02
-11 9593     1.067400e+02 -2.774200e+02
-1 9594     4.731899e+02 5.050100e+02
-14 9594     3.973500e+02 -2.153000e+02
-1 9595     -1.029400e+02 5.046900e+02
-7 9595     -6.698100e+02 3.960000e+02
-8 9595     -5.294100e+02 7.609000e+01
-11 9595     -2.544100e+02 -3.673400e+02
-14 9595     -1.332400e+02 -3.645800e+02
-1 9596     -1.029400e+02 5.046900e+02
-7 9596     -6.698100e+02 3.960000e+02
-8 9596     -5.294100e+02 7.609000e+01
-11 9596     -2.544100e+02 -3.673400e+02
-14 9596     -1.332400e+02 -3.645800e+02
-1 9597     3.720800e+02 5.032100e+02
-6 9597     -4.813700e+02 5.118200e+02
-12 9597     -3.064400e+02 4.999500e+02
-1 9598     1.794000e+02 5.023600e+02
-12 9598     -4.938200e+02 4.213000e+02
-1 9599     6.192000e+02 5.027700e+02
-2 9599     -1.041400e+02 3.113800e+02
-12 9599     -8.708002e+01 5.895200e+02
-1 9600     4.262500e+02 5.011500e+02
-6 9600     -4.288300e+02 5.351500e+02
-9 9600     -3.632900e+02 2.952500e+02
-11 9600     1.879400e+02 -2.592200e+02
-12 9600     -2.561700e+02 5.187300e+02
-1 9601     7.099600e+02 5.005100e+02
-6 9601     -1.772600e+02 6.563700e+02
-11 9601     4.041600e+02 -1.984700e+02
-1 9602     7.367000e+02 5.006300e+02
-2 9602     -2.285999e+01 3.346800e+02
-13 9602     4.350200e+02 2.454600e+02
-14 9602     6.131700e+02 -1.532900e+02
-1 9603     4.091998e+01 4.999500e+02
-10 9603     -5.114200e+02 6.063700e+02
-1 9604     9.000244e-01 4.996900e+02
-7 9604     -5.651900e+02 4.291300e+02
-10 9604     -5.579600e+02 5.901500e+02
-14 9604     -2.978998e+01 -3.430300e+02
-1 9605     7.468300e+02 4.973100e+02
-6 9605     -1.455000e+02 6.675500e+02
-9 9605     -1.675300e+02 3.632200e+02
-1 9606     7.468300e+02 4.973100e+02
-6 9606     -1.455000e+02 6.675500e+02
-1 9607     5.821700e+02 4.958100e+02
-14 9607     4.902400e+02 -1.958900e+02
-1 9608     6.789301e+02 4.960700e+02
-14 9608     5.679600e+02 -1.715200e+02
-1 9609     7.983400e+02 4.960900e+02
-6 9609     -1.024200e+02 6.869000e+02
-11 9609     4.700699e+02 -1.830200e+02
-1 9610     3.800800e+02 4.952100e+02
-7 9610     -2.194600e+02 5.559200e+02
-1 9611     3.740400e+02 4.944500e+02
-2 9611     -2.898000e+02 2.433800e+02
-5 9611     4.042800e+02 -1.645500e+02
-6 9611     -4.758700e+02 5.026000e+02
-1 9612     4.309900e+02 4.941300e+02
-2 9612     -2.427800e+02 2.581400e+02
-6 9612     -4.190900e+02 5.300600e+02
-8 9612     -1.197600e+02 1.974800e+02
-9 9612     -3.572400e+02 2.905000e+02
-12 9612     -2.464300e+02 5.140800e+02
-1 9613     7.073800e+02 4.942400e+02
-12 9613     -1.129999e+01 6.098700e+02
-1 9614     1.409900e+02 4.937000e+02
-7 9614     -4.307300e+02 4.737500e+02
-1 9615     8.597998e+01 4.929800e+02
-2 9615     -5.462000e+02 1.602000e+02
-8 9615     -3.682400e+02 1.144000e+02
-10 9615     -4.568600e+02 6.139400e+02
-1 9616     1.340300e+02 4.907600e+02
-2 9616     -4.997100e+02 1.722200e+02
-7 9616     -4.358300e+02 4.684400e+02
-1 9617     2.753998e+01 4.898900e+02
-2 9617     -6.032500e+02 1.389400e+02
-5 9617     8.073999e+01 -2.550100e+02
-12 9617     -6.484900e+02 3.408400e+02
-1 9618     2.254999e+01 4.891700e+02
-2 9618     -6.084000e+02 1.353700e+02
-10 9618     -5.282800e+02 5.866000e+02
-11 9618     -1.430000e+02 -3.555200e+02
-12 9618     -6.542000e+02 3.373000e+02
-1 9619     5.995500e+02 4.887900e+02
-14 9619     5.060200e+02 -1.979800e+02
-1 9620     8.627400e+02 4.890300e+02
-3 9620     -8.823999e+01 1.141998e+01
-5 9620     8.174200e+02 -5.645001e+01
-6 9620     -5.114001e+01 6.999400e+02
-8 9620     1.301600e+02 2.722600e+02
-9 9620     -1.041700e+02 3.770200e+02
-11 9620     5.154500e+02 -1.768100e+02
-1 9621     5.546500e+02 4.885400e+02
-14 9621     4.688101e+02 -2.098400e+02
-1 9622     1.590601e+02 4.871000e+02
-2 9622     -4.753900e+02 1.755700e+02
-1 9623     6.303003e+01 4.860000e+02
-7 9623     -5.004700e+02 4.382300e+02
-10 9623     -4.802700e+02 5.971900e+02
-1 9624     3.643000e+02 4.853200e+02
-3 9624     -4.266800e+02 -1.003000e+02
-5 9624     3.972100e+02 -1.762300e+02
-6 9624     -4.814500e+02 4.871600e+02
-7 9624     -2.299000e+02 5.414700e+02
-9 9624     -4.013200e+02 2.646900e+02
-11 9624     1.426700e+02 -2.856600e+02
-12 9624     -3.064500e+02 4.779300e+02
-1 9625     1.066600e+02 4.851400e+02
-10 9625     -4.304000e+02 6.128900e+02
-1 9626     1.066600e+02 4.851400e+02
-7 9626     -4.587000e+02 4.534500e+02
-10 9626     -4.304000e+02 6.128900e+02
-1 9627     4.552400e+02 4.849200e+02
-7 9627     -1.528200e+02 5.703300e+02
-1 9628     4.552400e+02 4.849200e+02
-2 9628     -2.219600e+02 2.545300e+02
-7 9628     -1.528200e+02 5.703300e+02
-1 9629     -7.396002e+01 4.845600e+02
-7 9629     -6.312300e+02 3.869900e+02
-1 9630     8.554600e+02 4.820500e+02
-6 9630     -5.394000e+01 6.915200e+02
-1 9631     3.428003e+01 4.818600e+02
-2 9631     -5.941900e+02 1.306500e+02
-5 9631     8.848999e+01 -2.618800e+02
-7 9631     -5.262600e+02 4.237300e+02
-10 9631     -5.109200e+02 5.813600e+02
-14 9631     5.030029e+00 -3.528600e+02
-1 9632     7.241998e+01 4.774200e+02
-4 9632     -2.157001e+01 -1.921600e+02
-8 9632     -3.745900e+02 9.838000e+01
-10 9632     -4.646200e+02 5.906000e+02
-12 9632     -5.947500e+02 3.479000e+02
-1 9633     3.429200e+02 4.776200e+02
-7 9633     -2.449800e+02 5.276600e+02
-1 9634     7.660999e+01 4.769900e+02
-5 9634     1.324000e+02 -2.565100e+02
-12 9634     -5.888200e+02 3.485300e+02
-14 9634     4.837000e+01 -3.466600e+02
-1 9635     3.041998e+01 4.763600e+02
-2 9635     -5.966200e+02 1.225800e+02
-7 9635     -5.277900e+02 4.167800e+02
-10 9635     -5.132200e+02 5.737900e+02
-14 9635     2.159973e+00 -3.597000e+02
-1 9636     9.496997e+01 4.764600e+02
-7 9636     -4.660300e+02 4.407600e+02
-14 9636     6.585999e+01 -3.424100e+02
-1 9637     9.847998e+01 4.763800e+02
-7 9637     -4.626600e+02 4.420000e+02
-1 9638     1.655699e+02 4.724200e+02
-10 9638     -3.608200e+02 6.196200e+02
-1 9639     7.620200e+02 4.719800e+02
-14 9639     6.409600e+02 -1.728900e+02
-1 9640     9.963000e+01 4.702500e+02
-14 9640     6.820001e+01 -3.479200e+02
-1 9641     1.032000e+02 4.701900e+02
-8 9641     -3.492000e+02 9.851001e+01
-12 9641     -5.592700e+02 3.521200e+02
-14 9641     7.327002e+01 -3.466700e+02
-1 9642     -7.635999e+01 4.684200e+02
-10 9642     -6.332900e+02 5.234300e+02
-12 9642     -7.560500e+02 2.670300e+02
-15 9642     -6.458200e+02 5.678800e+02
-1 9643     -2.034200e+02 4.625400e+02
-5 9643     -1.515200e+02 -3.404100e+02
-10 9643     -7.846400e+02 4.671700e+02
-14 9643     -2.327500e+02 -4.370601e+02
-15 9643     -8.154800e+02 4.987400e+02
-1 9644     -2.034200e+02 4.625400e+02
-5 9644     -1.515200e+02 -3.404100e+02
-15 9644     -8.154800e+02 4.987400e+02
-1 9645     -1.619800e+02 4.625400e+02
-7 9645     -7.136500e+02 3.295000e+02
-10 9645     -7.346000e+02 4.831100e+02
-15 9645     -7.586100e+02 5.189300e+02
-1 9646     3.084700e+02 4.608700e+02
-5 9646     3.609000e+02 -2.136300e+02
-14 9646     2.724800e+02 -2.998300e+02
-1 9647     -1.969900e+02 4.590800e+02
-10 9647     -7.754700e+02 4.658900e+02
-15 9647     -8.048100e+02 4.974900e+02
-1 9648     7.665997e+01 4.590500e+02
-2 9648     -5.452800e+02 1.165100e+02
-7 9648     -4.776800e+02 4.164900e+02
-12 9648     -5.818600e+02 3.268600e+02
-1 9649     1.310100e+02 4.583800e+02
-2 9649     -4.928900e+02 1.333200e+02
-7 9649     -4.268900e+02 4.356300e+02
-10 9649     -3.930500e+02 5.906200e+02
-12 9649     -5.246700e+02 3.505300e+02
-14 9649     1.012700e+02 -3.513600e+02
-1 9650     9.247998e+01 4.574900e+02
-10 9650     -4.352300e+02 5.758000e+02
-1 9651     3.560500e+02 4.539300e+02
-7 9651     -2.260300e+02 5.094000e+02
-1 9652     1.539700e+02 4.537700e+02
-10 9652     -3.655900e+02 5.939800e+02
-1 9653     4.744000e+01 4.513800e+02
-2 9653     -5.726400e+02 9.695001e+01
-7 9653     -5.023800e+02 3.982400e+02
-10 9653     -4.833200e+02 5.510200e+02
-12 9653     -6.104300e+02 3.047600e+02
-14 9653     2.219000e+01 -3.812200e+02
-1 9654     1.422700e+02 4.510300e+02
-5 9654     1.966600e+02 -2.652000e+02
-7 9654     -4.140800e+02 4.324300e+02
-12 9654     -5.102300e+02 3.468000e+02
-1 9655     3.900400e+02 4.444800e+02
-2 9655     -2.619100e+02 1.942600e+02
-3 9655     -3.949800e+02 -1.369400e+02
-5 9655     4.286899e+02 -2.094600e+02
-6 9655     -4.389300e+02 4.524200e+02
-9 9655     -3.716200e+02 2.340300e+02
-13 9655     2.115100e+02 1.228200e+02
-1 9656     5.328900e+02 4.445300e+02
-2 9656     -1.499500e+02 2.330200e+02
-5 9656     5.553800e+02 -1.732000e+02
-6 9656     -3.058900e+02 5.201600e+02
-7 9656     -7.596997e+01 5.580000e+02
-8 9656     -4.367999e+01 1.788700e+02
-14 9656     4.623500e+02 -2.560500e+02
-1 9657     4.782001e+01 4.432500e+02
-2 9657     -5.702600e+02 8.775000e+01
-5 9657     1.065500e+02 -2.992200e+02
-11 9657     -1.132900e+02 -3.898900e+02
-14 9657     2.419000e+01 -3.896900e+02
-1 9658     8.618700e+02 4.423600e+02
-14 9658     7.264500e+02 -1.756100e+02
-1 9659     5.203101e+02 4.419400e+02
-7 9659     -8.520001e+01 5.516700e+02
-1 9660     5.294600e+02 4.417900e+02
-2 9660     -1.532400e+02 2.284400e+02
-6 9660     -3.078900e+02 5.155400e+02
-7 9660     -7.791998e+01 5.544500e+02
-8 9660     -4.604999e+01 1.756800e+02
-12 9660     -1.395600e+02 4.960200e+02
-14 9660     4.598800e+02 -2.599800e+02
-1 9661     -5.964001e+01 4.414100e+02
-10 9661     -6.026200e+02 4.986100e+02
-15 9661     -6.097800e+02 5.397900e+02
-1 9662     -5.964001e+01 4.414100e+02
-10 9662     -6.026200e+02 4.986100e+02
-15 9662     -6.097800e+02 5.397900e+02
-1 9663     3.643199e+02 4.396100e+02
-3 9663     -4.146600e+02 -1.501500e+02
-6 9663     -4.613000e+02 4.335600e+02
-7 9663     -2.140100e+02 4.983700e+02
-12 9663     -2.876700e+02 4.284900e+02
-1 9664     2.368000e+02 4.371700e+02
-5 9664     2.890900e+02 -2.573700e+02
-12 9664     -4.092400e+02 3.721600e+02
-1 9665     5.836200e+02 4.372000e+02
-6 9665     -2.582900e+02 5.352400e+02
-14 9665     5.065699e+02 -2.493800e+02
-1 9666     3.726600e+02 4.367200e+02
-6 9666     -4.523600e+02 4.346600e+02
-7 9666     -2.065500e+02 4.987600e+02
-1 9667     4.491998e+01 4.356700e+02
-2 9667     -5.708800e+02 7.679999e+01
-7 9667     -4.988500e+02 3.814800e+02
-10 9667     -4.797500e+02 5.318500e+02
-15 9667     -4.692600e+02 5.811200e+02
-1 9668     6.271700e+02 4.332900e+02
-5 9668     6.393000e+02 -1.600800e+02
-14 9668     5.440500e+02 -2.415000e+02
-1 9669     6.241000e+02 4.323800e+02
-5 9669     6.366899e+02 -1.614800e+02
-6 9669     -2.210800e+02 5.483100e+02
-12 9669     -5.495001e+01 5.220000e+02
-14 9669     5.416400e+02 -2.431300e+02
-1 9670     5.815900e+02 4.322900e+02
-6 9670     -2.579300e+02 5.292700e+02
-1 9671     3.220001e+01 4.314100e+02
-10 9671     -4.930500e+02 5.219200e+02
-11 9671     -1.241100e+02 -4.035100e+02
-14 9671     1.046997e+01 -4.064900e+02
-15 9671     -4.843900e+02 5.695100e+02
-1 9672     5.817300e+02 4.302300e+02
-6 9672     -2.567100e+02 5.268100e+02
-12 9672     -8.947998e+01 5.039400e+02
-1 9673     3.610800e+02 4.285000e+02
-2 9673     -2.812000e+02 1.681800e+02
-7 9673     -2.132500e+02 4.872200e+02
-14 9673     3.171600e+02 -3.186900e+02
-1 9674     -2.037900e+02 4.261600e+02
-5 9674     -1.494700e+02 -3.810700e+02
-7 9674     -7.422000e+02 2.748200e+02
-10 9674     -7.682700e+02 4.232300e+02
-14 9674     -2.300900e+02 -4.778101e+02
-15 9674     -7.969400e+02 4.488700e+02
-1 9675     5.144900e+02 4.257200e+02
-12 9675     -1.457400e+02 4.739500e+02
-1 9676     3.946899e+02 4.253400e+02
-14 9676     3.474000e+02 -3.108300e+02
-1 9677     2.358199e+02 4.244700e+02
-5 9677     2.900699e+02 -2.707400e+02
-6 9677     -5.836700e+02 3.496600e+02
-7 9677     -3.204700e+02 4.402900e+02
-12 9677     -4.050700e+02 3.578900e+02
-14 9677     2.048300e+02 -3.573800e+02
-1 9678     -5.640997e+01 4.233100e+02
-7 9678     -5.921400e+02 3.308900e+02
-8 9678     -4.710600e+02 8.250000e+00
-1 9679     1.433000e+02 4.227900e+02
-2 9679     -4.719800e+02 9.446997e+01
-7 9679     -4.030900e+02 4.052800e+02
-10 9679     -3.653300e+02 5.546000e+02
-1 9680     -4.009998e+01 4.227700e+02
-10 9680     -5.717100e+02 4.840700e+02
-15 9680     -5.751500e+02 5.230000e+02
-1 9681     4.378003e+01 4.222700e+02
-2 9681     -5.684400e+02 6.052002e+01
-7 9681     -4.952000e+02 3.680800e+02
-11 9681     -1.126700e+02 -4.091300e+02
-15 9681     -4.642900e+02 5.628400e+02
-1 9682     6.286600e+02 4.211600e+02
-14 9682     5.486000e+02 -2.524400e+02
-1 9683     -1.177002e+01 4.206800e+02
-7 9683     -5.466800e+02 3.456500e+02
-10 9683     -5.372100e+02 4.926700e+02
-14 9683     -3.056000e+01 -4.302000e+02
-1 9684     -1.196900e+02 4.192700e+02
-7 9684     -6.570100e+02 2.996800e+02
-15 9684     -6.809600e+02 4.797900e+02
-1 9685     6.226899e+02 4.196600e+02
-6 9685     -2.169900e+02 5.335900e+02
-7 9685     3.250000e+00 5.632200e+02
-1 9686     7.273600e+02 4.193600e+02
-5 9686     7.273900e+02 -1.486200e+02
-6 9686     -1.288100e+02 5.782700e+02
-14 9686     6.295601e+02 -2.282800e+02
-1 9687     6.354200e+02 4.188800e+02
-2 9687     -6.798999e+01 2.330200e+02
-7 9687     1.279999e+01 5.659900e+02
-13 9687     3.857900e+02 1.621900e+02
-14 9687     5.549100e+02 -2.528400e+02
-1 9688     6.354200e+02 4.188800e+02
-2 9688     -6.798999e+01 2.330200e+02
-7 9688     1.279999e+01 5.659900e+02
-13 9688     3.857900e+02 1.621900e+02
-14 9688     5.549100e+02 -2.528400e+02
-1 9689     6.197800e+02 4.165700e+02
-5 9689     6.366000e+02 -1.773700e+02
-1 9690     3.490200e+02 4.148100e+02
-2 9690     -2.870400e+02 1.491400e+02
-5 9690     3.970300e+02 -2.507600e+02
-6 9690     -4.656600e+02 3.969900e+02
-7 9690     -2.187800e+02 4.704000e+02
-14 9690     3.095300e+02 -3.357000e+02
-1 9691     7.558500e+02 4.127500e+02
-14 9691     6.542300e+02 -2.267400e+02
-1 9692     7.558500e+02 4.127500e+02
-6 9692     -1.033300e+02 5.836600e+02
-14 9692     6.542300e+02 -2.267400e+02
-1 9693     3.207100e+02 4.108100e+02
-7 9693     -2.418300e+02 4.572500e+02
-1 9694     6.176500e+02 4.100300e+02
-3 9694     -2.183400e+02 -1.120500e+02
-6 9694     -2.171800e+02 5.208500e+02
-12 9694     -5.147998e+01 4.967300e+02
-1 9695     6.176500e+02 4.100300e+02
-6 9695     -2.171800e+02 5.208500e+02
-12 9695     -5.147998e+01 4.967300e+02
-1 9696     6.251200e+02 4.098700e+02
-6 9696     -2.107100e+02 5.240100e+02
-12 9696     -4.503003e+01 4.993100e+02
-1 9697     6.301400e+02 4.096400e+02
-6 9697     -2.061000e+02 5.261500e+02
-12 9697     -4.026001e+01 5.013700e+02
-1 9698     7.524900e+02 4.086400e+02
-14 9698     6.527900e+02 -2.313500e+02
-1 9699     7.612700e+02 4.086700e+02
-5 9699     7.588400e+02 -1.500100e+02
-6 9699     -9.695001e+01 5.815600e+02
-14 9699     6.599100e+02 -2.290300e+02
-1 9700     7.866200e+02 4.073400e+02
-14 9700     6.800000e+02 -2.240200e+02
-1 9701     4.864000e+02 4.067400e+02
-12 9701     -1.628100e+02 4.434800e+02
-1 9702     6.178400e+02 4.068500e+02
-6 9702     -2.166100e+02 5.170400e+02
-9 9702     -2.155600e+02 2.594100e+02
-1 9703     1.904600e+02 4.062100e+02
-2 9703     -4.234500e+02 8.989001e+01
-12 9703     -4.424800e+02 3.175400e+02
-1 9704     8.143900e+02 4.054200e+02
-14 9704     7.024900e+02 -2.182500e+02
-1 9705     -6.251001e+01 4.035500e+02
-5 9705     3.200073e-01 -3.704200e+02
-7 9705     -5.902900e+02 3.081700e+02
-10 9705     -5.894400e+02 4.522600e+02
-15 9705     -5.940900e+02 4.868300e+02
-1 9706     1.753900e+02 4.031500e+02
-5 9706     2.360699e+02 -3.086200e+02
-1 9707     7.316801e+02 4.012400e+02
-14 9707     6.386100e+02 -2.435100e+02
-1 9708     4.788700e+02 3.995700e+02
-3 9708     -3.143100e+02 -1.597800e+02
-7 9708     -1.050800e+02 5.000600e+02
-12 9708     -1.668800e+02 4.331800e+02
-1 9709     4.788700e+02 3.995700e+02
-3 9709     -3.143100e+02 -1.597800e+02
-5 9709     5.178000e+02 -2.310600e+02
-6 9709     -3.359800e+02 4.452500e+02
-7 9709     -1.050800e+02 5.000600e+02
-8 9709     -6.623999e+01 1.309200e+02
-9 9709     -2.984400e+02 2.174300e+02
-11 9709     2.563500e+02 -3.286300e+02
-12 9709     -1.668800e+02 4.331800e+02
-14 9709     4.279399e+02 -3.133700e+02
-1 9710     6.367400e+02 3.979100e+02
-5 9710     6.561700e+02 -1.916400e+02
-6 9710     -1.972300e+02 5.170600e+02
-9 9710     -2.017400e+02 2.575100e+02
-11 9710     3.794000e+02 -2.915400e+02
-12 9710     -3.233002e+01 4.926800e+02
-13 9710     3.899500e+02 1.477300e+02
-14 9710     5.616300e+02 -2.718300e+02
-1 9711     6.125900e+02 3.969600e+02
-7 9711     2.809998e+00 5.403900e+02
-1 9712     2.334900e+02 3.929000e+02
-2 9712     -3.807700e+02 8.865002e+01
-7 9712     -3.116400e+02 4.093300e+02
-14 9712     2.089399e+02 -3.905000e+02
-1 9713     1.477700e+02 3.889200e+02
-7 9713     -3.866200e+02 3.740300e+02
-1 9714     8.023199e+02 3.890000e+02
-6 9714     -5.676001e+01 5.778600e+02
-1 9715     1.675200e+02 3.876100e+02
-7 9715     -3.684000e+02 3.803600e+02
-11 9715     1.590027e+00 -4.120600e+02
-14 9715     1.480000e+02 -4.147900e+02
-15 9715     -2.894700e+02 5.759100e+02
-1 9716     7.666300e+02 3.854900e+02
-6 9716     -8.326001e+01 5.591700e+02
-1 9717     7.666300e+02 3.854900e+02
-6 9717     -8.326001e+01 5.591700e+02
-12 9717     7.877002e+01 5.252500e+02
-1 9718     7.355699e+02 3.841000e+02
-5 9718     7.450601e+02 -1.794200e+02
-6 9718     -1.067300e+02 5.457300e+02
-12 9718     5.589001e+01 5.141900e+02
-14 9718     6.474200e+02 -2.579900e+02
-1 9719     1.513000e+01 3.820500e+02
-10 9719     -4.873700e+02 4.539000e+02
-1 9720     1.513000e+01 3.820500e+02
-10 9720     -4.873700e+02 4.539000e+02
-1 9721     6.090601e+02 3.811900e+02
-6 9721     -2.127100e+02 4.855900e+02
-1 9722     6.781899e+02 3.808800e+02
-2 9722     -2.556000e+01 2.070700e+02
-6 9722     -1.532500e+02 5.164200e+02
-7 9722     5.834998e+01 5.458200e+02
-9 9722     -1.717300e+02 2.528500e+02
-14 9722     6.013400e+02 -2.767300e+02
-1 9723     6.781899e+02 3.808800e+02
-7 9723     5.834998e+01 5.458200e+02
-1 9724     7.511600e+02 3.790900e+02
-6 9724     -9.276001e+01 5.467600e+02
-11 9724     4.734100e+02 -2.799700e+02
-12 9724     6.953003e+01 5.140200e+02
-1 9725     5.011600e+02 3.763800e+02
-7 9725     -7.929999e+01 4.865100e+02
-14 9725     4.527000e+02 -3.306100e+02
-1 9726     8.196997e+01 3.743500e+02
-14 9726     6.609998e+01 -4.542300e+02
-15 9726     -3.917700e+02 5.169000e+02
-1 9727     5.119500e+02 3.727700e+02
-7 9727     -6.939001e+01 4.866600e+02
-1 9728     8.727002e+01 3.708300e+02
-7 9728     -4.367300e+02 3.331600e+02
-14 9728     7.179999e+01 -4.565800e+02
-15 9728     -3.836500e+02 5.150900e+02
-1 9729     6.371200e+02 3.689300e+02
-2 9729     -5.065997e+01 1.843400e+02
-14 9729     5.706200e+02 -2.994000e+02
-1 9730     6.090000e+02 3.676800e+02
-7 9730     9.179993e+00 5.130900e+02
-1 9731     5.865900e+02 3.670100e+02
-7 9731     -8.130005e+00 5.055000e+02
-1 9732     7.133000e+02 3.660800e+02
-14 9732     6.344600e+02 -2.809300e+02
-1 9733     -8.691998e+01 3.595000e+02
-7 9733     -5.968600e+02 2.536600e+02
-14 9733     -9.978003e+01 -5.202500e+02
-1 9734     6.913600e+02 3.574100e+02
-12 9734     2.781000e+01 4.699600e+02
-1 9735     8.749700e+02 3.505400e+02
-12 9735     2.676801e+02 5.901500e+02
-1 9736     -3.109300e+02 3.301400e+02
-5 9736     -2.470900e+02 -5.178300e+02
-7 9736     -8.103200e+02 1.312200e+02
-13 9736     -3.124100e+02 -1.580700e+02
-1 9737     8.783400e+02 3.296100e+02
-2 9737     2.669800e+02 3.284800e+02
-6 9737     1.711400e+02 5.867500e+02
-1 9738     8.783400e+02 3.296100e+02
-2 9738     2.669800e+02 3.284800e+02
-6 9738     1.711400e+02 5.867500e+02
-1 9739     -2.920500e+02 3.245800e+02
-7 9739     -7.858000e+02 1.344100e+02
-1 9740     -1.281100e+02 3.243200e+02
-7 9740     -6.161600e+02 2.052100e+02
-14 9740     -1.211200e+02 -5.705601e+02
-1 9741     -1.043900e+02 3.174400e+02
-7 9741     -5.882500e+02 2.089800e+02
-1 9742     8.735601e+02 3.048200e+02
-12 9742     2.906801e+02 5.514200e+02
-1 9743     8.807900e+02 3.052200e+02
-6 9743     1.877700e+02 5.657900e+02
-12 9743     2.974700e+02 5.549200e+02
-1 9744     8.807900e+02 3.052200e+02
-6 9744     1.877700e+02 5.657900e+02
-12 9744     2.974700e+02 5.549200e+02
-1 9745     4.908500e+02 2.999200e+02
-6 9745     -2.460700e+02 3.491400e+02
-11 9745     2.976200e+02 -4.083100e+02
-1 9746     4.439200e+02 2.993700e+02
-11 9746     2.586600e+02 -4.209200e+02
-13 9746     2.987100e+02 2.552002e+01
-1 9747     5.023101e+02 2.893100e+02
-6 9747     -2.255500e+02 3.451900e+02
-7 9747     -3.465997e+01 4.153300e+02
-10 9747     7.126001e+01 5.451800e+02
-11 9747     3.106700e+02 -4.141300e+02
-1 9748     8.668900e+02 2.769500e+02
-3 9748     1.424100e+02 -4.287000e+01
-1 9749     4.414301e+02 2.634300e+02
-6 9749     -2.522100e+02 2.899200e+02
-10 9749     2.233002e+01 4.944200e+02
-14 9749     4.704000e+02 -4.562200e+02
-15 9749     1.163600e+02 5.479500e+02
-1 9750     5.227800e+02 2.602600e+02
-6 9750     -1.787200e+02 3.292800e+02
-10 9750     1.062800e+02 5.221400e+02
-14 9750     5.442300e+02 -4.339900e+02
-15 9750     2.151700e+02 5.833000e+02
-1 9751     4.606600e+02 2.513000e+02
-5 9751     5.845900e+02 -3.824100e+02
-6 9751     -2.228800e+02 2.892900e+02
-11 9751     2.891600e+02 -4.585800e+02
-12 9751     -8.173999e+01 2.970500e+02
-13 9751     3.360699e+02 -5.590027e+00
-14 9751     4.959301e+02 -4.624399e+02
-15 9751     1.450800e+02 5.422800e+02
-1 9752     4.200900e+02 2.493900e+02
-5 9752     5.496000e+02 -3.959100e+02
-6 9752     -2.559600e+02 2.660300e+02
-14 9752     4.620400e+02 -4.765601e+02
-15 9752     9.937000e+01 5.211600e+02
-1 9753     4.200900e+02 2.493900e+02
-6 9753     -2.559600e+02 2.660300e+02
-10 9753     8.479980e+00 4.714400e+02
-11 9753     2.569000e+02 -4.705200e+02
-12 9753     -1.157700e+02 2.778500e+02
-15 9753     9.937000e+01 5.211600e+02
-1 9754     6.639900e+02 2.459600e+02
-12 9754     9.215002e+01 3.765800e+02
-1 9755     4.293400e+02 2.446200e+02
-10 9755     1.958002e+01 4.695800e+02
-1 9756     4.597100e+02 2.409500e+02
-6 9756     -2.132400e+02 2.791900e+02
-1 9757     8.390500e+02 2.400300e+02
-10 9757     4.424700e+02 6.179600e+02
-1 9758     -4.210200e+02 2.396800e+02
-7 9758     -8.686100e+02 -4.539978e+00
-13 9758     -3.584300e+02 -2.666000e+02
-1 9759     6.703400e+02 2.338500e+02
-10 9759     2.632300e+02 5.493200e+02
-1 9760     -3.655200e+02 2.321400e+02
-13 9760     -3.035900e+02 -2.558200e+02
-1 9761     8.376200e+02 2.304600e+02
-2 9761     2.791801e+02 2.336300e+02
-6 9761     1.835600e+02 4.757600e+02
-10 9761     4.446801e+02 6.080800e+02
-1 9762     4.186100e+02 2.290800e+02
-10 9762     1.650000e+01 4.492700e+02
-1 9763     8.762100e+02 2.289500e+02
-3 9763     1.758000e+02 -7.090002e+01
-6 9763     2.260400e+02 4.950800e+02
-7 9763     3.148101e+02 5.036300e+02
-9 9763     1.268500e+02 3.063100e+02
-10 9763     4.845100e+02 6.198600e+02
-12 9763     3.328600e+02 4.885400e+02
-1 9764     8.291998e+01 2.262700e+02
-10 9764     -3.343800e+02 3.124100e+02
-1 9765     -2.889500e+02 2.229500e+02
-7 9765     -7.140900e+02 4.244000e+01
-1 9766     4.255900e+02 2.213700e+02
-10 9766     2.715997e+01 4.438000e+02
-1 9767     5.067700e+02 2.189500e+02
-10 9767     1.105300e+02 4.720900e+02
-1 9768     8.696899e+02 2.131700e+02
-2 9768     3.194399e+02 2.393100e+02
-3 9768     1.782400e+02 -8.554999e+01
-6 9768     2.285800e+02 4.773300e+02
-9 9768     1.291400e+02 2.935700e+02
-10 9768     4.835800e+02 6.015900e+02
-1 9769     3.786400e+02 2.124200e+02
-6 9769     -2.540800e+02 2.100100e+02
-10 9769     -1.559003e+01 4.158200e+02
-1 9770     4.385699e+02 2.124300e+02
-10 9770     4.620001e+01 4.386400e+02
-11 9770     2.847000e+02 -4.992000e+02
-1 9771     3.639200e+02 2.118800e+02
-6 9771     -2.664800e+02 2.018800e+02
-10 9771     -3.058002e+01 4.093000e+02
-11 9771     2.209700e+02 -5.191000e+02
-1 9772     5.224000e+02 2.113400e+02
-15 9772     2.422500e+02 5.226100e+02
-1 9773     5.348500e+02 2.096100e+02
-10 9773     1.428000e+02 4.734700e+02
-1 9774     8.060100e+02 2.097200e+02
-7 9774     2.621700e+02 4.624600e+02
-1 9775     5.857000e+02 2.043700e+02
-10 9775     1.951899e+02 4.874400e+02
-1 9776     8.631300e+02 2.028600e+02
-2 9776     3.185100e+02 2.280600e+02
-3 9776     1.779500e+02 -9.656000e+01
-6 9776     2.276300e+02 4.648500e+02
-7 9776     3.138500e+02 4.783300e+02
-9 9776     1.287700e+02 2.842200e+02
-10 9776     4.814600e+02 5.886400e+02
-13 9776     6.802300e+02 7.504999e+01
-1 9777     8.631300e+02 2.028600e+02
-2 9777     3.185100e+02 2.280600e+02
-6 9777     2.276300e+02 4.648500e+02
-7 9777     3.138500e+02 4.783300e+02
-9 9777     1.287700e+02 2.842200e+02
-10 9777     4.814600e+02 5.886400e+02
-11 9777     6.359900e+02 -3.933000e+02
-13 9777     6.802300e+02 7.504999e+01
-1 9778     7.959900e+02 2.022100e+02
-6 9778     1.534800e+02 4.273400e+02
-10 9778     4.124301e+02 5.634800e+02
-12 9778     2.675100e+02 4.221400e+02
-1 9779     5.550500e+02 1.976400e+02
-6 9779     -8.938000e+01 2.890300e+02
-1 9780     3.947900e+02 1.959000e+02
-6 9780     -2.223600e+02 2.034900e+02
-1 9781     5.774600e+02 1.961900e+02
-10 9781     1.909100e+02 4.755000e+02
-1 9782     8.546100e+02 1.933600e+02
-3 9782     1.747900e+02 -1.085100e+02
-6 9782     2.234400e+02 4.508200e+02
-10 9782     4.760400e+02 5.755600e+02
-1 9783     6.930100e+02 1.871000e+02
-6 9783     3.066998e+01 3.477000e+02
-1 9784     4.440500e+02 1.860300e+02
-10 9784     6.384003e+01 4.135400e+02
-1 9785     -1.664200e+02 1.839100e+02
-15 9785     -5.963400e+02 1.503500e+02
-1 9786     1.456700e+02 1.832500e+02
-7 9786     -2.249700e+02 2.183900e+02
-10 9786     -2.125900e+02 2.950100e+02
-1 9787     1.521000e+02 1.819400e+02
-4 9787     -1.798600e+02 -3.269200e+02
-5 9787     4.475601e+02 -5.286100e+02
-6 9787     -2.930800e+02 1.059400e+02
-8 9787     -4.796997e+01 -8.980011e+00
-10 9787     -2.054500e+02 2.961700e+02
-12 9787     -2.252000e+02 1.536400e+02
-15 9787     -1.585700e+02 3.152400e+02
-1 9788     -2.764001e+01 1.785700e+02
-2 9788     -4.263900e+02 -1.710200e+02
-13 9788     1.485999e+01 -1.973100e+02
-1 9789     8.227400e+02 1.747200e+02
-10 9789     4.506600e+02 5.454200e+02
-1 9790     8.227400e+02 1.747200e+02
-10 9790     4.506600e+02 5.454200e+02
-1 9791     2.864399e+02 1.727800e+02
-15 9791     3.501001e+01 3.767200e+02
-1 9792     1.026700e+02 1.674700e+02
-7 9792     -2.524000e+02 1.882600e+02
-10 9792     -2.491300e+02 2.605000e+02
-15 9792     -2.105000e+02 2.725500e+02
-1 9793     3.694700e+02 1.652700e+02
-10 9793     5.138000e+01 3.683800e+02
-14 9793     6.372300e+02 -5.453900e+02
-15 9793     1.370800e+02 4.060900e+02
-1 9794     3.694700e+02 1.652700e+02
-10 9794     5.138000e+01 3.683800e+02
-14 9794     6.372300e+02 -5.453900e+02
-15 9794     1.370800e+02 4.060900e+02
-1 9795     4.088500e+02 1.645300e+02
-15 9795     1.859700e+02 4.251400e+02
-1 9796     9.106000e+01 1.630600e+02
-6 9796     -3.254500e+02 5.533002e+01
-12 9796     -2.662800e+02 1.089000e+02
-15 9796     -2.220200e+02 2.620700e+02
-1 9797     4.006000e+02 1.627800e+02
-15 9797     1.774600e+02 4.184300e+02
-1 9798     4.006000e+02 1.627800e+02
-10 9798     8.583002e+01 3.784300e+02
-15 9798     1.774600e+02 4.184300e+02
-1 9799     2.419800e+02 1.607700e+02
-15 9799     -9.099976e+00 3.400300e+02
-1 9800     1.858600e+02 1.565000e+02
-10 9800     -1.324700e+02 2.862900e+02
-15 9800     -7.984998e+01 3.062700e+02
-1 9801     7.999399e+02 1.566700e+02
-10 9801     4.344900e+02 5.186900e+02
-1 9802     1.553003e+01 1.532000e+02
-5 9802     2.248700e+02 -6.173000e+02
-7 9802     -3.723600e+02 1.160200e+02
-10 9802     -3.671100e+02 2.043600e+02
-15 9802     -3.401100e+02 2.042500e+02
-1 9803     8.687500e+02 1.527700e+02
-7 9803     3.376899e+02 4.405600e+02
-1 9804     -2.446700e+02 1.515500e+02
-10 9804     -6.618400e+02 8.878003e+01
-1 9805     6.683500e+02 1.475300e+02
-6 9805     4.848999e+01 3.021000e+02
-1 9806     -1.935500e+02 1.463700e+02
-15 9806     -6.078400e+02 8.735001e+01
-1 9807     1.248700e+02 1.444100e+02
-15 9807     -1.632100e+02 2.568700e+02
-1 9808     8.042600e+02 1.442400e+02
-6 9808     1.966500e+02 3.786000e+02
-7 9808     2.863000e+02 4.093300e+02
-10 9808     4.433300e+02 5.077100e+02
-12 9808     3.066600e+02 3.761900e+02
-15 9808     6.141899e+02 5.754100e+02
-1 9809     4.357000e+02 1.430400e+02
-10 9809     1.311000e+02 3.720600e+02
-1 9810     5.077900e+02 1.431200e+02
-10 9810     1.492900e+02 3.938100e+02
-1 9811     6.101200e+02 1.416700e+02
-10 9811     2.490900e+02 4.317200e+02
-1 9812     4.366400e+02 1.385300e+02
-7 9812     8.370001e+01 3.118500e+02
-10 9812     1.353500e+02 3.673700e+02
-15 9812     2.347200e+02 4.069500e+02
-1 9813     8.752700e+02 1.345100e+02
-6 9813     3.337200e+02 4.291500e+02
-8 9813     4.085000e+02 1.667500e+02
-10 9813     5.352800e+02 5.254100e+02
-1 9814     3.601300e+02 1.299600e+02
-12 9814     8.459003e+01 2.627000e+02
-14 9814     6.668400e+02 -5.800699e+02
-1 9815     1.285400e+02 1.285000e+02
-7 9815     -1.808400e+02 1.796300e+02
-15 9815     -1.400400e+02 2.418000e+02
-1 9816     2.355400e+02 1.278100e+02
-5 9816     6.607800e+02 -5.425900e+02
-6 9816     -4.575000e+01 1.516200e+02
-8 9816     1.423000e+02 6.276001e+01
-12 9816     -1.959003e+01 2.052600e+02
-15 9816     3.510010e+00 2.970200e+02
-1 9817     7.775000e+02 1.281300e+02
-10 9817     4.221200e+02 4.813200e+02
-1 9818     9.223999e+01 1.253900e+02
-10 9818     -2.311300e+02 2.120000e+02
-15 9818     -1.913000e+02 2.176500e+02
-1 9819     4.605601e+02 1.248300e+02
-15 9819     2.696100e+02 4.016500e+02
-1 9820     3.465800e+02 1.227500e+02
-6 9820     4.309998e+01 2.035000e+02
-10 9820     5.415002e+01 3.160700e+02
-15 9820     1.385800e+02 3.447300e+02
-1 9821     8.230100e+02 1.222300e+02
-10 9821     4.711000e+02 4.927900e+02
-1 9822     4.691700e+02 1.203700e+02
-15 9822     2.809900e+02 3.997800e+02
-1 9823     2.146997e+01 1.129200e+02
-10 9823     -3.050200e+02 1.681000e+02
-1 9824     5.965500e+02 1.132000e+02
-10 9824     2.499800e+02 3.973000e+02
-1 9825     1.744700e+02 1.083100e+02
-2 9825     8.651001e+01 8.284998e+01
-3 9825     -4.299988e+00 -2.322600e+02
-4 9825     -2.191800e+02 -4.002100e+02
-5 9825     6.049301e+02 -5.849399e+02
-6 9825     -9.378000e+01 9.528003e+01
-7 9825     -1.166800e+02 1.863300e+02
-8 9825     1.044100e+02 2.376999e+01
-10 9825     -1.183000e+02 2.305800e+02
-13 9825     3.438300e+02 -1.583100e+02
-15 9825     -6.323999e+01 2.403600e+02
-1 9826     6.209100e+02 1.069200e+02
-10 9826     2.765100e+02 3.999200e+02
-15 9826     4.155300e+02 4.436900e+02
-1 9827     4.345400e+02 1.061200e+02
-15 9827     2.500400e+02 3.668600e+02
-1 9828     2.466300e+02 1.057000e+02
-15 9828     3.010999e+01 2.759700e+02
-1 9829     2.447000e+02 1.036500e+02
-5 9829     6.898700e+02 -5.634900e+02
-6 9829     -1.184998e+01 1.378800e+02
-10 9829     -3.795001e+01 2.551000e+02
-12 9829     1.112000e+01 1.916800e+02
-15 9829     2.921997e+01 2.721300e+02
-1 9830     6.391801e+02 9.801999e+01
-15 9830     4.414301e+02 4.415100e+02
-1 9831     7.052300e+02 9.750000e+01
-15 9831     5.167800e+02 4.717600e+02
-1 9832     2.153400e+02 9.678000e+01
-5 9832     6.611899e+02 -5.804800e+02
-7 9832     -6.978998e+01 1.955700e+02
-10 9832     -6.729999e+01 2.357200e+02
-1 9833     -1.547998e+01 9.607999e+01
-7 9833     -3.660400e+02 5.338000e+01
-10 9833     -3.699500e+02 1.287800e+02
-1 9834     -1.547998e+01 9.607999e+01
-7 9834     -3.660400e+02 5.338000e+01
-1 9835     1.493800e+02 9.425000e+01
-7 9835     -1.349100e+02 1.621900e+02
-13 9835     3.268500e+02 -1.776100e+02
-15 9835     -8.916998e+01 2.112200e+02
-1 9836     8.461600e+02 9.466000e+01
-10 9836     5.205800e+02 4.744000e+02
-15 9836     7.034200e+02 5.391800e+02
-1 9837     1.680699e+02 9.151999e+01
-10 9837     -1.169500e+02 2.100700e+02
-1 9838     1.680699e+02 9.151999e+01
-2 9838     9.537000e+01 6.839001e+01
-10 9838     -1.169500e+02 2.100700e+02
-1 9839     6.245100e+02 9.026001e+01
-10 9839     2.873400e+02 3.846700e+02
-1 9840     1.164100e+02 8.862000e+01
-7 9840     -1.674300e+02 1.402200e+02
-10 9840     -1.766900e+02 1.844100e+02
-1 9841     8.553400e+02 8.807001e+01
-2 9841     4.292300e+02 1.898100e+02
-3 9841     2.914000e+02 -1.288100e+02
-7 9841     3.756600e+02 3.948800e+02
-9 9841     2.269399e+02 2.559000e+02
-10 9841     5.323199e+02 4.711900e+02
-11 9841     6.857400e+02 -4.933900e+02
-12 9841     4.273199e+02 3.855700e+02
-15 9841     7.177100e+02 5.359900e+02
-1 9842     2.814600e+02 8.626999e+01
-13 9842     4.446600e+02 -1.391300e+02
-1 9843     5.739500e+02 8.560001e+01
-15 9843     3.733199e+02 3.960200e+02
-1 9844     4.630699e+02 8.356000e+01
-10 9844     1.884900e+02 3.212300e+02
-15 9844     2.980400e+02 3.537000e+02
-1 9845     2.438600e+02 8.281000e+01
-6 9845     7.450012e+00 1.199900e+02
-9 9845     3.809998e+01 1.823100e+02
-10 9845     -2.790997e+01 2.331200e+02
-1 9846     2.661600e+02 8.203000e+01
-3 9846     1.045500e+02 -1.942900e+02
-1 9847     6.067000e+02 8.029001e+01
-10 9847     2.751400e+02 3.673400e+02
-15 9847     4.142900e+02 4.052100e+02
-1 9848     4.789399e+02 8.004999e+01
-10 9848     2.038300e+02 3.233700e+02
-15 9848     3.168600e+02 3.566100e+02
-1 9849     4.789399e+02 8.004999e+01
-15 9849     3.168600e+02 3.566100e+02
-1 9850     5.785300e+02 7.901999e+01
-15 9850     3.815100e+02 3.898500e+02
-1 9851     4.891200e+02 7.845001e+01
-15 9851     3.285601e+02 3.598300e+02
-1 9852     4.809200e+02 7.751001e+01
-10 9852     2.070699e+02 3.216500e+02
-1 9853     4.809200e+02 7.751001e+01
-10 9853     2.070699e+02 3.216500e+02
-1 9854     2.695699e+02 7.621002e+01
-5 9854     7.358900e+02 -5.837100e+02
-6 9854     3.664001e+01 1.293700e+02
-10 9854     2.130005e+00 2.364900e+02
-12 9854     5.873999e+01 1.819800e+02
-15 9854     7.609998e+01 2.509100e+02
-1 9855     8.804500e+02 7.466998e+01
-15 9855     7.539399e+02 5.319700e+02
-1 9856     6.209003e+01 6.509003e+01
-10 9856     -2.289700e+02 1.351200e+02
-15 9856     -1.902200e+02 1.280500e+02
-1 9857     1.936801e+02 6.506000e+01
-6 9857     -3.056000e+01 7.189001e+01
-1 9858     8.614200e+02 6.410999e+01
-6 9858     3.588500e+02 3.596000e+02
-7 9858     3.900699e+02 3.781700e+02
-8 9858     4.280400e+02 1.170700e+02
-9 9858     2.430300e+02 2.446900e+02
-10 9858     5.474100e+02 4.497100e+02
-11 9858     7.015300e+02 -5.127700e+02
-12 9858     4.467300e+02 3.679700e+02
-15 9858     7.366400e+02 5.102100e+02
-1 9859     3.187800e+02 6.364001e+01
-6 9859     8.912000e+01 1.460100e+02
-1 9860     8.088600e+02 6.345001e+01
-15 9860     6.578600e+02 4.809000e+02
-1 9861     8.745500e+02 6.185999e+01
-3 9861     3.215500e+02 -1.342000e+02
-6 9861     3.728800e+02 3.658200e+02
-7 9861     4.016200e+02 3.818900e+02
-10 9861     5.619700e+02 4.521700e+02
-15 9861     7.531200e+02 5.139200e+02
-1 9862     7.936300e+02 6.059003e+01
-15 9862     6.407600e+02 4.701300e+02
-1 9863     7.936300e+02 6.059003e+01
-6 9863     2.334700e+02 2.953200e+02
-15 9863     6.407600e+02 4.701300e+02
-1 9864     2.354301e+02 6.001001e+01
-3 9864     1.003900e+02 -2.222700e+02
-6 9864     1.878998e+01 9.487000e+01
-10 9864     -2.615997e+01 2.055100e+02
-12 9864     3.714001e+01 1.487200e+02
-15 9864     4.301001e+01 2.140000e+02
-1 9865     4.714000e+02 5.915002e+01
-15 9865     3.213800e+02 3.280000e+02
-1 9866     2.343500e+02 5.713000e+01
-15 9866     4.289001e+01 2.099300e+02
-1 9867     8.799000e+02 5.490002e+01
-6 9867     3.821700e+02 3.626200e+02
-8 9867     4.445400e+02 1.210400e+02
-15 9867     7.624500e+02 5.086200e+02
-1 9868     2.842200e+02 5.215997e+01
-2 9868     2.419600e+02 1.075300e+02
-10 9868     2.887000e+01 2.177300e+02
-15 9868     1.076100e+02 2.291000e+02
-1 9869     4.348600e+02 5.159003e+01
-10 9869     1.780200e+02 2.776300e+02
-15 9869     2.848400e+02 3.020100e+02
-1 9870     8.685400e+02 4.866998e+01
-10 9870     5.606300e+02 4.370800e+02
-12 9870     4.610100e+02 3.593800e+02
-15 9870     7.519900e+02 4.958400e+02
-1 9871     3.660200e+02 4.772998e+01
-15 9871     2.079500e+02 2.641800e+02
-1 9872     3.804200e+02 4.723999e+01
-10 9872     1.276100e+02 2.520400e+02
-15 9872     2.248600e+02 2.707000e+02
-1 9873     5.130601e+02 4.716998e+01
-15 9873     3.708101e+02 3.329300e+02
-1 9874     2.959200e+02 4.615002e+01
-9 9874     9.976001e+01 1.848000e+02
-10 9874     4.396997e+01 2.163900e+02
-1 9875     1.876200e+02 4.540997e+01
-7 9875     -6.842999e+01 1.397400e+02
-13 9875     3.877900e+02 -2.002600e+02
-15 9875     -1.001001e+01 1.712300e+02
-1 9876     5.928003e+01 4.423999e+01
-10 9876     -2.202400e+02 1.116800e+02
-1 9877     5.928003e+01 4.423999e+01
-7 9877     -2.015700e+02 7.359003e+01
-15 9877     -1.802600e+02 1.010000e+02
-1 9878     5.928003e+01 4.423999e+01
-6 9878     -1.857200e+02 -5.115002e+01
-10 9878     -2.202400e+02 1.116800e+02
-12 9878     -1.669500e+02 6.929993e+00
-1 9879     5.928003e+01 4.423999e+01
-6 9879     -1.857200e+02 -5.115002e+01
-12 9879     -1.669500e+02 6.929993e+00
-1 9880     6.244000e+01 4.303003e+01
-10 9880     -2.164200e+02 1.117200e+02
-1 9881     6.244000e+01 4.303003e+01
-10 9881     -2.164200e+02 1.117200e+02
-1 9882     8.356899e+02 4.312000e+01
-8 9882     4.163000e+02 9.075000e+01
-13 9882     7.480200e+02 -3.954999e+01
-15 9882     7.146700e+02 4.732800e+02
-1 9883     4.951500e+02 4.245001e+01
-15 9883     3.558400e+02 3.192900e+02
-1 9884     7.163000e+01 4.208002e+01
-10 9884     -2.062400e+02 1.149500e+02
-15 9884     -1.637300e+02 1.047200e+02
-1 9885     1.622200e+02 3.983002e+01
-10 9885     -9.760999e+01 1.529500e+02
-1 9886     3.322500e+02 3.981000e+01
-15 9886     1.720800e+02 2.381900e+02
-1 9887     2.610000e+02 3.785999e+01
-2 9887     2.346500e+02 8.721002e+01
-10 9887     1.122998e+01 1.933200e+02
-15 9887     8.690002e+01 2.000600e+02
-1 9888     2.610000e+02 3.785999e+01
-2 9888     2.346500e+02 8.721002e+01
-10 9888     1.122998e+01 1.933200e+02
-12 9888     7.859003e+01 1.435600e+02
-15 9888     8.690002e+01 2.000600e+02
-1 9889     4.421600e+02 3.665997e+01
-15 9889     3.017000e+02 2.874400e+02
-1 9890     3.274200e+02 3.450000e+01
-15 9890     1.693300e+02 2.294700e+02
-1 9891     3.858400e+02 3.203998e+01
-10 9891     1.400300e+02 2.380800e+02
-15 9891     2.398600e+02 2.547700e+02
-1 9892     2.455500e+02 3.171002e+01
-7 9892     -8.979980e+00 1.546700e+02
-12 9892     6.475000e+01 1.289900e+02
-1 9893     3.745000e+02 2.865997e+01
-15 9893     2.281100e+02 2.453900e+02
-1 9894     4.444100e+02 2.633002e+01
-10 9894     1.982500e+02 2.552400e+02
-1 9895     2.773900e+02 2.494000e+01
-15 9895     1.137500e+02 1.928600e+02
-1 9896     2.350100e+02 2.406000e+01
-2 9896     2.225200e+02 6.359998e+01
-6 9896     4.598999e+01 6.275000e+01
-7 9896     -1.301001e+01 1.432700e+02
-8 9896     2.130000e+02 4.160004e+00
-9 9896     7.488000e+01 1.464400e+02
-10 9896     -1.003998e+01 1.677100e+02
-12 9896     6.196997e+01 1.157100e+02
-15 9896     6.209003e+01 1.698700e+02
-1 9897     4.428400e+02 2.253003e+01
-10 9897     1.982600e+02 2.515300e+02
-1 9898     4.459399e+02 2.220001e+01
-10 9898     2.013500e+02 2.518600e+02
-15 9898     3.129900e+02 2.718600e+02
-1 9899     8.699800e+02 1.963000e+01
-6 9899     3.915800e+02 3.251500e+02
-10 9899     5.725200e+02 4.081500e+02
-15 9899     7.669700e+02 4.617500e+02
-1 9900     8.699800e+02 1.963000e+01
-10 9900     5.725200e+02 4.081500e+02
-1 9901     6.502200e+02 1.921997e+01
-15 9901     4.981500e+02 3.534600e+02
-1 9902     -1.717800e+02 1.776001e+01
-2 9902     -3.959200e+02 -3.590800e+02
-6 9902     -5.743600e+02 -3.200100e+02
-7 9902     -4.641100e+02 -8.629999e+01
-8 9902     -2.775500e+02 -3.151600e+02
-15 9902     -4.965300e+02 -6.415997e+01
-1 9903     -6.260010e+00 1.481000e+01
-10 9903     -2.788800e+02 5.115997e+01
-15 9903     -2.481600e+02 2.963000e+01
-1 9904     8.379100e+02 1.507001e+01
-7 9904     3.883101e+02 3.299500e+02
-8 9904     4.295300e+02 7.464999e+01
-9 9904     2.470000e+02 2.008100e+02
-1 9905     8.298800e+02 1.428003e+01
-2 9905     4.436600e+02 1.174500e+02
-6 9905     3.526100e+02 2.974200e+02
-15 9905     7.212300e+02 4.362300e+02
-1 9906     2.118300e+02 1.401001e+01
-2 9906     2.083400e+02 4.219000e+01
-10 9906     -3.056000e+01 1.472400e+02
-15 9906     3.821997e+01 1.454100e+02
-1 9907     4.494399e+02 1.271997e+01
-15 9907     3.221300e+02 2.616100e+02
-1 9908     3.482800e+02 1.078998e+01
-10 9908     1.130700e+02 2.009800e+02
-15 9908     2.068700e+02 2.107100e+02
-1 9909     2.798900e+02 9.299988e+00
-10 9909     4.447998e+01 1.713900e+02
-15 9909     1.258200e+02 1.746300e+02
-1 9910     8.409200e+02 9.320007e+00
-6 9910     3.666200e+02 2.993500e+02
-15 9910     7.370000e+02 4.358400e+02
-1 9911     6.395100e+02 7.500000e+00
-15 9911     4.921700e+02 3.345100e+02
-1 9912     2.910900e+02 6.419983e+00
-7 9912     4.435999e+01 1.519300e+02
-15 9912     1.402100e+02 1.767800e+02
-1 9913     4.615500e+02 4.719971e+00
-15 9913     3.397200e+02 2.586000e+02
-1 9914     2.232600e+02 3.080017e+00
-7 9914     -1.378003e+01 1.196100e+02
-10 9914     -1.350000e+01 1.409400e+02
-15 9914     5.825000e+01 1.381400e+02
-1 9915     2.516600e+02 3.130005e+00
-2 9915     2.516000e+02 5.508002e+01
-3 9915     1.560500e+02 -2.540900e+02
-6 9915     7.610999e+01 5.444000e+01
-7 9915     1.165997e+01 1.325400e+02
-10 9915     1.658002e+01 1.526800e+02
-12 9915     9.228003e+01 1.063100e+02
-15 9915     9.373999e+01 1.531400e+02
-1 9916     4.577300e+02 2.989990e+00
-10 9916     2.205000e+02 2.370200e+02
-15 9916     3.362400e+02 2.541200e+02
-1 9917     7.859800e+02 2.809998e+00
-15 9917     6.732500e+02 4.013800e+02
-1 9918     4.471400e+02 1.979980e+00
-10 9918     2.115200e+02 2.315000e+02
-15 9918     3.249900e+02 2.481400e+02
-1 9919     1.251400e+02 7.999878e-01
-6 9919     -6.141998e+01 -3.850000e+01
-12 9919     -4.903998e+01 1.620001e+01
-1 9920     2.022000e+02 1.359985e+00
-3 9920     1.162400e+02 -2.838000e+02
-7 9920     -3.266998e+01 1.083400e+02
-15 9920     3.270001e+01 1.247200e+02
-1 9921     6.330000e+02 8.300171e-01
-10 9921     3.375699e+02 2.969700e+02
-15 9921     4.884700e+02 3.233100e+02
-1 9922     5.028400e+02 -6.599731e-01
-10 9922     2.629500e+02 2.505500e+02
-15 9922     3.870800e+02 2.708600e+02
-1 9923     8.051100e+02 -4.199829e-01
-15 9923     6.980699e+02 4.066900e+02
-1 9924     4.585400e+02 -1.679993e+00
-15 9924     3.394800e+02 2.488600e+02
-1 9925     4.835200e+02 -2.159973e+00
-10 9925     2.464399e+02 2.420300e+02
-15 9925     3.672600e+02 2.605800e+02
-1 9926     2.550601e+02 -4.630005e+00
-2 9926     2.602300e+02 5.065002e+01
-6 9926     8.526001e+01 4.859003e+01
-10 9926     2.433002e+01 1.462800e+02
-15 9926     1.027500e+02 1.451400e+02
-1 9927     1.970400e+02 -4.719971e+00
-2 9927     2.073000e+02 1.771997e+01
-15 9927     2.953998e+01 1.148700e+02
-1 9928     2.294301e+02 -4.869995e+00
-2 9928     2.378600e+02 3.671002e+01
-7 9928     -4.599976e+00 1.154700e+02
-10 9928     -3.270020e+00 1.349800e+02
-15 9928     7.021002e+01 1.312900e+02
-1 9929     2.294301e+02 -4.869995e+00
-2 9929     2.378600e+02 3.671002e+01
-4 9929     -2.907300e+02 -4.745200e+02
-7 9929     -4.599976e+00 1.154700e+02
-10 9929     -3.270020e+00 1.349800e+02
-15 9929     7.021002e+01 1.312900e+02
-1 9930     8.519301e+02 -4.919983e+00
-15 9930     7.567800e+02 4.245400e+02
-1 9931     8.519301e+02 -4.919983e+00
-2 9931     4.744900e+02 1.176500e+02
-15 9931     7.567800e+02 4.245400e+02
-1 9932     2.139301e+02 -6.940002e+00
-2 9932     2.252000e+02 2.622998e+01
-9 9932     7.889001e+01 1.154200e+02
-10 9932     -1.888000e+01 1.263200e+02
-15 9932     5.203998e+01 1.208800e+02
-1 9933     8.432500e+02 -7.219971e+00
-2 9933     4.675100e+02 1.104600e+02
-15 9933     7.477500e+02 4.173400e+02
-1 9934     4.296000e+02 -8.250000e+00
-15 9934     3.103101e+02 2.273800e+02
-1 9935     2.915500e+02 -9.280029e+00
-6 9935     1.203100e+02 6.615997e+01
-10 9935     6.406000e+01 1.569000e+02
-12 9935     1.393300e+02 1.163600e+02
-15 9935     1.493199e+02 1.577300e+02
-1 9936     1.668000e+02 -1.103003e+01
-2 9936     1.797000e+02 -8.469971e+00
-6 9936     -1.229980e+00 -1.654999e+01
-7 9936     -6.102002e+01 8.082001e+01
-8 9936     1.755200e+02 -5.494000e+01
-10 9936     -6.917999e+01 1.015000e+02
-15 9936     -6.159973e+00 9.113000e+01
-1 9937     7.976500e+02 -1.139001e+01
-15 9937     6.941200e+02 3.901500e+02
-1 9938     7.862900e+02 -1.317999e+01
-15 9938     6.811700e+02 3.825900e+02
-1 9939     7.862900e+02 -1.317999e+01
-6 9939     3.210500e+02 2.452900e+02
-10 9939     4.995601e+02 3.438100e+02
-12 9939     4.115200e+02 2.549700e+02
-15 9939     6.811700e+02 3.825900e+02
-1 9940     2.693800e+02 -1.601001e+01
-10 9940     4.435999e+01 1.406400e+02
-15 9940     1.255400e+02 1.384300e+02
-1 9941     2.693800e+02 -1.601001e+01
-2 9941     2.794900e+02 4.825000e+01
-15 9941     1.255400e+02 1.384300e+02
-1 9942     1.480400e+02 -1.660999e+01
-15 9942     -2.785999e+01 7.363000e+01
-1 9943     2.491801e+02 -1.684998e+01
-2 9943     2.633600e+02 3.728003e+01
-15 9943     1.010900e+02 1.266300e+02
-1 9944     2.520601e+02 -1.698999e+01
-15 9944     1.053700e+02 1.282100e+02
-1 9945     3.364399e+02 -1.704999e+01
-10 9945     1.128600e+02 1.675300e+02
-15 9945     2.070000e+02 1.710800e+02
-1 9946     8.531100e+02 -1.866998e+01
-6 9946     3.952900e+02 2.827900e+02
-9 9946     2.748101e+02 1.898400e+02
-13 9946     7.861000e+02 -7.854999e+01
-1 9947     4.184000e+02 -2.035999e+01
-10 9947     1.940100e+02 1.971200e+02
-15 9947     3.037800e+02 2.072800e+02
-1 9948     3.119100e+02 -2.112000e+01
-10 9948     9.002002e+01 1.533600e+02
-15 9948     1.800400e+02 1.539200e+02
-1 9949     1.321600e+02 -2.640997e+01
-7 9949     -8.921002e+01 4.946002e+01
-9 9949     1.857001e+01 4.832001e+01
-15 9949     -4.369000e+01 5.346997e+01
-1 9950     3.901300e+02 -2.662000e+01
-15 9950     2.742100e+02 1.864900e+02
-1 9951     8.212700e+02 -2.788000e+01
-6 9951     3.672300e+02 2.543900e+02
-8 9951     4.352400e+02 3.822000e+01
-9 9951     2.541400e+02 1.633200e+02
-15 9951     7.307400e+02 3.822800e+02
-1 9952     3.283300e+02 -2.900000e+01
-6 9952     1.623600e+02 6.884998e+01
-10 9952     1.102700e+02 1.517000e+02
-12 9952     1.845500e+02 1.171200e+02
-15 9952     2.037400e+02 1.524800e+02
-1 9953     5.000699e+02 -2.904999e+01
-15 9953     3.988101e+02 2.355400e+02
-1 9954     8.470300e+02 -2.902002e+01
-2 9954     4.825100e+02 9.602002e+01
-3 9954     3.471200e+02 -2.164100e+02
-6 9954     3.950400e+02 2.696400e+02
-7 9954     4.127500e+02 2.987300e+02
-9 9954     2.746700e+02 1.791800e+02
-12 9954     4.803800e+02 2.786500e+02
-15 9954     7.622200e+02 3.936200e+02
-1 9955     3.371600e+02 -2.966998e+01
-10 9955     1.197300e+02 1.545100e+02
-15 9955     2.149100e+02 1.561900e+02
-1 9956     3.732300e+02 -3.014001e+01
-12 9956     2.219500e+02 1.372400e+02
-15 9956     2.571300e+02 1.732400e+02
-1 9957     8.319500e+02 -3.028003e+01
-2 9957     4.691500e+02 8.477002e+01
-6 9957     3.797400e+02 2.590200e+02
-8 9957     4.444700e+02 4.220001e+01
-9 9957     2.637800e+02 1.687100e+02
-10 9957     5.531600e+02 3.443000e+02
-12 9957     4.664500e+02 2.687400e+02
-15 9957     7.447400e+02 3.845600e+02
-1 9958     1.127800e+02 -3.208002e+01
-15 9958     -6.648999e+01 3.551001e+01
-1 9959     7.925601e+02 -3.234003e+01
-10 9959     5.129700e+02 3.271100e+02
-15 9959     6.977700e+02 3.627600e+02
-1 9960     4.164200e+02 -3.316998e+01
-10 9960     1.976100e+02 1.830800e+02
-15 9960     3.083199e+02 1.907900e+02
-1 9961     4.164200e+02 -3.316998e+01
-10 9961     1.976100e+02 1.830800e+02
-15 9961     3.083199e+02 1.907900e+02
-1 9962     6.289001e+01 -3.350000e+01
-2 9962     8.540997e+01 -9.770001e+01
-3 9962     5.309998e+00 -4.062500e+02
-6 9962     -9.998999e+01 -1.127300e+02
-12 9962     -9.315002e+01 -5.679999e+01
-1 9963     4.673700e+02 -3.352002e+01
-15 9963     3.655800e+02 2.149200e+02
-1 9964     3.653500e+02 -3.440002e+01
-10 9964     1.489500e+02 1.610500e+02
-15 9964     2.497800e+02 1.640900e+02
-1 9965     3.273700e+02 -3.722998e+01
-10 9965     1.129800e+02 1.427300e+02
-15 9965     2.071400e+02 1.419100e+02
-1 9966     3.237000e+02 -3.790002e+01
-15 9966     2.031400e+02 1.392300e+02
-1 9967     -1.818400e+02 -3.842999e+01
-6 9967     -5.151800e+02 -3.795900e+02
-1 9968     4.104500e+02 -3.840002e+01
-10 9968     1.940300e+02 1.759000e+02
-1 9969     -2.353000e+02 -3.953998e+01
-15 9969     -5.428400e+02 -1.714800e+02
-1 9970     3.342400e+02 -4.029999e+01
-15 9970     2.162500e+02 1.420400e+02
-1 9971     3.824500e+02 -4.002002e+01
-13 9971     5.679700e+02 -2.046300e+02
-15 9971     2.727500e+02 1.659500e+02
-1 9972     2.193000e+02 -4.142999e+01
-15 9972     7.703998e+01 8.157999e+01
-1 9973     2.193000e+02 -4.142999e+01
-2 9973     2.534100e+02 -1.099854e-01
-15 9973     7.703998e+01 8.157999e+01
-1 9974     1.818000e+02 -4.259998e+01
-9 9974     7.394000e+01 7.259998e+01
-15 9974     2.960999e+01 6.047998e+01
-1 9975     4.426000e+02 -4.453998e+01
-10 9975     2.267900e+02 1.822800e+02
-15 9975     3.435500e+02 1.898400e+02
-1 9976     2.548600e+02 -4.688000e+01
-2 9976     2.869700e+02 1.423999e+01
-6 9976     1.122100e+02 8.890015e+00
-8 9976     2.647100e+02 -3.762000e+01
-10 9976     4.178003e+01 1.020300e+02
-12 9976     1.274900e+02 5.857001e+01
-15 9976     1.234700e+02 9.325000e+01
-1 9977     3.691200e+02 -4.721002e+01
-7 9977     1.311200e+02 1.375600e+02
-10 9977     1.581600e+02 1.496600e+02
-1 9978     4.577300e+02 -4.864001e+01
-10 9978     2.423800e+02 1.838600e+02
-1 9979     4.577300e+02 -4.864001e+01
-10 9979     2.423800e+02 1.838600e+02
-1 9980     5.431600e+02 -4.948999e+01
-15 9980     4.478199e+02 2.293700e+02
-1 9981     4.864600e+02 -5.020001e+01
-15 9981     3.944200e+02 2.037700e+02
-1 9982     8.599399e+02 -5.031000e+01
-6 9982     4.199100e+02 2.594000e+02
-7 9982     4.315300e+02 2.872500e+02
-15 9982     7.880800e+02 3.748900e+02
-1 9983     2.028800e+02 -5.183002e+01
-2 9983     2.438101e+02 -2.109003e+01
-7 9983     -7.960022e+00 6.209003e+01
-9 9983     9.665002e+01 7.729999e+01
-1 9984     4.748500e+02 -5.438000e+01
-10 9984     2.603500e+02 1.849600e+02
-15 9984     3.842400e+02 1.933100e+02
-1 9985     2.169900e+02 -6.013000e+01
-2 9985     2.625601e+02 -1.870001e+01
-10 9985     7.900024e+00 7.215997e+01
-15 9985     8.321002e+01 5.710999e+01
-1 9986     3.845200e+02 -6.090997e+01
-10 9986     1.786700e+02 1.418500e+02
-15 9986     2.854600e+02 1.415600e+02
-1 9987     8.019900e+02 -6.103003e+01
-6 9987     3.651000e+02 2.123800e+02
-8 9987     4.335601e+02 5.600006e+00
-12 9987     4.524700e+02 2.222800e+02
-15 9987     7.230100e+02 3.336600e+02
-1 9988     1.775699e+02 -6.603003e+01
-2 9988     2.263900e+02 -5.115002e+01
-3 9988     1.373000e+02 -3.569900e+02
-10 9988     -3.346997e+01 4.809003e+01
-15 9988     3.584003e+01 2.866998e+01
-1 9989     7.628998e+01 -6.673999e+01
-8 9989     1.270200e+02 -1.452600e+02
-1 9990     3.323300e+02 -6.771997e+01
-2 9990     3.558500e+02 2.996002e+01
-6 9990     1.886700e+02 3.534003e+01
-8 9990     3.235900e+02 -2.394000e+01
-10 9990     1.304400e+02 1.133500e+02
-15 9990     2.281400e+02 1.075000e+02
-1 9991     2.701200e+02 -6.871002e+01
-2 9991     3.121801e+02 1.979980e+00
-1 9992     2.926400e+02 -7.007001e+01
-15 9992     1.813800e+02 8.409000e+01
-1 9993     2.591100e+02 -7.229999e+01
-15 9993     1.424399e+02 6.335999e+01
-1 9994     2.864500e+02 -7.303998e+01
-7 9994     7.521997e+01 8.145999e+01
-10 9994     8.577002e+01 8.865002e+01
-15 9994     1.756300e+02 7.720001e+01
-1 9995     2.996700e+02 -7.352002e+01
-2 9995     3.369600e+02 1.140002e+01
-1 9996     4.631100e+02 -7.446002e+01
-10 9996     2.574800e+02 1.599100e+02
-15 9996     3.807700e+02 1.635800e+02
-1 9997     2.965900e+02 -7.569000e+01
-2 9997     3.351700e+02 8.099976e+00
-6 9997     1.645400e+02 7.559998e+00
-1 9998     7.948101e+02 -7.537000e+01
-7 9998     3.858400e+02 2.397000e+02
-10 9998     5.323400e+02 2.848100e+02
-15 9998     7.212500e+02 3.133200e+02
-1 9999     7.948101e+02 -7.537000e+01
-7 9999     3.858400e+02 2.397000e+02
-1 10000     -1.611600e+02 -7.703998e+01
-7 10000     -3.926900e+02 -1.636900e+02
-8 10000     -1.849400e+02 -3.725100e+02
-1 10001     8.303900e+02 -7.702002e+01
-6 10001     4.043600e+02 2.165300e+02
-9 10001     2.844000e+02 1.383100e+02
-12 10001     4.896700e+02 2.265900e+02
-15 10001     7.647000e+02 3.288200e+02
-1 10002     3.783199e+02 -7.740002e+01
-7 10002     1.504900e+02 1.149400e+02
-10 10002     1.791200e+02 1.223000e+02
-15 10002     2.864100e+02 1.184300e+02
-1 10003     2.389900e+02 -7.823999e+01
-6 10003     1.164200e+02 -3.052002e+01
-7 10003     3.664001e+01 5.566998e+01
-8 10003     2.681000e+02 -6.814001e+01
-12 10003     1.306400e+02 1.777002e+01
-15 10003     1.202400e+02 4.672998e+01
-1 10004     4.583700e+02 -7.828003e+01
-15 10004     3.778600e+02 1.577500e+02
-1 10005     3.828900e+02 -7.846997e+01
-10 10005     1.845100e+02 1.231100e+02
-1 10006     -4.952100e+02 -8.444000e+01
-15 10006     -8.697000e+02 -3.833300e+02
-1 10007     1.236900e+02 -8.445001e+01
-7 10007     -6.477002e+01 -3.500000e+00
-1 10008     3.148999e+01 -8.495001e+01
-15 10008     -1.387400e+02 -7.271002e+01
-1 10009     2.590400e+02 -8.697998e+01
-6 10009     1.391800e+02 -2.709003e+01
-12 10009     1.545100e+02 2.012000e+01
-15 10009     1.492000e+02 4.612000e+01
-1 10010     8.121801e+02 -8.681000e+01
-6 10010     3.903900e+02 1.961400e+02
-10 10010     5.538800e+02 2.804500e+02
-12 10010     4.766801e+02 2.064500e+02
-15 10010     7.473500e+02 3.082500e+02
-1 10011     3.038400e+02 -8.735999e+01
-2 10011     3.481200e+02 -3.499756e-01
-6 10011     1.771800e+02 -4.998779e-02
-1 10012     3.877200e+02 -8.834003e+01
-7 10012     1.614500e+02 1.091200e+02
-10 10012     1.925000e+02 1.150000e+02
-15 10012     3.024900e+02 1.098200e+02
-1 10013     8.146400e+02 -8.840997e+01
-12 10013     4.801600e+02 2.070600e+02
-15 10013     7.512400e+02 3.075900e+02
-1 10014     4.833700e+02 -8.921997e+01
-10 10014     2.810300e+02 1.525700e+02
-15 10014     4.098800e+02 1.551700e+02
-1 10015     1.733800e+02 -8.956000e+01
-2 10015     2.345601e+02 -7.896997e+01
-3 10015     1.466500e+02 -3.832800e+02
-13 10015     4.261500e+02 -3.118700e+02
-15 10015     4.235999e+01 -2.510010e+00
-1 10016     4.450200e+02 -8.996997e+01
-10 10016     2.471801e+02 1.366700e+02
-15 10016     3.686000e+02 1.360100e+02
-1 10017     8.785100e+02 -9.084998e+01
-6 10017     4.605601e+02 2.358100e+02
-10 10017     6.221100e+02 3.020400e+02
-12 10017     5.435500e+02 2.459300e+02
-15 10017     8.290200e+02 3.365000e+02
-1 10018     8.163700e+02 -9.150000e+01
-6 10018     3.974300e+02 1.952500e+02
-10 10018     5.602900e+02 2.768800e+02
-12 10018     4.835200e+02 2.055400e+02
-15 10018     7.545500e+02 3.049000e+02
-1 10019     3.774399e+02 -9.246997e+01
-10 10019     1.843000e+02 1.069700e+02
-15 10019     2.931700e+02 9.979001e+01
-1 10020     5.640997e+01 -9.420001e+01
-7 10020     -1.251800e+02 -4.559998e+01
-1 10021     -4.800700e+02 -9.548999e+01
-15 10021     -8.411500e+02 -3.883100e+02
-1 10022     5.004999e+01 -9.633002e+01
-6 10022     -5.909003e+01 -1.800900e+02
-7 10022     -1.291900e+02 -5.046997e+01
-10 10022     -1.577800e+02 -4.101001e+01
-12 10022     -5.859998e+01 -1.264000e+02
-15 10022     -1.084100e+02 -7.663000e+01
-1 10023     2.342200e+02 -9.646997e+01
-2 10023     2.962200e+02 -4.579999e+01
-1 10024     4.009998e+01 -9.698999e+01
-6 10024     -6.667999e+01 -1.865300e+02
-15 10024     -1.201100e+02 -8.233002e+01
-1 10025     8.561600e+02 -9.696997e+01
-15 10025     8.053600e+02 3.182800e+02
-1 10026     8.087000e+02 -9.821997e+01
-10 10026     5.547800e+02 2.679700e+02
-15 10026     7.485400e+02 2.934500e+02
-1 10027     2.498199e+02 -9.909003e+01
-7 10027     5.383002e+01 4.190997e+01
-15 10027     1.429301e+02 2.647998e+01
-1 10028     8.660699e+02 -1.001100e+02
-3 10028     4.018300e+02 -2.537400e+02
-1 10029     3.072000e+02 -1.007700e+02
-2 10029     3.558700e+02 -1.210999e+01
-6 10029     1.866100e+02 -1.096002e+01
-7 10029     1.037000e+02 6.577002e+01
-10 10029     1.183900e+02 6.816998e+01
-12 10029     2.065601e+02 3.396002e+01
-1 10030     2.352900e+02 -1.016200e+02
-2 10030     3.003600e+02 -4.995001e+01
-6 10030     1.240000e+02 -5.659998e+01
-8 10030     2.735600e+02 -8.990002e+01
-13 10030     4.826400e+02 -2.986700e+02
-1 10031     4.112800e+02 -1.015800e+02
-15 10031     3.344399e+02 1.050300e+02
-1 10032     3.368500e+02 -1.022700e+02
-10 10032     1.483200e+02 7.932001e+01
-15 10032     2.498101e+02 6.757001e+01
-1 10033     2.910100e+02 -1.034700e+02
-2 10033     3.453700e+02 -2.197998e+01
-6 10033     1.740900e+02 -2.350000e+01
-15 10033     1.955800e+02 4.257001e+01
-1 10034     1.539600e+02 -1.045300e+02
-2 10034     2.372800e+02 -9.512000e+01
-3 10034     1.512900e+02 -3.981400e+02
-6 10034     5.466998e+01 -1.124500e+02
-7 10034     -2.731000e+01 -6.719971e+00
-10 10034     -4.025000e+01 -2.450012e+00
-12 10034     6.090002e+01 -6.279999e+01
-15 10034     2.803998e+01 -3.064001e+01
-1 10035     2.695800e+02 -1.057000e+02
-2 10035     3.299200e+02 -3.534003e+01
-15 10035     1.703101e+02 2.873999e+01
-1 10036     4.793800e+02 -1.064700e+02
-15 10036     4.136300e+02 1.326600e+02
-1 10037     3.539200e+02 -1.068600e+02
-10 10037     1.672200e+02 8.188000e+01
-15 10037     2.725200e+02 7.040002e+01
-1 10038     6.010699e+02 -1.083100e+02
-10 10038     3.896899e+02 1.791100e+02
-1 10039     2.456899e+02 -1.102800e+02
-15 10039     1.433600e+02 1.096002e+01
-1 10040     6.000200e+02 -1.111200e+02
-10 10040     3.892900e+02 1.763400e+02
-1 10041     3.732800e+02 -1.130900e+02
-15 10041     2.974600e+02 7.315002e+01
-1 10042     4.824600e+02 -1.137300e+02
-10 10042     2.891700e+02 1.269700e+02
-15 10042     4.200200e+02 1.250700e+02
-1 10043     3.756500e+02 -1.145200e+02
-10 10043     1.911500e+02 8.296997e+01
-1 10044     7.457001e+01 -1.180900e+02
-6 10044     -1.528003e+01 -1.817000e+02
-7 10044     -9.442999e+01 -5.716998e+01
-10 10044     -1.200700e+02 -5.256000e+01
-12 10044     -1.504999e+01 -1.303200e+02
-15 10044     -6.457001e+01 -8.990997e+01
-1 10045     2.761100e+02 -1.184500e+02
-2 10045     3.413000e+02 -4.509003e+01
-6 10045     1.685800e+02 -4.775000e+01
-7 10045     8.371002e+01 3.604999e+01
-10 10045     9.295001e+01 3.640997e+01
-12 10045     1.862100e+02 -2.729980e+00
-15 10045     1.843700e+02 1.613000e+01
-1 10046     8.405200e+02 -1.194600e+02
-2 10046     5.239900e+02 2.231000e+01
-1 10047     7.778800e+02 -1.204800e+02
-10 10047     5.318101e+02 2.332900e+02
-1 10048     4.671899e+02 -1.209900e+02
-15 10048     4.071500e+02 1.093100e+02
-1 10049     1.905100e+02 -1.231600e+02
-10 10049     6.869995e+00 -5.650024e+00
-15 10049     8.347998e+01 -3.340002e+01
-1 10050     6.124000e+02 -1.229600e+02
-10 10050     4.073300e+02 1.692500e+02
-15 10050     5.644200e+02 1.757600e+02
-1 10051     4.819301e+02 -1.239000e+02
-15 10051     4.239800e+02 1.128700e+02
-1 10052     2.914500e+02 -1.247400e+02
-3 10052     2.575300e+02 -3.469200e+02
-6 10052     1.842200e+02 -4.453998e+01
-8 10052     3.211900e+02 -8.531000e+01
-12 10052     2.033700e+02 -3.400269e-01
-15 10052     2.061200e+02 1.646002e+01
-1 10053     3.072700e+02 -1.246100e+02
-2 10053     3.671100e+02 -3.676001e+01
-3 10053     2.679301e+02 -3.395400e+02
-6 10053     1.977100e+02 -3.484998e+01
-8 10053     3.311100e+02 -7.917999e+01
-10 10053     1.277300e+02 4.359003e+01
-12 10053     2.183000e+02 8.770020e+00
-13 10053     5.443300e+02 -2.942600e+02
-15 10053     2.255100e+02 2.520001e+01
-1 10054     3.372800e+02 -1.245800e+02
-15 10054     2.607400e+02 4.065997e+01
-1 10055     4.784700e+02 -1.261200e+02
-15 10055     4.207100e+02 1.081400e+02
-1 10056     3.395699e+02 -1.262400e+02
-10 10056     1.602000e+02 5.612000e+01
-15 10056     2.645900e+02 3.997998e+01
-1 10057     3.069100e+02 -1.272100e+02
-3 10057     2.685699e+02 -3.423600e+02
-6 10057     1.978400e+02 -3.797998e+01
-10 10057     1.276200e+02 4.075000e+01
-12 10057     2.184600e+02 5.770020e+00
-15 10057     2.257200e+02 2.172998e+01
-1 10058     2.936801e+02 -1.278000e+02
-2 10058     3.577400e+02 -4.626001e+01
-6 10058     1.872300e+02 -4.652002e+01
-12 10058     2.069700e+02 -2.590027e+00
-15 10058     2.102500e+02 1.421997e+01
-1 10059     3.826100e+02 -1.278800e+02
-10 10059     2.031700e+02 7.184003e+01
-1 10060     3.331000e+02 -1.293400e+02
-3 10060     2.856899e+02 -3.334100e+02
-7 10060     1.349200e+02 5.110999e+01
-1 10061     6.093101e+02 -1.299400e+02
-10 10061     4.080200e+02 1.608800e+02
-1 10062     8.096100e+02 -1.305000e+02
-7 10062     4.193700e+02 2.021700e+02
-10 10062     5.681600e+02 2.360400e+02
-15 10062     7.648700e+02 2.556500e+02
-1 10063     7.789500e+02 -1.308500e+02
-6 10063     3.803800e+02 1.347500e+02
-1 10064     4.935100e+02 -1.336800e+02
-10 10064     3.072200e+02 1.115300e+02
-15 10064     4.417800e+02 1.063400e+02
-1 10065     7.800100e+02 -1.336500e+02
-10 10065     5.390800e+02 2.208100e+02
-1 10066     8.162200e+02 -1.336700e+02
-15 10066     7.745100e+02 2.551100e+02
-1 10067     2.358500e+02 -1.346400e+02
-15 10067     1.438900e+02 -2.414001e+01
-1 10068     8.209200e+02 -1.350800e+02
-15 10068     7.806801e+02 2.558700e+02
-1 10069     1.279200e+02 -1.354800e+02
-6 10069     4.696002e+01 -1.617300e+02
-13 10069     4.091801e+02 -3.641200e+02
-1 10070     4.405601e+02 -1.357300e+02
-7 10070     2.160300e+02 8.709000e+01
-1 10071     -3.606500e+02 -1.383800e+02
-15 10071     -6.467100e+02 -3.707100e+02
-1 10072     3.298101e+02 -1.404600e+02
-10 10072     1.554100e+02 3.676001e+01
-15 10072     2.590000e+02 1.728998e+01
-1 10073     2.357900e+02 -1.463000e+02
-10 10073     6.378003e+01 -9.250000e+00
-15 10073     1.510800e+02 -3.794000e+01
-1 10074     4.660601e+02 -1.470500e+02
-15 10074     4.183300e+02 7.741998e+01
-1 10075     6.714001e+01 -1.473800e+02
-3 10075     1.222100e+02 -4.787800e+02
-7 10075     -8.209003e+01 -8.440002e+01
-8 10075     1.840500e+02 -1.970900e+02
-10 10075     -1.116500e+02 -8.666998e+01
-15 10075     -5.521997e+01 -1.294200e+02
-1 10076     1.659000e+02 -1.475800e+02
-2 10076     2.772400e+02 -1.261900e+02
-1 10077     1.659000e+02 -1.475800e+02
-2 10077     2.772400e+02 -1.261900e+02
-3 10077     1.910100e+02 -4.270800e+02
-6 10077     9.485999e+01 -1.443000e+02
-7 10077     3.390015e+00 -3.865997e+01
-12 10077     1.013500e+02 -9.758002e+01
-1 10078     8.353400e+02 -1.479700e+02
-2 10078     5.350699e+02 -2.700012e+00
-6 10078     4.490500e+02 1.585200e+02
-15 10078     8.044399e+02 2.479100e+02
-1 10079     4.176100e+02 -1.484200e+02
-7 10079     2.034700e+02 6.721002e+01
-1 10080     5.526200e+02 -1.490200e+02
-10 10080     3.649000e+02 1.193600e+02
-1 10081     6.427002e+01 -1.508900e+02
-15 10081     -5.748999e+01 -1.354500e+02
-1 10082     4.867200e+02 -1.522700e+02
-10 10082     3.107400e+02 9.040002e+01
-15 10082     4.452100e+02 8.125000e+01
-1 10083     8.334900e+02 -1.522800e+02
-6 10083     4.496700e+02 1.535200e+02
-1 10084     4.270001e+01 -1.534200e+02
-15 10084     -8.792999e+01 -1.514100e+02
-1 10085     3.756000e+02 -1.551900e+02
-15 10085     3.198700e+02 2.291998e+01
-1 10086     2.766200e+02 -1.552800e+02
-15 10086     2.046600e+02 -2.796997e+01
-1 10087     3.468900e+02 -1.570400e+02
-7 10087     1.558800e+02 3.235999e+01
-1 10088     2.506600e+02 -1.621500e+02
-7 10088     8.506000e+01 -1.091998e+01
-1 10089     3.470000e+02 -1.624000e+02
-15 10089     2.907800e+02 -5.200195e-01
-1 10090     8.566700e+02 -1.626300e+02
-6 10090     4.786801e+02 1.597200e+02
-1 10091     8.406700e+02 -1.631800e+02
-6 10091     4.621700e+02 1.488000e+02
-12 10091     5.449800e+02 1.591000e+02
-15 10091     8.171300e+02 2.329500e+02
-1 10092     2.342400e+02 -1.655300e+02
-13 10092     5.109500e+02 -3.491500e+02
-1 10093     3.048900e+02 -1.656100e+02
-12 10093     2.422300e+02 -3.140997e+01
-1 10094     4.210601e+02 -1.659900e+02
-15 10094     3.777300e+02 3.231000e+01
-1 10095     1.902200e+02 -1.677900e+02
-10 10095     2.659003e+01 -5.257001e+01
-1 10096     3.582800e+02 -1.685400e+02
-10 10096     1.960400e+02 2.007001e+01
-1 10097     8.166200e+02 -1.690100e+02
-10 10097     5.900200e+02 2.009000e+02
-1 10098     3.049700e+02 -1.698500e+02
-10 10098     1.447800e+02 -3.679993e+00
-12 10098     2.457500e+02 -3.434003e+01
-15 10098     2.467400e+02 -3.046002e+01
-1 10099     4.467200e+02 -1.700700e+02
-12 10099     3.536400e+02 3.434003e+01
-15 10099     4.098500e+02 4.066998e+01
-1 10100     2.800000e+02 -1.724300e+02
-7 10100     1.138600e+02 -6.969971e+00
-1 10101     3.874900e+02 -1.735700e+02
-10 10101     2.269100e+02 2.739001e+01
-15 10101     3.446500e+02 6.630005e+00
-1 10102     9.810999e+01 -1.748400e+02
-7 10102     -3.959003e+01 -9.310999e+01
-13 10102     4.107900e+02 -4.040400e+02
-1 10103     1.647800e+02 -1.754100e+02
-15 10103     7.892999e+01 -1.115500e+02
-1 10104     5.409301e+02 -1.772400e+02
-15 10104     5.162400e+02 7.790997e+01
-1 10105     2.736100e+02 -1.799300e+02
-7 10105     1.116100e+02 -1.659998e+01
-1 10106     2.736100e+02 -1.799300e+02
-7 10106     1.116100e+02 -1.659998e+01
-1 10107     2.388101e+02 -1.819100e+02
-6 10107     1.824500e+02 -1.277500e+02
-1 10108     8.175500e+02 -1.819800e+02
-12 10108     5.325800e+02 1.278900e+02
-1 10109     8.175500e+02 -1.819800e+02
-12 10109     5.325800e+02 1.278900e+02
-1 10110     7.975500e+02 -1.856200e+02
-6 10110     4.311400e+02 9.920001e+01
-7 10110     4.302300e+02 1.530400e+02
-10 10110     5.769000e+02 1.766400e+02
-12 10110     5.145800e+02 1.108600e+02
-15 10110     7.763400e+02 1.849000e+02
-1 10111     4.766500e+02 -1.861300e+02
-15 10111     4.507100e+02 3.600000e+01
-1 10112     -2.135200e+02 -1.884000e+02
-7 10112     -3.713400e+02 -2.874000e+02
-15 10112     -4.192300e+02 -3.465000e+02
-1 10113     1.798101e+02 -1.892200e+02
-15 10113     1.054700e+02 -1.200900e+02
-1 10114     8.495900e+02 -1.926700e+02
-6 10114     4.878900e+02 1.293700e+02
-15 10114     8.415000e+02 2.030200e+02
-1 10115     8.714500e+02 -1.926400e+02
-6 10115     5.090500e+02 1.433700e+02
-12 10115     5.894600e+02 1.531000e+02
-15 10115     8.675601e+02 2.133500e+02
-1 10116     5.366700e+02 -1.942000e+02
-10 10116     3.722600e+02 6.821002e+01
-1 10117     8.052500e+02 -1.940800e+02
-6 10117     4.438300e+02 9.734998e+01
-1 10118     8.685400e+02 -1.941300e+02
-3 10118     4.561400e+02 -3.192500e+02
-10 10118     6.505200e+02 1.972700e+02
-12 10118     5.872300e+02 1.503000e+02
-15 10118     8.648600e+02 2.107000e+02
-1 10119     8.716000e+02 -1.959500e+02
-6 10119     5.120000e+02 1.410500e+02
-12 10119     5.922300e+02 1.509200e+02
-1 10120     8.716000e+02 -1.959500e+02
-6 10120     5.120000e+02 1.410500e+02
-10 10120     6.547300e+02 1.965900e+02
-12 10120     5.922300e+02 1.509200e+02
-15 10120     8.690900e+02 2.100100e+02
-1 10121     2.678101e+02 -1.966500e+02
-12 10121     2.283300e+02 -8.362000e+01
-15 10121     2.153500e+02 -8.266998e+01
-1 10122     2.412800e+02 -1.971200e+02
-6 10122     1.902300e+02 -1.428101e+02
-1 10123     2.412800e+02 -1.971200e+02
-6 10123     1.902300e+02 -1.428101e+02
-1 10124     6.942999e+01 -1.989300e+02
-4 10124     -4.470700e+02 -3.879400e+02
-6 10124     2.798999e+01 -2.683600e+02
-7 10124     -6.427002e+01 -1.330200e+02
-9 10124     8.402002e+01 -1.106800e+02
-10 10124     -9.196997e+01 -1.402900e+02
-12 10124     2.741998e+01 -2.210700e+02
-15 10124     -2.990002e+01 -1.931200e+02
-1 10125     1.564500e+02 -1.990300e+02
-7 10125     2.337000e+01 -8.571002e+01
-15 10125     8.398999e+01 -1.438900e+02
-1 10126     1.564500e+02 -1.990300e+02
-7 10126     2.337000e+01 -8.571002e+01
-15 10126     8.398999e+01 -1.438900e+02
-1 10127     7.930200e+02 -2.005500e+02
-15 10127     7.788199e+02 1.650100e+02
-1 10128     8.595300e+02 -2.004100e+02
-6 10128     5.023101e+02 1.291700e+02
-1 10129     -3.130600e+02 -2.012400e+02
-7 10129     -4.576700e+02 -3.516900e+02
-15 10129     -5.417000e+02 -4.217900e+02
-1 10130     8.813500e+02 -2.049000e+02
-2 10130     6.055400e+02 -1.162000e+01
-9 10130     3.813800e+02 9.264001e+01
-10 10130     6.674700e+02 1.918600e+02
-1 10131     8.813500e+02 -2.049000e+02
-2 10131     6.055400e+02 -1.162000e+01
-6 10131     5.249100e+02 1.405200e+02
-9 10131     3.813800e+02 9.264001e+01
-10 10131     6.674700e+02 1.918600e+02
-1 10132     3.903500e+02 -2.067500e+02
-10 10132     2.426700e+02 -5.020020e+00
-15 10132     3.640900e+02 -3.158002e+01
-1 10133     3.903500e+02 -2.067500e+02
-10 10133     2.426700e+02 -5.020020e+00
-15 10133     3.640900e+02 -3.158002e+01
-1 10134     8.514301e+02 -2.076900e+02
-2 10134     5.813101e+02 -3.678998e+01
-6 10134     4.982700e+02 1.165700e+02
-10 10134     6.393101e+02 1.766500e+02
-15 10134     8.510601e+02 1.861100e+02
-1 10135     2.232400e+02 -2.082600e+02
-15 10135     1.678900e+02 -1.198000e+02
-1 10136     3.587500e+02 -2.079600e+02
-15 10136     3.286700e+02 -4.906000e+01
-1 10137     5.153700e+02 -2.077400e+02
-10 10137     3.594500e+02 4.621997e+01
-1 10138     8.539399e+02 -2.094500e+02
-15 10138     8.549500e+02 1.854200e+02
-1 10139     8.798000e+02 -2.100300e+02
-6 10139     5.269500e+02 1.341400e+02
-8 10139     5.575300e+02 -4.494000e+01
-9 10139     3.836200e+02 8.897000e+01
-1 10140     3.987600e+02 -2.103400e+02
-10 10140     2.523600e+02 -5.630005e+00
-1 10141     8.078500e+02 -2.120200e+02
-6 10141     4.558800e+02 8.295001e+01
-10 10141     5.967200e+02 1.550700e+02
-1 10142     2.097800e+02 -2.128800e+02
-10 10142     6.808002e+01 -9.064001e+01
-15 10142     1.556600e+02 -1.330900e+02
-1 10143     1.901200e+02 -2.176400e+02
-6 10143     1.743900e+02 -1.877600e+02
-12 10143     1.786800e+02 -1.457600e+02
-1 10144     4.802400e+02 -2.181300e+02
-10 10144     3.315500e+02 2.103003e+01
-15 10144     4.717600e+02 -5.499878e-01
-1 10145     8.799900e+02 -2.184500e+02
-2 10145     6.115699e+02 -2.294000e+01
-6 10145     5.311000e+02 1.265300e+02
-9 10145     3.865100e+02 8.364001e+01
-12 10145     6.106100e+02 1.363700e+02
-1 10146     8.799900e+02 -2.184500e+02
-12 10146     6.106100e+02 1.363700e+02
-1 10147     8.589399e+02 -2.189200e+02
-2 10147     5.939600e+02 -3.931000e+01
-3 10147     4.628300e+02 -3.443800e+02
-6 10147     5.113199e+02 1.119600e+02
-9 10147     3.720100e+02 6.915997e+01
-15 10147     8.653600e+02 1.770600e+02
-1 10148     8.589399e+02 -2.189200e+02
-2 10148     5.939600e+02 -3.931000e+01
-3 10148     4.628300e+02 -3.443800e+02
-6 10148     5.113199e+02 1.119600e+02
-9 10148     3.720100e+02 6.915997e+01
-15 10148     8.653600e+02 1.770600e+02
-1 10149     9.628998e+01 -2.264700e+02
-15 10149     1.759003e+01 -2.119700e+02
-1 10150     1.843500e+02 -2.273800e+02
-7 10150     6.307001e+01 -9.614001e+01
-1 10151     -2.410500e+02 -2.303000e+02
-6 10151     -3.445900e+02 -5.999200e+02
-7 10151     -3.702100e+02 -3.389200e+02
-9 10151     -2.130100e+02 -4.162400e+02
-15 10151     -4.282900e+02 -4.157200e+02
-1 10152     1.780100e+02 -2.316800e+02
-15 10152     1.300600e+02 -1.717800e+02
-1 10153     3.569500e+02 -2.320900e+02
-10 10153     2.219900e+02 -4.497998e+01
-1 10154     -4.944500e+02 -2.352100e+02
-7 10154     -6.181400e+02 -4.870800e+02
-10 10154     -7.342500e+02 -4.731100e+02
-15 10154     -7.672200e+02 -5.799000e+02
-1 10155     2.824500e+02 -2.351500e+02
-6 10155     2.541300e+02 -1.476700e+02
-10 10155     1.507100e+02 -8.026001e+01
-12 10155     2.693800e+02 -1.091400e+02
-15 10155     2.539500e+02 -1.209300e+02
-1 10156     3.174600e+02 -2.356500e+02
-15 10156     2.955699e+02 -1.036300e+02
-1 10157     3.271801e+02 -2.371300e+02
-7 10157     1.784700e+02 -4.234998e+01
-15 10157     3.073700e+02 -1.004400e+02
-1 10158     5.230100e+02 -2.382400e+02
-15 10158     5.308600e+02 -2.419983e+00
-1 10159     8.259600e+02 -2.393200e+02
-2 10159     5.755400e+02 -8.103998e+01
-12 10159     5.714301e+02 8.291998e+01
-15 10159     8.358400e+02 1.364500e+02
-1 10160     8.259600e+02 -2.393200e+02
-2 10160     5.755400e+02 -8.103998e+01
-15 10160     8.358400e+02 1.364500e+02
-1 10161     8.254399e+02 -2.427100e+02
-8 10161     5.309100e+02 -9.862000e+01
-15 10161     8.366300e+02 1.323600e+02
-1 10162     -2.093100e+02 -2.447700e+02
-15 10162     -3.781200e+02 -4.152300e+02
-1 10163     3.703500e+02 -2.465500e+02
-6 10163     3.230200e+02 -1.076900e+02
-10 10163     2.420601e+02 -5.383002e+01
-12 10163     3.479500e+02 -7.228998e+01
-15 10163     3.630400e+02 -8.935999e+01
-1 10164     3.703500e+02 -2.465500e+02
-6 10164     3.230200e+02 -1.076900e+02
-10 10164     2.420601e+02 -5.383002e+01
-12 10164     3.479500e+02 -7.228998e+01
-15 10164     3.630400e+02 -8.935999e+01
-1 10165     4.162500e+02 -2.462400e+02
-10 10165     2.852400e+02 -3.389001e+01
-1 10166     4.116899e+02 -2.497700e+02
-15 10166     4.124200e+02 -7.216998e+01
-1 10167     4.116899e+02 -2.497700e+02
-15 10167     4.124200e+02 -7.216998e+01
-1 10168     3.612800e+02 -2.502800e+02
-7 10168     2.119600e+02 -3.819000e+01
-1 10169     2.366300e+02 -2.514100e+02
-9 10169     2.445100e+02 -3.600000e+01
-12 10169     2.445500e+02 -1.488800e+02
-15 10169     2.097700e+02 -1.645200e+02
-1 10170     4.127800e+02 -2.531800e+02
-6 10170     3.552300e+02 -8.997998e+01
-10 10170     2.855300e+02 -4.215997e+01
-15 10170     4.151500e+02 -7.551001e+01
-1 10171     3.853400e+02 -2.541000e+02
-10 10171     2.606400e+02 -5.473999e+01
-15 10171     3.848300e+02 -9.054999e+01
-1 10172     2.154800e+02 -2.545000e+02
-6 10172     2.168500e+02 -2.063800e+02
-7 10172     9.871997e+01 -1.063100e+02
-10 10172     9.290002e+01 -1.302000e+02
-12 10172     2.242500e+02 -1.677500e+02
-15 10172     1.853900e+02 -1.801400e+02
-1 10173     3.771500e+02 -2.571600e+02
-15 10173     3.771000e+02 -9.823999e+01
-1 10174     4.639399e+02 -2.578700e+02
-10 10174     3.362500e+02 -2.510999e+01
-15 10174     4.764800e+02 -5.496002e+01
-1 10175     8.422500e+02 -2.595400e+02
-8 10175     5.508900e+02 -9.909003e+01
-1 10176     -6.213900e+02 -2.601200e+02
-4 10176     -5.456000e+02 1.293900e+02
-1 10177     -1.319200e+02 -2.605500e+02
-15 10177     -2.677300e+02 -3.880900e+02
-1 10178     -1.417999e+01 -2.638600e+02
-9 10178     2.990002e+01 -2.520000e+02
-15 10178     -1.093500e+02 -3.229800e+02
-1 10179     5.076000e+02 -2.644100e+02
-10 10179     3.728500e+02 -1.531000e+01
-1 10180     -2.027200e+02 -2.674100e+02
-6 10180     -2.620100e+02 -5.994500e+02
-9 10180     -1.418200e+02 -4.116700e+02
-1 10181     -4.429999e+01 -2.674000e+02
-10 10181     -1.970500e+02 -2.698400e+02
-13 10181     2.768300e+02 -5.553700e+02
-1 10182     2.746400e+02 -2.703000e+02
-15 10182     2.648300e+02 -1.675900e+02
-1 10183     8.356801e+02 -2.726100e+02
-15 10183     8.635000e+02 1.026300e+02
-1 10184     8.596000e+02 -2.726000e+02
-9 10184     3.987800e+02 3.685999e+01
-10 10184     6.716400e+02 1.168900e+02
-1 10185     -2.083100e+02 -2.795200e+02
-7 10185     -3.082600e+02 -3.634400e+02
-9 10185     -1.336000e+02 -4.210400e+02
-12 10185     -2.628000e+02 -5.452600e+02
-15 10185     -3.555100e+02 -4.571899e+02
-1 10186     5.025699e+02 -2.799700e+02
-15 10186     5.223700e+02 -6.363000e+01
-1 10187     3.838700e+02 -2.805000e+02
-10 10187     2.690200e+02 -8.246002e+01
-1 10188     8.583600e+02 -2.867300e+02
-6 10188     5.484800e+02 5.401001e+01
-12 10188     6.269500e+02 6.378003e+01
-1 10189     8.583600e+02 -2.867300e+02
-6 10189     5.484800e+02 5.401001e+01
-1 10190     2.818400e+02 -2.886000e+02
-4 10190     -5.087700e+02 -5.833000e+02
-15 10190     2.801200e+02 -1.866200e+02
-1 10191     4.144399e+02 -2.901400e+02
-15 10191     4.339000e+02 -1.195200e+02
-1 10192     -2.273900e+02 -2.903200e+02
-7 10192     -3.178800e+02 -3.838000e+02
-10 10192     -3.884200e+02 -3.866200e+02
-15 10192     -3.724600e+02 -4.827400e+02
-1 10193     -2.620700e+02 -2.931400e+02
-7 10193     -3.493800e+02 -4.049800e+02
-15 10193     -4.163800e+02 -5.071801e+02
-1 10194     4.149399e+02 -2.929800e+02
-10 10194     3.014800e+02 -8.203003e+01
-15 10194     4.355601e+02 -1.226700e+02
-1 10195     8.625699e+02 -2.992800e+02
-6 10195     5.602300e+02 4.600000e+01
-7 10195     5.260400e+02 9.314001e+01
-9 10195     4.132300e+02 2.242999e+01
-10 10195     6.843500e+02 9.241998e+01
-1 10196     8.627400e+02 -3.031500e+02
-10 10196     6.857300e+02 8.853003e+01
-1 10197     -2.572300e+02 -3.055300e+02
-9 10197     -1.400900e+02 -4.658199e+02
-1 10198     3.263500e+02 -3.061900e+02
-15 10198     3.386100e+02 -1.850600e+02
-1 10199     8.681600e+02 -3.090000e+02
-2 10199     6.500601e+02 -1.009400e+02
-10 10199     6.932200e+02 8.528003e+01
-1 10200     8.715100e+02 -3.095800e+02
-6 10200     5.735100e+02 4.322998e+01
-9 10200     4.238500e+02 2.223999e+01
-1 10201     3.859700e+02 -3.130400e+02
-15 10201     4.095500e+02 -1.626700e+02
-1 10202     3.567700e+02 -3.161300e+02
-10 10202     2.524600e+02 -1.311400e+02
-15 10202     3.775699e+02 -1.816200e+02
-1 10203     2.879399e+02 -3.195000e+02
-7 10203     1.765400e+02 -1.333700e+02
-1 10204     2.547400e+02 -3.219800e+02
-6 10204     2.631900e+02 -2.605400e+02
-7 10204     1.483199e+02 -1.522500e+02
-10 10204     1.532900e+02 -1.837000e+02
-1 10205     1.985800e+02 -3.227600e+02
-7 10205     9.919000e+01 -1.810200e+02
-1 10206     3.953900e+02 -3.228600e+02
-7 10206     2.557700e+02 -9.056000e+01
-15 10206     4.239399e+02 -1.697800e+02
-1 10207     3.447600e+02 -3.305700e+02
-15 10207     3.690800e+02 -2.058700e+02
-1 10208     3.447600e+02 -3.305700e+02
-10 10208     2.451200e+02 -1.517700e+02
-1 10209     3.419500e+02 -3.319900e+02
-15 10209     3.663500e+02 -2.089500e+02
-1 10210     1.590900e+02 -3.370200e+02
-10 10210     5.726001e+01 -2.443100e+02
-15 10210     1.474500e+02 -3.157300e+02
-1 10211     7.976600e+02 -3.373600e+02
-15 10211     8.574301e+02 1.003998e+01
-1 10212     7.742700e+02 -3.382000e+02
-10 10212     6.239500e+02 1.977002e+01
-15 10212     8.334399e+02 -2.270020e+00
-1 10213     -4.035900e+02 -3.395800e+02
-6 10213     -3.762000e+02 -8.437100e+02
-1 10214     7.459200e+02 -3.398700e+02
-15 10214     8.038199e+02 -1.769000e+01
-1 10215     3.262500e+02 -3.568900e+02
-15 10215     3.575000e+02 -2.477000e+02
-1 10216     8.020900e+02 -3.670100e+02
-10 10216     6.614800e+02 3.070007e+00
-1 10217     3.770200e+02 -3.740300e+02
-15 10217     4.225000e+02 -2.426800e+02
-1 10218     -6.719400e+02 -3.817300e+02
-4 10218     -6.586200e+02 1.514000e+02
-1 10219     2.802200e+02 -3.844200e+02
-7 10219     1.887100e+02 -1.970700e+02
-1 10220     -9.514001e+01 -3.982900e+02
-6 10220     -1.731000e+01 -6.208199e+02
-1 10221     5.513199e+02 -4.095000e+02
-15 10221     6.315800e+02 -1.964800e+02
-1 10222     7.844000e+02 -4.211400e+02
-10 10222     6.698199e+02 -5.565997e+01
-1 10223     7.817600e+02 -4.219200e+02
-10 10223     6.682000e+02 -5.773999e+01
-1 10224     7.817600e+02 -4.219200e+02
-10 10224     6.682000e+02 -5.773999e+01
-1 10225     7.606300e+02 -4.310500e+02
-15 10225     8.695300e+02 -1.152700e+02
-1 10226     -6.715997e+01 -4.365200e+02
-7 10226     -8.252002e+01 -4.213400e+02
-15 10226     -7.810999e+01 -5.692400e+02
-1 10227     2.229900e+02 -4.479399e+02
-6 10227     2.965500e+02 -4.163500e+02
-1 10228     9.237000e+01 -4.613800e+02
-15 10228     1.332700e+02 -5.054000e+02
-1 10229     5.081899e+02 -4.680300e+02
-10 10229     4.462800e+02 -2.187900e+02
-15 10229     6.157400e+02 -2.872300e+02
-1 10230     -2.405800e+02 -4.701801e+02
-10 10230     -3.029300e+02 -5.858000e+02
-1 10231     6.128700e+02 -4.713800e+02
-10 10231     5.420000e+02 -1.771200e+02
-1 10232     -5.643400e+02 -4.729700e+02
-4 10232     -7.409000e+02 5.394000e+01
-1 10233     -2.315900e+02 -4.765300e+02
-7 10233     -2.016600e+02 -5.461500e+02
-10 10233     -2.891600e+02 -5.883600e+02
-1 10234     -2.315900e+02 -4.765300e+02
-7 10234     -2.016600e+02 -5.461500e+02
-10 10234     -2.891600e+02 -5.883600e+02
-1 10235     9.403998e+01 -4.775200e+02
-10 10235     5.340997e+01 -4.203101e+02
-15 10235     1.443800e+02 -5.245500e+02
-1 10236     7.651300e+02 -4.793800e+02
-10 10236     6.797000e+02 -1.196200e+02
-1 10237     7.206801e+02 -4.799100e+02
-15 10237     8.539800e+02 -1.911100e+02
-1 10238     1.074100e+02 -4.814500e+02
-10 10238     6.883002e+01 -4.176899e+02
-15 10238     1.625500e+02 -5.215300e+02
-1 10239     5.852200e+02 -4.878700e+02
-6 10239     5.462000e+02 -2.381000e+02
-1 10240     -8.947998e+01 -4.930100e+02
-7 10240     -6.570001e+01 -4.803199e+02
-1 10241     -6.535200e+02 -4.939700e+02
-4 10241     -7.697700e+02 1.218600e+02
-1 10242     7.103000e+02 -4.944800e+02
-15 10242     8.510699e+02 -2.133700e+02
-1 10243     2.707400e+02 -5.006801e+02
-7 10243     2.301000e+02 -3.008300e+02
-10 10243     2.402700e+02 -3.583600e+02
-12 10243     3.879100e+02 -4.059301e+02
-1 10244     1.655500e+02 -5.255000e+02
-10 10244     1.476600e+02 -4.338400e+02
-15 10244     2.564500e+02 -5.415699e+02
-1 10245     8.608002e+01 -5.258900e+02
-7 10245     9.748999e+01 -4.143200e+02
-10 10245     6.881000e+01 -4.741801e+02
-1 10246     -1.638000e+02 -5.277300e+02
-4 10246     -7.641000e+02 -2.740200e+02
-6 10246     6.515997e+01 -7.828800e+02
-7 10246     -1.086400e+02 -5.504100e+02
-9 10246     1.639700e+02 -5.153400e+02
-10 10246     -1.871300e+02 -6.054100e+02
-1 10247     1.887700e+02 -5.504500e+02
-10 10247     1.834700e+02 -4.483400e+02
-1 10248     1.578700e+02 -5.551801e+02
-10 10248     1.548400e+02 -4.685200e+02
-1 10249     7.734399e+02 -5.585400e+02
-12 10249     7.668500e+02 -1.749400e+02
-1 10250     7.377600e+02 -5.638900e+02
-12 10250     7.503500e+02 -1.971400e+02
-1 10251     6.855601e+02 -5.671600e+02
-10 10251     6.507700e+02 -2.367400e+02
-15 10251     8.645500e+02 -3.085300e+02
-1 10252     2.429900e+02 -5.740800e+02
-10 10252     2.478900e+02 -4.462600e+02
-1 10253     9.856000e+01 -5.853199e+02
-2 10253     5.177200e+02 -6.047900e+02
-7 10253     1.427000e+02 -4.551500e+02
-9 10253     3.484700e+02 -3.886400e+02
-10 10253     1.125500e+02 -5.284301e+02
-1 10254     5.931801e+02 5.849000e+02
-5 10254     5.743500e+02 -2.856000e+01
-6 10254     -3.111900e+02 6.993800e+02
-11 10254     2.939301e+02 -1.610700e+02
-1 10255     4.835601e+02 5.839600e+02
-5 10255     4.829800e+02 -5.345001e+01
-14 10255     3.870000e+02 -1.405400e+02
-1 10256     1.285999e+01 5.821700e+02
-2 10256     -6.419200e+02 2.459500e+02
-8 10256     -4.472700e+02 1.800100e+02
-12 10256     -7.054500e+02 4.434100e+02
-1 10257     5.874200e+02 5.795400e+02
-2 10257     -1.499800e+02 3.776800e+02
-5 10257     5.706600e+02 -3.489001e+01
-6 10257     -3.143500e+02 6.909100e+02
-8 10257     -4.372998e+01 2.944200e+02
-9 10257     -2.834900e+02 3.984800e+02
-11 10257     2.910100e+02 -1.661500e+02
-14 10257     4.724200e+02 -1.206500e+02
-1 10258     6.389000e+02 5.771800e+02
-6 10258     -2.684300e+02 7.089300e+02
-1 10259     6.389000e+02 5.771800e+02
-6 10259     -2.684300e+02 7.089300e+02
-13 10259     3.547000e+02 2.788600e+02
-14 10259     5.139800e+02 -1.106200e+02
-1 10260     8.240100e+02 5.742100e+02
-14 10260     6.562000e+02 -7.376001e+01
-1 10261     8.063500e+02 5.723700e+02
-2 10261     -7.700195e-01 4.101100e+02
-6 10261     -1.291300e+02 7.637400e+02
-8 10261     8.008002e+01 3.227200e+02
-1 10262     6.287700e+02 5.701700e+02
-14 10262     5.081400e+02 -1.193700e+02
-1 10263     8.184000e+02 5.695200e+02
-2 10263     7.679993e+00 4.094100e+02
-14 10263     6.537500e+02 -7.859003e+01
-1 10264     6.090500e+02 5.686200e+02
-5 10264     5.909900e+02 -3.983002e+01
-6 10264     -2.904800e+02 6.879800e+02
-1 10265     6.090500e+02 5.686200e+02
-5 10265     5.909900e+02 -3.983002e+01
-6 10265     -2.904800e+02 6.879800e+02
-8 10265     -2.758002e+01 2.903900e+02
-9 10265     -2.668300e+02 3.940200e+02
-1 10266     7.953600e+02 5.681500e+02
-14 10266     6.368700e+02 -8.412000e+01
-1 10267     -1.778800e+02 5.677600e+02
-5 10267     -1.334200e+02 -2.205400e+02
-11 10267     -3.285700e+02 -3.273300e+02
-13 10267     -2.414700e+02 8.529001e+01
-14 10267     -2.157300e+02 -3.166300e+02
-1 10268     -5.928003e+01 5.681700e+02
-11 10268     -2.260300e+02 -3.049600e+02
-14 10268     -9.726001e+01 -2.875500e+02
-1 10269     4.308300e+02 5.660000e+02
-9 10269     -3.788600e+02 3.550300e+02
-11 10269     1.758600e+02 -2.078800e+02
-14 10269     3.470300e+02 -1.698000e+02
-1 10270     4.308300e+02 5.660000e+02
-6 10270     -4.512800e+02 6.113800e+02
-8 10270     -1.374700e+02 2.555900e+02
-9 10270     -3.788600e+02 3.550300e+02
-11 10270     1.758600e+02 -2.078800e+02
-14 10270     3.470300e+02 -1.698000e+02
-1 10271     5.766100e+02 5.647300e+02
-5 10271     5.663800e+02 -4.920001e+01
-6 10271     -3.168300e+02 6.717900e+02
-14 10271     4.676100e+02 -1.358800e+02
-1 10272     5.766100e+02 5.647300e+02
-5 10272     5.663800e+02 -4.920001e+01
-6 10272     -3.168300e+02 6.717900e+02
-14 10272     4.676100e+02 -1.358800e+02
-1 10273     -6.913000e+01 5.632400e+02
-8 10273     -5.123800e+02 1.429600e+02
-13 10273     -1.526600e+02 1.067600e+02
-14 10273     -1.061900e+02 -2.936900e+02
-1 10274     6.988199e+02 5.619000e+02
-2 10274     -6.728003e+01 3.820000e+02
-6 10274     -2.116600e+02 7.151600e+02
-11 10274     3.775400e+02 -1.568000e+02
-1 10275     8.301600e+02 5.610600e+02
-14 10275     6.648800e+02 -8.335999e+01
-1 10276     4.239301e+02 5.484700e+02
-2 10276     -2.638600e+02 3.123600e+02
-4 10276     4.148999e+01 -3.848200e+02
-6 10276     -4.502200e+02 5.877600e+02
-9 10276     -3.782600e+02 3.368800e+02
-11 10276     1.744800e+02 -2.214400e+02
-12 10276     -2.762300e+02 5.712700e+02
-13 10276     2.157300e+02 2.125600e+02
-1 10277     7.665997e+01 5.464800e+02
-2 10277     -5.695400e+02 2.211800e+02
-7 10277     -5.098600e+02 5.036000e+02
-11 10277     -1.068900e+02 -2.963600e+02
-1 10278     4.707000e+02 5.395900e+02
-2 10278     -2.231100e+02 3.152600e+02
-5 10278     4.819399e+02 -9.797998e+01
-9 10278     -3.432400e+02 3.409900e+02
-1 10279     -2.205000e+02 5.380100e+02
-13 10279     -2.725700e+02 4.937000e+01
-14 10279     -2.571000e+02 -3.587600e+02
-1 10280     3.975300e+02 5.327800e+02
-2 10280     -2.807300e+02 2.897300e+02
-5 10280     4.183500e+02 -1.219800e+02
-6 10280     -4.691500e+02 5.583300e+02
-8 10280     -1.516500e+02 2.222200e+02
-11 10280     1.575700e+02 -2.407900e+02
-12 10280     -2.947800e+02 5.409700e+02
-13 10280     2.002700e+02 1.924500e+02
-14 10280     3.263900e+02 -2.087800e+02
-1 10281     -1.733300e+02 5.314300e+02
-7 10281     -7.535700e+02 3.970800e+02
-11 10281     -3.202700e+02 -3.575400e+02
-13 10281     -2.325000e+02 5.526001e+01
-14 10281     -2.079100e+02 -3.542900e+02
-1 10282     -1.733300e+02 5.314300e+02
-7 10282     -7.535700e+02 3.970800e+02
-14 10282     -2.079100e+02 -3.542900e+02
-1 10283     7.811100e+02 5.298700e+02
-2 10283     -3.570007e+00 3.685300e+02
-3 10283     -1.480900e+02 3.364001e+01
-6 10283     -1.313700e+02 7.128900e+02
-11 10283     4.457500e+02 -1.631100e+02
-14 10283     6.377800e+02 -1.190800e+02
-1 10284     5.583900e+02 5.287200e+02
-3 10284     -2.925700e+02 -1.027002e+01
-11 10284     2.829800e+02 -2.098900e+02
-1 10285     8.714301e+02 5.260100e+02
-2 10285     5.323999e+01 3.806600e+02
-5 10285     8.124500e+02 -2.212000e+01
-6 10285     -6.015997e+01 7.400800e+02
-11 10285     5.091400e+02 -1.490600e+02
-1 10286     2.954700e+02 5.253800e+02
-2 10286     -3.646000e+02 2.565900e+02
-5 10286     3.282100e+02 -1.537600e+02
-6 10286     -5.671700e+02 5.013200e+02
-7 10286     -3.034200e+02 5.567000e+02
-12 10286     -3.887300e+02 4.941400e+02
-1 10287     -3.823999e+01 5.198800e+02
-7 10287     -6.111800e+02 4.355500e+02
-11 10287     -2.004700e+02 -3.416500e+02
-12 10287     -7.355400e+02 3.463900e+02
-13 10287     -1.215400e+02 7.844000e+01
-14 10287     -7.106000e+01 -3.321600e+02
-1 10288     8.677900e+02 5.190400e+02
-2 10288     5.328998e+01 3.730900e+02
-3 10288     -9.434003e+01 3.759998e+01
-5 10288     8.119100e+02 -2.921997e+01
-6 10288     -5.990997e+01 7.309500e+02
-8 10288     1.254000e+02 2.938700e+02
-9 10288     -1.104600e+02 4.001800e+02
-11 10288     5.092100e+02 -1.544100e+02
-13 10288     5.115900e+02 2.830100e+02
-14 10288     7.057000e+02 -1.103300e+02
-1 10289     3.628300e+02 5.149800e+02
-2 10289     -3.046900e+02 2.621000e+02
-5 10289     3.909000e+02 -1.477800e+02
-6 10289     -4.950100e+02 5.211800e+02
-7 10289     -2.407200e+02 5.685700e+02
-8 10289     -1.708300e+02 2.001800e+02
-9 10289     -4.107200e+02 2.921100e+02
-12 10289     -3.197500e+02 5.087200e+02
-14 10289     3.000000e+02 -2.342500e+02
-1 10290     7.335800e+02 5.117100e+02
-11 10290     4.168199e+02 -1.859000e+02
-13 10290     4.295200e+02 2.519500e+02
-14 10290     6.062300e+02 -1.453200e+02
-1 10291     6.395100e+02 5.107000e+02
-6 10291     -2.405400e+02 6.390700e+02
-1 10292     2.016400e+02 5.095500e+02
-3 10292     -5.711100e+02 -1.160100e+02
-4 10292     3.580017e+00 -2.622900e+02
-5 10292     2.443700e+02 -1.924200e+02
-7 10292     -3.811800e+02 5.103100e+02
-13 10292     6.315002e+01 1.282700e+02
-14 10292     1.572000e+02 -2.808000e+02
-1 10293     7.222500e+02 5.086400e+02
-2 10293     -3.483002e+01 3.389200e+02
-9 10293     -1.846200e+02 3.672400e+02
-11 10293     4.111600e+02 -1.897100e+02
-13 10293     4.243500e+02 2.476900e+02
-14 10293     5.985100e+02 -1.505400e+02
-1 10294     8.770400e+02 5.083600e+02
-14 10294     7.159800e+02 -1.166900e+02
-1 10295     4.064001e+01 5.049000e+02
-8 10295     -4.075400e+02 1.146400e+02
-1 10296     8.532000e+02 5.019600e+02
-13 10296     5.071100e+02 2.692000e+02
-14 10296     7.010100e+02 -1.268800e+02
-1 10297     3.781000e+01 5.001500e+02
-7 10297     -5.297300e+02 4.431200e+02
-8 10297     -4.090600e+02 1.090500e+02
-10 10297     -5.149300e+02 6.051500e+02
-11 10297     -1.315200e+02 -3.429000e+02
-12 10297     -6.422900e+02 3.575900e+02
-14 10297     5.710022e+00 -3.329100e+02
-1 10298     4.311700e+02 4.999800e+02
-5 10298     4.544399e+02 -1.457500e+02
-6 10298     -4.227600e+02 5.350400e+02
-8 10298     -1.220200e+02 2.021800e+02
-12 10298     -2.504000e+02 5.186000e+02
-1 10299     2.692400e+02 4.909900e+02
-2 10299     -3.773100e+02 2.109800e+02
-7 10299     -3.142200e+02 5.151500e+02
-1 10300     9.942999e+01 4.885800e+02
-7 10300     -4.672500e+02 4.541000e+02
-1 10301     1.016400e+02 4.853200e+02
-7 10301     -4.638200e+02 4.516500e+02
-11 10301     -7.464001e+01 -3.424400e+02
-13 10301     -7.469971e+00 8.403000e+01
-14 10301     6.884003e+01 -3.315900e+02
-1 10302     3.406899e+02 4.802000e+02
-5 10302     3.776600e+02 -1.869500e+02
-7 10302     -2.480600e+02 5.290900e+02
-11 10302     1.245300e+02 -2.950700e+02
-13 10302     1.698800e+02 1.383800e+02
-14 10302     2.881100e+02 -2.733900e+02
-1 10303     1.065200e+02 4.701000e+02
-7 10303     -4.536800e+02 4.384000e+02
-10 10303     -4.239500e+02 5.954500e+02
-12 10303     -5.556600e+02 3.534300e+02
-1 10304     -1.774500e+02 4.648900e+02
-11 10304     -3.155000e+02 -4.171600e+02
-13 10304     -2.265500e+02 -2.450012e+00
-14 10304     -2.058600e+02 -4.272400e+02
-1 10305     4.428003e+01 4.626800e+02
-2 10305     -5.787100e+02 1.104700e+02
-5 10305     1.010200e+02 -2.797000e+02
-7 10305     -5.099100e+02 4.082500e+02
-8 10305     -3.939900e+02 7.526001e+01
-10 10305     -4.918500e+02 5.628600e+02
-11 10305     -1.194000e+02 -3.739300e+02
-12 10305     -6.183300e+02 3.165800e+02
-13 10305     -4.781000e+01 5.114001e+01
-14 10305     1.778998e+01 -3.702500e+02
-1 10306     -1.745700e+02 4.620900e+02
-7 10306     -7.263000e+02 3.241100e+02
-11 10306     -3.132700e+02 -4.195800e+02
-1 10307     5.430800e+02 4.522800e+02
-7 10307     -7.039001e+01 5.677100e+02
-1 10308     -4.658002e+01 4.436000e+02
-7 10308     -5.899600e+02 3.548000e+02
-8 10308     -4.665700e+02 3.073001e+01
-10 10308     -5.881700e+02 5.058000e+02
-11 10308     -1.956300e+02 -4.099600e+02
-12 10308     -7.108000e+02 2.502600e+02
-13 10308     -1.163000e+02 1.221997e+01
-15 10308     -5.935100e+02 5.491000e+02
-1 10309     -4.658002e+01 4.436000e+02
-7 10309     -5.899600e+02 3.548000e+02
-8 10309     -4.665700e+02 3.073001e+01
-10 10309     -5.881700e+02 5.058000e+02
-1 10310     6.148101e+02 4.415100e+02
-7 10310     -1.060999e+01 5.802200e+02
-1 10311     -6.200000e+01 4.387300e+02
-7 10311     -6.031700e+02 3.444100e+02
-8 10311     -4.781300e+02 1.898999e+01
-13 10311     -1.279800e+02 4.270020e+00
-15 10311     -6.110800e+02 5.342100e+02
-1 10312     7.659500e+02 4.368900e+02
-5 10312     7.542400e+02 -1.232100e+02
-6 10312     -1.057000e+02 6.115100e+02
-8 10312     9.296997e+01 2.202400e+02
-9 10312     -1.394200e+02 3.188600e+02
-11 10312     4.651400e+02 -2.334100e+02
-14 10312     6.547800e+02 -2.035500e+02
-1 10313     -8.917999e+01 4.354400e+02
-10 10313     -6.349200e+02 4.798500e+02
-1 10314     4.591998e+01 4.309300e+02
-7 10314     -4.963900e+02 3.774600e+02
-11 10314     -1.124600e+02 -4.006500e+02
-1 10315     7.595900e+02 4.310400e+02
-6 10315     -1.071900e+02 6.047900e+02
-1 10316     7.595900e+02 4.310400e+02
-6 10316     -1.071900e+02 6.047900e+02
-1 10317     -2.123999e+01 4.248200e+02
-2 10317     -6.374200e+02 6.065002e+01
-7 10317     -5.578200e+02 3.461700e+02
-8 10317     -4.400100e+02 2.041000e+01
-15 10317     -5.499300e+02 5.352400e+02
-1 10318     2.295000e+02 4.244100e+02
-2 10318     -3.933300e+02 1.238600e+02
-1 10319     2.295000e+02 4.244100e+02
-2 10319     -3.933300e+02 1.238600e+02
-7 10319     -3.265100e+02 4.378500e+02
-1 10320     5.075000e+01 4.242600e+02
-7 10320     -4.891100e+02 3.728000e+02
-8 10320     -3.805200e+02 4.014001e+01
-11 10320     -1.070300e+02 -4.059700e+02
-1 10321     3.595100e+02 4.233100e+02
-2 10321     -2.810100e+02 1.622600e+02
-5 10321     4.050200e+02 -2.393900e+02
-6 10321     -4.591100e+02 4.122600e+02
-7 10321     -2.128900e+02 4.820400e+02
-9 10321     -3.856600e+02 2.047100e+02
-13 10321     1.938000e+02 9.804001e+01
-14 10321     3.170200e+02 -3.243700e+02
-1 10322     4.644399e+02 4.209800e+02
-7 10322     -1.240800e+02 5.149600e+02
-12 10322     -1.885100e+02 4.494900e+02
-1 10323     5.651300e+02 4.202000e+02
-13 10323     3.358199e+02 1.446400e+02
-14 10323     4.926300e+02 -2.724500e+02
-1 10324     6.078199e+02 4.192100e+02
-7 10324     -8.659973e+00 5.584800e+02
-12 10324     -6.332001e+01 5.025500e+02
-1 10325     5.485999e+01 4.172600e+02
-5 10325     1.167100e+02 -3.257100e+02
-7 10325     -4.830300e+02 3.669300e+02
-10 10325     -4.610700e+02 5.142300e+02
-13 10325     -3.250000e+01 1.550000e+01
-14 10325     3.471997e+01 -4.152900e+02
-1 10326     1.720500e+02 4.147300e+02
-5 10326     2.312400e+02 -2.976200e+02
-7 10326     -3.741600e+02 4.082300e+02
-10 10326     -3.305200e+02 5.564800e+02
-11 10326     -5.200195e-01 -3.879200e+02
-13 10326     5.750000e+01 4.378998e+01
-1 10327     2.437400e+02 4.144100e+02
-2 10327     -3.779800e+02 1.173000e+02
-5 10327     2.993600e+02 -2.784500e+02
-7 10327     -3.100900e+02 4.339000e+02
-10 10327     -2.529200e+02 5.842100e+02
-14 10327     2.138400e+02 -3.653800e+02
-1 10328     -2.141000e+02 4.127600e+02
-7 10328     -7.473500e+02 2.570400e+02
-10 10328     -7.753000e+02 4.033100e+02
-1 10329     2.465000e+02 4.124200e+02
-2 10329     -3.748800e+02 1.155200e+02
-5 10329     3.021801e+02 -2.805400e+02
-7 10329     -3.068900e+02 4.325200e+02
-8 10329     -2.283300e+02 8.226001e+01
-9 10329     -4.644000e+02 1.608400e+02
-10 10329     -2.493200e+02 5.811400e+02
-12 10329     -3.893700e+02 3.476800e+02
-1 10330     3.107700e+02 4.119900e+02
-7 10330     -2.514800e+02 4.561900e+02
-1 10331     -2.269400e+02 4.112800e+02
-7 10331     -7.606400e+02 2.510200e+02
-10 10331     -7.901700e+02 3.971800e+02
-13 10331     -2.601200e+02 -6.252002e+01
-14 10331     -2.532200e+02 -4.998300e+02
-1 10332     3.374700e+02 4.111600e+02
-7 10332     -2.276100e+02 4.631600e+02
-13 10332     1.800800e+02 8.310001e+01
-14 10332     2.999700e+02 -3.422800e+02
-1 10333     5.604600e+02 4.084800e+02
-2 10333     -1.241500e+02 2.052300e+02
-4 10333     -2.700000e+01 -4.721899e+02
-5 10333     5.847500e+02 -1.977200e+02
-8 10333     -2.096002e+01 1.573800e+02
-1 10334     2.449700e+02 4.065400e+02
-7 10334     -3.061400e+02 4.266000e+02
-10 10334     -2.484000e+02 5.754400e+02
-14 10334     2.169100e+02 -3.729800e+02
-1 10335     -4.906000e+01 4.038200e+02
-14 10335     -6.675000e+01 -4.587000e+02
-1 10336     2.353600e+02 4.035200e+02
-5 10336     2.934700e+02 -2.924600e+02
-1 10337     2.353600e+02 4.035200e+02
-5 10337     2.934700e+02 -2.924600e+02
-6 10337     -5.742800e+02 3.242600e+02
-7 10337     -3.133900e+02 4.202800e+02
-9 10337     -4.696200e+02 1.479800e+02
-1 10338     1.449800e+02 4.020800e+02
-7 10338     -3.949100e+02 3.858700e+02
-1 10339     6.224600e+02 4.019200e+02
-2 10339     -7.172998e+01 2.124100e+02
-6 10339     -2.099800e+02 5.134500e+02
-7 10339     8.659973e+00 5.472000e+02
-11 10339     3.687800e+02 -2.928700e+02
-1 10340     6.224600e+02 4.019200e+02
-2 10340     -7.172998e+01 2.124100e+02
-6 10340     -2.099800e+02 5.134500e+02
-7 10340     8.659973e+00 5.472000e+02
-9 10340     -2.104200e+02 2.567400e+02
-11 10340     3.687800e+02 -2.928700e+02
-1 10341     4.951899e+02 3.999900e+02
-2 10341     -1.650100e+02 1.767100e+02
-5 10341     5.322400e+02 -2.267500e+02
-12 10341     -1.525900e+02 4.395700e+02
-14 10341     4.416600e+02 -3.092600e+02
-1 10342     6.287200e+02 3.984900e+02
-2 10342     -6.567999e+01 2.112300e+02
-6 10342     -2.027600e+02 5.133600e+02
-7 10342     1.477002e+01 5.463700e+02
-9 10342     -2.057000e+02 2.555200e+02
-12 10342     -3.728998e+01 4.892500e+02
-1 10343     6.287200e+02 3.984900e+02
-6 10343     -2.027600e+02 5.133600e+02
-7 10343     1.477002e+01 5.463700e+02
-9 10343     -2.057000e+02 2.555200e+02
-12 10343     -3.728998e+01 4.892500e+02
-1 10344     7.608600e+02 3.944500e+02
-6 10344     -9.167001e+01 5.661900e+02
-7 10344     1.157300e+02 5.817700e+02
-14 10344     6.641600e+02 -2.419100e+02
-1 10345     5.981801e+02 3.922900e+02
-3 10345     -2.264400e+02 -1.344000e+02
-1 10346     6.433700e+02 3.911100e+02
-7 10346     2.803003e+01 5.441100e+02
-11 10346     3.877200e+02 -2.964500e+02
-13 10346     3.985500e+02 1.447200e+02
-14 10346     5.709399e+02 -2.749100e+02
-1 10347     6.504900e+02 3.846500e+02
-8 10347     4.270001e+01 1.577900e+02
-1 10348     6.685300e+02 3.843100e+02
-7 10348     4.990002e+01 5.459100e+02
-14 10348     5.925601e+02 -2.761900e+02
-1 10349     4.908000e+02 3.833800e+02
-2 10349     -1.639500e+02 1.578400e+02
-7 10349     -9.035999e+01 4.893000e+02
-9 10349     -2.862800e+02 2.053600e+02
-13 10349     2.941600e+02 9.973001e+01
-14 10349     4.414800e+02 -3.266400e+02
-1 10350     4.943700e+02 3.808900e+02
-2 10350     -1.600200e+02 1.558600e+02
-3 10350     -2.980800e+02 -1.753600e+02
-7 10350     -8.659003e+01 4.881500e+02
-9 10350     -2.832000e+02 2.042100e+02
-11 10350     2.736300e+02 -3.402700e+02
-12 10350     -1.452500e+02 4.196700e+02
-13 10350     2.971300e+02 9.876001e+01
-14 10350     4.455800e+02 -3.281400e+02
-1 10351     5.110601e+02 3.791900e+02
-2 10351     -1.467200e+02 1.593300e+02
-7 10351     -7.242999e+01 4.920200e+02
-8 10351     -4.083002e+01 1.207200e+02
-9 10351     -2.713700e+02 2.074000e+02
-13 10351     3.093600e+02 1.017000e+02
-14 10351     4.606200e+02 -3.249100e+02
-1 10352     5.209700e+02 3.758100e+02
-3 10352     -2.763600e+02 -1.727200e+02
-7 10352     -6.307001e+01 4.922600e+02
-11 10352     2.968500e+02 -3.380000e+02
-14 10352     4.702000e+02 -3.251400e+02
-1 10353     6.312100e+02 3.761800e+02
-3 10353     -1.987600e+02 -1.422300e+02
-7 10353     2.371002e+01 5.274500e+02
-12 10353     -2.637000e+01 4.681900e+02
-13 10353     3.923199e+02 1.292000e+02
-14 10353     5.636500e+02 -2.940200e+02
-1 10354     6.430300e+02 3.734400e+02
-2 10354     -4.796002e+01 1.901200e+02
-3 10354     -1.898900e+02 -1.415600e+02
-5 10354     6.681100e+02 -2.139400e+02
-7 10354     3.384003e+01 5.286700e+02
-8 10354     4.153003e+01 1.471400e+02
-9 10354     -1.893500e+02 2.375600e+02
-11 10354     3.933900e+02 -3.103600e+02
-13 10354     4.009700e+02 1.298900e+02
-14 10354     5.744600e+02 -2.934600e+02
-1 10355     6.296700e+02 3.728200e+02
-2 10355     -5.802002e+01 1.861200e+02
-7 10355     2.319000e+01 5.240300e+02
-12 10355     -2.691998e+01 4.639300e+02
-14 10355     5.625601e+02 -2.975400e+02
-1 10356     5.199600e+02 3.722000e+02
-7 10356     -6.277002e+01 4.885100e+02
-14 10356     4.700400e+02 -3.294100e+02
-1 10357     6.512800e+02 3.726000e+02
-7 10357     4.056000e+01 5.303900e+02
-14 10357     5.823600e+02 -2.922500e+02
-1 10358     6.341801e+02 3.710900e+02
-2 10358     -5.389001e+01 1.855700e+02
-3 10358     -1.958000e+02 -1.459800e+02
-7 10358     2.783002e+01 5.239600e+02
-14 10358     5.677600e+02 -2.978900e+02
-1 10359     2.456801e+02 3.630900e+02
-7 10359     -2.901000e+02 3.850000e+02
-8 10359     -2.166000e+02 3.735001e+01
-1 10360     -8.952002e+01 3.568000e+02
-7 10360     -5.983500e+02 2.500200e+02
-1 10361     1.934700e+02 3.410400e+02
-7 10361     -3.244100e+02 3.468800e+02
-11 10361     3.491998e+01 -4.473400e+02
-1 10362     1.934700e+02 3.410400e+02
-7 10362     -3.244100e+02 3.468800e+02
-11 10362     3.491998e+01 -4.473400e+02
-1 10363     -9.171997e+01 3.393900e+02
-7 10363     -5.897000e+02 2.338300e+02
-11 10363     -2.182700e+02 -5.141899e+02
-1 10364     -3.165600e+02 3.351700e+02
-5 10364     -2.569200e+02 -5.136300e+02
-7 10364     -8.191000e+02 1.334900e+02
-1 10365     4.388800e+02 3.314100e+02
-11 10365     2.432300e+02 -3.949700e+02
-13 10365     2.779399e+02 4.721997e+01
-14 10365     4.216200e+02 -3.920500e+02
-1 10366     -1.325500e+02 3.289800e+02
-7 10366     -6.236000e+02 2.073100e+02
-10 10366     -6.342600e+02 3.376100e+02
-1 10367     4.685300e+02 3.256100e+02
-7 10367     -8.201001e+01 4.325100e+02
-13 10367     3.021300e+02 5.085999e+01
-14 10367     4.517400e+02 -3.884300e+02
-1 10368     4.685300e+02 3.256100e+02
-7 10368     -8.201001e+01 4.325100e+02
-14 10368     4.517400e+02 -3.884300e+02
-1 10369     4.884399e+02 3.048500e+02
-2 10369     -1.064500e+02 1.010000e+02
-5 10369     5.725500e+02 -3.215100e+02
-6 10369     -2.529500e+02 3.528400e+02
-10 10369     4.948999e+01 5.562700e+02
-11 10369     2.937900e+02 -4.049200e+02
-13 10369     3.269000e+02 4.116998e+01
-14 10369     4.834000e+02 -4.020300e+02
-1 10370     5.098800e+02 2.967300e+02
-7 10370     -3.297998e+01 4.235500e+02
-1 10371     5.098800e+02 2.967300e+02
-7 10371     -3.297998e+01 4.235500e+02
-1 10372     4.972100e+02 2.965000e+02
-6 10372     -2.372100e+02 3.492400e+02
-1 10373     4.437300e+02 2.956200e+02
-13 10373     3.004500e+02 2.295001e+01
-1 10374     4.399301e+02 2.951200e+02
-14 10374     4.480601e+02 -4.262300e+02
-1 10375     5.156000e+02 2.931500e+02
-5 10375     6.044000e+02 -3.260500e+02
-6 10375     -2.185100e+02 3.546200e+02
-9 10375     -2.069900e+02 1.602300e+02
-10 10375     8.229999e+01 5.535700e+02
-14 10375     5.149301e+02 -4.058500e+02
-1 10376     4.482300e+02 2.924000e+02
-10 10376     1.433002e+01 5.278200e+02
-11 10376     2.646300e+02 -4.259900e+02
-13 10376     3.054000e+02 2.142999e+01
-14 10376     4.563500e+02 -4.260400e+02
-1 10377     4.643700e+02 2.903800e+02
-9 10377     -2.357700e+02 1.442800e+02
-11 10377     2.786899e+02 -4.236300e+02
-14 10377     4.728800e+02 -4.236000e+02
-1 10378     -1.002002e+01 2.895300e+02
-7 10378     -4.800900e+02 2.232900e+02
-1 10379     4.235000e+02 2.889900e+02
-6 10379     -2.951700e+02 3.040800e+02
-1 10380     4.640900e+02 2.865400e+02
-6 10380     -2.558500e+02 3.229000e+02
-11 10380     2.797800e+02 -4.271100e+02
-1 10381     1.085500e+02 2.860000e+02
-7 10381     -3.678600e+02 2.675600e+02
-8 10381     -2.632200e+02 -4.700000e+01
-10 10381     -3.379900e+02 3.876800e+02
-11 10381     -2.421002e+01 -5.168199e+02
-15 10381     -3.050300e+02 4.172100e+02
-1 10382     8.529700e+02 2.780400e+02
-2 10382     2.696000e+02 2.773200e+02
-3 10382     1.287200e+02 -4.975000e+01
-6 10382     1.731100e+02 5.282300e+02
-7 10382     2.763800e+02 5.347900e+02
-1 10383     -1.414100e+02 2.737600e+02
-7 10383     -5.969200e+02 1.541700e+02
-13 10383     -1.323900e+02 -1.550200e+02
-1 10384     5.007800e+02 2.713000e+02
-6 10384     -2.082800e+02 3.276500e+02
-12 10384     -6.202002e+01 3.302000e+02
-1 10385     -1.416300e+02 2.700600e+02
-5 10385     -2.006000e+01 -5.375000e+02
-13 10385     -1.304800e+02 -1.581200e+02
-1 10386     4.278199e+02 2.673900e+02
-11 10386     2.568000e+02 -4.526000e+02
-15 10386     9.796002e+01 5.471000e+02
-1 10387     4.756500e+02 2.660400e+02
-15 10387     1.552700e+02 5.674800e+02
-1 10388     -3.027700e+02 2.646600e+02
-7 10388     -7.570400e+02 7.438000e+01
-1 10389     5.065500e+02 2.642800e+02
-6 10389     -1.963300e+02 3.238800e+02
-10 10389     8.704999e+01 5.202200e+02
-15 10389     1.922300e+02 5.802400e+02
-1 10390     4.357700e+02 2.635300e+02
-10 10390     1.658002e+01 4.921600e+02
-13 10390     3.128500e+02 -3.250000e+00
-1 10391     4.340400e+02 2.603800e+02
-10 10391     1.621002e+01 4.879600e+02
-11 10391     2.652000e+02 -4.576300e+02
-14 10391     4.667000e+02 -4.618500e+02
-15 10391     1.096900e+02 5.411800e+02
-1 10392     4.544800e+02 2.594500e+02
-6 10392     -2.363400e+02 2.930900e+02
-1 10393     4.455800e+02 2.581000e+02
-6 10393     -2.427300e+02 2.870200e+02
-12 10393     -1.007700e+02 2.960500e+02
-1 10394     4.196600e+02 2.522600e+02
-5 10394     5.463000e+02 -3.930400e+02
-6 10394     -2.594600e+02 2.683100e+02
-10 10394     6.200012e+00 4.740600e+02
-11 10394     2.547900e+02 -4.683100e+02
-12 10394     -1.177400e+02 2.798500e+02
-13 10394     3.070601e+02 -1.539001e+01
-14 10394     4.587100e+02 -4.735200e+02
-15 10394     9.664001e+01 5.245200e+02
-1 10395     4.340300e+02 2.439800e+02
-5 10395     5.644500e+02 -3.965600e+02
-6 10395     -2.401600e+02 2.688500e+02
-11 10395     2.695300e+02 -4.713400e+02
-1 10396     4.278400e+02 2.384400e+02
-6 10396     -2.380600e+02 2.599100e+02
-1 10397     -4.643700e+02 2.353000e+02
-13 10397     -3.955500e+02 -2.840500e+02
-1 10398     3.810400e+02 2.330700e+02
-6 10398     -2.733000e+02 2.300800e+02
-10 10398     -2.357001e+01 4.385200e+02
-11 10398     2.286200e+02 -4.953000e+02
-14 10398     4.385800e+02 -5.053800e+02
-1 10399     4.438300e+02 2.170500e+02
-7 10399     -4.208002e+01 3.367500e+02
-11 10399     2.874600e+02 -4.927800e+02
-13 10399     3.439100e+02 -3.522998e+01
-14 10399     5.057500e+02 -5.010100e+02
-1 10400     5.920699e+02 2.168900e+02
-6 10400     -7.815002e+01 3.244000e+02
-1 10401     4.253400e+02 2.164500e+02
-10 10401     2.915997e+01 4.384700e+02
-11 10401     2.712200e+02 -4.983101e+02
-13 10401     3.309900e+02 -4.054999e+01
-14 10401     4.897600e+02 -5.074100e+02
-1 10402     4.406100e+02 2.146000e+02
-7 10402     -4.381000e+01 3.332200e+02
-11 10402     2.850900e+02 -4.957500e+02
-1 10403     4.372800e+02 2.083800e+02
-10 10403     4.732001e+01 4.340100e+02
-1 10404     6.076001e+01 2.055300e+02
-10 10404     -3.460900e+02 2.801600e+02
-15 10404     -3.154500e+02 2.927300e+02
-1 10405     5.896700e+02 1.926000e+02
-6 10405     -5.572998e+01 3.017300e+02
-1 10406     6.206500e+02 1.895200e+02
-6 10406     -2.792999e+01 3.150700e+02
-1 10407     5.654700e+02 1.831800e+02
-6 10407     -6.676001e+01 2.818200e+02
-10 10407     1.845000e+02 4.574800e+02
-11 10407     4.012000e+02 -4.897500e+02
-15 10407     3.067700e+02 5.088400e+02
-1 10408     8.769700e+02 1.815300e+02
-2 10408     3.423800e+02 2.195500e+02
-7 10408     3.335601e+02 4.662100e+02
-1 10409     -1.900200e+02 1.784700e+02
-15 10409     -6.240400e+02 1.307200e+02
-1 10410     2.935300e+02 1.745200e+02
-15 10410     4.262000e+01 3.826600e+02
-1 10411     9.154999e+01 1.695100e+02
-5 10411     3.999900e+02 -5.595000e+02
-7 10411     -2.635200e+02 1.854800e+02
-12 10411     -2.717800e+02 1.140300e+02
-15 10411     -2.256800e+02 2.700200e+02
-1 10412     2.886700e+02 1.695500e+02
-7 10412     -5.500000e+01 2.813400e+02
-10 10412     -3.090997e+01 3.413200e+02
-14 10412     5.690500e+02 -5.667500e+02
-1 10413     5.585000e+02 1.605900e+02
-7 10413     7.913000e+01 3.318400e+02
-10 10413     1.898000e+02 4.315100e+02
-1 10414     -3.049988e+00 1.484400e+02
-8 10414     -2.432900e+02 -1.652000e+02
-10 10414     -3.842900e+02 1.911600e+02
-15 10414     -3.609800e+02 1.887400e+02
-1 10415     8.132001e+01 1.484200e+02
-10 10415     -2.610500e+02 2.313700e+02
-12 10415     -2.617500e+02 9.215997e+01
-15 10415     -2.247900e+02 2.390900e+02
-1 10416     1.303998e+01 1.472600e+02
-7 10416     -3.712100e+02 1.099500e+02
-10 10416     -3.668500e+02 1.969300e+02
-15 10416     -3.397300e+02 1.957900e+02
-1 10417     1.717600e+02 1.448600e+02
-10 10417     -1.416700e+02 2.682200e+02
-1 10418     5.684003e+01 1.352500e+02
-5 10418     3.944301e+02 -6.049600e+02
-15 10418     -2.472500e+02 2.107400e+02
-1 10419     4.140300e+02 1.353100e+02
-15 10419     2.056700e+02 3.919900e+02
-1 10420     -8.907001e+01 1.339100e+02
-7 10420     -4.578300e+02 5.359003e+01
-13 10420     -9.070007e+00 -2.516100e+02
-1 10421     5.325699e+02 1.270500e+02
-10 10421     1.810900e+02 3.861600e+02
-1 10422     4.662800e+02 1.226300e+02
-15 10422     2.764000e+02 4.011700e+02
-1 10423     5.329500e+02 1.219700e+02
-10 10423     1.836300e+02 3.819500e+02
-1 10424     6.188400e+02 1.046500e+02
-15 10424     4.144600e+02 4.398500e+02
-1 10425     8.482100e+02 1.042800e+02
-15 10425     7.014800e+02 5.521100e+02
-1 10426     8.606899e+02 1.011000e+02
-2 10426     4.267500e+02 2.031500e+02
-3 10426     2.887800e+02 -1.154400e+02
-8 10426     4.115100e+02 1.406900e+02
-10 10426     5.326801e+02 4.868600e+02
-13 10426     7.491200e+02 1.015997e+01
-15 10426     7.180601e+02 5.542700e+02
-1 10427     4.685100e+02 9.589001e+01
-15 10427     2.968500e+02 3.710100e+02
-1 10428     -5.040997e+01 9.334000e+01
-7 10428     -3.963600e+02 3.547998e+01
-1 10429     1.844100e+02 9.203000e+01
-15 10429     -4.113000e+01 2.265800e+02
-1 10430     1.844100e+02 9.203000e+01
-15 10430     -4.113000e+01 2.265800e+02
-1 10431     6.187200e+02 8.839999e+01
-10 10431     2.815000e+02 3.802400e+02
-15 10431     4.226300e+02 4.202400e+02
-1 10432     1.137000e+02 8.601999e+01
-7 10432     -1.696000e+02 1.362700e+02
-10 10432     -1.790800e+02 1.803300e+02
-1 10433     6.002600e+02 8.445001e+01
-10 10433     2.669700e+02 3.692400e+02
-1 10434     -4.359998e+01 8.348999e+01
-7 10434     -3.836000e+02 2.996002e+01
-9 10434     -3.972000e+02 -1.443400e+02
-13 10434     5.621002e+01 -2.777800e+02
-1 10435     8.505800e+02 8.076999e+01
-7 10435     3.744500e+02 3.870900e+02
-8 10435     4.120300e+02 1.216700e+02
-1 10436     5.869301e+02 8.045999e+01
-10 10436     2.554301e+02 3.600700e+02
-15 10436     3.908300e+02 3.962200e+02
-1 10437     8.722998e+01 7.994000e+01
-15 10437     -1.684700e+02 1.588800e+02
-1 10438     6.082700e+02 7.442999e+01
-10 10438     2.790000e+02 3.621700e+02
-1 10439     -4.503998e+01 7.346002e+01
-7 10439     -3.781400e+02 2.084003e+01
-10 10439     -3.880700e+02 9.179999e+01
-1 10440     6.199951e-01 7.260999e+01
-7 10440     -2.810400e+02 6.776001e+01
-15 10440     -2.768200e+02 1.050600e+02
-1 10441     6.729900e+02 6.965002e+01
-7 10441     2.126600e+02 3.009100e+02
-1 10442     4.404100e+02 6.859003e+01
-15 10442     2.820699e+02 3.249100e+02
-1 10443     8.636600e+02 6.650000e+01
-2 10443     4.478000e+02 1.792800e+02
-7 10443     3.907600e+02 3.810700e+02
-10 10443     5.482500e+02 4.531200e+02
-1 10444     6.786600e+02 6.345001e+01
-7 10444     2.198000e+02 2.986500e+02
-1 10445     6.754900e+02 6.148999e+01
-7 10445     2.188600e+02 2.952100e+02
-1 10446     2.905100e+02 5.942999e+01
-15 10446     1.109300e+02 2.416300e+02
-1 10447     2.905100e+02 5.942999e+01
-15 10447     1.109300e+02 2.416300e+02
-1 10448     5.544000e+01 5.923999e+01
-7 10448     -2.150300e+02 8.454999e+01
-10 10448     -2.330600e+02 1.262100e+02
-12 10448     -1.864600e+02 1.833002e+01
-15 10448     -1.947800e+02 1.176400e+02
-1 10449     3.018101e+02 5.898999e+01
-2 10449     2.495400e+02 1.202700e+02
-5 10449     7.805200e+02 -5.893300e+02
-6 10449     7.891998e+01 1.341200e+02
-7 10449     2.820001e+01 2.016600e+02
-10 10449     4.439001e+01 2.329500e+02
-12 10449     1.021100e+02 1.858000e+02
-13 10449     4.740400e+02 -1.533200e+02
-1 10450     8.764900e+02 5.915997e+01
-3 10450     3.251801e+02 -1.350900e+02
-9 10450     2.565601e+02 2.508000e+02
-10 10450     5.645400e+02 4.505600e+02
-11 10450     7.164000e+02 -5.128800e+02
-12 10450     4.630400e+02 3.730700e+02
-15 10450     7.568400e+02 5.116100e+02
-1 10451     8.184000e+02 5.735999e+01
-2 10451     4.099301e+02 1.420700e+02
-6 10451     3.160500e+02 3.282400e+02
-9 10451     2.118300e+02 2.149300e+02
-12 10451     4.065000e+02 3.362200e+02
-15 10451     6.874100e+02 4.819000e+02
-1 10452     3.528003e+01 5.387000e+01
-10 10452     -2.565100e+02 1.109300e+02
-1 10453     6.992400e+02 4.571997e+01
-13 10453     6.085100e+02 -8.790997e+01
-1 10454     4.330000e+02 4.033002e+01
-7 10454     1.378400e+02 2.341900e+02
-1 10455     2.397300e+02 3.797998e+01
-2 10455     2.155000e+02 7.629999e+01
-3 10455     1.227200e+02 -2.346100e+02
-4 10455     -2.602600e+02 -4.723101e+02
-6 10455     4.200000e+01 7.796002e+01
-8 10455     2.097500e+02 1.517999e+01
-10 10455     -1.245001e+01 1.844700e+02
-15 10455     5.941998e+01 1.892500e+02
-1 10456     9.738000e+01 3.685999e+01
-7 10456     -1.601200e+02 8.520999e+01
-15 10456     -1.265100e+02 1.117500e+02
-1 10457     1.318700e+02 3.273999e+01
-3 10457     1.709998e+01 -3.131700e+02
-7 10457     -1.181500e+02 1.007900e+02
-10 10457     -1.285900e+02 1.314600e+02
-12 10457     -6.356000e+01 5.154999e+01
-13 10457     3.411400e+02 -2.306000e+02
-15 10457     -7.547998e+01 1.256500e+02
-1 10458     3.585601e+02 3.223999e+01
-10 10458     1.137500e+02 2.274900e+02
-1 10459     4.237900e+02 3.028003e+01
-15 10459     2.845601e+02 2.708000e+02
-1 10460     2.859600e+02 2.717999e+01
-2 10460     2.620300e+02 9.042999e+01
-3 10460     1.633000e+02 -2.209400e+02
-4 10460     -2.639600e+02 -5.090800e+02
-8 10460     2.465300e+02 2.660001e+01
-10 10460     4.235999e+01 1.927100e+02
-12 10460     1.096600e+02 1.480900e+02
-15 10460     1.233200e+02 1.998400e+02
-1 10461     2.028199e+02 2.188000e+01
-2 10461     1.937300e+02 4.312000e+01
-7 10461     -4.194000e+01 1.266500e+02
-9 10461     5.142999e+01 1.282500e+02
-10 10461     -4.396997e+01 1.516300e+02
-13 10461     4.119800e+02 -2.128100e+02
-15 10461     2.271002e+01 1.505600e+02
-1 10462     8.187400e+02 1.209998e+01
-3 10462     2.983600e+02 -2.065900e+02
-10 10462     5.233101e+02 3.819200e+02
-13 10462     7.446200e+02 -6.741998e+01
-15 10462     7.089301e+02 4.289100e+02
-1 10463     4.294200e+02 9.530029e+00
-7 10463     1.498400e+02 2.070600e+02
-1 10464     9.683002e+01 8.549988e+00
-7 10464     -1.450200e+02 6.045001e+01
-10 10464     -1.600800e+02 8.989001e+01
-15 10464     -1.110500e+02 7.694000e+01
-1 10465     -2.322700e+02 3.989990e+00
-7 10465     -5.134400e+02 -1.278100e+02
-15 10465     -5.664000e+02 -1.149600e+02
-1 10466     -1.681500e+02 5.399780e-01
-6 10466     -5.492300e+02 -3.341200e+02
-8 10466     -2.588400e+02 -3.250800e+02
-1 10467     -3.229980e+00 7.899780e-01
-15 10467     -2.354600e+02 1.425000e+01
-1 10468     1.894100e+02 -3.200012e+00
-7 10468     -4.265002e+01 9.839999e+01
-10 10468     -4.703003e+01 1.193500e+02
-13 10468     4.107300e+02 -2.370300e+02
-1 10469     8.061200e+02 -3.929993e+00
-6 10469     3.385000e+02 2.662600e+02
-7 10469     3.682500e+02 3.017400e+02
-10 10469     5.163199e+02 3.605900e+02
-13 10469     7.397100e+02 -8.412000e+01
-15 10469     7.012900e+02 4.034300e+02
-1 10470     2.469399e+02 -6.840027e+00
-15 10470     9.295001e+01 1.377900e+02
-1 10471     2.469399e+02 -6.840027e+00
-15 10471     9.295001e+01 1.377900e+02
-1 10472     5.265800e+02 -6.909973e+00
-15 10472     4.137400e+02 2.745000e+02
-1 10473     3.112900e+02 -1.713000e+01
-10 10473     8.789001e+01 1.562200e+02
-15 10473     1.772900e+02 1.577600e+02
-1 10474     5.076000e+02 -2.212000e+01
-15 10474     4.025200e+02 2.484300e+02
-1 10475     -4.618000e+02 -2.453003e+01
-10 10475     -8.212100e+02 -2.161400e+02
-15 10475     -8.625600e+02 -2.843600e+02
-1 10476     2.673900e+02 -3.628003e+01
-10 10476     5.097998e+01 1.184600e+02
-1 10477     3.430100e+02 -3.939001e+01
-7 10477     1.075500e+02 1.341500e+02
-1 10478     -1.407001e+01 -4.640997e+01
-10 10478     -2.529100e+02 -1.700000e+01
-1 10479     8.398400e+02 -5.089001e+01
-2 10479     4.874301e+02 7.384003e+01
-6 10479     3.995100e+02 2.456300e+02
-15 10479     7.641500e+02 3.642200e+02
-1 10480     3.545500e+02 -5.556000e+01
-15 10480     2.484900e+02 1.332000e+02
-1 10481     8.030300e+02 -6.841998e+01
-15 10481     7.277100e+02 3.253700e+02
-1 10482     1.261000e+02 -7.271002e+01
-10 10482     -8.609998e+01 1.835999e+01
-15 10482     -2.506000e+01 -6.609985e+00
-1 10483     3.268400e+02 -7.342999e+01
-8 10483     3.229000e+02 -3.010001e+01
-15 10483     2.237900e+02 9.753000e+01
-1 10484     6.863000e+01 -7.722998e+01
-15 10484     -9.663000e+01 -4.325000e+01
-1 10485     4.590000e+02 -7.715002e+01
-10 10485     2.548900e+02 1.557900e+02
-1 10486     8.819399e+02 -7.894000e+01
-6 10486     4.574301e+02 2.475700e+02
-7 10486     4.603199e+02 2.736800e+02
-8 10486     5.024100e+02 3.895001e+01
-9 10486     3.237100e+02 1.702400e+02
-10 10486     6.211700e+02 3.154200e+02
-12 10486     5.403300e+02 2.571500e+02
-15 10486     8.271300e+02 3.519900e+02
-1 10487     1.597600e+02 -8.208002e+01
-10 10487     -4.654999e+01 2.316998e+01
-1 10488     1.651700e+02 -8.315002e+01
-10 10488     -3.964001e+01 2.439001e+01
-1 10489     5.325200e+02 -8.654999e+01
-7 10489     2.505200e+02 1.575500e+02
-15 10489     4.584000e+02 1.806400e+02
-1 10490     3.315800e+02 -9.016998e+01
-15 10490     2.381300e+02 7.914001e+01
-1 10491     3.448900e+02 -9.153003e+01
-13 10491     5.607900e+02 -2.561200e+02
-1 10492     1.427800e+02 -9.337000e+01
-3 10492     1.321600e+02 -3.971700e+02
-6 10492     3.448999e+01 -1.098900e+02
-7 10492     -4.321002e+01 -1.989990e+00
-10 10492     -5.778003e+01 4.510010e+00
-12 10492     4.071002e+01 -5.939001e+01
-15 10492     7.799988e+00 -2.284998e+01
-1 10493     3.016600e+02 -9.346002e+01
-7 10493     9.588000e+01 6.981000e+01
-15 10493     2.032900e+02 6.078003e+01
-1 10494     3.095000e+02 -9.460999e+01
-8 10494     3.205600e+02 -5.335001e+01
-1 10495     4.827700e+02 -9.535999e+01
-10 10495     2.831801e+02 1.463200e+02
-1 10496     5.047400e+02 -1.008300e+02
-10 10496     3.031801e+02 1.490500e+02
-15 10496     4.372800e+02 1.509000e+02
-1 10497     1.985900e+02 -1.034200e+02
-2 10497     2.680400e+02 -7.459003e+01
-15 10497     8.160999e+01 -5.989990e+00
-1 10498     4.903003e+01 -1.045100e+02
-10 10498     -1.545200e+02 -4.979999e+01
-1 10499     6.083002e+01 -1.104800e+02
-6 10499     -3.503998e+01 -1.844100e+02
-7 10499     -1.113100e+02 -5.727002e+01
-8 10499     1.468400e+02 -1.803400e+02
-10 10499     -1.388700e+02 -5.109998e+01
-12 10499     -3.507001e+01 -1.317000e+02
-15 10499     -8.659003e+01 -8.801001e+01
-1 10500     1.549200e+02 -1.183500e+02
-7 10500     -1.887000e+01 -1.756000e+01
-1 10501     -1.385100e+02 -1.232900e+02
-4 10501     -4.044800e+02 -1.802700e+02
-1 10502     4.642400e+02 -1.272600e+02
-10 10502     2.784200e+02 1.063900e+02
-1 10503     5.013900e+02 -1.280600e+02
-7 10503     2.518700e+02 1.142700e+02
-15 10503     4.471100e+02 1.165600e+02
-1 10504     1.529399e+02 -1.291100e+02
-4 10504     -3.872200e+02 -4.435900e+02
-7 10504     -1.626001e+01 -2.847998e+01
-8 10504     2.329700e+02 -1.448400e+02
-10 10504     -3.027002e+01 -2.853998e+01
-15 10504     4.001001e+01 -6.079999e+01
-1 10505     5.265000e+02 -1.295200e+02
-7 10505     2.709000e+02 1.226400e+02
-10 10505     3.360400e+02 1.286700e+02
-15 10505     4.767500e+02 1.274300e+02
-1 10506     8.362100e+02 -1.295400e+02
-15 10506     7.963800e+02 2.699400e+02
-1 10507     2.999800e+02 -1.316300e+02
-15 10507     2.195200e+02 1.250000e+01
-1 10508     8.242800e+02 -1.333000e+02
-6 10508     4.291600e+02 1.643300e+02
-7 10508     4.328300e+02 2.064900e+02
-10 10508     5.846100e+02 2.387600e+02
-1 10509     1.523400e+02 -1.365200e+02
-6 10509     7.487000e+01 -1.432500e+02
-1 10510     3.878900e+02 -1.380600e+02
-6 10510     2.618400e+02 -3.130005e+00
-1 10511     3.449700e+02 -1.427100e+02
-10 10511     1.716200e+02 4.095001e+01
-15 10511     2.782900e+02 2.240002e+01
-1 10512     3.678101e+02 -1.447500e+02
-2 10512     4.136000e+02 -3.338000e+01
-3 10512     3.105100e+02 -3.351300e+02
-6 10512     2.515800e+02 -2.078998e+01
-8 10512     3.719000e+02 -7.533002e+01
-10 10512     1.948500e+02 4.870001e+01
-12 10512     2.785900e+02 1.957001e+01
-1 10513     3.678101e+02 -1.447500e+02
-2 10513     4.136000e+02 -3.338000e+01
-6 10513     2.515800e+02 -2.078998e+01
-8 10513     3.719000e+02 -7.533002e+01
-10 10513     1.948500e+02 4.870001e+01
-12 10513     2.785900e+02 1.957001e+01
-1 10514     3.722000e+02 -1.464900e+02
-7 10514     1.709600e+02 5.196002e+01
-15 10514     3.118900e+02 3.151001e+01
-1 10515     8.025100e+02 -1.536800e+02
-15 10515     7.674800e+02 2.253000e+02
-1 10516     -6.241400e+02 -1.602000e+02
-4 10516     -4.636600e+02 1.441600e+02
-1 10517     2.309000e+02 -1.627500e+02
-7 10517     6.958002e+01 -2.073999e+01
-1 10518     -4.827200e+02 -1.728900e+02
-15 10518     -7.926300e+02 -4.906000e+02
-1 10519     3.058400e+02 -1.781700e+02
-7 10519     1.370700e+02 -6.900024e-01
-1 10520     4.146300e+02 -1.778800e+02
-7 10520     2.176801e+02 4.362000e+01
-1 10521     3.541801e+02 -1.823600e+02
-7 10521     1.763101e+02 1.592999e+01
-1 10522     3.961300e+02 -1.848800e+02
-3 10522     3.554800e+02 -3.507600e+02
-7 10522     2.083600e+02 3.084003e+01
-10 10522     2.409700e+02 2.025000e+01
-1 10523     3.662600e+02 -1.891000e+02
-7 10523     1.888300e+02 1.532001e+01
-1 10524     4.980500e+02 -1.903700e+02
-7 10524     2.768000e+02 6.332001e+01
-1 10525     -3.878100e+02 -1.934400e+02
-7 10525     -5.376000e+02 -3.866800e+02
-1 10526     1.833400e+02 -1.945000e+02
-7 10526     4.189001e+01 -7.053998e+01
-13 10526     4.818300e+02 -3.904500e+02
-15 10526     1.132000e+02 -1.245600e+02
-1 10527     1.833400e+02 -1.945000e+02
-15 10527     1.132000e+02 -1.245600e+02
-1 10528     2.432200e+02 -1.995700e+02
-6 10528     1.932700e+02 -1.436801e+02
-1 10529     1.358600e+02 -2.018100e+02
-13 10529     4.528600e+02 -4.114300e+02
-1 10530     8.158002e+01 -2.092700e+02
-15 10530     -9.729980e+00 -1.990600e+02
-1 10531     -6.313300e+02 -2.110600e+02
-4 10531     -5.049500e+02 1.429500e+02
-1 10532     -6.367500e+02 -2.204400e+02
-4 10532     -5.136900e+02 1.462700e+02
-1 10533     -2.566900e+02 -2.238500e+02
-7 10533     -3.896000e+02 -3.415600e+02
-1 10534     4.661500e+02 -2.267300e+02
-7 10534     2.746000e+02 2.251001e+01
-10 10534     3.226700e+02 6.750000e+00
-12 10534     4.014700e+02 -9.539978e+00
-15 10534     4.612300e+02 -1.725000e+01
-1 10535     2.269000e+02 -2.279800e+02
-3 10535     2.985900e+02 -4.511300e+02
-8 10535     3.418300e+02 -1.805800e+02
-15 10535     1.848600e+02 -1.419800e+02
-1 10536     8.207800e+02 -2.299300e+02
-8 10536     5.209800e+02 -9.310999e+01
-1 10537     2.764700e+02 -2.303600e+02
-15 10537     2.442100e+02 -1.180800e+02
-1 10538     8.446400e+02 -2.310400e+02
-15 10538     8.539399e+02 1.556200e+02
-1 10539     -4.959900e+02 -2.319600e+02
-15 10539     -7.716200e+02 -5.763700e+02
-1 10540     -3.150500e+02 -2.336300e+02
-10 10540     -5.192200e+02 -3.715300e+02
-1 10541     -2.162000e+02 -2.340600e+02
-7 10541     -3.445700e+02 -3.292200e+02
-1 10542     -2.162000e+02 -2.340600e+02
-7 10542     -3.445700e+02 -3.292200e+02
-1 10543     -6.302700e+02 -2.378000e+02
-4 10543     -5.267200e+02 1.389200e+02
-1 10544     -2.060300e+02 -2.419300e+02
-4 10544     -5.013900e+02 -1.609700e+02
-1 10545     5.448999e+01 -2.430600e+02
-13 10545     3.694399e+02 -4.886899e+02
-1 10546     8.439399e+02 -2.453000e+02
-7 10546     4.912100e+02 1.267600e+02
-9 10546     3.744600e+02 4.272998e+01
-10 10546     6.464399e+02 1.364500e+02
-13 10546     8.640400e+02 -2.509200e+02
-15 10546     8.602900e+02 1.382900e+02
-1 10547     5.309998e+01 -2.462600e+02
-15 10547     -3.191998e+01 -2.620100e+02
-1 10548     8.244200e+02 -2.467200e+02
-7 10548     4.753600e+02 1.170700e+02
-8 10548     5.316300e+02 -1.019800e+02
-10 10548     6.262300e+02 1.283100e+02
-12 10548     5.736801e+02 7.482001e+01
-15 10548     8.371899e+02 1.271600e+02
-1 10549     5.138000e+02 -2.507600e+02
-10 10549     3.758000e+02 2.400024e+00
-1 10550     5.064800e+02 -2.515800e+02
-10 10550     3.704100e+02 -1.510010e+00
-15 10550     5.189100e+02 -2.672998e+01
-1 10551     2.251600e+02 -2.538400e+02
-10 10551     1.017900e+02 -1.258500e+02
-15 10551     1.963300e+02 -1.739800e+02
-1 10552     5.621997e+01 -2.556800e+02
-10 10552     -8.819000e+01 -2.074300e+02
-1 10553     2.345000e+02 -2.571000e+02
-10 10553     1.134900e+02 -1.244700e+02
-1 10554     -2.014700e+02 -2.582100e+02
-15 10554     -3.601100e+02 -4.271700e+02
-1 10555     4.986400e+02 -2.642600e+02
-15 10555     5.142600e+02 -4.694000e+01
-1 10556     4.661100e+02 -2.666800e+02
-6 10556     4.014200e+02 -7.159003e+01
-7 10556     2.970800e+02 -7.780029e+00
-12 10556     4.351000e+02 -3.962000e+01
-15 10556     4.843900e+02 -6.438000e+01
-1 10557     4.039700e+02 -2.688300e+02
-7 10557     2.530699e+02 -3.463000e+01
-1 10558     3.167300e+02 -2.688400e+02
-6 10558     3.099000e+02 -1.523000e+02
-10 10558     2.027800e+02 -9.882001e+01
-12 10558     3.275100e+02 -1.166000e+02
-15 10558     3.158500e+02 -1.426800e+02
-1 10559     -6.090400e+02 -2.711700e+02
-4 10559     -5.538000e+02 1.186500e+02
-1 10560     4.969100e+02 -2.770400e+02
-15 10560     5.159900e+02 -6.301001e+01
-1 10561     4.112100e+02 -2.782400e+02
-15 10561     4.260300e+02 -1.064600e+02
-1 10562     4.112100e+02 -2.782400e+02
-15 10562     4.260300e+02 -1.064600e+02
-1 10563     2.260200e+02 -2.799300e+02
-10 10563     1.109300e+02 -1.527200e+02
-15 10563     2.076700e+02 -2.061000e+02
-1 10564     5.014700e+02 -2.841500e+02
-15 10564     5.220200e+02 -6.962000e+01
-1 10565     6.935800e+02 -2.901400e+02
-7 10565     4.119100e+02 3.682001e+01
-12 10565     5.184800e+02 -1.660999e+01
-1 10566     -3.948800e+02 -2.934600e+02
-10 10566     -5.784200e+02 -4.801000e+02
-1 10567     -2.484900e+02 -2.940100e+02
-6 10567     -2.762000e+02 -6.612900e+02
-15 10567     -3.974200e+02 -5.004100e+02
-1 10568     7.802800e+02 -3.044600e+02
-7 10568     4.758101e+02 5.882001e+01
-10 10568     6.146400e+02 5.484998e+01
-15 10568     8.222300e+02 3.958002e+01
-1 10569     3.553400e+02 -3.129500e+02
-10 10569     2.500100e+02 -1.289300e+02
-1 10570     -2.336800e+02 -3.195900e+02
-15 10570     -3.611900e+02 -5.233600e+02
-1 10571     4.979200e+02 -3.232900e+02
-15 10571     5.306200e+02 -1.206900e+02
-1 10572     -6.411700e+02 -3.297700e+02
-4 10572     -6.085600e+02 1.350300e+02
-1 10573     2.234500e+02 -3.314900e+02
-7 10573     1.252100e+02 -1.758700e+02
-13 10573     5.468000e+02 -4.966700e+02
-1 10574     7.715601e+02 -3.318900e+02
-15 10574     8.271700e+02 3.599976e+00
-1 10575     -1.404300e+02 -3.465800e+02
-10 10575     -2.629000e+02 -4.014000e+02
-1 10576     -6.795000e+02 -3.487700e+02
-4 10576     -6.290900e+02 1.616000e+02
-1 10577     3.330100e+02 -3.519400e+02
-10 10577     2.401200e+02 -1.794300e+02
-1 10578     6.070500e+02 -3.551700e+02
-10 10578     4.828199e+02 -6.656000e+01
-1 10579     2.466500e+02 -3.626300e+02
-7 10579     1.504600e+02 -1.949100e+02
-10 10579     1.565600e+02 -2.294400e+02
-13 10579     5.654700e+02 -5.181500e+02
-1 10580     3.115601e+02 -3.648100e+02
-15 10580     3.419399e+02 -2.656800e+02
-1 10581     3.093600e+02 -3.683700e+02
-10 10581     2.208300e+02 -2.071000e+02
-15 10581     3.428600e+02 -2.713500e+02
-1 10582     -3.693300e+02 -3.773800e+02
-6 10582     -2.937200e+02 -8.432800e+02
-1 10583     5.879200e+02 -3.819100e+02
-7 10583     3.897900e+02 -7.275000e+01
-10 10583     4.783900e+02 -1.003700e+02
-15 10583     6.552200e+02 -1.461300e+02
-1 10584     -6.751300e+02 -3.842700e+02
-4 10584     -6.620200e+02 1.536800e+02
-1 10585     -6.312200e+02 -3.955400e+02
-4 10585     -6.692000e+02 1.183000e+02
-1 10586     -1.548500e+02 -3.974700e+02
-4 10586     -6.338500e+02 -2.422600e+02
-6 10586     -6.837000e+01 -6.661400e+02
-7 10586     -1.820400e+02 -4.343400e+02
-1 10587     -1.596700e+02 -4.121400e+02
-6 10587     -5.758002e+01 -6.852200e+02
-7 10587     -1.786100e+02 -4.514301e+02
-1 10588     -6.473900e+02 -4.140900e+02
-4 10588     -6.885600e+02 1.283400e+02
-1 10589     -3.395600e+02 -4.165600e+02
-7 10589     -3.406700e+02 -5.571100e+02
-1 10590     -6.759600e+02 -4.247300e+02
-4 10590     -7.019000e+02 1.488900e+02
-1 10591     -1.497600e+02 -4.265200e+02
-4 10591     -6.619300e+02 -2.526500e+02
-6 10591     -3.415002e+01 -6.888400e+02
-9 10591     6.583002e+01 -4.576200e+02
-1 10592     -6.766200e+02 -4.289200e+02
-4 10592     -7.058900e+02 1.487600e+02
-1 10593     8.420900e+02 -4.516200e+02
-7 10593     5.834100e+02 -2.403003e+01
-12 10593     7.292800e+02 -6.515002e+01
-1 10594     7.499600e+02 -4.636899e+02
-7 10594     5.333900e+02 -6.803998e+01
-1 10595     -2.807400e+02 -4.727200e+02
-6 10595     -9.748001e+01 -8.413300e+02
-7 10595     -2.485800e+02 -5.712300e+02
-1 10596     5.612100e+02 -4.867900e+02
-7 10596     4.240400e+02 -1.628300e+02
-15 10596     6.843800e+02 -2.817000e+02
-1 10597     2.150400e+02 -5.538600e+02
-2 10597     5.502300e+02 -5.174900e+02
-1 10598     8.092100e+02 -5.800300e+02
-10 10598     7.609800e+02 -1.949800e+02
-1 10599     1.155800e+02 -5.877900e+02
-10 10599     1.307600e+02 -5.222700e+02
-1 10600     6.001600e+02 5.836800e+02
-2 10600     -1.417500e+02 3.838300e+02
-4 10600     7.095001e+01 -4.810601e+02
-5 10600     5.806300e+02 -2.809003e+01
-8 10600     -3.713000e+01 2.995200e+02
-9 10600     -2.768400e+02 4.042800e+02
-11 10600     2.994399e+02 -1.603100e+02
-13 10600     3.282200e+02 2.753900e+02
-14 10600     4.816600e+02 -1.139800e+02
-1 10601     4.614600e+02 5.831500e+02
-3 10601     -3.743700e+02 2.303998e+01
-4 10601     6.123999e+01 -4.032100e+02
-6 10601     -4.286900e+02 6.443500e+02
-8 10601     -1.209100e+02 2.756100e+02
-9 10601     -3.625000e+02 3.769700e+02
-14 10601     3.692000e+02 -1.464900e+02
-1 10602     6.216500e+02 5.813100e+02
-2 10602     -1.259800e+02 3.860100e+02
-4 10602     7.121997e+01 -4.935601e+02
-5 10602     5.987600e+02 -2.557001e+01
-6 10602     -2.847200e+02 7.070600e+02
-8 10602     -2.395001e+01 3.012200e+02
-9 10602     -2.634300e+02 4.061600e+02
-11 10602     3.158101e+02 -1.579600e+02
-13 10602     3.427300e+02 2.781100e+02
-14 10602     4.994100e+02 -1.112300e+02
-1 10603     6.356899e+02 5.810600e+02
-2 10603     -1.162900e+02 3.882000e+02
-4 10603     7.200000e+01 -5.015900e+02
-5 10603     6.102800e+02 -2.296002e+01
-6 10603     -2.728700e+02 7.113700e+02
-8 10603     -1.590997e+01 3.034500e+02
-9 10603     -2.549700e+02 4.086300e+02
-11 10603     3.260400e+02 -1.553100e+02
-13 10603     3.518900e+02 2.809300e+02
-14 10603     5.104500e+02 -1.081200e+02
-1 10604     6.174301e+02 5.766400e+02
-2 10604     -1.276000e+02 3.813100e+02
-5 10604     5.970000e+02 -3.077002e+01
-9 10604     -2.645300e+02 4.020200e+02
-11 10604     3.143400e+02 -1.625800e+02
-1 10605     6.174301e+02 5.766400e+02
-2 10605     -1.276000e+02 3.813100e+02
-3 10605     -2.646900e+02 4.638000e+01
-5 10605     5.970000e+02 -3.077002e+01
-8 10605     -2.528003e+01 2.977800e+02
-9 10605     -2.645300e+02 4.020200e+02
-11 10605     3.143400e+02 -1.625800e+02
-13 10605     3.409600e+02 2.741600e+02
-14 10605     4.972500e+02 -1.156800e+02
-1 10606     6.300500e+02 5.758100e+02
-2 10606     -1.186200e+02 3.828500e+02
-3 10606     -2.565200e+02 4.739001e+01
-5 10606     6.070500e+02 -2.875000e+01
-8 10606     -1.789001e+01 2.983100e+02
-9 10606     -2.571500e+02 4.029000e+02
-11 10606     3.231700e+02 -1.606100e+02
-13 10606     3.492200e+02 2.757700e+02
-14 10606     5.072400e+02 -1.142200e+02
-1 10607     5.987900e+02 5.745600e+02
-5 10607     5.818000e+02 -3.695001e+01
-13 10607     3.293000e+02 2.685700e+02
-14 10607     4.831100e+02 -1.222500e+02
-1 10608     5.987900e+02 5.745600e+02
-2 10608     -1.397800e+02 3.744800e+02
-3 10608     -2.760200e+02 3.937000e+01
-5 10608     5.818000e+02 -3.695001e+01
-9 10608     -2.746500e+02 3.957100e+02
-11 10608     3.011801e+02 -1.678000e+02
-13 10608     3.293000e+02 2.685700e+02
-1 10609     8.622000e+02 5.715400e+02
-13 10609     4.960200e+02 3.174900e+02
-14 10609     6.850100e+02 -6.890002e+01
-1 10610     5.850200e+02 5.711400e+02
-2 10610     -1.494600e+02 3.694500e+02
-9 10610     -2.824200e+02 3.912400e+02
-11 10610     2.915300e+02 -1.726600e+02
-14 10610     4.730000e+02 -1.279500e+02
-1 10611     5.748600e+02 5.689900e+02
-6 10611     -3.212300e+02 6.743900e+02
-8 10611     -4.915002e+01 2.842400e+02
-11 10611     2.844600e+02 -1.763500e+02
-14 10611     4.653700e+02 -1.319600e+02
-1 10612     5.880200e+02 5.675600e+02
-2 10612     -1.454200e+02 3.668000e+02
-3 10612     -2.812700e+02 3.229999e+01
-4 10612     6.166998e+01 -4.759000e+02
-5 10612     5.750601e+02 -4.484998e+01
-6 10612     -3.075600e+02 6.793100e+02
-8 10612     -3.990002e+01 2.856900e+02
-9 10612     -2.788800e+02 3.892100e+02
-11 10612     2.955500e+02 -1.742400e+02
-14 10612     4.764000e+02 -1.306000e+02
-1 10613     7.991700e+02 5.668900e+02
-2 10613     -3.369995e+00 4.038000e+02
-5 10613     7.447200e+02 -1.650024e+00
-6 10613     -1.319900e+02 7.560800e+02
-9 10613     -1.596300e+02 4.255100e+02
-11 10613     4.465400e+02 -1.338700e+02
-13 10613     4.589000e+02 3.033100e+02
-14 10613     6.401400e+02 -8.487000e+01
-1 10614     5.982600e+02 5.668000e+02
-2 10614     -1.380000e+02 3.681200e+02
-4 10614     6.190002e+01 -4.816700e+02
-5 10614     5.832300e+02 -4.369000e+01
-6 10614     -2.988600e+02 6.823000e+02
-8 10614     -3.379999e+01 2.869900e+02
-14 10614     4.845800e+02 -1.290400e+02
-1 10615     6.192300e+02 5.662400e+02
-4 10615     6.287000e+01 -4.935300e+02
-6 10615     -2.806500e+02 6.898400e+02
-11 10615     3.184100e+02 -1.696500e+02
-14 10615     5.014100e+02 -1.243800e+02
-1 10616     6.115500e+02 5.655500e+02
-2 10616     -1.283600e+02 3.697300e+02
-3 10616     -2.658500e+02 3.441998e+01
-9 10616     -2.646800e+02 3.917200e+02
-14 10616     4.950300e+02 -1.271500e+02
-1 10617     6.768000e+02 5.634600e+02
-13 10617     3.821300e+02 2.763400e+02
-1 10618     6.214600e+02 5.611000e+02
-2 10618     -1.199500e+02 3.669400e+02
-3 10618     -2.579300e+02 3.238000e+01
-8 10618     -1.894000e+01 2.864400e+02
-9 10618     -2.569500e+02 3.894100e+02
-14 10618     5.045500e+02 -1.285700e+02
-1 10619     6.214600e+02 5.611000e+02
-6 10619     -2.764800e+02 6.849800e+02
-8 10619     -1.894000e+01 2.864400e+02
-14 10619     5.045500e+02 -1.285700e+02
-1 10620     6.397800e+02 5.536100e+02
-8 10620     -6.239990e+00 2.836100e+02
-14 10620     5.217000e+02 -1.307900e+02
-1 10621     6.741500e+02 5.459900e+02
-4 10621     5.558002e+01 -5.270400e+02
-5 10621     6.500800e+02 -4.603003e+01
-6 10621     -2.259200e+02 6.910300e+02
-14 10621     5.503400e+02 -1.291000e+02
-1 10622     6.741500e+02 5.459900e+02
-11 10622     3.645500e+02 -1.733800e+02
-13 10622     3.842600e+02 2.639000e+02
-14 10622     5.503400e+02 -1.291000e+02
-1 10623     6.608000e+02 5.386500e+02
-4 10623     5.065997e+01 -5.207100e+02
-11 10623     3.569301e+02 -1.809000e+02
-1 10624     -1.114400e+02 5.370000e+02
-10 10624     -7.069000e+02 5.934600e+02
-1 10625     8.592600e+02 5.363000e+02
-13 10625     5.028101e+02 2.938100e+02
-14 10625     6.943400e+02 -9.746002e+01
-1 10626     -6.927002e+01 5.319600e+02
-2 10626     -7.133800e+02 1.617700e+02
-5 10626     -1.919000e+01 -2.340700e+02
-8 10626     -5.041000e+02 1.128700e+02
-10 10626     -6.528500e+02 6.028000e+02
-11 10626     -2.292600e+02 -3.377200e+02
-12 10626     -7.743800e+02 3.483700e+02
-1 10627     -4.085999e+01 5.282500e+02
-2 10627     -6.841400e+02 1.646100e+02
-5 10627     8.659973e+00 -2.313500e+02
-7 10627     -6.169500e+02 4.430100e+02
-8 10627     -4.806300e+02 1.153600e+02
-10 10627     -6.180800e+02 6.088800e+02
-11 10627     -2.035500e+02 -3.349500e+02
-12 10627     -7.420000e+02 3.554700e+02
-1 10628     1.985800e+02 5.273600e+02
-5 10628     2.391200e+02 -1.751200e+02
-7 10628     -3.899600e+02 5.264900e+02
-8 10628     -2.902800e+02 1.744000e+02
-12 10628     -4.849100e+02 4.573000e+02
-1 10629     3.070400e+02 5.267700e+02
-2 10629     -3.528500e+02 2.605600e+02
-3 10629     -4.815900e+02 -7.100000e+01
-4 10629     1.959003e+01 -3.202100e+02
-5 10629     3.392100e+02 -1.492600e+02
-6 10629     -5.543500e+02 5.090500e+02
-7 10629     -2.927100e+02 5.615800e+02
-8 10629     -2.115000e+02 1.975800e+02
-11 10629     8.715002e+01 -2.652200e+02
-12 10629     -3.772800e+02 5.010600e+02
-1 10630     -9.402002e+01 5.240400e+02
-5 10630     -4.396997e+01 -2.480600e+02
-14 10630     -1.263500e+02 -3.418800e+02
-1 10631     6.518000e+02 5.165700e+02
-2 10631     -8.397998e+01 3.322500e+02
-6 10631     -2.298100e+02 6.514000e+02
-8 10631     1.139001e+01 2.589600e+02
-12 10631     -6.479999e+01 6.134200e+02
-13 10631     3.765400e+02 2.377000e+02
-14 10631     5.415200e+02 -1.604900e+02
-1 10632     8.323999e+01 5.109100e+02
-2 10632     -5.540800e+02 1.806700e+02
-8 10632     -3.751700e+02 1.306300e+02
-11 10632     -9.414001e+01 -3.244100e+02
-12 10632     -5.982000e+02 3.897400e+02
-14 10632     4.729999e+01 -3.101100e+02
-1 10633     1.574700e+02 5.101300e+02
-5 10633     2.028300e+02 -2.024000e+02
-11 10633     -3.226001e+01 -3.100300e+02
-12 10633     -5.200100e+02 4.207900e+02
-1 10634     8.507800e+02 5.061200e+02
-2 10634     4.750000e+01 3.603400e+02
-5 10634     8.029000e+02 -4.303003e+01
-6 10634     -6.681000e+01 7.140100e+02
-8 10634     1.203100e+02 2.843100e+02
-9 10634     -1.149400e+02 3.886400e+02
-11 10634     5.018199e+02 -1.663700e+02
-13 10634     5.046300e+02 2.715900e+02
-14 10634     6.977100e+02 -1.238200e+02
-1 10635     8.442500e+02 5.028800e+02
-2 10635     4.419000e+01 3.563800e+02
-3 10635     -1.029600e+02 2.116998e+01
-5 10635     7.985400e+02 -4.725000e+01
-6 10635     -7.070001e+01 7.079900e+02
-8 10635     1.178000e+02 2.809100e+02
-9 10635     -1.174600e+02 3.850400e+02
-11 10635     4.985699e+02 -1.697100e+02
-13 10635     5.013800e+02 2.681100e+02
-14 10635     6.938199e+02 -1.279900e+02
-1 10636     -3.221997e+01 4.988800e+02
-7 10636     -5.969900e+02 4.163200e+02
-13 10636     -1.135500e+02 6.241998e+01
-1 10637     7.834003e+01 4.989600e+02
-2 10637     -5.550400e+02 1.650200e+02
-4 10637     -9.619995e+00 -1.951100e+02
-5 10637     1.292100e+02 -2.332300e+02
-7 10637     -4.906300e+02 4.567900e+02
-8 10637     -3.756900e+02 1.185100e+02
-11 10637     -9.678003e+01 -3.358000e+02
-12 10637     -5.975000e+02 3.739800e+02
-13 10637     -2.765002e+01 8.964999e+01
-14 10637     4.466998e+01 -3.236300e+02
-1 10638     8.546500e+02 4.949400e+02
-6 10638     -6.023999e+01 7.040600e+02
-9 10638     -1.099700e+02 3.809300e+02
-1 10639     7.748300e+02 4.921100e+02
-5 10639     7.462200e+02 -7.103003e+01
-9 10639     -1.510700e+02 3.645500e+02
-1 10640     -1.019400e+02 4.885800e+02
-7 10640     -6.620000e+02 3.805600e+02
-11 10640     -2.519600e+02 -3.812900e+02
-1 10641     -4.519000e+01 4.879400e+02
-7 10641     -6.035400e+02 4.018100e+02
-1 10642     4.862000e+02 4.860300e+02
-4 10642     9.559998e+00 -4.233800e+02
-5 10642     5.052400e+02 -1.449300e+02
-7 10642     -1.277900e+02 5.810200e+02
-1 10643     3.382700e+02 4.841300e+02
-7 10643     -2.518500e+02 5.318700e+02
-1 10644     5.021002e+01 4.801500e+02
-12 10644     -6.199400e+02 3.435500e+02
-1 10645     -1.369500e+02 4.770900e+02
-7 10645     -6.914500e+02 3.559200e+02
-15 10645     -7.306900e+02 5.519300e+02
-1 10646     1.005900e+02 4.594600e+02
-5 10646     1.567600e+02 -2.684600e+02
-8 10646     -3.478900e+02 8.757999e+01
-11 10646     -7.045001e+01 -3.648800e+02
-14 10646     7.290002e+01 -3.581600e+02
-1 10647     3.001001e+01 4.466300e+02
-2 10647     -5.897300e+02 8.600000e+01
-4 10647     -4.169000e+01 -1.689400e+02
-5 10647     8.785999e+01 -3.003000e+02
-7 10647     -5.173000e+02 3.871700e+02
-11 10647     -1.293700e+02 -3.908200e+02
-13 10647     -5.657001e+01 3.420001e+01
-1 10648     -2.315997e+01 4.401000e+02
-5 10648     3.745001e+01 -3.197200e+02
-8 10648     -4.450100e+02 3.434000e+01
-12 10648     -6.821500e+02 2.582400e+02
-13 10648     -9.617999e+01 1.575000e+01
-14 10648     -4.310999e+01 -4.122700e+02
-15 10648     -5.602900e+02 5.549700e+02
-1 10649     7.670400e+02 4.300000e+02
-5 10649     7.580800e+02 -1.290000e+02
-6 10649     -1.008100e+02 6.060200e+02
-9 10649     -1.360800e+02 3.141200e+02
-11 10649     4.685500e+02 -2.382100e+02
-13 10649     4.695601e+02 2.008600e+02
-1 10650     4.643600e+02 4.292900e+02
-2 10650     -1.983200e+02 1.985600e+02
-7 10650     -1.270100e+02 5.219300e+02
-13 10650     2.665900e+02 1.290500e+02
-1 10651     4.734998e+01 4.262600e+02
-2 10651     -5.665200e+02 6.626001e+01
-7 10651     -4.933100e+02 3.732900e+02
-13 10651     -3.956000e+01 2.121997e+01
-1 10652     8.657900e+02 4.224700e+02
-6 10652     -2.577002e+01 6.362800e+02
-1 10653     2.481700e+02 4.213000e+02
-5 10653     3.022900e+02 -2.704800e+02
-6 10653     -5.698500e+02 3.525400e+02
-9 10653     -4.662400e+02 1.696700e+02
-10 10653     -2.504400e+02 5.927500e+02
-12 10653     -3.917800e+02 3.599800e+02
-1 10654     2.321300e+02 4.199400e+02
-7 10654     -3.222700e+02 4.351400e+02
-9 10654     -4.772600e+02 1.654900e+02
-1 10655     2.321300e+02 4.199400e+02
-2 10655     -3.899300e+02 1.181500e+02
-8 10655     -2.404800e+02 8.479001e+01
-1 10656     3.599200e+02 4.183000e+02
-6 10656     -4.566700e+02 4.067300e+02
-9 10656     -3.837700e+02 2.017400e+02
-1 10657     3.639600e+02 4.158200e+02
-7 10657     -2.063700e+02 4.763400e+02
-9 10657     -3.804400e+02 1.985800e+02
-14 10657     3.224900e+02 -3.309900e+02
-1 10658     7.696600e+02 4.153000e+02
-13 10658     4.750800e+02 1.899800e+02
-1 10659     3.151600e+02 4.129800e+02
-7 10659     -2.478500e+02 4.580300e+02
-1 10660     2.387200e+02 4.062700e+02
-2 10660     -3.799300e+02 1.055800e+02
-5 10660     2.961801e+02 -2.888700e+02
-6 10660     -5.717600e+02 3.296600e+02
-7 10660     -3.116400e+02 4.237500e+02
-9 10660     -4.679200e+02 1.519300e+02
-14 10660     2.109000e+02 -3.754700e+02
-1 10661     4.770800e+02 4.039200e+02
-4 10661     -3.812000e+01 -4.232200e+02
-6 10661     -3.411200e+02 4.474400e+02
-8 10661     -6.919000e+01 1.326800e+02
-1 10662     3.630900e+02 4.033600e+02
-2 10662     -2.716100e+02 1.414400e+02
-5 10662     4.120400e+02 -2.589100e+02
-6 10662     -4.467600e+02 3.906500e+02
-7 10662     -2.027300e+02 4.647300e+02
-1 10663     5.008900e+02 4.020800e+02
-7 10663     -8.742999e+01 5.096100e+02
-11 10663     2.737900e+02 -3.213500e+02
-12 10663     -1.476000e+02 4.449100e+02
-14 10663     4.467000e+02 -3.047100e+02
-1 10664     2.266200e+02 4.000300e+02
-7 10664     -3.199500e+02 4.138400e+02
-9 10664     -4.756300e+02 1.417400e+02
-1 10665     7.938600e+02 3.994700e+02
-13 10665     4.939900e+02 1.846300e+02
-14 10665     6.886500e+02 -2.292400e+02
-1 10666     5.987800e+02 3.963300e+02
-5 10666     6.235200e+02 -2.032300e+02
-7 10666     -8.179993e+00 5.349800e+02
-13 10666     3.658700e+02 1.363400e+02
-14 10666     5.303800e+02 -2.841100e+02
-1 10667     -6.451100e+02 3.935700e+02
-4 10667     -1.046700e+02 2.193800e+02
-1 10668     7.557100e+02 3.895600e+02
-2 10668     2.456000e+01 2.349900e+02
-6 10668     -9.210999e+01 5.605300e+02
-7 10668     1.166200e+02 5.779400e+02
-9 10668     -1.287900e+02 2.799600e+02
-12 10668     6.921997e+01 5.259300e+02
-13 10668     4.729500e+02 1.693500e+02
-1 10669     7.795500e+02 3.896100e+02
-6 10669     -7.390997e+01 5.692900e+02
-13 10669     4.871300e+02 1.745200e+02
-14 10669     6.802800e+02 -2.415200e+02
-1 10670     6.447000e+02 3.864400e+02
-2 10670     -5.107001e+01 2.063200e+02
-4 10670     -3.559003e+01 -5.262400e+02
-5 10670     6.661600e+02 -2.003500e+02
-6 10670     -1.841700e+02 5.098000e+02
-9 10670     -1.926900e+02 2.508400e+02
-12 10670     -1.925000e+01 4.852000e+02
-14 10670     5.718400e+02 -2.781900e+02
-1 10671     2.314301e+02 3.864600e+02
-2 10671     -3.800400e+02 8.095001e+01
-5 10671     2.931200e+02 -3.109400e+02
-6 10671     -5.709000e+02 3.012700e+02
-7 10671     -3.104700e+02 4.033900e+02
-8 10671     -2.328400e+02 5.467001e+01
-9 10671     -4.673700e+02 1.296200e+02
-10 10671     -2.557800e+02 5.461300e+02
-11 10671     5.584003e+01 -3.990600e+02
-14 10671     2.089200e+02 -3.970000e+02
-1 10672     6.390699e+02 3.832900e+02
-5 10672     6.619700e+02 -2.057800e+02
-6 10672     -1.877700e+02 5.018300e+02
-7 10672     2.753998e+01 5.368300e+02
-9 10672     -1.948600e+02 2.454900e+02
-11 10672     3.870900e+02 -3.036900e+02
-12 10672     -2.271002e+01 4.777500e+02
-13 10672     3.960200e+02 1.368600e+02
-14 10672     5.681801e+02 -2.847800e+02
-1 10673     4.833900e+02 3.818500e+02
-2 10673     -1.685600e+02 1.539100e+02
-5 10673     5.263700e+02 -2.478800e+02
-7 10673     -9.501001e+01 4.855000e+02
-9 10673     -2.895900e+02 2.019100e+02
-14 10673     4.365699e+02 -3.300900e+02
-1 10674     6.250601e+02 3.806600e+02
-7 10674     1.741998e+01 5.294000e+02
-8 10674     2.769000e+01 1.486600e+02
-11 10674     3.768600e+02 -3.091800e+02
-13 10674     3.869800e+02 1.311800e+02
-14 10674     5.569900e+02 -2.913300e+02
-1 10675     6.419800e+02 3.795600e+02
-2 10675     -5.092999e+01 1.971900e+02
-1 10676     6.714200e+02 3.777500e+02
-7 10676     5.421997e+01 5.411600e+02
-14 10676     5.962900e+02 -2.814000e+02
-1 10677     4.817900e+02 3.755100e+02
-2 10677     -1.686200e+02 1.463200e+02
-3 10677     -3.056400e+02 -1.846700e+02
-5 10677     5.251600e+02 -2.550900e+02
-7 10677     -9.491998e+01 4.790800e+02
-8 10677     -5.889001e+01 1.102500e+02
-9 10677     -2.895500e+02 1.953200e+02
-11 10677     2.654100e+02 -3.480900e+02
-13 10677     2.896600e+02 9.151999e+01
-14 10677     4.359200e+02 -3.369800e+02
-1 10678     5.127500e+02 3.740500e+02
-7 10678     -6.920001e+01 4.879600e+02
-9 10678     -2.690600e+02 2.032600e+02
-13 10678     3.115699e+02 9.887000e+01
-1 10679     4.775601e+02 3.692200e+02
-2 10679     -1.695600e+02 1.387800e+02
-3 10679     -3.073200e+02 -1.927600e+02
-7 10679     -9.635999e+01 4.721300e+02
-9 10679     -2.905200e+02 1.887200e+02
-13 10679     2.878600e+02 8.554999e+01
-14 10679     4.338600e+02 -3.442000e+02
-1 10680     4.775601e+02 3.692200e+02
-7 10680     -9.635999e+01 4.721300e+02
-14 10680     4.338600e+02 -3.442000e+02
-1 10681     5.174000e+02 3.674200e+02
-2 10681     -1.383800e+02 1.487300e+02
-7 10681     -6.340002e+01 4.834200e+02
-9 10681     -2.643800e+02 1.982600e+02
-13 10681     3.163101e+02 9.432001e+01
-14 10681     4.692000e+02 -3.345900e+02
-1 10682     4.714100e+02 3.352600e+02
-13 10682     2.987800e+02 5.860999e+01
-14 10682     4.475601e+02 -3.786300e+02
-1 10683     -6.327002e+01 3.250300e+02
-13 10683     -9.833002e+01 -9.229999e+01
-14 10683     -5.434998e+01 -5.498600e+02
-15 10683     -5.517200e+02 3.831300e+02
-1 10684     -1.420500e+02 3.227500e+02
-7 10684     -6.289000e+02 1.978100e+02
-10 10684     -6.415700e+02 3.262800e+02
-14 10684     -1.343600e+02 -5.766600e+02
-1 10685     -1.452000e+02 3.192400e+02
-7 10685     -6.302500e+02 1.935700e+02
-13 10685     -1.618600e+02 -1.198700e+02
-1 10686     8.638700e+02 3.184400e+02
-2 10686     2.586300e+02 3.122400e+02
-7 10686     2.698900e+02 5.708200e+02
-9 10686     7.514001e+01 3.544800e+02
-12 10686     2.744301e+02 5.572000e+02
-14 10686     8.729600e+02 -2.709800e+02
-1 10687     6.882700e+02 3.100500e+02
-13 10687     4.595601e+02 9.531000e+01
-14 10687     6.486600e+02 -3.389100e+02
-1 10688     5.127300e+02 3.005700e+02
-5 10688     5.968800e+02 -3.193100e+02
-6 10688     -2.284800e+02 3.605900e+02
-7 10688     -3.328003e+01 4.276300e+02
-10 10688     7.626001e+01 5.607400e+02
-11 10688     3.152000e+02 -4.024500e+02
-13 10688     3.460000e+02 4.420001e+01
-14 10688     5.073300e+02 -3.989200e+02
-1 10689     4.669200e+02 2.985500e+02
-6 10689     -2.655900e+02 3.353400e+02
-11 10689     2.782300e+02 -4.159500e+02
-14 10689     4.692200e+02 -4.150200e+02
-1 10690     5.541700e+02 2.978600e+02
-2 10690     -5.248999e+01 1.163900e+02
-6 10690     -1.891400e+02 3.793800e+02
-9 10690     -1.871600e+02 1.740000e+02
-13 10690     3.764600e+02 5.282001e+01
-14 10690     5.458400e+02 -3.891300e+02
-1 10691     4.662900e+02 2.937900e+02
-6 10691     -2.614600e+02 3.309400e+02
-11 10691     2.792200e+02 -4.203000e+02
-1 10692     -2.904300e+02 2.840600e+02
-7 10692     -7.569700e+02 9.706000e+01
-1 10693     4.229000e+02 2.672800e+02
-6 10693     -2.724000e+02 2.838000e+02
-11 10693     2.527900e+02 -4.543200e+02
-13 10693     3.012600e+02 -3.710022e+00
-15 10693     9.115997e+01 5.445600e+02
-1 10694     -3.545000e+02 2.600800e+02
-13 10694     -3.098600e+02 -2.292300e+02
-1 10695     -3.545000e+02 2.600800e+02
-7 10695     -8.110500e+02 4.451001e+01
-13 10695     -3.098600e+02 -2.292300e+02
-1 10696     -2.025500e+02 2.569700e+02
-4 10696     -1.620000e+02 -5.831000e+01
-7 10696     -6.474000e+02 1.123800e+02
-10 10696     -6.732600e+02 2.258500e+02
-1 10697     4.207100e+02 2.563000e+02
-11 10697     2.540900e+02 -4.644200e+02
-12 10697     -1.199700e+02 2.836800e+02
-15 10697     9.525000e+01 5.298100e+02
-1 10698     4.207100e+02 2.563000e+02
-6 10698     -2.627000e+02 2.726700e+02
-11 10698     2.540900e+02 -4.644200e+02
-12 10698     -1.199700e+02 2.836800e+02
-15 10698     9.525000e+01 5.298100e+02
-1 10699     4.266300e+02 2.542600e+02
-5 10699     5.510500e+02 -3.894000e+02
-6 10699     -2.561400e+02 2.736000e+02
-10 10699     1.176001e+01 4.789400e+02
-11 10699     2.600699e+02 -4.646700e+02
-14 10699     4.637600e+02 -4.699200e+02
-1 10700     4.087600e+02 2.495000e+02
-6 10700     -2.655100e+02 2.605900e+02
-11 10700     2.473600e+02 -4.739600e+02
-12 10700     -1.253400e+02 2.726300e+02
-15 10700     8.565997e+01 5.153000e+02
-1 10701     4.183000e+02 2.451200e+02
-6 10701     -2.536900e+02 2.611600e+02
-12 10701     -1.139800e+02 2.734200e+02
-1 10702     4.426899e+02 2.436000e+02
-6 10702     -2.298500e+02 2.731400e+02
-11 10702     2.771000e+02 -4.699600e+02
-1 10703     3.491300e+02 2.386400e+02
-10 10703     -5.917999e+01 4.321800e+02
-11 10703     1.993500e+02 -4.987100e+02
-1 10704     3.763700e+02 2.334600e+02
-4 10704     -1.423100e+02 -4.040300e+02
-5 10704     5.195699e+02 -4.247900e+02
-6 10704     -2.767000e+02 2.269600e+02
-11 10704     2.249000e+02 -4.966200e+02
-1 10705     -3.399600e+02 2.325100e+02
-7 10705     -7.751000e+02 2.744000e+01
-1 10706     8.579700e+02 2.316200e+02
-3 10706     1.573900e+02 -7.915997e+01
-7 10706     2.981899e+02 4.994400e+02
-9 10706     1.106800e+02 2.995800e+02
-1 10707     3.489399e+02 2.293100e+02
-7 10707     -1.268100e+02 3.113500e+02
-10 10707     -5.522998e+01 4.213600e+02
-11 10707     2.021700e+02 -5.081000e+02
-13 10707     2.691000e+02 -5.284998e+01
-14 10707     4.108600e+02 -5.206899e+02
-1 10708     -5.017900e+02 2.182600e+02
-13 10708     -4.208600e+02 -3.098100e+02
-1 10709     -1.658200e+02 2.182600e+02
-15 10709     -6.181500e+02 1.941400e+02
-1 10710     3.806000e+02 2.164700e+02
-6 10710     -2.567100e+02 2.145600e+02
-7 10710     -9.273999e+01 3.130200e+02
-10 10710     -1.470001e+01 4.215600e+02
-13 10710     2.994399e+02 -5.265997e+01
-14 10710     4.502100e+02 -5.215300e+02
-1 10711     3.806000e+02 2.164700e+02
-4 10711     -1.514300e+02 -4.114600e+02
-5 10711     5.358199e+02 -4.403400e+02
-6 10711     -2.567100e+02 2.145600e+02
-7 10711     -9.273999e+01 3.130200e+02
-1 10712     3.867500e+02 2.133400e+02
-5 10712     5.426600e+02 -4.420601e+02
-6 10712     -2.483200e+02 2.147600e+02
-13 10712     3.059500e+02 -5.319000e+01
-14 10712     4.576300e+02 -5.228199e+02
-1 10713     2.137100e+02 2.106200e+02
-7 10713     -2.300500e+02 2.452200e+02
-1 10714     4.346300e+02 2.054900e+02
-6 10714     -1.981800e+02 2.337500e+02
-1 10715     1.372300e+02 2.031800e+02
-6 10715     -4.720000e+02 6.309003e+01
-1 10716     -3.794400e+02 2.022400e+02
-13 10716     -2.977800e+02 -2.854100e+02
-1 10717     5.653900e+02 1.871000e+02
-5 10717     7.220000e+02 -4.154900e+02
-6 10717     -7.079999e+01 2.846100e+02
-10 10717     1.831900e+02 4.615900e+02
-13 10717     4.421500e+02 -2.395001e+01
-14 10717     6.318600e+02 -4.912900e+02
-1 10718     4.488900e+02 1.855200e+02
-10 10718     6.833002e+01 4.142600e+02
-1 10719     -2.919000e+01 1.740100e+02
-2 10719     -4.244700e+02 -1.756200e+02
-4 10719     -2.012800e+02 -1.758600e+02
-5 10719     1.638500e+02 -6.094399e+02
-7 10719     -4.269100e+02 1.149900e+02
-13 10719     1.439001e+01 -2.014100e+02
-15 10719     -4.112600e+02 2.075600e+02
-1 10720     2.929000e+02 1.702900e+02
-7 10720     -5.219000e+01 2.831500e+02
-10 10720     -2.777002e+01 3.443100e+02
-14 10720     5.716300e+02 -5.641000e+02
-15 10720     4.357001e+01 3.761100e+02
-1 10721     2.929000e+02 1.702900e+02
-7 10721     -5.219000e+01 2.831500e+02
-15 10721     4.357001e+01 3.761100e+02
-1 10722     8.120699e+02 1.540800e+02
-6 10722     2.000400e+02 3.917500e+02
-7 10722     2.893800e+02 4.200200e+02
-8 10722     3.085900e+02 1.112800e+02
-13 10722     6.537000e+02 2.463000e+01
-1 10723     3.200012e+00 1.478500e+02
-7 10723     -3.804700e+02 1.059300e+02
-15 10723     -3.529800e+02 1.908700e+02
-1 10724     3.200012e+00 1.478500e+02
-7 10724     -3.804700e+02 1.059300e+02
-15 10724     -3.529800e+02 1.908700e+02
-1 10725     2.387300e+02 1.473800e+02
-15 10725     -5.599976e+00 3.220100e+02
-1 10726     -5.062000e+01 1.396000e+02
-7 10726     -4.249000e+02 7.579999e+01
-1 10727     6.632001e+01 1.391500e+02
-4 10727     -2.103900e+02 -2.880500e+02
-10 10727     -2.717300e+02 2.152000e+02
-13 10727     1.927200e+02 -1.804500e+02
-1 10728     6.632001e+01 1.391500e+02
-4 10728     -2.103900e+02 -2.880500e+02
-5 10728     4.006300e+02 -5.980900e+02
-10 10728     -2.717300e+02 2.152000e+02
-12 10728     -2.681900e+02 7.632001e+01
-13 10728     1.927200e+02 -1.804500e+02
-1 10729     2.369800e+02 1.383500e+02
-7 10729     -7.498999e+01 2.389000e+02
-1 10730     2.437200e+02 1.312500e+02
-15 10730     1.107001e+01 3.052800e+02
-1 10731     6.439399e+02 1.197800e+02
-7 10731     1.647900e+02 3.294400e+02
-1 10732     1.233400e+02 1.069100e+02
-15 10732     -1.330000e+02 2.128300e+02
-1 10733     1.233400e+02 1.069100e+02
-15 10733     -1.330000e+02 2.128300e+02
-1 10734     1.737800e+02 1.011300e+02
-4 10734     -2.231100e+02 -4.015300e+02
-1 10735     -1.995100e+02 9.213000e+01
-15 10735     -5.794600e+02 1.496997e+01
-1 10736     6.358199e+02 8.951999e+01
-7 10736     1.747400e+02 3.039000e+02
-15 10736     4.419000e+02 4.307000e+02
-1 10737     6.727200e+02 8.254999e+01
-10 10737     3.374301e+02 3.955300e+02
-1 10738     1.828900e+02 7.954001e+01
-6 10738     -5.526001e+01 7.728998e+01
-7 10738     -9.151001e+01 1.664900e+02
-8 10738     1.345700e+02 1.326001e+01
-13 10738     3.681300e+02 -1.764200e+02
-1 10739     8.749200e+02 6.652002e+01
-7 10739     4.005000e+02 3.861100e+02
-8 10739     4.367100e+02 1.261200e+02
-9 10739     2.528000e+02 2.546600e+02
-12 10739     4.594200e+02 3.778800e+02
-15 10739     7.518300e+02 5.211900e+02
-1 10740     2.282000e+02 6.212000e+01
-3 10740     9.159998e+01 -2.266400e+02
-4 10740     -2.448300e+02 -4.561600e+02
-8 10740     1.841000e+02 2.445001e+01
-9 10740     4.257001e+01 1.636800e+02
-1 10741     -4.172600e+02 6.152002e+01
-15 10741     -8.578700e+02 -1.459600e+02
-1 10742     9.133002e+01 5.514001e+01
-15 10742     -1.464900e+02 1.310700e+02
-1 10743     5.973600e+02 5.398999e+01
-10 10743     2.790800e+02 3.367200e+02
-1 10744     3.299700e+02 5.140997e+01
-15 10744     1.631000e+02 2.511200e+02
-1 10745     1.917800e+02 4.444000e+01
-7 10745     -6.392999e+01 1.409000e+02
-10 10745     -6.707001e+01 1.707900e+02
-1 10746     4.631400e+02 4.326001e+01
-15 10746     3.204301e+02 3.052600e+02
-1 10747     4.631400e+02 4.326001e+01
-10 10747     2.073199e+02 2.801500e+02
-15 10747     3.204301e+02 3.052600e+02
-1 10748     -7.070007e+00 4.128998e+01
-4 10748     -2.770900e+02 -2.743200e+02
-6 10748     -2.634600e+02 -1.039900e+02
-8 10748     -3.272998e+01 -1.264700e+02
-10 10748     -2.924800e+02 7.906000e+01
-15 10748     -2.637700e+02 6.210999e+01
-1 10749     5.619000e+01 4.179999e+01
-7 10749     -2.027300e+02 7.003998e+01
-1 10750     1.528998e+01 2.850000e+01
-15 10750     -2.295700e+02 5.760999e+01
-1 10751     1.227300e+02 2.338000e+01
-2 10751     9.865997e+01 -1.634003e+01
-3 10751     1.254999e+01 -3.269300e+02
-4 10751     -2.788600e+02 -3.799500e+02
-6 10751     -8.379001e+01 -1.896002e+01
-7 10751     -1.237500e+02 8.851999e+01
-13 10751     3.350900e+02 -2.405000e+02
-1 10752     -1.881300e+02 2.325000e+01
-7 10752     -4.836100e+02 -8.850000e+01
-15 10752     -5.210600e+02 -6.609998e+01
-1 10753     8.567400e+02 -1.130005e+00
-9 10753     2.686500e+02 2.032100e+02
-15 10753     7.610500e+02 4.313400e+02
-1 10754     4.945000e+02 -1.160999e+01
-15 10754     3.840699e+02 2.542900e+02
-1 10755     -1.714800e+02 -1.765997e+01
-8 10755     -2.476400e+02 -3.396500e+02
-9 10755     -3.931700e+02 -2.610400e+02
-1 10756     3.974700e+02 -1.721002e+01
-10 10756     1.741700e+02 1.911200e+02
-1 10757     -1.771000e+02 -2.265002e+01
-2 10757     -3.518700e+02 -3.918500e+02
-6 10757     -5.291700e+02 -3.612400e+02
-7 10757     -4.427800e+02 -1.242800e+02
-8 10757     -2.461300e+02 -3.441600e+02
-9 10757     -3.921800e+02 -2.667100e+02
-13 10757     9.989990e+00 -4.069800e+02
-1 10758     8.517700e+02 -2.603998e+01
-7 10758     4.156600e+02 3.028600e+02
-1 10759     4.890500e+02 -2.740002e+01
-10 10759     2.619900e+02 2.182200e+02
-15 10759     3.863600e+02 2.330300e+02
-1 10760     2.477100e+02 -3.284003e+01
-4 10760     -3.095200e+02 -4.952400e+02
-1 10761     1.846300e+02 -3.515997e+01
-4 10761     -3.152300e+02 -4.433300e+02
-6 10761     3.402002e+01 -2.602002e+01
-8 10761     2.040000e+02 -6.200000e+01
-9 10761     7.294000e+01 7.867999e+01
-10 10761     -3.803003e+01 8.446002e+01
-12 10761     4.465002e+01 2.559998e+01
-15 10761     2.877002e+01 7.073999e+01
-1 10762     8.647800e+02 -4.046002e+01
-3 10762     3.683400e+02 -2.128000e+02
-6 10762     4.196300e+02 2.710000e+02
-8 10762     4.737700e+02 5.420999e+01
-12 10762     5.044100e+02 2.803800e+02
-1 10763     8.919983e+00 -4.570001e+01
-2 10763     3.521002e+01 -1.463400e+02
-3 10763     -4.039001e+01 -4.543199e+02
-8 10763     5.410999e+01 -1.658900e+02
-10 10763     -2.295600e+02 -5.880005e+00
-12 10763     -1.477000e+02 -1.072700e+02
-15 10763     -1.917100e+02 -3.646997e+01
-1 10764     3.645100e+02 -4.977002e+01
-6 10764     2.012100e+02 6.987000e+01
-10 10764     1.551000e+02 1.459600e+02
-12 10764     2.267900e+02 1.156900e+02
-1 10765     3.645100e+02 -4.977002e+01
-10 10765     1.551000e+02 1.459600e+02
-1 10766     1.947600e+02 -5.108002e+01
-8 10766     2.210600e+02 -6.935999e+01
-1 10767     4.712900e+02 -5.198999e+01
-15 10767     3.790400e+02 1.944600e+02
-1 10768     1.970100e+02 -6.648999e+01
-6 10768     6.715002e+01 -4.812000e+01
-9 10768     9.927002e+01 6.281000e+01
-1 10769     7.788000e+01 -7.491998e+01
-4 10769     -3.517700e+02 -3.687100e+02
-6 10769     -5.276001e+01 -1.425200e+02
-7 10769     -1.161200e+02 -1.907001e+01
-9 10769     9.409973e+00 -1.494000e+01
-10 10769     -1.389400e+02 -5.750000e+00
-12 10769     -4.769000e+01 -8.901001e+01
-13 10769     3.393900e+02 -3.339100e+02
-15 10769     -8.622998e+01 -3.540997e+01
-1 10770     2.103900e+02 -7.581000e+01
-2 10770     2.646500e+02 -3.876001e+01
-3 10770     1.732800e+02 -3.436000e+02
-6 10770     8.640997e+01 -4.745001e+01
-7 10770     8.969971e+00 4.446997e+01
-8 10770     2.445500e+02 -8.071002e+01
-10 10770     5.929993e+00 5.228003e+01
-13 10770     4.543800e+02 -2.867700e+02
-15 10770     8.296002e+01 3.492999e+01
-1 10771     3.730601e+02 -8.273999e+01
-2 10771     3.877300e+02 2.921997e+01
-7 10771     1.484200e+02 1.082200e+02
-8 10771     3.509600e+02 -2.378000e+01
-10 10771     1.760800e+02 1.160600e+02
-15 10771     2.828700e+02 1.109900e+02
-1 10772     3.730601e+02 -8.273999e+01
-2 10772     3.877300e+02 2.921997e+01
-6 10772     2.243800e+02 4.483002e+01
-1 10773     2.475000e+02 -8.985999e+01
-3 10773     2.113300e+02 -3.350600e+02
-4 10773     -3.513000e+02 -5.073700e+02
-6 10773     1.306300e+02 -3.733002e+01
-7 10773     4.882001e+01 4.900000e+01
-8 10773     2.793900e+02 -7.479999e+01
-1 10774     3.522600e+02 -9.470001e+01
-6 10774     2.171500e+02 2.058002e+01
-8 10774     3.449700e+02 -3.919000e+01
-1 10775     3.267100e+02 -1.057500e+02
-8 10775     3.355800e+02 -5.585999e+01
-1 10776     3.267100e+02 -1.057500e+02
-8 10776     3.355800e+02 -5.585999e+01
-1 10777     5.391000e+02 -1.208100e+02
-10 10777     3.434000e+02 1.427000e+02
-15 10777     4.858900e+02 1.440700e+02
-1 10778     2.850699e+02 -1.263400e+02
-7 10778     9.428998e+01 3.294000e+01
-8 10778     3.169300e+02 -8.954999e+01
-10 10778     1.051800e+02 3.200000e+01
-12 10778     1.994200e+02 -6.059998e+00
-13 10778     5.281300e+02 -3.030400e+02
-1 10779     -4.946500e+02 -1.297900e+02
-7 10779     -6.922300e+02 -3.898800e+02
-15 10779     -8.385800e+02 -4.423900e+02
-1 10780     1.731700e+02 -1.293900e+02
-15 10780     6.713000e+01 -5.000000e+01
-1 10781     8.289800e+02 -1.354100e+02
-7 10781     4.384399e+02 2.064000e+02
-10 10781     5.894399e+02 2.391500e+02
-1 10782     8.289800e+02 -1.354100e+02
-7 10782     4.384399e+02 2.064000e+02
-15 10782     7.912000e+02 2.591900e+02
-1 10783     7.757001e+01 -1.377100e+02
-3 10783     1.158900e+02 -4.696700e+02
-4 10783     -3.979800e+02 -3.874800e+02
-6 10783     6.599976e+00 -1.954600e+02
-7 10783     -8.032001e+01 -7.192999e+01
-8 10783     1.805800e+02 -1.880900e+02
-10 10783     -1.080500e+02 -7.207001e+01
-15 10783     -5.026001e+01 -1.121800e+02
-1 10784     4.854200e+02 -1.400400e+02
-7 10784     2.474500e+02 9.967001e+01
-10 10784     3.024500e+02 1.016200e+02
-15 10784     4.358900e+02 9.514001e+01
-1 10785     6.060800e+02 -1.410400e+02
-7 10785     3.238000e+02 1.393100e+02
-1 10786     1.866998e+01 -1.488800e+02
-2 10786     1.073200e+02 -2.551600e+02
-3 10786     3.403998e+01 -5.605800e+02
-4 10786     -4.123000e+02 -3.313200e+02
-6 10786     -7.697998e+01 -2.689000e+02
-8 10786     1.117800e+02 -2.549700e+02
-9 10786     -4.900024e+00 -1.223500e+02
-10 10786     -1.739600e+02 -1.124200e+02
-15 10786     -1.254000e+02 -1.605400e+02
-1 10787     2.225800e+02 -1.536400e+02
-7 10787     5.789001e+01 -1.627002e+01
-1 10788     -3.799200e+02 -1.575500e+02
-7 10788     -5.534900e+02 -3.493300e+02
-1 10789     2.556899e+02 -1.590400e+02
-7 10789     8.748999e+01 -6.719971e+00
-1 10790     8.241801e+02 -1.696300e+02
-6 10790     4.493900e+02 1.317200e+02
-8 10790     4.977000e+02 -5.128000e+01
-10 10790     5.975300e+02 2.033100e+02
-13 10790     8.172900e+02 -2.011000e+02
-1 10791     2.380005e+00 -1.723000e+02
-10 10791     -1.858400e+02 -1.457200e+02
-1 10792     -6.465900e+02 -1.911500e+02
-4 10792     -4.901300e+02 1.559700e+02
-1 10793     5.436300e+02 -1.957400e+02
-10 10793     3.792300e+02 6.921997e+01
-1 10794     1.590300e+02 -1.976900e+02
-15 10794     8.584003e+01 -1.409300e+02
-1 10795     -2.398900e+02 -1.972600e+02
-7 10795     -3.914700e+02 -3.089500e+02
-13 10795     6.008002e+01 -5.749200e+02
-1 10796     -2.189900e+02 -2.192300e+02
-6 10796     -3.354100e+02 -5.710500e+02
-9 10796     -2.086200e+02 -3.968600e+02
-15 10796     -4.064800e+02 -3.879000e+02
-1 10797     -6.329100e+02 -2.244800e+02
-4 10797     -5.154500e+02 1.426200e+02
-1 10798     4.619900e+02 -2.268300e+02
-12 10798     3.981801e+02 -1.215002e+01
-1 10799     -6.424200e+02 -2.348100e+02
-4 10799     -5.256000e+02 1.480300e+02
-1 10800     -3.874300e+02 -2.347100e+02
-7 10800     -5.088200e+02 -4.235400e+02
-15 10800     -6.198800e+02 -5.110400e+02
-1 10801     5.583002e+01 -2.371600e+02
-10 10801     -9.504999e+01 -1.873100e+02
-15 10801     -3.198999e+01 -2.495100e+02
-1 10802     -5.209003e+01 -2.427100e+02
-10 10802     -2.156700e+02 -2.467400e+02
-1 10803     8.420300e+02 -2.431600e+02
-2 10803     5.916600e+02 -7.088000e+01
-8 10803     5.435500e+02 -8.809998e+01
-10 10803     6.426899e+02 1.387700e+02
-12 10803     5.880500e+02 9.031000e+01
-1 10804     -6.305800e+02 -2.447200e+02
-4 10804     -5.329700e+02 1.380800e+02
-1 10805     5.279900e+02 -2.464700e+02
-10 10805     3.858800e+02 1.207001e+01
-15 10805     5.381500e+02 -1.071002e+01
-1 10806     8.328800e+02 -2.502000e+02
-15 10806     8.492000e+02 1.271000e+02
-1 10807     -6.209100e+02 -2.518100e+02
-4 10807     -5.385800e+02 1.302400e+02
-1 10808     4.345000e+02 -2.553300e+02
-10 10808     3.076300e+02 -3.570001e+01
-15 10808     4.420100e+02 -6.741998e+01
-1 10809     -2.084700e+02 -2.582300e+02
-15 10809     -3.676300e+02 -4.316000e+02
-1 10810     -3.881100e+02 -2.587200e+02
-7 10810     -4.940400e+02 -4.455601e+02
-10 10810     -5.910300e+02 -4.384100e+02
-15 10810     -6.059800e+02 -5.419500e+02
-1 10811     8.368199e+02 -2.592900e+02
-2 10811     5.962200e+02 -8.832001e+01
-7 10811     4.906400e+02 1.126800e+02
-8 10811     5.467300e+02 -1.026600e+02
-12 10811     5.925100e+02 7.242999e+01
-13 10811     8.631700e+02 -2.645900e+02
-15 10811     8.581000e+02 1.186900e+02
-1 10812     4.075500e+02 -2.649700e+02
-2 10812     5.223101e+02 -1.068500e+02
-3 10812     4.192700e+02 -4.022100e+02
-7 10812     2.537800e+02 -3.031000e+01
-13 10812     6.719399e+02 -3.711100e+02
-1 10813     3.874600e+02 -2.653700e+02
-7 10813     2.394200e+02 -3.913000e+01
-1 10814     3.476700e+02 -2.686600e+02
-7 10814     2.120699e+02 -5.759003e+01
-1 10815     8.408000e+02 -2.775400e+02
-2 10815     6.098199e+02 -9.856000e+01
-7 10815     5.007500e+02 1.002800e+02
-8 10815     5.579301e+02 -1.117100e+02
-9 10815     3.875400e+02 2.069000e+01
-10 10815     6.545200e+02 1.049100e+02
-12 10815     6.060400e+02 5.956000e+01
-13 10815     8.741200e+02 -2.766900e+02
-15 10815     8.713101e+02 9.964001e+01
-1 10816     8.481700e+02 -2.893900e+02
-2 10816     6.221200e+02 -1.019600e+02
-7 10816     5.110100e+02 9.422000e+01
-8 10816     5.679600e+02 -1.148100e+02
-9 10816     3.982300e+02 1.838000e+01
-10 10816     6.665400e+02 9.603003e+01
-12 10816     6.186500e+02 5.451001e+01
-1 10817     -6.864400e+02 -3.218400e+02
-4 10817     -6.049200e+02 1.693800e+02
-1 10818     -6.827400e+02 -3.252300e+02
-4 10818     -6.078600e+02 1.663600e+02
-1 10819     2.216300e+02 -3.251900e+02
-10 10819     1.193200e+02 -2.015900e+02
-13 10819     5.420900e+02 -4.914399e+02
-1 10820     5.178500e+02 -3.255800e+02
-7 10820     3.279800e+02 -5.021997e+01
-15 10820     5.529100e+02 -1.134600e+02
-1 10821     3.552300e+02 -3.343300e+02
-7 10821     2.292600e+02 -1.181700e+02
-1 10822     -7.038600e+02 -3.362500e+02
-4 10822     -6.191600e+02 1.811000e+02
-1 10823     -1.939500e+02 -3.406600e+02
-6 10823     -1.687500e+02 -6.539500e+02
-7 10823     -2.548200e+02 -4.085200e+02
-9 10823     -5.492999e+01 -4.413101e+02
-1 10824     -6.386400e+02 -3.452800e+02
-4 10824     -6.227100e+02 1.308600e+02
-1 10825     -1.458200e+02 -3.457000e+02
-2 10825     6.746002e+01 -6.067000e+02
-6 10825     -1.190900e+02 -6.184800e+02
-7 10825     -2.082700e+02 -3.871700e+02
-9 10825     -1.703998e+01 -4.152300e+02
-15 10825     -2.331900e+02 -5.036200e+02
-1 10826     3.079500e+02 -3.481400e+02
-15 10826     3.332500e+02 -2.471700e+02
-1 10827     7.988600e+02 -3.521600e+02
-7 10827     5.102400e+02 3.082001e+01
-10 10827     6.514600e+02 1.616998e+01
-12 10827     6.329100e+02 -1.329999e+01
-15 10827     8.672900e+02 -6.130005e+00
-1 10828     3.051700e+02 -3.681600e+02
-10 10828     2.167000e+02 -2.088000e+02
-15 10828     3.373700e+02 -2.735700e+02
-1 10829     3.094301e+02 -3.728400e+02
-15 10829     3.445000e+02 -2.767800e+02
-1 10830     9.628998e+01 -3.744200e+02
-7 10830     3.508002e+01 -2.775000e+02
-1 10831     -1.376700e+02 -3.783100e+02
-6 10831     -7.322998e+01 -6.377400e+02
-1 10832     -1.161100e+02 -3.912400e+02
-2 10832     1.488700e+02 -6.171500e+02
-7 10832     -1.519000e+02 -4.092000e+02
-9 10832     4.991998e+01 -4.192000e+02
-12 10832     -5.877002e+01 -5.802400e+02
-1 10833     -1.358400e+02 -3.920000e+02
-6 10833     -5.935999e+01 -6.483700e+02
-7 10833     -1.696700e+02 -4.217000e+02
-9 10833     3.944000e+01 -4.321800e+02
-1 10834     5.919500e+02 -3.925500e+02
-7 10834     3.977400e+02 -7.870001e+01
-10 10834     4.868400e+02 -1.094100e+02
-12 10834     5.308600e+02 -1.422200e+02
-13 10834     7.863300e+02 -4.371500e+02
-15 10834     6.654000e+02 -1.563800e+02
-1 10835     -6.426300e+02 -3.948500e+02
-4 10835     -6.695400e+02 1.270300e+02
-1 10836     -8.362000e+01 -4.153100e+02
-2 10836     2.013101e+02 -6.120200e+02
-7 10836     -1.101600e+02 -4.124400e+02
-9 10836     9.263000e+01 -4.117100e+02
-1 10837     -2.832300e+02 -4.536200e+02
-7 10837     -2.636000e+02 -5.571500e+02
-1 10838     8.555800e+02 -4.720601e+02
-2 10838     7.692700e+02 -1.888700e+02
-7 10838     6.009500e+02 -3.338000e+01
-1 10839     8.689301e+02 -4.987000e+02
-7 10839     6.202700e+02 -4.758002e+01
-1 10840     -2.874600e+02 -5.139200e+02
-4 10840     -7.592200e+02 -1.730700e+02
-1 10841     7.086801e+02 -5.237600e+02
-7 10841     5.379200e+02 -1.277500e+02
-15 10841     8.644200e+02 -2.470600e+02
-1 10842     7.759100e+02 -5.284100e+02
-7 10842     5.810800e+02 -1.036800e+02
-12 10842     7.467100e+02 -1.519600e+02
-1 10843     8.744500e+02 -5.377000e+02
-7 10843     6.409700e+02 -7.222998e+01
-1 10844     8.230800e+02 -5.429301e+02
-7 10844     6.149200e+02 -9.566998e+01
-1 10845     -2.859985e+00 -5.548400e+02
-7 10845     4.389001e+01 -4.836200e+02
-1 10846     6.988600e+02 5.842000e+02
-4 10846     7.862000e+01 -5.380100e+02
-5 10846     6.612700e+02 -5.549988e+00
-8 10846     1.959998e+01 3.164000e+02
-11 10846     3.716100e+02 -1.385400e+02
-13 10846     3.930400e+02 2.985100e+02
-14 10846     5.600400e+02 -8.857001e+01
-1 10847     6.506400e+02 5.796200e+02
-2 10847     -1.047800e+02 3.900900e+02
-5 10847     6.235900e+02 -2.064001e+01
-6 10847     -2.590900e+02 7.162200e+02
-8 10847     -6.380005e+00 3.050700e+02
-9 10847     -2.459000e+02 4.102300e+02
-11 10847     3.372600e+02 -1.532200e+02
-14 10847     5.243400e+02 -1.054200e+02
-1 10848     5.964500e+02 5.789000e+02
-4 10848     6.834998e+01 -4.794500e+02
-5 10848     5.787700e+02 -3.320001e+01
-6 10848     -3.060600e+02 6.943400e+02
-8 10848     -3.789001e+01 2.956900e+02
-1 10849     5.964500e+02 5.789000e+02
-2 10849     -1.431900e+02 3.793800e+02
-4 10849     6.834998e+01 -4.794500e+02
-5 10849     5.787700e+02 -3.320001e+01
-6 10849     -3.060600e+02 6.943400e+02
-9 10849     -2.774300e+02 3.998000e+02
-1 10850     5.908300e+02 5.757500e+02
-3 10850     -2.822000e+02 3.946002e+01
-4 10850     6.612000e+01 -4.765400e+02
-6 10850     -3.093000e+02 6.885500e+02
-9 10850     -2.803400e+02 3.978200e+02
-11 10850     2.948400e+02 -1.679300e+02
-1 10851     8.574301e+02 5.745900e+02
-13 10851     4.923300e+02 3.189500e+02
-1 10852     6.110000e+02 5.745200e+02
-2 10852     -1.313500e+02 3.777100e+02
-3 10852     -2.682900e+02 4.289001e+01
-4 10852     6.678003e+01 -4.880200e+02
-5 10852     5.918400e+02 -3.400000e+01
-6 10852     -2.913300e+02 6.951800e+02
-8 10852     -2.853003e+01 2.945200e+02
-9 10852     -2.677000e+02 3.989400e+02
-11 10852     3.100900e+02 -1.648900e+02
-13 10852     3.372000e+02 2.710800e+02
-14 10852     4.927300e+02 -1.193100e+02
-1 10853     -2.670800e+02 5.734100e+02
-13 10853     -3.851800e+02 5.913000e+01
-14 10853     -3.928500e+02 -3.398900e+02
-1 10854     6.335100e+02 5.721300e+02
-2 10854     -1.149700e+02 3.790100e+02
-3 10854     -2.526100e+02 4.347998e+01
-4 10854     6.731000e+01 -5.015601e+02
-5 10854     6.107600e+02 -3.107001e+01
-6 10854     -2.707800e+02 7.017700e+02
-8 10854     -1.470001e+01 2.968700e+02
-9 10854     -2.535300e+02 4.001400e+02
-14 10854     5.112200e+02 -1.165200e+02
-1 10855     4.262700e+02 5.670900e+02
-3 10855     -3.985300e+02 -2.199707e-01
-4 10855     4.973999e+01 -3.839400e+02
-6 10855     -4.560000e+02 6.111200e+02
-8 10855     -1.407300e+02 2.561800e+02
-9 10855     -3.824200e+02 3.546600e+02
-11 10855     1.718100e+02 -2.080900e+02
-14 10855     3.428800e+02 -1.692900e+02
-1 10856     -5.734700e+02 5.653000e+02
-4 10856     -1.160999e+01 1.966200e+02
-1 10857     4.551801e+02 5.488200e+02
-2 10857     -2.393500e+02 3.203000e+02
-3 10857     -3.709800e+02 -1.246002e+01
-5 10857     4.662900e+02 -9.244000e+01
-6 10857     -4.205100e+02 6.026900e+02
-8 10857     -1.171500e+02 2.472500e+02
-9 10857     -3.576900e+02 3.449300e+02
-11 10857     1.994600e+02 -2.157600e+02
-12 10857     -2.481600e+02 5.794600e+02
-1 10858     6.210900e+02 5.473100e+02
-3 10858     -2.541700e+02 1.922998e+01
-4 10858     5.341998e+01 -4.965900e+02
-5 10858     6.066100e+02 -5.588000e+01
-6 10858     -2.713900e+02 6.709500e+02
-11 10858     3.253900e+02 -1.824400e+02
-1 10859     6.781899e+02 5.422700e+02
-2 10859     -7.500000e+01 3.610100e+02
-6 10859     -2.209000e+02 6.866200e+02
-13 10859     3.879800e+02 2.628900e+02
-14 10859     5.550200e+02 -1.306700e+02
-1 10860     6.781899e+02 5.422700e+02
-2 10860     -7.500000e+01 3.610100e+02
-4 10860     5.452002e+01 -5.300100e+02
-6 10860     -2.209000e+02 6.866200e+02
-9 10860     -2.188900e+02 3.858200e+02
-13 10860     3.879800e+02 2.628900e+02
-14 10860     5.550200e+02 -1.306700e+02
-1 10861     3.037400e+02 5.307800e+02
-5 10861     3.358000e+02 -1.462200e+02
-6 10861     -5.600500e+02 5.115700e+02
-7 10861     -2.973400e+02 5.646100e+02
-8 10861     -2.147000e+02 2.004500e+02
-12 10861     -3.820300e+02 5.030100e+02
-1 10862     7.772400e+02 5.175900e+02
-2 10862     -2.119995e+00 3.567700e+02
-9 10862     -1.568500e+02 3.842800e+02
-13 10862     4.563400e+02 2.651900e+02
-1 10863     6.222200e+02 5.142100e+02
-4 10863     3.559003e+01 -5.003800e+02
-6 10863     -2.564200e+02 6.353000e+02
-9 10863     -2.434600e+02 3.508300e+02
-11 10863     3.348800e+02 -2.073400e+02
-1 10864     8.533000e+02 5.110000e+02
-5 10864     8.047800e+02 -3.603998e+01
-6 10864     -6.739001e+01 7.203500e+02
-9 10864     -1.153300e+02 3.938900e+02
-11 10864     5.020100e+02 -1.623700e+02
-13 10864     5.050200e+02 2.748700e+02
-14 10864     6.980100e+02 -1.199500e+02
-1 10865     6.882001e+01 5.102700e+02
-5 10865     1.175600e+02 -2.241000e+02
-11 10865     -1.069500e+02 -3.285100e+02
-12 10865     -6.152400e+02 3.817700e+02
-1 10866     7.393300e+02 5.025900e+02
-4 10866     3.702002e+01 -5.700900e+02
-5 10866     7.151500e+02 -6.946002e+01
-6 10866     -1.534900e+02 6.701000e+02
-8 10866     6.253998e+01 2.638200e+02
-13 10866     4.356600e+02 2.468200e+02
-1 10867     6.537900e+02 5.010000e+02
-4 10867     3.000000e+01 -5.197500e+02
-11 10867     3.628199e+02 -2.099900e+02
-13 10867     3.799301e+02 2.269800e+02
-1 10868     7.646100e+02 5.003100e+02
-3 10868     -1.495200e+02 4.809998e+00
-14 10868     6.339600e+02 -1.475800e+02
-1 10869     1.041400e+02 4.896300e+02
-4 10869     -1.337000e+01 -2.094100e+02
-7 10869     -4.630900e+02 4.567900e+02
-8 10869     -3.531900e+02 1.162300e+02
-11 10869     -7.335999e+01 -3.384300e+02
-12 10869     -5.665200e+02 3.750400e+02
-1 10870     -8.721002e+01 4.879700e+02
-5 10870     -3.167999e+01 -2.846600e+02
-7 10870     -6.462000e+02 3.854000e+02
-10 10870     -6.534400e+02 5.434100e+02
-1 10871     8.525000e+01 4.810900e+02
-7 10871     -4.748600e+02 4.420900e+02
-11 10871     -8.707001e+01 -3.489700e+02
-12 10871     -5.842100e+02 3.588600e+02
-1 10872     7.098400e+02 4.784500e+02
-4 10872     2.134003e+01 -5.553000e+02
-9 10872     -1.829100e+02 3.389300e+02
-11 10872     4.106600e+02 -2.150300e+02
-13 10872     4.221899e+02 2.237500e+02
-1 10873     3.578000e+02 4.559400e+02
-5 10873     3.972400e+02 -2.063600e+02
-7 10873     -2.252500e+02 5.121600e+02
-9 10873     -3.968000e+02 2.365000e+02
-13 10873     1.861100e+02 1.238100e+02
-1 10874     3.832700e+02 4.541500e+02
-2 10874     -2.685500e+02 2.020400e+02
-3 10874     -4.020000e+02 -1.300500e+02
-4 10874     -1.575000e+01 -3.675400e+02
-5 10874     4.226899e+02 -2.023800e+02
-6 10874     -4.472300e+02 4.602800e+02
-7 10874     -2.020800e+02 5.180500e+02
-8 10874     -1.409700e+02 1.529500e+02
-9 10874     -3.770000e+02 2.401800e+02
-12 10874     -2.741600e+02 4.524100e+02
-14 10874     3.325400e+02 -2.879900e+02
-1 10875     6.898400e+02 4.421100e+02
-4 10875     -3.699951e-01 -5.476200e+02
-6 10875     -1.692600e+02 5.871300e+02
-12 10875     -4.239990e+00 5.548400e+02
-1 10876     -7.801400e+02 4.205900e+02
-4 10876     -8.607001e+01 2.574500e+02
-1 10877     3.708700e+02 4.207500e+02
-2 10877     -2.711200e+02 1.625500e+02
-5 10877     4.153500e+02 -2.391000e+02
-6 10877     -4.475100e+02 4.148700e+02
-1 10878     4.964800e+02 4.166700e+02
-4 10878     -2.869000e+01 -4.348800e+02
-1 10879     6.567800e+02 4.169700e+02
-3 10879     -1.924100e+02 -9.470001e+01
-6 10879     -1.856200e+02 5.464400e+02
-1 10880     5.935800e+02 4.141800e+02
-7 10880     -1.765997e+01 5.494000e+02
-1 10881     4.934800e+02 4.084400e+02
-4 10881     -3.392999e+01 -4.332100e+02
-5 10881     5.291200e+02 -2.182600e+02
-6 10881     -3.267700e+02 4.621200e+02
-7 10881     -9.600000e+01 5.129700e+02
-12 10881     -1.574800e+02 4.482300e+02
-13 10881     2.915699e+02 1.204100e+02
-1 10882     1.470300e+02 4.010300e+02
-2 10882     -4.624600e+02 6.913000e+01
-5 10882     2.091899e+02 -3.185300e+02
-7 10882     -3.918900e+02 3.856500e+02
-8 10882     -2.991300e+02 4.447000e+01
-13 10882     4.078003e+01 2.596002e+01
-14 10882     1.259400e+02 -4.068600e+02
-1 10883     7.478400e+02 3.990100e+02
-13 10883     4.649301e+02 1.741200e+02
-1 10884     -6.214100e+02 3.982700e+02
-4 10884     -1.008400e+02 2.062400e+02
-1 10885     6.482900e+02 3.978500e+02
-2 10885     -5.110999e+01 2.158500e+02
-3 10885     -1.928100e+02 -1.155700e+02
-8 10885     3.815002e+01 1.675600e+02
-11 10885     3.897800e+02 -2.893800e+02
-14 10885     5.723000e+02 -2.687600e+02
-1 10886     4.977700e+02 3.959300e+02
-3 10886     -2.993000e+02 -1.578500e+02
-4 10886     -4.103998e+01 -4.371600e+02
-5 10886     5.355500e+02 -2.297400e+02
-6 10886     -3.188700e+02 4.501500e+02
-7 10886     -8.839001e+01 5.028500e+02
-8 10886     -5.364001e+01 1.323800e+02
-9 10886     -2.851800e+02 2.192800e+02
-1 10887     7.024500e+02 3.966000e+02
-5 10887     7.063300e+02 -1.761500e+02
-6 10887     -1.465400e+02 5.430600e+02
-7 10887     6.832001e+01 5.660400e+02
-11 10887     4.306100e+02 -2.782600e+02
-1 10888     6.623600e+02 3.942800e+02
-3 10888     -1.825600e+02 -1.157800e+02
-5 10888     6.799700e+02 -1.889800e+02
-6 10888     -1.713500e+02 5.236400e+02
-7 10888     4.208002e+01 5.523700e+02
-8 10888     4.782001e+01 1.671100e+02
-9 10888     -1.841700e+02 2.590000e+02
-11 10888     4.024200e+02 -2.890200e+02
-12 10888     -7.109985e+00 4.966600e+02
-14 10888     5.852400e+02 -2.676000e+02
-1 10889     6.623600e+02 3.942800e+02
-2 10889     -4.128998e+01 2.143200e+02
-3 10889     -1.825600e+02 -1.157800e+02
-5 10889     6.799700e+02 -1.889800e+02
-6 10889     -1.713500e+02 5.236400e+02
-7 10889     4.208002e+01 5.523700e+02
-8 10889     4.782001e+01 1.671100e+02
-9 10889     -1.841700e+02 2.590000e+02
-11 10889     4.024200e+02 -2.890200e+02
-12 10889     -7.109985e+00 4.966600e+02
-13 10889     4.091801e+02 1.501400e+02
-14 10889     5.852400e+02 -2.676000e+02
-1 10890     2.279301e+02 3.902300e+02
-2 10890     -3.847100e+02 8.378998e+01
-5 10890     2.887200e+02 -3.083000e+02
-6 10890     -5.764800e+02 3.041900e+02
-7 10890     -3.156100e+02 4.050000e+02
-8 10890     -2.362000e+02 5.741000e+01
-9 10890     -4.713400e+02 1.324600e+02
-10 10890     -2.609900e+02 5.503600e+02
-11 10890     5.212000e+01 -3.957900e+02
-13 10890     1.038200e+02 3.828003e+01
-14 10890     2.043600e+02 -3.947400e+02
-1 10891     4.549800e+02 3.885000e+02
-2 10891     -1.931000e+02 1.525100e+02
-7 10891     -1.210200e+02 4.820500e+02
-11 10891     2.407100e+02 -3.433500e+02
-13 10891     2.680000e+02 9.454999e+01
-14 10891     4.093400e+02 -3.320200e+02
-1 10892     1.676801e+02 3.828600e+02
-7 10892     -3.672700e+02 3.755500e+02
-1 10893     5.792800e+02 3.807100e+02
-3 10893     -2.365400e+02 -1.530700e+02
-7 10893     -1.834003e+01 5.151900e+02
-11 10893     3.410300e+02 -3.203100e+02
-14 10893     5.183101e+02 -3.055800e+02
-1 10894     -6.171500e+02 3.776400e+02
-4 10894     -1.118700e+02 2.013900e+02
-1 10895     6.490900e+02 3.772900e+02
-7 10895     3.722998e+01 5.342300e+02
-14 10895     5.780500e+02 -2.880900e+02
-1 10896     7.512700e+02 3.748600e+02
-6 10896     -9.113000e+01 5.416600e+02
-9 10896     -1.284100e+02 2.658200e+02
-1 10897     7.512700e+02 3.748600e+02
-6 10897     -9.113000e+01 5.416600e+02
-9 10897     -1.284100e+02 2.658200e+02
-14 10897     6.629399e+02 -2.620600e+02
-1 10898     7.830400e+02 3.699600e+02
-2 10898     4.823999e+01 2.220100e+02
-13 10898     4.936801e+02 1.599600e+02
-14 10898     6.894900e+02 -2.593900e+02
-1 10899     -6.090000e+02 3.691200e+02
-4 10899     -1.165500e+02 1.959000e+02
-1 10900     6.424200e+02 3.685200e+02
-2 10900     -4.545001e+01 1.855200e+02
-5 10900     6.702800e+02 -2.185400e+02
-7 10900     3.546002e+01 5.243300e+02
-8 10900     4.295001e+01 1.431700e+02
-11 10900     3.941700e+02 -3.145500e+02
-13 10900     4.016400e+02 1.261700e+02
-14 10900     5.755200e+02 -2.981200e+02
-1 10901     -3.021200e+02 3.629700e+02
-5 10901     -2.584700e+02 -4.795601e+02
-1 10902     4.542500e+02 3.503100e+02
-7 10902     -1.065000e+02 4.484600e+02
-1 10903     -3.540100e+02 3.446100e+02
-5 10903     -3.060200e+02 -5.132000e+02
-1 10904     -6.190000e+02 3.412400e+02
-4 10904     -1.326600e+02 1.986000e+02
-1 10905     1.782600e+02 3.186900e+02
-7 10905     -3.249100e+02 3.227000e+02
-11 10905     2.796002e+01 -4.705700e+02
-15 10905     -2.372300e+02 4.922800e+02
-1 10906     -1.092300e+02 3.160000e+02
-7 10906     -5.927900e+02 2.057600e+02
-1 10907     5.155699e+02 3.044500e+02
-2 10907     -8.639001e+01 1.084300e+02
-5 10907     5.971300e+02 -3.142900e+02
-6 10907     -2.289700e+02 3.660700e+02
-9 10907     -2.157600e+02 1.662000e+02
-10 10907     7.688000e+01 5.658800e+02
-11 10907     3.153000e+02 -3.984200e+02
-12 10907     -7.476001e+01 3.630100e+02
-13 10907     3.461899e+02 4.803003e+01
-1 10908     5.155699e+02 3.044500e+02
-2 10908     -8.639001e+01 1.084300e+02
-6 10908     -2.289700e+02 3.660700e+02
-9 10908     -2.157600e+02 1.662000e+02
-10 10908     7.688000e+01 5.658800e+02
-11 10908     3.153000e+02 -3.984200e+02
-1 10909     5.324000e+02 3.048200e+02
-8 10909     1.383002e+01 8.332001e+01
-9 10909     -2.071100e+02 1.713900e+02
-10 10909     9.322998e+01 5.731900e+02
-1 10910     4.536899e+02 3.018800e+02
-2 10910     -1.302600e+02 8.754999e+01
-6 10910     -2.812600e+02 3.321100e+02
-9 10910     -2.518700e+02 1.464800e+02
-11 10910     2.657200e+02 -4.161700e+02
-13 10910     3.042500e+02 2.956000e+01
-14 10910     4.547800e+02 -4.156100e+02
-1 10911     4.871000e+02 2.837300e+02
-6 10911     -2.335600e+02 3.316600e+02
-1 10912     1.062300e+02 2.808100e+02
-10 10912     -3.404700e+02 3.817900e+02
-11 10912     -2.603998e+01 -5.216500e+02
-13 10912     6.171002e+01 -8.002002e+01
-14 10912     1.475800e+02 -5.441000e+02
-15 10912     -3.037600e+02 4.091100e+02
-1 10913     -1.501600e+02 2.696100e+02
-4 10913     -1.521600e+02 -8.609003e+01
-1 10914     -1.955300e+02 2.656700e+02
-10 10914     -6.706800e+02 2.391000e+02
-1 10915     -2.674600e+02 2.623700e+02
-7 10915     -7.185200e+02 8.820001e+01
-1 10916     -1.359500e+02 2.601600e+02
-4 10916     -1.564900e+02 -9.638000e+01
-13 10916     -1.212000e+02 -1.638500e+02
-1 10917     -4.027500e+02 2.568400e+02
-7 10917     -8.616700e+02 1.898999e+01
-13 10917     -3.528300e+02 -2.479700e+02
-1 10918     4.127000e+02 2.539400e+02
-6 10918     -2.641900e+02 2.656000e+02
-11 10918     2.492800e+02 -4.688500e+02
-1 10919     -1.477200e+02 2.370000e+02
-4 10919     -1.705800e+02 -9.412000e+01
-10 10919     -5.979000e+02 2.259200e+02
-13 10919     -1.160600e+02 -1.861700e+02
-1 10920     -1.548300e+02 2.359000e+02
-4 10920     -1.718100e+02 -9.028003e+01
-1 10921     3.938400e+02 2.338900e+02
-7 10921     -9.167999e+01 3.313400e+02
-11 10921     2.392100e+02 -4.916600e+02
-1 10922     4.131801e+02 2.280000e+02
-5 10922     5.570699e+02 -4.187600e+02
-6 10922     -2.396700e+02 2.425700e+02
-7 10922     -7.252002e+01 3.344300e+02
-10 10922     1.150000e+01 4.460600e+02
-11 10922     2.575100e+02 -4.912300e+02
-13 10922     3.156000e+02 -3.494000e+01
-14 10922     4.704200e+02 -4.995500e+02
-1 10923     4.075400e+02 2.251700e+02
-5 10923     5.543700e+02 -4.239200e+02
-6 10923     -2.416500e+02 2.368300e+02
-1 10924     4.504301e+02 2.253200e+02
-6 10924     -2.042300e+02 2.602300e+02
-1 10925     1.787000e+02 2.228000e+02
-8 10925     -1.622400e+02 -6.032001e+01
-9 10925     -3.666800e+02 1.728003e+01
-1 10926     4.290699e+02 2.194800e+02
-4 10926     -1.464900e+02 -4.396899e+02
-5 10926     5.776300e+02 -4.227800e+02
-6 10926     -2.172800e+02 2.435900e+02
-7 10926     -5.546997e+01 3.330100e+02
-10 10926     3.145001e+01 4.429900e+02
-11 10926     2.737500e+02 -4.951000e+02
-13 10926     3.315000e+02 -3.741998e+01
-14 10926     4.906600e+02 -5.035601e+02
-1 10927     4.290699e+02 2.194800e+02
-6 10927     -2.172800e+02 2.435900e+02
-1 10928     4.485400e+02 2.196600e+02
-4 10928     -1.440700e+02 -4.498000e+02
-10 10928     5.150000e+01 4.506800e+02
-11 10928     2.899900e+02 -4.892500e+02
-1 10929     3.914301e+02 2.171300e+02
-6 10929     -2.472300e+02 2.221100e+02
-1 10930     5.896600e+02 1.998500e+02
-7 10930     8.241998e+01 3.733500e+02
-14 10930     6.460100e+02 -4.713400e+02
-1 10931     5.497500e+02 1.961500e+02
-7 10931     5.377002e+01 3.566600e+02
-11 10931     3.839301e+02 -4.827500e+02
-1 10932     8.199100e+02 1.934900e+02
-6 10932     1.854100e+02 4.326600e+02
-7 10932     2.806801e+02 4.547700e+02
-8 10932     2.979100e+02 1.401900e+02
-10 10932     4.409399e+02 5.631200e+02
-12 10932     2.960900e+02 4.277500e+02
-13 10932     6.461400e+02 5.538000e+01
-1 10933     5.425400e+02 1.834800e+02
-6 10933     -8.595001e+01 2.712300e+02
-7 10933     5.448999e+01 3.447000e+02
-11 10933     3.817000e+02 -4.958300e+02
-13 10933     4.295300e+02 -3.234003e+01
-14 10933     6.159100e+02 -5.015400e+02
-15 10933     2.817800e+02 4.979200e+02
-1 10934     6.004999e+01 1.801600e+02
-9 10934     -4.143600e+02 -5.003003e+01
-13 10934     8.203998e+01 -1.706400e+02
-1 10935     5.336300e+02 1.789800e+02
-10 10935     1.547200e+02 4.414500e+02
-11 10935     3.758800e+02 -5.022700e+02
-15 10935     2.725900e+02 4.893800e+02
-1 10936     -3.607500e+02 1.713200e+02
-7 10936     -7.556800e+02 -3.953998e+01
-1 10937     -1.258002e+01 1.565700e+02
-7 10937     -4.000400e+02 1.074200e+02
-1 10938     2.105900e+02 1.245700e+02
-2 10938     1.089000e+02 1.145600e+02
-3 10938     1.585999e+01 -2.022000e+02
-4 10938     -2.055600e+02 -4.226900e+02
-5 10938     6.349800e+02 -5.542700e+02
-6 10938     -6.919000e+01 1.333300e+02
-8 10938     1.237000e+02 4.985001e+01
-9 10938     -2.270001e+01 1.843000e+02
-15 10938     -2.700000e+01 2.799600e+02
-1 10939     5.893101e+02 1.094100e+02
-10 10939     2.443700e+02 3.907500e+02
-1 10940     4.737800e+02 1.057600e+02
-15 10940     2.961600e+02 3.845700e+02
-1 10941     5.870699e+02 8.507001e+01
-15 10941     3.896700e+02 4.015000e+02
-1 10942     8.594399e+02 8.375000e+01
-3 10942     2.964600e+02 -1.292200e+02
-6 10942     3.451700e+02 3.768600e+02
-8 10942     4.175500e+02 1.286200e+02
-9 10942     2.316500e+02 2.560100e+02
-11 10942     6.907600e+02 -4.955100e+02
-12 10942     4.336500e+02 3.844000e+02
-1 10943     1.833199e+02 4.726001e+01
-2 10943     1.530500e+02 5.028998e+01
-6 10943     -2.738000e+01 4.928998e+01
-10 10943     -7.796002e+01 1.699600e+02
-12 10943     -1.169000e+01 1.043400e+02
-15 10943     -1.673999e+01 1.719000e+02
-1 10944     5.091600e+02 2.607001e+01
-10 10944     2.559900e+02 2.803300e+02
-15 10944     3.791400e+02 3.056100e+02
-1 10945     5.091600e+02 2.607001e+01
-15 10945     3.791400e+02 3.056100e+02
-1 10946     4.508500e+02 2.417999e+01
-13 10946     5.824100e+02 -1.395000e+02
-15 10946     3.170000e+02 2.768100e+02
-1 10947     3.834003e+01 1.996997e+01
-10 10947     -2.334600e+02 7.579999e+01
-15 10947     -1.951900e+02 5.892999e+01
-1 10948     4.289399e+02 2.859985e+00
-7 10948     1.525601e+02 2.021100e+02
-15 10948     3.037200e+02 2.403900e+02
-1 10949     3.541100e+02 2.999878e-01
-7 10949     9.887000e+01 1.720400e+02
-1 10950     4.970800e+02 -4.880005e+00
-7 10950     2.006899e+02 2.176400e+02
-1 10951     5.027300e+02 -6.809998e+00
-15 10951     3.902700e+02 2.644000e+02
-1 10952     -1.739400e+02 -1.316998e+01
-7 10952     -4.457300e+02 -1.140200e+02
-1 10953     -1.573400e+02 -1.692999e+01
-2 10953     -3.387800e+02 -3.754300e+02
-7 10953     -4.273400e+02 -1.090700e+02
-8 10953     -2.341700e+02 -3.302700e+02
-13 10953     2.287000e+01 -3.944300e+02
-1 10954     1.688900e+02 -3.716998e+01
-4 10954     -3.183600e+02 -4.326500e+02
-7 10954     -4.679999e+01 5.862000e+01
-10 10954     -5.482001e+01 7.471002e+01
-1 10955     8.437600e+02 -4.102002e+01
-6 10955     3.985100e+02 2.556500e+02
-7 10955     4.137900e+02 2.883800e+02
-8 10955     4.582200e+02 4.101999e+01
-9 10955     2.773000e+02 1.695600e+02
-10 10955     5.688800e+02 3.370700e+02
-1 10956     3.511300e+02 -4.390997e+01
-2 10956     3.538400e+02 5.746997e+01
-1 10957     2.668800e+02 -4.654999e+01
-2 10957     2.968400e+02 1.978998e+01
-7 10957     4.782001e+01 9.562000e+01
-8 10957     2.730400e+02 -3.254001e+01
-10 10957     5.478998e+01 1.072700e+02
-13 10957     4.905300e+02 -2.452400e+02
-15 10957     1.384700e+02 1.003500e+02
-1 10958     2.299399e+02 -6.007001e+01
-2 10958     2.743400e+02 -1.117999e+01
-3 10958     1.807000e+02 -3.169900e+02
-7 10958     2.079999e+01 6.747998e+01
-13 10958     4.658600e+02 -2.675300e+02
-15 10958     9.996997e+01 6.395001e+01
-1 10959     8.465300e+02 -6.490002e+01
-2 10959     5.004900e+02 6.876001e+01
-3 10959     3.651100e+02 -2.431300e+02
-6 10959     4.132900e+02 2.380700e+02
-7 10959     4.252200e+02 2.700100e+02
-9 10959     2.902000e+02 1.565600e+02
-10 10959     5.807300e+02 3.154800e+02
-13 10959     7.972600e+02 -1.147500e+02
-15 10959     7.786700e+02 3.510500e+02
-1 10960     -6.514300e+02 -7.027002e+01
-4 10960     -3.966600e+02 1.731300e+02
-1 10961     2.331400e+02 -7.920001e+01
-8 10961     2.636700e+02 -7.197998e+01
-1 10962     2.974600e+02 -7.841998e+01
-6 10962     1.667500e+02 5.140015e+00
-8 10962     3.080100e+02 -4.432001e+01
-13 10962     5.244000e+02 -2.600900e+02
-1 10963     1.939500e+02 -8.104999e+01
-4 10963     -3.480800e+02 -4.618600e+02
-1 10964     2.289600e+02 -8.632001e+01
-2 10964     2.874000e+02 -3.853003e+01
-4 10964     -3.498900e+02 -4.910300e+02
-6 10964     1.103100e+02 -4.660999e+01
-8 10964     2.629800e+02 -8.084003e+01
-1 10965     4.903700e+02 -8.723999e+01
-15 10965     4.162700e+02 1.606600e+02
-1 10966     3.897700e+02 -9.204999e+01
-6 10966     2.413200e+02 4.103003e+01
-7 10966     1.649200e+02 1.061900e+02
-10 10966     1.915200e+02 1.095500e+02
-13 10966     5.910100e+02 -2.434300e+02
-15 10966     3.069100e+02 1.064500e+02
-1 10967     4.989399e+02 -1.006200e+02
-10 10967     2.976899e+02 1.477200e+02
-15 10967     4.306899e+02 1.492400e+02
-1 10968     4.989399e+02 -1.006200e+02
-10 10968     2.976899e+02 1.477200e+02
-15 10968     4.306899e+02 1.492400e+02
-1 10969     2.085300e+02 -1.114600e+02
-2 10969     2.809700e+02 -7.590002e+01
-7 10969     2.187000e+01 1.167999e+01
-9 10969     1.287500e+02 3.298999e+01
-1 10970     2.531300e+02 -1.115800e+02
-3 10970     2.252200e+02 -3.529300e+02
-1 10971     5.140900e+02 -1.196300e+02
-7 10971     2.557100e+02 1.258600e+02
-1 10972     -1.737600e+02 -1.274100e+02
-13 10972     7.483002e+01 -4.930900e+02
-1 10973     1.415000e+02 -1.291500e+02
-7 10973     -2.712000e+01 -3.427002e+01
-1 10974     -1.307001e+01 -1.314200e+02
-10 10974     -2.218400e+02 -1.098400e+02
-1 10975     5.457900e+02 -1.368500e+02
-10 10975     3.531400e+02 1.292500e+02
-1 10976     2.559000e+02 -1.464200e+02
-7 10976     7.965997e+01 3.469971e+00
-10 10976     8.419000e+01 -8.499756e-01
-15 10976     1.748500e+02 -2.800000e+01
-1 10977     4.577500e+02 -1.487900e+02
-7 10977     2.323101e+02 8.254001e+01
-1 10978     1.205300e+02 -1.709000e+02
-7 10978     -2.370001e+01 -7.978003e+01
-15 10978     2.325000e+01 -1.296800e+02
-1 10979     -4.607300e+02 -1.823400e+02
-7 10979     -6.185500e+02 -4.171500e+02
-15 10979     -7.554500e+02 -4.893700e+02
-1 10980     4.732800e+02 -1.817800e+02
-7 10980     2.589000e+02 6.158002e+01
-1 10981     -6.591300e+02 -1.893500e+02
-4 10981     -4.896400e+02 1.652900e+02
-1 10982     8.582000e+02 -1.932400e+02
-10 10982     6.411100e+02 1.940400e+02
-15 10982     8.527000e+02 2.064000e+02
-1 10983     -4.543900e+02 -1.987200e+02
-7 10983     -6.016000e+02 -4.296400e+02
-1 10984     8.159500e+02 -2.079300e+02
-7 10984     4.532000e+02 1.442200e+02
-1 10985     4.706200e+02 -2.225700e+02
-7 10985     2.757800e+02 2.765002e+01
-1 10986     -2.165100e+02 -2.235300e+02
-4 10986     -4.871400e+02 -1.489100e+02
-7 10986     -3.522700e+02 -3.202000e+02
-9 10986     -2.014200e+02 -3.970200e+02
-15 10986     -4.021000e+02 -3.927400e+02
-1 10987     8.186200e+02 -2.366500e+02
-7 10987     4.672600e+02 1.222500e+02
-8 10987     5.228500e+02 -9.865002e+01
-10 10987     6.175900e+02 1.352700e+02
-13 10987     8.383700e+02 -2.542900e+02
-15 10987     8.257700e+02 1.362400e+02
-1 10988     8.406899e+02 -2.490400e+02
-2 10988     5.943000e+02 -7.692999e+01
-7 10988     4.902200e+02 1.223000e+02
-8 10988     5.459800e+02 -9.329999e+01
-15 10988     8.583900e+02 1.325500e+02
-1 10989     -3.690600e+02 -2.530700e+02
-15 10989     -5.845100e+02 -5.237100e+02
-1 10990     4.232400e+02 -2.537300e+02
-7 10990     2.590900e+02 -1.427002e+01
-1 10991     8.660400e+02 -2.540500e+02
-2 10991     6.186100e+02 -6.132001e+01
-6 10991     5.378199e+02 8.573999e+01
-7 10991     5.121899e+02 1.297600e+02
-9 10991     3.931200e+02 5.203003e+01
-12 10991     6.168800e+02 9.541998e+01
-1 10992     8.549301e+02 -2.628200e+02
-2 10992     6.132600e+02 -7.621997e+01
-3 10992     4.843101e+02 -3.797600e+02
-7 10992     5.064100e+02 1.180600e+02
-8 10992     5.613900e+02 -9.313000e+01
-9 10992     3.889301e+02 3.920001e+01
-12 10992     6.102300e+02 8.210999e+01
-13 10992     8.797700e+02 -2.598400e+02
-1 10993     -1.974300e+02 -2.651200e+02
-6 10993     -2.588800e+02 -5.933199e+02
-15 10993     -3.496800e+02 -4.326400e+02
-1 10994     4.003101e+02 -2.651700e+02
-7 10994     2.482000e+02 -3.378998e+01
-1 10995     -3.771900e+02 -2.672800e+02
-10 10995     -5.719200e+02 -4.404900e+02
-15 10995     -5.847100e+02 -5.448700e+02
-1 10996     -2.111100e+02 -2.731700e+02
-6 10996     -2.638800e+02 -6.112100e+02
-7 10996     -3.140900e+02 -3.600900e+02
-15 10996     -3.624600e+02 -4.515000e+02
-1 10997     -3.996000e+02 -2.788300e+02
-10 10997     -5.919800e+02 -4.667100e+02
-15 10997     -6.073900e+02 -5.751200e+02
-1 10998     3.881000e+02 -2.892900e+02
-10 10998     2.751801e+02 -9.003998e+01
-1 10999     3.881000e+02 -2.892900e+02
-10 10999     2.751801e+02 -9.003998e+01
-1 11000     3.898300e+02 -3.031600e+02
-15 11000     4.098800e+02 -1.492600e+02
-1 11001     -3.883500e+02 -3.039300e+02
-10 11001     -5.646600e+02 -4.881300e+02
-1 11002     -3.883500e+02 -3.039300e+02
-10 11002     -5.646600e+02 -4.881300e+02
-1 11003     -2.902100e+02 -3.049100e+02
-7 11003     -3.680500e+02 -4.305100e+02
-15 11003     -4.454000e+02 -5.391200e+02
-1 11004     7.774200e+02 -3.051300e+02
-3 11004     4.806300e+02 -4.369000e+02
-7 11004     4.741400e+02 5.720001e+01
-15 11004     8.189700e+02 3.715997e+01
-1 11005     7.780400e+02 -3.180300e+02
-7 11005     4.804000e+02 4.771997e+01
-10 11005     6.177100e+02 4.045001e+01
-15 11005     8.262900e+02 2.232001e+01
-1 11006     1.992200e+02 -3.199400e+02
-2 11006     3.899700e+02 -2.950800e+02
-7 11006     9.902002e+01 -1.773100e+02
-8 11006     3.431400e+02 -2.930300e+02
-1 11007     2.002300e+02 -3.258400e+02
-10 11007     9.698999e+01 -2.132800e+02
-1 11008     3.899000e+02 -3.441200e+02
-7 11008     2.559000e+02 -1.124100e+02
-10 11008     2.911400e+02 -1.448700e+02
-1 11009     -6.716500e+02 -3.566600e+02
-4 11009     -6.363000e+02 1.544600e+02
-1 11010     6.961100e+02 -4.057700e+02
-7 11010     4.719700e+02 -4.729999e+01
-1 11011     -1.818600e+02 -4.086200e+02
-6 11011     -8.182999e+01 -7.004800e+02
-7 11011     -1.990900e+02 -4.619700e+02
-10 11011     -2.718700e+02 -4.906700e+02
-1 11012     7.813800e+02 -4.164700e+02
-12 11012     6.688700e+02 -6.829999e+01
-1 11013     2.404900e+02 -4.263000e+02
-10 11013     1.811000e+02 -2.969100e+02
-1 11014     8.108800e+02 -4.293800e+02
-7 11014     5.550900e+02 -2.034003e+01
-1 11015     -6.528700e+02 -4.634600e+02
-4 11015     -7.375000e+02 1.258100e+02
-1 11016     8.395200e+02 -4.652200e+02
-2 11016     7.573700e+02 -1.918300e+02
-7 11016     5.877100e+02 -3.483002e+01
-9 11016     5.141400e+02 -4.935999e+01
-12 11016     7.372900e+02 -7.622998e+01
-1 11017     -5.791100e+02 -4.980601e+02
-4 11017     -7.680500e+02 6.103003e+01
-1 11018     2.191400e+02 -5.519500e+02
-10 11018     2.127600e+02 -4.346000e+02
-1 11019     8.182500e+02 5.746600e+02
-3 11019     -1.391500e+02 7.626001e+01
-1 11020     7.159600e+02 5.738200e+02
-4 11020     7.372998e+01 -5.486100e+02
-6 11020     -2.023200e+02 7.335100e+02
-14 11020     5.747300e+02 -9.635999e+01
-1 11021     7.159600e+02 5.738200e+02
-4 11021     7.372998e+01 -5.486100e+02
-6 11021     -2.023200e+02 7.335100e+02
-11 11021     3.861899e+02 -1.447100e+02
-1 11022     6.354200e+02 5.645800e+02
-2 11022     -1.113700e+02 3.731900e+02
-4 11022     6.337000e+01 -5.032000e+02
-5 11022     6.143800e+02 -3.709998e+01
-6 11022     -2.658900e+02 6.946600e+02
-11 11022     3.309600e+02 -1.670900e+02
-14 11022     5.149800e+02 -1.221300e+02
-1 11023     6.909600e+02 5.641300e+02
-4 11023     6.708002e+01 -5.354500e+02
-5 11023     6.594200e+02 -2.562000e+01
-6 11023     -2.190000e+02 7.154100e+02
-8 11023     1.989001e+01 3.001100e+02
-14 11023     5.583900e+02 -1.105600e+02
-1 11024     6.909600e+02 5.641300e+02
-5 11024     6.594200e+02 -2.562000e+01
-6 11024     -2.190000e+02 7.154100e+02
-8 11024     1.989001e+01 3.001100e+02
-9 11024     -2.182900e+02 4.046200e+02
-14 11024     5.583900e+02 -1.105600e+02
-1 11025     7.082000e+02 5.636800e+02
-2 11025     -6.131000e+01 3.857700e+02
-3 11025     -2.023700e+02 5.071002e+01
-4 11025     6.770001e+01 -5.451400e+02
-6 11025     -2.044100e+02 7.204900e+02
-8 11025     2.960999e+01 3.026100e+02
-9 11025     -2.081600e+02 4.078100e+02
-11 11025     3.835900e+02 -1.534800e+02
-1 11026     -5.957001e+01 5.617400e+02
-4 11026     1.770001e+01 -1.184500e+02
-1 11027     5.802000e+02 5.602400e+02
-3 11027     -2.853200e+02 2.494000e+01
-5 11027     5.694800e+02 -5.356000e+01
-8 11027     -4.309998e+01 2.789300e+02
-9 11027     -2.821600e+02 3.809200e+02
-13 11027     3.196500e+02 2.542000e+02
-14 11027     4.717600e+02 -1.386400e+02
-1 11028     5.802000e+02 5.602400e+02
-2 11028     -1.492400e+02 3.584700e+02
-4 11028     5.701001e+01 -4.718400e+02
-5 11028     5.694800e+02 -5.356000e+01
-6 11028     -3.121500e+02 6.675900e+02
-8 11028     -4.309998e+01 2.789300e+02
-9 11028     -2.821600e+02 3.809200e+02
-11 11028     2.910400e+02 -1.815400e+02
-13 11028     3.196500e+02 2.542000e+02
-14 11028     4.717600e+02 -1.386400e+02
-1 11029     5.896000e+02 5.583600e+02
-2 11029     -1.419000e+02 3.581400e+02
-3 11029     -2.782700e+02 2.378003e+01
-4 11029     5.671002e+01 -4.774500e+02
-5 11029     5.778600e+02 -5.292999e+01
-6 11029     -3.030700e+02 6.695000e+02
-8 11029     -3.721002e+01 2.788900e+02
-9 11029     -2.758200e+02 3.816000e+02
-11 11029     2.988700e+02 -1.813300e+02
-13 11029     3.264000e+02 2.546700e+02
-14 11029     4.797900e+02 -1.385000e+02
-1 11030     6.059500e+02 5.574000e+02
-2 11030     -1.302200e+02 3.605500e+02
-3 11030     -2.672400e+02 2.635999e+01
-4 11030     5.733002e+01 -4.868800e+02
-5 11030     5.914500e+02 -5.028003e+01
-6 11030     -2.886500e+02 6.746100e+02
-8 11030     -2.734998e+01 2.811400e+02
-9 11030     -2.659500e+02 3.836600e+02
-11 11030     3.109399e+02 -1.784200e+02
-13 11030     3.372800e+02 2.575800e+02
-14 11030     4.930000e+02 -1.353700e+02
-1 11031     6.275800e+02 5.567900e+02
-5 11031     6.096000e+02 -4.603003e+01
-11 11031     3.273400e+02 -1.745200e+02
-13 11031     3.516500e+02 2.618900e+02
-1 11032     6.785300e+02 5.536300e+02
-4 11032     6.065002e+01 -5.290601e+02
-5 11032     6.519399e+02 -3.776001e+01
-6 11032     -2.253700e+02 6.993400e+02
-9 11032     -2.223600e+02 3.947500e+02
-11 11032     3.655900e+02 -1.661100e+02
-1 11033     6.656801e+02 5.459700e+02
-3 11033     -2.243500e+02 2.681000e+01
-4 11033     5.521002e+01 -5.229399e+02
-5 11033     6.442000e+02 -4.741998e+01
-6 11033     -2.316900e+02 6.862800e+02
-9 11033     -2.268500e+02 3.859400e+02
-13 11033     3.790601e+02 2.623200e+02
-14 11033     5.440100e+02 -1.311000e+02
-1 11034     8.700100e+02 5.425600e+02
-6 11034     -6.765997e+01 7.557400e+02
-1 11035     8.700100e+02 5.425600e+02
-6 11035     -6.765997e+01 7.557400e+02
-8 11035     1.202000e+02 3.111300e+02
-9 11035     -1.162100e+02 4.191100e+02
-11 11035     5.027100e+02 -1.381200e+02
-13 11035     5.072600e+02 2.996500e+02
-14 11035     6.994600e+02 -9.048999e+01
-1 11036     7.690300e+02 5.241200e+02
-2 11036     -9.929993e+00 3.622500e+02
-3 11036     -1.535300e+02 2.584003e+01
-9 11036     -1.633500e+02 3.880600e+02
-11 11036     4.394500e+02 -1.697300e+02
-13 11036     4.495200e+02 2.678500e+02
-14 11036     6.301000e+02 -1.264300e+02
-1 11037     7.645400e+02 5.133600e+02
-2 11037     -9.130005e+00 3.519100e+02
-4 11037     4.559003e+01 -5.840500e+02
-5 11037     7.326500e+02 -5.353998e+01
-6 11037     -1.376600e+02 6.917300e+02
-9 11037     -1.622500e+02 3.794700e+02
-11 11037     4.398600e+02 -1.776800e+02
-13 11037     4.492800e+02 2.594900e+02
-14 11037     6.300800e+02 -1.363800e+02
-1 11038     8.601200e+02 5.047000e+02
-5 11038     8.109700e+02 -4.240002e+01
-9 11038     -1.109900e+02 3.885000e+02
-11 11038     5.085900e+02 -1.661700e+02
-14 11038     7.049301e+02 -1.229800e+02
-1 11039     -7.906000e+02 4.936800e+02
-4 11039     -4.584003e+01 2.636500e+02
-1 11040     -9.216998e+01 4.941100e+02
-4 11040     -2.140997e+01 -1.019600e+02
-5 11040     -3.928003e+01 -2.798600e+02
-7 11040     -6.544700e+02 3.890300e+02
-11 11040     -2.436600e+02 -3.750800e+02
-12 11040     -7.843700e+02 2.908600e+02
-1 11041     -1.617900e+02 4.822400e+02
-4 11041     -3.119000e+01 -6.421997e+01
-13 11041     -2.136400e+02 1.596997e+01
-14 11041     -1.995200e+02 -4.065400e+02
-1 11042     2.519900e+02 4.744400e+02
-5 11042     2.990200e+02 -2.148600e+02
-7 11042     -3.227600e+02 4.944900e+02
-11 11042     5.350000e+01 -3.185000e+02
-12 11042     -4.076900e+02 4.221600e+02
-13 11042     1.075500e+02 1.130400e+02
-14 11042     2.115900e+02 -3.021000e+02
-1 11043     7.162800e+02 4.519100e+02
-3 11043     -1.761600e+02 -5.007001e+01
-9 11043     -1.813600e+02 3.196000e+02
-11 11043     4.231300e+02 -2.330400e+02
-1 11044     -1.257400e+02 4.171600e+02
-10 11044     -6.720700e+02 4.443000e+02
-11 11044     -2.634000e+02 -4.491600e+02
-12 11044     -7.950200e+02 1.767200e+02
-15 11044     -6.874500e+02 4.753700e+02
-1 11045     2.414700e+02 4.124500e+02
-2 11045     -3.794000e+02 1.136800e+02
-6 11045     -5.727100e+02 3.382700e+02
-7 11045     -3.114700e+02 4.310800e+02
-8 11045     -2.317600e+02 8.129999e+01
-12 11045     -3.944600e+02 3.475000e+02
-13 11045     1.096800e+02 5.971997e+01
-14 11045     2.123101e+02 -3.680700e+02
-1 11046     6.283300e+02 4.103500e+02
-2 11046     -6.965002e+01 2.227300e+02
-6 11046     -2.080500e+02 5.258100e+02
-9 11046     -2.095200e+02 2.653300e+02
-1 11047     6.283300e+02 4.103500e+02
-2 11047     -6.965002e+01 2.227300e+02
-6 11047     -2.080500e+02 5.258100e+02
-9 11047     -2.095200e+02 2.653300e+02
-1 11048     6.435200e+02 4.026800e+02
-2 11048     -5.709998e+01 2.192100e+02
-5 11048     6.607500e+02 -1.855800e+02
-6 11048     -1.924300e+02 5.247800e+02
-7 11048     2.410999e+01 5.540600e+02
-8 11048     3.334998e+01 1.701500e+02
-9 11048     -1.985900e+02 2.623700e+02
-11 11048     3.839600e+02 -2.877000e+02
-12 11048     -2.713000e+01 4.991900e+02
-1 11049     4.889900e+02 3.951400e+02
-4 11049     -4.178998e+01 -4.323800e+02
-11 11049     2.657900e+02 -3.305000e+02
-12 11049     -1.559400e+02 4.324300e+02
-1 11050     -6.212400e+02 3.916900e+02
-4 11050     -1.046500e+02 2.060800e+02
-1 11051     5.122500e+02 3.918700e+02
-2 11051     -1.503800e+02 1.708000e+02
-3 11051     -2.883100e+02 -1.609700e+02
-7 11051     -7.584998e+01 5.029100e+02
-8 11051     -4.366998e+01 1.298800e+02
-11 11051     2.851100e+02 -3.275200e+02
-12 11051     -1.338700e+02 4.377200e+02
-13 11051     3.083199e+02 1.125700e+02
-14 11051     4.592500e+02 -3.112600e+02
-1 11052     5.122500e+02 3.918700e+02
-2 11052     -1.503800e+02 1.708000e+02
-8 11052     -4.366998e+01 1.298800e+02
-11 11052     2.851100e+02 -3.275200e+02
-12 11052     -1.338700e+02 4.377200e+02
-13 11052     3.083199e+02 1.125700e+02
-14 11052     4.592500e+02 -3.112600e+02
-1 11053     6.243000e+02 3.874500e+02
-2 11053     -6.578003e+01 1.993100e+02
-5 11053     6.482300e+02 -2.051800e+02
-7 11053     1.476001e+01 5.353100e+02
-8 11053     2.606000e+01 1.536800e+02
-11 11053     3.743000e+02 -3.037500e+02
-12 11053     -3.670001e+01 4.771700e+02
-13 11053     3.851400e+02 1.358100e+02
-14 11053     5.543800e+02 -2.854000e+02
-1 11054     6.335699e+02 3.864800e+02
-5 11054     6.564200e+02 -2.036200e+02
-11 11054     3.818101e+02 -3.023200e+02
-13 11054     3.914399e+02 1.373700e+02
-14 11054     5.624000e+02 -2.836700e+02
-1 11055     6.335699e+02 3.864800e+02
-2 11055     -5.915002e+01 2.007100e+02
-5 11055     6.564200e+02 -2.036200e+02
-7 11055     2.206000e+01 5.371500e+02
-8 11055     3.144000e+01 1.548600e+02
-11 11055     3.818101e+02 -3.023200e+02
-12 11055     -2.875000e+01 4.789100e+02
-13 11055     3.914399e+02 1.373700e+02
-14 11055     5.624000e+02 -2.836700e+02
-1 11056     -6.194000e+02 3.840800e+02
-4 11056     -1.086300e+02 2.034500e+02
-1 11057     4.838300e+02 3.832500e+02
-2 11057     -1.694600e+02 1.555800e+02
-3 11057     -3.061300e+02 -1.758900e+02
-4 11057     -4.923999e+01 -4.298000e+02
-7 11057     -9.560999e+01 4.863700e+02
-8 11057     -5.932001e+01 1.181900e+02
-9 11057     -2.901600e+02 2.040400e+02
-11 11057     2.649301e+02 -3.409300e+02
-13 11057     2.893700e+02 9.820999e+01
-14 11057     4.354800e+02 -3.283500e+02
-1 11058     -6.549600e+02 3.753200e+02
-4 11058     -1.151100e+02 2.235000e+02
-1 11059     4.735200e+02 3.753900e+02
-2 11059     -1.745500e+02 1.447000e+02
-7 11059     -1.014700e+02 4.762800e+02
-13 11059     2.840500e+02 8.938000e+01
-14 11059     4.289100e+02 -3.392500e+02
-1 11060     4.735200e+02 3.753900e+02
-2 11060     -1.745500e+02 1.447000e+02
-4 11060     -5.457001e+01 -4.239100e+02
-7 11060     -1.014700e+02 4.762800e+02
-8 11060     -6.452002e+01 1.085000e+02
-11 11060     2.587300e+02 -3.497600e+02
-13 11060     2.840500e+02 8.938000e+01
-14 11060     4.289100e+02 -3.392500e+02
-1 11061     6.049200e+02 3.700100e+02
-3 11061     -2.148300e+02 -1.551000e+02
-7 11061     5.309998e+00 5.139200e+02
-8 11061     1.891998e+01 1.358400e+02
-13 11061     3.754500e+02 1.179700e+02
-14 11061     5.432500e+02 -3.071400e+02
-1 11062     2.664200e+02 3.116900e+02
-7 11062     -2.429400e+02 3.489100e+02
-1 11063     -3.433500e+02 3.101900e+02
-5 11063     -2.718400e+02 -5.493300e+02
-1 11064     5.357300e+02 2.949600e+02
-10 11064     1.021500e+02 5.630800e+02
-1 11065     5.231200e+02 2.936600e+02
-5 11065     6.122100e+02 -3.226700e+02
-6 11065     -2.111200e+02 3.597100e+02
-8 11065     1.753003e+01 7.503000e+01
-9 11065     -2.019700e+02 1.631900e+02
-10 11065     9.034998e+01 5.574400e+02
-12 11065     -6.015997e+01 3.571600e+02
-13 11065     3.575900e+02 4.262000e+01
-14 11065     5.219000e+02 -4.015500e+02
-1 11066     5.231200e+02 2.936600e+02
-6 11066     -2.111200e+02 3.597100e+02
-10 11066     9.034998e+01 5.574400e+02
-12 11066     -6.015997e+01 3.571600e+02
-1 11067     -3.583100e+02 2.676200e+02
-7 11067     -8.191500e+02 5.025000e+01
-13 11067     -3.184500e+02 -2.247100e+02
-1 11068     -1.569700e+02 2.663300e+02
-4 11068     -1.542900e+02 -8.303998e+01
-1 11069     -4.509100e+02 2.456700e+02
-13 11069     -3.899100e+02 -2.712100e+02
-1 11070     -4.509100e+02 2.456700e+02
-13 11070     -3.899100e+02 -2.712100e+02
-1 11071     4.241000e+02 2.462800e+02
-6 11071     -2.499100e+02 2.656500e+02
-11 11071     2.608500e+02 -4.731600e+02
-1 11072     4.056899e+02 2.449600e+02
-4 11072     -1.333900e+02 -4.172700e+02
-5 11072     5.362900e+02 -4.061000e+02
-7 11072     -9.003003e+01 3.441700e+02
-11 11072     2.445300e+02 -4.790600e+02
-12 11072     -1.274600e+02 2.660700e+02
-14 11072     4.508500e+02 -4.859200e+02
-1 11073     -4.021700e+02 2.406800e+02
-7 11073     -8.474700e+02 4.830017e+00
-13 11073     -3.406600e+02 -2.613700e+02
-1 11074     3.819500e+02 2.274500e+02
-4 11074     -1.452400e+02 -4.088100e+02
-5 11074     5.300200e+02 -4.291500e+02
-6 11074     -2.672300e+02 2.251100e+02
-7 11074     -9.842999e+01 3.223100e+02
-11 11074     2.309100e+02 -5.006600e+02
-1 11075     3.958700e+02 2.274100e+02
-4 11075     -1.442400e+02 -4.172600e+02
-5 11075     5.412800e+02 -4.258199e+02
-6 11075     -2.552400e+02 2.330200e+02
-7 11075     -8.684003e+01 3.265700e+02
-11 11075     2.430601e+02 -4.963900e+02
-1 11076     8.236600e+02 2.165100e+02
-3 11076     1.328100e+02 -1.107000e+02
-7 11076     2.754200e+02 4.743000e+02
-8 11076     2.908600e+02 1.564400e+02
-9 11076     8.998999e+01 2.710000e+02
-1 11077     3.946801e+02 2.111300e+02
-10 11077     1.119995e+00 4.206800e+02
-1 11078     3.946801e+02 2.111300e+02
-5 11078     5.520900e+02 -4.415000e+02
-6 11078     -2.389900e+02 2.177300e+02
-13 11078     3.119500e+02 -5.259998e+01
-14 11078     4.655601e+02 -5.221100e+02
-1 11079     4.234301e+02 2.088400e+02
-10 11079     3.164001e+01 4.301800e+02
-1 11080     3.880900e+02 2.070900e+02
-6 11080     -2.415500e+02 2.091000e+02
-10 11080     -1.950012e+00 4.138100e+02
-1 11081     7.720400e+02 1.978600e+02
-13 11081     6.021500e+02 4.407001e+01
-1 11082     5.786300e+02 1.905700e+02
-10 11082     1.958000e+02 4.704300e+02
-1 11083     5.494200e+02 1.820700e+02
-6 11083     -7.845001e+01 2.725200e+02
-7 11083     6.112000e+01 3.453600e+02
-10 11083     1.705500e+02 4.503900e+02
-11 11083     3.875100e+02 -4.957600e+02
-13 11083     4.351801e+02 -3.165997e+01
-14 11083     6.233900e+02 -5.010500e+02
-1 11084     -3.502002e+01 1.647900e+02
-2 11084     -4.219000e+02 -1.849600e+02
-7 11084     -4.269400e+02 1.042000e+02
-8 11084     -2.833200e+02 -1.678800e+02
-13 11084     1.578003e+01 -2.108500e+02
-15 11084     -4.129500e+02 1.923700e+02
-1 11085     2.489600e+02 1.562000e+02
-7 11085     -7.492999e+01 2.580100e+02
-1 11086     5.728600e+02 1.531000e+02
-10 11086     2.077100e+02 4.295700e+02
-1 11087     -3.626300e+02 1.481200e+02
-13 11087     -2.519300e+02 -3.258300e+02
-1 11088     -6.698999e+01 1.316400e+02
-2 11088     -4.182000e+02 -2.226400e+02
-4 11088     -2.295100e+02 -1.637300e+02
-7 11088     -4.357100e+02 6.137000e+01
-10 11088     -4.461900e+02 1.449900e+02
-13 11088     1.070001e+01 -2.470700e+02
-1 11089     1.478800e+02 1.240800e+02
-7 11089     -1.546300e+02 1.865700e+02
-10 11089     -1.574700e+02 2.373100e+02
-13 11089     3.071500e+02 -1.555500e+02
-15 11089     -1.093100e+02 2.473800e+02
-1 11090     5.925000e+02 8.034000e+01
-10 11090     2.610200e+02 3.612200e+02
-1 11091     2.693199e+02 6.835999e+01
-7 11091     -4.760010e+00 1.955500e+02
-10 11091     5.679993e+00 2.292200e+02
-1 11092     2.693199e+02 6.835999e+01
-4 11092     -2.369300e+02 -4.845300e+02
-7 11092     -4.760010e+00 1.955500e+02
-10 11092     5.679993e+00 2.292200e+02
-1 11093     4.786899e+02 5.253998e+01
-7 11093     1.620100e+02 2.585600e+02
-1 11094     3.054000e+02 4.792999e+01
-4 11094     -2.484600e+02 -5.177200e+02
-5 11094     7.909800e+02 -6.007500e+02
-6 11094     9.067999e+01 1.261500e+02
-12 11094     1.137100e+02 1.775000e+02
-15 11094     1.356600e+02 2.350600e+02
-1 11095     3.489800e+02 3.914001e+01
-7 11095     7.639001e+01 2.027900e+02
-1 11096     -1.651700e+02 2.188000e+01
-2 11096     -3.916800e+02 -3.522900e+02
-7 11096     -4.589800e+02 -7.946997e+01
-13 11096     -5.400024e+00 -3.661800e+02
-1 11097     4.007300e+02 1.008002e+01
-7 11097     1.291600e+02 1.975900e+02
-1 11098     -1.644000e+02 2.520020e+00
-7 11098     -4.464000e+02 -9.602002e+01
-13 11098     5.349976e+00 -3.820100e+02
-1 11099     -1.590800e+02 -2.534003e+01
-7 11099     -4.223800e+02 -1.174700e+02
-8 11099     -2.283500e+02 -3.379200e+02
-13 11099     2.645001e+01 -4.032900e+02
-1 11100     4.287500e+02 -3.871002e+01
-7 11100     1.703800e+02 1.662900e+02
-1 11101     -2.105000e+02 -4.034003e+01
-6 11101     -5.447500e+02 -4.034399e+02
-7 11101     -4.638800e+02 -1.555900e+02
-15 11101     -5.098100e+02 -1.589200e+02
-1 11102     -1.876500e+02 -4.225000e+01
-7 11102     -4.401200e+02 -1.468100e+02
-8 11102     -2.397100e+02 -3.634500e+02
-13 11102     1.146997e+01 -4.277200e+02
-1 11103     -3.440100e+02 -7.087000e+01
-7 11103     -5.755700e+02 -2.516000e+02
-1 11104     -6.532200e+02 -8.106000e+01
-4 11104     -4.051100e+02 1.741800e+02
-1 11105     -3.017800e+02 -9.407001e+01
-13 11105     -5.434998e+01 -5.106899e+02
-1 11106     1.409200e+02 -9.402002e+01
-7 11106     -4.423999e+01 -3.619995e+00
-13 11106     4.062500e+02 -3.254900e+02
-1 11107     -4.844600e+02 -9.651001e+01
-15 11107     -8.460900e+02 -3.922800e+02
-1 11108     8.451801e+02 -1.110000e+02
-2 11108     5.239700e+02 3.260999e+01
-6 11108     4.377600e+02 1.971000e+02
-7 11108     4.419100e+02 2.334900e+02
-8 11108     4.881801e+02 -1.470001e+00
-10 11108     5.968800e+02 2.693500e+02
-12 11108     5.211500e+02 2.072000e+02
-13 11108     8.131500e+02 -1.492200e+02
-15 11108     7.990100e+02 2.961700e+02
-1 11109     2.387200e+02 -1.123300e+02
-7 11109     4.910999e+01 2.502002e+01
-13 11109     4.888900e+02 -3.066000e+02
-1 11110     3.641100e+02 -1.130400e+02
-3 11110     2.942500e+02 -3.058500e+02
-6 11110     2.345800e+02 7.869995e+00
-7 11110     1.533800e+02 7.817999e+01
-12 11110     2.604000e+02 5.084003e+01
-1 11111     6.115500e+02 -1.178800e+02
-10 11111     4.038300e+02 1.733400e+02
-15 11111     5.604700e+02 1.807300e+02
-1 11112     -4.966000e+02 -1.194000e+02
-15 11112     -8.483300e+02 -4.298600e+02
-1 11113     3.721000e+02 -1.239600e+02
-6 11113     2.440000e+02 2.929993e+00
-7 11113     1.628700e+02 7.225000e+01
-8 11113     3.658000e+02 -5.539999e+01
-10 11113     1.916400e+02 7.142999e+01
-12 11113     2.711500e+02 4.522998e+01
-1 11114     1.254700e+02 -1.325600e+02
-7 11114     -4.169000e+01 -4.587000e+01
-10 11114     -5.945001e+01 -4.540997e+01
-15 11114     6.510010e+00 -8.096997e+01
-1 11115     5.697500e+02 -1.338700e+02
-7 11115     2.950300e+02 1.328200e+02
-10 11115     3.731400e+02 1.420800e+02
-13 11115     6.946600e+02 -2.298600e+02
-15 11115     5.228000e+02 1.437800e+02
-1 11116     2.294200e+02 -1.488300e+02
-7 11116     6.073999e+01 -9.609985e+00
-1 11117     3.162500e+02 -1.526200e+02
-7 11117     1.295900e+02 2.421002e+01
-1 11118     4.550100e+02 -1.571200e+02
-7 11118     2.354301e+02 7.447998e+01
-1 11119     -5.018700e+02 -1.692800e+02
-7 11119     -6.725400e+02 -4.309500e+02
-15 11119     -8.236400e+02 -4.992000e+02
-1 11120     -4.283100e+02 -2.064700e+02
-7 11120     -5.697800e+02 -4.223200e+02
-1 11121     3.919600e+02 -2.127800e+02
-3 11121     3.649301e+02 -3.817800e+02
-6 11121     3.085200e+02 -7.002002e+01
-7 11121     2.145699e+02 3.630005e+00
-8 11121     4.167700e+02 -1.168800e+02
-1 11122     2.860200e+02 -2.185200e+02
-7 11122     1.367100e+02 -4.588000e+01
-1 11123     1.448400e+02 -2.195200e+02
-6 11123     1.348200e+02 -2.206000e+02
-15 11123     8.156000e+01 -1.754900e+02
-1 11124     2.308000e+02 -2.318400e+02
-7 11124     1.020700e+02 -7.894000e+01
-1 11125     8.301200e+02 -2.579800e+02
-2 11125     5.900601e+02 -9.201001e+01
-7 11125     4.854301e+02 1.103800e+02
-8 11125     5.412600e+02 -1.054300e+02
-13 11125     8.580300e+02 -2.665900e+02
-15 11125     8.504600e+02 1.166000e+02
-1 11126     -6.655500e+02 -2.606400e+02
-4 11126     -5.493400e+02 1.616600e+02
-1 11127     8.475601e+02 -2.621900e+02
-2 11127     6.071801e+02 -8.122998e+01
-7 11127     5.005000e+02 1.154200e+02
-9 11127     3.852600e+02 3.488000e+01
-10 11127     6.556400e+02 1.225000e+02
-13 11127     8.738900e+02 -2.624700e+02
-1 11128     8.475601e+02 -2.621900e+02
-2 11128     6.071801e+02 -8.122998e+01
-8 11128     5.560500e+02 -9.734003e+01
-9 11128     3.852600e+02 3.488000e+01
-12 11128     6.038300e+02 7.815002e+01
-13 11128     8.738900e+02 -2.624700e+02
-1 11129     -3.875300e+02 -2.651000e+02
-10 11129     -5.866600e+02 -4.453500e+02
-15 11129     -6.006500e+02 -5.502300e+02
-1 11130     -1.884200e+02 -2.677100e+02
-6 11130     -2.496000e+02 -5.872500e+02
-15 11130     -3.379700e+02 -4.312600e+02
-1 11131     8.355900e+02 -2.675300e+02
-7 11131     4.927200e+02 1.058200e+02
-8 11131     5.495200e+02 -1.081800e+02
-10 11131     6.458700e+02 1.121300e+02
-13 11131     8.655200e+02 -2.712200e+02
-15 11131     8.607300e+02 1.085800e+02
-1 11132     -1.827300e+02 -2.727000e+02
-15 11132     -3.267300e+02 -4.333700e+02
-1 11133     -2.947800e+02 -2.772800e+02
-15 11133     -4.685900e+02 -5.067000e+02
-1 11134     -1.731700e+02 -2.799500e+02
-6 11134     -2.193100e+02 -5.856100e+02
-7 11134     -2.752400e+02 -3.450300e+02
-15 11134     -3.100400e+02 -4.364399e+02
-1 11135     8.542500e+02 -3.002200e+02
-2 11135     6.331899e+02 -1.051600e+02
-7 11135     5.195699e+02 8.894000e+01
-8 11135     5.773900e+02 -1.178400e+02
-9 11135     4.076899e+02 1.625000e+01
-10 11135     6.766500e+02 8.769000e+01
-1 11136     3.896400e+02 -3.083900e+02
-15 11136     4.117800e+02 -1.551000e+02
-1 11137     5.001600e+02 -3.160800e+02
-15 11137     5.304500e+02 -1.097300e+02
-1 11138     -6.300300e+02 -3.173200e+02
-4 11138     -5.965000e+02 1.283400e+02
-1 11139     -6.790700e+02 -3.182800e+02
-4 11139     -6.013200e+02 1.640300e+02
-1 11140     -6.500000e+02 -3.179400e+02
-4 11140     -5.980900e+02 1.430800e+02
-1 11141     -6.039100e+02 -3.263500e+02
-4 11141     -6.021200e+02 1.073800e+02
-1 11142     4.877500e+02 -3.276300e+02
-10 11142     3.690699e+02 -8.642999e+01
-1 11143     3.174500e+02 -3.595600e+02
-10 11143     2.258900e+02 -1.930900e+02
-15 11143     3.474800e+02 -2.545600e+02
-1 11144     -6.547800e+02 -3.816800e+02
-4 11144     -6.581700e+02 1.384200e+02
-1 11145     -3.403000e+02 -3.884600e+02
-9 11145     -1.029700e+02 -5.663400e+02
-1 11146     -1.728800e+02 -3.871800e+02
-6 11146     -9.795001e+01 -6.760100e+02
-1 11147     -6.816300e+02 -4.244900e+02
-4 11147     -7.023100e+02 1.535900e+02
-1 11148     -1.497600e+02 -4.330800e+02
-6 11148     -2.715997e+01 -6.937300e+02
-7 11148     -1.568800e+02 -4.630400e+02
-1 11149     -2.847700e+02 -4.571000e+02
-6 11149     -1.189400e+02 -8.322900e+02
-1 11150     8.041200e+02 -4.659399e+02
-7 11150     5.686700e+02 -4.917999e+01
-12 11150     7.190300e+02 -9.398999e+01
-1 11151     -2.293700e+02 -4.700200e+02
-4 11151     -7.106500e+02 -2.054100e+02
-6 11151     -5.482001e+01 -7.930900e+02
-7 11151     -2.038200e+02 -5.392800e+02
-10 11151     -2.902200e+02 -5.805400e+02
-1 11152     5.827200e+02 -4.827700e+02
-7 11152     4.368900e+02 -1.510600e+02
-9 11152     4.486600e+02 -1.414600e+02
-12 11152     5.917200e+02 -2.186500e+02
-1 11153     9.475000e+01 -5.345699e+02
-4 11153     -7.524200e+02 -4.804200e+02
-9 11153     3.009600e+02 -3.687900e+02
-1 11154     4.099800e+02 5.872100e+02
-12 11154     -3.050900e+02 6.223100e+02
-1 11155     8.077100e+02 5.784400e+02
-2 11155     -1.650024e+00 4.145600e+02
-3 11155     -1.460000e+02 7.828003e+01
-5 11155     7.482600e+02 9.559998e+00
-6 11155     -1.302200e+02 7.700100e+02
-8 11155     7.934998e+01 3.266400e+02
-9 11155     -1.584700e+02 4.351400e+02
-13 11155     4.617000e+02 3.125400e+02
-14 11155     6.430800e+02 -7.384003e+01
-1 11156     8.650900e+02 5.727700e+02
-2 11156     3.515002e+01 4.186800e+02
-3 11156     -1.116300e+02 8.172998e+01
-6 11156     -8.378000e+01 7.837200e+02
-13 11156     4.974800e+02 3.188900e+02
-14 11156     6.865200e+02 -6.734003e+01
-1 11157     6.441100e+02 5.715000e+02
-2 11157     -1.102300e+02 3.819900e+02
-3 11157     -2.495000e+02 4.658002e+01
-5 11157     6.159800e+02 -2.681000e+01
-6 11157     -2.649700e+02 7.057100e+02
-9 11157     -2.491600e+02 4.027600e+02
-11 11157     3.347000e+02 -1.604800e+02
-13 11157     3.587400e+02 2.758100e+02
-14 11157     5.187500e+02 -1.142500e+02
-1 11158     5.814900e+02 5.680300e+02
-2 11158     -1.507400e+02 3.657300e+02
-3 11158     -2.863900e+02 2.996997e+01
-4 11158     6.157001e+01 -4.718600e+02
-5 11158     5.691100e+02 -4.591998e+01
-6 11158     -3.143500e+02 6.772400e+02
-8 11158     -4.414001e+01 2.855100e+02
-9 11158     -2.835100e+02 3.872600e+02
-13 11158     3.189700e+02 2.598600e+02
-14 11158     4.707500e+02 -1.320700e+02
-1 11159     5.814900e+02 5.680300e+02
-2 11159     -1.507400e+02 3.657300e+02
-3 11159     -2.863900e+02 2.996997e+01
-4 11159     6.157001e+01 -4.718600e+02
-5 11159     5.691100e+02 -4.591998e+01
-9 11159     -2.835100e+02 3.872600e+02
-13 11159     3.189700e+02 2.598600e+02
-14 11159     4.707500e+02 -1.320700e+02
-1 11160     5.814900e+02 5.680300e+02
-2 11160     -1.507400e+02 3.657300e+02
-8 11160     -4.414001e+01 2.855100e+02
-9 11160     -2.835100e+02 3.872600e+02
-13 11160     3.189700e+02 2.598600e+02
-14 11160     4.707500e+02 -1.320700e+02
-1 11161     6.550900e+02 5.568300e+02
-4 11161     6.040997e+01 -5.155699e+02
-5 11161     6.329500e+02 -3.966998e+01
-6 11161     -2.453800e+02 6.941700e+02
-8 11161     1.919983e+00 2.885000e+02
-11 11161     3.471000e+02 -1.689500e+02
-13 11161     3.700800e+02 2.678000e+02
-14 11161     5.329399e+02 -1.240600e+02
-1 11162     6.388700e+02 5.561900e+02
-2 11162     -1.085300e+02 3.654200e+02
-4 11162     5.817999e+01 -5.001801e+02
-5 11162     6.174900e+02 -4.462000e+01
-11 11162     3.348900e+02 -1.727600e+02
-13 11162     3.581500e+02 2.635400e+02
-14 11162     5.186600e+02 -1.290800e+02
-1 11163     6.471300e+02 5.378100e+02
-2 11163     -9.465002e+01 3.500500e+02
-3 11163     -2.340800e+02 1.603003e+01
-4 11163     4.952002e+01 -5.127400e+02
-5 11163     6.310601e+02 -5.895001e+01
-6 11163     -2.443400e+02 6.701200e+02
-8 11163     2.039978e+00 2.732700e+02
-11 11163     3.468500e+02 -1.840700e+02
-13 11163     3.689301e+02 2.525000e+02
-1 11164     6.471300e+02 5.378100e+02
-3 11164     -2.336900e+02 4.463000e+01
-4 11164     4.952002e+01 -5.127400e+02
-6 11164     -2.443400e+02 6.701200e+02
-8 11164     2.039978e+00 2.732700e+02
-11 11164     3.468500e+02 -1.840700e+02
-13 11164     3.689301e+02 2.525000e+02
-1 11165     -1.047000e+02 5.207900e+02
-5 11165     -5.484003e+01 -2.542300e+02
-8 11165     -5.350600e+02 9.067999e+01
-10 11165     -6.914400e+02 5.757600e+02
-12 11165     -8.136800e+02 3.167900e+02
-1 11166     6.372800e+02 5.145700e+02
-2 11166     -9.466998e+01 3.308400e+02
-4 11166     3.696997e+01 -5.092400e+02
-5 11166     6.284800e+02 -8.153998e+01
-6 11166     -2.432400e+02 6.410300e+02
-9 11166     -2.345400e+02 3.588800e+02
-12 11166     -7.634998e+01 6.070200e+02
-13 11166     3.672700e+02 2.330400e+02
-14 11166     5.301400e+02 -1.650200e+02
-1 11167     3.975500e+02 4.892700e+02
-9 11167     -3.786500e+02 2.772400e+02
-11 11167     1.685300e+02 -2.744900e+02
-1 11168     -7.835600e+02 4.805900e+02
-4 11168     -5.212000e+01 2.600100e+02
-1 11169     3.300000e+01 4.634700e+02
-7 11169     -5.205800e+02 4.047900e+02
-11 11169     -1.296200e+02 -3.755400e+02
-12 11169     -6.313300e+02 3.121400e+02
-13 11169     -5.696997e+01 4.944000e+01
-1 11170     6.529500e+02 4.293200e+02
-3 11170     -2.003300e+02 -8.458002e+01
-5 11170     6.623300e+02 -1.580300e+02
-6 11170     -1.951300e+02 5.572400e+02
-7 11170     2.304999e+01 5.809300e+02
-9 11170     -2.010500e+02 2.876200e+02
-11 11170     3.830900e+02 -2.639500e+02
-12 11170     -2.959998e+01 5.288300e+02
-14 11170     5.661899e+02 -2.382500e+02
-1 11171     4.630300e+02 3.675800e+02
-2 11171     -1.792800e+02 1.329900e+02
-7 11171     -1.065300e+02 4.661100e+02
-11 11171     2.541500e+02 -3.579200e+02
-1 11172     4.769000e+02 3.679400e+02
-2 11172     -1.688900e+02 1.376200e+02
-9 11172     -2.893800e+02 1.872700e+02
-1 11173     7.018900e+02 3.654700e+02
-2 11173     -4.349976e+00 1.985600e+02
-6 11173     -1.268000e+02 5.097000e+02
-7 11173     8.173999e+01 5.382900e+02
-8 11173     7.759998e+01 1.549800e+02
-9 11173     -1.528800e+02 2.457000e+02
-11 11173     4.413101e+02 -3.033200e+02
-12 11173     3.670001e+01 4.828800e+02
-13 11173     4.419000e+02 1.390100e+02
-1 11174     -6.258100e+02 3.428600e+02
-4 11174     -1.321900e+02 2.030700e+02
-1 11175     -6.380900e+02 3.422300e+02
-4 11175     -1.324100e+02 2.099100e+02
-1 11176     1.885699e+02 3.423400e+02
-7 11176     -3.288200e+02 3.463700e+02
-13 11176     9.057001e+01 -1.071997e+01
-14 11176     1.859900e+02 -4.560601e+02
-1 11177     4.929000e+02 3.027500e+02
-2 11177     -1.013700e+02 1.003300e+02
-5 11177     5.778300e+02 -3.231600e+02
-6 11177     -2.475100e+02 3.524300e+02
-8 11177     -8.390015e+00 7.142999e+01
-9 11177     -2.277800e+02 1.583300e+02
-13 11177     3.316801e+02 4.047998e+01
-14 11177     4.893900e+02 -4.030400e+02
-1 11178     5.248000e+02 3.024500e+02
-2 11178     -7.633002e+01 1.093400e+02
-6 11178     -2.173700e+02 3.675900e+02
-10 11178     8.734003e+01 5.677400e+02
-1 11179     4.597600e+02 2.934500e+02
-2 11179     -1.195400e+02 8.484998e+01
-5 11179     5.532200e+02 -3.408100e+02
-6 11179     -2.679100e+02 3.275000e+02
-8 11179     -2.381000e+01 5.875000e+01
-9 11179     -2.426600e+02 1.449600e+02
-11 11179     2.738300e+02 -4.220700e+02
-13 11179     3.124399e+02 2.510999e+01
-14 11179     4.650500e+02 -4.217200e+02
-1 11180     -9.820007e+00 2.924700e+02
-7 11180     -4.815000e+02 2.258700e+02
-13 11180     -3.692999e+01 -1.030600e+02
-14 11180     2.195001e+01 -5.679000e+02
-1 11181     5.230601e+02 2.860300e+02
-2 11181     -6.466998e+01 1.002900e+02
-6 11181     -2.044100e+02 3.527100e+02
-9 11181     -1.965500e+02 1.600800e+02
-10 11181     9.345001e+01 5.496200e+02
-12 11181     -5.525000e+01 3.514600e+02
-13 11181     3.607400e+02 3.665002e+01
-14 11181     5.261000e+02 -4.092800e+02
-1 11182     5.366000e+02 2.859800e+02
-6 11182     -1.918300e+02 3.599900e+02
-12 11182     -4.219000e+01 3.569400e+02
-1 11183     5.366000e+02 2.859800e+02
-2 11183     -5.357001e+01 1.050700e+02
-6 11183     -1.918300e+02 3.599900e+02
-9 11183     -1.874500e+02 1.644700e+02
-12 11183     -4.219000e+01 3.569400e+02
-13 11183     3.732100e+02 4.165002e+01
-14 11183     5.423800e+02 -4.028000e+02
-1 11184     -1.051001e+01 2.835100e+02
-7 11184     -4.760900e+02 2.183700e+02
-1 11185     -1.410000e+02 2.671300e+02
-13 11185     -1.290500e+02 -1.605000e+02
-1 11186     4.314399e+02 2.650800e+02
-11 11186     2.603900e+02 -4.536300e+02
-12 11186     -1.167000e+02 2.950600e+02
-15 11186     1.034200e+02 5.465300e+02
-1 11187     4.387400e+02 2.548300e+02
-6 11187     -2.440800e+02 2.803900e+02
-11 11187     2.704700e+02 -4.609400e+02
-12 11187     -1.018600e+02 2.901700e+02
-1 11188     -3.693300e+02 2.113700e+02
-7 11188     -7.907300e+02 -6.890015e+00
-1 11189     5.535200e+02 1.893600e+02
-10 11189     1.725600e+02 4.598800e+02
-11 11189     3.881899e+02 -4.888100e+02
-1 11190     -8.444000e+01 1.809100e+02
-4 11190     -2.007900e+02 -1.433300e+02
-8 11190     -3.341300e+02 -1.749800e+02
-1 11191     1.396700e+02 1.651400e+02
-7 11191     -2.100700e+02 2.055700e+02
-15 11191     -1.590700e+02 2.892800e+02
-1 11192     9.153998e+01 1.606900e+02
-4 11192     -1.958900e+02 -2.965000e+02
-5 11192     4.070900e+02 -5.680200e+02
-7 11192     -2.586900e+02 1.784400e+02
-10 11192     -2.573800e+02 2.482100e+02
-15 11192     -2.198800e+02 2.593700e+02
-1 11193     5.925300e+02 1.301100e+02
-7 11193     1.221600e+02 3.195200e+02
-10 11193     2.378199e+02 4.130100e+02
-1 11194     2.076700e+02 8.259000e+01
-6 11194     -3.060999e+01 9.716998e+01
-7 11194     -6.769000e+01 1.800300e+02
-8 11194     1.541100e+02 2.748001e+01
-10 11194     -6.696997e+01 2.173500e+02
-12 11194     -1.144000e+01 1.517900e+02
-13 11194     3.881100e+02 -1.658300e+02
-15 11194     -5.020020e+00 2.274200e+02
-1 11195     2.385200e+02 8.292001e+01
-3 11195     8.453998e+01 -2.073900e+02
-5 11195     6.999301e+02 -5.871300e+02
-7 11195     -3.839001e+01 1.948300e+02
-8 11195     1.799900e+02 4.175000e+01
-9 11195     3.684998e+01 1.810300e+02
-10 11195     -3.222998e+01 2.312500e+02
-13 11195     4.155300e+02 -1.559400e+02
-15 11195     3.541998e+01 2.438600e+02
-1 11196     1.925400e+02 6.033002e+01
-3 11196     6.059003e+01 -2.476100e+02
-4 11196     -2.469500e+02 -4.279200e+02
-7 11196     -7.188000e+01 1.546900e+02
-8 11196     1.543600e+02 7.549988e+00
-9 11196     1.615002e+01 1.445400e+02
-12 11196     -1.242999e+01 1.226500e+02
-15 11196     -1.262000e+01 1.926600e+02
-1 11197     4.257600e+02 5.401001e+01
-2 11197     3.269500e+02 1.463000e+02
-3 11197     2.172600e+02 -1.678100e+02
-7 11197     1.260900e+02 2.423500e+02
-8 11197     3.062700e+02 7.647000e+01
-15 11197     2.723300e+02 3.011000e+02
-1 11198     2.022800e+02 3.092999e+01
-7 11198     -4.651001e+01 1.340700e+02
-1 11199     2.022800e+02 3.092999e+01
-4 11199     -2.682000e+02 -4.426500e+02
-7 11199     -4.651001e+01 1.340700e+02
-8 11199     1.830700e+02 -7.269989e+00
-12 11199     2.060999e+01 1.000200e+02
-1 11200     3.643199e+02 2.342999e+01
-15 11200     2.190800e+02 2.340000e+02
-1 11201     -2.193500e+02 9.199829e-01
-15 11201     -5.497000e+02 -1.122300e+02
-1 11202     2.621100e+02 -1.378998e+01
-2 11202     2.715900e+02 4.662000e+01
-3 11202     1.745800e+02 -2.615600e+02
-7 11202     2.757001e+01 1.225400e+02
-9 11202     1.170500e+02 1.337500e+02
-10 11202     3.412000e+01 1.395400e+02
-15 11202     1.147500e+02 1.375700e+02
-1 11203     4.629500e+02 -2.490997e+01
-6 11203     2.424000e+02 1.384200e+02
-7 11203     1.881600e+02 1.915700e+02
-12 11203     2.809200e+02 1.803800e+02
-13 11203     6.085000e+02 -1.706300e+02
-1 11204     1.970000e+02 -4.839001e+01
-2 11204     2.358800e+02 -2.100000e+01
-1 11205     3.349399e+02 -4.890997e+01
-7 11205     1.055000e+02 1.224600e+02
-10 11205     1.259500e+02 1.339800e+02
-1 11206     1.965100e+02 -8.934998e+01
-2 11206     2.541100e+02 -6.321997e+01
-3 11206     1.651600e+02 -3.669300e+02
-4 11206     -3.530200e+02 -4.599500e+02
-7 11206     1.090027e+00 2.528003e+01
-13 11206     4.409500e+02 -3.035200e+02
-1 11207     3.861400e+02 -9.237000e+01
-3 11207     2.948900e+02 -2.830200e+02
-13 11207     5.878800e+02 -2.447900e+02
-15 11207     3.018101e+02 1.037700e+02
-1 11208     -5.107200e+02 -9.454999e+01
-4 11208     -4.059200e+02 7.503003e+01
-1 11209     -4.863300e+02 -1.099700e+02
-15 11209     -8.400300e+02 -4.112800e+02
-1 11210     -3.928700e+02 -1.259700e+02
-7 11210     -5.876300e+02 -3.282400e+02
-1 11211     -4.618400e+02 -1.281000e+02
-15 11211     -7.930700e+02 -4.184700e+02
-1 11212     2.905400e+02 -1.380900e+02
-7 11212     1.030800e+02 2.501001e+01
-1 11213     2.893900e+02 -1.490200e+02
-2 11213     3.677600e+02 -6.758002e+01
-3 11213     2.716899e+02 -3.680200e+02
-7 11213     1.075000e+02 1.540002e+01
-10 11213     1.203700e+02 1.153998e+01
-13 11213     5.391500e+02 -3.193400e+02
-15 11213     2.162200e+02 -1.345001e+01
-1 11214     4.711300e+02 -1.559500e+02
-7 11214     2.464900e+02 8.272000e+01
-1 11215     4.607300e+02 -1.698800e+02
-7 11215     2.470800e+02 6.734998e+01
-1 11216     -4.932000e+02 -1.752700e+02
-15 11216     -8.062000e+02 -5.012200e+02
-1 11217     -5.122500e+02 -1.964100e+02
-7 11217     -6.641600e+02 -4.606801e+02
-15 11217     -8.194100e+02 -5.401801e+02
-1 11218     4.562700e+02 -1.971400e+02
-7 11218     2.541700e+02 4.252002e+01
-1 11219     -2.425700e+02 -2.132700e+02
-4 11219     -4.798200e+02 -1.282600e+02
-6 11219     -3.678800e+02 -5.856300e+02
-7 11219     -3.826600e+02 -3.241400e+02
-15 11219     -4.421400e+02 -3.949500e+02
-1 11220     -2.425700e+02 -2.132700e+02
-4 11220     -4.798200e+02 -1.282600e+02
-6 11220     -3.678800e+02 -5.856300e+02
-7 11220     -3.826600e+02 -3.241400e+02
-9 11220     -2.337300e+02 -4.074700e+02
-15 11220     -4.421400e+02 -3.949500e+02
-1 11221     -2.196300e+02 -2.130100e+02
-4 11221     -4.782000e+02 -1.444800e+02
-9 11221     -2.160100e+02 -3.929200e+02
-1 11222     -4.802900e+02 -2.181200e+02
-15 11222     -7.583000e+02 -5.479100e+02
-1 11223     -3.938400e+02 -2.193000e+02
-7 11223     -5.252300e+02 -4.122000e+02
-1 11224     -2.491800e+02 -2.213000e+02
-4 11224     -4.874200e+02 -1.258900e+02
-9 11224     -2.305200e+02 -4.170200e+02
-15 11224     -4.456700e+02 -4.090700e+02
-1 11225     2.776899e+02 -2.245100e+02
-7 11225     1.341300e+02 -5.378998e+01
-1 11226     -4.040100e+02 -2.280700e+02
-7 11226     -5.294600e+02 -4.259400e+02
-1 11227     2.388500e+02 -2.424500e+02
-7 11227     1.150400e+02 -8.416998e+01
-1 11228     -6.119100e+02 -2.550300e+02
-4 11228     -5.405800e+02 1.234400e+02
-1 11229     -3.762000e+02 -2.697400e+02
-7 11229     -4.745500e+02 -4.483700e+02
-10 11229     -5.697800e+02 -4.433400e+02
-15 11229     -5.822000e+02 -5.483900e+02
-1 11230     -4.001400e+02 -2.754600e+02
-7 11230     -4.939700e+02 -4.656600e+02
-15 11230     -6.099700e+02 -5.692600e+02
-1 11231     -4.001400e+02 -2.754600e+02
-7 11231     -4.939700e+02 -4.656600e+02
-1 11232     -1.883500e+02 -2.762400e+02
-15 11232     -3.315500e+02 -4.439000e+02
-1 11233     -1.883500e+02 -2.762400e+02
-6 11233     -2.371300e+02 -5.923900e+02
-15 11233     -3.315500e+02 -4.439000e+02
-1 11234     -1.819600e+02 -2.826800e+02
-6 11234     -2.244100e+02 -5.964301e+02
-15 11234     -3.180900e+02 -4.459301e+02
-1 11235     2.602200e+02 -2.897800e+02
-10 11235     1.501500e+02 -1.468400e+02
-1 11236     -1.969800e+02 -2.945200e+02
-6 11236     -2.265500e+02 -6.191400e+02
-1 11237     7.688000e+02 -2.996300e+02
-7 11237     4.661500e+02 5.788000e+01
-12 11237     5.758700e+02 1.109003e+01
-15 11237     8.070200e+02 3.898999e+01
-1 11238     -3.094200e+02 -3.009600e+02
-15 11238     -4.730700e+02 -5.489800e+02
-1 11239     -3.048900e+02 -3.090300e+02
-15 11239     -4.630000e+02 -5.544399e+02
-1 11240     2.458002e+01 -3.279500e+02
-15 11240     -2.398999e+01 -3.801100e+02
-1 11241     7.960699e+02 -3.438100e+02
-7 11241     5.046500e+02 3.573999e+01
-15 11241     8.596300e+02 1.210022e+00
-1 11242     4.440601e+02 -3.493100e+02
-10 11242     3.402200e+02 -1.282400e+02
-15 11242     4.854200e+02 -1.784100e+02
-1 11243     7.151600e+02 -4.895400e+02
-3 11243     6.199100e+02 -5.454000e+02
-9 11243     4.949100e+02 -9.773999e+01
-1 11244     6.760800e+02 5.649200e+02
-2 11244     -8.312000e+01 3.810300e+02
-3 11244     -2.225300e+02 4.528998e+01
-4 11244     6.631000e+01 -5.270699e+02
-5 11244     6.479301e+02 -2.782001e+01
-6 11244     -2.311300e+02 7.104000e+02
-8 11244     1.140997e+01 2.979200e+02
-9 11244     -2.265200e+02 4.028500e+02
-11 11244     3.602300e+02 -1.588300e+02
-13 11244     3.819600e+02 2.776400e+02
-14 11244     5.470100e+02 -1.128100e+02
-1 11245     7.192400e+02 4.893000e+02
-11 11245     4.140601e+02 -2.044200e+02
-13 11245     4.249100e+02 2.334100e+02
-1 11246     1.318300e+02 4.674100e+02
-13 11246     1.965997e+01 7.992999e+01
-14 11246     1.021100e+02 -3.381000e+02
-1 11247     6.429600e+02 4.121200e+02
-2 11247     -6.016998e+01 2.288800e+02
-3 11247     -2.039300e+02 -1.032000e+02
-5 11247     6.579100e+02 -1.768800e+02
-6 11247     -1.969200e+02 5.345500e+02
-7 11247     1.995001e+01 5.630700e+02
-8 11247     3.047998e+01 1.775300e+02
-9 11247     -2.017100e+02 2.707900e+02
-11 11247     3.800100e+02 -2.793800e+02
-12 11247     -3.128003e+01 5.080000e+02
-14 11247     5.628101e+02 -2.571900e+02
-1 11248     7.451300e+02 3.991600e+02
-2 11248     1.410999e+01 2.410300e+02
-3 11248     -1.317400e+02 -9.082001e+01
-6 11248     -1.057100e+02 5.641400e+02
-8 11248     9.223999e+01 1.881000e+02
-9 11248     -1.388200e+02 2.838700e+02
-12 11248     5.641998e+01 5.304000e+02
-13 11248     4.624900e+02 1.730900e+02
-1 11249     -4.942500e+02 2.409500e+02
-13 11249     -4.270700e+02 -2.893900e+02
-1 11250     4.179399e+02 1.491600e+02
-10 11250     1.085300e+02 3.709500e+02
-1 11251     2.246100e+02 1.392000e+02
-2 11251     1.079300e+02 1.255900e+02
-15 11251     -1.731000e+01 3.045700e+02
-1 11252     6.624500e+02 1.115000e+02
-10 11252     3.126400e+02 4.206900e+02
-1 11253     8.686899e+02 8.238000e+01
-7 11253     3.885800e+02 3.954700e+02
-9 11253     2.392000e+02 2.599800e+02
-10 11253     5.480900e+02 4.701400e+02
-11 11253     6.995200e+02 -4.952300e+02
-13 11253     7.623101e+02 -1.059998e+00
-15 11253     7.366899e+02 5.358300e+02
-1 11254     2.194000e+02 6.816998e+01
-2 11254     1.715000e+02 8.733002e+01
-3 11254     7.865002e+01 -2.262600e+02
-4 11254     -2.408400e+02 -4.476100e+02
-6 11254     -6.119995e+00 9.237000e+01
-7 11254     -5.010999e+01 1.737700e+02
-8 11254     1.722700e+02 2.504001e+01
-9 11254     3.320001e+01 1.637000e+02
-10 11254     -4.773999e+01 2.078000e+02
-12 11254     1.252002e+01 1.466200e+02
-13 11254     4.042300e+02 -1.719700e+02
-1 11255     1.602400e+02 -3.303003e+01
-15 11255     -2.989990e+00 6.091998e+01
-1 11256     8.603199e+02 -4.310999e+01
-2 11256     5.022900e+02 9.641998e+01
-3 11256     3.661700e+02 -2.163100e+02
-6 11256     4.163600e+02 2.671100e+02
-7 11256     4.291801e+02 2.935400e+02
-8 11256     4.713400e+02 5.081000e+01
-9 11256     2.912300e+02 1.804200e+02
-12 11256     5.011000e+02 2.771100e+02
-13 11256     8.014800e+02 -9.373999e+01
-15 11256     7.852700e+02 3.842900e+02
-1 11257     3.606700e+02 -5.257001e+01
-2 11257     3.629000e+02 5.254999e+01
-3 11257     2.590800e+02 -2.545000e+02
-7 11257     1.269200e+02 1.296700e+02
-10 11257     1.520300e+02 1.407500e+02
-13 11257     5.587900e+02 -2.208800e+02
-15 11257     2.537000e+02 1.400900e+02
-1 11258     -5.210600e+02 -7.490997e+01
-4 11258     -3.927700e+02 8.369000e+01
-1 11259     1.531600e+02 -8.089001e+01
-3 11259     1.256900e+02 -3.872200e+02
-7 11259     -4.158002e+01 1.183002e+01
-10 11259     -5.307001e+01 2.113000e+01
-13 11259     4.075300e+02 -3.123100e+02
-15 11259     1.278998e+01 -2.710022e+00
-1 11260     1.531600e+02 -8.089001e+01
-7 11260     -4.158002e+01 1.183002e+01
-15 11260     1.278998e+01 -2.710022e+00
-1 11261     -4.731200e+02 -1.173500e+02
-15 11261     -8.175700e+02 -4.126500e+02
-1 11262     -1.434300e+02 -1.289600e+02
-13 11262     1.040700e+02 -4.804900e+02
-1 11263     6.156000e+01 -1.352700e+02
-3 11263     1.057400e+02 -4.750400e+02
-4 11263     -3.977300e+02 -3.768300e+02
-6 11263     -6.570007e+00 -2.033000e+02
-7 11263     -9.394000e+01 -7.734998e+01
-8 11263     1.706300e+02 -1.927500e+02
-10 11263     -1.238500e+02 -7.671997e+01
-12 11263     -1.054999e+01 -1.520700e+02
-15 11263     -6.902002e+01 -1.179700e+02
-1 11264     -5.197700e+02 -1.445400e+02
-4 11264     -4.447900e+02 7.300000e+01
-1 11265     4.789500e+02 -1.621700e+02
-7 11265     2.552100e+02 7.925000e+01
-1 11266     3.114900e+02 -1.758800e+02
-7 11266     1.402500e+02 3.130005e+00
-1 11267     -5.387800e+02 -1.769000e+02
-4 11267     -4.715300e+02 8.132999e+01
-7 11267     -7.071700e+02 -4.602900e+02
-1 11268     -2.311300e+02 -2.169700e+02
-4 11268     -4.819100e+02 -1.371500e+02
-6 11268     -3.511900e+02 -5.801600e+02
-7 11268     -3.695000e+02 -3.219500e+02
-15 11268     -4.245400e+02 -3.929600e+02
-1 11269     2.483600e+02 -2.330000e+02
-7 11269     1.162700e+02 -7.232001e+01
-1 11270     -3.578500e+02 -2.530800e+02
-7 11270     -4.674700e+02 -4.241500e+02
-10 11270     -5.574300e+02 -4.144600e+02
-15 11270     -5.685200e+02 -5.165100e+02
-1 11271     -2.854600e+02 -2.536100e+02
-15 11271     -4.739600e+02 -4.698101e+02
-1 11272     -2.949700e+02 -2.658700e+02
-7 11272     -3.981700e+02 -3.995800e+02
-15 11272     -4.762900e+02 -4.936300e+02
-1 11273     -2.173000e+02 -2.823200e+02
-6 11273     -2.610300e+02 -6.239500e+02
-9 11273     -1.413400e+02 -4.278600e+02
-15 11273     -3.635800e+02 -4.668900e+02
-1 11274     -2.173000e+02 -2.823200e+02
-6 11274     -2.610300e+02 -6.239500e+02
-9 11274     -1.322700e+02 -4.287800e+02
-15 11274     -3.635800e+02 -4.668900e+02
-1 11275     2.485500e+02 -2.843600e+02
-10 11275     1.358000e+02 -1.468200e+02
-1 11276     7.873800e+02 -3.133900e+02
-7 11276     4.847100e+02 5.381000e+01
-9 11276     3.954301e+02 -9.219971e+00
-10 11276     6.247500e+02 4.816998e+01
-15 11276     8.340300e+02 3.185999e+01
-1 11277     -1.571900e+02 -3.148800e+02
-6 11277     -1.674600e+02 -6.028500e+02
-15 11277     -2.687800e+02 -4.713300e+02
-1 11278     2.299800e+02 -3.205000e+02
-4 11278     -5.402200e+02 -5.379600e+02
-6 11278     2.412600e+02 -2.765200e+02
-12 11278     2.547400e+02 -2.423400e+02
-1 11279     6.492500e+02 -3.463400e+02
-7 11279     4.111801e+02 -2.302002e+01
-1 11280     -3.948000e+02 -4.373400e+02
-4 11280     -6.905000e+02 -7.167999e+01
-1 11281     7.965400e+02 -4.374600e+02
-9 11281     4.833700e+02 -5.287000e+01
-12 11281     6.937500e+02 -7.644000e+01
-1 11282     7.989100e+02 -4.749800e+02
-7 11282     5.691100e+02 -5.695001e+01
-1 11283     6.938700e+02 -5.728400e+02
-7 11283     5.550900e+02 -1.688300e+02
-12 11283     7.348101e+02 -2.249700e+02
-1 11284     7.236200e+02 4.047900e+02
-2 11284     -2.450012e+00 2.422400e+02
-5 11284     7.286700e+02 -1.632500e+02
-6 11284     -1.257900e+02 5.626500e+02
-8 11284     7.878998e+01 1.890300e+02
-9 11284     -1.530200e+02 2.843700e+02
-11 11284     4.443500e+02 -2.664000e+02
-12 11284     3.748999e+01 5.302400e+02
-13 11284     4.475300e+02 1.735400e+02
-1 11285     -1.757000e+02 2.909200e+02
-7 11285     -6.438400e+02 1.546800e+02
-1 11286     5.878600e+02 1.806200e+02
-7 11286     9.187000e+01 3.580100e+02
-10 11286     2.068300e+02 4.628100e+02
-11 11286     4.194500e+02 -4.863900e+02
-13 11286     4.603000e+02 -2.278998e+01
-14 11286     6.555400e+02 -4.906300e+02
-1 11287     1.605300e+02 -1.083002e+01
-15 11287     -1.490002e+01 8.892001e+01
-1 11288     3.403800e+02 -2.362000e+01
-7 11288     9.796997e+01 1.463200e+02
-1 11289     2.789800e+02 -7.427002e+01
-15 11289     1.674000e+02 7.282001e+01
-1 11290     2.789800e+02 -7.427002e+01
-13 11290     5.090500e+02 -2.624100e+02
-15 11290     1.674000e+02 7.282001e+01
-1 11291     -4.734600e+02 -1.048300e+02
-15 11291     -8.261900e+02 -3.956000e+02
-1 11292     -4.950700e+02 -1.617700e+02
-7 11292     -6.720100e+02 -4.193600e+02
-15 11292     -8.196300e+02 -4.843400e+02
-1 11293     -9.179993e+00 -1.673300e+02
-2 11293     5.473999e+01 -3.294800e+02
-6 11293     -1.259100e+02 -3.283300e+02
-7 11293     -1.736900e+02 -1.558600e+02
-8 11293     6.932001e+01 -3.104600e+02
-9 11293     -4.662000e+01 -1.876100e+02
-12 11293     -1.162900e+02 -2.729100e+02
-13 11293     2.691899e+02 -4.536600e+02
-15 11293     -1.580900e+02 -2.002300e+02
-1 11294     -4.401700e+02 -1.827400e+02
-7 11294     -5.972500e+02 -4.050800e+02
-1 11295     3.138199e+02 -1.895200e+02
-7 11295     1.479800e+02 -6.729980e+00
-1 11296     -6.352400e+02 -2.047100e+02
-4 11296     -5.008200e+02 1.469500e+02
-1 11297     2.030400e+02 -2.326500e+02
-7 11297     8.145001e+01 -9.159998e+01
-1 11298     -4.133000e+02 -2.358800e+02
-7 11298     -5.342700e+02 -4.408900e+02
-1 11299     -2.412000e+01 -2.365800e+02
-10 11299     -1.877100e+02 -2.269900e+02
-1 11300     3.109600e+02 -2.631900e+02
-2 11300     4.738700e+02 -1.386700e+02
-7 11300     1.835900e+02 -6.840002e+01
-1 11301     4.376899e+02 -3.294700e+02
-10 11301     3.308300e+02 -1.091300e+02
-15 11301     4.719700e+02 -1.555200e+02
-1 11302     3.929200e+02 -3.806100e+02
-3 11302     4.311700e+02 -5.703300e+02
-7 11302     2.671200e+02 -1.439800e+02
-9 11302     3.348101e+02 -1.219100e+02
-13 11302     6.718600e+02 -4.808700e+02
-1 11303     8.021400e+02 -4.612100e+02
-7 11303     5.634301e+02 -4.376001e+01
-1 11304     5.920300e+02 5.029500e+02
-4 11304     2.744000e+01 -4.844700e+02
-5 11304     5.933199e+02 -1.003900e+02
-6 11304     -2.778900e+02 6.134100e+02
-12 11304     -1.102600e+02 5.842700e+02
-13 11304     3.387000e+02 2.143900e+02
-14 11304     4.963800e+02 -1.880400e+02
-1 11305     3.145500e+02 4.417000e+02
-7 11305     -2.604500e+02 4.824200e+02
-1 11306     4.996500e+02 3.912200e+02
-2 11306     -1.600500e+02 1.698700e+02
-7 11306     -8.590002e+01 4.989400e+02
-8 11306     -5.151001e+01 1.292600e+02
-13 11306     2.987500e+02 1.080400e+02
-14 11306     4.471700e+02 -3.164000e+02
-1 11307     4.996500e+02 3.912200e+02
-2 11307     -1.600500e+02 1.698700e+02
-4 11307     -4.373999e+01 -4.384500e+02
-7 11307     -8.590002e+01 4.989400e+02
-8 11307     -5.151001e+01 1.292600e+02
-9 11307     -2.829100e+02 2.164500e+02
-1 11308     7.150400e+02 3.823400e+02
-5 11308     7.274399e+02 -1.860000e+02
-6 11308     -1.229500e+02 5.336300e+02
-7 11308     8.546997e+01 5.581600e+02
-12 11308     3.959998e+01 5.051300e+02
-13 11308     4.468700e+02 1.517200e+02
-14 11308     6.306200e+02 -2.674500e+02
-1 11309     1.945200e+02 -3.053003e+01
-3 11309     1.326100e+02 -3.137800e+02
-4 11309     -3.112700e+02 -4.529200e+02
-10 11309     -2.971997e+01 9.265002e+01
-1 11310     -5.234500e+02 -1.583400e+02
-15 11310     -8.620900e+02 -4.981300e+02
-1 11311     3.407600e+02 -2.295500e+02
-7 11311     1.844500e+02 -2.834998e+01
-1 11312     4.335500e+02 -2.705700e+02
-3 11312     4.254500e+02 -4.009301e+02
-7 11312     2.723199e+02 -2.396997e+01
-1 11313     -6.429700e+02 -3.160600e+02
-4 11313     -5.968500e+02 1.382200e+02
-1 11314     -6.659000e+02 -3.424700e+02
-4 11314     -6.211800e+02 1.508300e+02
-1 11315     -3.891900e+02 -4.134600e+02
-4 11315     -6.662500e+02 -6.981000e+01
-1 11316     -3.891900e+02 -4.134600e+02
-4 11316     -6.662500e+02 -6.981000e+01
-1 11317     8.104600e+02 -4.429301e+02
-7 11317     5.587600e+02 -3.144000e+01
-1 11318     5.179700e+02 4.679100e+02
-4 11318     3.799988e+00 -4.433300e+02
-5 11318     5.397300e+02 -1.533000e+02
-6 11318     -3.282300e+02 5.440500e+02
-8 11318     -5.869000e+01 1.981600e+02
-1 11319     -6.174900e+02 -2.701500e+02
-4 11319     -5.537900e+02 1.249500e+02
-1 11320     -6.499400e+02 -3.573000e+02
-4 11320     -6.329900e+02 1.381500e+02
-1 11321     1.130900e+02 -3.577200e+02
-4 11321     -5.777800e+02 -4.422100e+02
-12 11321     1.492700e+02 -3.692100e+02
-1 11322     7.103000e+02 4.831700e+02
-2 11322     -3.935999e+01 3.144500e+02
-4 11322     2.620001e+01 -5.565200e+02
-5 11322     6.959000e+02 -9.185999e+01
-6 11322     -1.726600e+02 6.392700e+02
-8 11322     4.810999e+01 2.457500e+02
-9 11322     -1.872600e+02 3.449700e+02
-13 11322     4.178500e+02 2.271100e+02
-14 11322     5.943600e+02 -1.721900e+02
-1 11323     -7.299988e+00 4.382500e+02
-4 11323     -4.589001e+01 -1.493300e+02
-5 11323     5.266998e+01 -3.131200e+02
-8 11323     -4.324700e+02 4.354999e+01
-11 11323     -1.605200e+02 -4.109900e+02
-12 11323     -6.660300e+02 2.719200e+02
-1 11324     7.492600e+02 4.812000e+02
-2 11324     -7.739990e+00 3.199700e+02
-3 11324     -1.506600e+02 -1.712000e+01
-4 11324     2.829999e+01 -5.765900e+02
-5 11324     7.288300e+02 -8.503998e+01
-6 11324     -1.362100e+02 6.526400e+02
-9 11324     -1.596000e+02 3.508100e+02
-11 11324     4.377400e+02 -2.036200e+02
-13 11324     4.471500e+02 2.341100e+02
-14 11324     6.276300e+02 -1.673500e+02
-1 11325     2.656600e+02 -1.464100e+02
-7 11325     8.583002e+01 9.750000e+00
-1 11326     3.214800e+02 -2.010000e+02
-7 11326     1.537700e+02 -1.364001e+01
-1 11327     5.451200e+02 4.103000e+02
-2 11327     -1.328600e+02 1.993900e+02
-8 11327     -2.837000e+01 1.549600e+02
-1 11328     4.261100e+02 -1.995800e+02
-7 11328     2.341100e+02 2.864001e+01
-1 11329     1.132000e+02 5.717300e+02
-7 11329     -4.839000e+02 5.384600e+02
-1 11330     9.176001e+01 4.307700e+02
-8 11330     -3.505700e+02 6.167001e+01
-2 11331     -3.985600e+02 6.101100e+02
-13 11331     1.203700e+02 4.388500e+02
-2 11332     -1.020700e+02 6.029800e+02
-14 11332     5.390100e+02 9.669000e+01
-2 11333     -1.042800e+02 5.994000e+02
-5 11333     6.444301e+02 1.854700e+02
-2 11334     2.489001e+01 5.924100e+02
-14 11334     6.840400e+02 1.011600e+02
-2 11335     -6.031000e+01 5.870600e+02
-3 11335     -1.997000e+02 2.443600e+02
-5 11335     6.945601e+02 1.768800e+02
-11 11335     3.864399e+02 8.440002e+00
-14 11335     5.846400e+02 8.562000e+01
-2 11336     -2.541200e+02 5.845300e+02
-3 11336     -3.814900e+02 2.435300e+02
-4 11336     1.833800e+02 -4.234000e+02
-11 11336     1.892200e+02 -1.479999e+01
-14 11336     3.726300e+02 6.198999e+01
-2 11337     -2.911500e+02 5.838600e+02
-5 11337     4.350300e+02 1.537900e+02
-2 11338     -6.446002e+01 5.808200e+02
-3 11338     -2.039800e+02 2.379300e+02
-5 11338     6.894500e+02 1.706500e+02
-14 11338     5.802800e+02 7.998001e+01
-2 11339     3.402002e+01 5.775500e+02
-11 11339     4.891899e+02 1.342999e+01
-13 11339     5.089500e+02 4.538900e+02
-2 11340     -6.669000e+01 5.720100e+02
-4 11340     1.781500e+02 -5.708199e+02
-2 11341     -2.611500e+02 5.710000e+02
-14 11341     3.645800e+02 4.883002e+01
-2 11342     -6.033002e+01 5.613000e+02
-13 11342     4.156899e+02 4.275500e+02
-2 11343     -1.847200e+02 5.532900e+02
-14 11343     4.450800e+02 4.031000e+01
-2 11344     -3.371800e+02 5.504900e+02
-3 11344     -4.600100e+02 2.132800e+02
-5 11344     3.829500e+02 1.174000e+02
-6 11344     -5.647900e+02 8.643200e+02
-14 11344     2.845400e+02 2.353003e+01
-2 11345     -7.595001e+01 5.503900e+02
-5 11345     6.731300e+02 1.395900e+02
-11 11345     3.712100e+02 -2.246997e+01
-14 11345     5.656600e+02 4.988000e+01
-2 11346     -7.595001e+01 5.503900e+02
-5 11346     6.731300e+02 1.395900e+02
-11 11346     3.712100e+02 -2.246997e+01
-14 11346     5.656600e+02 4.988000e+01
-2 11347     -3.834800e+02 5.499500e+02
-5 11347     3.350500e+02 1.136500e+02
-2 11348     -1.668000e+02 5.501800e+02
-5 11348     5.688101e+02 1.319700e+02
-14 11348     4.648500e+02 4.031000e+01
-2 11349     -1.749900e+02 5.496900e+02
-5 11349     5.587200e+02 1.297200e+02
-2 11350     -1.855300e+02 5.490600e+02
-5 11350     5.471100e+02 1.284200e+02
-14 11350     4.437100e+02 3.692999e+01
-2 11351     -1.855300e+02 5.490600e+02
-14 11351     4.437100e+02 3.692999e+01
-2 11352     3.057100e+02 5.486300e+02
-3 11352     1.599700e+02 2.070700e+02
-6 11352     2.216900e+02 8.453400e+02
-8 11352     3.202300e+02 4.271600e+02
-9 11352     1.111600e+02 5.608100e+02
-13 11352     7.036899e+02 3.458300e+02
-2 11353     -3.769200e+02 5.476600e+02
-5 11353     3.414900e+02 1.117800e+02
-2 11354     8.534003e+01 5.476500e+02
-11 11354     5.475800e+02 -5.219971e+00
-14 11354     7.558300e+02 6.629999e+01
-2 11355     -3.191800e+02 5.461800e+02
-6 11355     -5.413200e+02 8.635500e+02
-8 11355     -1.847600e+02 4.257800e+02
-14 11355     3.029000e+02 2.053003e+01
-2 11356     -3.060900e+02 5.457400e+02
-6 11356     -5.247500e+02 8.652800e+02
-8 11356     -1.734400e+02 4.255900e+02
-2 11357     -3.109300e+02 5.440500e+02
-6 11357     -5.311300e+02 8.621200e+02
-2 11358     2.700400e+02 5.435500e+02
-3 11358     1.253400e+02 2.024100e+02
-6 11358     1.791000e+02 8.457000e+02
-9 11358     7.940997e+01 5.557600e+02
-13 11358     6.724800e+02 3.482300e+02
-2 11359     -2.225300e+02 5.428600e+02
-6 11359     -4.179900e+02 8.803500e+02
-11 11359     2.201500e+02 -4.332001e+01
-13 11359     2.637600e+02 3.934500e+02
-14 11359     4.034700e+02 2.647998e+01
-2 11360     -5.370000e+02 5.419100e+02
-8 11360     -3.647800e+02 4.165000e+02
-2 11361     -4.363400e+02 5.418600e+02
-3 11361     -5.552300e+02 2.070400e+02
-5 11361     2.803500e+02 1.023700e+02
-14 11361     1.850500e+02 7.059998e+00
-2 11362     -2.695700e+02 5.419600e+02
-11 11362     1.740400e+02 -4.772998e+01
-13 11362     2.216700e+02 3.884600e+02
-14 11362     3.536500e+02 2.184003e+01
-2 11363     -3.314900e+02 5.412600e+02
-6 11363     -5.569900e+02 8.532000e+02
-8 11363     -1.955700e+02 4.209200e+02
-2 11364     -1.304400e+02 5.416000e+02
-4 11364     1.595400e+02 -5.126500e+02
-11 11364     3.140200e+02 -3.507001e+01
-13 11364     3.483400e+02 4.035900e+02
-14 11364     5.040900e+02 3.544000e+01
-2 11365     -1.199500e+02 5.414500e+02
-3 11365     -2.554500e+02 2.003200e+02
-4 11365     1.595400e+02 -5.213700e+02
-8 11365     -1.882001e+01 4.260700e+02
-14 11365     5.156600e+02 3.653998e+01
-2 11366     3.735500e+02 5.417200e+02
-6 11366     3.011400e+02 8.276400e+02
-2 11367     -1.792200e+02 5.411800e+02
-5 11367     5.529700e+02 1.211100e+02
-13 11367     3.025800e+02 3.973900e+02
-14 11367     4.498199e+02 2.965997e+01
-2 11368     -2.327900e+02 5.388500e+02
-6 11368     -4.303200e+02 8.731500e+02
-2 11369     -2.378000e+02 5.383700e+02
-6 11369     -4.367500e+02 8.712700e+02
-2 11370     3.019600e+02 5.386100e+02
-3 11370     1.558500e+02 1.979900e+02
-6 11370     2.163000e+02 8.355900e+02
-2 11371     3.073700e+02 5.382300e+02
-3 11371     1.613300e+02 1.977300e+02
-6 11371     2.233700e+02 8.338700e+02
-9 11371     1.118500e+02 5.521000e+02
-2 11372     -5.976900e+02 5.377700e+02
-5 11372     1.233000e+02 8.865002e+01
-2 11373     3.505200e+02 5.373900e+02
-9 11373     1.494900e+02 5.521200e+02
-11 11373     6.649900e+02 -1.209700e+02
-2 11374     -5.406300e+02 5.367000e+02
-3 11374     -6.557700e+02 2.049400e+02
-8 11374     -3.673100e+02 4.123900e+02
-2 11375     -1.503800e+02 5.366400e+02
-14 11375     4.816500e+02 2.850000e+01
-2 11376     2.569100e+02 5.362600e+02
-3 11376     1.126200e+02 1.950500e+02
-6 11376     1.637500e+02 8.383500e+02
-8 11376     2.804100e+02 4.171800e+02
-9 11376     6.797998e+01 5.482900e+02
-2 11377     -1.328100e+02 5.356900e+02
-5 11377     6.059600e+02 1.199500e+02
-2 11378     -1.288400e+02 5.354100e+02
-3 11378     -2.635900e+02 1.958400e+02
-5 11378     6.094000e+02 1.195000e+02
-2 11379     -1.244800e+02 5.349200e+02
-5 11379     6.153300e+02 1.197300e+02
-2 11380     -3.008000e+02 5.339300e+02
-5 11380     4.201700e+02 1.046100e+02
-6 11380     -5.168400e+02 8.509400e+02
-2 11381     -1.412400e+02 5.338400e+02
-3 11381     -2.761600e+02 1.943300e+02
-5 11381     5.956300e+02 1.175300e+02
-11 11381     3.028400e+02 -4.196002e+01
-2 11382     2.819700e+02 5.340900e+02
-6 11382     1.891000e+02 8.317800e+02
-8 11382     2.980700e+02 4.151100e+02
-11 11382     6.084301e+02 -1.102500e+02
-2 11383     3.313300e+02 5.339700e+02
-3 11383     1.837600e+02 1.940300e+02
-6 11383     2.507600e+02 8.250800e+02
-2 11384     -1.655900e+02 5.332500e+02
-6 11384     -3.441400e+02 8.818900e+02
-11 11384     2.774900e+02 -4.484998e+01
-2 11385     2.844301e+02 5.330700e+02
-3 11385     1.394600e+02 1.929500e+02
-6 11385     1.940800e+02 8.278000e+02
-8 11385     3.020400e+02 4.143900e+02
-11 11385     6.111000e+02 -1.136500e+02
-13 11385     6.826200e+02 3.352300e+02
-2 11386     -3.457600e+02 5.320100e+02
-5 11386     3.725900e+02 9.975000e+01
-14 11386     2.748800e+02 6.210022e+00
-2 11387     -3.286600e+02 5.315400e+02
-5 11387     3.901500e+02 1.004300e+02
-6 11387     -5.516700e+02 8.419500e+02
-8 11387     -1.925000e+02 4.133100e+02
-11 11387     1.172600e+02 -6.133002e+01
-14 11387     2.920900e+02 6.719971e+00
-2 11388     -6.177700e+02 5.311500e+02
-5 11388     1.034300e+02 8.177002e+01
-2 11389     2.860200e+02 5.308900e+02
-6 11389     1.988900e+02 8.280600e+02
-8 11389     3.044100e+02 4.136700e+02
-9 11389     9.434003e+01 5.449400e+02
-11 11389     6.149500e+02 -1.133400e+02
-2 11390     -3.330700e+02 5.302300e+02
-6 11390     -5.578900e+02 8.388000e+02
-11 11390     1.128300e+02 -6.275000e+01
-2 11391     -2.441200e+02 5.306000e+02
-3 11391     -3.724000e+02 1.926000e+02
-14 11391     3.803000e+02 1.359998e+01
-2 11392     -2.391000e+02 5.304500e+02
-6 11392     -4.378700e+02 8.612500e+02
-11 11392     2.038400e+02 -5.362000e+01
-14 11392     3.853101e+02 1.413000e+01
-2 11393     -1.284998e+01 5.305900e+02
-14 11393     6.375300e+02 3.817999e+01
-2 11394     -1.363200e+02 5.294800e+02
-5 11394     6.014399e+02 1.133400e+02
-8 11394     -3.265002e+01 4.160300e+02
-13 11394     3.419000e+02 3.925500e+02
-14 11394     4.967400e+02 2.310999e+01
-2 11395     -1.363200e+02 5.294800e+02
-5 11395     6.014399e+02 1.133400e+02
-8 11395     -3.265002e+01 4.160300e+02
-13 11395     3.419000e+02 3.925500e+02
-14 11395     4.967400e+02 2.310999e+01
-2 11396     -5.493200e+02 5.282800e+02
-11 11396     -8.054999e+01 -8.065997e+01
-2 11397     -1.207500e+02 5.279300e+02
-3 11397     -2.566100e+02 1.889200e+02
-5 11397     6.187700e+02 1.141600e+02
-8 11397     -1.975000e+01 4.158900e+02
-14 11397     5.140300e+02 2.410999e+01
-2 11398     4.109900e+02 5.280200e+02
-6 11398     3.438200e+02 8.063800e+02
-2 11399     -4.960200e+02 5.273800e+02
-11 11399     -3.475000e+01 -7.673999e+01
-2 11400     -2.333900e+02 5.276500e+02
-14 11400     3.912100e+02 1.172998e+01
-2 11401     -2.240000e+02 5.277000e+02
-3 11401     -3.538200e+02 1.889000e+02
-6 11401     -4.184800e+02 8.609700e+02
-14 11401     4.008700e+02 1.273999e+01
-2 11402     -1.237900e+02 5.260800e+02
-3 11402     -2.597700e+02 1.861900e+02
-5 11402     6.154200e+02 1.112000e+02
-8 11402     -2.210999e+01 4.137500e+02
-2 11403     -1.237900e+02 5.260800e+02
-5 11403     6.154200e+02 1.112000e+02
-2 11404     5.334399e+02 5.261300e+02
-8 11404     5.018700e+02 4.034100e+02
-2 11405     -2.979400e+02 5.248800e+02
-5 11405     4.227200e+02 9.629999e+01
-6 11405     -5.115200e+02 8.405000e+02
-14 11405     3.237100e+02 3.570007e+00
-2 11406     1.182400e+02 5.249200e+02
-14 11406     7.951801e+02 4.759003e+01
-2 11407     3.259998e+01 5.236700e+02
-5 11407     8.025699e+02 1.227100e+02
-8 11407     1.085200e+02 4.156600e+02
-2 11408     2.814900e+02 5.237100e+02
-6 11408     1.928600e+02 8.188600e+02
-8 11408     3.011000e+02 4.082900e+02
-13 11408     6.806500e+02 3.296100e+02
-2 11409     5.591300e+02 5.203900e+02
-3 11409     4.043900e+02 1.840700e+02
-8 11409     5.241899e+02 3.981000e+02
-2 11410     3.231000e+01 5.202900e+02
-3 11410     -1.142800e+02 1.795900e+02
-5 11410     8.019399e+02 1.180900e+02
-8 11410     1.079600e+02 4.116700e+02
-11 11410     4.879500e+02 -3.603998e+01
-13 11410     5.032500e+02 4.041200e+02
-2 11411     2.529100e+02 5.186900e+02
-3 11411     1.090400e+02 1.790000e+02
-6 11411     1.587600e+02 8.177000e+02
-2 11412     5.881400e+02 5.180000e+02
-3 11412     4.315900e+02 1.824300e+02
-2 11413     -2.186400e+02 5.172300e+02
-6 11413     -4.107800e+02 8.487400e+02
-14 11413     4.063300e+02 3.559998e+00
-2 11414     -2.186400e+02 5.172300e+02
-3 11414     -3.490400e+02 1.790200e+02
-6 11414     -4.107800e+02 8.487400e+02
-2 11415     -2.186400e+02 5.172300e+02
-3 11415     -3.490400e+02 1.790200e+02
-6 11415     -4.107800e+02 8.487400e+02
-11 11415     2.236000e+02 -6.237000e+01
-14 11415     4.063300e+02 3.559998e+00
-2 11416     4.493700e+02 5.171900e+02
-3 11416     3.009000e+02 1.797500e+02
-6 11416     3.756700e+02 7.489500e+02
-8 11416     4.320601e+02 3.967400e+02
-2 11417     -2.519100e+02 5.163500e+02
-5 11417     4.713199e+02 9.151001e+01
-6 11417     -4.524500e+02 8.399400e+02
-14 11417     3.713500e+02 -3.400269e-01
-2 11418     -1.461100e+02 5.161800e+02
-3 11418     -2.805200e+02 1.770700e+02
-4 11418     1.468400e+02 -4.970800e+02
-5 11418     5.888500e+02 1.009400e+02
-6 11418     -3.181300e+02 8.655900e+02
-8 11418     -4.046002e+01 4.057000e+02
-11 11418     2.971300e+02 -5.621002e+01
-13 11418     3.321801e+02 3.810000e+02
-14 11418     4.851500e+02 9.890015e+00
-2 11419     -2.421800e+02 5.155000e+02
-6 11419     -4.400000e+02 8.411800e+02
-14 11419     3.815000e+02 -9.002686e-02
-2 11420     -2.561000e+02 5.142700e+02
-5 11420     4.663300e+02 8.934003e+01
-2 11421     -1.105300e+02 5.131600e+02
-6 11421     -2.730200e+02 8.691100e+02
-8 11421     -1.154999e+01 4.036800e+02
-2 11422     4.979301e+02 5.129300e+02
-3 11422     3.463400e+02 1.762400e+02
-8 11422     4.723800e+02 3.925500e+02
-9 11422     2.789399e+02 5.339100e+02
-2 11423     4.979301e+02 5.129300e+02
-6 11423     4.313600e+02 7.364600e+02
-2 11424     5.068900e+02 5.122500e+02
-3 11424     3.556200e+02 1.757000e+02
-9 11424     2.868700e+02 5.333700e+02
-2 11425     5.517100e+02 5.122800e+02
-9 11425     3.245400e+02 5.347200e+02
-2 11426     4.799200e+02 5.110100e+02
-6 11426     4.109300e+02 7.372300e+02
-2 11427     -3.302900e+02 5.090500e+02
-5 11427     3.864399e+02 7.959003e+01
-6 11427     -5.514000e+02 8.133000e+02
-2 11428     -1.310500e+02 5.087600e+02
-5 11428     6.051300e+02 9.356000e+01
-2 11429     2.630000e+02 5.090900e+02
-6 11429     1.697200e+02 8.043300e+02
-9 11429     7.384998e+01 5.252300e+02
-11 11429     5.948500e+02 -1.280700e+02
-2 11430     5.441000e+02 5.060000e+02
-3 11430     3.903400e+02 1.704800e+02
-2 11431     2.737100e+02 5.051600e+02
-6 11431     1.819900e+02 7.973000e+02
-8 11431     2.928000e+02 3.919300e+02
-9 11431     8.390002e+01 5.221500e+02
-13 11431     6.725000e+02 3.149000e+02
-2 11432     -2.553800e+02 5.046600e+02
-13 11432     2.329399e+02 3.599200e+02
-2 11433     2.647200e+02 5.032500e+02
-6 11433     1.748300e+02 7.943600e+02
-8 11433     2.868300e+02 3.909700e+02
-9 11433     7.745001e+01 5.190600e+02
-13 11433     6.643800e+02 3.145000e+02
-2 11434     5.992400e+02 5.029300e+02
-3 11434     4.419500e+02 1.686400e+02
-2 11435     -1.299100e+02 5.023900e+02
-13 11435     3.452900e+02 3.700300e+02
-2 11436     4.669600e+02 5.018500e+02
-3 11436     3.183400e+02 1.658500e+02
-6 11436     3.951700e+02 7.284600e+02
-2 11437     5.167200e+02 5.021500e+02
-6 11437     4.535601e+02 7.215300e+02
-8 11437     4.890400e+02 3.838600e+02
-9 11437     2.955300e+02 5.252200e+02
-2 11438     1.166998e+01 5.012800e+02
-5 11438     7.742000e+02 9.781000e+01
-8 11438     9.066998e+01 3.967300e+02
-2 11439     -6.403003e+01 5.006700e+02
-6 11439     -2.124400e+02 8.644700e+02
-2 11440     -6.690997e+01 4.990400e+02
-3 11440     -2.068200e+02 1.592800e+02
-5 11440     6.788500e+02 8.923999e+01
-6 11440     -2.162100e+02 8.613100e+02
-11 11440     3.801400e+02 -6.192999e+01
-13 11440     4.051801e+02 3.752100e+02
-14 11440     5.728800e+02 1.270020e+00
-2 11441     -3.180000e+02 4.982400e+02
-5 11441     3.986700e+02 6.998999e+01
-2 11442     -3.384400e+02 4.968000e+02
-3 11442     -4.620300e+02 1.612400e+02
-6 11442     -5.601100e+02 7.957800e+02
-8 11442     -1.997600e+02 3.853400e+02
-2 11443     -2.515400e+02 4.963000e+02
-11 11443     1.911300e+02 -8.098999e+01
-14 11443     3.703400e+02 -1.819000e+01
-2 11444     -1.685400e+02 4.941600e+02
-6 11444     -3.448400e+02 8.310200e+02
-8 11444     -5.887000e+01 3.868900e+02
-2 11445     -3.067700e+02 4.909800e+02
-14 11445     3.125699e+02 -2.796002e+01
-2 11446     4.450800e+02 4.909900e+02
-3 11446     2.975800e+02 1.550900e+02
-8 11446     4.289000e+02 3.751400e+02
-2 11447     -4.014000e+02 4.900800e+02
-5 11447     3.114900e+02 5.721997e+01
-14 11447     2.167000e+02 -3.590002e+01
-2 11448     3.205200e+02 4.896300e+02
-9 11448     1.252400e+02 5.110700e+02
-11 11448     6.417400e+02 -1.565500e+02
-2 11449     8.856000e+01 4.874500e+02
-8 11449     1.549300e+02 3.867800e+02
-11 11449     5.512700e+02 -5.609003e+01
-2 11450     3.265500e+02 4.874400e+02
-6 11450     2.440600e+02 7.680800e+02
-11 11450     6.462200e+02 -1.609400e+02
-2 11451     3.445100e+02 4.877700e+02
-6 11451     2.642500e+02 7.668000e+02
-2 11452     7.898999e+01 4.871200e+02
-14 11452     7.444399e+02 4.630005e+00
-2 11453     3.213700e+02 4.870300e+02
-3 11453     1.755900e+02 1.499900e+02
-6 11453     2.375300e+02 7.685300e+02
-8 11453     3.316000e+02 3.766900e+02
-9 11453     1.250600e+02 5.074500e+02
-11 11453     6.406700e+02 -1.600400e+02
-2 11454     1.181000e+01 4.867900e+02
-6 11454     -1.150400e+02 8.643200e+02
-11 11454     4.646700e+02 -6.437000e+01
-2 11455     1.181000e+01 4.867900e+02
-3 11455     -1.329900e+02 1.476400e+02
-6 11455     -1.150400e+02 8.643200e+02
-11 11455     4.646700e+02 -6.437000e+01
-2 11456     5.622100e+02 4.858300e+02
-3 11456     4.080500e+02 1.530900e+02
-2 11457     8.759003e+01 4.839700e+02
-3 11457     -6.257001e+01 1.446900e+02
-6 11457     -1.737000e+01 8.774700e+02
-11 11457     5.496700e+02 -5.890002e+01
-13 11457     5.556801e+02 3.794900e+02
-14 11457     7.546100e+02 2.400024e+00
-2 11458     -1.210900e+02 4.825400e+02
-5 11458     6.134100e+02 6.731000e+01
-8 11458     -2.054999e+01 3.784400e+02
-14 11458     5.103500e+02 -2.072998e+01
-2 11459     -1.210900e+02 4.825400e+02
-14 11459     5.103500e+02 -2.072998e+01
-2 11460     6.546002e+01 4.823400e+02
-6 11460     -4.627002e+01 8.712100e+02
-2 11461     6.546002e+01 4.823400e+02
-6 11461     -4.627002e+01 8.712100e+02
-2 11462     3.693400e+02 4.826100e+02
-6 11462     2.935500e+02 7.560800e+02
-9 11462     1.665200e+02 5.047500e+02
-2 11463     -6.600400e+02 4.806700e+02
-3 11463     -7.757600e+02 1.541800e+02
-2 11464     8.481000e+01 4.786400e+02
-11 11464     5.462600e+02 -6.354999e+01
-2 11465     -3.225800e+02 4.781300e+02
-5 11465     3.921801e+02 5.090002e+01
-11 11465     1.216900e+02 -1.009700e+02
-2 11466     4.610400e+02 4.782700e+02
-8 11466     4.423500e+02 3.647300e+02
-2 11467     8.753998e+01 4.772200e+02
-3 11467     -6.246002e+01 1.391600e+02
-11 11467     5.495300e+02 -6.384003e+01
-13 11467     5.550500e+02 3.742900e+02
-14 11467     7.542300e+02 -3.179993e+00
-2 11468     1.650000e+01 4.755100e+02
-3 11468     -1.293100e+02 1.368600e+02
-13 11468     4.838500e+02 3.644400e+02
-14 11468     6.681899e+02 -1.342999e+01
-2 11469     4.538800e+02 4.744700e+02
-3 11469     3.070200e+02 1.401900e+02
-6 11469     3.787600e+02 6.970400e+02
-9 11469     2.430100e+02 4.993800e+02
-11 11469     7.079301e+02 -2.336900e+02
-2 11470     -3.055200e+02 4.731100e+02
-5 11470     4.097800e+02 4.752002e+01
-6 11470     -5.163600e+02 7.732100e+02
-14 11470     3.127800e+02 -4.407001e+01
-2 11471     3.699500e+02 4.728400e+02
-6 11471     2.939100e+02 7.442500e+02
-2 11472     3.572200e+02 4.721200e+02
-6 11472     2.789900e+02 7.452100e+02
-8 11472     3.612300e+02 3.644900e+02
-9 11472     1.562200e+02 4.955900e+02
-13 11472     7.406500e+02 2.723300e+02
-2 11473     -2.961900e+02 4.696700e+02
-6 11473     -5.039300e+02 7.712200e+02
-13 11473     1.959399e+02 3.291400e+02
-14 11473     3.221300e+02 -4.659003e+01
-2 11474     -2.961900e+02 4.696700e+02
-6 11474     -5.039300e+02 7.712200e+02
-13 11474     1.959399e+02 3.291400e+02
-14 11474     3.221300e+02 -4.659003e+01
-2 11475     5.844000e+01 4.688800e+02
-3 11475     -8.996002e+01 1.303500e+02
-11 11475     5.159600e+02 -7.462000e+01
-13 11475     5.247800e+02 3.634000e+02
-14 11475     7.178400e+02 -1.569000e+01
-2 11476     -6.163500e+02 4.679000e+02
-3 11476     -7.334800e+02 1.407100e+02
-14 11476     9.989990e+00 -6.838000e+01
-2 11477     -1.266998e+01 4.671800e+02
-3 11477     -1.564100e+02 1.290000e+02
-6 11477     -1.455000e+02 8.333700e+02
-11 11477     4.380900e+02 -8.292999e+01
-13 11477     4.550000e+02 3.545200e+02
-14 11477     6.337500e+02 -2.416998e+01
-2 11478     3.557400e+02 4.663400e+02
-8 11478     3.598400e+02 3.597500e+02
-2 11479     6.144000e+01 4.648900e+02
-6 11479     -5.122998e+01 8.483800e+02
-8 11479     1.320800e+02 3.686300e+02
-14 11479     7.211600e+02 -1.937000e+01
-2 11480     -2.565000e+02 4.640200e+02
-5 11480     4.611700e+02 4.157001e+01
-2 11481     -7.979980e+00 4.628800e+02
-5 11481     7.456600e+02 5.792999e+01
-6 11481     -1.396000e+02 8.286200e+02
-11 11481     4.428700e+02 -8.610999e+01
-2 11482     6.913000e+01 4.630500e+02
-3 11482     -7.973999e+01 1.251400e+02
-14 11482     7.305601e+02 -2.008002e+01
-2 11483     6.913000e+01 4.630500e+02
-3 11483     -7.973999e+01 1.251400e+02
-6 11483     -4.134998e+01 8.471300e+02
-14 11483     7.305601e+02 -2.008002e+01
-2 11484     -6.764100e+02 4.624800e+02
-14 11484     -4.452002e+01 -7.640002e+01
-2 11485     4.613600e+02 4.606500e+02
-3 11485     3.143700e+02 1.279100e+02
-6 11485     3.867800e+02 6.800200e+02
-8 11485     4.423700e+02 3.503600e+02
-2 11486     -2.912600e+02 4.595900e+02
-13 11486     1.994900e+02 3.213800e+02
-14 11486     3.266000e+02 -5.520001e+01
-2 11487     -3.940997e+01 4.586300e+02
-3 11487     -1.817800e+02 1.205600e+02
-14 11487     6.016400e+02 -3.475000e+01
-2 11488     1.425200e+02 4.574500e+02
-6 11488     5.362000e+01 8.578400e+02
-8 11488     2.001300e+02 3.636500e+02
-2 11489     4.136600e+02 4.571900e+02
-6 11489     3.442300e+02 7.188900e+02
-2 11490     4.587900e+02 4.571500e+02
-6 11490     3.834900e+02 6.761900e+02
-2 11491     -6.017800e+02 4.562800e+02
-11 11491     -1.260700e+02 -1.333700e+02
-2 11492     3.022000e+02 4.548500e+02
-6 11492     2.146000e+02 7.318300e+02
-2 11493     -4.312600e+02 4.544900e+02
-5 11493     2.785200e+02 2.367999e+01
-2 11494     -3.409003e+01 4.534500e+02
-5 11494     7.131899e+02 4.587000e+01
-2 11495     -2.565002e+01 4.531200e+02
-6 11495     -1.625800e+02 8.120700e+02
-2 11496     3.293500e+02 4.523800e+02
-6 11496     2.461000e+02 7.250200e+02
-11 11496     6.490000e+02 -1.926200e+02
-2 11497     4.043800e+02 4.523300e+02
-6 11497     3.329200e+02 7.145900e+02
-2 11498     -3.490600e+02 4.519200e+02
-11 11498     9.682001e+01 -1.225000e+02
-2 11499     -3.015002e+01 4.519700e+02
-14 11499     6.120300e+02 -4.067999e+01
-2 11500     -2.638700e+02 4.509800e+02
-5 11500     4.524500e+02 2.879999e+01
-11 11500     1.790200e+02 -1.170200e+02
-14 11500     3.546100e+02 -6.123999e+01
-2 11501     4.864800e+02 4.489100e+02
-6 11501     4.146800e+02 6.623900e+02
-2 11502     1.763900e+02 4.482500e+02
-6 11502     9.759003e+01 8.538200e+02
-2 11503     -4.643200e+02 4.475400e+02
-3 11503     -5.850900e+02 1.164700e+02
-5 11503     2.444500e+02 1.609998e+01
-2 11504     4.598000e+02 4.475600e+02
-6 11504     3.843900e+02 6.646700e+02
-8 11504     4.409800e+02 3.395900e+02
-9 11504     2.476801e+02 4.772200e+02
-2 11505     -1.739200e+02 4.459300e+02
-4 11505     1.070600e+02 -4.655500e+02
-6 11505     -3.487200e+02 7.701200e+02
-8 11505     -6.378998e+01 3.487300e+02
-9 11505     -3.071500e+02 4.585000e+02
-11 11505     2.675699e+02 -1.138900e+02
-2 11506     3.589700e+02 4.456300e+02
-6 11506     2.801700e+02 7.125000e+02
-2 11507     5.892500e+02 4.456600e+02
-6 11507     5.323199e+02 6.437400e+02
-2 11508     -2.592500e+02 4.435500e+02
-3 11508     -3.882800e+02 1.085200e+02
-6 11508     -4.552500e+02 7.467100e+02
-14 11508     3.590699e+02 -6.735999e+01
-2 11509     2.919500e+02 4.437600e+02
-6 11509     2.025000e+02 7.197800e+02
-9 11509     1.008000e+02 4.690100e+02
-2 11510     6.261100e+02 4.433900e+02
-6 11510     5.743700e+02 6.356000e+02
-8 11510     5.791300e+02 3.334800e+02
-9 11510     3.887300e+02 4.771400e+02
-2 11511     -2.549988e+00 4.405900e+02
-3 11511     -1.476500e+02 1.024300e+02
-14 11511     6.427100e+02 -5.015997e+01
-2 11512     -1.885400e+02 4.397800e+02
-9 11512     -3.192200e+02 4.521700e+02
-11 11512     2.532700e+02 -1.206900e+02
-2 11513     -4.373700e+02 4.393800e+02
-5 11513     2.709600e+02 1.017999e+01
-2 11514     -3.499900e+02 4.390800e+02
-5 11514     3.598700e+02 1.337000e+01
-6 11514     -5.683200e+02 7.215500e+02
-2 11515     -3.499900e+02 4.390800e+02
-6 11515     -5.683200e+02 7.215500e+02
-2 11516     -2.642200e+02 4.384100e+02
-14 11516     3.533800e+02 -7.238000e+01
-2 11517     -2.642200e+02 4.384100e+02
-14 11517     3.533800e+02 -7.238000e+01
-2 11518     -2.642200e+02 4.384100e+02
-3 11518     -3.933300e+02 1.035400e+02
-14 11518     3.533800e+02 -7.238000e+01
-2 11519     -2.706200e+02 4.378600e+02
-3 11519     -3.990300e+02 1.027700e+02
-8 11519     -1.440400e+02 3.393800e+02
-2 11520     -6.555000e+02 4.373100e+02
-5 11520     6.050000e+01 -6.799927e-01
-2 11521     -6.555000e+02 4.373100e+02
-5 11521     6.050000e+01 -6.799927e-01
-2 11522     -3.592600e+02 4.375400e+02
-5 11522     3.500900e+02 1.157001e+01
-6 11522     -5.798700e+02 7.175000e+02
-11 11522     8.646997e+01 -1.334400e+02
-2 11523     1.969200e+02 4.365600e+02
-3 11523     3.927002e+01 1.001000e+02
-6 11523     1.246100e+02 8.444100e+02
-2 11524     -3.560200e+02 4.359200e+02
-6 11524     -5.754400e+02 7.160900e+02
-2 11525     -3.560200e+02 4.359200e+02
-6 11525     -5.754400e+02 7.160900e+02
-2 11526     5.515400e+02 4.349500e+02
-6 11526     4.885100e+02 6.368200e+02
-2 11527     6.367800e+02 4.341800e+02
-6 11527     5.859700e+02 6.230800e+02
-2 11528     -4.721600e+02 4.325500e+02
-5 11528     2.353300e+02 2.719971e+00
-14 11528     1.435800e+02 -9.059003e+01
-2 11529     -4.721600e+02 4.325500e+02
-3 11529     -5.928800e+02 1.019400e+02
-14 11529     1.435800e+02 -9.059003e+01
-2 11530     -3.300500e+02 4.323400e+02
-6 11530     -5.424400e+02 7.176200e+02
-8 11530     -1.924500e+02 3.339400e+02
-2 11531     -2.576600e+02 4.324700e+02
-5 11531     4.573500e+02 1.198999e+01
-6 11531     -4.524200e+02 7.338800e+02
-8 11531     -1.330100e+02 3.366800e+02
-11 11531     1.842000e+02 -1.303100e+02
-14 11531     3.598800e+02 -7.757001e+01
-2 11532     4.812000e+01 4.329200e+02
-6 11532     -6.745001e+01 8.044200e+02
-2 11533     -3.725700e+02 4.319800e+02
-3 11533     -4.964200e+02 9.935999e+01
-5 11533     3.360500e+02 5.890015e+00
-11 11533     7.434003e+01 -1.388800e+02
-2 11534     -5.821002e+01 4.320900e+02
-4 11534     9.437000e+01 -5.553000e+02
-5 11534     6.822000e+02 2.334003e+01
-6 11534     -2.020700e+02 7.785500e+02
-8 11534     3.257001e+01 3.395700e+02
-11 11534     3.883800e+02 -1.157800e+02
-2 11535     5.085999e+01 4.318700e+02
-3 11535     -9.692999e+01 9.475000e+01
-5 11535     8.151300e+02 2.990997e+01
-6 11535     -6.423999e+01 8.028000e+02
-11 11535     5.069700e+02 -1.069500e+02
-13 11535     5.140601e+02 3.312400e+02
-14 11535     7.064600e+02 -5.313000e+01
-2 11536     -6.613600e+02 4.297800e+02
-14 11536     -3.335999e+01 -1.027300e+02
-2 11537     9.791998e+01 4.298400e+02
-6 11537     -4.039978e+00 8.116900e+02
-2 11538     -7.890997e+01 4.288400e+02
-13 11538     3.887300e+02 3.174800e+02
-2 11539     -6.187000e+01 4.290400e+02
-3 11539     -2.017700e+02 9.196002e+01
-5 11539     6.783000e+02 2.002002e+01
-6 11539     -2.061500e+02 7.739900e+02
-14 11539     5.752100e+02 -6.523999e+01
-2 11540     -6.187000e+01 4.290400e+02
-6 11540     -2.061500e+02 7.739900e+02
-14 11540     5.752100e+02 -6.523999e+01
-2 11541     6.248101e+02 4.288400e+02
-6 11541     5.719200e+02 6.190400e+02
-8 11541     5.780300e+02 3.215500e+02
-2 11542     -3.534800e+02 4.284800e+02
-5 11542     3.559399e+02 4.090027e+00
-8 11542     -2.113800e+02 3.307900e+02
-2 11543     -6.559998e+01 4.278200e+02
-3 11543     -2.060200e+02 9.082001e+01
-4 11543     9.238000e+01 -5.484200e+02
-5 11543     6.731600e+02 1.842999e+01
-6 11543     -2.114700e+02 7.713200e+02
-14 11543     5.700601e+02 -6.701001e+01
-2 11544     -3.520700e+02 4.255800e+02
-5 11544     3.570900e+02 1.000000e+00
-6 11544     -5.692200e+02 7.043900e+02
-8 11544     -2.108100e+02 3.282600e+02
-2 11545     -3.520700e+02 4.255800e+02
-3 11545     -4.772600e+02 9.245001e+01
-5 11545     3.570900e+02 1.000000e+00
-6 11545     -5.692200e+02 7.043900e+02
-8 11545     -2.108100e+02 3.282600e+02
-2 11546     -6.291998e+01 4.253200e+02
-3 11546     -2.035100e+02 8.871997e+01
-5 11546     6.759399e+02 1.558002e+01
-6 11546     -2.077500e+02 7.681800e+02
-13 11546     4.038101e+02 3.154000e+02
-14 11546     5.729100e+02 -6.921002e+01
-2 11547     3.293800e+02 4.254800e+02
-3 11547     1.846800e+02 9.233002e+01
-6 11547     2.458900e+02 6.926000e+02
-8 11547     3.392900e+02 3.272700e+02
-9 11547     1.342000e+02 4.548400e+02
-13 11547     7.110200e+02 2.370100e+02
-2 11548     3.147300e+02 4.238200e+02
-3 11548     1.699100e+02 9.023999e+01
-6 11548     2.280700e+02 6.921100e+02
-9 11548     1.208200e+02 4.521700e+02
-2 11549     -5.005500e+02 4.233700e+02
-5 11549     2.065900e+02 -6.919983e+00
-2 11550     -3.426300e+02 4.223500e+02
-3 11550     -4.675800e+02 9.160999e+01
-5 11550     3.660900e+02 -1.950012e+00
-11 11550     1.023900e+02 -1.426200e+02
-13 11550     1.544900e+02 2.906600e+02
-2 11551     -2.941100e+02 4.211300e+02
-14 11551     3.212100e+02 -9.003998e+01
-2 11552     -4.672998e+01 4.208600e+02
-14 11552     5.912300e+02 -7.172998e+01
-2 11553     -4.672998e+01 4.208600e+02
-14 11553     5.912300e+02 -7.172998e+01
-2 11554     -6.312000e+01 4.199900e+02
-4 11554     8.896002e+01 -5.501300e+02
-8 11554     2.846997e+01 3.300100e+02
-9 11554     -2.109100e+02 4.383600e+02
-11 11554     3.831500e+02 -1.245300e+02
-2 11555     4.522200e+02 4.196800e+02
-3 11555     3.068800e+02 8.947998e+01
-6 11555     3.740500e+02 6.333900e+02
-9 11555     2.415500e+02 4.527500e+02
-2 11556     -3.840400e+02 4.184500e+02
-14 11556     2.293900e+02 -9.819000e+01
-2 11557     -5.789978e+00 4.153200e+02
-3 11557     -1.501200e+02 7.901001e+01
-13 11557     4.571801e+02 3.121300e+02
-2 11558     -6.370001e+01 4.142500e+02
-3 11558     -2.045600e+02 7.815997e+01
-5 11558     6.739900e+02 5.409973e+00
-6 11558     -2.077900e+02 7.552100e+02
-2 11559     2.657500e+02 4.121200e+02
-6 11559     1.714100e+02 6.858000e+02
-2 11560     3.945200e+02 4.120400e+02
-3 11560     2.466700e+02 8.033002e+01
-6 11560     3.188100e+02 6.660500e+02
-9 11560     1.893900e+02 4.440600e+02
-2 11561     -5.290800e+02 4.113200e+02
-5 11561     1.775800e+02 -1.881000e+01
-8 11561     -3.564200e+02 3.129200e+02
-14 11561     8.746002e+01 -1.121800e+02
-2 11562     5.305400e+02 4.115900e+02
-8 11562     4.992200e+02 3.088200e+02
-9 11562     3.088800e+02 4.480900e+02
-2 11563     3.242600e+02 4.089300e+02
-6 11563     2.383400e+02 6.722200e+02
-2 11564     -5.627200e+02 4.080500e+02
-5 11564     1.451000e+02 -2.253003e+01
-14 11564     5.566998e+01 -1.165200e+02
-2 11565     -6.702002e+01 4.076100e+02
-6 11565     -2.135500e+02 7.456000e+02
-14 11565     5.663199e+02 -8.601001e+01
-2 11566     -3.535200e+02 4.067500e+02
-3 11566     -4.788000e+02 7.415002e+01
-5 11566     3.535100e+02 -1.632001e+01
-6 11566     -5.687900e+02 6.807000e+02
-11 11566     9.153998e+01 -1.569000e+02
-2 11567     4.024000e+02 4.063600e+02
-6 11567     3.291900e+02 6.582600e+02
-8 11567     3.975600e+02 3.089800e+02
-9 11567     1.976400e+02 4.383200e+02
-13 11567     7.723300e+02 2.076100e+02
-2 11568     4.524800e+02 4.053700e+02
-6 11568     3.736500e+02 6.158600e+02
-8 11568     4.341500e+02 3.039700e+02
-9 11568     2.418600e+02 4.398900e+02
-11 11568     7.058800e+02 -2.981500e+02
-2 11569     5.590000e+02 4.048400e+02
-6 11569     4.951300e+02 6.003500e+02
-7 11569     5.141200e+02 5.758500e+02
-8 11569     5.222900e+02 3.023100e+02
-12 11569     5.757100e+02 6.110400e+02
-2 11570     5.686500e+02 4.043100e+02
-6 11570     5.064500e+02 5.985500e+02
-2 11571     5.686500e+02 4.043100e+02
-6 11571     5.064500e+02 5.985500e+02
-2 11572     -5.798800e+02 4.036100e+02
-3 11572     -6.998300e+02 7.615997e+01
-5 11572     1.279500e+02 -2.684998e+01
-12 11572     -6.548700e+02 6.175400e+02
-2 11573     -5.798800e+02 4.036100e+02
-3 11573     -6.998300e+02 7.615997e+01
-5 11573     1.279500e+02 -2.684998e+01
-12 11573     -6.548700e+02 6.175400e+02
-2 11574     -5.752500e+02 4.034200e+02
-8 11574     -3.941900e+02 3.056200e+02
-2 11575     -3.671100e+02 4.009300e+02
-6 11575     -5.849200e+02 6.715800e+02
-2 11576     -1.035700e+02 4.011100e+02
-5 11576     6.257500e+02 -1.009998e+01
-2 11577     5.239600e+02 3.993900e+02
-8 11577     4.936899e+02 2.988800e+02
-9 11577     3.045699e+02 4.374000e+02
-12 11577     5.375699e+02 6.080000e+02
-2 11578     4.972300e+02 3.977700e+02
-6 11578     4.242100e+02 6.012400e+02
-12 11578     5.072000e+02 6.088000e+02
-2 11579     6.388600e+02 3.960100e+02
-6 11579     5.856300e+02 5.791800e+02
-2 11580     -1.570200e+02 3.956800e+02
-5 11580     5.642300e+02 -1.796997e+01
-9 11580     -2.901400e+02 4.143600e+02
-2 11581     -2.595600e+02 3.949700e+02
-14 11581     3.558101e+02 -1.116200e+02
-2 11582     3.840027e+00 3.947300e+02
-9 11582     -1.530800e+02 4.173600e+02
-13 11582     4.654900e+02 2.960000e+02
-2 11583     -6.517400e+02 3.935900e+02
-5 11583     6.035999e+01 -3.745001e+01
-2 11584     -6.638600e+02 3.928600e+02
-5 11584     4.889001e+01 -3.890002e+01
-12 11584     -7.507100e+02 5.929300e+02
-2 11585     -5.756900e+02 3.924800e+02
-12 11585     -6.488000e+02 6.055700e+02
-2 11586     5.469301e+02 3.922200e+02
-3 11586     3.976400e+02 6.577002e+01
-6 11586     4.806801e+02 5.873800e+02
-9 11586     3.232200e+02 4.313900e+02
-12 11586     5.618700e+02 5.972000e+02
-2 11587     -5.995500e+02 3.915200e+02
-11 11587     -1.263700e+02 -1.778700e+02
-2 11588     -5.832600e+02 3.911500e+02
-8 11588     -4.007800e+02 2.958200e+02
-2 11589     -5.832600e+02 3.911500e+02
-8 11589     -4.007800e+02 2.958200e+02
-2 11590     2.620900e+02 3.909400e+02
-9 11590     7.594000e+01 4.224500e+02
-14 11590     8.826400e+02 -1.912300e+02
-2 11591     -2.506400e+02 3.903700e+02
-3 11591     -3.816200e+02 5.650000e+01
-5 11591     4.607000e+02 -2.691998e+01
-14 11591     3.645300e+02 -1.153700e+02
-2 11592     -3.729980e+00 3.904000e+02
-6 11592     -1.325200e+02 7.392700e+02
-2 11593     -3.729980e+00 3.904000e+02
-6 11593     -1.325200e+02 7.392700e+02
-2 11594     1.004500e+02 3.898200e+02
-6 11594     -4.500122e-01 7.620100e+02
-2 11595     -2.509400e+02 3.863100e+02
-5 11595     4.599301e+02 -3.063000e+01
-6 11595     -4.402800e+02 6.792100e+02
-8 11595     -1.277200e+02 2.997400e+02
-14 11595     3.641600e+02 -1.190200e+02
-2 11596     5.244500e+02 3.851000e+02
-3 11596     3.764100e+02 5.869000e+01
-7 11596     4.797100e+02 5.631000e+02
-8 11596     4.935000e+02 2.865000e+02
-2 11597     -4.042900e+02 3.842600e+02
-3 11597     -5.283500e+02 5.301001e+01
-14 11597     2.069100e+02 -1.294400e+02
-2 11598     -4.225700e+02 3.841600e+02
-5 11598     2.810200e+02 -3.923999e+01
-12 11598     -4.684200e+02 6.203500e+02
-14 11598     1.892300e+02 -1.304500e+02
-2 11599     -5.493700e+02 3.835600e+02
-5 11599     1.555800e+02 -4.342999e+01
-11 11599     -8.502002e+01 -1.819900e+02
-12 11599     -6.169700e+02 6.006000e+02
-2 11600     -5.364300e+02 3.837000e+02
-12 11600     -6.018900e+02 6.027800e+02
-2 11601     -3.267000e+02 3.828700e+02
-6 11601     -5.335500e+02 6.584900e+02
-2 11602     -7.365000e+02 3.807700e+02
-5 11602     -1.753998e+01 -5.040997e+01
-2 11603     5.076801e+02 3.809400e+02
-7 11603     4.640601e+02 5.624400e+02
-2 11604     -3.485900e+02 3.807000e+02
-11 11604     9.490002e+01 -1.754700e+02
-2 11605     -6.471002e+01 3.806600e+02
-6 11605     -2.079200e+02 7.134100e+02
-9 11605     -2.105300e+02 4.028000e+02
-14 11605     5.681700e+02 -1.118500e+02
-2 11606     -3.364400e+02 3.802100e+02
-3 11606     -4.632000e+02 4.741998e+01
-6 11606     -5.452300e+02 6.525100e+02
-8 11606     -1.980200e+02 2.924400e+02
-14 11606     2.749301e+02 -1.299600e+02
-2 11607     2.876100e+02 3.786700e+02
-6 11607     1.956600e+02 6.424500e+02
-2 11608     -6.781600e+02 3.768300e+02
-14 11608     -5.194000e+01 -1.478600e+02
-2 11609     -7.898300e+02 3.747700e+02
-8 11609     -5.684400e+02 2.782100e+02
-11 11609     -2.778100e+02 -1.951300e+02
-2 11610     -6.044700e+02 3.749700e+02
-5 11610     1.023400e+02 -5.206000e+01
-8 11610     -4.181400e+02 2.826300e+02
-12 11610     -6.800300e+02 5.835400e+02
-2 11611     1.026300e+02 3.751400e+02
-3 11611     -4.815002e+01 4.002002e+01
-9 11611     -6.846002e+01 4.033400e+02
-11 11611     5.654800e+02 -1.490700e+02
-14 11611     7.662400e+02 -1.046200e+02
-2 11612     1.283100e+02 3.746400e+02
-14 11612     7.983500e+02 -1.028400e+02
-2 11613     -6.544300e+02 3.738700e+02
-5 11613     5.589001e+01 -5.494000e+01
-2 11614     -3.215000e+02 3.734700e+02
-5 11614     3.837800e+02 -4.556000e+01
-6 11614     -5.261500e+02 6.484900e+02
-2 11615     -2.406900e+02 3.732700e+02
-5 11615     4.698300e+02 -4.259998e+01
-6 11615     -4.263000e+02 6.658300e+02
-14 11615     3.739700e+02 -1.302700e+02
-2 11616     -2.263000e+02 3.735200e+02
-8 11616     -1.068900e+02 2.894700e+02
-9 11616     -3.487500e+02 3.925200e+02
-2 11617     4.934200e+02 3.735500e+02
-6 11617     4.188700e+02 5.734200e+02
-8 11617     4.679100e+02 2.773800e+02
-2 11618     1.002800e+02 3.730400e+02
-9 11618     -7.046997e+01 4.008000e+02
-11 11618     5.626600e+02 -1.515300e+02
-13 11618     5.582400e+02 2.871800e+02
-14 11618     7.629900e+02 -1.069700e+02
-2 11619     -3.789400e+02 3.724800e+02
-3 11619     -5.037500e+02 4.084998e+01
-5 11619     3.238600e+02 -4.890002e+01
-12 11619     -4.163200e+02 6.138900e+02
-14 11619     2.316600e+02 -1.389300e+02
-2 11620     1.049600e+02 3.720200e+02
-3 11620     -4.628998e+01 3.637000e+01
-8 11620     1.677600e+02 2.941600e+02
-9 11620     -6.690002e+01 4.003000e+02
-11 11620     5.679200e+02 -1.521900e+02
-13 11620     5.630800e+02 2.861900e+02
-14 11620     7.688000e+02 -1.081100e+02
-2 11621     5.184301e+02 3.709000e+02
-3 11621     3.714399e+02 4.521997e+01
-8 11621     4.883300e+02 2.749700e+02
-9 11621     2.991899e+02 4.127400e+02
-2 11622     -2.465200e+02 3.703500e+02
-5 11622     4.633300e+02 -4.603003e+01
-6 11622     -4.330700e+02 6.606700e+02
-14 11622     3.679100e+02 -1.336100e+02
-2 11623     -3.954900e+02 3.702500e+02
-12 11623     -4.353900e+02 6.092500e+02
-2 11624     -3.854000e+02 3.697900e+02
-8 11624     -2.378700e+02 2.825300e+02
-11 11624     6.094000e+01 -1.859300e+02
-12 11624     -4.238500e+02 6.094200e+02
-2 11625     -3.935100e+02 3.694100e+02
-5 11625     3.093000e+02 -5.185999e+01
-2 11626     -7.775600e+02 3.679900e+02
-11 11626     -2.686400e+02 -1.991900e+02
-2 11627     -7.465400e+02 3.670000e+02
-8 11627     -5.335600e+02 2.732100e+02
-2 11628     -1.265400e+02 3.660700e+02
-9 11628     -2.626800e+02 3.889900e+02
-14 11628     4.972400e+02 -1.301800e+02
-2 11629     8.695001e+01 3.659500e+02
-13 11629     5.431700e+02 2.799900e+02
-2 11630     -5.799988e+00 3.637300e+02
-3 11630     -1.503800e+02 2.835999e+01
-11 11630     4.424100e+02 -1.666200e+02
-13 11630     4.529500e+02 2.699000e+02
-14 11630     6.342300e+02 -1.237900e+02
-2 11631     -2.859200e+02 3.641000e+02
-5 11631     4.201600e+02 -5.277002e+01
-2 11632     -2.265300e+02 3.641300e+02
-6 11632     -4.086200e+02 6.576100e+02
-8 11632     -1.070300e+02 2.820200e+02
-9 11632     -3.485700e+02 3.841200e+02
-2 11633     9.915997e+01 3.642500e+02
-9 11633     -7.159998e+01 3.935800e+02
-11 11633     5.605699e+02 -1.592000e+02
-2 11634     6.348400e+02 3.638900e+02
-3 11634     4.815200e+02 4.178003e+01
-12 11634     6.576100e+02 5.556800e+02
-2 11635     -3.098100e+02 3.635200e+02
-5 11635     3.950800e+02 -5.431000e+01
-12 11635     -3.342300e+02 6.148600e+02
-2 11636     -2.346000e+02 3.633700e+02
-6 11636     -4.177700e+02 6.547100e+02
-11 11636     2.050200e+02 -1.826700e+02
-2 11637     -2.346000e+02 3.633700e+02
-6 11637     -4.177700e+02 6.547100e+02
-2 11638     1.457700e+02 3.634000e+02
-8 11638     2.030900e+02 2.886100e+02
-9 11638     -3.191998e+01 3.941500e+02
-14 11638     8.202200e+02 -1.126300e+02
-2 11639     -3.225600e+02 3.630500e+02
-6 11639     -5.265800e+02 6.355600e+02
-12 11639     -3.488500e+02 6.125400e+02
-2 11640     -3.320100e+02 3.623100e+02
-12 11640     -3.600700e+02 6.103500e+02
-2 11641     1.013900e+02 3.621700e+02
-6 11641     1.289978e+00 7.283600e+02
-9 11641     -6.946002e+01 3.915600e+02
-11 11641     5.634500e+02 -1.609200e+02
-14 11641     7.638900e+02 -1.180500e+02
-2 11642     -2.460400e+02 3.608700e+02
-3 11642     -3.769000e+02 2.740002e+01
-12 11642     -2.582200e+02 6.218700e+02
-2 11643     -2.460400e+02 3.608700e+02
-3 11643     -3.769000e+02 2.740002e+01
-5 11643     4.632200e+02 -5.453003e+01
-12 11643     -2.582200e+02 6.218700e+02
-2 11644     5.001600e+02 3.609700e+02
-6 11644     4.250300e+02 5.582900e+02
-9 11644     2.833500e+02 4.037600e+02
-12 11644     5.083600e+02 5.659300e+02
-2 11645     -3.927700e+02 3.600800e+02
-5 11645     3.087500e+02 -5.996002e+01
-12 11645     -4.315400e+02 5.990400e+02
-2 11646     -1.236500e+02 3.601600e+02
-4 11646     5.765997e+01 -4.920400e+02
-5 11646     5.989200e+02 -5.006000e+01
-6 11646     -2.804600e+02 6.767100e+02
-11 11646     3.179399e+02 -1.765400e+02
-13 11646     3.431100e+02 2.580500e+02
-2 11647     6.444000e+01 3.575000e+02
-5 11647     8.232000e+02 -4.519000e+01
-6 11647     -4.628003e+01 7.137600e+02
-8 11647     1.342300e+02 2.818400e+02
-9 11647     -1.004800e+02 3.870600e+02
-2 11648     2.943300e+02 3.568800e+02
-9 11648     1.048700e+02 3.935500e+02
-13 11648     6.736600e+02 1.853800e+02
-2 11649     -3.302100e+02 3.558600e+02
-5 11649     3.731801e+02 -6.231000e+01
-6 11649     -5.349900e+02 6.249900e+02
-2 11650     -2.214300e+02 3.540300e+02
-6 11650     -4.009900e+02 6.468400e+02
-2 11651     -3.319800e+02 3.528700e+02
-6 11651     -5.369400e+02 6.217200e+02
-2 11652     -2.444500e+02 3.513200e+02
-6 11652     -4.290500e+02 6.380400e+02
-12 11652     -2.555300e+02 6.117400e+02
-2 11653     -5.305900e+02 3.504600e+02
-12 11653     -5.915100e+02 5.680800e+02
-2 11654     7.657001e+01 3.501000e+02
-6 11654     -2.994000e+01 7.084900e+02
-8 11654     1.440100e+02 2.764700e+02
-14 11654     7.325800e+02 -1.315900e+02
-2 11655     5.784399e+02 3.500900e+02
-7 11655     5.247400e+02 5.163100e+02
-2 11656     2.637200e+02 3.488200e+02
-6 11656     1.681400e+02 6.114100e+02
-9 11656     7.894000e+01 3.853900e+02
-12 11656     2.796000e+02 5.971600e+02
-2 11657     -3.276100e+02 3.466700e+02
-6 11657     -5.305900e+02 6.147800e+02
-2 11658     1.452800e+02 3.465900e+02
-6 11658     5.652002e+01 7.192500e+02
-2 11659     3.862000e+02 3.465400e+02
-7 11659     3.829100e+02 5.789200e+02
-9 11659     1.844900e+02 3.881900e+02
-2 11660     3.944700e+02 3.463600e+02
-3 11660     2.490200e+02 1.867999e+01
-6 11660     3.173700e+02 5.898400e+02
-8 11660     3.901300e+02 2.605900e+02
-12 11660     4.163199e+02 5.820100e+02
-13 11660     7.579200e+02 1.580200e+02
-2 11661     2.995500e+02 3.456900e+02
-8 11661     3.139200e+02 2.614100e+02
-9 11661     1.096700e+02 3.845200e+02
-2 11662     6.491100e+02 3.452700e+02
-3 11662     4.963900e+02 2.481000e+01
-8 11662     5.976100e+02 2.512900e+02
-2 11663     6.491100e+02 3.452700e+02
-3 11663     4.963900e+02 2.481000e+01
-10 11663     7.997600e+02 5.726800e+02
-2 11664     -3.316000e+02 3.445900e+02
-6 11664     -5.357800e+02 6.111900e+02
-2 11665     -3.316000e+02 3.445900e+02
-6 11665     -5.357800e+02 6.111900e+02
-2 11666     -2.436100e+02 3.442700e+02
-5 11666     4.637700e+02 -7.028003e+01
-6 11666     -4.273100e+02 6.298800e+02
-2 11667     -4.701001e+01 3.433400e+02
-5 11667     6.854900e+02 -6.394000e+01
-6 11667     -1.856300e+02 6.718100e+02
-8 11667     4.160999e+01 2.682900e+02
-9 11667     -1.951000e+02 3.705900e+02
-2 11668     6.453101e+02 3.429200e+02
-8 11668     5.933500e+02 2.488600e+02
-9 11668     4.063900e+02 3.920600e+02
-2 11669     6.453101e+02 3.429200e+02
-10 11669     7.944700e+02 5.707700e+02
-2 11670     -6.275000e+01 3.427400e+02
-6 11670     -2.039600e+02 6.682100e+02
-2 11671     6.564600e+02 3.414600e+02
-3 11671     5.028300e+02 2.147998e+01
-10 11671     8.076000e+02 5.655300e+02
-2 11672     -6.890997e+01 3.411700e+02
-3 11672     -2.096800e+02 7.150024e+00
-4 11672     4.417999e+01 -5.335000e+02
-8 11672     2.394000e+01 2.671600e+02
-9 11672     -2.127800e+02 3.690000e+02
-11 11672     3.753600e+02 -1.892600e+02
-2 11673     -1.187900e+02 3.403200e+02
-11 11673     3.218700e+02 -1.946200e+02
-12 11673     -1.054200e+02 6.191100e+02
-2 11674     4.819500e+02 3.374800e+02
-7 11674     4.360000e+02 5.241500e+02
-2 11675     6.831500e+02 3.376400e+02
-3 11675     5.283300e+02 1.858002e+01
-7 11675     6.200500e+02 4.802900e+02
-2 11676     -9.979980e+00 3.368800e+02
-14 11676     6.283000e+02 -1.504500e+02
-2 11677     3.804999e+01 3.360200e+02
-6 11677     -7.795001e+01 6.828800e+02
-2 11678     1.084000e+02 3.359600e+02
-6 11678     1.033002e+01 6.979600e+02
-8 11678     1.709700e+02 2.655100e+02
-9 11678     -6.303003e+01 3.693000e+02
-14 11678     7.705200e+02 -1.432700e+02
-2 11679     -5.754800e+02 3.349300e+02
-12 11679     -6.418200e+02 5.442200e+02
-2 11680     4.559800e+02 3.336300e+02
-6 11680     3.745700e+02 5.339300e+02
-9 11680     2.467800e+02 3.795900e+02
-11 11680     7.093500e+02 -3.661000e+02
-2 11681     -7.440002e+00 3.324700e+02
-3 11681     -1.514000e+02 -2.609985e+00
-6 11681     -1.347400e+02 6.678200e+02
-14 11681     6.313500e+02 -1.546500e+02
-2 11682     -6.566600e+02 3.312200e+02
-8 11682     -4.598400e+02 2.465500e+02
-2 11683     5.148101e+02 3.303900e+02
-3 11683     3.696100e+02 7.140015e+00
-7 11683     4.650200e+02 5.105200e+02
-2 11684     -3.167700e+02 3.296400e+02
-5 11684     3.844600e+02 -8.570001e+01
-6 11684     -5.161400e+02 5.970400e+02
-12 11684     -3.396900e+02 5.778600e+02
-2 11685     -2.554999e+01 3.268200e+02
-6 11685     -1.575300e+02 6.573900e+02
-12 11685     6.750000e+00 6.172500e+02
-2 11686     4.902600e+02 3.258800e+02
-6 11686     4.126800e+02 5.196400e+02
-9 11686     2.760100e+02 3.734100e+02
-2 11687     4.902600e+02 3.258800e+02
-3 11687     3.459000e+02 2.460022e+00
-6 11687     4.126800e+02 5.196400e+02
-8 11687     4.641801e+02 2.382500e+02
-9 11687     2.760100e+02 3.734100e+02
-12 11687     4.965500e+02 5.273600e+02
-2 11688     2.721200e+02 3.247300e+02
-3 11688     1.303400e+02 -4.760010e+00
-12 11688     2.876600e+02 5.696500e+02
-2 11689     -7.001900e+02 3.239900e+02
-8 11689     -4.950500e+02 2.400800e+02
-12 11689     -7.825900e+02 5.155700e+02
-2 11690     -1.564700e+02 3.232200e+02
-13 11690     3.110800e+02 2.266100e+02
-2 11691     2.987400e+02 3.237100e+02
-7 11691     3.048000e+02 5.739700e+02
-2 11692     4.685800e+02 3.231000e+02
-7 11692     4.229900e+02 5.139600e+02
-2 11693     -8.038000e+01 3.221900e+02
-6 11693     -2.250700e+02 6.400100e+02
-2 11694     5.329200e+02 3.220200e+02
-6 11694     4.603101e+02 5.100000e+02
-8 11694     4.992700e+02 2.351600e+02
-2 11695     -5.854900e+02 3.217100e+02
-12 11695     -6.509200e+02 5.295400e+02
-2 11696     -9.041998e+01 3.205400e+02
-8 11696     5.580017e+00 2.501500e+02
-9 11696     -2.305300e+02 3.495300e+02
-2 11697     6.286000e+02 3.198500e+02
-3 11697     4.780300e+02 7.000122e-01
-6 11697     5.687400e+02 4.939200e+02
-8 11697     5.795500e+02 2.308500e+02
-2 11698     -5.799200e+02 3.191700e+02
-12 11698     -6.443500e+02 5.284400e+02
-2 11699     4.870400e+02 3.173600e+02
-6 11699     4.083800e+02 5.111700e+02
-8 11699     4.612600e+02 2.320400e+02
-9 11699     2.732500e+02 3.664000e+02
-12 11699     4.924800e+02 5.186200e+02
-2 11700     -3.997900e+02 3.174400e+02
-5 11700     2.975601e+02 -9.900000e+01
-2 11701     4.015500e+02 3.172700e+02
-6 11701     3.234800e+02 5.554700e+02
-8 11701     3.954500e+02 2.368300e+02
-9 11701     1.976400e+02 3.630500e+02
-2 11702     -4.697700e+02 3.167200e+02
-5 11702     2.267400e+02 -1.010800e+02
-2 11703     -2.812100e+02 3.149300e+02
-5 11703     4.204301e+02 -9.840997e+01
-6 11703     -4.716200e+02 5.868000e+02
-11 11703     1.575100e+02 -2.227200e+02
-12 11703     -2.968700e+02 5.680300e+02
-14 11703     3.277100e+02 -1.854400e+02
-2 11704     3.078800e+02 3.145300e+02
-3 11704     1.654800e+02 -1.364001e+01
-7 11704     3.112100e+02 5.630000e+02
-13 11704     6.798900e+02 1.478800e+02
-2 11705     4.793199e+02 3.140600e+02
-6 11705     3.991500e+02 5.066500e+02
-7 11705     4.306801e+02 5.012600e+02
-9 11705     2.665300e+02 3.621000e+02
-10 11705     6.071899e+02 5.959600e+02
-12 11705     4.830000e+02 5.131200e+02
-2 11706     4.021100e+02 3.133900e+02
-6 11706     3.245700e+02 5.513100e+02
-8 11706     3.965900e+02 2.338300e+02
-9 11706     1.986899e+02 3.598700e+02
-2 11707     -9.701001e+01 3.131200e+02
-12 11707     -7.832001e+01 5.917900e+02
-2 11708     -3.250000e+01 3.131300e+02
-3 11708     -1.756200e+02 -2.082001e+01
-6 11708     -1.656000e+02 6.394200e+02
-2 11709     4.322500e+02 3.128100e+02
-3 11709     2.906000e+02 -1.191998e+01
-6 11709     3.467700e+02 5.129800e+02
-7 11709     3.893101e+02 5.101800e+02
-9 11709     2.267400e+02 3.603700e+02
-10 11709     5.588000e+02 6.112700e+02
-11 11709     6.886000e+02 -3.793800e+02
-12 11709     4.340800e+02 5.185200e+02
-2 11710     5.269000e+02 3.111000e+02
-8 11710     4.937300e+02 2.260900e+02
-10 11710     6.567900e+02 5.754400e+02
-12 11710     5.354000e+02 5.070500e+02
-2 11711     -2.616300e+02 3.096000e+02
-6 11711     -4.467100e+02 5.846900e+02
-2 11712     3.883199e+02 3.094500e+02
-3 11712     2.441600e+02 -1.667999e+01
-6 11712     3.087300e+02 5.473800e+02
-9 11712     1.867100e+02 3.560600e+02
-2 11713     4.310601e+02 3.091300e+02
-8 11713     4.156900e+02 2.256800e+02
-2 11714     4.013900e+02 3.087400e+02
-3 11714     2.566700e+02 -1.684003e+01
-6 11714     3.241600e+02 5.457600e+02
-9 11714     1.980800e+02 3.557700e+02
-2 11715     3.811500e+02 3.071300e+02
-3 11715     2.370000e+02 -1.890997e+01
-7 11715     3.741200e+02 5.411800e+02
-9 11715     1.804000e+02 3.535000e+02
-13 11715     7.416100e+02 1.274300e+02
-2 11716     -1.094300e+02 3.066800e+02
-6 11716     -2.601200e+02 6.153300e+02
-2 11717     -1.094300e+02 3.066800e+02
-6 11717     -2.601200e+02 6.153300e+02
-9 11717     -2.464100e+02 3.372400e+02
-2 11718     5.249600e+02 3.066400e+02
-8 11718     4.919100e+02 2.217100e+02
-2 11719     5.249600e+02 3.066400e+02
-6 11719     4.508199e+02 4.929200e+02
-7 11719     4.709301e+02 4.846500e+02
-8 11719     4.919100e+02 2.217100e+02
-9 11719     3.055300e+02 3.580400e+02
-10 11719     6.531899e+02 5.710500e+02
-12 11719     5.332600e+02 5.018700e+02
-2 11720     7.404999e+01 3.059400e+02
-14 11720     7.264500e+02 -1.756100e+02
-2 11721     -4.617000e+02 3.049300e+02
-12 11721     -5.060400e+02 5.300400e+02
-2 11722     5.392300e+02 3.041100e+02
-6 11722     4.662000e+02 4.883900e+02
-7 11722     4.832900e+02 4.790700e+02
-8 11722     5.040900e+02 2.195100e+02
-9 11722     3.174700e+02 3.565500e+02
-2 11723     2.886899e+02 3.024300e+02
-12 11723     3.043400e+02 5.432400e+02
-2 11724     4.247700e+02 3.022600e+02
-6 11724     3.381000e+02 5.026700e+02
-10 11724     5.489800e+02 6.013500e+02
-12 11724     4.256400e+02 5.083600e+02
-2 11725     3.928101e+02 3.019200e+02
-6 11725     3.139700e+02 5.385500e+02
-9 11725     1.913800e+02 3.495900e+02
-12 11725     4.135601e+02 5.326200e+02
-13 11725     7.515800e+02 1.208600e+02
-2 11726     5.698101e+02 3.014000e+02
-6 11726     5.011400e+02 4.810900e+02
-2 11727     -3.946700e+02 3.009300e+02
-5 11727     3.017600e+02 -1.136300e+02
-2 11728     3.259100e+02 3.010000e+02
-7 11728     3.247300e+02 5.455100e+02
-13 11728     6.930900e+02 1.323500e+02
-2 11729     -1.535999e+01 3.006500e+02
-13 11729     4.389399e+02 2.181300e+02
-14 11729     6.188000e+02 -1.864100e+02
-2 11730     -5.875000e+02 2.989100e+02
-5 11730     1.111600e+02 -1.178700e+02
-7 11730     -5.357900e+02 5.701900e+02
-8 11730     -4.031400e+02 2.227800e+02
-12 11730     -6.505700e+02 5.053300e+02
-2 11731     5.922300e+02 2.984200e+02
-10 11731     7.236600e+02 5.363000e+02
-12 11731     6.062700e+02 4.857100e+02
-2 11732     -4.335200e+02 2.976100e+02
-5 11732     2.616899e+02 -1.170200e+02
-11 11732     1.521002e+01 -2.399700e+02
-12 11732     -4.723200e+02 5.275100e+02
-2 11733     -1.383200e+02 2.976300e+02
-14 11733     4.792700e+02 -1.955100e+02
-2 11734     6.013500e+02 2.972300e+02
-10 11734     7.336400e+02 5.320000e+02
-2 11735     4.262900e+02 2.968900e+02
-10 11735     5.496899e+02 5.949300e+02
-2 11736     -2.568600e+02 2.958500e+02
-13 11736     2.211801e+02 1.989400e+02
-2 11737     9.115997e+01 2.960700e+02
-12 11737     1.488900e+02 5.995400e+02
-2 11738     3.875900e+02 2.949800e+02
-12 11738     4.072600e+02 5.246600e+02
-2 11739     2.626100e+02 2.936100e+02
-12 11739     2.775900e+02 5.361100e+02
-14 11739     8.766400e+02 -2.909300e+02
-2 11740     -9.717999e+01 2.932400e+02
-14 11740     5.252400e+02 -1.964600e+02
-2 11741     5.375800e+02 2.927900e+02
-6 11741     4.642500e+02 4.759900e+02
-7 11741     4.808101e+02 4.686000e+02
-9 11741     3.167900e+02 3.468600e+02
-2 11742     -3.188900e+02 2.922200e+02
-5 11742     3.785300e+02 -1.200100e+02
-6 11742     -5.157900e+02 5.531800e+02
-11 11742     1.213900e+02 -2.399600e+02
-12 11742     -3.398400e+02 5.383900e+02
-2 11743     3.786801e+02 2.922000e+02
-3 11743     2.352100e+02 -3.316998e+01
-7 11743     3.700200e+02 5.260800e+02
-2 11744     -5.869700e+02 2.909500e+02
-8 11744     -4.024300e+02 2.166000e+02
-12 11744     -6.481300e+02 4.979600e+02
-2 11745     -5.869700e+02 2.909500e+02
-12 11745     -6.481300e+02 4.979600e+02
-2 11746     3.847100e+02 2.907300e+02
-7 11746     3.750400e+02 5.237200e+02
-12 11746     4.038300e+02 5.201800e+02
-2 11747     2.140997e+01 2.884300e+02
-13 11747     4.735400e+02 2.111300e+02
-14 11747     6.618400e+02 -1.957300e+02
-2 11748     5.364800e+02 2.885100e+02
-6 11748     4.629200e+02 4.710700e+02
-10 11748     6.613800e+02 5.449800e+02
-12 11748     5.449100e+02 4.804100e+02
-2 11749     5.364800e+02 2.885100e+02
-10 11749     6.613800e+02 5.449800e+02
-2 11750     -5.933500e+02 2.875400e+02
-7 11750     -5.406400e+02 5.592300e+02
-11 11750     -1.249200e+02 -2.504000e+02
-2 11751     -5.789200e+02 2.876400e+02
-7 11751     -5.259800e+02 5.607600e+02
-8 11751     -3.961600e+02 2.143700e+02
-2 11752     -1.262100e+02 2.869500e+02
-14 11752     4.927100e+02 -2.044200e+02
-2 11753     -3.252300e+02 2.866100e+02
-3 11753     -4.546300e+02 -4.490002e+01
-6 11753     -5.226500e+02 5.446600e+02
-2 11754     -3.252300e+02 2.866100e+02
-6 11754     -5.226500e+02 5.446600e+02
-2 11755     -3.850400e+02 2.853800e+02
-5 11755     3.098700e+02 -1.269600e+02
-2 11756     2.638199e+02 2.848400e+02
-6 11756     1.669400e+02 5.367300e+02
-12 11756     2.785000e+02 5.264900e+02
-14 11756     8.772400e+02 -3.000900e+02
-2 11757     3.165699e+02 2.850500e+02
-7 11757     3.167100e+02 5.326300e+02
-9 11757     1.253600e+02 3.323700e+02
-12 11757     3.324900e+02 5.212400e+02
-2 11758     3.165699e+02 2.850500e+02
-6 11758     2.268100e+02 5.298100e+02
-7 11758     3.167100e+02 5.326300e+02
-9 11758     1.253600e+02 3.323700e+02
-11 11758     6.346500e+02 -3.412900e+02
-12 11758     3.324900e+02 5.212400e+02
-2 11759     3.327400e+02 2.834400e+02
-3 11759     1.902000e+02 -4.264001e+01
-6 11759     2.442300e+02 5.260900e+02
-8 11759     3.398000e+02 2.105000e+02
-9 11759     1.395800e+02 3.320400e+02
-11 11759     6.481600e+02 -3.472900e+02
-12 11759     3.491600e+02 5.186700e+02
-2 11760     3.788400e+02 2.836900e+02
-3 11760     2.357000e+02 -4.148999e+01
-6 11760     2.972400e+02 5.196500e+02
-8 11760     3.766600e+02 2.101200e+02
-9 11760     1.792000e+02 3.338900e+02
-12 11760     3.979399e+02 5.137900e+02
-2 11761     3.832000e+02 2.831000e+02
-3 11761     2.394600e+02 -4.210999e+01
-9 11761     1.836100e+02 3.334500e+02
-12 11761     4.024600e+02 5.127100e+02
-2 11762     -5.827300e+02 2.826000e+02
-12 11762     -6.424800e+02 4.895300e+02
-2 11763     -2.720800e+02 2.825400e+02
-8 11763     -1.442200e+02 2.168700e+02
-14 11763     3.341200e+02 -2.151100e+02
-2 11764     4.294500e+02 2.826600e+02
-6 11764     3.420600e+02 4.799500e+02
-10 11764     5.498000e+02 5.767900e+02
-12 11764     4.301200e+02 4.858900e+02
-2 11765     4.294500e+02 2.826600e+02
-6 11765     3.420600e+02 4.799500e+02
-12 11765     4.301200e+02 4.858900e+02
-2 11766     5.145500e+02 2.824100e+02
-6 11766     4.377200e+02 4.674200e+02
-8 11766     4.842000e+02 2.019100e+02
-9 11766     2.976200e+02 3.369500e+02
-2 11767     -2.605600e+02 2.817000e+02
-6 11767     -4.432300e+02 5.523100e+02
-11 11767     1.770500e+02 -2.466400e+02
-2 11768     3.308800e+02 2.815700e+02
-7 11768     3.284100e+02 5.264400e+02
-9 11768     1.375000e+02 3.300300e+02
-2 11769     -1.576800e+02 2.811600e+02
-12 11769     -1.539500e+02 5.451300e+02
-14 11769     4.530601e+02 -2.176300e+02
-2 11770     5.293700e+02 2.810400e+02
-6 11770     4.543400e+02 4.638200e+02
-7 11770     4.719399e+02 4.590100e+02
-9 11770     3.103600e+02 3.365500e+02
-10 11770     6.520500e+02 5.391600e+02
-11 11770     7.775300e+02 -4.415700e+02
-2 11771     -3.992400e+02 2.806300e+02
-7 11771     -3.408900e+02 5.750800e+02
-11 11771     4.612000e+01 -2.514400e+02
-2 11772     -5.781500e+02 2.800400e+02
-5 11772     1.186200e+02 -1.340200e+02
-2 11773     -1.603600e+02 2.796000e+02
-3 11773     -2.972200e+02 -5.196002e+01
-6 11773     -3.225100e+02 5.644900e+02
-8 11773     -5.428998e+01 2.161400e+02
-9 11773     -2.890900e+02 3.125200e+02
-2 11774     3.452400e+02 2.788600e+02
-6 11774     2.587000e+02 5.191600e+02
-2 11775     3.452400e+02 2.788600e+02
-6 11775     2.587000e+02 5.191600e+02
-2 11776     4.746400e+02 2.775000e+02
-6 11776     3.929800e+02 4.676200e+02
-7 11776     4.230400e+02 4.673700e+02
-2 11777     5.929500e+02 2.773800e+02
-6 11777     5.257300e+02 4.508400e+02
-2 11778     -4.958800e+02 2.771300e+02
-7 11778     -4.404100e+02 5.610500e+02
-12 11778     -5.425500e+02 4.965900e+02
-2 11779     -4.958800e+02 2.771300e+02
-7 11779     -4.404100e+02 5.610500e+02
-12 11779     -5.425500e+02 4.965900e+02
-2 11780     -5.060200e+02 2.763800e+02
-7 11780     -4.509100e+02 5.592000e+02
-2 11781     -3.099976e-01 2.755600e+02
-14 11781     6.351801e+02 -2.094200e+02
-2 11782     3.444800e+02 2.747500e+02
-6 11782     2.578600e+02 5.145100e+02
-8 11782     3.489000e+02 2.035000e+02
-9 11782     1.499301e+02 3.251200e+02
-11 11782     6.582600e+02 -3.587200e+02
-2 11783     -5.839900e+02 2.743900e+02
-5 11783     1.124900e+02 -1.388700e+02
-7 11783     -5.295400e+02 5.487700e+02
-12 11783     -6.430400e+02 4.804700e+02
-2 11784     -2.573300e+02 2.728200e+02
-11 11784     1.799200e+02 -2.533200e+02
-2 11785     5.266500e+02 2.715500e+02
-6 11785     4.505200e+02 4.556400e+02
-7 11785     4.688600e+02 4.518800e+02
-9 11785     3.075100e+02 3.296400e+02
-10 11785     6.472100e+02 5.293800e+02
-12 11785     5.329700e+02 4.641100e+02
-13 11785     8.438199e+02 4.497998e+01
-2 11786     -3.083500e+02 2.707100e+02
-6 11786     -5.008500e+02 5.295000e+02
-2 11787     3.111300e+02 2.704700e+02
-6 11787     2.203700e+02 5.144500e+02
-2 11788     5.050300e+02 2.701600e+02
-3 11788     3.621500e+02 -4.976001e+01
-6 11788     4.264900e+02 4.551200e+02
-8 11788     4.759301e+02 1.927600e+02
-9 11788     2.896400e+02 3.266500e+02
-10 11788     6.240000e+02 5.346500e+02
-12 11788     5.102000e+02 4.637700e+02
-2 11789     -5.991000e+02 2.693500e+02
-7 11789     -5.445000e+02 5.425300e+02
-2 11790     -2.320100e+02 2.693700e+02
-6 11790     -4.074900e+02 5.457500e+02
-8 11790     -1.104700e+02 2.074000e+02
-9 11790     -3.483300e+02 3.008000e+02
-2 11791     -5.937700e+02 2.687200e+02
-7 11791     -5.388700e+02 5.426400e+02
-8 11791     -4.078000e+02 1.991700e+02
-2 11792     -2.499400e+02 2.691700e+02
-7 11792     -1.834000e+02 5.807400e+02
-2 11793     -1.543100e+02 2.685100e+02
-5 11793     5.489600e+02 -1.471200e+02
-6 11793     -3.148400e+02 5.506300e+02
-8 11793     -4.890997e+01 2.067100e+02
-12 11793     -1.503600e+02 5.309500e+02
-2 11794     3.218900e+02 2.673300e+02
-6 11794     2.325100e+02 5.088900e+02
-7 11794     3.202700e+02 5.148600e+02
-11 11794     6.387700e+02 -3.584200e+02
-2 11795     -2.849400e+02 2.667900e+02
-5 11795     4.120500e+02 -1.432500e+02
-6 11795     -4.718700e+02 5.305600e+02
-8 11795     -1.544700e+02 2.035100e+02
-12 11795     -2.973700e+02 5.165000e+02
-14 11795     3.205400e+02 -2.293200e+02
-2 11796     -2.849400e+02 2.667900e+02
-5 11796     4.120500e+02 -1.432500e+02
-6 11796     -4.718700e+02 5.305600e+02
-7 11796     -2.204200e+02 5.750800e+02
-8 11796     -1.544700e+02 2.035100e+02
-12 11796     -2.973700e+02 5.165000e+02
-14 11796     3.205400e+02 -2.293200e+02
-2 11797     -2.849400e+02 2.667900e+02
-7 11797     -2.204200e+02 5.750800e+02
-8 11797     -1.544700e+02 2.035100e+02
-12 11797     -2.973700e+02 5.165000e+02
-14 11797     3.205400e+02 -2.293200e+02
-2 11798     -4.604500e+02 2.664000e+02
-3 11798     -5.870400e+02 -6.353998e+01
-7 11798     -4.035900e+02 5.549100e+02
-2 11799     6.045601e+02 2.658500e+02
-6 11799     5.378900e+02 4.368600e+02
-2 11800     3.881000e+02 2.655800e+02
-6 11800     3.066100e+02 4.979700e+02
-8 11800     3.838000e+02 1.946900e+02
-2 11801     3.881000e+02 2.655800e+02
-6 11801     3.066100e+02 4.979700e+02
-12 11801     4.069900e+02 4.928800e+02
-2 11802     6.460699e+02 2.653300e+02
-9 11802     4.294399e+02 3.305500e+02
-2 11803     4.547300e+02 2.652900e+02
-3 11803     3.136700e+02 -5.609998e+01
-6 11803     3.701200e+02 4.567700e+02
-7 11803     4.046500e+02 4.600300e+02
-9 11803     2.469700e+02 3.208800e+02
-12 11803     4.565200e+02 4.640300e+02
-2 11804     4.547300e+02 2.652900e+02
-3 11804     3.136700e+02 -5.609998e+01
-6 11804     3.701200e+02 4.567700e+02
-7 11804     4.046500e+02 4.600300e+02
-9 11804     2.469700e+02 3.208800e+02
-10 11804     5.719399e+02 5.474400e+02
-12 11804     4.565200e+02 4.640300e+02
-2 11805     5.446300e+02 2.651000e+02
-8 11805     5.078400e+02 1.876400e+02
-9 11805     3.229700e+02 3.237600e+02
-10 11805     6.645300e+02 5.145700e+02
-12 11805     5.524000e+02 4.537200e+02
-2 11806     5.446300e+02 2.651000e+02
-10 11806     6.645300e+02 5.145700e+02
-12 11806     5.524000e+02 4.537200e+02
-2 11807     -4.688300e+02 2.641900e+02
-8 11807     -3.056600e+02 1.982900e+02
-12 11807     -5.102000e+02 4.871900e+02
-2 11808     5.838300e+02 2.630800e+02
-7 11808     5.186700e+02 4.292500e+02
-2 11809     5.039000e+02 2.624700e+02
-7 11809     4.475200e+02 4.472900e+02
-10 11809     6.216100e+02 5.266900e+02
-2 11810     5.039000e+02 2.624700e+02
-7 11810     4.475200e+02 4.472900e+02
-10 11810     6.216100e+02 5.266900e+02
-2 11811     -7.226000e+02 2.622000e+02
-8 11811     -5.119100e+02 1.916700e+02
-11 11811     -2.296000e+02 -2.689200e+02
-12 11811     -7.984700e+02 4.484000e+02
-2 11812     1.623999e+01 2.614700e+02
-6 11812     -1.038400e+02 5.885300e+02
-12 11812     5.879999e+01 5.530000e+02
-2 11813     3.523300e+02 2.593400e+02
-3 11813     2.105200e+02 -6.534003e+01
-10 11813     5.203500e+02 6.136100e+02
-2 11814     4.070007e+00 2.587800e+02
-12 11814     4.428998e+01 5.481200e+02
-14 11814     6.394800e+02 -2.256400e+02
-2 11815     2.924600e+02 2.587500e+02
-8 11815     3.064800e+02 1.912600e+02
-12 11815     3.072900e+02 4.948900e+02
-2 11816     5.655500e+02 2.590800e+02
-6 11816     4.934900e+02 4.342900e+02
-10 11816     6.850500e+02 4.994500e+02
-2 11817     5.817200e+02 2.589300e+02
-8 11817     5.407100e+02 1.817700e+02
-9 11817     3.567500e+02 3.200700e+02
-10 11817     7.027900e+02 4.935200e+02
-2 11818     1.357001e+01 2.577700e+02
-6 11818     -1.070500e+02 5.844800e+02
-8 11818     9.189001e+01 2.018100e+02
-2 11819     -5.015200e+02 2.558700e+02
-5 11819     1.900000e+02 -1.546200e+02
-7 11819     -4.444300e+02 5.415900e+02
-2 11820     -5.015200e+02 2.558700e+02
-7 11820     -4.444300e+02 5.415900e+02
-12 11820     -5.465900e+02 4.742200e+02
-2 11821     -2.450300e+02 2.556000e+02
-6 11821     -4.226500e+02 5.265100e+02
-2 11822     1.896002e+01 2.534900e+02
-5 11822     7.555601e+02 -1.514300e+02
-6 11822     -1.000900e+02 5.797800e+02
-12 11822     6.238000e+01 5.441600e+02
-2 11823     1.896002e+01 2.534900e+02
-3 11823     -1.265800e+02 -7.860999e+01
-6 11823     -1.000900e+02 5.797800e+02
-12 11823     6.238000e+01 5.441600e+02
-2 11824     5.210800e+02 2.521600e+02
-6 11824     4.434200e+02 4.331300e+02
-7 11824     4.611400e+02 4.330400e+02
-8 11824     4.885300e+02 1.775000e+02
-10 11824     6.365699e+02 5.077000e+02
-12 11824     5.261899e+02 4.418300e+02
-15 11824     8.411801e+02 5.823300e+02
-2 11825     -6.776400e+02 2.514900e+02
-5 11825     2.340997e+01 -1.580100e+02
-2 11826     -3.800200e+02 2.514000e+02
-3 11826     -5.084100e+02 -7.958002e+01
-2 11827     -3.587300e+02 2.505900e+02
-7 11827     -2.969200e+02 5.526400e+02
-12 11827     -3.816200e+02 4.888900e+02
-2 11828     4.978199e+02 2.494300e+02
-6 11828     4.176400e+02 4.334000e+02
-7 11828     4.407200e+02 4.356500e+02
-8 11828     4.698500e+02 1.757800e+02
-9 11828     2.841500e+02 3.090400e+02
-10 11828     6.126100e+02 5.132100e+02
-12 11828     5.014500e+02 4.416800e+02
-2 11829     5.461200e+02 2.488900e+02
-10 11829     6.623300e+02 4.950800e+02
-15 11829     8.717800e+02 5.677300e+02
-2 11830     -3.167600e+02 2.475000e+02
-12 11830     -3.330000e+02 4.918300e+02
-2 11831     2.815200e+02 2.465300e+02
-6 11831     1.862800e+02 4.910200e+02
-9 11831     9.675000e+01 2.986400e+02
-10 11831     4.488101e+02 6.220000e+02
-11 11831     6.057500e+02 -3.663600e+02
-2 11832     -2.815300e+02 2.450700e+02
-5 11832     4.130200e+02 -1.633700e+02
-7 11832     -2.159700e+02 5.554900e+02
-2 11833     -3.741000e+02 2.436800e+02
-3 11833     -5.027800e+02 -8.681000e+01
-5 11833     3.164900e+02 -1.650000e+02
-6 11833     -5.778000e+02 4.850100e+02
-12 11833     -3.990800e+02 4.797500e+02
-2 11834     -3.741000e+02 2.436800e+02
-6 11834     -5.778000e+02 4.850100e+02
-12 11834     -3.990800e+02 4.797500e+02
-2 11835     -3.637800e+02 2.433600e+02
-6 11835     -5.654000e+02 4.868600e+02
-2 11836     -8.700000e+01 2.432900e+02
-6 11836     -2.296300e+02 5.460500e+02
-12 11836     -6.326001e+01 5.196500e+02
-14 11836     5.336400e+02 -2.442200e+02
-2 11837     -4.139300e+02 2.431800e+02
-3 11837     -5.418800e+02 -8.753998e+01
-2 11838     -3.330400e+02 2.432100e+02
-11 11838     1.067400e+02 -2.774200e+02
-2 11839     4.677700e+02 2.419100e+02
-3 11839     3.269800e+02 -7.798999e+01
-6 11839     3.836800e+02 4.291000e+02
-8 11839     4.450000e+02 1.701200e+02
-9 11839     2.586600e+02 3.012300e+02
-10 11839     5.803101e+02 5.157200e+02
-12 11839     4.694200e+02 4.370800e+02
-15 11839     7.738000e+02 5.899100e+02
-2 11840     -3.402600e+02 2.416800e+02
-6 11840     -5.364800e+02 4.900900e+02
-2 11841     -3.022700e+02 2.417700e+02
-5 11841     3.909100e+02 -1.660000e+02
-6 11841     -4.909300e+02 4.981000e+02
-12 11841     -3.159400e+02 4.880000e+02
-2 11842     -7.796002e+01 2.415900e+02
-3 11842     -2.182400e+02 -9.063000e+01
-7 11842     2.450012e+00 5.732900e+02
-14 11842     5.435400e+02 -2.452900e+02
-2 11843     -8.920001e+01 2.407400e+02
-6 11843     -2.323200e+02 5.425400e+02
-12 11843     -6.587000e+01 5.170000e+02
-2 11844     4.780500e+02 2.408000e+02
-7 11844     4.223400e+02 4.317300e+02
-8 11844     4.530100e+02 1.692000e+02
-2 11845     -6.021997e+01 2.394900e+02
-6 11845     -1.970400e+02 5.466000e+02
-9 11845     -2.014700e+02 2.805900e+02
-2 11846     -1.006600e+02 2.391000e+02
-6 11846     -2.464700e+02 5.380100e+02
-2 11847     -4.850100e+02 2.387000e+02
-7 11847     -4.262300e+02 5.282200e+02
-2 11848     -1.317900e+02 2.380200e+02
-6 11848     -2.845700e+02 5.302500e+02
-8 11848     -2.884998e+01 1.837400e+02
-12 11848     -1.168300e+02 5.085000e+02
-2 11849     -6.346000e+02 2.375200e+02
-7 11849     -5.768100e+02 5.106600e+02
-2 11850     -5.857800e+02 2.373400e+02
-11 11850     -1.202400e+02 -2.853900e+02
-2 11851     -3.257300e+02 2.369600e+02
-5 11851     3.660900e+02 -1.703700e+02
-11 11851     1.132400e+02 -2.814800e+02
-2 11852     -9.497998e+01 2.368500e+02
-6 11852     -2.395600e+02 5.366600e+02
-2 11853     -3.148100e+02 2.345300e+02
-12 11853     -3.301000e+02 4.790200e+02
-2 11854     -5.716300e+02 2.339800e+02
-12 11854     -6.244600e+02 4.407300e+02
-2 11855     -3.639500e+02 2.336900e+02
-3 11855     -4.934800e+02 -9.667999e+01
-6 11855     -5.649000e+02 4.759400e+02
-12 11855     -3.863500e+02 4.708600e+02
-2 11856     8.071400e+02 2.326000e+02
-3 11856     6.500800e+02 -7.579999e+01
-7 11856     7.182500e+02 3.475800e+02
-9 11856     5.428900e+02 3.037500e+02
-2 11857     -6.206800e+02 2.320000e+02
-7 11857     -5.620500e+02 5.076700e+02
-2 11858     -3.445100e+02 2.292900e+02
-3 11858     -4.746100e+02 -1.016200e+02
-6 11858     -5.408100e+02 4.749100e+02
-8 11858     -2.037600e+02 1.727500e+02
-2 11859     -1.841300e+02 2.294000e+02
-14 11859     4.251400e+02 -2.603200e+02
-2 11860     7.574301e+02 2.269400e+02
-3 11860     6.040300e+02 -8.228998e+01
-7 11860     6.715300e+02 3.544600e+02
-9 11860     5.020100e+02 2.981000e+02
-12 11860     7.850500e+02 3.853800e+02
-2 11861     -3.917800e+02 2.260100e+02
-7 11861     -3.301000e+02 5.272500e+02
-2 11862     -4.800100e+02 2.260700e+02
-3 11862     -6.074300e+02 -1.036100e+02
-2 11863     -6.428400e+02 2.253900e+02
-5 11863     5.272998e+01 -1.805200e+02
-12 11863     -7.034400e+02 4.223900e+02
-2 11864     8.549988e+00 2.255400e+02
-6 11864     -1.132500e+02 5.444200e+02
-2 11865     7.327700e+02 2.247300e+02
-9 11865     4.822300e+02 2.952600e+02
-2 11866     -2.602200e+02 2.232700e+02
-5 11866     4.336100e+02 -1.826900e+02
-14 11866     3.431500e+02 -2.676400e+02
-2 11867     4.492500e+02 2.229600e+02
-6 11867     3.624000e+02 4.109100e+02
-12 11867     4.494500e+02 4.183400e+02
-2 11868     -4.160400e+02 2.215400e+02
-5 11868     2.719200e+02 -1.847900e+02
-7 11868     -3.542700e+02 5.206400e+02
-2 11869     -1.709300e+02 2.203900e+02
-14 11869     4.381899e+02 -2.683700e+02
-2 11870     2.127002e+01 2.203600e+02
-7 11870     1.105400e+02 5.624400e+02
-2 11871     -3.831400e+02 2.201600e+02
-12 11871     -4.071400e+02 4.544600e+02
-2 11872     -3.780800e+02 2.193900e+02
-5 11872     3.101899e+02 -1.870400e+02
-6 11872     -5.804700e+02 4.565000e+02
-8 11872     -2.308900e+02 1.644200e+02
-2 11873     -3.915800e+02 2.186800e+02
-3 11873     -5.207200e+02 -1.118300e+02
-8 11873     -2.421400e+02 1.636800e+02
-12 11873     -4.167800e+02 4.514100e+02
-2 11874     5.285400e+02 2.184700e+02
-7 11874     4.642900e+02 3.998700e+02
-9 11874     3.100400e+02 2.840900e+02
-10 11874     6.375699e+02 4.667100e+02
-2 11875     -4.184800e+02 2.181300e+02
-5 11875     2.685900e+02 -1.881600e+02
-2 11876     -4.825000e+02 2.171300e+02
-12 11876     -5.209400e+02 4.364700e+02
-2 11877     -4.825000e+02 2.171300e+02
-12 11877     -5.209400e+02 4.364700e+02
-2 11878     5.139900e+02 2.171300e+02
-6 11878     4.340400e+02 3.954100e+02
-8 11878     4.827800e+02 1.483600e+02
-9 11878     2.986200e+02 2.813400e+02
-15 11878     8.248199e+02 5.371100e+02
-2 11879     4.666600e+02 2.152000e+02
-12 11879     4.676000e+02 4.076600e+02
-2 11880     -6.861500e+02 2.148400e+02
-5 11880     1.241998e+01 -1.885800e+02
-12 11880     -7.506200e+02 4.059600e+02
-2 11881     -5.898300e+02 2.143600e+02
-5 11881     1.012900e+02 -1.903400e+02
-2 11882     -5.004100e+02 2.136700e+02
-7 11882     -4.395200e+02 5.041600e+02
-2 11883     -4.182500e+02 2.122600e+02
-5 11883     2.686200e+02 -1.933100e+02
-2 11884     4.238600e+02 2.117200e+02
-8 11884     4.084000e+02 1.468200e+02
-9 11884     2.216400e+02 2.744500e+02
-15 11884     7.162200e+02 5.676100e+02
-2 11885     -3.709900e+02 2.109100e+02
-14 11885     2.283700e+02 -2.818600e+02
-2 11886     4.364301e+02 2.110100e+02
-6 11886     3.474600e+02 3.995900e+02
-7 11886     3.835601e+02 4.134200e+02
-8 11886     4.188100e+02 1.461900e+02
-9 11886     2.323101e+02 2.743000e+02
-10 11886     5.435200e+02 4.927200e+02
-12 11886     4.356200e+02 4.066200e+02
-2 11887     -4.986100e+02 2.103900e+02
-12 11887     -5.385900e+02 4.281700e+02
-2 11888     -2.350800e+02 2.094100e+02
-12 11888     -2.370400e+02 4.641600e+02
-2 11889     -7.059998e+01 2.093000e+02
-3 11889     -2.119500e+02 -1.224900e+02
-5 11889     6.436400e+02 -1.954900e+02
-6 11889     -2.084400e+02 5.098100e+02
-7 11889     9.799988e+00 5.439500e+02
-9 11889     -2.093800e+02 2.532400e+02
-14 11889     5.495800e+02 -2.757300e+02
-2 11890     -3.781500e+02 2.073200e+02
-7 11890     -3.144900e+02 5.116700e+02
-2 11891     -3.903800e+02 2.067600e+02
-12 11891     -4.146300e+02 4.398900e+02
-2 11892     -4.310500e+02 2.064000e+02
-12 11892     -4.612800e+02 4.334500e+02
-2 11893     5.265200e+02 2.065800e+02
-6 11893     4.476200e+02 3.826200e+02
-8 11893     4.932700e+02 1.409300e+02
-10 11893     6.325900e+02 4.544500e+02
-12 11893     5.308199e+02 3.920400e+02
-2 11894     -3.285800e+02 2.045700e+02
-3 11894     -4.570900e+02 -1.261800e+02
-5 11894     3.550601e+02 -2.078100e+02
-6 11894     -5.205100e+02 4.406000e+02
-7 11894     -2.714000e+02 5.068500e+02
-14 11894     2.665800e+02 -2.941400e+02
-2 11895     -8.940002e+01 2.047200e+02
-6 11895     -2.311200e+02 5.006600e+02
-2 11896     6.967700e+02 2.018900e+02
-7 11896     6.128000e+02 3.448600e+02
-2 11897     -5.479800e+02 2.014800e+02
-12 11897     -5.936300e+02 4.114400e+02
-2 11898     -5.354800e+02 2.010900e+02
-5 11898     1.518100e+02 -2.023200e+02
-14 11898     6.651001e+01 -2.927000e+02
-2 11899     -5.354800e+02 2.010900e+02
-8 11899     -3.603900e+02 1.473900e+02
-2 11900     -3.194500e+02 2.002800e+02
-6 11900     -5.090600e+02 4.373600e+02
-7 11900     -2.621500e+02 5.033900e+02
-2 11901     -3.194500e+02 2.002800e+02
-6 11901     -5.090600e+02 4.373600e+02
-7 11901     -2.621500e+02 5.033900e+02
-2 11902     -7.571002e+01 2.001900e+02
-12 11902     -4.817999e+01 4.762900e+02
-2 11903     4.922700e+02 1.999700e+02
-6 11903     4.089500e+02 3.799100e+02
-8 11903     4.647100e+02 1.357000e+02
-9 11903     2.803101e+02 2.669600e+02
-10 11903     5.963500e+02 4.601800e+02
-2 11904     5.018199e+02 1.987000e+02
-3 11904     3.616200e+02 -1.176100e+02
-6 11904     4.198100e+02 3.771900e+02
-9 11904     2.885300e+02 2.663200e+02
-10 11904     6.060400e+02 4.545900e+02
-12 11904     5.041100e+02 3.859600e+02
-15 11904     8.059000e+02 5.182000e+02
-2 11905     6.409399e+02 1.979700e+02
-12 11905     6.535400e+02 3.677900e+02
-2 11906     -4.692200e+02 1.966400e+02
-12 11906     -5.038100e+02 4.181000e+02
-2 11907     6.743700e+02 1.966200e+02
-12 11907     6.898300e+02 3.619000e+02
-2 11908     -5.981000e+02 1.959400e+02
-5 11908     9.042999e+01 -2.064200e+02
-12 11908     -6.509300e+02 3.984700e+02
-2 11909     5.056700e+02 1.954000e+02
-6 11909     4.237300e+02 3.728000e+02
-10 11909     6.090601e+02 4.494000e+02
-12 11909     5.079200e+02 3.817700e+02
-15 11909     8.097600e+02 5.118200e+02
-2 11910     7.121600e+02 1.943800e+02
-3 11910     5.638700e+02 -1.145200e+02
-7 11910     6.234100e+02 3.327900e+02
-2 11911     7.251500e+02 1.945700e+02
-9 11911     4.759900e+02 2.696200e+02
-2 11912     -2.813400e+02 1.938800e+02
-6 11912     -4.619800e+02 4.471200e+02
-2 11913     2.892500e+02 1.932500e+02
-6 11913     1.939400e+02 4.303400e+02
-12 11913     3.039399e+02 4.256900e+02
-2 11914     2.892500e+02 1.932500e+02
-6 11914     1.939400e+02 4.303400e+02
-12 11914     3.039399e+02 4.256900e+02
-2 11915     -5.294700e+02 1.924100e+02
-12 11915     -5.712900e+02 4.047300e+02
-2 11916     2.966300e+02 1.922800e+02
-6 11916     2.024000e+02 4.283200e+02
-2 11917     6.499399e+02 1.923200e+02
-6 11917     5.837100e+02 3.498700e+02
-7 11917     5.687800e+02 3.471600e+02
-10 11917     7.577100e+02 3.912900e+02
-12 11917     6.628600e+02 3.607200e+02
-2 11918     -4.674400e+02 1.900200e+02
-7 11918     -4.045300e+02 4.874300e+02
-2 11919     4.882400e+02 1.894600e+02
-7 11919     4.261100e+02 3.814100e+02
-10 11919     5.900300e+02 4.491200e+02
-2 11920     6.880601e+02 1.885900e+02
-10 11920     7.987000e+02 3.714200e+02
-2 11921     -1.900000e+01 1.866100e+02
-13 11921     4.274200e+02 1.291500e+02
-2 11922     7.144399e+02 1.867100e+02
-3 11922     5.659600e+02 -1.217500e+02
-7 11922     6.260601e+02 3.262200e+02
-12 11922     7.329200e+02 3.462200e+02
-2 11923     7.569399e+02 1.859100e+02
-7 11923     6.650699e+02 3.150500e+02
-9 11923     5.024399e+02 2.635400e+02
-2 11924     7.569399e+02 1.859100e+02
-7 11924     6.650699e+02 3.150500e+02
-9 11924     5.024399e+02 2.635400e+02
-2 11925     7.112900e+02 1.850600e+02
-10 11925     8.225800e+02 3.575800e+02
-2 11926     7.282800e+02 1.848700e+02
-12 11926     7.494301e+02 3.421400e+02
-2 11927     -5.507100e+02 1.844900e+02
-5 11927     1.355100e+02 -2.163400e+02
-12 11927     -5.945900e+02 3.944500e+02
-2 11928     -4.310000e+02 1.846700e+02
-7 11928     -3.672900e+02 4.865500e+02
-12 11928     -4.585500e+02 4.112800e+02
-2 11929     -4.024800e+02 1.845000e+02
-3 11929     -5.323700e+02 -1.462400e+02
-7 11929     -3.382600e+02 4.892800e+02
-2 11930     -4.024800e+02 1.845000e+02
-5 11930     2.819301e+02 -2.180900e+02
-7 11930     -3.382600e+02 4.892800e+02
-2 11931     -5.065997e+01 1.843400e+02
-14 11931     5.706200e+02 -2.994000e+02
-2 11932     5.099399e+02 1.843600e+02
-3 11932     3.700000e+02 -1.312300e+02
-6 11932     4.282700e+02 3.597600e+02
-8 11932     4.785200e+02 1.222600e+02
-9 11932     2.955601e+02 2.538100e+02
-10 11932     6.114600e+02 4.351600e+02
-15 11932     8.128199e+02 4.948900e+02
-2 11933     -5.115200e+02 1.832600e+02
-5 11933     1.731700e+02 -2.182800e+02
-2 11934     -5.684400e+02 1.813600e+02
-5 11934     1.181800e+02 -2.189700e+02
-7 11934     -5.052700e+02 4.691800e+02
-8 11934     -3.871200e+02 1.307200e+02
-11 11934     -1.072600e+02 -3.242300e+02
-12 11934     -6.141600e+02 3.884400e+02
-14 11934     3.346002e+01 -3.098600e+02
-2 11935     6.928400e+02 1.810900e+02
-3 11935     5.458800e+02 -1.279200e+02
-12 11935     7.095200e+02 3.426100e+02
-2 11936     6.259800e+02 1.801500e+02
-6 11936     5.568500e+02 3.393400e+02
-10 11936     7.301100e+02 3.859800e+02
-12 11936     6.365100e+02 3.497900e+02
-2 11937     -5.655900e+02 1.793400e+02
-7 11937     -5.019100e+02 4.680900e+02
-2 11938     -6.556300e+02 1.779300e+02
-7 11938     -5.908800e+02 4.574000e+02
-2 11939     -4.223800e+02 1.770000e+02
-11 11939     2.165002e+01 -3.267400e+02
-2 11940     5.095000e+02 1.766100e+02
-6 11940     4.273400e+02 3.526300e+02
-10 11940     6.091100e+02 4.276100e+02
-15 11940     8.106000e+02 4.870600e+02
-2 11941     5.228300e+02 1.752800e+02
-6 11941     4.423600e+02 3.486100e+02
-10 11941     6.223500e+02 4.209300e+02
-15 11941     8.261200e+02 4.778400e+02
-2 11942     -5.306600e+02 1.742700e+02
-7 11942     -4.674000e+02 4.667900e+02
-12 11942     -5.715300e+02 3.864600e+02
-2 11943     4.667700e+02 1.744700e+02
-10 11943     5.670800e+02 4.409000e+02
-2 11944     4.667700e+02 1.744700e+02
-10 11944     5.670800e+02 4.409000e+02
-2 11945     -6.560500e+02 1.716400e+02
-7 11945     -5.902700e+02 4.520900e+02
-10 11945     -5.866200e+02 6.178400e+02
-12 11945     -7.116300e+02 3.663100e+02
-2 11946     -6.000200e+02 1.716000e+02
-10 11946     -5.217000e+02 6.218700e+02
-2 11947     -5.447900e+02 1.703600e+02
-12 11947     -5.867000e+02 3.810900e+02
-2 11948     6.235000e+02 1.704200e+02
-6 11948     5.534200e+02 3.296100e+02
-10 11948     7.248199e+02 3.771100e+02
-2 11949     -7.842999e+01 1.701300e+02
-13 11949     3.717500e+02 1.133700e+02
-14 11949     5.380300e+02 -3.129400e+02
-2 11950     -7.230900e+02 1.689200e+02
-5 11950     -2.652002e+01 -2.275900e+02
-8 11950     -5.127000e+02 1.177600e+02
-12 11950     -7.866100e+02 3.536000e+02
-2 11951     6.925000e+02 1.679300e+02
-10 11951     7.980400e+02 3.463300e+02
-2 11952     4.916600e+02 1.670100e+02
-6 11952     4.070200e+02 3.444600e+02
-8 11952     4.635200e+02 1.091200e+02
-9 11952     2.805601e+02 2.390600e+02
-10 11952     5.894700e+02 4.234600e+02
-12 11952     4.919399e+02 3.532800e+02
-15 11952     7.870100e+02 4.802000e+02
-2 11953     3.636400e+02 1.664700e+02
-7 11953     3.471100e+02 4.121200e+02
-2 11954     5.086200e+02 1.667900e+02
-6 11954     4.258000e+02 3.410400e+02
-2 11955     5.086200e+02 1.667900e+02
-6 11955     4.258000e+02 3.410400e+02
-2 11956     -6.374100e+02 1.650800e+02
-5 11956     5.184003e+01 -2.313000e+02
-7 11956     -5.713700e+02 4.489300e+02
-11 11956     -1.659800e+02 -3.348600e+02
-13 11956     -8.985999e+01 8.673001e+01
-14 11956     -3.178003e+01 -3.235800e+02
-2 11957     6.572000e+02 1.648300e+02
-10 11957     7.590300e+02 3.570600e+02
-2 11958     6.602300e+02 1.636300e+02
-9 11958     4.234800e+02 2.412900e+02
-12 11958     6.732600e+02 3.268600e+02
-2 11959     6.298300e+02 1.632400e+02
-6 11959     5.600601e+02 3.212800e+02
-10 11959     7.298900e+02 3.664700e+02
-2 11960     -6.566200e+02 1.621800e+02
-7 11960     -5.900300e+02 4.438300e+02
-12 11960     -7.113500e+02 3.569500e+02
-2 11961     -6.566200e+02 1.621800e+02
-7 11961     -5.900300e+02 4.438300e+02
-10 11961     -5.866700e+02 6.084200e+02
-12 11961     -7.113500e+02 3.569500e+02
-2 11962     6.151801e+02 1.616300e+02
-6 11962     5.434600e+02 3.208300e+02
-7 11962     5.333199e+02 3.260400e+02
-9 11962     3.849399e+02 2.380500e+02
-12 11962     6.224301e+02 3.304200e+02
-2 11963     5.254800e+02 1.608200e+02
-6 11963     4.443000e+02 3.332600e+02
-9 11963     3.095100e+02 2.349000e+02
-2 11964     7.535200e+02 1.599500e+02
-7 11964     6.581200e+02 2.919300e+02
-2 11965     7.535200e+02 1.599500e+02
-12 11965     7.750200e+02 3.110800e+02
-2 11966     3.629500e+02 1.593700e+02
-10 11966     5.126000e+02 4.967200e+02
-12 11966     3.789800e+02 3.808600e+02
-2 11967     3.629500e+02 1.593700e+02
-6 11967     2.755500e+02 3.827500e+02
-10 11967     5.126000e+02 4.967200e+02
-12 11967     3.789800e+02 3.808600e+02
-2 11968     5.570500e+02 1.588500e+02
-6 11968     4.791000e+02 3.257700e+02
-12 11968     5.608101e+02 3.356200e+02
-15 11968     8.640100e+02 4.409300e+02
-2 11969     -7.371900e+02 1.584200e+02
-5 11969     -3.970001e+01 -2.359000e+02
-8 11969     -5.233300e+02 1.089900e+02
-10 11969     -6.772200e+02 5.983700e+02
-12 11969     -7.999800e+02 3.419500e+02
-14 11969     -1.221500e+02 -3.294300e+02
-2 11970     -7.073900e+02 1.584800e+02
-12 11970     -7.668800e+02 3.462300e+02
-2 11971     -6.059400e+02 1.584000e+02
-7 11971     -5.397900e+02 4.459900e+02
-14 11971     -2.650024e+00 -3.294500e+02
-2 11972     6.834200e+02 1.587100e+02
-9 11972     4.437500e+02 2.358900e+02
-10 11972     7.855699e+02 3.393600e+02
-12 11972     6.989900e+02 3.157000e+02
-2 11973     6.989200e+02 1.586100e+02
-9 11973     4.560601e+02 2.390400e+02
-2 11974     -6.932300e+02 1.580400e+02
-10 11974     -6.285100e+02 6.018000e+02
-2 11975     -4.582300e+02 1.562900e+02
-8 11975     -2.961700e+02 1.133900e+02
-12 11975     -4.864400e+02 3.794800e+02
-2 11976     -4.582300e+02 1.562900e+02
-12 11976     -4.864400e+02 3.794800e+02
-2 11977     6.474500e+02 1.554900e+02
-3 11977     5.047600e+02 -1.537400e+02
-9 11977     4.127000e+02 2.345400e+02
-10 11977     7.472900e+02 3.503000e+02
-12 11977     6.590800e+02 3.200100e+02
-2 11978     -5.420200e+02 1.547400e+02
-10 11978     -4.520700e+02 6.087200e+02
-2 11979     7.756100e+02 1.545900e+02
-3 11979     6.264399e+02 -1.498200e+02
-7 11979     6.767000e+02 2.814800e+02
-2 11980     7.756100e+02 1.545900e+02
-3 11980     6.264399e+02 -1.498200e+02
-7 11980     6.767000e+02 2.814800e+02
-2 11981     -6.406800e+02 1.534000e+02
-12 11981     -6.923200e+02 3.502500e+02
-2 11982     -5.898800e+02 1.536000e+02
-10 11982     -5.082200e+02 6.042500e+02
-12 11982     -6.349700e+02 3.571600e+02
-2 11983     -4.074500e+02 1.523400e+02
-7 11983     -3.416500e+02 4.608000e+02
-8 11983     -2.557300e+02 1.106500e+02
-12 11983     -4.293300e+02 3.817000e+02
-2 11984     7.755500e+02 1.520400e+02
-3 11984     6.260000e+02 -1.523000e+02
-7 11984     6.760601e+02 2.789100e+02
-2 11985     -1.418000e+02 1.506800e+02
-14 11985     4.655699e+02 -3.328900e+02
-2 11986     -1.796200e+02 1.505800e+02
-7 11986     -1.066600e+02 4.817400e+02
-2 11987     -4.051000e+02 1.498600e+02
-5 11987     2.755601e+02 -2.489700e+02
-12 11987     -4.260300e+02 3.803400e+02
-2 11988     6.756300e+02 1.496400e+02
-10 11988     7.750000e+02 3.330700e+02
-2 11989     -2.770000e+02 1.484100e+02
-6 11989     -4.540100e+02 3.978500e+02
-9 11989     -3.821600e+02 1.927500e+02
-2 11990     6.959399e+02 1.485400e+02
-9 11990     4.532500e+02 2.306000e+02
-10 11990     7.965500e+02 3.233300e+02
-12 11990     7.110000e+02 3.066000e+02
-2 11991     6.959399e+02 1.485400e+02
-12 11991     7.110000e+02 3.066000e+02
-2 11992     -5.834200e+02 1.481000e+02
-7 11992     -5.168900e+02 4.394700e+02
-10 11992     -5.000600e+02 5.992900e+02
-2 11993     -7.378400e+02 1.465400e+02
-10 11993     -6.775500e+02 5.875500e+02
-12 11993     -7.998000e+02 3.302100e+02
-2 11994     1.188100e+02 1.458200e+02
-3 11994     2.203003e+01 -1.720700e+02
-8 11994     1.336600e+02 7.679001e+01
-12 11994     -2.590002e+01 2.286900e+02
-2 11995     3.146100e+02 1.444200e+02
-3 11995     2.067900e+02 -1.696900e+02
-8 11995     2.956700e+02 7.354999e+01
-2 11996     7.052800e+02 1.437700e+02
-12 11996     7.208400e+02 3.003400e+02
-2 11997     -3.233000e+02 1.435000e+02
-3 11997     -4.537800e+02 -1.886100e+02
-6 11997     -5.060500e+02 3.799500e+02
-8 11997     -1.844500e+02 1.046500e+02
-9 11997     -4.195200e+02 1.865300e+02
-2 11998     -7.143000e+02 1.431400e+02
-14 11998     -1.033500e+02 -3.412900e+02
-2 11999     7.194301e+02 1.430200e+02
-12 11999     7.355699e+02 2.986200e+02
-2 12000     8.313199e+02 1.428300e+02
-3 12000     6.794700e+02 -1.590200e+02
-7 12000     7.252300e+02 2.565800e+02
-9 12000     5.646300e+02 2.296100e+02
-2 12001     8.313199e+02 1.428300e+02
-3 12001     6.794700e+02 -1.590200e+02
-7 12001     7.252300e+02 2.565800e+02
-9 12001     5.646300e+02 2.296100e+02
-2 12002     -5.594500e+02 1.425800e+02
-7 12002     -4.947100e+02 4.359600e+02
-2 12003     -5.383400e+02 1.425500e+02
-14 12003     5.801001e+01 -3.444300e+02
-2 12004     -5.847600e+02 1.412300e+02
-5 12004     9.845001e+01 -2.531500e+02
-7 12004     -5.177700e+02 4.336800e+02
-10 12004     -5.014400e+02 5.926200e+02
-14 12004     1.458002e+01 -3.440200e+02
-2 12005     -6.700600e+02 1.402700e+02
-10 12005     -5.991200e+02 5.858400e+02
-2 12006     -2.614400e+02 1.405300e+02
-12 12006     -2.613000e+02 3.906700e+02
-2 12007     -3.085300e+02 1.386400e+02
-5 12007     3.732600e+02 -2.645700e+02
-6 12007     -4.876800e+02 3.762000e+02
-7 12007     -2.456400e+02 4.548100e+02
-9 12007     -4.057600e+02 1.837400e+02
-2 12008     -3.183600e+02 1.380900e+02
-5 12008     3.637000e+02 -2.648600e+02
-6 12008     -4.983900e+02 3.741700e+02
-8 12008     -1.786900e+02 1.009900e+02
-9 12008     -4.141600e+02 1.824700e+02
-2 12009     -6.813900e+02 1.376100e+02
-10 12009     -6.126600e+02 5.822600e+02
-2 12010     -6.813900e+02 1.376100e+02
-7 12010     -6.113200e+02 4.209200e+02
-2 12011     -3.925000e+02 1.377100e+02
-7 12011     -3.255500e+02 4.499600e+02
-2 12012     -6.940100e+02 1.354400e+02
-7 12012     -6.235800e+02 4.171600e+02
-2 12013     -5.911200e+02 1.339400e+02
-7 12013     -5.232500e+02 4.255800e+02
-10 12013     -5.076600e+02 5.840900e+02
-12 12013     -6.344800e+02 3.373800e+02
-14 12013     8.099976e+00 -3.511300e+02
-2 12014     5.245300e+02 1.331200e+02
-6 12014     4.423600e+02 3.029800e+02
-2 12015     5.245300e+02 1.331200e+02
-6 12015     4.423600e+02 3.029800e+02
-2 12016     -7.049100e+02 1.327500e+02
-12 12016     -7.613900e+02 3.216300e+02
-2 12017     -6.389600e+02 1.324100e+02
-10 12017     -5.626100e+02 5.807500e+02
-2 12018     -6.604100e+02 1.310400e+02
-10 12018     -5.868200e+02 5.780300e+02
-12 12018     -7.113800e+02 3.258300e+02
-2 12019     -7.182800e+02 1.299400e+02
-7 12019     -6.455700e+02 4.106600e+02
-8 12019     -5.081100e+02 8.725000e+01
-10 12019     -6.528500e+02 5.725800e+02
-11 12019     -2.326100e+02 -3.579800e+02
-12 12019     -7.753400e+02 3.162000e+02
-14 12019     -1.078800e+02 -3.527400e+02
-2 12020     -4.722000e+02 1.299200e+02
-7 12020     -4.054700e+02 4.351000e+02
-10 12020     -3.673600e+02 5.895000e+02
-12 12020     -5.006400e+02 3.503700e+02
-2 12021     -4.722000e+02 1.299200e+02
-7 12021     -4.054700e+02 4.351000e+02
-10 12021     -3.673600e+02 5.895000e+02
-12 12021     -5.006400e+02 3.503700e+02
-2 12022     7.636300e+02 1.292200e+02
-7 12022     6.616300e+02 2.604100e+02
-2 12023     -6.233900e+02 1.278400e+02
-7 12023     -5.541000e+02 4.183400e+02
-10 12023     -5.433400e+02 5.762300e+02
-2 12024     -4.991100e+02 1.281100e+02
-5 12024     1.794700e+02 -2.665500e+02
-8 12024     -3.300400e+02 8.976999e+01
-12 12024     -5.311900e+02 3.444600e+02
-2 12025     6.072800e+02 1.278900e+02
-6 12025     5.332900e+02 2.859900e+02
-8 12025     5.585699e+02 7.325000e+01
-10 12025     6.981000e+02 3.364700e+02
-12 12025     6.134100e+02 2.961100e+02
-2 12026     6.072800e+02 1.278900e+02
-6 12026     5.332900e+02 2.859900e+02
-8 12026     5.585699e+02 7.325000e+01
-12 12026     6.134100e+02 2.961100e+02
-2 12027     -5.923700e+02 1.275700e+02
-7 12027     -5.263000e+02 4.197900e+02
-13 12027     -5.937000e+01 6.133002e+01
-2 12028     -5.632700e+02 1.268600e+02
-10 12028     -4.755500e+02 5.791100e+02
-2 12029     2.848400e+02 1.269300e+02
-7 12029     6.671002e+01 2.090800e+02
-12 12029     1.447200e+02 1.963100e+02
-2 12030     -5.970100e+02 1.261000e+02
-7 12030     -5.284100e+02 4.195700e+02
-8 12030     -4.091200e+02 8.723999e+01
-12 12030     -6.402700e+02 3.291600e+02
-2 12031     3.101300e+02 1.250900e+02
-3 12031     2.049600e+02 -1.875200e+02
-7 12031     9.321002e+01 2.081300e+02
-12 12031     1.757700e+02 1.965600e+02
-13 12031     5.290300e+02 -1.521900e+02
-2 12032     5.600100e+02 1.244200e+02
-3 12032     4.215500e+02 -1.868600e+02
-6 12032     4.813500e+02 2.886500e+02
-8 12032     5.200300e+02 7.178000e+01
-15 12032     8.601400e+02 3.952200e+02
-2 12033     -6.114700e+02 1.242200e+02
-10 12033     -5.308400e+02 5.741900e+02
-2 12034     -4.782900e+02 1.238200e+02
-10 12034     -3.741900e+02 5.834800e+02
-2 12035     -6.007800e+02 1.235100e+02
-5 12035     8.191998e+01 -2.679800e+02
-7 12035     -5.314000e+02 4.170100e+02
-8 12035     -4.121800e+02 8.522000e+01
-2 12036     8.026200e+02 1.233800e+02
-7 12036     6.958600e+02 2.456500e+02
-9 12036     5.417600e+02 2.125000e+02
-12 12036     8.260100e+02 2.653600e+02
-2 12037     -7.240200e+02 1.230700e+02
-7 12037     -6.507200e+02 4.046100e+02
-12 12037     -7.812700e+02 3.093600e+02
-14 12037     -1.139600e+02 -3.583000e+02
-2 12038     -2.583600e+02 1.231800e+02
-3 12038     -3.930100e+02 -2.085800e+02
-5 12038     4.249900e+02 -2.755200e+02
-6 12038     -4.295200e+02 3.734500e+02
-9 12038     -3.650600e+02 1.715900e+02
-10 12038     -1.054100e+02 5.983800e+02
-11 12038     1.745500e+02 -3.665700e+02
-12 12038     -2.571300e+02 3.729400e+02
-14 12038     3.379200e+02 -3.596100e+02
-2 12039     -2.583600e+02 1.231800e+02
-5 12039     4.249900e+02 -2.755200e+02
-14 12039     3.379200e+02 -3.596100e+02
-2 12040     1.719400e+02 1.224000e+02
-8 12040     1.743300e+02 5.501999e+01
-9 12040     2.903003e+01 1.935800e+02
-10 12040     -3.163000e+01 2.528600e+02
-2 12041     1.719400e+02 1.224000e+02
-8 12041     1.743300e+02 5.501999e+01
-2 12042     1.545100e+02 1.221300e+02
-12 12042     1.830017e+00 1.920200e+02
-2 12043     6.973700e+02 1.221400e+02
-10 12043     7.919600e+02 2.941800e+02
-2 12044     6.973700e+02 1.221400e+02
-9 12044     4.550500e+02 2.084400e+02
-10 12044     7.919600e+02 2.941800e+02
-12 12044     7.105000e+02 2.777300e+02
-2 12045     -5.321800e+02 1.214400e+02
-12 12045     -5.674500e+02 3.339700e+02
-2 12046     2.621300e+02 1.211400e+02
-8 12046     2.490300e+02 5.301001e+01
-2 12047     2.285400e+02 1.204400e+02
-5 12047     7.567200e+02 -5.845699e+02
-6 12047     5.644000e+01 1.333700e+02
-8 12047     2.206000e+02 5.228000e+01
-2 12048     2.558800e+02 1.206800e+02
-8 12048     2.433600e+02 5.251001e+01
-2 12049     7.098999e+01 1.198400e+02
-6 12049     -1.073300e+02 1.466400e+02
-7 12049     -1.156600e+02 2.313800e+02
-10 12049     -1.103900e+02 2.846500e+02
-12 12049     -7.759003e+01 2.006500e+02
-2 12050     -3.835500e+02 1.187400e+02
-5 12050     2.934900e+02 -2.767800e+02
-2 12051     -3.835500e+02 1.187400e+02
-5 12051     2.934900e+02 -2.767800e+02
-2 12052     2.314399e+02 1.185000e+02
-8 12052     2.230100e+02 5.107001e+01
-2 12053     2.314399e+02 1.185000e+02
-5 12053     7.589301e+02 -5.872900e+02
-8 12053     2.230100e+02 5.107001e+01
-10 12053     2.401001e+01 2.334800e+02
-15 12053     1.016400e+02 2.477700e+02
-2 12054     2.245500e+02 1.169200e+02
-6 12054     5.175000e+01 1.290000e+02
-10 12054     1.598999e+01 2.334000e+02
-12 12054     7.366998e+01 1.814200e+02
-15 12054     9.232001e+01 2.473500e+02
-2 12055     -3.814800e+02 1.163800e+02
-6 12055     -5.752000e+02 3.407600e+02
-12 12055     -3.971300e+02 3.494700e+02
-2 12056     5.565900e+02 1.159400e+02
-6 12056     4.765500e+02 2.802600e+02
-2 12057     1.598500e+02 1.143800e+02
-3 12057     6.490002e+01 -2.005700e+02
-6 12057     -1.670001e+01 1.275500e+02
-12 12057     5.169983e+00 1.817900e+02
-2 12058     1.598500e+02 1.143800e+02
-3 12058     6.490002e+01 -2.005700e+02
-5 12058     6.827400e+02 -5.720400e+02
-6 12058     -1.670001e+01 1.275500e+02
-10 12058     -4.632001e+01 2.456800e+02
-12 12058     5.169983e+00 1.817900e+02
-15 12058     1.970001e+01 2.606800e+02
-2 12059     -3.931800e+02 1.142100e+02
-9 12059     -4.799200e+02 1.592300e+02
-14 12059     1.986200e+02 -3.673500e+02
-2 12060     5.538199e+02 1.139400e+02
-3 12060     4.154399e+02 -1.971500e+02
-6 12060     4.736000e+02 2.782100e+02
-9 12060     3.346000e+02 1.962200e+02
-12 12060     5.555000e+02 2.882600e+02
-13 12060     8.488000e+02 -9.160999e+01
-2 12061     6.937400e+02 1.134200e+02
-9 12061     4.521899e+02 2.008600e+02
-10 12061     7.847400e+02 2.851500e+02
-2 12062     5.421600e+02 1.132900e+02
-15 12062     8.357100e+02 3.886000e+02
-2 12063     9.704999e+01 1.115000e+02
-5 12063     6.229000e+02 -5.533000e+02
-6 12063     -8.145999e+01 1.310700e+02
-10 12063     -9.667999e+01 2.632400e+02
-15 12063     -3.859998e+01 2.803500e+02
-2 12064     -6.069700e+02 1.108500e+02
-5 12064     7.431000e+01 -2.783000e+02
-7 12064     -5.365700e+02 4.060800e+02
-10 12064     -5.243300e+02 5.619600e+02
-2 12065     -4.763500e+02 1.107100e+02
-7 12065     -4.085700e+02 4.188300e+02
-10 12065     -3.713800e+02 5.708300e+02
-12 12065     -5.037700e+02 3.312000e+02
-2 12066     1.613000e+01 1.108100e+02
-3 12066     -7.617999e+01 -2.080900e+02
-2 12067     -4.812400e+02 1.107700e+02
-10 12067     -3.770900e+02 5.705100e+02
-2 12068     2.142400e+02 1.099000e+02
-6 12068     3.994000e+01 1.194900e+02
-2 12069     -6.480000e+02 1.088800e+02
-8 12069     -4.512800e+02 7.260999e+01
-10 12069     -5.705600e+02 5.571000e+02
-2 12070     2.517600e+02 1.091600e+02
-5 12070     7.783500e+02 -6.041700e+02
-6 12070     8.025000e+01 1.192100e+02
-10 12070     3.988000e+01 2.176800e+02
-12 12070     1.018500e+02 1.712100e+02
-15 12070     1.203500e+02 2.292300e+02
-2 12071     6.231899e+02 1.087900e+02
-10 12071     7.104900e+02 3.093300e+02
-2 12072     -5.900700e+02 1.078200e+02
-7 12072     -5.202200e+02 4.043000e+02
-10 12072     -5.045700e+02 5.596400e+02
-2 12073     2.361600e+02 1.071800e+02
-6 12073     6.294000e+01 1.164200e+02
-7 12073     1.116998e+01 1.881400e+02
-8 12073     2.266800e+02 4.114999e+01
-12 12073     8.416998e+01 1.687500e+02
-2 12074     -6.147300e+02 1.068100e+02
-10 12074     -5.328600e+02 5.572600e+02
-2 12075     -6.147300e+02 1.068100e+02
-12 12075     -6.579700e+02 3.082900e+02
-2 12076     2.437100e+02 1.054700e+02
-13 12076     4.646400e+02 -1.665900e+02
-2 12077     -3.714700e+02 1.050000e+02
-6 12077     -5.626000e+02 3.301600e+02
-2 12078     9.835999e+01 1.048500e+02
-6 12078     -8.031000e+01 1.219900e+02
-10 12078     -9.907001e+01 2.538700e+02
-15 12078     -4.146002e+01 2.691600e+02
-2 12079     4.910500e+02 1.047500e+02
-6 12079     4.040700e+02 2.773000e+02
-10 12079     5.773101e+02 3.573600e+02
-12 12079     4.895601e+02 2.866700e+02
-2 12080     5.083101e+02 1.045900e+02
-3 12080     3.720100e+02 -2.085500e+02
-6 12080     4.233900e+02 2.739300e+02
-8 12080     4.767600e+02 5.709000e+01
-9 12080     2.965000e+02 1.867800e+02
-12 12080     5.078000e+02 2.837500e+02
-15 12080     7.940900e+02 3.923400e+02
-2 12081     7.088300e+02 1.045800e+02
-10 12081     7.986801e+02 2.699500e+02
-12 12081     7.218300e+02 2.571400e+02
-2 12082     7.088300e+02 1.045800e+02
-10 12082     7.986801e+02 2.699500e+02
-12 12082     7.218300e+02 2.571400e+02
-2 12083     3.406300e+02 1.041200e+02
-4 12083     -2.744500e+02 -5.830000e+02
-7 12083     1.180700e+02 1.851300e+02
-13 12083     5.510100e+02 -1.722700e+02
-15 12083     2.497300e+02 2.180300e+02
-2 12084     3.662000e+01 1.036600e+02
-5 12084     5.683800e+02 -5.387500e+02
-6 12084     -1.429700e+02 1.315800e+02
-2 12085     5.340601e+02 1.029500e+02
-6 12085     4.511801e+02 2.694200e+02
-2 12086     4.985400e+02 1.015600e+02
-6 12086     4.123100e+02 2.729200e+02
-8 12086     4.683800e+02 5.512000e+01
-9 12086     2.879500e+02 1.839400e+02
-10 12086     5.840500e+02 3.509700e+02
-12 12086     4.973199e+02 2.825100e+02
-2 12087     6.092700e+02 1.014500e+02
-6 12087     5.340000e+02 2.575700e+02
-8 12087     5.599700e+02 5.148999e+01
-9 12087     3.819900e+02 1.878500e+02
-10 12087     6.939399e+02 3.073400e+02
-12 12087     6.143600e+02 2.676000e+02
-2 12088     6.092700e+02 1.014500e+02
-8 12088     5.599700e+02 5.148999e+01
-9 12088     3.819900e+02 1.878500e+02
-10 12088     6.939399e+02 3.073400e+02
-12 12088     6.143600e+02 2.676000e+02
-2 12089     7.168199e+02 1.016000e+02
-9 12089     4.712000e+02 1.916600e+02
-2 12090     -5.874400e+02 1.011100e+02
-10 12090     -5.010500e+02 5.530900e+02
-12 12090     -6.270900e+02 3.057700e+02
-2 12091     2.007600e+02 1.007200e+02
-13 12091     4.295400e+02 -1.653600e+02
-2 12092     5.566600e+02 1.006300e+02
-3 12092     4.189500e+02 -2.097500e+02
-6 12092     4.761500e+02 2.639300e+02
-7 12092     4.761801e+02 2.850900e+02
-8 12092     5.160900e+02 5.257999e+01
-9 12092     3.373400e+02 1.854400e+02
-13 12092     8.499399e+02 -1.030500e+02
-2 12093     6.133700e+02 1.003300e+02
-6 12093     5.384800e+02 2.558100e+02
-10 12093     6.984399e+02 3.041600e+02
-12 12093     6.173101e+02 2.658000e+02
-2 12094     6.133700e+02 1.003300e+02
-6 12094     5.384800e+02 2.558100e+02
-10 12094     6.984399e+02 3.041600e+02
-2 12095     -6.513400e+02 9.965002e+01
-7 12095     -5.784300e+02 3.922400e+02
-10 12095     -5.736600e+02 5.482300e+02
-2 12096     -6.560300e+02 9.907001e+01
-10 12096     -5.793100e+02 5.474700e+02
-2 12097     -8.365997e+01 9.910999e+01
-7 12097     -3.310999e+01 4.199400e+02
-2 12098     4.593700e+02 9.883002e+01
-15 12098     7.361100e+02 4.066800e+02
-2 12099     6.236400e+02 9.884003e+01
-9 12099     3.948000e+02 1.864000e+02
-10 12099     7.092500e+02 2.983800e+02
-2 12100     8.641998e+01 9.679999e+01
-10 12100     -1.118900e+02 2.479200e+02
-2 12101     9.128998e+01 9.662000e+01
-5 12101     6.125000e+02 -5.693101e+02
-6 12101     -8.832999e+01 1.120500e+02
-8 12101     1.092300e+02 3.553000e+01
-10 12101     -1.088200e+02 2.456800e+02
-12 12101     -6.465002e+01 1.669200e+02
-15 12101     -5.285999e+01 2.593800e+02
-2 12102     2.823999e+01 9.609998e+01
-5 12102     5.588000e+02 -5.441400e+02
-6 12102     -1.517300e+02 1.233700e+02
-2 12103     1.006100e+02 9.240002e+01
-6 12103     -7.869000e+01 1.054800e+02
-2 12104     2.569301e+02 9.133002e+01
-6 12104     8.422998e+01 9.702002e+01
-10 12104     3.690997e+01 1.942900e+02
-12 12104     1.041000e+02 1.487600e+02
-2 12105     5.382000e+02 9.165002e+01
-6 12105     4.558300e+02 2.568000e+02
-2 12106     7.283000e+02 9.131000e+01
-10 12106     8.160900e+02 2.477200e+02
-12 12106     7.415500e+02 2.390000e+02
-2 12107     4.490002e+01 9.079999e+01
-6 12107     -1.358900e+02 1.127500e+02
-2 12108     -4.234500e+02 8.989001e+01
-12 12108     -4.424800e+02 3.175400e+02
-2 12109     -3.839100e+02 8.917999e+01
-6 12109     -5.761100e+02 3.104100e+02
-12 12109     -3.979900e+02 3.221100e+02
-2 12110     7.006300e+02 8.858002e+01
-10 12110     7.864100e+02 2.560500e+02
-2 12111     2.272500e+02 8.688000e+01
-6 12111     5.215997e+01 9.067999e+01
-8 12111     2.180900e+02 2.401999e+01
-12 12111     7.053003e+01 1.435300e+02
-2 12112     2.188000e+02 8.629999e+01
-6 12112     4.307001e+01 9.037000e+01
-10 12112     -4.809998e+00 1.962500e+02
-12 12112     6.103998e+01 1.434200e+02
-15 12112     6.802002e+01 2.033000e+02
-2 12113     -4.271200e+02 8.557001e+01
-7 12113     -3.580000e+02 4.024500e+02
-14 12113     1.620400e+02 -3.929600e+02
-2 12114     2.455500e+02 8.566998e+01
-8 12114     2.330000e+02 2.260001e+01
-10 12114     2.222998e+01 1.895100e+02
-12 12114     9.019000e+01 1.418600e+02
-15 12114     9.938000e+01 1.960100e+02
-2 12115     3.599100e+02 8.559998e+01
-8 12115     3.302700e+02 2.307999e+01
-2 12116     6.160800e+02 8.559003e+01
-12 12116     6.211500e+02 2.491600e+02
-2 12117     5.964100e+02 8.471002e+01
-6 12117     5.192800e+02 2.423400e+02
-12 12117     5.997200e+02 2.528200e+02
-2 12118     5.964100e+02 8.471002e+01
-6 12118     5.192800e+02 2.423400e+02
-12 12118     5.997200e+02 2.528200e+02
-2 12119     -6.495300e+02 8.459003e+01
-7 12119     -5.753800e+02 3.800900e+02
-10 12119     -5.708000e+02 5.334000e+02
-12 12119     -6.943100e+02 2.809500e+02
-15 12119     -5.737300e+02 5.810900e+02
-2 12120     -6.222100e+02 8.456000e+01
-10 12120     -5.397800e+02 5.344900e+02
-12 12120     -6.640300e+02 2.846000e+02
-2 12121     6.716500e+02 8.409003e+01
-10 12121     7.544600e+02 2.637500e+02
-12 12121     6.800601e+02 2.399500e+02
-2 12122     6.716500e+02 8.409003e+01
-10 12122     7.544600e+02 2.637500e+02
-12 12122     6.800601e+02 2.399500e+02
-2 12123     4.868300e+02 8.319000e+01
-6 12123     3.992900e+02 2.548600e+02
-7 12123     4.154800e+02 2.857300e+02
-10 12123     5.699600e+02 3.357800e+02
-15 12123     7.654900e+02 3.746200e+02
-2 12124     1.906500e+02 8.262000e+01
-5 12124     7.032000e+02 -6.194399e+02
-6 12124     1.322998e+01 8.569000e+01
-10 12124     -3.406000e+01 1.968800e+02
-15 12124     3.406000e+01 2.042300e+02
-2 12125     1.906500e+02 8.262000e+01
-6 12125     1.322998e+01 8.569000e+01
-2 12126     4.525200e+02 8.253003e+01
-6 12126     3.612300e+02 2.583000e+02
-12 12126     4.490699e+02 2.681400e+02
-15 12126     7.251500e+02 3.882400e+02
-2 12127     4.768300e+02 8.246997e+01
-3 12127     3.421700e+02 -2.306100e+02
-6 12127     3.884500e+02 2.548600e+02
-9 12127     2.700100e+02 1.669300e+02
-15 12127     7.533101e+02 3.784700e+02
-2 12128     1.702500e+02 8.083002e+01
-5 12128     6.822900e+02 -6.149399e+02
-6 12128     -8.030029e+00 8.465002e+01
-10 12128     -5.260999e+01 2.009000e+02
-12 12128     9.340027e+00 1.389200e+02
-15 12128     1.215997e+01 2.082600e+02
-2 12129     3.467500e+02 8.031000e+01
-3 12129     2.422900e+02 -2.286700e+02
-6 12129     1.834300e+02 9.428003e+01
-8 12129     3.189000e+02 1.845999e+01
-12 12129     2.095200e+02 1.413300e+02
-13 12129     5.493700e+02 -1.958800e+02
-2 12130     4.497500e+02 8.066998e+01
-6 12130     3.584800e+02 2.573400e+02
-15 12130     7.219399e+02 3.878900e+02
-2 12131     6.390100e+02 7.996002e+01
-8 12131     5.846200e+02 3.257999e+01
-2 12132     6.550699e+02 7.967999e+01
-3 12132     5.159500e+02 -2.263800e+02
-6 12132     5.833199e+02 2.285500e+02
-10 12132     7.367500e+02 2.648900e+02
-12 12132     6.619900e+02 2.385000e+02
-2 12133     6.123800e+02 7.773999e+01
-8 12133     5.620800e+02 3.206000e+01
-12 12133     6.161400e+02 2.418800e+02
-2 12134     -5.733600e+02 7.651001e+01
-10 12134     -4.827700e+02 5.308700e+02
-12 12134     -6.085300e+02 2.839800e+02
-2 12135     -4.709900e+02 7.663000e+01
-14 12135     1.181200e+02 -4.001800e+02
-2 12136     6.724100e+02 7.632001e+01
-3 12136     5.328600e+02 -2.290200e+02
-7 12136     5.737800e+02 2.352700e+02
-2 12137     -4.155100e+02 7.583002e+01
-7 12137     -3.451900e+02 3.955800e+02
-9 12137     -4.971100e+02 1.241200e+02
-14 12137     1.732900e+02 -4.015000e+02
-2 12138     -4.155100e+02 7.583002e+01
-14 12138     1.732900e+02 -4.015000e+02
-2 12139     2.723199e+02 7.584003e+01
-10 12139     4.654999e+01 1.734000e+02
-2 12140     -5.269100e+02 7.482001e+01
-7 12140     -4.538900e+02 3.853200e+02
-2 12141     6.260601e+02 7.508002e+01
-6 12141     5.510300e+02 2.269200e+02
-9 12141     3.960500e+02 1.662500e+02
-2 12142     6.600200e+02 7.479999e+01
-7 12142     5.625400e+02 2.366400e+02
-2 12143     6.509700e+02 7.276001e+01
-10 12143     7.306400e+02 2.587900e+02
-2 12144     6.850400e+02 7.241998e+01
-9 12144     4.461700e+02 1.663800e+02
-10 12144     7.659000e+02 2.455100e+02
-2 12145     -6.845900e+02 7.203998e+01
-15 12145     -6.167200e+02 5.637700e+02
-2 12146     4.903998e+01 7.210999e+01
-5 12146     5.684600e+02 -5.805699e+02
-6 12146     -1.319300e+02 8.853998e+01
-10 12146     -1.476500e+02 2.324600e+02
-12 12146     -1.068500e+02 1.440400e+02
-15 12146     -9.739001e+01 2.434200e+02
-2 12147     -6.639900e+02 7.140002e+01
-5 12147     1.796002e+01 -3.097000e+02
-2 12148     6.483900e+02 7.100000e+01
-3 12148     5.097300e+02 -2.347400e+02
-6 12148     5.757700e+02 2.197400e+02
-10 12148     7.277900e+02 2.588800e+02
-2 12149     -6.381900e+02 7.012000e+01
-7 12149     -5.639300e+02 3.688500e+02
-11 12149     -1.720200e+02 -4.008100e+02
-2 12150     4.959100e+02 6.902002e+01
-10 12150     5.763700e+02 3.175400e+02
-15 12150     7.733101e+02 3.534400e+02
-2 12151     4.959100e+02 6.902002e+01
-10 12151     5.763700e+02 3.175400e+02
-15 12151     7.733101e+02 3.534400e+02
-2 12152     -6.108800e+02 6.821997e+01
-10 12152     -5.250100e+02 5.192900e+02
-2 12153     5.212500e+02 6.848999e+01
-10 12153     6.005699e+02 3.077500e+02
-15 12153     8.022000e+02 3.420400e+02
-2 12154     2.248600e+02 6.672998e+01
-15 12154     6.591998e+01 1.743000e+02
-2 12155     3.981100e+02 6.659998e+01
-8 12155     3.625900e+02 8.549988e+00
-2 12156     2.822900e+02 6.582001e+01
-10 12156     5.314001e+01 1.599200e+02
-2 12157     5.019800e+02 6.516998e+01
-6 12157     4.151200e+02 2.338900e+02
-8 12157     4.715400e+02 2.547000e+01
-12 12157     5.000300e+02 2.442600e+02
-2 12158     -6.033600e+02 6.440997e+01
-12 12158     -6.405400e+02 2.678700e+02
-2 12159     -6.033600e+02 6.440997e+01
-10 12159     -5.157700e+02 5.176000e+02
-11 12159     -1.417300e+02 -4.056700e+02
-15 12159     -5.103000e+02 5.638700e+02
-2 12160     4.676000e+02 6.396002e+01
-15 12160     7.392300e+02 3.595000e+02
-2 12161     2.225200e+02 6.359998e+01
-7 12161     -1.301001e+01 1.432700e+02
-9 12161     7.488000e+01 1.464400e+02
-2 12162     -6.484400e+02 6.338000e+01
-11 12162     -1.797500e+02 -4.047300e+02
-2 12163     -4.272200e+02 6.190002e+01
-15 12163     -2.725300e+02 5.787500e+02
-2 12164     -1.091600e+02 6.227002e+01
-13 12164     3.132300e+02 -2.001953e-02
-2 12165     -1.091600e+02 6.227002e+01
-13 12165     3.132300e+02 -2.001953e-02
-14 12165     4.666801e+02 -4.542000e+02
-2 12166     2.199301e+02 6.179999e+01
-4 12166     -2.701700e+02 -4.691400e+02
-2 12167     5.969000e+02 6.182001e+01
-10 12167     6.735800e+02 2.706700e+02
-2 12168     -5.620000e+02 6.073999e+01
-5 12168     1.113100e+02 -3.236700e+02
-2 12169     -5.620000e+02 6.073999e+01
-5 12169     1.113100e+02 -3.236700e+02
-2 12170     -4.070300e+02 5.982001e+01
-11 12170     3.090002e+01 -4.127200e+02
-2 12171     -1.262500e+02 5.976001e+01
-6 12171     -2.770700e+02 2.873300e+02
-2 12172     3.069100e+02 5.871997e+01
-15 12172     1.685000e+02 1.492900e+02
-2 12173     3.069100e+02 5.871997e+01
-15 12173     1.685000e+02 1.492900e+02
-2 12174     6.971200e+02 5.756000e+01
-9 12174     4.557800e+02 1.542200e+02
-2 12175     1.012400e+02 5.475000e+01
-3 12175     1.160999e+01 -2.587400e+02
-5 12175     6.092300e+02 -6.199399e+02
-6 12175     -7.995001e+01 6.009003e+01
-10 12175     -1.173600e+02 1.928800e+02
-12 12175     -6.138000e+01 1.157600e+02
-15 12175     -6.239001e+01 1.975100e+02
-2 12176     3.592999e+01 5.387000e+01
-6 12176     -1.459200e+02 6.900000e+01
-2 12177     -6.014100e+02 5.221002e+01
-7 12177     -5.263400e+02 3.582500e+02
-2 12178     -6.014100e+02 5.221002e+01
-7 12178     -5.263400e+02 3.582500e+02
-2 12179     4.844900e+02 5.197998e+01
-6 12179     3.953400e+02 2.227800e+02
-8 12179     4.560300e+02 1.592999e+01
-12 12179     4.808300e+02 2.331000e+02
-15 12179     7.570601e+02 3.371700e+02
-2 12180     -5.957600e+02 5.187000e+01
-15 12180     -4.992100e+02 5.513100e+02
-2 12181     1.602900e+02 5.148999e+01
-6 12181     -1.991998e+01 5.067999e+01
-12 12181     -4.440002e+00 1.050300e+02
-15 12181     -1.001001e+01 1.712300e+02
-2 12182     4.821899e+02 4.934003e+01
-3 12182     3.482900e+02 -2.624700e+02
-6 12182     3.933200e+02 2.199300e+02
-9 12182     2.758300e+02 1.395600e+02
-15 12182     7.541700e+02 3.352800e+02
-2 12183     6.242800e+02 4.957001e+01
-6 12183     5.480400e+02 2.008800e+02
-9 12183     3.952600e+02 1.450100e+02
-2 12184     5.299600e+02 4.894000e+01
-6 12184     4.450800e+02 2.133400e+02
-2 12185     1.392300e+02 4.878998e+01
-6 12185     -4.139001e+01 4.916998e+01
-10 12185     -8.946002e+01 1.732900e+02
-15 12185     -3.038000e+01 1.749100e+02
-2 12186     6.602900e+02 4.778003e+01
-9 12186     4.256100e+02 1.443500e+02
-10 12186     7.344200e+02 2.292500e+02
-12 12186     6.659900e+02 2.020600e+02
-2 12187     1.454200e+02 4.590997e+01
-3 12187     5.552002e+01 -2.659400e+02
-6 12187     -3.532001e+01 4.528998e+01
-7 12187     -8.025000e+01 1.372600e+02
-12 12187     -1.959003e+01 1.004900e+02
-15 12187     -2.533002e+01 1.694700e+02
-2 12188     1.454200e+02 4.590997e+01
-12 12188     -1.959003e+01 1.004900e+02
-15 12188     -2.533002e+01 1.694700e+02
-2 12189     1.908900e+02 4.600000e+01
-6 12189     1.178998e+01 4.277002e+01
-10 12189     -4.571997e+01 1.558000e+02
-2 12190     -5.834800e+02 4.506000e+01
-7 12190     -5.081800e+02 3.541500e+02
-15 12190     -4.820900e+02 5.447500e+02
-2 12191     -1.473999e+01 4.485999e+01
-3 12191     -1.040000e+02 -2.717300e+02
-2 12192     9.570001e+01 4.444000e+01
-6 12192     -8.610999e+01 4.846002e+01
-2 12193     9.570001e+01 4.444000e+01
-6 12193     -8.610999e+01 4.846002e+01
-10 12193     -1.248600e+02 1.827700e+02
-2 12194     2.715200e+02 4.440002e+01
-15 12194     1.139600e+02 1.350000e+02
-2 12195     6.473101e+02 4.398999e+01
-6 12195     5.731700e+02 1.919600e+02
-8 12195     5.901899e+02 3.420013e+00
-10 12195     7.205000e+02 2.317400e+02
-12 12195     6.520500e+02 2.013900e+02
-2 12196     1.743400e+02 4.329999e+01
-6 12196     -5.239990e+00 4.044000e+01
-10 12196     -6.117999e+01 1.571800e+02
-15 12196     2.409973e+00 1.565800e+02
-2 12197     6.081000e+01 4.319000e+01
-8 12197     8.302002e+01 -8.010010e+00
-2 12198     6.081000e+01 4.319000e+01
-8 12198     8.302002e+01 -8.010010e+00
-2 12199     5.815997e+01 4.188000e+01
-5 12199     5.675400e+02 -6.175699e+02
-6 12199     -1.241800e+02 5.097998e+01
-2 12200     2.746899e+02 4.213000e+01
-9 12200     1.188500e+02 1.306300e+02
-15 12200     1.169500e+02 1.310300e+02
-2 12201     6.543600e+02 4.153003e+01
-6 12201     5.811500e+02 1.879500e+02
-9 12201     4.207100e+02 1.394500e+02
-12 12201     6.595300e+02 1.974800e+02
-2 12202     6.543600e+02 4.153003e+01
-6 12202     5.811500e+02 1.879500e+02
-9 12202     4.207100e+02 1.394500e+02
-12 12202     6.595300e+02 1.974800e+02
-2 12203     1.489100e+02 3.992999e+01
-6 12203     -3.204999e+01 3.782001e+01
-15 12203     -2.456000e+01 1.596500e+02
-2 12204     3.906600e+02 4.014001e+01
-3 12204     2.847600e+02 -2.657400e+02
-6 12204     2.296700e+02 5.540002e+01
-12 12204     2.583000e+02 9.858002e+01
-2 12205     2.109399e+02 3.965002e+01
-15 12205     4.052002e+01 1.415100e+02
-2 12206     2.109399e+02 3.965002e+01
-15 12206     4.052002e+01 1.415100e+02
-2 12207     2.198700e+02 3.910999e+01
-6 12207     4.238000e+01 3.434998e+01
-10 12207     -2.015002e+01 1.410400e+02
-12 12207     5.660999e+01 8.712000e+01
-15 12207     5.027002e+01 1.384100e+02
-2 12208     2.633600e+02 3.728003e+01
-4 12208     -2.979800e+02 -4.924700e+02
-10 12208     2.325000e+01 1.307600e+02
-15 12208     1.010900e+02 1.266300e+02
-2 12209     2.378600e+02 3.671002e+01
-7 12209     -4.599976e+00 1.154700e+02
-10 12209     -3.270020e+00 1.349800e+02
-2 12210     5.226000e+02 3.677002e+01
-6 12210     4.365400e+02 2.015900e+02
-10 12210     5.963101e+02 2.743500e+02
-15 12210     7.976400e+02 3.019300e+02
-2 12211     7.884998e+01 3.513000e+01
-6 12211     -1.032500e+02 4.031000e+01
-2 12212     1.469400e+02 3.427002e+01
-6 12212     -3.396002e+01 3.214001e+01
-10 12212     -8.746002e+01 1.550400e+02
-12 12212     -1.929999e+01 8.684003e+01
-15 12212     -2.760999e+01 1.535800e+02
-2 12213     1.469400e+02 3.427002e+01
-6 12213     -3.396002e+01 3.214001e+01
-8 12213     1.501300e+02 -1.832999e+01
-10 12213     -8.746002e+01 1.550400e+02
-12 12213     -1.929999e+01 8.684003e+01
-15 12213     -2.760999e+01 1.535800e+02
-2 12214     1.469400e+02 3.427002e+01
-10 12214     -8.746002e+01 1.550400e+02
-2 12215     5.067900e+02 3.331000e+01
-6 12215     4.188000e+02 2.002800e+02
-7 12215     4.273900e+02 2.376700e+02
-2 12216     2.940200e+02 3.215002e+01
-15 12216     1.381900e+02 1.153700e+02
-2 12217     6.565500e+02 3.214001e+01
-3 12217     5.200300e+02 -2.714200e+02
-7 12217     5.545900e+02 2.008400e+02
-8 12217     5.987800e+02 -6.309998e+00
-10 12217     7.273000e+02 2.155500e+02
-2 12218     6.528500e+02 3.153003e+01
-3 12218     5.163300e+02 -2.727800e+02
-6 12218     5.784700e+02 1.782500e+02
-7 12218     5.512900e+02 2.009200e+02
-9 12218     4.197300e+02 1.312000e+02
-10 12218     7.233300e+02 2.165100e+02
-12 12218     6.569399e+02 1.878000e+02
-2 12219     6.965300e+02 3.059998e+01
-9 12219     4.563000e+02 1.318300e+02
-12 12219     7.040200e+02 1.800500e+02
-2 12220     6.965300e+02 3.059998e+01
-9 12220     4.563000e+02 1.318300e+02
-2 12221     3.941400e+02 3.007001e+01
-3 12221     2.889700e+02 -2.751800e+02
-2 12222     3.941400e+02 3.007001e+01
-3 12222     2.889700e+02 -2.751800e+02
-2 12223     3.985699e+02 2.896002e+01
-3 12223     2.928800e+02 -2.765400e+02
-6 12223     2.379200e+02 4.444000e+01
-2 12224     5.198700e+02 2.870001e+01
-6 12224     4.335699e+02 1.932500e+02
-10 12224     5.919000e+02 2.672500e+02
-12 12224     5.174399e+02 2.032400e+02
-2 12225     6.774900e+02 2.720001e+01
-3 12225     5.396600e+02 -2.754400e+02
-7 12225     5.715400e+02 1.913400e+02
-9 12225     4.402600e+02 1.286800e+02
-2 12226     8.130601e+02 2.710999e+01
-7 12226     6.901700e+02 1.557500e+02
-2 12227     1.510200e+02 2.671997e+01
-6 12227     -3.009003e+01 2.397998e+01
-2 12228     5.245200e+02 2.633002e+01
-6 12228     4.383800e+02 1.901400e+02
-12 12228     5.220400e+02 2.002500e+02
-2 12229     -3.797300e+02 2.540997e+01
-7 12229     -3.175200e+02 3.479300e+02
-10 12229     -2.674200e+02 4.826100e+02
-11 12229     4.159998e+01 -4.469300e+02
-14 12229     1.984100e+02 -4.559900e+02
-2 12230     -1.027500e+02 2.570001e+01
-3 12230     -2.018400e+02 -2.952400e+02
-2 12231     4.015400e+02 2.560999e+01
-13 12231     5.910100e+02 -2.434300e+02
-2 12232     6.836200e+02 2.548999e+01
-7 12232     5.776500e+02 1.879300e+02
-2 12233     2.570900e+02 2.515002e+01
-6 12233     8.087000e+01 1.948999e+01
-10 12233     1.290002e+01 1.186500e+02
-2 12234     1.912600e+02 2.434003e+01
-6 12234     1.152002e+01 1.901001e+01
-10 12234     -5.104999e+01 1.321200e+02
-15 12234     1.416998e+01 1.274600e+02
-2 12235     7.129399e+02 2.439001e+01
-3 12235     5.753700e+02 -2.760000e+02
-9 12235     4.701500e+02 1.276800e+02
-10 12235     7.844700e+02 1.853400e+02
-2 12236     -6.352400e+02 2.394000e+01
-7 12236     -5.561300e+02 3.321000e+02
-8 12236     -4.396000e+02 6.859985e+00
-2 12237     5.968700e+02 2.323999e+01
-6 12237     5.174900e+02 1.776600e+02
-8 12237     5.491100e+02 -1.123001e+01
-9 12237     3.735000e+02 1.224700e+02
-10 12237     6.661000e+02 2.307700e+02
-12 12237     5.980200e+02 1.872500e+02
-15 12237     8.818000e+02 2.510600e+02
-2 12238     -6.660999e+01 2.131000e+01
-5 12238     4.737500e+02 -5.701899e+02
-6 12238     -2.452600e+02 7.098999e+01
-10 12238     -2.039700e+02 2.477100e+02
-12 12238     -1.968400e+02 1.234100e+02
-15 12238     -1.588900e+02 2.592700e+02
-2 12239     1.456300e+02 2.116998e+01
-3 12239     5.671002e+01 -2.896800e+02
-6 12239     -3.532001e+01 1.753003e+01
-8 12239     1.492500e+02 -2.938000e+01
-10 12239     -9.153003e+01 1.414800e+02
-15 12239     -3.245001e+01 1.378700e+02
-2 12240     1.860200e+02 2.046997e+01
-6 12240     5.700012e+00 1.473999e+01
-12 12240     1.882001e+01 6.825000e+01
-15 12240     7.580017e+00 1.241000e+02
-2 12241     -4.778600e+02 1.992999e+01
-15 12241     -3.395600e+02 5.275300e+02
-2 12242     8.284003e+01 1.928003e+01
-6 12242     -9.920001e+01 2.192999e+01
-8 12242     9.896002e+01 -2.897000e+01
-15 12242     -8.850000e+01 1.592500e+02
-2 12243     1.793500e+02 1.841998e+01
-3 12243     8.952002e+01 -2.910000e+02
-15 12243     -1.300049e-01 1.237800e+02
-2 12244     4.014800e+02 1.841998e+01
-10 12244     1.939900e+02 1.031200e+02
-15 12244     3.042800e+02 9.603000e+01
-2 12245     2.773900e+02 1.833002e+01
-6 12245     1.020900e+02 1.262000e+01
-15 12245     1.125200e+02 9.942999e+01
-2 12246     -1.309200e+02 1.684003e+01
-5 12246     4.284500e+02 -5.390900e+02
-6 12246     -3.097200e+02 8.884998e+01
-10 12246     -2.261900e+02 2.835500e+02
-2 12247     -7.846997e+01 1.671002e+01
-6 12247     -2.587700e+02 6.233002e+01
-10 12247     -2.197200e+02 2.410400e+02
-12 12247     -2.115400e+02 1.155800e+02
-15 12247     -1.779700e+02 2.512000e+02
-2 12248     1.749500e+02 1.671002e+01
-12 12248     7.169983e+00 6.472998e+01
-15 12248     -4.890015e+00 1.228700e+02
-2 12249     7.466500e+02 1.577002e+01
-3 12249     6.084301e+02 -2.840100e+02
-7 12249     6.308199e+02 1.636600e+02
-9 12249     4.981400e+02 1.215900e+02
-2 12250     1.714800e+02 1.565002e+01
-3 12250     8.196997e+01 -2.939000e+02
-6 12250     -9.099976e+00 1.042999e+01
-10 12250     -7.084998e+01 1.285300e+02
-12 12250     3.700012e+00 6.421002e+01
-15 12250     -8.530029e+00 1.227800e+02
-2 12251     1.516500e+02 1.496997e+01
-7 12251     -8.002002e+01 1.073300e+02
-10 12251     -8.782001e+01 1.333800e+02
-15 12251     -2.788000e+01 1.290400e+02
-2 12252     6.908300e+02 1.440997e+01
-3 12252     5.546801e+02 -2.876600e+02
-9 12252     4.522200e+02 1.180100e+02
-12 12252     6.968500e+02 1.643400e+02
-2 12253     6.908300e+02 1.440997e+01
-3 12253     5.546801e+02 -2.876600e+02
-9 12253     4.522200e+02 1.180100e+02
-12 12253     6.968500e+02 1.643400e+02
-2 12254     7.445601e+02 1.420001e+01
-10 12254     8.142200e+02 1.593800e+02
-2 12255     2.255100e+02 1.201001e+01
-9 12255     8.001001e+01 1.034400e+02
-15 12255     4.820001e+01 1.030100e+02
-2 12256     3.533000e+02 1.220001e+01
-10 12256     1.220800e+02 9.425000e+01
-2 12257     6.324700e+02 1.108002e+01
-6 12257     5.546300e+02 1.595600e+02
-10 12257     6.989900e+02 2.037000e+02
-2 12258     1.635800e+02 1.071002e+01
-15 12258     -1.787000e+01 1.190800e+02
-2 12259     6.621100e+02 1.026001e+01
-3 12259     5.267200e+02 -2.932500e+02
-10 12259     7.285601e+02 1.911000e+02
-2 12260     3.445500e+02 7.729980e+00
-6 12260     1.743500e+02 8.150024e+00
-10 12260     1.081500e+02 8.860999e+01
-15 12260     2.018900e+02 7.787000e+01
-2 12261     3.445500e+02 7.729980e+00
-6 12261     1.743500e+02 8.150024e+00
-10 12261     1.081500e+02 8.860999e+01
-15 12261     2.018900e+02 7.787000e+01
-2 12262     2.372200e+02 6.330017e+00
-10 12262     -1.244000e+01 1.027800e+02
-2 12263     5.618700e+02 6.510010e+00
-6 12263     4.783900e+02 1.651200e+02
-2 12264     1.694400e+02 6.150024e+00
-3 12264     8.040997e+01 -3.032300e+02
-8 12264     1.679900e+02 -4.257001e+01
-9 12264     3.356000e+01 9.662000e+01
-10 12264     -7.454999e+01 1.189700e+02
-12 12264     8.400269e-01 5.342999e+01
-15 12264     -1.310999e+01 1.117800e+02
-2 12265     2.741600e+02 5.219971e+00
-10 12265     2.559998e+01 9.496002e+01
-2 12266     -6.278003e+01 5.179993e+00
-5 12266     4.684500e+02 -5.954900e+02
-6 12266     -2.423000e+02 4.354999e+01
-12 12266     -2.002400e+02 9.814001e+01
-2 12267     2.815800e+02 5.080017e+00
-10 12267     3.335999e+01 9.359003e+01
-15 12267     1.134700e+02 8.316000e+01
-2 12268     2.006300e+02 4.200012e+00
-3 12268     1.101300e+02 -3.039100e+02
-10 12268     -4.817999e+01 1.087500e+02
-15 12268     1.809003e+01 1.001700e+02
-2 12269     3.908800e+02 3.260010e+00
-7 12269     1.457300e+02 8.217001e+01
-2 12270     5.866899e+02 3.739990e+00
-3 12270     4.535200e+02 -3.033700e+02
-6 12270     5.054200e+02 1.582700e+02
-7 12270     4.918400e+02 1.922900e+02
-8 12270     5.401700e+02 -2.725000e+01
-2 12271     2.992600e+02 3.000000e+00
-10 12271     5.219000e+01 8.859003e+01
-2 12272     -4.824700e+02 1.429993e+00
-10 12272     -3.761400e+02 4.630700e+02
-13 12272     2.148999e+01 -2.301001e+01
-14 12272     9.946997e+01 -4.677500e+02
-2 12273     2.534100e+02 -1.099854e-01
-15 12273     7.703998e+01 8.157999e+01
-2 12274     6.838900e+02 3.002930e-02
-3 12274     5.489301e+02 -3.019400e+02
-9 12274     4.467700e+02 1.062100e+02
-12 12274     6.888900e+02 1.498100e+02
-2 12275     2.748400e+02 -2.899780e-01
-15 12275     1.035600e+02 7.715002e+01
-2 12276     6.060699e+02 -3.599854e-01
-8 12276     5.563000e+02 -3.160001e+01
-10 12276     6.699600e+02 2.028300e+02
-2 12277     -7.297998e+01 -9.899902e-01
-5 12277     4.552900e+02 -6.004800e+02
-6 12277     -2.543400e+02 3.454999e+01
-7 12277     -2.257600e+02 1.542500e+02
-12 12277     -2.135700e+02 9.032001e+01
-15 12277     -1.913000e+02 2.176500e+02
-2 12278     2.048800e+02 -1.409973e+00
-3 12278     1.146100e+02 -3.095300e+02
-10 12278     -4.540002e+01 1.018800e+02
-2 12279     6.332500e+02 -1.549988e+00
-3 12279     4.993700e+02 -3.057400e+02
-6 12279     5.560500e+02 1.459900e+02
-9 12279     4.044600e+02 1.025000e+02
-12 12279     6.350800e+02 1.555200e+02
-2 12280     6.878600e+02 -2.549988e+00
-9 12280     4.499800e+02 1.035900e+02
-12 12280     6.928600e+02 1.466600e+02
-2 12281     6.519800e+02 -3.909973e+00
-6 12281     5.763500e+02 1.411100e+02
-2 12282     7.501700e+02 -3.989990e+00
-7 12282     6.313900e+02 1.452300e+02
-10 12282     8.154100e+02 1.394800e+02
-2 12283     3.725200e+02 -4.609985e+00
-6 12283     2.049100e+02 2.700195e-01
-7 12283     1.230100e+02 7.367999e+01
-8 12283     3.364200e+02 -5.203000e+01
-12 12283     2.273300e+02 4.429999e+01
-2 12284     3.078900e+02 -5.020020e+00
-6 12284     1.336800e+02 -1.000000e+01
-2 12285     6.697100e+02 -5.650024e+00
-3 12285     5.352200e+02 -3.082700e+02
-10 12285     7.325601e+02 1.709500e+02
-12 12285     6.733400e+02 1.462200e+02
-2 12286     5.933600e+02 -5.729980e+00
-3 12286     4.606500e+02 -3.118600e+02
-6 12286     5.123199e+02 1.473200e+02
-15 12286     8.713900e+02 2.177900e+02
-2 12287     5.799301e+02 -6.390015e+00
-6 12287     4.981300e+02 1.485600e+02
-10 12287     6.438000e+02 2.068900e+02
-15 12287     8.557400e+02 2.227000e+02
-2 12288     -1.498900e+02 -7.479980e+00
-5 12288     3.975800e+02 -5.705800e+02
-9 12288     -2.422100e+02 6.962000e+01
-2 12289     -5.707001e+01 -7.500000e+00
-8 12289     -8.489990e+00 -4.413000e+01
-9 12289     -1.596600e+02 7.453998e+01
-2 12290     6.671000e+02 -7.450012e+00
-3 12290     5.324800e+02 -3.098100e+02
-12 12290     6.702100e+02 1.446400e+02
-2 12291     1.797000e+02 -8.469971e+00
-3 12291     9.103998e+01 -3.164600e+02
-7 12291     -6.102002e+01 8.082001e+01
-8 12291     1.755200e+02 -5.494000e+01
-9 12291     4.262000e+01 8.492999e+01
-10 12291     -6.917999e+01 1.015000e+02
-15 12291     -6.159973e+00 9.113000e+01
-2 12292     2.954301e+02 -8.739990e+00
-6 12292     1.201200e+02 -1.498999e+01
-10 12292     4.534003e+01 7.684998e+01
-15 12292     1.279700e+02 6.354999e+01
-2 12293     3.107500e+02 -9.729980e+00
-6 12293     1.365000e+02 -1.500000e+01
-15 12293     1.486899e+02 5.991998e+01
-2 12294     3.684900e+02 -1.071002e+01
-6 12294     2.003400e+02 -8.250000e+00
-2 12295     4.139900e+02 -1.109003e+01
-6 12295     2.532900e+02 3.059998e+00
-2 12296     -5.757001e+01 -1.208002e+01
-8 12296     -9.679993e+00 -4.826001e+01
-2 12297     6.949600e+02 -1.215997e+01
-3 12297     5.599399e+02 -3.138400e+02
-10 12297     7.562300e+02 1.533500e+02
-12 12297     6.992400e+02 1.356600e+02
-2 12298     -1.281000e+02 -1.358002e+01
-3 12298     -2.198600e+02 -3.332100e+02
-2 12299     -6.211700e+02 -1.517999e+01
-12 12299     -6.521600e+02 1.859000e+02
-2 12300     -5.719000e+01 -1.513000e+01
-8 12300     -8.890015e+00 -5.132999e+01
-2 12301     5.844100e+02 -1.492999e+01
-15 12301     8.590500e+02 2.105800e+02
-2 12302     2.339500e+02 -1.676001e+01
-8 12302     2.202700e+02 -6.270001e+01
-2 12303     -5.549000e+02 -1.738000e+01
-14 12303     2.838000e+01 -4.808900e+02
-2 12304     5.190000e+02 -1.751001e+01
-3 12304     4.019800e+02 -3.191600e+02
-2 12305     3.496899e+02 -1.903998e+01
-6 12305     1.790700e+02 -1.966998e+01
-10 12305     1.088000e+02 6.159998e+01
-12 12305     1.982900e+02 2.565002e+01
-15 12305     2.032800e+02 4.579999e+01
-2 12306     -3.602500e+02 -2.131000e+01
-13 12306     1.013300e+02 -5.964001e+01
-2 12307     -1.195100e+02 -2.216998e+01
-5 12307     4.180699e+02 -5.984399e+02
-6 12307     -2.998700e+02 2.559003e+01
-12 12307     -2.492700e+02 8.052002e+01
-2 12308     6.225200e+02 -2.217999e+01
-6 12308     5.434399e+02 1.263300e+02
-8 12308     5.693800e+02 -4.976001e+01
-12 12308     6.225500e+02 1.360400e+02
-2 12309     -2.001953e-02 -2.251001e+01
-3 12309     -8.621997e+01 -3.366400e+02
-6 12309     -1.816700e+02 -8.039978e+00
-2 12310     6.033900e+02 -2.222998e+01
-10 12310     6.631200e+02 1.824700e+02
-15 12310     8.800200e+02 1.930600e+02
-2 12311     6.033900e+02 -2.222998e+01
-10 12311     6.631200e+02 1.824700e+02
-2 12312     9.078998e+01 -2.282001e+01
-10 12312     -1.428800e+02 1.149700e+02
-2 12313     9.078998e+01 -2.282001e+01
-9 12313     -3.125000e+01 6.912000e+01
-10 12313     -1.428800e+02 1.149700e+02
-15 12313     -9.160999e+01 1.062900e+02
-2 12314     3.090900e+02 -2.379999e+01
-15 12314     1.427100e+02 4.398999e+01
-2 12315     6.264700e+02 -2.673999e+01
-3 12315     4.945300e+02 -3.307100e+02
-6 12315     5.476500e+02 1.212600e+02
-7 12315     5.220900e+02 1.563700e+02
-9 12315     3.990699e+02 8.106000e+01
-12 12315     6.263000e+02 1.310600e+02
-2 12316     5.850000e+01 -2.837000e+01
-3 12316     -2.658002e+01 -3.400800e+02
-6 12316     -1.237200e+02 -2.653003e+01
-2 12317     1.110700e+02 -2.875000e+01
-3 12317     2.534003e+01 -3.386300e+02
-2 12318     2.329900e+02 -2.888000e+01
-6 12318     5.375000e+01 -3.885999e+01
-10 12318     -2.389001e+01 6.834998e+01
-15 12318     4.732001e+01 5.257001e+01
-2 12319     5.161700e+02 -2.997998e+01
-8 12319     4.644200e+02 -6.877002e+01
-2 12320     2.945900e+02 -3.048999e+01
-7 12320     3.801001e+01 4.958002e+01
-2 12321     6.427000e+02 -3.258002e+01
-3 12321     5.106300e+02 -3.359000e+02
-6 12321     5.649000e+02 1.129900e+02
-12 12321     6.433199e+02 1.222600e+02
-2 12322     6.427000e+02 -3.258002e+01
-3 12322     5.106300e+02 -3.359000e+02
-6 12322     5.649000e+02 1.129900e+02
-8 12322     5.856600e+02 -5.942999e+01
-12 12322     6.433199e+02 1.222600e+02
-2 12323     5.915699e+02 -3.419000e+01
-12 12323     5.889399e+02 1.286600e+02
-2 12324     5.813101e+02 -3.678998e+01
-6 12324     4.982700e+02 1.165700e+02
-12 12324     5.790000e+02 1.267700e+02
-2 12325     5.934301e+02 -3.660999e+01
-12 12325     5.905500e+02 1.257800e+02
-2 12326     6.225300e+02 -3.657001e+01
-3 12326     4.914700e+02 -3.408400e+02
-6 12326     5.434100e+02 1.112200e+02
-7 12326     5.189700e+02 1.485400e+02
-8 12326     5.704900e+02 -6.253998e+01
-9 12326     3.973600e+02 7.244000e+01
-2 12327     6.225300e+02 -3.657001e+01
-3 12327     4.914700e+02 -3.408400e+02
-7 12327     5.189700e+02 1.485400e+02
-2 12328     7.510100e+02 -3.728998e+01
-7 12328     6.275699e+02 1.174100e+02
-2 12329     4.941998e+01 -3.862000e+01
-3 12329     -3.565997e+01 -3.499400e+02
-2 12330     4.237700e+02 -3.859998e+01
-3 12330     3.200100e+02 -3.405100e+02
-2 12331     -1.499300e+02 -3.920001e+01
-3 12331     -2.374400e+02 -3.572900e+02
-2 12332     1.046100e+02 -4.031000e+01
-3 12332     1.963000e+01 -3.498400e+02
-15 12332     -8.251001e+01 8.079999e+01
-2 12333     1.046100e+02 -4.031000e+01
-3 12333     1.963000e+01 -3.498400e+02
-2 12334     4.031899e+02 -4.040002e+01
-10 12334     1.789300e+02 4.057001e+01
-2 12335     2.320699e+02 -4.095001e+01
-6 12335     5.190002e+01 -5.125000e+01
-8 12335     2.175800e+02 -8.231000e+01
-9 12335     8.732001e+01 5.983002e+01
-10 12335     -2.616998e+01 5.670001e+01
-15 12335     4.420001e+01 3.904999e+01
-2 12336     2.523199e+02 -4.259998e+01
-10 12336     -6.469971e+00 5.084003e+01
-2 12337     -2.759998e+01 -4.287000e+01
-3 12337     -1.112600e+02 -3.564800e+02
-2 12338     1.115600e+02 -4.319000e+01
-8 12338     1.198100e+02 -8.126001e+01
-15 12338     -7.635999e+01 7.459003e+01
-2 12339     5.804200e+02 -4.301001e+01
-12 12339     5.780699e+02 1.208300e+02
-2 12340     6.776000e+02 -4.272998e+01
-10 12340     7.322300e+02 1.303200e+02
-2 12341     2.789100e+02 -4.338000e+01
-6 12341     1.014300e+02 -5.221997e+01
-8 12341     2.567200e+02 -8.560999e+01
-2 12342     3.253199e+02 -4.335999e+01
-15 12342     1.622600e+02 1.982001e+01
-2 12343     1.380800e+02 -4.667999e+01
-8 12343     1.411400e+02 -8.526001e+01
-15 12343     -5.288000e+01 6.084998e+01
-2 12344     3.961899e+02 -4.673999e+01
-10 12344     1.655100e+02 3.365997e+01
-15 12344     2.712600e+02 1.334998e+01
-2 12345     1.352600e+02 -4.742999e+01
-10 12345     -1.124900e+02 7.589001e+01
-15 12345     -5.560999e+01 6.094000e+01
-2 12346     5.913900e+02 -5.117999e+01
-12 12346     5.883400e+02 1.107300e+02
-2 12347     1.832100e+02 -5.135999e+01
-3 12347     9.632001e+01 -3.582200e+02
-6 12347     2.219971e+00 -6.100000e+01
-9 12347     4.746002e+01 4.927002e+01
-15 12347     -1.007001e+01 4.140002e+01
-2 12348     -1.248700e+02 -5.320001e+01
-8 12348     -6.365002e+01 -7.971997e+01
-2 12349     1.045700e+02 -5.464001e+01
-15 12349     -8.372998e+01 6.462000e+01
-2 12350     1.045700e+02 -5.464001e+01
-15 12350     -8.372998e+01 6.462000e+01
-2 12351     2.175300e+02 -5.582001e+01
-3 12351     1.294100e+02 -3.614400e+02
-8 12351     2.054900e+02 -9.417999e+01
-15 12351     2.642999e+01 2.620001e+01
-2 12352     -4.353003e+01 -5.628003e+01
-6 12352     -2.270700e+02 -4.613000e+01
-2 12353     7.171200e+02 -5.700000e+01
-3 12353     5.849600e+02 -3.562100e+02
-7 12353     5.956801e+02 1.082800e+02
-2 12354     3.494700e+02 -5.806000e+01
-3 12354     2.532400e+02 -3.606500e+02
-2 12355     2.381801e+02 -5.931000e+01
-6 12355     5.840002e+01 -6.975000e+01
-2 12356     3.237000e+02 -5.937000e+01
-6 12356     1.494800e+02 -6.416998e+01
-15 12356     1.574000e+02 2.140015e+00
-2 12357     3.237000e+02 -5.937000e+01
-8 12357     2.939800e+02 -9.766998e+01
-2 12358     6.042900e+02 -6.188000e+01
-3 12358     4.749399e+02 -3.661200e+02
-15 12358     8.728000e+02 1.452800e+02
-2 12359     1.630200e+02 -6.312000e+01
-3 12359     7.750000e+01 -3.701700e+02
-4 12359     -3.245400e+02 -4.050600e+02
-6 12359     -1.862000e+01 -7.179999e+01
-8 12359     1.611200e+02 -9.882001e+01
-10 12359     -9.112000e+01 5.364001e+01
-12 12359     -8.380005e+00 -1.914001e+01
-15 12359     -3.119000e+01 3.488000e+01
-2 12360     3.255000e+02 -6.384003e+01
-3 12360     2.315699e+02 -3.664300e+02
-6 12360     1.514700e+02 -6.867999e+01
-10 12360     7.175000e+01 2.010999e+01
-12 12360     1.672400e+02 -2.356000e+01
-15 12360     1.596700e+02 -3.200012e+00
-2 12361     8.576001e+01 -6.832001e+01
-6 12361     -9.723001e+01 -7.345001e+01
-12 12361     -8.467999e+01 -1.800000e+01
-2 12362     2.069100e+02 -6.966998e+01
-6 12362     2.590002e+01 -7.970001e+01
-10 12362     -5.342999e+01 3.596997e+01
-15 12362     1.308002e+01 1.429999e+01
-2 12363     1.607400e+02 -7.101001e+01
-15 12363     -3.415002e+01 2.732001e+01
-2 12364     1.692800e+02 -7.098999e+01
-3 12364     8.372998e+01 -3.774600e+02
-8 12364     1.653400e+02 -1.054200e+02
-9 12364     3.646002e+01 3.269000e+01
-15 12364     -2.564001e+01 2.446997e+01
-2 12365     2.877900e+02 -7.503998e+01
-15 12365     1.065100e+02 -1.006000e+01
-2 12366     2.636700e+02 -7.559003e+01
-6 12366     8.465002e+01 -8.490002e+01
-12 12366     9.606000e+01 -3.682001e+01
-15 12366     7.652002e+01 -6.010010e+00
-2 12367     2.663500e+02 -7.572998e+01
-10 12367     3.700012e+00 1.715002e+01
-15 12367     7.947998e+01 -6.969971e+00
-2 12368     5.689600e+02 -7.614001e+01
-12 12368     5.649900e+02 8.891998e+01
-2 12369     9.273999e+01 -7.675000e+01
-3 12369     1.051001e+01 -3.850900e+02
-2 12370     5.666500e+02 -7.745001e+01
-7 12370     4.670000e+02 1.286500e+02
-10 12370     6.178500e+02 1.427400e+02
-15 12370     8.260699e+02 1.448100e+02
-2 12371     7.540000e+02 -7.758002e+01
-3 12371     6.228400e+02 -3.752400e+02
-9 12371     5.068199e+02 4.376001e+01
-2 12372     7.461000e+02 -7.862000e+01
-3 12372     6.150200e+02 -3.766400e+02
-9 12372     4.999700e+02 4.248999e+01
-10 12372     7.934800e+02 6.557001e+01
-12 12372     7.502700e+02 5.888000e+01
-2 12373     5.894700e+02 -8.025000e+01
-8 12373     5.413300e+02 -9.579999e+01
-2 12374     -1.128100e+02 -8.228998e+01
-8 12374     -5.732001e+01 -1.060100e+02
-2 12375     6.337800e+02 -8.235999e+01
-8 12375     5.791400e+02 -9.976001e+01
-2 12376     1.250300e+02 -8.706000e+01
-3 12376     4.321002e+01 -3.940400e+02
-6 12376     -5.888000e+01 -1.015300e+02
-8 12376     1.291500e+02 -1.187400e+02
-2 12377     1.185999e+01 -8.908002e+01
-3 12377     -6.919000e+01 -4.006300e+02
-2 12378     7.271600e+02 -8.908002e+01
-9 12378     4.849399e+02 3.366998e+01
-12 12378     7.295300e+02 5.129999e+01
-2 12379     3.465002e+01 -9.081000e+01
-3 12379     -4.626001e+01 -4.006899e+02
-2 12380     3.429999e+01 -9.482001e+01
-3 12380     -4.639001e+01 -4.050699e+02
-12 12380     -1.379400e+02 -4.347998e+01
-2 12381     3.429999e+01 -9.482001e+01
-3 12381     -4.639001e+01 -4.050699e+02
-2 12382     8.466998e+01 -9.446002e+01
-15 12382     -1.281100e+02 1.292999e+01
-2 12383     2.372800e+02 -9.512000e+01
-3 12383     1.512900e+02 -3.981400e+02
-6 12383     5.466998e+01 -1.124500e+02
-12 12383     6.090002e+01 -6.279999e+01
-2 12384     8.001500e+02 -9.665997e+01
-9 12384     5.444301e+02 3.003998e+01
-2 12385     8.879999e+01 -9.713000e+01
-15 12385     -1.247100e+02 8.859985e+00
-2 12386     8.540997e+01 -9.770001e+01
-3 12386     5.309998e+00 -4.062500e+02
-6 12386     -9.998999e+01 -1.127300e+02
-12 12386     -9.315002e+01 -5.679999e+01
-2 12387     1.679999e+01 -9.783002e+01
-3 12387     -6.421997e+01 -4.080300e+02
-2 12388     -1.439700e+02 -9.984003e+01
-3 12388     -2.293500e+02 -4.176300e+02
-2 12389     2.023199e+02 -1.025000e+02
-10 12389     -8.072998e+01 -6.469971e+00
-15 12389     -1.876001e+01 -3.522998e+01
-2 12390     5.108000e+02 -1.026700e+02
-8 12390     4.511801e+02 -1.351800e+02
-10 12390     2.785100e+02 -4.752002e+01
-12 12390     3.793199e+02 -6.113000e+01
-13 12390     6.632700e+02 -3.648300e+02
-15 12390     4.068300e+02 -8.151001e+01
-2 12391     1.136200e+02 -1.037100e+02
-15 12391     -1.024200e+02 -6.210022e+00
-2 12392     4.802000e+02 -1.085500e+02
-3 12392     3.794399e+02 -4.051000e+02
-2 12393     1.787400e+02 -1.095000e+02
-3 12393     9.639001e+01 -4.138400e+02
-10 12393     -1.009300e+02 -5.869995e+00
-15 12393     -4.250000e+01 -3.489001e+01
-2 12394     1.787400e+02 -1.095000e+02
-3 12394     9.639001e+01 -4.138400e+02
-6 12394     -6.359985e+00 -1.294800e+02
-8 12394     1.707600e+02 -1.387800e+02
-10 12394     -1.009300e+02 -5.869995e+00
-12 12394     -2.830017e+00 -7.756000e+01
-15 12394     -4.250000e+01 -3.489001e+01
-2 12395     1.795200e+02 -1.128300e+02
-3 12395     9.733002e+01 -4.171100e+02
-6 12395     -5.830017e+00 -1.327000e+02
-12 12395     -2.179993e+00 -8.096002e+01
-15 12395     -4.234003e+01 -3.841998e+01
-2 12396     5.080200e+02 -1.147200e+02
-3 12396     4.070000e+02 -4.098400e+02
-2 12397     5.380100e+02 -1.161500e+02
-8 12397     4.755200e+02 -1.461500e+02
-2 12398     6.833700e+02 -1.158300e+02
-3 12398     5.562800e+02 -4.155300e+02
-12 12398     6.820400e+02 3.096997e+01
-2 12399     7.091700e+02 -1.174500e+02
-7 12399     5.817900e+02 5.946997e+01
-2 12400     1.962800e+02 -1.181300e+02
-6 12400     1.134003e+01 -1.388101e+02
-12 12400     1.465002e+01 -8.765997e+01
-15 12400     -2.678003e+01 -4.959998e+01
-2 12401     1.962800e+02 -1.181300e+02
-6 12401     1.134003e+01 -1.388101e+02
-8 12401     1.848000e+02 -1.464900e+02
-2 12402     1.962800e+02 -1.181300e+02
-3 12402     1.138600e+02 -4.216100e+02
-8 12402     1.848000e+02 -1.464900e+02
-15 12402     -2.678003e+01 -4.959998e+01
-2 12403     2.023101e+02 -1.181300e+02
-8 12403     1.899300e+02 -1.458900e+02
-12 12403     2.087000e+01 -8.663000e+01
-15 12403     -2.009003e+01 -4.970001e+01
-2 12404     -4.226001e+01 -1.182500e+02
-3 12404     -1.199600e+02 -4.300500e+02
-2 12405     -3.847600e+02 -1.203700e+02
-3 12405     -5.046300e+02 -4.531899e+02
-2 12406     -3.212000e+01 -1.210900e+02
-3 12406     -1.103800e+02 -4.320100e+02
-8 12406     3.010010e+00 -1.419800e+02
-2 12407     1.830900e+02 -1.214500e+02
-3 12407     1.011900e+02 -4.252500e+02
-6 12407     -1.820007e+00 -1.411500e+02
-8 12407     1.742800e+02 -1.486500e+02
-12 12407     1.599976e+00 -8.947998e+01
-2 12408     -7.129999e+01 -1.242400e+02
-3 12408     -1.491000e+02 -4.364100e+02
-2 12409     -3.193600e+02 -1.242800e+02
-5 12409     2.771000e+02 -5.699800e+02
-2 12410     2.245200e+02 -1.248500e+02
-6 12410     4.029999e+01 -1.447800e+02
-12 12410     4.465997e+01 -9.517999e+01
-2 12411     3.704600e+02 -1.251900e+02
-15 12411     1.882700e+02 -9.001001e+01
-2 12412     2.537000e+02 -1.255900e+02
-3 12412     1.687100e+02 -4.280601e+02
-4 12412     -3.918800e+02 -4.412000e+02
-7 12412     -1.717999e+01 -3.581000e+01
-8 12412     2.319400e+02 -1.531800e+02
-15 12412     3.857001e+01 -7.040997e+01
-2 12413     -3.900100e+02 -1.277300e+02
-3 12413     -5.091500e+02 -4.607600e+02
-2 12414     9.270001e+01 -1.273500e+02
-3 12414     1.295001e+01 -4.340601e+02
-6 12414     -9.220999e+01 -1.406899e+02
-12 12414     -8.551001e+01 -8.551001e+01
-2 12415     9.270001e+01 -1.273500e+02
-3 12415     1.295001e+01 -4.340601e+02
-6 12415     -9.220999e+01 -1.406899e+02
-12 12415     -8.551001e+01 -8.551001e+01
-2 12416     2.670200e+02 -1.289700e+02
-3 12416     1.818600e+02 -4.309800e+02
-6 12416     8.462000e+01 -1.475699e+02
-12 12416     9.022998e+01 -9.977002e+01
-15 12416     5.433002e+01 -7.816998e+01
-2 12417     2.670200e+02 -1.289700e+02
-6 12417     8.462000e+01 -1.475699e+02
-15 12417     5.433002e+01 -7.816998e+01
-2 12418     4.815800e+02 -1.293200e+02
-7 12418     1.989399e+02 -5.579999e+01
-10 12418     2.164700e+02 -8.167999e+01
-12 12418     3.326200e+02 -1.000600e+02
-15 12418     3.319200e+02 -1.222100e+02
-2 12419     1.302400e+02 -1.322300e+02
-3 12419     5.000000e+01 -4.378700e+02
-6 12419     -5.471997e+01 -1.480000e+02
-12 12419     -4.926001e+01 -9.450000e+01
-15 12419     -8.822998e+01 -4.051001e+01
-2 12420     1.649000e+02 -1.330100e+02
-6 12420     -1.970001e+01 -1.511300e+02
-2 12421     2.780601e+02 -1.328600e+02
-3 12421     1.919900e+02 -4.335900e+02
-6 12421     9.591998e+01 -1.504301e+02
-10 12421     -7.869995e+00 -4.810999e+01
-12 12421     1.022700e+02 -1.039400e+02
-15 12421     6.656000e+01 -8.357001e+01
-2 12422     3.214200e+02 -1.334200e+02
-6 12422     1.412500e+02 -1.492400e+02
-12 12422     1.495800e+02 -1.047400e+02
-15 12422     1.188600e+02 -9.409003e+01
-2 12423     -7.897998e+01 -1.387500e+02
-3 12423     -1.569800e+02 -4.519301e+02
-2 12424     -7.897998e+01 -1.387500e+02
-3 12424     -1.569800e+02 -4.519301e+02
-2 12425     1.157001e+01 -1.392300e+02
-8 12425     3.560999e+01 -1.593700e+02
-2 12426     2.296100e+02 -1.393300e+02
-3 12426     1.464500e+02 -4.412600e+02
-6 12426     4.578998e+01 -1.581700e+02
-2 12427     2.613199e+02 -1.394400e+02
-3 12427     1.764000e+02 -4.402800e+02
-6 12427     7.873999e+01 -1.570000e+02
-12 12427     8.453998e+01 -1.100900e+02
-2 12428     1.365500e+02 -1.428800e+02
-7 12428     -1.138100e+02 -3.372998e+01
-10 12428     -1.374400e+02 -2.258002e+01
-15 12428     -8.475000e+01 -5.502002e+01
-2 12429     7.755200e+02 -1.430400e+02
-12 12429     7.770500e+02 -1.134003e+01
-2 12430     -3.790400e+02 -1.441100e+02
-5 12430     2.167400e+02 -5.813500e+02
-8 12430     -2.459800e+02 -1.329000e+02
-13 12430     5.653998e+01 -1.769400e+02
-2 12431     2.498199e+02 -1.450800e+02
-15 12431     3.298999e+01 -8.933002e+01
-2 12432     -2.599100e+02 -1.456900e+02
-3 12432     -3.716400e+02 -4.751899e+02
-2 12433     -2.359400e+02 -1.519400e+02
-6 12433     -4.051600e+02 -3.326001e+01
-2 12434     -1.300000e+01 -1.543500e+02
-6 12434     -1.994900e+02 -1.688101e+02
-8 12434     1.601001e+01 -1.701100e+02
-9 12434     -1.099000e+02 -4.434998e+01
-2 12435     8.069000e+02 -1.550500e+02
-12 12435     8.103500e+02 -2.906000e+01
-2 12436     2.490002e+01 -1.571300e+02
-3 12436     -4.958002e+01 -4.648000e+02
-6 12436     -1.636300e+02 -1.810900e+02
-12 12436     -1.633900e+02 -1.219900e+02
-15 12436     -2.148200e+02 -5.139001e+01
-2 12437     -1.078998e+01 -1.572500e+02
-6 12437     -1.967400e+02 -1.721700e+02
-2 12438     2.706899e+02 -1.575200e+02
-10 12438     -2.692999e+01 -7.425000e+01
-2 12439     1.255600e+02 -1.592900e+02
-3 12439     4.875000e+01 -4.636700e+02
-13 12439     3.253900e+02 -3.621800e+02
-2 12440     4.190900e+02 -1.649100e+02
-6 12440     2.403800e+02 -1.859399e+02
-12 12440     2.499100e+02 -1.475100e+02
-2 12441     3.249399e+02 -1.662100e+02
-4 12441     -4.442100e+02 -4.734399e+02
-2 12442     -4.765997e+01 -1.668800e+02
-3 12442     -1.249200e+02 -4.784900e+02
-6 12442     -2.321600e+02 -1.715900e+02
-8 12442     -1.051001e+01 -1.779800e+02
-9 12442     -1.401100e+02 -5.715002e+01
-2 12443     -4.506300e+02 -1.674800e+02
-7 12443     -4.439100e+02 1.259400e+02
-2 12444     4.064399e+02 -1.681900e+02
-3 12444     3.174399e+02 -4.636300e+02
-2 12445     4.264700e+02 -1.690900e+02
-15 12445     2.285900e+02 -1.669700e+02
-2 12446     5.306000e+02 -1.701600e+02
-8 12446     4.693101e+02 -1.889200e+02
-2 12447     7.885900e+02 -1.713300e+02
-7 12447     6.312600e+02 -1.415997e+01
-2 12448     -3.830300e+02 -1.771500e+02
-13 12448     4.447998e+01 -2.084300e+02
-2 12449     7.109003e+01 -1.837800e+02
-3 12449     -3.900024e+00 -4.896600e+02
-6 12449     -1.164000e+02 -2.060300e+02
-8 12449     8.158002e+01 -1.977400e+02
-2 12450     -3.469971e+00 -1.864800e+02
-3 12450     -7.927002e+01 -4.959600e+02
-2 12451     4.202300e+02 -1.910600e+02
-6 12451     2.421300e+02 -2.067100e+02
-10 12451     1.235500e+02 -1.343900e+02
-12 12451     2.531100e+02 -1.695800e+02
-15 12451     2.222200e+02 -1.851200e+02
-2 12452     -3.967800e+02 -1.914600e+02
-7 12452     -4.098400e+02 9.451001e+01
-15 12452     -3.927900e+02 1.778100e+02
-2 12453     -4.550700e+02 -1.946800e+02
-10 12453     -4.643400e+02 1.875400e+02
-2 12454     1.229500e+02 -1.973900e+02
-6 12454     -6.451001e+01 -2.214200e+02
-2 12455     3.506000e+01 -1.985400e+02
-6 12455     -1.516300e+02 -2.157000e+02
-2 12456     2.608000e+02 -1.982400e+02
-6 12456     7.365997e+01 -2.260601e+02
-10 12456     -5.332001e+01 -1.160900e+02
-2 12457     3.251001e+01 -2.007200e+02
-8 12457     5.058002e+01 -2.096800e+02
-2 12458     2.726400e+02 -2.009500e+02
-6 12458     8.534003e+01 -2.285000e+02
-7 12458     -1.898999e+01 -1.089700e+02
-8 12458     2.439000e+02 -2.165900e+02
-12 12458     8.403003e+01 -1.830300e+02
-2 12459     2.647400e+02 -2.021900e+02
-3 12459     1.859800e+02 -5.003500e+02
-6 12459     7.741998e+01 -2.301600e+02
-2 12460     3.228003e+01 -2.081000e+02
-8 12460     5.053003e+01 -2.152700e+02
-2 12461     1.061000e+02 -2.079600e+02
-6 12461     -8.079001e+01 -2.281899e+02
-2 12462     4.033600e+02 -2.080100e+02
-6 12462     2.234700e+02 -2.245000e+02
-9 12462     2.361899e+02 -7.072998e+01
-12 12462     2.330200e+02 -1.869100e+02
-2 12463     -5.651001e+01 -2.088300e+02
-3 12463     -1.344600e+02 -5.218700e+02
-2 12464     4.051600e+02 -2.107600e+02
-3 12464     3.174100e+02 -5.062000e+02
-4 12464     -5.006100e+02 -5.322900e+02
-6 12464     2.259800e+02 -2.259200e+02
-9 12464     2.387700e+02 -7.222998e+01
-12 12464     2.357500e+02 -1.887500e+02
-15 12464     2.015601e+02 -2.010900e+02
-2 12465     -3.008400e+02 -2.128800e+02
-3 12465     -4.078300e+02 -5.437500e+02
-2 12466     1.895200e+02 -2.180800e+02
-3 12466     1.140500e+02 -5.190900e+02
-2 12467     3.596899e+02 -2.190400e+02
-6 12467     1.738900e+02 -2.466100e+02
-2 12468     -3.241600e+02 -2.194000e+02
-3 12468     -4.312300e+02 -5.515900e+02
-2 12469     4.982000e+02 -2.216700e+02
-3 12469     4.029600e+02 -5.168900e+02
-2 12470     4.496997e+01 -2.257300e+02
-3 12470     -2.996997e+01 -5.330800e+02
-2 12471     4.496997e+01 -2.257300e+02
-3 12471     -2.996997e+01 -5.330800e+02
-2 12472     2.538800e+02 -2.266200e+02
-12 12472     6.621002e+01 -2.047100e+02
-2 12473     4.668500e+02 -2.284500e+02
-6 12473     2.956900e+02 -2.295900e+02
-8 12473     4.102200e+02 -2.385000e+02
-2 12474     6.694000e+01 -2.290700e+02
-6 12474     -1.176000e+02 -2.444399e+02
-8 12474     7.885999e+01 -2.327200e+02
-2 12475     2.687900e+02 -2.352200e+02
-3 12475     1.897000e+02 -5.335100e+02
-6 12475     8.307001e+01 -2.565000e+02
-2 12476     -4.225400e+02 -2.369900e+02
-10 12476     -4.590900e+02 1.283000e+02
-15 12476     -4.471500e+02 1.149600e+02
-2 12477     4.725300e+02 -2.382300e+02
-6 12477     3.012400e+02 -2.404200e+02
-12 12477     3.197300e+02 -2.078800e+02
-2 12478     1.885100e+02 -2.402200e+02
-3 12478     1.136800e+02 -5.413300e+02
-8 12478     1.743400e+02 -2.468300e+02
-2 12479     2.552900e+02 -2.408400e+02
-6 12479     6.997998e+01 -2.621700e+02
-12 12479     7.059003e+01 -2.170900e+02
-2 12480     -4.321600e+02 -2.421100e+02
-7 12480     -4.532600e+02 4.156000e+01
-2 12481     5.065699e+02 -2.420700e+02
-8 12481     4.463700e+02 -2.476500e+02
-2 12482     -4.277800e+02 -2.428200e+02
-7 12482     -4.509400e+02 3.969000e+01
-2 12483     -3.235999e+01 -2.448000e+02
-3 12483     -1.094200e+02 -5.571300e+02
-2 12484     3.295400e+02 -2.450700e+02
-6 12484     1.457100e+02 -2.639900e+02
-2 12485     6.522800e+02 -2.457000e+02
-9 12485     4.324700e+02 -9.745001e+01
-2 12486     2.068800e+02 -2.468200e+02
-6 12486     2.021002e+01 -2.676700e+02
-12 12486     1.910999e+01 -2.197300e+02
-2 12487     1.785000e+02 -2.476900e+02
-3 12487     1.027100e+02 -5.505601e+02
-6 12487     -8.169983e+00 -2.685699e+02
-8 12487     1.669000e+02 -2.515000e+02
-9 12487     5.410999e+01 -1.130900e+02
-2 12488     -4.882100e+02 -2.525300e+02
-10 12488     -5.215900e+02 1.193000e+02
-15 12488     -5.187200e+02 1.040700e+02
-2 12489     5.187100e+02 -2.547800e+02
-12 12489     3.994100e+02 -1.947700e+02
-2 12490     -3.288900e+02 -2.557400e+02
-7 12490     -3.795400e+02 1.784003e+01
-12 12490     -4.170000e+02 -1.130300e+02
-15 12490     -3.688800e+02 6.916998e+01
-2 12491     -3.979800e+02 -2.558400e+02
-3 12491     -5.067600e+02 -5.919700e+02
-2 12492     4.936400e+02 -2.572300e+02
-6 12492     3.301100e+02 -2.433900e+02
-2 12493     2.709399e+02 -2.616000e+02
-3 12493     1.921700e+02 -5.605400e+02
-9 12493     1.300400e+02 -1.200800e+02
-2 12494     4.682300e+02 -2.619300e+02
-6 12494     2.975300e+02 -2.603900e+02
-2 12495     7.616000e+02 -2.625200e+02
-12 12495     7.114800e+02 -1.741600e+02
-2 12496     3.355900e+02 -2.639800e+02
-12 12496     1.570600e+02 -2.405100e+02
-2 12497     2.439200e+02 -2.682900e+02
-3 12497     1.667500e+02 -5.682300e+02
-6 12497     5.866998e+01 -2.850601e+02
-8 12497     2.209800e+02 -2.692900e+02
-9 12497     1.086700e+02 -1.267400e+02
-12 12497     5.990997e+01 -2.400000e+02
-15 12497     5.289978e+00 -2.171600e+02
-2 12498     3.603998e+01 -2.695100e+02
-3 12498     -3.848999e+01 -5.784900e+02
-6 12498     -1.468200e+02 -2.763800e+02
-8 12498     5.456000e+01 -2.628500e+02
-2 12499     3.696997e+01 -2.728200e+02
-3 12499     -3.722998e+01 -5.820800e+02
-6 12499     -1.454700e+02 -2.793700e+02
-2 12500     4.238000e+01 -2.733700e+02
-3 12500     -3.202002e+01 -5.823000e+02
-2 12501     3.215997e+01 -2.795600e+02
-3 12501     -4.221002e+01 -5.899900e+02
-6 12501     -1.505000e+02 -2.855100e+02
-9 12501     -6.681000e+01 -1.474800e+02
-10 12501     -2.283200e+02 -1.086400e+02
-12 12501     -1.430900e+02 -2.286100e+02
-13 12501     2.554800e+02 -4.197000e+02
-2 12502     2.944000e+01 -2.810400e+02
-3 12502     -4.497998e+01 -5.913500e+02
-2 12503     -4.687400e+02 -2.840900e+02
-7 12503     -4.948700e+02 -1.030029e+00
-8 12503     -3.286400e+02 -2.505100e+02
-9 12503     -5.061300e+02 -1.848700e+02
-12 12503     -5.566600e+02 -1.441600e+02
-15 12503     -5.198000e+02 5.577002e+01
-2 12504     8.976001e+01 -2.843300e+02
-3 12504     1.545001e+01 -5.908500e+02
-2 12505     1.471002e+01 -2.857800e+02
-3 12505     -5.902002e+01 -5.956899e+02
-2 12506     3.047100e+02 -2.905500e+02
-6 12506     1.210400e+02 -3.027200e+02
-12 12506     1.254600e+02 -2.615900e+02
-2 12507     -2.803003e+01 -2.917200e+02
-3 12507     -1.047900e+02 -6.045699e+02
-8 12507     5.440002e+00 -2.757300e+02
-9 12507     -1.181800e+02 -1.603900e+02
-2 12508     4.620601e+02 -2.964400e+02
-3 12508     3.750500e+02 -5.926200e+02
-2 12509     6.697998e+01 -2.971400e+02
-3 12509     -7.400024e+00 -6.050900e+02
-2 12510     6.428998e+01 -3.008900e+02
-3 12510     -1.029999e+01 -6.102900e+02
-6 12510     -1.175700e+02 -3.053199e+02
-9 12510     -3.951001e+01 -1.638200e+02
-2 12511     3.828900e+02 -3.029300e+02
-6 12511     2.050400e+02 -3.065200e+02
-9 12511     2.226100e+02 -1.505800e+02
-2 12512     1.222300e+02 -3.065300e+02
-6 12512     -6.127002e+01 -3.157500e+02
-2 12513     1.603900e+02 -3.095900e+02
-6 12513     -2.315002e+01 -3.191600e+02
-2 12514     3.348500e+02 -3.101500e+02
-3 12514     2.557900e+02 -6.078900e+02
-2 12515     3.348500e+02 -3.101500e+02
-3 12515     2.557900e+02 -6.078900e+02
-6 12515     1.534400e+02 -3.188101e+02
-2 12516     2.385500e+02 -3.124300e+02
-3 12516     1.624600e+02 -6.133101e+02
-2 12517     4.528700e+02 -3.137200e+02
-12 12517     3.036500e+02 -2.723500e+02
-2 12518     4.568199e+02 -3.148000e+02
-12 12518     3.075100e+02 -2.730000e+02
-2 12519     4.414100e+02 -3.153900e+02
-12 12519     2.895200e+02 -2.747200e+02
-15 12519     2.755100e+02 -2.902300e+02
-2 12520     2.402100e+02 -3.166500e+02
-6 12520     5.687000e+01 -3.260000e+02
-2 12521     3.301600e+02 -3.208600e+02
-3 12521     2.514800e+02 -6.193800e+02
-6 12521     1.489600e+02 -3.277200e+02
-8 12521     2.924100e+02 -3.126700e+02
-12 12521     1.568400e+02 -2.889900e+02
-2 12522     3.387800e+02 -3.222300e+02
-3 12522     2.605300e+02 -6.194800e+02
-2 12523     3.494000e+01 -3.344900e+02
-6 12523     -1.445400e+02 -3.308700e+02
-9 12523     -6.234003e+01 -1.929000e+02
-2 12524     3.183002e+01 -3.354100e+02
-6 12524     -1.483400e+02 -3.322300e+02
-12 12524     -1.375900e+02 -2.753300e+02
-2 12525     1.392300e+02 -3.394900e+02
-6 12525     -4.278003e+01 -3.429500e+02
-2 12526     2.396100e+02 -3.435600e+02
-6 12526     5.767999e+01 -3.487800e+02
-2 12527     5.525699e+02 -3.582800e+02
-12 12527     4.259700e+02 -3.056700e+02
-2 12528     -2.997000e+02 -3.666000e+02
-6 12528     -4.747700e+02 -3.269800e+02
-7 12528     -3.957500e+02 -1.030200e+02
-12 12528     -4.172800e+02 -2.510900e+02
-15 12528     -4.132700e+02 -9.462000e+01
-2 12529     3.391600e+02 -3.769200e+02
-6 12529     1.583300e+02 -3.807100e+02
-2 12530     1.907200e+02 -3.852400e+02
-6 12530     7.539978e+00 -3.904000e+02
-2 12531     1.737200e+02 -3.967800e+02
-6 12531     -8.440002e+00 -3.994900e+02
-12 12531     -5.150024e+00 -3.512900e+02
-2 12532     3.461100e+02 -3.988400e+02
-6 12532     1.665500e+02 -3.976400e+02
-2 12533     3.581801e+02 -4.147400e+02
-6 12533     1.745100e+02 -4.241100e+02
-2 12534     3.639800e+02 -4.355400e+02
-6 12534     1.795300e+02 -4.426899e+02
-2 12535     1.359985e+00 -4.361500e+02
-6 12535     -1.782500e+02 -4.335800e+02
-12 12535     -1.705000e+02 -3.731700e+02
-2 12536     1.359985e+00 -4.361500e+02
-12 12536     -1.705000e+02 -3.731700e+02
-2 12537     4.210800e+02 -4.378101e+02
-6 12537     2.427900e+02 -4.338500e+02
-8 12537     3.666700e+02 -4.096400e+02
-2 12538     -3.085800e+02 -4.486600e+02
-8 12538     -2.163800e+02 -3.935800e+02
-2 12539     1.096002e+01 -4.489301e+02
-6 12539     -1.679500e+02 -4.455900e+02
-2 12540     -2.498900e+02 -4.536300e+02
-12 12540     -3.911400e+02 -3.589900e+02
-2 12541     -2.942400e+02 -4.569100e+02
-6 12541     -4.692000e+02 -4.417200e+02
-8 12541     -2.062500e+02 -4.005400e+02
-2 12542     3.780900e+02 -4.720699e+02
-12 12542     2.016200e+02 -4.370699e+02
-2 12543     1.836500e+02 -4.773700e+02
-6 12543     9.002686e-02 -4.805699e+02
-2 12544     2.034399e+02 -4.896100e+02
-6 12544     2.032001e+01 -4.911300e+02
-2 12545     3.365900e+02 -5.006500e+02
-6 12545     1.524700e+02 -5.026400e+02
-12 12545     1.532800e+02 -4.654301e+02
-2 12546     5.595300e+02 -5.023300e+02
-7 12546     2.280800e+02 -3.579200e+02
-2 12547     4.832800e+02 -5.042800e+02
-15 12547     2.531801e+02 -5.134800e+02
-2 12548     1.109900e+02 -5.214800e+02
-15 12548     -1.561400e+02 -4.218900e+02
-2 12549     4.378700e+02 -5.882800e+02
-6 12549     2.452800e+02 -5.994100e+02
-2 12550     -1.658100e+02 -5.889301e+02
-7 12550     -3.702100e+02 -3.389200e+02
-2 12551     3.604900e+02 -5.962000e+02
-7 12551     2.002002e+01 -4.213600e+02
-2 12552     5.188500e+02 -6.085300e+02
-9 12552     3.500300e+02 -3.910100e+02
-2 12553     5.357700e+02 -6.098700e+02
-10 12553     1.253500e+02 -5.392900e+02
-2 12554     -6.160900e+02 6.208400e+02
-11 12554     -1.151400e+02 -7.780029e+00
-2 12555     -2.138500e+02 6.009900e+02
-3 12555     -3.424800e+02 2.593700e+02
-13 12555     2.746600e+02 4.418300e+02
-14 12555     4.162800e+02 8.150000e+01
-2 12556     -2.862900e+02 5.994300e+02
-3 12556     -4.113400e+02 2.589500e+02
-5 12556     4.407900e+02 1.669700e+02
-13 12556     2.097600e+02 4.315100e+02
-14 12556     3.395200e+02 7.185999e+01
-2 12557     -1.509100e+02 5.970600e+02
-5 12557     5.905601e+02 1.784000e+02
-2 12558     -1.243700e+02 5.970600e+02
-11 12558     3.205699e+02 9.989990e+00
-2 12559     -2.143200e+02 5.967300e+02
-11 12559     2.289301e+02 -4.000244e-01
-14 12559     4.153199e+02 7.812000e+01
-2 12560     -1.669400e+02 5.936800e+02
-5 12560     5.722300e+02 1.731300e+02
-14 12560     4.667300e+02 8.012000e+01
-2 12561     -2.794000e+01 5.913400e+02
-3 12561     -1.694700e+02 2.476400e+02
-13 12561     4.486500e+02 4.561900e+02
-14 12561     6.225400e+02 9.329001e+01
-2 12562     1.089001e+01 5.910900e+02
-13 12562     4.866500e+02 4.611100e+02
-14 12562     6.674399e+02 9.807999e+01
-2 12563     -2.884000e+02 5.905100e+02
-3 12563     -4.129700e+02 2.505100e+02
-4 12563     1.881899e+02 -4.010100e+02
-5 12563     4.382400e+02 1.588200e+02
-2 12564     -2.476001e+01 5.888700e+02
-13 12564     4.515100e+02 4.547900e+02
-2 12565     -8.609985e+00 5.886400e+02
-3 12565     -1.519900e+02 2.454600e+02
-5 12565     7.574700e+02 1.840700e+02
-2 12566     -9.317999e+01 5.852600e+02
-13 12566     3.853600e+02 4.435900e+02
-2 12567     -3.589001e+01 5.799600e+02
-3 12567     -1.771300e+02 2.370900e+02
-13 12567     4.410500e+02 4.473300e+02
-14 12567     6.133000e+02 8.292999e+01
-2 12568     2.653003e+01 5.793600e+02
-3 12568     -1.195100e+02 2.359100e+02
-5 12568     8.005500e+02 1.791300e+02
-11 12568     4.810500e+02 1.337000e+01
-13 12568     5.017700e+02 4.539000e+02
-14 12568     6.859399e+02 8.956000e+01
-2 12569     2.653003e+01 5.793600e+02
-11 12569     4.810500e+02 1.337000e+01
-13 12569     5.017700e+02 4.539000e+02
-14 12569     6.859399e+02 8.956000e+01
-2 12570     -6.921002e+01 5.785100e+02
-3 12570     -2.086600e+02 2.356500e+02
-5 12570     6.832300e+02 1.680000e+02
-13 12570     4.082000e+02 4.411100e+02
-14 12570     5.750500e+02 7.728998e+01
-2 12571     -1.773200e+02 5.775600e+02
-3 12571     -3.087600e+02 2.356300e+02
-4 12571     1.811300e+02 -4.811600e+02
-5 12571     5.590800e+02 1.561300e+02
-11 12571     2.667000e+02 -1.163000e+01
-13 12571     3.069500e+02 4.273200e+02
-14 12571     4.545000e+02 6.389001e+01
-2 12572     -1.664200e+02 5.763900e+02
-3 12572     -2.990700e+02 2.364000e+02
-5 12572     5.710800e+02 1.571600e+02
-2 12573     -6.771002e+01 5.751200e+02
-3 12573     -2.069900e+02 2.324700e+02
-4 12573     1.805500e+02 -5.698199e+02
-5 12573     6.853400e+02 1.649400e+02
-11 12573     3.794500e+02 -1.280029e+00
-13 12573     4.094700e+02 4.385300e+02
-14 12573     5.762200e+02 7.403998e+01
-2 12574     -1.665700e+02 5.733000e+02
-4 12574     1.794301e+02 -4.889301e+02
-5 12574     5.707700e+02 1.535600e+02
-11 12574     2.772500e+02 -1.307001e+01
-2 12575     -1.813500e+02 5.709200e+02
-5 12575     5.536200e+02 1.495500e+02
-14 12575     4.501500e+02 5.690002e+01
-2 12576     -1.879600e+02 5.655800e+02
-11 12576     2.557100e+02 -2.265002e+01
-2 12577     3.588000e+01 5.652300e+02
-3 12577     -1.105800e+02 2.222100e+02
-5 12577     8.112700e+02 1.659900e+02
-11 12577     4.920200e+02 3.210022e+00
-13 12577     5.102800e+02 4.432800e+02
-14 12577     6.964200e+02 7.726001e+01
-2 12578     3.588000e+01 5.652300e+02
-3 12578     -1.105800e+02 2.222100e+02
-5 12578     8.112700e+02 1.659900e+02
-11 12578     4.920200e+02 3.210022e+00
-14 12578     6.964200e+02 7.726001e+01
-2 12579     -1.729900e+02 5.635500e+02
-14 12579     4.581300e+02 5.063000e+01
-2 12580     -1.816700e+02 5.589900e+02
-5 12580     5.518400e+02 1.384600e+02
-8 12580     -7.152002e+01 4.394500e+02
-14 12580     4.483900e+02 4.629999e+01
-2 12581     2.589001e+01 5.545000e+02
-5 12581     7.973900e+02 1.538800e+02
-11 12581     4.809900e+02 -6.409973e+00
-2 12582     -1.570800e+02 5.522700e+02
-4 12582     1.666801e+02 -4.929000e+02
-5 12582     5.794500e+02 1.335000e+02
-11 12582     2.865400e+02 -2.951001e+01
-13 12582     3.237700e+02 4.090500e+02
-2 12583     4.796997e+01 5.518700e+02
-11 12583     5.056100e+02 -5.960022e+00
-13 12583     5.216700e+02 4.335300e+02
-14 12583     7.107100e+02 6.584003e+01
-2 12584     -4.075700e+02 5.516200e+02
-8 12584     -2.583000e+02 4.270600e+02
-2 12585     -3.766400e+02 5.514800e+02
-5 12585     3.422600e+02 1.154500e+02
-8 12585     -2.319800e+02 4.281500e+02
-2 12586     -1.819700e+02 5.514600e+02
-3 12586     -3.139400e+02 2.112700e+02
-4 12586     1.662700e+02 -4.738900e+02
-5 12586     5.514100e+02 1.306000e+02
-8 12586     -7.090002e+01 4.328000e+02
-11 12586     2.612400e+02 -3.251001e+01
-13 12586     3.009600e+02 4.052700e+02
-14 12586     4.479000e+02 3.889001e+01
-2 12587     2.644301e+02 5.516400e+02
-3 12587     1.200100e+02 2.101300e+02
-8 12587     2.866700e+02 4.303500e+02
-2 12588     2.602600e+02 5.508500e+02
-8 12588     2.831900e+02 4.295100e+02
-9 12588     7.071997e+01 5.608800e+02
-2 12589     2.835100e+02 5.493800e+02
-3 12589     1.390900e+02 2.091800e+02
-6 12589     1.952900e+02 8.510300e+02
-8 12589     3.020100e+02 4.287700e+02
-9 12589     9.189001e+01 5.621600e+02
-13 12589     6.847500e+02 3.513800e+02
-2 12590     -2.012400e+02 5.488200e+02
-3 12590     -3.320300e+02 2.092000e+02
-11 12590     2.419200e+02 -3.610999e+01
-2 12591     -1.377500e+02 5.482900e+02
-3 12591     -2.726300e+02 2.073700e+02
-5 12591     6.010300e+02 1.315100e+02
-8 12591     -3.460999e+01 4.309000e+02
-11 12591     3.062500e+02 -3.041998e+01
-13 12591     3.418600e+02 4.078400e+02
-14 12591     4.962300e+02 4.059998e+01
-2 12592     -2.076700e+02 5.474900e+02
-8 12592     -9.245001e+01 4.292500e+02
-13 12592     2.778199e+02 3.997300e+02
-14 12592     4.201300e+02 3.312000e+01
-2 12593     2.672800e+02 5.466200e+02
-3 12593     1.229600e+02 2.052000e+02
-8 12593     2.887400e+02 4.266100e+02
-2 12594     2.777700e+02 5.462200e+02
-3 12594     1.331000e+02 2.050400e+02
-6 12594     1.873200e+02 8.470900e+02
-8 12594     2.967100e+02 4.256600e+02
-9 12594     8.569000e+01 5.578400e+02
-13 12594     6.786400e+02 3.488200e+02
-2 12595     2.538600e+02 5.452500e+02
-8 12595     2.772800e+02 4.248200e+02
-9 12595     6.403003e+01 5.562200e+02
-2 12596     -1.411800e+02 5.443000e+02
-3 12596     -2.761000e+02 2.039400e+02
-5 12596     5.954900e+02 1.267100e+02
-8 12596     -3.682001e+01 4.279700e+02
-2 12597     -2.748500e+02 5.435000e+02
-14 12597     3.490000e+02 2.298999e+01
-2 12598     3.202900e+02 5.430000e+02
-3 12598     1.735900e+02 2.024500e+02
-6 12598     2.383800e+02 8.367400e+02
-8 12598     3.317900e+02 4.229000e+02
-9 12598     1.231700e+02 5.561600e+02
-2 12599     -2.313800e+02 5.422700e+02
-6 12599     -4.289800e+02 8.776200e+02
-8 12599     -1.118300e+02 4.244100e+02
-13 12599     2.559200e+02 3.921900e+02
-14 12599     3.942000e+02 2.521002e+01
-2 12600     2.828900e+02 5.426100e+02
-6 12600     1.944900e+02 8.424600e+02
-9 12600     9.084998e+01 5.553000e+02
-13 12600     6.833800e+02 3.452800e+02
-2 12601     -1.253400e+02 5.418500e+02
-3 12601     -2.612600e+02 2.014300e+02
-4 12601     1.598300e+02 -5.169399e+02
-5 12601     6.149000e+02 1.258500e+02
-13 12601     3.529500e+02 4.044000e+02
-14 12601     5.096100e+02 3.633002e+01
-2 12602     2.663500e+02 5.408400e+02
-3 12602     1.219200e+02 1.999300e+02
-6 12602     1.743300e+02 8.426800e+02
-8 12602     2.881100e+02 4.214700e+02
-9 12602     7.653003e+01 5.530700e+02
-11 12602     5.977300e+02 -1.017500e+02
-13 12602     6.694800e+02 3.464500e+02
-2 12603     -3.731300e+02 5.400700e+02
-14 12603     2.475500e+02 1.056000e+01
-2 12604     -4.218300e+02 5.393300e+02
-3 12604     -5.404300e+02 2.044600e+02
-4 12604     1.616300e+02 -3.084600e+02
-5 12604     2.952200e+02 1.007800e+02
-11 12604     3.196002e+01 -6.295001e+01
-13 12604     9.165997e+01 3.708400e+02
-14 12604     1.997000e+02 5.869995e+00
-2 12605     -2.197300e+02 5.396900e+02
-8 12605     -1.024300e+02 4.228300e+02
-11 12605     2.229500e+02 -4.512000e+01
-2 12606     -1.373600e+02 5.392900e+02
-3 12606     -2.720700e+02 1.989600e+02
-5 12606     6.013800e+02 1.228100e+02
-11 12606     3.072000e+02 -3.734003e+01
-14 12606     4.967000e+02 3.212000e+01
-2 12607     -2.454800e+02 5.379300e+02
-6 12607     -4.460300e+02 8.685900e+02
-2 12608     -2.409100e+02 5.376000e+02
-6 12608     -4.416200e+02 8.690100e+02
-2 12609     3.119900e+02 5.373100e+02
-3 12609     1.655500e+02 1.969300e+02
-6 12609     2.285500e+02 8.320300e+02
-8 12609     3.245400e+02 4.185100e+02
-9 12609     1.159200e+02 5.512600e+02
-11 12609     6.347100e+02 -1.131800e+02
-13 12609     7.083600e+02 3.363600e+02
-2 12610     5.564500e+02 5.356400e+02
-8 12610     5.214700e+02 4.109600e+02
-2 12611     -5.661300e+02 5.348200e+02
-3 12611     -6.810200e+02 2.035700e+02
-5 12611     1.523000e+02 8.702002e+01
-8 12611     -3.883200e+02 4.097600e+02
-13 12611     -2.533002e+01 3.534200e+02
-14 12611     6.116998e+01 -8.919983e+00
-2 12612     -5.529500e+02 5.350200e+02
-3 12612     -6.677900e+02 2.023900e+02
-5 12612     1.655400e+02 8.819000e+01
-8 12612     -3.768800e+02 4.094800e+02
-11 12612     -8.383002e+01 -7.704999e+01
-13 12612     -1.488000e+01 3.547500e+02
-14 12612     7.328998e+01 -8.250000e+00
-2 12613     -4.973400e+02 5.345700e+02
-4 12613     1.610200e+02 -2.624900e+02
-5 12613     2.190601e+02 9.172998e+01
-8 12613     -3.314600e+02 4.122200e+02
-11 12613     -3.579999e+01 -7.171997e+01
-14 12613     1.256300e+02 -4.169983e+00
-2 12614     -3.260300e+02 5.337000e+02
-6 12614     -5.485000e+02 8.457700e+02
-2 12615     -5.877000e+02 5.322600e+02
-14 12615     4.132001e+01 -1.298999e+01
-2 12616     -1.720200e+02 5.319700e+02
-3 12616     -3.048100e+02 1.926200e+02
-4 12616     1.552800e+02 -4.787600e+02
-5 12616     5.608101e+02 1.128900e+02
-6 12616     -3.525300e+02 8.791600e+02
-8 12616     -6.223999e+01 4.175700e+02
-13 12616     3.092400e+02 3.908300e+02
-14 12616     4.574100e+02 2.202002e+01
-2 12617     -3.074900e+02 5.314100e+02
-5 12617     4.127500e+02 1.020200e+02
-6 12617     -5.246800e+02 8.470400e+02
-14 12617     3.136200e+02 8.809998e+00
-2 12618     -2.248700e+02 5.312000e+02
-3 12618     -3.542000e+02 1.927800e+02
-13 12618     2.609600e+02 3.845100e+02
-14 12618     4.006500e+02 1.632001e+01
-2 12619     -5.139400e+02 5.304400e+02
-5 12619     2.025400e+02 8.690997e+01
-2 12620     -1.677500e+02 5.304000e+02
-4 12620     1.532400e+02 -4.815100e+02
-6 12620     -3.472100e+02 8.779100e+02
-8 12620     -5.928003e+01 4.165800e+02
-11 12620     2.754301e+02 -4.700000e+01
-2 12621     -4.622700e+02 5.300700e+02
-5 12621     2.529700e+02 9.012000e+01
-2 12622     -4.167200e+02 5.295900e+02
-11 12622     3.532001e+01 -6.917999e+01
-2 12623     2.517600e+02 5.294000e+02
-8 12623     2.764500e+02 4.122100e+02
-9 12623     6.359003e+01 5.424500e+02
-2 12624     3.000800e+02 5.288700e+02
-3 12624     1.542800e+02 1.891200e+02
-8 12624     3.152900e+02 4.119100e+02
-9 12624     1.057900e+02 5.438700e+02
-11 12624     6.254301e+02 -1.178700e+02
-13 12624     6.971200e+02 3.316800e+02
-2 12625     -2.415200e+02 5.279800e+02
-3 12625     -3.700300e+02 1.896800e+02
-4 12625     1.537200e+02 -4.265900e+02
-6 12625     -4.402900e+02 8.575400e+02
-8 12625     -1.203400e+02 4.126100e+02
-11 12625     2.017600e+02 -5.640002e+01
-13 12625     2.463101e+02 3.801300e+02
-14 12625     3.825800e+02 1.120001e+01
-2 12626     -4.238700e+02 5.277500e+02
-13 12626     8.940997e+01 3.620300e+02
-2 12627     -1.174400e+02 5.265800e+02
-3 12627     -2.532900e+02 1.865300e+02
-4 12627     1.514600e+02 -5.213400e+02
-2 12628     1.991998e+01 5.256400e+02
-8 12628     9.762000e+01 4.163700e+02
-11 12628     4.739600e+02 -3.165002e+01
-2 12629     2.788400e+02 5.250000e+02
-6 12629     1.891000e+02 8.216800e+02
-8 12629     2.981300e+02 4.088400e+02
-11 12629     6.074700e+02 -1.178200e+02
-2 12630     2.788400e+02 5.250000e+02
-6 12630     1.891000e+02 8.216800e+02
-8 12630     2.981300e+02 4.088400e+02
-11 12630     6.074700e+02 -1.178200e+02
-2 12631     4.478199e+02 5.243200e+02
-3 12631     2.996000e+02 1.864000e+02
-8 12631     4.316000e+02 4.026200e+02
-9 12631     2.361600e+02 5.429000e+02
-2 12632     5.250200e+02 5.246900e+02
-8 12632     4.953199e+02 4.020100e+02
-2 12633     -3.032300e+02 5.233900e+02
-4 12633     1.520300e+02 -3.830400e+02
-5 12633     4.169600e+02 9.440002e+01
-6 12633     -5.187900e+02 8.377300e+02
-14 12633     3.181200e+02 1.669983e+00
-2 12634     -1.494000e+02 5.234900e+02
-3 12634     -2.832200e+02 1.839500e+02
-4 12634     1.499000e+02 -4.952900e+02
-5 12634     5.859800e+02 1.062400e+02
-6 12634     -3.232000e+02 8.736600e+02
-14 12634     4.810100e+02 1.696997e+01
-2 12635     -1.550500e+02 5.223500e+02
-3 12635     -2.888800e+02 1.833500e+02
-5 12635     5.792200e+02 1.050500e+02
-6 12635     -3.303100e+02 8.708800e+02
-11 12635     2.885800e+02 -5.246997e+01
-13 12635     3.244600e+02 3.851000e+02
-14 12635     4.758500e+02 1.489001e+01
-2 12636     -2.354500e+02 5.205500e+02
-11 12636     2.073000e+02 -6.192999e+01
-13 12636     2.512900e+02 3.745400e+02
-14 12636     3.887000e+02 5.010010e+00
-2 12637     -1.515300e+02 5.207600e+02
-3 12637     -2.855400e+02 1.822100e+02
-6 12637     -3.252200e+02 8.692400e+02
-8 12637     -4.534003e+01 4.089100e+02
-11 12637     2.919900e+02 -5.303998e+01
-14 12637     4.795601e+02 1.321997e+01
-2 12638     -5.618700e+02 5.189500e+02
-5 12638     1.553800e+02 7.460999e+01
-11 12638     -9.146002e+01 -8.720001e+01
-13 12638     -2.222998e+01 3.422600e+02
-14 12638     6.404999e+01 -2.202002e+01
-2 12639     5.094301e+02 5.188800e+02
-3 12639     3.574900e+02 1.822800e+02
-2 12640     -1.860900e+02 5.178100e+02
-5 12640     5.435900e+02 9.658002e+01
-11 12640     2.565400e+02 -5.871002e+01
-2 12641     2.609301e+02 5.175200e+02
-6 12641     1.679400e+02 8.152300e+02
-9 12641     7.178998e+01 5.324700e+02
-2 12642     5.974200e+02 5.173300e+02
-3 12642     4.395900e+02 1.817400e+02
-8 12642     5.562300e+02 3.945400e+02
-2 12643     -7.969900e+02 5.169500e+02
-5 12643     -5.669000e+01 5.937000e+01
-8 12643     -5.749200e+02 3.891600e+02
-14 12643     -1.435800e+02 -3.982001e+01
-2 12644     -2.282800e+02 5.169600e+02
-6 12644     -4.231400e+02 8.462600e+02
-11 12644     2.145900e+02 -6.335999e+01
-2 12645     -2.282800e+02 5.169600e+02
-6 12645     -4.231400e+02 8.462600e+02
-2 12646     -2.282800e+02 5.169600e+02
-6 12646     -4.231400e+02 8.462600e+02
-11 12646     2.145900e+02 -6.335999e+01
-2 12647     -1.516600e+02 5.170600e+02
-11 12647     2.918800e+02 -5.632001e+01
-2 12648     -7.996000e+02 5.145000e+02
-5 12648     -5.963000e+01 5.809003e+01
-14 12648     -1.461100e+02 -4.135999e+01
-2 12649     -5.839500e+02 5.141600e+02
-11 12649     -1.102700e+02 -9.233002e+01
-14 12649     4.313000e+01 -2.738000e+01
-2 12650     5.566400e+02 5.121400e+02
-3 12650     4.024399e+02 1.761800e+02
-6 12650     4.998400e+02 7.258900e+02
-8 12650     5.227400e+02 3.909600e+02
-9 12650     3.295601e+02 5.342500e+02
-2 12651     5.087000e+01 5.114900e+02
-11 12651     5.086200e+02 -3.956000e+01
-2 12652     -6.879700e+02 5.104200e+02
-5 12652     3.740002e+01 6.046997e+01
-14 12652     -5.117999e+01 -3.773999e+01
-2 12653     5.803300e+02 5.103100e+02
-3 12653     4.240400e+02 1.751200e+02
-2 12654     -5.658300e+02 5.079600e+02
-3 12654     -6.819200e+02 1.781300e+02
-5 12654     1.508300e+02 6.428998e+01
-13 12654     -2.584003e+01 3.338700e+02
-14 12654     5.944000e+01 -3.156000e+01
-2 12655     -1.108800e+02 5.069500e+02
-13 12655     3.635300e+02 3.762300e+02
-14 12655     5.226200e+02 3.539978e+00
-2 12656     -2.388200e+02 5.065100e+02
-3 12656     -3.677300e+02 1.690700e+02
-6 12656     -4.350100e+02 8.307900e+02
-8 12656     -1.179200e+02 3.956900e+02
-11 12656     2.045400e+02 -7.234003e+01
-13 12656     2.478101e+02 3.631200e+02
-14 12656     3.845900e+02 -8.119995e+00
-2 12657     6.484000e+02 5.047300e+02
-3 12657     4.872200e+02 1.707400e+02
-8 12657     5.989600e+02 3.841400e+02
-9 12657     4.065200e+02 5.298000e+02
-2 12658     3.246002e+01 5.026000e+02
-5 12658     7.999900e+02 1.009600e+02
-8 12658     1.080400e+02 3.981100e+02
-2 12659     8.010010e+00 5.006800e+02
-6 12659     -1.207100e+02 8.807700e+02
-11 12659     4.610699e+02 -5.297998e+01
-14 12659     6.599000e+02 1.059998e+01
-2 12660     -9.053003e+01 4.996800e+02
-5 12660     6.513199e+02 8.770001e+01
-2 12661     7.104500e+02 4.996300e+02
-3 12661     5.445601e+02 1.666200e+02
-2 12662     -2.486600e+02 4.965600e+02
-5 12662     4.726500e+02 7.287000e+01
-6 12662     -4.467200e+02 8.156900e+02
-8 12662     -1.258800e+02 3.871900e+02
-11 12662     1.938900e+02 -8.113000e+01
-2 12663     2.602800e+02 4.919400e+02
-6 12663     1.667200e+02 7.830500e+02
-13 12663     6.591100e+02 3.057900e+02
-2 12664     2.602800e+02 4.919400e+02
-3 12664     1.167100e+02 1.539400e+02
-8 12664     2.823900e+02 3.827600e+02
-9 12664     7.062000e+01 5.120400e+02
-11 12664     5.921400e+02 -1.410100e+02
-2 12665     -1.373999e+01 4.916500e+02
-5 12665     7.424500e+02 8.688000e+01
-8 12665     6.941998e+01 3.886600e+02
-2 12666     -2.936200e+02 4.911600e+02
-5 12666     4.239500e+02 6.497998e+01
-6 12666     -5.031300e+02 7.986300e+02
-8 12666     -1.630300e+02 3.818800e+02
-11 12666     1.505500e+02 -8.878003e+01
-14 12666     3.264399e+02 -2.657001e+01
-2 12667     1.583600e+02 4.895600e+02
-3 12667     2.770020e+00 1.513000e+02
-8 12667     2.134000e+02 3.895700e+02
-14 12667     8.437900e+02 1.721997e+01
-2 12668     -3.380500e+02 4.888600e+02
-5 12668     3.771200e+02 6.039001e+01
-6 12668     -5.583500e+02 7.861800e+02
-11 12668     1.077300e+02 -9.414001e+01
-2 12669     -3.306800e+02 4.879500e+02
-5 12669     3.841700e+02 5.964001e+01
-2 12670     -3.306800e+02 4.879500e+02
-5 12670     3.841700e+02 5.964001e+01
-2 12671     -7.248800e+02 4.876100e+02
-5 12671     2.590027e+00 3.885999e+01
-14 12671     -8.514001e+01 -5.898999e+01
-2 12672     2.585601e+02 4.873000e+02
-6 12672     1.646800e+02 7.779600e+02
-8 12672     2.816800e+02 3.779700e+02
-13 12672     6.575000e+02 3.022000e+02
-2 12673     -3.195200e+02 4.825300e+02
-5 12673     3.957100e+02 5.534998e+01
-8 12673     -1.846900e+02 3.741200e+02
-11 12673     1.252300e+02 -9.741998e+01
-2 12674     -3.195200e+02 4.825300e+02
-8 12674     -1.846900e+02 3.741200e+02
-11 12674     1.252300e+02 -9.741998e+01
-2 12675     -1.950600e+02 4.818300e+02
-13 12675     2.860800e+02 3.484100e+02
-2 12676     -3.087100e+02 4.814000e+02
-11 12676     1.361400e+02 -9.696002e+01
-14 12676     3.105601e+02 -3.698999e+01
-2 12677     7.621997e+01 4.817300e+02
-6 12677     -3.207001e+01 8.729300e+02
-13 12677     5.445000e+02 3.770300e+02
-2 12678     6.903003e+01 4.811700e+02
-6 12678     -4.115997e+01 8.697200e+02
-2 12679     -1.563900e+02 4.803400e+02
-3 12679     -2.911800e+02 1.420700e+02
-6 12679     -3.285800e+02 8.161000e+02
-8 12679     -4.914001e+01 3.765300e+02
-14 12679     4.712400e+02 -2.521002e+01
-2 12680     -1.449300e+02 4.800000e+02
-6 12680     -3.144000e+02 8.188700e+02
-8 12680     -3.963000e+01 3.765700e+02
-2 12681     -3.300900e+02 4.782700e+02
-5 12681     3.843500e+02 5.077002e+01
-2 12682     -3.300900e+02 4.782700e+02
-5 12682     3.843500e+02 5.077002e+01
-6 12682     -5.475400e+02 7.743600e+02
-8 12682     -1.933500e+02 3.706800e+02
-11 12682     1.153400e+02 -1.012600e+02
-2 12683     -3.300900e+02 4.782700e+02
-11 12683     1.153400e+02 -1.012600e+02
-2 12684     -6.742900e+02 4.775100e+02
-3 12684     -7.906700e+02 1.504600e+02
-13 12684     -1.095400e+02 3.022800e+02
-14 12684     -4.115997e+01 -6.457001e+01
-2 12685     -6.162900e+02 4.776900e+02
-3 12685     -7.329100e+02 1.505800e+02
-2 12686     -6.162900e+02 4.776900e+02
-11 12686     -1.385400e+02 -1.184800e+02
-2 12687     -3.031700e+02 4.760700e+02
-6 12687     -5.137000e+02 7.773100e+02
-14 12687     3.153500e+02 -4.091998e+01
-2 12688     -1.536800e+02 4.748600e+02
-6 12688     -3.252500e+02 8.099900e+02
-11 12688     2.886801e+02 -9.007001e+01
-14 12688     4.741000e+02 -3.017999e+01
-2 12689     -1.798999e+01 4.750200e+02
-6 12689     -1.527000e+02 8.419200e+02
-11 12689     4.319200e+02 -7.742999e+01
-13 12689     4.502400e+02 3.601100e+02
-14 12689     6.276400e+02 -1.750000e+01
-2 12690     6.027200e+02 4.743300e+02
-9 12690     3.684800e+02 5.029900e+02
-2 12691     -8.789978e+00 4.738800e+02
-3 12691     -1.526100e+02 1.354600e+02
-14 12691     6.383000e+02 -1.716998e+01
-2 12692     -5.994800e+02 4.735900e+02
-13 12692     -5.309003e+01 3.059100e+02
-14 12692     2.589001e+01 -6.294000e+01
-2 12693     -2.453003e+01 4.737400e+02
-3 12693     -1.668400e+02 1.355100e+02
-5 12693     7.273800e+02 6.725000e+01
-6 12693     -1.609300e+02 8.388700e+02
-8 12693     6.081000e+01 3.737500e+02
-11 12693     4.259700e+02 -7.862000e+01
-14 12693     6.208500e+02 -1.846002e+01
-2 12694     -2.087300e+02 4.724300e+02
-3 12694     -3.399100e+02 1.352600e+02
-8 12694     -9.320001e+01 3.690600e+02
-2 12695     5.119000e+02 4.727100e+02
-6 12695     4.460500e+02 6.877600e+02
-8 12695     4.846801e+02 3.601400e+02
-9 12695     2.920500e+02 5.003700e+02
-11 12695     7.601100e+02 -2.489900e+02
-2 12696     -1.592300e+02 4.719000e+02
-6 12696     -3.322100e+02 8.046600e+02
-13 12696     3.173199e+02 3.437400e+02
-14 12696     4.677900e+02 -3.288000e+01
-2 12697     4.887000e+01 4.719600e+02
-3 12697     -9.841998e+01 1.341100e+02
-5 12697     8.179200e+02 7.328003e+01
-6 12697     -6.702002e+01 8.541600e+02
-8 12697     1.218500e+02 3.737100e+02
-13 12697     5.159100e+02 3.659300e+02
-14 12697     7.069900e+02 -1.245001e+01
-2 12698     3.432300e+02 4.718200e+02
-3 12698     1.969900e+02 1.359300e+02
-6 12698     2.628100e+02 7.464900e+02
-2 12699     -6.462700e+02 4.710400e+02
-3 12699     -7.633800e+02 1.441300e+02
-2 12700     -7.665000e+02 4.705200e+02
-14 12700     -1.220200e+02 -7.556000e+01
-2 12701     -2.026900e+02 4.695500e+02
-13 12701     2.781200e+02 3.376000e+02
-2 12702     -7.106800e+02 4.674400e+02
-5 12702     1.348999e+01 2.260999e+01
-13 12702     -1.367900e+02 2.926100e+02
-14 12702     -7.379999e+01 -7.432001e+01
-2 12703     -6.124600e+02 4.662700e+02
-3 12703     -7.294300e+02 1.394600e+02
-13 12703     -6.310999e+01 2.990300e+02
-2 12704     -7.659000e+02 4.653500e+02
-5 12704     -3.548999e+01 1.828003e+01
-8 12704     -5.497600e+02 3.504900e+02
-2 12705     -1.039001e+01 4.645700e+02
-3 12705     -1.541400e+02 1.265600e+02
-6 12705     -1.427100e+02 8.304400e+02
-14 12705     6.359399e+02 -2.640002e+01
-2 12706     -2.273800e+02 4.642300e+02
-6 12706     -4.166500e+02 7.787400e+02
-8 12706     -1.083800e+02 3.617800e+02
-11 12706     2.130700e+02 -1.049900e+02
-2 12707     -1.409003e+01 4.623500e+02
-6 12707     -1.471700e+02 8.266900e+02
-11 12707     4.363800e+02 -8.675000e+01
-13 12707     4.530800e+02 3.504500e+02
-14 12707     6.313101e+02 -2.908002e+01
-2 12708     1.758002e+01 4.608000e+02
-13 12708     4.838700e+02 3.526000e+02
-2 12709     4.540900e+02 4.572900e+02
-6 12709     3.782800e+02 6.778700e+02
-2 12710     1.092300e+02 4.558900e+02
-6 12710     1.053003e+01 8.481600e+02
-2 12711     1.092300e+02 4.558900e+02
-6 12711     1.053003e+01 8.481600e+02
-2 12712     -3.225300e+02 4.531000e+02
-3 12712     -4.480400e+02 1.186600e+02
-5 12712     3.895800e+02 2.765002e+01
-11 12712     1.215400e+02 -1.195500e+02
-14 12712     2.935800e+02 -6.335999e+01
-2 12713     -3.426300e+02 4.513700e+02
-5 12713     3.689301e+02 2.516998e+01
-2 12714     -3.563300e+02 4.510900e+02
-3 12714     -4.804900e+02 1.170800e+02
-6 12714     -5.770800e+02 7.343400e+02
-8 12714     -2.149700e+02 3.483800e+02
-11 12714     8.865002e+01 -1.238400e+02
-2 12715     -6.441998e+01 4.510500e+02
-13 12715     4.039399e+02 3.360600e+02
-14 12715     5.725601e+02 -4.439001e+01
-2 12716     -6.897000e+02 4.494200e+02
-8 12716     -4.878100e+02 3.389600e+02
-11 12716     -1.979300e+02 -1.420400e+02
-2 12717     -2.605200e+02 4.481000e+02
-3 12717     -3.891200e+02 1.130100e+02
-5 12717     4.559301e+02 2.682001e+01
-6 12717     -4.571400e+02 7.524200e+02
-8 12717     -1.355300e+02 3.480400e+02
-11 12717     1.818600e+02 -1.190600e+02
-2 12718     -6.235999e+01 4.473700e+02
-3 12718     -2.031200e+02 1.096700e+02
-5 12718     6.786200e+02 3.813000e+01
-8 12718     2.896002e+01 3.521000e+02
-11 12718     3.835100e+02 -1.035300e+02
-13 12718     4.055500e+02 3.331600e+02
-14 12718     5.744900e+02 -4.797998e+01
-2 12719     -1.879500e+02 4.471800e+02
-8 12719     -7.540002e+01 3.487800e+02
-11 12719     2.539200e+02 -1.146000e+02
-14 12719     4.354900e+02 -5.881000e+01
-2 12720     -1.828998e+01 4.467900e+02
-3 12720     -1.614400e+02 1.093000e+02
-5 12720     7.313700e+02 4.144000e+01
-6 12720     -1.526100e+02 8.072100e+02
-11 12720     4.310500e+02 -9.919000e+01
-13 12720     4.479200e+02 3.372300e+02
-14 12720     6.256899e+02 -4.383002e+01
-2 12721     -2.937200e+02 4.454900e+02
-14 12721     3.234100e+02 -6.807001e+01
-2 12722     -1.375900e+02 4.447600e+02
-5 12722     5.904000e+02 3.007001e+01
-11 12722     3.038800e+02 -1.128700e+02
-2 12723     4.071400e+02 4.443100e+02
-3 12723     2.586600e+02 1.113700e+02
-6 12723     3.358600e+02 7.046500e+02
-8 12723     4.016000e+02 3.415200e+02
-9 12723     2.001500e+02 4.731100e+02
-2 12724     -1.507800e+02 4.426700e+02
-5 12724     5.762400e+02 2.796002e+01
-2 12725     -1.043700e+02 4.421400e+02
-6 12725     -2.608400e+02 7.807800e+02
-2 12726     -5.884400e+02 4.417800e+02
-14 12726     3.413000e+01 -8.926001e+01
-2 12727     -2.527002e+01 4.403400e+02
-11 12727     4.238600e+02 -1.063400e+02
-13 12727     4.410200e+02 3.313400e+02
-14 12727     6.171000e+02 -5.122998e+01
-2 12728     -6.072400e+02 4.400300e+02
-11 12728     -1.320300e+02 -1.451500e+02
-13 12728     -5.996997e+01 2.808100e+02
-14 12728     1.623999e+01 -9.183002e+01
-2 12729     4.064399e+02 4.388100e+02
-3 12729     2.583199e+02 1.060100e+02
-6 12729     3.348200e+02 6.979700e+02
-8 12729     4.006500e+02 3.365800e+02
-9 12729     1.994500e+02 4.682200e+02
-13 12729     7.797400e+02 2.349600e+02
-2 12730     -6.012600e+02 4.375600e+02
-3 12730     -7.197300e+02 1.099100e+02
-11 12730     -1.270000e+02 -1.458500e+02
-13 12730     -5.508002e+01 2.795900e+02
-14 12730     2.190997e+01 -9.362000e+01
-2 12731     -3.679100e+02 4.375800e+02
-5 12731     3.414900e+02 1.077002e+01
-8 12731     -2.237400e+02 3.366600e+02
-2 12732     5.128199e+02 4.375600e+02
-6 12732     4.441600e+02 6.454600e+02
-9 12732     2.930800e+02 4.697800e+02
-2 12733     5.128199e+02 4.375600e+02
-3 12733     3.636300e+02 1.072500e+02
-6 12733     4.441600e+02 6.454600e+02
-9 12733     2.930800e+02 4.697800e+02
-2 12734     6.258800e+02 4.377000e+02
-6 12734     5.736700e+02 6.291300e+02
-9 12734     3.890800e+02 4.722400e+02
-2 12735     -2.925000e+02 4.369400e+02
-6 12735     -4.960100e+02 7.312800e+02
-14 12735     3.239500e+02 -7.553998e+01
-2 12736     -8.623999e+01 4.355000e+02
-5 12736     6.496400e+02 2.538000e+01
-6 12736     -2.376900e+02 7.771400e+02
-8 12736     9.219971e+00 3.417900e+02
-13 12736     3.827600e+02 3.218500e+02
-14 12736     5.469301e+02 -6.054999e+01
-2 12737     5.370001e+01 4.330100e+02
-3 12737     -9.419000e+01 9.598999e+01
-8 12737     1.257200e+02 3.425200e+02
-13 12737     5.170500e+02 3.326000e+02
-14 12737     7.099301e+02 -5.148999e+01
-2 12738     -3.909600e+02 4.318100e+02
-3 12738     -5.139700e+02 9.953003e+01
-14 12738     2.235900e+02 -8.646002e+01
-2 12739     -7.341998e+01 4.298600e+02
-13 12739     3.942400e+02 3.182100e+02
-14 12739     5.610100e+02 -6.537000e+01
-2 12740     -7.341998e+01 4.298600e+02
-3 12740     -2.134700e+02 9.307001e+01
-14 12740     5.610100e+02 -6.537000e+01
-2 12741     3.835100e+02 4.300100e+02
-6 12741     3.075000e+02 6.886600e+02
-2 12742     -3.962900e+02 4.293200e+02
-13 12742     1.088700e+02 2.893900e+02
-14 12742     2.176000e+02 -8.920001e+01
-2 12743     -3.962900e+02 4.293200e+02
-3 12743     -5.198200e+02 9.727002e+01
-13 12743     1.088700e+02 2.893900e+02
-14 12743     2.176000e+02 -8.920001e+01
-2 12744     5.359998e+01 4.280300e+02
-3 12744     -9.429999e+01 9.129999e+01
-6 12744     -6.020001e+01 7.999000e+02
-8 12744     1.256500e+02 3.386900e+02
-9 12744     -1.119100e+02 4.483900e+02
-13 12744     5.166200e+02 3.289700e+02
-14 12744     7.096300e+02 -5.584998e+01
-2 12745     -7.676001e+01 4.269200e+02
-5 12745     6.600100e+02 1.721997e+01
-6 12745     -2.250400e+02 7.682700e+02
-2 12746     -7.676001e+01 4.269200e+02
-5 12746     6.600100e+02 1.721997e+01
-2 12747     -7.214200e+02 4.260000e+02
-13 12747     -1.456900e+02 2.633100e+02
-2 12748     -1.529700e+02 4.262200e+02
-13 12748     3.202700e+02 3.075900e+02
-2 12749     -2.954100e+02 4.243500e+02
-5 12749     4.161600e+02 2.510010e+00
-14 12749     3.202500e+02 -8.728998e+01
-2 12750     -2.954100e+02 4.243500e+02
-5 12750     4.161600e+02 2.510010e+00
-6 12750     -4.982400e+02 7.153800e+02
-11 12750     1.473700e+02 -1.396800e+02
-14 12750     3.202500e+02 -8.728998e+01
-2 12751     -2.950012e+00 4.243800e+02
-3 12751     -1.472000e+02 8.840997e+01
-5 12751     7.477000e+02 1.796002e+01
-6 12751     -1.319900e+02 7.806100e+02
-8 12751     7.832001e+01 3.337500e+02
-9 12751     -1.599100e+02 4.434200e+02
-13 12751     4.609800e+02 3.199200e+02
-14 12751     6.421100e+02 -6.569000e+01
-2 12752     -2.191300e+02 4.237600e+02
-5 12752     4.979200e+02 4.929993e+00
-2 12753     -3.142100e+02 4.217600e+02
-5 12753     3.959301e+02 -9.299927e-01
-14 12753     3.006700e+02 -9.089001e+01
-2 12754     -1.835800e+02 4.200100e+02
-5 12754     5.368500e+02 3.289978e+00
-6 12754     -3.590300e+02 7.340400e+02
-8 12754     -7.189001e+01 3.265100e+02
-9 12754     -3.141600e+02 4.338800e+02
-11 12754     2.572900e+02 -1.359100e+02
-2 12755     -4.891000e+02 4.185400e+02
-5 12755     2.174700e+02 -1.042999e+01
-8 12755     -3.235200e+02 3.198200e+02
-2 12756     -5.909900e+02 4.176200e+02
-8 12756     -4.080100e+02 3.164600e+02
-2 12757     -6.646002e+01 4.159800e+02
-3 12757     -2.069300e+02 7.959998e+01
-8 12757     2.554999e+01 3.264000e+02
-2 12758     -3.597700e+02 4.155800e+02
-3 12758     -4.849100e+02 8.209003e+01
-11 12758     8.609003e+01 -1.502800e+02
-13 12758     1.391300e+02 2.818500e+02
-14 12758     2.536700e+02 -9.959998e+01
-2 12759     -5.265400e+02 4.137000e+02
-5 12759     1.803400e+02 -1.614001e+01
-8 12759     -3.543300e+02 3.155400e+02
-11 12759     -6.442999e+01 -1.597600e+02
-2 12760     -6.003998e+01 4.125800e+02
-4 12760     8.408002e+01 -5.517000e+02
-11 12760     3.871500e+02 -1.305300e+02
-14 12760     5.758199e+02 -8.045001e+01
-2 12761     5.042000e+02 4.126700e+02
-3 12761     3.562800e+02 8.441998e+01
-8 12761     4.765900e+02 3.100400e+02
-2 12762     3.239301e+02 4.122500e+02
-6 12762     2.382400e+02 6.770700e+02
-8 12762     3.335200e+02 3.142300e+02
-2 12763     -4.795400e+02 4.111800e+02
-8 12763     -3.161300e+02 3.151200e+02
-2 12764     5.268700e+02 4.108800e+02
-6 12764     4.593300e+02 6.124600e+02
-9 12764     3.054399e+02 4.470800e+02
-12 12764     5.404500e+02 6.211400e+02
-2 12765     -5.444700e+02 4.100800e+02
-5 12765     1.627900e+02 -2.023999e+01
-8 12765     -3.688500e+02 3.116300e+02
-11 12765     -7.940002e+01 -1.630700e+02
-13 12765     -1.140997e+01 2.641100e+02
-14 12765     7.316998e+01 -1.138800e+02
-2 12766     3.960100e+02 4.084400e+02
-3 12766     2.487000e+02 7.669000e+01
-6 12766     3.210500e+02 6.617800e+02
-2 12767     -2.849300e+02 4.078800e+02
-5 12767     4.252100e+02 -1.233002e+01
-2 12768     -5.378700e+02 4.073800e+02
-8 12768     -3.637000e+02 3.098600e+02
-11 12768     -7.402002e+01 -1.639400e+02
-13 12768     -6.369995e+00 2.627500e+02
-14 12768     7.908002e+01 -1.155500e+02
-2 12769     -1.529500e+02 4.074600e+02
-9 12769     -2.874500e+02 4.242100e+02
-13 12769     3.192000e+02 2.923700e+02
-14 12769     4.707900e+02 -9.346002e+01
-2 12770     -5.452800e+02 4.062000e+02
-3 12770     -6.660100e+02 7.720001e+01
-2 12771     -5.614400e+02 4.034400e+02
-5 12771     1.456500e+02 -2.670001e+01
-8 12771     -3.830600e+02 3.067000e+02
-11 12771     -9.456000e+01 -1.677100e+02
-12 12771     -6.337400e+02 6.202300e+02
-14 12771     5.654999e+01 -1.202600e+02
-2 12772     -7.674300e+02 4.023900e+02
-5 12772     -4.271997e+01 -3.419000e+01
-8 12772     -5.501100e+02 2.998600e+02
-2 12773     -5.583300e+02 4.028100e+02
-11 12773     -9.198999e+01 -1.691400e+02
-12 12773     -6.299700e+02 6.198200e+02
-2 12774     -1.310100e+02 4.019000e+02
-5 12774     5.933900e+02 -1.150000e+01
-6 12774     -2.925200e+02 7.237000e+02
-8 12774     -2.814001e+01 3.138500e+02
-9 12774     -2.681100e+02 4.203100e+02
-2 12775     -5.927300e+02 4.008000e+02
-8 12775     -4.081000e+02 3.034400e+02
-12 12775     -6.696000e+02 6.125900e+02
-14 12775     2.720001e+01 -1.238400e+02
-2 12776     -5.814200e+02 4.004900e+02
-3 12776     -7.014400e+02 7.291998e+01
-2 12777     -1.424000e+02 4.003200e+02
-3 12777     -2.785100e+02 6.458002e+01
-5 12777     5.806899e+02 -1.351001e+01
-6 12777     -3.064000e+02 7.192000e+02
-8 12777     -3.810999e+01 3.120100e+02
-9 12777     -2.778900e+02 4.184300e+02
-11 12777     2.973700e+02 -1.485400e+02
-13 12777     3.277300e+02 2.873500e+02
-14 12777     4.813500e+02 -9.956000e+01
-2 12778     -1.389400e+02 4.006800e+02
-5 12778     5.846300e+02 -1.290997e+01
-6 12778     -3.026200e+02 7.204400e+02
-9 12778     -2.748200e+02 4.191000e+02
-2 12779     5.732001e+01 4.000400e+02
-3 12779     -9.101001e+01 6.414001e+01
-5 12779     8.199800e+02 -1.799988e+00
-6 12779     -5.510999e+01 7.648000e+02
-8 12779     1.284800e+02 3.159000e+02
-9 12779     -1.081600e+02 4.238600e+02
-11 12779     5.138900e+02 -1.324400e+02
-13 12779     5.177400e+02 3.054200e+02
-14 12779     7.121500e+02 -8.367999e+01
-2 12780     -6.022400e+02 3.991200e+02
-12 12780     -6.807200e+02 6.089700e+02
-14 12780     1.832001e+01 -1.256800e+02
-2 12781     -6.022400e+02 3.991200e+02
-12 12781     -6.807200e+02 6.089700e+02
-14 12781     1.832001e+01 -1.256800e+02
-2 12782     -5.378300e+02 3.989000e+02
-5 12782     1.681000e+02 -2.984003e+01
-14 12782     7.842999e+01 -1.230900e+02
-2 12783     -5.378300e+02 3.989000e+02
-5 12783     1.681000e+02 -2.984003e+01
-2 12784     -1.402300e+02 3.974000e+02
-5 12784     5.826899e+02 -1.617999e+01
-9 12784     -2.761600e+02 4.158800e+02
-2 12785     -5.328300e+02 3.965000e+02
-5 12785     1.727900e+02 -3.178998e+01
-8 12785     -3.595500e+02 3.012400e+02
-11 12785     -6.973999e+01 -1.722900e+02
-12 12785     -5.990400e+02 6.164700e+02
-14 12785     8.309003e+01 -1.250900e+02
-2 12786     -5.608200e+02 3.952800e+02
-3 12786     -6.813500e+02 6.762000e+01
-5 12786     1.458100e+02 -3.384003e+01
-11 12786     -9.428003e+01 -1.740300e+02
-12 12786     -6.314900e+02 6.106000e+02
-2 12787     -3.271500e+02 3.954200e+02
-4 12787     8.540002e+01 -3.508900e+02
-6 12787     -5.375600e+02 6.734200e+02
-8 12787     -1.914700e+02 3.056100e+02
-11 12787     1.138500e+02 -1.644700e+02
-2 12788     -7.690000e+02 3.950900e+02
-8 12788     -5.513500e+02 2.942700e+02
-11 12788     -2.610400e+02 -1.818700e+02
-2 12789     -2.511100e+02 3.947900e+02
-4 12789     8.234003e+01 -4.028000e+02
-5 12789     4.604100e+02 -2.371997e+01
-11 12789     1.894000e+02 -1.593300e+02
-13 12789     2.311600e+02 2.745400e+02
-14 12789     3.643700e+02 -1.115600e+02
-2 12790     6.046997e+01 3.941800e+02
-9 12790     -1.050100e+02 4.187700e+02
-14 12790     7.159500e+02 -8.898999e+01
-2 12791     -7.508500e+02 3.932800e+02
-14 12791     -1.144700e+02 -1.369600e+02
-2 12792     -7.346800e+02 3.935900e+02
-5 12792     -1.479999e+01 -3.982001e+01
-8 12792     -5.235500e+02 2.938000e+02
-2 12793     -1.333600e+02 3.921100e+02
-5 12793     5.911500e+02 -2.032001e+01
-6 12793     -2.940700e+02 7.124900e+02
-8 12793     -2.981000e+01 3.062400e+02
-9 12793     -2.698300e+02 4.115300e+02
-11 12793     3.087400e+02 -1.527600e+02
-14 12793     4.920300e+02 -1.049600e+02
-2 12794     -7.599200e+02 3.898800e+02
-11 12794     -2.545300e+02 -1.848300e+02
-2 12795     6.381300e+02 3.881800e+02
-3 12795     4.839399e+02 6.448999e+01
-12 12795     6.630601e+02 5.836700e+02
-2 12796     -3.352200e+02 3.880600e+02
-14 12796     2.771600e+02 -1.235500e+02
-2 12797     4.285999e+01 3.877800e+02
-11 12797     4.976600e+02 -1.439900e+02
-2 12798     -5.304400e+02 3.872200e+02
-8 12798     -3.571600e+02 2.937700e+02
-12 12798     -5.952700e+02 6.072200e+02
-14 12798     8.450000e+01 -1.326000e+02
-2 12799     -5.304400e+02 3.872200e+02
-14 12799     8.450000e+01 -1.326000e+02
-2 12800     -5.304400e+02 3.872200e+02
-12 12800     -5.952700e+02 6.072200e+02
-2 12801     -6.501900e+02 3.872000e+02
-5 12801     6.115997e+01 -4.357001e+01
-12 12801     -7.343000e+02 5.891100e+02
-14 12801     -2.641998e+01 -1.384000e+02
-2 12802     -7.911400e+02 3.861000e+02
-5 12802     -6.448999e+01 -4.742999e+01
-8 12802     -5.690900e+02 2.860400e+02
-11 12802     -2.777400e+02 -1.882400e+02
-14 12802     -1.496800e+02 -1.442200e+02
-2 12803     -7.911400e+02 3.861000e+02
-5 12803     -6.448999e+01 -4.742999e+01
-8 12803     -5.690900e+02 2.860400e+02
-11 12803     -2.777400e+02 -1.882400e+02
-14 12803     -1.496800e+02 -1.442200e+02
-2 12804     -5.237900e+02 3.858900e+02
-5 12804     1.808200e+02 -4.070001e+01
-12 12804     -5.876100e+02 6.069200e+02
-2 12805     -5.237900e+02 3.858900e+02
-3 12805     -6.450900e+02 5.729999e+01
-5 12805     1.808200e+02 -4.070001e+01
-14 12805     9.113000e+01 -1.336800e+02
-2 12806     -1.259800e+02 3.860100e+02
-5 12806     5.987600e+02 -2.557001e+01
-6 12806     -2.847200e+02 7.070600e+02
-8 12806     -2.395001e+01 3.012200e+02
-2 12807     -1.128800e+02 3.855500e+02
-9 12807     -2.520000e+02 4.063700e+02
-14 12807     5.139800e+02 -1.106200e+02
-2 12808     -6.532300e+02 3.848300e+02
-5 12808     5.803003e+01 -4.498999e+01
-8 12808     -4.574500e+02 2.892200e+02
-11 12808     -1.710200e+02 -1.844800e+02
-12 12808     -7.374600e+02 5.867400e+02
-13 12808     -9.603003e+01 2.382600e+02
-14 12808     -2.928998e+01 -1.402000e+02
-2 12809     -6.532300e+02 3.848300e+02
-11 12809     -1.710200e+02 -1.844800e+02
-12 12809     -7.374600e+02 5.867400e+02
-2 12810     -4.753900e+02 3.848100e+02
-3 12810     -5.975100e+02 5.544000e+01
-5 12810     2.277900e+02 -4.004999e+01
-11 12810     -2.039001e+01 -1.780900e+02
-14 12810     1.375300e+02 -1.319400e+02
-2 12811     -4.162000e+02 3.821200e+02
-5 12811     2.871600e+02 -4.082001e+01
-12 12811     -4.607500e+02 6.189200e+02
-2 12812     -4.162000e+02 3.821200e+02
-5 12812     2.871600e+02 -4.082001e+01
-2 12813     -4.162000e+02 3.821200e+02
-5 12813     2.871600e+02 -4.082001e+01
-12 12813     -4.607500e+02 6.189200e+02
-2 12814     -5.642400e+02 3.816200e+02
-5 12814     1.410700e+02 -4.578003e+01
-12 12814     -6.335800e+02 5.960400e+02
-2 12815     -5.642400e+02 3.816200e+02
-12 12815     -6.335800e+02 5.960400e+02
-2 12816     -7.496800e+02 3.795800e+02
-5 12816     -2.940997e+01 -5.185999e+01
-8 12816     -5.358000e+02 2.829000e+02
-2 12817     -2.475900e+02 3.789600e+02
-3 12817     -3.783300e+02 4.470001e+01
-6 12817     -4.346200e+02 6.703800e+02
-13 12817     2.337100e+02 2.625500e+02
-14 12817     3.674600e+02 -1.258800e+02
-2 12818     4.294200e+02 3.789000e+02
-6 12818     3.463500e+02 5.889400e+02
-9 12818     2.226400e+02 4.175500e+02
-2 12819     -7.602300e+02 3.768000e+02
-5 12819     -3.870001e+01 -5.482001e+01
-8 12819     -5.445300e+02 2.801700e+02
-11 12819     -2.555400e+02 -1.932200e+02
-2 12820     -5.701800e+02 3.771500e+02
-11 12820     -1.028500e+02 -1.882800e+02
-12 12820     -6.404600e+02 5.901600e+02
-2 12821     -1.463500e+02 3.771100e+02
-9 12821     -2.803400e+02 3.978200e+02
-13 12821     3.238600e+02 2.692200e+02
-2 12822     -7.726300e+02 3.764500e+02
-5 12822     -4.952002e+01 -5.535999e+01
-8 12822     -5.543500e+02 2.791800e+02
-14 12822     -1.347100e+02 -1.516700e+02
-2 12823     -4.030700e+02 3.759800e+02
-11 12823     4.465997e+01 -1.810700e+02
-2 12824     -1.268600e+02 3.758300e+02
-5 12824     5.965900e+02 -3.590997e+01
-14 12824     4.976500e+02 -1.211500e+02
-2 12825     -1.268600e+02 3.758300e+02
-5 12825     5.965900e+02 -3.590997e+01
-14 12825     4.976500e+02 -1.211500e+02
-2 12826     -3.650100e+02 3.751000e+02
-3 12826     -4.904700e+02 4.302002e+01
-5 12826     3.385400e+02 -4.600000e+01
-6 12826     -5.798700e+02 6.402500e+02
-12 12826     -4.003700e+02 6.188500e+02
-14 12826     2.453700e+02 -1.360100e+02
-2 12827     -1.168600e+02 3.740500e+02
-5 12827     6.083600e+02 -3.744000e+01
-6 12827     -2.723300e+02 6.931300e+02
-2 12828     -1.168600e+02 3.740500e+02
-5 12828     6.083600e+02 -3.744000e+01
-6 12828     -2.723300e+02 6.931300e+02
-9 12828     -2.548900e+02 3.959400e+02
-11 12828     3.253300e+02 -1.677400e+02
-2 12829     -6.611200e+02 3.736900e+02
-8 12829     -4.638700e+02 2.799000e+02
-14 12829     -3.709998e+01 -1.495300e+02
-2 12830     -6.611200e+02 3.736900e+02
-8 12830     -4.638700e+02 2.799000e+02
-13 12830     -1.022500e+02 2.304700e+02
-14 12830     -3.709998e+01 -1.495300e+02
-2 12831     -6.007500e+02 3.734300e+02
-5 12831     1.055200e+02 -5.392999e+01
-12 12831     -6.752900e+02 5.818000e+02
-2 12832     -6.007500e+02 3.734300e+02
-5 12832     1.055200e+02 -5.392999e+01
-11 12832     -1.287300e+02 -1.911100e+02
-12 12832     -6.752900e+02 5.818000e+02
-14 12832     1.753003e+01 -1.480400e+02
-2 12833     -3.830800e+02 3.722700e+02
-3 12833     -5.087400e+02 4.066998e+01
-5 12833     3.199399e+02 -4.927002e+01
-8 12833     -2.359700e+02 2.850900e+02
-11 12833     6.309003e+01 -1.837100e+02
-12 12833     -4.211600e+02 6.129900e+02
-13 12833     1.180700e+02 2.473500e+02
-14 12833     2.274301e+02 -1.393100e+02
-2 12834     -1.426500e+02 3.718000e+02
-6 12834     -3.041700e+02 6.853800e+02
-9 12834     -2.766900e+02 3.935300e+02
-11 12834     2.986801e+02 -1.705300e+02
-2 12835     3.930601e+02 3.713700e+02
-3 12835     2.472300e+02 4.291998e+01
-6 12835     3.165000e+02 6.172000e+02
-9 12835     1.893800e+02 4.093400e+02
-13 12835     7.594399e+02 1.791300e+02
-2 12836     6.347700e+02 3.704100e+02
-6 12836     5.793000e+02 5.478200e+02
-7 12836     5.797100e+02 5.224000e+02
-8 12836     5.855100e+02 2.722700e+02
-9 12836     3.975699e+02 4.155000e+02
-12 12836     6.580699e+02 5.620400e+02
-2 12837     -2.514300e+02 3.694900e+02
-5 12837     4.578800e+02 -4.715997e+01
-6 12837     -4.390200e+02 6.585000e+02
-14 12837     3.627100e+02 -1.347600e+02
-2 12838     -2.514300e+02 3.694900e+02
-5 12838     4.578800e+02 -4.715997e+01
-6 12838     -4.390200e+02 6.585000e+02
-11 12838     1.890400e+02 -1.788300e+02
-2 12839     -5.741900e+02 3.688900e+02
-8 12839     -3.931200e+02 2.784300e+02
-12 12839     -6.437300e+02 5.816900e+02
-2 12840     -7.580900e+02 3.659000e+02
-11 12840     -2.541800e+02 -1.998700e+02
-2 12841     -7.640800e+02 3.648400e+02
-11 12841     -2.588600e+02 -2.009100e+02
-2 12842     7.920001e+01 3.646700e+02
-13 12842     5.360100e+02 2.777300e+02
-14 12842     7.359700e+02 -1.173200e+02
-2 12843     9.333002e+01 3.640000e+02
-14 12843     7.538300e+02 -1.166300e+02
-2 12844     9.333002e+01 3.640000e+02
-11 12844     5.545500e+02 -1.593300e+02
-14 12844     7.538300e+02 -1.166300e+02
-2 12845     -2.098400e+02 3.618100e+02
-11 12845     2.299100e+02 -1.826500e+02
-2 12846     -5.837000e+01 3.618300e+02
-3 12846     -1.983600e+02 2.784003e+01
-4 12846     5.590002e+01 -5.453400e+02
-9 12846     -2.038500e+02 3.876500e+02
-11 12846     3.869700e+02 -1.721700e+02
-13 12846     4.052300e+02 2.662500e+02
-14 12846     5.758300e+02 -1.272900e+02
-2 12847     5.977500e+02 3.607500e+02
-7 12847     5.442900e+02 5.224400e+02
-8 12847     5.551500e+02 2.655000e+02
-9 12847     3.669399e+02 4.064000e+02
-10 12847     7.469000e+02 6.113700e+02
-12 12847     6.161300e+02 5.561000e+02
-2 12848     6.222500e+02 3.599400e+02
-8 12848     5.746200e+02 2.647300e+02
-9 12848     3.870000e+02 4.069700e+02
-10 12848     7.741899e+02 6.019700e+02
-12 12848     6.429900e+02 5.532600e+02
-2 12849     -6.326500e+02 3.596900e+02
-5 12849     7.439001e+01 -6.641998e+01
-13 12849     -8.135999e+01 2.218600e+02
-14 12849     -1.269000e+01 -1.604800e+02
-2 12850     6.004700e+02 3.572300e+02
-9 12850     3.688000e+02 4.036700e+02
-2 12851     1.045001e+01 3.568700e+02
-9 12851     -1.462000e+02 3.847000e+02
-13 12851     4.686700e+02 2.660100e+02
-14 12851     6.537800e+02 -1.298400e+02
-2 12852     -4.679500e+02 3.550700e+02
-13 12852     4.770001e+01 2.293700e+02
-2 12853     7.235999e+01 3.529000e+02
-6 12853     -3.441998e+01 7.122100e+02
-8 12853     1.420000e+02 2.794500e+02
-14 12853     7.286600e+02 -1.279600e+02
-2 12854     -6.384100e+02 3.433300e+02
-11 12854     -1.598100e+02 -2.123700e+02
-2 12855     -2.591400e+02 3.428900e+02
-11 12855     1.811900e+02 -1.994800e+02
-13 12855     2.224800e+02 2.343200e+02
-14 12855     3.536500e+02 -1.593100e+02
-2 12856     -1.804800e+02 3.416400e+02
-5 12856     5.324600e+02 -7.042999e+01
-9 12856     -3.078800e+02 3.653500e+02
-2 12857     6.608002e+01 3.406200e+02
-9 12857     -9.875000e+01 3.715800e+02
-11 12857     5.225300e+02 -1.814900e+02
-13 12857     5.213900e+02 2.571400e+02
-14 12857     7.190400e+02 -1.416700e+02
-2 12858     -6.750700e+02 3.398900e+02
-5 12858     3.416998e+01 -8.334998e+01
-12 12858     -7.561000e+02 5.366700e+02
-2 12859     -2.579500e+02 3.395400e+02
-6 12859     -4.437500e+02 6.215300e+02
-8 12859     -1.325300e+02 2.616400e+02
-9 12859     -3.740900e+02 3.614100e+02
-12 12859     -2.704300e+02 5.971200e+02
-2 12860     -5.791200e+02 3.368100e+02
-12 12860     -6.442000e+02 5.462400e+02
-2 12861     4.030100e+02 3.357900e+02
-6 12861     3.261600e+02 5.769900e+02
-8 12861     3.971300e+02 2.520200e+02
-9 12861     1.989100e+02 3.793900e+02
-2 12862     -1.488000e+02 3.341800e+02
-14 12862     4.702100e+02 -1.616800e+02
-2 12863     3.933600e+02 3.341600e+02
-6 12863     3.156700e+02 5.761400e+02
-8 12863     3.891500e+02 2.497400e+02
-13 12863     7.553700e+02 1.478600e+02
-2 12864     5.133500e+02 3.335800e+02
-3 12864     3.676600e+02 1.028998e+01
-6 12864     4.391500e+02 5.252500e+02
-7 12864     4.636899e+02 5.134500e+02
-8 12864     4.833300e+02 2.442600e+02
-9 12864     2.953800e+02 3.805100e+02
-10 12864     6.478700e+02 6.076800e+02
-12 12864     5.217900e+02 5.336200e+02
-13 12864     8.396801e+02 9.953000e+01
-2 12865     -5.865700e+02 3.315900e+02
-11 12865     -1.176200e+02 -2.194700e+02
-13 12865     -4.644000e+01 2.051100e+02
-14 12865     2.809003e+01 -1.821700e+02
-2 12866     -5.865700e+02 3.315900e+02
-11 12866     -1.176200e+02 -2.194700e+02
-13 12866     -4.644000e+01 2.051100e+02
-2 12867     -1.511700e+02 3.313800e+02
-8 12867     -4.487000e+01 2.578000e+02
-9 12867     -2.827700e+02 3.569000e+02
-2 12868     -5.099300e+02 3.302500e+02
-5 12868     1.890601e+02 -8.982001e+01
-2 12869     9.516998e+01 3.293500e+02
-3 12869     -5.510999e+01 -3.969971e+00
-6 12869     -6.640015e+00 6.870800e+02
-8 12869     1.598400e+02 2.602800e+02
-9 12869     -7.390002e+01 3.633200e+02
-11 12869     5.560200e+02 -1.882200e+02
-13 12869     5.496200e+02 2.504300e+02
-14 12869     7.542200e+02 -1.507100e+02
-2 12870     -4.453003e+01 3.291600e+02
-4 12870     3.429999e+01 -5.506700e+02
-5 12870     6.875200e+02 -7.771997e+01
-6 12870     -1.806000e+02 6.563500e+02
-8 12870     4.379999e+01 2.577900e+02
-9 12870     -1.918100e+02 3.584300e+02
-11 12870     4.006000e+02 -1.985300e+02
-12 12870     -1.590997e+01 6.173300e+02
-14 12870     5.874399e+02 -1.602600e+02
-2 12871     5.149900e+02 3.254600e+02
-8 12871     4.849100e+02 2.379900e+02
-12 12871     5.230200e+02 5.244000e+02
-2 12872     7.191998e+01 3.240600e+02
-5 12872     8.295300e+02 -7.853998e+01
-6 12872     -3.553998e+01 6.755100e+02
-8 12872     1.412300e+02 2.555400e+02
-2 12873     -5.883200e+02 3.234700e+02
-12 12873     -6.529200e+02 5.317200e+02
-2 12874     -3.893900e+02 3.217400e+02
-12 12874     -4.225800e+02 5.591700e+02
-2 12875     -7.409600e+02 3.195000e+02
-14 12875     -1.130100e+02 -1.986400e+02
-2 12876     1.298300e+02 3.191600e+02
-3 12876     -2.264001e+01 -1.296002e+01
-6 12876     3.685999e+01 6.826000e+02
-8 12876     1.885900e+02 2.524700e+02
-9 12876     -4.467999e+01 3.557800e+02
-2 12877     -1.069000e+01 3.159000e+02
-6 12877     -1.382100e+02 6.473400e+02
-2 12878     4.829600e+02 3.144400e+02
-3 12878     3.392600e+02 -8.750000e+00
-6 12878     4.040200e+02 5.078600e+02
-7 12878     4.343400e+02 5.013000e+02
-8 12878     4.582700e+02 2.292700e+02
-9 12878     2.702000e+02 3.636000e+02
-11 12878     7.333199e+02 -3.929800e+02
-12 12878     4.882100e+02 5.154900e+02
-13 12878     8.103101e+02 8.947000e+01
-2 12879     3.839800e+02 3.140100e+02
-3 12879     2.395900e+02 -1.238000e+01
-6 12879     3.039600e+02 5.536400e+02
-7 12879     3.776200e+02 5.472000e+02
-9 12879     1.831000e+02 3.598200e+02
-13 12879     7.450800e+02 1.325000e+02
-2 12880     -4.080600e+02 3.136300e+02
-8 12880     -2.560400e+02 2.386200e+02
-11 12880     3.826001e+01 -2.274200e+02
-2 12881     -4.748999e+01 3.132100e+02
-11 12881     3.976600e+02 -2.108800e+02
-12 12881     -1.885999e+01 5.997200e+02
-14 12881     5.839200e+02 -1.755100e+02
-2 12882     3.882800e+02 3.135900e+02
-3 12882     2.440500e+02 -1.228003e+01
-6 12882     3.089700e+02 5.521400e+02
-9 12882     1.864600e+02 3.593700e+02
-12 12882     4.088900e+02 5.453900e+02
-13 12882     7.485500e+02 1.310100e+02
-2 12883     3.047300e+02 3.109700e+02
-3 12883     1.625500e+02 -1.722998e+01
-7 12883     3.090400e+02 5.602400e+02
-8 12883     3.172000e+02 2.339500e+02
-9 12883     1.150300e+02 3.544600e+02
-11 12883     6.260699e+02 -3.146100e+02
-12 12883     3.213600e+02 5.514700e+02
-13 12883     6.778101e+02 1.456500e+02
-2 12884     -5.880400e+02 3.101700e+02
-12 12884     -6.519000e+02 5.175800e+02
-2 12885     -7.275800e+02 3.096100e+02
-5 12885     -1.644000e+01 -1.101200e+02
-14 12885     -1.012800e+02 -2.048800e+02
-2 12886     -4.084003e+01 3.094200e+02
-9 12886     -1.882400e+02 3.412800e+02
-14 12886     5.910900e+02 -1.783800e+02
-2 12887     3.121801e+02 3.079500e+02
-8 12887     3.233500e+02 2.310700e+02
-13 12887     6.834600e+02 1.405500e+02
-2 12888     -7.308000e+02 3.072400e+02
-8 12888     -5.197400e+02 2.262400e+02
-2 12889     3.086300e+02 3.071100e+02
-3 12889     1.667500e+02 -2.094000e+01
-7 12889     3.113000e+02 5.554300e+02
-8 12889     3.202800e+02 2.303100e+02
-9 12889     1.184800e+02 3.513800e+02
-11 12889     6.282400e+02 -3.196200e+02
-12 12889     3.248199e+02 5.463900e+02
-13 12889     6.801500e+02 1.414000e+02
-2 12890     -3.884800e+02 3.062900e+02
-12 12890     -4.209300e+02 5.424800e+02
-2 12891     -5.893100e+02 3.024400e+02
-12 12891     -6.529900e+02 5.082100e+02
-2 12892     1.208700e+02 3.027100e+02
-3 12892     -3.081000e+01 -2.971002e+01
-6 12892     2.610999e+01 6.610500e+02
-9 12892     -5.116998e+01 3.410100e+02
-12 12892     1.850100e+02 6.114000e+02
-2 12893     4.311200e+02 3.010800e+02
-6 12893     3.454600e+02 4.999400e+02
-7 12893     3.876100e+02 4.991600e+02
-8 12893     4.159800e+02 2.195600e+02
-9 12893     2.262700e+02 3.503900e+02
-10 12893     5.552200e+02 5.977400e+02
-12 12893     4.324301e+02 5.063700e+02
-13 12893     7.634600e+02 8.901001e+01
-2 12894     -1.182900e+02 2.987400e+02
-3 12894     -2.561800e+02 -3.491998e+01
-5 12894     5.992000e+02 -1.096600e+02
-6 12894     -2.696600e+02 6.041900e+02
-8 12894     -1.703998e+01 2.320400e+02
-9 12894     -2.533800e+02 3.296900e+02
-12 12894     -1.021300e+02 5.747100e+02
-13 12894     3.435000e+02 2.096100e+02
-14 12894     5.015200e+02 -1.934300e+02
-2 12895     -1.339600e+02 2.954000e+02
-5 12895     5.824200e+02 -1.129400e+02
-6 12895     -2.870800e+02 5.974300e+02
-8 12895     -2.965002e+01 2.294800e+02
-12 12895     -1.191300e+02 5.692300e+02
-13 12895     3.289399e+02 2.058600e+02
-2 12896     5.898400e+02 2.953000e+02
-3 12896     4.423300e+02 -2.347998e+01
-6 12896     5.234399e+02 4.718000e+02
-7 12896     5.277500e+02 4.595800e+02
-8 12896     5.463000e+02 2.111500e+02
-9 12896     3.623199e+02 3.501400e+02
-2 12897     3.423500e+02 2.952600e+02
-3 12897     2.001801e+02 -3.106000e+01
-7 12897     3.397900e+02 5.363200e+02
-9 12897     1.476400e+02 3.424800e+02
-2 12898     4.632900e+02 2.949700e+02
-3 12898     3.213000e+02 -2.821002e+01
-6 12898     3.813000e+02 4.886100e+02
-7 12898     4.155000e+02 4.859700e+02
-9 12898     2.537700e+02 3.465500e+02
-10 12898     5.871200e+02 5.782700e+02
-13 12898     7.909301e+02 7.704999e+01
-2 12899     3.905699e+02 2.934400e+02
-3 12899     2.462400e+02 -3.187000e+01
-9 12899     1.894200e+02 3.427500e+02
-13 12899     7.482300e+02 1.140800e+02
-2 12900     -4.704600e+02 2.923100e+02
-7 12900     -4.159200e+02 5.777100e+02
-2 12901     2.800601e+02 2.904500e+02
-3 12901     1.391600e+02 -3.753003e+01
-13 12901     6.550500e+02 1.333300e+02
-2 12902     3.108199e+02 2.889600e+02
-3 12902     1.694100e+02 -3.808002e+01
-6 12902     2.202000e+02 5.351700e+02
-8 12902     3.219300e+02 2.157300e+02
-9 12902     1.209100e+02 3.359700e+02
-12 12902     3.269000e+02 5.263900e+02
-2 12903     3.108199e+02 2.889600e+02
-6 12903     2.202000e+02 5.351700e+02
-8 12903     3.219300e+02 2.157300e+02
-9 12903     1.209100e+02 3.359700e+02
-12 12903     3.269000e+02 5.263900e+02
-2 12904     -6.493300e+02 2.884500e+02
-5 12904     5.272998e+01 -1.270500e+02
-12 12904     -7.191000e+02 4.858300e+02
-14 12904     -3.296002e+01 -2.204400e+02
-2 12905     -6.493300e+02 2.884500e+02
-14 12905     -3.296002e+01 -2.204400e+02
-2 12906     -1.822400e+02 2.859600e+02
-13 12906     2.858800e+02 1.958500e+02
-2 12907     3.620900e+02 2.854600e+02
-3 12907     2.192300e+02 -4.007001e+01
-6 12907     2.782300e+02 5.243000e+02
-7 12907     3.562500e+02 5.240200e+02
-8 12907     3.634700e+02 2.120100e+02
-9 12907     1.647500e+02 3.349300e+02
-12 12907     3.805400e+02 5.177200e+02
-13 12907     7.235699e+02 1.132500e+02
-2 12908     -5.957300e+02 2.842800e+02
-5 12908     1.023300e+02 -1.305800e+02
-2 12909     3.578199e+02 2.841900e+02
-6 12909     2.730600e+02 5.235700e+02
-7 12909     3.521899e+02 5.237300e+02
-12 12909     3.756899e+02 5.169200e+02
-2 12910     5.324800e+02 2.842400e+02
-6 12910     4.580500e+02 4.677700e+02
-7 12910     4.752900e+02 4.615100e+02
-8 12910     4.983900e+02 2.039200e+02
-9 12910     3.125000e+02 3.397700e+02
-12 12910     5.402900e+02 4.765300e+02
-13 12910     8.509000e+02 5.388000e+01
-2 12911     3.373101e+02 2.836600e+02
-6 12911     2.494400e+02 5.255400e+02
-8 12911     3.432500e+02 2.109000e+02
-9 12911     1.432500e+02 3.323200e+02
-12 12911     3.544000e+02 5.179500e+02
-13 12911     7.016200e+02 1.167200e+02
-2 12912     -1.210900e+02 2.822000e+02
-6 12912     -2.734300e+02 5.838700e+02
-8 12912     -2.003998e+01 2.188400e+02
-9 12912     -2.550500e+02 3.152300e+02
-12 12912     -1.056200e+02 5.564500e+02
-2 12913     3.549900e+02 2.810400e+02
-3 12913     2.122100e+02 -4.478003e+01
-8 12913     3.575300e+02 2.082400e+02
-9 12913     1.588500e+02 3.306000e+02
-13 12913     7.166700e+02 1.109700e+02
-2 12914     -6.408900e+02 2.806400e+02
-12 12914     -7.084700e+02 4.792300e+02
-2 12915     -4.790000e+02 2.806500e+02
-7 12915     -4.232000e+02 5.661700e+02
-2 12916     3.654301e+02 2.791400e+02
-8 12916     3.662000e+02 2.067100e+02
-9 12916     1.679800e+02 3.295000e+02
-12 12916     3.838700e+02 5.104100e+02
-13 12916     7.255400e+02 1.074900e+02
-2 12917     4.869995e+00 2.783500e+02
-6 12917     -1.190000e+02 6.061700e+02
-8 12917     8.438000e+01 2.179300e+02
-9 12917     -1.481900e+02 3.162600e+02
-12 12917     4.434003e+01 5.691300e+02
-2 12918     -7.509003e+01 2.774200e+02
-5 12918     6.439100e+02 -1.325900e+02
-6 12918     -2.178600e+02 5.844200e+02
-8 12918     1.796002e+01 2.154400e+02
-9 12918     -2.161700e+02 3.118700e+02
-12 12918     -5.277002e+01 5.552100e+02
-2 12919     4.900300e+02 2.773700e+02
-6 12919     4.110600e+02 4.655100e+02
-7 12919     4.378500e+02 4.642700e+02
-9 12919     2.766200e+02 3.321700e+02
-2 12920     6.391400e+02 2.710000e+02
-8 12920     5.872900e+02 1.891100e+02
-2 12921     -4.714600e+02 2.694700e+02
-7 12921     -4.149500e+02 5.566000e+02
-2 12922     7.320200e+02 2.665700e+02
-3 12922     5.780000e+02 -4.601001e+01
-7 12922     6.545400e+02 3.991500e+02
-2 12923     -2.450600e+02 2.640200e+02
-5 12923     4.544399e+02 -1.457500e+02
-6 12923     -4.227600e+02 5.350400e+02
-7 12923     -1.781600e+02 5.765000e+02
-8 12923     -1.220200e+02 2.021800e+02
-9 12923     -3.598000e+02 2.954900e+02
-12 12923     -2.504000e+02 5.186000e+02
-2 12924     -7.178800e+02 2.614300e+02
-8 12924     -5.091000e+02 1.902300e+02
-12 12924     -7.932500e+02 4.480900e+02
-13 12924     -1.470700e+02 1.490900e+02
-2 12925     -6.238800e+02 2.614800e+02
-5 12925     7.370001e+01 -1.497000e+02
-7 12925     -5.682400e+02 5.329900e+02
-11 12925     -1.510600e+02 -2.687300e+02
-12 12925     -6.868500e+02 4.618900e+02
-14 12925     -1.158002e+01 -2.425000e+02
-2 12926     1.913000e+01 2.596900e+02
-8 12926     9.645001e+01 2.037300e+02
-12 12926     6.242999e+01 5.521400e+02
-13 12926     4.694301e+02 1.889000e+02
-2 12927     -4.895000e+02 2.584600e+02
-7 12927     -4.323600e+02 5.449600e+02
-12 12927     -5.330200e+02 4.783100e+02
-2 12928     5.183101e+02 2.566700e+02
-8 12928     4.858300e+02 1.811200e+02
-2 12929     3.416200e+02 2.559600e+02
-6 12929     2.544200e+02 4.935700e+02
-10 12929     5.094200e+02 6.132100e+02
-2 12930     -4.978998e+01 2.546200e+02
-5 12930     6.721500e+02 -1.515200e+02
-9 12930     -1.934100e+02 2.933000e+02
-2 12931     -4.378700e+02 2.520000e+02
-5 12931     2.527000e+02 -1.577200e+02
-7 12931     -3.792200e+02 5.448300e+02
-14 12931     1.645500e+02 -2.468800e+02
-2 12932     3.811700e+02 2.515200e+02
-3 12932     2.392000e+02 -7.353998e+01
-8 12932     3.789900e+02 1.831400e+02
-9 12932     1.825000e+02 3.050700e+02
-12 12932     3.997100e+02 4.776500e+02
-13 12932     7.357500e+02 8.089999e+01
-2 12933     -8.977002e+01 2.502300e+02
-6 12933     -2.336900e+02 5.537800e+02
-12 12933     -6.667999e+01 5.273600e+02
-14 12933     5.310400e+02 -2.372200e+02
-2 12934     6.140800e+02 2.484200e+02
-3 12934     4.673700e+02 -6.625000e+01
-6 12934     5.469301e+02 4.159800e+02
-7 12934     5.436400e+02 4.083400e+02
-9 12934     3.823000e+02 3.116300e+02
-2 12935     -5.806800e+02 2.468500e+02
-7 12935     -5.237400e+02 5.249600e+02
-2 12936     -2.848800e+02 2.447800e+02
-4 12936     6.710022e+00 -3.624200e+02
-9 12936     -3.930600e+02 2.772900e+02
-2 12937     -1.450200e+02 2.433000e+02
-8 12937     -4.000000e+01 1.873600e+02
-9 12937     -2.739400e+02 2.804800e+02
-2 12938     4.924100e+02 2.414700e+02
-3 12938     3.511200e+02 -7.665002e+01
-6 12938     4.113600e+02 4.258400e+02
-9 12938     2.794600e+02 3.024200e+02
-12 12938     4.957200e+02 4.334100e+02
-15 12938     8.044399e+02 5.804400e+02
-2 12939     -3.090900e+02 2.390100e+02
-3 12939     -4.394000e+02 -9.270001e+01
-7 12939     -2.439500e+02 5.469500e+02
-9 12939     -4.136400e+02 2.715000e+02
-14 12939     2.941700e+02 -2.555400e+02
-2 12940     -3.611300e+02 2.370400e+02
-8 12940     -2.171400e+02 1.790700e+02
-12 12940     -3.835400e+02 4.746700e+02
-2 12941     2.679800e+02 2.352500e+02
-13 12941     6.392100e+02 9.073001e+01
-2 12942     -1.043100e+02 2.340100e+02
-7 12942     -2.728003e+01 5.639000e+02
-11 12942     3.342300e+02 -2.767200e+02
-12 12942     -8.425000e+01 5.081500e+02
-2 12943     -6.638600e+02 2.331400e+02
-12 12943     -7.283700e+02 4.270500e+02
-14 12943     -5.059003e+01 -2.667100e+02
-2 12944     -2.701300e+02 2.314200e+02
-4 12944     -2.399902e-01 -3.701400e+02
-5 12944     4.237300e+02 -1.747700e+02
-6 12944     -4.514800e+02 4.937200e+02
-8 12944     -1.426300e+02 1.759600e+02
-12 12944     -2.781600e+02 4.828100e+02
-2 12945     -7.497998e+01 2.280200e+02
-5 12945     6.405400e+02 -1.781700e+02
-6 12945     -2.145600e+02 5.301500e+02
-7 12945     5.250000e+00 5.604000e+02
-8 12945     1.840002e+01 1.762900e+02
-12 12945     -4.860999e+01 5.052600e+02
-14 12945     5.461500e+02 -2.581100e+02
-2 12946     -7.169500e+02 2.270300e+02
-8 12946     -5.081000e+02 1.636900e+02
-2 12947     -3.705500e+02 2.256300e+02
-12 12947     -3.932800e+02 4.616700e+02
-2 12948     4.891700e+02 2.238300e+02
-6 12948     4.065100e+02 4.061900e+02
-8 12948     4.617300e+02 1.551400e+02
-9 12948     2.770300e+02 2.866300e+02
-11 12948     7.397300e+02 -4.827800e+02
-12 12948     4.912100e+02 4.144700e+02
-2 12949     4.891700e+02 2.238300e+02
-6 12949     4.065100e+02 4.061900e+02
-8 12949     4.617300e+02 1.551400e+02
-10 12949     5.982300e+02 4.874300e+02
-2 12950     -7.491998e+01 2.227300e+02
-3 12950     -2.158400e+02 -1.094000e+02
-5 12950     6.400200e+02 -1.813100e+02
-6 12950     -2.143900e+02 5.252500e+02
-7 12950     5.039978e+00 5.564000e+02
-8 12950     1.839001e+01 1.730600e+02
-11 12950     3.653600e+02 -2.842700e+02
-12 12950     -4.847998e+01 5.007100e+02
-13 12950     3.785000e+02 1.540200e+02
-14 12950     5.456500e+02 -2.627800e+02
-2 12951     -7.011300e+02 2.215300e+02
-5 12951     -1.330017e+00 -1.837800e+02
-2 12952     -5.506300e+02 2.189100e+02
-12 12952     -5.995300e+02 4.273900e+02
-2 12953     -7.158900e+02 2.185700e+02
-5 12953     -1.469000e+01 -1.857400e+02
-7 12953     -6.538800e+02 4.855200e+02
-8 12953     -5.070800e+02 1.573600e+02
-2 12954     -4.004500e+02 2.181500e+02
-7 12954     -3.384600e+02 5.192000e+02
-2 12955     8.058800e+02 2.179200e+02
-3 12955     6.499100e+02 -8.940002e+01
-7 12955     7.153199e+02 3.336900e+02
-9 12955     5.421200e+02 2.915200e+02
-2 12956     5.429600e+02 2.171000e+02
-6 12956     4.670500e+02 3.919100e+02
-7 12956     4.776000e+02 3.948600e+02
-9 12956     3.236200e+02 2.830300e+02
-10 12956     6.525300e+02 4.598700e+02
-2 12957     3.734100e+02 2.165000e+02
-6 12957     2.888100e+02 4.450100e+02
-9 12957     1.758101e+02 2.762500e+02
-13 12957     7.253400e+02 5.464001e+01
-2 12958     -1.782400e+02 2.126800e+02
-3 12958     -3.145200e+02 -1.195700e+02
-7 12958     -1.062900e+02 5.369800e+02
-8 12958     -6.704999e+01 1.626300e+02
-13 12958     2.848101e+02 1.403100e+02
-14 12958     4.297600e+02 -2.761100e+02
-2 12959     3.149800e+02 2.117100e+02
-8 12959     3.247100e+02 1.537400e+02
-12 12959     3.305200e+02 4.421000e+02
-13 12959     6.756300e+02 6.277002e+01
-2 12960     -2.632700e+02 2.083600e+02
-6 12960     -4.407800e+02 4.674200e+02
-12 12960     -2.678000e+02 4.588900e+02
-14 12960     3.392000e+02 -2.823500e+02
-2 12961     6.481100e+02 2.054600e+02
-8 12961     5.934700e+02 1.358900e+02
-2 12962     6.332100e+02 2.047300e+02
-6 12962     5.659200e+02 3.648300e+02
-9 12962     3.993300e+02 2.755100e+02
-2 12963     7.385699e+02 2.038200e+02
-3 12963     5.882300e+02 -1.049600e+02
-7 12963     6.510699e+02 3.364800e+02
-9 12963     4.874399e+02 2.779200e+02
-2 12964     -6.532100e+02 2.029800e+02
-13 12964     -1.003400e+02 1.126100e+02
-2 12965     6.446700e+02 2.024300e+02
-6 12965     5.787900e+02 3.607200e+02
-9 12965     4.085900e+02 2.740100e+02
-2 12966     5.858600e+02 2.023100e+02
-6 12966     5.134700e+02 3.689200e+02
-7 12966     5.132100e+02 3.710700e+02
-8 12966     5.416600e+02 1.346000e+02
-9 12966     3.596500e+02 2.711200e+02
-12 12966     5.942500e+02 3.791300e+02
-2 12967     -2.419600e+02 2.012200e+02
-7 12967     -1.729300e+02 5.199900e+02
-2 12968     -8.726001e+01 2.008200e+02
-3 12968     -2.274600e+02 -1.309000e+02
-5 12968     6.235200e+02 -2.032300e+02
-7 12968     -8.179993e+00 5.349800e+02
-13 12968     3.658700e+02 1.363400e+02
-14 12968     5.303800e+02 -2.841100e+02
-2 12969     6.764700e+02 2.004500e+02
-9 12969     4.356600e+02 2.732900e+02
-2 12970     4.614100e+02 1.988600e+02
-6 12970     3.749500e+02 3.832000e+02
-2 12971     6.179600e+02 1.973700e+02
-3 12971     4.735699e+02 -1.151800e+02
-8 12971     5.685100e+02 1.301800e+02
-9 12971     3.867800e+02 2.688300e+02
-10 12971     7.257600e+02 4.089700e+02
-12 12971     6.286300e+02 3.702700e+02
-2 12972     5.090800e+02 1.968900e+02
-6 12972     4.279900e+02 3.747300e+02
-9 12972     2.947800e+02 2.652700e+02
-12 12972     5.119000e+02 3.834300e+02
-13 12972     8.195601e+02 -1.309003e+01
-2 12973     -6.100000e+02 1.954800e+02
-7 12973     -5.481600e+02 4.767300e+02
-2 12974     2.930100e+02 1.928200e+02
-7 12974     2.904000e+02 4.501000e+02
-10 12974     4.511300e+02 5.562300e+02
-12 12974     3.078101e+02 4.246300e+02
-13 12974     6.556600e+02 5.098999e+01
-2 12975     6.476600e+02 1.899200e+02
-6 12975     5.812000e+02 3.472400e+02
-10 12975     7.550800e+02 3.891800e+02
-2 12976     -3.742200e+02 1.896600e+02
-5 12976     3.104100e+02 -2.161900e+02
-7 12976     -3.111800e+02 4.945300e+02
-8 12976     -2.276800e+02 1.406100e+02
-14 12976     2.219900e+02 -3.033800e+02
-2 12977     6.017800e+02 1.892700e+02
-10 12977     7.072100e+02 4.060800e+02
-2 12978     -4.112700e+02 1.890200e+02
-12 12978     -4.370000e+02 4.189900e+02
-2 12979     -4.112700e+02 1.890200e+02
-12 12979     -4.370000e+02 4.189900e+02
-2 12980     4.345900e+02 1.892000e+02
-3 12980     2.964600e+02 -1.292200e+02
-8 12980     4.175500e+02 1.286200e+02
-9 12980     2.316500e+02 2.560100e+02
-12 12980     4.336500e+02 3.844000e+02
-13 12980     7.539200e+02 -2.919983e+00
-2 12981     5.534700e+02 1.888100e+02
-7 12981     4.827700e+02 3.671100e+02
-9 12981     3.321600e+02 2.601600e+02
-2 12982     6.516801e+02 1.887300e+02
-3 12982     5.056300e+02 -1.224500e+02
-7 12982     5.696700e+02 3.429500e+02
-8 12982     5.964399e+02 1.216200e+02
-10 12982     7.594200e+02 3.855700e+02
-12 12982     6.642700e+02 3.559900e+02
-2 12983     8.242300e+02 1.891300e+02
-7 12983     7.266899e+02 3.018900e+02
-9 12983     5.579399e+02 2.679800e+02
-2 12984     -6.476100e+02 1.856700e+02
-5 12984     4.352002e+01 -2.143100e+02
-7 12984     -5.836800e+02 4.645000e+02
-8 12984     -4.504900e+02 1.331100e+02
-14 12984     -3.947998e+01 -3.066200e+02
-2 12985     7.146300e+02 1.834700e+02
-3 12985     5.667200e+02 -1.250100e+02
-7 12985     6.260601e+02 3.230300e+02
-10 12985     8.259399e+02 3.544300e+02
-12 12985     7.338300e+02 3.426900e+02
-2 12986     -2.854600e+02 1.801300e+02
-5 12986     4.022800e+02 -2.228300e+02
-6 12986     -4.658300e+02 4.312700e+02
-7 12986     -2.179800e+02 4.972400e+02
-8 12986     -1.547900e+02 1.349900e+02
-9 12986     -3.906700e+02 2.201900e+02
-14 12986     3.136801e+02 -3.078500e+02
-2 12987     7.140699e+02 1.799900e+02
-3 12987     5.665500e+02 -1.285400e+02
-9 12987     4.675800e+02 2.569600e+02
-10 12987     8.250100e+02 3.515100e+02
-2 12988     -6.841600e+02 1.795300e+02
-14 12988     -7.383002e+01 -3.121200e+02
-2 12989     -2.740200e+02 1.771700e+02
-5 12989     4.139900e+02 -2.253500e+02
-6 12989     -4.520700e+02 4.310700e+02
-12 12989     -2.787700e+02 4.262700e+02
-2 12990     -1.685400e+02 1.766300e+02
-3 12990     -3.057800e+02 -1.548400e+02
-4 12990     -3.802002e+01 -4.330699e+02
-7 12990     -9.548999e+01 5.055300e+02
-9 12990     -2.909700e+02 2.216400e+02
-11 12990     2.660699e+02 -3.240500e+02
-12 12990     -1.565400e+02 4.398100e+02
-2 12991     6.211600e+02 1.767500e+02
-6 12991     5.517700e+02 3.375400e+02
-7 12991     5.419500e+02 3.401900e+02
-8 12991     5.711500e+02 1.135700e+02
-9 12991     3.901700e+02 2.521300e+02
-10 12991     7.234100e+02 3.844500e+02
-12 12991     6.314100e+02 3.476500e+02
-2 12992     -6.451700e+02 1.742200e+02
-7 12992     -5.798800e+02 4.552600e+02
-2 12993     6.284900e+02 1.740400e+02
-3 12993     4.846500e+02 -1.363100e+02
-10 12993     7.309800e+02 3.793700e+02
-2 12994     6.327800e+02 1.734000e+02
-3 12994     4.889301e+02 -1.372300e+02
-10 12994     7.353400e+02 3.762800e+02
-12 12994     6.437300e+02 3.414900e+02
-2 12995     6.930000e+02 1.715400e+02
-3 12995     5.444900e+02 -1.373400e+02
-7 12995     6.041500e+02 3.175300e+02
-9 12995     4.494100e+02 2.494300e+02
-10 12995     7.993400e+02 3.502100e+02
-12 12995     7.084500e+02 3.321700e+02
-2 12996     -7.287500e+02 1.678300e+02
-5 12996     -3.140997e+01 -2.285200e+02
-8 12996     -5.170100e+02 1.168500e+02
-12 12996     -7.924900e+02 3.517300e+02
-14 12996     -1.155100e+02 -3.223000e+02
-2 12997     -5.747400e+02 1.681400e+02
-8 12997     -3.916600e+02 1.201700e+02
-2 12998     -5.747400e+02 1.681400e+02
-12 12998     -6.199000e+02 3.745600e+02
-2 12999     7.382000e+02 1.661300e+02
-12 12999     7.580601e+02 3.195800e+02
-2 13000     -7.113700e+02 1.649700e+02
-5 13000     -1.641998e+01 -2.317100e+02
-2 13001     8.213101e+02 1.646300e+02
-3 13001     6.683300e+02 -1.388900e+02
-7 13001     7.198199e+02 2.794700e+02
-9 13001     5.558199e+02 2.474100e+02
-2 13002     8.213101e+02 1.646300e+02
-3 13002     6.683300e+02 -1.388900e+02
-7 13002     7.198199e+02 2.794700e+02
-9 13002     5.558199e+02 2.474100e+02
-2 13003     6.269100e+02 1.640500e+02
-7 13003     5.447400e+02 3.267600e+02
-2 13004     2.757000e+02 1.627900e+02
-3 13004     1.648200e+02 -1.540600e+02
-2 13005     6.692000e+02 1.623000e+02
-7 13005     5.826100e+02 3.145600e+02
-9 13005     4.311200e+02 2.409600e+02
-2 13006     8.163700e+02 1.623600e+02
-3 13006     6.633500e+02 -1.401400e+02
-7 13006     7.150900e+02 2.786600e+02
-9 13006     5.517400e+02 2.456000e+02
-2 13007     1.916200e+02 1.615000e+02
-6 13007     3.992999e+01 2.040700e+02
-8 13007     2.060900e+02 8.720001e+01
-12 13007     6.187000e+01 2.575900e+02
-14 13007     6.559000e+02 -5.853400e+02
-2 13008     6.920100e+02 1.614500e+02
-3 13008     5.465300e+02 -1.464300e+02
-7 13008     6.025699e+02 3.082200e+02
-10 13008     7.956300e+02 3.394300e+02
-2 13009     6.855000e+02 1.612500e+02
-3 13009     5.401500e+02 -1.468700e+02
-7 13009     5.968700e+02 3.097000e+02
-9 13009     4.451300e+02 2.407200e+02
-10 13009     7.885400e+02 3.420400e+02
-12 13009     7.015601e+02 3.217500e+02
-2 13010     -7.284300e+02 1.598800e+02
-7 13010     -6.590700e+02 4.343500e+02
-8 13010     -5.161300e+02 1.110200e+02
-2 13011     2.016700e+02 1.602500e+02
-3 13011     9.752002e+01 -1.574200e+02
-2 13012     2.778300e+02 1.598200e+02
-3 13012     1.673900e+02 -1.566900e+02
-8 13012     2.696800e+02 9.057999e+01
-2 13013     3.605601e+02 1.570400e+02
-6 13013     2.729600e+02 3.803100e+02
-8 13013     3.609400e+02 1.077600e+02
-10 13013     5.096100e+02 4.955100e+02
-12 13013     3.761899e+02 3.788700e+02
-2 13014     -4.924000e+02 1.560400e+02
-8 13014     -3.244600e+02 1.125800e+02
-11 13014     -4.315997e+01 -3.434800e+02
-2 13015     6.706200e+02 1.543500e+02
-10 13015     7.702500e+02 3.403100e+02
-2 13016     -4.894000e+02 1.538900e+02
-8 13016     -3.224400e+02 1.105000e+02
-12 13016     -5.224100e+02 3.716200e+02
-2 13017     6.453000e+02 1.528600e+02
-9 13017     4.106100e+02 2.326500e+02
-10 13017     7.436600e+02 3.483300e+02
-2 13018     -5.090600e+02 1.512000e+02
-7 13018     -4.455500e+02 4.481900e+02
-2 13019     -6.885200e+02 1.500200e+02
-5 13019     3.200012e+00 -2.431700e+02
-7 13019     -6.194000e+02 4.305500e+02
-10 13019     -6.215500e+02 5.942500e+02
-12 13019     -7.448100e+02 3.407200e+02
-2 13020     -3.147400e+02 1.489200e+02
-5 13020     3.683199e+02 -2.546200e+02
-2 13021     -1.967800e+02 1.489500e+02
-14 13021     4.054200e+02 -3.356900e+02
-2 13022     -5.875800e+02 1.431500e+02
-7 13022     -5.206900e+02 4.351800e+02
-14 13022     1.250000e+01 -3.422700e+02
-2 13023     -2.891400e+02 1.417500e+02
-7 13023     -2.199400e+02 4.641300e+02
-13 13023     1.858101e+02 8.325000e+01
-14 13023     3.071000e+02 -3.424400e+02
-2 13024     3.197600e+02 1.418700e+02
-3 13024     2.114399e+02 -1.717700e+02
-2 13025     5.314200e+02 1.411900e+02
-7 13025     4.587600e+02 3.268300e+02
-10 13025     6.240000e+02 3.790700e+02
-12 13025     5.329500e+02 3.206500e+02
-13 13025     8.323300e+02 -6.446997e+01
-2 13026     -3.157000e+02 1.389900e+02
-5 13026     3.668300e+02 -2.639400e+02
-2 13027     -5.824000e+02 1.387100e+02
-14 13027     1.710999e+01 -3.464700e+02
-2 13028     -6.463300e+02 1.380300e+02
-5 13028     4.169000e+01 -2.539800e+02
-7 13028     -5.763700e+02 4.252300e+02
-10 13028     -5.707300e+02 5.858300e+02
-14 13028     -4.126001e+01 -3.460700e+02
-2 13029     -5.868700e+02 1.370100e+02
-5 13029     9.550000e+01 -2.568600e+02
-8 13029     -4.017500e+02 9.537000e+01
-2 13030     -4.882300e+02 1.366900e+02
-5 13030     1.911400e+02 -2.571100e+02
-8 13030     -3.209800e+02 9.845001e+01
-13 13030     2.348999e+01 7.228003e+01
-2 13031     8.317300e+02 1.361100e+02
-7 13031     7.241100e+02 2.501600e+02
-9 13031     5.649600e+02 2.240800e+02
-2 13032     -6.084000e+02 1.353700e+02
-12 13032     -6.542000e+02 3.373000e+02
-2 13033     -3.737700e+02 1.357100e+02
-3 13033     -5.057700e+02 -1.951600e+02
-7 13033     -3.064300e+02 4.454700e+02
-8 13033     -2.272300e+02 9.801999e+01
-9 13033     -4.644600e+02 1.795300e+02
-10 13033     -2.483200e+02 5.970600e+02
-12 13033     -3.899000e+02 3.679700e+02
-13 13033     1.153000e+02 7.566998e+01
-14 13033     2.194900e+02 -3.478800e+02
-2 13034     3.111700e+02 1.351700e+02
-3 13034     2.050699e+02 -1.777400e+02
-2 13035     -3.117500e+02 1.344500e+02
-6 13035     -4.903700e+02 3.699400e+02
-7 13035     -2.491700e+02 4.509400e+02
-8 13035     -1.735400e+02 9.823999e+01
-12 13035     -3.173800e+02 3.736200e+02
-2 13036     -6.209500e+02 1.313400e+02
-7 13036     -5.520700e+02 4.217100e+02
-10 13036     -5.418600e+02 5.806000e+02
-2 13037     -4.896600e+02 1.313200e+02
-7 13037     -4.230200e+02 4.346500e+02
-8 13037     -3.224500e+02 9.292999e+01
-2 13038     6.703800e+02 1.302100e+02
-7 13038     5.790300e+02 2.845900e+02
-10 13038     7.646801e+02 3.132000e+02
-2 13039     6.781000e+01 1.301800e+02
-5 13039     6.035300e+02 -5.185000e+02
-6 13039     -1.105100e+02 1.614800e+02
-10 13039     -1.066100e+02 3.007800e+02
-12 13039     -7.879999e+01 2.146600e+02
-15 13039     -4.996997e+01 3.238200e+02
-2 13040     3.121600e+02 1.286000e+02
-4 13040     -2.519000e+02 -5.695400e+02
-8 13040     2.933800e+02 5.817001e+01
-12 13040     1.810400e+02 1.999100e+02
-2 13041     2.515200e+02 1.278800e+02
-3 13041     1.505600e+02 -1.858000e+02
-2 13042     2.570699e+02 1.252300e+02
-3 13042     1.561200e+02 -1.882000e+02
-4 13042     -2.385800e+02 -5.203500e+02
-6 13042     8.778003e+01 1.425800e+02
-8 13042     2.448400e+02 5.685001e+01
-12 13042     1.123200e+02 1.938300e+02
-13 13042     4.821000e+02 -1.478800e+02
-2 13043     1.995300e+02 1.249400e+02
-4 13043     -2.237600e+02 -4.791801e+02
-5 13043     7.274800e+02 -5.702700e+02
-6 13043     2.597998e+01 1.404300e+02
-8 13043     1.974200e+02 5.691000e+01
-12 13043     4.937000e+01 1.933700e+02
-2 13044     5.753700e+02 1.232100e+02
-6 13044     4.979399e+02 2.858200e+02
-9 13044     3.525200e+02 2.050400e+02
-12 13044     5.794900e+02 2.956800e+02
-2 13045     2.679800e+02 1.219500e+02
-3 13045     1.660500e+02 -1.911600e+02
-4 13045     -2.442400e+02 -5.262800e+02
-6 13045     9.925000e+01 1.375200e+02
-7 13045     4.646002e+01 2.031500e+02
-8 13045     2.531600e+02 5.389001e+01
-10 13045     6.596997e+01 2.332300e+02
-13 13045     4.899100e+02 -1.530700e+02
-2 13046     2.495400e+02 1.202700e+02
-4 13046     -2.403000e+02 -5.119700e+02
-5 13046     7.805200e+02 -5.893300e+02
-6 13046     7.891998e+01 1.341200e+02
-8 13046     2.385400e+02 5.206000e+01
-10 13046     4.439001e+01 2.329500e+02
-12 13046     1.021100e+02 1.858000e+02
-2 13047     6.912000e+02 1.189000e+02
-7 13047     5.960900e+02 2.697900e+02
-2 13048     -6.384900e+02 1.176000e+02
-7 13048     -5.678800e+02 4.081800e+02
-10 13048     -5.609800e+02 5.657900e+02
-2 13049     -4.810300e+02 1.172500e+02
-7 13049     -4.136800e+02 4.239300e+02
-14 13049     1.116700e+02 -3.648600e+02
-2 13050     -3.839700e+02 1.144900e+02
-6 13050     -5.782500e+02 3.379400e+02
-7 13050     -3.162300e+02 4.310100e+02
-8 13050     -2.358200e+02 8.126999e+01
-9 13050     -4.723800e+02 1.566300e+02
-13 13050     1.059100e+02 6.008002e+01
-14 13050     2.077200e+02 -3.675300e+02
-2 13051     -6.400500e+02 1.141900e+02
-14 13051     -3.894000e+01 -3.666300e+02
-2 13052     6.858002e+01 1.125200e+02
-6 13052     -1.104100e+02 1.369400e+02
-2 13053     4.436100e+02 1.120000e+02
-7 13053     3.819301e+02 3.213100e+02
-2 13054     1.203003e+01 1.113700e+02
-6 13054     -1.675400e+02 1.508100e+02
-2 13055     -4.397700e+02 1.112500e+02
-7 13055     -3.715600e+02 4.232200e+02
-2 13056     7.007300e+02 1.104600e+02
-3 13056     5.564100e+02 -1.942300e+02
-7 13056     6.019100e+02 2.603600e+02
-9 13056     4.575000e+02 1.993400e+02
-12 13056     7.145400e+02 2.640500e+02
-2 13057     8.149301e+02 1.093700e+02
-3 13057     6.661899e+02 -1.914600e+02
-9 13057     5.525400e+02 2.013600e+02
-2 13058     8.149301e+02 1.093700e+02
-3 13058     6.661899e+02 -1.914600e+02
-9 13058     5.525400e+02 2.013600e+02
-2 13059     2.116500e+02 1.082800e+02
-3 13059     1.148200e+02 -2.052300e+02
-4 13059     -2.385200e+02 -4.799800e+02
-5 13059     7.338400e+02 -5.950601e+02
-6 13059     3.719000e+01 1.175200e+02
-8 13059     2.060300e+02 4.228000e+01
-10 13059     -1.429993e+00 2.248900e+02
-12 13059     5.771997e+01 1.706700e+02
-13 13059     4.400200e+02 -1.595300e+02
-15 13059     7.202002e+01 2.368100e+02
-2 13060     -6.444000e+01 1.055900e+02
-3 13060     -2.002200e+02 -2.244100e+02
-8 13060     2.126001e+01 7.562000e+01
-10 13060     9.720001e+01 5.586200e+02
-12 13060     -5.327002e+01 3.587100e+02
-2 13061     1.593000e+02 1.048900e+02
-3 13061     6.490002e+01 -2.094100e+02
-5 13061     6.794000e+02 -5.831400e+02
-7 13061     -5.573999e+01 1.954900e+02
-10 13061     -5.156000e+01 2.337500e+02
-15 13061     1.396997e+01 2.466900e+02
-2 13062     -2.824700e+02 1.043100e+02
-7 13062     -2.124300e+02 4.319800e+02
-14 13062     3.108600e+02 -3.760300e+02
-2 13063     4.108002e+01 1.043300e+02
-8 13063     6.946002e+01 4.317001e+01
-2 13064     -2.520900e+02 1.028200e+02
-7 13064     -1.813800e+02 4.335900e+02
-10 13064     -9.815002e+01 5.784900e+02
-14 13064     3.425800e+02 -3.776900e+02
-2 13065     -2.520900e+02 1.028200e+02
-5 13065     4.288000e+02 -2.939700e+02
-6 13065     -4.207600e+02 3.525000e+02
-7 13065     -1.813800e+02 4.335900e+02
-8 13065     -1.280800e+02 7.442001e+01
-9 13065     -3.589700e+02 1.543300e+02
-14 13065     3.425800e+02 -3.776900e+02
-2 13066     -2.395000e+02 1.013200e+02
-5 13066     4.441600e+02 -2.956300e+02
-7 13066     -1.685700e+02 4.331400e+02
-8 13066     -1.172900e+02 7.344000e+01
-2 13067     2.261600e+02 1.006500e+02
-6 13067     5.172998e+01 1.076400e+02
-2 13068     1.730900e+02 9.729999e+01
-6 13068     -3.559998e+00 1.045100e+02
-10 13068     -4.262000e+01 2.198800e+02
-2 13069     8.228000e+02 9.496002e+01
-3 13069     6.748199e+02 -2.049200e+02
-9 13069     5.586899e+02 1.894600e+02
-2 13070     1.742600e+02 9.301001e+01
-6 13070     -3.520020e+00 9.962000e+01
-8 13070     1.750500e+02 2.998001e+01
-9 13070     3.271002e+01 1.690700e+02
-15 13070     2.160999e+01 2.251900e+02
-2 13071     6.950100e+02 9.288000e+01
-9 13071     4.540300e+02 1.836900e+02
-2 13072     6.950100e+02 9.288000e+01
-9 13072     4.540300e+02 1.836900e+02
-12 13072     7.050699e+02 2.465200e+02
-2 13073     -5.903000e+02 9.182001e+01
-7 13073     -5.188500e+02 3.918700e+02
-12 13073     -6.292700e+02 2.963400e+02
-2 13074     4.330900e+02 9.145001e+01
-6 13074     3.403700e+02 2.713700e+02
-7 13074     3.709700e+02 3.050300e+02
-13 13074     7.420800e+02 -8.077002e+01
-2 13075     -4.388400e+02 9.125000e+01
-11 13075     2.510010e+00 -3.894000e+02
-2 13076     7.313400e+02 8.982001e+01
-7 13076     6.274800e+02 2.330600e+02
-10 13076     8.189100e+02 2.449500e+02
-2 13077     7.313400e+02 8.982001e+01
-7 13077     6.274800e+02 2.330600e+02
-9 13077     4.838300e+02 1.826200e+02
-10 13077     8.189100e+02 2.449500e+02
-2 13078     1.189600e+02 8.584998e+01
-3 13078     2.781000e+01 -2.284600e+02
-5 13078     6.345400e+02 -5.916801e+02
-6 13078     -6.065997e+01 9.520001e+01
-12 13078     -4.012000e+01 1.504200e+02
-2 13079     1.796700e+02 8.559003e+01
-13 13079     4.098400e+02 -1.750200e+02
-2 13080     5.757400e+02 8.516998e+01
-3 13080     4.387900e+02 -2.246000e+02
-7 13080     4.916200e+02 2.660700e+02
-9 13080     3.535800e+02 1.731400e+02
-10 13080     6.575100e+02 3.023200e+02
-13 13080     8.651000e+02 -1.202600e+02
-2 13081     4.463101e+02 8.387000e+01
-7 13081     3.812200e+02 2.961500e+02
-15 13081     7.186700e+02 3.936700e+02
-2 13082     -1.242700e+02 8.346997e+01
-8 13082     -2.991998e+01 5.707999e+01
-11 13082     2.687100e+02 -4.227700e+02
-12 13082     -1.212900e+02 3.292800e+02
-13 13082     3.075900e+02 2.422998e+01
-14 13082     4.593300e+02 -4.226400e+02
-2 13083     5.363300e+02 8.277002e+01
-7 13083     4.570699e+02 2.741900e+02
-2 13084     -1.040200e+02 8.184003e+01
-6 13084     -2.505500e+02 3.229700e+02
-2 13085     2.750000e+01 8.163000e+01
-3 13085     -6.289001e+01 -2.351400e+02
-8 13085     5.834998e+01 2.520999e+01
-9 13085     -9.140002e+01 1.536400e+02
-2 13086     -6.434000e+02 8.015997e+01
-5 13086     3.728003e+01 -3.032100e+02
-7 13086     -5.691000e+02 3.767500e+02
-8 13086     -4.472300e+02 5.042001e+01
-10 13086     -5.625600e+02 5.300100e+02
-12 13086     -6.870300e+02 2.778300e+02
-14 13086     -4.458002e+01 -3.954000e+02
-15 13086     -5.646500e+02 5.767600e+02
-2 13087     5.512900e+02 7.941998e+01
-7 13087     4.695601e+02 2.677400e+02
-9 13087     3.332300e+02 1.670100e+02
-2 13088     -6.037300e+02 7.809003e+01
-7 13088     -5.305800e+02 3.795100e+02
-2 13089     -4.921900e+02 7.588000e+01
-8 13089     -3.239300e+02 4.962000e+01
-13 13089     1.769000e+01 2.982001e+01
-2 13090     -4.717700e+02 7.323999e+01
-5 13090     2.006200e+02 -3.143600e+02
-7 13090     -4.012800e+02 3.878700e+02
-8 13090     -3.070700e+02 4.720001e+01
-12 13090     -4.951600e+02 2.944100e+02
-2 13091     -5.649300e+02 7.127002e+01
-11 13091     -1.094300e+02 -4.016600e+02
-14 13091     2.734003e+01 -4.039700e+02
-15 13091     -4.600200e+02 5.745000e+02
-2 13092     6.805900e+02 7.037000e+01
-3 13092     5.410400e+02 -2.343400e+02
-9 13092     4.424200e+02 1.642700e+02
-12 13092     6.892100e+02 2.243900e+02
-2 13093     6.596700e+02 6.860999e+01
-12 13093     6.664800e+02 2.256100e+02
-2 13094     4.848999e+01 6.823999e+01
-3 13094     -4.073999e+01 -2.473000e+02
-2 13095     2.979999e+01 6.820001e+01
-8 13095     5.940002e+01 1.388000e+01
-2 13096     -3.768300e+02 6.745001e+01
-7 13096     -3.069600e+02 3.920600e+02
-2 13097     1.950400e+02 6.762000e+01
-3 13097     1.017500e+02 -2.438100e+02
-6 13097     1.723999e+01 6.827002e+01
-7 13097     -3.650000e+01 1.504100e+02
-8 13097     1.907300e+02 8.549988e+00
-9 13097     5.128998e+01 1.485900e+02
-10 13097     -3.537000e+01 1.785600e+02
-15 13097     3.229999e+01 1.820500e+02
-2 13098     -5.789200e+02 6.712000e+01
-14 13098     1.453003e+01 -4.072300e+02
-2 13099     6.407200e+02 6.637000e+01
-3 13099     5.020800e+02 -2.392100e+02
-6 13099     5.667800e+02 2.164500e+02
-9 13099     4.089000e+02 1.598700e+02
-10 13099     7.185100e+02 2.584200e+02
-12 13099     6.458300e+02 2.259900e+02
-2 13100     5.242900e+02 6.596002e+01
-6 13100     4.390800e+02 2.322700e+02
-7 13100     4.448800e+02 2.623300e+02
-12 13100     5.228400e+02 2.424400e+02
-2 13101     6.622800e+02 6.585999e+01
-9 13101     4.267400e+02 1.600300e+02
-12 13101     6.686500e+02 2.220900e+02
-2 13102     6.753003e+01 6.206000e+01
-5 13102     5.813000e+02 -5.995800e+02
-8 13102     8.864001e+01 7.000000e+00
-2 13103     4.895601e+02 6.247998e+01
-6 13103     4.021400e+02 2.331400e+02
-8 13103     4.612100e+02 2.382999e+01
-9 13103     2.823600e+02 1.506400e+02
-10 13103     5.689600e+02 3.131400e+02
-12 13103     4.876400e+02 2.430100e+02
-2 13104     -4.122300e+02 5.675000e+01
-7 13104     -3.415000e+02 3.799300e+02
-2 13105     -4.332400e+02 5.552002e+01
-8 13105     -2.753100e+02 3.454001e+01
-11 13105     6.750000e+00 -4.157300e+02
-2 13106     6.303003e+01 5.334998e+01
-8 13106     8.460999e+01 -1.000977e-02
-2 13107     6.678101e+02 5.107001e+01
-7 13107     5.667100e+02 2.144500e+02
-9 13107     4.320900e+02 1.480100e+02
-12 13107     6.743199e+02 2.061400e+02
-2 13108     7.792600e+02 5.059003e+01
-9 13108     5.242800e+02 1.513900e+02
-2 13109     2.382700e+02 4.948999e+01
-3 13109     1.438700e+02 -2.603900e+02
-6 13109     6.173999e+01 4.640997e+01
-12 13109     7.708002e+01 9.845001e+01
-2 13110     6.097900e+02 4.896997e+01
-7 13110     5.161100e+02 2.261100e+02
-10 13110     6.832900e+02 2.514400e+02
-2 13111     1.690500e+02 4.826001e+01
-4 13111     -2.634500e+02 -4.340601e+02
-6 13111     -1.051001e+01 4.614001e+01
-7 13111     -6.146997e+01 1.348800e+02
-8 13111     1.689700e+02 -7.089996e+00
-15 13111     -1.679993e+00 1.638400e+02
-2 13112     3.645200e+02 4.328998e+01
-3 13112     2.613700e+02 -2.628400e+02
-2 13113     8.018800e+02 4.178003e+01
-9 13113     5.431899e+02 1.448900e+02
-2 13114     3.665300e+02 4.078003e+01
-6 13114     2.013000e+02 5.042999e+01
-13 13114     5.583400e+02 -2.317000e+02
-2 13115     6.604900e+02 4.065997e+01
-3 13115     5.233900e+02 -2.634900e+02
-7 13115     5.592300e+02 2.069200e+02
-9 13115     4.260500e+02 1.388100e+02
-12 13115     6.656400e+02 1.958300e+02
-2 13116     4.870500e+02 3.665997e+01
-6 13116     3.981100e+02 2.056200e+02
-9 13116     2.798101e+02 1.292700e+02
-12 13116     4.842100e+02 2.149500e+02
-2 13117     -6.107001e+01 3.116998e+01
-8 13117     -7.760010e+00 -1.004999e+01
-2 13118     2.912700e+02 3.028003e+01
-3 13118     1.948700e+02 -2.769500e+02
-7 13118     4.404999e+01 1.052000e+02
-13 13118     4.874500e+02 -2.365200e+02
-2 13119     -5.944400e+02 2.090997e+01
-8 13119     -4.225600e+02 -1.079999e+01
-10 13119     -5.101200e+02 4.456500e+02
-12 13119     -6.215700e+02 2.249900e+02
-2 13120     -1.332400e+02 1.971997e+01
-3 13120     -2.307100e+02 -3.015500e+02
-8 13120     -6.209003e+01 -1.498999e+01
-2 13121     5.915100e+02 1.984003e+01
-3 13121     4.571100e+02 -2.863700e+02
-6 13121     5.116600e+02 1.745600e+02
-7 13121     4.978000e+02 2.057000e+02
-9 13121     3.690000e+02 1.191000e+02
-10 13121     6.609800e+02 2.300100e+02
-13 13121     8.721100e+02 -1.766200e+02
-2 13122     5.915100e+02 1.984003e+01
-8 13122     5.439200e+02 -1.464001e+01
-2 13123     4.888000e+01 1.820001e+01
-3 13123     -3.803003e+01 -2.949000e+02
-4 13123     -2.443200e+02 -3.650800e+02
-6 13123     -1.336800e+02 2.598999e+01
-9 13123     -6.875000e+01 1.014400e+02
-2 13124     6.138000e+02 1.728998e+01
-6 13124     5.359800e+02 1.684400e+02
-8 13124     5.639200e+02 -1.751999e+01
-9 13124     3.879399e+02 1.176500e+02
-10 13124     6.819100e+02 2.175000e+02
-2 13125     -5.821997e+01 1.503998e+01
-3 13125     -1.494600e+02 -3.025300e+02
-5 13125     4.790900e+02 -5.812900e+02
-6 13125     -2.363700e+02 6.097998e+01
-8 13125     -6.500000e+00 -2.364999e+01
-12 13125     -1.910500e+02 1.141000e+02
-13 13125     2.517100e+02 -1.632500e+02
-2 13126     6.332200e+02 1.457001e+01
-6 13126     5.566899e+02 1.631500e+02
-7 13126     5.329600e+02 1.909300e+02
-9 13126     4.040900e+02 1.165100e+02
-2 13127     2.348900e+02 1.325000e+01
-13 13127     4.385699e+02 -2.430000e+02
-2 13128     2.348900e+02 1.325000e+01
-13 13128     4.385699e+02 -2.430000e+02
-2 13129     -4.887500e+02 1.034003e+01
-5 13129     1.764700e+02 -3.687300e+02
-14 13129     9.503998e+01 -4.576100e+02
-15 13129     -3.536100e+02 5.164100e+02
-2 13130     6.393300e+02 1.065997e+01
-3 13130     5.040699e+02 -2.934300e+02
-6 13130     5.627000e+02 1.582000e+02
-9 13130     4.095200e+02 1.130600e+02
-2 13131     6.393300e+02 1.065997e+01
-3 13131     5.040699e+02 -2.934300e+02
-6 13131     5.627000e+02 1.582000e+02
-7 13131     5.365900e+02 1.865200e+02
-9 13131     4.095200e+02 1.130600e+02
-10 13131     7.044600e+02 2.013200e+02
-2 13132     1.429700e+02 9.330017e+00
-6 13132     -3.867999e+01 4.460022e+00
-10 13132     -9.660999e+01 1.298000e+02
-15 13132     -3.823999e+01 1.242100e+02
-2 13133     -5.740997e+01 8.869995e+00
-3 13133     -1.477100e+02 -3.085900e+02
-6 13133     -2.369800e+02 5.040997e+01
-2 13134     4.027200e+02 8.059998e+00
-3 13134     2.979000e+02 -2.959200e+02
-13 13134     5.878500e+02 -2.586000e+02
-2 13135     3.260601e+02 5.679993e+00
-6 13135     1.540600e+02 2.950012e+00
-13 13135     5.130200e+02 -2.595400e+02
-2 13136     -1.547998e+01 4.359985e+00
-3 13136     -1.025900e+02 -3.111500e+02
-6 13136     -1.970300e+02 2.582001e+01
-8 13136     2.272998e+01 -3.645001e+01
-9 13136     -1.242900e+02 8.700000e+01
-12 13136     -1.669900e+02 8.184998e+01
-2 13137     1.976300e+02 2.260010e+00
-15 13137     1.477002e+01 9.820001e+01
-2 13138     5.865500e+02 -1.900024e-01
-6 13138     5.052900e+02 1.539100e+02
-8 13138     5.399500e+02 -3.073999e+01
-12 13138     5.860100e+02 1.637700e+02
-2 13139     6.951700e+02 -1.369995e+00
-9 13139     4.561000e+02 1.050100e+02
-2 13140     4.166100e+02 -3.239990e+00
-8 13140     3.756100e+02 -5.047000e+01
-2 13141     4.166100e+02 -3.239990e+00
-8 13141     3.756100e+02 -5.047000e+01
-2 13142     -1.278900e+02 -5.070007e+00
-3 13142     -2.215500e+02 -3.250800e+02
-2 13143     5.417000e+02 -9.960022e+00
-7 13143     4.517800e+02 1.924200e+02
-2 13144     -5.250000e+00 -1.273999e+01
-6 13144     -1.866800e+02 4.340027e+00
-9 13144     -1.140400e+02 7.283002e+01
-2 13145     2.762300e+02 -1.273999e+01
-7 13145     2.245001e+01 6.604999e+01
-8 13145     2.544800e+02 -5.958002e+01
-10 13145     2.340997e+01 7.559998e+01
-15 13145     1.020800e+02 6.181000e+01
-2 13146     2.762300e+02 -1.273999e+01
-7 13146     2.245001e+01 6.604999e+01
-8 13146     2.544800e+02 -5.958002e+01
-10 13146     2.340997e+01 7.559998e+01
-15 13146     1.020800e+02 6.181000e+01
-2 13147     3.722700e+02 -1.404999e+01
-8 13147     3.361000e+02 -6.013000e+01
-2 13148     -5.599976e-01 -1.508002e+01
-6 13148     -1.823200e+02 1.199951e-01
-2 13149     1.956700e+02 -1.526001e+01
-15 13149     8.979980e+00 7.828003e+01
-2 13150     -4.733002e+01 -2.122998e+01
-6 13150     -2.288700e+02 1.130005e+00
-8 13150     -2.440002e+00 -5.685001e+01
-12 13150     -1.969400e+02 5.785999e+01
-2 13151     2.781000e+02 -2.239001e+01
-3 13151     1.851900e+02 -3.268300e+02
-6 13151     1.010800e+02 -3.057001e+01
-10 13151     2.340002e+01 6.527002e+01
-15 13151     1.021800e+02 4.989001e+01
-2 13152     5.383400e+02 -2.562000e+01
-3 13152     4.219399e+02 -3.263400e+02
-8 13152     4.839200e+02 -6.492999e+01
-2 13153     3.820500e+02 -2.960999e+01
-12 13153     2.373800e+02 1.860999e+01
-2 13154     3.820500e+02 -2.960999e+01
-3 13154     2.820100e+02 -3.318100e+02
-6 13154     2.147000e+02 -2.385999e+01
-7 13154     1.308100e+02 5.246002e+01
-8 13154     3.436700e+02 -7.283002e+01
-10 13154     1.503300e+02 5.125000e+01
-12 13154     2.373800e+02 1.860999e+01
-13 13154     5.603600e+02 -2.888000e+02
-2 13155     3.521997e+01 -3.104999e+01
-12 13155     -1.270600e+02 3.163000e+01
-2 13156     3.521997e+01 -3.104999e+01
-8 13156     6.091998e+01 -6.851001e+01
-12 13156     -1.270600e+02 3.163000e+01
-2 13157     3.577100e+02 -3.214001e+01
-10 13157     1.169500e+02 4.765997e+01
-13 13157     5.365000e+02 -2.908400e+02
-2 13158     6.715601e+02 -3.257001e+01
-7 13158     5.602900e+02 1.406200e+02
-9 13158     4.375100e+02 7.796002e+01
-2 13159     6.800699e+02 -3.401001e+01
-3 13159     5.465601e+02 -3.348000e+02
-7 13159     5.671500e+02 1.370900e+02
-2 13160     2.139301e+02 -3.541998e+01
-7 13160     -3.503003e+01 5.241998e+01
-10 13160     -4.298999e+01 6.647998e+01
-13 13160     4.151200e+02 -2.770100e+02
-15 13160     2.525000e+01 4.998999e+01
-2 13161     6.596200e+02 -3.627002e+01
-3 13161     5.271899e+02 -3.386700e+02
-6 13161     5.834500e+02 1.066400e+02
-8 13161     5.997100e+02 -6.296002e+01
-9 13161     4.269800e+02 7.472998e+01
-12 13161     6.612200e+02 1.157600e+02
-2 13162     3.887000e+01 -3.756000e+01
-8 13162     6.392999e+01 -7.391998e+01
-2 13163     3.887000e+01 -3.756000e+01
-8 13163     6.392999e+01 -7.391998e+01
-2 13164     2.358199e+02 -3.959003e+01
-6 13164     5.615997e+01 -4.971002e+01
-10 13164     -2.265002e+01 5.734998e+01
-2 13165     2.985500e+02 -4.134003e+01
-10 13165     4.376001e+01 4.514001e+01
-2 13166     4.088300e+02 -4.292999e+01
-8 13166     3.674400e+02 -8.406000e+01
-2 13167     3.852400e+02 -4.713000e+01
-6 13167     2.172700e+02 -4.296997e+01
-8 13167     3.465200e+02 -8.759003e+01
-12 13167     2.396600e+02 -1.000000e+00
-2 13168     -6.588900e+02 -5.325000e+01
-14 13168     -7.164001e+01 -5.072800e+02
-2 13169     1.676001e+01 -5.341998e+01
-6 13169     -1.676000e+02 -5.000000e+01
-12 13169     -1.494400e+02 7.330017e+00
-2 13170     -1.440200e+02 -5.453998e+01
-3 13170     -2.302000e+02 -3.723400e+02
-8 13170     -7.900000e+01 -8.077002e+01
-2 13171     -1.440200e+02 -5.453998e+01
-8 13171     -7.900000e+01 -8.077002e+01
-2 13172     6.462400e+02 -5.492999e+01
-6 13172     5.675500e+02 8.934998e+01
-8 13172     5.886801e+02 -7.771997e+01
-9 13172     4.167800e+02 5.848999e+01
-12 13172     6.461100e+02 9.834998e+01
-2 13173     4.370300e+02 -5.838000e+01
-3 13173     3.352600e+02 -3.580500e+02
-7 13173     1.798600e+02 2.203003e+01
-10 13173     2.061500e+02 1.244000e+01
-13 13173     6.042200e+02 -3.189900e+02
-15 13173     3.185200e+02 -1.164001e+01
-2 13174     4.673400e+02 -6.209003e+01
-3 13174     3.626700e+02 -3.609500e+02
-10 13174     2.510100e+02 9.080017e+00
-13 13174     6.358000e+02 -3.228500e+02
-15 13174     3.734900e+02 -1.509003e+01
-2 13175     7.397000e+02 -7.296002e+01
-3 13175     6.083800e+02 -3.707200e+02
-9 13175     4.954600e+02 4.757001e+01
-2 13176     -9.485999e+01 -7.358002e+01
-6 13176     -2.779100e+02 -5.556000e+01
-8 13176     -4.164001e+01 -9.842999e+01
-12 13176     -2.465800e+02 3.809998e+00
-2 13177     -1.209003e+01 -7.659998e+01
-3 13177     -9.396997e+01 -3.886400e+02
-6 13177     -1.961700e+02 -7.540997e+01
-8 13177     2.065002e+01 -1.050100e+02
-9 13177     -1.157100e+02 2.016998e+01
-2 13178     7.049700e+02 -7.708002e+01
-7 13178     5.829700e+02 9.397000e+01
-2 13179     3.465200e+02 -7.846002e+01
-3 13179     2.527200e+02 -3.794600e+02
-2 13180     3.681300e+02 -7.994000e+01
-4 13180     -4.038500e+02 -5.414200e+02
-7 13180     9.922998e+01 -1.510010e+00
-9 13180     2.015699e+02 3.325000e+01
-13 13180     5.332100e+02 -3.336000e+02
-2 13181     -1.125000e+01 -8.040002e+01
-6 13181     -1.953600e+02 -7.885999e+01
-8 13181     2.147998e+01 -1.084500e+02
-2 13182     8.808002e+01 -8.060999e+01
-6 13182     -9.695001e+01 -9.207001e+01
-2 13183     7.970100e+02 -8.148999e+01
-7 13183     6.606100e+02 6.694000e+01
-2 13184     7.067400e+02 -8.253998e+01
-9 13184     4.678700e+02 3.791998e+01
-12 13184     7.085500e+02 6.125000e+01
-2 13185     6.277800e+02 -8.487000e+01
-6 13185     5.463400e+02 6.146002e+01
-9 13185     4.019100e+02 3.265002e+01
-10 13185     6.750300e+02 1.098000e+02
-2 13186     6.277800e+02 -8.487000e+01
-8 13186     5.724900e+02 -1.010100e+02
-2 13187     -1.118600e+02 -8.584003e+01
-3 13187     -1.930500e+02 -4.009000e+02
-8 13187     -5.713000e+01 -1.092200e+02
-2 13188     7.339900e+02 -8.640002e+01
-7 13188     6.061899e+02 7.908002e+01
-9 13188     4.905601e+02 3.594000e+01
-10 13188     7.785800e+02 6.345001e+01
-2 13189     -1.137800e+02 -9.159998e+01
-3 13189     -1.955000e+02 -4.059500e+02
-6 13189     -2.996300e+02 -8.309998e+01
-8 13189     -5.928003e+01 -1.142000e+02
-2 13190     -2.708700e+02 -9.723999e+01
-6 13190     -4.419700e+02 4.596997e+01
-9 13190     -3.538800e+02 -1.642999e+01
-2 13191     1.105200e+02 -9.959998e+01
-3 13191     2.915002e+01 -4.067300e+02
-6 13191     -7.450000e+01 -1.155900e+02
-8 13191     1.158500e+02 -1.290900e+02
-2 13192     7.323800e+02 -1.011800e+02
-9 13192     4.895400e+02 2.376001e+01
-2 13193     1.338400e+02 -1.080300e+02
-3 13193     5.251001e+01 -4.143000e+02
-6 13193     -5.122998e+01 -1.251600e+02
-7 13193     -1.145700e+02 -5.239990e+00
-10 13193     -1.368400e+02 9.330017e+00
-12 13193     -4.602002e+01 -7.112000e+01
-15 13193     -8.394000e+01 -1.760999e+01
-2 13194     2.705601e+02 -1.090000e+02
-10 13194     -1.328998e+01 -2.659003e+01
-2 13195     1.299600e+02 -1.115500e+02
-7 13195     -1.176100e+02 -7.239990e+00
-2 13196     7.275200e+02 -1.124200e+02
-7 13196     5.977600e+02 5.873999e+01
-2 13197     5.353300e+02 -1.132600e+02
-8 13197     4.726899e+02 -1.436300e+02
-2 13198     -2.184998e+01 -1.141700e+02
-3 13198     -1.012300e+02 -4.254100e+02
-7 13198     -2.259500e+02 2.076001e+01
-10 13198     -2.518000e+02 5.421002e+01
-13 13198     2.383700e+02 -2.922000e+02
-15 13198     -2.166200e+02 3.325000e+01
-2 13199     -8.866998e+01 -1.147500e+02
-3 13199     -1.665100e+02 -4.281400e+02
-6 13199     -2.746700e+02 -1.182700e+02
-8 13199     -4.169000e+01 -1.351500e+02
-12 13199     -2.570800e+02 -5.550000e+01
-2 13200     9.391998e+01 -1.143700e+02
-3 13200     1.378003e+01 -4.216700e+02
-6 13200     -9.101999e+01 -1.284900e+02
-15 13200     -1.204400e+02 -1.007001e+01
-2 13201     9.048999e+01 -1.154800e+02
-3 13201     1.053998e+01 -4.226200e+02
-6 13201     -9.450000e+01 -1.293200e+02
-8 13201     1.004400e+02 -1.411000e+02
-10 13201     -1.711100e+02 1.609003e+01
-12 13201     -8.814001e+01 -7.354999e+01
-15 13201     -1.236900e+02 -9.919983e+00
-2 13202     1.803100e+02 -1.162300e+02
-13 13202     3.737100e+02 -3.369800e+02
-2 13203     7.196500e+02 -1.174800e+02
-9 13203     4.794100e+02 9.570007e+00
-12 13203     7.193600e+02 2.371997e+01
-2 13204     7.900000e+01 -1.183500e+02
-3 13204     -9.299927e-01 -4.261700e+02
-8 13204     9.066998e+01 -1.426700e+02
-10 13204     -1.795600e+02 1.687000e+01
-15 13204     -1.335900e+02 -9.070007e+00
-2 13205     4.822600e+02 -1.205800e+02
-7 13205     2.052900e+02 -4.507001e+01
-8 13205     4.254000e+02 -1.512700e+02
-2 13206     7.177000e+02 -1.209300e+02
-7 13206     5.883199e+02 5.440997e+01
-2 13207     8.453998e+01 -1.220200e+02
-3 13207     4.739990e+00 -4.299100e+02
-6 13207     -1.004800e+02 -1.353100e+02
-7 13207     -1.514200e+02 -7.070007e+00
-8 13207     9.531000e+01 -1.463600e+02
-10 13207     -1.757200e+02 1.228003e+01
-2 13208     8.453998e+01 -1.220200e+02
-3 13208     4.739990e+00 -4.299100e+02
-6 13208     -1.004800e+02 -1.353100e+02
-7 13208     -1.514200e+02 -7.070007e+00
-8 13208     9.531000e+01 -1.463600e+02
-10 13208     -1.757200e+02 1.228003e+01
-15 13208     -1.289000e+02 -1.457001e+01
-2 13209     5.345699e+02 -1.218300e+02
-8 13209     4.721100e+02 -1.514500e+02
-2 13210     1.370200e+02 -1.238100e+02
-10 13210     -1.346600e+02 -6.380005e+00
-13 13210     3.430900e+02 -3.337200e+02
-15 13210     -8.097998e+01 -3.532001e+01
-2 13211     2.912100e+02 -1.268000e+02
-3 13211     2.043400e+02 -4.272300e+02
-10 13211     5.880005e+00 -4.553998e+01
-2 13212     3.365699e+02 -1.294100e+02
-13 13212     4.954399e+02 -3.708300e+02
-2 13213     4.590100e+02 -1.320900e+02
-3 13213     3.624399e+02 -4.276600e+02
-8 13213     4.049000e+02 -1.613600e+02
-2 13214     5.229500e+02 -1.320700e+02
-8 13214     4.611899e+02 -1.594700e+02
-9 13214     3.285400e+02 -4.640015e+00
-2 13215     -5.133002e+01 -1.325300e+02
-3 13215     -1.280800e+02 -4.445900e+02
-8 13215     -1.342999e+01 -1.511200e+02
-9 13215     -1.439900e+02 -2.969000e+01
-12 13215     -2.250100e+02 -8.042999e+01
-2 13216     3.016998e+01 -1.330900e+02
-3 13216     -4.729999e+01 -4.418600e+02
-8 13216     5.129999e+01 -1.538000e+02
-2 13217     1.619700e+02 -1.347000e+02
-3 13217     8.097998e+01 -4.395100e+02
-6 13217     -2.271002e+01 -1.525900e+02
-7 13217     -9.366998e+01 -3.115002e+01
-10 13217     -1.151900e+02 -2.237000e+01
-12 13217     -1.851001e+01 -1.004400e+02
-2 13218     1.844300e+02 -1.343600e+02
-3 13218     1.027100e+02 -4.379700e+02
-6 13218     -6.199951e-01 -1.534900e+02
-8 13218     1.747300e+02 -1.589100e+02
-9 13218     5.367999e+01 -1.884003e+01
-12 13218     3.210022e+00 -1.026000e+02
-15 13218     -3.856000e+01 -6.196002e+01
-2 13219     7.776300e+02 -1.342500e+02
-9 13219     5.276500e+02 -2.070007e+00
-2 13220     5.259700e+02 -1.347700e+02
-8 13220     4.641500e+02 -1.615000e+02
-2 13221     7.661000e+02 -1.364600e+02
-7 13221     6.268199e+02 2.856000e+01
-9 13221     5.183400e+02 -4.179993e+00
-2 13222     7.661000e+02 -1.364600e+02
-7 13222     6.268199e+02 2.856000e+01
-9 13222     5.183400e+02 -4.179993e+00
-2 13223     -8.459003e+01 -1.378600e+02
-3 13223     -1.630300e+02 -4.510000e+02
-6 13223     -2.693700e+02 -1.387500e+02
-8 13223     -3.876001e+01 -1.530200e+02
-9 13223     -1.730000e+02 -3.487000e+01
-2 13224     -5.872800e+02 -1.418900e+02
-8 13224     -4.089100e+02 -1.289700e+02
-2 13225     -3.156300e+02 -1.420500e+02
-8 13225     -1.965800e+02 -1.324500e+02
-2 13226     4.344200e+02 -1.418200e+02
-6 13226     2.612400e+02 -1.551400e+02
-8 13226     3.840700e+02 -1.692900e+02
-15 13226     2.562400e+02 -1.318000e+02
-2 13227     5.316200e+02 -1.428600e+02
-8 13227     4.698700e+02 -1.670500e+02
-2 13228     5.316200e+02 -1.428600e+02
-8 13228     4.698700e+02 -1.670500e+02
-2 13229     7.592900e+02 -1.429900e+02
-9 13229     5.130000e+02 -9.909973e+00
-2 13230     8.212200e+02 -1.463700e+02
-3 13230     6.939900e+02 -4.405400e+02
-7 13230     6.719200e+02 6.380005e+00
-12 13230     8.260800e+02 -2.273999e+01
-2 13231     7.209003e+01 -1.484700e+02
-8 13231     8.310999e+01 -1.683700e+02
-2 13232     -1.977002e+01 -1.526800e+02
-3 13232     -9.602002e+01 -4.628700e+02
-6 13232     -2.060900e+02 -1.658700e+02
-8 13232     1.020001e+01 -1.684100e+02
-9 13232     -1.164000e+02 -4.371002e+01
-2 13233     2.882001e+01 -1.561900e+02
-8 13233     4.773999e+01 -1.744000e+02
-2 13234     -3.113000e+01 -1.566500e+02
-3 13234     -1.079300e+02 -4.673300e+02
-6 13234     -2.170300e+02 -1.665300e+02
-9 13234     -1.256100e+02 -4.787000e+01
-2 13235     -4.515002e+01 -1.567800e+02
-3 13235     -1.220000e+02 -4.672500e+02
-2 13236     6.959003e+01 -1.591200e+02
-8 13236     8.008002e+01 -1.777600e+02
-2 13237     -2.761100e+02 -1.594000e+02
-8 13237     -1.673500e+02 -1.479200e+02
-2 13238     8.221600e+02 -1.599600e+02
-7 13238     6.709399e+02 -5.140015e+00
-2 13239     4.353500e+02 -1.617400e+02
-6 13239     2.577700e+02 -1.799900e+02
-8 13239     3.816300e+02 -1.867300e+02
-12 13239     2.693101e+02 -1.425200e+02
-2 13240     4.725800e+02 -1.634400e+02
-6 13240     2.999900e+02 -1.740100e+02
-12 13240     3.162800e+02 -1.388300e+02
-2 13241     3.945800e+02 -1.684600e+02
-7 13241     9.346002e+01 -9.498999e+01
-2 13242     -3.608002e+01 -1.704700e+02
-6 13242     -2.206400e+02 -1.763300e+02
-2 13243     3.778998e+01 -1.846900e+02
-6 13243     -1.491300e+02 -2.042500e+02
-12 13243     -1.471000e+02 -1.463900e+02
-2 13244     3.778998e+01 -1.846900e+02
-6 13244     -1.491300e+02 -2.042500e+02
-7 13244     -1.994200e+02 -5.906000e+01
-8 13244     5.491998e+01 -1.971700e+02
-12 13244     -1.471000e+02 -1.463900e+02
-2 13245     1.909301e+02 -1.844800e+02
-3 13245     1.146400e+02 -4.848101e+02
-8 13245     1.764600e+02 -2.034500e+02
-2 13246     2.177400e+02 -1.861000e+02
-3 13246     1.414100e+02 -4.851899e+02
-2 13247     4.095500e+02 -1.864900e+02
-3 13247     3.210400e+02 -4.819700e+02
-6 13247     2.298600e+02 -2.052600e+02
-2 13248     -4.444300e+02 -1.887000e+02
-7 13248     -4.452700e+02 1.017900e+02
-10 13248     -4.510200e+02 1.939600e+02
-13 13248     -2.500000e-01 -2.115700e+02
-15 13248     -4.368200e+02 1.913200e+02
-2 13249     3.878800e+02 -1.884300e+02
-6 13249     2.068400e+02 -2.109500e+02
-7 13249     8.866998e+01 -1.086600e+02
-12 13249     2.125400e+02 -1.719300e+02
-2 13250     8.088199e+02 -1.913000e+02
-7 13250     6.385200e+02 -4.142999e+01
-2 13251     2.375300e+02 -1.947000e+02
-7 13251     -4.989001e+01 -1.008900e+02
-15 13251     -1.365002e+01 -1.548600e+02
-2 13252     2.655601e+02 -1.976800e+02
-3 13252     1.863400e+02 -4.968700e+02
-6 13252     7.790002e+01 -2.252800e+02
-8 13252     2.378400e+02 -2.131100e+02
-15 13252     1.859998e+01 -1.647600e+02
-2 13253     -3.066200e+02 -2.085600e+02
-3 13253     -4.140100e+02 -5.399301e+02
-2 13254     -3.300400e+02 -2.094800e+02
-3 13254     -4.383000e+02 -5.415699e+02
-2 13255     4.561400e+02 -2.123800e+02
-6 13255     2.842900e+02 -2.178600e+02
-8 13255     4.017900e+02 -2.261800e+02
-2 13256     2.313300e+02 -2.129300e+02
-6 13256     4.396002e+01 -2.395699e+02
-2 13257     3.769301e+02 -2.148400e+02
-8 13257     3.314900e+02 -2.293400e+02
-2 13258     4.725601e+02 -2.198400e+02
-6 13258     3.015600e+02 -2.218500e+02
-2 13259     3.644200e+02 -2.219000e+02
-8 13259     3.191900e+02 -2.358900e+02
-2 13260     1.114200e+02 -2.241000e+02
-3 13260     3.627002e+01 -5.289800e+02
-6 13260     -7.534998e+01 -2.429800e+02
-2 13261     -3.574100e+02 -2.263100e+02
-7 13261     -3.910800e+02 5.248999e+01
-2 13262     5.098600e+02 -2.319200e+02
-6 13262     3.509700e+02 -2.115400e+02
-8 13262     4.500900e+02 -2.390400e+02
-12 13262     3.810000e+02 -1.818200e+02
-2 13263     -3.342100e+02 -2.331600e+02
-3 13263     -4.404800e+02 -5.662000e+02
-2 13264     1.204900e+02 -2.357700e+02
-6 13264     -6.562000e+01 -2.534200e+02
-9 13264     5.109985e+00 -1.052800e+02
-12 13264     -6.481000e+01 -2.006300e+02
-2 13265     5.117000e+02 -2.363500e+02
-8 13265     4.515400e+02 -2.426400e+02
-2 13266     -5.010010e+00 -2.377400e+02
-3 13266     -8.148999e+01 -5.480400e+02
-6 13266     -1.882400e+02 -2.419800e+02
-8 13266     2.223999e+01 -2.359500e+02
-9 13266     -1.005700e+02 -1.143000e+02
-2 13267     5.038400e+02 -2.390200e+02
-8 13267     4.443700e+02 -2.452700e+02
-2 13268     -4.003100e+02 -2.426200e+02
-8 13268     -2.713400e+02 -2.160200e+02
-2 13269     -6.498500e+02 -2.443800e+02
-13 13269     -1.482900e+02 -2.373400e+02
-15 13269     -6.653500e+02 1.439200e+02
-2 13270     -4.358200e+02 -2.467100e+02
-8 13270     -3.000200e+02 -2.198500e+02
-9 13270     -4.813000e+02 -1.515200e+02
-15 13270     -4.656800e+02 1.037900e+02
-2 13271     -3.267100e+02 -2.493600e+02
-3 13271     -4.310200e+02 -5.820400e+02
-2 13272     3.303998e+01 -2.505300e+02
-3 13272     -4.157001e+01 -5.591500e+02
-6 13272     -1.509800e+02 -2.602200e+02
-7 13272     -1.975100e+02 -1.009400e+02
-8 13272     5.176001e+01 -2.482900e+02
-9 13272     -6.737000e+01 -1.232100e+02
-12 13272     -1.451900e+02 -2.026800e+02
-2 13273     1.275000e+02 -2.561300e+02
-6 13273     -5.764001e+01 -2.715100e+02
-12 13273     -5.592999e+01 -2.196800e+02
-2 13274     1.864600e+02 -2.572700e+02
-3 13274     1.121000e+02 -5.588900e+02
-2 13275     3.428400e+02 -2.588700e+02
-3 13275     2.615601e+02 -5.549700e+02
-6 13275     1.599200e+02 -2.751600e+02
-9 13275     1.892300e+02 -1.148900e+02
-2 13276     4.908199e+02 -2.616100e+02
-6 13276     3.277300e+02 -2.465400e+02
-8 13276     4.326801e+02 -2.642300e+02
-12 13276     3.540699e+02 -2.167700e+02
-2 13277     3.394500e+02 -2.624100e+02
-8 13277     3.000000e+02 -2.666100e+02
-2 13278     4.705400e+02 -2.666300e+02
-6 13278     2.996000e+02 -2.648800e+02
-2 13279     3.262000e+01 -2.669900e+02
-8 13279     5.170001e+01 -2.599400e+02
-2 13280     5.857001e+01 -2.680900e+02
-6 13280     -1.247800e+02 -2.768600e+02
-9 13280     -4.562000e+01 -1.363600e+02
-12 13280     -1.190500e+02 -2.215300e+02
-15 13280     -1.652700e+02 -1.540400e+02
-2 13281     3.119800e+02 -2.695200e+02
-3 13281     2.318101e+02 -5.672300e+02
-10 13281     4.429993e+00 -1.778900e+02
-15 13281     8.296997e+01 -2.364000e+02
-2 13282     4.676899e+02 -2.699700e+02
-6 13282     2.969200e+02 -2.676400e+02
-12 13282     3.161200e+02 -2.361000e+02
-2 13283     4.888101e+02 -2.723100e+02
-6 13283     3.252800e+02 -2.560200e+02
-7 13283     2.155900e+02 -1.520100e+02
-8 13283     4.309000e+02 -2.726500e+02
-12 13283     3.516300e+02 -2.261500e+02
-13 13283     6.269399e+02 -4.837600e+02
-2 13284     5.214301e+02 -2.725000e+02
-8 13284     4.613700e+02 -2.708800e+02
-2 13285     5.173300e+02 -2.739200e+02
-8 13285     4.574100e+02 -2.723200e+02
-2 13286     -4.319600e+02 -2.767400e+02
-7 13286     -4.652000e+02 3.799988e+00
-9 13286     -4.741400e+02 -1.763900e+02
-2 13287     -3.531900e+02 -2.786000e+02
-3 13287     -4.568100e+02 -6.134000e+02
-9 13287     -4.054000e+02 -1.727100e+02
-2 13288     -3.531900e+02 -2.786000e+02
-3 13288     -4.568100e+02 -6.134000e+02
-8 13288     -2.374800e+02 -2.481000e+02
-9 13288     -4.054000e+02 -1.727100e+02
-2 13289     4.260400e+02 -2.809300e+02
-4 13289     -5.482100e+02 -5.466100e+02
-8 13289     3.750400e+02 -2.811900e+02
-2 13290     -3.527500e+02 -2.826800e+02
-8 13290     -2.371900e+02 -2.517000e+02
-9 13290     -4.038400e+02 -1.761100e+02
-13 13290     3.715997e+01 -3.100800e+02
-2 13291     3.643900e+02 -2.835300e+02
-4 13291     -5.245800e+02 -4.872500e+02
-6 13291     1.833700e+02 -2.930699e+02
-7 13291     6.802002e+01 -1.720300e+02
-8 13291     3.206900e+02 -2.839100e+02
-9 13291     2.075800e+02 -1.345000e+02
-12 13291     1.900100e+02 -2.556000e+02
-13 13291     4.981801e+02 -4.856700e+02
-2 13292     2.244100e+02 -2.961600e+02
-13 13292     3.869100e+02 -4.706500e+02
-2 13293     2.813900e+02 -3.023900e+02
-8 13293     2.525700e+02 -2.965800e+02
-12 13293     1.028300e+02 -2.711800e+02
-2 13294     3.356500e+02 -3.058600e+02
-6 13294     1.542400e+02 -3.149800e+02
-2 13295     1.131300e+02 -3.081900e+02
-7 13295     -1.366600e+02 -1.557600e+02
-2 13296     3.196801e+02 -3.101100e+02
-3 13296     2.411899e+02 -6.086500e+02
-2 13297     3.196801e+02 -3.101100e+02
-6 13297     1.379600e+02 -3.189100e+02
-9 13297     1.720100e+02 -1.583400e+02
-10 13297     1.566998e+01 -2.076600e+02
-12 13297     1.441800e+02 -2.791200e+02
-15 13297     9.744000e+01 -2.721300e+02
-2 13298     3.372700e+02 -3.122000e+02
-6 13298     1.556300e+02 -3.216400e+02
-9 13298     1.863500e+02 -1.598600e+02
-2 13299     -4.516300e+02 -3.137000e+02
-9 13299     -4.872700e+02 -2.082300e+02
-13 13299     -3.560999e+01 -3.240100e+02
-2 13300     -4.516300e+02 -3.137000e+02
-9 13300     -4.872700e+02 -2.082300e+02
-13 13300     -3.560999e+01 -3.240100e+02
-15 13300     -5.220500e+02 8.809998e+00
-2 13301     1.114500e+02 -3.142900e+02
-6 13301     -7.171997e+01 -3.216600e+02
-12 13301     -6.737000e+01 -2.696300e+02
-2 13302     1.157900e+02 -3.146400e+02
-6 13302     -6.696997e+01 -3.223700e+02
-2 13303     1.226400e+02 -3.153900e+02
-6 13303     -6.050000e+01 -3.234800e+02
-12 13303     -5.641998e+01 -2.722300e+02
-2 13304     1.226400e+02 -3.153900e+02
-8 13304     1.225400e+02 -3.036300e+02
-2 13305     3.924301e+02 -3.157600e+02
-3 13305     3.111300e+02 -6.131000e+02
-6 13305     2.153300e+02 -3.190699e+02
-8 13305     3.454800e+02 -3.101000e+02
-12 13305     2.271300e+02 -2.838500e+02
-2 13306     1.095100e+02 -3.173800e+02
-12 13306     -6.934003e+01 -2.722500e+02
-2 13307     2.430800e+02 -3.196700e+02
-6 13307     5.969000e+01 -3.302700e+02
-2 13308     5.307001e+01 -3.214700e+02
-6 13308     -1.276800e+02 -3.221000e+02
-9 13308     -4.815997e+01 -1.816600e+02
-12 13308     -1.190000e+02 -2.661800e+02
-2 13309     3.840300e+02 -3.270000e+02
-8 13309     3.388600e+02 -3.179700e+02
-2 13310     2.019900e+02 -3.311500e+02
-12 13310     2.148999e+01 -2.920200e+02
-2 13311     8.134003e+01 -3.345500e+02
-6 13311     -9.976001e+01 -3.365601e+02
-8 13311     9.028998e+01 -3.162000e+02
-9 13311     -2.401001e+01 -1.903700e+02
-2 13312     8.134003e+01 -3.345500e+02
-8 13312     9.028998e+01 -3.162000e+02
-2 13313     2.678101e+02 -3.372800e+02
-6 13313     8.533002e+01 -3.445900e+02
-2 13314     -5.356900e+02 -3.393800e+02
-8 13314     -3.852600e+02 -2.964400e+02
-2 13315     4.800000e+01 -3.436100e+02
-6 13315     -1.319100e+02 -3.400800e+02
-2 13316     6.600000e+01 -3.470500e+02
-6 13316     -1.135400e+02 -3.445000e+02
-13 13316     2.767200e+02 -4.679200e+02
-2 13317     5.446002e+01 -3.559200e+02
-6 13317     -1.251800e+02 -3.526100e+02
-2 13318     -1.715600e+02 -3.711800e+02
-13 13318     1.287700e+02 -4.238300e+02
-2 13319     3.442700e+02 -3.756100e+02
-6 13319     1.633500e+02 -3.793700e+02
-8 13319     3.031300e+02 -3.574500e+02
-12 13319     1.703000e+02 -3.422000e+02
-2 13320     1.904301e+02 -3.791900e+02
-6 13320     7.489990e+00 -3.856600e+02
-2 13321     -3.040600e+02 -3.814600e+02
-7 13321     -4.037100e+02 -1.181900e+02
-8 13321     -2.075800e+02 -3.365600e+02
-15 13321     -4.264100e+02 -1.141900e+02
-2 13322     -1.264800e+02 -3.860600e+02
-8 13322     -7.153998e+01 -3.480600e+02
-2 13323     -2.803700e+02 -4.077200e+02
-6 13323     -4.551000e+02 -3.799900e+02
-2 13324     1.695001e+01 -4.161801e+02
-6 13324     -1.637700e+02 -4.175500e+02
-2 13325     3.063000e+01 -4.200200e+02
-6 13325     -1.503300e+02 -4.216000e+02
-9 13325     -6.120001e+01 -2.643100e+02
-12 13325     -1.455100e+02 -3.637400e+02
-2 13326     -3.050100e+02 -4.224000e+02
-7 13326     -4.178600e+02 -1.604300e+02
-8 13326     -2.122300e+02 -3.713600e+02
-13 13326     3.270001e+01 -4.403300e+02
-2 13327     3.582100e+02 -4.395800e+02
-6 13327     1.743800e+02 -4.462300e+02
-2 13328     3.979999e+01 -4.522400e+02
-13 13328     2.434900e+02 -5.375400e+02
-2 13329     1.087000e+01 -4.539200e+02
-6 13329     -1.682200e+02 -4.490500e+02
-2 13330     2.790601e+02 -4.546300e+02
-12 13330     9.520001e+01 -4.184800e+02
-2 13331     -3.265800e+02 -4.571801e+02
-8 13331     -2.314500e+02 -4.005500e+02
-2 13332     1.854700e+02 -4.571400e+02
-6 13332     1.229980e+00 -4.637600e+02
-2 13333     1.705600e+02 -4.601700e+02
-12 13333     -1.509003e+01 -4.181801e+02
-2 13334     1.700200e+02 -4.705500e+02
-6 13334     -1.340997e+01 -4.745900e+02
-9 13334     5.696002e+01 -2.976900e+02
-2 13335     5.650024e+00 -4.715400e+02
-13 13335     2.188101e+02 -5.434600e+02
-2 13336     -4.229200e+02 -4.871000e+02
-7 13336     -5.214400e+02 -2.125200e+02
-10 13336     -5.831700e+02 -1.671300e+02
-15 13336     -5.931100e+02 -2.278900e+02
-2 13337     6.263000e+02 -4.934500e+02
-9 13337     4.279500e+02 -2.948700e+02
-2 13338     7.192400e+02 -5.332800e+02
-9 13338     5.031000e+02 -3.208200e+02
-12 13338     5.527800e+02 -5.259900e+02
-2 13339     7.007600e+02 -5.349700e+02
-6 13339     5.188300e+02 -5.393000e+02
-7 13339     3.308400e+02 -4.140300e+02
-9 13339     4.888800e+02 -3.235100e+02
-10 13339     3.400100e+02 -5.064100e+02
-12 13339     5.319900e+02 -5.275900e+02
-2 13340     7.427200e+02 -5.404100e+02
-6 13340     5.591500e+02 -5.461700e+02
-7 13340     3.634700e+02 -4.264300e+02
-9 13340     5.218500e+02 -3.253400e+02
-10 13340     3.755100e+02 -5.263700e+02
-12 13340     5.738600e+02 -5.376100e+02
-2 13341     5.260500e+02 -5.421700e+02
-9 13341     3.512300e+02 -3.385200e+02
-2 13342     6.156600e+02 -5.464500e+02
-9 13342     4.225400e+02 -3.373200e+02
-2 13343     2.989000e+02 -5.514301e+02
-15 13343     1.667999e+01 -5.137300e+02
-2 13344     5.030100e+02 -5.610200e+02
-9 13344     3.329100e+02 -3.551700e+02
-2 13345     4.913800e+02 -5.797300e+02
-9 13345     3.253700e+02 -3.702600e+02
-2 13346     2.475200e+02 -5.826600e+02
-7 13346     -6.215997e+01 -3.899600e+02
-15 13346     -4.446002e+01 -5.287700e+02
-2 13347     5.262200e+02 -5.949800e+02
-9 13347     3.547900e+02 -3.803300e+02
-2 13348     2.923800e+02 -5.968101e+02
-7 13348     -3.444000e+01 -4.111900e+02
-15 13348     -1.276001e+01 -5.622000e+02
-2 13349     3.432700e+02 -6.016400e+02
-9 13349     2.076000e+02 -3.955000e+02
-10 13349     -3.902002e+01 -4.734500e+02
-2 13350     3.382000e+02 -6.018600e+02
-7 13350     9.002686e-02 -4.234300e+02
-15 13350     3.001001e+01 -5.848500e+02
-2 13351     -1.634600e+02 6.097900e+02
-3 13351     -2.952500e+02 2.666500e+02
-13 13351     3.207600e+02 4.542700e+02
-14 13351     4.705699e+02 9.425000e+01
-2 13352     -1.732300e+02 5.946500e+02
-4 13352     1.913300e+02 -4.866500e+02
-5 13352     5.650300e+02 1.736400e+02
-13 13352     3.117000e+02 4.423000e+02
-14 13352     4.600800e+02 8.056000e+01
-2 13353     -2.180800e+02 5.898300e+02
-4 13353     1.874000e+02 -4.507900e+02
-11 13353     2.253101e+02 -6.789978e+00
-14 13353     4.113199e+02 7.016998e+01
-2 13354     -2.180800e+02 5.898300e+02
-11 13354     2.253101e+02 -6.789978e+00
-14 13354     4.113199e+02 7.016998e+01
-2 13355     -1.818800e+02 5.863200e+02
-4 13355     1.855300e+02 -4.785500e+02
-13 13355     3.032100e+02 4.338400e+02
-14 13355     4.502500e+02 7.172998e+01
-2 13356     -1.651800e+02 5.857700e+02
-3 13356     -2.975200e+02 2.444300e+02
-4 13356     1.861700e+02 -4.917500e+02
-11 13356     2.790400e+02 -3.349976e+00
-13 13356     3.186600e+02 4.358100e+02
-14 13356     4.681899e+02 7.321002e+01
-2 13357     -1.775100e+02 5.842400e+02
-4 13357     1.860100e+02 -4.821700e+02
-5 13357     5.597600e+02 1.635900e+02
-11 13357     2.662900e+02 -6.000000e+00
-13 13357     3.071899e+02 4.327000e+02
-14 13357     4.548900e+02 7.013000e+01
-2 13358     -9.202002e+01 5.799400e+02
-3 13358     -2.297400e+02 2.371000e+02
-5 13358     6.575400e+02 1.662400e+02
-11 13358     3.541500e+02 -7.000732e-02
-13 13358     3.864900e+02 4.398500e+02
-14 13358     5.488800e+02 7.583002e+01
-2 13359     -2.944000e+01 5.791600e+02
-5 13359     7.317600e+02 1.730800e+02
-2 13360     -1.642999e+01 5.789500e+02
-3 13360     -1.592000e+02 2.361400e+02
-5 13360     7.475400e+02 1.745600e+02
-13 13360     4.597400e+02 4.486600e+02
-14 13360     6.360000e+02 8.484000e+01
-2 13361     -8.750000e+01 5.781100e+02
-3 13361     -2.253800e+02 2.350800e+02
-4 13361     1.810601e+02 -5.537600e+02
-5 13361     6.625400e+02 1.656700e+02
-13 13361     3.909800e+02 4.379400e+02
-14 13361     5.542200e+02 7.389001e+01
-2 13362     -9.589001e+01 5.760800e+02
-3 13362     -2.330700e+02 2.337900e+02
-4 13362     1.805800e+02 -5.458900e+02
-5 13362     6.520300e+02 1.628500e+02
-11 13362     3.495800e+02 -3.580017e+00
-13 13362     3.825800e+02 4.361400e+02
-14 13362     5.442100e+02 7.179999e+01
-2 13363     -2.170001e+01 5.754700e+02
-11 13363     4.301500e+02 5.440002e+00
-13 13363     4.544900e+02 4.451400e+02
-14 13363     6.295699e+02 8.012000e+01
-2 13364     8.492999e+01 5.753800e+02
-11 13364     5.474700e+02 1.788000e+01
-14 13364     7.566899e+02 9.373001e+01
-2 13365     -1.914700e+02 5.735200e+02
-4 13365     1.794301e+02 -4.694200e+02
-11 13365     2.519800e+02 -1.542999e+01
-13 13365     2.936300e+02 4.228300e+02
-2 13366     3.192999e+01 5.735000e+02
-3 13366     -1.141500e+02 2.308800e+02
-5 13366     8.076899e+02 1.741700e+02
-11 13366     4.879700e+02 9.669983e+00
-13 13366     5.073300e+02 4.501000e+02
-14 13366     6.925900e+02 8.513000e+01
-2 13367     3.192999e+01 5.735000e+02
-11 13367     4.879700e+02 9.669983e+00
-14 13367     6.925900e+02 8.513000e+01
-2 13368     -1.947998e+01 5.712300e+02
-5 13368     7.431899e+02 1.661300e+02
-11 13368     4.321100e+02 1.880005e+00
-14 13368     6.323700e+02 7.709003e+01
-2 13369     -1.947998e+01 5.712300e+02
-11 13369     4.321100e+02 1.880005e+00
-14 13369     6.323700e+02 7.709003e+01
-2 13370     -1.846600e+02 5.700000e+02
-11 13370     2.584500e+02 -1.840997e+01
-2 13371     -1.811700e+02 5.663000e+02
-3 13371     -3.127800e+02 2.262100e+02
-4 13371     1.745100e+02 -4.765300e+02
-8 13371     -7.029999e+01 4.454300e+02
-11 13371     2.621899e+02 -2.042999e+01
-14 13371     4.494500e+02 5.326001e+01
-2 13372     -1.845500e+02 5.604000e+02
-4 13372     1.716700e+02 -4.734800e+02
-5 13372     5.494700e+02 1.392600e+02
-14 13372     4.456000e+02 4.713000e+01
-2 13373     -6.807001e+01 5.605900e+02
-3 13373     -2.075100e+02 2.172200e+02
-4 13373     1.720000e+02 -5.672700e+02
-5 13373     6.836500e+02 1.511000e+02
-8 13373     2.358002e+01 4.432500e+02
-11 13373     3.795300e+02 -1.244000e+01
-13 13373     4.078300e+02 4.269000e+02
-14 13373     5.744600e+02 6.087000e+01
-2 13374     -1.727500e+02 5.587700e+02
-13 13374     3.099100e+02 4.117200e+02
-14 13374     4.582300e+02 4.616998e+01
-2 13375     8.379999e+01 5.583000e+02
-8 13375     1.509700e+02 4.447100e+02
-11 13375     5.461700e+02 3.460022e+00
-13 13375     5.585300e+02 4.433700e+02
-14 13375     7.545800e+02 7.644000e+01
-2 13376     3.703003e+01 5.561100e+02
-8 13376     1.117300e+02 4.413800e+02
-11 13376     4.929800e+02 -4.000000e+00
-14 13376     6.977300e+02 6.806000e+01
-2 13377     2.582000e+02 5.550700e+02
-8 13377     2.817300e+02 4.329300e+02
-9 13377     6.764001e+01 5.663100e+02
-2 13378     2.800400e+02 5.547500e+02
-3 13378     1.349900e+02 2.130300e+02
-6 13378     1.904500e+02 8.575800e+02
-8 13378     2.990000e+02 4.327400e+02
-9 13378     8.831000e+01 5.657800e+02
-13 13378     6.811600e+02 3.549000e+02
-2 13379     5.197998e+01 5.530700e+02
-14 13379     7.156100e+02 6.775000e+01
-2 13380     3.205000e+02 5.518400e+02
-3 13380     1.732400e+02 2.108100e+02
-8 13380     3.319800e+02 4.299700e+02
-2 13381     -4.203000e+02 5.505400e+02
-8 13381     -2.681700e+02 4.265200e+02
-2 13382     -3.501001e+01 5.505200e+02
-5 13382     7.229900e+02 1.435400e+02
-8 13382     5.121997e+01 4.356900e+02
-11 13382     4.148900e+02 -1.712000e+01
-13 13382     4.397200e+02 4.222100e+02
-2 13383     2.982300e+02 5.489500e+02
-3 13383     1.531400e+02 2.076100e+02
-6 13383     2.125700e+02 8.466200e+02
-8 13383     3.147300e+02 4.276800e+02
-9 13383     1.049900e+02 5.610000e+02
-11 13383     6.216899e+02 -1.015300e+02
-2 13384     -1.274800e+02 5.484400e+02
-3 13384     -2.630800e+02 2.074100e+02
-5 13384     6.128900e+02 1.324600e+02
-8 13384     -2.569000e+01 4.316500e+02
-11 13384     3.167000e+02 -2.901001e+01
-13 13384     3.509301e+02 4.090600e+02
-2 13385     -3.097100e+02 5.481000e+02
-3 13385     -4.339000e+02 2.098400e+02
-4 13385     1.654100e+02 -3.813300e+02
-5 13385     4.118800e+02 1.167300e+02
-6 13385     -5.297500e+02 8.676200e+02
-8 13385     -1.766500e+02 4.270500e+02
-11 13385     1.356600e+02 -4.732001e+01
-13 13385     1.870000e+02 3.890000e+02
-2 13386     -2.257300e+02 5.460500e+02
-11 13386     2.168000e+02 -4.128003e+01
-13 13386     2.612400e+02 3.957400e+02
-14 13386     4.002600e+02 2.904999e+01
-2 13387     4.420000e+02 5.456000e+02
-8 13387     4.261700e+02 4.205000e+02
-2 13388     -3.229900e+02 5.452000e+02
-3 13388     -4.452300e+02 2.072700e+02
-11 13388     1.237700e+02 -5.021997e+01
-13 13388     1.756400e+02 3.854200e+02
-14 13388     2.988000e+02 1.973999e+01
-2 13389     -1.229900e+02 5.445600e+02
-3 13389     -2.584100e+02 2.037900e+02
-4 13389     1.618199e+02 -5.193000e+02
-5 13389     6.175100e+02 1.292300e+02
-8 13389     -2.116998e+01 4.283100e+02
-2 13390     2.616500e+02 5.431100e+02
-3 13390     1.174500e+02 2.022100e+02
-6 13390     1.694000e+02 8.466300e+02
-8 13390     2.841500e+02 4.234200e+02
-9 13390     7.234003e+01 5.551100e+02
-11 13390     5.938900e+02 -9.778003e+01
-13 13390     6.654301e+02 3.494600e+02
-2 13391     -2.405300e+02 5.416800e+02
-6 13391     -4.409800e+02 8.744900e+02
-8 13391     -1.193700e+02 4.237200e+02
-13 13391     2.478600e+02 3.908300e+02
-14 13391     3.845200e+02 2.387000e+01
-2 13392     -1.832200e+02 5.413400e+02
-11 13392     2.587000e+02 -4.007001e+01
-13 13392     2.992400e+02 3.971300e+02
-2 13393     -2.483200e+02 5.412300e+02
-3 13393     -3.757000e+02 2.022300e+02
-6 13393     -4.512100e+02 8.720600e+02
-2 13394     -1.055000e+02 5.412800e+02
-4 13394     1.604399e+02 -5.328600e+02
-5 13394     6.377600e+02 1.282200e+02
-8 13394     -7.409973e+00 4.269800e+02
-13 13394     3.715601e+02 4.065600e+02
-14 13394     5.317800e+02 3.829999e+01
-2 13395     -1.417000e+02 5.389900e+02
-3 13395     -2.762800e+02 1.988800e+02
-4 13395     1.588199e+02 -5.034100e+02
-5 13395     5.958700e+02 1.220200e+02
-8 13395     -3.700000e+01 4.233100e+02
-11 13395     3.023900e+02 -3.790002e+01
-13 13395     3.377300e+02 4.000300e+02
-14 13395     4.914800e+02 3.178003e+01
-2 13396     -4.541100e+02 5.375000e+02
-3 13396     -5.724000e+02 2.034800e+02
-4 13396     1.617800e+02 -2.880400e+02
-5 13396     2.622300e+02 9.770001e+01
-8 13396     -2.965900e+02 4.147400e+02
-2 13397     5.432100e+02 5.370500e+02
-8 13397     5.112600e+02 4.125500e+02
-2 13398     -7.672300e+02 5.349400e+02
-5 13398     -3.087000e+01 7.333002e+01
-8 13398     -5.517500e+02 4.042300e+02
-11 13398     -2.568000e+02 -9.153998e+01
-13 13398     -1.771600e+02 3.325200e+02
-14 13398     -1.185400e+02 -2.610999e+01
-2 13399     2.745001e+01 5.319600e+02
-5 13399     7.960000e+02 1.317100e+02
-8 13399     1.019300e+02 4.215800e+02
-11 13399     4.818600e+02 -2.537000e+01
-2 13400     -4.767800e+02 5.298700e+02
-4 13400     1.578800e+02 -2.738300e+02
-5 13400     2.391100e+02 8.865997e+01
-13 13400     4.628998e+01 3.582300e+02
-2 13401     -3.015400e+02 5.291200e+02
-4 13401     1.548300e+02 -3.846400e+02
-5 13401     4.187500e+02 9.975000e+01
-6 13401     -5.175200e+02 8.450100e+02
-13 13401     1.934200e+02 3.745400e+02
-14 13401     3.200900e+02 7.119995e+00
-2 13402     -3.015400e+02 5.291200e+02
-5 13402     4.187500e+02 9.975000e+01
-6 13402     -5.175200e+02 8.450100e+02
-13 13402     1.934200e+02 3.745400e+02
-14 13402     3.200900e+02 7.119995e+00
-2 13403     -4.909200e+02 5.281600e+02
-5 13403     2.245500e+02 8.682001e+01
-14 13403     1.308800e+02 -8.789978e+00
-2 13404     4.780100e+02 5.281000e+02
-3 13404     3.277500e+02 1.898300e+02
-2 13405     -2.588300e+02 5.260800e+02
-3 13405     -3.866200e+02 1.887300e+02
-6 13405     -4.624300e+02 8.516800e+02
-14 13405     3.640100e+02 8.219971e+00
-2 13406     5.086300e+02 5.257400e+02
-3 13406     3.565300e+02 1.882700e+02
-9 13406     2.879500e+02 5.454400e+02
-2 13407     -1.361800e+02 5.254300e+02
-3 13407     -2.713300e+02 1.856600e+02
-4 13407     1.514399e+02 -5.060000e+02
-5 13407     6.010300e+02 1.099100e+02
-8 13407     -3.278003e+01 4.129200e+02
-13 13407     3.419399e+02 3.895900e+02
-2 13408     4.824100e+02 5.250500e+02
-3 13408     3.316400e+02 1.870400e+02
-8 13408     4.598800e+02 4.032800e+02
-9 13408     2.654900e+02 5.438100e+02
-2 13409     4.104200e+02 5.228800e+02
-3 13409     2.596400e+02 1.845200e+02
-6 13409     3.436900e+02 7.997500e+02
-8 13409     4.051500e+02 4.052200e+02
-2 13410     -3.253000e+02 5.227900e+02
-4 13410     1.519900e+02 -3.678100e+02
-2 13411     -2.889600e+02 5.203000e+02
-8 13411     -1.594900e+02 4.054400e+02
-13 13411     2.040601e+02 3.692400e+02
-2 13412     5.034200e+02 5.205200e+02
-3 13412     3.519500e+02 1.834800e+02
-6 13412     4.390000e+02 7.432000e+02
-8 13412     4.778000e+02 3.986600e+02
-9 13412     2.841600e+02 5.404400e+02
-2 13413     -4.975700e+02 5.198900e+02
-5 13413     2.176899e+02 7.915997e+01
-8 13413     -3.317000e+02 3.999100e+02
-11 13413     -3.656000e+01 -8.231000e+01
-13 13413     2.904999e+01 3.492700e+02
-14 13413     1.247100e+02 -1.631000e+01
-2 13414     5.671400e+02 5.196000e+02
-3 13414     4.116000e+02 1.832700e+02
-6 13414     5.111000e+02 7.317700e+02
-8 13414     5.303800e+02 3.969000e+02
-9 13414     3.373600e+02 5.413700e+02
-2 13415     -2.617700e+02 5.182500e+02
-5 13415     4.602600e+02 9.285999e+01
-2 13416     -3.338900e+02 5.178400e+02
-8 13416     -1.971200e+02 4.023300e+02
-11 13416     1.121100e+02 -7.201001e+01
-2 13417     9.803998e+01 5.159400e+02
-3 13417     -5.315002e+01 1.765100e+02
-8 13417     1.630500e+02 4.100500e+02
-11 13417     5.619399e+02 -3.015002e+01
-14 13417     7.694600e+02 3.684998e+01
-2 13418     5.001500e+02 5.161900e+02
-3 13418     3.494600e+02 1.792700e+02
-6 13418     4.346000e+02 7.391700e+02
-8 13418     4.748700e+02 3.952700e+02
-9 13418     2.812700e+02 5.366700e+02
-2 13419     5.655000e+02 5.149200e+02
-3 13419     4.097300e+02 1.789500e+02
-6 13419     5.091000e+02 7.280500e+02
-8 13419     5.295300e+02 3.934000e+02
-9 13419     3.360200e+02 5.369000e+02
-2 13420     -2.157300e+02 5.143700e+02
-4 13420     1.457600e+02 -4.436300e+02
-14 13420     4.095601e+02 1.679993e+00
-2 13421     6.300000e+01 5.128500e+02
-3 13421     -8.547998e+01 1.727000e+02
-8 13421     1.337000e+02 4.065000e+02
-11 13421     5.222400e+02 -3.750000e+01
-2 13422     5.858800e+02 5.129600e+02
-8 13422     5.463700e+02 3.920200e+02
-9 13422     3.536000e+02 5.358100e+02
-2 13423     -6.994700e+02 5.116300e+02
-5 13423     2.754999e+01 6.071997e+01
-13 13423     -1.275300e+02 3.248100e+02
-14 13423     -6.070001e+01 -3.728003e+01
-2 13424     5.678199e+02 5.106500e+02
-3 13424     4.128000e+02 1.752800e+02
-6 13424     5.114100e+02 7.226200e+02
-8 13424     5.306200e+02 3.897900e+02
-9 13424     3.388800e+02 5.333900e+02
-2 13425     6.242300e+02 5.106800e+02
-3 13425     4.645699e+02 1.759300e+02
-2 13426     6.242300e+02 5.106800e+02
-3 13426     4.645699e+02 1.759300e+02
-2 13427     3.440002e+01 5.094100e+02
-3 13427     -1.122700e+02 1.695200e+02
-13 13427     5.037100e+02 3.949000e+02
-14 13427     6.911700e+02 2.189001e+01
-2 13428     -1.734700e+02 5.083100e+02
-6 13428     -3.525600e+02 8.483700e+02
-8 13428     -6.369000e+01 3.984200e+02
-11 13428     2.695100e+02 -6.467999e+01
-2 13429     2.705500e+02 5.084600e+02
-3 13429     1.265300e+02 1.694100e+02
-6 13429     1.794500e+02 8.024900e+02
-8 13429     2.911200e+02 3.951400e+02
-9 13429     8.113000e+01 5.251200e+02
-11 13429     6.017600e+02 -1.302000e+02
-13 13429     6.697100e+02 3.182400e+02
-2 13430     -2.449100e+02 5.074000e+02
-3 13430     -3.734300e+02 1.703800e+02
-4 13430     1.432100e+02 -4.217100e+02
-8 13430     -1.221500e+02 3.971500e+02
-11 13430     1.980700e+02 -7.210999e+01
-2 13431     5.686400e+02 5.061700e+02
-3 13431     4.136000e+02 1.711500e+02
-6 13431     5.129399e+02 7.176900e+02
-9 13431     3.388300e+02 5.290100e+02
-2 13432     6.344000e+02 5.059700e+02
-3 13432     4.739301e+02 1.720100e+02
-2 13433     -1.105000e+02 5.033600e+02
-5 13433     6.275200e+02 8.895001e+01
-8 13433     -1.151001e+01 3.960100e+02
-11 13433     3.322500e+02 -6.415997e+01
-2 13434     7.228900e+02 5.024100e+02
-3 13434     5.543600e+02 1.695300e+02
-2 13435     2.804999e+01 5.013500e+02
-3 13435     -1.184000e+02 1.608500e+02
-11 13435     4.823500e+02 -5.103998e+01
-13 13435     4.972000e+02 3.876800e+02
-2 13436     6.699399e+02 4.973100e+02
-3 13436     5.070900e+02 1.643900e+02
-2 13437     -3.142100e+02 4.945100e+02
-3 13437     -4.390800e+02 1.586800e+02
-5 13437     4.022000e+02 6.701001e+01
-11 13437     1.305200e+02 -8.766998e+01
-13 13437     1.810500e+02 3.464200e+02
-2 13438     -7.440900e+02 4.928000e+02
-5 13438     -1.351001e+01 4.212000e+01
-13 13438     -1.606700e+02 3.076700e+02
-14 13438     -1.009300e+02 -5.553998e+01
-2 13439     -7.440900e+02 4.928000e+02
-13 13439     -1.606700e+02 3.076700e+02
-14 13439     -1.009300e+02 -5.553998e+01
-2 13440     -3.297200e+02 4.926300e+02
-3 13440     -4.546400e+02 1.582300e+02
-11 13440     1.158000e+02 -9.040002e+01
-13 13440     1.674301e+02 3.441000e+02
-14 13440     2.887600e+02 -2.812000e+01
-2 13441     -3.297200e+02 4.926300e+02
-8 13441     -1.929400e+02 3.815100e+02
-11 13441     1.158000e+02 -9.040002e+01
-14 13441     2.887600e+02 -2.812000e+01
-2 13442     9.165002e+01 4.920900e+02
-3 13442     -5.876001e+01 1.519200e+02
-8 13442     1.576200e+02 3.902300e+02
-2 13443     7.902002e+01 4.900200e+02
-11 13443     5.397500e+02 -5.565997e+01
-13 13443     5.472600e+02 3.828900e+02
-14 13443     7.443199e+02 6.859985e+00
-2 13444     -3.025300e+02 4.879400e+02
-5 13444     4.141200e+02 6.084998e+01
-14 13444     3.165000e+02 -3.041998e+01
-2 13445     9.563000e+01 4.869700e+02
-11 13445     5.590300e+02 -5.515997e+01
-13 13445     5.640000e+02 3.834300e+02
-2 13446     2.012900e+02 4.849300e+02
-3 13446     4.304999e+01 1.465900e+02
-8 13446     2.497500e+02 3.878500e+02
-2 13447     1.353998e+01 4.824800e+02
-5 13447     7.742500e+02 7.853003e+01
-6 13447     -1.130200e+02 8.584800e+02
-8 13447     9.217999e+01 3.811300e+02
-11 13447     4.665100e+02 -6.823999e+01
-2 13448     -8.159973e+00 4.812800e+02
-3 13448     -1.521300e+02 1.411400e+02
-5 13448     7.468700e+02 7.458002e+01
-6 13448     -1.409400e+02 8.506900e+02
-8 13448     7.382001e+01 3.792700e+02
-11 13448     4.422000e+02 -7.209003e+01
-13 13448     4.601000e+02 3.660900e+02
-14 13448     6.391300e+02 -1.104999e+01
-2 13449     4.574900e+02 4.813800e+02
-3 13449     3.085800e+02 1.443400e+02
-6 13449     3.819000e+02 7.024200e+02
-8 13449     4.376500e+02 3.654600e+02
-9 13449     2.442200e+02 5.039700e+02
-11 13449     7.090000e+02 -2.295200e+02
-2 13450     3.732000e+02 4.793700e+02
-3 13450     2.257800e+02 1.436900e+02
-6 13450     2.985300e+02 7.510100e+02
-8 13450     3.744500e+02 3.692700e+02
-9 13450     1.701600e+02 5.021000e+02
-13 13450     7.555500e+02 2.760100e+02
-2 13451     5.823199e+02 4.785300e+02
-6 13451     5.267600e+02 6.832900e+02
-2 13452     5.823199e+02 4.785300e+02
-6 13452     5.267600e+02 6.832900e+02
-2 13453     -6.976000e+02 4.751100e+02
-5 13453     2.609003e+01 2.956000e+01
-13 13453     -1.269900e+02 2.989800e+02
-14 13453     -6.182001e+01 -6.731000e+01
-2 13454     -3.099976e-01 4.742900e+02
-13 13454     4.677000e+02 3.608400e+02
-2 13455     -3.798999e+01 4.721600e+02
-6 13455     -1.784800e+02 8.335900e+02
-8 13455     4.971002e+01 3.720000e+02
-2 13456     -1.538500e+02 4.674700e+02
-3 13456     -2.887100e+02 1.302100e+02
-4 13456     1.174900e+02 -4.830300e+02
-6 13456     -3.250100e+02 8.001800e+02
-8 13456     -4.722998e+01 3.657700e+02
-11 13456     2.886100e+02 -9.540002e+01
-2 13457     5.160999e+01 4.655000e+02
-5 13457     8.200601e+02 6.566998e+01
-6 13457     -6.363000e+01 8.472500e+02
-8 13457     1.236000e+02 3.689600e+02
-2 13458     -1.033002e+01 4.600000e+02
-5 13458     7.426400e+02 5.428003e+01
-6 13458     -1.428000e+02 8.239500e+02
-8 13458     7.214001e+01 3.625500e+02
-11 13458     4.404000e+02 -8.850000e+01
-13 13458     4.567300e+02 3.492700e+02
-14 13458     6.358700e+02 -3.041998e+01
-2 13459     -4.706100e+02 4.588600e+02
-3 13459     -5.900700e+02 1.285800e+02
-5 13459     2.392300e+02 2.584003e+01
-11 13459     -1.371002e+01 -1.242800e+02
-14 13459     1.470000e+02 -6.731000e+01
-2 13460     -1.049600e+02 4.590800e+02
-5 13460     6.305699e+02 4.704999e+01
-6 13460     -2.629100e+02 8.016100e+02
-8 13460     -6.549988e+00 3.604300e+02
-13 13460     3.672200e+02 3.390500e+02
-14 13460     5.280900e+02 -3.996997e+01
-2 13461     -3.950100e+02 4.533200e+02
-4 13461     1.175500e+02 -3.154100e+02
-5 13461     3.148101e+02 2.428003e+01
-8 13461     -2.468200e+02 3.490400e+02
-2 13462     -2.569700e+02 4.503900e+02
-4 13462     1.118000e+02 -4.057600e+02
-5 13462     4.595500e+02 2.877002e+01
-6 13462     -4.531600e+02 7.560800e+02
-13 13462     2.292800e+02 3.173400e+02
-14 13462     3.619399e+02 -6.102002e+01
-2 13463     -1.052400e+02 4.497500e+02
-4 13463     1.074700e+02 -5.192400e+02
-5 13463     6.289500e+02 3.871997e+01
-8 13463     -7.049988e+00 3.539800e+02
-13 13463     3.658101e+02 3.314500e+02
-14 13463     5.265601e+02 -4.792999e+01
-2 13464     4.971997e+01 4.488500e+02
-3 13464     -9.762000e+01 1.116200e+02
-5 13464     8.161500e+02 4.759998e+01
-6 13464     -6.628003e+01 8.241400e+02
-13 13464     5.148900e+02 3.459600e+02
-14 13464     7.064100e+02 -3.590002e+01
-2 13465     4.971997e+01 4.488500e+02
-3 13465     -9.762000e+01 1.116200e+02
-13 13465     5.148900e+02 3.459600e+02
-2 13466     6.034998e+01 4.477900e+02
-13 13466     5.238700e+02 3.465200e+02
-2 13467     9.640997e+01 4.480100e+02
-6 13467     -6.640015e+00 8.357400e+02
-8 13467     1.607400e+02 3.564200e+02
-2 13468     -6.895000e+02 4.439000e+02
-5 13468     3.065002e+01 4.070007e+00
-11 13468     -1.974400e+02 -1.455500e+02
-13 13468     -1.214700e+02 2.776800e+02
-14 13468     -5.665002e+01 -9.246002e+01
-2 13469     -4.998999e+01 4.382800e+02
-4 13469     9.804999e+01 -5.630200e+02
-5 13469     6.928400e+02 2.997998e+01
-8 13469     3.938000e+01 3.444600e+02
-2 13470     -4.998999e+01 4.382800e+02
-5 13470     6.928400e+02 2.997998e+01
-2 13471     -1.782200e+02 4.375900e+02
-4 13471     1.020100e+02 -4.608300e+02
-5 13471     5.447400e+02 2.148999e+01
-6 13471     -3.536300e+02 7.581800e+02
-8 13471     -6.726001e+01 3.413700e+02
-11 13471     2.632300e+02 -1.208900e+02
-14 13471     4.446500e+02 -6.675000e+01
-2 13472     -1.782200e+02 4.375900e+02
-3 13472     -3.120600e+02 1.019400e+02
-4 13472     1.020100e+02 -4.608300e+02
-5 13472     5.447400e+02 2.148999e+01
-6 13472     -3.536300e+02 7.581800e+02
-9 13472     -3.105300e+02 4.507000e+02
-11 13472     2.632300e+02 -1.208900e+02
-14 13472     4.446500e+02 -6.675000e+01
-2 13473     -5.171200e+02 4.365900e+02
-13 13473     1.121002e+01 2.854200e+02
-14 13473     1.009400e+02 -8.963000e+01
-2 13474     -4.539001e+01 4.367100e+02
-4 13474     9.698999e+01 -5.664000e+02
-8 13474     4.337000e+01 3.440400e+02
-2 13475     1.680100e+02 4.365100e+02
-8 13475     2.211800e+02 3.460900e+02
-9 13475     -1.578998e+01 4.577400e+02
-2 13476     4.569700e+02 4.349200e+02
-6 13476     3.806900e+02 6.503400e+02
-9 13476     2.455699e+02 4.659100e+02
-11 13476     7.103800e+02 -2.709700e+02
-2 13477     -5.283002e+01 4.343000e+02
-5 13477     6.888600e+02 2.614001e+01
-6 13477     -1.955400e+02 7.825200e+02
-8 13477     3.683002e+01 3.412500e+02
-2 13478     4.132400e+02 4.346500e+02
-3 13478     2.650200e+02 1.026500e+02
-6 13478     3.428100e+02 6.925800e+02
-8 13478     4.066200e+02 3.335700e+02
-9 13478     2.057000e+02 4.658300e+02
-2 13479     -1.536100e+02 4.342500e+02
-6 13479     -3.227600e+02 7.600800e+02
-8 13479     -4.707001e+01 3.400200e+02
-2 13480     2.842500e+02 4.335600e+02
-6 13480     1.940700e+02 7.075700e+02
-9 13480     9.464001e+01 4.597800e+02
-13 13480     6.733300e+02 2.524900e+02
-2 13481     -2.672500e+02 4.321600e+02
-3 13481     -3.960000e+02 9.696997e+01
-4 13481     1.030800e+02 -3.966700e+02
-5 13481     4.469800e+02 1.223999e+01
-6 13481     -4.644200e+02 7.314400e+02
-14 13481     3.498800e+02 -7.697998e+01
-2 13482     -7.174800e+02 4.278600e+02
-5 13482     3.690002e+00 -1.062000e+01
-2 13483     -5.988500e+02 4.270700e+02
-13 13483     -5.342999e+01 2.723300e+02
-14 13483     2.352002e+01 -1.023600e+02
-2 13484     -5.239700e+02 4.261200e+02
-11 13484     -6.214001e+01 -1.508000e+02
-2 13485     -6.549988e+00 4.257700e+02
-5 13485     7.436400e+02 2.075000e+01
-6 13485     -1.372300e+02 7.827000e+02
-9 13485     -1.634500e+02 4.434900e+02
-14 13485     6.375400e+02 -6.537000e+01
-2 13486     -4.569000e+01 4.256200e+02
-4 13486     9.032001e+01 -5.643600e+02
-5 13486     6.963600e+02 1.769000e+01
-6 13486     -1.862900e+02 7.737800e+02
-13 13486     4.202700e+02 3.170000e+02
-14 13486     5.928800e+02 -6.721997e+01
-2 13487     -6.914000e+02 4.251000e+02
-5 13487     2.696002e+01 -1.191998e+01
-2 13488     -5.307000e+02 4.245400e+02
-11 13488     -6.756000e+01 -1.522200e+02
-2 13489     3.859985e+00 4.239000e+02
-5 13489     7.561400e+02 1.867999e+01
-6 13489     -1.235600e+02 7.824300e+02
-8 13489     8.414001e+01 3.340400e+02
-9 13489     -1.542100e+02 4.432900e+02
-11 13489     4.552700e+02 -1.172900e+02
-2 13490     -1.051900e+02 4.233500e+02
-3 13490     -2.432600e+02 8.626001e+01
-4 13490     9.113000e+01 -5.153400e+02
-5 13490     6.264900e+02 1.141998e+01
-6 13490     -2.610700e+02 7.567200e+02
-8 13490     -6.789978e+00 3.314500e+02
-13 13490     3.643700e+02 3.093800e+02
-14 13490     5.252600e+02 -7.485999e+01
-2 13491     -7.303003e+01 4.227800e+02
-11 13491     3.724700e+02 -1.249500e+02
-13 13491     3.941200e+02 3.126900e+02
-14 13491     5.611899e+02 -7.165997e+01
-2 13492     -3.641300e+02 4.214400e+02
-3 13492     -4.887100e+02 8.909998e+01
-4 13492     1.002100e+02 -3.315400e+02
-5 13492     3.439399e+02 -3.590027e+00
-6 13492     -5.837400e+02 6.966400e+02
-11 13492     8.226001e+01 -1.472900e+02
-14 13492     2.497600e+02 -9.428998e+01
-2 13493     3.236600e+02 4.198900e+02
-6 13493     2.386200e+02 6.858700e+02
-8 13493     3.333900e+02 3.216200e+02
-9 13493     1.282900e+02 4.490200e+02
-2 13494     5.483002e+01 4.186800e+02
-6 13494     -5.926001e+01 7.869600e+02
-8 13494     1.258700e+02 3.307100e+02
-9 13494     -1.105200e+02 4.403400e+02
-2 13495     2.001400e+02 4.187100e+02
-3 13495     4.250000e+01 8.294000e+01
-8 13495     2.480000e+02 3.336800e+02
-9 13495     1.207001e+01 4.444100e+02
-2 13496     -5.796500e+02 4.142600e+02
-3 13496     -6.997600e+02 8.585999e+01
-11 13496     -1.096800e+02 -1.618700e+02
-14 13496     3.966998e+01 -1.117900e+02
-2 13497     2.912300e+02 4.134700e+02
-8 13497     3.072100e+02 3.179400e+02
-9 13497     1.007000e+02 4.426800e+02
-2 13498     3.506400e+02 4.124800e+02
-3 13498     2.052600e+02 8.014001e+01
-8 13498     3.553600e+02 3.153900e+02
-2 13499     -6.623999e+01 4.114000e+02
-3 13499     -2.067200e+02 7.529999e+01
-4 13499     8.392999e+01 -5.457700e+02
-5 13499     6.709000e+02 3.950012e+00
-6 13499     -2.113400e+02 7.525900e+02
-8 13499     2.565997e+01 3.230300e+02
-9 13499     -2.133800e+02 4.307000e+02
-11 13499     3.796899e+02 -1.312100e+02
-13 13499     3.998700e+02 3.042400e+02
-14 13499     5.683600e+02 -8.178003e+01
-2 13500     -8.563000e+01 4.107600e+02
-4 13500     8.353003e+01 -5.296100e+02
-5 13500     6.481500e+02 1.140015e+00
-8 13500     9.830017e+00 3.225100e+02
-2 13501     4.487000e+01 4.111100e+02
-5 13501     8.060200e+02 1.031000e+01
-6 13501     -7.096002e+01 7.790700e+02
-8 13501     1.184700e+02 3.260900e+02
-2 13502     3.999100e+02 4.104900e+02
-3 13502     2.527500e+02 7.881000e+01
-6 13502     3.263400e+02 6.645800e+02
-8 13502     3.954600e+02 3.131500e+02
-9 13502     1.947900e+02 4.429500e+02
-13 13502     7.703199e+02 2.115600e+02
-2 13503     1.025900e+02 4.102400e+02
-13 13503     5.642800e+02 3.182200e+02
-2 13504     -5.641100e+02 4.084800e+02
-5 13504     1.434500e+02 -2.182001e+01
-8 13504     -3.852000e+02 3.098400e+02
-2 13505     1.472998e+01 4.081300e+02
-3 13505     -1.305500e+02 7.235999e+01
-9 13505     -1.444200e+02 4.295200e+02
-13 13505     4.768800e+02 3.083800e+02
-2 13506     -5.819800e+02 4.040600e+02
-3 13506     -7.026600e+02 7.659998e+01
-5 13506     1.260800e+02 -2.664001e+01
-8 13506     -3.994600e+02 3.059600e+02
-12 13506     -6.580200e+02 6.173500e+02
-13 13506     -4.120001e+01 2.570700e+02
-14 13506     3.714001e+01 -1.207900e+02
-2 13507     -5.819800e+02 4.040600e+02
-8 13507     -3.994600e+02 3.059600e+02
-2 13508     -2.755100e+02 4.022300e+02
-4 13508     8.731000e+01 -3.870800e+02
-5 13508     4.350500e+02 -1.665997e+01
-6 13508     -4.717700e+02 6.934500e+02
-8 13508     -1.478900e+02 3.119900e+02
-2 13509     -3.334600e+02 3.981000e+02
-3 13509     -4.601000e+02 6.439001e+01
-11 13509     1.096600e+02 -1.612400e+02
-2 13510     -7.025400e+02 3.974200e+02
-5 13510     1.423999e+01 -3.596997e+01
-11 13510     -2.099300e+02 -1.778700e+02
-13 13510     -1.326400e+02 2.439000e+02
-14 13510     -7.231000e+01 -1.317000e+02
-2 13511     -5.472200e+02 3.976000e+02
-5 13511     1.588400e+02 -3.104999e+01
-11 13511     -8.247998e+01 -1.716500e+02
-12 13511     -6.161100e+02 6.159700e+02
-14 13511     6.929999e+01 -1.248000e+02
-2 13512     -5.472200e+02 3.976000e+02
-11 13512     -8.247998e+01 -1.716500e+02
-12 13512     -6.161100e+02 6.159700e+02
-2 13513     1.184300e+02 3.975200e+02
-9 13513     -5.642999e+01 4.232500e+02
-13 13513     5.792700e+02 3.094000e+02
-14 13513     7.873199e+02 -8.078003e+01
-2 13514     5.500000e+01 3.966200e+02
-6 13514     -5.802002e+01 7.605300e+02
-8 13514     1.267200e+02 3.130200e+02
-9 13514     -1.099700e+02 4.203200e+02
-11 13514     5.112200e+02 -1.357000e+02
-13 13514     5.153000e+02 3.021300e+02
-14 13514     7.094200e+02 -8.758002e+01
-2 13515     -1.493200e+02 3.957900e+02
-5 13515     5.731300e+02 -1.809998e+01
-6 13515     -3.140900e+02 7.124900e+02
-9 13515     -2.839000e+02 4.144900e+02
-13 13515     3.217300e+02 2.839200e+02
-14 13515     4.740699e+02 -1.036000e+02
-2 13516     -4.732700e+02 3.953000e+02
-4 13516     9.225000e+01 -2.625700e+02
-11 13516     -1.759998e+01 -1.703000e+02
-2 13517     -1.277300e+02 3.943800e+02
-4 13517     7.588000e+01 -4.934200e+02
-5 13517     5.976801e+02 -1.790002e+01
-6 13517     -2.874500e+02 7.162600e+02
-8 13517     -2.535999e+01 3.078200e+02
-9 13517     -2.654000e+02 4.137200e+02
-11 13517     3.143000e+02 -1.512600e+02
-13 13517     3.417400e+02 2.847200e+02
-14 13517     4.979500e+02 -1.031400e+02
-2 13518     -7.636100e+02 3.927700e+02
-4 13518     1.025200e+02 -1.102200e+02
-5 13518     -4.037000e+01 -4.146002e+01
-2 13519     -1.416800e+02 3.933300e+02
-4 13519     7.540997e+01 -4.822600e+02
-6 13519     -3.050400e+02 7.108600e+02
-9 13519     -2.772000e+02 4.123900e+02
-11 13519     2.996100e+02 -1.536500e+02
-13 13519     3.288101e+02 2.824900e+02
-14 13519     4.824100e+02 -1.056700e+02
-2 13520     -4.224900e+02 3.921700e+02
-5 13520     2.814200e+02 -3.245001e+01
-11 13520     2.776001e+01 -1.705400e+02
-2 13521     7.000000e+00 3.911400e+02
-3 13521     -1.383000e+02 5.526001e+01
-13 13521     4.677400e+02 2.934600e+02
-2 13522     7.000000e+00 3.911400e+02
-13 13522     4.677400e+02 2.934600e+02
-2 13523     -5.940100e+02 3.882900e+02
-12 13523     -6.696600e+02 5.992200e+02
-14 13523     2.500000e+01 -1.342200e+02
-2 13524     6.045001e+01 3.875400e+02
-6 13524     -5.123999e+01 7.501900e+02
-9 13524     -1.048500e+02 4.129300e+02
-2 13525     -7.484400e+02 3.846400e+02
-8 13525     -5.351000e+02 2.870600e+02
-2 13526     6.299399e+02 3.845300e+02
-3 13526     4.760000e+02 6.046002e+01
-8 13526     5.816400e+02 2.840800e+02
-9 13526     3.933600e+02 4.273600e+02
-12 13526     6.536700e+02 5.809600e+02
-2 13527     4.623999e+01 3.830600e+02
-6 13527     -6.896997e+01 7.434100e+02
-8 13527     1.195600e+02 3.026500e+02
-9 13527     -1.169900e+02 4.090000e+02
-2 13528     4.623999e+01 3.830600e+02
-5 13528     8.041899e+02 -1.882001e+01
-6 13528     -6.896997e+01 7.434100e+02
-8 13528     1.195600e+02 3.026500e+02
-9 13528     -1.169900e+02 4.090000e+02
-11 13528     5.009500e+02 -1.474200e+02
-13 13528     5.055400e+02 2.906900e+02
-14 13528     6.978500e+02 -1.009800e+02
-2 13529     5.649200e+02 3.810000e+02
-3 13529     4.147100e+02 5.584003e+01
-6 13529     4.998000e+02 5.719300e+02
-7 13529     5.158900e+02 5.498700e+02
-8 13529     5.268700e+02 2.822700e+02
-9 13529     3.380800e+02 4.224000e+02
-12 13529     5.801700e+02 5.820200e+02
-2 13530     -3.870300e+02 3.787900e+02
-8 13530     -2.394900e+02 2.903400e+02
-11 13530     5.873999e+01 -1.796700e+02
-12 13530     -4.265600e+02 6.191000e+02
-2 13531     1.416100e+02 3.787500e+02
-6 13531     5.204999e+01 7.581900e+02
-13 13531     6.010800e+02 2.953700e+02
-2 13532     4.805000e+02 3.775800e+02
-6 13532     4.043200e+02 5.806100e+02
-12 13532     4.882000e+02 5.874600e+02
-2 13533     -3.811700e+02 3.757900e+02
-5 13533     3.221600e+02 -4.604999e+01
-8 13533     -2.344600e+02 2.880300e+02
-11 13533     6.471997e+01 -1.811300e+02
-12 13533     -4.196300e+02 6.171900e+02
-13 13533     1.191900e+02 2.499400e+02
-14 13533     2.290900e+02 -1.363500e+02
-2 13534     -5.921600e+02 3.750600e+02
-8 13534     -4.076000e+02 2.833500e+02
-11 13534     -1.211600e+02 -1.893200e+02
-12 13534     -6.656600e+02 5.854500e+02
-2 13535     1.201900e+02 3.744200e+02
-6 13535     2.647998e+01 7.477900e+02
-8 13535     1.815600e+02 2.968700e+02
-9 13535     -5.354999e+01 4.032800e+02
-13 13535     5.792500e+02 2.898700e+02
-14 13535     7.889800e+02 -1.040400e+02
-2 13536     -2.941300e+02 3.731900e+02
-4 13536     7.290002e+01 -3.714300e+02
-5 13536     4.127500e+02 -4.563000e+01
-11 13536     1.472500e+02 -1.782400e+02
-14 13536     3.180601e+02 -1.339000e+02
-2 13537     -2.941300e+02 3.731900e+02
-5 13537     4.127500e+02 -4.563000e+01
-6 13537     -4.923300e+02 6.544300e+02
-13 13537     1.929500e+02 2.550100e+02
-14 13537     3.180601e+02 -1.339000e+02
-2 13538     3.888700e+02 3.728400e+02
-3 13538     2.431899e+02 4.354999e+01
-6 13538     3.119400e+02 6.210000e+02
-8 13538     3.858500e+02 2.818200e+02
-9 13538     1.856700e+02 4.095600e+02
-13 13538     7.561899e+02 1.814500e+02
-2 13539     -5.704400e+02 3.725300e+02
-5 13539     1.344000e+02 -5.377002e+01
-8 13539     -3.898000e+02 2.816900e+02
-13 13539     -3.298999e+01 2.350700e+02
-14 13539     4.591998e+01 -1.472400e+02
-2 13540     -5.704400e+02 3.725300e+02
-8 13540     -3.898000e+02 2.816900e+02
-13 13540     -3.298999e+01 2.350700e+02
-14 13540     4.591998e+01 -1.472400e+02
-2 13541     4.332600e+02 3.721500e+02
-3 13541     2.899100e+02 4.479999e+01
-6 13541     3.506000e+02 5.813200e+02
-8 13541     4.178600e+02 2.777400e+02
-9 13541     2.262700e+02 4.120000e+02
-12 13541     4.367900e+02 5.860600e+02
-2 13542     4.332600e+02 3.721500e+02
-3 13542     2.899100e+02 4.479999e+01
-6 13542     3.506000e+02 5.813200e+02
-8 13542     4.178600e+02 2.777400e+02
-9 13542     2.262700e+02 4.120000e+02
-12 13542     4.367900e+02 5.860600e+02
-2 13543     -8.919000e+01 3.714100e+02
-3 13543     -2.279900e+02 3.685999e+01
-8 13543     6.450012e+00 2.908200e+02
-2 13544     -2.123600e+02 3.708100e+02
-4 13544     6.709003e+01 -4.270900e+02
-5 13544     5.008600e+02 -4.415002e+01
-8 13544     -9.531000e+01 2.871300e+02
-9 13544     -3.363000e+02 3.903700e+02
-2 13545     -2.189300e+02 3.695500e+02
-4 13545     6.696997e+01 -4.222800e+02
-8 13545     -1.009400e+02 2.866500e+02
-9 13545     -3.422200e+02 3.887900e+02
-11 13545     2.210800e+02 -1.769800e+02
-13 13545     2.582400e+02 2.577500e+02
-2 13546     -2.315700e+02 3.673900e+02
-3 13546     -3.630900e+02 3.363000e+01
-5 13546     4.790500e+02 -4.792999e+01
-6 13546     -4.147100e+02 6.610500e+02
-8 13546     -1.111000e+02 2.840900e+02
-9 13546     -3.530400e+02 3.868300e+02
-13 13546     2.470100e+02 2.552500e+02
-14 13546     3.833900e+02 -1.350900e+02
-2 13547     -6.561700e+02 3.671500e+02
-5 13547     5.345001e+01 -6.057001e+01
-8 13547     -4.594600e+02 2.750100e+02
-11 13547     -1.735300e+02 -1.971300e+02
-14 13547     -3.354999e+01 -1.553200e+02
-2 13548     -2.378700e+02 3.663500e+02
-4 13548     6.622998e+01 -4.085200e+02
-5 13548     4.721000e+02 -4.952002e+01
-6 13548     -4.223100e+02 6.577900e+02
-8 13548     -1.164600e+02 2.835300e+02
-13 13548     2.414600e+02 2.538500e+02
-14 13548     3.766100e+02 -1.365200e+02
-2 13549     -2.378700e+02 3.663500e+02
-5 13549     4.721000e+02 -4.952002e+01
-8 13549     -1.164600e+02 2.835300e+02
-9 13549     -3.583100e+02 3.857300e+02
-13 13549     2.414600e+02 2.538500e+02
-2 13550     -2.454800e+02 3.655400e+02
-3 13550     -3.764200e+02 3.209003e+01
-4 13550     6.619000e+01 -4.032600e+02
-5 13550     4.641801e+02 -5.039001e+01
-6 13550     -4.317000e+02 6.552100e+02
-8 13550     -1.229200e+02 2.824500e+02
-11 13550     1.944500e+02 -1.816000e+02
-13 13550     2.348300e+02 2.526300e+02
-14 13550     3.686899e+02 -1.378200e+02
-2 13551     -2.454800e+02 3.655400e+02
-4 13551     6.619000e+01 -4.032600e+02
-5 13551     4.641801e+02 -5.039001e+01
-6 13551     -4.317000e+02 6.552100e+02
-8 13551     -1.229200e+02 2.824500e+02
-11 13551     1.944500e+02 -1.816000e+02
-13 13551     2.348300e+02 2.526300e+02
-14 13551     3.686899e+02 -1.378200e+02
-2 13552     -5.105900e+02 3.636100e+02
-3 13552     -6.320700e+02 3.423999e+01
-8 13552     -3.408800e+02 2.773900e+02
-11 13552     -5.416998e+01 -1.951300e+02
-12 13552     -5.706400e+02 5.874900e+02
-14 13552     1.010700e+02 -1.534900e+02
-2 13553     -7.337200e+02 3.624400e+02
-5 13553     -1.681000e+01 -6.582001e+01
-8 13553     -5.226300e+02 2.699100e+02
-11 13553     -2.355300e+02 -2.019800e+02
-14 13553     -1.023500e+02 -1.613300e+02
-2 13554     -2.354900e+02 3.588700e+02
-4 13554     6.185999e+01 -4.097300e+02
-5 13554     4.746899e+02 -5.681000e+01
-6 13554     -4.179800e+02 6.486600e+02
-8 13554     -1.139300e+02 2.770900e+02
-9 13554     -3.554800e+02 3.787300e+02
-12 13554     -2.451800e+02 6.204800e+02
-2 13555     4.012000e+01 3.584500e+02
-3 13555     -1.068000e+02 2.346002e+01
-5 13555     7.934200e+02 -4.542999e+01
-6 13555     -7.640002e+01 7.097400e+02
-8 13555     1.141900e+02 2.823900e+02
-9 13555     -1.212500e+02 3.867200e+02
-11 13555     4.940300e+02 -1.685300e+02
-13 13555     4.972800e+02 2.693800e+02
-14 13555     6.886600e+02 -1.263800e+02
-2 13556     2.897998e+01 3.568600e+02
-5 13556     7.785900e+02 -4.834998e+01
-6 13556     -9.150000e+01 7.043600e+02
-9 13556     -1.314500e+02 3.843000e+02
-11 13556     4.801700e+02 -1.716900e+02
-2 13557     -5.323999e+01 3.482000e+02
-13 13557     4.077700e+02 2.535600e+02
-2 13558     -5.323999e+01 3.482000e+02
-11 13558     3.917500e+02 -1.834500e+02
-13 13558     4.077700e+02 2.535600e+02
-2 13559     7.981000e+01 3.473700e+02
-6 13559     -2.410999e+01 7.053600e+02
-8 13559     1.477300e+02 2.741100e+02
-9 13559     -8.653003e+01 3.782900e+02
-11 13559     5.403800e+02 -1.749200e+02
-13 13559     5.368199e+02 2.633900e+02
-14 13559     7.380200e+02 -1.346000e+02
-2 13560     1.173500e+02 3.446700e+02
-3 13560     -3.437000e+01 1.007001e+01
-6 13560     2.158002e+01 7.115100e+02
-8 13560     1.784800e+02 2.730500e+02
-9 13560     -5.534003e+01 3.774300e+02
-13 13560     5.729200e+02 2.645400e+02
-14 13560     7.823800e+02 -1.342000e+02
-2 13561     1.173500e+02 3.446700e+02
-3 13561     -3.437000e+01 1.007001e+01
-6 13561     2.158002e+01 7.115100e+02
-8 13561     1.784800e+02 2.730500e+02
-9 13561     -5.534003e+01 3.774300e+02
-13 13561     5.729200e+02 2.645400e+02
-14 13561     7.823800e+02 -1.342000e+02
-2 13562     1.217500e+02 3.431300e+02
-6 13562     2.753003e+01 7.104000e+02
-8 13562     1.820700e+02 2.717600e+02
-9 13562     -5.135999e+01 3.761400e+02
-13 13562     5.769700e+02 2.632800e+02
-14 13562     7.877400e+02 -1.356200e+02
-2 13563     -7.446997e+01 3.414200e+02
-3 13563     -2.149400e+02 7.460022e+00
-4 13563     4.390997e+01 -5.275400e+02
-6 13563     -2.191200e+02 6.649400e+02
-9 13563     -2.182800e+02 3.691000e+02
-13 13563     3.876400e+02 2.470200e+02
-14 13563     5.545300e+02 -1.497400e+02
-2 13564     1.136200e+02 3.411300e+02
-6 13564     1.684998e+01 7.062200e+02
-8 13564     1.759200e+02 2.700100e+02
-9 13564     -5.885999e+01 3.740200e+02
-2 13565     -4.369800e+02 3.381300e+02
-11 13565     1.263000e+01 -2.108000e+02
-2 13566     -7.082900e+02 3.355000e+02
-13 13566     -1.379200e+02 2.006400e+02
-2 13567     5.774600e+02 3.350900e+02
-3 13567     4.287000e+02 1.313000e+01
-7 13567     5.221801e+02 5.010300e+02
-10 13567     7.175900e+02 5.866200e+02
-2 13568     4.875500e+02 3.285200e+02
-3 13568     3.437900e+02 5.320007e+00
-8 13568     4.623700e+02 2.408300e+02
-10 13568     6.191600e+02 6.112900e+02
-12 13568     4.939100e+02 5.307300e+02
-13 13568     8.158900e+02 1.006600e+02
-2 13569     8.600000e+01 3.273300e+02
-6 13569     -1.771997e+01 6.825300e+02
-8 13569     1.524600e+02 2.583600e+02
-9 13569     -8.134003e+01 3.609500e+02
-11 13569     5.452300e+02 -1.911200e+02
-13 13569     5.398000e+02 2.477100e+02
-14 13569     7.425400e+02 -1.534900e+02
-2 13570     6.638000e+01 3.218400e+02
-5 13570     8.227500e+02 -8.009003e+01
-6 13570     -4.253998e+01 6.722200e+02
-8 13570     1.361800e+02 2.535700e+02
-2 13571     5.076001e+01 3.185900e+02
-8 13571     1.228700e+02 2.513500e+02
-13 13571     5.046500e+02 2.375500e+02
-14 13571     6.992300e+02 -1.647400e+02
-2 13572     3.504999e+01 3.154400e+02
-5 13572     7.831200e+02 -8.877002e+01
-9 13572     -1.237800e+02 3.491100e+02
-2 13573     3.951000e+02 3.116200e+02
-3 13573     2.504900e+02 -1.392999e+01
-6 13573     3.167400e+02 5.496200e+02
-8 13573     3.903600e+02 2.322100e+02
-9 13573     1.928101e+02 3.582900e+02
-13 13573     7.545300e+02 1.287700e+02
-2 13574     6.313101e+02 3.032600e+02
-3 13574     4.813400e+02 -1.300000e+01
-7 13574     5.661801e+02 4.580100e+02
-2 13575     -1.362700e+02 3.024800e+02
-11 13575     3.024200e+02 -2.244700e+02
-14 13575     4.812500e+02 -1.908800e+02
-2 13576     1.140900e+02 3.009200e+02
-6 13576     1.698999e+01 6.571500e+02
-8 13576     1.757500e+02 2.378500e+02
-9 13576     -5.804999e+01 3.389300e+02
-12 13576     1.767100e+02 6.083600e+02
-13 13576     5.657800e+02 2.281700e+02
-14 13576     7.756899e+02 -1.780600e+02
-2 13577     5.646500e+02 3.009500e+02
-7 13577     5.060900e+02 4.703100e+02
-9 13577     3.396200e+02 3.549700e+02
-10 13577     6.948199e+02 5.497800e+02
-2 13578     3.092500e+02 2.929100e+02
-8 13578     3.209200e+02 2.192200e+02
-9 13578     1.192500e+02 3.392400e+02
-12 13578     3.253400e+02 5.306700e+02
-2 13579     -3.919500e+02 2.914700e+02
-3 13579     -5.187700e+02 -3.922998e+01
-5 13579     3.033900e+02 -1.220400e+02
-11 13579     5.312000e+01 -2.431600e+02
-2 13580     3.548800e+02 2.870500e+02
-3 13580     2.120200e+02 -3.889001e+01
-6 13580     2.700900e+02 5.268400e+02
-8 13580     3.573500e+02 2.133900e+02
-9 13580     1.584500e+02 3.360800e+02
-12 13580     3.728800e+02 5.199700e+02
-2 13581     4.247100e+02 2.836200e+02
-6 13581     3.375200e+02 4.815800e+02
-7 13581     3.803400e+02 4.838000e+02
-9 13581     2.208600e+02 3.355600e+02
-13 13581     7.562800e+02 7.601001e+01
-2 13582     3.451500e+02 2.824200e+02
-8 13582     3.497300e+02 2.096300e+02
-9 13582     1.505000e+02 3.313700e+02
-2 13583     -2.427500e+02 2.818400e+02
-3 13583     -3.749200e+02 -5.163000e+01
-6 13583     -4.209100e+02 5.559900e+02
-8 13583     -1.197100e+02 2.159700e+02
-9 13583     -3.580100e+02 3.105700e+02
-11 13583     1.941600e+02 -2.461500e+02
-12 13583     -2.495000e+02 5.383000e+02
-13 13583     2.328199e+02 1.885000e+02
-14 13583     3.659800e+02 -2.150700e+02
-2 13584     -2.711500e+02 2.729500e+02
-3 13584     -4.021100e+02 -5.917999e+01
-5 13584     4.271200e+02 -1.362000e+02
-8 13584     -1.435400e+02 2.100700e+02
-13 13584     2.077800e+02 1.814100e+02
-14 13584     3.347800e+02 -2.222300e+02
-2 13585     -1.516100e+02 2.729700e+02
-3 13585     -2.864300e+02 -5.944000e+01
-8 13585     -4.638000e+01 2.100600e+02
-9 13585     -2.792700e+02 3.064800e+02
-2 13586     -5.867500e+02 2.721900e+02
-7 13586     -5.322300e+02 5.465900e+02
-2 13587     -2.537000e+02 2.709600e+02
-6 13587     -4.342100e+02 5.415000e+02
-2 13588     3.650400e+02 2.704000e+02
-3 13588     2.226200e+02 -5.479999e+01
-6 13588     2.810400e+02 5.066800e+02
-7 13588     3.573600e+02 5.091100e+02
-9 13588     1.681700e+02 3.217700e+02
-12 13588     3.835800e+02 5.003300e+02
-13 13588     7.242500e+02 1.004700e+02
-2 13589     -1.448400e+02 2.640600e+02
-8 13589     -4.085999e+01 2.031300e+02
-9 13589     -2.721600e+02 2.992200e+02
-2 13590     -2.387300e+02 2.636900e+02
-13 13590     2.356400e+02 1.759200e+02
-14 13590     3.691700e+02 -2.304200e+02
-2 13591     -1.581700e+02 2.605500e+02
-3 13591     -2.930500e+02 -7.227002e+01
-8 13591     -5.165997e+01 2.008500e+02
-9 13591     -2.845800e+02 2.956400e+02
-2 13592     3.584301e+02 2.525300e+02
-7 13592     3.499200e+02 4.933100e+02
-9 13592     1.625100e+02 3.063200e+02
-2 13593     6.152200e+02 2.522200e+02
-3 13593     4.684800e+02 -6.277002e+01
-6 13593     5.491300e+02 4.202400e+02
-8 13593     5.670100e+02 1.752800e+02
-9 13593     3.835100e+02 3.148000e+02
-2 13594     4.504301e+02 2.499000e+02
-6 13594     3.642900e+02 4.412300e+02
-7 13594     4.002500e+02 4.454400e+02
-8 13594     4.315601e+02 1.777500e+02
-9 13594     2.433600e+02 3.079600e+02
-10 13594     5.643600e+02 5.319200e+02
-2 13595     4.491100e+02 2.457600e+02
-6 13595     3.620900e+02 4.365200e+02
-2 13596     -3.739700e+02 2.396300e+02
-12 13596     -3.988100e+02 4.755800e+02
-2 13597     2.948700e+02 2.339300e+02
-9 13597     1.088000e+02 2.877800e+02
-12 13597     3.100699e+02 4.677800e+02
-13 13597     6.612800e+02 8.444000e+01
-2 13598     5.636000e+02 2.329900e+02
-6 13598     4.903101e+02 4.065100e+02
-9 13598     3.405601e+02 2.973200e+02
-2 13599     5.636000e+02 2.329900e+02
-6 13599     4.903101e+02 4.065100e+02
-8 13599     5.236899e+02 1.608600e+02
-12 13599     5.716700e+02 4.162400e+02
-2 13600     5.767700e+02 2.302500e+02
-7 13600     5.084500e+02 3.998700e+02
-9 13600     3.508800e+02 2.948200e+02
-10 13600     6.899399e+02 4.617300e+02
-2 13601     -4.492500e+02 2.276400e+02
-11 13601     -1.500000e+00 -2.909600e+02
-2 13602     -6.855800e+02 2.263900e+02
-5 13602     1.377002e+01 -1.788700e+02
-8 13602     -4.828200e+02 1.639200e+02
-11 13602     -2.029100e+02 -2.930100e+02
-12 13602     -7.519000e+02 4.180700e+02
-14 13602     -7.003998e+01 -2.718600e+02
-2 13603     4.377002e+01 2.241500e+02
-14 13603     6.844600e+02 -2.574400e+02
-2 13604     4.398800e+02 2.242200e+02
-3 13604     3.010900e+02 -9.576001e+01
-6 13604     3.524400e+02 4.141600e+02
-7 13604     3.882200e+02 4.251500e+02
-9 13604     2.354301e+02 2.859500e+02
-10 13604     5.499000e+02 5.060500e+02
-13 13604     7.624100e+02 2.459998e+01
-15 13604     7.377200e+02 5.778600e+02
-2 13605     -1.598500e+02 2.232100e+02
-3 13605     -2.963800e+02 -1.108700e+02
-5 13605     5.431600e+02 -1.840100e+02
-6 13605     -3.171500e+02 5.057000e+02
-8 13605     -5.173999e+01 1.709600e+02
-13 13605     3.021300e+02 1.490500e+02
-14 13605     4.510100e+02 -2.658700e+02
-2 13606     6.363101e+02 2.173600e+02
-3 13606     4.904000e+02 -9.508002e+01
-6 13606     5.707200e+02 3.793100e+02
-9 13606     4.019900e+02 2.863100e+02
-2 13607     7.279800e+02 2.152100e+02
-7 13607     6.425601e+02 3.496700e+02
-9 13607     4.782900e+02 2.871900e+02
-2 13608     -5.931100e+02 2.118200e+02
-5 13608     9.835999e+01 -1.925300e+02
-8 13608     -4.070800e+02 1.541300e+02
-2 13609     6.373900e+02 2.073100e+02
-3 13609     4.921100e+02 -1.049000e+02
-6 13609     5.707700e+02 3.659800e+02
-8 13609     5.852200e+02 1.375500e+02
-2 13610     -1.902300e+02 2.050500e+02
-4 13610     -2.142999e+01 -4.214600e+02
-5 13610     5.080400e+02 -1.997200e+02
-6 13610     -3.530600e+02 4.800100e+02
-7 13610     -1.185500e+02 5.289400e+02
-8 13610     -7.637000e+01 1.563300e+02
-12 13610     -1.830700e+02 4.662000e+02
-13 13610     2.735200e+02 1.340500e+02
-14 13610     4.164100e+02 -2.829800e+02
-2 13611     6.234000e+02 2.029900e+02
-3 13611     4.783900e+02 -1.097500e+02
-8 13611     5.729000e+02 1.344500e+02
-9 13611     3.912400e+02 2.737000e+02
-12 13611     6.348400e+02 3.753700e+02
-2 13612     6.540500e+02 2.006900e+02
-3 13612     5.081801e+02 -1.108200e+02
-8 13612     5.990699e+02 1.316100e+02
-9 13612     4.172000e+02 2.728500e+02
-2 13613     -7.096100e+02 1.991600e+02
-11 13613     -2.225500e+02 -3.110400e+02
-2 13614     3.266000e+02 1.969500e+02
-7 13614     3.187900e+02 4.475600e+02
-13 13614     6.840200e+02 4.817999e+01
-2 13615     -5.216100e+02 1.965200e+02
-12 13615     -5.629200e+02 4.118400e+02
-2 13616     -5.216100e+02 1.965200e+02
-8 13616     -3.478000e+02 1.439500e+02
-11 13616     -6.595001e+01 -3.110900e+02
-12 13616     -5.629200e+02 4.118400e+02
-2 13617     6.217400e+02 1.953900e+02
-8 13617     5.718500e+02 1.277700e+02
-9 13617     3.902500e+02 2.669600e+02
-10 13617     7.289301e+02 4.057900e+02
-12 13617     6.324301e+02 3.672900e+02
-2 13618     4.216300e+02 1.876000e+02
-3 13618     2.857700e+02 -1.326000e+02
-8 13618     4.080100e+02 1.263900e+02
-9 13618     2.218400e+02 2.526600e+02
-12 13618     4.214700e+02 3.823400e+02
-2 13619     -6.125700e+02 1.855400e+02
-14 13619     -7.580017e+00 -3.060600e+02
-2 13620     -9.950000e+01 1.857700e+02
-7 13620     -2.215997e+01 5.199000e+02
-8 13620     -1.729980e+00 1.425900e+02
-11 13620     3.374900e+02 -3.159000e+02
-2 13621     6.787000e+02 1.822500e+02
-10 13621     7.867400e+02 3.685200e+02
-2 13622     -3.075300e+02 1.767000e+02
-7 13622     -2.394700e+02 4.911300e+02
-2 13623     8.189900e+02 1.748000e+02
-3 13623     6.655000e+02 -1.294400e+02
-7 13623     7.195900e+02 2.894400e+02
-9 13623     5.539900e+02 2.558700e+02
-2 13624     6.970300e+02 1.725300e+02
-3 13624     5.507200e+02 -1.358500e+02
-9 13624     4.536100e+02 2.505000e+02
-2 13625     6.297700e+02 1.696000e+02
-3 13625     4.865000e+02 -1.412500e+02
-6 13625     5.605601e+02 3.276700e+02
-8 13625     5.781100e+02 1.063800e+02
-9 13625     3.972800e+02 2.457600e+02
-12 13625     6.400000e+02 3.379000e+02
-2 13626     1.844100e+02 1.619400e+02
-3 13626     8.031000e+01 -1.568700e+02
-2 13627     5.037300e+02 1.608900e+02
-6 13627     4.210800e+02 3.341800e+02
-9 13627     2.910400e+02 2.341100e+02
-12 13627     5.056700e+02 3.432500e+02
-2 13628     -3.201400e+02 1.588900e+02
-5 13628     3.645500e+02 -2.422200e+02
-6 13628     -5.051100e+02 4.002300e+02
-7 13628     -2.512900e+02 4.761900e+02
-8 13628     -1.833400e+02 1.177800e+02
-2 13629     7.180400e+02 1.590700e+02
-7 13629     6.258300e+02 3.001100e+02
-2 13630     -6.611700e+02 1.576400e+02
-5 13630     2.915002e+01 -2.377500e+02
-7 13630     -5.935100e+02 4.398900e+02
-10 13630     -5.904900e+02 6.040400e+02
-2 13631     5.225100e+02 1.573300e+02
-3 13631     3.836000e+02 -1.562700e+02
-9 13631     3.067800e+02 2.310200e+02
-12 13631     5.237100e+02 3.376000e+02
-2 13632     -2.698300e+02 1.551700e+02
-5 13632     4.156500e+02 -2.458700e+02
-6 13632     -4.450600e+02 4.070500e+02
-8 13632     -1.429100e+02 1.150100e+02
-9 13632     -3.760300e+02 1.991800e+02
-2 13633     -5.893300e+02 1.472000e+02
-8 13633     -4.029700e+02 1.035500e+02
-12 13633     -6.336200e+02 3.514600e+02
-2 13634     -3.744600e+02 1.446800e+02
-7 13634     -3.079900e+02 4.577500e+02
-2 13635     3.239700e+02 1.433300e+02
-6 13635     1.663800e+02 1.819700e+02
-8 13635     3.037300e+02 7.354999e+01
-12 13635     2.018400e+02 2.276300e+02
-13 13635     5.516801e+02 -1.288600e+02
-2 13636     -6.567500e+02 1.424000e+02
-10 13636     -5.845700e+02 5.889700e+02
-11 13636     -1.826600e+02 -3.497900e+02
-2 13637     -6.273000e+02 1.424900e+02
-7 13637     -5.596200e+02 4.306900e+02
-10 13637     -5.507800e+02 5.908100e+02
-2 13638     -6.273000e+02 1.424900e+02
-10 13638     -5.507800e+02 5.908100e+02
-2 13639     5.507600e+02 1.426400e+02
-8 13639     5.121801e+02 8.770999e+01
-12 13639     5.539000e+02 3.197800e+02
-2 13640     5.507600e+02 1.426400e+02
-6 13640     4.716100e+02 3.100700e+02
-12 13640     5.539000e+02 3.197800e+02
-2 13641     3.302500e+02 1.402900e+02
-3 13641     2.214100e+02 -1.729400e+02
-8 13641     3.088900e+02 7.101001e+01
-2 13642     -3.012900e+02 1.396700e+02
-5 13642     3.800200e+02 -2.638600e+02
-6 13642     -4.802900e+02 3.781400e+02
-9 13642     -4.003900e+02 1.851000e+02
-2 13643     6.428101e+02 1.391600e+02
-3 13643     5.059399e+02 -1.712800e+02
-8 13643     5.924600e+02 7.964999e+01
-9 13643     4.092200e+02 2.202700e+02
-10 13643     7.375500e+02 3.344200e+02
-12 13643     6.575699e+02 3.007500e+02
-2 13644     -7.256200e+02 1.387700e+02
-10 13644     -6.615100e+02 5.804100e+02
-11 13644     -2.372500e+02 -3.522500e+02
-12 13644     -7.840600e+02 3.254600e+02
-2 13645     7.711899e+02 1.347300e+02
-7 13645     6.693800e+02 2.640200e+02
-9 13645     5.157000e+02 2.214500e+02
-2 13646     3.189100e+02 1.327300e+02
-8 13646     2.974300e+02 6.300000e+01
-2 13647     -5.625500e+02 1.280400e+02
-8 13647     -3.815900e+02 8.831000e+01
-2 13648     -1.938200e+02 1.272600e+02
-13 13648     2.662600e+02 7.578998e+01
-14 13648     4.069301e+02 -3.556800e+02
-2 13649     3.745001e+01 1.268900e+02
-3 13649     -5.687000e+01 -1.922600e+02
-8 13649     6.903003e+01 6.344000e+01
-2 13650     -6.383200e+02 1.231000e+02
-7 13650     -5.683000e+02 4.129200e+02
-10 13650     -5.614400e+02 5.717000e+02
-11 13650     -1.683700e+02 -3.639500e+02
-2 13651     5.915100e+02 1.220700e+02
-9 13651     3.659000e+02 2.043900e+02
-10 13651     6.806400e+02 3.360900e+02
-2 13652     -2.599800e+02 1.191500e+02
-11 13652     1.728900e+02 -3.692400e+02
-2 13653     1.921500e+02 1.177800e+02
-3 13653     9.596997e+01 -1.959800e+02
-8 13653     1.909700e+02 5.123999e+01
-9 13653     4.653998e+01 1.911200e+02
-2 13654     -7.143200e+02 1.168400e+02
-4 13654     -1.728998e+01 -1.071700e+02
-7 13654     -6.405800e+02 4.000400e+02
-10 13654     -6.545400e+02 5.612900e+02
-2 13655     2.085999e+01 1.159300e+02
-8 13655     5.581000e+01 5.491000e+01
-2 13656     -2.780600e+02 1.149000e+02
-9 13656     -3.812100e+02 1.640900e+02
-11 13656     1.552600e+02 -3.724200e+02
-2 13657     -7.633002e+01 1.093400e+02
-6 13657     -2.173700e+02 3.675900e+02
-9 13657     -2.074800e+02 1.671700e+02
-10 13657     8.734003e+01 5.677400e+02
-12 13657     -6.440997e+01 3.641500e+02
-13 13657     3.529800e+02 4.903003e+01
-14 13657     5.159900e+02 -3.931400e+02
-2 13658     -6.252800e+02 1.088500e+02
-5 13658     5.650000e+01 -2.777200e+02
-7 13658     -5.552300e+02 4.041400e+02
-11 13658     -1.584200e+02 -3.735800e+02
-2 13659     5.384500e+02 1.051400e+02
-3 13659     4.013000e+02 -2.064500e+02
-6 13659     4.568199e+02 2.710100e+02
-8 13659     5.012000e+02 5.703000e+01
-9 13659     3.219600e+02 1.886400e+02
-10 13659     6.239399e+02 3.387600e+02
-13 13659     8.343800e+02 -9.488000e+01
-2 13660     2.496600e+02 1.047100e+02
-3 13660     1.504700e+02 -2.079400e+02
-4 13660     -2.512900e+02 -5.048300e+02
-8 13660     2.369300e+02 3.884000e+01
-9 13660     9.448999e+01 1.810900e+02
-13 13660     4.686400e+02 -1.679300e+02
-2 13661     4.301300e+02 1.037700e+02
-7 13661     3.694200e+02 3.165500e+02
-10 13661     5.189399e+02 3.782900e+02
-13 13661     7.409600e+02 -6.970001e+01
-15 13661     7.037400e+02 4.251800e+02
-2 13662     5.748101e+02 1.032800e+02
-8 13662     5.310800e+02 5.414999e+01
-2 13663     8.257001e+01 1.025000e+02
-3 13663     -9.000000e+00 -2.142900e+02
-6 13663     -9.664001e+01 1.208000e+02
-8 13663     1.023900e+02 4.045999e+01
-12 13663     -7.121002e+01 1.753500e+02
-13 13663     3.461300e+02 -1.402800e+02
-2 13664     7.027600e+02 1.010800e+02
-7 13664     6.038300e+02 2.499200e+02
-10 13664     7.914500e+02 2.687800e+02
-2 13665     3.595500e+02 9.857001e+01
-13 13665     5.689500e+02 -1.765700e+02
-2 13666     1.523100e+02 9.558002e+01
-5 13666     6.685100e+02 -5.913600e+02
-12 13666     -6.489990e+00 1.590200e+02
-2 13667     -2.996400e+02 9.384003e+01
-5 13667     3.778000e+02 -3.014600e+02
-7 13667     -2.299400e+02 4.213300e+02
-8 13667     -1.666400e+02 6.598999e+01
-10 13667     -1.566900e+02 5.663200e+02
-2 13668     7.827002e+01 9.032001e+01
-7 13668     -1.202500e+02 1.953300e+02
-8 13668     9.828003e+01 3.051999e+01
-2 13669     1.064900e+02 8.745001e+01
-3 13669     1.596997e+01 -2.281600e+02
-4 13669     -2.222800e+02 -4.117400e+02
-7 13669     -1.001800e+02 1.862900e+02
-8 13669     1.205100e+02 2.676999e+01
-9 13669     -2.345001e+01 1.610100e+02
-10 13669     -1.000200e+02 2.281800e+02
-12 13669     -5.169000e+01 1.535000e+02
-13 13669     3.590400e+02 -1.591200e+02
-2 13670     -1.364400e+02 8.521002e+01
-4 13670     -9.777002e+01 -4.263800e+02
-5 13670     5.362000e+02 -3.368600e+02
-11 13670     2.597200e+02 -4.182800e+02
-12 13670     -1.338800e+02 3.312800e+02
-13 13670     2.989500e+02 2.773999e+01
-14 13670     4.485000e+02 -4.179200e+02
-2 13671     -2.745100e+02 8.244000e+01
-13 13671     1.934800e+02 3.850000e+01
-14 13671     3.161300e+02 -3.988500e+02
-2 13672     6.315699e+02 8.101001e+01
-9 13672     4.009000e+02 1.709400e+02
-12 13672     6.369700e+02 2.410900e+02
-2 13673     6.315699e+02 8.101001e+01
-9 13673     4.009000e+02 1.709400e+02
-12 13673     6.369700e+02 2.410900e+02
-2 13674     3.007300e+02 7.806000e+01
-13 13674     5.060601e+02 -1.967100e+02
-2 13675     -3.125200e+02 7.615997e+01
-5 13675     3.614700e+02 -3.173500e+02
-6 13675     -4.907700e+02 3.099500e+02
-8 13675     -1.779200e+02 5.239001e+01
-2 13676     -5.870300e+02 7.073999e+01
-8 13676     -4.009400e+02 4.420999e+01
-2 13677     4.114301e+02 7.053998e+01
-3 13677     2.997800e+02 -2.369000e+02
-8 13677     3.755100e+02 1.310001e+01
-2 13678     5.650024e+00 6.558002e+01
-5 13678     5.317100e+02 -5.688800e+02
-6 13678     -1.753700e+02 9.026001e+01
-8 13678     4.084998e+01 1.264999e+01
-9 13678     -1.093100e+02 1.389300e+02
-2 13679     -6.270600e+02 6.437000e+01
-7 13679     -5.523100e+02 3.651800e+02
-8 13679     -4.346700e+02 3.810001e+01
-10 13679     -5.433200e+02 5.152200e+02
-11 13679     -1.629100e+02 -4.054300e+02
-14 13679     -3.177002e+01 -4.093600e+02
-2 13680     -5.784200e+02 6.215002e+01
-13 13680     -4.881000e+01 1.829999e+01
-2 13681     -5.784200e+02 6.215002e+01
-13 13681     -4.881000e+01 1.829999e+01
-2 13682     -5.563900e+02 5.769000e+01
-7 13682     -4.830300e+02 3.669300e+02
-8 13682     -3.762200e+02 3.500000e+01
-11 13682     -1.032300e+02 -4.137600e+02
-13 13682     -3.250000e+01 1.550000e+01
-14 13682     3.471997e+01 -4.152900e+02
-15 13682     -4.496100e+02 5.656400e+02
-2 13683     -3.589300e+02 5.804999e+01
-10 13683     -2.283200e+02 5.281000e+02
-2 13684     -6.028200e+02 5.742999e+01
-11 13684     -1.417800e+02 -4.104700e+02
-15 13684     -5.092200e+02 5.556900e+02
-2 13685     -3.646200e+02 5.631000e+01
-6 13685     -5.509200e+02 2.784000e+02
-7 13685     -2.947500e+02 3.837600e+02
-11 13685     6.929999e+01 -4.160600e+02
-2 13686     -1.551400e+02 5.652002e+01
-4 13686     -1.132900e+02 -4.023700e+02
-9 13686     -2.696800e+02 1.193700e+02
-2 13687     3.786000e+02 5.501001e+01
-3 13687     2.727900e+02 -2.523400e+02
-2 13688     2.365000e+02 5.376001e+01
-15 13688     7.467999e+01 1.546000e+02
-2 13689     6.465699e+02 5.433002e+01
-3 13689     5.080900e+02 -2.511700e+02
-6 13689     5.721600e+02 2.024000e+02
-8 13689     5.896899e+02 1.119000e+01
-9 13689     4.134900e+02 1.494000e+02
-12 13689     6.511700e+02 2.120200e+02
-2 13690     7.351200e+02 4.596997e+01
-9 13690     4.878800e+02 1.459100e+02
-10 13690     8.111200e+02 1.962400e+02
-12 13690     7.456600e+02 1.911100e+02
-2 13691     -1.412200e+02 4.458002e+01
-8 13691     -4.370001e+01 2.426001e+01
-9 13691     -2.574400e+02 1.093600e+02
-2 13692     6.762300e+02 4.441998e+01
-3 13692     5.387100e+02 -2.592100e+02
-7 13692     5.739800e+02 2.051600e+02
-9 13692     4.393700e+02 1.415800e+02
-10 13692     7.510400e+02 2.184900e+02
-12 13692     6.827700e+02 1.967500e+02
-2 13693     1.574200e+02 4.329999e+01
-8 13693     1.593800e+02 -1.170001e+01
-12 13693     -7.750000e+00 9.619000e+01
-2 13694     2.906600e+02 4.192999e+01
-7 13694     4.569000e+01 1.166000e+02
-2 13695     6.431300e+02 4.184003e+01
-3 13695     5.067100e+02 -2.637200e+02
-6 13695     5.686300e+02 1.899900e+02
-7 13695     5.444000e+02 2.118400e+02
-8 13695     5.872000e+02 1.459991e+00
-12 13695     6.476000e+02 1.994800e+02
-2 13696     -3.951400e+02 4.021997e+01
-13 13696     9.221997e+01 7.250000e+00
-14 13696     1.888900e+02 -4.333700e+02
-2 13697     7.395400e+02 3.670001e+01
-3 13697     5.990601e+02 -2.636700e+02
-9 13697     4.905699e+02 1.387700e+02
-2 13698     1.324900e+02 3.241998e+01
-6 13698     -4.891998e+01 3.109998e+01
-2 13699     -1.242999e+01 2.659003e+01
-8 13699     2.669000e+01 -1.916000e+01
-2 13700     6.698400e+02 2.598999e+01
-10 13700     7.395900e+02 2.035400e+02
-2 13701     1.726600e+02 2.228998e+01
-9 13701     3.552002e+01 1.104700e+02
-10 13701     -6.766998e+01 1.351100e+02
-15 13701     -4.950012e+00 1.309000e+02
-2 13702     4.172800e+02 2.151001e+01
-8 13702     3.784400e+02 -2.831000e+01
-2 13703     6.711899e+02 1.803998e+01
-3 13703     5.358700e+02 -2.847700e+02
-7 13703     5.663400e+02 1.844400e+02
-9 13703     4.358500e+02 1.207100e+02
-2 13704     7.193300e+02 1.814001e+01
-3 13704     5.817500e+02 -2.834300e+02
-10 13704     7.884399e+02 1.742900e+02
-2 13705     7.193300e+02 1.814001e+01
-3 13705     5.817500e+02 -2.834300e+02
-10 13705     7.884399e+02 1.742900e+02
-12 13705     7.277000e+02 1.639000e+02
-2 13706     -4.479000e+02 1.571997e+01
-13 13706     4.926001e+01 -1.265002e+01
-15 13706     -3.017300e+02 5.221500e+02
-2 13707     7.374700e+02 6.200012e+00
-9 13707     4.909500e+02 1.132700e+02
-10 13707     8.047900e+02 1.547200e+02
-2 13708     8.404999e+01 2.940002e+00
-8 13708     9.983002e+01 -4.260999e+01
-2 13709     5.998400e+02 -7.899780e-01
-8 13709     5.508000e+02 -3.173001e+01
-10 13709     6.638400e+02 2.057100e+02
-2 13710     4.421002e+01 -1.539978e+00
-3 13710     -4.147998e+01 -3.141800e+02
-9 13710     -7.226001e+01 8.541000e+01
-2 13711     3.288700e+02 -1.400024e+00
-6 13711     1.564900e+02 -2.770020e+00
-8 13711     2.995100e+02 -4.970999e+01
-13 13711     5.146801e+02 -2.640800e+02
-2 13712     -5.617999e+01 -3.270020e+00
-3 13712     -1.452900e+02 -3.198900e+02
-8 13712     -7.859985e+00 -3.994000e+01
-9 13712     -1.599100e+02 7.825000e+01
-2 13713     2.142300e+02 -8.030029e+00
-10 13713     -3.764001e+01 9.335999e+01
-2 13714     -1.630100e+02 -1.345001e+01
-8 13714     -8.895001e+01 -4.357999e+01
-2 13715     7.239100e+02 -1.415997e+01
-7 13715     6.070300e+02 1.434300e+02
-10 13715     7.866200e+02 1.392800e+02
-2 13716     -6.640997e+01 -1.550000e+01
-3 13716     -1.542700e+02 -3.325900e+02
-4 13716     -2.277600e+02 -3.106300e+02
-8 13716     -1.740002e+01 -5.104999e+01
-2 13717     -6.378003e+01 -1.857001e+01
-3 13717     -1.505200e+02 -3.346900e+02
-2 13718     3.689800e+02 -1.900000e+01
-7 13718     1.175500e+02 6.058002e+01
-2 13719     7.276400e+02 -2.090002e+01
-9 13719     4.833700e+02 8.989999e+01
-12 13719     7.336000e+02 1.221200e+02
-2 13720     1.175800e+02 -2.153998e+01
-6 13720     -6.444000e+01 -2.633002e+01
-2 13721     -5.338000e+01 -2.514001e+01
-8 13721     -7.940002e+00 -5.964001e+01
-2 13722     1.315600e+02 -2.513000e+01
-12 13722     -3.865002e+01 2.346997e+01
-13 13722     3.563800e+02 -2.545900e+02
-15 13722     -5.619000e+01 8.675000e+01
-2 13723     3.552800e+02 -2.577002e+01
-3 13723     2.573700e+02 -3.293200e+02
-2 13724     3.939500e+02 -3.506000e+01
-3 13724     2.927100e+02 -3.369000e+02
-7 13724     1.442300e+02 4.745001e+01
-8 13724     3.544500e+02 -7.796002e+01
-13 13724     5.715800e+02 -2.936600e+02
-15 13724     2.713600e+02 2.726001e+01
-2 13725     -2.003998e+01 -3.590002e+01
-6 13725     -2.033400e+02 -2.103003e+01
-2 13726     7.334700e+02 -3.663000e+01
-9 13726     4.892400e+02 7.715997e+01
-2 13727     7.103500e+02 -4.046002e+01
-10 13727     7.659800e+02 1.190100e+02
-2 13728     7.103500e+02 -4.046002e+01
-9 13728     4.693199e+02 7.325000e+01
-10 13728     7.659800e+02 1.190100e+02
-2 13729     3.773900e+02 -4.294000e+01
-3 13729     2.767400e+02 -3.401400e+02
-6 13729     2.092100e+02 -3.888000e+01
-8 13729     3.399300e+02 -8.391998e+01
-12 13729     2.313300e+02 3.599976e+00
-15 13729     2.405000e+02 1.975000e+01
-2 13730     4.331000e+02 -4.659003e+01
-3 13730     3.298900e+02 -3.476300e+02
-2 13731     7.758500e+02 -5.050000e+01
-9 13731     5.241400e+02 6.715997e+01
-2 13732     -1.534700e+02 -6.123999e+01
-3 13732     -2.386200e+02 -3.791000e+02
-6 13732     -3.380700e+02 -3.462000e+01
-8 13732     -8.701001e+01 -8.644000e+01
-2 13733     -4.459003e+01 -6.192999e+01
-8 13733     -3.369995e+00 -9.148999e+01
-2 13734     7.751801e+02 -6.264001e+01
-3 13734     6.423500e+02 -3.594400e+02
-7 13734     6.450000e+02 8.831000e+01
-9 13734     5.237900e+02 5.700000e+01
-2 13735     -2.707600e+02 -7.272998e+01
-8 13735     -1.566500e+02 -7.437000e+01
-2 13736     5.673999e+01 -7.276001e+01
-6 13736     -1.282500e+02 -7.907001e+01
-12 13736     -1.159900e+02 -2.240997e+01
-2 13737     5.746100e+02 -7.312000e+01
-7 13737     4.744900e+02 1.306600e+02
-8 13737     5.290100e+02 -8.923999e+01
-2 13738     2.866300e+02 -7.445001e+01
-12 13738     1.215400e+02 -3.528003e+01
-2 13739     7.630800e+02 -7.946002e+01
-9 13739     5.141000e+02 4.304999e+01
-2 13740     1.156800e+02 -8.591998e+01
-8 13740     1.209300e+02 -1.173200e+02
-2 13741     7.010010e+00 -9.126001e+01
-3 13741     -7.371997e+01 -4.027200e+02
-2 13742     7.697900e+02 -9.140997e+01
-7 13742     6.363600e+02 6.521997e+01
-10 13742     8.150601e+02 4.247998e+01
-2 13743     7.698800e+02 -9.653003e+01
-9 13743     5.198300e+02 2.878998e+01
-2 13744     -9.221002e+01 -1.032100e+02
-3 13744     -1.717100e+02 -4.166100e+02
-2 13745     -4.749400e+02 -1.051800e+02
-7 13745     -4.416700e+02 1.990800e+02
-8 13745     -3.187800e+02 -9.946002e+01
-2 13746     6.386200e+02 -1.070200e+02
-9 13746     4.119700e+02 1.484003e+01
-12 13746     6.354600e+02 4.682001e+01
-2 13747     4.934200e+02 -1.091500e+02
-6 13747     3.312300e+02 -1.051200e+02
-12 13747     3.564600e+02 -7.017999e+01
-13 13747     6.444700e+02 -3.694800e+02
-2 13748     5.010000e+02 -1.089800e+02
-10 13748     2.588000e+02 -5.577002e+01
-12 13748     3.631600e+02 -7.154999e+01
-15 13748     3.833300e+02 -9.153003e+01
-2 13749     -7.796997e+01 -1.098100e+02
-3 13749     -1.569600e+02 -4.236500e+02
-2 13750     -8.252002e+01 -1.124400e+02
-3 13750     -1.612000e+02 -4.254900e+02
-8 13750     -3.725000e+01 -1.335000e+02
-2 13751     -7.679999e+01 -1.142000e+02
-3 13751     -1.553100e+02 -4.269100e+02
-6 13751     -2.634900e+02 -1.182400e+02
-8 13751     -3.267999e+01 -1.350700e+02
-12 13751     -2.473100e+02 -5.608002e+01
-2 13752     5.127400e+02 -1.142400e+02
-10 13752     2.672700e+02 -6.523999e+01
-12 13752     3.764500e+02 -7.826001e+01
-15 13752     3.931000e+02 -1.028100e+02
-2 13753     -7.987000e+01 -1.178400e+02
-3 13753     -1.574600e+02 -4.307600e+02
-6 13753     -2.659700e+02 -1.221600e+02
-12 13753     -2.493500e+02 -5.982001e+01
-2 13754     8.816998e+01 -1.190500e+02
-3 13754     8.409973e+00 -4.264500e+02
-6 13754     -9.703000e+01 -1.323200e+02
-7 13754     -1.489700e+02 -5.049988e+00
-8 13754     9.734998e+01 -1.427700e+02
-10 13754     -1.728600e+02 1.376001e+01
-12 13754     -9.040002e+01 -7.678998e+01
-13 13754     3.095300e+02 -3.193900e+02
-15 13754     -1.259500e+02 -1.223999e+01
-2 13755     5.131300e+02 -1.190200e+02
-3 13755     4.113900e+02 -4.143300e+02
-2 13756     7.718800e+02 -1.285100e+02
-7 13756     6.329000e+02 3.412000e+01
-9 13756     5.226600e+02 2.979980e+00
-12 13756     7.738400e+02 4.049988e+00
-2 13757     7.884600e+02 -1.375800e+02
-7 13757     6.463101e+02 2.156000e+01
-2 13758     8.201000e+02 -1.418000e+02
-7 13758     6.716899e+02 1.064001e+01
-2 13759     -3.174100e+02 -1.466600e+02
-7 13759     -3.328600e+02 1.395200e+02
-10 13759     -3.190300e+02 2.291000e+02
-2 13760     -3.174100e+02 -1.466600e+02
-3 13760     -4.319800e+02 -4.777400e+02
-5 13760     2.698600e+02 -5.986400e+02
-7 13760     -3.328600e+02 1.395200e+02
-10 13760     -3.190300e+02 2.291000e+02
-2 13761     5.110999e+01 -1.501700e+02
-3 13761     -2.491998e+01 -4.574900e+02
-8 13761     6.579999e+01 -1.691800e+02
-2 13762     -1.614001e+01 -1.504400e+02
-3 13762     -9.192999e+01 -4.598101e+02
-2 13763     -1.645001e+01 -1.558200e+02
-3 13763     -9.210999e+01 -4.659900e+02
-6 13763     -2.027200e+02 -1.687800e+02
-9 13763     -1.129300e+02 -4.615997e+01
-12 13763     -1.949600e+02 -1.082800e+02
-13 13763     2.317700e+02 -3.285500e+02
-2 13764     3.435800e+02 -1.603800e+02
-3 13764     2.571600e+02 -4.576500e+02
-7 13764     5.107001e+01 -8.158002e+01
-8 13764     3.045500e+02 -1.847100e+02
-10 13764     3.915997e+01 -9.807001e+01
-12 13764     1.654000e+02 -1.419700e+02
-15 13764     1.224300e+02 -1.416600e+02
-2 13765     5.066000e+02 -1.603500e+02
-3 13765     4.081200e+02 -4.549900e+02
-9 13765     3.166400e+02 -2.857001e+01
-2 13766     5.114600e+02 -1.606700e+02
-8 13766     4.507500e+02 -1.832100e+02
-9 13766     3.201899e+02 -2.946997e+01
-2 13767     5.114600e+02 -1.606700e+02
-8 13767     4.507500e+02 -1.832100e+02
-9 13767     3.201899e+02 -2.946997e+01
-2 13768     2.460999e+01 -1.617000e+02
-3 13768     -4.903998e+01 -4.690699e+02
-2 13769     3.413101e+02 -1.730800e+02
-3 13769     2.568000e+02 -4.697000e+02
-8 13769     3.007800e+02 -1.958300e+02
-2 13770     1.082500e+02 -1.744300e+02
-6 13770     -8.004001e+01 -2.010200e+02
-7 13770     -1.503400e+02 -6.569000e+01
-8 13770     1.106400e+02 -1.912700e+02
-12 13770     -8.227002e+01 -1.462600e+02
-13 13770     3.095300e+02 -3.714000e+02
-15 13770     -1.381800e+02 -9.457001e+01
-2 13771     3.722300e+02 -1.745200e+02
-3 13771     2.873101e+02 -4.697300e+02
-4 13771     -4.690700e+02 -5.026500e+02
-6 13771     1.870900e+02 -2.030800e+02
-8 13771     3.269300e+02 -1.976400e+02
-9 13771     2.107200e+02 -4.357001e+01
-12 13771     1.898500e+02 -1.623600e+02
-2 13772     5.160601e+02 -1.750900e+02
-6 13772     3.580800e+02 -1.596000e+02
-8 13772     4.556200e+02 -1.929500e+02
-9 13772     3.240900e+02 -4.100000e+01
-12 13772     3.873500e+02 -1.289100e+02
-2 13773     1.312700e+02 -1.777100e+02
-10 13773     -1.649600e+02 -6.615002e+01
-12 13773     -6.032001e+01 -1.517000e+02
-2 13774     2.428101e+02 -1.863200e+02
-6 13774     5.440002e+01 -2.174500e+02
-8 13774     2.192700e+02 -2.052500e+02
-12 13774     5.154999e+01 -1.698300e+02
-2 13775     -3.922300e+02 -1.873800e+02
-3 13775     -5.054600e+02 -5.215200e+02
-13 13775     3.637000e+01 -2.164400e+02
-2 13776     -4.620001e+01 -1.942500e+02
-6 13776     -2.293700e+02 -1.955100e+02
-8 13776     -8.229980e+00 -1.999400e+02
-9 13776     -1.378500e+02 -7.998999e+01
-12 13776     -2.136200e+02 -1.354000e+02
-2 13777     2.318000e+02 -1.984600e+02
-6 13777     4.370001e+01 -2.273400e+02
-7 13777     -5.388000e+01 -1.032600e+02
-8 13777     2.099200e+02 -2.138800e+02
-12 13777     4.095001e+01 -1.796600e+02
-2 13778     3.974000e+02 -1.994700e+02
-6 13778     2.166400e+02 -2.185300e+02
-9 13778     2.311600e+02 -6.367999e+01
-12 13778     2.249399e+02 -1.798100e+02
-2 13779     3.974000e+02 -1.994700e+02
-3 13779     3.100500e+02 -4.947600e+02
-6 13779     2.166400e+02 -2.185300e+02
-7 13779     9.957001e+01 -1.157600e+02
-8 13779     3.492400e+02 -2.166200e+02
-9 13779     2.311600e+02 -6.367999e+01
-10 13779     9.378998e+01 -1.404200e+02
-12 13779     2.249399e+02 -1.798100e+02
-2 13780     3.584301e+02 -2.007100e+02
-3 13780     2.750200e+02 -4.965699e+02
-2 13781     3.948101e+02 -2.083600e+02
-3 13781     3.090300e+02 -5.032900e+02
-9 13781     2.304399e+02 -7.073999e+01
-2 13782     -3.128400e+02 -2.101800e+02
-3 13782     -4.198000e+02 -5.417900e+02
-2 13783     3.933101e+02 -2.162300e+02
-3 13783     3.073700e+02 -5.105900e+02
-8 13783     3.460500e+02 -2.303600e+02
-9 13783     2.286899e+02 -7.791998e+01
-2 13784     -5.278200e+02 -2.246200e+02
-7 13784     -5.214000e+02 6.792999e+01
-2 13785     8.221997e+01 -2.243100e+02
-6 13785     -1.036100e+02 -2.414700e+02
-12 13785     -1.014200e+02 -1.865400e+02
-15 13785     -1.523200e+02 -1.259800e+02
-2 13786     3.552500e+02 -2.256800e+02
-6 13786     1.704200e+02 -2.522800e+02
-2 13787     2.650500e+02 -2.265900e+02
-3 13787     1.863000e+02 -5.252200e+02
-7 13787     -2.320001e+01 -1.244800e+02
-9 13787     1.249800e+02 -9.041998e+01
-2 13788     1.313300e+02 -2.268500e+02
-6 13788     -5.609998e+01 -2.473800e+02
-12 13788     -5.596997e+01 -1.950900e+02
-2 13789     4.977200e+02 -2.283700e+02
-3 13789     4.028400e+02 -5.234399e+02
-8 13789     4.390699e+02 -2.371600e+02
-9 13789     3.111700e+02 -8.544000e+01
-2 13790     1.268600e+02 -2.293500e+02
-3 13790     5.141998e+01 -5.336899e+02
-6 13790     -5.973999e+01 -2.489399e+02
-8 13790     1.272500e+02 -2.348100e+02
-9 13790     1.078998e+01 -9.990002e+01
-12 13790     -5.934003e+01 -1.962800e+02
-2 13791     3.506300e+02 -2.308400e+02
-3 13791     2.681400e+02 -5.267200e+02
-2 13792     3.327500e+02 -2.332300e+02
-6 13792     1.489600e+02 -2.535400e+02
-8 13792     2.942300e+02 -2.437500e+02
-2 13793     1.084700e+02 -2.355900e+02
-6 13793     -7.702002e+01 -2.529900e+02
-12 13793     -7.562000e+01 -1.999400e+02
-2 13794     4.945900e+02 -2.352900e+02
-8 13794     4.358700e+02 -2.429200e+02
-2 13795     2.720000e+02 -2.367200e+02
-3 13795     1.928300e+02 -5.355500e+02
-9 13795     1.309600e+02 -9.919000e+01
-2 13796     9.820001e+01 -2.391700e+02
-6 13796     -8.709000e+01 -2.549500e+02
-2 13797     -4.148900e+02 -2.410700e+02
-8 13797     -2.827900e+02 -2.149900e+02
-2 13798     7.264301e+02 -2.437400e+02
-9 13798     4.925300e+02 -9.253003e+01
-15 13798     8.562900e+02 -1.931300e+02
-2 13799     -3.383500e+02 -2.508800e+02
-3 13799     -4.431800e+02 -5.835000e+02
-8 13799     -2.234300e+02 -2.241100e+02
-9 13799     -3.954600e+02 -1.481700e+02
-13 13799     5.591998e+01 -2.821500e+02
-2 13800     -3.980600e+02 -2.515100e+02
-3 13800     -5.069200e+02 -5.872600e+02
-2 13801     -3.980600e+02 -2.515100e+02
-3 13801     -5.069200e+02 -5.872600e+02
-2 13802     5.266100e+02 -2.521300e+02
-6 13802     3.737000e+02 -2.209500e+02
-2 13803     5.224100e+02 -2.522200e+02
-10 13803     3.068600e+02 -1.569400e+02
-2 13804     3.477100e+02 -2.534300e+02
-8 13804     3.062600e+02 -2.606300e+02
-2 13805     4.915500e+02 -2.543000e+02
-6 13805     3.275600e+02 -2.412300e+02
-8 13805     4.327900e+02 -2.589100e+02
-12 13805     3.532700e+02 -2.112100e+02
-2 13806     2.742500e+02 -2.593200e+02
-6 13806     8.948999e+01 -2.768700e+02
-12 13806     9.223999e+01 -2.336000e+02
-2 13807     -3.511300e+02 -2.643100e+02
-3 13807     -4.561400e+02 -5.988900e+02
-4 13807     -2.664500e+02 -1.759900e+02
-7 13807     -4.006200e+02 9.909973e+00
-8 13807     -2.351000e+02 -2.362000e+02
-9 13807     -4.055200e+02 -1.609000e+02
-10 13807     -4.147400e+02 8.092999e+01
-13 13807     4.291998e+01 -2.935500e+02
-2 13808     4.743700e+02 -2.662900e+02
-6 13808     3.030500e+02 -2.651600e+02
-8 13808     4.154500e+02 -2.694100e+02
-2 13809     2.228600e+02 -2.699700e+02
-3 13809     1.459900e+02 -5.710000e+02
-6 13809     3.842999e+01 -2.861000e+02
-9 13809     9.171997e+01 -1.291200e+02
-12 13809     3.897998e+01 -2.404200e+02
-2 13810     3.858800e+02 -2.777100e+02
-3 13810     3.020400e+02 -5.743199e+02
-2 13811     -3.211500e+02 -2.804400e+02
-4 13811     -2.818100e+02 -1.830100e+02
-13 13811     5.856000e+01 -3.121900e+02
-2 13812     9.578998e+01 -2.811500e+02
-6 13812     -8.745001e+01 -2.905100e+02
-2 13813     -3.742600e+02 -2.852300e+02
-7 13813     -4.236400e+02 -1.009003e+01
-9 13813     -4.233100e+02 -1.800700e+02
-13 13813     2.301001e+01 -3.092000e+02
-2 13814     2.826801e+02 -2.903800e+02
-6 13814     9.928003e+01 -3.029399e+02
-2 13815     4.161801e+02 -2.912100e+02
-8 13815     3.656900e+02 -2.900300e+02
-2 13816     -3.104999e+01 -2.925800e+02
-3 13816     -1.082100e+02 -6.059000e+02
-8 13816     2.950012e+00 -2.778900e+02
-9 13816     -1.217300e+02 -1.619400e+02
-2 13817     2.826400e+02 -2.947200e+02
-6 13817     9.937000e+01 -3.067600e+02
-15 13817     5.334003e+01 -2.497900e+02
-2 13818     -2.971997e+01 -2.976400e+02
-3 13818     -1.065200e+02 -6.117800e+02
-8 13818     4.299988e+00 -2.821100e+02
-9 13818     -1.194400e+02 -1.663300e+02
-2 13819     2.881300e+02 -3.009800e+02
-6 13819     1.053500e+02 -3.114900e+02
-12 13819     1.101500e+02 -2.699800e+02
-2 13820     -1.470001e+01 -3.013800e+02
-12 13820     -1.778400e+02 -2.350200e+02
-2 13821     -3.422100e+02 -3.038300e+02
-7 13821     -4.067900e+02 -3.276001e+01
-8 13821     -2.317300e+02 -2.693000e+02
-13 13821     3.883002e+01 -3.303200e+02
-2 13822     -3.422100e+02 -3.038300e+02
-7 13822     -4.067900e+02 -3.276001e+01
-13 13822     3.883002e+01 -3.303200e+02
-2 13823     -3.582100e+02 -3.054700e+02
-13 13823     2.852002e+01 -3.292000e+02
-2 13824     3.398500e+02 -3.057400e+02
-3 13824     2.603000e+02 -6.035699e+02
-9 13824     1.883199e+02 -1.536800e+02
-2 13825     -3.458400e+02 -3.064600e+02
-7 13825     -4.097800e+02 -3.578998e+01
-9 13825     -3.966400e+02 -1.954800e+02
-2 13826     3.910699e+02 -3.067700e+02
-6 13826     2.149400e+02 -3.069301e+02
-8 13826     3.441200e+02 -3.017500e+02
-12 13826     2.273199e+02 -2.713400e+02
-2 13827     -4.151900e+02 -3.114100e+02
-8 13827     -2.887000e+02 -2.746400e+02
-2 13828     3.311500e+02 -3.121800e+02
-6 13828     1.497400e+02 -3.207500e+02
-8 13828     2.930600e+02 -3.057500e+02
-2 13829     -3.980700e+02 -3.139400e+02
-8 13829     -2.756200e+02 -2.768600e+02
-2 13830     8.203998e+01 -3.234800e+02
-8 13830     9.035999e+01 -3.073200e+02
-9 13830     -2.394000e+01 -1.806000e+02
-2 13831     8.203998e+01 -3.234800e+02
-6 13831     -9.960999e+01 -3.286801e+02
-8 13831     9.035999e+01 -3.073200e+02
-2 13832     1.224300e+02 -3.251700e+02
-6 13832     -6.038000e+01 -3.321801e+02
-2 13833     -5.457300e+02 -3.283100e+02
-15 13833     -6.157600e+02 8.349976e+00
-2 13834     3.087800e+02 -3.308600e+02
-6 13834     1.269900e+02 -3.367300e+02
-10 13834     7.070007e+00 -2.197300e+02
-12 13834     1.337000e+02 -2.967700e+02
-13 13834     4.520400e+02 -5.072300e+02
-2 13835     5.931899e+02 -3.323400e+02
-9 13835     3.909399e+02 -1.683100e+02
-2 13836     -3.591600e+02 -3.367400e+02
-7 13836     -4.300500e+02 -6.645001e+01
-2 13837     5.871002e+01 -3.385500e+02
-7 13837     -1.693300e+02 -1.630700e+02
-8 13837     7.265997e+01 -3.176100e+02
-9 13837     -4.297998e+01 -1.948800e+02
-12 13837     -1.112100e+02 -2.812300e+02
-13 13837     2.719301e+02 -4.606400e+02
-15 13837     -1.539500e+02 -2.116100e+02
-2 13838     4.917999e+01 -3.397700e+02
-6 13838     -1.308200e+02 -3.369500e+02
-8 13838     6.609003e+01 -3.190600e+02
-12 13838     -1.194400e+02 -2.815000e+02
-2 13839     8.120001e+01 -3.422500e+02
-8 13839     8.953998e+01 -3.216500e+02
-2 13840     8.120001e+01 -3.422500e+02
-8 13840     8.953998e+01 -3.216500e+02
-2 13841     -4.574900e+02 -3.472400e+02
-13 13841     -4.709998e+01 -3.525100e+02
-2 13842     -3.018600e+02 -3.573300e+02
-6 13842     -4.769900e+02 -3.145500e+02
-8 13842     -2.037100e+02 -3.159500e+02
-2 13843     -4.370200e+02 -3.627700e+02
-15 13843     -5.377600e+02 -6.187000e+01
-2 13844     -4.206200e+02 -3.637600e+02
-13 13844     -2.727002e+01 -3.720700e+02
-2 13845     6.177300e+02 -3.678500e+02
-8 13845     5.408500e+02 -3.525900e+02
-2 13846     5.009600e+02 -3.705500e+02
-8 13846     4.361500e+02 -3.573500e+02
-2 13847     2.125000e+01 -3.753100e+02
-6 13847     -1.575100e+02 -3.701600e+02
-9 13847     -7.212000e+01 -2.278200e+02
-12 13847     -1.462400e+02 -3.120700e+02
-2 13848     3.521899e+02 -3.811200e+02
-8 13848     3.102400e+02 -3.621300e+02
-13 13848     4.814200e+02 -5.522300e+02
-2 13849     -2.882000e+02 -3.866800e+02
-8 13849     -1.952300e+02 -3.411700e+02
-2 13850     2.989301e+02 -3.898100e+02
-7 13850     1.844000e+01 -2.354700e+02
-15 13850     8.196997e+01 -3.334900e+02
-2 13851     -3.475500e+02 -3.911400e+02
-6 13851     -5.234000e+02 -3.599800e+02
-7 13851     -4.382000e+02 -1.231700e+02
-8 13851     -2.425200e+02 -3.436100e+02
-9 13851     -3.882300e+02 -2.656700e+02
-13 13851     1.323999e+01 -4.060100e+02
-2 13852     -2.836600e+02 -3.926200e+02
-6 13852     -4.583300e+02 -3.607900e+02
-8 13852     -1.927500e+02 -3.462300e+02
-2 13853     3.643700e+02 -4.075400e+02
-6 13853     1.818100e+02 -4.146100e+02
-7 13853     5.894000e+01 -2.681100e+02
-12 13853     1.852600e+02 -3.792300e+02
-2 13854     -2.820007e+00 -4.119301e+02
-6 13854     -1.836400e+02 -4.144800e+02
-7 13854     -2.271800e+02 -2.170900e+02
-9 13854     -8.952002e+01 -2.598200e+02
-10 13854     -2.692000e+02 -2.100000e+02
-12 13854     -1.776600e+02 -3.540400e+02
-13 13854     2.167800e+02 -5.045000e+02
-2 13855     3.610200e+02 -4.117000e+02
-6 13855     1.786000e+02 -4.210400e+02
-12 13855     1.818000e+02 -3.859200e+02
-2 13856     -3.406900e+02 -4.172900e+02
-8 13856     -2.394100e+02 -3.663300e+02
-9 13856     -3.798700e+02 -2.871500e+02
-2 13857     1.396997e+01 -4.194600e+02
-6 13857     -1.658500e+02 -4.200400e+02
-12 13857     -1.597100e+02 -3.611500e+02
-2 13858     -2.609985e+00 -4.404500e+02
-7 13858     -2.238800e+02 -2.335300e+02
-9 13858     -8.816998e+01 -2.831500e+02
-12 13858     -1.738100e+02 -3.774400e+02
-13 13858     2.162900e+02 -5.208800e+02
-2 13859     5.822800e+02 -4.481300e+02
-9 13859     3.900000e+02 -2.614600e+02
-2 13860     -3.770000e+02 -4.682500e+02
-6 13860     -5.555100e+02 -4.587300e+02
-7 13860     -4.833300e+02 -1.978900e+02
-8 13860     -2.726300e+02 -4.084600e+02
-9 13860     -4.075600e+02 -3.324300e+02
-13 13860     -2.431000e+01 -4.671100e+02
-2 13861     -2.759000e+02 -4.728400e+02
-13 13861     3.985999e+01 -4.890601e+02
-2 13862     -3.859300e+02 -4.745800e+02
-6 13862     -5.629100e+02 -4.667700e+02
-2 13863     -3.911200e+02 -4.865300e+02
-15 13863     -5.646700e+02 -2.343400e+02
-2 13864     6.271400e+02 -5.167000e+02
-9 13864     4.297900e+02 -3.134900e+02
-2 13865     6.629800e+02 -5.569800e+02
-7 13865     2.867600e+02 -4.315900e+02
-9 13865     4.605000e+02 -3.424400e+02
-10 13865     2.837900e+02 -5.213300e+02
-2 13866     6.733300e+02 -5.580000e+02
-9 13866     4.688101e+02 -3.433300e+02
-12 13866     4.935200e+02 -5.545200e+02
-2 13867     6.751100e+02 -5.773900e+02
-9 13867     4.713900e+02 -3.589400e+02
-2 13868     6.792900e+02 -5.787600e+02
-9 13868     4.746300e+02 -3.586700e+02
-2 13869     -1.163000e+01 -5.871500e+02
-7 13869     -2.594000e+02 -3.587200e+02
-2 13870     3.940699e+02 -5.939800e+02
-12 13870     1.921100e+02 -5.741500e+02
-2 13871     4.051500e+02 -6.013500e+02
-12 13871     2.012100e+02 -5.842600e+02
-2 13872     4.469301e+02 -6.163300e+02
-7 13872     7.940997e+01 -4.555601e+02
-2 13873     -2.901400e+02 5.956100e+02
-4 13873     1.917100e+02 -4.011900e+02
-5 13873     4.374200e+02 1.645200e+02
-13 13873     2.069399e+02 4.291500e+02
-14 13873     3.363199e+02 6.909003e+01
-2 13874     -2.204900e+02 5.952400e+02
-3 13874     -3.487200e+02 2.538100e+02
-4 13874     1.914301e+02 -4.506600e+02
-11 13874     2.226400e+02 -1.270020e+00
-13 13874     2.682500e+02 4.368700e+02
-14 13874     4.088101e+02 7.590002e+01
-2 13875     -4.929999e+01 5.954200e+02
-3 13875     -1.899300e+02 2.519700e+02
-13 13875     4.279900e+02 4.577700e+02
-14 13875     5.975000e+02 9.570001e+01
-2 13876     -2.099100e+02 5.936700e+02
-3 13876     -3.391600e+02 2.525100e+02
-4 13876     1.905400e+02 -4.585100e+02
-13 13876     2.778400e+02 4.370100e+02
-14 13876     4.201300e+02 7.576001e+01
-2 13877     -1.976001e+01 5.905100e+02
-3 13877     -1.619300e+02 2.467200e+02
-5 13877     7.433900e+02 1.838700e+02
-13 13877     4.561700e+02 4.564800e+02
-14 13877     6.313000e+02 9.348999e+01
-2 13878     -3.909973e+00 5.912600e+02
-11 13878     4.467100e+02 1.872998e+01
-13 13878     4.721500e+02 4.591400e+02
-14 13878     6.501500e+02 9.609000e+01
-2 13879     -6.412000e+01 5.891100e+02
-3 13879     -2.029800e+02 2.457700e+02
-5 13879     6.899700e+02 1.775300e+02
-11 13879     3.820100e+02 9.460022e+00
-13 13879     4.131400e+02 4.495400e+02
-14 13879     5.802600e+02 8.653000e+01
-2 13880     -1.932500e+02 5.841200e+02
-4 13880     1.847300e+02 -4.697400e+02
-11 13880     2.505500e+02 -8.090027e+00
-14 13880     4.375000e+02 6.806000e+01
-2 13881     -1.014200e+02 5.714700e+02
-3 13881     -2.386100e+02 2.297100e+02
-5 13881     6.454500e+02 1.572000e+02
-11 13881     3.440200e+02 -6.440002e+00
-14 13881     5.382100e+02 6.716998e+01
-2 13882     -2.899400e+02 5.583500e+02
-4 13882     1.706300e+02 -3.959600e+02
-5 13882     4.338500e+02 1.281200e+02
-8 13882     -1.606100e+02 4.362100e+02
-13 13882     2.048000e+02 3.985500e+02
-14 13882     3.336100e+02 3.409998e+01
-2 13883     -2.899400e+02 5.583500e+02
-5 13883     4.338500e+02 1.281200e+02
-8 13883     -1.606100e+02 4.362100e+02
-13 13883     2.048000e+02 3.985500e+02
-14 13883     3.336100e+02 3.409998e+01
-2 13884     -1.940002e+01 5.530300e+02
-3 13884     -1.625300e+02 2.110100e+02
-5 13884     7.414500e+02 1.476500e+02
-8 13884     6.481000e+01 4.384700e+02
-11 13884     4.314200e+02 -1.366998e+01
-14 13884     6.308500e+02 5.835999e+01
-2 13885     -1.379999e+01 5.532900e+02
-8 13885     6.944000e+01 4.380100e+02
-11 13885     4.375500e+02 -1.222998e+01
-2 13886     -1.379999e+01 5.532900e+02
-5 13886     7.484600e+02 1.484500e+02
-8 13886     6.944000e+01 4.380100e+02
-11 13886     4.375500e+02 -1.222998e+01
-13 13886     4.605800e+02 4.271200e+02
-14 13886     6.376200e+02 5.987000e+01
-2 13887     9.159973e+00 5.533500e+02
-3 13887     -1.355800e+02 2.114000e+02
-5 13887     7.768900e+02 1.508200e+02
-2 13888     9.159973e+00 5.533500e+02
-5 13888     7.768900e+02 1.508200e+02
-8 13888     8.848999e+01 4.386800e+02
-11 13888     4.628500e+02 -9.659973e+00
-14 13888     6.638300e+02 6.216998e+01
-2 13889     -9.626001e+01 5.522800e+02
-4 13889     1.670100e+02 -5.421500e+02
-8 13889     4.699707e-01 4.353200e+02
-13 13889     3.806600e+02 4.162300e+02
-14 13889     5.425601e+02 4.940997e+01
-2 13890     -7.146002e+01 5.514200e+02
-4 13890     1.656700e+02 -5.628800e+02
-5 13890     6.787300e+02 1.406200e+02
-11 13890     3.758800e+02 -2.078998e+01
-13 13890     4.045400e+02 4.188200e+02
-14 13890     5.708199e+02 5.163000e+01
-2 13891     -7.146002e+01 5.514200e+02
-3 13891     -2.105800e+02 2.101400e+02
-8 13891     2.138000e+01 4.344800e+02
-11 13891     3.758800e+02 -2.078998e+01
-2 13892     -3.002100e+02 5.505300e+02
-3 13892     -4.250900e+02 2.120100e+02
-4 13892     1.663500e+02 -3.882400e+02
-5 13892     4.221200e+02 1.197000e+02
-6 13892     -5.175300e+02 8.730500e+02
-8 13892     -1.690700e+02 4.290600e+02
-11 13892     1.447600e+02 -4.392999e+01
-13 13892     1.956899e+02 3.917900e+02
-14 13892     3.225300e+02 2.667999e+01
-2 13893     -2.794500e+02 5.510800e+02
-3 13893     -4.041600e+02 2.117400e+02
-4 13893     1.664200e+02 -4.028200e+02
-8 13893     -1.517300e+02 4.304300e+02
-13 13893     2.137300e+02 3.938500e+02
-14 13893     3.440300e+02 2.856000e+01
-2 13894     -4.744000e+01 5.513200e+02
-3 13894     -1.879400e+02 2.106600e+02
-11 13894     4.016400e+02 -1.784998e+01
-13 13894     4.277700e+02 4.215600e+02
-14 13894     5.984900e+02 5.407001e+01
-2 13895     -4.829300e+02 5.483200e+02
-8 13895     -3.202700e+02 4.227200e+02
-2 13896     4.747998e+01 5.456000e+02
-8 13896     1.205300e+02 4.336900e+02
-11 13896     5.047900e+02 -1.153003e+01
-13 13896     5.203600e+02 4.280300e+02
-14 13896     7.094600e+02 5.946002e+01
-2 13897     -1.792200e+02 5.455700e+02
-3 13897     -3.115500e+02 2.058400e+02
-4 13897     1.631500e+02 -4.751400e+02
-5 13897     5.540400e+02 1.256500e+02
-13 13897     3.032500e+02 4.012900e+02
-14 13897     4.508101e+02 3.407001e+01
-2 13898     2.562600e+02 5.401500e+02
-3 13898     1.121300e+02 1.988900e+02
-6 13898     1.628900e+02 8.439100e+02
-8 13898     2.800400e+02 4.210600e+02
-9 13898     6.765997e+01 5.522800e+02
-13 13898     6.606600e+02 3.477000e+02
-2 13899     -6.796800e+02 5.390300e+02
-3 13899     -7.914500e+02 2.104600e+02
-8 13899     -4.811300e+02 4.101000e+02
-2 13900     -6.476100e+02 5.379200e+02
-8 13900     -4.549500e+02 4.097000e+02
-2 13901     -1.673100e+02 5.381100e+02
-3 13901     -2.997900e+02 1.983300e+02
-4 13901     1.585000e+02 -4.833300e+02
-8 13901     -5.827002e+01 4.225900e+02
-2 13902     -1.788800e+02 5.355300e+02
-5 13902     5.535500e+02 1.158400e+02
-8 13902     -6.812000e+01 4.204600e+02
-11 13902     2.642700e+02 -4.433002e+01
-13 13902     3.031899e+02 3.928000e+02
-2 13903     -1.350700e+02 5.355800e+02
-3 13903     -2.704100e+02 1.938200e+02
-4 13903     1.570500e+02 -5.079700e+02
-5 13903     6.027300e+02 1.198900e+02
-8 13903     -3.212000e+01 4.214500e+02
-2 13904     4.654301e+02 5.337200e+02
-3 13904     3.164600e+02 1.949400e+02
-6 13904     3.943600e+02 7.647800e+02
-8 13904     4.459900e+02 4.104600e+02
-9 13904     2.514800e+02 5.516900e+02
-11 13904     7.134301e+02 -1.817600e+02
-2 13905     -2.534900e+02 5.316000e+02
-4 13905     1.556899e+02 -4.186700e+02
-6 13905     -4.561200e+02 8.593600e+02
-8 13905     -1.299900e+02 4.152800e+02
-13 13905     2.362100e+02 3.818900e+02
-14 13905     3.705500e+02 1.376001e+01
-2 13906     -2.624600e+02 5.312500e+02
-4 13906     1.557200e+02 -4.121300e+02
-2 13907     2.904999e+01 5.258700e+02
-3 13907     -1.172100e+02 1.851100e+02
-5 13907     7.988300e+02 1.251400e+02
-8 13907     1.053500e+02 4.171200e+02
-13 13907     5.003199e+02 4.089000e+02
-2 13908     -1.942500e+02 5.247800e+02
-3 13908     -3.257800e+02 1.865700e+02
-4 13908     1.514301e+02 -4.607100e+02
-5 13908     5.351000e+02 1.044000e+02
-6 13908     -3.804000e+02 8.648800e+02
-8 13908     -8.114001e+01 4.110600e+02
-11 13908     2.485900e+02 -5.404999e+01
-13 13908     2.886200e+02 3.811500e+02
-14 13908     4.330300e+02 1.335999e+01
-2 13909     -4.691600e+02 5.245800e+02
-5 13909     2.464301e+02 8.509003e+01
-11 13909     -1.133002e+01 -7.640002e+01
-13 13909     5.223999e+01 3.549600e+02
-14 13909     1.523101e+02 -1.042999e+01
-2 13910     -2.201000e+02 5.237700e+02
-3 13910     -3.500500e+02 1.864900e+02
-4 13910     1.508800e+02 -4.415200e+02
-6 13910     -4.128700e+02 8.572700e+02
-8 13910     -1.023700e+02 4.095000e+02
-11 13910     2.224200e+02 -5.777002e+01
-14 13910     4.051700e+02 9.630005e+00
-2 13911     5.958900e+02 5.240500e+02
-3 13911     4.383700e+02 1.874100e+02
-8 13911     5.552400e+02 4.008100e+02
-2 13912     5.958900e+02 5.240500e+02
-8 13912     5.552400e+02 4.008100e+02
-2 13913     6.082300e+02 5.241200e+02
-3 13913     4.495100e+02 1.881300e+02
-6 13913     5.585200e+02 7.304700e+02
-9 13913     3.727100e+02 5.461900e+02
-2 13914     -2.284400e+02 5.234700e+02
-3 13914     -3.579300e+02 1.856900e+02
-4 13914     1.508900e+02 -4.354800e+02
-6 13914     -4.238100e+02 8.544400e+02
-11 13914     2.144400e+02 -5.872998e+01
-13 13914     2.576600e+02 3.777900e+02
-14 13914     3.963600e+02 8.570007e+00
-2 13915     -9.595001e+01 5.227200e+02
-4 13915     1.484301e+02 -5.377100e+02
-8 13915     9.199829e-01 4.112500e+02
-13 13915     3.790699e+02 3.916300e+02
-14 13915     5.411200e+02 2.069000e+01
-2 13916     -7.681900e+02 5.221300e+02
-14 13916     -1.175300e+02 -3.342999e+01
-2 13917     -7.450000e+02 5.216100e+02
-13 13917     -1.605300e+02 3.279300e+02
-14 13917     -9.940997e+01 -3.223999e+01
-2 13918     6.190400e+02 5.216000e+02
-3 13918     4.600601e+02 1.859500e+02
-8 13918     5.739800e+02 3.991700e+02
-9 13918     3.823400e+02 5.439600e+02
-2 13919     5.717400e+02 5.207400e+02
-8 13919     5.345800e+02 3.983500e+02
-9 13919     3.420900e+02 5.414900e+02
-2 13920     -3.069500e+02 5.196500e+02
-3 13920     -4.316300e+02 1.828900e+02
-4 13920     1.499000e+02 -3.799400e+02
-6 13920     -5.228100e+02 8.317600e+02
-8 13920     -1.737100e+02 4.045700e+02
-2 13921     -3.069500e+02 5.196500e+02
-4 13921     1.499000e+02 -3.799400e+02
-6 13921     -5.228100e+02 8.317600e+02
-11 13921     1.383200e+02 -6.853998e+01
-13 13921     1.885699e+02 3.667800e+02
-14 13921     3.140500e+02 -2.080017e+00
-2 13922     -5.222000e+02 5.178400e+02
-4 13922     1.529800e+02 -2.463600e+02
-5 13922     1.933101e+02 7.567999e+01
-11 13922     -5.762000e+01 -8.565997e+01
-13 13922     8.859985e+00 3.449900e+02
-14 13922     1.008300e+02 -2.012000e+01
-2 13923     -1.586700e+02 5.181900e+02
-11 13923     2.846200e+02 -5.634003e+01
-2 13924     6.886200e+02 5.175200e+02
-3 13924     5.232300e+02 1.825700e+02
-2 13925     5.565900e+02 5.174100e+02
-3 13925     4.018400e+02 1.812200e+02
-6 13925     4.981700e+02 7.311700e+02
-8 13925     5.218199e+02 3.955700e+02
-9 13925     3.289800e+02 5.389500e+02
-2 13926     -1.660500e+02 5.165800e+02
-3 13926     -2.993700e+02 1.775500e+02
-4 13926     1.465601e+02 -4.814500e+02
-5 13926     5.663800e+02 9.840002e+01
-6 13926     -3.436100e+02 8.607100e+02
-8 13926     -5.784003e+01 4.058400e+02
-11 13926     2.774600e+02 -5.772998e+01
-14 13926     4.634800e+02 8.419983e+00
-2 13927     5.246700e+02 5.145100e+02
-3 13927     3.720800e+02 1.782300e+02
-8 13927     4.955601e+02 3.929000e+02
-9 13927     3.012600e+02 5.361300e+02
-2 13928     5.942100e+02 5.132500e+02
-3 13928     4.371400e+02 1.777500e+02
-6 13928     5.416899e+02 7.213600e+02
-9 13928     3.607000e+02 5.360400e+02
-2 13929     5.942100e+02 5.132500e+02
-3 13929     4.371400e+02 1.777500e+02
-2 13930     -6.780900e+02 5.087800e+02
-13 13930     -1.119900e+02 3.244000e+02
-2 13931     -5.072900e+02 5.095700e+02
-4 13931     1.492700e+02 -2.538500e+02
-11 13931     -4.528003e+01 -9.028998e+01
-13 13931     2.071997e+01 3.402500e+02
-14 13931     1.146900e+02 -2.637000e+01
-2 13932     -1.016400e+02 5.093100e+02
-6 13932     -2.616000e+02 8.685100e+02
-2 13933     -1.016400e+02 5.093100e+02
-6 13933     -2.616000e+02 8.685100e+02
-2 13934     -1.801800e+02 5.075300e+02
-4 13934     1.412900e+02 -4.693199e+02
-5 13934     5.497100e+02 8.838000e+01
-6 13934     -3.607500e+02 8.453900e+02
-8 13934     -6.888000e+01 3.977600e+02
-11 13934     2.626801e+02 -6.647998e+01
-14 13934     4.474100e+02 -1.859985e+00
-2 13935     4.987300e+02 5.068000e+02
-6 13935     4.328700e+02 7.299300e+02
-2 13936     -6.828200e+02 5.056100e+02
-4 13936     1.503101e+02 -1.594700e+02
-5 13936     4.215002e+01 5.598999e+01
-8 13936     -4.823900e+02 3.831000e+02
-11 13936     -1.904400e+02 -1.040000e+02
-13 13936     -1.153600e+02 3.216000e+02
-14 13936     -4.659003e+01 -4.191998e+01
-2 13937     -5.964900e+02 5.035200e+02
-4 13937     1.474301e+02 -2.041400e+02
-5 13937     1.212000e+02 5.896002e+01
-8 13937     -4.122300e+02 3.842400e+02
-11 13937     -1.209700e+02 -1.003400e+02
-13 13937     -4.969000e+01 3.276200e+02
-14 13937     3.084998e+01 -3.745001e+01
-2 13938     -3.272200e+02 5.023600e+02
-3 13938     -4.513100e+02 1.670200e+02
-4 13938     1.413600e+02 -3.646000e+02
-5 13938     3.899800e+02 7.373999e+01
-6 13938     -5.470400e+02 8.057800e+02
-14 13938     2.926200e+02 -1.867999e+01
-2 13939     -3.042300e+02 5.020200e+02
-3 13939     -4.300300e+02 1.656900e+02
-4 13939     1.406500e+02 -3.799000e+02
-5 13939     4.137900e+02 7.429999e+01
-6 13939     -5.169400e+02 8.102900e+02
-8 13939     -1.720100e+02 3.902400e+02
-13 13939     1.899399e+02 3.531500e+02
-14 13939     3.157200e+02 -1.784998e+01
-2 13940     -8.572998e+01 5.003800e+02
-3 13940     -2.236500e+02 1.618700e+02
-4 13940     1.359300e+02 -5.429800e+02
-5 13940     6.571200e+02 8.917999e+01
-6 13940     -2.397600e+02 8.586100e+02
-8 13940     9.940002e+00 3.940200e+02
-2 13941     -1.600600e+02 4.985200e+02
-5 13941     5.708600e+02 8.067999e+01
-6 13941     -3.349400e+02 8.386200e+02
-11 13941     2.817300e+02 -7.257001e+01
-13 13941     3.177400e+02 3.641900e+02
-2 13942     -1.600600e+02 4.985200e+02
-11 13942     2.817300e+02 -7.257001e+01
-2 13943     -1.126700e+02 4.966500e+02
-4 13943     1.339000e+02 -5.207500e+02
-5 13943     6.254700e+02 8.306000e+01
-11 13943     3.313800e+02 -6.867999e+01
-13 13943     3.618300e+02 3.684900e+02
-14 13943     5.207600e+02 -5.450012e+00
-2 13944     -7.512500e+02 4.939100e+02
-14 13944     -1.057500e+02 -5.683002e+01
-2 13945     -1.011800e+02 4.923600e+02
-4 13945     1.307700e+02 -5.290900e+02
-6 13945     -2.598200e+02 8.441900e+02
-8 13945     -3.520020e+00 3.864900e+02
-2 13946     -8.602002e+01 4.920800e+02
-6 13946     -2.408200e+02 8.468700e+02
-8 13946     9.090027e+00 3.860700e+02
-2 13947     -1.063600e+02 4.876300e+02
-5 13947     6.318600e+02 7.516998e+01
-6 13947     -2.658700e+02 8.378700e+02
-11 13947     3.380800e+02 -7.528998e+01
-13 13947     3.677400e+02 3.622400e+02
-2 13948     6.390997e+01 4.875100e+02
-8 13948     1.343700e+02 3.868300e+02
-11 13948     5.225500e+02 -5.828003e+01
-13 13948     5.318700e+02 3.800800e+02
-14 13948     7.257000e+02 4.000000e+00
-2 13949     3.611400e+02 4.883400e+02
-6 13949     2.854000e+02 7.656400e+02
-8 13949     3.655900e+02 3.785700e+02
-9 13949     1.599301e+02 5.106200e+02
-13 13949     7.455699e+02 2.860500e+02
-2 13950     -3.259800e+02 4.858000e+02
-4 13950     1.320800e+02 -3.632200e+02
-6 13950     -5.431000e+02 7.839300e+02
-8 13950     -1.899600e+02 3.759600e+02
-2 13951     -3.259800e+02 4.858000e+02
-4 13951     1.320800e+02 -3.632200e+02
-5 13951     3.893400e+02 5.723999e+01
-6 13951     -5.431000e+02 7.839300e+02
-11 13951     1.192700e+02 -9.540997e+01
-14 13951     2.926400e+02 -3.408002e+01
-2 13952     -2.599900e+02 4.865300e+02
-4 13952     1.310300e+02 -4.080700e+02
-5 13952     4.592500e+02 6.231000e+01
-6 13952     -4.601500e+02 8.008300e+02
-8 13952     -1.353300e+02 3.791100e+02
-11 13952     1.816700e+02 -9.012000e+01
-13 13952     2.276000e+02 3.446900e+02
-14 13952     3.604200e+02 -2.900000e+01
-2 13953     3.781899e+02 4.864000e+02
-3 13953     2.301400e+02 1.503400e+02
-6 13953     3.046200e+02 7.594400e+02
-9 13953     1.741300e+02 5.079400e+02
-2 13954     -2.075600e+02 4.846800e+02
-3 13954     -3.379600e+02 1.479900e+02
-4 13954     1.293800e+02 -4.459301e+02
-11 13954     2.344600e+02 -8.635999e+01
-13 13954     2.744301e+02 3.496600e+02
-14 13954     4.164500e+02 -2.484998e+01
-2 13955     -6.921997e+01 4.817200e+02
-3 13955     -2.088500e+02 1.437100e+02
-4 13955     1.241800e+02 -5.537100e+02
-5 13955     6.743700e+02 7.184998e+01
-6 13955     -2.184000e+02 8.384300e+02
-8 13955     2.312000e+01 3.787000e+02
-13 13955     4.019100e+02 3.611400e+02
-14 13955     5.693000e+02 -1.521002e+01
-2 13956     -2.114001e+01 4.794200e+02
-3 13956     -1.640000e+02 1.402000e+02
-8 13956     6.245001e+01 3.777400e+02
-11 13956     4.297500e+02 -7.342999e+01
-13 13956     4.487100e+02 3.645500e+02
-2 13957     -6.127600e+02 4.716000e+02
-3 13957     -7.294300e+02 1.449900e+02
-4 13957     1.324500e+02 -1.925700e+02
-13 13957     -6.306000e+01 3.040900e+02
-14 13957     1.376001e+01 -6.459998e+01
-2 13958     -5.999756e-02 4.681000e+02
-3 13958     -1.444000e+02 1.294300e+02
-11 13958     4.516100e+02 -8.076001e+01
-14 13958     6.489301e+02 -2.195001e+01
-2 13959     5.687000e+01 4.655900e+02
-3 13959     -9.138000e+01 1.267700e+02
-5 13959     8.271600e+02 6.527002e+01
-6 13959     -5.676001e+01 8.477500e+02
-8 13959     1.283500e+02 3.691500e+02
-11 13959     5.145900e+02 -7.754999e+01
-13 13959     5.231300e+02 3.604500e+02
-14 13959     7.159700e+02 -1.902002e+01
-2 13960     -2.879000e+02 4.649100e+02
-3 13960     -4.153600e+02 1.293400e+02
-4 13960     1.205900e+02 -3.862900e+02
-5 13960     4.275400e+02 4.071002e+01
-6 13960     -4.933800e+02 7.672900e+02
-8 13960     -1.582000e+02 3.610600e+02
-14 13960     3.304399e+02 -5.001001e+01
-2 13961     1.468400e+02 4.597700e+02
-3 13961     -7.280029e+00 1.225200e+02
-6 13961     5.916998e+01 8.623200e+02
-8 13961     2.037300e+02 3.658700e+02
-13 13961     6.144399e+02 3.662300e+02
-14 13961     8.269500e+02 -1.433002e+01
-2 13962     1.468400e+02 4.597700e+02
-8 13962     2.037300e+02 3.658700e+02
-9 13962     -3.379999e+01 4.787100e+02
-14 13962     8.269500e+02 -1.433002e+01
-2 13963     -2.407001e+01 4.577500e+02
-5 13963     7.255000e+02 5.116998e+01
-6 13963     -1.603500e+02 8.187000e+02
-8 13963     6.054999e+01 3.607600e+02
-11 13963     4.250800e+02 -9.163000e+01
-13 13963     4.432600e+02 3.458900e+02
-14 13963     6.196200e+02 -3.406000e+01
-2 13964     -4.384800e+02 4.558900e+02
-5 13964     2.712000e+02 2.484998e+01
-8 13964     -2.825500e+02 3.505600e+02
-2 13965     -3.281500e+02 4.496400e+02
-3 13965     -4.541100e+02 1.145900e+02
-4 13965     1.127100e+02 -3.572900e+02
-5 13965     3.834100e+02 2.289001e+01
-6 13965     -5.420300e+02 7.386600e+02
-8 13965     -1.916600e+02 3.466800e+02
-11 13965     1.159800e+02 -1.247000e+02
-2 13966     -3.281500e+02 4.496400e+02
-4 13966     1.127100e+02 -3.572900e+02
-5 13966     3.834100e+02 2.289001e+01
-6 13966     -5.420300e+02 7.386600e+02
-8 13966     -1.916600e+02 3.466800e+02
-11 13966     1.159800e+02 -1.247000e+02
-2 13967     -7.169983e+00 4.499000e+02
-3 13967     -1.508200e+02 1.127100e+02
-5 13967     7.457900e+02 4.454999e+01
-6 13967     -1.376700e+02 8.126700e+02
-8 13967     7.528003e+01 3.548200e+02
-11 13967     4.433300e+02 -9.659003e+01
-13 13967     4.585500e+02 3.408100e+02
-14 13967     6.385601e+02 -4.026001e+01
-2 13968     5.917600e+02 4.505100e+02
-6 13968     5.353000e+02 6.499400e+02
-8 13968     5.505400e+02 3.402900e+02
-9 13968     3.587100e+02 4.843900e+02
-2 13969     5.917600e+02 4.505100e+02
-3 13969     4.372600e+02 1.206400e+02
-6 13969     5.353000e+02 6.499400e+02
-8 13969     5.505400e+02 3.402900e+02
-9 13969     3.587100e+02 4.843900e+02
-2 13970     -1.351001e+01 4.493100e+02
-13 13970     4.528800e+02 3.396400e+02
-14 13970     6.315400e+02 -4.135999e+01
-2 13971     -1.351001e+01 4.493100e+02
-3 13971     -1.568400e+02 1.104300e+02
-5 13971     7.381700e+02 4.515997e+01
-6 13971     -1.460600e+02 8.124300e+02
-8 13971     6.992999e+01 3.553000e+02
-11 13971     4.366000e+02 -9.698999e+01
-13 13971     4.528800e+02 3.396400e+02
-14 13971     6.315400e+02 -4.135999e+01
-2 13972     -3.373999e+01 4.479100e+02
-4 13972     1.030700e+02 -5.784800e+02
-6 13972     -1.719700e+02 8.043400e+02
-8 13972     5.270001e+01 3.526100e+02
-11 13972     4.145300e+02 -1.011800e+02
-14 13972     6.077400e+02 -4.478998e+01
-2 13973     9.591998e+01 4.479400e+02
-3 13973     -5.648999e+01 1.092200e+02
-6 13973     -6.640015e+00 8.357400e+02
-8 13973     1.607400e+02 3.564200e+02
-11 13973     5.579900e+02 -8.882001e+01
-2 13974     -3.830200e+02 4.452200e+02
-3 13974     -5.065000e+02 1.123100e+02
-5 13974     3.265300e+02 1.728998e+01
-8 13974     -2.363300e+02 3.431500e+02
-11 13974     6.465002e+01 -1.291500e+02
-13 13974     1.207400e+02 3.026300e+02
-14 13974     2.322400e+02 -7.422998e+01
-2 13975     1.481000e+02 4.428200e+02
-6 13975     6.085999e+01 8.404500e+02
-8 13975     2.044400e+02 3.525900e+02
-9 13975     -3.213000e+01 4.643200e+02
-2 13976     -2.971300e+02 4.400900e+02
-4 13976     1.080100e+02 -3.773800e+02
-5 13976     4.160699e+02 1.759998e+01
-6 13976     -5.022400e+02 7.352900e+02
-8 13976     -1.656600e+02 3.412300e+02
-13 13976     1.938000e+02 3.063900e+02
-14 13976     3.195601e+02 -7.254999e+01
-2 13977     -2.879200e+02 4.412100e+02
-4 13977     1.080600e+02 -3.834500e+02
-5 13977     4.254500e+02 1.866998e+01
-6 13977     -4.913100e+02 7.382200e+02
-8 13977     -1.581600e+02 3.424100e+02
-11 13977     1.555200e+02 -1.268300e+02
-2 13978     -9.369995e+00 4.412400e+02
-3 13978     -1.528500e+02 1.034100e+02
-5 13978     7.420800e+02 3.588000e+01
-6 13978     -1.409400e+02 8.022200e+02
-8 13978     7.279999e+01 3.485400e+02
-11 13978     4.407300e+02 -1.041900e+02
-13 13978     4.561700e+02 3.330900e+02
-14 13978     6.357300e+02 -4.959003e+01
-2 13979     8.412000e+01 4.407900e+02
-6 13979     -2.171002e+01 8.229900e+02
-11 13979     5.444500e+02 -9.598999e+01
-13 13979     5.477800e+02 3.419400e+02
-2 13980     1.827500e+02 4.403800e+02
-3 13980     2.622998e+01 1.042000e+02
-6 13980     1.058300e+02 8.459100e+02
-2 13981     3.843300e+02 4.394900e+02
-3 13981     2.367900e+02 1.062700e+02
-6 13981     3.071800e+02 7.023500e+02
-8 13981     3.826200e+02 3.371100e+02
-9 13981     1.807200e+02 4.677800e+02
-13 13981     7.590000e+02 2.392600e+02
-2 13982     -5.369995e+00 4.362000e+02
-3 13982     -1.495000e+02 9.857001e+01
-5 13982     7.457500e+02 3.033002e+01
-6 13982     -1.354200e+02 7.969700e+02
-11 13982     4.445500e+02 -1.083500e+02
-13 13982     4.597100e+02 3.290100e+02
-2 13983     2.869000e+01 4.366800e+02
-13 13983     4.932000e+02 3.336200e+02
-2 13984     -6.608002e+01 4.373300e+02
-4 13984     9.784998e+01 -5.492300e+02
-5 13984     6.732400e+02 2.776001e+01
-6 13984     -2.124400e+02 7.834200e+02
-8 13984     2.569000e+01 3.437300e+02
-11 13984     3.796899e+02 -1.122800e+02
-2 13985     -2.759100e+02 4.336200e+02
-4 13985     1.024400e+02 -3.905400e+02
-5 13985     4.377000e+02 1.082001e+01
-6 13985     -4.744800e+02 7.287400e+02
-2 13986     -6.204600e+02 4.330200e+02
-3 13986     -7.389800e+02 1.062900e+02
-2 13987     -5.880900e+02 4.295600e+02
-3 13987     -7.062300e+02 1.018100e+02
-13 13987     -4.471997e+01 2.746300e+02
-14 13987     3.400000e+01 -9.971997e+01
-2 13988     7.280029e+00 4.308500e+02
-5 13988     7.614399e+02 2.672998e+01
-6 13988     -1.191500e+02 7.929000e+02
-8 13988     8.694000e+01 3.405300e+02
-2 13989     -8.991998e+01 4.239700e+02
-3 13989     -2.286600e+02 8.931000e+01
-13 13989     3.784301e+02 3.120900e+02
-14 13989     5.420601e+02 -7.179999e+01
-2 13990     -1.688800e+02 4.212200e+02
-3 13990     -3.025200e+02 8.566998e+01
-4 13990     9.275000e+01 -4.662000e+02
-5 13990     5.539200e+02 5.710022e+00
-8 13990     -5.962000e+01 3.281900e+02
-9 13990     -3.012600e+02 4.362800e+02
-11 13990     2.730000e+02 -1.331900e+02
-13 13990     3.062100e+02 3.022100e+02
-2 13991     -2.868100e+02 4.203900e+02
-3 13991     -4.159600e+02 8.594000e+01
-4 13991     9.682001e+01 -3.816100e+02
-5 13991     4.246700e+02 -9.699707e-01
-6 13991     -4.877100e+02 7.122900e+02
-8 13991     -1.570100e+02 3.255900e+02
-13 13991     2.014900e+02 2.913800e+02
-14 13991     3.286300e+02 -9.065002e+01
-2 13992     3.515002e+01 4.186800e+02
-3 13992     -1.116300e+02 8.172998e+01
-6 13992     -8.378000e+01 7.837200e+02
-9 13992     -1.274200e+02 4.395900e+02
-13 13992     4.974800e+02 3.188900e+02
-14 13992     6.865200e+02 -6.734003e+01
-2 13993     -5.836700e+02 4.175200e+02
-3 13993     -7.031100e+02 8.966998e+01
-2 13994     -5.580400e+02 4.183100e+02
-3 13994     -6.778800e+02 8.931000e+01
-4 13994     1.062600e+02 -2.169600e+02
-13 13994     -2.166998e+01 2.696400e+02
-2 13995     -4.804800e+02 4.169000e+02
-4 13995     1.030200e+02 -2.607200e+02
-5 13995     2.259100e+02 -1.160999e+01
-8 13995     -3.163800e+02 3.191500e+02
-2 13996     -3.038700e+02 4.171600e+02
-5 13996     4.064200e+02 -4.900024e+00
-2 13997     3.098500e+02 4.127300e+02
-3 13997     1.657000e+02 7.987000e+01
-6 13997     2.221000e+02 6.802900e+02
-8 13997     3.223700e+02 3.159500e+02
-9 13997     1.167900e+02 4.421900e+02
-11 13997     6.315200e+02 -2.254600e+02
-13 13997     6.928800e+02 2.295900e+02
-2 13998     3.776300e+02 4.129400e+02
-3 13998     2.312300e+02 8.102002e+01
-6 13998     3.003000e+02 6.698100e+02
-8 13998     3.776700e+02 3.151000e+02
-13 13998     7.512800e+02 2.173800e+02
-2 13999     -7.042700e+02 4.116100e+02
-4 13999     1.085700e+02 -1.404700e+02
-8 13999     -4.994100e+02 3.084600e+02
-13 13999     -1.332500e+02 2.533800e+02
-2 14000     -7.042700e+02 4.116100e+02
-13 14000     -1.332500e+02 2.533800e+02
-2 14001     -4.062500e+02 4.090700e+02
-3 14001     -5.301000e+02 7.713000e+01
-5 14001     2.997700e+02 -1.623999e+01
-2 14002     -9.528003e+01 4.079500e+02
-4 14002     8.287000e+01 -5.209900e+02
-5 14002     6.364600e+02 -1.690002e+00
-6 14002     -2.477000e+02 7.418600e+02
-8 14002     1.539978e+00 3.202600e+02
-13 14002     3.725100e+02 3.017700e+02
-2 14003     -5.496700e+02 4.059000e+02
-8 14003     -3.728600e+02 3.085000e+02
-2 14004     -5.433100e+02 4.042100e+02
-4 14004     9.897998e+01 -2.240500e+02
-5 14004     1.635700e+02 -2.592999e+01
-8 14004     -3.675200e+02 3.060300e+02
-11 14004     -7.859998e+01 -1.678000e+02
-14 14004     7.381000e+01 -1.192000e+02
-2 14005     -6.666998e+01 4.020700e+02
-3 14005     -2.075500e+02 6.620001e+01
-4 14005     7.769000e+01 -5.433600e+02
-6 14005     -2.119700e+02 7.394800e+02
-8 14005     2.551001e+01 3.152300e+02
-9 14005     -2.135200e+02 4.221000e+02
-13 14005     3.984200e+02 2.962400e+02
-14 14005     5.667000e+02 -9.126001e+01
-2 14006     -6.666998e+01 4.020700e+02
-6 14006     -2.119700e+02 7.394800e+02
-9 14006     -2.135200e+02 4.221000e+02
-2 14007     -2.929100e+02 3.997300e+02
-3 14007     -4.213000e+02 6.628003e+01
-8 14007     -1.621300e+02 3.089200e+02
-11 14007     1.487000e+02 -1.583200e+02
-2 14008     -5.794300e+02 3.985200e+02
-3 14008     -7.001100e+02 7.165997e+01
-4 14008     9.772998e+01 -2.037500e+02
-5 14008     1.280100e+02 -3.250000e+01
-12 14008     -6.537700e+02 6.104400e+02
-13 14008     -3.915002e+01 2.533500e+02
-14 14008     3.934998e+01 -1.256900e+02
-2 14009     -3.714100e+02 3.995300e+02
-5 14009     3.339500e+02 -2.363000e+01
-11 14009     7.501001e+01 -1.626200e+02
-2 14010     -3.039500e+02 3.983500e+02
-3 14010     -4.317900e+02 6.510999e+01
-4 14010     8.628998e+01 -3.678700e+02
-5 14010     4.048500e+02 -2.177002e+01
-6 14010     -5.066500e+02 6.821300e+02
-11 14010     1.388400e+02 -1.594800e+02
-2 14011     -1.372100e+02 3.968100e+02
-4 14011     7.728003e+01 -4.866600e+02
-5 14011     5.873900e+02 -1.673999e+01
-6 14011     -2.991500e+02 7.157100e+02
-8 14011     -3.334003e+01 3.089400e+02
-9 14011     -2.734300e+02 4.158200e+02
-2 14012     -1.144400e+02 3.970500e+02
-3 14012     -2.512600e+02 6.159003e+01
-4 14012     7.675000e+01 -5.044000e+02
-5 14012     6.133700e+02 -1.465997e+01
-6 14012     -2.708500e+02 7.226100e+02
-8 14012     -1.440997e+01 3.102200e+02
-13 14012     3.536899e+02 2.877900e+02
-14 14012     5.125800e+02 -1.000800e+02
-2 14013     -3.108200e+02 3.944700e+02
-3 14013     -4.386300e+02 6.121997e+01
-6 14013     -5.146200e+02 6.768700e+02
-2 14014     -3.108200e+02 3.944700e+02
-3 14014     -4.386300e+02 6.121997e+01
-4 14014     8.469000e+01 -3.626600e+02
-5 14014     3.970500e+02 -2.560999e+01
-6 14014     -5.146200e+02 6.768700e+02
-8 14014     -1.770000e+02 3.042800e+02
-11 14014     1.313500e+02 -1.639200e+02
-13 14014     1.793500e+02 2.697100e+02
-14 14014     3.019900e+02 -1.152700e+02
-2 14015     -5.452100e+02 3.928500e+02
-4 14015     9.389001e+01 -2.218800e+02
-5 14015     1.604500e+02 -3.508002e+01
-8 14015     -3.690700e+02 2.987300e+02
-11 14015     -8.001001e+01 -1.750200e+02
-14 14015     7.188000e+01 -1.281500e+02
-2 14016     -2.160800e+02 3.903400e+02
-3 14016     -3.484800e+02 5.634003e+01
-5 14016     4.978800e+02 -2.684003e+01
-6 14016     -3.970600e+02 6.902300e+02
-8 14016     -9.859000e+01 3.028800e+02
-9 14016     -3.405900e+02 4.076500e+02
-11 14016     2.233100e+02 -1.621000e+02
-2 14017     -1.212200e+02 3.899000e+02
-4 14017     7.334998e+01 -4.977100e+02
-5 14017     6.045000e+02 -2.175000e+01
-6 14017     -2.794500e+02 7.127000e+02
-8 14017     -2.009003e+01 3.048400e+02
-2 14018     -1.212200e+02 3.899000e+02
-4 14018     7.334998e+01 -4.977100e+02
-5 14018     6.045000e+02 -2.175000e+01
-6 14018     -2.794500e+02 7.127000e+02
-8 14018     -2.009003e+01 3.048400e+02
-2 14019     -3.410600e+02 3.861500e+02
-5 14019     3.639700e+02 -3.571002e+01
-6 14019     -5.515600e+02 6.577900e+02
-8 14019     -2.013700e+02 2.972700e+02
-11 14019     1.020000e+02 -1.719100e+02
-2 14020     -8.235000e+02 3.855100e+02
-4 14020     1.011200e+02 -8.301001e+01
-8 14020     -5.946400e+02 2.848500e+02
-2 14021     -8.235000e+02 3.855100e+02
-4 14021     1.011200e+02 -8.301001e+01
-5 14021     -9.033002e+01 -4.996002e+01
-8 14021     -5.946400e+02 2.848500e+02
-2 14022     5.202002e+01 3.853500e+02
-8 14022     1.233700e+02 3.036500e+02
-9 14022     -1.123000e+02 4.105100e+02
-2 14023     5.202002e+01 3.853500e+02
-5 14023     8.109100e+02 -1.744000e+01
-6 14023     -6.301001e+01 7.442400e+02
-8 14023     1.233700e+02 3.036500e+02
-9 14023     -1.123000e+02 4.105100e+02
-2 14024     -3.553200e+02 3.838700e+02
-11 14024     8.956000e+01 -1.741700e+02
-2 14025     -1.770100e+02 3.842500e+02
-3 14025     -3.109500e+02 4.926001e+01
-4 14025     7.296002e+01 -4.549900e+02
-5 14025     5.415601e+02 -2.934003e+01
-6 14025     -3.478600e+02 6.935800e+02
-8 14025     -6.594000e+01 2.994900e+02
-2 14026     -1.770100e+02 3.842500e+02
-3 14026     -3.109500e+02 4.926001e+01
-4 14026     7.296002e+01 -4.549900e+02
-5 14026     5.415601e+02 -2.934003e+01
-8 14026     -6.594000e+01 2.994900e+02
-9 14026     -3.066100e+02 4.036500e+02
-11 14026     2.637600e+02 -1.623900e+02
-2 14027     1.285000e+02 3.812300e+02
-3 14027     -2.391998e+01 4.700000e+01
-6 14027     3.533002e+01 7.586900e+02
-8 14027     1.874000e+02 3.020300e+02
-9 14027     -4.739001e+01 4.096000e+02
-13 14027     5.878900e+02 2.969800e+02
-14 14027     7.990400e+02 -9.546002e+01
-2 14028     -8.247700e+02 3.799200e+02
-4 14028     9.890002e+01 -8.173999e+01
-5 14028     -9.316998e+01 -5.463000e+01
-11 14028     -3.017400e+02 -1.935900e+02
-13 14028     -2.198100e+02 2.237300e+02
-2 14029     -5.406100e+02 3.801900e+02
-4 14029     8.745001e+01 -2.233400e+02
-5 14029     1.639800e+02 -4.737000e+01
-8 14029     -3.649700e+02 2.871400e+02
-11 14029     -7.678998e+01 -1.849600e+02
-12 14029     -6.055300e+02 5.967100e+02
-13 14029     -8.919983e+00 2.421100e+02
-14 14029     7.491998e+01 -1.399600e+02
-2 14030     5.853700e+02 3.800400e+02
-7 14030     5.348500e+02 5.448500e+02
-9 14030     3.553900e+02 4.224300e+02
-2 14031     -5.492400e+02 3.779000e+02
-3 14031     -6.703500e+02 5.053998e+01
-4 14031     8.734998e+01 -2.183100e+02
-5 14031     1.553100e+02 -4.846997e+01
-8 14031     -3.723300e+02 2.866700e+02
-12 14031     -6.160400e+02 5.940000e+02
-14 14031     6.683002e+01 -1.410900e+02
-2 14032     1.150100e+02 3.779600e+02
-6 14032     1.820001e+01 7.517900e+02
-9 14032     -5.873999e+01 4.062100e+02
-2 14033     -1.880005e+00 3.760600e+02
-3 14033     -1.464500e+02 4.109003e+01
-5 14033     7.442600e+02 -2.929999e+01
-6 14033     -1.292900e+02 7.221300e+02
-8 14033     7.914001e+01 2.958700e+02
-9 14033     -1.573500e+02 4.012000e+02
-11 14033     4.478900e+02 -1.567300e+02
-13 14033     4.579900e+02 2.804900e+02
-14 14033     6.400800e+02 -1.117900e+02
-2 14034     -1.113700e+02 3.731900e+02
-6 14034     -2.658900e+02 6.946600e+02
-8 14034     -1.129999e+01 2.917100e+02
-2 14035     -1.006400e+02 3.725100e+02
-5 14035     6.265900e+02 -3.707001e+01
-2 14036     -1.006400e+02 3.725100e+02
-5 14036     6.265900e+02 -3.707001e+01
-13 14036     3.651600e+02 2.720900e+02
-2 14037     -7.965800e+02 3.699900e+02
-4 14037     9.387000e+01 -9.371997e+01
-8 14037     -5.732500e+02 2.740500e+02
-11 14037     -2.822900e+02 -1.990700e+02
-2 14038     -3.204900e+02 3.686000e+02
-5 14038     3.845800e+02 -5.053003e+01
-12 14038     -3.471700e+02 6.187500e+02
-2 14039     -2.601800e+02 3.694200e+02
-4 14039     6.928003e+01 -3.936900e+02
-6 14039     -4.500500e+02 6.564600e+02
-8 14039     -1.349300e+02 2.849200e+02
-11 14039     1.801300e+02 -1.790200e+02
-13 14039     2.222000e+02 2.545600e+02
-14 14039     3.534399e+02 -1.346900e+02
-2 14040     2.077002e+01 3.681600e+02
-3 14040     -1.250600e+02 3.290997e+01
-13 14040     4.795000e+02 2.767900e+02
-14 14040     6.667400e+02 -1.170400e+02
-2 14041     2.077002e+01 3.681600e+02
-3 14041     -1.250600e+02 3.290997e+01
-6 14041     -1.014500e+02 7.188800e+02
-9 14041     -1.383000e+02 3.948800e+02
-13 14041     4.795000e+02 2.767900e+02
-2 14042     2.077002e+01 3.681600e+02
-3 14042     -1.250600e+02 3.290997e+01
-9 14042     -1.383000e+02 3.948800e+02
-13 14042     4.795000e+02 2.767900e+02
-14 14042     6.667400e+02 -1.170400e+02
-2 14043     5.837000e+01 3.684900e+02
-6 14043     -5.346997e+01 7.262400e+02
-8 14043     1.294400e+02 2.904600e+02
-9 14043     -1.060000e+02 3.959900e+02
-11 14043     5.146200e+02 -1.585500e+02
-13 14043     5.161500e+02 2.794900e+02
-14 14043     7.113900e+02 -1.147400e+02
-2 14044     -7.727500e+02 3.651900e+02
-4 14044     9.159998e+01 -1.041700e+02
-2 14045     -2.527200e+02 3.642400e+02
-3 14045     -3.844800e+02 3.134003e+01
-4 14045     6.590997e+01 -3.984600e+02
-5 14045     4.568101e+02 -5.197998e+01
-8 14045     -1.282700e+02 2.810300e+02
-11 14045     1.880900e+02 -1.827400e+02
-14 14045     3.613400e+02 -1.393800e+02
-2 14046     6.501300e+02 3.642300e+02
-9 14046     4.112400e+02 4.108100e+02
-12 14046     6.758600e+02 5.551500e+02
-2 14047     -9.528998e+01 3.596400e+02
-4 14047     5.498999e+01 -5.136300e+02
-5 14047     6.314500e+02 -4.976001e+01
-6 14047     -2.454500e+02 6.820100e+02
-8 14047     1.640015e+00 2.814800e+02
-14 14047     5.317100e+02 -1.340600e+02
-2 14048     -2.842500e+02 3.588400e+02
-4 14048     6.445001e+01 -3.754700e+02
-5 14048     4.209700e+02 -5.878003e+01
-6 14048     -4.795200e+02 6.381300e+02
-8 14048     -1.548500e+02 2.768700e+02
-11 14048     1.561700e+02 -1.888400e+02
-12 14048     -3.040400e+02 6.133200e+02
-13 14048     2.009700e+02 2.449200e+02
-2 14049     9.572998e+01 3.595000e+02
-3 14049     -5.585999e+01 2.415997e+01
-6 14049     -5.580017e+00 7.243900e+02
-8 14049     1.605000e+02 2.843600e+02
-9 14049     -7.489001e+01 3.892200e+02
-11 14049     5.575300e+02 -1.629800e+02
-13 14049     5.530100e+02 2.752300e+02
-14 14049     7.569900e+02 -1.207900e+02
-2 14050     1.465400e+02 3.581000e+02
-6 14050     5.879999e+01 7.337000e+02
-9 14050     -3.137000e+01 3.896300e+02
-2 14051     8.483002e+01 3.568600e+02
-3 14051     -6.459998e+01 2.194000e+01
-9 14051     -8.309998e+01 3.873100e+02
-11 14051     5.453600e+02 -1.657700e+02
-13 14051     5.419000e+02 2.722000e+02
-14 14051     7.435500e+02 -1.240600e+02
-2 14052     1.370100e+02 3.557500e+02
-6 14052     4.653003e+01 7.290100e+02
-2 14053     -3.924300e+02 3.548200e+02
-3 14053     -5.179200e+02 2.387000e+01
-4 14053     6.856000e+01 -3.067700e+02
-5 14053     3.088199e+02 -6.489001e+01
-11 14053     5.463000e+01 -1.965700e+02
-12 14053     -4.304300e+02 5.933300e+02
-2 14054     -2.514300e+02 3.551500e+02
-3 14054     -3.823800e+02 2.204999e+01
-4 14054     6.098999e+01 -3.978800e+02
-5 14054     4.567500e+02 -6.012000e+01
-6 14054     -4.380500e+02 6.414400e+02
-8 14054     -1.276100e+02 2.741900e+02
-11 14054     1.887900e+02 -1.898200e+02
-12 14054     -2.643800e+02 6.148300e+02
-13 14054     2.291300e+02 2.443000e+02
-14 14054     3.617800e+02 -1.471700e+02
-2 14055     -2.588000e+02 3.528600e+02
-4 14055     6.022998e+01 -3.928300e+02
-8 14055     -1.336600e+02 2.721900e+02
-11 14055     1.826300e+02 -1.916300e+02
-13 14055     2.229500e+02 2.416100e+02
-2 14056     1.137900e+02 3.521100e+02
-13 14056     5.709900e+02 2.711600e+02
-2 14057     1.137900e+02 3.521100e+02
-6 14057     1.696002e+01 7.192400e+02
-8 14057     1.753200e+02 2.785500e+02
-9 14057     -5.915997e+01 3.830000e+02
-14 14057     7.790500e+02 -1.269600e+02
-2 14058     4.182001e+01 3.492300e+02
-3 14058     -1.055800e+02 1.417999e+01
-5 14058     7.947300e+02 -5.396997e+01
-6 14058     -7.400000e+01 7.003000e+02
-8 14058     1.156600e+02 2.750900e+02
-9 14058     -1.195600e+02 3.787800e+02
-11 14058     4.953101e+02 -1.755600e+02
-13 14058     4.982500e+02 2.620700e+02
-14 14058     6.900699e+02 -1.350900e+02
-2 14059     3.072998e+01 3.471500e+02
-5 14059     7.733700e+02 -5.789001e+01
-8 14059     1.015400e+02 2.718200e+02
-11 14059     4.768500e+02 -1.790700e+02
-2 14060     -9.309998e+00 3.444400e+02
-3 14060     -1.530500e+02 9.489990e+00
-4 14060     4.079999e+01 -5.829200e+02
-5 14060     7.318700e+02 -6.127002e+01
-6 14060     -1.381300e+02 6.832800e+02
-8 14060     7.334998e+01 2.704200e+02
-9 14060     -1.617900e+02 3.733700e+02
-11 14060     4.399600e+02 -1.834300e+02
-2 14061     5.795000e+02 3.433800e+02
-7 14061     5.261600e+02 5.093900e+02
-9 14061     3.524100e+02 3.909300e+02
-10 14061     7.219800e+02 5.964500e+02
-2 14062     5.795000e+02 3.433800e+02
-7 14062     5.261600e+02 5.093900e+02
-9 14062     3.524100e+02 3.909300e+02
-10 14062     7.219800e+02 5.964500e+02
-2 14063     -7.644800e+02 3.394700e+02
-5 14063     -4.582001e+01 -8.627002e+01
-8 14063     -5.471700e+02 2.504300e+02
-11 14063     -2.597000e+02 -2.184500e+02
-2 14064     3.854000e+02 3.368500e+02
-7 14064     3.809800e+02 5.687000e+02
-8 14064     3.825300e+02 2.528100e+02
-9 14064     1.839301e+02 3.790000e+02
-13 14064     7.489100e+02 1.513000e+02
-2 14065     -2.312700e+02 3.220000e+02
-5 14065     4.754900e+02 -9.078003e+01
-2 14066     -2.339100e+02 3.167000e+02
-5 14066     4.710300e+02 -9.626001e+01
-8 14066     -1.143700e+02 2.441100e+02
-12 14066     -2.427200e+02 5.766100e+02
-14 14066     3.758101e+02 -1.832100e+02
-2 14067     -4.106000e+01 3.165400e+02
-9 14067     -1.882600e+02 3.482400e+02
-11 14067     4.043700e+02 -2.075200e+02
-13 14067     4.170000e+02 2.299900e+02
-2 14068     3.056400e+02 3.163100e+02
-3 14068     1.634500e+02 -1.210999e+01
-7 14068     3.093900e+02 5.652800e+02
-8 14068     3.181800e+02 2.381300e+02
-9 14068     1.155600e+02 3.594400e+02
-12 14068     3.215601e+02 5.572100e+02
-13 14068     6.792300e+02 1.494700e+02
-2 14069     -3.913900e+02 3.125700e+02
-5 14069     3.058900e+02 -1.027600e+02
-2 14070     -8.851001e+01 3.109200e+02
-8 14070     7.140015e+00 2.430800e+02
-9 14070     -2.286200e+02 3.419100e+02
-13 14070     3.725300e+02 2.223100e+02
-14 14070     5.367100e+02 -1.791100e+02
-2 14071     -4.035000e+02 3.105000e+02
-3 14071     -5.296800e+02 -1.970001e+01
-8 14071     -2.520900e+02 2.356300e+02
-2 14072     -1.007200e+02 3.088800e+02
-8 14072     -2.859985e+00 2.438700e+02
-11 14072     3.397200e+02 -2.179200e+02
-2 14073     -5.263000e+01 3.042000e+02
-3 14073     -1.939900e+02 -2.827002e+01
-8 14073     3.703003e+01 2.371300e+02
-9 14073     -1.976100e+02 3.373600e+02
-2 14074     -5.795001e+01 3.016300e+02
-3 14074     -1.983600e+02 -3.188000e+01
-8 14074     3.150000e+01 2.346400e+02
-9 14074     -2.014300e+02 3.341400e+02
-2 14075     -8.236900e+02 2.937200e+02
-8 14075     -5.948500e+02 2.130900e+02
-2 14076     -3.171100e+02 2.938500e+02
-3 14076     -4.460200e+02 -3.783002e+01
-5 14076     3.808199e+02 -1.184900e+02
-6 14076     -5.130700e+02 5.557300e+02
-8 14076     -1.815600e+02 2.244700e+02
-2 14077     -3.262000e+02 2.919000e+02
-6 14077     -5.243300e+02 5.509100e+02
-2 14078     -4.431700e+02 2.826100e+02
-7 14078     -3.871100e+02 5.715800e+02
-2 14079     3.709900e+02 2.821100e+02
-7 14079     3.636000e+02 5.190100e+02
-9 14079     1.720100e+02 3.322600e+02
-12 14079     3.897800e+02 5.128000e+02
-2 14080     3.494301e+02 2.773700e+02
-3 14080     2.071100e+02 -4.833002e+01
-6 14080     2.638200e+02 5.161700e+02
-8 14080     3.530700e+02 2.047400e+02
-9 14080     1.542400e+02 3.271700e+02
-11 14080     6.620100e+02 -3.578600e+02
-12 14080     3.672200e+02 5.090300e+02
-2 14081     -4.055500e+02 2.761900e+02
-4 14081     3.081000e+01 -2.906100e+02
-5 14081     2.878900e+02 -1.364800e+02
-2 14082     4.769301e+02 2.736400e+02
-7 14082     4.248000e+02 4.627400e+02
-9 14082     2.653300e+02 3.287000e+02
-2 14083     3.160000e+02 2.711500e+02
-8 14083     3.262200e+02 2.013900e+02
-12 14083     3.322900e+02 5.065500e+02
-2 14084     -6.161700e+02 2.696100e+02
-5 14084     8.133002e+01 -1.429100e+02
-7 14084     -5.617700e+02 5.409000e+02
-2 14085     3.938600e+02 2.689200e+02
-3 14085     2.503000e+02 -5.482001e+01
-6 14085     3.135400e+02 5.007300e+02
-8 14085     3.891100e+02 1.973700e+02
-9 14085     1.922300e+02 3.215000e+02
-2 14086     4.314600e+02 2.648000e+02
-6 14086     3.442000e+02 4.598500e+02
-8 14086     4.155900e+02 1.898500e+02
-9 14086     2.273101e+02 3.197600e+02
-2 14087     -8.859003e+01 2.629100e+02
-3 14087     -2.270800e+02 -6.940997e+01
-5 14087     6.279600e+02 -1.462800e+02
-8 14087     9.020020e+00 2.048500e+02
-9 14087     -2.241100e+02 3.005700e+02
-2 14088     -1.777300e+02 2.613000e+02
-4 14088     6.450012e+00 -4.372300e+02
-5 14088     5.272900e+02 -1.485600e+02
-9 14088     -3.031100e+02 2.948800e+02
-2 14089     -8.033002e+01 2.599200e+02
-6 14089     -2.221700e+02 5.664300e+02
-12 14089     -5.573999e+01 5.384900e+02
-2 14090     -1.094600e+02 2.582800e+02
-3 14090     -2.491900e+02 -7.515002e+01
-8 14090     -1.087000e+01 1.992900e+02
-2 14091     -7.249300e+02 2.566100e+02
-5 14091     -1.944000e+01 -1.543600e+02
-2 14092     -7.249300e+02 2.566100e+02
-4 14092     4.214001e+01 -1.174400e+02
-5 14092     -1.944000e+01 -1.543600e+02
-2 14093     -7.249300e+02 2.566100e+02
-4 14093     4.214001e+01 -1.174400e+02
-5 14093     -1.944000e+01 -1.543600e+02
-13 14093     -1.521500e+02 1.455500e+02
-2 14094     3.904500e+02 2.570900e+02
-3 14094     2.474200e+02 -6.653003e+01
-6 14094     3.092900e+02 4.877100e+02
-8 14094     3.862300e+02 1.888000e+02
-2 14095     -5.919000e+02 2.534200e+02
-4 14095     3.278003e+01 -1.840600e+02
-5 14095     1.031600e+02 -1.568000e+02
-8 14095     -4.061500e+02 1.872300e+02
-2 14096     -5.919000e+02 2.534200e+02
-4 14096     3.278003e+01 -1.840600e+02
-5 14096     1.031600e+02 -1.568000e+02
-2 14097     -1.073100e+02 2.529800e+02
-6 14097     -2.549800e+02 5.527700e+02
-8 14097     -8.510010e+00 1.960800e+02
-12 14097     -8.802002e+01 5.274600e+02
-2 14098     -4.350600e+02 2.523200e+02
-3 14098     -5.627700e+02 -7.827002e+01
-4 14098     2.197998e+01 -2.707800e+02
-5 14098     2.565100e+02 -1.568700e+02
-8 14098     -2.777000e+02 1.899700e+02
-2 14099     -4.350600e+02 2.523200e+02
-3 14099     -5.627700e+02 -7.827002e+01
-4 14099     2.197998e+01 -2.707800e+02
-5 14099     2.565100e+02 -1.568700e+02
-8 14099     -2.777000e+02 1.899700e+02
-2 14100     -1.702700e+02 2.505800e+02
-3 14100     -3.068700e+02 -8.375000e+01
-5 14100     5.312100e+02 -1.615500e+02
-7 14100     -1.002200e+02 5.687000e+02
-8 14100     -6.110999e+01 1.920100e+02
-12 14100     -1.663400e+02 5.130600e+02
-2 14101     -4.459003e+01 2.509400e+02
-5 14101     6.789301e+02 -1.539900e+02
-14 14101     5.822600e+02 -2.347600e+02
-2 14102     3.385999e+01 2.467500e+02
-6 14102     -8.187000e+01 5.746500e+02
-8 14102     1.085900e+02 1.925900e+02
-9 14102     -1.227700e+02 2.892600e+02
-14 14102     6.741500e+02 -2.360700e+02
-2 14103     7.295699e+02 2.460700e+02
-7 14103     6.494600e+02 3.790500e+02
-9 14103     4.797400e+02 3.129900e+02
-2 14104     2.609900e+02 2.455800e+02
-7 14104     2.672300e+02 5.062200e+02
-2 14105     -3.835100e+02 2.439600e+02
-4 14105     1.359998e+01 -2.998500e+02
-7 14105     -3.220600e+02 5.433000e+02
-8 14105     -2.358600e+02 1.830800e+02
-12 14105     -4.099400e+02 4.779000e+02
-13 14105     1.120100e+02 1.527900e+02
-14 14105     2.181300e+02 -2.530500e+02
-2 14106     -4.501001e+01 2.406900e+02
-3 14106     -1.872300e+02 -9.114001e+01
-5 14106     6.773000e+02 -1.650000e+02
-6 14106     -1.784900e+02 5.508600e+02
-7 14106     3.775000e+01 5.753200e+02
-13 14106     4.072900e+02 1.695000e+02
-14 14106     5.811200e+02 -2.445500e+02
-2 14107     -4.501001e+01 2.406900e+02
-3 14107     -1.872300e+02 -9.114001e+01
-5 14107     6.773000e+02 -1.650000e+02
-6 14107     -1.784900e+02 5.508600e+02
-7 14107     3.775000e+01 5.753200e+02
-8 14107     4.319000e+01 1.869300e+02
-9 14107     -1.888700e+02 2.816000e+02
-11 14107     3.976801e+02 -2.698100e+02
-13 14107     4.072900e+02 1.695000e+02
-14 14107     5.811200e+02 -2.445500e+02
-2 14108     -3.657300e+02 2.401100e+02
-6 14108     -5.675500e+02 4.822800e+02
-8 14108     -2.210100e+02 1.812100e+02
-13 14108     1.269600e+02 1.512100e+02
-2 14109     -3.657300e+02 2.401100e+02
-4 14109     1.035999e+01 -3.104900e+02
-5 14109     3.249100e+02 -1.684800e+02
-6 14109     -5.675500e+02 4.822800e+02
-7 14109     -3.036200e+02 5.422100e+02
-8 14109     -2.210100e+02 1.812100e+02
-11 14109     7.596997e+01 -2.803400e+02
-12 14109     -3.890400e+02 4.766300e+02
-13 14109     1.269600e+02 1.512100e+02
-2 14110     -3.657300e+02 2.401100e+02
-3 14110     -4.942800e+02 -8.946002e+01
-5 14110     3.249100e+02 -1.684800e+02
-6 14110     -5.675500e+02 4.822800e+02
-7 14110     -3.036200e+02 5.422100e+02
-8 14110     -2.210100e+02 1.812100e+02
-11 14110     7.596997e+01 -2.803400e+02
-13 14110     1.269600e+02 1.512100e+02
-2 14111     -2.747600e+02 2.381800e+02
-4 14111     2.049988e+00 -3.676400e+02
-8 14111     -1.467900e+02 1.807600e+02
-2 14112     2.998700e+02 2.370500e+02
-7 14112     2.993500e+02 4.905400e+02
-9 14112     1.123900e+02 2.908500e+02
-13 14112     6.660800e+02 8.579001e+01
-2 14113     -7.346002e+01 2.355200e+02
-5 14113     6.437200e+02 -1.695100e+02
-6 14113     -2.130000e+02 5.397300e+02
-7 14113     6.719971e+00 5.678800e+02
-8 14113     1.983002e+01 1.825900e+02
-9 14113     -2.126500e+02 2.762900e+02
-11 14113     3.667100e+02 -2.749600e+02
-12 14113     -4.729999e+01 5.134700e+02
-13 14113     3.805300e+02 1.636700e+02
-14 14113     5.486300e+02 -2.505000e+02
-2 14114     -1.228200e+02 2.324800e+02
-5 14114     5.879700e+02 -1.744000e+02
-6 14114     -2.718000e+02 5.254700e+02
-2 14115     4.412000e+02 2.306800e+02
-6 14115     3.539800e+02 4.212700e+02
-8 14115     4.233800e+02 1.622700e+02
-9 14115     2.364301e+02 2.915700e+02
-13 14115     7.640800e+02 2.909998e+01
-2 14116     4.412000e+02 2.306800e+02
-6 14116     3.539800e+02 4.212700e+02
-9 14116     2.364301e+02 2.915700e+02
-2 14117     -5.097998e+01 2.273200e+02
-7 14117     3.065997e+01 5.618600e+02
-9 14117     -1.935300e+02 2.692800e+02
-11 14117     3.901400e+02 -2.809900e+02
-13 14117     4.006200e+02 1.581300e+02
-14 14117     5.731600e+02 -2.579300e+02
-2 14118     7.371200e+02 2.209600e+02
-7 14118     6.513700e+02 3.530200e+02
-9 14118     4.860900e+02 2.923000e+02
-2 14119     -1.691900e+02 2.201600e+02
-3 14119     -3.053000e+02 -1.114600e+02
-5 14119     5.318400e+02 -1.858100e+02
-8 14119     -5.978003e+01 1.688900e+02
-12 14119     -1.604000e+02 4.837600e+02
-13 14119     2.929900e+02 1.460700e+02
-14 14119     4.401000e+02 -2.688700e+02
-2 14120     -5.875400e+02 2.160800e+02
-4 14120     1.659998e+01 -1.829000e+02
-5 14120     1.036300e+02 -1.883100e+02
-7 14120     -5.274900e+02 4.973800e+02
-8 14120     -4.023500e+02 1.579600e+02
-11 14120     -1.223600e+02 -2.988200e+02
-2 14121     4.413900e+02 2.126100e+02
-7 14121     3.880699e+02 4.140900e+02
-8 14121     4.229000e+02 1.470500e+02
-12 14121     4.409399e+02 4.073700e+02
-2 14122     -3.570001e+01 2.106800e+02
-6 14122     -1.649200e+02 5.177900e+02
-7 14122     4.772998e+01 5.481600e+02
-8 14122     5.248999e+01 1.627200e+02
-9 14122     -1.798300e+02 2.550900e+02
-12 14122     1.300049e-01 4.915400e+02
-2 14123     -1.695300e+02 2.104000e+02
-5 14123     5.302600e+02 -1.953200e+02
-7 14123     -9.759003e+01 5.356200e+02
-8 14123     -6.012000e+01 1.613800e+02
-12 14123     -1.605100e+02 4.739800e+02
-2 14124     -1.822000e+02 2.072100e+02
-3 14124     -3.193300e+02 -1.259100e+02
-4 14124     -2.145001e+01 -4.268900e+02
-5 14124     5.166100e+02 -1.984800e+02
-6 14124     -3.444900e+02 4.830500e+02
-7 14124     -1.107600e+02 5.308000e+02
-8 14124     -7.023999e+01 1.579000e+02
-12 14124     -1.740700e+02 4.690100e+02
-2 14125     -2.400000e+02 2.061300e+02
-7 14125     -1.714100e+02 5.252600e+02
-12 14125     -2.411200e+02 4.604500e+02
-13 14125     2.306000e+02 1.326900e+02
-14 14125     3.633300e+02 -2.828400e+02
-2 14126     -7.437000e+01 2.052200e+02
-5 14126     6.387300e+02 -1.992400e+02
-6 14126     -2.130900e+02 5.042800e+02
-7 14126     5.530029e+00 5.397700e+02
-11 14126     3.655900e+02 -2.995100e+02
-12 14126     -4.742999e+01 4.817200e+02
-14 14126     5.450699e+02 -2.797400e+02
-2 14127     3.187500e+02 2.035600e+02
-8 14127     3.276200e+02 1.464200e+02
-2 14128     3.187500e+02 2.035600e+02
-8 14128     3.276200e+02 1.464200e+02
-9 14128     1.290900e+02 2.635100e+02
-10 14128     4.773300e+02 5.613200e+02
-2 14129     3.273700e+02 2.018800e+02
-12 14129     3.429700e+02 4.307100e+02
-2 14130     -5.915002e+01 2.007100e+02
-5 14130     6.564200e+02 -2.036200e+02
-7 14130     2.206000e+01 5.371500e+02
-8 14130     3.144000e+01 1.548600e+02
-12 14130     -2.875000e+01 4.789100e+02
-13 14130     3.914399e+02 1.373700e+02
-14 14130     5.624000e+02 -2.836700e+02
-2 14131     3.572900e+02 1.956900e+02
-3 14131     2.174600e+02 -1.266000e+02
-8 14131     3.585200e+02 1.388700e+02
-9 14131     1.635300e+02 2.575500e+02
-10 14131     5.135000e+02 5.397800e+02
-2 14132     -2.792300e+02 1.893500e+02
-6 14132     -4.596400e+02 4.421400e+02
-7 14132     -2.120400e+02 5.056100e+02
-11 14132     1.562000e+02 -3.169600e+02
-2 14133     -1.879400e+02 1.888900e+02
-13 14133     2.755200e+02 1.224000e+02
-2 14134     -2.728200e+02 1.882500e+02
-3 14134     -4.059200e+02 -1.432400e+02
-4 14134     -2.245001e+01 -3.629300e+02
-5 14134     4.161801e+02 -2.157100e+02
-6 14134     -4.515500e+02 4.430900e+02
-7 14134     -2.059100e+02 5.055400e+02
-8 14134     -1.449200e+02 1.419000e+02
-9 14134     -3.803300e+02 2.282500e+02
-12 14134     -2.787600e+02 4.370100e+02
-13 14134     2.016400e+02 1.172200e+02
-14 14134     3.270500e+02 -3.008300e+02
-2 14135     -2.728200e+02 1.882500e+02
-4 14135     -2.245001e+01 -3.629300e+02
-5 14135     4.161801e+02 -2.157100e+02
-6 14135     -4.515500e+02 4.430900e+02
-7 14135     -2.059100e+02 5.055400e+02
-8 14135     -1.449200e+02 1.419000e+02
-9 14135     -3.803300e+02 2.282500e+02
-13 14135     2.016400e+02 1.172200e+02
-14 14135     3.270500e+02 -3.008300e+02
-2 14136     6.209399e+02 1.816100e+02
-6 14136     5.515800e+02 3.415600e+02
-7 14136     5.418300e+02 3.442300e+02
-8 14136     5.709600e+02 1.167200e+02
-9 14136     3.895000e+02 2.557500e+02
-10 14136     7.251899e+02 3.906500e+02
-12 14136     6.315000e+02 3.520100e+02
-2 14137     -4.289500e+02 1.798700e+02
-4 14137     -1.304999e+01 -2.665500e+02
-11 14137     1.544000e+01 -3.255200e+02
-2 14138     -2.809600e+02 1.798700e+02
-6 14138     -4.602200e+02 4.323500e+02
-2 14139     6.463700e+02 1.782400e+02
-3 14139     5.017000e+02 -1.322700e+02
-6 14139     5.793300e+02 3.346700e+02
-7 14139     5.638300e+02 3.345000e+02
-8 14139     5.919700e+02 1.134000e+02
-9 14139     4.109000e+02 2.534700e+02
-10 14139     7.510699e+02 3.762000e+02
-12 14139     6.583199e+02 3.454500e+02
-2 14140     3.540900e+02 1.716800e+02
-7 14140     3.397200e+02 4.195100e+02
-8 14140     3.560400e+02 1.201700e+02
-10 14140     5.062800e+02 5.135600e+02
-12 14140     3.698700e+02 3.954500e+02
-13 14140     7.041600e+02 2.196997e+01
-2 14141     7.546500e+02 1.656100e+02
-9 14141     5.014399e+02 2.461500e+02
-2 14142     -5.627900e+02 1.635700e+02
-8 14142     -3.825600e+02 1.164700e+02
-2 14143     3.671500e+02 1.632000e+02
-6 14143     2.809000e+02 3.855900e+02
-12 14143     3.834600e+02 3.838800e+02
-13 14143     7.138300e+02 1.272998e+01
-2 14144     -5.276300e+02 1.616500e+02
-7 14144     -4.630900e+02 4.567900e+02
-2 14145     -4.135700e+02 1.545900e+02
-4 14145     -2.588000e+01 -2.728000e+02
-7 14145     -3.482500e+02 4.625600e+02
-10 14145     -2.975200e+02 6.187100e+02
-11 14145     2.828998e+01 -3.436200e+02
-2 14146     -4.135700e+02 1.545900e+02
-4 14146     -2.588000e+01 -2.728000e+02
-7 14146     -3.482500e+02 4.625600e+02
-10 14146     -2.975200e+02 6.187100e+02
-11 14146     2.828998e+01 -3.436200e+02
-2 14147     6.798800e+02 1.507200e+02
-9 14147     4.396200e+02 2.316900e+02
-10 14147     7.800400e+02 3.322400e+02
-12 14147     6.934700e+02 3.111800e+02
-2 14148     -6.092000e+02 1.502400e+02
-4 14148     -1.179999e+01 -1.654500e+02
-5 14148     7.677002e+01 -2.443100e+02
-7 14148     -5.421300e+02 4.393700e+02
-8 14148     -4.194600e+02 1.054400e+02
-2 14149     1.103500e+02 1.488700e+02
-6 14149     -6.471002e+01 1.815700e+02
-8 14149     1.273800e+02 7.973001e+01
-2 14150     1.103500e+02 1.488700e+02
-3 14150     1.271997e+01 -1.695900e+02
-4 14150     -1.827800e+02 -4.389800e+02
-5 14150     6.503101e+02 -5.106801e+02
-6 14150     -6.471002e+01 1.815700e+02
-8 14150     1.273800e+02 7.973001e+01
-12 14150     -3.334003e+01 2.337400e+02
-13 14150     3.777500e+02 -1.006900e+02
-2 14151     -6.355300e+02 1.431600e+02
-4 14151     -1.297998e+01 -1.513800e+02
-11 14151     -1.651100e+02 -3.504700e+02
-2 14152     -6.355300e+02 1.431600e+02
-4 14152     -1.297998e+01 -1.513800e+02
-5 14152     5.134003e+01 -2.504700e+02
-11 14152     -1.651100e+02 -3.504700e+02
-2 14153     -6.666700e+02 1.412200e+02
-7 14153     -5.973800e+02 4.252700e+02
-11 14153     -1.906600e+02 -3.510500e+02
-2 14154     -6.218800e+02 1.396700e+02
-8 14154     -4.295400e+02 9.706000e+01
-10 14154     -5.439000e+02 5.889200e+02
-12 14154     -6.691300e+02 3.393600e+02
-2 14155     -2.763400e+02 1.399500e+02
-6 14155     -4.526200e+02 3.886800e+02
-7 14155     -2.076000e+02 4.632100e+02
-9 14155     -3.815500e+02 1.858500e+02
-2 14156     6.653000e+02 1.394500e+02
-3 14156     5.221500e+02 -1.686400e+02
-9 14156     4.272100e+02 2.216100e+02
-10 14156     7.608900e+02 3.255200e+02
-12 14156     6.765699e+02 3.005900e+02
-2 14157     3.244301e+02 1.299400e+02
-3 14157     2.169000e+02 -1.824200e+02
-8 14157     3.024400e+02 6.103000e+01
-2 14158     -6.674000e+02 1.295200e+02
-4 14158     -1.587000e+01 -1.342200e+02
-5 14158     1.976001e+01 -2.617200e+02
-7 14158     -5.970600e+02 4.160400e+02
-14 14158     -6.264001e+01 -3.535300e+02
-2 14159     -5.148500e+02 1.268100e+02
-5 14159     1.706500e+02 -2.658900e+02
-8 14159     -3.425100e+02 8.923001e+01
-10 14159     -4.184200e+02 5.837000e+02
-13 14159     2.309998e+00 6.445001e+01
-2 14160     6.458199e+02 1.274000e+02
-3 14160     5.041300e+02 -1.806000e+02
-6 14160     5.762400e+02 2.820700e+02
-8 14160     5.909200e+02 7.314001e+01
-9 14160     4.118600e+02 2.122500e+02
-10 14160     7.385500e+02 3.221200e+02
-2 14161     6.458199e+02 1.274000e+02
-6 14161     5.762400e+02 2.820700e+02
-8 14161     5.909200e+02 7.314001e+01
-9 14161     4.118600e+02 2.122500e+02
-10 14161     7.385500e+02 3.221200e+02
-12 14161     6.553101e+02 2.929900e+02
-2 14162     -2.987600e+02 1.246800e+02
-5 14162     3.822100e+02 -2.749700e+02
-8 14162     -1.661700e+02 9.125000e+01
-12 14162     -3.036400e+02 3.683900e+02
-2 14163     6.758002e+01 1.227000e+02
-8 14163     9.167999e+01 5.872000e+01
-2 14164     6.856400e+02 1.228900e+02
-9 14164     4.448800e+02 2.080900e+02
-10 14164     7.788199e+02 3.000600e+02
-2 14165     -5.518500e+02 1.221200e+02
-4 14165     -2.859998e+01 -1.922800e+02
-5 14165     1.275200e+02 -2.701400e+02
-7 14165     -4.842200e+02 4.209200e+02
-10 14165     -4.612000e+02 5.762600e+02
-11 14165     -9.623999e+01 -3.658700e+02
-12 14165     -5.897800e+02 3.319400e+02
-13 14165     -2.671002e+01 6.012000e+01
-14 14165     4.394000e+01 -3.597500e+02
-2 14166     -2.571500e+02 1.159300e+02
-11 14166     1.755200e+02 -3.724600e+02
-2 14167     1.349400e+02 1.082300e+02
-4 14167     -2.170400e+02 -4.342100e+02
-6 14167     -4.263000e+01 1.224000e+02
-7 14167     -7.287000e+01 2.037500e+02
-2 14168     -1.673400e+02 1.042900e+02
-8 14168     -5.952002e+01 7.573999e+01
-13 14168     2.809600e+02 5.109003e+01
-14 14168     4.256100e+02 -3.872900e+02
-2 14169     6.971000e+02 1.026300e+02
-9 14169     4.553101e+02 1.925600e+02
-12 14169     7.088700e+02 2.558500e+02
-2 14170     -6.466998e+01 1.002900e+02
-13 14170     3.607400e+02 3.665002e+01
-14 14170     5.261000e+02 -4.092800e+02
-2 14171     7.423999e+01 1.004600e+02
-8 14171     9.532001e+01 3.950000e+01
-2 14172     6.481600e+02 9.217999e+01
-6 14172     5.769100e+02 2.423200e+02
-8 14172     5.922700e+02 4.276999e+01
-9 14172     4.143900e+02 1.815900e+02
-10 14172     7.321000e+02 2.814800e+02
-12 14172     6.560200e+02 2.521600e+02
-2 14173     1.628003e+01 8.921002e+01
-4 14173     -1.940900e+02 -3.711100e+02
-5 14173     5.466801e+02 -5.466300e+02
-6 14173     -1.647300e+02 1.178400e+02
-12 14173     -1.320400e+02 1.722400e+02
-2 14174     7.305300e+02 7.819000e+01
-9 14174     4.835300e+02 1.729700e+02
-10 14174     8.149500e+02 2.326700e+02
-12 14174     7.441300e+02 2.252100e+02
-2 14175     -3.973800e+02 7.689001e+01
-7 14175     -3.273800e+02 3.979900e+02
-2 14176     7.940002e+00 7.153998e+01
-3 14176     -8.069000e+01 -2.457600e+02
-5 14176     5.362800e+02 -5.634600e+02
-6 14176     -1.726300e+02 9.739001e+01
-7 14176     -1.686400e+02 1.962300e+02
-8 14176     4.359003e+01 1.742999e+01
-12 14176     -1.410800e+02 1.522400e+02
-13 14176     2.933000e+02 -1.472100e+02
-2 14177     -3.641800e+02 7.106000e+01
-6 14177     -5.514500e+02 2.945100e+02
-7 14177     -2.946200e+02 3.961300e+02
-8 14177     -2.191600e+02 4.897000e+01
-9 14177     -4.533000e+02 1.227900e+02
-11 14177     7.075000e+01 -4.059200e+02
-2 14178     4.056801e+02 7.088000e+01
-3 14178     2.947500e+02 -2.376100e+02
-8 14178     3.699700e+02 1.232999e+01
-2 14179     5.004900e+02 6.876001e+01
-6 14179     4.132900e+02 2.380700e+02
-9 14179     2.902000e+02 1.565600e+02
-10 14179     5.807300e+02 3.154800e+02
-15 14179     7.786700e+02 3.510500e+02
-2 14180     4.164000e+02 6.165997e+01
-3 14180     3.054700e+02 -2.457000e+02
-2 14181     -4.705800e+02 4.354999e+01
-7 14181     -3.981200e+02 3.634800e+02
-15 14181     -3.305900e+02 5.543000e+02
-2 14182     2.133500e+02 4.444000e+01
-13 14182     4.270300e+02 -2.150100e+02
-2 14183     2.133500e+02 4.444000e+01
-13 14183     4.270300e+02 -2.150100e+02
-2 14184     -6.640997e+01 4.182001e+01
-3 14184     -1.620900e+02 -2.780700e+02
-8 14184     -9.840027e+00 2.799988e-01
-9 14184     -1.737100e+02 1.147200e+02
-2 14185     -1.984003e+01 3.894000e+01
-5 14185     5.059399e+02 -5.836200e+02
-6 14185     -2.009900e+02 6.770001e+01
-12 14185     -1.676300e+02 1.227000e+02
-13 14185     2.712900e+02 -1.636900e+02
-2 14186     -4.221900e+02 2.421997e+01
-11 14186     9.809998e+00 -4.417300e+02
-2 14187     5.771600e+02 1.188000e+01
-7 14187     4.844500e+02 2.019200e+02
-9 14187     3.571801e+02 1.117100e+02
-2 14188     2.940000e+02 -1.349976e+00
-13 14188     4.843600e+02 -2.623500e+02
-15 14188     1.278600e+02 7.287000e+01
-2 14189     8.147500e+02 -4.650024e+00
-3 14189     6.755300e+02 -3.011000e+02
-7 14189     6.872500e+02 1.280000e+02
-9 14189     5.544000e+02 1.064800e+02
-2 14190     7.957500e+02 -1.334998e+01
-7 14190     6.696600e+02 1.252200e+02
-9 14190     5.388300e+02 9.882001e+01
-12 14190     8.081200e+02 1.194200e+02
-2 14191     7.411100e+02 -2.427002e+01
-9 14191     4.946200e+02 8.810001e+01
-2 14192     1.266300e+02 -3.481000e+01
-3 14192     4.102002e+01 -3.440800e+02
-4 14192     -2.985100e+02 -3.897400e+02
-6 14192     -5.587000e+01 -4.096997e+01
-8 14192     1.322200e+02 -7.490997e+01
-9 14192     -4.199829e-01 6.090002e+01
-12 14192     -4.342999e+01 1.340002e+01
-2 14193     4.340500e+02 -4.171997e+01
-3 14193     3.282900e+02 -3.429000e+02
-2 14194     5.678800e+02 -4.291998e+01
-8 14194     5.069900e+02 -8.065002e+01
-2 14195     4.445601e+02 -4.685999e+01
-3 14195     3.402200e+02 -3.474600e+02
-9 14195     2.601400e+02 6.244000e+01
-2 14196     7.001400e+02 -4.732001e+01
-7 14196     5.826300e+02 1.204300e+02
-9 14196     4.615100e+02 6.733002e+01
-10 14196     7.537300e+02 1.163000e+02
-12 14196     7.028900e+02 9.902002e+01
-2 14197     1.953800e+02 -4.960999e+01
-3 14197     1.078800e+02 -3.558500e+02
-2 14198     -1.262200e+02 -5.689001e+01
-6 14198     -3.081800e+02 -2.990997e+01
-10 14198     -2.896300e+02 1.631700e+02
-2 14199     6.109200e+02 -5.987000e+01
-7 14199     5.054399e+02 1.335600e+02
-8 14199     5.588500e+02 -7.975000e+01
-9 14199     3.865400e+02 5.382001e+01
-12 14199     6.083400e+02 9.896002e+01
-2 14200     6.314200e+02 -8.240997e+01
-6 14200     5.510300e+02 6.334998e+01
-7 14200     5.206801e+02 1.082800e+02
-8 14200     5.762400e+02 -9.917999e+01
-9 14200     4.053400e+02 3.528003e+01
-10 14200     6.791801e+02 1.108600e+02
-12 14200     6.294399e+02 7.278003e+01
-2 14201     7.426000e+02 -9.396002e+01
-9 14201     4.976000e+02 3.004999e+01
-12 14201     7.457800e+02 4.365002e+01
-2 14202     -9.804999e+01 -1.064300e+02
-8 14202     -4.864001e+01 -1.274200e+02
-2 14203     6.438600e+02 -1.087300e+02
-7 14203     5.279600e+02 8.309000e+01
-9 14203     4.161899e+02 1.378998e+01
-2 14204     5.109800e+02 -1.146000e+02
-3 14204     4.094900e+02 -4.099800e+02
-8 14204     4.502200e+02 -1.460700e+02
-2 14205     -1.951001e+01 -1.189800e+02
-6 14205     -2.045000e+02 -1.255300e+02
-2 14206     7.374200e+02 -1.191500e+02
-9 14206     4.941801e+02 8.679993e+00
-2 14207     7.374200e+02 -1.191500e+02
-9 14207     4.941801e+02 8.679993e+00
-2 14208     3.207000e+02 -1.241300e+02
-8 14208     2.875800e+02 -1.539100e+02
-2 14209     3.076200e+02 -1.260000e+02
-6 14209     1.268800e+02 -1.429000e+02
-13 14209     4.717300e+02 -3.637400e+02
-2 14210     3.076200e+02 -1.260000e+02
-6 14210     1.268800e+02 -1.429000e+02
-8 14210     2.771300e+02 -1.542600e+02
-13 14210     4.717300e+02 -3.637400e+02
-2 14211     7.040601e+02 -1.256100e+02
-9 14211     4.665000e+02 2.289978e+00
-2 14212     -5.422998e+01 -1.282300e+02
-3 14212     -1.305600e+02 -4.401600e+02
-6 14212     -2.394200e+02 -1.375100e+02
-7 14212     -2.564500e+02 7.700012e+00
-12 14212     -2.266400e+02 -7.591998e+01
-13 14212     2.122000e+02 -3.012900e+02
-2 14213     7.616200e+02 -1.340000e+02
-12 14213     7.630100e+02 -2.100220e-01
-2 14214     -1.372998e+01 -1.421900e+02
-3 14214     -8.962000e+01 -4.519600e+02
-6 14214     -2.009900e+02 -1.582300e+02
-8 14214     1.469000e+01 -1.607300e+02
-13 14214     2.333800e+02 -3.214200e+02
-2 14215     5.228500e+02 -1.553600e+02
-8 14215     4.612200e+02 -1.764000e+02
-9 14215     3.289200e+02 -2.304999e+01
-2 14216     -9.898999e+01 -1.578600e+02
-3 14216     -1.772000e+02 -4.712700e+02
-2 14217     5.145001e+01 -1.610900e+02
-3 14217     -2.233002e+01 -4.681899e+02
-2 14218     -2.826300e+02 -1.662700e+02
-8 14218     -1.734100e+02 -1.537200e+02
-13 14218     1.161400e+02 -2.110000e+02
-2 14219     -9.796997e+01 -1.718100e+02
-3 14219     -1.768500e+02 -4.857100e+02
-6 14219     -2.811600e+02 -1.688199e+02
-9 14219     -1.829600e+02 -6.395001e+01
-2 14220     3.661400e+02 -1.723300e+02
-7 14220     6.362000e+01 -9.803998e+01
-2 14221     3.661400e+02 -1.723300e+02
-3 14221     2.804399e+02 -4.682800e+02
-9 14221     2.056200e+02 -4.212000e+01
-2 14222     7.770800e+02 -1.779000e+02
-7 14222     6.151200e+02 -2.078003e+01
-2 14223     2.224600e+02 -1.812300e+02
-3 14223     1.445500e+02 -4.813300e+02
-7 14223     -6.376001e+01 -9.053003e+01
-8 14223     2.024300e+02 -2.003900e+02
-12 14223     2.946997e+01 -1.643500e+02
-15 14223     -3.226001e+01 -1.399500e+02
-2 14224     2.882001e+01 -1.823800e+02
-8 14224     4.703003e+01 -1.955600e+02
-2 14225     2.100000e+02 -1.819700e+02
-3 14225     1.329900e+02 -4.822600e+02
-4 14225     -4.142800e+02 -3.900000e+02
-8 14225     1.917600e+02 -2.007200e+02
-2 14226     3.617200e+02 -1.824400e+02
-6 14226     1.751600e+02 -2.152000e+02
-8 14226     3.173900e+02 -2.046500e+02
-12 14226     1.755000e+02 -1.734300e+02
-2 14227     -4.304300e+02 -1.885100e+02
-4 14227     -2.075200e+02 -1.697700e+02
-8 14227     -2.909300e+02 -1.709300e+02
-13 14227     9.000000e+00 -2.132000e+02
-2 14228     2.397500e+02 -1.910300e+02
-10 14228     -7.626001e+01 -1.052700e+02
-2 14229     -2.876900e+02 -1.966300e+02
-13 14229     1.053000e+02 -2.391700e+02
-2 14230     3.377200e+02 -1.991500e+02
-6 14230     1.517200e+02 -2.255601e+02
-2 14231     -3.429500e+02 -2.066300e+02
-7 14231     -3.733500e+02 7.347998e+01
-10 14231     -3.743200e+02 1.542700e+02
-2 14232     4.739301e+02 -2.066200e+02
-3 14232     3.810000e+02 -5.005601e+02
-6 14232     3.036200e+02 -2.094399e+02
-7 14232     1.842500e+02 -1.166000e+02
-8 14232     4.160300e+02 -2.216500e+02
-12 14232     3.216899e+02 -1.760500e+02
-13 14232     6.064900e+02 -4.448500e+02
-2 14233     4.739301e+02 -2.066200e+02
-3 14233     3.810000e+02 -5.005601e+02
-8 14233     4.160300e+02 -2.216500e+02
-2 14234     -3.240100e+02 -2.089700e+02
-7 14234     -3.597400e+02 6.897998e+01
-8 14234     -2.087300e+02 -1.891100e+02
-15 14234     -3.326800e+02 1.387600e+02
-2 14235     1.024500e+02 -2.152700e+02
-6 14235     -8.467001e+01 -2.346899e+02
-12 14235     -8.434003e+01 -1.804900e+02
-2 14236     2.417400e+02 -2.210200e+02
-6 14236     5.521997e+01 -2.459301e+02
-8 14236     2.184400e+02 -2.319400e+02
-12 14236     5.352002e+01 -1.994300e+02
-13 14236     4.027200e+02 -4.273300e+02
-2 14237     -3.087400e+02 -2.251500e+02
-7 14237     -3.538900e+02 4.990997e+01
-8 14237     -1.977000e+02 -2.032200e+02
-13 14237     8.228003e+01 -2.630700e+02
-15 14237     -3.290900e+02 1.104000e+02
-2 14238     4.325000e+01 -2.257300e+02
-3 14238     -3.137000e+01 -5.334399e+02
-6 14238     -1.419400e+02 -2.398199e+02
-8 14238     5.945001e+01 -2.295800e+02
-12 14238     -1.369300e+02 -1.830100e+02
-2 14239     4.325000e+01 -2.257300e+02
-6 14239     -1.419400e+02 -2.398199e+02
-8 14239     5.945001e+01 -2.295800e+02
-12 14239     -1.369300e+02 -1.830100e+02
-2 14240     -3.206000e+02 -2.267600e+02
-3 14240     -4.272600e+02 -5.583700e+02
-7 14240     -3.640900e+02 4.996002e+01
-8 14240     -2.082200e+02 -2.038100e+02
-13 14240     7.354999e+01 -2.622600e+02
-2 14241     2.597000e+02 -2.298800e+02
-3 14241     1.811300e+02 -5.286500e+02
-4 14241     -4.547600e+02 -4.186100e+02
-8 14241     2.334800e+02 -2.395800e+02
-9 14241     1.205900e+02 -9.402002e+01
-13 14241     4.163500e+02 -4.356200e+02
-2 14242     3.557600e+02 -2.312100e+02
-8 14242     3.124500e+02 -2.432700e+02
-2 14243     -3.289000e+02 -2.372600e+02
-3 14243     -4.348600e+02 -5.700300e+02
-2 14244     4.634900e+02 -2.371700e+02
-6 14244     2.926300e+02 -2.394000e+02
-8 14244     4.070900e+02 -2.471900e+02
-2 14245     -1.721997e+01 -2.377800e+02
-6 14245     -1.994500e+02 -2.396200e+02
-9 14245     -1.111100e+02 -1.153100e+02
-2 14246     2.651300e+02 -2.376600e+02
-3 14246     1.869300e+02 -5.339800e+02
-6 14246     7.984998e+01 -2.570699e+02
-9 14246     1.255100e+02 -9.876001e+01
-12 14246     8.019000e+01 -2.125700e+02
-13 14246     4.205800e+02 -4.395300e+02
-2 14247     2.830601e+02 -2.381000e+02
-8 14247     2.532700e+02 -2.461100e+02
-2 14248     -6.152300e+02 -2.493500e+02
-8 14248     -4.394000e+02 -2.188400e+02
-10 14248     -6.241100e+02 1.451200e+02
-13 14248     -1.263400e+02 -2.447700e+02
-15 14248     -6.366800e+02 1.327800e+02
-2 14249     1.830100e+02 -2.489900e+02
-3 14249     1.080100e+02 -5.507400e+02
-6 14249     -3.830017e+00 -2.697900e+02
-8 14249     1.704200e+02 -2.529700e+02
-9 14249     5.817999e+01 -1.138700e+02
-2 14250     4.957000e+02 -2.582100e+02
-3 14250     4.034399e+02 -5.523800e+02
-9 14250     3.111100e+02 -1.091900e+02
-2 14251     -3.586200e+02 -2.695500e+02
-7 14251     -4.079500e+02 5.000000e+00
-9 14251     -4.115300e+02 -1.656800e+02
-13 14251     3.640002e+01 -2.973400e+02
-2 14252     3.613000e+02 -2.700300e+02
-8 14252     3.171500e+02 -2.739000e+02
-2 14253     4.588700e+02 -2.705600e+02
-6 14253     2.881300e+02 -2.657600e+02
-2 14254     -4.808002e+01 -2.706700e+02
-3 14254     -1.252200e+02 -5.839000e+02
-6 14254     -2.280300e+02 -2.640200e+02
-8 14254     -9.750000e+00 -2.600700e+02
-2 14255     -3.544300e+02 -2.737800e+02
-3 14255     -4.587500e+02 -6.082600e+02
-7 14255     -4.052700e+02 6.300049e-01
-8 14255     -2.382900e+02 -2.437700e+02
-9 14255     -4.072200e+02 -1.690300e+02
-13 14255     3.896002e+01 -3.007700e+02
-2 14256     -2.664900e+02 -2.744400e+02
-13 14256     9.414001e+01 -3.186000e+02
-2 14257     -3.234400e+02 -2.752900e+02
-4 14257     -2.787600e+02 -1.844700e+02
-7 14257     -3.823900e+02 -4.229980e+00
-8 14257     -2.132100e+02 -2.458600e+02
-9 14257     -3.795700e+02 -1.683500e+02
-13 14257     5.931000e+01 -3.074100e+02
-2 14258     1.900400e+02 -2.772400e+02
-7 14258     -8.681000e+01 -1.546500e+02
-8 14258     1.754100e+02 -2.769100e+02
-9 14258     6.603003e+01 -1.368000e+02
-2 14259     1.139200e+02 -2.778900e+02
-6 14259     -7.056000e+01 -2.856600e+02
-8 14259     1.155400e+02 -2.725900e+02
-12 14259     -6.695001e+01 -2.348500e+02
-2 14260     1.045500e+02 -2.803100e+02
-3 14260     3.009998e+01 -5.859399e+02
-6 14260     -7.903000e+01 -2.899301e+02
-7 14260     -1.427900e+02 -1.341700e+02
-8 14260     1.088000e+02 -2.739100e+02
-12 14260     -7.490002e+01 -2.371400e+02
-2 14261     5.676801e+02 -2.824200e+02
-8 14261     4.998300e+02 -2.813500e+02
-9 14261     3.689500e+02 -1.278200e+02
-2 14262     2.101300e+02 -2.962400e+02
-6 14262     2.500000e+01 -3.095100e+02
-13 14262     3.761899e+02 -4.683199e+02
-2 14263     3.368300e+02 -2.958000e+02
-3 14263     2.566300e+02 -5.930100e+02
-6 14263     1.547000e+02 -3.060500e+02
-8 14263     2.972100e+02 -2.924800e+02
-12 14263     1.606700e+02 -2.667700e+02
-2 14264     -4.524900e+02 -2.972800e+02
-4 14264     -2.621800e+02 -1.222200e+02
-7 14264     -4.880500e+02 -1.609003e+01
-8 14264     -3.172100e+02 -2.617700e+02
-9 14264     -4.902900e+02 -1.946400e+02
-13 14264     -3.209998e+01 -3.090200e+02
-15 14264     -5.120600e+02 3.427002e+01
-2 14265     1.079300e+02 -2.970800e+02
-8 14265     1.116600e+02 -2.878700e+02
-2 14266     2.694000e+01 -3.006300e+02
-3 14266     -4.675000e+01 -6.109500e+02
-13 14266     2.502200e+02 -4.328600e+02
-2 14267     -8.739990e+00 -3.023100e+02
-9 14267     -1.010700e+02 -1.693200e+02
-13 14267     2.318000e+02 -4.205700e+02
-2 14268     -4.128000e+02 -3.044000e+02
-7 14268     -4.580800e+02 -2.594000e+01
-15 14268     -4.770100e+02 1.707001e+01
-2 14269     9.496002e+01 -3.067100e+02
-8 14269     1.011300e+02 -2.947400e+02
-2 14270     4.301400e+02 -3.078000e+02
-8 14270     3.786000e+02 -3.023400e+02
-2 14271     3.840601e+02 -3.094400e+02
-6 14271     2.066800e+02 -3.112400e+02
-2 14272     2.459800e+02 -3.128300e+02
-4 14272     -4.936600e+02 -4.032000e+02
-6 14272     6.271997e+01 -3.235500e+02
-8 14272     2.229700e+02 -3.045200e+02
-12 14272     6.627002e+01 -2.792100e+02
-2 14273     4.019399e+02 -3.182700e+02
-8 14273     3.537100e+02 -3.112200e+02
-2 14274     -4.056800e+02 -3.195300e+02
-8 14274     -2.819400e+02 -2.819700e+02
-13 14274     -6.919983e+00 -3.355200e+02
-15 14274     -4.812000e+02 -7.210022e+00
-2 14275     4.060300e+02 -3.222500e+02
-8 14275     3.573200e+02 -3.140400e+02
-2 14276     1.234600e+02 -3.337800e+02
-6 14276     -5.916998e+01 -3.392200e+02
-8 14276     1.232200e+02 -3.170200e+02
-13 14276     3.129600e+02 -4.737200e+02
-2 14277     6.796997e+01 -3.435500e+02
-6 14277     -1.143700e+02 -3.409900e+02
-2 14278     -3.880000e+02 -3.455400e+02
-7 14278     -4.541700e+02 -7.309998e+01
-2 14279     -3.681200e+02 -3.470800e+02
-6 14279     -5.474500e+02 -3.032000e+02
-7 14279     -4.404000e+02 -7.573999e+01
-9 14279     -4.124500e+02 -2.304700e+02
-13 14279     1.075000e+01 -3.648100e+02
-2 14280     -4.269400e+02 -3.486800e+02
-7 14280     -4.847400e+02 -7.316998e+01
-9 14280     -4.621600e+02 -2.361400e+02
-15 14280     -5.200500e+02 -4.428003e+01
-2 14281     3.254200e+02 -3.556800e+02
-8 14281     2.882900e+02 -3.402100e+02
-2 14282     1.813000e+02 -3.726400e+02
-6 14282     -2.349976e+00 -3.792600e+02
-12 14282     -3.200073e-01 -3.320900e+02
-2 14283     3.576100e+02 -3.733300e+02
-12 14283     1.850800e+02 -3.405700e+02
-2 14284     -2.899200e+02 -3.755200e+02
-8 14284     -1.955600e+02 -3.321400e+02
-2 14285     -3.188300e+02 -3.759700e+02
-6 14285     -4.938200e+02 -3.399600e+02
-7 14285     -4.126800e+02 -1.113100e+02
-8 14285     -2.189000e+02 -3.311100e+02
-13 14285     3.602002e+01 -3.979300e+02
-2 14286     -5.609400e+02 -3.808900e+02
-8 14286     -4.087700e+02 -3.309700e+02
-13 14286     -1.205200e+02 -3.670800e+02
-2 14287     -3.001700e+02 -3.970200e+02
-6 14287     -4.750900e+02 -3.653900e+02
-7 14287     -4.053700e+02 -1.334100e+02
-2 14288     -2.772800e+02 -4.038199e+02
-12 14288     -4.049000e+02 -2.981200e+02
-2 14289     5.564100e+02 -4.271200e+02
-8 14289     4.837200e+02 -4.032500e+02
-2 14290     4.940002e+00 -4.517000e+02
-6 14290     -1.739900e+02 -4.469301e+02
-12 14290     -1.658800e+02 -3.868500e+02
-2 14291     6.131000e+02 -4.820200e+02
-10 14291     2.978900e+02 -4.174301e+02
-2 14292     -3.865800e+02 -5.007400e+02
-8 14292     -2.825000e+02 -4.361000e+02
-12 14292     -5.279800e+02 -4.084800e+02
-2 14293     6.222000e+02 -5.302000e+02
-9 14293     4.267500e+02 -3.245900e+02
-2 14294     5.187900e+02 -5.360601e+02
-9 14294     3.441500e+02 -3.345100e+02
-2 14295     4.755300e+02 -5.446700e+02
-9 14295     3.101400e+02 -3.427500e+02
-2 14296     4.877300e+02 -5.510601e+02
-9 14296     3.200601e+02 -3.479500e+02
-10 14296     1.266600e+02 -4.589800e+02
-15 14296     2.319800e+02 -5.699200e+02
-2 14297     6.494200e+02 -5.832300e+02
-6 14297     4.568900e+02 -5.965400e+02
-7 14297     2.618700e+02 -4.556700e+02
-2 14298     4.857200e+02 -5.921100e+02
-9 14298     3.221100e+02 -3.804300e+02
-2 14299     4.134500e+02 -5.933900e+02
-7 14299     6.189001e+01 -4.265300e+02
-2 14300     3.837300e+02 -5.958900e+02
-9 14300     2.408000e+02 -3.889000e+02
-2 14301     5.693300e+02 -5.961899e+02
-9 14301     3.888000e+02 -3.789200e+02
-2 14302     3.866500e+02 -6.056200e+02
-9 14302     2.448199e+02 -3.959600e+02
-2 14303     4.313800e+02 -6.075800e+02
-7 14303     7.189001e+01 -4.430900e+02
-12 14303     2.249900e+02 -5.928800e+02
-2 14304     -2.309000e+02 5.949200e+02
-3 14304     -3.587200e+02 2.535500e+02
-4 14304     1.911400e+02 -4.426300e+02
-13 14304     2.584800e+02 4.351700e+02
-14 14304     3.969900e+02 7.440002e+01
-2 14305     -2.549600e+02 5.939900e+02
-4 14305     1.895400e+02 -4.241100e+02
-14 14305     3.724600e+02 7.146997e+01
-2 14306     -9.278998e+01 5.895400e+02
-14 14306     5.474700e+02 8.389001e+01
-2 14307     3.287000e+01 5.894600e+02
-3 14307     -1.139200e+02 2.459200e+02
-13 14307     5.085300e+02 4.634100e+02
-14 14307     6.935601e+02 1.003200e+02
-2 14308     -1.005700e+02 5.863300e+02
-3 14308     -2.373500e+02 2.446000e+02
-4 14308     1.861300e+02 -5.436500e+02
-5 14308     6.477100e+02 1.711300e+02
-11 14308     3.454200e+02 3.400024e+00
-13 14308     3.789800e+02 4.432200e+02
-14 14308     5.397700e+02 8.007001e+01
-2 14309     -1.740600e+02 5.660300e+02
-5 14309     5.617600e+02 1.453400e+02
-8 14309     -6.409998e+01 4.443700e+02
-11 14309     2.696600e+02 -2.009003e+01
-13 14309     3.092400e+02 4.185500e+02
-14 14309     4.576000e+02 5.371002e+01
-2 14310     2.628003e+01 5.667300e+02
-3 14310     -1.197800e+02 2.246200e+02
-5 14310     7.994100e+02 1.658000e+02
-11 14310     4.815200e+02 3.390015e+00
-13 14310     5.007100e+02 4.434600e+02
-14 14310     6.851300e+02 7.765997e+01
-2 14311     -1.944800e+02 5.637600e+02
-3 14311     -3.248400e+02 2.238500e+02
-8 14311     -8.114001e+01 4.425200e+02
-2 14312     -1.944800e+02 5.637600e+02
-4 14312     1.733500e+02 -4.658000e+02
-13 14312     2.903700e+02 4.142200e+02
-14 14312     4.348600e+02 4.942999e+01
-2 14313     1.489001e+01 5.634400e+02
-14 14313     6.722500e+02 7.279999e+01
-2 14314     1.489001e+01 5.634400e+02
-11 14314     4.694500e+02 -7.899780e-01
-13 14314     4.897600e+02 4.389600e+02
-14 14314     6.722500e+02 7.279999e+01
-2 14315     -2.173999e+01 5.614200e+02
-5 14315     7.392600e+02 1.560700e+02
-8 14315     6.285999e+01 4.446900e+02
-11 14315     4.291100e+02 -6.820007e+00
-13 14315     4.531300e+02 4.327200e+02
-14 14315     6.286100e+02 6.658002e+01
-2 14316     -2.849200e+02 5.545800e+02
-5 14316     4.387200e+02 1.246900e+02
-8 14316     -1.562800e+02 4.330100e+02
-14 14316     3.383600e+02 3.122998e+01
-2 14317     -1.336200e+02 5.518500e+02
-3 14317     -2.690400e+02 2.109900e+02
-5 14317     6.053600e+02 1.353100e+02
-8 14317     -3.114001e+01 4.341800e+02
-11 14317     3.089301e+02 -2.532001e+01
-2 14318     -3.200600e+02 5.504500e+02
-4 14318     1.658800e+02 -3.748400e+02
-5 14318     4.015300e+02 1.175600e+02
-6 14318     -5.426300e+02 8.679800e+02
-8 14318     -1.850400e+02 4.282600e+02
-13 14318     1.785300e+02 3.882900e+02
-14 14318     3.022000e+02 2.400000e+01
-2 14319     2.676100e+02 5.502100e+02
-3 14319     1.225000e+02 2.090600e+02
-6 14319     1.767100e+02 8.532600e+02
-8 14319     2.894900e+02 4.287700e+02
-9 14319     7.606000e+01 5.621900e+02
-13 14319     6.706700e+02 3.540300e+02
-2 14320     -6.453998e+01 5.491100e+02
-3 14320     -2.049300e+02 2.078500e+02
-4 14320     1.650300e+02 -5.685200e+02
-5 14320     6.867800e+02 1.399700e+02
-8 14320     2.721997e+01 4.346200e+02
-11 14320     3.823500e+02 -2.123999e+01
-13 14320     4.109900e+02 4.174400e+02
-14 14320     5.786100e+02 4.985999e+01
-2 14321     -1.627400e+02 5.481300e+02
-4 14321     1.643800e+02 -4.882300e+02
-5 14321     5.727100e+02 1.291500e+02
-8 14321     -5.481000e+01 4.307400e+02
-13 14321     3.188600e+02 4.051500e+02
-14 14321     4.688600e+02 3.800000e+01
-2 14322     -3.263600e+02 5.470400e+02
-3 14322     -4.496400e+02 2.095800e+02
-4 14322     1.648600e+02 -3.701600e+02
-5 14322     3.944600e+02 1.149700e+02
-6 14322     -5.503900e+02 8.625100e+02
-8 14322     -1.904500e+02 4.258300e+02
-11 14322     1.193000e+02 -4.870001e+01
-13 14322     1.730800e+02 3.862100e+02
-14 14322     2.958500e+02 2.078998e+01
-2 14323     -1.722900e+02 5.472400e+02
-3 14323     -3.046200e+02 2.070600e+02
-4 14323     1.639301e+02 -4.805800e+02
-5 14323     5.620500e+02 1.277700e+02
-8 14323     -6.281000e+01 4.298400e+02
-11 14323     2.712700e+02 -3.446997e+01
-13 14323     3.095100e+02 4.032100e+02
-14 14323     4.580500e+02 3.640997e+01
-2 14324     5.819800e+02 5.459200e+02
-8 14324     5.447900e+02 4.200800e+02
-2 14325     -2.632400e+02 5.420900e+02
-4 14325     1.615400e+02 -4.131100e+02
-6 14325     -4.694800e+02 8.705900e+02
-8 14325     -1.380600e+02 4.233500e+02
-11 14325     1.809400e+02 -4.754999e+01
-13 14325     2.279301e+02 3.891200e+02
-14 14325     3.609600e+02 2.244000e+01
-2 14326     2.998700e+02 5.412300e+02
-3 14326     1.541500e+02 2.004700e+02
-6 14326     2.138500e+02 8.387700e+02
-8 14326     3.149700e+02 4.219800e+02
-9 14326     1.053400e+02 5.543800e+02
-11 14326     6.237800e+02 -1.073100e+02
-13 14326     6.975500e+02 3.415400e+02
-2 14327     -3.529300e+02 5.356400e+02
-4 14327     1.593700e+02 -3.516300e+02
-5 14327     3.660000e+02 1.027600e+02
-2 14328     2.660601e+02 5.341600e+02
-3 14328     1.216400e+02 1.934200e+02
-6 14328     1.742500e+02 8.351800e+02
-8 14328     2.874300e+02 4.161300e+02
-9 14328     7.565997e+01 5.472500e+02
-11 14328     5.978700e+02 -1.068700e+02
-13 14328     6.686200e+02 3.411500e+02
-2 14329     3.045000e+02 5.339600e+02
-6 14329     2.201900e+02 8.291400e+02
-8 14329     3.190700e+02 4.158900e+02
-2 14330     -6.823700e+02 5.315100e+02
-11 14330     -1.918300e+02 -8.656000e+01
-13 14330     -1.158900e+02 3.397000e+02
-14 14330     -4.625000e+01 -2.085999e+01
-2 14331     -6.463200e+02 5.305300e+02
-4 14331     1.609000e+02 -1.803900e+02
-2 14332     -1.453300e+02 5.295600e+02
-3 14332     -2.795200e+02 1.898600e+02
-4 14332     1.536200e+02 -4.991700e+02
-5 14332     5.908199e+02 1.129100e+02
-8 14332     -4.038000e+01 4.161600e+02
-11 14332     2.985699e+02 -4.565002e+01
-13 14332     3.336600e+02 3.919600e+02
-14 14332     4.869100e+02 2.258002e+01
-2 14333     -1.453300e+02 5.295600e+02
-3 14333     -2.795200e+02 1.898600e+02
-8 14333     -4.038000e+01 4.161600e+02
-2 14334     3.391400e+02 5.293100e+02
-3 14334     1.915699e+02 1.897500e+02
-6 14334     2.604100e+02 8.179000e+02
-8 14334     3.473800e+02 4.112200e+02
-9 14334     1.396100e+02 5.446900e+02
-11 14334     6.566100e+02 -1.255600e+02
-13 14334     7.312500e+02 3.250800e+02
-2 14335     -2.911600e+02 5.283800e+02
-4 14335     1.544700e+02 -3.911100e+02
-5 14335     4.294600e+02 9.983002e+01
-6 14335     -5.040200e+02 8.464200e+02
-8 14335     -1.617800e+02 4.116900e+02
-13 14335     2.022700e+02 3.751400e+02
-14 14335     3.306500e+02 7.260010e+00
-2 14336     -4.300300e+02 5.266500e+02
-13 14336     8.440002e+01 3.604600e+02
-14 14336     1.905800e+02 -5.520020e+00
-2 14337     4.882300e+02 5.264300e+02
-8 14337     4.651100e+02 4.038700e+02
-2 14338     6.261000e+02 5.216300e+02
-8 14338     5.801899e+02 3.989900e+02
-2 14339     -4.220300e+02 5.201000e+02
-3 14339     -5.418000e+02 1.866900e+02
-4 14339     1.520900e+02 -3.057300e+02
-5 14339     2.931700e+02 8.303998e+01
-8 14339     -2.695400e+02 4.016500e+02
-14 14339     1.980601e+02 -1.057001e+01
-2 14340     -2.776500e+02 5.199000e+02
-3 14340     -4.039700e+02 1.832500e+02
-4 14340     1.494900e+02 -3.998300e+02
-5 14340     4.439200e+02 9.290002e+01
-6 14340     -4.851100e+02 8.390000e+02
-8 14340     -1.501600e+02 4.051600e+02
-2 14341     -1.255000e+02 5.199300e+02
-4 14341     1.478199e+02 -5.134600e+02
-5 14341     6.126100e+02 1.051000e+02
-6 14341     -2.923900e+02 8.746000e+02
-8 14341     -2.384998e+01 4.089800e+02
-11 14341     3.192600e+02 -5.128003e+01
-13 14341     3.515300e+02 3.862900e+02
-14 14341     5.081899e+02 1.539001e+01
-2 14342     5.921000e+02 5.185400e+02
-6 14342     5.394301e+02 7.269600e+02
-8 14342     5.513500e+02 3.963200e+02
-2 14343     -8.502002e+01 5.184100e+02
-3 14343     -2.235500e+02 1.794600e+02
-4 14343     1.466700e+02 -5.468000e+02
-5 14343     6.595400e+02 1.072900e+02
-8 14343     1.010999e+01 4.084400e+02
-13 14343     3.891801e+02 3.902300e+02
-14 14343     5.529301e+02 1.894000e+01
-2 14344     -2.836300e+02 5.120100e+02
-5 14344     4.363300e+02 8.479999e+01
-6 14344     -4.927600e+02 8.271500e+02
-2 14345     -2.235700e+02 5.117400e+02
-3 14345     -3.536000e+02 1.743600e+02
-4 14345     1.442900e+02 -4.372800e+02
-6 14345     -4.162600e+02 8.405500e+02
-8 14345     -1.056900e+02 3.998200e+02
-11 14345     2.183700e+02 -6.746997e+01
-13 14345     2.612800e+02 3.690100e+02
-14 14345     4.004399e+02 -1.909973e+00
-2 14346     -1.464700e+02 5.108200e+02
-3 14346     -2.808300e+02 1.717200e+02
-4 14346     1.424200e+02 -4.954301e+02
-5 14346     5.879800e+02 9.382001e+01
-6 14346     -3.182900e+02 8.577100e+02
-8 14346     -4.072998e+01 4.004200e+02
-11 14346     2.968300e+02 -6.097998e+01
-13 14346     3.314900e+02 3.758700e+02
-14 14346     4.844301e+02 4.200012e+00
-2 14347     -1.189100e+02 5.092500e+02
-4 14347     1.419100e+02 -5.175900e+02
-5 14347     6.195200e+02 9.609003e+01
-6 14347     -2.833900e+02 8.645300e+02
-8 14347     -1.829999e+01 4.015600e+02
-11 14347     3.258000e+02 -5.946002e+01
-13 14347     3.568400e+02 3.775000e+02
-14 14347     5.146000e+02 5.169983e+00
-2 14348     -2.900700e+02 5.076000e+02
-3 14348     -4.177100e+02 1.707900e+02
-4 14348     1.431600e+02 -3.897900e+02
-5 14348     4.292300e+02 8.053003e+01
-6 14348     -5.003900e+02 8.202900e+02
-8 14348     -1.603200e+02 3.952900e+02
-11 14348     1.540600e+02 -7.598999e+01
-13 14348     2.026200e+02 3.590200e+02
-14 14348     3.307600e+02 -1.147998e+01
-2 14349     -3.979400e+02 5.069600e+02
-4 14349     1.461400e+02 -3.190200e+02
-5 14349     3.157500e+02 7.484998e+01
-8 14349     -2.503100e+02 3.929500e+02
-14 14349     2.206100e+02 -1.950000e+01
-2 14350     -3.102400e+02 5.068100e+02
-3 14350     -4.362300e+02 1.703400e+02
-4 14350     1.434100e+02 -3.763400e+02
-5 14350     4.079301e+02 7.871002e+01
-6 14350     -5.254400e+02 8.157000e+02
-8 14350     -1.770300e+02 3.941500e+02
-11 14350     1.347000e+02 -7.797998e+01
-13 14350     1.852700e+02 3.566700e+02
-14 14350     3.098500e+02 -1.359998e+01
-2 14351     -1.634300e+02 5.069000e+02
-3 14351     -2.975300e+02 1.690700e+02
-4 14351     1.407000e+02 -4.815800e+02
-5 14351     5.675400e+02 8.947998e+01
-6 14351     -3.399200e+02 8.492300e+02
-8 14351     -5.522998e+01 3.981400e+02
-11 14351     2.800300e+02 -6.612000e+01
-13 14351     3.155200e+02 3.709700e+02
-14 14351     4.654900e+02 -1.239990e+00
-2 14352     5.921100e+02 4.973800e+02
-3 14352     4.357100e+02 1.635500e+02
-6 14352     5.401000e+02 7.033500e+02
-9 14352     3.599800e+02 5.219600e+02
-2 14353     -2.898500e+02 4.969000e+02
-3 14353     -4.188700e+02 1.605100e+02
-4 14353     1.374400e+02 -3.882600e+02
-5 14353     4.281200e+02 7.045001e+01
-6 14353     -4.992400e+02 8.066900e+02
-8 14353     -1.603200e+02 3.865200e+02
-13 14353     2.024700e+02 3.505500e+02
-14 14353     3.300900e+02 -2.126001e+01
-2 14354     -2.770900e+02 4.974400e+02
-5 14354     4.420601e+02 7.219000e+01
-6 14354     -4.828100e+02 8.106400e+02
-8 14354     -1.497200e+02 3.874600e+02
-2 14355     -7.201500e+02 4.916800e+02
-4 14355     1.445800e+02 -1.397600e+02
-5 14355     7.270020e+00 4.244000e+01
-2 14356     -1.716000e+02 4.888100e+02
-3 14356     -3.046500e+02 1.511000e+02
-4 14356     1.306300e+02 -4.730699e+02
-5 14356     5.574800e+02 7.110999e+01
-11 14356     2.710200e+02 -8.060999e+01
-13 14356     3.075000e+02 3.561900e+02
-14 14356     4.558101e+02 -1.813000e+01
-2 14357     -1.716000e+02 4.888100e+02
-4 14357     1.306300e+02 -4.730699e+02
-5 14357     5.574800e+02 7.110999e+01
-6 14357     -3.485800e+02 8.237300e+02
-8 14357     -6.190997e+01 3.827500e+02
-11 14357     2.710200e+02 -8.060999e+01
-2 14358     -7.889400e+02 4.869000e+02
-4 14358     1.440400e+02 -1.066400e+02
-5 14358     -5.303998e+01 3.563000e+01
-8 14358     -5.686700e+02 3.666500e+02
-2 14359     -6.716200e+02 4.857000e+02
-4 14359     1.406500e+02 -1.633700e+02
-5 14359     5.033002e+01 3.926001e+01
-8 14359     -4.733100e+02 3.673100e+02
-11 14359     -1.825400e+02 -1.167600e+02
-13 14359     -1.075400e+02 3.088600e+02
-14 14359     -3.845001e+01 -5.692999e+01
-2 14360     -6.716200e+02 4.857000e+02
-3 14360     -7.876100e+02 1.586100e+02
-4 14360     1.406500e+02 -1.633700e+02
-5 14360     5.033002e+01 3.926001e+01
-8 14360     -4.733100e+02 3.673100e+02
-11 14360     -1.825400e+02 -1.167600e+02
-13 14360     -1.075400e+02 3.088600e+02
-14 14360     -3.845001e+01 -5.692999e+01
-2 14361     -2.900400e+02 4.862000e+02
-3 14361     -4.187900e+02 1.498500e+02
-4 14361     1.315600e+02 -3.871900e+02
-5 14361     4.270601e+02 6.003998e+01
-6 14361     -4.983700e+02 7.925000e+02
-8 14361     -1.602900e+02 3.779100e+02
-11 14361     1.540000e+02 -9.208002e+01
-13 14361     2.019301e+02 3.425200e+02
-14 14361     3.295900e+02 -3.107001e+01
-2 14362     -3.102500e+02 4.852500e+02
-4 14362     1.314200e+02 -3.736400e+02
-5 14362     4.059500e+02 5.790002e+01
-6 14362     -5.232600e+02 7.867700e+02
-8 14362     -1.767900e+02 3.761800e+02
-11 14362     1.342700e+02 -9.529999e+01
-13 14362     1.843300e+02 3.389800e+02
-2 14363     2.556000e+01 4.835900e+02
-3 14363     -1.205500e+02 1.447600e+02
-6 14363     -9.731000e+01 8.633100e+02
-11 14363     4.792200e+02 -6.585999e+01
-13 14363     4.933700e+02 3.724300e+02
-14 14363     6.792800e+02 -4.239990e+00
-2 14364     1.072600e+02 4.826800e+02
-8 14364     1.708200e+02 3.837000e+02
-13 14364     5.756500e+02 3.808500e+02
-14 14364     7.788000e+02 3.830017e+00
-2 14365     -1.610500e+02 4.817800e+02
-4 14365     1.261200e+02 -4.803000e+02
-5 14365     5.689100e+02 6.457001e+01
-8 14365     -5.291998e+01 3.769800e+02
-11 14365     2.826600e+02 -8.409998e+01
-14 14365     4.669000e+02 -2.353998e+01
-2 14366     -8.415002e+01 4.820800e+02
-3 14366     -2.224100e+02 1.436800e+02
-4 14366     1.243800e+02 -5.421100e+02
-5 14366     6.573300e+02 7.072998e+01
-6 14366     -2.369000e+02 8.353300e+02
-8 14366     1.135999e+01 3.787700e+02
-11 14366     3.610699e+02 -7.890997e+01
-13 14366     3.882300e+02 3.596300e+02
-14 14366     5.526899e+02 -1.666998e+01
-2 14367     1.614300e+02 4.800400e+02
-3 14367     6.500000e+00 1.418900e+02
-8 14367     2.166000e+02 3.827400e+02
-2 14368     -4.245800e+02 4.794000e+02
-3 14368     -5.457200e+02 1.461000e+02
-4 14368     1.317800e+02 -3.000900e+02
-5 14368     2.872800e+02 4.689001e+01
-11 14368     2.609003e+01 -1.074700e+02
-14 14368     1.923101e+02 -4.716998e+01
-2 14369     -4.245800e+02 4.794000e+02
-3 14369     -5.457200e+02 1.461000e+02
-4 14369     1.317800e+02 -3.000900e+02
-5 14369     2.872800e+02 4.689001e+01
-8 14369     -2.713500e+02 3.698400e+02
-14 14369     1.923101e+02 -4.716998e+01
-2 14370     -2.632700e+02 4.790100e+02
-6 14370     -4.634500e+02 7.903800e+02
-8 14370     -1.379800e+02 3.727700e+02
-2 14371     8.298999e+01 4.773400e+02
-3 14371     -6.697998e+01 1.381900e+02
-8 14371     1.504300e+02 3.786200e+02
-11 14371     5.440699e+02 -6.377002e+01
-13 14371     5.503600e+02 3.740400e+02
-14 14371     7.484800e+02 -4.010010e+00
-2 14372     8.298999e+01 4.773400e+02
-3 14372     -6.697998e+01 1.381900e+02
-8 14372     1.504300e+02 3.786200e+02
-13 14372     5.503600e+02 3.740400e+02
-14 14372     7.484800e+02 -4.010010e+00
-2 14373     -6.196002e+01 4.763700e+02
-13 14373     4.082600e+02 3.557000e+02
-14 14373     5.770300e+02 -2.169000e+01
-2 14374     -6.196002e+01 4.763700e+02
-13 14374     4.082600e+02 3.557000e+02
-14 14374     5.770300e+02 -2.169000e+01
-2 14375     -7.059500e+02 4.713000e+02
-4 14375     1.354900e+02 -1.451000e+02
-5 14375     1.803003e+01 2.666998e+01
-8 14375     -5.016000e+02 3.559000e+02
-13 14375     -1.331800e+02 2.956900e+02
-2 14376     -1.378998e+01 4.688800e+02
-5 14376     7.393500e+02 6.308002e+01
-13 14376     4.542500e+02 3.565300e+02
-14 14376     6.323300e+02 -2.220001e+01
-2 14377     -1.378998e+01 4.688800e+02
-5 14377     7.393500e+02 6.308002e+01
-6 14377     -1.476200e+02 8.345500e+02
-8 14377     6.937000e+01 3.698400e+02
-14 14377     6.323300e+02 -2.220001e+01
-2 14378     -3.328998e+01 4.677400e+02
-4 14378     1.146800e+02 -5.819399e+02
-5 14378     7.155601e+02 5.998999e+01
-6 14378     -1.723200e+02 8.288600e+02
-11 14378     4.153300e+02 -8.471997e+01
-14 14378     6.093300e+02 -2.550000e+01
-2 14379     -2.646002e+01 4.678000e+02
-3 14379     -1.689500e+02 1.303800e+02
-5 14379     7.240699e+02 6.071997e+01
-8 14379     5.910999e+01 3.686600e+02
-13 14379     4.418600e+02 3.540700e+02
-14 14379     6.176899e+02 -2.444000e+01
-2 14380     -2.646002e+01 4.678000e+02
-5 14380     7.240699e+02 6.071997e+01
-6 14380     -1.633500e+02 8.304900e+02
-8 14380     5.910999e+01 3.686600e+02
-11 14380     4.231400e+02 -8.389001e+01
-13 14380     4.418600e+02 3.540700e+02
-14 14380     6.176899e+02 -2.444000e+01
-2 14381     6.398999e+01 4.674000e+02
-3 14381     -8.452002e+01 1.296000e+02
-6 14381     -4.760999e+01 8.511200e+02
-8 14381     1.346300e+02 3.704500e+02
-14 14381     7.244600e+02 -1.601001e+01
-2 14382     -2.683100e+02 4.562400e+02
-4 14382     1.153500e+02 -3.988000e+02
-5 14382     4.477400e+02 3.352002e+01
-13 14382     2.189900e+02 3.208300e+02
-2 14383     -2.683100e+02 4.562400e+02
-11 14383     1.740200e+02 -1.135400e+02
-2 14384     -6.266998e+01 4.538000e+02
-3 14384     -2.028700e+02 1.161800e+02
-4 14384     1.077900e+02 -5.547000e+02
-5 14384     6.792500e+02 4.515997e+01
-6 14384     -2.089100e+02 8.050700e+02
-8 14384     2.844000e+01 3.564200e+02
-11 14384     3.834800e+02 -9.790997e+01
-13 14384     4.060900e+02 3.389700e+02
-14 14384     5.748300e+02 -4.096997e+01
-2 14385     -6.967900e+02 4.495700e+02
-4 14385     1.252800e+02 -1.476800e+02
-11 14385     -2.034200e+02 -1.427600e+02
-2 14386     -3.452700e+02 4.452300e+02
-3 14386     -4.698500e+02 1.110700e+02
-4 14386     1.117100e+02 -3.456000e+02
-6 14386     -5.629800e+02 7.297100e+02
-8 14386     -2.059100e+02 3.438100e+02
-14 14386     2.695699e+02 -7.190997e+01
-2 14387     -3.855100e+02 4.391100e+02
-3 14387     -5.090500e+02 1.059100e+02
-4 14387     1.101000e+02 -3.200900e+02
-5 14387     3.233500e+02 1.234998e+01
-8 14387     -2.388300e+02 3.380300e+02
-11 14387     6.229999e+01 -1.338500e+02
-2 14388     5.562000e+01 4.392500e+02
-3 14388     -9.265002e+01 1.020600e+02
-5 14388     8.224200e+02 3.803998e+01
-6 14388     -5.990002e+01 8.140900e+02
-13 14388     5.182200e+02 3.385300e+02
-14 14388     7.125300e+02 -4.465002e+01
-2 14389     -1.854400e+02 4.368700e+02
-4 14389     1.019500e+02 -4.563300e+02
-9 14389     -3.162100e+02 4.499900e+02
-11 14389     2.570100e+02 -1.224500e+02
-2 14390     -6.044300e+02 4.322200e+02
-4 14390     1.147800e+02 -1.934600e+02
-13 14390     -5.759003e+01 2.756000e+02
-14 14390     1.865002e+01 -9.800000e+01
-2 14391     -6.044300e+02 4.322200e+02
-3 14391     -7.232600e+02 1.043600e+02
-4 14391     1.147800e+02 -1.934600e+02
-11 14391     -1.297600e+02 -1.502300e+02
-13 14391     -5.759003e+01 2.756000e+02
-14 14391     1.865002e+01 -9.800000e+01
-2 14392     -7.121997e+01 4.317200e+02
-3 14392     -2.110500e+02 9.500000e+01
-4 14392     9.500000e+01 -5.443600e+02
-5 14392     6.670000e+02 2.238000e+01
-6 14392     -2.187500e+02 7.754600e+02
-8 14392     2.148999e+01 3.390500e+02
-13 14392     3.973199e+02 3.199700e+02
-14 14392     5.644100e+02 -6.322998e+01
-2 14393     -2.199707e-01 4.323700e+02
-3 14393     -1.444000e+02 9.547998e+01
-5 14393     7.522100e+02 2.709998e+01
-6 14393     -1.286100e+02 7.921500e+02
-8 14393     8.071002e+01 3.412100e+02
-11 14393     4.487600e+02 -1.112700e+02
-13 14393     4.622700e+02 3.258800e+02
-14 14393     6.436400e+02 -5.792999e+01
-2 14394     4.265997e+01 4.316400e+02
-13 14394     5.085000e+02 3.310600e+02
-14 14394     6.989900e+02 -5.329999e+01
-2 14395     4.265997e+01 4.316400e+02
-3 14395     -1.033500e+02 9.491998e+01
-8 14395     1.171100e+02 3.415900e+02
-13 14395     5.085000e+02 3.310600e+02
-14 14395     6.989900e+02 -5.329999e+01
-2 14396     -3.604100e+02 4.301300e+02
-3 14396     -4.852700e+02 9.733002e+01
-4 14396     1.045800e+02 -3.347900e+02
-5 14396     3.485900e+02 4.840027e+00
-6 14396     -5.799200e+02 7.079900e+02
-8 14396     -2.176400e+02 3.316800e+02
-11 14396     8.585999e+01 -1.395000e+02
-13 14396     1.392000e+02 2.926800e+02
-14 14396     2.539399e+02 -8.648999e+01
-2 14397     3.220500e+02 4.278200e+02
-8 14397     3.319500e+02 3.288300e+02
-9 14397     1.275900e+02 4.565700e+02
-2 14398     -1.800900e+02 4.271700e+02
-4 14398     9.640002e+01 -4.578400e+02
-5 14398     5.417500e+02 1.103003e+01
-6 14398     -3.549500e+02 7.453000e+02
-8 14398     -6.869000e+01 3.336700e+02
-2 14399     -1.800900e+02 4.271700e+02
-4 14399     9.640002e+01 -4.578400e+02
-5 14399     5.417500e+02 1.103003e+01
-8 14399     -6.869000e+01 3.336700e+02
-9 14399     -3.111500e+02 4.411700e+02
-2 14400     -8.403003e+01 4.258800e+02
-13 14400     3.838199e+02 3.141600e+02
-14 14400     5.483199e+02 -6.982001e+01
-2 14401     -6.574500e+02 4.225300e+02
-5 14401     5.710999e+01 -1.354999e+01
-11 14401     -1.734200e+02 -1.589400e+02
-2 14402     -6.574500e+02 4.225300e+02
-5 14402     5.710999e+01 -1.354999e+01
-11 14402     -1.734200e+02 -1.589400e+02
-2 14403     -6.574500e+02 4.225300e+02
-4 14403     1.123700e+02 -1.654500e+02
-11 14403     -1.734200e+02 -1.589400e+02
-2 14404     -7.095001e+01 4.197700e+02
-4 14404     8.854999e+01 -5.422500e+02
-5 14404     6.654200e+02 1.133002e+01
-6 14404     -2.190200e+02 7.613000e+02
-8 14404     2.112000e+01 3.295200e+02
-11 14404     3.740400e+02 -1.260500e+02
-13 14404     3.955500e+02 3.106200e+02
-14 14404     5.629800e+02 -7.432001e+01
-2 14405     -3.728500e+02 4.186800e+02
-5 14405     3.346200e+02 -6.440002e+00
-2 14406     4.049900e+02 4.163700e+02
-3 14406     2.579900e+02 8.457001e+01
-6 14406     3.323100e+02 6.707700e+02
-8 14406     3.998700e+02 3.174300e+02
-9 14406     1.992800e+02 4.489700e+02
-13 14406     7.760200e+02 2.154000e+02
-2 14407     -3.889100e+02 4.154200e+02
-3 14407     -5.145400e+02 8.065997e+01
-4 14407     9.878003e+01 -3.154400e+02
-5 14407     3.178900e+02 -9.429993e+00
-11 14407     5.883002e+01 -1.516100e+02
-14 14407     2.247000e+02 -1.014800e+02
-2 14408     -3.827300e+02 4.141800e+02
-4 14408     9.769000e+01 -3.190900e+02
-5 14408     3.242900e+02 -1.042999e+01
-8 14408     -2.361100e+02 3.184700e+02
-11 14408     6.458002e+01 -1.520300e+02
-13 14408     1.199600e+02 2.791900e+02
-14 14408     2.306500e+02 -1.016900e+02
-2 14409     -7.718100e+02 4.128000e+02
-5 14409     -4.585999e+01 -2.582001e+01
-8 14409     -5.534600e+02 3.076400e+02
-2 14410     -2.877700e+02 4.093500e+02
-4 14410     9.121002e+01 -3.794500e+02
-5 14410     4.226200e+02 -1.103003e+01
-6 14410     -4.879800e+02 6.989100e+02
-8 14410     -1.581000e+02 3.169100e+02
-11 14410     1.547300e+02 -1.504900e+02
-13 14410     2.003900e+02 2.830400e+02
-14 14410     3.272000e+02 -1.003600e+02
-2 14411     -1.066800e+02 4.061400e+02
-5 14411     6.226300e+02 -5.020020e+00
-6 14411     -2.618800e+02 7.358400e+02
-8 14411     -8.030029e+00 3.180900e+02
-2 14412     -5.326700e+02 4.041200e+02
-4 14412     9.871002e+01 -2.298100e+02
-5 14412     1.739300e+02 -2.484003e+01
-8 14412     -3.594100e+02 3.070300e+02
-13 14412     -2.190002e+00 2.609800e+02
-14 14412     8.391998e+01 -1.180200e+02
-2 14413     -8.314001e+01 4.019200e+02
-3 14413     -2.222600e+02 6.648999e+01
-9 14413     -2.274800e+02 4.214800e+02
-11 14413     3.605000e+02 -1.421800e+02
-13 14413     3.832400e+02 2.946700e+02
-14 14413     5.482100e+02 -9.292999e+01
-2 14414     -5.561900e+02 4.012800e+02
-3 14414     -6.773400e+02 7.373999e+01
-4 14414     9.840002e+01 -2.164600e+02
-5 14414     1.508500e+02 -2.853003e+01
-8 14414     -3.785200e+02 3.043400e+02
-12 14414     -6.270400e+02 6.179900e+02
-13 14414     -2.122998e+01 2.565900e+02
-14 14414     6.104999e+01 -1.219800e+02
-2 14415     -5.561900e+02 4.012800e+02
-4 14415     9.840002e+01 -2.164600e+02
-5 14415     1.508500e+02 -2.853003e+01
-8 14415     -3.785200e+02 3.043400e+02
-12 14415     -6.270400e+02 6.179900e+02
-2 14416     -3.475600e+02 4.010200e+02
-11 14416     9.788000e+01 -1.606500e+02
-2 14417     5.530400e+02 4.010700e+02
-6 14417     4.882400e+02 5.975300e+02
-9 14417     3.278600e+02 4.393800e+02
-2 14418     -4.318400e+02 3.989900e+02
-3 14418     -5.547500e+02 6.796997e+01
-4 14418     9.200000e+01 -2.872400e+02
-5 14418     2.728500e+02 -2.659003e+01
-11 14418     1.919000e+01 -1.661000e+02
-13 14418     7.854999e+01 2.642100e+02
-14 14418     1.805699e+02 -1.177300e+02
-2 14419     -3.639400e+02 3.967500e+02
-3 14419     -4.888500e+02 6.397998e+01
-4 14419     8.817999e+01 -3.287400e+02
-5 14419     3.417300e+02 -2.584998e+01
-8 14419     -2.206100e+02 3.046600e+02
-11 14419     8.128003e+01 -1.636900e+02
-13 14419     1.348500e+02 2.655800e+02
-14 14419     2.484500e+02 -1.179900e+02
-2 14420     -5.119400e+02 3.963300e+02
-4 14420     9.415997e+01 -2.405400e+02
-5 14420     1.929600e+02 -3.141998e+01
-8 14420     -3.422000e+02 3.014400e+02
-2 14421     -5.977500e+02 3.949700e+02
-4 14421     9.703003e+01 -1.932800e+02
-5 14421     1.105800e+02 -3.503998e+01
-8 14421     -4.123500e+02 2.984300e+02
-2 14422     3.017999e+01 3.913500e+02
-6 14422     -8.926001e+01 7.478800e+02
-9 14422     -1.311300e+02 4.148800e+02
-13 14422     4.909700e+02 2.958000e+02
-14 14422     6.795601e+02 -9.496002e+01
-2 14423     4.036600e+02 3.912700e+02
-3 14423     2.561500e+02 6.169000e+01
-8 14423     3.980500e+02 2.965700e+02
-9 14423     1.984200e+02 4.260600e+02
-2 14424     -7.580700e+02 3.878500e+02
-5 14424     -3.553003e+01 -4.590997e+01
-2 14425     5.038101e+02 3.839300e+02
-6 14425     4.309200e+02 5.841900e+02
-8 14425     4.763600e+02 2.860000e+02
-9 14425     2.860601e+02 4.234800e+02
-12 14425     5.139399e+02 5.918300e+02
-2 14426     3.037000e+01 3.828800e+02
-6 14426     -8.917001e+01 7.379600e+02
-8 14426     1.061000e+02 3.016800e+02
-9 14426     -1.299300e+02 4.079400e+02
-13 14426     4.901600e+02 2.887800e+02
-14 14426     6.789900e+02 -1.028600e+02
-2 14427     -2.602300e+02 3.801400e+02
-3 14427     -3.907900e+02 4.697998e+01
-4 14427     7.457001e+01 -3.948400e+02
-5 14427     4.495100e+02 -3.728998e+01
-6 14427     -4.509800e+02 6.694700e+02
-8 14427     -1.350000e+02 2.937700e+02
-11 14427     1.804600e+02 -1.713800e+02
-13 14427     2.225200e+02 2.625700e+02
-2 14428     -9.417999e+01 3.801200e+02
-5 14428     6.346000e+02 -2.981000e+01
-2 14429     6.217500e+02 3.795400e+02
-3 14429     4.689700e+02 5.582001e+01
-6 14429     5.660200e+02 5.618100e+02
-7 14429     5.697200e+02 5.367600e+02
-8 14429     5.747100e+02 2.801900e+02
-9 14429     3.866500e+02 4.227700e+02
-12 14429     6.440400e+02 5.747300e+02
-2 14430     2.757000e+02 3.784700e+02
-8 14430     2.942200e+02 2.888500e+02
-9 14430     8.870001e+01 4.119900e+02
-13 14430     6.602900e+02 2.071500e+02
-2 14431     -2.863700e+02 3.750300e+02
-3 14431     -4.172400e+02 4.196997e+01
-4 14431     7.300000e+01 -3.761400e+02
-5 14431     4.207000e+02 -4.328998e+01
-6 14431     -4.833400e+02 6.571600e+02
-8 14431     -1.564700e+02 2.895000e+02
-2 14432     -2.797700e+02 3.733400e+02
-5 14432     4.277800e+02 -4.521997e+01
-6 14432     -4.747200e+02 6.563400e+02
-8 14432     -1.512000e+02 2.885000e+02
-2 14433     -2.797700e+02 3.733400e+02
-6 14433     -4.747200e+02 6.563400e+02
-8 14433     -1.512000e+02 2.885000e+02
-13 14433     2.053000e+02 2.556200e+02
-14 14433     3.329500e+02 -1.334000e+02
-2 14434     -6.060700e+02 3.682800e+02
-5 14434     1.004500e+02 -5.820001e+01
-13 14434     -6.009998e+01 2.300100e+02
-2 14435     -6.060700e+02 3.682800e+02
-4 14435     8.544000e+01 -1.870500e+02
-5 14435     1.004500e+02 -5.820001e+01
-8 14435     -4.183900e+02 2.773800e+02
-11 14435     -1.319700e+02 -1.943700e+02
-12 14435     -6.808800e+02 5.756200e+02
-13 14435     -6.009998e+01 2.300100e+02
-2 14436     -6.060700e+02 3.682800e+02
-4 14436     8.544000e+01 -1.870500e+02
-5 14436     1.004500e+02 -5.820001e+01
-8 14436     -4.183900e+02 2.773800e+02
-12 14436     -6.808800e+02 5.756200e+02
-13 14436     -6.009998e+01 2.300100e+02
-2 14437     -5.957500e+02 3.692600e+02
-4 14437     8.548999e+01 -1.924600e+02
-5 14437     1.100600e+02 -5.706000e+01
-11 14437     -1.246000e+02 -1.931900e+02
-12 14437     -6.688400e+02 5.787000e+02
-13 14437     -5.263000e+01 2.310800e+02
-14 14437     2.240997e+01 -1.508100e+02
-2 14438     -6.694600e+02 3.679300e+02
-4 14438     8.804999e+01 -1.542000e+02
-5 14438     4.169000e+01 -6.006000e+01
-8 14438     -4.703800e+02 2.750700e+02
-11 14438     -1.844800e+02 -1.968500e+02
-12 14438     -7.538100e+02 5.652900e+02
-2 14439     1.361600e+02 3.663600e+02
-3 14439     -1.694000e+01 3.127002e+01
-6 14439     4.533002e+01 7.423700e+02
-8 14439     1.943500e+02 2.907800e+02
-9 14439     -4.038000e+01 3.966900e+02
-2 14440     -3.975200e+02 3.644200e+02
-4 14440     7.341998e+01 -3.043600e+02
-5 14440     3.042100e+02 -5.650000e+01
-11 14440     4.962000e+01 -1.899100e+02
-2 14441     1.164100e+02 3.629600e+02
-3 14441     -3.500000e+01 2.815002e+01
-6 14441     2.197998e+01 7.363600e+02
-8 14441     1.790100e+02 2.892200e+02
-2 14442     2.526100e+02 3.583000e+02
-6 14442     1.551800e+02 6.248100e+02
-8 14442     2.757500e+02 2.730000e+02
-9 14442     6.846002e+01 3.936800e+02
-12 14442     2.678700e+02 6.086100e+02
-13 14442     6.388199e+02 1.942500e+02
-14 14442     8.701600e+02 -2.223700e+02
-2 14443     -6.200700e+02 3.530200e+02
-4 14443     7.915002e+01 -1.781600e+02
-5 14443     8.587000e+01 -7.144000e+01
-8 14443     -4.301500e+02 2.649700e+02
-12 14443     -6.946300e+02 5.574800e+02
-2 14444     1.232500e+02 3.524300e+02
-3 14444     -2.853003e+01 1.832001e+01
-6 14444     2.904999e+01 7.212000e+02
-8 14444     1.835000e+02 2.788400e+02
-9 14444     -5.059998e+01 3.843400e+02
-13 14444     5.803500e+02 2.721000e+02
-14 14444     7.911100e+02 -1.253100e+02
-2 14445     -6.034998e+01 3.461500e+02
-6 14445     -2.011700e+02 6.734100e+02
-8 14445     3.071997e+01 2.710600e+02
-9 14445     -2.059200e+02 3.730300e+02
-2 14446     4.983700e+02 3.438700e+02
-6 14446     4.216400e+02 5.360500e+02
-2 14447     -9.470001e+01 3.388700e+02
-6 14447     -2.441100e+02 6.574100e+02
-8 14447     1.940002e+00 2.647900e+02
-9 14447     -2.350000e+02 3.659800e+02
-2 14448     5.074900e+02 3.362300e+02
-3 14448     3.618600e+02 1.128003e+01
-6 14448     4.335300e+02 5.301200e+02
-7 14448     4.587000e+02 5.174900e+02
-9 14448     2.907900e+02 3.836600e+02
-10 14448     6.423000e+02 6.124700e+02
-13 14448     8.348300e+02 1.026400e+02
-2 14449     -6.146200e+02 3.341600e+02
-5 14449     8.921002e+01 -8.822998e+01
-8 14449     -4.260800e+02 2.492700e+02
-2 14450     1.038200e+02 3.303600e+02
-6 14450     3.159973e+00 6.898200e+02
-8 14450     1.660000e+02 2.607900e+02
-2 14451     5.041700e+02 3.287000e+02
-6 14451     4.288400e+02 5.219300e+02
-9 14451     2.873500e+02 3.759600e+02
-2 14452     -4.365300e+02 3.265600e+02
-3 14452     -5.614500e+02 -3.580017e+00
-2 14453     -4.365300e+02 3.265600e+02
-3 14453     -5.614500e+02 -3.580017e+00
-2 14454     -3.116998e+01 3.191200e+02
-6 14454     -1.642300e+02 6.466500e+02
-8 14454     5.447998e+01 2.495300e+02
-9 14454     -1.804100e+02 3.501100e+02
-12 14454     5.700073e-01 6.078000e+02
-2 14455     2.874100e+02 3.105300e+02
-3 14455     1.461900e+02 -1.808002e+01
-6 14455     1.934400e+02 5.633200e+02
-7 14455     2.943800e+02 5.630000e+02
-8 14455     3.034200e+02 2.335900e+02
-9 14455     1.005200e+02 3.536200e+02
-12 14455     3.031400e+02 5.515200e+02
-13 14455     6.629900e+02 1.486300e+02
-2 14456     2.874100e+02 3.105300e+02
-3 14456     1.461900e+02 -1.808002e+01
-7 14456     2.943800e+02 5.630000e+02
-8 14456     3.034200e+02 2.335900e+02
-9 14456     1.005200e+02 3.536200e+02
-11 14456     6.124000e+02 -3.107700e+02
-12 14456     3.031400e+02 5.515200e+02
-13 14456     6.629900e+02 1.486300e+02
-2 14457     4.045601e+02 3.099800e+02
-3 14457     2.594900e+02 -1.564001e+01
-8 14457     3.977400e+02 2.305600e+02
-9 14457     2.005100e+02 3.570800e+02
-2 14458     4.045601e+02 3.099800e+02
-3 14458     2.594900e+02 -1.564001e+01
-8 14458     3.977400e+02 2.305600e+02
-2 14459     -4.140300e+02 3.092100e+02
-3 14459     -5.399600e+02 -2.035999e+01
-4 14459     4.740997e+01 -2.888300e+02
-5 14459     2.830601e+02 -1.063900e+02
-8 14459     -2.612500e+02 2.341400e+02
-2 14460     5.083101e+02 3.052000e+02
-6 14460     4.318300e+02 4.939600e+02
-7 14460     4.559399e+02 4.871600e+02
-9 14460     2.918500e+02 3.562800e+02
-10 14460     6.362200e+02 5.768000e+02
-12 14460     5.149399e+02 5.026800e+02
-2 14461     -4.936300e+02 3.024600e+02
-3 14461     -6.181600e+02 -2.560999e+01
-5 14461     2.026300e+02 -1.134500e+02
-8 14461     -3.267000e+02 2.278000e+02
-2 14462     -9.370001e+01 2.987200e+02
-3 14462     -2.337900e+02 -3.376001e+01
-4 14462     2.062000e+01 -5.059100e+02
-5 14462     6.265699e+02 -1.100900e+02
-8 14462     2.679993e+00 2.305200e+02
-9 14462     -2.324200e+02 3.304500e+02
-11 14462     3.458700e+02 -2.298900e+02
-12 14462     -7.421997e+01 5.750500e+02
-2 14463     -1.459000e+02 2.969800e+02
-3 14463     -2.829900e+02 -3.691998e+01
-8 14463     -4.003998e+01 2.315000e+02
-9 14463     -2.767100e+02 3.273900e+02
-2 14464     -2.693900e+02 2.941200e+02
-3 14464     -4.008500e+02 -3.816998e+01
-6 14464     -4.552900e+02 5.661100e+02
-8 14464     -1.420500e+02 2.259300e+02
-9 14464     -3.821200e+02 3.215100e+02
-12 14464     -2.816100e+02 5.478900e+02
-2 14465     -4.102100e+02 2.907500e+02
-5 14465     2.824700e+02 -1.237800e+02
-8 14465     -2.573100e+02 2.202100e+02
-2 14466     5.796600e+02 2.906300e+02
-7 14466     5.182600e+02 4.573400e+02
-9 14466     3.521500e+02 3.468900e+02
-10 14466     7.075900e+02 5.322900e+02
-2 14467     -6.163900e+02 2.887100e+02
-4 14467     5.001001e+01 -1.745500e+02
-5 14467     8.334003e+01 -1.269800e+02
-2 14468     -3.109400e+02 2.848000e+02
-4 14468     2.897998e+01 -3.498400e+02
-5 14468     3.863400e+02 -1.265600e+02
-6 14468     -5.052900e+02 5.463500e+02
-8 14468     -1.758400e+02 2.176800e+02
-11 14468     1.292200e+02 -2.454300e+02
-12 14468     -3.294600e+02 5.318700e+02
-2 14469     -1.552800e+02 2.800200e+02
-8 14469     -4.903998e+01 2.158100e+02
-9 14469     -2.829500e+02 3.122700e+02
-2 14470     6.182900e+02 2.789800e+02
-7 14470     5.511500e+02 4.370300e+02
-2 14471     -1.731700e+02 2.779300e+02
-6 14471     -3.361200e+02 5.678500e+02
-2 14472     3.941600e+02 2.773000e+02
-3 14472     2.508300e+02 -4.701001e+01
-8 14472     3.895600e+02 2.041100e+02
-9 14472     1.927400e+02 3.294500e+02
-2 14473     -5.939400e+02 2.745200e+02
-4 14473     4.228998e+01 -1.847400e+02
-5 14473     1.030900e+02 -1.386700e+02
-7 14473     -5.397500e+02 5.476300e+02
-8 14473     -4.085300e+02 2.034400e+02
-2 14474     -5.939400e+02 2.745200e+02
-4 14474     4.228998e+01 -1.847400e+02
-7 14474     -5.397500e+02 5.476300e+02
-8 14474     -4.085300e+02 2.034400e+02
-2 14475     -5.939400e+02 2.745200e+02
-4 14475     4.228998e+01 -1.847400e+02
-7 14475     -5.397500e+02 5.476300e+02
-2 14476     -5.939400e+02 2.745200e+02
-4 14476     4.228998e+01 -1.847400e+02
-8 14476     -4.085300e+02 2.034400e+02
-2 14477     -4.797100e+02 2.749500e+02
-5 14477     2.139900e+02 -1.377100e+02
-7 14477     -4.231900e+02 5.609500e+02
-2 14478     -6.509998e+01 2.755100e+02
-6 14478     -2.066200e+02 5.856300e+02
-8 14478     2.575000e+01 2.145600e+02
-2 14479     -6.410700e+02 2.735600e+02
-5 14479     5.852002e+01 -1.398600e+02
-8 14479     -4.467800e+02 2.016300e+02
-2 14480     4.322000e+02 2.736200e+02
-6 14480     3.450600e+02 4.699400e+02
-8 14480     4.160100e+02 1.979500e+02
-9 14480     2.275699e+02 3.279000e+02
-13 14480     7.611000e+02 6.652002e+01
-2 14481     -1.738000e+01 2.731200e+02
-6 14481     -1.445800e+02 5.959600e+02
-8 14481     6.609003e+01 2.136700e+02
-2 14482     -4.484800e+02 2.716400e+02
-4 14482     3.176001e+01 -2.645500e+02
-7 14482     -3.913100e+02 5.614800e+02
-2 14483     3.254500e+02 2.712500e+02
-6 14483     2.375200e+02 5.117700e+02
-8 14483     3.339500e+02 2.006800e+02
-9 14483     1.324900e+02 3.213900e+02
-2 14484     -2.687900e+02 2.657200e+02
-3 14484     -4.009100e+02 -6.667999e+01
-6 14484     -4.525300e+02 5.337600e+02
-8 14484     -1.415100e+02 2.034800e+02
-12 14484     -2.789500e+02 5.193800e+02
-2 14485     3.637100e+02 2.635300e+02
-3 14485     2.207900e+02 -6.064001e+01
-6 14485     2.789700e+02 4.992400e+02
-7 14485     3.553199e+02 5.029300e+02
-8 14485     3.640900e+02 1.941400e+02
-9 14485     1.659700e+02 3.160400e+02
-12 14485     3.813700e+02 4.931500e+02
-13 14485     7.219600e+02 9.520001e+01
-2 14486     3.805100e+02 2.616300e+02
-3 14486     2.374600e+02 -6.246002e+01
-6 14486     2.982900e+02 4.935500e+02
-8 14486     3.781800e+02 1.912000e+02
-9 14486     1.807700e+02 3.146400e+02
-12 14486     3.991200e+02 4.881600e+02
-13 14486     7.361700e+02 9.014999e+01
-2 14487     -4.062900e+02 2.606000e+02
-4 14487     2.381000e+01 -2.892600e+02
-7 14487     -3.472400e+02 5.559000e+02
-8 14487     -2.549500e+02 1.962800e+02
-11 14487     4.008002e+01 -2.660900e+02
-2 14488     -4.260100e+02 2.581400e+02
-4 14488     2.340997e+01 -2.763000e+02
-5 14488     2.656200e+02 -1.527000e+02
-7 14488     -3.673400e+02 5.513900e+02
-8 14488     -2.705600e+02 1.935000e+02
-11 14488     2.026001e+01 -2.691500e+02
-12 14488     -4.601100e+02 4.865000e+02
-2 14489     5.583400e+02 2.566800e+02
-7 14489     4.951400e+02 4.289700e+02
-8 14489     5.196400e+02 1.767500e+02
-9 14489     3.352600e+02 3.134200e+02
-10 14489     6.767200e+02 4.991200e+02
-12 14489     5.665800e+02 4.382800e+02
-2 14490     4.365300e+02 2.546600e+02
-6 14490     3.494000e+02 4.479200e+02
-8 14490     4.199900e+02 1.817300e+02
-9 14490     2.318300e+02 3.114000e+02
-2 14491     3.714100e+02 2.519700e+02
-3 14491     2.287400e+02 -7.195001e+01
-7 14491     3.611300e+02 4.901200e+02
-8 14491     3.705300e+02 1.840800e+02
-9 14491     1.738700e+02 3.061500e+02
-12 14491     3.894000e+02 4.794600e+02
-13 14491     7.273900e+02 8.367999e+01
-2 14492     3.714100e+02 2.519700e+02
-3 14492     2.287400e+02 -7.195001e+01
-6 14492     2.876600e+02 4.844800e+02
-8 14492     3.705300e+02 1.840800e+02
-9 14492     1.738700e+02 3.061500e+02
-12 14492     3.894000e+02 4.794600e+02
-13 14492     7.273900e+02 8.367999e+01
-2 14493     5.131899e+02 2.508200e+02
-3 14493     3.709399e+02 -6.772998e+01
-6 14493     4.349100e+02 4.325200e+02
-8 14493     4.823400e+02 1.763700e+02
-2 14494     -7.183000e+02 2.466900e+02
-4 14494     3.754999e+01 -1.197400e+02
-5 14494     -1.382001e+01 -1.622600e+02
-8 14494     -5.094100e+02 1.789900e+02
-11 14494     -2.279100e+02 -2.795200e+02
-12 14494     -7.916000e+02 4.331600e+02
-2 14495     -5.999000e+02 2.403000e+02
-4 14495     2.756000e+01 -1.783400e+02
-5 14495     9.409998e+01 -1.679100e+02
-7 14495     -5.422900e+02 5.170900e+02
-12 14495     -6.572400e+02 4.436800e+02
-2 14496     2.648700e+02 2.352400e+02
-6 14496     1.674300e+02 4.802900e+02
-7 14496     2.691801e+02 4.968600e+02
-8 14496     2.848700e+02 1.726700e+02
-9 14496     8.247998e+01 2.883900e+02
-12 14496     2.794600e+02 4.715800e+02
-2 14497     5.835500e+02 2.303700e+02
-6 14497     5.127600e+02 4.009300e+02
-12 14497     5.938000e+02 4.114300e+02
-2 14498     3.420500e+02 2.279000e+02
-7 14498     3.340500e+02 4.735400e+02
-10 14498     5.045100e+02 5.803200e+02
-2 14499     -4.677800e+02 2.255300e+02
-3 14499     -5.955900e+02 -1.040700e+02
-13 14499     4.303003e+01 1.354200e+02
-2 14500     3.212000e+02 2.224600e+02
-3 14500     1.807300e+02 -1.019500e+02
-6 14500     2.303600e+02 4.581900e+02
-7 14500     3.156600e+02 4.729100e+02
-8 14500     3.299600e+02 1.612500e+02
-9 14500     1.309400e+02 2.792900e+02
-10 14500     4.830300e+02 5.820500e+02
-12 14500     3.372800e+02 4.523500e+02
-2 14501     3.212000e+02 2.224600e+02
-3 14501     1.807300e+02 -1.019500e+02
-6 14501     2.303600e+02 4.581900e+02
-7 14501     3.156600e+02 4.729100e+02
-8 14501     3.299600e+02 1.612500e+02
-9 14501     1.309400e+02 2.792900e+02
-10 14501     4.830300e+02 5.820500e+02
-12 14501     3.372800e+02 4.523500e+02
-2 14502     -3.971400e+02 2.199200e+02
-3 14502     -5.267600e+02 -1.110200e+02
-2 14503     3.008000e+02 2.178600e+02
-10 14503     4.633900e+02 5.832700e+02
-2 14504     3.416500e+02 2.178300e+02
-3 14504     1.989301e+02 -1.042400e+02
-9 14504     1.470900e+02 2.770100e+02
-12 14504     3.563600e+02 4.462100e+02
-2 14505     -5.970300e+02 2.167600e+02
-4 14505     1.653998e+01 -1.776600e+02
-7 14505     -5.370300e+02 4.970400e+02
-8 14505     -4.101100e+02 1.581100e+02
-11 14505     -1.305600e+02 -2.998200e+02
-2 14506     -3.724400e+02 2.167900e+02
-5 14506     3.148101e+02 -1.898300e+02
-6 14506     -5.733800e+02 4.547900e+02
-11 14506     6.895001e+01 -2.976000e+02
-12 14506     -3.948000e+02 4.522100e+02
-2 14507     3.508600e+02 2.162300e+02
-8 14507     3.537300e+02 1.554600e+02
-2 14508     -2.644200e+02 2.131500e+02
-3 14508     -3.973800e+02 -1.181200e+02
-13 14508     2.101200e+02 1.362700e+02
-14 14508     3.374000e+02 -2.776900e+02
-2 14509     -2.205600e+02 2.118800e+02
-3 14509     -3.551600e+02 -1.198900e+02
-12 14509     -2.190200e+02 4.690300e+02
-13 14509     2.478600e+02 1.378300e+02
-14 14509     3.841100e+02 -2.775100e+02
-2 14510     3.706700e+02 2.112000e+02
-3 14510     2.297100e+02 -1.110900e+02
-8 14510     3.690800e+02 1.512500e+02
-9 14510     1.739100e+02 2.714800e+02
-13 14510     7.221700e+02 5.089001e+01
-2 14511     -4.364700e+02 2.097700e+02
-4 14511     1.530029e+00 -2.651800e+02
-7 14511     -3.747400e+02 5.076800e+02
-8 14511     -2.792300e+02 1.555400e+02
-13 14511     6.781000e+01 1.260200e+02
-2 14512     -9.260999e+01 2.100800e+02
-3 14512     -2.320900e+02 -1.213300e+02
-5 14512     6.183400e+02 -1.945800e+02
-7 14512     -1.462000e+01 5.433900e+02
-8 14512     4.119995e+00 1.621900e+02
-9 14512     -2.275200e+02 2.539500e+02
-13 14512     3.614399e+02 1.437600e+02
-14 14512     5.247300e+02 -2.750000e+02
-2 14513     5.853003e+01 2.094100e+02
-5 14513     7.978800e+02 -1.952500e+02
-9 14513     -1.009800e+02 2.580400e+02
-2 14514     -7.007700e+02 2.037000e+02
-4 14514     1.831000e+01 -1.246100e+02
-2 14515     3.638600e+02 2.033000e+02
-3 14515     2.233199e+02 -1.193700e+02
-6 14515     2.780400e+02 4.305000e+02
-7 14515     3.502200e+02 4.458500e+02
-8 14515     3.639800e+02 1.446600e+02
-9 14515     1.680500e+02 2.644600e+02
-12 14515     3.805200e+02 4.272100e+02
-13 14515     7.157100e+02 4.523999e+01
-2 14516     3.712700e+02 2.030300e+02
-6 14516     2.857800e+02 4.302800e+02
-7 14516     3.564399e+02 4.444100e+02
-2 14517     3.712700e+02 2.030300e+02
-6 14517     2.857800e+02 4.302800e+02
-7 14517     3.564399e+02 4.444100e+02
-9 14517     1.753900e+02 2.649000e+02
-12 14517     3.879800e+02 4.270900e+02
-13 14517     7.220400e+02 4.384003e+01
-2 14518     -4.297500e+02 2.011100e+02
-5 14518     2.559399e+02 -2.030300e+02
-8 14518     -2.732500e+02 1.490800e+02
-12 14518     -4.589500e+02 4.283400e+02
-14 14518     1.695000e+02 -2.911100e+02
-2 14519     -3.954100e+02 1.977100e+02
-3 14519     -5.249200e+02 -1.321800e+02
-4 14519     -7.169983e+00 -2.877200e+02
-5 14519     2.896100e+02 -2.058200e+02
-7 14519     -3.321300e+02 5.018300e+02
-8 14519     -2.453600e+02 1.473300e+02
-11 14519     4.746997e+01 -3.132200e+02
-12 14519     -4.204600e+02 4.303400e+02
-2 14520     -4.883100e+02 1.967600e+02
-4 14520     -5.100098e-01 -2.346500e+02
-5 14520     1.972300e+02 -2.066100e+02
-7 14520     -4.261600e+02 4.910600e+02
-8 14520     -3.218700e+02 1.440800e+02
-11 14520     -3.659998e+01 -3.131100e+02
-12 14520     -5.259200e+02 4.151000e+02
-2 14521     4.997100e+02 1.924800e+02
-3 14521     3.594100e+02 -1.234900e+02
-6 14521     4.173800e+02 3.709900e+02
-7 14521     4.365000e+02 3.819800e+02
-9 14521     2.864301e+02 2.609300e+02
-10 14521     6.025601e+02 4.486100e+02
-13 14521     8.108600e+02 -1.453998e+01
-2 14522     -3.417500e+02 1.906600e+02
-5 14522     3.430400e+02 -2.155100e+02
-2 14523     3.755200e+02 1.912700e+02
-3 14523     2.346801e+02 -1.299400e+02
-6 14523     2.906900e+02 4.164000e+02
-8 14523     3.733000e+02 1.350700e+02
-9 14523     1.786200e+02 2.550700e+02
-12 14523     3.925900e+02 4.135500e+02
-13 14523     7.242300e+02 3.358002e+01
-2 14524     5.891300e+02 1.876700e+02
-7 14524     5.135000e+02 3.570000e+02
-9 14524     3.630200e+02 2.595300e+02
-10 14524     6.928199e+02 4.092300e+02
-2 14525     -1.770500e+02 1.870700e+02
-4 14525     -3.237000e+01 -4.279400e+02
-5 14525     5.199399e+02 -2.170200e+02
-7 14525     -1.049900e+02 5.137500e+02
-8 14525     -6.646997e+01 1.421700e+02
-2 14526     -3.576200e+02 1.859600e+02
-13 14526     1.292200e+02 1.097900e+02
-2 14527     5.228101e+02 1.836100e+02
-9 14527     3.058800e+02 2.550200e+02
-12 14527     5.262200e+02 3.668100e+02
-2 14528     -4.915500e+02 1.827800e+02
-4 14528     -6.489990e+00 -2.311400e+02
-5 14528     1.925400e+02 -2.184800e+02
-7 14528     -4.289000e+02 4.788000e+02
-8 14528     -3.239300e+02 1.339900e+02
-2 14529     6.984700e+02 1.806500e+02
-9 14529     4.546600e+02 2.575400e+02
-2 14530     6.984700e+02 1.806500e+02
-9 14530     4.546600e+02 2.575400e+02
-2 14531     6.805000e+02 1.798300e+02
-3 14531     5.346300e+02 -1.293500e+02
-7 14531     5.949000e+02 3.281700e+02
-9 14531     4.396100e+02 2.562000e+02
-10 14531     7.882600e+02 3.648800e+02
-12 14531     6.961600e+02 3.429900e+02
-2 14532     2.139000e+02 1.759500e+02
-3 14532     1.052700e+02 -1.438000e+02
-2 14533     -2.887100e+02 1.634500e+02
-7 14533     -2.207600e+02 4.821000e+02
-2 14534     -2.887100e+02 1.634500e+02
-6 14534     -4.681100e+02 4.121500e+02
-7 14534     -2.207600e+02 4.821000e+02
-2 14535     -5.728000e+02 1.608100e+02
-5 14535     1.118600e+02 -2.366900e+02
-7 14535     -5.082600e+02 4.494600e+02
-8 14535     -3.900300e+02 1.142800e+02
-12 14535     -6.173000e+02 3.654900e+02
-14 14535     2.781000e+01 -3.274200e+02
-2 14536     -2.981300e+02 1.610000e+02
-6 14536     -4.793100e+02 4.078900e+02
-7 14536     -2.302300e+02 4.794900e+02
-9 14536     -4.006500e+02 2.036300e+02
-2 14537     -4.694800e+02 1.551700e+02
-7 14537     -4.051500e+02 4.574300e+02
-10 14537     -3.659300e+02 6.154500e+02
-2 14538     -6.952100e+02 1.535100e+02
-5 14538     -2.520020e+00 -2.402000e+02
-7 14538     -6.261400e+02 4.329800e+02
-10 14538     -6.292600e+02 5.976800e+02
-2 14539     -5.995800e+02 1.534000e+02
-4 14539     -1.117999e+01 -1.704400e+02
-5 14539     8.540002e+01 -2.422800e+02
-7 14539     -5.336400e+02 4.422700e+02
-10 14539     -5.196400e+02 6.038500e+02
-11 14539     -1.348100e+02 -3.436700e+02
-12 14539     -6.464500e+02 3.559500e+02
-13 14539     -6.231000e+01 8.010001e+01
-14 14539     2.510010e+00 -3.334900e+02
-2 14540     8.169100e+02 1.531300e+02
-3 14540     6.652000e+02 -1.497700e+02
-7 14540     7.141400e+02 2.697500e+02
-9 14540     5.523500e+02 2.376700e+02
-2 14541     -6.422600e+02 1.501500e+02
-4 14541     -9.150024e+00 -1.483600e+02
-7 14541     -5.754900e+02 4.357100e+02
-2 14542     5.973101e+02 1.478100e+02
-3 14542     4.560800e+02 -1.635700e+02
-6 14542     5.235601e+02 3.085600e+02
-7 14542     5.172500e+02 3.178500e+02
-8 14542     5.506700e+02 8.994000e+01
-2 14543     1.710500e+02 1.387100e+02
-3 14543     7.481000e+01 -1.777500e+02
-5 14543     7.067100e+02 -5.431700e+02
-6 14543     -1.080017e+00 1.603100e+02
-8 14543     1.755300e+02 6.882001e+01
-12 14543     2.410999e+01 2.132100e+02
-2 14544     7.073999e+01 1.348300e+02
-3 14544     -2.325000e+01 -1.839600e+02
-5 14544     6.101100e+02 -5.152000e+02
-6 14544     -1.062300e+02 1.674300e+02
-7 14544     -1.090700e+02 2.485400e+02
-8 14544     9.508002e+01 6.875000e+01
-10 14544     -1.006000e+02 3.045600e+02
-12 14544     -7.313000e+01 2.197700e+02
-13 14544     3.481000e+02 -1.063500e+02
-15 14544     -4.282001e+01 3.287000e+02
-2 14545     5.601000e+02 1.348100e+02
-3 14545     4.214900e+02 -1.771600e+02
-8 14545     5.200601e+02 7.981000e+01
-9 14545     3.392800e+02 2.144900e+02
-15 14545     8.630500e+02 4.083600e+02
-2 14546     -7.242900e+02 1.326000e+02
-4 14546     -1.046997e+01 -1.069000e+02
-7 14546     -6.518200e+02 4.121600e+02
-8 14546     -5.129400e+02 8.956000e+01
-11 14546     -2.373800e+02 -3.564000e+02
-12 14546     -7.826100e+02 3.183900e+02
-2 14547     -3.682700e+02 1.324300e+02
-6 14547     -5.613300e+02 3.613100e+02
-7 14547     -3.014500e+02 4.474600e+02
-9 14547     -4.595700e+02 1.757800e+02
-14 14547     2.248700e+02 -3.522900e+02
-2 14548     -6.780300e+02 1.290000e+02
-4 14548     -1.588000e+01 -1.288000e+02
-5 14548     1.077002e+01 -2.617600e+02
-8 14548     -4.750200e+02 8.692999e+01
-2 14549     -4.841500e+02 1.275500e+02
-4 14549     -3.242999e+01 -2.299000e+02
-7 14549     -4.169700e+02 4.323100e+02
-8 14549     -3.174200e+02 9.032001e+01
-10 14549     -3.807800e+02 5.868200e+02
-12 14549     -5.136700e+02 3.466000e+02
-2 14550     1.591300e+02 1.277800e+02
-8 14550     1.640800e+02 6.045999e+01
-2 14551     2.997100e+02 1.281000e+02
-8 14551     2.816100e+02 5.923001e+01
-13 14551     5.218199e+02 -1.480900e+02
-2 14552     -6.198300e+02 1.256900e+02
-4 14552     -2.171997e+01 -1.575200e+02
-7 14552     -5.508600e+02 4.169000e+02
-8 14552     -4.281700e+02 8.635001e+01
-10 14552     -5.403100e+02 5.751500e+02
-11 14552     -1.543700e+02 -3.629800e+02
-13 14552     -7.850000e+01 6.040997e+01
-2 14553     1.230800e+02 1.221900e+02
-6 14553     -5.431000e+01 1.413100e+02
-2 14554     5.378700e+02 1.149000e+02
-7 14554     4.625100e+02 3.020100e+02
-9 14554     3.213900e+02 1.965700e+02
-2 14555     -6.157000e+02 1.124700e+02
-7 14555     -5.453600e+02 4.065500e+02
-10 14555     -5.355200e+02 5.629900e+02
-2 14556     4.862300e+02 1.123900e+02
-3 14556     3.498300e+02 -2.011300e+02
-6 14556     3.995200e+02 2.855800e+02
-8 14556     4.584399e+02 6.438000e+01
-9 14556     2.773800e+02 1.927600e+02
-12 14556     4.848500e+02 2.948400e+02
-2 14557     -2.642400e+02 1.071700e+02
-7 14557     -1.940300e+02 4.361000e+02
-9 14557     -3.690400e+02 1.580900e+02
-10 14557     -1.125000e+02 5.819600e+02
-11 14557     1.678500e+02 -3.786400e+02
-2 14558     -2.020020e+00 9.983002e+01
-8 14558     3.751001e+01 4.226999e+01
-2 14559     -2.824800e+02 9.848999e+01
-10 14559     -1.353700e+02 5.718700e+02
-13 14559     1.891400e+02 5.178998e+01
-2 14560     6.070400e+02 9.577002e+01
-3 14560     4.672500e+02 -2.126900e+02
-6 14560     5.311200e+02 2.521300e+02
-7 14560     5.186500e+02 2.691200e+02
-8 14560     5.584700e+02 4.707001e+01
-9 14560     3.800200e+02 1.830800e+02
-12 14560     6.113900e+02 2.620800e+02
-2 14561     6.781000e+01 9.446997e+01
-5 14561     5.899600e+02 -5.621400e+02
-6 14561     -1.134500e+02 1.133300e+02
-7 14561     -1.272300e+02 2.032100e+02
-12 14561     -8.817999e+01 1.678700e+02
-2 14562     2.119600e+02 9.352002e+01
-4 14562     -2.484500e+02 -4.757700e+02
-6 14562     3.865002e+01 9.909003e+01
-10 14562     -6.549988e+00 2.055800e+02
-2 14563     3.087500e+02 9.271997e+01
-3 14563     2.040601e+02 -2.177100e+02
-4 14563     -2.742600e+02 -5.447400e+02
-8 14563     2.824100e+02 2.826999e+01
-2 14564     8.030699e+02 9.129999e+01
-3 14564     6.569399e+02 -2.093900e+02
-9 14564     5.428199e+02 1.857100e+02
-2 14565     3.143101e+02 8.745001e+01
-3 14565     2.126801e+02 -2.224100e+02
-7 14565     8.228003e+01 1.638700e+02
-2 14566     2.554399e+02 8.145001e+01
-3 14566     1.568400e+02 -2.298200e+02
-8 14566     2.381100e+02 1.885999e+01
-2 14567     -4.603300e+02 7.937000e+01
-7 14567     -3.911000e+02 3.940200e+02
-12 14567     -4.829100e+02 3.019100e+02
-2 14568     4.816998e+01 7.885999e+01
-3 14568     -4.153998e+01 -2.372000e+02
-4 14568     -2.094800e+02 -3.809600e+02
-5 14568     5.698500e+02 -5.727000e+02
-6 14568     -1.327900e+02 9.703998e+01
-7 14568     -1.435300e+02 1.920200e+02
-8 14568     7.419000e+01 2.198001e+01
-12 14568     -1.070500e+02 1.525900e+02
-13 14568     3.182700e+02 -1.521000e+02
-2 14569     4.816998e+01 7.885999e+01
-12 14569     -1.070500e+02 1.525900e+02
-2 14570     4.844399e+02 7.721002e+01
-3 14570     3.497800e+02 -2.350000e+02
-6 14570     3.967700e+02 2.488700e+02
-7 14570     4.130400e+02 2.812900e+02
-10 14570     5.670300e+02 3.299800e+02
-12 14570     4.821200e+02 2.591800e+02
-13 14570     7.842500e+02 -1.040000e+02
-15 14570     7.616899e+02 3.689500e+02
-2 14571     7.368400e+02 7.716998e+01
-9 14571     4.888000e+02 1.726200e+02
-2 14572     -4.672000e+02 7.620001e+01
-5 14572     2.057000e+02 -3.109900e+02
-7 14572     -3.969100e+02 3.912100e+02
-8 14572     -3.033500e+02 5.253000e+01
-12 14572     -4.904400e+02 3.008100e+02
-14 14572     1.223000e+02 -3.994500e+02
-2 14573     6.566000e+02 7.214001e+01
-3 14573     5.175500e+02 -2.329100e+02
-9 14573     4.220400e+02 1.653400e+02
-10 14573     7.360900e+02 2.576800e+02
-12 14573     6.634800e+02 2.300600e+02
-2 14574     -9.150000e+01 6.845001e+01
-6 14574     -2.379600e+02 3.018100e+02
-2 14575     4.937100e+02 6.354999e+01
-6 14575     4.051200e+02 2.336900e+02
-7 14575     4.193700e+02 2.673400e+02
-8 14575     4.632100e+02 2.456000e+01
-9 14575     2.852100e+02 1.515900e+02
-12 14575     4.904900e+02 2.435800e+02
-2 14576     -4.212600e+02 5.956000e+01
-7 14576     -3.500500e+02 3.818200e+02
-2 14577     2.606100e+02 5.617999e+01
-3 14577     1.643600e+02 -2.535300e+02
-4 14577     -2.851500e+02 -4.960000e+02
-2 14578     1.644700e+02 5.520001e+01
-4 14578     -2.579800e+02 -4.335000e+02
-6 14578     -1.546997e+01 5.456000e+01
-2 14579     7.459998e+01 4.488000e+01
-3 14579     -1.359003e+01 -2.703400e+02
-4 14579     -2.374100e+02 -3.826500e+02
-6 14579     -1.070900e+02 5.254999e+01
-8 14579     9.313000e+01 -8.130005e+00
-10 14579     -1.400100e+02 1.905100e+02
-12 14579     -8.714001e+01 1.079000e+02
-2 14580     5.197400e+02 4.492999e+01
-6 14580     4.340100e+02 2.100600e+02
-8 14580     4.855000e+02 8.440002e+00
-9 14580     3.080300e+02 1.374200e+02
-10 14580     5.941400e+02 2.823500e+02
-2 14581     -4.346100e+02 4.371997e+01
-7 14581     -3.626800e+02 3.669000e+02
-13 14581     6.171002e+01 8.890015e+00
-14 14581     1.511200e+02 -4.296500e+02
-2 14582     4.861300e+02 4.194000e+01
-6 14582     3.985000e+02 2.115500e+02
-7 14582     4.111200e+02 2.504200e+02
-8 14582     4.584100e+02 7.410004e+00
-10 14582     5.616500e+02 2.940400e+02
-12 14582     4.838300e+02 2.217700e+02
-2 14583     -1.187000e+01 3.834003e+01
-3 14583     -1.001800e+02 -2.782400e+02
-5 14583     5.116200e+02 -5.891400e+02
-6 14583     -1.930400e+02 6.362000e+01
-7 14583     -1.861600e+02 1.712000e+02
-8 14583     2.685999e+01 -8.679993e+00
-12 14583     -1.612400e+02 1.197200e+02
-13 14583     2.754200e+02 -1.675800e+02
-2 14584     1.791200e+02 3.789001e+01
-3 14584     8.875000e+01 -2.728000e+02
-6 14584     -4.000244e-01 3.353003e+01
-7 14584     -5.446002e+01 1.232600e+02
-8 14584     1.770000e+02 -1.707999e+01
-12 14584     1.391998e+01 8.734003e+01
-13 14584     4.003101e+02 -2.143900e+02
-2 14585     5.994200e+02 3.785999e+01
-3 14585     4.640000e+02 -2.690300e+02
-6 14585     5.203800e+02 1.919300e+02
-8 14585     5.506600e+02 7.000732e-02
-12 14585     6.006700e+02 2.013800e+02
-2 14586     1.503600e+02 2.921002e+01
-3 14586     6.101001e+01 -2.813700e+02
-4 14586     -2.686100e+02 -4.179400e+02
-8 14586     1.526000e+02 -2.051999e+01
-13 14586     3.781700e+02 -2.140200e+02
-2 14587     3.559998e+00 2.779999e+01
-3 14587     -8.425000e+01 -2.872700e+02
-6 14587     -1.782800e+02 4.656000e+01
-7 14587     -1.795500e+02 1.532500e+02
-9 14587     -1.080300e+02 1.071600e+02
-12 14587     -1.505500e+02 1.026400e+02
-2 14588     4.221600e+02 2.564001e+01
-3 14588     3.126300e+02 -2.796200e+02
-2 14589     7.945300e+02 2.463000e+01
-9 14589     5.374000e+02 1.301100e+02
-2 14590     7.945300e+02 2.463000e+01
-9 14590     5.374000e+02 1.301100e+02
-2 14591     3.060601e+02 2.395001e+01
-15 14591     1.521899e+02 1.017900e+02
-2 14592     3.060601e+02 2.395001e+01
-4 14592     -3.191500e+02 -5.214301e+02
-7 14592     5.746997e+01 9.885001e+01
-10 14592     6.659998e+01 1.102000e+02
-2 14593     -4.608800e+02 2.314001e+01
-7 14593     -3.875000e+02 3.480900e+02
-2 14594     5.117200e+02 1.484003e+01
-8 14594     4.647200e+02 -2.697000e+01
-2 14595     5.179993e+00 1.206000e+01
-6 14595     -1.767000e+02 2.803003e+01
-7 14595     -1.814700e+02 1.383200e+02
-9 14595     -1.060200e+02 9.322000e+01
-12 14595     -1.503500e+02 8.384998e+01
-13 14595     2.806200e+02 -1.946200e+02
-15 14595     -1.462800e+02 1.864300e+02
-2 14596     5.179993e+00 1.206000e+01
-8 14596     3.907001e+01 -3.162000e+01
-2 14597     6.638101e+02 -2.150024e+00
-7 14597     5.577100e+02 1.674600e+02
-12 14597     6.645100e+02 1.521200e+02
-2 14598     6.638101e+02 -2.150024e+00
-7 14598     5.577100e+02 1.674600e+02
-9 14598     4.295100e+02 1.033900e+02
-2 14599     -1.464800e+02 -1.478998e+01
-3 14599     -2.391600e+02 -3.346200e+02
-2 14600     6.486500e+02 -2.441998e+01
-8 14600     5.906700e+02 -5.223001e+01
-9 14600     4.176200e+02 8.457999e+01
-2 14601     6.486500e+02 -2.441998e+01
-8 14601     5.906700e+02 -5.223001e+01
-9 14601     4.176200e+02 8.457999e+01
-2 14602     8.031200e+02 -3.253998e+01
-9 14602     5.453199e+02 8.370999e+01
-2 14603     7.300900e+02 -4.131000e+01
-9 14603     4.861200e+02 7.344000e+01
-12 14603     7.359700e+02 1.001300e+02
-2 14604     6.492900e+02 -4.721997e+01
-3 14604     5.175699e+02 -3.498700e+02
-6 14604     5.722400e+02 9.662000e+01
-8 14604     5.919600e+02 -7.178003e+01
-12 14604     6.502400e+02 1.062600e+02
-2 14605     7.131200e+02 -5.107001e+01
-7 14605     5.924301e+02 1.132000e+02
-9 14605     4.716600e+02 6.428003e+01
-2 14606     6.007300e+02 -5.603998e+01
-15 14606     8.707100e+02 1.535300e+02
-2 14607     -1.101100e+02 -5.654999e+01
-6 14607     -2.925700e+02 -2.853998e+01
-2 14608     7.250000e+02 -5.834003e+01
-9 14608     4.826899e+02 5.857001e+01
-2 14609     -4.441998e+01 -5.988000e+01
-6 14609     -2.279700e+02 -4.928998e+01
-8 14609     -3.359985e+00 -8.994000e+01
-2 14610     2.296801e+02 -6.366998e+01
-6 14610     4.909003e+01 -7.412000e+01
-7 14610     -2.378003e+01 2.684998e+01
-2 14611     5.846600e+02 -7.369000e+01
-10 14611     6.357700e+02 1.394600e+02
-2 14612     4.849800e+02 -8.097998e+01
-3 14612     3.769301e+02 -3.808600e+02
-15 14612     3.870000e+02 -3.909003e+01
-2 14613     7.165500e+02 -9.200000e+01
-9 14613     4.761500e+02 3.053998e+01
-2 14614     5.995400e+02 -9.490002e+01
-7 14614     4.927200e+02 1.058200e+02
-12 14614     5.957100e+02 6.478998e+01
-15 14614     8.607300e+02 1.085800e+02
-2 14615     -1.088900e+02 -1.036900e+02
-3 14615     -1.893500e+02 -4.180000e+02
-2 14616     -7.662000e+01 -1.198700e+02
-3 14616     -1.540900e+02 -4.328101e+02
-4 14616     -2.869800e+02 -2.685700e+02
-6 14616     -2.623400e+02 -1.249900e+02
-8 14616     -3.219000e+01 -1.398600e+02
-2 14617     7.206000e+02 -1.233200e+02
-9 14617     4.801300e+02 4.580017e+00
-2 14618     1.322500e+02 -1.263700e+02
-3 14618     5.165002e+01 -4.320300e+02
-6 14618     -5.276001e+01 -1.425200e+02
-7 14618     -1.161200e+02 -1.907001e+01
-8 14618     1.331700e+02 -1.510200e+02
-13 14618     3.393900e+02 -3.339100e+02
-2 14619     3.144100e+02 -1.258500e+02
-3 14619     2.262700e+02 -4.255500e+02
-2 14620     3.225601e+02 -1.294700e+02
-6 14620     1.429900e+02 -1.460800e+02
-8 14620     2.891300e+02 -1.575500e+02
-2 14621     -4.534003e+01 -1.314300e+02
-3 14621     -1.222800e+02 -4.425100e+02
-4 14621     -3.021100e+02 -2.777800e+02
-6 14621     -2.318600e+02 -1.418101e+02
-8 14621     -8.710022e+00 -1.505000e+02
-12 14621     -2.205500e+02 -8.010999e+01
-13 14621     2.160300e+02 -3.049600e+02
-2 14622     7.454600e+02 -1.306300e+02
-7 14622     6.109600e+02 3.925000e+01
-2 14623     4.968700e+02 -1.360600e+02
-3 14623     3.994200e+02 -4.294500e+02
-6 14623     3.273000e+02 -1.464700e+02
-8 14623     4.354800e+02 -1.655600e+02
-2 14624     7.714200e+02 -1.377300e+02
-7 14624     6.313800e+02 2.671002e+01
-9 14624     5.225000e+02 -5.010010e+00
-2 14625     7.814800e+02 -1.396800e+02
-12 14625     7.832300e+02 -9.219971e+00
-2 14626     2.053300e+02 -1.408500e+02
-7 14626     -5.952002e+01 -4.366998e+01
-2 14627     8.113900e+02 -1.486600e+02
-3 14627     6.851400e+02 -4.433101e+02
-12 14627     8.147900e+02 -2.312000e+01
-2 14628     4.988400e+02 -1.508700e+02
-9 14628     3.119100e+02 -2.025000e+01
-2 14629     1.351001e+01 -1.537700e+02
-3 14629     -6.034998e+01 -4.620400e+02
-6 14629     -1.742400e+02 -1.758700e+02
-8 14629     3.585999e+01 -1.719000e+02
-2 14630     -7.500000e+00 -1.575500e+02
-8 14630     1.996002e+01 -1.735400e+02
-2 14631     1.891998e+01 -1.587900e+02
-3 14631     -5.487000e+01 -4.662100e+02
-8 14631     4.020001e+01 -1.771800e+02
-2 14632     6.037000e+01 -1.622300e+02
-3 14632     -1.473999e+01 -4.684100e+02
-2 14633     9.246002e+01 -1.669400e+02
-3 14633     1.765002e+01 -4.723700e+02
-2 14634     -3.655500e+02 -1.685600e+02
-7 14634     -3.776700e+02 1.186600e+02
-8 14634     -2.377400e+02 -1.545200e+02
-10 14634     -3.724400e+02 2.081200e+02
-13 14634     5.814001e+01 -2.024200e+02
-15 14634     -3.464300e+02 2.083000e+02
-2 14635     1.110400e+02 -1.699400e+02
-6 14635     -7.815997e+01 -1.970500e+02
-12 14635     -8.082001e+01 -1.421600e+02
-2 14636     5.726001e+01 -1.757100e+02
-6 14636     -1.309100e+02 -1.979200e+02
-8 14636     6.996997e+01 -1.901900e+02
-2 14637     1.655000e+02 -1.773200e+02
-3 14637     8.858002e+01 -4.791100e+02
-4 14637     -3.952200e+02 -3.655200e+02
-6 14637     -2.396997e+01 -2.080100e+02
-12 14637     -2.809003e+01 -1.560000e+02
-2 14638     8.179200e+02 -1.799800e+02
-7 14638     6.559399e+02 -2.733002e+01
-2 14639     -8.509998e+01 -1.806700e+02
-4 14639     -3.117400e+02 -2.615200e+02
-9 14639     -1.719700e+02 -7.101001e+01
-2 14640     2.341100e+02 -1.814000e+02
-3 14640     1.558000e+02 -4.813800e+02
-2 14641     4.129700e+02 -1.830100e+02
-3 14641     3.244600e+02 -4.778400e+02
-6 14641     2.335800e+02 -2.014000e+02
-7 14641     1.159000e+02 -1.045600e+02
-8 14641     3.627400e+02 -2.024000e+02
-10 14641     1.132500e+02 -1.293500e+02
-12 14641     2.429100e+02 -1.630700e+02
-15 14641     2.100800e+02 -1.792500e+02
-2 14642     5.114900e+02 -1.839500e+02
-9 14642     3.207500e+02 -4.851001e+01
-2 14643     5.180000e+02 -1.871100e+02
-8 14643     4.578000e+02 -2.035800e+02
-9 14643     3.260200e+02 -5.096002e+01
-2 14644     4.216998e+01 -1.962300e+02
-6 14644     -1.441700e+02 -2.138101e+02
-7 14644     -1.956400e+02 -6.671002e+01
-8 14644     5.885999e+01 -2.055600e+02
-12 14644     -1.418600e+02 -1.568600e+02
-2 14645     3.049900e+02 -1.965500e+02
-13 14645     4.521000e+02 -4.224100e+02
-2 14646     8.073900e+02 -1.976100e+02
-7 14646     6.325400e+02 -4.907001e+01
-9 14646     5.544200e+02 -5.202002e+01
-2 14647     4.685200e+02 -2.019800e+02
-6 14647     2.969800e+02 -2.071400e+02
-12 14647     3.145000e+02 -1.735400e+02
-13 14647     6.017700e+02 -4.417100e+02
-2 14648     1.209200e+02 -2.034000e+02
-6 14648     -6.721997e+01 -2.269301e+02
-12 14648     -6.834998e+01 -1.726900e+02
-2 14649     -3.027200e+02 -2.214400e+02
-8 14649     -1.930300e+02 -2.001500e+02
-13 14649     8.758002e+01 -2.605700e+02
-15 14649     -3.199500e+02 1.159900e+02
-2 14650     -4.415600e+02 -2.300300e+02
-7 14650     -4.533000e+02 5.203003e+01
-13 14650     -4.409973e+00 -2.537200e+02
-15 14650     -4.578400e+02 1.244600e+02
-2 14651     2.062000e+01 -2.307200e+02
-3 14651     -5.271997e+01 -5.391100e+02
-2 14652     1.023900e+02 -2.338300e+02
-6 14652     -8.326001e+01 -2.501500e+02
-12 14652     -8.141998e+01 -1.972600e+02
-2 14653     2.061100e+02 -2.501500e+02
-3 14653     1.302200e+02 -5.517200e+02
-2 14654     2.923101e+02 -2.538400e+02
-3 14654     2.126801e+02 -5.516700e+02
-6 14654     1.075400e+02 -2.722500e+02
-8 14654     2.606600e+02 -2.588800e+02
-9 14654     1.474600e+02 -1.121800e+02
-12 14654     1.102400e+02 -2.296500e+02
-13 14654     4.416200e+02 -4.564399e+02
-15 14654     5.784998e+01 -2.172800e+02
-2 14655     4.015900e+02 -2.584500e+02
-3 14655     3.162600e+02 -5.556700e+02
-6 14655     2.238100e+02 -2.662000e+02
-7 14655     1.093900e+02 -1.536800e+02
-8 14655     3.531900e+02 -2.633500e+02
-9 14655     2.363000e+02 -1.128900e+02
-12 14655     2.355500e+02 -2.303800e+02
-15 14655     2.038700e+02 -2.411400e+02
-2 14656     5.013199e+02 -2.629800e+02
-8 14656     4.422900e+02 -2.642300e+02
-9 14656     3.156700e+02 -1.130100e+02
-2 14657     -3.119400e+02 -2.657900e+02
-7 14657     -3.707600e+02 6.429993e+00
-9 14657     -3.719700e+02 -1.595000e+02
-10 14657     -3.820400e+02 7.373999e+01
-15 14657     -3.592400e+02 5.234998e+01
-2 14658     -5.392800e+02 -2.664900e+02
-15 14658     -5.741700e+02 9.289999e+01
-2 14659     9.872998e+01 -2.752100e+02
-3 14659     2.360999e+01 -5.795500e+02
-6 14659     -8.407001e+01 -2.860900e+02
-2 14660     -5.770001e+01 -2.771800e+02
-8 14660     -1.640997e+01 -2.645600e+02
-2 14661     -1.598999e+01 -2.788300e+02
-7 14661     -2.217600e+02 -1.053500e+02
-8 14661     1.469000e+01 -2.671400e+02
-9 14661     -1.083300e+02 -1.489800e+02
-12 14661     -1.817900e+02 -2.173000e+02
-13 14661     2.280699e+02 -4.045700e+02
-2 14662     -3.908002e+01 -2.838600e+02
-3 14662     -1.163900e+02 -5.961600e+02
-8 14662     -3.700012e+00 -2.706300e+02
-9 14662     -1.289400e+02 -1.544300e+02
-12 14662     -2.007300e+02 -2.188500e+02
-2 14663     3.350601e+02 -2.830600e+02
-6 14663     1.522000e+02 -2.955100e+02
-8 14663     2.961400e+02 -2.825300e+02
-12 14663     1.575400e+02 -2.563700e+02
-2 14664     3.809000e+02 -2.834000e+02
-6 14664     2.024700e+02 -2.909700e+02
-9 14664     2.204200e+02 -1.337000e+02
-2 14665     2.875200e+02 -2.837300e+02
-6 14665     1.034900e+02 -2.967500e+02
-13 14665     4.354301e+02 -4.742900e+02
-2 14666     2.188199e+02 -2.943000e+02
-3 14666     1.438500e+02 -5.951500e+02
-13 14666     3.838101e+02 -4.686200e+02
-2 14667     -3.574700e+02 -2.963900e+02
-8 14667     -2.426900e+02 -2.632100e+02
-2 14668     4.551700e+02 -3.136400e+02
-6 14668     2.858300e+02 -3.034700e+02
-8 14668     4.002000e+02 -3.067400e+02
-12 14668     3.061801e+02 -2.721900e+02
-2 14669     4.492999e+01 -3.183000e+02
-6 14669     -1.360000e+02 -3.188500e+02
-8 14669     6.185999e+01 -3.020300e+02
-9 14669     -5.532001e+01 -1.786600e+02
-2 14670     -5.642900e+02 -3.187700e+02
-13 14670     -1.086400e+02 -3.130200e+02
-2 14671     8.647998e+01 -3.308800e+02
-6 14671     -9.566000e+01 -3.339301e+02
-8 14671     9.396002e+01 -3.133400e+02
-9 14671     -2.003003e+01 -1.866600e+02
-2 14672     2.681899e+02 -3.319500e+02
-6 14672     8.559998e+01 -3.411100e+02
-8 14672     2.411200e+02 -3.203800e+02
-9 14672     1.304900e+02 -1.797000e+02
-2 14673     1.118700e+02 -3.349000e+02
-4 14673     -4.539400e+02 -3.250400e+02
-6 14673     -7.046997e+01 -3.395100e+02
-7 14673     -1.352800e+02 -1.741300e+02
-12 14673     -6.541998e+01 -2.873100e+02
-2 14674     -3.916800e+02 -3.522900e+02
-6 14674     -5.712700e+02 -3.109500e+02
-7 14674     -4.589800e+02 -7.946997e+01
-9 14674     -4.303600e+02 -2.361600e+02
-13 14674     -5.400024e+00 -3.661800e+02
-2 14675     -3.804400e+02 -3.551800e+02
-6 14675     -5.586300e+02 -3.144600e+02
-2 14676     3.330900e+02 -3.632700e+02
-8 14676     2.945000e+02 -3.470700e+02
-9 14676     1.851100e+02 -2.017400e+02
-2 14677     3.330900e+02 -3.632700e+02
-8 14677     2.945000e+02 -3.470700e+02
-2 14678     3.371100e+02 -3.751600e+02
-6 14678     1.560200e+02 -3.795000e+02
-8 14678     2.973000e+02 -3.567500e+02
-2 14679     -4.405200e+02 -3.897500e+02
-8 14679     -3.152400e+02 -3.408100e+02
-2 14680     -2.940400e+02 -4.186100e+02
-8 14680     -2.023000e+02 -3.680900e+02
-2 14681     3.038800e+02 -4.661400e+02
-6 14681     1.210000e+02 -4.683600e+02
-2 14682     1.811300e+02 -4.912600e+02
-4 14682     -5.653400e+02 -3.298800e+02
-6 14682     -2.960022e+00 -4.931600e+02
-12 14682     -3.609985e+00 -4.452700e+02
-2 14683     5.115000e+02 -5.397600e+02
-9 14683     3.393900e+02 -3.372400e+02
-2 14684     -9.270001e+01 -6.003800e+02
-6 14684     -2.734700e+02 -6.117100e+02
-2 14685     6.501000e+02 -6.119800e+02
-6 14685     4.514100e+02 -6.305601e+02
-7 14685     2.477300e+02 -4.835500e+02
-9 14685     4.538600e+02 -3.860900e+02
-10 14685     2.280699e+02 -5.778400e+02
-2 14686     -2.696000e+02 6.061700e+02
-3 14686     -3.960200e+02 2.652500e+02
-11 14686     1.741100e+02 -4.799805e-01
-13 14686     2.239100e+02 4.380900e+02
-14 14686     3.565000e+02 7.859000e+01
-2 14687     -2.977300e+02 5.933300e+02
-5 14687     4.304399e+02 1.640400e+02
-11 14687     1.528200e+02 -9.530029e+00
-13 14687     2.008700e+02 4.292300e+02
-14 14687     3.294900e+02 6.878998e+01
-2 14688     -2.702600e+02 5.602100e+02
-4 14688     1.711899e+02 -4.092500e+02
-8 14688     -1.439700e+02 4.379000e+02
-2 14689     -1.690100e+02 5.554300e+02
-4 14689     1.686801e+02 -4.839500e+02
-2 14690     4.484003e+01 5.549900e+02
-3 14690     -1.021100e+02 2.149000e+02
-11 14690     5.021100e+02 -3.719971e+00
-13 14690     5.186801e+02 4.362300e+02
-2 14691     -5.059998e+00 5.539600e+02
-8 14691     7.631000e+01 4.388100e+02
-11 14691     4.472800e+02 -1.109998e+01
-13 14691     4.689200e+02 4.281800e+02
-14 14691     6.479200e+02 6.094000e+01
-2 14692     -5.059998e+00 5.539600e+02
-8 14692     7.631000e+01 4.388100e+02
-11 14692     4.472800e+02 -1.109998e+01
-13 14692     4.689200e+02 4.281800e+02
-14 14692     6.479200e+02 6.094000e+01
-2 14693     4.429301e+02 5.491100e+02
-8 14693     4.270500e+02 4.229200e+02
-2 14694     -2.118000e+02 5.461300e+02
-4 14694     1.638700e+02 -4.506600e+02
-8 14694     -9.581000e+01 4.274300e+02
-2 14695     -1.940100e+02 5.454700e+02
-3 14695     -3.247600e+02 2.058600e+02
-4 14695     1.626100e+02 -4.642300e+02
-11 14695     2.489900e+02 -3.844000e+01
-13 14695     2.892700e+02 3.990200e+02
-2 14696     -1.940100e+02 5.454700e+02
-3 14696     -3.247600e+02 2.058600e+02
-4 14696     1.626100e+02 -4.642300e+02
-8 14696     -8.085999e+01 4.278600e+02
-2 14697     -2.772400e+02 5.403400e+02
-3 14697     -4.032900e+02 2.029400e+02
-4 14697     1.612000e+02 -4.028800e+02
-6 14697     -4.871400e+02 8.650700e+02
-8 14697     -1.497400e+02 4.218000e+02
-14 14697     3.455800e+02 2.045001e+01
-2 14698     -3.235000e+02 5.384700e+02
-4 14698     1.601899e+02 -3.705600e+02
-5 14698     3.963600e+02 1.070000e+02
-6 14698     -5.462000e+02 8.522400e+02
-8 14698     -1.885000e+02 4.192300e+02
-11 14698     1.222300e+02 -5.526001e+01
-13 14698     1.748800e+02 3.799400e+02
-14 14698     2.978500e+02 1.354999e+01
-2 14699     3.185601e+02 5.385500e+02
-3 14699     1.718200e+02 1.983600e+02
-6 14699     2.352000e+02 8.329500e+02
-8 14699     3.289400e+02 4.198600e+02
-9 14699     1.214500e+02 5.526900e+02
-11 14699     6.383199e+02 -1.131600e+02
-13 14699     7.141600e+02 3.362500e+02
-2 14700     4.596997e+01 5.366300e+02
-3 14700     -9.809998e+01 1.963800e+02
-8 14700     1.193000e+02 4.261800e+02
-11 14700     5.022300e+02 -2.050000e+01
-2 14701     3.527500e+02 5.273900e+02
-3 14701     2.049000e+02 1.878400e+02
-6 14701     2.750100e+02 8.142200e+02
-8 14701     3.592000e+02 4.088900e+02
-9 14701     1.509000e+02 5.435300e+02
-11 14701     6.673000e+02 -1.300700e+02
-13 14701     7.424399e+02 3.211600e+02
-2 14702     -6.859900e+02 5.243400e+02
-3 14702     -7.997300e+02 1.958600e+02
-4 14702     1.584100e+02 -1.593800e+02
-5 14702     4.056000e+01 7.158002e+01
-8 14702     -4.854300e+02 3.980800e+02
-11 14702     -1.932100e+02 -9.129999e+01
-13 14702     -1.175600e+02 3.347000e+02
-14 14702     -4.850000e+01 -2.653998e+01
-2 14703     -5.134400e+02 5.229200e+02
-3 14703     -6.300300e+02 1.923500e+02
-4 14703     1.553400e+02 -2.518300e+02
-5 14703     2.025300e+02 8.046997e+01
-8 14703     -3.446700e+02 4.016500e+02
-13 14703     1.619000e+01 3.497600e+02
-2 14704     5.742999e+01 5.220500e+02
-11 14704     5.157900e+02 -2.998999e+01
-2 14705     5.417200e+02 5.216200e+02
-8 14705     5.093700e+02 3.988800e+02
-9 14705     3.158700e+02 5.430000e+02
-2 14706     -7.447300e+02 5.194400e+02
-4 14706     1.570500e+02 -1.302800e+02
-5 14706     -1.140002e+01 6.377002e+01
-8 14706     -5.327600e+02 3.918500e+02
-2 14707     -6.227000e+02 5.176000e+02
-5 14707     9.740002e+01 6.984998e+01
-2 14708     -6.009700e+02 5.166400e+02
-3 14708     -7.155500e+02 1.885600e+02
-8 14708     -4.163300e+02 3.943900e+02
-14 14708     2.807001e+01 -2.642999e+01
-2 14709     -6.009700e+02 5.166400e+02
-3 14709     -7.155500e+02 1.885600e+02
-4 14709     1.537000e+02 -2.029700e+02
-5 14709     1.184100e+02 6.995001e+01
-8 14709     -4.163300e+02 3.943900e+02
-11 14709     -1.237700e+02 -9.115002e+01
-13 14709     -5.247998e+01 3.373400e+02
-14 14709     2.807001e+01 -2.642999e+01
-2 14710     3.509600e+02 5.161400e+02
-3 14710     2.037500e+02 1.773600e+02
-6 14710     2.736300e+02 8.004400e+02
-8 14710     3.564400e+02 4.007100e+02
-9 14710     1.498000e+02 5.335000e+02
-11 14710     6.661100e+02 -1.398200e+02
-13 14710     7.399900e+02 3.118900e+02
-2 14711     -5.919100e+02 5.143300e+02
-4 14711     1.528000e+02 -2.075800e+02
-5 14711     1.264500e+02 6.907001e+01
-8 14711     -4.091100e+02 3.943000e+02
-11 14711     -1.168800e+02 -9.212000e+01
-13 14711     -4.613000e+01 3.361700e+02
-14 14711     3.556000e+01 -2.803003e+01
-2 14712     -4.863600e+02 5.126900e+02
-4 14712     1.500200e+02 -2.667600e+02
-5 14712     2.282000e+02 7.334003e+01
-8 14712     -3.224700e+02 3.948800e+02
-11 14712     -2.708002e+01 -8.706000e+01
-13 14712     3.746997e+01 3.442400e+02
-14 14712     1.346500e+02 -2.235999e+01
-2 14713     -2.597400e+02 5.106700e+02
-3 14713     -3.876000e+02 1.709600e+02
-4 14713     1.440900e+02 -4.112300e+02
-6 14713     -4.623200e+02 8.311600e+02
-8 14713     -1.351100e+02 3.991500e+02
-11 14713     1.831900e+02 -7.173999e+01
-2 14714     -2.323700e+02 5.105200e+02
-3 14714     -3.606700e+02 1.735500e+02
-4 14714     1.440300e+02 -4.311500e+02
-11 14714     2.109300e+02 -6.859998e+01
-13 14714     2.539600e+02 3.673400e+02
-14 14714     3.919200e+02 -3.090027e+00
-2 14715     3.467900e+02 5.064900e+02
-3 14715     1.995100e+02 1.678000e+02
-6 14715     2.685500e+02 7.888700e+02
-8 14715     3.531700e+02 3.925100e+02
-9 14715     1.467700e+02 5.258800e+02
-13 14715     7.352900e+02 3.039900e+02
-2 14716     -5.859100e+02 5.045700e+02
-3 14716     -7.010500e+02 1.760500e+02
-4 14716     1.479399e+02 -2.101400e+02
-2 14717     -6.222500e+02 5.009100e+02
-4 14717     1.468101e+02 -1.901200e+02
-5 14717     9.695001e+01 5.528998e+01
-8 14717     -4.334400e+02 3.814800e+02
-13 14717     -6.971002e+01 3.235800e+02
-14 14717     7.250000e+00 -4.153003e+01
-2 14718     -2.459700e+02 5.003100e+02
-3 14718     -3.747400e+02 1.633200e+02
-8 14718     -1.255200e+02 3.918100e+02
-11 14718     1.958300e+02 -7.813000e+01
-13 14718     2.414200e+02 3.576600e+02
-14 14718     3.771600e+02 -1.421997e+01
-2 14719     -2.138300e+02 5.004100e+02
-4 14719     1.382300e+02 -4.423400e+02
-6 14719     -4.043400e+02 8.300800e+02
-8 14719     -9.770001e+01 3.922800e+02
-11 14719     2.282100e+02 -7.584003e+01
-13 14719     2.694800e+02 3.599200e+02
-14 14719     4.102800e+02 -1.250000e+01
-2 14720     -6.726200e+02 4.967200e+02
-3 14720     -7.879300e+02 1.697500e+02
-4 14720     1.461000e+02 -1.639700e+02
-5 14720     5.063000e+01 4.928998e+01
-8 14720     -4.739900e+02 3.771500e+02
-11 14720     -1.824000e+02 -1.090500e+02
-13 14720     -1.080600e+02 3.161400e+02
-14 14720     -3.841998e+01 -4.841998e+01
-2 14721     -2.537400e+02 4.972100e+02
-3 14721     -3.819400e+02 1.576900e+02
-11 14721     1.890500e+02 -8.153003e+01
-13 14721     2.337800e+02 3.528700e+02
-14 14721     3.679800e+02 -1.871997e+01
-2 14722     -7.076300e+02 4.934200e+02
-4 14722     1.450699e+02 -1.460800e+02
-5 14722     1.853003e+01 4.437000e+01
-2 14723     -2.116100e+02 4.917600e+02
-8 14723     -9.639999e+01 3.855500e+02
-11 14723     2.304301e+02 -8.237000e+01
-2 14724     -2.116100e+02 4.917600e+02
-3 14724     -3.429300e+02 1.533000e+02
-8 14724     -9.639999e+01 3.855500e+02
-11 14724     2.304301e+02 -8.237000e+01
-2 14725     -6.266200e+02 4.909300e+02
-3 14725     -7.425600e+02 1.621500e+02
-4 14725     1.422400e+02 -1.869100e+02
-5 14725     9.170001e+01 4.663000e+01
-8 14725     -4.368000e+02 3.736500e+02
-11 14725     -1.469800e+02 -1.111500e+02
-13 14725     -7.353003e+01 3.159100e+02
-14 14725     2.299988e+00 -5.040002e+01
-2 14726     -6.632600e+02 4.873700e+02
-4 14726     1.414900e+02 -1.678900e+02
-5 14726     5.810999e+01 4.158002e+01
-8 14726     -4.662500e+02 3.695100e+02
-13 14726     -1.012900e+02 3.102700e+02
-14 14726     -3.053003e+01 -5.540997e+01
-2 14727     -7.029500e+02 4.828200e+02
-4 14727     1.406000e+02 -1.475900e+02
-5 14727     2.187000e+01 3.607001e+01
-8 14727     -4.986800e+02 3.653200e+02
-11 14727     -2.072700e+02 -1.202100e+02
-13 14727     -1.310400e+02 3.038300e+02
-14 14727     -6.631000e+01 -6.165997e+01
-2 14728     -7.029500e+02 4.828200e+02
-4 14728     1.406000e+02 -1.475900e+02
-5 14728     2.187000e+01 3.607001e+01
-8 14728     -4.986800e+02 3.653200e+02
-11 14728     -2.072700e+02 -1.202100e+02
-13 14728     -1.310400e+02 3.038300e+02
-14 14728     -6.631000e+01 -6.165997e+01
-2 14729     3.454999e+01 4.829900e+02
-6 14729     -8.628000e+01 8.641600e+02
-13 14729     5.027900e+02 3.734400e+02
-2 14730     5.170699e+02 4.759500e+02
-3 14730     3.671400e+02 1.421600e+02
-9 14730     2.964000e+02 5.023400e+02
-2 14731     -5.964900e+02 4.723300e+02
-4 14731     1.329400e+02 -2.013000e+02
-13 14731     -5.052002e+01 3.052000e+02
-14 14731     2.891998e+01 -6.376001e+01
-2 14732     -6.058500e+02 4.667600e+02
-3 14732     -7.238000e+02 1.365900e+02
-2 14733     -4.537700e+02 4.666800e+02
-4 14733     1.263300e+02 -2.812300e+02
-5 14733     2.566600e+02 3.381000e+01
-8 14733     -2.951100e+02 3.587400e+02
-2 14734     -6.979300e+02 4.580100e+02
-4 14734     1.290500e+02 -1.475300e+02
-5 14734     2.328998e+01 1.497998e+01
-8 14734     -4.953700e+02 3.455400e+02
-13 14734     -1.274700e+02 2.869000e+02
-2 14735     -1.727002e+01 4.575200e+02
-5 14735     7.344700e+02 5.122998e+01
-6 14735     -1.513100e+02 8.204700e+02
-8 14735     6.619000e+01 3.615200e+02
-2 14736     -1.727002e+01 4.575200e+02
-5 14736     7.344700e+02 5.122998e+01
-8 14736     6.619000e+01 3.615200e+02
-2 14737     -1.889500e+02 4.553300e+02
-3 14737     -3.210100e+02 1.191500e+02
-6 14737     -3.683100e+02 7.782100e+02
-8 14737     -7.660999e+01 3.555900e+02
-2 14738     -1.889500e+02 4.553300e+02
-4 14738     1.125200e+02 -4.556600e+02
-6 14738     -3.683100e+02 7.782100e+02
-8 14738     -7.660999e+01 3.555900e+02
-11 14738     2.539000e+02 -1.078900e+02
-2 14739     3.975500e+02 4.478000e+02
-3 14739     2.495400e+02 1.144200e+02
-6 14739     3.249300e+02 7.101800e+02
-8 14739     3.940200e+02 3.439500e+02
-13 14739     7.730500e+02 2.442200e+02
-2 14740     -7.235999e+01 4.426700e+02
-3 14740     -2.123800e+02 1.057900e+02
-6 14740     -2.213500e+02 7.883500e+02
-8 14740     1.976001e+01 3.474100e+02
-11 14740     3.726400e+02 -1.085100e+02
-13 14740     3.961700e+02 3.288400e+02
-14 14740     5.633700e+02 -5.264001e+01
-2 14741     4.391000e+02 4.419500e+02
-3 14741     2.924200e+02 1.099000e+02
-8 14741     4.238400e+02 3.349100e+02
-9 14741     2.298800e+02 4.711700e+02
-2 14742     4.391000e+02 4.419500e+02
-3 14742     2.924200e+02 1.099000e+02
-8 14742     4.238400e+02 3.349100e+02
-9 14742     2.298800e+02 4.711700e+02
-2 14743     5.939500e+02 4.380700e+02
-9 14743     3.615500e+02 4.718600e+02
-2 14744     -7.010400e+02 4.337300e+02
-4 14744     1.185100e+02 -1.445500e+02
-5 14744     1.977002e+01 -5.260010e+00
-8 14744     -4.957600e+02 3.271400e+02
-11 14744     -2.082900e+02 -1.533700e+02
-13 14744     -1.316900e+02 2.688900e+02
-14 14744     -6.933002e+01 -1.021700e+02
-2 14745     -3.491900e+02 4.319900e+02
-5 14745     3.601600e+02 6.919983e+00
-2 14746     -3.491900e+02 4.319900e+02
-5 14746     3.601600e+02 6.919983e+00
-8 14746     -2.084500e+02 3.335100e+02
-2 14747     -3.702002e+01 4.319300e+02
-6 14747     -1.773200e+02 7.879200e+02
-8 14747     5.103998e+01 3.417400e+02
-2 14748     -3.020500e+02 4.281800e+02
-4 14748     1.018000e+02 -3.723600e+02
-5 14748     4.095500e+02 5.840027e+00
-2 14749     -3.020500e+02 4.281800e+02
-4 14749     1.018000e+02 -3.723600e+02
-5 14749     4.095500e+02 5.840027e+00
-2 14750     -3.569300e+02 4.196300e+02
-3 14750     -4.823500e+02 8.638000e+01
-5 14750     3.513199e+02 -4.590027e+00
-6 14750     -5.748700e+02 6.966100e+02
-8 14750     -2.151600e+02 3.237800e+02
-13 14750     1.412700e+02 2.850000e+02
-14 14750     2.564301e+02 -9.577002e+01
-2 14751     -3.569300e+02 4.196300e+02
-3 14751     -4.823500e+02 8.638000e+01
-5 14751     3.513199e+02 -4.590027e+00
-6 14751     -5.748700e+02 6.966100e+02
-8 14751     -2.151600e+02 3.237800e+02
-11 14751     8.794000e+01 -1.468400e+02
-13 14751     1.412700e+02 2.850000e+02
-14 14751     2.564301e+02 -9.577002e+01
-2 14752     -3.569300e+02 4.196300e+02
-4 14752     9.940002e+01 -3.357800e+02
-5 14752     3.513199e+02 -4.590027e+00
-6 14752     -5.748700e+02 6.966100e+02
-8 14752     -2.151600e+02 3.237800e+02
-11 14752     8.794000e+01 -1.468400e+02
-13 14752     1.412700e+02 2.850000e+02
-14 14752     2.564301e+02 -9.577002e+01
-2 14753     5.101899e+02 4.189700e+02
-3 14753     3.621400e+02 8.989001e+01
-6 14753     4.413400e+02 6.242100e+02
-8 14753     4.820000e+02 3.142200e+02
-9 14753     2.913000e+02 4.535300e+02
-2 14754     5.101899e+02 4.189700e+02
-3 14754     3.621400e+02 8.989001e+01
-8 14754     4.820000e+02 3.142200e+02
-9 14754     2.913000e+02 4.535300e+02
-2 14755     -4.868400e+02 4.116800e+02
-3 14755     -6.080100e+02 8.225000e+01
-4 14755     1.005900e+02 -2.564700e+02
-5 14755     2.192500e+02 -1.685999e+01
-8 14755     -3.220100e+02 3.145300e+02
-11 14755     -2.981000e+01 -1.591700e+02
-13 14755     3.467999e+01 2.695300e+02
-14 14755     1.283300e+02 -1.094700e+02
-2 14756     -5.910100e+02 4.100500e+02
-11 14756     -1.174700e+02 -1.646300e+02
-2 14757     -7.664200e+02 4.082000e+02
-5 14757     -4.170001e+01 -2.959998e+01
-8 14757     -5.495900e+02 3.042900e+02
-2 14758     -4.308300e+02 4.084900e+02
-3 14758     -5.528400e+02 7.720001e+01
-4 14758     9.675000e+01 -2.892000e+02
-5 14758     2.749399e+02 -1.766998e+01
-8 14758     -2.756200e+02 3.131400e+02
-11 14758     2.121002e+01 -1.586600e+02
-13 14758     8.062000e+01 2.714500e+02
-14 14758     1.829301e+02 -1.094300e+02
-2 14759     -4.249900e+02 3.992400e+02
-3 14759     -5.480700e+02 6.828003e+01
-4 14759     9.203003e+01 -2.915800e+02
-5 14759     2.801100e+02 -2.559998e+01
-11 14759     2.587000e+01 -1.654900e+02
-2 14760     4.435100e+02 3.983500e+02
-3 14760     2.992400e+02 7.007001e+01
-6 14760     3.635200e+02 6.093900e+02
-8 14760     4.266100e+02 2.996500e+02
-9 14760     2.345699e+02 4.340500e+02
-13 14760     7.859600e+02 1.685200e+02
-2 14761     5.235699e+02 3.911000e+02
-3 14761     3.768600e+02 6.437000e+01
-6 14761     4.541000e+02 5.896800e+02
-8 14761     4.928101e+02 2.916900e+02
-9 14761     3.024500e+02 4.303900e+02
-12 14761     5.358900e+02 5.983200e+02
-2 14762     5.235699e+02 3.911000e+02
-3 14762     3.768600e+02 6.437000e+01
-6 14762     4.541000e+02 5.896800e+02
-8 14762     4.928101e+02 2.916900e+02
-9 14762     3.024500e+02 4.303900e+02
-12 14762     5.358900e+02 5.983200e+02
-2 14763     -5.572400e+02 3.887300e+02
-8 14763     -3.790700e+02 2.941900e+02
-2 14764     -5.869300e+02 3.839400e+02
-4 14764     9.160999e+01 -1.981300e+02
-5 14764     1.198300e+02 -4.444000e+01
-8 14764     -4.036100e+02 2.897800e+02
-12 14764     -6.606300e+02 5.947900e+02
-2 14765     -1.229800e+02 3.790800e+02
-3 14765     -2.609200e+02 4.384003e+01
-8 14765     -2.070001e+01 2.960300e+02
-2 14766     -1.229800e+02 3.790800e+02
-3 14766     -2.609200e+02 4.384003e+01
-6 14766     -2.820000e+02 6.982100e+02
-8 14766     -2.070001e+01 2.960300e+02
-2 14767     -1.229800e+02 3.790800e+02
-3 14767     -2.609200e+02 4.384003e+01
-6 14767     -2.820000e+02 6.982100e+02
-8 14767     -2.070001e+01 2.960300e+02
-9 14767     -2.610200e+02 4.000700e+02
-2 14768     5.252800e+02 3.769500e+02
-6 14768     4.554800e+02 5.737400e+02
-8 14768     4.942900e+02 2.805100e+02
-9 14768     3.054600e+02 4.186000e+02
-12 14768     5.379399e+02 5.832500e+02
-2 14769     -6.497700e+02 3.749900e+02
-4 14769     9.101001e+01 -1.645400e+02
-5 14769     5.992999e+01 -5.291998e+01
-8 14769     -4.556100e+02 2.826600e+02
-12 14769     -7.334500e+02 5.779200e+02
-13 14769     -9.434998e+01 2.336500e+02
-14 14769     -2.740997e+01 -1.459000e+02
-2 14770     8.507001e+01 3.741600e+02
-3 14770     -6.428998e+01 3.965002e+01
-11 14770     5.459000e+02 -1.497900e+02
-2 14771     1.263700e+02 3.726100e+02
-3 14771     -2.560999e+01 3.676001e+01
-8 14771     1.852100e+02 2.958000e+02
-9 14771     -4.903998e+01 4.018600e+02
-13 14771     5.854301e+02 2.886600e+02
-2 14772     -7.619400e+02 3.699900e+02
-4 14772     9.276001e+01 -1.093800e+02
-5 14772     -4.076001e+01 -6.032001e+01
-8 14772     -5.454900e+02 2.745900e+02
-11 14772     -2.564300e+02 -1.977500e+02
-13 14772     -1.764300e+02 2.211800e+02
-14 14772     -1.261900e+02 -1.563100e+02
-2 14773     -7.849500e+02 3.664300e+02
-4 14773     9.209998e+01 -9.922998e+01
-5 14773     -6.071997e+01 -6.371002e+01
-8 14773     -5.638500e+02 2.712300e+02
-13 14773     -1.932600e+02 2.170600e+02
-2 14774     -7.849500e+02 3.664300e+02
-4 14774     9.209998e+01 -9.922998e+01
-5 14774     -6.071997e+01 -6.371002e+01
-8 14774     -5.638500e+02 2.712300e+02
-13 14774     -1.932600e+02 2.170600e+02
-2 14775     -3.817100e+02 3.662700e+02
-3 14775     -5.075500e+02 3.396997e+01
-12 14775     -4.166200e+02 6.085900e+02
-2 14776     3.796500e+02 3.664500e+02
-3 14776     2.346400e+02 3.706000e+01
-8 14776     3.787200e+02 2.768500e+02
-2 14777     -6.562600e+02 3.597100e+02
-4 14777     8.388000e+01 -1.602000e+02
-5 14777     5.279999e+01 -6.653003e+01
-8 14777     -4.597900e+02 2.694200e+02
-11 14777     -1.743200e+02 -2.018900e+02
-12 14777     -7.374900e+02 5.596100e+02
-13 14777     -9.904999e+01 2.205600e+02
-14 14777     -3.385999e+01 -1.610700e+02
-2 14778     -6.840700e+02 3.525400e+02
-13 14778     -1.197400e+02 2.145800e+02
-2 14779     -6.310900e+02 3.523500e+02
-4 14779     7.926001e+01 -1.725100e+02
-5 14779     7.529999e+01 -7.240002e+01
-8 14779     -4.386100e+02 2.640400e+02
-12 14779     -7.070300e+02 5.547700e+02
-13 14779     -7.990002e+01 2.169600e+02
-2 14780     -7.217000e+02 3.501600e+02
-4 14780     8.250000e+01 -1.269400e+02
-2 14781     -2.868000e+02 3.480500e+02
-5 14781     4.178000e+02 -6.835999e+01
-6 14781     -4.813100e+02 6.248900e+02
-8 14781     -1.566600e+02 2.682200e+02
-11 14781     1.541100e+02 -1.973700e+02
-2 14782     -6.969700e+02 3.407400e+02
-4 14782     7.746002e+01 -1.380300e+02
-2 14783     -5.697998e+01 3.326400e+02
-4 14783     3.742999e+01 -5.408400e+02
-5 14783     6.732600e+02 -7.434003e+01
-6 14783     -1.966400e+02 6.581700e+02
-8 14783     3.308002e+01 2.605500e+02
-13 14783     4.027700e+02 2.416200e+02
-14 14783     5.710100e+02 -1.586700e+02
-2 14784     -6.961500e+02 3.308800e+02
-4 14784     7.297998e+01 -1.379700e+02
-5 14784     1.437000e+01 -9.173999e+01
-2 14785     5.908199e+02 3.303900e+02
-7 14785     5.334000e+02 4.938700e+02
-9 14785     3.604700e+02 3.804500e+02
-10 14785     7.301801e+02 5.769000e+02
-2 14786     3.010900e+02 3.287800e+02
-7 14786     3.067300e+02 5.786600e+02
-9 14786     1.111800e+02 3.695500e+02
-13 14786     6.764900e+02 1.608700e+02
-2 14787     3.010900e+02 3.287800e+02
-9 14787     1.111800e+02 3.695500e+02
-12 14787     3.181000e+02 5.688400e+02
-13 14787     6.764900e+02 1.608700e+02
-2 14788     -2.702300e+02 3.234500e+02
-4 14788     4.588000e+01 -3.810200e+02
-5 14788     4.329301e+02 -9.044000e+01
-6 14788     -4.589800e+02 5.998600e+02
-8 14788     -1.430400e+02 2.488700e+02
-13 14788     2.108300e+02 2.187200e+02
-2 14789     9.635999e+01 3.228100e+02
-6 14789     -2.580017e+00 6.826800e+02
-8 14789     1.620300e+02 2.566300e+02
-9 14789     -7.291998e+01 3.567200e+02
-14 14789     7.544700e+02 -1.590600e+02
-2 14790     1.271800e+02 3.183300e+02
-3 14790     -2.433002e+01 -1.514001e+01
-6 14790     3.416998e+01 6.816500e+02
-8 14790     1.864100e+02 2.518500e+02
-9 14790     -4.610999e+01 3.548100e+02
-2 14791     1.149700e+02 3.149200e+02
-3 14791     -3.654999e+01 -1.825000e+01
-9 14791     -5.678998e+01 3.510800e+02
-13 14791     5.689500e+02 2.403000e+02
-14 14791     7.786899e+02 -1.634100e+02
-2 14792     3.161300e+02 3.068500e+02
-7 14792     3.172100e+02 5.557300e+02
-8 14792     3.260400e+02 2.332600e+02
-12 14792     3.321899e+02 5.504700e+02
-13 14792     6.860100e+02 1.422400e+02
-2 14793     4.344301e+02 3.032300e+02
-3 14793     2.938000e+02 -2.014001e+01
-6 14793     3.493200e+02 5.017100e+02
-8 14793     4.186200e+02 2.213600e+02
-9 14793     2.290000e+02 3.522300e+02
-11 14793     6.908800e+02 -3.876300e+02
-13 14793     7.669399e+02 9.047000e+01
-2 14794     5.354100e+02 3.007200e+02
-3 14794     3.899399e+02 -1.972998e+01
-6 14794     4.613700e+02 4.857300e+02
-7 14794     4.795500e+02 4.771800e+02
-8 14794     5.013000e+02 2.169700e+02
-9 14794     3.145500e+02 3.534200e+02
-12 14794     5.434800e+02 4.940000e+02
-13 14794     8.556000e+02 6.732001e+01
-2 14795     2.927700e+02 2.972100e+02
-3 14795     1.513400e+02 -3.094000e+01
-7 14795     2.977000e+02 5.489000e+02
-8 14795     3.076400e+02 2.230500e+02
-9 14795     1.052700e+02 3.425700e+02
-11 14795     6.160900e+02 -3.241600e+02
-12 14795     3.084600e+02 5.383100e+02
-13 14795     6.661400e+02 1.364600e+02
-2 14796     3.233300e+02 2.966100e+02
-3 14796     1.819300e+02 -3.075000e+01
-8 14796     3.327000e+02 2.212200e+02
-11 14796     6.370800e+02 -3.312900e+02
-2 14797     -2.406900e+02 2.736800e+02
-9 14797     -3.562500e+02 3.042500e+02
-13 14797     2.341801e+02 1.831700e+02
-2 14798     -2.558900e+02 2.681700e+02
-3 14798     -3.881500e+02 -6.395001e+01
-5 14798     4.430400e+02 -1.414300e+02
-7 14798     -1.897800e+02 5.793400e+02
-8 14798     -1.307500e+02 2.053900e+02
-9 14798     -3.692600e+02 2.988400e+02
-12 14798     -2.640800e+02 5.223100e+02
-13 14798     2.204301e+02 1.780500e+02
-14 14798     3.507900e+02 -2.269000e+02
-2 14799     7.792000e+02 2.605200e+02
-3 14799     6.225699e+02 -5.028998e+01
-7 14799     6.973600e+02 3.816700e+02
-9 14799     5.189500e+02 3.263600e+02
-2 14800     -1.361600e+02 2.586900e+02
-3 14800     -2.702100e+02 -7.376001e+01
-6 14800     -2.917200e+02 5.510400e+02
-8 14800     -3.264001e+01 2.001700e+02
-2 14801     -1.425800e+02 2.568700e+02
-6 14801     -2.998600e+02 5.470300e+02
-8 14801     -3.869000e+01 1.982900e+02
-2 14802     -1.355900e+02 2.498500e+02
-3 14802     -2.730500e+02 -8.278998e+01
-4 14802     -3.460022e+00 -4.678400e+02
-5 14802     5.751300e+02 -1.584400e+02
-6 14802     -2.875400e+02 5.416000e+02
-7 14802     -5.969000e+01 5.740500e+02
-8 14802     -3.065997e+01 1.930100e+02
-11 14802     3.012700e+02 -2.672900e+02
-12 14802     -1.197600e+02 5.190200e+02
-2 14803     4.853400e+02 2.445100e+02
-3 14803     3.440400e+02 -7.459998e+01
-6 14803     4.034900e+02 4.295300e+02
-7 14803     4.292700e+02 4.341600e+02
-8 14803     4.591700e+02 1.719400e+02
-9 14803     2.732100e+02 3.041000e+02
-10 14803     5.989301e+02 5.124800e+02
-11 14803     7.362000e+02 -4.604500e+02
-12 14803     4.885400e+02 4.371400e+02
-13 14803     8.041100e+02 3.133002e+01
-2 14804     5.331400e+02 2.379400e+02
-6 14804     4.566899e+02 4.151600e+02
-8 14804     4.985000e+02 1.651300e+02
-9 14804     3.139301e+02 3.001300e+02
-12 14804     5.393300e+02 4.235400e+02
-13 14804     8.456700e+02 1.547998e+01
-2 14805     4.024700e+02 2.223600e+02
-3 14805     2.606000e+02 -1.000200e+02
-8 14805     3.946600e+02 1.595000e+02
-9 14805     2.014301e+02 2.821200e+02
-2 14806     -7.082800e+02 2.153000e+02
-8 14806     -5.003500e+02 1.549400e+02
-2 14807     -3.359300e+02 2.134700e+02
-3 14807     -4.657500e+02 -1.185200e+02
-2 14808     -2.440997e+01 2.123700e+02
-3 14808     -1.680500e+02 -1.186900e+02
-7 14808     5.989001e+01 5.511200e+02
-8 14808     6.059998e+01 1.644700e+02
-9 14808     -1.708800e+02 2.573300e+02
-13 14808     4.248700e+02 1.494100e+02
-14 14808     6.035200e+02 -2.704200e+02
-2 14809     -6.807800e+02 2.088200e+02
-4 14809     1.883002e+01 -1.345600e+02
-5 14809     1.609003e+01 -1.941600e+02
-8 14809     -4.784600e+02 1.503400e+02
-2 14810     -4.414001e+01 2.074200e+02
-5 14810     6.747300e+02 -1.966100e+02
-6 14810     -1.761400e+02 5.129000e+02
-7 14810     3.778003e+01 5.453500e+02
-8 14810     4.392999e+01 1.605600e+02
-9 14810     -1.866700e+02 2.525000e+02
-12 14810     -1.175000e+01 4.880900e+02
-13 14810     4.057900e+02 1.443100e+02
-2 14811     3.451801e+02 2.072700e+02
-8 14811     3.488900e+02 1.487800e+02
-9 14811     1.510900e+02 2.675700e+02
-12 14811     3.607000e+02 4.348100e+02
-13 14811     7.002700e+02 5.254999e+01
-2 14812     5.492500e+02 2.044900e+02
-3 14812     4.075500e+02 -1.106700e+02
-6 14812     4.729000e+02 3.771200e+02
-7 14812     4.808300e+02 3.822600e+02
-8 14812     5.114700e+02 1.380100e+02
-9 14812     3.285699e+02 2.728800e+02
-10 14812     6.542300e+02 4.438000e+02
-12 14812     5.555800e+02 3.863600e+02
-13 14812     8.554399e+02 -1.602002e+01
-2 14813     8.002200e+02 1.979900e+02
-7 14813     7.062200e+02 3.158900e+02
-9 14813     5.375800e+02 2.746100e+02
-2 14814     8.002200e+02 1.979900e+02
-7 14814     7.062200e+02 3.158900e+02
-9 14814     5.375800e+02 2.746100e+02
-2 14815     3.197700e+02 1.927500e+02
-6 14815     2.281500e+02 4.251000e+02
-7 14815     3.124301e+02 4.449800e+02
-11 14815     6.352400e+02 -4.256000e+02
-12 14815     3.342500e+02 4.201300e+02
-13 14815     6.761700e+02 4.595001e+01
-2 14816     4.436000e+02 1.932800e+02
-3 14816     3.055400e+02 -1.246000e+02
-7 14816     3.885800e+02 3.954700e+02
-9 14816     2.392000e+02 2.599800e+02
-10 14816     5.480900e+02 4.701400e+02
-11 14816     6.995200e+02 -4.952300e+02
-13 14816     7.623101e+02 -1.059998e+00
-15 14816     7.366899e+02 5.358300e+02
-2 14817     5.858300e+02 1.867500e+02
-7 14817     5.110900e+02 3.572200e+02
-9 14817     3.596500e+02 2.583200e+02
-2 14818     3.616000e+02 1.838700e+02
-6 14818     2.754900e+02 4.097100e+02
-7 14818     3.466100e+02 4.288700e+02
-8 14818     3.621500e+02 1.294400e+02
-12 14818     3.785699e+02 4.071200e+02
-13 14818     7.116100e+02 3.039001e+01
-2 14819     -3.688700e+02 1.826700e+02
-5 14819     3.133800e+02 -2.226200e+02
-6 14819     -5.672000e+02 4.143100e+02
-13 14819     1.198600e+02 1.069700e+02
-2 14820     4.645300e+02 1.805600e+02
-3 14820     3.261000e+02 -1.369200e+02
-6 14820     3.779900e+02 3.625500e+02
-7 14820     4.057300e+02 3.781000e+02
-8 14820     4.414900e+02 1.199900e+02
-9 14820     2.574100e+02 2.491800e+02
-10 14820     5.655200e+02 4.474300e+02
-13 14820     7.785100e+02 -1.753003e+01
-2 14821     6.532400e+02 1.726200e+02
-3 14821     5.089500e+02 -1.374200e+02
-9 14821     4.167200e+02 2.490500e+02
-10 14821     7.564399e+02 3.676100e+02
-12 14821     6.655500e+02 3.384600e+02
-2 14822     -6.682000e+02 1.615000e+02
-7 14822     -6.010900e+02 4.420500e+02
-10 14822     -6.001700e+02 6.071000e+02
-2 14823     -6.682000e+02 1.615000e+02
-4 14823     -2.500000e+00 -1.367200e+02
-7 14823     -6.010900e+02 4.420500e+02
-2 14824     4.752400e+02 1.532900e+02
-3 14824     3.380900e+02 -1.620800e+02
-6 14824     3.884400e+02 3.307200e+02
-7 14824     4.120699e+02 3.514600e+02
-8 14824     4.491700e+02 9.725000e+01
-9 14824     2.666100e+02 2.265700e+02
-2 14825     -2.844900e+02 1.444900e+02
-5 14825     3.995500e+02 -2.553600e+02
-6 14825     -4.623500e+02 3.922000e+02
-7 14825     -2.159400e+02 4.664500e+02
-8 14825     -1.543200e+02 1.070800e+02
-9 14825     -3.882400e+02 1.893000e+02
-13 14825     1.902100e+02 8.559000e+01
-14 14825     3.124100e+02 -3.398600e+02
-2 14826     -6.879200e+02 1.430100e+02
-4 14826     -8.719971e+00 -1.252500e+02
-7 14826     -6.181800e+02 4.244700e+02
-10 14826     -6.202300e+02 5.874300e+02
-2 14827     4.627700e+02 1.420500e+02
-7 14827     4.006300e+02 3.442000e+02
-9 14827     2.567900e+02 2.167700e+02
-10 14827     5.573000e+02 4.077200e+02
-2 14828     4.627700e+02 1.420500e+02
-7 14828     4.006300e+02 3.442000e+02
-9 14828     2.567900e+02 2.167700e+02
-2 14829     -6.004500e+02 1.391800e+02
-14 14829     3.400269e-01 -3.453800e+02
-2 14830     6.125200e+02 1.332000e+02
-6 14830     5.395500e+02 2.904500e+02
-7 14830     5.286899e+02 3.017900e+02
-8 14830     5.629399e+02 7.725000e+01
-9 14830     3.832500e+02 2.143300e+02
-10 14830     7.048800e+02 3.407000e+02
-12 14830     6.193400e+02 2.999300e+02
-2 14831     -6.356300e+02 1.216500e+02
-7 14831     -5.658500e+02 4.121500e+02
-10 14831     -5.582900e+02 5.706000e+02
-2 14832     -1.091900e+02 1.197800e+02
-8 14832     -1.169000e+01 8.851001e+01
-9 14832     -2.364800e+02 1.750100e+02
-2 14833     -5.246002e+01 1.188200e+02
-8 14833     3.310999e+01 8.669000e+01
-9 14833     -1.871700e+02 1.760900e+02
-14 14833     5.459900e+02 -3.843300e+02
-2 14834     -3.131300e+02 1.177300e+02
-5 14834     3.643000e+02 -2.848000e+02
-7 14834     -2.470600e+02 4.363700e+02
-8 14834     -1.774900e+02 8.435001e+01
-11 14834     1.172700e+02 -3.753300e+02
-2 14835     5.649800e+02 1.158800e+02
-6 14835     4.857900e+02 2.791400e+02
-7 14835     4.852000e+02 2.965600e+02
-8 14835     5.232100e+02 6.498999e+01
-9 14835     3.440300e+02 1.984100e+02
-13 14835     8.590200e+02 -9.257001e+01
-15 14835     8.639100e+02 3.815900e+02
-2 14836     7.119600e+02 1.124900e+02
-9 14836     4.668800e+02 2.007800e+02
-12 14836     7.263600e+02 2.644500e+02
-2 14837     -9.877002e+01 1.095000e+02
-8 14837     -6.679993e+00 7.929999e+01
-9 14837     -2.273100e+02 1.662800e+02
-2 14838     7.283900e+02 1.083000e+02
-9 14838     4.821500e+02 1.975400e+02
-12 14838     7.433500e+02 2.586900e+02
-2 14839     7.125500e+02 9.834003e+01
-7 14839     6.124800e+02 2.457700e+02
-9 14839     4.682600e+02 1.890200e+02
-10 14839     8.014700e+02 2.618800e+02
-12 14839     7.258199e+02 2.495500e+02
-2 14840     6.263900e+02 9.232001e+01
-3 14840     4.870300e+02 -2.149900e+02
-6 14840     5.525200e+02 2.455400e+02
-8 14840     5.736500e+02 4.366000e+01
-9 14840     3.962300e+02 1.808300e+02
-10 14840     7.096500e+02 2.908500e+02
-12 14840     6.316600e+02 2.555200e+02
-2 14841     6.032100e+02 8.450000e+01
-6 14841     5.259200e+02 2.410500e+02
-7 14841     5.142700e+02 2.599100e+02
-8 14841     5.543300e+02 3.826001e+01
-9 14841     3.770400e+02 1.736200e+02
-12 14841     6.063300e+02 2.509400e+02
-2 14842     -3.059100e+02 8.288000e+01
-4 14842     -6.984998e+01 -3.291200e+02
-5 14842     3.695200e+02 -3.107800e+02
-7 14842     -2.364600e+02 4.123400e+02
-8 14842     -1.720000e+02 5.804001e+01
-11 14842     1.270800e+02 -3.964400e+02
-2 14843     6.619399e+02 8.323999e+01
-3 14843     5.221000e+02 -2.223000e+02
-7 14843     5.656899e+02 2.442100e+02
-9 14843     4.265100e+02 1.745100e+02
-10 14843     7.442800e+02 2.665200e+02
-12 14843     6.695200e+02 2.410000e+02
-2 14844     6.619399e+02 8.323999e+01
-3 14844     5.221000e+02 -2.223000e+02
-7 14844     5.656899e+02 2.442100e+02
-10 14844     7.442800e+02 2.665200e+02
-12 14844     6.695200e+02 2.410000e+02
-2 14845     -4.920100e+02 8.154999e+01
-13 14845     1.778998e+01 3.288000e+01
-14 14845     9.813000e+01 -3.951400e+02
-2 14846     1.885999e+01 8.064001e+01
-3 14846     -7.202002e+01 -2.361700e+02
-4 14846     -1.990600e+02 -3.700100e+02
-5 14846     5.463900e+02 -5.570300e+02
-6 14846     -1.624600e+02 1.066700e+02
-7 14846     -1.607300e+02 2.037800e+02
-8 14846     5.152002e+01 2.506000e+01
-9 14846     -9.884998e+01 1.524100e+02
-12 14846     -1.314500e+02 1.618200e+02
-13 14846     3.008400e+02 -1.416300e+02
-2 14847     1.885999e+01 8.064001e+01
-5 14847     5.463900e+02 -5.570300e+02
-6 14847     -1.624600e+02 1.066700e+02
-7 14847     -1.607300e+02 2.037800e+02
-8 14847     5.152002e+01 2.506000e+01
-9 14847     -9.884998e+01 1.524100e+02
-10 14847     -1.615300e+02 2.586700e+02
-12 14847     -1.314500e+02 1.618200e+02
-13 14847     3.008400e+02 -1.416300e+02
-15 14847     -1.128000e+02 2.733600e+02
-2 14848     7.981000e+01 7.821997e+01
-3 14848     -1.189001e+01 -2.373200e+02
-4 14848     -2.203100e+02 -3.972800e+02
-8 14848     9.840002e+01 1.998999e+01
-10 14848     -1.235800e+02 2.262200e+02
-2 14849     3.856801e+02 7.710999e+01
-3 14849     2.778101e+02 -2.302300e+02
-2 14850     -1.521400e+02 7.221997e+01
-4 14850     -1.038200e+02 -4.113500e+02
-9 14850     -2.694100e+02 1.322600e+02
-2 14851     6.739399e+02 6.153998e+01
-3 14851     5.347900e+02 -2.426100e+02
-7 14851     5.729301e+02 2.222100e+02
-9 14851     4.370900e+02 1.568900e+02
-10 14851     7.519399e+02 2.385500e+02
-12 14851     6.805601e+02 2.161100e+02
-2 14852     6.041600e+02 5.925000e+01
-3 14852     4.676899e+02 -2.479600e+02
-8 14852     5.551801e+02 1.729001e+01
-9 14852     3.785601e+02 1.523500e+02
-10 14852     6.810000e+02 2.642100e+02
-2 14853     7.673500e+02 5.816998e+01
-9 14853     5.145900e+02 1.571000e+02
-2 14854     3.261700e+02 5.690997e+01
-3 14854     2.247600e+02 -2.515500e+02
-13 14854     5.248700e+02 -2.161200e+02
-2 14855     8.832001e+01 5.175000e+01
-3 14855     -7.999878e-01 -2.616600e+02
-4 14855     -2.376800e+02 -3.917300e+02
-6 14855     -9.266000e+01 5.783002e+01
-7 14855     -1.215100e+02 1.540600e+02
-8 14855     1.046500e+02 -2.390015e+00
-12 14855     -7.357001e+01 1.137400e+02
-13 14855     3.390400e+02 -1.848400e+02
-15 14855     -7.458002e+01 1.985500e+02
-2 14856     6.929200e+02 5.142999e+01
-9 14856     4.528500e+02 1.490200e+02
-12 14856     7.012800e+02 2.025000e+02
-2 14857     -5.256000e+01 4.671997e+01
-3 14857     -1.486400e+02 -2.727000e+02
-2 14858     6.576001e+01 4.583002e+01
-6 14858     -1.159300e+02 5.475000e+01
-13 14858     3.234301e+02 -1.845600e+02
-2 14859     6.576001e+01 4.583002e+01
-4 14859     -2.346900e+02 -3.800700e+02
-6 14859     -1.159300e+02 5.475000e+01
-2 14860     3.454700e+02 3.385999e+01
-3 14860     2.438500e+02 -2.726500e+02
-2 14861     3.753300e+02 3.008002e+01
-3 14861     2.730200e+02 -2.750500e+02
-2 14862     7.308400e+02 2.869000e+01
-7 14862     6.186899e+02 1.788800e+02
-9 14862     4.844700e+02 1.314400e+02
-10 14862     8.030500e+02 1.808400e+02
-12 14862     7.401400e+02 1.730400e+02
-2 14863     7.784998e+01 2.745001e+01
-3 14863     -9.409973e+00 -2.855600e+02
-4 14863     -2.484300e+02 -3.806600e+02
-6 14863     -1.042400e+02 3.150000e+01
-7 14863     -1.329300e+02 1.331600e+02
-8 14863     9.556000e+01 -2.222000e+01
-12 14863     -8.553003e+01 8.750000e+01
-13 14863     3.280900e+02 -2.021200e+02
-2 14864     7.784998e+01 2.745001e+01
-3 14864     -9.409973e+00 -2.855600e+02
-13 14864     3.280900e+02 -2.021200e+02
-2 14865     3.418500e+02 1.908002e+01
-3 14865     2.428700e+02 -2.866000e+02
-6 14865     1.705300e+02 2.020001e+01
-7 14865     9.166998e+01 9.379999e+01
-8 14865     3.109400e+02 -3.329001e+01
-9 14865     1.747900e+02 1.139500e+02
-10 14865     1.051500e+02 1.013800e+02
-2 14866     -6.840027e+00 1.847998e+01
-3 14866     -9.540002e+01 -2.957300e+02
-8 14866     2.994000e+01 -2.563000e+01
-9 14866     -1.179500e+02 9.941000e+01
-2 14867     6.370900e+02 1.695001e+01
-8 14867     5.819100e+02 -1.851999e+01
-12 14867     6.393400e+02 1.744700e+02
-2 14868     6.370900e+02 1.695001e+01
-3 14868     5.015900e+02 -2.873600e+02
-8 14868     5.819100e+02 -1.851999e+01
-12 14868     6.393400e+02 1.744700e+02
-2 14869     -1.276500e+02 1.173999e+01
-8 14869     -5.846997e+01 -2.203000e+01
-2 14870     6.100601e+02 -1.000000e+00
-3 14870     4.770900e+02 -3.065800e+02
-6 14870     5.298900e+02 1.503900e+02
-8 14870     5.583600e+02 -3.207001e+01
-12 14870     6.097900e+02 1.601800e+02
-2 14871     1.972800e+02 -4.760010e+00
-3 14871     1.079200e+02 -3.129700e+02
-4 14871     -3.038300e+02 -4.393000e+02
-7 14871     -4.392999e+01 8.064001e+01
-10 14871     -4.965002e+01 9.896002e+01
-13 14871     4.090000e+02 -2.524600e+02
-2 14872     1.333300e+02 -1.109003e+01
-3 14872     4.621997e+01 -3.211100e+02
-4 14872     -2.866400e+02 -3.982400e+02
-6 14872     -4.839001e+01 -1.781000e+01
-7 14872     -9.795001e+01 8.639999e+01
-8 14872     1.382400e+02 -5.651999e+01
-10 14872     -1.091900e+02 1.125000e+02
-12 14872     -3.600000e+01 3.671002e+01
-13 14872     3.593500e+02 -2.439700e+02
-15 14872     -5.233002e+01 1.035800e+02
-2 14873     1.601700e+02 -1.367999e+01
-7 14873     -7.662000e+01 7.915997e+01
-15 14873     -2.642999e+01 9.053000e+01
-2 14874     6.758400e+02 -3.115002e+01
-3 14874     5.428600e+02 -3.328600e+02
-7 14874     5.635900e+02 1.408000e+02
-9 14874     4.407400e+02 7.957001e+01
-10 14874     7.324900e+02 1.436000e+02
-12 14874     6.784301e+02 1.182900e+02
-2 14875     6.758400e+02 -3.115002e+01
-3 14875     5.428600e+02 -3.328600e+02
-7 14875     5.635900e+02 1.408000e+02
-9 14875     4.407400e+02 7.957001e+01
-12 14875     6.784301e+02 1.182900e+02
-2 14876     -1.447400e+02 -3.397998e+01
-3 14876     -2.343200e+02 -3.532700e+02
-2 14877     7.327800e+02 -3.397998e+01
-9 14877     4.875500e+02 7.967001e+01
-12 14877     7.392200e+02 1.070000e+02
-2 14878     -1.576100e+02 -4.059998e+01
-3 14878     -2.434100e+02 -3.597500e+02
-2 14879     3.114000e+02 -4.163000e+01
-3 14879     2.188300e+02 -3.441900e+02
-4 14879     -3.601100e+02 -5.101899e+02
-6 14879     1.358200e+02 -4.796997e+01
-7 14879     5.073999e+01 3.914001e+01
-8 14879     2.838300e+02 -8.365002e+01
-2 14880     9.144000e+01 -4.715002e+01
-3 14880     7.140015e+00 -3.569500e+02
-4 14880     -2.930900e+02 -3.707600e+02
-6 14880     -9.103000e+01 -5.104999e+01
-7 14880     -1.310100e+02 6.384003e+01
-8 14880     1.043700e+02 -8.432001e+01
-13 14880     3.264700e+02 -2.613500e+02
-2 14881     9.144000e+01 -4.715002e+01
-3 14881     7.140015e+00 -3.569500e+02
-8 14881     1.043700e+02 -8.432001e+01
-13 14881     3.264700e+02 -2.613500e+02
-2 14882     6.632900e+02 -5.085999e+01
-9 14882     4.306801e+02 6.288000e+01
-12 14882     6.641300e+02 9.995001e+01
-2 14883     6.632900e+02 -5.085999e+01
-9 14883     4.306801e+02 6.288000e+01
-10 14883     7.153000e+02 1.297600e+02
-12 14883     6.641300e+02 9.995001e+01
-2 14884     -1.331900e+02 -5.262000e+01
-3 14884     -2.185600e+02 -3.703900e+02
-4 14884     -2.310200e+02 -2.757000e+02
-6 14884     -3.152800e+02 -2.422998e+01
-12 14884     -2.743600e+02 3.396002e+01
-15 14884     -2.615000e+02 1.629600e+02
-2 14885     -1.331900e+02 -5.262000e+01
-3 14885     -2.185600e+02 -3.703900e+02
-6 14885     -3.152800e+02 -2.422998e+01
-2 14886     1.480900e+02 -5.553003e+01
-3 14886     6.271002e+01 -3.629700e+02
-4 14886     -3.156300e+02 -3.981500e+02
-8 14886     1.491300e+02 -9.198999e+01
-2 14887     -3.559003e+01 -6.023999e+01
-8 14887     3.099976e+00 -9.065997e+01
-13 14887     2.398600e+02 -2.449700e+02
-2 14888     7.064700e+02 -6.356000e+01
-7 14888     5.872400e+02 1.053400e+02
-9 14888     4.674600e+02 5.421002e+01
-10 14888     7.583300e+02 9.787000e+01
-2 14889     -1.070800e+02 -6.603998e+01
-8 14889     -5.096002e+01 -9.251001e+01
-2 14890     -9.000000e+00 -7.159003e+01
-4 14890     -2.780200e+02 -3.146900e+02
-6 14890     -1.940400e+02 -6.877002e+01
-9 14890     -1.126400e+02 2.379999e+01
-2 14891     6.777000e+02 -7.440002e+01
-3 14891     5.481600e+02 -3.755300e+02
-7 14891     5.601500e+02 1.038000e+02
-10 14891     7.255500e+02 1.000500e+02
-2 14892     -6.237000e+01 -1.175100e+02
-3 14892     -1.406000e+02 -4.297700e+02
-4 14892     -2.890700e+02 -2.746600e+02
-6 14892     -2.494500e+02 -1.229500e+02
-7 14892     -2.613200e+02 2.103998e+01
-8 14892     -2.173999e+01 -1.383000e+02
-12 14892     -2.344500e+02 -6.139001e+01
-2 14893     1.152700e+02 -1.187000e+02
-3 14893     3.478998e+01 -4.251500e+02
-10 14893     -1.518800e+02 6.090027e+00
-2 14894     -1.165900e+02 -1.214400e+02
-8 14894     -6.442999e+01 -1.397400e+02
-2 14895     -8.421997e+01 -1.255800e+02
-3 14895     -1.619500e+02 -4.398000e+02
-6 14895     -2.693100e+02 -1.288200e+02
-8 14895     -3.787000e+01 -1.434500e+02
-2 14896     2.613199e+02 -1.359200e+02
-4 14896     -4.001000e+02 -4.445900e+02
-6 14896     7.815002e+01 -1.538700e+02
-8 14896     2.385100e+02 -1.623000e+02
-12 14896     8.437000e+01 -1.073800e+02
-2 14897     5.253900e+02 -1.414400e+02
-6 14897     3.681100e+02 -1.287000e+02
-8 14897     4.637200e+02 -1.669600e+02
-12 14897     3.982700e+02 -9.620001e+01
-2 14898     7.634000e+02 -1.421700e+02
-9 14898     5.160300e+02 -9.119995e+00
-12 14898     7.640900e+02 -8.809998e+00
-2 14899     -1.005200e+02 -1.440900e+02
-6 14899     -2.850100e+02 -1.458000e+02
-2 14900     5.155900e+02 -1.454900e+02
-9 14900     3.228500e+02 -1.673999e+01
-2 14901     -2.578003e+01 -1.620300e+02
-7 14901     -2.374400e+02 -2.385999e+01
-9 14901     -1.206100e+02 -5.225000e+01
-10 14901     -2.698900e+02 4.320007e+00
-15 14901     -2.373300e+02 -2.519000e+01
-2 14902     4.376100e+02 -1.771800e+02
-3 14902     3.467300e+02 -4.717200e+02
-4 14902     -4.941200e+02 -5.559200e+02
-6 14902     2.600100e+02 -1.930601e+02
-7 14902     1.342300e+02 -1.018700e+02
-9 14902     2.625000e+02 -4.385999e+01
-15 14902     2.335500e+02 -1.789400e+02
-2 14903     4.703199e+02 -1.793900e+02
-6 14903     2.982500e+02 -1.877000e+02
-8 14903     4.121200e+02 -1.996100e+02
-12 14903     3.152800e+02 -1.531200e+02
-2 14904     5.083000e+02 -1.916900e+02
-8 14904     4.483101e+02 -2.077200e+02
-9 14904     3.186000e+02 -5.585999e+01
-2 14905     5.243400e+02 -1.957200e+02
-6 14905     3.698400e+02 -1.749100e+02
-8 14905     4.637400e+02 -2.091500e+02
-9 14905     3.308101e+02 -5.785999e+01
-12 14905     4.026200e+02 -1.454500e+02
-2 14906     -3.027400e+02 -2.063700e+02
-13 14906     9.214001e+01 -2.463500e+02
-2 14907     -4.099500e+02 -2.076900e+02
-7 14907     -4.260600e+02 7.890997e+01
-2 14908     -2.898000e+02 -2.108500e+02
-13 14908     9.956000e+01 -2.517300e+02
-2 14909     -3.295600e+02 -2.186200e+02
-3 14909     -4.374100e+02 -5.513101e+02
-2 14910     1.560600e+02 -2.196000e+02
-3 14910     8.089001e+01 -5.227000e+02
-6 14910     -3.178003e+01 -2.426300e+02
-8 14910     1.490500e+02 -2.286200e+02
-9 14910     3.478998e+01 -9.073999e+01
-2 14911     2.360699e+02 -2.199200e+02
-3 14911     1.591100e+02 -5.200400e+02
-6 14911     4.864001e+01 -2.450500e+02
-8 14911     2.143900e+02 -2.307500e+02
-2 14912     -5.600700e+02 -2.326300e+02
-8 14912     -3.954200e+02 -2.055800e+02
-2 14913     4.691200e+02 -2.327700e+02
-6 14913     2.984200e+02 -2.342900e+02
-8 14913     4.119600e+02 -2.432700e+02
-2 14914     -4.821002e+01 -2.358700e+02
-3 14914     -1.257500e+02 -5.483600e+02
-4 14914     -3.493800e+02 -2.690000e+02
-6 14914     -2.295700e+02 -2.314100e+02
-8 14914     -1.046997e+01 -2.317800e+02
-9 14914     -1.381500e+02 -1.151800e+02
-2 14915     -4.171100e+02 -2.550900e+02
-4 14915     -2.471100e+02 -1.514800e+02
-7 14915     -4.470800e+02 2.664001e+01
-2 14916     -3.948600e+02 -2.586600e+02
-7 14916     -4.298100e+02 2.263000e+01
-2 14917     3.693800e+02 -2.594100e+02
-3 14917     2.873101e+02 -5.556801e+02
-6 14917     1.874000e+02 -2.719200e+02
-8 14917     3.244200e+02 -2.649000e+02
-9 14917     2.111300e+02 -1.144900e+02
-12 14917     1.927000e+02 -2.341700e+02
-2 14918     -3.280000e+02 -2.715300e+02
-7 14918     -3.843700e+02 -1.020020e+00
-9 14918     -3.850100e+02 -1.650600e+02
-13 14918     5.709003e+01 -3.036800e+02
-2 14919     -7.799988e+00 -2.796000e+02
-3 14919     -8.415002e+01 -5.909399e+02
-8 14919     2.178003e+01 -2.693000e+02
-2 14920     2.492800e+02 -2.940300e+02
-3 14920     1.733000e+02 -5.943400e+02
-6 14920     6.459998e+01 -3.067400e+02
-2 14921     -3.807100e+02 -2.985000e+02
-8 14921     -2.612100e+02 -2.643000e+02
-2 14922     3.778900e+02 -3.025400e+02
-3 14922     2.957500e+02 -5.991200e+02
-6 14922     2.003000e+02 -3.085100e+02
-8 14922     3.332300e+02 -2.989100e+02
-9 14922     2.183600e+02 -1.498400e+02
-2 14923     -4.631000e+02 -3.039200e+02
-7 14923     -4.969900e+02 -2.196997e+01
-8 14923     -3.247300e+02 -2.662700e+02
-9 14923     -4.968400e+02 -1.981000e+02
-13 14923     -4.044000e+01 -3.135800e+02
-15 14923     -5.258200e+02 2.715997e+01
-2 14924     2.334100e+02 -3.243300e+02
-6 14924     5.051001e+01 -3.322600e+02
-8 14924     2.125200e+02 -3.139700e+02
-12 14924     5.446002e+01 -2.874700e+02
-2 14925     -3.825600e+02 -3.249700e+02
-7 14925     -4.435100e+02 -4.994000e+01
-15 14925     -4.638400e+02 -1.690997e+01
-2 14926     3.352600e+02 -3.314000e+02
-4 14926     -5.380700e+02 -4.613500e+02
-6 14926     1.546500e+02 -3.371200e+02
-8 14926     2.965400e+02 -3.216200e+02
-12 14926     1.612100e+02 -2.971000e+02
-2 14927     -5.571500e+02 -3.365100e+02
-8 14927     -4.009200e+02 -2.935600e+02
-2 14928     2.327100e+02 -3.374600e+02
-6 14928     5.034003e+01 -3.449100e+02
-12 14928     5.521997e+01 -3.008700e+02
-2 14929     -5.168800e+02 -3.387600e+02
-8 14929     -3.704000e+02 -2.963100e+02
-2 14930     -3.621000e+02 -3.522400e+02
-6 14930     -5.388800e+02 -3.100400e+02
-7 14930     -4.355500e+02 -8.272998e+01
-9 14930     -4.040100e+02 -2.346100e+02
-13 14930     1.448999e+01 -3.709200e+02
-2 14931     -3.182500e+02 -3.529900e+02
-13 14931     4.240002e+01 -3.773600e+02
-2 14932     -4.399900e+02 -3.594100e+02
-7 14932     -4.945100e+02 -8.303998e+01
-9 14932     -4.705600e+02 -2.460600e+02
-13 14932     -3.709998e+01 -3.664000e+02
-15 14932     -5.344200e+02 -5.623999e+01
-2 14933     -5.540300e+02 -3.773400e+02
-7 14933     -5.845500e+02 -9.015002e+01
-8 14933     -4.029000e+02 -3.282300e+02
-13 14933     -1.156300e+02 -3.645600e+02
-2 14934     -3.535200e+02 -3.995699e+02
-7 14934     -4.444600e+02 -1.319100e+02
-9 14934     -3.915000e+02 -2.736900e+02
-13 14934     8.979980e+00 -4.139400e+02
-2 14935     -3.084400e+02 -4.046100e+02
-7 14935     -4.135900e+02 -1.424000e+02
-2 14936     -3.677300e+02 -4.239900e+02
-8 14936     -2.608800e+02 -3.717300e+02
-2 14937     5.153400e+02 -4.562300e+02
-10 14937     2.004500e+02 -3.714400e+02
-2 14938     -4.135700e+02 -4.783400e+02
-8 14938     -3.026000e+02 -4.169700e+02
-2 14939     6.997600e+02 -5.030800e+02
-9 14939     4.887300e+02 -2.984800e+02
-2 14940     6.803101e+02 -5.073199e+02
-9 14940     4.713400e+02 -3.034100e+02
-10 14940     3.420200e+02 -4.689500e+02
-2 14941     4.639500e+02 -5.422400e+02
-10 14941     1.095800e+02 -4.419000e+02
-2 14942     5.061400e+02 -5.422000e+02
-9 14942     3.333700e+02 -3.401600e+02
-2 14943     -2.174300e+02 6.078900e+02
-11 14943     2.247600e+02 6.489990e+00
-13 14943     2.705900e+02 4.457300e+02
-14 14943     4.113600e+02 8.606000e+01
-2 14944     -1.861400e+02 5.849400e+02
-4 14944     1.859800e+02 -4.754000e+02
-2 14945     1.395001e+01 5.797300e+02
-3 14945     -1.308000e+02 2.350600e+02
-13 14945     4.898700e+02 4.528000e+02
-14 14945     6.716400e+02 8.856000e+01
-2 14946     2.880100e+02 5.512700e+02
-6 14946     2.011500e+02 8.514100e+02
-2 14947     -3.421300e+02 5.467100e+02
-3 14947     -4.633100e+02 2.101000e+02
-4 14947     1.651300e+02 -3.602200e+02
-5 14947     3.791000e+02 1.140000e+02
-6 14947     -5.691000e+02 8.595500e+02
-8 14947     -2.026200e+02 4.258700e+02
-11 14947     1.065500e+02 -4.995001e+01
-13 14947     1.609000e+02 3.851200e+02
-14 14947     2.814399e+02 2.023999e+01
-2 14948     -6.156400e+02 5.312200e+02
-13 14948     -6.381000e+01 3.458100e+02
-14 14948     1.471002e+01 -1.583002e+01
-2 14949     -1.103000e+02 5.205600e+02
-4 14949     1.477700e+02 -5.254000e+02
-5 14949     6.304100e+02 1.068700e+02
-8 14949     -1.113000e+01 4.089200e+02
-13 14949     3.660100e+02 3.885100e+02
-14 14949     5.252800e+02 1.760999e+01
-2 14950     -6.551700e+02 5.119400e+02
-4 14950     1.522700e+02 -1.738700e+02
-5 14950     6.764001e+01 6.240997e+01
-8 14950     -4.604500e+02 3.888600e+02
-2 14951     -6.134300e+02 5.121000e+02
-4 14951     1.524500e+02 -1.963600e+02
-8 14951     -4.258000e+02 3.912500e+02
-2 14952     -5.264500e+02 5.060200e+02
-11 14952     -6.277002e+01 -9.490997e+01
-13 14952     4.840027e+00 3.358500e+02
-14 14952     9.565002e+01 -3.064001e+01
-2 14953     -1.211300e+02 5.002300e+02
-4 14953     1.359200e+02 -5.126500e+02
-11 14953     3.260900e+02 -6.612000e+01
-2 14954     -7.453998e+01 4.909900e+02
-6 14954     -2.254300e+02 8.503800e+02
-2 14955     5.682400e+02 4.882700e+02
-3 14955     4.137300e+02 1.544900e+02
-6 14955     5.114200e+02 6.972900e+02
-9 14955     3.389301e+02 5.153700e+02
-2 14956     -6.496200e+02 4.877800e+02
-4 14956     1.417600e+02 -1.748600e+02
-2 14957     -4.449300e+02 4.772600e+02
-3 14957     -5.689100e+02 1.439400e+02
-4 14957     1.314300e+02 -2.874700e+02
-5 14957     2.666200e+02 4.365002e+01
-8 14957     -2.877200e+02 3.676500e+02
-2 14958     5.500900e+02 4.764600e+02
-6 14958     4.901300e+02 6.855100e+02
-8 14958     5.158800e+02 3.615800e+02
-9 14958     3.236300e+02 5.039000e+02
-2 14959     -6.548300e+02 4.751200e+02
-4 14959     1.358700e+02 -1.710800e+02
-8 14959     -4.594900e+02 3.604000e+02
-11 14959     -1.690500e+02 -1.228500e+02
-2 14960     -6.919900e+02 4.738100e+02
-4 14960     1.362200e+02 -1.520500e+02
-2 14961     -6.604000e+02 4.637000e+02
-4 14961     1.309600e+02 -1.676100e+02
-5 14961     5.960999e+01 2.213000e+01
-8 14961     -4.628900e+02 3.515400e+02
-11 14961     -1.732700e+02 -1.306500e+02
-13 14961     -9.810999e+01 2.945300e+02
-14 14961     -2.813000e+01 -7.402002e+01
-2 14962     1.760300e+02 4.590300e+02
-6 14962     9.679999e+01 8.699300e+02
-2 14963     5.232800e+02 4.323900e+02
-3 14963     3.738800e+02 1.028500e+02
-6 14963     4.560699e+02 6.378900e+02
-8 14963     4.929301e+02 3.258500e+02
-9 14963     3.020200e+02 4.654200e+02
-2 14964     2.935699e+02 4.178100e+02
-3 14964     1.501900e+02 8.447998e+01
-9 14964     1.021800e+02 4.464400e+02
-13 14964     6.793700e+02 2.364100e+02
-2 14965     -6.859000e+02 4.089500e+02
-4 14965     1.070500e+02 -1.497900e+02
-5 14965     3.063000e+01 -2.550000e+01
-8 14965     -4.841400e+02 3.070100e+02
-11 14965     -1.961600e+02 -1.693200e+02
-13 14965     -1.201400e+02 2.529800e+02
-14 14965     -5.688000e+01 -1.214400e+02
-2 14966     -3.602300e+02 4.064300e+02
-3 14966     -4.859900e+02 7.434003e+01
-4 14966     9.300000e+01 -3.322900e+02
-5 14966     3.463199e+02 -1.644000e+01
-8 14966     -2.176500e+02 3.128200e+02
-11 14966     8.603003e+01 -1.573900e+02
-2 14967     -3.724100e+02 3.792500e+02
-4 14967     7.895001e+01 -3.207300e+02
-5 14967     3.303800e+02 -4.400000e+01
-8 14967     -2.280100e+02 2.902600e+02
-11 14967     7.185999e+01 -1.789500e+02
-2 14968     -6.881200e+02 3.646000e+02
-5 14968     2.406000e+01 -6.295001e+01
-8 14968     -4.858600e+02 2.727500e+02
-2 14969     -7.941100e+02 3.502400e+02
-4 14969     8.562000e+01 -9.284003e+01
-5 14969     -7.047998e+01 -7.740002e+01
-2 14970     4.026000e+02 3.467300e+02
-6 14970     3.275000e+02 5.884600e+02
-8 14970     3.970300e+02 2.606300e+02
-9 14970     1.982000e+02 3.883400e+02
-2 14971     -6.235200e+02 3.416600e+02
-4 14971     7.421997e+01 -1.754400e+02
-5 14971     8.177002e+01 -8.141998e+01
-8 14971     -4.327500e+02 2.556800e+02
-11 14971     -1.480400e+02 -2.134900e+02
-12 14971     -6.969700e+02 5.453900e+02
-13 14971     -7.462000e+01 2.098900e+02
-2 14972     6.619399e+02 3.405200e+02
-3 14972     5.097700e+02 2.098999e+01
-9 14972     4.195900e+02 3.909600e+02
-2 14973     -7.847600e+02 3.386700e+02
-4 14973     8.047998e+01 -9.821002e+01
-8 14973     -5.637300e+02 2.493000e+02
-2 14974     4.485999e+01 3.368000e+02
-3 14974     -1.027000e+02 2.340027e+00
-5 14974     7.969500e+02 -6.753998e+01
-6 14974     -7.003998e+01 6.842700e+02
-8 14974     1.178100e+02 2.652900e+02
-9 14974     -1.168100e+02 3.681200e+02
-11 14974     4.983600e+02 -1.862100e+02
-13 14974     4.998700e+02 2.519300e+02
-14 14974     6.928000e+02 -1.473700e+02
-2 14975     -2.164800e+02 3.333000e+02
-4 14975     4.721997e+01 -4.203000e+02
-5 14975     4.942700e+02 -8.094000e+01
-6 14975     -3.921200e+02 6.225400e+02
-11 14975     2.229000e+02 -2.046900e+02
-2 14976     6.026801e+02 3.294500e+02
-9 14976     3.708101e+02 3.798900e+02
-10 14976     7.424100e+02 5.710200e+02
-2 14977     6.015997e+01 3.132600e+02
-5 14977     8.143000e+02 -8.909003e+01
-6 14977     -4.932001e+01 6.622000e+02
-8 14977     1.311000e+02 2.478400e+02
-9 14977     -1.029200e+02 3.477400e+02
-11 14977     5.112100e+02 -2.063300e+02
-2 14978     -1.225900e+02 3.029500e+02
-11 14978     3.173400e+02 -2.226700e+02
-13 14978     3.408000e+02 2.120100e+02
-2 14979     4.882600e+02 2.951400e+02
-3 14979     3.451899e+02 -2.641998e+01
-6 14979     4.085800e+02 4.850000e+02
-7 14979     4.369200e+02 4.813500e+02
-8 14979     4.621100e+02 2.133400e+02
-9 14979     2.746500e+02 3.472100e+02
-10 14979     6.123300e+02 5.700800e+02
-13 14979     8.124500e+02 7.234998e+01
-2 14980     6.188101e+02 2.902100e+02
-9 14980     3.872000e+02 3.473200e+02
-10 14980     7.521600e+02 5.169300e+02
-2 14981     4.245900e+02 2.651200e+02
-3 14981     2.846300e+02 -5.751001e+01
-8 14981     4.096200e+02 1.899800e+02
-2 14982     5.373600e+02 2.487900e+02
-3 14982     3.938600e+02 -6.935999e+01
-6 14982     4.613000e+02 4.279500e+02
-7 14982     4.752600e+02 4.259000e+02
-8 14982     5.016200e+02 1.747200e+02
-9 14982     3.175699e+02 3.096500e+02
-2 14983     5.947400e+02 2.461600e+02
-3 14983     4.504500e+02 -6.941998e+01
-7 14983     5.272700e+02 4.108200e+02
-8 14983     5.499301e+02 1.708500e+02
-9 14983     3.661899e+02 3.093000e+02
-2 14984     -1.833100e+02 2.448700e+02
-4 14984     -3.700012e+00 -4.319800e+02
-5 14984     5.175601e+02 -1.658800e+02
-7 14984     -1.113800e+02 5.628400e+02
-8 14984     -7.127002e+01 1.881400e+02
-12 14984     -1.800300e+02 5.068100e+02
-2 14985     -1.993000e+02 2.405400e+02
-7 14985     -1.298600e+02 5.564900e+02
-2 14986     4.282800e+02 2.185200e+02
-6 14986     3.406700e+02 4.079100e+02
-8 14986     4.135600e+02 1.517900e+02
-9 14986     2.256600e+02 2.801700e+02
-12 14986     4.293800e+02 4.146200e+02
-2 14987     6.238000e+02 2.189300e+02
-3 14987     4.784600e+02 -9.506000e+01
-6 14987     5.570300e+02 3.840400e+02
-7 14987     5.485200e+02 3.762500e+02
-8 14987     5.739000e+02 1.495500e+02
-9 14987     3.911700e+02 2.876400e+02
-10 14987     7.361899e+02 4.274800e+02
-2 14988     -1.553700e+02 2.184000e+02
-5 14988     5.476700e+02 -1.860100e+02
-6 14988     -3.125200e+02 5.025100e+02
-12 14988     -1.438800e+02 4.842300e+02
-2 14989     -1.479200e+02 2.104400e+02
-5 14989     5.546000e+02 -1.963700e+02
-2 14990     -2.426300e+02 2.078500e+02
-3 14990     -3.787200e+02 -1.239300e+02
-4 14990     -1.577002e+01 -3.838400e+02
-5 14990     4.466300e+02 -1.993500e+02
-8 14990     -1.223800e+02 1.571000e+02
-12 14990     -2.473800e+02 4.616300e+02
-2 14991     -1.560300e+02 1.995400e+02
-3 14991     -2.931900e+02 -1.307700e+02
-7 14991     -8.284998e+01 5.279400e+02
-12 14991     -1.441400e+02 4.706700e+02
-13 14991     3.036899e+02 1.329800e+02
-14 14991     4.532100e+02 -2.858400e+02
-2 14992     3.647800e+02 1.734600e+02
-7 14992     3.486200e+02 4.186000e+02
-2 14993     -4.935300e+02 1.712100e+02
-7 14993     -4.289600e+02 4.689500e+02
-8 14993     -3.270700e+02 1.243200e+02
-11 14993     -4.115002e+01 -3.316100e+02
-12 14993     -5.278500e+02 3.895600e+02
-2 14994     1.102200e+02 1.666700e+02
-8 14994     1.313300e+02 9.520999e+01
-2 14995     -3.198100e+02 1.648100e+02
-7 14995     -2.509700e+02 4.804400e+02
-8 14995     -1.829500e+02 1.221800e+02
-2 14996     2.716899e+02 1.569500e+02
-3 14996     1.610500e+02 -1.596200e+02
-2 14997     1.628200e+02 9.633002e+01
-3 14997     6.996997e+01 -2.173500e+02
-4 14997     -2.326700e+02 -4.449301e+02
-5 14997     6.792500e+02 -5.949700e+02
-6 14997     -1.513000e+01 1.044500e+02
-8 14997     1.662700e+02 3.298999e+01
-12 14997     4.299988e+00 1.588000e+02
-2 14998     7.791600e+02 9.465997e+01
-9 14998     5.225200e+02 1.875400e+02
-2 14999     7.540100e+02 8.753003e+01
-12 14999     7.700200e+02 2.329700e+02
-2 15000     7.540100e+02 8.753003e+01
-9 15000     5.027300e+02 1.809200e+02
-12 15000     7.700200e+02 2.329700e+02
-2 15001     1.656700e+02 7.590997e+01
-3 15001     7.388000e+01 -2.369600e+02
-4 15001     -2.457200e+02 -4.406700e+02
-6 15001     -1.365997e+01 7.934998e+01
-8 15001     1.676600e+02 1.619000e+01
-10 15001     -6.000000e+01 1.953300e+02
-12 15001     3.669983e+00 1.337500e+02
-2 15002     2.031000e+01 6.296002e+01
-6 15002     -1.612800e+02 8.372998e+01
-8 15002     5.209998e+01 1.028000e+01
-13 15002     2.979800e+02 -1.579300e+02
-2 15003     2.031000e+01 6.296002e+01
-6 15003     -1.612800e+02 8.372998e+01
-8 15003     5.209998e+01 1.028000e+01
-2 15004     4.161300e+02 1.946002e+01
-8 15004     3.763100e+02 -3.081000e+01
-2 15005     5.850100e+02 1.866998e+01
-3 15005     4.509500e+02 -2.881200e+02
-6 15005     5.044800e+02 1.737600e+02
-7 15005     4.925000e+02 2.059400e+02
-8 15005     5.389200e+02 -1.537000e+01
-9 15005     3.630000e+02 1.176600e+02
-10 15005     6.533101e+02 2.309100e+02
-12 15005     5.852700e+02 1.834400e+02
-13 15005     8.660000e+02 -1.765000e+02
-2 15006     -4.622000e+02 1.446997e+01
-15 15006     -3.233400e+02 5.208100e+02
-2 15007     7.455100e+02 2.150024e+00
-10 15007     8.141100e+02 1.449700e+02
-2 15008     7.037900e+02 2.899780e-01
-9 15008     4.635300e+02 1.069000e+02
-10 15008     7.682200e+02 1.633300e+02
-2 15009     8.496002e+01 -2.000000e+00
-3 15009     -1.239990e+00 -3.134700e+02
-4 15009     -2.670200e+02 -3.766100e+02
-13 15009     3.273600e+02 -2.268700e+02
-2 15010     8.496002e+01 -2.000000e+00
-4 15010     -2.670200e+02 -3.766100e+02
-2 15011     5.634301e+02 -3.521002e+01
-8 15011     5.035300e+02 -7.409003e+01
-2 15012     6.655900e+02 -3.952002e+01
-3 15012     5.336500e+02 -3.421100e+02
-7 15012     5.538800e+02 1.364300e+02
-9 15012     4.317500e+02 7.279999e+01
-12 15012     6.667000e+02 1.119100e+02
-2 15013     -1.266700e+02 -4.491998e+01
-8 15013     -6.409998e+01 -7.239001e+01
-2 15014     -1.266700e+02 -4.491998e+01
-8 15014     -6.409998e+01 -7.239001e+01
-2 15015     7.876600e+02 -4.719000e+01
-7 15015     6.576899e+02 9.839001e+01
-9 15015     5.336899e+02 7.028998e+01
-12 15015     7.966100e+02 8.520001e+01
-2 15016     -1.598600e+02 -5.509003e+01
-3 15016     -2.448900e+02 -3.735700e+02
-8 15016     -9.091998e+01 -8.112000e+01
-2 15017     5.653800e+02 -9.159998e+01
-3 15017     4.577900e+02 -3.870400e+02
-2 15018     -1.441800e+02 -1.373000e+02
-3 15018     -2.311300e+02 -4.552500e+02
-2 15019     -5.209998e+01 -1.405000e+02
-3 15019     -1.287100e+02 -4.523700e+02
-4 15019     -3.053500e+02 -2.754000e+02
-6 15019     -2.362100e+02 -1.494301e+02
-7 15019     -2.535000e+02 -3.020020e+00
-8 15019     -1.350000e+01 -1.576500e+02
-9 15019     -1.437800e+02 -3.572998e+01
-12 15019     -2.236300e+02 -8.804999e+01
-2 15020     8.229980e+00 -1.436900e+02
-3 15020     -6.623999e+01 -4.529800e+02
-7 15020     -2.187300e+02 -2.153003e+01
-8 15020     3.273999e+01 -1.634000e+02
-10 15020     -2.532600e+02 4.419983e+00
-12 15020     -1.745500e+02 -1.025700e+02
-15 15020     -2.190700e+02 -2.457001e+01
-2 15021     -4.315997e+01 -1.552600e+02
-3 15021     -1.205100e+02 -4.660699e+02
-8 15021     -7.510010e+00 -1.691800e+02
-9 15021     -1.375100e+02 -4.687000e+01
-2 15022     2.114001e+01 -1.698400e+02
-3 15022     -5.271002e+01 -4.774800e+02
-8 15022     4.066998e+01 -1.855700e+02
-2 15023     4.901200e+02 -1.712200e+02
-8 15023     4.291899e+02 -1.951600e+02
-2 15024     -1.231900e+02 -1.741600e+02
-3 15024     -2.073300e+02 -4.901300e+02
-9 15024     -2.071800e+02 -6.771002e+01
-2 15025     1.293000e+02 -1.847800e+02
-4 15025     -3.865200e+02 -3.476700e+02
-6 15025     -5.772998e+01 -2.116600e+02
-12 15025     -5.997998e+01 -1.583400e+02
-2 15026     -3.250600e+02 -2.051000e+02
-13 15026     7.681000e+01 -2.408300e+02
-2 15027     -8.981000e+01 -2.434200e+02
-8 15027     -4.146002e+01 -2.359300e+02
-2 15028     -3.460000e+02 -2.455400e+02
-7 15028     -3.894800e+02 3.034003e+01
-8 15028     -2.300600e+02 -2.198100e+02
-10 15028     -3.999400e+02 1.034900e+02
-13 15028     5.210999e+01 -2.770300e+02
-15 15028     -3.785300e+02 8.744000e+01
-2 15029     7.109985e+00 -2.466700e+02
-3 15029     -6.765002e+01 -5.586000e+02
-8 15029     3.112000e+01 -2.441000e+02
-2 15030     1.679600e+02 -2.582000e+02
-8 15030     1.585300e+02 -2.619700e+02
-9 15030     4.521002e+01 -1.239600e+02
-2 15031     -5.060999e+01 -2.606300e+02
-8 15031     -1.148999e+01 -2.506700e+02
-2 15032     6.552900e+02 -2.649800e+02
-8 15032     5.828900e+02 -2.602700e+02
-2 15033     1.375100e+02 -2.958500e+02
-4 15033     -4.440700e+02 -3.431600e+02
-12 15033     -4.472998e+01 -2.539100e+02
-13 15033     3.265200e+02 -4.542100e+02
-2 15034     4.010000e+02 -3.085200e+02
-6 15034     2.245100e+02 -3.102100e+02
-8 15034     3.527400e+02 -3.032900e+02
-12 15034     2.382700e+02 -2.748300e+02
-2 15035     -4.899700e+02 -3.719900e+02
-13 15035     -7.371002e+01 -3.694700e+02
-2 15036     -4.899700e+02 -3.719900e+02
-7 15036     -5.351600e+02 -9.179999e+01
-8 15036     -3.523400e+02 -3.250700e+02
-2 15037     3.267400e+02 -3.705000e+02
-8 15037     2.892900e+02 -3.520000e+02
-2 15038     -4.676100e+02 -4.227400e+02
-7 15038     -5.340800e+02 -1.441400e+02
-8 15038     -3.393200e+02 -3.681400e+02
-15 15038     -5.949300e+02 -1.346300e+02
-2 15039     5.542200e+02 -4.392400e+02
-8 15039     4.808300e+02 -4.139300e+02
-2 15040     -3.824600e+02 -4.865000e+02
-6 15040     -5.607300e+02 -4.835699e+02
-8 15040     -2.798500e+02 -4.247200e+02
-2 15041     5.005400e+02 -5.031400e+02
-10 15041     1.635700e+02 -4.144800e+02
-2 15042     6.825699e+02 -5.914500e+02
-6 15042     4.876500e+02 -6.069399e+02
-12 15042     4.899800e+02 -5.963000e+02
-2 15043     5.569900e+02 -6.058500e+02
-9 15043     3.808000e+02 -3.865400e+02
-2 15044     5.755100e+02 -6.055900e+02
-7 15044     1.897600e+02 -4.651000e+02
-9 15044     3.945601e+02 -3.854800e+02
-2 15045     -2.790300e+02 5.927100e+02
-14 15045     3.466200e+02 6.528998e+01
-2 15046     -8.050000e+01 5.740300e+02
-3 15046     -2.190200e+02 2.311400e+02
-4 15046     1.788500e+02 -5.579100e+02
-5 15046     6.700100e+02 1.624800e+02
-13 15046     3.969200e+02 4.355200e+02
-14 15046     5.615601e+02 7.128003e+01
-2 15047     -2.105300e+02 5.634500e+02
-3 15047     -3.399400e+02 2.233800e+02
-4 15047     1.737100e+02 -4.538400e+02
-11 15047     2.320400e+02 -2.521002e+01
-14 15047     4.172700e+02 4.740997e+01
-2 15048     4.517200e+02 5.313800e+02
-3 15048     3.028101e+02 1.924600e+02
-8 15048     4.343800e+02 4.083800e+02
-2 15049     2.674500e+02 5.292900e+02
-3 15049     1.228700e+02 1.887500e+02
-6 15049     1.752700e+02 8.293400e+02
-8 15049     2.890100e+02 4.123200e+02
-13 15049     6.694500e+02 3.366300e+02
-2 15050     -5.124800e+02 5.100700e+02
-11 15050     -5.365002e+01 -9.117999e+01
-2 15051     2.672900e+02 4.919400e+02
-3 15051     1.235900e+02 1.536800e+02
-6 15051     1.755700e+02 7.827400e+02
-8 15051     2.889300e+02 3.820500e+02
-13 15051     6.653000e+02 3.052200e+02
-2 15052     -2.723300e+02 4.889400e+02
-3 15052     -3.998500e+02 1.517600e+02
-4 15052     1.344100e+02 -3.997400e+02
-5 15052     4.462600e+02 6.602002e+01
-6 15052     -4.762700e+02 8.014500e+02
-8 15052     -1.456700e+02 3.812000e+02
-2 15053     -2.441900e+02 4.766900e+02
-3 15053     -3.734600e+02 1.385300e+02
-4 15053     1.263300e+02 -4.182800e+02
-6 15053     -4.384100e+02 7.952600e+02
-8 15053     -1.214800e+02 3.736300e+02
-11 15053     1.982300e+02 -9.659998e+01
-13 15053     2.407500e+02 3.383600e+02
-14 15053     3.763300e+02 -3.673999e+01
-2 15054     -1.131700e+02 4.686300e+02
-3 15054     -2.506100e+02 1.306200e+02
-6 15054     -2.733400e+02 8.111900e+02
-2 15055     -2.582001e+01 4.461800e+02
-3 15055     -1.685700e+02 1.075100e+02
-5 15055     7.221000e+02 4.135999e+01
-6 15055     -1.639800e+02 8.047300e+02
-8 15055     5.960999e+01 3.523800e+02
-11 15055     4.236300e+02 -1.009600e+02
-13 15055     4.401200e+02 3.363200e+02
-14 15055     6.163600e+02 -4.544000e+01
-2 15056     3.989200e+02 4.252300e+02
-3 15056     2.520000e+02 9.346002e+01
-6 15056     3.240700e+02 6.788800e+02
-8 15056     3.941000e+02 3.234300e+02
-2 15057     4.458199e+02 4.129300e+02
-3 15057     3.008000e+02 8.234003e+01
-6 15057     3.680600e+02 6.253300e+02
-8 15057     4.294800e+02 3.110700e+02
-9 15057     2.369700e+02 4.465800e+02
-2 15058     -4.789700e+02 3.984900e+02
-3 15058     -6.004600e+02 6.704999e+01
-2 15059     4.720100e+02 3.948400e+02
-3 15059     3.262900e+02 6.684003e+01
-6 15059     3.951600e+02 6.017400e+02
-8 15059     4.501000e+02 2.960800e+02
-9 15059     2.587000e+02 4.331100e+02
-12 15059     4.793300e+02 6.076100e+02
-13 15059     8.101600e+02 1.594500e+02
-2 15060     4.867600e+02 3.931900e+02
-3 15060     3.405900e+02 6.590002e+01
-6 15060     4.121600e+02 5.972700e+02
-8 15060     4.621300e+02 2.933900e+02
-9 15060     2.716000e+02 4.311100e+02
-12 15060     4.954900e+02 6.036400e+02
-13 15060     8.233700e+02 1.554300e+02
-2 15061     4.422100e+02 3.506600e+02
-3 15061     2.993800e+02 2.451001e+01
-6 15061     3.598300e+02 5.539700e+02
-8 15061     4.250400e+02 2.586900e+02
-12 15061     4.463900e+02 5.607600e+02
-2 15062     -7.706000e+01 3.460500e+02
-3 15062     -2.172000e+02 1.008002e+01
-4 15062     4.794000e+01 -5.265601e+02
-5 15062     6.513000e+02 -6.048999e+01
-6 15062     -2.217200e+02 6.709900e+02
-8 15062     1.713000e+01 2.718700e+02
-9 15062     -2.189900e+02 3.736900e+02
-11 15062     3.655000e+02 -1.853500e+02
-13 15062     3.851000e+02 2.515100e+02
-14 15062     5.514600e+02 -1.448900e+02
-2 15063     6.227000e+02 3.117400e+02
-7 15063     5.610800e+02 4.684800e+02
-8 15063     5.741400e+02 2.240200e+02
-9 15063     3.895900e+02 3.648400e+02
-10 15063     7.613500e+02 5.417800e+02
-2 15064     3.080100e+02 3.023600e+02
-7 15064     3.090601e+02 5.515900e+02
-8 15064     3.195400e+02 2.277900e+02
-11 15064     6.266899e+02 -3.226800e+02
-13 15064     6.783800e+02 1.380600e+02
-2 15065     3.080100e+02 3.023600e+02
-7 15065     3.090601e+02 5.515900e+02
-8 15065     3.195400e+02 2.277900e+02
-11 15065     6.266899e+02 -3.226800e+02
-13 15065     6.783800e+02 1.380600e+02
-2 15066     -9.821997e+01 2.787700e+02
-4 15066     1.081000e+01 -4.980900e+02
-5 15066     6.190000e+02 -1.280200e+02
-8 15066     -9.099731e-01 2.175300e+02
-9 15066     -2.355800e+02 3.130900e+02
-11 15066     3.395300e+02 -2.416000e+02
-12 15066     -7.975000e+01 5.561200e+02
-2 15067     1.990997e+01 2.647200e+02
-3 15067     -1.261100e+02 -6.808002e+01
-5 15067     7.590500e+02 -1.388400e+02
-9 15067     -1.350600e+02 3.047400e+02
-11 15067     4.695400e+02 -2.471900e+02
-2 15068     4.335200e+02 2.416200e+02
-3 15068     2.947400e+02 -7.670001e+01
-8 15068     4.172500e+02 1.706200e+02
-9 15068     2.291300e+02 2.999900e+02
-2 15069     3.714500e+02 2.225000e+02
-3 15069     2.288500e+02 -9.922998e+01
-6 15069     2.857100e+02 4.530600e+02
-8 15069     3.697500e+02 1.609800e+02
-9 15069     1.747300e+02 2.802900e+02
-2 15070     6.352200e+02 2.032800e+02
-3 15070     4.898101e+02 -1.090800e+02
-6 15070     5.686700e+02 3.615600e+02
-7 15070     5.570900e+02 3.592700e+02
-8 15070     5.819200e+02 1.343300e+02
-10 15070     7.448700e+02 4.067500e+02
-2 15071     1.590002e+01 1.992400e+02
-8 15071     9.353003e+01 1.548600e+02
-9 15071     -1.363700e+02 2.473700e+02
-11 15071     4.631700e+02 -3.028800e+02
-12 15071     5.934003e+01 4.861500e+02
-2 15072     5.270300e+02 1.995100e+02
-9 15072     3.105100e+02 2.670700e+02
-10 15072     6.323300e+02 4.451300e+02
-2 15073     5.270300e+02 1.995100e+02
-9 15073     3.105100e+02 2.670700e+02
-10 15073     6.323300e+02 4.451300e+02
-2 15074     -3.812700e+02 1.863800e+02
-3 15074     -5.119300e+02 -1.446600e+02
-5 15074     3.030500e+02 -2.194700e+02
-8 15074     -2.337500e+02 1.377800e+02
-13 15074     1.106400e+02 1.094900e+02
-2 15075     -1.081400e+02 1.655400e+02
-7 15075     -2.983002e+01 5.010800e+02
-8 15075     -8.609985e+00 1.260000e+02
-13 15075     3.445800e+02 1.090200e+02
-14 15075     5.040800e+02 -3.175200e+02
-2 15076     -1.220300e+02 1.598000e+02
-7 15076     -4.546002e+01 4.942700e+02
-8 15076     -2.035999e+01 1.221600e+02
-11 15076     3.146899e+02 -3.351100e+02
-13 15076     3.316899e+02 1.026000e+02
-14 15076     4.885100e+02 -3.242300e+02
-2 15077     3.165997e+01 1.377500e+02
-8 15077     6.390997e+01 7.142001e+01
-2 15078     -3.044500e+02 1.318200e+02
-3 15078     -4.352200e+02 -1.995800e+02
-6 15078     -4.825400e+02 3.704900e+02
-8 15078     -1.688900e+02 9.714999e+01
-9 15078     -4.016400e+02 1.787400e+02
-2 15079     -3.044500e+02 1.318200e+02
-5 15079     3.759399e+02 -2.710900e+02
-6 15079     -4.825400e+02 3.704900e+02
-7 15079     -2.405500e+02 4.493500e+02
-8 15079     -1.688900e+02 9.714999e+01
-2 15080     4.524600e+02 1.093000e+02
-15 15080     7.303199e+02 4.238600e+02
-2 15081     1.043900e+02 9.620001e+01
-4 15081     -2.162700e+02 -4.135000e+02
-8 15081     1.186800e+02 3.391000e+01
-2 15082     5.019600e+02 8.102002e+01
-9 15082     2.925000e+02 1.671700e+02
-10 15082     5.858800e+02 3.264000e+02
-2 15083     7.283101e+02 8.216998e+01
-9 15083     4.812400e+02 1.754300e+02
-2 15084     -8.490002e+01 3.062000e+01
-8 15084     -2.610999e+01 -9.529999e+00
-2 15085     -5.859998e+01 2.853998e+01
-8 15085     -6.250000e+00 -1.098999e+01
-2 15086     7.060699e+02 2.342999e+01
-3 15086     5.688400e+02 -2.780900e+02
-9 15086     4.645601e+02 1.261700e+02
-10 15086     7.758600e+02 1.859300e+02
-2 15087     7.060699e+02 2.342999e+01
-3 15087     5.688400e+02 -2.780900e+02
-9 15087     4.645601e+02 1.261700e+02
-12 15087     7.133199e+02 1.714000e+02
-2 15088     7.032700e+02 -1.366998e+01
-9 15088     4.635699e+02 9.497000e+01
-2 15089     2.850000e+01 -1.477002e+01
-3 15089     -5.806000e+01 -3.264100e+02
-6 15089     -1.530500e+02 -7.000000e+00
-2 15090     4.782001e+01 -1.876001e+01
-6 15090     -1.350300e+02 -1.412000e+01
-2 15091     5.582400e+02 -4.765002e+01
-3 15091     4.444700e+02 -3.466100e+02
-2 15092     7.726300e+02 -6.950000e+01
-9 15092     5.227600e+02 5.087000e+01
-2 15093     7.264200e+02 -7.533002e+01
-9 15093     4.838101e+02 4.440997e+01
-2 15094     -7.003998e+01 -1.469100e+02
-3 15094     -1.470300e+02 -4.595300e+02
-6 15094     -2.552500e+02 -1.500000e+02
-8 15094     -2.810999e+01 -1.604600e+02
-2 15095     -5.659973e+00 -1.824200e+02
-3 15095     -8.215997e+01 -4.909301e+02
-8 15095     2.141998e+01 -1.926800e+02
-2 15096     -3.764001e+01 -1.852300e+02
-4 15096     -3.270900e+02 -2.755500e+02
-6 15096     -2.230900e+02 -1.884200e+02
-8 15096     -3.179993e+00 -1.922400e+02
-2 15097     3.473199e+02 -2.410200e+02
-3 15097     2.638101e+02 -5.368199e+02
-4 15097     -4.942700e+02 -4.756600e+02
-6 15097     1.632600e+02 -2.611500e+02
-8 15097     3.055400e+02 -2.496400e+02
-12 15097     1.663800e+02 -2.214700e+02
-2 15098     5.022900e+02 -2.417200e+02
-8 15098     4.432800e+02 -2.477200e+02
-9 15098     3.153400e+02 -9.582001e+01
-2 15099     -3.211700e+02 -2.440100e+02
-7 15099     -3.714000e+02 2.945001e+01
-9 15099     -3.813900e+02 -1.419000e+02
-10 15099     -3.796200e+02 1.003400e+02
-13 15099     6.826001e+01 -2.786300e+02
-15 15099     -3.545000e+02 8.570999e+01
-2 15100     4.789800e+02 -2.631100e+02
-8 15100     4.207400e+02 -2.670400e+02
-2 15101     3.582400e+02 -2.675500e+02
-6 15101     1.747700e+02 -2.866600e+02
-8 15101     3.150800e+02 -2.730400e+02
-2 15102     -3.262000e+01 -2.685300e+02
-8 15102     3.080017e+00 -2.570200e+02
-9 15102     -1.232000e+02 -1.423400e+02
-2 15103     -7.682001e+01 -2.772900e+02
-8 15103     -3.115002e+01 -2.622500e+02
-2 15104     -4.565900e+02 -2.837300e+02
-7 15104     -4.860700e+02 -1.280029e+00
-2 15105     1.076400e+02 -2.909000e+02
-4 15105     -4.300200e+02 -3.289400e+02
-6 15105     -7.609003e+01 -2.988300e+02
-8 15105     1.112800e+02 -2.829700e+02
-12 15105     -7.088000e+01 -2.465600e+02
-13 15105     3.070900e+02 -4.439700e+02
-2 15106     2.895500e+02 -3.099100e+02
-4 15106     -5.095400e+02 -4.343300e+02
-6 15106     1.071000e+02 -3.196300e+02
-12 15106     1.127000e+02 -2.778400e+02
-13 15106     4.408600e+02 -4.903300e+02
-2 15107     3.862600e+02 -3.238700e+02
-6 15107     2.084700e+02 -3.232300e+02
-8 15107     3.395600e+02 -3.160200e+02
-9 15107     2.247300e+02 -1.692100e+02
-12 15107     2.200100e+02 -2.891400e+02
-2 15108     1.719000e+02 -3.604500e+02
-4 15108     -4.896100e+02 -3.511600e+02
-6 15108     -1.102002e+01 -3.641899e+02
-7 15108     -9.339001e+01 -2.034000e+02
-9 15108     5.247998e+01 -2.062700e+02
-12 15108     -8.580017e+00 -3.189200e+02
-13 15108     3.427600e+02 -5.037800e+02
-2 15109     -3.575200e+02 -3.746000e+02
-7 15109     -4.380900e+02 -1.044700e+02
-13 15109     1.221997e+01 -3.902600e+02
-2 15110     -3.306300e+02 -3.997300e+02
-6 15110     -5.073000e+02 -3.723700e+02
-7 15110     -4.291800e+02 -1.341900e+02
-8 15110     -2.300600e+02 -3.530800e+02
-13 15110     2.207001e+01 -4.178300e+02
-2 15111     5.907400e+02 -4.116300e+02
-8 15111     5.147500e+02 -3.901300e+02
-12 15111     4.590800e+02 -3.676800e+02
-2 15112     4.651600e+02 -4.286801e+02
-8 15112     4.052700e+02 -4.028300e+02
-2 15113     5.591300e+02 -4.950699e+02
-7 15113     2.291801e+02 -3.509600e+02
-10 15113     2.324301e+02 -4.166000e+02
-2 15114     5.591300e+02 -4.950699e+02
-7 15114     2.291801e+02 -3.509600e+02
-10 15114     2.324301e+02 -4.166000e+02
-2 15115     4.619000e+02 5.087500e+02
-6 15115     3.913800e+02 7.387800e+02
-8 15115     4.441300e+02 3.917700e+02
-2 15116     -2.977500e+02 4.893900e+02
-6 15116     -5.079500e+02 7.957300e+02
-8 15116     -1.660700e+02 3.798600e+02
-2 15117     -9.526001e+01 4.870900e+02
-3 15117     -2.326300e+02 1.478000e+02
-4 15117     1.301100e+02 -5.340200e+02
-5 15117     6.451600e+02 7.638000e+01
-6 15117     -2.518000e+02 8.401800e+02
-8 15117     2.130005e+00 3.829200e+02
-13 15117     3.780900e+02 3.641500e+02
-14 15117     5.406500e+02 -1.038000e+01
-2 15118     -1.124800e+02 4.862800e+02
-3 15118     -2.498100e+02 1.472500e+02
-8 15118     -1.273999e+01 3.823700e+02
-2 15119     -2.105600e+02 4.770500e+02
-13 15119     2.691300e+02 3.434100e+02
-14 15119     4.104800e+02 -3.210999e+01
-2 15120     -9.496002e+01 4.602800e+02
-4 15120     1.119500e+02 -5.286400e+02
-5 15120     6.417300e+02 4.831000e+01
-6 15120     -2.505600e+02 8.056500e+02
-8 15120     1.359985e+00 3.613000e+02
-13 15120     3.756700e+02 3.404600e+02
-2 15121     -9.496002e+01 4.602800e+02
-3 15121     -2.334300e+02 1.231200e+02
-4 15121     1.119500e+02 -5.286400e+02
-5 15121     6.417300e+02 4.831000e+01
-6 15121     -2.505600e+02 8.056500e+02
-8 15121     1.359985e+00 3.613000e+02
-11 15121     3.483000e+02 -9.696002e+01
-13 15121     3.756700e+02 3.404600e+02
-14 15121     5.382000e+02 -3.887000e+01
-2 15122     6.306400e+02 4.341500e+02
-3 15122     4.743800e+02 1.057600e+02
-8 15122     5.827700e+02 3.269800e+02
-9 15122     3.929500e+02 4.696300e+02
-2 15123     1.661400e+02 4.325800e+02
-3 15123     1.103003e+01 9.670001e+01
-8 15123     2.203000e+02 3.435500e+02
-2 15124     -3.477300e+02 4.067300e+02
-4 15124     9.359998e+01 -3.411000e+02
-5 15124     3.613199e+02 -1.340002e+01
-8 15124     -2.073100e+02 3.145800e+02
-11 15124     9.728998e+01 -1.562300e+02
-2 15125     -3.799100e+02 3.940000e+02
-3 15125     -5.045200e+02 6.065002e+01
-4 15125     8.785999e+01 -3.179700e+02
-5 15125     3.237700e+02 -2.806000e+01
-8 15125     -2.354600e+02 3.053900e+02
-11 15125     6.600000e+01 -1.671200e+02
-2 15126     2.739200e+02 3.569500e+02
-9 15126     8.807001e+01 3.936400e+02
-13 15126     6.558300e+02 1.897800e+02
-2 15127     4.978003e+01 3.541600e+02
-3 15127     -9.621997e+01 1.842999e+01
-5 15127     8.078101e+02 -4.859998e+01
-11 15127     5.063000e+02 -1.703700e+02
-13 15127     5.086500e+02 2.668000e+02
-14 15127     7.025500e+02 -1.299100e+02
-2 15128     -2.647500e+02 3.336800e+02
-3 15128     -3.954100e+02 8.099976e-01
-4 15128     5.108002e+01 -3.845700e+02
-5 15128     4.390000e+02 -8.034998e+01
-6 15128     -4.542900e+02 6.131800e+02
-8 15128     -1.389300e+02 2.571500e+02
-12 15128     -2.807900e+02 5.898200e+02
-13 15128     2.151200e+02 2.271000e+02
-2 15129     3.967600e+02 3.277900e+02
-3 15129     2.514000e+02 6.699829e-01
-8 15129     3.918600e+02 2.464200e+02
-9 15129     1.931100e+02 3.727000e+02
-2 15130     4.119700e+02 3.194100e+02
-3 15130     2.678400e+02 -7.150024e+00
-8 15130     4.041800e+02 2.409800e+02
-9 15130     2.074600e+02 3.643500e+02
-2 15131     -1.160300e+02 2.884600e+02
-3 15131     -2.561000e+02 -4.758002e+01
-6 15131     -2.667300e+02 5.952300e+02
-8 15131     -1.406000e+01 2.272600e+02
-9 15131     -2.513900e+02 3.213900e+02
-12 15131     -9.644000e+01 5.705500e+02
-13 15131     3.436700e+02 2.003800e+02
-14 15131     5.010200e+02 -2.050200e+02
-2 15132     -3.696500e+02 2.510800e+02
-4 15132     1.671997e+01 -3.093000e+02
-5 15132     3.221899e+02 -1.565300e+02
-7 15132     -3.093800e+02 5.517600e+02
-11 15132     7.214001e+01 -2.707300e+02
-12 15132     -3.948800e+02 4.911000e+02
-2 15133     6.997000e+02 1.898800e+02
-3 15133     5.535400e+02 -1.196500e+02
-9 15133     4.548199e+02 2.655200e+02
-2 15134     6.997000e+02 1.898800e+02
-3 15134     5.535400e+02 -1.196500e+02
-7 15134     6.150900e+02 3.307000e+02
-9 15134     4.548199e+02 2.655200e+02
-10 15134     8.131300e+02 3.650900e+02
-2 15135     7.712900e+02 1.493700e+02
-3 15135     6.241400e+02 -1.544100e+02
-7 15135     6.719500e+02 2.773900e+02
-9 15135     5.159800e+02 2.335600e+02
-12 15135     7.942200e+02 2.973600e+02
-2 15136     -2.915900e+02 1.241300e+02
-6 15136     -4.662000e+02 3.706700e+02
-8 15136     -1.585500e+02 9.238000e+01
-2 15137     6.532900e+02 1.042500e+02
-3 15137     5.128199e+02 -2.018600e+02
-10 15137     7.400100e+02 2.929500e+02
-12 15137     6.610300e+02 2.649600e+02
-2 15138     3.066400e+02 5.063000e+01
-3 15138     2.074100e+02 -2.571300e+02
-2 15139     8.008900e+02 2.757001e+01
-9 15139     5.387700e+02 1.327500e+02
-2 15140     6.753998e+01 2.169983e+00
-6 15140     -1.209400e+02 1.500000e+00
-8 15140     8.667999e+01 -4.195001e+01
-2 15141     -6.839001e+01 -5.369995e+00
-8 15141     -1.725000e+01 -4.189001e+01
-2 15142     2.964399e+02 -3.171002e+01
-3 15142     1.996500e+02 -3.363300e+02
-6 15142     1.213000e+02 -3.837000e+01
-7 15142     3.854999e+01 4.852002e+01
-8 15142     2.723300e+02 -7.553003e+01
-13 15142     4.801300e+02 -2.843500e+02
-2 15143     7.253199e+02 -4.615002e+01
-9 15143     4.820000e+02 6.910999e+01
-10 15143     7.777800e+02 1.079300e+02
-2 15144     7.338400e+02 -1.052300e+02
-7 15144     6.038500e+02 6.321002e+01
-2 15145     7.737500e+02 -1.155700e+02
-7 15145     6.357500e+02 4.476001e+01
-2 15146     -9.762000e+01 -1.278900e+02
-3 15146     -1.726100e+02 -4.376200e+02
-8 15146     -4.913000e+01 -1.456300e+02
-12 15146     -2.620800e+02 -6.456000e+01
-2 15147     2.116899e+02 -2.314300e+02
-3 15147     1.367400e+02 -5.298400e+02
-6 15147     2.554999e+01 -2.601300e+02
-8 15147     1.944500e+02 -2.399800e+02
-9 15147     8.306000e+01 -9.602002e+01
-2 15148     4.516801e+02 -2.582100e+02
-3 15148     3.619000e+02 -5.536600e+02
-6 15148     2.803100e+02 -2.577900e+02
-8 15148     3.968700e+02 -2.629200e+02
-2 15149     4.969301e+02 -2.652400e+02
-8 15149     4.382000e+02 -2.677300e+02
-9 15149     3.117300e+02 -1.148100e+02
-2 15150     3.320900e+02 -3.521600e+02
-6 15150     1.515900e+02 -3.557100e+02
-8 15150     2.943500e+02 -3.370900e+02
-12 15150     1.589900e+02 -3.187000e+02
-2 15151     1.863900e+02 -3.616000e+02
-4 15151     -4.941700e+02 -3.594500e+02
-6 15151     3.140015e+00 -3.679000e+02
-9 15151     6.553998e+01 -2.065900e+02
-12 15151     5.960022e+00 -3.203000e+02
-13 15151     3.541100e+02 -5.054900e+02
-2 15152     1.863900e+02 -3.616000e+02
-4 15152     -4.941700e+02 -3.594500e+02
-6 15152     3.140015e+00 -3.679000e+02
-8 15152     1.735700e+02 -3.398300e+02
-9 15152     6.553998e+01 -2.065900e+02
-12 15152     5.960022e+00 -3.203000e+02
-2 15153     1.845900e+02 -3.953400e+02
-6 15153     2.289978e+00 -3.986600e+02
-9 15153     6.595001e+01 -2.355600e+02
-13 15153     3.504700e+02 -5.300601e+02
-2 15154     6.248700e+02 -3.943100e+02
-8 15154     5.460601e+02 -3.755900e+02
-2 15155     6.127300e+02 -4.079700e+02
-8 15155     5.339000e+02 -3.881200e+02
-2 15156     -2.057000e+02 -4.280500e+02
-13 15156     9.397998e+01 -4.659000e+02
-2 15157     -4.366998e+01 -5.165601e+02
-6 15157     -2.201400e+02 -5.166700e+02
-15 15157     -2.876100e+02 -3.639100e+02
-2 15158     -3.011000e+02 5.431700e+02
-3 15158     -4.279700e+02 2.018500e+02
-4 15158     1.617900e+02 -3.870600e+02
-8 15158     -1.692500e+02 4.239500e+02
-13 15158     1.950200e+02 3.856300e+02
-14 15158     3.225000e+02 2.022998e+01
-2 15159     2.965100e+02 5.238300e+02
-3 15159     1.501000e+02 1.842500e+02
-6 15159     2.083800e+02 8.181300e+02
-8 15159     3.114000e+02 4.076100e+02
-2 15160     4.205200e+02 4.441500e+02
-8 15160     4.119100e+02 3.410700e+02
-9 15160     2.126400e+02 4.737400e+02
-2 15161     -9.507001e+01 3.787600e+02
-3 15161     -2.345200e+02 4.354999e+01
-4 15161     6.529999e+01 -5.168300e+02
-5 15161     6.340100e+02 -3.140002e+01
-6 15161     -2.459900e+02 7.045900e+02
-8 15161     1.799988e+00 2.964400e+02
-9 15161     -2.370000e+02 4.010700e+02
-11 15161     3.475900e+02 -1.607800e+02
-13 15161     3.704100e+02 2.745900e+02
-14 15161     5.332200e+02 -1.161200e+02
-2 15162     -9.507001e+01 3.787600e+02
-3 15162     -2.345200e+02 4.354999e+01
-4 15162     6.529999e+01 -5.168300e+02
-5 15162     6.340100e+02 -3.140002e+01
-6 15162     -2.459900e+02 7.045900e+02
-8 15162     1.799988e+00 2.964400e+02
-13 15162     3.704100e+02 2.745900e+02
-14 15162     5.332200e+02 -1.161200e+02
-2 15163     5.972998e+01 3.345600e+02
-3 15163     -9.094000e+01 -1.049988e+00
-6 15163     -5.165002e+01 6.860500e+02
-8 15163     1.313200e+02 2.644100e+02
-9 15163     -1.064300e+02 3.660200e+02
-11 15163     5.190699e+02 -1.862700e+02
-13 15163     5.169500e+02 2.515700e+02
-14 15163     7.134200e+02 -1.483900e+02
-2 15164     -7.934700e+02 3.249500e+02
-4 15164     7.454999e+01 -9.095001e+01
-13 15164     -1.993800e+02 1.863600e+02
-2 15165     -9.201001e+01 3.223200e+02
-3 15165     -2.323800e+02 -1.184998e+01
-6 15165     -2.390000e+02 6.383800e+02
-9 15165     -2.320200e+02 3.508800e+02
-2 15166     -7.446002e+01 3.060200e+02
-5 15166     6.488101e+02 -1.006200e+02
-11 15166     3.668800e+02 -2.180400e+02
-2 15167     -2.551000e+02 2.294900e+02
-7 15167     -1.901500e+02 5.402100e+02
-2 15168     9.431000e+01 1.667500e+02
-8 15168     1.159000e+02 9.579999e+01
-2 15169     -3.133800e+02 1.481500e+02
-5 15169     3.683000e+02 -2.546400e+02
-6 15169     -4.955300e+02 3.873000e+02
-7 15169     -2.473700e+02 4.645100e+02
-8 15169     -1.778700e+02 1.090000e+02
-9 15169     -4.123900e+02 1.910300e+02
-2 15170     -2.525400e+02 1.351700e+02
-5 15170     4.331600e+02 -2.646000e+02
-8 15170     -1.280100e+02 1.000900e+02
-13 15170     2.174600e+02 7.985999e+01
-14 15170     3.479700e+02 -3.470000e+02
-2 15171     1.089600e+02 4.078003e+01
-6 15171     -7.306000e+01 4.269000e+01
-8 15171     1.202800e+02 -1.320001e+01
-12 15171     -5.613000e+01 9.784003e+01
-2 15172     6.583300e+02 3.584003e+01
-10 15172     7.323800e+02 2.178900e+02
-2 15173     2.560999e+01 -1.527800e+02
-3 15173     -4.885999e+01 -4.616899e+02
-8 15173     4.453998e+01 -1.714900e+02
-12 15173     -1.605800e+02 -1.155800e+02
-2 15174     1.994600e+02 -1.754700e+02
-6 15174     7.650024e+00 -2.006600e+02
-7 15174     -8.464001e+01 -8.370001e+01
-8 15174     1.828900e+02 -1.951800e+02
-10 15174     -1.143500e+02 -8.457001e+01
-15 15174     -5.860999e+01 -1.268700e+02
-2 15175     -1.003003e+01 -2.568600e+02
-8 15175     1.890997e+01 -2.510300e+02
-2 15176     1.762700e+02 -2.728100e+02
-3 15176     1.013100e+02 -5.749600e+02
-4 15176     -4.440600e+02 -3.625300e+02
-6 15176     -9.450012e+00 -2.885900e+02
-12 15176     -1.047998e+01 -2.397200e+02
-15 15176     -7.109003e+01 -1.964500e+02
-2 15177     2.123900e+02 -2.924200e+02
-6 15177     2.639001e+01 -3.073600e+02
-8 15177     1.934400e+02 -2.876500e+02
-9 15177     8.365002e+01 -1.480400e+02
-2 15178     9.209998e+01 -3.050200e+02
-6 15178     -9.044000e+01 -3.112100e+02
-7 15178     -1.510100e+02 -1.489200e+02
-8 15178     9.869000e+01 -2.926700e+02
-9 15178     -1.621002e+01 -1.652700e+02
-10 15178     -1.821400e+02 -1.438500e+02
-12 15178     -8.391998e+01 -2.579300e+02
-2 15179     4.345200e+02 -4.104700e+02
-8 15179     3.794100e+02 -3.884300e+02
-2 15180     -1.664200e+02 5.853400e+02
-3 15180     -2.990200e+02 2.390100e+02
-4 15180     1.833800e+02 -4.910699e+02
-5 15180     5.718500e+02 1.613900e+02
-13 15180     3.174399e+02 4.342400e+02
-14 15180     4.673300e+02 7.173999e+01
-2 15181     -2.683000e+02 5.809200e+02
-3 15181     -3.938300e+02 2.373900e+02
-4 15181     1.791700e+02 -4.157500e+02
-13 15181     2.244800e+02 4.169200e+02
-14 15181     3.570100e+02 5.467999e+01
-2 15182     -2.970500e+02 5.674200e+02
-13 15182     1.979100e+02 4.051100e+02
-14 15182     3.249700e+02 4.216998e+01
-2 15183     -1.374600e+02 4.618400e+02
-3 15183     -2.737100e+02 1.235000e+02
-5 15183     5.933000e+02 4.478998e+01
-8 15183     -3.327002e+01 3.611500e+02
-13 15183     3.371400e+02 3.333700e+02
-14 15183     4.916899e+02 -4.759003e+01
-2 15184     -1.374600e+02 4.618400e+02
-3 15184     -2.737100e+02 1.235000e+02
-8 15184     -3.327002e+01 3.611500e+02
-2 15185     7.447998e+01 2.848900e+02
-6 15185     -3.109003e+01 6.235400e+02
-9 15185     -8.898999e+01 3.207900e+02
-13 15185     5.258800e+02 2.086100e+02
-14 15185     7.269399e+02 -1.994000e+02
-2 15186     3.678400e+02 2.639700e+02
-3 15186     2.240100e+02 -6.123999e+01
-7 15186     3.592700e+02 5.016900e+02
-13 15186     7.305400e+02 9.184000e+01
-2 15187     -1.948800e+02 1.918400e+02
-3 15187     -3.306100e+02 -1.385000e+02
-4 15187     -2.931000e+01 -4.169300e+02
-5 15187     5.023900e+02 -2.116600e+02
-8 15187     -8.051001e+01 1.451000e+02
-2 15188     2.025699e+02 1.200900e+02
-3 15188     1.049500e+02 -1.951700e+02
-4 15188     -2.270100e+02 -4.798900e+02
-6 15188     2.939001e+01 1.364300e+02
-8 15188     2.000500e+02 5.250000e+01
-2 15189     5.190002e+00 -2.275100e+02
-3 15189     -7.059003e+01 -5.392800e+02
-2 15190     5.432200e+02 -3.788800e+02
-8 15190     4.764900e+02 -3.611600e+02
-2 15191     5.432200e+02 -3.788800e+02
-8 15191     4.764900e+02 -3.611600e+02
-2 15192     -1.385700e+02 5.691900e+02
-3 15192     -2.724000e+02 2.242300e+02
-4 15192     1.774500e+02 -5.115500e+02
-5 15192     6.040900e+02 1.524900e+02
-11 15192     3.059800e+02 -1.416998e+01
-13 15192     3.428800e+02 4.248700e+02
-14 15192     4.973600e+02 6.033002e+01
-2 15193     -2.338700e+02 5.638900e+02
-3 15193     -3.623200e+02 2.194100e+02
-11 15193     2.092000e+02 -2.882001e+01
-13 15193     2.544800e+02 4.084800e+02
-14 15193     3.921300e+02 4.417999e+01
-2 15194     -2.338700e+02 5.638900e+02
-3 15194     -3.623200e+02 2.194100e+02
-11 15194     2.092000e+02 -2.882001e+01
-14 15194     3.921300e+02 4.417999e+01
-2 15195     -4.536400e+02 5.281100e+02
-8 15195     -2.957100e+02 4.081700e+02
-2 15196     -1.266300e+02 5.287500e+02
-3 15196     -2.638100e+02 1.868900e+02
-4 15196     1.535500e+02 -5.169500e+02
-5 15196     6.153300e+02 1.145000e+02
-8 15196     -2.433002e+01 4.171000e+02
-11 15196     3.219399e+02 -4.340997e+01
-13 15196     3.530100e+02 3.936200e+02
-14 15196     5.097100e+02 2.406000e+01
-2 15197     4.129600e+02 5.097500e+02
-8 15197     4.061600e+02 3.933100e+02
-2 15198     -2.324400e+02 4.501500e+02
-5 15198     4.866000e+02 2.734003e+01
-8 15198     -1.120500e+02 3.506800e+02
-11 15198     2.096800e+02 -1.192000e+02
-2 15199     -2.314300e+02 4.041300e+02
-3 15199     -3.627400e+02 6.847998e+01
-6 15199     -4.177100e+02 7.054400e+02
-8 15199     -1.113100e+02 3.146500e+02
-13 15199     2.476600e+02 2.836100e+02
-14 15199     3.844600e+02 -9.973999e+01
-2 15200     -2.314300e+02 4.041300e+02
-6 15200     -4.177100e+02 7.054400e+02
-8 15200     -1.113100e+02 3.146500e+02
-13 15200     2.476600e+02 2.836100e+02
-14 15200     3.844600e+02 -9.973999e+01
-2 15201     -3.909003e+01 -1.549400e+02
-8 15201     -4.280029e+00 -1.692000e+02
-2 15202     4.039301e+02 -2.615100e+02
-6 15202     2.240500e+02 -2.689100e+02
-2 15203     3.636400e+02 -3.016700e+02
-8 15203     3.198400e+02 -2.974600e+02
-2 15204     5.211700e+02 -3.563100e+02
-8 15204     4.556801e+02 -3.481400e+02
-2 15205     -2.398300e+02 5.218400e+02
-4 15205     1.506700e+02 -4.337500e+02
-11 15205     2.110300e+02 -5.934003e+01
-13 15205     2.567200e+02 3.766100e+02
-14 15205     3.944100e+02 8.150024e+00
-2 15206     3.191400e+02 5.138500e+02
-3 15206     1.746400e+02 1.759900e+02
-6 15206     2.382800e+02 8.041100e+02
-8 15206     3.302100e+02 3.995600e+02
-13 15206     7.124900e+02 3.164600e+02
-2 15207     3.423300e+02 4.301300e+02
-3 15207     1.895800e+02 9.682001e+01
-6 15207     2.611300e+02 6.973800e+02
-8 15207     3.476300e+02 3.314000e+02
-13 15207     7.192800e+02 2.396400e+02
-2 15208     -1.344800e+02 3.730500e+02
-3 15208     -2.707300e+02 3.589001e+01
-4 15208     6.427002e+01 -4.895500e+02
-5 15208     5.913000e+02 -3.931000e+01
-6 15208     -2.937500e+02 6.893700e+02
-8 15208     -2.962000e+01 2.912900e+02
-11 15208     3.140800e+02 -1.669600e+02
-13 15208     3.384500e+02 2.671000e+02
-14 15208     4.935200e+02 -1.244800e+02
-2 15209     -3.580200e+02 3.377200e+02
-3 15209     -4.855300e+02 7.400024e+00
-8 15209     -2.156400e+02 2.589900e+02
-2 15210     -2.534998e+01 2.455500e+02
-5 15210     7.036600e+02 -1.594300e+02
-8 15210     6.071997e+01 1.922700e+02
-9 15210     -1.725300e+02 2.870400e+02
-13 15210     4.258199e+02 1.774300e+02
-2 15211     3.084003e+01 2.387200e+02
-6 15211     -8.609000e+01 5.631000e+02
-8 15211     1.101300e+02 1.860500e+02
-9 15211     -1.245900e+02 2.818300e+02
-13 15211     4.793800e+02 1.716700e+02
-14 15211     6.751400e+02 -2.443300e+02
-2 15212     -2.254900e+02 1.807500e+02
-6 15212     -3.937300e+02 4.505000e+02
-8 15212     -1.062600e+02 1.354400e+02
-2 15213     -2.232300e+02 1.417700e+02
-7 15213     -1.517100e+02 4.667100e+02
-2 15214     -3.916000e+02 1.247400e+02
-5 15214     2.886400e+02 -2.725200e+02
-7 15214     -3.242700e+02 4.402300e+02
-8 15214     -2.403900e+02 9.044000e+01
-2 15215     3.354999e+01 -2.379999e+01
-6 15215     -1.484600e+02 -1.596002e+01
-8 15215     5.521002e+01 -6.152002e+01
-12 15215     -1.294000e+02 4.059998e+01
-2 15216     -4.000000e+01 -4.409998e+01
-8 15216     6.400146e-01 -7.763000e+01
-2 15217     -5.092999e+01 -1.177600e+02
-8 15217     -1.292999e+01 -1.395100e+02
-2 15218     5.035300e+02 -3.241600e+02
-8 15218     4.416600e+02 -3.194100e+02
-2 15219     2.813000e+01 3.944100e+02
-3 15219     -1.184200e+02 5.801001e+01
-6 15219     -8.847000e+01 7.551400e+02
-8 15219     1.074500e+02 3.131700e+02
-2 15220     -3.660200e+02 2.222300e+02
-5 15220     3.203900e+02 -1.855200e+02
-8 15220     -2.224100e+02 1.700700e+02
-2 15221     -2.804400e+02 1.440300e+02
-7 15221     -2.136300e+02 4.642800e+02
-8 15221     -1.523900e+02 1.064800e+02
-2 15222     -2.804400e+02 1.440300e+02
-6 15222     -4.642700e+02 3.940300e+02
-7 15222     -2.136300e+02 4.642800e+02
-8 15222     -1.523900e+02 1.064800e+02
-2 15223     -3.127700e+02 2.359700e+02
-5 15223     3.814200e+02 -1.721000e+02
-8 15223     -1.777400e+02 1.829900e+02
-2 15224     -1.785600e+02 3.682500e+02
-3 15224     -3.133500e+02 3.637000e+01
-5 15224     5.445800e+02 -3.560999e+01
-8 15224     -6.757001e+01 2.871600e+02
-13 15224     2.987100e+02 2.667900e+02
-14 15224     4.446899e+02 -1.262200e+02
-3 15225     -5.585000e+02 4.336900e+02
-11 15225     7.148999e+01 1.439900e+02
-3 15226     -3.373200e+02 4.320000e+02
-5 15226     5.694200e+02 3.897300e+02
-14 15226     4.591899e+02 2.871300e+02
-3 15227     -3.481100e+02 4.285700e+02
-14 15227     4.481600e+02 2.830100e+02
-3 15228     -3.354300e+02 4.256800e+02
-5 15228     5.706801e+02 3.835600e+02
-14 15228     4.611600e+02 2.810100e+02
-3 15229     -3.447800e+02 4.209800e+02
-5 15229     5.606100e+02 3.779700e+02
-14 15229     4.511899e+02 2.760300e+02
-3 15230     -3.472400e+02 4.093000e+02
-14 15230     4.482700e+02 2.642700e+02
-3 15231     -2.076000e+02 3.648600e+02
-14 15231     6.794000e+02 3.184900e+02
-3 15232     -3.225800e+02 3.410000e+02
-4 15232     2.556200e+02 -5.069301e+02
-3 15233     -5.447800e+02 2.834000e+02
-13 15233     1.010000e+02 4.472400e+02
-14 15233     2.121899e+02 9.310001e+01
-3 15234     -1.639300e+02 2.480600e+02
-14 15234     6.286700e+02 9.451999e+01
-3 15235     -2.198900e+02 2.337800e+02
-13 15235     3.964800e+02 4.377300e+02
-3 15236     -3.110600e+02 2.324400e+02
-5 15236     5.561000e+02 1.526400e+02
-11 15236     2.640800e+02 -1.453998e+01
-3 15237     -3.974100e+02 2.074600e+02
-11 15237     1.728000e+02 -4.484003e+01
-14 15237     3.528199e+02 2.540997e+01
-3 15238     1.108100e+02 2.070700e+02
-8 15238     2.786400e+02 4.281600e+02
-3 15239     -4.261400e+02 2.063900e+02
-5 15239     4.204100e+02 1.142600e+02
-3 15240     1.950000e+02 2.050300e+02
-6 15240     2.639000e+02 8.365900e+02
-3 15241     -3.866200e+02 1.887300e+02
-6 15241     -4.624300e+02 8.516800e+02
-14 15241     3.640100e+02 8.219971e+00
-3 15242     3.121700e+02 1.894700e+02
-8 15242     4.421700e+02 4.054300e+02
-3 15243     -3.184200e+02 1.861300e+02
-6 15243     -3.706900e+02 8.650900e+02
-8 15243     -7.496002e+01 4.111300e+02
-3 15244     2.317800e+02 1.860600e+02
-6 15244     3.090600e+02 8.062400e+02
-3 15245     3.589500e+02 1.857900e+02
-8 15245     4.842100e+02 4.016300e+02
-9 15245     2.903600e+02 5.430700e+02
-3 15246     1.090400e+02 1.790000e+02
-6 15246     1.587600e+02 8.177000e+02
-3 15247     2.159003e+01 1.708500e+02
-11 15247     6.569301e+02 -2.540002e+01
-3 15248     -1.707800e+02 1.649500e+02
-13 15248     4.437600e+02 3.960000e+02
-3 15249     2.975800e+02 1.550900e+02
-8 15249     4.289000e+02 3.751400e+02
-3 15250     -4.475600e+02 1.540100e+02
-5 15250     3.927000e+02 6.139001e+01
-11 15250     1.223800e+02 -9.228998e+01
-13 15250     1.737500e+02 3.419500e+02
-14 15250     2.958400e+02 -3.009998e+01
-3 15251     -1.350100e+02 1.538900e+02
-5 15251     7.705900e+02 8.837000e+01
-6 15251     -1.177100e+02 8.717100e+02
-8 15251     8.885999e+01 3.889000e+02
-11 15251     4.624500e+02 -5.928003e+01
-14 15251     6.615601e+02 3.450012e+00
-3 15252     4.194900e+02 1.515100e+02
-6 15252     5.177700e+02 6.918800e+02
-9 15252     3.439900e+02 5.116600e+02
-3 15253     -7.467200e+02 1.511200e+02
-14 15253     -1.530029e+00 -6.038000e+01
-3 15254     -1.733800e+02 1.479400e+02
-13 15254     4.382000e+02 3.689000e+02
-14 15254     6.130400e+02 -6.909973e+00
-3 15255     1.181600e+02 1.481000e+02
-6 15255     1.684000e+02 7.757400e+02
-8 15255     2.840700e+02 3.767300e+02
-9 15255     7.364001e+01 5.048800e+02
-3 15256     -1.827300e+02 1.469300e+02
-14 15256     6.017800e+02 -8.010010e+00
-3 15257     -7.334800e+02 1.407100e+02
-14 15257     9.989990e+00 -6.838000e+01
-3 15258     1.511200e+02 1.367300e+02
-6 15258     2.074700e+02 7.555000e+02
-3 15259     3.609600e+02 1.336200e+02
-6 15259     4.437500e+02 6.792900e+02
-9 15259     2.908700e+02 4.943700e+02
-3 15260     -1.552100e+02 1.332200e+02
-5 15260     7.417600e+02 6.533002e+01
-6 15260     -1.452400e+02 8.381000e+02
-11 15260     4.383800e+02 -7.947998e+01
-14 15260     6.348101e+02 -1.971997e+01
-3 15261     -2.318400e+02 1.306200e+02
-13 15261     3.781801e+02 3.478700e+02
-3 15262     -5.474500e+02 1.276000e+02
-14 15262     1.904301e+02 -6.391998e+01
-3 15263     2.167500e+02 1.253100e+02
-6 15263     2.861400e+02 7.293800e+02
-8 15263     3.666200e+02 3.542800e+02
-3 15264     2.167500e+02 1.253100e+02
-6 15264     2.861400e+02 7.293800e+02
-8 15264     3.666200e+02 3.542800e+02
-3 15265     -3.951800e+02 1.139000e+02
-14 15265     3.515100e+02 -6.265997e+01
-3 15266     3.213199e+02 1.136400e+02
-6 15266     3.940400e+02 6.604000e+02
-8 15266     4.479100e+02 3.369400e+02
-9 15266     2.552100e+02 4.749100e+02
-3 15267     3.515699e+02 1.124500e+02
-6 15267     4.300000e+02 6.549700e+02
-3 15268     -2.077300e+02 1.120000e+02
-5 15268     6.731000e+02 4.003998e+01
-8 15268     2.460999e+01 3.534100e+02
-14 15268     5.691801e+02 -4.639001e+01
-3 15269     1.435000e+02 1.017300e+02
-11 15269     6.142300e+02 -1.988300e+02
-3 15270     3.951500e+02 9.477002e+01
-6 15270     4.808900e+02 6.238800e+02
-3 15271     -7.007900e+02 9.340002e+01
-14 15271     3.872998e+01 -1.064900e+02
-3 15272     -2.489600e+02 8.984003e+01
-5 15272     6.196700e+02 1.448999e+01
-6 15272     -2.686200e+02 7.600600e+02
-3 15273     -2.035100e+02 8.871997e+01
-5 15273     6.759399e+02 1.558002e+01
-14 15273     5.729100e+02 -6.921002e+01
-3 15274     -2.307400e+02 8.496997e+01
-13 15274     3.754900e+02 3.088600e+02
-14 15274     5.388800e+02 -7.513000e+01
-3 15275     1.883600e+02 7.889001e+01
-6 15275     2.498500e+02 6.746100e+02
-3 15276     -6.483200e+02 7.200000e+01
-5 15276     1.786500e+02 -2.813000e+01
-12 15276     -5.931200e+02 6.217200e+02
-3 15277     -6.483200e+02 7.200000e+01
-5 15277     1.786500e+02 -2.813000e+01
-14 15277     8.848999e+01 -1.211400e+02
-3 15278     -8.762000e+01 6.232001e+01
-5 15278     8.236700e+02 -4.640015e+00
-6 15278     -5.106000e+01 7.629100e+02
-8 15278     1.313400e+02 3.143000e+02
-9 15278     -1.051300e+02 4.219500e+02
-11 15278     5.175200e+02 -1.341200e+02
-3 15279     3.937500e+02 5.735999e+01
-6 15279     4.752200e+02 5.780400e+02
-7 15279     4.962100e+02 5.572500e+02
-3 15280     -5.461200e+02 5.303998e+01
-14 15280     1.892300e+02 -1.304500e+02
-3 15281     4.762800e+02 4.757001e+01
-8 15281     5.812800e+02 2.726900e+02
-9 15281     3.930000e+02 4.154700e+02
-3 15282     -2.726700e+02 4.541998e+01
-5 15282     5.864000e+02 -3.140997e+01
-3 15283     2.500000e+02 4.403998e+01
-6 15283     3.204400e+02 6.210600e+02
-9 15283     1.924600e+02 4.106800e+02
-12 15283     4.189800e+02 6.123900e+02
-3 15284     4.812900e+02 3.866998e+01
-8 15284     5.847000e+02 2.646200e+02
-12 15284     6.567300e+02 5.509800e+02
-3 15285     -3.614300e+02 3.735999e+01
-8 15285     -1.098800e+02 2.871800e+02
-9 15285     -3.516100e+02 3.902000e+02
-3 15286     -5.157700e+02 3.576001e+01
-12 15286     -4.295800e+02 6.070000e+02
-3 15287     2.177600e+02 3.528003e+01
-8 15287     3.649500e+02 2.759400e+02
-3 15288     -9.997559e-02 3.248999e+01
-6 15288     6.803998e+01 7.476900e+02
-3 15289     -6.787000e+01 1.965002e+01
-11 15289     5.403300e+02 -1.684000e+02
-3 15290     -1.646800e+02 1.884998e+01
-13 15290     4.389200e+02 2.614200e+02
-3 15291     4.206100e+02 1.559003e+01
-6 15291     5.021600e+02 5.222900e+02
-7 15291     5.147800e+02 5.058400e+02
-8 15291     5.297400e+02 2.467400e+02
-9 15291     3.426899e+02 3.859600e+02
-10 15291     7.087400e+02 5.928000e+02
-3 15292     -3.149800e+02 8.049988e+00
-14 15292     4.362100e+02 -1.564300e+02
-3 15293     3.895601e+02 8.030029e+00
-10 15293     6.714100e+02 5.960600e+02
-3 15294     3.895601e+02 8.030029e+00
-8 15294     5.019600e+02 2.415800e+02
-3 15295     2.575000e+02 2.909973e+00
-8 15295     3.965000e+02 2.473500e+02
-9 15295     1.985000e+02 3.742900e+02
-3 15296     1.376300e+02 7.299805e-01
-6 15296     1.853900e+02 5.869000e+02
-3 15297     -1.585600e+02 -7.320007e+00
-14 15297     6.219900e+02 -1.603700e+02
-3 15298     4.354800e+02 -1.621002e+01
-6 15298     5.162300e+02 4.815500e+02
-3 15299     3.368400e+02 -3.242999e+01
-6 15299     3.997900e+02 4.802100e+02
-9 15299     2.680800e+02 3.423000e+02
-10 15299     6.032000e+02 5.663400e+02
-11 15299     7.313800e+02 -4.161400e+02
-12 15299     4.843300e+02 4.879900e+02
-3 15300     1.776000e+02 -4.060999e+01
-12 15300     3.360100e+02 5.225700e+02
-3 15301     1.902000e+02 -4.264001e+01
-6 15301     2.442300e+02 5.260900e+02
-12 15301     3.491600e+02 5.186700e+02
-3 15302     4.688900e+02 -6.022998e+01
-6 15302     5.502700e+02 4.232800e+02
-10 15302     7.380500e+02 4.763200e+02
-3 15303     2.023101e+02 -7.045001e+01
-6 15303     2.568500e+02 4.905600e+02
-9 15303     1.499800e+02 3.073700e+02
-3 15304     1.414100e+02 -7.251001e+01
-7 15304     2.851801e+02 5.094100e+02
-8 15304     2.985000e+02 1.879600e+02
-9 15304     9.634998e+01 3.050100e+02
-12 15304     2.969000e+02 4.912000e+02
-3 15305     1.414100e+02 -7.251001e+01
-8 15305     2.985000e+02 1.879600e+02
-9 15305     9.634998e+01 3.050100e+02
-3 15306     3.698199e+02 -7.678998e+01
-10 15306     6.253700e+02 4.993200e+02
-15 15306     8.280300e+02 5.719300e+02
-3 15307     -1.521600e+02 -8.056000e+01
-5 15307     7.232600e+02 -1.524300e+02
-14 15307     6.255800e+02 -2.318900e+02
-3 15308     3.252600e+02 -8.865002e+01
-6 15308     3.807300e+02 4.170300e+02
-12 15308     4.667300e+02 4.249800e+02
-15 15308     7.690300e+02 5.754700e+02
-3 15309     -2.464500e+02 -8.990002e+01
-13 15309     3.505000e+02 1.680100e+02
-14 15309     5.105200e+02 -2.452800e+02
-3 15310     2.469500e+02 -9.359003e+01
-8 15310     3.844200e+02 1.649200e+02
-3 15311     -4.934800e+02 -9.667999e+01
-6 15311     -5.649000e+02 4.759400e+02
-12 15311     -3.863500e+02 4.708600e+02
-3 15312     1.564600e+02 -9.920001e+01
-6 15312     2.028600e+02 4.651700e+02
-10 15312     4.600900e+02 5.930700e+02
-12 15312     3.117900e+02 4.589700e+02
-3 15313     3.726500e+02 -1.001300e+02
-10 15313     6.220900e+02 4.708200e+02
-15 15313     8.248199e+02 5.371100e+02
-3 15314     3.681600e+02 -1.003200e+02
-6 15314     4.290700e+02 3.960500e+02
-10 15314     6.175900e+02 4.727000e+02
-15 15314     8.193101e+02 5.394600e+02
-3 15315     2.056300e+02 -1.026500e+02
-10 15315     5.079200e+02 5.705800e+02
-3 15316     3.574600e+02 -1.058600e+02
-15 15316     8.034500e+02 5.369700e+02
-3 15317     3.574600e+02 -1.058600e+02
-6 15317     4.158300e+02 3.917600e+02
-7 15317     4.367000e+02 4.001000e+02
-10 15317     6.044100e+02 4.706400e+02
-12 15317     5.000699e+02 4.005900e+02
-15 15317     8.034500e+02 5.369700e+02
-3 15318     4.710800e+02 -1.068800e+02
-6 15318     5.471899e+02 3.687700e+02
-3 15319     4.443101e+02 -1.194500e+02
-10 15319     6.928800e+02 4.173800e+02
-3 15320     -1.936600e+02 -1.211300e+02
-13 15320     3.985500e+02 1.447200e+02
-14 15320     5.709399e+02 -2.749100e+02
-3 15321     5.337700e+02 -1.233900e+02
-10 15321     7.898300e+02 3.717700e+02
-12 15321     6.962100e+02 3.498700e+02
-3 15322     -2.221100e+02 -1.299800e+02
-12 15322     -5.521002e+01 4.772400e+02
-3 15323     2.292900e+02 -1.331400e+02
-6 15323     2.842000e+02 4.136700e+02
-9 15323     1.742200e+02 2.521700e+02
-3 15324     5.197500e+02 -1.446100e+02
-10 15324     7.668900e+02 3.536100e+02
-3 15325     -4.141000e+02 -1.458600e+02
-7 15325     -2.139400e+02 5.025100e+02
-3 15326     5.436000e+02 -1.484800e+02
-10 15326     7.916700e+02 3.382100e+02
-12 15326     7.038000e+02 3.192400e+02
-3 15327     5.852300e+02 -1.489400e+02
-9 15327     4.831000e+02 2.388600e+02
-12 15327     7.515699e+02 3.120000e+02
-3 15328     5.477400e+02 -1.498500e+02
-7 15328     6.029200e+02 3.048000e+02
-12 15328     7.085500e+02 3.170800e+02
-3 15329     3.641400e+02 -1.528600e+02
-6 15329     4.189500e+02 3.370700e+02
-10 15329     5.994800e+02 4.136800e+02
-3 15330     3.615200e+02 -1.548000e+02
-6 15330     4.162800e+02 3.346100e+02
-10 15330     5.968300e+02 4.125900e+02
-15 15330     7.956000e+02 4.666000e+02
-3 15331     5.166000e+02 -1.556600e+02
-10 15331     7.596801e+02 3.427200e+02
-3 15332     3.965400e+02 -1.578600e+02
-7 15332     4.638900e+02 3.398600e+02
-3 15333     4.860601e+02 -1.656000e+02
-7 15333     5.430500e+02 3.068000e+02
-3 15334     3.650900e+02 -1.745200e+02
-6 15334     4.189800e+02 3.128000e+02
-8 15334     4.725800e+02 8.622000e+01
-10 15334     5.957800e+02 3.893500e+02
-15 15334     7.951000e+02 4.397400e+02
-3 15335     5.205500e+02 -1.768400e+02
-7 15335     5.722200e+02 2.870500e+02
-9 15335     4.257800e+02 2.140700e+02
-10 15335     7.564000e+02 3.176000e+02
-12 15335     6.735500e+02 2.910400e+02
-3 15336     4.647500e+02 -1.799000e+02
-6 15336     5.314500e+02 2.884800e+02
-10 15336     6.966200e+02 3.392000e+02
-3 15337     4.670100e+02 -1.814000e+02
-10 15337     6.981000e+02 3.364700e+02
-3 15338     4.240000e+02 -1.843300e+02
-7 15338     4.845800e+02 3.072800e+02
-10 15338     6.525000e+02 3.528100e+02
-15 15338     8.644200e+02 3.970400e+02
-3 15339     -4.055600e+02 -1.859800e+02
-12 15339     -2.739100e+02 3.938700e+02
-3 15340     -4.055600e+02 -1.859800e+02
-12 15340     -2.739100e+02 3.938700e+02
-3 15341     7.009000e+02 -1.940300e+02
-7 15341     7.364500e+02 2.171300e+02
-3 15342     5.605900e+02 -1.976100e+02
-9 15342     4.600500e+02 1.961600e+02
-12 15342     7.151600e+02 2.609600e+02
-3 15343     -3.149800e+02 -2.002000e+02
-14 15343     4.245400e+02 -3.514900e+02
-3 15344     -3.911400e+02 -2.011600e+02
-10 15344     -1.029400e+02 6.058000e+02
-12 15344     -2.554600e+02 3.803500e+02
-3 15345     5.130300e+02 -2.022300e+02
-7 15345     5.610400e+02 2.653700e+02
-10 15345     7.409200e+02 2.921700e+02
-3 15346     4.154700e+02 -2.029500e+02
-15 15346     8.484399e+02 3.780000e+02
-3 15347     4.154700e+02 -2.029500e+02
-10 15347     6.395800e+02 3.368600e+02
-15 15347     8.484399e+02 3.780000e+02
-3 15348     4.726000e+02 -2.054800e+02
-6 15348     5.383101e+02 2.598600e+02
-12 15348     6.180100e+02 2.700700e+02
-3 15349     7.245800e+02 -2.091600e+02
-7 15349     7.559000e+02 1.952900e+02
-3 15350     -3.397600e+02 -2.136700e+02
-5 15350     4.837800e+02 -2.814100e+02
-7 15350     -1.318700e+02 4.504100e+02
-10 15350     -3.684998e+01 5.968700e+02
-14 15350     3.953500e+02 -3.643900e+02
-3 15351     4.589200e+02 -2.167300e+02
-6 15351     5.205900e+02 2.489200e+02
-8 15351     5.495900e+02 4.410001e+01
-10 15351     6.797100e+02 3.015300e+02
-12 15351     6.012300e+02 2.590200e+02
-3 15352     2.971997e+01 -2.186000e+02
-6 15352     -5.670001e+01 1.082400e+02
-15 15352     -2.513000e+01 2.479300e+02
-3 15353     9.199829e-01 -2.220400e+02
-8 15353     1.094400e+02 3.260001e+01
-9 15353     -3.635999e+01 1.654700e+02
-3 15354     4.890200e+02 -2.227100e+02
-6 15354     5.537300e+02 2.369400e+02
-7 15354     5.359800e+02 2.535300e+02
-9 15354     3.974100e+02 1.743200e+02
-10 15354     7.094301e+02 2.814800e+02
-12 15354     6.331000e+02 2.467900e+02
-3 15355     4.558400e+02 -2.251900e+02
-6 15355     5.161100e+02 2.406900e+02
-12 15355     5.964900e+02 2.506500e+02
-3 15356     5.225200e+02 -2.280800e+02
-7 15356     5.656500e+02 2.375000e+02
-9 15356     4.272200e+02 1.686800e+02
-10 15356     7.428199e+02 2.601700e+02
-3 15357     7.288700e+02 -2.283600e+02
-7 15357     7.542400e+02 1.762400e+02
-3 15358     5.437000e+02 -2.288800e+02
-7 15358     5.833199e+02 2.319900e+02
-10 15358     7.645400e+02 2.496200e+02
-3 15359     5.265500e+02 -2.311300e+02
-10 15359     7.459700e+02 2.552300e+02
-12 15359     6.739000e+02 2.309400e+02
-3 15360     9.647998e+01 -2.319500e+02
-6 15360     1.271997e+01 8.267999e+01
-10 15360     -3.525000e+01 1.943100e+02
-12 15360     2.992999e+01 1.369200e+02
-15 15360     3.245001e+01 2.006000e+02
-3 15361     5.097300e+02 -2.347400e+02
-6 15361     5.757700e+02 2.197400e+02
-10 15361     7.277900e+02 2.588800e+02
-3 15362     5.075699e+02 -2.368300e+02
-6 15362     5.740800e+02 2.175600e+02
-12 15362     6.532000e+02 2.272700e+02
-3 15363     1.997600e+02 -2.398200e+02
-10 15363     7.547998e+01 1.619500e+02
-3 15364     4.787600e+02 -2.421700e+02
-6 15364     5.403500e+02 2.176300e+02
-10 15364     6.937300e+02 2.653300e+02
-3 15365     2.690500e+02 -2.440500e+02
-10 15365     1.769900e+02 1.558300e+02
-3 15366     7.521400e+02 -2.447500e+02
-7 15366     7.716600e+02 1.540800e+02
-3 15367     5.498199e+02 -2.465400e+02
-9 15367     4.494800e+02 1.527700e+02
-10 15367     7.658800e+02 2.284300e+02
-12 15367     6.970400e+02 2.083600e+02
-3 15368     -6.130200e+02 -2.480700e+02
-9 15368     -6.538800e+02 9.629999e+01
-3 15369     4.733400e+02 -2.539800e+02
-10 15369     6.844399e+02 2.556500e+02
-3 15370     -7.139001e+01 -2.581100e+02
-5 15370     5.384399e+02 -5.824800e+02
-3 15371     -2.654999e+01 -2.578500e+02
-5 15371     5.753500e+02 -6.026500e+02
-6 15371     -1.195300e+02 6.787000e+01
-7 15371     -1.390600e+02 1.653800e+02
-8 15371     8.408002e+01 3.359985e+00
-15 15371     -9.359003e+01 2.164100e+02
-3 15372     4.931100e+02 -2.587500e+02
-7 15372     5.336300e+02 2.199600e+02
-3 15373     5.555200e+02 -2.590800e+02
-9 15373     4.528400e+02 1.432100e+02
-12 15373     7.014500e+02 1.945700e+02
-3 15374     4.755601e+02 -2.641500e+02
-6 15374     5.340200e+02 1.949300e+02
-12 15374     6.138500e+02 2.047300e+02
-3 15375     2.256899e+02 -2.706500e+02
-7 15375     7.908002e+01 1.105000e+02
-10 15375     9.273999e+01 1.215100e+02
-15 15375     1.833101e+02 1.168700e+02
-3 15376     4.647200e+02 -2.716800e+02
-6 15376     5.206300e+02 1.888400e+02
-3 15377     -1.667900e+02 -2.724700e+02
-8 15377     -1.215997e+01 5.920013e+00
-9 15377     -1.780600e+02 1.197300e+02
-3 15378     7.497900e+02 -2.720700e+02
-7 15378     7.478199e+02 1.200100e+02
-3 15379     4.599700e+02 -2.738600e+02
-6 15379     5.157400e+02 1.871100e+02
-9 15379     3.715000e+02 1.297500e+02
-10 15379     6.661500e+02 2.412500e+02
-3 15380     -5.934998e+01 -2.769300e+02
-5 15380     5.423900e+02 -6.091801e+02
-6 15380     -1.535100e+02 5.207001e+01
-3 15381     2.896100e+02 -2.780900e+02
-8 15381     3.578200e+02 -2.582999e+01
-3 15382     4.935900e+02 -2.811000e+02
-6 15382     5.522100e+02 1.733600e+02
-3 15383     5.176500e+02 -2.828900e+02
-6 15383     5.787600e+02 1.672700e+02
-8 15383     5.946100e+02 -1.523001e+01
-12 15383     6.571700e+02 1.768800e+02
-3 15384     5.247700e+02 -2.848200e+02
-12 15384     6.644500e+02 1.737700e+02
-3 15385     4.712800e+02 -2.860900e+02
-6 15385     5.267100e+02 1.725100e+02
-12 15385     6.066600e+02 1.824500e+02
-3 15386     5.068700e+02 -2.965800e+02
-6 15386     5.645000e+02 1.546700e+02
-3 15387     -1.152900e+02 -2.981200e+02
-6 15387     -2.080800e+02 4.576001e+01
-3 15388     5.374301e+02 -3.006500e+02
-10 15388     7.371801e+02 1.775400e+02
-12 15388     6.775699e+02 1.533900e+02
-3 15389     5.374301e+02 -3.006500e+02
-10 15389     7.371801e+02 1.775400e+02
-3 15390     -6.009998e+01 -3.035100e+02
-6 15390     -1.559800e+02 2.121997e+01
-12 15390     -1.329300e+02 7.757001e+01
-3 15391     3.583000e+02 -3.048700e+02
-8 15391     4.252900e+02 -4.575000e+01
-3 15392     5.059600e+02 -3.066700e+02
-6 15392     5.626300e+02 1.443200e+02
-8 15392     5.834700e+02 -3.462000e+01
-12 15392     6.407700e+02 1.541100e+02
-3 15393     5.109600e+02 -3.071300e+02
-6 15393     5.682500e+02 1.425200e+02
-7 15393     5.402700e+02 1.722200e+02
-8 15393     5.880300e+02 -3.548999e+01
-9 15393     4.138500e+02 1.013300e+02
-10 15393     7.077000e+02 1.838400e+02
-12 15393     6.463199e+02 1.517800e+02
-3 15394     1.053003e+01 -3.122000e+02
-6 15394     -8.528000e+01 -2.340027e+00
-3 15395     -1.610700e+02 -3.162000e+02
-6 15395     -2.514200e+02 3.815002e+01
-13 15395     2.365000e+02 -1.773700e+02
-3 15396     4.912500e+02 -3.203600e+02
-6 15396     5.449500e+02 1.320400e+02
-3 15397     1.981899e+02 -3.284300e+02
-15 15397     1.202400e+02 4.672998e+01
-3 15398     9.704999e+01 -3.291700e+02
-10 15398     -6.645001e+01 8.663000e+01
-3 15399     4.217000e+02 -3.294100e+02
-8 15399     4.824200e+02 -6.778003e+01
-3 15400     -8.671002e+01 -3.328700e+02
-6 15400     -1.829600e+02 -3.119995e+00
-9 15400     -1.103800e+02 6.851001e+01
-3 15401     2.856899e+02 -3.334100e+02
-6 15401     2.198700e+02 -2.428998e+01
-8 15401     3.477200e+02 -7.390002e+01
-12 15401     2.429000e+02 1.817999e+01
-3 15402     -4.145001e+01 -3.379200e+02
-6 15402     -1.384900e+02 -2.096002e+01
-8 15402     6.757001e+01 -6.482001e+01
-3 15403     5.273700e+02 -3.430100e+02
-6 15403     5.823400e+02 1.019000e+02
-3 15404     5.794500e+02 -3.452900e+02
-10 15404     7.660500e+02 1.129300e+02
-3 15405     4.145000e+02 -3.465100e+02
-8 15405     4.712800e+02 -8.445001e+01
-3 15406     4.355400e+02 -3.470000e+02
-8 15406     4.897800e+02 -8.616998e+01
-3 15407     1.611100e+02 -3.604200e+02
-8 15407     2.324200e+02 -9.485999e+01
-3 15408     7.585999e+01 -3.613400e+02
-15 15408     -3.135999e+01 4.454999e+01
-3 15409     6.059301e+02 -3.678500e+02
-10 15409     7.871200e+02 7.828003e+01
-12 15409     7.418199e+02 6.953003e+01
-3 15410     4.750601e+02 -3.688900e+02
-7 15410     4.997800e+02 1.302300e+02
-15 15410     8.728800e+02 1.421300e+02
-3 15411     1.344000e+02 -3.713900e+02
-6 15411     4.213000e+01 -7.665002e+01
-3 15412     -5.869700e+02 -3.889500e+02
-9 15412     -6.132200e+02 -2.528003e+01
-3 15413     2.747998e+01 -3.920300e+02
-6 15413     -7.513000e+01 -9.747998e+01
-3 15414     3.935400e+02 -3.942000e+02
-8 15414     4.397000e+02 -1.301000e+02
-9 15414     3.052800e+02 2.269000e+01
-12 15414     3.652400e+02 -5.233002e+01
-13 15414     6.531400e+02 -3.559900e+02
-3 15415     8.087000e+01 -4.036100e+02
-7 15415     -9.259998e+01 -2.679993e+00
-10 15415     -1.136900e+02 8.669983e+00
-15 15415     -5.706000e+01 -1.773999e+01
-3 15416     5.376899e+02 -4.076000e+02
-6 15416     5.862600e+02 3.426001e+01
-3 15417     5.376899e+02 -4.076000e+02
-12 15417     6.635900e+02 4.345001e+01
-3 15418     3.812000e+01 -4.102200e+02
-6 15418     -6.603003e+01 -1.196500e+02
-15 15418     -9.728998e+01 -8.359985e+00
-3 15419     -5.210022e+00 -4.123300e+02
-6 15419     -1.103700e+02 -1.177800e+02
-3 15420     2.932200e+02 -4.148600e+02
-6 15420     2.128900e+02 -1.245400e+02
-8 15420     3.443200e+02 -1.466500e+02
-10 15420     1.183200e+02 -4.778003e+01
-12 15420     2.283300e+02 -8.362000e+01
-3 15421     -6.127700e+02 -4.157200e+02
-9 15421     -6.342600e+02 -4.995001e+01
-3 15422     7.461400e+02 -4.159399e+02
-7 15422     7.224000e+02 1.044000e+01
-3 15423     -2.443400e+02 -4.190100e+02
-12 15423     -2.966800e+02 -9.859985e+00
-3 15424     1.829500e+02 -4.197400e+02
-15 15424     5.703003e+01 -6.684003e+01
-3 15425     1.011900e+02 -4.252500e+02
-6 15425     -1.820007e+00 -1.411500e+02
-8 15425     1.742800e+02 -1.486500e+02
-12 15425     1.599976e+00 -8.947998e+01
-15 15425     -3.916998e+01 -4.845001e+01
-3 15426     2.656801e+02 -4.278101e+02
-6 15426     1.792600e+02 -1.412700e+02
-7 15426     7.834998e+01 -4.056000e+01
-12 15426     1.912500e+02 -9.890002e+01
-13 15426     5.137500e+02 -3.670400e+02
-3 15427     -1.288300e+02 -4.285000e+02
-8 15427     -1.097998e+01 -1.376400e+02
-3 15428     1.919900e+02 -4.335900e+02
-6 15428     9.591998e+01 -1.504301e+02
-3 15429     1.978101e+02 -4.352000e+02
-8 15429     2.568500e+02 -1.601700e+02
-10 15429     -2.039978e+00 -5.078998e+01
-3 15430     -4.911200e+02 -4.356300e+02
-5 15430     2.385000e+02 -5.334301e+02
-8 15430     -2.384000e+02 -9.938000e+01
-9 15430     -4.419000e+02 -2.759998e+01
-13 15430     7.134003e+01 -1.396100e+02
-3 15431     1.648000e+02 -4.381200e+02
-6 15431     6.525000e+01 -1.548500e+02
-3 15432     3.462800e+02 -4.390100e+02
-4 15432     -4.739800e+02 -5.761200e+02
-3 15433     -9.315002e+01 -4.428199e+02
-6 15433     -2.033300e+02 -1.452200e+02
-12 15433     -1.941700e+02 -8.446002e+01
-3 15434     6.792600e+02 -4.462100e+02
-12 15434     8.079600e+02 -2.428998e+01
-3 15435     -1.585600e+02 -4.487000e+02
-6 15435     -2.663000e+02 -1.375900e+02
-3 15436     -5.389001e+01 -4.578700e+02
-8 15436     4.166998e+01 -1.689600e+02
-3 15437     2.638101e+02 -4.586000e+02
-4 15437     -4.502500e+02 -4.946100e+02
-6 15437     1.668600e+02 -1.853900e+02
-12 15437     1.718600e+02 -1.431300e+02
-13 15437     4.958000e+02 -4.020900e+02
-3 15438     -4.884998e+01 -4.595100e+02
-6 15438     -1.621100e+02 -1.737000e+02
-10 15438     -2.453300e+02 -1.275000e+01
-12 15438     -1.605200e+02 -1.150300e+02
-15 15438     -2.101500e+02 -4.462000e+01
-3 15439     -4.623999e+01 -4.609600e+02
-6 15439     -1.605900e+02 -1.772100e+02
-12 15439     -1.594200e+02 -1.181200e+02
-15 15439     -2.099900e+02 -4.750000e+01
-3 15440     -4.623999e+01 -4.609600e+02
-8 15440     4.764001e+01 -1.718200e+02
-3 15441     3.752000e+02 -4.609301e+02
-6 15441     2.968200e+02 -1.774301e+02
-3 15442     1.166900e+02 -4.666700e+02
-8 15442     1.818600e+02 -1.853300e+02
-3 15443     1.119800e+02 -4.776200e+02
-10 15443     -1.217100e+02 -8.378003e+01
-12 15443     -5.109985e+00 -1.576500e+02
-15 15443     -6.671002e+01 -1.262200e+02
-3 15444     1.216800e+02 -4.830400e+02
-6 15444     9.000000e+00 -2.158700e+02
-12 15444     3.010010e+00 -1.655800e+02
-3 15445     1.759000e+02 -5.016000e+02
-6 15445     6.802002e+01 -2.310500e+02
-8 15445     2.299600e+02 -2.182200e+02
-9 15445     1.163000e+02 -7.204999e+01
-12 15445     6.616998e+01 -1.843400e+02
-15 15445     7.119995e+00 -1.664100e+02
-3 15446     -1.727200e+02 -5.020900e+02
-8 15446     -4.445001e+01 -1.917400e+02
-3 15447     1.426000e+02 -5.055900e+02
-6 15447     3.226001e+01 -2.339800e+02
-9 15447     8.715997e+01 -7.589001e+01
-3 15448     -4.996400e+02 -5.088800e+02
-15 15448     -3.709900e+02 2.013400e+02
-3 15449     5.929800e+02 -5.152500e+02
-7 15449     5.207500e+02 -6.139001e+01
-12 15449     6.670500e+02 -1.113900e+02
-3 15450     3.092100e+02 -5.196200e+02
-6 15450     2.156800e+02 -2.384900e+02
-12 15450     2.249399e+02 -2.011700e+02
-3 15451     3.759700e+02 -5.224500e+02
-10 15451     1.900699e+02 -1.630700e+02
-3 15452     -5.139300e+02 -5.259800e+02
-15 15452     -3.960600e+02 1.787000e+02
-3 15453     -4.845400e+02 -5.284200e+02
-6 15453     -5.530400e+02 -9.653998e+01
-10 15453     -3.938200e+02 1.739700e+02
-3 15454     3.682500e+02 -5.282300e+02
-6 15454     2.872800e+02 -2.360000e+02
-15 15454     2.922400e+02 -2.235100e+02
-3 15455     -1.240400e+02 -5.292200e+02
-9 15455     -1.372600e+02 -9.800000e+01
-3 15456     4.259998e+01 -5.360699e+02
-12 15456     -6.773999e+01 -1.970000e+02
-3 15457     1.903600e+02 -5.465699e+02
-8 15457     2.415300e+02 -2.541300e+02
-3 15458     1.749900e+02 -5.478900e+02
-6 15458     6.709998e+01 -2.684399e+02
-3 15459     3.439800e+02 -5.581600e+02
-8 15459     3.790600e+02 -2.668500e+02
-3 15460     2.066500e+02 -5.665699e+02
-8 15460     2.557200e+02 -2.698500e+02
-3 15461     5.282001e+01 -5.805800e+02
-6 15461     -5.657001e+01 -2.875900e+02
-12 15461     -5.363000e+01 -2.364000e+02
-3 15462     -1.919983e+00 -5.845800e+02
-6 15462     -1.097200e+02 -2.854900e+02
-3 15463     2.349976e+00 -5.881100e+02
-6 15463     -1.058500e+02 -2.886700e+02
-3 15464     2.309399e+02 -5.916300e+02
-6 15464     1.283700e+02 -3.057000e+02
-12 15464     1.333800e+02 -2.649100e+02
-3 15465     -1.047998e+01 -6.065601e+02
-6 15465     -1.180100e+02 -3.023500e+02
-8 15465     7.653998e+01 -2.863900e+02
-3 15466     2.111500e+02 -6.077900e+02
-10 15466     -1.463000e+01 -1.998700e+02
-3 15467     -6.839100e+02 4.754900e+02
-5 15467     2.859100e+02 4.969000e+02
-14 15467     1.913199e+02 3.863600e+02
-3 15468     -3.363800e+02 4.372500e+02
-5 15468     5.710200e+02 3.950800e+02
-11 15468     2.868600e+02 1.801300e+02
-14 15468     4.606400e+02 2.922000e+02
-3 15469     -3.452300e+02 4.277700e+02
-5 15469     5.608800e+02 3.856300e+02
-14 15469     4.512300e+02 2.821700e+02
-3 15470     -5.628900e+02 4.040500e+02
-13 15470     1.016900e+02 5.670700e+02
-14 15470     2.161200e+02 2.265800e+02
-3 15471     -3.375100e+02 3.990100e+02
-5 15471     5.677800e+02 3.560300e+02
-11 15471     2.880100e+02 1.493400e+02
-14 15471     4.588500e+02 2.551100e+02
-3 15472     -5.318300e+02 3.843700e+02
-5 15472     3.465900e+02 3.116800e+02
-11 15472     9.502002e+01 1.085700e+02
-13 15472     1.284500e+02 5.525200e+02
-14 15472     2.466400e+02 2.096700e+02
-3 15473     -5.591100e+02 3.730600e+02
-11 15473     6.962000e+01 1.013200e+02
-3 15474     -3.953300e+02 3.710500e+02
-5 15474     4.827800e+02 3.014500e+02
-3 15475     -3.399100e+02 3.661000e+02
-5 15475     5.607900e+02 3.192300e+02
-11 15475     2.830699e+02 1.205300e+02
-13 15475     3.071200e+02 5.662700e+02
-14 15475     4.533199e+02 2.201000e+02
-3 15476     -5.516600e+02 3.622500e+02
-13 15476     1.103500e+02 5.316800e+02
-14 15476     2.252400e+02 1.872200e+02
-3 15477     -2.373200e+02 3.597900e+02
-14 15477     6.459399e+02 3.119200e+02
-3 15478     -4.906400e+02 3.496000e+02
-5 15478     3.803000e+02 2.710900e+02
-11 15478     1.180700e+02 7.739999e+01
-13 15478     1.576801e+02 5.187300e+02
-14 15478     2.799100e+02 1.710700e+02
-3 15479     -4.394400e+02 3.425100e+02
-5 15479     4.346300e+02 2.708600e+02
-3 15480     -4.837400e+02 3.367800e+02
-4 15480     2.449500e+02 -3.765200e+02
-11 15480     1.171300e+02 6.559000e+01
-3 15481     -4.582600e+02 3.145900e+02
-5 15481     4.035601e+02 2.287700e+02
-13 15481     1.774500e+02 4.832700e+02
-14 15481     3.023800e+02 1.309800e+02
-3 15482     -4.494200e+02 3.152100e+02
-5 15482     4.135900e+02 2.307700e+02
-13 15482     1.860400e+02 4.850500e+02
-14 15482     3.122000e+02 1.327100e+02
-3 15483     -2.980600e+02 3.140900e+02
-5 15483     5.912900e+02 2.522400e+02
-3 15484     -4.706500e+02 3.124200e+02
-5 15484     3.911100e+02 2.293500e+02
-3 15485     -4.367100e+02 2.972900e+02
-5 15485     4.209399e+02 2.081200e+02
-13 15485     1.920300e+02 4.665500e+02
-14 15485     3.195000e+02 1.120600e+02
-3 15486     -3.559700e+02 2.704000e+02
-5 15486     5.033500e+02 1.835100e+02
-13 15486     2.605900e+02 4.478800e+02
-14 15486     3.996300e+02 8.864001e+01
-3 15487     -2.952500e+02 2.666500e+02
-13 15487     3.207600e+02 4.542700e+02
-14 15487     4.705699e+02 9.425000e+01
-3 15488     -2.588000e+02 2.540100e+02
-13 15488     3.571400e+02 4.499800e+02
-3 15489     -3.490500e+02 2.456000e+02
-13 15489     2.682200e+02 4.291000e+02
-14 15489     4.084900e+02 6.709003e+01
-3 15490     -4.047700e+02 2.241600e+02
-14 15490     3.439399e+02 3.809003e+01
-3 15491     -1.232600e+02 2.110900e+02
-11 15491     4.768900e+02 -7.750000e+00
-13 15491     4.956000e+02 4.314600e+02
-14 15491     6.797600e+02 6.400000e+01
-3 15492     -1.689100e+02 2.093100e+02
-13 15492     4.475800e+02 4.235400e+02
-14 15492     6.219800e+02 5.582001e+01
-3 15493     1.346000e+02 2.083600e+02
-11 15493     6.062600e+02 -9.690997e+01
-3 15494     -6.140700e+02 2.015400e+02
-4 15494     1.610200e+02 -2.624900e+02
-5 15494     2.190601e+02 9.172998e+01
-11 15494     -3.579999e+01 -7.171997e+01
-3 15495     2.900300e+02 1.995600e+02
-8 15495     4.231200e+02 4.149000e+02
-3 15496     -6.503400e+02 1.967900e+02
-5 15496     1.825000e+02 8.425000e+01
-8 15496     -3.622100e+02 4.058300e+02
-3 15497     2.097700e+02 1.969500e+02
-8 15497     3.618000e+02 4.174700e+02
-11 15497     6.707000e+02 -1.224700e+02
-3 15498     2.064700e+02 1.944100e+02
-6 15498     2.783600e+02 8.215400e+02
-8 15498     3.592900e+02 4.153800e+02
-9 15498     1.527300e+02 5.498700e+02
-11 15498     6.691600e+02 -1.244700e+02
-3 15499     3.173000e+02 1.899800e+02
-8 15499     4.472400e+02 4.055100e+02
-9 15499     2.528199e+02 5.464400e+02
-3 15500     -2.566100e+02 1.889200e+02
-5 15500     6.187700e+02 1.141600e+02
-13 15500     3.564900e+02 3.939800e+02
-14 15500     5.140300e+02 2.410999e+01
-3 15501     -6.774700e+02 1.881300e+02
-5 15501     1.553800e+02 7.460999e+01
-8 15501     -3.842400e+02 3.975500e+02
-3 15502     -2.678700e+02 1.876600e+02
-8 15502     -2.947998e+01 4.153000e+02
-3 15503     -1.224100e+02 1.832600e+02
-8 15503     1.008100e+02 4.169500e+02
-11 15503     4.779399e+02 -3.253003e+01
-14 15503     6.797500e+02 3.756000e+01
-3 15504     -8.345001e+01 1.822500e+02
-8 15504     1.346100e+02 4.139200e+02
-11 15504     5.239500e+02 -2.977002e+01
-3 15505     -2.804600e+02 1.811700e+02
-6 15505     -3.181300e+02 8.698900e+02
-14 15505     4.857300e+02 1.381000e+01
-3 15506     -1.880700e+02 1.789600e+02
-13 15506     4.260900e+02 3.946600e+02
-14 15506     5.975200e+02 2.320001e+01
-3 15507     -5.086300e+02 1.774600e+02
-13 15507     1.189800e+02 3.528900e+02
-3 15508     -1.748800e+02 1.572600e+02
-13 15508     4.377300e+02 3.774500e+02
-3 15509     -1.570200e+02 1.527400e+02
-13 15509     4.561801e+02 3.755100e+02
-14 15509     6.342800e+02 1.099854e-01
-3 15510     -2.098800e+02 1.519200e+02
-13 15510     4.015500e+02 3.681500e+02
-14 15510     5.688400e+02 -6.840027e+00
-3 15511     1.126500e+02 1.519200e+02
-6 15511     1.613000e+02 7.807600e+02
-8 15511     2.797200e+02 3.805000e+02
-9 15511     6.842999e+01 5.083900e+02
-11 15511     5.904100e+02 -1.435400e+02
-14 15511     8.825400e+02 -8.839001e+01
-3 15512     -2.941000e+02 1.510900e+02
-4 15512     1.305100e+02 -4.817100e+02
-5 15512     5.700400e+02 7.304999e+01
-6 15512     -3.344000e+02 8.271200e+02
-14 15512     4.679600e+02 -1.703998e+01
-3 15513     3.622200e+02 1.464100e+02
-6 15513     4.470900e+02 6.954900e+02
-3 15514     -3.271500e+02 1.438800e+02
-14 15514     4.300500e+02 -2.706000e+01
-3 15515     -3.271500e+02 1.438800e+02
-13 15515     2.860800e+02 3.484100e+02
-14 15515     4.300500e+02 -2.706000e+01
-3 15516     -1.526100e+02 1.354600e+02
-5 15516     7.448600e+02 6.857001e+01
-6 15516     -1.428600e+02 8.426100e+02
-3 15517     -9.841998e+01 1.341100e+02
-5 15517     8.179200e+02 7.328003e+01
-6 15517     -6.702002e+01 8.541600e+02
-8 15517     1.218500e+02 3.737100e+02
-13 15517     5.159100e+02 3.659300e+02
-14 15517     7.069900e+02 -1.245001e+01
-3 15518     -1.541400e+02 1.265600e+02
-11 15518     4.404500e+02 -8.513000e+01
-14 15518     6.359399e+02 -2.640002e+01
-3 15519     -5.176000e+02 1.205500e+02
-11 15519     5.441998e+01 -1.241000e+02
-14 15519     2.207400e+02 -6.771002e+01
-3 15520     -4.804900e+02 1.170800e+02
-6 15520     -5.770800e+02 7.343400e+02
-8 15520     -2.149700e+02 3.483800e+02
-11 15520     8.865002e+01 -1.238400e+02
-3 15521     -2.721700e+02 1.038300e+02
-11 15521     3.050699e+02 -1.161200e+02
-3 15522     -2.856700e+02 9.491998e+01
-6 15522     -3.178800e+02 7.568600e+02
-9 15522     -2.875800e+02 4.667300e+02
-3 15523     -4.843200e+02 8.748999e+01
-14 15523     2.545601e+02 -9.482001e+01
-3 15524     2.339800e+02 8.767999e+01
-8 15524     3.800400e+02 3.207400e+02
-3 15525     -6.469100e+02 8.467999e+01
-5 15525     1.803400e+02 -1.614001e+01
-14 15525     9.006000e+01 -1.097800e+02
-3 15526     -4.849100e+02 8.209003e+01
-11 15526     8.609003e+01 -1.502800e+02
-14 15526     2.536700e+02 -9.959998e+01
-3 15527     -6.882100e+02 7.871997e+01
-8 15527     -3.882000e+02 3.078100e+02
-11 15527     -9.978998e+01 -1.670100e+02
-14 15527     5.059003e+01 -1.181400e+02
-3 15528     -5.175500e+02 7.640002e+01
-5 15528     3.122900e+02 -1.629999e+01
-11 15528     5.409998e+01 -1.570900e+02
-14 15528     2.189000e+02 -1.072300e+02
-3 15529     2.905300e+02 6.804999e+01
-6 15529     3.532200e+02 6.104000e+02
-9 15529     2.272300e+02 4.331800e+02
-3 15530     -5.541400e+02 6.151001e+01
-14 15530     1.799399e+02 -1.241300e+02
-3 15531     -5.130900e+02 5.654999e+01
-13 15531     1.135800e+02 2.590900e+02
-14 15531     2.229000e+02 -1.248600e+02
-3 15532     1.029100e+02 3.279999e+01
-8 15532     2.694100e+02 2.775700e+02
-9 15532     6.145001e+01 3.984000e+02
-12 15532     2.600000e+02 6.148100e+02
-13 15532     6.330900e+02 2.006500e+02
-14 15532     8.620500e+02 -2.144600e+02
-3 15533     -1.181100e+02 2.537000e+01
-5 15533     7.796899e+02 -4.353998e+01
-6 15533     -9.089001e+01 7.103700e+02
-13 15533     4.860300e+02 2.700400e+02
-3 15534     2.455500e+02 1.710999e+01
-6 15534     3.133800e+02 5.887400e+02
-8 15534     3.872800e+02 2.599100e+02
-3 15535     -2.014900e+02 4.400024e-01
-13 15535     3.995699e+02 2.425700e+02
-3 15536     4.812000e+02 -3.499756e-01
-12 15536     6.510800e+02 5.036300e+02
-3 15537     4.812000e+02 -3.499756e-01
-12 15537     6.510800e+02 5.036300e+02
-3 15538     -2.015000e+02 -5.750000e+00
-5 15538     6.697900e+02 -7.871997e+01
-9 15538     -2.052100e+02 3.575200e+02
-11 15538     3.842900e+02 -1.995700e+02
-12 15538     -3.529999e+01 6.139400e+02
-3 15539     -3.798000e+02 -1.764001e+01
-13 15539     2.297800e+02 2.135800e+02
-3 15540     2.077800e+02 -5.412000e+01
-8 15540     3.534100e+02 2.001900e+02
-3 15541     2.077800e+02 -5.412000e+01
-8 15541     3.534100e+02 2.001900e+02
-3 15542     2.077800e+02 -5.412000e+01
-8 15542     3.534100e+02 2.001900e+02
-3 15543     4.892400e+02 -6.282001e+01
-6 15543     5.731801e+02 4.175800e+02
-7 15543     5.651400e+02 4.069600e+02
-8 15543     5.851400e+02 1.758500e+02
-3 15544     -1.380300e+02 -6.933002e+01
-11 15544     4.540800e+02 -2.496300e+02
-3 15545     -3.596997e+01 -8.564001e+01
-8 15545     1.746800e+02 1.940800e+02
-9 15545     -5.528998e+01 2.926100e+02
-13 15545     5.570100e+02 1.802000e+02
-14 15545     7.670300e+02 -2.360000e+02
-3 15546     -4.216998e+01 -9.121997e+01
-7 15546     2.042700e+02 5.845500e+02
-8 15546     1.713700e+02 1.883400e+02
-13 15546     5.516100e+02 1.756000e+02
-3 15547     -4.216998e+01 -9.121997e+01
-7 15547     2.042700e+02 5.845500e+02
-8 15547     1.713700e+02 1.883400e+02
-13 15547     5.516100e+02 1.756000e+02
-3 15548     -5.699200e+02 -9.490002e+01
-5 15548     2.463400e+02 -1.737100e+02
-3 15549     5.332700e+02 -1.105500e+02
-7 15549     5.960200e+02 3.453400e+02
-9 15549     4.395400e+02 2.725900e+02
-3 15550     5.682500e+02 -1.366800e+02
-9 15550     4.691200e+02 2.498600e+02
-10 15550     8.227400e+02 3.387900e+02
-12 15550     7.338101e+02 3.287800e+02
-3 15551     3.794301e+02 -1.385600e+02
-6 15551     4.379900e+02 3.500200e+02
-12 15551     5.217500e+02 3.593100e+02
-3 15552     1.998101e+02 -1.708800e+02
-7 15552     1.011000e+02 2.320000e+02
-13 15552     5.346000e+02 -1.312800e+02
-3 15553     1.951500e+02 -1.788000e+02
-8 15553     2.814800e+02 6.548001e+01
-3 15554     9.039978e+00 -1.848000e+02
-6 15554     -7.306000e+01 1.592400e+02
-3 15555     5.150024e+00 -1.881300e+02
-5 15555     6.320300e+02 -5.322600e+02
-7 15555     -9.239001e+01 2.353600e+02
-13 15555     3.645900e+02 -1.182900e+02
-3 15556     -4.222200e+02 -1.892400e+02
-6 15556     -4.656300e+02 3.906500e+02
-8 15556     -1.572700e+02 1.059400e+02
-9 15556     -3.912900e+02 1.877400e+02
-3 15557     1.466800e+02 -1.890500e+02
-8 15557     2.367700e+02 5.563000e+01
-3 15558     -4.260700e+02 -1.903000e+02
-8 15558     -1.608600e+02 1.041200e+02
-9 15558     -3.949100e+02 1.866000e+02
-3 15559     9.303003e+01 -1.923400e+02
-8 15559     1.900600e+02 5.497000e+01
-9 15559     4.463000e+01 1.943000e+02
-3 15560     1.938700e+02 -2.037900e+02
-4 15560     -2.611000e+02 -5.436400e+02
-9 15560     1.334400e+02 1.854700e+02
-13 15560     5.106200e+02 -1.684000e+02
-15 15560     1.816300e+02 2.227700e+02
-3 15561     4.317300e+02 -2.127500e+02
-7 15561     4.872300e+02 2.788900e+02
-10 15561     6.534301e+02 3.180700e+02
-12 15561     5.723199e+02 2.683800e+02
-3 15562     4.627900e+02 -2.159800e+02
-7 15562     5.138199e+02 2.672000e+02
-8 15562     5.640200e+02 4.026001e+01
-12 15562     6.052800e+02 2.589600e+02
-3 15563     7.257000e+02 -2.248100e+02
-7 15563     7.520900e+02 1.805300e+02
-3 15564     5.384100e+02 -2.315700e+02
-7 15564     5.789301e+02 2.307200e+02
-9 15564     4.397600e+02 1.665200e+02
-12 15564     6.865300e+02 2.274600e+02
-3 15565     2.638900e+02 -2.318500e+02
-6 15565     2.109000e+02 9.620001e+01
-7 15565     1.433000e+02 1.567700e+02
-8 15565     3.388600e+02 1.573001e+01
-10 15565     1.755600e+02 1.716700e+02
-12 15565     2.397700e+02 1.412700e+02
-13 15565     5.727200e+02 -1.982900e+02
-15 15565     2.819200e+02 1.768700e+02
-3 15566     5.599100e+02 -2.371500e+02
-9 15566     4.579700e+02 1.609700e+02
-12 15566     7.094100e+02 2.168500e+02
-3 15567     3.617200e+02 -2.517600e+02
-6 15567     4.088000e+02 2.286000e+02
-15 15567     7.716000e+02 3.415100e+02
-3 15568     8.984003e+01 -2.714300e+02
-10 15568     -5.692999e+01 1.501000e+02
-3 15569     5.274200e+02 -2.719700e+02
-7 15569     5.616400e+02 1.974600e+02
-3 15570     5.298500e+02 -2.784000e+02
-7 15570     5.622100e+02 1.919400e+02
-9 15570     4.312100e+02 1.264400e+02
-3 15571     7.613400e+02 -2.825200e+02
-7 15571     7.706899e+02 1.180700e+02
-3 15572     -3.634998e+01 -2.869900e+02
-12 15572     -1.103600e+02 9.140997e+01
-3 15573     5.508500e+02 -2.886100e+02
-7 15573     5.790200e+02 1.764600e+02
-3 15574     8.253003e+01 -2.917700e+02
-4 15574     -2.827600e+02 -4.267900e+02
-6 15574     -8.590027e+00 1.248999e+01
-8 15574     1.700400e+02 -3.317999e+01
-12 15574     4.590027e+00 6.670001e+01
-3 15575     9.760010e+00 -2.932200e+02
-6 15575     -8.444000e+01 1.910999e+01
-12 15575     -6.840997e+01 7.484003e+01
-3 15576     1.586600e+02 -2.950800e+02
-8 15576     2.352100e+02 -3.894000e+01
-10 15576     3.840027e+00 1.054600e+02
-12 15576     8.787000e+01 5.606000e+01
-3 15577     6.733500e+02 -2.953700e+02
-7 15577     6.867000e+02 1.337000e+02
-9 15577     5.529700e+02 1.116200e+02
-3 15578     6.733500e+02 -2.953700e+02
-7 15578     6.867000e+02 1.337000e+02
-9 15578     5.529700e+02 1.116200e+02
-3 15579     1.801500e+02 -2.962700e+02
-15 15579     1.056800e+02 9.039001e+01
-3 15580     3.333002e+01 -3.044700e+02
-15 15580     -5.896997e+01 1.292700e+02
-3 15581     -1.462100e+02 -3.051800e+02
-5 15581     4.796300e+02 -5.865400e+02
-6 15581     -2.338000e+02 5.607001e+01
-8 15581     -4.690002e+00 -2.619000e+01
-12 15581     -1.895500e+02 1.095700e+02
-13 15581     2.524100e+02 -1.671300e+02
-3 15582     3.063000e+02 -3.070600e+02
-13 15582     5.945699e+02 -2.669100e+02
-3 15583     4.703700e+02 -3.103900e+02
-6 15583     5.228300e+02 1.470500e+02
-12 15583     6.028101e+02 1.567600e+02
-3 15584     7.206000e+02 -3.134800e+02
-7 15584     7.249100e+02 1.031800e+02
-9 15584     5.922300e+02 9.607001e+01
-3 15585     -8.778003e+01 -3.245900e+02
-6 15585     -1.834700e+02 5.789978e+00
-9 15585     -1.112500e+02 7.491998e+01
-3 15586     -7.128998e+01 -3.245900e+02
-7 15586     -1.789800e+02 1.154300e+02
-13 15586     2.824301e+02 -2.148000e+02
-3 15587     -8.334998e+01 -3.256900e+02
-6 15587     -1.793500e+02 3.159973e+00
-9 15587     -1.075800e+02 7.423999e+01
-3 15588     5.184700e+02 -3.295000e+02
-6 15588     5.736000e+02 1.190900e+02
-7 15588     5.429500e+02 1.511300e+02
-10 15588     7.094100e+02 1.585000e+02
-12 15588     6.515900e+02 1.281600e+02
-3 15589     4.879200e+02 -3.337600e+02
-7 15589     5.163700e+02 1.560800e+02
-3 15590     1.095200e+02 -3.398400e+02
-7 15590     -4.865002e+01 5.679999e+01
-15 15590     7.760010e+00 5.772998e+01
-3 15591     -5.686900e+02 -3.411200e+02
-9 15591     -6.013300e+02 1.722998e+01
-3 15592     2.118700e+02 -3.518600e+02
-7 15592     4.745001e+01 3.365997e+01
-3 15593     4.200300e+02 -3.616100e+02
-8 15593     4.720200e+02 -9.962000e+01
-3 15594     3.051801e+02 -3.650200e+02
-4 15594     -4.055500e+02 -5.824000e+02
-3 15595     1.911200e+02 -3.753000e+02
-8 15595     2.585000e+02 -1.088700e+02
-3 15596     -5.810200e+02 -3.779100e+02
-9 15596     -6.085400e+02 -1.545001e+01
-3 15597     -5.888800e+02 -3.799300e+02
-9 15597     -6.160800e+02 -1.750000e+01
-3 15598     -5.931400e+02 -3.821400e+02
-9 15598     -6.197400e+02 -1.990997e+01
-3 15599     -6.182300e+02 -3.893800e+02
-9 15599     -6.430200e+02 -2.783002e+01
-3 15600     1.747900e+02 -3.925100e+02
-12 15600     9.128998e+01 -5.642999e+01
-3 15601     3.276300e+02 -4.054800e+02
-4 15601     -4.417100e+02 -5.844000e+02
-7 15601     1.530000e+02 -2.697998e+01
-10 15601     1.671300e+02 -4.271997e+01
-13 15601     5.800601e+02 -3.603900e+02
-15 15601     2.734500e+02 -7.676001e+01
-3 15602     7.989001e+01 -4.066600e+02
-10 15602     -1.139700e+02 5.789978e+00
-15 15602     -5.762000e+01 -2.117999e+01
-3 15603     -1.831700e+02 -4.148101e+02
-4 15603     -2.679500e+02 -2.641300e+02
-6 15603     -2.890000e+02 -9.765997e+01
-7 15603     -2.830400e+02 4.700000e+01
-8 15603     -5.245001e+01 -1.222400e+02
-12 15603     -2.668000e+02 -3.522998e+01
-3 15604     -4.942800e+02 -4.185699e+02
-5 15604     2.444301e+02 -5.118600e+02
-8 15604     -2.372000e+02 -8.422998e+01
-3 15605     3.777600e+02 -4.203101e+02
-8 15605     4.191600e+02 -1.553000e+02
-3 15606     -1.120800e+02 -4.210900e+02
-8 15606     4.390015e+00 -1.315700e+02
-3 15607     1.748300e+02 -4.302800e+02
-10 15607     -2.538000e+01 -4.109003e+01
-15 15607     4.590002e+01 -7.529999e+01
-3 15608     5.323999e+01 -4.375400e+02
-6 15608     -5.084998e+01 -1.479000e+02
-3 15609     -4.889001e+01 -4.451899e+02
-8 15609     4.898999e+01 -1.566900e+02
-9 15609     -7.641998e+01 -2.831000e+01
-15 15609     -1.895600e+02 -1.671997e+01
-3 15610     -6.384998e+01 -4.456899e+02
-8 15610     3.659003e+01 -1.564600e+02
-3 15611     2.985900e+02 -4.511300e+02
-8 15611     3.418300e+02 -1.805800e+02
-3 15612     4.046002e+01 -4.564200e+02
-8 15612     1.209600e+02 -1.718100e+02
-3 15613     -1.182300e+02 -4.603600e+02
-6 15613     -2.272300e+02 -1.580900e+02
-3 15614     2.316500e+02 -4.637000e+02
-4 15614     -4.402700e+02 -4.676801e+02
-6 15614     1.315200e+02 -1.916500e+02
-7 15614     2.440997e+01 -8.364001e+01
-8 15614     2.812400e+02 -1.887100e+02
-12 15614     1.336800e+02 -1.477000e+02
-13 15614     4.667800e+02 -4.003900e+02
-15 15614     8.584003e+01 -1.409300e+02
-3 15615     3.495900e+02 -4.687100e+02
-6 15615     2.654700e+02 -1.890400e+02
-8 15615     3.876900e+02 -1.963000e+02
-9 15615     2.661500e+02 -4.134003e+01
-3 15616     2.212200e+02 -4.688600e+02
-4 15616     -4.386000e+02 -4.554500e+02
-6 15616     1.156100e+02 -1.992100e+02
-10 15616     -8.109985e+00 -1.017500e+02
-15 15616     6.454999e+01 -1.462800e+02
-3 15617     2.194000e+02 -4.722700e+02
-7 15617     6.460022e+00 -9.327002e+01
-3 15618     3.143101e+02 -4.790000e+02
-8 15618     3.537100e+02 -2.042100e+02
-9 15618     2.345800e+02 -5.088000e+01
-12 15618     2.301700e+02 -1.656300e+02
-3 15619     2.178400e+02 -4.981400e+02
-6 15619     1.102300e+02 -2.280400e+02
-8 15619     2.640300e+02 -2.172400e+02
-9 15619     1.505400e+02 -6.844000e+01
-12 15619     1.098100e+02 -1.837400e+02
-3 15620     1.973199e+02 -5.053101e+02
-6 15620     9.026001e+01 -2.337700e+02
-12 15620     8.944000e+01 -1.890900e+02
-3 15621     1.805300e+02 -5.230400e+02
-6 15621     7.270001e+01 -2.483700e+02
-3 15622     1.417200e+02 -5.282800e+02
-6 15622     3.153998e+01 -2.522400e+02
-3 15623     1.799800e+02 -5.444700e+02
-6 15623     7.181000e+01 -2.658900e+02
-9 15623     1.186400e+02 -1.072200e+02
-12 15623     7.279999e+01 -2.210600e+02
-3 15624     1.469700e+02 -5.493400e+02
-6 15624     3.771002e+01 -2.697700e+02
-8 15624     2.042300e+02 -2.538000e+02
-9 15624     9.190002e+01 -1.116600e+02
-10 15624     -8.259003e+01 -1.436800e+02
-12 15624     3.739001e+01 -2.229600e+02
-15 15624     -1.948999e+01 -1.966300e+02
-3 15625     1.469700e+02 -5.493400e+02
-6 15625     3.771002e+01 -2.697700e+02
-8 15625     2.042300e+02 -2.538000e+02
-9 15625     9.190002e+01 -1.116600e+02
-10 15625     -8.259003e+01 -1.436800e+02
-12 15625     3.739001e+01 -2.229600e+02
-15 15625     -1.948999e+01 -1.966300e+02
-3 15626     2.610400e+02 -5.618600e+02
-6 15626     1.597900e+02 -2.805300e+02
-3 15627     -4.388900e+02 -5.727700e+02
-7 15627     -3.780700e+02 3.508002e+01
-13 15627     6.152002e+01 -2.735000e+02
-15 15627     -3.633800e+02 9.281000e+01
-3 15628     -4.542600e+02 -5.735601e+02
-9 15628     -4.052500e+02 -1.402300e+02
-3 15629     1.769500e+02 -5.898199e+02
-6 15629     6.982001e+01 -3.030200e+02
-12 15629     7.332001e+01 -2.590300e+02
-15 15629     2.054999e+01 -2.375400e+02
-3 15630     1.566700e+02 -5.974399e+02
-6 15630     4.878003e+01 -3.088600e+02
-9 15630     1.006400e+02 -1.506400e+02
-12 15630     5.125000e+01 -2.636300e+02
-15 15630     -1.859985e+00 -2.378500e+02
-3 15631     2.488800e+02 -6.129399e+02
-6 15631     1.463900e+02 -3.226500e+02
-10 15631     2.428003e+01 -2.131300e+02
-12 15631     1.531700e+02 -2.837200e+02
-3 15632     -4.760600e+02 -6.182500e+02
-9 15632     -4.207900e+02 -1.772500e+02
-3 15633     -6.813700e+02 4.420100e+02
-14 15633     1.924700e+02 3.549300e+02
-3 15634     -5.668700e+02 4.351000e+02
-14 15634     2.145900e+02 2.557100e+02
-3 15635     -3.456000e+02 4.337400e+02
-5 15635     5.604301e+02 3.925200e+02
-14 15635     4.511300e+02 2.890900e+02
-3 15636     -3.429200e+02 4.178600e+02
-4 15636     3.089200e+02 -5.089301e+02
-5 15636     5.623700e+02 3.752000e+02
-14 15636     4.537000e+02 2.732700e+02
-3 15637     -3.352500e+02 3.748400e+02
-11 15637     2.899200e+02 1.294100e+02
-13 15637     3.131300e+02 5.761100e+02
-3 15638     -2.802500e+02 3.162600e+02
-4 15638     2.377100e+02 -5.317500e+02
-5 15638     6.151500e+02 2.569800e+02
-3 15639     -4.823600e+02 3.076500e+02
-5 15639     3.810800e+02 2.258800e+02
-13 15639     1.589700e+02 4.804200e+02
-14 15639     2.807700e+02 1.286100e+02
-3 15640     -4.422800e+02 3.031000e+02
-4 15640     2.221300e+02 -3.925900e+02
-5 15640     4.139600e+02 2.176100e+02
-3 15641     -7.089000e+02 2.881300e+02
-11 15641     -9.778998e+01 -5.760010e+00
-3 15642     -4.126700e+02 2.798100e+02
-4 15642     2.054301e+02 -4.057500e+02
-5 15642     4.407400e+02 1.874800e+02
-3 15643     -7.175100e+02 2.776900e+02
-5 15643     1.326400e+02 1.660600e+02
-3 15644     -3.148100e+02 2.696300e+02
-13 15644     3.015500e+02 4.538400e+02
-14 15644     4.482200e+02 9.442001e+01
-3 15645     -3.106900e+02 2.622600e+02
-5 15645     5.585900e+02 1.816000e+02
-11 15645     2.622600e+02 8.840027e+00
-3 15646     -1.751300e+02 2.465900e+02
-11 15646     4.138600e+02 1.423999e+01
-14 15646     6.149900e+02 9.156000e+01
-3 15647     -2.029800e+02 2.457700e+02
-4 15647     1.881500e+02 -5.740699e+02
-3 15648     -6.631000e+01 2.156400e+02
-11 15648     5.461700e+02 3.460022e+00
-14 15648     7.545800e+02 7.644000e+01
-3 15649     -1.523300e+02 2.109300e+02
-13 15649     4.656500e+02 4.273500e+02
-14 15649     6.439800e+02 5.984998e+01
-3 15650     -1.325000e+01 2.077600e+02
-8 15650     1.999600e+02 4.396700e+02
-3 15651     -6.743700e+02 2.024700e+02
-11 15651     -8.945001e+01 -7.683002e+01
-3 15652     -3.065400e+02 1.977500e+02
-8 15652     -6.426001e+01 4.215600e+02
-3 15653     -2.713300e+02 1.856600e+02
-5 15653     6.010300e+02 1.099100e+02
-8 15653     -3.278003e+01 4.129200e+02
-13 15653     3.419399e+02 3.895900e+02
-14 15653     4.967200e+02 1.931000e+01
-3 15654     3.197100e+02 1.853300e+02
-6 15654     3.989500e+02 7.522000e+02
-3 15655     3.853600e+02 1.745500e+02
-8 15655     5.067000e+02 3.902600e+02
-3 15656     -7.811300e+02 1.697800e+02
-11 15656     -1.775200e+02 -1.087200e+02
-3 15657     -2.994100e+02 1.593800e+02
-4 15657     1.362000e+02 -4.785000e+02
-5 15657     5.646400e+02 8.077002e+01
-6 15657     -3.419700e+02 8.370700e+02
-8 15657     -5.652002e+01 3.895800e+02
-13 15657     3.129301e+02 3.647900e+02
-14 15657     4.620100e+02 -8.500000e+00
-3 15658     -5.849700e+02 1.506800e+02
-5 15658     2.458800e+02 4.873999e+01
-8 15658     -3.053600e+02 3.724800e+02
-11 15658     -9.229980e+00 -1.061600e+02
-13 15658     5.360999e+01 3.243300e+02
-14 15658     1.530400e+02 -4.617999e+01
-3 15659     -6.484003e+01 1.505400e+02
-8 15659     1.519600e+02 3.890700e+02
-3 15660     -3.237000e+02 1.485600e+02
-4 15660     1.297100e+02 -4.576300e+02
-5 15660     5.345300e+02 6.715002e+01
-6 15660     -3.738700e+02 8.162400e+02
-3 15661     -1.720200e+02 1.446100e+02
-8 15661     5.606000e+01 3.811800e+02
-11 15661     4.186400e+02 -7.147998e+01
-3 15662     -4.461300e+02 1.390900e+02
-5 15662     3.934600e+02 4.727002e+01
-11 15662     1.245100e+02 -1.037100e+02
-14 15662     2.981300e+02 -4.384998e+01
-3 15663     2.007500e+02 1.248700e+02
-6 15663     2.669500e+02 7.319400e+02
-3 15664     1.616200e+02 1.209000e+02
-6 15664     2.195500e+02 7.332500e+02
-8 15664     3.193700e+02 3.522500e+02
-9 15664     1.127700e+02 4.808000e+02
-3 15665     -5.869000e+01 1.132800e+02
-6 15665     -1.202002e+01 8.409800e+02
-11 15665     5.538700e+02 -8.481000e+01
-13 15665     5.569399e+02 3.525300e+02
-14 15665     7.576600e+02 -2.898999e+01
-3 15666     -9.762000e+01 1.116200e+02
-11 15666     5.063000e+02 -9.234003e+01
-3 15667     -3.206700e+02 1.067500e+02
-4 15667     1.066300e+02 -4.551000e+02
-5 15667     5.351801e+02 2.760999e+01
-8 15667     -7.516998e+01 3.470900e+02
-11 15667     2.539000e+02 -1.161800e+02
-14 15667     4.355000e+02 -6.172998e+01
-3 15668     -7.177900e+02 9.948999e+01
-14 15668     2.352002e+01 -1.023600e+02
-3 15669     -1.667700e+02 9.053998e+01
-6 15669     -1.574400e+02 7.821700e+02
-9 15669     -1.773900e+02 4.462000e+02
-3 15670     -8.788000e+01 8.541998e+01
-6 15670     -5.246997e+01 7.942500e+02
-8 15670     1.309600e+02 3.340200e+02
-13 15670     5.220500e+02 3.252300e+02
-3 15671     1.740600e+02 8.534003e+01
-6 15671     2.323600e+02 6.852300e+02
-9 15671     1.231900e+02 4.484200e+02
-3 15672     1.704400e+02 7.654999e+01
-6 15672     2.273100e+02 6.750500e+02
-9 15672     1.202900e+02 4.383400e+02
-3 15673     -9.781000e+01 7.659998e+01
-5 15673     8.120200e+02 1.117999e+01
-6 15673     -6.527002e+01 7.790300e+02
-8 15673     1.224000e+02 3.261100e+02
-9 15673     -1.148400e+02 4.345500e+02
-13 15673     5.111600e+02 3.149700e+02
-14 15673     7.038900e+02 -7.181000e+01
-3 15674     -2.537800e+02 7.038000e+01
-13 15674     3.521300e+02 2.947700e+02
-3 15675     4.438101e+02 6.992999e+01
-6 15675     5.379301e+02 5.838500e+02
-7 15675     5.477700e+02 5.582400e+02
-12 15675     6.174100e+02 5.958800e+02
-3 15676     -5.464600e+02 6.097998e+01
-5 15676     2.814200e+02 -3.245001e+01
-11 15676     2.776001e+01 -1.705400e+02
-14 15676     1.899600e+02 -1.232200e+02
-3 15677     -4.965800e+02 5.919000e+01
-11 15677     7.397998e+01 -1.678700e+02
-3 15678     -1.542100e+02 5.010999e+01
-5 15678     7.348101e+02 -2.119000e+01
-13 15678     4.507000e+02 2.871500e+02
-14 15678     6.309700e+02 -1.036600e+02
-3 15679     1.129800e+02 4.081000e+01
-8 15679     2.775500e+02 2.845900e+02
-3 15680     -1.313100e+02 3.521002e+01
-13 15680     4.730601e+02 2.767900e+02
-14 15680     6.585900e+02 -1.165400e+02
-3 15681     -8.965002e+01 3.441998e+01
-5 15681     8.178199e+02 -3.410999e+01
-6 15681     -5.346997e+01 7.262400e+02
-8 15681     1.294400e+02 2.904600e+02
-13 15681     5.161500e+02 2.794900e+02
-14 15681     7.113900e+02 -1.147400e+02
-3 15682     -3.546500e+02 2.781000e+01
-4 15682     6.277002e+01 -4.186300e+02
-5 15682     4.886100e+02 -5.338000e+01
-6 15682     -4.025100e+02 6.555200e+02
-8 15682     -1.035700e+02 2.804000e+02
-9 15682     -3.449400e+02 3.819100e+02
-11 15682     2.171900e+02 -1.833700e+02
-13 15682     2.547000e+02 2.512000e+02
-14 15682     3.928000e+02 -1.402000e+02
-3 15683     -1.102900e+02 2.621997e+01
-6 15683     -7.909000e+01 7.141700e+02
-8 15683     1.101500e+02 2.851100e+02
-9 15683     -1.229700e+02 3.900700e+02
-3 15684     4.841600e+02 2.544000e+01
-6 15684     5.789301e+02 5.224300e+02
-8 15684     5.863300e+02 2.527900e+02
-12 15684     6.579301e+02 5.355100e+02
-3 15685     -1.280029e+00 2.466998e+01
-6 15685     6.640002e+01 7.365300e+02
-9 15685     -2.608002e+01 3.907800e+02
-3 15686     -1.800000e+02 2.010999e+01
-9 15686     -1.867000e+02 3.806700e+02
-11 15686     4.085400e+02 -1.769200e+02
-3 15687     4.830000e+02 1.694000e+01
-8 15687     5.846500e+02 2.447900e+02
-3 15688     -9.226001e+01 9.960022e+00
-6 15688     -5.620001e+01 6.979400e+02
-3 15689     -2.178003e+01 3.219971e+00
-6 15689     3.828003e+01 7.042700e+02
-8 15689     1.897800e+02 2.665600e+02
-9 15689     -4.426001e+01 3.708000e+02
-3 15690     -6.373999e+01 -6.090027e+00
-9 15690     -8.134003e+01 3.609500e+02
-13 15690     5.398000e+02 2.477100e+02
-14 15690     7.425400e+02 -1.534900e+02
-3 15691     -2.687600e+02 -6.770020e+00
-8 15691     -2.875000e+01 2.553600e+02
-3 15692     -2.687600e+02 -6.770020e+00
-8 15692     -2.875000e+01 2.553600e+02
-3 15693     2.400400e+02 -4.560999e+01
-6 15693     3.019100e+02 5.142900e+02
-8 15693     3.800700e+02 2.064100e+02
-9 15693     1.825900e+02 3.302600e+02
-12 15693     4.019700e+02 5.087500e+02
-13 15693     7.413000e+02 1.038800e+02
-3 15694     2.467400e+02 -4.648999e+01
-6 15694     3.096200e+02 5.122200e+02
-9 15694     1.890699e+02 3.295500e+02
-12 15694     4.098101e+02 5.066000e+02
-3 15695     -6.183100e+02 -4.804999e+01
-8 15695     -3.254400e+02 2.109800e+02
-3 15696     -2.929900e+02 -5.892999e+01
-5 15696     5.460300e+02 -1.412800e+02
-6 15696     -3.196000e+02 5.571100e+02
-8 15696     -5.148999e+01 2.105700e+02
-12 15696     -1.541600e+02 5.360700e+02
-3 15697     -2.469300e+02 -7.988000e+01
-8 15697     -8.510010e+00 1.960800e+02
-9 15697     -2.421900e+02 2.899200e+02
-3 15698     2.863500e+02 -8.992999e+01
-7 15698     3.761200e+02 4.349900e+02
-9 15698     2.226700e+02 2.905300e+02
-12 15698     4.250800e+02 4.294200e+02
-13 15698     7.506300e+02 3.317999e+01
-3 15699     2.376600e+02 -9.897998e+01
-6 15699     2.956400e+02 4.517000e+02
-8 15699     3.766100e+02 1.609100e+02
-9 15699     1.814600e+02 2.825300e+02
-12 15699     3.969200e+02 4.480200e+02
-3 15700     -1.201900e+02 -1.010900e+02
-8 15700     1.015200e+02 1.803900e+02
-9 15700     -1.288900e+02 2.755300e+02
-3 15701     -2.264800e+02 -1.161200e+02
-6 15701     -2.274600e+02 5.145900e+02
-9 15701     -2.227000e+02 2.587000e+02
-3 15702     6.608600e+02 -1.320100e+02
-7 15702     7.146100e+02 2.883700e+02
-3 15703     -5.375300e+02 -1.368500e+02
-11 15703     3.428003e+01 -3.151000e+02
-3 15704     4.808700e+02 -1.372400e+02
-7 15704     5.435000e+02 3.359600e+02
-10 15704     7.262100e+02 3.803000e+02
-3 15705     5.572000e+02 -1.443200e+02
-7 15705     6.128900e+02 3.073000e+02
-10 15705     8.084700e+02 3.374100e+02
-3 15706     1.788000e+01 -1.518200e+02
-14 15706     5.843500e+02 -5.490000e+02
-3 15707     5.389600e+02 -1.614600e+02
-7 15707     5.931000e+02 2.967900e+02
-9 15707     4.428700e+02 2.285400e+02
-3 15708     1.939500e+02 -1.730800e+02
-8 15708     2.830900e+02 6.982001e+01
-3 15709     -3.141400e+02 -1.762200e+02
-7 15709     -1.040700e+02 4.864300e+02
-11 15709     2.570100e+02 -3.406600e+02
-13 15709     2.825500e+02 9.838000e+01
-3 15710     2.082400e+02 -1.949300e+02
-6 15710     1.508600e+02 1.369700e+02
-8 15710     2.926600e+02 4.976001e+01
-12 15710     1.781900e+02 1.856000e+02
-13 15710     5.301899e+02 -1.597100e+02
-3 15711     3.414500e+02 -1.966600e+02
-7 15711     4.094500e+02 3.189600e+02
-8 15711     4.505699e+02 6.891000e+01
-9 15711     2.696500e+02 1.964900e+02
-10 15711     5.669900e+02 3.754500e+02
-13 15711     7.819301e+02 -7.003003e+01
-3 15712     -4.473000e+02 -2.001500e+02
-6 15712     -4.975000e+02 3.660900e+02
-8 15712     -1.784900e+02 9.522000e+01
-3 15713     7.176600e+02 -2.051400e+02
-7 15713     7.495300e+02 2.020100e+02
-3 15714     -2.002200e+02 -2.244100e+02
-8 15714     2.126001e+01 7.562000e+01
-3 15715     -5.047998e+01 -2.430700e+02
-5 15715     5.603199e+02 -5.756300e+02
-7 15715     -1.503700e+02 1.873400e+02
-8 15715     6.678998e+01 1.737000e+01
-9 15715     -8.132001e+01 1.469700e+02
-15 15715     -1.040600e+02 2.476700e+02
-3 15716     5.470300e+02 -2.438400e+02
-7 15716     5.839500e+02 2.175400e+02
-3 15717     5.268900e+02 -2.492800e+02
-9 15717     4.296400e+02 1.512600e+02
-12 15717     6.717800e+02 2.104300e+02
-3 15718     -4.667999e+01 -2.509000e+02
-4 15718     -2.162900e+02 -3.745000e+02
-8 15718     6.903003e+01 1.017001e+01
-3 15719     -4.676001e+01 -2.775900e+02
-7 15719     -1.562700e+02 1.515500e+02
-13 15719     3.059900e+02 -1.853800e+02
-3 15720     2.825200e+02 -2.847500e+02
-10 15720     1.712200e+02 1.039400e+02
-13 15720     5.738500e+02 -2.488600e+02
-15 15720     2.770400e+02 9.626999e+01
-3 15721     -1.684500e+02 -2.863100e+02
-8 15721     -1.719000e+01 -7.410004e+00
-9 15721     -1.790100e+02 1.073800e+02
-3 15722     -5.456000e+01 -2.933600e+02
-12 15722     -1.270500e+02 8.853998e+01
-3 15723     -2.195300e+02 -2.938500e+02
-8 15723     -5.085999e+01 -7.750000e+00
-3 15724     2.262300e+02 -2.941600e+02
-4 15724     -3.304600e+02 -5.320300e+02
-3 15725     3.525300e+02 -2.962600e+02
-8 15725     4.229900e+02 -3.697000e+01
-3 15726     -1.752200e+02 -2.975400e+02
-5 15726     4.597600e+02 -5.650601e+02
-6 15726     -2.619600e+02 7.284003e+01
-8 15726     -2.559998e+01 -1.773001e+01
-10 15726     -2.162300e+02 2.531600e+02
-12 15726     -2.121900e+02 1.254500e+02
-3 15727     -9.584003e+01 -2.996900e+02
-9 15727     -1.187800e+02 9.654999e+01
-12 15727     -1.610400e+02 9.146002e+01
-3 15728     4.705200e+02 -3.005400e+02
-6 15728     5.257400e+02 1.574000e+02
-3 15729     7.349900e+02 -3.154300e+02
-7 15729     7.370400e+02 9.710001e+01
-9 15729     6.035601e+02 9.403000e+01
-3 15730     7.377500e+02 -3.188800e+02
-7 15730     7.388400e+02 9.370001e+01
-3 15731     2.384998e+01 -3.193700e+02
-7 15731     -1.149600e+02 9.248001e+01
-10 15731     -1.268400e+02 1.214400e+02
-13 15731     3.437100e+02 -2.379500e+02
-3 15732     7.447600e+02 -3.288100e+02
-7 15732     7.428800e+02 8.245001e+01
-9 15732     6.113000e+02 8.287000e+01
-3 15733     -6.127000e+02 -3.377100e+02
-9 15733     -6.444500e+02 1.684998e+01
-3 15734     -6.023999e+01 -3.418100e+02
-15 15734     -1.415000e+02 1.290800e+02
-3 15735     -5.702800e+02 -3.475700e+02
-9 15735     -6.018800e+02 1.182001e+01
-3 15736     2.854800e+02 -3.492700e+02
-7 15736     1.318500e+02 3.582001e+01
-3 15737     -6.023400e+02 -3.503000e+02
-9 15737     -6.316700e+02 7.070007e+00
-3 15738     -2.385999e+01 -3.542900e+02
-6 15738     -1.221700e+02 -4.163000e+01
-13 15738     3.073800e+02 -2.515200e+02
-3 15739     3.514001e+01 -3.562900e+02
-13 15739     3.462700e+02 -2.687100e+02
-15 15739     -6.885999e+01 6.617999e+01
-3 15740     3.587600e+02 -3.574800e+02
-7 15740     2.125100e+02 2.408002e+01
-15 15740     3.670900e+02 -1.121997e+01
-3 15741     7.386500e+02 -3.658800e+02
-7 15741     7.279399e+02 5.309998e+01
-3 15742     -3.669700e+02 -3.730100e+02
-6 15742     -4.154500e+02 1.267900e+02
-8 15742     -1.343500e+02 -4.937000e+01
-9 15742     -3.377900e+02 3.003998e+01
-13 15742     1.772400e+02 -9.482001e+01
-14 15742     2.935200e+02 -5.703000e+02
-3 15743     -6.004900e+02 -3.750700e+02
-9 15743     -6.278300e+02 -1.447998e+01
-3 15744     -6.089000e+02 -3.762300e+02
-9 15744     -6.358700e+02 -1.591998e+01
-3 15745     3.957001e+01 -3.862600e+02
-6 15745     -6.221002e+01 -8.959998e+01
-8 15745     1.282700e+02 -1.116200e+02
-10 15745     -1.332600e+02 4.638000e+01
-12 15745     -5.228998e+01 -3.525000e+01
-3 15746     3.928003e+01 -3.922400e+02
-4 15746     -3.253200e+02 -3.730600e+02
-6 15746     -6.229999e+01 -9.785999e+01
-8 15746     1.261300e+02 -1.166500e+02
-12 15746     -5.500000e+01 -4.337000e+01
-3 15747     4.022200e+02 -4.003300e+02
-8 15747     4.470800e+02 -1.367300e+02
-3 15748     4.487000e+02 -4.030500e+02
-6 15748     4.009900e+02 -9.387000e+01
-3 15749     -1.815500e+02 -4.235000e+02
-8 15749     -5.322998e+01 -1.299300e+02
-3 15750     9.622998e+01 -4.258800e+02
-6 15750     -7.580017e+00 -1.412800e+02
-13 15750     3.715100e+02 -3.400500e+02
-3 15751     7.027200e+02 -4.294100e+02
-7 15751     6.816899e+02 1.246997e+01
-3 15752     3.871000e+02 -4.379500e+02
-6 15752     3.087600e+02 -1.573500e+02
-7 15752     1.893600e+02 -7.464001e+01
-10 15752     2.010800e+02 -1.029200e+02
-15 15752     3.133300e+02 -1.477300e+02
-3 15753     6.877600e+02 -4.380800e+02
-7 15753     6.670400e+02 1.022998e+01
-12 15753     8.188199e+02 -1.846997e+01
-3 15754     3.758199e+02 -4.455500e+02
-6 15754     2.974700e+02 -1.657900e+02
-7 15754     1.772600e+02 -7.933002e+01
-9 15754     2.878000e+02 -2.160999e+01
-10 15754     1.874300e+02 -1.094200e+02
-3 15755     2.982200e+02 -4.474500e+02
-4 15755     -4.577900e+02 -5.299200e+02
-7 15755     9.700000e+01 -7.265997e+01
-8 15755     3.424400e+02 -1.771000e+02
-3 15756     -8.275000e+01 -4.537900e+02
-8 15756     2.022998e+01 -1.631800e+02
-3 15757     -1.473100e+02 -4.550699e+02
-6 15757     -2.546800e+02 -1.466500e+02
-9 15757     -1.596400e+02 -3.809998e+01
-12 15757     -2.385600e+02 -8.464001e+01
-3 15758     -6.842999e+01 -4.584200e+02
-8 15758     3.007001e+01 -1.680900e+02
-3 15759     3.377100e+02 -4.595601e+02
-4 15759     -4.832600e+02 -5.587900e+02
-3 15760     3.118500e+02 -4.614301e+02
-8 15760     3.515800e+02 -1.900600e+02
-3 15761     1.404900e+02 -4.703700e+02
-8 15761     2.019500e+02 -1.901700e+02
-3 15762     6.633002e+01 -4.910900e+02
-8 15762     1.374100e+02 -2.031500e+02
-3 15763     6.633002e+01 -4.910900e+02
-6 15763     -4.621997e+01 -2.152900e+02
-7 15763     -1.244800e+02 -8.157001e+01
-8 15763     1.374100e+02 -2.031500e+02
-12 15763     -4.894000e+01 -1.625000e+02
-13 15763     3.321300e+02 -3.873500e+02
-15 15763     -1.065100e+02 -1.192900e+02
-3 15764     6.190800e+02 -4.960601e+02
-12 15764     7.106700e+02 -8.802002e+01
-3 15765     3.090300e+02 -5.032900e+02
-7 15765     9.839001e+01 -1.206300e+02
-10 15765     9.259998e+01 -1.452900e+02
-3 15766     -3.845001e+01 -5.122800e+02
-6 15766     -1.499700e+02 -2.219399e+02
-12 15766     -1.470200e+02 -1.641700e+02
-3 15767     4.596002e+01 -5.147500e+02
-6 15767     -6.516998e+01 -2.326300e+02
-3 15768     -1.345300e+02 -5.174200e+02
-6 15768     -2.387600e+02 -2.028900e+02
-3 15769     2.982001e+01 -5.200500e+02
-8 15769     1.084000e+02 -2.229400e+02
-3 15770     -1.994000e+02 -5.249000e+02
-9 15770     -1.995200e+02 -9.694000e+01
-3 15771     1.142100e+02 -5.292100e+02
-8 15771     1.748500e+02 -2.384300e+02
-3 15772     -4.988600e+02 -5.368400e+02
-4 15772     -2.244000e+02 -1.835300e+02
-15 15772     -3.908800e+02 1.593300e+02
-3 15773     6.252200e+02 -5.512000e+02
-7 15773     5.245800e+02 -1.099100e+02
-9 15773     4.990400e+02 -1.029800e+02
-15 15773     8.506899e+02 -2.184100e+02
-3 15774     2.753003e+01 -5.664800e+02
-6 15774     -8.251001e+01 -2.740300e+02
-8 15774     1.064700e+02 -2.589400e+02
-9 15774     -9.330017e+00 -1.277400e+02
-3 15775     -1.599731e-01 -5.810800e+02
-6 15775     -1.086600e+02 -2.799800e+02
-7 15775     -1.647000e+02 -1.237900e+02
-8 15775     8.476001e+01 -2.679600e+02
-9 15775     -3.150000e+01 -1.373100e+02
-3 15776     -1.169500e+02 -5.837000e+02
-9 15776     -1.299100e+02 -1.435700e+02
-3 15777     -4.969971e+00 -5.880900e+02
-8 15777     8.153003e+01 -2.729400e+02
-9 15777     -3.578998e+01 -1.463900e+02
-12 15777     -1.068900e+02 -2.327900e+02
-3 15778     -1.154000e+02 -5.895400e+02
-6 15778     -2.178400e+02 -2.717600e+02
-3 15779     -4.436300e+02 -5.898000e+02
-7 15779     -3.887200e+02 1.835999e+01
-9 15779     -3.959200e+02 -1.534100e+02
-15 15779     -3.800800e+02 7.012000e+01
-3 15780     -1.191500e+02 -5.938400e+02
-9 15780     -1.309100e+02 -1.524300e+02
-3 15781     -4.528900e+02 -6.041899e+02
-4 15781     -2.693800e+02 -1.750700e+02
-8 15781     -2.337400e+02 -2.405800e+02
-9 15781     -4.034700e+02 -1.650400e+02
-13 15781     4.334003e+01 -2.984000e+02
-3 15782     1.444300e+02 -6.090400e+02
-9 15782     9.031000e+01 -1.601200e+02
-3 15783     -3.411200e+02 4.360200e+02
-4 15783     3.210300e+02 -5.131100e+02
-14 15783     4.558101e+02 2.902500e+02
-3 15784     -4.753000e+02 3.016800e+02
-4 15784     2.235100e+02 -3.759900e+02
-5 15784     3.866600e+02 2.196200e+02
-11 15784     1.207900e+02 3.567001e+01
-13 15784     1.640699e+02 4.740600e+02
-14 15784     2.864301e+02 1.215400e+02
-3 15785     -4.717800e+02 2.976600e+02
-11 15785     1.225000e+02 3.235001e+01
-13 15785     1.664900e+02 4.707300e+02
-14 15785     2.893600e+02 1.173900e+02
-3 15786     -7.410800e+02 2.738000e+02
-11 15786     -1.258500e+02 -1.859998e+01
-3 15787     -1.895900e+02 2.461200e+02
-13 15787     4.270000e+02 4.517400e+02
-14 15787     5.967000e+02 8.873001e+01
-3 15788     -2.238400e+02 2.105500e+02
-4 15788     1.649900e+02 -5.510800e+02
-5 15788     6.643400e+02 1.380100e+02
-8 15788     1.042999e+01 4.334200e+02
-3 15789     -1.625300e+02 2.110100e+02
-11 15789     4.314200e+02 -1.366998e+01
-14 15789     6.308500e+02 5.835999e+01
-3 15790     1.325100e+02 2.089000e+02
-6 15790     1.870400e+02 8.519400e+02
-9 15790     8.567999e+01 5.620000e+02
-3 15791     -7.566300e+02 1.947700e+02
-13 15791     -8.494000e+01 3.384900e+02
-14 15791     -9.659973e+00 -2.417999e+01
-3 15792     1.616500e+02 1.930600e+02
-9 15792     1.129800e+02 5.478800e+02
-11 15792     6.316899e+02 -1.153600e+02
-3 15793     4.018400e+02 1.812200e+02
-6 15793     4.981700e+02 7.311700e+02
-8 15793     5.218199e+02 3.955700e+02
-9 15793     3.289800e+02 5.389500e+02
-3 15794     -6.704300e+02 1.691300e+02
-14 15794     6.979999e+01 -3.865002e+01
-3 15795     -2.975300e+02 1.690700e+02
-13 15795     3.142000e+02 3.718100e+02
-3 15796     -1.012600e+02 1.529400e+02
-13 15796     5.146100e+02 3.824900e+02
-3 15797     -2.051500e+02 1.523800e+02
-4 15797     1.296800e+02 -5.582300e+02
-5 15797     6.797600e+02 8.131000e+01
-6 15797     -2.140600e+02 8.514600e+02
-8 15797     2.596002e+01 3.863800e+02
-11 15797     3.812200e+02 -6.917999e+01
-13 15797     4.057100e+02 3.682600e+02
-14 15797     5.738400e+02 -6.510010e+00
-3 15798     1.332500e+02 1.477600e+02
-6 15798     1.864700e+02 7.730700e+02
-9 15798     8.753998e+01 5.048200e+02
-11 15798     6.070699e+02 -1.522600e+02
-13 15798     6.731000e+02 2.971800e+02
-3 15799     -6.511600e+02 1.449200e+02
-8 15799     -3.603100e+02 3.638600e+02
-3 15800     1.653900e+02 1.390000e+02
-6 15800     2.247300e+02 7.569200e+02
-8 15800     3.238300e+02 3.670700e+02
-9 15800     1.164500e+02 4.966400e+02
-11 15800     6.329700e+02 -1.681200e+02
-3 15801     -2.238400e+02 1.345200e+02
-4 15801     1.188400e+02 -5.388300e+02
-5 15801     6.543500e+02 6.090002e+01
-6 15801     -2.385400e+02 8.222300e+02
-8 15801     9.239990e+00 3.708000e+02
-3 15802     -1.008100e+02 1.279100e+02
-6 15802     -6.363000e+01 8.472500e+02
-8 15802     1.236000e+02 3.689600e+02
-11 15802     5.084900e+02 -7.740997e+01
-3 15803     -7.080017e+00 1.156500e+02
-6 15803     6.113000e+01 8.533200e+02
-8 15803     2.049200e+02 3.603800e+02
-3 15804     1.937400e+02 1.120200e+02
-6 15804     2.571200e+02 7.156600e+02
-8 15804     3.465200e+02 3.429400e+02
-9 15804     1.416100e+02 4.720800e+02
-11 15804     6.552500e+02 -2.019200e+02
-3 15805     -3.029100e+02 1.047800e+02
-4 15805     1.030400e+02 -4.683400e+02
-5 15805     5.557200e+02 2.406000e+01
-6 15805     -3.418600e+02 7.632400e+02
-8 15805     -5.953003e+01 3.432300e+02
-11 15805     2.730100e+02 -1.182400e+02
-13 15805     3.069000e+02 3.177500e+02
-3 15806     -8.496002e+01 1.043300e+02
-6 15806     -4.808002e+01 8.200700e+02
-8 15806     1.333500e+02 3.504400e+02
-3 15807     1.188600e+02 9.717999e+01
-6 15807     1.669600e+02 7.102800e+02
-8 15807     2.835000e+02 3.329700e+02
-3 15808     -4.737800e+02 8.778998e+01
-4 15808     9.983002e+01 -3.414700e+02
-6 15808     -5.644400e+02 7.000600e+02
-8 15808     -2.078900e+02 3.230800e+02
-11 15808     9.676001e+01 -1.454800e+02
-3 15809     -9.794000e+01 8.735999e+01
-6 15809     -6.704999e+01 7.939800e+02
-3 15810     2.194700e+02 8.221002e+01
-6 15810     2.857700e+02 6.732300e+02
-8 15810     3.666900e+02 3.163100e+02
-9 15810     1.647300e+02 4.452800e+02
-3 15811     2.188300e+02 6.888000e+01
-8 15811     3.670700e+02 3.061100e+02
-9 15811     1.636300e+02 4.349500e+02
-3 15812     -7.000000e+00 4.927002e+01
-6 15812     5.846997e+01 7.670800e+02
-9 15812     -3.217999e+01 4.123900e+02
-13 15812     6.066000e+02 3.007800e+02
-14 15812     8.219000e+02 -9.122998e+01
-3 15813     -8.981000e+01 4.135999e+01
-5 15813     8.184600e+02 -2.559003e+01
-6 15813     -5.352002e+01 7.368800e+02
-8 15813     1.293200e+02 2.975800e+02
-9 15813     -1.062300e+02 4.037500e+02
-11 15813     5.149900e+02 -1.512100e+02
-13 15813     5.165699e+02 2.860600e+02
-3 15814     -5.827002e+01 3.425000e+01
-14 15814     7.517700e+02 -1.115900e+02
-3 15815     -8.165997e+01 2.791998e+01
-14 15815     7.210601e+02 -1.198200e+02
-3 15816     -4.690002e+01 2.588000e+01
-8 15816     1.654100e+02 2.850900e+02
-9 15816     -6.735999e+01 3.904400e+02
-13 15816     5.591300e+02 2.762500e+02
-3 15817     -2.110700e+02 2.206000e+01
-4 15817     5.063000e+01 -5.329600e+02
-6 15817     -2.149400e+02 6.810800e+02
-9 15817     -2.154000e+02 3.802300e+02
-3 15818     -1.055800e+02 1.417999e+01
-8 15818     1.156600e+02 2.750900e+02
-9 15818     -1.195600e+02 3.787800e+02
-13 15818     4.982500e+02 2.620700e+02
-3 15819     1.170800e+02 1.183002e+01
-6 15819     1.629700e+02 6.033200e+02
-12 15819     2.734600e+02 5.904900e+02
-13 15819     6.433000e+02 1.796100e+02
-14 15819     8.763000e+02 -2.407000e+02
-3 15820     -1.495200e+02 4.809998e+00
-4 15820     3.753998e+01 -5.854700e+02
-6 15820     -1.323700e+02 6.773800e+02
-9 15820     -1.590700e+02 3.688300e+02
-13 15820     4.524301e+02 2.504800e+02
-14 15820     6.339600e+02 -1.475800e+02
-3 15821     4.869700e+02 3.619995e+00
-8 15821     5.873000e+02 2.329900e+02
-3 15822     -2.940000e+02 -1.302002e+01
-4 15822     3.677002e+01 -4.603400e+02
-8 15822     -5.039001e+01 2.475100e+02
-13 15822     3.104000e+02 2.250700e+02
-3 15823     1.584400e+02 -2.040002e+01
-7 15823     3.048800e+02 5.584400e+02
-8 15823     3.139400e+02 2.307500e+02
-9 15823     1.113300e+02 3.520700e+02
-11 15823     6.221500e+02 -3.165800e+02
-12 15823     3.168700e+02 5.476200e+02
-13 15823     6.736500e+02 1.438000e+02
-3 15824     1.584400e+02 -2.040002e+01
-8 15824     3.139400e+02 2.307500e+02
-13 15824     6.736500e+02 1.438000e+02
-3 15825     3.723500e+02 -4.578003e+01
-7 15825     4.587700e+02 4.542400e+02
-9 15825     2.985100e+02 3.299200e+02
-3 15826     1.970000e+02 -4.707001e+01
-8 15826     3.421700e+02 2.080100e+02
-3 15827     -2.387400e+02 -4.929999e+01
-9 15827     -2.369700e+02 3.182100e+02
-13 15827     3.599301e+02 1.999800e+02
-14 15827     5.218199e+02 -2.059600e+02
-3 15828     2.405200e+02 -5.325000e+01
-6 15828     3.028500e+02 5.040600e+02
-8 15828     3.806800e+02 1.991800e+02
-9 15828     1.829900e+02 3.228500e+02
-12 15828     4.030200e+02 4.983800e+02
-3 15829     2.023900e+02 -5.650000e+01
-6 15829     2.575600e+02 5.069000e+02
-7 15829     3.394500e+02 5.118300e+02
-8 15829     3.491700e+02 1.986900e+02
-9 15829     1.500800e+02 3.196700e+02
-12 15829     3.613700e+02 4.998900e+02
-3 15830     -3.795001e+01 -6.932001e+01
-8 15830     1.739800e+02 2.063000e+02
-9 15830     -5.684003e+01 3.055100e+02
-3 15831     -4.619800e+02 -7.188000e+01
-5 15831     3.611000e+02 -1.505600e+02
-6 15831     -5.292500e+02 5.119300e+02
-3 15832     1.784800e+02 -9.113000e+01
-6 15832     2.280000e+02 4.711800e+02
-8 15832     3.283800e+02 1.702300e+02
-3 15833     1.784800e+02 -9.113000e+01
-8 15833     3.283800e+02 1.702300e+02
-3 15834     -4.940002e+01 -9.366998e+01
-7 15834     1.968500e+02 5.831300e+02
-8 15834     1.642600e+02 1.862800e+02
-13 15834     5.450000e+02 1.751700e+02
-14 15834     7.528500e+02 -2.422600e+02
-3 15835     -3.770001e+01 -9.320001e+01
-13 15835     5.546400e+02 1.731100e+02
-14 15835     7.650900e+02 -2.450600e+02
-3 15836     -1.330400e+02 -1.001000e+02
-6 15836     -1.079700e+02 5.526400e+02
-12 15836     5.458002e+01 5.199400e+02
-14 15836     6.464000e+02 -2.517200e+02
-3 15837     -5.076200e+02 -1.029400e+02
-13 15837     1.158300e+02 1.411600e+02
-3 15838     -3.862600e+02 -1.068100e+02
-8 15838     -1.296100e+02 1.700600e+02
-3 15839     -3.014800e+02 -1.257900e+02
-8 15839     -5.590002e+01 1.569100e+02
-14 15839     4.440500e+02 -2.825800e+02
-3 15840     4.777800e+02 -1.311800e+02
-6 15840     5.515800e+02 3.415600e+02
-7 15840     5.418300e+02 3.442300e+02
-8 15840     5.709600e+02 1.167200e+02
-10 15840     7.251899e+02 3.906500e+02
-12 15840     6.315000e+02 3.520100e+02
-3 15841     4.678500e+02 -1.361400e+02
-6 15841     5.406600e+02 3.364300e+02
-8 15841     5.620900e+02 1.118900e+02
-9 15841     3.814399e+02 2.499600e+02
-12 15841     6.206100e+02 3.464600e+02
-3 15842     8.496002e+01 -1.393500e+02
-6 15842     3.729999e+01 2.554400e+02
-7 15842     4.006000e+01 3.139300e+02
-8 15842     2.025300e+02 1.102300e+02
-13 15842     4.709900e+02 -5.940997e+01
-14 15842     6.707000e+02 -5.401899e+02
-3 15843     5.638101e+02 -1.390800e+02
-7 15843     6.191500e+02 3.105200e+02
-3 15844     1.769600e+02 -1.759600e+02
-4 15844     -2.349500e+02 -5.447700e+02
-3 15845     1.873999e+01 -1.879200e+02
-8 15845     1.279500e+02 6.248001e+01
-3 15846     -2.641998e+01 -1.951100e+02
-4 15846     -1.880800e+02 -4.060400e+02
-5 15846     6.019399e+02 -5.283400e+02
-6 15846     -1.098800e+02 1.509100e+02
-8 15846     9.167999e+01 5.872000e+01
-12 15846     -7.997998e+01 2.049500e+02
-13 15846     3.422300e+02 -1.173300e+02
-3 15847     6.910300e+02 -2.160800e+02
-7 15847     7.216500e+02 1.992500e+02
-9 15847     5.716300e+02 1.797300e+02
-3 15848     -9.640015e+00 -2.189700e+02
-4 15848     -2.084100e+02 -4.027000e+02
-8 15848     1.008400e+02 3.623999e+01
-3 15849     1.556800e+02 -2.192000e+02
-4 15849     -2.604800e+02 -5.033500e+02
-3 15850     1.411100e+02 -2.206300e+02
-13 15850     4.565699e+02 -1.785800e+02
-3 15851     1.389600e+02 -2.352200e+02
-6 15851     5.965997e+01 7.701001e+01
-3 15852     7.348800e+02 -2.347000e+02
-7 15852     7.582300e+02 1.687400e+02
-3 15853     5.237300e+02 -2.535600e+02
-9 15853     4.263800e+02 1.475600e+02
-12 15853     6.675699e+02 2.063800e+02
-3 15854     -6.241998e+01 -2.835100e+02
-6 15854     -1.576500e+02 4.500000e+01
-8 15854     5.383002e+01 -1.700000e+01
-9 15854     -8.996002e+01 1.117100e+02
-3 15855     5.046801e+02 -2.881000e+02
-6 15855     5.641801e+02 1.637200e+02
-9 15855     4.097400e+02 1.176700e+02
-12 15855     6.428500e+02 1.729400e+02
-3 15856     -1.721002e+01 -2.946600e+02
-4 15856     -2.511800e+02 -3.740200e+02
-8 15856     8.870001e+01 -2.923001e+01
-3 15857     5.543400e+02 -2.983100e+02
-9 15857     4.516600e+02 1.088000e+02
-12 15857     6.950500e+02 1.527900e+02
-3 15858     5.543400e+02 -2.983100e+02
-9 15858     4.516600e+02 1.088000e+02
-12 15858     6.950500e+02 1.527900e+02
-3 15859     1.874300e+02 -3.048900e+02
-8 15859     2.603200e+02 -4.764001e+01
-3 15860     -7.969971e+00 -3.096300e+02
-4 15860     -2.616300e+02 -3.731800e+02
-7 15860     -1.439100e+02 1.117900e+02
-10 15860     -1.558800e+02 1.476900e+02
-12 15860     -9.746997e+01 6.158002e+01
-3 15861     -2.432600e+02 -3.146800e+02
-8 15861     -7.573999e+01 -2.717999e+01
-9 15861     -2.426800e+02 8.078000e+01
-3 15862     7.463300e+02 -3.188900e+02
-7 15862     7.471899e+02 9.072000e+01
-9 15862     6.131801e+02 9.179001e+01
-3 15863     -7.959998e+01 -3.198600e+02
-4 15863     -2.443100e+02 -3.425600e+02
-9 15863     -1.042300e+02 7.944000e+01
-3 15864     -4.222998e+01 -3.281600e+02
-6 15864     -1.384200e+02 -1.008002e+01
-10 15864     -1.730500e+02 1.396400e+02
-12 15864     -1.187400e+02 4.639001e+01
-13 15864     2.993000e+02 -2.262400e+02
-15 15864     -1.258400e+02 1.340400e+02
-3 15865     7.322800e+02 -3.348600e+02
-7 15865     7.304000e+02 8.129001e+01
-9 15865     6.006200e+02 7.806000e+01
-3 15866     2.482300e+02 -3.589600e+02
-8 15866     3.117200e+02 -9.528003e+01
-3 15867     1.742999e+01 -3.898500e+02
-10 15867     -1.575500e+02 4.690002e+01
-3 15868     1.365400e+02 -3.934200e+02
-4 15868     -3.596900e+02 -4.312100e+02
-6 15868     4.009003e+01 -1.044100e+02
-8 15868     2.078000e+02 -1.230400e+02
-9 15868     8.232001e+01 1.965002e+01
-3 15869     1.699700e+02 -3.932200e+02
-4 15869     -3.721100e+02 -4.538000e+02
-6 15869     7.590997e+01 -1.065600e+02
-3 15870     1.414000e+02 -3.987300e+02
-7 15870     -3.603003e+01 -5.859985e+00
-3 15871     -5.959800e+02 -4.099900e+02
-9 15871     -6.189100e+02 -4.292999e+01
-3 15872     -5.736300e+02 -4.113500e+02
-9 15872     -5.962800e+02 -4.253003e+01
-3 15873     -5.736300e+02 -4.113500e+02
-9 15873     -5.962800e+02 -4.253003e+01
-3 15874     2.049000e+02 -4.275900e+02
-4 15874     -4.062200e+02 -4.671100e+02
-8 15874     2.636000e+02 -1.551600e+02
-12 15874     1.170300e+02 -9.881000e+01
-3 15875     -2.029700e+02 -4.362700e+02
-8 15875     -6.956000e+01 -1.404000e+02
-9 15875     -2.069300e+02 -2.306000e+01
-3 15876     -5.471997e+01 -4.433199e+02
-8 15876     4.456000e+01 -1.547500e+02
-3 15877     -2.318000e+02 -4.469301e+02
-8 15877     -8.009998e+01 -1.393500e+02
-3 15878     -9.950000e+01 -4.488700e+02
-6 15878     -2.106900e+02 -1.529200e+02
-8 15878     6.979980e+00 -1.574000e+02
-3 15879     -4.557200e+02 -4.583400e+02
-5 15879     2.576100e+02 -5.694301e+02
-9 15879     -4.107900e+02 -4.495001e+01
-10 15879     -3.263400e+02 2.583100e+02
-3 15880     -4.773000e+02 -4.649100e+02
-5 15880     2.360699e+02 -5.715200e+02
-7 15880     -3.611100e+02 1.588700e+02
-8 15880     -2.313400e+02 -1.237400e+02
-13 15880     7.132001e+01 -1.686800e+02
-3 15881     1.098000e+02 -4.690699e+02
-8 15881     1.760100e+02 -1.872000e+02
-3 15882     1.772100e+02 -4.740300e+02
-4 15882     -4.241600e+02 -4.216700e+02
-6 15882     6.878003e+01 -2.048300e+02
-10 15882     -5.846002e+01 -9.537000e+01
-15 15882     6.859985e+00 -1.393400e+02
-3 15883     -5.086000e+02 -5.168600e+02
-8 15883     -2.620900e+02 -1.659400e+02
-13 15883     3.473999e+01 -2.122500e+02
-3 15884     3.162600e+02 -5.556700e+02
-7 15884     1.093900e+02 -1.536800e+02
-3 15885     -4.646002e+01 -5.621100e+02
-8 15885     4.656000e+01 -2.503600e+02
-3 15886     1.800100e+02 -5.620800e+02
-6 15886     7.431000e+01 -2.784000e+02
-9 15886     1.201600e+02 -1.211400e+02
-10 15886     -4.615002e+01 -1.579000e+02
-12 15886     7.603998e+01 -2.338900e+02
-13 15886     4.163400e+02 -4.537700e+02
-15 15886     2.260999e+01 -2.140300e+02
-3 15887     -5.335999e+01 -5.746801e+02
-8 15887     4.103998e+01 -2.577800e+02
-3 15888     1.785600e+02 -6.023199e+02
-10 15888     -4.590002e+01 -1.879000e+02
-3 15889     2.601400e+02 -6.045400e+02
-6 15889     1.582000e+02 -3.156600e+02
-8 15889     2.997000e+02 -3.023200e+02
-3 15890     2.144600e+02 -6.047100e+02
-9 15890     1.495900e+02 -1.553300e+02
-3 15891     -1.065200e+02 -6.117800e+02
-8 15891     4.299988e+00 -2.821100e+02
-9 15891     -1.194400e+02 -1.663300e+02
-13 15891     2.193800e+02 -4.126500e+02
-3 15892     -3.490500e+02 4.231500e+02
-4 15892     3.120699e+02 -5.056400e+02
-5 15892     5.565800e+02 3.803900e+02
-14 15892     4.475200e+02 2.776000e+02
-3 15893     -3.575500e+02 4.123600e+02
-5 15893     5.480100e+02 3.715100e+02
-14 15893     4.395500e+02 2.696700e+02
-3 15894     -4.689400e+02 3.044900e+02
-5 15894     3.921700e+02 2.217600e+02
-11 15894     1.244300e+02 3.660999e+01
-13 15894     1.685000e+02 4.758600e+02
-14 15894     2.918700e+02 1.234000e+02
-3 15895     -4.340400e+02 3.021500e+02
-4 15895     2.219800e+02 -3.981700e+02
-5 15895     4.243600e+02 2.170800e+02
-11 15895     1.468700e+02 3.426001e+01
-13 15895     1.945200e+02 4.739400e+02
-14 15895     3.220300e+02 1.199700e+02
-3 15896     -5.304600e+02 2.910700e+02
-11 15896     6.382001e+01 1.757001e+01
-13 15896     1.121400e+02 4.551100e+02
-14 15896     2.261300e+02 1.015900e+02
-3 15897     -3.816600e+02 2.532800e+02
-11 15897     1.916400e+02 -5.450012e+00
-14 15897     3.724600e+02 7.146997e+01
-3 15898     -2.302000e+02 2.467700e+02
-11 15898     3.521100e+02 6.510010e+00
-13 15898     3.855100e+02 4.465400e+02
-14 15898     5.474700e+02 8.389001e+01
-3 15899     -2.442800e+02 2.449200e+02
-5 15899     6.413400e+02 1.733300e+02
-3 15900     1.297200e+02 2.316700e+02
-11 15900     6.072200e+02 -7.235999e+01
-3 15901     -4.105800e+02 2.069100e+02
-4 15901     1.637200e+02 -3.980900e+02
-6 15901     -4.975800e+02 8.704700e+02
-8 15901     -1.561800e+02 4.260000e+02
-11 15901     1.584500e+02 -4.673999e+01
-13 15901     2.086500e+02 3.896200e+02
-14 15901     3.381100e+02 2.389001e+01
-3 15902     1.255200e+02 1.832200e+02
-6 15902     1.785100e+02 8.211400e+02
-8 15902     2.907400e+02 4.071800e+02
-9 15902     7.946997e+01 5.373000e+02
-11 15902     6.015000e+02 -1.175300e+02
-13 15902     6.707800e+02 3.308700e+02
-3 15903     -7.784500e+02 1.604300e+02
-4 15903     1.414900e+02 -1.678900e+02
-5 15903     5.810999e+01 4.158002e+01
-8 15903     -4.662500e+02 3.695100e+02
-11 15903     -1.754700e+02 -1.150200e+02
-13 15903     -1.012900e+02 3.102700e+02
-14 15903     -3.053003e+01 -5.540997e+01
-3 15904     -7.130300e+02 1.446700e+02
-11 15904     -1.214400e+02 -1.222100e+02
-3 15905     3.085800e+02 1.443400e+02
-6 15905     3.819000e+02 7.024200e+02
-8 15905     4.376500e+02 3.654600e+02
-9 15905     2.442200e+02 5.039700e+02
-11 15905     7.090000e+02 -2.295200e+02
-3 15906     -3.046000e+02 1.208900e+02
-4 15906     1.123200e+02 -4.690699e+02
-6 15906     -3.458000e+02 7.812000e+02
-8 15906     -6.170001e+01 3.551500e+02
-11 15906     2.709500e+02 -1.061600e+02
-3 15907     2.381000e+02 1.151400e+02
-6 15907     3.111400e+02 7.128300e+02
-8 15907     3.841800e+02 3.447100e+02
-9 15907     1.815100e+02 4.758500e+02
-13 15907     7.627800e+02 2.473700e+02
-3 15908     -9.265002e+01 1.020600e+02
-5 15908     8.224200e+02 3.803998e+01
-6 15908     -5.990002e+01 8.140900e+02
-8 15908     1.257200e+02 3.478400e+02
-11 15908     5.129100e+02 -9.996002e+01
-13 15908     5.182200e+02 3.385300e+02
-3 15909     -2.838300e+02 6.938000e+01
-4 15909     8.307001e+01 -4.792200e+02
-5 15909     5.756899e+02 -8.150024e+00
-6 15909     -3.136400e+02 7.243100e+02
-8 15909     -4.300000e+01 3.147900e+02
-9 15909     -2.829500e+02 4.227800e+02
-11 15909     2.923600e+02 -1.448000e+02
-3 15910     -6.389800e+02 5.432001e+01
-5 15910     1.867700e+02 -4.309003e+01
-3 15911     2.182200e+02 3.307001e+01
-8 15911     3.646800e+02 2.747300e+02
-3 15912     1.270700e+02 2.646002e+01
-6 15912     1.741200e+02 6.202300e+02
-8 15912     2.889300e+02 2.717500e+02
-9 15912     8.276001e+01 3.933500e+02
-3 15913     1.270700e+02 2.646002e+01
-6 15913     1.741200e+02 6.202300e+02
-8 15913     2.889300e+02 2.717500e+02
-9 15913     8.276001e+01 3.933500e+02
-3 15914     3.503900e+02 -3.229980e+00
-8 15914     4.659700e+02 2.344200e+02
-3 15915     -5.547100e+02 -2.510999e+01
-14 15915     1.774301e+02 -2.000600e+02
-3 15916     4.874500e+02 -2.667999e+01
-7 15916     5.717600e+02 4.533200e+02
-8 15916     5.865601e+02 2.055900e+02
-3 15917     4.460999e+01 -4.032001e+01
-8 15917     2.333600e+02 2.251000e+02
-3 15918     2.287500e+02 -5.146997e+01
-6 15918     2.894500e+02 5.088600e+02
-7 15918     3.633199e+02 5.109000e+02
-8 15918     3.710400e+02 2.015900e+02
-9 15918     1.734800e+02 3.246200e+02
-12 15918     3.905900e+02 5.030400e+02
-13 15918     7.304800e+02 1.012800e+02
-3 15919     3.572200e+02 -7.617999e+01
-6 15919     4.193500e+02 4.256400e+02
-8 15919     4.706801e+02 1.701500e+02
-9 15919     2.861100e+02 3.030900e+02
-13 15919     8.159700e+02 2.664001e+01
-3 15920     3.080000e+02 -8.976001e+01
-6 15920     3.620400e+02 4.196900e+02
-12 15920     4.496600e+02 4.276900e+02
-3 15921     3.673800e+02 -1.149100e+02
-6 15921     4.266600e+02 3.790200e+02
-8 15921     4.774301e+02 1.358600e+02
-9 15921     2.936801e+02 2.684900e+02
-10 15921     6.123600e+02 4.573200e+02
-12 15921     5.107100e+02 3.873000e+02
-13 15921     8.187200e+02 -9.229980e+00
-3 15922     3.499800e+02 -1.219000e+02
-6 15922     4.056900e+02 3.748500e+02
-8 15922     4.623300e+02 1.314200e+02
-9 15922     2.782500e+02 2.624700e+02
-12 15922     4.908400e+02 3.832100e+02
-15 15922     7.905500e+02 5.182800e+02
-3 15923     3.499800e+02 -1.219000e+02
-6 15923     4.056900e+02 3.748500e+02
-8 15923     4.623300e+02 1.314200e+02
-12 15923     4.908400e+02 3.832100e+02
-15 15923     7.905500e+02 5.182800e+02
-3 15924     3.499800e+02 -1.219000e+02
-12 15924     4.908400e+02 3.832100e+02
-3 15925     -3.916600e+02 -1.522400e+02
-5 15925     4.313900e+02 -2.235600e+02
-8 15925     -1.324900e+02 1.351900e+02
-12 15925     -2.605200e+02 4.304000e+02
-13 15925     2.142400e+02 1.112900e+02
-14 15925     3.425699e+02 -3.088400e+02
-3 15926     4.677500e+02 -1.544600e+02
-12 15926     6.197000e+02 3.266800e+02
-3 15927     3.431400e+02 -1.578200e+02
-8 15927     4.549399e+02 9.842999e+01
-9 15927     2.722800e+02 2.280900e+02
-10 15927     5.775900e+02 4.174600e+02
-15 15927     7.735100e+02 4.724600e+02
-3 15928     3.431400e+02 -1.578200e+02
-6 15928     3.966500e+02 3.385300e+02
-8 15928     4.557800e+02 1.036800e+02
-9 15928     2.730400e+02 2.332300e+02
-10 15928     5.775900e+02 4.174600e+02
-12 15928     4.822800e+02 3.474400e+02
-15 15928     7.735100e+02 4.724600e+02
-3 15929     -3.922900e+02 -1.650100e+02
-8 15929     -1.324500e+02 1.246000e+02
-3 15930     -3.922900e+02 -1.650100e+02
-8 15930     -1.324500e+02 1.246000e+02
-12 15930     -2.596800e+02 4.170000e+02
-3 15931     -3.016600e+02 -1.689700e+02
-7 15931     -9.345001e+01 4.924500e+02
-8 15931     -5.689001e+01 1.227600e+02
-9 15931     -2.864200e+02 2.095400e+02
-12 15931     -1.531900e+02 4.250800e+02
-3 15932     -3.915900e+02 -1.764100e+02
-8 15932     -1.321200e+02 1.163400e+02
-12 15932     -2.586600e+02 4.076800e+02
-3 15933     -3.915900e+02 -1.764100e+02
-8 15933     -1.321200e+02 1.163400e+02
-12 15933     -2.586600e+02 4.076800e+02
-3 15934     -3.742200e+02 -1.785300e+02
-8 15934     -1.168700e+02 1.168300e+02
-3 15935     5.017600e+02 -2.182900e+02
-7 15935     5.495100e+02 2.532300e+02
-9 15935     4.094500e+02 1.780400e+02
-3 15936     7.155601e+02 -2.199000e+02
-7 15936     7.438199e+02 1.879700e+02
-3 15937     -9.448999e+01 -2.656200e+02
-5 15937     5.195000e+02 -5.798101e+02
-13 15937     2.809301e+02 -1.603900e+02
-3 15938     1.868400e+02 -2.722600e+02
-4 15938     -3.040400e+02 -5.056000e+02
-6 15938     1.082200e+02 3.437000e+01
-9 15938     1.243700e+02 1.240600e+02
-12 15938     1.244500e+02 8.434003e+01
-3 15939     -7.144000e+01 -2.943100e+02
-6 15939     -1.670700e+02 3.538000e+01
-8 15939     4.703998e+01 -2.567999e+01
-9 15939     -9.600000e+01 1.019200e+02
-3 15940     7.393000e+02 -3.216800e+02
-7 15940     7.397400e+02 9.048001e+01
-9 15940     6.071400e+02 8.879001e+01
-3 15941     2.490800e+02 -3.255500e+02
-10 15941     1.032500e+02 5.977002e+01
-3 15942     1.351000e+02 -3.287200e+02
-4 15942     -3.212000e+02 -4.510100e+02
-6 15942     4.477002e+01 -3.176001e+01
-12 15942     5.600000e+01 2.026001e+01
-3 15943     7.486000e+02 -3.497100e+02
-7 15943     7.412000e+02 6.398999e+01
-9 15943     6.126200e+02 6.551001e+01
-3 15944     7.031801e+02 -3.508300e+02
-7 15944     7.002500e+02 7.717999e+01
-9 15944     5.752200e+02 6.453998e+01
-3 15945     1.933002e+01 -3.581300e+02
-13 15945     3.346200e+02 -2.655600e+02
-3 15946     -2.092700e+02 -3.677800e+02
-6 15946     -3.063500e+02 -1.771002e+01
-3 15947     -5.865200e+02 -3.730800e+02
-9 15947     -6.144600e+02 -1.139001e+01
-3 15948     6.015002e+01 -3.837200e+02
-7 15948     -9.569000e+01 2.796002e+01
-13 15948     3.589399e+02 -2.952100e+02
-3 15949     3.102700e+02 -4.059800e+02
-7 15949     1.326200e+02 -2.654999e+01
-3 15950     -2.248300e+02 -4.079800e+02
-9 15950     -2.256400e+02 1.650024e+00
-3 15951     7.297400e+02 -4.113101e+02
-7 15951     7.089800e+02 1.841998e+01
-9 15951     5.938900e+02 1.370001e+01
-3 15952     7.286400e+02 -4.186500e+02
-7 15952     7.068600e+02 1.308002e+01
-3 15953     7.027000e+02 -4.362100e+02
-7 15953     6.806500e+02 6.799988e+00
-3 15954     -4.942900e+02 -4.570699e+02
-5 15954     2.275500e+02 -5.585000e+02
-7 15954     -3.699700e+02 1.689700e+02
-8 15954     -2.425400e+02 -1.169500e+02
-13 15954     6.316998e+01 -1.588300e+02
-15 15954     -3.264300e+02 2.788400e+02
-3 15955     -5.202002e+01 -4.588700e+02
-8 15955     4.354999e+01 -1.694600e+02
-3 15956     1.887600e+02 -4.651200e+02
-13 15956     4.306000e+02 -3.925300e+02
-3 15957     4.497998e+01 -5.079900e+02
-6 15957     -6.721997e+01 -2.269301e+02
-8 15957     1.206000e+02 -2.150800e+02
-12 15957     -6.834998e+01 -1.726900e+02
-3 15958     -4.248000e+02 -5.415900e+02
-7 15958     -3.523600e+02 6.701001e+01
-8 15958     -2.028900e+02 -1.900400e+02
-13 15958     8.234998e+01 -2.479200e+02
-3 15959     4.542999e+01 -5.851899e+02
-6 15959     -6.388000e+01 -2.910100e+02
-3 15960     4.542999e+01 -5.851899e+02
-6 15960     -6.388000e+01 -2.910100e+02
-3 15961     -2.141998e+01 -5.883101e+02
-6 15961     -1.297800e+02 -2.863400e+02
-3 15962     -5.695500e+02 3.849500e+02
-13 15962     9.734003e+01 5.525500e+02
-14 15962     2.104600e+02 2.105800e+02
-3 15963     -5.534400e+02 3.746200e+02
-13 15963     1.082200e+02 5.425500e+02
-3 15964     -4.002400e+02 3.736500e+02
-5 15964     4.791200e+02 3.039100e+02
-13 15964     2.379600e+02 5.504300e+02
-14 15964     3.735699e+02 2.050000e+02
-3 15965     -7.173200e+02 3.465300e+02
-14 15965     4.213000e+01 1.266300e+02
-3 15966     -3.174800e+02 3.233300e+02
-4 15966     2.412300e+02 -5.032000e+02
-13 15966     3.161700e+02 5.156500e+02
-3 15967     -4.027200e+02 3.100300e+02
-14 15967     3.609000e+02 1.335800e+02
-3 15968     -4.027200e+02 3.100300e+02
-14 15968     3.609000e+02 1.335800e+02
-3 15969     -4.325100e+02 2.879200e+02
-4 15969     2.114900e+02 -3.951500e+02
-11 15969     1.449600e+02 1.929999e+01
-3 15970     -4.109200e+02 2.661500e+02
-5 15970     4.412700e+02 1.733000e+02
-3 15971     -4.615300e+02 2.199700e+02
-4 15971     1.699301e+02 -3.612300e+02
-5 15971     3.801801e+02 1.224500e+02
-3 15972     1.712200e+02 1.899300e+02
-6 15972     2.353500e+02 8.218200e+02
-8 15972     3.296000e+02 4.123000e+02
-9 15972     1.205800e+02 5.450900e+02
-11 15972     6.387900e+02 -1.204000e+02
-13 15972     7.123900e+02 3.295700e+02
-3 15973     -3.782100e+02 1.722700e+02
-11 15973     1.931900e+02 -7.134003e+01
-13 15973     2.378900e+02 3.641300e+02
-14 15973     3.725900e+02 -6.590027e+00
-3 15974     -5.345000e+02 6.820001e+01
-4 15974     9.159998e+01 -3.001200e+02
-5 15974     2.941801e+02 -2.510999e+01
-8 15974     -2.593700e+02 3.061600e+02
-11 15974     3.828003e+01 -1.642600e+02
-3 15975     -9.919983e+00 4.047998e+01
-14 15975     8.172300e+02 -9.965002e+01
-3 15976     -3.212000e+02 -8.250000e+00
-5 15976     5.270601e+02 -8.490002e+01
-3 15977     1.371000e+02 -2.923999e+01
-6 15977     1.825800e+02 5.526400e+02
-12 15977     2.925699e+02 5.408900e+02
-3 15978     -4.079400e+02 -3.302002e+01
-6 15978     -4.654400e+02 5.710300e+02
-8 15978     -1.486600e+02 2.298500e+02
-9 15978     -3.890600e+02 3.258100e+02
-13 15978     2.039800e+02 2.003300e+02
-3 15979     3.132800e+02 -3.463000e+01
-8 15979     4.347200e+02 2.080700e+02
-3 15980     -1.865400e+02 -1.025900e+02
-8 15980     4.415997e+01 1.788200e+02
-3 15981     1.989301e+02 -1.042400e+02
-6 15981     2.505500e+02 4.522500e+02
-10 15981     5.002200e+02 5.725500e+02
-3 15982     -1.715800e+02 -1.108200e+02
-5 15982     6.965300e+02 -1.831900e+02
-3 15983     2.773400e+02 -1.459700e+02
-7 15983     3.610100e+02 3.810900e+02
-8 15983     3.999000e+02 1.159000e+02
-9 15983     2.153800e+02 2.401200e+02
-3 15984     3.358400e+02 -1.530300e+02
-6 15984     3.857600e+02 3.415300e+02
-7 15984     4.103800e+02 3.591400e+02
-8 15984     4.492400e+02 1.065000e+02
-9 15984     2.648400e+02 2.343100e+02
-10 15984     5.702600e+02 4.252900e+02
-12 15984     4.727200e+02 3.510000e+02
-13 15984     7.838000e+02 -3.304999e+01
-3 15985     5.955500e+02 -1.640600e+02
-7 15985     6.453900e+02 2.768200e+02
-3 15986     7.169700e+02 -1.838900e+02
-7 15986     7.541300e+02 2.213300e+02
-3 15987     3.468500e+02 -1.859800e+02
-8 15987     4.561000e+02 7.701999e+01
-3 15988     7.109500e+02 -2.052500e+02
-7 15988     7.434000e+02 2.038400e+02
-3 15989     -5.784998e+01 -2.285800e+02
-5 15989     5.610000e+02 -5.556000e+02
-3 15990     1.352500e+02 -2.413100e+02
-12 15990     7.740997e+01 1.208500e+02
-15 15990     8.321997e+01 1.745700e+02
-3 15991     1.446900e+02 -2.524500e+02
-7 15991     9.500122e-01 1.357900e+02
-10 15991     5.719971e+00 1.571900e+02
-13 15991     4.500800e+02 -2.074800e+02
-15 15991     7.948999e+01 1.589400e+02
-3 15992     6.944700e+02 -2.556500e+02
-7 15992     7.141100e+02 1.629100e+02
-9 15992     5.722800e+02 1.459600e+02
-3 15993     -6.425000e+01 -2.685400e+02
-5 15993     5.408400e+02 -5.975500e+02
-6 15993     -1.587500e+02 6.437000e+01
-7 15993     -1.654700e+02 1.666200e+02
-8 15993     5.348999e+01 -2.940002e+00
-13 15993     2.962500e+02 -1.713600e+02
-3 15994     9.971002e+01 -2.754300e+02
-10 15994     -4.796997e+01 1.443400e+02
-3 15995     1.628400e+02 -2.764700e+02
-4 15995     -2.991700e+02 -4.861400e+02
-7 15995     1.104999e+01 1.096900e+02
-10 15995     1.496002e+01 1.262000e+02
-13 15995     4.593800e+02 -2.308100e+02
-3 15996     1.541998e+01 -2.902700e+02
-6 15996     -7.950000e+01 2.171002e+01
-12 15996     -6.369000e+01 7.731000e+01
-13 15996     3.428199e+02 -2.117200e+02
-3 15997     2.454500e+02 -3.113900e+02
-6 15997     1.713000e+02 -9.739990e+00
-10 15997     1.033500e+02 7.434998e+01
-13 15997     5.258600e+02 -2.713800e+02
-15 15997     1.957600e+02 6.060999e+01
-3 15998     -2.240002e+01 -3.212700e+02
-4 15998     -2.635800e+02 -3.652800e+02
-7 15998     -1.473100e+02 1.034000e+02
-9 15998     -5.550000e+01 7.900000e+01
-10 15998     -1.591600e+02 1.379300e+02
-15 15998     -1.102000e+02 1.336200e+02
-3 15999     -2.166600e+02 -3.870900e+02
-8 15999     -7.265997e+01 -9.490002e+01
-3 16000     -5.820000e+02 -3.915200e+02
-9 16000     -6.077200e+02 -2.703003e+01
-3 16001     -2.064100e+02 -4.140000e+02
-9 16001     -2.102300e+02 -4.109985e+00
-3 16002     7.384900e+02 -4.197600e+02
-7 16002     7.161700e+02 8.719971e+00
-3 16003     7.384900e+02 -4.197600e+02
-7 16003     7.161700e+02 8.719971e+00
-3 16004     -4.483100e+02 -4.310000e+02
-7 16004     -3.252200e+02 1.934600e+02
-13 16004     1.013000e+02 -1.413400e+02
-3 16005     -1.127800e+02 -4.378199e+02
-6 16005     -2.235700e+02 -1.362400e+02
-7 16005     -2.449700e+02 6.650024e+00
-10 16005     -2.767300e+02 3.871002e+01
-12 16005     -2.123700e+02 -7.521002e+01
-15 16005     -2.460700e+02 1.535999e+01
-3 16006     -3.488000e+01 -4.591600e+02
-8 16006     5.720001e+01 -1.705200e+02
-3 16007     2.481100e+02 -4.605000e+02
-8 16007     2.966700e+02 -1.869100e+02
-3 16008     3.015002e+01 -4.673199e+02
-8 16008     1.095400e+02 -1.814700e+02
-3 16009     2.258800e+02 -5.447200e+02
-6 16009     1.207700e+02 -2.660400e+02
-8 16009     2.721700e+02 -2.536700e+02
-3 16010     -4.374100e+02 -5.513101e+02
-7 16010     -3.675100e+02 5.825000e+01
-13 16010     6.953003e+01 -2.542000e+02
-15 16010     -3.447400e+02 1.237100e+02
-3 16011     2.360999e+01 -5.795500e+02
-6 16011     -8.407001e+01 -2.860900e+02
-7 16011     -1.465700e+02 -1.303800e+02
-15 16011     -1.299500e+02 -1.735600e+02
-3 16012     -3.951900e+02 3.186100e+02
-11 16012     1.965200e+02 5.801999e+01
-13 16012     2.370400e+02 4.983900e+02
-14 16012     3.723000e+02 1.463200e+02
-3 16013     -3.584300e+02 3.089500e+02
-4 16013     2.296600e+02 -4.598199e+02
-13 16013     2.694800e+02 4.933700e+02
-14 16013     4.099500e+02 1.398600e+02
-3 16014     -6.614500e+02 2.008800e+02
-4 16014     1.606100e+02 -2.341300e+02
-5 16014     1.719500e+02 8.715002e+01
-13 16014     -1.007001e+01 3.538600e+02
-14 16014     7.932001e+01 -9.489990e+00
-3 16015     3.675900e+02 1.879500e+02
-6 16015     4.578600e+02 7.467700e+02
-3 16016     -2.194000e+02 1.812300e+02
-4 16016     1.506500e+02 -5.512500e+02
-13 16016     3.935500e+02 3.927900e+02
-14 16016     5.581899e+02 2.201001e+01
-3 16017     4.137300e+02 1.544900e+02
-8 16017     5.316700e+02 3.716000e+02
-3 16018     -4.223800e+02 1.294000e+02
-8 16018     -1.642700e+02 3.568200e+02
-3 16019     1.196700e+02 1.283900e+02
-6 16019     1.692200e+02 7.492600e+02
-8 16019     2.845100e+02 3.596000e+02
-9 16019     7.458002e+01 4.862500e+02
-13 16019     6.585601e+02 2.820000e+02
-3 16020     -8.584003e+01 8.648999e+01
-6 16020     -4.896997e+01 7.932900e+02
-13 16020     5.252600e+02 3.238200e+02
-3 16021     -1.307200e+02 2.459998e+01
-13 16021     4.728000e+02 2.687000e+02
-14 16021     6.595500e+02 -1.261600e+02
-3 16022     4.250400e+02 -5.057001e+01
-7 16022     5.071600e+02 4.365600e+02
-12 16022     5.805100e+02 4.529700e+02
-3 16023     -3.669600e+02 -1.210000e+02
-12 16023     -2.322500e+02 4.671500e+02
-3 16024     -3.712300e+02 -1.339500e+02
-8 16024     -1.145400e+02 1.484400e+02
-3 16025     7.114001e+01 -2.063800e+02
-8 16025     1.681500e+02 4.276999e+01
-3 16026     7.338400e+02 -2.114900e+02
-7 16026     7.641801e+02 1.896800e+02
-3 16027     5.464001e+01 -2.148400e+02
-4 16027     -2.259200e+02 -4.374200e+02
-6 16027     -3.103003e+01 1.100200e+02
-12 16027     -9.409973e+00 1.636300e+02
-3 16028     1.820300e+02 -2.163800e+02
-10 16028     6.789001e+01 1.974100e+02
-15 16028     1.538101e+02 2.060200e+02
-3 16029     3.661700e+02 -2.163100e+02
-9 16029     2.912300e+02 1.804200e+02
-10 16029     5.867100e+02 3.433900e+02
-13 16029     8.014800e+02 -9.373999e+01
-3 16030     5.510999e+01 -2.349600e+02
-4 16030     -2.386300e+02 -4.304900e+02
-6 16030     -3.108002e+01 8.535999e+01
-7 16030     -7.063000e+01 1.681400e+02
-9 16030     1.410999e+01 1.553200e+02
-13 16030     3.855500e+02 -1.758700e+02
-3 16031     5.510999e+01 -2.349600e+02
-4 16031     -2.386300e+02 -4.304900e+02
-7 16031     -7.063000e+01 1.681400e+02
-3 16032     -5.712000e+01 -2.451400e+02
-5 16032     5.551700e+02 -5.758500e+02
-8 16032     6.128003e+01 1.554001e+01
-13 16032     3.071500e+02 -1.555500e+02
-3 16033     -1.213400e+02 -2.926700e+02
-8 16033     1.152002e+01 -1.891000e+01
-3 16034     -6.808002e+01 -3.065500e+02
-6 16034     -1.630800e+02 1.901001e+01
-8 16034     4.963000e+01 -3.670001e+01
-12 16034     -1.392300e+02 7.514001e+01
-3 16035     2.553500e+02 -3.397200e+02
-7 16035     9.594000e+01 4.428998e+01
-15 16035     2.018199e+02 2.587000e+01
-3 16036     -5.802600e+02 -3.569100e+02
-9 16036     -6.097100e+02 1.989990e+00
-3 16037     1.347500e+02 -4.022900e+02
-6 16037     3.953003e+01 -1.158100e+02
-10 16037     -5.685999e+01 -4.080017e+00
-12 16037     4.513000e+01 -6.546997e+01
-3 16038     -1.634998e+01 -4.614800e+02
-7 16038     -1.834200e+02 -4.033002e+01
-8 16038     7.221002e+01 -1.737400e+02
-10 16038     -2.155400e+02 -2.371002e+01
-12 16038     -1.281700e+02 -1.202000e+02
-15 16038     -1.757400e+02 -5.696002e+01
-3 16039     6.245001e+01 -4.698400e+02
-8 16039     1.355600e+02 -1.854200e+02
-3 16040     7.604999e+01 -4.704900e+02
-8 16040     1.461400e+02 -1.868300e+02
-3 16041     1.325100e+02 -5.554500e+02
-6 16041     2.134998e+01 -2.744600e+02
-7 16041     -7.128003e+01 -1.371600e+02
-8 16041     1.909500e+02 -2.577200e+02
-12 16041     1.958002e+01 -2.265400e+02
-13 16041     3.745699e+02 -4.424800e+02
-3 16042     -1.492100e+02 -5.647900e+02
-6 16042     -2.506500e+02 -2.389200e+02
-3 16043     -4.514500e+02 -5.790400e+02
-9 16043     -4.026800e+02 -1.447000e+02
-3 16044     -4.562300e+02 -5.895100e+02
-7 16044     -3.943200e+02 2.082001e+01
-9 16044     -4.060700e+02 -1.529300e+02
-13 16044     4.602002e+01 -2.848800e+02
-3 16045     -2.624800e+02 2.426200e+02
-11 16045     3.199500e+02 3.119995e+00
-13 16045     3.528400e+02 4.391300e+02
-3 16046     -4.083700e+02 2.210100e+02
-4 16046     1.706300e+02 -4.004700e+02
-8 16046     -1.562800e+02 4.330100e+02
-11 16046     1.595100e+02 -3.745001e+01
-3 16047     -6.899500e+02 2.002400e+02
-4 16047     1.604800e+02 -2.173900e+02
-5 16047     1.424600e+02 8.532001e+01
-13 16047     -3.259003e+01 3.499500e+02
-14 16047     5.154999e+01 -1.228998e+01
-3 16048     -7.845700e+02 1.957300e+02
-4 16048     1.583600e+02 -1.670600e+02
-5 16048     5.492999e+01 7.294000e+01
-13 16048     -1.056700e+02 3.359400e+02
-3 16049     -3.559998e+00 9.032001e+01
-9 16049     -2.817999e+01 4.510000e+02
-14 16049     8.326500e+02 -4.748999e+01
-3 16050     5.223700e+02 -9.884003e+01
-7 16050     5.882200e+02 3.609100e+02
-9 16050     4.280699e+02 2.851000e+02
-10 16050     7.825800e+02 4.060500e+02
-3 16051     -5.697998e+01 -2.051000e+02
-5 16051     5.723500e+02 -5.256600e+02
-13 16051     3.200200e+02 -1.159200e+02
-3 16052     -1.104000e+02 -2.721200e+02
-8 16052     2.054999e+01 -3.369995e+00
-3 16053     -6.302600e+02 -3.918400e+02
-9 16053     -6.544300e+02 -3.290002e+01
-3 16054     -5.743000e+02 -4.835300e+02
-9 16054     -5.885300e+02 -1.048700e+02
-3 16055     -1.123400e+02 -5.456000e+02
-9 16055     -1.270700e+02 -1.127800e+02
-3 16056     2.403003e+01 -5.698700e+02
-7 16056     -1.481700e+02 -1.243300e+02
-10 16056     -1.795800e+02 -1.187400e+02
-15 16056     -1.317000e+02 -1.672100e+02
-3 16057     3.194700e+02 1.365500e+02
-8 16057     4.464700e+02 3.565400e+02
-9 16057     2.526600e+02 4.969200e+02
-3 16058     -2.168800e+02 1.070200e+02
-4 16058     9.906000e+01 -5.413800e+02
-6 16058     -2.228200e+02 7.744400e+02
-8 16058     1.877002e+01 3.393700e+02
-13 16058     3.919100e+02 3.289300e+02
-3 16059     -5.567999e+01 6.369995e+00
-6 16059     -7.659973e+00 7.020400e+02
-8 16059     1.588700e+02 2.698000e+02
-9 16059     -7.490997e+01 3.733800e+02
-13 16059     5.488600e+02 2.597700e+02
-14 16059     7.528800e+02 -1.395600e+02
-3 16060     -3.954100e+02 8.099976e-01
-4 16060     5.108002e+01 -3.845700e+02
-6 16060     -4.542900e+02 6.131800e+02
-11 16060     1.710700e+02 -2.074500e+02
-12 16060     -2.807900e+02 5.898200e+02
-3 16061     -9.557001e+01 -6.416998e+01
-11 16061     5.054900e+02 -2.393000e+02
-3 16062     -3.093400e+02 -1.237000e+02
-4 16062     -1.996997e+01 -4.348400e+02
-8 16062     -6.285999e+01 1.600500e+02
-13 16062     2.894500e+02 1.369800e+02
-3 16063     -2.960600e+02 -1.608800e+02
-13 16063     2.987500e+02 1.080400e+02
-14 16063     4.471700e+02 -3.164000e+02
-3 16064     1.022100e+02 -2.364200e+02
-4 16064     -2.551500e+02 -4.581899e+02
-6 16064     1.737000e+01 7.657001e+01
-8 16064     1.917500e+02 1.475000e+01
-12 16064     3.390002e+01 1.299600e+02
-15 16064     3.635999e+01 1.934600e+02
-3 16065     1.220900e+02 -4.786000e+02
-15 16065     -5.860999e+01 -1.268700e+02
-3 16066     -3.132000e+02 2.658400e+02
-13 16066     3.031200e+02 4.527000e+02
-14 16066     4.498101e+02 9.320001e+01
-3 16067     -1.107900e+02 1.696997e+01
-11 16067     4.863199e+02 -1.737700e+02
-3 16068     2.131100e+02 -2.374100e+02
-6 16068     1.420700e+02 7.963000e+01
-8 16068     2.877800e+02 1.113000e+01
-12 16068     1.628100e+02 1.267600e+02
-3 16069     6.440002e+00 -3.142900e+02
-7 16069     -1.260900e+02 1.020300e+02
-3 16070     -6.251400e+02 -3.467200e+02
-9 16070     -6.566400e+02 7.609985e+00
-3 16071     7.064001e+01 -3.930300e+02
-7 16071     -9.669000e+01 1.427002e+01
-3 16072     7.327500e+02 -3.999500e+02
-7 16072     7.146899e+02 2.878998e+01
-3 16073     3.347200e+02 -5.010000e+02
-8 16073     3.725700e+02 -2.224200e+02
-3 16074     3.347200e+02 -5.010000e+02
-6 16074     2.489500e+02 -2.195601e+02
-8 16074     3.725700e+02 -2.224200e+02
-3 16075     -1.470900e+02 -5.677000e+02
-4 16075     -3.501200e+02 -2.608000e+02
-8 16075     -2.490002e+01 -2.453900e+02
-9 16075     -1.535800e+02 -1.320200e+02
-3 16076     -3.339300e+02 2.355900e+02
-4 16076     1.794600e+02 -4.593000e+02
-13 16076     2.830500e+02 4.250900e+02
-14 16076     4.261700e+02 6.410999e+01
-3 16077     -6.091100e+02 -3.819300e+02
-9 16077     -6.352800e+02 -2.034003e+01
-3 16078     -1.990000e+02 4.556000e+01
-4 16078     6.338000e+01 -5.461300e+02
-5 16078     6.771700e+02 -2.888000e+01
-6 16078     -2.012500e+02 7.129300e+02
-8 16078     3.227002e+01 2.979100e+02
-13 16078     4.065400e+02 2.801900e+02
-3 16079     -4.919983e+00 -2.764600e+02
-6 16079     -1.018100e+02 5.303003e+01
-7 16079     -1.287000e+02 1.501700e+02
-8 16079     9.648999e+01 -8.029999e+00
-12 16079     -8.314001e+01 1.092900e+02
-13 16079     3.327000e+02 -1.903200e+02
-3 16080     -3.745100e+02 1.798300e+02
-11 16080     1.953300e+02 -6.933002e+01
-13 16080     2.346100e+02 3.747600e+02
-14 16080     3.709000e+02 4.609985e+00
-3 16081     -6.375900e+02 1.320000e+02
-8 16081     -3.474800e+02 3.540400e+02
-3 16082     -2.707300e+02 3.589001e+01
-4 16082     6.427002e+01 -4.895500e+02
-3 16083     -5.355800e+02 1.742700e+02
-11 16083     4.167999e+01 -7.515002e+01
-4 16084     6.844000e+01 3.584500e+02
-5 16084     -6.110700e+02 -3.201400e+02
-4 16085     -1.616900e+02 3.554600e+02
-13 16085     -5.394600e+02 -3.663900e+02
-4 16086     2.594000e+01 9.113000e+01
-11 16086     -5.175800e+02 -3.112600e+02
-13 16086     -5.301400e+02 7.092999e+01
-14 16086     -5.659600e+02 -3.136100e+02
-4 16087     2.702002e+01 8.595999e+01
-11 16087     -5.081700e+02 -3.101000e+02
-13 16087     -5.214900e+02 7.402002e+01
-14 16087     -5.550800e+02 -3.103500e+02
-4 16088     7.702002e+01 6.954999e+01
-13 16088     -5.183300e+02 1.651300e+02
-14 16088     -5.381900e+02 -2.007400e+02
-4 16089     2.067500e+02 5.623999e+01
-5 16089     -4.394800e+02 1.593000e+02
-13 16089     -5.253000e+02 3.863900e+02
-4 16090     1.849399e+02 3.525000e+01
-5 16090     -3.788500e+02 1.107900e+02
-14 16090     -4.568300e+02 7.679993e+00
-4 16091     4.003003e+01 3.382001e+01
-5 16091     -3.562200e+02 -1.742000e+02
-4 16092     2.161500e+02 2.640002e+01
-5 16092     -3.687700e+02 1.775100e+02
-13 16092     -4.670500e+02 4.050100e+02
-14 16092     -4.472500e+02 7.275000e+01
-4 16093     1.546300e+02 2.437000e+01
-5 16093     -3.429800e+02 4.959998e+01
-13 16093     -4.342200e+02 2.966900e+02
-4 16094     2.008600e+02 2.057001e+01
-5 16094     -3.358600e+02 1.379900e+02
-4 16095     1.829200e+02 1.910999e+01
-5 16095     -3.312800e+02 1.047000e+02
-4 16096     1.262100e+02 1.692999e+01
-5 16096     -3.186300e+02 -7.070007e+00
-13 16096     -4.090400e+02 2.499900e+02
-14 16096     -3.981500e+02 -1.082700e+02
-4 16097     2.835000e+02 1.533002e+01
-5 16097     -3.773300e+02 3.183500e+02
-4 16098     -5.919983e+00 1.000000e+01
-13 16098     -3.558800e+02 3.723999e+01
-14 16098     -3.598700e+02 -3.677900e+02
-4 16099     8.451001e+01 5.609985e+00
-5 16099     -2.811900e+02 -8.877002e+01
-4 16100     2.451700e+02 -2.880005e+00
-14 16100     -3.961900e+02 1.312600e+02
-4 16101     2.451700e+02 -2.880005e+00
-11 16101     -4.019600e+02 3.859000e+01
-14 16101     -3.961900e+02 1.312600e+02
-4 16102     2.360400e+02 -5.429993e+00
-11 16102     -3.957800e+02 4.145001e+01
-13 16102     -4.202600e+02 4.462700e+02
-4 16103     2.405100e+02 -8.679993e+00
-5 16103     -3.046700e+02 2.289500e+02
-13 16103     -4.158300e+02 4.525300e+02
-14 16103     -3.834100e+02 1.231300e+02
-4 16104     2.537900e+02 -8.989990e+00
-5 16104     -3.085300e+02 2.554600e+02
-11 16104     -3.921900e+02 5.250000e+01
-13 16104     -4.212700e+02 4.758700e+02
-14 16104     -3.868700e+02 1.492200e+02
-4 16105     1.535200e+02 -1.069000e+01
-5 16105     -2.454000e+02 4.085999e+01
-13 16105     -3.537200e+02 2.946500e+02
-14 16105     -3.283300e+02 -6.020001e+01
-4 16106     1.535200e+02 -1.069000e+01
-5 16106     -2.454000e+02 4.085999e+01
-13 16106     -3.537200e+02 2.946500e+02
-14 16106     -3.283300e+02 -6.020001e+01
-4 16107     6.771997e+01 -1.346002e+01
-5 16107     -2.262600e+02 -1.252600e+02
-4 16108     1.442300e+02 -1.341998e+01
-5 16108     -2.364300e+02 2.272998e+01
-4 16109     2.969301e+02 -2.207001e+01
-5 16109     -2.960500e+02 3.426200e+02
-11 16109     -3.702000e+02 1.193900e+02
-4 16110     -1.535999e+01 -2.390002e+01
-13 16110     -2.804500e+02 2.747998e+01
-14 16110     -2.690300e+02 -3.851000e+02
-4 16111     1.668300e+02 -2.932001e+01
-5 16111     -1.991200e+02 6.371002e+01
-13 16111     -3.164600e+02 3.157300e+02
-14 16111     -2.826000e+02 -3.794000e+01
-4 16112     2.565100e+02 -3.012000e+01
-5 16112     -2.601500e+02 2.595900e+02
-13 16112     -3.804300e+02 4.819500e+02
-14 16112     -3.400100e+02 1.533600e+02
-4 16113     2.368600e+02 -3.087000e+01
-11 16113     -3.429000e+02 1.871002e+01
-4 16114     7.602002e+01 -3.228003e+01
-11 16114     -3.805500e+02 -2.388600e+02
-4 16115     2.553000e+02 -3.460999e+01
-5 16115     -2.505200e+02 2.569300e+02
-13 16115     -3.719400e+02 4.803000e+02
-14 16115     -3.304300e+02 1.511800e+02
-4 16116     1.080017e+00 -3.557001e+01
-5 16116     -1.669200e+02 -2.528300e+02
-11 16116     -3.549900e+02 -3.531300e+02
-4 16117     2.571801e+02 -3.707001e+01
-5 16117     -2.468800e+02 2.613800e+02
-11 16117     -3.565100e+02 5.767001e+01
-4 16118     -2.895001e+01 -3.865997e+01
-5 16118     -1.570800e+02 -3.101700e+02
-7 16118     -7.712200e+02 3.413400e+02
-11 16118     -3.449000e+02 -3.998200e+02
-4 16119     1.383300e+02 -3.891998e+01
-5 16119     -1.786900e+02 1.192999e+01
-14 16119     -2.633000e+02 -8.722998e+01
-4 16120     1.671100e+02 -4.142999e+01
-5 16120     -1.765200e+02 6.653003e+01
-4 16121     2.498199e+02 -4.353998e+01
-5 16121     -2.313700e+02 2.320000e+02
-13 16121     -3.535300e+02 4.598100e+02
-4 16122     -4.848999e+01 -4.516998e+01
-11 16122     -3.304200e+02 -4.298900e+02
-14 16122     -2.224500e+02 -4.429301e+02
-15 16122     -7.987600e+02 4.925200e+02
-4 16123     1.816600e+02 -4.540997e+01
-13 16123     -3.009300e+02 3.452500e+02
-14 16123     -2.618600e+02 -4.859985e+00
-4 16124     2.890900e+02 -4.609003e+01
-5 16124     -2.331400e+02 3.219900e+02
-13 16124     -3.626400e+02 5.381700e+02
-14 16124     -3.137900e+02 2.139900e+02
-4 16125     -1.923999e+01 -4.657001e+01
-11 16125     -3.339900e+02 -3.826800e+02
-13 16125     -2.440500e+02 2.959003e+01
-14 16125     -2.241100e+02 -3.853000e+02
-15 16125     -8.235300e+02 5.651900e+02
-4 16126     -3.695900e+02 -4.813000e+01
-7 16126     -5.535600e+02 -2.269900e+02
-4 16127     -6.727002e+01 -4.892999e+01
-5 16127     -1.314100e+02 -3.821800e+02
-4 16128     3.098000e+02 -4.923999e+01
-5 16128     -2.283000e+02 3.599100e+02
-4 16129     -3.589800e+02 -5.120001e+01
-7 16129     -5.550100e+02 -2.095800e+02
-4 16130     2.626600e+02 -5.076001e+01
-11 16130     -3.349700e+02 6.739001e+01
-13 16130     -3.464200e+02 4.959200e+02
-14 16130     -2.998500e+02 1.668900e+02
-4 16131     2.585900e+02 -5.152002e+01
-11 16131     -3.337700e+02 6.106000e+01
-13 16131     -3.449200e+02 4.890000e+02
-14 16131     -2.987500e+02 1.596500e+02
-4 16132     -3.665400e+02 -5.228998e+01
-7 16132     -5.486500e+02 -2.201200e+02
-4 16133     1.921000e+02 -5.283002e+01
-11 16133     -3.604800e+02 -5.645001e+01
-4 16134     2.575200e+02 -5.569000e+01
-5 16134     -2.104500e+02 2.641800e+02
-14 16134     -2.906800e+02 1.584200e+02
-4 16135     2.781300e+02 -5.571002e+01
-5 16135     -2.127700e+02 3.023300e+02
-11 16135     -3.295600e+02 9.014001e+01
-13 16135     -3.427100e+02 5.215900e+02
-14 16135     -2.932400e+02 1.950800e+02
-4 16136     2.781300e+02 -5.571002e+01
-5 16136     -2.127700e+02 3.023300e+02
-4 16137     -4.065997e+01 -5.652002e+01
-5 16137     -1.211800e+02 -3.285100e+02
-8 16137     -5.866800e+02 1.710999e+01
-4 16138     -6.640997e+01 -5.759998e+01
-14 16138     -1.959600e+02 -4.735900e+02
-4 16139     2.623000e+02 -5.831000e+01
-5 16139     -2.054300e+02 2.731200e+02
-11 16139     -3.236800e+02 6.738000e+01
-14 16139     -2.866400e+02 1.670900e+02
-4 16140     -8.594000e+01 -5.963000e+01
-7 16140     -6.897700e+02 2.492200e+02
-10 16140     -7.079000e+02 3.911400e+02
-11 16140     -2.960900e+02 -4.857300e+02
-13 16140     -2.067600e+02 -6.873999e+01
-14 16140     -1.873300e+02 -5.117000e+02
-4 16141     4.551001e+01 -6.210999e+01
-5 16141     -1.226900e+02 -1.603400e+02
-4 16142     2.896500e+02 -6.520001e+01
-5 16142     -2.030300e+02 3.172300e+02
-4 16143     3.075000e+01 -6.597998e+01
-5 16143     -1.126000e+02 -1.873000e+02
-13 16143     -2.267700e+02 1.131300e+02
-14 16143     -1.955900e+02 -2.830600e+02
-4 16144     -2.109998e+01 -6.640997e+01
-5 16144     -1.046800e+02 -2.874300e+02
-4 16145     6.348999e+01 -6.651001e+01
-5 16145     -1.168700e+02 -1.249400e+02
-13 16145     -2.341300e+02 1.639500e+02
-4 16146     2.187700e+02 -6.675000e+01
-14 16146     -2.332000e+02 6.859003e+01
-4 16147     2.371000e+02 -6.907001e+01
-5 16147     -1.525900e+02 2.109400e+02
-11 16147     -3.300200e+02 1.772998e+01
-13 16147     -2.881500e+02 4.440600e+02
-14 16147     -2.381900e+02 1.063600e+02
-4 16148     8.266998e+01 -7.146002e+01
-5 16148     -1.099300e+02 -8.739001e+01
-7 16148     -7.916800e+02 5.775000e+02
-13 16148     -2.314900e+02 1.955000e+02
-14 16148     -1.938800e+02 -1.837700e+02
-4 16149     1.920000e+02 -7.253003e+01
-11 16149     -3.242100e+02 -4.359998e+01
-4 16150     1.678800e+02 -7.500000e+01
-5 16150     -1.135800e+02 7.379999e+01
-4 16151     -3.096997e+01 -7.588000e+01
-5 16151     -8.465002e+01 -3.045200e+02
-8 16151     -5.548600e+02 4.417001e+01
-4 16152     2.267700e+02 -7.696997e+01
-5 16152     -1.312000e+02 1.908700e+02
-11 16152     -3.216700e+02 1.659973e+00
-13 16152     -2.698500e+02 4.279100e+02
-14 16152     -2.184100e+02 8.729001e+01
-4 16153     2.463500e+02 -7.778003e+01
-5 16153     -1.411200e+02 2.318700e+02
-11 16153     -3.155000e+02 3.429001e+01
-13 16153     -2.788000e+02 4.629300e+02
-14 16153     -2.255300e+02 1.269200e+02
-4 16154     1.829500e+02 -7.826001e+01
-11 16154     -3.213400e+02 -6.682001e+01
-4 16155     1.157400e+02 -7.883002e+01
-14 16155     -1.850200e+02 -1.302700e+02
-4 16156     1.551100e+02 -8.092999e+01
-5 16156     -1.018300e+02 5.165002e+01
-4 16157     2.359399e+02 -8.378998e+01
-5 16157     -1.221200e+02 2.097700e+02
-11 16157     -3.111300e+02 1.725000e+01
-13 16157     -2.630800e+02 4.454600e+02
-4 16158     1.584000e+02 -8.434998e+01
-5 16158     -9.577002e+01 5.890997e+01
-11 16158     -3.100200e+02 -1.040200e+02
-13 16158     -2.303300e+02 3.172500e+02
-14 16158     -1.817700e+02 -4.098999e+01
-4 16159     -1.696000e+02 -8.482001e+01
-13 16159     -1.309600e+02 -1.883000e+02
-4 16160     1.544500e+02 -8.613000e+01
-8 16160     -5.765700e+02 3.855000e+02
-13 16160     -2.269700e+02 3.112600e+02
-4 16161     1.764301e+02 -8.656000e+01
-11 16161     -3.085400e+02 -7.609003e+01
-4 16162     -1.934998e+01 -8.823999e+01
-8 16162     -5.408200e+02 6.717999e+01
-12 16162     -8.166100e+02 2.857500e+02
-4 16163     1.923700e+02 -8.870001e+01
-11 16163     -3.045100e+02 -5.129999e+01
-4 16164     -1.909998e+01 -9.352002e+01
-5 16164     -5.487000e+01 -2.774200e+02
-7 16164     -6.716100e+02 3.887000e+02
-8 16164     -5.308500e+02 6.960999e+01
-11 16164     -2.569800e+02 -3.734300e+02
-12 16164     -8.052000e+02 2.899200e+02
-13 16164     -1.732300e+02 4.454999e+01
-4 16165     9.387000e+01 -9.371997e+01
-11 16165     -2.822900e+02 -1.990700e+02
-4 16166     1.636500e+02 -9.404999e+01
-11 16166     -3.176400e+02 -9.791998e+01
-4 16167     -3.869995e+00 -9.488000e+01
-8 16167     -5.355900e+02 9.741000e+01
-12 16167     -8.143900e+02 3.253000e+02
-4 16168     -3.869995e+00 -9.488000e+01
-8 16168     -5.355900e+02 9.741000e+01
-12 16168     -8.143900e+02 3.253000e+02
-4 16169     1.444301e+02 -9.741998e+01
-5 16169     -6.989001e+01 3.412000e+01
-4 16170     2.284600e+02 -9.816998e+01
-11 16170     -2.810400e+02 8.320007e+00
-4 16171     -7.700195e-01 -9.951001e+01
-8 16171     -5.290800e+02 1.049500e+02
-10 16171     -6.842600e+02 5.933400e+02
-11 16171     -2.512500e+02 -3.424200e+02
-13 16171     -1.687700e+02 7.514001e+01
-14 16171     -1.290400e+02 -3.335800e+02
-4 16172     9.159998e+01 -1.041700e+02
-13 16172     -1.845400e+02 2.208200e+02
-14 16172     -1.356500e+02 -1.569700e+02
-4 16173     -4.367800e+02 -1.050400e+02
-6 16173     -4.534400e+02 -5.490100e+02
-7 16173     -4.353400e+02 -2.828500e+02
-10 16173     -4.997100e+02 -2.574300e+02
-4 16174     2.677900e+02 -1.050900e+02
-11 16174     -2.781100e+02 7.148001e+01
-4 16175     2.590000e+02 -1.061400e+02
-11 16175     -2.759500e+02 5.539999e+01
-13 16175     -2.371800e+02 4.878800e+02
-4 16176     2.708700e+02 -1.060200e+02
-5 16176     -9.360999e+01 2.804800e+02
-11 16176     -2.755600e+02 7.351999e+01
-4 16177     2.642000e+02 -1.087000e+02
-11 16177     -2.724800e+02 6.437000e+01
-4 16178     3.044100e+02 -1.158000e+02
-5 16178     -1.100400e+02 3.603100e+02
-14 16178     -1.919100e+02 2.516800e+02
-4 16179     1.724600e+02 -1.160300e+02
-11 16179     -2.714100e+02 -7.954999e+01
-4 16180     -6.584003e+01 -1.164500e+02
-7 16180     -5.982100e+02 3.172600e+02
-8 16180     -4.770200e+02 -4.700012e+00
-12 16180     -7.200200e+02 2.053400e+02
-15 16180     -6.048000e+02 4.989300e+02
-4 16181     -1.015997e+01 -1.180700e+02
-7 16181     -6.308300e+02 4.182200e+02
-8 16181     -4.942800e+02 9.370999e+01
-10 16181     -6.358200e+02 5.807800e+02
-11 16181     -2.198600e+02 -3.545800e+02
-12 16181     -7.581900e+02 3.258300e+02
-4 16182     1.050500e+02 -1.187300e+02
-11 16182     -2.448400e+02 -1.775300e+02
-13 16182     -1.652400e+02 2.422500e+02
-14 16182     -1.112700e+02 -1.315200e+02
-4 16183     1.050500e+02 -1.187300e+02
-11 16183     -2.448400e+02 -1.775300e+02
-13 16183     -1.652400e+02 2.422500e+02
-14 16183     -1.112700e+02 -1.315200e+02
-4 16184     -2.618500e+02 -1.189700e+02
-8 16184     -3.223200e+02 -2.631100e+02
-15 16184     -5.194700e+02 3.271997e+01
-4 16185     2.974000e+02 -1.202000e+02
-13 16185     -2.475700e+02 5.658600e+02
-14 16185     -1.817300e+02 2.387600e+02
-4 16186     2.934800e+02 -1.221900e+02
-5 16186     -9.450000e+01 3.397100e+02
-13 16186     -2.427700e+02 5.598700e+02
-14 16186     -1.767600e+02 2.320400e+02
-4 16187     -4.810600e+02 -1.245200e+02
-9 16187     -2.387900e+02 -4.119700e+02
-4 16188     1.175600e+02 -1.244700e+02
-11 16188     -2.379400e+02 -1.574200e+02
-4 16189     -2.754800e+02 -1.257100e+02
-15 16189     -5.014000e+02 7.640015e+00
-4 16190     -2.623500e+02 -1.262700e+02
-7 16190     -4.812300e+02 -1.329999e+01
-8 16190     -3.105400e+02 -2.584100e+02
-9 16190     -4.842200e+02 -1.913600e+02
-10 16190     -5.086000e+02 6.069000e+01
-13 16190     -2.595001e+01 -3.061800e+02
-15 16190     -5.041300e+02 3.675000e+01
-4 16191     2.759100e+02 -1.290600e+02
-5 16191     -5.276001e+01 2.929900e+02
-13 16191     -2.079200e+02 5.205500e+02
-4 16192     2.207001e+01 -1.378700e+02
-8 16192     -4.741600e+02 1.565900e+02
-4 16193     1.624600e+02 -1.378100e+02
-5 16193     1.750000e+00 7.485999e+01
-13 16193     -1.501700e+02 3.352800e+02
-14 16193     -8.662000e+01 -2.415002e+01
-4 16194     3.076500e+02 -1.383100e+02
-11 16194     -2.031000e+02 1.479500e+02
-14 16194     -1.542200e+02 2.610000e+02
-4 16195     -2.700500e+02 -1.385700e+02
-7 16195     -4.580500e+02 -1.838000e+01
-10 16195     -4.838100e+02 5.278003e+01
-4 16196     3.125800e+02 -1.400300e+02
-5 16196     -7.008002e+01 3.794400e+02
-14 16196     -1.524100e+02 2.694500e+02
-4 16197     -1.277700e+02 -1.427300e+02
-7 16197     -5.180000e+02 2.218800e+02
-10 16197     -5.119200e+02 3.456500e+02
-4 16198     1.338500e+02 -1.439000e+02
-13 16198     -1.339200e+02 2.933700e+02
-4 16199     2.494200e+02 -1.444000e+02
-11 16199     -2.177200e+02 4.709000e+01
-4 16200     2.494200e+02 -1.444000e+02
-5 16200     -1.769000e+01 2.459400e+02
-11 16200     -2.177200e+02 4.709000e+01
-4 16201     -5.407001e+01 -1.477400e+02
-8 16201     -4.322200e+02 2.738000e+01
-4 16202     -1.846400e+02 -1.568500e+02
-10 16202     -4.701300e+02 2.318400e+02
-4 16203     -5.425700e+02 -1.573000e+02
-6 16203     -2.614600e+02 -6.403600e+02
-15 16203     -3.731800e+02 -4.826000e+02
-4 16204     1.439200e+02 -1.587500e+02
-5 16204     4.150000e+01 4.391998e+01
-13 16204     -1.149300e+02 3.119700e+02
-14 16204     -4.679999e+01 -5.319000e+01
-4 16205     9.372998e+01 -1.593400e+02
-11 16205     -1.777500e+02 -1.873200e+02
-4 16206     1.407500e+02 -1.601300e+02
-8 16206     -4.794000e+02 3.671800e+02
-11 16206     -1.882000e+02 -1.181100e+02
-13 16206     -1.120400e+02 3.075000e+02
-14 16206     -4.407001e+01 -5.817999e+01
-4 16207     2.971100e+02 -1.620700e+02
-5 16207     -2.345001e+01 3.507500e+02
-11 16207     -1.659500e+02 1.317200e+02
-13 16207     -1.828100e+02 5.724400e+02
-4 16208     3.122200e+02 -1.626100e+02
-5 16208     -2.919000e+01 3.813300e+02
-14 16208     -1.131100e+02 2.721600e+02
-4 16209     -2.096100e+02 -1.639600e+02
-13 16209     1.799988e+00 -2.178000e+02
-4 16210     -2.293400e+02 -1.701200e+02
-10 16210     -4.353800e+02 1.492900e+02
-4 16211     -5.430000e+02 -1.731300e+02
-12 16211     -2.482100e+02 -5.548700e+02
-4 16212     -7.122800e+02 -1.740700e+02
-7 16212     -2.413300e+02 -5.616400e+02
-4 16213     3.127900e+02 -1.801100e+02
-11 16213     -1.374300e+02 1.556000e+02
-14 16213     -2.953998e+01 2.785700e+02
-4 16214     3.127900e+02 -1.801100e+02
-11 16214     -1.374300e+02 1.556000e+02
-14 16214     -8.292999e+01 2.752800e+02
-4 16215     1.117999e+01 -1.804400e+02
-11 16215     -1.242000e+02 -3.072400e+02
-4 16216     -5.209998e+01 -1.836400e+02
-10 16216     -4.646200e+02 5.247600e+02
-4 16217     3.005900e+02 -1.875800e+02
-5 16217     2.140997e+01 3.594900e+02
-11 16217     -1.277000e+02 1.396100e+02
-4 16218     3.304999e+01 -1.884100e+02
-5 16218     1.104700e+02 -1.553400e+02
-8 16218     -4.000400e+02 1.881000e+02
-4 16219     -7.454400e+02 -1.927200e+02
-7 16219     -2.081700e+02 -5.835699e+02
-4 16220     -2.264700e+02 -1.938200e+02
-7 16220     -3.886400e+02 8.476001e+01
-10 16220     -3.898900e+02 1.682600e+02
-15 16220     -3.671200e+02 1.612100e+02
-4 16221     -2.264700e+02 -1.938200e+02
-7 16221     -3.886400e+02 8.476001e+01
-4 16222     8.578998e+01 -1.972400e+02
-5 16222     1.186900e+02 -5.510999e+01
-12 16222     -6.589200e+02 5.818900e+02
-4 16223     2.941200e+02 -2.008100e+02
-11 16223     -1.087000e+02 1.316900e+02
-14 16223     -4.010999e+01 2.423600e+02
-4 16224     8.647998e+01 -2.024000e+02
-5 16224     1.275900e+02 -5.316998e+01
-8 16224     -3.958900e+02 2.815000e+02
-4 16225     1.069500e+02 -2.028900e+02
-11 16225     -1.140800e+02 -1.589300e+02
-4 16226     1.474301e+02 -2.041400e+02
-5 16226     1.212000e+02 5.896002e+01
-8 16226     -4.122300e+02 3.842400e+02
-11 16226     -1.209700e+02 -1.003400e+02
-13 16226     -4.969000e+01 3.276200e+02
-14 16226     3.084998e+01 -3.745001e+01
-4 16227     -1.486800e+02 -2.050900e+02
-15 16227     -3.606200e+02 3.510600e+02
-4 16228     2.941700e+02 -2.054600e+02
-5 16228     5.494000e+01 3.495800e+02
-4 16229     -7.241900e+02 -2.160600e+02
-7 16229     -1.867800e+02 -5.465400e+02
-4 16230     -1.726001e+01 -2.160100e+02
-8 16230     -3.414200e+02 1.124800e+02
-4 16231     -7.635900e+02 -2.175400e+02
-9 16231     1.172700e+02 -5.601801e+02
-4 16232     8.292999e+01 -2.209100e+02
-5 16232     1.602700e+02 -5.578998e+01
-12 16232     -6.065900e+02 5.864200e+02
-4 16233     2.940699e+02 -2.285500e+02
-5 16233     9.647998e+01 3.503700e+02
-11 16233     -6.785999e+01 1.342600e+02
-4 16234     2.286801e+02 -2.360200e+02
-5 16234     1.575200e+02 2.122300e+02
-4 16235     1.115900e+02 -2.414600e+02
-13 16235     1.120001e+01 2.814200e+02
-4 16236     -6.509700e+02 -2.574500e+02
-7 16236     -1.579900e+02 -4.430000e+02
-9 16236     6.140997e+01 -4.453000e+02
-4 16237     1.030200e+02 -2.607200e+02
-5 16237     2.259100e+02 -1.160999e+01
-8 16237     -3.163800e+02 3.191500e+02
-4 16238     -7.519800e+02 -2.641700e+02
-7 16238     -1.227400e+02 -5.446700e+02
-4 16239     -2.872600e+02 -2.656700e+02
-7 16239     -2.741000e+02 2.085999e+01
-4 16240     -8.045700e+02 -2.662700e+02
-9 16240     1.882200e+02 -5.499700e+02
-4 16241     -7.502200e+02 -2.665900e+02
-9 16241     1.477300e+02 -5.113300e+02
-4 16242     -2.656300e+02 -2.663500e+02
-7 16242     -2.801800e+02 5.135999e+01
-4 16243     -2.365002e+01 -2.765100e+02
-8 16243     -2.556600e+02 1.183900e+02
-4 16244     -3.939800e+02 -2.772000e+02
-7 16244     -2.145300e+02 -1.224000e+02
-4 16245     -7.393200e+02 -2.833000e+02
-7 16245     -1.044600e+02 -5.197700e+02
-10 16245     -1.773400e+02 -5.708199e+02
-4 16246     -2.095700e+02 -2.833200e+02
-5 16246     3.921000e+02 -5.973101e+02
-10 16246     -2.813700e+02 2.143000e+02
-4 16247     -8.073500e+02 -2.859600e+02
-6 16247     1.074900e+02 -8.171200e+02
-7 16247     -8.428003e+01 -5.855900e+02
-4 16248     -3.266800e+02 -2.885900e+02
-6 16248     -1.938000e+02 -1.719301e+02
-4 16249     -6.945600e+02 -2.897300e+02
-9 16249     1.234800e+02 -4.538400e+02
-4 16250     -2.004700e+02 -2.903300e+02
-7 16250     -2.662800e+02 1.677300e+02
-13 16250     1.916100e+02 -1.653200e+02
-15 16250     -2.333000e+02 2.446700e+02
-4 16251     2.844301e+02 -2.910900e+02
-11 16251     -1.059998e+00 1.154200e+02
-4 16252     -3.376000e+02 -2.913800e+02
-7 16252     -2.224300e+02 -4.148999e+01
-4 16253     -2.145900e+02 -2.919700e+02
-5 16253     4.090000e+02 -6.041300e+02
-6 16253     -3.069800e+02 1.725000e+01
-12 16253     -2.584000e+02 7.283002e+01
-4 16254     -6.935700e+02 -2.938700e+02
-9 16254     1.260500e+02 -4.501000e+02
-4 16255     2.843101e+02 -2.957000e+02
-5 16255     2.341899e+02 3.237800e+02
-4 16256     -6.560600e+02 -2.969100e+02
-6 16256     1.477002e+01 -6.391300e+02
-4 16257     -7.541600e+02 -2.981700e+02
-9 16257     1.756899e+02 -4.901300e+02
-4 16258     3.735999e+01 -3.003400e+02
-8 16258     -2.430200e+02 2.208200e+02
-12 16258     -4.239300e+02 5.264400e+02
-4 16259     2.129999e+01 -3.022500e+02
-8 16259     -2.350400e+02 1.965600e+02
-4 16260     -6.620200e+02 -3.030600e+02
-9 16260     1.103100e+02 -4.201900e+02
-4 16261     -7.552200e+02 -3.036000e+02
-9 16261     1.809600e+02 -4.859700e+02
-4 16262     -1.382001e+01 -3.039700e+02
-11 16262     7.123999e+01 -3.181700e+02
-4 16263     2.066998e+01 -3.076200e+02
-6 16263     -5.800600e+02 5.029100e+02
-8 16263     -2.281200e+02 1.962700e+02
-12 16263     -4.009100e+02 4.957100e+02
-4 16264     -2.305700e+02 -3.129200e+02
-6 16264     -2.438400e+02 7.169983e+00
-7 16264     -2.266900e+02 1.296600e+02
-9 16264     -1.640600e+02 6.529999e+01
-10 16264     -2.369700e+02 1.825200e+02
-15 16264     -1.985000e+02 1.828900e+02
-4 16265     -6.133900e+02 -3.140800e+02
-15 16265     -9.195001e+01 -4.927100e+02
-4 16266     -1.924800e+02 -3.138000e+02
-5 16266     4.326899e+02 -5.562700e+02
-6 16266     -2.992700e+02 7.303003e+01
-13 16266     2.170500e+02 -1.468600e+02
-4 16267     -2.306200e+02 -3.165700e+02
-6 16267     -2.374600e+02 1.023999e+01
-10 16267     -2.307100e+02 1.842600e+02
-13 16267     2.398300e+02 -1.984200e+02
-4 16268     6.190002e+00 -3.216700e+02
-6 16268     -5.446800e+02 4.794700e+02
-8 16268     -2.061100e+02 1.760200e+02
-4 16269     -1.816400e+02 -3.223900e+02
-5 16269     4.412200e+02 -5.336200e+02
-6 16269     -2.977600e+02 9.862000e+01
-7 16269     -2.245500e+02 2.147700e+02
-8 16269     -5.175000e+01 -1.223001e+01
-12 16269     -2.312900e+02 1.474800e+02
-4 16270     2.215002e+01 -3.225800e+02
-6 16270     -5.515400e+02 5.151000e+02
-7 16270     -2.897800e+02 5.671000e+02
-12 16270     -3.738600e+02 5.059000e+02
-4 16271     1.723900e+02 -3.281200e+02
-13 16271     1.168800e+02 3.896200e+02
-14 16271     2.298500e+02 2.687000e+01
-4 16272     9.442999e+01 -3.386600e+02
-8 16272     -2.088600e+02 3.160000e+02
-4 16273     9.442999e+01 -3.386600e+02
-6 16273     -5.659300e+02 6.863900e+02
-11 16273     9.383002e+01 -1.536200e+02
-4 16274     -1.445700e+02 -3.392300e+02
-10 16274     -1.389100e+02 4.038600e+02
-4 16275     -1.371002e+01 -3.391900e+02
-11 16275     1.225200e+02 -3.096900e+02
-4 16276     -7.715500e+02 -3.445800e+02
-9 16276     2.234200e+02 -4.684600e+02
-4 16277     -1.796400e+02 -3.492000e+02
-5 16277     4.891200e+02 -5.228700e+02
-6 16277     -2.457200e+02 1.242100e+02
-7 16277     -1.881000e+02 2.293900e+02
-12 16277     -1.847600e+02 1.718400e+02
-13 16277     2.591000e+02 -1.185600e+02
-4 16278     -7.750200e+02 -3.528800e+02
-7 16278     -1.878998e+01 -5.133000e+02
-10 16278     -8.091998e+01 -5.743600e+02
-4 16279     9.059998e+00 -3.546300e+02
-11 16279     1.413200e+02 -2.730900e+02
-12 16279     -3.105900e+02 4.939800e+02
-4 16280     8.584003e+01 -3.549000e+02
-8 16280     -1.864400e+02 3.047500e+02
-4 16281     1.649600e+02 -3.549300e+02
-5 16281     3.703400e+02 1.127700e+02
-13 16281     1.532100e+02 3.844000e+02
-14 16281     2.723800e+02 1.956000e+01
-4 16282     2.453998e+01 -3.573600e+02
-6 16282     -4.891800e+02 5.405500e+02
-7 16282     -2.345600e+02 5.835600e+02
-9 16282     -4.066600e+02 3.055700e+02
-12 16282     -3.141700e+02 5.262800e+02
-4 16283     2.730601e+02 -3.573200e+02
-11 16283     9.026001e+01 1.031300e+02
-4 16284     -7.559900e+02 -3.579700e+02
-6 16284     1.513700e+02 -6.940500e+02
-7 16284     -1.769000e+01 -4.910300e+02
-10 16284     -7.509998e+01 -5.488600e+02
-4 16285     8.173999e+01 -3.606300e+02
-5 16285     3.941700e+02 -3.095001e+01
-6 16285     -5.170400e+02 6.687800e+02
-8 16285     -1.786400e+02 3.003500e+02
-11 16285     1.294700e+02 -1.671400e+02
-4 16286     2.708900e+02 -3.620800e+02
-5 16286     3.494100e+02 3.021300e+02
-13 16286     1.303900e+02 5.453800e+02
-14 16286     2.487100e+02 2.016000e+02
-4 16287     -7.581000e+02 -3.640800e+02
-7 16287     -1.056000e+01 -4.893400e+02
-9 16287     2.275800e+02 -4.458600e+02
-4 16288     2.798600e+02 -3.649800e+02
-5 16288     3.500699e+02 3.196400e+02
-11 16288     1.001100e+02 1.147700e+02
-4 16289     2.906200e+02 -3.668900e+02
-11 16289     1.022600e+02 1.308600e+02
-13 16289     1.297900e+02 5.770800e+02
-14 16289     2.485200e+02 2.366900e+02
-4 16290     -1.297400e+02 -3.676400e+02
-8 16290     -8.448999e+01 5.010010e+00
-13 16290     2.395400e+02 -3.490002e+01
-14 16290     3.733000e+02 -4.954700e+02
-4 16291     2.805601e+02 -3.680000e+02
-11 16291     1.029000e+02 1.171500e+02
-4 16292     2.704301e+02 -3.688400e+02
-11 16292     1.050500e+02 1.014500e+02
-4 16293     2.588199e+02 -3.696500e+02
-13 16293     1.447100e+02 5.268900e+02
-14 16293     2.648900e+02 1.809500e+02
-4 16294     2.732100e+02 -3.698900e+02
-5 16294     3.610200e+02 3.070800e+02
-11 16294     1.077400e+02 1.049900e+02
-13 16294     1.408000e+02 5.491000e+02
-14 16294     2.607300e+02 2.056400e+02
-4 16295     -2.012000e+01 -3.709000e+02
-6 16295     -4.400600e+02 4.528200e+02
-4 16296     -7.334200e+02 -3.713700e+02
-9 16296     2.151100e+02 -4.241800e+02
-10 16296     -5.853998e+01 -5.138900e+02
-4 16297     7.290002e+01 -3.714300e+02
-5 16297     4.127500e+02 -4.563000e+01
-11 16297     1.472500e+02 -1.782400e+02
-4 16298     -1.870700e+02 -3.722200e+02
-12 16298     -1.356600e+02 1.830300e+02
-4 16299     -7.358700e+02 -3.730500e+02
-9 16299     2.181899e+02 -4.247600e+02
-4 16300     -7.277000e+02 -3.741200e+02
-9 16300     2.132100e+02 -4.184000e+02
-4 16301     -7.277000e+02 -3.741200e+02
-7 16301     -5.700012e+00 -4.527100e+02
-9 16301     2.132100e+02 -4.184000e+02
-10 16301     -5.528003e+01 -5.055500e+02
-12 16301     1.319300e+02 -6.135699e+02
-4 16302     2.703400e+02 -3.752400e+02
-5 16302     3.699700e+02 3.028100e+02
-11 16302     1.133200e+02 1.028300e+02
-4 16303     2.751000e+02 -3.747100e+02
-5 16303     3.669301e+02 3.116600e+02
-4 16304     2.449500e+02 -3.765200e+02
-5 16304     3.821300e+02 2.561100e+02
-11 16304     1.171300e+02 6.559000e+01
-4 16305     2.882100e+02 -3.787100e+02
-5 16305     3.688000e+02 3.349100e+02
-11 16305     1.193500e+02 1.272300e+02
-13 16305     1.471500e+02 5.734000e+02
-14 16305     2.683800e+02 2.321700e+02
-4 16306     2.906801e+02 -3.800700e+02
-11 16306     1.204800e+02 1.315400e+02
-13 16306     1.474600e+02 5.777800e+02
-4 16307     2.810400e+02 -3.805500e+02
-11 16307     1.210800e+02 1.186200e+02
-13 16307     1.513101e+02 5.632800e+02
-14 16307     2.731700e+02 2.208300e+02
-4 16308     -3.350400e+02 -3.812100e+02
-6 16308     -4.262000e+01 -1.059100e+02
-8 16308     1.421500e+02 -1.214800e+02
-12 16308     -3.648999e+01 -5.235999e+01
-4 16309     2.535800e+02 -3.810400e+02
-5 16309     3.855500e+02 2.727000e+02
-11 16309     1.228400e+02 7.822000e+01
-13 16309     1.619600e+02 5.197700e+02
-14 16309     2.847900e+02 1.725400e+02
-4 16310     -1.074700e+02 -3.831600e+02
-11 16310     1.998900e+02 -4.446500e+02
-4 16311     1.520300e+02 -3.830400e+02
-5 16311     4.169600e+02 9.440002e+01
-14 16311     3.181200e+02 1.669983e+00
-4 16312     2.684998e+01 -3.839200e+02
-6 16312     -4.428400e+02 5.606900e+02
-11 16312     1.769100e+02 -2.415000e+02
-4 16313     2.485400e+02 -3.846800e+02
-5 16313     3.926899e+02 2.637900e+02
-11 16313     1.274400e+02 7.200000e+01
-4 16314     2.658300e+02 -3.845500e+02
-5 16314     3.859800e+02 2.952000e+02
-4 16315     2.541600e+02 -3.869700e+02
-11 16315     1.306600e+02 8.070001e+01
-14 16315     2.929500e+02 1.753200e+02
-4 16316     2.927700e+02 -3.878000e+02
-5 16316     3.809800e+02 3.441000e+02
-11 16316     1.314500e+02 1.353500e+02
-13 16316     1.573700e+02 5.816900e+02
-4 16317     2.954800e+02 -3.890400e+02
-5 16317     3.811801e+02 3.496200e+02
-4 16318     -1.263600e+02 -3.910800e+02
-9 16318     -2.709000e+02 1.011700e+02
-13 16318     2.664100e+02 -2.315002e+01
-14 16318     4.074500e+02 -4.814900e+02
-4 16319     2.582500e+02 -3.933800e+02
-5 16319     4.026600e+02 2.824300e+02
-13 16319     1.760200e+02 5.290600e+02
-14 16319     3.010300e+02 1.824400e+02
-4 16320     3.115300e+02 -3.932800e+02
-5 16320     3.781300e+02 3.821300e+02
-14 16320     2.778800e+02 2.778000e+02
-4 16321     2.802200e+02 -3.941600e+02
-5 16321     3.958000e+02 3.222300e+02
-4 16322     2.243199e+02 -3.945900e+02
-5 16322     4.170800e+02 2.211700e+02
-11 16322     1.418700e+02 3.745999e+01
-4 16323     2.243199e+02 -3.945900e+02
-5 16323     4.170800e+02 2.211700e+02
-11 16323     1.418700e+02 3.745999e+01
-4 16324     2.469301e+02 -3.947700e+02
-5 16324     4.090601e+02 2.619400e+02
-14 16324     3.072100e+02 1.630500e+02
-4 16325     4.650024e+00 -3.962900e+02
-8 16325     -1.135400e+02 1.901600e+02
-4 16326     2.354600e+02 -3.964400e+02
-5 16326     4.158500e+02 2.415400e+02
-4 16327     2.592300e+02 -3.963600e+02
-5 16327     4.073000e+02 2.841200e+02
-4 16328     2.950601e+02 -3.963500e+02
-5 16328     3.939200e+02 3.479400e+02
-13 16328     1.675601e+02 5.855500e+02
-4 16329     2.886500e+02 -3.971600e+02
-5 16329     3.974800e+02 3.372100e+02
-13 16329     1.711700e+02 5.765500e+02
-14 16329     2.960300e+02 2.349000e+02
-4 16330     -3.210900e+02 -3.990100e+02
-8 16330     1.522800e+02 -9.847998e+01
-4 16331     2.361899e+02 -3.992100e+02
-5 16331     4.200500e+02 2.429600e+02
-4 16332     1.013100e+02 -3.994100e+02
-6 16332     -4.584800e+02 7.300700e+02
-8 16332     -1.368700e+02 3.335900e+02
-11 16332     1.790300e+02 -1.325600e+02
-4 16333     2.901500e+02 -3.998400e+02
-11 16333     1.466300e+02 1.339200e+02
-4 16334     2.579800e+02 -4.003000e+02
-13 16334     1.848600e+02 5.296100e+02
-14 16334     3.116000e+02 1.823000e+02
-4 16335     2.848900e+02 -4.003500e+02
-11 16335     1.490300e+02 1.249800e+02
-13 16335     1.759700e+02 5.713400e+02
-14 16335     3.016200e+02 2.290600e+02
-4 16336     -1.339300e+02 -4.007600e+02
-5 16336     5.122400e+02 -4.111600e+02
-6 16336     -2.925200e+02 2.416700e+02
-13 16336     2.811200e+02 -3.134003e+01
-14 16336     4.261100e+02 -4.928600e+02
-4 16337     6.325000e+01 -4.011000e+02
-5 16337     4.610200e+02 -5.616998e+01
-6 16337     -4.338000e+02 6.477000e+02
-8 16337     -1.241800e+02 2.781800e+02
-11 16337     1.922400e+02 -1.862200e+02
-13 16337     2.326700e+02 2.480800e+02
-14 16337     3.659900e+02 -1.432300e+02
-4 16338     2.698900e+02 -4.016400e+02
-5 16338     4.114200e+02 3.040400e+02
-11 16338     1.495100e+02 1.047600e+02
-13 16338     1.832800e+02 5.477900e+02
-14 16338     3.097400e+02 2.029500e+02
-4 16339     2.956801e+02 -4.017000e+02
-5 16339     4.010699e+02 3.508000e+02
-4 16340     2.182700e+02 -4.021500e+02
-13 16340     2.003900e+02 4.688000e+02
-4 16341     2.182700e+02 -4.021500e+02
-5 16341     4.314600e+02 2.105700e+02
-11 16341     1.524900e+02 2.957999e+01
-13 16341     2.003900e+02 4.688000e+02
-4 16342     2.729200e+02 -4.024800e+02
-14 16342     3.103900e+02 2.076900e+02
-4 16343     2.890699e+02 -4.038500e+02
-5 16343     4.083400e+02 3.377600e+02
-13 16343     1.800200e+02 5.773500e+02
-14 16343     3.062700e+02 2.356100e+02
-4 16344     -2.487800e+02 -4.050500e+02
-6 16344     -6.347998e+01 4.892999e+01
-8 16344     1.273200e+02 -7.970001e+00
-4 16345     2.908500e+02 -4.061400e+02
-11 16345     1.552900e+02 1.347700e+02
-4 16346     2.585100e+02 -4.064800e+02
-13 16346     1.934900e+02 5.309700e+02
-14 16346     3.213500e+02 1.839900e+02
-4 16347     2.702200e+02 -4.080100e+02
-5 16347     4.209900e+02 3.050900e+02
-4 16348     2.702200e+02 -4.080100e+02
-5 16348     4.209900e+02 3.050900e+02
-4 16349     -3.644500e+02 -4.092000e+02
-6 16349     1.620001e+01 -1.271200e+02
-4 16350     -1.045400e+02 -4.091400e+02
-9 16350     -2.710100e+02 1.305500e+02
-4 16351     2.634399e+02 -4.101000e+02
-13 16351     1.965200e+02 5.385700e+02
-14 16351     3.250500e+02 1.922800e+02
-4 16352     -2.321400e+02 -4.112700e+02
-5 16352     6.271899e+02 -6.032300e+02
-6 16352     -6.516998e+01 8.195001e+01
-4 16353     2.916600e+02 -4.114700e+02
-5 16353     4.175400e+02 3.438400e+02
-11 16353     1.638800e+02 1.359900e+02
-13 16353     1.881700e+02 5.831300e+02
-14 16353     3.158300e+02 2.416800e+02
-4 16354     -2.825100e+02 -4.120600e+02
-8 16354     1.524700e+02 -4.294000e+01
-4 16355     -1.919900e+02 -4.120100e+02
-5 16355     6.125699e+02 -5.333101e+02
-6 16355     -9.764999e+01 1.490600e+02
-4 16356     1.160200e+02 -4.117800e+02
-6 16356     -4.451400e+02 7.668200e+02
-8 16356     -1.253500e+02 3.212300e+02
-4 16357     -3.549600e+02 -4.127800e+02
-6 16357     1.335999e+01 -1.112300e+02
-4 16358     2.365300e+02 -4.128500e+02
-5 16358     4.405000e+02 2.448400e+02
-4 16359     2.365300e+02 -4.128500e+02
-5 16359     4.405000e+02 2.448400e+02
-4 16360     2.679900e+02 -4.136300e+02
-5 16360     4.306100e+02 3.010300e+02
-4 16361     -1.408900e+02 -4.148000e+02
-6 16361     -2.630300e+02 2.376000e+02
-12 16361     -1.268500e+02 2.530500e+02
-13 16361     2.990400e+02 -3.634998e+01
-4 16362     9.450000e+01 -4.160600e+02
-6 16362     -4.243500e+02 7.228200e+02
-4 16363     2.182400e+02 -4.159100e+02
-13 16363     2.178500e+02 4.707000e+02
-14 16363     3.494399e+02 1.157300e+02
-4 16364     2.191300e+02 -4.186800e+02
-11 16364     1.750500e+02 3.331000e+01
-4 16365     6.277002e+01 -4.186300e+02
-5 16365     4.886100e+02 -5.338000e+01
-9 16365     -3.449400e+02 3.819100e+02
-11 16365     2.171900e+02 -1.833700e+02
-4 16366     -2.254700e+02 -4.194100e+02
-8 16366     1.324800e+02 2.720001e+01
-4 16367     2.932500e+02 -4.202400e+02
-5 16367     4.298300e+02 3.480200e+02
-11 16367     1.741600e+02 1.398400e+02
-14 16367     3.271200e+02 2.456300e+02
-4 16368     -7.869600e+02 -4.208600e+02
-6 16368     2.324500e+02 -6.715900e+02
-4 16369     2.955500e+02 -4.215200e+02
-11 16369     1.759800e+02 1.427100e+02
-4 16370     -1.143400e+02 -4.217400e+02
-8 16370     -3.098999e+01 4.014999e+01
-11 16370     2.535300e+02 -4.468600e+02
-13 16370     2.990300e+02 2.599976e+00
-14 16370     4.488000e+02 -4.500800e+02
-4 16371     -2.503400e+02 -4.245600e+02
-8 16371     1.514000e+02 2.329987e+00
-4 16372     -4.788000e+01 -4.242900e+02
-7 16372     -1.040700e+02 4.864300e+02
-13 16372     2.825500e+02 9.838000e+01
-4 16373     -1.237000e+02 -4.259700e+02
-6 16373     -2.607900e+02 2.778300e+02
-8 16373     -1.972998e+01 3.176001e+01
-11 16373     2.562700e+02 -4.612000e+02
-12 16373     -1.176400e+02 2.879400e+02
-15 16373     9.859003e+01 5.352800e+02
-4 16374     -1.237000e+02 -4.259700e+02
-6 16374     -2.607900e+02 2.778300e+02
-8 16374     -1.972998e+01 3.176001e+01
-12 16374     -1.176400e+02 2.879400e+02
-13 16374     3.077900e+02 -9.289978e+00
-14 16374     4.598000e+02 -4.657800e+02
-4 16375     1.184500e+02 -4.254400e+02
-6 16375     -4.219100e+02 7.791200e+02
-4 16376     2.061600e+02 -4.255400e+02
-13 16376     2.336000e+02 4.532800e+02
-4 16377     2.719700e+02 -4.254300e+02
-5 16377     4.487400e+02 3.081600e+02
-11 16377     1.799400e+02 1.083200e+02
-13 16377     2.142400e+02 5.526300e+02
-4 16378     2.905300e+02 -4.254400e+02
-5 16378     4.373400e+02 3.448900e+02
-4 16379     2.955100e+02 -4.282900e+02
-11 16379     1.852000e+02 1.427500e+02
-4 16380     -4.897400e+02 -4.301100e+02
-6 16380     9.829999e+01 -2.943500e+02
-7 16380     -3.109985e+00 -1.615900e+02
-8 16380     2.524800e+02 -2.801800e+02
-9 16380     1.405400e+02 -1.349000e+02
-10 16380     -2.338000e+01 -1.776800e+02
-12 16380     1.014400e+02 -2.509600e+02
-15 16380     5.066998e+01 -2.368200e+02
-4 16381     7.233002e+01 -4.312300e+02
-6 16381     -3.871500e+02 6.815900e+02
-4 16382     2.193500e+02 -4.320100e+02
-5 16382     4.762600e+02 2.157800e+02
-4 16383     2.039900e+02 -4.326900e+02
-5 16383     4.832600e+02 1.879700e+02
-4 16384     2.939200e+02 -4.324000e+02
-5 16384     4.489900e+02 3.489200e+02
-11 16384     1.906300e+02 1.413600e+02
-4 16385     2.939200e+02 -4.324000e+02
-11 16385     1.906300e+02 1.413600e+02
-14 16385     3.450800e+02 2.472100e+02
-4 16386     2.959200e+02 -4.345699e+02
-11 16386     1.935700e+02 1.438900e+02
-4 16387     2.704200e+02 -4.368300e+02
-5 16387     4.681700e+02 3.040400e+02
-4 16388     -5.857700e+02 -4.375699e+02
-9 16388     1.866300e+02 -2.404000e+02
-4 16389     -2.322900e+02 -4.373900e+02
-8 16389     1.582300e+02 2.910001e+01
-4 16390     -1.292900e+02 -4.383101e+02
-6 16390     -2.368900e+02 2.749700e+02
-4 16391     4.859003e+01 -4.385800e+02
-5 16391     5.215400e+02 -7.506000e+01
-6 16391     -3.617700e+02 6.340700e+02
-8 16391     -7.682001e+01 2.614400e+02
-4 16392     2.938900e+02 -4.388700e+02
-5 16392     4.587300e+02 3.492500e+02
-11 16392     1.987100e+02 1.423200e+02
-4 16393     2.938900e+02 -4.388700e+02
-5 16393     4.587300e+02 3.492500e+02
-11 16393     1.987100e+02 1.423200e+02
-14 16393     3.541400e+02 2.478100e+02
-4 16394     -2.537300e+02 -4.404800e+02
-8 16394     1.717700e+02 7.339996e+00
-4 16395     1.293400e+02 -4.407700e+02
-6 16395     -4.029100e+02 8.100000e+02
-8 16395     -9.772000e+01 3.789900e+02
-11 16395     2.279200e+02 -8.766998e+01
-13 16395     2.685100e+02 3.477300e+02
-14 16395     4.093500e+02 -2.677002e+01
-4 16396     2.103400e+02 -4.425000e+02
-5 16396     4.952500e+02 1.999700e+02
-4 16397     2.184700e+02 -4.423101e+02
-14 16397     3.917400e+02 1.158100e+02
-4 16398     2.184700e+02 -4.423101e+02
-5 16398     4.920400e+02 2.154100e+02
-13 16398     2.503000e+02 4.752800e+02
-14 16398     3.877100e+02 1.199200e+02
-4 16399     2.242900e+02 -4.445400e+02
-5 16399     4.970000e+02 2.223800e+02
-13 16399     2.514900e+02 4.838900e+02
-4 16400     2.928000e+02 -4.452900e+02
-5 16400     4.689500e+02 3.476800e+02
-4 16401     -2.009600e+02 -4.473101e+02
-5 16401     6.715300e+02 -5.396100e+02
-6 16401     -3.572998e+01 1.571900e+02
-13 16401     3.939900e+02 -1.219600e+02
-4 16402     -5.999600e+02 -4.506100e+02
-9 16402     2.060200e+02 -2.429900e+02
-4 16403     -1.454000e+02 -4.522800e+02
-11 16403     2.899900e+02 -4.892500e+02
-13 16403     3.458300e+02 -3.233002e+01
-4 16404     2.223800e+02 -4.535100e+02
-14 16404     4.033101e+02 1.266900e+02
-4 16405     9.196002e+01 -4.542000e+02
-5 16405     5.368500e+02 3.289978e+00
-6 16405     -3.590300e+02 7.340400e+02
-8 16405     -7.189001e+01 3.265100e+02
-11 16405     2.572900e+02 -1.359100e+02
-4 16406     -4.940997e+01 -4.543700e+02
-8 16406     -3.252002e+01 1.233200e+02
-9 16406     -2.632400e+02 2.103400e+02
-11 16406     2.986300e+02 -3.349100e+02
-4 16407     -3.475300e+02 -4.565100e+02
-12 16407     7.495001e+01 -1.704999e+01
-4 16408     2.314000e+02 -4.565000e+02
-11 16408     2.240400e+02 5.639001e+01
-4 16409     2.073900e+02 -4.584500e+02
-13 16409     2.742400e+02 4.599700e+02
-14 16409     4.156801e+02 1.018900e+02
-4 16410     2.642900e+02 -4.582700e+02
-5 16410     5.020500e+02 2.952300e+02
-13 16410     2.568800e+02 5.425900e+02
-14 16410     3.950400e+02 1.949400e+02
-4 16411     -7.453000e+02 -4.615900e+02
-9 16411     2.852800e+02 -3.751300e+02
-4 16412     1.604999e+01 -4.615200e+02
-5 16412     5.616200e+02 -1.259200e+02
-4 16413     2.365400e+02 -4.625000e+02
-5 16413     5.150000e+02 2.491900e+02
-4 16414     1.130600e+02 -4.638900e+02
-6 16414     -3.548600e+02 7.825100e+02
-8 16414     -6.696997e+01 3.576300e+02
-4 16415     2.076801e+02 -4.652000e+02
-5 16415     5.302000e+02 1.979800e+02
-14 16415     4.254500e+02 1.033500e+02
-4 16416     -2.874900e+02 -4.672500e+02
-8 16416     2.161300e+02 -1.817001e+01
-12 16416     6.396997e+01 8.482001e+01
-4 16417     7.931000e+01 -4.684600e+02
-5 16417     5.608400e+02 -1.600000e+01
-6 16417     -3.284000e+02 7.143300e+02
-8 16417     -5.298999e+01 3.095300e+02
-4 16418     2.147800e+02 -4.695900e+02
-11 16418     2.430200e+02 3.325000e+01
-4 16419     2.256600e+02 -4.702300e+02
-11 16419     2.438199e+02 4.823999e+01
-13 16419     2.825100e+02 4.893100e+02
-4 16420     2.256600e+02 -4.702300e+02
-13 16420     2.825100e+02 4.893100e+02
-14 16420     4.251700e+02 1.348100e+02
-4 16421     2.256600e+02 -4.702300e+02
-13 16421     2.825100e+02 4.893100e+02
-14 16421     4.251700e+02 1.348100e+02
-4 16422     -3.394400e+02 -4.713900e+02
-8 16422     2.402400e+02 -7.728003e+01
-4 16423     1.686600e+02 -4.721801e+02
-5 16423     5.482400e+02 1.344200e+02
-4 16424     2.115500e+02 -4.755100e+02
-5 16424     5.441100e+02 2.049900e+02
-14 16424     4.389301e+02 1.105200e+02
-4 16425     4.465002e+01 -4.762300e+02
-6 16425     -2.981600e+02 6.438600e+02
-12 16425     -1.299600e+02 6.116100e+02
-4 16426     6.612000e+01 -4.765400e+02
-9 16426     -2.802100e+02 3.960300e+02
-4 16427     -7.632200e+02 -4.785601e+02
-9 16427     3.070900e+02 -3.768000e+02
-10 16427     8.187000e+01 -4.920300e+02
-4 16428     6.834998e+01 -4.794500e+02
-8 16428     -3.789001e+01 2.956900e+02
-4 16429     -2.494000e+02 -4.799100e+02
-8 16429     2.118800e+02 3.051001e+01
-4 16430     4.442999e+01 -4.804399e+02
-6 16430     -2.911000e+02 6.454100e+02
-12 16430     -1.231000e+02 6.128800e+02
-4 16431     -5.078000e+02 -4.809200e+02
-6 16431     1.741500e+02 -2.748400e+02
-4 16432     6.610999e+01 -4.812900e+02
-8 16432     -3.516998e+01 2.931500e+02
-14 16432     4.831500e+02 -1.222300e+02
-4 16433     2.322400e+02 -4.819700e+02
-5 16433     5.455699e+02 2.432400e+02
-4 16434     5.412000e+01 -4.826600e+02
-6 16434     -2.934000e+02 6.664400e+02
-8 16434     -3.073999e+01 2.761600e+02
-11 16434     3.065900e+02 -1.835800e+02
-4 16435     1.440400e+02 -4.841200e+02
-5 16435     5.711200e+02 9.479999e+01
-6 16435     -3.372200e+02 8.566200e+02
-4 16436     2.081600e+02 -4.846700e+02
-5 16436     5.585601e+02 2.007000e+02
-4 16437     -2.596600e+02 -4.850500e+02
-6 16437     5.844000e+01 8.797998e+01
-8 16437     2.222800e+02 2.170999e+01
-12 16437     7.665002e+01 1.404600e+02
-4 16438     -2.327400e+02 -4.868101e+02
-13 16438     4.458800e+02 -1.504200e+02
-4 16439     1.419900e+02 -4.888101e+02
-5 16439     5.780500e+02 9.206000e+01
-6 16439     -3.290400e+02 8.533300e+02
-8 16439     -4.834003e+01 3.995500e+02
-4 16440     -3.075400e+02 -4.894800e+02
-6 16440     8.854999e+01 1.663000e+01
-8 16440     2.464200e+02 -3.087000e+01
-12 16440     1.032300e+02 6.754999e+01
-4 16441     -4.517500e+02 -4.897400e+02
-6 16441     1.628400e+02 -1.907400e+02
-4 16442     2.082700e+02 -4.911600e+02
-5 16442     5.683000e+02 2.014900e+02
-4 16443     2.437700e+02 -4.927300e+02
-5 16443     5.567600e+02 2.645300e+02
-11 16443     2.701300e+02 7.842001e+01
-4 16444     2.611500e+02 -4.924600e+02
-5 16444     5.506200e+02 2.945700e+02
-4 16445     1.471100e+02 -4.927800e+02
-5 16445     5.829100e+02 1.012900e+02
-6 16445     -3.251300e+02 8.654400e+02
-4 16446     -2.598200e+02 -4.958400e+02
-7 16446     1.365002e+01 1.679400e+02
-8 16446     2.318800e+02 2.610999e+01
-4 16447     1.586600e+02 -4.961300e+02
-11 16447     2.930200e+02 -3.912000e+01
-4 16448     -2.899100e+02 -4.965100e+02
-10 16448     2.738000e+01 1.453400e+02
-15 16448     1.059100e+02 1.438600e+02
-4 16449     1.612200e+02 -4.981700e+02
-5 16449     5.878101e+02 1.253400e+02
-8 16449     -4.326001e+01 4.269700e+02
-11 16449     2.951899e+02 -3.498999e+01
-4 16450     2.488000e+02 -4.980000e+02
-5 16450     5.624600e+02 2.739100e+02
-4 16451     -2.334400e+02 -4.994800e+02
-6 16451     5.906000e+01 1.369200e+02
-4 16452     2.116801e+02 -4.995800e+02
-13 16452     3.229000e+02 4.713100e+02
-14 16452     4.729800e+02 1.134300e+02
-4 16453     2.116801e+02 -4.995800e+02
-13 16453     3.229000e+02 4.713100e+02
-14 16453     4.729800e+02 1.134300e+02
-4 16454     3.068500e+02 -5.044700e+02
-5 16454     5.556500e+02 3.727800e+02
-14 16454     4.470900e+02 2.705000e+02
-4 16455     2.091500e+02 -5.051200e+02
-5 16455     5.876400e+02 2.043200e+02
-4 16456     2.443400e+02 -5.050300e+02
-5 16456     5.747200e+02 2.664400e+02
-4 16457     -1.145001e+01 -5.063600e+02
-9 16457     -2.213100e+02 2.816100e+02
-11 16457     3.578101e+02 -2.701600e+02
-4 16458     -7.522500e+02 -5.088500e+02
-7 16458     1.395800e+02 -4.009700e+02
-10 16458     1.194700e+02 -4.641899e+02
-4 16459     2.144301e+02 -5.122300e+02
-11 16459     2.982700e+02 3.745999e+01
-4 16460     2.380500e+02 -5.127100e+02
-5 16460     5.879100e+02 2.564100e+02
-11 16460     2.978400e+02 7.092999e+01
-13 16460     3.295000e+02 5.132700e+02
-14 16460     4.802400e+02 1.604500e+02
-4 16461     2.380500e+02 -5.127100e+02
-5 16461     5.879100e+02 2.564100e+02
-11 16461     2.978400e+02 7.092999e+01
-13 16461     3.295000e+02 5.132700e+02
-14 16461     4.802400e+02 1.604500e+02
-4 16462     2.302300e+02 -5.131500e+02
-5 16462     5.916400e+02 2.420000e+02
-11 16462     2.991100e+02 5.935001e+01
-14 16462     4.845100e+02 1.465500e+02
-4 16463     2.302300e+02 -5.131500e+02
-5 16463     5.916400e+02 2.420000e+02
-11 16463     2.991100e+02 5.935001e+01
-14 16463     4.845100e+02 1.465500e+02
-4 16464     -6.400024e+00 -5.150000e+02
-5 16464     6.447000e+02 -1.531200e+02
-6 16464     -2.139900e+02 5.595000e+02
-13 16464     3.817000e+02 1.771200e+02
-14 16464     5.489399e+02 -2.344700e+02
-4 16465     2.439800e+02 -5.155601e+02
-5 16465     5.896400e+02 2.669000e+02
-4 16466     2.188000e+02 -5.160500e+02
-5 16466     5.998600e+02 2.222000e+02
-4 16467     2.454900e+02 -5.180100e+02
-5 16467     5.925300e+02 2.697600e+02
-11 16467     3.033500e+02 8.160999e+01
-13 16467     3.329700e+02 5.248000e+02
-4 16468     -4.692700e+02 -5.187800e+02
-6 16468     2.050200e+02 -1.920300e+02
-4 16469     -4.558200e+02 -5.224301e+02
-12 16469     2.083900e+02 -1.322300e+02
-13 16469     5.239100e+02 -3.984100e+02
-4 16470     1.566100e+02 -5.223500e+02
-5 16470     6.232400e+02 1.208100e+02
-8 16470     -1.722998e+01 4.209200e+02
-11 16470     3.273400e+02 -3.854999e+01
-13 16470     3.597600e+02 3.997900e+02
-14 16470     5.178700e+02 3.096002e+01
-4 16471     2.328600e+02 -5.238600e+02
-5 16471     6.059200e+02 2.477900e+02
-13 16471     3.442400e+02 5.068100e+02
-14 16471     4.974100e+02 1.531100e+02
-4 16472     -4.014900e+02 -5.325800e+02
-7 16472     8.846997e+01 -2.440002e+00
-15 16472     1.850400e+02 -3.775000e+01
-4 16473     -4.014900e+02 -5.325800e+02
-7 16473     8.846997e+01 -2.440002e+00
-15 16473     1.850400e+02 -3.775000e+01
-4 16474     -1.509900e+02 -5.361600e+02
-11 16474     3.999100e+02 -4.774900e+02
-14 16474     6.315100e+02 -4.816700e+02
-4 16475     2.208400e+02 -5.397000e+02
-5 16475     6.324100e+02 2.285600e+02
-4 16476     -1.499700e+02 -5.409900e+02
-11 16476     4.063800e+02 -4.742700e+02
-4 16477     1.420400e+02 -5.434900e+02
-8 16477     8.179993e+00 4.025300e+02
-4 16478     -3.244400e+02 -5.450500e+02
-12 16478     1.818700e+02 7.592999e+01
-4 16479     5.737000e+01 -5.565900e+02
-6 16479     -1.827900e+02 7.055200e+02
-13 16479     4.170500e+02 2.719400e+02
-4 16480     1.645601e+02 -5.563000e+02
-8 16480     1.532001e+01 4.322800e+02
-13 16480     3.978500e+02 4.179200e+02
-4 16481     -4.853400e+02 -5.610000e+02
-7 16481     1.355300e+02 -9.119000e+01
-4 16482     1.055700e+02 -5.752400e+02
-6 16482     -1.780000e+02 8.080400e+02
-4 16483     1.206700e+02 -5.812200e+02
-5 16483     7.135200e+02 6.946997e+01
-8 16483     5.101001e+01 3.761000e+02
-11 16483     4.120800e+02 -7.739001e+01
-14 16483     6.069399e+02 -1.684003e+01
-4 16484     1.083100e+02 -5.820800e+02
-5 16484     7.167900e+02 4.941998e+01
-6 16484     -1.692200e+02 8.160900e+02
-11 16484     4.172100e+02 -9.406000e+01
-4 16485     6.187000e+01 3.587900e+02
-5 16485     -6.091600e+02 -3.313400e+02
-4 16486     -1.318700e+02 1.667200e+02
-13 16486     -5.540100e+02 -2.262000e+02
-4 16487     1.433800e+02 8.797000e+01
-5 16487     -5.254100e+02 3.934003e+01
-13 16487     -5.845300e+02 2.784300e+02
-14 16487     -5.997300e+02 -6.357001e+01
-4 16488     2.315997e+01 8.804999e+01
-11 16488     -5.119300e+02 -3.172600e+02
-4 16489     1.156800e+02 8.382999e+01
-5 16489     -5.100900e+02 -2.153998e+01
-13 16489     -5.649300e+02 2.267100e+02
-14 16489     -5.844600e+02 -1.245300e+02
-4 16490     1.800400e+02 7.278003e+01
-5 16490     -4.830200e+02 1.115300e+02
-13 16490     -5.573700e+02 3.407400e+02
-4 16491     2.149200e+02 7.065997e+01
-5 16491     -4.816600e+02 1.775800e+02
-4 16492     9.903003e+01 7.014001e+01
-5 16492     -4.668200e+02 -5.302002e+01
-4 16493     1.811100e+02 6.967999e+01
-13 16493     -5.490000e+02 3.405800e+02
-4 16494     1.399301e+02 6.771002e+01
-5 16494     -4.659900e+02 2.833002e+01
-14 16494     -5.406500e+02 -7.335999e+01
-4 16495     1.832500e+02 6.541998e+01
-5 16495     -4.667700e+02 1.156300e+02
-4 16496     8.689001e+01 6.358002e+01
-5 16496     -4.503300e+02 -7.783002e+01
-4 16497     1.815500e+02 6.197998e+01
-13 16497     -5.316200e+02 3.450600e+02
-14 16497     -5.289200e+02 9.549988e+00
-4 16498     7.520001e+01 4.651001e+01
-5 16498     -3.968600e+02 -1.037500e+02
-4 16499     8.765997e+01 4.245001e+01
-11 16499     -4.526800e+02 -2.076900e+02
-4 16500     1.760000e+02 3.534003e+01
-11 16500     -4.603300e+02 -7.364001e+01
-4 16501     2.167200e+02 3.572998e+01
-14 16501     -4.624600e+02 6.964001e+01
-4 16502     1.593700e+02 3.503998e+01
-5 16502     -3.750500e+02 6.120001e+01
-4 16503     1.593700e+02 3.503998e+01
-13 16503     -4.608500e+02 2.997600e+02
-4 16504     1.410900e+02 3.434003e+01
-5 16504     -3.714700e+02 2.712000e+01
-14 16504     -4.500200e+02 -7.342999e+01
-4 16505     2.105100e+02 3.232001e+01
-11 16505     -4.587500e+02 -1.959003e+01
-13 16505     -4.709600e+02 3.916100e+02
-4 16506     1.303000e+02 2.884003e+01
-5 16506     -3.523500e+02 1.119995e+00
-4 16507     2.742100e+02 2.903003e+01
-5 16507     -4.040700e+02 2.992300e+02
-4 16508     2.050400e+02 2.501001e+01
-13 16508     -4.525000e+02 3.829300e+02
-4 16509     1.403600e+02 2.464001e+01
-5 16509     -3.425600e+02 2.244000e+01
-13 16509     -4.312900e+02 2.736200e+02
-4 16510     2.410699e+02 2.407001e+01
-5 16510     -3.740100e+02 2.278100e+02
-13 16510     -4.751700e+02 4.488800e+02
-14 16510     -4.513700e+02 1.222500e+02
-4 16511     1.038700e+02 1.053003e+01
-5 16511     -2.963000e+02 -5.289001e+01
-13 16511     -3.860900e+02 2.138400e+02
-14 16511     -3.755000e+02 -1.522400e+02
-4 16512     1.194500e+02 1.060999e+01
-5 16512     -3.002900e+02 -2.098999e+01
-4 16513     1.194500e+02 1.060999e+01
-5 16513     -3.002900e+02 -2.098999e+01
-4 16514     1.288900e+02 5.580017e+00
-13 16514     -3.834400e+02 2.533700e+02
-4 16515     2.911500e+02 -3.590027e+00
-11 16515     -3.879900e+02 1.085500e+02
-4 16516     1.711801e+02 -2.006000e+01
-5 16516     -2.348500e+02 8.050000e+01
-11 16516     -4.135100e+02 -9.448999e+01
-13 16516     -3.347100e+02 3.204700e+02
-4 16517     -2.522300e+02 -2.301001e+01
-10 16517     -7.105400e+02 2.041998e+01
-4 16518     2.237500e+02 -2.435999e+01
-5 16518     -2.353800e+02 1.809500e+02
-13 16518     -3.561000e+02 4.148000e+02
-4 16519     -2.595400e+02 -2.642999e+01
-10 16519     -7.022000e+02 8.479980e+00
-4 16520     -4.835999e+01 -2.931000e+01
-5 16520     -1.720400e+02 -3.508200e+02
-4 16521     -1.076001e+01 -3.491998e+01
-15 16521     -8.630100e+02 5.799900e+02
-4 16522     2.603800e+02 -3.532001e+01
-5 16522     -2.503600e+02 2.668300e+02
-13 16522     -3.727300e+02 4.887900e+02
-14 16522     -3.306000e+02 1.605200e+02
-4 16523     2.664000e+02 -3.571002e+01
-5 16523     -2.505200e+02 2.777700e+02
-13 16523     -3.735900e+02 4.987900e+02
-14 16523     -3.303800e+02 1.714700e+02
-4 16524     -9.419983e+00 -3.826001e+01
-7 16524     -7.878800e+02 3.764700e+02
-11 16524     -3.510400e+02 -3.708100e+02
-13 16524     -2.610200e+02 3.953998e+01
-14 16524     -2.438900e+02 -3.716400e+02
-4 16525     2.722800e+02 -3.840002e+01
-5 16525     -2.442300e+02 2.893300e+02
-11 16525     -3.560500e+02 7.964999e+01
-13 16525     -3.698700e+02 5.091200e+02
-4 16526     9.751001e+01 -4.012000e+01
-14 16526     -2.547600e+02 -1.636900e+02
-4 16527     2.513500e+02 -4.103998e+01
-5 16527     -2.376500e+02 2.512200e+02
-11 16527     -3.493400e+02 4.951001e+01
-4 16528     8.003003e+01 -4.271997e+01
-5 16528     -1.635000e+02 -9.804999e+01
-4 16529     2.617800e+02 -4.447998e+01
-5 16529     -2.320300e+02 2.702700e+02
-11 16529     -3.456000e+02 6.478000e+01
-13 16529     -3.576400e+02 4.927400e+02
-14 16529     -3.129300e+02 1.641400e+02
-4 16530     2.721100e+02 -4.715002e+01
-5 16530     -2.275400e+02 2.900500e+02
-11 16530     -3.445800e+02 8.004999e+01
-13 16530     -3.568900e+02 5.105200e+02
-4 16531     2.553199e+02 -4.776001e+01
-5 16531     -2.250600e+02 2.586500e+02
-11 16531     -3.394500e+02 5.557999e+01
-13 16531     -3.500100e+02 4.826200e+02
-14 16531     -3.050800e+02 1.527700e+02
-4 16532     2.553199e+02 -4.776001e+01
-5 16532     -2.250600e+02 2.586500e+02
-13 16532     -3.500100e+02 4.826200e+02
-14 16532     -3.050800e+02 1.527700e+02
-4 16533     2.600000e+02 -4.833002e+01
-5 16533     -2.243900e+02 2.678100e+02
-4 16534     2.600000e+02 -4.833002e+01
-5 16534     -2.243900e+02 2.678100e+02
-11 16534     -3.388800e+02 6.297000e+01
-13 16534     -3.503000e+02 4.909700e+02
-14 16534     -3.046100e+02 1.617600e+02
-4 16535     2.610200e+02 -5.482001e+01
-5 16535     -2.122500e+02 2.704500e+02
-11 16535     -3.276600e+02 6.625000e+01
-14 16535     -2.905600e+02 1.654700e+02
-4 16536     3.510999e+01 -5.540002e+01
-5 16536     -1.339200e+02 -1.820400e+02
-4 16537     1.392999e+01 -5.759998e+01
-10 16537     -7.953200e+02 6.059800e+02
-4 16538     2.657700e+02 -5.754999e+01
-5 16538     -2.074600e+02 2.794200e+02
-11 16538     -3.263100e+02 7.353000e+01
-13 16538     -3.372400e+02 5.025300e+02
-14 16538     -2.889700e+02 1.741900e+02
-4 16539     -6.073999e+01 -5.925000e+01
-7 16539     -7.075500e+02 2.943700e+02
-10 16539     -7.279700e+02 4.438300e+02
-15 16539     -7.520600e+02 4.733800e+02
-4 16540     -1.660100e+02 -5.978003e+01
-13 16540     -1.697400e+02 -1.927900e+02
-4 16541     7.848999e+01 -5.996002e+01
-5 16541     -1.310600e+02 -9.815002e+01
-14 16541     -2.149300e+02 -1.946300e+02
-4 16542     -5.063000e+01 -6.082001e+01
-5 16542     -1.117400e+02 -3.466300e+02
-7 16542     -7.117300e+02 3.135000e+02
-8 16542     -5.751200e+02 2.300110e-01
-10 16542     -7.323800e+02 4.653900e+02
-13 16542     -2.144900e+02 -1.428998e+01
-14 16542     -1.926400e+02 -4.421400e+02
-4 16543     2.120699e+02 -6.115997e+01
-13 16543     -2.872200e+02 3.988500e+02
-14 16543     -2.408300e+02 5.552002e+01
-4 16544     -7.559998e+00 -6.304999e+01
-5 16544     -1.134700e+02 -2.623800e+02
-10 16544     -7.610500e+02 5.589100e+02
-11 16544     -3.087700e+02 -3.616200e+02
-4 16545     2.671300e+02 -6.309003e+01
-5 16545     -1.972700e+02 2.828500e+02
-4 16546     -1.665997e+01 -6.714001e+01
-8 16546     -5.776500e+02 6.512000e+01
-11 16546     -3.000600e+02 -3.746800e+02
-4 16547     -4.744800e+02 -7.071002e+01
-7 16547     -4.695800e+02 -3.557300e+02
-9 16547     -3.154600e+02 -4.516400e+02
-10 16547     -5.493700e+02 -3.381400e+02
-15 16547     -5.572000e+02 -4.259600e+02
-4 16548     -8.030029e+00 -7.071002e+01
-5 16548     -9.894000e+01 -2.616700e+02
-7 16548     -7.234300e+02 3.981200e+02
-8 16548     -5.746000e+02 8.232999e+01
-14 16548     -1.810000e+02 -3.565500e+02
-4 16549     1.630100e+02 -7.612000e+01
-5 16549     -1.126600e+02 6.247998e+01
-4 16550     1.630100e+02 -7.612000e+01
-5 16550     -1.126600e+02 6.247998e+01
-13 16550     -2.427100e+02 3.226000e+02
-14 16550     -1.960600e+02 -3.407001e+01
-4 16551     1.013000e+02 -7.712000e+01
-11 16551     -3.096200e+02 -1.899300e+02
-13 16551     -2.271200e+02 2.263700e+02
-14 16551     -1.858200e+02 -1.472200e+02
-4 16552     2.501801e+02 -9.226001e+01
-5 16552     -1.128800e+02 2.392200e+02
-11 16552     -2.970100e+02 3.956000e+01
-13 16552     -2.542800e+02 4.704300e+02
-14 16552     -1.970000e+02 1.338700e+02
-4 16553     -5.304500e+02 -1.003100e+02
-7 16553     -4.024900e+02 -4.063000e+02
-15 16553     -4.835800e+02 -5.030000e+02
-4 16554     1.440400e+02 -1.066400e+02
-5 16554     -5.303998e+01 3.563000e+01
-4 16555     -4.451700e+02 -1.071900e+02
-13 16555     2.590002e+01 -5.570100e+02
-4 16556     3.121100e+02 -1.123400e+02
-5 16556     -1.195900e+02 3.744500e+02
-14 16556     -2.012700e+02 2.653900e+02
-4 16557     1.617000e+02 -1.133500e+02
-5 16557     -4.282001e+01 6.954999e+01
-11 16557     -2.659300e+02 -9.519000e+01
-14 16557     -1.301700e+02 -3.012000e+01
-4 16558     -2.621800e+02 -1.222200e+02
-7 16558     -4.880500e+02 -1.609003e+01
-15 16558     -5.120600e+02 3.427002e+01
-4 16559     -2.729500e+02 -1.236000e+02
-15 16559     -5.057800e+02 1.240997e+01
-4 16560     6.731000e+01 -1.347400e+02
-13 16560     -1.324200e+02 1.888500e+02
-14 16560     -7.640002e+01 -1.972400e+02
-4 16561     2.901000e+02 -1.394100e+02
-5 16561     -3.477002e+01 3.183000e+02
-13 16561     -1.936000e+02 5.439600e+02
-14 16561     -1.222300e+02 2.119700e+02
-4 16562     -2.050500e+02 -1.423900e+02
-13 16562     -3.003003e+01 -2.193900e+02
-4 16563     1.512500e+02 -1.425900e+02
-5 16563     1.146997e+01 5.496002e+01
-4 16564     -2.137600e+02 -1.502800e+02
-10 16564     -4.747800e+02 1.693800e+02
-4 16565     -7.005300e+02 -1.520700e+02
-7 16565     -2.718200e+02 -5.638800e+02
-4 16566     -5.265500e+02 -1.542100e+02
-7 16566     -3.292300e+02 -3.667400e+02
-4 16567     -2.189500e+02 -1.550200e+02
-10 16567     -4.657100e+02 1.611700e+02
-4 16568     1.500244e-01 -1.559800e+02
-7 16568     -5.668500e+02 4.561000e+02
-11 16568     -1.610200e+02 -3.294500e+02
-12 16568     -6.848800e+02 3.718600e+02
-4 16569     -4.500122e-01 -1.603400e+02
-5 16569     6.559003e+01 -2.255000e+02
-7 16569     -5.584300e+02 4.570700e+02
-8 16569     -4.311900e+02 1.245500e+02
-4 16570     -5.974100e+02 -1.620500e+02
-6 16570     -2.021900e+02 -7.056700e+02
-7 16570     -2.941600e+02 -4.442200e+02
-15 16570     -3.551700e+02 -5.681000e+02
-4 16571     1.654000e+02 -1.655700e+02
-13 16571     -1.100100e+02 3.461100e+02
-14 16571     -3.963000e+01 -1.315997e+01
-4 16572     7.471997e+01 -1.695200e+02
-5 16572     7.092999e+01 -8.157001e+01
-8 16572     -4.424900e+02 2.554900e+02
-4 16573     -1.117999e+01 -1.704400e+02
-5 16573     8.540002e+01 -2.422800e+02
-7 16573     -5.336400e+02 4.422700e+02
-10 16573     -5.196400e+02 6.038500e+02
-11 16573     -1.348100e+02 -3.436700e+02
-13 16573     -6.231000e+01 8.010001e+01
-14 16573     2.510010e+00 -3.334900e+02
-4 16574     -8.798999e+01 -1.917700e+02
-7 16574     -4.519700e+02 3.179800e+02
-11 16574     -8.157001e+01 -4.572300e+02
-15 16574     -4.060500e+02 4.954500e+02
-4 16575     -3.330017e+00 -2.016600e+02
-8 16575     -3.677300e+02 1.311300e+02
-12 16575     -5.883600e+02 3.911600e+02
-4 16576     1.371600e+02 -2.034800e+02
-11 16576     -6.277002e+01 -9.490997e+01
-4 16577     -2.065997e+01 -2.048800e+02
-11 16577     -7.894000e+01 -3.512200e+02
-12 16577     -5.702600e+02 3.569600e+02
-4 16578     -7.318900e+02 -2.136400e+02
-7 16578     -1.875800e+02 -5.562300e+02
-10 16578     -2.753500e+02 -6.018900e+02
-4 16579     1.529000e+02 -2.144400e+02
-8 16579     -3.984500e+02 3.946500e+02
-11 16579     -1.070700e+02 -9.101001e+01
-14 16579     4.689001e+01 -2.695001e+01
-4 16580     9.306000e+01 -2.268700e+02
-5 16580     1.692800e+02 -3.422998e+01
-11 16580     -7.289001e+01 -1.757700e+02
-12 16580     -6.020500e+02 6.107200e+02
-13 16580     -5.530029e+00 2.532400e+02
-14 16580     7.989001e+01 -1.289500e+02
-4 16581     -5.100098e-01 -2.346500e+02
-5 16581     1.972300e+02 -2.066100e+02
-7 16581     -4.261600e+02 4.910600e+02
-11 16581     -3.659998e+01 -3.131100e+02
-13 16581     2.620001e+01 1.146200e+02
-4 16582     2.055601e+02 -2.377400e+02
-13 16582     -1.840002e+01 4.260100e+02
-14 16582     7.221002e+01 7.351001e+01
-4 16583     4.979980e+00 -2.384200e+02
-5 16583     2.035100e+02 -1.955000e+02
-7 16583     -4.222200e+02 5.023500e+02
-4 16584     7.842999e+01 -2.418500e+02
-5 16584     1.980200e+02 -5.922998e+01
-11 16584     -4.667999e+01 -1.944000e+02
-12 16584     -5.624500e+02 5.851800e+02
-4 16585     -7.388300e+02 -2.487600e+02
-9 16585     1.243100e+02 -5.168400e+02
-4 16586     -7.388300e+02 -2.487600e+02
-9 16586     1.243100e+02 -5.168400e+02
-4 16587     -7.463500e+02 -2.496300e+02
-6 16587     2.495001e+01 -7.877800e+02
-7 16587     -1.410600e+02 -5.480400e+02
-4 16588     -6.734500e+02 -2.553300e+02
-7 16588     -1.541100e+02 -4.683800e+02
-4 16589     1.622800e+02 -2.556600e+02
-5 16589     2.076000e+02 9.388000e+01
-8 16589     -3.413700e+02 4.140500e+02
-13 16589     1.979999e+01 3.609100e+02
-4 16590     -6.321200e+02 -2.591000e+02
-7 16590     -1.613300e+02 -4.213400e+02
-9 16590     4.712000e+01 -4.306500e+02
-12 16590     -6.776001e+01 -5.957900e+02
-4 16591     -6.672300e+02 -2.594500e+02
-6 16591     -2.072998e+01 -6.882000e+02
-9 16591     7.637000e+01 -4.566500e+02
-4 16592     -3.703100e+02 -2.639000e+02
-7 16592     -2.407100e+02 -9.721002e+01
-13 16592     2.094700e+02 -3.962200e+02
-4 16593     1.530029e+00 -2.651800e+02
-13 16593     6.781000e+01 1.260200e+02
-4 16594     -7.612300e+02 -2.715400e+02
-6 16594     6.033002e+01 -7.819200e+02
-7 16594     -1.121200e+02 -5.486801e+02
-9 16594     1.599301e+02 -5.150900e+02
-4 16595     -7.950700e+02 -2.720200e+02
-6 16595     8.306000e+01 -8.181600e+02
-9 16595     1.849000e+02 -5.393500e+02
-4 16596     -3.002200e+02 -2.725300e+02
-6 16596     -2.453600e+02 -1.442200e+02
-4 16597     -2.580017e+00 -2.793800e+02
-5 16597     2.748900e+02 -1.994500e+02
-4 16598     -2.580017e+00 -2.793800e+02
-5 16598     2.748900e+02 -1.994500e+02
-8 16598     -2.582800e+02 1.533100e+02
-4 16599     -2.889100e+02 -2.811000e+02
-6 16599     -2.387000e+02 -1.171800e+02
-4 16600     -6.926400e+02 -2.841900e+02
-9 16600     1.178800e+02 -4.567100e+02
-4 16601     -2.224400e+02 -2.886800e+02
-6 16601     -3.039700e+02 1.799927e-01
-4 16602     -2.174000e+02 -2.882500e+02
-7 16602     -2.637100e+02 1.401300e+02
-10 16602     -2.708500e+02 2.024200e+02
-12 16602     -2.623400e+02 6.572998e+01
-13 16602     1.957600e+02 -1.899000e+02
-15 16602     -2.359600e+02 2.051300e+02
-4 16603     -6.573400e+02 -2.892700e+02
-9 16603     9.463000e+01 -4.271100e+02
-4 16604     -8.108000e+02 -2.896400e+02
-7 16604     -8.021002e+01 -5.868101e+02
-4 16605     -8.108000e+02 -2.896400e+02
-6 16605     1.127300e+02 -8.179000e+02
-7 16605     -8.021002e+01 -5.868101e+02
-4 16606     -6.800700e+02 -2.903300e+02
-9 16606     1.132500e+02 -4.432300e+02
-4 16607     -3.413000e+02 -2.908500e+02
-6 16607     -1.725700e+02 -1.909900e+02
-7 16607     -2.222800e+02 -4.621002e+01
-12 16607     -1.734900e+02 -1.313900e+02
-4 16608     2.434998e+01 -2.951300e+02
-5 16608     2.971000e+02 -1.469600e+02
-8 16608     -2.453700e+02 1.990100e+02
-12 16608     -4.255200e+02 4.974700e+02
-4 16609     4.320007e+00 -2.958300e+02
-5 16609     3.014301e+02 -1.829200e+02
-7 16609     -3.248300e+02 5.256300e+02
-8 16609     -2.387400e+02 1.671600e+02
-4 16610     -6.496300e+02 -2.968400e+02
-6 16610     9.419983e+00 -6.306400e+02
-7 16610     -1.107100e+02 -4.172600e+02
-9 16610     9.520001e+01 -4.153200e+02
-4 16611     -7.864800e+02 -3.054800e+02
-9 16611     2.060000e+02 -5.062800e+02
-4 16612     -7.134400e+02 -3.059800e+02
-6 16612     6.616998e+01 -6.954900e+02
-4 16613     -6.742700e+02 -3.097500e+02
-7 16613     -8.988000e+01 -4.367400e+02
-4 16614     -2.185200e+02 -3.132500e+02
-5 16614     4.513101e+02 -6.061899e+02
-13 16614     2.311600e+02 -1.839300e+02
-15 16614     -1.978600e+02 2.110700e+02
-4 16615     -4.367600e+02 -3.137700e+02
-6 16615     -9.592001e+01 -3.252400e+02
-7 16615     -1.542800e+02 -1.576800e+02
-8 16615     9.376001e+01 -3.052400e+02
-13 16615     2.889900e+02 -4.572000e+02
-4 16616     1.909973e+00 -3.335700e+02
-5 16616     3.641200e+02 -1.786100e+02
-13 16616     1.581100e+02 1.439700e+02
-14 16616     2.745300e+02 -2.650300e+02
-4 16617     2.333002e+01 -3.345800e+02
-6 16617     -5.292800e+02 5.239200e+02
-4 16618     1.695000e+02 -3.345600e+02
-5 16618     3.369301e+02 1.179100e+02
-13 16618     1.257700e+02 3.866600e+02
-14 16618     2.402900e+02 2.316998e+01
-4 16619     2.383500e+02 -3.360200e+02
-5 16619     3.213700e+02 2.405200e+02
-4 16620     -7.312100e+02 -3.441000e+02
-9 16620     1.940699e+02 -4.414301e+02
-4 16621     -7.260400e+02 -3.471300e+02
-9 16621     1.918400e+02 -4.355601e+02
-4 16622     -7.513000e+01 -3.476700e+02
-10 16622     -1.294200e+02 5.538600e+02
-4 16623     -7.896100e+02 -3.488500e+02
-7 16623     -1.983002e+01 -5.293900e+02
-4 16624     -7.325300e+02 -3.511800e+02
-9 16624     1.995800e+02 -4.373199e+02
-4 16625     -7.709600e+02 -3.512200e+02
-7 16625     -2.144000e+01 -5.102900e+02
-9 16625     2.274700e+02 -4.634200e+02
-10 16625     -8.321002e+01 -5.707600e+02
-4 16626     -7.188400e+02 -3.555500e+02
-9 16626     1.935500e+02 -4.244300e+02
-4 16627     -7.675000e+02 -3.568400e+02
-7 16627     -1.594000e+01 -5.029399e+02
-10 16627     -7.572998e+01 -5.627500e+02
-4 16628     -7.664600e+02 -3.617400e+02
-7 16628     -1.102002e+01 -4.990500e+02
-10 16628     -6.951001e+01 -5.590000e+02
-4 16629     2.623400e+02 -3.641200e+02
-5 16629     3.552900e+02 2.869100e+02
-4 16630     2.886300e+02 -3.646100e+02
-5 16630     3.461400e+02 3.350400e+02
-4 16631     -1.876100e+02 -3.667000e+02
-5 16631     5.350699e+02 -5.367700e+02
-6 16631     -1.806800e+02 1.247200e+02
-4 16632     2.575000e+02 -3.671900e+02
-11 16632     1.030400e+02 8.328000e+01
-4 16633     -1.575000e+01 -3.675400e+02
-6 16633     -4.472300e+02 4.602800e+02
-7 16633     -2.020800e+02 5.180500e+02
-11 16633     1.657400e+02 -3.072500e+02
-12 16633     -2.741600e+02 4.524100e+02
-13 16633     2.058600e+02 1.278600e+02
-14 16633     3.325400e+02 -2.879900e+02
-4 16634     -2.875700e+02 -3.704500e+02
-7 16634     -1.340400e+02 7.177002e+01
-4 16635     2.475000e+02 -3.710400e+02
-11 16635     1.078400e+02 6.950000e+01
-13 16635     1.497900e+02 5.115300e+02
-14 16635     2.703000e+02 1.638200e+02
-4 16636     2.762200e+02 -3.711000e+02
-11 16636     1.085000e+02 1.102100e+02
-13 16636     1.408900e+02 5.545600e+02
-4 16637     2.886700e+02 -3.714200e+02
-5 16637     3.568199e+02 3.357000e+02
-13 16637     1.365200e+02 5.742800e+02
-4 16638     2.954900e+02 -3.770000e+02
-14 16638     2.624301e+02 2.459500e+02
-4 16639     -7.382200e+02 -3.783700e+02
-9 16639     2.236801e+02 -4.225400e+02
-4 16640     2.644000e+02 -3.796800e+02
-5 16640     3.792900e+02 2.924000e+02
-11 16640     1.199100e+02 9.454001e+01
-13 16640     1.557600e+02 5.371800e+02
-4 16641     2.644000e+02 -3.796800e+02
-5 16641     3.792900e+02 2.924000e+02
-11 16641     1.199100e+02 9.454001e+01
-13 16641     1.557600e+02 5.371800e+02
-4 16642     -7.336300e+02 -3.802000e+02
-7 16642     1.280029e+00 -4.552400e+02
-10 16642     -4.740002e+01 -5.094200e+02
-4 16643     1.406500e+02 -3.799000e+02
-6 16643     -5.169400e+02 8.102900e+02
-8 16643     -1.720100e+02 3.902400e+02
-4 16644     1.201100e+02 -3.808000e+02
-14 16644     3.220400e+02 -5.119000e+01
-4 16645     1.201100e+02 -3.808000e+02
-13 16645     1.956801e+02 3.244900e+02
-4 16646     2.423199e+02 -3.815100e+02
-5 16646     3.906100e+02 2.521500e+02
-11 16646     1.234500e+02 6.229999e+01
-13 16646     1.658700e+02 5.029300e+02
-4 16647     2.472800e+02 -3.817700e+02
-5 16647     3.886899e+02 2.616900e+02
-11 16647     1.238400e+02 6.966000e+01
-13 16647     1.647200e+02 5.108200e+02
-4 16648     -1.852200e+02 -3.828600e+02
-12 16648     -1.194000e+02 1.939000e+02
-4 16649     2.594100e+02 -3.833700e+02
-5 16649     3.839000e+02 2.860900e+02
-11 16649     1.250000e+02 8.810999e+01
-4 16650     2.594100e+02 -3.833700e+02
-11 16650     1.250000e+02 8.810999e+01
-14 16650     2.842200e+02 1.849000e+02
-4 16651     -3.377700e+02 -3.861000e+02
-6 16651     -3.423999e+01 -1.063000e+02
-8 16651     1.481900e+02 -1.217700e+02
-12 16651     -2.840997e+01 -5.288000e+01
-4 16652     -1.757500e+02 -3.914400e+02
-5 16652     5.716000e+02 -5.097000e+02
-6 16652     -1.480000e+02 1.621600e+02
-7 16652     -1.387200e+02 2.492900e+02
-10 16652     -1.318000e+02 3.093000e+02
-12 16652     -1.116600e+02 2.147000e+02
-13 16652     3.195200e+02 -1.045200e+02
-4 16653     -1.757500e+02 -3.914400e+02
-5 16653     5.716000e+02 -5.097000e+02
-7 16653     -1.387200e+02 2.492900e+02
-10 16653     -1.318000e+02 3.093000e+02
-12 16653     -1.116600e+02 2.147000e+02
-15 16653     -7.622998e+01 3.346300e+02
-4 16654     2.786100e+02 -3.916500e+02
-13 16654     1.681200e+02 5.596000e+02
-4 16655     2.539301e+02 -3.935400e+02
-11 16655     1.386000e+02 8.128000e+01
-4 16656     2.838101e+02 -3.942600e+02
-11 16656     1.403900e+02 1.234900e+02
-13 16656     1.693600e+02 5.682300e+02
-14 16656     2.937400e+02 2.260000e+02
-4 16657     1.316700e+02 -3.958500e+02
-5 16657     4.403700e+02 6.097998e+01
-6 16657     -4.825000e+02 7.951900e+02
-8 16657     -1.503300e+02 3.778900e+02
-11 16657     1.641900e+02 -9.163000e+01
-13 16657     2.119301e+02 3.430000e+02
-14 16657     3.418500e+02 -3.008002e+01
-4 16658     2.275699e+02 -3.954600e+02
-5 16658     4.176500e+02 2.265700e+02
-13 16658     1.895200e+02 4.815600e+02
-14 16658     3.162100e+02 1.289500e+02
-4 16659     -1.464400e+02 -3.958100e+02
-6 16659     -2.874300e+02 2.133200e+02
-13 16659     2.787100e+02 -4.996002e+01
-14 16659     4.230500e+02 -5.172600e+02
-4 16660     1.030800e+02 -3.966700e+02
-5 16660     4.469800e+02 1.223999e+01
-8 16660     -1.411500e+02 3.380300e+02
-14 16660     3.498800e+02 -7.697998e+01
-4 16661     -3.807100e+02 -3.988800e+02
-8 16661     1.815300e+02 -1.656700e+02
-4 16662     -4.551700e+02 -3.996200e+02
-6 16662     4.710999e+01 -2.700500e+02
-4 16663     2.539600e+02 -4.002300e+02
-5 16663     4.154600e+02 2.749100e+02
-4 16664     2.539600e+02 -4.002300e+02
-5 16664     4.154600e+02 2.749100e+02
-4 16665     2.524399e+02 -4.042300e+02
-11 16665     1.556800e+02 7.895999e+01
-4 16666     2.344900e+02 -4.045900e+02
-11 16666     1.560900e+02 5.298001e+01
-14 16666     3.276000e+02 1.420200e+02
-4 16667     2.344900e+02 -4.045900e+02
-11 16667     1.560900e+02 5.298001e+01
-14 16667     3.276000e+02 1.420200e+02
-4 16668     2.654700e+02 -4.047700e+02
-5 16668     4.167500e+02 2.971600e+02
-11 16668     1.548100e+02 9.823999e+01
-13 16668     1.878700e+02 5.424400e+02
-14 16668     3.150800e+02 1.969000e+02
-4 16669     -4.830400e+02 -4.053600e+02
-8 16669     2.234400e+02 -2.886600e+02
-4 16670     2.218900e+02 -4.067700e+02
-5 16670     4.370400e+02 2.172700e+02
-11 16670     1.590700e+02 3.520001e+01
-13 16670     2.056100e+02 4.744600e+02
-14 16670     3.350000e+02 1.204400e+02
-4 16671     2.218900e+02 -4.067700e+02
-11 16671     1.590700e+02 3.520001e+01
-13 16671     2.056100e+02 4.744600e+02
-4 16672     2.809301e+02 -4.067700e+02
-14 16672     3.124600e+02 2.225200e+02
-4 16673     2.100500e+02 -4.084900e+02
-14 16673     3.422000e+02 1.002600e+02
-4 16674     2.601500e+02 -4.090200e+02
-5 16674     4.250400e+02 2.880500e+02
-11 16674     1.606600e+02 9.126999e+01
-13 16674     1.948900e+02 5.345500e+02
-14 16674     3.230500e+02 1.879600e+02
-4 16675     -3.217100e+02 -4.098400e+02
-8 16675     1.657000e+02 -9.166998e+01
-4 16676     -3.517900e+02 -4.107200e+02
-6 16676     8.900024e+00 -1.081300e+02
-4 16677     1.776899e+02 -4.112400e+02
-11 16677     1.727700e+02 -2.671002e+01
-4 16678     7.085999e+01 -4.117000e+02
-5 16678     4.761801e+02 -4.063000e+01
-6 16678     -4.195400e+02 6.697600e+02
-4 16679     2.099100e+02 -4.154200e+02
-5 16679     4.544399e+02 1.968700e+02
-13 16679     2.206600e+02 4.573800e+02
-14 16679     3.525300e+02 1.007100e+02
-4 16680     2.242800e+02 -4.153000e+02
-5 16680     4.487900e+02 2.229400e+02
-11 16680     1.711600e+02 3.860999e+01
-4 16681     1.499100e+02 -4.160700e+02
-5 16681     4.680000e+02 9.534003e+01
-4 16682     2.852800e+02 -4.159500e+02
-5 16682     4.279399e+02 3.326500e+02
-4 16683     -1.679300e+02 -4.196700e+02
-5 16683     6.137500e+02 -4.876500e+02
-6 16683     -1.095500e+02 1.945600e+02
-14 16683     5.168600e+02 -5.689700e+02
-4 16684     1.502400e+02 -4.253100e+02
-11 16684     2.006800e+02 -6.104999e+01
-13 16684     2.454600e+02 3.761000e+02
-14 16684     3.815300e+02 6.179993e+00
-4 16685     7.254999e+01 -4.269600e+02
-11 16685     2.254200e+02 -1.674300e+02
-4 16686     1.000000e+01 -4.277100e+02
-5 16686     5.118300e+02 -1.433300e+02
-4 16687     -2.057900e+02 -4.285000e+02
-5 16687     6.443800e+02 -5.530601e+02
-6 16687     -5.983002e+01 1.371600e+02
-13 16687     3.737800e+02 -1.329400e+02
-4 16688     -1.672800e+02 -4.343000e+02
-14 16688     5.382600e+02 -5.640699e+02
-4 16689     1.508900e+02 -4.354800e+02
-11 16689     2.144400e+02 -5.872998e+01
-14 16689     3.963600e+02 8.570007e+00
-4 16690     2.280900e+02 -4.354000e+02
-5 16690     4.783199e+02 2.310300e+02
-4 16691     -1.873999e+01 -4.403800e+02
-5 16691     5.365800e+02 -1.904100e+02
-12 16691     -1.545100e+02 4.800400e+02
-14 16691     4.443800e+02 -2.741900e+02
-4 16692     -1.985100e+02 -4.449301e+02
-5 16692     6.668900e+02 -5.361500e+02
-6 16692     -4.129999e+01 1.602100e+02
-12 16692     -1.417999e+01 2.129400e+02
-4 16693     -2.598100e+02 -4.520601e+02
-6 16693     1.360999e+01 6.485999e+01
-4 16694     -2.618900e+02 -4.546000e+02
-15 16694     3.216998e+01 1.771000e+02
-4 16695     2.749900e+02 -4.546100e+02
-5 16695     4.959301e+02 3.126900e+02
-4 16696     1.066300e+02 -4.551000e+02
-5 16696     5.351801e+02 2.760999e+01
-11 16696     2.539000e+02 -1.161800e+02
-4 16697     4.590027e+00 -4.578600e+02
-5 16697     5.605000e+02 -1.466900e+02
-4 16698     1.486400e+02 -4.635400e+02
-6 16698     -3.743700e+02 8.594300e+02
-8 16698     -7.727002e+01 4.074100e+02
-4 16699     2.346100e+02 -4.699800e+02
-5 16699     5.271899e+02 2.461600e+02
-4 16700     2.346100e+02 -4.699800e+02
-5 16700     5.271899e+02 2.461600e+02
-13 16700     2.799100e+02 5.022400e+02
-4 16701     1.854399e+02 -4.735900e+02
-11 16701     2.553500e+02 -8.650024e+00
-14 16701     4.431300e+02 6.756000e+01
-4 16702     1.572100e+02 -4.739900e+02
-5 16702     5.535500e+02 1.158400e+02
-8 16702     -6.812000e+01 4.204600e+02
-11 16702     2.642700e+02 -4.433002e+01
-13 16702     3.031899e+02 3.928000e+02
-14 16702     4.503900e+02 2.427002e+01
-4 16703     2.152300e+02 -4.757700e+02
-11 16703     2.511100e+02 3.379999e+01
-13 16703     2.924200e+02 4.740500e+02
-4 16704     2.152300e+02 -4.757700e+02
-5 16704     5.429900e+02 2.122900e+02
-11 16704     2.511100e+02 3.379999e+01
-13 16704     2.924200e+02 4.740500e+02
-4 16705     2.757700e+02 -4.806300e+02
-5 16705     5.306899e+02 3.178300e+02
-4 16706     -3.495200e+02 -4.817500e+02
-8 16706     2.539300e+02 -8.416998e+01
-4 16707     7.264001e+01 -4.845800e+02
-6 16707     -2.997300e+02 7.053600e+02
-14 16707     4.862800e+02 -1.117200e+02
-4 16708     7.264001e+01 -4.845800e+02
-6 16708     -2.997300e+02 7.053600e+02
-9 16708     -2.733700e+02 4.079500e+02
-14 16708     4.862800e+02 -1.117200e+02
-4 16709     -2.969200e+02 -4.865000e+02
-6 16709     8.103003e+01 3.089001e+01
-4 16710     1.323000e+02 -4.890000e+02
-5 16710     5.802100e+02 7.673999e+01
-6 16710     -3.234800e+02 8.336500e+02
-8 16710     -4.538000e+01 3.867400e+02
-13 16710     3.257800e+02 3.616300e+02
-14 16710     4.776500e+02 -1.225000e+01
-4 16711     2.426000e+02 -4.894800e+02
-11 16711     2.676600e+02 7.514001e+01
-13 16711     3.001500e+02 5.177500e+02
-14 16711     4.457700e+02 1.662900e+02
-4 16712     -2.422300e+02 -4.897400e+02
-5 16712     7.496000e+02 -5.976700e+02
-8 16712     2.176100e+02 4.235999e+01
-9 16712     7.491998e+01 1.835400e+02
-4 16713     2.090500e+02 -4.977900e+02
-13 16713     3.213600e+02 4.675800e+02
-4 16714     4.753998e+01 -4.976000e+02
-6 16714     -2.677200e+02 6.604000e+02
-8 16714     -1.369000e+01 2.693800e+02
-4 16715     1.472000e+02 -5.019700e+02
-5 16715     5.961700e+02 1.025400e+02
-6 16715     -3.101000e+02 8.690100e+02
-8 16715     -3.560999e+01 4.071700e+02
-11 16715     3.040800e+02 -5.432001e+01
-13 16715     3.381700e+02 3.831500e+02
-14 16715     4.922000e+02 1.215002e+01
-4 16716     -8.950012e+00 -5.033700e+02
-5 16716     6.281100e+02 -1.596900e+02
-8 16716     7.559998e+00 1.910900e+02
-4 16717     3.885999e+01 -5.049000e+02
-8 16717     -3.359985e+00 2.577100e+02
-12 16717     -8.428003e+01 6.108400e+02
-14 16717     5.235500e+02 -1.620000e+02
-4 16718     1.475400e+02 -5.077500e+02
-5 16718     6.043800e+02 1.036500e+02
-6 16718     -3.011300e+02 8.703400e+02
-8 16718     -2.956000e+01 4.083800e+02
-13 16718     3.448300e+02 3.845000e+02
-14 16718     5.003101e+02 1.407001e+01
-4 16719     2.434100e+02 -5.087200e+02
-11 16719     2.922300e+02 7.828000e+01
-14 16719     4.726000e+02 1.691700e+02
-4 16720     2.434100e+02 -5.087200e+02
-5 16720     5.800800e+02 2.655600e+02
-11 16720     2.922300e+02 7.828000e+01
-14 16720     4.726000e+02 1.691700e+02
-4 16721     1.539900e+02 -5.098199e+02
-5 16721     6.059100e+02 1.146400e+02
-11 16721     3.120699e+02 -4.382001e+01
-13 16721     3.461899e+02 3.958200e+02
-14 16721     5.013199e+02 2.477002e+01
-4 16722     1.814001e+01 -5.105100e+02
-5 16722     6.333800e+02 -1.128800e+02
-6 16722     -2.336400e+02 6.054900e+02
-8 16722     7.809998e+00 2.295800e+02
-9 16722     -2.273400e+02 3.275500e+02
-12 16722     -6.688000e+01 5.741700e+02
-4 16723     2.547000e+02 -5.139000e+02
-11 16723     2.980400e+02 9.382001e+01
-4 16724     1.538600e+02 -5.143199e+02
-11 16724     3.180601e+02 -4.345001e+01
-4 16725     2.280400e+02 -5.178400e+02
-5 16725     5.993700e+02 2.389700e+02
-11 16725     3.051100e+02 5.710999e+01
-13 16725     3.386700e+02 4.989800e+02
-14 16725     4.911899e+02 1.443300e+02
-4 16726     -9.490997e+01 -5.223700e+02
-7 16726     4.094000e+01 4.461200e+02
-9 16726     -1.542500e+02 1.816500e+02
-4 16727     1.343500e+02 -5.269200e+02
-5 16727     6.338101e+02 8.513000e+01
-6 16727     -2.731200e+02 8.379000e+02
-11 16727     3.394399e+02 -6.709998e+01
-4 16728     2.343600e+02 -5.269500e+02
-5 16728     6.101300e+02 2.504800e+02
-4 16729     2.343600e+02 -5.269500e+02
-5 16729     6.101300e+02 2.504800e+02
-4 16730     2.095500e+02 -5.304800e+02
-5 16730     6.236300e+02 2.073500e+02
-11 16730     3.220200e+02 3.210001e+01
-13 16730     3.591400e+02 4.724400e+02
-14 16730     5.156700e+02 1.137700e+02
-4 16731     -5.150600e+02 -5.481000e+02
-10 16731     1.307500e+02 -1.586500e+02
-4 16732     -5.868400e+02 -5.527900e+02
-7 16732     1.523600e+02 -2.057900e+02
-10 16732     1.589700e+02 -2.413000e+02
-15 16732     2.683800e+02 -3.120400e+02
-4 16733     -3.088700e+02 -5.561400e+02
-7 16733     9.510999e+01 1.270900e+02
-10 16733     1.135300e+02 1.400000e+02
-13 16733     5.321200e+02 -2.208600e+02
-15 16733     2.079200e+02 1.390000e+02
-4 16734     9.590002e+01 -5.602100e+02
-5 16734     6.888600e+02 2.614001e+01
-6 16734     -1.955400e+02 7.825200e+02
-11 16734     3.954000e+02 -1.128800e+02
-14 16734     5.861200e+02 -5.876001e+01
-4 16735     -4.810000e+02 -5.615300e+02
-6 16735     2.536400e+02 -1.773000e+02
-10 16735     1.356500e+02 -1.115500e+02
-12 16735     2.644500e+02 -1.392300e+02
-15 16735     2.357100e+02 -1.578500e+02
-4 16736     1.311300e+02 -5.667000e+02
-6 16736     -2.022700e+02 8.574600e+02
-4 16737     1.311300e+02 -5.667000e+02
-6 16737     -2.022700e+02 8.574600e+02
-4 16738     1.702900e+02 -5.698500e+02
-5 16738     6.873199e+02 1.510900e+02
-13 16738     4.111700e+02 4.242500e+02
-14 16738     5.788300e+02 5.795001e+01
-4 16739     -3.584003e+01 -5.803900e+02
-11 16739     4.597300e+02 -2.878400e+02
-4 16740     1.156300e+02 3.753700e+02
-5 16740     -6.774400e+02 -2.238500e+02
-4 16741     9.557001e+01 7.639001e+01
-5 16741     -4.852100e+02 -5.992999e+01
-13 16741     -5.403600e+02 1.965800e+02
-14 16741     -5.600200e+02 -1.616700e+02
-4 16742     1.605900e+02 6.744000e+01
-5 16742     -4.679100e+02 7.053998e+01
-4 16743     1.571100e+02 5.408002e+01
-5 16743     -4.282600e+02 6.009998e+01
-11 16743     -4.781800e+02 -9.831000e+01
-13 16743     -5.117200e+02 3.004700e+02
-14 16743     -5.121000e+02 -4.284003e+01
-4 16744     2.279700e+02 3.934003e+01
-5 16744     -4.022600e+02 1.999200e+02
-11 16744     -4.644400e+02 9.059998e+00
-13 16744     -4.974400e+02 4.231100e+02
-14 16744     -4.796200e+02 9.487000e+01
-4 16745     2.358800e+02 3.959998e+01
-5 16745     -4.102300e+02 2.186300e+02
-11 16745     -4.610600e+02 2.219000e+01
-13 16745     -5.036700e+02 4.378600e+02
-14 16745     -4.850600e+02 1.118600e+02
-4 16746     2.396100e+02 3.333002e+01
-5 16746     -3.959500e+02 2.263400e+02
-13 16746     -4.911500e+02 4.470400e+02
-14 16746     -4.704100e+02 1.210100e+02
-4 16747     1.850900e+02 3.153998e+01
-5 16747     -3.666600e+02 1.069800e+02
-13 16747     -4.602300e+02 3.476500e+02
-4 16748     2.368700e+02 2.963000e+01
-5 16748     -3.859600e+02 2.198500e+02
-14 16748     -4.629200e+02 1.139200e+02
-4 16749     2.687100e+02 2.901001e+01
-5 16749     -4.035100e+02 2.890700e+02
-4 16750     1.134800e+02 1.823999e+01
-5 16750     -3.211000e+02 -3.144000e+01
-4 16751     1.206300e+02 -2.119995e+00
-11 16751     -4.223600e+02 -1.684500e+02
-4 16752     -2.261500e+02 -1.690002e+01
-10 16752     -7.339900e+02 6.825000e+01
-4 16753     7.009003e+01 -2.066998e+01
-5 16753     -2.074100e+02 -1.215700e+02
-4 16754     1.672200e+02 -2.262000e+01
-5 16754     -2.124100e+02 6.377002e+01
-4 16755     2.681400e+02 -2.390997e+01
-5 16755     -2.771900e+02 2.824800e+02
-11 16755     -3.746500e+02 7.345999e+01
-13 16755     -3.968200e+02 5.020200e+02
-14 16755     -3.563200e+02 1.765300e+02
-4 16756     1.426801e+02 -4.031000e+01
-5 16756     -1.759800e+02 2.058002e+01
-13 16756     -2.945400e+02 2.817500e+02
-14 16756     -2.605000e+02 -7.869000e+01
-4 16757     5.078003e+01 -4.553998e+01
-5 16757     -1.546100e+02 -1.539000e+02
-4 16758     2.422998e+01 -4.615997e+01
-5 16758     -1.500700e+02 -2.054500e+02
-7 16758     -7.975200e+02 4.475300e+02
-13 16758     -2.562600e+02 9.639999e+01
-14 16758     -2.327800e+02 -3.019000e+02
-4 16759     2.662700e+02 -5.052002e+01
-5 16759     -2.218300e+02 2.793900e+02
-11 16759     -3.368000e+02 7.260999e+01
-13 16759     -3.489600e+02 5.015700e+02
-14 16759     -3.017400e+02 1.735000e+02
-4 16760     2.851300e+02 -5.326001e+01
-5 16760     -2.182200e+02 3.143800e+02
-4 16761     1.103600e+02 -5.407001e+01
-11 16761     -3.493400e+02 -1.812300e+02
-13 16761     -2.657600e+02 2.340100e+02
-4 16762     1.103600e+02 -5.407001e+01
-5 16762     -1.465300e+02 -3.839001e+01
-13 16762     -2.657600e+02 2.340100e+02
-4 16763     2.463000e+01 -5.585999e+01
-5 16763     -1.313900e+02 -2.019400e+02
-4 16764     1.546000e+02 -5.672998e+01
-5 16764     -1.466400e+02 4.597998e+01
-11 16764     -3.543000e+02 -1.120900e+02
-13 16764     -2.728600e+02 3.048500e+02
-14 16764     -2.327000e+02 -5.266998e+01
-4 16765     2.755900e+02 -5.962000e+01
-5 16765     -2.040800e+02 2.978300e+02
-4 16766     -1.379999e+01 -6.053998e+01
-5 16766     -1.176900e+02 -2.754700e+02
-8 16766     -5.902600e+02 6.791000e+01
-4 16767     8.159973e+00 -6.053003e+01
-5 16767     -1.204000e+02 -2.328800e+02
-11 16767     -3.170300e+02 -3.374400e+02
-4 16768     2.222700e+02 -6.004999e+01
-13 16768     -2.953700e+02 4.194000e+02
-14 16768     -2.483300e+02 7.884000e+01
-4 16769     -4.791998e+01 -6.473999e+01
-5 16769     -1.044400e+02 -3.406200e+02
-7 16769     -7.054900e+02 3.207200e+02
-8 16769     -5.699700e+02 7.130005e+00
-10 16769     -7.261300e+02 4.734900e+02
-14 16769     -1.849100e+02 -4.365200e+02
-15 16769     -7.498100e+02 5.069500e+02
-4 16770     1.553400e+02 -7.059003e+01
-5 16770     -1.212500e+02 5.001001e+01
-11 16770     -3.316400e+02 -1.097200e+02
-13 16770     -2.510000e+02 3.093100e+02
-14 16770     -2.067500e+02 -4.897998e+01
-4 16771     8.535999e+01 -7.528003e+01
-5 16771     -1.033300e+02 -8.117999e+01
-8 16771     -6.010100e+02 2.544800e+02
-14 16771     -1.870500e+02 -1.777100e+02
-4 16772     2.456000e+02 -8.866998e+01
-13 16772     -2.583000e+02 4.620800e+02
-14 16772     -2.021200e+02 1.247800e+02
-4 16773     -1.215002e+01 -9.360999e+01
-5 16773     -5.428003e+01 -2.634700e+02
-8 16773     -5.336000e+02 8.276999e+01
-12 16773     -8.107400e+02 3.063600e+02
-4 16774     2.550300e+02 -9.581000e+01
-5 16774     -1.077400e+02 2.490000e+02
-13 16774     -2.504600e+02 4.787300e+02
-14 16774     -1.919500e+02 1.429900e+02
-4 16775     1.503800e+02 -1.170200e+02
-5 16775     -3.396002e+01 4.913000e+01
-4 16776     1.633000e+02 -1.292300e+02
-13 16776     -1.627100e+02 3.346300e+02
-14 16776     -1.014400e+02 -2.421997e+01
-4 16777     -5.548100e+02 -1.449300e+02
-7 16777     -3.307200e+02 -4.069500e+02
-4 16778     3.355900e+02 -1.488400e+02
-11 16778     -1.674900e+02 1.964600e+02
-14 16778     -1.594000e+02 3.240700e+02
-4 16779     1.070500e+02 -1.497900e+02
-5 16779     3.063000e+01 -2.550000e+01
-8 16779     -4.841400e+02 3.070100e+02
-4 16780     1.070500e+02 -1.497900e+02
-5 16780     3.063000e+01 -2.550000e+01
-8 16780     -4.841400e+02 3.070100e+02
-11 16780     -1.961600e+02 -1.693200e+02
-13 16780     -1.201400e+02 2.529800e+02
-14 16780     -5.688000e+01 -1.214400e+02
-4 16781     -1.988700e+02 -1.538800e+02
-8 16781     -3.219900e+02 -1.686000e+02
-10 16781     -4.723300e+02 2.014200e+02
-4 16782     -5.186200e+02 -1.560800e+02
-6 16782     -2.857700e+02 -6.094399e+02
-7 16782     -3.300100e+02 -3.553500e+02
-9 16782     -1.613900e+02 -4.196300e+02
-15 16782     -3.805400e+02 -4.424301e+02
-4 16783     -1.975900e+02 -1.616300e+02
-10 16783     -4.586900e+02 2.077500e+02
-4 16784     1.353800e+02 -1.651100e+02
-5 16784     5.400000e+01 2.959998e+01
-4 16785     -7.226001e+01 -1.723700e+02
-8 16785     -3.882100e+02 7.709991e+00
-4 16786     -2.534600e+02 -1.786700e+02
-7 16786     -4.018500e+02 3.192999e+01
-10 16786     -4.129700e+02 1.064800e+02
-15 16786     -3.947400e+02 9.088000e+01
-4 16787     1.649399e+02 -1.797400e+02
-13 16787     -8.859003e+01 3.485000e+02
-14 16787     -1.366998e+01 -1.190997e+01
-4 16788     -7.206300e+02 -1.799000e+02
-7 16788     -2.319500e+02 -5.660900e+02
-4 16789     -2.270700e+02 -1.808500e+02
-7 16789     -4.102900e+02 7.652002e+01
-13 16789     3.190002e+01 -2.356100e+02
-4 16790     -5.665700e+02 -1.876400e+02
-9 16790     -7.863000e+01 -4.340400e+02
-4 16791     1.652000e+02 -1.926400e+02
-13 16791     -6.984003e+01 3.513500e+02
-14 16791     8.409973e+00 -9.429993e+00
-4 16792     -6.009800e+02 -1.939000e+02
-9 16792     -4.175000e+01 -4.577700e+02
-4 16793     -6.908000e+02 -1.972400e+02
-6 16793     -7.870001e+01 -7.796801e+02
-7 16793     -2.179200e+02 -5.254100e+02
-9 16793     4.022998e+01 -5.233900e+02
-4 16794     -6.908000e+02 -1.972400e+02
-9 16794     4.022998e+01 -5.233900e+02
-4 16795     1.600300e+02 -2.003300e+02
-13 16795     -5.709003e+01 3.465300e+02
-14 16795     2.241998e+01 -1.633002e+01
-4 16796     -1.251100e+02 -2.062700e+02
-15 16796     -3.634400e+02 4.097000e+02
-4 16797     9.271997e+01 -2.161500e+02
-8 16797     -3.790700e+02 2.941900e+02
-4 16798     -7.452500e+02 -2.283700e+02
-7 16798     -1.669400e+02 -5.597200e+02
-4 16799     2.316000e+02 -2.394500e+02
-5 16799     1.618400e+02 2.183500e+02
-11 16799     -8.189001e+01 2.853000e+01
-4 16800     1.627800e+02 -2.511600e+02
-5 16800     1.998500e+02 9.412000e+01
-4 16801     -6.488500e+02 -2.515500e+02
-9 16801     5.464001e+01 -4.481500e+02
-4 16802     3.472400e+02 -2.766100e+02
-11 16802     1.723999e+01 2.232500e+02
-4 16803     -8.047900e+02 -2.828100e+02
-6 16803     1.020100e+02 -8.173400e+02
-4 16804     -6.523900e+02 -2.860400e+02
-6 16804     -2.001953e-02 -6.446100e+02
-7 16804     -1.233600e+02 -4.266000e+02
-9 16804     8.758002e+01 -4.253500e+02
-4 16805     -1.998700e+02 -3.055400e+02
-5 16805     4.229800e+02 -5.730000e+02
-6 16805     -3.039700e+02 5.346002e+01
-7 16805     -2.435700e+02 1.768900e+02
-9 16805     -2.210600e+02 7.312000e+01
-12 16805     -2.466300e+02 1.061000e+02
-4 16806     6.783002e+01 -3.126600e+02
-5 16806     3.189700e+02 -6.433002e+01
-11 16806     6.328998e+01 -1.960600e+02
-12 16806     -4.187400e+02 5.955500e+02
-4 16807     1.639600e+02 -3.180300e+02
-5 16807     3.105601e+02 1.059400e+02
-13 16807     1.045200e+02 3.755600e+02
-4 16808     -2.039400e+02 -3.267000e+02
-5 16808     4.656000e+02 -5.754000e+02
-6 16808     -2.527300e+02 6.340997e+01
-4 16809     -6.937600e+02 -3.277300e+02
-9 16809     1.534500e+02 -4.266000e+02
-4 16810     -8.341300e+02 -3.291300e+02
-9 16810     2.567400e+02 -5.212100e+02
-4 16811     -1.393900e+02 -3.297600e+02
-7 16811     -2.135700e+02 2.964600e+02
-8 16811     -1.240000e+02 -1.917999e+01
-10 16811     -1.566500e+02 4.100200e+02
-13 16811     1.945900e+02 -5.871002e+01
-14 16811     3.159800e+02 -5.241700e+02
-4 16812     -1.846800e+02 -3.303300e+02
-7 16812     -2.118200e+02 2.136300e+02
-12 16812     -2.147500e+02 1.481800e+02
-4 16813     -7.739700e+02 -3.484300e+02
-9 16813     2.271600e+02 -4.672000e+02
-4 16814     -7.194200e+02 -3.517200e+02
-9 16814     1.909000e+02 -4.274400e+02
-4 16815     -4.100300e+02 -3.708800e+02
-12 16815     -1.157001e+01 -1.769600e+02
-4 16816     2.863000e+01 -3.730200e+02
-6 16816     -4.634900e+02 5.577600e+02
-11 16816     1.613100e+02 -2.416000e+02
-12 16816     -2.894600e+02 5.406800e+02
-14 16816     3.305200e+02 -2.110400e+02
-4 16817     2.863000e+01 -3.730200e+02
-6 16817     -4.634900e+02 5.577600e+02
-11 16817     1.613100e+02 -2.416000e+02
-12 16817     -2.894600e+02 5.406800e+02
-14 16817     3.305200e+02 -2.110400e+02
-4 16818     6.525000e+01 -3.838100e+02
-8 16818     -1.458500e+02 2.778200e+02
-4 16819     3.432600e+02 -3.849700e+02
-5 16819     3.309500e+02 4.571700e+02
-11 16819     1.606600e+02 2.232200e+02
-14 16819     2.348700e+02 3.484300e+02
-4 16820     2.282300e+02 -3.871700e+02
-5 16820     4.035601e+02 2.287700e+02
-11 16820     1.316200e+02 4.332001e+01
-13 16820     1.774500e+02 4.832700e+02
-14 16820     3.023800e+02 1.309800e+02
-4 16821     1.916600e+02 -3.969100e+02
-13 16821     2.008700e+02 4.292300e+02
-14 16821     3.294900e+02 6.878998e+01
-4 16822     -3.468100e+02 -4.001900e+02
-6 16822     -9.130005e+00 -1.089200e+02
-9 16822     4.434998e+01 1.534998e+01
-12 16822     -3.390015e+00 -5.664001e+01
-4 16823     2.745800e+02 -4.094400e+02
-5 16823     4.227600e+02 3.113600e+02
-4 16824     -4.960300e+02 -4.110600e+02
-8 16824     2.324800e+02 -3.021400e+02
-12 16824     7.723999e+01 -2.772000e+02
-4 16825     1.378000e+02 -4.143900e+02
-5 16825     4.677800e+02 7.494000e+01
-6 16825     -4.531800e+02 8.171500e+02
-8 16825     -1.299400e+02 3.890500e+02
-4 16826     2.725300e+02 -4.142000e+02
-5 16826     4.300699e+02 3.098500e+02
-11 16826     1.678400e+02 1.089000e+02
-4 16827     1.661801e+02 -4.153400e+02
-8 16827     -1.367600e+02 4.305500e+02
-11 16827     1.824700e+02 -4.103003e+01
-13 16827     2.299800e+02 3.957600e+02
-14 16827     3.634399e+02 2.990002e+01
-4 16828     -1.163500e+02 -4.178200e+02
-6 16828     -2.820700e+02 2.866700e+02
-11 16828     2.469900e+02 -4.509500e+02
-12 16828     -1.352000e+02 2.954700e+02
-15 16828     8.421002e+01 5.487600e+02
-4 16829     -7.680600e+02 -4.186200e+02
-7 16829     4.931000e+01 -4.679800e+02
-9 16829     2.718800e+02 -4.168000e+02
-4 16830     -2.962300e+02 -4.184100e+02
-12 16830     -2.390015e+00 3.709003e+01
-4 16831     -2.962300e+02 -4.184100e+02
-6 16831     -1.427002e+01 -1.623999e+01
-8 16831     1.654200e+02 -5.473001e+01
-12 16831     -2.390015e+00 3.709003e+01
-4 16832     7.750000e+01 -4.266900e+02
-5 16832     4.978800e+02 -2.684003e+01
-6 16832     -3.970600e+02 6.902300e+02
-11 16832     2.233100e+02 -1.621000e+02
-4 16833     -1.678300e+02 -4.267100e+02
-5 16833     6.237900e+02 -4.845699e+02
-7 16833     -9.479999e+01 2.772300e+02
-13 16833     3.587500e+02 -8.308002e+01
-14 16833     5.264000e+02 -5.658700e+02
-4 16834     -3.392999e+01 -4.332100e+02
-8 16834     -5.996002e+01 1.405400e+02
-4 16835     -5.938900e+02 -4.352100e+02
-9 16835     1.907500e+02 -2.474400e+02
-4 16836     -7.777100e+02 -4.364301e+02
-6 16836     2.425600e+02 -6.491000e+02
-4 16837     -1.928200e+02 -4.427500e+02
-13 16837     3.867100e+02 -1.123200e+02
-4 16838     5.034003e+01 -4.558199e+02
-6 16838     -3.357200e+02 6.456600e+02
-12 16838     -1.663300e+02 6.141600e+02
-4 16839     -3.435200e+02 -4.590300e+02
-7 16839     -1.003003e+01 3.760999e+01
-4 16840     -2.145400e+02 -4.599100e+02
-7 16840     -4.231000e+01 2.174100e+02
-4 16841     1.677000e+02 -4.609700e+02
-11 16841     2.436899e+02 -3.220001e+01
-13 16841     2.853900e+02 4.053900e+02
-14 16841     4.291600e+02 3.929999e+01
-4 16842     1.453101e+02 -4.659900e+02
-11 16842     2.569399e+02 -6.138000e+01
-4 16843     -2.920100e+02 -4.698400e+02
-12 16843     6.991998e+01 7.984003e+01
-4 16844     1.261200e+02 -4.803000e+02
-5 16844     5.689100e+02 6.457001e+01
-6 16844     -3.344100e+02 8.169100e+02
-8 16844     -5.291998e+01 3.769800e+02
-11 16844     2.826600e+02 -8.409998e+01
-4 16845     1.745300e+02 -4.818800e+02
-5 16845     5.617600e+02 1.453400e+02
-11 16845     2.696600e+02 -2.009003e+01
-13 16845     3.092400e+02 4.185500e+02
-14 16845     4.576000e+02 5.371002e+01
-4 16846     -5.314900e+02 -4.827300e+02
-6 16846     1.793000e+02 -3.092800e+02
-12 16846     1.855400e+02 -2.718300e+02
-13 16846     4.937400e+02 -4.959301e+02
-15 16846     1.391800e+02 -2.714100e+02
-4 16847     2.797300e+02 -4.858199e+02
-5 16847     5.385699e+02 3.244100e+02
-13 16847     2.868199e+02 5.695500e+02
-14 16847     4.301200e+02 2.241300e+02
-4 16848     2.754800e+02 -4.860300e+02
-5 16848     5.388900e+02 3.174000e+02
-13 16848     2.887300e+02 5.638300e+02
-14 16848     4.328199e+02 2.187400e+02
-4 16849     6.731000e+01 -4.924900e+02
-5 16849     5.983000e+02 -3.269000e+01
-4 16850     6.731000e+01 -4.924900e+02
-5 16850     5.983000e+02 -3.269000e+01
-11 16850     3.150500e+02 -1.635300e+02
-4 16851     6.731000e+01 -4.924900e+02
-5 16851     5.983000e+02 -3.269000e+01
-4 16852     -2.526500e+02 -4.936000e+02
-12 16852     8.334003e+01 1.557600e+02
-4 16853     4.721002e+01 -4.972600e+02
-8 16853     -1.401001e+01 2.689400e+02
-9 16853     -2.514700e+02 3.705900e+02
-4 16854     1.536200e+02 -4.991700e+02
-11 16854     2.985699e+02 -4.565002e+01
-4 16855     6.337000e+01 -5.032000e+02
-5 16855     6.143800e+02 -3.709998e+01
-6 16855     -2.658900e+02 6.946600e+02
-4 16856     4.600000e+01 -5.169900e+02
-8 16856     6.969971e+00 2.690800e+02
-11 16856     3.533400e+02 -1.882500e+02
-13 16856     3.744800e+02 2.481200e+02
-4 16857     1.369800e+02 -5.180800e+02
-5 16857     6.199301e+02 8.725000e+01
-6 16857     -2.781400e+02 8.557300e+02
-8 16857     -1.544000e+01 3.955700e+02
-11 16857     3.260900e+02 -6.612000e+01
-4 16858     -9.890997e+01 -5.219500e+02
-7 16858     4.116998e+01 4.393500e+02
-9 16858     -1.516300e+02 1.777800e+02
-13 16858     4.102600e+02 5.131000e+01
-4 16859     -2.693300e+02 -5.227000e+02
-6 16859     1.099800e+02 9.672998e+01
-8 16859     2.621000e+02 2.620001e+01
-12 16859     1.304500e+02 1.478500e+02
-4 16860     1.483600e+02 -5.244301e+02
-8 16860     -1.279999e+01 4.104100e+02
-4 16861     -3.042700e+02 -5.260699e+02
-6 16861     1.298900e+02 4.665997e+01
-4 16862     -2.022000e+02 -5.296100e+02
-6 16862     5.581000e+01 2.067700e+02
-4 16863     1.348300e+02 -5.347000e+02
-14 16863     5.396300e+02 -6.979980e+00
-4 16864     -4.609900e+02 -5.391300e+02
-6 16864     2.202600e+02 -1.664000e+02
-7 16864     1.077300e+02 -7.289001e+01
-8 16864     3.509600e+02 -1.761300e+02
-12 16864     2.305900e+02 -1.270500e+02
-15 16864     2.011200e+02 -1.362900e+02
-4 16865     1.876600e+02 -5.393000e+02
-14 16865     5.339900e+02 8.104001e+01
-4 16866     8.392999e+01 -5.457700e+02
-6 16866     -2.113400e+02 7.525900e+02
-4 16867     -5.891100e+02 -5.494100e+02
-7 16867     1.498400e+02 -2.093500e+02
-4 16868     3.914001e+01 -5.510601e+02
-5 16868     6.878500e+02 -6.865997e+01
-8 16868     4.325000e+01 2.648900e+02
-4 16869     1.029300e+02 -5.532300e+02
-6 16869     -2.098700e+02 7.953000e+02
-4 16870     5.113000e+01 -5.541500e+02
-9 16870     -1.937000e+02 3.836900e+02
-4 16871     1.806100e+02 -5.638700e+02
-5 16871     6.773500e+02 1.644900e+02
-13 16871     4.033700e+02 4.379200e+02
-14 16871     5.690400e+02 7.359998e+01
-4 16872     1.650300e+02 -5.685200e+02
-8 16872     2.721997e+01 4.346200e+02
-13 16872     4.109900e+02 4.174400e+02
-14 16872     5.786100e+02 4.985999e+01
-4 16873     -3.459200e+02 1.264100e+02
-13 16873     -3.528100e+02 -5.323600e+02
-4 16874     1.584100e+02 9.970001e+01
-5 16874     -5.630500e+02 7.251001e+01
-11 16874     -5.176500e+02 -8.681000e+01
-13 16874     -6.166800e+02 3.029600e+02
-4 16875     1.425400e+02 9.309000e+01
-5 16875     -5.410800e+02 3.697998e+01
-11 16875     -5.086800e+02 -1.143500e+02
-13 16875     -5.973400e+02 2.760500e+02
-14 16875     -6.152500e+02 -6.473999e+01
-4 16876     -5.590002e+01 5.907001e+01
-13 16876     -4.230200e+02 -5.941998e+01
-14 16876     -4.541200e+02 -4.844800e+02
-4 16877     1.117500e+02 4.909998e+01
-11 16877     -4.639700e+02 -1.675500e+02
-13 16877     -4.797200e+02 2.225100e+02
-14 16877     -4.849300e+02 -1.351200e+02
-4 16878     2.237800e+02 4.688000e+01
-5 16878     -4.170500e+02 1.913200e+02
-14 16878     -4.937400e+02 8.567999e+01
-4 16879     1.004900e+02 4.416998e+01
-13 16879     -4.652300e+02 2.081000e+02
-14 16879     -4.695800e+02 -1.537600e+02
-4 16880     1.004900e+02 4.416998e+01
-13 16880     -4.652300e+02 2.081000e+02
-14 16880     -4.695800e+02 -1.537600e+02
-4 16881     1.478300e+02 3.956000e+01
-13 16881     -4.691600e+02 2.857400e+02
-14 16881     -4.642900e+02 -6.290002e+01
-4 16882     1.126200e+02 3.882001e+01
-11 16882     -4.543900e+02 -1.717300e+02
-4 16883     1.948101e+02 3.621002e+01
-5 16883     -3.807900e+02 1.296000e+02
-4 16884     1.107200e+02 9.010010e+00
-5 16884     -2.930300e+02 -3.890997e+01
-4 16885     7.734003e+01 -3.844000e+01
-5 16885     -1.721200e+02 -1.044900e+02
-13 16885     -2.810000e+02 1.778100e+02
-14 16885     -2.552300e+02 -2.016000e+02
-4 16886     1.958700e+02 -4.937000e+01
-13 16886     -2.993400e+02 3.700500e+02
-14 16886     -2.576000e+02 2.342999e+01
-4 16887     1.599301e+02 -5.740997e+01
-5 16887     -1.440300e+02 5.616998e+01
-11 16887     -3.502300e+02 -1.055400e+02
-13 16887     -2.704000e+02 3.131300e+02
-14 16887     -2.289500e+02 -4.328003e+01
-4 16888     8.950012e+00 -6.838000e+01
-5 16888     -1.057600e+02 -2.294700e+02
-8 16888     -5.849200e+02 1.126600e+02
-11 16888     -3.035800e+02 -3.350500e+02
-4 16889     2.284900e+02 -7.627002e+01
-13 16889     -2.710600e+02 4.309300e+02
-14 16889     -2.195600e+02 9.063000e+01
-4 16890     2.284900e+02 -7.627002e+01
-13 16890     -2.710600e+02 4.309300e+02
-14 16890     -2.195600e+02 9.063000e+01
-4 16891     2.353700e+02 -8.154999e+01
-13 16891     -2.658100e+02 4.434600e+02
-14 16891     -2.124900e+02 1.044300e+02
-4 16892     -1.751001e+01 -8.901001e+01
-5 16892     -6.334003e+01 -2.748800e+02
-10 16892     -6.967800e+02 5.522100e+02
-4 16893     7.519000e+01 -8.915997e+01
-8 16893     -5.750800e+02 2.393100e+02
-4 16894     -1.615002e+01 -1.006800e+02
-8 16894     -5.207700e+02 7.817999e+01
-11 16894     -2.459800e+02 -3.655900e+02
-12 16894     -7.913700e+02 3.014400e+02
-4 16895     2.643900e+02 -1.040100e+02
-11 16895     -2.780200e+02 6.262000e+01
-4 16896     3.158900e+02 -1.390800e+02
-11 16896     -1.996100e+02 1.566200e+02
-4 16897     1.128200e+02 -1.474100e+02
-5 16897     2.575000e+01 -1.515002e+01
-4 16898     7.421997e+01 -1.754400e+02
-8 16898     -4.327500e+02 2.556800e+02
-11 16898     -1.480400e+02 -2.134900e+02
-12 16898     -6.969700e+02 5.453900e+02
-4 16899     1.654100e+02 -2.010000e+02
-5 16899     1.121400e+02 9.014001e+01
-4 16900     -7.313100e+02 -2.379100e+02
-9 16900     1.089000e+02 -5.200699e+02
-4 16901     -7.610000e+02 -2.452000e+02
-9 16901     1.386899e+02 -5.353101e+02
-4 16902     -7.459900e+02 -2.501700e+02
-9 16902     1.307600e+02 -5.207900e+02
-4 16903     -6.725800e+02 -2.497500e+02
-9 16903     7.153998e+01 -4.691700e+02
-4 16904     -6.725800e+02 -2.497500e+02
-7 16904     -1.621900e+02 -4.706300e+02
-4 16905     1.496300e+02 -2.595300e+02
-13 16905     2.821002e+01 3.427000e+02
-14 16905     1.235400e+02 -2.340002e+01
-4 16906     -6.696200e+02 -2.662900e+02
-9 16906     8.353003e+01 -4.541899e+02
-4 16907     -3.599300e+02 -2.659700e+02
-8 16907     -1.148999e+01 -2.506700e+02
-12 16907     -2.098400e+02 -1.914100e+02
-13 16907     2.091000e+02 -3.830700e+02
-4 16908     3.124800e+02 -2.695700e+02
-5 16908     1.619000e+02 3.862500e+02
-11 16908     -9.900024e+00 1.654200e+02
-4 16909     -6.701800e+02 -2.790400e+02
-7 16909     -1.256200e+02 -4.500000e+02
-4 16910     -7.266800e+02 -3.077500e+02
-9 16910     1.626600e+02 -4.633800e+02
-4 16911     -7.437500e+02 -3.320900e+02
-7 16911     -4.853998e+01 -4.935800e+02
-4 16912     -7.378998e+01 -3.343700e+02
-8 16912     -1.634900e+02 5.607001e+01
-4 16913     -8.681400e+02 -3.570500e+02
-9 16913     2.997600e+02 -5.231400e+02
-4 16914     -3.968100e+02 -3.586900e+02
-12 16914     -3.798999e+01 -1.650800e+02
-4 16915     1.537500e+02 -3.628900e+02
-6 16915     -5.560700e+02 8.338000e+02
-4 16916     -4.171000e+02 -3.774800e+02
-7 16916     -8.795001e+01 -1.026200e+02
-4 16917     2.284700e+02 -3.807900e+02
-11 16917     1.248400e+02 4.285001e+01
-4 16918     -3.983700e+02 -3.926900e+02
-6 16918     1.301001e+01 -1.920699e+02
-8 16918     1.859300e+02 -1.861200e+02
-4 16919     1.397300e+02 -3.935200e+02
-8 16919     -1.549100e+02 3.914400e+02
-4 16920     1.397300e+02 -3.935200e+02
-8 16920     -1.549100e+02 3.914400e+02
-4 16921     -3.527800e+02 -3.988100e+02
-6 16921     -5.010010e+00 -1.196600e+02
-4 16922     1.440900e+02 -4.112300e+02
-11 16922     1.831900e+02 -7.173999e+01
-4 16923     -1.735100e+02 -4.200700e+02
-5 16923     6.174700e+02 -4.975699e+02
-6 16923     -1.027700e+02 1.871900e+02
-12 16923     -6.773999e+01 2.381200e+02
-13 16923     3.534900e+02 -9.278998e+01
-4 16924     -3.749000e+02 -4.475900e+02
-6 16924     7.085999e+01 -1.142000e+02
-8 16924     2.331400e+02 -1.292900e+02
-12 16924     7.765002e+01 -6.541998e+01
-4 16925     -1.710700e+02 -4.511899e+02
-14 16925     5.638199e+02 -5.649200e+02
-4 16926     2.685100e+02 -4.558000e+02
-5 16926     4.984600e+02 3.025500e+02
-14 16926     3.916000e+02 2.026900e+02
-4 16927     -2.233300e+02 -4.761300e+02
-5 16927     7.226200e+02 -5.707600e+02
-6 16927     2.101001e+01 1.387800e+02
-10 16927     -6.250000e+00 2.509300e+02
-15 16927     6.498999e+01 2.666600e+02
-4 16928     -2.233300e+02 -4.761300e+02
-6 16928     2.101001e+01 1.387800e+02
-4 16929     1.770020e+00 -4.808199e+02
-5 16929     5.943600e+02 -1.468800e+02
-4 16930     -3.059998e+00 -4.837100e+02
-5 16930     5.980500e+02 -1.545600e+02
-6 16930     -2.637700e+02 5.506900e+02
-4 16931     2.429993e+00 -4.922200e+02
-5 16931     6.110300e+02 -1.432500e+02
-6 16931     -2.525300e+02 5.666200e+02
-11 16931     3.328700e+02 -2.539800e+02
-12 16931     -8.092999e+01 5.426100e+02
-4 16932     -4.560400e+02 -4.985200e+02
-8 16932     3.164300e+02 -1.886300e+02
-4 16933     -2.285700e+02 -5.011200e+02
-5 16933     7.613400e+02 -5.713500e+02
-6 16933     5.751001e+01 1.466900e+02
-12 16933     8.203998e+01 1.995900e+02
-4 16934     -7.399902e-01 -5.235699e+02
-5 16934     6.539600e+02 -1.424200e+02
-6 16934     -2.061500e+02 5.739400e+02
-4 16935     -4.923400e+02 -5.247200e+02
-10 16935     9.378998e+01 -1.404200e+02
-4 16936     -2.661300e+02 -5.309900e+02
-12 16936     1.395800e+02 1.572000e+02
-4 16937     -4.040700e+02 -5.682400e+02
-7 16937     1.280400e+02 1.113000e+01
-13 16937     5.583600e+02 -3.244500e+02
-4 16938     -3.393100e+02 1.223100e+02
-13 16938     -3.486200e+02 -5.207700e+02
-4 16939     1.198600e+02 7.647998e+01
-13 16939     -5.467100e+02 2.322700e+02
-14 16939     -5.620500e+02 -1.191600e+02
-4 16940     1.198600e+02 7.647998e+01
-11 16940     -4.926900e+02 -1.564900e+02
-4 16941     1.031300e+02 6.340002e+01
-11 16941     -4.749000e+02 -1.793000e+02
-4 16942     1.463600e+02 1.494000e+01
-5 16942     -3.141500e+02 3.284998e+01
-13 16942     -4.093200e+02 2.843000e+02
-14 16942     -3.946600e+02 -6.807001e+01
-4 16943     5.753003e+01 1.415002e+01
-5 16943     -3.011700e+02 -1.395800e+02
-4 16944     3.060200e+02 -4.900024e+00
-11 16944     -3.866900e+02 1.382700e+02
-14 16944     -4.226700e+02 2.569500e+02
-4 16945     -6.619995e+00 -3.006000e+01
-5 16945     -1.781700e+02 -2.690300e+02
-13 16945     -2.788700e+02 4.201001e+01
-14 16945     -2.658700e+02 -3.674800e+02
-4 16946     2.735400e+02 -2.890997e+01
-5 16946     -2.656100e+02 2.884900e+02
-13 16946     -3.876600e+02 5.083000e+02
-14 16946     -3.457300e+02 1.833900e+02
-4 16947     -6.864001e+01 -5.546002e+01
-5 16947     -1.199500e+02 -3.835900e+02
-7 16947     -7.101500e+02 2.754000e+02
-8 16947     -5.782300e+02 -3.617999e+01
-11 16947     -3.095700e+02 -4.619900e+02
-13 16947     -2.189300e+02 -4.456000e+01
-14 16947     -2.007700e+02 -4.797400e+02
-4 16948     2.720500e+02 -5.616998e+01
-5 16948     -2.094300e+02 2.911300e+02
-4 16949     2.228600e+02 -7.152002e+01
-13 16949     -2.760400e+02 4.202600e+02
-14 16949     -2.261900e+02 7.891000e+01
-4 16950     3.048500e+02 -1.277800e+02
-11 16950     -2.175000e+02 1.398100e+02
-4 16951     -5.562000e+01 -1.579700e+02
-8 16951     -4.143400e+02 2.654001e+01
-12 16951     -6.382300e+02 2.514600e+02
-4 16952     -7.050400e+02 -2.136300e+02
-7 16952     -1.954700e+02 -5.278199e+02
-10 16952     -2.791400e+02 -5.676300e+02
-4 16953     -6.545900e+02 -2.251000e+02
-9 16953     3.450000e+01 -4.731500e+02
-4 16954     -3.596600e+02 -2.732900e+02
-7 16954     -2.330800e+02 -7.904999e+01
-8 16954     1.359985e+00 -2.380700e+02
-4 16955     -7.956100e+02 -2.886800e+02
-7 16955     -8.360999e+01 -5.723500e+02
-4 16956     -7.146100e+02 -3.178700e+02
-9 16956     1.623300e+02 -4.489399e+02
-4 16957     -6.978100e+02 -3.180700e+02
-9 16957     1.496300e+02 -4.356000e+02
-4 16958     -3.630900e+02 -3.572900e+02
-8 16958     1.266400e+02 -1.692700e+02
-4 16959     8.603003e+01 -3.827600e+02
-8 16959     -1.523800e+02 3.092400e+02
-4 16960     -1.327800e+02 -4.062000e+02
-11 16960     2.295200e+02 -4.805900e+02
-12 16960     -1.434100e+02 2.612100e+02
-13 16960     2.881200e+02 -2.790002e+01
-14 16960     4.359000e+02 -4.890601e+02
-4 16961     -1.182600e+02 -4.057000e+02
-6 16961     -2.991500e+02 2.748000e+02
-9 16961     -2.620600e+02 1.162400e+02
-4 16962     -1.394500e+02 -4.081300e+02
-6 16962     -2.721800e+02 2.365300e+02
-14 16962     4.408101e+02 -5.002600e+02
-4 16963     2.230000e+02 -4.181000e+02
-5 16963     4.539500e+02 2.214100e+02
-13 16963     2.189800e+02 4.784100e+02
-14 16963     3.508700e+02 1.246500e+02
-4 16964     1.719200e+02 -4.200100e+02
-14 16964     3.686801e+02 4.065002e+01
-4 16965     -7.625200e+02 -4.335900e+02
-7 16965     6.183002e+01 -4.513900e+02
-9 16965     2.760000e+02 -4.028100e+02
-4 16966     2.717400e+02 -4.326800e+02
-5 16966     4.605699e+02 3.070700e+02
-13 16966     2.235300e+02 5.526700e+02
-14 16966     3.563700e+02 2.072800e+02
-4 16967     -3.576000e+02 -4.493300e+02
-6 16967     5.971997e+01 -8.816998e+01
-4 16968     4.023999e+01 -4.703199e+02
-11 16968     2.935500e+02 -2.049500e+02
-14 16968     4.729000e+02 -1.661300e+02
-4 16969     -5.100600e+02 -4.714200e+02
-6 16969     1.608900e+02 -2.889200e+02
-8 16969     3.034800e+02 -2.744900e+02
-12 16969     1.654100e+02 -2.485400e+02
-4 16970     3.026700e+02 -5.079900e+02
-5 16970     5.619500e+02 3.655900e+02
-14 16970     4.532900e+02 2.647000e+02
-4 16971     -4.842000e+02 -5.160300e+02
-7 16971     8.657001e+01 -1.116700e+02
-12 16971     2.104301e+02 -1.755800e+02
-4 16972     2.256600e+02 -5.164200e+02
-5 16972     5.973199e+02 2.349600e+02
-11 16972     3.029600e+02 5.310999e+01
-13 16972     3.372500e+02 4.946800e+02
-14 16972     4.895500e+02 1.395200e+02
-4 16973     -5.457300e+02 -5.222800e+02
-6 16973     2.244000e+02 -2.970601e+02
-8 16973     3.529000e+02 -2.921700e+02
-12 16973     2.371600e+02 -2.617900e+02
-13 16973     5.345300e+02 -4.976400e+02
-4 16974     2.114800e+02 -5.312600e+02
-5 16974     6.239301e+02 2.115900e+02
-13 16974     3.592500e+02 4.761400e+02
-14 16974     5.155100e+02 1.180400e+02
-4 16975     2.590500e+02 -5.448101e+02
-5 16975     6.270800e+02 2.949100e+02
-13 16975     3.592700e+02 5.490400e+02
-4 16976     1.109400e+02 7.346997e+01
-5 16976     -4.705200e+02 -3.362000e+01
-4 16977     2.342400e+02 7.094000e+01
-5 16977     -4.759300e+02 2.163100e+02
-4 16978     1.737300e+02 6.476001e+01
-11 16978     -4.847400e+02 -7.184003e+01
-4 16979     2.300699e+02 5.391998e+01
-5 16979     -4.439600e+02 2.069600e+02
-11 16979     -4.832000e+02 1.245001e+01
-13 16979     -5.242900e+02 4.273500e+02
-14 16979     -5.113800e+02 1.010000e+02
-4 16980     6.754999e+01 3.234998e+01
-5 16980     -3.532700e+02 -1.163600e+02
-4 16981     2.006000e+01 2.888000e+01
-5 16981     -3.388000e+02 -2.145500e+02
-11 16981     -4.288600e+02 -3.125400e+02
-4 16982     3.502002e+01 2.912000e+01
-5 16982     -3.430700e+02 -1.812900e+02
-11 16982     -4.289200e+02 -2.943400e+02
-4 16983     3.212000e+01 -4.580017e+00
-5 16983     -2.452200e+02 -1.906400e+02
-4 16984     1.399600e+02 -4.630005e+00
-13 16984     -3.623000e+02 2.699500e+02
-14 16984     -3.409400e+02 -8.831000e+01
-4 16985     2.610699e+02 -1.058002e+01
-13 16985     -4.227200e+02 4.883200e+02
-4 16986     -8.469971e+00 -4.221997e+01
-5 16986     -1.523300e+02 -2.693300e+02
-7 16986     -7.815300e+02 3.823900e+02
-11 16986     -3.439200e+02 -3.663800e+02
-13 16986     -2.545500e+02 4.509998e+01
-4 16987     -9.260010e+00 -5.731000e+01
-5 16987     -1.241500e+02 -2.671300e+02
-4 16988     -4.364000e+02 -6.484003e+01
-7 16988     -4.950300e+02 -3.093000e+02
-13 16988     -3.272998e+01 -5.649200e+02
-4 16989     -3.694000e+01 -6.753998e+01
-7 16989     -6.998500e+02 3.496200e+02
-11 16989     -2.951800e+02 -4.040200e+02
-13 16989     -2.078900e+02 1.162000e+01
-14 16989     -1.807200e+02 -4.131300e+02
-4 16990     3.127100e+02 -6.676001e+01
-5 16990     -2.091000e+02 3.722600e+02
-14 16990     -2.896900e+02 2.603100e+02
-4 16991     -6.305200e+02 -1.014300e+02
-9 16991     -1.119400e+02 -5.568700e+02
-4 16992     -5.521500e+02 -1.604000e+02
-6 16992     -2.489400e+02 -6.506100e+02
-4 16993     1.581300e+02 -1.614700e+02
-5 16993     4.687000e+01 7.223999e+01
-4 16994     3.149399e+02 -1.789700e+02
-11 16994     -1.394600e+02 1.593800e+02
-4 16995     -4.372900e+02 -2.754200e+02
-6 16995     -1.626500e+02 -3.663199e+02
-7 16995     -2.009900e+02 -1.820000e+02
-12 16995     -1.511400e+02 -3.078900e+02
-13 16995     2.401600e+02 -4.745500e+02
-4 16996     -7.730400e+02 -2.799600e+02
-9 16996     1.734200e+02 -5.179600e+02
-4 16997     -7.951700e+02 -2.843400e+02
-6 16997     9.492999e+01 -8.065100e+02
-4 16998     -7.951700e+02 -2.843400e+02
-6 16998     9.492999e+01 -8.065100e+02
-4 16999     -7.871300e+02 -2.889100e+02
-7 16999     -8.759998e+01 -5.640200e+02
-4 17000     -3.398800e+02 -2.967900e+02
-6 17000     -1.651500e+02 -1.847700e+02
-12 17000     -1.665400e+02 -1.256300e+02
-4 17001     2.427800e+02 -3.113900e+02
-5 17001     2.753800e+02 2.491900e+02
-11 17001     2.876001e+01 5.673999e+01
-4 17002     -7.842100e+02 -3.228300e+02
-9 17002     2.160400e+02 -4.928700e+02
-4 17003     -4.448700e+02 -3.715000e+02
-12 17003     4.330017e+00 -2.289300e+02
-4 17004     2.791300e+02 -3.730500e+02
-14 17004     2.653900e+02 2.170500e+02
-4 17005     6.465997e+01 -3.873700e+02
-5 17005     4.396801e+02 -5.634003e+01
-6 17005     -4.588900e+02 6.440700e+02
-8 17005     -1.409600e+02 2.778700e+02
-4 17006     -4.055100e+02 -4.025600e+02
-6 17006     3.178998e+01 -1.940100e+02
-12 17006     3.067999e+01 -1.444200e+02
-4 17007     -4.150400e+02 -4.059900e+02
-6 17007     4.298999e+01 -2.046200e+02
-10 17007     -7.884003e+01 -8.978003e+01
-4 17008     -3.219600e+02 -4.375800e+02
-8 17008     1.977800e+02 -7.608002e+01
-4 17009     -2.533400e+02 -4.406300e+02
-12 17009     9.989990e+00 1.210000e+02
-4 17010     2.612400e+02 -4.468400e+02
-5 17010     4.860200e+02 2.914800e+02
-4 17011     9.509003e+01 -4.573000e+02
-8 17011     -6.887000e+01 3.326300e+02
-4 17012     2.296600e+02 -4.598199e+02
-11 17012     2.288900e+02 5.351999e+01
-4 17013     5.472998e+01 -4.690800e+02
-9 17013     -2.833400e+02 3.775100e+02
-4 17014     2.178600e+02 -4.699500e+02
-14 17014     4.284700e+02 1.213400e+02
-4 17015     7.527002e+01 -4.922800e+02
-5 17015     5.964100e+02 -1.750000e+01
-6 17015     -2.889600e+02 7.173000e+02
-11 17015     3.128700e+02 -1.522100e+02
-14 17015     4.964399e+02 -1.046600e+02
-4 17016     2.032400e+02 -5.153900e+02
-5 17016     6.059500e+02 1.965900e+02
-4 17017     1.741400e+02 -5.732600e+02
-5 17017     6.914100e+02 1.560600e+02
-4 17018     2.087900e+02 5.653998e+01
-5 17018     -4.438600e+02 1.621500e+02
-13 17018     -5.272900e+02 3.893800e+02
-14 17018     -5.179000e+02 5.976001e+01
-4 17019     2.099600e+02 3.216998e+01
-5 17019     -3.671100e+02 1.599300e+02
-4 17020     4.553003e+01 2.084003e+01
-5 17020     -3.188200e+02 -1.685400e+02
-11 17020     -4.259800e+02 -2.765000e+02
-4 17021     -1.977002e+01 4.450012e+00
-7 17021     -8.591600e+02 3.386200e+02
-13 17021     -3.387600e+02 1.308002e+01
-14 17021     -3.416700e+02 -3.997800e+02
-4 17022     -3.044000e+01 -1.181800e+02
-5 17022     -1.009003e+01 -2.909100e+02
-10 17022     -6.173800e+02 5.406800e+02
-13 17022     -1.351100e+02 3.632001e+01
-4 17023     1.702400e+02 -2.891500e+02
-5 17023     2.623700e+02 1.134100e+02
-13 17023     6.346997e+01 3.786900e+02
-14 17023     1.663199e+02 1.671002e+01
-4 17024     -7.113200e+02 -3.086400e+02
-9 17024     1.520500e+02 -4.520699e+02
-4 17025     1.615800e+02 -3.600500e+02
-5 17025     3.786000e+02 1.083200e+02
-14 17025     2.789301e+02 1.483002e+01
-4 17026     2.547300e+02 -3.723200e+02
-11 17026     1.108800e+02 7.903000e+01
-4 17027     -3.467600e+02 -3.791600e+02
-8 17027     1.451900e+02 -1.364800e+02
-4 17028     -1.955900e+02 -3.850900e+02
-5 17028     5.692200e+02 -5.486300e+02
-7 17028     -1.429000e+02 2.141500e+02
-13 17028     3.180000e+02 -1.340700e+02
-4 17029     1.834600e+02 -4.464200e+02
-13 17029     2.664500e+02 4.275500e+02
-4 17030     -4.280500e+02 -4.634000e+02
-6 17030     1.178500e+02 -1.783600e+02
-12 17030     1.227100e+02 -1.329100e+02
-4 17031     2.180500e+02 -4.935800e+02
-5 17031     5.686300e+02 2.189500e+02
-13 17031     3.136899e+02 4.800600e+02
-14 17031     4.621200e+02 1.229200e+02
-4 17032     5.840002e+01 -4.968700e+02
-6 17032     -2.727900e+02 6.815600e+02
-9 17032     -2.555700e+02 3.865600e+02
-4 17033     -2.737300e+02 -5.014301e+02
-6 17033     8.609003e+01 7.720001e+01
-8 17033     2.447200e+02 1.417999e+01
-12 17033     1.049900e+02 1.295500e+02
-4 17034     2.409998e+01 -5.388800e+02
-5 17034     6.737900e+02 -9.784003e+01
-11 17034     3.884900e+02 -2.168300e+02
-4 17035     3.039000e+02 -4.840997e+01
-5 17035     -2.298100e+02 3.471900e+02
-14 17035     -3.099600e+02 2.406300e+02
-4 17036     3.039000e+02 -4.840997e+01
-5 17036     -2.298100e+02 3.471900e+02
-14 17036     -3.099600e+02 2.406300e+02
-4 17037     1.639200e+02 -8.378003e+01
-5 17037     -9.635999e+01 6.919000e+01
-14 17037     -1.822100e+02 -2.956000e+01
-4 17038     1.535100e+02 -1.850200e+02
-14 17038     -4.390015e+00 -3.159998e+01
-4 17039     -7.156900e+02 -2.247800e+02
-6 17039     -2.620001e+01 -7.782000e+02
-7 17039     -1.779200e+02 -5.319500e+02
-4 17040     -4.331900e+02 -2.888700e+02
-7 17040     -1.836800e+02 -1.713000e+02
-13 17040     2.564700e+02 -4.641100e+02
-4 17041     -7.803000e+02 -3.443400e+02
-7 17041     -2.452002e+01 -5.221200e+02
-9 17041     2.292700e+02 -4.751300e+02
-4 17042     -5.943100e+02 -4.402200e+02
-7 17042     3.431000e+01 -2.733700e+02
-9 17042     1.939900e+02 -2.445000e+02
-4 17043     -3.260400e+02 -4.838199e+02
-6 17043     9.113000e+01 -1.403003e+01
-4 17044     1.798300e+02 -5.319000e+02
-5 17044     6.326500e+02 1.608900e+02
-13 17044     3.664301e+02 4.324600e+02
-14 17044     5.250699e+02 6.869000e+01
-4 17045     2.020300e+02 -5.460500e+02
-5 17045     6.511700e+02 1.984100e+02
-4 17046     -6.958300e+02 -2.011100e+02
-7 17046     -2.131700e+02 -5.271100e+02
-4 17047     2.382100e+02 -2.022800e+02
-5 17047     9.913000e+01 2.292600e+02
-13 17047     -7.169000e+01 4.692800e+02
-14 17047     1.341998e+01 1.250400e+02
-4 17048     -6.948600e+02 -2.205200e+02
-6 17048     -4.914001e+01 -7.589900e+02
-7 17048     -1.905100e+02 -5.128000e+02
-4 17049     -6.948600e+02 -2.205200e+02
-6 17049     -4.914001e+01 -7.589900e+02
-7 17049     -1.905100e+02 -5.128000e+02
-4 17050     -7.658800e+02 -3.541800e+02
-9 17050     2.260300e+02 -4.579200e+02
-4 17051     -7.536500e+02 -3.766900e+02
-9 17051     2.354100e+02 -4.346400e+02
-4 17052     2.113900e+02 -4.093200e+02
-5 17052     4.479900e+02 1.991500e+02
-11 17052     1.598000e+02 2.275000e+01
-13 17052     2.147500e+02 4.598700e+02
-14 17052     3.451000e+02 1.041400e+02
-4 17053     -7.374600e+02 -3.187800e+02
-9 17053     1.802400e+02 -4.635100e+02
-4 17054     1.774500e+02 -5.115500e+02
-5 17054     6.040900e+02 1.524900e+02
-11 17054     3.059800e+02 -1.416998e+01
-13 17054     3.428800e+02 4.248700e+02
-14 17054     4.973600e+02 6.033002e+01
-4 17055     1.449200e+02 -3.128700e+02
-5 17055     3.028800e+02 7.048999e+01
-4 17056     4.575000e+01 -3.495800e+02
-5 17056     3.826700e+02 -9.906000e+01
-12 17056     -3.380800e+02 5.646700e+02
-4 17057     2.177200e+02 -2.172700e+02
-5 17057     1.297100e+02 1.904100e+02
-4 17058     1.473700e+02 -3.674700e+02
-5 17058     3.926600e+02 8.553003e+01
-4 17059     -4.567200e+02 -4.972300e+02
-8 17059     3.162100e+02 -1.921300e+02
-12 17059     1.763700e+02 -1.506800e+02
-4 17060     2.098000e+02 -2.688800e+02
-5 17060     2.268900e+02 1.812100e+02
-5 17061     -3.286200e+02 3.943700e+02
-11 17061     -3.616600e+02 1.616600e+02
-5 17062     3.192500e+02 3.895000e+02
-11 17062     1.224600e+02 1.706100e+02
-5 17063     -3.367800e+02 3.817000e+02
-11 17063     -3.759900e+02 1.511500e+02
-5 17064     2.890100e+02 3.800200e+02
-11 17064     9.610999e+01 1.623800e+02
-5 17065     3.875400e+02 3.801800e+02
-11 17065     1.520600e+02 1.638100e+02
-14 17065     2.867900e+02 2.756900e+02
-5 17066     -8.741998e+01 3.730900e+02
-11 17066     -2.135100e+02 1.474500e+02
-5 17067     1.069900e+02 3.670300e+02
-11 17067     -5.645001e+01 1.473500e+02
-14 17067     1.825000e+01 2.600500e+02
-5 17068     1.069900e+02 3.670300e+02
-11 17068     -5.645001e+01 1.473500e+02
-5 17069     -3.863900e+02 3.443000e+02
-11 17069     -4.228000e+02 1.209200e+02
-5 17070     -1.013600e+02 3.413200e+02
-11 17070     -2.330600e+02 1.222100e+02
-5 17071     -3.656900e+02 3.384200e+02
-11 17071     -4.085900e+02 1.172700e+02
-5 17072     -4.295600e+02 3.337900e+02
-11 17072     -4.537400e+02 1.120800e+02
-14 17072     -5.050100e+02 2.253400e+02
-5 17073     -2.218000e+02 3.130500e+02
-11 17073     -3.382000e+02 9.789001e+01
-13 17073     -3.514500e+02 5.309000e+02
-14 17073     -3.024200e+02 2.054500e+02
-5 17074     -2.104700e+02 3.048900e+02
-11 17074     -3.269400e+02 9.148999e+01
-13 17074     -3.409200e+02 5.245700e+02
-14 17074     -2.907800e+02 1.980900e+02
-5 17075     -2.276200e+02 2.614700e+02
-11 17075     -3.412600e+02 5.748999e+01
-5 17076     1.031800e+02 2.604700e+02
-11 17076     -1.133300e+02 6.014999e+01
-5 17077     -9.506000e+01 2.501300e+02
-11 17077     -2.809800e+02 4.907001e+01
-5 17078     -2.928700e+02 2.432300e+02
-11 17078     -3.815800e+02 4.370001e+01
-13 17078     -4.065700e+02 4.658500e+02
-14 17078     -3.711500e+02 1.368800e+02
-5 17079     -1.293900e+02 1.872600e+02
-11 17079     -3.191900e+02 -1.250000e+00
-5 17080     5.956300e+02 1.175300e+02
-11 17080     3.028400e+02 -4.196002e+01
-14 17080     4.915100e+02 2.716998e+01
-5 17081     3.316100e+02 1.129400e+02
-8 17081     -2.401100e+02 4.262600e+02
-5 17082     5.935100e+02 1.105500e+02
-11 17082     3.005601e+02 -4.703998e+01
-14 17082     4.893300e+02 2.021002e+01
-5 17083     3.675601e+02 1.082100e+02
-6 17083     -5.814400e+02 8.498600e+02
-5 17084     4.249399e+02 1.043600e+02
-6 17084     -5.105800e+02 8.517700e+02
-5 17085     4.713199e+02 9.151001e+01
-6 17085     -4.524500e+02 8.399400e+02
-5 17086     6.729600e+02 8.909003e+01
-6 17086     -2.225100e+02 8.597500e+02
-5 17087     4.277900e+02 8.582001e+01
-6 17087     -5.033200e+02 8.271300e+02
-8 17087     -1.624200e+02 3.995600e+02
-14 17087     3.290200e+02 -6.409973e+00
-5 17088     6.065800e+02 7.603003e+01
-6 17088     -2.929200e+02 8.366500e+02
-8 17088     -2.567999e+01 3.856800e+02
-5 17089     3.893800e+02 6.889001e+01
-6 17089     -5.459800e+02 7.988300e+02
-14 17089     2.917700e+02 -2.371002e+01
-5 17090     5.630699e+02 6.765997e+01
-6 17090     -3.416300e+02 8.202700e+02
-5 17091     2.009998e+01 6.265997e+01
-8 17091     -5.033800e+02 3.901900e+02
-14 17091     -6.829999e+01 -3.573999e+01
-5 17092     5.710601e+02 4.917999e+01
-6 17092     -3.288200e+02 7.969200e+02
-14 17092     4.699800e+02 -3.975000e+01
-5 17093     3.857100e+02 4.752002e+01
-11 17093     1.164600e+02 -1.044200e+02
-14 17093     2.895000e+02 -4.457001e+01
-5 17094     -5.544000e+01 4.095001e+01
-8 17094     -5.718400e+02 3.712900e+02
-14 17094     -1.421100e+02 -5.771002e+01
-5 17095     3.781000e+02 3.910999e+01
-6 17095     -5.516100e+02 7.589400e+02
-8 17095     -1.962500e+02 3.620800e+02
-14 17095     2.821400e+02 -5.239001e+01
-5 17096     6.683300e+02 3.732001e+01
-6 17096     -2.193800e+02 7.942100e+02
-14 17096     5.645699e+02 -4.897998e+01
-5 17097     6.683300e+02 3.732001e+01
-6 17097     -2.193800e+02 7.942100e+02
-14 17097     5.645699e+02 -4.897998e+01
-5 17098     7.510000e+02 2.182001e+01
-6 17098     -1.287900e+02 7.849900e+02
-8 17098     8.090002e+01 3.366000e+02
-5 17099     5.920300e+02 1.778998e+01
-6 17099     -2.995000e+02 7.620500e+02
-11 17099     3.059900e+02 -1.230400e+02
-5 17100     5.437900e+02 1.340997e+01
-6 17100     -3.527500e+02 7.476000e+02
-5 17101     6.100500e+02 -2.909973e+00
-6 17101     -2.759200e+02 7.355800e+02
-5 17102     3.398900e+02 -3.299988e+00
-8 17102     -2.240700e+02 3.246000e+02
-14 17102     2.459301e+02 -9.359998e+01
-5 17103     3.398900e+02 -3.299988e+00
-8 17103     -2.240700e+02 3.246000e+02
-14 17103     2.459301e+02 -9.359998e+01
-5 17104     6.609700e+02 -2.279999e+01
-6 17104     -2.177100e+02 7.190400e+02
-5 17105     1.914301e+02 -2.581000e+01
-11 17105     -5.369000e+01 -1.670800e+02
-5 17106     4.940100e+02 -2.934998e+01
-6 17106     -4.011900e+02 6.863100e+02
-11 17106     2.195700e+02 -1.638700e+02
-14 17106     3.972800e+02 -1.167900e+02
-5 17107     5.864000e+02 -3.140997e+01
-6 17107     -2.970800e+02 6.970700e+02
-5 17108     1.543800e+02 -3.347998e+01
-12 17108     -6.204800e+02 6.122700e+02
-5 17109     4.815900e+02 -4.503998e+01
-6 17109     -4.125900e+02 6.652400e+02
-5 17110     4.757400e+02 -4.558002e+01
-6 17110     -4.189700e+02 6.629700e+02
-5 17111     3.716300e+02 -4.738000e+01
-6 17111     -5.400900e+02 6.440700e+02
-5 17112     3.340601e+02 -4.894000e+01
-12 17112     -4.045100e+02 6.151900e+02
-5 17113     2.579900e+02 -5.954999e+01
-12 17113     -4.903300e+02 5.932800e+02
-5 17114     3.731801e+02 -6.231000e+01
-6 17114     -5.349900e+02 6.249900e+02
-5 17115     7.354600e+02 -6.765997e+01
-9 17115     -1.587700e+02 3.676100e+02
-5 17116     6.193400e+02 -6.977002e+01
-6 17116     -2.550800e+02 6.557800e+02
-5 17117     5.588199e+02 -7.344000e+01
-6 17117     -3.199200e+02 6.420500e+02
-5 17118     4.705900e+02 -7.629999e+01
-12 17118     -2.453500e+02 5.982200e+02
-14 17118     3.758400e+02 -1.634500e+02
-5 17119     7.638500e+02 -8.973999e+01
-6 17119     -1.006800e+02 6.525000e+02
-12 17119     6.201001e+01 6.103900e+02
-5 17120     2.377100e+02 -9.282001e+01
-12 17120     -5.057700e+02 5.518700e+02
-5 17121     7.473000e+02 -9.615002e+01
-8 17121     8.660999e+01 2.421000e+02
-12 17121     4.642999e+01 6.021300e+02
-5 17122     7.791998e+01 -1.037000e+02
-7 17122     -5.752200e+02 5.809700e+02
-14 17122     -8.429993e+00 -1.970500e+02
-5 17123     3.741000e+02 -1.049100e+02
-6 17123     -5.240500e+02 5.713400e+02
-12 17123     -3.470200e+02 5.551400e+02
-5 17124     3.741000e+02 -1.049100e+02
-6 17124     -5.240500e+02 5.713400e+02
-12 17124     -3.470200e+02 5.551400e+02
-5 17125     4.035800e+02 -1.167100e+02
-6 17125     -4.869400e+02 5.613600e+02
-5 17126     2.687000e+02 -1.223100e+02
-12 17126     -4.631700e+02 5.219100e+02
-5 17127     1.876100e+02 -1.237300e+02
-7 17127     -4.535200e+02 5.719000e+02
-5 17128     1.876100e+02 -1.237300e+02
-7 17128     -4.535200e+02 5.719000e+02
-8 17128     -3.371800e+02 2.186500e+02
-5 17129     1.163200e+02 -1.254200e+02
-7 17129     -5.289500e+02 5.627300e+02
-5 17130     5.634800e+02 -1.291000e+02
-6 17130     -3.050800e+02 5.743000e+02
-12 17130     -1.364800e+02 5.491000e+02
-5 17131     4.819200e+02 -1.294800e+02
-12 17131     -2.227900e+02 5.409800e+02
-5 17132     3.064000e+02 -1.304300e+02
-12 17132     -4.184300e+02 5.174700e+02
-5 17133     4.797400e+02 -1.325600e+02
-12 17133     -2.252200e+02 5.367500e+02
-5 17134     2.720601e+02 -1.375900e+02
-12 17134     -4.555300e+02 5.045400e+02
-5 17135     4.726400e+02 -1.379400e+02
-12 17135     -2.315900e+02 5.295500e+02
-5 17136     3.790601e+02 -1.392900e+02
-12 17136     -3.346300e+02 5.170900e+02
-5 17137     6.803400e+02 -1.420600e+02
-6 17137     -1.784200e+02 5.788400e+02
-14 17137     5.833101e+02 -2.226000e+02
-5 17138     4.910100e+02 -1.444700e+02
-6 17138     -3.817000e+02 5.430400e+02
-5 17139     1.931700e+02 -1.455300e+02
-7 17139     -4.434700e+02 5.509000e+02
-5 17140     8.462000e+01 -1.460600e+02
-7 17140     -5.574800e+02 5.382300e+02
-5 17141     2.884600e+02 -1.500400e+02
-7 17141     -3.444800e+02 5.557900e+02
-12 17141     -4.345700e+02 4.925300e+02
-5 17142     3.720900e+02 -1.509000e+02
-12 17142     -3.400500e+02 5.029700e+02
-5 17143     7.435601e+02 -1.537500e+02
-6 17143     -1.117900e+02 5.751100e+02
-12 17143     5.078998e+01 5.404900e+02
-5 17144     3.700000e+02 -1.543300e+02
-6 17144     -5.179200e+02 5.087500e+02
-5 17145     3.700000e+02 -1.543300e+02
-6 17145     -5.179200e+02 5.087500e+02
-12 17145     -3.416300e+02 4.988100e+02
-5 17146     2.848300e+02 -1.644600e+02
-7 17146     -3.450600e+02 5.415900e+02
-5 17147     1.891500e+02 -1.654800e+02
-12 17147     -5.451700e+02 4.611800e+02
-5 17148     3.316200e+02 -1.690200e+02
-7 17148     -2.968100e+02 5.420100e+02
-12 17148     -3.814300e+02 4.769000e+02
-14 17148     2.423800e+02 -2.564500e+02
-5 17149     -2.619995e+00 -1.729000e+02
-8 17149     -4.975600e+02 1.696200e+02
-5 17150     3.949100e+02 -1.747700e+02
-12 17150     -3.096800e+02 4.791300e+02
-5 17151     3.115500e+02 -1.752700e+02
-6 17151     -5.813800e+02 4.715900e+02
-12 17151     -4.024100e+02 4.672800e+02
-5 17152     3.115500e+02 -1.752700e+02
-6 17152     -5.813800e+02 4.715900e+02
-5 17153     3.372200e+02 -1.794700e+02
-6 17153     -5.506400e+02 4.713400e+02
-8 17153     -2.104500e+02 1.717900e+02
-12 17153     -3.731300e+02 4.663700e+02
-14 17153     2.479301e+02 -2.665000e+02
-5 17154     -1.190002e+01 -1.833700e+02
-12 17154     -7.823300e+02 4.084600e+02
-5 17155     -1.190002e+01 -1.833700e+02
-12 17155     -7.823300e+02 4.084600e+02
-5 17156     2.719200e+02 -1.847900e+02
-7 17156     -3.542700e+02 5.206400e+02
-5 17157     2.555900e+02 -1.874400e+02
-7 17157     -3.706500e+02 5.160500e+02
-5 17158     2.995100e+02 -1.891400e+02
-7 17158     -3.256200e+02 5.190600e+02
-5 17159     2.844700e+02 -1.906300e+02
-7 17159     -3.405800e+02 5.161000e+02
-12 17159     -4.292900e+02 4.463200e+02
-5 17160     4.333600e+02 -1.906400e+02
-12 17160     -2.645400e+02 4.664300e+02
-5 17161     1.107000e+02 -1.929900e+02
-12 17161     -6.303700e+02 4.174800e+02
-5 17162     -6.690002e+00 -1.941500e+02
-8 17162     -4.985600e+02 1.491300e+02
-5 17163     3.102300e+02 -1.944600e+02
-12 17163     -3.999000e+02 4.455900e+02
-5 17164     5.434301e+02 -1.963300e+02
-6 17164     -3.144300e+02 4.908900e+02
-14 17164     4.515100e+02 -2.789700e+02
-5 17165     1.562100e+02 -1.968100e+02
-12 17165     -5.756600e+02 4.196400e+02
-5 17166     1.799988e+00 -2.005600e+02
-12 17166     -7.598000e+02 3.904900e+02
-5 17167     1.488400e+02 -2.041000e+02
-12 17167     -5.820800e+02 4.108600e+02
-5 17168     3.609000e+02 -2.136300e+02
-12 17168     -3.418800e+02 4.341300e+02
-5 17169     4.386100e+02 -2.302400e+02
-12 17169     -2.511800e+02 4.241900e+02
-5 17170     2.335699e+02 -2.354100e+02
-7 17170     -3.847800e+02 4.674100e+02
-5 17171     -1.124800e+02 -2.363000e+02
-7 17171     -7.455300e+02 4.210300e+02
-10 17171     -7.717500e+02 5.913000e+02
-11 17171     -3.100100e+02 -3.399900e+02
-5 17172     -1.084600e+02 -2.364900e+02
-8 17172     -5.869500e+02 1.053400e+02
-5 17173     5.279301e+02 -2.404000e+02
-6 17173     -3.229000e+02 4.365000e+02
-14 17173     4.381700e+02 -3.223400e+02
-5 17174     3.821600e+02 -2.424300e+02
-7 17174     -2.346200e+02 4.767600e+02
-14 17174     2.946200e+02 -3.282300e+02
-5 17175     5.218500e+02 -2.525300e+02
-8 17175     -6.166998e+01 1.122500e+02
-5 17176     4.169000e+01 -2.539800e+02
-7 17176     -5.763700e+02 4.252300e+02
-8 17176     -4.504800e+02 9.551999e+01
-10 17176     -5.707300e+02 5.858300e+02
-14 17176     -4.126001e+01 -3.460700e+02
-5 17177     -8.685999e+01 -2.593600e+02
-7 17177     -7.110800e+02 4.017500e+02
-10 17177     -7.307000e+02 5.660700e+02
-11 17177     -2.865900e+02 -3.588400e+02
-5 17178     -6.765997e+01 -2.600100e+02
-8 17178     -5.458200e+02 8.529001e+01
-10 17178     -7.057000e+02 5.677000e+02
-5 17179     -6.278998e+01 -2.602700e+02
-10 17179     -6.994700e+02 5.678500e+02
-12 17179     -8.211400e+02 3.084400e+02
-14 17179     -1.450700e+02 -3.544000e+02
-5 17180     -1.207100e+02 -2.606400e+02
-7 17180     -7.473200e+02 3.956800e+02
-8 17180     -5.952500e+02 8.173001e+01
-14 17180     -2.027500e+02 -3.563900e+02
-5 17181     2.489600e+02 -2.667400e+02
-10 17181     -3.140800e+02 5.935400e+02
-14 17181     1.637400e+02 -3.538600e+02
-5 17182     -1.179100e+02 -2.690600e+02
-7 17182     -7.420800e+02 3.876600e+02
-10 17182     -7.675000e+02 5.520400e+02
-11 17182     -3.134300e+02 -3.663100e+02
-5 17183     1.811100e+02 -2.861300e+02
-11 17183     -1.048900e+02 -3.868800e+02
-12 17183     -5.240300e+02 3.232100e+02
-5 17184     4.089100e+02 -3.032100e+02
-6 17184     -4.411500e+02 3.371600e+02
-7 17184     -1.994600e+02 4.229300e+02
-10 17184     -1.203000e+02 5.666400e+02
-11 17184     1.619600e+02 -3.902400e+02
-14 17184     3.228900e+02 -3.875600e+02
-5 17185     2.839500e+02 -3.058200e+02
-7 17185     -3.201000e+02 4.063100e+02
-11 17185     4.827002e+01 -3.941900e+02
-5 17186     2.839500e+02 -3.058200e+02
-8 17186     -2.402400e+02 5.941000e+01
-12 17186     -4.039800e+02 3.185500e+02
-5 17187     3.846200e+02 -3.100800e+02
-7 17187     -2.219600e+02 4.140300e+02
-10 17187     -1.480100e+02 5.572700e+02
-14 17187     2.989200e+02 -3.948400e+02
-5 17188     2.540100e+02 -3.156900e+02
-7 17188     -3.479100e+02 3.932600e+02
-5 17189     2.540100e+02 -3.156900e+02
-7 17189     -3.479100e+02 3.932600e+02
-5 17190     5.802000e+02 -3.285100e+02
-6 17190     -2.421900e+02 3.467700e+02
-10 17190     5.710999e+01 5.489300e+02
-11 17190     2.988101e+02 -4.112200e+02
-12 17190     -9.021002e+01 3.466200e+02
-13 17190     3.336300e+02 3.609003e+01
-5 17191     5.811801e+02 -3.320600e+02
-10 17191     5.591998e+01 5.448800e+02
-5 17192     5.902800e+02 -3.349600e+02
-6 17192     -2.300000e+02 3.419000e+02
-10 17192     6.588000e+01 5.425900e+02
-5 17193     1.069800e+02 -3.362900e+02
-10 17193     -4.702600e+02 5.007300e+02
-15 17193     -4.576500e+02 5.455800e+02
-5 17194     -2.809003e+01 -3.362800e+02
-8 17194     -5.010100e+02 1.498001e+01
-5 17195     2.583002e+01 -3.364000e+02
-7 17195     -5.725300e+02 3.439500e+02
-14 17195     -5.566998e+01 -4.283200e+02
-15 17195     -5.701400e+02 5.338700e+02
-5 17196     1.867999e+01 -3.387500e+02
-10 17196     -5.758300e+02 4.898200e+02
-14 17196     -6.254999e+01 -4.308100e+02
-5 17197     -1.112400e+02 -3.416200e+02
-8 17197     -5.754300e+02 5.570007e+00
-14 17197     -1.924800e+02 -4.372900e+02
-5 17198     9.969000e+01 -3.431700e+02
-7 17198     -4.960700e+02 3.482900e+02
-10 17198     -4.777400e+02 4.932100e+02
-14 17198     1.802002e+01 -4.336300e+02
-15 17198     -4.657600e+02 5.364500e+02
-5 17199     -1.328400e+02 -3.562700e+02
-7 17199     -7.323000e+02 3.008800e+02
-10 17199     -7.571800e+02 4.517100e+02
-14 17199     -2.141300e+02 -4.524200e+02
-5 17200     -1.476300e+02 -3.594100e+02
-10 17200     -7.733400e+02 4.472400e+02
-14 17200     -2.285700e+02 -4.559301e+02
-5 17201     -1.536700e+02 -3.622300e+02
-10 17201     -7.796300e+02 4.430800e+02
-5 17202     5.065800e+02 -3.665500e+02
-6 17202     -3.113800e+02 2.885000e+02
-5 17203     -1.260400e+02 -3.687000e+02
-10 17203     -7.433000e+02 4.396500e+02
-5 17204     1.753200e+02 -3.723800e+02
-7 17204     -4.131600e+02 3.319500e+02
-8 17204     -3.217600e+02 -4.609985e+00
-14 17204     9.603998e+01 -4.608000e+02
-5 17205     -1.054000e+02 -3.771300e+02
-7 17205     -6.969600e+02 2.857200e+02
-8 17205     -5.654700e+02 -2.784000e+01
-10 17205     -7.159800e+02 4.332200e+02
-14 17205     -1.858700e+02 -4.728199e+02
-15 17205     -7.368200e+02 4.612600e+02
-5 17206     4.799805e-01 -3.872800e+02
-10 17206     -5.840200e+02 4.341200e+02
-11 17206     -2.019000e+02 -4.633200e+02
-5 17207     -1.001100e+02 -3.916800e+02
-10 17207     -7.049600e+02 4.186100e+02
-5 17208     1.470600e+02 -4.505200e+02
-7 17208     -4.416200e+02 2.552800e+02
-5 17209     3.963199e+02 -4.714100e+02
-6 17209     -3.983700e+02 1.465200e+02
-10 17209     -1.658700e+02 3.771000e+02
-12 17209     -2.630500e+02 1.765100e+02
-14 17209     3.128300e+02 -5.563199e+02
-5 17210     3.809200e+02 -4.956200e+02
-7 17210     -2.314000e+02 2.454900e+02
-8 17210     -1.283000e+02 -5.557999e+01
-10 17210     -1.866900e+02 3.488200e+02
-12 17210     -2.755700e+02 1.500000e+02
-5 17211     2.877100e+02 -5.015200e+02
-7 17211     -3.143800e+02 2.284700e+02
-5 17212     2.664900e+02 -5.043400e+02
-15 17212     -2.685000e+02 3.510600e+02
-5 17213     6.402800e+02 -5.046200e+02
-6 17213     -7.614001e+01 1.849100e+02
-10 17213     -7.075000e+01 3.169900e+02
-5 17214     4.644700e+02 -5.064800e+02
-6 17214     -2.822500e+02 1.330800e+02
-10 17214     -1.810400e+02 3.213200e+02
-12 17214     -2.088600e+02 1.780800e+02
-15 17214     -1.300900e+02 3.452700e+02
-5 17215     5.157800e+02 -5.089800e+02
-6 17215     -2.230100e+02 1.443200e+02
-5 17216     5.042200e+02 -5.170601e+02
-6 17216     -2.317000e+02 1.336800e+02
-12 17216     -1.696700e+02 1.803500e+02
-5 17217     3.654700e+02 -5.249500e+02
-6 17217     -4.127700e+02 8.000000e+01
-5 17218     5.029000e+02 -5.271700e+02
-6 17218     -2.299600e+02 1.228800e+02
-5 17219     4.875800e+02 -5.322700e+02
-6 17219     -2.439700e+02 1.134800e+02
-10 17219     -1.776200e+02 2.910800e+02
-12 17219     -1.858000e+02 1.622900e+02
-5 17220     3.383700e+02 -5.328101e+02
-6 17220     -4.408400e+02 6.402002e+01
-5 17221     6.030699e+02 -5.332100e+02
-6 17221     -1.073300e+02 1.466400e+02
-7 17221     -1.156600e+02 2.313800e+02
-10 17221     -1.103900e+02 2.846500e+02
-12 17221     -7.759003e+01 2.006500e+02
-15 17221     -5.467999e+01 3.045700e+02
-5 17222     4.505300e+02 -5.343000e+02
-6 17222     -2.876100e+02 1.004500e+02
-12 17222     -2.208000e+02 1.489900e+02
-5 17223     4.814500e+02 -5.380100e+02
-6 17223     -2.481700e+02 1.062500e+02
-5 17224     4.263500e+02 -5.401600e+02
-10 17224     -2.310500e+02 2.807200e+02
-15 17224     -1.880100e+02 2.973500e+02
-5 17225     4.780800e+02 -5.411899e+02
-12 17225     -1.951300e+02 1.518900e+02
-5 17226     4.906200e+02 -5.409600e+02
-6 17226     -2.379200e+02 1.056400e+02
-5 17227     4.741700e+02 -5.418000e+02
-6 17227     -2.553800e+02 1.000900e+02
-12 17227     -1.997700e+02 1.503700e+02
-5 17228     4.741700e+02 -5.418000e+02
-6 17228     -2.553800e+02 1.000900e+02
-12 17228     -1.997700e+02 1.503700e+02
-15 17228     -1.487700e+02 2.962400e+02
-5 17229     5.588000e+02 -5.441400e+02
-6 17229     -1.517300e+02 1.233700e+02
-12 17229     -1.205800e+02 1.778100e+02
-15 17229     -9.950000e+01 2.889400e+02
-5 17230     5.528101e+02 -5.501000e+02
-6 17230     -1.568500e+02 1.154400e+02
-15 17230     -1.063100e+02 2.810500e+02
-5 17231     1.248900e+02 -5.514900e+02
-15 17231     -4.472000e+02 2.739100e+02
-5 17232     4.827200e+02 -5.542700e+02
-6 17232     -2.414100e+02 8.946997e+01
-12 17232     -1.890700e+02 1.403100e+02
-5 17233     4.801600e+02 -5.578900e+02
-6 17233     -2.429100e+02 8.542999e+01
-12 17233     -1.915500e+02 1.364600e+02
-5 17234     4.049399e+02 -5.627000e+02
-12 17234     -2.664800e+02 1.116900e+02
-15 17234     -2.213200e+02 2.656900e+02
-5 17235     4.821300e+02 -5.632900e+02
-6 17235     -2.387300e+02 8.007001e+01
-12 17235     -1.889000e+02 1.317400e+02
-5 17236     3.961300e+02 -5.669500e+02
-6 17236     -3.339200e+02 5.185999e+01
-10 17236     -2.687500e+02 2.487400e+02
-12 17236     -2.752600e+02 1.054500e+02
-15 17236     -2.334600e+02 2.589700e+02
-5 17237     4.008800e+02 -5.702300e+02
-6 17237     -3.275900e+02 4.953003e+01
-10 17237     -2.643000e+02 2.460500e+02
-12 17237     -2.699400e+02 1.035500e+02
-15 17237     -2.282900e+02 2.558900e+02
-5 17238     4.008800e+02 -5.702300e+02
-6 17238     -3.275900e+02 4.953003e+01
-10 17238     -2.643000e+02 2.460500e+02
-12 17238     -2.699400e+02 1.035500e+02
-15 17238     -2.282900e+02 2.558900e+02
-5 17239     4.232300e+02 -5.704800e+02
-6 17239     -3.038300e+02 5.571002e+01
-15 17239     -2.014100e+02 2.579700e+02
-5 17240     4.730000e+02 -5.748000e+02
-6 17240     -2.444100e+02 6.559003e+01
-5 17241     4.617900e+02 -5.764800e+02
-6 17241     -2.559300e+02 6.165997e+01
-12 17241     -2.090600e+02 1.149600e+02
-5 17242     6.199500e+02 -5.774700e+02
-10 17242     -1.034100e+02 2.369200e+02
-12 17242     -5.625000e+01 1.607200e+02
-15 17242     -4.652002e+01 2.493100e+02
-5 17243     3.651400e+02 -5.778000e+02
-6 17243     -3.958600e+02 2.326001e+01
-5 17244     3.651400e+02 -5.778000e+02
-6 17244     -3.958600e+02 2.326001e+01
-9 17244     -3.154700e+02 -2.720001e+01
-5 17245     4.205200e+02 -5.799399e+02
-10 17245     -2.456500e+02 2.365300e+02
-5 17246     4.587600e+02 -5.806000e+02
-6 17246     -2.574000e+02 5.575000e+01
-15 17246     -1.802800e+02 2.440900e+02
-5 17247     6.555601e+02 -5.879399e+02
-6 17247     -4.026001e+01 1.045800e+02
-8 17247     1.462100e+02 3.217999e+01
-10 17247     -7.308002e+01 2.276700e+02
-12 17247     -1.967999e+01 1.592300e+02
-15 17247     -1.153998e+01 2.391300e+02
-5 17248     3.909301e+02 -5.896600e+02
-6 17248     -3.315500e+02 2.675000e+01
-5 17249     4.597700e+02 -5.944900e+02
-6 17249     -2.517600e+02 4.200000e+01
-10 17249     -2.249600e+02 2.193100e+02
-12 17249     -2.096300e+02 9.700000e+01
-15 17249     -1.841500e+02 2.260700e+02
-5 17250     4.564200e+02 -5.948600e+02
-6 17250     -2.551800e+02 4.083002e+01
-12 17250     -2.130200e+02 9.597998e+01
-5 17251     2.695001e+01 -6.069399e+02
-7 17251     -5.509600e+02 9.554999e+01
-15 17251     -5.728900e+02 1.926700e+02
-5 17252     4.528600e+02 -6.086100e+02
-6 17252     -2.544100e+02 2.553003e+01
-7 17252     -2.285900e+02 1.464700e+02
-15 17252     -1.968900e+02 2.070700e+02
-5 17253     6.265500e+02 -6.162300e+02
-6 17253     -6.346997e+01 6.847998e+01
-10 17253     -1.023300e+02 1.972100e+02
-15 17253     -4.525000e+01 2.028000e+02
-5 17254     2.159600e+02 -6.182700e+02
-7 17254     -3.805300e+02 1.140900e+02
-15 17254     -3.509400e+02 2.021100e+02
-5 17255     7.773600e+02 -6.191600e+02
-6 17255     8.185999e+01 1.047400e+02
-10 17255     3.648999e+01 2.028100e+02
-12 17255     1.020400e+02 1.565600e+02
-15 17255     1.164700e+02 2.116500e+02
-5 17256     7.878003e+01 4.695200e+02
-11 17256     -4.184003e+01 2.272400e+02
-14 17256     -7.640015e+00 3.584700e+02
-5 17257     -1.653600e+02 4.374300e+02
-11 17257     -2.357100e+02 1.970200e+02
-14 17257     -2.443700e+02 3.269800e+02
-5 17258     -2.318900e+02 4.351300e+02
-11 17258     -2.885000e+02 1.938000e+02
-5 17259     -2.125900e+02 4.315800e+02
-11 17259     -2.746500e+02 1.918300e+02
-14 17259     -2.905200e+02 3.209700e+02
-5 17260     -2.125900e+02 4.315800e+02
-11 17260     -2.746500e+02 1.918300e+02
-14 17260     -2.905200e+02 3.209700e+02
-5 17261     -2.319700e+02 4.312300e+02
-11 17261     -2.886400e+02 1.897800e+02
-14 17261     -3.092400e+02 3.201600e+02
-5 17262     -2.087100e+02 4.278500e+02
-11 17262     -2.720900e+02 1.887900e+02
-5 17263     1.950100e+02 4.247000e+02
-11 17263     4.292999e+01 1.950200e+02
-14 17263     1.049200e+02 3.156700e+02
-5 17264     1.754500e+02 4.193700e+02
-11 17264     2.629999e+01 1.905700e+02
-14 17264     8.541998e+01 3.109700e+02
-5 17265     -1.677700e+02 4.109700e+02
-11 17265     -2.441200e+02 1.770000e+02
-5 17266     -1.476100e+02 4.070100e+02
-11 17266     -2.288100e+02 1.739400e+02
-5 17267     -1.853500e+02 4.060800e+02
-11 17267     -2.589200e+02 1.722500e+02
-5 17268     -2.608100e+02 3.920700e+02
-11 17268     -3.090600e+02 1.600900e+02
-14 17268     -3.375000e+02 2.819200e+02
-5 17269     -2.908500e+02 3.893400e+02
-11 17269     -3.322900e+02 1.572500e+02
-5 17270     1.293000e+02 3.876600e+02
-11 17270     -3.445001e+01 1.639600e+02
-5 17271     2.311700e+02 3.841200e+02
-11 17271     4.876001e+01 1.640200e+02
-14 17271     1.379600e+02 2.779800e+02
-5 17272     -1.766300e+02 3.783000e+02
-11 17272     -2.872900e+02 1.499900e+02
-5 17273     3.920001e+01 3.786300e+02
-11 17273     -1.099400e+02 1.549900e+02
-14 17273     -4.746002e+01 2.710100e+02
-5 17274     3.177002e+01 3.780400e+02
-11 17274     -1.159800e+02 1.544100e+02
-5 17275     2.297000e+02 3.775300e+02
-11 17275     4.658002e+01 1.589400e+02
-5 17276     9.890002e+01 3.767700e+02
-11 17276     -6.191998e+01 1.553000e+02
-14 17276     1.021997e+01 2.695200e+02
-5 17277     7.490002e+01 3.757900e+02
-11 17277     -8.142999e+01 1.540700e+02
-5 17278     7.490002e+01 3.757900e+02
-11 17278     -8.142999e+01 1.540700e+02
-5 17279     -3.137100e+02 3.754700e+02
-11 17279     -3.595200e+02 1.465500e+02
-5 17280     1.948400e+02 3.746200e+02
-11 17280     1.617999e+01 1.568900e+02
-5 17281     -1.781700e+02 3.729600e+02
-11 17281     -2.895600e+02 1.456900e+02
-5 17282     -1.040200e+02 3.724100e+02
-11 17282     -2.276800e+02 1.472500e+02
-5 17283     2.129600e+02 3.713500e+02
-11 17283     3.146002e+01 1.537900e+02
-14 17283     1.205400e+02 2.654700e+02
-5 17284     1.355600e+02 3.711800e+02
-11 17284     -3.210999e+01 1.514800e+02
-5 17285     9.710999e+01 3.697500e+02
-11 17285     -6.440002e+01 1.498200e+02
-5 17286     -3.519100e+02 3.668900e+02
-11 17286     -3.910900e+02 1.394200e+02
-5 17287     -3.563500e+02 3.617400e+02
-11 17287     -3.949500e+02 1.347100e+02
-5 17288     -9.240002e+01 3.617400e+02
-11 17288     -2.198400e+02 1.390000e+02
-5 17289     3.429993e+00 3.603600e+02
-11 17289     -1.422800e+02 1.398800e+02
-5 17290     8.378998e+01 3.555800e+02
-11 17290     -7.752002e+01 1.380000e+02
-5 17291     -1.034200e+02 3.542300e+02
-11 17291     -2.316000e+02 1.344700e+02
-5 17292     -7.450012e+00 3.529700e+02
-11 17292     -1.526400e+02 1.342700e+02
-5 17293     1.108002e+01 3.520700e+02
-11 17293     -1.375900e+02 1.338100e+02
-5 17294     4.803101e+02 3.516400e+02
-11 17294     2.184200e+02 1.441100e+02
-14 17294     3.752200e+02 2.497600e+02
-5 17295     2.182600e+02 3.488000e+02
-11 17295     3.247998e+01 1.359200e+02
-5 17296     5.676100e+02 3.483300e+02
-11 17296     2.882800e+02 1.434100e+02
-14 17296     4.589500e+02 2.477300e+02
-5 17297     5.676100e+02 3.483300e+02
-11 17297     2.882800e+02 1.434100e+02
-5 17298     -3.460500e+02 3.481100e+02
-11 17298     -3.906500e+02 1.248300e+02
-14 17298     -4.218900e+02 2.395900e+02
-5 17299     4.096600e+02 3.477400e+02
-11 17299     1.565800e+02 1.391100e+02
-14 17299     3.076700e+02 2.450300e+02
-5 17300     -3.681000e+02 3.468100e+02
-11 17300     -4.082000e+02 1.236400e+02
-5 17301     -3.644300e+02 3.421100e+02
-11 17301     -4.063700e+02 1.198600e+02
-5 17302     -4.002900e+02 3.415800e+02
-11 17302     -4.348200e+02 1.181700e+02
-5 17303     -3.841200e+02 3.361200e+02
-11 17303     -4.233700e+02 1.149200e+02
-5 17304     -3.917300e+02 3.354900e+02
-11 17304     -4.292000e+02 1.145600e+02
-5 17305     1.660999e+01 3.338900e+02
-11 17305     -1.361800e+02 1.197300e+02
-5 17306     3.465900e+02 3.116800e+02
-11 17306     9.502002e+01 1.085700e+02
-13 17306     1.284500e+02 5.525200e+02
-14 17306     2.466400e+02 2.096700e+02
-5 17307     4.729500e+02 3.078500e+02
-11 17307     1.952100e+02 1.078400e+02
-13 17307     2.335100e+02 5.531800e+02
-14 17307     3.680200e+02 2.073800e+02
-5 17308     -2.404100e+02 2.994100e+02
-11 17308     -3.530600e+02 8.700000e+01
-13 17308     -3.671800e+02 5.179200e+02
-14 17308     -3.212500e+02 1.920900e+02
-5 17309     -1.045900e+02 2.919500e+02
-11 17309     -2.826100e+02 8.128000e+01
-5 17310     -2.143800e+02 2.755500e+02
-11 17310     -3.308100e+02 6.947000e+01
-5 17311     -2.461100e+02 2.649800e+02
-11 17311     -3.566300e+02 6.023999e+01
-13 17311     -3.690700e+02 4.870600e+02
-14 17311     -3.265600e+02 1.584800e+02
-5 17312     9.908002e+01 2.593600e+02
-11 17312     -1.172100e+02 5.957999e+01
-14 17312     9.239990e+00 1.543300e+02
-5 17313     5.944900e+02 2.442800e+02
-11 17313     3.020300e+02 6.101999e+01
-13 17313     3.349500e+02 5.032000e+02
-5 17314     -5.226000e+02 2.401500e+02
-11 17314     -5.183100e+02 4.151001e+01
-5 17315     -2.378400e+02 2.400800e+02
-11 17315     -3.488600e+02 4.051999e+01
-13 17315     -3.594500e+02 4.651100e+02
-14 17315     -3.176300e+02 1.337600e+02
-5 17316     -5.188700e+02 2.376600e+02
-11 17316     -5.161700e+02 3.866000e+01
-14 17316     -5.942500e+02 1.316900e+02
-5 17317     -5.188700e+02 2.376600e+02
-11 17317     -5.161700e+02 3.866000e+01
-5 17318     -3.480800e+02 1.893400e+02
-11 17318     -4.337200e+02 1.179993e+00
-13 17318     -4.505300e+02 4.164000e+02
-14 17318     -4.268800e+02 8.453000e+01
-5 17319     -1.283000e+02 1.781000e+02
-11 17319     -3.195200e+02 -9.619995e+00
-5 17320     5.850400e+02 1.741500e+02
-11 17320     2.886801e+02 3.419983e+00
-13 17320     3.277700e+02 4.430600e+02
-14 17320     4.793000e+02 8.128000e+01
-5 17321     5.457100e+02 1.735200e+02
-11 17321     2.538600e+02 1.679993e+00
-13 17321     2.957400e+02 4.410900e+02
-14 17321     4.411801e+02 8.001999e+01
-5 17322     5.679200e+02 1.240300e+02
-8 17322     -5.816998e+01 4.264200e+02
-5 17323     -1.662500e+02 1.107500e+02
-11 17323     -3.378800e+02 -3.090002e+01
-5 17324     2.947400e+02 9.371002e+01
-8 17324     -2.687600e+02 4.106600e+02
-5 17325     4.200601e+02 7.507001e+01
-6 17325     -5.099500e+02 8.118700e+02
-11 17325     1.461500e+02 -8.065997e+01
-14 17325     3.219100e+02 -1.678998e+01
-5 17326     4.166500e+02 4.640002e+01
-6 17326     -5.077500e+02 7.735100e+02
-11 17326     1.447700e+02 -1.036700e+02
-13 17326     1.934800e+02 3.304500e+02
-14 17326     3.194200e+02 -4.459998e+01
-5 17327     9.619995e+00 4.596002e+01
-11 17327     -2.182500e+02 -1.125200e+02
-13 17327     -1.414400e+02 3.118800e+02
-5 17328     9.619995e+00 4.596002e+01
-11 17328     -2.182500e+02 -1.125200e+02
-13 17328     -1.414400e+02 3.118800e+02
-5 17329     -1.956700e+02 4.420001e+01
-11 17329     -3.942100e+02 -1.156700e+02
-13 17329     -3.130700e+02 3.002400e+02
-14 17329     -2.800900e+02 -5.604999e+01
-5 17330     6.731000e+02 4.003998e+01
-6 17330     -2.146200e+02 7.982500e+02
-5 17331     4.436300e+02 2.785999e+01
-6 17331     -4.721600e+02 7.524500e+02
-11 17331     1.697500e+02 -1.187500e+02
-14 17331     3.462900e+02 -6.231000e+01
-5 17332     4.599200e+02 2.638000e+01
-8 17332     -1.324000e+02 3.461500e+02
-5 17333     6.192000e+02 2.278998e+01
-6 17333     -2.706200e+02 7.700100e+02
-14 17333     5.175400e+02 -6.379999e+01
-5 17334     4.573800e+02 1.683002e+01
-6 17334     -4.529700e+02 7.401500e+02
-14 17334     3.600000e+02 -7.225000e+01
-5 17335     4.091400e+02 1.226001e+01
-8 17335     -1.705400e+02 3.369000e+02
-11 17335     1.399200e+02 -1.316300e+02
-5 17336     3.278000e+02 8.030029e+00
-11 17336     6.682001e+01 -1.372300e+02
-5 17337     3.278000e+02 8.030029e+00
-11 17337     6.682001e+01 -1.372300e+02
-14 17337     2.336300e+02 -8.367999e+01
-5 17338     6.126001e+01 5.380005e+00
-8 17338     -4.597900e+02 3.368200e+02
-5 17339     3.065002e+01 4.070007e+00
-11 17339     -1.974400e+02 -1.455500e+02
-14 17339     -5.665002e+01 -9.246002e+01
-5 17340     5.589900e+02 3.659973e+00
-11 17340     2.771300e+02 -1.347600e+02
-5 17341     6.272100e+02 1.659973e+00
-6 17341     -2.587500e+02 7.445100e+02
-5 17342     6.484998e+01 -5.280029e+00
-11 17342     -1.667500e+02 -1.525000e+02
-5 17343     1.832600e+02 -5.989990e+00
-8 17343     -3.526200e+02 3.246200e+02
-5 17344     5.919200e+02 -8.299988e+00
-6 17344     -2.952900e+02 7.277300e+02
-8 17344     -3.015002e+01 3.167200e+02
-5 17345     1.804900e+02 -9.669983e+00
-11 17345     -6.475000e+01 -1.539700e+02
-13 17345     2.539978e+00 2.739100e+02
-14 17345     9.016998e+01 -1.029300e+02
-5 17346     5.845100e+02 -9.559998e+00
-6 17346     -3.047600e+02 7.243300e+02
-8 17346     -3.726001e+01 3.153700e+02
-9 17346     -2.774800e+02 4.220100e+02
-11 17346     2.997100e+02 -1.454600e+02
-5 17347     6.029301e+02 -9.780029e+00
-6 17347     -2.834100e+02 7.267300e+02
-9 17347     -2.621500e+02 4.214800e+02
-14 17347     5.031500e+02 -9.528998e+01
-5 17348     3.393199e+02 -1.062000e+01
-6 17348     -5.875900e+02 6.869500e+02
-8 17348     -2.239000e+02 3.184800e+02
-14 17348     2.457100e+02 -1.012300e+02
-5 17349     -4.695300e+02 -1.091998e+01
-11 17349     -4.882500e+02 -1.530000e+02
-13 17349     -5.328500e+02 2.383000e+02
-14 17349     -5.452100e+02 -1.134800e+02
-5 17350     5.642300e+02 -1.796997e+01
-8 17350     -4.975000e+01 3.089200e+02
-5 17351     1.775800e+02 -1.881000e+01
-8 17351     -3.564200e+02 3.129200e+02
-5 17352     1.775800e+02 -1.881000e+01
-8 17352     -3.564200e+02 3.129200e+02
-14 17352     8.746002e+01 -1.121800e+02
-5 17353     5.944000e+01 -2.253998e+01
-8 17353     -4.581200e+02 3.103600e+02
-5 17354     5.944000e+01 -2.253998e+01
-8 17354     -4.581200e+02 3.103600e+02
-5 17355     4.896801e+02 -2.695001e+01
-6 17355     -4.061400e+02 6.884400e+02
-11 17355     2.174300e+02 -1.617900e+02
-5 17356     6.371801e+02 -2.834003e+01
-6 17356     -2.428300e+02 7.084600e+02
-5 17357     4.791400e+02 -2.870001e+01
-6 17357     -4.178300e+02 6.847800e+02
-5 17358     3.516200e+02 -2.977002e+01
-8 17358     -2.121100e+02 3.021300e+02
-5 17359     1.588400e+02 -3.104999e+01
-11 17359     -8.247998e+01 -1.716500e+02
-14 17359     6.929999e+01 -1.248000e+02
-5 17360     4.892800e+02 -3.073999e+01
-6 17360     -4.065400e+02 6.838900e+02
-5 17361     4.988300e+02 -3.470001e+01
-6 17361     -3.948600e+02 6.808000e+02
-13 17361     2.622500e+02 2.671700e+02
-14 17361     4.018700e+02 -1.214300e+02
-5 17362     3.836899e+02 -3.809003e+01
-6 17362     -5.277900e+02 6.575800e+02
-14 17362     2.894900e+02 -1.273500e+02
-5 17363     2.277900e+02 -4.004999e+01
-11 17363     -2.039001e+01 -1.780900e+02
-14 17363     1.375300e+02 -1.319400e+02
-5 17364     3.221600e+02 -4.604999e+01
-12 17364     -4.196300e+02 6.171900e+02
-5 17365     1.269700e+02 -4.763000e+01
-8 17365     -3.971100e+02 2.870300e+02
-12 17365     -6.502600e+02 5.918100e+02
-13 17365     -3.919000e+01 2.397800e+02
-5 17366     3.715601e+02 -5.637000e+01
-6 17366     -5.380700e+02 6.326200e+02
-11 17366     1.105200e+02 -1.885200e+02
-5 17367     7.262000e+02 -5.635999e+01
-8 17367     6.876001e+01 2.739600e+02
-5 17368     5.799200e+02 -6.621997e+01
-11 17368     3.014000e+02 -1.916400e+02
-5 17369     3.768700e+02 -8.644000e+01
-8 17369     -1.873100e+02 2.524800e+02
-11 17369     1.173800e+02 -2.123600e+02
-12 17369     -3.481100e+02 5.767000e+02
-5 17370     1.153100e+02 -8.917999e+01
-8 17370     -4.027300e+02 2.489600e+02
-12 17370     -6.531300e+02 5.405000e+02
-13 17370     -4.644000e+01 2.051100e+02
-14 17370     2.809003e+01 -1.821700e+02
-5 17371     5.565900e+02 -9.759998e+01
-6 17371     -3.184000e+02 6.114200e+02
-8 17371     -4.925000e+01 2.420800e+02
-9 17371     -2.865200e+02 3.406800e+02
-12 17371     -1.489100e+02 5.835600e+02
-5 17372     5.554700e+02 -1.100300e+02
-8 17372     -4.927002e+01 2.321500e+02
-5 17373     6.283101e+02 -1.123400e+02
-12 17373     -7.137000e+01 5.737200e+02
-13 17373     3.677800e+02 2.089900e+02
-14 17373     5.314200e+02 -1.947700e+02
-5 17374     5.792500e+02 -1.138700e+02
-12 17374     -1.225900e+02 5.678100e+02
-5 17375     -5.143600e+02 -1.703600e+02
-11 17375     -5.255100e+02 -2.771500e+02
-5 17376     6.483000e+02 -1.729800e+02
-6 17376     -2.077500e+02 5.365600e+02
-11 17376     3.724600e+02 -2.769300e+02
-12 17376     -4.146002e+01 5.109400e+02
-5 17377     7.566100e+02 -1.728900e+02
-9 17377     -1.324300e+02 2.757600e+02
-12 17377     6.601001e+01 5.217300e+02
-5 17378     4.670900e+02 -1.815800e+02
-8 17378     -1.088900e+02 1.735000e+02
-5 17379     6.549500e+02 -1.816200e+02
-6 17379     -1.989000e+02 5.278700e+02
-8 17379     2.934998e+01 1.732200e+02
-5 17380     5.028900e+02 -1.928100e+02
-6 17380     -3.598700e+02 4.874300e+02
-7 17380     -1.243000e+02 5.350700e+02
-13 17380     2.697600e+02 1.395800e+02
-14 17380     4.113000e+02 -2.759600e+02
-5 17381     4.305200e+02 -1.939900e+02
-12 17381     -2.670700e+02 4.630700e+02
-5 17382     6.962000e+02 -1.974700e+02
-8 17382     5.914001e+01 1.599700e+02
-5 17383     -9.878998e+01 -2.014900e+02
-8 17383     -5.825900e+02 1.395100e+02
-5 17384     -1.472500e+02 -2.023900e+02
-11 17384     -3.419200e+02 -3.124800e+02
-5 17385     3.050500e+02 -2.144200e+02
-8 17385     -2.316600e+02 1.420300e+02
-5 17386     4.010000e+02 -2.297000e+02
-9 17386     -3.904800e+02 2.136300e+02
-5 17387     5.184003e+01 -2.313000e+02
-7 17387     -5.713700e+02 4.489300e+02
-13 17387     -8.985999e+01 8.673001e+01
-14 17387     -3.178003e+01 -3.235800e+02
-5 17388     -6.844000e+01 -2.390900e+02
-11 17388     -2.715900e+02 -3.422300e+02
-5 17389     -6.844000e+01 -2.390900e+02
-10 17389     -7.130600e+02 5.917800e+02
-11 17389     -2.715900e+02 -3.422300e+02
-5 17390     2.721899e+02 -2.418700e+02
-7 17390     -3.434600e+02 4.656300e+02
-13 17390     8.800000e+01 9.006000e+01
-14 17390     1.860601e+02 -3.295400e+02
-5 17391     -8.095001e+01 -2.421200e+02
-8 17391     -5.611500e+02 1.017100e+02
-5 17392     -8.390997e+01 -2.453000e+02
-8 17392     -5.621100e+02 9.898999e+01
-10 17392     -7.306300e+02 5.834500e+02
-5 17393     -1.158900e+02 -2.483900e+02
-10 17393     -7.713700e+02 5.759900e+02
-5 17394     -1.158900e+02 -2.483900e+02
-10 17394     -7.713700e+02 5.759900e+02
-5 17395     3.904600e+02 -2.582700e+02
-6 17395     -4.715300e+02 3.867700e+02
-7 17395     -2.241500e+02 4.626700e+02
-5 17396     3.904600e+02 -2.582700e+02
-6 17396     -4.715300e+02 3.867700e+02
-7 17396     -2.241500e+02 4.626700e+02
-14 17396     3.030000e+02 -3.434300e+02
-5 17397     8.876001e+01 -2.589600e+02
-7 17397     -5.265100e+02 4.269100e+02
-10 17397     -5.113800e+02 5.850500e+02
-5 17398     5.492999e+01 -2.841600e+02
-7 17398     -5.553000e+02 3.978500e+02
-12 17398     -6.710600e+02 3.033600e+02
-5 17399     -1.018100e+02 -2.959600e+02
-10 17399     -7.405900e+02 5.216800e+02
-13 17399     -2.103900e+02 2.646997e+01
-14 17399     -1.835000e+02 -3.910800e+02
-15 17399     -7.659600e+02 5.627100e+02
-5 17400     4.120900e+02 -3.016500e+02
-8 17400     -1.396000e+02 6.691000e+01
-14 17400     3.259399e+02 -3.863100e+02
-5 17401     2.362300e+02 -3.163400e+02
-7 17401     -3.658000e+02 3.908800e+02
-8 17401     -2.774800e+02 4.789999e+01
-14 17401     1.524301e+02 -4.041200e+02
-5 17402     2.362300e+02 -3.163400e+02
-7 17402     -3.658000e+02 3.908800e+02
-11 17402     4.830017e+00 -4.027900e+02
-14 17402     1.524301e+02 -4.041200e+02
-5 17403     -1.462700e+02 -3.253600e+02
-10 17403     -7.826100e+02 4.851600e+02
-5 17404     1.150100e+02 -3.427000e+02
-10 17404     -4.595200e+02 4.943600e+02
-5 17405     1.150100e+02 -3.427000e+02
-7 17405     -4.809900e+02 3.501500e+02
-10 17405     -4.595200e+02 4.943600e+02
-11 17405     -1.025200e+02 -4.258400e+02
-14 17405     3.315002e+01 -4.332100e+02
-15 17405     -4.449700e+02 5.387500e+02
-5 17406     5.451300e+02 -3.454100e+02
-6 17406     -2.761900e+02 3.202400e+02
-5 17407     -1.627100e+02 -3.628700e+02
-7 17407     -7.617900e+02 2.897000e+02
-15 17407     -8.222400e+02 4.690100e+02
-5 17408     -1.429500e+02 -3.783500e+02
-7 17408     -7.356600e+02 2.785500e+02
-10 17408     -7.608300e+02 4.271600e+02
-11 17408     -3.290900e+02 -4.553300e+02
-15 17408     -7.884000e+02 4.533200e+02
-5 17409     -1.085700e+02 -3.784800e+02
-7 17409     -6.999800e+02 2.836700e+02
-8 17409     -5.683500e+02 -2.985001e+01
-10 17409     -7.187700e+02 4.307700e+02
-13 17409     -2.101000e+02 -3.953998e+01
-14 17409     -1.892900e+02 -4.745601e+02
-15 17409     -7.409700e+02 4.586900e+02
-5 17410     -1.563600e+02 -3.847100e+02
-11 17410     -3.407900e+02 -4.607700e+02
-14 17410     -2.370900e+02 -4.821600e+02
-5 17411     6.029800e+02 -3.904500e+02
-6 17411     -2.003000e+02 2.841200e+02
-12 17411     -6.185999e+01 2.924100e+02
-5 17412     -1.035300e+02 -3.927400e+02
-8 17412     -5.615700e+02 -4.314999e+01
-10 17412     -7.080400e+02 4.158200e+02
-13 17412     -2.047800e+02 -5.021002e+01
-14 17412     -1.836300e+02 -4.886300e+02
-5 17413     5.860100e+02 -3.933100e+02
-6 17413     -2.175600e+02 2.768200e+02
-12 17413     -7.850000e+01 2.866300e+02
-5 17414     5.703101e+02 -4.000601e+02
-6 17414     -2.323700e+02 2.668600e+02
-5 17415     -2.590002e+01 -4.266600e+02
-7 17415     -6.035700e+02 2.519600e+02
-5 17416     -6.496002e+01 -4.504900e+02
-7 17416     -6.385100e+02 2.242000e+02
-10 17416     -6.492300e+02 3.592700e+02
-11 17416     -2.603000e+02 -5.149000e+02
-14 17416     -1.449100e+02 -5.460800e+02
-5 17417     6.357800e+02 -4.659700e+02
-6 17417     -9.482999e+01 2.227800e+02
-13 17417     3.682800e+02 -6.790002e+01
-5 17418     6.357800e+02 -4.659700e+02
-6 17418     -9.482999e+01 2.227800e+02
-7 17418     -7.992999e+01 2.969500e+02
-13 17418     3.682800e+02 -6.790002e+01
-14 17418     5.382700e+02 -5.463000e+02
-5 17419     4.447100e+02 -4.710500e+02
-9 17419     -2.857600e+02 5.123999e+01
-13 17419     2.297700e+02 -8.071002e+01
-14 17419     3.610200e+02 -5.549301e+02
-5 17420     4.058300e+02 -4.725400e+02
-7 17420     -2.084100e+02 2.696800e+02
-5 17421     4.313000e+02 -4.798400e+02
-9 17421     -2.946400e+02 4.339001e+01
-5 17422     6.007000e+02 -4.870800e+02
-6 17422     -1.240400e+02 1.934100e+02
-12 17422     -8.403003e+01 2.439400e+02
-5 17423     5.408600e+02 -5.098300e+02
-6 17423     -1.840300e+02 1.534200e+02
-5 17424     6.279301e+02 -5.105900e+02
-10 17424     -8.350000e+01 3.094300e+02
-12 17424     -5.529999e+01 2.284600e+02
-15 17424     -2.310999e+01 3.347700e+02
-5 17425     5.030400e+02 -5.115300e+02
-6 17425     -2.353900e+02 1.390500e+02
-5 17426     2.444301e+02 -5.118600e+02
-15 17426     -2.960700e+02 3.400700e+02
-5 17427     4.976300e+02 -5.197700e+02
-6 17427     -2.383600e+02 1.289900e+02
-12 17427     -1.766100e+02 1.765000e+02
-5 17428     4.976300e+02 -5.197700e+02
-6 17428     -2.383600e+02 1.289900e+02
-7 17428     -1.801100e+02 2.335800e+02
-12 17428     -1.766100e+02 1.765000e+02
-5 17429     4.938900e+02 -5.263199e+02
-6 17429     -2.395000e+02 1.212400e+02
-7 17429     -1.843700e+02 2.267600e+02
-12 17429     -1.797000e+02 1.694200e+02
-13 17429     2.629600e+02 -1.210000e+02
-5 17430     -2.183002e+01 -5.294600e+02
-7 17430     -5.971100e+02 1.575200e+02
-5 17431     4.942100e+02 -5.299000e+02
-6 17431     -2.382600e+02 1.178700e+02
-7 17431     -1.847000e+02 2.237100e+02
-12 17431     -1.796000e+02 1.661200e+02
-5 17432     5.761000e+02 -5.309800e+02
-6 17432     -1.367300e+02 1.416300e+02
-12 17432     -1.047200e+02 1.955100e+02
-13 17432     3.234200e+02 -1.203100e+02
-5 17433     6.473600e+02 -5.319000e+02
-6 17433     -6.195001e+01 1.588500e+02
-12 17433     -3.382001e+01 2.122800e+02
-5 17434     -6.340997e+01 -5.382300e+02
-8 17434     -5.008200e+02 -1.506700e+02
-13 17434     -1.650800e+02 -1.616500e+02
-5 17435     -7.698999e+01 -5.429600e+02
-10 17435     -6.712600e+02 2.548000e+02
-5 17436     4.878700e+02 -5.467900e+02
-6 17436     -2.388300e+02 9.859998e+01
-7 17436     -1.917900e+02 2.074400e+02
-12 17436     -1.844800e+02 1.485700e+02
-5 17437     5.534700e+02 -5.601400e+02
-6 17437     -1.533900e+02 1.050400e+02
-7 17437     -1.555000e+02 2.004700e+02
-9 17437     -9.140002e+01 1.536400e+02
-10 17437     -1.567900e+02 2.529000e+02
-12 17437     -1.240100e+02 1.598600e+02
-13 17437     3.063600e+02 -1.441100e+02
-15 17437     -1.077600e+02 2.670000e+02
-5 17438     6.942100e+02 -5.681600e+02
-7 17438     -4.263000e+01 2.105000e+02
-12 17438     1.654999e+01 1.879000e+02
-15 17438     3.325000e+01 2.666300e+02
-5 17439     -1.622100e+02 -5.810500e+02
-7 17439     -7.262200e+02 8.754001e+01
-5 17440     4.737800e+02 -5.829800e+02
-6 17440     -2.412000e+02 5.759003e+01
-7 17440     -2.081100e+02 1.726700e+02
-10 17440     -2.075400e+02 2.335900e+02
-12 17440     -1.964700e+02 1.111800e+02
-15 17440     -1.639500e+02 2.425800e+02
-5 17441     4.212300e+02 -5.835900e+02
-7 17441     -2.464700e+02 1.663700e+02
-10 17441     -2.469100e+02 2.327700e+02
-12 17441     -2.468900e+02 9.498999e+01
-15 17441     -2.081800e+02 2.408500e+02
-5 17442     6.302300e+02 -6.000000e+02
-9 17442     -1.446002e+01 1.543800e+02
-12 17442     -4.367999e+01 1.405200e+02
-5 17443     1.703800e+02 4.222800e+02
-11 17443     2.157001e+01 1.947200e+02
-14 17443     8.059003e+01 3.138900e+02
-5 17444     1.482200e+02 4.172100e+02
-11 17444     3.869995e+00 1.888600e+02
-14 17444     5.926001e+01 3.084400e+02
-5 17445     -2.049400e+02 4.098800e+02
-11 17445     -2.733500e+02 1.747200e+02
-5 17446     2.886300e+02 3.992600e+02
-11 17446     9.872998e+01 1.766500e+02
-14 17446     1.935400e+02 2.933100e+02
-5 17447     5.967999e+01 3.834800e+02
-11 17447     -9.190002e+01 1.589100e+02
-5 17448     -1.326900e+02 3.795700e+02
-11 17448     -2.516100e+02 1.517000e+02
-5 17449     -1.326900e+02 3.795700e+02
-11 17449     -2.516100e+02 1.517000e+02
-5 17450     3.941600e+02 3.792800e+02
-11 17450     1.577600e+02 1.634400e+02
-14 17450     2.931899e+02 2.749100e+02
-5 17451     5.706600e+02 3.794900e+02
-11 17451     2.883800e+02 1.680100e+02
-14 17451     4.610699e+02 2.778900e+02
-5 17452     4.322998e+01 3.741700e+02
-11 17452     -1.073300e+02 1.515300e+02
-5 17453     2.671997e+01 3.737900e+02
-11 17453     -1.206600e+02 1.506900e+02
-5 17454     -9.497998e+01 3.729800e+02
-11 17454     -2.206400e+02 1.477300e+02
-5 17455     1.501200e+02 3.724300e+02
-11 17455     -2.003003e+01 1.528100e+02
-14 17455     6.008002e+01 2.655600e+02
-5 17456     -9.903998e+01 3.716700e+02
-11 17456     -2.231900e+02 1.459000e+02
-14 17456     -1.812700e+02 2.627100e+02
-5 17457     -3.832001e+01 3.710300e+02
-11 17457     -1.743400e+02 1.471400e+02
-5 17458     -1.796800e+02 3.693800e+02
-11 17458     -2.916000e+02 1.430500e+02
-5 17459     -8.858002e+01 3.696700e+02
-11 17459     -2.152100e+02 1.444700e+02
-14 17459     -1.711200e+02 2.616200e+02
-5 17460     1.714500e+02 3.664800e+02
-11 17460     -3.289978e+00 1.487400e+02
-5 17461     1.016600e+02 3.646200e+02
-11 17461     -6.140002e+01 1.461300e+02
-5 17462     -1.671800e+02 3.640200e+02
-11 17462     -2.822900e+02 1.389300e+02
-5 17463     -6.598999e+01 3.624500e+02
-11 17463     -1.980400e+02 1.395800e+02
-5 17464     -2.025200e+02 3.617800e+02
-11 17464     -3.098900e+02 1.359900e+02
-5 17465     1.309003e+01 3.591300e+02
-11 17465     -1.349700e+02 1.395300e+02
-5 17466     1.534900e+02 3.590700e+02
-11 17466     -2.010999e+01 1.430700e+02
-14 17466     6.378998e+01 2.527000e+02
-5 17467     4.940100e+02 3.585000e+02
-11 17467     2.301600e+02 1.504200e+02
-14 17467     3.890000e+02 2.565700e+02
-5 17468     -3.621997e+01 3.569300e+02
-11 17468     -1.750700e+02 1.363200e+02
-5 17469     -1.903200e+02 3.565500e+02
-11 17469     -3.018400e+02 1.324400e+02
-5 17470     -5.309998e+01 3.562900e+02
-11 17470     -1.890800e+02 1.356100e+02
-5 17471     -1.989300e+02 3.562000e+02
-11 17471     -2.822500e+02 1.232000e+02
-5 17472     -1.498300e+02 3.511700e+02
-11 17472     -2.697800e+02 1.286200e+02
-5 17473     -1.856900e+02 3.498300e+02
-11 17473     -2.987800e+02 1.267500e+02
-5 17474     -3.946997e+01 3.496000e+02
-11 17474     -1.791500e+02 1.305500e+02
-5 17475     3.895601e+02 3.462100e+02
-11 17475     1.388900e+02 1.374400e+02
-13 17475     1.642400e+02 5.841700e+02
-14 17475     2.882100e+02 2.433900e+02
-5 17476     6.289978e+00 3.459200e+02
-11 17476     -1.423400e+02 1.285300e+02
-13 17476     -1.572000e+02 5.694600e+02
-14 17476     -7.913000e+01 2.387000e+02
-5 17477     -1.450012e+00 3.447900e+02
-11 17477     -1.489000e+02 1.274600e+02
-5 17478     -1.450012e+00 3.447900e+02
-11 17478     -1.489000e+02 1.274600e+02
-5 17479     5.722400e+02 3.427000e+02
-11 17479     2.926200e+02 1.393800e+02
-14 17479     4.637600e+02 2.426800e+02
-5 17480     -7.827002e+01 3.414300e+02
-11 17480     -2.117300e+02 1.230300e+02
-5 17481     -6.898999e+01 3.415900e+02
-11 17481     -2.042900e+02 1.235500e+02
-5 17482     2.734003e+01 3.414800e+02
-11 17482     -1.261000e+02 1.254400e+02
-5 17483     3.742999e+01 3.402300e+02
-11 17483     -1.184200e+02 1.251300e+02
-5 17484     1.292999e+01 3.386500e+02
-11 17484     -1.384600e+02 1.235300e+02
-5 17485     4.541400e+02 3.367900e+02
-11 17485     1.941100e+02 1.313300e+02
-13 17485     2.185000e+02 5.780800e+02
-14 17485     3.506200e+02 2.353000e+02
-5 17486     -1.397900e+02 3.366700e+02
-11 17486     -2.950900e+02 1.169300e+02
-5 17487     -5.564001e+01 3.350900e+02
-11 17487     -1.950200e+02 1.190100e+02
-5 17488     5.891998e+01 3.350600e+02
-11 17488     -1.014500e+02 1.212900e+02
-5 17489     3.688000e+02 3.349100e+02
-11 17489     1.193500e+02 1.272300e+02
-14 17489     2.683800e+02 2.321700e+02
-5 17490     2.542999e+01 3.332200e+02
-11 17490     -1.298500e+02 1.196800e+02
-5 17491     2.103003e+01 3.279100e+02
-11 17491     -1.340700e+02 1.151900e+02
-5 17492     -2.086200e+02 3.102100e+02
-11 17492     -3.248400e+02 9.567999e+01
-5 17493     3.417400e+02 3.055800e+02
-11 17493     9.026001e+01 1.031300e+02
-5 17494     -2.466800e+02 2.952600e+02
-11 17494     -3.597000e+02 8.329999e+01
-5 17495     -5.982001e+01 2.941600e+02
-11 17495     -2.455000e+02 8.404999e+01
-5 17496     3.574500e+02 2.914000e+02
-11 17496     1.016100e+02 9.189001e+01
-13 17496     1.381500e+02 5.348300e+02
-5 17497     -2.092400e+02 2.907800e+02
-11 17497     -3.269100e+02 8.110999e+01
-5 17498     -2.008700e+02 2.877700e+02
-11 17498     -3.209800e+02 7.951001e+01
-13 17498     -3.317400e+02 5.101700e+02
-14 17498     -2.820000e+02 1.818000e+02
-5 17499     -2.362500e+02 2.809100e+02
-11 17499     -3.496100e+02 7.335999e+01
-13 17499     -3.615700e+02 5.021600e+02
-14 17499     -3.163800e+02 1.747400e+02
-5 17500     -9.948999e+01 2.734000e+02
-11 17500     -2.814000e+02 6.748001e+01
-13 17500     -2.448900e+02 5.013900e+02
-5 17501     5.925300e+02 2.697600e+02
-11 17501     3.033500e+02 8.160999e+01
-13 17501     3.329700e+02 5.248000e+02
-14 17501     4.840400e+02 1.734200e+02
-5 17502     3.771801e+02 2.557100e+02
-11 17502     1.130900e+02 6.504001e+01
-5 17503     -3.027100e+02 2.523000e+02
-11 17503     -3.877900e+02 5.014001e+01
-14 17503     -3.804600e+02 1.460500e+02
-5 17504     -3.047600e+02 2.473900e+02
-11 17504     -3.903000e+02 4.641000e+01
-14 17504     -3.832400e+02 1.409800e+02
-5 17505     -3.047600e+02 2.473900e+02
-11 17505     -3.903000e+02 4.641000e+01
-13 17505     -4.173100e+02 4.687700e+02
-14 17505     -3.832400e+02 1.409800e+02
-5 17506     7.334998e+01 2.416900e+02
-11 17506     -1.423800e+02 4.656000e+01
-5 17507     3.949100e+02 2.148900e+02
-11 17507     1.263400e+02 3.216000e+01
-5 17508     -1.712300e+02 2.077500e+02
-11 17508     -3.449500e+02 1.484003e+01
-5 17509     4.808800e+02 2.037100e+02
-11 17509     1.957200e+02 2.570999e+01
-13 17509     2.419000e+02 4.648400e+02
-14 17509     3.775900e+02 1.082600e+02
-5 17510     -3.339700e+02 2.007500e+02
-11 17510     -4.203700e+02 1.015002e+01
-13 17510     -4.392700e+02 4.270100e+02
-5 17511     -3.433100e+02 2.000600e+02
-11 17511     -4.277700e+02 9.190002e+00
-13 17511     -4.479300e+02 4.260900e+02
-14 17511     -4.226400e+02 9.507999e+01
-5 17512     -3.687700e+02 1.775100e+02
-11 17512     -4.513300e+02 -9.150024e+00
-13 17512     -4.670500e+02 4.050100e+02
-14 17512     -4.472500e+02 7.275000e+01
-5 17513     7.012600e+02 1.760100e+02
-11 17513     3.930300e+02 8.309998e+00
-13 17513     4.221400e+02 4.484600e+02
-14 17513     5.908500e+02 8.528000e+01
-5 17514     1.493100e+02 1.538400e+02
-11 17514     -9.063000e+01 -2.329999e+01
-5 17515     5.711200e+02 9.479999e+01
-6 17515     -3.372200e+02 8.566200e+02
-5 17516     5.623199e+02 9.312000e+01
-8 17516     -6.066998e+01 4.009700e+02
-5 17517     6.095601e+02 9.037000e+01
-11 17517     3.176000e+02 -6.328998e+01
-13 17517     3.499000e+02 3.738700e+02
-14 17517     5.063600e+02 1.039978e+00
-5 17518     5.685999e+01 8.221002e+01
-8 17518     -4.714900e+02 4.104800e+02
-5 17519     6.058500e+02 7.262000e+01
-6 17519     -2.939900e+02 8.316000e+02
-8 17519     -2.701001e+01 3.824000e+02
-5 17520     1.377200e+02 7.007001e+01
-11 17520     -1.070700e+02 -9.101001e+01
-13 17520     -3.676001e+01 3.373300e+02
-14 17520     4.689001e+01 -2.695001e+01
-5 17521     -5.167999e+01 6.956000e+01
-11 17521     -2.749700e+02 -9.470001e+01
-13 17521     -1.945800e+02 3.285600e+02
-14 17521     -1.391800e+02 -2.941998e+01
-5 17522     -3.039001e+01 6.948999e+01
-11 17522     -2.551100e+02 -9.467999e+01
-13 17522     -1.766900e+02 3.290800e+02
-14 17522     -1.181800e+02 -2.996002e+01
-5 17523     6.316400e+02 5.848999e+01
-8 17523     -6.770020e+00 3.695900e+02
-5 17524     5.086000e+02 5.640002e+01
-6 17524     -4.020700e+02 7.986500e+02
-5 17525     -1.713400e+02 4.941998e+01
-11 17525     -3.737500e+02 -1.117600e+02
-13 17525     -2.929600e+02 3.058000e+02
-14 17525     -2.558100e+02 -5.046997e+01
-5 17526     4.389800e+02 4.842999e+01
-6 17526     -4.809300e+02 7.791700e+02
-5 17527     7.513300e+02 3.751001e+01
-6 17527     -1.311600e+02 8.049800e+02
-8 17527     7.950000e+01 3.492700e+02
-5 17528     2.975200e+02 2.487000e+01
-8 17528     -2.607700e+02 3.498700e+02
-5 17529     2.975200e+02 2.487000e+01
-8 17529     -2.607700e+02 3.498700e+02
-11 17529     3.817999e+01 -1.236600e+02
-14 17529     2.035400e+02 -6.729999e+01
-5 17530     7.374500e+02 2.403998e+01
-6 17530     -1.443700e+02 7.863500e+02
-13 17530     4.566200e+02 3.247400e+02
-5 17531     3.458101e+02 1.828998e+01
-8 17531     -2.212600e+02 3.441300e+02
-14 17531     2.515000e+02 -7.191998e+01
-5 17532     1.790600e+02 1.538000e+01
-8 17532     -3.584200e+02 3.439500e+02
-5 17533     4.624200e+02 6.109985e+00
-8 17533     -1.285200e+02 3.309200e+02
-5 17534     8.199800e+02 -1.799988e+00
-6 17534     -5.510999e+01 7.648000e+02
-8 17534     1.284800e+02 3.159000e+02
-13 17534     5.177400e+02 3.054200e+02
-14 17534     7.121500e+02 -8.367999e+01
-5 17535     7.568400e+02 -3.553003e+01
-6 17535     -1.149800e+02 7.165200e+02
-9 17535     -1.473600e+02 3.953600e+02
-13 17535     4.691700e+02 2.757600e+02
-14 17535     6.536100e+02 -1.179000e+02
-5 17536     4.698400e+02 -4.058002e+01
-11 17536     1.992600e+02 -1.730000e+02
-5 17537     -4.640997e+01 -4.512000e+01
-8 17537     -5.523200e+02 2.892400e+02
-11 17537     -2.621800e+02 -1.859800e+02
-5 17538     4.568101e+02 -5.197998e+01
-8 17538     -1.282700e+02 2.810300e+02
-14 17538     3.613400e+02 -1.393800e+02
-5 17539     8.006500e+02 -5.722998e+01
-6 17539     -6.785999e+01 6.964000e+02
-8 17539     1.192100e+02 2.727100e+02
-5 17540     -5.537000e+01 -5.819000e+01
-8 17540     -5.591400e+02 2.768600e+02
-13 17540     -1.885700e+02 2.219600e+02
-14 17540     -1.404200e+02 -1.545600e+02
-5 17541     -5.537000e+01 -5.819000e+01
-8 17541     -5.591400e+02 2.768600e+02
-13 17541     -1.885700e+02 2.219600e+02
-14 17541     -1.404200e+02 -1.545600e+02
-5 17542     5.601500e+02 -6.612000e+01
-6 17542     -3.203100e+02 6.506200e+02
-5 17543     6.302500e+02 -9.139001e+01
-12 17543     -7.258002e+01 5.983400e+02
-5 17544     7.039800e+02 -1.055400e+02
-11 17544     4.186899e+02 -2.204700e+02
-12 17544     6.349976e+00 5.890200e+02
-5 17545     1.956200e+02 -1.180700e+02
-8 17545     -3.316500e+02 2.236300e+02
-12 17545     -5.494600e+02 5.167800e+02
-5 17546     5.473500e+02 -1.289000e+02
-6 17546     -3.219400e+02 5.724200e+02
-5 17547     4.093300e+02 -1.312300e+02
-8 17547     -1.569900e+02 2.140200e+02
-9 17547     -3.993700e+02 3.077600e+02
-5 17548     9.603998e+01 -1.373800e+02
-12 17548     -6.634700e+02 4.802000e+02
-5 17549     9.603998e+01 -1.373800e+02
-8 17549     -4.148800e+02 2.049000e+02
-12 17549     -6.634700e+02 4.802000e+02
-5 17550     9.603998e+01 -1.373800e+02
-8 17550     -4.148800e+02 2.049000e+02
-12 17550     -6.634700e+02 4.802000e+02
-5 17551     3.055800e+02 -1.660700e+02
-11 17551     5.771997e+01 -2.790200e+02
-5 17552     6.432300e+02 -1.908300e+02
-7 17552     8.900024e+00 5.485000e+02
-5 17553     4.364001e+01 -2.277800e+02
-11 17553     -1.733900e+02 -3.320100e+02
-13 17553     -9.678998e+01 8.926999e+01
-5 17554     4.364001e+01 -2.277800e+02
-7 17554     -5.809900e+02 4.511900e+02
-11 17554     -1.733900e+02 -3.320100e+02
-12 17554     -7.009700e+02 3.666100e+02
-5 17555     -9.140015e+00 -2.602800e+02
-8 17555     -4.927300e+02 8.781000e+01
-5 17556     -6.646997e+01 -2.713300e+02
-8 17556     -5.433700e+02 7.462000e+01
-10 17556     -7.009700e+02 5.545500e+02
-11 17556     -2.684500e+02 -3.682400e+02
-12 17556     -8.222500e+02 2.949700e+02
-5 17557     4.260699e+02 -2.908600e+02
-8 17557     -1.291500e+02 7.738000e+01
-5 17558     2.044600e+02 -3.002700e+02
-8 17558     -3.054800e+02 6.085999e+01
-10 17558     -3.621400e+02 5.503100e+02
-5 17559     -5.010010e+00 -3.112500e+02
-7 17559     -6.103300e+02 3.635100e+02
-8 17559     -4.833100e+02 4.064001e+01
-11 17559     -2.117100e+02 -4.000200e+02
-14 17559     -8.634003e+01 -4.038800e+02
-5 17560     -1.119300e+02 -3.198000e+02
-8 17560     -5.789800e+02 2.603000e+01
-11 17560     -3.049400e+02 -4.073200e+02
-13 17560     -2.166700e+02 7.150024e+00
-5 17561     5.304999e+01 -3.341600e+02
-12 17561     -6.592000e+02 2.461300e+02
-5 17562     4.929999e+01 -3.511900e+02
-7 17562     -5.451700e+02 3.337300e+02
-10 17562     -5.363200e+02 4.785400e+02
-13 17562     -8.553998e+01 -8.320007e+00
-14 17562     -3.234998e+01 -4.426400e+02
-5 17563     2.428003e+01 -3.633100e+02
-15 17563     -5.633500e+02 4.999000e+02
-5 17564     -1.021800e+02 -3.669800e+02
-8 17564     -5.639600e+02 -1.787000e+01
-13 17564     -2.054600e+02 -2.965002e+01
-14 17564     -1.825500e+02 -4.622000e+02
-15 17564     -7.363800e+02 4.741800e+02
-5 17565     6.170900e+02 -3.872000e+02
-6 17565     -1.865300e+02 2.909600e+02
-10 17565     8.139001e+01 4.857800e+02
-11 17565     3.163600e+02 -4.624900e+02
-12 17565     -4.803998e+01 2.982100e+02
-13 17565     3.621200e+02 -7.880005e+00
-15 17565     1.851500e+02 5.401800e+02
-5 17566     5.948800e+02 -4.054500e+02
-6 17566     -2.042400e+02 2.660300e+02
-7 17566     -3.923999e+01 3.500500e+02
-11 17566     2.927600e+02 -4.789100e+02
-15 17566     1.528101e+02 5.131600e+02
-5 17567     -9.634998e+01 -4.144200e+02
-7 17567     -6.771400e+02 2.521000e+02
-8 17567     -5.519000e+02 -6.253998e+01
-10 17567     -6.928100e+02 3.935700e+02
-5 17568     -1.075200e+02 -4.344200e+02
-7 17568     -6.828500e+02 2.323700e+02
-11 17568     -2.951200e+02 -5.014700e+02
-13 17568     -2.049000e+02 -8.307001e+01
-14 17568     -1.870000e+02 -5.305699e+02
-5 17569     -8.325000e+01 -4.415100e+02
-10 17569     -6.697700e+02 3.677700e+02
-14 17569     -1.626700e+02 -5.370200e+02
-5 17570     3.655500e+02 -4.756400e+02
-8 17570     -1.448300e+02 -4.503000e+01
-5 17571     -3.803998e+01 -5.015400e+02
-7 17571     -6.120800e+02 1.809300e+02
-5 17572     -2.410700e+02 -5.091200e+02
-7 17572     -8.054600e+02 1.405400e+02
-13 17572     -3.083100e+02 -1.505100e+02
-5 17573     6.567700e+02 -5.168000e+02
-10 17573     -5.815002e+01 3.045700e+02
-13 17573     3.835699e+02 -1.052100e+02
-5 17574     3.916500e+02 -5.254301e+02
-8 17574     -1.145300e+02 -7.265002e+01
-5 17575     6.077300e+02 -5.257900e+02
-8 17575     9.664001e+01 6.126001e+01
-5 17576     4.419900e+02 -5.282000e+02
-7 17576     -2.225400e+02 2.200200e+02
-10 17576     -2.088800e+02 2.971200e+02
-12 17576     -2.297600e+02 1.535000e+02
-15 17576     -1.633500e+02 3.160300e+02
-5 17577     3.588700e+02 -5.309900e+02
-8 17577     -1.393400e+02 -8.022998e+01
-9 17577     -3.372700e+02 -5.700073e-01
-13 17577     1.646500e+02 -1.310200e+02
-5 17578     -1.848300e+02 -5.421300e+02
-7 17578     -7.485100e+02 1.189100e+02
-13 17578     -2.606400e+02 -1.729400e+02
-5 17579     -6.634003e+01 -5.426899e+02
-7 17579     -6.373000e+02 1.385500e+02
-10 17579     -6.597800e+02 2.567000e+02
-5 17580     -1.868800e+02 -5.463600e+02
-7 17580     -7.506900e+02 1.153200e+02
-5 17581     3.433500e+02 -5.576600e+02
-6 17581     -4.267000e+02 3.900000e+01
-13 17581     1.529301e+02 -1.523700e+02
-5 17582     3.589800e+02 -5.796200e+02
-6 17582     -4.015800e+02 1.997998e+01
-5 17583     -4.690002e+01 -5.888500e+02
-7 17583     -6.184000e+02 9.964001e+01
-10 17583     -6.433600e+02 2.085500e+02
-5 17584     4.151801e+02 -6.018199e+02
-6 17584     -3.015500e+02 2.109003e+01
-5 17585     1.897400e+02 -6.040500e+02
-7 17585     -4.036100e+02 1.236800e+02
-5 17586     6.356100e+02 -6.046801e+02
-8 17586     1.330800e+02 1.676999e+01
-12 17586     -3.631000e+01 1.375400e+02
-5 17587     2.213101e+02 -6.142500e+02
-7 17587     -3.782300e+02 1.170300e+02
-10 17587     -3.701600e+02 2.075800e+02
-13 17587     6.031000e+01 -2.029000e+02
-15 17587     -3.472000e+02 2.065000e+02
-5 17588     4.667400e+02 -6.147100e+02
-6 17588     -2.378200e+02 2.347998e+01
-7 17588     -2.167900e+02 1.432200e+02
-5 17589     4.624600e+02 -6.159301e+02
-6 17589     -2.418500e+02 2.157001e+01
-12 17589     -2.046200e+02 7.765997e+01
-5 17590     5.547900e+02 4.087400e+02
-11 17590     2.751000e+02 1.901100e+02
-5 17591     5.598101e+02 4.054900e+02
-11 17591     2.791801e+02 1.883400e+02
-5 17592     4.465000e+02 3.398100e+02
-11 17592     1.877800e+02 1.336300e+02
-13 17592     2.122800e+02 5.801800e+02
-14 17592     3.433300e+02 2.378400e+02
-5 17593     4.145100e+02 3.244200e+02
-11 17593     1.567800e+02 1.209800e+02
-13 17593     1.854100e+02 5.657900e+02
-14 17593     3.124600e+02 2.225200e+02
-5 17594     -1.865997e+01 2.748800e+02
-11 17594     -2.148300e+02 6.885999e+01
-5 17595     -2.681800e+02 2.658100e+02
-11 17595     -3.697400e+02 6.139999e+01
-13 17595     -3.876700e+02 4.871000e+02
-14 17595     -3.476300e+02 1.595100e+02
-5 17596     4.913600e+02 2.538900e+02
-11 17596     2.130300e+02 6.541000e+01
-13 17596     2.504800e+02 5.075600e+02
-14 17596     3.876400e+02 1.563200e+02
-5 17597     -2.376500e+02 2.512200e+02
-11 17597     -3.493400e+02 4.951001e+01
-5 17598     -2.376500e+02 2.512200e+02
-11 17598     -3.493400e+02 4.951001e+01
-13 17598     -3.598700e+02 4.738900e+02
-14 17598     -3.172500e+02 1.434000e+02
-5 17599     -2.326700e+02 2.476900e+02
-11 17599     -3.455900e+02 4.698001e+01
-5 17600     -2.898700e+02 2.454200e+02
-11 17600     -3.788700e+02 4.529001e+01
-13 17600     -4.040400e+02 4.680900e+02
-14 17600     -3.679300e+02 1.391800e+02
-5 17601     -3.002500e+02 2.386800e+02
-11 17601     -3.882500e+02 4.001001e+01
-5 17602     -3.366600e+02 2.160900e+02
-11 17602     -4.198200e+02 2.194000e+01
-13 17602     -4.431700e+02 4.408000e+02
-14 17602     -4.160200e+02 1.119100e+02
-5 17603     -3.318100e+02 2.068100e+02
-11 17603     -4.179600e+02 1.521997e+01
-5 17604     -3.467100e+02 1.964400e+02
-11 17604     -4.310800e+02 6.869995e+00
-13 17604     -4.503900e+02 4.228800e+02
-14 17604     -4.256400e+02 9.110001e+01
-5 17605     -3.518400e+02 1.866800e+02
-11 17605     -4.364100e+02 -1.630005e+00
-13 17605     -4.538000e+02 4.139500e+02
-14 17605     -4.309900e+02 8.195001e+01
-5 17606     -3.518400e+02 1.866800e+02
-11 17606     -4.364100e+02 -1.630005e+00
-13 17606     -4.538000e+02 4.139500e+02
-14 17606     -4.309900e+02 8.195001e+01
-5 17607     -3.294300e+02 1.813100e+02
-11 17607     -4.200600e+02 -5.500000e+00
-5 17608     6.618700e+02 1.522900e+02
-8 17608     8.440002e+00 4.450000e+02
-14 17608     5.538500e+02 6.145001e+01
-5 17609     -1.347600e+02 1.339000e+02
-11 17609     -3.356300e+02 -6.323999e+01
-5 17610     6.358101e+02 1.079100e+02
-8 17610     -7.309998e+00 4.105000e+02
-5 17611     4.231899e+02 1.031300e+02
-6 17611     -5.127400e+02 8.501800e+02
-5 17612     2.464301e+02 8.509003e+01
-11 17612     -1.133002e+01 -7.640002e+01
-13 17612     5.223999e+01 3.549600e+02
-14 17612     1.523101e+02 -1.042999e+01
-5 17613     8.232700e+02 7.491998e+01
-8 17613     1.250000e+02 3.760900e+02
-11 17613     5.105699e+02 -7.009003e+01
-14 17613     7.119399e+02 -8.580017e+00
-5 17614     7.392400e+02 7.335999e+01
-6 17614     -1.489300e+02 8.481300e+02
-11 17614     4.359700e+02 -7.221997e+01
-5 17615     6.489399e+02 6.440997e+01
-8 17615     5.429993e+00 3.737000e+02
-5 17616     4.920601e+02 6.102002e+01
-8 17616     -1.102900e+02 3.766000e+02
-5 17617     5.014600e+02 5.566998e+01
-6 17617     -4.104200e+02 7.968300e+02
-8 17617     -1.031400e+02 3.719100e+02
-5 17618     -2.053200e+02 4.903998e+01
-11 17618     -4.047800e+02 -1.128600e+02
-13 17618     -3.217800e+02 3.037100e+02
-14 17618     -2.900400e+02 -5.152002e+01
-5 17619     1.749300e+02 4.121997e+01
-8 17619     -3.648200e+02 3.677300e+02
-5 17620     -2.528300e+02 3.583002e+01
-11 17620     -4.188400e+02 -1.216500e+02
-13 17620     -3.589700e+02 2.895700e+02
-14 17620     -3.352500e+02 -6.540002e+01
-5 17621     8.230000e+02 1.281000e+01
-6 17621     -5.425000e+01 7.832600e+02
-8 17621     1.296400e+02 3.274700e+02
-9 17621     -1.074300e+02 4.365400e+02
-11 17621     5.152500e+02 -1.205100e+02
-13 17621     5.202100e+02 3.179500e+02
-14 17621     7.144700e+02 -6.923999e+01
-5 17622     5.950601e+02 -6.549988e+00
-6 17622     -2.918200e+02 7.299800e+02
-9 17622     -2.669700e+02 4.245000e+02
-5 17623     6.077000e+02 -1.116998e+01
-6 17623     -2.776000e+02 7.265100e+02
-8 17623     -1.877002e+01 3.139100e+02
-9 17623     -2.579000e+02 4.201000e+02
-5 17624     2.259100e+02 -1.160999e+01
-8 17624     -3.163800e+02 3.191500e+02
-5 17625     -1.009003e+01 -3.900000e+01
-8 17625     -5.197800e+02 2.946500e+02
-13 17625     -1.521200e+02 2.402500e+02
-14 17625     -9.594000e+01 -1.343200e+02
-5 17626     3.754700e+02 -5.189001e+01
-8 17626     -1.915000e+02 2.824300e+02
-5 17627     4.746899e+02 -5.681000e+01
-6 17627     -4.179800e+02 6.486600e+02
-5 17628     4.942700e+02 -1.220700e+02
-11 17628     2.269800e+02 -2.395300e+02
-5 17629     3.125601e+02 -1.602700e+02
-7 17629     -3.178300e+02 5.490000e+02
-5 17630     7.586200e+02 -1.607200e+02
-6 17630     -9.604001e+01 5.690800e+02
-8 17630     9.917999e+01 1.905000e+02
-9 17630     -1.323700e+02 2.870100e+02
-12 17630     6.660999e+01 5.345600e+02
-5 17631     5.335900e+02 -1.710600e+02
-12 17631     -1.611000e+02 5.014200e+02
-5 17632     4.405400e+02 -1.834500e+02
-12 17632     -2.585800e+02 4.757900e+02
-5 17633     3.972400e+02 -2.063600e+02
-7 17633     -2.252500e+02 5.121600e+02
-5 17634     -1.135100e+02 -2.427100e+02
-7 17634     -7.458400e+02 4.141900e+02
-8 17634     -5.890900e+02 9.981000e+01
-5 17635     3.228998e+01 -2.621800e+02
-10 17635     -5.804800e+02 5.754700e+02
-11 17635     -1.811000e+02 -3.600200e+02
-13 17635     -1.036100e+02 6.141998e+01
-14 17635     -5.072998e+01 -3.545600e+02
-5 17636     -1.676001e+01 -2.690600e+02
-8 17636     -4.992300e+02 7.904001e+01
-12 17636     -7.614200e+02 3.059600e+02
-5 17637     -3.865500e+02 -2.722000e+02
-11 17637     -4.580000e+02 -3.611100e+02
-14 17637     -4.643200e+02 -3.727500e+02
-5 17638     -1.570000e+02 -2.785000e+02
-7 17638     -7.815000e+02 3.721900e+02
-10 17638     -8.144100e+02 5.366600e+02
-14 17638     -2.390800e+02 -3.748100e+02
-15 17638     -8.478100e+02 5.766100e+02
-5 17639     -1.368100e+02 -2.792100e+02
-15 17639     -8.184000e+02 5.796600e+02
-5 17640     4.735601e+02 -2.827000e+02
-7 17640     -1.407900e+02 4.484000e+02
-10 17640     -4.770001e+01 5.948800e+02
-11 17640     2.201800e+02 -3.715900e+02
-13 17640     2.489399e+02 6.694000e+01
-14 17640     3.856200e+02 -3.656300e+02
-5 17641     -1.432900e+02 -2.894000e+02
-11 17641     -3.339900e+02 -3.826800e+02
-13 17641     -2.440500e+02 2.959003e+01
-14 17641     -2.241100e+02 -3.853000e+02
-15 17641     -8.235300e+02 5.651900e+02
-5 17642     3.000900e+02 -3.057300e+02
-6 17642     -5.638200e+02 3.104000e+02
-8 17642     -2.273200e+02 6.060999e+01
-14 17642     2.160000e+02 -3.916600e+02
-5 17643     5.941200e+02 -3.095800e+02
-6 17643     -2.335600e+02 3.706800e+02
-11 17643     3.150900e+02 -3.940900e+02
-13 17643     3.424700e+02 5.153003e+01
-5 17644     5.729100e+02 -3.163500e+02
-6 17644     -2.544700e+02 3.578600e+02
-5 17645     1.045001e+01 -3.335700e+02
-7 17645     -5.888600e+02 3.444700e+02
-11 17645     -1.966700e+02 -4.183800e+02
-12 17645     -7.099100e+02 2.381900e+02
-15 17645     -5.919200e+02 5.345200e+02
-5 17646     9.996997e+01 -3.364700e+02
-7 17646     -4.974300e+02 3.544700e+02
-10 17646     -4.787800e+02 5.004500e+02
-13 17646     -4.528998e+01 5.979980e+00
-14 17646     1.819000e+01 -4.271300e+02
-15 17646     -4.676700e+02 5.451600e+02
-5 17647     5.058199e+02 -3.719200e+02
-6 17647     -3.098800e+02 2.824400e+02
-11 17647     2.259500e+02 -4.499600e+02
-12 17647     -1.613200e+02 2.929400e+02
-5 17648     -1.971800e+02 -3.787600e+02
-7 17648     -7.877900e+02 2.698700e+02
-13 17648     -2.814200e+02 -4.560999e+01
-14 17648     -2.779000e+02 -4.773500e+02
-5 17649     5.415601e+02 -4.105100e+02
-6 17649     -2.594500e+02 2.488000e+02
-7 17649     -8.559998e+01 3.404900e+02
-11 17649     2.470601e+02 -4.837400e+02
-13 17649     3.036000e+02 -2.909998e+01
-14 17649     4.549000e+02 -4.913000e+02
-5 17650     -3.447998e+01 -4.233400e+02
-7 17650     -6.119500e+02 2.535200e+02
-8 17650     -4.954800e+02 -6.713000e+01
-5 17651     4.367000e+02 -4.741600e+02
-6 17651     -3.517600e+02 1.542300e+02
-9 17651     -2.909100e+02 4.842999e+01
-13 17651     2.243000e+02 -8.334003e+01
-14 17651     3.534301e+02 -5.579800e+02
-5 17652     4.151400e+02 -4.783000e+02
-7 17652     -2.000800e+02 2.650600e+02
-10 17652     -1.479700e+02 3.697400e+02
-5 17653     4.069301e+02 -4.941500e+02
-8 17653     -1.104900e+02 -5.173001e+01
-10 17653     -1.594800e+02 3.524600e+02
-14 17653     3.232300e+02 -5.790900e+02
-5 17654     5.378800e+02 -5.257100e+02
-7 17654     -1.660500e+02 2.290600e+02
-13 17654     2.937400e+02 -1.195600e+02
-5 17655     3.131200e+02 -5.284000e+02
-7 17655     -2.925700e+02 2.077900e+02
-5 17656     5.260200e+02 -5.301000e+02
-6 17656     -1.935200e+02 1.284400e+02
-13 17656     2.857000e+02 -1.225200e+02
-5 17657     4.279600e+02 -5.344900e+02
-7 17657     -2.363100e+02 2.121600e+02
-5 17658     2.908500e+02 -5.507300e+02
-7 17658     -3.131100e+02 1.852200e+02
-5 17659     6.443800e+02 -5.530601e+02
-6 17659     -5.983002e+01 1.371600e+02
-7 17659     -8.323999e+01 2.189300e+02
-8 17659     1.314600e+02 5.276999e+01
-10 17659     -7.773999e+01 2.648900e+02
-13 17659     3.737800e+02 -1.329400e+02
-5 17660     5.267500e+02 -5.658600e+02
-6 17660     -1.814500e+02 9.212000e+01
-7 17660     -1.753600e+02 1.926100e+02
-12 17660     -1.489900e+02 1.469900e+02
-13 17660     2.863900e+02 -1.496700e+02
-15 17660     -1.314900e+02 2.599000e+02
-5 17661     2.576100e+02 -5.694301e+02
-9 17661     -4.107900e+02 -4.495001e+01
-10 17661     -3.263400e+02 2.583100e+02
-5 17662     5.195000e+02 -5.798101e+02
-6 17662     -1.865900e+02 7.550000e+01
-7 17662     -1.808400e+02 1.796300e+02
-9 17662     -1.175000e+02 1.266500e+02
-13 17662     2.809301e+02 -1.603900e+02
-15 17662     -1.400400e+02 2.418000e+02
-5 17663     5.059399e+02 -5.836200e+02
-6 17663     -2.009900e+02 6.770001e+01
-8 17663     2.003003e+01 -8.079987e+00
-13 17663     2.712900e+02 -1.636900e+02
-5 17664     2.299301e+02 -6.076899e+02
-10 17664     -3.614000e+02 2.157600e+02
-15 17664     -3.336000e+02 2.175300e+02
-5 17665     3.812200e+02 -6.084100e+02
-12 17665     -2.885100e+02 6.259003e+01
-5 17666     6.515002e+01 4.252600e+02
-11 17666     -5.507001e+01 1.928900e+02
-14 17666     -2.046002e+01 3.150400e+02
-5 17667     -2.351200e+02 2.910000e+02
-11 17667     -3.487400e+02 8.029999e+01
-5 17668     -2.697400e+02 2.852600e+02
-11 17668     -3.713900e+02 7.470999e+01
-13 17668     -3.908300e+02 5.035100e+02
-14 17668     -3.493100e+02 1.779600e+02
-5 17669     -2.165200e+02 2.591200e+02
-11 17669     -3.329400e+02 5.623001e+01
-13 17669     -3.428500e+02 4.837100e+02
-14 17669     -2.970000e+02 1.533500e+02
-5 17670     -4.272200e+02 2.145300e+02
-11 17670     -4.718100e+02 1.928998e+01
-14 17670     -5.026700e+02 1.088100e+02
-5 17671     7.414500e+02 1.476500e+02
-11 17671     4.314200e+02 -1.366998e+01
-14 17671     6.308500e+02 5.835999e+01
-5 17672     4.079301e+02 7.871002e+01
-8 17672     -1.770300e+02 3.941500e+02
-5 17673     -1.256900e+02 6.040002e+01
-11 17673     -3.368100e+02 -1.025300e+02
-13 17673     -2.555700e+02 3.171900e+02
-14 17673     -2.111800e+02 -3.946997e+01
-5 17674     1.298000e+02 4.239001e+01
-8 17674     -4.034500e+02 3.697200e+02
-5 17675     7.457500e+02 3.033002e+01
-6 17675     -1.354200e+02 7.969700e+02
-13 17675     4.597100e+02 3.290100e+02
-5 17676     8.190601e+02 2.871997e+01
-9 17676     -1.119100e+02 4.483900e+02
-11 17676     5.108000e+02 -1.066700e+02
-5 17677     1.743300e+02 9.710022e+00
-8 17677     -3.618200e+02 3.384000e+02
-5 17678     7.572700e+02 1.000000e+01
-6 17678     -1.212400e+02 7.720200e+02
-8 17678     8.553998e+01 3.272400e+02
-9 17678     -1.522700e+02 4.340200e+02
-13 17678     4.683300e+02 3.129500e+02
-14 17678     6.514000e+02 -7.359998e+01
-5 17679     4.357700e+02 -2.319000e+01
-8 17679     -1.470700e+02 3.056400e+02
-5 17680     6.314500e+02 -4.976001e+01
-8 17680     1.640015e+00 2.814800e+02
-5 17681     7.344900e+02 -9.082001e+01
-6 17681     -1.304200e+02 6.469100e+02
-12 17681     3.303003e+01 6.059400e+02
-5 17682     7.368800e+02 -1.150900e+02
-9 17682     -1.512200e+02 3.276000e+02
-5 17683     6.900699e+02 -1.246800e+02
-9 17683     -1.813600e+02 3.196000e+02
-5 17684     6.843300e+02 -1.588500e+02
-6 17684     -1.717500e+02 5.586100e+02
-5 17685     2.559399e+02 -2.030300e+02
-7 17685     -3.668200e+02 5.011600e+02
-8 17685     -2.732500e+02 1.490800e+02
-11 17685     1.590997e+01 -3.097700e+02
-12 17685     -4.589500e+02 4.283400e+02
-13 17685     7.365002e+01 1.203300e+02
-14 17685     1.695000e+02 -2.911100e+02
-5 17686     5.078800e+02 -2.153700e+02
-12 17686     -1.796500e+02 4.500300e+02
-5 17687     4.134998e+01 -2.212000e+02
-7 17687     -5.848200e+02 4.579200e+02
-5 17688     1.111900e+02 -2.591600e+02
-8 17688     -3.876800e+02 9.512000e+01
-12 17688     -6.119000e+02 3.418000e+02
-5 17689     -2.013000e+01 -2.756400e+02
-12 17689     -7.632800e+02 2.985100e+02
-5 17690     3.965601e+02 -2.984200e+02
-6 17690     -4.560200e+02 3.397900e+02
-7 17690     -2.120800e+02 4.261700e+02
-10 17690     -1.353700e+02 5.718700e+02
-13 17690     1.891400e+02 5.178998e+01
-14 17690     3.106899e+02 -3.825100e+02
-5 17691     -1.294100e+02 -3.938500e+02
-11 17691     -3.179400e+02 -4.689900e+02
-5 17692     -1.666800e+02 -4.037400e+02
-7 17692     -7.558300e+02 2.495600e+02
-10 17692     -7.840800e+02 3.951300e+02
-11 17692     -3.515500e+02 -4.776100e+02
-5 17693     5.849000e+02 -4.194399e+02
-6 17693     -2.120900e+02 2.498400e+02
-13 17693     3.367200e+02 -3.467999e+01
-14 17693     4.970300e+02 -5.001600e+02
-5 17694     -1.246300e+02 -4.302100e+02
-11 17694     -3.100000e+02 -4.978300e+02
-13 17694     -2.190200e+02 -8.081000e+01
-14 17694     -2.044500e+02 -5.266000e+02
-5 17695     4.173500e+02 -4.961000e+02
-9 17695     -3.010800e+02 3.092999e+01
-5 17696     -2.480600e+02 -5.104301e+02
-7 17696     -8.116900e+02 1.368800e+02
-13 17696     -3.139000e+02 -1.530000e+02
-5 17697     5.380800e+02 -5.248600e+02
-6 17697     -1.812800e+02 1.373300e+02
-13 17697     2.946300e+02 -1.172500e+02
-5 17698     6.607600e+02 -5.270200e+02
-9 17698     -1.203998e+01 2.065900e+02
-12 17698     -2.122998e+01 2.206300e+02
-5 17699     2.781899e+02 -5.298500e+02
-9 17699     -4.057600e+02 -1.447998e+01
-5 17700     3.408300e+02 -5.441500e+02
-9 17700     -3.477500e+02 -1.206000e+01
-5 17701     5.466801e+02 -5.466300e+02
-6 17701     -1.647300e+02 1.178400e+02
-12 17701     -1.320400e+02 1.722400e+02
-5 17702     1.266900e+02 -5.709800e+02
-7 17702     -4.600200e+02 1.436000e+02
-5 17703     4.229800e+02 -5.730000e+02
-6 17703     -3.039700e+02 5.346002e+01
-5 17704     3.449500e+02 -5.772900e+02
-9 17704     -3.325900e+02 -3.065997e+01
-5 17705     3.897800e+02 -5.767600e+02
-8 17705     -8.371002e+01 -4.384000e+01
-9 17705     -2.477600e+02 6.494000e+01
-5 17706     2.174301e+02 -5.873101e+02
-7 17706     -3.796300e+02 1.407100e+02
-8 17706     -2.449600e+02 -1.372600e+02
-10 17706     -3.723200e+02 2.352200e+02
-15 17706     -3.450900e+02 2.400800e+02
-5 17707     5.116200e+02 -5.891400e+02
-6 17707     -1.930400e+02 6.362000e+01
-7 17707     -1.861600e+02 1.712000e+02
-12 17707     -1.612400e+02 1.197200e+02
-13 17707     2.754200e+02 -1.675800e+02
-5 17708     4.312600e+02 4.416300e+02
-11 17708     2.400699e+02 2.144900e+02
-5 17709     -1.439001e+01 4.161500e+02
-11 17709     -1.211200e+02 1.815800e+02
-5 17710     1.873600e+02 6.375000e+01
-8 17710     -3.562800e+02 3.865800e+02
-5 17711     9.170001e+01 4.663000e+01
-8 17711     -4.368000e+02 3.736500e+02
-5 17712     -1.709500e+02 2.906000e+01
-11 17712     -3.734100e+02 -1.290600e+02
-13 17712     -2.913600e+02 2.874000e+02
-14 17712     -2.560400e+02 -7.206000e+01
-5 17713     4.235200e+02 7.750000e+00
-6 17713     -4.914800e+02 7.233500e+02
-8 17713     -1.571400e+02 3.349500e+02
-5 17714     4.889900e+02 -3.372998e+01
-6 17714     -4.060900e+02 6.802800e+02
-11 17714     2.166800e+02 -1.702000e+02
-14 17714     3.923300e+02 -1.210100e+02
-5 17715     1.650024e+00 -1.697400e+02
-8 17715     -4.944200e+02 1.724300e+02
-12 17715     -7.693900e+02 4.277300e+02
-5 17716     6.205000e+02 -1.737100e+02
-6 17716     -2.360000e+02 5.315500e+02
-9 17716     -2.283300e+02 2.721000e+02
-13 17716     3.627000e+02 1.596900e+02
-14 17716     5.256700e+02 -2.553600e+02
-5 17717     4.367200e+02 -1.940600e+02
-8 17717     -1.313400e+02 1.599000e+02
-5 17718     4.333700e+02 -2.792600e+02
-7 17718     -1.798600e+02 4.476500e+02
-8 17718     -1.258100e+02 8.756000e+01
-11 17718     1.819700e+02 -3.692900e+02
-13 17718     2.170500e+02 6.796997e+01
-14 17718     3.456300e+02 -3.630300e+02
-5 17719     -1.293300e+02 -3.718300e+02
-8 17719     -5.879400e+02 -2.500000e+01
-10 17719     -7.444300e+02 4.356400e+02
-11 17719     -3.178900e+02 -4.502300e+02
-13 17719     -2.271000e+02 -3.546997e+01
-15 17719     -7.722900e+02 4.634600e+02
-5 17720     -1.293300e+02 -3.718300e+02
-7 17720     -7.235800e+02 2.866400e+02
-11 17720     -3.178900e+02 -4.502300e+02
-13 17720     -2.271000e+02 -3.546997e+01
-15 17720     -7.722900e+02 4.634600e+02
-5 17721     6.053500e+02 -4.014800e+02
-6 17721     -1.945500e+02 2.719400e+02
-5 17722     4.873300e+02 -5.392600e+02
-6 17722     -2.422000e+02 1.066800e+02
-12 17722     -1.860900e+02 1.559600e+02
-13 17722     2.585900e+02 -1.301400e+02
-5 17723     2.385601e+02 -5.823600e+02
-7 17723     -3.603400e+02 1.502900e+02
-8 17723     -2.302500e+02 -1.304400e+02
-13 17723     7.223999e+01 -1.755600e+02
-15 17723     -3.172500e+02 2.508500e+02
-5 17724     1.810300e+02 3.711000e+02
-11 17724     5.260010e+00 1.522200e+02
-14 17724     8.951001e+01 2.644400e+02
-5 17725     1.810300e+02 3.711000e+02
-11 17725     5.260010e+00 1.522200e+02
-5 17726     -4.853998e+01 3.638500e+02
-11 17726     -1.839500e+02 1.389500e+02
-5 17727     9.475000e+01 3.609100e+02
-11 17727     -6.715997e+01 1.425600e+02
-14 17727     6.719971e+00 2.542800e+02
-5 17728     -7.969971e+00 3.598400e+02
-11 17728     -1.510900e+02 1.389300e+02
-14 17728     -9.315997e+01 2.520500e+02
-5 17729     -7.969971e+00 3.598400e+02
-11 17729     -1.510900e+02 1.389300e+02
-14 17729     -9.315997e+01 2.520500e+02
-5 17730     1.653100e+02 3.505200e+02
-11 17730     -1.072998e+01 1.360400e+02
-14 17730     7.446997e+01 2.447900e+02
-5 17731     6.014200e+02 7.296002e+01
-11 17731     3.105100e+02 -7.777002e+01
-13 17731     3.430601e+02 3.589300e+02
-14 17731     4.983700e+02 -1.600000e+01
-5 17732     -4.760200e+02 -5.175000e+01
-11 17732     -4.856000e+02 -1.850100e+02
-5 17733     6.982200e+02 -1.937700e+02
-6 17733     -1.529800e+02 5.204700e+02
-5 17734     6.747300e+02 -1.966100e+02
-6 17734     -1.761400e+02 5.129000e+02
-7 17734     3.778003e+01 5.453500e+02
-13 17734     4.057900e+02 1.443100e+02
-5 17735     4.098199e+02 -2.570700e+02
-8 17735     -1.456400e+02 1.060900e+02
-5 17736     -8.404999e+01 -2.791400e+02
-10 17736     -7.220800e+02 5.449000e+02
-13 17736     -1.969400e+02 4.185999e+01
-5 17737     4.502800e+02 -2.801500e+02
-11 17737     1.962100e+02 -3.730400e+02
-5 17738     3.639399e+02 -3.673200e+02
-7 17738     -2.401200e+02 3.609200e+02
-15 17738     -1.185200e+02 5.417700e+02
-5 17739     -1.046500e+02 -3.851200e+02
-7 17739     -6.939500e+02 2.794600e+02
-10 17739     -7.122400e+02 4.272000e+02
-5 17740     4.773101e+02 -5.353101e+02
-6 17740     -2.552700e+02 1.060900e+02
-7 17740     -2.003600e+02 2.166500e+02
-10 17740     -1.900500e+02 2.865800e+02
-12 17740     -1.960500e+02 1.575900e+02
-13 17740     2.499200e+02 -1.285600e+02
-15 17740     -1.422300e+02 3.055100e+02
-5 17741     4.825800e+02 -5.638900e+02
-6 17741     -2.387800e+02 7.959998e+01
-12 17741     -1.893400e+02 1.311300e+02
-5 17742     2.585999e+01 3.503000e+02
-11 17742     -1.248300e+02 1.323400e+02
-5 17743     3.899900e+02 2.753200e+02
-11 17743     1.283300e+02 7.987000e+01
-5 17744     6.007800e+02 2.568600e+02
-11 17744     3.099900e+02 6.989001e+01
-13 17744     3.401000e+02 5.128500e+02
-14 17744     4.920000e+02 1.597500e+02
-5 17745     4.063199e+02 -1.985000e+02
-8 17745     -1.546200e+02 1.557400e+02
-14 17745     3.170601e+02 -2.857100e+02
-5 17746     3.189800e+02 -2.260100e+02
-6 17746     -5.600700e+02 4.099400e+02
-8 17746     -2.189700e+02 1.313100e+02
-5 17747     -1.010800e+02 -3.194600e+02
-8 17747     -5.693900e+02 2.792999e+01
-5 17748     7.079800e+02 -3.946300e+02
-6 17748     -9.214001e+01 3.028000e+02
-13 17748     4.305500e+02 -9.090027e+00
-14 17748     6.159500e+02 -4.709500e+02
-5 17749     -2.263200e+02 4.169900e+02
-11 17749     -2.844400e+02 1.784300e+02
-14 17749     -3.035600e+02 3.061100e+02
-5 17750     5.229999e+01 3.621700e+02
-11 17750     -1.020300e+02 1.426800e+02
-14 17750     -3.489001e+01 2.547300e+02
-5 17751     7.469600e+02 -1.274600e+02
-6 17751     -1.121100e+02 6.063100e+02
-12 17751     5.035999e+01 5.688500e+02
-5 17752     6.870100e+02 -1.323000e+02
-6 17752     -1.738100e+02 5.916600e+02
-8 17752     4.971002e+01 2.172400e+02
-12 17752     -8.500000e+00 5.601400e+02
-5 17753     4.821000e+02 -2.027400e+02
-8 17753     -9.535999e+01 1.553600e+02
-5 17754     2.845200e+02 -2.269000e+02
-7 17754     -3.332300e+02 4.814300e+02
-8 17754     -2.474800e+02 1.295600e+02
-13 17754     9.710999e+01 1.023300e+02
-14 17754     1.979600e+02 -3.132000e+02
-5 17755     3.918300e+02 -2.734800e+02
-7 17755     -2.231300e+02 4.470800e+02
-5 17756     -1.783500e+02 5.921002e+01
-11 17756     -3.821500e+02 -1.016500e+02
-13 17756     -3.060300e+02 3.143700e+02
-14 17756     -2.681300e+02 -3.984998e+01
-5 17757     3.411899e+02 -2.441500e+02
-8 17757     -2.014000e+02 1.155200e+02
-5 17758     5.286300e+02 -1.105100e+02
-6 17758     -3.402100e+02 5.999500e+02
-8 17758     -6.915997e+01 2.322200e+02
-5 17759     2.040200e+02 -3.167700e+02
-7 17759     -3.943700e+02 3.854200e+02
-8 17759     -3.007500e+02 4.450000e+01
-13 17759     3.735999e+01 2.827002e+01
-14 17759     1.214400e+02 -4.039200e+02
-6 17760     2.344300e+02 7.558300e+02
-8 17760     3.304800e+02 3.686700e+02
-6 17761     2.316300e+02 7.499900e+02
-8 17761     3.278500e+02 3.641400e+02
-9 17761     1.213200e+02 4.933100e+02
-6 17762     2.316300e+02 7.499900e+02
-9 17762     1.213200e+02 4.933100e+02
-6 17763     1.971300e+02 7.205100e+02
-9 17763     9.679999e+01 4.689900e+02
-6 17764     3.820700e+02 7.162000e+02
-9 17764     2.440699e+02 5.138800e+02
-6 17765     2.007300e+02 7.093200e+02
-8 17765     3.068800e+02 3.348200e+02
-9 17765     9.991998e+01 4.612700e+02
-6 17766     -2.636500e+02 6.824200e+02
-14 17766     5.159000e+02 -1.320300e+02
-6 17767     -8.570001e+01 6.588600e+02
-12 17767     7.628003e+01 6.150900e+02
-6 17768     -6.140997e+01 6.579600e+02
-12 17768     9.954999e+01 6.134900e+02
-6 17769     -1.124900e+02 6.515700e+02
-12 17769     5.084003e+01 6.101200e+02
-6 17770     -2.546000e+02 6.491700e+02
-14 17770     5.212100e+02 -1.584700e+02
-6 17771     -2.867200e+02 6.427700e+02
-12 17771     -1.187200e+02 6.102500e+02
-6 17772     -4.223000e+02 6.426100e+02
-12 17772     -2.496400e+02 6.155800e+02
-6 17773     -4.840900e+02 6.421800e+02
-12 17773     -3.085500e+02 6.171900e+02
-6 17774     -4.139400e+02 6.420400e+02
-12 17774     -2.415700e+02 6.146600e+02
-6 17775     1.875300e+02 6.345700e+02
-12 17775     2.967000e+02 6.203800e+02
-6 17776     1.875300e+02 6.345700e+02
-12 17776     2.967000e+02 6.203800e+02
-6 17777     1.944500e+02 6.342700e+02
-12 17777     3.033600e+02 6.200500e+02
-6 17778     -3.398200e+02 6.339500e+02
-11 17778     2.659600e+02 -2.022900e+02
-6 17779     -6.202002e+01 6.272500e+02
-12 17779     9.925000e+01 5.853800e+02
-6 17780     -1.151500e+02 6.161900e+02
-12 17780     4.728003e+01 5.786200e+02
-6 17781     -5.327002e+01 6.137500e+02
-14 17781     7.035900e+02 -2.072900e+02
-6 17782     -5.327002e+01 6.137500e+02
-14 17782     7.035900e+02 -2.072900e+02
-6 17783     4.556600e+02 6.095000e+02
-12 17783     5.374900e+02 6.179300e+02
-6 17784     -2.790400e+02 6.030900e+02
-12 17784     -1.109700e+02 5.740700e+02
-6 17785     3.881000e+02 5.983800e+02
-12 17785     4.724800e+02 6.048400e+02
-6 17786     4.008300e+02 5.987900e+02
-12 17786     4.846400e+02 6.054400e+02
-6 17787     4.609500e+02 5.951500e+02
-7 17787     4.857800e+02 5.736800e+02
-12 17787     5.421100e+02 6.044500e+02
-6 17788     4.788500e+02 5.930600e+02
-9 17788     3.209399e+02 4.361400e+02
-12 17788     5.598800e+02 6.029200e+02
-6 17789     -3.164900e+02 5.907800e+02
-12 17789     -1.475400e+02 5.648300e+02
-6 17790     4.164700e+02 5.901600e+02
-8 17790     4.659900e+02 2.891400e+02
-12 17790     4.995200e+02 5.977300e+02
-6 17791     -2.979700e+02 5.864100e+02
-12 17791     -1.294800e+02 5.595700e+02
-6 17792     -2.877700e+02 5.860400e+02
-12 17792     -1.196300e+02 5.589800e+02
-6 17793     4.990300e+02 5.825300e+02
-7 17793     5.155900e+02 5.595100e+02
-6 17794     -9.731000e+01 5.777600e+02
-12 17794     6.504999e+01 5.415900e+02
-6 17795     4.491600e+02 5.763700e+02
-12 17795     5.310400e+02 5.855500e+02
-6 17796     4.969500e+02 5.707200e+02
-7 17796     5.139700e+02 5.492400e+02
-6 17797     1.700200e+02 5.647800e+02
-12 17797     2.811100e+02 5.534000e+02
-6 17798     -2.078300e+02 5.631600e+02
-12 17798     -4.229999e+01 5.345500e+02
-6 17799     -2.174300e+02 5.617400e+02
-14 17799     5.459900e+02 -2.323200e+02
-6 17800     4.948800e+02 5.555800e+02
-12 17800     5.754800e+02 5.660000e+02
-6 17801     2.037600e+02 5.551100e+02
-12 17801     3.122300e+02 5.447800e+02
-6 17802     1.607800e+02 5.536000e+02
-12 17802     2.731300e+02 5.421500e+02
-6 17803     -3.459300e+02 5.499900e+02
-12 17803     -1.763900e+02 5.290600e+02
-6 17804     1.673100e+02 5.497800e+02
-9 17804     8.063000e+01 3.404300e+02
-11 17804     5.934301e+02 -3.172100e+02
-6 17805     -4.350000e+02 5.481900e+02
-12 17805     -2.618500e+02 5.309500e+02
-6 17806     4.516700e+02 5.464700e+02
-7 17806     4.752500e+02 5.311500e+02
-6 17807     -4.305100e+02 5.457600e+02
-7 17807     -1.841200e+02 5.845200e+02
-6 17808     1.659600e+02 5.403700e+02
-12 17808     2.778400e+02 5.298500e+02
-6 17809     4.045800e+02 5.369500e+02
-12 17809     4.886500e+02 5.444300e+02
-6 17810     4.638300e+02 5.349300e+02
-8 17810     5.011100e+02 2.532600e+02
-10 17810     6.726600e+02 6.140200e+02
-12 17810     5.453000e+02 5.444300e+02
-6 17811     -1.926600e+02 5.318900e+02
-14 17811     5.665800e+02 -2.596200e+02
-6 17812     3.707000e+02 5.321300e+02
-9 17812     2.439800e+02 3.776600e+02
-12 17812     4.564000e+02 5.385300e+02
-6 17813     -4.383900e+02 5.314600e+02
-12 17813     -2.653700e+02 5.161400e+02
-6 17814     2.297100e+02 5.307400e+02
-12 17814     3.360100e+02 5.225700e+02
-6 17815     4.441100e+02 5.270400e+02
-10 17815     6.525800e+02 6.086000e+02
-12 17815     5.265800e+02 5.355000e+02
-6 17816     5.098300e+02 5.228000e+02
-10 17816     7.161100e+02 5.920000e+02
-6 17817     3.824200e+02 5.216300e+02
-10 17817     5.933800e+02 6.142600e+02
-12 17817     4.675200e+02 5.283300e+02
-6 17818     4.488800e+02 5.204000e+02
-10 17818     6.563000e+02 6.008900e+02
-12 17818     5.310500e+02 5.297300e+02
-6 17819     4.185400e+02 5.186400e+02
-7 17819     4.466200e+02 5.095100e+02
-10 17819     6.266100e+02 6.041500e+02
-6 17820     3.703400e+02 5.178900e+02
-8 17820     4.336000e+02 2.343100e+02
-9 17820     2.445000e+02 3.671600e+02
-10 17820     5.814700e+02 6.117200e+02
-11 17820     7.065601e+02 -3.787400e+02
-12 17820     4.562400e+02 5.243400e+02
-6 17821     -4.706900e+02 5.160100e+02
-12 17821     -2.965300e+02 5.035200e+02
-6 17822     -3.078900e+02 5.155400e+02
-12 17822     -1.395600e+02 4.960200e+02
-6 17823     3.785400e+02 5.152400e+02
-10 17823     5.884700e+02 6.076400e+02
-6 17824     5.781000e+02 5.121100e+02
-12 17824     6.572200e+02 5.252300e+02
-6 17825     2.984800e+02 5.081100e+02
-12 17825     3.994000e+02 5.024900e+02
-6 17826     4.546500e+02 5.058500e+02
-12 17826     5.368600e+02 5.148000e+02
-6 17827     -3.153200e+02 5.032300e+02
-12 17827     -1.465000e+02 4.852900e+02
-6 17828     -4.807900e+02 5.025600e+02
-12 17828     -3.061800e+02 4.920200e+02
-6 17829     -4.469400e+02 5.008800e+02
-12 17829     -2.740300e+02 4.890600e+02
-6 17830     -2.074700e+02 4.955800e+02
-12 17830     -4.183002e+01 4.737000e+02
-6 17831     3.871200e+02 4.881700e+02
-7 17831     4.200800e+02 4.854600e+02
-6 17832     3.846400e+02 4.865100e+02
-10 17832     5.900100e+02 5.759600e+02
-12 17832     4.702900e+02 4.936100e+02
-6 17833     4.883500e+02 4.863400e+02
-10 17833     6.883000e+02 5.566500e+02
-12 17833     5.695000e+02 4.963000e+02
-6 17834     3.787100e+02 4.835200e+02
-10 17834     5.838900e+02 5.737300e+02
-6 17835     4.465601e+02 4.811700e+02
-12 17835     5.292400e+02 4.899700e+02
-6 17836     3.964100e+02 4.784100e+02
-12 17836     4.814100e+02 4.854500e+02
-6 17837     5.813000e+02 4.780700e+02
-10 17837     7.792300e+02 5.294100e+02
-6 17838     3.631000e+02 4.767600e+02
-10 17838     5.686100e+02 5.695000e+02
-6 17839     3.930500e+02 4.755400e+02
-10 17839     5.960500e+02 5.629300e+02
-6 17840     -3.527400e+02 4.752400e+02
-12 17840     -1.826400e+02 4.616100e+02
-6 17841     -3.527400e+02 4.752400e+02
-12 17841     -1.826400e+02 4.616100e+02
-6 17842     3.868100e+02 4.713600e+02
-9 17842     2.585800e+02 3.343900e+02
-6 17843     4.087500e+02 4.699200e+02
-9 17843     2.753300e+02 3.356100e+02
-10 17843     6.100699e+02 5.543100e+02
-6 17844     3.929800e+02 4.676200e+02
-7 17844     4.230400e+02 4.673700e+02
-6 17845     2.114600e+02 4.616500e+02
-12 17845     3.195900e+02 4.562400e+02
-6 17846     3.167400e+02 4.554400e+02
-8 17846     3.918100e+02 1.658500e+02
-9 17846     1.967800e+02 2.883800e+02
-6 17847     4.999500e+02 4.544700e+02
-12 17847     5.809800e+02 4.640300e+02
-6 17848     2.769200e+02 4.508700e+02
-12 17848     3.797000e+02 4.467200e+02
-6 17849     4.489399e+02 4.510900e+02
-10 17849     6.444900e+02 5.264300e+02
-12 17849     5.317000e+02 4.600400e+02
-6 17850     4.528101e+02 4.496400e+02
-8 17850     4.948500e+02 1.907100e+02
-9 17850     3.094399e+02 3.258800e+02
-10 17850     6.482300e+02 5.236800e+02
-12 17850     5.352700e+02 4.585800e+02
-6 17851     4.763199e+02 4.437300e+02
-8 17851     5.117600e+02 1.878500e+02
-10 17851     6.702700e+02 5.129200e+02
-12 17851     5.579800e+02 4.532800e+02
-6 17852     4.786200e+02 4.416000e+02
-10 17852     6.717500e+02 5.103900e+02
-6 17853     3.515500e+02 4.408500e+02
-9 17853     2.338400e+02 3.064600e+02
-12 17853     4.390200e+02 4.477000e+02
-6 17854     4.575500e+02 4.396100e+02
-12 17854     5.400699e+02 4.487000e+02
-6 17855     5.108600e+02 4.356400e+02
-10 17855     7.016300e+02 4.971600e+02
-6 17856     3.675900e+02 4.339400e+02
-12 17856     4.543600e+02 4.416100e+02
-6 17857     -3.554100e+02 4.276900e+02
-7 17857     -1.224000e+02 4.881000e+02
-6 17858     1.534800e+02 4.273400e+02
-12 17858     2.675100e+02 4.221400e+02
-6 17859     3.683000e+02 4.203900e+02
-8 17859     4.345000e+02 1.635700e+02
-12 17859     4.548000e+02 4.280600e+02
-13 17859     7.763700e+02 2.823999e+01
-6 17860     2.011100e+02 4.199300e+02
-12 17860     3.106400e+02 4.157000e+02
-6 17861     3.315500e+02 4.199400e+02
-12 17861     4.202200e+02 4.267200e+02
-6 17862     3.315500e+02 4.199400e+02
-12 17862     4.202200e+02 4.267200e+02
-6 17863     4.638101e+02 4.173700e+02
-10 17863     6.534900e+02 4.870400e+02
-6 17864     3.713300e+02 4.168200e+02
-8 17864     4.360400e+02 1.605700e+02
-9 17864     2.496801e+02 2.905900e+02
-10 17864     5.675601e+02 5.050700e+02
-11 17864     7.103900e+02 -4.653800e+02
-12 17864     4.579200e+02 4.245200e+02
-15 17864     7.587900e+02 5.771900e+02
-6 17865     2.842000e+02 4.136700e+02
-9 17865     1.742200e+02 2.521700e+02
-6 17866     3.624000e+02 4.109100e+02
-12 17866     4.494500e+02 4.183400e+02
-6 17867     4.380100e+02 4.109100e+02
-7 17867     4.554900e+02 4.144000e+02
-6 17868     4.380100e+02 4.109100e+02
-7 17868     4.554900e+02 4.144000e+02
-8 17868     4.848500e+02 1.610100e+02
-12 17868     5.215699e+02 4.198500e+02
-6 17869     4.607800e+02 4.067400e+02
-10 17869     6.490900e+02 4.770200e+02
-15 17869     8.565300e+02 5.456300e+02
-6 17870     4.607800e+02 4.067400e+02
-8 17870     5.019399e+02 1.594600e+02
-10 17870     6.490900e+02 4.770200e+02
-6 17871     4.097400e+02 4.056400e+02
-15 17871     7.990601e+02 5.555400e+02
-6 17872     4.641200e+02 4.045100e+02
-12 17872     5.465100e+02 4.144600e+02
-6 17873     4.054100e+02 4.019900e+02
-12 17873     4.903300e+02 4.116400e+02
-6 17874     4.243200e+02 4.005000e+02
-10 17874     6.145100e+02 4.773600e+02
-15 17874     8.151100e+02 5.455500e+02
-6 17875     3.440900e+02 3.990200e+02
-15 17875     7.268101e+02 5.613500e+02
-6 17876     1.536400e+02 3.975000e+02
-12 17876     2.680601e+02 3.936000e+02
-6 17877     1.556500e+02 3.929400e+02
-12 17877     2.696400e+02 3.893400e+02
-6 17878     1.618400e+02 3.925700e+02
-12 17878     2.749800e+02 3.890200e+02
-6 17879     -1.758400e+02 3.881100e+02
-11 17879     3.634500e+02 -3.889100e+02
-6 17880     1.595400e+02 3.823000e+02
-7 17880     2.588900e+02 4.152900e+02
-14 17880     8.629301e+02 -4.399700e+02
-15 17880     5.771200e+02 5.867300e+02
-6 17881     -1.713800e+02 3.817600e+02
-14 17881     5.615800e+02 -3.892000e+02
-6 17882     1.662100e+02 3.799300e+02
-7 17882     2.637000e+02 4.124500e+02
-14 17882     8.693199e+02 -4.435200e+02
-15 17882     5.834500e+02 5.825800e+02
-6 17883     3.721400e+02 3.801500e+02
-10 17883     5.627300e+02 4.673600e+02
-6 17884     4.198100e+02 3.771900e+02
-9 17884     2.885300e+02 2.663200e+02
-12 17884     5.041100e+02 3.859600e+02
-6 17885     4.007300e+02 3.727900e+02
-10 17885     5.878700e+02 4.546700e+02
-12 17885     4.859900e+02 3.810200e+02
-15 17885     7.843199e+02 5.174300e+02
-6 17886     5.124900e+02 3.726700e+02
-12 17886     5.932200e+02 3.827200e+02
-6 17887     5.124900e+02 3.726700e+02
-12 17887     5.932200e+02 3.827200e+02
-6 17888     3.632000e+02 3.715200e+02
-12 17888     4.512900e+02 3.801800e+02
-6 17889     -5.009900e+02 3.697400e+02
-9 17889     -4.159600e+02 1.794200e+02
-6 17890     4.212300e+02 3.645000e+02
-12 17890     5.053400e+02 3.730000e+02
-6 17891     4.300800e+02 3.574500e+02
-15 17891     8.144100e+02 4.922900e+02
-6 17892     -2.088500e+02 3.542500e+02
-14 17892     5.226100e+02 -4.073300e+02
-6 17893     5.709600e+02 3.546400e+02
-12 17893     6.500900e+02 3.650800e+02
-6 17894     4.416000e+02 3.539900e+02
-10 17894     6.225400e+02 4.257600e+02
-6 17895     4.112700e+02 3.497200e+02
-10 17895     5.938199e+02 4.284900e+02
-15 17895     7.916400e+02 4.868300e+02
-6 17896     5.837100e+02 3.498700e+02
-10 17896     7.577100e+02 3.912900e+02
-12 17896     6.628600e+02 3.607200e+02
-6 17897     4.083400e+02 3.474700e+02
-10 17897     5.908800e+02 4.263600e+02
-12 17897     4.932100e+02 3.562900e+02
-6 17898     4.174400e+02 3.472800e+02
-10 17898     5.994100e+02 4.243000e+02
-6 17899     5.561200e+02 3.471200e+02
-8 17899     5.749000e+02 1.213100e+02
-9 17899     3.934700e+02 2.604100e+02
-6 17900     2.529900e+02 3.439700e+02
-15 17900     6.677100e+02 5.239200e+02
-6 17901     4.345400e+02 3.439100e+02
-8 17901     4.827400e+02 1.112300e+02
-9 17901     3.011400e+02 2.425800e+02
-12 17901     5.181801e+02 3.534300e+02
-15 17901     8.170900e+02 4.733300e+02
-6 17902     4.493600e+02 3.412500e+02
-15 17902     8.329800e+02 4.670200e+02
-6 17903     4.543700e+02 3.370100e+02
-8 17903     4.983800e+02 1.070000e+02
-9 17903     3.167800e+02 2.396200e+02
-10 17903     6.322200e+02 4.056700e+02
-6 17904     4.543700e+02 3.370100e+02
-8 17904     4.983800e+02 1.070000e+02
-9 17904     3.167800e+02 2.396200e+02
-6 17905     -5.556400e+02 3.355200e+02
-14 17905     2.260900e+02 -3.726200e+02
-6 17906     4.687800e+02 3.322800e+02
-10 17906     6.450100e+02 3.979700e+02
-15 17906     8.532900e+02 4.512700e+02
-6 17907     4.687800e+02 3.322800e+02
-10 17907     6.450100e+02 3.979700e+02
-15 17907     8.532900e+02 4.512700e+02
-6 17908     4.758300e+02 3.324200e+02
-12 17908     5.580100e+02 3.420700e+02
-6 17909     5.255300e+02 3.325600e+02
-12 17909     6.057000e+02 3.430100e+02
-6 17910     5.397900e+02 3.320000e+02
-10 17910     7.121000e+02 3.822600e+02
-12 17910     6.198101e+02 3.423700e+02
-6 17911     5.397900e+02 3.320000e+02
-10 17911     7.121000e+02 3.822600e+02
-12 17911     6.198101e+02 3.423700e+02
-6 17912     4.370200e+02 3.303800e+02
-7 17912     4.497200e+02 3.459800e+02
-12 17912     5.208800e+02 3.399200e+02
-15 17912     8.175699e+02 4.568600e+02
-6 17913     5.426700e+02 3.266800e+02
-12 17913     6.225100e+02 3.375500e+02
-6 17914     5.326000e+02 3.260000e+02
-10 17914     7.041500e+02 3.778100e+02
-12 17914     6.127100e+02 3.361100e+02
-6 17915     3.686100e+02 3.252100e+02
-7 17915     3.955900e+02 3.481300e+02
-6 17916     4.181200e+02 3.249300e+02
-10 17916     5.966899e+02 4.018000e+02
-12 17916     5.023700e+02 3.341200e+02
-15 17916     7.960400e+02 4.544300e+02
-6 17917     4.900800e+02 3.249000e+02
-10 17917     6.629900e+02 3.861000e+02
-6 17918     -2.783900e+02 3.233600e+02
-14 17918     4.553600e+02 -4.234900e+02
-6 17919     5.329800e+02 3.227900e+02
-9 17919     3.764301e+02 2.380700e+02
-10 17919     7.036200e+02 3.739600e+02
-6 17920     3.536700e+02 3.176700e+02
-9 17920     2.406000e+02 2.108800e+02
-12 17920     4.411700e+02 3.262000e+02
-6 17921     1.786300e+02 3.143100e+02
-15 17921     5.877800e+02 5.042800e+02
-6 17922     4.690000e+02 3.146600e+02
-12 17922     5.513000e+02 3.244000e+02
-15 17922     8.505900e+02 4.292400e+02
-6 17923     4.189800e+02 3.128000e+02
-8 17923     4.725800e+02 8.622000e+01
-10 17923     5.957800e+02 3.893500e+02
-15 17923     7.951000e+02 4.397400e+02
-6 17924     5.377200e+02 3.118700e+02
-10 17924     7.072100e+02 3.612800e+02
-12 17924     6.180900e+02 3.220100e+02
-6 17925     1.926600e+02 3.051200e+02
-15 17925     6.000900e+02 4.903000e+02
-6 17926     -1.788800e+02 3.042900e+02
-10 17926     9.425000e+01 4.974800e+02
-15 17926     2.007400e+02 5.537800e+02
-6 17927     5.622300e+02 3.031400e+02
-10 17927     7.294301e+02 3.468700e+02
-6 17928     -3.326200e+02 3.016800e+02
-10 17928     -4.244000e+01 5.174100e+02
-15 17928     3.987000e+01 5.740100e+02
-6 17929     4.097100e+02 3.017800e+02
-9 17929     2.846300e+02 2.063800e+02
-10 17929     5.859301e+02 3.802700e+02
-15 17929     7.834600e+02 4.284700e+02
-6 17930     4.097100e+02 3.017800e+02
-10 17930     5.859301e+02 3.802700e+02
-15 17930     7.834600e+02 4.284700e+02
-6 17931     4.166100e+02 2.962700e+02
-8 17931     4.716700e+02 7.273001e+01
-12 17931     5.016200e+02 3.052100e+02
-6 17932     5.789301e+02 2.951200e+02
-12 17932     6.579200e+02 3.056800e+02
-6 17933     -1.983900e+02 2.906300e+02
-10 17933     7.115997e+01 4.870900e+02
-15 17933     1.733800e+02 5.412500e+02
-6 17934     -2.230800e+02 2.855900e+02
-12 17934     -8.202002e+01 2.939300e+02
-6 17935     4.134000e+02 2.856700e+02
-15 17935     7.851200e+02 4.077800e+02
-6 17936     4.927300e+02 2.725600e+02
-12 17936     5.741200e+02 2.824500e+02
-15 17936     8.701700e+02 3.721000e+02
-6 17937     -2.832300e+02 2.702300e+02
-12 17937     -1.391800e+02 2.819000e+02
-6 17938     -8.795999e+01 2.663900e+02
-7 17938     5.147998e+01 3.412800e+02
-13 17938     4.273600e+02 -3.498999e+01
-14 17938     6.129500e+02 -5.049399e+02
-6 17939     3.622900e+02 2.646200e+02
-12 17939     4.499399e+02 2.736500e+02
-15 17939     7.271300e+02 3.960000e+02
-6 17940     3.588300e+02 2.617900e+02
-15 17940     7.229000e+02 3.933000e+02
-6 17941     3.588300e+02 2.617900e+02
-15 17941     7.229000e+02 3.933000e+02
-6 17942     5.219000e+01 2.584700e+02
-12 17942     1.005700e+02 3.016800e+02
-6 17943     -3.029400e+02 2.569800e+02
-14 17943     4.194200e+02 -4.769399e+02
-6 17944     3.377300e+02 2.560100e+02
-12 17944     4.270000e+02 2.650100e+02
-6 17945     5.228800e+02 2.514700e+02
-9 17945     3.726300e+02 1.825500e+02
-6 17946     5.474900e+02 2.508900e+02
-9 17946     3.931200e+02 1.834300e+02
-6 17947     5.657600e+02 2.478900e+02
-9 17947     4.063199e+02 1.843900e+02
-10 17947     7.226100e+02 2.898800e+02
-12 17947     6.451600e+02 2.577500e+02
-6 17948     5.821100e+02 2.441700e+02
-10 17948     7.381100e+02 2.824100e+02
-12 17948     6.610900e+02 2.542700e+02
-6 17949     5.457300e+02 2.435900e+02
-8 17949     5.695800e+02 4.194000e+01
-12 17949     6.253700e+02 2.533400e+02
-6 17950     5.457300e+02 2.435900e+02
-12 17950     6.253700e+02 2.533400e+02
-6 17951     4.630300e+02 2.417100e+02
-8 17951     5.060300e+02 3.489999e+01
-12 17951     5.456200e+02 2.513400e+02
-15 17951     8.328500e+02 3.430700e+02
-6 17952     -4.913000e+01 2.406900e+02
-12 17952     -4.179993e+00 2.874800e+02
-6 17953     3.140000e+02 2.363800e+02
-10 17953     4.927100e+02 3.366400e+02
-6 17954     3.140000e+02 2.363800e+02
-12 17954     4.046400e+02 2.463000e+02
-15 17954     6.729301e+02 3.741500e+02
-6 17955     3.140000e+02 2.363800e+02
-12 17955     4.046400e+02 2.463000e+02
-6 17956     3.111100e+02 2.354300e+02
-12 17956     4.019200e+02 2.455100e+02
-6 17957     3.295800e+02 2.354900e+02
-12 17957     4.195300e+02 2.456600e+02
-6 17958     3.248400e+02 2.325900e+02
-12 17958     4.145900e+02 2.424600e+02
-6 17959     3.977300e+02 2.315100e+02
-12 17959     4.837300e+02 2.413000e+02
-6 17960     5.398500e+02 2.295500e+02
-12 17960     6.194600e+02 2.395100e+02
-6 17961     -6.676001e+01 2.273700e+02
-14 17961     5.628600e+02 -5.475601e+02
-6 17962     4.065700e+02 2.263200e+02
-10 17962     5.725601e+02 3.061800e+02
-15 17962     7.689800e+02 3.391500e+02
-6 17963     4.134000e+02 2.227500e+02
-15 17963     7.758700e+02 3.328700e+02
-6 17964     4.419800e+02 2.218900e+02
-12 17964     5.255699e+02 2.325700e+02
-6 17965     4.419800e+02 2.218900e+02
-12 17965     5.255699e+02 2.325700e+02
-6 17966     -3.152500e+02 2.215800e+02
-14 17966     4.012700e+02 -5.053400e+02
-6 17967     5.259399e+02 2.205600e+02
-9 17967     3.774399e+02 1.577900e+02
-6 17968     5.259399e+02 2.205600e+02
-9 17968     3.774399e+02 1.577900e+02
-6 17969     -1.025300e+02 2.184100e+02
-14 17969     5.302300e+02 -5.492800e+02
-6 17970     -1.025300e+02 2.184100e+02
-14 17970     5.302300e+02 -5.492800e+02
-6 17971     -9.403000e+01 2.182200e+02
-14 17971     5.375500e+02 -5.507400e+02
-6 17972     5.740800e+02 2.175600e+02
-12 17972     6.532000e+02 2.272700e+02
-6 17973     -2.306700e+02 2.135700e+02
-14 17973     4.718700e+02 -5.275800e+02
-6 17974     3.651000e+02 2.123800e+02
-8 17974     4.335601e+02 5.600006e+00
-6 17975     3.682500e+02 2.129300e+02
-12 17975     4.560300e+02 2.233300e+02
-6 17976     4.410999e+01 2.102700e+02
-15 17976     1.445601e+02 3.526300e+02
-6 17977     1.672900e+02 2.062900e+02
-12 17977     2.070699e+02 2.505600e+02
-6 17978     5.204399e+02 2.038500e+02
-10 17978     6.730400e+02 2.565000e+02
-6 17979     4.309998e+01 2.035000e+02
-10 17979     5.415002e+01 3.160700e+02
-6 17980     3.680800e+02 2.037100e+02
-7 17980     3.884000e+02 2.466900e+02
-10 17980     5.353600e+02 2.926700e+02
-12 17980     4.555601e+02 2.140300e+02
-15 17980     7.249301e+02 3.225200e+02
-6 17981     5.826700e+02 2.037200e+02
-8 17981     5.980800e+02 1.332999e+01
-9 17981     4.221000e+02 1.520500e+02
-12 17981     6.613500e+02 2.134000e+02
-6 17982     3.699200e+02 2.013900e+02
-15 17982     7.264100e+02 3.193600e+02
-6 17983     3.780600e+02 1.998600e+02
-10 17983     5.435900e+02 2.865500e+02
-15 17983     7.348700e+02 3.156200e+02
-6 17984     5.761600e+02 1.926400e+02
-12 17984     6.549000e+02 2.020600e+02
-6 17985     3.920800e+02 1.919700e+02
-15 17985     7.479600e+02 3.028100e+02
-6 17986     3.920800e+02 1.919700e+02
-15 17986     7.479600e+02 3.028100e+02
-6 17987     5.708300e+02 1.904900e+02
-12 17987     6.492700e+02 1.995900e+02
-6 17988     5.083500e+02 1.885700e+02
-10 17988     6.593700e+02 2.442100e+02
-15 17988     8.742000e+02 2.673300e+02
-6 17989     5.519100e+02 1.881600e+02
-12 17989     6.309600e+02 1.978800e+02
-6 17990     -1.361500e+02 1.842700e+02
-14 17990     4.918000e+02 -5.744200e+02
-6 17991     5.591400e+02 1.835400e+02
-10 17991     7.061801e+02 2.266700e+02
-6 17992     -3.128900e+02 1.767800e+02
-14 17992     3.921700e+02 -5.451300e+02
-6 17993     1.663700e+02 1.752200e+02
-10 17993     1.582800e+02 2.625300e+02
-12 17993     2.005900e+02 2.216900e+02
-15 17993     2.612600e+02 2.840500e+02
-6 17994     4.805200e+02 1.714100e+02
-12 17994     5.625500e+02 1.814500e+02
-6 17995     4.450800e+02 1.704000e+02
-12 17995     5.284500e+02 1.805600e+02
-6 17996     5.690601e+02 1.700200e+02
-8 17996     5.888800e+02 -1.382001e+01
-6 17997     5.658400e+02 1.692500e+02
-10 17997     7.098900e+02 2.109000e+02
-6 17998     4.372900e+02 1.676000e+02
-12 17998     5.213800e+02 1.773800e+02
-6 17999     3.791800e+02 1.670900e+02
-15 17999     7.309900e+02 2.773800e+02
-6 18000     5.158300e+02 1.648100e+02
-12 18000     5.963500e+02 1.751800e+02
-6 18001     3.674000e+02 1.614500e+02
-15 18001     7.183900e+02 2.733800e+02
-6 18002     5.162800e+02 1.614400e+02
-12 18002     5.968300e+02 1.711400e+02
-6 18003     3.647100e+02 1.597500e+02
-10 18003     5.260100e+02 2.515700e+02
-12 18003     4.520699e+02 1.708500e+02
-15 18003     7.148500e+02 2.726600e+02
-6 18004     1.453800e+02 1.575500e+02
-7 18004     9.379999e+01 2.170200e+02
-15 18004     2.213600e+02 2.649400e+02
-6 18005     3.471400e+02 1.565000e+02
-10 18005     5.109900e+02 2.521800e+02
-6 18006     5.539399e+02 1.560500e+02
-12 18006     6.331899e+02 1.659200e+02
-6 18007     5.713500e+02 1.533800e+02
-12 18007     6.499399e+02 1.626500e+02
-6 18008     5.713500e+02 1.533800e+02
-12 18008     6.499399e+02 1.626500e+02
-6 18009     -3.558000e+02 1.519000e+02
-14 18009     3.494800e+02 -5.591000e+02
-6 18010     5.142600e+02 1.519300e+02
-12 18010     5.952300e+02 1.617900e+02
-6 18011     -9.067001e+01 1.492800e+02
-12 18011     -6.194000e+01 2.029000e+02
-6 18012     -5.390015e+00 1.478200e+02
-10 18012     -2.826001e+01 2.643000e+02
-15 18012     4.096997e+01 2.829000e+02
-6 18013     -1.919983e+00 1.477000e+02
-12 18013     2.240002e+01 2.008400e+02
-15 18013     4.439001e+01 2.819100e+02
-6 18014     3.758700e+02 1.456400e+02
-12 18014     4.629399e+02 1.567400e+02
-15 18014     7.244200e+02 2.534400e+02
-6 18015     5.609985e+00 1.440500e+02
-12 18015     2.946997e+01 1.972300e+02
-15 18015     4.991998e+01 2.750800e+02
-6 18016     5.609985e+00 1.440500e+02
-12 18016     2.946997e+01 1.972300e+02
-6 18017     5.005900e+02 1.416900e+02
-8 18017     5.364301e+02 -4.069000e+01
-10 18017     6.451899e+02 2.000900e+02
-6 18018     5.005900e+02 1.416900e+02
-12 18018     5.811801e+02 1.518000e+02
-6 18019     -6.487000e+01 1.415400e+02
-12 18019     -3.889001e+01 1.956300e+02
-15 18019     -1.895001e+01 2.888200e+02
-6 18020     -1.380200e+02 1.408600e+02
-15 18020     -8.152002e+01 3.058200e+02
-6 18021     2.343600e+02 1.392800e+02
-12 18021     2.717600e+02 1.820600e+02
-6 18022     4.367999e+01 1.391000e+02
-10 18022     1.248999e+01 2.451000e+02
-6 18023     3.827100e+02 1.390300e+02
-10 18023     5.393900e+02 2.265700e+02
-12 18023     4.693800e+02 1.501300e+02
-6 18024     3.827100e+02 1.390300e+02
-10 18024     5.393900e+02 2.265700e+02
-12 18024     4.693800e+02 1.501300e+02
-6 18025     5.787900e+02 1.385800e+02
-12 18025     6.567300e+02 1.480100e+02
-6 18026     -2.159003e+01 1.381200e+02
-12 18026     1.830017e+00 1.920200e+02
-6 18027     3.115002e+01 1.373000e+02
-12 18027     5.385999e+01 1.902100e+02
-6 18028     3.115002e+01 1.373000e+02
-12 18028     5.385999e+01 1.902100e+02
-6 18029     3.412300e+02 1.363500e+02
-10 18029     5.038900e+02 2.343600e+02
-12 18029     4.305699e+02 1.480100e+02
-15 18029     6.880000e+02 2.521000e+02
-6 18030     1.434998e+01 1.348900e+02
-15 18030     5.504999e+01 2.621200e+02
-6 18031     9.060999e+01 1.333800e+02
-15 18031     1.391000e+02 2.445700e+02
-6 18032     -9.845999e+01 1.322700e+02
-12 18032     -7.150000e+01 1.866700e+02
-6 18033     4.909000e+02 1.322700e+02
-10 18033     6.345100e+02 1.930800e+02
-15 18033     8.452600e+02 2.054900e+02
-6 18034     4.978400e+02 1.325300e+02
-10 18034     6.414900e+02 1.920400e+02
-15 18034     8.535000e+02 2.043600e+02
-6 18035     -6.903003e+01 1.320700e+02
-10 18035     -8.689001e+01 2.617000e+02
-12 18035     -4.409998e+01 1.863500e+02
-15 18035     -2.726001e+01 2.785200e+02
-6 18036     1.290300e+02 1.236500e+02
-12 18036     1.533500e+02 1.735300e+02
-6 18037     5.433800e+02 1.234900e+02
-12 18037     6.219700e+02 1.332800e+02
-6 18038     5.860800e+02 1.220000e+02
-12 18038     6.638800e+02 1.313000e+02
-6 18039     5.860800e+02 1.220000e+02
-12 18039     6.638800e+02 1.313000e+02
-6 18040     5.476500e+02 1.212600e+02
-12 18040     6.263000e+02 1.310600e+02
-6 18041     -2.821002e+01 1.187300e+02
-12 18041     -6.950012e+00 1.731100e+02
-6 18042     3.822600e+02 1.183500e+02
-10 18042     5.368199e+02 2.069200e+02
-6 18043     4.650100e+02 1.186100e+02
-15 18043     8.156801e+02 1.969500e+02
-6 18044     5.501200e+02 1.182200e+02
-8 18044     5.745900e+02 -5.623001e+01
-12 18044     6.289500e+02 1.280900e+02
-6 18045     -4.414001e+01 1.163100e+02
-12 18045     -2.252002e+01 1.708500e+02
-6 18046     4.572900e+02 1.164900e+02
-15 18046     8.062000e+02 1.976300e+02
-6 18047     5.468500e+02 1.165800e+02
-12 18047     6.256500e+02 1.264800e+02
-6 18048     -1.341300e+02 1.159800e+02
-12 18048     -1.061200e+02 1.708100e+02
-6 18049     -1.341300e+02 1.159800e+02
-12 18049     -1.061200e+02 1.708100e+02
-15 18049     -8.976001e+01 2.752700e+02
-6 18050     2.100000e+02 1.152600e+02
-12 18050     2.405500e+02 1.604000e+02
-6 18051     -5.989001e+01 1.136700e+02
-10 18051     -8.622998e+01 2.412600e+02
-6 18052     -5.989001e+01 1.136700e+02
-10 18052     -8.622998e+01 2.412600e+02
-15 18052     -2.679999e+01 2.545000e+02
-6 18053     4.535601e+02 1.085900e+02
-12 18053     5.362600e+02 1.195900e+02
-6 18054     5.377900e+02 1.054700e+02
-9 18054     3.922600e+02 6.790997e+01
-6 18055     4.090600e+02 1.049800e+02
-12 18055     4.941400e+02 1.164100e+02
-15 18055     7.537900e+02 1.970500e+02
-6 18056     -4.026001e+01 1.045800e+02
-10 18056     -7.308002e+01 2.276700e+02
-15 18056     -1.153998e+01 2.391300e+02
-6 18057     7.748999e+01 1.019400e+02
-10 18057     3.153003e+01 2.006600e+02
-12 18057     9.746002e+01 1.538800e+02
-6 18058     4.266400e+02 1.014500e+02
-10 18058     5.734399e+02 1.796500e+02
-15 18058     7.725300e+02 1.879100e+02
-6 18059     4.266400e+02 1.014500e+02
-10 18059     5.734399e+02 1.796500e+02
-6 18060     3.060900e+02 9.957001e+01
-12 18060     3.561100e+02 1.328900e+02
-6 18061     -3.797998e+01 9.783002e+01
-15 18061     -1.203003e+01 2.306700e+02
-6 18062     5.536200e+02 9.788000e+01
-12 18062     6.317100e+02 1.072800e+02
-6 18063     3.644800e+02 9.775000e+01
-12 18063     4.215601e+02 1.262200e+02
-6 18064     3.556700e+02 9.516998e+01
-12 18064     4.117600e+02 1.238300e+02
-6 18065     4.308000e+02 9.459003e+01
-7 18065     4.294200e+02 1.490800e+02
-10 18065     5.756000e+02 1.716700e+02
-6 18066     4.519500e+02 9.412000e+01
-15 18066     7.978101e+02 1.732400e+02
-6 18067     2.634600e+02 9.285999e+01
-10 18067     2.447900e+02 1.621800e+02
-6 18068     3.124200e+02 9.204999e+01
-12 18068     3.616700e+02 1.257200e+02
-15 18068     4.728300e+02 1.653400e+02
-6 18069     4.307001e+01 9.037000e+01
-10 18069     -4.809998e+00 1.962500e+02
-12 18069     6.103998e+01 1.434200e+02
-15 18069     6.802002e+01 2.033000e+02
-6 18070     -2.414100e+02 8.946997e+01
-12 18070     -1.890700e+02 1.403100e+02
-6 18071     4.565800e+02 8.904999e+01
-10 18071     5.974200e+02 1.605200e+02
-15 18071     8.014600e+02 1.655800e+02
-6 18072     6.923999e+01 8.750000e+01
-10 18072     1.898999e+01 1.880400e+02
-6 18073     1.042100e+02 8.720001e+01
-12 18073     1.243100e+02 1.382000e+02
-6 18074     4.572400e+02 8.633002e+01
-10 18074     5.978800e+02 1.576200e+02
-15 18074     8.018800e+02 1.626200e+02
-6 18075     -3.064800e+02 8.325000e+01
-10 18075     -2.277300e+02 2.756900e+02
-15 18075     -1.861800e+02 2.912900e+02
-6 18076     5.638300e+02 8.058002e+01
-12 18076     6.421500e+02 9.000000e+01
-6 18077     -2.387300e+02 8.007001e+01
-12 18077     -1.889000e+02 1.317400e+02
-6 18078     -3.150024e+00 7.683002e+01
-12 18078     1.365002e+01 1.309600e+02
-6 18079     -4.490000e+02 6.872998e+01
-7 18079     -2.748000e+02 2.114600e+02
-6 18080     -4.490000e+02 6.872998e+01
-7 18080     -2.748000e+02 2.114600e+02
-6 18081     2.551400e+02 6.781000e+01
-12 18081     2.896600e+02 1.087600e+02
-13 18081     6.088101e+02 -2.257900e+02
-6 18082     -2.444100e+02 6.559003e+01
-10 18082     -2.058900e+02 2.421400e+02
-15 18082     -1.617400e+02 2.525800e+02
-6 18083     -3.066998e+01 6.325000e+01
-12 18083     -1.408002e+01 1.181300e+02
-15 18083     -1.582001e+01 1.884800e+02
-6 18084     3.426001e+01 6.262000e+01
-10 18084     -2.046002e+01 1.705000e+02
-15 18084     4.996002e+01 1.730300e+02
-6 18085     -3.258002e+01 6.140997e+01
-10 18085     -7.914001e+01 1.833100e+02
-15 18085     -1.846002e+01 1.868400e+02
-6 18086     -2.473900e+02 6.015997e+01
-10 18086     -2.114600e+02 2.369500e+02
-12 18086     -2.014400e+02 1.136400e+02
-15 18086     -1.681200e+02 2.466600e+02
-6 18087     -3.059900e+02 5.909003e+01
-10 18087     -2.411600e+02 2.514300e+02
-12 18087     -2.474700e+02 1.115800e+02
-6 18088     -2.446800e+02 5.826001e+01
-10 18088     -2.103000e+02 2.343200e+02
-12 18088     -1.991400e+02 1.118700e+02
-6 18089     -2.574000e+02 5.575000e+01
-10 18089     -2.219700e+02 2.347000e+02
-15 18089     -1.802800e+02 2.440900e+02
-6 18090     -1.868200e+02 5.278003e+01
-12 18090     -1.573600e+02 1.083800e+02
-6 18091     6.381000e+01 5.325000e+01
-12 18091     7.965002e+01 1.053400e+02
-15 18091     7.878003e+01 1.547700e+02
-6 18092     -3.541998e+01 5.264001e+01
-15 18092     -2.420001e+01 1.773300e+02
-6 18093     1.770001e+01 4.921997e+01
-12 18093     3.252002e+01 1.026400e+02
-6 18094     5.624500e+02 4.791998e+01
-10 18094     6.876300e+02 9.298999e+01
-6 18095     5.689200e+02 4.434003e+01
-12 18095     6.464301e+02 5.365002e+01
-6 18096     5.689200e+02 4.434003e+01
-12 18096     6.464301e+02 5.365002e+01
-6 18097     -3.420700e+02 4.371002e+01
-15 18097     -2.462500e+02 2.518800e+02
-6 18098     -3.420700e+02 4.371002e+01
-10 18098     -2.798600e+02 2.424600e+02
-15 18098     -2.462500e+02 2.518800e+02
-6 18099     8.583002e+01 4.301001e+01
-12 18099     1.015100e+02 9.419000e+01
-6 18100     9.302002e+01 4.163000e+01
-12 18100     1.083300e+02 9.182001e+01
-6 18101     -2.551800e+02 4.083002e+01
-10 18101     -2.279800e+02 2.193500e+02
-12 18101     -2.130200e+02 9.597998e+01
-15 18101     -1.879400e+02 2.256800e+02
-6 18102     3.856400e+02 4.117999e+01
-12 18102     4.345500e+02 7.112000e+01
-6 18103     -1.321800e+02 4.001001e+01
-9 18103     -6.900000e+01 1.119600e+02
-12 18103     -1.110200e+02 9.629999e+01
-6 18104     1.002700e+02 3.971002e+01
-12 18104     1.164100e+02 9.059998e+01
-6 18105     -2.934000e+02 3.872998e+01
-12 18105     -2.402600e+02 9.247998e+01
-6 18106     -7.446997e+01 3.860999e+01
-15 18106     -6.366998e+01 1.714000e+02
-6 18107     3.690002e+01 3.734003e+01
-15 18107     4.523999e+01 1.432400e+02
-6 18108     -3.910999e+01 3.657001e+01
-12 18108     -2.415002e+01 9.135999e+01
-6 18109     -3.346200e+02 3.502002e+01
-12 18109     -2.794300e+02 9.046002e+01
-6 18110     7.513000e+01 3.490997e+01
-12 18110     8.985999e+01 8.645001e+01
-6 18111     7.513000e+01 3.490997e+01
-12 18111     8.985999e+01 8.645001e+01
-6 18112     -4.427002e+01 3.189001e+01
-12 18112     -2.940002e+01 8.689001e+01
-6 18113     2.761000e+02 2.953998e+01
-12 18113     3.110000e+02 6.894000e+01
-6 18114     1.665900e+02 2.609998e+01
-15 18114     1.959600e+02 1.008600e+02
-6 18115     5.006000e+01 2.209003e+01
-15 18115     5.535999e+01 1.216100e+02
-6 18116     2.509200e+02 2.188000e+01
-15 18116     3.162900e+02 8.094000e+01
-6 18117     6.159998e+01 1.946002e+01
-12 18117     7.519000e+01 7.140002e+01
-6 18118     6.159998e+01 1.946002e+01
-12 18118     7.519000e+01 7.140002e+01
-6 18119     1.392300e+02 1.948999e+01
-8 18119     2.848400e+02 -3.131000e+01
-6 18120     2.635999e+01 1.765997e+01
-12 18120     3.808002e+01 7.023999e+01
-6 18121     1.752500e+02 1.650000e+01
-10 18121     1.114300e+02 9.715002e+01
-15 18121     2.057400e+02 8.801001e+01
-6 18122     5.700012e+00 1.473999e+01
-12 18122     1.882001e+01 6.825000e+01
-6 18123     -1.685600e+02 1.071002e+01
-12 18123     -1.444500e+02 6.735999e+01
-6 18124     -1.685600e+02 1.071002e+01
-12 18124     -1.444500e+02 6.735999e+01
-6 18125     1.989700e+02 9.950012e+00
-15 18125     2.359500e+02 7.603003e+01
-6 18126     1.989700e+02 9.950012e+00
-15 18126     2.359500e+02 7.603003e+01
-6 18127     1.023200e+02 9.530029e+00
-8 18127     2.569800e+02 -3.685999e+01
-6 18128     -1.861900e+02 8.869995e+00
-12 18128     -1.593500e+02 6.522998e+01
-6 18129     3.283200e+02 9.020020e+00
-12 18129     3.657700e+02 4.478003e+01
-6 18130     8.490997e+01 8.039978e+00
-12 18130     9.842999e+01 5.859998e+01
-6 18131     4.165300e+02 7.520020e+00
-10 18131     4.066300e+02 5.014001e+01
-6 18132     2.769000e+01 6.700012e+00
-12 18132     3.922998e+01 5.925000e+01
-6 18133     -1.392500e+02 9.500122e-01
-12 18133     -1.193300e+02 5.728998e+01
-6 18134     1.084000e+02 5.999756e-01
-12 18134     1.235200e+02 4.997998e+01
-6 18135     1.257700e+02 6.300049e-01
-10 18135     5.460999e+01 9.083002e+01
-15 18135     1.385100e+02 8.004001e+01
-6 18136     -2.328900e+02 1.400146e-01
-10 18136     -2.321600e+02 1.733200e+02
-15 18136     -1.930900e+02 1.724200e+02
-6 18137     -6.948999e+01 -7.399902e-01
-8 18137     1.224700e+02 -4.400000e+01
-12 18137     -5.547998e+01 5.441998e+01
-6 18138     3.271900e+02 -6.039978e+00
-12 18138     3.620500e+02 3.010999e+01
-6 18139     3.140015e+00 -6.469971e+00
-9 18139     4.556000e+01 9.244000e+01
-6 18140     8.190002e+00 -7.760010e+00
-12 18140     1.953998e+01 4.571997e+01
-6 18141     3.944000e+01 -1.040997e+01
-12 18141     5.144000e+01 4.167999e+01
-6 18142     -1.170700e+02 -1.291998e+01
-8 18142     8.383002e+01 -5.645999e+01
-6 18143     2.161500e+02 -1.328998e+01
-8 18143     3.453500e+02 -6.465997e+01
-6 18144     3.203003e+01 -1.452002e+01
-8 18144     2.024300e+02 -5.323001e+01
-6 18145     -1.974400e+02 -1.594000e+01
-12 18145     -1.707600e+02 4.095001e+01
-6 18146     -3.208200e+02 -1.690997e+01
-10 18146     -2.936800e+02 1.777700e+02
-15 18146     -2.633400e+02 1.766600e+02
-6 18147     3.250000e+02 -1.723999e+01
-12 18147     3.579700e+02 1.910999e+01
-6 18148     1.373600e+02 -1.901001e+01
-15 18148     1.485900e+02 5.488000e+01
-6 18149     1.631600e+02 -1.921997e+01
-15 18149     1.815000e+02 5.001001e+01
-6 18150     1.631600e+02 -1.921997e+01
-12 18150     1.811200e+02 2.691998e+01
-6 18151     3.366500e+02 -1.939001e+01
-12 18151     3.727200e+02 1.571997e+01
-6 18152     3.209600e+02 -2.092999e+01
-12 18152     3.531600e+02 1.556000e+01
-6 18153     4.036400e+02 -2.185999e+01
-12 18153     4.445100e+02 9.190002e+00
-6 18154     -1.262300e+02 -2.466998e+01
-8 18154     7.639001e+01 -6.662000e+01
-6 18155     2.466300e+02 -2.503998e+01
-8 18155     3.679100e+02 -7.832001e+01
-10 18155     1.894200e+02 4.541998e+01
-13 18155     5.870300e+02 -2.942900e+02
-15 18155     2.994100e+02 2.753003e+01
-6 18156     -7.060999e+01 -2.723999e+01
-12 18156     -5.726001e+01 2.859003e+01
-6 18157     3.689200e+02 -2.682001e+01
-12 18157     4.079900e+02 5.979980e+00
-6 18158     -1.478100e+02 -3.115997e+01
-12 18158     -1.279500e+02 2.526001e+01
-6 18159     3.708100e+02 -3.083002e+01
-10 18159     3.354600e+02 1.750000e+01
-12 18159     4.088500e+02 1.570007e+00
-13 18159     6.936200e+02 -3.179200e+02
-6 18160     -3.390300e+02 -3.154999e+01
-10 18160     -3.157600e+02 1.669900e+02
-15 18160     -2.891700e+02 1.637900e+02
-6 18161     -4.365002e+01 -3.229999e+01
-12 18161     -3.184003e+01 2.209998e+01
-6 18162     -3.210700e+02 -3.713000e+01
-15 18162     -2.768800e+02 1.534800e+02
-6 18163     -3.210700e+02 -3.713000e+01
-10 18163     -3.048700e+02 1.584200e+02
-6 18164     1.064700e+02 -3.744000e+01
-10 18164     2.820001e+01 5.800000e+01
-6 18165     2.213500e+02 -3.800000e+01
-12 18165     2.443900e+02 3.960022e+00
-6 18166     2.326300e+02 -3.770001e+01
-12 18166     2.572900e+02 3.750000e+00
-6 18167     2.017000e+02 -4.776001e+01
-8 18167     3.337600e+02 -9.015997e+01
-6 18168     -1.787500e+02 -4.803998e+01
-12 18168     -1.598900e+02 9.609985e+00
-6 18169     -9.260010e+00 -4.783002e+01
-12 18169     4.799805e-01 5.130005e+00
-6 18170     1.840600e+02 -4.798999e+01
-10 18170     1.099300e+02 3.384003e+01
-15 18170     2.053500e+02 1.310999e+01
-6 18171     -2.738000e+02 -4.985999e+01
-12 18171     -2.414400e+02 9.460022e+00
-6 18172     -7.829999e+01 -5.901001e+01
-12 18172     -6.606000e+01 -3.919983e+00
-6 18173     -7.829999e+01 -5.901001e+01
-12 18173     -6.606000e+01 -3.919983e+00
-6 18174     -6.640997e+01 -6.913000e+01
-8 18174     1.249900e+02 -9.747998e+01
-6 18175     4.045400e+02 -7.023999e+01
-12 18175     4.387900e+02 -3.845001e+01
-6 18176     2.013000e+01 -7.433002e+01
-12 18176     3.034998e+01 -2.306000e+01
-6 18177     -1.228998e+01 -7.991998e+01
-12 18177     -1.650024e+00 -2.772998e+01
-6 18178     -5.727002e+01 -8.147998e+01
-12 18178     -4.621997e+01 -2.752002e+01
-6 18179     -1.866500e+02 -8.191998e+01
-15 18179     -1.882800e+02 6.771002e+01
-6 18180     -4.742999e+01 -8.909003e+01
-12 18180     -3.828998e+01 -3.523999e+01
-6 18181     2.260300e+02 -8.903998e+01
-12 18181     2.430900e+02 -4.766998e+01
-6 18182     2.223700e+02 -9.087000e+01
-12 18182     2.390601e+02 -4.928003e+01
-6 18183     -1.035000e+02 -9.173999e+01
-15 18183     -1.242700e+02 3.284998e+01
-6 18184     2.172100e+02 -9.271002e+01
-12 18184     2.331500e+02 -5.075000e+01
-6 18185     1.971800e+02 -9.384998e+01
-12 18185     2.118900e+02 -5.087000e+01
-6 18186     -2.438000e+01 -9.485999e+01
-12 18186     -1.604999e+01 -4.202002e+01
-6 18187     -2.438000e+01 -9.485999e+01
-12 18187     -1.604999e+01 -4.202002e+01
-6 18188     -2.788600e+02 -9.758002e+01
-12 18188     -2.564700e+02 -3.616998e+01
-6 18189     -2.426001e+01 -1.019500e+02
-12 18189     -1.734998e+01 -4.917999e+01
-6 18190     3.494200e+02 -1.031800e+02
-12 18190     3.766500e+02 -6.856000e+01
-6 18191     3.770900e+02 -1.038100e+02
-7 18191     2.702500e+02 -3.340997e+01
-12 18191     4.076300e+02 -7.203998e+01
-15 18191     4.426400e+02 -9.644000e+01
-6 18192     2.512700e+02 -1.091800e+02
-12 18192     2.703500e+02 -7.000000e+01
-15 18192     2.687400e+02 -7.407001e+01
-6 18193     2.512700e+02 -1.091800e+02
-12 18193     2.703500e+02 -7.000000e+01
-15 18193     2.687400e+02 -7.407001e+01
-6 18194     3.198600e+02 -1.091100e+02
-10 18194     2.383700e+02 -5.469000e+01
-15 18194     3.584700e+02 -9.039001e+01
-6 18195     -2.699000e+02 -1.107000e+02
-15 18195     -2.742100e+02 5.665002e+01
-6 18196     -2.474300e+02 -1.115400e+02
-12 18196     -2.301400e+02 -5.078998e+01
-6 18197     4.030200e+02 -1.117700e+02
-12 18197     4.363800e+02 -8.128998e+01
-6 18198     4.030200e+02 -1.117700e+02
-12 18198     4.363800e+02 -8.128998e+01
-6 18199     -2.780200e+02 -1.162300e+02
-10 18199     -3.107200e+02 7.039001e+01
-12 18199     -2.604600e+02 -5.378003e+01
-15 18199     -2.847500e+02 5.178998e+01
-6 18200     -2.257001e+01 -1.176700e+02
-8 18200     1.580800e+02 -1.296300e+02
-6 18201     -2.454600e+02 -1.181000e+02
-15 18201     -2.558200e+02 4.220001e+01
-6 18202     -2.542200e+02 -1.208000e+02
-10 18202     -2.937100e+02 6.146002e+01
-6 18203     -5.802002e+01 -1.216400e+02
-13 18203     3.375699e+02 -3.184200e+02
-15 18203     -8.984003e+01 -1.259003e+01
-6 18204     6.329999e+01 -1.227500e+02
-12 18204     6.853998e+01 -7.365002e+01
-6 18205     5.004999e+01 -1.229600e+02
-12 18205     5.447998e+01 -7.328003e+01
-6 18206     3.026900e+02 -1.255800e+02
-12 18206     3.237400e+02 -8.937000e+01
-15 18206     3.269399e+02 -1.066200e+02
-6 18207     1.300800e+02 -1.273700e+02
-12 18207     1.379100e+02 -8.183002e+01
-6 18208     1.300800e+02 -1.273700e+02
-12 18208     1.379100e+02 -8.183002e+01
-6 18209     -2.086400e+02 -1.280400e+02
-12 18209     -1.960600e+02 -6.809998e+01
-6 18210     -2.351100e+02 -1.289200e+02
-12 18210     -2.224400e+02 -6.769000e+01
-6 18211     -2.067900e+02 -1.304100e+02
-12 18211     -1.949800e+02 -7.050000e+01
-6 18212     -2.430700e+02 -1.309500e+02
-8 18212     -1.821997e+01 -1.422300e+02
-12 18212     -2.304500e+02 -6.895001e+01
-6 18213     3.321600e+02 -1.313800e+02
-10 18213     2.370400e+02 -8.204999e+01
-15 18213     3.569301e+02 -1.226600e+02
-6 18214     1.519500e+02 -1.320100e+02
-12 18214     1.607100e+02 -8.792999e+01
-6 18215     -2.172300e+02 -1.411000e+02
-12 18215     -2.072800e+02 -8.020001e+01
-15 18215     -2.422600e+02 8.750000e+00
-6 18216     8.419000e+01 -1.412500e+02
-12 18216     8.991998e+01 -9.392999e+01
-15 18216     5.395001e+01 -7.070001e+01
-6 18217     1.025700e+02 -1.420601e+02
-12 18217     1.091100e+02 -9.627002e+01
-6 18218     1.025700e+02 -1.420601e+02
-12 18218     1.091100e+02 -9.627002e+01
-6 18219     2.787600e+02 -1.419800e+02
-12 18219     2.963000e+02 -1.047400e+02
-6 18220     7.828003e+01 -1.443600e+02
-15 18220     4.709003e+01 -7.259003e+01
-6 18221     2.867400e+02 -1.547100e+02
-10 18221     1.789200e+02 -9.642999e+01
-12 18221     3.027500e+02 -1.182400e+02
-15 18221     2.867600e+02 -1.392000e+02
-6 18222     3.310200e+02 -1.578101e+02
-12 18222     3.485000e+02 -1.232800e+02
-6 18223     3.310200e+02 -1.578101e+02
-12 18223     3.485000e+02 -1.232800e+02
-6 18224     -1.763700e+02 -1.610699e+02
-12 18224     -1.713300e+02 -1.014600e+02
-6 18225     -8.539999e+01 -1.645200e+02
-12 18225     -8.203998e+01 -1.094500e+02
-6 18226     2.548500e+02 -1.666500e+02
-12 18226     2.672300e+02 -1.287300e+02
-6 18227     3.923200e+02 -1.694200e+02
-12 18227     4.266200e+02 -1.412300e+02
-6 18228     3.759200e+02 -1.699500e+02
-12 18228     4.098700e+02 -1.405700e+02
-6 18229     -1.997000e+02 -1.726899e+02
-8 18229     1.584998e+01 -1.743200e+02
-9 18229     -1.101400e+02 -4.946002e+01
-6 18230     -8.357999e+01 -1.753101e+02
-12 18230     -8.250000e+01 -1.206800e+02
-6 18231     2.294500e+02 -1.770699e+02
-15 18231     2.048500e+02 -1.516300e+02
-6 18232     1.546700e+02 -1.779500e+02
-12 18232     1.605700e+02 -1.349200e+02
-6 18233     -1.647500e+02 -1.784200e+02
-12 18233     -1.641600e+02 -1.191300e+02
-6 18234     -1.182800e+02 -1.786899e+02
-10 18234     -2.088900e+02 -2.602002e+01
-6 18235     2.008500e+02 -1.784900e+02
-10 18235     8.173999e+01 -1.007500e+02
-6 18236     2.522500e+02 -1.809500e+02
-12 18236     2.627100e+02 -1.431400e+02
-6 18237     -2.614001e+01 -1.819800e+02
-10 18237     -1.301900e+02 -5.066998e+01
-15 18237     -7.628998e+01 -8.757001e+01
-6 18238     2.132300e+02 -1.835000e+02
-10 18238     9.091998e+01 -1.088000e+02
-15 18238     1.824000e+02 -1.543100e+02
-6 18239     -6.213000e+01 -1.838900e+02
-15 18239     -1.144500e+02 -8.056000e+01
-6 18240     5.059998e+00 -1.841500e+02
-12 18240     5.260010e+00 -1.336000e+02
-15 18240     -4.502002e+01 -9.842999e+01
-6 18241     1.917800e+02 -1.843900e+02
-10 18241     7.028003e+01 -1.043600e+02
-15 18241     1.579900e+02 -1.494700e+02
-6 18242     -1.566300e+02 -1.857600e+02
-10 18242     -2.450700e+02 -2.485999e+01
-15 18242     -2.098100e+02 -5.834998e+01
-6 18243     1.141200e+02 -1.857300e+02
-12 18243     1.169900e+02 -1.408000e+02
-6 18244     -1.697200e+02 -1.873900e+02
-10 18244     -2.583800e+02 -2.359998e+01
-6 18245     2.308500e+02 -1.896300e+02
-12 18245     2.392400e+02 -1.510400e+02
-6 18246     2.524000e+02 -1.933300e+02
-7 18246     1.337400e+02 -9.852002e+01
-10 18246     1.348200e+02 -1.248700e+02
-15 18246     2.350200e+02 -1.734100e+02
-6 18247     1.415700e+02 -1.954800e+02
-10 18247     1.558002e+01 -1.042700e+02
-12 18247     1.434800e+02 -1.522300e+02
-15 18247     9.367999e+01 -1.494800e+02
-6 18248     1.586500e+02 -1.979700e+02
-12 18248     1.607100e+02 -1.554900e+02
-6 18249     2.271002e+01 -1.985500e+02
-12 18249     2.059003e+01 -1.490100e+02
-6 18250     1.012700e+02 -1.984800e+02
-15 18250     4.834003e+01 -1.413200e+02
-6 18251     2.194800e+02 -2.015400e+02
-7 18251     1.014000e+02 -1.023600e+02
-12 18251     2.270500e+02 -1.627200e+02
-6 18252     4.095001e+01 -2.032500e+02
-10 18252     -8.122998e+01 -8.828003e+01
-6 18253     2.667999e+01 -2.035200e+02
-12 18253     2.342999e+01 -1.540800e+02
-6 18254     1.094700e+02 -2.058900e+02
-10 18254     -2.014001e+01 -1.072100e+02
-15 18254     5.203998e+01 -1.530500e+02
-6 18255     9.139001e+01 -2.065100e+02
-12 18255     8.958002e+01 -1.605300e+02
-6 18256     2.637400e+02 -2.072800e+02
-12 18256     2.775900e+02 -1.714800e+02
-6 18257     3.311800e+02 -2.142400e+02
-12 18257     3.572200e+02 -1.835100e+02
-6 18258     3.311800e+02 -2.142400e+02
-12 18258     3.572200e+02 -1.835100e+02
-6 18259     3.549988e+00 -2.154000e+02
-12 18259     -2.020020e+00 -1.648800e+02
-6 18260     2.327800e+02 -2.193300e+02
-9 18260     2.424900e+02 -6.744000e+01
-10 18260     1.132900e+02 -1.439500e+02
-15 18260     2.102200e+02 -1.963100e+02
-6 18261     2.327800e+02 -2.193300e+02
-15 18261     2.102200e+02 -1.963100e+02
-6 18262     3.896600e+02 -2.265300e+02
-12 18262     4.258101e+02 -2.004400e+02
-6 18263     6.837000e+01 -2.275601e+02
-12 18263     6.607001e+01 -1.810400e+02
-6 18264     3.866500e+02 -2.279100e+02
-12 18264     4.220500e+02 -2.007800e+02
-6 18265     8.120001e+01 -2.284000e+02
-12 18265     7.971002e+01 -1.827700e+02
-6 18266     1.988800e+02 -2.317500e+02
-12 18266     2.055300e+02 -1.928900e+02
-6 18267     1.988800e+02 -2.317500e+02
-12 18267     2.055300e+02 -1.928900e+02
-6 18268     2.174600e+02 -2.327400e+02
-8 18268     3.495200e+02 -2.305700e+02
-12 18268     2.266000e+02 -1.950600e+02
-6 18269     9.644000e+01 -2.338900e+02
-12 18269     9.629999e+01 -1.894200e+02
-15 18269     3.976001e+01 -1.772500e+02
-6 18270     2.156800e+02 -2.384900e+02
-12 18270     2.249399e+02 -2.011700e+02
-6 18271     3.581200e+02 -2.410000e+02
-12 18271     3.907700e+02 -2.129900e+02
-6 18272     9.803998e+01 -2.446200e+02
-8 18272     2.534800e+02 -2.321500e+02
-9 18272     1.401100e+02 -8.596002e+01
-15 18272     4.319000e+01 -1.890600e+02
-6 18273     1.049200e+02 -2.474200e+02
-7 18273     -1.659973e+00 -1.265000e+02
-9 18273     1.450800e+02 -8.822998e+01
-6 18274     2.054600e+02 -2.472500e+02
-12 18274     2.137400e+02 -2.093100e+02
-6 18275     -9.735999e+01 -2.497300e+02
-8 18275     9.546997e+01 -2.374600e+02
-6 18276     1.656700e+02 -2.614399e+02
-8 18276     3.078600e+02 -2.503600e+02
-6 18277     6.997998e+01 -2.621700e+02
-12 18277     7.059003e+01 -2.170900e+02
-6 18278     9.903003e+01 -2.661600e+02
-8 18278     2.535500e+02 -2.535100e+02
-9 18278     1.407400e+02 -1.070300e+02
-12 18278     1.011300e+02 -2.228900e+02
-6 18279     2.449300e+02 -2.708800e+02
-12 18279     2.593900e+02 -2.363700e+02
-6 18280     2.480800e+02 -2.771600e+02
-12 18280     2.627700e+02 -2.433400e+02
-6 18281     1.500600e+02 -2.784100e+02
-12 18281     1.548800e+02 -2.382300e+02
-15 18281     1.062200e+02 -2.360300e+02
-6 18282     1.522300e+02 -2.802400e+02
-15 18282     1.093400e+02 -2.384300e+02
-6 18283     2.472100e+02 -2.845699e+02
-12 18283     2.620800e+02 -2.505100e+02
-6 18284     9.831000e+01 -2.850500e+02
-9 18284     1.408500e+02 -1.268300e+02
-6 18285     2.357500e+02 -2.962600e+02
-12 18285     2.489800e+02 -2.616800e+02
-6 18286     2.357500e+02 -2.962600e+02
-12 18286     2.489800e+02 -2.616800e+02
-6 18287     2.136400e+02 -2.988900e+02
-12 18287     2.253600e+02 -2.631000e+02
-6 18288     5.871002e+01 -3.063101e+02
-12 18288     6.139001e+01 -2.618900e+02
-6 18289     4.878003e+01 -3.088600e+02
-12 18289     5.125000e+01 -2.636300e+02
-15 18289     -1.859985e+00 -2.378500e+02
-6 18290     -8.620001e+01 -3.176100e+02
-12 18290     -8.115997e+01 -2.643800e+02
-6 18291     -7.875000e+01 -3.224100e+02
-12 18291     -7.453998e+01 -2.695500e+02
-6 18292     8.346002e+01 -3.226801e+02
-12 18292     8.728003e+01 -2.797800e+02
-6 18293     2.855700e+02 -3.231700e+02
-12 18293     3.058000e+02 -2.930100e+02
-6 18294     2.696700e+02 -3.233199e+02
-12 18294     2.881400e+02 -2.914300e+02
-6 18295     8.062000e+01 -3.269900e+02
-12 18295     8.402002e+01 -2.844200e+02
-6 18296     2.531300e+02 -3.290000e+02
-12 18296     2.700300e+02 -2.965500e+02
-6 18297     8.103998e+01 -3.310800e+02
-12 18297     8.416998e+01 -2.884100e+02
-6 18298     -1.022600e+02 -3.330601e+02
-8 18298     8.834998e+01 -3.132000e+02
-6 18299     -2.257001e+01 -3.509200e+02
-12 18299     -1.751001e+01 -3.021100e+02
-6 18300     -1.251800e+02 -3.526100e+02
-12 18300     -1.149700e+02 -2.971900e+02
-6 18301     -3.184003e+01 -3.560300e+02
-12 18301     -2.551001e+01 -3.066800e+02
-6 18302     4.665002e+01 -3.620400e+02
-12 18302     5.217999e+01 -3.174500e+02
-6 18303     -1.709500e+02 -3.769000e+02
-12 18303     -1.563800e+02 -3.186500e+02
-6 18304     3.060300e+02 -4.070200e+02
-12 18304     3.226100e+02 -3.785400e+02
-6 18305     -1.729900e+02 -4.406400e+02
-12 18305     -1.645700e+02 -3.809100e+02
-6 18306     -5.616100e+02 -4.484800e+02
-15 18306     -5.443500e+02 -2.004900e+02
-6 18307     -5.510100e+02 -4.514399e+02
-15 18307     -5.373400e+02 -2.059600e+02
-6 18308     1.738700e+02 -4.545900e+02
-12 18308     1.765500e+02 -4.191300e+02
-6 18309     1.952800e+02 -4.570500e+02
-12 18309     2.006899e+02 -4.230000e+02
-6 18310     1.541400e+02 -4.608500e+02
-12 18310     1.571600e+02 -4.241000e+02
-6 18311     1.634000e+02 -4.626200e+02
-12 18311     1.668700e+02 -4.262800e+02
-6 18312     1.556300e+02 -4.689500e+02
-12 18312     1.585900e+02 -4.320400e+02
-6 18313     1.517800e+02 -4.696200e+02
-12 18313     1.540900e+02 -4.327700e+02
-6 18314     1.156800e+02 -4.763300e+02
-12 18314     1.176100e+02 -4.367400e+02
-6 18315     1.603000e+02 -4.780601e+02
-12 18315     1.630300e+02 -4.416000e+02
-6 18316     1.603000e+02 -4.780601e+02
-12 18316     1.630300e+02 -4.416000e+02
-6 18317     2.047998e+01 -4.842500e+02
-12 18317     2.034998e+01 -4.381100e+02
-6 18318     -4.114100e+02 -4.904200e+02
-12 18318     -3.890900e+02 -4.111000e+02
-6 18319     -4.154600e+02 -4.911600e+02
-12 18319     -3.926000e+02 -4.111100e+02
-6 18320     4.909100e+02 -4.972600e+02
-7 18320     3.192700e+02 -3.733600e+02
-10 18320     3.336801e+02 -4.561700e+02
-6 18321     -3.317900e+02 -5.266801e+02
-10 18321     -3.989700e+02 -2.667100e+02
-15 18321     -3.825200e+02 -3.426800e+02
-6 18322     -2.045300e+02 -5.288700e+02
-12 18322     -2.036800e+02 -4.649800e+02
-6 18323     -1.925500e+02 -5.341400e+02
-12 18323     -1.927200e+02 -4.709700e+02
-6 18324     -1.828300e+02 -5.338101e+02
-12 18324     -1.835800e+02 -4.716300e+02
-6 18325     -1.178600e+02 -5.499600e+02
-12 18325     -1.231500e+02 -4.927900e+02
-6 18326     -2.651500e+02 -5.634200e+02
-12 18326     -2.646900e+02 -4.941600e+02
-15 18326     -3.407500e+02 -4.008100e+02
-6 18327     4.404500e+02 -5.633700e+02
-7 18327     2.579399e+02 -4.234900e+02
-10 18327     2.517300e+02 -5.070800e+02
-6 18328     4.404500e+02 -5.633700e+02
-7 18328     2.579399e+02 -4.234900e+02
-6 18329     3.218600e+02 -5.656200e+02
-7 18329     1.581200e+02 -4.081300e+02
-6 18330     3.203200e+02 -5.716000e+02
-10 18330     1.349000e+02 -4.804000e+02
-12 18330     3.202800e+02 -5.476801e+02
-6 18331     2.887300e+02 -5.752400e+02
-10 18331     1.043400e+02 -4.750300e+02
-6 18332     5.142400e+02 -5.902800e+02
-10 18332     3.089301e+02 -5.565500e+02
-6 18333     5.822400e+02 -5.983000e+02
-10 18333     3.714600e+02 -5.860800e+02
-12 18333     5.922400e+02 -5.944800e+02
-6 18334     -2.363500e+02 -6.024301e+02
-15 18334     -3.331700e+02 -4.504900e+02
-6 18335     3.054500e+02 -6.032100e+02
-10 18335     1.071000e+02 -5.065300e+02
-6 18336     -2.778100e+02 -6.075500e+02
-15 18336     -3.724500e+02 -4.430000e+02
-6 18337     -2.778100e+02 -6.075500e+02
-15 18337     -3.724500e+02 -4.430000e+02
-6 18338     -9.550000e+01 -6.099399e+02
-15 18338     -2.072600e+02 -5.012300e+02
-6 18339     -2.586900e+02 -6.109200e+02
-15 18339     -3.571100e+02 -4.529600e+02
-6 18340     -9.869000e+01 -6.119500e+02
-15 18340     -2.113800e+02 -5.021400e+02
-6 18341     4.696801e+02 -6.140400e+02
-7 18341     2.679900e+02 -4.720100e+02
-10 18341     2.541200e+02 -5.668500e+02
-6 18342     5.492200e+02 -6.198300e+02
-7 18342     3.333900e+02 -4.890000e+02
-10 18342     3.278700e+02 -5.972500e+02
-12 18342     5.540400e+02 -6.146500e+02
-6 18343     4.545400e+02 -6.237700e+02
-7 18343     2.521500e+02 -4.780900e+02
-10 18343     2.345900e+02 -5.718900e+02
-6 18344     -2.496000e+02 -6.334900e+02
-7 18344     -3.095600e+02 -3.797100e+02
-9 18344     -1.275500e+02 -4.337200e+02
-6 18345     4.845800e+02 -6.391200e+02
-10 18345     2.554500e+02 -5.965000e+02
-6 18346     5.105100e+02 -6.398400e+02
-10 18346     2.798500e+02 -6.051100e+02
-6 18347     -4.909973e+00 -6.430100e+02
-12 18347     -2.353998e+01 -5.951801e+02
-6 18348     -4.123800e+02 -6.529301e+02
-10 18348     -5.115700e+02 -3.596300e+02
-15 18348     -5.140000e+02 -4.505601e+02
-6 18349     5.578600e+02 -6.536700e+02
-7 18349     3.310000e+02 -5.195300e+02
-6 18350     4.939399e+02 -6.602500e+02
-7 18350     2.749500e+02 -5.158000e+02
-6 18351     -9.167001e+01 -6.640800e+02
-7 18351     -1.990700e+02 -4.285400e+02
-6 18352     3.090300e+02 -6.657900e+02
-7 18352     1.194100e+02 -4.918199e+02
-6 18353     3.142000e+02 -6.772100e+02
-7 18353     1.203200e+02 -5.021400e+02
-6 18354     -4.299600e+02 -6.815100e+02
-10 18354     -5.364100e+02 -3.808400e+02
-15 18354     -5.425700e+02 -4.758300e+02
-6 18355     -2.386700e+02 -6.847100e+02
-7 18355     -3.143600e+02 -4.227200e+02
-10 18355     -3.911300e+02 -4.321801e+02
-15 18355     -3.756200e+02 -5.361100e+02
-6 18356     2.020000e+02 -6.889600e+02
-10 18356     -2.813000e+01 -5.590900e+02
-6 18357     5.213500e+02 -7.091600e+02
-7 18357     2.834800e+02 -5.619600e+02
-6 18358     3.423500e+02 -7.186200e+02
-7 18358     1.315700e+02 -5.419800e+02
-6 18359     3.757300e+02 -7.324800e+02
-7 18359     1.553600e+02 -5.590400e+02
-6 18360     2.230900e+02 -7.828600e+02
-7 18360     1.658002e+01 -5.764301e+02
-6 18361     -1.649800e+02 -8.003800e+02
-7 18361     -2.893700e+02 -5.267500e+02
-6 18362     4.239990e+00 -8.032400e+02
-7 18362     -1.612900e+02 -5.574500e+02
-6 18363     3.619995e+00 -8.103800e+02
-7 18363     -1.635100e+02 -5.627000e+02
-9 18363     1.159400e+02 -5.390900e+02
-10 18363     -2.500400e+02 -6.125200e+02
-6 18364     -5.284500e+02 8.440300e+02
-11 18364     1.341800e+02 -6.142999e+01
-6 18365     -5.284500e+02 8.440300e+02
-11 18365     1.341800e+02 -6.142999e+01
-6 18366     -3.504999e+01 8.407500e+02
-11 18366     5.335800e+02 -8.295001e+01
-6 18367     2.632200e+02 8.316000e+02
-8 18367     3.497300e+02 4.206200e+02
-9 18367     1.419900e+02 5.548000e+02
-6 18368     -1.652300e+02 8.034300e+02
-14 18368     6.136899e+02 -4.645001e+01
-6 18369     -4.770001e+01 7.990000e+02
-9 18369     -1.034300e+02 4.474900e+02
-6 18370     3.401500e+02 7.961900e+02
-8 18370     4.030900e+02 4.024800e+02
-6 18371     -2.384100e+02 7.854200e+02
-8 18371     8.900024e+00 3.477400e+02
-6 18372     -7.525000e+01 7.774200e+02
-11 18372     4.970500e+02 -1.222800e+02
-14 18372     6.945900e+02 -7.169000e+01
-6 18373     2.509100e+02 7.659900e+02
-8 18373     3.413100e+02 3.763500e+02
-6 18374     -3.739990e+00 7.645400e+02
-11 18374     5.604100e+02 -1.349800e+02
-6 18375     -2.686200e+02 7.600600e+02
-14 18375     5.183600e+02 -7.169000e+01
-6 18376     4.151400e+02 7.480600e+02
-8 18376     4.605601e+02 3.992100e+02
-6 18377     -3.549988e+00 7.478100e+02
-11 18377     5.599100e+02 -1.471100e+02
-6 18378     2.789900e+02 7.452100e+02
-8 18378     3.612300e+02 3.644900e+02
-9 18378     1.562200e+02 4.955900e+02
-11 18378     6.705699e+02 -1.812400e+02
-6 18379     -2.720700e+02 7.436700e+02
-14 18379     5.140900e+02 -8.316998e+01
-6 18380     -3.566500e+02 7.429200e+02
-9 18380     -3.124000e+02 4.404900e+02
-11 18380     2.595800e+02 -1.303800e+02
-6 18381     1.977500e+02 7.391400e+02
-8 18381     3.041300e+02 3.547700e+02
-6 18382     3.946300e+02 7.324800e+02
-9 18382     2.521100e+02 5.268900e+02
-6 18383     -2.058800e+02 7.280800e+02
-8 18383     2.882001e+01 3.070400e+02
-9 18383     -2.095000e+02 4.132800e+02
-6 18384     3.804200e+02 7.196900e+02
-8 18384     4.365500e+02 3.777900e+02
-6 18385     -2.488600e+02 7.144800e+02
-13 18385     3.690800e+02 2.814200e+02
-6 18386     1.971400e+02 7.075900e+02
-8 18386     3.045200e+02 3.329300e+02
-6 18387     -1.308600e+02 7.065700e+02
-14 18387     6.376899e+02 -1.243600e+02
-6 18388     -4.460200e+02 7.045700e+02
-14 18388     3.619399e+02 -9.865997e+01
-6 18389     1.640300e+02 7.038700e+02
-9 18389     7.288000e+01 4.532100e+02
-6 18390     3.173500e+02 7.033800e+02
-9 18390     1.863900e+02 4.701200e+02
-6 18391     4.719971e+00 6.962200e+02
-8 18391     1.667700e+02 2.649400e+02
-6 18392     5.317400e+02 6.960900e+02
-9 18392     3.539900e+02 5.157200e+02
-6 18393     -1.846002e+01 6.939700e+02
-9 18393     -8.192999e+01 3.692400e+02
-14 18393     7.428800e+02 -1.436900e+02
-6 18394     -3.689001e+01 6.918500e+02
-8 18394     1.401800e+02 2.671900e+02
-6 18395     -3.905900e+02 6.904200e+02
-13 18395     2.657400e+02 2.730400e+02
-14 18395     4.059900e+02 -1.145500e+02
-6 18396     -5.875900e+02 6.869500e+02
-8 18396     -2.239000e+02 3.184800e+02
-6 18397     4.421300e+02 6.870100e+02
-9 18397     2.892100e+02 4.995200e+02
-6 18398     4.421300e+02 6.870100e+02
-9 18398     2.892100e+02 4.995200e+02
-6 18399     -9.579999e+01 6.857800e+02
-9 18399     -1.343300e+02 3.711900e+02
-6 18400     -2.565900e+02 6.770000e+02
-8 18400     -6.369995e+00 2.791000e+02
-9 18400     -2.442300e+02 3.828000e+02
-6 18401     2.179500e+02 6.757400e+02
-8 18401     3.193300e+02 3.130700e+02
-9 18401     1.136200e+02 4.389500e+02
-11 18401     6.284301e+02 -2.273000e+02
-6 18402     -4.363600e+02 6.621400e+02
-14 18402     3.653000e+02 -1.325300e+02
-6 18403     -5.438200e+02 6.612800e+02
-8 18403     -1.966200e+02 2.986100e+02
-6 18404     3.940400e+02 6.604000e+02
-8 18404     4.479100e+02 3.369400e+02
-9 18404     2.552100e+02 4.749100e+02
-11 18404     7.205800e+02 -2.644200e+02
-6 18405     -1.448500e+02 6.596500e+02
-12 18405     1.916998e+01 6.188800e+02
-6 18406     3.677100e+02 6.579400e+02
-8 18406     4.288700e+02 3.331700e+02
-6 18407     -3.244400e+02 6.565200e+02
-9 18407     -2.905400e+02 3.741900e+02
-6 18408     4.008700e+02 6.563900e+02
-8 18408     4.528600e+02 3.347300e+02
-6 18409     4.397600e+02 6.543700e+02
-8 18409     4.798500e+02 3.352200e+02
-9 18409     2.890601e+02 4.752000e+02
-6 18410     -1.035100e+02 6.488200e+02
-8 18410     9.469000e+01 2.455600e+02
-6 18411     -1.266600e+02 6.394000e+02
-9 18411     -1.546400e+02 3.411100e+02
-12 18411     3.658002e+01 5.993600e+02
-6 18412     -1.434100e+02 6.354700e+02
-12 18412     2.010999e+01 5.968600e+02
-6 18413     -1.352900e+02 6.348500e+02
-12 18413     2.808002e+01 5.959500e+02
-6 18414     1.843400e+02 6.333400e+02
-9 18414     9.060999e+01 4.038100e+02
-6 18415     -1.422400e+02 6.321500e+02
-12 18415     2.209998e+01 5.940700e+02
-6 18416     -1.453000e+02 6.310900e+02
-12 18416     1.895001e+01 5.931400e+02
-6 18417     -1.386300e+02 6.299400e+02
-12 18417     2.490002e+01 5.918400e+02
-6 18418     4.484301e+02 6.248000e+02
-9 18418     2.972500e+02 4.557200e+02
-6 18419     3.551200e+02 6.188600e+02
-8 18419     4.210200e+02 3.052800e+02
-6 18420     5.050500e+02 6.175100e+02
-9 18420     3.393500e+02 4.564800e+02
-6 18421     -1.181600e+02 6.137000e+02
-12 18421     4.469000e+01 5.766400e+02
-6 18422     4.530900e+02 6.117500e+02
-12 18422     5.329100e+02 6.213500e+02
-6 18423     4.530900e+02 6.117500e+02
-12 18423     5.329100e+02 6.213500e+02
-6 18424     4.757900e+02 6.103600e+02
-9 18424     3.182900e+02 4.480000e+02
-12 18424     5.564301e+02 6.197100e+02
-6 18425     -5.665997e+01 6.057800e+02
-8 18425     1.255500e+02 2.110200e+02
-12 18425     1.047700e+02 5.658700e+02
-6 18426     4.367600e+02 6.038200e+02
-12 18426     5.190400e+02 6.125800e+02
-6 18427     -2.289000e+02 6.022600e+02
-12 18427     -6.312000e+01 5.707500e+02
-6 18428     -4.387100e+02 6.013600e+02
-8 18428     -1.296400e+02 2.478900e+02
-12 18428     -2.658100e+02 5.791300e+02
-6 18429     3.766700e+02 6.006300e+02
-9 18429     2.449600e+02 4.291300e+02
-6 18430     -9.720001e+01 5.956200e+02
-8 18430     9.825000e+01 2.081400e+02
-12 18430     6.504999e+01 5.587200e+02
-6 18431     4.496000e+02 5.948600e+02
-9 18431     3.001400e+02 4.329800e+02
-12 18431     5.316801e+02 6.029000e+02
-6 18432     4.607600e+02 5.918400e+02
-7 18432     4.855900e+02 5.708600e+02
-9 18432     3.079800e+02 4.323900e+02
-6 18433     4.961200e+02 5.902300e+02
-8 18433     5.235601e+02 2.951400e+02
-9 18433     3.345300e+02 4.354700e+02
-6 18434     4.848600e+02 5.892100e+02
-7 18434     5.047500e+02 5.666000e+02
-8 18434     5.152400e+02 2.935700e+02
-9 18434     3.261100e+02 4.334900e+02
-12 18434     5.652800e+02 5.994400e+02
-6 18435     4.495699e+02 5.826600e+02
-9 18435     3.002200e+02 4.247200e+02
-12 18435     5.316899e+02 5.914200e+02
-6 18436     1.906400e+02 5.810100e+02
-8 18436     3.008800e+02 2.457200e+02
-9 18436     9.695001e+01 3.664400e+02
-11 18436     6.095300e+02 -2.961300e+02
-12 18436     3.000100e+02 5.691500e+02
-6 18437     -5.111400e+02 5.757300e+02
-12 18437     -3.349500e+02 5.588800e+02
-6 18438     -1.915100e+02 5.750800e+02
-12 18438     -2.613000e+01 5.447300e+02
-14 18438     5.709100e+02 -2.242500e+02
-6 18439     -3.788500e+02 5.726900e+02
-9 18439     -3.286100e+02 3.187300e+02
-6 18440     3.270700e+02 5.582800e+02
-8 18440     3.982200e+02 2.383500e+02
-9 18440     2.004500e+02 3.658100e+02
-6 18441     -4.298700e+02 5.552800e+02
-12 18441     -2.569900e+02 5.366900e+02
-14 18441     3.584700e+02 -2.152100e+02
-6 18442     4.516801e+02 5.524900e+02
-7 18442     4.754301e+02 5.364900e+02
-12 18442     5.336400e+02 5.615200e+02
-6 18443     3.760200e+02 5.456900e+02
-8 18443     4.374100e+02 2.545700e+02
-9 18443     2.475100e+02 3.885900e+02
-12 18443     4.611000e+02 5.521300e+02
-6 18444     3.462600e+02 5.441500e+02
-9 18444     2.249000e+02 3.835900e+02
-6 18445     4.426700e+02 5.367800e+02
-7 18445     4.672900e+02 5.240500e+02
-10 18445     6.530800e+02 6.202200e+02
-6 18446     -3.004100e+02 5.333100e+02
-12 18446     -1.318600e+02 5.119100e+02
-6 18447     4.418800e+02 5.294700e+02
-8 18447     4.849301e+02 2.477700e+02
-12 18447     5.242200e+02 5.379500e+02
-6 18448     -4.255300e+02 5.278200e+02
-7 18448     -1.800500e+02 5.702800e+02
-6 18449     3.937100e+02 5.246200e+02
-9 18449     2.615900e+02 3.748000e+02
-6 18450     3.937100e+02 5.246200e+02
-9 18450     2.615900e+02 3.748000e+02
-12 18450     4.783600e+02 5.318500e+02
-6 18451     4.512100e+02 5.221300e+02
-9 18451     3.045300e+02 3.800600e+02
-6 18452     4.512100e+02 5.221300e+02
-9 18452     3.045300e+02 3.800600e+02
-6 18453     -3.093900e+02 5.188200e+02
-12 18453     -1.407700e+02 4.991800e+02
-6 18454     4.305200e+02 5.173300e+02
-10 18454     6.382300e+02 6.004800e+02
-12 18454     5.126600e+02 5.256400e+02
-6 18455     4.407900e+02 5.117800e+02
-10 18455     6.471000e+02 5.925900e+02
-12 18455     5.237100e+02 5.204300e+02
-6 18456     2.559100e+02 5.104700e+02
-9 18456     1.486700e+02 3.217900e+02
-6 18457     5.119000e+01 5.074100e+02
-7 18457     2.240800e+02 5.249300e+02
-6 18458     2.612800e+02 5.072700e+02
-7 18458     3.420400e+02 5.111800e+02
-8 18458     3.511000e+02 1.990000e+02
-6 18459     -1.810600e+02 5.047900e+02
-14 18459     5.744700e+02 -2.835300e+02
-6 18460     -5.625000e+02 5.041900e+02
-12 18460     -3.843100e+02 4.966300e+02
-6 18461     -5.625000e+02 5.041900e+02
-12 18461     -3.843100e+02 4.966300e+02
-6 18462     3.988900e+02 4.996600e+02
-10 18462     6.051300e+02 5.869200e+02
-6 18463     -4.437600e+02 4.964400e+02
-12 18463     -2.704200e+02 4.849700e+02
-6 18464     -2.110800e+02 4.925200e+02
-12 18464     -4.528998e+01 4.708000e+02
-6 18465     -5.415200e+02 4.854400e+02
-9 18465     -4.441400e+02 2.700000e+02
-12 18465     -3.643800e+02 4.787700e+02
-6 18466     2.146200e+02 4.854300e+02
-7 18466     3.055000e+02 4.964100e+02
-8 18466     3.180400e+02 1.802700e+02
-9 18466     1.181700e+02 2.979000e+02
-10 18466     4.734100e+02 6.123600e+02
-6 18467     -5.311000e+02 4.805300e+02
-12 18467     -3.547200e+02 4.738000e+02
-6 18468     -5.311000e+02 4.805300e+02
-12 18468     -3.547200e+02 4.738000e+02
-6 18469     3.440200e+02 4.747200e+02
-9 18469     2.266000e+02 3.310400e+02
-6 18470     3.362800e+02 4.713000e+02
-7 18470     3.789000e+02 4.750500e+02
-6 18471     -5.387600e+02 4.624000e+02
-12 18471     -3.619300e+02 4.579600e+02
-6 18472     -5.667700e+02 4.523000e+02
-12 18472     -3.887100e+02 4.498000e+02
-6 18473     -5.231200e+02 4.497900e+02
-12 18473     -3.511700e+02 4.477500e+02
-6 18474     -4.637000e+02 4.370700e+02
-12 18474     -2.900200e+02 4.320500e+02
-6 18475     -4.523600e+02 4.346600e+02
-7 18475     -2.065500e+02 4.987600e+02
-9 18475     -3.809000e+02 2.215900e+02
-6 18476     3.281400e+02 4.311900e+02
-12 18476     4.167300e+02 4.379400e+02
-6 18477     -4.727800e+02 4.307700e+02
-7 18477     -2.238100e+02 4.967700e+02
-9 18477     -3.951000e+02 2.203900e+02
-13 18477     1.861200e+02 1.110800e+02
-14 18477     3.076700e+02 -3.078400e+02
-6 18478     3.806600e+02 4.303700e+02
-9 18478     2.559100e+02 3.026600e+02
-6 18479     1.432800e+02 4.299200e+02
-10 18479     4.036899e+02 5.668800e+02
-12 18479     2.580100e+02 4.240300e+02
-6 18480     4.714100e+02 4.255200e+02
-8 18480     5.096100e+02 1.738700e+02
-9 18480     3.248500e+02 3.094700e+02
-6 18481     4.175000e+02 4.180300e+02
-9 18481     2.849700e+02 2.973500e+02
-12 18481     5.017900e+02 4.264600e+02
-6 18482     4.220800e+02 4.173100e+02
-10 18482     6.152000e+02 4.953800e+02
-15 18482     8.154900e+02 5.669800e+02
-6 18483     4.324000e+02 4.114600e+02
-12 18483     5.156801e+02 4.201700e+02
-6 18484     4.414700e+02 4.114100e+02
-7 18484     4.585500e+02 4.142900e+02
-8 18484     4.878400e+02 1.608000e+02
-6 18485     1.822800e+02 4.057800e+02
-7 18485     2.769000e+02 4.330500e+02
-8 18485     2.956500e+02 1.204800e+02
-10 18485     4.343900e+02 5.372800e+02
-12 18485     2.933199e+02 4.017800e+02
-6 18486     2.213500e+02 4.014000e+02
-12 18486     3.287100e+02 3.984000e+02
-6 18487     4.204700e+02 3.987900e+02
-7 18487     4.411300e+02 4.054000e+02
-10 18487     6.098600e+02 4.770000e+02
-6 18488     3.351900e+02 3.981400e+02
-7 18488     3.739800e+02 4.132700e+02
-8 18488     4.101700e+02 1.441800e+02
-9 18488     2.230699e+02 2.713500e+02
-12 18488     4.241600e+02 4.052100e+02
-6 18489     4.042000e+02 3.952700e+02
-7 18489     4.278600e+02 4.042100e+02
-8 18489     4.604399e+02 1.466200e+02
-6 18490     4.199600e+02 3.924400e+02
-12 18490     5.038400e+02 4.016000e+02
-6 18491     1.584200e+02 3.860000e+02
-7 18491     2.581700e+02 4.186200e+02
-6 18492     1.584200e+02 3.860000e+02
-7 18492     2.581700e+02 4.186200e+02
-6 18493     5.224301e+02 3.850900e+02
-12 18493     6.030400e+02 3.955000e+02
-6 18494     -4.277900e+02 3.816600e+02
-10 18494     -1.029400e+02 6.058000e+02
-12 18494     -2.554600e+02 3.803500e+02
-6 18495     4.433300e+02 3.818200e+02
-8 18495     4.887800e+02 1.396200e+02
-9 18495     3.064000e+02 2.727200e+02
-12 18495     5.265601e+02 3.909300e+02
-6 18496     2.729600e+02 3.803100e+02
-8 18496     3.609400e+02 1.077600e+02
-10 18496     5.096100e+02 4.955100e+02
-12 18496     3.761899e+02 3.788700e+02
-6 18497     1.339200e+02 3.780300e+02
-7 18497     2.397900e+02 4.139100e+02
-13 18497     6.041801e+02 2.101001e+01
-14 18497     8.382500e+02 -4.398600e+02
-15 18497     5.509700e+02 5.865400e+02
-6 18498     1.457800e+02 3.758200e+02
-7 18498     2.482400e+02 4.110600e+02
-15 18498     5.626200e+02 5.821000e+02
-6 18499     -5.044900e+02 3.682800e+02
-9 18499     -4.186000e+02 1.779100e+02
-6 18500     -2.033400e+02 3.560400e+02
-12 18500     -5.395001e+01 3.544700e+02
-6 18501     -4.074100e+02 3.553000e+02
-9 18501     -3.476200e+02 1.567700e+02
-6 18502     1.528100e+02 3.472500e+02
-7 18502     2.520500e+02 3.874600e+02
-14 18502     8.544800e+02 -4.714600e+02
-15 18502     5.659800e+02 5.478700e+02
-6 18503     -2.051500e+02 3.463300e+02
-12 18503     -5.639001e+01 3.461900e+02
-6 18504     4.241000e+02 3.445200e+02
-8 18504     4.764000e+02 1.102000e+02
-10 18504     6.059000e+02 4.205000e+02
-12 18504     5.078800e+02 3.540200e+02
-15 18504     8.062000e+02 4.770900e+02
-6 18505     4.305200e+02 3.419600e+02
-12 18505     5.141600e+02 3.507300e+02
-15 18505     8.127400e+02 4.726900e+02
-6 18506     -2.386000e+02 3.394400e+02
-10 18506     5.756000e+01 5.416800e+02
-12 18506     -8.726001e+01 3.407600e+02
-6 18507     -2.386000e+02 3.394400e+02
-10 18507     5.756000e+01 5.416800e+02
-12 18507     -8.726001e+01 3.407600e+02
-6 18508     -5.638500e+02 3.379900e+02
-14 18508     2.194399e+02 -3.703900e+02
-6 18509     -5.697000e+02 3.366900e+02
-11 18509     6.046997e+01 -3.751100e+02
-6 18510     -5.697000e+02 3.366900e+02
-12 18510     -3.912400e+02 3.452500e+02
-6 18511     1.440300e+02 3.350500e+02
-15 18511     5.553199e+02 5.352400e+02
-6 18512     4.697100e+02 3.349300e+02
-10 18512     6.450500e+02 4.007900e+02
-12 18512     5.522400e+02 3.447500e+02
-15 18512     8.544200e+02 4.543500e+02
-6 18513     1.510000e+02 3.343000e+02
-15 18513     5.621600e+02 5.327900e+02
-6 18514     -5.826400e+02 3.294400e+02
-9 18514     -4.759900e+02 1.530900e+02
-6 18515     -3.005700e+02 3.031200e+02
-7 18515     -1.026100e+02 3.868400e+02
-14 18515     4.322500e+02 -4.372400e+02
-6 18516     2.582100e+02 3.033800e+02
-12 18516     3.630500e+02 3.045100e+02
-6 18517     3.389000e+02 3.026600e+02
-8 18517     4.138200e+02 7.279001e+01
-12 18517     4.277400e+02 3.116000e+02
-6 18518     4.122500e+02 2.874800e+02
-12 18518     4.969900e+02 2.970300e+02
-6 18519     4.122500e+02 2.874800e+02
-12 18519     4.969900e+02 2.970300e+02
-6 18520     -5.453400e+02 2.863000e+02
-8 18520     -2.153600e+02 4.189001e+01
-6 18521     -5.210022e+00 2.819500e+02
-13 18521     4.902800e+02 -3.289001e+01
-14 18521     6.940200e+02 -5.053199e+02
-6 18522     4.174900e+02 2.744600e+02
-9 18522     2.915601e+02 1.857600e+02
-6 18523     3.899200e+02 2.705400e+02
-9 18523     2.708101e+02 1.795600e+02
-12 18523     4.761100e+02 2.802000e+02
-15 18523     7.571899e+02 3.944500e+02
-6 18524     -2.391400e+02 2.570400e+02
-10 18524     1.839001e+01 4.598300e+02
-11 18524     2.642500e+02 -4.804300e+02
-6 18525     -2.681000e+02 2.560600e+02
-11 18525     2.440100e+02 -4.767000e+02
-6 18526     -2.432200e+02 2.540300e+02
-14 18526     4.703400e+02 -4.892200e+02
-6 18527     -2.502200e+02 2.491600e+02
-10 18527     5.460022e+00 4.537800e+02
-12 18527     -1.127000e+02 2.631400e+02
-6 18528     4.574301e+02 2.475700e+02
-12 18528     5.403300e+02 2.571500e+02
-6 18529     5.567800e+02 2.399300e+02
-9 18529     3.991000e+02 1.775200e+02
-12 18529     6.354000e+02 2.502900e+02
-6 18530     3.173500e+02 2.385400e+02
-10 18530     4.958500e+02 3.384100e+02
-6 18531     3.173500e+02 2.385400e+02
-7 18531     3.514700e+02 2.808900e+02
-10 18531     4.958500e+02 3.384100e+02
-12 18531     4.076000e+02 2.483400e+02
-15 18531     6.767100e+02 3.759700e+02
-6 18532     -4.807500e+02 2.343000e+02
-10 18532     -1.964800e+02 4.728100e+02
-15 18532     -1.400100e+02 5.186600e+02
-6 18533     -2.897400e+02 2.306500e+02
-10 18533     -3.638000e+01 4.417900e+02
-6 18534     -7.066998e+01 2.252900e+02
-14 18534     5.592300e+02 -5.489301e+02
-6 18535     -3.086700e+02 2.215600e+02
-14 18535     4.066700e+02 -5.063900e+02
-6 18536     4.530900e+02 2.200700e+02
-8 18536     4.993101e+02 1.729001e+01
-9 18536     3.221100e+02 1.474700e+02
-10 18536     6.133500e+02 2.884200e+02
-12 18536     5.363000e+02 2.299800e+02
-13 18536     8.273500e+02 -1.340500e+02
-6 18537     -2.975500e+02 2.130000e+02
-7 18537     -1.247000e+02 3.148400e+02
-10 18537     -5.154999e+01 4.256500e+02
-11 18537     2.051300e+02 -5.043800e+02
-14 18537     4.139900e+02 -5.161100e+02
-6 18538     5.599100e+02 2.112600e+02
-8 18538     5.798400e+02 1.737000e+01
-10 18538     7.112500e+02 2.538500e+02
-12 18538     6.393600e+02 2.205700e+02
-6 18539     5.599100e+02 2.112600e+02
-8 18539     5.798400e+02 1.737000e+01
-6 18540     -2.540800e+02 2.100100e+02
-7 18540     -9.204999e+01 3.090200e+02
-10 18540     -1.559003e+01 4.158200e+02
-14 18540     4.505400e+02 -5.265000e+02
-6 18541     3.893900e+02 2.094700e+02
-15 18541     7.487200e+02 3.243400e+02
-6 18542     3.429700e+02 2.049200e+02
-7 18542     3.691801e+02 2.506700e+02
-6 18543     -1.249800e+02 2.014400e+02
-14 18543     5.063400e+02 -5.606400e+02
-6 18544     4.360900e+02 1.959700e+02
-8 18544     4.869800e+02 -2.299988e+00
-6 18545     3.652900e+02 1.816000e+02
-12 18545     4.531200e+02 1.921700e+02
-6 18546     -3.678500e+02 1.807800e+02
-10 18546     -1.259700e+02 4.052300e+02
-6 18547     5.174900e+02 1.776600e+02
-8 18547     5.491100e+02 -1.123001e+01
-9 18547     3.735000e+02 1.224700e+02
-6 18548     5.155200e+02 1.750900e+02
-8 18548     5.477400e+02 -1.353000e+01
-12 18548     5.959500e+02 1.846500e+02
-6 18549     5.155200e+02 1.750900e+02
-15 18549     8.792800e+02 2.496700e+02
-6 18550     5.563500e+02 1.747500e+02
-8 18550     5.777400e+02 -1.145999e+01
-9 18550     4.028400e+02 1.252100e+02
-6 18551     5.563500e+02 1.747500e+02
-8 18551     5.777400e+02 -1.145999e+01
-9 18551     4.028400e+02 1.252100e+02
-6 18552     5.787600e+02 1.672700e+02
-12 18552     6.571700e+02 1.768800e+02
-6 18553     3.789000e+02 1.634100e+02
-12 18553     4.657400e+02 1.743800e+02
-6 18554     -1.256000e+02 1.583600e+02
-12 18554     -9.265997e+01 2.116300e+02
-6 18555     -3.971300e+02 1.561000e+02
-12 18555     -2.602600e+02 1.848300e+02
-6 18556     -1.341000e+02 1.516300e+02
-12 18556     -1.009800e+02 2.053900e+02
-6 18557     3.883400e+02 1.477600e+02
-12 18557     4.747200e+02 1.592900e+02
-6 18558     3.789000e+02 1.475500e+02
-15 18558     7.280300e+02 2.546200e+02
-6 18559     5.585900e+02 1.426300e+02
-12 18559     6.374000e+02 1.519800e+02
-6 18560     5.286300e+02 1.402800e+02
-8 18560     5.581801e+02 -3.998999e+01
-9 18560     3.845500e+02 9.364999e+01
-10 18560     6.710500e+02 1.914900e+02
-12 18560     6.084301e+02 1.500500e+02
-6 18561     5.337300e+02 1.314900e+02
-12 18561     6.134900e+02 1.414600e+02
-6 18562     -2.305700e+02 1.306100e+02
-13 18562     2.706801e+02 -1.158800e+02
-6 18563     -2.305700e+02 1.306100e+02
-13 18563     2.706801e+02 -1.158800e+02
-6 18564     5.345300e+02 1.280600e+02
-12 18564     6.137600e+02 1.380000e+02
-6 18565     -2.349000e+02 1.270800e+02
-12 18565     -1.743900e+02 1.743500e+02
-13 18565     2.680100e+02 -1.177800e+02
-6 18566     -2.311800e+02 1.267500e+02
-13 18566     2.700900e+02 -1.185300e+02
-6 18567     1.805900e+02 1.191000e+02
-13 18567     5.505900e+02 -1.765500e+02
-6 18568     -4.062200e+02 1.158100e+02
-13 18568     1.807100e+02 -1.030000e+02
-14 18568     2.979600e+02 -5.813300e+02
-6 18569     -2.936400e+02 1.104400e+02
-7 18569     -2.178300e+02 2.237500e+02
-12 18569     -2.244100e+02 1.579800e+02
-15 18569     -1.561400e+02 3.210600e+02
-6 18570     4.993400e+02 1.074400e+02
-8 18570     5.359301e+02 -6.764001e+01
-10 18570     6.389800e+02 1.673300e+02
-15 18570     8.509301e+02 1.747700e+02
-6 18571     2.017999e+01 1.035500e+02
-8 18571     1.929600e+02 3.331000e+01
-10 18571     -2.204999e+01 2.139500e+02
-15 18571     4.790997e+01 2.239500e+02
-6 18572     -2.388300e+02 9.859998e+01
-12 18572     -1.844800e+02 1.485700e+02
-6 18573     -2.394200e+02 9.475000e+01
-7 18573     -1.935800e+02 2.042500e+02
-12 18573     -1.858300e+02 1.454600e+02
-6 18574     1.292000e+02 9.256000e+01
-12 18574     1.504300e+02 1.426100e+02
-6 18575     -2.552000e+02 9.140002e+01
-7 18575     -2.069300e+02 2.029200e+02
-12 18575     -2.016000e+02 1.424700e+02
-15 18575     -1.544100e+02 2.861600e+02
-6 18576     -3.216100e+02 9.045001e+01
-12 18576     -2.549800e+02 1.406500e+02
-6 18577     5.561100e+02 9.057001e+01
-12 18577     6.344500e+02 1.003800e+02
-6 18578     4.733002e+01 8.851001e+01
-12 18578     6.534003e+01 1.417000e+02
-6 18579     5.327700e+02 8.734998e+01
-12 18579     6.119200e+02 9.712000e+01
-6 18580     3.584300e+02 8.446002e+01
-7 18580     3.116100e+02 1.376700e+02
-6 18581     -3.151001e+01 8.371002e+01
-12 18581     -1.309003e+01 1.386500e+02
-6 18582     2.248200e+02 8.137000e+01
-10 18582     1.885300e+02 1.544300e+02
-12 18582     2.547800e+02 1.254000e+02
-6 18583     9.975000e+01 7.846002e+01
-12 18583     1.187000e+02 1.298900e+02
-6 18584     2.013500e+02 7.671997e+01
-12 18584     2.279500e+02 1.224600e+02
-6 18585     5.754301e+02 7.613000e+01
-9 18585     4.233500e+02 4.929999e+01
-6 18586     2.028100e+02 7.334003e+01
-8 18586     3.341300e+02 2.010010e+00
-6 18587     1.520100e+02 7.253998e+01
-12 18587     1.737300e+02 1.215900e+02
-6 18588     -1.807001e+01 6.348999e+01
-12 18588     -2.179993e+00 1.179200e+02
-6 18589     -3.286400e+02 5.533002e+01
-7 18589     -2.625200e+02 1.809000e+02
-12 18589     -2.692300e+02 1.092600e+02
-6 18590     5.292999e+01 5.328003e+01
-12 18590     6.831000e+01 1.057800e+02
-6 18591     -2.300600e+02 5.267999e+01
-12 18591     -1.866500e+02 1.062500e+02
-6 18592     5.607600e+02 4.919000e+01
-9 18592     4.137400e+02 2.509003e+01
-6 18593     2.084998e+01 4.828998e+01
-12 18593     3.603003e+01 1.022300e+02
-6 18594     2.872998e+01 4.810999e+01
-12 18594     4.314001e+01 1.014100e+02
-6 18595     3.775000e+01 4.703003e+01
-8 18595     2.064700e+02 -7.209991e+00
-6 18596     -2.346200e+02 4.576001e+01
-12 18596     -1.922700e+02 9.959003e+01
-6 18597     -2.951400e+02 4.171002e+01
-7 18597     -2.420100e+02 1.660900e+02
-12 18597     -2.417000e+02 9.534998e+01
-6 18598     -2.982800e+02 3.878998e+01
-12 18598     -2.441900e+02 9.284003e+01
-6 18599     2.117999e+01 3.875000e+01
-12 18599     3.550000e+01 9.213000e+01
-6 18600     2.117999e+01 3.875000e+01
-12 18600     3.550000e+01 9.213000e+01
-6 18601     2.159600e+02 3.721002e+01
-7 18601     1.380600e+02 1.047100e+02
-8 18601     3.438900e+02 -2.578000e+01
-13 18601     5.683101e+02 -2.430500e+02
-6 18602     2.169300e+02 2.946002e+01
-7 18602     1.384100e+02 9.798001e+01
-6 18603     -3.331800e+02 2.141998e+01
-12 18603     -2.814400e+02 7.779999e+01
-6 18604     -2.220500e+02 9.030029e+00
-12 18604     -1.885700e+02 6.540997e+01
-6 18605     -1.587900e+02 9.070007e+00
-8 18605     5.213000e+01 -4.338000e+01
-6 18606     -1.705900e+02 6.770020e+00
-12 18606     -1.462500e+02 6.360999e+01
-6 18607     -1.866800e+02 4.340027e+00
-9 18607     -1.140400e+02 7.283002e+01
-6 18608     -4.679999e+01 -2.820007e+00
-12 18608     -3.352002e+01 5.197998e+01
-6 18609     -2.363100e+02 -7.000000e+00
-10 18609     -2.391800e+02 1.657700e+02
-15 18609     -2.012600e+02 1.642500e+02
-6 18610     -1.527900e+02 -1.435999e+01
-8 18610     5.628998e+01 -6.133002e+01
-6 18611     -1.527900e+02 -1.435999e+01
-12 18611     -1.318700e+02 4.196002e+01
-6 18612     -3.932001e+01 -1.469000e+01
-8 18612     1.457900e+02 -5.437000e+01
-10 18612     -1.004500e+02 1.124400e+02
-15 18612     -4.225000e+01 1.046600e+02
-6 18613     2.134800e+02 -1.642999e+01
-8 18613     3.428600e+02 -6.637000e+01
-6 18614     -1.906000e+01 -1.740002e+01
-12 18614     -7.080017e+00 3.612000e+01
-6 18615     3.203000e+02 -1.753998e+01
-12 18615     3.529900e+02 1.916998e+01
-6 18616     -3.131000e+02 -1.971997e+01
-15 18616     -2.586900e+02 1.710500e+02
-6 18617     -2.838900e+02 -2.302002e+01
-12 18617     -2.449200e+02 3.481000e+01
-6 18618     -1.711700e+02 -2.966998e+01
-12 18618     -1.482000e+02 2.689001e+01
-6 18619     4.419983e+00 -2.992999e+01
-8 18619     1.800700e+02 -6.523999e+01
-6 18620     -1.194600e+02 -3.094000e+01
-8 18620     8.239001e+01 -7.102002e+01
-6 18621     2.199600e+02 -3.246002e+01
-8 18621     3.480100e+02 -8.006000e+01
-6 18622     1.927000e+02 -3.509003e+01
-8 18622     3.273000e+02 -7.841998e+01
-6 18623     3.869995e+00 -3.595001e+01
-12 18623     1.463000e+01 1.690997e+01
-6 18624     -1.635200e+02 -3.628003e+01
-12 18624     -1.418900e+02 2.034998e+01
-6 18625     -1.638600e+02 -4.284003e+01
-12 18625     -1.440100e+02 1.429999e+01
-6 18626     -5.496997e+01 -4.556000e+01
-12 18626     -4.356000e+01 8.359985e+00
-6 18627     1.224200e+02 -4.871997e+01
-12 18627     1.368500e+02 -9.500122e-01
-6 18628     -2.281600e+02 -5.123999e+01
-12 18628     -2.035100e+02 7.039978e+00
-6 18629     1.457800e+02 -6.653003e+01
-8 18629     2.913900e+02 -9.990002e+01
-6 18630     1.098700e+02 -7.313000e+01
-8 18630     2.624400e+02 -1.019600e+02
-12 18630     1.226400e+02 -2.565997e+01
-6 18631     -3.377002e+01 -7.488000e+01
-12 18631     -2.285999e+01 -2.167999e+01
-6 18632     -4.440500e+02 -7.770001e+01
-13 18632     1.191000e+02 -2.284300e+02
-6 18633     9.410999e+01 -8.745001e+01
-8 18633     2.502000e+02 -1.132600e+02
-6 18634     -5.053998e+01 -9.047998e+01
-12 18634     -4.162000e+01 -3.653998e+01
-6 18635     -2.918800e+02 -9.090997e+01
-12 18635     -2.680700e+02 -2.881000e+01
-6 18636     2.518200e+02 -9.121997e+01
-12 18636     2.710900e+02 -5.098999e+01
-6 18637     3.621200e+02 -9.179999e+01
-10 18637     2.892900e+02 -4.596997e+01
-12 18637     3.895100e+02 -5.845001e+01
-6 18638     1.952000e+02 -9.746997e+01
-12 18638     2.090699e+02 -5.458002e+01
-6 18639     -5.590027e+00 -1.000700e+02
-7 18639     -7.316998e+01 1.101001e+01
-12 18639     2.049988e+00 -4.796997e+01
-15 18639     -2.803003e+01 -3.900146e-01
-6 18640     4.052600e+02 -1.006400e+02
-12 18640     4.387400e+02 -7.012000e+01
-6 18641     -9.204999e+01 -1.016100e+02
-8 18641     1.021200e+02 -1.178800e+02
-12 18641     -8.529999e+01 -4.545001e+01
-6 18642     -1.090002e+01 -1.039300e+02
-10 18642     -9.659003e+01 2.020001e+01
-6 18643     5.410999e+01 -1.080900e+02
-8 18643     2.187400e+02 -1.251200e+02
-12 18643     6.069000e+01 -5.928003e+01
-15 18643     2.895001e+01 -2.703998e+01
-6 18644     1.307700e+02 -1.104400e+02
-12 18644     1.401600e+02 -6.446002e+01
-6 18645     -2.845200e+02 -1.124700e+02
-12 18645     -2.654300e+02 -4.996002e+01
-6 18646     2.494400e+02 -1.134300e+02
-8 18646     3.726600e+02 -1.405100e+02
-15 18646     2.660800e+02 -7.860999e+01
-6 18647     7.714001e+01 -1.150800e+02
-12 18647     8.364001e+01 -6.654999e+01
-6 18648     4.013700e+02 -1.165400e+02
-12 18648     4.347300e+02 -8.667999e+01
-6 18649     2.548200e+02 -1.170400e+02
-7 18649     1.527100e+02 -3.240997e+01
-13 18649     5.797700e+02 -3.656700e+02
-15 18649     2.731600e+02 -8.382001e+01
-6 18650     3.786800e+02 -1.190700e+02
-12 18650     4.103900e+02 -8.829999e+01
-6 18651     -2.309003e+01 -1.212100e+02
-8 18651     1.573200e+02 -1.325500e+02
-6 18652     1.170200e+02 -1.260300e+02
-12 18652     1.244500e+02 -7.988000e+01
-6 18653     -2.127200e+02 -1.281500e+02
-12 18653     -1.996700e+02 -6.801001e+01
-6 18654     -7.856000e+01 -1.296300e+02
-8 18654     1.127600e+02 -1.409500e+02
-6 18655     -4.734300e+02 -1.380699e+02
-7 18655     -3.462600e+02 4.826001e+01
-10 18655     -3.488500e+02 1.207900e+02
-15 18655     -3.195800e+02 1.077800e+02
-6 18656     6.862000e+01 -1.390400e+02
-8 18656     2.303700e+02 -1.485600e+02
-10 18656     -3.334003e+01 -3.121997e+01
-12 18656     7.396002e+01 -9.073999e+01
-15 18656     3.678998e+01 -6.438000e+01
-6 18657     3.732400e+02 -1.469800e+02
-12 18657     4.061200e+02 -1.150800e+02
-6 18658     3.218900e+02 -1.472300e+02
-12 18658     3.398500e+02 -1.122800e+02
-6 18659     3.138900e+02 -1.543500e+02
-8 18659     4.257300e+02 -1.701100e+02
-10 18659     2.057200e+02 -1.031100e+02
-12 18659     3.305900e+02 -1.189300e+02
-15 18659     3.189500e+02 -1.479700e+02
-6 18660     3.188000e+02 -1.551600e+02
-8 18660     4.295601e+02 -1.707500e+02
-6 18661     3.617500e+02 -1.595400e+02
-12 18661     3.919100e+02 -1.284400e+02
-6 18662     -1.919800e+02 -1.681500e+02
-12 18662     -1.862600e+02 -1.080300e+02
-6 18663     -1.349200e+02 -1.765000e+02
-10 18663     -2.228200e+02 -2.059003e+01
-12 18663     -1.342200e+02 -1.188700e+02
-15 18663     -1.837600e+02 -5.303003e+01
-6 18664     -7.741998e+01 -1.850500e+02
-10 18664     -1.767400e+02 -4.195001e+01
-12 18664     -7.781000e+01 -1.306500e+02
-6 18665     1.100100e+02 -1.855000e+02
-12 18665     1.132500e+02 -1.407500e+02
-6 18666     4.794000e+01 -1.922900e+02
-12 18666     4.826001e+01 -1.438800e+02
-6 18667     2.289800e+02 -1.929100e+02
-7 18667     1.103800e+02 -9.656000e+01
-12 18667     2.374500e+02 -1.541300e+02
-6 18668     -7.009998e+01 -1.943900e+02
-7 18668     -1.430200e+02 -6.170001e+01
-12 18668     -7.287000e+01 -1.399500e+02
-6 18669     2.603200e+02 -2.055000e+02
-9 18669     2.626100e+02 -5.651001e+01
-12 18669     2.736000e+02 -1.690400e+02
-6 18670     5.029999e+01 -2.084800e+02
-7 18670     -4.921997e+01 -8.901001e+01
-12 18670     4.665002e+01 -1.601100e+02
-6 18671     2.538100e+02 -2.141500e+02
-9 18671     2.578600e+02 -6.440002e+01
-12 18671     2.665000e+02 -1.780100e+02
-6 18672     3.526200e+02 -2.160900e+02
-12 18672     3.822700e+02 -1.869000e+02
-6 18673     -1.487700e+02 -2.173000e+02
-12 18673     -1.458000e+02 -1.594000e+02
-6 18674     2.448500e+02 -2.191100e+02
-7 18674     1.277900e+02 -1.185100e+02
-6 18675     3.529600e+02 -2.202200e+02
-12 18675     3.840200e+02 -1.921900e+02
-6 18676     6.849976e+00 -2.222400e+02
-7 18676     -8.969000e+01 -9.578998e+01
-12 18676     -4.500122e-01 -1.719200e+02
-6 18677     2.149300e+02 -2.257300e+02
-12 18677     2.232600e+02 -1.877400e+02
-6 18678     2.509700e+02 -2.283400e+02
-12 18678     2.641700e+02 -1.927400e+02
-6 18679     2.933000e+02 -2.328300e+02
-12 18679     3.117300e+02 -1.999300e+02
-6 18680     5.165997e+01 -2.467000e+02
-7 18680     -4.602002e+01 -1.197200e+02
-12 18680     5.081000e+01 -2.003200e+02
-6 18681     -5.973999e+01 -2.489399e+02
-12 18681     -5.934003e+01 -1.962800e+02
-15 18681     -1.138100e+02 -1.472000e+02
-6 18682     6.014001e+01 -2.493500e+02
-7 18682     -3.928003e+01 -1.226500e+02
-8 18682     2.226900e+02 -2.355800e+02
-9 18682     1.096500e+02 -9.103998e+01
-6 18683     4.588000e+01 -2.510800e+02
-8 18683     2.116900e+02 -2.365500e+02
-6 18684     4.588000e+01 -2.510800e+02
-8 18684     2.116900e+02 -2.365500e+02
-6 18685     9.439001e+01 -2.653900e+02
-12 18685     9.582001e+01 -2.219000e+02
-13 18685     4.314500e+02 -4.483400e+02
-6 18686     9.439001e+01 -2.653900e+02
-12 18686     9.582001e+01 -2.219000e+02
-13 18686     4.314500e+02 -4.483400e+02
-6 18687     2.127400e+02 -2.664399e+02
-8 18687     3.441400e+02 -2.623200e+02
-9 18687     2.279100e+02 -1.113000e+02
-12 18687     2.231300e+02 -2.296900e+02
-6 18688     2.798999e+01 -2.683600e+02
-8 18688     1.963700e+02 -2.521300e+02
-9 18688     8.402002e+01 -1.106800e+02
-12 18688     2.741998e+01 -2.210700e+02
-6 18689     -2.080300e+02 -2.804301e+02
-8 18689     4.820007e+00 -2.716200e+02
-9 18689     -1.191900e+02 -1.547000e+02
-6 18690     -2.209003e+01 -2.877500e+02
-12 18690     -2.128998e+01 -2.377400e+02
-15 18690     -7.640997e+01 -1.962800e+02
-6 18691     -1.538900e+02 -2.878900e+02
-13 18691     2.526801e+02 -4.203400e+02
-6 18692     2.377300e+02 -2.909900e+02
-12 18692     2.519600e+02 -2.565200e+02
-6 18693     2.356900e+02 -2.942300e+02
-12 18693     2.488500e+02 -2.593500e+02
-6 18694     -1.536500e+02 -2.943800e+02
-12 18694     -1.463100e+02 -2.370500e+02
-6 18695     -1.501400e+02 -2.961600e+02
-7 18695     -1.939500e+02 -1.283200e+02
-8 18695     5.116998e+01 -2.817200e+02
-9 18695     -6.628998e+01 -1.587100e+02
-10 18695     -2.270300e+02 -1.158500e+02
-13 18695     2.550800e+02 -4.269500e+02
-6 18696     2.472600e+02 -2.970000e+02
-12 18696     2.619000e+02 -2.629300e+02
-6 18697     -1.966000e+02 -2.981200e+02
-8 18697     1.341998e+01 -2.880100e+02
-12 18697     -1.804500e+02 -2.394400e+02
-6 18698     7.690002e+01 -3.045800e+02
-8 18698     2.354500e+02 -2.881300e+02
-6 18699     6.209998e+01 -3.061200e+02
-8 18699     2.234400e+02 -2.886600e+02
-9 18699     1.116300e+02 -1.475500e+02
-6 18700     -8.954999e+01 -3.094600e+02
-12 18700     -8.460999e+01 -2.563600e+02
-6 18701     -8.954999e+01 -3.094600e+02
-7 18701     -1.504900e+02 -1.473000e+02
-13 18701     2.949500e+02 -4.469399e+02
-6 18702     2.252600e+02 -3.107500e+02
-8 18702     3.535100e+02 -3.043400e+02
-12 18702     2.384301e+02 -2.761000e+02
-6 18703     -5.782700e+02 -3.177200e+02
-15 18703     -4.984400e+02 -6.052002e+01
-6 18704     2.957500e+02 -3.176300e+02
-12 18704     3.147900e+02 -2.874700e+02
-6 18705     5.822998e+01 -3.207300e+02
-12 18705     6.158002e+01 -2.764400e+02
-6 18706     -3.303003e+01 -3.232000e+02
-8 18706     1.451100e+02 -3.036100e+02
-6 18707     2.033600e+02 -3.290400e+02
-8 18707     3.352200e+02 -3.189300e+02
-6 18708     1.037900e+02 -3.308000e+02
-12 18708     1.083300e+02 -2.895900e+02
-6 18709     -5.392900e+02 -3.364700e+02
-7 18709     -4.432300e+02 -1.033900e+02
-8 18709     -2.517300e+02 -3.275700e+02
-6 18710     -7.673999e+01 -3.390800e+02
-9 18710     -3.909973e+00 -1.892100e+02
-12 18710     -7.138000e+01 -2.867700e+02
-6 18711     -7.673999e+01 -3.390800e+02
-12 18711     -7.138000e+01 -2.867700e+02
-6 18712     8.362000e+01 -3.399500e+02
-8 18712     2.392700e+02 -3.201100e+02
-6 18713     1.981100e+02 -3.460300e+02
-8 18713     3.310800e+02 -3.344400e+02
-12 18713     2.102200e+02 -3.102300e+02
-6 18714     2.986000e+02 -3.623800e+02
-12 18714     3.199800e+02 -3.309100e+02
-6 18715     2.759998e+01 -3.647600e+02
-12 18715     3.287000e+01 -3.190100e+02
-6 18716     -1.212000e+02 -3.705500e+02
-9 18716     -4.201001e+01 -2.274200e+02
-6 18717     1.345300e+02 -3.865500e+02
-12 18717     1.433300e+02 -3.475600e+02
-15 18717     9.778998e+01 -3.372500e+02
-6 18718     1.473800e+02 -3.959399e+02
-12 18718     1.568200e+02 -3.584900e+02
-6 18719     2.107400e+02 -4.026899e+02
-9 18719     2.356500e+02 -2.277400e+02
-6 18720     2.271997e+01 -4.089700e+02
-15 18720     -2.075000e+01 -3.261500e+02
-6 18721     -1.533600e+02 -4.237800e+02
-12 18721     -1.481100e+02 -3.658100e+02
-6 18722     -1.784200e+02 -4.289399e+02
-7 18722     -2.223200e+02 -2.275400e+02
-6 18723     1.764600e+02 -4.357300e+02
-12 18723     1.781700e+02 -4.003400e+02
-6 18724     -4.746300e+02 -4.473500e+02
-7 18724     -4.258800e+02 -1.994500e+02
-6 18725     1.950012e+00 -4.526899e+02
-12 18725     -1.210022e+00 -4.057600e+02
-6 18726     -5.455100e+02 -4.563101e+02
-10 18726     -5.322500e+02 -1.540100e+02
-15 18726     -5.347700e+02 -2.123800e+02
-6 18727     1.606800e+02 -4.599200e+02
-12 18727     1.638700e+02 -4.232800e+02
-6 18728     1.688700e+02 -4.624600e+02
-12 18728     1.720500e+02 -4.261600e+02
-6 18729     1.374800e+02 -4.672200e+02
-12 18729     1.413600e+02 -4.292200e+02
-6 18730     5.000000e-01 -4.761200e+02
-12 18730     -9.199829e-01 -4.287500e+02
-6 18731     1.778900e+02 -4.766000e+02
-12 18731     1.810900e+02 -4.413600e+02
-6 18732     1.731600e+02 -4.803800e+02
-12 18732     1.765700e+02 -4.447700e+02
-6 18733     1.276001e+01 -4.876600e+02
-12 18733     1.203003e+01 -4.407800e+02
-6 18734     -1.969971e+00 -4.882100e+02
-12 18734     -2.469971e+00 -4.403300e+02
-6 18735     7.500000e+00 -4.880900e+02
-12 18735     7.140015e+00 -4.408900e+02
-6 18736     7.500000e+00 -4.880900e+02
-12 18736     7.140015e+00 -4.408900e+02
-6 18737     4.956801e+02 -5.010699e+02
-7 18737     3.222500e+02 -3.775500e+02
-10 18737     3.364100e+02 -4.609100e+02
-12 18737     5.123800e+02 -4.863300e+02
-6 18738     -1.881800e+02 -5.323300e+02
-12 18738     -1.881300e+02 -4.698600e+02
-6 18739     4.515000e+02 -5.344200e+02
-7 18739     2.754301e+02 -4.001100e+02
-9 18739     4.354301e+02 -3.248700e+02
-6 18740     4.358199e+02 -5.374200e+02
-10 18740     2.604100e+02 -4.801500e+02
-6 18741     1.424700e+02 -5.557300e+02
-10 18741     -2.503998e+01 -4.179500e+02
-6 18742     -3.524800e+02 -5.650900e+02
-15 18742     -4.196900e+02 -3.776800e+02
-6 18743     -2.639400e+02 -5.863800e+02
-15 18743     -3.511600e+02 -4.248700e+02
-6 18744     4.774301e+02 -5.966801e+02
-7 18744     2.795400e+02 -4.582600e+02
-6 18745     -3.358000e+02 -5.993900e+02
-7 18745     -3.642800e+02 -3.398500e+02
-15 18745     -4.210400e+02 -4.177500e+02
-6 18746     -2.727700e+02 -6.054200e+02
-7 18746     -3.190900e+02 -3.537800e+02
-15 18746     -3.669900e+02 -4.425000e+02
-6 18747     5.772300e+02 -6.144700e+02
-7 18747     3.586500e+02 -4.884600e+02
-6 18748     -2.826900e+02 -6.162100e+02
-7 18748     -3.289700e+02 -3.609100e+02
-10 18748     -3.964700e+02 -3.591400e+02
-15 18748     -3.813000e+02 -4.509900e+02
-6 18749     3.307100e+02 -6.220100e+02
-7 18749     1.497600e+02 -4.578800e+02
-10 18749     1.203100e+02 -5.322400e+02
-12 18749     3.236300e+02 -6.002300e+02
-6 18750     5.297800e+02 -6.243000e+02
-10 18750     3.062500e+02 -5.955800e+02
-6 18751     5.047400e+02 -6.388300e+02
-7 18751     2.895400e+02 -4.985000e+02
-10 18751     2.743101e+02 -6.019900e+02
-6 18752     4.059400e+02 -6.426500e+02
-7 18752     2.064500e+02 -4.866899e+02
-6 18753     5.170601e+02 -6.451801e+02
-7 18753     2.987100e+02 -5.059500e+02
-6 18754     2.342600e+02 -6.465601e+02
-12 18754     2.197700e+02 -6.187200e+02
-6 18755     3.723400e+02 -6.602800e+02
-7 18755     1.730300e+02 -4.968900e+02
-6 18756     3.881200e+02 -6.631801e+02
-7 18756     1.857500e+02 -5.015900e+02
-6 18757     3.586700e+02 -6.711100e+02
-7 18757     1.589500e+02 -5.044399e+02
-10 18757     1.216900e+02 -5.889900e+02
-6 18758     3.586700e+02 -6.711100e+02
-7 18758     1.589500e+02 -5.044399e+02
-6 18759     5.056801e+02 -6.734399e+02
-7 18759     2.807600e+02 -5.288500e+02
-6 18760     4.789500e+02 -6.783900e+02
-7 18760     2.567200e+02 -5.288400e+02
-6 18761     2.973000e+02 -6.801700e+02
-7 18761     1.053900e+02 -5.023900e+02
-6 18762     4.742300e+02 -6.826200e+02
-7 18762     2.515500e+02 -5.317900e+02
-6 18763     3.031500e+02 -6.834100e+02
-7 18763     1.096100e+02 -5.059100e+02
-6 18764     -6.470001e+01 -6.898800e+02
-7 18764     -1.850700e+02 -4.536000e+02
-6 18765     1.503000e+02 -6.907800e+02
-7 18765     -1.659003e+01 -4.879800e+02
-10 18765     -7.351001e+01 -5.452600e+02
-6 18766     4.943199e+02 -6.915800e+02
-7 18766     2.660000e+02 -5.428900e+02
-6 18767     3.706300e+02 -6.919301e+02
-7 18767     1.624500e+02 -5.235000e+02
-6 18768     -2.170400e+02 -6.923300e+02
-7 18768     -3.003300e+02 -4.322200e+02
-10 18768     -3.774100e+02 -4.448101e+02
-15 18768     -3.600700e+02 -5.511600e+02
-6 18769     -8.891000e+01 -7.019399e+02
-10 18769     -2.797000e+02 -4.882800e+02
-6 18770     -7.170001e+01 -7.059100e+02
-10 18770     -2.671500e+02 -4.964100e+02
-6 18771     -6.222998e+01 -7.073101e+02
-9 18771     4.338000e+01 -4.728400e+02
-6 18772     4.320700e+02 -7.111400e+02
-7 18772     2.084100e+02 -5.497000e+02
-6 18773     3.027800e+02 -7.180400e+02
-7 18773     9.942999e+01 -5.349600e+02
-6 18774     1.111200e+02 -7.186500e+02
-7 18774     -5.515002e+01 -5.049900e+02
-6 18775     5.258600e+02 -7.243900e+02
-7 18775     2.830300e+02 -5.758000e+02
-6 18776     1.606400e+02 -7.779200e+02
-7 18776     -3.197998e+01 -5.613101e+02
-6 18777     2.144000e+02 -7.781899e+02
-7 18777     1.101001e+01 -5.713900e+02
-6 18778     5.776001e+01 -7.857900e+02
-7 18778     -1.156300e+02 -5.512700e+02
-6 18779     -1.023300e+02 -8.384399e+02
-7 18779     -2.512600e+02 -5.679600e+02
-6 18780     -4.794700e+02 8.611600e+02
-11 18780     1.722200e+02 -5.271002e+01
-6 18781     -3.582001e+01 8.603100e+02
-13 18781     5.405699e+02 3.684000e+02
-6 18782     -3.773999e+01 8.542500e+02
-11 18782     5.314000e+02 -7.378998e+01
-13 18782     5.381801e+02 3.638300e+02
-14 18782     7.339301e+02 -1.572998e+01
-6 18783     -5.562600e+02 8.440500e+02
-8 18783     -1.950600e+02 4.149200e+02
-6 18784     2.075300e+02 8.358200e+02
-8 18784     3.100100e+02 4.188000e+02
-9 18784     1.006500e+02 5.519100e+02
-11 18784     6.198800e+02 -1.089200e+02
-6 18785     -3.386400e+02 8.283400e+02
-8 18785     -5.557001e+01 3.844900e+02
-6 18786     2.847300e+02 8.236600e+02
-8 18786     3.640100e+02 4.171600e+02
-6 18787     -8.580017e+00 8.196000e+02
-8 18787     1.594600e+02 3.459500e+02
-11 18787     5.566000e+02 -9.757001e+01
-13 18787     5.581000e+02 3.405100e+02
-14 18787     7.594399e+02 -4.303998e+01
-6 18788     1.291500e+02 8.152600e+02
-8 18788     2.489500e+02 3.287900e+02
-6 18789     1.291500e+02 8.152600e+02
-8 18789     2.489500e+02 3.287900e+02
-6 18790     -1.525300e+02 8.126300e+02
-11 18790     4.313101e+02 -9.612000e+01
-13 18790     4.483400e+02 3.416800e+02
-14 18790     6.260300e+02 -3.937000e+01
-6 18791     2.965900e+02 8.106900e+02
-8 18791     3.724000e+02 4.094200e+02
-9 18791     1.671500e+02 5.426600e+02
-6 18792     1.227600e+02 8.049300e+02
-8 18792     2.447600e+02 3.231300e+02
-6 18793     -2.077500e+02 7.681800e+02
-8 18793     2.853998e+01 3.341000e+02
-6 18794     -5.473900e+02 7.564100e+02
-11 18794     1.130900e+02 -1.126100e+02
-14 18794     2.843500e+02 -5.496997e+01
-6 18795     -4.721600e+02 7.524500e+02
-11 18795     1.697500e+02 -1.187500e+02
-6 18796     -5.355800e+02 7.445800e+02
-8 18796     -1.871500e+02 3.509300e+02
-6 18797     6.522998e+01 7.430200e+02
-8 18797     2.075000e+02 2.895100e+02
-6 18798     4.082300e+02 7.402500e+02
-9 18798     2.591500e+02 5.340600e+02
-6 18799     -1.337100e+02 7.392900e+02
-11 18799     4.444301e+02 -1.452400e+02
-6 18800     -1.337100e+02 7.392900e+02
-11 18800     4.444301e+02 -1.452400e+02
-6 18801     -6.398999e+01 7.378200e+02
-11 18801     5.058900e+02 -1.503200e+02
-6 18802     4.666998e+01 7.360900e+02
-8 18802     1.955200e+02 2.868100e+02
-9 18802     -3.965997e+01 3.920300e+02
-6 18803     -5.640997e+01 7.347500e+02
-11 18803     5.120800e+02 -1.522400e+02
-14 18803     7.084301e+02 -1.084800e+02
-6 18804     -6.396002e+01 7.317400e+02
-9 18804     -1.130100e+02 4.008500e+02
-6 18805     4.848700e+02 7.284500e+02
-8 18805     5.117700e+02 3.912100e+02
-6 18806     5.505100e+02 7.250200e+02
-8 18806     5.597300e+02 3.951000e+02
-6 18807     5.626500e+02 7.160500e+02
-8 18807     5.675100e+02 3.894600e+02
-6 18808     3.329200e+02 7.145900e+02
-8 18808     3.994500e+02 3.474500e+02
-9 18808     1.969700e+02 4.801800e+02
-6 18809     -2.079200e+02 7.134100e+02
-8 18809     2.734998e+01 2.979900e+02
-9 18809     -2.105300e+02 4.028000e+02
-11 18809     3.806500e+02 -1.576700e+02
-6 18810     2.297400e+02 7.131200e+02
-8 18810     3.273300e+02 3.407400e+02
-6 18811     4.555601e+02 7.023900e+02
-9 18811     2.978900e+02 5.120100e+02
-6 18812     -5.592600e+02 6.964000e+02
-8 18812     -2.047100e+02 3.220200e+02
-6 18813     -4.484500e+02 6.925400e+02
-14 18813     3.587000e+02 -1.090000e+02
-6 18814     -7.897998e+01 6.919400e+02
-9 18814     -1.226600e+02 3.739400e+02
-6 18815     -4.218000e+02 6.836500e+02
-11 18815     2.036900e+02 -1.640700e+02
-13 18815     2.438900e+02 2.701200e+02
-6 18816     3.835900e+02 6.831700e+02
-8 18816     4.391899e+02 3.531600e+02
-6 18817     -5.165997e+01 6.799500e+02
-11 18817     5.151600e+02 -1.903900e+02
-6 18818     -4.191300e+02 6.797500e+02
-13 18818     2.437200e+02 2.672300e+02
-6 18819     2.938200e+02 6.725700e+02
-8 18819     3.724700e+02 3.165200e+02
-11 18819     6.812100e+02 -2.378900e+02
-6 18820     3.057000e+02 6.725200e+02
-8 18820     3.802000e+02 3.178500e+02
-9 18820     1.794500e+02 4.471800e+02
-6 18821     3.057000e+02 6.725200e+02
-8 18821     3.802000e+02 3.178500e+02
-9 18821     1.794500e+02 4.471800e+02
-6 18822     -2.163300e+02 6.707800e+02
-9 18822     -2.162300e+02 3.724400e+02
-6 18823     -2.712600e+02 6.649100e+02
-8 18823     -1.670001e+01 2.727400e+02
-6 18824     -2.712600e+02 6.649100e+02
-8 18824     -1.670001e+01 2.727400e+02
-6 18825     -8.385999e+01 6.635700e+02
-12 18825     7.822998e+01 6.191400e+02
-6 18826     -5.065002e+01 6.635100e+02
-8 18826     1.305100e+02 2.493100e+02
-12 18826     1.103600e+02 6.176000e+02
-6 18827     -1.244900e+02 6.626500e+02
-9 18827     -1.533400e+02 3.574400e+02
-6 18828     4.627300e+02 6.594800e+02
-8 18828     4.973300e+02 3.414800e+02
-6 18829     -6.540002e+01 6.589300e+02
-9 18829     -1.129500e+02 3.490300e+02
-12 18829     9.603998e+01 6.140300e+02
-6 18830     -6.540002e+01 6.589300e+02
-9 18830     -1.129500e+02 3.490300e+02
-6 18831     -1.205600e+02 6.584400e+02
-9 18831     -1.505100e+02 3.539500e+02
-12 18831     4.265002e+01 6.161900e+02
-13 18831     4.592900e+02 2.369600e+02
-6 18832     -1.935400e+02 6.545000e+02
-8 18832     3.533002e+01 2.578900e+02
-9 18832     -2.000800e+02 3.588300e+02
-6 18833     -4.044300e+02 6.481900e+02
-8 18833     -1.053400e+02 2.750400e+02
-9 18833     -3.459000e+02 3.770000e+02
-6 18834     -4.044300e+02 6.481900e+02
-9 18834     -3.459000e+02 3.770000e+02
-6 18835     -5.746400e+02 6.464200e+02
-8 18835     -2.178100e+02 2.912300e+02
-6 18836     -1.123200e+02 6.414200e+02
-8 18836     9.009003e+01 2.415600e+02
-6 18837     4.608300e+02 6.320000e+02
-9 18837     3.058800e+02 4.616900e+02
-6 18838     -3.441300e+02 6.312200e+02
-11 18838     2.608600e+02 -2.034500e+02
-13 18838     2.934800e+02 2.319600e+02
-6 18839     -2.398000e+02 6.315400e+02
-8 18839     3.830017e+00 2.469700e+02
-6 18840     -4.763600e+02 6.285700e+02
-11 18840     1.573600e+02 -1.955200e+02
-6 18841     -9.789001e+01 6.284400e+02
-8 18841     9.885999e+01 2.307500e+02
-12 18841     6.481000e+01 5.882700e+02
-13 18841     4.744700e+02 2.159800e+02
-14 18841     6.628000e+02 -1.900500e+02
-6 18842     4.527300e+02 6.268200e+02
-8 18842     4.905699e+02 3.174600e+02
-9 18842     3.002800e+02 4.572300e+02
-6 18843     -3.782300e+02 6.184900e+02
-8 18843     -8.925000e+01 2.537400e+02
-9 18843     -3.266400e+02 3.529200e+02
-6 18844     -2.948600e+02 5.979600e+02
-9 18844     -2.692800e+02 3.285600e+02
-12 18844     -1.270500e+02 5.696400e+02
-6 18845     -3.174600e+02 5.962300e+02
-9 18845     -2.857800e+02 3.289700e+02
-6 18846     -2.713000e+02 5.959700e+02
-12 18846     -1.036200e+02 5.672700e+02
-6 18847     4.645900e+02 5.784500e+02
-9 18847     3.114800e+02 4.231900e+02
-6 18848     -2.430900e+02 5.774400e+02
-12 18848     -7.702002e+01 5.501000e+02
-6 18849     -2.388000e+02 5.751300e+02
-8 18849     3.179993e+00 2.110200e+02
-12 18849     -7.342999e+01 5.474600e+02
-6 18850     1.927700e+02 5.669500e+02
-8 18850     3.022500e+02 2.359300e+02
-9 18850     9.972998e+01 3.559400e+02
-12 18850     3.016500e+02 5.559000e+02
-6 18851     -4.513000e+02 5.657100e+02
-9 18851     -3.791900e+02 3.204400e+02
-11 18851     1.724200e+02 -2.376400e+02
-6 18852     -2.105000e+02 5.654600e+02
-14 18852     5.528700e+02 -2.302400e+02
-6 18853     -2.844900e+02 5.568000e+02
-12 18853     -1.175800e+02 5.331800e+02
-6 18854     -2.296300e+02 5.460500e+02
-9 18854     -2.244600e+02 2.815700e+02
-12 18854     -6.326001e+01 5.196500e+02
-14 18854     5.336400e+02 -2.442200e+02
-6 18855     -2.188300e+02 5.411300e+02
-9 18855     -2.166100e+02 2.785300e+02
-6 18856     -3.780500e+02 5.404400e+02
-8 18856     -9.152002e+01 2.007900e+02
-9 18856     -3.281000e+02 2.940500e+02
-12 18856     -2.070800e+02 5.217700e+02
-6 18857     -3.844600e+02 5.365500e+02
-12 18857     -2.132700e+02 5.188300e+02
-6 18858     4.194600e+02 5.322100e+02
-9 18858     2.800800e+02 3.835700e+02
-6 18859     3.231600e+02 5.300600e+02
-9 18859     1.985000e+02 3.442800e+02
-6 18860     -2.298400e+02 5.266800e+02
-9 18860     -2.245700e+02 2.682200e+02
-6 18861     -5.210300e+02 5.257900e+02
-12 18861     -3.452700e+02 5.143000e+02
-6 18862     3.895100e+02 5.236300e+02
-7 18862     4.240900e+02 5.163800e+02
-9 18862     2.583400e+02 3.734100e+02
-11 18862     7.215800e+02 -3.772400e+02
-12 18862     4.740800e+02 5.305800e+02
-6 18863     4.177400e+02 5.225400e+02
-8 18863     4.680900e+02 2.408300e+02
-9 18863     2.793700e+02 3.761200e+02
-11 18863     7.444100e+02 -3.827200e+02
-12 18863     5.019500e+02 5.295900e+02
-6 18864     4.342500e+02 5.223200e+02
-8 18864     4.794500e+02 2.418800e+02
-12 18864     5.169000e+02 5.304500e+02
-6 18865     5.427500e+02 5.106200e+02
-9 18865     3.734500e+02 3.819800e+02
-6 18866     4.113500e+02 5.072000e+02
-8 18866     4.632500e+02 2.293700e+02
-9 18866     2.757300e+02 3.638700e+02
-10 18866     6.180500e+02 5.924800e+02
-11 18866     7.397500e+02 -3.952100e+02
-12 18866     4.951100e+02 5.149500e+02
-6 18867     4.485000e+02 4.843200e+02
-9 18867     3.045500e+02 3.510400e+02
-6 18868     3.826500e+02 4.831100e+02
-7 18868     4.159399e+02 4.819300e+02
-9 18868     2.552700e+02 3.427000e+02
-12 18868     4.681400e+02 4.898400e+02
-13 18868     7.917100e+02 7.338000e+01
-6 18869     -4.995300e+02 4.754500e+02
-12 18869     -3.240000e+02 4.679700e+02
-6 18870     -5.118100e+02 4.718000e+02
-12 18870     -3.359000e+02 4.652100e+02
-6 18871     2.983200e+02 4.655600e+02
-12 18871     3.993000e+02 4.619500e+02
-6 18872     3.035600e+02 4.636000e+02
-9 18872     1.867000e+02 2.927200e+02
-12 18872     4.047300e+02 4.600900e+02
-6 18873     -5.418000e+02 4.584700e+02
-12 18873     -3.646400e+02 4.543600e+02
-6 18874     1.931700e+02 4.562900e+02
-7 18874     2.877500e+02 4.737300e+02
-9 18874     1.029600e+02 2.734300e+02
-12 18874     3.030300e+02 4.505600e+02
-6 18875     -4.748100e+02 4.472300e+02
-9 18875     -3.969500e+02 2.337700e+02
-6 18876     -4.748100e+02 4.472300e+02
-9 18876     -3.969500e+02 2.337700e+02
-6 18877     4.372300e+02 4.421300e+02
-9 18877     2.982700e+02 3.181700e+02
-6 18878     3.587800e+02 4.362400e+02
-8 18878     4.264800e+02 1.737700e+02
-9 18878     2.394399e+02 3.036600e+02
-10 18878     5.582600e+02 5.274900e+02
-6 18879     1.311500e+02 4.335700e+02
-7 18879     2.403199e+02 4.596200e+02
-6 18880     4.418199e+02 4.259800e+02
-7 18880     4.597500e+02 4.271700e+02
-8 18880     4.875400e+02 1.722200e+02
-9 18880     3.025800e+02 3.062700e+02
-10 18880     6.345000e+02 5.010100e+02
-12 18880     5.247900e+02 4.349000e+02
-15 18880     8.394301e+02 5.740300e+02
-6 18881     4.418199e+02 4.259800e+02
-9 18881     3.025800e+02 3.062700e+02
-12 18881     5.247900e+02 4.349000e+02
-6 18882     3.755100e+02 4.191700e+02
-9 18882     2.531801e+02 2.928900e+02
-12 18882     4.615699e+02 4.265400e+02
-6 18883     1.637200e+02 4.045700e+02
-12 18883     2.764700e+02 4.001100e+02
-6 18884     2.760000e+02 3.881900e+02
-12 18884     3.789800e+02 3.855500e+02
-6 18885     4.894900e+02 3.824400e+02
-8 18885     5.235300e+02 1.432100e+02
-9 18885     3.408800e+02 2.784900e+02
-12 18885     5.708500e+02 3.924300e+02
-6 18886     -5.021000e+02 3.771400e+02
-8 18886     -1.815500e+02 1.028000e+02
-6 18887     5.019800e+02 3.752000e+02
-8 18887     5.326400e+02 1.384900e+02
-9 18887     3.503900e+02 2.749100e+02
-6 18888     1.417300e+02 3.745500e+02
-7 18888     2.451300e+02 4.103400e+02
-13 18888     6.093600e+02 1.782001e+01
-15 18888     5.581801e+02 5.807800e+02
-6 18889     1.390800e+02 3.695000e+02
-7 18889     2.431500e+02 4.063900e+02
-13 18889     6.073900e+02 1.442999e+01
-14 18889     8.430200e+02 -4.485300e+02
-15 18889     5.550900e+02 5.752600e+02
-6 18890     3.694000e+02 3.629300e+02
-7 18890     3.986400e+02 3.795300e+02
-9 18890     2.510900e+02 2.484000e+02
-10 18890     5.577900e+02 4.509200e+02
-12 18890     4.565200e+02 3.719100e+02
-15 18890     7.486600e+02 5.122300e+02
-6 18891     4.709500e+02 3.630700e+02
-8 18891     5.103600e+02 1.272000e+02
-12 18891     5.530100e+02 3.724800e+02
-6 18892     3.756300e+02 3.577800e+02
-8 18892     4.390800e+02 1.167400e+02
-9 18892     2.553199e+02 2.456500e+02
-10 18892     5.615000e+02 4.445100e+02
-11 18892     7.149500e+02 -5.183700e+02
-6 18893     5.358000e+02 3.544200e+02
-7 18893     5.293400e+02 3.573500e+02
-9 18893     3.762300e+02 2.638900e+02
-6 18894     3.938200e+02 3.450600e+02
-9 18894     2.705100e+02 2.380200e+02
-6 18895     -4.374400e+02 3.387800e+02
-9 18895     -3.709800e+02 1.465700e+02
-6 18896     -5.667700e+02 3.331000e+02
-9 18896     -4.638900e+02 1.544800e+02
-6 18897     -2.848800e+02 3.330100e+02
-12 18897     -1.300400e+02 3.353800e+02
-13 18897     3.014600e+02 3.096997e+01
-14 18897     4.512700e+02 -4.138000e+02
-6 18898     -1.893700e+02 3.255400e+02
-9 18898     -1.824300e+02 1.459800e+02
-13 18898     3.664301e+02 1.653998e+01
-14 18898     5.340200e+02 -4.354301e+02
-6 18899     -4.060200e+02 3.247400e+02
-13 18899     2.197500e+02 3.653998e+01
-14 18899     3.488500e+02 -4.027000e+02
-6 18900     -3.081400e+02 3.134300e+02
-9 18900     -2.712300e+02 1.360000e+02
-14 18900     4.281300e+02 -4.271300e+02
-6 18901     -2.006000e+02 2.936000e+02
-7 18901     -2.826001e+01 3.719200e+02
-11 18901     3.074000e+02 -4.579400e+02
-6 18902     5.006200e+02 2.922300e+02
-9 18902     3.542900e+02 2.106700e+02
-12 18902     5.820601e+02 3.023100e+02
-6 18903     -2.677600e+02 2.865200e+02
-13 18903     3.045699e+02 -2.219971e+00
-14 18903     4.555100e+02 -4.565300e+02
-6 18904     -1.867800e+02 2.866000e+02
-7 18904     -2.031000e+01 3.650800e+02
-6 18905     5.718900e+02 2.838400e+02
-8 18905     5.878400e+02 7.475000e+01
-12 18905     6.510300e+02 2.940300e+02
-6 18906     -1.942700e+02 2.828000e+02
-12 18906     -5.597998e+01 2.915100e+02
-13 18906     3.548900e+02 -1.272998e+01
-6 18907     -2.078800e+02 2.818300e+02
-13 18907     3.453300e+02 -1.165997e+01
-14 18907     5.078000e+02 -4.708101e+02
-6 18908     4.692700e+02 2.776200e+02
-7 18908     4.718500e+02 2.978000e+02
-8 18908     5.105800e+02 6.294000e+01
-9 18908     3.314200e+02 1.958800e+02
-12 18908     5.513199e+02 2.878000e+02
-13 18908     8.455100e+02 -9.120001e+01
-15 18908     8.455000e+02 3.849400e+02
-6 18909     -3.184800e+02 2.759300e+02
-7 18909     -1.232600e+02 3.664000e+02
-6 18910     5.309200e+02 2.613400e+02
-8 18910     5.569301e+02 5.403000e+01
-9 18910     3.784700e+02 1.910800e+02
-12 18910     6.109800e+02 2.715100e+02
-6 18911     3.484600e+02 2.610800e+02
-7 18911     3.764200e+02 2.965300e+02
-8 18911     4.219301e+02 4.151001e+01
-12 18911     4.376600e+02 2.705300e+02
-6 18912     -3.062700e+02 2.598100e+02
-7 18912     -1.185900e+02 3.528100e+02
-9 18912     -2.655100e+02 1.073000e+02
-13 18912     2.740300e+02 -1.679999e+01
-14 18912     4.170300e+02 -4.738900e+02
-6 18913     3.296000e+02 2.594300e+02
-8 18913     4.070400e+02 3.920001e+01
-12 18913     4.193600e+02 2.689000e+02
-6 18914     4.861000e+02 2.572300e+02
-8 18914     5.237500e+02 4.817999e+01
-9 18914     3.447800e+02 1.816600e+02
-6 18915     1.121000e+02 2.413400e+02
-12 18915     1.586100e+02 2.836700e+02
-6 18916     1.167700e+02 2.413700e+02
-12 18916     1.630100e+02 2.833900e+02
-6 18917     4.150100e+02 2.385800e+02
-12 18917     4.999000e+02 2.487500e+02
-6 18918     1.567300e+02 2.214900e+02
-12 18918     1.978700e+02 2.652600e+02
-6 18919     -3.076600e+02 2.179100e+02
-9 18919     -2.626100e+02 8.457999e+01
-6 18920     4.043600e+02 2.165300e+02
-12 18920     4.896700e+02 2.265900e+02
-6 18921     5.845900e+02 2.101100e+02
-8 18921     5.992500e+02 1.801999e+01
-9 18921     4.229600e+02 1.572400e+02
-6 18922     5.666300e+02 2.100500e+02
-8 18922     5.853500e+02 1.732001e+01
-9 18922     4.089399e+02 1.546700e+02
-6 18923     1.961600e+02 2.031500e+02
-10 18923     2.138300e+02 2.895400e+02
-13 18923     5.819000e+02 -1.165600e+02
-15 18923     3.286000e+02 3.165600e+02
-6 18924     3.774900e+02 1.919000e+02
-12 18924     4.646100e+02 2.017200e+02
-6 18925     -4.015600e+02 1.910600e+02
-14 18925     3.209399e+02 -5.166899e+02
-6 18926     -1.075300e+02 1.893300e+02
-14 18926     5.170400e+02 -5.742800e+02
-6 18927     4.980601e+02 1.725000e+02
-9 18927     3.589700e+02 1.153900e+02
-12 18927     5.789900e+02 1.826800e+02
-6 18928     1.310300e+02 1.711500e+02
-12 18928     1.622900e+02 2.192500e+02
-6 18929     3.427600e+02 1.696300e+02
-12 18929     4.318900e+02 1.803900e+02
-6 18930     1.487300e+02 1.629900e+02
-7 18930     9.826001e+01 2.209800e+02
-6 18931     5.266600e+02 1.612000e+02
-8 18931     5.558900e+02 -2.388000e+01
-6 18932     2.857800e+02 1.577100e+02
-7 18932     2.715400e+02 2.112800e+02
-6 18933     5.052900e+02 1.539100e+02
-12 18933     5.860100e+02 1.637700e+02
-6 18934     2.354800e+02 1.460100e+02
-12 18934     2.733500e+02 1.887500e+02
-6 18935     5.386899e+02 1.434600e+02
-12 18935     6.181500e+02 1.532600e+02
-6 18936     -1.317600e+02 1.384800e+02
-7 18936     -1.339500e+02 2.268700e+02
-13 18936     3.260601e+02 -1.230000e+02
-6 18937     -3.569600e+02 1.381900e+02
-9 18937     -2.935200e+02 3.985999e+01
-13 18937     2.173900e+02 -9.394000e+01
-14 18937     3.450100e+02 -5.714399e+02
-6 18938     5.569600e+02 1.363400e+02
-7 18938     5.310601e+02 1.685600e+02
-8 18938     5.801000e+02 -4.042001e+01
-9 18938     4.060000e+02 9.491000e+01
-6 18939     1.798900e+02 1.359800e+02
-10 18939     1.547400e+02 2.172100e+02
-12 18939     2.098800e+02 1.823000e+02
-13 18939     5.541500e+02 -1.656100e+02
-6 18940     5.681200e+02 1.313200e+02
-8 18940     5.874600e+02 -4.348001e+01
-9 18940     4.142400e+02 9.248001e+01
-12 18940     6.466300e+02 1.407000e+02
-6 18941     -9.067999e+01 1.171600e+02
-8 18941     1.065800e+02 3.829999e+01
-12 18941     -6.607001e+01 1.723100e+02
-13 18941     3.494301e+02 -1.434000e+02
-6 18942     1.969300e+02 1.131300e+02
-12 18942     2.260800e+02 1.595000e+02
-6 18943     1.009800e+02 1.124100e+02
-8 18943     2.552100e+02 3.751999e+01
-10 18943     5.759998e+01 2.054700e+02
-6 18944     5.786000e+02 9.934998e+01
-8 18944     5.969399e+02 -6.894000e+01
-12 18944     6.565000e+02 1.085000e+02
-6 18945     1.099800e+02 9.672998e+01
-12 18945     1.304500e+02 1.478500e+02
-6 18946     5.814500e+02 9.529999e+01
-9 18946     4.267500e+02 6.588000e+01
-12 18946     6.591000e+02 1.044700e+02
-6 18947     5.844000e+01 8.797998e+01
-12 18947     7.665002e+01 1.404600e+02
-6 18948     -2.537800e+02 7.991998e+01
-8 18948     -1.914001e+01 -1.354001e+01
-10 18948     -2.052000e+02 2.581600e+02
-6 18949     1.429100e+02 7.644000e+01
-8 18949     2.879400e+02 9.600006e+00
-6 18950     -4.072300e+02 7.177002e+01
-9 18950     -3.279700e+02 -3.800049e-01
-6 18951     -5.800000e+01 7.128003e+01
-12 18951     -3.972998e+01 1.265400e+02
-6 18952     3.728200e+02 5.965002e+01
-7 18952     3.139000e+02 1.135900e+02
-10 18952     3.914500e+02 1.169100e+02
-12 18952     4.233199e+02 8.957001e+01
-13 18952     7.140500e+02 -2.481500e+02
-15 18952     5.450100e+02 1.135400e+02
-6 18953     2.599700e+02 5.870001e+01
-12 18953     2.946600e+02 9.932001e+01
-6 18954     -3.148800e+02 4.514001e+01
-13 18954     1.998300e+02 -1.638900e+02
-6 18955     2.679100e+02 4.421002e+01
-12 18955     3.028500e+02 8.415997e+01
-6 18956     3.776400e+02 4.271997e+01
-7 18956     3.134700e+02 9.801001e+01
-12 18956     4.265900e+02 7.329999e+01
-6 18957     3.503998e+01 4.209003e+01
-8 18957     2.048700e+02 -1.039001e+01
-12 18957     4.959003e+01 9.504999e+01
-6 18958     -1.243700e+02 3.857001e+01
-12 18958     -1.038300e+02 9.482001e+01
-6 18959     2.209998e+01 3.408002e+01
-12 18959     3.570001e+01 8.740002e+01
-6 18960     2.678003e+01 3.228003e+01
-12 18960     3.971997e+01 8.550000e+01
-6 18961     2.835300e+02 2.379999e+01
-8 18961     3.945900e+02 -5.200000e+01
-12 18961     3.196100e+02 6.201001e+01
-6 18962     -4.077600e+02 2.196997e+01
-9 18962     -3.242100e+02 -2.839001e+01
-6 18963     -4.077600e+02 2.196997e+01
-9 18963     -3.242100e+02 -2.839001e+01
-6 18964     -3.010600e+02 1.571002e+01
-12 18964     -2.523100e+02 7.156000e+01
-6 18965     -2.919900e+02 1.216998e+01
-12 18965     -2.459200e+02 6.781000e+01
-6 18966     -3.843800e+02 1.063000e+01
-8 18966     -1.171000e+02 -1.171000e+02
-6 18967     2.601200e+02 7.049988e+00
-12 18967     2.899800e+02 4.739001e+01
-13 18967     6.029600e+02 -2.723100e+02
-6 18968     3.882500e+02 3.739990e+00
-12 18968     4.321801e+02 3.531000e+01
-6 18969     -1.312300e+02 2.000000e+00
-8 18969     7.367999e+01 -4.564001e+01
-12 18969     -1.119700e+02 5.809998e+01
-6 18970     2.574700e+02 1.859985e+00
-7 18970     1.759900e+02 7.119000e+01
-12 18970     2.861500e+02 4.260999e+01
-6 18971     -2.288700e+02 1.130005e+00
-10 18971     -2.279100e+02 1.741300e+02
-12 18971     -1.969400e+02 5.785999e+01
-6 18972     5.221997e+01 8.599854e-01
-10 18972     -1.821997e+01 1.052700e+02
-15 18972     5.287000e+01 9.585001e+01
-6 18973     1.876400e+02 6.500244e-01
-13 18973     5.398700e+02 -2.667000e+02
-6 18974     -1.650800e+02 -2.450012e+00
-8 18974     4.694000e+01 -5.363000e+01
-6 18975     -1.610500e+02 -8.799988e+00
-8 18975     5.013000e+01 -5.751999e+01
-12 18975     -1.387000e+02 4.778998e+01
-6 18976     3.303400e+02 -9.369995e+00
-12 18976     3.649500e+02 2.717999e+01
-6 18977     1.416800e+02 -2.301001e+01
-8 18977     2.879800e+02 -6.406000e+01
-6 18978     -6.444000e+01 -2.633002e+01
-8 18978     1.256800e+02 -6.397998e+01
-6 18979     -9.472000e+01 -2.822998e+01
-12 18979     -8.010999e+01 2.723999e+01
-6 18980     3.734003e+01 -3.203003e+01
-12 18980     4.870001e+01 1.871997e+01
-6 18981     -9.880005e+00 -4.388000e+01
-12 18981     1.820007e+00 9.239990e+00
-6 18982     -1.881900e+02 -4.398999e+01
-12 18982     -1.675500e+02 1.403003e+01
-6 18983     1.467500e+02 -4.406000e+01
-12 18983     1.624100e+02 1.809998e+00
-6 18984     1.731000e+01 -4.679999e+01
-12 18984     2.776001e+01 5.280029e+00
-6 18985     -8.014999e+01 -4.775000e+01
-12 18985     -6.696002e+01 8.250000e+00
-6 18986     -1.857700e+02 -5.515997e+01
-12 18986     -1.677200e+02 3.099976e+00
-6 18987     -1.663600e+02 -5.495001e+01
-8 18987     4.415997e+01 -8.945001e+01
-6 18988     -8.100000e+01 -5.472998e+01
-12 18988     -6.819000e+01 -6.799927e-01
-6 18989     -2.337000e+02 -5.550000e+01
-9 18989     -1.496800e+02 2.509998e+01
-6 18990     -3.366998e+01 -5.853003e+01
-7 18990     -8.921002e+01 4.946002e+01
-8 18990     1.493400e+02 -8.809003e+01
-15 18990     -4.369000e+01 5.346997e+01
-6 18991     3.622500e+02 -8.454999e+01
-12 18991     3.923500e+02 -5.114001e+01
-6 18992     -7.513000e+01 -9.747998e+01
-12 18992     -6.785999e+01 -4.242999e+01
-6 18993     -2.452500e+02 -1.016000e+02
-7 18993     -2.510200e+02 3.866998e+01
-6 18994     1.542100e+02 -1.091400e+02
-12 18994     1.643000e+02 -6.415002e+01
-6 18995     1.436100e+02 -1.110900e+02
-12 18995     1.529400e+02 -6.553003e+01
-6 18996     -2.869100e+02 -1.201800e+02
-8 18996     -5.153003e+01 -1.359600e+02
-12 18996     -2.697800e+02 -5.695001e+01
-6 18997     7.240997e+01 -1.204200e+02
-8 18997     2.340100e+02 -1.329200e+02
-12 18997     7.767999e+01 -7.191998e+01
-6 18998     -2.220900e+02 -1.225800e+02
-8 18998     -5.999756e-01 -1.381100e+02
-6 18999     1.110200e+02 -1.350200e+02
-15 18999     8.459003e+01 -7.095001e+01
-6 19000     -2.479900e+02 -1.493300e+02
-9 19000     -1.534100e+02 -3.959998e+01
-6 19001     2.087500e+02 -1.705601e+02
-7 19001     9.672998e+01 -7.481000e+01
-6 19002     -2.288400e+02 -1.743800e+02
-8 19002     -7.890015e+00 -1.802900e+02
-9 19002     -1.371300e+02 -5.894000e+01
-6 19003     -1.737600e+02 -1.797800e+02
-7 19003     -2.213800e+02 -3.709998e+01
-6 19004     1.403400e+02 -1.977800e+02
-12 19004     1.423200e+02 -1.537000e+02
-13 19004     4.723900e+02 -4.067800e+02
-15 19004     9.129999e+01 -1.519100e+02
-6 19005     1.403400e+02 -1.977800e+02
-12 19005     1.423200e+02 -1.537000e+02
-13 19005     4.723900e+02 -4.067800e+02
-6 19006     2.107100e+02 -1.984900e+02
-8 19006     3.443700e+02 -1.970900e+02
-12 19006     2.169900e+02 -1.581800e+02
-6 19007     2.632500e+02 -2.114000e+02
-12 19007     2.765601e+02 -1.757200e+02
-6 19008     2.842900e+02 -2.178600e+02
-8 19008     4.017900e+02 -2.261800e+02
-6 19009     -3.576001e+01 -2.201700e+02
-12 19009     -3.867999e+01 -1.679800e+02
-6 19010     -5.609998e+01 -2.473800e+02
-12 19010     -5.596997e+01 -1.950900e+02
-6 19011     8.898999e+01 -2.525900e+02
-8 19011     2.460600e+02 -2.408100e+02
-9 19011     1.332700e+02 -9.259998e+01
-6 19012     2.658002e+01 -2.725400e+02
-13 19012     3.797800e+02 -4.413700e+02
-6 19013     1.676800e+02 -2.756801e+02
-8 19013     3.093900e+02 -2.620500e+02
-6 19014     2.868200e+02 -2.793300e+02
-8 19014     4.019200e+02 -2.841900e+02
-6 19015     2.456300e+02 -2.817300e+02
-12 19015     2.604200e+02 -2.476800e+02
-6 19016     1.550000e+01 -2.941600e+02
-9 19016     7.520001e+01 -1.370800e+02
-6 19017     2.403000e+02 -2.939200e+02
-8 19017     3.656900e+02 -2.900300e+02
-12 19017     2.537900e+02 -2.597900e+02
-6 19018     2.403000e+02 -2.939200e+02
-12 19018     2.537900e+02 -2.597900e+02
-6 19019     -8.773001e+01 -3.139100e+02
-13 19019     2.950601e+02 -4.503300e+02
-6 19020     -5.681500e+02 -3.178900e+02
-7 19020     -4.583300e+02 -8.512000e+01
-8 19020     -2.725400e+02 -3.140700e+02
-13 19020     -5.250000e+00 -3.712700e+02
-6 19021     -1.027900e+02 -3.234600e+02
-8 19021     8.798999e+01 -3.057100e+02
-6 19022     7.262000e+01 -3.257200e+02
-12 19022     7.606000e+01 -2.820500e+02
-6 19023     -1.322600e+02 -3.500300e+02
-12 19023     -1.218000e+02 -2.938900e+02
-13 19023     2.628700e+02 -4.681400e+02
-6 19024     -4.350000e+01 -3.535400e+02
-12 19024     -3.722998e+01 -3.033600e+02
-6 19025     1.781500e+02 -3.663199e+02
-12 19025     1.871900e+02 -3.304500e+02
-6 19026     -1.289600e+02 -3.694100e+02
-13 19026     2.629500e+02 -4.820400e+02
-6 19027     3.113000e+01 -3.744200e+02
-12 19027     3.566998e+01 -3.293300e+02
-6 19028     -4.656000e+02 -4.207500e+02
-7 19028     -4.127300e+02 -1.794900e+02
-6 19029     -4.923800e+02 -4.336801e+02
-7 19029     -4.337400e+02 -1.856600e+02
-8 19029     -2.233300e+02 -3.941400e+02
-13 19029     1.844000e+01 -4.615100e+02
-6 19030     -4.927200e+02 -4.377200e+02
-7 19030     -4.354500e+02 -1.890600e+02
-6 19031     1.607500e+02 -4.814301e+02
-12 19031     1.641400e+02 -4.449500e+02
-6 19032     1.448000e+02 -5.081899e+02
-12 19032     1.442200e+02 -4.712400e+02
-6 19033     -3.951400e+02 -5.117500e+02
-7 19033     -3.842300e+02 -2.614700e+02
-6 19034     -3.738700e+02 -5.165800e+02
-9 19034     -2.464900e+02 -3.609300e+02
-10 19034     -4.271500e+02 -2.476500e+02
-13 19034     7.745001e+01 -5.399000e+02
-15 19034     -4.134400e+02 -3.202900e+02
-6 19035     -4.562600e+02 -5.333700e+02
-7 19035     -4.336200e+02 -2.701200e+02
-6 19036     3.832500e+02 -5.443500e+02
-9 19036     3.839500e+02 -3.355100e+02
-6 19037     -2.923800e+02 -5.603000e+02
-15 19037     -3.630000e+02 -3.889000e+02
-6 19038     5.738101e+02 -5.679100e+02
-7 19038     3.693700e+02 -4.475000e+02
-6 19039     -2.158100e+02 -5.833101e+02
-7 19039     -2.722100e+02 -3.443900e+02
-15 19039     -3.058300e+02 -4.365100e+02
-6 19040     -2.123700e+02 -5.877200e+02
-7 19040     -2.697900e+02 -3.480300e+02
-6 19041     -3.462700e+02 -5.952900e+02
-9 19041     -2.145600e+02 -4.125700e+02
-15 19041     -4.289700e+02 -4.109700e+02
-6 19042     -3.553700e+02 -6.043000e+02
-15 19042     -4.403500e+02 -4.172600e+02
-6 19043     4.428800e+02 -6.331200e+02
-9 19043     4.473101e+02 -3.883100e+02
-6 19044     -8.648001e+01 -6.383900e+02
-9 19044     1.339001e+01 -4.267500e+02
-6 19045     -7.800293e-01 -6.771300e+02
-9 19045     9.181000e+01 -4.470699e+02
-6 19046     -7.800293e-01 -6.771300e+02
-9 19046     9.181000e+01 -4.470699e+02
-6 19047     5.723101e+02 -6.848300e+02
-7 19047     3.340100e+02 -5.483000e+02
-6 19048     5.297700e+02 -6.937400e+02
-7 19048     2.952500e+02 -5.499800e+02
-6 19049     4.646000e+02 -6.990400e+02
-7 19049     2.390000e+02 -5.443800e+02
-6 19050     -1.992400e+02 -7.011100e+02
-7 19050     -2.895400e+02 -4.423400e+02
-6 19051     2.858400e+02 -7.170400e+02
-7 19051     8.456000e+01 -5.315300e+02
-6 19052     -1.768200e+02 -7.183300e+02
-7 19052     -2.774800e+02 -4.588500e+02
-6 19053     -1.188400e+02 -7.450000e+02
-7 19053     -2.392000e+02 -4.904500e+02
-6 19054     -2.146300e+02 -7.617400e+02
-7 19054     -3.164200e+02 -4.882900e+02
-6 19055     1.149100e+02 -7.761899e+02
-7 19055     -6.777002e+01 -5.531700e+02
-6 19056     -1.580100e+02 -7.833500e+02
-7 19056     -2.794000e+02 -5.141700e+02
-6 19057     5.721002e+01 -7.994000e+02
-7 19057     -1.190000e+02 -5.624301e+02
-6 19058     5.721002e+01 -7.994000e+02
-7 19058     -1.190000e+02 -5.624301e+02
-10 19058     -2.007800e+02 -6.181100e+02
-6 19059     4.603998e+01 -8.031600e+02
-7 19059     -1.288800e+02 -5.640601e+02
-10 19059     -2.122400e+02 -6.189500e+02
-6 19060     4.603998e+01 -8.031600e+02
-7 19060     -1.288800e+02 -5.640601e+02
-6 19061     -9.792999e+01 -8.194301e+02
-7 19061     -2.433500e+02 -5.532300e+02
-6 19062     -2.022700e+02 8.574600e+02
-8 19062     3.371002e+01 3.893600e+02
-11 19062     3.908900e+02 -6.591998e+01
-6 19063     -1.315200e+02 8.572900e+02
-8 19063     7.984003e+01 3.826400e+02
-6 19064     1.886200e+02 8.394500e+02
-8 19064     2.976000e+02 4.200900e+02
-9 19064     8.690997e+01 5.523600e+02
-11 19064     6.088600e+02 -1.058500e+02
-6 19065     -1.200600e+02 8.330500e+02
-8 19065     8.740997e+01 3.662600e+02
-6 19066     -1.200600e+02 8.330500e+02
-8 19066     8.740997e+01 3.662600e+02
-6 19067     -1.109985e+00 8.314500e+02
-8 19067     1.646200e+02 3.537000e+02
-11 19067     5.635000e+02 -9.042999e+01
-13 19067     5.648101e+02 3.473600e+02
-14 19067     7.674301e+02 -3.528003e+01
-6 19068     -3.929993e+00 8.215100e+02
-8 19068     1.623900e+02 3.467400e+02
-11 19068     5.605900e+02 -9.700000e+01
-13 19068     5.616500e+02 3.411100e+02
-14 19068     7.643400e+02 -4.265002e+01
-6 19069     1.241300e+02 8.112600e+02
-8 19069     2.458400e+02 3.265900e+02
-6 19070     -1.619000e+02 7.965200e+02
-8 19070     5.940997e+01 3.470600e+02
-6 19071     2.597000e+02 7.904500e+02
-8 19071     3.471200e+02 3.928400e+02
-6 19072     -5.926001e+01 7.869600e+02
-8 19072     1.258700e+02 3.307100e+02
-6 19073     -5.425000e+01 7.832600e+02
-8 19073     1.296400e+02 3.274700e+02
-6 19074     -5.184998e+01 7.714900e+02
-11 19074     5.172900e+02 -1.275600e+02
-14 19074     7.160800e+02 -7.801001e+01
-6 19075     4.873999e+01 7.631100e+02
-8 19075     1.970100e+02 3.037200e+02
-9 19075     -3.871997e+01 4.110900e+02
-14 19075     8.123900e+02 -9.363000e+01
-6 19076     4.312500e+02 7.452800e+02
-8 19076     4.730601e+02 3.992700e+02
-6 19077     -3.209000e+02 7.411000e+02
-8 19077     -4.653003e+01 3.273500e+02
-9 19077     -2.880600e+02 4.355900e+02
-6 19078     2.584998e+01 7.347300e+02
-8 19078     1.811300e+02 2.876200e+02
-6 19079     -4.309998e+01 7.329200e+02
-8 19079     1.362200e+02 2.944000e+02
-6 19080     3.801200e+02 7.285000e+02
-9 19080     2.413199e+02 5.221500e+02
-6 19081     -1.213100e+02 7.243500e+02
-9 19081     -1.520800e+02 4.010000e+02
-6 19082     2.260300e+02 7.203000e+02
-8 19082     3.248100e+02 3.441400e+02
-6 19083     5.365800e+02 7.174300e+02
-8 19083     5.492400e+02 3.881000e+02
-9 19083     3.569800e+02 5.321900e+02
-6 19084     5.365800e+02 7.174300e+02
-8 19084     5.492400e+02 3.881000e+02
-9 19084     3.569800e+02 5.321900e+02
-6 19085     -1.059100e+02 7.049100e+02
-9 19085     -1.409100e+02 3.861300e+02
-6 19086     -2.789001e+01 6.924000e+02
-8 19086     1.461400e+02 2.665100e+02
-9 19086     -8.776001e+01 3.705700e+02
-6 19087     5.267600e+02 6.832900e+02
-9 19087     3.519100e+02 5.066400e+02
-6 19088     -1.870400e+02 6.802900e+02
-11 19088     3.971200e+02 -1.806200e+02
-6 19089     1.648400e+02 6.595600e+02
-8 19089     2.822500e+02 2.983200e+02
-13 19089     6.493000e+02 2.190200e+02
-6 19090     -2.963000e+02 6.499300e+02
-12 19090     -1.273500e+02 6.171900e+02
-6 19091     -5.102400e+02 6.364200e+02
-12 19091     -3.339100e+02 6.126500e+02
-6 19092     -2.271100e+02 6.082500e+02
-12 19092     -6.100000e+01 5.760100e+02
-6 19093     -2.271100e+02 6.082500e+02
-8 19093     1.196002e+01 2.306200e+02
-12 19093     -6.100000e+01 5.760100e+02
-6 19094     4.967600e+02 6.055700e+02
-9 19094     3.337900e+02 4.466900e+02
-6 19095     1.950100e+02 5.881200e+02
-7 19095     2.959000e+02 5.841600e+02
-9 19095     1.001100e+02 3.713100e+02
-11 19095     6.127600e+02 -2.924000e+02
-12 19095     3.050800e+02 5.740000e+02
-6 19096     -4.502200e+02 5.877600e+02
-9 19096     -3.782600e+02 3.368800e+02
-11 19096     1.744800e+02 -2.214400e+02
-14 19096     3.451000e+02 -1.855300e+02
-6 19097     -1.964900e+02 5.772900e+02
-12 19097     -3.128998e+01 5.467900e+02
-6 19098     -1.978100e+02 5.679300e+02
-12 19098     -3.239001e+01 5.384900e+02
-6 19099     -3.951300e+02 5.663000e+02
-9 19099     -3.394400e+02 3.158600e+02
-12 19099     -2.241200e+02 5.454200e+02
-6 19100     5.005300e+02 5.561200e+02
-9 19100     3.390800e+02 4.107000e+02
-12 19100     5.810699e+02 5.664400e+02
-6 19101     -2.386100e+02 5.510100e+02
-8 19101     3.159973e+00 1.936600e+02
-9 19101     -2.295700e+02 2.884100e+02
-14 19101     5.269399e+02 -2.376400e+02
-6 19102     -2.312100e+02 5.493400e+02
-12 19102     -6.459998e+01 5.231100e+02
-6 19103     -2.312100e+02 5.493400e+02
-8 19103     7.559998e+00 1.910900e+02
-9 19103     -2.259000e+02 2.855500e+02
-12 19103     -6.459998e+01 5.231100e+02
-6 19104     -3.195500e+02 5.470800e+02
-12 19104     -1.542200e+02 5.273400e+02
-6 19105     3.249100e+02 5.390400e+02
-8 19105     3.961500e+02 2.256200e+02
-9 19105     1.991400e+02 3.511900e+02
-6 19106     -4.272700e+02 5.292700e+02
-12 19106     -2.542900e+02 5.138100e+02
-6 19107     -2.230600e+02 5.266800e+02
-7 19107     -2.580017e+00 5.583200e+02
-14 19107     5.378500e+02 -2.600200e+02
-6 19108     -4.378800e+02 5.138700e+02
-12 19108     -2.651400e+02 5.005000e+02
-6 19109     -1.857100e+02 5.145500e+02
-9 19109     -1.934400e+02 2.547800e+02
-12 19109     -2.112000e+01 4.895300e+02
-6 19110     -1.857100e+02 5.145500e+02
-9 19110     -1.934400e+02 2.547800e+02
-12 19110     -2.112000e+01 4.895300e+02
-6 19111     -1.436800e+02 4.980900e+02
-8 19111     6.572998e+01 1.465600e+02
-14 19111     6.091700e+02 -2.929000e+02
-6 19112     -4.514800e+02 4.937200e+02
-12 19112     -2.781600e+02 4.828100e+02
-6 19113     4.018500e+02 4.943200e+02
-9 19113     2.688900e+02 3.533300e+02
-10 19113     6.070400e+02 5.817000e+02
-11 19113     7.323800e+02 -4.044600e+02
-12 19113     4.860000e+02 5.016100e+02
-6 19114     5.129900e+02 4.568500e+02
-12 19114     5.936400e+02 4.671100e+02
-6 19115     -1.838000e+01 4.030300e+02
-14 19115     7.050601e+02 -3.929800e+02
-6 19116     -4.994900e+02 3.980100e+02
-8 19116     -1.796500e+02 1.168600e+02
-9 19116     -4.148800e+02 2.000300e+02
-6 19117     3.458000e+02 3.942900e+02
-8 19117     4.176000e+02 1.416900e+02
-6 19118     2.570200e+02 3.732900e+02
-7 19118     3.320900e+02 4.004800e+02
-8 19118     3.496100e+02 1.008100e+02
-13 19118     6.960800e+02 5.880005e+00
-15 19118     6.769900e+02 5.577800e+02
-6 19119     -4.219800e+02 3.724900e+02
-9 19119     -3.594200e+02 1.702800e+02
-6 19120     -4.491800e+02 3.468400e+02
-8 19120     -1.473000e+02 7.367001e+01
-9 19120     -3.791400e+02 1.529600e+02
-11 19120     1.565800e+02 -3.829100e+02
-12 19120     -2.759700e+02 3.495500e+02
-6 19121     4.789301e+02 3.332100e+02
-9 19121     3.356300e+02 2.397000e+02
-6 19122     5.559301e+02 3.250300e+02
-8 19122     5.750000e+02 1.042400e+02
-9 19122     3.938500e+02 2.432500e+02
-6 19123     -2.055400e+02 3.001000e+02
-11 19123     3.067100e+02 -4.527600e+02
-12 19123     -6.384998e+01 3.064700e+02
-15 19123     1.702300e+02 5.529200e+02
-6 19124     -2.724000e+02 2.838000e+02
-11 19124     2.527900e+02 -4.543200e+02
-13 19124     3.012600e+02 -3.710022e+00
-14 19124     4.517100e+02 -4.583101e+02
-6 19125     -2.770700e+02 2.689800e+02
-7 19125     -9.475000e+01 3.580700e+02
-11 19125     2.430800e+02 -4.648400e+02
-13 19125     2.950200e+02 -1.359003e+01
-6 19126     3.542800e+02 2.627900e+02
-12 19126     4.423600e+02 2.727300e+02
-6 19127     3.837300e+02 2.629000e+02
-7 19127     4.040800e+02 2.946200e+02
-8 19127     4.470601e+02 4.551001e+01
-9 19127     2.661300e+02 1.728900e+02
-6 19128     4.191900e+02 2.595100e+02
-9 19128     2.938800e+02 1.746200e+02
-6 19129     4.041500e+02 2.586000e+02
-9 19129     2.822200e+02 1.721000e+02
-15 19129     7.708500e+02 3.792300e+02
-6 19130     4.041500e+02 2.586000e+02
-8 19130     4.622300e+02 4.379001e+01
-12 19130     4.895300e+02 2.678200e+02
-6 19131     5.458000e+02 2.572800e+02
-9 19131     3.897400e+02 1.893000e+02
-6 19132     -2.483200e+02 2.147600e+02
-7 19132     -8.553003e+01 3.130100e+02
-11 19132     2.410800e+02 -5.116400e+02
-13 19132     3.059500e+02 -5.319000e+01
-14 19132     4.576300e+02 -5.228199e+02
-6 19133     1.277700e+02 2.147800e+02
-12 19133     1.714600e+02 2.578200e+02
-6 19134     3.298500e+02 2.113600e+02
-12 19134     4.197500e+02 2.217500e+02
-6 19135     5.760699e+02 2.109300e+02
-8 19135     5.916100e+02 1.784000e+01
-9 19135     4.151700e+02 1.564100e+02
-6 19136     1.666600e+02 2.047300e+02
-12 19136     2.055200e+02 2.492900e+02
-6 19137     3.596400e+02 1.874200e+02
-7 19137     3.806000e+02 2.339000e+02
-6 19138     3.596400e+02 1.874200e+02
-10 19138     5.254800e+02 2.786700e+02
-13 19138     7.503800e+02 -1.461700e+02
-15 19138     7.133600e+02 3.057100e+02
-6 19139     2.856700e+02 1.577200e+02
-12 19139     3.507500e+02 1.851600e+02
-6 19140     5.658000e+02 1.578800e+02
-7 19140     5.393101e+02 1.853000e+02
-6 19141     3.441700e+02 1.471100e+02
-15 19141     6.919500e+02 2.636400e+02
-6 19142     1.330000e+02 1.462400e+02
-12 19142     1.602700e+02 1.955500e+02
-6 19143     2.424000e+02 1.384200e+02
-12 19143     2.809200e+02 1.803800e+02
-6 19144     4.463199e+02 1.240500e+02
-7 19144     4.432800e+02 1.714300e+02
-6 19145     4.463199e+02 1.240500e+02
-7 19145     4.432800e+02 1.714300e+02
-12 19145     5.292300e+02 1.350400e+02
-15 19145     7.960699e+02 2.084900e+02
-6 19146     5.634700e+02 1.242600e+02
-8 19146     5.849500e+02 -4.985001e+01
-12 19146     6.422600e+02 1.335500e+02
-6 19147     -1.454900e+02 1.225300e+02
-9 19147     -8.596002e+01 1.664600e+02
-6 19148     5.406899e+02 1.141300e+02
-9 19148     3.946801e+02 7.523999e+01
-10 19148     6.784700e+02 1.634200e+02
-12 19148     6.197900e+02 1.239400e+02
-6 19149     1.837900e+02 1.066000e+02
-7 19149     1.201800e+02 1.689400e+02
-8 19149     3.185300e+02 2.635999e+01
-13 19149     5.525300e+02 -1.867200e+02
-15 19149     2.508600e+02 1.949500e+02
-6 19150     2.538100e+02 1.056200e+02
-12 19150     2.900601e+02 1.468000e+02
-6 19151     4.293900e+02 1.054200e+02
-7 19151     4.290200e+02 1.582700e+02
-10 19151     5.753600e+02 1.828500e+02
-12 19151     5.132100e+02 1.167100e+02
-13 19151     7.980601e+02 -2.181600e+02
-15 19151     7.747400e+02 1.927400e+02
-6 19152     2.468400e+02 1.042900e+02
-12 19152     2.814500e+02 1.478100e+02
-6 19153     1.309100e+02 8.337000e+01
-8 19153     2.785200e+02 1.557001e+01
-12 19153     1.517600e+02 1.333500e+02
-6 19154     -1.128003e+01 7.625000e+01
-8 19154     1.687500e+02 1.392999e+01
-6 19155     -2.666300e+02 6.894000e+01
-8 19155     -2.965002e+01 -1.937000e+01
-6 19156     -3.510300e+02 6.789001e+01
-12 19156     -2.882600e+02 1.211800e+02
-6 19157     -2.917800e+02 6.115997e+01
-12 19157     -2.337100e+02 1.131100e+02
-6 19158     -4.447600e+02 5.798999e+01
-9 19158     -3.564100e+02 -9.419983e+00
-6 19159     -1.949400e+02 4.987000e+01
-7 19159     -1.892100e+02 1.592600e+02
-12 19159     -1.634000e+02 1.052800e+02
-6 19160     1.820500e+02 3.128998e+01
-8 19160     3.187400e+02 -2.612000e+01
-6 19161     2.158002e+01 2.101001e+01
-12 19161     3.454999e+01 7.419000e+01
-6 19162     -2.288100e+02 2.010999e+01
-12 19162     -1.925900e+02 7.583002e+01
-6 19163     2.829400e+02 1.829999e+01
-12 19163     3.189200e+02 5.626001e+01
-6 19164     -2.242999e+01 1.596997e+01
-8 19164     1.597100e+02 -3.029001e+01
-12 19164     -9.200012e+00 7.028998e+01
-6 19165     -1.728600e+02 1.559998e+00
-8 19165     4.113000e+01 -5.112000e+01
-6 19166     4.598400e+02 -1.590027e+00
-7 19166     4.301200e+02 6.322998e+01
-12 19166     5.340200e+02 1.366998e+01
-6 19167     1.293500e+02 -9.559998e+00
-12 19167     1.443500e+02 3.790002e+01
-6 19168     -3.034400e+02 -1.690997e+01
-8 19168     -5.990002e+01 -7.600000e+01
-6 19169     -1.317600e+02 -3.296002e+01
-8 19169     7.222998e+01 -7.322998e+01
-6 19170     1.253000e+02 -3.340997e+01
-8 19170     2.750800e+02 -7.142999e+01
-6 19171     4.619200e+02 -3.502002e+01
-12 19171     5.337500e+02 -1.833002e+01
-6 19172     -2.689001e+01 -3.615997e+01
-8 19172     1.542800e+02 -7.083002e+01
-12 19172     -1.540997e+01 1.778003e+01
-6 19173     3.900300e+02 -3.903003e+01
-7 19173     2.979500e+02 2.389001e+01
-12 19173     4.280601e+02 -6.979980e+00
-6 19174     -1.775700e+02 -4.306000e+01
-12 19174     -1.580500e+02 1.434998e+01
-6 19175     3.129200e+02 -4.496002e+01
-12 19175     3.428101e+02 -8.020020e+00
-6 19176     -1.676000e+02 -5.000000e+01
-12 19176     -1.494400e+02 7.330017e+00
-6 19177     1.253000e+02 -6.445001e+01
-8 19177     2.750900e+02 -9.613000e+01
-12 19177     1.391900e+02 -1.750000e+01
-6 19178     -5.533002e+01 -7.859998e+01
-10 19178     -1.217200e+02 5.617999e+01
-6 19179     -9.320007e+00 -8.294000e+01
-8 19179     1.682800e+02 -1.087400e+02
-6 19180     -1.001300e+02 -9.023999e+01
-12 19180     -9.091998e+01 -3.427002e+01
-6 19181     3.842000e+02 -9.547998e+01
-8 19181     4.756700e+02 -1.406400e+02
-12 19181     4.162300e+02 -6.346002e+01
-6 19182     7.883002e+01 -1.317700e+02
-8 19182     2.390000e+02 -1.429000e+02
-6 19183     1.839300e+02 -1.319300e+02
-12 19183     1.960000e+02 -8.967999e+01
-6 19184     2.487800e+02 -1.506200e+02
-8 19184     3.734900e+02 -1.662100e+02
-6 19185     -2.758800e+02 -1.669700e+02
-7 19185     -2.740300e+02 -9.760010e+00
-9 19185     -1.786500e+02 -6.469000e+01
-12 19185     -2.539100e+02 -1.053400e+02
-6 19186     -2.240200e+02 -1.709000e+02
-7 19186     -2.449100e+02 -2.065997e+01
-12 19186     -2.116500e+02 -1.104100e+02
-6 19187     -1.683200e+02 -1.795100e+02
-8 19187     4.048999e+01 -1.742800e+02
-6 19188     8.073999e+01 -1.876000e+02
-12 19188     8.203003e+01 -1.405600e+02
-6 19189     4.060999e+01 -1.995200e+02
-7 19189     -5.383002e+01 -7.953998e+01
-10 19189     -7.940997e+01 -8.358002e+01
-12 19189     3.919000e+01 -1.509200e+02
-6 19190     3.509700e+02 -2.115400e+02
-12 19190     3.810000e+02 -1.818200e+02
-6 19191     -5.737000e+01 -2.128300e+02
-7 19191     -1.328500e+02 -7.839001e+01
-12 19191     -5.946002e+01 -1.597000e+02
-15 19191     -1.169600e+02 -1.128500e+02
-6 19192     -1.533000e+02 -2.278700e+02
-8 19192     5.100000e+01 -2.190300e+02
-6 19193     3.472700e+02 -2.433199e+02
-12 19193     3.769700e+02 -2.150200e+02
-6 19194     3.472700e+02 -2.433199e+02
-7 19194     2.400200e+02 -1.413800e+02
-12 19194     3.769700e+02 -2.150200e+02
-6 19195     -5.159973e+00 -2.873600e+02
-8 19195     1.680600e+02 -2.691500e+02
-6 19196     1.673100e+02 -2.886899e+02
-8 19196     3.087800e+02 -2.739900e+02
-6 19197     -5.760999e+01 -2.920800e+02
-8 19197     1.260800e+02 -2.753900e+02
-12 19197     -5.434003e+01 -2.404900e+02
-6 19198     -1.284700e+02 -2.958199e+02
-7 19198     -1.775200e+02 -1.320000e+02
-8 19198     6.889001e+01 -2.814400e+02
-9 19198     -4.845001e+01 -1.558300e+02
-6 19199     -1.930900e+02 -3.017400e+02
-7 19199     -2.176900e+02 -1.248400e+02
-9 19199     -1.070000e+02 -1.772200e+02
-12 19199     -1.772300e+02 -2.420500e+02
-13 19199     2.279900e+02 -4.230500e+02
-6 19200     2.465900e+02 -3.044900e+02
-12 19200     2.615400e+02 -2.710100e+02
-6 19201     2.465900e+02 -3.044900e+02
-12 19201     2.615400e+02 -2.710100e+02
-6 19202     2.149400e+02 -3.069301e+02
-8 19202     3.441200e+02 -3.017500e+02
-12 19202     2.273199e+02 -2.713400e+02
-6 19203     2.118000e+02 -3.150699e+02
-8 19203     3.425700e+02 -3.074100e+02
-6 19204     2.118000e+02 -3.150699e+02
-8 19204     3.425700e+02 -3.074100e+02
-6 19205     3.017500e+02 -3.183800e+02
-12 19205     3.220100e+02 -2.886600e+02
-6 19206     -7.758002e+01 -3.301600e+02
-7 19206     -1.420200e+02 -1.658200e+02
-8 19206     1.082200e+02 -3.092200e+02
-6 19207     5.015002e+01 -3.499800e+02
-12 19207     5.515997e+01 -3.053300e+02
-6 19208     -5.177700e+02 -3.623700e+02
-7 19208     -4.350100e+02 -1.263900e+02
-13 19208     1.642999e+01 -4.089100e+02
-6 19209     -5.177700e+02 -3.623700e+02
-9 19209     -3.829300e+02 -2.667900e+02
-13 19209     1.642999e+01 -4.089100e+02
-6 19210     -4.451000e+02 -4.581000e+02
-9 19210     -3.129800e+02 -3.259100e+02
-6 19211     1.576600e+02 -4.707700e+02
-12 19211     1.612800e+02 -4.338400e+02
-6 19212     1.829100e+02 -4.782100e+02
-12 19212     1.871200e+02 -4.432900e+02
-6 19213     3.991800e+02 -5.247000e+02
-7 19213     2.338199e+02 -3.845000e+02
-6 19214     -2.941000e+02 -5.654500e+02
-15 19214     -3.672400e+02 -3.943000e+02
-6 19215     -2.158200e+02 -6.241500e+02
-9 19215     -9.814001e+01 -4.252400e+02
-6 19216     3.684700e+02 -6.238800e+02
-7 19216     1.802000e+02 -4.653500e+02
-12 19216     3.620601e+02 -6.058800e+02
-6 19217     4.328600e+02 -6.866000e+02
-7 19217     2.157900e+02 -5.283700e+02
-6 19218     -1.088600e+02 -7.002800e+02
-7 19218     -2.216600e+02 -4.546801e+02
-6 19219     -9.904999e+01 -7.050601e+02
-7 19219     -2.153000e+02 -4.607900e+02
-6 19220     4.807001e+01 -8.286899e+02
-9 19220     1.566200e+02 -5.492300e+02
-6 19221     -8.392999e+01 -8.353500e+02
-7 19221     -2.373400e+02 -5.681600e+02
-6 19222     2.706900e+02 8.759400e+02
-8 19222     3.533200e+02 4.479400e+02
-6 19223     6.725000e+01 8.604800e+02
-8 19223     2.084300e+02 3.644200e+02
-6 19224     -2.604400e+02 8.567200e+02
-8 19224     -3.539978e+00 3.948500e+02
-6 19225     -2.604400e+02 8.567200e+02
-8 19225     -3.539978e+00 3.948500e+02
-6 19226     -2.209003e+01 8.478400e+02
-11 19226     5.447900e+02 -7.934003e+01
-6 19227     1.628900e+02 8.439100e+02
-9 19227     6.765997e+01 5.522800e+02
-11 19227     5.905300e+02 -9.989001e+01
-6 19228     -1.372000e+02 8.385000e+02
-8 19228     7.609998e+01 3.709100e+02
-6 19229     -4.461700e+02 8.228400e+02
-8 19229     -1.255200e+02 3.918100e+02
-6 19230     1.923500e+02 8.161400e+02
-8 19230     2.999200e+02 4.051100e+02
-9 19230     8.919000e+01 5.355400e+02
-11 19230     6.101400e+02 -1.212800e+02
-6 19231     4.460300e+02 8.075900e+02
-8 19231     4.814900e+02 4.369600e+02
-6 19232     -4.948000e+02 7.807400e+02
-8 19232     -1.589300e+02 3.703700e+02
-6 19233     -6.572998e+01 7.684200e+02
-13 19233     5.103500e+02 3.086400e+02
-6 19234     -6.572998e+01 7.684200e+02
-9 19234     -1.150000e+02 4.276500e+02
-13 19234     5.103500e+02 3.086400e+02
-6 19235     -4.726300e+02 7.086900e+02
-8 19235     -1.476300e+02 3.213800e+02
-6 19236     -3.229500e+02 7.051200e+02
-8 19236     -4.860999e+01 3.051000e+02
-6 19237     -3.507001e+01 7.008200e+02
-8 19237     1.413100e+02 2.722200e+02
-6 19238     4.542800e+02 6.852500e+02
-9 19238     2.983101e+02 4.993200e+02
-6 19239     -1.817100e+02 6.672200e+02
-8 19239     4.325000e+01 2.648900e+02
-6 19240     -1.010800e+02 6.388000e+02
-12 19240     6.082001e+01 5.984300e+02
-6 19241     -1.010800e+02 6.388000e+02
-8 19241     9.765002e+01 2.388300e+02
-12 19241     6.082001e+01 5.984300e+02
-6 19242     -2.279800e+02 6.324600e+02
-8 19242     1.170001e+01 2.470600e+02
-9 19242     -2.237400e+02 3.459500e+02
-11 19242     3.574600e+02 -2.106600e+02
-12 19242     -6.304999e+01 5.987800e+02
-6 19243     -1.758000e+02 6.292700e+02
-12 19243     -1.095001e+01 5.922600e+02
-6 19244     -1.305000e+02 6.182100e+02
-12 19244     3.210999e+01 5.816000e+02
-6 19245     4.882400e+02 5.975300e+02
-12 19245     5.689100e+02 6.080700e+02
-6 19246     -4.039800e+02 5.955800e+02
-12 19246     -2.322700e+02 5.724100e+02
-6 19247     -4.039800e+02 5.955800e+02
-9 19247     -3.457600e+02 3.390700e+02
-12 19247     -2.322700e+02 5.724100e+02
-6 19248     -3.517000e+02 5.513100e+02
-12 19248     -1.827900e+02 5.300000e+02
-6 19249     4.669301e+02 5.402900e+02
-7 19249     4.867400e+02 5.243900e+02
-12 19249     5.481200e+02 5.497000e+02
-6 19250     4.669301e+02 5.402900e+02
-7 19250     4.867400e+02 5.243900e+02
-12 19250     5.481200e+02 5.497000e+02
-6 19251     -5.307300e+02 5.336900e+02
-8 19251     -1.942100e+02 2.120600e+02
-6 19252     3.512900e+02 5.268800e+02
-8 19252     4.203300e+02 2.391400e+02
-9 19252     2.287700e+02 3.711000e+02
-6 19253     2.575600e+02 5.069000e+02
-7 19253     3.394500e+02 5.118300e+02
-9 19253     1.500800e+02 3.196700e+02
-11 19253     6.578000e+02 -3.643300e+02
-6 19254     1.727500e+02 5.040800e+02
-9 19254     8.637000e+01 3.072600e+02
-12 19254     2.824100e+02 4.966300e+02
-6 19255     3.490997e+01 5.013400e+02
-13 19255     5.584900e+02 1.188000e+02
-6 19256     3.242999e+01 4.949100e+02
-7 19256     2.056899e+02 5.158600e+02
-13 19256     5.564399e+02 1.143400e+02
-6 19257     4.318300e+02 4.939600e+02
-9 19257     2.918500e+02 3.562800e+02
-12 19257     5.149399e+02 5.026800e+02
-6 19258     -4.848700e+02 4.802500e+02
-12 19258     -3.101000e+02 4.715000e+02
-6 19259     -5.192200e+02 4.778900e+02
-12 19259     -3.432300e+02 4.704800e+02
-6 19260     2.929200e+02 4.692100e+02
-8 19260     3.743500e+02 1.731400e+02
-9 19260     1.781700e+02 2.952200e+02
-12 19260     3.942200e+02 4.644700e+02
-6 19261     1.443900e+02 4.357600e+02
-13 19261     6.166200e+02 6.137000e+01
-6 19262     1.928700e+02 4.163200e+02
-8 19262     3.028900e+02 1.288400e+02
-13 19262     6.530800e+02 4.192999e+01
-6 19263     1.809700e+02 4.119600e+02
-8 19263     2.949400e+02 1.246600e+02
-12 19263     2.932500e+02 4.074000e+02
-6 19264     3.720900e+02 4.103200e+02
-7 19264     4.035300e+02 4.206300e+02
-8 19264     4.366400e+02 1.557700e+02
-9 19264     2.501100e+02 2.857200e+02
-12 19264     4.585500e+02 4.174600e+02
-13 19264     7.783300e+02 2.014001e+01
-15 19264     7.594301e+02 5.704700e+02
-6 19265     2.279200e+02 3.813600e+02
-7 19265     3.099301e+02 4.102500e+02
-8 19265     3.277000e+02 1.054800e+02
-10 19265     4.703500e+02 5.060300e+02
-13 19265     6.738800e+02 1.489001e+01
-6 19266     2.508100e+02 3.515900e+02
-7 19266     3.251899e+02 3.817400e+02
-8 19266     3.448500e+02 8.512000e+01
-12 19266     3.562000e+02 3.509300e+02
-6 19267     2.544000e+02 3.391400e+02
-7 19267     3.277000e+02 3.714000e+02
-6 19268     4.106200e+02 3.351600e+02
-12 19268     4.960300e+02 3.424800e+02
-6 19269     1.863100e+02 3.330100e+02
-7 19269     2.760400e+02 3.731100e+02
-13 19269     6.386200e+02 -1.600000e+01
-15 19269     5.978900e+02 5.254700e+02
-6 19270     2.507400e+02 3.299100e+02
-7 19270     3.239000e+02 3.652300e+02
-6 19271     1.982800e+02 3.269800e+02
-7 19271     2.846600e+02 3.670700e+02
-13 19271     6.469700e+02 -2.196002e+01
-15 19271     6.086500e+02 5.156800e+02
-6 19272     1.920000e+02 3.237200e+02
-7 19272     2.800601e+02 3.642700e+02
-13 19272     6.425400e+02 -2.432001e+01
-15 19272     6.026000e+02 5.114700e+02
-6 19273     -5.550200e+02 3.165700e+02
-7 19273     -2.969400e+02 4.120700e+02
-11 19273     6.981000e+01 -3.914500e+02
-12 19273     -3.777400e+02 3.271400e+02
-6 19274     -8.335999e+01 3.170800e+02
-13 19274     4.400400e+02 9.997559e-02
-14 19274     6.277700e+02 -4.598600e+02
-6 19275     4.252400e+02 3.149200e+02
-9 19275     2.959000e+02 2.186500e+02
-10 19275     6.022100e+02 3.911200e+02
-6 19276     -4.755200e+02 3.136100e+02
-7 19276     -2.310800e+02 4.061000e+02
-8 19276     -1.675100e+02 5.366000e+01
-6 19277     -1.812000e+02 2.838200e+02
-13 19277     3.651700e+02 -1.284003e+01
-6 19278     5.762400e+02 2.820700e+02
-8 19278     5.909200e+02 7.314001e+01
-9 19278     4.118600e+02 2.122500e+02
-10 19278     7.399200e+02 3.262600e+02
-6 19279     -2.152700e+02 2.702500e+02
-11 19279     2.867400e+02 -4.733800e+02
-6 19280     -2.280800e+02 2.429700e+02
-10 19280     2.232001e+01 4.462100e+02
-6 19281     3.814100e+02 2.312100e+02
-7 19281     4.002600e+02 2.685000e+02
-8 19281     4.457900e+02 2.131000e+01
-10 19281     5.508000e+02 3.171600e+02
-12 19281     4.679399e+02 2.407000e+02
-15 19281     7.430300e+02 3.522600e+02
-6 19282     5.843600e+02 2.201400e+02
-8 19282     5.990000e+02 2.616000e+01
-6 19283     4.690300e+02 1.875300e+02
-8 19283     5.123199e+02 -6.670013e+00
-9 19283     3.363300e+02 1.239500e+02
-12 19283     5.512300e+02 1.978100e+02
-6 19284     5.360699e+02 1.627600e+02
-12 19284     6.160300e+02 1.726400e+02
-6 19285     -4.129999e+01 1.375900e+02
-8 19285     1.451100e+02 5.398001e+01
-6 19286     5.529200e+02 1.276400e+02
-12 19286     6.318000e+02 1.373000e+02
-6 19287     9.067999e+01 1.261500e+02
-12 19287     1.137100e+02 1.775000e+02
-6 19288     5.268300e+02 1.141100e+02
-12 19288     6.063500e+02 1.238900e+02
-6 19289     -1.871400e+02 1.110000e+02
-12 19289     -1.516300e+02 1.654200e+02
-6 19290     4.393199e+02 1.019700e+02
-15 19290     7.846801e+02 1.861600e+02
-6 19291     -4.214300e+02 9.590997e+01
-7 19291     -2.480300e+02 2.300000e+02
-8 19291     -1.406600e+02 -6.669000e+01
-9 19291     -3.411100e+02 1.259998e+01
-6 19292     5.555400e+02 9.094000e+01
-12 19292     6.337500e+02 1.007800e+02
-6 19293     1.262600e+02 7.695001e+01
-8 19293     2.764800e+02 1.103000e+01
-6 19294     5.685500e+02 7.354999e+01
-8 19294     5.891400e+02 -8.964001e+01
-10 19294     6.967100e+02 1.165000e+02
-12 19294     6.464700e+02 8.291998e+01
-6 19295     -4.706700e+02 6.102002e+01
-7 19295     -2.925700e+02 2.077900e+02
-6 19296     1.364400e+02 3.669000e+01
-8 19296     2.830300e+02 -1.809000e+01
-12 19296     1.545500e+02 8.571002e+01
-6 19297     -4.008100e+02 2.697998e+01
-9 19297     -3.199700e+02 -2.545001e+01
-6 19298     -5.250000e+01 -5.940002e+00
-12 19298     -3.976001e+01 4.964001e+01
-6 19299     -1.773800e+02 -2.840002e+01
-12 19299     -1.536000e+02 2.870001e+01
-6 19300     9.979980e+00 -2.896002e+01
-12 19300     2.103998e+01 2.331000e+01
-6 19301     1.919600e+02 -3.114001e+01
-7 19301     1.074400e+02 4.764001e+01
-12 19301     2.118800e+02 1.321002e+01
-6 19302     -6.882001e+01 -3.716998e+01
-12 19302     -5.596002e+01 1.810999e+01
-6 19303     1.251400e+02 -4.359003e+01
-12 19303     1.398700e+02 3.460022e+00
-6 19304     7.453998e+01 -4.603998e+01
-13 19304     4.455601e+02 -2.837400e+02
-6 19305     -1.238000e+02 -6.994000e+01
-12 19305     -1.106300e+02 -1.334998e+01
-6 19306     -1.077900e+02 -7.252002e+01
-8 19306     9.146002e+01 -1.014200e+02
-12 19306     -9.459998e+01 -1.708002e+01
-6 19307     4.909003e+01 -7.412000e+01
-7 19307     -2.378003e+01 2.684998e+01
-8 19307     2.147600e+02 -1.006600e+02
-13 19307     4.230000e+02 -3.000700e+02
-6 19308     -8.612000e+01 -8.408002e+01
-8 19308     1.070600e+02 -1.076600e+02
-12 19308     -7.564001e+01 -2.879999e+01
-6 19309     1.562900e+02 -1.028900e+02
-8 19309     3.016300e+02 -1.244300e+02
-12 19309     1.673200e+02 -5.798999e+01
-6 19310     7.590997e+01 -1.065600e+02
-12 19310     8.414001e+01 -5.863000e+01
-6 19311     -2.110999e+01 -1.083000e+02
-12 19311     -1.542999e+01 -5.522998e+01
-6 19312     -8.931000e+01 -1.634700e+02
-12 19312     -8.484998e+01 -1.080100e+02
-6 19313     -9.314001e+01 -1.684700e+02
-10 19313     -1.812600e+02 -2.117999e+01
-12 19313     -9.065002e+01 -1.134200e+02
-15 19313     -1.358800e+02 -5.450000e+01
-6 19314     -9.314001e+01 -1.684700e+02
-10 19314     -1.812600e+02 -2.117999e+01
-12 19314     -9.065002e+01 -1.134200e+02
-15 19314     -1.358800e+02 -5.450000e+01
-6 19315     3.404500e+02 -2.445200e+02
-12 19315     3.686801e+02 -2.150600e+02
-6 19316     3.520400e+02 -2.478600e+02
-12 19316     3.833700e+02 -2.196200e+02
-6 19317     3.279900e+02 -2.505400e+02
-12 19317     3.540900e+02 -2.213600e+02
-6 19318     7.984998e+01 -2.570699e+02
-9 19318     1.255100e+02 -9.876001e+01
-13 19318     4.205800e+02 -4.395300e+02
-6 19319     1.603100e+02 -3.003800e+02
-8 19319     3.021700e+02 -2.876600e+02
-9 19319     1.898300e+02 -1.397500e+02
-12 19319     1.659200e+02 -2.618000e+02
-6 19320     -5.879999e+01 -3.324399e+02
-8 19320     1.235500e+02 -3.111000e+02
-9 19320     1.145001e+01 -1.799100e+02
-6 19321     2.627700e+02 -3.347100e+02
-12 19321     2.812500e+02 -3.023600e+02
-6 19322     3.291500e+02 -3.594100e+02
-8 19322     4.361700e+02 -3.514900e+02
-6 19323     -4.691700e+02 -3.642900e+02
-7 19323     -4.009700e+02 -1.339200e+02
-6 19324     1.613100e+02 -3.742500e+02
-12 19324     1.682000e+02 -3.361600e+02
-6 19325     -5.321300e+02 -4.095100e+02
-7 19325     -4.569800e+02 -1.626100e+02
-8 19325     -2.522900e+02 -3.764500e+02
-13 19325     -1.419983e+00 -4.389800e+02
-6 19326     -3.099976e+00 -4.225500e+02
-13 19326     3.442000e+02 -5.458800e+02
-6 19327     -4.625900e+02 -4.309100e+02
-8 19327     -2.000700e+02 -3.936500e+02
-6 19328     -5.210200e+02 -4.516899e+02
-7 19328     -4.590200e+02 -1.970100e+02
-6 19329     -3.986800e+02 -4.972800e+02
-7 19329     -3.846000e+02 -2.490600e+02
-9 19329     -2.709000e+02 -3.489100e+02
-15 19329     -4.283800e+02 -2.937500e+02
-6 19330     -2.819300e+02 -5.463199e+02
-15 19330     -3.472400e+02 -3.765400e+02
-6 19331     -3.930400e+02 -5.583600e+02
-7 19331     -3.947900e+02 -2.994400e+02
-6 19332     -3.202500e+02 -5.665300e+02
-15 19332     -3.905200e+02 -3.870200e+02
-6 19333     -3.554800e+02 -6.069800e+02
-9 19333     -2.222500e+02 -4.217500e+02
-6 19334     -9.257001e+01 -6.167100e+02
-9 19334     5.179993e+00 -4.124200e+02
-6 19335     -2.547300e+02 -6.383600e+02
-9 19335     -1.307800e+02 -4.372500e+02
-6 19336     -1.237200e+02 -6.470900e+02
-9 19336     -1.721002e+01 -4.352200e+02
-6 19337     5.345200e+02 -6.846100e+02
-7 19337     3.022100e+02 -5.426700e+02
-9 19337     5.294800e+02 -4.144500e+02
-6 19338     -1.441600e+02 -7.409900e+02
-9 19338     -2.209998e+01 -5.008600e+02
-6 19339     -1.541500e+02 -7.958800e+02
-7 19339     -2.799800e+02 -5.253800e+02
-6 19340     3.612000e+01 -8.001700e+02
-7 19340     -1.358200e+02 -5.597800e+02
-9 19340     1.425800e+02 -5.290200e+02
-6 19341     2.984003e+01 -8.076400e+02
-7 19341     -1.420200e+02 -5.651700e+02
-6 19342     -1.142200e+02 -8.197700e+02
-7 19342     -2.561600e+02 -5.508400e+02
-6 19343     3.721997e+01 -8.219900e+02
-7 19343     -1.410800e+02 -5.783300e+02
-9 19343     1.467400e+02 -5.454900e+02
-6 19344     -9.775000e+01 -8.301400e+02
-7 19344     -2.462000e+02 -5.620900e+02
-6 19345     1.767100e+02 8.532600e+02
-8 19345     2.894900e+02 4.287700e+02
-6 19346     -1.902002e+01 8.057600e+02
-13 19346     5.498199e+02 3.315400e+02
-6 19347     3.978000e+02 8.018500e+02
-8 19347     4.473199e+02 4.333500e+02
-6 19348     -4.601500e+02 8.008300e+02
-8 19348     -1.353300e+02 3.791100e+02
-6 19349     -3.762000e+01 7.742000e+02
-11 19349     5.301400e+02 -1.269900e+02
-14 19349     7.297100e+02 -7.721002e+01
-6 19350     5.464399e+02 7.731900e+02
-8 19350     5.540400e+02 4.227700e+02
-6 19351     5.570601e+02 7.496100e+02
-8 19351     5.648600e+02 4.131600e+02
-6 19352     2.380100e+02 7.492600e+02
-8 19352     3.322800e+02 3.636000e+02
-9 19352     1.257600e+02 4.935300e+02
-6 19353     1.270001e+01 7.428000e+02
-9 19353     -6.201001e+01 4.001400e+02
-14 19353     7.756899e+02 -1.084000e+02
-6 19354     -2.580017e+00 6.826800e+02
-8 19354     1.620300e+02 2.566300e+02
-6 19355     -5.612600e+02 6.763500e+02
-8 19355     -2.077800e+02 3.090700e+02
-6 19356     3.087000e+01 6.701100e+02
-8 19356     1.846800e+02 2.448800e+02
-12 19356     1.901100e+02 6.192900e+02
-6 19357     3.087000e+01 6.701100e+02
-8 19357     1.846800e+02 2.448800e+02
-6 19358     -1.243100e+02 6.204900e+02
-8 19358     8.204999e+01 2.292300e+02
-12 19358     3.851001e+01 5.831300e+02
-6 19359     4.554800e+02 5.737400e+02
-8 19359     4.942900e+02 2.805100e+02
-9 19359     3.054600e+02 4.186000e+02
-12 19359     5.379399e+02 5.832500e+02
-6 19360     -4.654400e+02 5.710300e+02
-8 19360     -1.486600e+02 2.298500e+02
-9 19360     -3.890600e+02 3.258100e+02
-13 19360     2.039800e+02 2.003300e+02
-6 19361     -2.451800e+02 5.581600e+02
-12 19361     -7.872998e+01 5.340800e+02
-6 19362     -2.451800e+02 5.581600e+02
-8 19362     -1.659973e+00 2.000200e+02
-6 19363     4.335300e+02 5.301200e+02
-9 19363     2.907900e+02 3.836600e+02
-6 19364     -4.502100e+02 5.109200e+02
-8 19364     -1.409900e+02 1.874700e+02
-6 19365     2.999500e+02 4.828800e+02
-8 19365     3.798900e+02 1.837400e+02
-9 19365     1.834301e+02 3.064100e+02
-6 19366     2.999500e+02 4.828800e+02
-9 19366     1.834301e+02 3.064100e+02
-12 19366     4.010300e+02 4.787300e+02
-6 19367     -4.877900e+02 4.296400e+02
-8 19367     -1.705600e+02 1.363900e+02
-9 19367     -4.069500e+02 2.216700e+02
-14 19367     2.940900e+02 -3.064100e+02
-6 19368     2.098200e+02 4.192800e+02
-7 19368     2.985800e+02 4.424700e+02
-10 19368     4.602400e+02 5.459000e+02
-12 19368     3.182900e+02 4.148300e+02
-13 19368     6.640400e+02 4.406000e+01
-6 19369     4.266600e+02 3.790200e+02
-8 19369     4.774301e+02 1.358600e+02
-9 19369     2.936801e+02 2.684900e+02
-10 19369     6.123600e+02 4.573200e+02
-12 19369     5.107100e+02 3.873000e+02
-6 19370     2.289200e+02 3.589300e+02
-7 19370     3.090900e+02 3.909000e+02
-15 19370     6.443600e+02 5.469600e+02
-6 19371     5.559800e+02 3.112000e+02
-8 19371     5.751000e+02 9.407001e+01
-12 19371     6.354301e+02 3.216900e+02
-6 19372     2.378300e+02 3.035000e+02
-7 19372     3.130300e+02 3.441400e+02
-6 19373     -2.820700e+02 2.866700e+02
-13 19373     2.956500e+02 -1.010010e+00
-14 19373     4.441600e+02 -4.544800e+02
-6 19374     -1.675500e+02 2.514500e+02
-10 19374     7.946997e+01 4.430800e+02
-6 19375     3.963600e+02 2.039200e+02
-10 19375     5.601100e+02 2.870700e+02
-12 19375     4.819600e+02 2.147900e+02
-13 19375     7.802000e+02 -1.373200e+02
-6 19376     4.158000e+02 1.923400e+02
-10 19376     5.758101e+02 2.710100e+02
-6 19377     1.663800e+02 1.819700e+02
-12 19377     2.018400e+02 2.276300e+02
-6 19378     1.582700e+02 1.777600e+02
-13 19378     5.457600e+02 -1.316900e+02
-6 19379     4.435500e+02 1.571400e+02
-7 19379     4.440500e+02 1.982500e+02
-8 19379     4.934200e+02 -3.250000e+01
-6 19380     1.636800e+02 1.423800e+02
-10 19380     1.374800e+02 2.264600e+02
-12 19380     1.930200e+02 1.895000e+02
-13 19380     5.415200e+02 -1.583000e+02
-6 19381     5.164700e+02 1.421700e+02
-7 19381     4.999200e+02 1.784400e+02
-10 19381     6.594900e+02 1.974900e+02
-12 19381     5.966200e+02 1.519700e+02
-6 19382     2.947998e+01 1.342500e+02
-12 19382     5.152002e+01 1.866500e+02
-6 19383     5.724900e+02 1.090800e+02
-12 19383     6.510601e+02 1.183800e+02
-6 19384     1.647700e+02 9.615002e+01
-8 19384     3.045100e+02 2.094000e+01
-6 19385     -4.093900e+02 7.984998e+01
-8 19385     -1.320100e+02 -7.627002e+01
-6 19386     2.296200e+02 5.078003e+01
-7 19386     1.542700e+02 1.152000e+02
-10 19386     1.868200e+02 1.242700e+02
-13 19386     5.821600e+02 -2.348400e+02
-6 19387     -8.840027e+00 4.971002e+01
-7 19387     -5.903998e+01 1.374800e+02
-15 19387     1.359985e+00 1.673900e+02
-6 19388     2.105200e+02 3.903998e+01
-7 19388     1.332100e+02 1.065900e+02
-6 19389     1.887900e+02 1.235999e+01
-7 19389     1.095900e+02 8.564001e+01
-8 19389     3.232400e+02 -4.151001e+01
-15 19389     2.241400e+02 8.041000e+01
-6 19390     -2.292900e+02 4.409973e+00
-12 19390     -1.966900e+02 6.071997e+01
-6 19391     -1.998800e+02 -3.913000e+01
-12 19391     -1.776100e+02 1.865002e+01
-6 19392     -2.577000e+02 -4.066998e+01
-12 19392     -2.250700e+02 1.684003e+01
-6 19393     -2.577000e+02 -4.066998e+01
-12 19393     -2.250700e+02 1.684003e+01
-6 19394     1.979500e+02 -4.234003e+01
-8 19394     3.314600e+02 -8.488000e+01
-12 19394     2.181400e+02 9.799805e-01
-6 19395     1.979500e+02 -4.234003e+01
-8 19395     3.314600e+02 -8.488000e+01
-12 19395     2.181400e+02 9.799805e-01
-6 19396     -1.454700e+02 -4.903003e+01
-12 19396     -1.272200e+02 7.510010e+00
-6 19397     -1.109000e+02 -5.640997e+01
-12 19397     -9.603003e+01 -1.030029e+00
-6 19398     -1.273100e+02 -5.682001e+01
-12 19398     -1.112600e+02 -2.999878e-01
-6 19399     -3.444000e+01 -6.265997e+01
-12 19399     -2.334998e+01 -8.969971e+00
-6 19400     1.746100e+02 -6.557001e+01
-8 19400     3.120700e+02 -1.014800e+02
-6 19401     -1.031700e+02 -1.010800e+02
-12 19401     -9.614001e+01 -4.550000e+01
-6 19402     -1.064001e+01 -1.008600e+02
-12 19402     -3.289978e+00 -4.891998e+01
-6 19403     1.763800e+02 -1.169600e+02
-12 19403     1.875300e+02 -7.354999e+01
-6 19404     3.681100e+02 -1.287000e+02
-12 19404     3.982700e+02 -9.620001e+01
-6 19405     -6.128003e+01 -1.497100e+02
-12 19405     -5.614001e+01 -9.614001e+01
-6 19406     3.259000e+02 -1.587100e+02
-12 19406     3.445800e+02 -1.234800e+02
-6 19407     -2.291200e+02 -1.630601e+02
-8 19407     -7.510010e+00 -1.691800e+02
-12 19407     -2.160900e+02 -1.026700e+02
-6 19408     -2.446002e+01 -1.660500e+02
-12 19408     -2.084998e+01 -1.137400e+02
-6 19409     9.882001e+01 -1.760500e+02
-12 19409     1.056300e+02 -1.288700e+02
-6 19410     3.058000e+02 -1.923000e+02
-8 19410     4.186100e+02 -2.049200e+02
-12 19410     3.232500e+02 -1.583300e+02
-6 19411     -1.511200e+02 -2.042600e+02
-8 19411     5.263000e+01 -1.969700e+02
-12 19411     -1.500400e+02 -1.461800e+02
-6 19412     2.875900e+02 -2.556100e+02
-12 19412     3.081000e+02 -2.207100e+02
-6 19413     3.431500e+02 -2.649100e+02
-12 19413     3.737900e+02 -2.373000e+02
-6 19414     -5.189300e+02 -3.232200e+02
-12 19414     -4.553300e+02 -2.446800e+02
-6 19415     -5.189300e+02 -3.232200e+02
-7 19415     -4.246600e+02 -9.514001e+01
-6 19416     5.607001e+01 -3.561899e+02
-12 19416     6.245001e+01 -3.133700e+02
-6 19417     -5.392800e+02 -3.631400e+02
-7 19417     -4.511000e+02 -1.254600e+02
-8 19417     -2.534700e+02 -3.445500e+02
-9 19417     -4.022100e+02 -2.690000e+02
-13 19417     3.059998e+00 -4.058500e+02
-6 19418     3.219000e+01 -4.027000e+02
-13 19418     3.739301e+02 -5.376801e+02
-6 19419     -2.748800e+02 -5.539200e+02
-15 19419     -3.431000e+02 -3.888900e+02
-6 19420     -3.442600e+02 -5.676400e+02
-7 19420     -3.593200e+02 -3.101100e+02
-15 19420     -4.106300e+02 -3.797000e+02
-6 19421     5.488199e+02 -5.947100e+02
-7 19421     3.404301e+02 -4.665699e+02
-10 19421     3.407600e+02 -5.729600e+02
-6 19422     2.273300e+02 -6.518700e+02
-7 19422     5.640997e+01 -4.678700e+02
-6 19423     5.644600e+02 -6.734301e+02
-7 19423     3.305800e+02 -5.374100e+02
-9 19423     5.509399e+02 -4.052700e+02
-6 19424     2.839200e+02 -7.004900e+02
-7 19424     8.815002e+01 -5.170100e+02
-9 19424     3.314100e+02 -4.432100e+02
-6 19425     3.777900e+02 -7.627500e+02
-9 19425     4.205300e+02 -4.768300e+02
-6 19426     -1.962000e+01 -8.046400e+02
-7 19426     -1.798900e+02 -5.543000e+02
-6 19427     2.412900e+02 7.766300e+02
-8 19427     3.348600e+02 3.828400e+02
-11 19427     6.435200e+02 -1.549400e+02
-6 19428     2.197998e+01 7.363600e+02
-8 19428     1.790100e+02 2.892200e+02
-6 19429     -5.763200e+02 5.148000e+02
-8 19429     -2.249900e+02 2.044600e+02
-6 19430     2.093800e+02 4.640200e+02
-8 19430     3.152700e+02 1.638500e+02
-12 19430     3.177900e+02 4.578400e+02
-6 19431     -4.635900e+02 4.280200e+02
-8 19431     -1.535200e+02 1.326400e+02
-9 19431     -3.888300e+02 2.179200e+02
-13 19431     1.919399e+02 1.086300e+02
-14 19431     3.153400e+02 -3.109600e+02
-6 19432     -1.760100e+02 2.936500e+02
-13 19432     3.702000e+02 -7.210022e+00
-6 19433     1.009600e+02 6.007001e+01
-8 19433     2.547200e+02 1.679993e+00
-12 19433     1.185000e+02 1.108500e+02
-13 19433     4.799600e+02 -2.103700e+02
-15 19433     1.253100e+02 1.540400e+02
-6 19434     -2.144400e+02 5.577002e+01
-13 19434     2.621300e+02 -1.707100e+02
-6 19435     -1.747800e+02 1.467999e+01
-12 19435     -1.504400e+02 7.119000e+01
-6 19436     -7.509003e+01 1.014001e+01
-12 19436     -6.040997e+01 6.540002e+01
-6 19437     -3.419000e+01 -2.021002e+01
-8 19437     1.494900e+02 -5.820999e+01
-12 19437     -2.270001e+01 3.397998e+01
-6 19438     5.010010e+00 -8.227002e+01
-12 19438     1.459998e+01 -3.053998e+01
-6 19439     2.990400e+02 -1.356300e+02
-12 19439     3.177900e+02 -9.866998e+01
-6 19440     2.579400e+02 -1.432400e+02
-12 19440     2.709700e+02 -1.020800e+02
-6 19441     -1.510999e+01 -1.686801e+02
-12 19441     -1.171002e+01 -1.170500e+02
-6 19442     -8.910999e+01 -1.752100e+02
-12 19442     -8.708002e+01 -1.205600e+02
-6 19443     2.953300e+02 -2.051200e+02
-9 19443     2.810000e+02 -6.240997e+01
-6 19444     1.044500e+02 -2.923700e+02
-8 19444     2.573000e+02 -2.774200e+02
-12 19444     1.082000e+02 -2.506400e+02
-13 19444     4.371600e+02 -4.703000e+02
-6 19445     -1.970500e+02 -3.194900e+02
-12 19445     -1.791800e+02 -2.618000e+02
-6 19446     -1.253200e+02 -3.422300e+02
-12 19446     -1.145500e+02 -2.877500e+02
-6 19447     -3.761100e+02 -5.062600e+02
-15 19447     -4.113500e+02 -3.099500e+02
-6 19448     -4.414900e+02 -5.259600e+02
-7 19448     -4.205800e+02 -2.662500e+02
-9 19448     -3.038300e+02 -3.717600e+02
-13 19448     3.176001e+01 -5.337900e+02
-6 19449     -5.987000e+01 -6.251200e+02
-9 19449     3.327002e+01 -4.167400e+02
-6 19450     -2.322500e+02 -6.494800e+02
-7 19450     -3.016800e+02 -3.958400e+02
-6 19451     -5.226900e+02 4.754700e+02
-12 19451     -3.458100e+02 4.679500e+02
-6 19452     -5.296200e+02 4.407900e+02
-8 19452     -1.981200e+02 1.499400e+02
-6 19453     3.456700e+02 4.328900e+02
-7 19453     3.849600e+02 4.413000e+02
-12 19453     4.337800e+02 4.396500e+02
-13 19453     7.592500e+02 3.990997e+01
-6 19454     4.346600e+02 3.593200e+02
-12 19454     5.186200e+02 3.680100e+02
-6 19455     4.275500e+02 3.450700e+02
-12 19455     5.114800e+02 3.544300e+02
-6 19456     -2.769000e+01 2.463200e+02
-12 19456     1.919000e+01 2.909500e+02
-6 19457     -3.065500e+02 1.017200e+02
-12 19457     -2.397200e+02 1.493800e+02
-6 19458     -3.191300e+02 8.570001e+01
-12 19458     -2.541200e+02 1.358300e+02
-6 19459     -3.049000e+02 8.120001e+01
-12 19459     -2.416800e+02 1.316900e+02
-6 19460     8.447998e+01 7.290997e+01
-7 19460     1.919000e+01 1.465100e+02
-9 19460     1.035300e+02 1.531400e+02
-15 19460     1.052000e+02 1.717200e+02
-6 19461     2.522998e+01 -2.797998e+01
-12 19461     3.339001e+01 2.388000e+01
-6 19462     2.194000e+02 -9.770001e+01
-8 19462     3.501600e+02 -1.241100e+02
-6 19463     1.629900e+02 -1.164400e+02
-8 19463     3.050800e+02 -1.339000e+02
-12 19463     1.726300e+02 -7.459998e+01
-6 19464     1.042400e+02 -1.235500e+02
-8 19464     2.597000e+02 -1.371700e+02
-6 19465     -1.085999e+01 -1.578300e+02
-12 19465     -7.710022e+00 -1.068700e+02
-6 19466     2.667800e+02 -1.637200e+02
-8 19466     3.882500e+02 -1.748800e+02
-12 19466     2.800500e+02 -1.259900e+02
-6 19467     1.140997e+01 -1.758600e+02
-8 19467     1.841200e+02 -1.777500e+02
-12 19467     1.340002e+01 -1.244600e+02
-6 19468     3.816200e+02 -2.222600e+02
-12 19468     4.163500e+02 -1.929900e+02
-6 19469     3.560500e+02 -2.290800e+02
-12 19469     3.888400e+02 -2.000100e+02
-6 19470     3.560500e+02 -2.290800e+02
-12 19470     3.888400e+02 -2.000100e+02
-6 19471     2.456500e+02 -2.886000e+02
-8 19471     3.700400e+02 -2.864600e+02
-12 19471     2.601500e+02 -2.546700e+02
-6 19472     2.854300e+02 -3.070300e+02
-8 19472     4.006500e+02 -3.073700e+02
-12 19472     3.059800e+02 -2.736300e+02
-6 19473     2.854300e+02 -3.070300e+02
-12 19473     3.059800e+02 -2.736300e+02
-6 19474     -1.880300e+02 -3.325300e+02
-7 19474     -2.138900e+02 -1.473200e+02
-12 19474     -1.721000e+02 -2.728700e+02
-13 19474     2.278500e+02 -4.449600e+02
-6 19475     2.877000e+02 -3.317100e+02
-12 19475     3.074301e+02 -3.012500e+02
-6 19476     -1.428200e+02 -3.402600e+02
-12 19476     -1.315000e+02 -2.848400e+02
-6 19477     -4.478700e+02 -4.945699e+02
-7 19477     -4.178900e+02 -2.398600e+02
-9 19477     -3.117000e+02 -3.501400e+02
-6 19478     -4.577200e+02 -5.107300e+02
-7 19478     -4.297000e+02 -2.519100e+02
-13 19478     2.395001e+01 -5.195500e+02
-6 19479     -2.133000e+02 -5.491500e+02
-12 19479     -2.149200e+02 -4.849500e+02
-6 19480     -3.026200e+02 -5.545400e+02
-15 19480     -3.706100e+02 -3.808600e+02
-6 19481     5.150601e+02 -6.043101e+02
-10 19481     3.051500e+02 -5.710200e+02
-6 19482     5.595100e+02 -6.278700e+02
-7 19482     3.396300e+02 -4.974100e+02
-9 19482     5.372600e+02 -3.767500e+02
-6 19483     1.579500e+02 8.088100e+02
-8 19483     2.766400e+02 3.989400e+02
-6 19484     -7.419983e+00 7.785000e+02
-8 19484     1.600300e+02 3.195500e+02
-6 19485     -2.673000e+02 7.241100e+02
-8 19485     -1.167999e+01 3.103900e+02
-6 19486     3.011200e+02 6.544100e+02
-8 19486     3.806100e+02 3.045000e+02
-9 19486     1.763300e+02 4.282700e+02
-6 19487     -2.150000e+02 5.950000e+02
-8 19487     2.079999e+01 2.215800e+02
-12 19487     -5.028998e+01 5.645500e+02
-6 19488     4.819700e+02 4.239700e+02
-12 19488     5.639399e+02 4.340700e+02
-6 19489     4.110500e+02 3.686600e+02
-8 19489     4.660900e+02 1.277100e+02
-10 19489     5.968500e+02 4.485400e+02
-12 19489     4.959000e+02 3.772900e+02
-15 19489     7.955400e+02 5.115000e+02
-6 19490     -1.941700e+02 3.019100e+02
-15 19490     1.827100e+02 5.542400e+02
-6 19491     -2.685900e+02 1.097100e+02
-12 19491     -2.058600e+02 1.607000e+02
-6 19492     9.073999e+01 8.969971e+00
-12 19492     1.047100e+02 5.964001e+01
-6 19493     2.087000e+02 -8.554999e+01
-8 19493     3.415700e+02 -1.152400e+02
-6 19494     -4.867400e+02 -3.543800e+02
-7 19494     -4.118400e+02 -1.235200e+02
-13 19494     3.727002e+01 -4.089000e+02
-6 19495     -1.781500e+02 -3.795200e+02
-12 19495     -1.689800e+02 -3.170700e+02
-6 19496     -1.674600e+02 -6.028500e+02
-7 19496     -2.394300e+02 -3.670100e+02
-6 19497     -3.186000e+02 -6.155000e+02
-15 19497     -4.135400e+02 -4.399200e+02
-6 19498     -2.518000e+02 8.401800e+02
-8 19498     2.130005e+00 3.829200e+02
-6 19499     -2.092800e+02 2.848500e+02
-11 19499     2.964100e+02 -4.633300e+02
-6 19500     3.247998e+01 6.192999e+01
-12 19500     4.727002e+01 1.140900e+02
-6 19501     3.056600e+02 -1.707700e+02
-12 19501     3.218600e+02 -1.348800e+02
-6 19502     2.665800e+02 -3.029200e+02
-8 19502     3.860300e+02 -3.035500e+02
-12 19502     2.848700e+02 -2.704000e+02
-13 19502     5.687900e+02 -5.133800e+02
-6 19503     -9.044000e+01 -3.112100e+02
-12 19503     -8.391998e+01 -2.579300e+02
-6 19504     -4.181100e+02 -5.038600e+02
-7 19504     -3.970300e+02 -2.526300e+02
-9 19504     -2.850900e+02 -3.561100e+02
-13 19504     5.263000e+01 -5.236400e+02
-6 19505     -4.181100e+02 -5.038600e+02
-7 19505     -3.970300e+02 -2.526300e+02
-9 19505     -2.850900e+02 -3.561100e+02
-13 19505     5.263000e+01 -5.236400e+02
-6 19506     -4.101200e+02 -5.292000e+02
-9 19506     -2.759900e+02 -3.714700e+02
-13 19506     5.095001e+01 -5.425500e+02
-6 19507     -2.809003e+01 7.905100e+02
-8 19507     1.466400e+02 3.301700e+02
-6 19508     -3.331600e+02 7.849700e+02
-8 19508     -5.285999e+01 3.559600e+02
-6 19509     2.207300e+02 7.398500e+02
-8 19509     3.199700e+02 3.562400e+02
-9 19509     1.143600e+02 4.856300e+02
-6 19510     2.654000e+02 6.625400e+02
-8 19510     3.524800e+02 3.047100e+02
-9 19510     1.476600e+02 4.304200e+02
-6 19511     -2.870400e+02 8.767999e+01
-12 19511     -2.307700e+02 1.350100e+02
-6 19512     7.630005e+00 1.523999e+01
-12 19512     2.138000e+01 6.897998e+01
-6 19513     3.568600e+02 1.225000e+01
-12 19513     3.925500e+02 4.928003e+01
-6 19514     2.414100e+02 -1.968400e+02
-12 19514     2.503500e+02 -1.583100e+02
-6 19515     8.820007e+00 -2.082100e+02
-8 19515     1.828900e+02 -1.951800e+02
-12 19515     3.840027e+00 -1.581400e+02
-6 19516     -1.630200e+02 -6.336000e+02
-7 19516     -2.444200e+02 -3.915700e+02
-6 19517     -1.512900e+02 5.724300e+02
-12 19517     1.251001e+01 5.381400e+02
-6 19518     -1.512900e+02 5.724300e+02
-12 19518     1.251001e+01 5.381400e+02
-6 19519     -4.372200e+02 4.944400e+02
-7 19519     -1.901500e+02 5.402100e+02
-6 19520     -4.523999e+01 2.739001e+01
-8 19520     1.437100e+02 -2.210999e+01
-12 19520     -2.781000e+01 8.297998e+01
-6 19521     3.155100e+02 -7.638000e+01
-12 19521     3.288600e+02 -3.692999e+01
-6 19522     1.736300e+02 -1.932000e+02
-8 19522     3.162100e+02 -1.921300e+02
-12 19522     1.763700e+02 -1.506800e+02
-6 19523     4.270001e+01 -1.561899e+02
-8 19523     2.050800e+02 -1.654300e+02
-12 19523     4.265002e+01 -1.053400e+02
-6 19524     4.270001e+01 -1.561899e+02
-8 19524     2.050800e+02 -1.654300e+02
-12 19524     4.265002e+01 -1.053400e+02
-7 19525     -1.994200e+02 5.779000e+02
-12 19525     -2.742900e+02 5.206700e+02
-7 19526     -4.293700e+02 5.740100e+02
-12 19526     -5.298400e+02 5.117600e+02
-7 19527     -2.657500e+02 5.690000e+02
-11 19527     1.121500e+02 -2.605400e+02
-7 19528     -6.194800e+02 5.657300e+02
-11 19528     -1.873900e+02 -2.396800e+02
-7 19529     -4.201000e+02 5.637900e+02
-12 19529     -5.195000e+02 5.002700e+02
-7 19530     -3.467400e+02 5.630700e+02
-12 19530     -4.374200e+02 5.002900e+02
-7 19531     -3.467400e+02 5.630700e+02
-12 19531     -4.374200e+02 5.002900e+02
-7 19532     -3.228300e+02 5.578700e+02
-11 19532     5.996997e+01 -2.663400e+02
-7 19533     2.889000e+02 5.356100e+02
-8 19533     3.013700e+02 2.104400e+02
-7 19534     -3.470000e+02 5.329000e+02
-12 19534     -4.369800e+02 4.654900e+02
-7 19535     4.087700e+02 5.282700e+02
-8 19535     4.325800e+02 2.475400e+02
-9 19535     2.428500e+02 3.819400e+02
-7 19536     3.669200e+02 5.249600e+02
-8 19536     3.744100e+02 2.148400e+02
-7 19537     -3.920000e+02 5.186900e+02
-11 19537     -4.549988e+00 -2.933500e+02
-13 19537     5.554999e+01 1.354300e+02
-14 19537     1.482500e+02 -2.716600e+02
-7 19538     -5.130900e+02 5.035400e+02
-12 19538     -6.241800e+02 4.295100e+02
-7 19539     5.274500e+02 5.019500e+02
-10 19539     7.236000e+02 5.865500e+02
-7 19540     -4.792800e+02 4.975600e+02
-11 19540     -8.158002e+01 -3.043100e+02
-12 19540     -5.843400e+02 4.217900e+02
-7 19541     -3.925200e+02 4.965600e+02
-14 19541     1.443600e+02 -2.935500e+02
-7 19542     -3.174900e+02 4.949400e+02
-14 19542     2.173300e+02 -3.020200e+02
-7 19543     4.574500e+02 4.951200e+02
-9 19543     2.919200e+02 3.638800e+02
-12 19543     5.159399e+02 5.117500e+02
-7 19544     -1.814500e+02 4.940100e+02
-14 19544     3.497700e+02 -3.143900e+02
-7 19545     2.708600e+02 4.923300e+02
-10 19545     4.321200e+02 6.107100e+02
-13 19545     6.378300e+02 8.835001e+01
-7 19546     -5.063600e+02 4.916400e+02
-8 19546     -3.856400e+02 1.512800e+02
-7 19547     -1.099600e+02 4.814000e+02
-11 19547     2.507700e+02 -3.445600e+02
-13 19547     2.769800e+02 9.407001e+01
-14 19547     4.203400e+02 -3.331200e+02
-7 19548     -1.071700e+02 4.778800e+02
-14 19548     4.232500e+02 -3.370200e+02
-7 19549     3.573500e+02 4.724600e+02
-9 19549     1.725500e+02 2.897900e+02
-7 19550     -4.358300e+02 4.684400e+02
-12 19550     -5.358900e+02 3.886400e+02
-7 19551     -3.117500e+02 4.632600e+02
-14 19551     2.169100e+02 -3.347200e+02
-7 19552     -4.933300e+02 4.532700e+02
-10 19552     -4.714700e+02 6.142400e+02
-7 19553     -4.933300e+02 4.532700e+02
-10 19553     -4.714700e+02 6.142400e+02
-7 19554     -3.078600e+02 4.529300e+02
-14 19554     2.190400e+02 -3.461100e+02
-7 19555     -6.191700e+02 4.515900e+02
-14 19555     -7.433002e+01 -3.151500e+02
-7 19556     -4.367100e+02 4.513800e+02
-14 19556     9.546002e+01 -3.346900e+02
-7 19557     -3.148100e+02 4.504800e+02
-14 19557     2.119399e+02 -3.474100e+02
-7 19558     -5.577100e+02 4.491600e+02
-10 19558     -5.484000e+02 6.128300e+02
-12 19558     -6.739300e+02 3.642200e+02
-7 19559     -4.669200e+02 4.483400e+02
-11 19559     -7.815002e+01 -3.452100e+02
-7 19560     -5.155600e+02 4.479700e+02
-11 19560     -1.201200e+02 -3.401900e+02
-7 19561     -6.033900e+02 4.468900e+02
-10 19561     -6.022100e+02 6.125600e+02
-7 19562     -6.125300e+02 4.460400e+02
-10 19562     -6.130100e+02 6.115200e+02
-7 19563     -5.397900e+02 4.459900e+02
-12 19563     -6.527500e+02 3.604700e+02
-14 19563     -2.650024e+00 -3.294500e+02
-7 19564     -5.194000e+02 4.438800e+02
-12 19564     -6.300700e+02 3.584500e+02
-7 19565     -7.564600e+02 4.432500e+02
-8 19565     -5.969100e+02 1.265600e+02
-14 19565     -1.985200e+02 -3.096600e+02
-7 19566     -5.040800e+02 4.369300e+02
-12 19566     -6.124600e+02 3.504900e+02
-7 19567     -8.125000e+01 4.364800e+02
-11 19567     2.718199e+02 -3.888800e+02
-7 19568     -8.427002e+01 4.347600e+02
-10 19568     1.647998e+01 5.740600e+02
-11 19568     2.680400e+02 -3.902200e+02
-7 19569     3.364399e+02 4.323900e+02
-10 19569     5.038400e+02 5.307600e+02
-7 19570     -5.651900e+02 4.291300e+02
-10 19570     -5.579600e+02 5.901500e+02
-7 19571     -5.047700e+02 4.270500e+02
-10 19571     -4.864900e+02 5.838300e+02
-7 19572     -4.461000e+02 4.257400e+02
-11 19572     -6.144000e+01 -3.657300e+02
-7 19573     -5.232500e+02 4.255800e+02
-12 19573     -6.344800e+02 3.373800e+02
-14 19573     8.099976e+00 -3.511300e+02
-7 19574     3.031801e+02 4.232000e+02
-10 19574     4.642200e+02 5.228900e+02
-7 19575     3.031801e+02 4.232000e+02
-10 19575     4.642200e+02 5.228900e+02
-7 19576     -4.817500e+02 4.211100e+02
-10 19576     -4.582100e+02 5.764100e+02
-12 19576     -5.870400e+02 3.321900e+02
-7 19577     -4.878400e+02 4.206500e+02
-8 19577     -3.760900e+02 8.417001e+01
-7 19578     -6.215000e+02 4.198800e+02
-14 19578     -8.389001e+01 -3.465200e+02
-7 19579     -3.310999e+01 4.199400e+02
-10 19579     7.457001e+01 5.513200e+02
-7 19580     -5.329100e+02 4.195500e+02
-8 19580     -4.140100e+02 8.773999e+01
-10 19580     -5.188600e+02 5.766800e+02
-7 19581     -5.936900e+02 4.186700e+02
-12 19581     -7.148500e+02 3.272900e+02
-14 19581     -5.859998e+01 -3.506500e+02
-7 19582     -3.039900e+02 4.169300e+02
-10 19582     -2.463000e+02 5.635700e+02
-14 19582     2.175000e+02 -3.834300e+02
-7 19583     -7.039400e+02 4.154500e+02
-8 19583     -5.561300e+02 9.616000e+01
-10 19583     -7.222400e+02 5.820900e+02
-7 19584     -1.479100e+02 4.153800e+02
-14 19584     3.802500e+02 -4.010300e+02
-7 19585     -4.921400e+02 4.114400e+02
-10 19585     -4.709300e+02 5.654400e+02
-7 19586     2.072300e+02 4.075900e+02
-10 19586     3.585400e+02 5.189900e+02
-7 19587     -1.887600e+02 4.063400e+02
-10 19587     -1.101100e+02 5.454100e+02
-7 19588     2.945000e+02 4.065800e+02
-10 19588     4.524800e+02 5.036700e+02
-7 19589     3.405100e+02 4.049700e+02
-12 19589     3.722300e+02 3.795000e+02
-7 19590     -6.507200e+02 4.046100e+02
-10 19590     -6.593600e+02 5.661700e+02
-14 19590     -1.139600e+02 -3.583000e+02
-7 19591     -5.202200e+02 4.043000e+02
-10 19591     -5.045700e+02 5.596400e+02
-7 19592     -3.031000e+02 4.026400e+02
-14 19592     2.165100e+02 -3.982400e+02
-7 19593     -6.802900e+02 3.984000e+02
-8 19593     -5.383400e+02 7.913000e+01
-10 19593     -6.941000e+02 5.604300e+02
-7 19594     -6.802900e+02 3.984000e+02
-8 19594     -5.383400e+02 7.913000e+01
-10 19594     -6.941000e+02 5.604300e+02
-7 19595     -4.194900e+02 3.958000e+02
-10 19595     -3.854800e+02 5.444300e+02
-7 19596     -6.667500e+02 3.943700e+02
-11 19596     -2.527300e+02 -3.694300e+02
-12 19596     -8.001400e+02 2.961500e+02
-7 19597     -1.377300e+02 3.933600e+02
-10 19597     -5.400000e+01 5.251900e+02
-7 19598     -1.767700e+02 3.931200e+02
-10 19598     -9.832001e+01 5.281500e+02
-7 19599     -4.792500e+02 3.914800e+02
-14 19599     8.090002e+01 -4.253000e+02
-7 19600     -5.117400e+02 3.910900e+02
-14 19600     1.207001e+01 -3.874600e+02
-7 19601     -1.027200e+02 3.899600e+02
-13 19601     2.856000e+02 1.485999e+01
-14 19601     4.312300e+02 -4.335100e+02
-7 19602     -3.695200e+02 3.877600e+02
-15 19602     -2.909800e+02 5.857700e+02
-7 19603     -1.591900e+02 3.870700e+02
-11 19603     1.902100e+02 -4.293000e+02
-7 19604     -4.049100e+02 3.862200e+02
-14 19604     1.135400e+02 -4.046000e+02
-15 19604     -3.395300e+02 5.850000e+02
-7 19605     -1.085900e+02 3.839900e+02
-15 19605     6.492999e+01 5.671000e+02
-7 19606     4.054700e+02 3.838300e+02
-9 19606     2.565900e+02 2.535800e+02
-10 19606     5.648600e+02 4.539500e+02
-12 19606     4.631500e+02 3.761100e+02
-15 19606     7.579301e+02 5.163400e+02
-7 19607     -1.276200e+02 3.828700e+02
-13 19607     2.640699e+02 9.669983e+00
-14 19607     4.039700e+02 -4.395400e+02
-15 19607     3.917999e+01 5.670800e+02
-7 19608     -1.276200e+02 3.828700e+02
-11 19608     2.182700e+02 -4.359500e+02
-15 19608     3.917999e+01 5.670800e+02
-7 19609     -1.341700e+02 3.790300e+02
-10 19609     -5.169000e+01 5.073200e+02
-7 19610     -1.397300e+02 3.782500e+02
-15 19610     2.132001e+01 5.604900e+02
-7 19611     3.246400e+02 3.773900e+02
-15 19611     6.634700e+02 5.258500e+02
-7 19612     4.557900e+02 3.772800e+02
-15 19612     8.290100e+02 5.017500e+02
-7 19613     4.557900e+02 3.772800e+02
-15 19613     8.290100e+02 5.017500e+02
-7 19614     -2.199700e+02 3.763300e+02
-10 19614     -1.505900e+02 5.104200e+02
-14 19614     3.035699e+02 -4.361200e+02
-7 19615     -2.237800e+02 3.737300e+02
-10 19615     -1.561100e+02 5.073300e+02
-15 19615     -9.273999e+01 5.595300e+02
-7 19616     -6.638200e+02 3.683800e+02
-10 19616     -6.770600e+02 5.246000e+02
-15 19616     -6.949500e+02 5.681400e+02
-7 19617     -2.961700e+02 3.685700e+02
-10 19617     -2.401000e+02 5.064900e+02
-7 19618     -6.290400e+02 3.659000e+02
-15 19618     -6.459300e+02 5.639800e+02
-7 19619     -6.290400e+02 3.659000e+02
-15 19619     -6.459300e+02 5.639800e+02
-7 19620     -6.137900e+02 3.657000e+02
-15 19620     -6.250400e+02 5.635100e+02
-7 19621     -4.970000e+02 3.655500e+02
-10 19621     -4.778900e+02 5.131700e+02
-7 19622     -2.442400e+02 3.655200e+02
-10 19622     -1.810200e+02 4.981600e+02
-13 19622     1.629500e+02 1.010010e+00
-14 19622     2.767600e+02 -4.450900e+02
-15 19622     -1.219700e+02 5.488600e+02
-7 19623     -1.638900e+02 3.656300e+02
-10 19623     -8.844000e+01 4.923100e+02
-11 19623     1.810900e+02 -4.491600e+02
-7 19624     -2.436500e+02 3.626600e+02
-10 19624     -1.809700e+02 4.949800e+02
-14 19624     2.774500e+02 -4.482700e+02
-15 19624     -1.220600e+02 5.446500e+02
-7 19625     -3.081300e+02 3.620600e+02
-10 19625     -2.546700e+02 4.993300e+02
-11 19625     5.216998e+01 -4.344500e+02
-7 19626     -3.081300e+02 3.620600e+02
-10 19626     -2.546700e+02 4.993300e+02
-7 19627     -1.958400e+02 3.614500e+02
-10 19627     -1.268700e+02 4.901400e+02
-15 19627     -5.896002e+01 5.400500e+02
-7 19628     -5.978800e+02 3.600000e+02
-15 19628     -6.039700e+02 5.553300e+02
-7 19629     -4.474600e+02 3.558100e+02
-14 19629     6.553998e+01 -4.313600e+02
-15 19629     -3.981900e+02 5.453200e+02
-7 19630     -4.502100e+02 3.551500e+02
-15 19630     -4.022700e+02 5.449800e+02
-7 19631     -3.057200e+02 3.532900e+02
-10 19631     -2.537400e+02 4.880600e+02
-11 19631     5.253003e+01 -4.435000e+02
-7 19632     -6.048100e+02 3.500000e+02
-10 19632     -6.060500e+02 5.007500e+02
-14 19632     -8.440002e+01 -4.186400e+02
-7 19633     6.628998e+01 3.485800e+02
-15 19633     2.990601e+02 5.042900e+02
-7 19634     -5.144600e+02 3.449900e+02
-10 19634     -4.990900e+02 4.917100e+02
-11 19634     -1.327300e+02 -4.264800e+02
-15 19634     -4.909300e+02 5.338400e+02
-7 19635     6.351200e+02 3.454100e+02
-9 19635     4.723400e+02 2.812500e+02
-7 19636     6.199200e+02 3.423600e+02
-10 19636     8.203300e+02 3.791700e+02
-7 19637     -4.080000e+02 3.405300e+02
-14 19637     1.023400e+02 -4.524800e+02
-7 19638     -4.967400e+02 3.393800e+02
-14 19638     1.553003e+01 -4.427000e+02
-7 19639     -2.941000e+02 3.397200e+02
-14 19639     2.247100e+02 -4.673700e+02
-15 19639     -1.932100e+02 5.148100e+02
-7 19640     -2.628100e+02 3.392000e+02
-14 19640     2.580900e+02 -4.721500e+02
-7 19641     -6.780100e+02 3.362300e+02
-10 19641     -6.893900e+02 4.910200e+02
-7 19642     -9.808002e+01 3.353900e+02
-11 19642     2.345300e+02 -4.874000e+02
-7 19643     -4.400000e+02 3.347400e+02
-15 19643     -3.885700e+02 5.170800e+02
-7 19644     -3.077900e+02 3.352400e+02
-14 19644     2.093101e+02 -4.709399e+02
-7 19645     -6.060400e+02 3.344500e+02
-10 19645     -6.071700e+02 4.830200e+02
-12 19645     -7.294200e+02 2.259000e+02
-15 19645     -6.145700e+02 5.217600e+02
-7 19646     -5.065800e+02 3.329700e+02
-14 19646     4.950012e+00 -4.483700e+02
-7 19647     -4.861700e+02 3.327200e+02
-11 19647     -1.096800e+02 -4.401000e+02
-14 19647     2.465997e+01 -4.508800e+02
-7 19648     -5.844200e+02 3.326200e+02
-8 19648     -4.644400e+02 8.790009e+00
-10 19648     -5.819300e+02 4.796400e+02
-11 19648     -1.955400e+02 -4.290300e+02
-12 19648     -7.047400e+02 2.240800e+02
-15 19648     -5.858700e+02 5.188700e+02
-7 19649     -4.446700e+02 3.308800e+02
-15 19649     -3.948700e+02 5.125900e+02
-7 19650     -4.953000e+02 3.303000e+02
-11 19650     -1.182500e+02 -4.411700e+02
-7 19651     -4.953000e+02 3.303000e+02
-11 19651     -1.182500e+02 -4.411700e+02
-7 19652     -2.334800e+02 3.296300e+02
-12 19652     -2.930600e+02 2.394500e+02
-13 19652     1.742000e+02 -3.047998e+01
-14 19652     2.906500e+02 -4.861500e+02
-7 19653     -6.653300e+02 3.282000e+02
-12 19653     -7.998500e+02 2.149200e+02
-15 19653     -6.915400e+02 5.173400e+02
-7 19654     -5.696200e+02 3.271400e+02
-10 19654     -5.649200e+02 4.737100e+02
-11 19654     -1.828200e+02 -4.357400e+02
-15 19654     -5.661500e+02 5.112900e+02
-7 19655     -7.236100e+02 3.265900e+02
-10 19655     -7.462700e+02 4.806000e+02
-14 19655     -1.997500e+02 -4.276400e+02
-7 19656     1.409301e+02 3.259200e+02
-10 19656     2.620400e+02 4.194100e+02
-7 19657     3.170100e+02 3.250900e+02
-10 19657     4.721300e+02 4.030100e+02
-15 19657     6.502600e+02 4.517600e+02
-7 19658     5.591100e+02 3.251100e+02
-10 19658     7.445400e+02 3.655900e+02
-7 19659     -3.605500e+02 3.247200e+02
-15 19659     -2.844100e+02 4.979800e+02
-7 19660     -3.605500e+02 3.247200e+02
-15 19660     -2.844100e+02 4.979800e+02
-7 19661     5.734000e+02 3.245200e+02
-12 19661     6.703900e+02 3.357400e+02
-7 19662     -3.860700e+02 3.238700e+02
-15 19662     -3.177500e+02 4.989800e+02
-7 19663     -2.112800e+02 3.237800e+02
-10 19663     -1.503300e+02 4.439900e+02
-7 19664     -4.865500e+02 3.223700e+02
-14 19664     2.200000e+01 -4.621300e+02
-7 19665     -8.619000e+01 3.212800e+02
-10 19665     -6.590027e+00 4.309300e+02
-7 19666     -3.324300e+02 3.209900e+02
-14 19666     1.827500e+02 -4.833101e+02
-7 19667     -5.676500e+02 3.201600e+02
-10 19667     -5.622300e+02 4.648800e+02
-15 19667     -5.634400e+02 5.014000e+02
-7 19668     -5.676500e+02 3.201600e+02
-10 19668     -5.622300e+02 4.648800e+02
-7 19669     -3.435800e+02 3.200100e+02
-13 19669     7.887000e+01 -3.195001e+01
-7 19670     -2.177400e+02 3.199300e+02
-10 19670     -1.582800e+02 4.396200e+02
-15 19670     -9.621997e+01 4.808800e+02
-7 19671     -5.503500e+02 3.193700e+02
-14 19671     -4.014001e+01 -4.567900e+02
-7 19672     -7.679200e+02 3.185300e+02
-10 19672     -7.985000e+02 4.744300e+02
-14 19672     -2.418400e+02 -4.298800e+02
-15 19672     -8.308300e+02 5.063100e+02
-7 19673     -5.459900e+02 3.184500e+02
-14 19673     -3.634003e+01 -4.590601e+02
-7 19674     -5.459900e+02 3.184500e+02
-11 19674     -1.639000e+02 -4.451700e+02
-7 19675     5.486300e+02 3.186700e+02
-10 19675     7.309600e+02 3.590500e+02
-12 19675     6.411700e+02 3.241100e+02
-7 19676     -5.951000e+02 3.175000e+02
-10 19676     -5.948900e+02 4.630700e+02
-7 19677     -5.296500e+02 3.164600e+02
-14 19677     -2.069000e+01 -4.628900e+02
-7 19678     -5.296500e+02 3.164600e+02
-11 19678     -1.501700e+02 -4.488100e+02
-7 19679     -6.727400e+02 3.143600e+02
-10 19679     -6.844100e+02 4.657600e+02
-15 19679     -7.017100e+02 4.997600e+02
-7 19680     -5.639600e+02 3.144500e+02
-14 19680     -5.407001e+01 -4.603300e+02
-7 19681     -5.087600e+02 3.144300e+02
-11 19681     -1.323000e+02 -4.534600e+02
-7 19682     -3.887600e+02 3.141800e+02
-15 19682     -3.231000e+02 4.852800e+02
-7 19683     -3.207300e+02 3.140000e+02
-15 19683     -2.339600e+02 4.797600e+02
-7 19684     6.075100e+02 3.140200e+02
-12 19684     7.128800e+02 3.287900e+02
-7 19685     -5.307500e+02 3.135600e+02
-14 19685     -2.256000e+01 -4.653900e+02
-7 19686     -5.256600e+02 3.129800e+02
-14 19686     -1.779999e+01 -4.670400e+02
-7 19687     -5.468500e+02 3.117000e+02
-14 19687     -3.838000e+01 -4.655900e+02
-7 19688     5.411801e+02 3.104600e+02
-9 19688     3.940800e+02 2.265200e+02
-7 19689     -5.552300e+02 3.099400e+02
-14 19689     -4.696002e+01 -4.663600e+02
-7 19690     -5.151800e+02 3.101900e+02
-13 19690     -6.492999e+01 -2.971997e+01
-14 19690     -8.349976e+00 -4.711899e+02
-7 19691     -4.874800e+02 3.096700e+02
-11 19691     -1.142300e+02 -4.597400e+02
-7 19692     -1.002800e+02 3.090300e+02
-10 19692     -2.467999e+01 4.167500e+02
-7 19693     -7.036200e+02 3.079000e+02
-10 19693     -7.229600e+02 4.581100e+02
-14 19693     -1.863100e+02 -4.486200e+02
-15 19693     -7.461100e+02 4.903200e+02
-7 19694     -7.098100e+02 3.073600e+02
-10 19694     -7.296500e+02 4.578600e+02
-14 19694     -1.918300e+02 -4.490200e+02
-15 19694     -7.537500e+02 4.897900e+02
-7 19695     -5.083100e+02 3.074800e+02
-14 19695     -2.260010e+00 -4.753000e+02
-7 19696     -7.441600e+02 3.066600e+02
-10 19696     -7.702100e+02 4.592600e+02
-11 19696     -3.301900e+02 -4.309200e+02
-15 19696     -7.994100e+02 4.892100e+02
-7 19697     -6.604300e+02 3.063800e+02
-12 19697     -7.940200e+02 1.894100e+02
-15 19697     -6.852900e+02 4.883100e+02
-7 19698     -5.273000e+02 3.060000e+02
-14 19698     -2.103998e+01 -4.741500e+02
-7 19699     -5.545700e+02 3.055500e+02
-14 19699     -4.696997e+01 -4.709900e+02
-7 19700     -5.545700e+02 3.055500e+02
-14 19700     -4.696997e+01 -4.709900e+02
-7 19701     5.686500e+02 3.030900e+02
-12 19701     6.673400e+02 3.096400e+02
-7 19702     -5.646300e+02 3.027600e+02
-11 19702     -1.819800e+02 -4.565900e+02
-7 19703     -3.815300e+02 3.014300e+02
-10 19703     -3.485800e+02 4.301500e+02
-11 19703     -2.735999e+01 -4.828400e+02
-14 19703     1.304800e+02 -4.986300e+02
-15 19703     -3.163700e+02 4.662100e+02
-7 19704     -2.392300e+02 3.006700e+02
-10 19704     -1.865200e+02 4.176200e+02
-15 19704     -1.287800e+02 4.546500e+02
-7 19705     -2.766800e+02 2.993000e+02
-11 19705     6.294000e+01 -4.998700e+02
-7 19706     2.639800e+02 2.968200e+02
-15 19706     5.694100e+02 4.145900e+02
-7 19707     6.257600e+02 2.967200e+02
-12 19707     7.364200e+02 3.107300e+02
-7 19708     -5.145600e+02 2.950100e+02
-11 19708     -1.405600e+02 -4.694300e+02
-7 19709     -7.778003e+01 2.929300e+02
-10 19709     -5.584003e+01 3.570200e+02
-15 19709     1.017999e+01 3.907800e+02
-7 19710     -7.186400e+02 2.923700e+02
-8 19710     -5.837800e+02 -1.964999e+01
-14 19710     -2.039600e+02 -4.630500e+02
-15 19710     -7.657200e+02 4.707500e+02
-7 19711     -6.657300e+02 2.917400e+02
-10 19711     -6.768100e+02 4.397300e+02
-7 19712     -5.633700e+02 2.913300e+02
-14 19712     -5.859998e+01 -4.849200e+02
-7 19713     -5.097200e+02 2.895500e+02
-14 19713     -7.309998e+00 -4.937800e+02
-7 19714     5.945000e+02 2.886900e+02
-10 19714     7.835000e+02 3.167200e+02
-7 19715     -5.842500e+02 2.870300e+02
-15 19715     -5.861900e+02 4.588300e+02
-7 19716     -1.453700e+02 2.868800e+02
-10 19716     -8.134003e+01 3.926600e+02
-7 19717     -7.438400e+02 2.856700e+02
-10 19717     -7.706800e+02 4.348400e+02
-15 19717     -7.988700e+02 4.627800e+02
-7 19718     -7.157500e+02 2.852700e+02
-8 19718     -5.819500e+02 -2.726001e+01
-10 19718     -7.375900e+02 4.338200e+02
-15 19718     -7.621000e+02 4.616900e+02
-7 19719     -5.122500e+02 2.855900e+02
-11 19719     -1.394700e+02 -4.781400e+02
-7 19720     -2.734000e+02 2.828200e+02
-10 19720     -2.288900e+02 3.986800e+02
-7 19721     -8.003500e+02 2.816100e+02
-13 19721     -2.919400e+02 -3.472998e+01
-14 19721     -2.898700e+02 -4.627300e+02
-7 19722     -7.342000e+02 2.817500e+02
-10 19722     -7.596300e+02 4.312600e+02
-14 19722     -2.211200e+02 -4.717500e+02
-15 19722     -7.864600e+02 4.578700e+02
-7 19723     -7.054700e+02 2.806000e+02
-15 19723     -7.484900e+02 4.549200e+02
-7 19724     -5.634000e+02 2.806000e+02
-14 19724     -6.113000e+01 -4.961500e+02
-7 19725     -7.326300e+02 2.775500e+02
-10 19725     -7.572500e+02 4.261300e+02
-15 19725     -7.843900e+02 4.528700e+02
-7 19726     -5.750000e+02 2.764200e+02
-10 19726     -5.722200e+02 4.154300e+02
-7 19727     -3.498300e+02 2.737000e+02
-10 19727     -3.169400e+02 3.935200e+02
-7 19728     -3.498300e+02 2.737000e+02
-10 19728     -3.169400e+02 3.935200e+02
-7 19729     -1.126400e+02 2.735100e+02
-10 19729     -9.803003e+01 3.367800e+02
-15 19729     -3.922998e+01 3.659800e+02
-7 19730     -2.543700e+02 2.731200e+02
-10 19730     -2.085400e+02 3.849500e+02
-7 19731     -5.829000e+02 2.726800e+02
-14 19731     -8.158002e+01 -5.018700e+02
-15 19731     -5.844600e+02 4.400400e+02
-7 19732     -5.978100e+02 2.720300e+02
-14 19732     -9.592999e+01 -5.004800e+02
-7 19733     5.011600e+02 2.708500e+02
-9 19733     3.625601e+02 1.796600e+02
-7 19734     -2.551300e+02 2.702800e+02
-10 19734     -2.097200e+02 3.813200e+02
-7 19735     5.138199e+02 2.672000e+02
-10 19735     6.841500e+02 3.008400e+02
-7 19736     2.583800e+02 2.655800e+02
-15 19736     5.532300e+02 3.679900e+02
-7 19737     1.350800e+02 2.634500e+02
-15 19737     2.922200e+02 3.307700e+02
-7 19738     5.273800e+02 2.596800e+02
-8 19738     5.663600e+02 4.059000e+01
-9 19738     3.888800e+02 1.771500e+02
-7 19739     1.501100e+02 2.575200e+02
-10 19739     2.016300e+02 2.942300e+02
-7 19740     1.616200e+02 2.534100e+02
-10 19740     2.158000e+02 2.892500e+02
-7 19741     5.619200e+02 2.517800e+02
-9 19741     4.214399e+02 1.800900e+02
-10 19741     7.405300e+02 2.762600e+02
-7 19742     4.550601e+02 2.504300e+02
-15 19742     8.183600e+02 3.190800e+02
-7 19743     -3.906800e+02 2.465700e+02
-14 19743     1.224500e+02 -5.577100e+02
-7 19744     2.676700e+02 2.462300e+02
-15 19744     5.616100e+02 3.386100e+02
-7 19745     1.851600e+02 2.409800e+02
-15 19745     3.646100e+02 2.981500e+02
-7 19746     2.779301e+02 2.397000e+02
-15 19746     5.746500e+02 3.279700e+02
-7 19747     1.085500e+02 2.380900e+02
-13 19747     5.403101e+02 -1.269800e+02
-15 19747     2.445800e+02 2.932400e+02
-7 19748     6.880601e+02 2.374400e+02
-9 19748     5.360601e+02 2.034900e+02
-7 19749     2.723800e+02 2.354100e+02
-15 19749     5.647200e+02 3.218600e+02
-7 19750     6.224301e+02 2.354300e+02
-12 19750     7.385100e+02 2.400100e+02
-7 19751     3.812000e+02 2.333100e+02
-10 19751     5.259900e+02 2.781000e+02
-15 19751     7.140200e+02 3.048400e+02
-7 19752     -1.117100e+02 2.329100e+02
-10 19752     -1.058000e+02 2.860700e+02
-7 19753     -1.660500e+02 2.290600e+02
-12 19753     -1.439500e+02 1.876700e+02
-13 19753     2.937400e+02 -1.195600e+02
-7 19754     -5.265400e+02 2.276800e+02
-15 19754     -5.180000e+02 3.734300e+02
-7 19755     -5.419500e+02 2.263700e+02
-15 19755     -5.377300e+02 3.730900e+02
-7 19756     -5.419500e+02 2.263700e+02
-15 19756     -5.377300e+02 3.730900e+02
-7 19757     -1.893700e+02 2.252900e+02
-10 19757     -1.756900e+02 2.968000e+02
-12 19757     -1.856600e+02 1.674600e+02
-7 19758     -1.918000e+02 2.224800e+02
-10 19758     -1.790800e+02 2.934400e+02
-15 19758     -1.296700e+02 3.127100e+02
-7 19759     -5.904800e+02 2.217800e+02
-11 19759     -2.228900e+02 -5.251000e+02
-7 19760     7.041000e+02 2.217500e+02
-9 19760     5.528800e+02 1.940900e+02
-7 19761     4.161000e+02 2.146700e+02
-10 19761     5.645000e+02 2.515700e+02
-7 19762     -5.464800e+02 2.131000e+02
-15 19762     -5.459700e+02 3.549500e+02
-7 19763     -4.144300e+02 2.082700e+02
-15 19763     -3.766400e+02 3.370600e+02
-7 19764     2.627000e+02 2.079300e+02
-10 19764     3.522000e+02 2.402100e+02
-7 19765     -4.629000e+02 2.070700e+02
-15 19765     -4.402600e+02 3.393300e+02
-7 19766     -6.584900e+02 2.057900e+02
-10 19766     -6.739600e+02 3.391100e+02
-7 19767     4.171899e+02 2.051600e+02
-15 19767     7.619000e+02 2.599000e+02
-7 19768     5.739800e+02 2.051600e+02
-9 19768     4.393700e+02 1.415800e+02
-10 19768     7.510400e+02 2.184900e+02
-12 19768     6.827700e+02 1.967500e+02
-7 19769     -4.029000e+02 2.014800e+02
-15 19769     -3.623200e+02 3.275800e+02
-7 19770     -3.971300e+02 2.009600e+02
-15 19770     -3.558100e+02 3.252000e+02
-7 19771     -1.444300e+02 1.988800e+02
-10 19771     -1.457200e+02 2.497300e+02
-7 19772     -7.610999e+01 1.986000e+02
-12 19772     -2.252002e+01 1.708500e+02
-15 19772     -1.096997e+01 2.539000e+02
-7 19773     -2.591500e+02 1.976900e+02
-13 19773     1.949900e+02 -1.409200e+02
-7 19774     6.152300e+02 1.973700e+02
-10 19774     8.000300e+02 2.035100e+02
-7 19775     2.112200e+02 1.970600e+02
-15 19775     3.949600e+02 2.335600e+02
-7 19776     -6.497700e+02 1.924500e+02
-10 19776     -6.658600e+02 3.222000e+02
-7 19777     -2.154400e+02 1.925300e+02
-15 19777     -1.682700e+02 2.716800e+02
-7 19778     -2.154400e+02 1.925300e+02
-15 19778     -1.682700e+02 2.716800e+02
-7 19779     2.785500e+02 1.914900e+02
-10 19779     3.673700e+02 2.191400e+02
-7 19780     9.015997e+01 1.903200e+02
-10 19780     1.162400e+02 2.151600e+02
-13 19780     5.270900e+02 -1.662300e+02
-15 19780     2.101400e+02 2.270600e+02
-7 19781     -3.627800e+02 1.883300e+02
-13 19781     6.906000e+01 -1.431900e+02
-7 19782     -1.845800e+02 1.886000e+02
-13 19782     2.767300e+02 -1.527000e+02
-7 19783     1.165700e+02 1.881400e+02
-10 19783     1.475900e+02 2.102200e+02
-7 19784     1.165700e+02 1.881400e+02
-10 19784     1.475900e+02 2.102200e+02
-7 19785     5.776500e+02 1.879300e+02
-9 19785     4.459200e+02 1.275000e+02
-7 19786     -3.787200e+02 1.869800e+02
-10 19786     -3.631100e+02 2.901300e+02
-7 19787     3.595200e+02 1.845200e+02
-15 19787     6.806801e+02 2.391800e+02
-7 19788     5.789100e+02 1.840400e+02
-10 19788     7.545601e+02 1.929900e+02
-7 19789     3.662100e+02 1.827700e+02
-10 19789     5.067500e+02 2.196100e+02
-13 19789     7.337600e+02 -1.926900e+02
-15 19789     6.906801e+02 2.353800e+02
-7 19790     3.662100e+02 1.827700e+02
-10 19790     5.067500e+02 2.196100e+02
-15 19790     6.906801e+02 2.353800e+02
-7 19791     4.492700e+02 1.808400e+02
-8 19791     5.003700e+02 -4.757999e+01
-15 19791     8.043600e+02 2.216900e+02
-7 19792     -1.823100e+02 1.781100e+02
-12 19792     -1.567000e+02 1.289300e+02
-7 19793     -3.609500e+02 1.773300e+02
-9 19793     -4.359100e+02 -3.807001e+01
-13 19793     7.107001e+01 -1.530400e+02
-15 19793     -3.130800e+02 2.888000e+02
-7 19794     3.645601e+02 1.771300e+02
-15 19794     6.860400e+02 2.273300e+02
-7 19795     5.948101e+02 1.749600e+02
-10 19795     7.730400e+02 1.798200e+02
-7 19796     3.633300e+02 1.745500e+02
-15 19796     6.847200e+02 2.230400e+02
-7 19797     1.719600e+02 1.741200e+02
-15 19797     3.272800e+02 2.002400e+02
-7 19798     3.010699e+02 1.733000e+02
-15 19798     5.440300e+02 2.049300e+02
-7 19799     5.436100e+02 1.729700e+02
-10 19799     7.116600e+02 1.843600e+02
-7 19800     -2.566500e+02 1.700800e+02
-15 19800     -2.204200e+02 2.472900e+02
-7 19801     1.824900e+02 1.692700e+02
-10 19801     2.271801e+02 1.853100e+02
-7 19802     -3.173700e+02 1.678800e+02
-10 19802     -2.975000e+02 2.618400e+02
-7 19803     -6.602900e+02 1.668300e+02
-10 19803     -6.813900e+02 2.921500e+02
-7 19804     -4.717000e+02 1.655200e+02
-15 19804     -4.589000e+02 2.821400e+02
-7 19805     -5.551500e+02 1.636700e+02
-10 19805     -5.640200e+02 2.784300e+02
-15 19805     -5.660700e+02 2.871900e+02
-7 19806     6.308199e+02 1.636600e+02
-9 19806     4.981400e+02 1.215900e+02
-7 19807     -5.041000e+02 1.583500e+02
-15 19807     -5.157100e+02 2.677300e+02
-7 19808     2.910400e+02 1.587500e+02
-15 19808     5.253101e+02 1.829600e+02
-7 19809     -3.767900e+02 1.580400e+02
-15 19809     -3.379900e+02 2.629500e+02
-7 19810     2.568199e+02 1.552600e+02
-10 19810     3.268400e+02 1.710700e+02
-15 19810     4.666899e+02 1.769600e+02
-7 19811     -5.822500e+02 1.541000e+02
-10 19811     -5.959500e+02 2.694800e+02
-7 19812     -2.229980e+00 1.513000e+02
-15 19812     7.713000e+01 1.798500e+02
-7 19813     1.328200e+02 1.508000e+02
-10 19813     1.619600e+02 1.650400e+02
-7 19814     3.904999e+01 1.466000e+02
-15 19814     1.322300e+02 1.698600e+02
-7 19815     -4.485000e+02 1.448400e+02
-10 19815     -4.474900e+02 2.460400e+02
-7 19816     -2.409700e+02 1.428900e+02
-10 19816     -2.501200e+02 2.007300e+02
-7 19817     -8.003998e+01 1.431600e+02
-15 19817     -2.420001e+01 1.773300e+02
-7 19818     -1.640800e+02 1.391900e+02
-10 19818     -1.732200e+02 1.829400e+02
-7 19819     3.116100e+02 1.376700e+02
-10 19819     3.942500e+02 1.477100e+02
-15 19819     5.482000e+02 1.499600e+02
-7 19820     -4.186500e+02 1.358200e+02
-10 19820     -4.150700e+02 2.330200e+02
-15 19820     -3.959900e+02 2.359400e+02
-7 19821     -4.301700e+02 1.345500e+02
-15 19821     -4.113100e+02 2.355100e+02
-7 19822     5.864001e+01 1.336000e+02
-15 19822     1.577200e+02 1.500100e+02
-7 19823     2.566200e+02 1.337300e+02
-10 19823     3.217000e+02 1.431900e+02
-15 19823     4.598800e+02 1.443700e+02
-7 19824     -4.469400e+02 1.328200e+02
-15 19824     -4.332200e+02 2.344400e+02
-7 19825     2.005900e+02 1.298200e+02
-10 19825     2.443300e+02 1.377200e+02
-7 19826     6.214000e+02 1.286000e+02
-10 19826     8.025500e+02 1.200700e+02
-7 19827     -4.587300e+02 1.263800e+02
-15 19827     -4.491900e+02 2.263200e+02
-7 19828     4.376899e+02 1.258500e+02
-15 19828     7.823000e+02 1.442500e+02
-7 19829     -4.982300e+02 1.226500e+02
-15 19829     -5.089900e+02 2.206000e+02
-7 19830     -6.259003e+01 1.214600e+02
-15 19830     -4.530029e+00 1.452700e+02
-7 19831     4.483700e+02 1.215400e+02
-15 19831     7.974301e+02 1.368100e+02
-7 19832     -2.821800e+02 1.169600e+02
-12 19832     -2.802200e+02 3.967999e+01
-7 19833     -1.789800e+02 1.154300e+02
-13 19833     2.824301e+02 -2.148000e+02
-7 19834     -4.714000e+02 1.137200e+02
-10 19834     -4.781900e+02 2.107500e+02
-15 19834     -4.685600e+02 2.103600e+02
-7 19835     -2.807700e+02 1.097100e+02
-15 19835     -2.662500e+02 1.640900e+02
-7 19836     1.347200e+02 1.063400e+02
-10 19836     1.592600e+02 1.132500e+02
-13 19836     5.654100e+02 -2.412800e+02
-7 19837     -3.283600e+02 1.049200e+02
-13 19837     1.021400e+02 -2.176400e+02
-7 19838     -3.868000e+02 1.039800e+02
-10 19838     -3.863400e+02 1.910700e+02
-7 19839     -3.599200e+02 1.035800e+02
-15 19839     -3.266500e+02 1.859800e+02
-7 19840     4.495601e+02 1.008200e+02
-10 19840     5.909200e+02 1.104100e+02
-15 19840     7.939200e+02 1.059600e+02
-7 19841     3.204800e+02 9.641000e+01
-15 19841     5.495699e+02 8.756000e+01
-7 19842     7.400200e+02 9.657999e+01
-9 19842     6.063800e+02 9.454001e+01
-7 19843     -4.582900e+02 9.325000e+01
-15 19843     -4.555100e+02 1.807800e+02
-7 19844     4.760900e+02 9.357999e+01
-15 19844     8.318900e+02 9.157001e+01
-7 19845     6.379900e+02 9.179999e+01
-9 19845     5.173900e+02 5.834998e+01
-7 19846     -5.320000e+02 8.879001e+01
-15 19846     -5.498400e+02 1.819500e+02
-7 19847     7.360800e+02 8.845999e+01
-9 19847     6.047400e+02 8.616000e+01
-7 19848     7.446200e+02 8.563000e+01
-9 19848     6.122100e+02 8.600000e+01
-7 19849     6.127800e+02 8.529999e+01
-10 19849     7.878900e+02 6.940002e+01
-7 19850     -3.893800e+02 8.320001e+01
-10 19850     -3.911700e+02 1.663600e+02
-7 19851     4.816500e+02 8.310999e+01
-10 19851     6.268300e+02 8.466998e+01
-7 19852     1.361300e+02 7.931000e+01
-15 19852     2.620500e+02 7.073999e+01
-7 19853     -3.939000e+02 7.790002e+01
-10 19853     -3.967300e+02 1.607600e+02
-15 19853     -3.750000e+02 1.534200e+02
-7 19854     -4.056000e+01 7.796997e+01
-10 19854     -4.670001e+01 9.652002e+01
-7 19855     9.083002e+01 7.792999e+01
-10 19855     1.039900e+02 8.309998e+01
-15 19855     1.967100e+02 7.158002e+01
-7 19856     2.510400e+02 7.682001e+01
-15 19856     4.348199e+02 6.102002e+01
-7 19857     -4.076700e+02 7.656000e+01
-13 19857     3.412000e+01 -2.359200e+02
-7 19858     -1.215000e+02 7.188000e+01
-10 19858     -1.351100e+02 9.913000e+01
-12 19858     -6.516998e+01 1.744000e+01
-7 19859     -4.092400e+02 6.969000e+01
-15 19859     -3.969400e+02 1.436600e+02
-7 19860     -3.578700e+02 6.878998e+01
-15 19860     -3.306700e+02 1.373800e+02
-7 19861     -4.611700e+02 6.696997e+01
-10 19861     -4.741700e+02 1.538900e+02
-15 19861     -4.638900e+02 1.445200e+02
-7 19862     7.320601e+02 6.633002e+01
-9 19862     6.049600e+02 6.483002e+01
-7 19863     -4.517500e+02 6.606000e+01
-10 19863     -4.634600e+02 1.519000e+02
-7 19864     -4.710700e+02 6.550000e+01
-10 19864     -4.849900e+02 1.532100e+02
-7 19865     7.449399e+02 6.529999e+01
-9 19865     6.159500e+02 6.777002e+01
-7 19866     -4.729600e+02 6.240997e+01
-10 19866     -4.878500e+02 1.502200e+02
-15 19866     -4.797600e+02 1.392300e+02
-7 19867     3.309200e+02 6.245001e+01
-10 19867     3.999600e+02 5.142999e+01
-7 19868     4.485000e+02 6.209998e+01
-15 19868     7.813500e+02 4.751001e+01
-7 19869     -3.634600e+02 5.781000e+01
-15 19869     -3.399900e+02 1.227000e+02
-7 19870     -2.004500e+02 5.440997e+01
-15 19870     -1.819600e+02 7.440997e+01
-7 19871     2.333500e+02 5.303998e+01
-10 19871     2.757200e+02 4.528003e+01
-7 19872     -4.594700e+02 5.010999e+01
-15 19872     -4.646900e+02 1.214900e+02
-7 19873     -2.093100e+02 5.001001e+01
-9 19873     -1.118700e+02 1.444000e+01
-7 19874     7.127100e+02 4.903998e+01
-9 19874     5.914301e+02 4.289001e+01
-7 19875     -1.730600e+02 4.853003e+01
-15 19875     -1.493300e+02 6.266998e+01
-7 19876     2.559399e+02 4.789001e+01
-10 19876     3.044000e+02 3.871997e+01
-7 19877     4.469000e+01 4.621997e+01
-10 19877     4.815997e+01 5.142999e+01
-7 19878     -5.246600e+02 4.123999e+01
-10 19878     -5.484900e+02 1.294800e+02
-15 19878     -5.492300e+02 1.154500e+02
-7 19879     -5.246600e+02 4.123999e+01
-10 19879     -5.484900e+02 1.294800e+02
-7 19880     -4.264200e+02 3.897998e+01
-15 19880     -4.243100e+02 1.029400e+02
-7 19881     -4.235800e+02 3.752002e+01
-13 19881     2.144000e+01 -2.681600e+02
-7 19882     -3.891400e+02 3.648999e+01
-15 19882     -3.770400e+02 9.576001e+01
-7 19883     2.755500e+02 3.246997e+01
-12 19883     4.001700e+02 1.150024e+00
-15 19883     4.648000e+02 -3.059998e+00
-7 19884     -1.751300e+02 3.151001e+01
-10 19884     -1.982500e+02 5.846002e+01
-15 19884     -1.550700e+02 3.953998e+01
-7 19885     -2.557000e+02 3.059003e+01
-10 19885     -2.826800e+02 6.908002e+01
-15 19885     -2.525300e+02 5.040997e+01
-7 19886     -2.557000e+02 3.059003e+01
-10 19886     -2.826800e+02 6.908002e+01
-15 19886     -2.525300e+02 5.040997e+01
-7 19887     -1.828300e+02 3.063000e+01
-10 19887     -2.055600e+02 5.941998e+01
-13 19887     2.794000e+02 -2.867600e+02
-15 19887     -1.634800e+02 4.034998e+01
-7 19888     3.131500e+02 2.839001e+01
-15 19888     5.183000e+02 -1.270001e+01
-7 19889     2.669800e+02 2.802002e+01
-15 19889     4.516000e+02 -8.489990e+00
-7 19890     -3.652700e+02 2.578998e+01
-10 19890     -3.733800e+02 9.573999e+01
-7 19891     5.532400e+02 2.195001e+01
-10 19891     7.039500e+02 7.000122e-01
-7 19892     2.771200e+02 1.553003e+01
-10 19892     3.241400e+02 -1.809998e+00
-15 19892     4.620800e+02 -2.759998e+01
-7 19893     2.414000e+02 1.344000e+01
-15 19893     4.104200e+02 -2.684998e+01
-7 19894     2.960601e+02 1.215002e+01
-15 19894     4.884600e+02 -3.459998e+01
-7 19895     2.960601e+02 1.215002e+01
-15 19895     4.884600e+02 -3.459998e+01
-7 19896     -4.099500e+02 8.409973e+00
-10 19896     -4.262800e+02 8.000000e+01
-7 19897     -2.535400e+02 8.510010e+00
-10 19897     -2.850900e+02 4.191998e+01
-15 19897     -2.555300e+02 1.912000e+01
-7 19898     4.415800e+02 6.719971e+00
-15 19898     7.557000e+02 -3.434998e+01
-7 19899     -2.035600e+02 3.760010e+00
-15 19899     -1.920500e+02 7.349976e+00
-7 19900     -2.035600e+02 3.760010e+00
-15 19900     -1.920500e+02 7.349976e+00
-7 19901     -1.296500e+02 3.309998e+00
-10 19901     -1.524000e+02 2.109998e+01
-15 19901     -1.020200e+02 -3.169983e+00
-7 19902     1.375400e+02 2.650024e+00
-10 19902     1.515400e+02 -7.950012e+00
-15 19902     2.541600e+02 -3.533002e+01
-7 19903     -1.155700e+02 2.070007e+00
-10 19903     -1.376300e+02 1.689001e+01
-7 19904     8.565997e+01 -1.000977e-02
-10 19904     9.058002e+01 -5.979980e+00
-7 19905     -4.744700e+02 -2.059998e+00
-10 19905     -4.991200e+02 7.354999e+01
-15 19905     -4.935900e+02 5.147998e+01
-7 19906     -2.530300e+02 -4.090027e+00
-15 19906     -2.540700e+02 2.890015e+00
-7 19907     -4.774300e+02 -6.780029e+00
-15 19907     -4.979900e+02 4.503998e+01
-7 19908     -4.321600e+02 -7.039978e+00
-15 19908     -4.406300e+02 4.045001e+01
-7 19909     6.599976e+00 -6.979980e+00
-15 19909     7.295001e+01 -3.395001e+01
-7 19910     2.760200e+02 -6.830017e+00
-10 19910     3.182200e+02 -2.959003e+01
-15 19910     4.546899e+02 -6.023999e+01
-7 19911     9.195001e+01 -7.770020e+00
-15 19911     1.885900e+02 -4.553003e+01
-7 19912     2.585999e+01 -8.460022e+00
-10 19912     2.015002e+01 -1.010999e+01
-15 19912     9.875000e+01 -3.890997e+01
-7 19913     2.815400e+02 -1.132001e+01
-8 19913     4.763300e+02 -1.258200e+02
-10 19913     3.237000e+02 -3.565997e+01
-7 19914     -2.491200e+02 -1.251001e+01
-12 19914     -2.167600e+02 -1.015700e+02
-7 19915     1.488700e+02 -1.270001e+01
-12 19915     2.688000e+02 -5.427002e+01
-7 19916     -2.517900e+02 -1.341998e+01
-15 19916     -2.524300e+02 -8.359985e+00
-7 19917     2.976801e+02 -1.509998e+01
-10 19917     3.418700e+02 -4.200000e+01
-7 19918     6.169301e+02 -1.526001e+01
-12 19918     7.659100e+02 -5.240997e+01
-7 19919     2.196700e+02 -2.034998e+01
-15 19919     3.704301e+02 -7.353998e+01
-7 19920     -1.477400e+02 -2.084998e+01
-15 19920     -1.262800e+02 -3.290002e+01
-7 19921     -8.682001e+01 -2.107001e+01
-15 19921     -5.040002e+01 -4.258002e+01
-7 19922     -1.412800e+02 -2.427002e+01
-15 19922     -1.182300e+02 -3.859003e+01
-7 19923     2.123000e+02 -2.421997e+01
-10 19923     2.388700e+02 -4.448999e+01
-12 19923     3.414301e+02 -6.465997e+01
-13 19923     6.329800e+02 -3.628400e+02
-15 19923     3.595100e+02 -7.841998e+01
-7 19924     -5.173900e+02 -3.060999e+01
-15 19924     -5.535300e+02 1.728998e+01
-7 19925     -4.660700e+02 -3.294000e+01
-15 19925     -4.884100e+02 8.989990e+00
-7 19926     -1.422400e+02 -3.306000e+01
-15 19926     -1.211100e+02 -5.072998e+01
-7 19927     -4.372800e+02 -3.503998e+01
-15 19927     -4.523000e+02 2.770020e+00
-7 19928     6.433000e+02 -3.627002e+01
-12 19928     8.008900e+02 -7.241998e+01
-7 19929     -5.607000e+02 -3.791998e+01
-15 19929     -6.091600e+02 1.134998e+01
-7 19930     -4.218900e+02 -3.932001e+01
-15 19930     -4.334600e+02 -4.590027e+00
-7 19931     5.052800e+02 -3.978998e+01
-15 19931     8.400699e+02 -1.108100e+02
-7 19932     -5.539900e+02 -4.053003e+01
-10 19932     -5.925300e+02 3.608002e+01
-15 19932     -6.014800e+02 7.619995e+00
-7 19933     2.138300e+02 -4.031000e+01
-10 19933     2.367400e+02 -6.442999e+01
-15 19933     3.565900e+02 -1.017600e+02
-7 19934     -2.181900e+02 -4.162000e+01
-10 19934     -2.554500e+02 -2.139001e+01
-12 19934     -1.686600e+02 -1.254300e+02
-7 19935     -5.838000e+02 -4.691998e+01
-15 19935     -6.402600e+02 1.849976e+00
-7 19936     -5.136500e+02 -4.792999e+01
-8 19936     -3.376100e+02 -2.888200e+02
-9 19936     -5.064800e+02 -2.235200e+02
-13 19936     -5.428998e+01 -3.341700e+02
-15 19936     -5.517400e+02 -7.020020e+00
-7 19937     1.975100e+02 -4.828003e+01
-10 19937     2.163300e+02 -7.215997e+01
-7 19938     -3.111300e+02 -5.248999e+01
-15 19938     -3.078900e+02 -4.128998e+01
-7 19939     -6.240000e+02 -5.365002e+01
-12 19939     -7.103000e+02 -2.167100e+02
-7 19940     -5.213500e+02 -5.542999e+01
-15 19940     -5.626100e+02 -1.566998e+01
-7 19941     5.694301e+02 -5.985999e+01
-10 19941     7.065800e+02 -1.033400e+02
-7 19942     -4.255500e+02 -6.832001e+01
-15 19942     -4.442800e+02 -4.371997e+01
-7 19943     1.860699e+02 -6.910999e+01
-15 19943     3.103000e+02 -1.394400e+02
-7 19944     -4.918900e+02 -7.040002e+01
-15 19944     -5.285300e+02 -3.953998e+01
-7 19945     -7.702002e+01 -7.260999e+01
-10 19945     -1.042500e+02 -7.303003e+01
-7 19946     -4.678600e+02 -7.369000e+01
-15 19946     -4.988000e+02 -4.631000e+01
-7 19947     -5.290100e+02 -7.577002e+01
-8 19947     -3.474000e+02 -3.120700e+02
-10 19947     -5.703500e+02 -7.510010e+00
-13 19947     -6.742999e+01 -3.570000e+02
-15 19947     -5.765600e+02 -4.289001e+01
-7 19948     -6.423100e+02 -7.879999e+01
-10 19948     -6.958800e+02 5.900269e-01
-13 19948     -1.659200e+02 -3.495000e+02
-15 19948     -7.195100e+02 -3.469000e+01
-7 19949     3.962600e+02 -7.954999e+01
-15 19949     6.634000e+02 -1.567400e+02
-7 19950     -5.002500e+02 -8.573999e+01
-15 19950     -5.426200e+02 -5.932001e+01
-7 19951     -1.010300e+02 -8.775000e+01
-15 19951     -7.876001e+01 -1.305400e+02
-7 19952     -2.481000e+01 -8.778003e+01
-15 19952     1.950000e+01 -1.412200e+02
-7 19953     -4.881600e+02 -8.989001e+01
-15 19953     -5.274700e+02 -6.634003e+01
-7 19954     -6.935999e+01 -9.009003e+01
-10 19954     -9.815997e+01 -9.462000e+01
-15 19954     -3.942999e+01 -1.386900e+02
-7 19955     8.045001e+01 -9.004999e+01
-15 19955     1.594600e+02 -1.570300e+02
-7 19956     8.045001e+01 -9.004999e+01
-15 19956     1.594600e+02 -1.570300e+02
-7 19957     1.165100e+02 -8.989001e+01
-10 19957     1.137000e+02 -1.139800e+02
-15 19957     2.094000e+02 -1.606200e+02
-7 19958     -8.584998e+01 -9.022998e+01
-10 19958     -1.171000e+02 -9.356000e+01
-15 19958     -6.167999e+01 -1.373200e+02
-7 19959     -2.300400e+02 -9.322998e+01
-10 19959     -2.610800e+02 -7.025000e+01
-15 19959     -2.247900e+02 -1.124200e+02
-7 19960     -6.703998e+01 -9.329999e+01
-15 19960     -3.665002e+01 -1.426700e+02
-7 19961     1.516000e+02 -9.540002e+01
-15 19961     2.605200e+02 -1.709900e+02
-7 19962     -6.229500e+02 -9.590002e+01
-10 19962     -6.767600e+02 -2.133002e+01
-13 19962     -1.490400e+02 -3.659400e+02
-15 19962     -6.983300e+02 -5.995001e+01
-7 19963     -5.086000e+02 -1.016500e+02
-10 19963     -5.517700e+02 -3.976001e+01
-7 19964     -6.184200e+02 -1.018300e+02
-8 19964     -4.371300e+02 -3.397300e+02
-7 19965     -6.205400e+02 -1.040900e+02
-10 19965     -6.750600e+02 -3.150000e+01
-15 19965     -6.961800e+02 -7.158002e+01
-7 19966     -7.254900e+02 -1.088500e+02
-15 19966     -8.275500e+02 -6.659998e+01
-7 19967     -5.102600e+02 -1.092000e+02
-15 19967     -5.592100e+02 -9.040997e+01
-7 19968     -5.274000e+02 -1.108600e+02
-15 19968     -5.812100e+02 -9.010999e+01
-7 19969     1.140600e+02 -1.160400e+02
-9 19969     2.410400e+02 -6.492999e+01
-7 19970     -4.510400e+02 -1.199400e+02
-13 19970     2.940002e+00 -4.014300e+02
-7 19971     5.007300e+02 -1.213500e+02
-15 19971     8.107100e+02 -2.320600e+02
-7 19972     -3.901200e+02 -1.259500e+02
-12 19972     -4.063000e+02 -2.766100e+02
-15 19972     -4.105600e+02 -1.260400e+02
-7 19973     2.834000e+02 -1.263700e+02
-10 19973     3.260100e+02 -1.607400e+02
-7 19974     5.018500e+02 -1.299800e+02
-15 19974     8.098500e+02 -2.449500e+02
-7 19975     5.320800e+02 -1.312400e+02
-15 19975     8.556100e+02 -2.513000e+02
-7 19976     2.439100e+02 -1.390400e+02
-10 19976     2.755500e+02 -1.736700e+02
-7 19977     -1.899200e+02 -1.416500e+02
-12 19977     -1.370200e+02 -2.573700e+02
-7 19978     5.956801e+02 -1.424900e+02
-12 19978     7.736899e+02 -1.925300e+02
-7 19979     9.657001e+01 -1.502300e+02
-10 19979     9.225000e+01 -1.765400e+02
-7 19980     -5.138800e+02 -1.573500e+02
-15 19980     -5.730600e+02 -1.544400e+02
-7 19981     -7.246997e+01 -1.600000e+02
-12 19981     1.653003e+01 -2.586900e+02
-7 19982     -2.958900e+02 -1.618500e+02
-13 19982     1.464500e+02 -4.525100e+02
-7 19983     -6.032800e+02 -1.625800e+02
-10 19983     -6.656500e+02 -1.010400e+02
-15 19983     -6.857600e+02 -1.514400e+02
-7 19984     -6.032800e+02 -1.625800e+02
-10 19984     -6.656500e+02 -1.010400e+02
-15 19984     -6.857600e+02 -1.514400e+02
-7 19985     -5.255100e+02 -1.691000e+02
-10 19985     -5.808100e+02 -1.163600e+02
-15 19985     -5.897500e+02 -1.690100e+02
-7 19986     5.286000e+02 -1.712400e+02
-12 19986     7.033000e+02 -2.308700e+02
-15 19986     8.395000e+02 -3.101000e+02
-7 19987     1.265800e+02 -1.837200e+02
-10 19987     1.269400e+02 -2.150200e+02
-7 19988     -6.059100e+02 -1.842200e+02
-10 19988     -6.719500e+02 -1.250200e+02
-15 19988     -6.932600e+02 -1.799600e+02
-7 19989     -3.991400e+02 -1.855600e+02
-15 19989     -4.339900e+02 -2.055300e+02
-7 19990     -4.885700e+02 -1.865200e+02
-8 19990     -2.805500e+02 -3.988700e+02
-9 19990     -4.164800e+02 -3.236000e+02
-10 19990     -5.430600e+02 -1.407500e+02
-15 19990     -5.470600e+02 -1.967600e+02
-7 19991     3.892999e+01 -1.870200e+02
-15 19991     1.067800e+02 -2.749300e+02
-7 19992     1.074500e+02 -1.945300e+02
-10 19992     1.044400e+02 -2.252900e+02
-7 19993     -4.623600e+02 -1.955900e+02
-10 19993     -5.155900e+02 -1.535600e+02
-15 19993     -5.158200e+02 -2.117000e+02
-7 19994     5.039500e+02 -2.012300e+02
-15 19994     7.939600e+02 -3.507400e+02
-7 19995     -6.925100e+02 -2.022100e+02
-15 19995     -8.040900e+02 -1.949700e+02
-7 19996     5.033199e+02 -2.037900e+02
-10 19996     5.914301e+02 -2.747400e+02
-15 19996     7.923600e+02 -3.543400e+02
-7 19997     -4.981600e+02 -2.088100e+02
-15 19997     -5.630800e+02 -2.250800e+02
-7 19998     4.204100e+02 -2.096300e+02
-15 19998     6.672400e+02 -3.493600e+02
-7 19999     7.770001e+01 -2.223500e+02
-10 19999     6.875000e+01 -2.528000e+02
-7 20000     3.359900e+02 -2.264300e+02
-10 20000     3.797600e+02 -2.829300e+02
-7 20001     3.792300e+02 -2.341800e+02
-15 20001     6.009100e+02 -3.785200e+02
-7 20002     3.792300e+02 -2.341800e+02
-10 20002     4.340000e+02 -2.955300e+02
-7 20003     3.518000e+02 -2.401500e+02
-10 20003     3.975900e+02 -3.005600e+02
-15 20003     5.568400e+02 -3.840300e+02
-7 20004     4.684301e+02 -2.455800e+02
-15 20004     7.289200e+02 -4.101900e+02
-7 20005     -1.299600e+02 -2.540300e+02
-10 20005     -1.700500e+02 -2.645600e+02
-7 20006     2.764001e+01 -2.640500e+02
-10 20006     5.349976e+00 -2.950400e+02
-12 20006     1.464100e+02 -3.778700e+02
-7 20007     5.263000e+01 -2.678800e+02
-12 20007     1.776200e+02 -3.795100e+02
-7 20008     3.439700e+02 -2.685900e+02
-10 20008     3.837800e+02 -3.331600e+02
-7 20009     -9.371002e+01 -2.710400e+02
-15 20009     -7.453998e+01 -3.676200e+02
-7 20010     4.672900e+02 -2.781900e+02
-15 20010     7.186500e+02 -4.578500e+02
-7 20011     -1.263800e+02 -2.789100e+02
-15 20011     -1.106700e+02 -3.712500e+02
-7 20012     -9.271997e+01 -2.820300e+02
-9 20012     7.006000e+01 -2.854400e+02
-7 20013     -4.394400e+02 -2.828600e+02
-10 20013     -5.045400e+02 -2.569900e+02
-7 20014     -2.562600e+02 -2.853700e+02
-15 20014     -2.747900e+02 -3.592400e+02
-7 20015     -4.922700e+02 -2.871500e+02
-15 20015     -5.714100e+02 -3.309600e+02
-7 20016     -4.922700e+02 -2.871500e+02
-15 20016     -5.714100e+02 -3.309600e+02
-7 20017     -4.354800e+02 -2.891500e+02
-10 20017     -5.011300e+02 -2.644900e+02
-7 20018     -3.788900e+02 -2.943700e+02
-15 20018     -4.302300e+02 -3.548300e+02
-7 20019     -5.804100e+02 -2.972800e+02
-15 20019     -6.835200e+02 -3.342200e+02
-7 20020     -3.567400e+02 -3.011100e+02
-15 20020     -4.037200e+02 -3.667100e+02
-7 20021     -6.735600e+02 -3.051900e+02
-15 20021     -8.001700e+02 -3.331300e+02
-7 20022     -2.735400e+02 -3.139700e+02
-15 20022     -3.007600e+02 -3.952200e+02
-7 20023     4.596000e+02 -3.172400e+02
-12 20023     6.596600e+02 -4.013300e+02
-7 20024     -5.637000e+02 -3.181300e+02
-15 20024     -6.667400e+02 -3.635200e+02
-7 20025     -5.456000e+01 -3.192400e+02
-15 20025     -2.310999e+01 -4.349399e+02
-7 20026     3.204900e+02 -3.192700e+02
-10 20026     3.464600e+02 -3.911700e+02
-7 20027     6.572998e+01 -3.217400e+02
-15 20027     1.361200e+02 -4.560400e+02
-7 20028     -5.503998e+01 -3.233500e+02
-15 20028     -2.453003e+01 -4.401500e+02
-7 20029     3.094200e+02 -3.246100e+02
-10 20029     3.317400e+02 -3.959000e+02
-7 20030     1.526001e+01 -3.277900e+02
-10 20030     -1.221997e+01 -3.643200e+02
-7 20031     -5.142600e+02 -3.465400e+02
-15 20031     -6.112200e+02 -4.076700e+02
-7 20032     -1.894000e+02 -3.485800e+02
-15 20032     -2.004600e+02 -4.535000e+02
-7 20033     -4.508100e+02 -3.491500e+02
-15 20033     -5.321200e+02 -4.190900e+02
-7 20034     -5.201000e+02 -3.510500e+02
-15 20034     -6.188100e+02 -4.128200e+02
-7 20035     -4.375900e+02 -3.522300e+02
-15 20035     -5.157300e+02 -4.255400e+02
-7 20036     -2.203300e+02 -3.527500e+02
-15 20036     -2.412600e+02 -4.547800e+02
-7 20037     -2.569100e+02 -3.536200e+02
-15 20037     -2.883100e+02 -4.507700e+02
-7 20038     -3.196900e+02 -3.564200e+02
-9 20038     -1.510400e+02 -4.184000e+02
-7 20039     -2.517700e+02 -3.581600e+02
-15 20039     -2.825200e+02 -4.577300e+02
-7 20040     -4.204999e+01 -3.725400e+02
-15 20040     -1.687000e+01 -5.085900e+02
-7 20041     3.054900e+02 -3.734600e+02
-10 20041     3.168400e+02 -4.537300e+02
-7 20042     -3.409700e+02 -3.771800e+02
-15 20042     -3.992600e+02 -4.708400e+02
-7 20043     -2.206800e+02 -3.770000e+02
-15 20043     -2.470200e+02 -4.876700e+02
-7 20044     -4.192500e+02 -3.800200e+02
-15 20044     -4.986300e+02 -4.647600e+02
-7 20045     -3.095600e+02 -3.797100e+02
-15 20045     -3.599800e+02 -4.786000e+02
-7 20046     5.367900e+02 -3.805700e+02
-10 20046     5.967600e+02 -4.980800e+02
-7 20047     1.338800e+02 -3.859000e+02
-10 20047     1.158300e+02 -4.460900e+02
-7 20048     6.174800e+02 -3.866400e+02
-10 20048     6.975100e+02 -5.187400e+02
-7 20049     5.325400e+02 -3.874200e+02
-10 20049     5.896500e+02 -5.053800e+02
-7 20050     -6.430200e+02 -3.987500e+02
-15 20050     -7.803100e+02 -4.606500e+02
-7 20051     -2.094100e+02 -4.022000e+02
-9 20051     -1.137000e+01 -4.266700e+02
-7 20052     -7.891998e+01 -4.024300e+02
-15 20052     -6.882001e+01 -5.431400e+02
-7 20053     -6.173700e+02 -4.028600e+02
-15 20053     -7.497900e+02 -4.694301e+02
-7 20054     -4.551700e+02 -4.041600e+02
-10 20054     -5.420300e+02 -3.950000e+02
-15 20054     -5.490500e+02 -4.920900e+02
-7 20055     -4.551700e+02 -4.041600e+02
-10 20055     -5.420300e+02 -3.950000e+02
-15 20055     -5.490500e+02 -4.920900e+02
-7 20056     1.383600e+02 -4.039300e+02
-15 20056     2.202500e+02 -5.807800e+02
-7 20057     4.155100e+02 -4.039800e+02
-10 20057     4.432000e+02 -5.072300e+02
-7 20058     -7.219971e+00 -4.043300e+02
-15 20058     2.510999e+01 -5.573500e+02
-7 20059     5.405900e+02 -4.059000e+02
-10 20059     5.959600e+02 -5.295500e+02
-7 20060     -4.446997e+01 -4.065800e+02
-15 20060     -2.440002e+01 -5.544000e+02
-7 20061     1.287100e+02 -4.065900e+02
-10 20061     1.060600e+02 -4.692300e+02
-7 20062     -5.085400e+02 -4.070300e+02
-15 20062     -6.159500e+02 -4.887900e+02
-7 20063     -3.133400e+02 -4.077100e+02
-9 20063     -1.174200e+02 -4.558400e+02
-10 20063     -3.874100e+02 -4.148600e+02
-15 20063     -3.713700e+02 -5.159900e+02
-7 20064     -4.540900e+02 -4.110000e+02
-10 20064     -5.418300e+02 -4.028600e+02
-7 20065     3.691899e+02 -4.107800e+02
-12 20065     5.763700e+02 -5.191000e+02
-7 20066     4.960022e+00 -4.116300e+02
-15 20066     3.971997e+01 -5.693900e+02
-7 20067     1.288000e+01 -4.150200e+02
-15 20067     4.917999e+01 -5.751400e+02
-7 20068     -3.051001e+01 -4.154900e+02
-15 20068     -9.400024e+00 -5.688500e+02
-7 20069     5.144900e+02 -4.160500e+02
-10 20069     5.612900e+02 -5.376300e+02
-7 20070     5.144900e+02 -4.160500e+02
-10 20070     5.612900e+02 -5.376300e+02
-7 20071     -5.160100e+02 -4.167800e+02
-15 20071     -6.272200e+02 -5.006200e+02
-7 20072     3.581000e+01 -4.171300e+02
-15 20072     7.901001e+01 -5.821000e+02
-7 20073     -4.640500e+02 -4.173800e+02
-10 20073     -5.529300e+02 -4.093199e+02
-15 20073     -5.623600e+02 -5.086200e+02
-7 20074     -2.224200e+02 -4.189700e+02
-15 20074     -2.579700e+02 -5.446500e+02
-7 20075     1.604399e+02 -4.213100e+02
-10 20075     1.398700e+02 -4.908199e+02
-7 20076     -7.101001e+01 -4.217200e+02
-15 20076     -6.309003e+01 -5.713500e+02
-7 20077     3.524301e+02 -4.228400e+02
-10 20077     3.631200e+02 -5.205800e+02
-7 20078     1.709800e+02 -4.237400e+02
-10 20078     1.521400e+02 -4.948700e+02
-7 20079     1.400800e+02 -4.242400e+02
-10 20079     1.155500e+02 -4.914500e+02
-7 20080     -3.003300e+02 -4.322200e+02
-10 20080     -3.774100e+02 -4.448101e+02
-7 20081     2.612800e+02 -4.323900e+02
-10 20081     2.540300e+02 -5.183000e+02
-7 20082     3.614600e+02 -4.350601e+02
-10 20082     3.713600e+02 -5.368700e+02
-7 20083     -3.060800e+02 -4.380300e+02
-15 20083     -3.684800e+02 -5.580601e+02
-7 20084     3.398800e+02 -4.400601e+02
-10 20084     3.450200e+02 -5.392800e+02
-7 20085     -4.688800e+02 -4.414900e+02
-10 20085     -5.635200e+02 -4.366000e+02
-15 20085     -5.737100e+02 -5.401300e+02
-7 20086     -3.710300e+02 -4.446000e+02
-15 20086     -4.516800e+02 -5.572100e+02
-7 20087     2.601400e+02 -4.462100e+02
-10 20087     2.500800e+02 -5.347300e+02
-7 20088     -2.330300e+02 -4.494200e+02
-10 20088     -3.065200e+02 -4.727900e+02
-7 20089     3.159200e+02 -4.511100e+02
-12 20089     5.228400e+02 -5.721200e+02
-7 20090     2.845699e+02 -4.558700e+02
-12 20090     4.868900e+02 -5.812400e+02
-7 20091     4.733600e+02 -4.589800e+02
-10 20091     5.018000e+02 -5.835800e+02
-7 20092     1.593101e+02 -4.600800e+02
-10 20092     1.308300e+02 -5.362800e+02
-7 20093     8.806000e+01 -4.604000e+02
-10 20093     4.963000e+01 -5.269900e+02
-7 20094     2.772100e+02 -4.635400e+02
-10 20094     2.665400e+02 -5.579200e+02
-7 20095     -3.263900e+02 -4.705400e+02
-10 20095     -4.124100e+02 -4.859100e+02
-7 20096     1.792400e+02 -4.711899e+02
-10 20096     1.515700e+02 -5.525699e+02
-7 20097     1.792400e+02 -4.711899e+02
-10 20097     1.515700e+02 -5.525699e+02
-12 20097     3.629900e+02 -6.128300e+02
-7 20098     -6.117500e+02 -4.714700e+02
-10 20098     -7.248100e+02 -4.560601e+02
-15 20098     -7.565300e+02 -5.602800e+02
-7 20099     2.679900e+02 -4.720100e+02
-10 20099     2.541200e+02 -5.668500e+02
-7 20100     4.957100e+02 -4.724301e+02
-10 20100     5.270100e+02 -6.039500e+02
-7 20101     3.186600e+02 -4.729500e+02
-10 20101     3.134700e+02 -5.758600e+02
-7 20102     -2.110100e+02 -4.733600e+02
-10 20102     -2.865300e+02 -5.030900e+02
-7 20103     5.218700e+02 -4.749900e+02
-10 20103     5.588199e+02 -6.114399e+02
-7 20104     -2.761100e+02 -4.758000e+02
-10 20104     -3.582000e+02 -4.976600e+02
-7 20105     2.552900e+02 -4.810100e+02
-12 20105     4.575000e+02 -6.148500e+02
-7 20106     -1.922400e+02 -4.818300e+02
-10 20106     -2.675600e+02 -5.154500e+02
-7 20107     2.287600e+02 -4.846400e+02
-10 20107     2.062100e+02 -5.754500e+02
-7 20108     -1.565002e+01 -4.853600e+02
-10 20108     -7.215002e+01 -5.424301e+02
-7 20109     -2.477600e+02 -4.894800e+02
-10 20109     -3.299400e+02 -5.171400e+02
-7 20110     8.900146e-01 -4.959700e+02
-10 20110     -5.569000e+01 -5.569200e+02
-7 20111     2.411700e+02 -5.020800e+02
-10 20111     2.173400e+02 -5.985300e+02
-7 20112     9.689001e+01 -5.039900e+02
-10 20112     5.137000e+01 -5.795300e+02
-7 20113     2.521600e+02 -5.170200e+02
-10 20113     2.273400e+02 -6.184800e+02
-7 20114     -1.837700e+02 -5.242600e+02
-10 20114     -2.662800e+02 -5.655800e+02
-7 20115     9.047998e+01 -5.269700e+02
-10 20115     3.946997e+01 -6.059200e+02
-7 20116     9.478003e+01 -5.353000e+02
-10 20116     4.279999e+01 -6.164600e+02
-7 20117     -1.860800e+02 -5.548500e+02
-10 20117     -2.734800e+02 -6.005601e+02
-7 20118     -2.311500e+02 -5.679301e+02
-10 20118     -3.250900e+02 -6.099800e+02
-7 20119     -1.658200e+02 5.874400e+02
-13 20119     2.409200e+02 1.840600e+02
-14 20119     3.757600e+02 -2.205700e+02
-7 20120     -2.069700e+02 5.759600e+02
-11 20120     1.653600e+02 -2.583100e+02
-7 20121     4.767200e+02 5.741500e+02
-9 20121     3.001400e+02 4.329800e+02
-12 20121     5.316801e+02 6.029000e+02
-7 20122     -2.964001e+01 5.725500e+02
-11 20122     3.319301e+02 -2.694900e+02
-7 20123     4.595400e+02 5.718800e+02
-9 20123     2.848101e+02 4.281800e+02
-7 20124     5.250000e+00 5.604000e+02
-12 20124     -4.860999e+01 5.052600e+02
-14 20124     5.461500e+02 -2.581100e+02
-7 20125     1.295300e+02 5.544800e+02
-9 20125     -1.170200e+02 2.579500e+02
-7 20126     3.099976e-01 5.406400e+02
-9 20126     -2.166300e+02 2.507600e+02
-14 20126     5.392700e+02 -2.782200e+02
-7 20127     -4.260999e+01 5.336400e+02
-9 20127     -2.507100e+02 2.454600e+02
-7 20128     -2.229500e+02 5.290400e+02
-13 20128     1.896600e+02 1.372200e+02
-7 20129     -3.749300e+02 5.261700e+02
-12 20129     -4.681900e+02 4.576000e+02
-7 20130     -4.396500e+02 5.256900e+02
-11 20130     -4.428998e+01 -2.843000e+02
-12 20130     -5.406700e+02 4.559100e+02
-7 20131     -4.396500e+02 5.256900e+02
-11 20131     -4.428998e+01 -2.843000e+02
-7 20132     -5.390700e+02 5.224000e+02
-11 20132     -1.286100e+02 -2.794000e+02
-7 20133     -1.881700e+02 5.200900e+02
-13 20133     2.169600e+02 1.288800e+02
-14 20133     3.460500e+02 -2.872500e+02
-7 20134     -2.440002e+00 5.132000e+02
-13 20134     3.694500e+02 1.181000e+02
-7 20135     -5.424900e+02 5.003100e+02
-11 20135     -1.344000e+02 -2.962300e+02
-7 20136     -6.585999e+01 4.948800e+02
-9 20136     -2.668800e+02 2.097100e+02
-11 20136     2.944301e+02 -3.355500e+02
-7 20137     -1.017300e+02 4.829800e+02
-11 20137     2.589100e+02 -3.443300e+02
-13 20137     2.841300e+02 9.473001e+01
-7 20138     3.110800e+02 4.710700e+02
-9 20138     1.270300e+02 2.767000e+02
-13 20138     6.772000e+02 6.875000e+01
-7 20139     3.475601e+02 4.644900e+02
-10 20139     5.200900e+02 5.684200e+02
-7 20140     9.450012e+00 4.635100e+02
-11 20140     3.606600e+02 -3.704500e+02
-14 20140     5.511000e+02 -3.629000e+02
-7 20141     -4.827600e+02 4.593800e+02
-11 20141     -8.972998e+01 -3.344100e+02
-12 20141     -5.884400e+02 3.776100e+02
-7 20142     3.418199e+02 4.579700e+02
-10 20142     5.124500e+02 5.610000e+02
-7 20143     -5.713700e+02 4.489300e+02
-11 20143     -1.659800e+02 -3.348600e+02
-7 20144     -5.960200e+02 4.485500e+02
-8 20144     -4.628900e+02 1.192300e+02
-12 20144     -7.178300e+02 3.625200e+02
-7 20145     -2.063100e+02 4.484400e+02
-12 20145     -2.773200e+02 3.706700e+02
-7 20146     -5.922000e+02 4.474500e+02
-11 20146     -1.829500e+02 -3.340100e+02
-12 20146     -7.134000e+02 3.613300e+02
-7 20147     4.668900e+02 4.448600e+02
-8 20147     4.932400e+02 1.882700e+02
-9 20147     3.075200e+02 3.235800e+02
-12 20147     5.326100e+02 4.565500e+02
-7 20148     -2.085400e+02 4.416300e+02
-10 20148     -1.305000e+02 5.894600e+02
-7 20149     3.492000e+02 4.346900e+02
-9 20149     1.686100e+02 2.540900e+02
-7 20150     -4.139800e+02 4.278900e+02
-10 20150     -3.775300e+02 5.817200e+02
-7 20151     -5.712700e+02 4.167700e+02
-10 20151     -5.648400e+02 5.771600e+02
-7 20152     -1.996700e+02 4.068300e+02
-10 20152     -1.226900e+02 5.469600e+02
-13 20152     1.992600e+02 3.439001e+01
-14 20152     3.230900e+02 -4.046400e+02
-7 20153     -1.566300e+02 4.017900e+02
-10 20153     -7.287000e+01 5.376200e+02
-11 20153     1.951700e+02 -4.152800e+02
-13 20153     2.372600e+02 2.790997e+01
-14 20153     3.707800e+02 -4.150100e+02
-7 20154     -5.268200e+02 4.001100e+02
-10 20154     -5.121200e+02 5.548700e+02
-7 20155     -1.989600e+02 3.945300e+02
-10 20155     -1.245800e+02 5.312300e+02
-7 20156     -1.989600e+02 3.945300e+02
-10 20156     -1.245800e+02 5.312300e+02
-7 20157     -3.394300e+02 3.927600e+02
-11 20157     2.903003e+01 -4.040400e+02
-7 20158     -3.069600e+02 3.920600e+02
-13 20158     1.092800e+02 2.704999e+01
-14 20158     2.107500e+02 -4.091400e+02
-7 20159     -1.182000e+02 3.875300e+02
-15 20159     5.273999e+01 5.729600e+02
-7 20160     -5.548400e+02 3.871900e+02
-8 20160     -4.356500e+02 5.923001e+01
-12 20160     -6.720000e+02 2.909300e+02
-7 20161     -1.641400e+02 3.860000e+02
-10 20161     -8.498999e+01 5.181600e+02
-7 20162     1.898000e+02 3.813500e+02
-10 20162     3.319200e+02 4.863300e+02
-7 20163     6.878998e+01 3.775200e+02
-10 20163     1.867200e+02 4.899700e+02
-7 20164     5.607600e+02 3.766300e+02
-8 20164     5.847200e+02 1.488200e+02
-7 20165     1.108800e+02 3.762600e+02
-10 20165     2.366100e+02 4.854000e+02
-7 20166     1.067700e+02 3.697900e+02
-10 20166     2.292900e+02 4.773000e+02
-7 20167     -6.221300e+02 3.679600e+02
-13 20167     -1.388800e+02 2.427002e+01
-7 20168     -6.221300e+02 3.679600e+02
-13 20168     -1.388800e+02 2.427002e+01
-7 20169     -2.955700e+02 3.604300e+02
-10 20169     -2.407300e+02 4.960900e+02
-11 20169     6.340002e+01 -4.381500e+02
-7 20170     -4.457100e+02 3.599400e+02
-15 20170     -3.958500e+02 5.510700e+02
-7 20171     -2.554600e+02 3.597700e+02
-13 20171     1.541600e+02 -3.869995e+00
-14 20171     2.660400e+02 -4.509301e+02
-7 20172     -5.940300e+02 3.586400e+02
-15 20172     -5.984700e+02 5.529500e+02
-7 20173     -2.419500e+02 3.574300e+02
-10 20173     -1.799100e+02 4.880300e+02
-7 20174     1.877700e+02 3.559200e+02
-10 20174     3.240000e+02 4.543300e+02
-7 20175     1.877700e+02 3.559200e+02
-10 20175     3.240000e+02 4.543300e+02
-7 20176     5.403101e+02 3.559900e+02
-10 20176     7.243199e+02 4.049700e+02
-7 20177     -5.899600e+02 3.548000e+02
-10 20177     -5.881700e+02 5.058000e+02
-12 20177     -7.108000e+02 2.502600e+02
-7 20178     -5.821200e+02 3.539100e+02
-8 20178     -4.601700e+02 2.975000e+01
-13 20178     -1.104500e+02 1.078003e+01
-7 20179     6.277400e+02 3.532700e+02
-9 20179     4.647500e+02 2.866900e+02
-10 20179     8.314700e+02 3.915100e+02
-7 20180     -3.175200e+02 3.479300e+02
-14 20180     1.984100e+02 -4.559900e+02
-7 20181     -4.795600e+02 3.439700e+02
-13 20181     -3.257001e+01 -3.869995e+00
-14 20181     3.320001e+01 -4.405900e+02
-7 20182     5.696700e+02 3.429500e+02
-8 20182     5.964399e+02 1.216200e+02
-7 20183     -3.550100e+02 3.411000e+02
-14 20183     1.570500e+02 -4.582000e+02
-7 20184     -5.029800e+02 3.394200e+02
-14 20184     9.539978e+00 -4.420800e+02
-7 20185     -2.974400e+02 3.381800e+02
-15 20185     -1.982100e+02 5.128600e+02
-7 20186     5.957600e+02 3.369600e+02
-10 20186     7.905699e+02 3.751100e+02
-12 20186     6.957000e+02 3.535200e+02
-7 20187     -5.406400e+02 3.355500e+02
-13 20187     -8.116998e+01 -6.780029e+00
-14 20187     -2.721997e+01 -4.411000e+02
-7 20188     -4.242600e+02 3.349900e+02
-13 20188     9.159973e+00 -1.440997e+01
-14 20188     8.435999e+01 -4.561200e+02
-7 20189     3.965500e+02 3.342800e+02
-10 20189     5.517200e+02 3.959400e+02
-12 20189     4.578600e+02 3.176500e+02
-7 20190     -5.934200e+02 3.249000e+02
-13 20190     -1.229900e+02 -1.260999e+01
-7 20191     -5.067100e+02 3.251700e+02
-14 20191     3.260010e+00 -4.565400e+02
-7 20192     -5.067100e+02 3.251700e+02
-11 20192     -1.287600e+02 -4.441500e+02
-14 20192     3.260010e+00 -4.565400e+02
-7 20193     -5.543100e+02 3.226600e+02
-11 20193     -1.703500e+02 -4.406100e+02
-7 20194     2.646200e+02 3.230000e+02
-15 20194     5.774399e+02 4.546200e+02
-7 20195     5.704100e+02 3.217800e+02
-8 20195     5.993000e+02 1.035800e+02
-12 20195     6.678000e+02 3.315800e+02
-7 20196     5.704100e+02 3.217800e+02
-12 20196     6.678000e+02 3.315800e+02
-7 20197     -4.719200e+02 3.179300e+02
-11 20197     -9.952002e+01 -4.547600e+02
-14 20197     3.550000e+01 -4.685000e+02
-7 20198     -5.169200e+02 3.132600e+02
-11 20198     -1.395000e+02 -4.533700e+02
-13 20198     -6.548999e+01 -2.682001e+01
-7 20199     -5.701100e+02 3.125100e+02
-10 20199     -5.655600e+02 4.559200e+02
-11 20199     -1.858900e+02 -4.475600e+02
-13 20199     -1.068700e+02 -2.435999e+01
-7 20200     -1.016400e+02 3.121600e+02
-10 20200     -2.615002e+01 4.205400e+02
-13 20200     2.916700e+02 -5.308002e+01
-14 20200     4.398900e+02 -5.216899e+02
-7 20201     -3.770300e+02 3.113700e+02
-11 20201     -2.009998e+01 -4.737600e+02
-7 20202     -4.610100e+02 3.090500e+02
-15 20202     -4.185600e+02 4.836100e+02
-7 20203     -4.911300e+02 3.071600e+02
-11 20203     -1.175600e+02 -4.618700e+02
-7 20204     -6.449100e+02 3.050300e+02
-10 20204     -6.515500e+02 4.540700e+02
-12 20204     -7.759100e+02 1.875700e+02
-7 20205     -2.206100e+02 3.027500e+02
-10 20205     -1.646200e+02 4.188900e+02
-7 20206     -3.700300e+02 3.016100e+02
-10 20206     -3.353600e+02 4.293500e+02
-7 20207     -4.929600e+02 3.008200e+02
-13 20207     -4.862000e+01 -3.884003e+01
-14 20207     1.117999e+01 -4.840100e+02
-7 20208     2.929399e+02 2.984900e+02
-15 20208     6.125900e+02 4.154300e+02
-7 20209     -5.717600e+02 2.981600e+02
-11 20209     -1.895500e+02 -4.595700e+02
-13 20209     -1.103800e+02 -3.590002e+01
-14 20209     -6.540002e+01 -4.765601e+02
-7 20210     -3.680600e+02 2.980500e+02
-10 20210     -3.336700e+02 4.250600e+02
-7 20211     2.866400e+02 2.980700e+02
-15 20211     6.027500e+02 4.150600e+02
-7 20212     -5.235500e+02 2.968500e+02
-13 20212     -7.322998e+01 -4.013000e+01
-7 20213     -5.204000e+02 2.917900e+02
-11 20213     -1.454600e+02 -4.711700e+02
-7 20214     -5.135200e+02 2.917800e+02
-13 20214     -6.588000e+01 -4.507001e+01
-7 20215     -3.811500e+02 2.919300e+02
-10 20215     -3.488400e+02 4.190500e+02
-13 20215     4.766998e+01 -5.348999e+01
-14 20215     1.309200e+02 -5.086500e+02
-7 20216     -5.693600e+02 2.904700e+02
-13 20216     -1.094300e+02 -4.284998e+01
-7 20217     -7.596002e+01 2.900500e+02
-15 20217     1.146002e+01 3.860500e+02
-7 20218     -4.103300e+02 2.876200e+02
-11 20218     -5.507001e+01 -4.918000e+02
-15 20218     -3.568500e+02 4.487300e+02
-7 20219     -5.800700e+02 2.862600e+02
-10 20219     -5.776900e+02 4.270200e+02
-7 20220     -5.506200e+02 2.814000e+02
-13 20220     -9.645001e+01 -5.159998e+01
-14 20220     -4.877002e+01 -4.970601e+02
-7 20221     -3.930700e+02 2.765600e+02
-10 20221     -3.649500e+02 4.009000e+02
-11 20221     -4.350000e+01 -5.042700e+02
-15 20221     -3.359200e+02 4.319000e+02
-7 20222     2.694700e+02 2.741300e+02
-15 20222     5.716400e+02 3.801400e+02
-7 20223     -2.734300e+02 2.737700e+02
-11 20223     5.983002e+01 -5.253101e+02
-7 20224     -7.391600e+02 2.725300e+02
-11 20224     -3.329600e+02 -4.599000e+02
-7 20225     -7.391600e+02 2.725300e+02
-11 20225     -3.329600e+02 -4.599000e+02
-7 20226     -6.935000e+02 2.685500e+02
-10 20226     -7.115800e+02 4.132900e+02
-7 20227     -4.148100e+02 2.673800e+02
-11 20227     -6.441998e+01 -5.100500e+02
-15 20227     -3.660700e+02 4.198700e+02
-7 20228     -5.736200e+02 2.658700e+02
-11 20228     -1.962200e+02 -4.870500e+02
-7 20229     -3.489900e+02 2.661000e+02
-10 20229     -3.162500e+02 3.844300e+02
-7 20230     2.724000e+02 2.642100e+02
-15 20230     5.735000e+02 3.651500e+02
-7 20231     -9.921002e+01 2.634900e+02
-10 20231     -8.673999e+01 3.219200e+02
-15 20231     -2.675000e+01 3.491800e+02
-7 20232     6.273101e+02 2.637900e+02
-9 20232     4.777300e+02 2.093200e+02
-7 20233     -6.635400e+02 2.624000e+02
-10 20233     -6.751100e+02 4.058100e+02
-7 20234     4.163300e+02 2.601200e+02
-8 20234     4.620500e+02 1.789999e+01
-7 20235     3.598900e+02 2.573600e+02
-10 20235     5.033400e+02 3.092400e+02
-13 20235     7.292600e+02 -1.235700e+02
-15 20235     6.862900e+02 3.418000e+02
-7 20236     6.140000e+02 2.529900e+02
-9 20236     4.685000e+02 1.964000e+02
-12 20236     7.273600e+02 2.586000e+02
-7 20237     -4.512700e+02 2.515300e+02
-11 20237     -9.915002e+01 -5.195699e+02
-13 20237     -1.091998e+01 -8.297998e+01
-7 20238     -5.551000e+02 2.457000e+02
-11 20238     -1.867900e+02 -5.083900e+02
-15 20238     -5.511000e+02 4.016500e+02
-7 20239     2.849700e+02 2.443900e+02
-15 20239     5.857900e+02 3.343300e+02
-7 20240     -6.828100e+02 2.402200e+02
-10 20240     -6.994600e+02 3.806600e+02
-14 20240     -1.847200e+02 -5.223101e+02
-7 20241     1.405500e+02 2.390200e+02
-13 20241     5.672000e+02 -1.275200e+02
-7 20242     1.780100e+02 2.359900e+02
-15 20242     3.516801e+02 2.899400e+02
-7 20243     -7.531000e+01 2.303000e+02
-10 20243     -6.770001e+01 2.769200e+02
-7 20244     -5.355300e+02 2.272900e+02
-10 20244     -5.322200e+02 3.543400e+02
-15 20244     -5.291500e+02 3.742000e+02
-7 20245     -5.928700e+02 2.248300e+02
-11 20245     -2.243300e+02 -5.222200e+02
-7 20246     -5.928700e+02 2.248300e+02
-11 20246     -2.243300e+02 -5.222200e+02
-7 20247     1.883900e+02 2.243800e+02
-13 20247     6.070699e+02 -1.424700e+02
-7 20248     1.883900e+02 2.243800e+02
-15 20248     3.659600e+02 2.742900e+02
-7 20249     -5.939100e+02 2.200900e+02
-13 20249     -1.325600e+02 -9.985999e+01
-14 20249     -9.772998e+01 -5.572100e+02
-7 20250     -3.971600e+02 2.142400e+02
-15 20250     -3.535600e+02 3.441700e+02
-7 20251     7.029800e+02 2.132500e+02
-9 20251     5.531500e+02 1.865000e+02
-7 20252     -1.489001e+01 2.127300e+02
-15 20252     7.023999e+01 2.669800e+02
-7 20253     7.023999e+01 2.115800e+02
-13 20253     5.097200e+02 -1.473500e+02
-7 20254     5.572200e+02 2.108400e+02
-10 20254     7.306100e+02 2.287400e+02
-7 20255     6.671002e+01 2.090800e+02
-10 20255     8.978998e+01 2.387300e+02
-7 20256     -3.701400e+02 2.077000e+02
-10 20256     -3.493500e+02 3.147200e+02
-15 20256     -3.191900e+02 3.322100e+02
-7 20257     2.022500e+02 2.035200e+02
-13 20257     6.191700e+02 -1.615100e+02
-7 20258     3.752000e+02 2.013400e+02
-10 20258     5.173300e+02 2.413500e+02
-13 20258     7.435100e+02 -1.756400e+02
-15 20258     7.038199e+02 2.610800e+02
-7 20259     3.185000e+02 2.005400e+02
-15 20259     6.242800e+02 2.663300e+02
-7 20260     7.696002e+01 1.953500e+02
-10 20260     1.005400e+02 2.215700e+02
-12 20260     1.600300e+02 1.819000e+02
-7 20261     3.289600e+02 1.917600e+02
-15 20261     6.375000e+02 2.522200e+02
-7 20262     1.116998e+01 1.881400e+02
-8 20262     2.266800e+02 4.114999e+01
-12 20262     8.416998e+01 1.687500e+02
-7 20263     5.825100e+02 1.854500e+02
-9 20263     4.515900e+02 1.270600e+02
-7 20264     6.305300e+02 1.849400e+02
-10 20264     8.178500e+02 1.862800e+02
-7 20265     -3.218000e+02 1.842100e+02
-10 20265     -2.988300e+02 2.821300e+02
-15 20265     -2.608000e+02 2.952300e+02
-7 20266     4.627600e+02 1.837500e+02
-10 20266     6.171500e+02 2.083700e+02
-7 20267     -7.379900e+02 1.816900e+02
-14 20267     -2.505300e+02 -5.768800e+02
-7 20268     4.611000e+02 1.808000e+02
-10 20268     6.160601e+02 2.042700e+02
-7 20269     4.513900e+02 1.763600e+02
-8 20269     5.025900e+02 -5.237000e+01
-7 20270     4.513900e+02 1.763600e+02
-8 20270     5.025900e+02 -5.237000e+01
-7 20271     -4.514900e+02 1.757700e+02
-10 20271     -4.463300e+02 2.837200e+02
-7 20272     -1.457500e+02 1.724200e+02
-10 20272     -1.506600e+02 2.188400e+02
-13 20272     3.165200e+02 -1.679800e+02
-7 20273     3.535200e+02 1.716900e+02
-15 20273     6.685500e+02 2.203100e+02
-7 20274     5.920400e+02 1.686200e+02
-9 20274     4.622900e+02 1.142800e+02
-10 20274     7.697400e+02 1.726000e+02
-12 20274     7.105500e+02 1.573200e+02
-7 20275     4.221100e+02 1.667300e+02
-10 20275     5.685500e+02 1.938500e+02
-7 20276     5.352200e+02 1.584600e+02
-9 20276     4.112600e+02 8.742001e+01
-10 20276     7.002600e+02 1.682700e+02
-12 20276     6.422600e+02 1.335500e+02
-7 20277     6.992300e+02 1.531100e+02
-9 20277     5.604301e+02 1.330400e+02
-7 20278     -3.811800e+02 1.501300e+02
-13 20278     5.438000e+01 -1.753500e+02
-7 20279     -3.811800e+02 1.501300e+02
-15 20279     -3.446200e+02 2.523100e+02
-7 20280     1.871400e+02 1.456900e+02
-12 20280     2.885000e+02 1.289400e+02
-7 20281     4.678000e+02 1.346600e+02
-15 20281     8.275800e+02 1.535500e+02
-7 20282     -3.911200e+02 1.264900e+02
-15 20282     -3.621000e+02 2.204300e+02
-7 20283     5.320200e+02 1.204800e+02
-9 20283     4.142100e+02 5.090002e+01
-10 20283     6.936500e+02 1.236600e+02
-7 20284     1.853998e+01 1.187100e+02
-10 20284     2.352002e+01 1.364000e+02
-13 20284     4.654000e+02 -2.232700e+02
-15 20284     1.009800e+02 1.334700e+02
-7 20285     4.741400e+02 1.139800e+02
-10 20285     6.256700e+02 1.240300e+02
-15 20285     8.357700e+02 1.224800e+02
-7 20286     3.139000e+02 1.135900e+02
-10 20286     3.914500e+02 1.169100e+02
-15 20286     5.450100e+02 1.135400e+02
-7 20287     -3.833002e+01 1.109200e+02
-10 20287     -4.207001e+01 1.335000e+02
-15 20287     2.392999e+01 1.306900e+02
-7 20288     -5.317000e+02 1.104700e+02
-15 20288     -5.456200e+02 2.111100e+02
-7 20289     -3.279000e+02 1.089600e+02
-13 20289     1.029400e+02 -2.141700e+02
-7 20290     -1.908900e+02 1.080600e+02
-10 20290     -2.024200e+02 1.516800e+02
-15 20290     -1.590500e+02 1.480900e+02
-7 20291     -1.814600e+02 1.062800e+02
-10 20291     -1.931900e+02 1.485200e+02
-15 20291     -1.490600e+02 1.441000e+02
-7 20292     -4.452700e+02 1.017900e+02
-15 20292     -4.368200e+02 1.913200e+02
-7 20293     -4.038000e+02 9.976999e+01
-13 20293     3.637000e+01 -2.164400e+02
-7 20294     -4.568700e+02 9.937000e+01
-15 20294     -4.519700e+02 1.891900e+02
-7 20295     -6.368500e+02 9.798999e+01
-13 20295     -1.649700e+02 -1.994800e+02
-7 20296     4.638101e+02 9.107001e+01
-10 20296     6.067400e+02 9.616998e+01
-7 20297     4.482000e+02 8.507001e+01
-15 20297     7.869000e+02 8.214001e+01
-7 20298     4.482000e+02 8.507001e+01
-15 20298     7.869000e+02 8.214001e+01
-7 20299     -1.792500e+02 8.367999e+01
-10 20299     -1.932800e+02 1.219600e+02
-15 20299     -1.490900e+02 1.130500e+02
-7 20300     1.729999e+01 8.353000e+01
-13 20300     4.632300e+02 -2.539500e+02
-15 20300     9.609003e+01 8.520001e+01
-7 20301     8.790997e+01 7.677002e+01
-10 20301     1.002000e+02 8.250000e+01
-13 20301     5.242200e+02 -2.635300e+02
-7 20302     -1.782600e+02 7.521002e+01
-10 20302     -1.944500e+02 1.112600e+02
-7 20303     -7.047600e+02 7.437000e+01
-15 20303     -7.702400e+02 1.782200e+02
-7 20304     -7.047600e+02 7.437000e+01
-15 20304     -7.702400e+02 1.782200e+02
-7 20305     -1.450200e+02 6.045001e+01
-15 20305     -1.110500e+02 7.694000e+01
-7 20306     5.025200e+02 5.796002e+01
-15 20306     8.628500e+02 3.572998e+01
-7 20307     -5.185500e+02 4.872998e+01
-10 20307     -5.399700e+02 1.372400e+02
-7 20308     -5.185500e+02 4.872998e+01
-15 20308     -5.401400e+02 1.252600e+02
-7 20309     -4.767100e+02 4.533002e+01
-15 20309     -4.878800e+02 1.163900e+02
-7 20310     -3.901200e+02 4.421002e+01
-13 20310     5.069000e+01 -2.649000e+02
-15 20310     -3.762900e+02 1.064000e+02
-7 20311     -5.278003e+01 4.292999e+01
-10 20311     -6.248999e+01 5.713000e+01
-7 20312     6.229399e+02 4.240002e+01
-9 20312     5.124301e+02 7.059998e+00
-7 20313     7.241300e+02 4.114001e+01
-9 20313     6.036200e+02 3.937000e+01
-7 20314     -4.301200e+02 3.875000e+01
-13 20314     1.576001e+01 -2.664700e+02
-7 20315     -5.089100e+02 3.845001e+01
-10 20315     -5.308200e+02 1.251800e+02
-15 20315     -5.299000e+02 1.102700e+02
-7 20316     -4.619600e+02 3.856000e+01
-15 20316     -4.704700e+02 1.057400e+02
-7 20317     -2.084000e+02 3.714001e+01
-10 20317     -2.302700e+02 7.110999e+01
-15 20317     -1.914300e+02 5.377002e+01
-7 20318     2.748300e+02 3.651001e+01
-10 20318     3.263400e+02 2.425000e+01
-7 20319     -4.476100e+02 3.545001e+01
-9 20319     -4.683200e+02 -1.500800e+02
-13 20319     7.800293e-01 -2.679600e+02
-15 20319     -4.529000e+02 1.000300e+02
-7 20320     -1.140600e+02 3.164001e+01
-15 20320     -7.663000e+01 3.288000e+01
-7 20321     -2.328500e+02 2.723999e+01
-10 20321     -2.585200e+02 6.244000e+01
-7 20322     -1.437600e+02 1.996002e+01
-15 20322     -1.183900e+02 1.969000e+01
-7 20323     -1.809700e+02 1.917999e+01
-15 20323     -1.621400e+02 2.488000e+01
-7 20324     -3.677600e+02 1.758002e+01
-9 20324     -3.735200e+02 -1.502500e+02
-10 20324     -3.767400e+02 8.663000e+01
-13 20324     7.128003e+01 -2.897200e+02
-7 20325     -3.660100e+02 1.467999e+01
-8 20325     -2.020500e+02 -2.305300e+02
-13 20325     7.328998e+01 -2.920900e+02
-7 20326     -1.770600e+02 1.234003e+01
-15 20326     -1.580700e+02 1.546997e+01
-7 20327     -2.240002e+01 1.084998e+01
-10 20327     -3.115997e+01 1.840002e+01
-13 20327     4.237400e+02 -3.142000e+02
-7 20328     5.083400e+02 8.580017e+00
-15 20328     8.578500e+02 -3.885999e+01
-7 20329     5.354700e+02 7.849976e+00
-10 20329     6.780100e+02 -1.546997e+01
-12 20329     6.671300e+02 -3.565002e+01
-7 20330     -3.839800e+02 2.969971e+00
-15 20330     -3.768800e+02 4.960999e+01
-7 20331     -6.113200e+02 2.600098e-01
-10 20331     -6.500800e+02 8.984998e+01
-7 20332     -4.052700e+02 6.300049e-01
-8 20332     -2.382900e+02 -2.437700e+02
-13 20332     3.896002e+01 -3.007700e+02
-7 20333     -3.732300e+02 -2.960022e+00
-10 20333     -3.869200e+02 6.192999e+01
-15 20333     -3.638600e+02 4.038000e+01
-7 20334     -6.041900e+02 -4.429993e+00
-13 20334     -1.350300e+02 -2.893800e+02
-15 20334     -6.582100e+02 6.144000e+01
-7 20335     -1.731000e+01 -4.260010e+00
-10 20335     -2.869000e+01 -4.799805e-01
-7 20336     -1.981200e+02 -5.349976e+00
-10 20336     -2.253700e+02 2.040002e+01
-13 20336     2.645900e+02 -3.165300e+02
-15 20336     -1.866700e+02 -5.859985e+00
-7 20337     -6.002000e+02 -7.799988e+00
-10 20337     -6.384300e+02 7.933002e+01
-7 20338     -2.013100e+02 -8.510010e+00
-10 20338     -2.308100e+02 1.642999e+01
-12 20338     -1.555600e+02 -8.740997e+01
-15 20338     -1.923800e+02 -1.020001e+01
-7 20339     -4.157800e+02 -1.123999e+01
-8 20339     -2.457100e+02 -2.532800e+02
-13 20339     2.985999e+01 -3.106800e+02
-7 20340     -2.115300e+02 -1.191998e+01
-13 20340     2.530500e+02 -3.209100e+02
-7 20341     9.510010e+00 -1.247998e+01
-10 20341     -4.099731e-01 -1.357001e+01
-13 20341     4.540000e+02 -3.362700e+02
-15 20341     7.542999e+01 -4.290002e+01
-7 20342     -4.140000e+02 -2.046997e+01
-8 20342     -2.416400e+02 -2.605300e+02
-13 20342     3.172998e+01 -3.188900e+02
-7 20343     -4.064000e+02 -2.716998e+01
-9 20343     -3.956800e+02 -1.892300e+02
-7 20344     -5.354000e+02 -3.121002e+01
-15 20344     -5.765200e+02 1.840002e+01
-7 20345     -5.354000e+02 -3.121002e+01
-15 20345     -5.765200e+02 1.840002e+01
-7 20346     -5.319700e+02 -3.265002e+01
-15 20346     -5.724900e+02 1.589001e+01
-7 20347     -2.010100e+02 -3.265002e+01
-8 20347     5.371997e+01 -1.696500e+02
-10 20347     -2.345000e+02 -1.303998e+01
-13 20347     2.643800e+02 -3.390900e+02
-15 20347     -1.971500e+02 -4.362000e+01
-7 20348     1.527100e+02 -3.240997e+01
-8 20348     3.773000e+02 -1.446200e+02
-13 20348     5.797700e+02 -3.656700e+02
-15 20348     2.731600e+02 -8.382001e+01
-7 20349     -4.433400e+02 -3.638000e+01
-13 20349     6.419983e+00 -3.309200e+02
-7 20350     -4.954400e+02 -3.717999e+01
-8 20350     -3.211600e+02 -2.786800e+02
-12 20350     -5.515900e+02 -1.857700e+02
-15 20350     -5.266300e+02 5.679993e+00
-7 20351     -1.344900e+02 -3.942999e+01
-13 20351     3.222100e+02 -3.505500e+02
-7 20352     -4.285100e+02 -4.122998e+01
-9 20352     -4.133300e+02 -2.037600e+02
-7 20353     -5.856700e+02 -4.413000e+01
-13 20353     -1.172600e+02 -3.247300e+02
-15 20353     -6.418500e+02 5.789978e+00
-7 20354     -5.654100e+02 -4.581000e+01
-8 20354     -3.921900e+02 -2.904900e+02
-10 20354     -6.059900e+02 3.120001e+01
-15 20354     -6.171000e+02 1.200012e+00
-7 20355     -4.270900e+02 -4.576001e+01
-13 20355     2.088000e+01 -3.398400e+02
-7 20356     3.158500e+02 -5.778003e+01
-10 20356     3.804000e+02 -8.140002e+01
-15 20356     5.345400e+02 -1.226200e+02
-7 20357     -6.363800e+02 -7.217999e+01
-10 20357     -6.883900e+02 7.510010e+00
-7 20358     5.285601e+02 -7.272998e+01
-15 20358     8.663700e+02 -1.635200e+02
-7 20359     6.409700e+02 -7.222998e+01
-12 20359     8.081000e+02 -1.112300e+02
-7 20360     -5.784000e+02 -7.394000e+01
-13 20360     -1.108700e+02 -3.511400e+02
-7 20361     -2.103003e+01 -8.038000e+01
-12 20361     7.866998e+01 -1.485100e+02
-13 20361     4.261801e+02 -3.940200e+02
-7 20362     -5.198200e+02 -8.334998e+01
-10 20362     -5.622000e+02 -1.653998e+01
-7 20363     4.368101e+02 -8.328998e+01
-15 20363     7.244500e+02 -1.667500e+02
-7 20364     -5.059000e+02 -8.510999e+01
-10 20364     -5.465600e+02 -2.104999e+01
-15 20364     -5.495800e+02 -5.826001e+01
-7 20365     -5.171900e+02 -8.819000e+01
-15 20365     -5.641100e+02 -6.106000e+01
-7 20366     -5.049400e+02 -8.909998e+01
-13 20366     -4.609998e+01 -3.705600e+02
-7 20367     -1.473000e+02 -9.019000e+01
-10 20367     -1.801400e+02 -8.244000e+01
-15 20367     -1.329100e+02 -1.255100e+02
-7 20368     -9.125000e+01 -9.871002e+01
-10 20368     -1.247700e+02 -1.027000e+02
-7 20369     -4.099800e+02 -1.043200e+02
-12 20369     -4.342200e+02 -2.549400e+02
-7 20370     5.186300e+02 -1.138400e+02
-15 20370     8.391600e+02 -2.239700e+02
-7 20371     5.186300e+02 -1.138400e+02
-15 20371     8.391600e+02 -2.239700e+02
-7 20372     4.313000e+02 -1.180400e+02
-15 20372     7.068500e+02 -2.172800e+02
-7 20373     -3.890400e+02 -1.306200e+02
-15 20373     -4.101300e+02 -1.323600e+02
-7 20374     -5.969500e+02 -1.312300e+02
-8 20374     -4.072800e+02 -3.623900e+02
-10 20374     -6.534200e+02 -6.544000e+01
-7 20375     -1.971700e+02 -1.313600e+02
-12 20375     -1.453600e+02 -2.416400e+02
-13 20375     2.523900e+02 -4.282800e+02
-7 20376     2.854399e+02 -1.314400e+02
-10 20376     3.289100e+02 -1.680200e+02
-7 20377     -5.824100e+02 -1.319800e+02
-8 20377     -3.921000e+02 -3.617100e+02
-10 20377     -6.375100e+02 -6.721002e+01
-7 20378     9.917999e+01 -1.349500e+02
-9 20378     2.296000e+02 -8.894000e+01
-7 20379     9.917999e+01 -1.349500e+02
-15 20379     1.879301e+02 -2.160600e+02
-7 20380     -5.881800e+02 -1.393200e+02
-10 20380     -6.454700e+02 -7.540997e+01
-13 20380     -1.180000e+02 -4.066800e+02
-7 20381     -5.828700e+02 -1.398000e+02
-10 20381     -6.388900e+02 -7.634998e+01
-13 20381     -1.123900e+02 -4.071300e+02
-15 20381     -6.558700e+02 -1.232000e+02
-7 20382     -5.710600e+02 -1.401800e+02
-10 20382     -6.262800e+02 -7.835999e+01
-7 20383     5.232100e+02 -1.429700e+02
-15 20383     8.391100e+02 -2.673200e+02
-7 20384     4.218900e+02 -1.500100e+02
-15 20384     6.849600e+02 -2.626100e+02
-7 20385     -4.424100e+02 -1.515200e+02
-13 20385     1.090997e+01 -4.306600e+02
-7 20386     -1.993500e+02 -1.584000e+02
-10 20386     -2.335600e+02 -1.473200e+02
-15 20386     -1.928300e+02 -2.024900e+02
-7 20387     -5.192400e+02 -1.635300e+02
-10 20387     -5.727600e+02 -1.104800e+02
-15 20387     -5.811300e+02 -1.623400e+02
-7 20388     -6.015400e+02 -1.822700e+02
-10 20388     -6.663400e+02 -1.241100e+02
-15 20388     -6.876600e+02 -1.782200e+02
-7 20389     -6.015400e+02 -1.822700e+02
-10 20389     -6.663400e+02 -1.241100e+02
-13 20389     -1.289000e+02 -4.423900e+02
-15 20389     -6.876600e+02 -1.782200e+02
-7 20390     -5.893200e+02 -1.829900e+02
-15 20390     -6.727500e+02 -1.799400e+02
-7 20391     -9.309998e+00 -1.984500e+02
-13 20391     4.215000e+02 -5.053800e+02
-7 20392     3.990601e+02 -2.026500e+02
-15 20392     6.376300e+02 -3.356300e+02
-7 20393     -5.276400e+02 -2.079400e+02
-10 20393     -5.888500e+02 -1.619500e+02
-15 20393     -6.000900e+02 -2.214100e+02
-7 20394     -4.777200e+02 -2.201300e+02
-10 20394     -5.371200e+02 -1.810600e+02
-7 20395     -5.032700e+02 -2.272200e+02
-15 20395     -5.735000e+02 -2.491100e+02
-7 20396     3.562100e+02 -2.365100e+02
-15 20396     5.640900e+02 -3.794800e+02
-7 20397     3.562100e+02 -2.365100e+02
-10 20397     4.039200e+02 -2.964200e+02
-7 20398     -4.876200e+02 -2.394900e+02
-15 20398     -5.562500e+02 -2.675200e+02
-7 20399     3.452100e+02 -2.496100e+02
-10 20399     3.879301e+02 -3.112600e+02
-7 20400     -2.471000e+02 -2.694100e+02
-13 20400     1.929200e+02 -5.516700e+02
-15 20400     -2.621800e+02 -3.403900e+02
-7 20401     -2.095700e+02 -2.727800e+02
-10 20401     -2.536000e+02 -2.729900e+02
-7 20402     -3.926700e+02 -2.767700e+02
-13 20402     5.701001e+01 -5.463900e+02
-7 20403     -3.719900e+02 -2.812100e+02
-13 20403     7.662000e+01 -5.513500e+02
-7 20404     -3.602800e+02 -2.835600e+02
-15 20404     -4.053000e+02 -3.419300e+02
-7 20405     -6.030100e+02 -2.945800e+02
-15 20405     -7.110900e+02 -3.275100e+02
-7 20406     -4.208500e+02 -2.945300e+02
-13 20406     3.264001e+01 -5.589399e+02
-7 20407     -4.940002e+00 -3.190600e+02
-10 20407     -3.308002e+01 -3.506700e+02
-7 20408     -4.017200e+02 -3.202400e+02
-15 20408     -4.644800e+02 -3.865500e+02
-7 20409     -3.958900e+02 -3.210100e+02
-15 20409     -4.569000e+02 -3.884800e+02
-7 20410     -2.631800e+02 -3.342800e+02
-15 20410     -2.917400e+02 -4.241000e+02
-7 20411     -4.409800e+02 -3.402400e+02
-15 20411     -5.180200e+02 -4.088300e+02
-7 20412     -5.656000e+02 -3.600800e+02
-15 20412     -6.774600e+02 -4.190100e+02
-7 20413     -3.352700e+02 -3.626900e+02
-15 20413     -3.893700e+02 -4.520900e+02
-7 20414     4.206801e+02 -3.630200e+02
-10 20414     4.567100e+02 -4.579000e+02
-7 20415     -3.599900e+02 -3.690100e+02
-15 20415     -4.218300e+02 -4.576801e+02
-7 20416     -4.763400e+02 -3.776900e+02
-15 20416     -5.705300e+02 -4.539500e+02
-7 20417     2.421300e+02 -3.779700e+02
-10 20417     2.423600e+02 -4.505100e+02
-7 20418     5.351899e+02 -3.837900e+02
-10 20418     5.931300e+02 -5.010601e+02
-7 20419     -3.476100e+02 -3.906600e+02
-15 20419     -4.112800e+02 -4.883800e+02
-7 20420     -4.834700e+02 -3.914000e+02
-10 20420     -5.699900e+02 -3.765800e+02
-15 20420     -5.817500e+02 -4.715800e+02
-7 20421     -4.041500e+02 -3.944900e+02
-15 20421     -4.831300e+02 -4.861700e+02
-7 20422     3.572900e+02 -4.012000e+02
-10 20422     3.731000e+02 -4.948199e+02
-12 20422     5.595300e+02 -5.096801e+02
-7 20423     -2.030200e+02 -4.016800e+02
-9 20423     -5.349976e+00 -4.244900e+02
-7 20424     2.066200e+02 -4.017100e+02
-10 20424     1.960500e+02 -4.737700e+02
-7 20425     -3.404900e+02 -4.081800e+02
-15 20425     -4.063700e+02 -5.129200e+02
-7 20426     -3.404900e+02 -4.081800e+02
-15 20426     -4.063700e+02 -5.129200e+02
-7 20427     -5.477002e+01 -4.092000e+02
-15 20427     -3.921997e+01 -5.565300e+02
-7 20428     -2.196200e+02 -4.114600e+02
-10 20428     -2.857900e+02 -4.310400e+02
-7 20429     9.840027e+00 -4.117900e+02
-15 20429     4.588000e+01 -5.703400e+02
-7 20430     -1.778003e+01 -4.126600e+02
-15 20430     8.659973e+00 -5.671000e+02
-7 20431     1.547700e+02 -4.174200e+02
-10 20431     1.337300e+02 -4.852900e+02
-7 20432     1.767700e+02 -4.193600e+02
-10 20432     1.591000e+02 -4.906899e+02
-7 20433     -2.241998e+01 -4.207100e+02
-15 20433     8.599854e-01 -5.775601e+02
-7 20434     3.477800e+02 -4.203800e+02
-10 20434     3.580000e+02 -5.159399e+02
-12 20434     5.537100e+02 -5.326801e+02
-7 20435     2.510699e+02 -4.254500e+02
-10 20435     2.430900e+02 -5.087000e+02
-7 20436     -4.569000e+02 -4.267300e+02
-15 20436     -5.559300e+02 -5.220800e+02
-7 20437     2.600900e+02 -4.263600e+02
-10 20437     2.534700e+02 -5.107300e+02
-12 20437     4.494000e+02 -5.490200e+02
-7 20438     2.859301e+02 -4.272600e+02
-10 20438     2.839500e+02 -5.151400e+02
-7 20439     3.552000e+02 -4.332200e+02
-9 20439     5.184700e+02 -3.314600e+02
-7 20440     1.632900e+02 -4.397500e+02
-10 20440     1.392300e+02 -5.131100e+02
-7 20441     1.632900e+02 -4.397500e+02
-10 20441     1.392300e+02 -5.131100e+02
-7 20442     -2.822900e+02 -4.463700e+02
-15 20442     -3.400600e+02 -5.727400e+02
-7 20443     3.818600e+02 -4.484100e+02
-12 20443     6.015601e+02 -5.613700e+02
-7 20444     3.984100e+02 -4.484700e+02
-12 20444     6.212200e+02 -5.594200e+02
-7 20445     4.495900e+02 -4.623101e+02
-10 20445     4.723000e+02 -5.834800e+02
-7 20446     2.869301e+02 -4.718199e+02
-10 20446     2.765100e+02 -5.693199e+02
-7 20447     -1.953003e+01 -4.817000e+02
-10 20447     -7.584003e+01 -5.375500e+02
-7 20448     -1.953003e+01 -4.817000e+02
-10 20448     -7.584003e+01 -5.375500e+02
-7 20449     1.945200e+02 -4.861801e+02
-10 20449     1.663200e+02 -5.727700e+02
-7 20450     3.071997e+01 -4.864200e+02
-10 20450     -2.009998e+01 -5.498300e+02
-7 20451     -7.409973e+00 -4.933101e+02
-10 20451     -6.465997e+01 -5.526500e+02
-7 20452     1.823101e+02 -4.999600e+02
-9 20452     4.066100e+02 -4.105900e+02
-10 20452     1.493900e+02 -5.871400e+02
-7 20453     -2.239800e+02 -5.309200e+02
-10 20453     -3.108700e+02 -5.679100e+02
-7 20454     -2.150600e+02 -5.396400e+02
-10 20454     -3.028100e+02 -5.787300e+02
-7 20455     -1.308000e+02 -5.410900e+02
-10 20455     -2.101200e+02 -5.923300e+02
-7 20456     -1.867800e+02 -5.465400e+02
-10 20456     -2.731100e+02 -5.911300e+02
-7 20457     -1.795800e+02 -5.621700e+02
-10 20457     -2.674100e+02 -6.102900e+02
-7 20458     -1.601000e+02 5.842000e+02
-13 20458     2.447600e+02 1.811200e+02
-7 20459     1.857300e+02 5.793600e+02
-11 20459     5.484301e+02 -2.692300e+02
-13 20459     5.343800e+02 1.706900e+02
-14 20459     7.397600e+02 -2.476600e+02
-7 20460     8.900024e+00 5.485000e+02
-11 20460     3.691000e+02 -2.906000e+02
-7 20461     1.450000e+01 5.179800e+02
-8 20461     2.633002e+01 1.386300e+02
-14 20461     5.531000e+02 -3.033400e+02
-7 20462     -1.841500e+02 5.148900e+02
-13 20462     2.195900e+02 1.245000e+02
-14 20462     3.492400e+02 -2.926900e+02
-7 20463     3.389800e+02 5.075100e+02
-9 20463     1.498800e+02 3.166600e+02
-7 20464     3.415400e+02 4.991700e+02
-9 20464     1.537800e+02 3.087400e+02
-10 20464     5.162500e+02 6.134900e+02
-11 20464     6.605900e+02 -3.761500e+02
-12 20464     3.652400e+02 4.883500e+02
-7 20465     -3.080300e+02 4.652300e+02
-13 20465     1.157900e+02 8.776001e+01
-7 20466     -1.758300e+02 4.544200e+02
-10 20466     -8.990997e+01 6.026700e+02
-11 20466     1.867900e+02 -3.637400e+02
-7 20467     -5.598700e+02 4.410900e+02
-10 20467     -5.506900e+02 6.032100e+02
-7 20468     -5.506600e+02 4.349100e+02
-10 20468     -5.399100e+02 5.958500e+02
-7 20469     5.669800e+02 4.310900e+02
-9 20469     3.995800e+02 3.364300e+02
-10 20469     7.642400e+02 4.941000e+02
-7 20470     -1.584800e+02 4.220500e+02
-11 20470     1.986100e+02 -3.948700e+02
-7 20471     -2.299400e+02 4.213300e+02
-10 20471     -1.566900e+02 5.663200e+02
-11 20471     1.331000e+02 -3.890500e+02
-13 20471     1.743300e+02 4.803998e+01
-14 20471     2.921600e+02 -3.859800e+02
-7 20472     3.397200e+02 4.195100e+02
-10 20472     5.062800e+02 5.135600e+02
-7 20473     -5.969900e+02 4.163200e+02
-13 20473     -1.135500e+02 6.241998e+01
-7 20474     -1.404900e+02 4.126800e+02
-10 20474     -5.271997e+01 5.500300e+02
-7 20475     -4.972900e+02 4.043800e+02
-10 20475     -4.783600e+02 5.576700e+02
-14 20475     2.852002e+01 -3.751200e+02
-7 20476     -2.140100e+02 4.045400e+02
-13 20476     1.872200e+02 3.278003e+01
-14 20476     3.080100e+02 -4.057000e+02
-7 20477     -5.648800e+02 3.993000e+02
-10 20477     -5.571300e+02 5.551800e+02
-7 20478     3.675500e+02 3.992600e+02
-8 20478     4.057100e+02 1.311000e+02
-9 20478     2.191400e+02 2.575700e+02
-13 20478     7.413000e+02 2.890015e+00
-7 20479     -5.224400e+02 3.948700e+02
-10 20479     -5.073000e+02 5.483800e+02
-7 20480     -6.769800e+02 3.903500e+02
-11 20480     -2.619400e+02 -3.715300e+02
-7 20481     -1.937600e+02 3.898600e+02
-10 20481     -1.188900e+02 5.252700e+02
-7 20482     -1.447700e+02 3.902300e+02
-10 20482     -6.247998e+01 5.218000e+02
-11 20482     2.038500e+02 -4.278200e+02
-7 20483     -8.020200e+02 3.884400e+02
-11 20483     -3.601300e+02 -3.592200e+02
-13 20483     -2.691000e+02 5.059003e+01
-14 20483     -2.525600e+02 -3.575300e+02
-7 20484     2.581400e+02 3.829700e+02
-15 20484     5.738600e+02 5.406900e+02
-7 20485     -5.233200e+02 3.767300e+02
-10 20485     -5.089600e+02 5.271500e+02
-7 20486     -1.912200e+02 3.760700e+02
-10 20486     -1.181800e+02 5.072300e+02
-11 20486     1.589300e+02 -4.359600e+02
-7 20487     -5.796000e+02 3.693000e+02
-10 20487     -5.752300e+02 5.212200e+02
-7 20488     -1.607001e+01 3.630800e+02
-15 20488     1.877000e+02 5.309100e+02
-7 20489     -1.607001e+01 3.630800e+02
-10 20489     8.409998e+01 4.784100e+02
-11 20489     3.175900e+02 -4.688400e+02
-7 20490     -3.691400e+02 3.626800e+02
-13 20490     5.644000e+01 5.349976e+00
-7 20491     -6.169900e+02 3.544400e+02
-10 20491     -6.197600e+02 5.058000e+02
-7 20492     5.885601e+02 3.526500e+02
-10 20492     7.819399e+02 3.948600e+02
-7 20493     -4.137500e+02 3.492900e+02
-10 20493     -3.802100e+02 4.894400e+02
-15 20493     -3.528100e+02 5.347600e+02
-7 20494     -2.546500e+02 3.454400e+02
-9 20494     -3.972000e+02 8.776999e+01
-7 20495     -5.130300e+02 3.397600e+02
-11 20495     -1.320900e+02 -4.318100e+02
-7 20496     -5.666600e+02 3.298800e+02
-10 20496     -5.627100e+02 4.762200e+02
-13 20496     -1.024000e+02 -1.026001e+01
-7 20497     3.697400e+02 3.284300e+02
-9 20497     2.288900e+02 1.936800e+02
-10 20497     5.204301e+02 3.924400e+02
-13 20497     7.415800e+02 -6.026001e+01
-15 20497     7.053300e+02 4.406800e+02
-7 20498     -2.587500e+02 3.247800e+02
-10 20498     -2.050500e+02 4.484000e+02
-7 20499     -4.912100e+02 3.226000e+02
-13 20499     -4.475000e+01 -2.115002e+01
-7 20500     1.851000e+02 3.222000e+02
-10 20500     3.147700e+02 4.112600e+02
-7 20501     1.417400e+02 3.184300e+02
-10 20501     2.617500e+02 4.099600e+02
-7 20502     -4.939300e+02 3.179700e+02
-13 20502     -4.728003e+01 -2.434998e+01
-14 20502     1.378998e+01 -4.655400e+02
-7 20503     2.072000e+02 3.161200e+02
-10 20503     3.403300e+02 4.018700e+02
-7 20504     3.032500e+02 3.152700e+02
-15 20504     6.305699e+02 4.392500e+02
-7 20505     -5.372000e+02 3.109900e+02
-13 20505     -8.169000e+01 -2.741998e+01
-14 20505     -2.921002e+01 -4.673500e+02
-7 20506     3.086400e+02 3.110800e+02
-15 20506     6.374700e+02 4.331100e+02
-7 20507     -6.693000e+02 3.065700e+02
-10 20507     -6.805800e+02 4.561400e+02
-15 20507     -6.982600e+02 4.887300e+02
-7 20508     -3.801300e+02 3.052300e+02
-15 20508     -3.133700e+02 4.715000e+02
-7 20509     -3.801300e+02 3.052300e+02
-10 20509     -3.462300e+02 4.345700e+02
-15 20509     -3.133700e+02 4.715000e+02
-7 20510     -3.667500e+02 3.048900e+02
-10 20510     -3.315100e+02 4.332400e+02
-13 20510     5.934998e+01 -4.329999e+01
-15 20510     -2.964100e+02 4.699600e+02
-7 20511     -1.209900e+02 3.024200e+02
-10 20511     -4.984998e+01 4.100400e+02
-11 20511     2.052600e+02 -5.174500e+02
-13 20511     2.753600e+02 -6.031000e+01
-14 20511     4.192700e+02 -5.304600e+02
-7 20512     1.729000e+02 2.996300e+02
-10 20512     2.943500e+02 3.833000e+02
-15 20512     4.384800e+02 4.248800e+02
-7 20513     1.729000e+02 2.996300e+02
-10 20513     2.943500e+02 3.833000e+02
-7 20514     -5.182000e+02 2.973100e+02
-11 20514     -1.430400e+02 -4.671300e+02
-14 20514     -1.406000e+01 -4.845400e+02
-7 20515     -5.813000e+02 2.936200e+02
-11 20515     -1.982400e+02 -4.623700e+02
-13 20515     -1.184300e+02 -3.904999e+01
-14 20515     -7.545001e+01 -4.798000e+02
-7 20516     -5.887800e+02 2.899600e+02
-11 20516     -2.053800e+02 -4.646200e+02
-7 20517     -5.536300e+02 2.844700e+02
-11 20517     -1.759200e+02 -4.737700e+02
-13 20517     -9.760999e+01 -4.846002e+01
-14 20517     -5.070001e+01 -4.933199e+02
-7 20518     -5.536300e+02 2.844700e+02
-11 20518     -1.759200e+02 -4.737700e+02
-14 20518     -5.070001e+01 -4.933199e+02
-7 20519     -5.486100e+02 2.775000e+02
-14 20519     -4.803998e+01 -5.014700e+02
-7 20520     -5.550100e+02 2.748100e+02
-11 20520     -1.785700e+02 -4.815000e+02
-13 20520     -1.004000e+02 -5.644000e+01
-14 20520     -5.432001e+01 -5.032600e+02
-7 20521     -7.124300e+02 2.605300e+02
-10 20521     -7.353600e+02 4.042700e+02
-7 20522     -6.119500e+02 2.535200e+02
-13 20522     -1.484000e+02 -7.054999e+01
-7 20523     -6.554200e+02 2.495500e+02
-10 20523     -6.665000e+02 3.898500e+02
-7 20524     2.899500e+02 2.440000e+02
-15 20524     5.927100e+02 3.333200e+02
-7 20525     -3.432000e+02 2.379800e+02
-8 20525     -2.326000e+02 -6.683002e+01
-13 20525     8.328003e+01 -1.028100e+02
-14 20525     1.740100e+02 -5.751100e+02
-15 20525     -2.786200e+02 3.726600e+02
-7 20526     -6.070400e+02 2.286000e+02
-11 20526     -2.347400e+02 -5.163000e+02
-14 20526     -1.113800e+02 -5.456801e+02
-7 20527     -2.734400e+02 2.281700e+02
-8 20527     -1.648000e+02 -7.022998e+01
-9 20527     -3.672000e+02 7.630005e+00
-7 20528     -3.586400e+02 2.186200e+02
-10 20528     -3.348700e+02 3.271000e+02
-7 20529     4.598700e+02 2.116000e+02
-9 20529     3.323400e+02 1.128800e+02
-10 20529     6.160100e+02 2.416600e+02
-7 20530     -4.614800e+02 2.109800e+02
-13 20530     -1.838000e+01 -1.170200e+02
-7 20531     -4.614800e+02 2.109800e+02
-13 20531     -1.838000e+01 -1.170200e+02
-7 20532     2.574000e+02 2.105100e+02
-10 20532     3.455100e+02 2.434700e+02
-15 20532     4.920200e+02 2.632700e+02
-7 20533     -2.831600e+02 2.095800e+02
-8 20533     -1.684500e+02 -8.321997e+01
-9 20533     -3.677400e+02 -5.559998e+00
-13 20533     1.372500e+02 -1.304300e+02
-7 20534     -4.934900e+02 2.082500e+02
-10 20534     -4.887400e+02 3.268700e+02
-7 20535     -4.955900e+02 2.044300e+02
-10 20535     -4.915800e+02 3.219000e+02
-15 20535     -4.825500e+02 3.387400e+02
-7 20536     -6.088300e+02 2.023300e+02
-13 20536     -1.441300e+02 -1.142000e+02
-7 20537     3.489301e+02 2.025800e+02
-10 20537     4.871400e+02 2.455200e+02
-13 20537     7.161000e+02 -1.735800e+02
-15 20537     6.686000e+02 2.645200e+02
-7 20538     1.632100e+02 1.976400e+02
-10 20538     2.070800e+02 2.199500e+02
-7 20539     -3.731000e+02 1.907400e+02
-10 20539     -3.563200e+02 2.941700e+02
-13 20539     5.972998e+01 -1.401400e+02
-7 20540     -3.677100e+02 1.879100e+02
-8 20540     -2.446200e+02 -1.028800e+02
-15 20540     -3.205500e+02 3.041300e+02
-7 20541     -6.568700e+02 1.878600e+02
-13 20541     -1.849000e+02 -1.227300e+02
-7 20542     -1.232500e+02 1.851000e+02
-10 20542     -1.256200e+02 2.311800e+02
-15 20542     -7.207001e+01 2.412800e+02
-7 20543     -5.285000e+02 1.816800e+02
-13 20543     -7.500000e+01 -1.369600e+02
-7 20544     -3.588700e+02 1.815100e+02
-13 20544     7.198999e+01 -1.494600e+02
-15 20544     -3.098300e+02 2.949100e+02
-7 20545     -1.858900e+02 1.788200e+02
-13 20545     2.760200e+02 -1.609800e+02
-7 20546     -5.359000e+02 1.669600e+02
-15 20546     -5.408400e+02 2.908400e+02
-7 20547     -4.273200e+02 1.628200e+02
-13 20547     1.314001e+01 -1.608700e+02
-7 20548     3.459200e+02 1.602200e+02
-15 20548     6.539000e+02 2.039800e+02
-7 20549     -4.493400e+02 1.601400e+02
-10 20549     -4.459100e+02 2.635900e+02
-7 20550     4.168101e+02 1.581500e+02
-10 20550     5.613000e+02 1.852400e+02
-15 20550     7.581500e+02 1.942500e+02
-7 20551     -5.518400e+02 1.571900e+02
-10 20551     -5.618200e+02 2.701100e+02
-15 20551     -5.629800e+02 2.775500e+02
-7 20552     3.980900e+02 1.561200e+02
-10 20552     5.389200e+02 1.839500e+02
-7 20553     -4.198100e+02 1.524100e+02
-10 20553     -4.134300e+02 2.523700e+02
-7 20554     -3.513700e+02 1.492900e+02
-15 20554     -3.058200e+02 2.487100e+02
-7 20555     2.050300e+02 1.490700e+02
-10 20555     2.525900e+02 1.604800e+02
-13 20555     6.236700e+02 -2.088300e+02
-7 20556     -4.147500e+02 1.415400e+02
-10 20556     -4.110100e+02 2.384400e+02
-15 20556     -3.901700e+02 2.426200e+02
-7 20557     2.940500e+02 1.384200e+02
-10 20557     3.722700e+02 1.499200e+02
-15 20557     5.222000e+02 1.526900e+02
-7 20558     -3.887000e+02 1.376200e+02
-10 20558     -3.815200e+02 2.323600e+02
-15 20558     -3.567000e+02 2.359700e+02
-7 20559     4.386200e+02 1.277300e+02
-15 20559     7.842700e+02 1.469800e+02
-7 20560     4.672600e+02 1.222500e+02
-10 20560     6.175900e+02 1.352700e+02
-12 20560     5.629700e+02 7.997998e+01
-15 20560     8.257700e+02 1.362400e+02
-7 20561     -7.485100e+02 1.189100e+02
-13 20561     -2.606400e+02 -1.729400e+02
-7 20562     4.803300e+02 1.147900e+02
-10 20562     6.311400e+02 1.254800e+02
-7 20563     4.771500e+02 1.040300e+02
-15 20563     8.368400e+02 1.079300e+02
-7 20564     -6.184000e+02 9.964001e+01
-10 20564     -6.433600e+02 2.085500e+02
-7 20565     4.886700e+02 9.801001e+01
-15 20565     8.527900e+02 9.770001e+01
-7 20566     7.370400e+02 9.710001e+01
-9 20566     6.035601e+02 9.403000e+01
-7 20567     -2.199200e+02 9.581000e+01
-10 20567     -2.356300e+02 1.409600e+02
-13 20567     2.438700e+02 -2.291600e+02
-15 20567     -1.973100e+02 1.348600e+02
-7 20568     -3.577200e+02 7.881000e+01
-8 20568     -2.091500e+02 -1.818500e+02
-13 20568     7.790997e+01 -2.377700e+02
-7 20569     1.162100e+02 7.828003e+01
-10 20569     1.345100e+02 8.208002e+01
-13 20569     5.490100e+02 -2.650500e+02
-15 20569     2.333400e+02 6.960999e+01
-7 20570     -2.595100e+02 7.634003e+01
-10 20570     -2.786500e+02 1.238000e+02
-15 20570     -2.467700e+02 1.146100e+02
-7 20571     -3.995400e+02 7.575000e+01
-15 20571     -3.831100e+02 1.509000e+02
-7 20572     -4.353400e+02 7.028998e+01
-10 20572     -4.447400e+02 1.556300e+02
-15 20572     -4.302300e+02 1.473000e+02
-7 20573     -5.240900e+02 6.553003e+01
-10 20573     -5.441300e+02 1.587000e+02
-15 20573     -5.445800e+02 1.494500e+02
-7 20574     -2.375700e+02 6.257001e+01
-10 20574     -2.567700e+02 1.057500e+02
-15 20574     -2.214300e+02 9.338000e+01
-7 20575     4.362300e+02 5.309998e+01
-10 20575     5.637300e+02 5.185999e+01
-7 20576     -3.538900e+02 4.990997e+01
-13 20576     8.228003e+01 -2.630700e+02
-7 20577     4.917100e+02 4.922998e+01
-10 20577     6.325300e+02 4.138000e+01
-15 20577     8.439800e+02 2.376001e+01
-7 20578     -5.108600e+02 4.856000e+01
-15 20578     -5.309500e+02 1.238900e+02
-7 20579     2.841200e+02 4.722998e+01
-9 20579     3.130300e+02 6.060999e+01
-7 20580     -2.221100e+02 3.266998e+01
-10 20580     -2.458700e+02 6.762000e+01
-15 20580     -2.089700e+02 4.910999e+01
-7 20581     5.065100e+02 2.926001e+01
-12 20581     6.288800e+02 -1.514001e+01
-7 20582     -2.218200e+02 2.737000e+01
-10 20582     -2.457500e+02 6.204999e+01
-15 20582     -2.094000e+02 4.258002e+01
-7 20583     7.081300e+02 2.719000e+01
-9 20583     5.924500e+02 2.176001e+01
-7 20584     -3.700700e+02 2.384003e+01
-10 20584     -3.789400e+02 9.353998e+01
-15 20584     -3.551900e+02 7.646997e+01
-7 20585     -4.754800e+02 1.746997e+01
-15 20585     -4.916400e+02 7.791998e+01
-7 20586     -2.257000e+02 1.620001e+01
-12 20586     -1.902100e+02 -6.338000e+01
-15 20586     -2.174500e+02 2.623999e+01
-7 20587     -4.061800e+02 1.140002e+01
-10 20587     -4.208500e+02 8.289001e+01
-7 20588     4.333600e+02 1.127002e+01
-15 20588     7.447700e+02 -2.690002e+01
-7 20589     -4.423999e+01 9.369995e+00
-10 20589     -5.703998e+01 1.856000e+01
-7 20590     -1.907000e+02 -2.719971e+00
-10 20590     -2.175400e+02 2.189001e+01
-15 20590     -1.769600e+02 -3.640015e+00
-7 20591     -1.766900e+02 -7.260010e+00
-15 20591     -1.597900e+02 -1.096997e+01
-7 20592     -1.951600e+02 -9.099976e+00
-10 20592     -2.235800e+02 1.517999e+01
-13 20592     2.673400e+02 -3.199500e+02
-15 20592     -1.841900e+02 -1.150000e+01
-7 20593     -4.717300e+02 -1.584003e+01
-13 20593     -1.794000e+01 -3.098400e+02
-7 20594     -2.056400e+02 -1.682001e+01
-10 20594     -2.368000e+02 7.030029e+00
-15 20594     -1.994500e+02 -2.148999e+01
-7 20595     5.550900e+02 -2.034003e+01
-9 20595     4.827100e+02 -4.503003e+01
-7 20596     -4.643200e+02 -2.166998e+01
-10 20596     -4.906500e+02 4.941998e+01
-15 20596     -4.841000e+02 2.385999e+01
-7 20597     -1.811400e+02 -2.415997e+01
-13 20597     2.806600e+02 -3.333600e+02
-15 20597     -1.700100e+02 -3.453998e+01
-7 20598     -4.495600e+02 -2.440002e+01
-8 20598     -2.762300e+02 -2.655500e+02
-13 20598     3.800049e-01 -3.194500e+02
-7 20599     -2.176900e+02 -3.240002e+01
-12 20599     -1.713700e+02 -1.157400e+02
-7 20600     2.237100e+02 -3.565997e+01
-15 20600     3.724200e+02 -9.606000e+01
-7 20601     -1.208000e+02 -3.650000e+01
-10 20601     -1.460000e+02 -2.557001e+01
-15 20601     -9.465002e+01 -5.756000e+01
-7 20602     -1.063300e+02 -3.759003e+01
-10 20602     -1.291600e+02 -2.828003e+01
-15 20602     -7.509998e+01 -6.147998e+01
-7 20603     -4.005000e+02 -3.842999e+01
-8 20603     -2.239300e+02 -2.732600e+02
-13 20603     4.426001e+01 -3.354900e+02
-7 20604     -4.754700e+02 -4.101001e+01
-8 20604     -2.998500e+02 -2.813600e+02
-13 20604     -2.184998e+01 -3.314600e+02
-15 20604     -5.021000e+02 -1.150024e+00
-7 20605     -4.754700e+02 -4.101001e+01
-13 20605     -2.184998e+01 -3.314600e+02
-7 20606     -5.116998e+01 -4.672998e+01
-15 20606     -6.059998e+00 -8.062000e+01
-7 20607     -8.254999e+01 -5.071002e+01
-15 20607     -4.725000e+01 -8.289001e+01
-7 20608     -5.206800e+02 -6.288000e+01
-9 20608     -5.076300e+02 -2.356200e+02
-7 20609     -4.492000e+02 -6.406000e+01
-15 20609     -4.736800e+02 -3.538000e+01
-7 20610     -4.847400e+02 -7.316998e+01
-13 20610     -2.878003e+01 -3.586600e+02
-7 20611     -4.720000e+02 -7.610999e+01
-13 20611     -1.722998e+01 -3.623400e+02
-15 20611     -5.051700e+02 -4.909003e+01
-7 20612     -4.819000e+02 -8.088000e+01
-15 20612     -5.182600e+02 -5.496997e+01
-7 20613     -4.951900e+02 -9.165002e+01
-8 20613     -3.095600e+02 -3.224200e+02
-12 20613     -5.448000e+02 -2.482300e+02
-15 20613     -5.382200e+02 -6.829999e+01
-7 20614     -5.277002e+01 -9.210999e+01
-13 20614     3.982100e+02 -4.016500e+02
-7 20615     -3.028998e+01 -9.821997e+01
-13 20615     4.181200e+02 -4.091800e+02
-7 20616     6.082001e+01 -1.108700e+02
-10 20616     4.528998e+01 -1.338100e+02
-7 20617     5.275400e+02 -1.451200e+02
-15 20617     8.449800e+02 -2.720200e+02
-7 20618     5.087600e+02 -1.629100e+02
-15 20618     8.118000e+02 -2.944100e+02
-7 20619     -1.520000e+02 -1.714300e+02
-13 20619     2.888900e+02 -4.693300e+02
-7 20620     -4.794700e+02 -1.828600e+02
-15 20620     -5.338600e+02 -1.923000e+02
-7 20621     -5.808400e+02 -1.933900e+02
-15 20621     -6.639200e+02 -1.952700e+02
-7 20622     -5.842100e+02 -1.960400e+02
-8 20622     -3.803600e+02 -4.151100e+02
-15 20622     -6.688200e+02 -1.984000e+02
-7 20623     -4.142100e+02 -2.094200e+02
-9 20623     -3.218900e+02 -3.251500e+02
-13 20623     3.794000e+01 -4.834500e+02
-7 20624     4.111000e+02 -2.102200e+02
-15 20624     6.520900e+02 -3.494300e+02
-7 20625     3.654000e+02 -2.216100e+02
-10 20625     4.175800e+02 -2.790200e+02
-15 20625     5.811000e+02 -3.591300e+02
-7 20626     -7.314500e+02 -2.460000e+02
-13 20626     -2.395900e+02 -4.849100e+02
-15 20626     -8.605000e+02 -2.483400e+02
-7 20627     -4.977700e+02 -2.461600e+02
-15 20627     -5.705000e+02 -2.760500e+02
-7 20628     -5.128900e+02 -2.556800e+02
-15 20628     -5.906500e+02 -2.866900e+02
-7 20629     -4.488700e+02 -2.675800e+02
-13 20629     7.700012e+00 -5.319399e+02
-7 20630     -4.288700e+02 -2.785200e+02
-9 20630     -3.067600e+02 -3.827300e+02
-13 20630     2.533002e+01 -5.439399e+02
-7 20631     -4.353400e+02 -2.828500e+02
-9 20631     -3.120900e+02 -3.873100e+02
-10 20631     -4.997100e+02 -2.574300e+02
-13 20631     1.951001e+01 -5.470601e+02
-7 20632     -3.781900e+02 -2.869400e+02
-13 20632     7.071002e+01 -5.563000e+02
-7 20633     -4.245300e+02 -2.982700e+02
-13 20633     3.010999e+01 -5.620000e+02
-7 20634     -4.245300e+02 -2.982700e+02
-9 20634     -2.924600e+02 -3.968700e+02
-13 20634     3.010999e+01 -5.620000e+02
-7 20635     -1.215997e+01 -2.995000e+02
-9 20635     1.483900e+02 -2.905300e+02
-7 20636     8.895001e+01 -3.043800e+02
-15 20636     1.684200e+02 -4.364399e+02
-7 20637     -3.284003e+01 -3.048200e+02
-15 20637     6.070007e+00 -4.187300e+02
-7 20638     -2.689600e+02 -3.320400e+02
-15 20638     -2.987700e+02 -4.204500e+02
-7 20639     5.618900e+02 -3.412000e+02
-10 20639     6.356200e+02 -4.533600e+02
-7 20640     -2.697900e+02 -3.480300e+02
-15 20640     -3.033500e+02 -4.419700e+02
-7 20641     -4.695800e+02 -3.557300e+02
-10 20641     -5.493700e+02 -3.381400e+02
-15 20641     -5.572000e+02 -4.259600e+02
-7 20642     2.373700e+02 -3.586900e+02
-10 20642     2.409500e+02 -4.267700e+02
-7 20643     -5.441200e+02 -3.596600e+02
-15 20643     -6.508600e+02 -4.212500e+02
-7 20644     -2.104700e+02 -3.610900e+02
-15 20644     -2.305000e+02 -4.675400e+02
-7 20645     -4.218600e+02 -3.616800e+02
-15 20645     -4.981700e+02 -4.399000e+02
-7 20646     -2.388500e+02 -3.615800e+02
-15 20646     -2.666000e+02 -4.647100e+02
-7 20647     -2.474600e+02 -3.722500e+02
-15 20647     -2.808600e+02 -4.774301e+02
-7 20648     2.282900e+02 -3.740300e+02
-10 20648     2.278600e+02 -4.437300e+02
-7 20649     2.385400e+02 -3.805800e+02
-10 20649     2.372200e+02 -4.533800e+02
-7 20650     2.782600e+02 -3.839900e+02
-9 20650     4.297900e+02 -3.134900e+02
-10 20650     2.834800e+02 -4.625400e+02
-7 20651     -2.029100e+02 -3.844600e+02
-10 20651     -2.629000e+02 -4.014000e+02
-7 20652     -3.476800e+02 -3.968600e+02
-15 20652     -4.123000e+02 -4.965800e+02
-7 20653     2.403500e+02 -3.982600e+02
-10 20653     2.360000e+02 -4.747600e+02
-7 20654     3.898300e+02 -3.992900e+02
-12 20654     5.983600e+02 -5.033199e+02
-7 20655     -3.109003e+01 -4.074400e+02
-15 20655     -7.849976e+00 -5.576300e+02
-7 20656     -3.765700e+02 -4.106200e+02
-15 20656     -4.516100e+02 -5.111801e+02
-7 20657     -4.135999e+01 -4.102600e+02
-15 20657     -2.191998e+01 -5.598199e+02
-7 20658     -3.444000e+01 -4.111900e+02
-15 20658     -1.276001e+01 -5.622000e+02
-7 20659     -2.863000e+01 -4.117400e+02
-15 20659     -4.869995e+00 -5.640699e+02
-7 20660     -2.863000e+01 -4.117400e+02
-15 20660     -4.869995e+00 -5.640699e+02
-7 20661     1.692400e+02 -4.207600e+02
-10 20661     1.497200e+02 -4.909900e+02
-7 20662     1.751400e+02 -4.256700e+02
-10 20662     1.558100e+02 -4.978199e+02
-7 20663     2.954900e+02 -4.338600e+02
-10 20663     2.934100e+02 -5.248199e+02
-12 20663     4.935200e+02 -5.545200e+02
-7 20664     -6.264600e+02 -4.418199e+02
-10 20664     -7.357800e+02 -4.204301e+02
-15 20664     -7.685900e+02 -5.195699e+02
-7 20665     -5.140400e+02 -4.440699e+02
-15 20665     -6.312800e+02 -5.373300e+02
-7 20666     -4.059003e+01 -4.490400e+02
-9 20666     1.782800e+02 -4.232000e+02
-7 20667     2.173400e+02 -4.588900e+02
-10 20667     1.986600e+02 -5.437400e+02
-7 20668     1.840300e+02 -4.678500e+02
-9 20668     3.912000e+02 -3.887200e+02
-7 20669     -4.991800e+02 -4.707300e+02
-15 20669     -6.181600e+02 -5.761500e+02
-7 20670     2.816300e+02 -4.710900e+02
-10 20670     2.697700e+02 -5.677700e+02
-7 20671     3.123500e+02 -4.721500e+02
-12 20671     5.249301e+02 -5.970300e+02
-7 20672     2.270800e+02 -4.753500e+02
-9 20672     4.331600e+02 -3.845900e+02
-7 20673     1.103000e+02 -4.804900e+02
-9 20673     3.326500e+02 -4.130600e+02
-7 20674     1.909399e+02 -4.877700e+02
-10 20674     1.616500e+02 -5.740601e+02
-7 20675     9.831000e+01 -4.899800e+02
-9 20675     3.269100e+02 -4.224700e+02
-7 20676     2.966200e+02 -4.929500e+02
-9 20676     5.005400e+02 -3.820200e+02
-7 20677     4.943300e+02 -5.167700e+02
-9 20677     6.703900e+02 -3.608600e+02
-7 20678     -2.047200e+02 -5.483600e+02
-10 20678     -2.924700e+02 -5.907200e+02
-7 20679     -1.459700e+02 -5.482300e+02
-10 20679     -2.277400e+02 -5.984100e+02
-7 20680     -1.181400e+02 -5.669100e+02
-9 20680     1.634100e+02 -5.305601e+02
-7 20681     1.487900e+02 5.556900e+02
-11 20681     5.094301e+02 -2.907700e+02
-7 20682     -6.406000e+01 4.814100e+02
-11 20682     2.956600e+02 -3.473700e+02
-7 20683     -3.324700e+02 4.797800e+02
-13 20683     9.851001e+01 1.014600e+02
-7 20684     -6.321002e+01 4.741100e+02
-11 20684     2.957200e+02 -3.542200e+02
-7 20685     3.156600e+02 4.729100e+02
-10 20685     4.830300e+02 5.820500e+02
-12 20685     3.372800e+02 4.523500e+02
-7 20686     3.340500e+02 4.735400e+02
-10 20686     5.045100e+02 5.803200e+02
-7 20687     -2.379700e+02 4.676500e+02
-9 20687     -4.028700e+02 1.980600e+02
-7 20688     -5.453300e+02 4.275200e+02
-10 20688     -5.332300e+02 5.865500e+02
-7 20689     5.623101e+02 4.269100e+02
-9 20689     3.951700e+02 3.314800e+02
-10 20689     7.569399e+02 4.887400e+02
-7 20690     -3.713400e+02 3.927600e+02
-8 20690     -2.820700e+02 5.023999e+01
-7 20691     3.018900e+02 3.779700e+02
-15 20691     6.334700e+02 5.289900e+02
-7 20692     -3.793000e+02 3.706000e+02
-13 20692     4.928003e+01 1.281000e+01
-7 20693     -3.793000e+02 3.706000e+02
-13 20693     4.928003e+01 1.281000e+01
-7 20694     -1.988700e+02 3.686800e+02
-10 20694     -1.283000e+02 4.996200e+02
-7 20695     -5.119800e+02 3.677900e+02
-10 20695     -4.953000e+02 5.161800e+02
-7 20696     1.833800e+02 3.660100e+02
-10 20696     3.213000e+02 4.667500e+02
-7 20697     -2.051100e+02 3.644900e+02
-10 20697     -1.363600e+02 4.939200e+02
-15 20697     -7.106000e+01 5.454600e+02
-7 20698     3.059003e+01 3.651100e+02
-10 20698     1.391100e+02 4.773800e+02
-15 20698     2.532300e+02 5.308400e+02
-7 20699     -6.204700e+02 3.617200e+02
-8 20699     -4.913700e+02 3.954001e+01
-11 20699     -2.198100e+02 -4.004700e+02
-7 20700     -5.150100e+02 3.570600e+02
-11 20700     -1.317700e+02 -4.167600e+02
-7 20701     -1.026500e+02 3.571100e+02
-11 20701     2.344700e+02 -4.646800e+02
-15 20701     6.698999e+01 5.273400e+02
-7 20702     2.500000e+01 3.544300e+02
-10 20702     1.297000e+02 4.640000e+02
-7 20703     -2.954300e+02 3.531000e+02
-11 20703     6.158002e+01 -4.451000e+02
-14 20703     2.228500e+02 -4.528800e+02
-7 20704     -5.089300e+02 3.415400e+02
-13 20704     -5.559003e+01 -4.619995e+00
-14 20704     4.820007e+00 -4.402900e+02
-7 20705     -4.742400e+02 3.376400e+02
-11 20705     -9.871997e+01 -4.374100e+02
-7 20706     -4.921900e+02 3.368700e+02
-11 20706     -1.143900e+02 -4.358100e+02
-7 20707     5.760100e+02 3.374100e+02
-9 20707     4.217700e+02 2.590900e+02
-7 20708     -6.720300e+02 3.361000e+02
-10 20708     -6.839300e+02 4.901100e+02
-7 20709     -5.098400e+02 3.303400e+02
-11 20709     -1.306500e+02 -4.398300e+02
-7 20710     1.372400e+02 3.262200e+02
-10 20710     2.579200e+02 4.197100e+02
-7 20711     1.372400e+02 3.262200e+02
-10 20711     2.579200e+02 4.197100e+02
-7 20712     -3.747400e+02 3.234700e+02
-15 20712     -3.028700e+02 4.974200e+02
-7 20713     -6.601200e+02 3.201100e+02
-10 20713     -6.683300e+02 4.709700e+02
-12 20713     -7.936800e+02 2.059500e+02
-15 20713     -6.847400e+02 5.068800e+02
-7 20714     -3.704500e+02 3.187600e+02
-15 20714     -2.988700e+02 4.905900e+02
-7 20715     -4.304200e+02 3.159200e+02
-15 20715     -3.777100e+02 4.908600e+02
-7 20716     -4.304200e+02 3.159200e+02
-15 20716     -3.777100e+02 4.908600e+02
-7 20717     -5.635100e+02 3.083900e+02
-11 20717     -1.805800e+02 -4.517400e+02
-13 20717     -1.023200e+02 -2.796002e+01
-7 20718     2.941801e+02 2.931800e+02
-15 20718     6.129399e+02 4.074000e+02
-7 20719     -5.781400e+02 2.645500e+02
-11 20719     -2.009200e+02 -4.875500e+02
-13 20719     -1.201500e+02 -6.335999e+01
-14 20719     -7.945001e+01 -5.109000e+02
-7 20720     -4.486900e+02 2.613200e+02
-11 20720     -9.515002e+01 -5.108500e+02
-7 20721     -5.215800e+02 2.565600e+02
-13 20721     -7.088000e+01 -7.415002e+01
-14 20721     -1.883002e+01 -5.279399e+02
-7 20722     1.735699e+02 2.484400e+02
-13 20722     5.928500e+02 -1.218900e+02
-7 20723     3.971300e+02 2.473900e+02
-8 20723     4.441000e+02 1.980011e+00
-10 20723     5.459900e+02 2.925700e+02
-13 20723     7.669000e+02 -1.336500e+02
-7 20724     -2.300500e+02 2.452200e+02
-9 20724     -3.290900e+02 2.508002e+01
-7 20725     2.766200e+02 2.412400e+02
-15 20725     5.728400e+02 3.306900e+02
-7 20726     3.550800e+02 2.334300e+02
-15 20726     6.787000e+02 3.078000e+02
-7 20727     3.640601e+02 2.280200e+02
-10 20727     5.056000e+02 2.738700e+02
-13 20727     7.327500e+02 -1.508200e+02
-15 20727     6.898700e+02 2.993500e+02
-7 20728     3.774500e+02 2.285100e+02
-10 20728     5.195400e+02 2.741700e+02
-15 20728     7.067600e+02 3.002400e+02
-7 20729     2.007600e+02 2.217300e+02
-13 20729     6.165200e+02 -1.460100e+02
-7 20730     -2.702300e+02 2.129300e+02
-8 20730     -1.567100e+02 -8.031000e+01
-13 20730     1.483199e+02 -1.284800e+02
-7 20731     -6.115800e+02 2.071000e+02
-13 20731     -1.471900e+02 -1.092100e+02
-14 20731     -1.169500e+02 -5.685900e+02
-7 20732     3.379399e+02 2.014800e+02
-10 20732     4.743600e+02 2.461900e+02
-15 20732     6.526600e+02 2.656400e+02
-7 20733     3.164600e+02 1.963400e+02
-15 20733     6.196700e+02 2.603100e+02
-7 20734     9.779999e+01 1.944200e+02
-8 20734     2.977400e+02 4.523001e+01
-13 20734     5.342500e+02 -1.636600e+02
-7 20735     -3.110400e+02 1.905700e+02
-13 20735     1.128400e+02 -1.445100e+02
-7 20736     -4.634500e+02 1.768900e+02
-10 20736     -4.596800e+02 2.859800e+02
-7 20737     2.144100e+02 1.711700e+02
-10 20737     2.684700e+02 1.870300e+02
-15 20737     3.947800e+02 1.965800e+02
-7 20738     4.492900e+02 1.674800e+02
-15 20738     8.036500e+02 2.028800e+02
-7 20739     3.009399e+02 1.559200e+02
-10 20739     3.864301e+02 1.711300e+02
-7 20740     -4.735000e+02 1.500800e+02
-10 20740     -4.756400e+02 2.548500e+02
-7 20741     -1.462900e+02 1.442200e+02
-9 20741     -6.247998e+01 1.146600e+02
-13 20741     3.154800e+02 -1.916800e+02
-7 20742     8.745001e+01 1.452500e+02
-15 20742     1.989500e+02 1.637300e+02
-7 20743     8.745001e+01 1.452500e+02
-15 20743     1.989500e+02 1.637300e+02
-7 20744     -3.677500e+02 1.323000e+02
-15 20744     -3.308300e+02 2.268000e+02
-7 20745     2.628300e+02 1.261800e+02
-15 20745     4.667100e+02 1.329800e+02
-7 20746     2.628300e+02 1.261800e+02
-15 20746     4.667100e+02 1.329800e+02
-7 20747     4.670800e+02 1.160100e+02
-10 20747     6.162600e+02 1.275000e+02
-15 20747     8.248500e+02 1.266500e+02
-7 20748     -2.717000e+02 1.124500e+02
-15 20748     -2.541400e+02 1.668900e+02
-7 20749     -4.168000e+02 1.104600e+02
-15 20749     -3.977200e+02 2.010300e+02
-7 20750     -1.900800e+02 1.044200e+02
-15 20750     -1.590800e+02 1.438200e+02
-7 20751     -4.663200e+02 9.981000e+01
-15 20751     -4.642500e+02 1.905700e+02
-7 20752     -4.243300e+02 9.681000e+01
-8 20752     -2.796100e+02 -1.725800e+02
-13 20752     1.827002e+01 -2.171200e+02
-7 20753     4.725900e+02 9.510001e+01
-10 20753     6.175500e+02 1.000100e+02
-15 20753     8.261500e+02 9.389001e+01
-7 20754     -4.620000e+02 9.372000e+01
-15 20754     -4.597100e+02 1.815000e+02
-7 20755     -4.210700e+02 8.594000e+01
-15 20755     -4.089800e+02 1.673900e+02
-7 20756     -3.982600e+02 8.353000e+01
-15 20756     -3.796600e+02 1.615300e+02
-7 20757     -4.870100e+02 8.256000e+01
-15 20757     -4.951300e+02 1.665900e+02
-7 20758     6.415300e+02 8.129001e+01
-10 20758     8.228700e+02 6.095001e+01
-7 20759     -1.340400e+02 7.177002e+01
-15 20759     -9.706000e+01 8.967001e+01
-7 20760     -1.929100e+02 6.470001e+01
-13 20760     2.694800e+02 -2.566800e+02
-7 20761     -5.272000e+02 6.053998e+01
-13 20761     -7.009998e+01 -2.399200e+02
-7 20762     -5.104600e+02 4.328003e+01
-15 20762     -5.318600e+02 1.170300e+02
-7 20763     -2.218300e+02 4.095001e+01
-15 20763     -2.065900e+02 6.084998e+01
-7 20764     -2.218300e+02 4.095001e+01
-15 20764     -2.065900e+02 6.084998e+01
-7 20765     1.834200e+02 3.128998e+01
-10 20765     2.116801e+02 2.263000e+01
-13 20765     6.070500e+02 -3.113600e+02
-15 20765     3.262200e+02 9.500122e-01
-7 20766     -5.118800e+02 1.896002e+01
-13 20766     -5.592999e+01 -2.771800e+02
-7 20767     5.236899e+02 1.763000e+01
-9 20767     4.415100e+02 -2.640997e+01
-7 20768     4.904100e+02 1.573999e+01
-15 20768     8.329399e+02 -2.640997e+01
-7 20769     -3.901700e+02 1.187000e+01
-10 20769     -4.033900e+02 8.160999e+01
-15 20769     -3.832900e+02 6.301001e+01
-7 20770     -3.707600e+02 6.429993e+00
-10 20770     -3.820400e+02 7.373999e+01
-15 20770     -3.592400e+02 5.234998e+01
-7 20771     -1.483700e+02 -1.928998e+01
-15 20771     -1.261400e+02 -3.108002e+01
-7 20772     -1.954300e+02 -2.295001e+01
-8 20772     5.590997e+01 -1.628300e+02
-10 20772     -2.273400e+02 -9.500122e-01
-12 20772     -1.454600e+02 -1.024400e+02
-13 20772     2.684600e+02 -3.314000e+02
-7 20773     -5.124800e+02 -3.534998e+01
-15 20773     -5.486700e+02 1.052002e+01
-7 20774     -4.642100e+02 -4.153998e+01
-15 20774     -4.879300e+02 -3.640015e+00
-7 20775     -5.820100e+02 -4.826001e+01
-15 20775     -6.382500e+02 -1.599731e-01
-7 20776     -5.820100e+02 -4.826001e+01
-15 20776     -6.382500e+02 -1.599731e-01
-7 20777     -5.472700e+02 -5.646997e+01
-10 20777     -5.878900e+02 1.697998e+01
-15 20777     -5.964300e+02 -1.488000e+01
-7 20778     -5.403100e+02 -5.890002e+01
-8 20778     -3.638100e+02 -3.002800e+02
-15 20778     -5.881900e+02 -1.906000e+01
-7 20779     -5.403100e+02 -5.890002e+01
-15 20779     -5.881900e+02 -1.906000e+01
-7 20780     -4.348800e+02 -6.138000e+01
-13 20780     1.504999e+01 -3.517200e+02
-15 20780     -4.544700e+02 -3.334003e+01
-7 20781     -4.906700e+02 -6.400000e+01
-13 20781     -3.319000e+01 -3.503500e+02
-7 20782     -6.387300e+02 -7.638000e+01
-8 20782     -4.625500e+02 -3.209800e+02
-10 20782     -6.910200e+02 2.190002e+00
-7 20783     1.653101e+02 -9.273999e+01
-8 20783     4.036700e+02 -1.935000e+02
-7 20784     6.142900e+02 -9.791998e+01
-12 20784     7.835000e+02 -1.419800e+02
-7 20785     5.165601e+02 -1.089400e+02
-15 20785     8.384800e+02 -2.162700e+02
-7 20786     5.224301e+02 -1.175500e+02
-15 20786     8.450300e+02 -2.302300e+02
-7 20787     -1.534500e+02 -1.503600e+02
-8 20787     9.652002e+01 -2.946300e+02
-9 20787     -1.738000e+01 -1.662900e+02
-13 20787     2.918600e+02 -4.487500e+02
-7 20788     6.066998e+01 -1.691600e+02
-8 20788     3.163400e+02 -2.807900e+02
-7 20789     -1.564300e+02 -2.303400e+02
-15 20789     -1.469700e+02 -3.030900e+02
-7 20790     3.496899e+02 -2.440200e+02
-15 20790     5.520601e+02 -3.895100e+02
-7 20791     -1.116900e+02 -2.483100e+02
-15 20791     -9.363000e+01 -3.342800e+02
-7 20792     -4.142200e+02 -2.497700e+02
-9 20792     -3.037700e+02 -3.567700e+02
-7 20793     -3.749500e+02 -2.532600e+02
-15 20793     -4.170800e+02 -3.005200e+02
-7 20794     1.142400e+02 -2.942400e+02
-9 20794     2.585000e+02 -2.653700e+02
-7 20795     1.142400e+02 -2.942400e+02
-9 20795     2.585000e+02 -2.653700e+02
-7 20796     5.547600e+02 -3.424800e+02
-10 20796     6.257200e+02 -4.535000e+02
-7 20797     -3.822900e+02 -3.535300e+02
-15 20797     -4.468300e+02 -4.342600e+02
-7 20798     -4.690300e+02 -3.920500e+02
-15 20798     -5.642400e+02 -4.743800e+02
-7 20799     -1.733002e+01 -4.015000e+02
-15 20799     1.079999e+01 -5.508800e+02
-7 20800     -1.392400e+02 -4.159400e+02
-9 20800     6.634003e+01 -4.207100e+02
-7 20801     -3.762300e+02 -4.230800e+02
-15 20801     -4.540200e+02 -5.278300e+02
-7 20802     3.357001e+01 -4.244600e+02
-12 20802     1.733500e+02 -5.758600e+02
-7 20803     3.588000e+01 -4.340699e+02
-12 20803     1.794400e+02 -5.868300e+02
-7 20804     -3.443600e+02 -4.443000e+02
-15 20804     -4.182600e+02 -5.610601e+02
-7 20805     -3.480600e+02 -4.521300e+02
-15 20805     -4.243500e+02 -5.710601e+02
-7 20806     4.049900e+02 -4.578800e+02
-10 20806     4.190601e+02 -5.703300e+02
-7 20807     -2.103400e+02 -4.687000e+02
-10 20807     -2.859700e+02 -4.975500e+02
-7 20808     -2.103400e+02 -4.687000e+02
-10 20808     -2.859700e+02 -4.975500e+02
-7 20809     3.163199e+02 -4.699500e+02
-9 20809     5.040400e+02 -3.633500e+02
-12 20809     5.278500e+02 -5.948199e+02
-7 20810     -1.229980e+00 -5.185300e+02
-9 20810     2.507400e+02 -4.648700e+02
-7 20811     4.611000e+02 -5.222700e+02
-9 20811     6.480000e+02 -3.709100e+02
-7 20812     -1.923000e+02 -5.276200e+02
-10 20812     -2.752700e+02 -5.674900e+02
-7 20813     4.485601e+02 -5.373700e+02
-9 20813     6.454301e+02 -3.826200e+02
-7 20814     4.259900e+02 -5.550400e+02
-9 20814     6.361100e+02 -3.991300e+02
-7 20815     1.963101e+02 5.738300e+02
-8 20815     1.643100e+02 1.792200e+02
-9 20815     -6.547998e+01 2.766700e+02
-11 20815     5.581000e+02 -2.739300e+02
-13 20815     5.433101e+02 1.673100e+02
-14 20815     7.510601e+02 -2.519400e+02
-7 20816     -1.045900e+02 5.282600e+02
-8 20816     -6.571997e+01 1.554100e+02
-7 20817     -4.014001e+01 5.133600e+02
-11 20817     3.198900e+02 -3.222100e+02
-7 20818     -4.222200e+02 5.023500e+02
-8 20818     -3.171800e+02 1.544700e+02
-7 20819     -3.537000e+02 4.950600e+02
-11 20819     2.765002e+01 -3.156800e+02
-7 20820     -4.840997e+01 4.797700e+02
-11 20820     3.116500e+02 -3.493300e+02
-7 20821     -3.477600e+02 4.734900e+02
-11 20821     3.063000e+01 -3.341600e+02
-7 20822     -1.828400e+02 4.662500e+02
-13 20822     2.163800e+02 8.434000e+01
-7 20823     -4.918600e+02 4.496200e+02
-10 20823     -4.702800e+02 6.082700e+02
-13 20823     -2.998999e+01 8.220999e+01
-7 20824     -5.512600e+02 4.488800e+02
-10 20824     -5.413900e+02 6.127800e+02
-7 20825     -2.304500e+02 4.477700e+02
-10 20825     -1.568300e+02 5.968600e+02
-7 20826     -1.940300e+02 4.361000e+02
-10 20826     -1.125000e+02 5.819600e+02
-7 20827     3.742500e+02 4.238800e+02
-9 20827     2.213400e+02 2.805900e+02
-13 20827     7.490300e+02 2.390002e+01
-7 20828     -1.584800e+02 4.059900e+02
-11 20828     1.936100e+02 -4.111100e+02
-13 20828     2.346700e+02 3.103998e+01
-14 20828     3.679200e+02 -4.102400e+02
-7 20829     2.723300e+02 4.029600e+02
-13 20829     6.365699e+02 1.007001e+01
-15 20829     5.948600e+02 5.679400e+02
-7 20830     4.431899e+02 4.012900e+02
-10 20830     6.127000e+02 4.710000e+02
-7 20831     -3.379700e+02 3.953300e+02
-11 20831     3.075000e+01 -4.017800e+02
-7 20832     -1.525000e+02 3.928500e+02
-10 20832     -7.082001e+01 5.253400e+02
-11 20832     1.977300e+02 -4.239600e+02
-7 20833     -3.838000e+02 3.783600e+02
-13 20833     4.671002e+01 1.971002e+01
-7 20834     1.199900e+02 3.758900e+02
-13 20834     4.872400e+02 -7.510010e+00
-7 20835     -5.217600e+02 3.714600e+02
-10 20835     -5.069900e+02 5.208900e+02
-7 20836     -6.167800e+02 3.699400e+02
-10 20836     -6.185600e+02 5.243300e+02
-11 20836     -2.145000e+02 -3.928100e+02
-13 20836     -1.345000e+02 2.712000e+01
-7 20837     -1.651100e+02 3.695200e+02
-11 20837     1.806100e+02 -4.453300e+02
-15 20837     -1.450000e+01 5.495600e+02
-7 20838     -3.586500e+02 3.600700e+02
-14 20838     1.545601e+02 -4.365400e+02
-7 20839     -2.084000e+02 3.591400e+02
-10 20839     -1.409000e+02 4.877800e+02
-7 20840     1.008300e+02 3.443200e+02
-10 20840     2.160100e+02 4.457600e+02
-7 20841     -6.684500e+02 3.433400e+02
-10 20841     -6.826600e+02 4.972500e+02
-7 20842     -5.020800e+02 3.425100e+02
-11 20842     -1.223600e+02 -4.300600e+02
-13 20842     -5.034003e+01 -3.539978e+00
-7 20843     -3.298000e+02 3.378100e+02
-10 20843     -2.839900e+02 4.705700e+02
-7 20844     6.362400e+02 3.358900e+02
-9 20844     4.753101e+02 2.738600e+02
-7 20845     -4.990900e+02 3.246300e+02
-11 20845     -1.222600e+02 -4.458400e+02
-13 20845     -5.015997e+01 -1.859998e+01
-14 20845     1.033002e+01 -4.580601e+02
-7 20846     1.221600e+02 3.195200e+02
-10 20846     2.378199e+02 4.130100e+02
-7 20847     -5.220700e+02 3.167800e+02
-11 20847     -1.451500e+02 -4.507900e+02
-7 20848     -7.117300e+02 3.135000e+02
-8 20848     -5.751200e+02 2.300110e-01
-11 20848     -3.028000e+02 -4.298000e+02
-7 20849     -6.610400e+02 3.128900e+02
-11 20849     -2.589700e+02 -4.337800e+02
-15 20849     -6.855800e+02 4.978700e+02
-7 20850     -5.772500e+02 3.107700e+02
-11 20850     -1.918700e+02 -4.481100e+02
-13 20850     -1.125800e+02 -2.508002e+01
-14 20850     -6.737000e+01 -4.625500e+02
-7 20851     -4.314600e+02 3.086300e+02
-15 20851     -3.802200e+02 4.804300e+02
-7 20852     -3.948300e+02 3.072500e+02
-11 20852     -3.510999e+01 -4.749200e+02
-15 20852     -3.338600e+02 4.757200e+02
-7 20853     -5.462500e+02 3.060200e+02
-11 20853     -1.660500e+02 -4.560000e+02
-13 20853     -8.988000e+01 -3.162000e+01
-14 20853     -3.959998e+01 -4.721400e+02
-7 20854     -5.686500e+02 2.973400e+02
-11 20854     -1.868400e+02 -4.609000e+02
-13 20854     -1.080600e+02 -3.685999e+01
-14 20854     -6.241998e+01 -4.774500e+02
-7 20855     -5.209800e+02 2.965900e+02
-11 20855     -1.454000e+02 -4.671700e+02
-13 20855     -7.112000e+01 -4.060999e+01
-14 20855     -1.675000e+01 -4.848000e+02
-7 20856     3.654600e+02 2.973000e+02
-15 20856     6.962300e+02 3.976700e+02
-7 20857     -4.310800e+02 2.931300e+02
-11 20857     -7.135999e+01 -4.839300e+02
-7 20858     9.240997e+01 2.831500e+02
-13 20858     5.187600e+02 -8.794000e+01
-7 20859     -4.481900e+02 2.810500e+02
-11 20859     -8.925000e+01 -4.919700e+02
-7 20860     6.475601e+02 2.765500e+02
-9 20860     4.947200e+02 2.256200e+02
-7 20861     3.738700e+02 2.717700e+02
-10 20861     5.203300e+02 3.259700e+02
-15 20861     7.066600e+02 3.605400e+02
-7 20862     -7.133700e+02 2.709500e+02
-11 20862     -3.128000e+02 -4.649200e+02
-13 20862     -2.228400e+02 -4.885999e+01
-7 20863     -7.185000e+02 2.653200e+02
-10 20863     -7.409500e+02 4.105800e+02
-13 20863     -2.256900e+02 -5.340002e+01
-14 20863     -2.099100e+02 -4.912100e+02
-7 20864     -6.982200e+02 2.649400e+02
-10 20864     -7.167500e+02 4.089900e+02
-7 20865     -5.496900e+02 2.649800e+02
-11 20865     -1.758200e+02 -4.915900e+02
-13 20865     -9.596002e+01 -6.466998e+01
-14 20865     -4.931000e+01 -5.138900e+02
-7 20866     -6.463700e+02 2.591200e+02
-10 20866     -6.558400e+02 4.009600e+02
-11 20866     -2.585800e+02 -4.828100e+02
-7 20867     -6.161400e+02 2.226200e+02
-14 20867     -1.215800e+02 -5.521600e+02
-7 20868     -4.764001e+01 2.220600e+02
-12 20868     8.090027e+00 1.990300e+02
-7 20869     5.729301e+02 2.222100e+02
-9 20869     4.370900e+02 1.568900e+02
-10 20869     7.519399e+02 2.385500e+02
-7 20870     3.206100e+02 1.949900e+02
-15 20870     6.255100e+02 2.575000e+02
-7 20871     1.265400e+02 1.841900e+02
-10 20871     1.591600e+02 2.047500e+02
-15 20871     2.617900e+02 2.163500e+02
-7 20872     5.932300e+02 1.837900e+02
-10 20872     7.721300e+02 1.900800e+02
-7 20873     7.122100e+02 1.781000e+02
-9 20873     5.675699e+02 1.585300e+02
-7 20874     -5.800200e+02 1.654400e+02
-13 20874     -1.195400e+02 -1.469800e+02
-7 20875     -5.800200e+02 1.654400e+02
-13 20875     -1.195400e+02 -1.469800e+02
-7 20876     4.915400e+02 1.648600e+02
-10 20876     6.495300e+02 1.810800e+02
-15 20876     8.633900e+02 1.919600e+02
-7 20877     -4.631500e+02 1.542800e+02
-10 20877     -4.629100e+02 2.591900e+02
-15 20877     -4.501600e+02 2.659900e+02
-7 20878     3.650601e+02 1.520800e+02
-10 20878     4.975500e+02 1.816100e+02
-7 20879     -3.898400e+02 1.471800e+02
-15 20879     -3.557500e+02 2.502400e+02
-7 20880     -3.447400e+02 1.459600e+02
-15 20880     -2.979000e+02 2.433800e+02
-7 20881     -2.030000e+02 1.412100e+02
-15 20881     -1.672300e+02 1.957900e+02
-7 20882     -4.728300e+02 1.373900e+02
-10 20882     -4.754100e+02 2.407200e+02
-15 20882     -4.656400e+02 2.446100e+02
-7 20883     4.489800e+02 1.337400e+02
-10 20883     5.969399e+02 1.514600e+02
-7 20884     4.503700e+02 1.260600e+02
-10 20884     5.976500e+02 1.415900e+02
-15 20884     8.014100e+02 1.433900e+02
-7 20885     -3.776700e+02 1.186600e+02
-15 20885     -3.464300e+02 2.083000e+02
-7 20886     6.713400e+02 1.176800e+02
-9 20886     5.423600e+02 9.237000e+01
-7 20887     -2.223900e+02 1.117100e+02
-13 20887     2.409000e+02 -2.159700e+02
-7 20888     4.665300e+02 1.094200e+02
-10 20888     6.147500e+02 1.190300e+02
-15 20888     8.234000e+02 1.161400e+02
-7 20889     -2.062700e+02 1.023100e+02
-10 20889     -2.203700e+02 1.469200e+02
-7 20890     4.672200e+02 9.898999e+01
-10 20890     6.123800e+02 1.061800e+02
-15 20890     8.200200e+02 1.009900e+02
-7 20891     5.061700e+02 8.492999e+01
-9 20891     3.967900e+02 1.133002e+01
-7 20892     8.839001e+01 8.176001e+01
-8 20892     3.080100e+02 -4.432001e+01
-13 20892     5.244000e+02 -2.600900e+02
-7 20893     1.628700e+02 7.225000e+01
-10 20893     1.916400e+02 7.142999e+01
-7 20894     4.367300e+02 7.059003e+01
-12 20894     5.402000e+02 2.221002e+01
-7 20895     -3.523600e+02 6.701001e+01
-10 20895     -3.527100e+02 1.442000e+02
-7 20896     -2.101600e+02 6.013000e+01
-13 20896     2.537600e+02 -2.588100e+02
-7 20897     -5.227100e+02 5.622998e+01
-15 20897     -5.441000e+02 1.360000e+02
-7 20898     3.097000e+02 5.607001e+01
-10 20898     3.726200e+02 4.517999e+01
-12 20898     4.371700e+02 2.906000e+01
-7 20899     -1.467300e+02 5.389001e+01
-10 20899     -1.628700e+02 8.201001e+01
-7 20900     1.414200e+02 4.809998e+01
-8 20900     3.522700e+02 -7.698999e+01
-10 20900     1.629500e+02 4.583002e+01
-12 20900     2.496400e+02 1.421002e+01
-7 20901     -2.054600e+02 4.540002e+01
-10 20901     -2.268500e+02 7.983002e+01
-13 20901     2.571801e+02 -2.728600e+02
-15 20901     -1.877100e+02 6.377002e+01
-7 20902     1.214900e+02 2.806000e+01
-15 20902     2.382000e+02 2.200012e+00
-7 20903     4.910999e+01 2.502002e+01
-13 20903     4.888900e+02 -3.066000e+02
-7 20904     -1.519800e+02 2.103003e+01
-15 20904     -1.277300e+02 2.167999e+01
-7 20905     5.367200e+02 -9.940002e+00
-9 20905     4.639800e+02 -4.144000e+01
-10 20905     6.778300e+02 -3.685999e+01
-7 20906     -1.392800e+02 -1.594000e+01
-10 20906     -1.635000e+02 1.229980e+00
-15 20906     -1.137800e+02 -2.794000e+01
-7 20907     -2.239100e+02 -1.839001e+01
-8 20907     2.727002e+01 -1.622000e+02
-12 20907     -1.810800e+02 -1.002800e+02
-7 20908     1.408800e+02 -2.181000e+01
-13 20908     5.696700e+02 -3.551100e+02
-7 20909     -1.544900e+02 -2.647998e+01
-15 20909     -1.355700e+02 -4.022998e+01
-7 20910     1.326200e+02 -2.654999e+01
-13 20910     5.618600e+02 -3.582400e+02
-7 20911     2.254999e+01 -6.013000e+01
-15 20911     8.958002e+01 -1.073300e+02
-7 20912     5.191600e+02 -7.464001e+01
-12 20912     6.685800e+02 -1.273600e+02
-7 20913     -6.322900e+02 -8.284998e+01
-10 20913     -6.852200e+02 -6.130005e+00
-7 20914     -5.874000e+02 -8.340997e+01
-8 20914     -4.073800e+02 -3.222300e+02
-13 20914     -1.179600e+02 -3.582400e+02
-7 20915     -4.698300e+02 -8.922998e+01
-13 20915     -1.496002e+01 -3.735300e+02
-7 20916     -5.385700e+02 -1.459700e+02
-15 20916     -6.011500e+02 -1.361400e+02
-7 20917     -5.541900e+02 -1.470300e+02
-15 20917     -6.216400e+02 -1.360600e+02
-7 20918     -4.078300e+02 -1.575400e+02
-8 20918     -2.023000e+02 -3.680900e+02
-7 20919     -1.468100e+02 -1.687100e+02
-13 20919     2.951500e+02 -4.667700e+02
-7 20920     -4.800300e+02 -1.742200e+02
-15 20920     -5.332500e+02 -1.814900e+02
-7 20921     6.005900e+02 -1.810800e+02
-9 20921     5.915500e+02 -1.349500e+02
-7 20922     -7.260010e+00 -1.959300e+02
-13 20922     4.243101e+02 -5.030300e+02
-7 20923     8.270020e+00 -2.271600e+02
-10 20923     -9.719971e+00 -2.495000e+02
-7 20924     -4.172800e+02 -2.580300e+02
-9 20924     -3.030600e+02 -3.639800e+02
-7 20925     2.265300e+02 -3.423200e+02
-10 20925     2.294000e+02 -4.070000e+02
-7 20926     -4.601400e+02 -3.567100e+02
-15 20926     -5.459600e+02 -4.279400e+02
-7 20927     -4.601400e+02 -3.567100e+02
-15 20927     -5.459600e+02 -4.279400e+02
-7 20928     -3.398200e+02 -3.639400e+02
-15 20928     -3.945100e+02 -4.530601e+02
-7 20929     1.215600e+02 -3.850700e+02
-9 20929     2.949900e+02 -3.441300e+02
-7 20930     6.533700e+02 -3.902800e+02
-9 20930     7.285000e+02 -2.529900e+02
-10 20930     7.429600e+02 -5.297500e+02
-7 20931     5.142200e+02 -3.915200e+02
-10 20931     5.672700e+02 -5.072500e+02
-7 20932     -6.956000e+01 -4.131800e+02
-15 20932     -5.945001e+01 -5.597200e+02
-7 20933     3.986300e+02 -4.542900e+02
-12 20933     6.235800e+02 -5.664900e+02
-7 20934     -2.299200e+02 -4.839700e+02
-10 20934     -3.095900e+02 -5.141500e+02
-7 20935     4.035999e+01 -5.006100e+02
-9 20935     2.809301e+02 -4.418700e+02
-7 20936     -2.669500e+02 -5.397600e+02
-9 20936     -3.300171e-01 -5.486500e+02
-7 20937     1.871997e+01 -5.501300e+02
-9 20937     2.857000e+02 -4.833300e+02
-7 20938     -1.572900e+02 -5.628300e+02
-9 20938     1.235700e+02 -5.376700e+02
-7 20939     -5.892999e+01 5.014400e+02
-9 20939     -2.619100e+02 2.157600e+02
-7 20940     -1.182800e+02 4.512200e+02
-11 20940     2.416700e+02 -3.702700e+02
-7 20941     2.686000e+02 4.436700e+02
-10 20941     4.257600e+02 5.515400e+02
-13 20941     6.340100e+02 4.558002e+01
-7 20942     -2.220200e+02 4.208400e+02
-10 20942     -1.471400e+02 5.653300e+02
-13 20942     1.818700e+02 4.807001e+01
-14 20942     3.016400e+02 -3.864000e+02
-7 20943     1.292900e+02 3.978300e+02
-13 20943     4.935200e+02 1.100000e+01
-14 20943     6.966600e+02 -4.481801e+02
-7 20944     1.155100e+02 3.913200e+02
-13 20944     4.817500e+02 5.619995e+00
-14 20944     6.809399e+02 -4.541801e+02
-7 20945     -2.401200e+02 3.609200e+02
-13 20945     1.673600e+02 -3.270020e+00
-14 20945     2.818800e+02 -4.504500e+02
-15 20945     -1.185200e+02 5.417700e+02
-7 20946     5.110900e+02 3.572200e+02
-9 20946     3.596500e+02 2.583200e+02
-7 20947     4.784900e+02 3.493600e+02
-9 20947     3.313800e+02 2.427900e+02
-7 20948     -1.377600e+02 3.333500e+02
-10 20948     -6.496002e+01 4.498600e+02
-11 20948     1.960200e+02 -4.846400e+02
-7 20949     3.578199e+02 3.294600e+02
-8 20949     4.007700e+02 6.800000e+01
-13 20949     7.284000e+02 -5.860999e+01
-7 20950     -3.383900e+02 3.047700e+02
-11 20950     1.088000e+01 -4.853200e+02
-13 20950     8.421002e+01 -4.441998e+01
-14 20950     1.773400e+02 -4.991801e+02
-15 20950     -2.600400e+02 4.670200e+02
-7 20951     -4.927400e+02 3.041400e+02
-11 20951     -1.202500e+02 -4.638500e+02
-7 20952     -5.749800e+02 3.028500e+02
-11 20952     -1.914400e+02 -4.552700e+02
-13 20952     -1.126400e+02 -3.209003e+01
-14 20952     -6.779999e+01 -4.712200e+02
-7 20953     -6.163000e+02 2.950300e+02
-11 20953     -2.272400e+02 -4.564500e+02
-12 20953     -7.417500e+02 1.768200e+02
-7 20954     -2.420200e+02 2.920900e+02
-10 20954     -1.905200e+02 4.067100e+02
-7 20955     -3.298800e+02 2.882800e+02
-11 20955     1.365002e+01 -5.026899e+02
-7 20956     -5.883500e+02 2.785900e+02
-11 20956     -2.065600e+02 -4.741400e+02
-13 20956     -1.258800e+02 -5.127002e+01
-14 20956     -8.584003e+01 -4.947100e+02
-7 20957     -6.616900e+02 2.532400e+02
-10 20957     -6.738000e+02 3.950200e+02
-11 20957     -2.696400e+02 -4.858200e+02
-7 20958     -6.738900e+02 2.396400e+02
-11 20958     -2.862300e+02 -4.963400e+02
-7 20959     -5.290000e+02 2.323600e+02
-10 20959     -5.244300e+02 3.591600e+02
-7 20960     1.350900e+02 2.172600e+02
-10 20960     1.744000e+02 2.441700e+02
-12 20960     2.206200e+02 2.073700e+02
-13 20960     5.634700e+02 -1.458400e+02
-15 20960     2.809700e+02 2.629900e+02
-7 20961     -4.399500e+02 2.023700e+02
-8 20961     -3.180000e+02 -9.664001e+01
-7 20962     -5.570400e+02 1.783900e+02
-13 20962     -9.914001e+01 -1.378200e+02
-7 20963     3.826400e+02 1.778400e+02
-10 20963     5.237500e+02 2.122800e+02
-7 20964     3.826400e+02 1.778400e+02
-10 20964     5.237500e+02 2.122800e+02
-7 20965     4.988101e+02 1.561800e+02
-10 20965     6.565699e+02 1.709200e+02
-7 20966     4.988101e+02 1.561800e+02
-10 20966     6.566000e+02 1.713700e+02
-7 20967     -5.594800e+02 1.541400e+02
-13 20967     -9.950000e+01 -1.574100e+02
-7 20968     -5.594800e+02 1.541400e+02
-13 20968     -9.950000e+01 -1.574100e+02
-7 20969     3.714700e+02 1.436300e+02
-10 20969     5.035601e+02 1.708500e+02
-7 20970     -7.400300e+02 1.426700e+02
-13 20970     -2.547500e+02 -1.540000e+02
-7 20971     9.500122e-01 1.357900e+02
-10 20971     5.719971e+00 1.571900e+02
-13 20971     4.500800e+02 -2.074800e+02
-15 20971     7.948999e+01 1.589400e+02
-7 20972     -3.765400e+02 1.088600e+02
-10 20972     -3.731300e+02 1.959800e+02
-13 20972     6.023999e+01 -2.104300e+02
-15 20972     -3.459400e+02 1.948800e+02
-7 20973     -3.683800e+02 1.005500e+02
-13 20973     6.732001e+01 -2.180300e+02
-7 20974     -3.683800e+02 1.005500e+02
-10 20974     -3.651200e+02 1.855800e+02
-13 20974     6.732001e+01 -2.180300e+02
-7 20975     4.951801e+02 8.970999e+01
-15 20975     8.624100e+02 8.229999e+01
-7 20976     -3.723900e+02 8.022000e+01
-15 20976     -3.479400e+02 1.552100e+02
-7 20977     -1.622400e+02 7.159998e+01
-13 20977     2.972800e+02 -2.537900e+02
-7 20978     4.228000e+02 5.698999e+01
-12 20978     5.270200e+02 6.729980e+00
-7 20979     -3.943200e+02 2.082001e+01
-9 20979     -4.060700e+02 -1.529300e+02
-7 20980     -1.127002e+01 -5.937000e+01
-15 20980     4.465997e+01 -1.024800e+02
-7 20981     -9.394000e+01 -7.734998e+01
-15 20981     -6.902002e+01 -1.179700e+02
-7 20982     -6.275000e+01 -7.758002e+01
-10 20982     -8.615002e+01 -7.671997e+01
-7 20983     -4.787900e+02 -9.790997e+01
-15 20983     -5.182300e+02 -7.883002e+01
-7 20984     -4.787900e+02 -9.790997e+01
-13 20984     -2.303003e+01 -3.806000e+02
-15 20984     -5.182300e+02 -7.883002e+01
-7 20985     -5.104800e+02 -9.917999e+01
-15 20985     -5.558300e+02 -7.608002e+01
-7 20986     5.315900e+02 -1.055600e+02
-15 20986     8.622300e+02 -2.138100e+02
-7 20987     -3.998300e+02 -1.112500e+02
-13 20987     4.747998e+01 -3.989300e+02
-7 20988     -3.998300e+02 -1.112500e+02
-13 20988     4.747998e+01 -3.989300e+02
-7 20989     -7.052100e+02 -1.806000e+02
-15 20989     -8.162600e+02 -1.649600e+02
-7 20990     -4.800600e+02 -1.875000e+02
-15 20990     -5.371600e+02 -1.988800e+02
-7 20991     5.982200e+02 -1.905900e+02
-9 20991     5.939700e+02 -1.406500e+02
-12 20991     7.884900e+02 -2.442300e+02
-7 20992     -3.831500e+02 -2.808500e+02
-13 20992     6.620001e+01 -5.504500e+02
-7 20993     -4.701400e+02 -3.349100e+02
-15 20993     -5.539400e+02 -3.970100e+02
-7 20994     -2.650000e+02 -3.435800e+02
-15 20994     -2.963600e+02 -4.362200e+02
-7 20995     -4.638400e+02 -3.484200e+02
-10 20995     -5.424500e+02 -3.307800e+02
-15 20995     -5.493900e+02 -4.172300e+02
-7 20996     -4.935600e+02 -3.591100e+02
-15 20996     -5.889200e+02 -4.267600e+02
-7 20997     -3.494300e+02 -3.714000e+02
-15 20997     -4.092300e+02 -4.629399e+02
-7 20998     -5.168300e+02 -3.805900e+02
-15 20998     -6.213000e+02 -4.536500e+02
-7 20999     2.467200e+02 -3.830800e+02
-9 20999     4.018101e+02 -3.199200e+02
-7 21000     4.538300e+02 -3.841200e+02
-10 21000     4.922300e+02 -4.880900e+02
-7 21001     3.279900e+02 -4.316800e+02
-10 21001     3.322200e+02 -5.262800e+02
-7 21002     -3.576900e+02 -4.422900e+02
-15 21002     -4.350500e+02 -5.562400e+02
-7 21003     7.640002e+01 -4.624500e+02
-9 21003     2.940100e+02 -4.072500e+02
-7 21004     3.556400e+02 5.261900e+02
-8 21004     3.627500e+02 2.135500e+02
-12 21004     3.811600e+02 5.197200e+02
-7 21005     3.295500e+02 4.260400e+02
-8 21005     3.445500e+02 1.248200e+02
-7 21006     -5.085200e+02 4.154600e+02
-11 21006     -1.169100e+02 -3.677700e+02
-12 21006     -6.187200e+02 3.263600e+02
-7 21007     6.184998e+01 3.851200e+02
-10 21007     1.804000e+02 5.003800e+02
-11 21007     3.971500e+02 -4.541200e+02
-7 21008     8.900146e-01 3.587100e+02
-10 21008     1.037700e+02 4.712300e+02
-11 21008     3.339800e+02 -4.754000e+02
-7 21009     1.191500e+02 3.309800e+02
-10 21009     2.364200e+02 4.273600e+02
-7 21010     1.569700e+02 3.275000e+02
-10 21010     2.812400e+02 4.200800e+02
-7 21011     -6.885200e+02 2.976300e+02
-10 21011     -7.048700e+02 4.446900e+02
-11 21011     -2.871600e+02 -4.455000e+02
-7 21012     -5.740200e+02 2.855500e+02
-11 21012     -1.935100e+02 -4.704500e+02
-7 21013     -5.466100e+02 2.831400e+02
-13 21013     -9.342999e+01 -4.959003e+01
-14 21013     -4.539001e+01 -4.952300e+02
-7 21014     -6.782100e+02 2.663800e+02
-8 21014     -5.513200e+02 -4.797000e+01
-10 21014     -6.940200e+02 4.106200e+02
-11 21014     -2.846700e+02 -4.707900e+02
-7 21015     -3.873700e+02 2.056700e+02
-15 21015     -3.419000e+02 3.313400e+02
-7 21016     -3.440300e+02 2.060400e+02
-10 21016     -3.215500e+02 3.104500e+02
-15 21016     -2.846400e+02 3.268000e+02
-7 21017     3.468700e+02 1.964900e+02
-10 21017     4.834900e+02 2.391100e+02
-15 21017     6.638000e+02 2.582000e+02
-7 21018     -5.468100e+02 1.498500e+02
-13 21018     -8.892999e+01 -1.624900e+02
-7 21019     -2.778500e+02 1.367500e+02
-10 21019     -2.873600e+02 1.990000e+02
-15 21019     -2.563100e+02 2.009500e+02
-7 21020     4.916899e+02 1.297300e+02
-10 21020     6.466400e+02 1.407800e+02
-7 21021     -3.833900e+02 1.267000e+02
-15 21021     -3.517200e+02 2.199200e+02
-7 21022     -4.909500e+02 3.282001e+01
-15 21022     -5.060200e+02 1.010800e+02
-7 21023     -1.985100e+02 3.103003e+01
-10 21023     -2.211200e+02 6.353003e+01
-15 21023     -1.807700e+02 4.450000e+01
-7 21024     -2.559998e+00 -1.245001e+01
-15 21024     5.965002e+01 -4.127002e+01
-7 21025     -1.520800e+02 -5.390997e+01
-13 21025     3.086899e+02 -3.611100e+02
-15 21025     -1.399500e+02 -7.860999e+01
-7 21026     -4.423200e+02 -9.231000e+01
-13 21026     8.609985e+00 -3.793700e+02
-7 21027     -2.619800e+02 -1.012900e+02
-13 21027     1.834800e+02 -3.976600e+02
-7 21028     -4.863200e+02 -1.348900e+02
-15 21028     -5.354900e+02 -1.275700e+02
-7 21029     5.296700e+02 -1.481500e+02
-15 21029     8.498600e+02 -2.768700e+02
-7 21030     -3.691100e+02 -2.599700e+02
-9 21030     -2.505000e+02 -3.554800e+02
-13 21030     7.814001e+01 -5.330200e+02
-7 21031     -4.369900e+02 -2.613400e+02
-13 21031     1.792999e+01 -5.278600e+02
-7 21032     4.502002e+01 -2.859000e+02
-9 21032     2.039700e+02 -2.541600e+02
-7 21033     5.284800e+02 -4.026500e+02
-10 21033     5.814500e+02 -5.237900e+02
-7 21034     5.284800e+02 -4.026500e+02
-10 21034     5.814500e+02 -5.237900e+02
-7 21035     4.774800e+02 -4.165900e+02
-10 21035     5.151100e+02 -5.332900e+02
-7 21036     1.861899e+02 -4.306500e+02
-10 21036     1.668600e+02 -5.056100e+02
-7 21037     4.676400e+02 -4.516200e+02
-10 21037     4.960699e+02 -5.725601e+02
-7 21038     3.810900e+02 -4.667700e+02
-9 21038     5.557400e+02 -3.477200e+02
-10 21038     3.882400e+02 -5.766300e+02
-12 21038     6.057900e+02 -5.818101e+02
-7 21039     4.996400e+02 -4.649200e+02
-9 21039     6.487800e+02 -3.261800e+02
-10 21039     5.336000e+02 -5.954100e+02
-7 21040     4.106600e+02 -4.685400e+02
-9 21040     5.813600e+02 -3.445200e+02
-10 21040     4.235800e+02 -5.853300e+02
-12 21040     6.410800e+02 -5.810400e+02
-7 21041     1.204100e+02 5.555900e+02
-8 21041     1.069400e+02 1.648400e+02
-7 21042     -1.384100e+02 4.599900e+02
-14 21042     3.881899e+02 -3.537200e+02
-7 21043     3.375000e+02 4.082800e+02
-8 21043     3.543000e+02 1.108500e+02
-7 21044     2.592400e+02 3.791200e+02
-13 21044     6.220000e+02 -1.001001e+01
-15 21044     5.754399e+02 5.357000e+02
-7 21045     4.520001e+01 3.646300e+02
-10 21045     1.561100e+02 4.758700e+02
-11 21045     3.758600e+02 -4.724800e+02
-7 21046     -4.617900e+02 3.262300e+02
-13 21046     -2.067999e+01 -1.977002e+01
-14 21046     4.690002e+01 -4.615800e+02
-7 21047     -4.710300e+02 3.143800e+02
-11 21047     -9.915002e+01 -4.579400e+02
-13 21047     -2.931000e+01 -2.829999e+01
-14 21047     3.584003e+01 -4.718199e+02
-7 21048     -1.394100e+02 2.361300e+02
-15 21048     -8.108002e+01 3.148200e+02
-7 21049     -6.656400e+02 2.308500e+02
-10 21049     -6.800700e+02 3.703800e+02
-11 21049     -2.804500e+02 -5.048600e+02
-13 21049     -1.917500e+02 -8.492999e+01
-14 21049     -1.707000e+02 -5.341500e+02
-7 21050     -7.359998e+01 2.026400e+02
-15 21050     -1.071002e+01 2.562200e+02
-7 21051     4.770500e+02 1.098600e+02
-10 21051     6.276200e+02 1.187700e+02
-15 21051     8.367600e+02 1.153500e+02
-7 21052     4.788700e+02 9.482001e+01
-15 21052     8.366500e+02 9.304001e+01
-7 21053     -8.049988e+00 8.528000e+01
-10 21053     -9.979980e+00 1.006400e+02
-13 21053     4.415400e+02 -2.501800e+02
-15 21053     6.256000e+01 9.135999e+01
-7 21054     -8.049988e+00 8.528000e+01
-10 21054     -9.979980e+00 1.006400e+02
-13 21054     4.415400e+02 -2.501800e+02
-15 21054     6.256000e+01 9.135999e+01
-7 21055     4.929100e+02 6.487000e+01
-9 21055     3.946600e+02 -1.650024e+00
-7 21056     4.357400e+02 2.025000e+01
-12 21056     5.500900e+02 -3.107001e+01
-7 21057     -2.317300e+02 -8.400024e+00
-10 21057     -2.644300e+02 2.014001e+01
-15 21057     -2.318700e+02 -6.200012e+00
-7 21058     -4.198999e+01 -9.510010e+00
-10 21058     -5.685999e+01 -4.080017e+00
-7 21059     -1.711700e+02 -3.128998e+01
-10 21059     -2.003400e+02 -1.396002e+01
-7 21060     -4.537300e+02 -6.003003e+01
-13 21060     -1.719971e+00 -3.499700e+02
-7 21061     -4.423100e+02 -6.895001e+01
-13 21061     7.849976e+00 -3.584400e+02
-7 21062     -4.423100e+02 -6.895001e+01
-13 21062     7.849976e+00 -3.584400e+02
-7 21063     -5.002500e+02 -7.207001e+01
-13 21063     -4.208002e+01 -3.560900e+02
-15 21063     -5.398500e+02 -4.037000e+01
-7 21064     -2.494900e+02 -9.764001e+01
-13 21064     1.993800e+02 -3.909700e+02
-7 21065     -4.218200e+02 -1.485800e+02
-13 21065     2.927002e+01 -4.305900e+02
-7 21066     1.615200e+02 -1.513900e+02
-9 21066     2.743101e+02 -1.109300e+02
-7 21067     9.497998e+01 -1.976000e+02
-10 21067     8.942999e+01 -2.270300e+02
-13 21067     5.173900e+02 -5.149200e+02
-15 21067     1.853600e+02 -2.965300e+02
-7 21068     -4.257400e+02 -2.293100e+02
-13 21068     2.734003e+01 -4.999200e+02
-7 21069     -3.779800e+02 -3.032300e+02
-9 21069     -2.398800e+02 -3.898900e+02
-7 21070     -4.661800e+02 -3.600600e+02
-15 21070     -5.534900e+02 -4.302800e+02
-7 21071     -5.071800e+02 -3.983600e+02
-15 21071     -6.134800e+02 -4.769399e+02
-7 21072     -1.018300e+02 -4.091100e+02
-9 21072     1.000500e+02 -4.081600e+02
-7 21073     2.154900e+02 -4.791200e+02
-9 21073     4.220100e+02 -3.899600e+02
-7 21074     2.163500e+02 -4.920800e+02
-9 21074     4.319301e+02 -3.984600e+02
-10 21074     1.886700e+02 -5.825601e+02
-7 21075     -1.902200e+02 6.390015e+00
-13 21075     2.703101e+02 -3.066700e+02
-7 21076     -1.626300e+02 -1.837200e+02
-10 21076     -1.950800e+02 -1.801100e+02
-13 21076     2.772800e+02 -4.828101e+02
-15 21076     -1.443000e+02 -2.394400e+02
-7 21077     -3.899400e+02 -2.913900e+02
-13 21077     5.873999e+01 -5.596400e+02
-7 21078     4.996801e+02 -3.883900e+02
-10 21078     5.492600e+02 -5.010000e+02
-7 21079     4.799700e+02 -4.361801e+02
-10 21079     5.136200e+02 -5.547100e+02
-7 21080     3.944700e+02 -4.623000e+02
-9 21080     5.641500e+02 -3.422100e+02
-12 21080     6.204301e+02 -5.743000e+02
-7 21081     3.580400e+02 -5.282900e+02
-9 21081     5.684301e+02 -3.936700e+02
-7 21082     -2.728998e+01 5.094800e+02
-8 21082     -6.780029e+00 1.318200e+02
-11 21082     3.318900e+02 -3.234900e+02
-7 21083     5.604399e+02 2.932000e+02
-10 21083     7.423300e+02 3.257200e+02
-7 21084     -2.027100e+02 1.202100e+02
-13 21084     2.576801e+02 -2.068800e+02
-7 21085     -1.141800e+02 -4.435999e+01
-10 21085     -1.391100e+02 -3.314001e+01
-15 21085     -8.712000e+01 -6.958002e+01
-7 21086     -2.310300e+02 1.203400e+02
-10 21086     -2.416700e+02 1.720400e+02
-13 21086     2.302400e+02 -2.083900e+02
-15 21086     -2.039600e+02 1.717900e+02
-7 21087     4.734003e+01 -4.891600e+02
-9 21087     2.816700e+02 -4.324400e+02
-7 21088     3.501001e+01 1.050500e+02
-15 21088     1.242000e+02 1.141700e+02
-7 21089     -1.756900e+02 4.570001e+01
-15 21089     -1.545900e+02 5.534998e+01
-7 21090     -4.552500e+02 3.942800e+02
-11 21090     -7.406000e+01 -3.920700e+02
-8 21091     -2.382001e+01 4.379500e+02
-14 21091     5.113000e+02 4.900000e+01
-8 21092     3.710900e+02 4.191800e+02
-9 21092     1.652400e+02 5.540300e+02
-8 21093     3.334500e+02 4.171800e+02
-11 21093     6.427500e+02 -1.165400e+02
-8 21094     4.098400e+02 4.090400e+02
-9 21094     2.056801e+02 5.449300e+02
-8 21095     1.412000e+02 3.968100e+02
-11 21095     5.316100e+02 -4.713000e+01
-8 21096     -4.744500e+02 3.833400e+02
-11 21096     -1.821400e+02 -1.037100e+02
-8 21097     1.321300e+02 3.713300e+02
-13 21097     5.276600e+02 3.637900e+02
-14 21097     7.214100e+02 -1.512000e+01
-8 21098     -1.678500e+02 3.665400e+02
-11 21098     1.447700e+02 -1.036700e+02
-13 21098     1.934800e+02 3.304500e+02
-14 21098     3.194200e+02 -4.459998e+01
-8 21099     5.257800e+02 3.519600e+02
-9 21099     3.345500e+02 4.938300e+02
-8 21100     3.795100e+02 3.487400e+02
-9 21100     1.765100e+02 4.798900e+02
-8 21101     3.857200e+02 3.273300e+02
-9 21101     1.840000e+02 4.580900e+02
-8 21102     5.259399e+02 3.149700e+02
-9 21102     3.359301e+02 4.561200e+02
-8 21103     -3.709600e+02 3.145200e+02
-11 21103     -8.145001e+01 -1.608500e+02
-8 21104     5.753400e+02 3.055500e+02
-9 21104     3.856899e+02 4.485400e+02
-8 21105     4.549800e+02 2.943900e+02
-12 21105     4.846400e+02 6.054400e+02
-8 21106     -2.758002e+01 2.903900e+02
-9 21106     -2.668300e+02 3.940200e+02
-8 21107     -3.603500e+02 2.848500e+02
-12 21107     -5.986400e+02 5.943200e+02
-8 21108     -3.352200e+02 2.806700e+02
-12 21108     -5.624300e+02 5.926200e+02
-8 21109     -3.352200e+02 2.806700e+02
-12 21109     -5.624300e+02 5.926200e+02
-8 21110     -1.939800e+02 2.754400e+02
-11 21110     1.104100e+02 -1.914500e+02
-8 21111     4.949399e+02 2.736000e+02
-9 21111     3.061700e+02 4.115900e+02
-8 21112     4.990200e+02 2.737300e+02
-9 21112     3.105300e+02 4.121100e+02
-8 21113     -3.550800e+02 2.637900e+02
-12 21113     -5.880100e+02 5.662900e+02
-8 21114     5.048000e+02 2.586800e+02
-9 21114     3.170699e+02 3.969000e+02
-8 21115     2.783100e+02 2.573400e+02
-9 21115     7.200000e+01 3.772700e+02
-8 21116     1.563000e+01 2.567100e+02
-9 21116     -2.208400e+02 3.572000e+02
-8 21117     -4.072700e+02 2.516800e+02
-12 21117     -6.608200e+02 5.426700e+02
-8 21118     -4.000000e+02 2.476200e+02
-12 21118     -6.490100e+02 5.377600e+02
-8 21119     -6.349976e+00 2.458800e+02
-13 21119     3.574200e+02 2.228900e+02
-8 21120     5.984000e+02 2.460000e+02
-9 21120     4.117300e+02 3.891800e+02
-8 21121     -4.022700e+02 2.455500e+02
-11 21121     -1.173800e+02 -2.217000e+02
-12 21121     -6.520800e+02 5.358500e+02
-8 21122     3.008800e+02 2.457200e+02
-12 21122     3.000100e+02 5.691500e+02
-8 21123     -1.376700e+02 2.318500e+02
-9 21123     -3.775700e+02 3.282500e+02
-8 21124     3.136900e+02 2.264100e+02
-9 21124     1.120200e+02 3.460700e+02
-11 21124     6.218900e+02 -3.220400e+02
-12 21124     3.168500e+02 5.411800e+02
-8 21125     -5.252002e+01 2.262200e+02
-9 21125     -2.891200e+02 3.234800e+02
-8 21126     5.902500e+02 2.260300e+02
-10 21126     7.823400e+02 5.379300e+02
-8 21127     1.278003e+01 2.140000e+02
-12 21127     -5.945001e+01 5.525000e+02
-8 21128     -8.981000e+01 2.107800e+02
-9 21128     -3.270200e+02 3.056400e+02
-8 21129     4.319399e+02 2.049100e+02
-9 21129     2.433800e+02 3.362000e+02
-8 21130     5.900800e+02 2.051700e+02
-9 21130     4.047800e+02 3.475600e+02
-8 21131     3.633000e+02 2.044500e+02
-9 21131     1.649600e+02 3.275000e+02
-8 21132     3.221800e+02 2.007100e+02
-9 21132     1.214100e+02 3.199100e+02
-8 21133     3.339000e+02 1.985700e+02
-12 21133     3.427500e+02 5.024400e+02
-8 21134     5.359500e+02 1.983800e+02
-10 21134     7.024301e+02 5.176700e+02
-12 21134     5.890200e+02 4.649400e+02
-8 21135     -4.378998e+01 1.950600e+02
-9 21135     -2.774700e+02 2.891100e+02
-8 21136     3.064800e+02 1.912600e+02
-12 21136     3.072900e+02 4.948900e+02
-8 21137     1.677900e+02 1.888500e+02
-13 21137     5.489800e+02 1.764600e+02
-8 21138     1.677900e+02 1.888500e+02
-13 21138     5.489800e+02 1.764600e+02
-8 21139     5.019000e+02 1.793700e+02
-9 21139     3.167900e+02 3.148000e+02
-8 21140     -2.004900e+02 1.755700e+02
-9 21140     -4.405100e+02 2.648800e+02
-8 21141     5.133101e+02 1.747600e+02
-9 21141     3.285200e+02 3.113600e+02
-8 21142     3.941000e+02 1.629800e+02
-9 21142     1.989500e+02 2.858500e+02
-8 21143     -5.072600e+02 1.603800e+02
-12 21143     -7.850000e+02 4.086200e+02
-8 21144     2.794900e+02 1.595700e+02
-9 21144     7.720001e+01 2.735600e+02
-14 21144     8.665000e+02 -3.664600e+02
-8 21145     -5.041500e+02 1.548000e+02
-11 21145     -2.244300e+02 -2.998100e+02
-12 21145     -7.789400e+02 4.019100e+02
-8 21146     4.723800e+02 1.313300e+02
-9 21146     2.889100e+02 2.633300e+02
-8 21147     4.409900e+02 1.295200e+02
-12 21147     4.638800e+02 3.829200e+02
-8 21148     4.342100e+02 1.235100e+02
-9 21148     2.497600e+02 2.517100e+02
-10 21148     5.573700e+02 4.544900e+02
-15 21148     7.478800e+02 5.165200e+02
-8 21149     -3.385400e+02 1.208900e+02
-12 21149     -5.466300e+02 3.828800e+02
-8 21150     2.956500e+02 1.204800e+02
-13 21150     6.418000e+02 3.656000e+01
-8 21151     5.799200e+02 1.190400e+02
-9 21151     3.986801e+02 2.584700e+02
-8 21152     4.508300e+02 1.170600e+02
-9 21152     2.669500e+02 2.457800e+02
-8 21153     -5.812000e+01 1.167300e+02
-9 21153     -2.895900e+02 2.019100e+02
-13 21153     2.901500e+02 9.685999e+01
-8 21154     -3.170800e+02 1.141400e+02
-12 21154     -5.164300e+02 3.761000e+02
-8 21155     4.402900e+02 1.140700e+02
-15 21155     7.559700e+02 4.991300e+02
-8 21156     -3.561600e+02 1.096100e+02
-11 21156     -7.815002e+01 -3.452100e+02
-13 21156     -9.979980e+00 8.181000e+01
-14 21156     6.565002e+01 -3.343000e+02
-8 21157     5.595699e+02 1.094300e+02
-9 21157     3.786100e+02 2.470400e+02
-10 21157     7.088800e+02 3.845100e+02
-8 21158     4.448400e+02 1.091100e+02
-12 21158     4.685601e+02 3.560500e+02
-8 21159     -3.754400e+02 1.033100e+02
-12 21159     -5.958300e+02 3.545600e+02
-8 21160     5.161801e+02 1.000200e+02
-15 21160     8.587500e+02 4.437900e+02
-8 21161     -4.983700e+02 9.773001e+01
-11 21161     -2.229800e+02 -3.506400e+02
-8 21162     -4.142100e+02 9.704001e+01
-12 21162     -6.484900e+02 3.408400e+02
-8 21163     -1.339100e+02 9.629001e+01
-12 21163     -2.594300e+02 3.807400e+02
-8 21164     4.750000e+02 9.392001e+01
-9 21164     2.929700e+02 2.243300e+02
-8 21165     -5.391600e+02 9.297000e+01
-12 21165     -8.204300e+02 3.195100e+02
-8 21166     -5.110300e+02 9.182999e+01
-10 21166     -6.571500e+02 5.784800e+02
-8 21167     2.169000e+01 9.126999e+01
-9 21167     -2.005000e+02 1.798600e+02
-8 21168     -5.938800e+02 9.094000e+01
-10 21168     -7.726200e+02 5.725100e+02
-14 21168     -1.998600e+02 -3.464500e+02
-8 21169     -5.326300e+02 9.128000e+01
-10 21169     -6.878300e+02 5.760500e+02
-12 21169     -8.097800e+02 3.178000e+02
-8 21170     -5.280000e+02 8.963000e+01
-10 21170     -6.823300e+02 5.734000e+02
-12 21170     -8.038700e+02 3.153500e+02
-8 21171     5.740200e+02 8.845001e+01
-9 21171     3.940800e+02 2.265200e+02
-8 21172     -5.081100e+02 8.725000e+01
-10 21172     -6.528500e+02 5.725800e+02
-12 21172     -7.753400e+02 3.162000e+02
-8 21173     -5.796700e+02 6.325000e+01
-10 21173     -7.491500e+02 5.390600e+02
-15 21173     -7.752700e+02 5.816500e+02
-8 21174     -2.362300e+02 6.200000e+01
-9 21174     -4.713800e+02 1.374300e+02
-8 21175     -4.481900e+02 5.632999e+01
-12 21175     -6.891100e+02 2.846500e+02
-15 21175     -5.670800e+02 5.832200e+02
-8 21176     -4.819900e+02 5.582001e+01
-14 21176     -8.356000e+01 -3.878500e+02
-8 21177     5.304800e+02 5.164001e+01
-9 21177     3.518199e+02 1.858000e+02
-12 21177     5.765100e+02 2.709900e+02
-8 21178     5.546400e+02 5.173999e+01
-10 21178     6.876300e+02 3.096900e+02
-8 21179     5.290000e+02 4.707999e+01
-9 21179     3.503000e+02 1.811500e+02
-8 21180     6.000000e+01 3.442999e+01
-9 21180     -9.097998e+01 1.631300e+02
-8 21181     2.050000e+02 3.467999e+01
-10 21181     -7.179993e+00 2.132400e+02
-13 21181     4.372200e+02 -1.678600e+02
-15 21181     6.514001e+01 2.231900e+02
-8 21182     5.829900e+02 2.807999e+01
-9 21182     4.059500e+02 1.661700e+02
-8 21183     -4.775100e+02 2.525000e+01
-10 21183     -6.026200e+02 4.986100e+02
-12 21183     -7.248600e+02 2.423700e+02
-15 21183     -6.097800e+02 5.397900e+02
-8 21184     1.838900e+02 2.569000e+01
-15 21184     3.335999e+01 2.146200e+02
-8 21185     -1.281400e+02 2.034000e+01
-9 21185     -3.473500e+02 9.975000e+01
-8 21186     2.250500e+02 1.984000e+01
-12 21186     7.841998e+01 1.379400e+02
-8 21187     -5.977900e+02 1.556000e+01
-15 21187     -7.955100e+02 5.153400e+02
-8 21188     -4.545700e+02 1.528000e+01
-10 21188     -5.699200e+02 4.877800e+02
-8 21189     5.587100e+02 1.135999e+01
-10 21189     6.844399e+02 2.556500e+02
-8 21190     -4.812800e+02 2.999878e-02
-12 21190     -7.261400e+02 2.109500e+02
-8 21191     -1.601300e+02 -1.779999e+00
-12 21191     -3.045700e+02 2.338700e+02
-13 21191     1.653300e+02 -3.379999e+01
-14 21191     2.796899e+02 -4.899700e+02
-15 21191     -1.300800e+02 4.900900e+02
-8 21192     5.814100e+02 -1.540009e+00
-12 21192     6.405699e+02 1.956800e+02
-8 21193     -5.524200e+02 -5.140015e+00
-10 21193     -7.020300e+02 4.594000e+02
-12 21193     -8.218900e+02 1.945600e+02
-15 21193     -7.224600e+02 4.920800e+02
-8 21194     -5.899500e+02 -1.588000e+01
-10 21194     -7.497700e+02 4.467800e+02
-11 21194     -3.177200e+02 -4.420100e+02
-15 21194     -7.755300e+02 4.758200e+02
-8 21195     5.577400e+02 -2.832999e+01
-9 21195     3.832800e+02 1.053700e+02
-8 21196     -7.365002e+01 -3.623999e+01
-9 21196     -2.382400e+02 7.210999e+01
-8 21197     5.923800e+02 -3.806000e+01
-10 21197     7.131100e+02 1.784600e+02
-8 21198     -6.031000e+01 -4.012000e+01
-9 21198     -2.225700e+02 6.982001e+01
-8 21199     5.520100e+02 -4.235999e+01
-10 21199     6.634900e+02 1.903200e+02
-8 21200     -5.607300e+02 -4.932001e+01
-13 21200     -2.046600e+02 -5.609003e+01
-14 21200     -1.841300e+02 -4.961500e+02
-8 21201     -7.651001e+01 -5.079001e+01
-9 21201     -2.367900e+02 5.878003e+01
-8 21202     -8.425000e+01 -5.201999e+01
-13 21202     1.810800e+02 -1.745600e+02
-8 21203     1.175100e+02 -6.889001e+01
-12 21203     -6.190997e+01 2.269000e+01
-8 21204     1.360800e+02 -7.250000e+01
-9 21204     3.400024e+00 6.312000e+01
-8 21205     -1.350000e+02 -7.603003e+01
-9 21205     -3.329000e+02 4.369995e+00
-8 21206     3.492200e+02 -8.483002e+01
-12 21206     2.443900e+02 3.960022e+00
-8 21207     1.411400e+02 -8.526001e+01
-15 21207     -5.288000e+01 6.084998e+01
-8 21208     2.521500e+02 -9.203003e+01
-10 21208     1.547998e+01 3.741998e+01
-8 21209     2.187400e+02 -1.251200e+02
-12 21209     6.069000e+01 -5.928003e+01
-8 21210     1.323600e+02 -1.422300e+02
-9 21210     8.409973e+00 -5.880005e+00
-8 21211     -3.469800e+02 -1.645800e+02
-10 21211     -4.981200e+02 2.109300e+02
-13 21211     -3.856000e+01 -1.990700e+02
-8 21212     1.679300e+02 -1.821700e+02
-9 21212     5.002002e+01 -4.139001e+01
-8 21213     1.580400e+02 -1.866300e+02
-12 21213     -2.390002e+01 -1.417300e+02
-8 21214     1.962500e+02 -2.143600e+02
-15 21214     -3.865997e+01 -1.521600e+02
-8 21215     3.359300e+02 -2.190300e+02
-15 21215     1.631300e+02 -1.931300e+02
-8 21216     -2.968200e+02 -2.259800e+02
-10 21216     -4.754200e+02 1.076100e+02
-15 21216     -4.658000e+02 9.089999e+01
-8 21217     2.226900e+02 -2.355800e+02
-9 21217     1.096500e+02 -9.103998e+01
-8 21218     -7.250000e+00 -2.513100e+02
-10 21218     -2.692400e+02 -5.841998e+01
-12 21218     -2.061000e+02 -1.938600e+02
-15 21218     -2.340700e+02 -9.881000e+01
-8 21219     -1.259003e+01 -2.533100e+02
-12 21219     -2.129000e+02 -1.954400e+02
-13 21219     2.075800e+02 -3.848800e+02
-8 21220     2.585200e+02 -2.534300e+02
-9 21220     1.455300e+02 -1.068700e+02
-12 21220     1.070600e+02 -2.234500e+02
-8 21221     2.318900e+02 -2.539900e+02
-9 21221     1.191000e+02 -1.099700e+02
-8 21222     7.352002e+01 -2.709900e+02
-9 21222     -4.415002e+01 -1.442900e+02
-8 21223     -3.271400e+02 -2.721800e+02
-9 21223     -4.987600e+02 -2.056600e+02
-8 21224     2.548800e+02 -2.746900e+02
-9 21224     1.429000e+02 -1.305300e+02
-8 21225     -2.268100e+02 -2.781900e+02
-9 21225     -3.859900e+02 -2.010900e+02
-13 21225     4.046997e+01 -3.414000e+02
-8 21226     7.135999e+01 -3.028500e+02
-9 21226     -4.489001e+01 -1.789900e+02
-8 21227     1.292400e+02 -3.099600e+02
-9 21227     1.657001e+01 -1.786400e+02
-8 21228     9.315002e+01 -3.106900e+02
-9 21228     -2.090997e+01 -1.834800e+02
-8 21229     -2.657400e+02 -3.159800e+02
-13 21229     -3.200073e-01 -3.740400e+02
-8 21230     -2.329900e+02 -3.162900e+02
-9 21230     -3.845900e+02 -2.384100e+02
-8 21231     -3.235100e+02 -3.880600e+02
-9 21231     -4.672200e+02 -3.182200e+02
-8 21232     -2.238300e+02 -3.970100e+02
-13 21232     1.706000e+01 -4.637800e+02
-8 21233     -1.998000e+02 -4.038500e+02
-9 21233     -3.271700e+02 -3.190000e+02
-8 21234     -1.655000e+02 -4.422300e+02
-13 21234     5.558002e+01 -5.201700e+02
-15 21234     -4.404600e+02 -2.912600e+02
-8 21235     2.764500e+02 4.122100e+02
-9 21235     6.359003e+01 5.424500e+02
-8 21236     -5.591300e+02 3.833600e+02
-13 21236     -1.830900e+02 3.160400e+02
-14 21236     -1.264300e+02 -4.463000e+01
-8 21237     9.217999e+01 3.811300e+02
-14 21237     6.650900e+02 -6.770020e+00
-8 21238     1.564400e+02 3.736300e+02
-14 21238     7.574000e+02 -9.479980e+00
-8 21239     1.521100e+02 3.731800e+02
-11 21239     5.467400e+02 -6.951001e+01
-8 21240     -1.046300e+02 3.579500e+02
-11 21240     2.101400e+02 -1.469600e+02
-8 21241     1.365100e+02 3.358300e+02
-11 21241     5.250400e+02 -1.113600e+02
-13 21241     5.296000e+02 3.265100e+02
-14 21241     7.255900e+02 -5.928998e+01
-8 21242     2.565997e+01 3.230300e+02
-9 21242     -2.133800e+02 4.307000e+02
-8 21243     5.170300e+02 3.159100e+02
-9 21243     3.268199e+02 4.563200e+02
-8 21244     -1.047000e+02 2.990200e+02
-9 21244     -3.469900e+02 4.038500e+02
-8 21245     5.978900e+02 2.751100e+02
-9 21245     4.102600e+02 4.191100e+02
-8 21246     -5.175000e+01 2.725700e+02
-9 21246     -2.905400e+02 3.741900e+02
-8 21247     -4.184700e+02 2.715200e+02
-11 21247     -1.326900e+02 -1.999300e+02
-12 21247     -6.789400e+02 5.681300e+02
-8 21248     -5.501100e+02 2.697000e+02
-11 21248     -2.613700e+02 -2.026600e+02
-14 21248     -1.315200e+02 -1.622000e+02
-8 21249     -6.869000e+01 2.647500e+02
-12 21249     -1.790500e+02 6.109900e+02
-8 21250     -2.540002e+01 2.575600e+02
-12 21250     -1.164100e+02 6.065200e+02
-8 21251     1.208500e+02 2.568200e+02
-11 21251     5.023400e+02 -1.941900e+02
-8 21252     4.957400e+02 2.515600e+02
-12 21252     5.388101e+02 5.424200e+02
-8 21253     -4.100000e+02 2.491300e+02
-11 21253     -1.251100e+02 -2.188100e+02
-12 21253     -6.631200e+02 5.397300e+02
-8 21254     -2.859985e+00 2.438700e+02
-9 21254     -2.388400e+02 3.438600e+02
-13 21254     3.614700e+02 2.228100e+02
-8 21255     4.805500e+02 2.330400e+02
-9 21255     2.931801e+02 3.694000e+02
-8 21256     -1.890015e+00 2.100900e+02
-12 21256     -8.065997e+01 5.452300e+02
-8 21257     -7.369995e+00 2.085000e+02
-9 21257     -2.409700e+02 3.045600e+02
-12 21257     -8.831000e+01 5.428500e+02
-8 21258     -3.795001e+01 2.076400e+02
-9 21258     -2.714800e+02 3.038700e+02
-8 21259     -4.864100e+02 2.056100e+02
-12 21259     -7.643000e+02 4.708300e+02
-8 21260     -2.500500e+02 1.946500e+02
-12 21260     -4.312700e+02 4.912900e+02
-8 21261     5.575900e+02 1.744200e+02
-9 21261     3.734800e+02 3.137100e+02
-8 21262     -3.392100e+02 1.661900e+02
-12 21262     -5.525900e+02 4.409500e+02
-8 21263     -2.421400e+02 1.636800e+02
-12 21263     -4.167800e+02 4.514100e+02
-8 21264     4.974301e+02 1.494600e+02
-9 21264     3.138800e+02 2.839100e+02
-12 21264     5.371500e+02 4.038700e+02
-15 21264     8.477300e+02 5.319300e+02
-8 21265     4.188100e+02 1.461900e+02
-9 21265     2.323101e+02 2.743000e+02
-8 21266     5.729000e+02 1.344500e+02
-12 21266     6.348400e+02 3.753700e+02
-8 21267     5.017700e+02 1.295800e+02
-12 21267     5.416899e+02 3.764300e+02
-8 21268     4.858400e+02 1.274500e+02
-9 21268     3.026801e+02 2.601600e+02
-8 21269     4.044800e+02 1.232700e+02
-12 21269     4.170100e+02 3.776900e+02
-8 21270     -4.589300e+02 1.179100e+02
-11 21270     -1.829500e+02 -3.340100e+02
-12 21270     -7.134000e+02 3.613300e+02
-8 21271     -4.807001e+01 1.179800e+02
-9 21271     -2.798500e+02 2.047600e+02
-8 21272     5.598500e+02 1.129300e+02
-9 21272     3.793700e+02 2.506200e+02
-12 21272     6.169100e+02 3.482300e+02
-8 21273     -1.698700e+02 1.048100e+02
-9 21273     -4.032600e+02 1.871600e+02
-8 21274     -1.178800e+02 8.332999e+01
-11 21274     1.920500e+02 -3.742400e+02
-8 21275     -4.823200e+02 8.300000e+01
-11 21275     -2.075800e+02 -3.637500e+02
-8 21276     -5.782900e+02 6.741000e+01
-11 21276     -3.017100e+02 -3.725700e+02
-8 21277     -5.799400e+02 5.469000e+01
-11 21277     -3.049500e+02 -3.838600e+02
-8 21278     -4.756500e+02 4.310001e+01
-11 21278     -2.026100e+02 -3.984500e+02
-8 21279     5.656100e+02 2.704001e+01
-9 21279     3.885601e+02 1.632100e+02
-8 21280     1.775700e+02 1.185001e+01
-12 21280     1.585999e+01 1.280700e+02
-8 21281     -7.789978e+00 -4.820007e+00
-9 21281     -1.701900e+02 1.100400e+02
-8 21282     -6.209003e+01 -1.498999e+01
-12 21282     -2.452900e+02 1.434300e+02
-8 21283     -1.921700e+02 -2.082001e+01
-13 21283     1.300900e+02 -5.269000e+01
-14 21283     2.350900e+02 -5.126700e+02
-8 21284     -4.256700e+02 -2.389999e+01
-10 21284     -5.369500e+02 4.358000e+02
-15 21284     -5.125100e+02 4.820800e+02
-8 21285     -5.908600e+02 -3.453000e+01
-10 21285     -7.482200e+02 4.247600e+02
-13 21285     -2.298100e+02 -4.356000e+01
-8 21286     8.316998e+01 -3.989001e+01
-12 21286     -1.007800e+02 6.566998e+01
-8 21287     -2.632200e+02 -4.700000e+01
-10 21287     -3.379900e+02 3.876800e+02
-15 21287     -3.050300e+02 4.172100e+02
-8 21288     -1.233000e+02 -4.923999e+01
-14 21288     3.050900e+02 -5.735200e+02
-8 21289     -7.658002e+01 -5.510999e+01
-9 21289     -2.360600e+02 5.464001e+01
-8 21290     3.567600e+02 -5.557999e+01
-12 21290     2.574399e+02 4.315002e+01
-8 21291     -1.219100e+02 -5.607999e+01
-9 21291     -3.235500e+02 2.482001e+01
-8 21292     4.260000e+02 -7.687000e+01
-12 21292     3.568800e+02 2.317999e+01
-8 21293     -1.622500e+02 -8.059998e+01
-9 21293     -3.622600e+02 -1.809998e+00
-13 21293     1.430400e+02 -1.277600e+02
-8 21294     2.232000e+02 -9.194000e+01
-13 21294     4.324900e+02 -2.936300e+02
-8 21295     5.270100e+02 -9.450000e+01
-12 21295     5.677500e+02 8.446002e+01
-8 21296     -3.034900e+02 -1.004500e+02
-10 21296     -4.150600e+02 3.066200e+02
-8 21297     2.280200e+02 -1.010100e+02
-9 21297     9.944000e+01 4.141998e+01
-8 21298     5.634600e+02 -1.036700e+02
-9 21298     3.929399e+02 2.929999e+01
-10 21298     6.632800e+02 1.118100e+02
-8 21299     9.162000e+01 -1.463200e+02
-13 21299     3.039000e+02 -3.205400e+02
-8 21300     -1.696500e+02 -1.592800e+02
-13 21300     1.175400e+02 -2.179300e+02
-8 21301     -1.948100e+02 -1.891200e+02
-10 21301     -3.451700e+02 1.452700e+02
-8 21302     1.244800e+02 -2.171800e+02
-9 21302     7.859985e+00 -8.090997e+01
-8 21303     1.676001e+01 -2.327900e+02
-9 21303     -1.073100e+02 -1.121400e+02
-8 21304     -3.172100e+02 -2.617700e+02
-9 21304     -4.902900e+02 -1.946400e+02
-8 21305     4.835999e+01 -2.616400e+02
-12 21305     -1.508400e+02 -2.180100e+02
-8 21306     -2.183100e+02 -2.650100e+02
-9 21306     -3.809100e+02 -1.878500e+02
-8 21307     -3.274000e+02 -2.758300e+02
-9 21307     -4.990200e+02 -2.094100e+02
-13 21307     -4.422998e+01 -3.220400e+02
-8 21308     -2.307900e+02 -2.776000e+02
-13 21308     3.706000e+01 -3.393200e+02
-8 21309     -2.469971e+00 -2.815900e+02
-13 21309     2.138500e+02 -4.102000e+02
-8 21310     8.409973e+00 -2.833500e+02
-9 21310     -1.148900e+02 -1.675400e+02
-8 21311     3.163400e+02 -2.873600e+02
-9 21311     2.045300e+02 -1.355000e+02
-8 21312     4.992800e+02 3.898700e+02
-9 21312     3.063600e+02 5.323700e+02
-8 21313     4.945500e+02 3.786200e+02
-9 21313     3.018000e+02 5.201400e+02
-8 21314     2.571002e+01 3.102900e+02
-9 21314     -2.130500e+02 4.169600e+02
-11 21314     3.796700e+02 -1.449000e+02
-8 21315     4.798700e+02 2.996600e+02
-9 21315     2.896801e+02 4.376200e+02
-8 21316     -5.732500e+02 2.740500e+02
-11 21316     -2.822900e+02 -1.990700e+02
-8 21317     6.969971e+00 2.690800e+02
-11 21317     3.533400e+02 -1.882500e+02
-8 21318     7.109985e+00 2.621200e+02
-9 21318     -2.295700e+02 3.631100e+02
-8 21319     7.109985e+00 2.621200e+02
-9 21319     -2.295700e+02 3.631100e+02
-8 21320     5.827600e+02 2.487100e+02
-10 21320     7.817700e+02 5.731700e+02
-8 21321     -2.989990e+00 2.329500e+02
-11 21321     3.394600e+02 -2.252000e+02
-12 21321     -8.257001e+01 5.776000e+02
-13 21321     3.602000e+02 2.117300e+02
-8 21322     2.922998e+01 2.102100e+02
-9 21322     -2.038200e+02 3.065100e+02
-8 21323     1.647300e+02 1.945800e+02
-9 21323     -6.631000e+01 2.925100e+02
-13 21323     5.462600e+02 1.827900e+02
-14 21323     7.540400e+02 -2.328900e+02
-8 21324     4.710699e+02 1.872900e+02
-12 21324     5.036200e+02 4.575700e+02
-8 21325     4.199900e+02 1.817300e+02
-12 21325     4.376801e+02 4.549700e+02
-8 21326     -5.971997e+01 1.817100e+02
-12 21326     -1.611000e+02 5.014200e+02
-8 21327     -5.975000e+01 1.751700e+02
-13 21327     2.941300e+02 1.524600e+02
-14 21327     4.412500e+02 -2.610600e+02
-8 21328     4.496700e+02 1.718900e+02
-9 21328     2.635400e+02 3.029600e+02
-8 21329     4.603400e+02 1.685500e+02
-9 21329     2.744500e+02 3.004700e+02
-8 21330     4.265002e+01 1.674700e+02
-11 21330     3.959200e+02 -2.899300e+02
-8 21331     5.709100e+02 1.420600e+02
-9 21331     3.891300e+02 2.808500e+02
-8 21332     -3.928500e+02 1.353800e+02
-11 21332     -1.132800e+02 -3.201200e+02
-8 21333     -7.153003e+01 1.178900e+02
-9 21333     -3.032100e+02 2.032900e+02
-8 21334     4.888000e+02 1.130700e+02
-9 21334     3.080000e+02 2.462800e+02
-12 21334     5.272300e+02 3.569400e+02
-8 21335     -4.774900e+02 1.122100e+02
-12 21335     -7.368400e+02 3.529300e+02
-8 21336     -4.735200e+02 1.076300e+02
-11 21336     -1.976400e+02 -3.424800e+02
-8 21337     5.140400e+02 9.532999e+01
-12 21337     5.568500e+02 3.297900e+02
-8 21338     4.580601e+02 9.510001e+01
-12 21338     4.852800e+02 3.359400e+02
-8 21339     3.478800e+02 9.164001e+01
-12 21339     3.596899e+02 3.591100e+02
-8 21340     -4.831200e+02 8.841000e+01
-11 21340     -2.090300e+02 -3.589200e+02
-8 21341     -5.374600e+02 8.748999e+01
-10 21341     -6.946800e+02 5.705200e+02
-11 21341     -2.610600e+02 -3.573000e+02
-8 21342     -3.033500e+02 5.253000e+01
-12 21342     -4.904400e+02 3.008100e+02
-8 21343     1.274200e+02 3.617999e+01
-13 21343     3.665400e+02 -1.510700e+02
-8 21344     1.274200e+02 3.617999e+01
-13 21344     3.665400e+02 -1.510700e+02
-8 21345     5.774100e+02 3.050000e+01
-12 21345     6.358700e+02 2.376700e+02
-8 21346     -1.080100e+02 -5.670013e+00
-10 21346     -1.274200e+02 4.313900e+02
-11 21346     1.453700e+02 -4.957800e+02
-15 21346     -6.006000e+01 4.721400e+02
-8 21347     2.499600e+02 -9.660004e+00
-12 21347     1.093400e+02 9.596997e+01
-13 21347     4.715000e+02 -2.195400e+02
-8 21348     -8.371002e+01 -4.384000e+01
-9 21348     -2.477600e+02 6.494000e+01
-8 21349     -1.318500e+02 -7.021002e+01
-9 21349     -3.312600e+02 1.094000e+01
-8 21350     -2.256000e+01 -1.115300e+02
-12 21350     -2.260000e+02 -1.746002e+01
-8 21351     2.922800e+02 -1.997500e+02
-9 21351     1.774100e+02 -4.815002e+01
-8 21352     -2.547200e+02 -2.634300e+02
-9 21352     -4.207600e+02 -1.899200e+02
-13 21352     2.016998e+01 -3.197500e+02
-8 21353     -2.881100e+02 -2.793900e+02
-13 21353     -1.135999e+01 -3.324200e+02
-8 21354     4.438000e+01 -3.150000e+02
-9 21354     -7.144000e+01 -1.943800e+02
-8 21355     -4.167000e+02 -3.306800e+02
-13 21355     -1.281500e+02 -3.653900e+02
-8 21356     -1.834800e+02 4.104600e+02
-11 21356     1.287700e+02 -6.322998e+01
-8 21357     -1.834800e+02 4.104600e+02
-11 21357     1.287700e+02 -6.322998e+01
-8 21358     2.639200e+02 2.579900e+02
-9 21358     5.681000e+01 3.763200e+02
-8 21359     5.596002e+01 2.416500e+02
-9 21359     -1.796600e+02 3.407700e+02
-8 21360     4.697998e+01 2.394000e+02
-9 21360     -1.879900e+02 3.382500e+02
-8 21361     -4.392999e+01 2.186300e+02
-9 21361     -2.795600e+02 3.162100e+02
-8 21362     4.033002e+01 2.184600e+02
-12 21362     -2.015002e+01 5.636000e+02
-8 21363     -1.582000e+02 1.735300e+02
-9 21363     -3.960300e+02 2.632000e+02
-11 21363     1.479600e+02 -2.871000e+02
-8 21364     -6.907001e+01 1.715200e+02
-12 21364     -1.739000e+02 4.867400e+02
-8 21365     5.097500e+02 1.713400e+02
-12 21365     5.536200e+02 4.317900e+02
-8 21366     -1.627900e+02 1.388600e+02
-9 21366     -3.990100e+02 2.243600e+02
-8 21367     -2.785800e+02 1.243000e+02
-12 21367     -4.632800e+02 3.955400e+02
-8 21368     4.238199e+02 8.254001e+01
-15 21368     7.240699e+02 4.571300e+02
-8 21369     -5.815800e+02 5.959000e+01
-11 21369     -3.041500e+02 -3.791600e+02
-8 21370     -4.574700e+02 9.209991e+00
-12 21370     -6.954800e+02 2.253600e+02
-8 21371     -1.078700e+02 -1.145999e+01
-9 21371     -3.188400e+02 6.977002e+01
-13 21371     2.129800e+02 -5.082001e+01
-14 21371     3.396000e+02 -5.145400e+02
-8 21372     4.934200e+02 -3.250000e+01
-12 21372     5.265601e+02 1.680900e+02
-8 21373     5.594500e+02 -4.385001e+01
-12 21373     6.105300e+02 1.455800e+02
-8 21374     5.594500e+02 -4.385001e+01
-12 21374     6.105300e+02 1.455800e+02
-8 21375     1.859800e+02 -7.785999e+01
-12 21375     2.284003e+01 8.039978e+00
-8 21376     5.459800e+02 -9.329999e+01
-12 21376     5.910300e+02 8.407001e+01
-8 21377     5.607600e+02 -9.884998e+01
-12 21377     6.107200e+02 7.531000e+01
-8 21378     4.061600e+02 -2.527000e+02
-12 21378     3.106700e+02 -2.134600e+02
-8 21379     -3.312300e+02 -3.196900e+02
-13 21379     -5.628998e+01 -3.681200e+02
-15 21379     -5.622700e+02 -5.828998e+01
-8 21380     -3.192000e+02 -3.279500e+02
-9 21380     -4.775200e+02 -2.607900e+02
-8 21381     -3.192000e+02 -3.279500e+02
-9 21381     -4.775200e+02 -2.607900e+02
-8 21382     -2.396700e+02 -3.282600e+02
-9 21382     -3.893100e+02 -2.511500e+02
-8 21383     -3.224700e+02 3.948800e+02
-14 21383     1.346500e+02 -2.235999e+01
-8 21384     -8.790002e+01 1.836300e+02
-12 21384     -1.939900e+02 5.032900e+02
-8 21385     -3.933800e+02 8.569000e+01
-12 21385     -6.185800e+02 3.306700e+02
-8 21386     4.937200e+02 4.844000e+01
-9 21386     3.148199e+02 1.796100e+02
-8 21387     3.658000e+02 -5.539999e+01
-12 21387     2.711500e+02 4.522998e+01
-8 21388     -7.220001e+01 -1.969700e+02
-9 21388     -2.162300e+02 -9.271002e+01
-8 21389     1.010200e+02 -3.158200e+02
-9 21389     -1.187000e+01 -1.886500e+02
-8 21390     -2.442500e+02 -3.511900e+02
-9 21390     -3.915000e+02 -2.736900e+02
-13 21390     8.979980e+00 -4.139400e+02
-8 21391     5.016200e+02 1.747200e+02
-12 21391     5.424399e+02 4.395400e+02
-8 21392     -9.667001e+01 1.653400e+02
-12 21392     -2.121100e+02 4.759600e+02
-8 21393     1.830700e+02 -7.269989e+00
-12 21393     2.060999e+01 1.000200e+02
-8 21394     2.733400e+02 -1.745001e+01
-12 21394     1.406600e+02 8.694000e+01
-8 21395     2.059998e+01 -1.472500e+02
-12 21395     -1.861900e+02 -7.663000e+01
-8 21396     8.481000e+01 -1.676900e+02
-12 21396     -1.103300e+02 -1.109100e+02
-8 21397     4.588300e+02 -1.841300e+02
-9 21397     3.264500e+02 -3.184998e+01
-8 21398     3.625700e+02 -3.015400e+02
-12 21398     2.509100e+02 -2.716400e+02
-8 21399     2.208900e+02 -3.080900e+02
-13 21399     4.027900e+02 -4.894301e+02
-8 21400     4.294800e+02 3.110700e+02
-9 21400     2.369700e+02 4.465800e+02
-8 21401     2.079999e+01 2.215800e+02
-12 21401     -5.028998e+01 5.645500e+02
-8 21402     -3.715800e+02 1.162700e+02
-12 21402     -5.913100e+02 3.716500e+02
-8 21403     -1.386700e+02 3.079987e+00
-9 21403     -3.556000e+02 8.191000e+01
-13 21403     1.879900e+02 -2.996997e+01
-14 21403     3.080900e+02 -4.865300e+02
-8 21404     5.736899e+02 -3.579001e+01
-12 21404     6.281400e+02 1.538600e+02
-8 21405     -3.642300e+02 2.854900e+02
-12 21405     -6.042300e+02 5.945100e+02
-8 21406     2.272900e+02 2.367700e+02
-9 21406     9.890015e+00 3.426500e+02
-8 21407     -1.529999e+01 3.078800e+02
-13 21407     3.552400e+02 2.851900e+02
-8 21408     1.457100e+02 3.018200e+02
-9 21408     -8.971002e+01 4.071000e+02
-13 21408     5.372100e+02 2.962500e+02
-14 21408     7.368300e+02 -9.250000e+01
-8 21409     5.753800e+02 1.363800e+02
-9 21409     3.947200e+02 2.758600e+02
-8 21410     -7.429993e+00 9.748999e+01
-13 21410     3.361200e+02 7.759998e+01
-14 21410     4.940000e+02 -3.559800e+02
-9 21411     -2.197100e+02 4.373300e+02
-14 21411     5.607200e+02 -7.502002e+01
-9 21412     -6.903003e+01 4.143000e+02
-14 21412     7.667700e+02 -9.134003e+01
-9 21413     -2.834900e+02 3.984800e+02
-11 21413     2.910100e+02 -1.661500e+02
-14 21413     4.724200e+02 -1.206500e+02
-9 21414     -2.831300e+02 3.739000e+02
-11 21414     2.893500e+02 -1.882800e+02
-14 21414     4.695900e+02 -1.464800e+02
-9 21415     -1.691000e+02 3.740300e+02
-11 21415     4.331400e+02 -1.821600e+02
-9 21416     -1.509100e+02 3.605300e+02
-11 21416     4.530500e+02 -1.946400e+02
-9 21417     -3.600300e+02 3.573500e+02
-11 21417     1.972200e+02 -2.057500e+02
-9 21418     -1.505100e+02 3.539500e+02
-13 21418     4.592900e+02 2.369600e+02
-9 21419     3.530601e+02 3.396200e+02
-12 21419     5.911000e+02 4.698900e+02
-9 21420     -1.673000e+02 3.367800e+02
-11 21420     4.298199e+02 -2.176400e+02
-9 21421     -1.334300e+02 2.965000e+02
-12 21421     6.496997e+01 5.479500e+02
-9 21422     7.939001e+01 2.827500e+02
-13 21422     6.335900e+02 8.745999e+01
-9 21423     8.228003e+01 2.823600e+02
-12 21423     2.791600e+02 4.653500e+02
-9 21424     -3.239500e+02 2.695800e+02
-11 21424     1.274000e+02 -3.301000e+02
-9 21425     -3.384600e+02 2.691000e+02
-11 21425     2.034800e+02 -2.864800e+02
-9 21426     4.665601e+02 2.395100e+02
-12 21426     7.298800e+02 3.152700e+02
-9 21427     4.657100e+02 2.335800e+02
-10 21427     8.138700e+02 3.215400e+02
-12 21427     7.273900e+02 3.084900e+02
-9 21428     4.703400e+02 2.331600e+02
-10 21428     8.200900e+02 3.191200e+02
-9 21429     4.568700e+02 2.158000e+02
-12 21429     7.138600e+02 2.873700e+02
-9 21430     4.953600e+02 2.125100e+02
-12 21430     7.646500e+02 2.750100e+02
-9 21431     2.541100e+02 1.979000e+02
-10 21431     5.489600e+02 3.847600e+02
-9 21432     2.477000e+02 1.936700e+02
-15 21432     7.291700e+02 4.311100e+02
-9 21433     2.854301e+02 1.776300e+02
-10 21433     5.798000e+02 3.435200e+02
-15 21433     7.771700e+02 3.839500e+02
-9 21434     4.510100e+02 1.774900e+02
-12 21434     7.017600e+02 2.400600e+02
-9 21435     2.697300e+02 1.701000e+02
-15 21435     7.530601e+02 3.830700e+02
-9 21436     4.528400e+02 1.432100e+02
-12 21436     7.014500e+02 1.945700e+02
-9 21437     4.532300e+02 1.377500e+02
-10 21437     7.664000e+02 2.070400e+02
-9 21438     4.526000e+02 1.234800e+02
-12 21438     6.983800e+02 1.702000e+02
-9 21439     8.103998e+01 1.091500e+02
-10 21439     -1.889001e+01 1.173800e+02
-9 21440     8.103998e+01 1.091500e+02
-10 21440     -1.889001e+01 1.173800e+02
-9 21441     4.477000e+02 1.086600e+02
-10 21441     7.503500e+02 1.740200e+02
-9 21442     4.500000e+02 1.070100e+02
-10 21442     7.519700e+02 1.706300e+02
-9 21443     4.371801e+02 9.801001e+01
-10 21443     7.337800e+02 1.671100e+02
-9 21444     4.445400e+02 8.444000e+01
-10 21444     7.390200e+02 1.468600e+02
-9 21445     -2.886800e+02 4.577002e+01
-10 21445     -1.242700e+02 3.716200e+02
-14 21445     3.546801e+02 -5.624500e+02
-9 21446     -2.991400e+02 2.685999e+01
-13 21446     2.083700e+02 -1.065600e+02
-9 21447     4.965500e+02 2.581000e+01
-12 21447     7.442600e+02 3.878998e+01
-9 21448     4.080400e+02 -1.383002e+01
-10 21448     6.357000e+02 3.526001e+01
-15 21448     8.475400e+02 1.694000e+01
-9 21449     -4.419500e+02 -3.053998e+01
-13 21449     6.906000e+01 -1.431900e+02
-9 21450     5.408600e+02 -8.859998e+01
-12 21450     7.502400e+02 -1.473400e+02
-9 21451     1.300600e+02 -1.254700e+02
-12 21451     8.859998e+01 -2.402500e+02
-9 21452     5.841899e+02 -1.433000e+02
-12 21452     7.752200e+02 -2.483800e+02
-9 21453     -1.384998e+01 -4.291500e+02
-10 21453     -2.766800e+02 -4.233900e+02
-9 21454     2.412600e+02 4.310300e+02
-12 21454     4.573600e+02 6.090600e+02
-9 21455     -2.259900e+02 3.715300e+02
-13 21455     3.784399e+02 2.495600e+02
-9 21456     -7.359998e+01 3.519800e+02
-13 21456     5.481500e+02 2.394000e+02
-14 21456     7.531200e+02 -1.638700e+02
-9 21457     -5.164001e+01 2.772300e+02
-13 21457     5.582200e+02 1.666700e+02
-14 21457     7.701300e+02 -2.527100e+02
-9 21458     3.515900e+02 2.671700e+02
-12 21458     5.835300e+02 3.746700e+02
-9 21459     1.090100e+02 2.604600e+02
-10 21459     4.542000e+02 5.665000e+02
-13 21459     6.578000e+02 5.819000e+01
-9 21460     2.361600e+02 2.574300e+02
-12 21460     4.400000e+02 3.861500e+02
-9 21461     2.108700e+02 2.102700e+02
-15 21461     6.850200e+02 4.756200e+02
-9 21462     5.286899e+02 2.078500e+02
-12 21462     8.089800e+02 2.617500e+02
-9 21463     2.540400e+02 2.069800e+02
-10 21463     5.517200e+02 3.959400e+02
-12 21463     4.578600e+02 3.176500e+02
-9 21464     -1.448100e+02 1.950900e+02
-13 21464     4.257400e+02 7.321002e+01
-9 21465     -1.448100e+02 1.950900e+02
-13 21465     4.257400e+02 7.321002e+01
-14 21465     6.073300e+02 -3.655700e+02
-9 21466     4.229600e+02 1.572400e+02
-12 21466     6.631400e+02 2.195300e+02
-9 21467     4.369301e+02 1.463100e+02
-12 21467     6.800000e+02 2.027200e+02
-9 21468     4.816100e+02 1.256200e+02
-12 21468     7.358900e+02 1.669200e+02
-9 21469     -4.987500e+02 1.160400e+02
-11 21469     2.084998e+01 -4.076400e+02
-9 21470     4.517400e+02 1.150700e+02
-12 21470     6.964200e+02 1.604100e+02
-9 21471     4.629900e+02 4.028998e+01
-12 21471     7.020500e+02 6.554999e+01
-9 21472     4.895400e+02 2.376001e+01
-12 21472     7.335900e+02 3.901001e+01
-9 21473     4.747900e+02 8.030029e+00
-12 21473     7.134700e+02 2.278998e+01
-9 21474     4.464600e+02 5.989990e+00
-12 21474     6.776000e+02 2.744000e+01
-9 21475     5.272900e+02 1.760010e+00
-12 21475     7.805900e+02 2.030029e+00
-9 21476     -3.769300e+02 -1.782400e+02
-13 21476     5.701001e+01 -3.188600e+02
-9 21477     2.273500e+02 -1.901900e+02
-15 21477     1.925900e+02 -3.183400e+02
-9 21478     -4.610000e+02 -2.313100e+02
-13 21478     -2.541998e+01 -3.533000e+02
-15 21478     -5.142700e+02 -3.601001e+01
-9 21479     4.556400e+02 -3.455200e+02
-12 21479     4.753000e+02 -5.550699e+02
-9 21480     -2.424400e+02 -3.755600e+02
-15 21480     -4.209700e+02 -3.427300e+02
-9 21481     -3.012600e+02 4.362800e+02
-11 21481     2.730000e+02 -1.331900e+02
-9 21482     -2.182900e+02 4.046200e+02
-14 21482     5.583900e+02 -1.105600e+02
-9 21483     -2.623200e+02 3.799500e+02
-11 21483     3.147100e+02 -1.819000e+02
-9 21484     -1.675400e+02 3.783200e+02
-11 21484     4.350000e+02 -1.788900e+02
-9 21485     2.781600e+02 3.448800e+02
-10 21485     6.158300e+02 5.649000e+02
-9 21486     3.467900e+02 3.387700e+02
-10 21486     6.979700e+02 5.223200e+02
-9 21487     -4.385999e+01 3.227300e+02
-13 21487     5.786400e+02 2.141800e+02
-9 21488     2.869600e+02 3.123700e+02
-12 21488     5.058900e+02 4.452600e+02
-9 21489     4.479000e+02 2.627900e+02
-12 21489     7.072300e+02 3.499400e+02
-9 21490     1.484900e+02 2.608000e+02
-12 21490     3.562900e+02 4.267600e+02
-9 21491     4.436300e+02 2.502100e+02
-12 21491     7.002000e+02 3.345400e+02
-9 21492     -2.789400e+02 2.196100e+02
-11 21492     2.802800e+02 -3.243400e+02
-9 21493     -4.089800e+02 2.160900e+02
-14 21493     2.911100e+02 -3.121300e+02
-9 21494     5.170300e+02 2.064600e+02
-12 21494     7.917500e+02 2.628700e+02
-9 21495     4.489399e+02 1.138600e+02
-12 21495     6.921400e+02 1.595600e+02
-9 21496     4.602400e+02 9.979001e+01
-10 21496     7.621300e+02 1.564900e+02
-9 21497     4.140200e+02 7.987000e+01
-10 21497     7.020900e+02 1.579500e+02
-9 21498     3.906801e+02 5.653998e+01
-10 21498     6.687900e+02 1.433300e+02
-9 21499     -3.084300e+02 4.157001e+01
-10 21499     -1.479700e+02 3.697400e+02
-9 21500     6.001200e+02 -1.337700e+02
-12 21500     8.036700e+02 -2.352200e+02
-9 21501     5.815900e+02 -1.464900e+02
-12 21501     7.698600e+02 -2.533800e+02
-9 21502     -4.461700e+02 -2.013800e+02
-13 21502     -5.030029e+00 -3.278100e+02
-9 21503     3.754700e+02 -3.482000e+02
-10 21503     1.844700e+02 -4.856801e+02
-9 21504     -1.143300e+02 -4.593500e+02
-15 21504     -3.711600e+02 -5.232600e+02
-9 21505     -2.175100e+02 4.265700e+02
-14 21505     5.623000e+02 -8.578003e+01
-9 21506     8.888000e+01 4.021100e+02
-12 21506     2.925800e+02 6.154000e+02
-9 21507     2.570400e+02 3.372900e+02
-10 21507     5.882300e+02 5.639500e+02
-9 21508     2.501100e+02 2.857200e+02
-12 21508     4.585500e+02 4.174600e+02
-9 21509     3.684998e+01 1.810300e+02
-13 21509     4.155300e+02 -1.559400e+02
-9 21510     4.430699e+02 1.612500e+02
-12 21510     6.896600e+02 2.210500e+02
-9 21511     5.053199e+02 5.598999e+01
-10 21511     8.037400e+02 7.878998e+01
-9 21512     -3.136000e+02 2.191998e+01
-13 21512     1.955699e+02 -1.083300e+02
-9 21513     -3.719700e+02 -1.595000e+02
-10 21513     -3.820400e+02 7.373999e+01
-15 21513     -3.592400e+02 5.234998e+01
-9 21514     -4.969200e+02 -2.093900e+02
-13 21514     -4.264001e+01 -3.223500e+02
-9 21515     5.406100e+02 -2.971900e+02
-12 21515     6.138400e+02 -4.968400e+02
-9 21516     2.327002e+01 -3.217400e+02
-15 21516     -1.213800e+02 -3.925200e+02
-9 21517     5.559700e+02 -3.383000e+02
-12 21517     6.122600e+02 -5.668000e+02
-9 21518     -2.756200e+02 2.107800e+02
-11 21518     2.821600e+02 -3.344100e+02
-13 21518     3.048600e+02 1.051600e+02
-9 21519     -1.706800e+02 1.652700e+02
-13 21519     3.859000e+02 3.859003e+01
-14 21519     5.584399e+02 -4.077600e+02
-9 21520     4.844700e+02 1.314400e+02
-12 21520     7.401400e+02 1.730400e+02
-9 21521     3.744301e+02 9.429001e+01
-12 21521     5.966200e+02 1.519700e+02
-9 21522     -3.870200e+02 9.206000e+01
-14 21522     2.798199e+02 -4.624301e+02
-9 21523     5.574399e+02 -3.035100e+02
-12 21523     6.368600e+02 -5.112700e+02
-9 21524     3.376899e+02 1.784800e+02
-10 21524     6.391899e+02 3.173500e+02
-9 21525     -3.575400e+02 2.739000e+02
-11 21525     1.861800e+02 -2.806700e+02
-9 21526     4.587000e+01 -2.575700e+02
-13 21526     3.254900e+02 -5.481100e+02
-9 21527     -3.117000e+02 -3.501400e+02
-13 21527     3.444000e+01 -5.101100e+02
-9 21528     5.335699e+02 -3.543400e+02
-12 21528     5.717100e+02 -5.867200e+02
-9 21529     4.570400e+02 2.372400e+02
-12 21529     7.169399e+02 3.160200e+02
-9 21530     -2.320200e+02 3.508800e+02
-11 21530     3.487400e+02 -2.056300e+02
-9 21531     -3.279600e+02 2.987600e+02
-11 21531     2.295400e+02 -2.561000e+02
-9 21532     -3.279600e+02 2.987600e+02
-11 21532     2.295400e+02 -2.561000e+02
-9 21533     -3.648800e+02 2.917200e+02
-11 21533     1.845600e+02 -2.614200e+02
-10 21534     6.525800e+02 6.086000e+02
-12 21534     5.265800e+02 5.355000e+02
-10 21535     -9.954999e+01 6.054500e+02
-12 21535     -2.520900e+02 3.796700e+02
-10 21536     -3.808600e+02 5.966000e+02
-12 21536     -5.138900e+02 3.559300e+02
-10 21537     -4.277200e+02 5.940900e+02
-14 21537     7.327002e+01 -3.466700e+02
-10 21538     -6.335200e+02 5.908700e+02
-12 21538     -7.560800e+02 3.362700e+02
-10 21539     -3.824300e+02 5.848600e+02
-12 21539     -5.149700e+02 3.451900e+02
-10 21540     -6.721600e+02 5.787600e+02
-12 21540     -7.937900e+02 3.215100e+02
-10 21541     -7.225000e+02 5.643700e+02
-14 21541     -1.632500e+02 -3.563500e+02
-10 21542     -1.628300e+02 5.502200e+02
-14 21542     2.864900e+02 -3.996700e+02
-10 21543     -1.578500e+02 5.393500e+02
-14 21543     2.926200e+02 -4.103800e+02
-10 21544     -5.013800e+02 5.312700e+02
-12 21544     -6.270400e+02 2.826400e+02
-10 21545     -5.399900e+02 5.295500e+02
-12 21545     -6.642100e+02 2.792700e+02
-10 21546     -6.214100e+02 5.189200e+02
-11 21546     -2.166300e+02 -3.971100e+02
-14 21546     -9.301001e+01 -4.014900e+02
-10 21547     -4.853998e+01 5.171700e+02
-11 21547     2.139500e+02 -4.316600e+02
-14 21547     3.988600e+02 -4.337600e+02
-15 21547     3.312000e+01 5.733200e+02
-10 21548     -4.816900e+02 5.051400e+02
-12 21548     -6.074600e+02 2.571300e+02
-15 21548     -4.713300e+02 5.501100e+02
-10 21549     6.273101e+02 5.025300e+02
-12 21549     5.174800e+02 4.343200e+02
-15 21549     8.299200e+02 5.752900e+02
-10 21550     -6.924500e+02 4.876500e+02
-12 21550     -8.175800e+02 2.205100e+02
-10 21551     -6.787900e+02 4.866500e+02
-12 21551     -8.035000e+02 2.204300e+02
-15 21551     -6.956000e+02 5.235900e+02
-10 21552     -6.045000e+02 4.829000e+02
-12 21552     -7.262900e+02 2.258000e+02
-10 21553     -6.045000e+02 4.829000e+02
-12 21553     -7.262900e+02 2.258000e+02
-10 21554     -6.038500e+02 4.786200e+02
-12 21554     -7.255000e+02 2.214400e+02
-10 21555     4.936000e+02 4.677400e+02
-12 21555     3.640100e+02 3.497300e+02
-10 21556     -6.327100e+02 4.655000e+02
-12 21556     -7.552500e+02 2.044400e+02
-15 21556     -6.438000e+02 5.006700e+02
-10 21557     -6.335400e+02 4.625800e+02
-12 21557     -7.555400e+02 2.014300e+02
-15 21557     -6.447700e+02 4.972600e+02
-10 21558     -8.008900e+02 4.586500e+02
-14 21558     -2.470100e+02 -4.438900e+02
-10 21559     -6.231300e+02 4.343700e+02
-12 21559     -7.448200e+02 1.720000e+02
-10 21560     -7.472100e+02 4.287000e+02
-14 21560     -2.112600e+02 -4.742200e+02
-10 21561     -7.532300e+02 4.245300e+02
-14 21561     -2.181300e+02 -4.779399e+02
-15 21561     -7.792000e+02 4.505800e+02
-10 21562     7.605699e+02 3.968900e+02
-12 21562     6.640699e+02 3.669600e+02
-10 21563     7.486400e+02 3.936100e+02
-12 21563     6.532900e+02 3.612200e+02
-10 21564     5.611000e+02 3.749500e+02
-12 21564     4.702300e+02 3.000800e+02
-10 21565     7.898300e+02 3.717700e+02
-12 21565     6.962100e+02 3.498700e+02
-10 21566     5.655601e+02 3.710200e+02
-12 21566     4.750300e+02 2.976500e+02
-10 21567     -3.570200e+02 3.672100e+02
-14 21567     1.306500e+02 -5.556600e+02
-10 21568     7.850900e+02 3.670300e+02
-12 21568     6.925601e+02 3.441000e+02
-10 21569     8.030699e+02 3.633400e+02
-12 21569     7.105000e+02 3.450500e+02
-10 21570     -6.516500e+02 3.569800e+02
-14 21570     -1.472700e+02 -5.479800e+02
-10 21571     7.810100e+02 3.559000e+02
-12 21571     6.903400e+02 3.334800e+02
-10 21572     7.321801e+02 3.390700e+02
-12 21572     6.464900e+02 3.069200e+02
-10 21573     -6.328900e+02 3.248600e+02
-14 21573     -1.265300e+02 -5.788101e+02
-10 21574     7.736200e+02 3.189300e+02
-12 21574     6.896600e+02 2.976200e+02
-10 21575     6.245601e+02 2.904200e+02
-12 21575     5.471801e+02 2.338300e+02
-10 21576     7.159301e+02 2.826000e+02
-12 21576     6.393900e+02 2.503000e+02
-10 21577     6.728400e+02 2.646400e+02
-12 21577     5.993800e+02 2.211700e+02
-10 21578     7.870800e+02 2.585300e+02
-12 21578     7.127000e+02 2.438700e+02
-10 21579     5.344500e+02 2.351000e+02
-12 21579     4.629399e+02 1.567400e+02
-10 21580     5.038900e+02 2.343600e+02
-12 21580     4.305699e+02 1.480100e+02
-15 21580     6.880000e+02 2.521000e+02
-10 21581     -2.100220e-01 2.339000e+02
-12 21581     5.640002e+01 1.790900e+02
-10 21582     1.247000e+02 2.301300e+02
-12 21582     1.797200e+02 1.919500e+02
-15 21582     2.202700e+02 2.450800e+02
-10 21583     7.689399e+02 2.287800e+02
-12 21583     6.996500e+02 2.106000e+02
-10 21584     -6.877002e+01 2.160000e+02
-12 21584     -1.198999e+01 1.496600e+02
-15 21584     -6.799988e+00 2.248500e+02
-10 21585     7.669500e+02 2.133100e+02
-12 21585     6.994399e+02 1.959000e+02
-10 21586     -1.710300e+02 2.026200e+02
-12 21586     -1.289300e+02 1.080500e+02
-15 21586     -1.241900e+02 2.078400e+02
-10 21587     2.740002e+01 1.973300e+02
-12 21587     9.389001e+01 1.500100e+02
-15 21587     1.057500e+02 2.049800e+02
-10 21588     2.740002e+01 1.973300e+02
-12 21588     9.389001e+01 1.500100e+02
-15 21588     1.057500e+02 2.049800e+02
-10 21589     -7.167999e+01 1.794700e+02
-12 21589     -6.760010e+00 1.142900e+02
-10 21590     5.789600e+02 1.733700e+02
-12 21590     5.176200e+02 1.078900e+02
-15 21590     7.790400e+02 1.808900e+02
-10 21591     8.212700e+02 1.443500e+02
-12 21591     7.642700e+02 1.429600e+02
-10 21592     1.067100e+02 1.363200e+02
-12 21592     1.841700e+02 1.014400e+02
-15 21592     1.996200e+02 1.343500e+02
-10 21593     6.403700e+02 1.258500e+02
-12 21593     5.875200e+02 7.702002e+01
-15 21593     8.535000e+02 1.246500e+02
-10 21594     -4.008500e+02 9.542999e+01
-12 21594     -4.306000e+02 -1.072200e+02
-15 21594     -3.805400e+02 7.803003e+01
-10 21595     -7.045100e+02 5.973999e+01
-13 21595     -1.798500e+02 -3.061000e+02
-15 21595     -7.293700e+02 3.327002e+01
-10 21596     -1.739100e+02 5.148999e+01
-12 21596     -9.695001e+01 -3.740997e+01
-15 21596     -1.271500e+02 3.128003e+01
-10 21597     -9.541998e+01 1.595001e+01
-12 21597     -1.520020e+00 -5.554999e+01
-10 21598     -2.133700e+02 5.330017e+00
-12 21598     -1.329700e+02 -9.435999e+01
-15 21598     -1.719200e+02 -2.277002e+01
-10 21599     -5.594300e+02 -1.630005e+00
-12 21599     -5.782100e+02 -2.256300e+02
-15 21599     -5.639700e+02 -3.595001e+01
-10 21600     -5.624300e+02 -3.530029e+00
-12 21600     -5.795800e+02 -2.277300e+02
-15 21600     -5.670400e+02 -3.834003e+01
-10 21601     -2.196200e+02 -8.460022e+00
-12 21601     -1.351600e+02 -1.079300e+02
-15 21601     -1.800700e+02 -3.887000e+01
-10 21602     6.743500e+02 -1.770001e+01
-12 21602     6.644301e+02 -3.825000e+01
-10 21603     1.610700e+02 -3.426001e+01
-12 21603     2.676600e+02 -6.289001e+01
-15 21603     2.660000e+02 -6.640002e+01
-10 21604     -1.301900e+02 -5.066998e+01
-12 21604     -2.604999e+01 -1.296700e+02
-15 21604     -7.628998e+01 -8.757001e+01
-10 21605     2.082800e+02 -1.000200e+02
-12 21605     3.328700e+02 -1.166300e+02
-15 21605     3.222200e+02 -1.440700e+02
-10 21606     -4.186500e+02 -3.836600e+02
-12 21606     -3.069200e+02 -5.739900e+02
-15 21606     -4.072100e+02 -4.790800e+02
-10 21607     3.664600e+02 -4.304100e+02
-12 21607     5.295100e+02 -4.514600e+02
-10 21608     3.820699e+02 -4.392100e+02
-12 21608     5.480900e+02 -4.560699e+02
-10 21609     3.620100e+02 -4.459900e+02
-12 21609     5.315400e+02 -4.664399e+02
-10 21610     3.239700e+02 -4.602300e+02
-12 21610     4.997400e+02 -4.877700e+02
-10 21611     2.543000e+02 -4.892000e+02
-12 21611     4.424399e+02 -5.295900e+02
-10 21612     1.764500e+02 -5.089100e+02
-12 21612     3.719700e+02 -5.653101e+02
-10 21613     3.526600e+02 -5.190500e+02
-12 21613     5.494500e+02 -5.359200e+02
-10 21614     3.118700e+02 -5.203400e+02
-12 21614     5.102700e+02 -5.463000e+02
-10 21615     3.118700e+02 -5.203400e+02
-12 21615     5.102700e+02 -5.463000e+02
-10 21616     2.649301e+02 -5.679900e+02
-12 21616     4.820000e+02 -6.014500e+02
-10 21617     5.914301e+02 6.100400e+02
-12 21617     4.666000e+02 5.243200e+02
-10 21618     2.380005e+00 6.043200e+02
-14 21618     4.290800e+02 -3.588700e+02
-10 21619     -8.304999e+01 5.739400e+02
-14 21619     3.559600e+02 -3.825800e+02
-10 21620     -7.600400e+02 5.701500e+02
-13 21620     -2.191500e+02 5.991998e+01
-14 21620     -1.906600e+02 -3.490500e+02
-10 21621     1.148900e+02 5.700100e+02
-13 21621     3.734301e+02 5.048999e+01
-14 21621     5.419200e+02 -3.921900e+02
-10 21622     -4.428003e+01 5.685500e+02
-14 21622     3.930300e+02 -3.890100e+02
-10 21623     -1.405900e+02 5.596100e+02
-14 21623     3.054200e+02 -3.930400e+02
-10 21624     -1.051500e+02 5.548500e+02
-13 21624     2.115800e+02 3.953998e+01
-14 21624     3.397300e+02 -3.988100e+02
-10 21625     -6.053000e+02 5.510000e+02
-13 21625     -1.206900e+02 4.422998e+01
-10 21626     -6.676300e+02 5.270700e+02
-13 21626     -1.637300e+02 2.902002e+01
-10 21627     -4.807000e+02 4.939700e+02
-14 21627     1.521002e+01 -4.327300e+02
-10 21628     -4.807000e+02 4.939700e+02
-14 21628     1.521002e+01 -4.327300e+02
-10 21629     -7.854300e+02 4.633500e+02
-13 21629     -2.483300e+02 -1.471002e+01
-10 21630     -6.443500e+02 4.527300e+02
-12 21630     -7.687100e+02 1.874700e+02
-10 21631     6.733600e+02 3.983700e+02
-12 21631     5.802500e+02 3.487200e+02
-10 21632     -7.169000e+01 3.950200e+02
-13 21632     2.610900e+02 -7.031000e+01
-10 21633     -6.993100e+02 3.674100e+02
-14 21633     -1.872400e+02 -5.355300e+02
-10 21634     -6.707600e+02 3.626100e+02
-14 21634     -1.648600e+02 -5.418000e+02
-10 21635     -5.087900e+02 3.614500e+02
-14 21635     -1.342999e+01 -5.520000e+02
-10 21636     -6.575500e+02 3.299900e+02
-13 21636     -1.734700e+02 -1.135800e+02
-10 21637     -1.804400e+02 2.901900e+02
-12 21637     -1.883100e+02 1.607500e+02
-10 21638     5.320601e+02 2.117800e+02
-12 21638     4.636300e+02 1.334500e+02
-10 21639     1.729200e+02 1.839500e+02
-13 21639     5.687800e+02 -1.896100e+02
-10 21640     3.297100e+02 1.568200e+02
-12 21640     3.612600e+02 1.219100e+02
-13 21640     6.667500e+02 -2.173600e+02
-10 21641     -7.164800e+02 1.468200e+02
-13 21641     -1.981800e+02 -2.427200e+02
-15 21641     -7.408800e+02 1.330600e+02
-10 21642     2.416700e+02 1.177300e+02
-12 21642     3.046700e+02 8.862000e+01
-13 21642     6.177200e+02 -2.406100e+02
-10 21643     -3.756500e+02 7.240997e+01
-13 21643     7.453998e+01 -3.001100e+02
-10 21644     -7.670800e+02 4.900000e+01
-13 21644     -2.261000e+02 -3.125200e+02
-10 21645     6.247200e+02 4.097998e+01
-12 21645     5.996500e+02 2.820007e+00
-10 21646     3.706100e+02 1.060999e+01
-12 21646     4.439600e+02 1.000977e-02
-15 21646     5.183000e+02 -1.270001e+01
-10 21647     -5.625900e+02 3.590027e+00
-13 21647     -6.342999e+01 -3.488700e+02
-10 21648     3.467700e+02 -3.201001e+01
-12 21648     4.387900e+02 -3.845001e+01
-10 21649     -1.856300e+02 -5.091998e+01
-13 21649     3.086200e+02 -3.674400e+02
-10 21650     4.515002e+01 -7.984003e+01
-13 21650     4.923600e+02 -3.877200e+02
-10 21651     -2.238400e+02 -1.392700e+02
-13 21651     2.535500e+02 -4.467600e+02
-10 21652     -2.581200e+02 -2.365000e+02
-13 21652     2.211200e+02 -5.293000e+02
-10 21653     3.601000e+02 -5.098500e+02
-12 21653     5.527800e+02 -5.259900e+02
-10 21654     3.207500e+02 -5.301200e+02
-12 21654     5.218700e+02 -5.530900e+02
-10 21655     8.256000e+01 6.102100e+02
-13 21655     3.430200e+02 7.756000e+01
-10 21656     -7.517700e+02 5.974800e+02
-11 21656     -2.959900e+02 -3.359300e+02
-13 21656     -2.097800e+02 7.839999e+01
-10 21657     -1.344900e+02 5.434900e+02
-13 21657     1.914600e+02 3.196002e+01
-14 21657     3.135000e+02 -4.071100e+02
-10 21658     -7.410000e+02 5.393000e+02
-13 21658     -2.107500e+02 3.784998e+01
-10 21659     9.428998e+01 5.199500e+02
-13 21659     3.664301e+02 1.653998e+01
-14 21659     5.340200e+02 -4.354301e+02
-10 21660     6.502002e+01 4.941100e+02
-14 21660     5.112700e+02 -4.586899e+02
-10 21661     -2.838400e+02 4.736400e+02
-13 21661     8.915997e+01 -1.631000e+01
-10 21662     -6.515500e+02 4.540700e+02
-12 21662     -7.759100e+02 1.875700e+02
-10 21663     -7.216400e+02 4.396000e+02
-13 21663     -2.103900e+02 -3.303998e+01
-14 21663     -1.892100e+02 -4.659900e+02
-10 21664     -1.761400e+02 4.365600e+02
-14 21664     2.929900e+02 -5.008800e+02
-10 21665     -3.315100e+02 4.332400e+02
-13 21665     5.934998e+01 -4.329999e+01
-14 21665     1.461899e+02 -4.963199e+02
-10 21666     -2.615002e+01 4.205400e+02
-13 21666     2.916700e+02 -5.308002e+01
-14 21666     4.398900e+02 -5.216899e+02
-10 21667     -7.063200e+02 4.011400e+02
-13 21667     -2.056000e+02 -6.159003e+01
-10 21668     -3.115400e+02 3.607200e+02
-13 21668     8.373999e+01 -9.460999e+01
-14 21668     1.748101e+02 -5.644301e+02
-15 21668     -2.746800e+02 3.859600e+02
-10 21669     -6.954700e+02 3.425300e+02
-13 21669     -2.025200e+02 -1.044000e+02
-14 21669     -1.859700e+02 -5.583800e+02
-10 21670     2.521000e+02 1.960800e+02
-13 21670     6.196200e+02 -1.835300e+02
-10 21671     1.741700e+02 1.911200e+02
-12 21671     2.335500e+02 1.591800e+02
-10 21672     -6.294600e+02 1.814800e+02
-13 21672     -1.356800e+02 -2.189700e+02
-15 21672     -6.414500e+02 1.747300e+02
-10 21673     1.768800e+02 1.458300e+02
-13 21673     5.754700e+02 -2.172000e+02
-10 21674     -6.207900e+02 1.406500e+02
-13 21674     -1.246100e+02 -2.485900e+02
-10 21675     -3.806600e+02 6.465997e+01
-13 21675     7.196002e+01 -3.055700e+02
-10 21676     1.888500e+02 6.003003e+01
-13 21676     5.872500e+02 -2.828500e+02
-15 21676     2.983900e+02 4.481000e+01
-10 21677     -4.928003e+01 4.525000e+01
-13 21677     4.095400e+02 -2.937400e+02
-10 21678     -1.179000e+02 2.490997e+01
-13 21678     3.566600e+02 -3.096300e+02
-10 21679     9.737000e+01 -1.122400e+02
-13 21679     5.377100e+02 -4.113000e+02
-15 21679     1.901100e+02 -1.581600e+02
-10 21680     -6.929400e+02 -1.352600e+02
-13 21680     -1.480200e+02 -4.506500e+02
-15 21680     -7.177300e+02 -1.913300e+02
-10 21681     -9.909973e+00 -1.928200e+02
-13 21681     4.410000e+02 -4.836100e+02
-10 21682     -7.894800e+02 -1.972500e+02
-13 21682     -2.151900e+02 -4.952600e+02
-15 21682     -8.266600e+02 -2.626600e+02
-10 21683     2.953199e+02 -5.158101e+02
-12 21683     4.928300e+02 -5.456899e+02
-10 21684     -7.648999e+01 5.668800e+02
-13 21684     2.305699e+02 4.801001e+01
-14 21684     3.625300e+02 -3.887500e+02
-10 21685     -7.265002e+01 5.630300e+02
-13 21685     2.345500e+02 4.572998e+01
-10 21686     -7.265002e+01 5.630300e+02
-13 21686     2.345500e+02 4.572998e+01
-10 21687     -6.521200e+02 3.746300e+02
-13 21687     -1.731200e+02 -8.228003e+01
-14 21687     -1.474000e+02 -5.318900e+02
-10 21688     -6.572500e+02 3.550000e+02
-13 21688     -1.761000e+02 -9.641998e+01
-10 21689     7.347300e+02 2.134500e+02
-12 21689     6.671200e+02 1.884900e+02
-10 21690     -6.188600e+02 1.730500e+02
-13 21690     -1.261400e+02 -2.249300e+02
-15 21690     -6.298400e+02 1.648500e+02
-10 21691     -2.870000e+02 1.626300e+02
-12 21691     -2.652500e+02 2.979999e+01
-10 21692     2.539100e+02 8.427002e+01
-13 21692     6.266000e+02 -2.670200e+02
-15 21692     3.773500e+02 7.384003e+01
-10 21693     -5.922300e+02 5.364001e+01
-13 21693     -9.177002e+01 -3.114400e+02
-10 21694     2.827100e+02 5.144000e+01
-13 21694     6.542800e+02 -2.911600e+02
-15 21694     4.119500e+02 3.529999e+01
-10 21695     -7.220000e+02 4.784003e+01
-12 21695     -7.712300e+02 -2.069400e+02
-10 21696     4.857200e+02 5.566100e+02
-12 21696     3.429700e+02 4.307100e+02
-10 21697     -1.468000e+02 3.598700e+02
-14 21697     3.348300e+02 -5.722700e+02
-10 21698     2.830900e+02 7.196997e+01
-13 21698     6.493900e+02 -2.768800e+02
-15 21698     4.120000e+02 5.946002e+01
-10 21699     1.032500e+02 5.977002e+01
-12 21699     1.932200e+02 2.306000e+01
-10 21700     -2.462400e+02 -9.750000e+00
-12 21700     -1.640300e+02 -1.124600e+02
-15 21700     -2.113100e+02 -4.002002e+01
-10 21701     2.548500e+02 -2.408002e+01
-13 21701     6.409301e+02 -3.480600e+02
-15 21701     3.785100e+02 -5.402002e+01
-10 21702     -4.190000e+02 -2.274500e+02
-13 21702     7.952002e+01 -5.238199e+02
-10 21703     -2.913000e+02 4.763200e+02
-11 21703     2.190997e+01 -4.502200e+02
-13 21703     8.282001e+01 -1.403998e+01
-14 21703     1.765601e+02 -4.598400e+02
-10 21704     -8.105800e+02 3.274900e+02
-13 21704     -2.873600e+02 -1.144900e+02
-10 21705     1.733300e+02 2.951600e+02
-13 21705     5.559200e+02 -1.118200e+02
-10 21706     -5.905200e+02 2.734800e+02
-13 21706     -1.170900e+02 -1.530100e+02
-10 21707     7.360900e+02 2.576800e+02
-12 21707     6.634800e+02 2.300600e+02
-10 21708     1.481300e+02 1.846700e+02
-12 21708     2.107800e+02 1.512200e+02
-10 21709     -7.070200e+02 -8.989001e+01
-13 21709     -1.635200e+02 -4.161400e+02
-15 21709     -7.330200e+02 -1.390600e+02
-10 21710     -8.099700e+02 3.165200e+02
-13 21710     -2.855200e+02 -1.221100e+02
-10 21711     7.758600e+02 1.859300e+02
-12 21711     7.133199e+02 1.714000e+02
-10 21712     -5.741300e+02 1.835800e+02
-13 21712     -9.201001e+01 -2.175000e+02
-15 21712     -5.779000e+02 1.783400e+02
-10 21713     -7.306300e+02 5.621002e+01
-13 21713     -1.988300e+02 -3.072200e+02
-10 21714     1.748600e+02 1.404999e+01
-13 21714     5.809000e+02 -3.169200e+02
-15 21714     2.807700e+02 -9.859985e+00
-10 21715     2.163800e+02 -1.605500e+02
-12 21715     3.402500e+02 -1.878800e+02
-15 21715     3.336899e+02 -2.172700e+02
-11 21716     -2.426001e+01 2.454000e+02
-14 21716     1.972998e+01 3.815300e+02
-11 21717     -6.726001e+01 2.427400e+02
-14 21717     -4.771002e+01 3.791400e+02
-11 21718     -2.094300e+02 1.956400e+02
-14 21718     -2.110700e+02 3.240600e+02
-11 21719     9.428998e+01 1.918600e+02
-14 21719     1.646300e+02 3.101200e+02
-11 21720     8.440002e+01 1.874100e+02
-14 21720     1.530601e+02 3.054100e+02
-11 21721     6.329999e+01 1.855300e+02
-14 21721     1.280900e+02 3.036000e+02
-11 21722     8.135999e+01 1.832500e+02
-14 21722     1.494000e+02 2.994700e+02
-11 21723     4.920800e+02 1.642300e+02
-14 21723     6.238300e+02 2.682800e+02
-11 21724     -3.230400e+02 1.588600e+02
-14 21724     -3.549000e+02 2.808300e+02
-11 21725     4.936600e+02 1.591600e+02
-14 21725     6.258900e+02 2.619400e+02
-11 21726     4.936600e+02 1.591600e+02
-14 21726     6.258900e+02 2.619400e+02
-11 21727     -3.668900e+02 1.386600e+02
-14 21727     -3.963000e+02 2.564400e+02
-11 21728     -9.384003e+01 1.073600e+02
-13 21728     -1.040600e+02 5.447700e+02
-14 21728     -2.029999e+01 2.093700e+02
-11 21729     -3.913700e+02 1.044100e+02
-14 21729     -3.788200e+02 2.114300e+02
-11 21730     -2.169800e+02 9.904001e+01
-13 21730     -1.815700e+02 5.384900e+02
-14 21730     -1.091300e+02 2.053800e+02
-11 21731     2.629200e+02 9.635001e+01
-14 21731     4.364100e+02 1.914300e+02
-11 21732     2.651600e+02 9.389001e+01
-13 21732     2.942800e+02 5.376600e+02
-14 21732     4.385699e+02 1.887000e+02
-11 21733     -3.230900e+02 8.207001e+01
-13 21733     -3.335800e+02 5.130700e+02
-14 21733     -2.837400e+02 1.852600e+02
-11 21734     -3.209800e+02 7.951001e+01
-13 21734     -3.317400e+02 5.101700e+02
-14 21734     -2.820000e+02 1.818000e+02
-11 21735     1.139000e+02 7.535001e+01
-14 21735     2.756300e+02 1.690400e+02
-11 21736     2.275500e+02 7.422000e+01
-13 21736     2.619399e+02 5.167800e+02
-14 21736     4.010699e+02 1.662200e+02
-11 21737     2.459700e+02 6.998999e+01
-14 21737     4.230900e+02 1.606400e+02
-11 21738     -3.411500e+02 6.457001e+01
-13 21738     -3.525400e+02 4.924800e+02
-14 21738     -3.069700e+02 1.636200e+02
-11 21739     3.074600e+02 6.439999e+01
-14 21739     4.923300e+02 1.531200e+02
-11 21740     -3.926000e+02 5.545001e+01
-13 21740     -4.224100e+02 4.792500e+02
-14 21740     -3.877600e+02 1.525700e+02
-11 21741     -3.926000e+02 5.545001e+01
-13 21741     -4.224100e+02 4.792500e+02
-14 21741     -3.877600e+02 1.525700e+02
-11 21742     -3.941100e+02 4.901999e+01
-14 21742     -3.894400e+02 1.449200e+02
-11 21743     1.959000e+02 4.314001e+01
-13 21743     2.381801e+02 4.839900e+02
-14 21743     3.732400e+02 1.302400e+02
-11 21744     -3.993100e+02 4.197000e+01
-13 21744     -4.256500e+02 4.635700e+02
-14 21744     -3.933500e+02 1.356400e+02
-11 21745     -5.087500e+02 3.759000e+01
-14 21745     -5.766300e+02 1.293500e+02
-11 21746     -4.285300e+02 3.776001e+01
-14 21746     -4.365300e+02 1.305000e+02
-11 21747     -4.661000e+02 3.417999e+01
-14 21747     -5.141700e+02 1.254400e+02
-11 21748     -4.721200e+02 3.045999e+01
-14 21748     -5.230400e+02 1.200800e+02
-11 21749     -5.116900e+02 2.981000e+01
-14 21749     -5.787800e+02 1.203100e+02
-11 21750     -4.908800e+02 2.748001e+01
-14 21750     -5.458600e+02 1.180100e+02
-11 21751     -4.225300e+02 1.672998e+01
-14 21751     -4.170100e+02 1.039800e+02
-11 21752     4.053700e+02 1.372998e+01
-13 21752     4.344301e+02 4.540800e+02
-11 21753     3.924100e+02 1.190997e+01
-14 21753     5.917400e+02 8.944000e+01
-11 21754     9.066998e+01 5.539978e+00
-14 21754     2.346100e+02 8.312000e+01
-11 21755     4.180300e+02 1.039978e+00
-14 21755     6.173000e+02 7.659998e+01
-11 21756     -4.395700e+02 -6.400024e+00
-13 21756     -4.548900e+02 4.087000e+02
-11 21757     2.573199e+02 -1.053998e+01
-13 21757     2.987700e+02 4.281000e+02
-11 21758     2.141600e+02 -1.077002e+01
-13 21758     2.609700e+02 4.278000e+02
-14 21758     4.001899e+02 6.570001e+01
-11 21759     4.155699e+02 -1.372998e+01
-14 21759     6.136700e+02 5.863000e+01
-11 21760     4.712100e+02 -1.363000e+01
-13 21760     4.899200e+02 4.260800e+02
-14 21760     6.731000e+02 5.800000e+01
-11 21761     4.893700e+02 -1.544000e+01
-14 21761     6.925400e+02 5.466998e+01
-11 21762     4.175000e+02 -1.991998e+01
-13 21762     4.422500e+02 4.193500e+02
-11 21763     2.618300e+02 -2.353003e+01
-14 21763     4.485601e+02 4.906000e+01
-11 21764     3.121100e+02 -3.009003e+01
-13 21764     3.472100e+02 4.079200e+02
-14 21764     5.026100e+02 4.066998e+01
-11 21765     3.206700e+02 -3.123999e+01
-13 21765     3.544600e+02 4.070100e+02
-14 21765     5.114100e+02 3.928003e+01
-11 21766     2.605400e+02 -3.764001e+01
-14 21766     4.465800e+02 3.231000e+01
-11 21767     2.386899e+02 -3.956000e+01
-14 21767     4.231300e+02 3.114001e+01
-11 21768     4.880800e+02 -4.933002e+01
-14 21768     6.893000e+02 1.515002e+01
-11 21769     2.586600e+02 -5.426001e+01
-14 21769     4.437400e+02 1.325000e+01
-11 21770     3.217000e+02 -5.534998e+01
-14 21770     5.101801e+02 1.034998e+01
-11 21771     5.739990e+00 -5.875000e+01
-13 21771     6.953003e+01 3.745100e+02
-11 21772     5.395699e+02 -6.000000e+01
-14 21772     7.433800e+02 2.059998e+00
-11 21773     -4.351600e+02 -6.577002e+01
-13 21773     -3.982400e+02 3.519300e+02
-14 21773     -3.738400e+02 8.270020e+00
-11 21774     4.164000e+02 -6.635999e+01
-14 21774     6.120100e+02 -3.500000e+00
-11 21775     4.438400e+02 -7.042999e+01
-13 21775     4.612000e+02 3.674500e+02
-14 21775     6.406700e+02 -9.239990e+00
-11 21776     2.856100e+02 -7.606000e+01
-14 21776     4.711801e+02 -1.415002e+01
-11 21777     -1.750200e+02 -9.641998e+01
-13 21777     -1.010400e+02 3.296500e+02
-14 21777     -2.941998e+01 -3.313000e+01
-11 21778     -3.826500e+02 -1.093900e+02
-13 21778     9.300000e+01 3.794500e+02
-14 21778     2.012600e+02 1.608002e+01
-11 21779     3.853800e+02 -1.152600e+02
-14 21779     5.758700e+02 -6.134998e+01
-11 21780     3.288300e+02 -1.194900e+02
-14 21780     5.152900e+02 -6.539001e+01
-11 21781     -3.750700e+02 -1.239300e+02
-14 21781     -2.582900e+02 -6.600000e+01
-11 21782     4.996300e+02 -1.244600e+02
-14 21782     6.972900e+02 -7.415997e+01
-11 21783     3.690900e+02 -1.269100e+02
-14 21783     5.575699e+02 -7.465997e+01
-11 21784     -8.392999e+01 -1.437100e+02
-14 21784     7.021997e+01 -9.020001e+01
-11 21785     -3.140600e+02 -1.441000e+02
-13 21785     -2.333700e+02 2.740200e+02
-14 21785     -1.892500e+02 -9.063000e+01
-11 21786     5.196500e+02 -1.464900e+02
-14 21786     7.177000e+02 -9.990002e+01
-11 21787     2.879900e+02 -1.527400e+02
-14 21787     4.696300e+02 -1.047100e+02
-11 21788     2.879900e+02 -1.527400e+02
-14 21788     4.696300e+02 -1.047100e+02
-11 21789     -2.349700e+02 -1.579200e+02
-14 21789     -9.959998e+01 -1.078000e+02
-11 21790     -6.442999e+01 -1.597600e+02
-13 21790     2.530029e+00 2.680000e+02
-11 21791     2.221200e+02 -1.621100e+02
-14 21791     3.997600e+02 -1.149500e+02
-11 21792     -3.395001e+01 -1.637000e+02
-14 21792     1.235800e+02 -1.149400e+02
-11 21793     2.157500e+02 -1.647400e+02
-13 21793     2.543800e+02 2.697600e+02
-14 21793     3.922500e+02 -1.179500e+02
-11 21794     2.114000e+02 -1.653800e+02
-13 21794     2.508101e+02 2.690200e+02
-14 21794     3.882700e+02 -1.186300e+02
-11 21795     -3.738600e+02 -1.672500e+02
-13 21795     -2.889000e+02 2.481500e+02
-14 21795     -2.577000e+02 -1.180100e+02
-11 21796     -9.741998e+01 -1.692100e+02
-12 21796     -6.370000e+02 6.188100e+02
-11 21797     -4.153800e+02 -1.732500e+02
-14 21797     -3.305800e+02 -1.286500e+02
-11 21798     -2.528100e+02 -1.819800e+02
-14 21798     -1.221000e+02 -1.373400e+02
-11 21799     -1.430900e+02 -1.819400e+02
-14 21799     2.000000e+00 -1.373600e+02
-11 21800     -1.430900e+02 -1.819400e+02
-14 21800     2.000000e+00 -1.373600e+02
-11 21801     -4.614001e+01 -1.903200e+02
-14 21801     1.080400e+02 -1.469300e+02
-11 21802     4.267400e+02 -2.110400e+02
-14 21802     6.149000e+02 -1.756700e+02
-11 21803     -1.630100e+02 -2.157400e+02
-14 21803     -2.226001e+01 -1.776200e+02
-11 21804     -3.172400e+02 -2.218300e+02
-14 21804     -1.960900e+02 -1.859000e+02
-11 21805     1.853100e+02 -2.223600e+02
-12 21805     -2.641200e+02 5.689800e+02
-11 21806     1.887200e+02 -2.258700e+02
-12 21806     -2.590800e+02 5.645800e+02
-11 21807     3.614000e+02 -2.269100e+02
-14 21807     5.442600e+02 -1.937700e+02
-11 21808     -3.070700e+02 -2.282100e+02
-14 21808     -1.855700e+02 -1.941700e+02
-11 21809     2.800800e+02 -2.311100e+02
-12 21809     -1.509700e+02 5.658600e+02
-11 21810     4.569900e+02 -2.395100e+02
-13 21810     4.604399e+02 1.993400e+02
-14 21810     6.460800e+02 -2.100300e+02
-11 21811     -5.059003e+01 -2.435400e+02
-12 21811     -5.573000e+02 5.134400e+02
-11 21812     2.034100e+02 -2.614800e+02
-14 21812     3.739399e+02 -2.341400e+02
-11 21813     -2.381400e+02 -2.850000e+02
-12 21813     -8.052600e+02 4.232100e+02
-11 21814     -3.417800e+02 -2.855500e+02
-14 21814     -2.287400e+02 -2.648100e+02
-11 21815     1.380005e+00 -2.930200e+02
-12 21815     -4.794000e+02 4.500400e+02
-11 21816     -4.549988e+00 -2.933500e+02
-13 21816     5.554999e+01 1.354300e+02
-11 21817     -4.315002e+01 -2.992600e+02
-13 21817     2.101001e+01 1.280900e+02
-11 21818     -5.144800e+02 -3.027100e+02
-13 21818     -5.311600e+02 7.907001e+01
-14 21818     -5.659900e+02 -3.034600e+02
-11 21819     -1.025500e+02 -3.311500e+02
-12 21819     -6.060300e+02 3.795800e+02
-11 21820     -1.789700e+02 -3.401900e+02
-12 21820     -7.060500e+02 3.532700e+02
-11 21821     -3.601300e+02 -3.592200e+02
-13 21821     -2.691000e+02 5.059003e+01
-11 21822     -1.195000e+02 -3.935900e+02
-12 21822     -6.143600e+02 2.885300e+02
-11 21823     2.169100e+02 -4.567900e+02
-14 21823     4.109900e+02 -4.619700e+02
-15 21823     4.009998e+01 5.370100e+02
-11 21824     -1.550200e+02 -4.592600e+02
-13 21824     -7.971002e+01 -3.370001e+01
-11 21825     2.154200e+02 -5.130100e+02
-14 21825     4.285000e+02 -5.256000e+02
-11 21826     4.717600e+02 1.740600e+02
-14 21826     5.975300e+02 2.807900e+02
-11 21827     4.661100e+02 1.693800e+02
-14 21827     5.899100e+02 2.751000e+02
-11 21828     -2.300000e+01 1.670000e+02
-14 21828     9.389001e+01 2.877900e+02
-11 21829     -3.445001e+01 1.639600e+02
-14 21829     3.778003e+01 2.833400e+02
-11 21830     -8.562000e+01 1.597400e+02
-14 21830     -2.171997e+01 2.788100e+02
-11 21831     -3.122500e+02 1.415400e+02
-14 21831     -2.848400e+02 2.602900e+02
-11 21832     1.824500e+02 1.410000e+02
-14 21832     3.379700e+02 2.449400e+02
-11 21833     1.565800e+02 1.391100e+02
-13 21833     1.810800e+02 5.860300e+02
-14 21833     3.076700e+02 2.450300e+02
-11 21834     1.256500e+02 1.308100e+02
-13 21834     1.525699e+02 5.770700e+02
-14 21834     2.747600e+02 2.361000e+02
-11 21835     -3.239500e+02 8.589001e+01
-13 21835     -3.347900e+02 5.171700e+02
-14 21835     -2.848300e+02 1.898400e+02
-11 21836     2.627100e+02 8.150000e+01
-14 21836     4.379500e+02 1.748300e+02
-11 21837     2.255699e+02 7.801001e+01
-13 21837     2.607400e+02 5.195900e+02
-11 21838     2.627100e+02 7.589001e+01
-13 21838     2.951600e+02 5.187200e+02
-14 21838     4.399000e+02 1.675700e+02
-11 21839     2.460800e+02 7.448001e+01
-13 21839     2.795601e+02 5.168800e+02
-14 21839     4.215200e+02 1.660600e+02
-11 21840     2.343101e+02 7.219000e+01
-13 21840     2.691899e+02 5.142700e+02
-14 21840     4.095200e+02 1.633200e+02
-11 21841     2.634900e+02 5.851999e+01
-13 21841     2.993600e+02 5.003900e+02
-11 21842     -1.695100e+02 5.820001e+01
-13 21842     -1.281600e+02 4.930200e+02
-14 21842     -5.095001e+01 1.532400e+02
-11 21843     -2.846100e+02 5.673999e+01
-13 21843     -2.464800e+02 4.881100e+02
-14 21843     -1.865700e+02 1.534100e+02
-11 21844     -3.835900e+02 4.906000e+01
-14 21844     -3.750600e+02 1.442800e+02
-11 21845     -3.858100e+02 4.414001e+01
-13 21845     -4.112500e+02 4.666400e+02
-14 21845     -3.765900e+02 1.383000e+02
-11 21846     -8.495001e+01 3.857999e+01
-13 21846     -3.022998e+01 4.747000e+02
-14 21846     6.077002e+01 1.289700e+02
-11 21847     -8.946997e+01 2.688000e+01
-14 21847     2.480601e+02 1.396400e+02
-11 21848     -4.230600e+02 7.539978e+00
-13 21848     -4.418200e+02 4.238000e+02
-14 21848     -4.160100e+02 9.216000e+01
-11 21849     1.923600e+02 -1.972998e+01
-13 21849     2.399900e+02 4.176700e+02
-14 21849     3.754000e+02 5.497998e+01
-11 21850     4.671300e+02 -2.271002e+01
-13 21850     4.855000e+02 4.163300e+02
-11 21851     3.224000e+02 -2.515997e+01
-14 21851     5.133000e+02 4.634003e+01
-11 21852     1.602300e+02 -3.102002e+01
-13 21852     2.119100e+02 4.061500e+02
-14 21852     3.420300e+02 4.238000e+01
-11 21853     1.678600e+02 -3.131000e+01
-13 21853     2.183800e+02 4.054400e+02
-14 21853     3.494500e+02 4.137000e+01
-11 21854     3.575900e+02 -8.779999e+01
-14 21854     5.479200e+02 -2.863000e+01
-11 21855     -1.813700e+02 -1.072000e+02
-13 21855     -1.065700e+02 3.184600e+02
-11 21856     4.580601e+02 -1.115700e+02
-13 21856     4.706700e+02 3.258500e+02
-11 21857     4.299900e+02 -1.150800e+02
-13 21857     4.456400e+02 3.222700e+02
-14 21857     6.232400e+02 -6.198999e+01
-11 21858     -1.443300e+02 -1.342100e+02
-13 21858     -7.115997e+01 2.915600e+02
-14 21858     3.609985e+00 -7.866998e+01
-11 21859     -2.563700e+02 -1.349200e+02
-13 21859     -1.772600e+02 2.861800e+02
-14 21859     -1.220900e+02 -7.989001e+01
-11 21860     -1.365800e+02 -1.356300e+02
-13 21860     -6.434003e+01 2.908200e+02
-11 21861     -8.288000e+01 -1.567000e+02
-13 21861     -1.453003e+01 2.703200e+02
-11 21862     -3.585000e+02 -1.600300e+02
-13 21862     -2.755500e+02 2.558900e+02
-14 21862     -2.410400e+02 -1.098400e+02
-11 21863     1.838600e+02 -1.624500e+02
-14 21863     3.584399e+02 -1.145200e+02
-11 21864     1.507800e+02 -1.633500e+02
-13 21864     1.970100e+02 2.696500e+02
-11 21865     -4.153600e+02 -1.674200e+02
-13 21865     -3.504300e+02 2.396200e+02
-14 21865     -3.304800e+02 -1.240200e+02
-11 21866     -4.760500e+02 -2.130200e+02
-13 21866     -5.146600e+02 1.739300e+02
-14 21866     -5.327700e+02 -1.903000e+02
-11 21867     -4.753900e+02 -2.189400e+02
-13 21867     -5.133000e+02 1.672900e+02
-14 21867     -5.320800e+02 -1.983500e+02
-11 21868     -2.047500e+02 -3.019600e+02
-12 21868     -7.525600e+02 4.037400e+02
-11 21869     -7.787000e+01 -3.271600e+02
-13 21869     -1.028998e+01 9.937000e+01
-14 21869     6.638000e+01 -3.128300e+02
-11 21870     1.506100e+02 -4.032500e+02
-14 21870     3.137400e+02 -4.033400e+02
-11 21871     -1.049800e+02 -4.295600e+02
-13 21871     -3.497998e+01 -2.349976e+00
-14 21871     3.029999e+01 -4.383500e+02
-11 21872     -2.005000e+02 -4.748300e+02
-14 21872     -7.866998e+01 -4.949900e+02
-11 21873     1.978600e+02 -5.266801e+02
-14 21873     4.137900e+02 -5.408300e+02
-11 21874     4.557001e+01 2.289400e+02
-14 21874     9.706000e+01 3.592000e+02
-11 21875     2.838900e+02 2.092200e+02
-14 21875     3.800900e+02 3.268900e+02
-11 21876     2.838900e+02 2.092200e+02
-14 21876     3.800900e+02 3.268900e+02
-11 21877     5.925000e+01 1.815200e+02
-14 21877     1.239100e+02 2.987700e+02
-11 21878     6.869995e+00 1.783300e+02
-14 21878     6.226001e+01 2.960300e+02
-11 21879     5.019800e+02 1.702100e+02
-14 21879     6.349900e+02 2.752400e+02
-11 21880     -1.743400e+02 1.471400e+02
-14 21880     -1.226200e+02 2.628800e+02
-11 21881     -3.095300e+02 1.430300e+02
-14 21881     -2.848400e+02 2.602900e+02
-11 21882     1.314500e+02 1.353500e+02
-13 21882     1.573700e+02 5.816900e+02
-11 21883     1.022600e+02 1.308600e+02
-13 21883     1.297900e+02 5.770800e+02
-14 21883     2.485200e+02 2.366900e+02
-11 21884     1.597800e+02 1.288100e+02
-13 21884     1.859500e+02 5.755300e+02
-14 21884     3.129600e+02 2.335400e+02
-11 21885     1.691900e+02 1.285100e+02
-13 21885     1.962600e+02 5.736800e+02
-14 21885     3.250699e+02 2.310400e+02
-11 21886     1.304500e+02 1.242500e+02
-13 21886     1.589700e+02 5.697900e+02
-14 21886     2.819700e+02 2.277300e+02
-11 21887     2.808101e+02 1.116600e+02
-13 21887     3.065100e+02 5.566900e+02
-14 21887     4.526700e+02 2.095700e+02
-11 21888     -2.882800e+02 1.055800e+02
-13 21888     -2.826200e+02 5.427900e+02
-14 21888     -2.228600e+02 2.147000e+02
-11 21889     1.077400e+02 1.049900e+02
-13 21889     1.408000e+02 5.491000e+02
-14 21889     2.607300e+02 2.056400e+02
-11 21890     2.593199e+02 9.807001e+01
-13 21890     2.887900e+02 5.422200e+02
-14 21890     4.320000e+02 1.938800e+02
-11 21891     2.596000e+02 8.601001e+01
-13 21891     2.909900e+02 5.296400e+02
-14 21891     4.348300e+02 1.798700e+02
-11 21892     -3.162200e+02 8.426999e+01
-14 21892     -2.755300e+02 1.876200e+02
-11 21893     2.701500e+02 8.320999e+01
-13 21893     3.008300e+02 5.264300e+02
-14 21893     4.463800e+02 1.759100e+02
-11 21894     2.322300e+02 8.094000e+01
-14 21894     4.046801e+02 1.741900e+02
-11 21895     -3.560500e+02 7.964999e+01
-13 21895     -3.698700e+02 5.091200e+02
-14 21895     -3.245900e+02 1.827100e+02
-11 21896     1.504800e+02 7.203000e+01
-13 21896     1.892900e+02 5.135400e+02
-14 21896     3.164200e+02 1.646500e+02
-11 21897     1.238400e+02 6.966000e+01
-14 21897     2.876899e+02 1.622500e+02
-11 21898     2.040300e+02 5.213000e+01
-13 21898     2.440400e+02 4.934600e+02
-14 21898     3.801899e+02 1.404400e+02
-11 21899     1.663000e+02 4.550000e+01
-13 21899     2.096801e+02 4.862400e+02
-11 21900     2.186700e+02 4.494000e+01
-14 21900     3.985800e+02 1.310900e+02
-11 21901     1.835000e+02 4.092999e+01
-13 21901     2.271000e+02 4.808300e+02
-11 21902     -3.481600e+02 3.579999e+01
-13 21902     -3.579900e+02 4.588800e+02
-14 21902     -3.165800e+02 1.267500e+02
-11 21903     2.392700e+02 3.132001e+01
-13 21903     2.825000e+02 4.712100e+02
-14 21903     4.253600e+02 1.144200e+02
-11 21904     3.404900e+02 2.237000e+01
-13 21904     3.766400e+02 4.630000e+02
-14 21904     5.367100e+02 1.027500e+02
-11 21905     -4.739500e+02 1.925000e+01
-14 21905     -5.054000e+02 1.077000e+02
-11 21906     -4.125300e+02 -4.520020e+00
-13 21906     -4.256600e+02 4.112100e+02
-14 21906     -3.987800e+02 7.706000e+01
-11 21907     2.644900e+02 -3.628998e+01
-13 21907     3.032500e+02 4.012900e+02
-14 21907     4.508101e+02 3.407001e+01
-11 21908     -4.657100e+02 -4.506000e+01
-13 21908     -4.746700e+02 3.639300e+02
-14 21908     -4.609400e+02 2.628998e+01
-11 21909     5.218400e+02 -6.603998e+01
-14 21909     7.240699e+02 -5.859985e+00
-11 21910     -1.397998e+01 -6.646997e+01
-13 21910     5.004999e+01 3.655500e+02
-14 21910     1.502500e+02 1.539978e+00
-11 21911     -1.234400e+02 -7.271002e+01
-13 21911     -5.306000e+01 3.555400e+02
-14 21911     2.879999e+01 -5.390015e+00
-11 21912     4.708900e+02 -8.445001e+01
-13 21912     4.843000e+02 3.537700e+02
-14 21912     6.692200e+02 -2.602002e+01
-11 21913     1.816700e+02 -9.012000e+01
-14 21913     3.604200e+02 -2.900000e+01
-11 21914     -1.659500e+02 -1.206800e+02
-13 21914     -9.179999e+01 3.048100e+02
-11 21915     -3.143300e+02 -1.399500e+02
-13 21915     -2.339200e+02 2.770900e+02
-14 21915     -1.894800e+02 -8.725000e+01
-11 21916     -1.054800e+02 -1.492700e+02
-14 21916     4.597998e+01 -9.696997e+01
-11 21917     -3.535300e+02 -1.605500e+02
-13 21917     -2.710000e+02 2.547100e+02
-14 21917     -2.355700e+02 -1.109100e+02
-11 21918     -1.246000e+02 -1.931900e+02
-13 21918     -5.263000e+01 2.310800e+02
-11 21919     -1.246000e+02 -1.931900e+02
-12 21919     -6.688400e+02 5.787000e+02
-14 21919     2.240997e+01 -1.508100e+02
-11 21920     -7.947998e+01 -1.923300e+02
-13 21920     -1.139001e+01 2.343400e+02
-14 21920     7.135999e+01 -1.489200e+02
-11 21921     4.632900e+02 -2.082000e+02
-14 21921     6.540699e+02 -1.727200e+02
-11 21922     -5.214900e+02 -3.005700e+02
-13 21922     -5.394300e+02 7.985001e+01
-14 21922     -5.759900e+02 -3.017700e+02
-11 21923     -4.408900e+02 -3.587500e+02
-13 21923     -4.229600e+02 3.221997e+01
-11 21924     -4.580000e+02 -3.611100e+02
-14 21924     -4.643200e+02 -3.727500e+02
-11 21925     2.907000e+02 -4.363100e+02
-12 21925     -9.022998e+01 3.196600e+02
-13 21925     3.305400e+02 1.426001e+01
-14 21925     4.890200e+02 -4.369100e+02
-15 21925     1.451600e+02 5.754600e+02
-11 21926     -1.845600e+02 -4.836900e+02
-13 21926     -1.057300e+02 -5.877002e+01
-14 21926     -6.126001e+01 -5.058800e+02
-11 21927     1.766998e+01 -4.847200e+02
-13 21927     8.971997e+01 -4.469000e+01
-14 21927     1.840100e+02 -4.996300e+02
-15 21927     -2.499400e+02 4.697700e+02
-11 21928     -2.871002e+01 -5.250699e+02
-12 21928     -4.437600e+02 1.519900e+02
-13 21928     5.900000e+01 -8.263000e+01
-14 21928     1.439100e+02 -5.475200e+02
-11 21929     -5.507001e+01 1.928900e+02
-14 21929     -2.046002e+01 3.150400e+02
-11 21930     6.914001e+01 8.698001e+01
-13 21930     1.031200e+02 5.279200e+02
-14 21930     2.169100e+02 1.832200e+02
-11 21931     2.031600e+02 6.579001e+01
-14 21931     3.774800e+02 1.559600e+02
-11 21932     6.382001e+01 1.757001e+01
-13 21932     1.121400e+02 4.551100e+02
-11 21933     4.870400e+02 1.531000e+01
-14 21933     6.917100e+02 9.145001e+01
-11 21934     2.561600e+02 1.108002e+01
-14 21934     4.452000e+02 9.064001e+01
-11 21935     3.521100e+02 6.510010e+00
-13 21935     3.855100e+02 4.465400e+02
-14 21935     5.474700e+02 8.389001e+01
-11 21936     2.817300e+02 -3.275000e+01
-14 21936     4.688600e+02 3.800000e+01
-11 21937     1.690300e+02 -3.534998e+01
-13 21937     2.196100e+02 4.012500e+02
-14 21937     3.505400e+02 3.653003e+01
-11 21938     2.626801e+02 -6.647998e+01
-14 21938     4.474100e+02 -1.859985e+00
-11 21939     -4.061500e+02 -9.690002e+01
-13 21939     -3.239700e+02 3.219900e+02
-14 21939     -2.907600e+02 -3.035999e+01
-11 21940     -3.368100e+02 -1.025300e+02
-13 21940     -2.555700e+02 3.171900e+02
-14 21940     -2.111800e+02 -3.946997e+01
-11 21941     8.276001e+01 -1.056900e+02
-13 21941     1.379800e+02 3.239500e+02
-11 21942     -4.338700e+02 -1.211100e+02
-13 21942     -3.979900e+02 2.882300e+02
-11 21943     -4.688200e+02 -1.649100e+02
-13 21943     -4.935600e+02 2.301900e+02
-14 21943     -5.003000e+02 -1.250800e+02
-11 21944     -2.893900e+02 -2.098700e+02
-13 21944     -2.073000e+02 2.075800e+02
-14 21944     -1.639200e+02 -1.706600e+02
-11 21945     -2.295500e+02 -3.199800e+02
-13 21945     -1.484300e+02 9.854001e+01
-14 21945     -1.019800e+02 -3.056200e+02
-11 21946     -1.211200e+02 1.815800e+02
-14 21946     -9.696002e+01 3.033700e+02
-11 21947     5.096300e+02 1.639500e+02
-14 21947     6.440900e+02 2.665300e+02
-11 21948     -5.322998e+01 1.324800e+02
-13 21948     -6.403998e+01 5.744600e+02
-11 21949     -5.322998e+01 1.324800e+02
-13 21949     -6.403998e+01 5.744600e+02
-14 21949     2.658002e+01 2.407000e+02
-11 21950     2.842500e+02 1.270000e+02
-13 21950     3.078300e+02 5.732200e+02
-14 21950     4.541300e+02 2.276900e+02
-11 21951     2.641899e+02 9.975000e+01
-13 21951     2.936500e+02 5.430900e+02
-14 21951     4.378800e+02 1.947800e+02
-11 21952     3.215800e+02 7.147000e+01
-13 21952     3.516899e+02 5.142000e+02
-14 21952     5.060699e+02 1.611500e+02
-11 21953     -8.181000e+01 -3.580017e+00
-13 21953     -2.433002e+01 4.315900e+02
-14 21953     6.578998e+01 8.010999e+01
-11 21954     1.525900e+02 -4.219000e+01
-13 21954     2.031500e+02 3.928400e+02
-14 21954     3.312800e+02 2.788000e+01
-11 21955     3.081600e+02 -6.932001e+01
-13 21955     3.412400e+02 3.670200e+02
-11 21956     -3.881800e+02 -7.042999e+01
-13 21956     -3.185500e+02 3.485600e+02
-14 21956     -2.821500e+02 1.500244e-01
-11 21957     -4.567999e+01 -7.013000e+01
-14 21957     1.147000e+02 -2.169983e+00
-11 21958     -3.850200e+02 -7.735999e+01
-13 21958     -3.123100e+02 3.415200e+02
-14 21958     -2.753600e+02 -8.630005e+00
-11 21959     2.130200e+02 -7.804999e+01
-13 21959     2.547300e+02 3.575100e+02
-14 21959     3.929900e+02 -1.475000e+01
-11 21960     -3.083800e+02 -3.173900e+02
-13 21960     -2.224700e+02 9.647000e+01
-14 21960     -1.914700e+02 -3.034400e+02
-11 21961     -2.463000e+01 1.948200e+02
-14 21961     2.303003e+01 3.143200e+02
-11 21962     -2.872998e+01 1.451000e+02
-14 21962     5.142999e+01 2.564900e+02
-11 21963     2.580200e+02 9.026001e+01
-13 21963     2.888300e+02 5.329000e+02
-14 21963     4.320699e+02 1.839600e+02
-11 21964     -2.151800e+02 -4.886300e+02
-13 21964     -1.333500e+02 -6.463000e+01
-14 21964     -9.620001e+01 -5.117500e+02
-11 21965     7.583002e+01 2.106900e+02
-14 21965     1.457900e+02 3.382500e+02
-11 21966     -9.165002e+01 1.623500e+02
-14 21966     -2.598999e+01 2.787500e+02
-11 21967     -2.175000e+02 1.398100e+02
-14 21967     -1.729400e+02 2.549600e+02
-11 21968     1.859100e+02 -1.904999e+01
-14 21968     3.687300e+02 5.653998e+01
-11 21969     5.326801e+02 -1.133500e+02
-14 21969     7.332700e+02 -6.087000e+01
-11 21970     5.194800e+02 1.707900e+02
-14 21970     6.554000e+02 2.760500e+02
-11 21971     5.194800e+02 1.707900e+02
-14 21971     6.554000e+02 2.760500e+02
-11 21972     2.968101e+02 1.201800e+02
-14 21972     4.684301e+02 2.207000e+02
-11 21973     2.859500e+02 9.101999e+01
-13 21973     3.132600e+02 5.361000e+02
-14 21973     4.597500e+02 1.872100e+02
-11 21974     2.859500e+02 9.101999e+01
-13 21974     3.132600e+02 5.361000e+02
-11 21975     -3.415200e+02 8.987000e+01
-13 21975     -3.535600e+02 5.206100e+02
-14 21975     -3.059500e+02 1.945600e+02
-11 21976     2.527800e+02 6.617001e+01
-13 21976     2.864000e+02 5.101400e+02
-14 21976     4.295800e+02 1.578100e+02
-11 21977     8.666998e+01 -3.626100e+02
-12 21977     -3.593500e+02 3.734300e+02
-11 21978     2.134500e+02 4.344000e+01
-13 21978     2.540000e+02 4.867900e+02
-14 21978     3.901400e+02 1.346000e+02
-11 21979     3.493900e+02 -2.388000e+01
-13 21979     3.813500e+02 4.179400e+02
-14 21979     5.434100e+02 5.070001e+01
-11 21980     -2.157200e+02 8.567001e+01
-13 21980     -1.814600e+02 5.281800e+02
-14 21980     -1.101000e+02 1.841900e+02
-11 21981     1.741100e+02 -1.834003e+01
-13 21981     2.244800e+02 4.169200e+02
-14 21981     3.570100e+02 5.467999e+01
-11 21982     2.096800e+02 -1.192000e+02
-13 21982     3.358500e+02 3.059200e+02
-14 21982     4.909600e+02 -7.758002e+01
-11 21983     3.037100e+02 -2.112000e+02
-14 21983     4.837800e+02 -1.765900e+02
-12 21984     -3.110300e+02 5.217300e+02
-14 21984     3.091200e+02 -2.237400e+02
-12 21985     -8.234100e+02 3.338400e+02
-14 21985     -1.415400e+02 -3.333400e+02
-12 21986     -6.677200e+02 2.775800e+02
-15 21986     -5.430100e+02 5.753600e+02
-12 21987     -6.677200e+02 2.775800e+02
-15 21987     -5.430100e+02 5.753600e+02
-12 21988     -6.456500e+02 2.774800e+02
-15 21988     -5.165500e+02 5.747800e+02
-12 21989     -6.090800e+02 2.769800e+02
-15 21989     -4.726400e+02 5.722500e+02
-12 21990     -6.096500e+02 2.740300e+02
-15 21990     -4.736000e+02 5.689900e+02
-12 21991     -6.096500e+02 2.740300e+02
-15 21991     -4.736000e+02 5.689900e+02
-12 21992     -6.986000e+02 2.730000e+02
-15 21992     -5.785500e+02 5.723300e+02
-12 21993     4.050800e+02 2.722200e+02
-15 21993     6.760200e+02 4.054500e+02
-12 21994     -7.755600e+02 2.451800e+02
-15 21994     -6.669000e+02 5.455500e+02
-12 21995     -7.194200e+02 2.451400e+02
-15 21995     -6.035600e+02 5.424000e+02
-12 21996     -7.194200e+02 2.451400e+02
-15 21996     -6.035600e+02 5.424000e+02
-12 21997     -5.841998e+01 2.408300e+02
-14 21997     5.291000e+02 -5.781700e+02
-12 21998     -7.275300e+02 2.194700e+02
-15 21998     -6.134000e+02 5.147800e+02
-12 21999     -7.172800e+02 2.192500e+02
-14 21999     -8.082001e+01 -4.416500e+02
-15 21999     -6.012100e+02 5.138900e+02
-12 22000     -7.288100e+02 2.138700e+02
-15 22000     -6.148900e+02 5.088500e+02
-12 22001     -7.629200e+02 2.015100e+02
-15 22001     -6.532500e+02 4.976200e+02
-12 22002     -7.617100e+02 1.988500e+02
-15 22002     -6.516700e+02 4.949700e+02
-12 22003     -7.861600e+02 1.946600e+02
-15 22003     -6.762000e+02 4.946800e+02
-12 22004     1.797200e+02 1.919500e+02
-15 22004     2.202700e+02 2.450800e+02
-12 22005     -2.630500e+02 1.765100e+02
-15 22005     -1.051700e+02 4.074300e+02
-12 22006     5.811801e+02 1.518000e+02
-15 22006     8.574600e+02 2.148000e+02
-12 22007     9.422998e+01 1.361900e+02
-15 22007     1.022700e+02 1.880400e+02
-12 22008     5.176200e+02 1.078900e+02
-15 22008     7.790400e+02 1.808900e+02
-12 22009     1.201100e+02 1.054100e+02
-15 22009     1.247000e+02 1.477500e+02
-12 22010     1.903101e+02 1.026100e+02
-15 22010     2.071300e+02 1.346800e+02
-12 22011     -4.101000e+02 8.723999e+01
-13 22011     7.904999e+01 -1.367700e+02
-12 22012     3.760000e+02 8.484998e+01
-13 22012     6.748600e+02 -2.492100e+02
-15 22012     4.657900e+02 1.058800e+02
-12 22013     5.834200e+02 7.988000e+01
-15 22013     8.491400e+02 1.296100e+02
-12 22014     5.882600e+02 7.028003e+01
-15 22014     8.529900e+02 1.172100e+02
-12 22015     2.012400e+02 2.071002e+01
-15 22015     2.059399e+02 4.029999e+01
-12 22016     2.541400e+02 1.539978e+00
-15 22016     2.712600e+02 1.334998e+01
-12 22017     3.052700e+02 -5.890015e+00
-15 22017     3.294000e+02 -4.200012e+00
-12 22018     6.295699e+02 -1.178003e+01
-15 22018     8.637800e+02 -2.750000e+00
-12 22019     1.276200e+02 -3.147998e+01
-15 22019     1.120000e+02 -5.549988e+00
-12 22020     9.953998e+01 -9.117999e+01
-15 22020     6.446002e+01 -7.009003e+01
-12 22021     -1.644200e+02 -9.631000e+01
-15 22021     -2.046000e+02 -1.921997e+01
-12 22022     -1.594200e+02 -1.181200e+02
-15 22022     -2.099900e+02 -4.750000e+01
-12 22023     1.877600e+02 -1.486300e+02
-15 22023     1.436801e+02 -1.538200e+02
-12 22024     2.204000e+02 -1.854400e+02
-15 22024     1.817700e+02 -1.958400e+02
-12 22025     2.861300e+02 -2.266900e+02
-15 22025     2.675100e+02 -2.439600e+02
-12 22026     8.434003e+01 -2.341500e+02
-15 22026     3.107001e+01 -2.173400e+02
-12 22027     -4.371900e+02 -2.355000e+02
-15 22027     -4.285200e+02 -7.291998e+01
-12 22028     -5.562500e+02 -2.378800e+02
-15 22028     -5.467800e+02 -5.390002e+01
-12 22029     -5.611200e+02 -2.403400e+02
-15 22029     -5.526700e+02 -5.596002e+01
-12 22030     -4.357900e+02 -2.404200e+02
-15 22030     -4.284600e+02 -7.885999e+01
-12 22031     -5.903300e+02 -2.418100e+02
-15 22031     -5.816000e+02 -5.284998e+01
-12 22032     7.084100e+02 -2.548400e+02
-15 22032     8.331400e+02 -3.424300e+02
-12 22033     -7.015800e+02 -2.589700e+02
-15 22033     -6.948300e+02 -5.325000e+01
-12 22034     1.082600e+02 5.816000e+02
-13 22034     5.077300e+02 2.091300e+02
-12 22035     -9.581000e+01 5.753600e+02
-13 22035     3.494000e+02 2.106200e+02
-12 22036     -1.683800e+02 5.553700e+02
-13 22036     2.932500e+02 1.978700e+02
-12 22037     -6.738200e+02 5.229900e+02
-14 22037     8.770020e+00 -1.943700e+02
-12 22038     -6.398500e+02 3.514100e+02
-14 22038     6.409973e+00 -3.385200e+02
-12 22039     -8.226000e+02 3.282700e+02
-14 22039     -1.421300e+02 -3.382400e+02
-12 22040     -8.055100e+02 3.011900e+02
-14 22040     -1.337600e+02 -3.621200e+02
-12 22041     -1.368600e+02 2.469800e+02
-13 22041     2.910200e+02 -4.059003e+01
-12 22042     -7.728800e+02 1.789800e+02
-15 22042     -6.611700e+02 4.779000e+02
-12 22043     2.093000e+02 1.509000e+02
-15 22043     2.450400e+02 1.913500e+02
-12 22044     -2.274400e+02 1.432300e+02
-13 22044     2.252700e+02 -1.330700e+02
-12 22045     -1.204900e+02 6.966998e+01
-15 22045     -1.244300e+02 1.612200e+02
-12 22046     -3.455200e+02 -1.898999e+01
-13 22046     1.190600e+02 -2.259200e+02
-12 22047     -6.050000e+01 2.609600e+02
-13 22047     3.602400e+02 -7.472998e+01
-14 22047     5.284301e+02 -5.547100e+02
-12 22048     2.222800e+02 2.479100e+02
-13 22048     5.693000e+02 -1.142900e+02
-15 22048     3.047200e+02 3.189100e+02
-12 22049     -6.482900e+02 1.844000e+02
-15 22049     -5.142200e+02 4.886100e+02
-12 22050     -2.203700e+02 -5.590997e+01
-13 22050     2.173300e+02 -2.869200e+02
-12 22051     -9.040002e+01 -7.678998e+01
-13 22051     3.095300e+02 -3.193900e+02
-15 22051     -1.259500e+02 -1.223999e+01
-12 22052     -7.957001e+01 -2.211900e+02
-15 22052     -1.295200e+02 -1.641900e+02
-12 22053     -4.293800e+02 -2.396100e+02
-13 22053     4.287000e+01 -3.814700e+02
-12 22054     -4.112000e+02 -2.755900e+02
-13 22054     5.319000e+01 -4.114000e+02
-15 22054     -4.150600e+02 -1.247500e+02
-12 22055     -6.589001e+01 3.019100e+02
-15 22055     1.675699e+02 5.467800e+02
-12 22056     -2.313900e+02 -2.495300e+02
-13 22056     1.859500e+02 -4.179100e+02
-12 22057     -2.408200e+02 3.850200e+02
-13 22057     2.239399e+02 7.769000e+01
-14 22057     3.541100e+02 -3.510100e+02
-12 22058     -5.960200e+02 3.155100e+02
-13 22058     -3.254999e+01 4.920001e+01
-12 22059     5.223800e+02 1.135300e+02
-15 22059     7.846801e+02 1.861600e+02
-12 22060     -4.192100e+02 -2.872700e+02
-15 22060     -4.260400e+02 -1.358300e+02
-12 22061     2.881300e+02 1.585100e+02
-13 22061     6.117600e+02 -1.874400e+02
-12 22062     -1.153600e+02 8.780029e+00
-13 22062     2.972800e+02 -2.537900e+02
-12 22063     1.802800e+02 5.973800e+02
-13 22063     5.683600e+02 2.207100e+02
-14 22063     7.793900e+02 -1.872000e+02
-13 22064     2.403199e+02 6.599731e-01
-15 22064     -1.429993e+00 5.502700e+02
-13 22065     9.066998e+01 -3.471002e+01
-14 22065     1.856300e+02 -4.869399e+02
-15 22065     -2.457200e+02 4.853300e+02
-13 22066     6.387000e+02 -5.437000e+01
-15 22066     5.966801e+02 4.643500e+02
-13 22067     -2.520700e+02 -5.721997e+01
-14 22067     -2.428200e+02 -4.944301e+02
-15 22067     -8.082100e+02 4.273600e+02
-13 22068     -1.008500e+02 -8.966998e+01
-14 22068     -5.752002e+01 -5.462000e+02
-15 22068     -5.554200e+02 3.868700e+02
-13 22069     3.371300e+02 -1.565800e+02
-15 22069     -7.259998e+01 2.442600e+02
-13 22070     -1.509900e+02 -2.296100e+02
-15 22070     -6.677100e+02 1.555800e+02
-13 22071     -2.067200e+02 -2.419600e+02
-15 22071     -7.530400e+02 1.337500e+02
-13 22072     -2.084800e+02 -2.446000e+02
-15 22072     -7.565000e+02 1.293000e+02
-13 22073     3.361500e+02 -2.759100e+02
-15 22073     -8.146002e+01 5.587000e+01
-13 22074     5.983002e+01 -2.790600e+02
-15 22074     -3.663300e+02 8.373999e+01
-13 22075     3.418800e+02 -2.791500e+02
-15 22075     -7.394000e+01 5.016998e+01
-13 22076     -7.927002e+01 -2.831700e+02
-15 22076     -5.751800e+02 7.284998e+01
-13 22077     5.121997e+01 -2.857100e+02
-15 22077     -3.813500e+02 7.392999e+01
-13 22078     3.679200e+02 -2.890300e+02
-15 22078     -3.883002e+01 3.396997e+01
-13 22079     -1.754700e+02 -2.927600e+02
-15 22079     -7.191700e+02 5.409998e+01
-13 22080     5.198800e+02 -3.184500e+02
-15 22080     1.850500e+02 -1.271002e+01
-13 22081     4.119500e+02 -3.230500e+02
-15 22081     1.595001e+01 -2.114001e+01
-13 22082     1.126800e+02 -4.855200e+02
-15 22082     -3.535400e+02 -2.381200e+02
-13 22083     6.044600e+02 -2.841998e+01
-15 22083     5.510800e+02 5.071200e+02
-13 22084     5.620001e+01 -2.698700e+02
-15 22084     -3.689400e+02 9.884000e+01
-13 22085     -2.541998e+01 -3.533000e+02
-15 22085     -5.142700e+02 -3.601001e+01
-13 22086     -1.955900e+02 -3.773300e+02
-15 22086     -7.698100e+02 -8.114001e+01
-13 22087     5.309003e+01 -2.096300e+02
-15 22087     -3.567100e+02 1.964500e+02
-13 22088     -1.722800e+02 -2.958000e+02
-15 22088     -7.155600e+02 4.906000e+01
-13 22089     -4.651001e+01 -3.769800e+02
-15 22089     -5.508800e+02 -7.258002e+01
-13 22090     6.371100e+02 -4.607001e+01
-15 22090     5.948101e+02 4.769100e+02
-13 22091     -9.215997e+01 -2.152800e+02
-15 22091     -5.756900e+02 1.820000e+02
-13 22092     -1.344900e+02 -2.470200e+02
-15 22092     -6.465600e+02 1.298700e+02
-13 22093     7.197998e+01 -2.940800e+02
-15 22093     -3.537400e+02 6.079999e+01
-13 22094     4.086400e+02 -2.287400e+02
-15 22094     1.708002e+01 1.250200e+02
-13 22095     7.952002e+01 -5.238199e+02
-15 22095     -4.078200e+02 -2.965800e+02
-13 22096     1.065500e+02 -5.634399e+02
-15 22096     -3.789600e+02 -3.549700e+02
-13 22097     9.940002e+01 -5.793700e+02
-15 22097     -3.944900e+02 -3.789900e+02
-13 22098     3.395300e+02 1.659973e+00
-15 22098     1.509301e+02 5.550700e+02
-14 22099     -2.492600e+02 -3.784700e+02
-15 22099     -8.605900e+02 5.703900e+02
-14 22100     6.095001e+01 -4.518600e+02
-15 22100     -3.997800e+02 5.197300e+02
-14 22101     8.408002e+01 -4.590699e+02
-15 22101     -3.668100e+02 5.134200e+02
-14 22102     6.578003e+01 -4.800800e+02
-15 22102     -3.920800e+02 4.843700e+02
-14 22103     1.808000e+02 -5.225200e+02
-15 22103     -2.593700e+02 4.393600e+02
-14 22104     8.235999e+01 -5.621600e+02
-15 22104     -3.864900e+02 3.803600e+02
-14 22105     2.212600e+02 -4.689200e+02
-15 22105     -1.963200e+02 5.126800e+02
--1.6943983532198115e-02
-1.1171804676513932e-02
-2.4643508831711991e-03
-7.3030995682610689e-01
--2.6490818471043420e-01
--1.7127892627337182e+00
-1.4300319432711681e+03
--7.5572758535864072e-08
-3.2377569465570913e-14
-1.5049725341485708e-02
--1.8504564785154357e-01
--2.9278402790141456e-01
--1.0590476152349551e+00
--3.6017862414345798e-02
--1.5720340175803784e+00
-1.4321374541298685e+03
--7.3171919892612292e-08
-3.1759419019880947e-14
--3.0793597986873011e-01
-3.2077907982952031e-01
-2.2253985096991455e-01
-8.5034483295909009e+00
-6.7499603629668741e+00
--3.6383814384447088e+00
-1.5720470590375264e+03
--1.5962623661947355e-08
--1.6507904848058800e-14
--5.0745844824357222e-01
-4.5303458110886097e-01
-2.2317202418459384e-01
-9.1306864710351512e+00
-5.9515833258622060e+00
--7.6457709870603523e+00
-1.5825296104485496e+03
-2.8396179128925302e-08
--1.6632889946223164e-14
--5.4190895666684902e-01
-1.5526677008664553e-02
--1.6877622388014260e+00
-5.1389661257507346e-01
--3.9361473252571764e+00
-1.8563465078437710e-01
-8.0950263306504257e+02
--3.4787985043033058e-08
-1.5727329975251402e-14
--4.6199749901824139e-01
--1.3462678449565035e-01
--2.7655989910677667e-03
-6.7036162401353909e+00
--5.6950053120212196e-01
--2.5772976969377024e+00
-1.6264890616332227e+03
--6.4500853555528371e-08
-1.2672672554812731e-14
--8.3522103675774007e-02
-3.1271352334539093e-01
-2.9408525721888279e-01
-6.2819486572771588e+00
-2.3896130273141107e+00
--5.1263805197250427e+00
-1.8404919562538214e+03
-2.2936515038096812e-08
--5.5180676319504426e-15
-1.9560326962733694e-02
-1.4581340754881897e-01
-1.7225925889972585e-01
-2.3258419016619349e+00
-1.0874497756865391e+00
--8.8330321074721019e-01
-1.3803662776589658e+03
--4.9548734853836975e-08
-4.1206653633014918e-15
--3.0426031970123302e-01
-2.4306062967665967e-01
-1.9921491985566070e-01
-7.5686772770161372e+00
-5.6697767062140612e+00
--2.7534424108541034e+00
-1.2658741730559138e+03
--4.0731113548610113e-08
-1.4881640896710336e-14
--2.4718370286368840e-01
-4.1250983665351643e-01
-3.2258686917584084e-01
-8.3906521818774866e+00
-7.6356324882750588e+00
--4.0393146074189934e+00
-1.3006437482860154e+03
-7.2570774295224158e-08
-3.7861040149889573e-17
-7.4075332554964304e-02
-5.9446011231445044e-02
-9.6119588739598152e-02
-5.9440613097427708e-01
--1.4752921963904655e-01
--1.1034534058507917e+00
-1.6145816582805749e+03
--9.9667148984180577e-09
--7.3005873105562568e-15
--5.5851768691647696e-01
--1.2167381494725156e-01
-1.3881817493742199e-02
-1.6460164136564166e-02
--1.3201099561474590e+00
--1.6817742630030383e+00
-1.3005123781399852e+03
--9.7618462555854297e-08
-4.3157312719854263e-14
--9.5387279002022610e-02
-1.9945484628981378e-01
-2.3854411140028939e-01
-4.2154041550066710e+00
-2.9170530103473862e+00
--8.6454120224582920e-01
-1.6148741715790500e+03
--2.6553673156909878e-08
--7.1183044217437357e-15
--2.4777543527755438e-01
--5.6493283071549855e-02
-7.3454943551223492e-02
-6.0519868979469198e+00
-4.4157699447496307e-01
--3.4019703341060392e+00
-1.3214450945522510e+03
--9.9403845264522475e-08
-3.7263163633599822e-14
--5.2302816650376893e-01
--9.7422865121392060e-02
-2.5749828963323750e-02
-5.9851423763289127e+00
--5.9280499357722183e-01
--2.3806835984882517e+00
-1.5639231366371853e+03
--4.1766427572041569e-08
--3.1300678552939753e-15
-5.1148629137208801e-02
-4.8788101061955271e-03
-1.0306485524990512e-01
-3.0650512995840401e-01
--4.2021910347109205e-02
--1.3305700705714003e+00
-1.9182461401585990e+03
--6.0378231632301450e-09
--5.4354572172859500e-15
--1.2055995050700867e+01
-1.2838775976205760e+01
--4.1099369264082803e+01
-6.4168905904672933e+00
-3.8897031177598462e-01
--2.3586282709150449e+01
-1.3051100355717297e+01
-3.8387587111611952e+00
--2.9777932175344951e+01
-1.3060946673472820e+01
-3.5910521225905803e+00
--2.9759080795372942e+01
-1.4265764475421857e+01
-2.4096216156436530e+01
--5.4823971067225500e+01
--2.5292283211391348e-01
-2.2166082122808284e+00
--2.1712127480255084e+01
-7.6465738085189585e+00
-1.4185331909846619e+01
--5.2070299568846060e+01
--4.5666860198903217e-02
-1.6364966985344431e+00
--2.1119068394959317e+01
--9.3922118197451177e-01
-2.2977836587647551e+00
--2.2346238379188293e+01
--9.3157405364960315e+00
-1.4418536429929048e+01
--4.2521843836265795e+01
-8.1564293970067787e+00
-2.0335061262211823e+01
--5.3988836851055702e+01
--1.0195950900706562e+01
-1.3125515245629000e+01
--4.3394209085130001e+01
--4.1730772942150054e+00
--7.5818063240023132e+00
--2.2199790899712742e+01
--1.0122509268375650e+01
-1.3791135927519628e+01
--4.2557863769575434e+01
--1.4733471293428423e+01
-8.2498352883047694e+00
--4.3983924858521931e+01
--1.2890269048582207e+01
-1.0937199532126284e+01
--4.3350281232011326e+01
--1.2130155071639640e+01
-1.1551505848632800e+01
--4.3434133604149501e+01
--1.5814797015635117e+01
-1.3201958628459549e+01
--3.7137407503896320e+01
--1.3001177442484771e+01
-1.3501147848008733e+01
--3.9152214100669255e+01
--1.5468058273119349e+01
-1.1027549427761569e+01
--4.0372117516000088e+01
--1.6610320588794348e+01
-9.7705664294087935e+00
--4.0852062306923131e+01
--1.6481451582601814e+01
-9.5629342531111892e+00
--4.1351192635975259e+01
--1.4323470851485515e+01
-1.2911499278327163e+01
--3.9067355654727223e+01
--1.3219379436074130e+01
-1.3121021480580271e+01
--3.9985387621304490e+01
--1.5489847438864381e+01
-1.1887964962601497e+01
--3.9264257259844648e+01
--1.2943776827852947e+01
-1.3458701680174595e+01
--3.9497609861918917e+01
--1.4997864583910502e+01
-1.2595589164373571e+01
--3.8679760613069767e+01
--1.3602623476812079e+01
-1.1732592955483705e+01
--3.9913676039271593e+01
--1.2092389175851441e+01
-1.1723676614569490e+01
--4.3105032426072128e+01
-4.1722704944215270e+00
--3.2355514855075138e+00
--2.0898219813515972e+01
--7.5215896148395629e+00
-1.5525287225060119e+01
--4.3000464253671616e+01
--1.4193607584275806e+01
-1.1655580363808896e+01
--4.0948747148487250e+01
--1.1977669054631800e+01
-1.2193591834706842e+01
--4.2611000137875891e+01
--1.1487376900222156e+01
-1.3800220881593839e+01
--4.0895083677341830e+01
--1.3101221233134449e+01
-1.3415578674361784e+01
--3.9678421263843397e+01
--1.0408154999016697e+01
-1.3570337113289430e+01
--4.2295710253066346e+01
--1.0336996754757942e+01
-1.3677535053393420e+01
--4.2158040485577352e+01
--1.4890345781564415e+01
-1.0640945436069295e+01
--4.3869696180852856e+01
--1.5439488017453542e+01
-1.3161187543066063e+01
--3.7426151271358222e+01
--1.0788785281819836e+01
-1.5314053582609729e+01
--3.9316575501054110e+01
--3.7236295344529440e+00
-1.7707485028874459e+01
--4.3980166340165177e+01
--1.0535545701472845e-01
-1.9539653279129492e+01
--4.5144051535007371e+01
-5.2883253582039504e+00
-2.1603462628752677e+01
--4.8776240921983828e+01
--4.0334112678002327e+00
-1.8087465979340884e+01
--4.3206029435357927e+01
--6.5748298583804878e+00
-1.7013709501319390e+01
--4.1776411731661675e+01
-2.2985879446252238e+00
-2.0715198418740531e+01
--4.6164868002967481e+01
-2.2057190846131269e+00
-4.7901626202813220e-02
--2.0187151302722192e+01
-9.5366671051919105e-01
-2.0774161648112677e+00
--2.0944888029865126e+01
--2.2038985290079229e+00
-2.7569485371045586e+00
--2.5898552543004985e+01
-1.2338447180914434e+01
-5.7576604158414844e+00
--3.0496971231187995e+01
--2.5695777583071417e-02
-3.0275299881657238e+00
--2.2235316062421788e+01
-2.8027973769428818e+00
-1.9863684518901450e+00
--2.1102311636134566e+01
-1.6462312576693374e+00
-1.7697590450305434e+00
--2.0652195002814363e+01
-9.8607815071822891e-01
-1.7879942743277102e+00
--2.0718835852919678e+01
-8.3223132051627893e+00
-2.0237944718676395e+01
--5.4112453578902787e+01
--9.1448097318851826e-02
-2.7285698495380570e+00
--2.1982568855817838e+01
-4.0683820631426565e-01
-1.5076206891564590e+00
--2.0793763567888718e+01
-8.3223132051627893e+00
-2.0237944718676395e+01
--5.4112453578902787e+01
-1.3305080128217671e+01
-1.0838832728765045e+01
--3.6982374788689015e+01
-8.4444187354981626e+00
-1.9206696987701626e+01
--5.5914419173348932e+01
--1.1708282462479751e+00
-7.2967385675882690e-01
--2.1819952111983557e+01
-9.7933230112498137e-01
-1.7086448322700956e+01
--5.0523548919760465e+01
-1.2221727333307381e+01
-5.6733498240262046e+00
--3.1125673707298319e+01
-1.9034310574744684e-01
--1.8160404872239508e+00
--2.0468195445088373e+01
--2.1659953859785546e+00
--3.1254009490401744e+00
--2.2563815258905613e+01
-2.1384733347218603e+00
--3.0802223067854055e+00
--1.9908492133886853e+01
-1.7367879819631544e+00
-1.6469729569597105e+00
--2.0520720987391282e+01
-5.2617880228908198e-01
--6.9185819148783523e-01
--2.0590099857964692e+01
-6.3874618867152544e-01
--1.3187132697230937e+00
--2.0647550589146711e+01
-1.2647733031011533e+01
-5.1961694448864311e+00
--2.9399490753427564e+01
-1.3795378248902359e+00
--7.6878425985502785e-01
--2.0350595375182053e+01
-1.4315518877604346e+01
--5.6136513091969042e-01
--2.9519492877392064e+01
-1.1554678526175195e-01
--9.3933505831206432e-01
--2.0878668350677387e+01
-3.1644261673191467e+00
-3.4677192949276954e+00
--2.3073814094687194e+01
-7.6882406288350680e+00
-1.3206124904342259e+01
--5.0763019819668543e+01
-2.0722453780144736e+00
--1.1063622264341091e+00
--2.0592690518394654e+01
-1.2420505555534725e-01
--8.2221311682338827e-01
--2.0853589510220068e+01
-8.9454289801556425e-02
--1.0902014182619606e+00
--2.0872513815887075e+01
-9.2109599944383103e+00
-2.1619764559502414e+01
--5.2653190142864638e+01
-1.3471765895096295e+01
-2.2713785522053577e+01
--5.5856461814886401e+01
-1.2878639971896185e+01
-4.2293346902023181e+00
--2.9273033260772596e+01
-1.6424063017948554e+00
--1.0696515984778230e+00
--2.0521171853086816e+01
-4.5505258987761508e+00
-1.7915737821097192e+01
--5.3336332066950945e+01
-2.4139404567635800e+00
-8.3602803660871206e-01
--2.0417231525096362e+01
-1.0602586010368089e+00
--1.2230738496607149e-01
--2.0352919808768640e+01
-1.0537807596836548e+00
--3.3696180808966941e-01
--2.0302524143369787e+01
-2.3338503782330360e+00
--7.0010616085310717e-01
--2.0447754385917694e+01
--4.5357684073392418e-01
--1.4028430277113899e-01
--2.1126653703666761e+01
--7.7741574788884782e-01
--1.5436954178327000e-01
--2.1433767879003202e+01
-3.4657260888591437e+00
-1.6625427812221439e+01
--5.4267459065268689e+01
-1.2217594885681772e+01
-6.3634069254071735e+00
--2.9849840378886029e+01
--1.6281775499166812e+01
-1.2161130860425370e+01
--3.8082881954625293e+01
--5.2714654304547910e+00
--7.2925951614546705e+00
--2.2500218866281099e+01
--1.4887580637326462e+01
-1.2177848537206634e+01
--3.9415631100726387e+01
--1.6241020094981028e+01
-1.1438473551387050e+01
--3.9196459729528392e+01
--1.0755821803942682e+01
-1.4975528553103645e+01
--3.9860281668526056e+01
--1.1569133258224912e+01
-1.4488562828307538e+01
--3.9833794144943880e+01
--1.1164764827057613e+01
-1.3460130612988104e+01
--4.1898737599725060e+01
--1.4799564429666667e+01
-1.2716342204815238e+01
--3.8756177758914056e+01
--1.5693807491168926e+01
-1.3085572859702195e+01
--3.7598626768156365e+01
--1.3153053873076177e+01
-1.2944703745244125e+01
--4.0267692532305148e+01
--1.2685490734300652e+01
-1.4582316925669394e+01
--3.8343830443086986e+01
--1.3648482585396600e+01
-1.2706023346091859e+01
--4.0084660671339563e+01
--1.4821562827306279e+01
-1.3540581912810882e+01
--3.7648893303576969e+01
--1.2621162946078076e+01
-1.4237577619987906e+01
--3.8773171809243763e+01
--1.3568320609496041e+01
-1.2868279969684632e+01
--3.9770172126916364e+01
--1.4605638191708904e+01
-1.2358588892360890e+01
--3.9513860021573407e+01
--1.5465940763607176e+01
-1.3280757278973054e+01
--3.7227731324372130e+01
--2.9645041367630705e+00
-2.9645903136982290e+00
--2.7351028144358924e+01
--1.2699204776009498e+01
-1.3441487554740725e+01
--3.8854986215733675e+01
--1.0116366597908868e+01
-1.4107396842048257e+01
--4.2086211787765578e+01
-1.0132852109482511e-01
--2.9393240849989750e+00
--2.0148603436691761e+01
--5.2754020594404649e-01
--2.8330358293059699e+00
--2.0401355367757379e+01
-1.6392895412941588e-01
--2.9443932610560153e+00
--2.0136490713040871e+01
--9.4108889948283217e-02
-2.4550715619215966e+00
--2.1744987173619080e+01
--1.5113514739570715e+00
-1.8312788520119265e+00
--2.2717046678258033e+01
-2.1188837496369479e+00
-1.9391318001295136e+01
--4.8385941132088298e+01
-1.5295220196544932e+00
-8.2071655723559345e-01
--2.0292263671506728e+01
--1.3933848707282639e+00
-1.7937497338633300e+01
--4.6569810356910011e+01
-1.2212860553927525e+01
-6.4778662498457820e+00
--2.9643633908279320e+01
--9.3221027128700715e-02
-1.8403209950468398e+01
--4.7562533963813713e+01
--1.5439544094304034e+00
-1.7832255240560727e+01
--4.6070953372477248e+01
-1.3365429542626959e+00
-6.1282759788998176e-01
--2.0439494058326538e+01
-1.2652449391346192e+01
-4.4247615911446765e+00
--3.0606401453112500e+01
--1.0654261664994600e+00
-1.8462661659407516e+01
--4.6580900460391419e+01
-4.8499714453899063e+00
-1.8568013426587818e+01
--5.2627449456835592e+01
-1.2282242161958600e+01
-2.3983398862768713e+01
--5.2970029719063078e+01
--3.8936535834289905e+00
-1.7436672358581486e+01
--4.4374232546556321e+01
-1.4189750097466858e+00
-6.6465398066128070e-02
--2.0238232819780393e+01
-2.0629234670780461e+00
-8.4337164209939774e-01
--2.0312160718578209e+01
-1.3264535216331744e+01
-1.1153884499549482e+01
--3.6799859977304692e+01
-1.2413831988157357e+01
-2.3233173258895029e+01
--5.4266005042200177e+01
-1.7635174543172241e+00
-1.8868427463340656e+00
--2.0714660316808178e+01
-6.6376804370839535e+00
-2.2127463262857201e+01
--4.8454584602940294e+01
-1.6903070320606466e+00
-2.0770382504295647e+01
--4.5657510178754855e+01
-1.3060174061005087e+01
-1.2229091824759962e+01
--3.5503431454087739e+01
-2.1128577062159981e+00
-1.4160407525931848e+00
--2.0394860450600291e+01
-1.3711342103387755e+01
-1.0426131146748835e+01
--3.5351843674485160e+01
--6.5255159702153065e-01
-4.4489534436489381e-01
--2.1267180361104828e+01
-1.3015738373451009e+01
-3.5312745890192989e+00
--3.0199774599691100e+01
-1.6083339504726066e+01
-2.3441898495168537e+01
--5.8163435344457412e+01
--1.8916793818364128e+00
-1.6197202840298370e+01
--4.5358442895844618e+01
--1.1808446363523881e+00
-2.7478119504869514e+00
--2.3063284547707990e+01
-8.2830261207640437e+00
-2.0686127143512806e+01
--5.2993127906546619e+01
-7.2239267710232076e+00
-2.2376012093108393e+01
--4.9416529174175501e+01
--5.2799551794695898e-01
-2.6723175378306407e-01
--2.1163742170969805e+01
-1.1359557582860599e-02
-6.2495774696980011e-01
--2.0771573699160619e+01
-8.3165255109637437e-01
-8.9484952385676525e-02
--2.0362286766267658e+01
-1.8364105537716621e-01
-8.3342962280020694e-01
--2.0717600684879191e+01
-8.0817898835022834e+00
-2.1360086686432830e+01
--5.1952531410324021e+01
-1.3579678340577679e+00
-1.8684379995897480e+01
--4.8406982600175624e+01
-1.2950478659711411e+01
-2.3760714148610127e+01
--5.3711811558258518e+01
-4.6446443931631265e+00
-2.0393329264003452e+01
--4.9525642622783110e+01
-9.8221440171510270e+00
-2.3183310541487153e+01
--5.1642737825743453e+01
-1.2316214207168693e+01
-2.3343672653666669e+01
--5.3621309075430268e+01
-2.6131163467521872e+00
-9.2699250520855991e-01
--2.0365811241946520e+01
-1.8724715944674137e+00
-7.9540614630924633e-01
--2.0216334505583141e+01
-1.2233017753125520e+01
-2.3268149603812784e+01
--5.4444275671850285e+01
-1.6691799382087293e+01
-2.5323290914951254e+01
--5.6093571819062731e+01
-1.7790032255381655e-01
-7.0078961614171575e-01
--2.0646285315253515e+01
-1.5974105213886867e+00
-9.2471637369633064e-01
--2.0288417924540262e+01
-1.8139099498207663e+01
-2.5854993561939736e+01
--5.6545836308224168e+01
-1.3219061973314419e+01
-1.1294631142232275e+01
--3.6504630330334201e+01
-9.6630225425999523e+00
-2.0932735809462883e+01
--5.5049030902396964e+01
-1.0721776241660061e+01
-2.0923799387803530e+01
--5.5481317748320535e+01
--1.1457626906122384e-01
-8.8811252418346684e-02
--2.0795155195437722e+01
-1.2138810166422033e+01
-2.3541225562269158e+01
--5.3438532145399613e+01
-1.4365210488390003e+01
-2.4332218574541379e+01
--5.4608766822275847e+01
-1.8364105537716621e-01
-8.3342962280020694e-01
--2.0717600684879191e+01
-1.3657202805238461e+01
-9.9999150683369749e+00
--3.6413837776974610e+01
--3.5180310923762574e+00
-1.7454997714689590e+01
--4.4556239485850597e+01
-3.2027749765198528e+00
-1.9591923566476787e+01
--4.9086611502690268e+01
-1.6592168020179749e+00
--1.6837630677471579e-01
--2.0154734541425299e+01
--3.7180025088283091e+00
-1.8377309901119506e+01
--4.2880434712214083e+01
-1.7748961744599376e+00
-2.0550615212167433e+01
--4.5922223848483107e+01
--3.0455372177162672e+00
-1.7106789910236383e+01
--4.5748797041009126e+01
--3.5035514780351478e+00
-1.7682169830158649e+01
--4.4458256317972214e+01
-1.2626734170577036e+01
-4.5598503355297160e+00
--3.0583962630196361e+01
-1.3360271082856562e+01
-1.0885122855036675e+01
--3.6394407990597280e+01
--4.3619264411510955e-02
-2.2295447889349420e+00
--2.1537045569232845e+01
-6.5370202788479648e-01
-1.8098384480115858e+01
--4.9148787859699354e+01
-9.0603416677682291e-01
-1.4509319240341918e+00
--2.0617245825255605e+01
-5.5657031507539090e-01
-4.7081511083515037e-01
--2.0472121437404901e+01
--1.8844622060592471e+00
-1.6407886524392016e+01
--4.5542634884489281e+01
-6.3342953770384689e+00
-2.1050491217368791e+01
--5.0608679347726770e+01
-4.8485503664595928e+00
-1.8708353026004136e+01
--5.2242271095875111e+01
--1.5021810008457659e+00
-1.3136872041027745e+00
--2.2407958355095158e+01
--1.6222935841791761e-01
-2.2123134228013357e+00
--2.1584473614175014e+01
--3.9159113456349250e+00
-1.6083267542541002e+01
--4.5942063341724655e+01
--3.7236295344529440e+00
-1.7707485028874459e+01
--4.3980166340165177e+01
--1.0538455370947828e+00
-1.7744415526991332e+01
--4.7247178851168030e+01
--8.8251591109232419e-01
-1.4662241029298635e+00
--2.1717147092159493e+01
-1.1608502743640880e+01
-2.3730450717361602e+01
--5.2353791750356478e+01
-7.6300073551691805e-01
-6.0536270926437974e-01
--2.0409404278430610e+01
--2.6036147537945342e-01
-1.8071940297688631e+01
--4.7689128711943660e+01
--3.9981656427510698e-01
-1.9910673638566885e+00
--2.1645123037312700e+01
-3.2630227535330669e+00
-2.0866573986817752e+01
--4.6700744146307358e+01
-6.4986533040911976e-01
-1.4958871330379156e-01
--2.0419006853449467e+01
--1.2288126734643152e+00
-1.8364061832020091e+01
--4.6017967789331315e+01
-1.2683796642231936e+01
-5.2830497438786148e+00
--2.9031410780016721e+01
-2.8521546299338723e+00
-4.1943561659907175e-01
--2.0361700757077166e+01
-1.7787386189705662e-01
-1.5646000755805314e+00
--2.0931100390442694e+01
-1.2314271371199098e+01
-6.0746537502619624e+00
--2.9730689209976308e+01
-2.7735106031681163e+00
-1.4564824961116165e+00
--2.0598284877726847e+01
-1.2652449391346192e+01
-4.4247615911446765e+00
--3.0606401453112500e+01
-4.0951565383373451e-01
-2.6804085824571050e-01
--2.0665870796920956e+01
-1.2776650556345495e+00
-1.4042740704093339e+00
--2.0438716590528248e+01
-4.1875391895353364e-01
-1.8773211995608460e+01
--4.6265248158975879e+01
-6.7459117718180972e-01
-1.7096074358066833e+01
--5.0051230600861864e+01
-1.3394159243957109e+00
-2.0581755021224417e+01
--4.5343013618808463e+01
-1.1939754452705591e+00
-1.2907718070272540e+00
--2.0448373197523907e+01
-1.8932345495906318e+00
-1.9132966610944969e+01
--4.8019509549208529e+01
--8.5478772809575898e-01
-1.8882490348273699e+01
--4.5426978085448326e+01
-1.3696180495422472e+00
-1.9662633733490662e+01
--4.6979349009612463e+01
-4.1787466687453806e-01
-6.3162741286761548e-01
--2.0554022365982988e+01
-1.3394159243957109e+00
-2.0581755021224417e+01
--4.5343013618808463e+01
-9.3534255446752118e-02
-2.7195516223500382e-01
--2.0637581304653168e+01
-1.3773442366017805e+00
-1.3954830934354681e+00
--2.0351285295074177e+01
-1.5241464854169031e+00
-1.9958210372136769e+01
--4.6519459046539239e+01
-1.1859739625431242e+01
-2.3724723765358437e+01
--5.2466039590599706e+01
-3.9913617745083674e-01
-2.0172630795454540e+00
--2.1023513117442612e+01
-8.1692238268417161e-01
-2.1781982724504800e+00
--2.1099504646342037e+01
-9.1568432496149410e-01
-5.8191291178252991e-01
--2.0338934855039088e+01
-1.3493702496442914e+01
-1.0909394430848192e+01
--3.5524135330990568e+01
--5.4991095705615389e-01
-2.2887477806152896e+00
--2.1965755626577852e+01
-1.3062743779832616e+01
-3.1603029887265794e+00
--3.0560029239026250e+01
-7.9493305342873652e+00
-2.0213873996924768e+01
--5.2951369732391150e+01
-3.2249497859761878e+00
-1.9770823583739173e+01
--4.8800490946093888e+01
--3.2140463460687849e+00
-1.6908957053074072e+01
--4.5715109161108273e+01
-1.2994826882297453e+01
-3.9021671317089712e+00
--2.9659945936566618e+01
-1.8187617222918263e+01
-2.6106116650050730e+01
--5.7355497603229381e+01
-1.2963765286340511e+01
-1.1948407636984070e+01
--3.7149394360261965e+01
-1.4613571808531312e+01
-2.4674742545800733e+01
--5.4554960772568108e+01
--1.0627971828921456e+00
-2.3561453417405978e+00
--2.2501425054956396e+01
-3.3617627781535973e+00
-9.1146429982883526e-01
--2.0698677277232406e+01
--6.4059143627651183e-01
-6.4098515889956453e-01
--2.1374256841171899e+01
--9.1194108390327655e-01
-1.1719285173397120e+00
--2.1665304960731568e+01
-1.1878469651213361e+00
-6.9556071779582318e-01
--2.0318882711963433e+01
-1.5317683178570505e+01
-2.3002912771663365e+01
--5.6786938713737726e+01
--6.3025826326966605e+00
-1.6945667519703523e+01
--4.2081952435603498e+01
--3.7679686612692515e-01
-1.7940133282027251e+01
--4.7955784215035315e+01
--3.1910675058790470e+00
-1.7054830959582837e+01
--4.5524739381532207e+01
--1.1985192362468586e+00
-1.9500660810919449e+01
--4.4045041661371791e+01
--9.4027125764285580e-01
-1.9773185974095636e+01
--4.4197742576349050e+01
-7.8544395308665687e+00
-2.2046282225397686e+01
--5.0743670152472809e+01
-1.6789380935150389e+00
-2.0045590417665647e+01
--4.6851562603133765e+01
--3.6763637558496134e+00
-1.8230186839900430e+01
--4.3369664921023045e+01
-1.1200650174600922e+01
-2.3560911618736167e+01
--5.3219923481468598e+01
--3.6103688246674310e+00
-1.8145404899226687e+01
--4.3584183512391185e+01
--8.5893772455667250e+00
-1.5270282559401442e+01
--4.2180623177655256e+01
-4.1889732607337105e-01
--1.9143510918464115e+00
--2.0420518094431234e+01
-6.3608694044772450e-03
--1.8704534384387734e+00
--2.0637727739069756e+01
--1.7745693564487164e+00
--3.1178239113427613e+00
--2.2028757620014712e+01
--7.6253542938347629e-01
--2.9135861379667780e+00
--2.0697188471297476e+01
--1.9053981406318772e+00
--3.5327303723844317e+00
--2.2466730864396581e+01
--4.9105691867580861e+00
-1.7826764845502012e+01
--4.2353369757813972e+01
-1.0789592042862863e+00
-2.0153005244368124e+01
--4.5755004688004092e+01
-1.4789900886510967e+01
-2.4833230388910870e+01
--5.4577181793970425e+01
-3.8320080323132544e+00
-1.7833875498232896e+01
--5.2725356924413724e+01
--6.8445948060088471e+00
-1.4108067212013117e+01
--4.5735562528199424e+01
-5.6205975665821983e-01
-1.6251076131729303e+00
--2.0804900055844154e+01
--1.0075900392588000e+00
-2.5535594419515140e+00
--2.2633344539978435e+01
-8.5066477109371111e-02
-9.1054274271166413e-01
--2.0769610268338226e+01
-9.0344478234132861e+00
-2.2768350697236595e+01
--5.0511476548913073e+01
-8.2935892201375125e+00
-2.1339479485500313e+01
--5.2189494960116868e+01
-3.9855801926926082e+00
-1.7775506715226328e+01
--5.2799253068477789e+01
-2.1783408879967174e+00
-3.9914374091663150e+00
--2.3588058073486188e+01
-8.5571376553256986e-02
-2.1030157920721653e+00
--2.1329186177372947e+01
-2.1393513041675258e+00
-1.3657351893664433e+00
--2.0406519352602832e+01
-1.0406341194169380e+00
-1.2329328357734346e+00
--2.0509167070198878e+01
-2.8762704219640960e+00
-6.0453027561640937e-01
--2.0352143505917912e+01
-6.4335405733057249e-01
-1.0162599295740535e+00
--2.0509039058599715e+01
--1.7882004269556673e-01
-1.1941531076290202e+00
--2.1014211637689829e+01
-8.6083528164265755e-01
--7.1064505196524896e-01
--2.0491807178028445e+01
-3.4619521428367199e+00
--1.3591283169362218e+00
--2.0618700219163276e+01
-2.2854781101432356e-01
-1.8936101630959957e+01
--4.7195594508298825e+01
-1.8197862515926262e+00
-1.8654957308402913e+01
--4.7997304717464026e+01
--2.9911881580023976e+00
-1.7580524521950739e+01
--4.5235277567836611e+01
-1.3368723184558204e+01
-1.0579752303956232e+01
--3.7019347471725858e+01
-3.7800043133072614e+00
-1.8143695591893909e+01
--5.2067191212885376e+01
-2.0360309039251701e+00
-3.9940945388128752e+00
--2.3753882300136624e+01
-2.8719823184376776e+00
-1.7239262601809684e+00
--2.0754210489826651e+01
-1.9153743682547841e+00
-1.6981262947868809e+00
--2.0540172986108693e+01
--5.4123782155797393e+00
-1.4045253655315895e+01
--4.7980129757236618e+01
-1.2879455557813449e+01
-3.4663664075158223e+00
--3.0631151266031676e+01
--5.7895369390424403e+00
-1.3147831400042799e+01
--4.8119347703240081e+01
-2.9183965502044074e+00
-7.5880985248465715e-01
--2.0446791014248827e+01
-3.0409112722189944e+00
-6.6839096366674644e-01
--2.0472954121382891e+01
-3.2759711629299932e+00
-4.7401919471918641e-01
--2.0555847018519120e+01
-4.5919642229571589e-01
-4.5693801989708627e-01
--2.0529445865898929e+01
-6.0514598143442955e-01
-3.9409186815487784e-01
--2.0472413296170853e+01
--3.2929859259596888e+00
-2.5614653656586808e+00
--2.6746304877530424e+01
-1.3101407891621259e+01
-2.2624954297147376e+01
--5.5126095920390185e+01
-1.3034363239003891e+01
-1.1903195698507638e+01
--3.6270307593718563e+01
-5.0216811694770982e+00
-1.9572590609266015e+01
--4.8735149704944945e+01
-6.9856454570477611e-01
-1.8642737178965991e+01
--4.6359144837645118e+01
-1.4027285385669508e-01
-1.8653357054601333e+01
--4.7308451851144667e+01
-6.7191900478177979e-01
-1.8435858136170580e+01
--4.7303489811463933e+01
-6.7630976810127108e-01
-1.8255285788507713e+01
--4.7669272440588898e+01
--2.5364471871881169e+00
-1.7466966607799744e+01
--4.5596649475013329e+01
-4.0089753283825083e+00
-1.8010050252824232e+01
--5.2321934640474993e+01
-6.9035010932187602e-01
-1.6648847522869300e+01
--5.0891432611805683e+01
--4.7723237264024556e+00
-1.4445044306578087e+01
--4.7902771248468142e+01
--4.4288532821769117e-01
-2.6105039793459608e+00
--2.2181616134461795e+01
-3.1192586217778406e+00
-5.8788435186722587e-01
--2.0499663977212506e+01
-5.4882986522697430e-01
-8.2195233776883503e-01
--2.0548512678579460e+01
-8.2856001753155162e-01
-5.1426196989787321e-01
--2.0385213016720034e+01
--5.6655369527505597e+00
-1.6932341102213559e+01
--4.2749566588492165e+01
-1.2488273488715700e+01
-4.5987824500807513e+00
--3.1252654354394256e+01
--7.9764059031944912e-01
-1.8778466354748802e+00
--2.1970578455104008e+01
-2.0798103602684819e+00
-4.3108996868874416e-01
--2.0217920233456837e+01
--2.6553038804439744e-01
-1.7909957570519164e-01
--2.0978038667091024e+01
--5.7437839723147344e-01
-1.3371718677604932e-01
--2.1267401593821980e+01
--5.5599310771916155e+00
-1.6751766270223612e+01
--4.3212810269586868e+01
-2.1039819323830891e+00
-1.7896439064170384e+00
--2.0601156224477080e+01
--2.3041817344798005e-01
-8.2556990762616678e-01
--2.1177747369786207e+01
-3.5847284065313817e-01
--7.0857336355788425e-01
--2.0842184020710967e+01
-2.1277232761039175e+00
-9.8659016464895688e-01
--2.0412215583780423e+01
-1.8870046097032040e+00
-2.2302593237706991e-01
--2.0121842069512294e+01
-2.6409590991818050e+00
-6.5226468686137151e-01
--2.0659792688209691e+01
-1.2127752392012761e+01
-2.3718850786729980e+01
--5.3166124459759388e+01
-1.2255217209500842e+01
-2.3601640149663613e+01
--5.3294938840858379e+01
-8.0721839815782719e+00
-2.1720331114611383e+01
--4.9952741766643754e+01
-7.5189958338431744e+00
-2.2123973685706481e+01
--4.9748141912365114e+01
-8.6705018714232587e+00
-2.1864031918486379e+01
--5.0191664602205243e+01
-2.0676864740989771e+00
-2.0731030556442338e+01
--4.6159646298358403e+01
-2.6807748936126159e+00
-2.1065557449655131e+01
--4.6659721229229824e+01
--4.7438075457377487e+00
-1.8023184736848265e+01
--4.2301089108271803e+01
-8.6705018714232587e+00
-2.1864031918486379e+01
--5.0191664602205243e+01
-1.2184700444536389e+01
-5.8074104260750419e+00
--3.0305140163469115e+01
--8.8864868499594021e+00
-1.5008862336950145e+01
--4.2251811258943484e+01
--1.2181537348830304e+01
-1.2133528305904022e+01
--4.2494856013087009e+01
--1.0099535602886077e+01
-1.3545208003418853e+01
--4.3088188190485283e+01
--1.6249599827024646e+01
-1.0873895104731192e+01
--4.0005315074989966e+01
--9.6637150159097267e+00
-1.3414549510414110e+01
--4.3542291609739330e+01
--1.1088893413785170e+01
-1.3421308295690562e+01
--4.2163711063435336e+01
--1.5358760030907092e+01
-1.3464860017846634e+01
--3.7197549854587066e+01
--1.2821607836431497e+01
-1.4067737012642949e+01
--3.8943018395153786e+01
--1.2509878577356201e+01
-1.4147104301400155e+01
--3.9178792513768570e+01
--8.5558101149716244e+00
-1.4880839587155394e+01
--4.2601952491264257e+01
--1.6774964521482001e+01
-1.0951111022756871e+01
--3.8876476684861117e+01
--1.6259199264003112e+01
-9.8641114315897553e+00
--4.1065773595289755e+01
--8.7039829719943693e+00
-1.4469272890788989e+01
--4.2829386410174223e+01
--9.2554452041964534e+00
-1.4834050368805121e+01
--4.2027438052650382e+01
--1.4383492939494339e+01
-1.1552282998489149e+01
--4.0307587999723680e+01
--1.3290732589580800e+01
-1.2891003293754530e+01
--4.0198570585358574e+01
--1.6435371429910184e+01
-1.2038878020715476e+01
--3.8512797438514170e+01
--9.9203001804927968e+00
-1.3701123335653531e+01
--4.2926977099318940e+01
--1.1934087971829349e+01
-1.2651059631424967e+01
--4.0910987499536091e+01
--1.0264347053183132e+01
-1.2713210747410040e+01
--4.3921761261321770e+01
--1.2522373289827462e+01
-1.3759769823204016e+01
--4.0365558888372277e+01
--1.1123669377102347e+01
-1.4194931900934838e+01
--4.0807980018337432e+01
-1.3295673931202414e+01
-1.0007531138580935e+01
--3.8800670963793529e+01
--6.9546626919971004e+00
-1.3923140494983027e+01
--4.5781784080690841e+01
--7.4652365129249842e+00
-1.3067414479656598e+01
--4.6585093889592109e+01
--6.5909911066051539e+00
-1.2792798344405389e+01
--4.8221635873796309e+01
-1.3433666933142401e+01
-9.5830098980498217e+00
--3.8909357962790338e+01
--3.7048177797166701e+00
-5.7256477406348250e+00
--4.0406917795576334e+01
-1.2693679039918074e+01
-4.3918267094101573e+00
--3.0424313118687376e+01
--3.1360247746674323e+00
-2.7553121960159861e+00
--2.7056713422381069e+01
-2.3561548656792217e+00
-1.8381970576326352e+00
--2.0713530762362055e+01
-2.8037835429402724e+00
-1.0079199302121620e+00
--2.0465414526359240e+01
-3.1430836973774321e+00
-9.0341808484349151e-01
--2.0556351744479063e+01
-3.2606536544633782e+00
-7.3906275714492287e-01
--2.0603834882872551e+01
-3.2273093859361417e+00
-6.7504136381152680e-01
--2.0550150357311892e+01
-4.1171132564308932e+00
-7.0114731949810560e-01
--2.1058800558467460e+01
-3.1309580611551087e+00
-5.2610035590101589e-01
--2.0464965436843066e+01
-1.3592009333910569e+01
-4.6067265985745665e-01
--3.2514164149238155e+01
-3.2693360507304230e+00
-2.9953490798511750e-01
--2.0539140901224222e+01
-1.6765841040720932e+00
-1.0620021175388704e-01
--2.0216905247445268e+01
-2.9906294890934406e+00
-3.2459658638663812e-02
--2.0425995150050941e+01
-1.4035761594176872e+01
--3.9399742815392508e-01
--3.1316471304500549e+01
-3.6755594961994537e-01
--4.9225401291890025e-01
--2.0609083952175482e+01
-1.4354450657327318e+01
--1.1039740428759135e+00
--3.0294893132801832e+01
-8.5419099938889975e-01
--9.3211114158925079e-01
--2.0546412920499009e+01
-1.4507226553145236e+01
--1.2981954797741437e+00
--2.9549750255143046e+01
-1.5834151967047463e+00
--1.1733019849846329e+00
--2.0557538696909003e+01
-1.6716627367559309e+00
--3.1493555250260226e+00
--1.9899131802771077e+01
-1.8070074443303608e+00
--3.5698119220462803e+00
--2.0394687808609905e+01
-4.9449343780499442e+00
--7.9390974247969588e+00
--2.1691022915015083e+01
--6.8512993209279838e+00
-1.3858742087451770e+01
--4.6032939988919033e+01
--6.8512993209279838e+00
-1.3858742087451770e+01
--4.6032939988919033e+01
-1.3307590412957966e+01
-1.1004297243611449e+01
--3.6591097795071299e+01
--7.0938516247507719e+00
-1.3182785348261614e+01
--4.7146422106504062e+01
-1.3173896445196888e+01
-1.0490083023016537e+01
--3.8761631056935272e+01
--1.3039048518791423e+01
-1.0912188448127500e+01
--4.3256660627858011e+01
-1.3402930232165636e+01
-9.5394826627593208e+00
--3.8314953435368018e+01
-1.3655685554673713e+00
-3.9536305772341054e+00
--2.3546802598987433e+01
--3.2538910241711374e+00
-2.7664373893740497e+00
--2.7019692101015135e+01
-1.2600096405455480e+01
-3.5422968600723004e+00
--3.2513151025540495e+01
--7.8885651007042830e+00
-2.9895377909522547e+00
--3.6760640679961440e+01
-6.4168148971676198e-01
-1.9597716420040072e+00
--2.0961201699875918e+01
-1.2978367157399504e+01
-2.8640458308627026e+00
--3.1753811046754965e+01
-1.2920004232845582e+01
-2.8434371310636157e+00
--3.2234317233323559e+01
-1.3129383434197834e+01
-2.7622515532892282e+00
--3.0878220107573263e+01
-1.3520950567529295e+00
-1.6924308679558975e+00
--2.0601687200255846e+01
-2.6542992118846209e+00
-1.6850890558811453e+00
--2.0702944063413643e+01
-2.8886395679299874e+00
-1.6262171234656657e+00
--2.0751348735128929e+01
--4.8970343645297459e-01
-9.8664419547275206e-01
--2.1168047495927009e+01
-3.3912441277466079e+00
-7.8427953133964123e-01
--2.0673437429612910e+01
-1.4511701972882793e+00
-4.8730386745798798e-01
--2.0228272482056457e+01
-1.3497921805510344e+01
-5.5393384004999691e-01
--3.2845764598431195e+01
-5.2062571522364829e+00
-3.2378570380476429e-01
--2.2147731707182526e+01
-1.3548353215941157e+01
-3.4941843311859244e-01
--3.2835048607845962e+01
-2.6962411062885994e+00
--1.5726103042295689e-01
--2.0302759947449776e+01
-2.1013406276805040e+00
--2.6298744005037017e-01
--2.0223062708681283e+01
--3.2014375777587684e-01
--4.6676521625036593e-01
--2.0971684559364125e+01
-3.2878550657184795e+00
--5.9345145251629228e-01
--2.0534862643088886e+01
--5.7614272317022497e-01
--7.7208931269166636e-01
--2.1285036422437422e+01
-3.5971348743989937e+00
--7.5644082585334071e-01
--2.0797734885422908e+01
-3.4137851237508623e+00
--7.7986686530293226e-01
--2.0709769404852310e+01
-2.9367949877411519e+00
--9.3855050788352890e-01
--2.0638142029950284e+01
-6.7148516291763372e+00
--1.2011062487968907e+00
--2.1981281411415811e+01
-6.2623385990793290e+00
--2.1599132752342500e+00
--2.2253173797284695e+01
-4.2376919348770503e+00
--3.2724206946756427e+00
--2.0966369464175312e+01
-3.5649791379994609e+00
--3.4730468072733496e+00
--2.0739232178176415e+01
-3.5880034772020535e+00
--3.5417623644608147e+00
--2.0834903034018161e+01
-1.2023556120679338e+01
--4.6524920723758161e+00
--2.6022781232319097e+01
-1.1465642711031380e+01
--5.7124777792347556e+00
--2.4462997988831336e+01
--3.2766201845737779e+00
--8.0600565897427856e+00
--2.1492631953865327e+01
--3.3366588731656379e+00
--8.1445603659970480e+00
--2.1447042881277007e+01
--1.8043787171043386e+00
--8.2232849763896070e+00
--2.1163310108186216e+01
-1.7546089825583882e+00
--8.1509978974204191e+00
--2.1171727901032003e+01
--1.8424984271929854e+00
--8.3138618558778195e+00
--2.1077391903177734e+01
-1.3145277890474310e+01
-1.1513804498306326e+01
--3.7042549241258165e+01
-1.3145277890474310e+01
-1.1513804498306326e+01
--3.7042549241258165e+01
--9.4778451400034367e+00
-1.2840652434878166e+01
--4.4642632806121497e+01
-1.3642453935809323e+01
-1.0397747725239666e+01
--3.5482425012865882e+01
-1.3275520564727129e+01
-1.0465963076196072e+01
--3.7994359322644577e+01
-1.3275520564727129e+01
-1.0465963076196072e+01
--3.7994359322644577e+01
--1.2966777747249450e+01
-1.0806006591837281e+01
--4.3531132596133780e+01
-8.4336264897363957e+00
-1.0562360801667277e+01
--4.6998613193829435e+01
-2.5472958757980240e+00
-9.9947730507966490e+00
--4.6166131992531355e+01
-7.3480174210372127e+00
-8.4595803918693449e+00
--4.4163984994489596e+01
-1.2184700444536389e+01
-5.8074104260750419e+00
--3.0305140163469115e+01
--1.9770521549076336e+00
-6.4079362250033967e+00
--4.1329973939002322e+01
--3.9249658886286443e+00
-5.6155414339705922e+00
--4.0430640366360791e+01
-1.2878639971896185e+01
-4.2293346902023181e+00
--2.9273033260772596e+01
--2.3903229452863783e+00
-2.6876723498957591e+00
--2.5862054918327843e+01
--7.2655916698712746e+00
-2.6698214176759523e+00
--3.6228470637809387e+01
-1.0724460288476547e+00
-1.3277900182527949e+00
--2.0484913684186260e+01
-1.3448930530585194e+01
-7.5971515293743330e-01
--3.2724907536050736e+01
-1.3531732086393555e+01
-4.3942209633755758e-01
--3.2634959700024147e+01
-2.7596167857760063e+00
-1.9084661016470902e-01
--2.0329937126546067e+01
-5.0561901107651011e+00
-1.5752499349643964e-01
--2.1899524790594324e+01
-1.3842571188006996e+01
--2.0867148807711927e-01
--3.2070623318626303e+01
-4.1736648661459447e-01
--5.5922257376457396e-01
--2.0597044408149895e+01
-4.4960371279169520e-01
--7.9276323043893404e-01
--2.0656393443955995e+01
--7.0509524424751655e+00
--1.9797828664468049e+00
--2.9874909013439307e+01
--6.9612884121082121e+00
--2.0784180974670452e+00
--2.9798070518001893e+01
--7.2285221152454353e+00
--2.5091401714262824e+00
--2.9158180824699564e+01
--2.1582388421143572e+00
--7.8034565050639086e+00
--2.1813956763599837e+01
--6.7881539769258490e+00
-1.3177380256505158e+01
--4.6948574830339211e+01
-1.3717343982501047e+01
-9.8900256259226502e+00
--3.6115808618492146e+01
-1.3901612103998687e+01
-8.5152859283870246e+00
--3.7610163261319343e+01
-6.7108314465785606e+00
-8.8998980048863832e+00
--4.4886297112655036e+01
-1.2929000070645323e+01
-3.9243963547150242e+00
--2.9853319235566332e+01
-1.2827182429812007e+01
-3.6611155369976633e+00
--3.1004846551498591e+01
-1.2661045455937476e+01
-3.3725203782432165e+00
--3.2784626558579255e+01
-3.9094599062138409e+00
-2.3094205979264744e+00
--2.1610456218740417e+01
--8.0920487043016536e+00
-2.7144865134188843e+00
--3.6389986615778390e+01
--7.3218111943503521e+00
-2.2011011003198333e+00
--3.5630446631308750e+01
-1.3130340820768284e+01
-1.8600608669387011e+00
--3.2684166459857749e+01
-1.3489791630512677e+01
-1.7698307152560855e+00
--3.0372143834390528e+01
-1.4013471533296993e+01
-4.1657493845673477e-01
--2.9588318856199589e+01
-1.4087661299664552e+01
-2.4535192227940142e-01
--2.9383515724832289e+01
-1.4003988051856687e+01
-2.2557313433347739e-01
--2.9885580436638186e+01
-2.8296426411410303e+00
-1.4332643209455270e-01
--2.0357196890050876e+01
-1.4613724516477172e+01
--1.8298491624129190e+00
--2.9622147472671170e+01
-1.8282188698786903e+00
--4.0621266279268013e+00
--2.0952502768663017e+01
--1.6568456435191503e+00
--8.4742428726792820e+00
--2.0873885372476099e+01
--1.2849702274646663e+01
-1.1022732445815670e+01
--4.3465166640314465e+01
-1.3441900926345495e+01
-9.9919151609513470e+00
--3.7612559170321497e+01
--2.1304868507503647e+00
-1.1415069247073598e+01
--4.8015960136301132e+01
-1.3450967306042891e+01
-9.4361557829167815e+00
--3.8858007370852810e+01
-1.3699231644268417e+01
-9.2184955982189329e+00
--3.7874251936897110e+01
-1.3992278809234451e+01
-8.4689370911360875e+00
--3.7188541836781418e+01
-1.4932097650145582e+00
-9.3087521407530360e+00
--4.5356241486163569e+01
-9.2091473499811407e+00
-7.0821857211370594e+00
--4.2214433196287452e+01
-9.2091473499811407e+00
-7.0821857211370594e+00
--4.2214433196287452e+01
-1.2457326052778585e+01
-5.1244965444432289e+00
--3.0489019826124789e+01
-1.0330681362025003e+00
-2.1574444991446629e+00
--2.0924761537729356e+01
-1.3085823155564948e+00
-1.5636513682899755e+00
--2.0538497172899561e+01
-1.3040944662969004e+01
-2.2385643095365992e+00
--3.2120953993635439e+01
-5.2652836727220516e+00
-8.0143151312928307e-01
--2.2281505528068550e+01
-5.1024449753357786e+00
-7.7996058147639513e-01
--2.2009290299294562e+01
-2.5356708980191596e+00
--7.4055703580034393e-01
--2.0480632677947870e+01
-1.1747566512801628e+01
--4.9092665172909813e+00
--2.5666489453389858e+01
-8.3934545619996310e+00
--6.7857870637049746e+00
--2.3185030049916623e+01
-1.3243103036949233e+01
-1.0169617787580087e+01
--3.8904694804373499e+01
-1.3831993731892181e+01
-9.0737428193740151e+00
--3.7052037624927635e+01
-1.4022556912643015e+01
-8.5854857432226090e+00
--3.6839266225310453e+01
-1.5320332163914872e+00
-8.8913626424761887e+00
--4.4691338705677715e+01
-2.0336509899442863e+00
-2.7187218995830813e+00
--2.0482699754748428e+01
-1.2993258778321170e+01
-3.5383146799347291e+00
--3.0482146653286620e+01
-1.4020553289009897e+01
-1.4077441436954957e-01
--3.0324261069034495e+01
-6.5706591282805560e-01
--5.6128562224401923e-01
--2.0547566171472539e+01
-2.6760767903969955e+00
--6.3595406650322295e-01
--2.0445301166738858e+01
-8.0167847016367730e+00
-1.3379074962001502e+01
--5.0702517044674451e+01
-1.2928807836568147e+01
-2.9797630068281480e+00
--3.1701247790414826e+01
-1.1719956319473232e+01
--4.7416868550624702e+00
--2.6087966829805442e+01
--1.6845528446135948e+01
-9.4889000302078976e+00
--4.1086792185657266e+01
--1.1330318800424063e+01
-1.1712764012225513e+01
--4.4040978286720794e+01
--1.5078504531466892e+01
-1.3517615285879952e+01
--3.7410676646477015e+01
--1.4970848120522749e+01
-1.3553952225514424e+01
--3.7450613758846394e+01
--1.5849653489325309e+01
-1.1182711640982815e+01
--3.9170542066629011e+01
-4.4535979312296590e+00
-2.1020786671957513e+01
--4.6983257885336073e+01
-1.7587745905652056e+01
-2.5732188194609993e+01
--5.6265049039469893e+01
-1.1419349779647893e+01
-2.3430312240804419e+01
--5.3438620368363210e+01
-1.3037702586808262e+01
-2.4444937891851463e+01
--5.3461856759954060e+01
-1.1809974198775313e+01
-2.3626737097679250e+01
--5.3080767156582837e+01
-5.7926534215392129e+00
-2.1998011289517461e+01
--4.8329069743966805e+01
-1.4406857561250641e+00
--5.8316397512383142e+00
--2.1627514551568627e+01
-1.2429111721349919e+01
-5.7170921478467456e+00
--2.9505989472217649e+01
-1.3257265987344057e+01
-1.1752052497541767e+01
--3.5635220337593161e+01
-1.4779924220368173e+01
-2.1567861640232927e+01
--5.9472550710992437e+01
-1.6197007024134727e+01
-2.3211417974873999e+01
--5.8729809634229220e+01
-1.3611304996769064e+01
-1.0116438754383223e+01
--3.5337640777368108e+01
-1.3441900926345495e+01
-9.9919151609513470e+00
--3.7612559170321497e+01
-1.3139650949144119e+01
-1.0237156296559439e+01
--3.9280904319832274e+01
-1.2431820770033408e+01
-2.3727618087772722e+01
--5.3057085914458703e+01
-1.3250676002834162e+01
-1.1738036062355892e+01
--3.5338972786631167e+01
-1.3073385578877351e+01
-1.2249119032153372e+01
--3.5804173297746154e+01
-1.2933128774878812e+01
-1.1729819555149730e+01
--3.7431863645336499e+01
-1.2631550651397168e+01
-5.3949679010953071e+00
--2.9233691854473552e+01
-2.3931711257124641e-01
-2.0131378879007947e+01
--4.6106631384661924e+01
--8.3167220226855509e-01
-8.1895105862989459e-01
--2.1465333071954557e+01
--8.8629139842385456e+00
-1.3601183085965904e+01
--4.3979901402449599e+01
--1.0154692249912266e+01
-1.3803704286967713e+01
--4.2399953916164641e+01
--1.7117390597418300e+01
-1.0146376629174108e+01
--3.9870571245128644e+01
--1.5046246251986430e+01
-1.2331392393849910e+01
--3.8985207332472676e+01
--1.3869047792886931e+01
-1.0985200154048254e+01
--4.3296199868253517e+01
-1.4475778169143343e+01
-2.1591080872273807e+01
--5.8903774862159771e+01
-4.5741587646011315e+00
-1.7715944996863591e+01
--5.3595823373517760e+01
-1.4779924220368173e+01
-2.1567861640232927e+01
--5.9472550710992437e+01
--5.2207002429312634e+00
-5.2658307213618150e+00
--3.9732394099503082e+01
-4.1875391895353364e-01
-1.8773211995608460e+01
--4.6265248158975879e+01
--2.5492205748511085e+00
-1.6975776779952916e+01
--4.6032930437065879e+01
-2.0981786382962593e+00
-1.1673301640383020e+00
--2.0368689562952849e+01
-1.5135799141061380e+01
-2.1002370809922233e+01
--6.0621609627865382e+01
--6.9949390875370199e-01
-5.1897797843639820e-03
--2.1225318786929179e+01
--1.4016320326512767e+01
-1.2757437729234917e+01
--3.9456999364571395e+01
--3.4572104331825750e+00
-1.8426004879113130e+01
--4.3264070045989044e+01
--1.2482411127835800e+01
-1.3160044389352162e+01
--4.0909675478962725e+01
--1.4919570179071515e+01
-1.2241273868505543e+01
--3.9241424880185335e+01
--1.3989084590029220e+01
-1.2714971694479679e+01
--4.0199936276591117e+01
-9.5891974771725041e-01
-1.9200069056512145e+01
--4.6975196700910836e+01
--1.8333969694163781e+00
-1.5909497028243374e+01
--4.5736009434332558e+01
--5.9693103456197942e+00
-1.5973675991526227e+01
--4.3957972683356743e+01
-9.2417469080680950e-02
-1.5693259218042156e+01
--5.1731133834686936e+01
-1.6371493377464610e+00
-2.0430975684886192e+01
--4.6047751768278815e+01
-4.9140680867524678e+00
-1.8054703291580633e+01
--5.3702562622895812e+01
-1.0252588648598630e-01
-2.3443363721068318e+00
--2.1505337494032680e+01
--3.8377274603885119e+00
-5.7451170628478643e+00
--4.0467723483008719e+01
-2.2624369904744275e+00
-2.0965127255022903e+01
--4.5880247755698456e+01
--6.4636914921571007e+00
-1.6020526849523463e+01
--4.3000338090928750e+01
--7.9843689887637392e-01
-2.0775512625227481e+00
--2.1978406077262459e+01
-6.9405179532278316e-01
-1.8994144223908904e+01
--4.6110858882850195e+01
--1.3612182832517796e+00
-1.8232261262029720e+01
--4.6130010092688181e+01
--1.8410427685986559e+00
-1.6140952551657932e+01
--4.5380139489817971e+01
--3.2786942771127769e+00
-6.5637787063203863e+00
--4.1608405401666666e+01
-7.0175086390916708e-01
-2.2784482485556441e+00
--2.1204767846104307e+01
-8.4239363487865482e-02
-1.6788534118115785e+00
--2.1060165701759153e+01
-1.2992462324064804e+00
-1.3050328130673792e+00
--2.0449262791110428e+01
-4.7168110523472495e-01
-1.9640611050213970e+01
--4.4872737499916454e+01
-6.3298668130460900e-01
-2.0475116928678481e+00
--2.1053705325775756e+01
--7.2153037183709345e-01
-1.5253556756687343e+00
--2.1590021634986996e+01
-1.0261057948852459e-01
-1.0743201361682564e+00
--2.0823078000910709e+01
-1.1187248004857444e+00
-1.8025076882641786e+00
--2.0694540585088138e+01
--4.5846569355550998e-01
-1.8118110542100025e+00
--2.1632930217188175e+01
-2.0446221968436257e-01
-1.4623661616876868e+00
--2.0893343490028023e+01
-7.4403093173356782e-01
-1.3715836584560250e+00
--2.0594309213931137e+01
--3.7957656010059004e-01
-9.6023721361507142e-01
--2.1153430959455228e+01
-1.8186845774738374e+00
-9.0932348027682308e-01
--2.0239708054843184e+01
-7.6994974271146157e+00
-2.1713128824530106e+01
--5.0916821503240044e+01
-2.9828952076950702e-02
-1.3339240583734007e+00
--2.0928700522782375e+01
--7.3452882564855493e-01
-2.2545815692607292e+00
--2.2086134069988489e+01
-1.0545754500245905e-02
-2.0428599895926207e+00
--2.1268228526396861e+01
-5.6160461167886255e-01
-1.6188998329397555e+00
--2.0526661770299832e+01
-8.3243566888157494e-01
-1.1211096138218215e+00
--2.0538257153482743e+01
-2.5088575548123164e+00
-2.1026337436242130e+01
--4.5914431632099244e+01
-7.2483707842004730e-01
-1.9548283747462534e+01
--4.5880988670126627e+01
-3.2080708835467009e+00
-2.3310373343349013e+00
--2.1369255338814128e+01
--1.6770610117989410e+01
-1.1991202369613879e+01
--3.7746788499110060e+01
--1.5791043721701680e+01
-1.0909032820710612e+01
--4.0372828520762297e+01
--9.4921458837539259e+00
-1.3521670850568212e+01
--4.3352407007850125e+01
--9.2761197002151210e+00
-1.3433680961037547e+01
--4.3757475122719718e+01
--1.2296254895529064e+01
-1.1621341316310401e+01
--4.3189046841714386e+01
-6.8097398749064442e-01
-1.9992893739085677e+01
--4.4930969017202187e+01
-1.4540298090071631e+00
-2.0663623877771169e+01
--4.6228080800089110e+01
-7.4334673631841575e-01
-1.9800180861941019e+01
--4.5203796963339776e+01
--1.5769608789862021e+01
-1.0752561801691545e+01
--4.0383564702064064e+01
--1.1319872396374461e+01
-1.1749818380383497e+01
--4.3644241807576101e+01
--1.2649108991090682e+01
-1.4292210064910297e+01
--3.8216860720287528e+01
--1.5465940763607176e+01
-1.3280757278973054e+01
--3.7227731324372130e+01
--1.5465940763607176e+01
-1.3280757278973054e+01
--3.7227731324372130e+01
--1.4642798712243700e+01
-1.2875314035180757e+01
--3.8424972407915952e+01
--1.2975216028230673e+01
-1.3307810717649103e+01
--3.9924634206788049e+01
--1.6524406901423060e+01
-9.6625350589133863e+00
--4.1821922401183727e+01
--1.5489847438864381e+01
-1.1887964962601497e+01
--3.9264257259844648e+01
--1.4662753717527595e+01
-7.4245078900007053e+00
--4.2881208078295927e+01
--1.4603036697889884e+01
-7.2376624183405625e+00
--4.2653211040707312e+01
--1.3919026044272986e+01
-1.3093688059576596e+01
--3.9409974001757661e+01
--1.3216277989693166e+01
-1.3351087941311270e+01
--3.9763319961750618e+01
--1.4983584209888038e+01
-1.2414818647286875e+01
--3.9043837471260296e+01
--1.6492599753195968e+01
-1.2099529470625185e+01
--3.7878084537913210e+01
--1.1517616763485504e+01
-1.3368383835582136e+01
--4.1467812833228905e+01
-2.4012820888873545e+00
--8.4353686421686858e-01
--2.0479706927182789e+01
--1.1325136038933167e+01
-1.1877677434219358e+01
--4.3572686085128282e+01
--1.5475028471253619e+01
-1.0838222791522002e+01
--4.0760241670062840e+01
--1.4081940092593015e+01
-1.2877809787761629e+01
--3.9361500502557313e+01
--1.6855639943248775e+01
-1.0112417017265983e+01
--4.0202455137119330e+01
--1.6730722929057240e+01
-9.8116144473750921e+00
--4.0867515660584026e+01
--1.1670096233515794e+01
-1.2764297583524145e+01
--4.2241559681802322e+01
--1.3172307914238393e+01
-1.3279388013931998e+01
--4.0184604691425761e+01
--1.4203880483536402e+01
-1.2536146087764001e+01
--3.9789479102902384e+01
--1.1776907259393912e+01
-1.7568654416347984e+00
--3.5000714811951958e+01
--1.6730722929057240e+01
-9.8116144473750921e+00
--4.0867515660584026e+01
--1.5097546265485075e+01
-1.2391251135006909e+01
--3.8868805501780436e+01
--1.6295325929774076e+01
-9.7252640783098254e+00
--4.1309393379071977e+01
--8.1223065200597144e+00
-2.8811608041045496e+00
--3.6544861615425482e+01
--1.2015469867200748e+01
-1.3678886198130879e+01
--4.0348531679344084e+01
--9.2207632546493219e+00
-1.4335240990118498e+01
--4.2817434560314389e+01
--1.6390710439620904e+01
-1.0878560178138159e+01
--4.0106243540727043e+01
--1.6295325929774076e+01
-9.7252640783098254e+00
--4.1309393379071977e+01
--1.4991378266696332e+01
-1.2293183782556369e+01
--3.9164694874183951e+01
--9.3613900270460633e+00
-1.4915816754143130e+01
--4.1679923897671415e+01
--1.1242560663026085e+01
-1.2273422255129958e+01
--4.3392446782333472e+01
--1.4758583783504484e+01
-1.2281539064984790e+01
--3.9442314725131396e+01
--1.0689815990669940e+01
-1.4217278188318643e+01
--4.0951749563863700e+01
--1.6580853455871232e+01
-1.0393032903905027e+01
--4.0100463796705561e+01
--1.2634549730917774e+01
-1.4405523681481545e+01
--3.8617642676812352e+01
-2.9707094942272338e-01
--6.4494085040531712e-01
--2.0702964237631491e+01
-1.3180958668042818e+01
-1.1853713503487297e+01
--3.5310129752890674e+01
-1.3262956585652507e+01
-1.0512426354408845e+01
--3.8395253767261572e+01
-1.3262956585652507e+01
-1.0512426354408845e+01
--3.8395253767261572e+01
-1.3219926575748167e+01
-1.0187450003130373e+01
--3.8320902601776645e+01
-1.3368723184558204e+01
-1.0579752303956232e+01
--3.7019347471725858e+01
-1.2993453886390570e+01
-3.5545348762512186e+00
--2.9867088687664918e+01
-1.9295557953056244e+00
-4.2308413076912396e-02
--2.0192690962116970e+01
-1.3026369032967152e+01
-3.3128348216650778e+00
--3.0574774025031832e+01
-1.3049010125639134e+01
-2.9525939742913287e+00
--3.1014053805353488e+01
-1.3261062303404104e+01
-1.1564767499835703e+01
--3.6036661447410737e+01
-1.3182450274726655e+01
-1.1508196054556707e+01
--3.6741132182982632e+01
-1.3488657280612069e+01
-1.0389656739038951e+01
--3.6721927334505651e+01
-1.2971778544985773e+01
-4.0246118146005285e+00
--2.9536630156164090e+01
-1.6442245071380774e+00
-2.1878853574884818e-01
--2.0119353399663137e+01
--4.5349826873867161e-01
--5.5764934430363688e-01
--2.1171876713488228e+01
-1.2440450400723909e+01
-5.7757015492163690e+00
--2.9943261927991333e+01
--1.0788607162831838e+00
-1.3930890831319895e+00
--2.1870023590236016e+01
-2.3897540009266409e+00
--1.2969150624304907e-01
--2.0213564813018522e+01
-2.1852570997607090e+00
--3.4134722247193883e-01
--2.0267292509841720e+01
--1.0639602406725064e+00
-7.4414910646513910e-01
--2.1751909046264565e+01
--3.8337586645490079e-01
-2.6480607656374777e-01
--2.0996983759763317e+01
--2.6553038804439744e-01
-1.7909957570519164e-01
--2.0978038667091024e+01
--1.1457626906122384e-01
-8.8811252418346684e-02
--2.0795155195437722e+01
-1.7619204853380390e+00
--5.4711483997236243e-01
--2.0383771937093481e+01
-1.7619204853380390e+00
--5.4711483997236243e-01
--2.0383771937093481e+01
--7.4326430966225054e-01
-2.5262807949371835e-01
--2.1281620667928440e+01
-1.6759934200178648e+00
--6.5776795445881941e-01
--2.0235437690239323e+01
--1.5793463975234758e+00
-5.9807543140808861e-01
--2.2335199069028253e+01
-1.3181269220904051e+01
-1.2060891921655543e+01
--3.6150276121919404e+01
--7.8521144620056627e-01
-4.9178335376996446e-01
--2.1366873365446260e+01
--1.2320758459164518e+00
-4.9820581332069513e-01
--2.1879067521276450e+01
-4.0620554290009264e-01
--3.4961712596038513e-01
--2.0576672986811150e+01
-4.0620554290009264e-01
--3.4961712596038513e-01
--2.0576672986811150e+01
-7.8801429396820888e-01
--6.4320347054753646e-01
--2.0480510479463327e+01
-8.6915477121019635e-01
--3.0002650239600104e-01
--2.0369062835316203e+01
--1.0027838169878919e+01
-1.3257237427213202e+01
--4.3355321593955885e+01
--1.2137945707439762e+01
-1.3721729945682998e+01
--4.0021884837141705e+01
--1.4081940092593015e+01
-1.2877809787761629e+01
--3.9361500502557313e+01
--1.3476225235303993e+01
-1.2753636074216251e+01
--4.0145428472922113e+01
--1.0169212853157070e+01
-1.4605985128066040e+01
--4.1309810388774189e+01
--1.6468590630581829e+01
-1.0746953800980666e+01
--3.9619118089659203e+01
--1.0278851570696828e+01
-1.3663140530706327e+01
--4.2440917547453850e+01
--1.4341226742119987e+01
-1.2566585724755589e+01
--3.9542023048316501e+01
--1.6612354363546761e+01
-1.0679511389541014e+01
--3.9689140674196786e+01
--1.1337025279864957e+01
-1.2051427019638469e+01
--4.3428332780719735e+01
--1.3262203375396776e+01
-1.3115780450216732e+01
--3.9763338999344469e+01
--1.6612354363546761e+01
-1.0679511389541014e+01
--3.9689140674196786e+01
--1.6430354880382502e+01
-1.1750022868181647e+01
--3.8454962459740244e+01
--1.6898405729644111e+01
-1.0896292004986517e+01
--3.8988621180173489e+01
--1.2482411127835800e+01
-1.3160044389352162e+01
--4.0909675478962725e+01
--1.2744764011124945e+01
-1.2941210725317516e+01
--4.0663962108965187e+01
--1.3604633861139435e+01
-1.2791160861445357e+01
--4.0022878222410043e+01
--1.2015469867200748e+01
-1.3678886198130879e+01
--4.0348531679344084e+01
--1.1033635747833687e+01
-1.3638537719738370e+01
--4.1705961480229178e+01
--1.6793137205848684e+01
-1.1056509313766419e+01
--3.9314537110076657e+01
--1.3741137367553101e+01
-1.2984424455098708e+01
--3.9717452884448079e+01
--1.1542569336495530e+01
-1.3761532477947476e+01
--4.1174323327990550e+01
--1.6334886596401294e+01
-1.0797274701506320e+01
--4.0153786318510363e+01
--1.5822091069141345e+01
-1.2466555435698794e+01
--3.7954210031386189e+01
--1.5606596409698930e+01
-6.2827279197990302e+00
--4.1113995075634392e+01
--1.5089745705703677e+01
-1.1947773625088558e+01
--3.9250845066294538e+01
--1.1248349819301920e+01
-1.3907172595955975e+01
--4.0746118611105523e+01
--1.6650842179089842e+01
-1.0228849507166363e+01
--4.0254160783962845e+01
--1.6650842179089842e+01
-1.0228849507166363e+01
--4.0254160783962845e+01
--1.6898405729644111e+01
-1.0896292004986517e+01
--3.8988621180173489e+01
--1.4633476103489958e+01
-1.2605026256389323e+01
--3.9128651353861443e+01
--1.1542569336495530e+01
-1.3761532477947476e+01
--4.1174323327990550e+01
--1.6805838389412571e+01
-1.0882577269915947e+01
--3.9161996282885781e+01
--1.5177280571854201e+01
-1.2489961359285067e+01
--3.8478347774216786e+01
--1.0913219415450630e+01
-1.4133256153037106e+01
--4.1123538577565533e+01
--1.3434766622126231e+01
-1.3169128231937895e+01
--3.9597603874704824e+01
--9.7373192621787172e+00
-7.2818140378010243e-01
--3.3546310834039232e+01
--2.3727467820923502e+00
-2.5594376902177296e+00
--2.5623416950559356e+01
-1.0962385020043929e+01
-2.1839193877137973e+01
--5.4743284857650302e+01
-9.8588880925468836e-01
-1.4660344277122026e+00
--2.0656367630605093e+01
-1.6796475532624386e+00
-7.9915742870350437e-01
--2.0271239094797167e+01
-2.3212752811150357e+00
-4.4942863093878083e-01
--2.0252881949192119e+01
-3.3927104322637396e+00
--5.2149344928963060e-01
--2.0660593629386337e+01
-1.7479947696604818e+01
-2.2369069323677010e+01
--6.1399567849624731e+01
--7.2784706866933204e+00
-2.3988629195678954e+00
--3.5818267086229291e+01
--8.1960677242642905e+00
-1.4351896134958362e+00
--3.4315807395251319e+01
--7.1272059002412735e+00
-1.2989690380474492e+01
--4.7570156814676750e+01
-3.9726162897881445e-01
-1.7684538979282550e+01
--4.7542756196364351e+01
--1.3607160901297346e+01
-1.3265993514134991e+01
--3.9366765718353541e+01
--2.4427775717423139e+00
--7.7256887553275657e+00
--2.2078210954414413e+01
-1.1561152304089941e+01
-2.3754526495298855e+01
--5.2071034687077088e+01
--8.9746186770989631e+00
-1.4433945286348010e+01
--4.2864565013603645e+01
--8.5311652999892171e+00
-1.4470840359009403e+01
--4.3409258009065645e+01
-3.0235032497784875e+00
-7.2915248653878786e-02
--2.0399388379164748e+01
-7.6071841912756799e-01
-3.5904124985565794e-01
--2.0400463724744906e+01
-1.9072833026921734e+00
--1.6813361910493034e+00
--2.0166759165900348e+01
-1.3657202805238461e+01
-9.9999150683369749e+00
--3.6413837776974610e+01
-4.5795895531859436e+00
--1.0921752930025066e+00
--2.1033389655643575e+01
-2.5731958017452787e+00
--9.6356844402525876e-01
--2.0550005401004263e+01
--8.7878134544374156e+00
-1.4627927170614605e+01
--4.2658305585159262e+01
--8.7878134544374156e+00
-1.4627927170614605e+01
--4.2658305585159262e+01
--7.2153037183709345e-01
-1.5253556756687343e+00
--2.1590021634986996e+01
-6.3608694044772450e-03
--1.8704534384387734e+00
--2.0637727739069756e+01
-1.7159690342633898e+00
-1.1653466308020590e+00
--2.0334688646562913e+01
-1.7159690342633898e+00
-1.1653466308020590e+00
--2.0334688646562913e+01
-1.3073357622883336e+01
-3.1123292359085033e+00
--3.0820730585990923e+01
-1.3073357622883336e+01
-3.1123292359085033e+00
--3.0820730585990923e+01
--1.3519526563572175e+01
-1.2941232770442033e+01
--3.9793236296443879e+01
--8.6868356582360136e+00
-1.5141167766150796e+01
--4.2120352638718693e+01
-1.6060716743647057e+00
--2.0124806994832700e+00
--2.0241020083827994e+01
--7.9483674823837740e+00
-1.4158582735136038e+01
--4.4188396814478004e+01
--4.9417053036716396e+00
-1.3601150964637753e+01
--4.9001462833658692e+01
-1.3989763860050723e+00
-2.0253818090005819e+01
--4.5742069393073166e+01
--6.7263058732902410e+00
-1.6764880791018332e+01
--4.1921501231668806e+01
-9.8565283098445211e-01
-1.9761685301850520e+01
--4.5962145833585893e+01
--7.2760351184186378e+00
-1.4445039383333437e+01
--4.4610250949426359e+01
-2.7335617455647565e+00
--2.6719727638820473e-01
--2.0410863144134833e+01
-3.3420603518413792e+00
--2.5496787406289467e+00
--2.0210877463808743e+01
-5.9666195573290137e-01
--6.0015945969169171e-01
--2.0535820371678749e+01
-7.4136016079623335e-01
-2.8809956688173349e-02
--2.0378235794799913e+01
--3.1903277217242416e+00
-2.6981061180551973e+00
--2.6968064913544509e+01
-5.2916008068298188e+00
--4.3058439259847486e-01
--2.1852626273273316e+01
-1.4121816060484326e+01
-2.9081340954458323e-01
--2.9169504356958665e+01
-1.6765759318248215e+00
--3.3856400203081702e+00
--2.0228351744894894e+01
-1.2519707346923552e+01
-4.4792813700558254e+00
--3.1297340326596654e+01
-1.4697888931509400e+00
--4.9368953155378245e-02
--2.0225667825216743e+01
-2.3250978393144255e+00
--1.1015310802980438e+00
--2.0559280002264781e+01
-5.6803974710621252e-01
--5.3829580582479652e-01
--2.0539438444227912e+01
-2.0379794082072400e+00
--1.2704270175030163e-01
--2.0295069498970197e+01
--1.3919578199292698e-01
--1.7686602286570879e-01
--2.0806135438659567e+01
-1.4447248945309136e+01
--1.0333840934760288e+00
--2.9856271753035966e+01
-2.3364236206449358e+00
-5.4384534152184888e-02
--2.0319632429158631e+01
--8.1223065200597144e+00
-2.8811608041045496e+00
--3.6544861615425482e+01
--8.6118254354075869e+00
-2.8024583320944800e+00
--3.6385690781770840e+01
--8.6118254354075869e+00
-2.8024583320944800e+00
--3.6385690781770840e+01
--7.9655718752245583e+00
-1.4628397949334209e+01
--4.3480523685199543e+01
--7.8951909867034828e+00
-9.4932664938429365e+00
--4.6062287990622096e+01
--7.3426011184912428e+00
-7.9312253052428296e+00
--4.3570386592060267e+01
--1.0879514781021419e+01
-2.8257959026131139e+00
--3.6394535674692072e+01
--1.1567036867979459e+01
-8.3702127018879686e+00
--4.4230294809726423e+01
--9.5277206963869983e+00
-1.3799881803463355e+01
--4.2831374087756274e+01
--8.1959530246274497e+00
-3.0064821722249087e+00
--3.6608185879839546e+01
--1.4483006854125176e+01
-1.1275594995635240e+01
--4.2766041147024083e+01
--1.5677504647030110e+01
-1.2352709406965410e+01
--3.8359296191590950e+01
--7.2477202481528336e+00
-1.5007817347867555e+01
--4.3969608058542264e+01
--1.5656679748644983e+01
-1.1293105576816524e+01
--3.9305507641639863e+01
--7.6746441866283854e+00
-1.5164496217040272e+01
--4.3144720142778482e+01
--7.5529913862283351e+00
-1.4183390936953442e+01
--4.4616618472305944e+01
--7.3056874020203058e+00
-1.4916206824502376e+01
--4.4012345580861094e+01
--8.6461740153264905e+00
-1.4826485050707401e+01
--4.2822057514845312e+01
--1.4053595215104124e+00
--4.6526933868483766e-01
--2.1697288991327543e+01
--1.0714742367002724e+01
-1.2298173417700468e+01
--4.4054993711320527e+01
--1.2975216028230673e+01
-1.3307810717649103e+01
--3.9924634206788049e+01
--1.0617765248566720e+01
-1.1952769868281937e+01
--4.5271400084453440e+01
--7.2477202481528336e+00
-1.5007817347867555e+01
--4.3969608058542264e+01
--2.2615852784580599e+00
--8.1249907464831406e+00
--2.1373017886073701e+01
--4.9530257794123518e+00
--6.8928587229552010e+00
--2.3129674286672490e+01
--2.9750945271555516e+00
--7.9863657801286312e+00
--2.1597293460027014e+01
--3.7046142137177296e+00
--7.7494886038369852e+00
--2.1853875688731677e+01
--3.1503782014102164e+00
--7.9287171853091509e+00
--2.1682612548661261e+01
-6.4986533040911976e-01
-1.4958871330379156e-01
--2.0419006853449467e+01
--3.0168560960711179e+00
--7.6450847625496667e+00
--2.2046544237436514e+01
--3.3163908992944595e+00
--7.5534508728891101e+00
--2.2092031857613456e+01
--3.3972276847002489e+00
--7.8723351313411545e+00
--2.1691248926786571e+01
--2.3083238902091923e+00
--3.3507229504544611e+00
--2.2750108816639987e+01
-9.4478647061248988e-01
-1.8580880235875499e+00
--2.0754759862075602e+01
--4.0537249870016939e-01
--3.6621064600696829e+00
--2.1357554390424667e+01
--1.0239150988327292e+01
-1.3332827868146891e+01
--4.2770391937860794e+01
--1.1272454485311098e+01
-1.2072954671409367e+01
--4.3495626043114449e+01
--1.1500655194899537e+01
-1.1787179959944751e+01
--4.3782984640378139e+01
--2.2011837559491699e+01
-2.5296582246406922e+00
--3.6070442094334993e+01
--9.3342606794869312e+00
-1.5765397756830966e+01
--4.0402099335160685e+01
--1.3659458107321417e+01
-1.1288802872235557e+01
--4.3093024826228138e+01
--6.7681860285468245e+00
-1.5626075795541862e+01
--4.3635022274325593e+01
--7.9377576654245861e+00
-1.5020157761385752e+01
--4.3071571903942598e+01
--8.6490529767023538e+00
-1.3993530580753484e+01
--4.3796210539938599e+01
--8.1600550762706199e+00
-1.4387179673995130e+01
--4.2570226563176107e+01
--9.5102393719560538e+00
-1.3386543681734961e+01
--4.3571840080143808e+01
--1.6497908788209266e+01
-8.3535772658852316e+00
--4.3342796566048456e+01
--8.0395631286220919e+00
-1.5078781598805312e+01
--4.2843027512397029e+01
--1.4006331085482955e+01
-9.9633450113417723e+00
--4.5222707382840994e+01
--1.0617634411656029e+01
-1.2391416584980089e+01
--4.3829135013864267e+01
--1.2326727183163309e+01
-1.3582103423824766e+01
--4.0370038924395359e+01
--1.6814050241965028e+01
-1.2415565554405791e+01
--3.7030195187670898e+01
--1.0116214825203375e+01
-1.2210809457643787e+01
--4.4609135582873975e+01
-2.0744954960490847e-01
--4.8092480153888306e-01
--2.0636863073259551e+01
--1.6542675809024310e+01
-1.1309511723479959e+01
--4.1067026243971206e+01
--7.1621254247786954e+00
-1.4388086966467972e+01
--4.4804061632296722e+01
--1.2595033289940339e+01
-1.2299388979858561e+01
--4.0927543840013684e+01
--8.4531371456298263e+00
-1.4552150889554639e+01
--4.2952781237649077e+01
-1.4179802301431343e+01
--5.0603619432184541e-02
--3.0099194121578165e+01
--1.0252670760323310e+01
-7.1756710952547076e+00
--4.2511003336160918e+01
--1.2685490734300652e+01
-1.4582316925669394e+01
--3.8343830443086986e+01
--1.2649108991090682e+01
-1.4292210064910297e+01
--3.8216860720287528e+01
--1.2326727183163309e+01
-1.3582103423824766e+01
--4.0370038924395359e+01
--1.2112873866875939e+01
-1.1784741686053376e+01
--4.2968899977825686e+01
--9.8114568763266856e+00
-1.4400290532743064e+01
--4.1940783217189548e+01
--1.0174504851590294e+01
-1.5428300912031988e+01
--3.9794961103823290e+01
--8.6291580153616341e+00
-4.0227236540007443e+00
--3.9134810987482226e+01
--1.0008793054280337e+01
-8.0891192846108932e+00
--4.3656575538089399e+01
--1.4793814775032351e+01
-5.6264166567332836e+00
--4.1040972637711342e+01
--1.3437092697703664e+01
-5.5361857879681162e+00
--4.0399476287916976e+01
--1.4477540108846757e+01
-4.7369668386030526e+00
--3.9307972122158453e+01
--1.2490690257527486e+01
-1.0774543075988740e+01
--4.4180749266425060e+01
--1.3883445827138738e+01
-5.0007837195894886e+00
--3.9617337097152557e+01
--1.3456517348218552e+01
-5.7006232941593495e+00
--4.0617072689123937e+01
--9.5420468998512114e+00
-7.2914582821404563e+00
--4.2755696575200176e+01
--1.3218776033748018e+01
-5.1103806216487992e+00
--3.9756847893634436e+01
--1.2602663160449508e+01
-1.1170156193326342e+01
--4.3535628465380313e+01
--9.9282477546611041e+00
-1.4307475108415550e+01
--4.1608098793364157e+01
--1.4803146655312192e+01
-7.3696319694596513e+00
--4.2798105104436431e+01
--1.0787375246468191e+01
-1.4165957145509518e+01
--4.1211477058655454e+01
--1.0108944068259444e+01
-1.2622307502106326e+01
--4.3932836061705729e+01
--9.8114568763266856e+00
-1.4400290532743064e+01
--4.1940783217189548e+01
--1.2952712732753280e+01
-1.0507931474694644e+01
--4.4092171486950228e+01
-4.4101951484084587e+00
-8.3737291431968464e-01
--2.1321810500387123e+01
-4.2657674360295896e+00
-7.1328700485875973e-01
--2.1180048845264022e+01
-4.7631356399154381e+00
--4.2765419476153879e-02
--2.1549381938421060e+01
-3.0109412415199499e-01
--2.7357015838496133e+00
--1.9977374016645328e+01
-8.7681188814929065e+00
-1.4701816118374758e+01
--5.2538341288065773e+01
-1.3478499939860425e+01
-2.4497540970440759e+00
--2.9487780128376833e+01
--8.3090024195324685e-01
-1.6786426946260289e+00
--2.1814282855792861e+01
--1.0613481209110627e+00
-1.7094833200177677e+00
--2.2099648683017975e+01
-2.9183965502044074e+00
-7.5880985248465715e-01
--2.0446791014248827e+01
-3.0814298641773905e+00
-3.7482868080531817e-01
--2.0451441793785690e+01
-1.3298805934342439e+00
-1.7962553614572918e+00
--2.0662075620458030e+01
-4.5251560756119265e+00
--1.1960906122218680e+00
--2.0920009645104486e+01
-3.7213967177938612e+00
-1.7333585712695651e+01
--5.2400133397276534e+01
--6.0127114922218201e+00
-1.5026056585613459e+01
--4.8053180986421104e+01
--8.2053887242422192e+00
-1.3903816027270757e+01
--4.3650144440581137e+01
--1.3353598485330979e+01
-5.2341926014279245e+00
--3.9927619883466946e+01
--8.8555161147973056e+00
-6.7688175870490381e+00
--4.1941438882863281e+01
-7.3284699129624649e+00
-1.4351643630770834e+01
--5.2162509635124422e+01
-1.0593676745832374e+01
-1.3851652237485069e+01
--5.1479102119813938e+01
-1.0593676745832374e+01
-1.3851652237485069e+01
--5.1479102119813938e+01
-7.9717149305932420e+00
-1.4876218916888881e+01
--5.2938783995612759e+01
-4.2958693675155164e+00
-1.8178918825247738e+01
--5.2734913218500736e+01
-1.0899397914827642e+01
-2.1154704699986176e+01
--5.5393165023302792e+01
-4.0402296404398204e+00
-1.7030259068963151e+01
--5.4347887785629283e+01
-5.2428521946756028e+00
-1.8839252303438297e+01
--5.2355125725476952e+01
-6.9871226698336952e-01
-1.6863054116320345e+01
--5.0579306821201804e+01
--6.9850697025261157e+00
-1.6551439820273981e+01
--4.2131521564546965e+01
--5.5031008776368129e+00
-1.6200987206140383e+01
--4.4386512664842137e+01
--6.8097523008233152e+00
-1.4665385863858988e+01
--4.5073316382452290e+01
--2.6378000069038099e+00
-1.7679881349962052e+01
--4.5317321121293553e+01
--4.5825677494372883e+00
-1.5401848936549294e+01
--4.6446493264921244e+01
-2.8456529167642213e+00
-2.0892105041998381e+01
--4.6692184356934447e+01
-1.5669533510846212e+00
-2.0851734245497184e+01
--4.5235632635368574e+01
-4.7120727922046823e+00
-1.7640923374339270e+01
--5.3886023264530110e+01
-3.4144614093345202e+00
-1.7932502620539179e+01
--5.1891881906051005e+01
--1.0970820861915234e+01
-1.2941625474417892e+01
--4.2689021038115769e+01
--1.1667978000467292e+01
-1.1212066848287490e+01
--4.4265789386058117e+01
--1.7025479649041186e+00
-9.9061925498929568e+00
--4.6071725974172821e+01
--3.1470704210563829e+00
--8.5269253739193673e-01
--2.2252571431529553e+01
--2.9013592594888764e+00
--9.5213662775264607e-01
--2.2137009010580528e+01
--2.9609628426955594e+00
--7.7372006711598447e+00
--2.1923624200328238e+01
-3.6901764980444507e-02
--3.4628745947981848e-01
--2.0749591958001449e+01
-8.0272072932027039e-01
-1.2493584738085042e+00
--2.0533839964206731e+01
-4.2424040793267563e+00
--2.2919312675465622e+00
--2.0538179814658250e+01
--6.6241509822984312e+00
-1.5191159220755843e+01
--4.4588253362257667e+01
--1.6557445205013777e-01
-1.7909635491126245e+01
--4.8059725412402216e+01
-9.9648365981401774e+00
-2.1350788812699797e+01
--5.1870889582896233e+01
-3.1015688678238189e+00
-2.1567242335737817e+00
--2.1173539760762083e+01
-1.8925706561403346e+00
--1.6609168104584696e-01
--2.0238839270081908e+01
-2.9835172518190762e+00
--2.1112955136251121e-01
--2.0421643267093458e+01
-2.4049381855640681e+00
--2.0935468269135837e+00
--2.0330179367767613e+01
-4.1300224490759767e+00
--3.1877524505339769e+00
--2.0795854486800259e+01
-4.1300224490759767e+00
--3.1877524505339769e+00
--2.0795854486800259e+01
-3.0152267566634787e+00
-1.9965602798078619e+00
--2.0971916986890765e+01
-1.6592168020179749e+00
--1.6837630677471579e-01
--2.0154734541425299e+01
-6.8825436190952538e-01
--2.6370888025432893e-01
--2.0433671102227798e+01
-1.5671594826432289e+00
--5.4312915879496371e-01
--2.0350245614359572e+01
-2.4583320802383843e+00
--8.5204011310376671e-01
--2.0428314202297244e+01
-2.1776343669956795e+00
--1.0537957780600860e+00
--2.0392364187961444e+01
--6.4093355358485149e-01
--2.7062864112218890e+00
--2.0389044013305327e+01
-1.5063512585130296e+00
--3.6158538039943364e+00
--2.0447037659422133e+01
-5.5175955150422809e+00
--5.2020067707270821e+00
--2.2475779375270687e+01
-8.4739164947846779e-01
--2.8409771273503930e+00
--1.9690535976144979e+01
-1.6197007024134727e+01
-2.3211417974873999e+01
--5.8729809634229220e+01
-5.6017142229949650e+00
-1.9340055888876524e+01
--5.2467503561999735e+01
--4.3641310547439305e-01
--3.6907581726018166e+00
--2.1328180375650469e+01
--1.2782740904438283e+01
-1.1240366489961447e+01
--4.3807508981459193e+01
-3.6133140784526063e-01
--9.7886568857852796e-01
--2.0729309335196522e+01
-1.4512774505119189e-01
-1.7428726615696349e-01
--2.0630322967243060e+01
-1.9940061299459055e+00
--5.2054896470903067e-01
--2.0182919974224042e+01
--9.6614309252224349e+00
-3.1379118468536684e+00
--3.6859261856906237e+01
--1.2849702274646663e+01
-1.1022732445815670e+01
--4.3465166640314465e+01
--1.2483807921131802e+01
-1.1224788232063476e+01
--4.3789532305801799e+01
--1.2786373208501512e+01
-1.1579297360449431e+01
--4.2535407854684586e+01
--1.2276495110679175e+01
-1.0961151201654246e+01
--4.4209250162693607e+01
--1.2295541236893570e+01
-1.1273091990927700e+01
--4.3709518177157648e+01
--1.0352329779761938e+01
-1.4530309256044184e+01
--4.1037760731281423e+01
--1.5196889098577568e+01
-1.3258825024686463e+01
--3.7577611512413149e+01
--8.4905478347363115e+00
-1.5263486467640481e+01
--4.6630370133036671e+01
--6.0127114922218201e+00
-1.5026056585613459e+01
--4.8053180986421104e+01
-7.5616346462119415e+00
-1.7982457687314803e+01
--5.6782649188817800e+01
-8.6257979403272405e+00
-1.8553343841216439e+01
--5.7326445929398702e+01
-1.3214716945648208e+01
-1.1913493814825415e+01
--3.5749725800685837e+01
-1.0468430425147503e+01
-2.0239827495854851e+01
--5.6927111165864623e+01
-1.4456246714388577e+01
-2.1461047866211178e+01
--5.9177905472975169e+01
-1.8390226927467102e+00
--1.1569006033102054e+00
--2.0525350273826561e+01
-3.4555479030091649e+00
--6.4111676173942267e-01
--2.0693924326207810e+01
-1.8165167807964995e+00
-1.7012811349399253e+00
--2.0554900343998703e+01
-2.0072318031735286e+00
--1.1794939199187628e+00
--2.0594336170852841e+01
-7.3002380955024093e-01
--2.7800067364279157e+00
--1.9864123612774414e+01
-1.3266429564824341e+01
-2.6702279250542444e+00
--3.0604407344616856e+01
-3.1488429377986242e+00
--7.7266162875302336e-01
--2.0591485276021398e+01
-4.9711711877617484e+00
--2.2607384193584257e+00
--2.0577268449781744e+01
-4.1314298298942367e+00
--2.2844973645828985e+00
--2.0531117998376445e+01
--1.3253323272312043e-01
--3.3594080999120308e+00
--2.0766304479584907e+01
-1.2379499278078414e+00
-1.1401554571212442e+00
--2.0421469068059498e+01
-1.3600711169058370e+01
-2.1878814693702222e+00
--2.9156003634288030e+01
-8.6096767218341574e-01
--1.9739358422716797e+00
--2.0329844720742123e+01
-3.0566015295303886e+00
--8.4000086596937840e-01
--2.0574232226880042e+01
-3.1323992307903188e+00
-1.9902132494416470e+01
--4.8978856663301457e+01
-2.0092746381127093e+00
--9.5243487028534590e-01
--2.0376744169515110e+01
-2.8771358958589217e+00
--1.1115574800251136e+00
--2.0689145244330671e+01
-1.3130430536092700e+01
-3.3001561188669455e+00
--3.0052449758507578e+01
-1.4388766684583855e+01
--5.4209601309096023e-01
--2.9354423200034116e+01
-1.9648552235392815e+00
--1.1348896714715140e+00
--2.0540507249618493e+01
-1.5415375512164988e+00
--8.7568078336903621e-01
--2.0419078146925720e+01
-1.4670685671536836e+01
--1.7463062981996362e+00
--2.9650262339333921e+01
-1.3135622670880268e+01
-3.6547330108825618e+00
--2.9142590543682758e+01
-3.1329796926158231e+00
-6.9294611922910565e-01
--2.0475396352453043e+01
-4.3451435315858724e+00
--3.9333424402994970e+00
--2.1780198838358569e+01
-2.4736870096032759e+00
--8.0581905049290725e-01
--2.0454583615203415e+01
-1.3011968661581879e+01
-2.3505472817399056e+01
--5.4330856710676194e+01
-1.3135622670880268e+01
-3.6547330108825618e+00
--2.9142590543682758e+01
-9.9742629411840458e+00
-2.0249886525629570e+01
--5.7329596964999496e+01
-2.5336741749336520e+00
--3.1073748705952289e+00
--1.9931513442697433e+01
-8.1785599006822896e+00
-1.9080726376604023e+01
--5.5952768781845528e+01
-1.5232498152293818e+01
-2.1970167605086484e+01
--5.9224230918037136e+01
-1.4882185979303591e+01
-2.3314087877830733e+01
--5.6517535185142442e+01
-1.5244191294531912e+01
-2.2736226243078107e+01
--5.8183220359596440e+01
-1.4567314128038271e+01
--1.5462512248362130e+00
--2.9703678922826757e+01
-2.3875843131468009e+00
--2.0485360675441608e+00
--2.0286836904925345e+01
-2.1337773819950971e+00
--4.8283203192588081e-01
--2.0288710600941023e+01
-1.5492394791832085e+01
-2.4366658482192950e+01
--5.6964145370809966e+01
-1.3910607935379604e+01
-2.4029471955769836e+01
--5.4791633121728715e+01
-1.5153812980022051e+01
-2.2924718111605621e+01
--5.7826555282619886e+01
-1.4154580689323211e+00
--1.9443315620704535e+00
--2.0203495900206242e+01
-2.5791709831216960e+00
--6.4777174232277113e-01
--2.0406029736728666e+01
-1.3322760352263980e+01
-1.0505998738990444e+01
--3.7792760191196201e+01
-1.2457326052778585e+01
-5.1244965444432289e+00
--3.0489019826124789e+01
-9.1652349208184447e-01
--1.1426189609064732e+00
--2.0611085062678423e+01
-3.7626195029752734e+00
--2.4946622972041244e+00
--2.0271545377030993e+01
-2.7937629989174235e+00
--4.2401321743692705e-01
--2.0409994070452921e+01
-1.3169073333226352e+01
-1.1997611848708789e+01
--3.5696408141615201e+01
-1.4515759778428755e+01
--1.2157935331324206e+00
--2.9603832994022326e+01
-1.3383147056936659e+01
-1.0327287043646152e+01
--3.7650038999825902e+01
-1.1280234605039543e+00
--7.3148969890982396e-01
--2.0421952378374957e+01
-5.0443130091940280e-01
--1.8790540256784987e+00
--2.0371768325429148e+01
-2.9504778630315101e+00
--1.0632112356852439e+00
--2.0659324809608105e+01
-9.1652349208184447e-01
--1.1426189609064732e+00
--2.0611085062678423e+01
-1.4119107738333755e+01
-2.3848794575339326e+01
--5.5313037548792202e+01
-1.2550489486205239e+01
-5.3588256464667179e+00
--2.9517155074261357e+01
-3.0096354692608838e+00
--6.3758198091797313e-01
--2.0523898871946205e+01
-1.3409690734766947e+01
-1.0230814752240025e+01
--3.7663122302007238e+01
-3.4638928808056568e+00
--2.5723866611387360e+00
--2.0134058178781800e+01
-9.6030589175874717e+00
-1.9424833561240501e+01
--5.6937973058668085e+01
-1.3269233032200718e+01
-2.9553119763895843e+00
--2.9637377880478347e+01
-6.7281310318173304e+00
-1.7188888554322425e+01
--3.8773395173206438e+01
--2.1495893980085938e+00
-2.8476801473362761e+00
--2.5968135137730215e+01
--4.1497667251717124e-01
--2.4076136147092209e+00
--2.0363225823283173e+01
--1.7603869088727799e+00
--1.7686113469558966e+00
--2.1132351151777740e+01
-2.6777143884523511e+00
--3.8814539250984450e+00
--2.0802987980732752e+01
-1.2313591089366755e+01
-6.2772623665182588e+00
--2.9072062305838266e+01
--2.3650890579856707e+00
-7.6297444684573890e-01
--2.3276188363167464e+01
--2.1897128914711872e-01
--1.1595643032510337e+00
--2.0830476195047055e+01
-8.9230668115790868e-01
--2.0598487039488189e+00
--2.0343680732511707e+01
--8.2122536649107292e-01
--2.4330559318673775e+00
--2.0267219883093581e+01
-2.5021072956880643e+00
--4.8887131310866945e+00
--2.1863891319221196e+01
-5.9388719764629383e-01
--2.8016190507594487e+00
--1.9897291595370380e+01
--3.3332529463466853e-01
--2.6348727363334246e+00
--2.0120357750011305e+01
--1.7668989952897822e+00
--1.9256654270148195e+00
--2.1059088193397514e+01
--6.5350746773210122e-02
--2.9873676562814118e+00
--2.0360276257997679e+01
--2.8116169733091262e-01
--2.7816302381094284e+00
--2.0195585081970687e+01
--1.9991224035807089e+00
--2.1570544165722194e+00
--2.1391226438407177e+01
-1.3717847610694065e+01
-2.2466332599254777e+01
--5.6648317483390642e+01
-2.2700041323977582e+00
--4.2684638956283925e+00
--2.1073789957231419e+01
-1.3186050025485061e+01
-3.6295677298835827e+00
--2.9034349983134835e+01
-1.2894862262429658e+01
--4.7821412827758101e+00
--2.5711537953314377e+01
--7.8567333649420430e+00
-1.5314601451085355e+01
--4.2747229909901122e+01
--1.1680990492004858e+01
-1.3864996193037449e+01
--4.0661124480689303e+01
--6.4149672688324726e+00
-1.5961504716712989e+01
--4.3265586083979713e+01
--1.0788785281819836e+01
-1.5314053582609729e+01
--3.9316575501054110e+01
--8.8289188139170205e-01
--3.4231094290514641e-01
--2.1483908797987159e+01
--1.0445302402860768e+00
-1.4913323234089646e+00
--2.1907956600219077e+01
--4.5793479699191558e-01
--3.6312142785199470e+00
--2.1296983659805186e+01
--3.2108412280462029e-01
--3.0865983842024853e+00
--2.0642577354198178e+01
--1.2665635109337892e+00
--1.1771300263430435e+00
--2.1255984962422215e+01
--2.6071344491918911e+00
-6.5582615902742544e-02
--2.2980173271766088e+01
--1.8714127943746868e+00
--1.0418095730353267e+00
--2.1784439819836379e+01
--9.4071862502078463e-01
-1.8432758098879692e-01
--2.1490245605951223e+01
--2.0904625901599734e+00
--3.2267067329585855e+00
--2.2562566195895023e+01
--1.3363345227345478e+00
--1.2619107788319943e+00
--2.1260756440367214e+01
--2.8768642357126067e-01
--3.3102427712546931e+00
--2.0797369495618391e+01
--1.2140234489441197e+00
--1.1883505202184494e+00
--2.1194406465100773e+01
--5.9084706525882935e-01
--3.7893655153795689e+00
--2.1534011451175747e+01
--7.8656734123429617e-01
--1.4388807715050806e+00
--2.0863434927569774e+01
--1.6114080199439504e+00
--1.1245829427386331e+00
--2.1583358904368289e+01
-1.2605372794847777e-01
--1.6480706545608628e+00
--2.0444736382979890e+01
-1.4250844495805284e-01
--1.9238852536014750e+00
--2.0544587881544420e+01
--1.1958100530324900e+00
--1.3967195536379364e+00
--2.1282780976165263e+01
--1.1958100530324900e+00
--1.3967195536379364e+00
--2.1282780976165263e+01
-4.4020709503992922e-01
--1.8555644400584079e+00
--2.0389398788840971e+01
--5.4886233705914234e-01
--3.8603393984202623e+00
--2.1550017857959379e+01
-4.0518164532143838e-02
--1.7908709081314509e+00
--2.0591367571298562e+01
--7.4993764205877600e-01
--3.8176993098394325e+00
--2.1671389793261977e+01
--5.9805471472714977e-01
--3.3180355861391368e+00
--2.0991582270688244e+01
--1.9551609651830084e+00
--3.6540894394300762e+00
--2.2619433688214965e+01
-7.2068986613342212e-02
--3.0091004505027028e+00
--2.0254024482987361e+01
-7.3464167526331381e-01
--1.9919315847013588e+00
--2.0365509157639060e+01
--1.5734673590289170e+00
--3.3872783478882584e+00
--2.1770298679691194e+01
-1.1637917633153714e+01
-2.3386892201973630e+01
--5.3313940028688236e+01
--9.8943987897637236e+00
-1.5773226460246105e+01
--3.9791123710098240e+01
--9.6601201049921546e+00
-1.5628700083003061e+01
--4.0187995297470820e+01
--9.8740377961882135e+00
-1.3301846212996704e+01
--4.3398392624366764e+01
--1.6489489606904240e+01
-9.7812163208273937e+00
--4.1995572963186035e+01
--1.0147145385327965e+01
-1.4036003070709242e+01
--4.2443203769368075e+01
--1.3948904700067292e+01
-1.1832611396780552e+01
--4.0307067123403399e+01
--8.8864868499594021e+00
-1.5008862336950145e+01
--4.2251811258943484e+01
--9.4393288992599338e+00
-1.4738728339036122e+01
--4.1617419502548074e+01
--5.7266046724056228e+00
-1.3086753911726106e+01
--4.8696449984047803e+01
--7.8567333649420430e+00
-1.5314601451085355e+01
--4.2747229909901122e+01
--7.1830378587702333e+00
-8.3195404975967548e+00
--4.4120156452290843e+01
--9.6488070139686162e+00
-1.4253503954787970e+01
--4.2362163787232198e+01
--7.4119784164247333e+00
-1.5549633404927549e+01
--4.3050217182331444e+01
--7.4970585409863517e+00
-1.3884909629724977e+01
--4.5266874246353069e+01
--5.9890003777037615e+00
-1.3736565796485808e+01
--4.7341724760278616e+01
--1.0435049784032389e+01
-1.4071681940221568e+01
--4.1774262840564120e+01
--1.1680990492004858e+01
-1.3864996193037449e+01
--4.0661124480689303e+01
--1.4887580637326462e+01
-1.2177848537206634e+01
--3.9415631100726387e+01
--1.2087111719022161e+01
-1.1068383390395882e+01
--4.4161630556002393e+01
--1.0762173857115638e+01
-7.6158429236032585e+00
--4.3090660679649673e+01
--1.9922100474923855e+01
-9.9934161480876638e-01
--3.3856460894032502e+01
--2.1266928604289717e+01
-1.3941049401512677e+00
--3.4873490152535915e+01
--2.1427806787706203e+01
-8.7719314825408146e-01
--3.4154852747481407e+01
--7.0846680799644792e+00
-1.3899308083995049e+01
--4.6190195500834619e+01
--6.4149672688324726e+00
-1.5961504716712989e+01
--4.3265586083979713e+01
--1.1753827704054050e+01
-1.4042629650566935e+01
--4.0075195519994665e+01
--8.0825927367654877e+00
-1.5194869640365672e+01
--4.2813608944677952e+01
--8.6961172892365184e+00
-1.4847284588073100e+01
--4.2094974150066520e+01
--7.1689371119945680e+00
-1.5822281308720710e+01
--4.2891907116860189e+01
--9.2639698243061144e+00
-6.7318946279717791e+00
--4.1815131667869991e+01
--1.4847801662790408e+01
-9.1890454442871476e+00
--4.4286052542164427e+01
--1.0117826875491492e+01
-7.0817850247210385e+00
--4.2436829936827912e+01
--1.0970820861915234e+01
-1.2941625474417892e+01
--4.2689021038115769e+01
--6.2732199124202062e+00
-1.5463288897340336e+01
--4.4295511111432241e+01
--6.2732199124202062e+00
-1.5463288897340336e+01
--4.4295511111432241e+01
--1.0108944068259444e+01
-1.2622307502106326e+01
--4.3932836061705729e+01
--6.8626114415527377e+00
-1.3051663854229703e+01
--4.7617500081408565e+01
--7.3183349167424359e+00
-1.4308422749329155e+01
--4.4839155906778657e+01
--1.0374024630425307e+01
-1.5126951921426137e+01
--3.9985666378863357e+01
--9.3280142509272785e+00
-1.4704838072725392e+01
--4.2136271402423816e+01
--1.0374024630425307e+01
-1.5126951921426137e+01
--3.9985666378863357e+01
--9.4935529980548949e+00
-1.3632528592116758e+01
--4.2833203874035974e+01
--9.5577274053794223e+00
-1.3166591630862287e+01
--4.4233768289091664e+01
--8.4256075659075638e+00
-1.5191442044786989e+01
--4.2246991380311329e+01
--7.6506399590589291e+00
-1.4088809976871179e+01
--4.4922196972402951e+01
--9.7803306556971599e+00
-1.2786863326972423e+01
--4.4751624767341866e+01
--8.4256075659075638e+00
-1.5191442044786989e+01
--4.2246991380311329e+01
--8.4550476150977207e+00
-1.4860755981309879e+01
--4.2572821733396388e+01
--1.0617634411656029e+01
-1.2391416584980089e+01
--4.3829135013864267e+01
--1.2975216028230673e+01
-1.3307810717649103e+01
--3.9924634206788049e+01
--1.1979209347862925e+01
-1.1721401218630948e+01
--4.3279263061420338e+01
--1.2483807921131802e+01
-1.1224788232063476e+01
--4.3789532305801799e+01
--1.2596044121552509e+01
-1.0785114785183426e+01
--4.4135494965925517e+01
--9.6186390437579909e+00
-1.2738854493140749e+01
--4.4810642123866273e+01
--7.6746441866283854e+00
-1.5164496217040272e+01
--4.3144720142778482e+01
--1.2898247286312149e+01
-1.4072081743680862e+01
--3.8851515424109380e+01
--7.6159989917602431e+00
-1.5332556620835774e+01
--4.2864212304302285e+01
--7.5215896148395629e+00
-1.5525287225060119e+01
--4.3000464253671616e+01
--6.4829931224134760e-02
--3.3479013472589139e+00
--2.0677268235774747e+01
--1.8405470345680011e+00
--3.1651567169041694e+00
--2.2177448910158521e+01
--4.3763364709846608e-01
--3.3209094464517750e+00
--2.0993373264573478e+01
--1.7859591717803129e+00
--3.2738192471428214e+00
--2.2245221242920284e+01
--1.3672688601257146e-01
--3.5097542432854509e+00
--2.0878994915864194e+01
--7.0772862682407709e+00
-1.6489480698651661e+01
--4.1854401225748234e+01
--6.8130398343034582e+00
-1.4483328674883749e+01
--4.5399698300948323e+01
--6.2801929224472381e+00
-1.5691246628415973e+01
--4.4291271051397622e+01
--1.7258179297519696e+01
-1.0096323261008889e+01
--3.9914274536474906e+01
--1.2092389175851441e+01
-1.1723676614569490e+01
--4.3105032426072128e+01
--1.3893382705287895e+01
-1.0390753722845769e+01
--4.3775554552628797e+01
--1.3948904700067292e+01
-1.1832611396780552e+01
--4.0307067123403399e+01
--1.2339779489400751e+01
-1.2037481357950206e+01
--4.2392692268237404e+01
--2.4252983858569621e+00
-3.7726718423438610e-01
--2.2815167069851416e+01
-3.5021317364815454e+00
--3.7939593753973683e-01
--2.0653197264490736e+01
-1.7763214359842734e+00
--2.5128223564662795e+00
--2.0211696417493005e+01
-3.6756229379136904e+00
--2.2861012440450668e+00
--2.0490301388911547e+01
-2.6278932153056886e+00
--3.9495463419197558e+00
--2.0891421663495173e+01
--2.5437053979697324e+00
-7.6589256382242765e-01
--2.3296300476813546e+01
--2.4740528405582265e+00
-2.3109141563460778e+00
--2.5269829199608775e+01
-5.3969131660018199e+00
--3.2961211625830322e-01
--2.1979407205554264e+01
-2.8147312821779349e+00
--2.6474676699459656e+00
--2.0105409602748370e+01
-2.5003080671199451e-01
--1.3860190672432242e+00
--2.0548234859590696e+01
--9.1724060948838726e-01
--2.2723816622309814e+00
--2.0478592791009500e+01
--1.6886919474006556e+00
--1.8550079901918841e+00
--2.1067778636903025e+01
--3.8933322745355659e+00
-1.4665705856851352e+00
--2.5392232496365619e+01
--3.9817568151003924e+00
--6.7527672577143552e+00
--2.3267933980638883e+01
-2.6676844515937508e+00
-7.6315180169517460e-01
--2.0358700123260157e+01
-2.1193015065437213e+00
-8.3861748251614951e+00
--4.4047261927953599e+01
-3.0754936493555389e+00
-2.5683164610893239e-01
--2.0461111803748576e+01
--3.5289242865386622e-01
-3.5079079844217058e+00
--2.3221941373012822e+01
-1.3119223332398137e+01
-2.2272774925447036e+00
--3.1906556645173918e+01
--3.3094916650592983e+00
--3.4138827874808481e-01
--2.2963866649206405e+01
-1.9648552235392815e+00
--1.1348896714715140e+00
--2.0540507249618493e+01
-1.4057928639375326e+00
--2.9536319842094847e+00
--1.9672352786544899e+01
-3.5295508596608642e+00
-2.0674850692990190e+00
--2.1216841325138599e+01
-2.5313364947529395e+00
--4.9416847679084768e+00
--2.1875282737740605e+01
-1.6544956588154935e+00
-1.4055441776482616e+00
--2.0428381230527464e+01
-2.3463876878837060e+00
--2.0794233125054511e+00
--2.0322632810073369e+01
-6.6192587122697211e-01
-3.5279626940813515e+00
--2.3029114989315723e+01
-2.1530616878293252e+00
-8.5669319980471403e+00
--4.4334325792142643e+01
--1.9327454759049789e+00
-3.1244436992790874e+00
--2.6385119451282740e+01
-1.3033172051862522e+01
-3.6821144500258991e+00
--2.9722565352813291e+01
--2.0167932297026092e+00
--3.1593610695745360e+00
--2.2404707109015270e+01
--1.3842043965167430e+00
--1.8807637183935173e+00
--2.1000231189587645e+01
-8.4587251405776218e+00
-1.8660624752684971e+01
--5.7756305245369319e+01
--8.7302192052267777e+00
-1.3869817295193089e+01
--4.3827772900760756e+01
--1.0760151480679139e+00
-1.8437394560379019e+01
--4.5833956478636424e+01
--2.4682721198128168e+00
-1.7115716541606623e+01
--4.5892133474391450e+01
-3.7001641926434675e-01
-1.3996090422450647e+00
--2.0670682917127849e+01
--4.2479426225059598e+00
-1.7145176250151248e+01
--4.4372835402349779e+01
-1.9711169616354616e+00
-1.2014477621847923e+00
--2.0354468410122958e+01
-2.7707927493437117e+00
-9.9270448656853372e+00
--4.6134203410183460e+01
--1.3945056739663328e+00
--5.2713698990388205e-03
--2.2086419145554885e+01
-2.2870714963391470e-01
-2.7286398607886539e+00
--2.1763518897858322e+01
--1.2352008856440245e+01
-2.7157418972375709e+00
--3.6435428614030727e+01
--1.0545545175703555e+01
-7.9872499440115907e-01
--3.3711008058497114e+01
-3.4756392196884036e+00
--3.3650994178670004e+00
--2.0553881742636989e+01
--1.0075201036708759e+00
--4.3868180045606753e+00
--2.2340075581975082e+01
-1.2780078088932157e+01
-4.9917498910100910e+00
--2.9143675016914720e+01
--1.1318639317622084e+01
-1.1684321635178312e+00
--3.4238975999081283e+01
--1.1701968226547622e+01
-6.5146790529161536e-01
--3.3625374088800278e+01
--5.7883287527886615e+00
--7.4181939957897098e+00
--2.2474212130533633e+01
-1.3707260026320352e+01
-1.0353076367427864e+01
--3.5097872922032714e+01
-1.2240920604972720e+01
-6.3971644707693196e+00
--2.9694680042452788e+01
-1.4056519828765273e+01
-4.0751825664821562e-01
--2.9379200534258327e+01
-5.9821312554456529e+00
--2.3133126697949447e+00
--2.1994460711937990e+01
-1.9227856106745269e+00
-1.0015098441988478e+01
--4.6266298845823400e+01
--1.5052010499316241e+01
-6.8379209139674586e+00
--4.2040577739239254e+01
-5.7298398715356678e+00
--5.0790566960340549e+00
--2.2645888226045034e+01
--2.4834746540179191e+00
--8.1053317955882900e+00
--2.1425707811379986e+01
-2.6880544945991502e+00
--4.8382377374619662e-01
--2.0373553636914199e+01
--3.5838298689434767e-01
-3.0119831990385872e+00
--2.2481162259992701e+01
-7.9219672715685596e-01
--1.4633744582035404e+00
--2.0506871164266016e+01
--1.6241020094981028e+01
-1.1438473551387050e+01
--3.9196459729528392e+01
--1.3280019729384225e+01
-1.0976844517524986e+01
--4.2795032794090552e+01
-9.0773127464342551e-01
--2.7357481555318213e+00
--1.9902324112394794e+01
--4.4171171270508394e+00
-5.8171273407457917e+00
--4.0572904217028110e+01
-3.5149498553382221e+00
-7.6852215169397486e-01
--2.0686198096306796e+01
--5.1266146820773095e-01
-2.7836303201927790e+00
--2.2383262521355242e+01
-2.4878445734729420e+00
--4.7936836458995309e+00
--2.1737307197707231e+01
-1.2320499672348570e+01
-5.4871293347577534e+00
--3.0798893302253930e+01
--8.3997521615732413e+00
-1.3707264558752231e+01
--4.4142908618411070e+01
--2.1897128914711872e-01
--1.1595643032510337e+00
--2.0830476195047055e+01
-3.9216275673873886e+00
--4.0859846109097848e+00
--2.1655370907613161e+01
-4.4525148307011158e+00
-2.2043078733232973e+00
--2.1965331709492769e+01
--2.0288234006900763e+00
--1.5724754211504395e+00
--2.1421128750644790e+01
--3.1069673996707925e-01
-2.7040392642214375e+00
--2.2102097493949255e+01
-4.5401919624077863e-01
--2.8307208246433437e+00
--1.9824917263824894e+01
-1.0951308577998622e+00
-2.5654919644290891e-01
--2.0344745462452426e+01
-2.2343824623420270e+00
--4.4500206664758917e+00
--2.1305877479489453e+01
--1.4513533476721496e-01
--6.5658644876095282e-02
--2.0907503224545270e+01
--2.2615852784580599e+00
--8.1249907464831406e+00
--2.1373017886073701e+01
-1.9432780814665866e+00
--1.6187291211246062e+00
--2.0254200516990092e+01
--2.6829648022075858e+00
--8.1224042830518997e+00
--2.1457725695299633e+01
--7.4665870766368485e+00
-1.5795219454424986e+01
--4.2394182089643721e+01
--1.4933411616103274e+00
-1.8042460271539632e+01
--4.6064884141612438e+01
--5.2998712634417213e+00
-1.6470969570203398e+01
--4.3915285231884873e+01
--1.7148664917772451e+00
-1.7668042081710375e+01
--4.6560620368531595e+01
--1.2926430123876401e+01
-1.3923296440695539e+01
--3.9150082698615819e+01
-6.1904358149529437e-01
--1.8736479009923082e+00
--2.0390885793663831e+01
--4.2303522374611919e+00
-5.5516993619050572e+00
--4.0153965449716210e+01
--6.8107813284966658e+00
-7.5799942466081749e+00
--4.2950895249602738e+01
--3.5029091361549353e-01
-1.8485462233339295e+01
--4.6601055258457883e+01
-1.9124827469853252e+00
-1.9230107790180949e+01
--4.7831141220300204e+01
--3.2930823140496104e+00
-2.6976798444013586e+00
--2.6901436745178383e+01
--2.1430030446191436e-01
-1.4064406244167289e+00
--2.1094681951736479e+01
-1.2564972706444889e+01
-4.4302652303499750e+00
--3.1261174963133463e+01
-1.3491529295522116e+00
-1.0803151079230677e+00
--2.0310631221488595e+01
-1.3491529295522116e+00
-1.0803151079230677e+00
--2.0310631221488595e+01
-2.3105822549994531e-01
--1.6866272760767054e+00
--2.0343511236788267e+01
--3.7290899200877186e+00
--8.0289925865705509e+00
--2.1566087578204126e+01
--3.7981931330323224e+00
--8.0305479910469213e+00
--2.1538325076904620e+01
--2.5150655133561850e+00
--8.2170739540014583e+00
--2.1246461956503126e+01
-1.0958538237375568e+00
-1.5903270117415531e+00
--2.0578173403125117e+01
-1.2852124075724230e+01
-4.0112313363271346e+00
--3.0159900759113544e+01
-6.9214734469337436e-01
-2.2255719800092870e+00
--2.1198066856126115e+01
-6.1763906288961989e-01
--5.9120782279701185e+00
--2.1324393949053558e+01
--2.1922392001043675e-01
--3.0089016254795437e-01
--2.0906846890979821e+01
-1.0976778362234803e+00
--8.2574138645604933e-01
--2.0471691053460617e+01
--1.3292365613283814e+00
-1.8960325435336682e+00
--2.2493503341356750e+01
--4.2226029639096687e+00
--6.8929711962577196e+00
--2.3192726056586931e+01
--3.1299504059801246e+00
--7.1803573639184815e-01
--2.2431144898048412e+01
-1.7446823227844580e-01
--1.9792157094862801e+00
--2.0620061712391674e+01
--2.7280610437986669e-01
-3.7913640484595890e-01
--2.0945551919224602e+01
-2.6312364516672666e+00
--1.7621874329613247e+00
--2.0260319834127746e+01
--7.2329693604469739e-02
--2.5849936209907103e+00
--2.0061290977076229e+01
-2.1797255455920630e+00
-1.4459319231296128e+00
--2.0439394301149200e+01
--3.3972276847002489e+00
--7.8723351313411545e+00
--2.1691248926786571e+01
-6.1700608833544175e+00
--1.0962605344029264e+00
--2.2089504149753559e+01
--1.1153766528672913e+01
-1.4222635623764292e+01
--4.0617082286823788e+01
--1.8921028083926221e+00
-1.7980558934575694e+01
--4.5589649474477596e+01
-8.0758757704561601e-01
--2.6690376453230469e+00
--1.9999641394437134e+01
--2.4029955357445609e-01
--3.7630681864377492e-02
--2.0845577989348453e+01
-1.4341257993547329e+01
--1.3518688827550414e+00
--3.0593469596368369e+01
-1.2737067539679081e+00
--4.3018553457082342e+00
--2.1162244839608672e+01
-2.6466977231411613e+00
-4.9103198839372553e-01
--2.0270824631024748e+01
--7.4562499617473446e+00
-2.3430280675090969e+00
--3.5830367561047467e+01
--4.5870300168014353e+00
-1.5866811758807623e+01
--4.5774141561177309e+01
--4.9278504558056175e+00
-1.6003110997177519e+01
--4.5119562385016827e+01
--5.2000570403461888e+00
-1.6637087757592528e+01
--4.3798636833861266e+01
--5.9252521337814619e+00
-1.6962618516216917e+01
--4.2432909331408638e+01
--6.7003242961235712e+00
-1.6576084392200002e+01
--4.1925519579868499e+01
--6.4994355602241460e-01
-1.8388765566701789e+01
--4.6497742712646016e+01
--9.8387106574605863e+00
-1.2100983460777291e+01
--4.5321523733210633e+01
--9.7746909417518424e+00
-1.2373936672788981e+01
--4.5193555420411862e+01
--1.0535545701472845e-01
-1.9539653279129492e+01
--4.5144051535007371e+01
--4.9323015665882348e+00
-1.3668914328384670e+01
--4.7982281665064100e+01
-6.0194096550787526e+00
-2.2045789182582414e+01
--4.8816980618352424e+01
-1.7373955176006152e+01
-2.5680544262894607e+01
--5.5944769540605016e+01
--5.0049041818102447e-01
--6.6417924536878259e-01
--2.1141804525033404e+01
--2.3230500044972097e-02
-2.9144575391226204e+00
--2.2120807956391261e+01
-6.3308784456621110e+00
--8.9958164306139410e-01
--2.2315722663759292e+01
--3.2469818139524569e+00
-2.6282184176038537e+00
--2.6886066293306961e+01
--3.0386770025714007e+00
--7.4996535957300248e+00
--2.2251145290570399e+01
-1.4013471533296993e+01
-4.1657493845673477e-01
--2.9588318856199589e+01
--3.9130016998475075e+00
--7.0391227367449956e+00
--2.2879305275321425e+01
--6.4451064751829179e+00
--4.1189463362791452e+00
--2.7136336142642772e+01
-1.1387357750018150e+00
--8.4288582234364622e+00
--2.1145366421285686e+01
-1.5850735727106720e+00
--4.4845602339687503e+00
--2.1404107566630358e+01
-1.3910778530784162e+01
-2.4188541884911100e+01
--5.4870729717111317e+01
-1.2107991728299727e+00
--5.4140843333852917e-01
--2.0360281453534565e+01
-7.9079715210099921e-01
--5.1070626076753953e+00
--2.1528643401730207e+01
-1.3762849602191270e+01
-1.2350135694017876e+00
--2.9812842239839377e+01
-1.2355544602962359e+01
-5.9013384264460198e+00
--3.0055265853397358e+01
-1.3299576678819344e+01
-2.2412862394142441e+00
--3.0794326683180973e+01
--1.4209599732608555e+00
--2.1692712240225558e+00
--2.0663289274757261e+01
--1.7532164915190911e+00
-2.0448350072056587e+00
--2.3370358062669357e+01
-1.2984347613527687e+01
-3.1366154816322234e+00
--3.1306981917976085e+01
-1.3140918328314322e+01
-2.4063282653247802e+00
--3.1682118168997548e+01
-1.2764364958031914e+01
-3.8128513414741509e+00
--3.1313731896717968e+01
-4.5853651722994284e+00
-1.7375958147749024e+01
--5.4462032283285964e+01
--9.4317946207571151e+00
-1.5151656488049349e+01
--4.1023011702931377e+01
-8.7979001879049479e-01
-1.9786729501620947e+01
--4.6368561135051337e+01
--5.7052556366286638e+00
-1.3485478285356244e+01
--4.8675681734758378e+01
-8.7681188814929065e+00
-1.4701816118374758e+01
--5.2538341288065773e+01
-1.5676345074498088e+00
-2.0517926963265211e+01
--4.6021133325679671e+01
-1.0509280119811525e+01
-2.1587456818231715e+01
--5.4692546784771061e+01
--7.2997240522238700e+00
-1.1645714553055975e+00
--3.4278436196315575e+01
--1.0294823148783141e+00
-1.9229203603727768e+01
--4.4942150566526529e+01
--6.0776526080344850e-01
-1.8566109691116331e+01
--4.5960030133880672e+01
-1.0921845119993514e+00
-1.7115093367061540e+01
--5.0956853434469821e+01
--4.6902408068374646e+00
-1.0062206680160420e+01
--4.6470653649264399e+01
-7.4306319747773866e-02
-1.1389551379110570e+01
--4.8105890311142211e+01
-2.8513619526008784e+00
-7.8628069977747517e-01
--2.0380813494738188e+01
--5.2496615835907443e+00
-1.0521001640479993e+01
--4.6959988289204880e+01
-1.2784189091517961e+01
-6.5723656807681090e+00
--4.1520902850869035e+01
--7.5916714548542119e+00
--1.8914582230534396e+00
--2.9984650206120680e+01
-4.6881796688885247e-01
--1.5690051699824543e+00
--2.0304956406302090e+01
--5.7015373479287854e+00
-8.2435465957166834e+00
--4.3942026998923353e+01
-1.5656909700515305e+00
--1.4095085216061527e+00
--2.0549404969275724e+01
-6.4302505160100987e+00
--1.2917749046576716e+00
--2.1866809409817936e+01
--7.6351501210507058e+00
--2.0140801650151690e+00
--2.9845951855448014e+01
--6.5881718095023736e+00
-7.8233936828117709e+00
--4.3370633630885948e+01
-3.5085984621097506e+00
-2.1491592486020288e+00
--2.1311238374514499e+01
--2.6770375015475154e+00
-1.7860487694415074e+01
--4.5434902568811317e+01
--1.4632151407277243e+01
-8.2406280623832693e+00
--4.4001169385472217e+01
--6.8730294239129490e+00
-7.7955981658612918e+00
--4.3137457713450956e+01
--1.2918817326745952e+01
-1.4296846961356595e+01
--3.8792327554322227e+01
--7.6674543949737233e+00
-2.2426793866722381e+00
--3.5598202124251955e+01
--2.6230938848555230e+00
-1.5162114475552713e+00
--2.4259829264963802e+01
--1.5450395349989772e+00
-1.7461492023660053e+01
--4.6779539596591590e+01
--2.1161043850652380e+01
-1.7770404086388276e+00
--3.5298777734730258e+01
--8.8669980772782377e+00
-3.0229624483501789e+00
--3.6713513906493240e+01
--5.6824786619736916e+00
-8.4054378926588509e+00
--4.4094107802385714e+01
-3.5810060861005568e+00
--1.3489041929395440e+00
--2.0654733339576239e+01
--1.1329507070861732e+01
-8.0504073708380375e+00
--4.3586467961225537e+01
--3.7525321645570511e+00
-1.0986034702273054e+01
--4.7564993122481155e+01
-4.6865966544765607e+00
-2.0273420819867560e+00
--2.2281395690832017e+01
--1.5044803312861290e+00
-8.8071631809925517e+00
--4.4627386922948119e+01
-1.4455782646024458e+01
--1.2402562901026006e+00
--2.9712573627305900e+01
-4.8728826824499967e+00
--1.9444479777382409e+00
--2.0946960447824427e+01
-6.4452005859711745e+00
--1.0856165465483064e-01
--2.3260512131310168e+01
-3.5413287032491301e+00
-1.1323579746089116e+01
--4.8122694889816373e+01
--1.1987695646089081e+01
-2.2238537892022912e+00
--3.5734875853964731e+01
-6.5944820001955486e+00
--6.5602911638775685e-01
--2.2650255915687854e+01
-2.8713262031775848e+00
--1.4416704590090896e+00
--2.0474344788168910e+01
-9.0447092519692998e+00
--5.9880714724673645e+00
--2.4308293820000888e+01
-6.4696070144875029e-01
--1.4632244557175234e+00
--2.0474862837010864e+01
-1.3029915984057598e+00
-1.8609084800738926e+00
--2.0732015742432740e+01
-7.8040572618747266e+00
-1.7234924918125998e+01
--5.6073301872452774e+01
-2.4922099031603406e+00
-1.4138153318826949e+00
--2.0539625955232520e+01
--3.1951485426593731e+00
-2.0916847460998644e+00
--2.6140194932336051e+01
-7.6591139464825604e+00
-1.6630756989838456e+01
--5.5174891799952640e+01
-2.3526523228273657e+00
-1.9130780706897659e+00
--2.0746246882681682e+01
-1.1719612076231023e+01
-1.5678949589100254e+01
--5.3930150273695730e+01
--4.9504796087345959e-01
-1.8437519606208390e+00
--2.1573055948067132e+01
--2.3136306299623000e-01
--3.8130163760637239e+00
--2.1331304109212574e+01
--2.5603269710758441e+00
-7.5858542351667713e-01
--2.3282074778934813e+01
--3.8285350033180732e-01
--1.1699512835723860e+00
--2.0826049175848574e+01
--3.4082385495985923e+00
-9.1264758424915300e+00
--4.5080322971832011e+01
--7.3362388763301194e+00
-6.9238144892288096e+00
--4.2130040873692423e+01
-7.1074555780953874e-01
-1.7683066021801848e+00
--2.0779629694676007e+01
-1.1627526970575097e+01
-1.6067105199193410e+01
--5.4780696901049403e+01
--4.3366559845339721e+00
-1.0714577219653652e+01
--4.7103762825468323e+01
--3.9748595359095082e+00
-9.4282067784044052e+00
--4.5505692537150296e+01
-2.9905143343659377e+00
--3.7334189611664779e+00
--2.0619802347783327e+01
--3.5159754473670501e+00
--7.9851210880236687e+00
--2.1590198991971420e+01
-4.4753831297303570e+00
-1.6801096740428652e+00
--2.1664151812959069e+01
-1.6458837171547884e+00
--1.5621243564685308e+00
--2.0343523836377656e+01
--5.0603237164656019e+00
--7.1362165481668898e+00
--2.2761094114859173e+01
-4.9467187601620077e+00
-1.9190984680895982e+00
--2.2374655949484314e+01
--3.3590486440907332e+00
--7.7949518879148370e+00
--2.1916562792014041e+01
--1.4050035245238909e+01
-4.8290187983673638e+00
--3.9382191102284580e+01
-8.9190286480180827e+00
-1.5984046119920110e+01
--5.4231908634006736e+01
--9.2587357736087998e+00
-2.6171614831495473e+00
--3.6259129890359091e+01
-2.3849734098539543e+00
--1.4201470559820903e+00
--2.0499020819765811e+01
--1.0982728183329078e+00
-2.1547746350988430e+00
--2.2396141818636636e+01
-1.3167713262100607e+01
--5.8289141946330201e+00
--2.4017981751450826e+01
--4.6849404769647673e+00
-8.8811317915112191e+00
--4.4686194895730182e+01
--2.6694163722275226e+00
-3.4872703192180765e+00
--2.8011254962650487e+01
--3.1218773282405663e+00
-8.1156828702374728e+00
--4.3719090995533584e+01
--4.4044829668281302e+00
-9.3753037514581656e+00
--4.5393676117871230e+01
-4.8240437525695796e+00
--2.1789624427882730e+00
--2.0686162168900964e+01
--3.1363143833873415e+00
--8.1037495519702016e+00
--2.1871412650843862e+01
--1.4406294625105770e-01
-3.4881039748417626e+00
--2.2992807576063985e+01
-1.7317592006444029e+00
--8.3955907576725970e+00
--2.1302754316197234e+01
-1.8169222695873657e+00
--2.7027017169913394e+00
--1.9969537243241358e+01
-6.1404766520541063e+00
-1.2742307581512142e+00
--2.4053704630496188e+01
-2.1796264633353917e+00
--2.5512683680145090e+00
--2.0200515471727243e+01
--6.5110569825551323e-01
-3.2322107704403753e+00
--2.3105009194999905e+01
--2.4957303818315797e+00
--1.2694769800696861e+00
--2.1829002749525312e+01
-4.0723389274186585e+00
-2.2483882939859061e+00
--2.1755465601358335e+01
--3.5221252234782092e+00
--8.0359419020895864e+00
--2.1561428006160007e+01
-4.6941393256941728e+00
--1.9511157948035625e+00
--2.0966383551058303e+01
-6.4496419168806334e+00
--9.2044986484273128e-01
--2.2284541470641507e+01
--1.3485696553494643e+01
-4.5616412372866018e+00
--3.8995540691466005e+01
--7.5503812083001272e+00
-7.0582597617626881e+00
--4.2519417004512093e+01
--2.7153249614639083e+00
--1.2132420148200509e+00
--2.1863003625940575e+01
--1.2087277459296475e+01
-1.7230084210568992e+00
--3.5071928114988125e+01
-3.3558644796498633e+00
--1.3098859252322187e-01
--2.0585624570976979e+01
-1.8802598757729612e+00
-9.4782190991399862e+00
--4.5413100028911444e+01
--4.4785418880781949e+00
-1.0819223557668360e+01
--4.7251108963770974e+01
-1.2997054071144122e+01
-2.4368602684718743e+00
--3.2480003783405429e+01
--9.2032784555554183e+00
-2.4525890936354187e+00
--3.6016813992783284e+01
-1.3555931990281469e+01
-1.4338175338876054e+01
--5.2165914204780286e+01
--2.1634618215258685e+00
-2.6605122380215857e-01
--2.2681494203363517e+01
--5.4052714020055834e+00
-1.0899114634505393e+01
--4.7672601081923830e+01
--4.8552848760112681e+00
--6.7264463268815229e+00
--2.3340349162640663e+01
--4.6698987115475763e+00
--7.6299408653172422e+00
--2.2068440649921779e+01
--2.2122309351745923e+01
-2.2050564529145840e+00
--3.5852800012630993e+01
--2.1558809470108251e+01
-1.9152535097001828e+00
--3.5445622591624250e+01
--2.2376323299787266e+01
-8.1392893774616240e-02
--3.3028986634136750e+01
--2.1589550973350160e+01
-2.2656948553055405e+00
--3.5698951915637956e+01
-3.8719821153340899e+00
-3.0738881167744081e+00
--2.2424691544621517e+01
-4.3172358085341802e+00
-1.0751143749350922e-01
--2.1110878813318305e+01
--1.5694974228784460e+01
--6.8668539766252259e+00
--2.3107947964545886e+01
--4.5849010777539121e+00
--7.3528393527408804e+00
--2.2494454606752406e+01
--4.0529485912532763e+00
--7.4987952730571985e+00
--2.2144733732148566e+01
--6.6565399995959718e-01
-1.9046004966740778e+01
--4.5840078282613234e+01
-2.9438377800085407e+00
-2.0482231680889772e+01
--4.7123867414162348e+01
--8.5478772809575898e-01
-1.8882490348273699e+01
--4.5426978085448326e+01
--1.3058242412828720e+01
--7.3759620688956105e+00
--2.2399956208305280e+01
--1.3723916101231511e+01
-1.1025190373071867e+01
--4.3101269780122067e+01
--1.3723916101231511e+01
-1.1025190373071867e+01
--4.3101269780122067e+01
--6.2801929224472381e+00
-1.5691246628415973e+01
--4.4291271051397622e+01
-1.1660629301691609e+01
-2.3047859596922411e+01
--5.3725941787245709e+01
-1.6119951618236762e+01
-2.1984960471546700e+01
--6.0467962441589179e+01
-8.8334414656207620e+00
-1.8646684165382130e+01
--5.7546609189865492e+01
-3.4524524764124980e+00
-1.9576753210570942e+01
--4.9713542123799542e+01
-3.5921557660038483e+00
--1.2345650117464195e+00
--2.0790004356828906e+01
-4.0449136112223236e+00
--3.4427345399332792e+00
--2.1035902068163931e+01
-3.5914880859622320e+00
--3.7811457520767369e+00
--2.1013431997378728e+01
--3.8341396552033844e+00
--8.2239043858969261e+00
--2.1294525209197161e+01
--8.8902354129232375e+00
-6.9609064881289324e+00
--4.2227867147419417e+01
--3.1284013493179996e-01
-2.4327675566624491e+00
--2.1844011641242975e+01
--2.3414499484544833e+00
-6.4855080555629208e-01
--2.3139349355764601e+01
-1.3802865263378685e+01
--3.0836074485663811e-01
--3.1987598174170692e+01
--3.4968264199564061e+00
--7.8149456788457350e+00
--2.1473196404382641e+01
-1.2015247090710805e+01
--4.7293992783021972e+00
--2.5870175709639000e+01
--1.8424984271929854e+00
--8.3138618558778195e+00
--2.1077391903177734e+01
-1.3211680387350130e+01
-1.0062910693694388e+01
--3.9407400677688301e+01
--1.6256495929855745e+00
-1.0344065225629218e+00
--2.2467932925052121e+01
-2.4174614117714248e+00
-1.5692713302972303e+00
--2.0583607162366789e+01
-4.7089954568021870e+00
-2.2529553178926864e+00
--2.2359280982955262e+01
--1.0449557974363179e+00
--1.9007550188942806e+00
--2.0950620927567023e+01
-2.8631901395469890e+00
--6.9651297735798101e-01
--2.0475716700595903e+01
-1.4374102978695671e+01
--1.1975762032753197e+00
--3.0366067565431646e+01
-3.9817971629479172e+00
--3.4351216521303529e+00
--2.0990478029755796e+01
--3.9156189203031087e+00
--7.1419031156612229e+00
--2.2681369695106220e+01
-1.2668152504296049e+01
--4.1779829012333192e+00
--2.6612219998040334e+01
-4.7475634812527119e+00
-1.5590068723302009e+00
--2.1914665866808768e+01
-4.5357486249483188e+00
--4.3794994808927452e+00
--2.2339500706151856e+01
-1.2505161953956170e+01
--4.6719851031119992e+00
--2.6123681234233732e+01
-1.0267768118165590e+01
--6.5576528190676564e+00
--2.3087636032264015e+01
-4.4753930467827194e+00
-2.4241511808616880e+00
--2.2278384009077023e+01
-3.7625522919409802e+00
--3.8715217709959120e+00
--2.1267130490765958e+01
--4.0501618922288181e+00
--7.6907008572053606e+00
--2.1929155724510444e+01
-3.3736377689908741e+00
-2.4774379221615579e+00
--2.1496079415777874e+01
-6.8391288795914553e+00
--3.3973199016583427e-01
--2.3149652025541059e+01
-4.2818434002634431e+00
--3.1993112416553222e+00
--2.0928738042118400e+01
-4.2818434002634431e+00
--3.1993112416553222e+00
--2.0928738042118400e+01
-4.3736686113179584e+00
--4.2789952481927100e+00
--2.2049896322366134e+01
-4.4012001185667682e+00
--4.4747700485344151e+00
--2.2257584558844616e+01
-1.2529844524687883e+01
--3.9798961848236467e+00
--2.6870899557015701e+01
-1.3904642608493374e+00
--2.9471629369627972e-01
--2.0306217401494159e+01
-1.3904642608493374e+00
--2.9471629369627972e-01
--2.0306217401494159e+01
-1.6667487875475320e+01
-2.1515913391182384e+01
--6.1611371173791781e+01
--1.3970203140288209e+01
-1.1897789138729948e+01
--3.9950056826122754e+01
-1.3584024956498725e+01
-9.2119247256438150e+00
--3.8571880091296286e+01
-1.3599292899406016e+01
-8.7998080771613676e+00
--3.8503166273219968e+01
-3.4312774549307892e+00
-1.9406669166430788e+01
--5.0657130951575468e+01
--4.7682791054175144e+00
-1.7922656670262818e+01
--4.2437927853512704e+01
-1.0163548829227651e+01
-1.9355303527588003e+01
--5.8033292990936559e+01
-1.3721104351926046e+01
--5.2331466744516781e+00
--2.4841464242073410e+01
-1.2607549718599405e+01
-4.1729403666483149e+00
--3.1556236861406216e+01
-4.2044364762945907e+00
-1.7246497420667982e+01
--5.4054688301457702e+01
-1.4177737423670624e+01
-2.2265730211450798e+01
--5.7445525495719657e+01
-5.4572554600225018e+00
-2.1437005788584788e+01
--4.8762530711673087e+01
--1.2082888602168278e+01
-1.8564023555183258e+00
--3.5335000201374640e+01
--5.1092799237393756e+00
-1.3297359010217789e+01
--4.9312802121451668e+01
-1.1671083868676970e+01
-2.3659591379238051e+01
--5.2114534784743753e+01
-9.5519235320558438e-01
-2.0394389139006865e+01
--4.5336931689000593e+01
--9.9605863240488404e+00
-1.4106054074398873e+01
--4.2441424142617699e+01
--4.2411328275473039e+00
--8.0834388058889157e+00
--2.1582536265311759e+01
-3.7130571697213641e+00
--1.1508033681273777e+00
--2.0984586315317301e+01
--2.6583504737053794e+00
-1.5821589908930175e-01
--2.3080687192294498e+01
--2.7416231441717693e+00
-2.7005314171733040e-02
--2.3230084162287511e+01
--9.3342606794869312e+00
-1.5765397756830966e+01
--4.0402099335160685e+01
--1.0250625735063624e+01
-1.1930661379101183e+01
--4.5132990036035167e+01
-1.3355020548893146e+01
-1.5585862291260235e+00
--3.1775360806624001e+01
-1.3408053827645354e+01
-1.4213654407475020e+00
--3.1595274363314214e+01
-1.3182696938612215e+01
-3.3433960607092237e+00
--2.9020844386023651e+01
-2.7249470837442202e+00
--1.8888193538614750e+00
--2.0226702468824829e+01
-1.3640952862160255e+01
-1.0487067470963711e+00
--3.0975968216169754e+01
-1.3782827305005952e+01
-3.5412719475245902e-01
--3.1513954034969494e+01
--8.3619306545704060e+00
-1.3921534441191309e+01
--4.4366581690373991e+01
-1.4557060386016998e+01
--1.4270001922180471e+00
--3.0179127711563130e+01
-1.4423751953265411e+01
--7.3113671173845673e-01
--2.8965136037263253e+01
--7.1578904607400293e+00
-1.4492365583008091e+01
--4.4550633977887422e+01
--1.1164764827057613e+01
-1.3460130612988104e+01
--4.1898737599725060e+01
--2.4693250563654768e+01
-1.6213846158134494e+01
--5.0130525408046957e+01
--9.3478711929229750e+00
-1.2712716317072502e+01
--4.5265738201847235e+01
--4.5825677494372883e+00
-1.5401848936549294e+01
--4.6446493264921244e+01
-6.2343308065739740e-02
-1.7494734400108463e+01
--4.9202737243742142e+01
-4.2185304932516077e-01
--1.2098694096096068e+00
--2.0767157468418986e+01
--5.9493848032176802e+00
-1.5586696827921008e+01
--4.4547484614214831e+01
-1.5527581343564789e+01
-2.2074757024448079e+01
--5.9725250268341263e+01
-7.1229427464305761e+00
-2.1457382293309081e+01
--5.1330431832123665e+01
-1.5527581343564789e+01
-2.2074757024448079e+01
--5.9725250268341263e+01
-1.5055960671051904e+01
-2.2459737321802272e+01
--5.8420567575684970e+01
--6.6565399995959718e-01
-1.9046004966740778e+01
--4.5840078282613234e+01
--4.4149003550681707e+00
-1.6440126164823127e+01
--4.5299134128519505e+01
-8.6851868789073521e+00
-1.5083750195285845e+01
--5.3089996974895321e+01
-1.4919955165168304e+01
-2.1452739867902284e+01
--5.9717394955280412e+01
--1.9660930566546608e+00
--1.8332220152291967e+00
--2.1052247157150319e+01
--2.5394634537039793e+00
-2.1975839191407647e+00
--2.5213376494951024e+01
--5.1956315495743102e+00
-1.1208884385262625e+01
--4.8002148480161566e+01
-3.6388381325372494e+00
-1.1550507862684924e+01
--4.8414956182666153e+01
-9.1145679929424972e+00
-1.5764795032194979e+01
--5.4144626162504323e+01
--1.6114080199439504e+00
--1.1245829427386331e+00
--2.1583358904368289e+01
-9.9588646236862264e+00
-2.0432919827479584e+01
--5.6572259475989974e+01
--1.3119719618881345e-01
--3.2242753849254363e-01
--2.0903713153297769e+01
--5.1830319522351926e+00
-1.1585790636294584e+01
--4.8486271458954604e+01
-2.4184353045458313e+00
--7.3598078674014888e-01
--2.0429457986956063e+01
--1.0687565005240376e+00
--5.6892947073326694e-01
--2.1565865325057135e+01
-1.4953246454858871e+00
--1.0133922875701373e+00
--2.0500815756422700e+01
--1.3166973854001565e+00
--7.1171621863096490e-01
--2.1397074534691292e+01
-1.9874241831310635e+00
-1.5581764252762089e+00
--2.0465494404056436e+01
-4.1662856821995753e+00
--4.1190332512683510e+00
--2.1824540663520150e+01
-1.3936082858835515e+01
-8.6979524506881212e-01
--2.8966868551457257e+01
--3.1903277217242416e+00
-2.6981061180551973e+00
--2.6968064913544509e+01
-1.3473112309992382e+01
-1.4892667078123532e+00
--3.1140442222968574e+01
-1.2764364958031914e+01
-3.8128513414741509e+00
--3.1313731896717968e+01
-1.2842509602022096e+01
-3.0421404411841313e+00
--3.2355784559757957e+01
-1.8029356981836264e+00
--1.0988812893159516e+00
--2.0538310687046486e+01
-3.1181325348085136e+00
-2.9809460650737484e-02
--2.0443891911802098e+01
-2.2264069250454273e+00
--8.3849288266742372e-01
--2.0430099699254477e+01
-4.1625530825567756e+00
--1.2589038055861386e+00
--2.0879748098237918e+01
-3.9522058539658569e+00
--1.0263245023887551e+00
--2.1100796691937120e+01
--1.5961499598969053e+00
--1.8404199128035497e+00
--2.1065254240358922e+01
-6.5150260301017511e+00
--1.0280123988705903e+00
--2.2154856813404859e+01
-2.5604228844661425e+00
--1.6097328242074727e+00
--2.0291504704707126e+01
-2.9160888067473287e+00
--1.3669221619687648e+00
--2.0598173501245547e+01
-1.2774355624798819e+00
--1.4994331075852529e+00
--2.0445774017269024e+01
--3.3540822239366994e+00
--4.1146701544810743e-01
--2.2772530725374963e+01
-2.9577822388720199e-02
--3.3020302672038175e+00
--2.0632222060484001e+01
--9.3761583917071301e-01
--5.8401258266222822e-01
--2.1469471559042891e+01
-2.9571325298931721e+00
--1.2180692084225611e+00
--2.0749428042464281e+01
-1.2494193825758472e+01
-4.6721504095975410e+00
--3.0972865365980489e+01
-2.5416260114119287e+00
--2.6001790523123671e+00
--2.0119505985637922e+01
--1.9303868822084922e+00
--1.3690470243517550e+00
--2.1759724646079704e+01
-1.7357235687539434e+00
--1.6599810975522447e+00
--2.0202641561005045e+01
-1.6574829077404625e+00
--3.5090416595864737e+00
--2.0335004488783692e+01
-4.1097145948549043e+00
--2.1200979704714906e+00
--2.0737440250647452e+01
-1.4953246454858871e+00
--1.0133922875701373e+00
--2.0500815756422700e+01
--2.1115585000608472e-01
--8.5902464162555492e-01
--2.0888489719012902e+01
--1.4489317320360995e+00
--3.5029005311719497e-01
--2.1665527464341761e+01
--4.5770193651562707e-02
--5.8612662473963273e-01
--2.0876738526720192e+01
-5.5122971919263133e+00
--5.1168217404238119e+00
--2.2530900477114500e+01
-2.0743780616549745e-01
--1.4505753489220414e+00
--2.0492152998561295e+01
--1.3638000872854157e+00
--2.7368607701329639e-01
--2.1920612141237420e+01
--3.9505138141895851e-02
-4.0869657538242077e-01
--2.0538461876322408e+01
-1.2311052456829577e+01
-5.8832512633535616e+00
--3.0106858978743301e+01
-2.5722417269611983e+00
-5.4244465939029973e-01
--2.0266322590803409e+01
--1.1339859707800186e+00
-9.7097207933564453e-02
--2.1738419663559203e+01
--1.5319628257546769e-01
-7.0426561296425461e-01
--2.0877127455983043e+01
-2.8294688679646942e+00
--1.7420406082313877e-01
--2.0357155737399328e+01
-1.2352415989330199e+01
-5.8497940388075005e+00
--2.9795616211542914e+01
-1.2999717081855593e+01
-4.0062414100111603e+00
--2.9296585795921487e+01
-1.4032743549466822e+01
-6.5512308062350211e-01
--2.9258716419682379e+01
-1.4252544437280873e+01
--2.9854581670583619e-01
--2.9443191904462335e+01
-8.5589616684697845e+00
-1.4562234562340937e+01
--5.2394968941309507e+01
-2.2165544192791855e+00
--7.9549032676000442e+00
--2.1636538289643639e+01
--1.1115913988962978e+00
--2.5350556442574348e+00
--2.0105808870925163e+01
-4.1975770003017008e+00
--1.8403928633364097e+00
--2.0972869466447374e+01
--9.3001722419118893e-01
--4.7161939037956035e-01
--2.1594308284723112e+01
-3.1097643280900642e+00
--2.6209669156044670e+00
--2.0015475564311235e+01
--1.5606575823412103e+00
-5.4529682613389169e-02
--2.2458481487809344e+01
-3.2086041838742037e+00
-1.8717971342305577e+00
--2.1001304810515183e+01
-2.4638339196641073e+00
-1.7476355570411402e+00
--2.0638572839326070e+01
-2.0529433066406666e+00
-1.8460109392221946e+00
--2.0681525930300417e+01
--3.1069673996707925e-01
-2.7040392642214375e+00
--2.2102097493949255e+01
-9.1363967504357451e+00
-1.9284673329600018e+01
--5.6790321156766709e+01
-2.7848869801533938e+00
-1.9744728884341065e+01
--4.9255339139783075e+01
-1.3305094641360125e+01
-9.3053517564977462e-01
--3.3079930081879098e+01
-1.3424483735177995e+01
-7.3887347156703420e-01
--3.2976862134911336e+01
--1.3988962752604264e+01
--7.5007115541953624e+00
--2.2155019522384123e+01
--4.9566832813151205e+00
-1.3503466273706094e+01
--4.9373057797910164e+01
--4.8148975204379205e+00
-1.0719873058299791e+01
--4.6882452577726824e+01
--2.8039828235310353e+00
--1.0880995556658524e+00
--2.1991851940352401e+01
--3.7490808565147749e+00
-1.1285931533629553e+01
--4.8003071822085460e+01
-2.5161681490083563e+00
-1.5829601910247510e+01
--5.3969966676142370e+01
-6.6746773936595449e+00
--3.4435399384586857e-01
--2.3058691764241640e+01
-1.3122298781718955e+01
--5.8977781418884483e+00
--2.4016637361716814e+01
-1.6834139677521214e+00
-1.4625784724597699e+00
--2.0493465077010963e+01
-2.7615921086595159e+00
--2.5572802131247796e+00
--2.0188818970001414e+01
--3.0595690839149992e-01
--1.4252303309610692e+00
--2.0556122508501307e+01
-1.4777101105508779e+01
-2.1203948078696268e+01
--6.0530500620548082e+01
-2.6882836903739882e-01
--1.4784575563182103e+00
--2.0437006997942852e+01
-1.4014329034587050e+01
-8.2904727114187438e+00
--3.7112900709863275e+01
-2.2678128738843770e+00
-1.3207016202561472e+00
--2.0382477538928907e+01
--4.8856401167747903e+00
-1.3188302493097295e+01
--4.9628813311815144e+01
--6.5075699243562104e+00
-1.6020994600085974e+01
--4.2445116861345625e+01
--1.7340189004310469e+00
-1.7722101721763689e+01
--4.6261655476656323e+01
-1.9360671668146806e-01
--1.2348892778902063e+00
--2.0781823832560065e+01
-3.9100263860950548e+00
--4.2716405180797672e+00
--2.1787854622675781e+01
--4.6909453254807216e+00
-1.3051623210076817e+01
--4.8000605362282499e+01
-2.9045039508713782e-01
--1.0210575936582526e-01
--2.0598739745168960e+01
--1.6940969904152754e+00
--3.8151259928341874e-01
--2.1776503288010918e+01
-2.5498820315401476e+00
--3.1757167998885798e+00
--2.0092756693698927e+01
-2.3916784158895057e+00
-6.1319060990741192e-01
--2.0278840320993865e+01
--5.4905959309592758e+00
-1.4053603318990396e+01
--4.7759925016927021e+01
-1.0456997208053169e+01
-2.0581836210915920e+01
--5.6366150959729246e+01
-4.8444184618974448e+00
--9.1114257238575735e-01
--2.1218265395298364e+01
--3.8058340813899201e+00
-1.4713721995877858e+01
--4.8344322779941997e+01
--5.9252521337814619e+00
-1.6962618516216917e+01
--4.2432909331408638e+01
--6.9850697025261157e+00
-1.6551439820273981e+01
--4.2131521564546965e+01
--8.7013860774402796e-01
-8.5371303542752486e-01
--2.1504343566957758e+01
-5.3946397879271997e+00
-1.9233124159319097e+01
--5.2073052691993155e+01
--1.4852218673218731e+00
-1.7949616022782855e+01
--4.4422158746005735e+01
-9.1145679929424972e+00
-1.5764795032194979e+01
--5.4144626162504323e+01
--6.7263058732902410e+00
-1.6764880791018332e+01
--4.1921501231668806e+01
-4.1904916343969374e+00
--4.1628351405945798e+00
--2.1813533481908490e+01
-1.3331858669072206e+01
--5.6791370081326082e+00
--2.4179529032871741e+01
-5.7433831713420052e+00
-1.9440764197909250e+01
--5.2444253354035418e+01
-3.2803208887918704e+00
-3.3969307612574262e+00
--2.2924216560263314e+01
-1.3731652184599962e+01
-9.1174022211664187e+00
--3.7742589415501151e+01
-4.0268918502925271e+00
--2.2881407411163912e+00
--2.0507116877953813e+01
-7.0744471545164844e-01
--1.7829663663856310e+00
--2.0276875979190457e+01
-3.0096354692608838e+00
--6.3758198091797313e-01
--2.0523898871946205e+01
--9.8029668250344337e-01
--9.3634875630259140e-01
--2.1115011881009078e+01
-6.2378932071970556e+00
-9.5811179664924717e-01
--2.3696818469082185e+01
--1.5374501939508312e+00
--1.7255368989103788e+00
--2.1229420680164701e+01
-4.8409862881608001e+00
--6.7401299137721293e-01
--2.1540730264148010e+01
-8.0825897624032645e+00
-1.8950954553345781e+01
--5.6132250736139980e+01
-5.7522525163227989e-01
-1.8331293790534311e+01
--4.7854588153552790e+01
--6.2629247604507059e+00
-1.5087560356564419e+01
--4.4603195306474007e+01
--5.3773483454999349e+00
-1.3583242221868860e+01
--4.7835282242265556e+01
-4.5229986074260431e+00
--3.5004015541784606e+00
--2.1428703378705162e+01
--3.0044461016621722e+00
-8.3042344341422112e+00
--4.4122970568801534e+01
-1.3135637798101932e+01
-9.8408004875296431e+00
--3.9617302345602035e+01
--4.0117381549440925e+00
-7.1802011944596176e+00
--4.2485300635188167e+01
--6.0522070178430443e-01
--1.3204964124712555e+00
--2.0630053317173704e+01
--4.9378035351149213e-01
--7.6012150791482980e-01
--2.1234438737151436e+01
--7.6059530483466267e+00
-1.5642393782332258e+01
--4.2281312191895772e+01
-2.0617125953060365e+00
--1.3723843009828542e+00
--2.0566117070714704e+01
--1.2394503335000973e+01
-1.0849576951844680e+01
--4.4063625934237635e+01
--1.3420614397897262e+01
-1.2141651101638423e+01
--4.0094011505843589e+01
-2.1838033344219823e+00
--1.5084080226905083e+00
--2.0421240249824077e+01
-4.6397990198302361e+00
--1.1254799045884545e+00
--2.0996875204611474e+01
-4.8975443808722110e+00
--2.1099558505243796e+00
--2.0765774775666191e+01
--2.1800037265028753e+00
--1.7180250913920174e+00
--2.1192387623594080e+01
-9.9493110056196805e+00
-1.1762280763391079e+01
--4.8745177648622935e+01
--3.2818671591099298e+00
-1.7532941844272123e+01
--4.4488575452274006e+01
-5.7777659836939943e+00
-2.3573534078817707e-01
--2.2721376129213006e+01
-1.0296855668858974e+01
-2.0440677775193656e+01
--5.6417626756763127e+01
--3.2073934745801758e+00
-3.4985210850782117e-01
--2.4035985378784670e+01
-4.8939479641915806e+00
-1.9107689389270281e+01
--5.1614927378017725e+01
--1.2288126734643152e+00
-1.8364061832020091e+01
--4.6017967789331315e+01
-4.0672977599588593e+00
-1.8257918920518719e+01
--5.2216526988067038e+01
--1.4680004304875709e+00
--1.6631297256201081e+00
--2.1290414462326570e+01
--1.4091102098130777e+00
--1.3844546113094267e+00
--2.1477140820726003e+01
-9.7237931467933656e+00
-8.1302592051094358e+00
--4.3611233100814154e+01
--1.4882212953204748e+00
--1.4749716500283330e+00
--2.1490341120992355e+01
--1.4134166080442964e-01
-1.7804845516872951e+00
--2.1280387796235342e+01
-4.7556414481128169e+00
--2.2151190005846209e+00
--2.0628415328640365e+01
--8.2417123320516552e+00
-1.4346716789473151e+01
--4.3426509359288787e+01
--1.3940512115614034e+00
-1.8243342392275718e+01
--4.5546751754199434e+01
--7.3056874020203058e+00
-1.4916206824502376e+01
--4.4012345580861094e+01
--8.6769959568503250e+00
-1.2072556129474382e+01
--4.7191386308426388e+01
-1.3797837169921005e+01
-8.8248886313762931e+00
--3.8004045718311858e+01
--8.7751162701701642e+00
-1.1920482152023057e+01
--4.7407104373514152e+01
--7.1852276910493602e+00
-1.6150545946373942e+01
--4.2060224810492535e+01
--9.5474281552552114e+00
-1.2493260604203334e+01
--4.4866486775331879e+01
-7.0430734561909381e+00
-4.0198548728924793e-01
--2.4044793775136608e+01
--7.1242621532142874e+00
-1.6371956700816572e+01
--4.1682067278752641e+01
-1.3359610871663707e+01
-1.0553583202508195e+01
--3.7082188783387885e+01
-1.3204385459377074e+01
-1.6385209670289924e+00
--3.2399292905074503e+01
-1.3424483735177995e+01
-7.3887347156703420e-01
--3.2976862134911336e+01
-1.9663429674338493e+00
-7.7981913222021959e-01
--2.0239081305483293e+01
-2.3375386043054505e+00
-4.2528207710698429e-01
--2.0251904280213253e+01
-3.6205961681892997e+00
--2.4909385400249628e+00
--2.0256293314429186e+01
-8.0829865860991357e-01
--8.3658104348728024e+00
--2.1043222128475584e+01
-1.2244684509077921e+01
--4.6336390969163634e+00
--2.5929487494587818e+01
--2.4852498740263314e+00
--8.1546615543355969e+00
--2.1329858651835934e+01
-1.3613318188727382e+01
-1.8526176076026084e+00
--2.9367846280647203e+01
--2.1561115849670882e+00
--1.4889547640601355e+00
--2.1495430595095051e+01
-1.3891945194623400e+01
-4.3404883285181900e-01
--3.0732957912405528e+01
--1.4091102098130777e+00
--1.3844546113094267e+00
--2.1477140820726003e+01
-1.3886759660356029e+01
-5.2743405341296346e-01
--3.0122235862593453e+01
--5.6861949862274574e-01
--7.2040352699958099e-01
--2.1254979334031788e+01
--1.1793256471128828e+00
-1.1868586368079122e-01
--2.1790197812253858e+01
-1.3456373764438464e+01
-1.8440456435641126e+00
--3.0493207531767901e+01
--2.7712048956443218e+00
--7.5068363789352226e+00
--2.2211096251944632e+01
--1.5506779570330900e-01
-6.0736015919246611e-01
--2.0933611118631880e+01
-2.6567870069426025e-01
--8.7515393452189716e-01
--2.0769595241593940e+01
-1.2052368121684194e+00
--1.0659282491157218e+00
--2.0555378178303307e+01
-1.1540908617158385e+00
--1.1661835405849861e+00
--2.0612993314274650e+01
-1.0739434913175845e+00
--1.2026199112380607e+00
--2.0626383103674911e+01
--6.0522070178430443e-01
--1.3204964124712555e+00
--2.0630053317173704e+01
-1.3688039155998815e+01
-9.9619703661080894e-01
--3.0576159977352699e+01
-1.4449697096461199e+01
--1.0320307046606680e+00
--2.9654234635630367e+01
-1.4504039326497619e+01
--1.5165163411502305e+00
--3.0158180761016869e+01
-1.4298569793990387e+01
--8.5780277186575216e-01
--3.0054114428705152e+01
--2.1013658805101443e+00
--7.8470508724112795e+00
--2.1785762910976356e+01
-1.1439460942806440e+01
--4.1131133374629778e+00
--2.6793988254186765e+01
-4.8546551575837144e-01
-1.2684292475342105e+00
--2.0710427681526269e+01
--4.3666546132329884e+00
--6.7323436264842913e+00
--2.3297398329478028e+01
--1.4040527558804451e+01
-4.3576539517833179e+00
--3.8649207217932407e+01
-1.8542278151736649e+00
--1.7483326389707023e+00
--2.0127174135281976e+01
-2.3393226935702343e+00
--2.5744664225121450e+00
--2.0144093293592562e+01
-6.9597605494378039e+00
--3.3057085250674842e-02
--2.3437694175845301e+01
-5.7031678191214787e+00
--9.4791583666900336e-01
--2.2075250970361218e+01
-5.1835027774659155e+00
--2.1165315684904580e+00
--2.0764861294381262e+01
-4.5819920525811950e+00
--2.6409206611179519e+00
--2.0544230264205332e+01
-1.5880886411436255e+00
--2.9751625980136094e+00
--1.9811992463532743e+01
--3.8191588260968756e+00
--7.2882437731569336e+00
--2.2586408865598585e+01
--3.2413049858617882e+00
--7.9701350727547355e+00
--2.1581196333233077e+01
--3.3828618755137700e+00
--8.0687526318811198e+00
--2.1510178754365043e+01
-3.4091973208403283e+00
-3.0042864689410669e+00
--2.2266201387823841e+01
-1.3090694132589773e+01
-2.4292064114567440e+00
--3.1923290952874446e+01
-4.3160954660141284e+00
-1.2000324321463678e+00
--2.1333171947461182e+01
-2.7023592347025414e+00
--2.4938228706771466e+00
--2.0205293950666150e+01
--1.7593455710944861e+00
--1.2893623400237914e-01
--2.2128983088888504e+01
--2.8484241574318387e+00
-4.2798240686122029e-02
--2.3416193527282800e+01
--1.2396318933140078e+00
--4.6393356152750215e-01
--2.1789083281789317e+01
--7.0377375464256364e-01
--1.0944037609150095e+00
--2.0952780301361443e+01
--7.4379070639215850e-01
--2.0047087108404273e+00
--2.0919799956460100e+01
-3.1981144758280871e+00
--2.7324650336676135e+00
--2.0051538111931134e+01
-5.5035593502925275e+00
--2.0741175822631486e-01
--2.2136510256416866e+01
-5.7168634405931167e+00
--1.1533362521312811e+00
--2.2023886375372768e+01
-3.6967585065420190e+00
--1.3000598520126077e+00
--2.0688771336610930e+01
-3.0966295677473390e+00
--1.2892568955341377e+00
--2.0569209047912150e+01
-1.2136027843822504e+01
--5.8674388977377108e+00
--2.4345891608210952e+01
-5.1004347563147761e+00
--4.1992033776814064e-01
--2.1918853336034573e+01
-6.4027627592761043e+00
--7.2457756607805557e-01
--2.2668178132688588e+01
-5.5134712941712962e+00
--1.7884805738273648e+00
--2.1167945387668201e+01
-4.9411665926718866e+00
--1.9375394061027156e+00
--2.0964616420756936e+01
-4.9411665926718866e+00
--1.9375394061027156e+00
--2.0964616420756936e+01
-4.5392195878995800e-01
--1.4104957274065693e+00
--2.0566691120493644e+01
-4.5189226865456389e+00
--3.1217496101322313e+00
--2.1036411099366656e+01
-2.4335505811536207e+00
--4.9242558206277547e+00
--2.1922490012672466e+01
-5.5143392366827939e+00
--1.2707202891064766e+00
--2.1740209335316049e+01
--8.1418720141020515e-02
--2.5816117500623612e+00
--2.0062199735684512e+01
--1.7911658938979977e+00
--4.3106581911511075e+00
--2.3110446817656392e+01
-3.2489691387011872e+00
--3.5066886120033609e+00
--2.0387769635482172e+01
--2.1944007476189120e+00
-1.8247301048981117e+00
--2.4360619525497700e+01
-1.2903817090593472e+00
-1.8876575718487276e-01
--2.0172978394010634e+01
--3.1074720225884306e-01
-1.7726701293898923e+01
--4.7789876098818823e+01
--5.4918332953809976e+00
-5.8410675154757685e+00
--4.0532945053334466e+01
--2.4155686509392447e+00
-1.7542261921449389e+00
--2.4562701725927685e+01
--2.8223767958214223e+00
--1.3935104774718252e+00
--2.1620198816605608e+01
--7.3651443597479005e-01
-2.4495915787592057e+00
--2.2218875142846446e+01
--2.3739116603733543e+00
-2.1641673988625589e+00
--2.5081618877729653e+01
-5.1899140904691432e-01
-1.6682488305487460e+01
--5.0441603000722971e+01
-1.3085823155564948e+00
-1.5636513682899755e+00
--2.0538497172899561e+01
--1.5850013647954722e-01
-3.0231960429074305e+00
--2.2266781094095542e+01
-3.5038996553362400e-01
-1.8910373356530130e+00
--2.1025870586304549e+01
--7.5861528156444846e+00
--1.6918040081232233e+00
--3.0395842835570651e+01
--1.2112873866875939e+01
-1.1784741686053376e+01
--4.2968899977825686e+01
--1.1464033369579829e+01
-1.4013216531773940e+01
--3.9827210024810064e+01
-2.2571804004341347e+00
-1.4186536037479782e+00
--2.0442045936663490e+01
-3.2530938842934329e+00
-1.8166841423066304e+00
--2.0917824571296908e+01
-1.3441594809301216e-01
-1.2796016165165505e+00
--2.0843223975646513e+01
-1.0025059171938702e+01
-2.0141268476591137e+01
--5.6645353443505243e+01
-2.0102863225114795e+00
-9.2246210815823071e-01
--2.0266476021547060e+01
--5.1835569401808246e-01
--1.2225312973389770e+00
--2.0752399514073836e+01
-1.5730922600108062e+01
-2.2528649093408973e+01
--5.9113683536546397e+01
--4.2322817684438005e-02
--2.5145982578370605e+00
--2.0169988818288360e+01
-4.4535979312296590e+00
-2.1020786671957513e+01
--4.6983257885336073e+01
--3.0536927435729377e+00
-1.7340669519696867e+01
--4.5324636971110145e+01
--3.6689746516679231e+00
-1.7135175560201752e+01
--4.5039426683517803e+01
--6.0129283143041667e-02
--1.0545659792011741e-01
--2.0772806691927531e+01
-6.5675434699573998e+00
-9.8018826330425082e+00
--4.5993118602194123e+01
-8.1256118144377290e+00
-1.0143054959769550e+01
--4.6371756267051992e+01
-7.1201142708181049e+00
-1.0050326770359687e+01
--4.6342270244179282e+01
-3.8781560796149521e+00
--3.3272495555912336e+00
--2.0789622771417765e+01
-4.7631356399154381e+00
--4.2765419476153879e-02
--2.1549381938421060e+01
--8.4354102234174402e+00
-2.9577461958302842e+00
--3.6683104987504954e+01
--2.4369608391423410e+00
-4.7652740009149386e-01
--2.2913955343558843e+01
--1.1457845830610095e+01
-6.9355309778005758e-01
--3.3467903411573118e+01
-6.5734012426720181e+00
-2.9722173649641039e+00
--2.7484417693909666e+01
--1.1790449213909746e+00
--4.7177007389147034e+00
--2.2519696908942151e+01
--8.8363277744604876e+00
-3.8707365361148329e+00
--3.8021088381376771e+01
-1.3692474758280687e+01
-8.9073989592569855e+00
--3.7938668133235915e+01
-6.1512466636063170e+00
--6.9039607914662415e-01
--2.2533506159294078e+01
-2.2290086912429610e+00
-8.2990955505391835e+00
--4.3917828688860368e+01
-3.8770781973014010e+00
--2.4167740715228097e+00
--2.0342074455916329e+01
-5.0907242561038890e+00
--3.4304872585822950e+00
--2.1888824480537153e+01
-3.4720358529418518e+00
-2.5542947834797540e+00
--2.1589800974021610e+01
-7.0228536887778392e-01
--5.8847994035287483e+00
--2.1475735325581503e+01
--9.0511556283445371e-02
--3.2564850234178122e+00
--2.0631630108866673e+01
-2.2240531975187543e+00
--4.6018259163526780e+00
--2.1403685498573090e+01
--9.8272251330591960e+00
-1.2690519649155421e+01
--4.4347687298053692e+01
--9.6152996470339289e+00
-1.3502665591518349e+01
--4.3148208060445285e+01
--1.3661230934276601e+01
-1.1141526614807015e+01
--4.2763686609079592e+01
--1.9162907958708735e+00
--1.2538822640118996e+00
--2.1797168051284778e+01
--8.8758614020539977e+00
-1.3794877023616582e+01
--4.3099293186473027e+01
--5.6196888048598153e+00
-1.2695494894999044e+01
--4.9660509457371838e+01
-1.5448139036865737e+01
-1.3547417494743044e+01
--5.0934873883449221e+01
-1.2053122075419478e+00
-3.7429778469723844e+00
--2.3549209980944045e+01
--6.8676476484508528e+00
-1.5076194184297668e+01
--4.5031874552247579e+01
--4.2573007820210220e+00
--7.0936649170258805e+00
--2.2802631869997480e+01
-6.0053529284529548e+00
-5.3691362570638757e-01
--2.3120000430893391e+01
--7.7786941667047760e+00
--2.0737614389954135e+00
--2.9706951780799891e+01
--5.6460053215345596e+00
--7.4021103054669473e+00
--2.2427334287288208e+01
--2.6364922922858449e+00
-1.9644535664235516e+00
--2.4866423792848565e+01
-1.3480955929689440e+01
-9.1859388689739436e+00
--3.9007486918114004e+01
--4.9820218312031512e+00
-4.8901821443126092e+00
--3.9316560100353790e+01
--1.7474632548388402e+00
-5.2434345892446454e-01
--2.2608065217169155e+01
--3.2059671900356128e+00
-8.8032165936940672e+00
--4.4516649579559669e+01
-9.1009607616064034e+00
--6.8062859049487647e+00
--2.3178729137727927e+01
-1.1954615304478272e+01
--2.8447962964251245e+00
--2.8635175560988554e+01
-1.3694111169702984e+01
-1.1087607727692503e+00
--3.0600974766540421e+01
--5.7016558817838128e+00
--6.7950873915835199e+00
--2.3279948941455451e+01
-8.4514949903590946e+00
-9.5272738667159125e+00
--4.5530288405424571e+01
--9.9786566833603885e-01
-1.8466966466340948e+00
--2.2080329317842917e+01
--6.7241645598364590e+00
-1.5185374653641327e+01
--4.4341723359275264e+01
-1.3765749544695423e+01
--1.0077645433608190e-01
--3.2183979653512374e+01
--3.1583579170905667e+00
--7.9772735547657989e+00
--2.1560328944947280e+01
--5.8970959271073609e+00
-1.3069224166642048e+01
--4.9012415738219929e+01
-7.0184886114165250e+00
-1.1966753897223278e+01
--4.9008098164144357e+01
-1.1747148727568057e+01
--4.7602319666166055e+00
--2.5664974962012277e+01
--2.5913371570507104e+00
-1.1557931628108884e+01
--4.8280626970133369e+01
-2.6982977001714041e+00
-9.5390229239195184e-02
--2.0320786583052545e+01
--2.8477593971672261e+00
-6.1485669764696089e+00
--4.0970285775638011e+01
-1.8125356333227625e+00
-8.9115165085529284e+00
--4.4742672726079959e+01
--3.2413049858617882e+00
--7.9701350727547355e+00
--2.1581196333233077e+01
-1.2976815715227254e+01
--5.9532723704511454e+00
--2.3885249661347189e+01
-2.5884126470809754e+00
-3.8463587541724892e-01
--2.0284238087263411e+01
--1.3770488132498709e+01
-1.1452951411576327e+01
--4.1940914005744652e+01
-1.2238235651688644e+01
-5.5948251894580343e+00
--3.1235635448854691e+01
-1.3427976218557992e+01
-1.5993531964859646e+00
--3.1078987831354368e+01
-2.7926294180899758e-01
-7.7079657212308028e-01
--2.0660812486583961e+01
--6.0060171731393941e-01
--2.4565764733955784e+00
--2.0333834649453891e+01
-1.7431264789024941e+00
-5.3511715748343969e-01
--2.0262259541910502e+01
--1.3794370598022642e+01
-1.0700608215174007e+01
--4.3738616719927805e+01
--2.1585121474578603e+01
-2.0233489463741305e+00
--3.5352533441547145e+01
--1.2162926363235444e+01
-3.6431189989442054e+00
--3.7705225373194750e+01
--1.5143224474482523e+01
-6.1607650087169974e+00
--4.1229450918480907e+01
--1.4741004243681601e+01
-5.9369003355830419e+00
--4.0883430200716710e+01
--1.2161171120865761e+01
-1.2108176341054197e+01
--4.1341421503610540e+01
-4.3019482129270283e+00
-4.9961652205101720e-01
--2.1202972257806930e+01
--1.4827633286705217e+01
-8.2283432986472267e+00
--4.3915748511802057e+01
--1.4657624735706964e+01
-1.2748782074752945e+01
--3.8825022209882292e+01
--3.9847676252512096e+00
--7.3039195772714667e+00
--2.2515305915644849e+01
-1.3306509382983864e+00
-1.0024984323222443e+00
--2.0517369327395318e+01
--9.4297293775046409e+00
-1.1366275033523394e+01
--4.5576297314566411e+01
--1.4483006854125176e+01
-1.1275594995635240e+01
--4.2766041147024083e+01
--1.1884332437641201e+00
-1.7716973795981691e+01
--4.6925794623877955e+01
-6.2816698309889318e+00
-1.9965138102652375e+01
--5.1245752789280772e+01
--8.8478420772551711e+00
-1.2458060041552187e+01
--4.6648837145398595e+01
--8.9454457196292019e+00
-1.5186762522223308e+01
--4.1385357711597486e+01
--1.3482977408361990e+01
-1.3102589510412407e+01
--3.9491389657543337e+01
--1.9104224520572024e+00
-1.7283442815798828e+01
--4.6574484448999215e+01
--6.6241509822984312e+00
-1.5191159220755843e+01
--4.4588253362257667e+01
--1.1025435119567764e+01
-1.1186071969790179e+00
--3.4184006082766984e+01
--1.2783095591157368e+01
-3.7362543260170455e+00
--3.7754841064507637e+01
--4.6494766802454972e+00
--8.3448839806655268e+00
--2.1159063607486427e+01
--5.1135975924506907e+00
--7.2108233773392412e+00
--2.2730855102802384e+01
-7.0462269282273160e-01
-2.0209521361677307e+00
--2.1019574589001625e+01
--2.3189376223554903e+00
-1.9746151452599445e+00
--2.4839018202763711e+01
-3.1293427362923127e+00
--5.7800507810134662e-02
--2.0452363373100461e+01
--1.3767620182819678e+00
--1.2230657606080184e+00
--2.1375254017225835e+01
-4.7071200681504939e+00
--3.3927256097821146e+00
--2.1441144362780445e+01
-7.0468020651589010e+00
-8.8715868973808281e+00
--4.4727796520925807e+01
--6.2006455372718596e+00
-8.1781619271202537e+00
--4.3959747366131438e+01
--6.4413527706713296e+00
-7.7807018010377282e+00
--4.3368120932350621e+01
-3.7907491866147929e+00
-2.9711091475679390e+00
--2.2197026629180748e+01
-1.8165167807964995e+00
-1.7012811349399253e+00
--2.0554900343998703e+01
-2.8143618442843152e+00
-1.4083824116356427e+00
--2.0598846103362156e+01
-2.8143618442843152e+00
-1.4083824116356427e+00
--2.0598846103362156e+01
-5.8420819289822443e+00
-3.0184894850774963e-01
--2.2788441511525502e+01
-5.6389595563487251e+00
-1.1506678040674298e-01
--2.2557738729982660e+01
-2.9697397983264966e+00
-1.9400949333154127e-01
--2.0403013477947777e+01
--2.6071344491918911e+00
-6.5582615902742544e-02
--2.2980173271766088e+01
-2.8409093192472734e+00
--5.5866965062148111e-01
--2.0433477952218610e+01
-1.7484676740424798e-01
--1.4783870494991853e+00
--2.0469099988341714e+01
-1.6269765837171646e+00
--3.1091765071124864e+00
--1.9871715809820692e+01
-1.2971850704607334e+01
--4.6579633730241294e+00
--2.5865402372689147e+01
--4.4729422723867174e+00
-8.7073157672146770e+00
--4.4532024552697202e+01
-1.0138809191671466e+01
-7.4999793560835837e+00
--4.2585679579025040e+01
--6.2395595131352737e+00
-8.4416889250725067e+00
--4.4093814476693453e+01
-9.4821318878765872e+00
-7.3211742780955991e+00
--4.2409296679208438e+01
-8.6701040023510334e+00
-7.1192107167012484e+00
--4.2325672824140952e+01
-8.5939477691628792e+00
-6.8640105369900750e+00
--4.2031139422960905e+01
-1.3655685554673713e+00
-3.9536305772341054e+00
--2.3546802598987433e+01
-3.8858180090633563e+00
-2.4195022338703098e+00
--2.1723123613647790e+01
--1.3515528307581096e+01
-3.6806507905208679e+00
--3.7649149212607412e+01
-7.3375691143638022e+00
-1.3286184921222470e+00
--2.5340740617615513e+01
--2.4870539453206195e+00
-1.7435077165826065e+00
--2.4585378826866435e+01
-2.7984883855221230e+00
--9.5117519434423536e-01
--2.0629527074194467e+01
-2.2795325659880250e+00
--1.6029990296751442e+00
--2.0282893448578744e+01
-4.6127383409049587e+00
--3.2731184580232897e+00
--2.1233562180379607e+01
--4.1667257004975395e+00
--6.8186284011463876e+00
--2.3168986961068541e+01
--7.7503949417709928e+00
--8.0093739554911902e+00
--2.1465976232517647e+01
-1.6367103874045124e+00
-3.9389764875998137e+00
--2.3668715296667827e+01
-4.3392592123787903e+00
-1.7294508912959574e+00
--2.1585575119878243e+01
-4.4219430593577513e+00
--1.1709717716903294e+00
--2.0978315114975242e+01
-6.3786473938186272e-01
--1.2492933694359940e+00
--2.0653373251767643e+01
-3.6878653873270353e+00
--2.3330088203828989e+00
--2.0450295951087984e+01
-1.4002251414481723e+00
--2.6007713227748499e+00
--2.0093351098235750e+01
-9.2397736680631866e+00
--5.5559358433653552e+00
--2.4800300956783612e+01
--5.1999721957842278e+00
--6.6945179554823797e+00
--2.3514339729344091e+01
-3.6268843240026740e+00
-2.8642571721949164e+00
--2.1920247576869329e+01
--3.2819515127879817e+00
-1.9830171901982085e+00
--2.6043549577199148e+01
-3.7498437027066274e+00
-1.2600540169261392e+00
--2.0922930089986259e+01
-2.7517916249802536e+00
--1.4816335085928889e+00
--2.0511499491194861e+01
-1.8289279610115259e+00
--1.6176774454393008e+00
--2.0233311327316514e+01
--2.6489042662753297e+00
--7.8851675160025341e+00
--2.1658319535836199e+01
--7.3380831224305645e+00
-1.8804254505589704e+00
--3.5140126178357932e+01
-1.2249195619893634e+01
--5.3953739043230087e+00
--2.4889907338297043e+01
--4.9240294050039273e+00
--6.8385701807916002e+00
--2.3261053800525165e+01
-4.9426899716824577e+00
-1.5453485318439111e+00
--2.2115887617445679e+01
--7.2424659097971817e+00
-1.5750799942693356e+00
--3.4667511848275019e+01
--3.9342723607933281e+00
--8.2961425318029693e+00
--2.1196728861871133e+01
-6.9020526297379243e+00
--3.4985239180583472e+00
--2.4253183404799671e+01
--2.3810826688249342e+00
--7.8806326106166731e+00
--2.1747900336311847e+01
-6.0818042940017829e+00
--3.1925346300741553e+00
--2.3087526744060323e+01
--6.8346732215421735e+00
--8.0625102492182990e+00
--2.1481945114021922e+01
-2.5985348316190264e+00
-1.7659444485767889e-01
--2.0265949149250687e+01
--1.0583641665714847e+01
-1.0599693971548660e+00
--3.3867915290303820e+01
--9.5741169557357768e+00
--1.5420601285331104e+00
--3.0472190543742670e+01
-1.3402946553796841e+01
-2.7886037378806265e+00
--2.9005333948913961e+01
-7.2186868587101047e+00
-1.8695437053646349e-01
--2.3777370332732524e+01
-1.4922463356954667e+00
--2.4172942572729577e+00
--2.0303975236499639e+01
-1.0117170413749994e+01
-7.3544710111727793e+00
--4.2558801690407449e+01
-5.7610865414361294e+00
--3.8936759227885003e+00
--2.3195235150042556e+01
-9.5631096186819970e+00
--6.3036771419760580e+00
--2.3772597700786111e+01
-4.4908948046879518e+00
--2.8813764375712250e+00
--2.0758575546875488e+01
--3.9361372486445143e+00
--2.1421597253211471e+00
--2.5689943994318877e+01
--9.1761325919379129e+00
--2.4994604828059064e+00
--2.9186721897380583e+01
--2.7707200417637403e+00
--1.3297628566354898e+00
--2.1671648103940463e+01
--1.5912965265233041e+00
--2.0673936683673722e+00
--2.0768406800849913e+01
-2.4990073639295538e+00
--6.6415222760856540e-01
--2.0369795757221549e+01
-8.2702488145531241e+00
-1.8951087857880854e+01
--5.6399938266504506e+01
--1.1156064710167060e+01
-1.0778368420347997e+00
--3.4187255929727357e+01
-1.7074319586347395e+00
--2.7423349211503290e+00
--1.9944827858555282e+01
--2.3321669734801984e-01
--3.8841114679645474e+00
--2.1407409877620697e+01
--1.4059979597659568e-03
--3.6226474349835134e+00
--2.1021009231604392e+01
-3.0746525545800347e+00
--2.9364578280295124e+00
--1.9695545262083517e+01
--1.6389089264323780e+00
--8.5328681966136415e+00
--2.0826261293605569e+01
--1.7905396096571056e+00
--8.3624284471635040e+00
--2.1119579611064644e+01
-9.6032326317114269e-01
-2.0097446436702544e+01
--4.5853137495288507e+01
--1.5558291864869235e+01
-1.1983103654873444e+00
--3.4396989113103658e+01
-7.2905071705829649e-01
-3.5356937489200293e+00
--2.3065450739131425e+01
-1.0573739182705459e+00
-9.4226216510890259e-01
--2.0380914756852775e+01
-1.4373799947943595e+00
--3.2026095125695819e-01
--2.0252409276173044e+01
-1.5671594826432289e+00
--5.4312915879496371e-01
--2.0350245614359572e+01
-1.6087106537978630e+00
--7.7669219614530549e-02
--2.0237188834057147e+01
--1.6327563694228906e+00
-1.8224479937967082e+01
--4.5844453269269181e+01
-1.2125327792526102e+01
-7.0100100754055541e+00
--2.8959327837185970e+01
-3.0934454494768842e+00
-7.3688426835952014e-01
--2.0448268702371834e+01
-8.6295164056277773e-01
-1.2049470698409488e+00
--2.0532192359107171e+01
--2.4547109937522889e+00
-2.0591214928144135e+00
--2.5009940223143150e+01
-1.6112613556699554e+01
-2.2145001508279986e+01
--6.0295752031787337e+01
-9.3541750446283753e+00
-2.1022897013363583e+01
--5.4599454734171267e+01
-6.0194096550787526e+00
-2.2045789182582414e+01
--4.8816980618352424e+01
--1.2117676932916217e+00
--2.5339761932365451e-01
--2.1865991027648928e+01
-2.6565437531227465e-01
-2.8416522643592718e-01
--2.0546644409072155e+01
-1.3890455887521582e+00
-8.7072417161153792e-01
--2.0325068731854152e+01
-7.0627193655566334e-01
-5.7340354918629854e-01
--2.0437349713829335e+01
--9.5016158852580208e+00
-1.3702940800209173e+01
--4.2330534803248270e+01
--9.5790037948036879e+00
-1.3948974926760785e+01
--4.1843764623776053e+01
-4.4922603120029443e+00
-2.0625986395096704e-01
--2.1296578829158658e+01
-4.0607085912116263e+00
-1.4485319846225984e+00
--2.1237510288903941e+01
-4.7971355961794133e+00
-5.5020647681068147e-01
--2.1571189001410325e+01
-5.1228400161893717e+00
--1.7786243066288789e+00
--2.1162812444570520e+01
-3.5812394319487204e+00
--4.4559578488195264e+00
--2.1771686666175288e+01
-4.7515432258584385e+00
-1.3448766274672048e+00
--2.1708317921470805e+01
-4.4770264840158474e+00
-1.3855932134149314e+00
--2.1461809615237382e+01
-4.7182456940075808e+00
-1.7190572430987987e+00
--2.1977203164248156e+01
-4.1595425733648126e+00
--2.6175398438109636e+00
--2.0298770158845517e+01
-3.6336371825825577e+00
-1.5169633211058033e+00
--2.1047258283407619e+01
-2.3700679777990343e+00
-1.5126884863788677e+00
--2.0487482618102916e+01
-2.1532053422120487e+00
-8.5687845055179956e-01
--2.0266240211217159e+01
--6.7717340290337402e+00
-1.4208932724183214e+01
--4.5838361300920404e+01
-4.2707302666584450e+00
-1.7111039223773798e+01
--5.4845667523981305e+01
-1.3588655811760514e+01
--4.9375351815360968e-01
--3.1719738030771278e+01
-5.0559398149647077e+00
--4.8892387466852810e-01
--2.1779574557119773e+01
--1.6646250519468329e+00
--1.6122458918344185e+00
--2.1360542223520635e+01
--2.3350199732663537e-01
-1.7377648846329262e+01
--4.9072654774475730e+01
--2.3350199732663537e-01
-1.7377648846329262e+01
--4.9072654774475730e+01
-1.3074994120512086e+01
-1.0141723636749211e+01
--4.0137062994296492e+01
-3.8905272979080050e+00
-1.6958550356465469e+01
--5.4338300668854821e+01
-8.1300753451674286e+00
-9.1173570038926677e+00
--4.4885306825947609e+01
-9.7052881581139410e+00
-8.5250122170456795e+00
--4.4130122756142910e+01
-1.2920004232845582e+01
-2.8434371310636157e+00
--3.2234317233323559e+01
-1.3254423714273099e+01
-2.2075959403683805e+00
--3.1120583295701337e+01
-1.2901447053146089e+01
-2.4698932576880894e+00
--3.2583295978683978e+01
-1.3644160450205774e+01
-1.0487348989063188e+00
--3.0614913485887097e+01
-1.2981755000252003e+01
--3.9198611601469119e-01
--3.2077263243938425e+01
-2.4487615809207592e+00
-4.2008182231395769e-01
--2.0312191722826810e+01
-1.4720241773669972e+01
--2.1034837278707896e+00
--2.9418853003148882e+01
-1.4751983206494888e+01
--2.1634974439618353e+00
--2.9318086660813115e+01
-2.0806503781208865e+00
-1.2966381610171135e-02
--2.0184958448575696e+01
-6.0579541780589059e+00
--1.0832773646711207e+00
--2.2103182656408141e+01
--7.7846478109476702e-01
-3.5764194170891012e-01
--2.1374785450059310e+01
-5.3017022697528429e+00
--1.6968602225142941e+00
--2.1258200444470358e+01
-5.0683439475033332e+00
--1.7119558651343372e+00
--2.1255751794675007e+01
-4.6055023067344472e+00
--2.2093265247858698e+00
--2.0635129043170579e+01
--6.3993484541630541e-01
--1.1884561705350185e+00
--2.0842597677044346e+01
--6.6164120766217360e-01
--1.2431961905985567e+00
--2.0812029987427948e+01
-1.3467230955678541e-01
--1.5029115577206122e+00
--2.0336870155324267e+01
-1.1291736499004887e+01
--4.9632901583347850e+00
--2.5552664254600703e+01
-9.4204119332303655e+00
--5.9200608330730642e+00
--2.4325967343633597e+01
-6.8298438400508195e+00
--7.4967418173781288e+00
--2.2195391387257910e+01
-1.7801684268540907e+00
--8.4017500514607306e+00
--2.1018665427888038e+01
--2.1215465841383949e+00
--7.7600215600413947e+00
--2.1869382178137894e+01
--4.5494650695727730e+00
--7.5744785157150218e+00
--2.2239526373048111e+01
-4.3750533895912307e+00
-1.7275082317132604e+01
--5.4200789014720677e+01
-1.5702984216021614e+01
-1.3773291058593053e+01
--5.1389913628400052e+01
-1.3234638468490656e+01
-1.2232629871719720e+01
--4.9485515052503033e+01
-1.2482623933878640e+01
-5.3607201575764076e+00
--3.0022827503093552e+01
--3.4184613548921252e+00
-8.9669897258457798e+00
--4.4814869464311180e+01
--9.5228941852565185e+00
-3.0719624842421331e+00
--3.6852293025639661e+01
-1.4037271964976998e+01
--4.7564604613199295e+00
--2.5586855085326356e+01
-1.3330185514088836e+01
--5.0789749035031981e+00
--2.5285409226220217e+01
-1.0831825844107293e+01
--5.5595940347418971e+00
--2.4758305919015548e+01
--4.6388530073373813e-01
--3.3624513847596411e+00
--2.1019612750684779e+01
--5.1841019241029418e+00
--6.8445217870814545e+00
--2.3170714741687895e+01
--3.8106854965461436e+00
-1.6115708125579406e+01
--4.5909307096909593e+01
-2.9509649622990847e-01
-1.6694341717357233e+01
--5.0303640895946231e+01
-1.2565127620271104e+01
-5.2653971921044578e+00
--2.9591261987068648e+01
-1.3090694132589773e+01
-2.4292064114567440e+00
--3.1923290952874446e+01
--6.8155839689861928e+00
-1.9187131837735905e+00
--3.5210808514420940e+01
-2.6834333210198538e+00
--1.6035770509852003e+00
--2.0260476059015847e+01
--2.6841679776126255e+00
--9.0995600567550317e-01
--2.2363893208978826e+01
--1.3813166059977153e+00
--1.7858427700351711e+00
--2.1115645163425988e+01
-8.9114089131542080e+00
--6.1776806235558341e+00
--2.4164498892551865e+01
-1.2373296692959639e+00
--8.5637632712920428e+00
--2.0830571884922854e+01
-4.1319596795644182e+00
-1.7247324508858696e+01
--5.3522888781268115e+01
-1.0551429719169353e-01
-2.6683555277063964e+00
--2.1862678505995888e+01
-9.1958488290482094e+00
--6.0415510592301507e+00
--2.4259254475547184e+01
-1.0024471612096043e+01
-9.3136391605843762e+00
--4.5162917759252124e+01
--2.8970323868777292e+00
-6.8744599838086771e+00
--4.2096913696156697e+01
-9.6987367655323240e+00
--6.3427248807693966e+00
--2.3680777930485707e+01
-1.2112388603503071e+01
--5.1014303436648456e+00
--2.5340168456879550e+01
--4.8008160901380439e+00
--7.3719328148621637e+00
--2.2402221109158226e+01
-1.1360970063239758e+01
--5.4101940594776758e+00
--2.4886219055065439e+01
-1.1340594794857173e+01
--5.5270711722227288e+00
--2.4384408287832173e+01
-9.1756907719074228e+00
--5.8160178497520718e+00
--2.4436832167520006e+01
--4.5447684876437426e+00
--7.1866750120682923e+00
--2.2659838784482538e+01
-1.3241327859265308e+01
-1.0843490733523322e+00
--3.3411711232599288e+01
-3.0261763502878796e+00
--1.1552762815255695e+00
--2.0749405063891214e+01
-9.1958488290482094e+00
--6.0415510592301507e+00
--2.4259254475547184e+01
--8.2688831879144420e+00
-1.4954335268843998e+01
--4.2738883521090457e+01
-1.7201984464123254e-01
--2.6041462561776108e+00
--2.0116958335114564e+01
-1.3575872296462538e+01
-9.7526354821616703e+00
--3.7462867405973064e+01
--7.3609015844059753e-02
-1.1218204321455885e+00
--2.0977395960112666e+01
--2.5670275867506369e+00
--7.7471686432529463e+00
--2.2068972834458751e+01
-7.7990148874748284e+00
-1.3064267051355261e+01
--5.0377666632712170e+01
-1.7421293221392851e+00
--1.4445970486609405e+00
--2.0487972236737924e+01
-1.8336451610868783e+00
-1.0115605411207760e+01
--4.6347147329108189e+01
-6.6263264363190215e+00
--1.4004071799677922e+00
--2.1838352836851222e+01
-1.2965020782860803e+01
--5.1679134048068907e+00
--2.5242018729775701e+01
-8.7477548007662982e+00
--6.5571096636253738e+00
--2.3454353830912755e+01
--2.6567737745759263e+00
--7.9185152339059810e+00
--2.1643416740253489e+01
--1.8902530359096539e+00
--7.9716777562598544e+00
--2.1548342465766488e+01
--3.2720465669528980e+00
--7.8087149348086600e+00
--2.1921273895876830e+01
--3.8800374914954676e+00
--7.7620207504243348e+00
--2.1946667427408904e+01
--1.0755811680142675e+00
--6.2882086512111393e+00
--2.2770178359045584e+01
-1.0082832398324955e+01
-8.5794082891248689e+00
--4.4315444479760799e+01
-6.0644338124384389e-01
--2.0698249751421263e+00
--2.0443376421380666e+01
--4.5770193651562707e-02
--5.8612662473963273e-01
--2.0876738526720192e+01
-1.3636773675309954e+01
--5.2074012664223064e+00
--2.4908572502997963e+01
-1.8422734666417382e+00
--6.5310694725324669e+00
--2.2099265812805047e+01
--5.1521651745754644e+00
--7.1829776653800437e+00
--2.2728540882551471e+01
--7.4124833717421250e+00
--3.6235876768029782e+00
--2.7670923071328655e+01
--1.3148968325296350e+01
-1.1293361929866478e+01
--4.1965154715635705e+01
-4.7199507389063005e+00
-1.7927909101439408e+01
--5.3508306124460383e+01
-5.0216811694770982e+00
-1.9572590609266015e+01
--4.8735149704944945e+01
-1.0459908414620918e+01
-2.1254460579930779e+01
--5.4987229601143881e+01
-1.2127752392012761e+01
-2.3718850786729980e+01
--5.3166124459759388e+01
-1.3398543415242383e+01
-2.2697283426784811e+01
--5.5185815929659448e+01
-1.0459908414620918e+01
-2.1254460579930779e+01
--5.4987229601143881e+01
-5.2643207601659174e+00
-1.0793017471341821e+00
--2.2343996010499218e+01
-3.5810060861005568e+00
--1.3489041929395440e+00
--2.0654733339576239e+01
-3.3315415160490955e+00
--1.4249408843788289e+00
--2.0550049008232325e+01
-1.0688058270567971e+01
-2.3405333563411666e+01
--5.1930690930965135e+01
--3.1888251847986524e+00
--8.1522843577183846e+00
--2.1274618432727166e+01
--3.8520289213613865e+00
-1.5293539617649040e+01
--4.8217265343203422e+01
-1.3795419147185514e+01
-2.4226909784231896e+01
--5.3889378612289612e+01
-1.3604395562837881e+01
-2.3717494745481044e+01
--5.4947852121109385e+01
-1.3016634523775164e+01
-1.1086944873255128e+01
--3.9053211680809724e+01
-1.3401737749690481e+01
-2.3252338685731533e+00
--2.9570874176860869e+01
--5.2430620530819727e+00
-1.3512149789171609e+01
--4.9141140270665325e+01
-2.8850253723045167e+00
-2.0467596134259139e+01
--4.7345654866769685e+01
--3.5155938380680971e+00
--7.8439386409534286e+00
--2.1772118739485418e+01
-1.7188387159442271e+00
--4.5970492355298207e+00
--2.1507698847726736e+01
-9.0619567519613256e+00
-2.0137239748606206e+01
--5.4398809705958335e+01
--5.0765676052208661e+00
-1.3130052016948667e+01
--4.9623960187263577e+01
-2.9509649622990847e-01
-1.6694341717357233e+01
--5.0303640895946231e+01
--3.9325543200142734e+00
--8.0792330465333695e+00
--2.1488374786935740e+01
--4.1211884501049747e+00
--7.1309348509941035e+00
--2.2736302594985368e+01
--2.3896410950441354e+00
--7.8710324570094246e+00
--2.1891956967647328e+01
-1.4532332739811814e+01
--1.3754122372892181e+00
--2.9593181130309333e+01
--3.5206931106924451e+00
--7.5521274189441554e+00
--2.2228185411536973e+01
--3.4484139973593457e+00
--7.6223724600207685e+00
--2.1938068448746129e+01
-1.3123926552757760e+01
-7.8609914680572979e-01
--3.3245992999994343e+01
--2.2468495570283813e+00
-6.6215984778381953e+00
--4.1560200591101527e+01
--2.2530693478889670e+00
-2.5205069582080362e+00
--2.5550487380484011e+01
-1.3415511271328254e+01
-5.7968218041974384e-01
--3.3183742073141985e+01
-1.2540946421603815e+01
-3.7336969182725825e+00
--3.2675047077358215e+01
--1.6141595518879715e+01
-1.0768800638748580e+01
--3.9895442616072359e+01
-5.8875002566088863e+00
-2.0660319538673871e+01
--5.0598957906260168e+01
-9.6779741323769048e+00
-2.0960020912009089e+01
--5.4237856064597075e+01
-1.6203922804342195e+01
-1.5393959642036725e+01
--5.3575282640153588e+01
-1.3902785637012597e+01
-1.3771707762905050e+01
--5.0985736979929783e+01
-7.5750938059485673e+00
-1.2449795300760014e+01
--4.9522481933403142e+01
-8.9265336901164272e+00
-1.0322628800627824e+01
--4.6710651151426831e+01
-1.7574797741607071e+01
-2.3187689194625388e+01
--6.0342916848239341e+01
-7.8919497276348185e+00
-9.4562519710547353e+00
--4.5279674907609589e+01
-8.9020006170488077e+00
-2.1274144773379149e+01
--5.3528949608907979e+01
-6.2816698309889318e+00
-1.9965138102652375e+01
--5.1245752789280772e+01
-8.7654227238710192e+00
-1.4335099566335485e+01
--5.2588722608192910e+01
--6.9013895978043251e+00
-1.3721651255813381e+01
--4.6321649729185083e+01
-1.1146870571841401e+01
-1.5302236470937634e+01
--5.3256997759953087e+01
-7.6465738085189585e+00
-1.4185331909846619e+01
--5.2070299568846060e+01
-8.6838952717524052e+00
-2.0759216771378274e+01
--5.4004020428912931e+01
-7.5991289749357316e+00
-1.3786586011200015e+01
--5.1315102312705370e+01
--7.8439085102441899e+00
-1.5718766461346533e+01
--4.1716024316519942e+01
--1.5001530092220239e+01
-1.1246708621757534e+01
--4.3183652392733727e+01
--1.4211090328488286e+01
-1.1064749971329103e+01
--4.4334933802432587e+01
-7.3440068648344363e+00
-2.2377478343052566e+01
--4.9805564337812143e+01
-4.9121864869187970e+00
--2.3584338474192315e+00
--2.0561134481922817e+01
--3.4923846756181325e+00
--7.4428956535370139e+00
--2.2381699687998708e+01
--5.0698834664306727e+00
--6.6440391124614830e+00
--2.3445057909264548e+01
-6.4246942550452601e-01
-1.1619986696847466e+00
--2.0554994777610464e+01
-4.9589212072315529e+00
-1.6662637793696225e-01
--2.1790086717923398e+01
-4.8440771571618519e+00
-2.4925514100704511e+00
--2.2823735439542386e+01
-1.3341397295348608e+01
-1.0134577055600120e+00
--3.3271178874414503e+01
-6.5361784577199611e+00
--3.4626701765136358e+00
--2.4144596364610933e+01
--1.3361167711606330e+00
--1.8558922634950166e+00
--2.1090636391173721e+01
--1.4668878692738284e+01
-5.8066662914402780e+00
--4.0656581715312569e+01
-1.0775363735527039e+01
--5.5348276994506307e+00
--2.4779990291308266e+01
-3.2164999927485565e+00
-1.3391803828279458e+00
--2.0735006045563360e+01
-4.7324092734453558e+00
-1.7294313842273549e+01
--5.4480309882556320e+01
-5.0779686504154604e+00
--4.6082043705573259e+00
--2.2683415214164093e+01
--3.4651185954234238e+00
-1.6204607280940748e+00
--2.5640373547818090e+01
-1.3960844457275631e+01
-8.3716766782648140e+00
--3.8346309805916242e+01
--7.2074105030114577e+00
--1.7576307166597287e+00
--3.0184650376862965e+01
-1.3288159283509140e+01
-9.7129166397516120e-01
--3.3278793826515162e+01
-1.2494821796850221e+01
--5.9661243463329940e+00
--2.3903482215017952e+01
-3.0891577179401861e+00
--2.8559746025746358e+00
--1.9789676115969812e+01
-7.9610384168061552e+00
-1.5286197642627915e+01
--5.3508523884631678e+01
-5.0165834183183211e+00
--2.4359993206648607e+00
--2.0472949971648433e+01
-1.0541036965222534e+00
-1.7899376705307293e+00
--2.0697152213112027e+01
-8.1221870610085389e+00
--7.0038673607467281e+00
--2.2876803877693362e+01
--7.4232461177167250e+00
-1.4027648533200518e+01
--4.5139678002164580e+01
-4.3132707596949960e+00
--3.3268207967483785e+00
--2.1084409551225615e+01
--8.8346182445592198e+00
-1.4113701503329308e+01
--4.3121965354600277e+01
-6.2527844700167909e+00
--1.2223162913987793e+00
--2.1912901975491980e+01
-1.1677671768044068e+01
--5.2251625609460435e+00
--2.5306544048478226e+01
-1.0369575993179247e+00
-1.4993192563436568e+00
--2.0633679751955924e+01
-8.0782957954953130e+00
-1.4491692117730951e+01
--5.2308653359782177e+01
-1.3288159283509140e+01
-9.7129166397516120e-01
--3.3278793826515162e+01
-6.0586123746078986e+00
--2.3706474189937867e+00
--2.2137177186527342e+01
-3.7491917559821388e+00
-2.3738979404838760e+00
--2.1582846893306439e+01
--7.5035621525000460e+00
--2.1085569984469554e+00
--2.9649371537126690e+01
-4.2281463440261158e+00
--3.4030638060765610e+00
--2.1104090474541920e+01
-9.7550334186326293e-01
-6.0269025096775286e-02
--2.0316338453583551e+01
--2.2962347506280998e+00
-2.8205135844035287e+00
--2.5910532213363009e+01
--8.6013848964721724e+00
--2.5514346923987348e+00
--2.9212302487833309e+01
-1.1382971053956004e+01
--5.6974422263045037e+00
--2.4585109399219458e+01
-1.3269233032200718e+01
-2.9553119763895843e+00
--2.9637377880478347e+01
-1.1782340923204877e+01
--5.7774419002296602e+00
--2.4544956923281447e+01
--5.7599429935042625e+00
-5.7135415500048605e+00
--4.0287194105117813e+01
--4.0636373342045857e+00
--7.0616651756074438e+00
--2.2916908874392497e+01
-1.3261062303404104e+01
-1.1564767499835703e+01
--3.6036661447410737e+01
-1.3061174501071331e+01
-1.4598054238519627e+00
--3.3870708103048749e+01
-1.3311119754051596e+01
-1.0779540150294519e+01
--3.7390052261729544e+01
-1.2644338102084840e+00
--2.6608894775322263e+00
--2.0024549508842831e+01
-5.3194977732616957e+00
-3.8200328816351409e-01
--2.2362857287750401e+01
-2.9923113525813205e+00
--4.7088687096431556e+00
--2.1622542963382017e+01
-9.4583123248877243e-01
-1.0950245381257064e+00
--2.0463754633962946e+01
-1.1427181833981259e+00
-3.8321936452028291e+00
--2.3968840948463242e+01
-1.1905909679712499e+01
--6.1755491676394412e+00
--2.3682751524194082e+01
--3.6500004804526665e+00
--7.6725717325930294e+00
--2.2045946835516791e+01
-1.2970332452232217e+01
-3.4059446761016878e+00
--3.0802356648816961e+01
-8.0284724057902923e-01
-7.6093637469471567e+00
--4.2991625929080762e+01
--1.2810836427783839e+01
-3.6031563316082029e+00
--3.7617458270301661e+01
-4.5450002643540950e+00
-5.9169320790784896e-01
--2.1335319549537036e+01
-4.5022941582775573e+00
--3.7848996436998505e-01
--2.1479908229212597e+01
-1.6741005114413248e+00
-3.1077215655059733e+00
--2.2112269188064012e+01
-4.8440771571618519e+00
-2.4925514100704511e+00
--2.2823735439542386e+01
-3.2205827386141168e+00
--2.8132060028080939e+00
--1.9970568241941304e+01
-3.5418830114080442e+00
--4.3625833597562487e+00
--2.1620816016394699e+01
--4.5520324737979472e+00
--7.0165757582644455e+00
--2.3044983374893246e+01
-8.3372543832339763e-01
--8.2890715975845797e-01
--2.0540502282571602e+01
-1.2986006420666543e+01
-1.0430294665196289e+01
--4.0249458607200808e+01
--4.0636373342045857e+00
--7.0616651756074438e+00
--2.2916908874392497e+01
--1.1059615021393854e+00
-3.0830234804149010e+00
--2.3446712629004050e+01
-9.5445989261343644e-01
-1.5215146430849043e+00
--2.0658155327176594e+01
-2.2444555101487311e+00
-1.2060299511851225e+00
--2.0351857743603020e+01
-4.5339899866827889e+00
--4.2341460669150548e+00
--2.2151273239457669e+01
--3.6253568407289674e+00
--7.7449791966312116e+00
--2.1930341870669235e+01
-2.7582264699898378e+00
-1.1025965713371182e+00
--2.0399790491234633e+01
-4.5863904164629679e+00
--4.6351742910077327e+00
--2.2594756035593299e+01
--4.7497346310300754e+00
--7.0828462539460819e+00
--2.2980294834771886e+01
--2.9345424021358237e+00
--1.2930469520963324e+00
--2.1913971354518996e+01
--5.8128556633532549e+00
-5.6244403030194814e+00
--4.0241219519016376e+01
--2.4334974815440771e+00
--7.8369718364023182e+00
--2.1810317971276724e+01
--2.6685806131129062e+00
-2.0662340523714318e+00
--2.4979665441510438e+01
--3.7162770377250931e+00
-6.7448206160164392e-01
--2.4307704934898357e+01
--3.6144029473993271e+00
--6.3015145719822516e-02
--2.3245400294703725e+01
-2.4989041616442447e+00
-1.7939117067068691e+00
--2.0648706237333663e+01
--6.4288188187438655e-01
-2.0217218401356809e+00
--2.1835602695482940e+01
-4.9562786665158720e+00
--1.9537932184273366e+00
--2.0931759525275019e+01
--3.2936924747002170e+00
--7.7203689966365516e+00
--2.1867679612719744e+01
-4.2051574002773791e+00
-1.4507127979323684e+00
--2.1371721044279806e+01
-1.4563392357249339e-02
-1.2843143707876332e+00
--2.0933064205452023e+01
--1.2539192481779526e+01
-3.8367977983916157e+00
--3.7951709536214928e+01
-3.9960047836876660e+00
-1.3747927635331618e+00
--2.1160576477049919e+01
-6.4611603947262655e+00
--7.4267674976254110e+00
--2.2245413678137584e+01
-9.4299369613006778e+00
-2.0870759524417359e+01
--5.4495330862345646e+01
-9.4299369613006778e+00
-2.0870759524417359e+01
--5.4495330862345646e+01
-9.3127342620831755e+00
-2.0522094657635535e+01
--5.4879711503794553e+01
-1.7007203029444820e+01
-2.2578077632762266e+01
--6.0867568676263893e+01
-5.1451905393241404e+00
-1.8845209990544497e+01
--5.1835535897730850e+01
-8.8913093120529219e+00
-1.9270786464918480e+01
--5.6885318091561921e+01
--1.5039661991627598e+01
-1.1273587067733951e+01
--4.2985596234079033e+01
--7.5395144527654345e-01
-3.3501137185788883e+00
--2.3384572597956062e+01
--2.5603269710758441e+00
-7.5858542351667713e-01
--2.3282074778934813e+01
-1.3932493952328981e+01
-3.5152244513554354e-01
--3.0340285316275221e+01
-4.3153423694316322e+00
--2.3159185695319877e+00
--2.0497209025799545e+01
-1.2556974703592566e+01
--4.2573453784071500e+00
--2.6436392667533497e+01
-1.2931879279996854e+01
--5.8763819111330919e+00
--2.3974060638931732e+01
-6.0905487980606035e+00
-1.9743390358655681e+01
--5.2277796459002964e+01
-1.7008469229551775e+01
-2.2992161200073305e+01
--6.0100440306077992e+01
--2.1180907472054646e+00
-1.7064982602272647e+01
--4.6346036522711778e+01
--3.3842270313225264e-01
-1.7415240224514378e+01
--4.8442402498681183e+01
-8.0805906793066029e+00
-1.9398369157596427e+01
--5.5206671426368644e+01
-3.6740585078484043e+00
-1.8036945283479014e+01
--5.2282683390501866e+01
-8.6400010907954581e+00
-1.8400650061396664e+01
--5.7368438763753183e+01
-1.5879006045501680e+00
-7.8687143122261070e+00
--4.3402076516036530e+01
-9.0373810635770582e+00
-6.9405103926570852e+00
--4.1925648486712710e+01
--1.3928232742270819e+01
-4.7148688281239002e+00
--3.9219330808959221e+01
--1.2019442717803889e+01
-3.4344084460395683e+00
--3.7214660308785056e+01
-2.5509033294968830e+00
-1.7663875806268443e+00
--2.0631860238098319e+01
-1.3516242837073717e+01
-7.2452923734319152e-01
--3.2363205480351944e+01
-9.1656023466166481e+00
--4.2622331228066015e+00
--2.6307373412609667e+01
-1.1798896789761551e+01
--4.9358285858737050e+00
--2.5517438122345332e+01
-1.3628326577968103e+01
--5.1688166168159482e+00
--2.5011163666677035e+01
-7.4912879890158921e+00
--7.3037530237261468e+00
--2.2403983074247044e+01
-1.8103139998739557e+00
--8.3580463065192010e+00
--2.1037840804864999e+01
--1.5305382142934551e+01
-1.1300021261420586e+01
--4.3562001621287280e+01
-9.0764147563338966e+00
-1.3798497907097852e+01
--5.1539029055298130e+01
-1.3670759923019073e+01
-8.8698174847578759e+00
--3.8137502766355688e+01
-1.3830211769242560e+00
-9.3308791907343629e+00
--4.5405504989412727e+01
--1.4122683463371361e+01
-8.7401312744261936e+00
--4.4240132428643726e+01
-1.2429111721349919e+01
-5.7170921478467456e+00
--2.9505989472217649e+01
--1.5036647661397833e+01
-6.4465874269962473e+00
--4.1499460951861629e+01
--2.4071183440254247e+00
-6.2416933957616658e+00
--4.1125628222204057e+01
--1.2580906297497828e+01
-4.0832380387096121e+00
--3.8196142759566307e+01
-2.8598221452773148e-01
-2.4969598830717383e+00
--2.1512005861589536e+01
-4.0511856304833227e-01
-1.6126263900622604e+00
--2.0907101397320975e+01
-1.3263882013338991e+01
-1.4664948191355622e+00
--3.2645962756715392e+01
--2.5107891466275163e+00
-8.3014802692682066e-01
--2.3376256293481767e+01
-1.3493904409726863e+01
-1.2088739703868059e+00
--3.1189306413779221e+01
-1.3493904409726863e+01
-1.2088739703868059e+00
--3.1189306413779221e+01
--3.4958454658726694e+00
--4.2276850047345566e-01
--2.2873285337464505e+01
-1.2664735500389777e+00
--4.4306475741515028e+00
--2.1305993193485410e+01
-1.3949619388009310e+01
--5.1825595294712885e+00
--2.4912922142319939e+01
-6.5398047154622123e+00
--7.4774730931654529e+00
--2.2299786737173040e+01
--1.3702052302020391e+01
-4.6732246344262673e+00
--3.9171459086651438e+01
-8.5903665049249298e+00
-1.9001718579021048e+01
--5.6493304434290202e+01
-8.5111416355054736e-01
--1.2234186634552349e+00
--2.0663281817509791e+01
--6.3193636002860583e+00
-7.5341600679009835e+00
--4.2980564656077590e+01
-1.0964117335836409e+01
--5.8914612225528309e+00
--2.4169910388538860e+01
-8.0110196503297502e+00
-1.3906531403609042e+01
--5.1423735803525503e+01
-1.1292983527785337e+01
--5.7276997928704318e+00
--2.4480580688832404e+01
--1.4696686514123559e+01
-1.1023891676269479e+01
--4.2764998359090384e+01
-1.1752855672851929e+01
--5.4943781621676848e+00
--2.5011260853270834e+01
-1.1106722273572277e+01
--2.4299436926496232e+00
--2.9280800659867129e+01
--6.2514588416441148e+00
-5.9308933046690040e+00
--4.0778704454338673e+01
-3.3166558936139876e+00
-3.4550567809149464e+00
--2.2704211465668600e+01
-1.3318228231687849e+01
-8.3215675567779124e-01
--3.3186443679272735e+01
-5.0978228099470915e+00
--2.4452539410075578e+00
--2.0324432364518195e+01
-2.1338533823954555e+00
-7.8799458227697556e+00
--4.3346149429469975e+01
-4.7271470141012017e-01
--2.1146456969337224e-01
--2.0508315393579299e+01
--5.2180431126187266e+00
-4.9876386531246446e+00
--3.9479924709062310e+01
--6.3774465691787974e-01
-3.2916438622863153e+00
--2.3094523565554834e+01
-1.1306336578093720e+01
--5.9333320182252924e+00
--2.4128871424998586e+01
-4.9985484022576427e+00
--7.9716945361821834e+00
--2.1575277062940412e+01
-8.8824138653643949e+00
-1.1701656196373158e+01
--4.8652059619990837e+01
-8.8824138653643949e+00
-1.1701656196373158e+01
--4.8652059619990837e+01
--2.0966486345053648e+00
-2.9057165435796217e+00
--2.6039420170603403e+01
-1.3603107657138956e+01
-6.2026612627885114e-01
--3.2416951277624904e+01
-1.2338077752307319e+01
--4.2891201239115224e+00
--2.6253537644877166e+01
--3.7065844984128429e+00
-1.1521493087045162e+01
--4.8306876057804551e+01
-2.1417864313970769e+00
-1.0037606356649851e+01
--4.6262474376180620e+01
-2.0458107241435650e+00
-8.3041103488948789e+00
--4.4234122648003904e+01
-8.3935159451930890e+00
-5.9414448574343721e+00
--4.0646577043035521e+01
-1.1974111504695995e+00
-1.6404931505830527e+00
--2.0584606353315060e+01
--3.7155611436326659e+00
-1.4290165570228817e+00
--2.5404624649614899e+01
--9.5627933909219571e+00
-9.5414426334167024e-01
--3.3926196611918101e+01
-6.2378932071970556e+00
-9.5811179664924717e-01
--2.3696818469082185e+01
-4.2185780374490083e+00
-5.1482562513815244e-01
--2.1087698587777819e+01
-8.9913767047383519e+00
-1.5843943300622728e+01
--5.4878598999998573e+01
-1.3341086973646249e+01
-9.4796402175396466e+00
--3.9090515977461529e+01
--7.4382518979079464e+00
--1.7114681819650011e+00
--3.0224130861688646e+01
-1.2408724821554758e+01
--4.4256156611571988e+00
--2.6100282034722401e+01
-1.2394450161042021e+01
--4.8151487090869995e+00
--2.5653548745855083e+01
--4.7839512676642643e-01
-1.2546000166380276e+00
--2.1215659744244647e+01
--1.1488056990097069e+01
-8.3720955246417050e-01
--3.3891506997631723e+01
-1.8103139998739557e+00
--8.3580463065192010e+00
--2.1037840804864999e+01
-1.7954850833738827e+00
--8.2990548709461791e+00
--2.1103904422283524e+01
-1.3160725769870512e+01
-1.0552288630840215e+01
--3.9850461058075126e+01
-1.3179098490976285e+01
-1.0518919410756589e+00
--3.3856867622128561e+01
-1.2171176172240802e+01
--5.0067599819966997e+00
--2.5539152397795689e+01
-4.0648404391446116e+00
-1.7660859672497541e+01
--5.3480732980376970e+01
-9.6043040873215380e-01
-7.6920765576648957e+00
--4.3046466053387306e+01
-1.3762836868057676e+01
-1.0553372885311652e+00
--3.0014589505828521e+01
-1.3357085788029910e-01
--7.0292673611688700e-02
--2.0662979128922824e+01
-1.2015247090710805e+01
--4.7293992783021972e+00
--2.5870175709639000e+01
-8.9354366639452412e+00
--6.5379402965628408e+00
--2.3498280770543634e+01
-8.3009257053916787e+00
-1.5339617430757844e+01
--5.3230511123768110e+01
-1.3263429564236485e+01
-2.2024377562864315e+00
--3.1400603393447096e+01
-3.0291487985690346e+00
--3.1717206915719104e-01
--2.0408221525699755e+01
-1.3271882228092290e+01
-9.8477021228524162e+00
--3.9758218237869819e+01
--7.5053877311417869e+00
-2.1458795937944473e+00
--3.5535628195139154e+01
-9.8616155810930728e+00
-8.3031126545561342e+00
--4.3664681622763098e+01
--1.4284906278022563e+01
-4.8292784594384965e+00
--3.9361839454314406e+01
-3.1037723426307888e+00
-7.9966899281386417e-01
--2.0501330933365843e+01
-2.2434011589569871e+00
--2.7938148473457907e+00
--1.9869190389266116e+01
--5.3208688520254954e+00
--7.2722748680994087e+00
--2.2616195981515965e+01
-7.0116796500545142e+00
-1.3508679764815367e+01
--5.0937466358844574e+01
--1.3759303661254910e+01
-4.8638646800544576e+00
--3.9464536602641530e+01
-3.6447776936977290e+00
--5.0857946115779713e+00
--2.3090409709202621e+01
--4.4382349786019812e+00
--6.7440186388070025e+00
--2.3270173887304864e+01
-9.9359006126196565e+00
-7.9758993809099845e+00
--4.3405847537359548e+01
-1.0241113081942251e+01
-7.7113908124088555e+00
--4.3001103991705989e+01
-9.0447092519692998e+00
--5.9880714724673645e+00
--2.4308293820000888e+01
--4.4909896861159098e+00
--6.8724050664241672e+00
--2.3108934565718798e+01
--1.5743094616210440e+00
--1.6682707015354972e+00
--2.1263121710078867e+01
-1.3013461588896147e+01
-1.2475992595816065e+01
--3.5564616096648990e+01
--1.4555104731375357e+01
-1.0994496924900673e+01
--4.3859595866255887e+01
--9.4509639939295553e+00
-1.2418969036634985e+01
--4.5108450107187984e+01
--1.4339468751624098e+01
-6.0038845176848534e+00
--4.1090341723953649e+01
--6.7823527410745674e+00
-8.0805711367149229e+00
--4.3601850923488904e+01
--1.0830296038200238e+01
-7.8624292449450204e+00
--4.3510729044401401e+01
--1.1868401868346989e+01
-1.1792532887649196e+01
--4.3903242262845467e+01
--1.3891162713796371e+01
-1.2392483708280208e+01
--4.2523490493178372e+01
--9.2032784555554183e+00
-2.4525890936354187e+00
--3.6016813992783284e+01
--1.1918877058758172e+01
-1.2747254698288964e+01
--4.1399661299578050e+01
--1.3893382705287895e+01
-1.0390753722845769e+01
--4.3775554552628797e+01
--1.4741004243681601e+01
-5.9369003355830419e+00
--4.0883430200716710e+01
--1.1507345496623614e+01
-1.5480015595370675e+00
--3.4672613903269713e+01
-1.0042690015000376e+01
--5.2289285838542332e+00
--2.5337389981938664e+01
-7.7456812110012041e-01
--8.3537518997527958e+00
--2.1099456298468716e+01
--3.8865535103122122e+00
--8.0351894650624196e+00
--2.1529545186353225e+01
-6.5692083812016451e+00
--4.1189600396648557e-01
--2.2977677027019929e+01
--5.6174247318127852e+00
--6.8730921630130846e+00
--2.3168825867852018e+01
-2.3403361659543149e+00
-8.4496231610269890e-01
--2.0298091640145866e+01
--1.1958940949508195e+01
--7.9781770209316614e+00
--2.1509594114983333e+01
-4.2222698826765690e+00
-1.0209912711984941e+00
--2.1178233244684119e+01
--4.8652082464933253e+00
--1.6683181694806248e+00
--2.7185311936182334e+01
--1.0631247037282385e+00
--1.9825906150864017e+00
--2.0848389309033042e+01
-1.2096609926758215e+00
--4.9805972137907091e+00
--2.1900069759923387e+01
--2.8039828235310353e+00
--1.0880995556658524e+00
--2.1991851940352401e+01
-3.9065765217816186e+00
--2.2978421373572657e+00
--2.0471828306903515e+01
-8.9228164771846996e-01
--2.9545095364758618e+00
--1.9584222707019482e+01
--4.6098509173599052e+00
--7.8195859374296619e+00
--2.1846702719209507e+01
-2.5723531633014236e+00
--1.0903145774099459e+00
--2.0555162436160337e+01
-1.0310139966982959e+00
--3.9082541459066444e+00
--2.0493295260218503e+01
-2.4151200151072256e+00
--4.8453448150413658e+00
--2.1812908364978391e+01
-6.3053326004754873e-01
--2.7782906408992716e+00
--1.9821245717196685e+01
--1.1666855069624726e+01
--7.8267416090264730e+00
--2.1775493461471886e+01
-3.1205709924114022e+00
--3.0269648385290480e+00
--1.9555840518310109e+01
-1.5059053360798051e+00
--2.9947472053132137e-02
--2.0209533121337799e+01
--5.6419209308858633e+00
--8.3823679000049633e+00
--2.1033014428861396e+01
-2.1526040318765691e+00
-1.9174011797833795e-01
--2.0177854159910485e+01
-2.3732465147213802e+00
-3.9477148153655878e-01
--2.0218587908576847e+01
--2.8106545444992714e+00
--8.1342803688558352e+00
--2.1266276509012695e+01
--1.0631247037282385e+00
--1.9825906150864017e+00
--2.0848389309033042e+01
-4.2222698826765690e+00
-1.0209912711984941e+00
--2.1178233244684119e+01
--1.5114391087087109e+01
--7.0141439364391465e+00
--2.2916930562927650e+01
-7.2289746295786186e+00
-1.6668222965157564e+00
--2.5760881530064999e+01
-3.5914880859622320e+00
--3.7811457520767369e+00
--2.1013431997378728e+01
-3.0938573159823073e+00
-8.3003778796933003e-01
--2.0499261502081289e+01
-1.5254136353441676e+00
--5.8302051553390810e-01
--2.0324865103133774e+01
-1.6669235710254400e+00
-6.5622110148331492e-01
--2.0253640932777024e+01
-1.9705423046840083e+00
--1.6630140749258546e+00
--2.0205926877767780e+01
--4.8624933584377290e+00
--7.1515795556335338e+00
--2.2754974296532936e+01
-1.3253829581599383e+01
-1.0810959347325333e+00
--3.3249590595006794e+01
-2.4221915626642825e+00
--3.0027407658711885e-01
--2.0293202127022653e+01
--4.0539655992638117e+00
--7.8488272429732913e+00
--2.1577153895080428e+01
-2.5750630073127301e+00
-4.3923317445077131e-01
--2.0269358854630735e+01
-3.9981536001123557e+00
-4.3479579231106003e-01
--2.0884255205775339e+01
--4.6594441238042172e+00
--8.3068351293044138e+00
--2.1208035389287083e+01
--3.4889658807346118e+00
--7.7722603933277670e+00
--2.1838655124324969e+01
-2.5059432158109813e+00
-7.6281022128200004e-01
--2.0302820787290958e+01
--5.7269945890475045e+00
--7.3103224783837657e+00
--2.2566614717293049e+01
-9.7550334186326293e-01
-6.0269025096775286e-02
--2.0316338453583551e+01
--1.1274593233235868e+00
--2.3861248646509345e+00
--2.0186684657512462e+01
-5.8938744463796433e-01
--2.5790472150644010e+00
--2.0087017415817744e+01
-9.1950394416793746e-01
--2.9972014855124112e+00
--1.9575410640846492e+01
-1.3435824114824896e+01
--5.2734737006403360e+00
--2.4892593259297382e+01
--3.7906116896556181e+00
--8.0645716751807033e+00
--2.1487260672663023e+01
--2.5752919556837877e+00
--8.1053529327964249e+00
--2.1425835134687361e+01
-4.3258237852244701e+00
--5.0460728784981546e-01
--2.1201337074350938e+01
-3.6403334045384472e+00
--1.7935843259620676e+00
--2.0616107547992886e+01
--1.3486289397360482e+01
--5.9978959185780534e+00
--2.4342271871398939e+01
-4.4159224744180809e+00
--2.8165918815182809e+00
--2.0613927242704303e+01
-3.5852991356578983e+00
--4.0853524843588058e+00
--2.1379914171086998e+01
-1.2458558478417242e+01
--4.5762611817549006e+00
--2.6050682121107979e+01
--4.0456272663881361e+00
--8.0438753476350122e+00
--2.1572210102443130e+01
--1.9014424310636218e+00
--8.3419561906815911e+00
--2.1041805618012098e+01
-1.3874226982278620e+01
-3.1195399574295224e-01
--3.1041334882783335e+01
-4.8372219589277918e+00
--1.3399039825993764e+00
--2.1248434878331633e+01
-4.4403501668561782e+00
--2.3897041448235705e+00
--2.0387082195220902e+01
-1.0567794480802002e+00
--4.9641686246965069e+00
--2.1740172680080015e+01
--3.6253568407289674e+00
--7.7449791966312116e+00
--2.1930341870669235e+01
-1.2399093190942750e+01
--4.6125605586763738e+00
--2.5710575382380060e+01
-3.2256121910512880e+00
--5.6347822106894951e-01
--2.0569289111224300e+01
-3.1794385360386150e+00
--5.3321499108596337e-01
--2.0573774152983891e+01
-3.2319758474670000e+00
--6.9427695061720729e-01
--2.0644672016433077e+01
-3.9308843854627571e+00
--3.1927909261170515e+00
--2.0616544007543251e+01
--3.9325543200142734e+00
--8.0792330465333695e+00
--2.1488374786935740e+01
--3.3163908992944595e+00
--7.5534508728891101e+00
--2.2092031857613456e+01
-3.1646128779260030e+00
--1.0929551707971894e+00
--2.0744337643177058e+01
-9.3301469373042478e-01
--2.9332010772871002e+00
--1.9608614246702292e+01
--2.1340440459105348e+00
--7.8760768457409949e+00
--2.1740767539276209e+01
--6.6038001239388044e-01
--3.7940512370094082e-01
--2.1285279719955508e+01
-6.5836545086603127e-01
--3.1259148464267228e-01
--2.0429115572348955e+01
-4.2721945939893260e+00
-7.9063202653962106e-01
--2.1178565797797368e+01
-4.9711711877617484e+00
--2.2607384193584257e+00
--2.0577268449781744e+01
-2.1888879734701212e+00
--3.1044541535400465e+00
--1.9941835375025200e+01
--3.3366588731656379e+00
--8.1445603659970480e+00
--2.1447042881277007e+01
--2.5860774069680170e+00
--8.2289652307678551e+00
--2.1357376849666636e+01
--2.5860774069680170e+00
--8.2289652307678551e+00
--2.1357376849666636e+01
--7.3178414440644177e+00
--3.1630148063138677e+00
--2.8251518794117722e+01
-3.5397090461772733e+00
--2.5410343689140618e+00
--2.0211109912125071e+01
-2.2434011589569871e+00
--2.7938148473457907e+00
--1.9869190389266116e+01
--4.6498902029268629e+00
--6.6924832316279321e+00
--2.3362454256217461e+01
-2.9702333977074797e+00
--5.0823351850515266e+00
--2.1986761659880944e+01
-1.3048138000112697e+01
--4.6154169209874896e+00
--2.5924114166532924e+01
--3.5695731664688179e+00
--7.4705689294472757e+00
--2.2278732111923798e+01
-4.0977354447030194e+00
-9.9446596505292173e-01
--2.1089169895077838e+01
-5.8563178329507437e+00
--7.0143454917780479e-01
--2.2187267700660673e+01
-1.9163362624045617e+00
--1.3984888846917263e+00
--2.0538962542729557e+01
-3.7197542694787606e+00
--2.5024200388656719e+00
--2.0182084182412893e+01
-4.5357486249483188e+00
--4.3794994808927452e+00
--2.2339500706151856e+01
-3.3063790358364842e+00
--4.4219664058674324e+00
--2.1389041065813068e+01
-4.6525671995839684e+00
--4.4629431185990498e+00
--2.2545461053005987e+01
-2.3295725319386302e+00
--4.7390228840007662e+00
--2.1624073914633264e+01
-3.4388684097422217e+00
--4.7728154575476358e+00
--2.1969356443602884e+01
-1.2342661534666666e+01
--4.7075338943001288e+00
--2.5836517197260580e+01
--2.4013286687013675e+00
--7.9202479849286505e+00
--2.1678306725935677e+01
-4.8365422131977578e+00
-1.0258381277756476e+00
--2.1749144684431545e+01
-4.8365422131977578e+00
-1.0258381277756476e+00
--2.1749144684431545e+01
-5.0636753825798060e+00
-1.0355299019085775e+00
--2.2021481943969150e+01
-3.2036687856103243e+00
--3.1187483018511410e+00
--1.9710702926116440e+01
--3.3614421396736764e+00
--7.9991330263198632e+00
--2.1557219301704446e+01
--2.7376328704697159e+00
--8.1824250307885293e+00
--2.1336678151250592e+01
-3.0109412415199499e-01
--2.7357015838496133e+00
--1.9977374016645328e+01
--4.7848666862141531e+00
--7.2795721819600505e+00
--2.2578652154582798e+01
-6.1321609723028994e+00
--6.4481806931466668e-01
--2.2529805616506099e+01
--2.6829648022075858e+00
--8.1224042830518997e+00
--2.1457725695299633e+01
-8.4739164947846779e-01
--2.8409771273503930e+00
--1.9690535976144979e+01
-5.0907242561038890e+00
--3.4304872585822950e+00
--2.1888824480537153e+01
-6.2407311715735627e+00
--2.9902640131572813e+00
--2.3130412926073408e+01
-5.3977402751110821e+00
--2.9595156383118009e+00
--2.1473191017388892e+01
--3.1066355991829324e+00
--7.8251124869151694e+00
--2.1980012970103076e+01
-1.1033653264510974e+01
--2.4858268761521845e+00
--2.9184724223849667e+01
--5.2072421239368119e+00
--7.2128455386642223e+00
--2.2738750894594123e+01
-3.3103219296255229e+00
--8.1919316297221076e+00
--2.1252620152721047e+01
-9.6952948183416972e+00
--5.1310524655935588e+00
--2.5361419295132208e+01
-1.0743856366662536e+01
--6.2121624269260298e+00
--2.3559592076612063e+01
-2.8774541946385401e+00
-2.6175487590016788e-01
--2.0350260737277193e+01
--2.5852535897137372e+00
--7.8489130790016146e+00
--2.1817604864169876e+01
-1.3200579920839935e+01
-1.6923955376636566e+00
--3.2179613536181520e+01
-1.9830812895689591e+00
--2.5083368273800133e-01
--2.0221129298488613e+01
--3.3590486440907332e+00
--7.7949518879148370e+00
--2.1916562792014041e+01
-1.4602846279300122e+01
--1.4648400628726796e+00
--2.9625599557407011e+01
-2.5874722320910846e+00
-2.7158870501989679e-01
--2.0278689957237155e+01
-1.1660629301691609e+01
-2.3047859596922411e+01
--5.3725941787245709e+01
-1.3910607935379604e+01
-2.4029471955769836e+01
--5.4791633121728715e+01
-9.3097130539461972e+00
-2.0237909859638826e+01
--5.5227347218465859e+01
-3.0964355135197907e+00
-1.9774970538545624e+01
--4.9224284018070058e+01
-9.1494019431347215e+00
-2.0064131475514820e+01
--5.5637196764843011e+01
-1.4799294288135419e+01
-2.1337472323516639e+01
--6.0170465461075892e+01
-1.6322659833894612e+01
-2.2974888830552921e+01
--5.9206746434869117e+01
-1.1902551523621256e+01
-2.3439133139746595e+01
--5.3321046678220327e+01
-9.4124616179643255e+00
-2.2842129106103201e+01
--5.2084272646145273e+01
-9.2119937285609943e+00
-1.9835519289761731e+01
--5.6012535089864450e+01
-9.5519235320558438e-01
-2.0394389139006865e+01
--4.5336931689000593e+01
-1.6199577935180077e+01
-2.1716794423381288e+01
--6.1262657679775174e+01
-2.0339228278996757e+01
-2.4587899508555846e+01
--6.1880459758375679e+01
-1.7167905038614499e+01
-2.3547743169270994e+01
--5.9240768733563613e+01
-1.9519133649107449e+01
-2.2727686698558454e+01
--6.3076191774191948e+01
-4.5337067559683044e+00
-1.9839955475219544e+01
--5.0518284708350890e+01
-1.8620177832816047e+01
-2.2242597402121145e+01
--6.2656899098132129e+01
-5.2052895870449500e+00
-1.8699308192572349e+01
--5.2714009580978718e+01
-8.9236016423436961e+00
-2.0373462240544669e+01
--5.4835025372651167e+01
-3.7761841498685560e+00
-1.8302749540611757e+01
--5.1972603909939423e+01
-1.9647509297258441e+01
-2.2692078837118750e+01
--6.3342622407054172e+01
-1.5703202606061886e+01
-2.1496342049228083e+01
--6.0822707595696627e+01
-9.8803530725750424e+00
-2.1616966681072896e+01
--5.1876091663901498e+01
-9.8803530725750424e+00
-2.1616966681072896e+01
--5.1876091663901498e+01
-5.7079459752896220e+00
-2.0189499678528225e+01
--5.0771887755984061e+01
-1.4293065373250652e+01
-1.8178182725007577e+01
--5.7435055024773327e+01
-4.8245344363510476e+00
-1.9942954877846297e+01
--4.9222009563225861e+01
-1.9866822457190736e+01
-2.3308713929839108e+01
--6.4396612216642154e+01
-1.9556084214135343e+01
-2.3290498662729821e+01
--6.4215458999539550e+01
-6.1489079251854930e+00
-2.1167576489337087e+01
--5.0736883770817002e+01
--3.6689746516679231e+00
-1.7135175560201752e+01
--4.5039426683517803e+01
--2.6790562059687223e-01
-1.7806140610526207e+01
--4.7698695936754277e+01
--6.7263058732902410e+00
-1.6764880791018332e+01
--4.1921501231668806e+01
--1.3876572588760052e+00
-1.7682807432754519e+01
--4.6896931881171518e+01
--6.4531025201537027e+00
-1.5062591510793911e+01
--4.4591783502413385e+01
--1.3690360232673466e+00
-1.9115674505046542e+01
--4.4423929919066325e+01
--9.1951998582506107e+00
-1.5352354107480782e+01
--4.0995285033673071e+01
-8.1025036515945947e-01
-1.4751529900191709e+00
--2.0659453366992860e+01
-1.1558779002185624e+00
-1.2607699581506024e+00
--2.0448995338556916e+01
--7.1968679386323675e-02
-3.4234251884250715e+00
--2.2783372588573823e+01
--2.5939172759193752e+00
-2.0638364578912127e+00
--2.4993726146356369e+01
-1.4511701972882793e+00
-4.8730386745798798e-01
--2.0228272482056457e+01
--1.3762650861705122e-01
-2.0768327808103981e+00
--2.1610792379343192e+01
--8.2350703988850071e-01
-2.7432806339292575e+00
--2.2701177563726983e+01
--6.2581293554406014e-01
-2.6020899903769648e+00
--2.2279655439173094e+01
--1.2223387204561469e+00
--2.0914655143360781e+00
--2.0714773329204423e+01
--2.8141615783987199e+00
--1.0294180061018374e+00
--2.2091448307029307e+01
-4.3368295489963216e-01
--2.4915210280850797e+00
--2.0212464466665583e+01
-1.3726730996277108e+00
--2.7423603027074597e+00
--1.9977767626446195e+01
-3.3344097875782375e-01
-2.9125821228152109e+00
--2.2356929344368051e+01
-1.4495366343373648e+01
-2.2422067545205373e+01
--5.7492689919924885e+01
--2.7848271056022895e-02
-1.8284844262011028e+01
--4.7034193332098987e+01
--5.7689837208511294e+00
-5.3775708905373900e+00
--3.9965286260958180e+01
--1.5999195522317483e-01
--4.9104945064183725e-01
--2.0962631929888150e+01
-4.4284709236176170e+00
-1.1102629904349361e+00
--2.1460457653052927e+01
-4.7120727922046823e+00
-1.7640923374339270e+01
--5.3886023264530110e+01
-3.6680888429495915e+00
-1.9181019151354086e+01
--4.9886005108789320e+01
-1.4483950280227409e+01
-2.2586428806170034e+01
--5.7204588938571973e+01
-1.3855588178177083e+01
--1.2798342565651494e-01
--3.1912600508593261e+01
-1.2960465399175254e+01
-1.0584819103940713e+01
--3.9899891760152570e+01
--1.6467625173753213e+01
-8.5476790365781028e+00
--4.3037000316229438e+01
--9.3365135222360252e+00
--6.9142670559890433e+00
--2.3030838983877246e+01
--1.0578872620269877e+01
--7.3684923139254721e+00
--2.2371549465263449e+01
-1.3915038038725044e+01
--3.2022747898448839e-01
--3.1868014320612321e+01
-1.3104432905573586e+00
-2.0545353846210084e+01
--4.6206702044858169e+01
-1.3205139586079692e+01
-1.1844485087911602e+01
--3.6343997707380311e+01
--9.3365135222360252e+00
--6.9142670559890433e+00
--2.3030838983877246e+01
-7.1804883064273879e+00
-2.1299865352717770e+01
--5.0552625520733038e+01
--9.1118087577147637e+00
-3.3136760312299036e+00
--3.7361316722552893e+01
--1.3933848707282639e+00
-1.7937497338633300e+01
--4.6569810356910011e+01
-1.3037702586808262e+01
-2.4444937891851463e+01
--5.3461856759954060e+01
-1.2715200409184488e+01
-3.9055335952735266e+00
--3.1540467492040104e+01
--9.1949937501977050e+00
-3.2595810690946743e+00
--3.6884850018962020e+01
--2.9750945271555516e+00
--7.9863657801286312e+00
--2.1597293460027014e+01
--7.3680195636654995e+00
--2.1663973669890120e+00
--2.9631840874712857e+01
--1.1248026876512398e+00
-1.1193717421097653e+00
--2.1864934202987587e+01
--2.0511902201770984e+00
--1.6533493367747496e+00
--2.1303248101104639e+01
--2.8586084831126417e+00
--3.2913415826312531e+00
--2.3638593361484958e+01
--1.0221597603121511e+01
-1.8590492718869103e-02
--3.2624906073438289e+01
--1.1554251362069449e+01
-2.3081743193303228e+00
--3.6085107764623345e+01
-8.2169374439177414e+00
-9.6668267832897694e+00
--4.5720330383796508e+01
-1.3274533106429757e+01
-9.5736827059355800e-01
--3.3474448961644136e+01
--7.6230033943814739e+00
-2.4610163915945389e+00
--3.5927936132385817e+01
-1.2960465399175254e+01
-1.0584819103940713e+01
--3.9899891760152570e+01
-3.2247649478667251e+00
--2.5350087425851071e+00
--2.0192474647537143e+01
--2.4335776857066782e+00
--1.2023912308880913e+00
--2.1850555270040978e+01
--3.3036101229872559e+00
--7.4108832590417144e+00
--2.2453112769332392e+01
--9.8883433431976542e+00
--1.0109191560477737e+00
--3.1425746533414710e+01
--4.3840756266655054e+00
--7.0354409272681764e+00
--2.2900294040581819e+01
--2.0040468158203439e+00
--8.5757610452385560e+00
--2.0782653609124999e+01
--2.9384583776215725e+00
--7.9085388245100896e+00
--2.1646666850194340e+01
--4.8020105465236975e+00
--7.1929017997942326e+00
--2.2697147591853007e+01
--3.9515838874682085e+00
--7.4482308594593238e+00
--2.2355501385153506e+01
--3.5984981490621957e+00
--7.5135158482289492e+00
--2.2166009940383471e+01
-1.1376532256276466e+01
--6.2243168845470240e+00
--2.3750776668723024e+01
--7.9466628877395760e+00
-1.4094944814618135e+01
--4.4589357324150086e+01
-2.0003214114334287e+00
--3.0961357854288396e+00
--1.9839536031260774e+01
-1.4685215359552168e+00
--4.5757670931108252e-01
--2.0293771207288117e+01
--4.6052694114521548e+00
-1.7951919611063843e+01
--4.2523754417936800e+01
--1.2918446598662070e+00
-2.0490934487882898e-01
--2.1930684244210848e+01
-1.1090708118878478e+01
-2.2996995411670877e+01
--5.3150657625255086e+01
--9.3764365700655361e+00
-2.4403905467857907e+00
--3.6004000216268857e+01
-2.6989967233660739e+00
-2.1213395136445286e+00
--2.1124463676070963e+01
-4.8742833535298580e-01
-2.1603412919635541e+00
--2.1161259144310900e+01
--7.5035621525000460e+00
--2.1085569984469554e+00
--2.9649371537126690e+01
-6.6885169929453978e+00
--1.7045690278232412e-01
--2.3267293242127909e+01
-1.4213093824689436e+01
-2.1529845152445358e+01
--5.9038473088206651e+01
--1.2813241400212751e+00
-4.5559734371783145e-01
--2.1889356502093751e+01
--1.1109630566613056e+01
-3.2195585579501067e+00
--3.6752941549606319e+01
-1.2445299649373368e+01
-5.3875876850807574e+00
--2.9382437043453891e+01
-1.1467548520356379e+01
-2.2781171130702660e+01
--5.3691950714412251e+01
-1.3730640136319977e+01
-9.1897694374299839e+00
--3.7589239387353793e+01
-1.0780072914556969e+01
--2.8718784230737193e+00
--2.8655792755823704e+01
-1.3016021828426789e+01
-1.3846185409024574e+00
--3.4106260676408901e+01
-1.3487911949117155e+00
-9.3978582780412867e-01
--2.0246196913749593e+01
--6.2624111951824863e+00
--4.3962735561242772e+00
--2.6523649790429975e+01
-2.5077540683907755e+00
--6.1723053374590933e+00
--2.1859757561420579e+01
-1.3915038038725044e+01
--3.2022747898448839e-01
--3.1868014320612321e+01
-6.5489496845156303e+00
-2.1045845476320839e+01
--5.1110512633982225e+01
-2.5701985996796228e+00
-1.6840679115236727e+00
--2.0668339821335767e+01
-1.3646317966915948e+01
-9.6098299305088126e+00
--3.7619388945402271e+01
-1.9481634356890942e+00
--1.5627927062938363e+00
--2.0328953525573812e+01
-3.7461458825913447e+00
-1.7522756123847895e+01
--5.2792503396480697e+01
--1.7226773416962524e-01
-3.2874103921678168e+00
--2.2620990478873040e+01
-1.2961069421563579e+01
-2.7743150837047619e+00
--3.1652399275233854e+01
--1.5543818093683472e+01
-6.9299825518409088e+00
--4.2185309094543562e+01
--8.6099882817824493e+00
-1.4184715438098344e+01
--4.3274619236020072e+01
--5.2496615835907443e+00
-1.0521001640479993e+01
--4.6959988289204880e+01
-1.4974688826593811e+01
-1.3648002505225264e+01
--5.1315588911625575e+01
--8.5860275291938564e+00
-1.1894772758731484e+01
--4.7464706949791172e+01
-3.0955928683259200e+00
-1.9492018627884207e+01
--4.9288605043090264e+01
-1.6053100705051175e+01
-2.2891696275047980e+01
--5.9055726072674453e+01
-1.6683528185377526e+01
-2.2730052261304134e+01
--6.0085830466663616e+01
-2.4674221496705360e+00
-1.9182089182145596e+01
--4.9030424628147529e+01
--5.3022941867225981e+00
-1.5843506478856305e+01
--4.4756849746947417e+01
--3.0107337529022327e-01
-1.7532729674653275e+01
--4.9186838125829986e+01
-1.0228704093038790e+01
-2.0229397221307682e+01
--5.7076294795885651e+01
--5.1512495654173769e+00
-1.3181329773544604e+01
--4.9418764441055536e+01
--8.8107473326728574e+00
-1.1721406703263373e+01
--4.7851545620603453e+01
-9.9796811397020626e+00
-1.9405655076247324e+01
--5.7511832177720038e+01
--1.0044166705141970e+01
-1.3647180871666171e+01
--4.2659347203495003e+01
-1.0517378990831508e+01
-2.0821394107165414e+01
--5.5728121464106081e+01
-1.0228704093038790e+01
-2.0229397221307682e+01
--5.7076294795885651e+01
-1.2614540865026973e+00
-1.7090188631705796e+01
--5.1095798332516928e+01
--5.5376041742924329e+00
-8.4304840039888500e+00
--4.4029788202574842e+01
-8.1185346765446411e+00
-1.9587123696642205e+01
--5.4877759417152980e+01
--3.6859049967132971e+00
-1.6145535980166645e+01
--4.5903096090200933e+01
-1.5202308298317805e+01
-2.1285041856953658e+01
--6.0293136139825492e+01
-1.6712100677519925e+00
-1.9196829397060760e+01
--4.8506136567703045e+01
-9.6908737314880504e+00
-1.9199033244875629e+01
--5.7440615961127882e+01
-4.0672977599588593e+00
-1.8257918920518719e+01
--5.2216526988067038e+01
--1.0116366597908868e+01
-1.4107396842048257e+01
--4.2086211787765578e+01
--8.5658146954560999e-01
-1.7919325902180002e+01
--4.7217819225476738e+01
--2.5384486548677310e+00
-1.7661504159322849e+01
--4.5537031483646494e+01
--8.7141972555347091e-01
-1.7669835295772682e+01
--4.7296820206435726e+01
--3.5029091361549353e-01
-1.8485462233339295e+01
--4.6601055258457883e+01
-1.0586386198046137e+01
-2.1151132342087273e+01
--5.5744280852739116e+01
-1.6570821638514875e+01
-2.1895929382631568e+01
--6.1473289101314244e+01
-1.5103265338138426e+01
-2.2068235261418671e+01
--5.9262288420195134e+01
--3.5275616806954155e+00
-1.6971242738843220e+01
--4.5362607830617698e+01
--1.3876572588760052e+00
-1.7682807432754519e+01
--4.6896931881171518e+01
--3.0444966237707867e+00
-1.7034979776664180e+01
--4.6094749697458447e+01
--4.2767284326996728e+00
-1.5602156568584023e+01
--4.6687828644446697e+01
--6.1088506841646950e+00
-1.2838381983931802e+01
--4.8946453691616192e+01
--1.2821312630746135e+01
-1.3996267904596378e+01
--3.9100427856786261e+01
-1.1809974198775313e+01
-2.3626737097679250e+01
--5.3080767156582837e+01
-8.1268823562677674e+00
-1.8112825839462413e+01
--5.7074211908403420e+01
-1.6571645591222829e+01
-2.1977395812067801e+01
--6.1118723135849798e+01
-3.2015974115959245e+00
-1.9377624955235529e+01
--4.9230247836063640e+01
-1.6389449327555038e+01
-2.1500172807642031e+01
--6.1792327946596664e+01
-4.5951910844975243e+00
--6.7916868229928179e-02
--2.1403355459080768e+01
--2.9736233892701751e+00
-1.7482440371968359e+01
--4.5307333226147932e+01
-1.3090432829752803e+01
-2.3444455124794472e+00
--3.2067907590419942e+01
-1.2789427052596047e+01
-2.7740479421423809e+00
--3.2963841284818827e+01
-1.3712267297729898e+01
-2.1948896597534080e-02
--3.2389556037845765e+01
-6.7782919752498492e+00
--3.0455617939944946e-01
--2.3078771696080633e+01
--3.6470151286056200e+00
-4.4031793964120508e-01
--2.4016757817571637e+01
-6.2421315238892605e+00
--7.3270296501384213e-01
--2.2457499269747338e+01
-1.2627240245327028e+01
-3.4974039738060507e+00
--3.2950192917609044e+01
-1.5104831630083644e+00
--7.1757457560296711e-01
--2.0390821334075763e+01
-1.3627709758609464e+01
-3.8257572243464194e-01
--3.2154376357131405e+01
--1.0476938524522554e+01
-8.8441102768377056e-01
--3.3842067674955430e+01
--2.4516160934777029e+00
-2.5460003030299307e+00
--2.5644495564265437e+01
--3.3610945794332987e+00
-1.3088026802454060e+00
--2.5061468159079070e+01
-4.0070664003364413e+00
-2.8683052682565555e+00
--2.2239570223129910e+01
-6.2340101096147360e-01
-1.4895461681873992e+00
--2.0792979435955445e+01
-9.3543756976301973e-01
--2.8539927896216502e+00
--1.9726841902177352e+01
-4.3195840363775559e+00
-2.5368668841749482e+00
--2.2205596356869794e+01
-6.4351859455813267e+00
--4.1220391144480661e-01
--2.2953689487863567e+01
-4.2723050615127818e+00
--1.2042550852524558e+00
--2.0768899292642470e+01
-4.2479727786673784e+00
-2.0465157235694096e+00
--2.1720040202666979e+01
-4.3555477449545243e+00
--9.8429200749803003e-01
--2.1167197245757528e+01
-3.1348868172200501e+00
--2.9371009473319925e+00
--1.9690335865788573e+01
--1.8363981976343207e+00
--1.7332355663701120e+00
--2.1170533218435111e+01
-3.9862393872668873e+00
--1.2837499332686237e+00
--2.0774728868641041e+01
-5.4870378946543841e-01
-1.9087190688625493e+00
--2.0976447538052909e+01
-3.2962736648823934e+00
--1.9902078463405068e-01
--2.0562621099981421e+01
--3.6045401441079541e+00
--7.2334094012535184e+00
--2.2634758629464955e+01
-3.4477701409750106e+00
--2.0913802095770051e-01
--2.0615269154143281e+01
--2.6490029398466088e+00
-1.8260871970888042e+00
--2.4637792576335812e+01
-2.6259249457176645e+00
-1.4162538714225479e+00
--2.0515404383640142e+01
-5.6296120981293827e+00
--1.6952057572358441e+00
--2.1303427854454256e+01
-3.2557971177118827e+00
--1.5119841871237103e+00
--2.0399112365635613e+01
-4.3102328902655724e+00
-1.9214759458771944e+00
--2.1695296736190009e+01
-7.5516563728827384e+00
-8.8099386822170835e+00
--4.4603437303996508e+01
-5.7560376466313059e+00
--1.1007347920644295e-01
--2.2269399607029769e+01
-4.1139109515244016e-01
--1.3925169841049132e+00
--2.0473060102520986e+01
--8.2261775659396292e+00
-7.1826379863571743e+00
--4.2674793176182625e+01
-4.0350168746830786e+00
-3.0381725390120864e+00
--2.2497460895006242e+01
-4.9292814566550414e+00
-1.1338212143145481e+00
--2.1876218863968269e+01
--9.4942403043813126e+00
--2.2873881378904430e+00
--2.9551864989975623e+01
-2.4009505302322993e+00
-1.8254181705421175e+00
--2.0676856386738208e+01
-2.0223545662977349e+00
--2.7234098016555932e+00
--1.9891744079627166e+01
-2.8501547141161478e+00
-1.3012466648646290e+00
--2.0565806537088250e+01
-7.9131367394000562e-01
--2.4441096558648461e+00
--2.0265169444589219e+01
-2.4392471622867062e+00
-1.0351098907017782e+00
--2.0398988956730975e+01
--6.9097232239267932e+00
-8.2399258785463392e+00
--4.3875723092611175e+01
-2.9382468790999003e+00
-2.0355428966001345e+00
--2.0951093606932787e+01
-4.1126031841247537e+00
-1.6233109118348483e+00
--2.1274639217268060e+01
-4.4524440472475710e+00
--1.0160030898154579e+00
--2.1062699158913432e+01
-4.3119842355712157e+00
-1.5842957053299749e+00
--2.1451408185254365e+01
--1.2223387204561469e+00
--2.0914655143360781e+00
--2.0714773329204423e+01
-5.8938744463796433e-01
--2.5790472150644010e+00
--2.0087017415817744e+01
--2.5940533170809958e+00
--3.0053299503764550e+00
--2.2987875469521640e+01
--3.0094091462176653e+00
--4.8879819999932528e-01
--2.2692105596964769e+01
-2.8919375121991164e+00
--1.6119527628206558e+00
--2.0287260732358828e+01
-3.5095026031710765e+00
-1.2116139504193144e+00
--2.0829616922448071e+01
-4.4089055151092307e+00
-2.4526132911002558e+00
--2.2231271483966758e+01
-2.0710391117420732e+00
--1.4156559319013489e+00
--2.0536874144290472e+01
-3.5107078645102892e+00
-1.9960083760024971e+00
--2.1191543702519205e+01
-3.8821398525698076e+00
-1.6608321883281389e+00
--2.1235350891391260e+01
-6.1280534829917128e+00
--7.9359599312258400e-01
--2.2452201864572153e+01
-3.6917702264072565e+00
-8.0234380402858785e-01
--2.0747172222902158e+01
-4.8710493838713766e+00
-3.5351306314559267e-03
--2.1647691766823193e+01
-3.6752709360391744e+00
--1.8482670841273068e+00
--2.0671973840818918e+01
-6.2428714023170819e+00
--5.5549315676667921e-01
--2.2752200647932554e+01
-1.3763011911173968e+00
--2.5534028928756043e+00
--2.0147963350296113e+01
-3.9996455421174852e+00
--1.2296193389514729e+00
--2.0828107022450823e+01
-3.1892117450683455e+00
--1.0772158759405703e+00
--2.0805858620243288e+01
-1.0313058484085453e+00
--1.4696078677272941e+00
--2.0448789394660736e+01
-6.6144967877825032e+00
--1.0514947642912049e+00
--2.2194079514497620e+01
-3.2881986560904188e+00
-1.0794027541299156e+00
--2.0695384753806184e+01
--3.5270714567819126e+00
--7.1721510291570434e+00
--2.2705215583509336e+01
-3.1715157689848361e+00
--1.5283154455770962e+00
--2.0452122054666525e+01
--7.3934356966247050e-01
--3.7263892484141254e+00
--2.1568855475540300e+01
-4.6725317108066813e+00
-5.8447053716974362e-01
--2.1468603856378646e+01
-3.2329150433833731e+00
--1.4066961438673051e+00
--2.0580316266512721e+01
-3.1348868172200501e+00
--2.9371009473319925e+00
--1.9690335865788573e+01
-4.5014872296127875e+00
-2.7301769462619752e+00
--2.2636302094002385e+01
-4.8710493838713766e+00
-3.5351306314559267e-03
--2.1647691766823193e+01
-3.8870750051406844e-01
--2.5028871287421106e+00
--2.0220479880382150e+01
--2.8879381551028240e+00
--1.3313864428798590e+00
--2.1665308771661735e+01
--3.5295655454107862e+00
--7.2087984962510747e+00
--2.2647898701028367e+01
-4.7556414481128169e+00
--2.2151190005846209e+00
--2.0628415328640365e+01
-1.2147162538629901e+00
--2.5553747226956807e+00
--2.0102140454951286e+01
-1.5355052217975471e+00
--1.6032675028495187e+00
--2.0304809700783728e+01
-6.5331636161077107e+00
--8.2163022424401910e-01
--2.2452159986096191e+01
-4.6493856924589032e+00
-2.1201878098235620e+00
--2.2164958905238539e+01
-1.0313058484085453e+00
--1.4696078677272941e+00
--2.0448789394660736e+01
-6.0053529284529548e+00
-5.3691362570638757e-01
--2.3120000430893391e+01
-4.9315294527502260e+00
-2.9181420549168002e-01
--2.1787713305644246e+01
--2.6195341798895297e+00
--1.1877446900635751e+00
--2.1937109005232287e+01
-3.8311497579889369e+00
-3.3706360809770222e+00
--2.2826814166218483e+01
--3.6962402412650683e+00
--7.2534829969223757e+00
--2.2612359957963246e+01
-5.6039705728676834e+00
--1.2296418045038063e-01
--2.2279524029239546e+01
-4.9029091057805951e+00
-2.2338765205165747e+00
--2.2581351169814063e+01
-5.0581085865185464e+00
-1.7830647412474840e+00
--2.2423785502144234e+01
-2.2564226137492396e+00
-4.2634401603073513e-01
--2.0228611280158336e+01
-4.3287356409886808e+00
-2.2825787644651281e+00
--2.1969551306146641e+01
-6.0843791352363308e+00
-2.3392070744446043e+00
--2.5520764320324094e+01
-1.9705423046840083e+00
--1.6630140749258546e+00
--2.0205926877767780e+01
-3.2689310755310581e+00
--2.6181247622770027e+00
--2.0060816936341705e+01
-6.8774320925506771e+00
--2.2736342278824220e-01
--2.3215593101219881e+01
--1.7358814085294012e+00
--1.6218099001639563e+00
--2.1381881067216934e+01
--5.5305927991702841e-01
--1.0514881040562170e+00
--2.0967716164096608e+01
-6.2428714023170819e+00
--5.5549315676667921e-01
--2.2752200647932554e+01
-1.4002251414481723e+00
--2.6007713227748499e+00
--2.0093351098235750e+01
--8.4218015887475559e+00
-1.6572111764139454e+00
--3.4837033737455833e+01
-4.8106009443384847e+00
-1.1579508535867347e+00
--2.1734468665119429e+01
-4.9681457761207461e+00
-6.7875733240412761e-01
--2.1803693589338881e+01
-6.5567811070236939e+00
--1.3652653561089567e+00
--2.1868337230297833e+01
-3.9640735540500209e+00
--2.5209901798952288e+00
--2.0256130072255321e+01
-9.1491656750220929e-01
--2.6228534715882090e+00
--2.0070637323298342e+01
--2.9012217068822483e+00
--1.2061384942326687e+00
--2.1800091578049507e+01
-3.5820243637890861e+00
-1.9114667805738332e+00
--2.1138075461314990e+01
-4.5100744299945292e+00
-1.5723807883905021e+00
--2.1612368351202850e+01
-4.3102328902655724e+00
-1.9214759458771944e+00
--2.1695296736190009e+01
-3.0160090639832666e+00
--2.5206916232650016e+00
--2.0266872407280847e+01
-5.5672454471553570e+00
--1.8729376995841465e-01
--2.2172485543152856e+01
-3.5820243637890861e+00
-1.9114667805738332e+00
--2.1138075461314990e+01
-6.5987144603235803e+00
--5.6689299457140008e-01
--2.2762129747161218e+01
-5.0376652397177608e+00
--2.0024772043195918e+00
--2.0935852498723310e+01
-1.3436932990313448e+00
--3.4188690648845417e+00
--2.0190410537522599e+01
-2.3498245215448277e+00
--3.1142716098083345e+00
--1.9929380726282815e+01
-7.5755884469954415e-01
--3.5043072471398007e-01
--2.0420491219608671e+01
--5.6946758855387480e-01
--6.3354882856267880e-01
--2.1341543841694413e+01
-4.4725479050171995e+00
-2.7647360955677797e-01
--2.1258114447179075e+01
-3.0530359179290043e+00
-4.5843373118740388e-01
--2.0435792957921002e+01
-1.2211218375976426e+01
-5.8156089636604982e+00
--3.0647467000665085e+01
-7.4591002308680898e-01
--1.3419534827554127e+00
--2.0685777452471989e+01
-5.3004164389207080e+00
--1.8613084549546304e+00
--2.1062601993604062e+01
--1.2265470450636929e+01
--5.9588239578060715e+00
--2.4283921812966998e+01
-6.9544472802923583e+00
--3.5459205984598543e+00
--2.4248091864086476e+01
-5.0470653970146655e+00
--2.3945092162293289e+00
--2.0395084382021224e+01
-1.8654495478783506e-02
--1.2889420838096377e+00
--2.0644878106843777e+01
-1.3148127296771424e+01
-2.2917307742272497e+00
--3.1520156042887255e+01
-3.5844361318458007e+00
-2.6878405794073164e+00
--2.1756252884861322e+01
-5.0778781458890352e+00
--2.1322854654865049e+00
--2.0752952790192904e+01
-7.0670370256714863e+00
-5.2313294086063522e-01
--2.4197136057719355e+01
-3.6953012328447699e-01
--1.1955294749541039e+00
--2.0782081008175417e+01
-5.7146491022728130e+00
--9.9852618028959034e-02
--2.2347236824785693e+01
-7.2063188331151533e+00
-1.8682592596412717e+00
--2.6080589109954271e+01
-2.4423549060800744e+00
--2.5431193286830900e+00
--2.0254548071282667e+01
-5.7565265146135127e+00
--3.6226499279527236e+00
--2.2861775338858997e+01
-2.2795325659880250e+00
--1.6029990296751442e+00
--2.0282893448578744e+01
--1.6833588534264636e+00
--1.8004762098493352e+00
--2.1109008710605984e+01
--1.1903413693724950e+01
-1.6950000588806613e+00
--3.5021718766065206e+01
-4.9511673640683336e+00
-1.2953020186602606e+00
--2.1941893757763793e+01
-4.4260446961584217e+00
--3.3163125440394636e+00
--2.1169860981956134e+01
-3.1430836973774321e+00
-9.0341808484349151e-01
--2.0556351744479063e+01
-2.7984044254248932e+00
--5.8485583462294388e-01
--2.0411819108182435e+01
--2.4870539453206195e+00
-1.7435077165826065e+00
--2.4585378826866435e+01
--4.4044829668281302e+00
-9.3753037514581656e+00
--4.5393676117871230e+01
-3.9925784364398909e+00
-1.6120072449707865e+00
--2.1276825043963242e+01
-1.6071854622444681e+00
--3.5250021282583428e+00
--2.0377854200881551e+01
-5.4662858129317082e-01
--2.7138369948887333e+00
--1.9948470010503023e+01
-1.3695891644112056e+01
-7.3982926118430103e-01
--3.1133759644211459e+01
-1.3078320121115986e+01
-1.3122262631459556e+00
--3.3899513449682971e+01
-3.9133100009234614e+00
--1.0829394634064429e+00
--2.1029316651740714e+01
-6.5021318406039024e+00
--1.2654834797630750e+00
--2.1899516817339823e+01
-4.0332241400294295e+00
-6.7533040023633639e-01
--2.0877880173712491e+01
-1.2211218375976426e+01
-5.8156089636604982e+00
--3.0647467000665085e+01
-5.1061546849380219e+00
--6.4585761517908780e-01
--2.1520695466768860e+01
-1.4032743549466822e+01
-6.5512308062350211e-01
--2.9258716419682379e+01
--5.6981365381193934e+00
--7.2297168292388783e+00
--2.2665209775258269e+01
-4.6908105287034445e+00
-7.9260406521243487e-01
--2.1549089206783211e+01
-3.9393336435803867e+00
--3.1257595001899201e+00
--2.0518813616058754e+01
--1.4748117992177783e+00
-1.2976981280086028e-01
--2.2195808275567597e+01
-4.8335319551720977e+00
-1.0856479762032631e-01
--2.1633648833807793e+01
-4.0748140004465094e+00
-2.3391605653988599e+00
--2.1814967520114507e+01
-6.6974460576746813e+00
--4.0624551889294458e-01
--2.2932128771594808e+01
-4.0748140004465094e+00
-2.3391605653988599e+00
--2.1814967520114507e+01
--4.7476494598849373e+00
--6.5904332264947456e+00
--2.3569081528220483e+01
--3.3741543310493469e+00
-2.3513812890181165e+00
--2.6472739672536406e+01
--4.6831755522777589e+00
-9.8580195114389308e+00
--4.6044041547016541e+01
--1.4190549484959142e-01
--1.2389008089477753e+00
--2.0729783743193924e+01
-4.0921167598864461e+00
-1.3410695151432117e+00
--2.1185257756187720e+01
-2.6285549212772228e+00
-5.6383054488289952e-01
--2.0375059505859479e+01
-2.3783915397001723e+00
-5.5000729111134650e-01
--2.0321942116839931e+01
-3.7466266008003317e+00
-1.3985940536371759e+00
--2.1037471868162992e+01
-1.6399063057928882e+00
--2.5815766006662537e+00
--2.0086549299495672e+01
-6.5831620501563455e+00
--2.9702714788756461e+00
--2.3726612624525220e+01
-6.7151789888046256e+00
--2.2807581408609690e-01
--2.3173269972386787e+01
-4.9347634191552556e+00
-3.7084684727569744e-01
--2.1760050220042633e+01
--1.2131181394485250e+01
-1.9787800884461380e+00
--3.5576816032906173e+01
--3.5911012684091792e-01
--1.1092718373310351e+00
--2.0901714907471131e+01
-6.6954883177190165e+00
--9.8549578794518033e-02
--2.3340640543645105e+01
-1.8023804559137147e+00
--2.7507475593101072e+00
--1.9850828535650564e+01
-5.2275485405721112e+00
--1.6279161182522253e+00
--2.1327771368859981e+01
-3.3464214014481217e+00
-5.6439311121170466e-01
--2.0569059283680303e+01
-3.2446474145715682e+00
--5.7293413920839628e-02
--2.0484329494822671e+01
-7.3868671035928282e+00
-3.0036904133688530e-01
--2.3979925604212877e+01
-4.9821645044010996e+00
-2.6653988529870132e-01
--2.1777109575047540e+01
-6.4749934069701309e+00
--1.2313905714737285e+00
--2.1924555660594979e+01
-9.8607815071822891e-01
-1.7879942743277102e+00
--2.0718835852919678e+01
-3.3104178577523515e+00
--1.3870952501460301e+00
--2.0651443647124573e+01
-3.2086756130235417e+00
--5.7657212932842130e+00
--2.1638385912529245e+01
-6.9751758397439845e-01
--1.4768304679651032e+00
--2.0407044054178613e+01
-4.8608611687271285e-02
--2.5379638412567145e+00
--2.0159124890374514e+01
-1.1878469651213361e+00
-6.9556071779582318e-01
--2.0318882711963433e+01
-4.5800325719681005e+00
-2.8822459223536673e-01
--2.1396938081540856e+01
-3.1332261970592827e+00
--1.4145761659927782e+00
--2.0559980313270103e+01
--2.2765570299946269e-01
--1.9607684398726202e+00
--2.0781990071117292e+01
-3.9925784364398909e+00
-1.6120072449707865e+00
--2.1276825043963242e+01
--2.6435627831543211e+00
-2.1399267694623028e+00
--2.5101355963676284e+01
-3.0777029687341568e+00
--1.4389543306720038e+00
--2.0449995367396589e+01
-7.9096806372407009e+00
-9.3256040036956538e+00
--4.5395944737703282e+01
-1.2794147883530593e+01
-4.2325911489234436e+00
--3.0032887894809036e+01
-1.2794147883530593e+01
-4.2325911489234436e+00
--3.0032887894809036e+01
-2.7421956975013373e+00
-4.0214244348251080e+00
--2.3356809005564642e+01
-2.6231269376538404e+00
-3.9952743524591394e+00
--2.3432340915051999e+01
-1.9420190195671152e+00
-4.0119780919688601e+00
--2.3634871574396367e+01
-1.9671040666683393e+00
-3.9594650213277358e+00
--2.4005341606880176e+01
-1.2687608737637218e+01
-3.9658908291040600e+00
--3.1248746440140792e+01
-1.6340113684929942e+00
-1.5997420361598731e+00
--2.0469343115970695e+01
-1.3920916714546017e+01
--3.4790393099072663e-02
--3.1294321279087811e+01
-3.1343051962606703e+00
-6.3429406358111395e-01
--2.0495329019330981e+01
-2.3375386043054505e+00
-4.2528207710698429e-01
--2.0251904280213253e+01
--1.2268890880555670e+01
-1.8886327641577090e+00
--3.5238676895261193e+01
-2.6274067445569949e+00
--2.0601143017620904e+00
--2.0294126375693825e+01
--1.6124478235725599e+00
--1.7800887020668092e+00
--2.1129893840625538e+01
-1.0572762839042200e+01
--5.4552650398581450e+00
--2.4896252130988820e+01
-1.0508309449715725e+01
--6.4612004393293754e+00
--2.3380225524748649e+01
-2.4939773839371666e+00
-4.0457628687918570e+00
--2.3549226021840887e+01
-3.0226000067378909e+00
-3.7766624422631123e+00
--2.3160233283031307e+01
-1.3327220673195039e+00
-3.7014572820164853e+00
--2.3073877829910316e+01
-8.9649419725178348e-01
-3.7647259896100032e+00
--2.3266581838212065e+01
-6.5984705721076518e+00
-3.0615911238638338e+00
--2.7620858882107186e+01
-7.2418007768271924e+00
-1.7653461691234869e+00
--2.6011636416067994e+01
-2.9437519793100648e+00
-1.5950288979036649e+00
--2.0741135050242459e+01
-1.3762836868057676e+01
-1.0553372885311652e+00
--3.0014589505828521e+01
-1.3063333944129136e+01
-1.3955662045236386e+00
--3.3983604998945736e+01
--7.2262500913229379e+00
-2.4419691326322415e+00
--3.5974480104233116e+01
-1.4078812283258170e+01
--3.0893992178013530e-01
--3.1450308845299347e+01
-3.4592329590450484e+00
--1.4747648520341228e+00
--2.0538927218079824e+01
--6.7632662657561637e-01
--2.0375671497027104e+00
--2.0763181990247645e+01
-1.1945249556443661e+01
--4.5539030596615042e+00
--2.6181685291770499e+01
-9.2399978375106215e+00
--6.7969083010809506e+00
--2.2969522393529015e+01
--4.9407310507003324e+00
--6.6294634506265249e+00
--2.3445789338892823e+01
-1.7491230280987685e-01
-2.8727769083760131e+00
--2.1898739127353782e+01
-1.4028331652301915e+01
--7.3481103375196005e-02
--3.0897681987070449e+01
--5.1709142219482880e+00
--6.6308862669970248e+00
--2.3528160002825018e+01
--5.0426750585118540e+00
-7.2629551179879019e+00
--4.2820043070310042e+01
-1.3895465898654001e+01
--2.1590436527657406e+00
--2.9390092110245028e+01
-1.1416072409376767e+01
--4.6302434182987691e+00
--2.6013870464052932e+01
-1.3329464936850005e+01
-1.6812430735457005e+00
--3.1643342664267472e+01
--1.2856055022622612e+00
-1.7168094030732695e+00
--2.2429673781288315e+01
--2.8506125645244040e-01
-1.1816867079740587e+00
--2.1100001612409649e+01
-2.3364236206449358e+00
-5.4384534152184888e-02
--2.0319632429158631e+01
-1.0082876775744660e+00
-3.7055541534538246e+00
--2.3159454291092111e+01
-2.6374138575752757e+00
--8.5533467513098105e-01
--2.0540762534016544e+01
-4.4115034399807005e+00
--1.3636189838577908e+00
--2.0885556862241621e+01
--4.1302644263129924e+00
--6.9373331276071095e+00
--2.2984482815849603e+01
--1.1076359627126482e+00
-5.9964113194337765e-01
--2.1597838116464739e+01
-3.6971368603672090e+00
-1.5896824536812448e-01
--2.1195980987342136e+01
--1.1471120253837785e+01
-1.3116369114260658e+00
--3.4435957635288574e+01
--1.5722485005001049e+01
-1.1129227288893166e+01
--3.9227556671440880e+01
--1.4177999138180768e+01
-1.1688385773651445e+01
--4.0578654144025045e+01
--9.5924049130110678e+00
--1.2494070106830035e+00
--3.0929171008665769e+01
--6.9891575069547844e+00
-2.8904413574169925e+00
--3.6666137744729610e+01
-4.4382559348502959e-01
--1.7526474870254598e+00
--2.0376755989394294e+01
-1.4446783368847798e+01
--1.3431635496960437e+00
--3.0527874161417135e+01
--3.1717570972124287e-01
--6.4644429254609759e-01
--2.1092423415620772e+01
-7.2520158304608939e-01
--4.6853108417606004e-01
--2.0465232914008880e+01
-1.2866530552873350e+01
-4.1139414794572486e+00
--2.9659392358536167e+01
-2.0234339283521491e-01
--9.0049491205548804e-01
--2.0789599754044126e+01
-7.6332211176051171e-02
-2.3968256512198596e-01
--2.0685482755454668e+01
--4.9378035351149213e-01
--7.6012150791482980e-01
--2.1234438737151436e+01
-1.3503698366244986e+01
-1.6216432046205700e+00
--3.0671809905149857e+01
-1.2269291155304700e+01
-6.4263981534001324e+00
--2.9574871081642968e+01
-1.3945696636131593e+01
-8.4630447140465801e+00
--3.7207870345390219e+01
-1.3610091525624284e+01
-1.1178867483691894e+00
--3.1040045049189438e+01
-5.8516939208341856e-01
-1.0723660286523697e+00
--2.0606581699957516e+01
-1.3792349723977940e+01
-1.0159456402316460e+00
--3.0539625938423001e+01
--1.1884332437641201e+00
-1.7716973795981691e+01
--4.6925794623877955e+01
-6.3569845274324566e-01
-1.1382639355050536e+01
--4.8086480390785525e+01
--2.1772171049430264e+00
-6.4819818555961168e+00
--4.1439428054164225e+01
--5.3011511204841044e+00
-6.6305670710867748e+00
--4.1693075903226884e+01
--5.1099891991508848e+00
-6.2971107205917001e+00
--4.1190285233266145e+01
-1.1187248004857444e+00
-1.8025076882641786e+00
--2.0694540585088138e+01
--3.6738843576576206e+00
-1.7322414373384742e+01
--4.4741516969442465e+01
-1.1631016657030520e+01
-2.2058047311632134e+01
--5.4865661923372386e+01
-2.0196644226328893e+00
-1.7067916179921443e+00
--2.0556838990532501e+01
--2.2472348005599558e+00
-6.8838559155323100e+00
--4.2034202548502130e+01
--6.9572260918772741e+00
-1.3592237759888638e+01
--4.6429108818920035e+01
--6.8630739974202930e+00
-8.0323519120525102e+00
--4.3604986207162618e+01
--1.3505675184255936e+00
-1.7435719463047283e-01
--2.2023826584404571e+01
-7.6831886001384941e-01
--4.1508452981076145e-02
--2.0388990339072812e+01
-5.2236600038177106e-01
-1.6149725509541778e+01
--5.1276263850245243e+01
-1.8458521946448641e+00
-9.3867783420455431e-01
--2.0262293046756191e+01
--2.2857865115948289e-01
-1.5416039977517539e+00
--2.1201874666608514e+01
--4.6992247004602943e+00
-6.4305839232304374e+00
--4.1282494397276679e+01
--9.8931170365346555e-01
--3.8712037479904739e-02
--2.1546462713492257e+01
--1.4756347046582237e+01
-6.8814433277477054e+00
--4.2051921937140392e+01
--2.1300738641498079e+01
-1.2266607514420318e+00
--3.4444329309074554e+01
--2.1480891774548223e+01
-1.0167398950628916e+00
--3.4541086864847465e+01
--1.3397101524491712e+01
-5.0393319192285615e+00
--3.9676253961853412e+01
-1.9476867939238593e+00
-4.7407284345998335e-01
--2.0222112802936714e+01
-2.5105400482203971e-02
-2.9762098626941089e+00
--2.2137047973836076e+01
--1.6561003845252258e+00
-9.6205916945611509e+00
--4.5431461005939632e+01
--2.6139867131657804e+00
-3.3317440239884375e+00
--2.7734701151960795e+01
-8.1836461614070655e-01
-4.0499396624819134e-01
--2.0359334539223948e+01
-6.1206680948450320e-01
-6.2944679300794704e-01
--2.0491409089131999e+01
-3.5975123617532528e-01
--3.3390166629194801e-01
--2.0595894897352096e+01
-7.6831886001384941e-01
--4.1508452981076145e-02
--2.0388990339072812e+01
--8.1114080892149385e+00
-1.4021094295894812e+01
--4.4450650400999649e+01
--1.4513533476721496e-01
--6.5658644876095282e-02
--2.0907503224545270e+01
--6.1946474050048570e+00
-7.6463153287194991e+00
--4.2934477001859634e+01
--6.1946474050048570e+00
-7.6463153287194991e+00
--4.2934477001859634e+01
-2.4661157409239420e+00
-3.3937599230978366e-01
--2.0255445180829977e+01
-2.7869896528104543e+00
-4.9099899165203242e-02
--2.0324145546966683e+01
-1.3187731330300665e+00
--7.1913071778254434e-01
--2.0357638072336037e+01
-1.0025059171938702e+01
-2.0141268476591137e+01
--5.6645353443505243e+01
--3.8933322745355659e+00
-1.4665705856851352e+00
--2.5392232496365619e+01
--8.3021700517869712e-01
-1.4953376674968675e+00
--2.1658357822240774e+01
-2.5935456746633956e+00
--1.1457801927354403e+00
--2.0612376669547029e+01
-1.6600726490371926e+01
-2.2460841858839146e+01
--5.9766842462672621e+01
-1.4419377857080865e-01
--1.0518261157798698e+00
--2.0899272025214405e+01
--9.8797673541075670e-01
-1.9173039086380803e+00
--2.2069710952531974e+01
-2.3897540009266409e+00
--1.2969150624304907e-01
--2.0213564813018522e+01
-2.6760767903969955e+00
--6.3595406650322295e-01
--2.0445301166738858e+01
--7.9850298786178109e-01
--5.6930109920837502e-01
--2.1474382873880923e+01
-1.4121816060484326e+01
-2.9081340954458323e-01
--2.9169504356958665e+01
--2.3566536592892677e+00
-1.7415692312250304e+01
--4.5779483222791796e+01
--2.6064412411420528e+00
-1.6994200232280017e+00
--2.4490047494939649e+01
-5.9467335681615729e-01
--1.3998287392910524e+00
--2.0567595829641238e+01
-1.7081859633960941e+00
-1.7748875757821954e+00
--2.0640399462164108e+01
-1.0922393366233512e+01
--6.4864527738713500e+00
--2.3388660742460409e+01
--3.0536927435729377e+00
-1.7340669519696867e+01
--4.5324636971110145e+01
-1.5924629281619740e+00
-1.8136781795393002e+00
--2.0666321354166612e+01
-3.3107990014267634e+00
-2.5752005474879885e-01
--2.0592060081470251e+01
-4.5709627787159119e+00
--9.7736036971381868e-01
--2.1124674015898357e+01
--4.2697937352517199e+00
-1.3999923877199890e+01
--4.9360415198577883e+01
--4.2594829897218851e+00
-1.1015817806772892e+01
--4.7704554182725914e+01
-9.7265101030541923e-01
--1.5478681078317766e-01
--2.0369237666026166e+01
-3.2871753934332806e+00
-3.4902247775490558e-01
--2.0582332024506808e+01
-2.4472029343834785e+00
--2.2985782409373573e-01
--2.0301350459444603e+01
-1.2819955224588767e+01
-4.0692481177078639e+00
--3.0773495476165291e+01
-1.3355400249406673e+01
-2.7585263393278425e+00
--3.0005601540543239e+01
-1.4062116902744924e+01
-6.2256724202113711e-01
--2.9178465502386004e+01
-3.6901764980444507e-02
--3.4628745947981848e-01
--2.0749591958001449e+01
-5.2457132464422240e-01
--1.2483111019080948e+00
--2.0708441353041831e+01
--1.5743094616210440e+00
--1.6682707015354972e+00
--2.1263121710078867e+01
-1.2774355624798819e+00
--1.4994331075852529e+00
--2.0445774017269024e+01
-1.2970332452232217e+01
-3.4059446761016878e+00
--3.0802356648816961e+01
-3.2943938834470994e+00
--7.3585427157604855e-01
--2.0708901477844659e+01
--2.7050318582114130e+00
--1.3854994931293207e+00
--2.1629069488171634e+01
-1.2259463050222228e+01
-5.7011026098102651e+00
--3.0658410591449197e+01
-2.9935915023345379e+00
--4.6154993241479897e-01
--2.0450266771379134e+01
-1.3181664200422455e-01
-1.7380941864128630e+00
--2.1122521179552656e+01
-1.2565127620271104e+01
-5.2653971921044578e+00
--2.9591261987068648e+01
-2.4213646295966784e+00
--2.8385723146049942e+00
--1.9829267743723758e+01
--1.4569910516718091e+01
-1.1238433853193811e+01
--4.2867987635041182e+01
--1.7122883131033024e+01
-1.1322125031624568e+01
--3.7511983343603880e+01
--1.7138899178437427e+01
-1.1392660707282714e+01
--3.8095595968764329e+01
--1.5188394186462498e+01
-1.1206210703976524e+01
--4.2626205896007498e+01
--4.0752397702894783e+00
-1.4564577674226142e+00
--2.5404186027161174e+01
-7.8857313563971427e+00
-1.3254660529796812e+01
--5.0669833900330893e+01
-7.5656403140676423e+00
-1.2836152341105594e+01
--5.0116416002561046e+01
-8.7068095788523650e+00
-6.8564905277628609e+00
--4.1896184473493371e+01
-3.5128146889607259e+00
-1.5100877148189027e+00
--2.0950054249285511e+01
-3.5128146889607259e+00
-1.5100877148189027e+00
--2.0950054249285511e+01
-4.0474979096261654e+00
-1.2699673745873898e+00
--2.1105574056235589e+01
-3.5935456367442868e+00
-7.9179331878459380e-01
--2.0728479393088875e+01
-3.2599590371178797e+00
-4.9216982212071902e-01
--2.0536476776493544e+01
-4.4922603120029443e+00
-2.0625986395096704e-01
--2.1296578829158658e+01
-2.9394247001512128e+00
--1.5248824503447084e-01
--2.0428612899213707e+01
-2.8075061149128682e+00
--6.8809477794808027e-01
--2.0490261294204331e+01
-6.8922219261037467e+00
-1.0427559425074423e-01
--2.3656199234899592e+01
--1.4233159047754633e+00
--1.9514698108958415e+00
--2.0957586670162556e+01
-4.3914309799900773e+00
--1.2459949942091331e+00
--2.0839409736716121e+01
-5.3017022697528429e+00
--1.6968602225142941e+00
--2.1258200444470358e+01
--3.5972587107917731e+00
--7.9666694398505742e+00
--2.1639079230479158e+01
--3.7776080027613776e+00
--8.1843749602287357e+00
--2.1346400673827468e+01
-1.3526824370236719e+01
-8.9489355431529738e+00
--3.9218242749739112e+01
-1.0340026287149938e+01
--3.4674145922223047e+00
--2.7774286378223099e+01
-1.7323573332256361e+00
-1.7773617761044240e+00
--2.0623838978558361e+01
-6.0539856046263321e+00
--9.9618990904629490e-01
--2.2216673528866863e+01
-6.5295098650630328e+00
--1.1673056094978411e+00
--2.1958587295416237e+01
-2.9247939680070130e+00
-1.3562394843594927e+00
--2.0611424889953476e+01
-2.9581246655192635e+00
-1.1634749431084992e+00
--2.0523436371113540e+01
-2.7802351707552346e+00
-8.9731147260699440e-01
--2.0463463802389366e+01
-2.5899728557928428e+00
-1.9426467056035963e+00
--2.0778462397491246e+01
-4.6145108750416153e+00
-1.3307143970642921e+00
--2.1641160749481731e+01
-1.4673583315317420e+00
--6.7291599903706867e-01
--2.0364587684153626e+01
-1.0541036965222534e+00
-1.7899376705307293e+00
--2.0697152213112027e+01
-3.1751799931221725e+00
-2.6821364566190559e-01
--2.0461629498993148e+01
-2.8905263164174628e+00
-8.4090994329053004e-01
--2.0394571602229050e+01
-3.9456837009951955e+00
-8.2461512585909602e-01
--2.0957840224215161e+01
-1.9235375193433426e+00
-3.0172214399502323e-01
--2.0229423070706861e+01
-1.5014300209615532e+00
--3.3504168768765269e-01
--2.0266306747827787e+01
-4.1680142510946583e-01
--1.1405672593326079e+00
--2.0771694768513889e+01
--4.6012591094728759e+00
-9.0431606262834983e+00
--4.4928505161397084e+01
-5.2495375896516094e-01
--1.7819019149079363e-01
--2.0470931250659721e+01
--1.4472572761548383e+01
-5.1126803194840917e+00
--3.9650770365428514e+01
--1.0486382535004988e+00
--2.1409227831138673e+00
--2.0628208531492007e+01
--6.4266715460134649e-01
--2.2610345234051050e+00
--2.0476044781854508e+01
--3.3436122460793567e+00
--2.7014679999069802e-01
--2.2932915265786182e+01
--9.0898607642518261e+00
-2.4921454497038846e+00
--3.6038983533744371e+01
--1.3103683894440426e+01
--8.5672023287917192e+00
--2.0688090055003840e+01
--7.5349146315005520e+00
-1.5143240646161393e+00
--3.4497743846917857e+01
--1.3861423317563897e+01
-5.1393994110778971e+00
--3.9781325737237069e+01
--9.1325566920914572e+00
-2.6363712614530725e+00
--3.6231663649575822e+01
--1.3151385808415927e+01
--7.2712340840776397e+00
--2.2545413297024961e+01
-3.9960047836876660e+00
-1.3747927635331618e+00
--2.1160576477049919e+01
-2.9504467264964309e+00
-1.9569724415140264e+01
--4.8599303937376249e+01
-2.7758325903171142e+00
--1.0286532086977640e-01
--2.0399873878643003e+01
--1.6524406901423060e+01
-9.6625350589133863e+00
--4.1821922401183727e+01
-3.0415297855027226e+00
-1.9669105513647441e+01
--4.8636489293514686e+01
-4.8271527618724424e+00
--2.0880136703751213e+00
--2.0785681031948435e+01
-9.8441825085549384e-01
--2.7526868743721553e+00
--1.9827335555090261e+01
--7.6011433879118844e+00
-1.5667263354549657e+01
--4.2585830916155494e+01
--3.8267922847895375e+00
-8.0732210966698208e+00
--4.3567870692044835e+01
-1.4673583315317420e+00
--6.7291599903706867e-01
--2.0364587684153626e+01
--1.7683604385648684e+00
--8.0611655599942029e+00
--2.1460824117587016e+01
-2.0798657575453374e+00
-2.0237598638716914e+01
--4.7157835554599416e+01
--1.6114080199439504e+00
--1.1245829427386331e+00
--2.1583358904368289e+01
-6.9508927224951633e-01
-1.2309414171409796e+00
--2.0568980531617918e+01
-1.3597354380333138e+01
-3.3317405204424289e-01
--3.2444466349697123e+01
--4.8836841968830056e+00
--7.2329907453632734e+00
--2.2651365997237189e+01
--1.8828328369632594e+00
--8.5935975057540475e+00
--2.0640108054079189e+01
-1.0610483603474128e+01
-2.0169941172052564e+01
--5.7034863718673755e+01
-1.0061247816487581e+01
-1.9956100533045493e+01
--5.7113557071982250e+01
--2.8972749593213312e+00
-1.7450997415677712e+01
--4.5361978657642787e+01
--3.8637386413202925e+00
-1.7062408870257372e+01
--4.4696751193066603e+01
-1.3418128544185167e+01
-9.4796215504078383e+00
--3.9041592884612669e+01
-2.7097395250664849e+00
-5.3829356184887067e-01
--2.0257115378634897e+01
-6.9090866893452352e-01
--3.6617621236963721e-01
--2.0486516829874805e+01
--2.1409214584201215e+00
--8.4351754752178500e+00
--2.0949421717221774e+01
-3.2015974115959245e+00
-1.9377624955235529e+01
--4.9230247836063640e+01
--9.8501700443195328e-01
-1.8120576697022351e+01
--4.7037831668741305e+01
--9.8501700443195328e-01
-1.8120576697022351e+01
--4.7037831668741305e+01
-8.6928178002715786e+00
-1.8811560031470510e+01
--5.6396555577503271e+01
-1.3882365291486959e+01
-1.4102930526518588e+01
--5.1889351423792782e+01
-6.4899988281955707e+00
--1.1543469861621827e+00
--2.2034216218757461e+01
--4.8817334506566723e-01
--1.0423758641356928e+00
--2.0943882970638217e+01
-3.0003996021868469e+00
-1.0131843743450109e+01
--4.6460809737190864e+01
-1.7343793179652476e+00
-8.4598461577036073e+00
--4.4220524571832229e+01
--1.2306976051718008e+00
-5.4339072205879801e-01
--2.1915390935633930e+01
--1.5672601637822432e+00
--4.4838631805322615e-01
--2.1766956759830496e+01
--1.3890969807596488e+01
--6.0614853405191091e+00
--2.4304847790598398e+01
-4.3377532372845531e+00
-1.8645720453238667e+01
--5.1721040950154148e+01
--2.7954241757105884e+00
-1.7713382245054152e+01
--4.5182332542578436e+01
--8.3443863842715018e+00
-1.4441106242541561e+01
--4.3437246783742886e+01
-1.2517322187604805e+01
--4.2629823120142216e+00
--2.6478985414832053e+01
-1.2403548944585848e+01
--4.1515758522289312e+00
--2.6807891331241734e+01
--7.6059530483466267e+00
-1.5642393782332258e+01
--4.2281312191895772e+01
--9.6511105728197002e+00
-3.2143966457490332e+00
--3.7034217828081395e+01
-3.1309580611551087e+00
-5.2610035590101589e-01
--2.0464965436843066e+01
--1.1025435119567764e+01
-1.1186071969790179e+00
--3.4184006082766984e+01
-8.5803169204355303e+00
-1.7184510749327018e+01
--5.6011788640708545e+01
-1.3271882228092290e+01
-9.8477021228524162e+00
--3.9758218237869819e+01
-1.1618717418119155e+00
-2.1801685350577724e+00
--2.1152906453578698e+01
--5.3358912628025401e-01
-2.4577029375838362e+00
--2.2052570045336513e+01
-1.4227103158055943e+00
-1.7233607586226685e+00
--2.0615923680119405e+01
-1.4227103158055943e+00
-1.7233607586226685e+00
--2.0615923680119405e+01
-1.9343948142702390e+00
-1.5719324151298069e+00
--2.0537473608369734e+01
-4.2398565617359001e+00
-5.9862399274736100e-01
--2.1104844706862497e+01
-1.3517034511406310e+01
-5.4901205493967820e-01
--3.2664572327907187e+01
-2.6397878588773818e+00
-7.1501021881425086e-01
--2.0338329587613085e+01
-1.3597354380333138e+01
-3.3317405204424289e-01
--3.2444466349697123e+01
-1.3864683371437185e+00
-7.1188541887860024e-01
--2.0286005108593628e+01
-4.5738590614811745e+00
-1.7018019650801783e-01
--2.1364577651801952e+01
-1.3039928237950365e+01
-6.2176788383513343e-02
--3.2547901480511491e+01
-5.3313042449875008e+00
--3.7352928692783655e-01
--2.1895117307526778e+01
-2.1411821783611305e+00
--2.3373567503780831e-02
--2.0211119980137553e+01
-6.4785953372010763e+00
--1.0811486374677608e+00
--2.2075595959305932e+01
-5.4975881897177752e+00
--1.2033955204519733e+00
--2.1882423642102705e+01
--2.4525501739312738e+00
-7.7595916725399527e-01
--2.3307948872262919e+01
-2.6145588235970947e+00
--1.0227955676026492e+00
--2.0555954839635998e+01
-2.1554179111335587e+00
--9.4868297878841779e-01
--2.0463733558885153e+01
--2.0972883586577740e+00
-2.6757874589347747e-01
--2.2654084889524714e+01
--2.0972883586577740e+00
-2.6757874589347747e-01
--2.2654084889524714e+01
-1.3444757871612050e+00
--1.1130041694515276e+00
--2.0529786755944439e+01
--1.1330974627277148e+00
--6.0961160399631897e-01
--2.1539275399680410e+01
-1.1692754940039679e-01
--9.9502585029440671e-01
--2.0898505636173624e+01
--2.7530103038954081e+00
--1.1643562270758816e+00
--2.1861728090372125e+01
--1.5312275539936118e+00
--1.5647370758220713e+00
--2.1398595424777842e+01
--1.6858062891659751e+00
--1.7373088126309055e+00
--2.1164827393958589e+01
--1.0735420236694029e+00
--2.3564863459971450e+00
--2.0318292797416703e+01
-9.1950394416793746e-01
--2.9972014855124112e+00
--1.9575410640846492e+01
-1.3194455158514998e+01
-3.3890643453712745e+00
--2.9271787509027433e+01
-1.3838818227429634e+01
-1.8459937930780490e-02
--3.1258488511964245e+01
-1.4311239168291937e+01
--5.0952156036178164e-01
--2.9124795546801764e+01
-1.3458807390426296e+01
-2.6074965792072902e-01
--3.2653472992109123e+01
-2.8296426411410303e+00
-1.4332643209455270e-01
--2.0357196890050876e+01
-5.5072480062600038e+00
--1.4168552205260878e+00
--2.1565342098790090e+01
--1.1027531454089738e+00
--1.0349963835901321e+00
--2.1038793413419995e+01
-4.5210306794050963e+00
--3.3300946708602464e+00
--2.1247397832185467e+01
--1.9150292779206064e+00
--1.7340122875344841e+00
--2.1192975293533632e+01
-1.2284470631692407e+01
-5.9422454233369084e+00
--3.0267305016999192e+01
-1.3266429564824341e+01
-2.6702279250542444e+00
--3.0604407344616856e+01
-1.3467987579269840e+01
-1.2040728213383707e+00
--3.1799559792775607e+01
-1.3789362292829438e+01
--4.8884723189715172e-02
--3.1956384106948878e+01
-1.3885980307041612e+00
--3.5619352878175881e-01
--2.0311327060604430e+01
--2.5518154715268468e+00
--1.5537523104691444e+00
--2.1482235584843167e+01
-3.3218462385148242e+00
--8.1351650085005591e+00
--2.1481084170527794e+01
-1.3090706279687927e+01
-2.5407447752542440e+00
--3.1615864011815273e+01
-1.3204321091340681e+01
-2.0671487279637946e+00
--3.1991991780930327e+01
--1.5904332934491858e+00
--2.5134868665474530e-01
--2.1915315749017015e+01
--1.2479510702913965e+00
--3.5240352548949805e-01
--2.1803866433726331e+01
--3.0711857470235043e-01
--1.2441560178389315e+00
--2.0737980354226082e+01
--2.0077934618472106e+00
--1.1966811900128880e+00
--2.1885825312085192e+01
-1.1043765388993725e+01
--5.9669879603784093e+00
--2.4090608627455683e+01
-9.3059750548499949e+00
--5.9744709846489759e+00
--2.4242111604920009e+01
-1.3992278809234451e+01
-8.4689370911360875e+00
--3.7188541836781418e+01
-3.2273351736285472e-01
--1.3853765334300991e+00
--2.0541007134520733e+01
-1.0640075401449169e+01
--5.0412384149055374e+00
--2.5630974570664556e+01
-9.5095845607657967e+00
--6.3963878512278844e+00
--2.3596060877928245e+01
-1.0360149463426254e+00
--1.2553662606124254e+00
--2.0641372848812161e+01
--3.3413391474371873e-01
--2.5266454527436246e+00
--2.0073523602902863e+01
--3.1862239300992670e+00
-1.7222644572407777e+01
--4.5360505828683969e+01
-9.0619567519613256e+00
-2.0137239748606206e+01
--5.4398809705958335e+01
-1.4576969150049848e+01
-2.1306496978785937e+01
--5.9939953445360104e+01
-2.6889352928266201e+00
-1.9227143723747474e+01
--4.9099835706919407e+01
-1.4162053238573245e+01
-2.3386211762418622e+01
--5.5294627779384996e+01
--7.1896128051006505e+00
--2.1178961147313866e+00
--2.9737753112062105e+01
-1.3001803550730447e+01
-2.3637770199164017e+00
--3.2484486282444891e+01
-2.1210695913591153e+00
-6.0689910238313471e-01
--2.0195799653886723e+01
--9.4609998325442746e-01
--1.6402100999091878e+00
--2.1080382383286306e+01
-1.3178199208517938e+01
-1.5745366835858843e+00
--3.2730047923077599e+01
-1.3515664672005354e+01
-6.3358281031539543e-01
--3.3159071869152754e+01
--1.3867712447742935e+01
-9.0561054065561439e+00
--4.5119452957633470e+01
-1.3532192584085371e+01
-4.3676885126897669e-01
--3.2963645042765982e+01
--1.1383685994695306e+01
-1.3396130669703681e+00
--3.4467744354433933e+01
--3.6500004804526665e+00
--7.6725717325930294e+00
--2.2045946835516791e+01
--4.1215472629830927e+00
--8.0203227381327462e+00
--2.1550006907993115e+01
-1.3796256067828933e+01
-1.0785450382543762e+00
--2.9840664472145900e+01
-1.3747530433819469e+01
-6.3944422841228221e-01
--3.1075409771299022e+01
-1.4566163313169801e+01
--1.6769498689134146e+00
--2.9883522595984925e+01
--6.0856539721338587e-01
--8.0051057740812970e-01
--2.1305433994946874e+01
-1.2860967363808825e+01
--4.8754825051425685e+00
--2.5628252185557283e+01
--3.8387086674669728e+00
--7.9585552090462999e+00
--2.1594246826324056e+01
-1.3902925068608404e+01
-8.8238548999127762e+00
--3.7059870798300437e+01
-1.3401737749690481e+01
-2.3252338685731533e+00
--2.9570874176860869e+01
-1.1807804185271408e+01
--5.0765952749071195e+00
--2.5179657420981162e+01
--3.1784495273014253e-02
--1.7176743360136365e-01
--2.0719291312008444e+01
-1.3295673931202414e+01
-1.0007531138580935e+01
--3.8800670963793529e+01
-2.8521546299338723e+00
-4.1943561659907175e-01
--2.0361700757077166e+01
-4.3435020053446299e-01
-1.7071846811830582e+00
--2.0887151768647740e+01
-2.3117771810515744e-01
-6.1123830771190302e-01
--2.0611695244577721e+01
-9.5090538317684210e+00
--5.3091471215746644e+00
--2.5271507075286930e+01
--9.0105456994444844e-01
--1.9130396233469866e+00
--2.0978763157472091e+01
-1.4145845908147379e+01
-7.7621619477504726e+00
--3.7300424273652681e+01
-1.3305094641360125e+01
-9.3053517564977462e-01
--3.3079930081879098e+01
-1.4567314128038271e+01
--1.5462512248362130e+00
--2.9703678922826757e+01
--3.1741644671473368e-01
--5.7131986848949967e-01
--2.1058772894856144e+01
-1.1049612991388797e+00
--1.1436849051917604e+00
--2.0586779180384823e+01
-1.4168127837373947e+00
--5.8417140316865002e-01
--2.0314814337276513e+01
-1.3327796746569266e+01
-1.0594544386465115e+00
--3.2797516401963847e+01
-8.3179937270995126e+00
-2.1220055542936205e+01
--5.2590123270895056e+01
-6.0820972409379537e-01
-1.9093691213366345e+01
--4.6560740066997482e+01
-1.1206342402070000e+01
-2.3497904930564900e+01
--5.2326929734118586e+01
-1.0520174717922961e+01
-2.0955447282330770e+01
--5.5688921453720326e+01
-1.3144178848704966e+01
-1.0058829557454050e+01
--4.0386892987562817e+01
-1.3645231961046186e+01
-1.4146444646852980e+00
--3.0199354290207733e+01
-4.3160954660141284e+00
-1.2000324321463678e+00
--2.1333171947461182e+01
-2.7996882949745951e+00
-7.9086193112677317e-01
--2.0415450936822580e+01
-6.4005669011397293e-01
-2.5753855436732997e-01
--2.0412766424271400e+01
-2.4457224239655639e+00
--6.3547530310306222e-01
--2.0377281744616205e+01
-4.4736876649784953e+00
--1.1150732169171691e+00
--2.0957613625411767e+01
--3.2152779287008570e+00
--6.3037924697306635e-01
--2.2557617026465984e+01
-1.0302123892829158e+01
-2.0797231692705410e+01
--5.5748612935977903e+01
-1.3692474758280687e+01
-8.9073989592569855e+00
--3.7938668133235915e+01
--3.7984502343723054e+00
-1.4289557270664620e+01
--4.8319935420206463e+01
-3.0236144550761588e+00
-8.5887301953688444e-01
--2.0499807547490825e+01
-1.3665366818955063e+01
-2.2347594156436043e-01
--3.2413995056233077e+01
-1.9920001139637697e-01
-9.4114761201824781e-01
--2.0783677965541582e+01
-2.8169387159881425e+00
-2.7093803060200045e-01
--2.0315884237168891e+01
-3.9022357702514450e+00
--1.6280718539716539e+00
--2.0701566670730305e+01
-5.0094372792914510e-01
--2.8085931905315515e+00
--1.9829278005205797e+01
-1.5087777621871739e+01
-2.1730413453894261e+01
--5.9635576159735230e+01
-2.8652479024391417e+00
-3.7221299912659704e+00
--2.3374627246376853e+01
-3.2769873246167234e+00
-3.4881854196377842e+00
--2.2918363713769846e+01
-4.4997500607538292e+00
-6.7032731225114872e-01
--2.1316246299891876e+01
-6.7793544904019221e-01
-7.1241579413505229e-01
--2.0445597893908445e+01
--1.5319628257546769e-01
-7.0426561296425461e-01
--2.0877127455983043e+01
-1.3885980307041612e+00
--3.5619352878175881e-01
--2.0311327060604430e+01
-1.4645610390365801e+01
-2.3698910635311840e+01
--5.5815694798585113e+01
-5.0997269765820556e+00
-1.9324836194474440e+01
--4.8753074300172102e+01
-3.4875493133058844e+00
-2.7393330883945994e+00
--2.1703874795039503e+01
-1.3006182578353858e+01
-2.6049500099070637e+00
--3.2148086786648321e+01
-1.3199116105731147e+01
-1.2847928890623446e+00
--3.2543251132684397e+01
-1.3147276456679458e+01
-1.0537858982004400e+01
--3.9382431644687976e+01
--1.7565728939475460e+00
-1.2103478869400655e+00
--2.2780163703968711e+01
-1.7464579526478508e+00
-2.5764545391642753e-02
--2.0156206535915494e+01
--4.0359378533374652e+00
-1.5950095724434870e+01
--4.6164519187505128e+01
-1.3792930305601054e+01
-8.6575389803600853e+00
--3.7837957700858851e+01
-1.2540928214714382e+01
-4.0162733251895206e+00
--3.2475603753600602e+01
-1.4086898396545211e+00
--1.4045626921654488e+00
--2.0663605758065316e+01
--4.4077617040661599e+00
--7.9470147391240449e+00
--2.1715786058407438e+01
-1.4701108355088512e+00
-1.2665465334743402e+00
--2.0463871867218611e+01
-1.3446631799352440e+01
-1.9748365078861583e+00
--3.0054017154668362e+01
-1.1558779002185624e+00
-1.2607699581506024e+00
--2.0448995338556916e+01
-7.2429534199745049e-01
--1.2192550358979763e+00
--2.0746786022286322e+01
-8.0637990941484483e-01
--6.0205177496164664e-01
--2.0354369268819489e+01
-8.2384220347263448e-01
--1.2991036149425357e+00
--2.0665722055600160e+01
-5.8250476783637861e-01
--1.9410581071900572e+00
--2.0488521829757691e+01
-1.2866530552873350e+01
-4.1139414794572486e+00
--2.9659392358536167e+01
-1.0468430425147503e+01
-2.0239827495854851e+01
--5.6927111165864623e+01
--7.5314259786783495e+00
-1.5766120028291274e+01
--4.2586060677667106e+01
-1.2586890096020738e+01
-4.5747257397617753e+00
--3.0673635646157670e+01
-1.1925424013814251e-01
-9.9290631638168469e-01
--2.0747203637960475e+01
-1.3064734896156742e+00
-4.5659519991152059e-01
--2.0247690409121507e+01
-1.4630845418106594e+01
--1.7592292225405921e+00
--2.9845803047615739e+01
-1.7400592055664269e+01
-2.3054963572611417e+01
--6.1275300740349088e+01
--4.7997999391344998e-01
--1.7186571843032175e-01
--2.1063215977344782e+01
--4.8553468720581422e-01
--8.7888948511226728e-01
--2.1163054474228161e+01
--4.7716996729480101e+00
-6.1675637135057251e+00
--4.1171636746995453e+01
-1.4388766684583855e+01
--5.4209601309096023e-01
--2.9354423200034116e+01
-2.1626526614924768e-01
--1.1532336079709842e+00
--2.0796271043478299e+01
-1.2956746466016551e+00
--8.4383943748447212e+00
--2.0922847090273873e+01
-2.8701396492619619e-01
--1.0804084998468368e+00
--2.0785006013859338e+01
-1.1337175075303638e+00
--8.2930714582259810e+00
--2.1133719208303113e+01
-1.6967134723063928e+01
-2.2213773893726810e+01
--6.2464951672803465e+01
-1.6667487875475320e+01
-2.1515913391182384e+01
--6.1611371173791781e+01
--4.3619264411510955e-02
-2.2295447889349420e+00
--2.1537045569232845e+01
-3.8570027481960265e+00
--1.2615165299598459e+00
--2.0848762974438159e+01
-2.9233437585233797e+00
--2.7487338313832059e+00
--1.9921291821972499e+01
--2.1447112258650942e+00
-3.1421121098784938e-01
--2.2714925563644076e+01
-2.1915769313671274e+00
-9.4947101669498157e-02
--2.0248720855009608e+01
-1.0251022824235128e+00
-3.3622405030195818e-01
--2.0333401582665196e+01
-8.1836461614070655e-01
-4.0499396624819134e-01
--2.0359334539223948e+01
-9.4663918691246032e+00
--6.3658871161548962e+00
--2.3836508759605106e+01
-2.6062688245983540e-01
-3.9427139225627189e-01
--2.0623808452327157e+01
-4.3462311844134696e-03
-2.7329127298105987e-01
--2.0799454860418486e+01
-5.1595951232779846e-01
-1.8749299402652983e-01
--2.0488634077241542e+01
--2.4101922337619469e-01
-3.6910539452058522e-01
--2.0904848106614335e+01
-9.9487481743999473e-01
-7.4553380180392126e-01
--2.0344885032879279e+01
-9.9487481743999473e-01
-7.4553380180392126e-01
--2.0344885032879279e+01
-1.4756623509501416e+00
-9.9976100018223074e-02
--2.0232685151051207e+01
--2.5108992462822006e+00
--9.7663456846315755e-01
--2.2160099474529037e+01
-1.7980437671378948e+00
--3.7752577827497658e-01
--2.0255551624807733e+01
-1.4437040906022901e+01
--1.0752326871403262e+00
--3.0138998374235523e+01
-1.3092894773361653e+01
-3.4334382168600044e+00
--2.9759024304751364e+01
--2.7280610437986669e-01
-3.7913640484595890e-01
--2.0945551919224602e+01
-5.7816951869108024e-01
--7.7011451949068954e-01
--2.0581381982197666e+01
-4.0807220131042339e+00
-5.9882382309430238e-01
--2.0980403023562406e+01
-1.1513917683419994e+00
-1.4445890451844610e+00
--2.0479315474907562e+01
-1.9247872215476058e+00
-1.4618072164881808e+00
--2.0422514631981464e+01
-1.2600096405455480e+01
-3.5422968600723004e+00
--3.2513151025540495e+01
--7.8656734123429617e-01
--1.4388807715050806e+00
--2.0863434927569774e+01
-1.3617861673173461e+01
-1.2416627651094772e+00
--3.0949974683278437e+01
-2.7582264699898378e+00
-1.1025965713371182e+00
--2.0399790491234633e+01
-4.6399994323082633e-01
--7.1696257055022572e-01
--2.0635151101062004e+01
-1.1520771368618577e+01
--4.0520226308675937e+00
--2.6955200501031069e+01
--2.3380473155292796e+00
--7.9612086730676754e+00
--2.1646337739658357e+01
-2.3802848616572119e+00
--7.9418941649145969e-01
--2.0509909083227694e+01
--2.0285201908342714e+00
-1.7896382750585406e+01
--4.5212898798765572e+01
-1.4397901875645310e+01
--5.2200527192684176e-01
--2.9118396062704175e+01
-5.9201632833670059e-01
--5.3495505888503825e-01
--2.0533325619925826e+01
--6.5183877034956550e-01
--1.7793367142034930e-01
--2.1270910499215166e+01
-6.3076063057300069e-02
--2.8917477123154384e-01
--2.0762894942162369e+01
-1.2830186932625208e+01
-4.3374991676795309e+00
--2.9516573268671539e+01
-8.7920594298493215e-01
-1.9000406279613983e+01
--4.7224133980526283e+01
-4.1688990029260120e+00
--4.1902668128700888e+00
--2.1875171308061933e+01
--2.5238510720290845e+00
-1.5350582623962741e+00
--2.4284742007094668e+01
-3.2594857953357854e+00
-1.9631037441263235e+00
--2.1087888792537704e+01
-8.8758620944239797e-01
-1.2605895281753894e+00
--2.0610056597907967e+01
--1.2970662108605553e+00
--7.6795298236230669e-01
--2.1364981973955675e+01
-7.3820080774453549e+00
-8.8118862501464559e+00
--4.4465835252943755e+01
-2.0974074188038418e+00
--3.1104901239936944e+00
--1.9931473926301653e+01
-1.2920634160718089e+01
-2.8329013048144165e+00
--3.1932603318043494e+01
--7.4562499617473446e+00
-2.3430280675090969e+00
--3.5830367561047467e+01
-3.0236144550761588e+00
-8.5887301953688444e-01
--2.0499807547490825e+01
--3.3283218426925443e-01
--2.5747474208440186e+00
--2.0076507038373499e+01
-1.4711343054044124e+00
-7.7689873248363330e+00
--4.3122034548572195e+01
--2.7504364232132055e+00
--3.6445994579553878e+00
--2.3840836368449455e+01
--8.0520514334319273e+00
-2.5169574295598545e+00
--3.5776102775652497e+01
-2.7996882949745951e+00
-7.9086193112677317e-01
--2.0415450936822580e+01
-1.2140027328789298e+01
--4.8427928428014120e+00
--2.5573328241632016e+01
-1.4450777156945245e+01
--1.6020247239919372e+00
--3.0128340965672106e+01
--4.1215472629830927e+00
--8.0203227381327462e+00
--2.1550006907993115e+01
-8.1791962570619736e-01
-1.1654174712200875e+00
--2.0496562644034206e+01
-1.3711112615261733e+01
-9.0676803467548996e+00
--3.7975008978736419e+01
--3.2640359009620217e+00
--8.1253056687332670e+00
--2.1494106647240205e+01
-1.3747530433819469e+01
-6.3944422841228221e-01
--3.1075409771299022e+01
--3.7981931330323224e+00
--8.0305479910469213e+00
--2.1538325076904620e+01
-1.2777735463945191e+01
-3.1437782909166674e+00
--3.1755194310362281e+01
--3.6720043463687064e+00
--7.9161213812236548e+00
--2.1685248802901299e+01
--3.7894947393334366e+00
--7.8799479725334285e+00
--2.1755093020553424e+01
--2.3056808379653417e+00
--3.0855319223964601e+00
--2.2706115944345449e+01
--6.3046635929247397e-01
--1.0402815884081764e+00
--2.0935162365607106e+01
-4.1759082264915848e-01
--2.7683296535632151e+00
--1.9851600456842643e+01
--1.2958492641413570e+00
--2.0809060810174111e+00
--2.0825806151776110e+01
-1.4346151327364115e+01
--1.0911746132266826e+00
--3.0454532285780278e+01
-6.6678849714328775e-02
--4.0107782050352929e+00
--2.1398538643318950e+01
-6.1155378359149717e+00
--8.8244827271038584e-01
--2.2342851602559694e+01
--4.3952088754841750e-01
-9.4778477259453764e-01
--2.1149295822292160e+01
-4.1544232323765371e+00
--1.1426708622757582e+00
--2.1004268589988911e+01
-1.4064112424459802e+01
--5.2509610107239479e-01
--3.1085734990737038e+01
-9.9194594415723214e-01
--2.6603814241747465e+00
--2.0009410538495622e+01
-1.3590271322581808e+01
-9.9752865085733493e+00
--3.6617705792243996e+01
-1.4569031228499568e+01
--1.4765845753773632e+00
--2.9739952300137375e+01
-1.4439404812025767e+01
--1.1864826454825415e+00
--2.9918246088255898e+01
-8.1516735414019925e-01
-1.2903486760106340e+00
--2.0520751064253126e+01
-1.2551663587473609e+00
-1.7563849716789417e+00
--2.0657127703221828e+01
-1.9147184507103252e+00
-1.3728456662750734e+00
--2.0424778727509029e+01
--1.4418906709813444e+00
-7.5284074348183561e-01
--2.2211259038750175e+01
--2.5107891466275163e+00
-8.3014802692682066e-01
--2.3376256293481767e+01
-1.8480112477953177e+00
--1.5357644402311030e+00
--2.0342270487942155e+01
--3.7679686612692515e-01
-1.7940133282027251e+01
--4.7955784215035315e+01
-1.3831993731892181e+01
-9.0737428193740151e+00
--3.7052037624927635e+01
-1.3510728556530385e+01
-9.8930705584641139e+00
--3.7708921215733660e+01
-1.3055104197325566e+01
-2.9164144247999899e+00
--3.1622206915655166e+01
-1.4077154098202666e+01
-2.0738654030851966e-01
--2.9698322553588174e+01
--3.6253568407289674e+00
--7.7449791966312116e+00
--2.1930341870669235e+01
--1.4841129620458609e+01
-5.3901453631855762e+00
--4.0126276706660775e+01
-3.4205499849674652e+00
--5.8072828591254968e+00
--2.2752228931514306e+01
-2.0303478699565090e+00
-1.6619301713834982e+00
--2.0524171071947702e+01
-1.7051824886123375e+00
-1.6718440756480808e+00
--2.0588981369199040e+01
-8.9520235848595819e-01
-2.9704978122499992e-01
--2.0299410124365057e+01
-2.2105671400475959e+00
-8.0914974368872483e-01
--2.0208479416511601e+01
-1.6867292777294876e+00
-5.7389713094087358e-01
--2.0189828829162145e+01
-1.7803115146433384e+00
-1.4942246562336012e+00
--2.0379695441947788e+01
--1.3220869050229208e+01
-1.2010246289173448e+01
--4.1725207162477354e+01
--1.5475028471253619e+01
-1.0838222791522002e+01
--4.0760241670062840e+01
--1.0195950900706562e+01
-1.3125515245629000e+01
--4.3394209085130001e+01
--1.5147544388726102e+01
-1.1349496253357062e+01
--4.2804268523978024e+01
--5.3439422005708668e+00
-1.3011574541083796e+01
--4.9567018994308846e+01
-9.8588880925468836e-01
-1.4660344277122026e+00
--2.0656367630605093e+01
--2.1749586021643754e+01
-1.1855728430622594e+00
--3.4670789436116706e+01
--1.4525086575125938e+01
-1.2392779541452952e+00
--3.4488889858206406e+01
--1.1514581264070527e+01
-1.9618209137840330e+00
--3.5336571772918312e+01
--1.3674424831793909e+01
-4.1664881508945388e+00
--3.8453524585560928e+01
--1.1556659447859751e+01
-2.0373706438056383e+00
--3.5449427710362471e+01
--8.2776549634852099e+00
-7.4531861142046036e+00
--4.2787087551441424e+01
--6.9738888873818734e+00
-7.9632668140816367e+00
--4.3527685906234098e+01
--1.5970047779794122e+01
-1.3655891343176596e+00
--3.4688031186195715e+01
--1.5763984485893371e+01
-1.3864976144156169e+00
--3.4642215456551575e+01
--1.4978991267732159e+01
-6.3060293941076120e+00
--4.1230922294682919e+01
--1.6374689346668443e+01
-2.0166262822303951e+00
--3.5388327278894479e+01
--1.5269140915535569e+01
-6.0292341103268825e+00
--4.1030822649142408e+01
--1.6317068297831792e+01
-1.7732305496502734e+00
--3.5508504294654564e+01
-1.3048245509482951e+01
-1.2541086663343858e+01
--3.4999079942317124e+01
--3.9930068743623162e+00
-9.0525542909264907e+00
--4.5246135638163068e+01
--3.2059671900356128e+00
-8.8032165936940672e+00
--4.4516649579559669e+01
--1.1649588911765942e+01
-1.2243167871988629e+00
--3.4119008424330566e+01
--5.3145153485135657e+00
-1.0898251525722149e+01
--4.7475010802446270e+01
--1.3491504121178743e+01
-4.7766260107701495e+00
--3.9324911429455803e+01
--1.3125139194639974e+01
-1.1961123524779467e+01
--4.1609786972082532e+01
--1.0786228124185104e+01
-8.1468648959803325e+00
--4.3605526262661542e+01
--2.2085028699321182e+01
-2.2803653540033157e+00
--3.5861270420561553e+01
--2.2191360328467422e+01
-5.9673273976623496e-02
--3.2931589574668834e+01
--2.2060404951128607e+01
-1.3308244549665440e+00
--3.4737079092699801e+01
--7.7208300564934342e+00
-7.2901492899400431e+00
--4.2474656580833724e+01
-2.4644884039945198e+00
-7.8874895920190136e-01
--2.0310587985674793e+01
-7.8620838968238056e+00
-2.1885337241803839e+01
--5.0201692263578529e+01
--1.3875131554937992e+01
-1.1995224530760275e+01
--3.9926067887737268e+01
--1.2376354615529754e+01
-1.1892612310980789e+01
--4.2577003522936771e+01
-9.9044286936046557e+00
--4.8256407778063073e+00
--2.5818138321445257e+01
-7.7579181394766916e+00
-2.0881323041591919e+01
--5.3916834899444481e+01
--1.5187510154449106e+01
-5.7661341152600452e+00
--4.0714915834842479e+01
--1.4603572646445846e+01
-1.3949840425647484e+00
--3.4640813800477275e+01
--1.3587738325614881e+01
-4.4968316168152329e+00
--3.8804812168518417e+01
-6.8561696944249553e+00
-2.0191626604400923e+01
--5.1556634655548002e+01
-5.6208634857824604e+00
-1.9627135983397977e+01
--5.0607154587884772e+01
--4.6980840767935943e+00
--8.3259795972485549e+00
--2.1251760952933346e+01
-1.5463510685574389e+00
-8.3054144774839269e+00
--4.4017753507454167e+01
--7.1905056104307192e+00
-1.6758330634627434e+01
--4.1289538781939562e+01
-2.1700513357699253e-02
-2.6838592228114999e+00
--2.1835182079217677e+01
--6.5110569825551323e-01
-3.2322107704403753e+00
--2.3105009194999905e+01
--6.3978459650183854e+00
--8.1367993448683684e+00
--2.1360248068859484e+01
-9.8700319155979201e+00
-1.4768944980768813e+01
--5.2546786880832144e+01
-8.2236858801507839e+00
-1.4300549850370581e+01
--5.2062174259630424e+01
-9.2444991290888652e+00
-7.1596913704662031e+00
--4.2465428651178122e+01
-3.0913775647430723e+00
-3.5290907539094589e+00
--2.3141419430919978e+01
-3.5004595823383058e+00
-2.9408940155743362e+00
--2.1987721143456543e+01
--1.4443990906707906e+00
-2.3943249934221700e+00
--2.3096454176751671e+01
-4.3555477449545243e+00
--9.8429200749803003e-01
--2.1167197245757528e+01
-2.6361072451645526e+00
--2.7139519591920007e+00
--1.9919731786282448e+01
-3.4689403818642583e+00
--3.8695793825558131e+00
--2.1049725055589484e+01
-1.0335288095886892e+01
--4.7922724751489181e+00
--2.5948882404110229e+01
-9.9517246705901936e+00
--5.1423894048351446e+00
--2.5260305487764878e+01
-2.1463804908419521e+00
--6.4697360291086428e+00
--2.2033080146734434e+01
-3.9239475503574028e+00
-3.0230725482155432e+00
--2.2357666300163224e+01
-1.0198774013430514e+01
--4.8509141173439101e+00
--2.5907427237844846e+01
-9.5425681550692651e+00
--5.6171009190158037e+00
--2.4793204434841392e+01
--3.8408314446447172e+00
--7.9029761029408787e+00
--2.1676602581861079e+01
-1.0922393366233512e+01
--6.4864527738713500e+00
--2.3388660742460409e+01
-6.6088555784262804e+00
--7.4669393331509939e+00
--2.2224179614715634e+01
-6.6088555784262804e+00
--7.4669393331509939e+00
--2.2224179614715634e+01
--2.3202780971091190e+00
-1.1078325648576977e+01
--4.7745117571865649e+01
-8.5249570600548541e+00
-1.0123507134074799e+01
--4.6317597923259257e+01
--2.0987515408919868e-01
-2.9651338618038765e+00
--2.2259561710018268e+01
--9.6644999304180885e+00
-8.0428671819574471e-01
--3.3792060897869533e+01
-1.0775323215708383e+00
--1.5122059837686328e+00
--2.0450706637018811e+01
-5.0592108030537499e+00
--1.8011374400838276e+00
--2.1133562443055954e+01
-1.2996709476507199e+01
-1.0796420466025355e+01
--3.9663443649868199e+01
-3.6268843240026740e+00
-2.8642571721949164e+00
--2.1920247576869329e+01
--1.8493016041568768e+00
--7.9999155860798812e+00
--2.1623712563126599e+01
-1.5210089385825611e+01
-1.7822343683536104e+01
--5.6910402668422002e+01
-1.5567855843182343e+01
-1.6420501972874874e+01
--5.5117415385155766e+01
-4.1177179186688395e+00
--6.2346179517782685e-01
--2.1316795896445225e+01
-1.1649791359269794e+00
--5.1297667368495743e+00
--2.1946409056080007e+01
-6.9894567577508511e+00
-9.1912818932466042e-02
--2.3597311674647202e+01
--4.6992247004602943e+00
-6.4305839232304374e+00
--4.1282494397276679e+01
--2.7987396819028545e+00
--8.1062336132631181e+00
--2.1365222702384440e+01
-3.2308566455985956e+00
--1.6289578781716523e+00
--2.0384091761352760e+01
-1.0541279735380112e+01
--6.5105890018657053e+00
--2.3366961546596240e+01
--9.4509639939295553e+00
-1.2418969036634985e+01
--4.5108450107187984e+01
--6.1037448996199850e-01
-3.1405265600378467e+00
--2.2892947407733800e+01
-9.5031431355934248e-01
--2.9002144997369959e+00
--1.9683759758714736e+01
-2.9004522940459858e+00
--5.1409531289632433e+00
--2.1994707678170233e+01
-2.6306332946014943e+00
-4.0430937083488478e+00
--2.3439495173950743e+01
-3.2113781414618434e+00
--6.4723350947900595e+00
--2.2047134110031720e+01
-2.9017711924821392e+00
--3.1130270574005845e+00
--1.9915047106426950e+01
-3.4974467402758056e+00
--3.6693465618151921e+00
--2.0869607308501415e+01
-2.3396980530904079e+00
-3.8560867118429876e+00
--2.3867107048126858e+01
-4.4611475751638672e+00
--4.0910663962427503e+00
--2.1878939855004365e+01
-6.6773416274974791e+00
--1.0728047552246656e+00
--2.2109380274897511e+01
-4.0976934926117057e+00
--4.2717933189653854e+00
--2.1814208320904189e+01
-6.1924353009548936e+00
--4.7601991909822444e-01
--2.2794423253001877e+01
--1.1900951029346940e+00
--5.4382398028782557e+00
--2.3286656398750157e+01
--1.7108350863920729e+00
--3.6739854910497640e+00
--2.2336273519342395e+01
-3.1830913457285690e+00
-3.6182061805262911e+00
--2.2998235333162100e+01
-3.8316193508402474e+00
--7.5584362890847046e-01
--2.0856579071645339e+01
-4.4012001185667682e+00
--4.4747700485344151e+00
--2.2257584558844616e+01
-4.2770685962352788e+00
--6.7078246212384596e-01
--2.1469430599733208e+01
-6.7353999690286868e+00
--3.8041642078631410e+00
--2.4565910014989495e+01
-3.7305204387486168e-01
--5.8449569457721280e+00
--2.1643688686863470e+01
-6.0146957583416381e+00
--1.6356882319966208e+00
--2.1371278068881338e+01
--1.4870132626150586e+01
-3.9805614589797700e+00
--3.8254625559363895e+01
--1.5787975766107580e+01
-6.1916042379302620e+00
--4.1279428127592290e+01
-1.1510493234843302e+00
-1.8434194014276436e+01
--4.8196366192257429e+01
-2.3051538673836838e+00
-2.0250315766269011e+01
--4.7080692064227200e+01
-8.4063752756478838e+00
-2.1169455522027427e+01
--5.1725751469351920e+01
--1.4827633286705217e+01
-8.2283432986472267e+00
--4.3915748511802057e+01
-3.2095875420157367e+00
--2.4754973332914290e+00
--2.0252800723822556e+01
-2.6786733858570013e+00
--7.1658478152938143e-01
--2.0423282220578006e+01
-4.1235373587179103e+00
--1.9328429638131810e+00
--2.0924883368105242e+01
-5.2589739137814178e+00
--1.5042900555018148e+00
--2.1514462284927394e+01
-1.3038418979933420e+01
-1.1037065175558145e+00
--3.3944311494392025e+01
-5.6101310748003614e+00
--1.4373087854630633e+00
--2.1602594265189310e+01
-5.1846290691170083e-01
--2.2602547751171702e+00
--2.0534392934847691e+01
-3.4805924935840502e+00
-3.0204851810446187e+00
--2.2178177137279604e+01
--2.7749254286585884e-01
--2.0981672905105211e+00
--2.0774982254545407e+01
-9.8926373368196785e-01
--2.3633564438159635e+00
--2.0363929009061511e+01
--4.6885842126427582e+00
--7.4273507261818619e+00
--2.2337138960217523e+01
--9.2682728495224453e-01
--2.6157627196609772e+00
--2.0492897724468005e+01
-7.0761247444508353e+00
-1.2170793264336158e+01
--4.9064969602480367e+01
-1.2438502586055840e+00
--8.1586567629446738e-01
--2.0465632245106558e+01
--2.0994441659517499e+01
-1.2842506234314854e+00
--3.4653034453872969e+01
--2.1896457743910734e+01
-2.5298724333809854e+00
--3.6235418381128646e+01
--2.0675532818646282e+01
-9.3087107602281560e-01
--3.4126439606729868e+01
--3.4184613548921252e+00
-8.9669897258457798e+00
--4.4814869464311180e+01
--3.9288148242882226e-01
-7.0841353151844555e-01
--2.1039612330153105e+01
--1.4790941024684310e+01
-6.0497022082503760e+00
--4.0570080345224511e+01
-1.4025036167516655e+01
--3.7708951968483345e-01
--3.1086781058247919e+01
-1.2189736571691608e+01
--4.1882707576845650e+00
--2.6759798385881993e+01
-1.2623624887163633e+01
-3.7813953199125909e+00
--3.2462691235518946e+01
--2.0487238243094530e+00
--8.0168532148607135e+00
--2.1437853376132427e+01
-5.4485261966491718e+00
--4.7308540249277655e+00
--2.3007340207575030e+01
-1.6252257407151987e+00
--4.8646511418201976e+00
--2.1766977900933966e+01
--4.4801332619563947e+00
--7.8961767049442875e+00
--2.1781540544373172e+01
-2.4192555254775590e+00
--2.7048974983921048e+00
--2.0008342266322632e+01
--1.9113864539423673e+00
--8.4593523061357878e+00
--2.0879730797022571e+01
-1.1911154753162624e+01
--6.1457464415631469e+00
--2.3644531656344306e+01
-1.2695502300183229e+01
--5.9853967709376352e+00
--2.3833015310352341e+01
-1.1825422592271709e+01
--5.7400712145812278e+00
--2.4609009502947423e+01
-1.2422547889918221e+01
--4.0611715803612158e+00
--2.6761733810556183e+01
-1.3747565478785848e+00
--8.4933150452346311e+00
--2.0921611837780485e+01
-1.3273652585075640e+01
--5.8446878061383361e+00
--2.3971056519707975e+01
--4.8985470365585853e+00
--1.4887636120550247e+00
--2.7496458992477240e+01
--6.1995357022293875e+00
--4.3997363337096118e+00
--2.6713639148836396e+01
--1.7870798689600267e+00
--8.4571421685702539e+00
--2.0963035572615695e+01
-1.2505161953956170e+01
--4.6719851031119992e+00
--2.6123681234233732e+01
--1.5322941412725435e+00
--8.5124696392823243e+00
--2.0842192762622773e+01
-5.0816658603409737e+00
--4.4331618398652912e+00
--2.2846252528745534e+01
--1.2334975879559639e+01
--7.5803246013788073e+00
--2.2166538807959945e+01
--4.9283769931502395e+00
--8.1069227716903889e+00
--2.1436316235453980e+01
-6.2388008637221697e+00
--9.8472510494892629e-01
--2.2208832760637719e+01
-1.3196484639619719e+01
-1.2035362083551480e+01
--3.4992522615595171e+01
-2.3776544907181102e-01
-3.8353447860790428e+00
--2.3403767045408145e+01
--5.5558338452011524e+00
-5.5465985641517568e+00
--4.0406042241818056e+01
-1.9874241831310635e+00
-1.5581764252762089e+00
--2.0465494404056436e+01
-3.2164999927485565e+00
-1.3391803828279458e+00
--2.0735006045563360e+01
--3.3772738769076582e+00
--4.3694637474303066e-01
--2.2831539953651816e+01
--2.4225945659118131e+00
--1.5767511604645443e+00
--2.1378745002933059e+01
-1.9506910742713397e+00
--3.1162943417491218e+00
--1.9901294812942709e+01
--1.0527883846203989e+00
--3.6901215156338720e+00
--2.1557444583853446e+01
-4.8430658579858514e+00
--2.8527022587093773e+00
--2.0949715332426067e+01
--2.7779276368564605e+00
--2.9546678152075900e+00
--2.3187478741588261e+01
-4.4831865497663665e+00
--4.4213294447894080e+00
--2.2312907542389151e+01
--1.4443990906707906e+00
-2.3943249934221700e+00
--2.3096454176751671e+01
--1.5513143491691992e+00
-2.1577840837483224e+00
--2.3055584309136297e+01
--1.6805769494368763e+00
-1.5911710328560809e+00
--2.2850670257426390e+01
--4.5547284910830244e-01
--1.1977779581110268e+00
--2.0783904890925179e+01
-4.8019545247691253e+00
--3.5076856797827665e+00
--2.1564586972399240e+01
--1.9607645125369952e+00
-1.4885873293249656e+00
--2.3405602374328868e+01
--9.3738832160941108e+00
--2.8933689259434381e+00
--2.8805342599063199e+01
-3.9100263860950548e+00
--4.2716405180797672e+00
--2.1787854622675781e+01
--8.2238520690979229e+00
-1.6620757350598998e+00
--3.4838709640741058e+01
-1.2963778618651743e+01
-2.7556190838069070e+00
--3.2026790224671899e+01
-2.6901761337798022e-02
--9.9620336616403593e-01
--2.0976693455407382e+01
-3.8570027481960265e+00
--1.2615165299598459e+00
--2.0848762974438159e+01
--1.7492419071914767e+00
-8.2499035326964176e-01
--2.2662585365360446e+01
-2.1698620656152188e+00
--3.0318343376520276e+00
--1.9822379334349773e+01
-9.5031431355934248e-01
--2.9002144997369959e+00
--1.9683759758714736e+01
-3.8569210399570015e+00
--3.9798849354392014e+00
--2.1486201092688297e+01
-4.4831865497663665e+00
--4.4213294447894080e+00
--2.2312907542389151e+01
-1.7659937790357083e-01
--1.5280738991667446e+00
--2.0375018614750545e+01
-1.3921172223946088e+00
--1.2793108299089023e-01
--2.0276160160228756e+01
--9.1667474455588707e+00
--2.9700006372905059e+00
--2.8675446517191112e+01
--5.7883287527886615e+00
--7.4181939957897098e+00
--2.2474212130533633e+01
--1.2593971651867544e+00
--1.7508542425759772e+00
--2.1128166049604594e+01
--3.8430780599027203e+00
-2.7052260688793222e-02
--2.3478888304345706e+01
-1.5115828444787605e+01
-2.0776587143442264e+01
--6.0820239280757221e+01
-4.7863507348811245e+00
-1.7552260832801871e+01
--5.4144013588784254e+01
-7.6286718559604569e+00
-1.3592009868149701e+01
--5.1087290276705112e+01
--1.0796678880057812e+01
-1.0659099613728445e+01
--4.3895442391138914e+01
--1.0757239891278738e+01
-1.0477937929082763e+01
--4.4217881113323152e+01
--1.0861810745069130e+01
-1.0410362150931469e+01
--4.4336424633611827e+01
--1.0992594746550479e+01
-1.0297319516713182e+01
--4.4116946646509483e+01
-1.3035610243097116e+01
-9.3211051088169441e+00
--4.0092346717857872e+01
--1.1408173771920637e+01
-1.0093959383012988e+01
--4.3917710737533660e+01
--1.2855090588807213e+01
-1.0077379165851927e+01
--4.4839092619538640e+01
-1.3378393927164289e+01
-8.3831299892696727e+00
--4.0759854984459551e+01
-1.9108710396147437e+00
-9.0112107530039740e+00
--4.4959469605960386e+01
-1.3213496008156492e+01
-8.3054461371958332e+00
--4.0726117038581826e+01
-1.3497880879431431e+01
-8.2213162377933564e+00
--4.0473528876278095e+01
-1.3567129318989133e+01
-7.9576882223172358e+00
--4.0181944553370322e+01
-9.8885414990682126e+00
-8.6509445499062103e+00
--4.4432500147137084e+01
-6.4004564013025620e+00
-8.5988027148017316e+00
--4.4320066687380091e+01
-1.3762857426764413e+01
-7.7776731792875315e+00
--3.9752200912548417e+01
-1.3565393940896143e+01
-7.7191166091523229e+00
--4.0754105800508633e+01
-1.3563234781667527e+01
-7.6139916279014894e+00
--4.0541810819120819e+01
--1.0198657595628960e+01
-7.2781977343199982e+00
--4.2707968198825498e+01
--7.7981409707888316e+00
-6.9136854092065398e+00
--4.2206611016041265e+01
--7.4661512980910976e+00
-6.8825209230913202e+00
--4.2082111768975594e+01
--6.3384350502307809e+00
-6.5760563201239757e+00
--4.1814144372543410e+01
--4.3951941052129753e+00
-6.4536086250268729e+00
--4.1470544814452950e+01
--6.3093399796569321e+00
-6.4240264392189097e+00
--4.1410400097099455e+01
-3.0913775647430723e+00
-3.5290907539094589e+00
--2.3141419430919978e+01
-1.4354820763127156e+01
-5.3472018048876597e+00
--3.9609489921888503e+01
-1.2637564209647946e+01
-3.6119103431099644e+00
--3.2465395090035130e+01
--3.3008512223504263e+00
-2.4893294520117513e+00
--2.6673048036135498e+01
-1.8259355789302045e-01
-2.0252267420688845e+00
--2.1234420629039896e+01
--8.7537761109440275e+00
-2.7189472267496155e+00
--3.6256558327492833e+01
-2.3243203563846224e+00
-1.5119566124425325e+00
--2.0495946329288568e+01
--8.7201730957939407e+00
-2.3071230468584520e+00
--3.5777099963723451e+01
-3.7466266008003317e+00
-1.3985940536371759e+00
--2.1037471868162992e+01
-1.3148282740063950e+01
-9.2406041589923649e-01
--3.3710876790240498e+01
-1.3400928345710300e+01
-1.8235292879308757e-01
--3.2640979523017982e+01
--1.0221597603121511e+01
-1.8590492718869103e-02
--3.2624906073438289e+01
--1.0387558281785633e+01
--1.1429846455209997e-01
--3.2476615839741257e+01
-4.0318032399333639e+00
--1.0521434986887352e+00
--2.1073521585214770e+01
-4.9984242186784318e+00
--1.6752976013658651e+00
--2.1297274381766861e+01
-1.1870250795214229e+01
--4.0751018819096840e+00
--2.6748211629845830e+01
-1.2609057633985854e+01
--4.1772516312508277e+00
--2.6683941503181849e+01
-1.2399859104428471e+01
--4.5089335980465011e+00
--2.6125104234023578e+01
-1.2069910974683120e+01
--4.9862631855429047e+00
--2.5510495772296608e+01
--1.1506375879880695e+00
--5.7180097110007857e+00
--2.2277844236162643e+01
-8.9354366639452412e+00
--6.5379402965628408e+00
--2.3498280770543634e+01
-9.1360421412231059e+00
--6.6313306805238792e+00
--2.3397318782682039e+01
-8.1401113436176384e+00
--7.0386709810493704e+00
--2.2758244710899369e+01
--3.3343784614656191e+00
--8.1843830356430480e+00
--2.1364522761090804e+01
--1.8677322916946835e+00
--8.1622538465489161e+00
--2.1249236833740138e+01
--2.5227543215478971e+00
--8.2692275764677294e+00
--2.1180859991254366e+01
--1.5906793605607894e+00
--8.4557259003596457e+00
--2.0902079767883883e+01
--1.5322941412725435e+00
--8.5124696392823243e+00
--2.0842192762622773e+01
-1.5758821864643378e+01
-2.1083725423500393e+01
--6.1422428946915240e+01
-1.5314901197793803e+01
-2.0855420820544406e+01
--6.0910379899238642e+01
-7.5500188168862437e+00
-1.7719061732506287e+01
--5.6740719802715788e+01
-8.5143261715192811e+00
-1.6846217078192335e+01
--5.5497346810345071e+01
-7.2144659362672243e+00
-1.4096522217442361e+01
--5.1724716676623487e+01
-7.2144659362672243e+00
-1.4096522217442361e+01
--5.1724716676623487e+01
-9.2247252743048964e+00
-1.2621975852491646e+01
--5.0028529325245266e+01
--1.0622306672112284e+01
-1.0949925122348827e+01
--4.4076067596896692e+01
-1.3198975420224986e+01
-9.4377775071041992e+00
--4.0381799877957476e+01
-1.6850192718725665e+00
-8.9890328035331404e+00
--4.4812305509517650e+01
-1.3736192755108501e+01
-7.7646265154816554e+00
--3.7822045327943194e+01
--1.4831882195875709e+01
-8.4303279992829214e+00
--4.4311068410092318e+01
-1.3914467306322718e+01
-7.5090038026897377e+00
--3.9434217984851777e+01
--5.6906500667966853e+00
-8.0725753709308083e+00
--4.3774367887748873e+01
-1.3871745735138191e+01
-7.2100192699195960e+00
--4.0745203935550414e+01
--7.2240022537815216e+00
-7.3295763973542636e+00
--4.2623050075853563e+01
-1.3790214719471246e+01
-6.9935738084007983e+00
--4.0713343247779179e+01
-1.3507389629580050e+01
-6.8223906092924560e+00
--4.1746236935137993e+01
--7.4133430627805330e+00
-6.6608282235584007e+00
--4.1722197380845913e+01
--4.6927539511621781e+00
-6.3334228155854788e+00
--4.1250859031323998e+01
-1.3299763569308263e+01
-1.8151397734247572e+00
--3.1261475606481362e+01
--7.1169852985619997e+00
-1.8530325231206175e+00
--3.5160828084486113e+01
-1.3810476099263486e+01
-7.0362533883761069e-01
--3.0490110196733383e+01
-1.3501005315357421e+01
-7.0353277523300017e-01
--3.2092338787048298e+01
-1.1239392782896623e+01
--1.8346580461194151e+00
--3.0011588755681924e+01
--1.6317577195757615e+00
--1.3941829365298066e+00
--2.1672126780305511e+01
--8.4977531002671878e+00
--2.6354019476428694e+00
--2.9004661269491748e+01
-1.0754744022475492e+01
--3.0515514195328346e+00
--2.8222007681200338e+01
-3.1727539863234284e+00
--2.1571544468406167e+00
--2.0503671279142033e+01
-1.1360579064282531e+01
--3.8596571649219378e+00
--2.7075031633278346e+01
--9.6385068817228188e+00
--4.2866949055137384e+00
--2.6735958057539232e+01
-9.6342002670603186e+00
--6.1868301780159181e+00
--2.4020080901543626e+01
-9.6342002670603186e+00
--6.1868301780159181e+00
--2.4020080901543626e+01
-1.1567678010099320e+01
--6.2754677266070242e+00
--2.3593260878099528e+01
-9.6763139055468788e+00
--6.3021661893057779e+00
--2.3714942797143991e+01
--1.6166765474935252e+00
--7.7601135528937766e+00
--2.1919018510224817e+01
--2.4393604544483587e+00
--8.0041339297508198e+00
--2.1600805595196547e+01
--2.1285879734403541e+00
--8.3350853434644527e+00
--2.1075087909663843e+01
-8.0857779651284556e+00
-1.8709223445305263e+01
--5.6188012313935054e+01
-7.3264100775045682e+00
-1.5915989326008159e+01
--5.4157213155014269e+01
-1.3554566076740764e+01
-1.0357099454693738e+01
--3.6168229586944655e+01
--1.4926254352791366e+01
-8.3510995085680939e+00
--4.4159572068365136e+01
--4.1904464782071953e+00
-8.1775038064031484e+00
--4.3812556073957957e+01
-1.3789374691031815e+01
-6.8702275255380494e+00
--4.0430911960414122e+01
--6.7797470608145325e+00
-6.0966092331661788e+00
--4.1048256205923018e+01
-6.0922899546588010e+00
-1.0115505599346399e+00
--2.3696913954100786e+01
-7.3375525543964377e+00
-1.0041351985498492e+00
--2.4863250453415144e+01
-1.3343884948725448e+01
-7.0936034849973895e-01
--3.3342085723084004e+01
--8.3792262046122428e+00
--2.8675691974218487e+00
--2.8489868029980066e+01
--8.6234858486527912e+00
--2.8949669442375643e+00
--2.8606092871722712e+01
-1.9232199782275786e-01
--2.3451594091805896e+00
--2.0418084164961929e+01
-1.2465976127834667e+01
--3.8749215771235703e+00
--2.6826357454694094e+01
-1.1925707142991065e+01
--4.0204685847316419e+00
--2.6861286475117016e+01
-1.2629463266620753e+01
--4.9455280273572351e+00
--2.5540062235935046e+01
-1.2065693979376308e+01
--5.1547251659888689e+00
--2.5283537316160643e+01
-8.3125980999931794e+00
--6.3676989271592062e+00
--2.3690980695010253e+01
--3.0503369734412074e+00
--8.0185284425936914e+00
--2.1591983206387987e+01
--2.5150655133561850e+00
--8.2170739540014583e+00
--2.1246461956503126e+01
--2.5785833618864835e+00
--8.3439056567124688e+00
--2.1051112178682217e+01
-1.4067123538408275e+00
--8.4342155864046937e+00
--2.0980132542980861e+01
-8.1268823562677674e+00
-1.8112825839462413e+01
--5.7074211908403420e+01
-8.0935858411742316e+00
-1.7790432717991983e+01
--5.6822761890914080e+01
-1.4874501161402481e+01
-1.5043028003948997e+01
--5.3050940045896738e+01
-1.3885537602490460e+01
-1.3829653857698482e+01
--5.1625974609741064e+01
--1.0032292713399439e+01
-1.1977791990313786e+01
--4.5310258981784223e+01
--1.0350707680431697e+01
-1.0808266432135129e+01
--4.4518759030707045e+01
--4.7757398178654613e+00
-6.7996709936978155e+00
--4.1836254564185943e+01
--5.9007552503814473e+00
-6.7936124346081526e+00
--4.2017330107751128e+01
--4.5798524343603821e+00
-6.2403542295365702e+00
--4.1345457019145535e+01
--5.5962495404996702e+00
-6.0603658845592170e+00
--4.0813881997872549e+01
--4.9993456045980231e+00
-6.0493227006815058e+00
--4.0986301183791824e+01
-1.6613953029015820e+00
--2.6921435934213060e+00
--2.0011871258948197e+01
-1.2078538359998175e+01
--3.9506468325501003e+00
--2.7070993653425582e+01
-1.3762988244135157e+01
--5.3079752478843281e+00
--2.4688968898400070e+01
-1.1106462204302991e+01
--5.5141897226314232e+00
--2.4993852712533712e+01
-2.4969975207304738e+00
--5.2029191953313987e+00
--2.2074156067072408e+01
-9.7197608015571575e+00
--6.2610168901375296e+00
--2.3876206322160751e+01
-9.5884662143308201e+00
--6.4350425944888512e+00
--2.3476233107111234e+01
-1.6788784131356312e+01
-1.6423080423635039e+01
--5.5711645416390802e+01
-1.5209704783528043e+01
-1.5663680888883544e+01
--5.3829823741024285e+01
--6.3959795753866668e+00
-6.1492334995940787e+00
--4.1123881711875882e+01
--1.1447748467120773e+01
-1.0343655027005491e+01
--4.4402271508302448e+01
--1.1447748467120773e+01
-1.0343655027005491e+01
--4.4402271508302448e+01
-1.1387357750018150e+00
--8.4288582234364622e+00
--2.1145366421285686e+01
--1.1146901436479080e+01
-1.0888531240121052e+01
--4.3387004094116790e+01
--1.1018153596234392e+01
-1.0609137189898286e+01
--4.3611330995883279e+01
--1.4630626426310339e+01
-9.5677982199861642e+00
--4.4460476806985653e+01
--1.0613306518532580e+01
-1.0648445620602297e+01
--4.4152853727665885e+01
-4.6505858527995763e+00
--3.7308805302228092e+00
--2.1743828600721294e+01
-1.2733532783279244e+01
-4.8364490695069584e+00
--2.9328203827186357e+01
-4.6567791229622308e+00
--4.0208275542220234e-01
--2.1495673249416658e+01
--3.8499546192421668e+00
--7.1734232326805660e+00
--2.2717843743802234e+01
--4.4292823726893502e+00
--8.6097916131461432e+00
--2.0654053793700911e+01
-1.7669371628729820e+00
-1.8788148650898666e+01
--4.8552085182922113e+01
-5.6372719185204705e+00
--5.0564785809503503e+00
--2.2655929309822891e+01
-1.4486386993634708e+01
-2.3903393849029964e+01
--5.5465497106855864e+01
--5.8542263232211198e+00
-1.2608564587652223e+01
--4.9253347471413768e+01
-6.1126360162729174e+00
-2.0790514515327725e+01
--5.0078635910049741e+01
-1.2938025537927118e+01
-2.3492471942531392e+01
--5.4621295819722512e+01
-5.7061900682186542e+00
-2.0152508035655922e-01
--2.2705701901857100e+01
-3.7792289738871916e+00
-6.2294353177003281e-01
--2.0848994363692565e+01
-2.4197225533317295e+00
-1.8882891729755100e+00
--2.0705493339402533e+01
--1.2188504519068053e+01
--6.1619709403538652e+00
--2.4096317974665233e+01
-4.8566569146000937e-01
--6.1571556255427529e-01
--2.0600267415676338e+01
-1.6679025812749025e+01
-2.2733223709973995e+01
--5.9581894182882380e+01
--8.9703720205816762e+00
-1.2297060187450960e+01
--4.6747712274751436e+01
-1.5083562583363948e+01
-2.4076653233055612e+01
--5.5919496188192170e+01
-1.7148051821928064e+01
-2.2912420108510819e+01
--6.0393487683510720e+01
-1.3736529526171701e+01
-2.2727463301218698e+01
--5.6405970949610413e+01
--8.6224426678485538e-02
--5.3527030793851127e-01
--2.0895544233453982e+01
-3.2528020518111314e+00
-1.2175970767208288e+00
--2.0714111851585542e+01
-1.0563310660050655e+01
-2.0410509257024973e+01
--5.6614461269920604e+01
-5.5119183515413610e+00
-1.9390529034941210e+01
--5.2267526007872299e+01
--1.0755821803942682e+01
-1.4975528553103645e+01
--3.9860281668526056e+01
-3.7465082303576653e+00
-5.5956408162099569e-01
--2.0801680995910228e+01
-1.5290217205481509e+01
-2.1926970274607644e+01
--5.9628582274025959e+01
-7.8508179025854172e+00
-1.4327780234857041e+01
--5.2110842078649867e+01
-1.5416936665940728e+01
-2.2461304862494924e+01
--5.8828534418127710e+01
-1.1297552589531039e+01
-2.2464084707575857e+01
--5.3707779877381832e+01
-1.9663429674338493e+00
-7.7981913222021959e-01
--2.0239081305483293e+01
-7.6752320417240210e+00
-2.0276290528333369e+01
--5.3795623326427545e+01
-2.3347677207387951e-01
-1.2185980836786272e+00
--2.0762624379564716e+01
-3.1009795037186660e+00
--2.4836537629927360e+00
--2.0283032377333811e+01
-9.3938317073582187e+00
-1.8759818750781832e+01
--5.7628356980532175e+01
-9.2119937285609943e+00
-1.9835519289761731e+01
--5.6012535089864450e+01
-5.5789228901790668e+00
-2.0726339066341840e+01
--5.0225225314216992e+01
-4.1453910272151999e+00
-1.9829425613491139e+01
--4.9994816437931391e+01
-7.0190204429634484e+00
-2.1328883927995765e+01
--5.0749796202222548e+01
-9.0898903928120607e+00
-1.9659150003006157e+01
--5.6090376929174703e+01
-1.4768652719924120e+01
-2.3758114133832350e+01
--5.5828167990483777e+01
-1.4999304393696244e+01
-2.4015781880294064e+01
--5.6071667375476792e+01
-9.6218595337869193e+00
-2.1357522539953198e+01
--5.3008200331516875e+01
-1.2438502586055840e+00
--8.1586567629446738e-01
--2.0465632245106558e+01
-1.2605372794847777e-01
--1.6480706545608628e+00
--2.0444736382979890e+01
-1.0839196894036252e+01
--2.8952311123359231e+00
--2.8569608771716329e+01
--1.0079039319683465e+01
--3.9294263122553761e+00
--2.7279214473798401e+01
-1.3882365291486959e+01
-1.4102930526518588e+01
--5.1889351423792782e+01
-6.9593582821261224e+00
-2.0066429122338814e+01
--5.1858150256594961e+01
-9.6067310653027960e+00
-1.4905415049117108e+01
--5.3215548529336807e+01
-1.3253170921844939e+01
-9.5481098156291200e+00
--4.0026409321749362e+01
--4.4149003550681707e+00
-1.6440126164823127e+01
--4.5299134128519505e+01
--2.6490029398466088e+00
-1.8260871970888042e+00
--2.4637792576335812e+01
--1.5056325786876790e+00
-3.6843866503582612e-01
--2.2188824837405257e+01
-1.1122654543580397e+00
-1.8253486955938424e+01
--4.8364192528440078e+01
--1.0270028499849180e+00
--2.1958076816110688e+00
--2.0653598062050197e+01
--3.0373775131388825e-01
--2.7060147347892420e+00
--2.0141032793785651e+01
--3.9981656427510698e-01
-1.9910673638566885e+00
--2.1645123037312700e+01
--2.2344212234017309e+01
-3.3962744519939220e-01
--3.3299167527195806e+01
--2.1969848243422813e+01
--1.1958710002535219e-01
--3.2674666832920387e+01
--2.2436668025807702e+01
-2.5619327481194654e-01
--3.3240758353633282e+01
--2.1457811354413433e+01
--7.0127638970141071e-01
--3.1940506601841086e+01
--9.8733090976035989e+00
-6.3156131400203668e+00
--4.1378281566939606e+01
--8.7040385562133906e+00
-6.8640745032835806e+00
--4.2016706204676510e+01
--2.1589550973350160e+01
-2.2656948553055405e+00
--3.5698951915637956e+01
--1.2993569794827769e+01
-3.3639261422154494e+00
--3.7346598104805835e+01
--2.2147471482967948e+01
-1.7453951884744656e-01
--3.3090657111423994e+01
--1.2062351642245241e+01
-2.1622075070380289e+00
--3.5655879421328137e+01
--1.2062351642245241e+01
-2.1622075070380289e+00
--3.5655879421328137e+01
--1.1126331941686313e+01
-2.1791691026712199e+00
--3.5572338403697429e+01
--1.5208352319395749e+01
-1.0343295224491122e+01
--4.4008490429451371e+01
--1.1617969253107484e+01
-7.3495977270042534e-01
--3.3651713274893638e+01
-1.1203198118323368e+01
--2.3976012532104742e+00
--2.9313122370680539e+01
--4.9504796087345959e-01
-1.8437519606208390e+00
--2.1573055948067132e+01
--2.2713196736331671e+01
-5.0541496074708103e-01
--3.3576626775275791e+01
--2.7760450285802797e+01
-1.7776232132681066e+01
--5.5763636082864593e+01
-8.8320159424058389e+00
-7.1282264635958565e+00
--4.2404818144814833e+01
-1.0020970959704238e+01
-8.1478320747247022e+00
--4.3639636497580867e+01
-9.2129360171911472e+00
-1.3788221762303472e+01
--5.1211508412337736e+01
-1.5438467170173016e+01
-2.3006978983981767e+01
--5.8321862717162382e+01
--7.3311799240145694e+00
--1.9642981698684689e+00
--2.9859637975333573e+01
--2.8553181328152339e+00
-8.3564324251102171e+00
--4.4321792426117312e+01
--9.9329272677810803e+00
--8.5533841392662391e-01
--3.1417323984683609e+01
-1.4085261639329302e+01
-2.3870273290414428e+01
--5.4033722090577477e+01
--6.2581293554406014e-01
-2.6020899903769648e+00
--2.2279655439173094e+01
-3.2989299633671991e+00
--6.2366598377521152e+00
--2.1741544459490182e+01
--4.6349487205883309e+00
--7.9212330618682190e+00
--2.1752890782940124e+01
-1.5127594585903037e+01
-2.2352805237122581e+01
--5.8012926873855250e+01
--1.4925182465105967e+01
-1.0382570354221028e+00
--3.4348130807560089e+01
-1.4433800332519557e+01
-2.3060227517952772e+01
--5.6401576416545915e+01
--1.9244917127687433e+01
--2.8438518483146078e+00
--2.8907030074216948e+01
--1.5188096418513972e+01
-1.0487084108610961e+01
--4.3332749478707768e+01
--1.1690193083064788e+01
-8.2265507667099536e-01
--3.4009119780125317e+01
--9.6511105728197002e+00
-3.2143966457490332e+00
--3.7034217828081395e+01
-7.8226751719345824e+00
-2.0967946222102178e+01
--5.2140800215662161e+01
-1.1415144652651797e+01
-2.1164123166314930e+01
--5.6109423497829781e+01
-7.2692280360271191e+00
-2.1083973384651095e+01
--5.1719925801366543e+01
-1.2072070434222454e+01
-2.2256298927578101e+01
--5.7506342991958419e+01
--5.0454481485648506e+00
-9.0854369161895097e+00
--4.5001697233187322e+01
--5.3986792027647672e+00
-1.0923077593876510e+01
--4.7304267781877719e+01
-8.6180150884375948e+00
-1.0739795900184895e+01
--4.7308667436112501e+01
--4.8552848760112681e+00
--6.7264463268815229e+00
--2.3340349162640663e+01
--3.9525336129725526e+00
-9.6234470013577749e+00
--4.5903619882216908e+01
--1.8446812421425391e+00
-1.1927244844264591e+01
--4.8879413648791179e+01
--7.7139199915079697e+00
-7.1949206710927482e+00
--4.2620392605231181e+01
--3.9748595359095082e+00
-9.4282067784044052e+00
--4.5505692537150296e+01
-4.0285005854918099e+00
--1.2990212714499252e+00
--2.0723042217313406e+01
--2.5176661542013226e+00
-1.1090080979198971e+01
--4.7671676644900522e+01
--4.0615740110380978e+00
--7.4846377739395509e+00
--2.2345538567308765e+01
--7.4235253797151639e+00
-6.2331229014909990e+00
--4.1303277342992558e+01
--4.4195658329868763e+00
-5.5381383925926757e+00
--4.0208570182604014e+01
--6.7136130481661711e+00
-8.7773366181842434e+00
--4.4592734376249119e+01
-3.6336371825825577e+00
-1.5169633211058033e+00
--2.1047258283407619e+01
--1.5284779554155886e+01
-6.5656685692740586e+00
--4.1756292151515105e+01
-1.3810722701388517e+01
-7.8292077507278601e-01
--3.0452078652643642e+01
-9.8544562620268170e+00
-2.0576929469001481e+01
--5.5464969803017993e+01
-5.6033176197583678e+00
--2.3655797743545823e-01
--2.2122154788469771e+01
-1.2201291500439226e+01
-6.1880256598028236e+00
--2.9917429743226879e+01
-1.2104828839567510e+01
-5.9302520670940737e+00
--3.0276790250808439e+01
--2.5646751025910275e+00
--7.8106571190601581e+00
--2.1775931898458733e+01
-4.4105056752238614e+00
--2.6622734180073477e+00
--2.0438713727839811e+01
-5.9277266726126703e+00
-1.0820731994094293e+00
--2.3820446214838409e+01
-2.7430847488532206e-01
--5.8692716697133474e+00
--2.1519362780382931e+01
-8.9463568033063705e+00
-7.3183109284917673e+00
--4.2497514627543374e+01
-5.5516142774810726e+00
--1.3315419628087133e+00
--2.1741027365365472e+01
-2.3071684595453461e+00
-3.9513087877846425e+00
--2.3588531324379389e+01
-6.4078140804885200e+00
--1.6408416029035644e-03
--2.3378576267605670e+01
-2.4622687241213002e+00
-9.6099059872351198e+00
--4.5611001980705588e+01
-2.8017572213271049e+00
-9.2822214799447322e-01
--2.0400669709614913e+01
--3.6451115300336960e+00
--7.6129895843704425e+00
--2.2108460232144793e+01
--1.1059615021393854e+00
-3.0830234804149010e+00
--2.3446712629004050e+01
--1.9868337427777771e+00
-8.8183396657930899e+00
--4.4565782998991985e+01
-3.4523411563872157e+00
-2.8934170031776514e+00
--2.2123902956691307e+01
-1.3858772466335422e+01
-5.3810621401059555e-01
--3.0172112275131727e+01
-1.3697780859858158e+01
-2.9768360442899872e-01
--3.2143626912562141e+01
-3.5178336665926229e+00
-2.3236301391041492e+00
--2.1409122017733726e+01
--2.2070333074550899e+00
-6.7596165292879942e+00
--4.2016672315615928e+01
-1.4797937675209569e+01
--1.9675140056292781e+00
--2.9157243534786236e+01
-1.3113275074746564e+00
--5.2600245396331902e+00
--2.2069449138466339e+01
-3.8742897910200833e+00
--4.4336588804366386e+00
--2.1955970426487426e+01
--3.2551811240822437e-01
--3.9260589770723229e+00
--2.1490699324044371e+01
--3.6117654798036249e+00
--1.6393952400154610e-01
--2.3193522605212948e+01
-7.9610384168061552e+00
-1.5286197642627915e+01
--5.3508523884631678e+01
-9.1713468107499043e+00
-1.1701077023290077e+01
--4.8740449560573936e+01
-7.3972563642608034e+00
-1.3037656053781188e+01
--5.0507310314986611e+01
--2.7987396819028545e+00
--8.1062336132631181e+00
--2.1365222702384440e+01
-1.3036016380442250e+01
-2.4415541354119330e+01
--5.3682972922411061e+01
-8.7946838524088182e+00
-2.1058984932529118e+01
--5.2625891939440450e+01
-8.4808699231538061e+00
-2.0945583207271458e+01
--5.2486760209993207e+01
-1.1235502997896052e+01
-2.3400994410517466e+01
--5.2214995331389900e+01
-1.8591111255528538e+00
-9.3469088491711485e+00
--4.5410681534638954e+01
--1.2516719540531270e+01
-3.5876110550754485e+00
--3.7584699967859315e+01
--4.3479632707500073e+00
-1.3893676537207751e+01
--4.9194779236641921e+01
-8.9235786152740815e+00
-1.4364687556932317e+01
--5.1998105983585070e+01
-1.2238960560227936e+01
-6.0921315391666164e+00
--3.0163257099823237e+01
--8.8289188139170205e-01
--3.4231094290514641e-01
--2.1483908797987159e+01
-1.2790979594556477e+01
--4.1976616476628115e+00
--2.6628569636884357e+01
--1.7584467962701780e+00
-6.8541718279136576e+00
--4.1958596845139290e+01
--2.6995951748020302e+00
--7.5409486093806546e+00
--2.2140733582983298e+01
-3.6258529758817217e+00
-3.4583644262821460e+00
--2.2775382209146379e+01
-2.9706953426524607e+00
--6.0707128494943765e+00
--2.1719433523024211e+01
-1.4120267177774832e+00
--3.2354668254088961e+00
--2.0075460424169076e+01
-3.0955928683259200e+00
-1.9492018627884207e+01
--4.9288605043090264e+01
--8.5394040451652309e+00
-2.3241124244147446e+00
--3.5796092805711496e+01
--8.8080853352242681e+00
-6.5994019857928476e+00
--4.1663784002071033e+01
--1.3702052302020391e+01
-4.6732246344262673e+00
--3.9171459086651438e+01
--1.3491504121178743e+01
-4.7766260107701495e+00
--3.9324911429455803e+01
--2.0530144456127864e+01
-1.0532164437485749e+00
--3.4073318673457145e+01
-1.4209803549960432e+01
-2.4638457765174675e+01
--5.3490180613902844e+01
--3.2920790942418314e+00
-8.6176106391458802e+00
--4.4488846170602791e+01
--6.0216013399158879e+00
-8.4963909998336415e+00
--4.4323947396306075e+01
-6.1727197516438768e+00
--8.6760105269146803e-01
--2.2367364529031303e+01
-1.2934916338855370e+01
--5.3226097371250978e+00
--2.4805143727325500e+01
-1.3952249032018342e+01
--5.2161702004276114e+00
--2.4777354848624142e+01
--2.5085677423717261e+00
--7.8718629110573577e+00
--2.1695574494955380e+01
-1.2298723053766887e+01
--4.9335865533556724e+00
--2.5722631930971378e+01
-6.5295098650630328e+00
--1.1673056094978411e+00
--2.1958587295416237e+01
-4.9347083190548000e+00
-1.5416586572083377e+00
--2.2064318068957178e+01
-1.2050550928147125e+01
--6.0462833705373624e+00
--2.3874594116862053e+01
-5.1446978547101079e+00
--1.3037831323083879e+00
--2.1548779372457822e+01
--7.5789912809735824e+00
-2.7139209721306305e+00
--3.6267433414457500e+01
--1.0008793054280337e+01
-8.0891192846108932e+00
--4.3656575538089399e+01
--6.2514588416441148e+00
-5.9308933046690040e+00
--4.0778704454338673e+01
-1.1520612268986808e+01
--4.9271715570727501e+00
--2.5774343280132229e+01
--5.2998712634417213e+00
-1.6470969570203398e+01
--4.3915285231884873e+01
-1.6520523637365812e+01
-2.4433477938590883e+01
--5.7109122366981239e+01
-1.2929142247448816e+01
-2.3210957118073622e+01
--5.4991894008525875e+01
-7.5239642829758955e+00
-2.0261395205235882e+01
--5.3171186029221396e+01
-7.5403507211776271e+00
-2.0509873591588129e+01
--5.2077133919306888e+01
-5.7743631991601445e+00
-1.9719823920270766e+01
--5.1542764038783496e+01
-3.5287831420078930e-01
-6.6581188394121527e-01
--2.0590463115858462e+01
-7.1638216413670763e+00
-8.5300913192428194e+00
--4.4043818110781068e+01
-1.2716420370358250e+01
-2.3097859511270475e+01
--5.4806767626633928e+01
-6.0728897559341251e+00
-2.0590266788511428e+01
--5.0965578717390940e+01
-1.4540976497311577e+01
-2.4120082873719031e+01
--5.5497105458896669e+01
-1.1737875645966499e-01
-3.1770268160649011e+00
--2.2324858457097882e+01
--1.3156394254178117e+01
-3.6547955515512460e+00
--3.8096594815412949e+01
--5.1395363100010867e+00
-6.3079499866987776e+00
--4.1314409616821955e+01
-8.2169374439177414e+00
-9.6668267832897694e+00
--4.5720330383796508e+01
-3.5166519259777068e-01
-2.4432854927476710e+00
--2.1422431522096812e+01
--4.1552447026267600e+00
--7.5287283557769626e+00
--2.2270397851041729e+01
-1.3167209056614121e+01
-9.1817419896047632e+00
--4.1733829237311291e+01
-8.2912556249137417e+00
-9.8472184051517928e+00
--4.6053482093403105e+01
--4.7941819764435145e+00
-8.5090743902363464e+00
--4.4253902845525587e+01
-5.0236032655688918e+00
-1.3132057874838618e-01
--2.1842319889662729e+01
--5.0319328516455997e+00
--6.8214459373455920e+00
--2.3177093934353962e+01
--4.3297672591221490e+00
-8.6695830246569265e+00
--4.4470239781643841e+01
--1.5371978280087781e+01
-5.0892346578079319e+00
--3.9824015843448457e+01
-1.9808928720560455e+00
--8.2637217995672003e+00
--2.1189509732814717e+01
-2.0986303917071618e+00
-9.7932895166558591e+00
--4.5945191538867633e+01
-1.4577689219746160e+01
--1.3920066948426202e+00
--2.9438593140202880e+01
-1.2540928214714382e+01
-4.0162733251895206e+00
--3.2475603753600602e+01
--1.5619755460137756e+00
--8.4549824375315996e+00
--2.0886792461085392e+01
-1.9421317758033059e+01
-2.3050430433756695e+01
--6.2995251789738212e+01
-5.4822253308488609e+00
--9.0690853759574341e-01
--2.1797309607847655e+01
-1.5236055266808990e+00
--2.1607749937025678e+00
--2.0290579228325285e+01
-4.0422563410391321e+00
--4.2455363834430555e+00
--2.2079380224719966e+01
-6.4136018058101385e-01
-3.4166681954306575e+00
--2.3078634764160697e+01
-1.0035894294266170e+01
-1.0638526386343758e+01
--4.7234661249672293e+01
-5.9507610621149114e+00
-1.9850436905624044e+01
--5.1113790060615969e+01
--1.3811874017053597e+01
--6.0248133344869439e+00
--2.4257559926478013e+01
-7.0157407646207650e+00
--3.3813598328527843e+00
--2.4340474837648127e+01
-1.1781188002393568e+01
-2.3526174194616580e+01
--5.3250975965633188e+01
--4.2835664766399617e+00
-9.7766485693560146e+00
--4.6223958288981059e+01
-1.8383584643861855e+01
-2.2396998095869264e+01
--6.1890568493040007e+01
-9.4232713624375055e+00
--5.5299243523906991e+00
--2.4942230581564495e+01
-1.4442905939186339e+01
-2.4491889336176886e+01
--5.4347155640817320e+01
-3.4722772350721526e-01
-2.0157616451596258e+01
--4.4664095374628943e+01
-1.3453583759068135e+01
-2.4051812031752416e+01
--5.3927230689860309e+01
-1.8036808831156495e+01
-2.5019957379947762e+01
--5.7525652656323821e+01
-1.4200899874321252e+01
-2.4393930040033744e+01
--5.4472891229401284e+01
-1.8025917077509803e+01
-2.4896264453388703e+01
--5.7751276185180458e+01
-1.3011968661581879e+01
-2.3505472817399056e+01
--5.4330856710676194e+01
-5.3441666125139502e+00
-2.1941605985682031e+01
--4.7737319341664573e+01
-6.6921366226954504e+00
-2.0999799832606900e+01
--5.1157281059294611e+01
-1.9519133649107449e+01
-2.2727686698558454e+01
--6.3076191774191948e+01
-8.9244492601262753e+00
-2.0820057783615255e+01
--5.4108590684106311e+01
-1.5455019673184358e+01
-2.1826591855470213e+01
--5.9603658907278160e+01
-1.7305499684867161e+01
-2.2135735794300839e+01
--6.1662790002427535e+01
-1.2914684417271419e+01
-1.7605870775748222e+01
--5.6731190695387909e+01
--3.5299319627927322e-01
-1.4121933150023001e+00
--2.1188425872126235e+01
--1.5080694183185077e+00
--8.4163045677858968e+00
--2.1110573241495327e+01
--1.6352054622755101e+00
--8.3529161583884477e+00
--2.0981150827526385e+01
-3.5135058780425839e+00
--1.0639121240146832e+00
--2.0818948579295640e+01
-7.7601044491557465e+00
-1.1550593824165865e+01
--4.8289814629881008e+01
--2.0191994737530294e+01
-6.5916153904333974e-01
--3.3593654464276199e+01
--1.4943460501663088e+01
-7.6713437509989746e-01
--3.3814812933339020e+01
-2.8315711957973319e-02
--1.3686225286203497e+00
--2.0591256932058307e+01
-2.4794411804684930e+00
-9.0961497204600636e+00
--4.4974113392692303e+01
-5.0936231110740469e+00
--2.2021551708973455e+00
--2.0659123273297983e+01
--1.2958492641413570e+00
--2.0809060810174111e+00
--2.0825806151776110e+01
--9.9812423450984822e-01
--5.3337173949363867e+00
--2.3150362010794098e+01
-6.6779325639860705e+00
-4.5291017222671431e-01
--2.3713326089783639e+01
-2.6428231410383050e+00
--5.5868262385350604e+00
--2.2659850882752583e+01
-2.8359200348478479e+00
--5.8557727609187920e+00
--2.2546884118004030e+01
-9.8970710128996746e+00
--4.7314947509136331e+00
--2.6016275952258972e+01
-8.9755659506539089e+00
--6.1779465929614652e+00
--2.4048047684169159e+01
-1.1139115527991720e+01
--5.9283492081180009e+00
--2.4236237572815195e+01
-1.5320332163914872e+00
-8.8913626424761887e+00
--4.4691338705677715e+01
-7.8725209214405405e+00
-2.1113218591473082e+01
--5.2144011490980162e+01
-1.2102342675244763e+01
-2.2711041066065945e+01
--5.4409843615410580e+01
-3.6055162333293369e+00
--1.6448484026951051e+00
--2.0485584324298312e+01
-1.3885537602490460e+01
-1.3829653857698482e+01
--5.1625974609741064e+01
-1.5588614986576754e+00
-3.8107668358167670e+00
--2.3608604914001830e+01
--1.3559579402061605e+01
--8.2348007500326634e+00
--2.1230020049700467e+01
--1.1820965346963600e+01
--8.6910485235932011e+00
--2.0612080590596264e+01
--5.0460486830048978e+00
-1.0458569163809306e+01
--4.6927443735272483e+01
--6.4413527706713296e+00
-7.7807018010377282e+00
--4.3368120932350621e+01
-9.9517426044518871e+00
--4.5021406184078900e+00
--2.6267175431356971e+01
--1.4535084121328751e+01
-1.0421949668409769e+00
--3.4173947848132983e+01
--1.7607243025741848e+00
--4.1086412194218278e+00
--2.2885542394326624e+01
--3.0503369734412074e+00
--8.0185284425936914e+00
--2.1591983206387987e+01
--1.6111858344804135e+00
--1.5815268112098333e+00
--2.1432882167370270e+01
-6.1836402343471064e-01
-3.8127359013572265e-01
--2.0444320958720212e+01
--9.0066484422795268e-01
--4.7136357480620861e+00
--2.2650954855579847e+01
-1.3645425450500728e+01
--5.6185752165189085e+00
--2.4369653837425670e+01
-1.3078320121115986e+01
-1.3122262631459556e+00
--3.3899513449682971e+01
-6.7421209356441780e+00
-1.0171734849280783e+01
--4.6381339784563494e+01
-1.0775323215708383e+00
--1.5122059837686328e+00
--2.0450706637018811e+01
-6.4458417230303064e+00
--4.5851258898727290e+00
--2.3340930213596330e+01
--3.7288901184638825e+00
-9.0746056310330641e+00
--4.5024829137968744e+01
--1.0036094624850934e+01
-1.1794521026488106e+01
--4.5432729543008506e+01
-1.3221239035140682e+00
--2.6981834386721544e+00
--1.9994429921483846e+01
-2.1238879003768529e+00
-8.0617358994844572e+00
--4.3586855689837527e+01
-1.5758483776919277e+01
-2.2002947969135334e+01
--6.0849473498371715e+01
-1.4520906816265406e+01
-2.3007101769174930e+01
--5.6843003833515645e+01
-1.1954615304478272e+01
--2.8447962964251245e+00
--2.8635175560988554e+01
-1.4999304393696244e+01
-2.4015781880294064e+01
--5.6071667375476792e+01
-5.8249062124689823e+00
-1.9531410325498921e+01
--5.2324629019104719e+01
-1.5758483776919277e+01
-2.2002947969135334e+01
--6.0849473498371715e+01
-1.6673445953292411e+01
-1.6882450661924494e+01
--5.5960219208499858e+01
-8.4126221727475965e+00
-9.6724478656434947e+00
--4.5768072543120105e+01
-4.3681653718915516e+00
-1.8442099744483581e+01
--5.2360011380949004e+01
-1.7257212090614509e+01
-2.3365377115514036e+01
--5.9192514613093046e+01
-7.0192586960058252e+00
-1.2570644874782953e+01
--4.9736222073877045e+01
-1.0990307596795562e+01
--2.3385436720945325e+00
--2.9385267097908848e+01
-9.1323305573108211e+00
-1.3958835654776992e+01
--5.1687260819574888e+01
-4.3766648517403750e+00
--2.7621264830779899e+00
--2.0544703877393392e+01
--4.9766903805266001e+00
-4.7692387617526739e+00
--3.9053712121537139e+01
-6.2388008637221697e+00
--9.8472510494892629e-01
--2.2208832760637719e+01
-4.3235914885775744e+00
--2.4430042610408380e+00
--2.0331338324548472e+01
--2.2648612643567647e+00
-6.5476206620239283e+00
--4.1481254071323370e+01
-1.3717023543741789e+01
-4.6423174498922154e-01
--3.1536963389968477e+01
--1.1156064710167060e+01
-1.0778368420347997e+00
--3.4187255929727357e+01
-4.4341759659976354e+00
-2.5884506130566036e+00
--2.2422945707577167e+01
-1.4335485257346592e+00
-3.0815128400585362e-01
--2.0210645593767683e+01
--1.5694974228784460e+01
--6.8668539766252259e+00
--2.3107947964545886e+01
--5.9847548233585766e+00
-6.1853732317518260e+00
--4.0920133094751087e+01
-1.0104004830058503e+01
-8.6887959873479677e+00
--4.4287049475329212e+01
-1.0416875634147695e+01
-2.1583827331896924e+01
--5.4202784502002288e+01
-9.8616155810930728e+00
-8.3031126545561342e+00
--4.3664681622763098e+01
-8.9020006170488077e+00
-2.1274144773379149e+01
--5.3528949608907979e+01
-7.1896025922666889e+00
-2.0372346101534184e+01
--5.1894096264405846e+01
-1.0183536234498765e+01
-2.1511777867123666e+01
--5.4357461062842560e+01
-5.8875031123530643e+00
--1.3866914025148056e+00
--2.1598521485689314e+01
-2.6248685825376783e+00
--2.5178523870203153e+00
--2.0214610207751392e+01
--5.6174247318127852e+00
--6.8730921630130846e+00
--2.3168825867852018e+01
--5.0136836708719477e+00
-7.5142686914169330e+00
--4.2919662449487909e+01
-5.3736365338632819e+00
--1.2854582247683199e+00
--2.1737592832674622e+01
--5.0069977837155015e+00
-8.3428526595969590e+00
--4.3992194183162923e+01
--3.5640095877191391e+00
-9.0710322061928430e+00
--4.4777864948699744e+01
-1.1662885394300107e+01
--4.3101930846054781e+00
--2.6727959374017459e+01
-1.4149603156460190e+01
-1.3719951955292199e+01
--5.1060017264739294e+01
--1.0768497561174891e+01
-1.0774844860674250e+01
--4.3679837706515563e+01
-9.4694207783594653e+00
-2.1116951565325241e+01
--5.3488850295567204e+01
-8.5518283783477838e+00
-2.0778884034563173e+01
--5.2971158477796067e+01
-5.7611391982739830e+00
-1.9709332772105867e+01
--5.2007059989899517e+01
-1.7305499684867161e+01
-2.2135735794300839e+01
--6.1662790002427535e+01
--4.7434366421439291e+00
-1.6340670709606059e+01
--4.4879306823729820e+01
--1.6467625173753213e+01
-8.5476790365781028e+00
--4.3037000316229438e+01
--9.3342606794869312e+00
-1.5765397756830966e+01
--4.0402099335160685e+01
-6.3203886770717128e+00
-2.1008785441496695e+01
--5.1006695120542098e+01
--2.3414499484544833e+00
-6.4855080555629208e-01
--2.3139349355764601e+01
-1.6290841768223199e+01
-2.1831846023035361e+01
--6.1399010813932364e+01
-9.2723212709430882e+00
-2.0348577825432201e+01
--5.5306156458227754e+01
-8.0629061559093191e+00
-1.0815404755132350e+01
--4.7365508761130741e+01
--4.7327978432742874e+00
--6.7117363337143425e+00
--2.3340328374028605e+01
-1.4494086118732179e+00
--8.4589324565432573e+00
--2.0943345347076775e+01
-5.8926723662801894e+00
--3.3318469926671748e+00
--2.2865085772056311e+01
--2.5775930684359629e+00
--8.0577385251527236e+00
--2.1486037997050925e+01
--1.8122447870869043e+00
--1.5839005238297035e+00
--2.1444298448710562e+01
-6.5424161571074668e-01
-1.8304103507871268e+00
--2.0841279227195422e+01
--1.6475018798663890e+00
--2.5605209383824501e-01
--2.1966019129604856e+01
-4.3555477449545243e+00
--9.8429200749803003e-01
--2.1167197245757528e+01
-3.9977182399179811e-01
-3.7373852280165485e+00
--2.3072822319309804e+01
-5.7138758242896017e+00
--2.2414942440423413e+00
--2.1407842612473161e+01
-7.3973830331600610e+00
-1.4606040143664723e+01
--5.2550915685264997e+01
--2.8059016856856740e+00
--7.5789656525969953e+00
--2.2026850538235902e+01
--1.6479494357877518e+00
-1.1457073103520679e+01
--4.8265951316428691e+01
--6.9842064965913924e+00
-1.5571876285018693e+00
--3.4363148782311718e+01
-6.5119372362548447e+00
-9.9808969043281692e+00
--4.6220528517191681e+01
--5.3448527914918342e+00
--6.8362616767246687e+00
--2.3248205351557186e+01
-8.9236016423436961e+00
-2.0373462240544669e+01
--5.4835025372651167e+01
-8.9874254097462725e+00
-1.0483553688668973e+01
--4.6807163488478452e+01
--3.9931587206690304e+00
-1.6153220924079430e+00
--2.5557078794046429e+01
--9.1448097318851826e-02
-2.7285698495380570e+00
--2.1982568855817838e+01
-8.2236858801507839e+00
-1.4300549850370581e+01
--5.2062174259630424e+01
-6.1377138973550887e+00
--2.4564818136808939e+00
--2.2390505626952976e+01
-6.6510591681641342e+00
--7.4419267357806405e+00
--2.2364568708097693e+01
--1.6439869555906654e+00
-1.1184100651414161e+01
--4.7863297923134496e+01
-1.3435824114824896e+01
--5.2734737006403360e+00
--2.4892593259297382e+01
--1.4718544533797751e-01
--9.3425395735318673e-01
--2.0987335985864373e+01
--2.6987358487044251e+00
--1.1626117196175951e+00
--2.1918724663435647e+01
-1.4252544437280873e+01
--2.9854581670583619e-01
--2.9443191904462335e+01
-6.2262307134654229e+00
-1.0234131378895239e+00
--2.3774256059073110e+01
-1.3427976218557992e+01
-1.5993531964859646e+00
--3.1078987831354368e+01
--3.0057827064175551e+00
-6.3832882667762592e-01
--2.4193350183079904e+01
--1.1643482123993046e+01
-7.6954511987813055e+00
--4.3220509368080812e+01
-5.7442322869830198e+00
--1.2738180120668241e+00
--2.1767224821836983e+01
-3.5293546233708830e+00
--1.3817846630086810e+00
--2.0671322093367667e+01
-6.9371917150391038e+00
--4.5601331293899205e-01
--2.2929352293667257e+01
-1.1354603793439995e+01
--4.3212645818158899e+00
--2.6609596060175818e+01
--6.2893841201402196e+00
-1.4186341045134981e+01
--4.5753771867160488e+01
-2.9397880014464599e+00
--8.2925603181740009e+00
--2.1239030327796872e+01
--1.4727866606322731e+01
--5.1627815224232165e+00
--2.5583220729056027e+01
-1.3449678757783925e+01
-2.3438618455774851e+01
--5.5369531566170089e+01
-1.2526442568698460e+01
-5.5946969559144115e+00
--2.9280834327371302e+01
-6.3310870629710827e+00
-9.5271830217271916e+00
--4.5662967122563884e+01
-3.9854437708158250e+00
--2.2577420061419948e+00
--2.0555287101382063e+01
-1.2534742087059172e+01
--5.9449130547649371e+00
--2.3877101861263231e+01
-5.1275677436288039e+00
--2.3927933115399620e+00
--2.0377926733830513e+01
-6.3735059110583325e+00
--1.1054888581103782e-01
--2.3288744035029556e+01
--1.8441329401591580e+00
-1.1046510476599035e+01
--4.7772357491501637e+01
-3.5362053564085492e+00
-1.6146711241707912e+01
--5.4622615661027822e+01
--3.9930068743623162e+00
-9.0525542909264907e+00
--4.5246135638163068e+01
-6.6880056022602528e+00
-2.0431024304811501e+01
--5.1132757097004458e+01
-1.2646295494792472e+01
-2.2971547168613316e+01
--5.4841574898578315e+01
-1.2577021996493086e+01
-2.2000527048886958e+01
--5.7809482456523405e+01
-1.5861410511707291e+01
-2.1931373814642004e+01
--6.0637783051714251e+01
-1.7996592541165857e+01
-2.2375317015835918e+01
--6.1258514202515478e+01
-9.8048029659929608e+00
-2.1320467612498380e+01
--5.3778598104480004e+01
-6.3958260287343602e+00
-2.0309857355878616e+01
--5.0859054142971850e+01
-5.4807825334540530e+00
-1.9535649151489309e+01
--5.1661446312212512e+01
-1.5861410511707291e+01
-2.1931373814642004e+01
--6.0637783051714251e+01
-6.5235441620003334e+00
-2.0701065002215451e+01
--5.1245001409187431e+01
-1.5112076817339839e+01
-2.4379493740409014e+01
--5.5333583391806556e+01
-1.6319257346427317e+01
-2.2262561089234087e+01
--5.9695800608088831e+01
-7.3596265410352881e+00
-2.0680767049983899e+01
--5.1555324088623593e+01
-4.7923003285245853e+00
-2.0006970030200293e+01
--5.1588575377624785e+01
-1.6274799691404613e+01
-2.2057249421747727e+01
--6.0367688049732678e+01
-2.0155432857574663e+01
-2.3085622688801561e+01
--6.3793123224057453e+01
-7.1295526712144284e+00
-2.0525345486342019e+01
--5.1300383539559881e+01
-9.7032287016310512e+00
-2.1117237537478044e+01
--5.2099814415876828e+01
-1.1213503092578568e+01
-2.2276210082855840e+01
--5.5115812804870146e+01
-1.9773527236505132e+01
-2.2947985734056580e+01
--6.3291630733605537e+01
-2.0308113299033543e+01
-2.3148377535106537e+01
--6.5072486289692236e+01
-1.1297552589531039e+01
-2.2464084707575857e+01
--5.3707779877381832e+01
-1.1213503092578568e+01
-2.2276210082855840e+01
--5.5115812804870146e+01
-9.4971608520161244e+00
-2.1992897213206348e+01
--5.3025649221156471e+01
-1.0088009492951507e+01
-2.1445789413261696e+01
--5.3971588150558098e+01
-7.1354207990872176e+00
-2.1228407120603457e+01
--5.1220844464961480e+01
-9.5198398792621610e+00
-2.1058556139518497e+01
--5.1877764086478592e+01
-5.8464385282368729e+00
-2.0353759327061670e+01
--5.0733114323520603e+01
-4.7923003285245853e+00
-2.0006970030200293e+01
--5.1588575377624785e+01
--3.5159754473670501e+00
--7.9851210880236687e+00
--2.1590198991971420e+01
-6.8247412752331709e+00
-8.4876647197064106e+00
--4.4197586296820134e+01
-1.0477667063126084e+01
-1.0176968087231243e+01
--4.6542358004188735e+01
-6.8247412752331709e+00
-8.4876647197064106e+00
--4.4197586296820134e+01
--4.6531261204320788e+00
--7.5378404878703327e+00
--2.2266331179035358e+01
-8.0629061559093191e+00
-1.0815404755132350e+01
--4.7365508761130741e+01
-1.1177349822193170e+01
--4.6281756483681447e+00
--2.6059579636983361e+01
--1.6264229197452909e+00
--7.9640858210697099e+00
--2.1562485809808923e+01
-6.8051057512606690e+00
-1.0078457752317870e+01
--4.6646779146761006e+01
--3.8784862034192518e+00
--8.4593423711378737e+00
--2.0911040300949338e+01
-1.0126403502585179e+01
--5.4947045413275450e+00
--2.4964672767299817e+01
--5.2399378899973934e+00
--7.1125623801525188e+00
--2.2960291511763817e+01
-6.8855948368063782e+00
--7.4664859118102189e+00
--2.2219527706738585e+01
-8.1256118144377290e+00
-1.0143054959769550e+01
--4.6371756267051992e+01
--1.8013856199417571e+00
-6.9824643524200525e+00
--4.2162648212751009e+01
--2.6615778772516725e+00
-7.1545720640097601e+00
--4.2353242053651627e+01
--2.0658882515005650e+00
-7.1343684183322900e+00
--4.2211838575928823e+01
-1.1262159863746309e+01
--4.6439503400145794e+00
--2.6039469734890453e+01
-1.8510431694729539e+00
-8.2090295484876261e+00
--4.3778410217843373e+01
-7.8436968608109057e+00
-9.6883929568941891e+00
--4.5867189779590028e+01
--4.3876488697133826e+00
--8.3492477355401302e+00
--2.1166741062976403e+01
-4.4215230183250940e+00
-2.2790813748251995e+00
--2.2020550344234401e+01
--1.3046674848248543e-01
-3.2744110081313287e+00
--2.2636592546524245e+01
-1.3255232665218985e+01
-9.0902548364183378e-01
--3.3691204160725128e+01
--3.2407583408180747e+00
--7.8861932650118254e+00
--2.1693423844498717e+01
-9.0406767634802812e+00
--6.6975846633880218e+00
--2.3357713903167134e+01
-4.8216805797245295e+00
--1.4691710464138645e+00
--2.1260155743262402e+01
-9.9648745103279666e+00
--4.7428451840963781e+00
--2.6018184664838007e+01
--1.1113142330506343e-01
-3.3280797414257131e+00
--2.2668850280838463e+01
-1.6420634296409990e+01
-2.2072775938429835e+01
--6.0817332718088657e+01
-1.0678560040317777e+00
--2.7569704135524784e+00
--1.9937110512496666e+01
-2.1102260966606168e+00
-9.2239227807663315e+00
--4.5055131612652666e+01
-8.2013611002181825e+00
-1.0708575682940941e+01
--4.7269308985976785e+01
-1.0187494981071614e+01
-8.4117089667379474e+00
--4.3922306001904772e+01
--4.8817334506566723e-01
--1.0423758641356928e+00
--2.0943882970638217e+01
--1.9207745443695838e+01
--2.7689362113576657e+00
--2.9046067372906546e+01
-3.2238342016962420e+00
--5.8393708082924212e+00
--2.1615579274618089e+01
--7.1905056104307192e+00
-1.6758330634627434e+01
--4.1289538781939562e+01
-1.0205195926652927e+01
-8.8396994278520431e+00
--4.4520255384388626e+01
--7.1974559526125601e+00
--1.9002171379790884e+00
--3.0017342418497044e+01
-1.0293194358776251e+01
--5.0399366564659038e+00
--2.5481490276840777e+01
--1.4971228851042209e+01
-5.5601396353412156e+00
--4.0472299854705312e+01
-4.6528041068416970e+00
-8.6607068872621917e-01
--2.1520554734030320e+01
--1.4788447130077188e+01
-6.2337064185900930e+00
--4.1365216635779852e+01
--5.2162339457468336e+00
-8.0138232455199230e+00
--4.3602710892146199e+01
--1.3067696862776579e+01
--8.5623565184585964e+00
--2.0747496773995948e+01
--7.4186102615122342e+00
-7.4392403040806627e+00
--4.2926022275511926e+01
-3.6166471535881972e+00
--2.9872608795376134e+00
--2.0257095168487794e+01
-4.5469462134016840e+00
--2.7620180310812512e+00
--2.0704443416623523e+01
--1.3996720450489052e+01
--7.4932425932571194e+00
--2.2306317924870743e+01
--1.5196858461965876e+01
--7.0468890660686769e+00
--2.2855149620670758e+01
--6.7705298567742505e+00
-8.4938699760322738e+00
--4.4258245976642634e+01
-7.4112017073376721e+00
-1.2685330934493221e+01
--4.9913370317026157e+01
--1.3719173452248244e+01
--7.2693604380733294e+00
--2.2591625676567915e+01
--1.1793634462873399e+01
--7.7765809864248920e+00
--2.1900449083810802e+01
-2.6291843049496744e+00
--4.0713798070722779e-01
--2.0336773858725842e+01
--3.0238100279877860e+00
-1.0900460308140703e+01
--4.7363186320331039e+01
-9.1717428110194010e-01
--8.4061785860875968e+00
--2.1085811414932678e+01
--5.2191227203305335e+00
--6.7615384284710602e+00
--2.3284585458354520e+01
-1.6741198130045354e+00
-9.2368023989793802e+00
--4.5120947853506948e+01
--6.7143449387651113e-02
--2.2063781523645507e+00
--2.0603752961008983e+01
--1.3446123647028003e+01
--7.5262276192615190e+00
--2.2268438438181530e+01
--5.1841019241029418e+00
--6.8445217870814545e+00
--2.3170714741687895e+01
--2.1958334344832964e+00
--8.5148703983655061e+00
--2.0772121920108166e+01
--1.3221723112603028e+01
--8.3984022781406740e+00
--2.0994040286544934e+01
--1.4788447130077188e+01
-6.2337064185900930e+00
--4.1365216635779852e+01
--5.1521651745754644e+00
--7.1829776653800437e+00
--2.2728540882551471e+01
--1.3145431525402184e+01
--8.4300677493963345e+00
--2.0897760748823877e+01
--2.6601889143943720e+00
-1.1414184274202910e+01
--4.8181184107650481e+01
--7.1400895772276121e+00
-6.2927168871320172e+00
--4.1213040211626165e+01
-6.9327995240054747e+00
-2.0585824907856125e+00
--2.6252815164289316e+01
--1.3616777844156474e+01
--8.2412340471340588e+00
--2.1200443296594592e+01
--1.4948846508846703e+01
-1.1781547016572615e+00
--3.4513575545297329e+01
-7.3945231962599776e+00
-1.3916671613021012e+00
--2.5432026147174476e+01
--9.9598539794136958e+00
--4.0801812100178774e+00
--2.7083490469551720e+01
--9.2428743656759131e+00
--4.5848874324064743e+00
--2.6423976405048759e+01
-3.0272994026183619e+00
--5.9026095737224340e+00
--2.2549425771465579e+01
-6.8094006440744632e+00
-5.1002556076828331e-01
--2.4175385569533461e+01
--2.3404137736718331e+00
--7.8398558544989791e+00
--2.1764000510252586e+01
--3.5680379994087308e+00
--7.9944315248050959e+00
--2.1579189312943381e+01
--4.9980628804808962e+00
-6.7443533825089013e+00
--4.1817504815630393e+01
-1.3714641622528351e+01
--2.0874790238000915e-01
--3.2154420744142655e+01
--8.0530601335049532e+00
-7.1624410272526253e+00
--4.2436801946593647e+01
-1.6319257346427317e+01
-2.2262561089234087e+01
--5.9695800608088831e+01
-1.2546459881904267e+01
-2.1650488218916720e+01
--5.7732502587260228e+01
--5.3192885421258511e+00
--8.5332247115395834e+00
--2.0858067126029514e+01
--2.4004548048865377e+00
-7.0364834274996690e+00
--4.2182386943639500e+01
--1.5184633114096055e+01
-8.0339195274163688e-01
--3.3945325899188198e+01
--3.8013146524080739e+00
--7.7326731111707243e+00
--2.1963836545663284e+01
--1.3457733278422779e+01
-8.4162866868909223e+00
--4.4122048977885221e+01
--1.6635992530604121e+01
-6.3502271635726304e+00
--4.1542007609146850e+01
-1.2556507218460970e+01
--3.6874983055709354e+00
--2.7396075527285010e+01
--3.6558814320722242e+00
--8.3852389330071393e+00
--2.1074557883126911e+01
--4.2673858356794954e+00
-9.4046917476827421e+00
--4.5539870136872231e+01
--1.3406256641496217e+01
--5.7107391231189530e-01
--3.2016783834787844e+01
--1.3174958925291271e+01
--8.5339826797509790e+00
--2.0733616678818400e+01
--1.2808118167887660e+01
--8.5106624860883731e+00
--2.0758562891063210e+01
-1.1339573798422542e+01
--5.6042175012415383e+00
--2.4488505332591579e+01
-1.2688356502772265e+01
--5.4092207861510291e+00
--2.4881262711333367e+01
--1.0644176075705619e+01
--7.5797980801856237e+00
--2.2303431923776699e+01
--1.8810292686746346e+00
--2.1791208340144635e-01
--2.2051702901964330e+01
--1.3058242412828720e+01
--7.3759620688956105e+00
--2.2399956208305280e+01
-3.4754420571241194e+00
-3.3728638908570767e+00
--2.2483613467526400e+01
-1.3762888723053775e+01
--5.6321277438361017e+00
--2.4503495269587486e+01
-4.1106777155927814e+00
--1.0122535185703625e+00
--2.1102344603985500e+01
-8.5901166359341588e+00
-1.3143211601173290e+01
--5.0553269885274261e+01
-1.0417766428272923e+01
--3.3530879380640499e+00
--2.7891163999264414e+01
-1.1539851196519191e+01
--4.9223690172793830e+00
--2.5629518613551451e+01
-3.7800043133072614e+00
-1.8143695591893909e+01
--5.2067191212885376e+01
--6.8107813284966658e+00
-7.5799942466081749e+00
--4.2950895249602738e+01
--4.3196111976034217e+00
--6.7814084170318409e+00
--2.3295477989914556e+01
-5.8963985962222409e+00
--9.8164807663158482e-01
--2.2231051734626558e+01
-4.0491026990668555e+00
--2.3794287992971994e+00
--2.0340571605151343e+01
-3.1177012734951384e+00
--2.4291514669802661e+00
--2.0352926555877474e+01
--3.5383888698620622e+00
-9.9866444026665544e+00
--4.6248080117551076e+01
--1.3511572390997884e+01
--6.9745952541863483e+00
--2.2970913510465465e+01
-3.0135169873574004e+00
--5.8444567294315055e+00
--2.1553875676362939e+01
--1.3439782339831090e+01
--8.0663234941960358e+00
--2.1348307703855394e+01
--2.1014596560445331e+00
--8.3343351701925457e+00
--2.1029758465939299e+01
-9.3643592081015896e+00
--5.3733263938727776e+00
--2.5116024366344512e+01
--9.1486180299204758e+00
--4.4525729158729952e+00
--2.6471569569567372e+01
--2.6779635181530366e+00
-7.5129642505425398e+00
--4.2826056589188276e+01
-1.5637182378486509e+01
-1.4943768836225509e+01
--5.2668911603628310e+01
-9.9013858556283409e+00
-1.2485760403517300e+01
--4.9640295960327727e+01
--1.8493016041568768e+00
--7.9999155860798812e+00
--2.1623712563126599e+01
-5.2066105192522381e+00
--6.2139081046192135e-01
--2.1563434619586140e+01
-8.4034710034421654e+00
--6.7121440991082588e+00
--2.3258369710968250e+01
-6.1377138973550887e+00
--2.4564818136808939e+00
--2.2390505626952976e+01
-1.0223537033667375e+01
--3.6011543037349893e+00
--2.7722366826752033e+01
-3.6465790275662391e+00
-3.1923521195493869e+00
--2.2330898135389571e+01
-1.3173666323867202e+01
--5.8804124975723839e+00
--2.3894762692697672e+01
-1.3370442448630847e+01
-8.6244973262468978e+00
--3.8992035480098359e+01
-1.3555161955919282e+01
-8.5625697147421516e+00
--3.9169207738388572e+01
--3.4733336060991569e+00
--8.3564327684696345e+00
--2.1259053216144032e+01
-1.3555161955919282e+01
-8.5625697147421516e+00
--3.9169207738388572e+01
--1.4477238262432364e+01
-5.8337875595167050e+00
--4.0616320916608927e+01
-1.3333881501589335e+01
-1.1462158143280860e+01
--3.5965692994303559e+01
-1.1536452718511951e+00
--8.2293136454985358e+00
--2.1320343070206562e+01
-1.3134251798776203e+01
-1.3469956767751464e+01
--5.0968672433862608e+01
--6.4496344855430054e+00
-6.7674841669212835e+00
--4.2035032448072272e+01
-1.4475041532913737e+01
--1.5376416411553395e+00
--3.0452056611083641e+01
--2.9844309206364588e+00
--8.1786170243087586e+00
--2.1336349785814047e+01
-5.3894751730679173e+00
--4.0267944365592960e+00
--2.2549117398560679e+01
--4.4615729069337178e+00
--6.4945617169381791e+00
--2.3655837062257177e+01
--7.0212630833529248e+00
--3.3124594989946323e+00
--2.8069716333488341e+01
--3.1267570747753077e+00
-9.2975648762058050e-01
--2.4588284604601302e+01
--3.9200810926492484e+00
--5.6931959676012180e+00
--2.3893156978077442e+01
-1.4058033388842789e+01
-4.6331210173033566e-01
--3.0040340029174377e+01
-6.3234926831920966e+00
--2.0297355145120549e-01
--2.3174933771096537e+01
--1.9032745304786307e+00
-1.6958340819933559e+00
--2.3411690239739702e+01
--4.0065004073216635e+00
--2.3355017772785742e+00
--2.5783515007371065e+01
-5.1262129292447201e+00
-3.4179480497953446e-01
--2.2017245652633104e+01
-1.2645263064645813e+00
--2.1898613687668447e-01
--2.0242733488619177e+01
--3.0786252809274304e+00
-8.7571149165250306e-01
--2.4570394577702359e+01
--1.2618942511161572e+01
--5.4276888524877140e+00
--2.5099710808148000e+01
-1.4100994584547910e+00
--1.3840370334408953e+00
--2.0539350286533438e+01
--1.8170103768429895e+00
--3.6256550753754073e+00
--2.2185526669200726e+01
--4.5243681241308691e+00
-6.3850259517460399e+00
--4.1297935067941090e+01
-8.4317397262911378e+00
-1.9951407078339958e+01
--5.4189766578904901e+01
--3.9035658667075119e+00
-1.1590076474312799e+01
--4.8559559489778891e+01
-1.1031831256624919e+01
-1.5098811320343563e+01
--5.3390327717854007e+01
-1.4974688826593811e+01
-1.3648002505225264e+01
--5.1315588911625575e+01
-2.9492056658696968e+00
--3.9304895702813396e+00
--2.0832348180094222e+01
-5.4775230116039508e-01
--5.8910525295232992e+00
--2.1421572939968566e+01
--4.6993485751326425e+00
--7.9723397572126826e+00
--2.1606056201348004e+01
--1.5473837136616234e+01
-7.5503976760156633e+00
--4.3095769924321431e+01
--1.4396580935728027e+00
--1.6080946037750699e+00
--2.1319785271569394e+01
-3.1727539863234284e+00
--2.1571544468406167e+00
--2.0503671279142033e+01
--4.1960373800195718e+00
-6.3736912997338013e+00
--4.1332519516113614e+01
-6.1333618693558387e+00
-1.5733370787666603e+00
--2.4447296689626743e+01
-9.9464023291139014e+00
-1.3509830353468194e+01
--5.0860988102852161e+01
-9.8953712425547025e+00
-1.3336028954494138e+01
--5.1630519700762051e+01
-6.4406745647057511e+00
-8.5447085782501446e+00
--4.4185430791124972e+01
--6.7222419760797445e+00
-2.0001333792346072e+00
--3.5326349286335642e+01
-1.6242445111663802e+01
-1.4447948097064771e+01
--5.2318711011457907e+01
-6.4690970061760771e+00
-1.9655052693847527e+01
--5.2543180982721758e+01
-9.5511967896712875e+00
--5.4296877015101286e+00
--2.4842738912273649e+01
-2.2389589808045907e+00
--8.5786273337844285e+00
--2.0731669516062738e+01
-1.5115222543182142e+01
-1.5715038508921563e+01
--5.4071768266699436e+01
-7.4694514433296035e+00
-1.6199348396514662e+01
--5.4597899989334429e+01
-7.0732600795257730e+00
-1.3155242420643440e+01
--5.0546406874577649e+01
-1.0570622188242229e+01
-9.3230818434054381e+00
--4.5150190523347327e+01
--6.9749234722466369e+00
-1.9713883508068859e+00
--3.5310983359402265e+01
-1.0943307722732253e+01
--3.5025952776003559e+00
--2.7527885296118065e+01
--6.9909827418792441e+00
-1.8862764383366299e+00
--3.5206547236619073e+01
-1.4717604917371608e+01
-1.1952809795061588e+01
--4.8606733205672079e+01
--2.7070487312976854e+00
-7.0237437720561342e+00
--4.2186854556800562e+01
-9.6176728942269563e+00
--5.9732420125935661e+00
--2.4273961874956342e+01
-1.2885386815399599e+01
-1.7260343649031764e+01
--5.6412061161337490e+01
--8.1512965914549940e-01
--1.8946480343542902e+00
--2.1042254251555015e+01
-1.0191716821890976e+01
--6.2243985546709464e+00
--2.4011463709397944e+01
-9.8340616640516139e+00
-8.1732384827625140e+00
--4.3900309851427487e+01
-9.3096619394397511e+00
-1.2659566756398398e+01
--4.9674207713059594e+01
--2.6246262515180314e+00
-6.4958952933569396e+00
--4.1449550873143195e+01
--1.5120040812989521e+01
-1.1083377643091563e+00
--3.4155964631855866e+01
-1.0104327630725352e+01
--4.8723578253191677e+00
--2.5793916865271058e+01
-1.3575872296462538e+01
-9.7526354821616703e+00
--3.7462867405973064e+01
-6.7453814427304168e+00
-1.4736110394965516e+01
--5.2602812000476661e+01
-1.7153282032769883e+00
--8.2620337043364334e+00
--2.1221237043585258e+01
--6.6592467806538247e+00
--4.0783316591526200e+00
--2.7025612187329035e+01
--1.4359694599515629e+00
-2.1448010082880278e+00
--2.2923545297513652e+01
-1.0237203984057290e+00
--5.0976548407196223e+00
--2.1858212084410674e+01
--4.8938874922208138e+00
-9.9383301665432313e+00
--4.6076814315159723e+01
--3.2721546601401177e+00
-8.5955582714321854e-01
--2.4589622182247524e+01
-1.0162477757333351e+01
--6.3319675097131132e+00
--2.3693521462704052e+01
--2.8137223983850799e+00
--4.1827520411635968e+00
--2.4363839312917666e+01
-1.3491418757419867e+01
-8.4510980583018203e+00
--4.0244956830176811e+01
-1.3558970325445820e+01
-7.4929171247343325e+00
--4.1473815356421710e+01
-4.6055023067344472e+00
--2.2093265247858698e+00
--2.0635129043170579e+01
--5.0124916883740278e+00
--7.8696697699431635e+00
--2.1767840613748458e+01
--2.8193968732678565e+00
--8.2381058123324635e+00
--2.1265578096881985e+01
-1.3598113122918249e+01
-8.1590214224751154e+00
--3.9696640360394007e+01
--2.8971438549228195e+00
--8.2057053609809145e+00
--2.1240093063077566e+01
-1.3833766464141496e+01
-7.6278494235457455e+00
--3.9289180962611177e+01
-1.3318713499677466e+01
-7.0594224833816099e+00
--4.1091609888107946e+01
-1.6170229731426151e+01
-1.5679947932448323e+01
--5.3738105113809986e+01
-1.4081487606600213e+01
--4.8377923161643963e+00
--2.5396378666457238e+01
-9.1502057755058388e+00
-1.2210228349883890e+01
--4.9222159739041025e+01
--4.4403384747263992e+00
--8.7022811695693427e+00
--2.0676492667038310e+01
--1.8693941067910984e+01
--3.3963324286935630e+00
--2.8221391265251061e+01
-2.5161681490083563e+00
-1.5829601910247510e+01
--5.3969966676142370e+01
--1.3069007557589293e+01
-4.6096668643771732e+00
--3.9005769239672482e+01
-9.4925453396290109e+00
-2.0531707918308982e+01
--5.5845920441805532e+01
-8.5803541344105980e+00
-6.5429225656235666e+00
--4.1484973596089311e+01
-1.3299763569308263e+01
-1.8151397734247572e+00
--3.1261475606481362e+01
-3.5008373515771916e+00
--1.3121226297527309e+00
--2.0743621662591455e+01
-1.0794225554556416e+01
--4.2666330921992053e+00
--2.6389066547414075e+01
-5.6033176197583678e+00
--2.3655797743545823e-01
--2.2122154788469771e+01
-1.6171562965700154e+01
-1.8440498137385614e+01
--5.7837752829759481e+01
--1.4876083058319736e+01
-4.8968221414982445e+00
--3.9529873932036523e+01
--1.2098698557016920e+01
-2.2699020509290055e+00
--3.5702174686538413e+01
-9.2562786722911667e+00
--6.1265156164533670e+00
--2.4104673589456951e+01
-1.1095378363990621e+01
-2.2343550524576223e+01
--5.3865514219900263e+01
--1.3476045609305535e+01
-5.8976284430609516e+00
--4.0778533226241755e+01
-1.7057627061558652e+01
-1.5993462064127135e+01
--5.4513658253998898e+01
-2.1852616444505659e+00
--8.5829962715465395e+00
--2.0796452704290822e+01
-1.0725088870300626e+01
--5.0017699570714456e+00
--2.5731436270465760e+01
--7.4914056927831023e+00
-1.6638863573398943e+00
--3.4785512773772005e+01
-1.7478618280351721e+01
-2.1981191995462286e+01
--6.2187539208398164e+01
-8.4898023868479289e+00
--6.8096197071794613e+00
--2.3027626547034519e+01
-2.6576558805463550e+00
-1.9056144589857837e+01
--5.0544551268811567e+01
-1.1130467024603426e+01
-1.3369380718467212e+01
--5.0645833056639589e+01
-1.7578487761285771e+01
-2.2692805455472602e+01
--6.1068181692096644e+01
--8.0505108701936834e+00
-2.3793493361171523e+00
--3.5897656852896269e+01
-4.8071239471022720e+00
-1.5761438865707813e+01
--5.4101223731633930e+01
-9.3794887231347666e+00
--4.5607062224282542e+00
--2.6294778369792290e+01
-1.3198612315831523e+01
-4.9415154566822272e-01
--3.3155997111396765e+01
--6.1506417327119642e+00
-6.6793168008648092e+00
--4.1825897948499097e+01
--1.7632826979244527e+00
--7.7368087122496245e+00
--2.1939506389463880e+01
--5.3709329412678990e+00
--8.6753367023762902e+00
--2.0609389506497774e+01
-1.3559213368945036e+01
--5.3265209345746323e+00
--2.5031645897342329e+01
--5.8634704799363284e+00
--7.3565275023998993e+00
--2.2552310720088947e+01
-6.6275641024049774e+00
--4.4786940762701324e+00
--2.3541172765567502e+01
--1.8919997752058317e+00
-8.9421817863594804e+00
--4.4737612854981464e+01
-9.1348795680224804e+00
--6.4062665337473401e+00
--2.3576348651063626e+01
--5.7762754456468164e+00
-6.6583182087609583e+00
--4.1849700768082371e+01
-1.4462774974370170e+01
-1.6965744872614536e+01
--5.6080946008549653e+01
--2.5085677423717261e+00
--7.8718629110573577e+00
--2.1695574494955380e+01
-7.1265187237280569e+00
-7.5428068861874200e+00
--4.2809831528435630e+01
-1.0123324331044097e+01
-9.6615179523358936e+00
--4.5782562026694762e+01
--7.1952088537631207e+00
-7.1842986199619983e+00
--4.2408457086853730e+01
-8.9073727738135098e+00
--6.2627544848265737e+00
--2.3861374678760146e+01
--1.8401854080898747e+00
-6.6418599171848252e+00
--4.1639744141538806e+01
--8.9921579306863482e+00
-3.8353830365344193e+00
--3.7913650188508107e+01
-8.9976603206821011e+00
-1.1464553566327641e+01
--4.8220866256362839e+01
-9.4160403960089027e+00
-7.8250208204513312e+00
--4.3232437409196415e+01
-2.3302815100301624e+00
-1.8363301952136595e+01
--5.0425603509563821e+01
--5.3245628230762394e+00
--7.0765790422595654e+00
--2.2742933890826947e+01
-1.3339516501220235e+01
--4.9491611512435361e+00
--2.5321298367563621e+01
--1.3911563747266348e+01
--7.6889541685043827e+00
--2.1946245913376863e+01
-1.2840279808921983e+01
--4.7767489540647325e+00
--2.5748515229517167e+01
--3.8556950910055603e+00
-6.4163628275971778e+00
--4.1411908233854248e+01
-1.3780835789208467e+01
-2.4848507250302868e-01
--3.1841615845368992e+01
--3.0035372131608464e+00
--7.4494133570913030e+00
--2.2247553041306716e+01
-1.3012607356951598e+01
--4.8873797663197367e+00
--2.5579471781170735e+01
--5.4670124011260368e+00
-5.2888030254075282e+00
--3.9858786097362980e+01
-1.2074218447111303e+01
-5.0298365381160339e+00
--3.8644475800548349e+01
--5.5364263154503224e+00
--7.5548002425265093e+00
--2.2221226755387722e+01
--1.1701727326103779e+01
--8.1785176295580406e+00
--2.1229809313583473e+01
-1.0603716352803543e+01
--5.9310334700715934e+00
--2.4196180338423517e+01
-1.7761204975531030e+01
-2.2282792472912021e+01
--6.1905876157109745e+01
-8.1401113436176384e+00
--7.0386709810493704e+00
--2.2758244710899369e+01
-1.0551173917787795e+01
-1.0086598600604605e+01
--4.6390457399765502e+01
--1.1958971079610984e+01
-3.4882063689528793e+00
--3.7358744130091310e+01
--2.6779635181530366e+00
-7.5129642505425398e+00
--4.2826056589188276e+01
--1.1313358301093633e+01
-3.2535860611522320e+00
--3.7298878742184073e+01
-1.3226493419221551e+01
-1.7402306115068136e+01
--5.6513920004369581e+01
-1.5998995104005948e+01
-1.5103602551493802e+01
--5.3137861917742782e+01
--3.3742192562588773e+00
-1.4413488150383535e+00
--2.5250365971131544e+01
--2.3423801287181933e+00
-1.8361895159128065e+00
--2.4683127891554054e+01
-8.3128683070813327e+00
-2.0633834002010268e+01
--5.2420346329178983e+01
--1.1517875476399761e+01
-1.6927224425665315e+00
--3.5021263365130885e+01
--9.1777654460382401e+00
-6.1099228256803917e+00
--4.0887255449066288e+01
-8.8608974022054241e+00
-1.2561313266167280e+01
--4.9695220855111060e+01
--1.4835442285674429e+01
-4.3902907585980273e+00
--3.8790045563552923e+01
--2.9608463754187277e+01
-1.8618125274502738e+01
--5.8751506732216200e+01
-1.0248362915974198e+01
--4.6243315069570743e+00
--2.6149132243631627e+01
--8.8666533632633371e+00
-2.1638618775158784e+00
--3.5245734115408958e+01
--1.1115947802721015e+01
-2.2985239129329393e+00
--3.5893745367343413e+01
-1.0597530735917227e+01
-9.5853124638539189e+00
--4.5675894729928721e+01
--2.8806225000756966e+00
--7.8131696584673946e+00
--2.1756311293710432e+01
-1.5567855843182343e+01
-1.6420501972874874e+01
--5.5117415385155766e+01
--6.7699280511325934e+00
-7.0180234325457000e+00
--4.2191243183194601e+01
--7.3588115296311996e+00
-6.5272783584313760e+00
--4.1637360962392435e+01
-1.6673445953292411e+01
-1.6882450661924494e+01
--5.5960219208499858e+01
--1.0615489097774397e+01
--7.3802028800406747e+00
--2.2312852317146906e+01
--3.9866727340457748e+00
--7.5757936989459456e+00
--2.2123018897772990e+01
--8.3526044775185397e+00
-2.4668379723165201e+00
--3.5982414273926103e+01
--6.6205673859660106e+00
-6.5172578614334462e+00
--4.1526632000779870e+01
--6.1832600517696532e+00
-6.8567677191973591e+00
--4.2024571729502455e+01
-1.2758154178074463e+01
-7.0155753147042876e+00
--4.1906372066093965e+01
-9.3355422645804236e+00
-1.8397497065984957e+01
--5.7045128976414340e+01
-1.1847482676825063e+01
--5.6093617711474177e+00
--2.4605701630892305e+01
-1.6728194040504103e+01
-2.0745554314919051e+01
--6.0773092616620133e+01
--1.1363613336730296e+01
--2.1488965870998631e+00
--2.9914540965371778e+01
--8.9475687960002386e+00
--4.9871644691570260e+00
--2.5828142837690081e+01
-1.4081487606600213e+01
--4.8377923161643963e+00
--2.5396378666457238e+01
--9.6750931343918971e+00
--7.1636275189322707e-01
--3.1627013850899271e+01
--1.2802158724171393e+01
--5.6738669605775103e+00
--2.4791680273598534e+01
--7.1197089645683258e+00
--3.5202239975587637e+00
--2.7723633939791199e+01
-1.2821419773167285e+01
--5.4444990803137312e+00
--2.4745190294897714e+01
-7.1020406612131062e+00
-1.2498804909963818e+01
--4.9715994426729310e+01
-6.1421033471599582e+00
-6.6575735560097649e-01
--2.3300733305002815e+01
--1.3636525134360172e+01
--8.0349104309585275e+00
--2.1477729397065300e+01
-3.0942165920065769e+00
-1.7501887935748190e+01
--5.3341125778857773e+01
-1.3014395308821294e+01
--5.8809055790309737e+00
--2.4045085848702033e+01
-9.2445058637539237e+00
--5.5586503944569836e+00
--2.4876835713299183e+01
-1.0689762334074155e+01
--3.4025218639965393e+00
--2.7907301026931155e+01
-7.9066120872064243e+00
-1.0809119763244869e+01
--4.7299920588578935e+01
--9.3187641238556331e+00
--3.0460204814337568e+00
--2.8493680392745073e+01
-2.8179903906102517e+00
-1.0048283836391803e+01
--4.6272576505390816e+01
--7.6996083007878298e+00
-1.8704286150858502e+00
--3.5290443048897743e+01
-1.1840238576481850e+01
--3.6710483628722845e+00
--2.7444461737662252e+01
-8.7911098756833610e+00
-1.7038640444039562e+01
--5.5968255607497952e+01
--1.2505471331702745e+01
--7.5387146064560806e+00
--2.2175583817094701e+01
--7.1087870460068725e+00
--3.7912061770575227e+00
--2.7334125832393497e+01
--1.0605521905004984e+01
--2.7635142287738632e+00
--2.8993745140804990e+01
-1.8175180761717697e+00
--3.1655615735279183e+00
--1.9950692465107963e+01
--9.4655480535728387e+00
--1.8512086360996178e+00
--3.0283486076719853e+01
-9.6423372981908688e+00
--6.6647537998789552e+00
--2.3054614628712276e+01
-1.3409917667692303e+01
-8.1431280196546254e+00
--4.0661555995794551e+01
-1.2965020782860803e+01
--5.1679134048068907e+00
--2.5242018729775701e+01
--1.3150324176199673e+01
--7.3427343417881810e+00
--2.2477976081244094e+01
-9.8270016633956470e+00
-1.5543080884051466e+01
--5.3642893906039212e+01
--1.4326891534423694e+01
-9.6971607324295199e+00
--4.4523526104135293e+01
-1.2184946499985685e+01
--5.3008189012908984e+00
--2.5151365725556378e+01
-1.6841531308622429e+01
-2.1846756076090816e+01
--6.1668048579734311e+01
--7.4584370413452845e+00
--3.0170307294919745e+00
--2.8438791421246165e+01
-1.1570426601626188e+01
-1.4038170794923648e+01
--5.1942912042393360e+01
-9.2562786722911667e+00
--6.1265156164533670e+00
--2.4104673589456951e+01
-2.2209339102920427e+00
--8.0148694114829482e+00
--2.1623594061500683e+01
--8.8658255501746748e+00
-1.7749263028964704e+00
--3.5049170427912962e+01
-1.0766953568977968e+01
--5.8888699285063133e+00
--2.4266664971548266e+01
-9.8121851364875656e+00
-1.2160325017041769e+01
--4.9220911055513419e+01
-5.9645897504600747e+00
-1.9957441837521515e+01
--5.1102407517974562e+01
-1.1408167664042340e+01
--2.8321061068263838e+00
--2.8838144710133268e+01
-4.0458595725435460e+00
-1.7118071860746120e+01
--5.4115696586105955e+01
-1.2299676886806372e+01
-5.0360728924070877e+00
--3.8902119525202281e+01
-9.4241084492669618e+00
--6.7235227242877009e+00
--2.3156559491420552e+01
--9.0196049957456257e+00
--4.8523431514849689e+00
--2.6009105580037822e+01
--8.8411741106211306e+00
--4.7605648336002560e+00
--2.6099903479943048e+01
--6.8130039718703275e+00
--3.4938456828165783e+00
--2.7821349176906917e+01
-9.5660191447981209e+00
-8.2641904147191028e+00
--4.3704751152402025e+01
--1.6472549701366241e+01
-1.8677617969472771e+00
--3.5413642408284481e+01
-1.2953977793589525e+01
--4.7294416572943332e+00
--2.5722851924748788e+01
-1.0221889876613229e+01
--6.3044799404322838e+00
--2.3784341111152553e+01
-1.8495326396114184e+01
-2.1978020129445888e+01
--6.2385046426451559e+01
-1.5823734246718555e+01
-1.6856029090114372e+01
--5.5678082727985142e+01
-9.2623139913787647e+00
-7.8590148805091111e+00
--4.3373102747376130e+01
-4.6382117068317665e+00
-1.9588114954205256e+01
--5.1000716415499767e+01
-4.2951127246578151e+00
-1.8930074322681008e+01
--5.1665746783646711e+01
-1.3896601831024432e+01
--4.8736435209935802e+00
--2.5409839674840843e+01
--8.9934927259997703e+00
-2.0135678065102831e+00
--3.5399499573629576e+01
-1.5783880239488064e+00
-8.4255740434559048e+00
--4.4031682167764998e+01
--1.3756037695368947e+01
-3.8696612256331999e+00
--3.8047178162763458e+01
--7.6863395768085763e+00
--7.1147153909336858e+00
--2.2785060395869053e+01
-9.9056760924060789e+00
--5.7226124872139916e+00
--2.4488597006494739e+01
-4.2097355218507282e+00
-3.3769405904538469e-01
--2.1034561696424781e+01
-7.2328001504877815e+00
-1.0736630213799813e+01
--4.7367089380661497e+01
--5.6228168561311953e-01
-2.7671012854229247e+00
--2.2407318763153125e+01
--7.3886881977272392e+00
--1.8562726166823647e+00
--3.0055915452635496e+01
-1.2677012474731738e+01
--5.3453247927186576e+00
--2.5012339383632021e+01
-1.3515933224132565e+01
--5.4738359999002899e+00
--2.4539975268914507e+01
-1.0684209453305892e+01
--5.5737229663021974e+00
--2.4655984474043134e+01
--5.2241783627034177e+00
--7.4494888883904293e+00
--2.2383518428290127e+01
-1.1828182216695602e+01
--3.1653667058519614e+00
--2.8116788035085694e+01
--4.0843228294676788e+00
-7.5109337225101065e+00
--4.2894617254210587e+01
--1.4585355481632490e+01
--5.4991196062548084e+00
--2.4896873382745568e+01
--1.3266621435388821e+01
--7.1644774327020500e+00
--2.2647754855838329e+01
-1.3712166654381804e+01
-7.9600520881626897e+00
--3.9255314076207632e+01
-9.3077068610346689e+00
--5.7241470217572576e+00
--2.4680155298272712e+01
-9.6655961825118943e+00
--6.0571634478033447e+00
--2.4184608361805854e+01
-9.6642046523628373e+00
--6.5900353580080608e+00
--2.3330263053214225e+01
--4.2061065534069657e+00
--7.0184457015210562e+00
--2.2970045680384455e+01
--3.9476372573839802e+00
--5.3848085615367198e+00
--2.4285120004097802e+01
-1.0836700167291294e+01
--4.9238460333398075e+00
--2.5717145201933384e+01
-1.3491418757419867e+01
-8.4510980583018203e+00
--4.0244956830176811e+01
-1.4071350723212470e+01
--4.9857468259362783e+00
--2.5318297913646358e+01
-1.0924862167270547e+01
--1.5537455438901424e+00
--3.0445254062602945e+01
--1.2977240663427306e+01
--7.4420376737752321e+00
--2.2303413726988140e+01
-2.4278811157650848e+00
-1.8533460876562984e+01
--5.0059041322690234e+01
-1.0408466401098574e+01
--4.5742470466428502e+00
--2.6208066946623834e+01
--5.2619016564996040e+00
--7.0049615179450075e+00
--2.2976625958405815e+01
-1.3167209056614121e+01
-9.1817419896047632e+00
--4.1733829237311291e+01
-9.7219747387090933e+00
--6.1217484273976677e+00
--2.4144774922123705e+01
-1.0755920129658035e+01
--4.6474807785429331e+00
--2.6085897297400141e+01
-4.2146991101723907e+00
-1.9017026849131884e+01
--5.1103038764941779e+01
-1.0400606822583114e+01
-9.6225876120203377e+00
--4.5619475364481168e+01
--1.8112640487230562e+00
-1.1287982338357244e+01
--4.8322346570478246e+01
--2.9608463754187277e+01
-1.8618125274502738e+01
--5.8751506732216200e+01
--9.0600669593883367e+00
-5.1600333033741350e+00
--3.9692440638875780e+01
--1.3732063937164321e+01
--7.3337554379747933e+00
--2.2539818909212116e+01
--6.9776833714357416e+00
-6.7044517223177751e+00
--4.1776287913299228e+01
--1.6935788480812096e+01
-2.3686012777859431e+00
--3.6145574834506903e+01
--2.0999945005899638e+00
-9.2858126774185457e-01
--2.3459846402142766e+01
--8.1303574653632307e+00
-1.2186453532842977e+01
--4.7725898474062276e+01
-1.1798896789761551e+01
--4.9358285858737050e+00
--2.5517438122345332e+01
-1.0085005472641702e+01
-9.1183300310434703e+00
--4.5139870425505116e+01
--6.1612840675319038e+00
-7.2312723972228525e+00
--4.2512946546790744e+01
-1.3032871183467485e+01
-1.0134915381124829e+01
--4.0640522548108457e+01
--3.2056580539027335e+00
-1.3263278215972500e+00
--2.5216153764907233e+01
--8.6125769859098327e+00
-1.2889078407196044e+01
--4.6137224156673071e+01
-1.0995430299736485e+01
--1.9912674843966680e+00
--2.9797129190955459e+01
-1.0148758840087746e+01
--6.3005126809053102e+00
--2.3775892296141450e+01
-4.0721578377244771e+00
-1.9107497271284682e+01
--5.1304586473435400e+01
--8.8411741106211306e+00
--4.7605648336002560e+00
--2.6099903479943048e+01
-1.1103370726560733e+01
-2.1828657023288280e+01
--5.4284058716090236e+01
--3.0238100279877860e+00
-1.0900460308140703e+01
--4.7363186320331039e+01
-7.3945231962599776e+00
-1.3916671613021012e+00
--2.5432026147174476e+01
-6.1710269687275394e+00
-7.7696387794227126e+00
--4.3139595208280774e+01
-1.3577599946542380e+01
-8.0292470615690412e+00
--4.0047185164214653e+01
-1.1459282452821741e+01
--5.1072111995419203e+00
--2.5381478962933265e+01
-1.8900569422800364e+00
-1.6265710710850229e+01
--5.4341296676160702e+01
-8.6464733508896696e+00
-1.7442775586380801e+01
--5.6359028608069835e+01
--7.1942802072348666e+00
--1.3009928622370386e+00
--3.0757280753853955e+01
-6.9044365041606124e+00
-1.6133616303690776e+01
--5.4554756503416307e+01
-1.4771456562050499e+01
-2.0596125610187794e+01
--6.0508377719251968e+01
-7.9574748651984573e+00
-1.0579287238969238e+01
--4.7017379475731246e+01
--7.2839737568831566e+00
--3.3989937842185771e+00
--2.8052560659312210e+01
--1.3952857554828251e+01
--7.8570934377611588e+00
--2.1702529007767094e+01
-9.4241084492669618e+00
--6.7235227242877009e+00
--2.3156559491420552e+01
-1.2597106200658645e+01
--3.8219666114365620e+00
--2.7146591862071720e+01
-1.3664536147525725e+01
-7.3030302546162886e+00
--4.0846163737633169e+01
--4.0447451765112019e+00
-5.8768326076190203e+00
--4.0704695380520469e+01
-9.3479956955284926e+00
-1.6100141537500786e+01
--5.4601439868294229e+01
-1.3112426757118387e+01
-1.2496864141137980e-02
--3.2581878221694318e+01
-5.2504681068782446e+00
--7.8399979262994153e+00
--2.1783547992118390e+01
-1.1872387211312992e+01
--4.7783181532541832e+00
--2.5797815485406520e+01
-6.9746057184992303e+00
-7.7369281291029877e+00
--4.3158923134381716e+01
-1.3157899163845400e+01
--4.8201779914177836e+00
--2.5639893019045402e+01
--8.6594811024465272e+00
-3.6809418505188525e+00
--3.7623246935387144e+01
--4.7327978432742874e+00
--6.7117363337143425e+00
--2.3340328374028605e+01
-1.0720655172698102e+01
-1.3205648269296926e+01
--5.0581208099075319e+01
--1.0695026327679832e+01
--7.3536788631381693e+00
--2.2377984754518518e+01
-1.3944052970405101e+01
--7.3736163479181174e-02
--3.1482223739291975e+01
-7.8064096690395210e+00
-2.0647059490376034e+01
--5.2062632133914882e+01
--1.2587881273864806e+01
--7.0489441417427523e+00
--2.2870433340100039e+01
--4.2451609005592950e+00
--7.0289938276422887e+00
--2.2915282750087531e+01
-7.9096806372407009e+00
-9.3256040036956538e+00
--4.5395944737703282e+01
-1.2872940985087796e+01
--5.7961404671561452e+00
--2.4151041341751164e+01
-8.3162828484863951e+00
-6.2658982354866719e+00
--4.0942998324925327e+01
-8.8981251304980464e+00
-1.2458039489371183e+01
--4.9774258685336846e+01
-1.0319075957140763e+01
--5.1047035939468408e+00
--2.5490465388298869e+01
-4.6552374497609961e+00
-9.2897255673854684e-01
--2.1504923175914964e+01
-9.0717094523189861e+00
-6.7775703552939701e+00
--4.1545292744181012e+01
--7.7800004928851010e+00
--7.1313026485542537e+00
--2.2805636418410593e+01
--1.1101027202711354e+01
-1.5017840403792011e+00
--3.4583168508717840e+01
-1.4072178714076411e+01
-1.8158054931187337e-01
--2.9674326384365163e+01
-1.3046428496591730e+01
-1.7820753112031650e+01
--5.6982194662685814e+01
-1.2578635563006172e+01
-1.8130220421522729e+01
--5.7370019438645954e+01
-4.9569072346044392e+00
--1.2218229282859923e-01
--2.1787991712007894e+01
-1.1463940886998337e+01
--4.3894370889353578e+00
--2.6408211443618519e+01
-9.1426618674333682e+00
--6.2224601441728495e+00
--2.3981699266338531e+01
-9.6138207739079551e+00
-1.2661770404504743e+01
--4.9828066342927478e+01
-1.1752855672851929e+01
--5.4943781621676848e+00
--2.5011260853270834e+01
--4.9652282485287547e+00
-7.6849950651784988e+00
--4.3166878811233765e+01
-6.7732336877285695e+00
--3.8570874567888569e+00
--2.4381406463508384e+01
--3.0942193335915378e+00
-5.2860814496844322e-01
--2.4096596227690458e+01
-3.2208037783184138e+00
--8.1869266770343287e+00
--2.1476503767285706e+01
--3.3021036866596294e+00
-7.8921443526985842e+00
--4.3403260045437811e+01
-1.1740392511657404e+01
--4.3203918505561694e+00
--2.6569454246057013e+01
-1.2031838273638209e+01
-4.5231118805586901e+00
--3.8693381395549338e+01
--8.3697105359645789e+00
--2.6332058643958516e+00
--2.9029856358414321e+01
-1.2840279808921983e+01
--4.7767489540647325e+00
--2.5748515229517167e+01
--2.6615778772516725e+00
-7.1545720640097601e+00
--4.2353242053651627e+01
--1.1435795727729815e+01
--8.3118661788667936e+00
--2.1054412283704369e+01
-1.3791682607493154e+01
-7.7426818347681570e+00
--4.0001240797096081e+01
--3.9782654683483853e+00
-6.1973544819085324e+00
--4.1183108054723760e+01
-1.3973059689112301e+01
-7.2446018174739377e+00
--3.9060246490131796e+01
-7.7779701972796493e+00
-1.0358862142529803e+01
--4.6900496758662904e+01
-1.3786229512877425e+01
--1.9123740295764868e+00
--2.9656816490960363e+01
--9.4332132161896110e-01
--1.7928745977888512e+00
--2.1162278740038690e+01
-2.1793966561097249e+00
--8.5249349165639927e+00
--2.0798839983401500e+01
--3.2633774215099303e+00
--7.4416001058404042e+00
--2.2304636225404145e+01
-5.2520758549107889e+00
-1.9313084034892963e+01
--5.1931910111442278e+01
-1.1852932478450873e+01
-1.4763989697894655e+01
--5.2685094608239723e+01
-1.0326411322102068e+01
--4.2331055865342044e+00
--2.6735824554140422e+01
-6.6094217788554275e+00
-7.1242796454843100e+00
--4.2210015310361307e+01
-3.8580834946315452e+00
-1.9564511643754056e+01
--4.9907275187033086e+01
-1.0615970654172930e+01
--6.0599590398047392e+00
--2.4116906152542668e+01
-1.0229365456169290e+01
--4.4964456658834644e+00
--2.6371240336767865e+01
--1.3575276782447606e+01
-3.8612459171115092e+00
--3.8276181141386047e+01
--2.0632750834371683e+00
--3.0884468228914042e+00
--2.2370101035127206e+01
-1.7417683843502734e+00
-9.1621659214520097e+00
--4.5176610196731353e+01
-7.8396948481695086e+00
-1.7806580141308057e+01
--5.6744910604509798e+01
--1.7448268473564961e+00
-7.0554047523780028e+00
--4.2164708569176675e+01
-1.9108710396147437e+00
-9.0112107530039740e+00
--4.4959469605960386e+01
-8.7788879041836285e+00
-1.3476621162934142e+01
--5.1064921507675685e+01
-6.2579627845423422e+00
-1.4012707408049422e+01
--5.1699809311056391e+01
-1.5622592913957289e+00
--7.7239063357124511e+00
--2.1556081847543020e+01
-7.1837687346227792e+00
-1.4956309654418392e+01
--5.3079838294434118e+01
-3.0623719212976459e+00
--2.5345634748591266e+00
--2.0247891148287717e+01
--9.3212738717770112e+00
-2.0672070218793994e+00
--3.5538506156906251e+01
--9.4834358919747910e+00
--1.3552431539346750e+00
--3.0811562794849674e+01
--1.4200791210515673e+01
-9.6259505914013381e+00
--4.4482555385960829e+01
-1.6410661069966725e+01
-2.1290383724578803e+01
--6.1566962819807941e+01
-8.6017954369115923e+00
-1.0303802759421313e+01
--4.6958525966899316e+01
-1.3065505265676508e+01
--5.1068389963790590e+00
--2.5204449216040729e+01
-1.6111852815098093e+01
-1.6502549765788480e+01
--5.5339601013302946e+01
-1.3621433421659548e+01
-7.4535633979355662e+00
--4.0899538282316058e+01
-8.2334874645477711e+00
--6.7597643645434724e+00
--2.3196891094443615e+01
-1.0370419381545650e+01
--5.7063924532948027e+00
--2.4588104513255800e+01
-9.0921984731101873e+00
--6.4306697282511056e+00
--2.3653230601170769e+01
-7.1142418927213598e+00
-1.0540173968396498e+01
--4.7096616204320576e+01
--5.0788857363216104e+00
-4.7054397394642580e+00
--3.9131412316848831e+01
-1.3665213028203574e+01
-6.9423018316833813e+00
--4.1357695845489125e+01
--1.4698264894780046e+01
--7.0987316129609566e+00
--2.2814345834397258e+01
-1.0152127160408948e+01
--5.3451040521122826e+00
--2.5106331620653698e+01
--4.2920839360473835e+00
-7.4777670595876762e+00
--4.3033611471639517e+01
-1.0939481769990287e+01
--5.8519984874530717e+00
--2.4373001988266640e+01
--1.4186171113835705e+01
-4.2192705600310010e+00
--3.8515600706984984e+01
-1.0922489630154558e+01
--4.4514405001751358e+00
--2.6227379943762550e+01
-1.0694735674320063e+01
--5.5413513994928882e+00
--2.4863304331903226e+01
-1.2878390613200434e+01
-2.2554080606467622e-01
--3.3006678452862396e+01
--1.3199655515992202e+01
--8.2145341992107195e+00
--2.1358157743271011e+01
-1.3587814068333424e+01
-7.4514051777564578e+00
--4.1215321352113982e+01
-9.4204119332303655e+00
--5.9200608330730642e+00
--2.4325967343633597e+01
-1.3692517374072528e+01
-7.2578600570333123e+00
--4.0291561977355514e+01
--7.5923504554629879e+00
--3.1951915924567977e+00
--2.8281178799967456e+01
-1.3712166654381804e+01
-7.9600520881626897e+00
--3.9255314076207632e+01
-1.3933070159864180e+01
-7.4145289158064820e+00
--3.9139232896595487e+01
-6.5985184711062148e+00
-2.4050251048977500e-01
--2.3661696407251164e+01
-1.0202398760619749e+01
--6.0541324520426265e+00
--2.3985241271305359e+01
--1.4585355481632490e+01
--5.4991196062548084e+00
--2.4896873382745568e+01
-7.5476056904759279e+00
-1.9631199432188831e-01
--2.3840826014398232e+01
-1.0069556995517299e+01
--4.6527117663969184e+00
--2.6110130618748734e+01
-8.3091260424379119e+00
--6.9003046920592785e+00
--2.3013175110743077e+01
-1.0869870733878217e+01
--5.7719360898243339e+00
--2.4333549652623677e+01
-1.0518460947358836e+01
--2.3675257030679786e+00
--2.9388144599331071e+01
-1.0748827319129908e+00
-8.0065682792193051e+00
--4.3393427162304945e+01
--7.2839737568831566e+00
--3.3989937842185771e+00
--2.8052560659312210e+01
--1.4520988470040498e+01
--5.7818352400594373e+00
--2.4633414660690157e+01
-3.2818000985104674e+00
-1.8764378703263276e+01
--4.9583982395349061e+01
-3.4102386270820366e+00
-1.8542078147554705e+01
--4.9263010918463856e+01
-1.3517790378900134e+01
-2.3405265193165317e+01
--5.5194194467038947e+01
-1.0352729129007885e+01
--5.3734663011123018e+00
--2.5086721957380604e+01
--4.0746512795929295e+00
--7.7853701820911327e+00
--2.1915012754704883e+01
--8.0260066531799055e+00
-1.9123264670777462e+00
--3.5226356321688861e+01
--3.1540249428228502e+00
--7.8319854312005264e+00
--2.1799725488736737e+01
-1.3415511271328254e+01
-5.7968218041974384e-01
--3.3183742073141985e+01
-1.5942241798403062e+01
-1.8173704521512395e+01
--5.7737976959688375e+01
-9.4891206343710603e+00
-1.6389894328491387e+01
--5.4953956528123250e+01
--9.0168416644228326e+00
-6.5513766115800545e+00
--4.1546687734663713e+01
--1.1236058136686879e+01
-7.8457188758342395e+00
--4.3406852005609053e+01
-7.0523034480916893e+00
-5.8140045404750806e-01
--2.4240238031219370e+01
-2.2425052649217707e+00
--2.5305877473542204e+00
--2.0201453813245898e+01
-9.8782667627380523e+00
-7.7536290849467848e+00
--4.3149792025934865e+01
--2.5913371570507104e+00
-1.1557931628108884e+01
--4.8280626970133369e+01
-9.0908724443636775e+00
--5.6525772510454235e+00
--2.4692845785935550e+01
--1.3251239588574672e+01
--4.0922369774362446e+00
--2.6946380513826110e+01
-1.0057617359898684e+01
--6.1288220473059063e+00
--2.3977209834618414e+01
-1.0200753818662573e+01
--5.5982541902176362e+00
--2.4746984822106803e+01
-1.3381127650560432e+01
--5.1318196260402109e+00
--2.5240102113285431e+01
-1.2810650567698321e+01
-1.2208281217220508e+01
--3.7380374900124693e+01
--4.2920839360473835e+00
-7.4777670595876762e+00
--4.3033611471639517e+01
--1.3415966505697233e+01
--6.6644346958903657e+00
--2.3439675689668672e+01
-6.0416834482495991e+00
-7.3714050887755489e+00
--4.2706863727942824e+01
--7.1875302889947585e+00
-2.0049103560725774e+00
--3.5388893944521179e+01
-1.3152235593793726e+01
-1.1660509140837672e+01
--4.8385580084695960e+01
--7.3249752954275111e+00
--2.3828016849709117e+00
--2.9272029355480907e+01
-8.6511309822066007e+00
-6.6768484919669202e+00
--4.1669095568978229e+01
-1.2750600044801445e+01
-4.9711699501774218e+00
--2.9507580346319024e+01
--2.2047691494495960e+00
--8.0234008187231147e+00
--2.1528153207924248e+01
--4.0843228294676788e+00
-7.5109337225101065e+00
--4.2894617254210587e+01
--2.0189245879690180e+01
--1.2719067036306730e+00
--3.0990063717744508e+01
--8.6042577537609493e+00
--2.4389064278902333e+00
--2.9333484373263811e+01
--3.2431296024656389e+00
-7.4301467464329756e+00
--4.2928208066508674e+01
-1.0883151828096125e+01
--1.4949139137145055e+00
--3.0514847378788183e+01
--4.9304808667155982e+00
-1.1327742980233563e+01
--4.8116283376428797e+01
-9.1694774909107437e+00
--6.4579041287230883e+00
--2.3585205067729451e+01
-3.6997804904718530e+00
-1.8523630514682544e+01
--5.1422958141311234e+01
--1.3911917562522129e+01
--7.3834174680738975e+00
--2.2520535242966641e+01
-5.1275677436288039e+00
--2.3927933115399620e+00
--2.0377926733830513e+01
--4.1194411131565074e+00
-8.6201028557933679e+00
--4.4264753973394008e+01
--9.1934075766950816e+00
-4.3568328752291992e+00
--3.8568702017036529e+01
-1.3993871733346360e+01
-7.3502624590156236e+00
--3.8988835133128099e+01
-1.7111779393549501e+01
-1.6436061642807722e+01
--5.4838908883841455e+01
-7.8913575879668354e+00
-2.0504044378661487e+01
--5.3076479737942996e+01
--4.5714745676504798e+00
--6.2128052742224433e+00
--2.4082988024958837e+01
-1.4118010659115384e+01
-1.5307702248256545e+01
--5.3343185444156319e+01
-6.1626952767645591e+00
-8.1538119729025365e+00
--4.3750546566600129e+01
-1.0923165094507624e+01
--2.0016723699286336e+00
--2.9877982813870105e+01
-1.4058315304531742e+01
-5.2789904600888180e+00
--3.9738817981902301e+01
-1.2052975969717387e+01
--5.3085547745997239e+00
--2.5260545098595141e+01
--5.9921235544629914e+00
-6.1002248295245982e+00
--4.1172358374593870e+01
-1.6502867801298926e+01
-1.6547150112064354e+01
--5.5426203192453762e+01
--5.2204749835395310e+00
--8.5596705733329514e+00
--2.0839022100386014e+01
--6.7854961611635360e+00
--1.6581338576512947e+00
--3.0412532447117886e+01
--2.2217664806279355e+01
-3.5871977713421344e-01
--3.3296154393693051e+01
--6.6237699499433349e+00
-7.2224473624968262e+00
--4.2474721571472031e+01
-2.2819065526070039e+00
-1.8177821341651729e+01
--5.0731423811695059e+01
--8.7690572620214251e+00
-2.2439216492199123e+00
--3.5634994115705531e+01
--5.4730390465161580e+00
-7.2246006532697189e+00
--4.2490859860210300e+01
--4.2254048044624986e+00
-1.0031329449492549e+01
--4.6476217783149437e+01
-1.0169138537907997e+01
--5.1255774842122461e+00
--2.5348168431987880e+01
--2.4246752968497152e+00
--8.0569656864530845e+00
--2.1510855385263135e+01
-1.0221889876613229e+01
--6.3044799404322838e+00
--2.3784341111152553e+01
--4.9351330003930851e+00
--8.1573283563865715e+00
--2.1423524004321802e+01
-2.1215105326617913e+00
-1.8839946450028478e+01
--4.9838960280446145e+01
--1.1133581855850988e+01
-8.7222190080829449e+00
--4.4422976143921993e+01
--5.3866762955461356e+00
--6.8908423821755926e+00
--2.3099808841739858e+01
--7.0578785677516569e+00
-6.4650779864632089e+00
--4.1474814458995340e+01
-6.1931826702346147e+00
--7.4822288956645249e+00
--2.2237656255887078e+01
--4.2303777604397901e+00
-7.3533187612517681e+00
--4.2717800475074462e+01
-1.3371322989139028e+01
-1.7501023090897785e+01
--5.6462598214313360e+01
-1.3917926804363905e+01
-6.3782421426607483e-01
--2.9974764118417355e+01
--7.7800004928851010e+00
--7.1313026485542537e+00
--2.2805636418410593e+01
-7.1020406612131062e+00
-1.2498804909963818e+01
--4.9715994426729310e+01
--3.8661192768008439e+00
--7.5849864234013964e+00
--2.2193239793152021e+01
--1.3081668609768352e+01
--7.3099534687401322e+00
--2.2494604326559230e+01
--4.2303522374611919e+00
-5.5516993619050572e+00
--4.0153965449716210e+01
--1.3817854969453904e+01
--6.4615435406635555e+00
--2.3752452663745505e+01
--9.7594846213165329e+00
--4.1935849692773663e+00
--2.6903989453675432e+01
--7.4094097741776315e+00
--5.7710400156151982e+00
--2.4741694287508661e+01
-1.3012598871032905e+01
--5.0964165129365533e+00
--2.5319007076535250e+01
-9.4574470667668304e+00
--5.8493734777035709e+00
--2.4462335686349146e+01
-6.2185704247052893e+00
--4.6159182227330167e+00
--2.3241022174630839e+01
-1.2631194451088875e+01
--4.4979205242975739e+00
--2.6054206671200848e+01
-9.7589151610268718e+00
--5.8882330630591255e+00
--2.4231279843001889e+01
-1.0573720761647781e+01
--5.5488996038798746e+00
--2.4787634490769594e+01
-9.3339786369314552e+00
--5.9605795797670860e+00
--2.4315911221106798e+01
-1.3091310622255440e+01
--5.3769363014183797e+00
--2.4673227964924735e+01
-9.3285906932983611e+00
--6.3302255276299197e+00
--2.3791691319778771e+01
--1.3590744102649738e+01
--7.4474763297245623e+00
--2.2369404305874141e+01
-2.4448764884033700e+00
-1.4771953960315395e+01
--5.2729977563803637e+01
-9.5421934367048884e+00
--4.9816552497461997e+00
--2.5707218758513974e+01
--3.0082036246394939e+00
--7.7909837974152980e+00
--2.1899736129586117e+01
-1.8362880508262759e+01
-2.1480843534542071e+01
--6.1841210552738936e+01
--1.1785863341745268e+01
-9.6684291918831704e+00
--4.2964521434895360e+01
-1.4286972949246406e+01
-5.8543370586028285e+00
--3.9919590572571579e+01
-9.2888283364990816e+00
--6.3419871638014387e+00
--2.3968871906980176e+01
-1.5962411604175001e+01
-1.8499739699788748e+01
--5.7919910769082378e+01
-1.4171808445419678e+00
--8.6049251430736202e+00
--2.0804715162816201e+01
-3.0884117991378979e+00
-1.8427479080400822e+01
--5.1678481799857401e+01
-1.4998664259410218e+01
-1.5056381953565417e+01
--5.3231941126497397e+01
--1.2810836427783839e+01
-3.6031563316082029e+00
--3.7617458270301661e+01
--8.3952951004496565e+00
--2.9892575684881053e+00
--2.8531324069186354e+01
-1.3748735335482433e+01
--5.0817501647454613e+00
--2.5154216135299720e+01
-6.8340004246269146e+00
--3.8404885340291872e-01
--2.3039148004287291e+01
--9.7668022699216692e+00
-2.6180266383698108e+00
--3.6102022001600865e+01
-1.3643766921434564e+01
-6.7997771540142615e+00
--3.9744025879017940e+01
-5.1262129292447201e+00
-3.4179480497953446e-01
--2.2017245652633104e+01
-1.3377541558637995e+01
--5.0597786103437752e+00
--2.4714026666125122e+01
--3.0998573252868260e+00
--8.5299445552520670e+00
--2.0805132041212673e+01
--1.0328005620090904e+01
-1.1125839269293625e+01
--4.4272868871098893e+01
--7.0711713772682909e+00
--8.5012551245834107e+00
--2.0820059377080018e+01
--6.8591842113485111e+00
-7.7856692281837403e-01
--3.3653555855847770e+01
--4.7440070974429887e+00
-7.0286041970158299e+00
--4.2011553120425958e+01
--3.6904826722757758e+00
-8.8916140585204086e+00
--4.4719796204220437e+01
-1.0126403502585179e+01
--5.4947045413275450e+00
--2.4964672767299817e+01
--4.3632602518546992e+00
-7.6212173611855460e+00
--4.3050906263511237e+01
-1.1456424093950590e+01
--2.5770113633327609e+00
--2.8971718343517505e+01
-1.1408167664042340e+01
--2.8321061068263838e+00
--2.8838144710133268e+01
--3.2229099938447852e+00
-5.7949110439253648e-01
--2.4163132506349886e+01
-7.9951325465542968e+00
-2.0440213110283224e+01
--5.3646937287050982e+01
-1.2809811782779237e+01
--5.1327663654269191e+00
--2.5224321492723934e+01
--2.1506484048891492e+00
-8.6787846479257413e-01
--2.3405446170524893e+01
--5.0083198514973679e+00
-6.3109851805642849e+00
--4.1233156644878882e+01
-8.5201074422565277e+00
-9.8573053492950429e+00
--4.6023775015131271e+01
-1.1999108100384461e+01
--4.1062140963227725e+00
--2.6821713843404758e+01
-1.2611261194307625e+01
--5.2626505718582433e+00
--2.5030674307546999e+01
--7.1830378587702333e+00
-8.3195404975967548e+00
--4.4120156452290843e+01
-1.0777966219804608e+01
-2.2461749489042784e+01
--5.3699475434707736e+01
--1.5706410183499194e+01
--6.9621133842671679e+00
--2.2957798339878117e+01
-1.0269762931641319e+01
-1.8491047679112576e+01
--5.7786864073199631e+01
--1.6291859882924404e+00
--8.6686043502302237e+00
--2.0597174910890519e+01
--3.1402527386972614e+00
-5.0155809358176939e-01
--2.4019911059454884e+01
-1.3833706083729549e+01
-1.4246064018698837e+01
--5.1932885748568374e+01
-9.3693040693358629e+00
--6.1133305849775388e+00
--2.4040386015116006e+01
-1.3388114244252439e+01
--5.1923944649290270e+00
--2.5168202422163873e+01
--8.4122698358019328e+00
--2.9636686468397935e+00
--2.8371670506410940e+01
-9.4160403960089027e+00
-7.8250208204513312e+00
--4.3232437409196415e+01
-9.7284532295122634e+00
-7.9629884477895416e+00
--4.3495222195600007e+01
--6.7854961611635360e+00
--1.6581338576512947e+00
--3.0412532447117886e+01
--1.0976893284599937e+01
--2.3533186397063268e+00
--2.9522053222428433e+01
--9.7313048689885040e+00
--4.2775790016121009e+00
--2.6768614499422561e+01
--4.8670156972375906e+00
--7.6934443866520654e+00
--2.1969192953874369e+01
-1.4064705071539500e+01
--4.9775204705930181e+00
--2.5131553657855807e+01
-1.9034257794604951e+01
-2.1533752885750626e+01
--6.2309974761033466e+01
--2.8265164745453037e+00
-7.5042344436332664e+00
--4.2916362517265604e+01
-5.2066105192522381e+00
--6.2139081046192135e-01
--2.1563434619586140e+01
-1.3804644261329042e+01
--5.5989407839293452e+00
--2.4281727126057913e+01
--3.5943159736708878e+00
-1.5901389781142898e+01
--4.5742700045697035e+01
-1.0521930916011184e+01
--5.9842223074352647e+00
--2.4214099887702528e+01
--1.6429962574923218e+00
--6.2789842555281217e+00
--2.2943025895042400e+01
--1.6103175424620080e+01
-1.2457608196636436e+00
--3.4624505220094832e+01
-1.1254960799711188e+01
-1.5130234792531715e+01
--5.3290658331809411e+01
--1.0376228153872340e+01
-1.0742559218006061e+01
--4.4558954209722394e+01
-1.3355681978754574e+00
-7.7609674403825313e+00
--4.3189072467013247e+01
--1.5417993194995553e+01
-4.7923976254423586e+00
--3.9349984970459914e+01
-1.3559494319267516e+01
--4.6059285980698954e+00
--2.5859782003085282e+01
--4.2489030688814209e+00
--6.9640519840324178e+00
--2.2977185649923037e+01
-6.1727197516438768e+00
--8.6760105269146803e-01
--2.2367364529031303e+01
--1.3493588512659111e+01
--7.5141073917969878e+00
--2.2227233764135722e+01
--4.5407027877855057e+00
-1.2394074902720106e+01
--4.9529811553470495e+01
-7.0166037411290496e+00
-8.3352316814351006e+00
--4.4147127446374164e+01
-9.4811747650504330e+00
--6.0366619596649178e+00
--2.4230707045809417e+01
--9.4500505672313384e+00
-1.1658512468080028e+01
--4.7047833744365199e+01
--6.9997729111888534e+00
--3.6670858056864004e+00
--2.7710225997722421e+01
--5.0564069747757427e+00
-4.5863080025373533e+00
--3.8831384089052833e+01
--1.0179939386897452e+01
-1.1877573731620254e+01
--4.5628467165259345e+01
--8.9475687960002386e+00
--4.9871644691570260e+00
--2.5828142837690081e+01
--1.0514972888072684e+01
-1.1477785957150735e+01
--4.5036651584781616e+01
-1.2798160855272625e+01
--5.1794537330233776e+00
--2.5063124091770238e+01
--1.3039050654442280e+01
-3.2881788339216063e+00
--3.7237614700672950e+01
--1.1384585175857101e+01
-9.0672605360710123e-01
--3.3951891145357123e+01
--1.0072665807641563e+01
-1.1103617157531934e+01
--4.5312272320015353e+01
-6.6094217788554275e+00
-7.1242796454843100e+00
--4.2210015310361307e+01
--1.2089869155644242e+00
--1.5194381088256466e+00
--2.1319900847628109e+01
--4.3480982456371220e-01
-1.0918305612491825e+01
--4.7560306051733598e+01
-1.8284202176923479e+00
-8.5544668231164227e+00
--4.4244571007150327e+01
--4.0560745162393879e+00
-1.1681425320644767e+01
--4.8555967980698846e+01
--4.7838486846701809e+00
--7.7019835664471028e+00
--2.1943900872785200e+01
--5.3866762955461356e+00
--6.8908423821755926e+00
--2.3099808841739858e+01
-9.6382852208021870e+00
--6.3370560853906257e+00
--2.3677743103891249e+01
-2.5971649741584790e+00
-1.5535590376206578e+01
--5.3825250975124078e+01
--1.3630559169155262e+01
--7.3951475516669181e+00
--2.2401553767477481e+01
--6.8000385293029373e+00
-6.2066142807315849e-01
--3.0148538929131576e+01
-9.5236009195980262e+00
-1.1091269608220138e+01
--4.7781570285876462e+01
--4.7344992629321085e+00
-1.2295697000353091e+01
--4.9410926130207848e+01
--1.4498625394207759e+01
-4.5874034760682445e+00
--3.9155700996166480e+01
--1.2843611314016504e+01
--8.5509736970198631e+00
--2.0749765752035813e+01
-1.3446495910363513e+01
-8.0831258858920674e-01
--3.2459444633552771e+01
-6.7681048629284479e+00
-8.3003663082591235e+00
--4.3854215422716344e+01
-1.3069757012725780e+01
--5.0363479878295543e+00
--2.5209000730144531e+01
-3.3824258276662542e+00
-2.3529379279874418e+00
--2.1382372932098885e+01
--1.3306056855352304e+01
-4.8977733391649450e+00
--3.9308415451196389e+01
--6.0586681475410398e+00
-6.7866557248415358e+00
--4.1920407037620400e+01
-9.1056998579691477e+00
--6.4996164845488336e+00
--2.3569660085850344e+01
--1.8552574466612781e+00
--7.6850048963801569e+00
--2.2074076308814728e+01
-1.3379560184408026e+01
-1.1244126528381875e+00
--3.2224235121439506e+01
-9.4246663768867869e+00
-7.5000996327204854e+00
--4.2821550104825796e+01
-1.2481012701969259e+01
--5.3416012343140133e+00
--2.5048147313879330e+01
-9.5660191447981209e+00
-8.2641904147191028e+00
--4.3704751152402025e+01
-7.9314403364356316e+00
-1.1943642849440547e+01
--4.8680982882457386e+01
--5.2029707582547466e+00
-5.9241034239470949e+00
--4.0540520916674588e+01
--2.7068404702764468e+00
--7.6347385184873087e+00
--2.2096028537655371e+01
--4.0482799563841674e+00
-1.2334488226819214e+01
--4.9562728486048016e+01
--8.9786612850142582e+00
--4.9167181015750359e+00
--2.5982122135100347e+01
-9.4624675808384371e+00
-8.5378309655934093e+00
--4.4187176761792067e+01
-7.9015763773346430e+00
-9.9633184996436874e+00
--4.6314368715191449e+01
--4.1757224240266320e+00
--6.3054274464935309e+00
--2.3852267208954430e+01
--1.3967673619399715e+01
--6.8924564829906636e+00
--2.3099561418138201e+01
--1.4991658630409598e+01
--7.0283317805620920e+00
--2.2919841282690960e+01
-1.5075361756110460e+01
-2.2372860901238916e+01
--5.8612444932086447e+01
-1.3764793598050129e+01
--4.9164762117768590e-01
--3.1548340372663109e+01
-6.9562341363088622e+00
-5.3825419232242622e-01
--2.4175968406361129e+01
-1.0995265341376708e+01
--5.5818116604650498e+00
--2.4760262428579573e+01
--4.6558797540708312e+00
--6.8049038175690146e+00
--2.3227536882509835e+01
--3.9716509035963128e+00
-8.7911452491790012e+00
--4.4718039458430773e+01
-9.3406904929546961e+00
--5.9994009254260208e+00
--2.4228451762509557e+01
-1.3152075821157110e+01
-1.1707112441104467e+01
--4.8575166500603011e+01
--5.0323071406604596e+00
-1.2059382872246736e+01
--4.9107752780572994e+01
--1.6010792914255592e+01
--4.5930888185947003e+00
--2.6459987390638293e+01
-1.4286972949246406e+01
-5.8543370586028285e+00
--3.9919590572571579e+01
-1.4499833247722266e+01
--1.6987272996796725e+00
--3.0018893759708153e+01
-1.4145974071568999e+01
-1.5859892318652692e+01
--5.3981624295275921e+01
--4.0586760447717278e+00
-1.1893721122481910e+01
--4.8868283186718806e+01
--3.7443123883814433e+00
--5.4249783627043033e+00
--2.4169079315892684e+01
--8.5228870617491861e+00
-2.1116172681240708e+00
--3.5578385903460649e+01
-8.6395369872070678e+00
-1.2119402457497948e+01
--4.9242769086779681e+01
--4.3465389217528969e+00
--7.2903346591587708e+00
--2.2567234988711458e+01
-7.6286718559604569e+00
-1.3592009868149701e+01
--5.1087290276705112e+01
--5.3716275799303910e+00
-4.6069452403399076e+00
--3.8931271759841273e+01
--2.8299950078960321e+00
-7.5932505883051507e+00
--4.2858946365199223e+01
-1.1351542349593402e+01
-2.3697944674424800e+01
--5.2532383765091048e+01
-6.9852806250877713e+00
-8.1935883598743828e+00
--4.3657233367871825e+01
-1.0858220747150080e+01
-2.1658841177747558e+01
--5.4877620299152539e+01
--5.4456452740470898e+00
--7.0541114830340357e+00
--2.2911487622473850e+01
-3.1465322040934245e+00
--8.2432402152829045e+00
--2.1185903778100140e+01
--1.2958492641413570e+00
--2.0809060810174111e+00
--2.0825806151776110e+01
--8.6667534436562423e+00
-3.3559384971857682e+00
--3.7287099303088873e+01
-3.4068527856651691e+00
-1.6826402002774653e+01
--5.3663042283860030e+01
-1.0235708956441625e+01
--3.4602864693436044e+00
--2.7941434039590831e+01
-1.6200191213883414e+01
-1.9814592750535631e+01
--5.9972652917893711e+01
-3.3174141079362727e+00
-1.5416575606482159e+01
--5.3842679590769926e+01
--1.0328005620090904e+01
-1.1125839269293625e+01
--4.4272868871098893e+01
-1.0728652051919033e+01
--6.0243534548071453e+00
--2.4168633273113748e+01
-1.3973059689112301e+01
-7.2446018174739377e+00
--3.9060246490131796e+01
--7.1197089645683258e+00
--3.5202239975587637e+00
--2.7723633939791199e+01
--4.2986303959420944e+00
-8.9192174709227370e+00
--4.4836434797588026e+01
-1.2977446782073251e+01
--5.5217096876278129e+00
--2.4521138853577529e+01
--7.6996083007878298e+00
-1.8704286150858502e+00
--3.5290443048897743e+01
-1.6395086606069880e+00
-9.6013821140546085e+00
--4.5831953796273105e+01
-4.6239314974335430e+00
-1.8985451780494781e+01
--5.1569941071679516e+01
--1.4889748307013690e+01
-9.8763527181592359e+00
--4.4756043761607707e+01
-1.3603749680626008e+01
-8.2584684364779903e+00
--3.9374201185521819e+01
-1.3953116407756765e+01
-7.5437818203297882e+00
--3.8777730651693226e+01
-1.2546459881904267e+01
-2.1650488218916720e+01
--5.7732502587260228e+01
--2.2044683853508729e+01
-7.9967399861249095e+00
--4.4177367500734128e+01
-9.2831493207557454e+00
-1.2023549538676345e+01
--4.9018318079790482e+01
-1.1128414059398230e+01
--5.4580389647711804e+00
--2.4888157370750989e+01
--8.2947237552835311e+00
-6.7330076035227622e+00
--4.1863210575990266e+01
--1.3162678424605868e+01
-4.0599559294392895e+00
--3.8189287357363611e+01
-1.2481012701969259e+01
--5.3416012343140133e+00
--2.5048147313879330e+01
-8.4660087969701614e+00
-6.3708861497949636e+00
--4.1162821130930027e+01
-8.2912556249137417e+00
-9.8472184051517928e+00
--4.6053482093403105e+01
--1.1585120325788230e+01
-1.0160607054797699e+01
--4.3801050301823629e+01
--1.6416236901202865e+01
-1.1976470066925013e+00
--3.4541430863361292e+01
-1.4717604917371608e+01
-1.1952809795061588e+01
--4.8606733205672079e+01
-1.2064299397589320e+01
--4.1687941872887535e+00
--2.6793775767510159e+01
--5.6022157357390725e+00
-7.8537876088147787e+00
--4.3458264021692543e+01
--1.0003463294906894e+01
-1.0848067471132376e+01
--4.4488758161721762e+01
-9.6158933423718000e+00
-1.4527495623081801e+01
--5.2208441144747901e+01
-1.7057627061558652e+01
-1.5993462064127135e+01
--5.4513658253998898e+01
--8.7113852350079313e+00
-1.6848991336760031e+00
--3.4909320668345622e+01
-7.0911435527003626e+00
-1.0507163325912943e+01
--4.6908073872382637e+01
-9.6242092713039344e+00
--6.5399571844313114e+00
--2.3349764204439797e+01
--3.1746020005734672e+00
--7.9322465885192974e+00
--2.1633237668260904e+01
--3.3961823339642505e+00
--7.9386608184346947e+00
--2.1631890413090126e+01
--7.1627871488697483e+00
--7.3226483831198932e+00
--2.2456043978703750e+01
--1.3776852905296810e+01
-1.2538974231905751e+01
--4.0224607599621010e+01
-9.5809579766394553e+00
--5.3258603516095668e+00
--2.5244618649620644e+01
--7.5863787795868518e+00
--7.0427619123064051e+00
--2.2868940723325526e+01
--1.3104902357182098e+01
--8.4553739082326818e+00
--2.0926160586764592e+01
--3.5006941775961535e+00
-8.7760330087472411e+00
--4.4689043769905702e+01
-5.2504681068782446e+00
--7.8399979262994153e+00
--2.1783547992118390e+01
-9.1746827504872819e+00
--5.8825471620613881e+00
--2.4426147927505518e+01
-9.8734394283007685e+00
--6.4527510722265937e+00
--2.3516947009894832e+01
--1.5405851776667792e+01
-4.6132466975803572e+00
--3.9060968348228975e+01
-1.2212860553927525e+01
-6.4778662498457820e+00
--2.9643633908279320e+01
-7.1979992778263897e+00
-9.4640821169796698e+00
--4.5609931043903472e+01
-2.2228602231513364e+00
-1.8294603769638918e+01
--5.0538455576219079e+01
--7.5349146315005520e+00
-1.5143240646161393e+00
--3.4497743846917857e+01
-4.2943946096316106e+00
-1.8599231769689474e+01
--5.2253822358269936e+01
--1.3199655515992202e+01
--8.2145341992107195e+00
--2.1358157743271011e+01
-1.2261789375731270e+01
-1.6067154096779873e+01
--5.4437604358761476e+01
--1.5570978064340277e+00
-9.1014774741324960e+00
--4.5038223191035165e+01
-9.2034868879064149e+00
--6.5667634775203343e+00
--2.3463798085277425e+01
-1.1239392782896623e+01
--1.8346580461194151e+00
--3.0011588755681924e+01
-9.9216404582362632e+00
-1.1551109899051164e+01
--4.7988006165875063e+01
-7.0475483550355422e+00
-7.9653290789102407e+00
--4.3538132556890339e+01
-1.5753172326968402e+01
-1.4705736598396323e+01
--5.2444436992611102e+01
--4.2451609005592950e+00
--7.0289938276422887e+00
--2.2915282750087531e+01
--4.9938687352044129e+00
--6.5393598512994320e+00
--2.3506463772932975e+01
-7.2118895075521374e+00
-2.5639022129138145e-01
--2.3898069384804902e+01
-6.6725350760511999e+00
-1.0478622217663226e+01
--4.6958301804196942e+01
-1.3677067999767404e+01
-7.8014498891162711e+00
--4.0351904099423521e+01
--1.7441866992145345e+00
-4.2283287042824416e+00
--2.8935767070349975e+01
-1.2748888920380898e+01
--5.2219215821887364e+00
--2.4921367877531861e+01
-1.7903382210427498e+01
-1.9693987423961218e+01
--5.9367848211315518e+01
--1.8703305440774245e+00
-8.7675904178570043e+00
--4.4647711174982781e+01
--9.4610256039518639e+00
-2.8942735558905803e+00
--3.6515597791454624e+01
--1.2309545663376426e+01
-8.8026857355894492e+00
--4.4743020879024336e+01
-2.1700513357699253e-02
-2.6838592228114999e+00
--2.1835182079217677e+01
-7.0166037411290496e+00
-8.3352316814351006e+00
--4.4147127446374164e+01
-9.6599137858225568e+00
--4.6075968287530387e+00
--2.6173906420544533e+01
-4.8708249459468611e+00
-1.9183202664486902e+01
--5.1656677474035590e+01
-1.1226342110290352e+01
-2.3026919632379144e+01
--5.3633683961158809e+01
-1.3523852146794976e+01
-7.8023674957461804e+00
--4.0886956441146801e+01
-1.3763412316867370e+01
-6.9861595912751850e+00
--4.0342684228192546e+01
--1.5737384768890967e+00
-9.2523036581446760e+00
--4.5084746626863982e+01
-1.0126403502585179e+01
--5.4947045413275450e+00
--2.4964672767299817e+01
--7.0524910373274530e+00
--3.6824692016622009e+00
--2.7546393265880528e+01
--7.4094097741776315e+00
--5.7710400156151982e+00
--2.4741694287508661e+01
--2.3405098196406623e+01
-1.1012388261093908e+00
--3.4439995763637533e+01
-1.3189347280544222e+01
--5.4032012407324599e+00
--2.4629799475967378e+01
-1.4305272099615827e+01
-5.9392134053246934e+00
--3.9727379871149417e+01
-8.2804227500359087e+00
--6.4814556811183106e+00
--2.3733563802180207e+01
--1.6831576231205421e+01
-2.5057179242870333e+00
--3.6235961695418823e+01
-8.4917691514507148e+00
--7.0199814974687422e+00
--2.2824446268347870e+01
-8.8461588586594573e+00
-2.1639366361498290e+01
--5.2744295285077165e+01
--1.3984491611902651e+01
--6.4685957554075841e+00
--2.3806566065510808e+01
--4.5133230187112217e+00
-8.1852042350639014e+00
--4.3808980564713508e+01
-2.9126364708598076e+00
--6.3128765747461415e+00
--2.1968947899497174e+01
--5.8026151073345620e+00
--4.7445345833246071e+00
--2.6101197099645852e+01
-1.4188594043378952e+01
-1.4614892234598303e+01
--5.2516848874118956e+01
-1.2945386375649186e+01
-2.8483755098247932e-01
--3.2946443679718719e+01
-8.7960609940734606e+00
--6.2741757743550384e+00
--2.3932274995029413e+01
-1.3221239035140682e+00
--2.6981834386721544e+00
--1.9994429921483846e+01
--1.3808157668671036e+01
--7.2815479657654221e+00
--2.2610292164818965e+01
--2.1068588457514362e+01
-1.8099361135846623e+00
--3.5323409155723390e+01
--8.2947237552835311e+00
-6.7330076035227622e+00
--4.1863210575990266e+01
--1.1236309770674449e+01
--8.3173331882635573e+00
--2.0951639301568175e+01
--6.6666656882494149e+00
--4.0067609226464240e+00
--2.7148755607947162e+01
--7.0378677111720451e+00
--1.7822444841680520e+00
--3.0185669353712548e+01
-5.6896795959591140e+00
--6.2184597606350112e+00
--2.3171247227371548e+01
--4.8018278844689322e+00
-6.0273121030204946e+00
--4.1019318651553263e+01
-9.7808158015128583e+00
--4.5826942792246381e+00
--2.6218412180603057e+01
--5.0788857363216104e+00
-4.7054397394642580e+00
--3.9131412316848831e+01
-3.5006165482418847e+00
--8.1306750252505626e+00
--2.1452412313899494e+01
--1.5233880112071192e+01
-9.9002721507875950e+00
--4.4605623387434697e+01
-1.2563451251723537e+01
-7.1251073543053440e+00
--4.2119252361023598e+01
-1.4640797745768197e+01
-1.7043006072182692e+01
--5.5305318262324882e+01
-6.0645771886727156e+00
-8.1441229112481199e+00
--4.3939319629966015e+01
--1.1669019770305841e+01
--7.8601532587989000e+00
--2.1710580043994561e+01
-3.3428840233248334e+00
-1.5681812338372941e+01
--5.4015313785937373e+01
-6.5513787798103644e+00
-9.3045319497656358e+00
--4.5524973941232965e+01
--1.3702056821924865e+01
--7.6204124883782942e+00
--2.2143461630046815e+01
-1.3627574108755333e+01
-7.8110272868672723e+00
--3.8049053080751783e+01
-1.6221015134561605e+00
-8.6868712155720633e+00
--4.4345685250182378e+01
-1.6467146624912136e+01
-1.7232399476267027e+01
--5.6053540522905521e+01
--4.7633518135855422e+00
--8.3808514631415587e+00
--2.1158007555417861e+01
-1.2875586037740469e+01
--5.7610900295954677e+00
--2.4225242804445511e+01
--1.5248193735514278e+01
-1.0189066256213811e+01
--4.4173382894997495e+01
-6.4308864813429185e+00
--7.3348697283168844e+00
--2.2465797420579573e+01
-6.8419763810844900e+00
--5.9676633637959065e-01
--2.2813695620596835e+01
-1.1443838266990985e+01
--1.3402256980484313e+00
--3.0714366688294501e+01
--4.6698987115475763e+00
--7.6299408653172422e+00
--2.2068440649921779e+01
--3.3666666062794062e+00
--8.3548363874336999e+00
--2.1105677616157152e+01
--2.4427775717423139e+00
--7.7256887553275657e+00
--2.2078210954414413e+01
-1.3276183074244726e+01
--5.1052224666314023e+00
--2.5296045075859759e+01
-3.0265898471809396e+00
--8.2967194310868777e+00
--2.1534625106648036e+01
-1.2249195619893634e+01
--5.3953739043230087e+00
--2.4889907338297043e+01
-1.0444919534656790e+01
--6.6175031077753754e+00
--2.3194752561207419e+01
--2.8612166606374720e+00
--8.1099624406295518e+00
--2.1433940439701420e+01
--2.9561291051197420e+00
--7.9420030381200473e+00
--2.1638766637603545e+01
-2.6697996007942888e+00
-1.4382763561949467e+01
--5.2250202755338123e+01
-2.6697996007942888e+00
-1.4382763561949467e+01
--5.2250202755338123e+01
-1.2821532149129274e+01
--5.9856084857251544e+00
--2.3855726417279953e+01
-1.0175920166575963e+01
--4.8744548345078087e+00
--2.5747424271096477e+01
--5.5651509822376264e+00
--6.4413643381534795e+00
--2.3752560939345305e+01
--5.1308414779525551e+00
-4.8199874999054693e+00
--3.9181764466777224e+01
-3.3844229770627248e+00
--8.0720167915826373e+00
--2.1489427600159903e+01
-1.3604395562837881e+01
-2.3717494745481044e+01
--5.4947852121109385e+01
-9.3794029590394050e+00
--5.9084217120687272e+00
--2.4396584120228020e+01
-2.1859299279305668e+00
--8.5136235176406085e+00
--2.0939641890031869e+01
--5.1022178758728973e+00
--6.6910833344724008e+00
--2.3374806032272197e+01
-9.5980494037261153e+00
--5.7948017843901516e+00
--2.4507379586202951e+01
-9.1155913292843369e+00
--6.3257308297010617e+00
--2.3878849446503462e+01
--3.4159836448197320e+00
-7.0935037102616549e+00
--4.2474399889599930e+01
-9.7042006158698957e+00
--5.8611984948375895e+00
--2.4498453955058604e+01
-2.1836846938270725e+01
-2.7331854910504990e+01
--5.8653686999438804e+01
--1.3472832944519158e+01
-1.5990363341613801e+01
--3.4053754121031979e+01
--1.3472832944519158e+01
-1.5990363341613801e+01
--3.4053754121031979e+01
--3.3570378880080822e+00
-1.9507421584565126e+01
--4.2354004531320157e+01
-1.6150065083020444e+01
-2.6186978077609993e+01
--5.6592044027824961e+01
-2.2808375388402073e+01
-3.1658553349885057e+01
--6.8949254719872641e+01
--1.0723074521813247e+01
-1.7194333845488732e+01
--3.6778410514499932e+01
-1.4486433109280188e+01
-2.7476124549417673e+01
--5.9912326030461841e+01
--3.7114332859018910e+00
-1.9424048322084641e+01
--4.2137508029638788e+01
--1.6024631107347712e+01
-1.6036579390742833e+01
--3.3861072958521802e+01
-2.0427701457860081e+01
-2.7597639457024918e+01
--5.9911136003698694e+01
--1.4706305097186540e+01
-1.6357754709964340e+01
--3.4724452033787500e+01
--1.2946207298673382e+01
-1.6433019020643727e+01
--3.5182335918326622e+01
--4.8158851538652989e+00
-1.9054719917839353e+01
--4.1403002410956177e+01
-1.8071121531464456e+01
-2.5716375509167065e+01
--5.6045944633800744e+01
--3.6215983806827103e+00
-1.9362664330477052e+01
--4.2294807138382865e+01
--3.6215983806827103e+00
-1.9362664330477052e+01
--4.2294807138382865e+01
-1.3980820234059554e+01
-1.4644400972543437e+01
--3.0856428086575928e+01
-1.3980820234059554e+01
-1.4644400972543437e+01
--3.0856428086575928e+01
--6.8501505304064390e+00
-1.8354500778284844e+01
--4.0109494733223883e+01
--3.9017412416078683e+00
-1.9214343925396747e+01
--4.2525048741437423e+01
--1.3829398244709658e+01
-1.5759241105583003e+01
--3.4186684251181390e+01
--9.3814650470293230e+00
-1.7563110228167996e+01
--3.8159477260041179e+01
--9.3814650470293230e+00
-1.7563110228167996e+01
--3.8159477260041179e+01
--7.4600126028073577e+00
-1.7954545507087062e+01
--3.9207958454752294e+01
-1.6054283946723469e+01
-2.6620172598724306e+01
--5.8639865285688501e+01
-1.8205158713450032e+01
-2.5659622505731928e+01
--5.6266962748173114e+01
-1.3177824414274802e+01
-1.4673310660163763e+01
--3.1359366000854063e+01
-5.5205537737262915e+00
-2.2433533382691849e+01
--5.0124092199663949e+01
-1.2644202737966316e+01
-2.5927879669664435e+01
--5.7641758327821407e+01
-1.4860822505465237e+01
-2.4728925842278411e+01
--5.4638000224190648e+01
-6.9130982756782302e+00
-2.2541409125010350e+01
--5.0004534168996869e+01
--1.2854675472336906e+01
-1.6260763174115027e+01
--3.5468745746948890e+01
-1.7515974899817159e+01
-2.8390282998755922e+01
--6.3453386263407630e+01
-1.3812743451048870e+01
-1.4990470159105241e+01
--3.2060315270862567e+01
-2.2649876375983084e+01
-3.1285711388382840e+01
--7.0328792921309486e+01
-1.3351476110552914e+01
-1.5300982635933183e+01
--3.3165661254532225e+01
-1.3379922102664475e+01
-1.5331425057466387e+01
--3.3233178266048007e+01
--1.0483967465751569e+01
-1.7162480872380552e+01
--3.7717544368582367e+01
-1.4032257087246872e+01
-1.4737050332594420e+01
--3.1570899418871711e+01
--1.0638259484305879e+01
-1.6845139923305588e+01
--3.7157454398618057e+01
--3.8098705593717441e+00
-1.8997956997479644e+01
--4.2779142950937725e+01
--1.3232785670725130e+01
-1.6428431679271810e+01
--3.5934905977114433e+01
--1.2972728492353912e+01
-1.6094558360800171e+01
--3.5289672302474422e+01
--1.0553834397850633e+01
-1.7039818959207523e+01
--3.7825591168391277e+01
-1.9077624035112353e+00
-2.0788524576186340e+01
--4.6607453904911544e+01
-1.2510472128792832e+01
-1.5439101661787861e+01
--3.3537583952438467e+01
--1.3347504124349332e+01
-1.6241608957721837e+01
--3.5619316962194148e+01
--1.1013166779652984e+01
-1.6942863829046676e+01
--3.7440973293844287e+01
--9.4799395498234418e+00
-1.7063987884924277e+01
--3.8023509507547999e+01
--9.3873350514301936e+00
-1.7018078073068310e+01
--3.8204298268311355e+01
-1.3707046813847239e+01
-1.3885914569680018e+01
--3.0053904021164861e+01
-1.8854798676375296e+01
-2.6013226562450665e+01
--5.8408768101602227e+01
--1.2830732842716737e+01
-1.5815708263171786e+01
--3.5113244113614861e+01
-2.5915286705699291e+01
-3.2777207043600562e+01
--7.4039244443832388e+01
--4.7103612091891609e+00
-1.8680708978226999e+01
--4.1932703468632269e+01
-2.7624352000114034e+00
-2.0948121462133280e+01
--4.7112898770846307e+01
-1.2006110368645565e+01
-2.3741364763690147e+01
--5.3352802579213041e+01
-1.2006110368645565e+01
-2.3741364763690147e+01
--5.3352802579213041e+01
-2.1511534646876132e+01
-3.0275024288280711e+01
--6.8417830168663357e+01
--1.3476561126773827e+01
-1.5922868310584754e+01
--3.5563552790720827e+01
-1.3542479863551662e+01
-1.4674088425431798e+01
--3.1756056191085740e+01
-3.7134204026095134e+00
-2.1111518538142523e+01
--4.7759819214495131e+01
-9.3590807826261955e+00
-2.4117524844046297e+01
--5.4606699794873286e+01
--1.3323294877605818e+01
-1.6250122834825991e+01
--3.6434342956971115e+01
-1.3547577340902627e+01
-1.4672892978306274e+01
--3.1921947603320085e+01
-1.3547577340902627e+01
-1.4672892978306274e+01
--3.1921947603320085e+01
-5.7134493301354077e+00
-2.2384005600080883e+01
--5.0886499897189410e+01
--1.1637458515370152e+01
-1.6196678885111325e+01
--3.6336526622823271e+01
--1.0684425751791757e+01
-1.7077009779579186e+01
--3.8327326480635683e+01
--1.0578191182069148e+01
-1.6702849238098572e+01
--3.7405148964570209e+01
--9.0229568937170264e+00
-1.7408822038314060e+01
--3.9041217965070885e+01
--6.7666321851872215e+00
-1.7813242374008240e+01
--4.0484578394276312e+01
-1.2687678213049482e+01
-2.3747717082125995e+01
--5.3760152975697473e+01
-1.3562676570039432e+01
-1.3853584373241786e+01
--3.0240332072768496e+01
--1.0869271727128378e+01
-1.6757814199077352e+01
--3.7723875326364862e+01
--1.0869195251838731e+01
-1.6792438129651295e+01
--3.7828532153235216e+01
-1.9774498373542340e+00
-2.0485740193556303e+01
--4.6357989081332711e+01
-2.5533024863326613e+01
-3.2326908708286638e+01
--7.3723378697992359e+01
--9.2474142466186287e+00
-1.7201936955709392e+01
--3.8725458440370637e+01
-5.4163659295074709e+00
-2.1436432824022962e+01
--4.8897261100673738e+01
--5.6324501068554351e+00
-1.8230744068272863e+01
--4.1420943251756704e+01
-1.7821863523028976e+00
-2.0486871885666204e+01
--4.6480220387398575e+01
--1.3966318420619087e+01
-1.6099968755729108e+01
--3.5900029242097006e+01
-2.0166281079234036e+01
-2.7587963455463278e+01
--6.2739349552542109e+01
-1.3497284390160758e+01
-1.4084103846501250e+01
--3.0987737676019279e+01
--1.1062102236456713e+01
-1.6460569348459810e+01
--3.7642505422060594e+01
--8.9931955693896377e+00
-1.6994992090858691e+01
--3.8970228282400925e+01
-1.6526622139827147e+01
-2.7343980570872642e+01
--6.2958462329803282e+01
--1.4165814016778370e+01
-1.5527009461042351e+01
--3.4956276216909913e+01
--8.9056224739877052e+00
-1.7127775730207848e+01
--3.9187546350870264e+01
-1.3510489844214124e+01
-1.5013939864514285e+01
--3.3386711321887311e+01
--1.5307560114090778e+01
-1.5607981995195932e+01
--3.4947698704720224e+01
--9.0444192702337052e+00
-1.6831313709840348e+01
--3.8884264837444867e+01
--1.2511144168505046e+01
-1.6041708765000589e+01
--3.6304912566734657e+01
-1.3904452104933499e+01
-1.4471356226613707e+01
--3.2158372992483187e+01
--9.5920880532254564e+00
-1.7087202133601803e+01
--3.9436519366839448e+01
--9.4321654630680722e+00
-1.7436273577030690e+01
--4.0608884238957998e+01
-1.3567840975874169e+01
-1.3799587586894653e+01
--3.0700714562106384e+01
--1.2644001563516715e+01
-1.5975688122950848e+01
--3.6226708308435647e+01
--1.1767357369302948e+01
-1.5902680491566370e+01
--3.6464626880401845e+01
-1.1730662693967860e+01
-2.3229960893367995e+01
--5.3928001187831235e+01
--7.0548480959432505e+00
-1.7455388515069178e+01
--4.0559422693920055e+01
--7.0025149393661943e+00
-1.7322069280542298e+01
--4.0360371630610551e+01
-1.3963453605091816e+01
-1.3814808885771676e+01
--3.0744991659988518e+01
-1.8180327900639160e+01
-2.5995351953916078e+01
--6.0568491311297244e+01
-1.5136502819207776e+01
-2.6353725546000728e+01
--6.1886779452499731e+01
-1.3906445652474906e+01
-2.3768853242446998e+01
--5.5472869775036315e+01
--1.0409259407179642e+01
-1.6785056944339949e+01
--3.9139780761679873e+01
-1.6952364929541517e+01
-2.7197903082253248e+01
--6.3963541549036051e+01
--1.8613756320021267e+01
-1.6251338494153039e+01
--3.7000330134575137e+01
--1.6821977568434654e+01
-1.5496234941619626e+01
--3.5127384827333344e+01
--1.6583474122017073e+01
-1.5144167437296884e+01
--3.4381042745483946e+01
--1.2904033346881128e+01
-1.5861165742981578e+01
--3.6493314127183545e+01
-1.4591124693563655e+01
-2.6024017929538655e+01
--6.1282011832087164e+01
-2.4519313820453338e+01
-3.1131498122313126e+01
--7.3271779009096718e+01
-1.3524426508309794e+01
-1.3667724631144052e+01
--3.0887950375694075e+01
--1.1789938751869254e+01
-1.6141302787461310e+01
--3.7581493633828096e+01
--6.7613393373339994e+00
-1.7452935440837440e+01
--4.1070398177019086e+01
--9.2091022207223094e+00
-1.6699636265576729e+01
--3.9689779331748738e+01
-1.0559898867935285e+01
-2.3906996237099083e+01
--5.6459861588161615e+01
--4.7927220622212019e+00
-1.7963600461991660e+01
--4.2176741364757504e+01
-1.3758510108690729e+01
-1.3321573677527931e+01
--3.0223255602961984e+01
--9.6096413394865916e+00
-1.6481551831605962e+01
--3.9017633662074360e+01
-8.4183755569015195e-01
-1.9808610566863496e+01
--4.7031436068699492e+01
-1.4553209914727288e+01
-1.4055425564779419e+01
--3.1917107224579187e+01
--1.4864416127130491e+01
-1.5480010910620937e+01
--3.5651806318376323e+01
--1.0898814064952431e+01
-1.5826385525857654e+01
--3.7758657459744029e+01
--1.2736570147741483e+01
-1.5633620107747223e+01
--3.6802996016351628e+01
-1.6870092329366191e+01
-2.4333393557618191e+01
--5.7728105269860286e+01
-8.2518585356387302e+00
-2.2673793221365692e+01
--5.4003611551147387e+01
-1.2447679979797728e+01
-1.1332746769557525e+01
--2.5424871952407099e+01
--9.1590384784405661e+00
-1.6440902860469549e+01
--3.9300349200540673e+01
--6.6902642792288001e+00
-1.7073842038024033e+01
--4.1082694812479737e+01
--1.6607221433551445e+01
-1.5273452616088944e+01
--3.5148709905006541e+01
--1.5344916563426617e+01
-1.5264053597092632e+01
--3.5323725705378628e+01
--1.4531319647331271e+01
-1.5381073508429623e+01
--3.5617476585978928e+01
--4.0999483812453308e+00
-1.8132761365879684e+01
--4.3465291540637118e+01
--4.0999483812453308e+00
-1.8132761365879684e+01
--4.3465291540637118e+01
-1.9989706874789672e+01
-2.8458186822504459e+01
--6.8008862922849914e+01
-5.8727124056893887e+00
-2.1175272102775896e+01
--5.0552087248781298e+01
-7.3715443284273352e+00
-2.1467614144855528e+01
--5.1136849573255866e+01
--6.6205799234088003e+00
-1.7731760655060715e+01
--4.2680673010410544e+01
-6.1272987911341241e+00
-2.2672491971474717e+01
--5.4497592291655472e+01
--2.6816428711972026e+01
-2.1505628731774841e+01
--5.0645445198793489e+01
--5.5890357590610540e-01
-1.9229872767101575e+01
--4.6035812231231247e+01
-1.8434311371151797e+01
-2.6308214748416319e+01
--6.2918879241016782e+01
--9.4346646701665975e+00
-1.6383231663650747e+01
--3.9413030751478281e+01
--9.5627457680087193e+00
-1.6647715478552765e+01
--3.9824165294999119e+01
--6.9404163617025878e+00
-1.7013043091827676e+01
--4.1056571636144859e+01
-2.1089492084327027e+01
-2.6609726613173834e+01
--6.3896038784113053e+01
--9.9005489927869341e+00
-1.6363967861451460e+01
--3.8799819261311299e+01
--3.3364830207830898e+00
-1.8236347155259292e+01
--4.4218528962068476e+01
--3.3727909080405198e+00
-1.8313533540764325e+01
--4.4156313214800768e+01
--3.3364830207830898e+00
-1.8236347155259292e+01
--4.4218528962068476e+01
--1.4896569908110106e+01
-1.5270591478038776e+01
--3.5713193689730765e+01
-1.4211475904276726e+01
-1.3359882778194944e+01
--3.0840774094026848e+01
-1.4241832372816351e+01
-1.3161163179163205e+01
--3.0287252884303726e+01
-1.2951390199625253e+01
-1.0707498159610095e+01
--2.4273829916177693e+01
--1.2697379023086741e+01
-1.5869164568274105e+01
--3.7558037245076726e+01
--7.1682517403268982e+00
-1.7255565430819779e+01
--4.2190110111478972e+01
-3.1530627415563806e+00
-2.0079227107830960e+01
--4.8530709442929663e+01
-1.8386921023682234e+01
-2.6017313024063142e+01
--6.2873849510791331e+01
--1.5773978762371319e+01
-1.5938866664874883e+01
--3.8108497226899750e+01
-1.4242039875928423e+01
-1.3248025961949477e+01
--3.0789902518557295e+01
--6.8462278198402213e+00
-1.6991921303297474e+01
--4.1342766389158363e+01
-1.4704068908448265e+01
-1.3507941839296503e+01
--3.1381836139860983e+01
-1.2996922582764073e+01
-1.0688889772011441e+01
--2.4352477789873411e+01
--9.5245932419772075e+00
-1.6211642886323553e+01
--3.9070475131741020e+01
--9.4142735042324865e+00
-1.6122334366706873e+01
--3.9323009657682441e+01
-9.4363981803577812e-01
-1.9492846368819468e+01
--4.7509771976353143e+01
-1.2370900012956906e+01
-1.1350541069515884e+01
--2.5868795968901253e+01
-7.5362397716461194e-01
-1.9405416569113459e+01
--4.7396241592735677e+01
--1.4505324945310949e+01
-1.5044199533500402e+01
--3.6283493380865551e+01
--1.1567054407369811e+01
-1.5555675408415055e+01
--3.8163876566739830e+01
--9.3344775927390806e+00
-1.6256083537472406e+01
--3.9922748523039566e+01
-3.2831833899093171e-01
-1.9135179003068547e+01
--4.7041633019753952e+01
-2.0671476545852102e-01
-1.9105990950005062e+01
--4.6895384354329281e+01
-2.6530829092228898e+00
-1.9703373070834200e+01
--4.8440295890314921e+01
-2.6347534538419688e+00
-1.9966508985943889e+01
--4.9238744772784642e+01
-2.3923266321474790e+00
-1.9502935884573315e+01
--4.8157892682422158e+01
--5.2096667978937168e+00
-1.7263131204255782e+01
--4.2774136580671680e+01
--5.2096667978937168e+00
-1.7263131204255782e+01
--4.2774136580671680e+01
--1.5460850798834494e+01
-1.4969499325687647e+01
--3.5967208380410398e+01
-3.6302891457073377e-01
-1.9503013775226787e+01
--4.8503880244636193e+01
-2.6560622917846852e+00
-1.9787616037589792e+01
--4.8877824060891022e+01
--9.5020272673347623e+00
-1.5910758965188537e+01
--3.9674446671220359e+01
-2.3857776504293726e+00
-1.9428812980573621e+01
--4.8226022757209734e+01
-1.2070611803829310e+01
-1.1104750238480875e+01
--2.5774839553386112e+01
--3.4323327691987564e+00
-1.7907559691231949e+01
--4.4336311441359740e+01
--9.9408544511480468e+00
-1.5862878329407735e+01
--3.9416466823383409e+01
-1.6550594229298137e+00
-1.9225743477418423e+01
--4.7785638802529483e+01
-2.5874097418025670e+00
-1.9523937116451627e+01
--4.8961312359272014e+01
-1.4143307231491308e+01
-1.2848780788817264e+01
--3.0581830904148298e+01
-1.3432810821157481e+01
-1.3395252374731701e+01
--3.2371420479610983e+01
-2.1953620333711386e+00
-1.9372392113203119e+01
--4.8567410735206316e+01
-4.0780763177992121e+00
-2.0318936691192462e+01
--5.1309579526419370e+01
-2.7296670413203895e+01
-3.1394473666941053e+01
--7.8822504022579309e+01
--1.1803368092367057e+01
-1.5381243555240653e+01
--3.8431142731333829e+01
-2.3669958258331580e+00
-2.0121379819819122e+01
--5.1070221119062438e+01
-1.3568338923216036e+01
-1.0866995123304825e+01
--2.5467490271910563e+01
--6.0097233896818212e+00
-1.6819110273559989e+01
--4.2486299614156032e+01
-3.4632264268413850e+00
-1.9919515389967792e+01
--5.0295457781637829e+01
--1.3313756115733060e+00
-1.9082409570628801e+01
--4.8728999158736379e+01
-1.4014069658522434e+01
-1.3603941691295573e+01
--3.2881484455626072e+01
-9.8784567830981040e-01
-1.9200437132368005e+01
--4.8796083825813248e+01
--2.7434932832240605e+01
-2.1496852724321752e+01
--5.3200901206751446e+01
--3.3167838861334107e+00
-1.7609552091248457e+01
--4.4330132598805655e+01
--1.6384210543749615e+00
-1.8431997463016295e+01
--4.6861389129151831e+01
--2.2360215499855447e+00
-1.8672270270726244e+01
--4.7903467829617014e+01
--8.3946834785941826e-01
-1.8405834943851975e+01
--4.6877114289734799e+01
-2.2747299860565229e+00
-1.9364280716543703e+01
--4.9269623541091534e+01
-1.2317805027702384e+01
-1.0635356309656302e+01
--2.5247675538275196e+01
-1.3138255304730047e+01
-1.0561650600463080e+01
--2.4937684251087866e+01
-1.3273138275420465e+01
-1.4109803071928287e+01
--3.4722366185711586e+01
-1.3189980060492694e+01
-1.0124603842529883e+01
--2.4087635700811177e+01
--2.3144811725591126e+00
-1.7849372457631539e+01
--4.5716405582309513e+01
-2.2867558774680226e+00
-1.9846891761800865e+01
--5.1091718601987544e+01
-1.4700861651974302e+01
-1.3092208586483931e+01
--3.2021684376149985e+01
-1.4700861651974302e+01
-1.3092208586483931e+01
--3.2021684376149985e+01
--2.7441410066652008e+01
-2.0956327223117825e+01
--5.2667076206499061e+01
--6.8673671562299061e+00
-1.6382278368610134e+01
--4.2133108884011840e+01
--1.0199104991237839e+01
-1.5949556362140243e+01
--4.1160396322811557e+01
--9.8292552760410281e+00
-1.5111964877269381e+01
--3.9205417364677494e+01
--6.4576190674542122e+00
-1.6738457730056865e+01
--4.3607418466256071e+01
--6.4576190674542122e+00
-1.6738457730056865e+01
--4.3607418466256071e+01
-1.4209143642642090e+01
-1.0197144436680555e+01
--2.4327182383111339e+01
--1.0924330157730548e+01
-1.5401216457536401e+01
--3.9170664913200618e+01
--1.0856862802804748e+01
-1.5464876725797884e+01
--3.9680274326659351e+01
--3.7919298911405073e+00
-1.7254770573480162e+01
--4.4574845834032608e+01
--1.1829143204260752e+01
-1.5541323020339959e+01
--4.0262396458136919e+01
-1.2154473932364105e+01
-1.0156079384792438e+01
--2.4438161515585428e+01
-1.2792875802741792e+01
-1.0369242964812097e+01
--2.5301577590531998e+01
--1.4524578453881025e+01
-1.3548689564775984e+01
--3.4775338995885122e+01
--1.4524578453881025e+01
-1.3548689564775984e+01
--3.4775338995885122e+01
--9.5538375012633416e+00
-1.5563800266265405e+01
--4.0490151770920164e+01
-1.4162594157413695e+01
-1.0010933039472066e+01
--2.4094039961374175e+01
-1.2905762603996772e+01
-1.0290848807795662e+01
--2.4801647337914254e+01
--2.8134236808703075e+00
-1.7604578013129345e+01
--4.5711100031788099e+01
--1.5632099531502659e+00
-1.7636086716068007e+01
--4.6429357583301801e+01
-1.4421820110248873e+01
-1.2901824331842128e+01
--3.2208744799319817e+01
-1.3383742334079697e+01
-1.0328990145213869e+01
--2.5088233593124926e+01
-1.3025412210419752e+01
-1.4029523725044491e+01
--3.5772078376878461e+01
--5.0105736892429418e+00
-1.6682011645325211e+01
--4.3843580400723383e+01
-1.4939168695664740e+01
-2.3331645980892617e+01
--6.0773066281707891e+01
--1.2234916372117944e+01
-1.4656022015878735e+01
--3.7864054506769889e+01
--1.2234916372117944e+01
-1.4656022015878735e+01
--3.7864054506769889e+01
--9.7780483040844013e-01
-1.8026443934444231e+01
--4.7301495628134738e+01
-1.2327953255576931e+01
-1.0383913188894745e+01
--2.5522321227266481e+01
-1.2903500673321830e+01
-1.0450232423714748e+01
--2.5530365519562835e+01
-1.2903500673321830e+01
-1.0450232423714748e+01
--2.5530365519562835e+01
--2.3266278615056479e+00
-1.7510226362923206e+01
--4.6133863774571630e+01
--2.3119625660374723e+00
-1.7349788900766047e+01
--4.5992103045808001e+01
-1.2724102078634042e+01
-1.0136443267030190e+01
--2.4743807501073992e+01
--3.6177226795943755e+00
-1.6965458509328258e+01
--4.4883201587360979e+01
--2.1535780529138289e+00
-1.7686612554718177e+01
--4.6364717748740695e+01
--2.1721417701946057e+00
-1.7563030981433730e+01
--4.6208576061160386e+01
--8.6958620157993760e-01
-1.7950943563651197e+01
--4.7214605582617956e+01
--1.2506804667495501e+01
-1.4783467718477432e+01
--3.8648376672055136e+01
-1.3576371117636224e+01
-1.3705507125789529e+01
--3.5069755795256697e+01
-1.3870740739052923e+01
-1.3914642562672430e+01
--3.5681174756644282e+01
-5.9263845403128967e-01
-1.8511697772421339e+01
--4.9203831395103478e+01
--1.8548066262046000e+01
-1.4893894152380156e+01
--3.8207017939285556e+01
--1.8548066262046000e+01
-1.4893894152380156e+01
--3.8207017939285556e+01
--3.2350821447290983e+00
-1.7671877608742943e+01
--4.7349753532097047e+01
-1.2865115057741553e+01
-9.9631485288491639e+00
--2.4459510214182764e+01
-1.6080061021955320e+01
-2.2275499466802529e+01
--5.9151717374761901e+01
--1.2922705078959649e+00
-1.7683817772634079e+01
--4.7004808785282613e+01
--2.6824747266366571e+00
-1.7382047590062967e+01
--4.6463898065078247e+01
--1.8020933225174942e+00
-1.7855055245455361e+01
--4.7653124604290149e+01
-1.2748743306427126e+01
-1.0091589352430624e+01
--2.4813373647618747e+01
--1.5279356192168130e+01
-1.4772791116787465e+01
--3.8806434784266919e+01
--2.2355611045395318e+00
-1.7381079682754287e+01
--4.6175244993332484e+01
-1.5497686415719794e+01
-2.2422239985438910e+01
--5.9807493806178414e+01
-1.3949018930307718e+01
-9.1823134286920727e+00
--2.2616320101491418e+01
-5.5681975673470196e+00
-1.9642633762914578e+01
--5.2417889198800971e+01
--3.4818442423785281e+00
-1.6863840564354366e+01
--4.5268303344880970e+01
-1.6323343788970682e+01
-2.4802205020287460e+01
--6.6464800229212074e+01
--1.6166022888120867e+01
-1.5066801783468641e+01
--4.0001296305521763e+01
--1.0105098184899095e+01
-1.4652869612644169e+01
--3.9640972103328870e+01
--2.7591031568287261e+00
-1.7262330098874141e+01
--4.6296877394791899e+01
--1.1812267213500146e+01
-1.4522594253578234e+01
--3.8590768580404742e+01
-5.8161183654504960e+00
-1.9048395634521313e+01
--5.1524551895999316e+01
-1.3119875771385651e+01
-9.7779338037812362e+00
--2.4670105325498351e+01
-1.4397689457780279e+01
-9.5910402318364572e+00
--2.3899482671757518e+01
--1.4761453811568956e+01
-1.4145621440563861e+01
--3.7224315858306980e+01
--1.2946810952428320e+00
-1.8132035084910079e+01
--4.9695963128584701e+01
--1.2839236950324620e+00
-1.7993731151207253e+01
--4.8975297222129527e+01
--9.7767080349498237e+00
-1.5094465013579129e+01
--4.0881091772342806e+01
-1.5173848724858285e+01
-2.1860337606422199e+01
--5.9209286059880732e+01
--8.0728969663124666e+00
-1.5326216195275881e+01
--4.1674946338725491e+01
-1.3203953791923629e+01
-1.0368325052385526e+01
--2.6392486640504451e+01
--1.2094805599390007e+01
-1.4249561608905585e+01
--3.8565570961105941e+01
--1.0891469099220261e+01
-1.4551390706244595e+01
--3.9522568790528737e+01
--1.0600672532987364e+01
-1.4103495005201415e+01
--3.8607264586219301e+01
--1.5751390681057677e+01
-1.4702080226563702e+01
--3.9792275270072174e+01
-1.6068529016051922e+01
-2.4344004811238783e+01
--6.6638618594404576e+01
-1.2814262774370945e+01
-9.8018311403836087e+00
--2.4968423740373773e+01
--5.0737900385429553e+00
-1.6162065513672246e+01
--4.4509797504441558e+01
-1.2795620933333829e+01
-9.6147910716772760e+00
--2.4404266611766872e+01
--7.9907181374826326e+00
-1.5351370284001373e+01
--4.2368374691460069e+01
-1.3808881673392110e+01
-1.2661331108880622e+01
--3.3465230377058383e+01
--1.2476775618995458e+01
-1.4104453903892178e+01
--3.8251302781863316e+01
--1.2476775618995458e+01
-1.4104453903892178e+01
--3.8251302781863316e+01
--7.9454550498539582e+00
-1.5548227455379545e+01
--4.2528966200387785e+01
--8.4728547578140603e+00
-1.5349542295442999e+01
--4.1917233545121618e+01
-1.3056972385623510e+01
-9.6616870109747257e+00
--2.4876540271318248e+01
-1.4801627832728769e+01
-9.3418810457887727e+00
--2.3570640611412788e+01
-8.1812821132693738e+00
-1.9740312622416333e+01
--5.4892063896863959e+01
-1.7522814365327452e+01
-2.4726939951683434e+01
--6.8552155569533440e+01
--1.2631750993883502e+01
-1.4445228169600014e+01
--3.9475669418114521e+01
--3.3365208199610058e-01
-1.7800895067175876e+01
--4.9368468059164343e+01
-1.2823714669832505e+01
-1.0334366650768166e+01
--2.6973673181350410e+01
-1.3788634707877959e+01
-8.5489995501851475e+00
--2.1653407002572010e+01
-1.8347120748761277e+01
-2.5085133076770479e+01
--7.0274834282754298e+01
-1.3160177287864194e+01
-9.6943923083269645e+00
--2.5163303159786537e+01
-8.4301272315643576e+00
-2.0094184769958463e+01
--5.6229844108030001e+01
-1.2455032448782665e+01
-1.0258790279585687e+01
--2.6944609412730543e+01
--1.5809409140790246e+01
-1.3600546178509047e+01
--3.7138175363560741e+01
--9.7010141976521265e+00
-1.4674322533700931e+01
--4.0939039623043186e+01
--9.7010141976521265e+00
-1.4674322533700931e+01
--4.0939039623043186e+01
--8.6330223966834758e+00
-1.4912831114119268e+01
--4.2217805969652659e+01
-1.3306739378726883e+01
-9.9995712097320464e+00
--2.6304971609682461e+01
--2.2720654848127269e+00
-1.6416139471655971e+01
--4.6190447891514033e+01
-1.2726281678408649e+01
-9.9823392231368615e+00
--2.6345793481730045e+01
-1.2713431275229899e+01
-9.4921719680657457e+00
--2.5143389913341693e+01
--1.2534807751025538e+01
-1.3965280684381945e+01
--3.8737208096116497e+01
-1.3357125439888296e+01
-1.2681448138631106e+01
--3.4632923366703658e+01
-1.2186144210828935e+01
-9.6438748142617907e+00
--2.5681443197818055e+01
--1.2484656336026513e+01
-1.3945169327307239e+01
--3.9060871375257321e+01
-1.3229585605056497e+01
-1.2236535610981093e+01
--3.3798024696493115e+01
-1.2539106394038380e+00
-1.8119691240941719e+01
--5.2018851704700509e+01
-1.2793502671730058e+01
-1.2338903515446979e+01
--3.4088714694008360e+01
--9.4267297485043340e+00
-1.4744021240353877e+01
--4.1537882616143001e+01
--8.1108667812734545e+00
-1.4884203264464034e+01
--4.2662059479924125e+01
--8.1108667812734545e+00
-1.4884203264464034e+01
--4.2662059479924125e+01
--9.6183978949410083e+00
-1.4718287060861078e+01
--4.1986015852779659e+01
-9.0162635280415522e+00
-2.0525918638313264e+01
--5.8901523217559294e+01
--6.1038595522669556e+00
-1.5379844124356513e+01
--4.4359941580757102e+01
--1.9117246218921446e+00
-1.5992498548507031e+01
--4.6014324213498313e+01
--7.1721870530856116e+00
-1.5156475693896956e+01
--4.3643967236910008e+01
--9.6570721272107640e+00
-1.4414806027564291e+01
--4.1266852251050338e+01
-1.0445103527976663e+01
-1.9703162128079327e+01
--5.7222114245123187e+01
-1.3726325845339128e+01
-9.1220622165986907e+00
--2.4456296693634222e+01
-1.3726325845339128e+01
-9.1220622165986907e+00
--2.4456296693634222e+01
--1.5138256373791949e+01
-1.3375187896523764e+01
--3.8226882370903802e+01
--4.6268207101020593e+00
-1.5637059140341551e+01
--4.5303382285893221e+01
--1.1268554020830269e+01
-1.3125074758285786e+01
--3.8226054911276897e+01
-1.6442664804268905e+01
-2.3546401005848704e+01
--6.8603962515082145e+01
--7.0331415215787096e+00
-1.5120795773912828e+01
--4.4055144042514925e+01
--1.1244308142476758e+01
-1.3772527173291492e+01
--4.0130766335611440e+01
-1.3403431805324400e+01
-1.2025141732923133e+01
--3.3654199180867657e+01
--4.7904322258882583e+00
-1.5479104671454678e+01
--4.5771486769439328e+01
-1.3746847512063686e+01
-1.1944634588730130e+01
--3.3827201442291404e+01
--1.6169038561195766e+01
-1.3499103018488169e+01
--3.9272088137316160e+01
-1.3374162929806337e+01
-1.2226300257577456e+01
--3.5052579106999282e+01
-4.9010642730496627e+00
-1.8642646516501394e+01
--5.5238597236575828e+01
-1.2321052871118418e+01
-9.7886424516775339e+00
--2.7205419755068696e+01
-1.2381563874617719e+01
-9.7009993627821220e+00
--2.7061104751309145e+01
--6.8723704556827450e+00
-1.4932615099010867e+01
--4.4520061116736912e+01
--1.0507909837442954e+01
-1.3361625131529893e+01
--3.9729257210892101e+01
--1.0507909837442954e+01
-1.3361625131529893e+01
--3.9729257210892101e+01
--2.2002585815140986e+01
-1.5601422593851357e+01
--4.5192460512431509e+01
--6.5885428274866147e+00
-1.4991980576512992e+01
--4.4862876438356246e+01
--6.5885428274866147e+00
-1.4991980576512992e+01
--4.4862876438356246e+01
-1.0007180725934601e+00
-1.6979554897143217e+01
--5.0474924804089277e+01
--1.0803039902166853e+01
-1.3861533373720464e+01
--4.0885686367480098e+01
--7.5599431081970776e+00
-1.4596368089937533e+01
--4.3700832187285108e+01
--9.6400025396139437e+00
-1.4263485263863036e+01
--4.2304209077743863e+01
--9.7238284364682954e+00
-1.4587508342660730e+01
--4.3766499305973646e+01
--1.0901940647539730e+01
-1.3599525786044012e+01
--4.0832608927066609e+01
--1.0901940647539730e+01
-1.3599525786044012e+01
--4.0832608927066609e+01
--1.0580604203974204e+01
-1.3142089086437114e+01
--3.9512051457156154e+01
--7.8642946810502599e+00
-1.4632574588454384e+01
--4.3905756626164575e+01
-8.9163326859476868e+00
-1.9728746938445109e+01
--6.0045832092325156e+01
-1.3293803998287782e+01
-1.2636687517132156e+01
--3.6988957242143414e+01
-1.4236284233736225e+01
-8.8283843700500846e+00
--2.4505019997924943e+01
--1.3838962694303412e+01
-1.3222719308304693e+01
--3.9225631949866070e+01
-4.7484335275111622e+00
-1.7543163329323527e+01
--5.3265275844484655e+01
--1.2407323371082406e+01
-1.3481805418846683e+01
--4.0367863489757518e+01
--9.9972812291486921e+00
-1.3363769019646396e+01
--4.0760439255161117e+01
-1.4076275443848225e+01
-8.9453032326122965e+00
--2.5082836665092699e+01
-1.2814166596874140e+01
-1.2165200932823319e+01
--3.5694631070854676e+01
--8.5886443343797794e+00
-1.4116920203932551e+01
--4.3154139530236456e+01
-1.3089876082602688e+01
-8.6072269664023331e+00
--2.4305631978304362e+01
-1.3089876082602688e+01
-8.6072269664023331e+00
--2.4305631978304362e+01
--9.5587269121591039e+00
-1.3968077567296463e+01
--4.2630716410140153e+01
-1.3384767758711574e+01
-8.6568182019696494e+00
--2.4657909172755353e+01
-1.3363962195420244e+01
-8.6552181103704218e+00
--2.4630100939120354e+01
--1.3120761903230100e+01
-1.2918609702621968e+01
--3.9445107549875260e+01
--7.0364059852721557e+00
-1.4881486200774328e+01
--4.5769609708756462e+01
--9.7324208584237013e+00
-1.3862783670637116e+01
--4.2502688400961446e+01
--9.7554600575981780e+00
-1.3964046571789181e+01
--4.2745803095437694e+01
--1.3262379351024084e+01
-1.2871306353832926e+01
--3.9502878495349698e+01
--9.9670185920965544e+00
-1.3802322930242374e+01
--4.2675512277062190e+01
-1.2649358619145891e+01
-8.4632385904904996e+00
--2.4460139327769646e+01
-1.2760293573520428e+01
-8.7495247396451905e+00
--2.5632425561308430e+01
-1.3369042067508630e+01
-8.5023309757643979e+00
--2.4575213603794090e+01
-1.6711251670889936e+01
-1.3463939414888630e+01
--4.1125671227368535e+01
--1.2570147485487682e+01
-1.2969790318722678e+01
--3.9972470462730172e+01
-1.2385399493540779e+01
-8.9693470106996429e+00
--2.6316074514445379e+01
-1.2540175022020154e+01
-8.8488628128297968e+00
--2.5875035135273389e+01
-1.2682969180670019e+01
-8.8776452604878742e+00
--2.5672669202795817e+01
--9.1774091232163943e+00
-1.3847953400263053e+01
--4.3149222235463306e+01
--1.1877904174566631e+01
-1.2940206371745017e+01
--4.0540192652978966e+01
-1.2691446509392375e+01
-8.3600861288516004e+00
--2.4735957579319045e+01
--8.7578043521121334e+00
-1.3224769104712012e+01
--4.1694804026659611e+01
--9.4231502496939417e+00
-1.3183302338843232e+01
--4.1625284074790819e+01
-1.2091683458839966e+00
-1.6395123347540856e+01
--5.2273479454803066e+01
-1.6253226525480265e+01
-1.3241354308107869e+01
--4.0988716644881983e+01
--8.7705638822027634e+00
-1.4076789155609138e+01
--4.4456381565729338e+01
--6.6350116245270643e+00
-1.4299149623974692e+01
--4.5191907595419423e+01
--6.6341008182945789e+00
-1.4290193021743306e+01
--4.5255409860528729e+01
--1.8863942949757863e+01
-1.3632835008632151e+01
--4.2234616199866423e+01
--1.1032563696959055e+01
-1.3152033562292841e+01
--4.1252859687091302e+01
--1.1086419724983847e+01
-1.3075708093534329e+01
--4.1402324632687936e+01
--9.6113547097953109e+00
-1.3673750864272613e+01
--4.3045961613418470e+01
--9.6618319437127891e+00
-1.3664828718756203e+01
--4.2754386756826889e+01
--1.5889364955625313e+01
-1.2753592103093300e+01
--4.0175033805845224e+01
-1.2479243798618262e+01
-8.9371966261001194e+00
--2.6587167030365435e+01
--1.0463976014304290e+01
-1.3151828008900416e+01
--4.1994788199100988e+01
--1.0466633327025310e+01
-1.3175229118378219e+01
--4.2045904787539342e+01
--1.0466633327025310e+01
-1.3175229118378219e+01
--4.2045904787539342e+01
--9.2686136393602734e+00
-1.3531906086273192e+01
--4.3004358402411256e+01
--8.9207199967151372e+00
-1.3666590341597388e+01
--4.3212511403436260e+01
--8.5016798656449968e+00
-1.3634026621977323e+01
--4.3689894497675780e+01
-1.2721425616659804e+01
-8.9751987034812615e+00
--2.7368150823994270e+01
--1.4550409149114362e+01
-1.2327796793545586e+01
--3.9166403408969707e+01
--1.4044339109968638e+01
-1.2557848183270139e+01
--3.9692888751881036e+01
--9.4809603058980230e+00
-1.3024982819602112e+01
--4.1879790324102878e+01
--9.8365964709828884e+00
-1.3622802026679986e+01
--4.3647531070746851e+01
--1.3083956915340421e+01
-1.2693301743316148e+01
--4.0361920757605034e+01
--1.2989179540085807e+01
-1.2727938767522295e+01
--4.0461396767395570e+01
--1.2958062673523125e+01
-1.2635131302359662e+01
--4.0314688015921583e+01
-1.7137579977360417e+01
-1.2897888818209397e+01
--4.0589130005113354e+01
--8.3936305505030955e+00
-1.3713463693270917e+01
--4.4187429547443095e+01
--8.6439164119493714e+00
-1.3784661106218849e+01
--4.4543760137830105e+01
-7.6261389407881452e-01
-1.5884322719851198e+01
--5.1490563082526975e+01
-7.4548806521491184e-01
-1.5892063843028918e+01
--5.1582208433406834e+01
-1.3616794287432914e+01
-8.3652460819182028e+00
--2.5326256011493623e+01
--9.9218818431335301e+00
-1.3115006897160017e+01
--4.2646691442809662e+01
--9.8312483840562930e+00
-1.3229907244929091e+01
--4.2962135987474461e+01
--4.7374667035016191e+00
-1.4589372490141541e+01
--4.7403149527353939e+01
--1.4102342151985626e+01
-1.2265546311229603e+01
--3.9238023171531125e+01
--1.0909936244571959e+01
-1.3402786576478960e+01
--4.3630552952134252e+01
--1.0761882190166657e+01
-1.3163724419555802e+01
--4.2744654841858271e+01
-1.2924696225056529e+01
-9.0177595015783609e+00
--2.7556065181738301e+01
--9.0847965922762945e+00
-1.3551777315086888e+01
--4.4440554997822204e+01
--1.5378681254534477e+01
-1.2229348604333358e+01
--3.8932580783998588e+01
-1.3693596735773028e+01
-1.0701534750075846e+01
--3.4008739347070765e+01
--6.7006289652743067e+00
-1.3996714019419503e+01
--4.5886154224986306e+01
--6.7368318358507731e+00
-1.4014683782820228e+01
--4.5735584215561190e+01
-8.6826048714872717e-01
-1.5900728028612553e+01
--5.2072366423751177e+01
-9.4605135658359729e-01
-1.6111465199842389e+01
--5.2981856284677093e+01
--9.8411790938894956e+00
-1.3270589744803846e+01
--4.3133142220486512e+01
--1.1207052748300759e+01
-1.2799498494802499e+01
--4.1952103063418150e+01
-1.3600521609503121e+01
-8.5640054416106608e+00
--2.6232190923231848e+01
-1.2731717632922468e+01
-7.9404298330760179e+00
--2.4717815334016972e+01
--8.8773085314035054e+00
-1.3402463719642801e+01
--4.3892304345217276e+01
-8.5765806437925218e-01
-1.5750204236978991e+01
--5.2216856787860166e+01
-1.3346149716517630e+01
-1.0429839991777540e+01
--3.3339302548624239e+01
-1.2844197663053796e+01
-8.8022968005778779e+00
--2.7267305554863970e+01
-1.3621858167520619e+01
-8.2221969057971851e+00
--2.5221658744407698e+01
-1.3917492307842201e+01
-1.0424462992325035e+01
--3.3761397610592518e+01
--1.4875410677836555e+01
-1.2761960405448102e+01
--4.2124402914791183e+01
--1.6969079591537017e+01
-1.1704988097533969e+01
--3.7996947333468469e+01
--6.9939235807468751e+00
-1.3353240051927267e+01
--4.5042477159818390e+01
-1.3398595043040482e+01
-7.9229313855919381e+00
--2.4984057261701913e+01
--7.3859289561141699e+00
-1.3641035863182674e+01
--4.5891377589528830e+01
-1.2737329069680094e+01
-8.0137600148213437e+00
--2.4766518429192569e+01
-1.3028157969034572e+01
-7.9607794860066141e+00
--2.5182637391627040e+01
--1.1548090293725005e+01
-1.2462099604249412e+01
--4.1845337540475015e+01
--1.0977750758768792e+01
-1.2716234116185053e+01
--4.2568695099117782e+01
-1.3462222909626977e+01
-1.0145147140197707e+01
--3.3098975613229058e+01
-1.2994801943969339e+01
-8.1803881414601172e+00
--2.5969992750968881e+01
--6.8870586672123730e+00
-1.3405793043705536e+01
--4.6019544345284288e+01
--1.5465067318640802e-01
-1.5305406717881793e+01
--5.2517644945362029e+01
-1.4185721783541405e+01
-7.4481688961231090e+00
--2.3675190057078083e+01
--1.6861278904252188e+01
-1.1761319470920537e+01
--3.9795758956513843e+01
-1.3688306260745797e+01
-1.0329238580677822e+01
--3.3633064659702384e+01
-1.3046359924124232e+01
-7.9866376550523599e+00
--2.5872719548238539e+01
-1.2313533589563777e+01
-8.2972686824093831e+00
--2.7217908806439620e+01
-1.2597767472807185e+01
-8.5005554415426090e+00
--2.7859334294824865e+01
-1.2639076198460641e+01
-7.7385959117845360e+00
--2.5134055473047280e+01
--1.0006654952457479e+01
-1.2618111710874569e+01
--4.3610900452897226e+01
--1.2235396356445772e+01
-1.1986851153548900e+01
--4.1195890075615097e+01
-1.3468217209412929e+01
-7.1717801347831509e+00
--2.3337489935342049e+01
--1.3087294338747306e+01
-1.2334638273587501e+01
--4.2459078560602187e+01
-1.4239722679093235e+01
-1.0067617068553437e+01
--3.3566022745165633e+01
-1.3814209057955429e+01
-1.1429328193291846e+01
--3.8755910929882198e+01
-1.2804172618611608e+01
-7.7840807957685785e+00
--2.5326311869335786e+01
--9.9290341707462471e+00
-1.2641515683752825e+01
--4.4090947288015343e+01
--9.6250366693394156e+00
-1.2745418704772648e+01
--4.4071217348579339e+01
-2.0500710891560303e-01
-1.5005040823608320e+01
--5.2595515945605136e+01
--1.1907678264548748e+01
-1.1950202685538825e+01
--4.1874114686570643e+01
-1.3470681119017430e+01
-9.9538266058283824e+00
--3.3600669349314700e+01
--1.2233584411937407e+01
-1.1944076027347485e+01
--4.1409278355127924e+01
--5.4933994742358925e+00
-1.3757685291474148e+01
--4.8525412554851023e+01
--1.1900363476366673e+01
-1.1990870507737704e+01
--4.1994777597288746e+01
--1.0063581292191676e+01
-1.2119139399098296e+01
--4.2782832541862824e+01
--6.7996496491852634e+00
-1.3216090589616670e+01
--4.6967058026290282e+01
--6.8556297063192773e+00
-1.3385984679432863e+01
--4.7572802592365100e+01
-1.2670887501477635e+01
-8.1705648053177615e+00
--2.7472347394520764e+01
-1.2940128392758284e+01
-8.1090320635631628e+00
--2.7420592870634170e+01
-1.2342506002705857e+01
-8.1408515977256926e+00
--2.6934337660937594e+01
-1.2828291864919468e+01
-8.1532532808564362e+00
--2.7599088011651926e+01
--1.0269123467952880e+01
-1.1953800732468036e+01
--4.2770319078180023e+01
--9.4363774604039730e+00
-1.2366393705351760e+01
--4.4220821901594853e+01
--6.1043634833244438e+00
-1.3279638329368160e+01
--4.7523256105280268e+01
--4.3550022103366208e+00
-1.3829955989072651e+01
--4.9534072840104535e+01
-1.1943815927574054e+01
-8.0748341899582208e+00
--2.7265625943110734e+01
--4.1492327008820089e+00
-1.3548336653545434e+01
--4.9161398095500047e+01
-1.3448991627134884e+01
-9.8010091364209693e+00
--3.4119553376535443e+01
--1.6490115455934955e+01
-1.1322738998781885e+01
--4.0437089581977098e+01
-1.3267341038214525e+01
-7.7626072454542712e+00
--2.6568259836166693e+01
-1.3394603403167432e+01
-7.3978864828695077e+00
--2.5179603359779328e+01
--1.6698595360741056e+01
-1.1357570717860128e+01
--4.0454313718737680e+01
-1.2828371046191061e+01
-8.0443773269637049e+00
--2.7356023122392937e+01
-1.2280278738502501e+01
-7.8142926334943894e+00
--2.6791359009540919e+01
-6.9383221710139447e+00
-1.4089721451996695e+01
--5.1434418255471762e+01
--1.5712351736002072e+01
-1.1237661714493893e+01
--4.0176033564314061e+01
--5.3678735622153901e+00
-1.3288307776021728e+01
--4.8493924178604679e+01
-9.0755256199847061e+00
-1.4734133184785952e+01
--5.2986696794352760e+01
-1.2526223847924896e+01
-7.7756822438669309e+00
--2.7211137483147368e+01
-1.4711100339246332e+01
-7.3174793201764174e+00
--2.4484083357587785e+01
-8.5114815242411854e+00
-1.5799863876833541e+01
--5.7850042169112292e+01
--5.9743644255157955e+00
-1.2783009687051720e+01
--4.7512308061275093e+01
--3.7180980195618432e+01
-1.5699893318872757e+01
--5.6213181227272656e+01
-1.2373714622806872e+01
-7.7815219361585939e+00
--2.7408967782180738e+01
-1.4574821782125319e+01
-9.3702475516049830e+00
--3.3516951778511604e+01
-1.5574414722332714e+01
-9.1417603856292526e+00
--3.2556557137254643e+01
-1.2676700514206459e+01
-7.6464535397726472e+00
--2.6906917422748641e+01
--1.7010330901961090e+01
-1.0915189159096478e+01
--3.9421156903422343e+01
-1.2789318702263921e+01
-1.0705339100978362e+01
--3.9362735901250936e+01
-1.2589879998625186e+01
-7.8000092374452867e+00
--2.7532617527683858e+01
-1.7012029816319988e+01
-8.8472073510107467e+00
--3.1438270033384953e+01
--5.9615938320339028e+00
-1.3138170993490858e+01
--4.9036496165291162e+01
-1.2620728356780837e+01
-7.6304532627546813e+00
--2.6795397821459304e+01
--1.4636332725816397e+01
-1.1201708311682360e+01
--4.1297142326151025e+01
--1.0762329243521858e+01
-1.1646082653818780e+01
--4.3483674534348047e+01
-1.2464864555119364e+01
-7.5841990414298293e+00
--2.6888516918108586e+01
-1.3449873572795484e+01
-7.1875657008449103e+00
--2.5299987110427953e+01
--1.1621873516782109e+01
-1.0806285477496932e+01
--4.0495209030301631e+01
--1.6042734297172505e+01
-1.0931372331681819e+01
--4.0314835243022038e+01
--1.3807868447937022e+01
-9.4826181233766977e+00
--3.5715562438386328e+01
--1.2850935176612813e+01
-1.1542703352784820e+01
--4.3250537720521287e+01
--9.9630959257321319e+00
-1.1724852165983387e+01
--4.4580004899529101e+01
--9.7071010919303955e+00
-1.1381848019860552e+01
--4.3235593617898722e+01
--9.9630959257321319e+00
-1.1724852165983387e+01
--4.4580004899529101e+01
--1.1705222837757708e+01
-1.0765571094582180e+01
--4.0858279828021885e+01
--1.5651801854271680e+01
-1.1036779235285140e+01
--4.1569803352635347e+01
--1.2060683529079038e+01
-1.1605803289752568e+01
--4.3781561224131977e+01
-1.3382994658360049e+01
-6.9887170778939458e+00
--2.4982747004800359e+01
-1.7283152688797401e+01
-8.0891546945811896e+00
--2.9252357552132235e+01
--1.3929658967914163e+01
-1.0732940761458289e+01
--4.0998081000054995e+01
--1.4026174797890915e+01
-1.0705047605746628e+01
--4.1039953761950116e+01
-7.4153970667049327e+00
-1.3131845149783477e+01
--5.0319484113224888e+01
-1.2783225585780418e+01
-7.3889889915426208e+00
--2.6920573517097381e+01
--1.0525627040960572e+01
-1.1696337673073067e+01
--4.4663696314703280e+01
-1.2440553811889265e+01
-7.5556768420985652e+00
--2.7294034925178000e+01
-1.2388176919596775e+01
-7.4856044315052408e+00
--2.7145265347182075e+01
--1.4144357895645893e+01
-1.0679602420221501e+01
--4.1100105220307547e+01
-1.4863633801211773e+01
-1.0627323966769739e+01
--4.0482575624943827e+01
--1.6241819174138268e+01
-1.0789242377787474e+01
--4.1385222459124563e+01
--1.7188427869540117e+01
-1.0492888448302500e+01
--3.9504029680047402e+01
--1.6330056149088389e+01
-1.0910418053702179e+01
--4.1918749200783566e+01
-1.3674907087414990e+01
-6.6084000718695926e+00
--2.4112468821056815e+01
-1.4462028482497066e+01
-6.3800983409275931e+00
--2.2818196477088019e+01
--1.5488681111899927e+01
-1.0672129713976387e+01
--4.1196660965832741e+01
--1.3506849488540004e+01
-1.0134831978041452e+01
--3.9518295060987285e+01
-9.4328789147510073e-01
-1.2847044004784312e+01
--5.0365821345837524e+01
-1.4139773906772996e+01
-9.0624539273137081e+00
--3.4423292555739167e+01
-1.2561262710654669e+01
-7.2780877683348955e+00
--2.7319935049901716e+01
--1.5948009977750543e+01
-1.0793521261201745e+01
--4.1981064431387871e+01
--1.5941939246845340e+01
-1.0685425053476939e+01
--4.1595650974038350e+01
-2.9199844503735801e+00
-1.2675383318790383e+01
--5.0519523919426831e+01
-1.1815223021062145e+01
-7.6056877742356503e+00
--2.8738034926787837e+01
--6.9509290378217559e+00
-1.1946133528202543e+01
--4.8114749596012096e+01
--1.1113404441674035e+01
-1.0426670609034153e+01
--4.1818789762307453e+01
--7.4431998725580293e+00
-1.1704487639125308e+01
--4.7589527125526935e+01
--7.4722363127397662e+00
-1.1862608248046669e+01
--4.7960274133117267e+01
-1.2378867945599385e+01
-1.2140048066161448e+01
--4.8687124137747738e+01
--1.2173981622041918e+01
-1.0003735296368163e+01
--4.0318736904273216e+01
-1.2327815530396935e+01
-7.1691522513860226e+00
--2.7141947800302514e+01
-1.2907510878043301e+01
-1.1984071309408298e+01
--4.8299857604316202e+01
--1.7406625203261996e+01
-1.0281522416075477e+01
--4.0892187615700912e+01
-1.4662559374292556e+01
-1.0604703527011162e+01
--4.2536203233701123e+01
--7.5275651553091842e+00
-1.1781977330874538e+01
--4.7968102678268252e+01
-1.2624589391958933e+01
-7.2791593348865025e+00
--2.8216697542879370e+01
--1.6761491085584453e+01
-1.0326743883566873e+01
--4.1949820100194152e+01
--7.8706349912107143e+00
-1.1633526130991472e+01
--4.7828159769968238e+01
-1.2080819222290129e+01
-7.3064590677207866e+00
--2.9018110279198748e+01
-1.2525997575925272e+01
-7.1270311760528848e+00
--2.7930736196195198e+01
-1.2414539442599278e+01
-7.0601096074709604e+00
--2.7860226376732072e+01
-1.5157912843028161e+01
-6.6667742662802629e+00
--2.5739012810950261e+01
--1.3434533598394124e+01
-9.6971817271286653e+00
--4.0292337043237474e+01
-1.2498101209506853e+01
-7.2056156760292662e+00
--2.8737704197789860e+01
-1.2746443548500370e+01
-6.6318030804500472e+00
--2.5684056846737793e+01
-1.3169986683542156e+01
-6.8495411610077630e+00
--2.7242327691596255e+01
--1.5875991362730437e+01
-1.0046191080474509e+01
--4.1592250269856152e+01
-1.3948172163442230e+01
-6.7510790977071862e+00
--2.6323064899591337e+01
--1.1754029586979209e+01
-1.1960733614071437e+01
--5.1304728520165362e+01
--9.6781024217325164e+00
-9.6649400198666076e+00
--4.1221028576517149e+01
-1.4012677703927002e+01
-1.1777135041811638e+01
--4.9755567090308709e+01
--5.0296661672593146e+00
-1.1044131318648823e+01
--4.7152928955059707e+01
-1.2191974654786931e+01
-7.3150229036266694e+00
--2.9659504576445674e+01
-1.2741374013883993e+01
-6.6701864957838142e+00
--2.6295421727928268e+01
-1.2808966243913533e+01
-6.7078276967719663e+00
--2.6343572604382519e+01
-1.4152205458905314e+01
-6.1289827946159798e+00
--2.4158411531919707e+01
-3.1200367170690613e+00
-1.1101570098948496e+01
--4.7227731888139921e+01
-2.4025219736736521e+00
-1.1175426651186788e+01
--4.7638806305237729e+01
-9.4097301916329601e-01
-1.1204583847061503e+01
--4.7845037345641430e+01
-1.4691498222322583e+01
-9.9606507436088396e+00
--4.1673357663936521e+01
-1.2671929475951098e+01
-6.4905629305717021e+00
--2.6043053195385774e+01
--1.4505877485725529e+01
-8.5874749012100295e+00
--3.6701215947333843e+01
-2.0869931607331114e+00
-1.1025913313356522e+01
--4.6880000783235090e+01
-1.5552846742204604e+01
-7.7568293948273626e+00
--3.2058505462076226e+01
-1.3174659835651063e+01
-6.7345022421708807e+00
--2.7440618750452106e+01
--1.4921479069865594e+01
-8.4172570823433244e+00
--3.6041117205997928e+01
-2.8351824778934489e+00
-1.0770987099515338e+01
--4.6754391097718234e+01
--1.9549538776336846e+01
-1.0483471700061818e+01
--4.5768390072559839e+01
--1.5978745636728398e+01
-9.6849697805840549e+00
--4.1977730639686193e+01
--1.4180842862537171e+01
-8.3152596363765117e+00
--3.6608089312817128e+01
-1.6045630686956930e+01
-7.3946334278590662e+00
--3.1468916951974698e+01
--7.2669657159721952e+00
-1.0342119185303030e+01
--4.6134014354122023e+01
-1.2853702382264188e+01
-6.3824715059403623e+00
--2.7238001146140395e+01
-1.2853702382264188e+01
-6.3824715059403623e+00
--2.7238001146140395e+01
-1.1180422168188743e+01
-1.0319454526612144e+01
--4.6236026132142115e+01
-1.3297264436669577e+01
-6.2919539375008879e+00
--2.6589733433243893e+01
--1.2993148654316713e+01
-1.0208723890691738e+01
--4.5575027441898634e+01
--1.6918043850397734e+01
-9.4043928284567766e+00
--4.2169249850624659e+01
--1.4861374156254804e+01
-8.1234762656861257e+00
--3.6520092226410185e+01
-1.1372634657246374e+01
-1.0230117137303187e+01
--4.5978696571148802e+01
-1.2554214292930272e+01
-6.3036195158826578e+00
--2.6758508521810523e+01
--5.2828187058397647e-01
-1.0189413034479456e+01
--4.6482286539079738e+01
--6.6740683385437851e+00
-1.0210770670869776e+01
--4.6082146433758581e+01
-1.2525157559945633e+01
-6.4846431296702809e+00
--2.8155533092158084e+01
-9.8796979774380915e+00
-1.0061298418400105e+01
--4.5943826220697254e+01
--1.6012301203336129e+01
-9.3529587487863459e+00
--4.3222670601782724e+01
-1.2408911782174542e+01
-6.2753602207840258e+00
--2.7551520425048142e+01
-1.3758883072164757e+01
-6.3737076001184869e+00
--2.7811962324547387e+01
-6.5264468778729405e+00
-9.7707035077859672e+00
--4.5741102295464962e+01
-1.2367738722633055e+01
-6.3767315008260352e+00
--2.8153499466880394e+01
-1.2767898868151311e+01
-6.0899183784341187e+00
--2.7150229234329991e+01
--2.0567291468149045e+00
-9.8861182142862756e+00
--4.6332714004676113e+01
-1.3567929089851710e+01
-5.9613080122911741e+00
--2.6340212264545713e+01
--2.5129658290435142e+01
-1.0244298462957563e+01
--4.7159358405208344e+01
--1.2807103898827270e+01
-9.7478049332953134e+00
--4.6077762136554782e+01
--6.6719178637840688e+00
-9.3325325871270852e+00
--4.4506073176157642e+01
-1.0286149260647106e+01
-9.5427143328313999e+00
--4.5142860534909609e+01
-1.2092018110329860e+01
-6.4287391525523754e+00
--2.8730967264837076e+01
-1.2607898751320658e+01
-6.1971288619768510e+00
--2.8194625328578567e+01
-1.2658699070624770e+01
-6.0839975975391081e+00
--2.7597941532278181e+01
--1.2585300833124748e+01
-9.4992604639044700e+00
--4.4912657377086440e+01
--1.1895457438177719e+00
-9.5228544183076771e+00
--4.5421890802933881e+01
-1.5538478153756076e+01
-5.4643723866641585e+00
--2.3445986683049551e+01
-1.2653605864645483e+01
-6.3193150480340075e+00
--2.9018080269501660e+01
-1.2669801693112811e+01
-6.2763740684838698e+00
--2.8943108465116246e+01
--7.0791498956085048e+00
-9.1962609530634083e+00
--4.4743741501993952e+01
--6.8135823237737645e+00
-9.4842597357423077e+00
--4.5752943354209741e+01
-1.4394725042614562e+01
-4.9537582169879615e+00
--2.2327625164538485e+01
-1.4352521347281769e+01
-4.9391013250399878e+00
--2.2366344579494427e+01
--1.7318181007237904e+01
-8.6766702724578035e+00
--4.1195846507491069e+01
-1.4220942209567729e+01
-5.6583896191921488e+00
--2.4962979207059981e+01
-1.3946132882351664e+01
-5.4206384205160036e+00
--2.4645050236089070e+01
-1.5000648404315077e+01
-5.3041284612276343e+00
--2.3164921143328666e+01
-1.2688532974166998e+01
-6.1746374610334467e+00
--2.8853135778230467e+01
-1.4810477832049800e+01
-4.8815395005632585e+00
--2.2333379506822151e+01
-1.2452381247453392e+01
-6.1644985358945377e+00
--2.9009718395741206e+01
-1.2905025169278819e+01
-5.8283651091443494e+00
--2.7235188256499672e+01
-1.2513403710838253e+01
-5.9590692679327493e+00
--2.7149995211528545e+01
-1.2107990350116154e+01
-6.3413534668280409e+00
--3.0314667016541300e+01
-1.3006344975080022e+01
-5.7027781306515255e+00
--2.7056374765014013e+01
--1.5609953236373553e+00
-9.0014160954178468e+00
--4.4969724496191816e+01
-1.2721632596526579e+01
-5.8610923231109062e+00
--2.7406332768591085e+01
-1.3393992288271210e+00
-8.9016647135387856e+00
--4.4708355496461998e+01
-1.5074420277332219e+01
-6.3825926772557979e+00
--3.0813273769762528e+01
-1.5494505671446243e+01
-5.2338389961531275e+00
--2.3669968026628442e+01
--6.7825609676932097e-01
-8.8149798608705510e+00
--4.4682249563025302e+01
-1.3151581532848446e+01
-5.7470834765126479e+00
--2.7748602977507076e+01
-1.4799164918059338e+01
-4.8653991784170723e+00
--2.2614849328888681e+01
-1.4657913550058369e+01
-4.7961621592558643e+00
--2.1905929876012731e+01
--2.4207876874773120e+01
-9.3381485233636958e+00
--4.6050449206920142e+01
--2.4207876874773120e+01
-9.3381485233636958e+00
--4.6050449206920142e+01
--1.6027012204025073e+01
-8.7672605451534285e+00
--4.4545814646930260e+01
--7.1388887428794554e+00
-8.4357059882675127e+00
--4.3393875602896784e+01
--2.1112703500592698e+00
-8.6797352400568144e+00
--4.4697586898258074e+01
-1.3069049376130483e+01
-6.5087297702161884e+00
--3.2676796268105704e+01
-1.3086701700659262e+01
-5.3961197233944445e+00
--2.6493758068253577e+01
-1.3184659008557057e+01
-5.4449271998854165e+00
--2.6821982484058818e+01
-1.2898575650306038e+01
-5.7939478118611971e+00
--2.8717136417343749e+01
-1.3975203463638627e+01
-7.1548176945494530e+00
--3.6459955987968996e+01
-1.3100806217664239e+01
-5.7656686235008729e+00
--2.8371208433004210e+01
--4.7832975117557081e-01
-8.6522564161932607e+00
--4.4819536838369238e+01
-1.2914255265941852e+01
-5.4928277026145036e+00
--2.7800382301146819e+01
-1.2851187613025774e+01
-5.6038541345814865e+00
--2.7954963690937110e+01
-1.2834448551777630e+01
-5.5393494867404049e+00
--2.7865022605160721e+01
--2.3569521878854111e-01
-8.2228808371644160e+00
--4.3839050106178767e+01
--1.6100309091383970e+01
-8.3513302110598939e+00
--4.3758169493518139e+01
--3.8645679370917492e+00
-8.1922675114951495e+00
--4.3935484222094942e+01
--4.7909645919403826e-01
-8.2245615502796312e+00
--4.3880514141628417e+01
--5.0337117486133309e-01
-8.2021046720294226e+00
--4.3536658517341323e+01
-1.3448776583592537e+01
-5.3830070532519798e+00
--2.7567073863443863e+01
-1.7554309771892346e+01
-5.6851927861121032e+00
--2.9080712282541249e+01
-1.4257824071218279e+01
-5.0938497768058504e+00
--2.5593095316667423e+01
-1.2597510987694688e+01
-5.4384348940561331e+00
--2.7872617885969582e+01
-1.4071892306754609e+01
-5.2685579361105699e+00
--2.6596818789714586e+01
-1.2924981718887771e+01
-5.4146247188579224e+00
--2.8182568808544026e+01
--1.2483028124307993e+00
-7.9818810632012873e+00
--4.2910151690042056e+01
-1.3818154158058713e+01
-4.9058364461941109e+00
--2.5370492512803377e+01
-1.2791282650307826e+01
-5.3494647093943657e+00
--2.8799514153071957e+01
-1.4597197406541758e+01
-6.0032177964367639e+00
--3.2504259462431968e+01
-1.3697877366372129e+01
-4.8812029053527013e+00
--2.5870020662505905e+01
-8.9467048383104841e-01
-7.5992191815465571e+00
--4.2982636163128390e+01
--7.7696273516891141e+00
-7.3875644416264921e+00
--4.2300529000531171e+01
-6.5704282179816220e-01
-7.6155218640018765e+00
--4.3069218631792083e+01
-1.3506392355953357e+01
-4.9338669588040132e+00
--2.6641287635467421e+01
--6.7441354903511419e+00
-7.3908057244110550e+00
--4.1941879722355495e+01
-1.2621244000755127e+01
-5.2482470144999116e+00
--2.9172522201997211e+01
-1.3691731809529555e+01
-4.9042019238447763e+00
--2.6595327546255749e+01
-1.4048713268937965e+01
-5.0797885515636452e+00
--2.7319808843995315e+01
-1.3595880286836840e+01
-5.1757832169937483e+00
--2.8192751159114547e+01
-1.2438085645687709e+01
-5.1672691069392833e+00
--2.7836376339049046e+01
--5.2855170620817153e+00
-7.2027812117746981e+00
--4.2021024308721060e+01
-1.3211327582340219e+01
-5.0976020229813681e+00
--2.8379659751214334e+01
--8.2223144681018989e-01
-7.3012994123661183e+00
--4.2494652423461531e+01
-2.8686799344475949e-01
-7.2177157410892976e+00
--4.2512381018244447e+01
--1.4374262089540693e+01
-7.2700276401257939e+00
--4.2625704350554280e+01
--7.9060529229351928e-01
-7.1615170330150990e+00
--4.2204726824416362e+01
-1.2295148663317470e+01
-5.2526006551305855e+00
--3.0364947384864220e+01
--9.8118457881126524e+00
-6.8075631721499033e+00
--4.0729624533000703e+01
--1.5771912767797895e+00
-7.2046439851341120e+00
--4.2162469874053727e+01
--1.4347698150312165e+00
-7.1388974424402347e+00
--4.2308107353636714e+01
-1.2065859079257383e+01
-5.3790174283218741e+00
--3.1337270973124213e+01
-1.3041384688074075e+01
-5.0326379861556854e+00
--2.9204550957608852e+01
-1.2715138215921455e+01
-4.9358142422635227e+00
--2.9250329256165482e+01
-1.3690346337265796e+01
-5.1086711473590416e+00
--2.9989723001929342e+01
--2.1145551037314858e+00
-6.8512378223403214e+00
--4.2044162050243749e+01
-1.2899918363525511e+01
-4.7524479826347807e+00
--2.8557848915500831e+01
-1.9054538458858406e+01
-5.0326776540948099e+00
--2.9532409019221536e+01
-1.2934726833516930e+01
-4.6853626069540946e+00
--2.8305164295546685e+01
-1.4077833454964935e+01
-4.3592482161474777e+00
--2.6257945086156745e+01
--3.3757880337061841e+00
-6.6567074295923945e+00
--4.1451816648880310e+01
--4.7438100892637589e+00
-6.6018205443022824e+00
--4.1510429655031452e+01
-1.2964043936608146e+01
-4.6759330873313401e+00
--2.8908064584585627e+01
-3.1756722519768354e+00
-3.7902555026568105e+00
--2.3337935700196322e+01
-1.4748972561673018e+01
-3.9317788117307706e+00
--2.3417434811055589e+01
--8.0018758728167789e+00
-6.2213207269940849e+00
--4.0464711801636867e+01
-1.4002541422640505e+01
-4.2751916423676262e+00
--2.6343822301978896e+01
-1.2549790173912554e+00
-3.8104639978123425e+00
--2.3584243346847302e+01
-1.6487623563765943e+01
-4.7257861248971560e+00
--2.9694662759922004e+01
-1.3029694875795736e+01
-4.3568858936104915e+00
--2.8134825093278934e+01
-1.3911256952766795e+01
-4.1055926094940336e+00
--2.6142294550999939e+01
--4.5046700772433921e+00
-6.0446837544512890e+00
--4.1031775115260650e+01
-1.4087463281784984e+01
-4.1678696871276451e+00
--2.6653421506685071e+01
--2.5691030139726930e+01
-6.2802430187278393e+00
--4.1099723570505880e+01
-1.3211680186398189e+01
-4.3215018312871276e+00
--2.8430867335592545e+01
-1.4283626248603303e+01
-4.0244633864855253e+00
--2.5853375033179603e+01
-1.3673613240039623e+01
-4.0276455036852807e+00
--2.6479500402421554e+01
-1.3092213554517389e+01
-4.3709380451867412e+00
--2.9117481615205577e+01
-1.3162914111078072e+01
-4.4146211162175604e+00
--2.9258830080538115e+01
-1.4380756081011620e+01
-4.1266762407302862e+00
--2.6510329675994790e+01
--2.5333905507406207e+01
-6.0809181333920206e+00
--4.0468856536605287e+01
-1.8576657277063187e+01
-4.4960232521740124e+00
--2.9562489712803824e+01
-1.3949225361683411e+01
-3.9046875627957305e+00
--2.5918552422225847e+01
-1.2551528090490681e+01
-4.4156459729621700e+00
--3.0540413087521319e+01
--1.3506597158875005e+01
-5.2405868391933543e+00
--3.7114095642639079e+01
-1.2725347112086713e+01
-4.3996850019500755e+00
--3.0098485798312304e+01
-1.4094877706554932e+01
-4.3534013443723341e+00
--2.9350338363370586e+01
-1.9048432082772209e+01
-4.4000653061613813e+00
--2.9480240406106688e+01
-1.3337408115250490e+01
-4.0486686605574054e+00
--2.7816082384956925e+01
-1.6069494475023859e+01
-4.5231375134910845e+00
--3.0873523347279075e+01
-1.3364061187949355e+01
-3.9876865934177368e+00
--2.7421354990973533e+01
-1.4350843499273910e+01
-4.3060843936404813e+00
--3.0327902312896725e+01
-1.3984423284571712e+01
-3.6949251293786451e+00
--2.5534548118253607e+01
-1.3901234907742630e+01
-4.0581589998283834e+00
--2.8433827938056744e+01
-1.3478233012624608e+01
-3.9580489359293618e+00
--2.7793331752094616e+01
-1.3470148860825153e+01
-3.9336908571581883e+00
--2.7748600681971215e+01
-1.4150529769561194e+01
-3.8063788055032783e+00
--2.6568402368258052e+01
-1.3986848759332471e+01
-3.6497020751207270e+00
--2.5570349177051455e+01
-1.8746685709695566e+01
-4.2212894740419431e+00
--2.9438327961104349e+01
-1.5654735099082760e+01
-3.4905712930219051e+00
--2.3520782329587259e+01
-1.3002403202587567e+01
-4.0556567733725624e+00
--2.9376100203128455e+01
-1.4028232330326670e+01
-3.5739884131099191e+00
--2.5078711957523609e+01
-1.3324070502950876e+01
-3.8106868002050240e+00
--2.7342712525107277e+01
-1.3742652480074025e+01
-3.9085425129993809e+00
--2.7871413208411735e+01
-1.3937374837422730e+01
-3.8095565834167520e+00
--2.7230004311017620e+01
-1.5426819874691239e+01
-4.3745727701564379e+00
--3.1722524622341432e+01
-1.4187346925839570e+01
-3.7194556539971240e+00
--2.6513062738440048e+01
-1.4145885657227415e+01
-3.6025781250886157e+00
--2.5585475781417962e+01
-1.5769069384179490e+01
-3.5759835505583677e+00
--2.3862376382127710e+01
--3.4293715351570691e+00
-5.0270056839185102e+00
--3.8818494032727784e+01
--3.4826666408882740e+00
-5.2000524661830925e+00
--3.9757848270911786e+01
-1.3754555062447984e+01
-3.7697389126855434e+00
--2.7611391819724592e+01
-3.3857961023805987e+00
-3.1465956362027447e+00
--2.2827283705356550e+01
-1.4143844270550632e+01
-3.4856136047535839e+00
--2.5278548281958841e+01
-2.0734868051567714e+00
-3.3419966585174881e+00
--2.3264072831967582e+01
-1.4098118003277477e+01
-3.6169542059474287e+00
--2.6323357306057407e+01
-1.3155359149710520e+01
-4.0742798381458352e+00
--3.0139094439725771e+01
-1.3505164290627176e+01
-3.9309641437375249e+00
--2.8613502350366854e+01
-1.4716972932989147e+01
-3.1634252288733502e+00
--2.2847667438217684e+01
-1.9020881297713821e+00
-3.1088175298228822e+00
--2.2319803806943476e+01
-1.4984822591194243e+01
-3.4106970501736358e+00
--2.3990742679024702e+01
-1.4717321919200630e+01
-3.3432654760689280e+00
--2.3871174018878758e+01
-1.2938161584288702e+01
-4.3337209594980877e+00
--3.3062068688320110e+01
--1.2346808846101371e+01
-4.5517084419656442e+00
--3.6067671310908182e+01
-1.4634883471509657e+01
-3.1041424143680598e+00
--2.2886365890139857e+01
--1.3370533544411300e+01
-5.0188990179892139e+00
--3.8874508666099942e+01
-1.3734182721721561e+01
-3.5930984644180839e+00
--2.7402887080835441e+01
-1.5339515430157050e+01
-3.1084011906170863e+00
--2.2985022844043794e+01
--1.2053211219117694e+00
-3.2020886037411671e+00
--2.3833226484869453e+01
--6.1698731276749286e-01
-2.9996820622091360e+00
--2.2735276421560261e+01
-1.4411099016502169e+01
-3.6088534851450476e+00
--2.7325151697710552e+01
-1.3549585601893321e+01
-4.2687365292496056e+00
--3.3849169363491001e+01
-1.4576205510798843e+01
-3.2267657328060269e+00
--2.4210531674192957e+01
-1.4122445868330777e+01
-3.4939508225136438e+00
--2.6702611528673042e+01
-1.4100453787715205e+01
-3.4605144895011919e+00
--2.6683847346545846e+01
-1.4012303625633889e+01
-3.4350015215680210e+00
--2.6554586196153515e+01
--1.3232249055397108e-01
-3.0255390652896366e+00
--2.2680504380178032e+01
-1.4971606644562065e+01
-3.2768145745360640e+00
--2.4881574417644011e+01
-1.2551794363123630e+01
-3.9131965503733941e+00
--3.1547921410446559e+01
-1.4175540088883084e+01
-3.3652279348384142e+00
--2.6333063278734624e+01
--1.2297168319859551e+01
-4.2350970844721436e+00
--3.5397618582887254e+01
-1.4335643675342359e+01
-3.1848957111294256e+00
--2.4947506629374150e+01
-1.6035196547570280e+01
-3.7366198498253338e+00
--2.9867842562389704e+01
-1.4412089592872494e+01
-3.3392759941425769e+00
--2.6182251299800853e+01
-1.6402450509275141e+01
-3.7175827992658466e+00
--2.9639936990068552e+01
-1.4596793913289343e+01
-3.1797906806503726e+00
--2.4865373132612604e+01
--5.3183034732697854e-01
-2.8773055085460757e+00
--2.2528693310142920e+01
-1.6366421677455413e+01
-3.8145090968259581e+00
--3.0788463884855847e+01
-1.6366421677455413e+01
-3.8145090968259581e+00
--3.0788463884855847e+01
-1.4494175050125268e+01
-3.1661594651391471e+00
--2.4961428679272519e+01
-1.5862899277754977e+01
-3.2194179338079767e+00
--2.4062567797345213e+01
-1.5862899277754977e+01
-3.2194179338079767e+00
--2.4062567797345213e+01
--1.1939724397933594e+01
-4.2239628704429721e+00
--3.5883290316693852e+01
--1.3889897424227868e+00
-3.0069268876141311e+00
--2.3832950574813275e+01
--1.3700111467439497e+00
-2.9585268176800956e+00
--2.3771528923751294e+01
-1.4011501591992454e+01
-3.3603987245213447e+00
--2.6949502618610250e+01
-1.8620172892481133e+01
-3.7063642153355159e+00
--2.9503129382631016e+01
-1.4284713309081226e+01
-3.2016075439032035e+00
--2.5587349839059033e+01
-1.4186393236670266e+01
-3.3262131610397550e+00
--2.6807220632280725e+01
--1.3001224006605153e+01
-4.0105585795277738e+00
--3.4500031475958870e+01
-1.5270088923226062e+01
-3.2429527407434744e+00
--2.5017553116641416e+01
--6.7194279371539016e+00
-4.5170812494959476e+00
--3.8910875177148043e+01
--3.3425877239435420e-01
-2.7352270678247850e+00
--2.2224918243518545e+01
--3.3425877239435420e-01
-2.7352270678247850e+00
--2.2224918243518545e+01
-1.7342929739804383e+01
-3.4819862146258092e+00
--2.8819160048422450e+01
-1.4812827771100299e+01
-2.7684201659502872e+00
--2.2845233110278997e+01
-1.3288054945888211e+01
-3.4356693901244570e+00
--2.8778521189437981e+01
-1.4519435242114035e+01
-3.0368244821858394e+00
--2.4989819896619810e+01
-1.4298833866941647e+01
-3.2430745618455452e+00
--2.7318838077320375e+01
-1.2839493641812654e+01
-3.4718445837171688e+00
--3.0519969934734998e+01
-1.3657581162738646e+01
-3.2811410555382774e+00
--2.8175348700154974e+01
-1.8393906453809553e+01
-3.5026869448198132e+00
--2.9464967552033276e+01
-1.5136562111331346e+01
-2.8325904489725708e+00
--2.3822681978793288e+01
-1.4805815246870083e+01
-2.8401469486815536e+00
--2.3694097068576742e+01
-1.3510687529274721e+01
-3.2232824210742432e+00
--2.8057215559238728e+01
-1.3510687529274721e+01
-3.2232824210742432e+00
--2.8057215559238728e+01
-1.3509305855251375e+01
-3.2471080773244245e+00
--2.7853155388808851e+01
-1.4031002647213180e+01
-2.9379579190906733e+00
--2.5421971590548843e+01
-1.3477243235594507e+01
-3.2688920496926559e+00
--2.8370040191980948e+01
-3.6590951812135257e+00
-2.5515802243774388e+00
--2.1908594273251243e+01
-1.3963980285653363e+01
-3.0824496414389135e+00
--2.7173944064974968e+01
-1.5263668857866497e+01
-2.9221260867715704e+00
--2.4681981443774550e+01
-1.4509648584357818e+01
-2.8418871269452195e+00
--2.4755410430609903e+01
--2.0160775792026353e+00
-2.9567616210225722e+00
--2.6111878425891103e+01
-1.4350777717363911e+01
-3.0784117427749633e+00
--2.7020002587172439e+01
-1.5503870550095893e+01
-2.6878918837897081e+00
--2.3224762499187360e+01
-1.4064856273968028e+01
-2.8598980293537557e+00
--2.6013422128989838e+01
-1.3558063227650779e+01
-3.1172140530671104e+00
--2.8391796050670241e+01
-1.4690565754329199e+01
-2.7889335934468744e+00
--2.4803228174303211e+01
-1.4246921529084775e+01
-2.8344599484766220e+00
--2.5609086845437773e+01
-1.4528105888713220e+01
-2.7988100379022067e+00
--2.4839941037999072e+01
-1.4528105888713220e+01
-2.7988100379022067e+00
--2.4839941037999072e+01
-1.5082914026955427e+01
-2.6587082745779571e+00
--2.3414872906591249e+01
--7.6222291501374553e+00
-3.9890890944924164e+00
--3.7511709251125609e+01
-1.4006860883752488e+01
-2.8451583733745780e+00
--2.6147102146260778e+01
-1.8158279271593234e+01
-3.2322342057253461e+00
--2.9548389577410784e+01
--2.8131902766675760e+00
-2.9610062854043950e+00
--2.7268721655083986e+01
--2.8138555014256403e+00
-2.9577307430157322e+00
--2.7244029225598659e+01
-1.3596110005630589e+01
-3.0260902045770712e+00
--2.7860794978630025e+01
-1.5601356373792763e+01
-2.8939976323371424e+00
--2.6623604072213020e+01
-1.5601356373792763e+01
-2.8939976323371424e+00
--2.6623604072213020e+01
-1.3527488503470185e+01
-2.9356342157920534e+00
--2.8114596551406045e+01
-1.3682989861793224e+01
-3.0324827491499837e+00
--2.8731046733349736e+01
-1.4714932348891622e+01
-2.9473934143345684e+00
--2.6580769763029899e+01
-1.4858644045657545e+01
-2.6458687140252386e+00
--2.4008179937378863e+01
-1.4873944849597807e+01
-2.7844940701554499e+00
--2.5631603688531516e+01
-1.4169305164681170e+01
-2.7405113174409115e+00
--2.6013260118309692e+01
--8.3435734860885571e+00
-3.7374693881302430e+00
--3.7440001994674674e+01
-1.3851430334188275e-01
-2.2981064378501674e+00
--2.1554700066807872e+01
-1.3851430334188275e-01
-2.2981064378501674e+00
--2.1554700066807872e+01
-1.3368581106291431e+01
-2.9299335175396783e+00
--2.8600305335650372e+01
--2.8693630717588476e+00
-2.7751111618979443e+00
--2.7008217172944743e+01
-1.4943946674232890e+01
-2.4792650636570879e+00
--2.3418904521580746e+01
-1.3787355167596605e+01
-2.8477669901390250e+00
--2.8644047390432785e+01
-1.9425578310465603e+01
-2.9725946985162528e+00
--2.8941910728666716e+01
--1.6127178234679740e+00
-2.4632753502377853e+00
--2.3506713824625908e+01
-1.4341163852110892e+01
-2.5952396102542088e+00
--2.5657845030386493e+01
-1.6325770012350219e+01
-2.9207094539308742e+00
--2.9638159095021770e+01
-1.4391032308116660e+01
-2.4692313094960938e+00
--2.5020344882042291e+01
-1.8684211842361012e+01
-2.9104473348382047e+00
--2.9222641401151659e+01
-1.2132708899853075e+01
-3.4349467286458126e+00
--3.7198295123895313e+01
-1.4216713092581990e+01
-2.4544357096475307e+00
--2.5537894700914112e+01
-1.3486505485220530e+01
-2.7289706415407364e+00
--2.8375677253225774e+01
-1.5554237739471780e+01
-2.6218187868494485e+00
--2.6874324918450611e+01
-1.4956811590737615e+01
-2.4183772703709252e+00
--2.4968344236468859e+01
-1.5807443836060111e+01
-2.5143501265605122e+00
--2.4283325709040007e+01
-1.3252981565651066e+01
-3.1162758607226260e+00
--3.3181686435418115e+01
-1.4696979139280957e+01
-2.8117597478301022e+00
--3.0283687177809686e+01
-1.3669078244962922e+01
-2.6005376424890421e+00
--2.8199885238108504e+01
--3.5438307108307754e-01
-2.2135412284090386e+00
--2.1817944274277977e+01
--3.1141628978974373e-01
-2.1169701057813519e+00
--2.1687298466841288e+01
--1.0402412876848366e+00
-2.2139636659425128e+00
--2.2413491959044318e+01
-1.3270027357092829e+01
-2.6816812776069034e+00
--2.9912143160770633e+01
-1.4657507458180739e+01
-2.4896914716170175e+00
--2.6351812628055736e+01
-1.4685679614904110e+01
-2.5040248053961891e+00
--2.6426043680538122e+01
-1.6485675748504789e+01
-2.7058816730910520e+00
--2.9687576092289554e+01
-5.0301483133206726e-01
-2.0356175447982920e+00
--2.1321283126109378e+01
-1.3908292815827421e+01
-2.4781588702253856e+00
--2.7692177375580673e+01
-1.3605909905477031e+01
-3.0071596591291296e+00
--3.4218507405048811e+01
--1.2176070466617151e+01
-2.8697066256812609e+00
--3.3397927025595422e+01
-1.8675478516911664e-01
-2.1244213730898815e+00
--2.1553836574841188e+01
-1.4608762102584105e+01
-2.8869899809651067e+00
--3.2571778725384164e+01
-1.4604349802187434e+01
-2.2984276942261430e+00
--2.5655152140231703e+01
-3.1401200753833964e+00
-1.9579295263738317e+00
--2.1148134325753592e+01
-1.3885510831865661e+01
-2.4286462504154254e+00
--2.7648785206193427e+01
-1.5425869250552740e+01
-2.3163256505168088e+00
--2.4778278061061869e+01
--2.9289975539200084e+00
-2.3040306228184466e+00
--2.6228027630500975e+01
-4.3067734285509573e-01
-1.9626538926353692e+00
--2.1077748470047975e+01
-4.9333370679455940e-01
-2.0138645796188324e+00
--2.1207881282322784e+01
-1.4192432684718820e+01
-2.2486833205479657e+00
--2.6536563265077888e+01
-1.6565840780393078e+01
-2.5556341240422302e+00
--2.9505886122406153e+01
-1.4694460584359613e+01
-2.3286768691190236e+00
--2.6307249674295623e+01
-3.9548361636598578e-01
-1.9771837516628690e+00
--2.1094121461331810e+01
-1.4353373718612600e+01
-2.2232691950133043e+00
--2.5847360101817110e+01
-1.4353373718612600e+01
-2.2232691950133043e+00
--2.5847360101817110e+01
-1.5415464583519407e+01
-2.3405081227219262e+00
--2.7103774057544701e+01
-1.5081402543687927e+00
-1.8433377470453145e+00
--2.0829304047917816e+01
--1.3871155220822815e+00
-1.9674826871362208e+00
--2.2600445241184158e+01
-2.0673676382884856e-01
-2.0067888792918001e+00
--2.1826891727777941e+01
-1.4906152503626279e+01
-2.1111647519705623e+00
--2.4364864033193488e+01
--2.3133875489961420e+00
-2.1933233569965611e+00
--2.5299279180897688e+01
-1.3606602126771598e+01
-2.4380289302513041e+00
--2.9549676403389068e+01
-1.7640709105581156e+01
-2.4806719540799107e+00
--2.9751381146168612e+01
-1.2267786657089369e-01
-1.8259338490718746e+00
--2.1182292691871506e+01
-1.4436808273549993e+01
-2.0919427776185247e+00
--2.5419784553697522e+01
-1.4374825822365937e+01
-2.0801074979780827e+00
--2.5350450142229551e+01
-1.2643960026059217e+01
-2.5974385204716675e+00
--3.3256504395797421e+01
-1.4974394786212425e+01
-2.1345903955285666e+00
--2.5833995702111888e+01
-3.0170055783887757e+00
-1.7583635512641353e+00
--2.1055770923624333e+01
--1.0360802429960923e+01
-2.6137444362391755e+00
--3.4407442409685871e+01
--1.0360802429960923e+01
-2.6137444362391755e+00
--3.4407442409685871e+01
-1.5233991310320867e+01
-1.9740143891791930e+00
--2.3976620412843033e+01
--6.9077678756157690e+00
-2.7398924408697867e+00
--3.5944035970404705e+01
-1.3294918545371264e+01
-2.2685221977648178e+00
--3.0302755656842379e+01
-1.4209458286925443e+01
-2.1153819810322876e+00
--2.7093367123328999e+01
-1.4773588398844918e+01
-2.0402858162106532e+00
--2.5616981275713467e+01
-1.4554497107714932e+01
-1.9852886355085348e+00
--2.5374361707923004e+01
-1.5524408315249516e+01
-2.1160232920396855e+00
--2.5319109199483240e+01
-1.3100762466681475e+01
-2.6315130787749008e+00
--3.4913090302128481e+01
-1.6474871074343882e+00
-1.6639268065538357e+00
--2.0615289879510296e+01
-1.5134680242330441e+01
-3.0575026519644819e+00
--4.0338472827380578e+01
-1.4518872840714046e+01
-2.1834380560643663e+00
--2.8622902296053045e+01
--7.8389036636494360e+00
-2.5414339685073992e+00
--3.5187533601095808e+01
-1.4115406256177463e+01
-2.0704620259899760e+00
--2.7705939993076463e+01
--7.0690602187010585e+00
-2.5603976258999563e+00
--3.5357382602893544e+01
--7.0690602187010585e+00
-2.5603976258999563e+00
--3.5357382602893544e+01
-1.6012645754821769e+01
-2.0093286270199364e+00
--2.4068938884172656e+01
-1.4236179516230862e+01
-1.9768835656402017e+00
--2.7103585082398766e+01
-1.6095150632127343e+01
-1.9957607594285995e+00
--2.3993201836090353e+01
-1.4625487836707733e+00
-1.5980470788152989e+00
--2.0627762691418713e+01
-1.4035411276540406e+01
-2.0254797489209762e+00
--2.8138157638906549e+01
-2.8634276565321448e+00
-1.5930998878841109e+00
--2.0820002576691365e+01
-1.4134318771961389e+01
-1.9307543964008891e+00
--2.7051607521844794e+01
-1.5907741657093606e+01
-1.9563950829361314e+00
--2.4354224810865475e+01
--1.2716750352058682e+01
-2.4170847243059619e+00
--3.5368791528576921e+01
-1.0987097875496410e+00
-1.5525517461427079e+00
--2.0664770103737478e+01
-1.3920079170448282e+01
-1.8472600993993462e+00
--2.7547328246614402e+01
-1.3564130890558403e+01
-2.4343757835520474e+00
--3.5051833296904903e+01
-1.3676985984843931e+01
-2.2688842884375076e+00
--3.3950640694114803e+01
-1.7173863983213771e+01
-2.0078099475501689e+00
--2.9111999588991697e+01
-1.4604816838352821e+01
-1.7033247226539561e+00
--2.4910395688567068e+01
-1.4302110396233413e+01
-1.8676317074624305e+00
--2.7506489310522142e+01
-1.5833922213637829e+01
-2.0626499170669219e+00
--3.0372028102809882e+01
-1.4803634214799160e+01
-2.7656888332244587e+00
--4.1211653880028756e+01
--3.3148918918795558e+00
-1.7616281386530765e+00
--2.5545253265665629e+01
-1.7258320420688847e+01
-1.9517409063464732e+00
--2.9114774638162313e+01
-1.4006919196381380e+01
-1.8401914049895323e+00
--2.8325215448898348e+01
-1.4194499973131631e+01
-1.9099460920087272e+00
--2.8631174668127041e+01
-1.3854472924458550e+01
-1.9172520854448241e+00
--2.8425476875913954e+01
-1.4551037237574368e+01
-1.8034823587813864e+00
--2.7001874138314108e+01
-7.5913217212129680e-01
-1.4407998212913178e+00
--2.0724426443710307e+01
-1.4287527022850277e+01
-1.7988788739768675e+00
--2.7962239053424369e+01
-1.4194288665882588e+01
-1.7409724823158943e+00
--2.7249081162578275e+01
-1.4998387419154554e+01
-1.8887217066363495e+00
--2.8567611591121707e+01
-1.4163726673264890e+01
-1.7071542261095911e+00
--2.7117244481769124e+01
--6.8440783731239474e+00
-2.2108043768339054e+00
--3.5730484077650935e+01
-1.4585234139595773e+01
-1.5512545692781310e+00
--2.4517752918625028e+01
-1.4498134976879518e+01
-1.7405901904294736e+00
--2.7136132816824762e+01
-1.4884862170054769e+01
-1.5857462264742979e+00
--2.4295307092751795e+01
-1.4884862170054769e+01
-1.5857462264742979e+00
--2.4295307092751795e+01
-1.4882551493136841e+01
-1.5416596849798252e+00
--2.4866181198509608e+01
-1.4473980287700000e+01
-1.6154976926340618e+00
--2.6744638046954208e+01
-1.7980249553319741e+01
-1.7856763126547737e+00
--2.9553441922314938e+01
-1.4767523730750273e+01
-1.7057023140429255e+00
--2.7937871019717171e+01
-1.4637046810795923e+01
-1.6290012682492376e+00
--2.7676069376343364e+01
-1.4290979542566465e+01
-1.6342467594222831e+00
--2.8196478259044508e+01
-1.4082784967665855e+01
-1.5749175615409547e+00
--2.7882655963491406e+01
-1.4685847937422126e+01
-1.5408569387304687e+00
--2.6847032961924839e+01
--1.5879547667972196e+00
-1.3880046892977356e+00
--2.2601531686898145e+01
-4.8003538451815175e-01
-1.2948135019363212e+00
--2.0737327048038125e+01
-1.4511853942997030e+01
-1.4871096376981832e+00
--2.6648190630729925e+01
-1.4343579490154813e+01
-1.4630588391650938e+00
--2.6357280090003631e+01
-1.7970322652134669e+01
-1.7234268780217072e+00
--2.9550150556469806e+01
-1.5931611652308625e+01
-2.3525128195983380e+00
--4.1910960252725019e+01
--1.1887436186673707e+01
-1.7513798788675128e+00
--3.2456860842003898e+01
--1.2795580361805875e+01
-1.9126673234281502e+00
--3.5295697786605317e+01
-8.2112097697448572e-01
-1.2394300633325230e+00
--2.0586376721740017e+01
-8.1829493829720135e-01
-1.2570477889129406e+00
--2.0612654590182018e+01
-1.5139747457806260e+01
-2.2920120677851199e+00
--4.1244661791059436e+01
-1.4276863816421653e+01
-1.4888118527119290e+00
--2.7006784731481623e+01
-1.4251339456688319e+01
-1.4712056422182949e+00
--2.6950348938682914e+01
--1.7762362009539714e+00
-1.3425143878133032e+00
--2.2939891896281917e+01
-1.2908568337293485e+01
-1.7057845382530126e+00
--3.2920211000089495e+01
-1.4009461234487841e+01
-1.5250425881571952e+00
--2.8489268105973313e+01
-1.4473416474948911e+01
-1.4086414497185578e+00
--2.6348185981068628e+01
--1.1899624504569972e+00
-1.2567079021576926e+00
--2.2001141621642844e+01
-1.3961391939888086e+01
-1.4630485581202086e+00
--2.8648410102322497e+01
-1.2883653566433100e+00
-1.1769877144308858e+00
--2.0476908986138358e+01
-1.3991319740554664e+01
-1.7499701015525662e+00
--3.2728792903490216e+01
-1.1773938958838541e+00
-1.1684309171786100e+00
--2.0481868682125572e+01
-1.8144403450751170e+01
-1.5745957137029245e+00
--2.9487389294275921e+01
-1.8144403450751170e+01
-1.5745957137029245e+00
--2.9487389294275921e+01
-1.2834668013536875e+01
-1.6339030160054426e+00
--3.3517426947934268e+01
-1.4004021903913168e+01
-1.4408363817243168e+00
--2.8845988218826310e+01
-1.4583418523661338e+01
-1.2973608406758441e+00
--2.5558051021422134e+01
-1.5252020714581814e+01
-1.2402814160373543e+00
--2.4767369753605777e+01
-1.4757426769324484e+01
-1.3517698059959715e+00
--2.6427515936724191e+01
-1.5579455160243649e+01
-1.2693687093323602e+00
--2.3506327117426508e+01
-1.4054095292224206e+01
-1.3674774849870033e+00
--2.8068365482744323e+01
--4.2743264647330792e-01
-1.1633104392409592e+00
--2.1288546415989181e+01
-1.4551876539128971e+01
-1.4214873245454318e+00
--2.7462453428615564e+01
-1.4323404142182470e+01
-1.3747520030930407e+00
--2.7079528899526149e+01
-1.5081454944455141e+01
-1.4349706005863869e+00
--2.7962907632333071e+01
-1.3920969859557648e+00
-1.1543301819410914e+00
--2.0557798526024015e+01
-1.3893290511862098e+01
-1.3473617535040900e+00
--2.8766590553301654e+01
-1.4732426679418527e+01
-1.3412041211677046e+00
--2.6145150516544287e+01
-1.5168334758991119e+01
-1.4178801634100870e+00
--2.6347096815929948e+01
-1.4684371084981915e+01
-1.2613569277720029e+00
--2.5662580457125962e+01
-1.4481714988071028e+01
-1.3172062101605582e+00
--2.6614177339826622e+01
-1.4032242367781027e+01
-1.4009829344790647e+00
--2.8929986227243777e+01
-1.4021988160953052e+01
-1.2783710137576527e+00
--2.7904386440550045e+01
-1.4479537990637724e+01
-1.1834240078427030e+00
--2.5685382266063215e+01
--1.9014285548346830e+00
-1.1646829676227117e+00
--2.2961962428449027e+01
-1.3825149737589779e+01
-1.7755189374853493e+00
--3.6886041016983491e+01
--2.0427464248947808e-01
-1.0909983540096211e+00
--2.1030491672693579e+01
-2.3232910225834340e+00
-1.1693466723060477e+00
--2.1596145734262929e+01
-2.3232910225834340e+00
-1.1693466723060477e+00
--2.1596145734262929e+01
-1.2862221533827180e+01
-1.4527841244743107e+00
--3.3621402294338012e+01
--9.6065352306382898e+00
-1.4707762494542005e+00
--3.3246528253841667e+01
--9.6065352306382898e+00
-1.4707762494542005e+00
--3.3246528253841667e+01
-1.6817555765499293e+01
-1.3781659157200852e+00
--3.0293846483799012e+01
-1.4546793707574908e+01
-1.1845776072719001e+00
--2.6124028172273963e+01
-1.6592734472545118e+01
-1.3377026815885396e+00
--2.9805448349393895e+01
-1.4378871232734175e+01
-1.1859821465912164e+00
--2.7279415644409845e+01
--8.4328358208575072e+00
-1.4430535058283303e+00
--3.3565305388998837e+01
--2.4266774014853625e+00
-1.1253057578633352e+00
--2.3754390043912490e+01
--1.3986866567467706e+00
-1.0842486234974729e+00
--2.2199874341776134e+01
-1.5126365737250300e+01
-1.2876213906104750e+00
--2.8603239599041792e+01
-1.5093296779377834e+01
-1.2765663060653030e+00
--2.8655094455244718e+01
-1.5771176390106216e+01
-1.2719951159429945e+00
--2.5029963037153475e+01
-7.6888861170260570e-01
-9.9043204289722320e-01
--2.0512271811252166e+01
-1.4499351861226463e+01
-1.2856881910300948e+00
--2.9264629816895997e+01
-1.0511790958941489e+00
-9.3776044960298743e-01
--2.0451051594091947e+01
-1.4611878089903495e+01
-1.1661013724258249e+00
--2.8040149189338798e+01
-1.4504156642026681e+01
-1.1526959926253051e+00
--2.7486429387168339e+01
-1.5018483672979269e+01
-1.0228925920814651e+00
--2.4506465471252163e+01
-1.3711169529231141e+01
-1.1650819023665202e+00
--2.8839059018617270e+01
--2.3121973335542036e+00
-1.0115574433666736e+00
--2.3555374804149182e+01
-1.4624513406412065e+01
-1.0222698841475559e+00
--2.6850936512586042e+01
-1.4961888801987186e+01
-1.0974201943988282e+00
--2.6715255824742734e+01
-2.0245925732723888e+00
-8.9617739719420730e-01
--2.0391616919065392e+01
-1.4874498314580539e+01
-1.0961543190276686e+00
--2.6900836170679007e+01
-1.4244879555824323e+01
-9.5875040358410513e-01
--2.7350234205105483e+01
-1.4244879555824323e+01
-9.5875040358410513e-01
--2.7350234205105483e+01
-4.4103023151995829e-01
-8.6428594677683557e-01
--2.0562817018223825e+01
--1.3198829054725319e+01
-9.8680205595945447e-01
--2.8422195460153361e+01
--9.9260500146538377e-01
-8.9750463571095562e-01
--2.1676146713308626e+01
-4.7405948166686471e+00
-8.8118563627262880e-01
--2.1905321687358946e+01
-1.5373969894172282e+01
-8.8136243505674206e-01
--2.3992537296536792e+01
-1.5192252597616845e+01
-9.2902582855463822e-01
--2.3736113353203343e+01
-1.4254493293327206e+01
-9.7614617997932340e-01
--2.8455937461783385e+01
-1.4231658811386763e+01
-1.0106220842460691e+00
--2.8439981695356312e+01
-1.8565173933694727e+01
-1.1108036397278156e+00
--2.9257798158582851e+01
--8.1823856980951355e+00
-1.1803687770904849e+00
--3.3414538392281592e+01
--8.1823856980951355e+00
-1.1803687770904849e+00
--3.3414538392281592e+01
-2.4688708477189540e+00
-8.3469572975324624e-01
--2.0410048704309570e+01
-1.5457283051748544e+01
-1.0536948151922252e+00
--2.8012971761000816e+01
-1.7642293134361346e+01
-1.0983968416217751e+00
--2.9817362461380704e+01
-1.4980390996613641e+01
-1.0533241502297537e+00
--2.7179481785296332e+01
-1.4973148385412030e+01
-9.9984202671489575e-01
--2.6719718818959677e+01
-4.1428936386710619e-01
-8.1679572345208706e-01
--2.0599407979601974e+01
-1.4168425246761787e+01
-9.6500436960764158e-01
--2.9483463807098996e+01
--8.1528844128091205e+00
-1.1202167753824706e+00
--3.2937245128107755e+01
--9.2322361229880805e+00
-1.0925623077415001e+00
--3.2725740036397056e+01
--9.2322361229880805e+00
-1.0925623077415001e+00
--3.2725740036397056e+01
--8.5256267487466868e+00
-1.1206581413423220e+00
--3.3732536542138398e+01
--8.0521179382703316e+00
-1.1040511210118000e+00
--3.3098467512716596e+01
-1.3938702007785048e+01
-1.2511032961801662e+00
--3.5540585589059518e+01
-1.4528668093613664e+01
-8.9610662565321053e-01
--2.7392454814189403e+01
-1.4701313785539693e+01
-8.4943346761738847e-01
--2.6113918928576503e+01
-1.4246134135894433e+00
-7.4426649151788016e-01
--2.0356708190944413e+01
-3.2639723180114828e+00
-7.5369484617544191e-01
--2.0695814328134514e+01
-7.2197109512511695e+00
-8.2145784967143920e-01
--2.4991770774607232e+01
-7.2197109512511695e+00
-8.2145784967143920e-01
--2.4991770774607232e+01
-1.5254527647109475e+01
-9.6725516227215902e-01
--3.2051294939690173e+01
-1.3606893788652911e+01
-1.0787464365545079e+00
--3.3728721539982274e+01
-1.5342664520696395e+01
-8.1255187272893681e-01
--2.3983479819097717e+01
-1.5336407603061529e+01
-8.1789965631782791e-01
--2.4035933373346612e+01
-1.5053084369511856e+01
-7.2117317372834033e-01
--2.3585546204612108e+01
-1.4455401564735178e+01
-7.5059015089304393e-01
--2.7265098497724420e+01
-1.4361269761988000e+01
-7.8198831558435822e-01
--2.7815385022393556e+01
-1.4413678679005633e+01
-8.3184929489884818e-01
--2.8391256481249197e+01
-1.4584258145647357e+01
-7.2716181343240682e-01
--2.6862048394206447e+01
-1.4542789046783144e+01
-6.6509218355152255e-01
--2.6767408559382751e+01
-1.4996449299078833e+01
-7.6950743507730812e-01
--2.6815453318102382e+01
--9.0847833887537437e+00
-8.0764371968702076e-01
--3.3434376112593974e+01
-1.5640739781725975e+01
-7.6896857381332107e-01
--3.1066595572196391e+01
-1.5450673517395330e+01
-7.0862525369115470e-01
--2.8339515307216494e+01
-1.4048509827018270e+01
-7.1062047276325091e-01
--2.9509529781736560e+01
-1.5402531495560689e+01
-6.2592589730891568e-01
--2.7826017888673878e+01
-1.4461789536794909e+01
-5.3345827961214909e-01
--2.6748599244877333e+01
-1.4524497739340712e+01
-5.6492535789317011e-01
--2.8189483691510780e+01
-1.4449845092029577e+01
-5.1816751797768013e-01
--2.8023606963575830e+01
-1.4811073642315748e+01
-5.9563098781942636e-01
--2.7467185683451763e+01
-1.4811073642315748e+01
-5.9563098781942636e-01
--2.7467185683451763e+01
-2.3207066733808639e+00
-5.0217916936699136e-01
--2.0358887066899729e+01
-2.8855399579224488e-02
-5.0168043500316872e-01
--2.0692856909521122e+01
-4.5110062300247540e+00
-4.8237769158524585e-01
--2.1533180696894984e+01
-1.4175966436131267e+01
-4.6789923866724437e-01
--2.8999385728495305e+01
-1.8817253315809541e+01
-5.5491124656036850e-01
--2.9238471889196759e+01
-7.2033142063138857e+00
-4.4975751166924366e-01
--2.4199718757666009e+01
--1.5814712782573392e+00
-4.5648738951826429e-01
--2.2354666882159371e+01
-9.6879782208633580e-01
-4.3588950529078829e-01
--2.0348439949847105e+01
-9.7393578597805774e-01
-4.5193185963308768e-01
--2.0430654999584259e+01
-1.4196155976876222e+01
-4.1380115534500594e-01
--2.9211965546165423e+01
-9.8544752484394094e-01
-4.6038020789257267e-01
--2.0418282743203097e+01
-1.5405448595237084e+01
-4.6090399960448591e-01
--2.8297662471997175e+01
-1.4527786952087284e+01
-2.9407215415168814e-01
--2.6836173817017308e+01
-1.4527786952087284e+01
-2.9407215415168814e-01
--2.6836173817017308e+01
-1.5499415456573677e+01
-3.9144070078250448e-01
--2.3136857099952170e+01
--9.4722685029364158e+00
-4.5859991704725911e-01
--3.1753090209480757e+01
-2.5316279359046545e-01
-4.2398450749161271e-01
--2.0675367550159638e+01
-1.4713160879649877e+01
-3.4186554363256716e-01
--2.7984292872584781e+01
--9.2392935385632899e+00
-3.1709953340971647e-01
--3.1637898624250244e+01
-1.4734195702777967e+01
-1.9596749836847310e-01
--2.6907097915177445e+01
-1.8999344505690843e-01
-2.4169414608483664e-01
--2.0666765000648162e+01
-3.0249136228188639e-01
-2.4134644980658068e-01
--2.0583019287423181e+01
-3.1020798989800848e+00
-2.3336390659486805e-01
--2.0576556265689721e+01
-1.4733843413926808e+01
-4.4979420485257653e-02
--2.7714738595613301e+01
-1.4285771147194883e+01
-1.4887555838058322e-01
--2.8937733520415620e+01
-1.4520600037606565e+01
-9.3378621952728530e-02
--2.7913099563355974e+01
-1.4481550760403403e+01
-1.1378163796276990e-01
--2.7837771366075785e+01
--2.3757725307214050e+00
-2.2540293506668446e-01
--2.2646074820114514e+01
-1.4669818004715896e+01
-3.3171312578901123e-02
--2.7213264084196343e+01
-1.4623166292120874e+01
-7.5321395665083099e-02
--2.7332948256580252e+01
-1.5483399075935138e+01
-2.2498088123909621e-01
--2.6450554809817881e+01
--2.3506744581578651e+00
-2.0985057898925108e-01
--2.2780572340604536e+01
-1.4483675860882537e+01
-6.3519336998591205e-02
--2.8903097907820303e+01
-1.7673168772490033e+01
-1.4299229562842447e-01
--2.9912551298083347e+01
--8.8279156986540297e-01
-1.8115861764750801e-01
--2.1428735428656964e+01
-2.9153586067184021e+00
-1.6915768605745299e-01
--2.0548830298791263e+01
-1.4824183714014277e+01
-1.1984803755400121e-01
--2.8158834351773358e+01
-1.5121253115028074e+01
-1.5701041438698107e-01
--2.7487381082011492e+01
-1.4829540858449942e+01
-5.6247320039142901e-02
--2.5632916184333880e+01
-1.4875554290064100e+01
-6.2913226248843990e-02
--2.5561727796273757e+01
-1.5107808751782979e+01
-9.8932515820841074e-02
--2.5592431779047267e+01
-1.4804112789140840e+01
--8.8259632704261431e-02
--2.7673484143924561e+01
-1.5085872636824631e+01
-2.3015703502869828e-02
--3.2434949940560571e+01
-1.6033466313915035e+01
-1.9128534988825344e-01
--2.4960450811973235e+01
-1.6033466313915035e+01
-1.9128534988825344e-01
--2.4960450811973235e+01
--2.3474641714316191e+00
-1.1889404008924524e-01
--2.2401120340077625e+01
-3.1969861236852162e+00
-1.1851465644317095e-01
--2.0585392192672632e+01
-4.0205138765999155e+00
-1.0722686083201864e-01
--2.1366084665699706e+01
-1.4591547194225065e+01
--8.0998281231912064e-02
--2.7011242680870208e+01
-1.5553420617058018e+01
-1.3127952495393078e-01
--2.6210664669577305e+01
-3.2324889000520676e+00
-8.6744472200909750e-02
--2.0651107484480558e+01
-1.4880531262231361e+01
--3.9369853489653113e-02
--2.6440390601549705e+01
-1.4735157126645083e+01
--6.4682613029277941e-02
--2.7682609428214626e+01
--2.3083948191495209e+00
-5.7842545042564662e-02
--2.2306480597854151e+01
-1.4446547464595202e+01
--9.1779382103906945e-02
--2.8838070637875550e+01
-1.4316380772235666e+01
--1.8026955690182381e-01
--2.8849049890080067e+01
-1.6869359611952419e+01
--1.0892883295064375e-01
--2.9892857451420490e+01
--3.8255377562709314e+00
--1.1683708801329429e-02
--2.3146468891283082e+01
-1.9399362135278448e+01
--8.8311474494130279e-02
--2.8997972316786189e+01
-4.2727523424415015e+00
--2.0334499132369302e-02
--2.1322106549369785e+01
-3.2461211848263405e+00
--2.2982272887617287e-02
--2.0646719604122488e+01
-1.4634234965078742e+01
--2.4773698045835957e-01
--2.8047680943815294e+01
-1.5608976684236142e+01
--3.9447929902960567e-02
--2.4697347334050434e+01
-1.9244233368092907e+01
--1.1712672524567135e-01
--2.9090053165237961e+01
-1.1095245546898631e+00
--1.7185351521773223e-02
--2.0331388551480977e+01
-3.2643553012562001e+00
--5.2921013192914521e-02
--2.0616659462945140e+01
-1.5246191814377244e+01
--1.8469378624371449e-01
--2.4400118217219219e+01
-3.2427044892538355e+00
--6.5568387547982276e-02
--2.0659404842303918e+01
-3.2427044892538355e+00
--6.5568387547982276e-02
--2.0659404842303918e+01
--3.6089552465632804e+00
--9.4572978679235031e-02
--2.3253628956435229e+01
-2.5066998091934281e+00
--9.9556999207211644e-02
--2.0378030616965095e+01
-1.4626534555027568e+01
--3.2758409283411921e-01
--2.8356679567428667e+01
--8.0838896733589412e+00
--3.1956553205517080e-01
--3.1934853329769535e+01
-1.5562040087844943e+01
--3.1571044737947007e-01
--2.4471506605600254e+01
--4.9098016852777959e-01
--1.0940855057909354e-01
--2.1057805131296579e+01
-1.4044360862888565e+01
--4.0592216008045201e-01
--3.1563307401296246e+01
-1.4029978498719871e+01
--4.0221796657818454e-01
--3.1549684542081081e+01
-1.4867319683899366e+01
--4.7606994491716947e-01
--2.7468133423676900e+01
-1.1598559842395382e+00
--1.5593276759899416e-01
--2.0335220392265160e+01
-1.4607780590723523e+01
--4.6455764396681015e-01
--2.8994609856784098e+01
--2.1441543282349409e+00
--1.9405029220197831e-01
--2.1985066501845420e+01
--1.1261312106540018e+00
--2.0025795743684649e-01
--2.1673639461139459e+01
-5.7857824857977489e+00
--2.3919957552047269e-01
--2.2503075105608016e+01
-1.5728807958800669e+01
--4.6743929080547747e-01
--2.4723512680175382e+01
-1.6630628343450006e+01
--3.0193755509813369e-01
--2.6299646891448962e+01
--3.8595528755267607e+00
--2.5651270326066422e-01
--2.3102611970170532e+01
-1.4537780429033637e+01
--4.7931074017306768e-01
--2.8914046800877195e+01
-1.4970080209491123e+01
--4.6374640193188088e-01
--2.9702892073476288e+01
-5.1992765067742557e+00
--2.8854616265062139e-01
--2.2246791440861564e+01
--9.1990992929318338e+00
--5.3440399701997432e-01
--3.1601590759768481e+01
--8.6081724042848418e+00
--4.7313849446411882e-01
--3.0808138681789181e+01
-1.5357212579431415e+01
--4.6123800390337094e-01
--2.5698892075479382e+01
-5.4288555427870469e+00
--3.2623803540729190e-01
--2.2153768768480127e+01
-2.0665131976277191e+00
--2.7933986857825038e-01
--2.0326291565508239e+01
-1.6376068408647342e+01
--5.9423305249150493e-01
--3.1108913947622273e+01
-1.9053197909158964e+01
--5.4211928455723712e-01
--2.9058806608009210e+01
--3.5305730857899618e+00
--3.4376684732683804e-01
--2.2922526558316626e+01
-1.5214808220754518e+01
--5.3974661920012224e-01
--2.5404087725846111e+01
--7.5182399466172301e-01
--3.5934880903096905e-01
--2.1304659426250385e+01
--7.7440226883407881e-01
--3.3210738142663193e-01
--2.1355260188395132e+01
-1.4677276484676900e+01
--7.2242856811324674e-01
--2.7510427074047445e+01
-1.4627324680863881e+01
--6.3054758502902664e-01
--2.7549655091700327e+01
--3.5508822396926782e+00
--4.1091215994207242e-01
--2.2981153163231586e+01
-1.4729788436900026e+01
--6.9898610062784705e-01
--2.8192641891678878e+01
--8.6430223545644658e-01
--3.8150805499141760e-01
--2.1473288582763924e+01
-1.6329401757156198e+01
--7.3871949645630253e-01
--3.0622991585752366e+01
-1.4853810844484027e+01
--7.5504850344644636e-01
--2.7879081370167906e+01
-1.4864145357783382e+01
--7.1174874887034156e-01
--2.7964262352515977e+01
-1.4901569629731972e+01
--7.3042984395154098e-01
--2.8245981737583662e+01
--5.9976550796904227e-01
--4.6713344498919313e-01
--2.1210162256778919e+01
--6.8628157498480524e-01
--5.2438879841841646e-01
--2.1334404909631044e+01
-1.4654837436833565e+01
--1.0013615419727577e+00
--2.9204358764330074e+01
-4.3049895898474286e+00
--5.0758732369747006e-01
--2.1854707875542836e+01
-1.7581038874229090e+01
--8.9328918547668079e-01
--3.0093309530516255e+01
-2.5619938673620055e+00
--5.3442743395800618e-01
--2.0465961384844515e+01
-6.8123163359021026e+00
--6.6849762225405385e-01
--2.3043076982369826e+01
--3.3078248978987070e+00
--6.1379340541161975e-01
--2.2348477758935246e+01
-1.4834605973791275e+01
--9.5454484393698746e-01
--2.8417566553243162e+01
-8.9133838023290091e-01
--5.6477331992877156e-01
--2.0425052346524620e+01
--1.0019449730596813e+01
--1.0206578703779241e+00
--3.0991274540959964e+01
-1.4941165500682521e+01
--1.0399998699196409e+00
--2.8086026816902866e+01
--3.5175809520551415e+00
--7.0861520865916572e-01
--2.3136299843830908e+01
-1.5487459739766809e+01
--9.4338743426370097e-01
--2.6673435799742634e+01
-1.5120193883180324e+01
--1.1464429330650201e+00
--2.7004329230157424e+01
-1.0299635231736375e-01
--6.8703887157649446e-01
--2.0794187334159517e+01
-7.0187404530751812e-02
--6.5902315994393079e-01
--2.0801028252388587e+01
-3.6236691619343078e+00
--7.1316452855969148e-01
--2.0734574123009970e+01
-1.5520330507893208e+01
--1.2872381666413066e+00
--3.2376494807819924e+01
--1.9191812718519818e+00
--7.3647519951315599e-01
--2.1729410989261215e+01
-4.0460267606441841e-01
--7.0881623058410237e-01
--2.0734843622370200e+01
--9.4446702727867891e+00
--1.1655243754074349e+00
--2.9442545402401791e+01
--9.4446702727867891e+00
--1.1655243754074349e+00
--2.9442545402401791e+01
--3.0515811518683247e+00
--8.4180391412785016e-01
--2.2290760995155548e+01
-1.4684836008481780e+01
--1.4530272584224502e+00
--2.9811523057886674e+01
-1.1372984071434966e+00
--7.9096013704270141e-01
--2.0468263220414212e+01
-2.3734691530360688e+00
--7.8633378085955041e-01
--2.0465947400610865e+01
-1.4988282651805791e+01
--1.2471069128848087e+00
--2.8893463583886337e+01
-2.0042226969868020e+00
--8.3488690128489651e-01
--2.0464322847807793e+01
--1.5436762135168665e+00
--8.6408544607266047e-01
--2.1378019252227091e+01
-6.0724753301131278e+00
--9.6868700371432404e-01
--2.2615278430763890e+01
--9.3173958267841661e-01
--8.8657761193003382e-01
--2.1096765636011089e+01
--9.2984532265598407e-01
--8.9093633685525653e-01
--2.1095196310497290e+01
-1.8527608951665254e+01
--1.3753502833577340e+00
--2.9549210297687249e+01
--1.4875042948005879e+00
--9.0192802600003519e-01
--2.1234165777797848e+01
-1.9308732192116571e+00
--8.9248389289149155e-01
--2.0471888387827672e+01
-1.5008088200907832e+01
--1.5079603189999546e+00
--3.0529205925897777e+01
-1.4612907686884792e+01
--1.5222096974307997e+00
--2.9639396369589448e+01
--2.8192182908457850e+00
--9.7102349106224350e-01
--2.1905567671442217e+01
--3.4190146858409300e+00
--1.0230107558258845e+00
--2.3178275876065261e+01
-6.0432458378974969e+00
--1.0490267524646228e+00
--2.2412206254349744e+01
-1.5007478428248820e+01
--1.4673421082664704e+00
--2.9036720236444129e+01
-6.8466241904861311e+00
--1.0946195197847388e+00
--2.2663120064618852e+01
-1.6045976318763991e+01
--1.3733593740861745e+00
--2.5311530894561169e+01
--2.9395065791975079e+00
--1.0805870875630046e+00
--2.1944310932232906e+01
-4.5771815291284668e+00
--1.0903774959029069e+00
--2.1148097658794288e+01
-1.6555931122626748e+00
--1.0415898414999525e+00
--2.0478791339178230e+01
--1.2480861010722530e+00
--1.0781312075772838e+00
--2.1141776706138586e+01
--1.2463314887215058e+00
--1.0807480905688196e+00
--2.1147651614240186e+01
-3.2699426357333445e+00
--1.0689666546020129e+00
--2.0867850294962121e+01
--3.2897214189734969e-01
--1.0763137886360032e+00
--2.0799162809035199e+01
--1.0070802421403098e+00
--1.0883307319849860e+00
--2.0823678065501902e+01
-1.5105393157483579e+01
--1.8168663066954067e+00
--2.8755551343437073e+01
-1.5394844519806618e+01
--1.6494132498938463e+00
--2.8073365953540304e+01
-1.5293647458173997e+01
--1.7408964629975252e+00
--2.7907340248203408e+01
-2.3624631183578413e+00
--1.1407304576715445e+00
--2.0586525008386719e+01
--1.2686447665077196e+00
--1.1615435630945765e+00
--2.1239726043674334e+01
-5.1911745163162291e+00
--1.2362924216200377e+00
--2.1778412633727886e+01
-1.8937720684697744e+01
--1.7911416352648224e+00
--2.9341619306405448e+01
-1.5201019979102503e+01
--1.4878857770860185e+00
--2.2846730697968145e+01
-6.0146406151746346e-01
--1.1632201757179945e+00
--2.0764647026543592e+01
--2.5531972560012570e+00
--1.2655024726819977e+00
--2.1614284252777619e+01
--7.5152129441689497e-01
--1.2340772248143812e+00
--2.0665978419968301e+01
--7.5152129441689497e-01
--1.2340772248143812e+00
--2.0665978419968301e+01
-6.4001375781549852e+00
--1.3867244119517381e+00
--2.2157164972930591e+01
--2.3859672765781275e+00
--1.3287330738544594e+00
--2.1611485078524961e+01
--2.3346363900821210e+00
--1.3347918519059014e+00
--2.1566733879873187e+01
-3.0215314178394173e+00
--1.3107741898384104e+00
--2.0740369865486400e+01
-1.5433615064732152e+01
--1.8674144518518885e+00
--2.7644173462053782e+01
--6.8508675160701085e+00
--2.0668506647080758e+00
--2.9652972333835013e+01
-1.5941060674357152e+01
--1.7644610126944855e+00
--2.5990136303086551e+01
--8.9892019200523148e+00
--1.9139091279081548e+00
--2.8296281137832157e+01
--2.9387016793797112e+00
--1.3976432758807136e+00
--2.1405091293873642e+01
-1.6905135267177741e+01
--2.2261528120504130e+00
--3.1048640200707236e+01
-6.3937163871096629e+00
--1.5164266621928542e+00
--2.2055109331453810e+01
-1.8393144377056907e+00
--1.3863705154645543e+00
--2.0567797039890941e+01
-1.5525328001421610e+01
--1.8305269591637410e+00
--2.3140274038132141e+01
-1.8649223611178353e+01
--1.9968465662087465e+00
--2.7913623554719823e+01
-1.5715351820112575e+01
--1.9944496539542254e+00
--2.7433681757565658e+01
--1.7447504421993567e+00
--1.4842031774623705e+00
--2.1438705691582321e+01
-6.4073397737739968e-01
--1.4182687134136858e+00
--2.0482185662310918e+01
-1.5503614134927725e+01
--2.1958853872541639e+00
--2.7593406839968150e+01
-5.8344554567911215e+00
--1.5969196370374275e+00
--2.1557111610940883e+01
--2.4620200285465295e+00
--1.5650720340434128e+00
--2.1183039798935532e+01
--5.7365193184402030e-01
--1.5312503339275270e+00
--2.0628381963331130e+01
--5.7338737195948108e-01
--1.5295291507168536e+00
--2.0630876730504490e+01
-1.4909003897856495e+01
--2.3311595381008576e+00
--2.8723157023941635e+01
-1.8716695360692100e+01
--2.3404720945642854e+00
--2.9613226961552535e+01
-1.5399437146971334e+01
--2.2629029145551613e+00
--2.8017513768322598e+01
-2.4042552092445777e+00
--1.5520019286717235e+00
--2.0356873339258623e+01
--8.8565354605181834e-01
--1.6248989879649220e+00
--2.0979309188829944e+01
-1.5898321445137519e+01
--2.1603356650711714e+00
--2.5556314172568872e+01
--2.1534464570400864e+00
--1.6677500719304674e+00
--2.1202464563776580e+01
-1.2964658962639177e+00
--1.6026781646920860e+00
--2.0233004769408286e+01
-1.5732444973019694e+01
--2.2278377697570049e+00
--2.5331432394709520e+01
-1.1053000536446842e+01
--2.4923454231425852e+00
--2.9017295168554920e+01
--6.9225301197331728e+00
--2.3920766241651439e+00
--2.9086808591514391e+01
--7.1004664452043897e+00
--2.3823134090476765e+00
--2.8590381238276549e+01
--2.2243443316329055e+00
--1.7148603034640824e+00
--2.1390363962557625e+01
-1.7285753667473262e+01
--2.6990438676038746e+00
--3.0672874016969917e+01
-1.6093024125860779e+01
--2.5219356415662189e+00
--2.8630360620468561e+01
--2.3934599943665815e+00
--1.8567958827529125e+00
--2.1526975471472127e+01
--2.3541331162423944e+00
--1.8243119153000762e+00
--2.1437975082656905e+01
-8.7355615615976018e-02
--1.7588061668615955e+00
--2.0460113115027866e+01
-1.5286200059879612e+01
--2.7354039882910524e+00
--2.8382684909052269e+01
-1.8245041001056599e+01
--2.7565119773904718e+00
--3.0052802956725674e+01
-1.5777504996328952e+01
--2.2563848769309018e+00
--2.3947805923843468e+01
-1.6207751215508456e+01
--2.3866153032477930e+00
--2.4430608397478540e+01
-1.9224337331098777e+01
--2.7035727573663579e+00
--2.9357563683222356e+01
-7.0654312504599082e-01
--1.7818875205161704e+00
--2.0193935655566193e+01
-1.6230213423073515e+01
--2.5538220848360158e+00
--2.5261162524590041e+01
--1.7806689014886656e+00
--1.8564287994305626e+00
--2.0927421077462458e+01
-1.0972479244261370e-01
--1.8443278580402647e+00
--2.0502193986758666e+01
-1.5843249992611586e+01
--2.6081426741140779e+00
--2.5969359646843348e+01
-1.7484914013420259e+01
--2.9402020707205812e+00
--3.0259062116115562e+01
-1.5496065127843710e+01
--2.8705549144574438e+00
--2.8410672292421072e+01
--4.3121273506794552e-02
--1.9203179135766701e+00
--2.0588423759826803e+01
-1.5560012421725999e+01
--2.8196089901683798e+00
--2.8500097199789071e+01
-2.6923621285328156e+00
--1.9260558845298641e+00
--2.0269416686474777e+01
-2.7284403934554073e+00
--1.9591192970670681e+00
--2.0286948325890656e+01
-1.9144068893806431e+01
--3.0194023026052257e+00
--2.9685851808767495e+01
-1.9144068893806431e+01
--3.0194023026052257e+00
--2.9685851808767495e+01
-1.6200187051917155e+01
--2.7346660191539618e+00
--2.4801905642695782e+01
-1.5514357437230894e+01
--2.9952424358945251e+00
--2.8330833578366082e+01
-4.7172865112211184e+00
--2.1345250195601015e+00
--2.0853938643124472e+01
-1.6228838079771023e+01
--2.7928985543733411e+00
--2.4544058764655283e+01
-5.3767365418214412e+00
--2.1659781811915217e+00
--2.0981337288435938e+01
-1.5949605379993004e+01
--2.7691227289527807e+00
--2.4483773208642511e+01
--3.3559895021669885e+00
--2.4711127734029184e+00
--2.3894565376778626e+01
-1.4528638668741054e+00
--2.1046400405808345e+00
--2.0311545287603092e+01
-1.5671033056447333e+01
--2.9944680125278440e+00
--2.6456821515858728e+01
-6.4166416939807158e-01
--2.1433171228914105e+00
--2.0511684991289773e+01
-1.5883524941256612e+01
--2.9289850982401933e+00
--2.6564141876315603e+01
-1.6313592518448683e+01
--2.9423208607853213e+00
--2.4791002965318899e+01
-1.6279033633442207e+01
--2.9736715269762457e+00
--2.6505634635073363e+01
-5.3184022109919944e+00
--2.3055471297977079e+00
--2.0800511676803975e+01
-1.5808919398984235e+01
--3.1072462669437524e+00
--2.5435889581926681e+01
-1.6304768204202535e+01
--3.0242680650181804e+00
--2.4844726173428331e+01
-1.6019088670272925e+01
--2.9765001966770095e+00
--2.4427920712500956e+01
-4.9657657624336196e+00
--2.3463794122141470e+00
--2.0574208382751362e+01
-1.7408984649953074e+00
--2.3232563655874587e+00
--2.0349483484758323e+01
-1.6165796201239040e+01
--3.1078566412302693e+00
--2.6357885058886083e+01
--3.5831852324848140e-01
--2.3494718883129542e+00
--2.0285563366605675e+01
-3.6155460841677063e+00
--2.3972102288885697e+00
--2.0376382931533122e+01
-1.6164894167248491e+01
--3.2718933515769502e+00
--2.5243627602291955e+01
-4.7619373942882977e+00
--2.4390392276071453e+00
--2.0536269331507505e+01
-3.9304253871278476e+00
--2.4313488648781312e+00
--2.0436493770203640e+01
--3.4600660078382894e-01
--2.4137609567905129e+00
--2.0289153980737815e+01
-1.6504634171856562e+01
--3.5629226642165790e+00
--2.8435022122025629e+01
-4.6595360948313544e+00
--2.5512686475831940e+00
--2.0594706610115498e+01
-1.6516670688218191e+01
--3.6172406144110809e+00
--2.8407804569549409e+01
-1.8815342769422656e+01
--3.8352624947001996e+00
--2.9878928066627143e+01
--2.7772801146697277e+00
--2.7936279135947255e+00
--2.3046369244004797e+01
--2.7403600854412185e+00
--2.8327909990709426e+00
--2.2945834579267316e+01
--2.5860138690811885e-01
--2.4792888999151996e+00
--2.0159399771640004e+01
-7.6623075754208769e-01
--2.4908436276999995e+00
--2.0163747044038178e+01
-4.7709673572568931e+00
--2.5846212125762107e+00
--2.0691575600521254e+01
--3.5862522621186405e-01
--2.4986468979558834e+00
--2.0177389824155476e+01
--7.2744435837892496e+00
--3.3760264692151360e+00
--2.6918503444856473e+01
--8.6966169238365687e+00
--3.5213325663417998e+00
--2.7513182938347899e+01
--2.5182933327348822e-01
--2.5249959648913447e+00
--2.0145231102214716e+01
-1.6172716875636869e+01
--3.5819020544214055e+00
--2.7358450969225032e+01
-1.6129963053931451e+01
--3.4203259766093841e+00
--2.4587924972916184e+01
-1.5859627259363135e+01
--3.6170448658189089e+00
--2.7018903782021937e+01
--7.0390995264010714e-01
--2.6134774899245659e+00
--2.0228598417824941e+01
-4.0218389497791209e+00
--2.6412992729806564e+00
--2.0219240441745939e+01
-1.6008779846761822e+01
--3.6846669244060406e+00
--2.7398109173856952e+01
-1.6025227476957877e+01
--3.6057043577086705e+00
--2.5182039433059636e+01
-2.8103446679993085e+00
--2.6418502027662778e+00
--2.0082990534840249e+01
--8.4707746752382518e-01
--2.6547151821493795e+00
--2.0362671550335300e+01
-3.7657090578283641e+00
--2.6032597705523162e+00
--2.0177364342050065e+01
--7.3328450602201203e+00
--3.5419099226851696e+00
--2.6317017631537919e+01
--7.3328450602201203e+00
--3.5419099226851696e+00
--2.6317017631537919e+01
-1.6106162928633616e+01
--3.5699614973358602e+00
--2.4882838314558150e+01
-8.7247692449786984e-01
--2.6820678604327517e+00
--1.9895162023200768e+01
-8.7247692449786984e-01
--2.6820678604327517e+00
--1.9895162023200768e+01
--6.9051051993764567e-01
--2.7588683913671894e+00
--2.0405946088464919e+01
-1.6177300156483867e+01
--3.9116787130665371e+00
--2.7605017584479832e+01
-2.4862933160686778e+00
--2.6776060651438152e+00
--2.0202819774896653e+01
-1.2700578334284531e+00
--2.7946465472256916e+00
--1.9857117687422740e+01
--7.4031705640303782e+00
--3.9103962073038878e+00
--2.7230415355779641e+01
-1.7285706441104753e+00
--2.8171755841555255e+00
--1.9750243405021763e+01
-3.0133518518737192e+00
--2.8469333892047555e+00
--1.9852749384696942e+01
-2.2987330655761640e+00
--2.8683349947889041e+00
--2.0011245778405115e+01
-1.5833974760379474e+00
--2.9094297913107838e+00
--1.9704271268677189e+01
-2.2705453019466408e+00
--2.9108106964877800e+00
--1.9735573217335947e+01
--2.8415711603256808e+00
--3.4783176507785729e+00
--2.3560390273931599e+01
-4.1813738262624636e+00
--3.1522837971730286e+00
--2.0867364071883323e+01
-2.3981018522702531e+00
--2.9955452234225288e+00
--1.9777090222274587e+01
--5.4861037294604298e-01
--3.1311136661725487e+00
--2.0770681820268926e+01
-4.0525349357167375e+00
--3.1472963053118752e+00
--2.0671169891221968e+01
-5.0335652251996441e+00
--3.3151377756522269e+00
--2.1608046425168421e+01
-1.6652306787796320e+00
--3.0864199427587020e+00
--1.9790437777809878e+01
--8.2290677456123884e-01
--3.2212923101920494e+00
--2.1383574420584864e+01
-2.2811334417449221e+00
--3.1187299153174100e+00
--1.9892175721316153e+01
--6.3402118333824337e-02
--3.2599042971072469e+00
--2.0591894067361178e+01
--2.5179205912709812e+00
--3.7749001448161668e+00
--2.3624647668627304e+01
-1.8102911134396709e+00
--3.3087557895364199e+00
--2.0067047470203079e+01
-3.0247444312753755e+00
--3.4071670199190187e+00
--2.0128960020179868e+01
-1.9377446126484561e+00
--3.5053703592266166e+00
--2.0343947206338406e+01
-1.1236573067929990e+01
--4.7228264741127681e+00
--2.6169951223351696e+01
-1.2249098740239516e+01
--4.7871995988878560e+00
--2.6966472740237656e+01
-1.1322559746447670e+01
--4.7394257602865393e+00
--2.6151488150638372e+01
-1.0818925621212699e+01
--4.8133879257572696e+00
--2.6011016011261187e+01
-2.9576433526366044e+00
--3.6775503706077561e+00
--2.0510357197128972e+01
--2.3909723172848335e-01
--3.8702461307020477e+00
--2.1321271924445462e+01
--1.0800345047102260e+01
--4.1549995583602293e+00
--2.2489546329093432e+01
-4.0917472143655464e+00
--4.0776326404533272e+00
--2.1587577912548575e+01
-2.6929059670523006e+00
--3.9439077858984732e+00
--2.0698647926162987e+01
-3.9584499629086753e+00
--4.4542128417185376e+00
--2.1868358204481794e+01
-1.7198429659239480e+01
--5.9805635195778803e+00
--2.8760007882816964e+01
-4.1139802046433793e+00
--4.7040068772374015e+00
--2.3454914556083704e+01
-1.5658728162018618e+00
--4.4490348517350009e+00
--2.1479905327429186e+01
-1.6517553088179959e+01
--6.0787919412906213e+00
--2.8239951028372641e+01
--1.2537466892006135e+00
--4.6632561732861220e+00
--2.2364801373638503e+01
--7.7370725108158200e-01
--4.7273028824532286e+00
--2.2354478158835960e+01
--8.2200805178105807e-01
--4.7919840461413061e+00
--2.2527892222393714e+01
-2.1632148306652432e+00
--4.6390719233525983e+00
--2.1340751843650143e+01
-1.3718164445286883e+01
--5.9848297576007372e+00
--2.6846822753817413e+01
-1.3246645813830000e+01
--6.3351766426745435e+00
--2.6111827478568014e+01
-1.6356244767401375e+01
--6.8382241591155593e+00
--2.7501455382846316e+01
-1.6356244767401375e+01
--6.8382241591155593e+00
--2.7501455382846316e+01
-8.7752653757507759e-01
--5.3672909668628437e+00
--2.1674696578846774e+01
-1.4642780885941173e+01
--6.9858349820012355e+00
--2.6373358903769049e+01
--1.5613294003115910e+00
--6.0632802024286034e+00
--2.2767748761833310e+01
-8.1318851500758331e+00
--6.5889503989384126e+00
--2.3717488121930728e+01
--5.5631858181323368e+00
--6.4995554675123888e+00
--2.3784549002820476e+01
--4.9231427886142658e+00
--6.2335530137813828e+00
--2.2895767530058848e+01
-5.5150185717531164e+00
--6.3409962348015201e+00
--2.2914870409667625e+01
-8.3696251855889903e-01
--6.0795198433161159e+00
--2.1329584626189074e+01
-1.8086361993733480e+01
--7.9853530689018823e+00
--2.7473709161401324e+01
-1.4703437592048887e+01
--7.5422600760117833e+00
--2.5875443522895093e+01
-8.1612131711417302e+00
--6.9035520826636976e+00
--2.3274699176762574e+01
-1.5371240009445762e+01
--7.6831522604826645e+00
--2.6104104214421621e+01
-1.5820255916891355e+01
--7.7572095606069649e+00
--2.6354301173463053e+01
--4.7529962825831534e-01
--6.5215051218847604e+00
--2.2353510834951386e+01
-8.0053228689024163e+00
--6.9746452810375352e+00
--2.3183704629563341e+01
-8.0053228689024163e+00
--6.9746452810375352e+00
--2.3183704629563341e+01
--4.1036154759115480e+00
--6.5713289628526370e+00
--2.2462878311601898e+01
-1.7023938457623739e+01
--8.2328151620579799e+00
--2.6662819825264521e+01
-7.3325236304840509e+00
--7.1213913517179019e+00
--2.3052188031575405e+01
-7.2013471518176848e+00
--7.1520417045368747e+00
--2.2835117522864550e+01
-7.3036509093068069e+00
--7.3261716927852065e+00
--2.2665459639613164e+01
-7.2879031957530609e+00
--7.3422401046024977e+00
--2.2898588716346090e+01
-7.2262932392817474e+00
--7.3644444831030285e+00
--2.2654366980329733e+01
--3.4527087240037844e+00
--7.0434605058866886e+00
--2.1973299446139986e+01
--3.8949213067833779e+00
--7.3369072465851524e+00
--2.2622359299928256e+01
-1.5320327481257053e+01
--8.4696834760882673e+00
--2.5469453134839224e+01
-8.0353005496746164e+00
--7.5757163382462904e+00
--2.2833674243360903e+01
--5.4392833734224295e+00
--6.9813124663787871e+00
--2.0865540058157087e+01
--2.7352784946406175e+00
--7.2421715552572126e+00
--2.1630441531682255e+01
--5.4503383491066355e+00
--7.5294342463610793e+00
--2.2396394254619047e+01
-1.3532989457467881e+01
--8.3743181325446692e+00
--2.4439853379271078e+01
--4.7008766860236983e+00
--7.5743871923556307e+00
--2.2232351418152692e+01
--3.1197185088233823e+00
--7.5031042751318431e+00
--2.2063854846384125e+01
-6.7025166236059608e+00
--7.7101331888389826e+00
--2.1978504128088073e+01
-1.3557095647982894e+01
--8.5729605783302780e+00
--2.4426751820905846e+01
--3.7831230923586809e+00
--7.7067931033372323e+00
--2.2052972801656193e+01
-6.6684479480475982e+00
--7.8073449826970789e+00
--2.1974693308732512e+01
--5.1677974749739359e+00
--7.7516731435524555e+00
--2.2042263430053747e+01
-1.2598722758455937e+01
--8.4949399244684685e+00
--2.3746074094946636e+01
--2.5852864905164781e+00
--7.8084362385026607e+00
--2.1908736067575564e+01
-6.8506811662007667e+00
--7.9163638195363601e+00
--2.2050000094504064e+01
-8.4399012699388543e+00
--8.1520305816041567e+00
--2.2241854786521724e+01
--5.8665595099625643e+00
--7.8886793756957827e+00
--2.1849772947897140e+01
--3.5183467109490940e+00
--7.5409262643607802e+00
--2.0803757241303703e+01
--1.1086954070413286e+00
--7.7564488350169336e+00
--2.1212508314275709e+01
-8.4676163890756797e+00
--8.0772546908832510e+00
--2.1649651168696145e+01
-1.3786553067756161e+01
--9.0717157659512289e+00
--2.4085104428173118e+01
--3.6712430615020204e+00
--7.7261574052463500e+00
--2.0599450300289760e+01
-1.5565833595726254e+01
--9.4786566307949567e+00
--2.4772931735789321e+01
--2.7740081751104948e+00
--8.1411041141791483e+00
--2.1454726160597385e+01
--7.0815440065202475e+00
--6.9990119337511745e+00
--1.8310080718313490e+01
--2.0099266734473002e+00
--8.1631824099609709e+00
--2.1475240042822684e+01
-5.4565772774445440e+00
--8.1193300592849127e+00
--2.1190544372109684e+01
--2.5982494538520227e+00
--8.1332432613064007e+00
--2.1358778455982950e+01
-1.2605903872431508e+00
--8.2565778171596715e+00
--2.1336909398752308e+01
--1.8204786869928451e+00
--8.2709635367495409e+00
--2.1288818957380137e+01
-1.2104312352837157e+01
--9.0889508024350434e+00
--2.2983055996172407e+01
-4.4734583741171718e-01
--8.1815570976798409e+00
--2.0762144909211703e+01
-5.3419933770079604e+00
--8.2471285723256376e+00
--2.1013060515122351e+01
--3.6946317860320512e+00
--7.8457191164009883e+00
--2.0133973011810095e+01
-5.1049347588187723e+00
--8.3071390891323045e+00
--2.1122845171489164e+01
--7.5928593184053894e-01
--8.0691652137075618e+00
--2.0697975779101768e+01
-4.1385408400046086e-01
--8.2248356617281519e+00
--2.1228870612009498e+01
-1.8197776152512239e+00
--8.2043625890011285e+00
--2.0868699602293717e+01
--4.4060547758893138e+00
--7.8582001454940285e+00
--2.0057816318281684e+01
-2.0834958491984912e+00
--8.3929233779306518e+00
--2.1197655083313212e+01
--1.7558143586937269e+00
--8.2534177730270244e+00
--2.1142498567750454e+01
-1.2493154442472201e+00
--8.1664811292717605e+00
--2.0734672673094739e+01
-4.8113692193995172e+00
--8.2869274294082906e+00
--2.0929196984712874e+01
-3.3843781279807126e+00
--8.3991167535706364e+00
--2.1129424995040704e+01
--9.0871295888605000e-02
--8.2264751381760846e+00
--2.0647235283352764e+01
-1.0987880150093071e+01
--9.0920007629927788e+00
--2.2594292277333722e+01
-9.3661596686390141e+00
--8.8340748611056892e+00
--2.1860825603495059e+01
-1.5441886913946470e-01
--8.2635707268843035e+00
--2.0575991231308425e+01
-2.0278786484425818e-01
--8.3883053497622289e+00
--2.0832674174016280e+01
-2.5289715306178917e+00
--8.3188676874538636e+00
--2.0607603730827851e+01
-6.7362043871128838e+00
--8.6276939663351708e+00
--2.1244608697539068e+01
-6.3209017192168426e+00
--8.5896393041711772e+00
--2.1153509078884856e+01
-1.1999493375301330e-02
--8.3158602962452246e+00
--2.0504882180473881e+01
-1.5836539341551157e+00
--8.4955094203224970e+00
--2.0980889272496196e+01
-3.3595085196903618e+00
--8.3995479225427943e+00
--2.0737245705337138e+01
-3.3882460635520566e+00
--8.4644562832675163e+00
--2.0826515455239267e+01
-3.3882460635520566e+00
--8.4644562832675163e+00
--2.0826515455239267e+01
--8.6608072172479067e-01
--8.4197553551564308e+00
--2.0947569276441385e+01
-1.0627786689171732e+01
--9.1345948932774110e+00
--2.2200838998677472e+01
-1.7791044495383184e+00
--8.5905252175883184e+00
--2.0995682733681562e+01
-1.3108309705327784e+01
--9.5694266952144282e+00
--2.3312443993217883e+01
--8.8655883231629462e-01
--8.5322848658057175e+00
--2.0922321496956044e+01
-1.3735780351866915e+00
--8.6038502766067797e+00
--2.0900918996784483e+01
--8.6235875585099675e-01
--8.2859920339823603e+00
--2.0326873960139196e+01
--8.4687101172350909e-01
--8.5331059690844597e+00
--2.0887705535941802e+01
-5.6441432731928298e+00
--8.7123581454548855e+00
--2.0827751955534691e+01
-5.0100301445715822e-01
--8.4325790466444168e+00
--2.0178731911339586e+01
-5.8270619985436838e+00
--8.6330406844236744e+00
--2.0492179557357069e+01
-4.4684744731056902e-01
--8.5014013750508077e+00
--2.0231483261918168e+01
-1.0979791360005386e+01
--9.4526822516970661e+00
--2.2078209296608989e+01
-1.0979791360005386e+01
--9.4526822516970661e+00
--2.2078209296608989e+01
--1.5566433253078296e+01
-1.6251950028652434e+01
--3.4046041648400134e+01
-9.3365353589664934e+00
-2.3690016724854793e+01
--5.1307231185466435e+01
--1.3934525501109485e+01
-1.6265445091310191e+01
--3.4439434818639761e+01
--1.3978195579524993e+01
-1.5967371102393273e+01
--3.4083696881125391e+01
-1.4635271525998334e+01
-2.4734636673946678e+01
--5.3756817255030924e+01
--9.6279000064801732e+00
-1.7645843170323147e+01
--3.8095583130398836e+01
--9.7311828347786005e+00
-1.7915888135301273e+01
--3.8693444214951882e+01
--5.7712612432602715e+00
-1.8820036952837913e+01
--4.0732492341834408e+01
-1.8411518765476195e+01
-2.5845829504716612e+01
--5.6138323697623946e+01
-1.8804931054558306e+01
-2.6193784247194269e+01
--5.6894978272895600e+01
--1.0056654801011087e+01
-1.7368806780849457e+01
--3.7335853657049668e+01
--1.2803631839010022e+01
-1.6400896096174574e+01
--3.5198999615019218e+01
--1.3096759363462969e+01
-1.6303567478776568e+01
--3.4930314227637325e+01
--1.3393379928975204e+01
-1.6653650937367836e+01
--3.5561653758761381e+01
-2.6652799696977345e+00
-2.1362243609385761e+01
--4.6739591170771547e+01
-2.6652799696977345e+00
-2.1362243609385761e+01
--4.6739591170771547e+01
-9.7241199756098844e+00
-2.3417353664612815e+01
--5.1183300775583469e+01
--9.1529173150654053e+00
-1.7822227683531327e+01
--3.8743428351559992e+01
--7.3684500060553502e+00
-1.8250968159752926e+01
--3.9924447974488871e+01
--1.5219649450414058e+01
-1.6115356438786510e+01
--3.4376327946172218e+01
--5.8700509462897319e+00
-1.8548019022955639e+01
--4.0677019031385228e+01
--5.8300427891540254e+00
-1.8654371474530180e+01
--4.0927959716593300e+01
-1.0546170129772740e+01
-2.3604548680686502e+01
--5.1924943789759602e+01
--1.2161004554522341e+01
-1.6497856369868330e+01
--3.5825524260791823e+01
-1.0591391936864509e+01
-2.3789898523132884e+01
--5.2768451540549307e+01
--1.3608153511215864e+01
-1.6027559569283778e+01
--3.4835527005588020e+01
-1.5542675678305564e+01
-2.4695104733119784e+01
--5.4702681214731776e+01
-1.7421835114476487e+01
-2.5204448939408181e+01
--5.5713864349944721e+01
-1.8549533241883797e+01
-2.5972937925671733e+01
--5.7388371690303011e+01
-1.4763715272728977e+01
-2.4417271105612855e+01
--5.4285836991568232e+01
--7.0042098384986593e+00
-1.8399095206054831e+01
--4.1082285828379241e+01
-1.3248344026163592e+01
-1.4632993339960114e+01
--3.1605916845918134e+01
--4.7402866945395319e+00
-1.8764733471271136e+01
--4.1863176772231192e+01
-9.9916172379169961e+00
-2.2917307594172822e+01
--5.1279733941298808e+01
-9.5368830469084944e+00
-2.3021551187449109e+01
--5.1418050976546219e+01
--1.2334214203467871e+01
-1.6225621790035319e+01
--3.5766616973607938e+01
-1.8215278234430873e+01
-2.5283482637757363e+01
--5.6636153607311634e+01
--1.2427289680534907e+01
-1.6225131007224135e+01
--3.5871663531979955e+01
-4.3438611024563256e+00
-2.1420765091927599e+01
--4.8129024014138267e+01
--3.3784143559602198e+00
-1.9193369426634909e+01
--4.3258374444322854e+01
-1.2350188260870983e+01
-1.5334913281843253e+01
--3.3540406670311057e+01
-9.5691574632767367e+00
-2.2714090332338703e+01
--5.1545031757017327e+01
-9.3360350749954151e+00
-2.2705800943974264e+01
--5.1475813441781575e+01
-1.3612987374496059e+01
-1.4022669607744984e+01
--3.0651968047735568e+01
-1.0347952698184228e+01
-2.2961147865690037e+01
--5.2376904088693394e+01
-8.5683218614791112e+00
-2.2516014810839287e+01
--5.1520316231687268e+01
-1.0270020017188211e+01
-2.3388112040542747e+01
--5.3683951963104590e+01
-1.3341619574751066e+01
-1.4599150165272320e+01
--3.2156175888458328e+01
-1.9829893819851645e+01
-2.7676976167584492e+01
--6.3247383553846021e+01
--1.2541888191865338e+01
-1.5940531141143737e+01
--3.5774347367830444e+01
--1.2774614065886574e+01
-1.6969924922051039e+01
--3.8515362525919286e+01
-1.0131702392386668e+01
-2.2681597575626544e+01
--5.2055333311053964e+01
--1.2553675045069225e+01
-1.7047222442633235e+01
--3.8747788751241892e+01
-9.7027721289378022e-01
-2.0206926999416751e+01
--4.6071186871964187e+01
-1.2868069449041295e+01
-2.4785347301268715e+01
--5.6936750436606872e+01
--1.2072521004890980e+01
-1.6096819384748066e+01
--3.6307772967615882e+01
-1.3673608293862687e+01
-2.4970866204806725e+01
--5.7717874124231358e+01
-1.2899129813378016e+01
-2.3679362870714321e+01
--5.4439931990470733e+01
-1.2436523122405870e+01
-1.5285650684620126e+01
--3.4041463827428551e+01
-1.8401970741111981e+01
-2.5091657052083754e+01
--5.7658374250509070e+01
-2.6399629371990979e+01
-3.2539040986458240e+01
--7.5022713090035850e+01
--1.2572137638026396e+01
-1.6160919172481531e+01
--3.6385232932378969e+01
--1.6561786310650273e+01
-1.5555951748013507e+01
--3.4596693607654259e+01
--1.6561786310650273e+01
-1.5555951748013507e+01
--3.4596693607654259e+01
-1.0467448886164572e+00
-1.9835252116670652e+01
--4.5718627210699637e+01
-9.5208487364746990e+00
-2.4161022656362427e+01
--5.5946608854486705e+01
-1.2555928447650095e+01
-2.3300299861151117e+01
--5.3801455615486930e+01
-2.6441121667889128e+01
-3.2702701640209199e+01
--7.6014486257090454e+01
-7.7708764072534064e+00
-2.2365309503147621e+01
--5.1685617288979650e+01
-1.3756463776183407e+01
-1.4362178491866823e+01
--3.1951678503345267e+01
--3.3340782597005131e+01
-2.6676762617968741e+01
--6.0839472791462342e+01
--9.6540443509531819e+00
-1.7049070538120532e+01
--3.9216276103616430e+01
--9.5866468644234875e+00
-1.6835075236298863e+01
--3.9258504476359043e+01
-1.2612509644040907e+01
-1.1499179332489318e+01
--2.4891128123230089e+01
-1.2165131623005736e+01
-1.1294126154999098e+01
--2.4627439499648037e+01
-1.3197239001635461e+01
-1.4533509576987658e+01
--3.2650811786293062e+01
-1.6847720659987944e+00
-2.0040098488840282e+01
--4.6507588588715791e+01
-1.6654692537654709e+00
-2.0068228452357495e+01
--4.6467376913116716e+01
-1.2852889879133413e+01
-1.4615509105259651e+01
--3.3058961712340789e+01
-1.2109215918899157e+01
-1.1366862453385963e+01
--2.4887019692492178e+01
-1.2543057284664497e+01
-1.1418430899044679e+01
--2.5183541353352066e+01
-1.2201390969024606e+01
-1.1236055126402682e+01
--2.4835383725970733e+01
--1.6051002828530120e+01
-1.5329084491571143e+01
--3.4713222515230278e+01
-2.6033978784594641e+01
-3.1853730889105364e+01
--7.5405677216107620e+01
-1.9879413868354771e+01
-2.5357787373874270e+01
--6.0049138677054707e+01
-6.0211643938166732e+00
-2.1469751883163230e+01
--5.1254824232581832e+01
-1.2460717086201681e+01
-1.1293994531806154e+01
--2.4995384595063893e+01
-1.2593412849604672e+01
-1.1395811327237881e+01
--2.5265628461256952e+01
-5.8110815141724625e+00
-2.1468432340567130e+01
--5.1337538405364619e+01
-1.1522657293618089e+01
-2.1486712810705708e+01
--5.0947338395827487e+01
--1.2766946222323929e+01
-1.5857487168247731e+01
--3.7097534415322457e+01
-2.0344470058025159e+01
-2.5346567908713034e+01
--6.0642297324560346e+01
--9.9221573485049686e-01
-1.9015350776732646e+01
--4.5485227814432399e+01
--1.2461494198441292e+01
-1.5483930722018055e+01
--3.6861131514395524e+01
-1.4542983130614699e+01
-1.3977817338764698e+01
--3.2463293716422477e+01
--1.6456206129670715e+01
-1.4860837411517249e+01
--3.4576562060268031e+01
-1.2591143503500064e+01
-1.0433897536840631e+01
--2.3657854800931467e+01
--1.6219460959426552e+01
-1.6387402330692488e+01
--3.9166950042133386e+01
-1.9768803373646801e+01
-2.4953929880145061e+01
--6.0934774995986075e+01
--8.8671172874409034e+00
-1.6319231782592624e+01
--3.9814143433615840e+01
-1.5526118557104164e+01
-2.3373782681770290e+01
--5.7527373674836056e+01
-1.7352854097363075e+01
-2.4065677194009691e+01
--5.8908750852658557e+01
-4.9892939095819773e-02
-1.8931995339728157e+01
--4.6695632864701295e+01
-2.9266821878495029e-02
-1.8847267259765125e+01
--4.6569216087867360e+01
--6.5750403712403553e+00
-1.6981401836529255e+01
--4.1520414277018922e+01
--5.6648708178860536e+00
-1.7602875046407860e+01
--4.3563519688532821e+01
--5.6135495995145028e+00
-1.7341532324686277e+01
--4.2945357694997490e+01
-1.2144121900870646e+01
-1.0730948685045915e+01
--2.4910465757444516e+01
--6.3280231477615745e-01
-1.8542626421073837e+01
--4.6215851481560847e+01
--6.3280231477615745e-01
-1.8542626421073837e+01
--4.6215851481560847e+01
--9.2151195036844182e+00
-1.6181848634869088e+01
--4.0204655092947469e+01
--9.2151195036844182e+00
-1.6181848634869088e+01
--4.0204655092947469e+01
--1.4580999067916904e+01
-1.4856796949205583e+01
--3.6399580836280748e+01
--1.4444770084503118e+01
-1.4920149187371310e+01
--3.6581917080801539e+01
-1.2100263589366588e+01
-1.0698411635896397e+01
--2.5054871679815005e+01
-1.4701789498074973e+01
-2.2612438578495421e+01
--5.6652891831725896e+01
-1.4669294107211163e+01
-2.2494557293972615e+01
--5.6424786896425175e+01
--1.4424711533617089e+01
-1.4729830317798264e+01
--3.6321357355303078e+01
--2.8142372792748198e+01
-2.2031363372210635e+01
--5.4192741728315205e+01
-5.9565149504574844e-01
-1.9074977904047717e+01
--4.7836041023734033e+01
-1.3359757718726756e+01
-1.0497153499237573e+01
--2.4673918052997021e+01
--2.4176906624885284e+01
-1.8978788984450329e+01
--4.6950840644090995e+01
-1.4155424842689985e+01
-1.3555665439565731e+01
--3.3029785546123769e+01
-1.4487136594753967e+01
-2.2730228438747023e+01
--5.7749401690683484e+01
--2.7026393291960936e+01
-2.1044054882779594e+01
--5.2516070147162125e+01
-1.2734664331093949e+01
-1.0347889761520513e+01
--2.4901696701213854e+01
-1.3717600562508382e+01
-9.9191727145605011e+00
--2.3591920821851460e+01
--1.6895987943857708e+01
-1.4143088102867306e+01
--3.5221632716886049e+01
--1.2867954363582930e+00
-1.7850347837968670e+01
--4.6242631613527223e+01
--1.2867954363582930e+00
-1.7850347837968670e+01
--4.6242631613527223e+01
-1.3683335364437770e+01
-9.5249672000788745e+00
--2.2832307896058502e+01
-1.3431012089048592e+01
-1.3703164824240867e+01
--3.4063868249453208e+01
-1.3448056678432229e+01
-1.3782841810678576e+01
--3.4413830296984067e+01
--9.2427694010684824e+00
-1.5554781725225467e+01
--4.0421229448336206e+01
--7.1816177788423801e+00
-1.6277125476930195e+01
--4.2350233757215683e+01
--5.7466583787017864e+00
-1.6498343328802129e+01
--4.3149672814327246e+01
--1.2095611194749438e+01
-1.5078905682826067e+01
--3.8574877644076054e+01
--1.0674073599828148e+01
-1.5435718485827339e+01
--3.9860401928459531e+01
-1.2228299972591433e+01
-1.0205929622792970e+01
--2.4939566958235943e+01
-1.2349990811620332e+01
-1.0214979110612658e+01
--2.5177081761629026e+01
-1.3141322782710462e+01
-9.9269136318966407e+00
--2.4466428934194262e+01
-1.3624826285470093e+01
-9.5870670110855976e+00
--2.3504192295575965e+01
--1.5589712993491063e+00
-1.7482402130061033e+01
--4.6659238963847145e+01
--1.5327303948004714e+00
-1.7691225849824590e+01
--4.7041434997606075e+01
-8.7153300642081066e-01
-1.9087344238413689e+01
--5.1268959929673805e+01
-8.7153300642081066e-01
-1.9087344238413689e+01
--5.1268959929673805e+01
--2.2281670602329221e+01
-1.7126980200897531e+01
--4.4501902977794465e+01
--1.5560753288056839e+01
-1.4176226924828629e+01
--3.6573378181699240e+01
--9.0135869679253453e+00
-1.5422397491291777e+01
--4.1013839234509192e+01
-1.3168132269969620e+01
-1.3692036317078221e+01
--3.5521586195307769e+01
-1.0466987702520749e+01
-2.0462517745730704e+01
--5.5397426961356551e+01
-1.1967206844507372e+01
-1.0170047364322455e+01
--2.5747880230623974e+01
--1.4172319545374374e+00
-1.7886479170761113e+01
--4.8721546921170727e+01
-1.2769593301759325e+01
-9.8656520411111952e+00
--2.4857492617471035e+01
-1.2769593301759325e+01
-9.8656520411111952e+00
--2.4857492617471035e+01
-1.4332632180981397e+01
-9.7540992777755040e+00
--2.4354518282332240e+01
-1.3521990689532275e+01
-1.2935905188214653e+01
--3.3767420580982346e+01
-8.7757297668362639e+00
-2.0163601902377508e+01
--5.4956144407797801e+01
-8.0663910758966413e+00
-1.9754899260986750e+01
--5.4191377867589296e+01
--6.1400435297558218e+00
-1.6021888909544405e+01
--4.3708754050086860e+01
-1.4355567212417615e+01
-9.0627034881603716e+00
--2.2592562511630565e+01
-2.6014241075297317e-01
-1.7684616624399187e+01
--4.8803891009358175e+01
-1.4400316870554869e+01
-8.8161580806668010e+00
--2.2139172537181601e+01
-6.9999404512989483e-01
-1.7669420329292617e+01
--4.9117480118182442e+01
-1.4382346042425011e+01
-8.8431112886872842e+00
--2.2256831359007482e+01
-1.5825299203883024e+01
-2.1433887850828338e+01
--5.9736384721128609e+01
-1.5349979246356941e+01
-2.1244638809622487e+01
--5.8831712736002302e+01
-1.4649194272203740e+01
-8.8430939588038857e+00
--2.2476019769731533e+01
-1.4423997502778281e+01
-8.7504451827258389e+00
--2.2143617899459102e+01
-1.4042056558774592e+01
-1.2800281643150955e+01
--3.4516878174402102e+01
-1.2593437948928607e+01
-9.4931529364293663e+00
--2.4874392863938528e+01
-1.4388168148456222e+01
-8.5520965545808885e+00
--2.2185614490264619e+01
-9.2084451962571183e+00
-1.9574931578589336e+01
--5.5809834297610607e+01
-1.3986065737787019e+01
-8.1760641828189300e+00
--2.0983800046392599e+01
--7.3644787606166915e+00
-1.5091483959129931e+01
--4.3545485892244585e+01
--4.2278786254758405e+00
-1.5889556304759099e+01
--4.5707625917496372e+01
-1.2596281914519182e+01
-9.7244086769738889e+00
--2.6244632464135609e+01
--1.2976698254617856e+01
-1.3846999399110050e+01
--3.9088879131999271e+01
-1.2147710185025089e+01
-9.6191157802874212e+00
--2.6188471758823198e+01
-1.2703687978106210e+01
-9.7932332031814404e+00
--2.6500687765134465e+01
-1.3779526831962956e+01
-9.1318042224542335e+00
--2.4407442687491635e+01
-1.4446130028581120e+01
-8.2983572655982432e+00
--2.2225940904617726e+01
-1.3983314386132669e+01
-8.0548549834118575e+00
--2.1295176228521747e+01
-1.3680813570578771e+01
-9.0344187848201418e+00
--2.4318917146187598e+01
-1.3680813570578771e+01
-9.0344187848201418e+00
--2.4318917146187598e+01
--2.2770227655612494e+01
-1.6152122414421310e+01
--4.6287675335131141e+01
--8.7992724723261926e+00
-1.4227367013491248e+01
--4.1954978006278921e+01
-1.3678502961058255e+01
-9.6100365642735586e+00
--2.6313143984095372e+01
--3.8785079339296438e+00
-1.5788538653903263e+01
--4.6577178614662266e+01
-7.9650000780870620e+00
-1.8897188165839840e+01
--5.6061030238497516e+01
-1.3332791308175196e+01
-8.5658806441305604e+00
--2.3322329540435728e+01
--3.8525997887410992e+00
-1.5714014359649616e+01
--4.6619246425997481e+01
--6.1979007888902755e+00
-1.4995615425061809e+01
--4.4708123917306835e+01
-1.2752335385293375e+01
-9.1908851272836714e+00
--2.5128113384146427e+01
-1.2667181150873525e+01
-8.9288644893057967e+00
--2.4841946135785761e+01
--6.5177771742315924e+00
-1.4968882441451871e+01
--4.5034318298016608e+01
--1.1486219412046051e+01
-1.4206542820985263e+01
--4.2362678557002759e+01
--1.2189928788422181e+01
-1.3391988603147613e+01
--3.9866679307720702e+01
--1.2188633312493810e+01
-1.3486176282895491e+01
--4.0345056132417142e+01
--8.9048137093088719e+00
-1.4807242847502607e+01
--4.4422689350487985e+01
-1.4161341786627215e+01
-7.7244226688734559e+00
--2.1110435695071747e+01
-1.2726386919103158e+01
-9.3997866172814728e+00
--2.6908716447153694e+01
-1.2842574817924636e+01
-8.7699909690719675e+00
--2.4605240646417396e+01
-1.2718351461601422e+01
-1.1941362791947805e+01
--3.5470966609164741e+01
-1.3164786935751792e+01
-1.1663170103065140e+01
--3.5037507876724113e+01
-1.3165429411832736e+01
-1.1337378592874026e+01
--3.3877107672280381e+01
--1.0990237208725702e+01
-1.3616517812798618e+01
--4.1506099917867942e+01
-1.3687592039609788e+01
-7.9453854145971166e+00
--2.2594875036674509e+01
--3.4257867555978059e+01
-2.0436679717767216e+01
--6.2698021527056603e+01
-1.6677946636974951e+01
-1.3467530002195113e+01
--4.1248270542111776e+01
-1.6677946636974951e+01
-1.3467530002195113e+01
--4.1248270542111776e+01
--2.2138577630546745e+01
-1.5622712591742713e+01
--4.8219110400861254e+01
-1.3002754430790562e+01
-1.2373468735140937e+01
--3.8016976348431001e+01
-1.2006842187836508e+01
-9.1522831821279738e+00
--2.7546030992203651e+01
--8.8836150072045381e+00
-1.3859372915844576e+01
--4.3507958131393210e+01
--8.9068715413293518e+00
-1.4023089399865576e+01
--4.4412508404726900e+01
-9.4773947671771219e-01
-1.6609169811432665e+01
--5.2905150766007715e+01
--9.6382822421962064e+00
-1.3457679610790814e+01
--4.2845556016727841e+01
-1.1974289621629469e+01
-8.8929726145746937e+00
--2.6943304799695134e+01
--1.2485976684606936e+01
-1.2989464711212330e+01
--4.0919951367727251e+01
--1.2328454502939481e+01
-1.2690158350845865e+01
--4.0144079556908764e+01
--1.2608927684193166e+01
-1.3355309695263342e+01
--4.2399605845011905e+01
--8.9658191612089517e+00
-1.3640351594736805e+01
--4.3767965784276683e+01
-1.3122875547181671e+01
-1.0871076786350104e+01
--3.4005350567452801e+01
--1.6253211251775610e+01
-1.2184263480129953e+01
--3.8397737535496788e+01
-1.1790772611404215e+01
-8.9469291050320425e+00
--2.7300492776784552e+01
-1.2407934982905136e+01
-8.5684756982154759e+00
--2.6336500634606068e+01
--1.6247371198352226e+01
-1.2495111227485467e+01
--3.9582176896206434e+01
--3.5484309513748666e+00
-1.4764139030596056e+01
--4.8368750388581127e+01
-1.2198270255483042e+01
-8.4165087517100972e+00
--2.5924936165731484e+01
--1.4872343082323120e+01
-1.2250863021367683e+01
--3.9172956958926299e+01
--1.6003896708657127e+01
-1.2046071559340279e+01
--3.8653858063154537e+01
--1.5986829417987257e+01
-1.2027580729007791e+01
--3.8608792794242291e+01
--1.5119287088925736e+01
-1.2298140209125819e+01
--3.9724094101454064e+01
--1.4819590557861153e+01
-1.2092518751618007e+01
--3.9535185164477653e+01
-1.3482609549808087e+01
-1.0405053281540596e+01
--3.3620491859150462e+01
-1.4692444339882835e+01
-7.4790415714583647e+00
--2.2661222601150268e+01
-1.4161117074579980e+01
-7.1325689695056509e+00
--2.2206857500863435e+01
-1.2472936626384024e+01
-8.3955518342588142e+00
--2.6940055582200735e+01
-1.3995631197251027e+01
-1.0213962326861250e+01
--3.3575596082246612e+01
--5.1216326582041010e+00
-1.3913689393667035e+01
--4.7175273735126474e+01
--1.6203147647848425e+01
-1.1935107592421096e+01
--4.0103871281549516e+01
--4.0420170938676732e+00
-1.4323316127076410e+01
--4.8577145601962933e+01
-1.3384301975420286e+01
-1.0734955916818670e+01
--3.5711564599600962e+01
-1.3519114442138688e+01
-1.0270908992884333e+01
--3.3539787365770593e+01
-1.3763564992412864e+01
-1.0091201084077547e+01
--3.3227335718494423e+01
--1.1598433700678489e+01
-1.1032252557732820e+01
--3.7755356288297975e+01
--1.2206005104353583e+01
-1.1517880510342225e+01
--3.9349757354235201e+01
-1.3714961635998240e+01
-9.9180083669544157e+00
--3.3190666775208356e+01
--6.7927191060764658e+00
-1.3307882199032786e+01
--4.5960940958940320e+01
--6.8473143550505275e+00
-1.3512504193914426e+01
--4.6501748632710758e+01
--3.1536529600612944e+01
-1.6973273795492325e+01
--5.7614634788124675e+01
--5.4133514413449975e+00
-1.3760076740542017e+01
--4.7889267034393043e+01
-1.3031946477442438e-01
-1.5022169595166348e+01
--5.2379540663152405e+01
-1.3705148579503446e+01
-7.1838446432845338e+00
--2.3402020346644793e+01
--2.1168212706511154e-02
-1.5221967746546012e+01
--5.3874021070668327e+01
--1.7065529548909364e+01
-1.1619136576740530e+01
--4.0545035046572771e+01
-1.2738361830943132e+01
-7.7297994333106770e+00
--2.5874194873990312e+01
-1.3059957101983668e+01
-7.8010091484546189e+00
--2.6020881262072674e+01
-1.3031794944948739e+01
-7.7855501739446664e+00
--2.6026251277027047e+01
--1.2145450535344908e+01
-1.2025674369790176e+01
--4.2330867978947346e+01
--9.0349864701499616e+00
-1.2483969760168453e+01
--4.4772890268131476e+01
--1.1899555956640201e+01
-1.2347129205329450e+01
--4.3394034585837645e+01
-7.1516483957077535e+00
-1.4571495015917201e+01
--5.2224531007050246e+01
--1.3183670180932426e+01
-1.2168000257469039e+01
--4.3082535758578921e+01
-7.2620558247599531e-01
-1.4530941259399352e+01
--5.2505597994256391e+01
-1.3829328513848013e+01
-7.0431387327644162e+00
--2.3584184627295986e+01
-1.2713381401770091e+01
-7.4632066942861011e+00
--2.5380973039525799e+01
-1.3354154077105385e+01
-7.0374829215183849e+00
--2.3875378962956233e+01
-1.4803242488520066e+01
-7.3570618892105495e+00
--2.4272616908328914e+01
-1.3857258633796226e+01
-6.8488485056207562e+00
--2.3164267563679005e+01
-1.5170946281511148e+01
-9.3313636744716870e+00
--3.2739241363103197e+01
-1.2570812466576063e+01
-7.9321298188040874e+00
--2.7184670276483367e+01
-1.4233100761082033e+01
-7.1998580515125328e+00
--2.3915996304883560e+01
-1.3518144203379400e+01
-7.0801162503877055e+00
--2.4155595747609222e+01
-1.2786367197280486e+01
-8.1036926753558056e+00
--2.7853956720384641e+01
--5.1847851718314857e+00
-1.3160114598729903e+01
--4.8954032063658595e+01
-1.1556583328798542e+00
-1.3775618839469999e+01
--5.1808275014482795e+01
--1.0856804839393345e+01
-1.1781591379786001e+01
--4.3803412388318762e+01
-1.2115576519215217e+01
-7.8967426108953402e+00
--2.7526677710170201e+01
-1.3074379835304669e+01
-7.1936603563139574e+00
--2.5504381903215052e+01
--1.5403136813774974e+01
-1.1057421537523242e+01
--4.0821761282183964e+01
-1.4665430778368533e+01
-6.9155027069482893e+00
--2.3545384072423609e+01
-1.4281068737253600e+01
-6.6877016138975574e+00
--2.3272805938411292e+01
-1.2727521613701194e+01
-7.4214546535269887e+00
--2.6365242955889247e+01
-1.4067124674359910e+01
-6.5320620355577246e+00
--2.2796742145901987e+01
-1.4067124674359910e+01
-6.5320620355577246e+00
--2.2796742145901987e+01
-1.2113200645095501e+01
-8.0650223168097561e+00
--2.9021650958025376e+01
-1.3838810349395118e+01
-6.4404274083162747e+00
--2.2772961208249679e+01
--1.4629745335747623e+01
-1.1176455572732101e+01
--4.1779942572200625e+01
-1.2482341353900356e+01
-7.3691473184990297e+00
--2.6247829888124102e+01
--1.4168852461405605e+01
-1.0710649511257211e+01
--4.0677631855652209e+01
--1.0564883306555041e+01
-1.1818511323594850e+01
--4.4996552818083003e+01
--8.2760426417983961e+00
-1.1874612325374919e+01
--4.5499120071353488e+01
--5.5145922578816577e+00
-1.2977118767248577e+01
--4.9454974515285855e+01
-1.3658746538658503e+01
-6.7985530960242508e+00
--2.4324079619238152e+01
-1.3727912423828977e+01
-6.8121489431085465e+00
--2.4417214371750074e+01
--1.4522562151089250e+01
-1.0946928524830627e+01
--4.1612694480142011e+01
-1.2141529566028106e+01
-7.6935921197281516e+00
--2.8454038657331143e+01
--1.5957214392318832e+01
-1.0740376287438481e+01
--4.1294081588883834e+01
--1.7538910240401119e+01
-1.0844783385080181e+01
--4.1135804206931773e+01
--1.2790613921225397e+01
-1.1052071721166476e+01
--4.2912937826042814e+01
-1.4417424841783268e+01
-6.2864468766493324e+00
--2.2679716108775608e+01
-1.3677457953951540e+01
-6.9700113872862000e+00
--2.5708986177342570e+01
-1.3961315987509423e+01
-7.1777903033813839e+00
--2.6027312280477965e+01
--7.0899772698013130e+00
-1.2047934242027459e+01
--4.7944945967580857e+01
-2.5498967693100987e+00
-1.2369758510746628e+01
--4.9275483550081539e+01
-1.2774816313876089e+01
-7.0030113297338970e+00
--2.6216401539281861e+01
-1.2213749435798189e+01
-7.2178276742831269e+00
--2.7253308232335872e+01
--6.5044020875128536e+00
-1.1806714881184728e+01
--4.7780484703344769e+01
--1.7589227923198546e+01
-1.0132340349341661e+01
--4.0792058364190346e+01
-1.3010266826842626e+01
-1.2322349573044118e+01
--4.9777714794662607e+01
-1.2454861759762982e+01
-9.6365656016381251e+00
--3.8509270745091854e+01
-1.2157438037048621e+01
-7.0311633473644415e+00
--2.7551929255745801e+01
-1.3209110474250316e+01
-6.8925825366613207e+00
--2.6750361368938961e+01
--1.2179957364277254e+01
-1.0739983566933839e+01
--4.4410816856749200e+01
--1.4296019728195681e+01
-1.0377590725860175e+01
--4.2975705650197881e+01
-2.9127659097536367e+00
-1.1368009201062250e+01
--4.7839400676859270e+01
-1.4618278665619693e+01
-6.4626375734411949e+00
--2.5223019611347453e+01
-1.3986638626493198e+01
-6.2047793236482347e+00
--2.4011217238689355e+01
-1.5065252017020287e+01
-6.0127912764982616e+00
--2.2544575545925269e+01
-1.7441577145558814e+01
-7.3353194029915834e+00
--2.9480659300395605e+01
-1.3975954041904378e+01
-1.0147925719097968e+01
--4.1825214726948516e+01
-1.4451239545732737e+01
-1.0211482348508854e+01
--4.2854585345335430e+01
--1.4533082673672350e+01
-8.8240326889262892e+00
--3.7085583499055581e+01
--7.7250298485038504e+00
-1.1137666373067331e+01
--4.7630204815647616e+01
--1.4146481927395723e+01
-8.5730766354993424e+00
--3.6489989460007287e+01
-1.4035794847527205e+01
-5.9982541476524869e+00
--2.3914052558380174e+01
-1.4090262518681968e+01
-6.0700420391992953e+00
--2.4224045379258378e+01
--1.3729765395336440e+01
-9.2142681842064853e+00
--3.9827498875997257e+01
-1.3811868426973300e+01
-5.7820126997997292e+00
--2.3449556473554718e+01
-1.0170991597049170e+01
-1.1853628420436142e+01
--5.1632753753802220e+01
--1.2335708745441130e+01
-9.3835926318764411e+00
--4.0965830603999770e+01
-1.3644087522817941e+01
-8.9510243525519524e+00
--3.8272467666658535e+01
--1.7178482177470258e+01
-9.5915874937136056e+00
--4.0867493677475849e+01
-1.2963755527812365e+01
-6.4595491778491851e+00
--2.6711150116237377e+01
--1.6223257725586233e+01
-9.5117880458417030e+00
--4.1137596432272666e+01
-1.2406644209945098e+01
-6.8335224303371120e+00
--2.8988973899562502e+01
-1.2613526538066465e+01
-6.8954406697321025e+00
--2.9063306500585838e+01
-1.2499224773027146e+01
-6.7998280554029558e+00
--2.8771182553484401e+01
-1.2870254750892503e+01
-6.3125055626935094e+00
--2.6536932403579787e+01
-1.2912181264163101e+01
-6.3195086265378073e+00
--2.6503959643143673e+01
-1.2103180645372982e+01
-6.6850344641077264e+00
--2.8704263217744263e+01
-1.4716658844772587e+01
-6.0575233298202837e+00
--2.5330679654642452e+01
-2.6091259705234577e+00
-1.0013790316825201e+01
--4.5800566428550582e+01
-1.4324205289483732e+01
-6.5030996136054524e+00
--2.8173570213203124e+01
--6.2491314475377377e+00
-1.0087457206347660e+01
--4.6060889600785849e+01
-1.4675812186561160e+01
-5.6928128536606089e+00
--2.3714582999705012e+01
--5.6478401788225021e+00
-9.7429185141499186e+00
--4.5305161750107949e+01
-1.3789946129853295e+01
-5.5032180676360625e+00
--2.3994599917010635e+01
-1.4895797462675564e+01
-5.2779505332801415e+00
--2.2608037782541157e+01
-1.4300729117527231e+01
-5.0638953117972223e+00
--2.1949282601295206e+01
-1.3368014856479210e+01
-6.0752602470200676e+00
--2.6894843235721446e+01
-1.4948195095991462e+01
-5.2134381985521765e+00
--2.2540367226282520e+01
-1.2737526588425162e+01
-6.1270460294460012e+00
--2.7699498146605862e+01
--1.4625000648967290e+00
-9.4137412468227417e+00
--4.5115834220311001e+01
-1.4049221518137491e+01
-5.5475974548197104e+00
--2.4551284693413169e+01
-9.7156903270628199e+00
-9.3898260807381373e+00
--4.5042413237382597e+01
--1.7230051466908265e+01
-8.7425112620707743e+00
--4.1025487898811392e+01
-1.4085906624603656e+01
-5.4350408090519684e+00
--2.4493683949015601e+01
--7.1040232697637096e-01
-9.3551975936666718e+00
--4.5344938259087449e+01
--1.6581373616631566e+01
-8.6886845071018417e+00
--4.1056555441439421e+01
--1.9251454136265302e+00
-9.1881774160956393e+00
--4.4849208641925102e+01
-1.3307286182546081e+00
-9.1220378313103954e+00
--4.4465218843143099e+01
-1.4221992193488044e+01
-6.6801007122062215e+00
--3.1429043490344043e+01
--7.6915134688000331e+00
-9.4359035891820042e+00
--4.5843654837341326e+01
-1.4899148174630488e+01
-7.9996224598692054e+00
--3.8730360988328854e+01
-1.2466687050139505e+01
-5.8643135119722656e+00
--2.7081619975272755e+01
-9.9918849776864960e+00
-8.7226642458782990e+00
--4.2374088358718318e+01
-1.2975813310245661e+01
-5.9196012662243698e+00
--2.8085313300364472e+01
--1.4992795376583112e+00
-8.8616034612315211e+00
--4.4716964443750356e+01
-1.5003705308042194e+01
-4.8542913349083854e+00
--2.2598240110793945e+01
--1.3767488331700434e+01
-8.8232393520606784e+00
--4.4365724832996868e+01
--2.4221429334191713e+00
-8.3855921227861092e+00
--4.3742970118822662e+01
--1.6969633331407274e+00
-8.5477050800559073e+00
--4.4396223000152020e+01
--3.5349649521766496e-01
-8.4729815506887487e+00
--4.4085478032955642e+01
--7.6267885121235024e-01
-8.5036557177007044e+00
--4.4296962694365206e+01
-1.4423774952410106e+01
-4.9263866072314579e+00
--2.3582163153702162e+01
-1.4661768487739499e+01
-7.5273132888748844e+00
--3.8836964066923954e+01
-1.3279066244392123e+01
-5.4267223930692614e+00
--2.7101089161068018e+01
-1.3761227981293979e+01
-5.1707937957775156e+00
--2.5359741514540708e+01
-1.3851710365519720e+01
-5.1750078498506173e+00
--2.5448932206590293e+01
-1.3641866456693588e+01
-5.1703567226714675e+00
--2.5755940679605548e+01
-1.3643201933994430e+01
-5.1811178930618969e+00
--2.5756589201479887e+01
--1.1392894448675577e+01
-8.2650082954757700e+00
--4.3180439742873794e+01
--1.5971709989347922e+01
-8.3821635577583979e+00
--4.3867716470114999e+01
-1.2603564632478129e+01
-5.8322696010730661e+00
--3.0304124316501017e+01
--4.3350497024616419e-01
-7.9225710700444205e+00
--4.3317256645310152e+01
-1.2316033616574710e+01
-5.4061794557729277e+00
--2.7963366519656667e+01
-1.2889156095695895e+01
-5.5161795148308999e+00
--2.8570196942476890e+01
--1.0873497105884167e+00
-7.8369310970993142e+00
--4.3439707141570416e+01
--1.0624370604677999e+01
-7.5491122592420679e+00
--4.2799373736670297e+01
-1.4924106079471271e+01
-5.8528684869477763e+00
--3.2172656243158563e+01
--1.5788923044458072e+00
-7.4581879507569067e+00
--4.2551968944837277e+01
-1.3574627735720416e+01
-4.8506696027712284e+00
--2.6803822293748961e+01
--5.2154360675708444e+00
-7.1495998270092098e+00
--4.2176079511654230e+01
-1.5564496573459452e+01
-4.5249816853459155e+00
--2.3923941782021519e+01
-1.3893471488845194e+01
-4.5086257577546718e+00
--2.5268056034389105e+01
--7.6577097488495971e-01
-7.1292072510149254e+00
--4.2202075001774666e+01
-1.4470940157220015e+01
-4.5966861725632926e+00
--2.6221900792937856e+01
--9.5457881088413488e-01
-6.8812413874221878e+00
--4.1599000172277975e+01
-1.0019278615219023e+00
-4.2341902347782625e+00
--2.4289642146228474e+01
-1.5823599451541803e+00
-3.9717363153387759e+00
--2.3746794844381789e+01
--1.4102988278324581e+01
-6.7462261199353080e+00
--4.2232462971487536e+01
-1.3040025903353785e+01
-4.6918763499066971e+00
--2.8641593241597445e+01
-1.3020579948582599e+01
-4.5695405122342798e+00
--2.8247172789811277e+01
-1.2659920703342427e+01
-4.8409075876212251e+00
--2.9829936706229965e+01
--8.4263936977750475e-02
-3.8397358168058777e+00
--2.3802934062266552e+01
-1.2803053714463525e+01
-4.5403366518990005e+00
--2.8869653396237069e+01
-1.3618094290214250e+01
-4.1786941443671513e+00
--2.6585257803805860e+01
-1.3721337120932299e+01
-4.2579959221207337e+00
--2.6882931079042173e+01
-1.2818758184204453e+01
-4.5256219922580101e+00
--2.9119034677197522e+01
-1.6442651178875963e+01
-4.6231312523186272e+00
--2.9615694011033444e+01
--9.8306127691384724e+00
-5.9815249225386502e+00
--4.0340533629224844e+01
-1.4812224770289424e+01
-3.7871582076404136e+00
--2.3719635851386460e+01
-1.3132020661386340e+01
-4.2622919855069190e+00
--2.7823001226806788e+01
-1.2445160080125586e+01
-4.8207588865698092e+00
--3.1634158200959504e+01
-1.3113640849363293e+01
-4.2858489048844044e+00
--2.8153680115453874e+01
--3.1458899663176076e+00
-6.1492682941166583e+00
--4.1265245902752113e+01
-1.3869489737809431e+01
-3.9714462460584468e+00
--2.6123209063103705e+01
-1.3858494657335942e+01
-3.9047571125144001e+00
--2.6171344739455645e+01
-1.3998442014547029e+01
-3.9660052382253279e+00
--2.6614103664952985e+01
-1.5141405037065068e+01
-3.5142091784978322e+00
--2.3140020164314638e+01
-1.5863525471555620e+01
-4.3889905755279397e+00
--3.0102521498144085e+01
-1.3818650039701460e+01
-3.8919739162074336e+00
--2.6417273745620207e+01
-1.4296402654327126e+01
-3.9258238882588801e+00
--2.6334706893902315e+01
-1.3901808232050128e+01
-3.8162326472245742e+00
--2.6184705034415508e+01
-1.3901808232050128e+01
-3.8162326472245742e+00
--2.6184705034415508e+01
-1.6980468793217980e+01
-4.2261608848157790e+00
--2.9349934054463425e+01
-1.7539559169707548e+01
-4.3737805980648785e+00
--3.0194298993508063e+01
-1.4420194770829736e+01
-3.4175130113354975e+00
--2.3313877583336147e+01
-1.4420194770829736e+01
-3.4175130113354975e+00
--2.3313877583336147e+01
-1.4979266312531989e+01
-3.3350218801779592e+00
--2.2952493693522428e+01
-1.8451802919420743e+01
-4.2319934852788306e+00
--2.9585875561857595e+01
-1.5123658064290167e+01
-3.5848774717416281e+00
--2.4504847977339608e+01
--1.6257248328185592e+00
-3.9335136602603233e+00
--2.8515779899849424e+01
-1.2941045625956376e+01
-3.8349796371158842e+00
--2.7677381984937607e+01
-1.3902182837932470e+01
-3.6525830113826032e+00
--2.6352219894300589e+01
-1.5111956693483894e+01
-3.4951925426493387e+00
--2.4575493157293476e+01
--6.3875798292740678e+00
-5.0578391917057735e+00
--3.9243924577292610e+01
-1.4878749927816752e+01
-3.3291565246061374e+00
--2.3855967950912568e+01
-1.3563601776240485e+01
-3.6416571155150632e+00
--2.7144335246067712e+01
--1.8382873921615208e+00
-3.7343403415970688e+00
--2.8194454492616778e+01
-1.4673436285287213e+01
-3.3382225766128855e+00
--2.3940524223748788e+01
-1.3613650883943603e+01
-3.6929073200942675e+00
--2.7436789888520011e+01
-1.3613650883943603e+01
-3.6929073200942675e+00
--2.7436789888520011e+01
-1.8463134231433285e+00
-3.0608970709877608e+00
--2.2252038502405433e+01
-1.4152634134158312e+01
-3.4249432357118312e+00
--2.5318879575280167e+01
-1.4046960374543300e+01
-3.4988622380014234e+00
--2.5967940183239229e+01
-1.4957258414416314e+01
-3.2592821739045905e+00
--2.3780699981002204e+01
-1.4973589158074168e+01
-3.4227134263673578e+00
--2.4886286862048525e+01
-1.4560139197700048e+01
-3.3125691660398489e+00
--2.4366035302744759e+01
-1.4826241501415513e+01
-3.2578101979950866e+00
--2.4088557460279663e+01
-1.4714402760271824e+01
-3.2737009488719839e+00
--2.3941124813463432e+01
-1.4202196046225728e+01
-3.3514235684525584e+00
--2.5236761590464340e+01
--2.1557433616852840e+01
-5.1101839805236997e+00
--3.9023561462274344e+01
-1.4483001553917020e+01
-3.4781021757438348e+00
--2.6300822254138595e+01
-1.4483001553917020e+01
-3.4781021757438348e+00
--2.6300822254138595e+01
-1.2584622328069365e+01
-4.2868614904555100e+00
--3.3427395621876798e+01
-1.4660335235800090e+01
-3.1416029310947073e+00
--2.3776472062437250e+01
-1.4379973273655546e+01
-3.2869977956082459e+00
--2.5189567402934106e+01
--2.1213328378953737e+00
-3.5126565655582827e+00
--2.7841843897154142e+01
-1.3656188754001420e+01
-3.4505019129538872e+00
--2.7216317778862905e+01
-1.4593924917899633e+01
-3.1078587787947352e+00
--2.3963233968820816e+01
-1.8413048050135927e+01
-3.7535999147558492e+00
--2.9535203308894769e+01
-1.3014479033918317e+01
-3.5236210469838354e+00
--2.9184549782490226e+01
-1.4602904433379821e+01
-3.0359604371643676e+00
--2.4025700420910770e+01
-1.4451764684011524e+01
-3.2646792641151365e+00
--2.6020791564594013e+01
-1.4221700039032788e+01
-3.1501068760976887e+00
--2.5693390412432539e+01
-1.7452171174707050e+01
-3.7023730643172028e+00
--3.0431735438028475e+01
-1.4071252902607707e+01
-3.1556509419751380e+00
--2.5865355791390112e+01
-1.4151111996194210e+01
-3.1841536121162561e+00
--2.5984060614598398e+01
--7.5142418357837286e+00
-4.3828812744366790e+00
--3.8123934867842920e+01
-1.4449422059905320e+01
-3.0189875620625846e+00
--2.4757006850035090e+01
-1.4713198781894272e+01
-2.9870068418394515e+00
--2.4414033369475089e+01
-1.4659248996357055e+01
-3.2027448223237109e+00
--2.6273833981172949e+01
--2.7824334537935465e+00
-3.4729130130810066e+00
--2.8301702037189091e+01
-1.7891796118445981e+01
-3.5395676840649992e+00
--2.9617916633804366e+01
-1.3476851819279824e+01
-3.3026476621220553e+00
--2.8573824467821126e+01
-1.4359476597607772e+01
-2.8513321997318100e+00
--2.4275197125234037e+01
-1.4459887579360762e+01
-2.8917235533562264e+00
--2.4554869088767465e+01
-1.7803691904590153e+01
-3.4564018475414695e+00
--2.9509677810625231e+01
-1.4336956047989787e+01
-2.9323572596881595e+00
--2.5276672485213393e+01
-1.4488430868718378e+01
-2.9660411256728416e+00
--2.5525565402941869e+01
-1.4790275239407753e+01
-2.8646107488753807e+00
--2.4037887964116337e+01
-1.4790275239407753e+01
-2.8646107488753807e+00
--2.4037887964116337e+01
--1.2297811369079472e+01
-3.6564367074503048e+00
--3.3912492192980899e+01
--2.6821116673964052e+00
-3.1534491486326095e+00
--2.7678334748440221e+01
-1.3312242433511816e+01
-3.1875166558942598e+00
--2.8441820581640819e+01
-1.4235656342296281e+01
-4.9226104387221934e+00
--4.4827091999054552e+01
-1.3363704022771216e+01
-3.1529520697254463e+00
--2.8378547500591846e+01
-1.5656851027189330e+01
-2.7846048012589164e+00
--2.3816858469848633e+01
-1.4278543854722272e+01
-2.8176158337531607e+00
--2.5538647077417338e+01
--8.0094532533757672e+00
-3.8700410552373428e+00
--3.7058308027768078e+01
-1.3564699508546436e+01
-3.1941920187868016e+00
--2.9009151290382910e+01
--3.4407292860320271e-01
-2.5275241648778239e+00
--2.2103499580292414e+01
-1.3184165014609835e+01
-3.1578438573753509e+00
--3.0275957954238191e+01
-1.4773843941331869e+01
-2.6042640522229590e+00
--2.4070560086525383e+01
-1.4724543402826317e+01
-2.6409353894604530e+00
--2.4567245425570100e+01
-1.3586755305306012e+01
-2.9348050098766696e+00
--2.8382942645844224e+01
-1.4803942933370587e+01
-2.5204423870319297e+00
--2.4123075576784505e+01
-1.5214329162180936e+01
-2.7104380170129776e+00
--2.4847876368413075e+01
-7.2846813038861868e-01
-2.3126946932036261e+00
--2.1265078742375685e+01
-1.9138811912216898e+01
-3.0984107369853460e+00
--2.9159626090231455e+01
-1.3605555124100267e+01
-2.8593841905205881e+00
--2.8253219419523887e+01
-1.4461288452081861e+01
-2.5749780203352328e+00
--2.5106658057207017e+01
-1.3444380867133168e+01
-2.8585590870562738e+00
--2.8562634125066069e+01
-1.4797726629345183e+01
-2.4964229565220961e+00
--2.4828869846564565e+01
-1.3056131545715893e+01
-3.0246839205469049e+00
--3.1792922258771242e+01
--2.0140988513378186e+00
-2.5163312133636642e+00
--2.5582626054247356e+01
-1.4657106839060379e+01
-2.4214647154755564e+00
--2.4608099989668361e+01
--1.1680738423769704e+01
-3.1365295357760901e+00
--3.4306271092900204e+01
-1.3005242845355337e+01
-3.1535914143921469e+00
--3.4363993744168802e+01
-1.4947987379040352e+01
-2.2721012638901881e+00
--2.3513473052966230e+01
--2.0422187734693602e+00
-2.3618965662921121e+00
--2.5201455940953089e+01
-1.4178624698602116e+01
-2.4136515576713462e+00
--2.6319597083641163e+01
-1.4689145003220366e+01
-2.4836659568935060e+00
--2.6294737297966133e+01
-1.4649919331704346e+01
-2.2507176771232631e+00
--2.4843113711771238e+01
-1.5257093925090807e+01
-2.4456714011316003e+00
--2.5708092609108395e+01
-3.0602857442740148e+00
-1.9559668353363682e+00
--2.1253940283983539e+01
-1.2670615635086500e+01
-2.7205955678523130e+00
--3.2749981946847534e+01
-1.3816199197613805e+01
-2.4490788935706034e+00
--2.8803592195851813e+01
-1.4391796619416995e+01
-2.2591946753299523e+00
--2.6670761687173428e+01
-1.4849246318840976e+01
-1.9278089005251400e+00
--2.3378089047815177e+01
-1.4024700365729183e+01
-2.2148993156372776e+00
--2.7398755675333753e+01
-1.4202606862962885e+01
-2.1811432149482384e+00
--2.6783206396644697e+01
-1.9450506121181554e+01
-2.4155654986619677e+00
--2.9011093555129559e+01
--3.0410959071259156e+00
-2.1010912148705478e+00
--2.5856428868203508e+01
-2.2686592569624575e+00
-1.7699479382973737e+00
--2.0746023316963864e+01
-1.4472248980291516e+01
-2.1122642954574764e+00
--2.5884792633430660e+01
-1.4422857185563389e+01
-2.0784521598987498e+00
--2.5824572870935466e+01
--1.5450924060155331e+00
-1.9072327518074668e+00
--2.3161469754241416e+01
-1.7210436433240606e+01
-2.3184835202902656e+00
--2.9107008427799300e+01
-1.5487625457478282e+01
-1.8824819590034123e+00
--2.3377208861941451e+01
-1.0986072887542999e+00
-1.7189278443416538e+00
--2.0755800342241301e+01
-1.4312041082602770e+01
-2.0696549049267410e+00
--2.7202804700485423e+01
-1.4769761506155936e+00
-1.7560300341020010e+00
--2.1583165173290904e+01
-2.2170718041960278e+00
-1.6222914752726734e+00
--2.0694612302110862e+01
-1.3927113541156190e+01
-2.0187839123290625e+00
--2.8026474499980509e+01
--7.8522500260198500e+00
-2.5642926945547262e+00
--3.5478067089286199e+01
--1.2045467799255693e+01
-2.2571301060855919e+00
--3.2681996481943116e+01
-1.4700012517293390e+01
-1.8141842397516923e+00
--2.4755606770200856e+01
--1.0200171539538103e+00
-1.7313059950952689e+00
--2.2105901976024494e+01
-1.4530897746733238e+00
-1.5296549481168440e+00
--2.0620092767559264e+01
-1.4447596345004441e+00
-1.5392785853757676e+00
--2.0601943419317998e+01
-2.3829234008707564e-01
-1.5349910664076014e+00
--2.0974287952387350e+01
-3.7525782959098670e+00
-1.5143097690369702e+00
--2.1349836689371685e+01
-1.2987697653901506e+01
-2.2882204473726815e+00
--3.5467209420271523e+01
--9.9308222155053301e+00
-2.2359648833583976e+00
--3.4763945270693256e+01
-1.4446015566448228e+01
-1.6322150464975858e+00
--2.5343421591116400e+01
-2.6558423538336617e+00
-1.4268519037772767e+00
--2.0853479544591462e+01
-1.5575519561816217e+01
-2.5037170181347035e+00
--4.0021354771891367e+01
-2.5389801804182821e+00
-1.4642404400872076e+00
--2.1786301274251407e+01
-1.5056630756093323e+01
-2.4025254501118427e+00
--4.1214839476045441e+01
-1.3977827349523478e+01
-1.5893479726871982e+00
--2.8396675147890178e+01
-1.6454711712919522e+01
-1.7679633969224517e+00
--3.0510474914242753e+01
-7.1123293129395799e+00
-1.4977862478215167e+00
--2.5806481574223213e+01
-1.5114096375923420e+01
-1.6174116095968338e+00
--2.7517033759769873e+01
-1.4229476963367183e+01
-1.5525636080347220e+00
--2.7567436632332839e+01
-1.4248137209950889e+01
-1.5179188639698162e+00
--2.7401946341694273e+01
-1.5798479774064440e+01
-2.3682581016306825e+00
--4.2813565099111315e+01
-1.2654877004409091e+01
-1.8061818251842128e+00
--3.4229832963021387e+01
-1.4033333228281272e+01
-1.5409205572874289e+00
--2.8478375964601174e+01
-1.4511836371773216e+01
-1.5017302641976740e+00
--2.7266037147942622e+01
--3.6922182107366903e+00
-1.4175233025455685e+00
--2.5197979807287670e+01
-1.4373812681190351e+01
-1.4765578225415765e+00
--2.7464346208501134e+01
-1.5242930783078664e+01
-1.3277200178608046e+00
--2.3480397623099918e+01
--8.1504753371921645e-01
-1.2798278329408457e+00
--2.1652591537537369e+01
--1.2920403563277672e+01
-1.8473135724901772e+00
--3.4986824747618606e+01
-1.5772353748310822e+01
-1.5721091917927912e+00
--3.0593520310844415e+01
-1.4519299495676243e+01
-1.4277020828163434e+00
--2.7652345878348473e+01
-1.4305941194756414e+01
-1.3432284980217211e+00
--2.7054713830542610e+01
-1.4988866565366472e+01
-1.2405842523250381e+00
--2.4355306226308358e+01
-1.5385002619171766e+01
-1.1965725186217351e+00
--2.3248986153425896e+01
-1.4259502678809580e+01
-1.3195270891789943e+00
--2.7585467426970464e+01
-1.4326233014374873e+01
-1.2952497917355492e+00
--2.6851606514611884e+01
-1.5317087408957235e+01
-2.0115927865111551e+00
--4.1151445483615596e+01
-1.4559702559591649e+01
-1.2612473996494118e+00
--2.6205477406242448e+01
-1.5818237322799131e+01
-1.2952006306293165e+00
--2.4271551643072190e+01
-1.4033518389262388e+01
-1.3121403667870666e+00
--2.8459547699020163e+01
-1.4372324009370395e+01
-1.2829420976489092e+00
--2.7129333729970945e+01
-1.5005820508129581e+01
-1.1923403277873266e+00
--2.4383284920665062e+01
-1.5005820508129581e+01
-1.1923403277873266e+00
--2.4383284920665062e+01
-1.4454309005538111e+01
-1.1587914506421131e+00
--2.6459229424978911e+01
-1.7422682493917815e+01
-1.3471071396277232e+00
--2.9876045563141357e+01
--3.3043265278117486e+00
-1.1320907596088794e+00
--2.4660020663024053e+01
-1.3907681258036508e+01
-1.1637269289578491e+00
--2.8331565168391691e+01
-1.4008566693180526e+01
-1.1663837322325337e+00
--2.8578099070942226e+01
-1.4320572101019884e+01
-1.1710723850389102e+00
--2.7408162434612137e+01
-1.5377899267686308e+01
-1.0390683238274565e+00
--2.3426493278603512e+01
-1.4182794223499078e+01
-1.4723332847049793e+00
--3.4539984824317123e+01
--8.3633541257290034e+00
-1.3783410449402997e+00
--3.4045833926194256e+01
-1.9008465675222641e-01
-9.6645021156224387e-01
--2.0783195775378086e+01
-1.6292222198619193e+01
-1.1995698714193845e+00
--3.0028247823144913e+01
--8.9921843427129389e+00
-1.3379562600893440e+00
--3.4007891506245990e+01
-1.6158056814508811e+01
-1.1899601497645691e+00
--3.0242543996735215e+01
--9.5454226536238433e+00
-1.2872867489252113e+00
--3.4040536450222248e+01
-1.4555591612325943e+01
-9.6250796005106998e-01
--2.6436852092021034e+01
-1.4452732547136412e+01
-9.6087656815995115e-01
--2.6393145691558267e+01
--8.8667019991763674e+00
-1.2505124267789263e+00
--3.3118028362477666e+01
-1.0678891360908114e+00
-9.2061463053841641e-01
--2.0460485552429414e+01
-1.7871249149194021e+01
-1.1708904366499961e+00
--2.9715872096113685e+01
-1.4052830990919668e+01
-9.7003775691817851e-01
--2.9421249158111635e+01
--9.0074232216162819e+00
-1.1475482007333839e+00
--3.3956690891400079e+01
--9.0097866392238668e+00
-1.2086523576197636e+00
--3.3734350990277271e+01
-1.6242318229610287e+01
-1.5505965258505663e+00
--4.1630319491879689e+01
-1.4673637954379050e+01
-1.0581996622585714e+00
--2.8987098082105579e+01
-1.4821629594313961e+01
-9.2957843374398463e-01
--2.7101362045882421e+01
-1.5592829383471100e+01
-7.4838021097678176e-01
--2.4072477588636254e+01
--1.9000059091293664e+00
-8.3352188914510683e-01
--2.3005558162697064e+01
-1.4336875191498226e+01
-8.7187539842372563e-01
--2.8185296619284593e+01
--2.0153240821929828e+00
-7.7260869161310308e-01
--2.3112177831988397e+01
--8.1574535166462034e+00
-9.7675726576625188e-01
--3.3451029341004293e+01
--8.3887083152224484e+00
-9.4525842576682650e-01
--3.3817975386600168e+01
--9.1142137312765517e+00
-8.8576671330252843e-01
--3.3627684731718475e+01
-1.5686613725629414e+01
-8.1963230120045960e-01
--2.4076864551143835e+01
-1.5296900068952851e+01
-6.9928946183681751e-01
--2.3784117836600629e+01
-1.3946439296250919e+01
-9.1772762813055042e-01
--3.1968504848390253e+01
-1.5273256619675907e+01
-6.8664045428842935e-01
--2.3873206388989750e+01
-1.5479397850012436e+01
-7.5025160497713961e-01
--2.5326058911898688e+01
--2.1440155610782448e+00
-6.7938831621959195e-01
--2.2995641698529756e+01
-1.4335218025367329e+01
-6.7098590645016365e-01
--2.8222760877477423e+01
-1.4905401187251810e+01
-7.7130948805184640e-01
--2.9337096984525370e+01
-1.5650044253616798e+01
-6.3692353135464119e-01
--2.3851233093687537e+01
-2.0586632437628984e+00
-6.1240923745392772e-01
--2.0373413871467683e+01
-1.3367971764361961e+01
-6.6743646713431248e-01
--3.2092194593625990e+01
-5.9191222808676596e+00
-5.8549132845295604e-01
--2.3360083291676919e+01
-1.4374144038074117e+01
-5.7585555554793610e-01
--2.7098390372685301e+01
--1.1345366647345546e+01
-6.1656391629908536e-01
--3.2979108184096205e+01
-1.4277461410880175e+01
-5.0486603599113644e-01
--2.8454197022484948e+01
-1.0489539188319461e+00
-5.1040406196784849e-01
--2.0399794529820106e+01
-1.4483118829938478e+01
-5.3521926805778330e-01
--2.8285970352046203e+01
--3.6742575923227188e+00
-5.2006536346085752e-01
--2.4059591112882142e+01
--9.6861683199990196e+00
-5.9260984009583173e-01
--3.3199873365610308e+01
--2.4297722792537062e+00
-4.8513827313690383e-01
--2.2899315324450217e+01
-1.4353529857390782e+01
-3.3592853234435066e-01
--2.8464451386325610e+01
-4.0982146435574371e+00
-4.8790955619995030e-01
--2.1804430369469017e+01
-1.4472126666431926e+01
-3.4810512180388514e-01
--2.8652354182871935e+01
--9.5707099361409735e+00
-3.8684973043571175e-01
--3.2960632038336755e+01
--1.5857734036566626e+00
-3.7620994413646430e-01
--2.2282029364169087e+01
--1.5683929158075063e+00
-3.6465032101035622e-01
--2.2213521832480570e+01
-1.5596908972867643e+01
-3.0065663662914699e-01
--2.4207456559025566e+01
-4.6441127653826969e-01
-2.8579827000822533e-01
--2.0532975928336327e+01
-1.4367650596890112e+01
-2.4800926248860741e-01
--3.1379910209038393e+01
--2.1517211257619828e+00
-2.6334157090456500e-01
--2.2584852736599053e+01
-3.3124438679686756e+00
-1.9671732640859385e-01
--2.0705943357750375e+01
-1.4512343872019001e+01
-8.1201387451301718e-02
--2.7714531486376437e+01
-1.1535239033620692e+00
-2.3211672448851073e-01
--2.0343034104712672e+01
-1.4620329131798906e+01
-1.0865582225125614e-01
--2.7487830404723560e+01
-1.4634383134419837e+01
-6.1668160811305293e-02
--2.7920262178251342e+01
-1.4498264638925962e+01
-8.7828534711720738e-02
--2.9138337844045331e+01
-1.4560998464494192e+01
-8.7669322943878775e-02
--2.9249898977376116e+01
-1.4696990134051783e+01
-2.1710956076940451e-02
--2.7139026783064200e+01
-1.5497359978529964e+01
-5.2241490933238592e-02
--2.3812316786960977e+01
-1.5883191377104856e+01
-1.1921562930595730e-01
--2.4701662330576529e+01
-1.5466644892960723e+01
-1.2834798812865604e-02
--2.3929876598035623e+01
-1.5916754412958573e+01
-9.9688165397593342e-02
--2.4640901930692419e+01
-1.4471901789682688e+01
--8.3634243425319624e-02
--2.9665393897061936e+01
--1.7630485909722446e+00
-6.0772734809270319e-02
--2.2165414802402342e+01
-1.5015876479333592e+01
--6.5763236457553387e-02
--2.5906341799137547e+01
-1.5027214975089080e+01
--7.7210843547888916e-02
--2.5872316648208578e+01
--6.4893934467078527e+00
--3.6048592451595474e-02
--3.2230447950325427e+01
--6.4627481073051332e+00
--2.7313986894275690e-02
--3.2024443366462663e+01
-5.0687929054729464e-01
-8.1770133318769866e-02
--2.0556207460142051e+01
-7.5161305595797936e+00
--1.8994624387397983e-02
--2.4157334770304523e+01
-1.4426567866639394e+01
--2.3785810743431696e-01
--2.8157811989428378e+01
--1.0924696921245825e+01
--1.6342070484974316e-01
--2.9421150773271918e+01
--1.0020521714852130e+01
--1.3203443561161313e-01
--3.2166126013286338e+01
-1.5191950046427422e+01
--1.5212899344570688e-01
--2.3988639111014699e+01
-1.5661838639997498e+00
--1.3872485587407540e-04
--2.0384149005858006e+01
-1.4744644777223172e+01
--1.8549131529690777e-01
--2.9748263598440921e+01
-1.4725904455349864e+01
--2.8653029881153591e-01
--2.7324388213703838e+01
-1.4995398143030817e+01
--2.5328202780740200e-01
--2.6325220389132724e+01
--5.7123382594574201e-01
--8.4155286384539160e-02
--2.1109661721961018e+01
--1.0670795016409073e+01
--2.7596157129390342e-01
--2.9167793262081187e+01
--3.6876642465853182e+00
--1.2613362506971834e-01
--2.3237613542127271e+01
--1.2896761283682783e+00
--7.3474387739970587e-02
--2.2232603489125324e+01
--9.1426609148171529e+00
--4.6565159803279360e-01
--3.1842878094231253e+01
-1.5729964236000335e+01
--4.2568428011040865e-01
--2.3923993925653690e+01
-1.4634152362109083e+01
--5.2836634731029053e-01
--2.7997846655911349e+01
--3.4962650659890060e+00
--2.6719686001192766e-01
--2.3034835636678704e+01
--1.1309272518483702e+01
--5.2673191657020613e-01
--3.1665725446198390e+01
--9.0448159222098887e+00
--6.0171914208034316e-01
--3.1706609360610830e+01
--1.0627766720008246e+01
--6.1956686713616782e-01
--3.1583476028681435e+01
--4.8760290371987752e-01
--3.1965920694714206e-01
--2.1073796772238577e+01
--1.1492024505246137e+00
--3.3478251753081473e-01
--2.1665121518400895e+01
-1.4639811789196509e+01
--6.8663307810273400e-01
--2.9319171953532130e+01
-1.4620332480594330e+01
--6.5981782247849730e-01
--2.8262579425380046e+01
--1.6000738246527128e+01
--6.1593660174544540e-01
--3.1466925158747006e+01
--9.9971637622065863e+00
--7.1674633304227087e-01
--3.1444929383276325e+01
--3.1569160445811657e+00
--3.9734197788129066e-01
--2.2857645925083212e+01
--2.1203915142839307e+00
--3.9390214060496892e-01
--2.1979396164848591e+01
-1.4961955662434072e+01
--6.2613488843028853e-01
--2.6451754501662951e+01
-1.5050161669210764e+01
--6.0613521222231737e-01
--2.6618153086568643e+01
-4.3277667821990171e+00
--3.8071519905567641e-01
--2.1319366796390160e+01
-1.5231145621955662e+01
--5.9664944311030110e-01
--2.5716067671791734e+01
--1.7756471959303685e-01
--4.2714308802782569e-01
--2.0883866101822139e+01
-1.8174135733154809e+01
--7.5196157481845893e-01
--2.9630394874596771e+01
--1.0098087071333635e+01
--7.9472836457859353e-01
--3.1304348444536419e+01
-1.0668632826229807e+00
--4.4793764586654217e-01
--2.0396003503410476e+01
-1.5779131262528530e+01
--7.4547152455243915e-01
--2.4014421112094222e+01
--8.9205735675973443e+00
--7.9211047625631970e-01
--2.9835068035696565e+01
--8.9205735675973443e+00
--7.9211047625631970e-01
--2.9835068035696565e+01
-6.2435864360851658e+00
--5.7861144380348106e-01
--2.3083176668800039e+01
-1.4661444070939663e+01
--8.7507161178726633e-01
--2.8940021385012045e+01
-1.7248643848094083e+01
--8.6921787506068260e-01
--2.9961712543373952e+01
-4.6960449965609925e+00
--4.9439736882672469e-01
--2.3210629147240333e+01
-1.5317254382716646e+01
--8.0156145282560776e-01
--2.6765449997240946e+01
--1.0293601551941105e+01
--8.6413493293061017e-01
--3.1378306403330313e+01
-1.5727615966456701e+01
--7.9802872531037616e-01
--2.4281298858416509e+01
-1.1068620056364811e+00
--4.6787753325459402e-01
--2.0430465847956125e+01
-1.4761691956463702e+01
--1.0394438233711236e+00
--2.9006314337463241e+01
-1.5769033327621198e+01
--8.8674249785098236e-01
--2.4724022855032132e+01
--3.8278241166730167e+00
--7.6784327411017450e-01
--2.3908515495566427e+01
-5.0887334951573910e+00
--7.2142389675922558e-01
--2.1807682239492618e+01
-1.6107069195836822e+01
--1.0025617655480508e+00
--2.4039480578239491e+01
--1.4249897742461473e-01
--7.8943900118273924e-01
--2.1019063385588630e+01
--9.8534075418631897e+00
--1.2725741083182753e+00
--3.0779832658773557e+01
-1.4635735260694689e+01
--1.4558086485348474e+00
--2.9350259483469465e+01
-1.4707638613909163e+01
--1.3988010259865256e+00
--2.8598333743640804e+01
--7.8776307808269808e+00
--1.2938738187510161e+00
--3.0486421405951017e+01
-1.4773524711579636e+01
--1.3839295625554082e+00
--2.8417273125995312e+01
-1.2003145941750182e+00
--8.3126974125461794e-01
--2.0463328457929741e+01
-2.0664398557611365e+00
--8.0616562702468531e-01
--2.0464454088431026e+01
-3.3379342999317410e+00
--8.7132312622185937e-01
--2.2248577765800800e+01
--9.8106372950455825e+00
--1.4286820548824979e+00
--3.0513259338416162e+01
--1.0898333438550070e+01
--1.4850081941670794e+00
--3.0628552220212914e+01
--1.1065794441791860e+01
--1.4557143057457824e+00
--3.0660775909807146e+01
-1.7433983822330884e+01
--1.5373642356651165e+00
--3.0328761225698422e+01
-1.6519959792517560e+00
--9.6525574295353611e-01
--2.0450157341640871e+01
--9.2058970126743436e+00
--1.4648889000096752e+00
--3.0369411398173384e+01
-4.2132335280750938e-01
--9.5865814925487591e-01
--2.0789348435935985e+01
-6.4557831351292174e+00
--1.1379399974455191e+00
--2.2234584468164712e+01
-1.4722965774965273e+01
--1.6660480673192666e+00
--2.8773234224517687e+01
--9.6987481909427551e+00
--1.5043503306138237e+00
--2.8577864349907379e+01
-3.2980379861156801e+00
--1.0228059277086443e+00
--2.0861157291805615e+01
-1.5179091539205041e+01
--1.5984359210512604e+00
--2.7837245314463448e+01
-6.3949061548541968e+00
--1.1971265023012756e+00
--2.2116854396927405e+01
-4.5611685656201360e+00
--1.0749223208219840e+00
--2.1516190993938103e+01
-5.1352541138590819e+00
--1.1560393413934418e+00
--2.3258297528078067e+01
-1.6600609052012725e+00
--1.1421977619312571e+00
--2.0514066964462220e+01
-4.1102582479107550e+00
--1.1757563496414134e+00
--2.1038928428913849e+01
-6.4052576883471115e+00
--1.2559819804611809e+00
--2.2161923721731366e+01
-3.6090288445585834e+00
--1.1520424795715321e+00
--2.2426052191863075e+01
-1.5399894786378026e+01
--1.7540496193197315e+00
--2.6464947030166591e+01
--9.1560197336557125e-01
--1.2397466482318176e+00
--2.0909989400613334e+01
--7.3258035412244960e-01
--1.3078700992877317e+00
--2.0700336308685184e+01
-1.1658298237576117e+00
--1.3325563315138163e+00
--2.1401735195291618e+01
--6.9520143421860929e+00
--2.1304120711182835e+00
--2.9588472382073551e+01
--2.2650935690089624e+00
--1.4838382888915902e+00
--2.1365647861520607e+01
--2.8738140044334437e+00
--1.5280750320564278e+00
--2.1296107805066665e+01
-3.3746418266192375e+00
--1.5429958747572368e+00
--2.0532249003771717e+01
-1.5022736263394188e+01
--2.5160911668375521e+00
--2.9258011583684148e+01
-3.7314941224090790e+00
--1.6358604533953729e+00
--2.2050825284664683e+01
-1.6201067716054613e+01
--2.2110647699296884e+00
--2.4473445490326860e+01
-1.2214886030211189e+00
--1.6604466081974500e+00
--2.0133854216127475e+01
-1.1664468003242001e+00
--1.7048448592987917e+00
--2.0155785322840071e+01
-1.5914819072824267e+01
--2.3828058044508920e+00
--2.5692829841652141e+01
--2.1550393175743401e+00
--1.7648654572791480e+00
--2.1207302144799662e+01
-2.0385094192802025e+00
--1.7452758984302290e+00
--2.1265997031947158e+01
-1.5646044563271879e+01
--2.5963991066693524e+00
--2.7446101612455774e+01
-1.5327658459154346e+01
--2.6869256097023815e+00
--2.8625904872473200e+01
--1.5344175892092402e+00
--1.8315337075113447e+00
--2.1140978657393230e+01
--2.7460529925807937e+00
--1.9526516197054204e+00
--2.2093543207114266e+01
-5.7719538044109040e+00
--1.9889740019492748e+00
--2.1406436845044411e+01
-1.5936495831469548e+01
--2.6193622866499005e+00
--2.6620543219439483e+01
-7.7920350091192275e-02
--1.8851454199339250e+00
--2.0544014097918176e+01
--7.2804187624443728e-01
--1.9049337276245921e+00
--2.0779268665095032e+01
-1.7113538453406640e+01
--3.0684587182512923e+00
--3.1105591115575677e+01
-1.9488277210772310e+01
--2.8780300222054547e+00
--2.9370711829112619e+01
-1.9488277210772310e+01
--2.8780300222054547e+00
--2.9370711829112619e+01
-1.8824207050653445e+01
--3.0862214631314138e+00
--2.9815767361112474e+01
-1.7678383780149282e+01
--3.2170870125788600e+00
--3.0557809165873095e+01
-1.6005832066272308e+01
--2.7925907530385929e+00
--2.6646956363574937e+01
-1.6005832066272308e+01
--2.7925907530385929e+00
--2.6646956363574937e+01
--1.5098335875319056e+00
--2.0921453464492146e+00
--2.0711339338995220e+01
-1.5464182157473667e+01
--3.0362052320811972e+00
--2.7607443554512166e+01
-1.5772290959694141e+01
--3.0176243879516531e+00
--2.6888875097896879e+01
--7.2327346607741622e-03
--2.1207663651892457e+00
--2.0624444445591767e+01
-1.5278790901729201e+01
--3.0388490118853171e+00
--2.7160758093995060e+01
-1.0282626184311214e+00
--2.1643867282628451e+00
--2.0255148009278724e+01
-2.7504639505274957e+00
--2.1655019522113852e+00
--2.0393863201758066e+01
-1.5697898160737038e+01
--3.2026463835678278e+00
--2.7767493287046801e+01
-1.5630231076204835e+01
--3.2143968696456215e+00
--2.7690769879286041e+01
-1.5697916991039031e+01
--3.1876404740802475e+00
--2.7804000818249204e+01
-4.0343184511655000e-01
--2.2055785284618330e+00
--2.0376906627058162e+01
-1.9022352150636145e+01
--3.4340780480401287e+00
--2.9830721258841429e+01
--1.9941074302573536e+00
--2.3536679024604936e+00
--2.1461537898792063e+01
-2.8089748537622303e+00
--2.2845515763833322e+00
--2.0474994694465188e+01
--8.9672213361629662e+00
--2.9764167755053803e+00
--2.6600823704511217e+01
-4.7102835657617010e+00
--2.3576734051488084e+00
--2.0557027796573475e+01
-1.5912433940188800e+01
--3.1199283089031771e+00
--2.5020612989538488e+01
-4.6889770158727746e+00
--2.4018520204069609e+00
--2.0349011488357196e+01
-4.7180297533057018e+00
--2.4050232248215093e+00
--2.0507708805826301e+01
--1.8029940646988154e+00
--2.5013058009878351e+00
--2.1378768780416305e+01
-1.8147420839032357e+01
--3.7372156806221022e+00
--3.0369104026722617e+01
--1.9600758125730628e+00
--2.5472053197068254e+00
--2.1661050582812852e+01
--1.2953483414035527e+00
--2.4331366967668879e+00
--2.0531000557058835e+01
-4.4892425553145587e+00
--2.4679305203446900e+00
--2.0433226360312318e+01
-5.1661151143877317e+00
--2.5335692542894970e+00
--2.0540599012405398e+01
--1.6607525552685415e-01
--2.4682359097090800e+00
--2.0216984894202582e+01
-4.5954750238582722e+00
--2.5586868131948597e+00
--2.0563844757583475e+01
-1.6596183273361710e+01
--3.6558565482118044e+00
--2.8224795766190990e+01
-1.6039559257415924e+01
--3.5673646833899912e+00
--2.7694024842005916e+01
-1.6033793078895261e+01
--3.5757709412153100e+00
--2.7754471541848837e+01
-4.8180123326869817e-01
--2.5080984973659386e+00
--2.0123487514751091e+01
-1.5775426117556785e+01
--3.6198813192529857e+00
--2.6678773205951369e+01
-1.6359925062478602e+01
--3.5763725037976264e+00
--2.5308421807811175e+01
-1.2706529678085394e+00
--2.5958043109612174e+00
--2.0014576306416654e+01
-3.5319065460784769e+00
--2.6329242523766090e+00
--2.0145964880117976e+01
-1.1828975834626339e+00
--2.6121157252544118e+00
--2.0779826073117665e+01
-3.2738930364282548e+00
--2.5987136381055409e+00
--1.9975900947946670e+01
-1.6420220523739175e+01
--3.6619677610373835e+00
--2.5185846257928031e+01
-3.6319830652280101e+00
--2.6572627425515569e+00
--2.0192105441816757e+01
--1.2726714331345776e-01
--2.6611746153755100e+00
--2.0612504942281934e+01
--5.3787861041009055e-01
--2.7573841959180316e+00
--2.0312645299634958e+01
-6.9049898946443555e-01
--2.6982352654140889e+00
--1.9776411977225035e+01
-3.6409497991505479e-01
--2.6512027479848821e+00
--1.9891386604329291e+01
-1.3621346705275683e+00
--2.7227235812164685e+00
--1.9850404350305023e+01
-1.2590969827733869e+00
--2.6670181857919943e+00
--1.9814981210352720e+01
-5.9351511097842180e-01
--2.8557419350098616e+00
--2.0538991090993271e+01
--9.0074415245578514e+00
--3.9901009606491353e+00
--2.7111783021358381e+01
-2.1843848040306306e+00
--3.0095511039928065e+00
--2.0736472562619841e+01
-1.5693500784364491e+00
--3.0109880996079927e+00
--2.0673580121838498e+01
-2.1308720231788270e+00
--2.9928066430543265e+00
--1.9858632157438482e+01
-2.6789208863132612e+00
--3.0922853293881993e+00
--1.9949561155635237e+01
--7.0181319577000922e-01
--3.2434936673784791e+00
--2.0843840069587255e+01
--3.7862451119482582e-01
--3.1836839629578533e+00
--2.0738658537131226e+01
-1.9428746074474768e+00
--3.1460010922798300e+00
--1.9973896740400374e+01
-1.6208937071442708e+01
--4.2895868511341835e+00
--2.5377323399805167e+01
-1.6125993491920747e+00
--3.1634406823741075e+00
--2.0546472914096736e+01
--2.1579716518502301e+00
--3.6351436044020886e+00
--2.2737059618582368e+01
--2.8217003540093581e+00
--3.7910359283986250e+00
--2.3615848077073593e+01
--4.1497478238100965e-01
--3.3882928286195870e+00
--2.0896271419037259e+01
-1.6126841947418374e+01
--5.2110956384112157e+00
--2.8893015083620654e+01
--2.1068312528113206e-01
--4.1301664459024465e+00
--2.1512980282777335e+01
--6.3842783167072019e+00
--4.8504690482273363e+00
--2.4885909973530065e+01
-1.1502205295069999e+01
--5.1767798549657753e+00
--2.5434591950619495e+01
-5.1287783497084005e+00
--4.5715330740862230e+00
--2.2686993442759007e+01
-5.1113665009611609e+00
--4.5593680877009781e+00
--2.2645247699104491e+01
-4.1881345721771677e+00
--4.7102436913462151e+00
--2.3623207525549891e+01
-3.8099281522132631e+00
--4.5699305366602454e+00
--2.1966016490945123e+01
-1.7341221444132998e+01
--6.1756167275298646e+00
--2.8598813730406018e+01
-9.5847736523218323e+00
--5.6245129566166074e+00
--2.4957001008046493e+01
-9.4975650906559181e+00
--5.7551468132048242e+00
--2.5128083937013631e+01
-2.1788729755698690e+00
--4.8491016946923162e+00
--2.1465449706721131e+01
-2.2881557420091929e+00
--4.9512136594720726e+00
--2.1696495321756949e+01
-2.6107511727073152e+00
--5.1408598482380805e+00
--2.2050261035570283e+01
-5.6284548685528701e+00
--5.4757212292608557e+00
--2.2595074343494105e+01
-2.6986038044441072e+00
--5.3510972909660328e+00
--2.2180138928022693e+01
-1.5023939970033528e+01
--6.6042232154326088e+00
--2.6938503034462187e+01
-8.7571134791461613e-01
--5.2195841472826094e+00
--2.1533908121590898e+01
-1.4210895647644165e+01
--6.7497223526991545e+00
--2.6395849222642035e+01
-1.8765571562526951e+01
--7.4013538716465668e+00
--2.8397309637931535e+01
-1.4067333219997053e+01
--6.8460628229914828e+00
--2.6216986482636703e+01
-1.3201411793806747e+01
--6.4376487379376757e+00
--2.4689447117316764e+01
-8.4802056618634474e+00
--6.3837861539120384e+00
--2.3973008333254324e+01
-1.5785156388666428e+01
--7.1578614263100002e+00
--2.6799009809140486e+01
-1.6318520225898833e+01
--7.2338170895496683e+00
--2.7022558197879984e+01
-1.4460385421554827e+01
--7.0433549414330736e+00
--2.6228065521380969e+01
-1.3247228796313038e+01
--6.9162239579030782e+00
--2.5635245614228349e+01
--7.2880392196415125e+00
--6.0484114053963118e+00
--2.2522798957347103e+01
-1.5190051069180248e+01
--7.3182130130256553e+00
--2.6332836844999857e+01
--7.5626214942004211e+00
--6.4836818936815366e+00
--2.3768930705947962e+01
-1.3773995807438938e+01
--7.1925301470676821e+00
--2.5712225609931949e+01
-4.9527521003463066e+00
--6.3975713635964251e+00
--2.2870612575968774e+01
--7.4252138132747891e-01
--6.2032069071023797e+00
--2.2273075168909564e+01
-1.3614852157396124e+01
--7.3044590128000193e+00
--2.5526626469714209e+01
-8.2962238527603756e+00
--6.8715511087150558e+00
--2.3336062829773692e+01
--2.5087335525206100e-01
--6.4294902528200915e+00
--2.2336476174498188e+01
-1.3037153603782798e+01
--7.4160400503075499e+00
--2.5142244045663585e+01
-1.7365833079217623e+00
--6.4140688126367031e+00
--2.1773760175201623e+01
-2.1640903003392569e+00
--6.8106245370088851e+00
--2.2193843556480971e+01
--4.0353089302054883e+00
--6.9589987851473092e+00
--2.3000360721560998e+01
-1.1417821783491048e+01
--7.4977902485605812e+00
--2.4193555895245279e+01
-1.0553159530357341e+01
--7.2195802476653155e+00
--2.3143602347580590e+01
-1.7138351899272664e+01
--8.3502687541763905e+00
--2.6623201072729469e+01
-1.0726095474286867e+01
--7.2759113511290900e+00
--2.3079657711634749e+01
-1.4715234240232698e+01
--8.0337459406491440e+00
--2.5461433281149301e+01
-6.7984344004972872e+00
--7.3430027275792007e+00
--2.2695858567610347e+01
-6.6450635521057002e+00
--7.1959627370517509e+00
--2.2340641897200882e+01
--3.7971224837453312e+00
--7.2805258897572527e+00
--2.2414544347583607e+01
--5.3091853413590346e+00
--7.3124639878688287e+00
--2.2595156594811094e+01
--3.9780748816497260e+00
--7.3017192892651277e+00
--2.2599633802564544e+01
--2.9257872158275009e+00
--7.4858357847731609e+00
--2.2343100003498154e+01
--2.5428579540147114e+00
--7.2656321981033036e+00
--2.1576278881120299e+01
-8.9768528308816098e+00
--7.7746097617262038e+00
--2.2067504832043628e+01
-1.2919807317604299e+01
--8.5129022465241757e+00
--2.4125725519281854e+01
-1.5194583324264633e+01
--8.8694754984294484e+00
--2.5094553761833595e+01
-1.2490901084461425e+01
--8.4742171950909544e+00
--2.3744124014018624e+01
-7.9901279076862197e+00
--7.6918832483100257e+00
--2.1698964024679761e+01
-1.6658577941949982e+01
--9.1880950832319783e+00
--2.5625567142066458e+01
--2.4163478000442371e+00
--7.6767827889318907e+00
--2.1688780601800893e+01
-1.3455841083507615e+01
--8.7425747148475885e+00
--2.4162164947632210e+01
-1.3455841083507615e+01
--8.7425747148475885e+00
--2.4162164947632210e+01
--4.5263259298682597e+00
--7.8403325155871437e+00
--2.1824904777567287e+01
--1.4810449395766758e+00
--7.6523013784507388e+00
--2.1291978824417953e+01
--3.1827306952168031e+00
--7.6185983907170334e+00
--2.0735946538823026e+01
-8.3818079892726907e+00
--8.1390947262072260e+00
--2.1635074417836577e+01
-1.3832484834357199e+01
--9.1228029829776371e+00
--2.4071559479136013e+01
--5.4581121073066816e+00
--7.4261198019963253e+00
--1.9744623820846904e+01
--2.2852134567255131e+00
--7.9992797913386067e+00
--2.1472193833560667e+01
--5.7107021923573900e+00
--8.1330674820682365e+00
--2.1585931350268421e+01
--4.8342427161803476e+00
--7.6740961670440626e+00
--2.0369846384933481e+01
--1.7988986553442137e+00
--7.8731443879587362e+00
--2.0855170100255361e+01
-6.1475159774919552e+00
--8.2652120260877080e+00
--2.1374763037683724e+01
--2.4720749061991145e+00
--8.2493404412124249e+00
--2.1323333944736451e+01
-2.2645568733009769e-01
--8.1217002290140865e+00
--2.0806315388651875e+01
-1.3243713898806446e+01
--9.2935900498766717e+00
--2.3582522828934376e+01
-2.6910381849177467e-01
--8.1175600760292657e+00
--2.0853682971151571e+01
-9.2700629137718273e+00
--8.4613150817468714e+00
--2.1342398156763299e+01
-6.8570386528402039e-01
--8.3316123263140636e+00
--2.1182174768452299e+01
-1.6639091654889826e+00
--8.1680875719190222e+00
--2.0710157096840373e+01
--1.0160141956837467e+00
--8.3899802308915046e+00
--2.1169902705585550e+01
-1.9084487941861390e+00
--8.2541803049707685e+00
--2.0683459409766940e+01
-2.8586558074825996e+00
--8.2649226933310000e+00
--2.0828697586584966e+01
-1.0762552977848660e+01
--9.0421820131078565e+00
--2.2520935121710266e+01
-2.4038035053974582e-01
--8.1366351955870364e+00
--2.0484822304631159e+01
-1.5666592322095938e+00
--8.2501449079579192e+00
--2.0711309118142648e+01
--7.9117839429445946e-01
--8.1368981413850623e+00
--2.0426984203644725e+01
--8.1995099330699961e-01
--8.3451869746294545e+00
--2.1083701569202766e+01
-3.4029543445083932e+00
--8.4645334121305371e+00
--2.1032106749848325e+01
-3.4317454964909087e+00
--8.5275755912505549e+00
--2.1063051285887934e+01
-1.2475337186900584e+01
--9.3514352902968554e+00
--2.3096117304970399e+01
-2.4861744064402056e+00
--8.2615511305217968e+00
--2.0753347562090546e+01
-7.5257551097344078e-01
--8.2817876445553686e+00
--2.0587852866186118e+01
-2.4103801920138350e+00
--8.3256238299499916e+00
--2.0615898660049208e+01
-2.2973374720241408e+00
--8.5725573116313694e+00
--2.1011078286354021e+01
-1.5144531710604278e-01
--8.5597932412283111e+00
--2.0970892587693790e+01
-1.3513975446767523e+01
--9.6569707042786064e+00
--2.3445650250131528e+01
--1.3407244318853186e+00
--8.2287542080249150e+00
--2.0240673381883315e+01
--1.3407244318853186e+00
--8.2287542080249150e+00
--2.0240673381883315e+01
-8.2286389510347870e+00
--8.8689278742577073e+00
--2.1531613911683454e+01
-1.1052775192486633e+01
--9.3339740832216709e+00
--2.2411422692091953e+01
-8.5286079847051397e+00
--9.0090179971336770e+00
--2.1495500438095764e+01
-1.3155776987826568e+01
--9.7346854411098445e+00
--2.3177672023081524e+01
-1.3155776987826568e+01
--9.7346854411098445e+00
--2.3177672023081524e+01
--1.4496885667530834e+00
--8.3401056873651989e+00
--2.0001664396152869e+01
--1.4967711929609779e+00
--8.5980144341380864e+00
--2.0907401365894419e+01
--1.2210588247516101e+00
--8.5960964034303711e+00
--2.0737855166167023e+01
--1.1842501274723440e+00
--8.3536670572172564e+00
--2.0033515988261229e+01
-1.1469710810403965e+01
--9.4973702176083705e+00
--2.2305500371882999e+01
-6.5642489715722823e+00
--8.8168919098373397e+00
--2.0799915800362324e+01
-1.2843740955378301e+01
--9.7595720952385285e+00
--2.2986507201287903e+01
-8.9454900489853006e-01
--8.4956981827423856e+00
--2.0207833879645289e+01
--1.2416007763573578e+00
--8.6336829203123244e+00
--2.0681635939053272e+01
-1.5035671814528484e+01
-2.5384347308333513e+01
--5.4860999567429964e+01
--1.4995647393007008e+01
-1.6502650629534855e+01
--3.4777046163355621e+01
-3.1765231819745177e+00
-2.1732165479654110e+01
--4.7299916212037338e+01
-3.1452920733363490e+00
-2.1673614348616482e+01
--4.7158169595292755e+01
-1.6893709752575813e+01
-2.5346704177487887e+01
--5.5092191372399959e+01
-2.7370694417686718e+00
-2.1352817203930879e+01
--4.6397283067902777e+01
--1.2386304040873421e+01
-1.6486078488167205e+01
--3.5358487111494256e+01
-1.0899589827140385e+01
-2.3606331951103630e+01
--5.1799491562649735e+01
-1.9589916814740498e+00
-2.1060573071848466e+01
--4.6203100584801355e+01
--4.7468280766367414e+01
-3.8092395093147559e+01
--8.3981457962639368e+01
-4.8821905867817894e-01
-2.0920986725680311e+01
--4.6628526871117778e+01
-1.3226202123738080e+01
-1.4795296772596298e+01
--3.1542924570135895e+01
-1.5277975980033069e+01
-2.4611536566365015e+01
--5.4656280909225686e+01
--9.7279624004567857e+00
-1.7467217965096928e+01
--3.8614417956520263e+01
-2.0447122257885720e+01
-2.6158454422166699e+01
--5.8220723740847113e+01
-5.7517024079907229e+00
-2.1770866676008879e+01
--4.8755722705823935e+01
-1.9187690162611414e+01
-2.5853560012083452e+01
--5.8181993701598500e+01
-1.3185057412225742e+01
-1.4616762847210081e+01
--3.1756757207827178e+01
--1.0495233357717904e+00
-1.9857878318782507e+01
--4.4758080224558263e+01
--1.0596466741711619e+00
-1.9777775023618503e+01
--4.4582963192341076e+01
--1.3479570460333337e+00
-1.9761962963153227e+01
--4.4383296165813903e+01
-1.7576645252278801e+01
-2.4970272415026230e+01
--5.6434186155681978e+01
-2.5918833132328587e+01
-3.2676998362736128e+01
--7.4010663926147970e+01
--1.0329233264813428e+01
-1.7022823430165321e+01
--3.8079161253298118e+01
-1.3947167625682203e+01
-1.4774006849230069e+01
--3.2619719102385474e+01
-1.7342733331881707e+01
-2.4833016991912849e+01
--5.6716328308887256e+01
-9.4137718906785608e+00
-2.2439829063205142e+01
--5.1694616729449962e+01
-1.7058325105235159e+01
-2.4738780833325297e+01
--5.6612223819540802e+01
-1.3436842433617974e+01
-1.3922471759850668e+01
--3.0632034633477843e+01
-1.6714088222976130e+01
-2.4528737400861829e+01
--5.6435696359666970e+01
--1.2655529946104892e+01
-1.6011162535848147e+01
--3.6047848188004316e+01
-2.3815638929879230e+00
-2.0589601501991254e+01
--4.7447219688460962e+01
-1.3622627733696767e+01
-1.3789942180860178e+01
--3.0346577953911115e+01
-9.3209787772593415e+00
-2.4247792765025761e+01
--5.6239011061796191e+01
-1.2583643625727895e+01
-1.4959903999708752e+01
--3.3488942871723566e+01
-1.1886217453808385e+01
-1.1569668282079325e+01
--2.5250294139268320e+01
-1.0684749807528528e+01
-2.4455567473886457e+01
--5.7222248376444121e+01
-1.8305867778622602e+01
-2.6469050586681554e+01
--6.1561883604817098e+01
--1.8182669698687505e+01
-1.6013112762174558e+01
--3.6312595946184672e+01
-1.1911758073679783e+01
-1.1400511369166116e+01
--2.5213263735518058e+01
-1.7348630909274179e+00
-2.0016308909562927e+01
--4.6977124446251224e+01
-1.2654913822345707e+01
-1.1172926414387170e+01
--2.4991829182852275e+01
--9.6175543159336723e+00
-1.6612207882283990e+01
--3.9212287319039454e+01
--5.9038255765226237e+00
-1.7443438171756593e+01
--4.1399824544328887e+01
--5.8615449972158116e+00
-1.7698900897931864e+01
--4.2267441544610456e+01
--3.4739563863955949e+00
-1.8236021471017892e+01
--4.3479916235374986e+01
--3.7827061472740682e+00
-1.8203689899819800e+01
--4.3507543801998899e+01
-1.9883950221915999e+01
-2.4930166707166737e+01
--6.0450358109873669e+01
--1.2521981095426094e+01
-1.5467965318571760e+01
--3.7121930078519320e+01
-1.2875156701639588e+01
-1.0597437531280033e+01
--2.4110368555621680e+01
-1.3346534929972201e+01
-1.3612593713715091e+01
--3.2322803140298220e+01
-6.2254682383169975e+00
-2.1154109264126667e+01
--5.2026211151716559e+01
--6.4982367521627327e-01
-1.8965793034647181e+01
--4.7072256771332846e+01
--2.8103723119622416e+01
-2.2170625362665636e+01
--5.3741848908760318e+01
--9.6164762224890277e-01
-1.8551608274215120e+01
--4.6082667918949852e+01
--9.7366571934500279e-01
-1.8550141412037497e+01
--4.6051472087982148e+01
--3.1010220130885231e+00
-1.7828077840840855e+01
--4.4602742710782508e+01
--7.8386485970385389e-01
-1.8395015358693350e+01
--4.6234317180129004e+01
--1.0371521323639337e+01
-1.5947302747283508e+01
--3.9529161519491190e+01
-1.3723427998438501e+01
-1.3015300958820079e+01
--3.1627812521957356e+01
-2.0945483354439034e+01
-2.6299463918294308e+01
--6.7280064114704217e+01
-1.5861554559035864e+00
-1.9125620732329693e+01
--4.8655736342323408e+01
-1.3386068198801254e+01
-1.0400813092662670e+01
--2.4661408990722389e+01
--2.2042263545238980e+00
-1.8243280108543658e+01
--4.6944241781107330e+01
-2.2415150694682717e+00
-1.9055044673326783e+01
--4.8804613345074706e+01
-1.3743803757397576e+01
-9.9247084888212349e+00
--2.3507436811237135e+01
-1.5770915330598565e+00
-1.8760533416360438e+01
--4.8482802452193923e+01
-1.3735529622712800e+01
-1.2568312897718981e+01
--3.1118502481446004e+01
--1.8187310855090979e+00
-1.7960684273308221e+01
--4.6491198409917203e+01
--1.8267053168068945e+00
-1.7980012148910347e+01
--4.6527554521322521e+01
-1.2602000622734158e+01
-1.0366388318894826e+01
--2.5157885711173247e+01
-1.3809785015896376e+01
-9.8320399661789359e+00
--2.3515820322743178e+01
-1.2731782189506241e+01
-9.9517175295576994e+00
--2.4210045397731321e+01
-7.9992742124590945e+00
-2.0260949250813947e+01
--5.2985348128890735e+01
-1.2717947738102437e+01
-2.3476831979892886e+01
--6.1381781725501469e+01
-1.4068484918285733e+01
-9.6804471765275135e+00
--2.3416007293729439e+01
-2.2017747810180299e-01
-1.8215657267402531e+01
--4.7824330340924298e+01
--1.4271842227063694e+00
-1.7965246029487858e+01
--4.7385370632482605e+01
-1.5480666025121106e+01
-2.2162988366302301e+01
--5.7932560855406507e+01
-1.3879516173694080e+01
-9.7338150562515846e+00
--2.3501508536846075e+01
-1.3857162657426956e+01
-9.3199977695996576e+00
--2.2463547634125316e+01
-1.3997352043620099e+01
-9.5248595153762849e+00
--2.3102944775469094e+01
-1.4028597980995862e+01
-9.3897085521243451e+00
--2.2610467061779548e+01
-1.4028597980995862e+01
-9.3897085521243451e+00
--2.2610467061779548e+01
-1.3212820740501606e+01
-9.4419863486859921e+00
--2.3048160649757392e+01
-1.4107921476208226e+01
-9.3703765770753744e+00
--2.2979202827572944e+01
-1.3810594170822661e+01
-1.2898247204030044e+01
--3.3403186955254540e+01
-1.4142671426988993e+01
-9.3149647441298367e+00
--2.2880259754226767e+01
--1.2500948236492105e+01
-1.4521493444382838e+01
--3.8838578930395947e+01
-1.3636232105749666e+01
-8.6541532597891884e+00
--2.1258554456948008e+01
-1.3642494453100330e+01
-2.1178580580482194e+01
--5.7499435102042675e+01
-1.3305667505908712e+01
-9.1858378634863804e+00
--2.2992861264650497e+01
-1.4294470291271717e+01
-8.9898749453886495e+00
--2.2174262947947366e+01
-1.3764222591191540e+01
-9.2648202443054757e+00
--2.3380628439947195e+01
-1.4315756820701141e+01
-9.1336718338709115e+00
--2.2678027126691557e+01
-1.1762683127075029e+01
-9.9214448915759714e+00
--2.5075434617988940e+01
-1.4279890717128378e+01
-8.9325030448424609e+00
--2.2238471519980816e+01
--1.6360170711215865e+01
-1.4627330241127206e+01
--3.9374955014060419e+01
-1.3477504729971326e+01
-8.9079950405661172e+00
--2.2712194838855545e+01
-1.4259808724724701e+01
-1.3698571932227026e+01
--3.7079197373056523e+01
-1.4576086824538574e+01
-9.1228244992352057e+00
--2.3134654795658012e+01
-1.2854193112269089e+01
-1.2838159800472930e+01
--3.4757581850935992e+01
-1.3762913911377080e+01
-1.3616400702259721e+01
--3.6838775668745065e+01
-1.2787854850422036e+01
-1.2786558079332268e+01
--3.4690350360308706e+01
--2.7333718008280552e+01
-1.9538778397708555e+01
--5.3802577816985618e+01
-1.3934910084103960e+01
-8.2311313235323080e+00
--2.0915996533063435e+01
-1.4052914031647662e-01
-1.7324407317228346e+01
--4.8977093214149669e+01
--9.4099553969967271e+00
-1.4713952794004905e+01
--4.1476349679644564e+01
-1.4524461569155795e+01
-8.5841686773330768e+00
--2.1970527637559609e+01
-1.4640896047883098e+01
-8.6119016392144268e+00
--2.1930261129392360e+01
--9.8195871599688704e+00
-1.4658512672777974e+01
--4.1462739037166820e+01
-1.3066353398942685e+01
-1.2309506371199909e+01
--3.3687891307653011e+01
-1.5098556824462040e+01
-8.8991650999803316e+00
--2.3144072590594277e+01
-1.4694169854262968e+01
-8.3540975918196558e+00
--2.1704518705681870e+01
-1.3126203089595229e+01
-1.3038522834787535e+01
--3.6474998217898843e+01
-6.8893603556068536e-02
-1.7054018402331529e+01
--4.9218511599542282e+01
-1.2584115318332749e+01
-9.2030246844748156e+00
--2.4611849469106275e+01
--1.1995268953825825e+01
-1.3985972418469331e+01
--4.0192224632608024e+01
-1.2774721910251666e+01
-1.2291793416633659e+01
--3.4817658535974083e+01
-1.2743452243548699e+01
-1.2254849465992248e+01
--3.4734588323254684e+01
--3.7579215207543246e+00
-1.5856496765360705e+01
--4.6211262453897227e+01
--4.9447282507230934e+00
-1.6066843330953240e+01
--4.7190342638589570e+01
-1.3986320363009517e+01
-1.2912221289607015e+01
--3.7063549743639115e+01
-1.2526860676726667e+01
-9.5983644653912208e+00
--2.6527040240967938e+01
-1.2109854265241589e+01
-9.5926050786375345e+00
--2.6265339850166455e+01
--6.9819997271122922e+00
-1.4976172237968143e+01
--4.4108506686482848e+01
-1.2394190741284731e+01
-1.2596140455070756e+01
--3.6225626446848281e+01
-1.3068915436040138e+01
-1.1746170526912865e+01
--3.3434262491595184e+01
-1.1978501384348631e+01
-9.4149953407361604e+00
--2.6241396768637959e+01
--7.4421512435249610e+00
-1.4916506884271175e+01
--4.4097463038421679e+01
-1.2565699190574124e+01
-9.5165017496232309e+00
--2.6719026528075609e+01
-7.8617892510416594e+00
-1.8321079621305735e+01
--5.5218781404807004e+01
-1.2055160758246739e+01
-9.2452182557443123e+00
--2.6055553358598107e+01
-1.3275558005920285e+01
-8.8624236218582233e+00
--2.4807797168652993e+01
-1.3038138725665613e+01
-9.2016222851275806e+00
--2.5851680419668256e+01
-3.9186754806955486e+00
-1.7205218827841666e+01
--5.2911257500255175e+01
--1.4400507160610033e+01
-1.2896235261794240e+01
--3.9019767500334289e+01
--1.4606141660084861e+01
-1.2811646451270853e+01
--3.8616548795892577e+01
-1.2886427910971443e+01
-8.6938666441142960e+00
--2.5379979611484334e+01
--1.0536005615273101e+01
-1.3921165423552520e+01
--4.2979966663460068e+01
-1.4184704686487830e+01
-7.4972229812316984e+00
--2.1096178694432457e+01
--1.5006227173942174e+01
-1.1828622358813938e+01
--3.6106702098557115e+01
-1.3001699798238020e+01
-1.1136279468980627e+01
--3.4359824519821267e+01
-5.6100235726791003e-01
-1.5983501814558466e+01
--5.1271761564022299e+01
--8.5905285198327075e+00
-1.3850062852330232e+01
--4.4063972913313279e+01
-1.3188503474218294e+01
-1.1091835442909090e+01
--3.4303872317399083e+01
-1.3805969231205200e+01
-7.9055014113843711e+00
--2.3724870396710308e+01
-1.4359273589503960e+01
-8.0211913744194927e+00
--2.3602987026464472e+01
--1.6751664163403042e+01
-1.2525383306256172e+01
--3.9376714281375001e+01
--1.6588443910705461e+01
-1.2311272355648287e+01
--3.8863899455580984e+01
-1.2664436346951160e+01
-8.4736887687505433e+00
--2.5615564778420655e+01
-1.1346863304292485e+00
-1.6028985391332391e+01
--5.2335865042732344e+01
-1.9983388791203410e+01
-1.9481863778693715e+01
--6.2795909328016648e+01
--2.5598766865214735e+00
-1.4230820345621401e+01
--4.6335300027242205e+01
-2.6105561488828699e-01
-1.5662543815156541e+01
--5.1597408265511866e+01
-1.3216232339799179e+01
-1.0632751444214218e+01
--3.3693116943138079e+01
--1.5845366703730100e+01
-1.2134823393851304e+01
--3.8768065524011625e+01
--1.6058552250126308e+01
-1.2450971933867894e+01
--3.9614392666267328e+01
--3.1030377199560277e+01
-1.7951835237532393e+01
--5.8123675560467085e+01
-1.0712708365485837e+00
-1.6145265831096388e+01
--5.3375821637592686e+01
--7.0128800635045412e+00
-1.3813696589929068e+01
--4.5593662904699229e+01
-1.3303295646036815e+01
-1.0468726272367663e+01
--3.3531113437106434e+01
-1.3159287263196472e+01
-8.5206400242253970e+00
--2.6347234126102702e+01
-1.2596524564315184e+01
-1.1474579617899851e+01
--3.6744573140285389e+01
-1.2011714401320505e+01
-8.5314876241253330e+00
--2.6998012965613299e+01
-1.1888618178248603e+01
-8.5535650940526686e+00
--2.6867292979357885e+01
-1.3997813396769496e+01
-1.1047044879371406e+01
--3.5834349922091299e+01
-5.2562345123315435e-01
-1.5534086783901207e+01
--5.2101022194234545e+01
-1.3436289600694542e+01
-1.0342963162369898e+01
--3.3461452632680469e+01
-1.0577864097707790e+00
-1.5426381370060634e+01
--5.2336479410195885e+01
--1.1686043899032209e-01
-1.5249425541491238e+01
--5.1701029946253016e+01
-1.2822026624243732e+01
-8.1140425677813379e+00
--2.5637755922081496e+01
-1.3085169620898288e+01
-7.5660692132081451e+00
--2.4354072912626567e+01
-1.4230959078332171e+01
-7.6088088915866479e+00
--2.3962089705977757e+01
-1.4318824234361859e+01
-7.6584644647858262e+00
--2.3922959309155978e+01
-1.6918551551158541e-03
-1.5136234067441816e+01
--5.2011792898780996e+01
--7.3380898761408142e+00
-1.3441249809222048e+01
--4.6220729035819900e+01
--6.9667537085758910e+00
-1.3297926325074421e+01
--4.6074696252908709e+01
--6.9521158104948135e+00
-1.3248436628630303e+01
--4.5978815310185261e+01
--3.0114097528679466e+01
-1.6670552805518241e+01
--5.6978435324667849e+01
--1.2390409799086768e+01
-1.2017002067617060e+01
--4.1630638608375307e+01
--5.8128913577882884e+00
-1.3646154822538829e+01
--4.7758201793385155e+01
--5.8415039377444584e+00
-1.3641478527630028e+01
--4.7659181331363854e+01
--1.1069683405261447e+01
-1.2291533439335456e+01
--4.2943970206475655e+01
--7.2971037324754509e+00
-1.3057704395129271e+01
--4.6339663052829728e+01
--1.3380776456698326e+01
-1.1332652311765100e+01
--4.0213248735887298e+01
-1.1891450724119391e+01
-8.1438650322635677e+00
--2.7940363606981411e+01
--1.2962432752841291e+01
-1.2267174865974388e+01
--4.3530668012855685e+01
--4.4649865318350690e+00
-1.3466880297287005e+01
--4.9247623097333225e+01
--9.9391967780837991e+00
-1.2121759468293968e+01
--4.4136685297860012e+01
-1.3829098211843920e+01
-6.5956263872041205e+00
--2.2599668216385428e+01
--1.6947346407334535e+01
-1.1350758326864019e+01
--4.0882785769316577e+01
--1.7205030715825565e+01
-1.1298921492921483e+01
--4.0911484665495436e+01
-1.2103655259342329e+01
-7.7567541404972049e+00
--2.7036109623199700e+01
-1.2106624862185075e+01
-7.7581965171976783e+00
--2.7045560471899915e+01
-1.2091882753303461e+01
-7.8112860527975512e+00
--2.7274918378631298e+01
-1.4116180419632762e+01
-6.5933523301571961e+00
--2.2712190545727267e+01
--1.3434479004352466e+01
-1.1257265050267327e+01
--4.1373980025247782e+01
-2.5503683186704929e+00
-1.3769551211145901e+01
--5.1432972122171570e+01
-1.2223240939231870e+01
-7.6295921140316381e+00
--2.7140994932064096e+01
--1.2428001826197088e+01
-1.1619678436000283e+01
--4.3243679562456371e+01
-1.2889650787498141e+01
-7.3190576409926615e+00
--2.5945256443351898e+01
-1.2982968594756860e+01
-7.3723810307407485e+00
--2.6092327579942317e+01
--7.1290718470303664e+00
-1.2517381286028794e+01
--4.7315059785082191e+01
-1.2658161609028337e+01
-7.9945894222233127e+00
--2.8285134356341167e+01
-1.5536928266510683e+01
-1.3468950235695516e+01
--5.0294003860962924e+01
--1.5970411167709099e+01
-1.1074710133984667e+01
--4.1259925806977876e+01
-1.3869557100911965e+01
-6.3899335824482106e+00
--2.2643248029177183e+01
-1.3333300346120424e+01
-1.0216475970857076e+01
--3.8177788115519284e+01
--1.3900299243355324e+01
-1.0750258503750523e+01
--4.1309244949476351e+01
-1.2307991871752886e+01
-7.3846116488478950e+00
--2.6758138081022349e+01
--6.5845630908804802e+00
-1.2078264880819743e+01
--4.7290425106888918e+01
-1.4553186569869773e+01
-1.0525969426796660e+01
--4.0946131924574736e+01
-1.3889760176746503e+01
-9.1042705838726423e+00
--3.5280042819468655e+01
-1.5648071394086907e+01
-1.0186640480811917e+01
--3.9547491218550128e+01
-1.4371494223586687e+01
-6.6434205872792793e+00
--2.4228129039544587e+01
-6.9577986328809807e-02
-1.2356357179419820e+01
--4.9521919226146082e+01
--1.7340005683361575e+01
-1.0185205327684560e+01
--3.9686370204430105e+01
-2.6902166179031828e+00
-1.2125753300734006e+01
--4.8368847928488627e+01
-1.3818432561863302e+01
-6.3816967556774307e+00
--2.4199897079501838e+01
--1.3554169581989541e+01
-9.8458013819291761e+00
--4.0161330559924259e+01
-1.2609827482682205e+01
-7.0473592814474388e+00
--2.7374496138740501e+01
-1.3274754849095631e+01
-9.5010177220547813e+00
--3.8412641624370323e+01
-2.2712832073002471e+00
-1.1511449450443271e+01
--4.8276141841054965e+01
--1.2724579866093327e+01
-1.0850069058442983e+01
--4.4671211332940516e+01
-1.4992713000564294e+01
-6.3225790023479291e+00
--2.4008290777059667e+01
-1.4639911099978383e+01
-5.7902489441441478e+00
--2.2373229937677038e+01
-1.4170172899020649e+01
-8.5076848286146127e+00
--3.5347379894057752e+01
--1.7021433686957522e+01
-1.0225312308127357e+01
--4.2008389214365934e+01
-1.3999100993555301e+01
-8.5513816060898851e+00
--3.5678873944275580e+01
-1.4159016516706515e+01
-8.6260116837619343e+00
--3.5893120725730043e+01
-1.4692227980883120e+01
-5.7028448047487270e+00
--2.2279429892093390e+01
--1.2783138636116565e+01
-1.0507813206481995e+01
--4.4670869792082676e+01
--1.7146646847145451e+01
-1.0068406796298827e+01
--4.2803175631393792e+01
-1.2411344433834431e+01
-6.6743127894975842e+00
--2.7895206142629746e+01
-1.4187972951361356e+01
-6.1768835886507416e+00
--2.4718622113687172e+01
-1.3917242621062009e+01
-8.6014895014081336e+00
--3.6722545329495766e+01
--1.2074973559326121e+01
-9.5401768107113032e+00
--4.1663800500235205e+01
--1.2681753209074328e+01
-1.0178793885442333e+01
--4.4386060159592077e+01
-7.7261970769841817e+00
-1.0751261174178062e+01
--4.7136442912993061e+01
-1.3918392685003891e+01
-5.8686517010558159e+00
--2.3578356568452566e+01
--1.6771050401585093e+01
-9.8597488036955756e+00
--4.3699224500881655e+01
-1.3555293844896530e+01
-6.3239960766811620e+00
--2.6788763088040557e+01
-1.2998807392634463e+01
-6.1779080863577462e+00
--2.6475475793333153e+01
-2.7811843573417421e+00
-9.8963900320245237e+00
--4.4729004827552551e+01
-1.4601890018004115e+01
-7.0722276041659953e+00
--3.1121688732878368e+01
-1.2836852999542794e+01
-6.3073186930866552e+00
--2.7507528360025841e+01
-1.2320885981051205e+01
-6.2790694623523002e+00
--2.6792728060488141e+01
-2.5265817982911756e+00
-1.0145598588845758e+01
--4.6464272632702638e+01
-1.2671510907699309e+01
-6.4371991081036803e+00
--2.8455810832712260e+01
--6.2433086267045121e+00
-1.0079567494075864e+01
--4.6694558838404042e+01
-1.2564551420494318e+01
-6.6218109046838007e+00
--2.9270569618430599e+01
-1.2462453497561761e+01
-6.5475144676461010e+00
--2.9116155876611458e+01
--1.2846449193129478e+01
-8.7336979227135814e+00
--4.0818354055787836e+01
-1.3880787185747526e+01
-5.6363660372030866e+00
--2.4500224525020968e+01
--1.6435791040231909e+01
-9.1239039693951725e+00
--4.1961822575893144e+01
-1.2906011725190801e+01
-6.1102887550976783e+00
--2.7699452160495600e+01
--1.4082054122038182e+01
-7.8125374959186153e+00
--3.7230093512536413e+01
-1.3904449862280842e+01
-5.5332668745451592e+00
--2.4579917812427887e+01
-7.5000099885404339e+00
-9.4888834192070561e+00
--4.5330712302591749e+01
--6.8211755384808912e+00
-9.3402751645781628e+00
--4.5066479550291291e+01
--1.6020503114200519e+01
-9.1537195476020905e+00
--4.3519036028164741e+01
--1.4183988386197267e+01
-7.7669306709304387e+00
--3.7772033990665449e+01
--1.3637403817554352e+01
-9.2954582135636930e+00
--4.5285160508071925e+01
-1.9409730422098712e+00
-9.2488495250025995e+00
--4.5308535360701143e+01
--1.0080969851844690e+00
-8.8816417276615951e+00
--4.4335275418668019e+01
--1.0673696529266978e+00
-9.1490005583094955e+00
--4.4948747992964563e+01
--5.5127598825244295e+00
-8.8420468247748936e+00
--4.4430314389625316e+01
-1.4622984826142586e+01
-4.7130247561488412e+00
--2.2256106826504872e+01
-3.6261343482421474e-03
-8.1646985254137441e+00
--4.3811255152588522e+01
--2.6854949665417094e-01
-8.0703463606943036e+00
--4.3689228037364522e+01
-1.4726585205184382e+00
-7.9857531210731620e+00
--4.2934774818314651e+01
-1.3091620000811588e+01
-5.2530230845060650e+00
--2.7455336241360182e+01
--1.3042673190317358e+00
-7.9986980122350149e+00
--4.3852816495901465e+01
-1.3087203465161183e+01
-5.2246386026648919e+00
--2.7670788681302788e+01
--6.4476993188308473e-01
-7.7650740991341003e+00
--4.3306712012640595e+01
--6.0207988887828801e-01
-7.6226914952395317e+00
--4.3097728994138521e+01
--7.6542446220871507e-01
-7.5714042867557279e+00
--4.3007375121324010e+01
-1.2387309937510921e+01
-5.2345116732133032e+00
--2.8848340572301090e+01
-1.2309773232584224e+01
-5.2216126185733174e+00
--2.8752223351874051e+01
-1.2862261197146614e+01
-4.9867132026808472e+00
--2.8267169930390605e+01
-2.2498704849956308e+00
-4.4427739383219471e+00
--2.4976875099868966e+01
-1.2785640995512713e+01
-4.9660235299212596e+00
--2.8815899422383218e+01
-1.4819029110560034e+01
-3.9885337188638896e+00
--2.2650817990583501e+01
-1.2907329266488444e+01
-4.7578355858816517e+00
--2.8425999077082682e+01
-1.4941421490380874e+01
-4.1638008623526197e+00
--2.3612946072843538e+01
--9.9666589668762509e+00
-6.4470452228536805e+00
--4.1441732092984182e+01
-1.5930035320734511e+01
-4.8040036817969369e+00
--2.9720386539953520e+01
--1.5944838443523703e+00
-6.4578569917700843e+00
--4.1255642105659533e+01
--1.6228912955798787e+00
-6.5008757911764175e+00
--4.1344535859103779e+01
-1.5998703004498756e+01
-4.6793986498773883e+00
--2.9568248821240836e+01
--2.8268935167007281e+00
-6.0984013220645492e+00
--4.0774556336775056e+01
--3.3377913954642904e+00
-6.0505887730789825e+00
--4.0631243117050047e+01
-3.0868134849285433e+00
-3.6350282233062465e+00
--2.3295212030255268e+01
-1.2584388827922165e+01
-6.0810817190484210e+00
--4.1156587397423799e+01
-1.2850180152801475e+01
-5.0033226982503258e+00
--3.3285186778413056e+01
-1.5083876568546545e+01
-3.9116616588046829e+00
--2.4498980758000574e+01
-1.4624079492295706e+01
-3.7954206801461714e+00
--2.3790811198379636e+01
--7.0796774305433781e+00
-5.8209685759205838e+00
--4.0159414084421385e+01
-1.4942326266945159e+01
-3.5316617114541877e+00
--2.2536836480042620e+01
-1.4921124558548788e+01
-3.6647414121808382e+00
--2.3729013098504247e+01
-1.6246097097732289e+01
-4.4049289395963571e+00
--2.9339820488235613e+01
--3.4973627211375171e+00
-5.9017921504015494e+00
--4.0511669197630653e+01
--3.4532404180300618e+00
-5.8404227548736012e+00
--4.0473695236498273e+01
-1.3825839708090346e+01
-3.9343092268109974e+00
--2.6244244182235949e+01
-1.3296716898195688e+01
-4.0382508691305308e+00
--2.7186505155133911e+01
-1.3207695746224863e+01
-4.0833690223574797e+00
--2.7995695120900237e+01
-3.2999823194303182e+00
-3.4289131098424526e+00
--2.3518453068562600e+01
--5.4349009723846295e+00
-5.6941516635086336e+00
--4.0702049136046739e+01
--3.5586771273491631e+00
-5.5218995749581108e+00
--4.0025378651245809e+01
--3.7737773038131541e+00
-5.3382178787534675e+00
--3.9587374092381594e+01
-1.3846679268293185e+01
-3.7449882219439123e+00
--2.6420249614062097e+01
-1.4064948920554672e+01
-3.6678877043260760e+00
--2.5733889686579516e+01
--3.6625789012471226e+00
-5.3852988361828480e+00
--3.9823886270909746e+01
--3.6365366580005305e+00
-5.3496765170984748e+00
--3.9803092524072589e+01
--6.5574377917386757e+00
-5.2589382783138481e+00
--3.9459759691303120e+01
-1.4077473865128889e+01
-3.7966340830482586e+00
--2.7021401208053472e+01
--8.3269450277451789e+00
-5.1299267197604550e+00
--3.9174010427777880e+01
-1.4727030769687294e+01
-3.2948659475605475e+00
--2.3494239992332691e+01
-1.3964654106140907e+01
-3.6235767139390673e+00
--2.6418917342115364e+01
-1.4622841004220442e+01
-3.3753186353163880e+00
--2.4181483200758080e+01
-1.3417840834024972e+01
-3.6588616157071567e+00
--2.7344406233915933e+01
-1.4346253025738346e+01
-3.5174207072187205e+00
--2.5726127832687347e+01
--6.2325512914600694e+00
-4.8270114643743254e+00
--3.8523015592030134e+01
--3.9465986050720214e-01
-3.1039909032238855e+00
--2.3109041204368978e+01
--3.9129252264283326e-01
-3.0475807605761664e+00
--2.2746757543981786e+01
-1.4076872778877732e+01
-3.5372042021600572e+00
--2.6529856945671618e+01
--3.6356852104599606e+00
-5.0785119022985983e+00
--3.9507141769305242e+01
--3.6486426227803292e+00
-5.0532694859848002e+00
--3.9456225244669355e+01
-1.4269482748804974e+01
-3.3879517869233822e+00
--2.5703160801540889e+01
--2.0986127470664179e-01
-2.9933214532620878e+00
--2.2344187021580357e+01
-1.4251594683249824e+01
-3.3246933642382288e+00
--2.5144046529945538e+01
--1.3863628775628600e+01
-4.9889214282649528e+00
--3.9555235341079502e+01
-1.4056576481369323e+01
-3.4002331099039163e+00
--2.5926285126926032e+01
-1.7298771222738448e+01
-3.7600243832366087e+00
--2.9003778586057031e+01
-1.3685948615254436e+01
-3.4542044525569713e+00
--2.7068182479045991e+01
-1.4012554030398213e+01
-3.3680633771675699e+00
--2.6268704098604474e+01
-1.4012554030398213e+01
-3.3680633771675699e+00
--2.6268704098604474e+01
-1.4134518160164358e+01
-3.2925294328914121e+00
--2.5676041198840966e+01
--6.3280674049036731e+00
-4.6208666010039581e+00
--3.8271789665267889e+01
--6.5830045841720750e+00
-4.6132614984019993e+00
--3.8685097385971737e+01
--6.7737158337836345e-01
-2.8714762672082106e+00
--2.2779103068514640e+01
-1.6745140083284927e+01
-3.5800408421400403e+00
--2.9471839512637839e+01
-1.4377068620952951e+01
-3.1403315432758538e+00
--2.5467992958661704e+01
-1.4014197546292040e+01
-3.2223026627843927e+00
--2.6375761644816055e+01
-1.4026105625489322e+01
-3.2220083963993167e+00
--2.6384267887839542e+01
-1.4942050998484538e+01
-2.8905948575780016e+00
--2.3066571257321090e+01
-1.4475054526487327e+01
-3.0214130970875837e+00
--2.4983000217885298e+01
--1.3745291509619063e+01
-4.5580596506282038e+00
--3.9117486472813610e+01
-1.4261378968246238e+01
-3.0440133315548605e+00
--2.5381996519991123e+01
-1.4645513658662535e+01
-2.9506864333134910e+00
--2.4268205307492412e+01
-1.4645513658662535e+01
-2.9506864333134910e+00
--2.4268205307492412e+01
-1.4108554953014226e+01
-2.9694735972796757e+00
--2.5184123304045062e+01
-1.4108554953014226e+01
-2.9694735972796757e+00
--2.5184123304045062e+01
--7.9581336420197086e+00
-4.2707322740068987e+00
--3.7544431546103141e+01
-1.3872924624777848e+01
-3.1651851325052434e+00
--2.6974624555161085e+01
--6.5416103663577641e+00
-4.2133982074896545e+00
--3.7688877869308826e+01
-1.4215653942692775e+01
-2.9750543640253682e+00
--2.5603713034305944e+01
-1.5082551859483033e+01
-2.7188198296819044e+00
--2.2848944714221979e+01
-1.3917664757562328e+01
-3.0562033453939264e+00
--2.6805749386906022e+01
-1.4644128599687292e+01
-2.6783780268085042e+00
--2.3518149134726432e+01
-1.5663249937682203e+01
-3.0043432798992065e+00
--2.4675267643542036e+01
-1.5074242483486797e+01
-2.9369099102125733e+00
--2.4405186624426531e+01
-1.4293071502168189e+01
-2.7959921043903000e+00
--2.4966874749972654e+01
--1.1214128605527669e+00
-2.6779072781882927e+00
--2.2879503426479786e+01
-1.3214020540242128e+01
-3.2026362186411412e+00
--2.8916485427332624e+01
-1.7989494117770803e+01
-3.3233750844627847e+00
--2.9570867712720222e+01
-1.3450584128811288e+01
-3.1412090116682783e+00
--2.9290320420588017e+01
-1.3381276668902935e+01
-3.0945263381708448e+00
--2.9120511617000702e+01
-1.4489290214087685e+01
-2.7154998140653204e+00
--2.4897382073046966e+01
-1.4509556561514644e+01
-2.7352422840088391e+00
--2.4631676624713190e+01
-1.4404207372581210e+01
-2.6230634058536562e+00
--2.4193729073927141e+01
-7.4903638806947748e-01
-2.3438744945257155e+00
--2.1423353484852790e+01
-4.5208505463933761e+00
-2.5646851001463964e+00
--2.3616042614625410e+01
-1.4454254852361849e+01
-2.7330250975589139e+00
--2.5485957405994789e+01
-1.4416216954718488e+01
-2.6590836460452514e+00
--2.5090702731154853e+01
-1.4599617305512973e+01
-2.6093873620788535e+00
--2.4696961087865841e+01
-1.4057588355940071e+01
-2.7543231234715964e+00
--2.6437059630877364e+01
-1.5119268491198399e+01
-2.4563910108278826e+00
--2.2577736965148244e+01
-1.4835190088352455e+01
-2.6338130491146075e+00
--2.5005259258340566e+01
--6.9061189456952843e-01
-2.3400078194529557e+00
--2.2226795209467770e+01
-1.3659450944999604e+01
-2.7019941106603378e+00
--2.8206417596745634e+01
-1.4532443121207132e+01
-2.5462702403988677e+00
--2.5746199875588154e+01
-1.5486507715063224e+01
-2.5036425986949116e+00
--2.4500093061717639e+01
-1.6371824102472235e+01
-2.6123011799409124e+00
--2.5771339409328053e+01
-1.5972820652853509e+01
-2.8535515317352806e+00
--2.9755057750223102e+01
-1.4644077105511291e+01
-2.3855732110092722e+00
--2.4778008302543721e+01
-1.4644077105511291e+01
-2.3855732110092722e+00
--2.4778008302543721e+01
-1.4182686423829299e+01
-2.4378495113485195e+00
--2.6007016931394517e+01
--7.5890236126450672e-01
-2.1338504110447714e+00
--2.1992353417227211e+01
--1.5454938806179292e+00
-2.1433331076515691e+00
--2.2953979914904878e+01
-1.4470101621147231e+01
-2.3435801830418543e+00
--2.5974858754244227e+01
-1.4330888804798924e+01
-2.3157949124021888e+00
--2.5740588163531626e+01
-1.2620279003690772e+01
-2.8250558141080480e+00
--3.2770800593885241e+01
-1.2579159477374677e+01
-2.8201679828993136e+00
--3.2760496262041933e+01
--7.3694052326835946e+00
-3.0839841875691718e+00
--3.6604302991107510e+01
-1.4977258232927756e+01
-2.3360650774795757e+00
--2.5925660802329531e+01
-1.4977258232927756e+01
-2.3360650774795757e+00
--2.5925660802329531e+01
-1.2989582836838949e+01
-2.9384663856493072e+00
--3.4527722201098619e+01
-1.3378722325269521e+01
-2.4756870114941312e+00
--2.9216680126312919e+01
-1.4644076557799387e+01
-2.1266077766510594e+00
--2.5422228710598894e+01
-1.4600165959569180e+01
-2.1289005228103743e+00
--2.5382498830474027e+01
--1.1514648321325485e+00
-1.9151616083234204e+00
--2.2377933589342817e+01
--9.9754097472612191e-01
-1.8950109009933536e+00
--2.2477366258230273e+01
--6.8591826911757570e-01
-1.8170709904998401e+00
--2.1747993005980536e+01
--1.2459389402542804e+01
-2.7940925069589420e+00
--3.6538159554422492e+01
-1.5037953074393563e+01
-1.7294913046962477e+00
--2.2697375658712826e+01
-1.3222144707568205e+01
-2.3703582695885519e+00
--3.2330975530818556e+01
-1.7283221010205594e+01
-2.2216546427988075e+00
--2.9822407395039708e+01
-1.7437990844238811e+00
-1.5976870318584744e+00
--2.0650417006845426e+01
--1.2349431323963447e+01
-2.5319881368309574e+00
--3.6118436926825112e+01
-1.4608773198466960e+01
-1.8268609632289503e+00
--2.5270226245962970e+01
-1.4771624609115230e+01
-1.7620003353356415e+00
--2.4562292691846075e+01
-1.4853427522824022e+01
-2.8177442560882127e+00
--4.1084429632803783e+01
-1.4684029379480943e+01
-1.7126051151185928e+00
--2.5216512805332886e+01
-1.5134534014053486e+01
-1.6132648466086432e+00
--2.4731118671476057e+01
-1.4747086534368517e+01
-1.6404025738068622e+00
--2.4789144665815183e+01
--3.5748968994913581e+00
-1.7045948149555181e+00
--2.5624311887566172e+01
--1.2924315713840102e+00
-1.5658283950227774e+00
--2.2305271842601826e+01
-1.4309696859189041e+01
-1.6958958761758915e+00
--2.6915864206426399e+01
--1.2924478943572753e+01
-2.1835116414549218e+00
--3.5518079265990494e+01
-1.4087431611608208e+01
-2.0292172288172559e+00
--3.3684385058678380e+01
-1.4269205094046802e+01
-1.6583656807055400e+00
--2.7078828734761647e+01
-1.4959479195445795e+01
-1.4573962739253183e+00
--2.3701748580519983e+01
-1.3700062904489908e+01
-2.2652293243562545e+00
--3.6969081191441852e+01
--1.2412854211053917e+01
-2.0348328492007699e+00
--3.4858575559541137e+01
--1.9602484964866920e+00
-1.5281025797726377e+00
--2.3383099044158488e+01
-2.9710903538031390e+00
-1.4630428340998234e+00
--2.1812959856540314e+01
-1.4782187037168857e+01
-1.4823051717674658e+00
--2.4923411028981494e+01
-1.4943609800639651e+01
-1.4250951797958347e+00
--2.4463196550829611e+01
-1.5248918053576899e+01
-1.3823726951401865e+00
--2.3457436256541300e+01
-1.5208529465806116e+01
-1.3881340455625730e+00
--2.3475308224340139e+01
-1.4560127313100040e+01
-1.6816491153441855e+00
--2.8789951212322400e+01
-1.4870583963783842e+01
-1.4671378391735204e+00
--2.5938564587069163e+01
-1.4892569030431362e+01
-1.3449670432952501e+00
--2.4793971864780048e+01
--1.4107674183320901e+01
-1.6005693040745570e+00
--3.0375883077974695e+01
--1.3620466657803860e+01
-1.4903438001042437e+00
--2.9105242182534816e+01
-1.2646593517327858e+01
-1.8312541353057152e+00
--3.5247951913521540e+01
-1.4091637733473327e+01
-1.4290078067608953e+00
--2.7281496138714722e+01
-1.5127425741425753e+01
-1.3061794626657610e+00
--2.4418281842577656e+01
--4.0218833460598278e+00
-1.3648261599148894e+00
--2.5303015088428108e+01
-1.4630467647556085e+01
-1.4525330117142718e+00
--2.7216917811330799e+01
-1.3410173112352071e+01
-1.5218691045337387e+00
--3.0771030217227185e+01
-1.3410173112352071e+01
-1.5218691045337387e+00
--3.0771030217227185e+01
--2.4717920080470601e+00
-1.2807224649755495e+00
--2.3955893539286649e+01
-3.4310617038929498e+00
-1.2285718390704592e+00
--2.2226735149135322e+01
-1.5231757341911138e+01
-1.2396503802190242e+00
--2.4563237382592703e+01
-1.5446719260397288e+01
-1.9412505315345088e+00
--4.1178950449597686e+01
--2.2491759190294129e+01
-1.6049280028732531e+00
--3.4852946205643491e+01
-1.5031144824523874e+01
-1.1165103759634045e+00
--2.4453344536481779e+01
-1.6269868132098535e+00
-1.0805361724105869e+00
--2.1248105975271951e+01
-1.6663037408981638e+00
-1.1082669407498449e+00
--2.1411183843140119e+01
-1.5618707474114547e+01
-1.1630794705403642e+00
--2.4319470542317681e+01
-1.5138255372156703e+01
-1.0833592071944602e+00
--2.4124856381661488e+01
-1.3772637395262883e+01
-1.4510438769369878e+00
--3.3838773642662026e+01
-1.5074551132963899e+01
-1.0382736517740474e+00
--2.4359809536030394e+01
-1.3580642766717148e+01
-1.1872999241533275e+00
--3.1412817746376163e+01
-1.4148183019055505e+01
-1.0096743654488052e+00
--2.8350159522946829e+01
-3.2319534997833066e+00
-9.4984235732480615e-01
--2.1341647403055354e+01
-1.4602027437071239e+01
-9.0539605839678305e-01
--2.7006606309101624e+01
--2.5956336823657975e+00
-8.6594185303420079e-01
--2.3419119915452733e+01
-1.3961552831886358e+01
-8.8588768069697743e-01
--2.9270556258528096e+01
-1.5084044768788043e+01
-7.3165419425033307e-01
--2.3768450987447348e+01
-1.4021358441084310e+01
-7.9328252598847182e-01
--2.9689525001359684e+01
-1.4284697424379205e+01
-8.1288302793405476e-01
--2.8917989921366335e+01
-1.4204201311292605e+01
-8.0796296855821514e-01
--2.8839470073330116e+01
-1.5376996635778136e+01
-6.7669641305032235e-01
--2.3605503269347640e+01
-1.3727801736989370e+01
-8.5208013136209571e-01
--3.4492898112197146e+01
-1.3727801736989370e+01
-8.5208013136209571e-01
--3.4492898112197146e+01
-1.4197129480712654e+01
-7.0217701709196656e-01
--2.8743978312560746e+01
--9.2553762400754955e+00
-9.1652331822000022e-01
--3.3316262256575371e+01
-1.4362418099250963e+01
-6.3426486072515054e-01
--2.8552255222992976e+01
-1.4352083230458783e+01
-6.2642337473989840e-01
--2.8515124667377577e+01
-1.4644892969456718e+01
-6.8769227182907855e-01
--3.1368687105464307e+01
-2.7284241147255134e-01
-5.6123545050215629e-01
--2.0501153410978766e+01
-1.5467571004800446e+01
-5.6358101655260651e-01
--2.3472927712056961e+01
--4.3418531189010823e-01
-5.7059827986821687e-01
--2.1125766510597572e+01
-1.5436050851788485e+01
-5.4624893416869136e-01
--2.3575739500441546e+01
-1.4151645727762206e+01
-6.1798463776646273e-01
--3.2509463101092734e+01
-1.4395370527583392e+01
-4.2707118860430965e-01
--2.6927976591426699e+01
-1.5421742065081578e+01
-4.9122557427134644e-01
--2.3660315871719668e+01
--1.4285457251782539e+01
-7.0941189141128935e-01
--3.3896581558548320e+01
-1.5486182908443498e+01
-4.0302788057755146e-01
--2.3934101994054579e+01
--1.4234999442447252e+01
-6.8801687941756962e-01
--3.3268997260246813e+01
-2.4168634313327614e-01
-4.6891303631371062e-01
--2.0634682357241857e+01
--2.1997251326061300e+00
-4.6676763362509677e-01
--2.2682653454935654e+01
-1.4606625958694822e+01
-3.9193301449784979e-01
--2.7800493499378202e+01
-1.4384539480027517e+01
-3.2758393541791359e-01
--2.7458394480047776e+01
-1.9173901788784494e+01
-5.0897076742749348e-01
--2.8951328762457347e+01
-1.3890080693996156e+01
-4.7875750815005436e-01
--3.1622898537105247e+01
-1.4686294434266626e+01
-5.9104152671716259e-01
--3.6267794612797367e+01
--6.6228384897964894e+00
-4.0006008485072253e-01
--3.2490867063498598e+01
-3.4465127151101913e+00
-3.9447259760401493e-01
--2.2084494673558613e+01
--9.0057667172391731e-01
-3.1767114668716545e-01
--2.1493006157463483e+01
--9.6421822372366961e+00
-2.8209105366489129e-01
--3.2803023939419724e+01
-1.4587520381198258e+01
-1.5270362101732571e-01
--2.7375756790310710e+01
-1.3804587565014534e+01
-1.3203808031785158e-01
--3.3340097668786356e+01
--9.2502860910480322e+00
-1.1654978205423658e-01
--3.2663757435859218e+01
-4.1601918245066880e+00
-1.8902722134329797e-01
--2.1124490224620608e+01
--1.4121738696914825e+00
-1.4476083353765903e-01
--2.2058807145112553e+01
-1.4400236468663126e+01
--7.6578590401800636e-02
--2.8568248330009091e+01
-1.4548442554111013e+01
--7.6693491774795758e-02
--2.7575757563233999e+01
-1.4548442736824228e+01
--7.6693382372330768e-02
--2.7575757806237004e+01
-1.4680698389566157e+01
--1.0408331984098590e-01
--2.8684112316397353e+01
-1.8483616002812833e+00
-1.1338763220080161e-01
--2.0168337376729923e+01
--9.3012667885951235e+00
--2.2725490046109687e-03
--3.2325576890931245e+01
--9.0088749633384904e+00
--4.0446161060883626e-02
--3.1188533336165264e+01
-1.4327846145045996e+01
--1.3735084480454973e-01
--2.9179077623804083e+01
--2.4178699642131902e+00
--1.5293614862313001e-02
--2.2676725163107307e+01
--1.1521873709800499e+01
--2.3586576889496627e-01
--3.2138597425872369e+01
--1.4503334227654488e-01
--5.5934662630746208e-02
--2.0831726131785029e+01
--2.8893581067070171e+00
--1.3699020992330796e-01
--2.2958864022282938e+01
--8.2723650560813180e+00
--3.7794334349535980e-01
--3.1982343531355838e+01
--2.8113965576788837e+00
--2.1271464023689618e-01
--2.2901363356080548e+01
--1.1457822364770234e+01
--3.8804596751595000e-01
--3.2117542509801872e+01
-4.1560505994593795e+00
--1.7522007616050972e-01
--2.1385393755332537e+01
-1.4692884888703071e+01
--6.1278105351775991e-01
--2.8206086033348637e+01
-1.4754776083903286e+01
--6.0091261627780113e-01
--2.7280171931648496e+01
-2.1719444907886283e+00
--2.9478446782631185e-01
--2.0332720732691378e+01
--1.0608605385766692e+01
--7.7865316634045234e-01
--3.1523306887234071e+01
-1.4883639978736213e+01
--8.9680650025245223e-01
--2.8107615210931499e+01
-1.9077426081766021e+01
--8.4903199875465341e-01
--2.9150509156822491e+01
-1.1707911432631752e+00
--4.9114671411843619e-01
--2.0435199425579924e+01
--1.0817489447570468e+01
--1.0351810618041672e+00
--3.1019089634845255e+01
-3.3315317024272453e+00
--5.4092626051290227e-01
--2.0989591119346226e+01
-1.3967897819250639e+00
--5.4557950440805525e-01
--2.0465318826318036e+01
--1.7778385225681401e+00
--6.2030534725247444e-01
--2.1430242902522419e+01
-3.3549072293641937e+00
--6.0247304448097194e-01
--2.0739651963861608e+01
-1.6108875090153791e+01
--1.1596819027813667e+00
--3.0994971264803976e+01
-1.4690747473039966e+01
--1.1614697077425038e+00
--2.8274108397864200e+01
-5.4071984599918066e-01
--7.4402309047567983e-01
--2.0628228958377292e+01
-6.5179599812330720e+00
--8.6745334797157125e-01
--2.3110126999894998e+01
-1.1454082587592902e-01
--8.0657935649391665e-01
--2.0829634659691759e+01
-9.3516003962286987e-02
--7.8601769947159805e-01
--2.0874162686534323e+01
--1.0068783145144600e+00
--8.5696654821007423e-01
--2.1102871833487637e+01
--1.0068783145144600e+00
--8.5696654821007423e-01
--2.1102871833487637e+01
-1.4998887604772365e+01
--1.3282747982180403e+00
--2.8988112561350217e+01
-1.1950708876972982e+01
--1.5191591817043915e+00
--3.0485308123229427e+01
--9.7947186680763632e-01
--9.2985966991246216e-01
--2.0988809317509638e+01
-1.5202031639421955e+01
--1.4649079110832377e+00
--2.7593938955525452e+01
-1.4946381316191024e+01
--1.5206163660339154e+00
--2.7431176711212562e+01
-1.5079794747887433e+01
--1.5124888559413454e+00
--2.7661460953369765e+01
-1.6376388010994255e+01
--1.6665294419464640e+00
--3.1394888525780210e+01
-1.2468730878767701e+01
--1.6790325115666869e+00
--3.0288570750115436e+01
--1.9609131016769050e+00
--1.1002557292274648e+00
--2.1733753447731431e+01
-1.1809630883711415e+01
--1.7196289721388556e+00
--3.0296622304028851e+01
-4.2252068269815002e+00
--1.1954328820052402e+00
--2.0984954104952802e+01
-1.5736474928184455e+01
--1.9952474196438488e+00
--3.2219113133002949e+01
--1.7943985959125013e+00
--1.2524891693634976e+00
--2.1578758588712468e+01
-1.6904629933526902e+01
--2.0100042569379313e+00
--3.1046446314155691e+01
--7.5091102696104661e+00
--1.9423623543314064e+00
--2.9818417709494643e+01
-5.4129445993128233e-01
--1.2869869422644151e+00
--2.1389756305692405e+01
-1.1759891449192903e+01
--2.1158097973000771e+00
--2.9476471304093707e+01
-1.1494735048493396e+01
--1.9665111537102746e+00
--2.9473977997811556e+01
--2.2289569680566981e+00
--1.4827880032770908e+00
--2.1464812252721025e+01
-1.1990005087472039e+01
--2.2373975388587821e+00
--2.9626074518413557e+01
-1.1990005087472039e+01
--2.2373975388587821e+00
--2.9626074518413557e+01
-1.5453429454345375e+01
--2.1612247869119883e+00
--2.7275396400574273e+01
-1.5506117692603972e+01
--2.1326331790306901e+00
--2.7373915592443339e+01
-5.3910692151787287e-01
--1.5367602014438095e+00
--2.0272443405747914e+01
--2.4984852710266892e+00
--1.7480192540759338e+00
--2.1517437733626526e+01
-4.1040474381268810e+00
--1.6727099462623831e+00
--2.2462581092064998e+01
-1.5723741410895597e+01
--2.2864365595317055e+00
--2.5405418048017943e+01
--6.9177361779325874e-01
--1.8135967569114402e+00
--2.0847909349285757e+01
--6.9177361779325874e-01
--1.8135967569114402e+00
--2.0847909349285757e+01
--1.8741447265410385e+00
--1.8728267011316935e+00
--2.0960662300330551e+01
--2.8190707221837434e+00
--2.0176618094762495e+00
--2.2271395917882167e+01
-1.6017379465405273e+01
--2.6757315773392385e+00
--2.5448676812666509e+01
-1.6191746774257510e+01
--2.6135156034570803e+00
--2.4393291258413740e+01
-5.1308236352043339e+00
--2.0681250076040061e+00
--2.0928124972294075e+01
-5.3475619387287097e+00
--2.0808793556978040e+00
--2.0869800979564641e+01
--4.2079447715764778e-01
--2.0269012904048029e+00
--2.0644027060804156e+01
--8.1622545313639949e-01
--2.0705010215905144e+00
--2.0578557936417553e+01
--9.5813761951930629e-02
--2.0975535695210876e+00
--2.0598961861243968e+01
-1.4682271013761822e+01
--3.3556092198441303e+00
--3.0179785615898162e+01
-4.2209678560989552e+00
--2.2958534050215444e+00
--2.2420681821663742e+01
-1.5998394688584085e+01
--3.0943931809117933e+00
--2.5833318468890273e+01
-1.8617375744511691e+01
--3.4051641114377005e+00
--2.9977492294433116e+01
--8.2783908747295343e-01
--2.2270419057580257e+00
--2.0572479448080518e+01
-1.6034528105647560e+01
--3.0687231420264109e+00
--2.4578844723441968e+01
-1.9436177348561397e+01
--3.5005079716285818e+00
--2.9483128231521565e+01
-2.8461825883454240e-02
--2.3542547882566791e+00
--2.0280454464549408e+01
--1.8681186426735776e+00
--2.6487363370781623e+00
--2.1585210938222026e+01
-4.2821371216603064e+00
--2.4480040274230723e+00
--2.0347156189382407e+01
-2.8933162172194264e+00
--2.5373928169524333e+00
--2.1483180736134575e+01
--1.2076996342262332e+00
--2.5491860338625227e+00
--2.0075008984290982e+01
-7.6302412524035157e-01
--2.5856583794074113e+00
--2.0274243919362291e+01
-7.8573128572178186e-01
--2.6343216431826182e+00
--2.0054988965286348e+01
-1.3540878685996464e+01
--3.8985077718047836e+00
--2.7831891679994158e+01
--9.9691407787680060e+00
--3.6903678449340456e+00
--2.7095424097869525e+01
--6.9880244180545947e+00
--3.6510701713897196e+00
--2.6456260977059504e+01
-3.4161029319525809e+00
--2.7122396558176303e+00
--1.9921004328160073e+01
--6.7934794838734671e+00
--3.7142206812908927e+00
--2.6323810725703897e+01
--1.2336560867320797e-02
--2.9149624811347969e+00
--2.0139936007978775e+01
-3.1877978816371235e+00
--2.8989413787763816e+00
--1.9746246356222944e+01
-3.1948911740271351e+00
--2.9073685583115076e+00
--1.9761948317060131e+01
--1.0034012151025527e+01
--3.9127728527876555e+00
--2.6915281414590687e+01
--6.7328000795891771e+00
--3.8668881235512269e+00
--2.6360796744640979e+01
--7.0127837100986090e+00
--3.8885535468337951e+00
--2.6014567251282113e+01
-1.6499265087863724e+00
--2.9582470872905335e+00
--1.9720243296157623e+01
-1.1090103121347662e+01
--4.1996926143765254e+00
--2.6722753080433044e+01
--2.9299320123775779e-01
--3.1917730544337646e+00
--2.0587169572076562e+01
--1.9929059355257142e+00
--3.5910879681244654e+00
--2.2645336979836053e+01
-1.9698513689864554e+00
--3.3735616055649795e+00
--2.0128370289929773e+01
-5.0285344540748973e+00
--3.8060711170529120e+00
--2.2174822626762911e+01
--6.2431572846513506e+00
--4.4602434497282486e+00
--2.6100608914768738e+01
--1.9707166290652505e+00
--3.9236178485045659e+00
--2.2716284322162004e+01
-1.2235327851399756e+01
--4.6275815513902581e+00
--2.6262718378447854e+01
-4.2326762540707996e+00
--3.9640191298935554e+00
--2.1705389924709817e+01
-2.7515989545150075e+00
--3.9041357496378226e+00
--2.1650417123903800e+01
--5.2683883740320372e+00
--4.6315946183866066e+00
--2.5160365191941583e+01
-1.6374904075514547e+01
--5.6246853838750956e+00
--2.8610294742674952e+01
-2.1405109552062926e+00
--4.4384935619668680e+00
--2.1109183414809777e+01
-2.2299322484149133e+00
--4.4916575607335458e+00
--2.1201806776596829e+01
-2.2229872271844999e+00
--4.4870808532205961e+00
--2.1167890709394715e+01
-2.1994015085055976e+00
--4.6534229830351475e+00
--2.2408864856556654e+01
-2.1111836384091078e+00
--4.5742340434893123e+00
--2.1227773937607310e+01
--1.1792049776896121e+00
--4.7796581812207535e+00
--2.2411911075816292e+01
-2.7770823875089845e+00
--4.6631638796440367e+00
--2.1377432432061230e+01
-2.9178018991817818e+00
--4.8909110905740398e+00
--2.1842193786272979e+01
-5.2220081089488957e-01
--4.9996106063259669e+00
--2.1956261170284982e+01
-1.3365025435028139e+01
--6.4908333359085262e+00
--2.4676630077333044e+01
--7.4614582535442286e-01
--5.5573830112393168e+00
--2.1599398635370097e+01
-8.5605954326774647e+00
--6.4708085242554114e+00
--2.3886831311614667e+01
-8.1799825944037412e+00
--6.5107059424430895e+00
--2.3737942210154195e+01
-8.3219747282014129e+00
--6.5572246941086574e+00
--2.4129735404144075e+01
-8.3062223050167727e+00
--6.5625531377145716e+00
--2.3772583621975159e+01
-1.1097039580004424e+01
--6.6516677480211017e+00
--2.3979025512611162e+01
--5.0555052593141303e+00
--6.5903083393629025e+00
--2.3695276435755037e+01
--8.0965642069219657e-01
--6.2568607625134396e+00
--2.2307446450358569e+01
-1.0964821698889171e+01
--6.9687314107445415e+00
--2.4209048604461717e+01
-7.5397754380692676e+00
--6.8086536964946704e+00
--2.3440433616564224e+01
-1.5734367979524924e+01
--7.6414735616654337e+00
--2.6431743255106486e+01
--2.9354067164595468e+00
--6.4938354079877874e+00
--2.2579922629491417e+01
-9.4676365313336621e+00
--6.8827947012639239e+00
--2.3320610569814928e+01
-7.8428521605207449e+00
--6.9660038001442057e+00
--2.3111895460247773e+01
-1.1074958106987902e+01
--7.0560253434151541e+00
--2.3481485167417734e+01
-9.4857468590400340e-01
--6.6058664203051833e+00
--2.1872709994923138e+01
-1.6727160398720891e+01
--8.2308438165462618e+00
--2.6411390726308557e+01
-7.3568648900004030e+00
--7.2278025470716747e+00
--2.2926873647496425e+01
-1.4392561314355051e+01
--8.0194641465920462e+00
--2.5256474970434194e+01
-9.0981260755984668e+00
--7.7995929016802332e+00
--2.2130623311519308e+01
-7.1375714273718565e+00
--7.8888416894291886e+00
--2.1943481491781402e+01
--3.4481122538098021e+00
--7.7787601212120041e+00
--2.1950113638719024e+01
-6.0633975999058540e+00
--7.7912746591580726e+00
--2.1427346676620722e+01
-1.4764176906009139e+00
--7.8906383860617586e+00
--2.1165810163312482e+01
--5.2938721710151917e+00
--7.4468449619628068e+00
--1.9897577954296217e+01
--4.5422057679548233e-01
--7.9445836388047679e+00
--2.0840598468605542e+01
-1.3031384120580777e+01
--9.1518132572413293e+00
--2.3598173905239857e+01
--1.9570482410845452e-01
--8.3005968589738561e+00
--2.1324331905831901e+01
--1.6577338024579855e+00
--8.1890620488278696e+00
--2.1294826479328915e+01
--9.2476233126473267e-02
--8.2750754438184284e+00
--2.1004749821045191e+01
--1.4054724977899783e+01
--8.8667358093628756e+00
--2.2391110443455631e+01
-7.8184981651330423e+00
--8.4047535499865837e+00
--2.1130789214759361e+01
--7.9005367902292944e-01
--8.2969363401428513e+00
--2.1142484503518286e+01
-9.5120269149645491e+00
--8.9170209726585412e+00
--2.1995383496937929e+01
--8.0379855074818130e-01
--8.3846749489507495e+00
--2.0987374603031363e+01
-9.7173823468442055e-01
--8.4388705786384364e+00
--2.0283820147901128e+01
-5.8854173311069289e+00
--8.7344470873241775e+00
--2.0863790292504341e+01
--5.1162235625885533e+00
--8.6747035914401565e+00
--2.0847827776978985e+01
-2.4116772623999747e-01
--8.5528629474291726e+00
--2.0708424103720208e+01
-2.6750373197880500e-01
--8.4249475989649287e+00
--2.0228463617590759e+01
-1.3425253134612085e+01
-1.4886487564983504e+01
--3.0930567300294708e+01
--9.2628854606529654e+00
-1.7765450919196777e+01
--3.8470282649136159e+01
--7.0890350626609608e+00
-1.8088511466308578e+01
--3.9235268046752743e+01
-1.5049079057628658e+01
-2.4862995190188329e+01
--5.4411045012700974e+01
--1.2492861076700008e+01
-1.6574596448526368e+01
--3.5794013130315747e+01
--1.2479332905372274e+01
-1.6513033727503345e+01
--3.5707775185427003e+01
-2.9574584025681627e+00
-2.1220202739898895e+01
--4.6662887002684208e+01
-1.4090331576096832e+01
-1.4790323257385136e+01
--3.1375258149926076e+01
-1.3238509256157101e+01
-2.4791073908267421e+01
--5.5349643250521062e+01
--1.5683069231579855e+01
-1.5806650472289585e+01
--3.4074828999489974e+01
--1.5835680865017926e+01
-1.6065261571060812e+01
--3.4642304278788835e+01
--1.1419564883156939e+01
-1.6879900180262556e+01
--3.7309642555740297e+01
--5.2566765876782995e+00
-1.8564949657345739e+01
--4.1605570464729155e+01
-3.3787926114493605e-01
-2.0267240008283711e+01
--4.5728579395483344e+01
-8.8829076583362241e+00
-2.2738028770619245e+01
--5.1590719893066641e+01
-8.8829076583362241e+00
-2.2738028770619245e+01
--5.1590719893066641e+01
--1.3192632354493751e+01
-1.5860748900827197e+01
--3.5087854542856384e+01
-1.7444757024279241e+01
-2.5404702975662268e+01
--5.7636849474692148e+01
--1.0036534955005184e+01
-1.6743917625945791e+01
--3.7716342023429036e+01
-1.8128928329351744e+01
-2.5001359193709803e+01
--5.6679527148420128e+01
-1.3421597186721218e+01
-1.4483654843303411e+01
--3.1786893179159758e+01
--1.2407060538448698e+01
-1.6159150392194093e+01
--3.6447516554523425e+01
--1.5220020855413994e+01
-1.5605185084423594e+01
--3.4924155400182364e+01
-1.0579732793704897e+01
-2.3655516194984507e+01
--5.4781933470234506e+01
-1.2560530669404164e+01
-1.4753903997056153e+01
--3.3060404621828056e+01
-7.7908571986134705e+00
-2.1873042659543440e+01
--5.0743672781987598e+01
-1.3643499559483091e+01
-1.3697431201106957e+01
--3.0426256077904700e+01
--9.0721421869214165e+00
-1.6579914105370801e+01
--3.8790886797896377e+01
--9.2465699642592032e+00
-1.6960938382845882e+01
--3.9303904398241528e+01
-7.7668763543201100e+00
-2.1680864822363745e+01
--5.1063094192670654e+01
--1.2559965507301630e+01
-1.5999232937414572e+01
--3.7265454289983083e+01
--3.7510617202714682e+00
-1.8458650661909836e+01
--4.3426386831261027e+01
--3.7204536709377432e+00
-1.8408415515449637e+01
--4.3373613116991031e+01
-1.2699505461965787e+01
-1.1182336698516579e+01
--2.4771307675431171e+01
-1.1887657383906745e+01
-1.1385261667419982e+01
--2.5399507463790322e+01
-1.0613909193614303e+01
-2.3746309005108706e+01
--5.6528862300071360e+01
-1.2358185421869530e+01
-1.0957649556150528e+01
--2.4520558483273053e+01
-9.1522446681972411e+00
-2.2008781662710124e+01
--5.2496456455712710e+01
--9.6102551517050827e+00
-1.6439733167252886e+01
--3.9629251878813761e+01
--9.7522210775967135e+00
-1.6473146065487995e+01
--3.9297973064541196e+01
--1.2411948868212827e+01
-1.5621969199093320e+01
--3.7188688648153409e+01
--9.1389630560497039e+00
-1.6282373084453017e+01
--3.9692176763006621e+01
--9.1813222102171750e+00
-1.6439894562122578e+01
--4.0001851974596100e+01
--1.2528729781520175e+01
-1.5348976788877092e+01
--3.6716530934752996e+01
--6.6621489556641764e+00
-1.7128366828833332e+01
--4.1935246958990753e+01
-6.3543275234150642e-01
-1.9233954046234164e+01
--4.7635507113507586e+01
-1.3931063380473459e+01
-1.0518717882901493e+01
--2.4111444077160986e+01
--9.6689536790029074e+00
-1.6012851482373520e+01
--3.9862031032502266e+01
-1.9696540639017318e+01
-2.3893656092573625e+01
--5.9182359125061915e+01
--2.3314755298962411e-01
-1.8606365945927596e+01
--4.6579519393530219e+01
-1.2979737492026263e+01
-1.3436381791345715e+01
--3.2455268689610890e+01
-1.3196549301277226e+01
-1.0680586193907670e+01
--2.5038519124348049e+01
-1.2840206433980340e+01
-1.0228155547701501e+01
--2.3799371798547821e+01
-3.8318766162629316e+00
-1.9654578881372327e+01
--4.9531368768346383e+01
-2.6651009311937809e+01
-3.0874683357325068e+01
--7.8637344201946732e+01
--2.6688117892344344e+01
-2.0481459615552804e+01
--5.0834166863716028e+01
-1.0319229787986697e+00
-1.8694586558045970e+01
--4.7779092595509553e+01
-1.3534789804940665e+01
-1.0235594075076939e+01
--2.4112725263320083e+01
--2.8290874932213850e+01
-2.1686130998846462e+01
--5.4294813867339116e+01
-1.2681164504928729e+01
-1.0671709846250000e+01
--2.5716963118629263e+01
-4.7228861852194198e-01
-1.8728128485071423e+01
--4.8796034667144980e+01
-3.9881522950799525e-01
-1.8183144396324490e+01
--4.7229345285461868e+01
--2.1584747402982294e+00
-1.7838249776535420e+01
--4.6497072554135102e+01
-4.2362031296733100e+00
-1.9161770429311201e+01
--4.9996226812077992e+01
-1.3872407827840991e+01
-9.2325462292947904e+00
--2.2211613390342247e+01
--9.3968258305680035e+00
-1.5729914586196326e+01
--4.0949577689081707e+01
--1.2429547471363014e+00
-1.7912316279994123e+01
--4.6635037204539735e+01
--1.2382252709915744e+00
-1.7925215684414038e+01
--4.6697134080677912e+01
-7.4782936427944300e+00
-2.0245242260137864e+01
--5.2768212273912631e+01
-1.3125886301392971e+01
-1.3687513425428261e+01
--3.4681737845280828e+01
-1.2895462601516005e+01
-1.3665038323235263e+01
--3.4760121371638490e+01
-1.2505676089235754e+01
-1.0048342118259377e+01
--2.4668588165676560e+01
-1.3421830347988021e+01
-1.3366104814072008e+01
--3.3950198578717647e+01
-1.3421830347988021e+01
-1.3366104814072008e+01
--3.3950198578717647e+01
--3.4857595098321763e+00
-1.7095681322980440e+01
--4.5107263907343338e+01
--2.0534599574290167e+00
-1.7679530198321299e+01
--4.6645420398977876e+01
-1.4071495784113575e+01
-9.6498256984324726e+00
--2.3411124117974488e+01
--1.6200703415191896e+01
-1.4938016867913056e+01
--3.8937055151114386e+01
-9.4162062013776282e+00
-2.0465609824628974e+01
--5.4577756567506896e+01
--1.0700510664772494e+01
-1.4999932749898228e+01
--3.9475695009030680e+01
--1.0700510664772494e+01
-1.4999932749898228e+01
--3.9475695009030680e+01
-7.8001814226887110e+00
-1.9991652639184050e+01
--5.3531985550918193e+01
-1.9772778183148415e-01
-1.8101700061613499e+01
--4.8429351571899943e+01
--3.3428226648226613e+00
-1.7016209912379718e+01
--4.5638073300595259e+01
--1.2366399413784045e+01
-1.4654193934960482e+01
--3.8578361381217732e+01
--6.1769157681166806e+00
-1.6264641903026391e+01
--4.3721987677429063e+01
--3.6452677924834642e+00
-1.6727696134760258e+01
--4.5244526181377829e+01
--3.6311498108401201e+00
-1.6665124430354705e+01
--4.5157094454398383e+01
--3.6417998317574063e+00
-1.6880297724448418e+01
--4.5683839334800574e+01
--1.4455753923490942e+01
-1.3308287638057545e+01
--3.4872143195587547e+01
--3.1650468180774078e+00
-1.6723160793595472e+01
--4.5812408592311677e+01
-3.2591847827718817e-01
-1.7714856704388193e+01
--4.8498464609962035e+01
--7.3399102981331605e+00
-1.5712027341142472e+01
--4.2978657257362023e+01
--1.5700552845193537e+01
-1.4847373062335119e+01
--4.0023965932065039e+01
-1.3919186527299555e+01
-9.0881022195682970e+00
--2.3078907053402489e+01
-1.2612614671915990e+01
-1.3047539361770333e+01
--3.4832689340955667e+01
--1.8890775178840375e+00
-1.6448977708345225e+01
--4.5589801498425274e+01
-3.0562396274210812e-01
-1.7477843371609008e+01
--4.8881176995302013e+01
-1.4478378706873736e+01
-9.2632722174948388e+00
--2.3809972660264567e+01
-1.4411835011137732e+01
-8.7498387302962861e+00
--2.2257512763961419e+01
-1.4504112921828748e+01
-8.5474421110704775e+00
--2.1634350671408068e+01
--2.9809708125372754e+01
-2.1079916131870263e+01
--5.8134812484511926e+01
-1.2668428281402349e+01
-1.2696408209959811e+01
--3.4867120788953258e+01
-1.2688991017600426e+01
-1.2707400740310472e+01
--3.4856171274208570e+01
-1.3520015887083652e+01
-1.2704057197235237e+01
--3.4684516473693819e+01
--1.6407785318557799e-01
-1.7196049656062609e+01
--4.8861117019916016e+01
-3.0665885284866429e-01
-1.7239266737188601e+01
--4.9084615397335227e+01
--9.9340203144996408e+00
-1.4703687550261959e+01
--4.2232878191677294e+01
--6.7599205971298160e+00
-1.5496678614819205e+01
--4.4556433968918803e+01
--6.8703510618277903e+00
-1.5248279383055685e+01
--4.4590906444853388e+01
--7.4839381179845352e+00
-1.5042276194691121e+01
--4.3807260182193502e+01
--9.8888819220219997e+00
-1.4244566785066636e+01
--4.2140145206016889e+01
--1.2666944479487828e+01
-1.3602409337727954e+01
--3.9978721971200279e+01
--7.5173974728770032e+00
-1.4778577695576898e+01
--4.4210742117069458e+01
--1.3090047440492109e+01
-1.3184647325964741e+01
--3.9193754081380852e+01
--8.2114545261263050e+00
-1.4661329983538959e+01
--4.4138114818501634e+01
--4.0649748624586941e+00
-1.5581781700551987e+01
--4.6923225030905414e+01
--1.1945833929803189e+01
-1.3388103539413843e+01
--4.0227282291569871e+01
--1.1945833929803189e+01
-1.3388103539413843e+01
--4.0227282291569871e+01
--7.8549156753973781e+00
-1.4367472573834375e+01
--4.3310688776724234e+01
--7.7942317758602941e+00
-1.4469896728462267e+01
--4.3666335279325736e+01
--1.1033169869789761e+01
-1.3791077387028023e+01
--4.1544364536976190e+01
-1.2338208641778028e+01
-8.8754714797047924e+00
--2.5405305726876680e+01
--9.3664824200729981e+00
-1.3823328051377034e+01
--4.2258092330450381e+01
--8.1027951123785975e+00
-1.4061864009465653e+01
--4.3811503045660970e+01
-1.1928548159186132e+01
-9.0600441714697286e+00
--2.6942024013717102e+01
-1.1783322963155449e+01
-9.0005044509649732e+00
--2.6904607791237893e+01
--3.6945621695532247e+00
-1.4994683830888958e+01
--4.7704275639535808e+01
--9.9495802969886462e+00
-1.3422462994281256e+01
--4.2845828650273212e+01
--9.9419311375807080e+00
-1.3510284626631478e+01
--4.3156357530289817e+01
--9.9618151312944967e+00
-1.3116501487312791e+01
--4.2773094083477908e+01
--1.0002325137676541e+01
-1.3240723127984399e+01
--4.2894779880913738e+01
-6.2262421074566754e-01
-1.5808496108730481e+01
--5.1834161726124044e+01
-5.9776423056438921e-01
-1.5856006864645975e+01
--5.1906542706720650e+01
--1.6604430861506959e+01
-1.2605283854670255e+01
--4.0742241624754968e+01
--1.0420242447464187e+01
-1.3343527255508551e+01
--4.3450699737213426e+01
-1.3146938166377444e+01
-1.0685542662862391e+01
--3.4135079982733572e+01
--1.4629135601425570e+01
-1.2326091695850167e+01
--3.9693125155376705e+01
--1.4560125739787168e+01
-1.2289060389941261e+01
--3.9549351146409535e+01
-1.3512832854885326e+01
-1.0359639842373651e+01
--3.3964674659350543e+01
--7.4597109237027297e+00
-1.3507099387917689e+01
--4.5955887742196808e+01
-1.3044340730604004e+01
-9.9742784457171005e+00
--3.2471909740957742e+01
-1.2558005520313770e+01
-7.9546509856882706e+00
--2.5491782115229316e+01
-1.3876329587570158e+01
-9.9629623778401566e+00
--3.3507262403073163e+01
-1.3329073194986487e+01
-1.0053050325685559e+01
--3.3689622509300371e+01
--1.4208189418495115e+01
-1.1892443417649892e+01
--4.1033069510795009e+01
-1.2978011917275181e+01
-1.0648661333540897e+01
--3.6211839296859708e+01
-1.5151645742399838e+01
-7.4220577693608352e+00
--2.3553318166974151e+01
--2.9661715458676266e+01
-1.6523120280009330e+01
--5.7059405512017769e+01
-1.3620470089774800e+01
-9.8077287284971320e+00
--3.3771378252003196e+01
-1.3424813533220918e+01
-9.8322681152930080e+00
--3.3578200513196684e+01
-1.2402911222051683e+01
-7.7163253397417204e+00
--2.5665006033651473e+01
--1.7049719253314262e+01
-1.1582647622501497e+01
--4.0032750314065190e+01
--1.7091909679141885e+01
-1.1588610580152269e+01
--4.0147286064494224e+01
--1.2934239301189038e+01
-1.1843292409028104e+01
--4.2127924477964719e+01
--1.1499470526493344e+01
-1.1886755454046902e+01
--4.2646835713669432e+01
-1.3957665678816291e+01
-7.1095277469870268e+00
--2.3907191899703427e+01
--1.6924484715714065e+01
-1.1548430035899122e+01
--4.0966304910695037e+01
-1.4065702261832831e+01
-6.6734344335035312e+00
--2.2740957899600815e+01
-1.4042427032028229e+01
-6.7051698064013801e+00
--2.2741460078588005e+01
-1.4589526614124187e+01
-6.6505579024239028e+00
--2.2518752831822958e+01
-1.3648764365347381e+01
-1.3467742691353651e+01
--5.0339586032583895e+01
--1.1516403198088822e+01
-1.1761241632034903e+01
--4.4379648670164244e+01
--6.2612815410072420e+00
-1.2373393499029914e+01
--4.8236031399218099e+01
--1.6982656990396553e+01
-1.0953182774904441e+01
--4.1104943646868300e+01
--1.5721582219846923e+01
-1.0933234835281326e+01
--4.2087295706327311e+01
--1.4188178915760236e+01
-1.0453275806394892e+01
--4.1243994907477017e+01
--1.4234506060437763e+01
-1.0853210480815138e+01
--4.2452527817256858e+01
--2.6130039572857310e+01
-1.3381108436191461e+01
--5.2156526845106981e+01
-1.2348380029037417e+01
-7.1746833912601646e+00
--2.7558086179733081e+01
-1.2176422333062972e+01
-7.1839530161186271e+00
--2.7371515039662174e+01
-1.3051409376567733e+01
-6.7941362664535339e+00
--2.6219364741062098e+01
-1.3891206764662998e+01
-6.3106798963649409e+00
--2.3911489877477230e+01
-1.2275109811878639e+01
-7.1061224479286622e+00
--2.7546999094453678e+01
-1.4917092986619357e+01
-6.7105667283893995e+00
--2.5093337700221326e+01
-8.7946598041736757e-01
-1.1781347774787944e+01
--4.8742167351505088e+01
-1.4912538893984420e+01
-6.0858744465378374e+00
--2.2804065378630106e+01
-1.4769666250365059e+01
-5.9083959983151919e+00
--2.2621402312986884e+01
-2.7090403155105238e+00
-1.1248963474954433e+01
--4.7668549966923052e+01
-1.3312107410411274e+01
-6.4315941015010525e+00
--2.5633413854061992e+01
-2.1665215276554579e+00
-1.1279572017172377e+01
--4.8070997095439488e+01
-1.1979218590404694e+01
-6.8883991721222797e+00
--2.7670440351323347e+01
--1.7556151135602914e+01
-9.8105744379992341e+00
--4.1996715289674789e+01
-2.5931655723575826e+00
-1.0743925275403610e+01
--4.6886445790981895e+01
--8.6146524219618019e+00
-1.0709387273318743e+01
--4.6731783518612900e+01
-1.2597544641982326e+01
-7.0789748656606823e+00
--2.9563599300826127e+01
-2.4333459929126056e+00
-1.0394332552488963e+01
--4.6002462123474231e+01
-2.7947988792010832e+00
-1.0714034778542150e+01
--4.7283114678519510e+01
-2.7260276835785797e+00
-1.0518733170350083e+01
--4.6425952037244642e+01
-1.4000636976655450e+01
-5.9310148756182883e+00
--2.4506715393637624e+01
--7.0299719827199745e+00
-1.0337281488431817e+01
--4.6252050768038607e+01
--4.0560989505475364e-01
-1.0381881865495178e+01
--4.6500682970346787e+01
--3.9364836317664215e-01
-1.0389678669808337e+01
--4.6815212303287524e+01
-2.9350732929401859e+00
-1.0311483908153157e+01
--4.6190636111010427e+01
--1.1152633434371482e+00
-1.0184435544134475e+01
--4.6112566810562569e+01
--2.3969876483960896e+01
-1.0771501072641103e+01
--4.7779451726578174e+01
--1.6275481786388248e+01
-9.2069355411020464e+00
--4.1639721441028527e+01
-1.0103719859312399e+01
-9.8025269194812612e+00
--4.5463767368619877e+01
--6.4253468050475835e+00
-9.9055792274860632e+00
--4.6284270449053707e+01
--1.6938266520162632e+01
-8.7483626107492132e+00
--4.0805725993137763e+01
--2.3327259749520078e+01
-9.9955978072363738e+00
--4.6692589648368333e+01
-1.4372379611042918e+01
-4.9603726870647389e+00
--2.2079286733825978e+01
--1.6706365956966884e+01
-8.6343071022880107e+00
--4.0687374922426656e+01
-1.3050123930558680e+01
-5.8368933463200303e+00
--2.7140545580371800e+01
-1.4686035906894453e+01
-4.9368057677546728e+00
--2.2215196810374223e+01
--4.8753891166835644e-01
-9.1573908152003369e+00
--4.4685084369153884e+01
-7.7058917021889899e+00
-9.5849516314908882e+00
--4.6299950351841900e+01
--1.7476045038331240e+01
-8.5967326232801629e+00
--4.2366660551643250e+01
-1.4668446757849571e+01
-4.9046020016535623e+00
--2.2916789729395276e+01
-1.4607833379711149e+01
-4.7960825269102676e+00
--2.2470689356512359e+01
--2.4991219875100779e+00
-8.7406323162249979e+00
--4.4880516037702257e+01
-1.4831110738931994e+01
-4.8750125224275447e+00
--2.2898663031772394e+01
-1.4702436943337743e+01
-4.7534187288832950e+00
--2.2646066902125170e+01
-1.4584075711410017e+01
-4.7248041324747296e+00
--2.2634205851147932e+01
-1.4494368646050907e+01
-4.5712336182038511e+00
--2.2119445505212823e+01
-1.5561876006339622e+01
-5.0304711355920686e+00
--2.3723889898833487e+01
-1.5561876006339622e+01
-5.0304711355920686e+00
--2.3723889898833487e+01
--1.0563496000321205e+01
-7.6952057631540036e+00
--4.1569479892048008e+01
-1.3072542631802138e+01
-6.0088178535274333e+00
--3.2079217924053737e+01
-1.2888955726200397e+01
-5.3727288859913802e+00
--2.8301238881012466e+01
-1.3919029796445754e+01
-4.9799199975961583e+00
--2.5685495932106924e+01
-1.5378186154654864e+01
-4.8581924038351794e+00
--2.3975627245171978e+01
-1.4574888531475848e+01
-4.4415808034522772e+00
--2.2796645096430264e+01
--6.7927353645536204e-01
-7.4521955469689445e+00
--4.2655531436709047e+01
-1.2786330280773340e+01
-5.0830112713786830e+00
--2.8747581035124380e+01
-1.2747271235368622e+01
-5.0099309527142708e+00
--2.8682468631192954e+01
-1.6250889213853132e+01
-5.0813682322298650e+00
--2.9637232595218578e+01
-1.2775453140177461e+01
-4.8087759526181992e+00
--2.8833212354980727e+01
--1.8168169133161765e+00
-6.6834681526646946e+00
--4.1638540066909528e+01
-1.4276202675326218e+01
-4.4710651703768480e+00
--2.6101843976571462e+01
-1.4023706064202289e+01
-4.3723832480955283e+00
--2.5626677919378974e+01
-1.1663162574503907e+00
-3.9936149368609137e+00
--2.4309696915412509e+01
-1.4394525286461800e+01
-3.7641217613164013e+00
--2.2932156286228601e+01
-1.4610581017465144e+01
-3.8515403156648973e+00
--2.3296629658303722e+01
--9.6358473865986358e+00
-6.0243010733264972e+00
--3.9636014843320801e+01
-1.3712529725245682e+01
-4.2562614071346090e+00
--2.6305780592105720e+01
-1.3641920474361035e+01
-4.2247313139344209e+00
--2.6459397203585457e+01
--7.3347416578466680e+00
-5.8789989702725167e+00
--4.0024448908552543e+01
-1.3895995852172000e+01
-3.9771194803492986e+00
--2.5494830989165244e+01
--3.3106665201043346e+00
-5.9537212584295887e+00
--4.0612914517138208e+01
--1.4508779178925259e+01
-4.9682589856093351e+00
--3.4537110911540353e+01
--8.1693030679645098e+00
-5.7294800520459859e+00
--4.0235252614776464e+01
-1.2690407072497822e+01
-4.4308731926659144e+00
--2.9181635992115876e+01
--7.4395032670095018e+00
-5.6497855296020738e+00
--4.0321706356530292e+01
--6.5738727033188935e+00
-5.5486332858077958e+00
--3.9304516024220746e+01
--7.8662829049346419e+00
-5.3002555194978402e+00
--3.9148850081571034e+01
-1.5094368613533502e+01
-3.4375454638519485e+00
--2.3506073892778375e+01
-1.3180813359561229e+01
-3.9013069216166287e+00
--2.8276939886499438e+01
--2.4641563772233336e+01
-5.4402925851644941e+00
--3.9305603368135536e+01
--9.7904725820782745e-01
-3.2922809987930113e+00
--2.3901466890379183e+01
-1.3754670396859819e+01
-3.6809168648918242e+00
--2.7358335931258633e+01
--4.6570351475754475e+00
-4.9116272691049900e+00
--3.9188244053627614e+01
-1.3982619990047933e+01
-3.5528545654118289e+00
--2.6622519937199641e+01
-1.4076981480679379e+01
-3.5634667237638316e+00
--2.6769368031138590e+01
--1.2940729222326860e+01
-4.8392134462597349e+00
--3.8255517320187543e+01
--8.6714581910361090e+00
-4.7202526254882136e+00
--3.7911158219433617e+01
-1.4389563298033146e+01
-3.6084855930140147e+00
--2.7027482693402703e+01
-1.3989280892488058e+01
-3.2739364487182798e+00
--2.5573830003823605e+01
-1.4123887837779833e+01
-3.3485675617047739e+00
--2.5852362387058502e+01
-1.4165661175702621e+01
-3.0729062695540148e+00
--2.4137213896342463e+01
-1.3886913769704977e+01
-3.1509844264843796e+00
--2.5932733723494763e+01
-1.4311186056645653e+01
-3.1560301283250793e+00
--2.5248130909695533e+01
-1.4058197036352423e+01
-3.0786695675555227e+00
--2.5186176181975529e+01
--1.7230666313199390e+00
-3.1287473526808700e+00
--2.6024502597013907e+01
-1.3871482577679672e+01
-3.0546487953640198e+00
--2.6562827974748611e+01
-1.3871482577679672e+01
-3.0546487953640198e+00
--2.6562827974748611e+01
--1.9569457147753158e+00
-3.0657466498680632e+00
--2.6410351608868609e+01
-1.4820900201815915e+01
-2.7331187935753842e+00
--2.3689183272513258e+01
-1.5013413785785904e+01
-2.7692677243249952e+00
--2.3981562482123564e+01
-1.5013413785785904e+01
-2.7692677243249952e+00
--2.3981562482123564e+01
-1.3935390677415858e+01
-2.8833112184290575e+00
--2.6103860140402819e+01
-1.4000983365665089e+01
-2.9182472624249112e+00
--2.6686280975923644e+01
-1.4448266768396826e+01
-2.7929326567989490e+00
--2.5321861859225564e+01
-1.4388874438232444e+01
-2.7616093722053301e+00
--2.5255514337195677e+01
-2.8491367247797317e-01
-2.4749890148914981e+00
--2.1705596967333349e+01
-1.3453874561242388e+01
-3.0495023171660982e+00
--2.9092122194211761e+01
--1.9220052408892387e+00
-2.7263789749006615e+00
--2.5788318948011433e+01
-1.3099175271770049e+01
-3.0501684120736603e+00
--3.0340642879723642e+01
-1.3085922457853886e+01
-3.1087947418927975e+00
--3.0381091644419826e+01
-1.4209574984688802e+01
-2.6229011411986827e+00
--2.5202898952473173e+01
-1.4525062437725595e+01
-2.6035477418197264e+00
--2.4912007500760367e+01
-1.4540514700546359e+01
-2.4974942320500295e+00
--2.4083896393577604e+01
-4.3905768103111482e+00
-2.4146441188528875e+00
--2.3408469268252329e+01
-1.4744850506900015e+01
-2.4400656574933217e+00
--2.5092521085001021e+01
-1.4129067703216993e+01
-2.4960744042256211e+00
--2.6706015102198883e+01
--7.7222936411756917e+00
-3.3354130040022545e+00
--3.6552350044189012e+01
-1.4500949574537012e+01
-2.4838545493170536e+00
--2.5857517818598456e+01
-1.4360833275481312e+01
-2.4547009754856162e+00
--2.5623099519777014e+01
--7.7599127866682833e+00
-3.2838656439498601e+00
--3.6745347083248305e+01
-1.3384547003656378e+01
-3.0027974116461533e+00
--3.3404841020829068e+01
-1.4532265006816422e+01
-2.3664733356786924e+00
--2.6207260387627294e+01
-1.4592806289239597e+01
-2.2519185133714394e+00
--2.5100206579254717e+01
-1.3106982097835223e+01
-2.7673627134719361e+00
--3.2349096540952146e+01
--7.0677684732473205e+00
-2.9859951944614638e+00
--3.6151395080363400e+01
-9.6961720205631452e-01
-2.0087805175406857e+00
--2.1465792292793747e+01
-1.3893918895124434e+01
-2.2812812231568196e+00
--2.7609417218725284e+01
-1.4337919168260026e+01
-2.1657400520425139e+00
--2.5691755297137963e+01
-1.3680394546525262e+01
-2.8587688417067660e+00
--3.4928005025451412e+01
-1.3925721738821718e+01
-2.1498269270704795e+00
--2.7412914402517636e+01
-1.4164147427042460e+01
-2.1833247086183243e+00
--2.7607414435501205e+01
-1.5137201777282552e-01
-1.6882546286112790e+00
--2.1166363159206824e+01
--7.7847620144789387e+00
-2.3708387883344915e+00
--3.5601081362320080e+01
-1.4064196787874113e+01
-1.9183908744079985e+00
--2.8187001943794616e+01
-1.5717084429523208e+01
-2.1402493988482529e+00
--3.1332320682438620e+01
--1.2890242863081001e+01
-2.3885566825631201e+00
--3.5661521428328747e+01
-1.4310758449580547e+01
-1.8105165214279921e+00
--2.7120454502614027e+01
-1.4043603563195708e+00
-1.5812929624434353e+00
--2.0759001290889930e+01
-1.4228588156109836e+01
-1.6938162617559258e+00
--2.7495997686290497e+01
-1.9879985393352404e+00
-1.4404237244723079e+00
--2.1204420950613134e+01
-1.5140109807020096e+01
-1.6079181101314606e+00
--2.4507069414283741e+01
--1.1718827210190437e+01
-2.0209400655349992e+00
--3.4875802468539511e+01
-1.4174670116228000e+01
-1.6307156931693607e+00
--2.7806515906562403e+01
-1.4449359544620567e+01
-1.5858988702390953e+00
--2.7213391202214421e+01
-1.4951249966891645e+01
-1.3021226779289898e+00
--2.4355223490303096e+01
-1.4034605219267061e+01
-1.3939023976437925e+00
--2.8353470786903021e+01
-1.5245122408428580e+01
-1.2814211082921270e+00
--2.4232010534240182e+01
-1.4572026408519498e+01
-1.2951038206570638e+00
--2.6488502798103458e+01
-1.4086991732561232e+01
-1.3255854043087234e+00
--2.8798076964090800e+01
-1.3357264920674483e+01
-1.5125283514898484e+00
--3.5148842493821746e+01
-1.4634483636634158e+01
-1.1621095169969868e+00
--2.6289731969711486e+01
-1.4634483636634158e+01
-1.1621095169969868e+00
--2.6289731969711486e+01
--2.0660163609141332e+01
-1.5041975238118825e+00
--3.4475625874207481e+01
--7.8952222608060403e+00
-1.4447595776428783e+00
--3.3856955512192066e+01
--1.4559369046564221e+00
-1.0172271478966579e+00
--2.2356975557144725e+01
-3.1866477045468353e+00
-1.0218311498987656e+00
--2.2006435643395097e+01
-1.4359965387214315e+01
-1.0282239719299853e+00
--2.7451436632893749e+01
-1.5068514166900753e+01
-9.7423907674690902e-01
--2.4271404017304594e+01
-1.4884893297240961e+01
-8.9583507694648534e-01
--2.6260416799422799e+01
-1.1824089172772771e+01
-1.1649508108164690e+00
--3.4157693193958046e+01
-1.3252150467743114e+01
-9.9788773571386136e-01
--3.2223512569601404e+01
-1.4223196488245136e+01
-1.1449005805080483e+00
--3.2226169805057388e+01
-1.4339175450075548e+01
-8.8388996767486860e-01
--2.7679281467450224e+01
-1.4339175450075548e+01
-8.8388996767486860e-01
--2.7679281467450224e+01
-4.1206753516609034e+00
-8.0193651786399489e-01
--2.1227816223319849e+01
-1.4678797935251760e+01
-8.1276473364241986e-01
--2.6241162321256095e+01
--8.9968724203715347e+00
-1.0779122520036206e+00
--3.3454212940376820e+01
-1.4403884549008342e+01
-7.6035243371508954e-01
--2.6926325250839525e+01
--1.0306299447975968e+01
-9.6822056436310222e-01
--3.3537811214514470e+01
--1.0671447292616438e+01
-8.9269528917158236e-01
--3.3416681410873267e+01
--1.9109016633169020e+00
-7.3065403840462284e-01
--2.2817719882751206e+01
--8.5556113236036531e+00
-9.0773206961031427e-01
--3.3263623079594829e+01
-4.4459735870222188e+00
-6.7855130386632578e-01
--2.1510053392332125e+01
-1.4511118061057951e+01
-6.9291036476891643e-01
--2.7492155945213462e+01
-1.4511118061057951e+01
-6.9291036476891643e-01
--2.7492155945213462e+01
-1.5322043668962682e+01
-7.4538892608362384e-01
--2.4124111793154576e+01
-1.5241890660372439e+01
-6.9404716220431839e-01
--2.3983425816035268e+01
-1.3859852430279691e+01
-7.7208584008051895e-01
--2.9310993577302401e+01
-1.3773310431621399e+01
-7.5871531264150627e-01
--2.9195759470946861e+01
-1.5558881153019554e+01
-7.7297345851725219e-01
--2.7773124651008274e+01
-1.4661203550473727e+01
-7.0507203994390366e-01
--2.6268258582507229e+01
-1.4646442705944219e+01
-6.6259955338760157e-01
--2.6212579605743322e+01
--1.0532616055167489e+01
-8.1458445814649083e-01
--3.3335247489994394e+01
-1.2921155042988049e+01
-8.1853931258468227e-01
--3.4129367183806899e+01
--1.0791445429026219e+01
-8.0295094096257191e-01
--3.3372756474493791e+01
-1.4233428907278780e+01
-5.9077828308791513e-01
--2.9136319705395874e+01
-1.4048764155106364e+01
-6.2650164192971713e-01
--2.8849598020056931e+01
--1.1798150446398935e+01
-7.8995226635156401e-01
--3.3674205132281287e+01
-1.5399728367343364e+01
-5.5403895360717781e-01
--2.3991778869667634e+01
--1.0146949438105855e+01
-7.0882106987956972e-01
--3.3263900690099973e+01
-1.3899969145268539e+01
-6.7872710122717694e-01
--3.3205641165591935e+01
--8.4511144186008114e+00
-5.0968870249759979e-01
--3.2633421761267591e+01
-1.4209382639307981e+01
-3.8533353446098639e-01
--3.0028739043653040e+01
-1.5374976817738856e+01
-2.7841755410904240e-01
--2.3265262056708973e+01
--8.5113733169329375e+00
-4.3818737443001182e-01
--3.2447535440818214e+01
-1.4377732007173643e+01
-2.5040807450421326e-01
--3.1997623488148083e+01
-1.4760978196435969e+01
-2.6431043225167961e-01
--3.2738959377205553e+01
-1.4610935111019984e+01
-1.8069629119183842e-01
--2.7182969160145337e+01
-1.4930959028637846e+01
-1.8481648550407578e-01
--2.6662963036033130e+01
-1.4247981203509811e+01
-2.5869196811350448e-01
--3.0502966397217676e+01
--1.2349404225747083e+01
-2.6441761742403708e-01
--3.2695172217135564e+01
-1.4564493913617003e+01
-1.1551787967796177e-01
--2.8215666036554627e+01
-1.4659660843696571e+01
--6.2836552625152614e-02
--2.7329632035679406e+01
-1.4672047698865823e+01
--7.2893436030304709e-02
--2.7305972928326668e+01
-1.4774129253734207e+01
--6.9356822198765572e-02
--2.7376182123982058e+01
-1.4319385213096606e+01
--9.5408326731705351e-02
--2.8727248965327860e+01
-2.7227218526993355e+00
-1.3274170943265545e-01
--2.1581647146568180e+01
-6.1830230472565919e+00
-5.2476802111613215e-02
--2.5033712744692956e+01
-4.2745849753354985e+00
--6.7982049555412804e-04
--2.1988512826405785e+01
--9.0995783667732635e+00
--2.1507975638450436e-01
--3.2205647471644134e+01
--9.0703796341689795e+00
--2.3921162135130830e-01
--3.2143648938644560e+01
--1.1895386872780671e+00
--5.8023987199694753e-02
--2.1803429223165821e+01
--1.0506592628933443e+01
--3.2018671552221822e-01
--3.1883695393296112e+01
--3.4825238024509293e+00
--1.5167195005889772e-01
--2.3088021297783609e+01
--1.4873252624431959e+00
--1.6680472688365533e-01
--2.2260341635994664e+01
-2.7635123554007470e+00
--1.5518808123494296e-01
--2.0448942197829780e+01
--9.8448121783772695e+00
--3.8127149201224320e-01
--3.0216196868415043e+01
--8.9735248882539800e+00
--3.7718422441614624e-01
--3.1900297589175572e+01
-1.5468917361124884e+01
--4.2709782073533559e-01
--2.8581053834889666e+01
-1.4776966064542464e+01
--4.7385203869532871e-01
--2.7354553376866011e+01
--1.0632772303405519e+01
--4.9511512163637089e-01
--3.1776679952692596e+01
-4.2254451552644650e+00
--3.6301132729959834e-01
--2.1410100063720151e+01
--8.1304709147793552e+00
--8.6151152597596792e-01
--3.1273789683499974e+01
-1.5617586457122430e+01
--6.0217334160566549e-01
--2.6410919096531835e+01
--8.0283487668212654e+00
--8.0286196397112453e-01
--3.1441995952180935e+01
--3.3972798748470217e+00
--4.8613529428771873e-01
--2.2794996052890685e+01
--3.3863933145849470e+00
--4.9557028066622200e-01
--2.2710844812414596e+01
-1.4556168593818490e+00
--4.2875136479824638e-01
--2.0516088618490059e+01
-1.4218519783064658e+00
--4.3208910406986223e-01
--2.0354676773568631e+01
-1.6142632922887248e+01
--8.6795967161866006e-01
--3.1095959249584030e+01
-1.4660773498736699e+01
--9.7537152161374252e-01
--2.9095960649599341e+01
-1.5595770693461041e+01
--8.2545195588702958e-01
--2.5263132397568491e+01
--1.1140807703403379e+01
--1.2359227214948758e+00
--3.1025245720535249e+01
-1.4820583712674670e+01
--1.4000168035648961e+00
--2.8726658468074778e+01
--9.3265219973495288e+00
--1.7190064525209612e+00
--3.0095358467661782e+01
-4.4362517058448390e+00
--1.1712396657012418e+00
--2.1045938864132960e+01
-1.2097798289236705e+01
--1.9138155388683644e+00
--3.0669893855778284e+01
-1.5484451738272568e+01
--1.7757155658653418e+00
--2.6926930867983344e+01
--9.1325077335999505e-01
--1.3432516060822137e+00
--2.0898127880931973e+01
--9.2938539576659736e+00
--1.9165775772355893e+00
--2.7889550955491025e+01
-1.4862425063732216e+01
--2.2800565645079605e+00
--2.9013171960293022e+01
--8.9253968890496704e+00
--1.9886855112204327e+00
--2.8315940336033336e+01
-1.5709666855000833e+01
--2.3302490006224184e+00
--2.6003414173679264e+01
-1.5550236842380354e+01
--2.2103381188991174e+00
--2.5792173460854730e+01
-1.5879310038491861e+00
--1.6200372854702780e+00
--2.0263030475884452e+01
-2.9262339421476113e+00
--1.7193432022990953e+00
--2.1729573190109452e+01
-1.9421470813261348e+00
--1.6490614445547742e+00
--2.0729519366078385e+01
--3.7077069262245295e+00
--2.1435672203936300e+00
--2.4883045851291641e+01
-4.1655781307442530e-01
--1.7444455618288552e+00
--2.0287920848694970e+01
-4.0172595171915884e+00
--1.7886746727728817e+00
--2.0888992784797580e+01
-1.5988226489738603e+01
--2.4587408977631875e+00
--2.5468584984539174e+01
-2.2666247677873481e+00
--1.8229357107188824e+00
--2.1393626089648528e+01
-1.7901004686141238e+01
--2.8776796098507491e+00
--3.0146390331190418e+01
-1.6238299382673130e+01
--2.4596318340359224e+00
--2.4241580390458680e+01
-1.5331441005958141e+01
--3.0112187719893257e+00
--2.8525503756664548e+01
--7.4427944669491064e-01
--1.9837991188417545e+00
--2.0713168943092963e+01
--9.4979432288625532e+00
--2.8658778440522017e+00
--2.8535017550914276e+01
--7.0896841481131068e-01
--2.1644970338908123e+00
--2.0613007154494177e+01
-1.6088912282720010e+01
--2.9702264517085992e+00
--2.5442543288810139e+01
-3.6579374389964663e+00
--2.2627941017693858e+00
--2.0600301435977091e+01
--9.3683758572138078e+00
--2.9821527779072339e+00
--2.6231935451268441e+01
--1.2285523853882450e+00
--2.3553571331873426e+00
--2.0356540667327220e+01
--2.7869467099532907e+00
--2.7426613641433950e+00
--2.2885517074178683e+01
--6.8156265408823768e-01
--2.4620780994800957e+00
--2.0646474487051695e+01
-4.2430473133823821e+00
--2.5261488432406192e+00
--2.0358963432718600e+01
--1.2452638888202228e+00
--2.4577674706046544e+00
--2.0185286271685026e+01
--1.2264618135865670e+00
--2.4793659847561678e+00
--2.0171449134562021e+01
-1.6023383137600771e+01
--3.3809605756248917e+00
--2.4954749679661951e+01
--8.9263286136082165e+00
--3.2636952090785694e+00
--2.5356099093791681e+01
-3.9759626658066693e+00
--2.5998623610065232e+00
--2.0261028074119327e+01
-1.6100905638650982e+01
--3.6562796887361224e+00
--2.7693029839955319e+01
-1.6119584663803010e+01
--3.6638876171684629e+00
--2.4938174162258640e+01
--3.8381394016592502e-01
--2.8779620785304694e+00
--2.0707817437364113e+01
-2.1672094413734824e+00
--2.9571753998711108e+00
--2.0894603575976316e+01
-3.0206181741137095e+00
--2.9421232922050389e+00
--1.9801682679175677e+01
-1.8576345633762548e+00
--3.1112534971310533e+00
--1.9933816789932965e+01
-4.0053926433524305e+00
--3.7809330534422712e+00
--2.1706978960791556e+01
--7.2411295293566025e-01
--3.9419500055701162e+00
--2.1833384693035445e+01
-2.7399633409578661e-01
--4.1333572428918819e+00
--2.1215643456653293e+01
-4.5567900941245787e+00
--4.5217537289628096e+00
--2.2435901889472667e+01
-5.0930229860163276e+00
--4.7429140753038705e+00
--2.2660799180288670e+01
-5.5337351777121322e+00
--5.0433103122899468e+00
--2.2596184892992341e+01
-1.4826023377946713e+01
--6.5109836464585511e+00
--2.6863026438595146e+01
-6.3613244616304367e+00
--5.9882557718727725e+00
--2.3640248363044456e+01
-6.3070939900107970e+00
--5.9608126218111961e+00
--2.3440940169526829e+01
-4.7306098192912643e-01
--5.8569770597817881e+00
--2.1225677297477390e+01
-8.0120218634679254e+00
--6.8542660869279093e+00
--2.3739410982843118e+01
-7.5570954102936012e+00
--6.9686296309956184e+00
--2.3228078857526782e+01
-1.4825342572388186e+01
--7.8193191618743541e+00
--2.5688486191432123e+01
--5.0896912293637557e+00
--6.9800986475022908e+00
--2.3181212856968433e+01
-1.3736804073853472e+01
--8.1500021372670695e+00
--2.4718461688176852e+01
--4.6121972058726772e+00
--7.4080018360780455e+00
--2.2359948242265734e+01
-1.3351742306398625e+01
--8.4598922413872053e+00
--2.4362901612457897e+01
--2.5681870881452871e+00
--7.7641549972748045e+00
--2.1835892871754041e+01
--2.5153291102415016e+00
--7.8657769988172364e+00
--2.1856230776457441e+01
--3.6615876717625380e+00
--7.8359493719694235e+00
--2.1771720298592562e+01
-6.4356334450106631e+00
--8.0634380260527951e+00
--2.1678122553946139e+01
--1.9081491452281925e+00
--8.1931768569876233e+00
--2.1420518893312927e+01
--1.3406582455439962e+00
--8.2468208271339591e+00
--2.1326388057152652e+01
--5.2439630836056779e+00
--7.5919423189964608e+00
--1.9623336463558793e+01
-1.9256969130640282e+00
--8.2726851562746084e+00
--2.1041097575472293e+01
--2.7036669152593035e-01
--8.2600183331903647e+00
--2.0980482020898105e+01
--1.8179899059912203e+00
--8.2514688549469764e+00
--2.1148084940724104e+01
-2.1246984548990651e+00
--8.4622344367747839e+00
--2.1126158599644722e+01
-2.3661279029987264e-01
--8.2379742453895801e+00
--2.0617922314655090e+01
-6.2122785366647859e-01
--8.2463131803909864e+00
--2.0800798187145233e+01
--6.6108281993533891e-01
--8.5188633790819939e+00
--2.1066883474660774e+01
-1.3128442860004048e+00
--8.4273806630676305e+00
--2.0728984768843148e+01
-1.3939164934244573e+01
--9.6646532050454734e+00
--2.3613558111191129e+01
-8.0839764980074467e+00
--8.9331131840512246e+00
--2.1363902762052955e+01
-1.3106990268870998e+01
-1.4897153971083274e+01
--3.1280851534998860e+01
--1.3675901711297644e+01
-1.6341799445887691e+01
--3.4870659298150812e+01
-1.0020673189890500e+01
-2.3336658245850916e+01
--5.1255235197704366e+01
-1.9467150882034069e+01
-2.6469019549685122e+01
--5.7982788958515080e+01
-2.0430804196084381e+01
-2.6583259443960380e+01
--5.8241257290361787e+01
-7.0730996216020365e+00
-2.2270493807122765e+01
--4.9647214301598240e+01
-9.7773606101133890e+00
-2.3123331075014338e+01
--5.1481829981310277e+01
--2.6966763033713772e+01
-2.2342389308349748e+01
--4.9123105047235072e+01
--1.0272473586651623e+01
-1.7174167087274039e+01
--3.7857345947120798e+01
-1.3672869639160274e+01
-1.4110348250992820e+01
--3.0435149316223118e+01
-1.3484783683802981e+01
-1.3950467951684089e+01
--3.0049952220112129e+01
--1.5975328767945259e+01
-1.5847634655100240e+01
--3.4399035770580824e+01
--4.7518260258027256e+00
-1.8649143538961411e+01
--4.1723745478502131e+01
--4.7518260258027256e+00
-1.8649143538961411e+01
--4.1723745478502131e+01
-1.5303353777151841e+01
-2.4468447953407686e+01
--5.4854340756354503e+01
--5.1509873537717903e+00
-1.8578303239124633e+01
--4.1618615172991056e+01
--5.1255973580008751e+00
-1.8594948528719730e+01
--4.1718785224497083e+01
-6.9162716265476509e-01
-1.9976537411377720e+01
--4.6232236693431084e+01
-8.3067426956054131e+00
-2.2027845985399331e+01
--5.1124372527526504e+01
-8.2833934438044405e+00
-2.1954099642294949e+01
--5.0970825278880071e+01
--1.1768246897152736e+01
-1.6379287348605800e+01
--3.7731967912830321e+01
-8.8265918307984439e+00
-2.2001461292677686e+01
--5.1601538518898181e+01
-8.8792994335490825e+00
-2.2267088090899360e+01
--5.2372026820003697e+01
-8.8792994335490825e+00
-2.2267088090899360e+01
--5.2372026820003697e+01
-1.6489708808269807e-01
-1.9529467569001099e+01
--4.6075060324090984e+01
-9.8153438354710350e+00
-2.1502164937426347e+01
--5.0518962373948810e+01
-1.1312741635150058e+01
-2.5143548886378259e+01
--5.9830827944257372e+01
-1.3634970188289266e+01
-1.3502144385774500e+01
--3.0656021517539944e+01
-1.3433716028003467e+01
-1.3515691158861529e+01
--3.0848083056910927e+01
-4.8985360700866307e+00
-2.1347023303785647e+01
--5.1051491002118595e+01
-6.2749873821284829e+00
-2.1591245454112716e+01
--5.1815817271034710e+01
--1.6362629818582665e+01
-1.5417483779064645e+01
--3.5529551775286279e+01
--1.6200018665282986e+01
-1.5176396583659933e+01
--3.4955489032824509e+01
--1.6511367239821151e+01
-1.4954901240895609e+01
--3.4693162513154014e+01
-1.9565302855806443e+01
-2.4942416972810790e+01
--6.0031004977927999e+01
-1.4351931217285710e+01
-1.3793248402360550e+01
--3.1988070073281076e+01
-1.2313046805522113e+01
-1.0885676238977750e+01
--2.5003555284070242e+01
-1.2313046799077796e+01
-1.0885676232240565e+01
--2.5003555276313691e+01
--3.5692677480214945e+00
-1.7957822259746631e+01
--4.4117509133150520e+01
-1.3447071450582239e+01
-1.4179226740395221e+01
--3.3674755895396842e+01
-9.0722495957185441e+00
-2.1289026075830439e+01
--5.3025341914226615e+01
-1.2229161230254162e+01
-1.0984617122505449e+01
--2.5951182446848261e+01
-1.2059347996234065e+01
-1.0643184763293123e+01
--2.5180564153155522e+01
-4.1363745580503786e-01
-1.8702268804075814e+01
--4.7482368133159305e+01
-3.8797024947538872e-01
-1.8621450421160056e+01
--4.7352620545915350e+01
--1.7480516686702803e+01
-1.5379234382960664e+01
--3.8463789858991376e+01
--1.5913990558380398e+01
-1.4369681976418264e+01
--3.5688053166476820e+01
-1.5935981251947062e-01
-1.8417933774075777e+01
--4.7435126180715862e+01
--3.1646201259124435e+01
-2.4056509254617993e+01
--6.0597919019669675e+01
--1.2051423773349793e+01
-1.4780913063907059e+01
--3.8547553002784852e+01
--2.3452975409043606e+01
-1.8145289743419514e+01
--4.6882159023470287e+01
--1.5304318895921934e+01
-1.4046019940053487e+01
--3.6194255504073155e+01
--1.7141492136598576e+01
-1.4147647286503201e+01
--3.6423084542609807e+01
-1.3939351904464019e+01
-9.4334174386712508e+00
--2.3240370892331882e+01
-1.2080537486509792e+01
-1.0118639914988853e+01
--2.5650802284965760e+01
-1.3654900862197856e+01
-9.7476652839153797e+00
--2.4427441095913693e+01
-1.2130907878841843e-01
-1.7778552396389927e+01
--4.8445117824408449e+01
-1.3001863999829464e+01
-1.2847286914310159e+01
--3.3992025200329429e+01
-1.3001863999829464e+01
-1.2847286914310159e+01
--3.3992025200329429e+01
-1.9390509425795042e+01
-2.4058171157034163e+01
--6.6036201730583358e+01
--7.9269341308285126e+00
-1.5525337775951501e+01
--4.2726054805845166e+01
-1.3487545263812370e+01
-8.7868722825790382e+00
--2.2537701055120152e+01
--5.0783358042350635e+00
-1.6109229557463724e+01
--4.5231727219411738e+01
-1.2927024088444961e+01
-1.2705472577514707e+01
--3.4272824673335812e+01
--8.3088756105479931e+00
-1.5069685756220208e+01
--4.2730383887717359e+01
--7.3006483125591659e+00
-1.5376329556056367e+01
--4.3623325316389078e+01
--6.1032930465677904e+00
-1.5706817536144337e+01
--4.4554078575757664e+01
--1.2728519400351791e+01
-1.3921619346981027e+01
--3.9361074109358164e+01
--1.5529641631145919e+01
-1.3676637845775900e+01
--3.8168483820255048e+01
--1.6994827654867407e+01
-1.3047215883482444e+01
--3.6588850873827333e+01
--7.8428597941079046e+00
-1.4929836080778756e+01
--4.3716641760231539e+01
-1.2172681800859278e+01
-9.2331813639731593e+00
--2.6544873080181109e+01
--9.7249643873388827e+00
-1.4057673520994875e+01
--4.2327138843622762e+01
-1.3291040865749158e+01
-9.0382075752917910e+00
--2.5633045110514995e+01
--1.1539158096540916e+01
-1.3601788206053673e+01
--4.1331312243913551e+01
--7.2558491192051431e+00
-1.4540063172576136e+01
--4.4935009585016005e+01
-6.5879560051006802e-01
-1.6342753205269656e+01
--5.0807468742651082e+01
-3.4953289917068529e+00
-1.7411571432319207e+01
--5.5085254109560054e+01
--1.0279134211826275e+01
-1.3502678988137983e+01
--4.2810889624993209e+01
--3.1189417297829884e+01
-1.8363081279992478e+01
--5.8721880426216799e+01
-1.2664686403758118e+01
-8.0116499839320863e+00
--2.4936265970929149e+01
--2.9283530446022766e+01
-1.8072451821373114e+01
--5.8734839502868617e+01
--4.7513898489277970e+00
-1.4527469768326721e+01
--4.8283522272737279e+01
-1.2775953601692253e+01
-1.1615285251185790e+01
--3.7746651296456761e+01
-1.5037006204672977e+01
-1.1215172199182598e+01
--3.6310346916337984e+01
-2.4600572842974611e-01
-1.5079961067926272e+01
--5.2259897708726172e+01
--1.0060419941920726e+01
-1.2511571702184684e+01
--4.4392170444955255e+01
--1.0037471294311285e+01
-1.2469226273443828e+01
--4.4111721535045007e+01
-7.6905850662140667e+00
-1.4552163862113208e+01
--5.2247156815489468e+01
-7.7012819237818162e+00
-1.4620125832447775e+01
--5.2402950862893974e+01
--2.9179338970766690e+01
-1.5827782593294227e+01
--5.5363449958295270e+01
--2.6918168934316160e+01
-1.5659719472427739e+01
--5.5140309025465633e+01
-1.3531102386797190e+01
-9.9517121976415428e+00
--3.4856191639662043e+01
--1.0788246863290475e+01
-1.2197789772468655e+01
--4.4011122749380689e+01
-1.3831014345602446e+01
-6.7900362950095570e+00
--2.3274045516889547e+01
--6.4375369354809582e+00
-1.2786492644803740e+01
--4.7669606147386858e+01
--1.0744529522929144e+01
-1.1912015633848828e+01
--4.3868138490095170e+01
-1.3447977051894096e+01
-7.1368492153063565e+00
--2.5134777866454325e+01
-1.7228151669207673e+01
-1.1795795737865875e+01
--4.3816254111276869e+01
-1.5426967460579448e+01
-1.0586381266405109e+01
--3.9342221429137084e+01
-1.2302384009485200e+01
-7.4738466367012864e+00
--2.6520832548237021e+01
-1.2528599097967939e+01
-7.3189209724330864e+00
--2.6051615861592246e+01
--4.5694306707154775e+00
-1.3055402457188165e+01
--4.9713814106198534e+01
-7.5867379261671131e+00
-1.3142540592848290e+01
--5.0269710172235214e+01
-1.9147766140603177e+00
-1.2910769147292058e+01
--4.9755842514874132e+01
-1.2334125743891111e+01
-7.2242879513605684e+00
--2.6665978501541268e+01
--6.0577414752061136e+00
-1.2347031596240813e+01
--4.9008486378873087e+01
--1.6921127135237668e+01
-1.0839743338661263e+01
--4.1791204009430373e+01
--1.6921127135237668e+01
-1.0839743338661263e+01
--4.1791204009430373e+01
--1.7541509943691231e+01
-1.0662587065796862e+01
--4.1664521522104181e+01
--1.3393546716862739e+01
-1.0486813676898885e+01
--4.2116379455192707e+01
-1.5481366709144710e+01
-9.7765523432734334e+00
--3.9156279980207309e+01
--1.2834122772099260e+01
-1.1014690433678327e+01
--4.4589173311304222e+01
--8.8002139767342076e+00
-1.1583171350124230e+01
--4.7986523123281039e+01
--3.8982812612175644e-01
-1.1562339541794865e+01
--4.8195750393239571e+01
--3.7011471290999454e-01
-1.1642372791600275e+01
--4.8592102644012613e+01
-1.3775806455650104e+01
-6.1822121288744691e+00
--2.4221872400117444e+01
-2.6549757837319663e+00
-1.1503521845372152e+01
--4.8700581707072523e+01
--1.6104778357673400e+01
-9.9139956801182674e+00
--4.1189057553470441e+01
--1.7870488607926617e+01
-9.8137132205173359e+00
--4.2541245830604176e+01
--1.6998577084149588e+01
-9.7848382069950635e+00
--4.2786368128684074e+01
--1.7239740705630339e+01
-9.5199271948635538e+00
--4.2017456704818841e+01
-2.2561902746122255e+00
-1.0141362319011288e+01
--4.6049076825957201e+01
-1.2368706196031050e+01
-6.7215399659932844e+00
--2.9193882329288829e+01
-7.7070397874671128e+00
-9.7576959237254801e+00
--4.5132996475481931e+01
--2.4184101839377767e+01
-1.0242626412780442e+01
--4.7300264446928857e+01
-7.2705540675326290e+00
-1.0123022134486122e+01
--4.7760307443229841e+01
-1.2446197701901193e+01
-6.2084848795771377e+00
--2.8374024636706277e+01
-1.3040938244365154e+01
-6.1479055483391303e+00
--2.8142503680256432e+01
-1.2627124046945427e+01
-6.0750389369708255e+00
--2.7702475616557475e+01
--2.4948926999013398e+01
-1.0050013308664013e+01
--4.6918607181418018e+01
-1.2460177642251734e+01
-6.0394160252295590e+00
--2.8836681824362365e+01
--2.9999243451424018e+00
-8.9611683024578213e+00
--4.4611603427544026e+01
-1.2997907361572663e+01
-5.7076832744693595e+00
--2.7006320798692627e+01
--1.6950544638708454e+01
-8.4021832076024623e+00
--4.1236557868217226e+01
-1.3256366133286745e+01
-5.7589436201248949e+00
--2.7743085270333779e+01
-1.3267011068127202e+01
-5.5976277399590408e+00
--2.6940122105751328e+01
-1.3571643975712385e+01
-5.4794260655088900e+00
--2.6223950092694164e+01
-1.3047586707365769e+01
-5.8853421660183551e+00
--2.8639368134792893e+01
-1.2528408041049573e+01
-5.7770110406119599e+00
--2.9336645825318236e+01
-1.2487632495104700e+01
-5.7549330371550118e+00
--2.9282976312948623e+01
-1.2787019760616044e+01
-5.5324987766388576e+00
--2.8086043107487125e+01
--1.2508099728616451e+00
-8.0910258135737614e+00
--4.3866242508108868e+01
-1.2231601819378055e+01
-5.6588253701783247e+00
--3.0435284119671540e+01
--2.8495358121500400e+00
-7.4229166799112081e+00
--4.1708734918849402e+01
-1.3459146596899274e+01
-4.9896073146582598e+00
--2.6533991461518035e+01
-1.3510698354196007e+01
-4.8998343689931430e+00
--2.6292118267409634e+01
--1.0918787620331139e+01
-7.5398980763439605e+00
--4.2744632836984927e+01
--1.0536180210813592e+01
-7.2377603471698002e+00
--4.1392924244260968e+01
-1.2757850945981779e+01
-5.2103262505160375e+00
--2.8478631647621000e+01
-1.2636665395996873e+01
-5.2215856750115197e+00
--2.9455143243543787e+01
-1.3667091248068144e+00
-4.2992795590682249e+00
--2.4664167629041046e+01
--9.8076133337298064e+00
-6.6018633862769409e+00
--4.0686237488616491e+01
--9.8076133337298064e+00
-6.6018633862769409e+00
--4.0686237488616491e+01
-1.2759266659408834e+01
-4.7523973240364077e+00
--2.9199886766129698e+01
-9.1556666564368572e-01
-4.0232814276867135e+00
--2.4250988397976613e+01
-1.4159193018381266e+01
-3.8634940926430654e+00
--2.6398913742246215e+01
-1.5946501280716683e+01
-4.2976183615250880e+00
--2.9991656773886913e+01
-1.3874637321084034e+01
-3.8102012080305445e+00
--2.6288915016022198e+01
-1.3874637321084034e+01
-3.8102012080305445e+00
--2.6288915016022198e+01
-3.4039768913448056e+00
-3.2868625223769663e+00
--2.2595642317195505e+01
-1.3385579582639105e+01
-3.8382693368170173e+00
--2.7735733444724605e+01
-1.2945848654922813e+01
-4.0013431469979688e+00
--2.9721504613788525e+01
-1.4097926782632941e+01
-3.7209425577129100e+00
--2.6758903416658271e+01
-1.4062378367771821e+01
-3.5813850231937665e+00
--2.5864327302255827e+01
-1.3844196975691752e+01
-3.6463157368459367e+00
--2.6789613453446307e+01
-1.8501754668360018e-01
-3.0127148010798037e+00
--2.2079446249059998e+01
--2.5324648774224244e+01
-5.4274984831530624e+00
--4.0667584108123478e+01
--2.5324648774224244e+01
-5.4274984831530624e+00
--4.0667584108123478e+01
-1.4011327631480400e+01
-3.4958678023775138e+00
--2.6152116542263077e+01
-1.4127203276767496e+01
-3.4577052639204080e+00
--2.5696909573045687e+01
--6.4867725473308910e+00
-4.7222404999352303e+00
--3.8393211162352003e+01
-1.3844993845443087e+01
-3.4881085660564395e+00
--2.6687250717007775e+01
--8.1830756778448688e+00
-4.6887564139886209e+00
--3.8413899533351419e+01
-1.3276832100682890e+01
-3.5055223880768982e+00
--2.8007156216288816e+01
--6.8617002664098852e+00
-4.5572755848389930e+00
--3.8502029265374475e+01
-1.3749443832736890e+01
-3.2671041331127495e+00
--2.6529074035269716e+01
-1.3135472009264886e+01
-3.4887522176283090e+00
--2.8541396656133408e+01
-1.3135472053853158e+01
-3.4887522365914299e+00
--2.8541396722487747e+01
-1.4260080237248891e+01
-3.0032445948246504e+00
--2.4367222651239281e+01
-1.3893736589112937e+01
-3.1791134024603500e+00
--2.6435425526555331e+01
-1.4331781372815772e+01
-2.9953608630088295e+00
--2.5292106287841492e+01
-1.4318845484431442e+01
-3.0026982175861989e+00
--2.5084593395659709e+01
--1.2016324544302732e+00
-2.8710066936119416e+00
--2.3476523267538816e+01
-1.4657261638746117e+01
-2.8505606878134095e+00
--2.4124740729208060e+01
-1.4691559869527024e+01
-2.8400910748520110e+00
--2.3978813085305276e+01
--8.2293526650638480e+00
-4.0977501467608324e+00
--3.7427700184409275e+01
--7.4022259475137311e-02
-2.6699645071775917e+00
--2.2022822738716719e+01
-1.4188014600001216e+01
-3.0084090103956012e+00
--2.5994979132726286e+01
-1.3504571857013225e+01
-3.2601136028838993e+00
--2.8926235551183524e+01
-1.4281523498130200e+01
-2.9321999131417007e+00
--2.5463307849430485e+01
-1.4425994965352338e+01
-2.8585466236338353e+00
--2.4969131619933808e+01
-1.3417610078497320e+01
-3.1347233908409042e+00
--2.8289899393070641e+01
-1.3651615769427199e+01
-3.2308403099983392e+00
--2.8780912178424536e+01
-1.3852093421578466e+01
-3.2188201354527139e+00
--2.8508956911675565e+01
-1.4225647953550634e+01
-2.8274606822915755e+00
--2.5685151768508405e+01
-1.4098195705048834e+01
-2.8485082664819035e+00
--2.6163269084398230e+01
-1.4317958183309791e+01
-2.7715403415436608e+00
--2.5404759272494029e+01
--2.0943453512847623e+00
-2.8532212893853530e+00
--2.5970478918378436e+01
-1.4330355050622540e+01
-2.7877806619930885e+00
--2.6222004513326858e+01
-5.1329746740113889e-02
-2.2734582011525815e+00
--2.1480633647451590e+01
-1.4297412499225008e+01
-2.5767046522698518e+00
--2.5788749127290306e+01
-1.4648350484346947e+01
-2.4209843665805502e+00
--2.4681522757290047e+01
-1.4648350484346947e+01
-2.4209843665805502e+00
--2.4681522757290047e+01
-1.4270887086974676e+01
-2.4593304312186359e+00
--2.5890513159161337e+01
--8.0779694926581644e+00
-3.3162848251433714e+00
--3.6882832394114295e+01
-1.4525500434330711e+01
-2.3632850416334432e+00
--2.5144407838655169e+01
--2.2650406606120793e+01
-3.2557334535509748e+00
--3.7142733705612073e+01
--1.6043782230301991e+00
-2.1892102550302335e+00
--2.3108351368288474e+01
-1.4531678774779344e+01
-2.1860555407038911e+00
--2.5378206391344481e+01
-1.3928827786557209e+01
-2.5252493773467646e+00
--3.0473470633550534e+01
-1.4666924166494798e+01
-2.1363962454459076e+00
--2.4934420677357263e+01
-1.4371699472947613e+01
-2.1065037650915475e+00
--2.5975213093402452e+01
--7.7016783898326437e+00
-2.7041597911892525e+00
--3.5774023041751029e+01
-3.0423357928441725e+00
-1.8568029398633050e+00
--2.1971192554884180e+01
-1.4605149632549512e+01
-2.0064916537588386e+00
--2.5167776269684055e+01
-1.5017213062024563e+01
-1.8284372160689388e+00
--2.3770717592547019e+01
--3.6022751934869490e-01
-1.8128288995654107e+00
--2.1597695748585448e+01
-1.4272383929678222e+01
-1.9614634978320833e+00
--2.6845019038499778e+01
-1.4600711353183717e+01
-1.8364461662479632e+00
--2.5376282005288054e+01
-1.4754185721698109e+01
-1.7913584867408878e+00
--2.4960587906230423e+01
-1.4067809872461769e+01
-1.8785579570549120e+00
--2.7592120784563196e+01
-2.7797182120166704e+00
-1.5453937187114022e+00
--2.1198542188589371e+01
--4.4095332518061586e-01
-1.5386672797298664e+00
--2.1581883502239876e+01
-1.7671412774846913e+00
-1.5764698450858203e+00
--2.0854746062681368e+01
-1.6416948382677188e+00
-1.6085356240272297e+00
--2.0629649243777145e+01
-1.3538640763997030e+01
-1.8293447099486886e+00
--2.9673602000401498e+01
-1.5058864116041997e+01
-1.5988344932690317e+00
--2.4725944282762871e+01
-2.9573719687580353e+00
-1.3649065336955442e+00
--2.0835231568061015e+01
-1.4073188423612949e+01
-1.6422339354920437e+00
--2.8244320912533809e+01
-1.5115713977375481e+01
-1.3833216334275753e+00
--2.3046554618740604e+01
-1.2841579601870622e+01
-1.8851698139578219e+00
--3.2995413010003823e+01
-1.2988559537980169e+01
-1.9056842927564002e+00
--3.3323192341292867e+01
-1.4214851279688052e+01
-2.0741414081995928e+00
--3.4277120911195382e+01
-1.4151888786045946e+01
-1.5302055938877446e+00
--2.7015734556814891e+01
-1.5340727269368127e+01
-2.2812814065366802e+00
--4.0739275633825748e+01
-1.2982383120747523e+01
-1.8562871621503902e+00
--3.4531990683222958e+01
--2.4762578738285077e+00
-1.4239861523475514e+00
--2.4239086217178599e+01
-1.9723370839419851e-01
-1.2818342763843933e+00
--2.0923430120125182e+01
-1.4332126129443330e+01
-1.3647814506918534e+00
--2.6920900739513154e+01
--3.9078610671629255e+00
-1.3483545391319058e+00
--2.5140601497802077e+01
-1.4408553000869661e+01
-1.3036494781552930e+00
--2.7415405289479917e+01
-1.4119960369022161e+01
-1.2520977370719115e+00
--2.8137491111270474e+01
-1.4134447571811121e+01
-1.2487191758791789e+00
--2.8134306470016043e+01
--2.6035823064364116e+00
-1.1675621581766100e+00
--2.3775827160240773e+01
--2.3364243320543250e+00
-1.1276231633196863e+00
--2.3617939880547144e+01
-8.2955967704999944e-01
-1.0508213518889555e+00
--2.0497042681620016e+01
-3.0671397653040642e+00
-1.0386004896620249e+00
--2.0825973928589672e+01
-3.0615715862057957e+00
-1.0297194281478352e+00
--2.0728827717706096e+01
--1.1384212038783645e+01
-1.4082043696044417e+00
--3.4438420376596767e+01
-1.4374383762224063e+01
-9.9772706177157222e-01
--2.6793891032150906e+01
--3.7324454056477938e+00
-1.0505035282951087e+00
--2.4672146339463556e+01
-1.4279608801933005e+01
-1.0373990160556741e+00
--2.7862965163562809e+01
-1.5379478989945067e+01
-9.3629409513124862e-01
--2.3507525815883096e+01
--1.7712357522441595e+00
-9.2783252960011020e-01
--2.2615605370763756e+01
-1.5168259828526354e+01
-9.5255692080309251e-01
--2.5000765169621914e+01
-1.5112493153792038e+01
-8.6865794295803256e-01
--2.4800319129336177e+01
--3.2791789000340490e+00
-9.4031731887744396e-01
--2.4473904682502475e+01
-1.4547916768344670e+01
-8.1183149932803345e-01
--2.6717645212137679e+01
-1.4442108100943454e+01
-5.9885609187660505e-01
--2.7767489318558638e+01
--2.4298608935698662e+00
-6.2221115624034984e-01
--2.2962973657817358e+01
--1.2196488136230114e+01
-6.0912604134741521e-01
--3.2933040603615488e+01
-1.4636769934882059e+01
-5.0545566179068335e-01
--2.6790477513866293e+01
--9.4465773313200074e+00
-6.0763654932644895e-01
--3.3194058921138101e+01
--9.4779403251909145e+00
-6.5476409133576108e-01
--3.3097959285626295e+01
-1.4252469896954540e+01
-5.0447567867163223e-01
--2.8538664659114190e+01
-1.3937794102212560e+01
-4.9976155895524205e-01
--2.9457913674090182e+01
-1.4481746892680439e+01
-4.1184402602837739e-01
--2.7477948862965157e+01
--9.1978469193714840e+00
-4.4755157325225164e-01
--3.3144529427907941e+01
--9.3608594084857391e+00
-4.1114684474923380e-01
--3.3042735930742417e+01
-1.4380558305479434e+01
-2.8513284635754238e-01
--2.8275021742534260e+01
-1.4631941621627037e+01
-2.6397203890501542e-01
--2.7953345912945331e+01
--1.8607167192277647e+00
-2.5810873309523313e-01
--2.2417288494563955e+01
--1.1114712396124629e+01
-2.8292885153588238e-01
--3.2802535385896192e+01
-1.4513552587202652e+01
-1.1902223308533834e-01
--2.7466476297849479e+01
-1.4571602372764968e+01
-8.9728095447812559e-02
--2.7548842502660573e+01
--9.8338843874005804e+00
-6.7851762488254169e-02
--3.2455909495578723e+01
--1.0606577607896678e+01
-5.9679815678207682e-02
--3.2310374417893279e+01
-1.4441508827668644e+01
-2.3560534726579083e-02
--2.8415944658878448e+01
-1.4296058531246892e+01
--2.4639541846107338e-02
--2.8074902629941857e+01
--1.7070662593774892e+00
-6.8907986916374106e-02
--2.2300600202346107e+01
--1.0360813271028941e+00
-6.7945949913766499e-02
--2.1614278115205771e+01
-1.5979078933634483e+01
--1.3788698098594221e-01
--2.4071609374862280e+01
-5.2582744369754589e-02
-5.1777446300939403e-02
--2.1283395050050814e+01
--1.1199958535296400e+01
--1.7187647227916930e-01
--3.2445860845488021e+01
-1.4543622324967549e+01
--2.3283760425878292e-01
--2.8103859637714024e+01
-1.5336769548368146e+01
--1.6098441522237178e-01
--2.4466367097124611e+01
-1.4587773227693379e+01
--2.5194819694522025e-01
--2.7855130250668982e+01
-1.4778998518491633e+01
--2.8536312797716856e-01
--2.8074704945173618e+01
-1.4380301661041930e+01
--3.8013811680574444e-01
--2.8820513846314668e+01
-1.8889069375047398e+00
--1.4889832296738933e-01
--2.0270579867496451e+01
-1.4526767329493726e+01
--5.8245812614156722e-01
--2.7972554796914910e+01
-1.4703749057179881e+01
--6.0565645172291482e-01
--2.8090544834110467e+01
--1.1423563943397895e+01
--5.7517134249130908e-01
--3.1543620597728069e+01
--1.0886806443398074e+01
--5.6740015321540782e-01
--3.1474859873478810e+01
-2.5456982092111700e+00
--2.7905374867077198e-01
--2.1718086417721572e+01
-2.1939221117480332e+00
--3.4208405760930954e-01
--2.0358650748111206e+01
-1.4544646090007149e+01
--6.9842790610326355e-01
--2.8915070252040170e+01
-1.5502248614329710e+01
--6.8820177730282195e-01
--2.5585730911409936e+01
-1.8138867821017612e+01
--7.6013296632847283e-01
--2.9682432279508706e+01
--9.7447293533163055e+00
--7.9393515656757752e-01
--3.1280146994234897e+01
-2.5091561088229870e+00
--4.2288441925562392e-01
--2.0802053071855472e+01
-2.4797266783257501e+00
--4.7043413484904134e-01
--2.0393210618900309e+01
-1.4822514256659193e+01
--8.9240924944824407e-01
--2.7729094589384587e+01
-1.4621796677591833e+01
--9.6219885876371358e-01
--2.8456406446852728e+01
-1.5507408458672813e+01
--7.9751892470170682e-01
--2.3771733420030184e+01
-1.5844678090909293e+01
--7.3012891704483041e-01
--2.5334112061907916e+01
--9.9248053900915352e+00
--1.1024766104187729e+00
--3.0989124018731349e+01
--4.3895976394420433e-01
--6.6862021255502224e-01
--2.1167491797639997e+01
--3.2337061980512660e-01
--7.9695764684312753e-01
--2.1105388237593871e+01
--9.5421904285761627e+00
--1.3036458762963326e+00
--3.0563764883096734e+01
-2.6048700224361294e+00
--8.1991006875944561e-01
--2.0606908404188207e+01
-9.1278088433236271e-01
--8.2443158468613287e-01
--2.0520965676913697e+01
--1.6241819094023087e+00
--9.7800039405529782e-01
--2.1693941571667192e+01
--8.3225261637322601e-01
--1.0170114871909002e+00
--2.0825313240888054e+01
-1.5418248620051070e+01
--1.5323915901472227e+00
--2.7179093437074393e+01
-1.7264732502075105e+01
--1.6353573211833141e+00
--3.0299401677135322e+01
-1.4847020699550015e+01
--1.7341672424417149e+00
--2.8244246341431538e+01
-1.5590072086793684e+01
--1.5493548137999682e+00
--2.4494089946129147e+01
-3.7340377009458403e+00
--1.2080148361848324e+00
--2.2513029700646136e+01
-3.5438200147176935e+00
--1.2816237169936724e+00
--2.2475161887288564e+01
-3.0838282939647828e+00
--1.3298842068823822e+00
--2.2157604211541575e+01
-1.5392018669153115e+01
--1.8608358361062738e+00
--2.6545572185355219e+01
-2.7325345701312846e+00
--1.2744751583433906e+00
--2.1943295570277360e+01
--2.1644005462064864e+00
--1.4341427319265725e+00
--2.1471502349069478e+01
-1.3728810999589152e+00
--1.6267436958800856e+00
--2.1116676948056611e+01
-4.5853210591759073e+00
--1.9173473938740475e+00
--2.2933942438541116e+01
-1.6268768452854012e+01
--2.5050564608917152e+00
--2.4948449706802979e+01
-1.5596230265931821e+01
--2.7076435578195892e+00
--2.7223407557044546e+01
--9.0480732147767640e+00
--2.6409118982228295e+00
--2.7238631049693971e+01
--9.2590425325268377e+00
--3.1084942262331423e+00
--2.6144716418717952e+01
--8.8711226760388726e+00
--3.6184539871554047e+00
--2.7520469541637908e+01
--2.0877221644005739e+00
--2.9569262300197954e+00
--2.2305166486487334e+01
-6.1806516626232000e-01
--2.6725473765594616e+00
--1.9896092159197138e+01
--6.2591198408066240e-01
--2.8390583528223838e+00
--2.0355126560061798e+01
-1.6589648542172906e+00
--2.7102515844969837e+00
--2.0063335169211001e+01
--2.2929152172890612e+00
--3.1582158523391399e+00
--2.2615037896220816e+01
-1.4426993094262470e+00
--2.7689385784593785e+00
--1.9751401360311970e+01
--9.0693960223818202e+00
--3.8248100210561629e+00
--2.6615187672822696e+01
-1.0131313609163479e+00
--2.8857374449090010e+00
--1.9702603477475815e+01
-7.3495900424601313e-01
--2.9208006845226615e+00
--1.9700400038283298e+01
-9.4511307205018669e-01
--3.0532562675313670e+00
--1.9490122221657792e+01
--7.0465992672783320e-03
--3.3136605818652942e+00
--2.0563764798082165e+01
-8.7491034001375356e-01
--3.1542553907617057e+00
--1.9486267047409665e+01
--2.1476155122034242e+00
--3.7946682285538249e+00
--2.2989625166172431e+01
-5.5084696545224368e-02
--3.4881759988880736e+00
--2.0658495765044716e+01
--1.7917883054536617e+01
--5.0823566051106841e+00
--2.7135809862296629e+01
-1.3292049728370497e+01
--5.3878258060180464e+00
--2.7402179265599603e+01
-1.7091017731794128e+01
--6.1101892065584620e+00
--2.8537357059857669e+01
-1.5937541851801699e+01
--6.2190205441719266e+00
--2.7866792804951576e+01
-2.0783959007298729e+00
--4.7135094872708914e+00
--2.1301578447681994e+01
-1.5379338551263782e+01
--6.4665740044182440e+00
--2.7191199005903641e+01
-1.4662163500617053e+01
--6.6903933609421538e+00
--2.6831041839680399e+01
-4.5066039435975735e+00
--5.6656851916323641e+00
--2.2000762337176614e+01
-1.3141793714235188e+01
--6.8541945914030542e+00
--2.5761490767778717e+01
--4.0303873272208675e+00
--6.7318524744024444e+00
--2.2308370098342913e+01
--3.3643278355541399e+00
--7.2476587723454831e+00
--2.2636098727608168e+01
-1.3798541788258419e+01
--8.3896539466508742e+00
--2.4726058514137737e+01
-9.1877432184198327e+00
--7.5203485569149926e+00
--2.2102078139664627e+01
-7.7275944375847159e+00
--7.7131841729120287e+00
--2.2457832594979863e+01
-1.6370308964573288e+00
--7.7205940256824581e+00
--2.1231573527904008e+01
-1.5628928360890675e+00
--8.0753856892280371e+00
--2.1686328549290135e+01
--2.0513383272296895e+00
--8.2028998814396719e+00
--2.1420878867360329e+01
-7.0676569579837736e+00
--8.3579639489478872e+00
--2.1669758455096616e+01
--2.5121962849233120e-01
--8.1648812000228030e+00
--2.1170118198078622e+01
--5.7893902305696203e+00
--8.1657863043800916e+00
--2.1186812062258795e+01
-1.2400157285168175e+01
--9.0648476187152696e+00
--2.3307538321040518e+01
-7.0757319495931341e+00
--8.1459932019011330e+00
--2.0938560282682371e+01
-3.3241088706283856e-01
--8.1507336991470005e+00
--2.0687631836340096e+01
-5.1770835531155635e-01
--8.1846161490073470e+00
--2.0720857653087084e+01
--4.2303726981846307e-01
--8.3816326296362558e+00
--2.1180239443304270e+01
-7.7339303270705084e-01
--8.2908838141448022e+00
--2.0811372274581426e+01
-1.3999302240181069e+00
--8.3155421659357351e+00
--2.0560879404433113e+01
-9.0247468182268076e+00
--8.8670513649189946e+00
--2.1851425064914981e+01
-3.3794955373195441e-02
--8.2878855303317724e+00
--2.0526634881333319e+01
-7.3728982085558226e-02
--8.3913510976838932e+00
--2.0611286348633733e+01
--4.8829235148419139e+00
-1.9096528052326057e+01
--4.1403381665998374e+01
-2.5937026645165151e+00
-2.1759638217679633e+01
--4.7585563093625829e+01
--1.3933126374511517e+01
-1.6239669083760532e+01
--3.4708398750664301e+01
-1.0595002353631505e+01
-2.3636389981562907e+01
--5.2071530884008766e+01
--1.4090751242745993e+01
-1.5881871229432887e+01
--3.4234356828720031e+01
--1.2751993450171703e+01
-1.6527815051522559e+01
--3.5642838989909187e+01
--1.2645607204754473e+01
-1.6315319295914982e+01
--3.5304526418607637e+01
--7.7115249804981145e+00
-1.8034936516643263e+01
--3.9422032405195260e+01
-1.3522914668985914e+01
-1.6420800585120098e+01
--3.5467737595782729e+01
--1.0371549156556593e+01
-1.7189191794919950e+01
--3.7455053759248138e+01
--1.0310480905203042e+01
-1.7163720554386948e+01
--3.7386734063277906e+01
-2.0503769946597131e-01
-2.0296120087425354e+01
--4.5214826189771905e+01
-1.4537288876057156e+01
-2.4133092829970110e+01
--5.4267169719018625e+01
-1.3507941854357624e+01
-1.4240842213344978e+01
--3.0999982431657244e+01
-4.7368102660205897e+00
-2.1397987137887657e+01
--4.8529476894882492e+01
-1.2521467293418400e+01
-1.5134671519661195e+01
--3.3222027012422771e+01
-1.2817807277399355e+01
-1.4797044082748885e+01
--3.2460466977643556e+01
--1.4035694108387698e+01
-1.5831828136647443e+01
--3.5123890227637851e+01
-7.3658676156197078e+00
-2.2038009873586862e+01
--5.0300880048550482e+01
-1.2307820255061911e+01
-2.3186021390246093e+01
--5.3056395800398910e+01
-1.1153100554530213e+00
-2.0462229758316777e+01
--4.7540425545505094e+01
-1.3424068593012008e+01
-1.4220528928630955e+01
--3.1932666363084799e+01
-1.3444271894912506e+01
-1.3679278842145617e+01
--3.0714420974675544e+01
--2.9546689522171292e+01
-2.3862685105075506e+01
--5.4716367422780344e+01
-1.7527934653345746e+01
-2.4073224938336491e+01
--5.6981612758033407e+01
-8.3563146725582431e+00
-2.1680258087951831e+01
--5.1597992708502275e+01
--2.8054731646518036e+01
-2.2583833732630957e+01
--5.2653789102087920e+01
-1.3454522297946250e+01
-2.2624307215811204e+01
--5.4141248201055632e+01
-1.2119620422923470e+01
-1.1012045473467374e+01
--2.4816016282085204e+01
-8.5270247195329318e+00
-2.1667471143576691e+01
--5.2135044851753634e+01
-2.2248511819633605e+00
-1.9472641495936795e+01
--4.8386141428601086e+01
--2.4910685838812412e+01
-1.9595489393309979e+01
--4.8655055655803743e+01
--2.4910685838812412e+01
-1.9595489393309979e+01
--4.8655055655803743e+01
--5.0991980697353272e+00
-1.6831037605586694e+01
--4.3185163278782106e+01
-1.2560116901758542e+01
-1.3575098533769868e+01
--3.4647190325170911e+01
-1.2717979633626959e+01
-1.3606633791867687e+01
--3.4949906437785195e+01
-1.2018100722201504e+01
-1.0347190165024672e+01
--2.5853444142125650e+01
-1.2757680136832317e+01
-1.2991498733851580e+01
--3.4263654053277129e+01
-1.3854558863684534e+01
-1.2179882447050764e+01
--3.2156465978123009e+01
-1.3156060608306978e+01
-1.2464526535629485e+01
--3.3716075424447304e+01
--1.6907020053040558e+01
-1.3422562377470703e+01
--3.6054918390171231e+01
-1.2542864670894707e+01
-9.5671475681405784e+00
--2.5040943284249778e+01
--3.0143183470473298e+00
-1.6511351482320443e+01
--4.6653766962395956e+01
--2.3971712779321692e+01
-1.7674704723724446e+01
--4.8786056289570581e+01
--1.6731042367267456e+01
-1.4287040851620597e+01
--3.9927003493145591e+01
-1.4468590720593825e+01
-8.6097650944321096e+00
--2.2341133048290704e+01
-1.4588310629477014e+01
-8.4273473305389768e+00
--2.2131660233273262e+01
-1.3620669942502580e+01
-9.0767212389101424e+00
--2.4904512012099918e+01
-1.2656798217654512e+01
-8.6506060050745557e+00
--2.5444540374376626e+01
-1.2513291903494459e+01
-8.5577734554138303e+00
--2.5199913805873098e+01
-1.3370198036182090e+01
-8.6332257057245272e+00
--2.4926272632356557e+01
-1.3452887094023096e+01
-8.7123527285237419e+00
--2.5100764621921083e+01
--8.7533528268895520e+00
-1.3187952500014230e+01
--4.2399947591481400e+01
-1.2709400304513933e+01
-8.2081709182370375e+00
--2.4781582406758400e+01
-1.2131424263280216e+01
-8.5458995748692725e+00
--2.5953521443155442e+01
-1.2028056025364858e+01
-8.6466957284886483e+00
--2.6424432705118900e+01
-1.2028056025364858e+01
-8.6466957284886483e+00
--2.6424432705118900e+01
-1.2993941811964858e+01
-8.3694297647749138e+00
--2.6185589756960333e+01
-1.3779664654739085e+01
-7.4594584848203764e+00
--2.3154981288461883e+01
--1.5772053720150140e+01
-1.2016667342342952e+01
--4.0176712563853911e+01
-1.3766878223152519e+01
-7.3274553984718587e+00
--2.3582045581591380e+01
-1.2710107071578760e+01
-7.7570954213018322e+00
--2.5418314496360651e+01
--1.6689932066460699e+01
-1.1616975364220401e+01
--4.0478624177493884e+01
-1.3447086707689452e+01
-9.6760217381779992e+00
--3.4206277424350588e+01
-1.3997053145709977e+01
-6.9958008804699601e+00
--2.3978681861429614e+01
-1.4223021907628731e+01
-6.5904602407972854e+00
--2.2307109766874273e+01
-1.4223021907628731e+01
-6.5904602407972854e+00
--2.2307109766874273e+01
-1.3484231617790133e+01
-9.7764562030152344e+00
--3.5354182090691587e+01
-1.2745149063304179e+01
-7.4212076013346815e+00
--2.5961349159725611e+01
-1.2781983059559549e+01
-7.3335024963040905e+00
--2.5663356722201854e+01
-1.6496198688437163e+00
-1.4007265521092432e+01
--5.2384587420462751e+01
-1.4019131741911544e+01
-6.5061427071353721e+00
--2.2935416999987790e+01
-1.2122074264073612e+01
-7.5080549010356199e+00
--2.7557374141944369e+01
-1.5487516997172248e+00
-1.2763008276827888e+01
--4.9474416285890392e+01
-1.3793519286821581e+01
-1.1009642215571505e+01
--4.1616060410156855e+01
-1.2471853254025294e+01
-7.0187410222909961e+00
--2.5936968959787770e+01
-1.3516938333719851e+01
-6.5327820428361623e+00
--2.4568350998749548e+01
-1.2888825329855360e+01
-6.7941869261914887e+00
--2.6536605789812125e+01
-1.2869115936788008e+01
-6.8156821447346534e+00
--2.6491921106577095e+01
-1.2060538904941293e+01
-7.1042012572525790e+00
--2.7926884845714969e+01
-1.5298937583837802e+01
-7.6321729597797061e+00
--3.0589229286452230e+01
-1.4894056765552680e+01
-7.9791432713298995e+00
--3.2683221499800986e+01
--1.2410738859006861e+01
-1.0331881544814225e+01
--4.3703251545437752e+01
-1.3392839260653908e+01
-6.2901817998513208e+00
--2.5548385620799582e+01
--4.7391571406735320e+00
-1.0557091289870538e+01
--4.6414620627474029e+01
-1.8422289373115994e+00
-1.0086358586630208e+01
--4.6720949175026604e+01
-1.2320887138057467e+01
-6.3593000658068837e+00
--2.7800426106481186e+01
-1.2632872050140056e+01
-6.0822141946405415e+00
--2.6723978441296392e+01
--1.4514021141322436e+01
-1.0101832259693943e+01
--4.7409770975172634e+01
--1.3494438440980360e+01
-9.5171996055687753e+00
--4.5781298234894940e+01
--2.2328524644638512e+00
-8.4278117526070773e+00
--4.3834330967502844e+01
-1.3709792231316648e+01
-5.1208139673340760e+00
--2.5500472808690439e+01
--2.4279580146835165e+00
-7.7986206556579960e+00
--4.2371137771757368e+01
-1.2911784950303378e+01
-5.3632025353235546e+00
--2.7844355436999091e+01
-1.3770000306292962e+01
-4.8818388577637393e+00
--2.5685973899163454e+01
-1.7076616611246315e+01
-5.5296144853596800e+00
--2.9389755596097277e+01
-1.3709428726894524e+01
-4.6254866464888487e+00
--2.6170251115591050e+01
--1.7034113368652054e+01
-7.1078819795585444e+00
--4.2434582950732171e+01
-1.8240718714593481e+01
-5.2241201906109307e+00
--2.9990886075404593e+01
-1.1548816175865675e+00
-4.1674169649403945e+00
--2.4486019948487197e+01
--8.4782594430910354e+00
-6.0287792318300957e+00
--3.9617083933742691e+01
--7.8599111938925050e+00
-6.0210189669375840e+00
--3.9892488601094044e+01
-1.3740609485529964e+01
-3.8691148927876644e+00
--2.6546916551091535e+01
-1.4620832042023013e+01
-3.2374344770631516e+00
--2.4152802316789202e+01
-1.3780834207169214e+01
-3.4843069919027703e+00
--2.6932906429454160e+01
-1.3780834207169214e+01
-3.4843069919027703e+00
--2.6932906429454160e+01
-1.4393687653851245e+01
-3.2133503544323663e+00
--2.4927743019243920e+01
-1.4684619962018958e+01
-2.9882092476739968e+00
--2.3813500454368658e+01
-1.4290061699493878e+01
-3.2920236882341412e+00
--2.6468268514207065e+01
-1.4204367054288864e+01
-3.1699498038787519e+00
--2.5465105618960436e+01
-1.4533200965020310e+01
-2.6989005148304828e+00
--2.4771925863785548e+01
-1.5305374971269156e+01
-2.4828248724591768e+00
--2.3243688966195194e+01
-1.4874286399227689e+01
-2.5537441181140701e+00
--2.3712649022708209e+01
--1.2335053548279758e+01
-3.2352692534088265e+00
--3.3633913371903212e+01
-1.2904553665658979e+01
-2.9739941054775065e+00
--3.1768652148317077e+01
-1.4439164251493702e+01
-2.4029157192212556e+00
--2.5648801885179029e+01
-1.8689017112019535e+01
-2.7750108436467968e+00
--2.9461333186412620e+01
-1.8689017112019535e+01
-2.7750108436467968e+00
--2.9461333186412620e+01
-1.4133478423216255e+01
-2.3287355247614436e+00
--2.6743161133583012e+01
-1.4566464522074151e+01
-2.1592358722017706e+00
--2.5204655593123011e+01
-1.4566464522074151e+01
-2.1592358722017706e+00
--2.5204655593123011e+01
-1.4693039335270667e+01
-1.9837314653860552e+00
--2.4199561950642611e+01
-1.5195122103435160e+01
-1.8179474464338263e+00
--2.3193248010171050e+01
--1.1956253991900773e+01
-2.4164460267363754e+00
--3.5989947165637318e+01
--1.0509452593640106e+01
-2.2204639598414713e+00
--3.5487930007791576e+01
-1.3014825165067888e+01
-1.9728616171655582e+00
--3.2126382913816123e+01
-1.3993037356441100e+01
-2.2073902691245251e+00
--3.4740547600516436e+01
--1.2656678568703748e+01
-2.1943815885367681e+00
--3.5402880979054082e+01
--1.2451886928569271e+01
-2.0902042457916399e+00
--3.4877747595722404e+01
--9.0713846928044166e+00
-2.1764267515120692e+00
--3.4774706136614853e+01
-1.5765922886622668e+01
-2.6012176543935777e+00
--4.1909381348781523e+01
--1.1114480046914395e+01
-1.9551460237030880e+00
--3.4901275194383622e+01
--1.2463545512894916e+01
-1.8727666776367515e+00
--3.4732418929253065e+01
--1.4465595054977129e+00
-1.2745464386110195e+00
--2.2595410442060128e+01
--2.3109769984886505e+01
-1.7228518742449941e+00
--3.4765304663651172e+01
-1.3739894648974316e+01
-1.1666700547221311e+00
--2.9229186435178374e+01
--2.0875128695037272e+01
-9.8492119537615586e-01
--3.3782829487537434e+01
--8.0524218664104696e-01
-5.2925415400678921e-01
--2.1364602382721912e+01
--8.3926441576245270e-01
-3.4703437097137024e-01
--2.1402581014986882e+01
--8.4813714785703120e-01
-3.6141250622171406e-01
--2.1453920454420651e+01
-2.7504621904855484e+00
-3.5596836539027976e-01
--2.0569337852862102e+01
-1.5344238974172114e+01
-2.7638623117552863e-01
--2.5005579915881970e+01
-2.3577710912885244e+00
-2.9625666263310940e-01
--2.0427137201556882e+01
--8.4496608480312965e+00
-2.0707538257527791e-01
--3.2455246657583729e+01
-1.5397537552051109e+01
-1.1567697279614617e-01
--2.4052926131574839e+01
-1.5397537552051109e+01
-1.1567697279614617e-01
--2.4052926131574839e+01
--8.8366396943852656e+00
-1.2544370417618020e-01
--3.2626807362007476e+01
--3.0030122779987494e+00
-1.1292153512914005e-01
--2.3221106992068265e+01
-1.4844092356756821e+01
-2.1150684954836631e-03
--2.6306778170860962e+01
-1.5374364491448267e+01
--3.7179563944071022e-02
--2.4268232071303633e+01
-1.5374364491448267e+01
--3.7179563944071022e-02
--2.4268232071303633e+01
-1.4919762909083207e+01
--1.3189286689877525e-01
--2.6401230301353241e+01
-1.4751654294633401e+01
--2.2840286932608475e-01
--2.7630947364080956e+01
--1.1369188438481828e+01
--3.4514026182644669e-01
--3.1854655889273094e+01
-5.0534750022082884e+00
--2.9551462357381081e-01
--2.2110876769479919e+01
--9.5821267378872239e+00
--8.0330513271815862e-01
--3.1445382994547561e+01
--1.6331161729612162e-01
--4.5470128336377613e-01
--2.1538798875246432e+01
--9.9217913248736256e+00
--9.2900749134938165e-01
--3.1268266009016727e+01
-5.4605548518021019e+00
--6.9276317391051367e-01
--2.3873354375758300e+01
-1.4793857677421535e+01
--1.1569738136906464e+00
--2.8183514940183645e+01
-3.8169665125345618e+00
--1.0429261832040204e+00
--2.2503374144122770e+01
-4.1949103862769705e+00
--1.2213259118982756e+00
--2.2587737552698318e+01
-5.1067322815133300e+00
--1.2530963586361359e+00
--2.1710425775704500e+01
-2.1200076177822442e+00
--1.2045617552794914e+00
--2.0694098726064279e+01
-1.5977780148478708e+01
--1.9143253745037390e+00
--2.5347940903914399e+01
-9.7667544567951803e-01
--1.3634414438245148e+00
--2.0523911333505296e+01
-2.9485831219969256e+00
--1.4527088250807922e+00
--2.0460123707820422e+01
-1.5840743763064085e+01
--2.0775234733562717e+00
--2.6615875600998326e+01
--8.8682015418378812e-01
--1.6550214847927480e+00
--2.0951984986681030e+01
--4.1194168441061398e+00
--2.0443701642197580e+00
--2.5394444735762615e+01
-4.0563171712207984e+00
--1.8774250758013080e+00
--2.1084182875415056e+01
-1.5780883811065786e+01
--2.7644676488223072e+00
--2.7280352760319445e+01
--9.1877014969726840e+00
--2.7364472872285677e+00
--2.6876719396514467e+01
-4.6702117189010668e+00
--2.2220074327635304e+00
--2.2480749188484953e+01
-1.8658287099092707e+01
--3.3080727222671609e+00
--2.9798753981208502e+01
-2.9352284815363334e+00
--2.1922148684848066e+00
--2.1725479718616050e+01
-1.0884358119257818e+00
--2.7778700507733585e+00
--1.9724761867963469e+01
-1.9305968777945941e+00
--2.8343158033464881e+00
--2.0826346990714843e+01
-1.8613303774055145e+00
--2.8708418980128001e+00
--1.9811224673820565e+01
-4.2320696471623931e-01
--3.9808411902450369e+00
--2.0941346010787242e+01
--3.4725433897331032e-01
--4.0687889518597355e+00
--2.1551783374579657e+01
-4.0488906450925716e-01
--4.3777180423811961e+00
--2.1292869116587283e+01
-1.2553214654781253e+00
--4.4056616588714164e+00
--2.1741996977680778e+01
-1.5579589021692875e+00
--4.5468046822676236e+00
--2.2282123962877428e+01
-1.1452857571140578e+01
--6.1354096480831766e+00
--2.5344144151888550e+01
-1.5605023469752943e+01
--6.7219470369829981e+00
--2.7152093986460613e+01
-1.6019117541344524e+01
--6.8018022382550170e+00
--2.7316002701759288e+01
--5.2500719113853158e+00
--6.9799353884466555e+00
--2.3222722062397644e+01
-1.5210224773978876e+01
--7.9397111914988905e+00
--2.5710338368877750e+01
-7.6413426894979439e+00
--7.1095782592268089e+00
--2.2952405632886610e+01
-7.3895822586816315e+00
--7.2970809899754885e+00
--2.2678647518209836e+01
-7.0144617517121901e+00
--7.2723124935953534e+00
--2.2262497459385507e+01
-1.4017746904669039e+01
--8.2864493506650909e+00
--2.4882527887298135e+01
--2.8957654965439317e+00
--7.5340287851366297e+00
--2.2332536862935015e+01
-8.5073383877030153e+00
--7.9467898214979211e+00
--2.1972728957497008e+01
--1.4178380378305393e+01
--8.7168582846879694e+00
--2.2552229855266287e+01
-7.3425242881555342e+00
--8.6283134871338021e+00
--2.1570598182017253e+01
-1.2958034281431196e+01
--9.5458895710917346e+00
--2.3302095697484422e+01
--1.4001584983082472e+01
-1.6182568055779086e+01
--3.5846426335550881e+01
--1.3735935819217087e+01
-1.5876525243491324e+01
--3.5203550344527237e+01
-1.1828844705354646e+01
-2.3369883185357644e+01
--5.3861577392671478e+01
-1.3152513202373262e+01
-1.4601295339197764e+01
--3.2192266719437569e+01
-1.3352470730101432e+01
-1.4116814651451438e+01
--3.1372319746387127e+01
-1.6101012291635218e+01
-2.3910413849034267e+01
--5.6121897301548721e+01
-1.2773829534512995e+01
-1.0347329787122103e+01
--2.3710665576331792e+01
-1.4690904169285451e+01
-2.2585250801430835e+01
--5.7066194310619863e+01
-1.3359717140855777e+01
-1.0211716975098691e+01
--2.4519995359150236e+01
--6.0446687717227601e+00
-1.6555071480801502e+01
--4.3617621530629265e+01
-4.8508322251782330e+00
-2.0884761045688244e+01
--5.5526779111626603e+01
-1.3937404996823584e+01
-9.8218036914622360e+00
--2.3932072193938126e+01
-1.3589150163346632e+01
-9.6419242435378596e+00
--2.3760920905026172e+01
-1.4163729307721098e+01
-9.0862064556464315e+00
--2.2285154206653974e+01
-9.2328821876171863e-01
-1.7711372184722087e+01
--4.7542148136175882e+01
-1.1921392986871476e+01
-1.0100559290817946e+01
--2.5929978992942459e+01
-1.4276063618548855e+01
-9.5148635370908643e+00
--2.4137093880817197e+01
-1.3527145246650006e+01
-9.4525251521151414e+00
--2.4061317285094308e+01
-1.3527145246650006e+01
-9.4525251521151414e+00
--2.4061317285094308e+01
-1.2787711393186699e+01
-9.1139484059280775e+00
--2.4516805006844642e+01
-1.3645070861383832e+01
-8.9667526128105095e+00
--2.4527771639103634e+01
-1.2261359175570410e+01
-8.9889416097622981e+00
--2.5538173123032013e+01
-1.2649363918647307e+01
-8.9015884224225008e+00
--2.5812072446490287e+01
-1.3974375477412703e+01
-1.1302264131059477e+01
--3.4937273469743658e+01
-1.7052275436781628e+01
-1.2467379066365298e+01
--4.0024925349391680e+01
--2.1639913983597800e+01
-1.4504900564413626e+01
--4.6538254643902022e+01
--3.0131145091488115e+01
-1.7034871842368755e+01
--5.7557591340639796e+01
-1.3778783080039178e+01
-6.9707058079066035e+00
--2.2599365317051738e+01
--2.9940872272955112e+01
-1.6387453270786072e+01
--5.6458530907582073e+01
--2.9940872272955112e+01
-1.6387453270786072e+01
--5.6458530907582073e+01
--1.6803213898005694e+01
-1.1219866238439106e+01
--3.7999399417237548e+01
-1.3103783456558553e+01
-7.3143950297943299e+00
--2.4505664219930299e+01
-1.4190300786032870e+01
-6.9544486063910957e+00
--2.3359732438641181e+01
-1.4336375165622794e+01
-6.4311170960440167e+00
--2.2548003262735179e+01
-1.4081535455167286e+01
-6.7819329796905263e+00
--2.4247298507957733e+01
-1.3084437354836968e+01
-6.9327920121041346e+00
--2.5698514046258826e+01
-1.2578376195250851e+01
-7.1676652667033505e+00
--2.7422975142517668e+01
--1.3336242354133322e+01
-9.6323735330777733e+00
--3.9258190990316081e+01
--6.8998213856792994e+00
-1.1559243284763818e+01
--4.7306164745587722e+01
--6.8998213856792994e+00
-1.1559243284763818e+01
--4.7306164745587722e+01
-1.2367265870794192e+01
-6.7934059355285914e+00
--2.7073399513184039e+01
-1.2788112833333209e+01
-6.7310027914589519e+00
--2.7179063270400299e+01
-1.2037505018128806e+01
-7.0891323976131790e+00
--2.8878312986209199e+01
-1.2589856733208000e+01
-6.4111479384548566e+00
--2.6595221740562586e+01
-1.3798193790367463e+01
-5.9790965405436962e+00
--2.5354339261993960e+01
--1.6452173076802250e+01
-8.9066684096343227e+00
--4.1359160729141273e+01
-1.8415901940982535e+00
-9.3993983997851540e+00
--4.4655581130240286e+01
-1.3127838593986597e+01
-4.7080847320408896e+00
--2.8869370038725037e+01
-1.3201309797691859e+01
-4.7401473197947963e+00
--2.8922484827916499e+01
-1.3871380832706507e+01
-5.0520339326615069e+00
--3.1343299102682206e+01
-1.4694588342193557e+01
-3.8749769401818548e+00
--2.3080749410208817e+01
-1.3790362428103544e+01
-4.0336339420262197e+00
--2.6320122858949428e+01
-1.3758640881582787e+01
-3.9615869492743849e+00
--2.5667864316212075e+01
--7.8743682409119540e+00
-5.5907561004503155e+00
--3.9181906342284734e+01
-1.3962104053133684e+01
-3.8546929592728412e+00
--2.5662112658819666e+01
-1.5553665282960234e+01
-3.2062334786029338e+00
--2.3968964350690307e+01
-1.3674429966411907e+01
-3.3436662913294466e+00
--2.7536282134344841e+01
-1.4829217692812538e+01
-2.9516485889038018e+00
--2.3444997977035879e+01
-1.4348144159461421e+01
-3.1139922276052143e+00
--2.7553980033991142e+01
-1.4793982959408943e+01
-2.3755150844343960e+00
--2.4568332563651261e+01
--6.7278548734413512e-01
-2.1095079957237708e+00
--2.2000408439067538e+01
--6.7463057877343124e-01
-2.1080121906528397e+00
--2.2014553419923690e+01
-1.5503961196949678e+01
-2.2672411132757269e+00
--2.4570931640397887e+01
-1.5075515324012729e+01
-1.9357007415873084e+00
--2.3467802146787335e+01
--1.0766399232250278e+01
-2.4962965878780325e+00
--3.5722587942634036e+01
-1.5421243966332655e+01
-1.6369227353193083e+00
--2.3766628200709665e+01
-1.4207583240384986e+01
-1.5599937600072000e+00
--2.7696263861863468e+01
-1.4365339790201883e+01
-1.5401205758851089e+00
--2.7829091250745783e+01
-1.5223468480635322e+01
-1.5124341800875805e+00
--2.4323033022805674e+01
-1.3897167906788859e+01
-1.5221101981077596e+00
--2.8911898027345671e+01
--9.0783348345232735e+00
-1.0710627903666825e+00
--3.3236114640217650e+01
--3.4949102376123760e+00
-8.2069009912345225e-01
--2.4547396738927695e+01
-1.5308509837939011e+01
-7.9495945208901564e-01
--2.5859372114016065e+01
--1.0809405998425841e+01
-7.2079224474846282e-01
--3.3241794980151234e+01
--8.8355312090677298e+00
-6.0766515268342569e-01
--3.2231981763376837e+01
--1.0650411461910208e+01
-3.3222500197777599e-01
--3.2690742496583155e+01
-2.7341373707833094e+00
-3.4796336265207173e-01
--2.0489574772365668e+01
-1.5450941101522691e+01
-2.1848659201579698e-01
--2.3826089813364877e+01
-1.6310282351235490e+01
--4.9441834297593013e-01
--3.0671384483499487e+01
-1.4756059303038079e+01
--4.4609355211478124e-01
--2.7852758123342742e+01
-1.4608432646167213e+01
--7.3787453579117313e-01
--2.8241054946766855e+01
-1.5202864056566463e+01
--7.5383226857765817e-01
--2.7257529468600342e+01
-1.5261108063121787e+01
--7.5764364806164208e-01
--2.7336425671829836e+01
--1.0900101741655876e+01
--8.7412115137384272e-01
--3.1397131329266209e+01
--9.5793434068428596e+00
--1.1269988665752548e+00
--3.1051347076933272e+01
--9.9648675735866963e+00
--1.2630184113594904e+00
--3.0413328335954539e+01
-3.0972133020226726e+00
--9.0288464545070313e-01
--2.0757245618950304e+01
--1.3871085445599127e+00
--1.0312842670556168e+00
--2.1115455170935522e+01
--1.0000370329503216e+01
--1.7320588451501977e+00
--2.9847734559385390e+01
--1.1395901508139226e+00
--1.1916136889879168e+00
--2.0930046467686868e+01
--1.0357552598659847e+01
--1.8433319654981786e+00
--2.9978637295368600e+01
-1.5253443684654579e+01
--1.8240060132149769e+00
--2.7040350683136182e+01
-1.7245202682629774e+01
--2.1197266097373801e+00
--3.1095303412969567e+01
-2.5092680975147998e+00
--1.4120573484144814e+00
--2.1860120538909946e+01
-1.5906154237385509e+01
--1.9837997092882620e+00
--2.5204386316599518e+01
--1.3154644789793113e+00
--1.6273579815943326e+00
--2.1259076506236486e+01
--1.9681912240335051e+00
--1.7632843846262003e+00
--2.1052277723577749e+01
--9.5863229461646053e+00
--2.5871119390822974e+00
--2.6923449223184569e+01
-1.6028061940452865e+00
--1.9431551240046334e+00
--2.1154633797726181e+01
-1.6028061940452865e+00
--1.9431551240046334e+00
--2.1154633797726181e+01
-1.0877309691551797e+01
--2.9196991731468476e+00
--2.9263651429010917e+01
-1.6224376353323532e+01
--3.2977500732909366e+00
--2.4951518875820234e+01
-2.0579809795218793e+00
--2.7763967619216414e+00
--2.1056689386407765e+01
-2.5851911106725911e+00
--2.9306322667149871e+00
--2.1176359436694138e+01
-4.7612718358017663e+00
--3.3187489973308821e+00
--2.1376619846506955e+01
--1.7043579176977901e+00
--3.9532691909003348e+00
--2.2441958721586449e+01
-5.0225493287467513e+00
--4.0643926558970538e+00
--2.3082194785548374e+01
-5.5020632688810833e+00
--4.5269006837347625e+00
--2.2864900360464219e+01
--8.1464902860875565e-01
--4.3142732518728177e+00
--2.2099471068566928e+01
--1.0801131497547456e+00
--5.0174198816261999e+00
--2.3021157397636550e+01
-1.3553557305665516e+01
--6.0481692321413529e+00
--2.5317783482365954e+01
-1.5252275304010713e+01
--6.6206944203581077e+00
--2.6991631309509231e+01
-2.8369986881172653e+00
--5.2809988444009068e+00
--2.1919462290733975e+01
-8.4356854106514145e+00
--7.0341422744172775e+00
--2.3775621453283549e+01
-7.3200839130778759e+00
--7.2508852188850543e+00
--2.2787094341888018e+01
-7.7896102190631469e+00
--7.2145155684839741e+00
--2.2998306217253667e+01
-9.1194467187409280e+00
--7.2722185613725570e+00
--2.2863401959569867e+01
-9.3329053633956054e+00
--7.3077085690672563e+00
--2.2773155468181127e+01
-1.6631662307370270e+01
--8.5649666949058467e+00
--2.6087096867771567e+01
-1.6631662307370270e+01
--8.5649666949058467e+00
--2.6087096867771567e+01
-1.4248236993708268e+01
--8.3228500973185753e+00
--2.4849062999146462e+01
--3.5462399468604167e+00
--7.0676385502357064e+00
--2.1504416837585708e+01
--2.8293879404532425e+00
--7.5823318506637811e+00
--2.2445200144139552e+01
--2.8867618789095042e+00
--7.9132336062949573e+00
--2.1683129606901506e+01
-1.2160158644735796e+01
--8.5739497152895616e+00
--2.1499614162084729e+01
--2.5035459059449539e-01
--8.1862328661731798e+00
--2.0741867156634861e+01
--2.5035459059449539e-01
--8.1862328661731798e+00
--2.0741867156634861e+01
-6.2414375316107451e+00
--8.3023124326875823e+00
--2.0719852632703589e+01
-1.2673989849804878e+01
--9.5330180080596207e+00
--2.3147246647749427e+01
-1.3603502859587554e+01
-1.0067730817467609e+01
--2.3375809826858909e+01
-1.4068488885131453e+01
-9.3651647769923159e+00
--2.3244781304637510e+01
-1.3866638171189321e+01
-1.1644408032421026e+01
--3.2284634603218116e+01
--1.5688939983911883e+01
-1.3141232867176171e+01
--3.9243487220618945e+01
-1.2267020621329808e+01
-9.0877680141341060e+00
--2.6275688023809511e+01
--1.6932296234411520e+01
-1.2328777744645679e+01
--3.7223222794472818e+01
-1.3823052754345696e+01
-1.0659916468562354e+01
--3.3004993358222244e+01
-1.4160889922026444e+01
-8.0323396831463576e+00
--2.3492638812465138e+01
--1.5885206887137578e+01
-1.2566806744547302e+01
--3.9715526851023171e+01
-1.2361656179246641e+01
-8.3856804951121724e+00
--2.5820917611794549e+01
-1.2325706903473844e+01
-8.4797570175626493e+00
--2.5868274205536999e+01
--1.3022910724813331e+01
-1.0564068561378257e+01
--3.7192264691698533e+01
-1.2252545726802300e+01
-7.3575091240405595e+00
--2.8598906065675521e+01
-1.4184946148193298e+01
-6.1012254833427635e+00
--2.3949421253711030e+01
-1.3193793767417024e+01
-6.4227198264545793e+00
--2.6093094379004864e+01
-1.2896450136595099e+01
-6.1559798212091543e+00
--2.6601152774932476e+01
-1.3365323847439067e+01
-5.6779750691920743e+00
--2.6094633485355683e+01
--2.7249619503338001e+00
-8.3128659504882219e+00
--4.3758677564765101e+01
--1.7472257893443917e+01
-8.0535493538944873e+00
--4.2272706496546434e+01
-1.3000830781264400e+01
-5.3326002910967771e+00
--2.7315155607250070e+01
-1.3098619413567015e+01
-5.3778907281482198e+00
--2.7503562312081755e+01
-1.3529550717950309e+01
-6.3261717835774869e+00
--3.3607551867287178e+01
-1.4384184375665155e+01
-4.5206304492595031e+00
--2.4810507042177605e+01
--5.4702009752102043e+00
-6.1376926972925316e+00
--4.0539205420180352e+01
-1.7103116543097290e+01
-4.7941796606997125e+00
--2.9992453744888511e+01
--7.6300700042760807e+00
-5.7633887157933161e+00
--3.9955932362100995e+01
-1.3026700125248128e+01
-4.2598007057621778e+00
--2.8485014232761678e+01
-1.6588957165711061e+01
-4.4312756893471930e+00
--2.9526545590084840e+01
-1.4623338935993244e+01
-3.2468271046298502e+00
--2.3749982331120950e+01
-1.4253754347675764e+01
-2.7040541872553199e+00
--2.5745004321690427e+01
-3.2622368562705883e-01
-1.8449433757725606e+00
--2.0981314820981158e+01
-1.4622611901040111e+01
-1.7983600712982848e+00
--3.3266629069567635e+01
--2.9182890422142027e-01
-1.1267281460638130e+00
--2.1123191279694808e+01
-1.4881272041571428e+01
-1.1706046597718420e+00
--2.4767390662875041e+01
--2.1583981946173047e+01
-1.5288346141618787e+00
--3.4584715525750987e+01
-1.3934097707499598e+01
-1.1786407822113045e+00
--2.8691547655601923e+01
--8.5277233898190445e+00
-7.5776100699984861e-01
--3.2821495788320995e+01
--1.5897158912321678e+00
-3.6641187462872116e-01
--2.2235207613184549e+01
--1.5897158912321678e+00
-3.6641187462872116e-01
--2.2235207613184549e+01
--9.0244109607238663e+00
-2.4530819430208303e-01
--3.2633382605735406e+01
-4.6686062922784579e+00
--6.8418870018288835e-01
--2.3442804396236536e+01
--9.3066388054503619e+00
--1.3576975045077573e+00
--2.9486394604558935e+01
--2.9033042939911615e+00
--1.0772218667457307e+00
--2.1768382066619328e+01
--9.3579370631960863e+00
--1.8927060487038894e+00
--2.7747131773344936e+01
-4.9744682232734938e+00
--2.5190097100785622e+00
--2.0497158163381012e+01
-2.9508340478698063e+00
--2.8188691296437933e+00
--1.9769835253733557e+01
-1.3236316505556973e+00
--2.8784515047163834e+00
--1.9783481886006221e+01
--6.2905998688261660e+00
--4.1490141022185636e+00
--2.6282705811930761e+01
--5.6150182399410997e-01
--3.3417072438943487e+00
--2.1076104771190920e+01
--1.1045765551766959e-01
--3.7565435449133302e+00
--2.1139117108653416e+01
--1.2491749526947254e-01
--3.7436311792417882e+00
--2.0980746905878149e+01
-5.2753437974067339e+00
--4.5365868066569188e+00
--2.3089063924669176e+01
--1.3327328614928102e+00
--4.9163483521334417e+00
--2.2551881212378010e+01
-1.5637122875280330e+01
--6.3293511988444529e+00
--2.7440015953595790e+01
--1.0242598437912556e+00
--5.2825741377723467e+00
--2.2309834517822686e+01
-1.7485535658759680e+01
--7.8661089536123887e+00
--2.7202716713371696e+01
--3.0344777537990297e+00
--7.6261233123553804e+00
--2.2235310769688382e+01
--1.0068147231501634e+00
--8.0929116082646892e+00
--2.0277839890100459e+01
--1.0068147231501634e+00
--8.0929116082646892e+00
--2.0277839890100459e+01
--2.0594097090320651e+00
--8.1745498251626394e+00
--2.0138055361163474e+01
--4.6527730253644597e+00
-1.8917747015986201e+01
--4.1891553765880914e+01
--4.6527730253644597e+00
-1.8917747015986201e+01
--4.1891553765880914e+01
-5.3833525483176077e+00
-2.1537578936244088e+01
--4.9577657285639155e+01
-1.8221075296385642e+01
-2.4775964861849431e+01
--5.6936521982840659e+01
-1.2047527056574371e+01
-1.1109343734788860e+01
--2.4928791442803139e+01
-4.3988411045328935e+00
-1.9711682150997142e+01
--4.9266141605210649e+01
-3.2574823417236032e+00
-1.9571295837503701e+01
--4.9256102409648165e+01
-1.3487415552408651e+01
-9.9473509615737594e+00
--2.3709290692828500e+01
-1.4455387770731456e+01
-8.2098215122955924e+00
--2.3326348775362465e+01
-1.3074055044349810e+01
-1.0673535413423895e+01
--3.4263269493855901e+01
-1.3359591332604799e+01
-9.6899976583188323e+00
--3.5552562690487633e+01
-1.4517689536897022e+01
-2.4188540388235800e+00
--2.5042549160657625e+01
-1.3797874579293381e+01
-2.4744148721374883e+00
--2.8955379588052221e+01
-1.5101218092537930e+01
-1.6940248390977717e+00
--2.4072088321360717e+01
--1.0071543208058211e+00
-1.3816008354763287e+00
--2.1800316927368499e+01
--1.5645176311286135e+00
-1.1377001897803334e+00
--2.2508704612629970e+01
--1.1229213808154730e+00
-6.2290276714779369e-01
--2.1767112904571245e+01
-4.7679803801660254e+00
-7.6119430439177363e-02
--2.3058083334898136e+01
-3.0332222118798144e+00
--7.0873792527292301e-01
--2.0997392984081582e+01
--1.2188086646291090e+00
--2.8977725738194415e+00
--2.0436113319438885e+01
-4.1192415520662209e+00
--3.7958197785976138e+00
--2.1367089941857923e+01
-1.1900737750942238e+01
--4.7858843406052447e+00
--2.6576742911506528e+01
-1.3501418491180894e+00
--6.2409646879586598e+00
--2.2797847165941096e+01
-1.1385141738329398e+01
--7.0898186097077547e+00
--2.3541520218278176e+01
--2.1010653176558973e+00
--7.6995018771908734e+00
--2.0783307174105065e+01
-1.4932848883540226e+01
-2.4765796912624481e+01
--5.9325519126867334e+01
-5.7160511204824465e+00
-2.0295775673076179e+01
--4.9961256069706621e+01
-1.3984742818301561e+01
-9.6447631800216591e+00
--2.3792744641365758e+01
-1.3522219982370045e+01
-8.2876354305645830e+00
--2.5174260908463307e+01
--8.0585486987696218e+00
-1.2007464328922371e+01
--4.7554239419066320e+01
-1.3775943569963848e+01
-2.9228174412918739e+00
--2.8550763146505005e+01
-1.4721662035423217e+01
-1.5726067281556522e+00
--2.4811393561417070e+01
--1.8844961574576085e-02
-4.4139112916021800e-01
--2.1210724042384058e+01
--1.0630938470239291e+00
--2.3413233496157098e+00
--2.0337563231713933e+01
-9.3450738566487257e-01
--2.9395857677786519e+00
--2.0089469790614860e+01
--9.1507036209762160e-01
--3.0965524727509872e+00
--2.0450282448081616e+01
-6.4979439857797006e-01
--3.1398421473911964e+00
--1.9661650391133058e+01
-3.3443429806783526e-01
--3.9503338123388958e+00
--2.1024367366758732e+01
-2.8477274681243336e-01
--5.0356321997974378e+00
--2.2039388355250466e+01
-8.5835060446255240e-01
--5.3815684010580984e+00
--2.2158069941236207e+01
-1.2025909933997638e+00
--5.8402544028422829e+00
--2.2230754280351089e+01
--4.1336944258993036e+00
--7.0556393645366304e+00
--2.1405226940825237e+01
-1.4237788898517154e+00
-1.9633464050316125e+01
--4.9802694657710191e+01
-1.4016776936921187e+00
-1.9048112760748211e+01
--4.8423291437991097e+01
-1.4095582646283917e+01
-2.9536356383531697e+00
--2.5853650156201631e+01
-1.4883964899501136e+01
-2.9197466742043736e+00
--2.4696279342317691e+01
-1.5683145949951774e+01
-2.8713057562880255e+00
--3.0397954244454329e+01
-1.4658601263556564e+01
-2.0683410727338867e+00
--2.4419656359925238e+01
-1.4571745655207312e+01
-1.9980896830352795e+00
--2.4169727764325454e+01
-3.0715669264786789e+00
-2.2438594005025181e-01
--2.0646530869262982e+01
--1.7357894620872245e+00
--1.4786442980540613e+00
--2.1159293140419461e+01
-7.1094831524283822e-02
--2.2879452909579667e+00
--2.0800955284990842e+01
-6.3481058758650741e+00
-2.1601911031216044e+01
--4.9743471958029950e+01
-2.4167568134963933e+00
-2.0146874338635808e+01
--4.7976015473385310e+01
-2.4943425656215785e+00
-2.0489135031004480e+01
--4.8857889125755172e+01
-4.1192844151313013e+00
-2.1544468486796138e+01
--5.3335266898279073e+01
-4.0422655029631054e+00
-2.1070534601414042e+01
--5.2297599454613952e+01
-1.4126516474408255e+01
-2.4365476154811837e+01
--6.3019072658480198e+01
-1.3422108147712942e+01
-1.0194114170852835e+01
--2.4511500647794236e+01
-1.4355984652571488e+01
-1.8346715104490905e+00
--2.6127611075649135e+01
-3.1437680594180692e+00
--3.1056045469170013e-01
--2.0691643570349949e+01
-1.1517856204545531e+00
--1.4950254522336435e+00
--2.1294895951125469e+01
--7.6231809729151569e+00
-1.5107763069935624e+01
--4.2705872899318038e+01
--7.5295845759910174e+00
-1.4979205636053942e+01
--4.2648818132466737e+01
-1.4330822811684591e+01
-4.2110256078738741e+00
--2.4388200456764366e+01
-1.6637055476834064e+01
-2.6889621903322900e+00
--3.0363826055478722e+01
--4.0536093972088887e+00
-1.8467079884593137e+01
--4.2882334911283536e+01
-3.0191893467860891e+00
-2.1849964863278228e+01
--4.6298243196702799e+01
-6.7321832172814808e+00
-2.3402463079499995e+01
--4.7946034701112445e+01
--1.2304639798099581e+01
-1.4370406046041122e+01
--3.8335221011826697e+01
--1.2199587958520731e+01
-1.4244063832160691e+01
--3.8122670882415918e+01
--1.1208668302249299e+01
-1.5206335708170016e+01
--3.9096701344253901e+01
-6.7295346638366338e+00
-2.3801320677152951e+01
--4.9005201110121881e+01
-3.2869008453613295e+00
-2.1740005776046239e+01
--4.6240885706942365e+01
--9.2743571262972626e+00
-1.5630900767673667e+01
--3.9920977697267041e+01
--9.1685109547044981e+00
-1.5391281836245973e+01
--3.9148095822451083e+01
--9.0761307062869196e+00
-1.5232510170960687e+01
--3.9047941910346843e+01
-6.1308486784985750e+00
-2.3010564991352609e+01
--4.7775446058027292e+01
-6.7457220792539987e+00
-2.4512036350136789e+01
--5.1060565224528851e+01
-6.2637184154894907e+00
-2.3161227538304949e+01
--4.7927789860707655e+01
--4.0656445998231430e+00
-1.8346080240918344e+01
--4.3124180663059860e+01
--4.1273687999707640e+00
-1.8404184866240705e+01
--4.3060159813221119e+01
--4.0509852502408448e+00
-1.8244731339191596e+01
--4.2976340280043445e+01
-6.3099422053720424e+00
-2.3232491095193282e+01
--4.8324617621054109e+01
-6.3301060513572098e+00
-2.3184724373018980e+01
--4.8315696032388409e+01
--1.2701731150205971e+01
-1.4334360154413382e+01
--3.8629215192514302e+01
--1.1450843167632401e+01
-1.3043718515475870e+01
--3.5626518642894240e+01
-9.8933243755876976e+00
-2.4631876070029442e+01
--5.0423668148259139e+01
--1.4892706563096151e+01
-1.3235511225687025e+01
--3.7671927514176204e+01
--1.0766384184215269e+01
-1.4930013701059570e+01
--4.0053101196272571e+01
--1.0766384184215269e+01
-1.4930013701059570e+01
--4.0053101196272571e+01
--1.2659968001390446e+01
-1.3900474625528213e+01
--3.8558300022469545e+01
--5.1233236002026556e+00
-1.7258796432869406e+01
--4.2880025272657420e+01
--1.5713736033801956e+01
-1.3232033580922538e+01
--3.8425844284960192e+01
--1.3472846507390820e+01
-1.1282353482507871e+01
--3.3021548117253303e+01
--1.5739049144855779e+01
-1.3230429098315717e+01
--3.9190043918743783e+01
-7.9338048314973939e+00
-2.3889525516899045e+01
--5.0649384838250782e+01
--1.2551224941340692e+01
-1.3781075873018706e+01
--3.8782591658582454e+01
-9.1213543322701618e+00
-2.3771832474036707e+01
--5.0352917526461596e+01
-1.2098474487631157e+00
-2.0230843505203666e+01
--4.7001952466832414e+01
--6.3758944110978559e+00
-1.5808934990651814e+01
--4.1485911497377479e+01
-9.7822668836407676e+00
-2.4653735771382713e+01
--5.2698087596204914e+01
-7.6716861610112383e+00
-2.2837566343186811e+01
--4.9723849839127951e+01
-9.8518867843850513e-02
-1.9347496538546025e+01
--4.6404693446597129e+01
--1.3288672158399690e+01
-1.3365111617981693e+01
--3.9550123631246933e+01
--1.2880563796225054e+01
-1.3113526859041968e+01
--3.8564853178574687e+01
--1.6192316111122661e+01
-1.2397115952265642e+01
--3.8548857416783761e+01
--1.0530188931004130e+01
-1.3041720262573655e+01
--3.7653314077676335e+01
-1.1789358188250849e+00
-2.0425947337424844e+01
--4.8264263681392336e+01
-9.7519598356839197e+00
-2.3766013559494588e+01
--5.1301095776540670e+01
-8.2421602213459833e-01
-1.9659547017285263e+01
--4.6396935973585911e+01
--1.1325036961555478e+01
-1.3898000654637530e+01
--3.9848912596880318e+01
--2.3507347985843112e+00
-1.7764090666955759e+01
--4.4897443764216739e+01
--9.1792628656913120e+00
-1.5028065946261272e+01
--4.1675563972562195e+01
--5.7491788344929473e+00
-1.6421514885554796e+01
--4.3170861080271393e+01
--1.4819958165929979e+01
-1.2731881663646220e+01
--3.9493598819710080e+01
--2.8160276975747496e+00
-1.7731402967288219e+01
--4.4960947991560097e+01
--1.4924320664826528e+01
-1.2396736751944596e+01
--3.8677040798783970e+01
--1.5397973761986032e+00
-1.8143339949362755e+01
--4.5778013116408665e+01
--2.6691901163473024e+00
-1.7802259549504871e+01
--4.5229089977466337e+01
--1.3407410443723117e+01
-1.0973959020805921e+01
--3.4979487909462435e+01
--1.0987150260406466e+01
-1.2447338268905634e+01
--3.6998052936575959e+01
--2.0022765662986215e+00
-1.7886318466384083e+01
--4.5555072864685272e+01
-1.4107454621270739e+01
-2.6288003485070252e+01
--5.6063326852326213e+01
--1.4275026630698331e+01
-1.0390650525480771e+01
--3.3749791142665444e+01
--8.9090302584929582e+00
-1.4888399010512193e+01
--4.2101874302138860e+01
--1.5744084880840776e+00
-1.8232088035955545e+01
--4.5799887293243430e+01
--1.2629846304911005e+01
-1.1373447190252442e+01
--3.5473643568063864e+01
--7.7763546453171415e+00
-1.4510241726395034e+01
--4.1074192019007185e+01
--8.8287226570978152e+00
-1.4816509202522710e+01
--4.2217271659118758e+01
-1.4746432981624726e+00
-1.9516524802789075e+01
--4.7887195464796861e+01
--1.0995384225339340e+01
-1.2487585529948813e+01
--3.8093905558073828e+01
--1.1588537296088894e+01
-1.3226092289595016e+01
--4.0315146279188795e+01
--2.8408373133152263e+00
-1.7535574012660387e+01
--4.5737133750766269e+01
--9.9521961455989185e+00
-1.4357613288162112e+01
--4.1689988203358318e+01
--7.9854837919282762e+00
-1.4774994644741160e+01
--4.2030660353070886e+01
--3.3355424445974382e+00
-1.7350275676464939e+01
--4.5281235631383637e+01
-3.5200263048868713e-01
-1.8904604972054624e+01
--4.7773281597557130e+01
--1.6791538330196134e+00
-1.7947681386206540e+01
--4.6129381369352089e+01
--8.9008735870705920e+00
-1.4431884331619662e+01
--4.2084311942429899e+01
-1.5230832259702556e+00
-1.9543057722044903e+01
--4.8117463255067783e+01
--8.3951780504258942e+00
-1.4664444629395513e+01
--4.2423074753571235e+01
--8.2438900795001135e+00
-1.4921909591151701e+01
--4.2903769050496336e+01
--1.5240396545834228e+01
-1.2018695037089348e+01
--3.9628418952830238e+01
-8.1634217123706598e+00
-2.2185364575591404e+01
--5.1057582727638753e+01
-1.6173880529732546e+01
-2.5877121172130245e+01
--5.5172931485137561e+01
--3.0679774909020425e+00
-1.7288939961543882e+01
--4.5584764343326981e+01
--1.3125728322645621e+01
-1.1662017389480440e+01
--3.8058795750649104e+01
--3.7660474488207489e+00
-1.6718773594974309e+01
--4.5227872630077073e+01
-8.7398282042057271e+00
-2.2369440197242355e+01
--5.1377971273181231e+01
--1.5440463748314968e+01
-1.1877922245817842e+01
--3.9595909524957968e+01
-1.8150630274876136e+01
-2.8618958556234070e+01
--6.1612221710480696e+01
--1.3590506817186398e+01
-1.1553664403752563e+01
--3.7936471662447182e+01
--1.7568115799100383e+00
-1.7773491388267225e+01
--4.6307703415469817e+01
-3.0242311150299903e+00
-2.0107551556746923e+01
--4.9394223817183658e+01
--1.3735028020324666e+01
-1.2560393054268651e+01
--4.0535829574893803e+01
--1.3735028020324666e+01
-1.2560393054268651e+01
--4.0535829574893803e+01
--2.2596507503551722e-01
-1.8488857168409300e+01
--4.7593082169894586e+01
--5.9813506406392705e+00
-1.5489274612792753e+01
--4.3786825338944382e+01
-8.1130718950536576e+00
-2.2015127409164226e+01
--5.1519735119148258e+01
-1.4467374341049086e+00
-1.9098489883576491e+01
--4.8006401592408487e+01
-1.1229159268358643e+01
-2.3308387150535602e+01
--5.2515786249515060e+01
-1.2441653966757436e+01
-2.4138410125316252e+01
--5.4185526385014299e+01
--9.3868553471289022e+00
-1.3182887442464052e+01
--3.9950829984880457e+01
--1.0968705802184765e+01
-1.3434815365086070e+01
--4.1878216789848601e+01
-1.2780352459101330e+01
-2.3926851144349882e+01
--5.3496456472660306e+01
-1.2890732606216611e+01
-2.4025827151008770e+01
--5.3836087118841903e+01
-7.0455362508280617e+00
-2.2020998948535375e+01
--5.2662667836487785e+01
-1.0890689533709054e+01
-2.4176066857629525e+01
--5.5771537049380420e+01
-1.4453851680338992e+01
-2.4391487788970210e+01
--5.3629477950137158e+01
-1.1509841156991935e-01
-1.8290839232267942e+01
--4.8116045216010392e+01
--1.6237568967501850e-01
-1.8339148828086675e+01
--4.7751791082846587e+01
-1.7232149196172148e+00
-1.9010619559314172e+01
--4.8347441987787661e+01
-1.1799436643423034e+01
-2.3800639415840177e+01
--5.4795597369324021e+01
--6.8995341633727199e+00
-1.4529369380489358e+01
--4.2839893392351428e+01
--8.6541608948020876e+00
-1.4232262017544391e+01
--4.2914563509725838e+01
--7.2520070393493610e+00
-1.4740399877744984e+01
--4.3772135236571003e+01
--1.0198161308274461e+01
-1.3483544113987589e+01
--4.2140340135261887e+01
--1.0316172329672476e+01
-1.3409142169754178e+01
--4.2097256720490080e+01
-7.8323135113862516e+00
-2.2302797180540590e+01
--5.3622464920759434e+01
-1.7191920039766735e+01
-2.5642717048759717e+01
--5.6105618486983204e+01
-6.1431249527089733e+00
-2.1422686487703999e+01
--5.2447950607554198e+01
--6.6088393785030100e+00
-1.5100557286511496e+01
--4.4270491733382379e+01
--8.8873151885251680e+00
-1.3231537839590896e+01
--4.1292662489299794e+01
--3.9743720723771603e-01
-1.7859965625299939e+01
--4.7664055451294665e+01
--7.7719141740750279e+00
-1.3844907483187054e+01
--4.2024444678000208e+01
--7.7448490063058548e+00
-1.3781822852118051e+01
--4.2106256246213206e+01
-2.7212811751500112e+00
-1.9381968917446287e+01
--5.0309695686163039e+01
-2.6280317905946107e+00
-1.9025794569352147e+01
--4.9224352919686943e+01
--1.1817566194548165e+01
-1.1143252722021057e+01
--3.7644948457884936e+01
-1.7463018091151717e+01
-2.5531824732780347e+01
--5.6558139108552609e+01
--1.0030216753063071e+01
-1.3417198184583127e+01
--4.2691583396045353e+01
--8.9281739217192850e+00
-1.3694933918234838e+01
--4.3022679847563708e+01
--9.2942818542458872e-01
-1.7258922389778647e+01
--4.7709061409077748e+01
--8.8374349525347178e+00
-1.3837286471297359e+01
--4.3317058390301433e+01
--1.0091813407030166e+01
-1.3184854865638663e+01
--4.2664847428564258e+01
--8.2912370660692947e+00
-1.3989251597253915e+01
--4.3677703994590004e+01
--7.8990474996361488e+00
-1.3456732379669097e+01
--4.2113732644268659e+01
--6.3271356083281178e+00
-1.4727557523713282e+01
--4.4715888931471106e+01
-1.5087149357020376e+01
-2.5825656377287977e+01
--6.0146129572246046e+01
--8.3162873065222733e+00
-1.4096241925805385e+01
--4.4138494828554698e+01
--8.1171395179461836e+00
-1.4040821659516880e+01
--4.4056115939542934e+01
--1.2580562108006902e+01
-1.1413493638313707e+01
--4.0077303975922611e+01
--1.6662322587566695e+01
-1.0606774137289566e+01
--4.0708561383595885e+01
--1.6584795974694188e+01
-1.0529183342254933e+01
--4.0375057964226748e+01
--1.3838051732926234e+01
-9.7325071333275766e+00
--3.6662446700021775e+01
--1.8633269775103258e+00
-1.6094873299845094e+01
--4.6124218992898484e+01
--1.4582442372866735e+01
-9.3510961624563311e+00
--3.6013707429370463e+01
--8.7424312913713322e+00
-1.3282445821887960e+01
--4.3789029038940058e+01
--7.2473297289565979e+00
-1.4008761763067994e+01
--4.4766971137826623e+01
--8.1665205479950487e+00
-1.3200787898140826e+01
--4.3017048915368498e+01
--3.2894048178194990e-01
-1.7055316157496488e+01
--4.9128988880251867e+01
--6.5540091439199140e+00
-1.4102178167402283e+01
--4.4904815854617233e+01
--9.5922871740307976e+00
-1.2835440156611391e+01
--4.3750107793045714e+01
--6.9511137390837625e+00
-1.4186109348985774e+01
--4.5784276284938315e+01
-7.5642151849622574e-01
-1.7376695134441135e+01
--4.9523543410398318e+01
-5.7690587179946036e+00
-1.9579127954725163e+01
--5.2414651119065937e+01
--9.6612613592547341e+00
-1.2848536557971910e+01
--4.4118143963001188e+01
-2.1202786420104104e+01
-2.8461767069134424e+01
--6.7185928189225393e+01
-5.5675545052677009e+00
-1.9618162609551259e+01
--5.3569540723589853e+01
-5.7399540013856019e+00
-1.9453288139381112e+01
--5.2533218544375494e+01
--1.1980520243480973e+01
-1.0862014661395129e+01
--4.0332037971314421e+01
--1.1980520243480973e+01
-1.0862014661395129e+01
--4.0332037971314421e+01
-4.4093875409756740e-02
-1.6818152090103670e+01
--4.9443101803099175e+01
--4.0716780244619715e+00
-1.5176055504734258e+01
--4.7826991493054095e+01
-7.8431082195582658e+00
-2.0556920940664565e+01
--5.4309537781508965e+01
-3.6428860018875470e-01
-1.7136410299575754e+01
--5.0452765009785175e+01
--9.6215578627774079e+00
-1.2368478345164277e+01
--4.4020406765272710e+01
-1.0136939068327184e+01
-2.2487697260951698e+01
--5.8866150609624924e+01
-9.6758139004025026e+00
-2.1567911871264126e+01
--5.6539762438451127e+01
-7.8047960365038298e+00
-2.0180844128649444e+01
--5.3891160294806404e+01
--1.0135285829043811e+01
-1.2398719661113560e+01
--4.4482130288475773e+01
-7.9180933490066998e+00
-2.0199205625785112e+01
--5.4315285681990403e+01
-2.2637507052415150e-02
-1.6583785766723462e+01
--4.9999223448712435e+01
--1.6693980535911717e+01
-9.6860355247870000e+00
--4.1826493412991908e+01
-5.4429863120577622e+00
-1.8872364522521295e+01
--5.2985483339819844e+01
-1.1685392556002436e+00
-1.7303122908310893e+01
--5.1266338722549797e+01
--4.0181822095053565e+00
-1.5004662819423709e+01
--4.8701320137892054e+01
--1.2464709969906101e+01
-1.0985471799645852e+01
--4.3199459568111443e+01
--6.7862528965114048e+00
-1.3331262795413691e+01
--4.6170740021864034e+01
--1.1685602888629841e+01
-1.0825227070764280e+01
--4.1883585546305987e+01
--9.6618375867031840e+00
-1.2172344600914011e+01
--4.4620696170900985e+01
-1.0242644727591561e+01
-2.1780924363654197e+01
--5.8309082861827818e+01
--1.1233940892732033e+01
-1.1465886435403171e+01
--4.3937824551087829e+01
--1.3610618764671170e+01
-9.6878197966381645e+00
--4.0413399982187904e+01
-9.7247227660559989e+00
-2.0685475968245669e+01
--5.5967073515970135e+01
-1.4311088837119119e+01
-2.3536627902369506e+01
--6.0399441612253909e+01
-1.0061735873980396e+01
-2.0756034524707292e+01
--5.5929136689473033e+01
-1.0061735873980396e+01
-2.0756034524707292e+01
--5.5929136689473033e+01
-1.0341288870406512e+01
-2.2473164581230233e+01
--6.0972877809211390e+01
--2.6943870335067965e-01
-1.6264478271657257e+01
--5.0659839530463096e+01
-1.6417650177659542e+01
-2.4854644087349257e+01
--6.4019964092426449e+01
-1.5381496037097648e+01
-2.3331584965732603e+01
--5.9843145306962960e+01
--1.1556145179157904e+00
-1.5576729156017503e+01
--5.0087501123001850e+01
-9.5820250450267590e+00
-2.0220276778065642e+01
--5.5628138969022935e+01
-9.6451482293914736e+00
-2.0377427379188198e+01
--5.6013158397546775e+01
-9.9435947314530644e+00
-2.0496274759626981e+01
--5.6167178030085772e+01
-1.0130026399007242e+01
-2.0539329685334678e+01
--5.6168116487494800e+01
-1.6370907671772439e+01
-2.4708684129277120e+01
--6.4193410297500904e+01
-1.6137529221207924e+01
-2.4128107117587209e+01
--6.2190242118103974e+01
-1.8229253635249520e+01
-2.5705191792935796e+01
--6.6037619906997790e+01
-4.6536305491294430e+00
-1.7986198555644748e+01
--5.3179928161417223e+01
-9.5748087135985127e+00
-2.0246375390397798e+01
--5.5721977436214829e+01
--5.3110233224694010e+00
-1.3655249125495075e+01
--4.7736606276038366e+01
-1.9783599821239555e+01
-2.6478207096026310e+01
--6.7484892110027715e+01
--1.2704453525262050e+01
-1.0488083514472246e+01
--4.3833811887064329e+01
--5.8517155195192210e+00
-1.3570819162563312e+01
--4.7920328396535645e+01
-1.5509037916679240e+01
-2.3996231234236149e+01
--6.3716886251606674e+01
-4.4189811365658249e+00
-1.7479096012894463e+01
--5.2865921674558997e+01
-4.3374200441663993e+00
-1.7673287463107883e+01
--5.2977330587313752e+01
-1.0274714992918017e+01
-2.0405000763337316e+01
--5.6585228887029757e+01
-9.9144837681538593e+00
-2.0347071230103676e+01
--5.8010356773486102e+01
--3.8873396672425335e+00
-1.3966270861062524e+01
--4.9144150102935519e+01
--6.4589984680794510e+00
-1.2485369799543466e+01
--4.7093327215208085e+01
-1.7609694378558178e+01
-2.2959573689485545e+01
--6.0366676421032196e+01
--5.9783890226866259e+00
-1.3042290014440761e+01
--4.8306811480843265e+01
-1.6164871973857771e+01
-2.2262579107337050e+01
--5.9820053322590269e+01
-1.6344757765758281e+01
-2.2428607039962937e+01
--6.0440800382889570e+01
-1.5497591920301641e+01
-2.2864444922616435e+01
--6.2304598843804094e+01
--9.8811162601874436e+00
-1.0217251943471906e+01
--4.3049045713310555e+01
--9.8811162601874436e+00
-1.0217251943471906e+01
--4.3049045713310555e+01
-9.7544460440839220e+00
-1.9565459002589762e+01
--5.7024227264980532e+01
-1.2381231145478644e+01
-2.0494013221511977e+01
--5.7954307019387258e+01
-1.3146214217116256e+01
-2.1413454781829437e+01
--6.1109227123590337e+01
-1.5264681070087406e+01
-2.1615698154461199e+01
--5.8995036698142556e+01
-5.8209142358936106e+00
-1.8213472599129581e+01
--5.7022840232654112e+01
--8.6381643724433381e+00
-1.1632017454816518e+01
--4.7460544198256393e+01
-6.1874339449660454e+00
-1.7866295950880179e+01
--5.6287517184276794e+01
--8.4462644928596973e+00
-1.1581655592581612e+01
--4.7786628291998618e+01
-1.1029517950066374e+01
-1.9720302373122486e+01
--5.8134121001695121e+01
-1.0303691596513174e+01
-1.9628847475862461e+01
--5.9441841308380738e+01
-9.3463567801872731e+00
-1.9153958497544551e+01
--5.8744551864949536e+01
-1.5572764814919275e+01
-2.2930451840950440e+01
--6.5551108370522357e+01
--1.3433699699486157e+01
-9.1369250401047371e+00
--4.5065832719544680e+01
-1.3916540021480749e+01
-2.0735859916870499e+01
--6.1225779962690659e+01
-1.3513904728284373e+01
-1.3945762902986830e+01
--3.7360815579161361e+01
--1.9190297987088019e+01
-5.8651546536117065e+00
--4.1793560738086740e+01
-1.3250325823280184e+01
-1.3021837163792990e+01
--3.5879436550500856e+01
-1.3250325823280184e+01
-1.3021837163792990e+01
--3.5879436550500856e+01
--1.5995490868088085e+01
-4.9185681013377085e+00
--3.5793859572322802e+01
--1.3558160153931178e+01
-7.2243149264237587e+00
--4.2339995537694101e+01
--1.2188927894891853e+01
-6.8152367584664235e+00
--4.0395310055609635e+01
-1.3715590139326164e+01
-1.2725964506039862e+01
--3.7092049754866181e+01
-1.3569569188913858e+01
-1.2489705834031430e+01
--3.6156528533847336e+01
-1.3569569188913858e+01
-1.2489705834031430e+01
--3.6156528533847336e+01
-5.5223272114494213e+00
-1.3629403337995083e+01
--5.0447204311074849e+01
-3.9620701601221011e+00
-1.3089196142924665e+01
--5.0251541621885167e+01
-6.0083436658023643e+00
-1.3197213740332568e+01
--5.0096229677402881e+01
-1.3366277541009485e+01
-1.1679408161453940e+01
--3.5926951520751793e+01
-4.1865334792970055e+00
-1.1315651019383839e+01
--4.8227395509279589e+01
-6.9940999195505755e+00
-1.2310173426426092e+01
--4.9754179463395360e+01
-4.8049261498986295e+00
-1.1083946125684921e+01
--4.7770495041265193e+01
-3.5900483879625660e+00
-1.0572115777751939e+01
--4.7411652585224381e+01
-3.4944193193284230e+00
-1.0248896901338991e+01
--4.6115737128683683e+01
-1.1840018745773824e+01
-1.3135391807579177e+01
--5.0133659263024228e+01
-3.9888373325664701e+00
-1.0425838709629438e+01
--4.7750315765850829e+01
-4.9073327245630507e+00
-1.0402482275782981e+01
--4.6729405338243225e+01
-1.4339908763376011e+01
-1.1725490347606133e+01
--4.0167071147730752e+01
--1.8752812580264941e+01
-1.8056714117664285e+00
--3.5772197946561903e+01
-1.2556661786069682e+01
-1.3226428245388783e+01
--5.2008274883920400e+01
--1.7265608086656716e+01
-2.0533855666235024e+00
--3.5479001598718483e+01
-1.3352121242638562e+01
-1.0666589523189099e+01
--3.7090899627581429e+01
-3.7256988197840588e+00
-9.5855867428321400e+00
--4.6478034601289352e+01
-1.3598515302015361e+01
-1.0336932276048035e+01
--3.5332961380805088e+01
--6.1104936214659817e+00
-5.9082560403976832e+00
--4.1625206119135974e+01
--1.3734316478902670e+01
-2.1237500914685508e+00
--3.2764738979434156e+01
-4.0012277838860939e+00
-9.3661191489583899e+00
--4.6280899761430668e+01
-6.6065359846897689e+00
-1.0142867564129999e+01
--4.7058969337003504e+01
-1.3708061646533166e+01
-1.0039674755454422e+01
--3.5590677994211930e+01
-2.5380393235579759e+00
-8.2413767928030044e+00
--4.3760949520583750e+01
-4.3374439349363092e+00
-9.2261279376342600e+00
--4.5564780683615005e+01
-2.0059829713481858e+00
-8.1180075054418133e+00
--4.3093775124372684e+01
-7.2133614901361547e+00
-1.0113069377441031e+01
--4.7468580710011324e+01
-7.5545732580620388e+00
-1.0087480835047986e+01
--4.6998537249501943e+01
-1.3931982076365269e+01
-1.0826344479560019e+01
--4.0776047855263279e+01
-9.2912871906979824e+00
-1.0520960608850292e+01
--4.7735727043371135e+01
-1.3572235659768864e+01
-9.7970733753221904e+00
--3.5838750114259788e+01
-1.3402885404574659e+01
-9.8532503057183973e+00
--3.5678470316268090e+01
-1.3195293902102765e+01
-1.0192155819421798e+01
--3.9153395108052983e+01
-8.0714615809582302e+00
-9.6177379312817735e+00
--4.5528216169067903e+01
-3.1469135933210306e+00
-7.7749552738667802e+00
--4.3134843502134082e+01
-9.0190365108951305e+00
-1.0069573450735581e+01
--4.7170762227538447e+01
-1.3718448951144698e+01
-9.6301034374257188e+00
--3.6210169267897314e+01
-1.2531492328590870e+01
-1.0722307921815807e+01
--4.6714624993581452e+01
-4.7255885251361418e+00
-8.0473359826667767e+00
--4.4102252247304101e+01
--1.1255311844636706e+01
-2.2769949522870236e+00
--3.5500748493218211e+01
--2.2689907520178139e+00
-3.6414344916656196e+00
--2.8085685141256846e+01
--2.1725181959163753e+00
-3.7457898095367357e+00
--2.8346360757444184e+01
--7.7605844746915720e+00
-3.1541779923957338e+00
--3.6664405930217001e+01
-1.4450511085316137e+01
-9.9081908470619027e+00
--4.0247201984601823e+01
-1.4450511085316137e+01
-9.9081908470619027e+00
--4.0247201984601823e+01
-6.7791559764584863e-01
-3.5743536869066146e+00
--2.3056691768786024e+01
--2.9118794255584044e+00
-3.0097494290006104e+00
--2.7235748418361368e+01
-2.1397346025298378e+00
-4.2000907294504426e+00
--2.5046616434397887e+01
-2.1397346025298378e+00
-4.2000907294504426e+00
--2.5046616434397887e+01
-2.7065800631237154e+00
-4.0876492872955392e+00
--2.3691263036770742e+01
--3.0977600450367717e+00
-2.8800945803179374e+00
--2.7157856003748378e+01
-2.5766043417913371e+00
-4.0021203826528398e+00
--2.3592850702976278e+01
-2.5786391762272367e+00
-3.9967227726907417e+00
--2.3617798242414821e+01
-6.3334670414347288e-02
-3.0716940121708554e+00
--2.2192129363341785e+01
--8.3964895804204864e-01
-2.7990679014309707e+00
--2.2662055248874754e+01
-1.4184436954132451e+01
-9.3899472908959449e+00
--4.0817782106242291e+01
--6.4028897143732397e+00
-2.9196681598587051e+00
--3.6308416500026674e+01
-1.5024383260399031e+01
-9.1507596215958973e+00
--3.8062640314688366e+01
--1.1952262671569937e+01
-8.1141406725578213e-01
--3.2454395695358031e+01
-1.1559025726461451e+01
-8.7898602076905679e+00
--4.4131812386691415e+01
--1.1098149441137798e+01
-1.0657299046229791e+00
--3.3812880156409712e+01
--2.1421060991382048e+00
-2.5682555565073968e+00
--2.5631238154003803e+01
-1.3647313380784428e+01
-8.6140252027555437e+00
--3.8642505535584519e+01
-3.2220953928546332e+00
-3.8100093559080550e+00
--2.3399768014163001e+01
-6.7036384039523638e+00
-6.9938958963077198e+00
--4.2055433479548597e+01
-9.9450666609599221e+00
-8.1286379047292705e+00
--4.4157090863003745e+01
-3.2421818685222896e+00
-3.7097793007771838e+00
--2.3187878340549233e+01
-1.2348672100861103e+01
-7.0356014555626381e+00
--2.9876758824688086e+01
-2.0537513853629337e+00
-3.4010118805418754e+00
--2.3121543157188480e+01
--1.6970585672165002e+00
-2.1295807279269789e+00
--2.3175862200528126e+01
-1.0145751117730013e-01
-2.6047989793600443e+00
--2.1876617870084026e+01
-1.4057588555191982e+01
-8.6089554630196172e+00
--4.1596197732833133e+01
--2.5183999726940232e+00
-2.0018118152615081e+00
--2.4811250962198688e+01
-3.7012066066790563e+00
-3.6329109388882785e+00
--2.3365340758918837e+01
-1.8542224243305210e+00
-2.9486328939101472e+00
--2.2157184507727468e+01
-1.4668160627664346e+01
-8.4155536324385896e+00
--3.9663408884871885e+01
-3.8862040264484756e+00
-3.6320270226679057e+00
--2.3620620863210007e+01
--3.7742791216019742e+00
-1.4291505011992458e+00
--2.5082636344224870e+01
-9.4084983736428711e+00
-6.8659302735510748e+00
--4.2080768227282881e+01
--7.5471187361905645e-01
-1.9985023371217525e+00
--2.1965410615583725e+01
-1.0216205395058518e+01
-6.9417814343539836e+00
--4.2519356718379058e+01
-3.3289116739599938e+00
-3.1496218896225292e+00
--2.2822394126450796e+01
-4.2783897056128067e-01
-2.1572073341838212e+00
--2.1199817582909713e+01
-3.9343599250606148e-01
-2.2568261910946346e+00
--2.1702825762351466e+01
-1.0967683667353391e+01
-6.9508224608436819e+00
--4.3294808634342687e+01
-1.3276714402593953e+01
-7.7551025351799661e+00
--4.5057602763098878e+01
--9.7578048323147728e-03
-2.1075225059750098e+00
--2.2508528288923255e+01
--6.2529018744417408e+00
-1.0931030617369626e+00
--3.3912565925241282e+01
--6.2350368168251604e+00
-1.0842115932283358e+00
--3.3916260353741151e+01
--1.0742131662342957e+00
-1.6367495631675371e+00
--2.2259321200079022e+01
-1.2978841835215665e+01
-6.5354265463990791e+00
--3.2508801642336870e+01
--7.1637817161047346e-01
-1.6164776413125681e+00
--2.1548088508695923e+01
--7.3246407137534575e-01
-1.6416593571555573e+00
--2.1695395453731400e+01
-1.0263280285596787e+01
-6.3806398970042499e+00
--4.1599684989198828e+01
--1.6149581493382701e+00
-1.3819632568680393e+00
--2.2517422920625183e+01
-1.2052929741558371e+01
-6.0475063659521604e+00
--2.9868553526141184e+01
-1.0182865960006278e+00
-2.0990456876529229e+00
--2.1504977628804053e+01
-8.8574938316566385e+00
-5.7908762223670971e+00
--4.1205297260648194e+01
-3.8273382185134008e+00
-2.8658401831472387e+00
--2.2350629721285785e+01
-4.8897249330246767e-01
-1.8381488140477842e+00
--2.1026271967050288e+01
-8.1648031294598000e-01
-1.8983016684012859e+00
--2.0954406543909560e+01
-9.7379170413116096e+00
-5.8758034079689061e+00
--4.0989649721112322e+01
-4.1305649616852813e+00
-2.9215176342776723e+00
--2.2734683978016992e+01
-4.1260106945448580e+00
-2.9259256746061562e+00
--2.2701786656234741e+01
-9.0882950047365796e+00
-5.6792569375708961e+00
--4.1498204292994956e+01
-4.3177577412749901e+00
-2.9736300813861356e+00
--2.2924725083610788e+01
-4.1701305387213905e+00
-2.8885661848826856e+00
--2.2714892969668107e+01
-4.1701305387213905e+00
-2.8885661848826856e+00
--2.2714892969668107e+01
-9.0088531117060977e-01
-1.9344585067727464e+00
--2.1367261557468712e+01
-1.3668306703395404e+01
-6.2607866963554502e+00
--3.2142638770947734e+01
--2.4891627591817045e+00
-7.5824652418703542e-01
--2.3202886876445195e+01
--1.7672084403486182e-01
-1.3335833305467275e+00
--2.1084974252769857e+01
-1.2229406122718188e+01
-5.5872429520345985e+00
--2.9666092036782842e+01
-1.6710950413275500e+00
-1.8322102140119891e+00
--2.0695460096685007e+01
-1.5413541558734869e+01
-7.0805120598499753e+00
--4.1635111561632669e+01
-1.2529428908328139e+01
-5.4693747331620424e+00
--2.9395693575868055e+01
-1.5226688200130685e+01
-6.9747671154029227e+00
--4.2228738172350624e+01
-1.4084465569655796e+01
-6.4475276253802107e+00
--3.8806186274469994e+01
-4.8589795178717293e-01
-1.4203672903448656e+00
--2.0805747406840929e+01
-4.0331307773366296e+00
-2.5066274243758855e+00
--2.2079010500847435e+01
-4.8023656956661354e-01
-1.3525308155793130e+00
--2.0700589257964875e+01
-1.2809230433142437e+01
-5.4547157669406898e+00
--2.9662718902001110e+01
-1.2228443379318925e+00
-1.5023027421646300e+00
--2.0620242457681158e+01
-3.4561201863616930e+00
-2.1759583955737889e+00
--2.1441008984026567e+01
-1.2913488219767919e+01
-5.3654437160638615e+00
--3.0408009916985751e+01
-2.4219955210650421e+00
-1.7775880574372425e+00
--2.0724458120328372e+01
-2.6406384030215260e+00
-1.8417692849708778e+00
--2.0889378735318992e+01
-4.8812043109667336e+00
-2.6175568772012188e+00
--2.3238274557610723e+01
-1.4070694122826228e+00
-1.4903345108752912e+00
--2.0605216627425300e+01
--1.7323820015691635e-01
-1.0300749444854618e+00
--2.1355179817697959e+01
--2.3588290567912940e+00
-3.9831654923919302e-01
--2.2724000664060082e+01
--2.3581076573808986e+00
-3.9646656919687467e-01
--2.2709322312631528e+01
--2.3658117164844499e+00
-4.0413791562139861e-01
--2.2789428269931705e+01
--2.3666707544753800e+00
-4.0610193550374973e-01
--2.2788707658923755e+01
--2.3060648138707975e+00
-3.9391321021589160e-01
--2.2758829957073331e+01
--2.3060648138707975e+00
-3.9391321021589160e-01
--2.2758829957073331e+01
-1.2759837724091064e+01
-5.3911996598280219e+00
--3.1998079626676237e+01
-4.5139056654120555e+00
-2.3909743287317413e+00
--2.2442787903527616e+01
--2.1583657683371826e+00
-4.2469928129452478e-01
--2.2814692539824261e+01
--5.2938995978903580e-01
-7.9289879773838301e-01
--2.1060606035855372e+01
-1.9657419892187145e+00
-1.5114341211195950e+00
--2.0539955151154135e+01
-9.5196536475035287e-01
-1.1932988062855094e+00
--2.0542181611838135e+01
-9.5117854048390749e-01
-1.1952017159154271e+00
--2.0542345906228181e+01
-3.6139505390388584e+00
-1.9791589615431560e+00
--2.1296641386378841e+01
-1.9174041097451049e+00
-1.4115648076952343e+00
--2.0464377811924344e+01
-2.7777391623906413e+00
-1.6350394995811939e+00
--2.0780121579462037e+01
-7.4886728870617170e-01
-1.0491026484985986e+00
--2.0632318973686480e+01
-2.6204070708357747e+00
-1.5346896272206880e+00
--2.0643621002983426e+01
-3.7020856005732394e+00
-1.8391730252994933e+00
--2.1391496080661959e+01
-1.2454669469971054e+00
-1.0606575837282977e+00
--2.0389546263585185e+01
-6.3437509839710571e-01
-9.0152254765921414e-01
--2.0566105901555353e+01
-3.6918306397578253e+00
-1.7797724668500670e+00
--2.1357717874531811e+01
-3.7418925905870046e+00
-1.7858229122318112e+00
--2.1381059414261347e+01
-1.2784303825381048e+01
-4.6653909055299847e+00
--2.9584529188307023e+01
-1.3476986850973107e+01
-4.9111883247469370e+00
--3.1277831326753525e+01
-1.1022679854665689e+01
-4.4018864653555054e+00
--3.9444571712361387e+01
--8.3765552756273447e+00
--1.7661035607479858e+00
--3.0101203285366974e+01
--3.3005595872489355e+00
--4.0216610752820570e-01
--2.2726437584530608e+01
-1.2652486790832413e+01
-4.5269040439619355e+00
--3.0775969622207608e+01
-1.2589746443512688e+01
-4.5262771207759895e+00
--3.0998645528578873e+01
-3.4482361955425361e-01
-6.3112530515558596e-01
--2.0612792258224310e+01
-3.8275365955810976e+00
-1.6571450302217359e+00
--2.1315544826288605e+01
-2.3123238496922744e+00
-1.1548296582600519e+00
--2.0403972099908902e+01
-1.3482677112102539e+00
-8.4067593462856982e-01
--2.0225378670224725e+01
-1.2670777410418191e+01
-4.4368178746627818e+00
--3.0555985218026802e+01
-1.0707834967531399e+01
-3.9637816980631819e+00
--3.8883569107614321e+01
-1.5200923802075530e+00
-8.5373231503628266e-01
--2.0363175427936866e+01
-4.0501307643728977e+00
-1.6021133605469895e+00
--2.1415071911965089e+01
-5.6320774443909072e-01
-5.1668766362287633e-01
--2.0487606831852094e+01
-9.7144020277457521e-01
-6.5473581784357826e-01
--2.0427341751623945e+01
-4.0067451843605904e+00
-1.5574856117631937e+00
--2.1445825931210784e+01
-1.3029627495115832e+01
-4.4605984031067178e+00
--3.4675658835726118e+01
-3.8339957156234221e+00
-1.4860940722833111e+00
--2.1252356688379017e+01
--9.4780567215498024e-01
-3.8891782719650304e-02
--2.1471376646487236e+01
-2.6331889298074340e-01
-3.9951025569381826e-01
--2.0685499729030180e+01
-1.0377323481899904e+01
-3.6637496506200415e+00
--3.7957445938587455e+01
-4.7936776399355994e+00
-1.7424464475802577e+00
--2.2207052130813420e+01
-1.3275421668796552e+01
-4.4437871368136621e+00
--3.4092938835506757e+01
-4.0333880664948589e+00
-1.4906348881145866e+00
--2.1401049065777858e+01
-4.4522561495810296e+00
-1.6145564838036350e+00
--2.1788428659015757e+01
-1.0578938472655481e+00
-5.5221142059367168e-01
--2.0374265843653401e+01
-2.1055717665349388e-01
-2.9260141899945424e-01
--2.0629017552416858e+01
-6.8602749664842355e-01
-4.3223881043058693e-01
--2.0459314410642069e+01
-6.6397355774479627e-01
-4.4401252945733805e-01
--2.0501860683766552e+01
-1.3777541484684514e+01
-4.4724963394859527e+00
--3.2647435354758358e+01
-1.2901320131798789e+01
-4.1895159635509573e+00
--3.0372641204452677e+01
-4.6334126725775038e-01
-3.5508656989469051e-01
--2.0564297330337553e+01
-1.2841136979939130e+01
-4.1209952623295933e+00
--3.0619899819939526e+01
-3.5991943221592786e+00
-1.2531290907330668e+00
--2.1012408145037412e+01
-1.5940134922336593e+00
-6.3768305744401943e-01
--2.0310187033768017e+01
--2.1781917352049845e-01
-6.4228425999650160e-02
--2.0876170925487923e+01
-1.3255220762857714e+01
-4.1714284217737481e+00
--3.4294866022364090e+01
-1.3125122085973326e+01
-4.0908271447805227e+00
--3.4614786707393939e+01
-1.2437588225583164e+01
-3.8746075270664742e+00
--3.2645133780154964e+01
-1.3076446144789540e+00
-4.3770737909655461e-01
--2.0225188871529706e+01
-1.3042358129905591e+00
-4.4798932507551414e-01
--2.0309561019324370e+01
--4.8886485207350366e-01
--1.1769509785664840e-01
--2.1090496335786675e+01
-1.0207209474913017e+00
-3.4554016227272311e-01
--2.0353829593057956e+01
-1.0675100827074244e+00
-3.4729960075296340e-01
--2.0221952637161465e+01
-2.2612131408508302e+00
-7.0926496231929814e-01
--2.0331841668649059e+01
-1.2873393128609438e+01
-3.9927979268494536e+00
--3.0492962416028991e+01
-3.4770826544727917e+00
-1.0218551477754261e+00
--2.0869096659759599e+01
-1.9299378508245564e+00
-5.4750571330572517e-01
--2.0236870683022300e+01
--7.1199374263963389e-01
--3.1649367219982533e-01
--2.1378377761732509e+01
-3.0802929636530001e+00
-8.0998458698965869e-01
--2.0640294053125071e+01
-1.2789701231044550e+01
-3.6010890024567122e+00
--3.1273818882697693e+01
-2.1986423175567511e+00
-5.1434481591043901e-01
--2.0313714819948860e+01
-4.8541777694357116e+00
-1.2930999522074407e+00
--2.2023510747054353e+01
-1.2893303979322321e+01
-3.6136149116685257e+00
--3.0277235185421521e+01
-2.3193707577030622e+00
-5.3051340195227104e-01
--2.0207708840695748e+01
-2.8471181265240539e+00
-6.8847615273685003e-01
--2.0520166096275091e+01
-1.2870107243603984e+01
-3.5881640672062765e+00
--3.0924362151137618e+01
--9.9879796364756213e-01
--5.3017991870939263e-01
--2.1588324253798071e+01
-1.3110428929528625e+01
-3.6160217555398311e+00
--3.3785190142012617e+01
-3.4979075509169784e+00
-8.2599807767136013e-01
--2.0798688374699744e+01
-3.4979075509169784e+00
-8.2599807767136013e-01
--2.0798688374699744e+01
--1.7492525870095652e+00
--7.8679801215300793e-01
--2.1529017133456602e+01
-4.3029525004455191e+00
-1.0600497270870139e+00
--2.1398664547776654e+01
-2.7484858326507453e+00
-5.8383254864051715e-01
--2.0430517840283184e+01
-2.2139479075465758e+00
-3.8223574151727485e-01
--2.0186258096690352e+01
-2.1645584602378145e+00
-3.5688088435265403e-01
--2.0165988563891194e+01
--7.8525185498142580e+00
--2.8805053947836581e+00
--2.8727286619811402e+01
-3.4299705235334121e+00
-7.2830270793516327e-01
--2.0747303160915695e+01
--8.8272419448664046e+00
--3.1500236401696133e+00
--2.8120336177409204e+01
-2.3265575486372141e+00
-3.7084318664564170e-01
--2.0267760550090035e+01
-3.1322062646705744e+00
-6.6449956820636324e-01
--2.1656525925969376e+01
-7.0453472086022662e-01
--1.4378404253167007e-01
--2.0336161089185296e+01
-7.0334135191523783e-01
--1.4162550086465001e-01
--2.0408349904802410e+01
-1.3862397093092213e-01
--3.0358568325937235e-01
--2.0761847203223887e+01
-3.9516456590775055e+00
-7.8184075106610551e-01
--2.1066259640359991e+01
-1.2325828623676087e+00
--5.6123953524536786e-02
--2.0306192732667594e+01
-2.8590003582598431e+00
-4.2355310280372327e-01
--2.0457158469029054e+01
-4.2143331866525315e+00
-7.9061657216036674e-01
--2.1278267108898536e+01
-4.2143331866525315e+00
-7.9061657216036674e-01
--2.1278267108898536e+01
-6.0330391302546662e+00
-1.2606001522171741e+00
--2.4433147264379176e+01
-4.7081830893261030e+00
-9.0613440133497258e-01
--2.1757494817087281e+01
-1.3210812073861593e+01
-3.2875087123655180e+00
--3.0106763601030753e+01
-5.0295219756860654e-01
--3.5351821474443018e-01
--2.0571303288377504e+01
-4.5194787434705121e+00
-7.8596168726963034e-01
--2.1500440551398619e+01
-7.5312481487414362e-01
--4.2375179762542453e-01
--2.0418412783072704e+01
-3.1391804080184897e+00
-2.8998298092027613e-01
--2.0510805782066303e+01
-1.2902992107942541e+01
-2.8937431039346100e+00
--3.2131620534364664e+01
-1.9682666465527693e-01
--7.1152905988314841e-01
--2.0737174158340636e+01
--1.3621288732955086e+00
--1.2350002669995259e+00
--2.1313217820455161e+01
-2.4206043059871054e+00
--1.3655003908799467e-02
--2.0324402043590126e+01
-1.5436738358571749e+00
--3.0516573710519029e-01
--2.0276703241817447e+01
-1.8695774041091031e+00
--2.3322270210121124e-01
--2.0240897705519107e+01
-1.4066298957262293e+00
--4.1391045985773572e-01
--2.0197507574799204e+01
-1.7977769924496925e+00
--2.9785573953629835e-01
--2.0280189437989243e+01
-1.9802226098335971e+00
--2.4235138304590123e-01
--2.0269815715794433e+01
-4.4202213124078824e+00
-4.3754073597638626e-01
--2.1371845704784210e+01
-1.9463383065745847e+00
--2.8001601841883117e-01
--2.0288545505373001e+01
-1.3267176476817911e+01
-2.6332685213131768e+00
--3.3269603848604028e+01
-1.3283023344303125e+01
-2.6347256078303545e+00
--3.3298344681341852e+01
--6.8154014402668075e+00
--3.4606810713036715e+00
--2.7701998677898317e+01
-1.3139091135275228e+01
-2.5962051622450479e+00
--3.0917116477488111e+01
-3.1264394575542784e+00
-2.9738947238174631e-02
--2.0538709361248905e+01
-1.1467369820673672e+00
--5.7869818424207342e-01
--2.0357642001905386e+01
-4.3420839043355501e+00
-3.6531060725208409e-01
--2.1184483353032050e+01
-3.1877992602676932e+00
-3.3844810266465297e-02
--2.0459060209100222e+01
--1.1949474470252481e+01
--4.9229352874182064e+00
--2.3296209152272908e+01
--5.1609081096688325e-01
--1.2157032140439274e+00
--2.0710591743182555e+01
--1.9714466582716270e+00
--1.7068136417538453e+00
--2.1275899722923779e+01
-1.4724593705156146e+00
--6.2169220082832544e-01
--2.0359548889313317e+01
-1.3112545239053896e+01
-2.3837614416698734e+00
--3.1699424543284437e+01
-2.1022705616095174e+00
--4.2642474635147204e-01
--2.0298713965169949e+01
-3.3176143005928096e+00
--8.7151470844482118e-02
--2.0649756362581019e+01
-1.3244052379914477e+01
-2.3910255899788564e+00
--3.1871631588875477e+01
-4.8451033105242098e+00
-3.0673184612629961e-01
--2.1787871967253640e+01
-2.1176618483263604e-01
--1.0601830972483903e+00
--2.0874837712774401e+01
-4.1946926488857272e+00
-1.2980606781021423e-01
--2.1120518123861817e+01
-1.3575576428193703e+01
-2.5598562854160858e+00
--2.9529132283033654e+01
-1.3159128812548204e+01
-2.3009745311214553e+00
--3.1516724027360397e+01
-3.1764039630955740e+00
--1.8837795380376224e-01
--2.0501697690146504e+01
--1.5247920232857086e+00
--1.7119107265512163e+00
--2.1118953688155578e+01
--1.1662034813108804e+01
--5.0593051357827363e+00
--2.3450471847709771e+01
--1.6053383388888975e+00
--1.7748492182261664e+00
--2.1088344526410243e+01
-1.1602171913609154e+00
--8.8398146528304977e-01
--2.0472626020625931e+01
--1.7505638347334633e+00
--1.8239852268454040e+00
--2.1044552273616659e+01
-1.4237034211568869e+01
-2.4875451635924928e+00
--3.2087551201768896e+01
-1.3577876602997174e+01
-2.2100479578549779e+00
--3.2903026689982667e+01
-1.3905005336639933e+00
--8.3978887311432593e-01
--2.0435838346162726e+01
-1.3477186863240316e+01
-2.2793695964670273e+00
--2.9563498216568238e+01
-2.2148337256133304e+00
--6.0389673713178604e-01
--2.0372654081212325e+01
-1.1494296504668882e+00
--9.0734844233992140e-01
--2.0499455296909456e+01
-3.7527851967937322e+00
--1.8850010454932450e-01
--2.1054696033281491e+01
-2.6376574407559792e+00
--5.0247658947803331e-01
--2.0382287539100584e+01
-1.9944212414348652e+00
--7.1697160934370174e-01
--2.0380733038605047e+01
-3.4939101667147837e-02
--1.3735024786943983e+00
--2.0542068762497490e+01
-1.7020036492716570e+00
--8.5043635583971389e-01
--2.0409970571738910e+01
-4.8601479414719879e+00
-3.2224849445304425e-02
--2.1757644836627730e+01
-2.9007549071475327e+00
--4.9559114918703373e-01
--2.0417564847975505e+01
-7.3041870806884974e+00
-5.7063088504569159e-01
--2.4564221227025747e+01
-1.3821745951859294e+00
--1.0243154930826242e+00
--2.0483362033962560e+01
-7.3204867639790479e+00
-5.2309481588767393e-01
--2.4647531751171645e+01
-3.2153028589650861e+00
--5.0444883363734794e-01
--2.0597981765015220e+01
-4.9658804776306891e+00
--6.8235744812148558e-02
--2.1926277191963916e+01
-3.2545133371600272e+00
--5.1610145081166003e-01
--2.0587286971320719e+01
--1.1038632723586446e+00
--1.9609489756199379e+00
--2.0842841628730561e+01
-1.8503211419740822e+00
--1.0063306079296515e+00
--2.0466819031207894e+01
-1.3551963391820058e+01
-1.8343687969168230e+00
--3.0721909033672787e+01
-1.3296831398402524e+01
-1.5459101429773006e+00
--3.3511120183509028e+01
-4.7258854222405722e+00
--2.3704118260829940e-01
--2.1616656486817675e+01
-6.4826707381174575e-01
--1.4517028957023426e+00
--2.0402855997043648e+01
-7.5233518734930795e+00
-3.8521427715416967e-01
--2.4403409131924771e+01
-5.0130225796564565e+00
--2.2210751785959987e-01
--2.1978287006264601e+01
-2.1006858076641999e+00
--1.0340441628276926e+00
--2.0503715076413734e+01
-2.3025931260116446e+00
--9.3633150232772677e-01
--2.0529466147240512e+01
-2.7503492229262614e+00
--8.2595222888508901e-01
--2.0519520261507783e+01
-4.9819315256509338e+00
--2.7481774037331197e-01
--2.2040168423040761e+01
-2.7878755363060495e+00
--8.3534144324783266e-01
--2.0486418134655001e+01
-2.3345619136835576e+00
--1.0038986015854583e+00
--2.0527026690986673e+01
-2.1448732913126536e+00
--1.0654751801460347e+00
--2.0524232246000096e+01
-3.4192441037295045e+00
--6.8288477928016023e-01
--2.0663885037643119e+01
-2.7178635367241686e+00
--9.2852145810026987e-01
--2.0539466291778481e+01
-7.4513633272258808e+00
-2.5339987720603441e-01
--2.4161828724920607e+01
-1.3744937218013208e+01
-1.5032194717754708e+00
--3.2726690185009801e+01
-1.3150672516462988e+01
-1.2594190635742768e+00
--3.2808977956589821e+01
-5.2495789904450225e+00
--3.2204782728209941e-01
--2.2090204711498213e+01
-1.3384739078361090e+01
-1.2619661231511501e+00
--3.3378299513420714e+01
-1.4115479303247897e+01
-1.5001179289522732e+00
--3.3291731761854194e+01
-1.3491548659364765e+00
--1.4228684008287344e+00
--2.0494058682873483e+01
-1.4185296800626048e+01
-1.4974369836283674e+00
--3.3190952507690064e+01
--2.6560919865179189e-01
--1.9047309274938489e+00
--2.0862552227712563e+01
-4.3728932015855140e+00
--5.6724250228011108e-01
--2.1403239491024948e+01
--9.4730300490812258e+00
--5.2945348697584649e+00
--2.4433745146903803e+01
-2.7221043689048479e+00
--1.0950950051647899e+00
--2.0635696607413252e+01
-1.3997141601860343e+00
--1.5743124345855346e+00
--2.0341883387301870e+01
-4.8390438333391721e+00
--6.3336342794949585e-01
--2.1682575344740918e+01
--1.0175882201368913e+00
--2.3853355172224417e+00
--2.0302317114381719e+01
-4.1298116167327703e-01
--1.9426856600803950e+00
--2.0381195804912334e+01
-4.0720169896234154e-01
--1.9412794179884145e+00
--2.0406131969353073e+01
-1.3591382690886933e+01
-1.2059035976796140e+00
--3.0705502119482428e+01
-4.0882650968083993e+00
--8.5503408758856392e-01
--2.1341038156866670e+01
-6.4442371017161886e+00
--3.1514595741213286e-01
--2.3249215038932405e+01
--1.0633372524103919e+00
--2.4396735168692261e+00
--2.0379930885718608e+01
-5.1575181409497519e+00
--6.1535885241237531e-01
--2.1632940274673643e+01
-1.3607914031461080e+01
-1.1082675903523993e+00
--3.0703607952167030e+01
--1.4676385709670050e+00
--2.6871618496482479e+00
--2.1178827364386102e+01
-3.4587655563737414e+00
--1.1166775917700562e+00
--2.0848753461729014e+01
-2.0182397729643240e+00
--1.5249299791523310e+00
--2.0342451642782031e+01
-3.0483376666855757e+00
--1.2646388825377608e+00
--2.0762818674509973e+01
-1.6751943849219408e+00
--1.7131912216991518e+00
--2.0141767568991590e+01
-3.0645083409963356e+00
--1.3360190427234024e+00
--2.0636670093184208e+01
-1.3800999959917402e+01
-1.0228476463935423e+00
--2.9918418476952994e+01
-1.3764468148080351e+01
-9.4377981369550212e-01
--3.0678447661666866e+01
-1.4414774160093311e+00
--1.7831483897903870e+00
--2.0838526224133329e+01
-2.4637333182823240e+00
--1.5456098696108371e+00
--2.0378140133538395e+01
-4.1926492513130569e+00
--1.0904700766744995e+00
--2.1131735721082684e+01
-8.4424440714159443e-01
--2.0909500432728501e+00
--2.0294161877128815e+01
-3.2466295056481576e+00
--1.3693694965426695e+00
--2.0577541690915126e+01
-1.3835754822767852e+01
-7.1117247524373306e-01
--3.1904347336739242e+01
-2.4831687878107127e+00
--1.5991319506665835e+00
--2.0322291512349071e+01
-4.5888358816126482e+00
--1.0305543135846305e+00
--2.1200735061282952e+01
-2.1329905769866868e+00
--1.7313638015066779e+00
--2.0159542122525252e+01
-3.6890568457303003e+00
--1.3171942499520741e+00
--2.0643888439958200e+01
--4.5798056093281209e-01
--2.5637845356694524e+00
--2.0449017620981614e+01
-5.0875768812884814e-01
--2.3336277154088974e+00
--2.0425664633358366e+01
-6.2718460515040109e+00
--7.8674721300663941e-01
--2.2631596114877887e+01
-2.0774546090163972e+00
--1.8704957048790061e+00
--2.0181477452715168e+01
-2.0774546090163972e+00
--1.8704957048790061e+00
--2.0181477452715168e+01
-1.5992216050093429e+00
--2.0760244942897841e+00
--2.0288047054223032e+01
-1.3864503053991676e+01
-4.4601018596058334e-01
--3.1713512265574437e+01
-1.3864503053991676e+01
-4.4601018596058334e-01
--3.1713512265574437e+01
-1.3638036035144673e+01
-2.1052016632215481e-01
--3.2203346330183066e+01
-5.1617321458155718e+00
--1.1641302216524450e+00
--2.1600931853402795e+01
--6.3825411419437428e+00
--5.3126005731331549e+00
--2.4556489394464069e+01
-7.9108201339419415e-01
--2.4417368601295255e+00
--2.0252817317516083e+01
-1.3887560070448844e+01
-3.9432337263572692e-01
--3.0111324411800194e+01
-1.4141232443948981e+01
-5.2684170268768404e-01
--2.9739589457442882e+01
-6.2218713000236789e+00
--1.0521036984583925e+00
--2.2309509635227354e+01
-1.3721106313823256e+01
-6.0715589051658081e-02
--3.1760099304076256e+01
-1.4002974858415312e+01
-4.7557987603595275e-01
--2.9545910378261095e+01
-1.4182308346048700e+01
-4.6114719140204458e-01
--2.9711604558694066e+01
-1.4118728297309925e+01
-4.6743571202966377e-01
--2.9636135924000918e+01
-2.0760846257309034e+00
--2.1556315091417759e+00
--2.0321403299789253e+01
-1.7051267992414956e+00
--2.3068266364518375e+00
--2.0443063695000465e+01
-1.7051267992414956e+00
--2.3068266364518375e+00
--2.0443063695000465e+01
--8.5021359720768008e-01
--3.2168017657525931e+00
--2.1083069765591798e+01
-5.1024378280173821e-01
--2.6455972809835551e+00
--1.9951533354617414e+01
-5.1024378280173821e-01
--2.6455972809835551e+00
--1.9951533354617414e+01
-1.4215976178462130e+01
--1.2713046222009383e-01
--3.3665425271570435e+01
-1.4034636489508641e+01
-2.8703616336617355e-01
--2.9803993406557094e+01
--7.7000015356804798e+00
--5.8090379835347878e+00
--2.3070897630118342e+01
-1.4265412438749784e+01
-2.9308120363668339e-01
--2.9320546781997098e+01
-1.4262128409285152e+01
-2.9194279614239316e-01
--2.9305437790655358e+01
-3.8891937806645482e+00
--1.7891514074173531e+00
--2.0743064406332653e+01
-3.8891937806645482e+00
--1.7891514074173531e+00
--2.0743064406332653e+01
-1.4054650065867108e+01
-9.9201116281460833e-02
--3.0191628000774145e+01
-1.4936185491398934e+00
--2.5132108314852291e+00
--2.0247445048584392e+01
-3.4203757405709205e+00
--1.9242965217209309e+00
--2.0490909651847893e+01
-5.8773002657877100e+00
--1.3256493484762548e+00
--2.1855996863543940e+01
-1.4897161223173187e+01
-1.0058143953657572e-01
--3.2051955289877661e+01
-1.4307345753189592e+01
-1.7710913694891611e-01
--2.9400252795944986e+01
-4.0295470260155417e+00
--1.8108552471628581e+00
--2.0780989295930713e+01
-1.3870251124272185e+01
--2.8516764555008545e-01
--3.1743045569841733e+01
-1.3227840152538934e+00
--2.6140167169208599e+00
--2.0004974614755767e+01
-1.0703919817662257e+00
--2.7541366890979644e+00
--1.9869018297472724e+01
-5.3399205205127842e+00
--1.6146409764668999e+00
--2.1469898189967836e+01
-1.4335476649888882e+01
-1.2011144652179844e-02
--2.9378768823508821e+01
-1.4575994536419110e+01
-1.0454200544081167e-01
--2.9958286647666004e+01
-1.4134289025360887e+01
--1.5278983233094115e-01
--2.9817559079668211e+01
-1.4134289025360887e+01
--1.5278983233094115e-01
--2.9817559079668211e+01
--3.0353823393931922e-01
--3.5144510075397881e+00
--2.1067418969677970e+01
-1.0314887250194542e+00
--2.8794432406152199e+00
--1.9674876104131581e+01
--6.5163650124685253e+00
--6.1803081781941414e+00
--2.4188012730701132e+01
-9.6473290740375017e-01
--2.9465600657168789e+00
--1.9520827608791638e+01
-3.4957137478897278e+00
--2.2699563222128014e+00
--2.0420472436831776e+01
--9.5639199501124459e+00
--6.6128622271940314e+00
--2.0128139199318365e+01
-2.4424353476236087e+00
--2.6094993820323755e+00
--2.0101727735915730e+01
-2.9370605578332167e+00
--2.4688400731059046e+00
--2.0175938988847243e+01
-3.0923337465457470e+00
--2.4620210366284301e+00
--2.0323160484310577e+01
-6.0831651755162417e+00
--1.7261303917261541e+00
--2.1619110053711591e+01
-1.4117488226783070e+01
--7.0560671136891007e-01
--3.1076778879060484e+01
-1.4102914677504307e+01
--7.0402811229754225e-01
--3.1025002644963266e+01
-1.4231503328077570e+01
--7.4854722275785612e-01
--3.1346924074530957e+01
--5.8681861564836435e+00
--6.2034619699593572e+00
--2.4149788773863094e+01
-3.7483178172514195e+00
--2.4155661862457527e+00
--2.0391948687149917e+01
-3.7483178172514195e+00
--2.4155661862457527e+00
--2.0391948687149917e+01
-4.4192911126577634e+00
--2.2310926401280620e+00
--2.0636171962969918e+01
-4.3545193855125675e+00
--2.2891151367466001e+00
--2.0518967387799801e+01
-4.3545193855125675e+00
--2.2891151367466001e+00
--2.0518967387799801e+01
-3.6222926910105877e+00
--2.4891630842827066e+00
--2.0286769558693518e+01
-1.8790594807632859e+00
--3.0137007331166257e+00
--1.9848254368751292e+01
-4.3948093549219056e+00
--2.3429819621252861e+00
--2.0568513351595428e+01
-3.9691603700956208e+00
--2.4331048887589262e+00
--2.0242562965264504e+01
-1.5916424262439590e+00
--3.1656116856401821e+00
--1.9922083712940637e+01
-3.8671150196869553e+00
--2.5105154026638190e+00
--2.0222964044272626e+01
-5.1584568097537842e+00
--2.1929374867727542e+00
--2.0736356879079739e+01
-1.4484990881241593e+01
--9.4746203099041293e-01
--3.0859154402296582e+01
--1.2658466341646513e+01
--8.4713436057165268e+00
--2.1719265084852239e+01
--4.3430645583187086e+00
--5.9765869129411806e+00
--2.4075173950423469e+01
--2.0247511519530534e+00
--5.0558044254464169e+00
--2.2684099301934065e+01
-6.0975529178452170e+00
--2.2604012203695865e+00
--2.2180059704470587e+01
--5.4903108511235237e+00
--6.5197953924486649e+00
--2.3692770836647895e+01
--2.6687670132993926e+00
--5.3314871464185103e+00
--2.3424373037002557e+01
-2.4690370117883247e+00
--3.0911813607084264e+00
--1.9767515199501631e+01
-1.5042653665741886e+01
--1.3632481415485929e+00
--3.2295696189480324e+01
-1.4530774055691586e+01
--1.2233109387471122e+00
--2.9870689699644416e+01
--5.4379779726387856e+00
--6.6590337159620558e+00
--2.3506164848024397e+01
-6.1837696745237372e+00
--2.5641444788334691e+00
--2.2604509643194167e+01
-4.0846781434652017e+00
--2.8359153908192658e+00
--2.0379392990479719e+01
-1.4648163042523235e+01
--1.4355010416958029e+00
--3.0098386260751774e+01
-1.4546448406783295e+01
--1.4407034881596072e+00
--2.9833796045964725e+01
-2.7240485333006181e+00
--3.4359889749946797e+00
--2.1007076335018244e+01
-4.6278095761591880e+00
--2.9063851589828769e+00
--2.0869015612508683e+01
--5.5249588212462486e+00
--6.6644454603251075e+00
--2.2537533360583563e+01
--6.0138271558093557e+00
--6.8195473974137197e+00
--2.2187322608570156e+01
-4.6525760679672832e+00
--2.9507177664782267e+00
--2.0901491170216456e+01
-1.4681364236801812e+01
--1.7160651945183052e+00
--2.9798191311480487e+01
-1.4838850198390709e+01
--1.6993624738489348e+00
--3.0111840529876563e+01
--5.9889960724032667e+00
--7.2049175272660673e+00
--2.2691712502772599e+01
-3.4320604017179503e+00
--3.5360843813132097e+00
--2.0758166766466399e+01
-1.4803026849565009e+01
--1.7529554713135658e+00
--2.9729953325887195e+01
-1.4823777094520960e+01
--1.9150902813612452e+00
--2.9487431652163682e+01
-4.3859000593797237e+00
--3.4459914346365932e+00
--2.1288675093877934e+01
-3.9529488840473110e+00
--3.6004084488505415e+00
--2.1102870990352233e+01
-2.9479818661827744e+00
--3.9272646115848873e+00
--2.0827081971364425e+01
-2.5006841751712980e+00
--4.2004677401503852e+00
--2.1109813666339676e+01
-1.6759684309566860e+00
--4.5217947278674444e+00
--2.1326078349947210e+01
-4.6190569486216067e+00
--3.6029730607105943e+00
--2.1629191888071926e+01
-3.8841828721498990e+00
--3.9338071030730455e+00
--2.1425077537573653e+01
-3.8746305233247185e+00
--3.9217175639009767e+00
--2.1341597380165574e+01
-3.8514571209807165e+00
--3.9713404938342043e+00
--2.1441942390886844e+01
-1.1483865799772097e+00
--5.1026546083207620e+00
--2.1984447513939358e+01
-1.3906801738439233e+01
--2.7939410778474962e+00
--3.0293186433745262e+01
-1.2973167889484916e+01
--2.8281436544840743e+00
--2.9022386978641624e+01
--7.8866677648405279e+00
--8.2003791017813512e+00
--2.1161550374982095e+01
-1.2592402386896566e+01
--3.0657910217523199e+00
--2.9360979415758376e+01
-3.7972000033782591e+00
--4.5364062986197942e+00
--2.1977851507630003e+01
-1.3313892966624042e+01
--3.1227529925659296e+00
--2.8176733449812225e+01
-4.7515383107168869e+00
--4.7041806739992049e+00
--2.2714939287812573e+01
--1.1795847039966448e+01
--1.0035084671309876e+01
--1.9713183057254746e+01
-3.2212713895087388e+00
--5.1614466341819236e+00
--2.1791046134946868e+01
--2.6179664610186015e+00
--7.6244532463365342e+00
--2.2149582140392280e+01
-8.2785525530924335e+00
--4.8868999954721524e+00
--2.5318545657678730e+01
-1.2845011222637844e+01
--4.0624199448919676e+00
--2.7014273454177566e+01
-1.2761783948159380e+01
--4.0774821080232506e+00
--2.6908268643275782e+01
-1.2761783948159380e+01
--4.0774821080232506e+00
--2.6908268643275782e+01
-1.2733908113436199e+01
--4.4701645006892132e+00
--2.7612936656931694e+01
--1.8783448535727645e+00
--7.7564425816553610e+00
--2.1399365499905588e+01
-2.6955274837900460e+00
--6.6143209705493051e+00
--2.2133922676401223e+01
-7.3020938195601504e-01
--7.3432107581283175e+00
--2.1685360595710936e+01
-7.5653734204051233e+00
--5.8466721249240283e+00
--2.4041778438503719e+01
--4.2603563817258392e+00
--8.8821658036671494e+00
--2.0333504671378087e+01
-9.4821790375465618e+00
--5.5082943718046709e+00
--2.4794188672771213e+01
--8.9908972798170534e+00
--1.0310441161786786e+01
--1.8834738553895949e+01
--3.9422377096865948e+00
--8.6262858836224972e+00
--1.9652031470005312e+01
--3.9422377096865948e+00
--8.6262858836224972e+00
--1.9652031470005312e+01
-8.3633964608109390e-01
--7.5920942954956674e+00
--2.1676498462547951e+01
-1.2287624343349501e+01
--4.9631999493887298e+00
--2.5639586001493981e+01
-1.1782244928404149e+01
--5.3235632785184013e+00
--2.6193951870989487e+01
-1.0620978961431486e+00
--7.5828322156184509e+00
--2.1687364501482090e+01
-9.0540149515712365e+00
--5.9462488858061402e+00
--2.4534298154753209e+01
--1.8073374963655420e+00
--8.3772731537024789e+00
--2.0370777449928926e+01
--1.0116375348843507e+01
--1.0954571037042713e+01
--1.8311508268307442e+01
-1.1547769595354426e+01
--5.5610701268344407e+00
--2.5813864198620045e+01
-3.6528069407536297e+00
--7.0424644330358515e+00
--2.1832649936554965e+01
-2.1701327895865328e+00
--7.9231984098748995e+00
--2.1599342490848493e+01
-9.5165315865195288e-01
--8.1642923189830139e+00
--2.1038703566445644e+01
--2.7166928619406669e+00
--9.1567108360953675e+00
--1.9982055694742680e+01
-2.6329768843159949e+00
--8.1072526718274851e+00
--2.1354729703854186e+01
-2.1892463069962331e+00
--8.3316758030777596e+00
--2.1297909958062601e+01
-1.2484628902518988e+01
--6.0243658131970639e+00
--2.4830563496090647e+01
-1.1812092278088134e+01
--6.2277711154357034e+00
--2.4460680440479393e+01
-1.0781501934340254e+01
--6.4375681072075617e+00
--2.3811027072599455e+01
-3.5540247275072936e+00
--8.1636988238637205e+00
--2.1305353541055620e+01
-1.4462216690253835e+00
--8.7631137283544192e+00
--2.0302484079180566e+01
-6.0711434411910377e+00
-2.3481360863599622e+01
--4.8511387912710710e+01
-2.5484773825281066e+00
-2.1922482484166284e+01
--4.7061337425320936e+01
--1.0644309547951030e+01
-1.5171480383415371e+01
--3.9260984067972743e+01
-5.8223964790808491e+00
-2.2967989840085906e+01
--4.7845325960066432e+01
-7.6700112352529262e+00
-2.3643268462561046e+01
--4.8669089420319985e+01
-7.7479083078711701e+00
-2.4004230086176332e+01
--4.9546684252598503e+01
-1.5352674767149294e+01
-2.8665598627689555e+01
--5.6492397907506806e+01
-1.3820785102046417e+01
-2.6453135951465555e+01
--5.2362355856686911e+01
-7.6411535445362420e+00
-2.4116103287943965e+01
--5.0481610723260616e+01
-1.4329566620996745e+01
-2.6873814673030026e+01
--5.3206652620860254e+01
-6.8634553001999183e+00
-2.3556675154774720e+01
--4.9627063044526857e+01
-6.6439243074180636e+00
-2.3019593417096914e+01
--4.8371852041100880e+01
-1.4246790993387934e+01
-2.7864107852978776e+01
--5.5755532610474013e+01
--1.5828635661623149e+01
-1.3372265288733143e+01
--3.8152802781532486e+01
--1.2692378705516150e+01
-1.4431443842831577e+01
--3.9112708603802538e+01
-9.7248426452387848e-01
-2.0317763271090257e+01
--4.5498437757694845e+01
-9.9120938863206420e-01
-2.0357289942535761e+01
--4.5592473183649709e+01
-5.7731411199956524e+00
-2.2857944086691564e+01
--4.8885119895414441e+01
-5.7731411199956524e+00
-2.2857944086691564e+01
--4.8885119895414441e+01
--1.2864219389948364e+01
-1.4073520917788979e+01
--3.8797676395589356e+01
-9.9585460810632096e+00
-2.4425264000666790e+01
--5.0494480402818944e+01
-1.5954496216810218e+01
-2.8689319832489211e+01
--5.7467518029418414e+01
-9.6033390242611516e-01
-1.9975132542855484e+01
--4.6292356354751078e+01
--8.9390667947806790e+00
-1.5230875769718137e+01
--4.1222475307349562e+01
-2.4398876178140396e+00
-2.0365179408856509e+01
--4.7003934335333803e+01
--1.6804055161324683e+01
-1.2068521991038496e+01
--3.7801212451374589e+01
-2.8420798586079721e-01
-1.9353166220391330e+01
--4.6662769495969478e+01
--1.5842663859360240e+01
-1.2735766517733239e+01
--3.9982632553186804e+01
--1.5540937095951834e+01
-1.2374895147350889e+01
--3.9225649172008964e+01
-1.3414363495026960e+01
-2.5197629757975420e+01
--5.3158840989907077e+01
-5.5492896030011485e+00
-2.1658358622565665e+01
--4.9393281789600600e+01
-1.7039099707261258e+01
-2.6990835702703265e+01
--5.5803568864177137e+01
--2.7530733740761093e+00
-1.7813159329450066e+01
--4.5592892300460264e+01
--1.2083929405936658e+01
-1.3651826327444901e+01
--4.1236415844186325e+01
-1.6597421471236885e+01
-2.6138298764372774e+01
--5.4802115194254199e+01
--6.6323488185135093e-01
-1.8427179508865045e+01
--4.6578511999728960e+01
-1.2665876725246656e+01
-2.5442546706736763e+01
--5.6287332532404797e+01
-8.6906242025994036e+00
-2.2566476562451928e+01
--5.1386130937327543e+01
--5.4346246093244517e+00
-1.6083765317125213e+01
--4.4134510773285271e+01
-1.1499829496128756e+01
-2.3705481624777679e+01
--5.2674421379965324e+01
-1.9745402752875588e+01
-2.9547477398751255e+01
--6.2899666024090074e+01
--9.9722973730682281e+00
-1.4046411568260861e+01
--4.1959583206401994e+01
-1.8898378876769424e+01
-2.8912787574453020e+01
--6.2800615510548518e+01
--9.9789648486001283e+00
-1.3941443208568806e+01
--4.2420185401632047e+01
-1.6767295610063002e+00
-1.9233637832509221e+01
--4.8536224685587264e+01
--3.3327129415094805e+00
-1.6541518026179567e+01
--4.5980718554973564e+01
--7.9582866249081592e+00
-1.3803509730265647e+01
--4.2025650630200758e+01
--8.2394871270846330e+00
-1.4485301042390944e+01
--4.3975472573217374e+01
--1.0708311857387440e+00
-1.7631877025132766e+01
--4.8187582864421898e+01
--7.8581831395226658e+00
-1.3724676158981575e+01
--4.3413133080917092e+01
--1.6047127347749885e+01
-1.1143621966656374e+01
--4.1103600179451341e+01
--9.7482990727799912e+00
-1.3184902073358476e+01
--4.3561741434342785e+01
--1.4419410956742890e+01
-9.9708781656621586e+00
--3.7502820345000345e+01
-6.3123260862394490e+00
-2.0337815942486657e+01
--5.3960837550854869e+01
--1.2245988253891975e+01
-1.1694318016815485e+01
--4.2931256339928261e+01
--1.2179513528384415e+01
-1.1549080716888069e+01
--4.2647672918131519e+01
-9.3465063339723127e+00
-2.1622405548490072e+01
--5.6717966528322961e+01
--1.2693194886342173e+01
-1.1373279573375754e+01
--4.2897486212088083e+01
-1.4544553706261201e+01
-2.3225502431930767e+01
--5.6847116986667743e+01
--1.2605377229058391e+01
-1.0320945884104614e+01
--3.9677456476672127e+01
--9.4690948358609059e+00
-1.2252190367538754e+01
--4.3730621076084965e+01
-1.4740128507378532e+01
-2.2967412257655077e+01
--5.7034216904871293e+01
-1.4740128507378532e+01
-2.2967412257655077e+01
--5.7034216904871293e+01
--1.1328449966982676e+01
-1.1253058303152859e+01
--4.2687561292824164e+01
--4.2058840494350251e+00
-1.4636328057921002e+01
--4.7720445200568953e+01
--4.1781788921149854e+00
-1.4549037092158903e+01
--4.7685955914347105e+01
--9.5199310368274332e+00
-1.2414367519784387e+01
--4.5009859550306082e+01
--3.6733352613911377e-02
-1.6514435949103127e+01
--5.0120661456524473e+01
-3.6992466538773994e+00
-1.7936335149346348e+01
--5.2293749710368878e+01
-7.7346250808325436e+00
-2.0658302869740261e+01
--5.7310434178801465e+01
-9.1184797007026788e+00
-2.0311009453040519e+01
--5.5545644765478841e+01
--9.4673612556958240e+00
-1.2334036054215444e+01
--4.5572193743159161e+01
--5.9625653290305483e+00
-1.3757728798842960e+01
--4.7488347606979481e+01
--3.7123340566319230e+00
-1.4636544954135561e+01
--4.8502361195523086e+01
--1.5026151208200828e+01
-8.0819021410112821e+00
--3.6950034287689334e+01
--3.6241599795962904e+00
-1.4545479098998419e+01
--4.8377784425174198e+01
--1.5019631861438429e+00
-1.5469353326435279e+01
--4.9804868006980094e+01
--1.7421928071139131e+01
-9.1469902884457586e+00
--4.2176845974436723e+01
--6.0640493267542217e-01
-1.6032805067260799e+01
--5.0841266190080241e+01
-7.2272147914007485e+00
-1.9427933876002523e+01
--5.4801387540626195e+01
--3.6212719205880464e+00
-1.4476055794786358e+01
--4.8954830653890355e+01
--1.2394857024230259e+01
-1.0740200940060459e+01
--4.3846927750254146e+01
--3.9715052255859842e+00
-1.4432198365880460e+01
--4.9111155047268753e+01
--3.9461350920853837e+00
-1.4347449010743583e+01
--4.8766839076590294e+01
--6.6321593520909365e+00
-1.2826254279444349e+01
--4.6794885388310448e+01
-9.7282842112547048e+00
-1.9955559546665221e+01
--5.5657603184115459e+01
-9.6902120549531539e+00
-1.9931589376653577e+01
--5.5520673261716126e+01
-5.0176426115636854e+00
-1.8165492587260811e+01
--5.3997109946683558e+01
-1.0110772403910183e+01
-1.9983217119373347e+01
--5.6022679715670364e+01
-1.0134465285053817e+01
-2.0050756411503503e+01
--5.6181753721804178e+01
-1.6339329164822281e+01
-2.3274141956402854e+01
--6.1947018719480646e+01
-9.0832298865557508e+00
-1.9334462366246743e+01
--5.5723193081385759e+01
-1.1181082891397672e+01
-2.0986027532239891e+01
--5.9150102464755747e+01
-1.1175320483969390e+01
-1.9758001848152240e+01
--5.6353752205501017e+01
-1.3020391758169170e+01
-2.2079593948530714e+01
--6.2588343690801885e+01
-5.0226018832635893e+00
-1.7513133756752485e+01
--5.4203210042944768e+01
-5.1488451898554626e+00
-1.7424400170492593e+01
--5.4098209851976470e+01
-5.8229757676004761e+00
-1.7624337821672118e+01
--5.4507160917374286e+01
-6.2270389783486140e+00
-1.7757984845451592e+01
--5.4889642175460764e+01
-1.0646598736482758e+01
-1.9682750422573005e+01
--5.7697692502567016e+01
-1.0872763812680095e+01
-1.9573338778064613e+01
--5.7142553409758960e+01
-1.0681897731768872e+01
-1.9624556856428452e+01
--5.7881030121615154e+01
-6.6580374876659993e+00
-1.8510092566877876e+01
--5.7905935051779146e+01
-1.2425261009667439e+01
-2.1344696137050562e+01
--6.2408697400077791e+01
-1.0812104719431041e+01
-1.9477853010377700e+01
--5.7580394438080148e+01
--3.2758009905234835e+00
-1.3254941981891490e+01
--5.0225083029914252e+01
--1.2757849918071090e+01
-8.4551550292543318e+00
--4.2497455534036725e+01
--4.7128321289853163e+00
-1.1840961870648361e+01
--4.8882130621531267e+01
--4.7128321289853163e+00
-1.1840961870648361e+01
--4.8882130621531267e+01
--1.2798505450289790e+01
-8.2575964043730785e+00
--4.3207097061132082e+01
--1.9136039423118273e+01
-5.8638595145745338e+00
--4.1161937535650971e+01
-3.5843109030690030e+00
-1.4748032988775073e+01
--5.2540705824839414e+01
--1.3126267101023686e+01
-6.9269337739499184e+00
--4.0258298742882261e+01
-4.9226027752964114e+00
-1.5094553260873859e+01
--5.3941007524952070e+01
-4.9456743994433090e+00
-1.5187199291969543e+01
--5.4222922375034862e+01
-5.4271591010784821e+00
-1.3883777105705041e+01
--5.1077651263863260e+01
-6.4656744438876412e+00
-1.3809124361224344e+01
--5.1719843028783757e+01
-6.4656744438876412e+00
-1.3809124361224344e+01
--5.1719843028783757e+01
-5.9487674473322940e+00
-1.3588723313236168e+01
--5.0994887639662949e+01
-4.1334274357104182e+00
-1.2929287190856886e+01
--5.0675437669169334e+01
-4.0045917657964631e+00
-1.3050602952319096e+01
--5.0909958525243539e+01
-6.5021417321583579e+00
-1.3797348411091239e+01
--5.1331848536338448e+01
-4.1841424085572498e+00
-1.2877612497958822e+01
--5.0238336286452274e+01
-4.6721348007612375e+00
-1.2898662190906801e+01
--4.9737462075342329e+01
--9.3729410444525225e+00
-6.9209903238586303e+00
--4.1388174386312365e+01
-3.4488002948262242e+00
-1.2223916699885315e+01
--4.9273853676083824e+01
-4.6570598261239144e+00
-1.2580599664908796e+01
--4.9059696849185769e+01
--6.2066702271311662e+00
-8.2562244360301502e+00
--4.3705976304554170e+01
-1.3183870729738942e+01
-1.1751875189352699e+01
--3.6549525790883763e+01
--1.2646425505661687e+01
-5.2250215309353338e+00
--3.9796157710979735e+01
-6.1571722541791791e+00
-1.2301874509164952e+01
--4.9184526419668195e+01
--1.2576317817005458e+01
-5.1656906531925424e+00
--3.9300400258798007e+01
-3.8976299724679002e+00
-1.2226915214181100e+01
--5.1921915394455986e+01
-5.5043824215937631e+00
-1.2188002472426755e+01
--5.0682725456901110e+01
--1.4839687366886336e+01
-3.1026822763038870e+00
--3.3686266350659935e+01
-6.3140504091112728e+00
-1.2001431056515791e+01
--4.8804714413455848e+01
-4.0304096522822315e+00
-1.1199695288913816e+01
--4.8237129236200147e+01
-3.9580227026190813e+00
-1.1251495742075633e+01
--4.8376616081125370e+01
-4.6464390980015891e+00
-1.1169975096415456e+01
--4.7747885258036590e+01
-4.3641945359944776e+00
-1.0979740246076441e+01
--4.7460212887441905e+01
-3.4963466696048875e+00
-1.0591645111248566e+01
--4.7107335488164708e+01
-3.9440479346104662e+00
-1.0544268097777907e+01
--4.7033045123677347e+01
-3.9007372099274589e+00
-9.9006039693331669e+00
--4.6052282451326526e+01
--1.9641776973705362e+01
-1.3552445574496534e+00
--3.4412443508608469e+01
-2.3644259399132594e+00
-9.2136585576492305e+00
--4.4747001498983977e+01
-4.4534947039280448e+00
-9.4241092006957565e+00
--4.5542567966024087e+01
-9.2919414850726891e+00
-1.0901633187957300e+01
--4.7249875208001086e+01
-3.8459632780851774e+00
-9.1574420921386643e+00
--4.5064866115687025e+01
-4.3212378004888619e+00
-9.2034534234887158e+00
--4.4954872794634895e+01
-4.3595870981799294e+00
-8.7188963874537464e+00
--4.4475151360902792e+01
--6.2378380931683335e+00
-4.9092343067712791e+00
--3.9733502411058055e+01
-9.1674225665263442e+00
-9.7741818660196600e+00
--4.5631778010475472e+01
-1.0152801472126674e+01
-9.9908257254232211e+00
--4.5824255548624919e+01
-8.0949584808051966e+00
-9.0909825958262136e+00
--4.4014187695685713e+01
-1.4103594332634380e+01
-9.3236758742950485e+00
--3.5670531293104638e+01
--1.1618870333714113e+01
-1.9301618385017789e+00
--3.4840509834641253e+01
-7.8261303619487244e-01
-3.6411094850331369e+00
--2.3088363923092611e+01
--3.1893869032228488e+00
-3.1153422824338661e+00
--2.7744017797052681e+01
-7.4809538642868767e-01
-3.7296350602001316e+00
--2.3935565728241169e+01
-8.2212825148716675e+00
-8.1709228301380499e+00
--4.3726391584732312e+01
--6.7309183112381410e+00
-2.5280996835242924e+00
--3.5847546687055051e+01
--3.1159561449519444e+00
-2.4873014051954314e+00
--2.6595254526838737e+01
--6.3535827311219304e+00
-2.6583777601578875e+00
--3.5981616416097623e+01
--9.9059940920229228e-01
-2.5307213016107397e+00
--2.2457786089732640e+01
--3.5142234015448492e+00
-2.2323246909594285e+00
--2.6571163235695014e+01
-2.9409941070875369e+00
-3.6565350085858430e+00
--2.3856112699708181e+01
--8.4598650665938635e+00
-1.4898227009105354e+00
--3.4396537704616385e+01
-7.4961983389419435e+00
-6.7021613168513214e+00
--4.1858379912507253e+01
-3.8290594280062500e+00
-3.6556615890608497e+00
--2.3621203260981755e+01
-7.5200198549767139e+00
-6.5474454276556013e+00
--4.1673024840800764e+01
-1.0307948256636957e+01
-6.9520697785745709e+00
--4.3141342532068158e+01
-1.3161452526350045e+01
-6.8789417939841186e+00
--3.3084001785272179e+01
-1.2252755710427239e+01
-6.3786285089042067e+00
--3.0229360120441768e+01
-3.8868537739646798e+00
-3.1221962977804147e+00
--2.2655351201231884e+01
--6.9404463428273635e+00
-7.5741949913826045e-01
--3.3336570335390043e+01
--4.6119513175789867e-01
-1.6920254173145701e+00
--2.1454226729462544e+01
--4.6119513175789867e-01
-1.6920254173145701e+00
--2.1454226729462544e+01
-1.0271617674140417e+01
-6.3765874717258386e+00
--4.2331563934179620e+01
--1.6581883410193465e+00
-1.3310803257133026e+00
--2.2611390139900060e+01
-9.5047840159533585e+00
-5.9251105262629586e+00
--4.0842422650521058e+01
--6.7120111548387440e+00
-6.1527768510959602e-01
--3.3417862013518480e+01
-1.2512501454109325e+01
-5.9757348153171481e+00
--3.0797616137628168e+01
-9.2017315235405039e+00
-5.7272197573208254e+00
--4.0965819712088120e+01
--2.2173808673555104e+00
-1.1423441835459380e+00
--2.3748348194165153e+01
-9.7710510102726378e+00
-5.6990203040509302e+00
--4.0706888177631491e+01
--6.5159737396657613e+00
-3.3609836896527689e-01
--3.2650827971330330e+01
--3.7167248544256850e+00
-5.8448476882258815e-01
--2.3955007243295878e+01
-1.1598879068994266e+01
-6.0957171618886532e+00
--4.1002655807355310e+01
-3.4808189828851543e+00
-2.4724885092778250e+00
--2.1629856062097669e+01
-1.2592321807886215e+01
-5.6388896526787606e+00
--3.0147924379289154e+01
-1.1743619747383105e+01
-5.9510883131878369e+00
--4.0790245706960128e+01
-1.1647931408551804e+01
-5.8446739513161061e+00
--4.0663868826859456e+01
-1.2843178576299028e+00
-1.6236400945380947e+00
--2.0609397364332445e+01
-1.2843178576299028e+00
-1.6236400945380947e+00
--2.0609397364332445e+01
--2.5520205158107485e+00
-6.3325665609278581e-01
--2.3077149883892130e+01
-1.4095405698743289e+00
-1.8073391819421978e+00
--2.0919116706275435e+01
-1.2322916497037559e+01
-5.5143770253809574e+00
--2.9115396923832357e+01
-1.2229045175079724e+01
-5.3835592094704694e+00
--3.1389959180438808e+01
--2.9841749335282053e+00
-4.4192127822766752e-01
--2.3798556588672767e+01
-1.3404897247509785e+01
-6.2254773048891652e+00
--4.4571228960053830e+01
-3.4700562841043050e+00
-2.0056099519981410e+00
--2.1369283205649428e+01
-6.1740045840661661e-01
-1.1128246592025153e+00
--2.0582998194818835e+01
--1.6594566582778918e+00
-4.5920225831464367e-01
--2.2400503659599206e+01
--1.0017690537852149e+00
-5.6647010446154122e-01
--2.1685972757177634e+01
-2.3732806526687762e+00
-1.5119831792679659e+00
--2.0554642728160488e+01
-3.3476201930430065e+00
-1.7860767995447866e+00
--2.1006641276973163e+01
-1.3266396315853877e+00
-1.1587161994339501e+00
--2.0467810981630208e+01
-1.5499176795561667e-01
-7.4398426247082050e-01
--2.0778051731238175e+01
-1.2634325332856417e+01
-4.6128546478095931e+00
--3.2062144251345913e+01
-3.5330196817218691e+00
-1.5212032440692564e+00
--2.1157127087867789e+01
--1.4989445081758546e+00
-9.2857208823296476e-03
--2.2120353851977320e+01
--9.1228681882281055e+00
--2.2770598677123686e+00
--2.8344741732857624e+01
--8.0738011822976397e+00
--2.1001809898244899e+00
--2.9740020687671922e+01
--3.1447930577312189e+00
--6.0822685520111119e-01
--2.2536153441416023e+01
-9.1917769440011857e-02
-3.0973087129303822e-01
--2.1105080992538667e+01
-1.3173935294262936e+01
-4.3847049029460567e+00
--3.3765547625598764e+01
-9.4887868751976934e-01
-4.7066833517087003e-01
--2.0381735356741672e+01
-9.4887868751976934e-01
-4.7066833517087003e-01
--2.0381735356741672e+01
-5.3260443772909545e+00
-1.8128653479862791e+00
--2.3098187850692838e+01
-1.9047330771249416e+00
-5.9428840958100027e-01
--2.0242580892800522e+01
-4.9780572595579367e+00
-1.4516279260409237e+00
--2.2307080325396775e+01
--1.2432073166984200e+01
--3.8719034021424283e+00
--2.4887034680667508e+01
-1.3669553350857366e+00
-1.4119376179365764e-01
--2.0184849572819097e+01
-2.4482693769894870e+00
-4.2581508288249831e-01
--2.0340203676305975e+01
--2.9059908271070269e+00
--1.3482624833951140e+00
--2.1522061063296480e+01
-1.3069357793745098e+01
-3.2077962717103756e+00
--3.0671701128754439e+01
-2.6770373091963768e+00
-2.3827419742327124e-01
--2.0266413660603948e+01
-1.3618187987986957e+01
-2.8893816307498708e+00
--3.3897018466024029e+01
--5.5242353580068015e-01
--1.0474610970908134e+00
--2.0956896973307000e+01
-2.3633149895939796e+00
--1.2270658224806158e-01
--2.0322557521420269e+01
--1.4439377169849474e+00
--1.4164565125283739e+00
--2.1352473331193671e+01
-4.3620180038787719e+00
-3.8171381524162318e-01
--2.1296175854380195e+01
-1.3485270689800929e+01
-2.7719281635806006e+00
--2.9372651670128807e+01
--9.5076973696122131e-03
--1.0331121070389533e+00
--2.0971848453136261e+01
-8.2113772039604641e-02
--1.0175257315874688e+00
--2.0852553582952922e+01
-5.8539071857805354e+00
-5.8322010643719746e-01
--2.3393395533188723e+01
-2.5067048251330228e+00
--3.5366883252180903e-01
--2.0300265520860830e+01
-2.7517297211232612e+00
--2.3428506070229962e-01
--2.1421665409907195e+01
--1.8646145894000485e-01
--1.2629566901171041e+00
--2.0686597225118497e+01
-2.1010286287065285e+00
--5.2403256675701870e-01
--2.0356471937202436e+01
-2.2127723347032817e+00
--4.9938021970118351e-01
--2.0384088371153947e+01
-4.8570117966255308e+00
-2.1414564172557976e-01
--2.1743500377679521e+01
-5.3232430047517791e+00
-2.2481087998300522e-01
--2.2434225493260389e+01
-6.7507206182654900e-01
--1.1605526494211642e+00
--2.0643723467412190e+01
--1.5724324770861891e+00
--1.8870961227609897e+00
--2.0983833717589988e+01
--1.3522072037639943e+00
--1.9237037912914530e+00
--2.0890828962087216e+01
-1.1241757765745912e-01
--1.5427958185346384e+00
--2.0403723464601253e+01
--5.8208456329708564e+00
--3.9052969024633830e+00
--2.6467276839259764e+01
-4.7092560723370678e+00
--3.4282366056829977e-01
--2.1602662275711591e+01
-5.3895503658693897e+00
--2.0689868970409886e-01
--2.2369252283596595e+01
-1.0436237088790691e-01
--1.6963829913363808e+00
--2.0462697866603040e+01
-5.8013709603320125e+00
--1.1592143761229219e-01
--2.2501961585171617e+01
-1.4300181854428963e+01
-1.7004628372881636e+00
--3.2755575438910050e+01
-2.2533404562094712e+00
--1.0964316794005076e+00
--2.0539995043773580e+01
-1.3501280131107960e+01
-1.4650954489504593e+00
--3.1280474727385855e+01
-1.5072708451311873e-01
--1.8367524570072087e+00
--2.0523000447183065e+01
-3.5572411009166593e+00
--8.1218932437835434e-01
--2.0842898266507575e+01
-2.9478421360665674e+00
--1.0597790949401928e+00
--2.0636064884922423e+01
-3.2922362791295874e+00
--9.9779549676081869e-01
--2.0763141997009747e+01
-3.2928508886100301e+00
--9.9081964589272842e-01
--2.0780441789578489e+01
-3.3732859206932062e+00
--1.0039462014136555e+00
--2.0859100653090387e+01
-1.4078718512124873e+01
-9.8118512746080178e-01
--3.3612891882792852e+01
--1.4349241526109923e+01
--7.2557513731328669e+00
--2.3486752411495051e+01
-1.4004216135974581e+00
--1.8104507223074631e+00
--2.0088490400682257e+01
--1.0604378604385783e+01
--6.1113668296195289e+00
--2.2092875392108613e+01
-2.5226823119849620e+00
--1.7025670073902193e+00
--2.0212921154248392e+01
-4.1215302761208665e+00
--1.2674601824380372e+00
--2.0894304132255499e+01
-3.2327279400931275e+00
--1.5645097059975908e+00
--2.0399715984569774e+01
-3.8540301445881568e+00
--1.4404494911287089e+00
--2.0564935688860047e+01
-3.4332333154149746e+00
--1.6084176361864120e+00
--2.0411291726685999e+01
-5.5786590199926209e+00
--1.1494800517281361e+00
--2.2075985991649979e+01
--8.8251077905092821e+00
--5.9564834570688738e+00
--2.2349710407920632e+01
-8.7520361753162645e-01
--2.4898919380429012e+00
--2.0752580004233433e+01
-8.6700658410444742e-01
--2.4875994204925806e+00
--2.0144908301866408e+01
-1.7436312022246869e+00
--2.3323135962271486e+00
--2.0442114864717464e+01
-1.8363939007634597e-01
--2.7169667794919854e+00
--2.0394092034527358e+01
--6.0783123037166586e-01
--3.3331334139211970e+00
--2.1099867479506909e+01
--1.3624784169801972e+01
--7.9496047295873469e+00
--2.2538164015356799e+01
--1.3624755679554211e+01
--8.1373053254727772e+00
--2.2443715465159706e+01
--6.6675784618216767e+00
--5.9752005960442283e+00
--2.3512622702935776e+01
-5.1426463948042977e+00
--1.7805083211168007e+00
--2.1276045692162182e+01
-1.6311651292559077e+00
--2.7468300029422443e+00
--1.9901769722616525e+01
-1.4180044465270141e+01
--5.1058613223770866e-01
--3.1594431011548252e+01
-2.3360536167403412e+00
--2.5650802189340025e+00
--2.0097247864358366e+01
-1.4962256693732959e+01
--4.2011681928863615e-01
--3.2324353362400991e+01
--1.0001599733998567e+01
--6.8664513356374739e+00
--2.0994024115164869e+01
--7.5598983197750087e+00
--6.3837423743052542e+00
--2.3106193885748020e+01
--5.9380000020151753e+00
--5.9696101243348236e+00
--2.3753044586866363e+01
--5.9380000020151753e+00
--5.9696101243348236e+00
--2.3753044586866363e+01
--1.3184358260015435e+01
--8.2655862162064313e+00
--2.2092425458580962e+01
--5.8316161449817621e+00
--6.0724654644910290e+00
--2.4126675644951902e+01
--1.0070800074885420e+00
--4.0952176671757679e+00
--2.2351406990865986e+01
-1.4529387061447288e+01
--6.3295069366770307e-01
--3.1432804860150359e+01
--9.7731504712568351e-01
--4.2645808550298545e+00
--2.2245065027272311e+01
-1.4263123370827323e+01
--8.5278136434706353e-01
--3.1421802179933067e+01
-6.0332491289263830e+00
--1.9694616278912247e+00
--2.1740221293129252e+01
-5.8815311537628672e+00
--1.9909357148046916e+00
--2.1501017763881933e+01
-1.7167962738796374e+00
--3.1066850321319071e+00
--1.9895969509936684e+01
--9.0285773344393783e-01
--4.4504585691579628e+00
--2.2488138671331193e+01
-1.8582925452498724e+00
--3.0927840638574282e+00
--1.9797811482520412e+01
--5.6310142277066229e+00
--6.3743813577340820e+00
--2.4078804659751839e+01
-5.8955133672998894e+00
--2.2577820143607741e+00
--2.1841268881810286e+01
-5.2071865418616401e+00
--2.2967878892202380e+00
--2.0636956332797045e+01
-4.3032491536595341e+00
--2.5610894653278713e+00
--2.0327818020971669e+01
-3.0493224388671609e+00
--2.8771298990830707e+00
--1.9760034157127510e+01
--1.2255123259392390e+01
--8.5068023210283883e+00
--2.1545721639557868e+01
-6.0219392358560979e+00
--2.5108137462764559e+00
--2.2297123967878672e+01
-4.4800225284775568e+00
--2.7025265224176569e+00
--2.0547180341187598e+01
-4.4800225284775568e+00
--2.7025265224176569e+00
--2.0547180341187598e+01
-1.8552726904008965e+00
--3.5550153200380947e+00
--2.0344836988829535e+01
-6.2356438292551228e+00
--2.6650383719992630e+00
--2.2837604279236558e+01
-1.1278244284314129e+01
--2.4216927822337584e+00
--2.9298729627657131e+01
--8.0671539133517740e+00
--7.3839112663250015e+00
--2.1433318973826772e+01
--5.9879147400728652e+00
--7.0344070201203444e+00
--2.3000781070936494e+01
-1.3316113916647428e+01
--2.2293060170398880e+00
--3.0132924910568395e+01
-3.9117307600109994e+00
--3.5540336161500843e+00
--2.1052009567039057e+01
--5.4295919137978341e+00
--7.1601181932903541e+00
--2.2402648586216166e+01
-6.6922022113793469e+00
--3.5325996344716959e+00
--2.4327776508625327e+01
--1.2002858276797463e+01
--9.3587776779108580e+00
--2.0581862990772940e+01
-2.1155920247614395e+00
--4.5099662207912132e+00
--2.2017562944477497e+01
-1.3217735156307496e+01
--2.8075845647605968e+00
--2.9877394191999432e+01
--3.8149715008713914e+00
--7.2347869355017407e+00
--2.3017063103313731e+01
--1.2398458559613735e+01
--9.7832040015948092e+00
--2.0200255593954342e+01
-3.8487463576618932e+00
--4.3870232671040377e+00
--2.1740040752549195e+01
-9.3073959797199723e+00
--3.8570221572205901e+00
--2.6715565852505581e+01
-2.6743354888750583e+00
--5.0876802047088727e+00
--2.2832280605572670e+01
-3.6565533300139395e+00
--4.8262908407388156e+00
--2.2397892669754491e+01
-3.6189515904734169e+00
--4.8529046198821675e+00
--2.2174999486754555e+01
--6.9751080339047045e+00
--8.4732414324457661e+00
--2.0816738292683588e+01
-9.0145603187927836e+00
--4.3780489494708874e+00
--2.6303572996763695e+01
--1.1820749365815123e+01
--1.0093511152641902e+01
--1.9681831949566206e+01
--1.0944594269880852e+01
--9.9464203442234620e+00
--1.9639866361467448e+01
--3.5338648415710465e+00
--7.7252321543840354e+00
--2.1760459397742881e+01
--3.4861670798503037e+00
--8.0185361047505577e+00
--2.1610360123640348e+01
--1.0978642129543321e+01
--1.0218025089623056e+01
--1.9351398444168872e+01
--5.8522731557613277e+00
--8.2930560401316988e+00
--1.9524779832631221e+01
--1.1285618089154598e+01
--1.0466589753826050e+01
--1.9100209189971171e+01
--3.2699205643566884e+00
--8.0973881844206108e+00
--2.1409016670387587e+01
--1.1238277685141933e+01
--1.0500897170820620e+01
--1.9034463390600209e+01
-1.4138007683622019e+01
--4.2986002753679369e+00
--2.7432189829417833e+01
-1.2405911987516886e+01
--4.9643161768966104e+00
--2.6781876947087301e+01
--4.7708328511686400e+00
--9.0999738390799827e+00
--2.0133235796987062e+01
-8.6741138484731906e+00
--5.9979940264497600e+00
--2.4616930651955769e+01
-3.0326258534244226e+00
--7.9593260126655645e+00
--2.1166206399257412e+01
-1.2806742261653772e+01
--6.0383884161768089e+00
--2.4077030733550359e+01
-1.6971007146222550e+00
--8.7760577444803456e+00
--2.0568767378743335e+01
-6.1513955834795366e+00
-2.3144248430051682e+01
--4.7881221189373747e+01
-1.7714302671929754e+00
-2.1053387941608143e+01
--4.5437573476833713e+01
-6.8922557876500914e+00
-2.3426955654841567e+01
--4.8283088897522113e+01
-7.3570657124058156e+00
-2.3633852129357987e+01
--4.8527131792040940e+01
-6.8390806801211061e+00
-2.3387209803891366e+01
--4.8468208633298339e+01
-6.7994424859121185e+00
-2.3296569022774431e+01
--4.8343589733156776e+01
-7.2297329094433556e+00
-2.3487718104220360e+01
--4.8638234066978583e+01
-6.6044282410915525e+00
-2.3945116118501939e+01
--5.0375006130147185e+01
-6.2308585710852400e+00
-2.3012150590977253e+01
--4.8222223399381285e+01
-1.7406508976319440e+01
-2.9985352927553404e+01
--5.9068318083711652e+01
-5.8628780817518997e+00
-2.2778482841992471e+01
--4.8060499369151280e+01
-5.6138135023885791e+00
-2.2637437447934172e+01
--4.8143817997223778e+01
-5.9796181327904243e+00
-2.2705429073096010e+01
--4.8184426534449692e+01
-1.3204687136000645e+01
-2.5989197437916651e+01
--5.1877405605972392e+01
-6.3953876179524416e+00
-2.2971558543629708e+01
--4.8743816671125003e+01
-7.1936157729775365e+00
-2.3461952194130127e+01
--4.9506608682827178e+01
-6.8296358104772095e+00
-2.3120728378050497e+01
--4.8769302695078288e+01
-9.6988364385880494e+00
-2.5308868370212824e+01
--5.3045972167719739e+01
-7.2513051982756860e+00
-2.3175681864800950e+01
--4.9109301035872001e+01
-7.3235668052454201e+00
-2.3246337274707962e+01
--4.9294294714167350e+01
-8.0772877926416431e+00
-2.3425934230677129e+01
--5.0036060878287827e+01
-9.6733773581566940e+00
-2.4622483661507978e+01
--5.2663719440250603e+01
-9.6745143682562524e+00
-2.4665039427031488e+01
--5.2827368038620541e+01
-9.3671013618274372e+00
-2.4396910064669520e+01
--5.3131690975519696e+01
--1.2392941812601981e+01
-1.1639170278885448e+01
--3.4854984956290181e+01
-1.8198005831434362e+01
-2.9473051724075155e+01
--6.0890316745459572e+01
--1.2662775550902223e+01
-1.3265468731975169e+01
--3.9495264629690226e+01
--1.2001523869843904e+01
-1.3564671580763026e+01
--4.0323903648095872e+01
--5.5733954956663156e+00
-1.6421724391519462e+01
--4.3788624445022791e+01
--2.4151417993730799e+00
-1.7863772310644872e+01
--4.5302954390520512e+01
--1.3583023850223418e+01
-1.3028774153991455e+01
--3.9670621712560830e+01
-8.9767927618783467e+00
-2.2732487653046050e+01
--5.1303712164790937e+01
--8.7872842559905013e+00
-1.4769239823948718e+01
--4.2651313115345232e+01
--6.7303110117347087e+00
-1.5671604805257575e+01
--4.3815661999272670e+01
-1.6221043711176332e+01
-2.5664599089238035e+01
--5.4987189673857742e+01
-1.6011426811805272e+01
-2.5440674078906198e+01
--5.4890906303050741e+01
--1.1874607518363865e+01
-1.3109944670571034e+01
--4.1647463535026723e+01
--8.8827956593180506e+00
-1.4461693828466732e+01
--4.3042818354322954e+01
-1.6981716396283211e+01
-2.5591025958542414e+01
--5.5538150494692410e+01
-1.3939076918471596e+01
-2.4680349156145226e+01
--5.5134211666075593e+01
--1.2717695403134597e+01
-1.1285656841313788e+01
--3.7896739672749582e+01
--1.1151068519987696e+01
-1.1547706040589190e+01
--3.8027058025028573e+01
-3.8744725823223329e+00
-2.0573877713025357e+01
--5.2375501305952888e+01
--1.1386788160105528e+00
-1.7420901442178724e+01
--4.7672314328691861e+01
--9.3579579035601803e+00
-1.3217314543769966e+01
--4.1757343538282058e+01
--1.3031620678812070e+01
-1.0150473694810428e+01
--3.6139046704345226e+01
--8.1987486188494660e+00
-1.3865723750332446e+01
--4.4408037914765963e+01
--1.0154356123737879e+01
-1.2703150031181838e+01
--4.3890940239366451e+01
--1.1609184877595144e+01
-1.1873689278304267e+01
--4.3199717335054650e+01
-1.4735832059868335e+01
-2.3134782517252017e+01
--5.7305540588787167e+01
-3.5460687153696324e+00
-1.8044880131653265e+01
--5.1703296494658517e+01
--9.5819397337992314e+00
-1.2280424122474189e+01
--4.4635495630406133e+01
-1.9754219212401935e+01
-2.5132281032676147e+01
--6.0908905833260029e+01
--3.6574987408049591e+00
-1.4911386058299165e+01
--4.8241276600530021e+01
--4.1145656504776635e+00
-1.4545764095100266e+01
--4.7671799352335988e+01
--4.0909742548631201e+00
-1.4569358171153649e+01
--4.8016475800816302e+01
--1.3888585933742353e-02
-1.6443081050005954e+01
--5.0085957346038654e+01
-1.8804209051068668e-01
-1.6392681386091631e+01
--5.0519278358138607e+01
-1.7146433733212827e+01
-2.5164051566427883e+01
--6.4732935486893837e+01
--1.3637282915226527e+00
-1.5566926367188831e+01
--4.9923374081156673e+01
--3.8425880949322053e+00
-1.4445168810496449e+01
--4.8714585064807579e+01
-4.2480660187178030e+00
-1.7775796859343167e+01
--5.3029507058592230e+01
-3.0800695188166449e-01
-1.6155019198440328e+01
--5.1275018638965278e+01
-5.2451090067024584e+00
-1.8320580886120883e+01
--5.4155411465444743e+01
--4.1909668197852046e+00
-1.4078333053088363e+01
--4.8639680361772427e+01
-1.8888494892160704e+01
-2.5712003822893148e+01
--6.7010895676923553e+01
-9.7752179185234329e+00
-2.1145310484546542e+01
--6.0453937630654771e+01
--3.2711582562611959e+01
-5.3207700088353080e+00
--4.1979283396358142e+01
-1.5308599218466753e+01
-2.1735805060743761e+01
--5.8595472923512737e+01
-1.7224691660151056e+01
-2.3615820068876232e+01
--6.2720379190872791e+01
-1.0763572908771367e+01
-2.0100014351559594e+01
--5.6866012963445343e+01
--3.9537202071465143e+00
-1.3850601200006487e+01
--4.9319479122770630e+01
-1.0710162992963042e+01
-2.0097144555409816e+01
--5.7472265223748998e+01
-4.7758848281731012e+00
-1.7442747159950507e+01
--5.4252722243702422e+01
-1.0194900384974147e+01
-1.9662150538673842e+01
--5.7074728907767714e+01
-1.1013912120432298e+01
-1.9721233016052437e+01
--5.7005993787501012e+01
-1.3351680397738050e+01
-2.2091721631563093e+01
--6.3319215897883005e+01
-4.7377186470222794e+00
-1.7126019849894789e+01
--5.4131784952923994e+01
-6.0090087575317668e+00
-1.7651176138726871e+01
--5.5162606352578358e+01
-4.7163441190160613e+00
-1.6897250148334017e+01
--5.4411873450073706e+01
-4.9821772841577445e+00
-1.7610779208531714e+01
--5.6724585944282119e+01
-6.2602007574430774e+00
-1.7566472171200079e+01
--5.5506904776467302e+01
-4.9227900938734876e+00
-1.5677098131567822e+01
--5.4534103166285192e+01
--1.1927185394166274e+01
-7.9852877383622562e+00
--4.3315674569514123e+01
--1.3827132877351007e+01
-6.9720919918690694e+00
--4.1812795209528289e+01
--1.3999366307627971e+01
-6.8739982862602771e+00
--4.2231187347751181e+01
-1.2981569837279036e+01
-1.2830095964512950e+01
--3.6503878084405791e+01
-1.4231088129711276e+01
-1.8758465326077044e+01
--6.0822920339922014e+01
-6.5065538692133087e+00
-1.4370352964896780e+01
--5.2644640019902035e+01
-4.7202085871834205e+00
-1.3332922475352690e+01
--5.0312570317632002e+01
-7.8384633959280592e+00
-1.4360061821191545e+01
--5.1693842567430742e+01
-4.7020942608047127e+00
-1.2977774960197989e+01
--4.9609701998181215e+01
--1.5099064307908025e+01
-3.7547360235514669e+00
--3.4669049770405458e+01
-3.4532434303164896e+00
-1.1135766494652067e+01
--4.7424628608982516e+01
--1.7831639298953942e+01
-2.9708593163482822e+00
--3.6776250298693782e+01
--1.7769698180972988e+01
-2.9342142734497236e+00
--3.7248106876506846e+01
--1.3487376754051782e+01
-4.0487382031030172e+00
--3.7367774166353364e+01
-3.4392978791467725e+00
-1.0534249172164758e+01
--4.6324750202852336e+01
-3.4461859227398679e+00
-1.0550223393917017e+01
--4.6426608098381692e+01
-3.6815701437908066e+00
-1.0861413466736728e+01
--4.7534592532272498e+01
-3.1311264759034350e+00
-1.0112409554338555e+01
--4.5868353696224325e+01
-3.5672355293807794e+00
-1.0069278601320038e+01
--4.6255044949407420e+01
-4.1590170501105952e+00
-1.0306562618145733e+01
--4.5862447424336871e+01
-1.4079275641284867e+00
-9.4486214050225588e+00
--4.6524398304647939e+01
-2.2368683716733924e+00
-9.2896367785893670e+00
--4.5259862291763341e+01
--1.4732921149347606e+01
-1.9467561690693220e+00
--3.1872067138549724e+01
-1.3442475986680952e+01
-1.0488925087988566e+01
--3.6047346858531384e+01
-1.4669050883822055e+00
-8.7334061561053673e+00
--4.4525883549802202e+01
--1.9956501781136179e+01
-6.2297814893696746e-01
--3.3325427215519582e+01
--1.1995519040780774e+01
-3.2678985083786869e+00
--3.6889008338668006e+01
-2.5980263434175583e+00
-8.5513240068862686e+00
--4.4429928106311031e+01
-2.6112287472301245e+00
-8.6876088065223858e+00
--4.4995176252390905e+01
-2.7624834919963899e+00
-8.6391188672617822e+00
--4.4634829813291411e+01
--2.1301547387817137e+00
-6.4249728153804435e+00
--4.1256502335710607e+01
-4.2883975069918536e+00
-8.5940286654043962e+00
--4.4252849995373360e+01
--4.1352918299710630e+00
-5.5030333110170311e+00
--4.0238804270835367e+01
--1.6687539808273396e+01
-1.1120531424683300e+00
--3.4037694000719597e+01
-8.7280434378306726e+00
-9.9669582287701619e+00
--4.7640422551257295e+01
-4.9141125036541426e+00
-8.1530883783897057e+00
--4.4620728757874687e+01
--7.7943046355402812e+00
-3.1096484354144858e+00
--3.6608910720266095e+01
-8.1432427852042788e-01
-3.7600114208907316e+00
--2.4018619154338712e+01
-7.9340144447381633e-01
-3.5802388671036476e+00
--2.3254876972572077e+01
-1.3711940666830420e+01
-8.9654085726544785e+00
--3.8698533913017712e+01
--6.5747380564518592e+00
-2.5788931423919137e+00
--3.5830875726674897e+01
--6.5747380564518592e+00
-2.5788931423919137e+00
--3.5830875726674897e+01
-8.1358707269860733e-02
-2.8342014867978618e+00
--2.2059431231761888e+01
--7.6195693850482362e+00
-1.9130507418352907e+00
--3.4712515094723223e+01
--3.3094324230320957e+00
-2.2390429642442915e+00
--2.6326036114337601e+01
--3.3306415849615347e+00
-2.3162873611560029e+00
--2.6598814478846776e+01
-1.0578934408449520e-01
-2.6685809095996333e+00
--2.1858378351567158e+01
-2.5164540646677136e-01
-2.5668768199392802e+00
--2.1637626602758690e+01
-1.0886067914477144e+01
-7.5804221733375341e+00
--4.3123948921201276e+01
--1.6348239416398258e+00
-1.7305805587411418e+00
--2.2866362680261467e+01
--1.6348239416398258e+00
-1.7305805587411418e+00
--2.2866362680261467e+01
--7.2023415198603780e-01
-1.8482204567538159e+00
--2.1982511975540092e+01
--1.0117196977560200e+01
--2.7453147055137839e-01
--3.1716195356967287e+01
-1.0500852586683679e+01
-6.4034750838124133e+00
--4.1330616072480197e+01
-1.1653204906008337e+01
-6.5661086854755695e+00
--4.1706454133994576e+01
--4.3469126187918949e-01
-1.5282204203756864e+00
--2.1361444953720902e+01
-1.2587022210790437e+01
-5.5979762816708893e+00
--2.9597969863376200e+01
-3.1471301830934018e-01
-1.4498862762131335e+00
--2.0881463635873384e+01
--1.3255242391909716e+01
--2.1937674116007089e+00
--2.7379154838856582e+01
--1.9196611894554110e+00
-7.3371243181493884e-01
--2.2974766094870446e+01
-9.3405164766824349e+00
-4.8824181456220792e+00
--3.9178086937018151e+01
-1.8853847650545319e+00
-1.6723851178171647e+00
--2.0608253099247797e+01
--9.8320630496242234e-02
-9.9138881752141694e-01
--2.0891074636623561e+01
-3.9533220086493568e+00
-2.2113726265495481e+00
--2.1844843318883076e+01
-3.9575320431544472e+00
-2.2100951566616329e+00
--2.1877444264698660e+01
--3.5485585298724933e+00
-3.0662252647465620e-02
--2.3386642258753398e+01
--2.3865185896815855e+00
-3.4002676474817167e-01
--2.2658017065095411e+01
--3.0828224943183056e+00
--8.2224984791562997e-02
--2.3143611630657144e+01
--1.1377096081645854e+00
-4.0179010670099558e-01
--2.1697013251445185e+01
--8.6508521100183984e+00
--1.6553685132727034e+00
--2.9500186637547781e+01
-1.2819724345250362e+01
-4.2015648143466384e+00
--2.9936399936734034e+01
-4.6787015869419353e+00
-1.5298233476268357e+00
--2.1936812043976879e+01
--7.8864285857744836e+00
--2.4292992759879901e+00
--2.9241870216860036e+01
-3.1325388120756683e+00
-9.6081920320282721e-01
--2.0497271621887254e+01
--7.8851737437796858e+00
--2.5634837812175486e+00
--2.9050452113918894e+01
-1.3554702441677602e+01
-3.9066497321115832e+00
--3.1686004631442419e+01
-4.6463719782946615e+00
-1.2606832156493206e+00
--2.1778176869918276e+01
-1.0560095711686401e+00
-1.3932601813235621e-01
--2.0728542443437920e+01
-1.2726398261543245e-01
--1.8530381134204993e-01
--2.0702318837983199e+01
-1.3202861604360825e+01
-3.5044455916735564e+00
--2.9917954638997234e+01
--2.5827612460719149e+00
--1.2604760791273086e+00
--2.1767239107041910e+01
-2.8014192708911847e+00
-3.8322743779513058e-01
--2.0415579623606376e+01
-2.7930597070186614e+00
-3.6902424785787502e-01
--2.0298045344207608e+01
-3.8643946225180698e-01
--4.0009276086876006e-01
--2.0561049332609926e+01
-4.4491838040441465e+00
-8.0534702846467099e-01
--2.1447284365220515e+01
-4.7389901974709120e-01
--5.8607086118371055e-01
--2.0656251070426503e+01
--1.3288629348000354e+00
--1.3034535013451125e+00
--2.1396142421163933e+01
-7.0628175385973146e-01
--6.6766604706385024e-01
--2.0540308685961957e+01
-3.0739187680051514e+00
--5.2249587519984153e-02
--2.0545516727629717e+01
-3.0723640241843930e+00
--4.7244201165307927e-02
--2.0527313467715487e+01
-1.2767878493527147e+00
--7.0447355143822432e-01
--2.0364217307106852e+01
-2.8241378677758253e+00
--3.1280509963587766e-01
--2.0482827360348637e+01
-2.5066890046715260e+00
--5.8444305817717679e-01
--2.0432872837904515e+01
-2.5066890046715260e+00
--5.8444305817717679e-01
--2.0432872837904515e+01
-5.9913503408520077e+00
-7.5323644531606809e-02
--2.2718288651694294e+01
-2.0043277329788936e+00
--1.0473721271193126e+00
--2.0656402024806976e+01
--1.0850274715648322e+01
--5.3478308440684108e+00
--2.1651936605591967e+01
-4.3624524333245557e-01
--1.5981332209527501e+00
--2.0137969774316726e+01
-1.3919206367495269e+01
-1.4948930179685493e+00
--3.2022467451923902e+01
-1.3907887748564066e+01
-1.4914816814667384e+00
--3.2029760533726524e+01
--9.6900260272941718e-01
--2.1948725345205293e+00
--2.0524918875047852e+01
-5.1419956851386894e+00
--4.4959130636969757e-01
--2.1993013932502336e+01
-7.4266185369368056e+00
-6.2661770794037633e-02
--2.4046086594324244e+01
--1.9710760460363428e+00
--2.8786327731327295e+00
--2.1968627345211807e+01
-1.2424541564602354e+00
--1.7180482069316472e+00
--2.0129472885017694e+01
--9.1398362381850795e+00
--5.4503468043554752e+00
--2.3001194101780264e+01
-1.7344156265007686e+00
--1.6556058594856087e+00
--2.0198986198216780e+01
-1.3870085531380777e+01
-8.6424487936989969e-01
--3.2027744065150017e+01
--2.2688170612299001e+00
--3.4720326017221974e+00
--2.3025284793181459e+01
--1.4220986106658206e+01
--7.7876491428962682e+00
--2.2804901894756092e+01
-6.3507983814269959e+00
--1.0497184813325242e+00
--2.2390667491002201e+01
-5.3823145210200141e-01
--2.6278394527718461e+00
--2.0035279063660209e+01
--6.8062425266511664e+00
--5.5749361586728554e+00
--2.4520627303326989e+01
--6.2837388441067867e+00
--5.9286833201231861e+00
--2.4512080276764891e+01
--1.3457344841784186e+01
--8.1231354735983778e+00
--2.2328837973771201e+01
-5.0779026743669897e+00
--1.8007723464663299e+00
--2.1263190724254152e+01
--1.3451137172393496e+01
--8.3098115518785072e+00
--2.2100993038564955e+01
--8.3097838000958379e+00
--6.4269399323390122e+00
--2.1579082428625114e+01
--9.6449716266068297e-01
--4.0790533482637992e+00
--2.2120126749959823e+01
--2.9138055040793946e+00
--5.0593580401928708e+00
--2.3520831206595034e+01
-1.4305254748595525e+01
--6.3937559516614628e-01
--3.0697310705595562e+01
--1.3064522248903710e+01
--8.3457029868785071e+00
--2.1949720365969014e+01
-6.2960839366567951e+00
--1.8742336083966595e+00
--2.2094594503125212e+01
-1.4962941213519002e+01
--9.1714209459839058e-01
--3.2599927262883192e+01
--1.2784816585335486e+01
--8.3792014276292033e+00
--2.1873027405794307e+01
-4.7023455924455506e+00
--2.2718738879386624e+00
--2.0542133223399240e+01
--5.6627391747053384e+00
--6.3286421429903070e+00
--2.3725473176482588e+01
--8.0914638654208897e+00
--6.7207762041635997e+00
--2.1283044655871667e+01
-1.4325093145533721e+01
--9.2114109404429412e-01
--3.1176843258191703e+01
-4.2399300067217895e+00
--2.4227905456040357e+00
--2.0344441166289311e+01
-4.0507555150269008e+00
--2.5814018778062833e+00
--2.0264134794691316e+01
-3.4806261705129486e+00
--2.7609188224617291e+00
--1.9970899014157421e+01
-1.4390873554313057e+01
--1.3108751210497054e+00
--3.0803926088827485e+01
-1.4579294309530061e+01
--1.5840164764965645e+00
--3.0389437527314339e+01
--1.2860075365012563e+01
--9.5144628449374675e+00
--2.0506902030312865e+01
--1.2756339338566864e+01
--9.5373579175313807e+00
--2.0483201744191032e+01
-2.0417231155333018e+00
--4.4529501134884288e+00
--2.2141382825062326e+01
-7.0336466088675085e+00
--3.4733049315456594e+00
--2.4389761869209373e+01
-4.0742193675016596e+00
--3.9652070632571523e+00
--2.1581661476264745e+01
--1.2976090532659208e+01
--9.7794882353622761e+00
--2.0280599632627307e+01
--4.6169826715147266e+00
--7.3635024324432070e+00
--2.2529084710313210e+01
--1.1729550104051068e+01
--9.4948228432844139e+00
--2.0333962634265930e+01
--3.7831329839023828e+00
--7.2005885454616863e+00
--2.2547654782739261e+01
-3.4475095032586691e+00
--4.4290244258991356e+00
--2.1650970830519210e+01
-1.3464876601298316e+01
--2.9342750854283173e+00
--2.8948336521778565e+01
-3.5547027506719946e+00
--4.8748386348647204e+00
--2.2187726258771391e+01
-3.6485862936378317e+00
--4.9321791038746499e+00
--2.2241606785283885e+01
-3.7902099887707530e-01
--5.8573105659193878e+00
--2.1356104023304738e+01
--3.4213607437235520e+00
--7.5428314770947260e+00
--2.2129841843913233e+01
--2.9055307664436163e+00
--7.5887003460641189e+00
--2.1979575246910560e+01
--3.2638860169653414e+00
--7.7345366370853519e+00
--2.2038363136464799e+01
-9.4771481238079218e+00
--4.5824922847211687e+00
--2.7487092830121529e+01
--1.1129624806855613e+01
--9.9964933046250977e+00
--1.9599638131493869e+01
--2.2449007228965963e+00
--7.7349007602202313e+00
--2.1787276184168928e+01
--4.8080976248866953e+00
--8.5508209972832123e+00
--1.9564198293665964e+01
-1.4092107369146150e+01
--4.4453947941612588e+00
--2.6678247509406678e+01
-1.4878964284906097e+01
--5.0100642237903159e+00
--2.7473063595791459e+01
--4.6168364061788791e+00
--9.4607892984356941e+00
--1.9560523557984343e+01
-1.1462458017204456e+01
--5.9276328117850721e+00
--2.5260625016131190e+01
-1.2604056076169618e+01
--5.6348595011799398e+00
--2.5416888843313103e+01
-1.4863605507073451e+01
--5.5350354101595416e+00
--2.6821634523174957e+01
-1.3747224883720973e+01
--5.7818085636844261e+00
--2.6113651015286216e+01
--1.9123023490605601e-01
--8.7003089914317346e+00
--2.0072565943901264e+01
-9.7504138523047388e+00
-2.5293846023217505e+01
--5.0771879516907859e+01
-7.9244302620031242e+00
-2.3914053281761873e+01
--4.8834939085108353e+01
-6.2158334650667957e+00
-2.3228483812724470e+01
--4.8465065845049317e+01
-6.0903386283646670e+00
-2.3014449712654311e+01
--4.7915971332641881e+01
-5.9702047909080376e+00
-2.2863857185990675e+01
--4.7855988890416846e+01
-1.7345377034286752e+01
-3.0248279750241402e+01
--5.9577315876028862e+01
-6.6180234435941632e+00
-2.3138593834151695e+01
--4.8306897974025659e+01
--2.5706759616059287e+01
-1.7308886675945821e+01
--5.1855851260533207e+01
-7.4373907092371772e+00
-2.3498477778506960e+01
--4.8870653495531386e+01
-8.3318730347226122e-01
-2.0339963473144497e+01
--4.5590747398113471e+01
--4.2118581745789449e+01
-1.5266427888851444e+01
--5.5335893064462645e+01
-1.9324123348369984e+00
-2.0434920213528979e+01
--4.6782029555183996e+01
-7.4533592721719373e+00
-2.3110623139625456e+01
--5.0087705108481174e+01
-9.5570592181844205e+00
-2.3861341090595303e+01
--5.1176843001781251e+01
-9.3552410317823433e+00
-2.3545015826452524e+01
--5.0511386589303662e+01
--2.5159942485835916e+00
-1.7978784851634185e+01
--4.5417849750292262e+01
-1.3438126579761031e+01
-2.4685139077245800e+01
--5.3333888922485457e+01
-7.8396092400965980e+00
-2.2195254164176429e+01
--5.0587706865484208e+01
-1.6317096344278614e+01
-2.6045423055185445e+01
--5.5267570443007052e+01
--9.2321687261149066e+00
-1.4632171737594360e+01
--4.2670371716573520e+01
-1.2532832641497148e+01
-2.4327266155817750e+01
--5.4464498971558328e+01
-9.7354837631348214e+00
-2.3645993745704189e+01
--5.4800436521454870e+01
-1.3563492300435174e+01
-2.4682666430002627e+01
--5.4770198997647611e+01
--8.1079784079770096e+00
-1.4469228417929381e+01
--4.3517482576852203e+01
--1.3250953501801904e+01
-1.2195887296578887e+01
--4.1022667946662793e+01
--8.4725126165461244e+00
-1.3844855606847707e+01
--4.2917955169511309e+01
-1.1631416964871914e+01
-2.3029745012336164e+01
--5.4077541624382015e+01
--3.8988669362628553e-01
-1.7115624559637649e+01
--4.8576792022371819e+01
-5.1229720456619543e-01
-1.7393204842792972e+01
--4.9023553962444751e+01
-1.1931882077477482e+01
-2.2395534895742252e+01
--5.6406070428955353e+01
--2.3702682365659253e+01
-3.3214757078475063e+00
--2.5864577450861670e+01
-3.7913118684947228e-01
-1.6729541410738221e+01
--5.0682080659114810e+01
-5.0087499675976206e+00
-1.9049967622104820e+01
--5.4904911090507397e+01
-1.0941294398151625e+01
-2.0930469926276409e+01
--5.5726841805202220e+01
-8.8572754292911586e+00
-2.0407036845907381e+01
--5.6815348297246956e+01
-4.9807264243785667e+00
-1.8603233924120282e+01
--5.4561538153823044e+01
--6.6375293743879160e+00
-1.3052944286838994e+01
--4.7431144930862644e+01
-1.6389907286478973e+01
-2.4164598211053239e+01
--6.4476289703092036e+01
--3.2118556547555592e+01
-5.7357057109299401e+00
--4.2349826084993900e+01
-1.0724321589081015e+01
-2.0211620086406533e+01
--5.5982158672096467e+01
-5.0398246190232641e+00
-1.7809621983864471e+01
--5.3409219806442394e+01
-1.3941735349422325e+01
-2.2986344439672571e+01
--6.2336907564533220e+01
-1.1355598638111342e+01
-2.0457193137483880e+01
--5.6745648986291613e+01
-1.1317859865538566e+01
-2.0390236895981563e+01
--5.6646768607363668e+01
--4.0915948593406304e+00
-1.3896864527713397e+01
--4.9116938687244414e+01
-3.6627435722947972e+00
-1.7111901658753492e+01
--5.3379612529365879e+01
--5.8919068838210560e+00
-1.2719260894350700e+01
--4.8111968566689050e+01
-8.4101543726961587e+00
-1.8884085998311615e+01
--5.6118128485152738e+01
--3.0721875205332793e+01
-4.9286568614026711e+00
--4.1036722250315165e+01
-1.2271730485805220e+01
-2.1504769778948699e+01
--6.2339303000990270e+01
-1.5648620815723723e+01
-2.1635912950549454e+01
--5.9656376035331370e+01
-1.5586996235471151e+01
-2.1817514641393014e+01
--5.9983320643620338e+01
-1.7275094071925146e+01
-2.2503566356781715e+01
--6.1968673480653422e+01
--3.0069994415805912e+01
-4.6753552100969786e+00
--4.0711438366484302e+01
-1.1013927520001200e+01
-1.9591119023755596e+01
--5.7712145955127326e+01
--1.9831759170402425e+01
-7.1105952702045689e+00
--4.2261534022070023e+01
-4.1596307107149135e+00
-1.5876422541340689e+01
--5.4270123848142198e+01
--2.0527064721312929e+01
-5.8884470965765772e+00
--4.0497982736445955e+01
--2.8953247225710129e+01
-3.5498560089552034e+00
--3.9122584169262083e+01
--4.7952815601974956e+00
-1.0565795783228074e+01
--4.7095159901425070e+01
--1.2320405458461638e+01
-6.7378611370972603e+00
--4.0380777593663581e+01
-6.3749056535137392e+00
-1.4155641636539242e+01
--5.1328468195641562e+01
-6.3875479012714855e+00
-1.4079603589748972e+01
--5.1088078861955829e+01
-7.0760726743378797e+00
-1.4293717558370320e+01
--5.1523570708903542e+01
-4.2450012911542059e+00
-1.3174992824015344e+01
--5.0016660012447502e+01
-5.6540408964220008e+00
-1.2813412861217190e+01
--5.0058967963755599e+01
--6.1599177260953564e+00
-8.0001208949791813e+00
--4.2898092361177632e+01
--1.2794781853129360e+01
-5.0757672378087042e+00
--3.9173384028070870e+01
--1.3153839780703949e+01
-4.2901664897015488e+00
--3.6662942520575804e+01
--1.4247822638021159e+01
-3.3744576034692488e+00
--3.4567181262728205e+01
--1.2246433054362234e+01
-4.8962841359976030e+00
--3.9073170572666406e+01
--1.8962082892072711e+01
-2.4454134997385792e+00
--3.6882220094763980e+01
-3.1740054895440388e+00
-1.0337141283202605e+01
--4.5812951771942309e+01
--1.1922666765341768e+01
-3.9913562150186075e+00
--3.7728496350133462e+01
--1.2051936731596145e+01
-3.9213625212169836e+00
--3.7476683736189862e+01
-2.7854913292369847e+00
-9.4233840009980110e+00
--4.5260443606498853e+01
-3.4429446586937877e+00
-9.5177557410787053e+00
--4.5709938440266022e+01
-3.3187616873328345e+00
-9.3585939827868803e+00
--4.5698290348440153e+01
-4.6732234174735243e+00
-9.5762754973805766e+00
--4.5506862621497355e+01
--3.2445846082275245e+00
-6.5518421844045376e+00
--4.1462484464723538e+01
-3.9942919214586516e+00
-9.3636496074062574e+00
--4.5643633362766359e+01
-4.0430724970960732e+00
-9.1032951665359239e+00
--4.4937507283985482e+01
-4.6983881425121625e+00
-9.8466398991666946e+00
--4.7178679093318522e+01
-2.9029268291156050e+00
-8.5741433017850142e+00
--4.4150850390490717e+01
-9.8185739224660367e+00
-1.0951294251940157e+01
--4.9578217727785876e+01
-7.7168674123730323e+00
-9.6120330727004806e+00
--4.5131076442021239e+01
-1.3534279687529203e+01
-9.9402588415332502e+00
--3.8399695822086464e+01
-7.6030791994708631e+00
-9.1421639711113212e+00
--4.5056649283449772e+01
--5.7623262419024872e+00
-4.0791150194430390e+00
--3.8073669309649098e+01
-7.5006458686454733e+00
-9.0628552662225506e+00
--4.5792947469372876e+01
--1.3854553922061578e+01
-3.5164551932850774e-01
--2.9877316621924980e+01
--7.0307534896225254e+00
-2.6800019134774704e+00
--3.5816072623415984e+01
--2.9442833618986852e-01
-2.4306879639797412e+00
--2.1845112423741572e+01
-9.2239954417224137e+00
-6.6910134951031210e+00
--4.1993647156729175e+01
-3.9744925671298774e+00
-3.3534256927072286e+00
--2.3117965880737724e+01
-9.1693711136053775e+00
-5.8438378228669041e+00
--4.0952152253841803e+01
-1.2069240879600565e+01
-6.0220107454518121e+00
--2.9705545069333539e+01
--2.4863341541947329e-01
-1.0170266166232145e+00
--2.1028100762895690e+01
-4.8382874485775700e+00
-2.2149469075832475e+00
--2.2686661941671716e+01
-4.8435013389424411e+00
-2.2206631581911118e+00
--2.2720456763370802e+01
-3.9695036986076477e+00
-1.9825354001143569e+00
--2.2662617229853218e+01
--2.6297114319386483e+00
--1.0769991167158699e-01
--2.3006461311435558e+01
-3.5480547623796550e+00
-1.4200540445427952e+00
--2.1089292727713538e+01
-2.4419889367005143e+00
-1.0376700840698352e+00
--2.0467185428995663e+01
-4.7134443266299346e+00
-1.6583750679406277e+00
--2.2128143007848848e+01
-4.8093426317291401e+00
-1.6530096564409711e+00
--2.2139845982056460e+01
--7.8465266648140259e+00
--2.2879383339716810e+00
--2.8754866978852139e+01
--7.5370280103961704e+00
--2.3428447693903514e+00
--2.9257695974868376e+01
--7.6624082669834170e-02
--2.9896795556192113e-01
--2.1118916478948329e+01
-1.3029106883824207e+01
-3.3897415957384509e+00
--3.0561657712321814e+01
-2.5775316897106588e+00
-4.0800265443082412e-01
--2.0372156079332719e+01
-1.3891520474755048e+00
-1.9487150838322677e-02
--2.0351086573805482e+01
-9.1563250340571167e-01
--3.4098646586541004e-01
--2.0426919450767503e+01
-1.3072831454138617e+01
-2.9655372912097144e+00
--3.0478941934309479e+01
--1.6576128659055723e+01
--6.1320156360995846e+00
--2.5136139732845628e+01
-1.0639781228387837e+00
--6.2303837818470542e-01
--2.0393410409055875e+01
-1.9196482365277951e+00
--2.7365338306432518e-01
--2.0343735192917034e+01
-4.7400961722847390e-01
--8.0591959343210651e-01
--2.0991810029024542e+01
-9.7709924048404084e-01
--7.3759928682890519e-01
--2.0409981914033992e+01
-4.9633180061919511e+00
-3.6775383077766260e-01
--2.1939690176977305e+01
-3.3877791302754883e+00
--1.0380755861158221e-01
--2.1038744076100276e+01
-5.2188161176696051e+00
-2.0894392992899108e-01
--2.2344171506620714e+01
-5.2188161176696051e+00
-2.0894392992899108e-01
--2.2344171506620714e+01
-8.5262592218244238e-01
--1.2139089036305277e+00
--2.0696053098375689e+01
-1.5021396673624599e+00
--1.0300719064466410e+00
--2.0478528979597101e+01
-5.5896794547843376e+00
--1.6571262922388669e-02
--2.2646491669900808e+01
--6.4602893551791816e+00
--4.2169801760240144e+00
--2.6354572288240917e+01
--4.1497914183978094e-02
--1.7770643254648604e+00
--2.0535865249236043e+01
--2.7574767726996581e+00
--2.8961697995069802e+00
--2.3164580110059969e+01
-6.2868266506964590e+00
--1.5253005829630845e-01
--2.3291551026114899e+01
-1.6873265632564900e+00
--1.4926402574578477e+00
--2.0420298598893130e+01
-4.7205117312417189e+00
--6.9102261788815522e-01
--2.1662880791361385e+01
--1.4324543065249754e-01
--2.4521547945060567e+00
--2.0252937145372396e+01
--9.7438163092908372e+00
--5.8992625362872717e+00
--2.1224608385241147e+01
-5.0886231834656170e+00
--1.1090305528163142e+00
--2.1585799896830977e+01
--1.4513300490740331e+01
--7.8555607923221267e+00
--2.2830610794007534e+01
-1.4388685054393129e+01
-4.6263423020830885e-01
--3.0866197521650090e+01
--9.5460202887515671e+00
--6.1574561891458668e+00
--2.1284856641838218e+01
-1.4331840617953953e+01
--1.1658088302939267e-01
--3.2580616957473161e+01
-5.1982121905776104e+00
--1.7063863230807019e+00
--2.1350163283535647e+01
--6.1946624560298025e+00
--5.9266577604502686e+00
--2.4452871544740599e+01
-1.4520464643591486e+01
--5.8296237017465635e-01
--3.2752754264651998e+01
-1.4270875622362935e+01
--7.8230477927065600e-01
--3.0652329797811593e+01
--8.2711670048774604e+00
--6.9301481617811627e+00
--2.2590580252485406e+01
-4.5396670946045825e+00
--2.2865648199814310e+00
--2.0577019107669486e+01
-1.4431069311329402e+01
--7.9116248088798591e-01
--2.9767769753399609e+01
-1.4136748788673756e+01
--9.2071945293706015e-01
--3.0008246667513234e+01
--5.4358392222330840e+00
--6.4322955767769310e+00
--2.3784827211938097e+01
-4.2440451592235231e+00
--2.5357762543099693e+00
--2.0381943899871843e+01
--8.0625214748325416e+00
--6.9722257843630757e+00
--2.1881549538738110e+01
--5.5644730357784704e+00
--6.5916486327404051e+00
--2.3579910714914277e+01
--8.2632022297316166e+00
--7.1999540853645598e+00
--2.1526532810152016e+01
-4.2180094416634839e+00
--2.9842114745014854e+00
--2.0638121205408662e+01
-4.2180094416634839e+00
--2.9842114745014854e+00
--2.0638121205408662e+01
-4.3805452835623546e+00
--3.2658297254089890e+00
--2.1177036278754436e+01
--7.8691110089237952e+00
--7.4927228984706327e+00
--2.1357359727716499e+01
--7.8691110089237952e+00
--7.4927228984706327e+00
--2.1357359727716499e+01
--6.2818480124389797e+00
--7.0190364326807186e+00
--2.1666434698820478e+01
-1.2831906314298392e+01
--2.2253007447011481e+00
--2.9104309496880251e+01
-1.3276363440686341e+01
--2.4993368612133655e+00
--2.9931786029970009e+01
-1.6754429275016096e+00
--4.4693597484762559e+00
--2.1134229180894092e+01
-1.7193691871936267e+00
--4.6163990098535574e+00
--2.1552717518043053e+01
-4.7064458273196825e+00
--4.0342140859588307e+00
--2.2079833588697969e+01
--1.2135318084946178e+01
--9.8097197058405552e+00
--2.0080100694844013e+01
-1.1292075688620473e+01
--4.3102771502442989e+00
--2.7150208990934058e+01
--3.8556746104749737e+00
--8.0640315729838115e+00
--2.1541732416797625e+01
-1.2915875454152088e+01
--4.0340637376193396e+00
--2.7392856746622680e+01
-2.8053456464501356e+00
--5.9359582114611271e+00
--2.1468939788964253e+01
-1.3732900487535392e+01
--4.1854169369276617e+00
--2.7956547461491080e+01
--1.0469814870928619e+01
--1.0688445749748578e+01
--1.8702101410116409e+01
-1.3794046133062697e+01
--4.5022978634739808e+00
--2.6639939340110534e+01
--8.9293312825374347e+00
--1.0586088115606724e+01
--1.8447341215779257e+01
-3.1170063523115945e+00
--8.0615057120643456e+00
--2.1630302526013661e+01
-1.4147931816436376e+01
-2.6653265393693005e+01
--5.2415924128504550e+01
-1.0619583776744900e+01
-2.5424366254186825e+01
--5.1599324893386317e+01
-1.0441719735964318e+01
-2.5087927833966244e+01
--5.0887183130873368e+01
-7.7302632631854271e+00
-2.3681307148671600e+01
--4.9796320830283570e+01
-9.7292641011155894e+00
-2.4651405766848441e+01
--5.1037337190697350e+01
-9.5213879236713250e+00
-2.4309060699701419e+01
--5.0145903361734476e+01
-1.0123660361636064e+01
-2.4407019655373894e+01
--5.0249153952948696e+01
--1.2336771447443921e+01
-1.3839478715712600e+01
--3.8023227759745460e+01
-5.7397731276904533e+00
-2.2391661077985837e+01
--4.8189328623560179e+01
-5.7823021482851953e+00
-2.2415505721713068e+01
--4.8286980853709693e+01
-6.1171956352013561e+00
-2.2527320936322905e+01
--4.8516296054883490e+01
-6.6682874194264885e+00
-2.2760685349052263e+01
--4.8829590445696340e+01
-7.9245344463983249e+00
-2.4404200678764226e+01
--5.2254341626593749e+01
-9.2396934206883508e+00
-2.3936530292519180e+01
--5.0390910914860932e+01
-8.8393081081170894e+00
-2.3454899250318888e+01
--5.0230386852481530e+01
-1.6602753918942025e+01
-2.6697589590529844e+01
--5.4024231891160667e+01
-1.6224407703011575e+01
-2.6543459058356742e+01
--5.3767709860238860e+01
-1.2901220736915374e+01
-2.4687140386738502e+01
--5.2823702408184793e+01
-1.2910429901685147e+01
-2.4500304829745364e+01
--5.3318181525610441e+01
-1.6984346970295547e+01
-2.6485387769511060e+01
--5.6526434508443359e+01
--2.4702638995931167e+01
-4.9069412003392756e+00
--2.6066324579587846e+01
--1.3369345925520740e+01
-1.2359304634790439e+01
--4.0777628410453708e+01
--1.5497536600837842e+01
-1.1494937097220893e+01
--4.0242562870457647e+01
--3.7449129821128717e+00
-1.6101076632136621e+01
--4.6391018602958596e+01
-1.2662142408276344e+01
-2.3290965523631890e+01
--5.6580177629446489e+01
--1.4410474596192419e+01
-1.0191735163224266e+01
--4.2388655978730640e+01
--3.7494264462327243e+00
-1.4615520234670509e+01
--4.8676155689326748e+01
-9.9325741065815283e+00
-2.0393724016077112e+01
--5.5590442975472584e+01
-9.9325741065815283e+00
-2.0393724016077112e+01
--5.5590442975472584e+01
-1.0436485214773022e+01
-2.0293004335422211e+01
--5.5898947269293359e+01
-4.8466169227612248e+00
-1.7971258523494171e+01
--5.4204559968466683e+01
--3.2035191797250761e+01
-5.5100899290190792e+00
--4.2350357016481155e+01
-5.7183038361333720e+00
-1.7955272448967325e+01
--5.4091578902191046e+01
-5.7220731591177829e+00
-1.8042072878799011e+01
--5.4179864881592863e+01
-1.0008889797485628e+01
-1.9776282583367166e+01
--5.6652232505115506e+01
-1.1044350903596261e+01
-2.1273666928879528e+01
--6.0576258880604556e+01
-1.0404390195407094e+01
-1.9936765970972790e+01
--5.6971173453657663e+01
--3.1195681417078148e+01
-5.1646672817231174e+00
--4.1456103823679186e+01
-4.6828602000285420e+00
-1.7232108790337758e+01
--5.3557657937560641e+01
--3.2136881302911945e+01
-4.5220250674320308e+00
--4.1020585782716374e+01
-4.5387825845487324e+00
-1.7071918225917763e+01
--5.4382919488925140e+01
-4.4333397218578403e+00
-1.6949407560944085e+01
--5.3910022743332455e+01
-9.5866557196398219e+00
-1.8892181189116044e+01
--5.6835701226398548e+01
--1.8886423638851073e+00
-1.1141472922390932e+01
--4.7784503833486646e+01
--1.8954233044568230e+01
-4.7381572930689124e+00
--3.8762509652082890e+01
-7.5588431192360668e+00
-1.4461848134526068e+01
--5.3497430851337249e+01
-6.7454417325268130e+00
-1.3753339580558089e+01
--5.0959060279186730e+01
-6.8266079534149435e+00
-1.3671591808741981e+01
--5.0908135578654615e+01
--1.8159716928999757e+01
-3.1488079800288786e+00
--3.7727945791688981e+01
--1.2850540156666398e+01
-4.8929940126066489e+00
--3.8833203770365593e+01
--1.9724672155918867e+01
-1.7552220633331763e+00
--3.5097455259571291e+01
--1.9724672155918867e+01
-1.7552220633331763e+00
--3.5097455259571291e+01
-3.5835411084760387e+00
-1.0237849979568157e+01
--4.5946898547918522e+01
-3.1681126072299497e+00
-1.0335962211751342e+01
--4.7491915836358444e+01
--1.8262274761451231e+01
-1.9553444571529350e+00
--3.5860241413450716e+01
-2.4745272341177404e+00
-9.1089103994126646e+00
--4.5140838383293897e+01
-2.9165001731449620e+00
-9.3102054827542471e+00
--4.5567285144708300e+01
-1.3263248318665180e+01
-1.0297300537151360e+01
--3.7576047837264362e+01
-3.0912561326165506e+00
-8.5610670637973740e+00
--4.5089733285451402e+01
-3.0127693784625404e+00
-8.6574823513308239e+00
--4.4671778238421403e+01
-3.9800360109792376e+00
-8.7511769272980846e+00
--4.5126095919966872e+01
-2.8886554609197881e+00
-8.1779423099075679e+00
--4.3903226610486222e+01
-1.4524000447612314e+01
-1.1520356542571584e+01
--4.5760017230105369e+01
-8.9244746650179962e+00
-9.6842795464014504e+00
--4.6048036397491714e+01
-7.8040655431441257e+00
-9.1416182147059537e+00
--4.4998819897385104e+01
--7.7546106571929814e+00
-2.7049859819690756e+00
--3.6205064650529913e+01
-1.9578799937680774e-01
-3.0272113209613019e+00
--2.2160889730655523e+01
-8.7379003746749628e+00
-8.1252180205962965e+00
--4.3956403990263723e+01
--1.4978136003179223e+01
--1.2314951673791322e-01
--3.2387612340381729e+01
--7.9394803120450037e+00
-1.6020958190663244e+00
--3.4603822100177872e+01
--1.2906216488686677e+00
-2.1448690013900156e+00
--2.2829847042540923e+01
-9.3303977662327444e+00
-5.7424492927604236e+00
--4.0837326167504692e+01
-9.4056240075456232e-01
-1.6710022085510425e+00
--2.0718499783863688e+01
-9.4633865302672648e-01
-1.7200622826824463e+00
--2.1133380990867590e+01
-4.1884287603931298e+00
-2.4555249607702416e+00
--2.2214932914663262e+01
-1.5568043002028316e+00
-1.6841218106898799e+00
--2.1163099023137171e+01
-2.2104367617876663e+00
-1.5807110597525995e+00
--2.0640063804919315e+01
--8.2484005926909454e+00
--1.6238950409432291e+00
--3.0186053714948560e+01
-3.0896987778272145e+00
-1.3924686053823367e+00
--2.0856591154802150e+01
--7.9815522408027171e+00
--1.9470889185955977e+00
--2.9629299505559690e+01
--7.4765693418978652e+00
--2.5017861372399803e+00
--2.9107308230258937e+01
-3.7216108640591479e+00
-8.1001684813277508e-01
--2.1029807888856752e+01
--8.3610300952489940e+00
--3.0615993601339531e+00
--2.8475077289269247e+01
--7.8265963346675118e+00
--2.9917366500967173e+00
--2.8530886277717382e+01
--9.7943222795568374e+00
--4.0809933045538669e+00
--2.5109582484296126e+01
--1.6524120363946555e+01
--6.3608825340269624e+00
--2.5098773972210292e+01
--9.2247400095721943e+00
--4.3846958549912385e+00
--2.6187044462972295e+01
--2.2720141046139478e-01
--1.2400869213565171e+00
--2.1016687060599082e+01
--1.1634826229151795e+01
--5.0596957778190452e+00
--2.3239058988529777e+01
-1.3499232651441972e+01
-2.1066147552834384e+00
--3.0882819207271780e+01
-1.3071434399152859e+00
--1.0434777508353019e+00
--2.1117574769608101e+01
-3.0787152838385290e+00
--5.4849319340109781e-01
--2.0552245758982078e+01
-7.5227756428855042e+00
-4.6038468234733376e-01
--2.4561822803414245e+01
--1.1501540128864566e+01
--5.4361272292041320e+00
--2.2759399859703688e+01
-3.2487372641479921e+00
--6.5099619515024787e-01
--2.0689238012698851e+01
--2.7574305139047345e-01
--1.9249430928377074e+00
--2.0724081164810997e+01
-7.2173212577479591e+00
-8.5439657533516372e-02
--2.5586987264497903e+01
-1.3185215331217339e+00
--1.6281826357782012e+00
--2.0212575704716606e+01
-2.5820475952397413e+00
--1.3235474529935389e+00
--2.0660521803721160e+01
-4.6957022480530117e+00
--8.2505583994821663e-01
--2.1500730128435190e+01
--1.0429280395039532e+01
--5.8636607276377237e+00
--2.0951366703943314e+01
--9.1746831149055534e+00
--6.2212054040552713e+00
--2.1595828442237540e+01
-3.9398393198910631e+00
--1.8892025595097854e+00
--2.0815078377112965e+01
-2.4325135705891934e+00
--2.3934432407912278e+00
--2.0364951138498956e+01
-4.4163557508093582e-01
--3.0067593817202316e+00
--1.9997264755583554e+01
-1.6965562211080443e+00
--2.7545368272568509e+00
--1.9845307873682941e+01
-1.4277844994117691e+01
--9.3425913770753344e-01
--3.1420861329208680e+01
--1.3461649096688294e+01
--8.7509828521665582e+00
--2.1594244992654961e+01
-1.4340131678395130e+01
--9.3754244232602191e-01
--3.0688269981724730e+01
-1.4154116542978100e+01
--9.3409117296635424e-01
--3.0395336622769339e+01
--8.3197726332868918e+00
--7.0590223637809721e+00
--2.2027537659780599e+01
--5.2820601879483728e+00
--6.4311572653149032e+00
--2.3840101300097629e+01
-1.4836487649009669e+01
--1.0913798127449275e+00
--3.2206899224275261e+01
--5.1587039268572328e+00
--6.4586395381132569e+00
--2.3886665461710550e+01
--6.8113439633693735e+00
--6.8912919648462392e+00
--2.2661039933114179e+01
--4.8765427337414566e+00
--6.4989931940613763e+00
--2.3678542204077964e+01
-1.4667291186316872e+01
--1.7510768204744536e+00
--3.0165879924157796e+01
-4.4108784140971320e+00
--3.3514484448205959e+00
--2.1242326386772177e+01
-6.6391404457782901e+00
--3.3586059887873407e+00
--2.4089517942682765e+01
--1.1985490618032184e+01
--9.1634302598124204e+00
--2.0803325712814178e+01
--1.2763119475722171e+01
--9.4221241235977775e+00
--2.0550013297009329e+01
--1.2319204870111436e+01
--9.2763568013825335e+00
--2.0725869769440095e+01
--1.1400732461872531e+01
--9.0916107183254908e+00
--2.0723469379021406e+01
-6.4939303833972897e+00
--3.6091512089672859e+00
--2.4055658602973683e+01
-3.6848970430547472e+00
--4.6356990332859773e+00
--2.2063481065647693e+01
--1.1517069618844269e+01
--9.9556535575856646e+00
--1.9775732472007185e+01
--6.4064499551211984e+00
--8.4380659949300068e+00
--2.0771239602168293e+01
--3.9240488720891076e+00
--7.8305812262633268e+00
--2.1921549212833941e+01
--1.1393757167155496e+01
--1.0510812164079288e+01
--1.9110852134233500e+01
--3.1761958230961196e+00
--8.2060034552357646e+00
--2.1381766320240530e+01
--5.0029913636963022e+00
--8.9899759604483815e+00
--2.0235617771581765e+01
-1.3284096094287028e+01
--4.6733820184252490e+00
--2.6728096012626146e+01
--4.0948640320936889e+00
--8.8390411846261863e+00
--2.0436581409045871e+01
-9.0571457231252079e+00
--5.9279480221431582e+00
--2.4692754176887910e+01
-1.0356971894762825e+00
--8.2269063544766201e+00
--2.1211713104888169e+01
-2.2508555017161941e-01
-1.9706400942720119e+01
--4.2995175200395103e+01
-1.3279031861209866e+01
-2.6198465286504774e+01
--5.1452100559245999e+01
-1.5720752594564415e+01
-2.7302195810094499e+01
--5.3277148068853471e+01
-7.7797502728588412e+00
-2.3816184389285745e+01
--4.9284141312569417e+01
-5.7197020827985279e+00
-2.2563982140721606e+01
--4.8021092148879923e+01
-5.7044647800355044e+00
-2.2572137044729960e+01
--4.8078276541804719e+01
-5.7470481875911554e+00
-2.2545271359221559e+01
--4.7981791088503712e+01
-8.5096546119915732e+00
-2.3805997471281177e+01
--5.0397528312168525e+01
-7.9608399344849303e+00
-2.3795171773711385e+01
--5.0771989190097422e+01
-8.3971863879983673e+00
-2.3079116444133952e+01
--5.0420701632648324e+01
-8.1020716964951287e+00
-2.2520720811855462e+01
--4.8980211486099535e+01
--1.3704547551230426e+01
-1.2722924424697583e+01
--3.9728482237243348e+01
-8.2464831065179958e+00
-2.2286722085844190e+01
--5.0594484312893442e+01
-6.0550196422152636e-01
-1.8441663639011111e+01
--4.7819999147216848e+01
--2.4466275425293876e+01
-4.6722227500456270e+00
--2.6107775210625690e+01
--1.0054593126420503e+01
-1.3084396700776161e+01
--4.3475390563467649e+01
-1.0361214634840346e+01
-2.1152728403662145e+01
--5.5155688697585241e+01
-4.2396247810915373e+00
-1.6614857171096730e+01
--5.4057613890805030e+01
-4.7804982200815633e+00
-1.6933219566725068e+01
--5.4559265083008093e+01
-1.3413195719366275e+01
-2.0171562546583711e+01
--5.8281969126855678e+01
--2.9383641322761530e+01
-3.5595730940894783e+00
--3.9342298839084592e+01
--2.9616522515062147e+01
-3.4304603081580907e+00
--3.9054717822691487e+01
--4.8105755350253308e+00
-1.1639314362458350e+01
--4.8299243545837271e+01
-5.6205841215484380e+00
-1.3743710129757307e+01
--5.0869594349417781e+01
-6.8260194637737541e+00
-1.4009156507043237e+01
--5.1147551917593617e+01
-4.4766627161685859e+00
-1.2876123877179781e+01
--4.9664459353404922e+01
--9.6453481377722667e+00
-7.2624723807819089e+00
--4.2532829685196781e+01
-6.7704468085761009e+00
-1.3307314553361199e+01
--5.0360866175322322e+01
-7.3614694814896078e+00
-1.3507311660361578e+01
--5.0699445875669298e+01
-7.2948522985726214e+00
-1.3508228301956935e+01
--5.0541630607345446e+01
--9.1957405644429144e+00
-6.6595780313453563e+00
--4.0825771749057196e+01
--1.2581398179634924e+01
-5.0502826123550149e+00
--3.9476538084098728e+01
-3.7349026192247186e+00
-1.1049963403566236e+01
--4.6992244227802495e+01
-4.0236276455179238e+00
-1.0699692077480783e+01
--4.6492910484663078e+01
--1.4621024598908269e+01
-1.1852124231312364e+00
--3.0431619612870847e+01
-7.9234555619570184e+00
-9.5128706575134689e+00
--4.5442051693940790e+01
--9.1491291481150672e+00
-2.7855635786450277e+00
--3.6045987732483539e+01
--2.0551666317475901e+00
-3.0655445630643987e+00
--2.6159630636439704e+01
--3.1150413721049302e+00
-2.9280431735788595e+00
--2.7573049642383697e+01
-9.2286951466513276e+00
-7.3529162553958614e+00
--4.2468506956610497e+01
--5.0010159755573276e-02
-1.6668336963592043e+00
--2.1217015370471767e+01
-3.8222489618306038e-01
-1.8703312734507485e+00
--2.1118841500543553e+01
--2.0180167600377719e-01
-1.2811861343742479e+00
--2.1107108033133354e+01
-3.2867906797996018e+00
-2.1757190523164840e+00
--2.1313609674780828e+01
-1.2673896939973273e-01
-8.3290988044420844e-01
--2.0698077939567877e+01
-8.4577827937185796e-02
-8.4668517670565835e-01
--2.0781318773175080e+01
-2.4923092804130706e+00
-1.4109593696349845e+00
--2.0541968949109791e+01
--9.3577132265715210e+00
--2.3727388275743722e+00
--2.9960051402506451e+01
-1.1811988613569082e+00
-4.6089361391919287e-01
--2.0360048548148118e+01
-4.2059772382451621e+00
-1.2605663998747678e+00
--2.1653655403192953e+01
-4.0708905177017218e-01
--3.4970169402326867e-01
--2.0550116531254883e+01
-2.3790668223802989e+00
-2.5293882960265618e-01
--2.0293050403711376e+01
-4.7874375258290819e-01
--9.1568381039155133e-01
--2.0737164782649746e+01
-3.2651949831052773e+00
--1.1223234592439689e-01
--2.0787221068434473e+01
--1.3268947638747216e+01
--5.6175705975078705e+00
--2.5208486682266376e+01
--1.1511440840497684e+01
--5.2773932858492598e+00
--2.3071919296208659e+01
--9.6963727558290245e+00
--5.0546394637639320e+00
--2.3325191069949465e+01
--1.0918690626232866e+01
--5.4355846718633130e+00
--2.3058053077291124e+01
-2.1486088834067512e+00
--1.2306321734243240e+00
--2.0600674016745028e+01
-2.1583537749583588e+00
--1.3620081174027161e+00
--2.0576445226215267e+01
-4.9367568011650649e+00
--7.3044596522240479e-01
--2.1583169912175389e+01
-4.8058298347818340e+00
--9.7398609794473523e-01
--2.1299562762607561e+01
--1.0749576429775951e+01
--6.1999544988781743e+00
--2.2008474736844672e+01
--1.0163988535302495e+01
--6.1731029240000277e+00
--2.0335609975650513e+01
-4.8742985900547033e+00
--1.3992521159064553e+00
--2.1352665599167363e+01
--6.7596782261222668e+00
--5.9126233628589580e+00
--2.4505931938370694e+01
--6.7518552390252191e+00
--5.9151258783961467e+00
--2.4482421017348202e+01
--6.3743050865607485e+00
--5.7797275283688849e+00
--2.4629955361323223e+01
--9.9402940365526948e+00
--6.6382391287224252e+00
--2.1313630030339915e+01
--8.5431441396642498e+00
--6.2499914877924221e+00
--2.1727647312489463e+01
--6.7918277187567986e+00
--6.0482475953387729e+00
--2.4286526856576515e+01
-2.3331164278465626e+00
--2.4943920397807875e+00
--2.0202994414432887e+01
--8.5655755724422153e+00
--6.3764781349966153e+00
--2.1451184296448567e+01
-1.8519820728914465e+00
--2.8517766620407650e+00
--1.9720165819753117e+01
--1.2586138873005076e+01
--8.3697231539896215e+00
--2.1869289522845413e+01
--7.8105172162543610e+00
--6.8177579319734978e+00
--2.1254462938982236e+01
--7.9926365623295412e+00
--6.8912236500636315e+00
--2.0753023706052925e+01
--7.9953917860913135e+00
--6.9135034542351592e+00
--2.0802649358156597e+01
--5.2411154942655109e+00
--6.5762078486563551e+00
--2.3888642450133304e+01
--5.1646546801028252e+00
--6.5140820141677418e+00
--2.3565528111566870e+01
--5.0134501520431369e+00
--6.6056781347835170e+00
--2.3617229609893549e+01
-2.3821570090579636e+00
--3.5236956741020937e+00
--2.0279198286523034e+01
--5.1559629302560026e+00
--6.8545890872765591e+00
--2.3346509334048690e+01
-1.2908765219726012e+01
--2.1838473625348076e+00
--2.9771565578901043e+01
--6.8415509192609552e+00
--7.3063802878006809e+00
--2.2331536045136684e+01
--6.7279018121874570e+00
--7.4080705180900521e+00
--2.2351091617784270e+01
--1.0334676403466305e+00
--5.7464684603976171e+00
--2.2257370594859399e+01
-1.3621445845606074e+01
--2.8597346123534990e+00
--2.9572884771963619e+01
-5.7462880731608061e+00
--4.0591178709367162e+00
--2.3203891531638021e+01
-1.1364188035556037e+01
--5.4711770092808578e+00
--2.5077462070711341e+01
-8.9387447507838012e+00
-2.3941231332918406e+01
--4.9705706169770757e+01
-1.2649030513569620e+01
-2.4990480055573570e+01
--5.7564742219378005e+01
--7.2549461689138024e+00
-1.4283544994734150e+01
--4.4017271864141236e+01
-1.0217580891014391e+01
-2.0494217614291511e+01
--5.5427465703680042e+01
-1.4683075435380257e+01
-2.1811701431025458e+01
--5.8025949076767716e+01
--2.0528962564994011e+01
-1.2684753610099753e+00
--3.4317956652294924e+01
-2.9338723006315268e+00
-3.8777174502348104e+00
--2.3773300188111296e+01
--9.6028276324629069e-02
-2.6495822464245573e+00
--2.2040485424345864e+01
-1.1666544301883254e+01
-7.6520648409434093e+00
--4.3994449003314138e+01
-1.2357234501004969e+01
-6.1121381592359851e+00
--3.0096686146495820e+01
-1.6670938857943815e-01
-1.5130124924082629e+00
--2.0969797841627607e+01
--2.1543819811192075e-01
--2.9513387994757045e-01
--2.0836915657718698e+01
-1.2952068225275314e+01
-3.4375940396580842e+00
--2.9886447034235360e+01
-2.7369575819937362e+00
-3.4456940297779132e-01
--2.0511715115056866e+01
--1.3706366373665860e+01
--5.3497589667345391e+00
--2.5376765985900800e+01
--1.1728166577677236e-01
--1.0319375516999658e+00
--2.0967806861022012e+01
--1.0664116716587481e-01
--1.0424322000554023e+00
--2.0847083838649436e+01
--1.1372293985089772e+01
--5.3989687021727377e+00
--2.3394784105255933e+01
--5.8142150589910528e+00
--4.0064131889531431e+00
--2.6217142977821972e+01
--1.1890305001076105e+00
--2.2360590908795714e+00
--2.0453558583916873e+01
--1.2536540439805540e+01
--6.3759143150848212e+00
--2.4048271449138262e+01
-5.0912526328885122e+00
--8.0077821578968145e-01
--2.1637649594775013e+01
-2.5958928362156679e+00
--1.6531187704914789e+00
--2.0270557915936035e+01
--1.1935119540367687e+01
--6.7344167434002236e+00
--2.2814946988949643e+01
--6.5223515880532608e+00
--5.9104723692883248e+00
--2.4502320610525828e+01
-1.9480966151340826e+00
--2.7038310475720442e+00
--1.9929181194247036e+01
--7.7707761386884489e+00
--6.6031875070051420e+00
--2.1787617784894422e+01
--7.0752671824877993e+00
--6.6767914564648780e+00
--2.3589339992320649e+01
--6.7574282119177465e+00
--6.5920483324945289e+00
--2.2271416752658919e+01
--5.6117708686087733e+00
--6.7619638390830072e+00
--2.3458914875573651e+01
--5.5688298551402378e+00
--6.7546018721725440e+00
--2.3310908330354774e+01
-2.1948162064982077e+00
--3.5095949606045460e+00
--2.0323701867991065e+01
-1.3183472214778586e+01
--2.3921706388002493e+00
--2.9316326217410463e+01
--4.3336753563029022e+00
--6.9068087912829599e+00
--2.3267561513593431e+01
-2.0430277586060170e+00
--4.2404449118157537e+00
--2.1170009946258507e+01
-1.0358858171807530e+01
--3.6131348835833950e+00
--2.7892557988000782e+01
--6.8025712349099665e+00
--9.1363850939045221e+00
--1.9916620245886779e+01
-1.3110168500784269e+01
--4.3804797963861581e+00
--2.6878850779368207e+01
-1.3383663796882423e+01
--4.9184494058272712e+00
--2.7011977574903479e+01
-1.0921872816734831e+01
--6.4449809359005918e+00
--2.3804507833000091e+01
-1.3465107544077918e+01
-2.1628573968703495e+01
--5.7128941987481525e+01
--1.3251910555000681e+01
-5.1780883881839861e+00
--3.7989409553037234e+01
-9.3733185236286918e+00
-9.9151115922375634e+00
--4.7352973404517897e+01
--3.1845976381845958e-01
-3.6464303787051039e-02
--2.0939360546190770e+01
-2.3469643877128075e+00
-6.3939410436557487e-01
--2.0408824376521864e+01
-1.6928084498557125e+00
--3.4507340328743019e-01
--2.0148179033496859e+01
-1.7266726164375947e+00
--3.0583418297921755e-01
--2.1080646022596881e+01
--1.1500591398420644e+01
--5.1906166154005575e+00
--2.3496038591944572e+01
--1.0504849374316750e+01
--5.7758224404025995e+00
--2.1265945234767702e+01
--2.5377772427819840e+00
--3.5726646987058110e+00
--2.3498604445198016e+01
--9.5254330487554775e+00
--5.8899112476999838e+00
--2.1621795078196531e+01
-2.6856258269043773e+00
--1.8288016643761409e+00
--2.0243767153620681e+01
--1.3839581245284862e+01
--7.9286328454476722e+00
--2.2700945525663592e+01
-1.3131419717311235e+00
--2.8624748422933530e+00
--1.9647297071141629e+01
--8.6496406000505814e+00
--6.5497851619294423e+00
--2.1354713638188738e+01
--2.4548731071830532e+00
--4.7848747318409597e+00
--2.3466697610720331e+01
-2.9396875795490391e+00
--2.8210738792339125e+00
--1.9745011410733515e+01
-5.3826299984266592e+00
--3.6034717041875663e+00
--2.2280137881879359e+01
-4.9224315132390677e+00
--4.6485269481804892e+00
--2.2724390121053158e+01
-1.3493049748716995e+01
--4.6873904539401927e+00
--2.7330647299091126e+01
-7.2606427473118309e+00
-2.2199658350461270e+01
--5.2245847741729115e+01
--1.6643702310888977e+00
-1.6589873326351064e+01
--5.0117274746659007e+01
-5.2292627758888202e+00
-1.7693842169702190e+01
--5.3701361341518357e+01
-5.1590920763986805e+00
-1.7585503617602782e+01
--5.3380519213572036e+01
-1.4804040901401873e+01
-2.2520999976694778e+01
--6.2557658367334547e+01
-2.5938584817714955e-01
--8.5151446464983294e-02
--2.0636439383415784e+01
--1.1449536024708667e+01
--6.1085322941050846e+00
--2.2058676791976449e+01
-3.2517380656040098e+00
--2.2862387648293714e+00
--2.0412179073567785e+01
-4.7501773833526464e+00
--2.4864209949554152e+00
--2.0567651540866784e+01
--1.2229757796457152e+01
--9.2350497778191052e+00
--2.0790092208770524e+01
--1.2170646084890958e+01
--9.5614387901411515e+00
--2.0191353407622447e+01
--6.9787891525876136e+00
--8.8964007844821893e+00
--2.0335940353745947e+01
--6.9787891525876136e+00
--8.8964007844821893e+00
--2.0335940353745947e+01
-1.3877944908632282e+01
--4.4683643218144882e+00
--2.8130521105585530e+01
-4.8394706185420846e+00
-1.9756049766086221e+01
--5.0666773141077520e+01
--1.2418215037557600e+01
--8.5476612140522885e+00
--2.1533364351088107e+01
--1.1787238487548400e+01
--9.6781844835520268e+00
--2.0167333231355496e+01
-4.7704549381498462e-01
--5.6203134677908571e+00
--2.2241549733832819e+01
-1.1518478407126906e+01
-2.3248110168099313e+01
--5.3905283751790108e+01
--1.1118286480077359e+01
-1.2058373311468300e+01
--4.3127438106262311e+01
-1.2798919008559967e+01
-2.3471459643034137e+01
--5.3938868502215776e+01
-1.8222850661440153e+00
--1.4354574187799847e+00
--2.0507234364917114e+01
-2.8715697481526283e+00
--1.9909530995384823e+00
--2.0670855482971827e+01
-6.7771263608660846e+00
-1.8940877889622215e+01
--5.3979534423018436e+01
-4.4113436725808217e+00
--1.5532091660850447e+00
--2.1087813579501859e+01
--7.7421074056308843e+00
-1.5518353610534472e+01
--3.9774788935941260e+01
--8.3758589995040733e+00
-1.2994434204577708e+01
--4.4947983380165773e+01
--2.4496709588182930e+00
-2.6430989305710035e+01
--3.9849107382147324e+01
-8.7116712997926449e+00
-2.9959761561853121e+01
--4.5023281606577427e+01
-7.8162858840619052e+00
-2.8549736657026457e+01
--4.3373690728800170e+01
-1.4833155068645102e+01
-3.1575006221893815e+01
--4.7850149039691075e+01
-1.0010977643174558e+01
-2.9319028344060378e+01
--4.4883166001134079e+01
-1.8530219338726255e+00
-2.6103851722430740e+01
--4.0662365239079243e+01
-6.6964033297062175e-01
-2.6032537635416112e+01
--4.0647992308363513e+01
-9.5621435731942341e+00
-2.8700090663793663e+01
--4.4359251391539750e+01
-1.5001605884421181e+01
-3.0873217767497358e+01
--4.7979897971430546e+01
-9.9332670772736940e+00
-2.8755607681198200e+01
--4.5399001462108394e+01
-1.8997740153313045e+00
-2.6497716693071279e+01
--4.1933854168879279e+01
-9.3683909225287927e+00
-2.7334852784189181e+01
--4.3998666540224107e+01
-4.8662294407840543e+00
-2.7160510617720554e+01
--4.3851481428453695e+01
--1.0468792107307137e+00
-2.4475204091568916e+01
--3.9872186771426165e+01
-9.5460978554862432e+00
-2.8690425204609369e+01
--4.6297783603071856e+01
-9.5460978554862432e+00
-2.8690425204609369e+01
--4.6297783603071856e+01
--2.5448055393055919e+00
-2.4001821836521010e+01
--3.9377288808416225e+01
-5.4302202304924760e+00
-2.7112185049774141e+01
--4.3950609450941378e+01
-4.7719782639915334e+00
-2.6341370186292892e+01
--4.2918422394938176e+01
-4.6038353638404104e+00
-2.6708355371568086e+01
--4.3428881358668967e+01
-4.8357936406921009e+00
-2.7094075487975918e+01
--4.3972422125789755e+01
-1.1917884919686525e+01
-1.5399750948343765e+01
--2.9063586223632626e+01
--2.3542290281078704e+00
-2.3990904155584136e+01
--3.9479068053728668e+01
-1.8430618419000986e+01
-3.1805132349550963e+01
--5.0914809793045826e+01
--2.4859984068738555e-01
-2.5068769318183147e+01
--4.1109645233409907e+01
-3.0030638493693990e-01
-2.5414346018793825e+01
--4.1658372812265711e+01
-1.8063274798351975e-01
-2.5394576574022192e+01
--4.1729875087709139e+01
-1.1598401119595572e+01
-1.6043730389786255e+01
--2.9987411424093619e+01
-3.0405495906241433e+00
-2.5587442768591067e+01
--4.2120392558348037e+01
--7.1565472878366947e+00
-2.0331483549718609e+01
--3.4548543429971609e+01
--4.2526304378869000e+00
-2.3138243366964161e+01
--3.8246080304345782e+01
-1.2418085728478878e+00
-2.5001640324219093e+01
--4.1312788078356675e+01
--6.5299675573069693e-01
-2.4890889119172506e+01
--4.1119135522024784e+01
-6.9497212620946724e+00
-2.7181048879421603e+01
--4.4761123389692521e+01
-7.3560261859594984e+00
-2.7223470131317239e+01
--4.4680415630534682e+01
-1.5036676639627693e+01
-1.5953230888440588e+01
--3.0663595087352608e+01
-4.6551533966301548e+00
-2.6144378233712143e+01
--4.3116120556169179e+01
-3.1511911932574979e+00
-2.6447574226169280e+01
--4.3592270952928736e+01
-2.9403015979452785e+00
-2.6340476532734257e+01
--4.3459286659019142e+01
-1.3574776002644109e+01
-1.6759396130905774e+01
--3.1389568033320312e+01
-1.3493251911619586e+01
-1.6489506648000056e+01
--3.1003300822912543e+01
--8.5409034077517418e+00
-2.1431469606123013e+01
--3.6042329131668943e+01
-1.3255215570689380e+01
-1.5279514254220693e+01
--2.9380088313366677e+01
--7.0748260745556024e+00
-2.2483231228684016e+01
--3.7423438027108354e+01
-6.2807014737089508e+00
-2.7251085793582273e+01
--4.4934960010891807e+01
-1.2944868826406697e+01
-1.7462903679543079e+01
--3.2433216604212255e+01
-6.4625354458832662e+00
-2.6540459050038915e+01
--4.4005875786740575e+01
-6.3332657525844782e+00
-2.6123250461550690e+01
--4.3241319284089393e+01
-6.7870988077794054e+00
-2.6586566109694001e+01
--4.4127471512029274e+01
-2.5520712799480511e-01
-2.4728759051062745e+01
--4.1261688245004905e+01
-6.3279146681756631e+00
-2.6850865027172297e+01
--4.4387354753691071e+01
-1.2870107984902949e+01
-1.6776477274879447e+01
--3.1636847126658314e+01
-1.3850302145120454e+01
-1.6070962444946073e+01
--3.0692014592754674e+01
-5.4576959868599211e+00
-2.6448390008100265e+01
--4.3871550997467423e+01
-1.2349097413594711e+01
-1.6165963899387503e+01
--3.0783407994998466e+01
--1.3372971610228885e+00
-2.4225801680427395e+01
--4.0569969566704373e+01
--8.3799357930121110e-01
-2.4005755686262955e+01
--4.0255661439804356e+01
--9.0533905175448073e+00
-2.1071943520103954e+01
--3.5776327673652453e+01
-1.2878457511192551e+01
-1.6487915218124854e+01
--3.1295301570567663e+01
--9.9785899345775841e-01
-2.3768555745432586e+01
--3.9972796724880588e+01
-2.2795828289144984e+00
-2.5536584656394080e+01
--4.2462902523255387e+01
-2.4453859965312263e+00
-2.5255869354561121e+01
--4.2193570217312548e+01
-1.2866666975974367e+01
-2.9365087541666778e+01
--4.8508587425400954e+01
-6.4084120761383137e+00
-2.6370680127731337e+01
--4.4150597824414007e+01
-6.4084120761383137e+00
-2.6370680127731337e+01
--4.4150597824414007e+01
--7.3980671055639515e+00
-2.0956674842970727e+01
--3.5855488743695929e+01
-7.1381436822702584e+00
-2.6791724371003586e+01
--4.4668055673783321e+01
-1.5478689138520634e+01
-1.5065845752907689e+01
--3.0077126494782753e+01
--6.0147357960534658e+00
-2.1606661956354376e+01
--3.6871388117105361e+01
-2.8006341862116013e+00
-2.5747721052802138e+01
--4.3153547217337852e+01
-3.1108850178944349e+00
-2.5728054637894420e+01
--4.2966434085701358e+01
-6.7480664159825698e+00
-2.6235070417143589e+01
--4.4022849762947239e+01
-6.8030447522130162e+00
-2.6384210927464544e+01
--4.4328088186385337e+01
-1.2058498565399658e+01
-1.0119600467257021e+01
--2.3207778779352306e+01
-3.4211385751900614e-01
-2.4603769760617816e+01
--4.1523936784177423e+01
-2.0170263199962726e+01
-3.1360583074795862e+01
--5.1960088070180412e+01
-1.3846657701927031e+01
-2.7970856389349716e+01
--4.7074121980338198e+01
-1.2159023738497481e+01
-1.5831601262340808e+01
--3.0782603446987824e+01
-9.0418155117852983e+00
-7.6140938144907384e+00
--1.9531642485117867e+01
-1.4544069627132066e+01
-2.8834574390140933e+01
--4.8554248189304438e+01
-1.3075689106103987e+01
-1.7373910835774652e+01
--3.3030837562024765e+01
-4.6822394611857119e+00
-4.5223042392756039e+00
--1.5084499090334610e+01
-3.4418779406206212e+00
-2.5753761141306509e+01
--4.3733681014937076e+01
-3.4236970349275260e+00
-2.5821976227560686e+01
--4.3667070007835044e+01
-3.1714283654189930e+00
-2.5275295803117817e+01
--4.2878660152120425e+01
-1.2364830356505827e+01
-1.1715274186002498e+01
--2.5522874605311063e+01
-1.9865336940267926e+00
-2.4973729872097220e+01
--4.2571337765691617e+01
-6.1249175344763414e+00
-2.6191944813558756e+01
--4.4520004467679904e+01
-2.5196555287496412e+00
-2.5389991473204280e+01
--4.3261026475786046e+01
-1.6270017354145672e+00
-2.4562313882816227e+01
--4.2112218022990831e+01
-8.5967678772755214e+00
-2.8069875066966265e+01
--4.7604509087611319e+01
-8.8078690428276847e+00
-8.2727144537804680e+00
--2.0636590487029615e+01
-1.3524188925255352e+01
-1.1356473212252903e+01
--2.5527822168163034e+01
-5.7893070344246977e+00
-6.1326166153684669e+00
--1.7524516517785887e+01
-5.0920104966782276e+00
-5.0594292751565497e+00
--1.6143107026056580e+01
-1.3380328314048102e+01
-1.1586629915999774e+01
--2.5890688749559796e+01
--8.3608617948857955e-01
-2.3837913904343665e+01
--4.1163046462920455e+01
-6.4394022701892624e+00
-2.5827591314316525e+01
--4.4477318135499189e+01
-1.2504070597558311e+01
-1.6426863142416327e+01
--3.1981940374547349e+01
-5.4515256844228563e+00
-5.3878781767492860e+00
--1.6586444433197602e+01
-1.1904095238973500e+01
-1.5450270835492844e+01
--3.0922945167727683e+01
-1.5437109589886147e+00
-2.3933353040382045e+01
--4.1793215607806381e+01
-1.1794261764242236e+01
-1.5526386384060439e+01
--3.1107314352509530e+01
-4.6210330836105227e+00
-4.2038438127467632e+00
--1.4968432332773220e+01
-6.2604666569504008e+00
-2.5016734067000826e+01
--4.3807293544921031e+01
-1.2531968842699817e+01
-1.1184913621273770e+01
--2.5250180454797380e+01
-1.3193505900698488e+01
-1.0627496301022827e+01
--2.4743201380141024e+01
-1.2799480904813636e+01
-2.7115041875997868e+01
--4.7168737612111059e+01
-1.1043934921176103e+01
-2.8716352371055400e+01
--4.9421194826454915e+01
-9.6667548407639412e+00
-2.6985042397069257e+01
--4.6807640059903996e+01
--5.9192702448654344e-01
-2.3494493100633051e+01
--4.1254267037002002e+01
--1.0955315024959016e+00
-2.3699658621578855e+01
--4.1455274680379226e+01
-1.8664686239078030e+00
-2.4393890074105887e+01
--4.2783493277850127e+01
-5.7778876287586769e+00
-2.6448532558723617e+01
--4.6213977667569040e+01
--5.0275093499049801e-02
-2.3875417521824332e+01
--4.2210071008326807e+01
-9.2471119273167801e+00
-9.1718886450949597e+00
--2.2562148411789401e+01
--3.2836866370063764e+00
-2.2565222429656437e+01
--4.0098240683349147e+01
-1.3032700159233434e+01
-1.4970672348819276e+01
--3.0828411468197469e+01
-1.8604432692892544e+01
-2.9766178456345436e+01
--5.2258645633587484e+01
-1.3161931537311238e+01
-1.4869374609703673e+01
--3.0806743798896072e+01
-1.4698378259143382e+01
-1.5402967335431631e+01
--3.2118228036871322e+01
-1.7637051721913430e+01
-2.9333679043225992e+01
--5.1519437685661622e+01
-1.3020974746205491e+01
-1.4815448612096084e+01
--3.0773254865557181e+01
-1.4080388938126946e+01
-2.8322377078262168e+01
--4.9685583032275936e+01
-1.4054525215978563e+01
-2.8327896650947508e+01
--4.9645169970668164e+01
-5.1722782771091600e+00
-4.7661882794556494e+00
--1.6163735158771463e+01
-1.7860230013716180e+01
-2.8973607804132868e+01
--5.1089665478249294e+01
-7.0200410859172271e+00
-2.5556061978855038e+01
--4.5644663160137874e+01
-7.3054797346486566e+00
-2.6010254986148546e+01
--4.6324599921357866e+01
-1.9020006284269865e+01
-3.1229693500929276e+01
--5.4863982594160383e+01
-1.9020006284269865e+01
-3.1229693500929276e+01
--5.4863982594160383e+01
-1.4409819279038400e+01
-1.4402702261972509e+01
--3.0723368189064551e+01
--1.0035891772281051e+01
-2.3634746425858864e+01
--4.1010097599294390e+01
-1.8310148506221910e+01
-2.9531801357842269e+01
--5.2347829907425407e+01
--8.3535298468503949e-01
-2.2896569760346591e+01
--4.1374040365845566e+01
-1.1836628541561442e+01
-1.0499343573734702e+01
--2.5302465025583171e+01
-1.7865139280795901e+01
-2.8872743206471863e+01
--5.1470204869449134e+01
-1.3210428716483218e+01
-2.6732082775244830e+01
--4.8143690916403131e+01
-1.1754917439822758e+01
-1.0551766489197576e+01
--2.5083573758052463e+01
--9.7908660862286528e-02
-2.3308046121078359e+01
--4.2268186966993781e+01
-1.4928484855882532e+01
-1.4589933164017610e+01
--3.1656355003608834e+01
-1.2571111557650569e+01
-1.3229669722586520e+01
--2.9216037507691858e+01
-2.1580144082259453e-01
-2.3233001935928570e+01
--4.2390686598943681e+01
-2.1580144082259453e-01
-2.3233001935928570e+01
--4.2390686598943681e+01
-1.6163983551625588e+01
-2.8116467604611916e+01
--5.0861033444961635e+01
--9.2748846221227659e+00
-1.9803721667737694e+01
--3.6301777168589332e+01
-1.2443742009692091e+01
-2.7057543842213491e+01
--4.9075397347581237e+01
-1.3203086270586621e+01
-1.3607819757585636e+01
--3.0297075564151399e+01
-1.7259742821986148e+01
-2.9020804227422282e+01
--5.2606383214235727e+01
-1.4527063948580952e+00
-2.3331998984264093e+01
--4.2945018562815974e+01
-1.2826208147341271e+01
-2.7357894381181190e+01
--4.9843499668581991e+01
-1.6652794715031444e+01
-2.7960340458121866e+01
--5.0944579716876881e+01
-1.7219229760792249e+01
-2.8573752336888045e+01
--5.1845416191331708e+01
--1.0641296195868227e+01
-1.9166809238944456e+01
--3.5667787142639071e+01
-1.2492558112805497e+01
-1.0573110236717929e+01
--2.5969316081007449e+01
-2.8735057933295249e-01
-2.2939035784980863e+01
--4.2538247148301785e+01
-1.1059170170754962e+01
-2.6504740189164231e+01
--4.8668948057919579e+01
-2.5409070124464122e+01
-3.3100662706934351e+01
--6.0216749175008026e+01
-1.5372452776501049e+01
-1.3499708145206570e+01
--3.0834457953446684e+01
-1.3092953901457010e+01
-1.0880483580026818e+01
--2.6819271258941903e+01
--8.9151723664817553e+00
-1.9242401906083376e+01
--3.6235425979503006e+01
-1.4126148779312922e+01
-1.5427208065794140e+01
--3.3550538663822124e+01
--4.3298904396373832e+00
-2.1369010207262964e+01
--3.9971383543050095e+01
-1.0490452089588157e+01
-2.5400845049252204e+01
--4.7358028857441724e+01
-1.2984568217841838e+01
-2.8008409822791485e+01
--5.1643710701609137e+01
-1.3192509686263401e+01
-1.4150110200928792e+01
--3.1255966267151578e+01
-1.5271869705637878e+01
-1.3561085886406062e+01
--3.1116060451656494e+01
--1.7840199716790270e+00
-2.1991587513696008e+01
--4.1306973374003917e+01
-1.1623958319933665e+01
-2.6576521416731119e+01
--4.9363707631287831e+01
-1.2858286784435089e+00
-2.3231747906658430e+01
--4.3509182607240078e+01
-1.3351907435687936e+01
-1.0353817511364397e+01
--2.6401547063165811e+01
-2.8024360432721938e+01
-3.3487525492949537e+01
--6.1680749063796256e+01
--5.3854361318100645e+00
-2.0795083350904793e+01
--3.9142185880574893e+01
-1.2608644194675623e+01
-1.0406964760718381e+01
--2.6308139065614245e+01
-4.8153990825463886e+00
-2.4035769536282615e+01
--4.5195678635911307e+01
-1.4743388312008431e+01
-1.4177400783378312e+01
--3.2236402389142874e+01
-1.4348163953681450e+01
-9.0136179132110730e+00
--2.4717231825679608e+01
-1.5408612195551237e+00
-2.3305265992529950e+01
--4.3905777928435924e+01
-1.3550786907040603e+01
-1.5019206504764769e+01
--3.3206731125801127e+01
-1.4077415075180699e+01
-8.2612273369277336e+00
--2.3548274898926280e+01
-1.2775783475782587e+01
-2.6328550697358349e+01
--4.9771482493176237e+01
-4.2046966464597126e+00
-2.3796760694636685e+01
--4.5063305505559434e+01
--4.5595535180247078e+00
-2.1017555523314215e+01
--4.0148883385236353e+01
--1.7262368765965106e+00
-2.2046796027663067e+01
--4.2007286126016041e+01
--1.5463965239895670e+00
-2.2496858859688672e+01
--4.2754669543389063e+01
-1.3381820395288146e+00
-2.3131720200121702e+01
--4.4041741617252192e+01
-1.3381820395288146e+00
-2.3131720200121702e+01
--4.4041741617252192e+01
-1.2676706372247251e+00
-2.3076966603233974e+01
--4.3808464125410907e+01
-1.2743577294358133e+00
-2.3561052204481861e+01
--4.4597466222833404e+01
--1.0271654891477787e+01
-1.8834434806219129e+01
--3.6280039711200978e+01
--1.0271654891477787e+01
-1.8834434806219129e+01
--3.6280039711200978e+01
--2.1334671071505795e+00
-2.1595182631034330e+01
--4.1299472965902623e+01
-2.9186683254423734e+01
-3.3050111182215055e+01
--6.1902526526570099e+01
--1.7699153504534970e+00
-2.2329553636416438e+01
--4.2645253565966357e+01
--1.7699153504534970e+00
-2.2329553636416438e+01
--4.2645253565966357e+01
-1.3987121210058048e+01
-9.2824558987795491e+00
--2.5444432201484616e+01
-1.4761000185422235e+01
-8.2479940180338289e+00
--2.4069539580276146e+01
--5.6017390826882796e+00
-2.0600917699944258e+01
--3.9709667046843670e+01
--5.6189675321621984e+00
-2.0551185049500912e+01
--3.9463052122793329e+01
--8.9922205898947971e-01
-2.2563163718872634e+01
--4.3280564935482516e+01
-1.4869425581630493e+00
-2.2830212547193874e+01
--4.3862332420605973e+01
-1.7762186656318711e+01
-2.9236678436611395e+01
--5.5420476722360227e+01
--2.6491032301268667e+00
-2.1333140513888367e+01
--4.1090854933537081e+01
-1.0209942912277901e+01
-2.5586892269071672e+01
--4.9114233221867408e+01
-1.5650649324148530e+01
-2.6948506143107743e+01
--5.1539108159265631e+01
--1.0428213007374762e+01
-1.8684320394980535e+01
--3.6332268730849066e+01
-2.1303131124425185e+01
-3.0347881534903365e+01
--5.7737149666341274e+01
-8.5525359319259202e+00
-2.4159668841223986e+01
--4.6985979914824902e+01
-9.7553331512340868e+00
-2.5182229723558041e+01
--4.8398981599730128e+01
-1.0311910234219836e+01
-2.5853855317843752e+01
--4.9608742119980391e+01
-1.4626135749540786e+01
-8.3551135708125255e+00
--2.4407058401804040e+01
--1.9505299971687922e+00
-2.1615400916247747e+01
--4.1887793567607943e+01
-9.6352482560502910e+00
-2.5128263750318389e+01
--4.8524932010668934e+01
--1.8297032423245323e+00
-2.1762925369172599e+01
--4.2280415385695484e+01
--1.8791647754109322e+00
-2.1687587717820033e+01
--4.2068075645176592e+01
-9.4613543700869442e+00
-2.4704228894813806e+01
--4.7903716526644537e+01
-1.2240517207343302e+01
-1.2759221830933059e+01
--3.0366692838084060e+01
-1.3626841556272117e+01
-1.4071979988212552e+01
--3.2668623072755423e+01
--6.4355917199127282e+00
-2.0026380979827209e+01
--3.9190951469804716e+01
--1.6623533105296899e+00
-2.1488722785947935e+01
--4.1922027989999656e+01
-1.8299593541436285e-01
-2.2373879979674800e+01
--4.3715205986880484e+01
-1.0772023295681375e+01
-2.5532180218134691e+01
--4.9730601014796775e+01
-1.0772023295681375e+01
-2.5532180218134691e+01
--4.9730601014796775e+01
-9.8942602997671845e+00
-2.4997574865434231e+01
--4.8827471183236533e+01
-1.2411449116589544e+01
-9.9279955124884953e+00
--2.6484566811643138e+01
--2.9246497964211216e+00
-2.1265061217179458e+01
--4.1778540283023297e+01
-1.1776165770760697e+01
-2.4402041112370746e+01
--4.8504709752886036e+01
-9.5746794605212528e+00
-2.4688306320820395e+01
--4.8576399822707224e+01
-1.3672411694889144e+01
-1.5208074935939443e+01
--3.5185446871247350e+01
-1.4358582872227986e+01
-1.2366737653301819e+01
--3.0741466947508716e+01
--7.2766631628661997e+00
-1.9570339018647360e+01
--3.8936365984982011e+01
-9.8253019367842906e+00
-6.8973217703229688e+00
--2.1933483784635150e+01
-1.4206996737545818e+01
-1.3923904778767442e+01
--3.3469106166861906e+01
--8.1635023934252668e+00
-1.9179937832611309e+01
--3.8345177955526552e+01
-9.8974978855604228e+00
-2.5083981781066175e+01
--4.9768291880450612e+01
--2.0455444712339252e+00
-2.1044528469300310e+01
--4.2033066885254463e+01
-1.2902751774495346e+01
-1.1201292066799336e+01
--2.8989105400869910e+01
-1.1837566862100200e+01
-9.4849150429023066e+00
--2.6196890909679642e+01
-1.2886662943427719e+01
-7.9957145034754529e+00
--2.4520082778602514e+01
-1.4117846159639425e+01
-8.5188973220991073e+00
--2.5463115982940778e+01
-1.4117846159639425e+01
-8.5188973220991073e+00
--2.5463115982940778e+01
--8.5298458855657415e+00
-1.8921127221492455e+01
--3.8288267914372142e+01
--8.5298458855657415e+00
-1.8921127221492455e+01
--3.8288267914372142e+01
--8.5346047535010623e+00
-1.7631121361871138e+01
--3.6148698722812100e+01
--2.2415188006656086e+00
-2.1494775521167551e+01
--4.3172594312513134e+01
-7.3421716281449347e+00
-2.3362619301715675e+01
--4.7198655984487587e+01
-1.1932495299246282e+01
-7.9848486068212843e+00
--2.4386067961159256e+01
-1.2801589229266453e+01
-8.9050398717061370e+00
--2.6153164758549540e+01
-1.4774382669194326e+01
-7.5705461594288437e+00
--2.4429706302596557e+01
-4.8912522833974608e+00
-2.2315192452439089e+01
--4.5391883649813195e+01
-1.4029127533608339e+00
-2.2170129448565021e+01
--4.5036359895365003e+01
-1.2071072935262398e+01
-2.3692967505584328e+01
--4.8681489130425526e+01
--1.0350877850120616e+01
-1.8065372448436804e+01
--3.6974010290972977e+01
--1.0580761378134781e+01
-1.8179394439353565e+01
--3.7605403769001825e+01
--8.3728722826671476e+00
-1.8318361660915887e+01
--3.8159285184876900e+01
-1.2551375264944204e+01
-7.8221714746665700e+00
--2.4376881899146323e+01
--9.1002442204234537e+00
-1.8184112711603198e+01
--3.7420055951080464e+01
--8.7723234686065510e+00
-1.7274797998608349e+01
--3.6089983593827029e+01
--8.7723234686065510e+00
-1.7274797998608349e+01
--3.6089983593827029e+01
-1.1596704261840337e+01
-1.3492287677228239e+01
--3.2870646719627757e+01
-1.5587732285597058e+00
-2.1908323527445880e+01
--4.4802962003772450e+01
-1.4272230771994501e+01
-2.6711262244009308e+01
--5.4244962933378787e+01
-1.4272230771994501e+01
-2.6711262244009308e+01
--5.4244962933378787e+01
-2.1470576308195813e+01
-2.9073550587753292e+01
--5.9012936271124843e+01
-1.6627199749986021e+00
-2.1966059448492508e+01
--4.5192714542906870e+01
-1.2102904242871327e+01
-7.8338097288702704e+00
--2.4705099787520236e+01
--3.7337369755661269e+00
-2.0216040304884281e+01
--4.1671675246027014e+01
--4.1887546979815315e+00
-2.0265415025078383e+01
--4.2177245994098186e+01
--7.8357710696327461e+00
-1.8557017912449481e+01
--3.8835333129683661e+01
--7.4106423111122828e+00
-1.8542841866113271e+01
--3.9042786014782209e+01
--9.1026671641487189e-01
-2.1541132945152107e+01
--4.4429413330000983e+01
--1.2233559468428378e+01
-1.7103987649649774e+01
--3.5714238881602832e+01
-1.2296631257311878e+01
-8.0874781230746677e+00
--2.5513074514205115e+01
--1.9662884677196451e+00
-2.0507506297949497e+01
--4.2740851013220095e+01
-9.7969966110256923e+00
-2.4108046981687131e+01
--4.9877282353707805e+01
--1.4371254119996042e+00
-2.0970662195413894e+01
--4.3497249714016569e+01
-1.3847979974488181e+01
-1.4006312071915282e+01
--3.5013381045039459e+01
--1.1000177605086929e+01
-1.7510243103687184e+01
--3.6720289163874355e+01
--1.3288339444320778e+01
-1.6469885495199012e+01
--3.4782567911264323e+01
--9.2788921246657399e+00
-1.8307859923707028e+01
--3.8678329259679131e+01
-1.9068565124140815e+01
-2.6334021071544107e+01
--5.5016446393480706e+01
-2.0404386527104950e+01
-2.6546006191297455e+01
--5.5667992710041453e+01
--1.0486048865803120e+01
-1.7602974777435321e+01
--3.7100671658975045e+01
--9.4476825304169965e-01
-2.0951308987451668e+01
--4.3959159569948092e+01
-2.0151258168627217e+00
-2.1780675825521833e+01
--4.5713910747236376e+01
-2.5683081597566879e+00
-2.1888309507615062e+01
--4.5827816215231600e+01
-1.3327265840074675e+01
-8.9033251302615781e+00
--2.7157322462827786e+01
-1.8590601225547424e+01
-2.5935473941532614e+01
--5.4561430211960293e+01
--2.9151027993393734e+00
-2.0131448771998340e+01
--4.2563437113317661e+01
-1.8860239690938606e+01
-2.5828918686451804e+01
--5.4600939464068382e+01
-9.4137841040811114e+00
-6.2401760838948608e+00
--2.2135072962671639e+01
-1.7794289216582291e+00
-2.1622711707474085e+01
--4.5611664865083128e+01
--3.4388984560077773e+00
-1.9538746965195209e+01
--4.1876062164746180e+01
--3.1558023891393336e+00
-1.9749582301202004e+01
--4.2150034033312735e+01
--3.4454338474049817e+00
-1.9921706994094158e+01
--4.2183861104986107e+01
--1.2994416335395446e+01
-1.6380231024336556e+01
--3.4919116089447115e+01
--1.2196325063932969e+01
-1.4667389601695557e+01
--3.2396500381705998e+01
-6.6155170566658272e+00
-2.2632582730982392e+01
--4.8027304470796956e+01
-1.6488519813927081e+01
-2.3951926354489515e+01
--5.1818634238344764e+01
-1.2730533335264212e+01
-2.4429519138843290e+01
--5.2192486070489814e+01
-1.5012474706347539e-01
-2.0823354949928014e+01
--4.4469852611523208e+01
-2.6774290564243572e+00
-2.1928257012876013e+01
--4.6492307365430875e+01
-1.8930979921635075e+01
-2.5914894666668161e+01
--5.5164653350800052e+01
-1.2600315766011274e+01
-6.1096046636332533e+00
--2.2672655301912982e+01
--5.6169221888196275e-01
-2.0674257038219253e+01
--4.4478559200584336e+01
-2.2640192794415608e+00
-2.1581440466560693e+01
--4.6023173512410757e+01
-2.5602691608865524e+00
-2.2185666970636721e+01
--4.7148647479981562e+01
-2.1174746560791672e+01
-2.5777573470222940e+01
--5.5467340255149189e+01
--8.3806144833948970e-01
-2.0975113316226636e+01
--4.4964903794128460e+01
--1.3927071833818039e+00
-1.9998100738619033e+01
--4.3344929354519401e+01
-1.9020264007736806e+01
-2.5961458855781640e+01
--5.5308270796563690e+01
-1.7161011161328763e+00
-2.1056437822599339e+01
--4.5482196537747228e+01
-1.7152787213228373e+00
-2.1167144795962333e+01
--4.5622630810621132e+01
-1.2443411935652211e+01
-8.0078053160475093e+00
--2.5952071993921734e+01
--3.3555599875602287e+00
-1.9814534072816468e+01
--4.2850695932148120e+01
-6.9873029846447761e+00
-2.2942165081371261e+01
--4.9274211998136792e+01
-1.5925349896486424e+01
-2.4338830059296495e+01
--5.2710500894403964e+01
-1.1468438919508268e+01
-1.1736098197722850e+01
--3.1797652420967442e+01
--1.3049077532072688e+00
-2.0448923143918929e+01
--4.4104490022528445e+01
-3.1066789087123410e+00
-2.2184704552206785e+01
--4.7820856840925153e+01
--1.1817834559380447e+00
-2.0843823391497065e+01
--4.4997032024322081e+01
-2.0782481657982088e+00
-2.1554434719914877e+01
--4.7053346178257833e+01
--7.3912762985401432e+00
-1.7968274103426122e+01
--3.9707409038102426e+01
-1.8024813796712362e+01
-2.5691222479174719e+01
--5.6018327256568526e+01
-1.2914943976330784e+01
-6.7744542372166290e+00
--2.4664752978295510e+01
-1.2789197278292686e+01
-1.3178946516600265e+01
--3.4955430751691488e+01
--1.0553950434648651e+00
-2.0706479477991177e+01
--4.5161280885717176e+01
-2.5266582977549767e+01
-2.8889791729143120e+01
--6.3053089581679899e+01
-1.3277103542464562e+01
-1.0413308918469909e+01
--3.0673349536524960e+01
-1.2996453594320961e+01
-1.0281945496154327e+01
--3.0177627878714144e+01
-1.1515353284160129e+01
-1.1252763280289741e+01
--3.1686525332230662e+01
-9.6327216208006075e+00
-4.3069160830105604e+00
--1.9811062341311260e+01
-1.3828181213038363e+01
-6.1077758042497514e+00
--2.3640835612885056e+01
--1.2231696927815601e+00
-2.0581440845680479e+01
--4.5046760245706530e+01
--1.2231696927815601e+00
-2.0581440845680479e+01
--4.5046760245706530e+01
-1.8114745079759469e+00
-2.1033860218792764e+01
--4.6231868382768866e+01
-1.0270325406637907e+01
-2.2907889787201487e+01
--5.0615145945188083e+01
-1.0062451028860751e+01
-4.4721913893708223e+00
--2.0370145310748931e+01
-1.4146610562651466e+01
-6.2418716461324797e+00
--2.4319020917879985e+01
-1.0810798355854436e+01
-2.4299851624283583e+01
--5.3357874349747227e+01
-1.3920969455618209e+01
-5.9838492717965819e+00
--2.3599561923397754e+01
-9.5867546694745762e+00
-2.2978525586506830e+01
--5.0905805179544330e+01
-7.2340492188823173e+00
-2.2305612149489544e+01
--4.9731411354096210e+01
-1.2150384537094588e+01
-7.7053126601671149e+00
--2.6548429840901328e+01
-1.3228726163760857e+01
-5.2717870271763330e+00
--2.2416719750194687e+01
-1.2489769288294678e+01
-2.3611489371158569e+01
--5.2723312343287965e+01
-1.7115682447018767e+01
-2.6096990195491095e+01
--5.7955163652614814e+01
-1.9728338561704518e+01
-2.5358190671493244e+01
--5.6767967636089232e+01
--8.6042075806821803e+00
-1.7267940326311265e+01
--3.9107223602194317e+01
-1.1783945511461644e+01
-8.2056764306673067e+00
--2.6813517924494608e+01
-1.3044090571812641e+01
-2.3938595558505401e+01
--5.3729785977401669e+01
--1.0618636816212852e+01
-1.5239032623108015e+01
--3.5104887622058861e+01
-1.2159054572752790e+01
-7.0659779007546186e+00
--2.5546572831336881e+01
--8.0600671641452515e-01
-2.0203871733433402e+01
--4.5610297032510054e+01
-1.2547784183435528e+01
-2.3939598236432804e+01
--5.4426569959323864e+01
-1.2998054166610185e+01
-7.8508990241452796e+00
--2.7219948533371653e+01
-1.2260285105885409e+01
-7.4891474447286726e+00
--2.6429336608387917e+01
-1.2443336361952246e+01
-1.2184665054844727e+01
--3.4522567658026674e+01
--1.1632828581449420e+01
-1.6459286013433864e+01
--3.7640491070456505e+01
-5.1481583344805584e+00
-2.0940269350454777e+01
--4.8111014444742821e+01
-1.2778651217124285e+01
-1.1630383083389859e+01
--3.3875277101332188e+01
-1.2110301644531525e+01
-7.6735947530871211e+00
--2.7059581761585260e+01
-9.8469423199711077e+00
-2.3487059161390906e+01
--5.3359073094705742e+01
-1.3665429458758211e+01
-7.4837284665341022e+00
--2.7002878298008284e+01
--8.9006486408200161e+00
-1.7042665944064421e+01
--3.9320975997977769e+01
-9.4572590165172148e+00
-2.3517268107781934e+01
--5.3310365988704469e+01
-1.3906632948509921e+01
-6.0835334463955464e+00
--2.4580525735224839e+01
--8.7748548916779416e+00
-1.7077415400512692e+01
--3.9515787387769642e+01
-1.2438254775526374e+01
-7.4937441638446662e+00
--2.6887865726133139e+01
--3.8196581575308817e+00
-1.8742841654408632e+01
--4.3043824077367788e+01
-1.4688229630528863e+01
-1.0477733825248452e+01
--3.2398197843689452e+01
--5.9552157665004009e+00
-1.8062909031805841e+01
--4.1509680921359049e+01
-3.4938826596401706e-01
-1.9989482496063342e+01
--4.6222031867640688e+01
-1.2360396836075818e+01
-1.1127559318289332e+01
--3.3183345540303556e+01
-1.2351953819487218e+01
-7.4342135859031941e+00
--2.7016891791429391e+01
-1.4735775290566226e+01
-1.0404763770823047e+01
--3.2474778426536140e+01
-8.0768467649063211e+00
-2.1478631237131591e+01
--5.0450840361011394e+01
-1.2526245543185995e+01
-2.3970436658145463e+01
--5.5380303376775544e+01
-1.1675880010513788e+01
-8.0173254399502820e+00
--2.7626545693034757e+01
-1.3072534209003287e+01
-7.0382439846314195e+00
--2.6706563149993670e+01
-1.3116161957288099e+00
-2.0554278559811340e+01
--4.7636159945703895e+01
-1.4476624958065823e+01
-1.0448862604719771e+01
--3.2616272492104997e+01
-1.1398218643721776e+01
-7.7924057146434249e+00
--2.7563955856534545e+01
-1.4689011647911675e+01
-1.0272126082452072e+01
--3.2387793949327907e+01
-1.2833074724439971e+01
-9.6470227636187218e+00
--3.1001979784663593e+01
-8.3011030206689966e+00
-2.2635193058244415e+01
--5.2773604094250317e+01
-7.9644155141399713e+00
-2.2241717532518177e+01
--5.1768599228072709e+01
-1.1708583237616708e+01
-6.3935703271996260e+00
--2.5287800803360440e+01
-1.2804719556744647e+01
-6.8101022019378092e+00
--2.6344503793192143e+01
-1.7104701682529168e+01
-2.3709818184582758e+01
--5.5979507136499514e+01
--5.6510582716299380e+00
-1.7722728652030440e+01
--4.1958413915697690e+01
-1.2704770586170181e+01
-6.5186954569947329e+00
--2.5840849607646685e+01
-1.2766791327026869e+01
-1.1511465557238141e+01
--3.4663491173064514e+01
-1.2099839680285381e+01
-8.0964460405856649e+00
--2.8626673124456946e+01
-1.2978815966527915e+01
-9.4406904251072490e+00
--3.0786824934272833e+01
-1.4023265884410941e+01
-6.6278986554683437e+00
--2.6485879790636400e+01
--3.6913333140828564e+00
-1.8487589621933726e+01
--4.3589112797171857e+01
-1.2662404049035938e+01
-1.0661694354896467e+01
--3.3231072467388053e+01
-1.1725832111101059e+01
-2.1969043395042053e+01
--5.2503627265825962e+01
--9.1054426187721642e+00
-1.6780982101742477e+01
--4.0083041938836644e+01
-1.3695047971434654e+01
-6.0571034681389833e+00
--2.5715815660369355e+01
--4.8742508913360325e+00
-1.8024645211853734e+01
--4.2917915592525574e+01
-6.1609756719020909e+00
-2.1046944540941258e+01
--5.0157522100237216e+01
-1.3790093536384621e+01
-5.9499850820694293e+00
--2.5528755406838787e+01
-1.2125272876170934e+01
-7.9883807195465595e+00
--2.8704234125485229e+01
-1.1080452597241950e+00
-1.9467968979586569e+01
--4.6615246164846937e+01
-1.8722428397360744e+01
-2.3515414730339202e+01
--5.7302419399864235e+01
-1.3692183061833690e+01
-9.6967485910647255e+00
--3.2059221728654578e+01
-1.2235988612176492e+01
-1.1982751625973664e+01
--3.5577833284394060e+01
-8.1529306145932416e+00
-2.1533609603628484e+01
--5.1678295083542480e+01
-1.2688817939476142e+01
-6.3066722421650780e+00
--2.5909181327923356e+01
--1.0820462126072250e+00
-1.9146558439586610e+01
--4.5909148887246701e+01
-1.3345859734719021e+01
-9.5707173899888360e+00
--3.1862193403038862e+01
--9.1253698997357731e+00
-1.6678159807616947e+01
--4.0107274978247879e+01
--9.0628611947451461e+00
-1.6560251333944443e+01
--3.9997239295044160e+01
-1.3573763476330939e+01
-9.5448618291082123e+00
--3.2033462134827680e+01
-1.3705473085618049e+01
-2.2099356618297438e+01
--5.4008025829600541e+01
-1.3157931565844880e+01
-6.4827460662419201e+00
--2.6656923319571355e+01
-1.3169018760166061e+01
-6.5007611474966405e+00
--2.6705227651191791e+01
--9.2336074888295467e+00
-1.6246720511977568e+01
--3.9602290820989211e+01
--8.9044310826243134e+00
-1.6373044144554093e+01
--3.9916924455143558e+01
-6.7733098643423082e+00
-2.1017019854482434e+01
--5.0989916465616979e+01
--1.2263614869820902e+00
-1.9212197762591746e+01
--4.6168819655908386e+01
--1.1688027599980380e+00
-1.9373289482255544e+01
--4.6561916772137124e+01
--3.4237845710791937e+00
-1.8285937638500013e+01
--4.4207999224107787e+01
-1.2308875743007130e+01
-1.1784151298885293e+01
--3.5628622676671192e+01
-1.2892930147486160e+01
-1.0512568580541902e+01
--3.3814211111907397e+01
-1.2879458770159021e+01
-1.0718259988368876e+01
--3.3843369919137913e+01
-1.3096471031482983e+01
-1.0485418227165711e+01
--3.3535212212324119e+01
-1.3882254467725604e+01
-9.7753483339329375e+00
--3.2688482670102061e+01
-1.3363950114831471e+01
-9.3316064097384199e+00
--3.1812131761963741e+01
--8.9942362249553511e+00
-1.6403243718943607e+01
--4.0165303388784118e+01
-5.8740284145741262e-01
-1.9251862874057583e+01
--4.6919588859820472e+01
-1.2162826313675957e+01
-7.6912482092898440e+00
--2.8805629657644594e+01
-1.2210536591944363e+01
-7.7451536154582330e+00
--2.8885205774072794e+01
-1.3132461642986923e+01
-6.7473823485547397e+00
--2.7268970230798445e+01
-1.0453603248966634e+00
-1.9429569782026732e+01
--4.7337502947762552e+01
-1.3026190302303462e+01
-1.0195272081348000e+01
--3.3461071291734818e+01
-4.8795271376737031e+00
-1.9639179324041820e+01
--4.8772570966053557e+01
-1.2491492153934756e+01
-6.3428694445178326e+00
--2.6094345648702895e+01
--3.8228027135198750e+00
-1.7779616345181605e+01
--4.3856043899750212e+01
--9.0241003551789003e+00
-1.6461137680128289e+01
--4.0035425524592654e+01
-4.9968294866083456e+00
-2.0095383312583433e+01
--4.9433425891582118e+01
-1.4466077360069928e+01
-1.0797780239018461e+01
--3.4988050923078546e+01
-1.4466077360069928e+01
-1.0797780239018461e+01
--3.4988050923078546e+01
-1.2316940111596338e+01
-6.8865798785245778e+00
--2.7573515596871616e+01
-1.4211330806903423e+01
-5.9237425016079230e+00
--2.6322675792106864e+01
--6.6764501020447664e+00
-1.6749046683652381e+01
--4.1742604610517404e+01
--6.6764501020447664e+00
-1.6749046683652381e+01
--4.1742604610517404e+01
--6.9759206719190736e+00
-1.6623948275843748e+01
--4.1492054151654777e+01
-1.2965879540107016e+01
-2.2008002510756906e+01
--5.4747464868637138e+01
-1.3213401977625557e+01
-1.0188301442084176e+01
--3.3370432314800148e+01
--9.0917485936330156e+00
-1.6360981639560027e+01
--4.0719822834283804e+01
-1.1246307808446006e+00
-1.9197826381413389e+01
--4.7599391148585745e+01
-1.2595495533197051e+01
-6.1794943585491318e+00
--2.6552200608362238e+01
--6.0631706252821760e-01
-1.9154059357048869e+01
--4.7327769606809845e+01
-1.4131980675489668e+01
-1.1221350210343598e+01
--3.6148391046166765e+01
-1.2678231391594135e+01
-6.4453135605779588e+00
--2.7131380038325720e+01
--9.4067314308553325e+00
-1.5816314150475176e+01
--3.9899814803452976e+01
-2.3719109418837712e+00
-1.9864024237158539e+01
--4.9139627473511389e+01
--9.3517832275358614e+00
-1.5964421112972792e+01
--4.0072552871179212e+01
-1.3944266457072159e+00
-1.8684160703636941e+01
--4.7380040376635719e+01
-4.8366108720669896e+00
-1.9160025781739289e+01
--4.8662818841573426e+01
-1.2904082211202594e+01
-1.0347189314443375e+01
--3.3943540817002535e+01
-1.5487112507421058e-01
-1.8997514333653665e+01
--4.7550805959657119e+01
-1.4823491192558289e-01
-1.8872562422924872e+01
--4.7448569019510664e+01
-9.6595133563561683e-02
-1.8557982351435708e+01
--4.6878156414695113e+01
--5.7687247089958520e+00
-1.6841930398255620e+01
--4.2487948373085437e+01
-1.4332251821473015e+01
-5.5987938427196768e+00
--2.6266921352069577e+01
-1.4917057744356420e+01
-9.8239557110637890e+00
--3.4113657068917888e+01
-1.4327373956751940e+01
-9.4716848893057133e+00
--3.3295247219137579e+01
-1.2516962366414768e+00
--2.5568069539952842e-01
--1.2528516058480344e+01
-1.1967085584760325e+01
-6.8166655765690294e+00
--2.7827406852821802e+01
-1.2149153553771114e+01
-6.8983975199341891e+00
--2.8059343183094512e+01
-1.3100635924049920e+01
-5.9381925383407701e+00
--2.6630997063635117e+01
-1.3269611470780497e+01
-6.0053909701037860e+00
--2.6909024912528857e+01
--6.0364707773666844e+00
-1.6961217030544493e+01
--4.2697068412637584e+01
-1.3110234957297589e+01
-5.3184161854676688e+00
--2.5647650819150627e+01
-1.2812178065087872e+01
-6.3579891346769539e+00
--2.7567553596494047e+01
-1.2812178065087872e+01
-6.3579891346769539e+00
--2.7567553596494047e+01
--1.2381491534594620e+01
-1.5163036341463640e+01
--3.8037462508414180e+01
-1.5132337127155964e+01
-2.2781710865251558e+01
--5.8204899244200000e+01
-1.3796251760929501e+01
-9.7631032627109224e+00
--3.3999572691496155e+01
-1.3586732451231194e+01
-2.1842045165775239e+01
--5.6197533738125919e+01
-1.2889735763600244e+01
-1.0585425854100539e+01
--3.5388836885952024e+01
-1.3443207584336783e+01
-5.6467287917237412e+00
--2.6423244813393751e+01
-1.3467575208820531e+01
-5.4239048674690924e+00
--2.6011155213292646e+01
-1.5711134955997933e+01
-2.3385067430587171e+01
--5.9759244163055207e+01
--6.9833490517028611e+00
-1.6588123415985518e+01
--4.2516181141293096e+01
--6.9171587064494044e+00
-1.6331692638144656e+01
--4.2100979097207137e+01
-1.9094810331713215e+00
-1.9596649328963437e+01
--4.9746518663861323e+01
-1.4244090074773084e+01
-2.1801342724318900e+01
--5.6567889911185716e+01
-1.5254482768490844e+01
-2.2480865403597825e+01
--5.8385546301229063e+01
-1.3002581619561223e+01
-6.0062559779081583e+00
--2.7401484330420764e+01
--1.1504060401098084e+01
-1.5181571240893181e+01
--3.8596926399141644e+01
--3.4896735911377132e+00
-1.7125769494559584e+01
--4.4110394660478846e+01
--2.5646782450605783e+00
-1.7396896753607891e+01
--4.5342305268554568e+01
-1.2641955850909619e+01
-6.1552467276394518e+00
--2.7601950636891523e+01
-1.3278993630828241e+01
-5.6747840824036029e+00
--2.6993628733897484e+01
--1.1341767745786893e+00
-1.7881796007062011e+01
--4.6599794375694820e+01
-1.2715059157338009e+01
-1.0701946773397470e+01
--3.5769832118873943e+01
-1.5220582356270063e-01
-1.8209782136055587e+01
--4.7788513411023381e+01
--3.1287788616116843e+00
-1.7525017465275987e+01
--4.5529224661122235e+01
--3.0375231649162471e+00
-1.7838478670125866e+01
--4.6334381060738643e+01
--2.6734390218364568e+00
-1.8055560210910524e+01
--4.6647095742988036e+01
-8.9664131285979884e+00
-2.0713203182921063e+01
--5.4396426270546087e+01
--4.6069327304353598e+00
-1.6612977555056236e+01
--4.3385488417158996e+01
--1.7574183086849415e+00
-1.7855100914925853e+01
--4.6459640900478682e+01
-1.2437557137094775e+01
-6.4128559465896231e+00
--2.8336261090064173e+01
--1.8322221755053618e+00
-1.8263894169167045e+01
--4.7356823834897511e+01
--5.4019930762552726e-01
-1.8374888483575077e+01
--4.8005546025200822e+01
-9.1368110899037500e+00
-2.0228771434204777e+01
--5.3776928062357833e+01
-9.1105001335808993e+00
-2.0831983814114949e+01
--5.4978099844719630e+01
-1.2303703123941094e+01
-6.1924646452630645e+00
--2.8020416915934526e+01
-1.0586266079306684e+01
-2.1155956542304715e+01
--5.5720470465214298e+01
-8.7021405372162857e+00
-2.0948425185825773e+01
--5.5142540287003598e+01
--6.5357252814144644e+00
-1.6116802898725552e+01
--4.2770058307685900e+01
-6.8425117358954219e+00
-2.0078878335082017e+01
--5.3175347489258606e+01
--1.0396350676717304e+01
-1.5012142333570585e+01
--3.9845390180218452e+01
--9.3671725082366049e+00
-1.5601995334469084e+01
--4.0655692983629542e+01
--1.5365953811022151e+00
-1.7827253576584198e+01
--4.6861906349860675e+01
-9.0076808047729067e+00
-2.0969202922120083e+01
--5.5442540625622236e+01
--1.1013145898138192e+00
-1.7629827201962332e+01
--4.6979858695095267e+01
--8.9269112242988999e+00
-1.5533238440700808e+01
--4.1193978484106800e+01
--2.7758796671917501e+00
-1.7472320058181836e+01
--4.6184028376902070e+01
-1.4187859209844921e+01
-2.4591191900310538e+00
--2.1620935654949179e+01
--1.0094132481308153e+01
-1.5036516679865681e+01
--4.0258150228225837e+01
--2.0764026112471154e+00
-1.7719200416175557e+01
--4.7032577411464764e+01
-4.1273552182313518e+00
-1.9031476568193810e+01
--5.1067375006325740e+01
-1.3909719831663359e+01
-2.8305486834860885e+00
--2.2461413254774069e+01
--3.7540206215309730e+00
-1.6607504795737594e+01
--4.5122971745842733e+01
--6.6485049981151336e+00
-1.5588236034585247e+01
--4.1929944765958460e+01
--1.0792159897979035e+01
-1.5169990802630119e+01
--4.0506875448700420e+01
-1.5044501883593057e+01
-2.2013945491898173e+01
--5.9925651351142257e+01
-5.3518326830098930e+00
-2.7684918665425712e-01
--1.5538628551438233e+01
-8.7698777496467739e-01
-1.8120791633992788e+01
--4.8950766218911809e+01
-1.2435053072155478e+01
-6.4017519506223683e+00
--2.9259892587310016e+01
--4.5533313311578532e+00
-1.6593545343405228e+01
--4.5149356817661953e+01
-4.6552294474061151e+00
-1.8889978821838351e+01
--5.1596952130314051e+01
-1.4604153718426703e+01
-2.0427529150105027e+01
--5.7409498306110493e+01
--3.4918225542536003e+00
-1.6785602149919601e+01
--4.5748088016791037e+01
--3.3386870402598574e+00
-1.7119228149135740e+01
--4.6265161818392166e+01
--3.8194328918757052e+00
-1.6574154090315343e+01
--4.5190220939652392e+01
-1.2932498314901668e+01
-5.2251308751418888e+00
--2.7353664587162974e+01
--4.7352096527192105e+00
-1.6514634159752074e+01
--4.4814012623697785e+01
--6.5846634322454900e+00
-1.5875323406569075e+01
--4.3409291457883072e+01
--6.5846634322454900e+00
-1.5875323406569075e+01
--4.3409291457883072e+01
-1.2959383982393909e+01
-5.4599336192855787e+00
--2.7859046551069842e+01
-1.2284273283391050e+01
-5.9041039363790464e+00
--2.8632985685300039e+01
--1.1842827073422656e+01
-1.4738028653737672e+01
--3.9976450720949202e+01
--9.5843513395287818e+00
-1.5120459657074143e+01
--4.1021983014107491e+01
--7.0668523182637069e+00
-1.5527533477456451e+01
--4.3001024449256988e+01
--4.7368740190935590e+00
-1.6422431134187736e+01
--4.5020228526126076e+01
-1.2129362680783695e+01
-6.4489037408151670e+00
--2.9832400983843751e+01
--3.1401393255809973e+00
-1.6896001980130212e+01
--4.6478272787434832e+01
-1.2179624670913309e+01
-6.2458617731637673e+00
--2.9478261042356515e+01
--7.0665705698262133e+00
-1.5680816085964782e+01
--4.3304305331702864e+01
-1.8626722580002568e+00
-1.7707607676819727e+01
--4.9598890991521706e+01
-9.4146789806643554e+00
-1.9577755241294209e+01
--5.5025355434761856e+01
--3.3590549975730570e+00
-1.6343981342989078e+01
--4.5936373203303432e+01
--3.7814464945273927e+00
-1.6439819683145650e+01
--4.5870364415462895e+01
--5.0874594353203362e+00
-1.6082538920144767e+01
--4.4855055341203823e+01
-1.3165091671026357e+01
-5.2027611276651360e+00
--2.7945174734241572e+01
--2.0042547502723584e+00
-1.6114570771799059e+01
--4.5723158690809157e+01
-9.3031642623266677e+00
-2.0150199995535051e+01
--5.6709048354937771e+01
-1.4083058375059776e+01
-3.1830679853773254e+00
--2.4474469205526006e+01
--8.4530262723757712e+00
-1.5115909229389178e+01
--4.2376264939400343e+01
--8.2273145866388369e+00
-1.5317367126934771e+01
--4.2567082685208320e+01
--8.2682093285529792e+00
-1.4589153648250262e+01
--4.1099068613138158e+01
--1.6667758251908131e+00
-1.6118993814659760e+01
--4.6301385793058309e+01
--1.6667758251908131e+00
-1.6118993814659760e+01
--4.6301385793058309e+01
-9.4271196766730405e+00
-1.9239681239789412e+01
--5.5370996202910057e+01
-1.2815960641465198e+01
-5.4289116922275724e+00
--2.8565534822178549e+01
-1.2777821172537326e+01
-5.2223178378240975e+00
--2.8160331551604983e+01
-1.3728405149995893e+01
-3.7223378861097549e+00
--2.5538000237451410e+01
--6.2767751569957273e+00
-1.5600318837611125e+01
--4.4209488433164331e+01
-1.3964362401336512e+01
-3.3700105321268099e+00
--2.4965362408340383e+01
--9.8400821007258354e+00
-1.4789105893995339e+01
--4.1646137322668032e+01
-1.2942703921306382e+01
-5.1890026796011037e+00
--2.8406841308932297e+01
-1.3692167569247975e+01
-2.7607962142641651e+00
--2.3608529239631707e+01
-5.6486407880013658e+00
-9.0847428396915744e-02
--1.6108806999046593e+01
-2.1422372397976203e-01
-1.7613495540089989e+01
--5.0058261733043771e+01
-1.3485607304083716e+01
-9.6270009470510960e+00
--3.7554612585179761e+01
-1.3485607304083716e+01
-9.6270009470510960e+00
--3.7554612585179761e+01
--7.9930455834717904e+00
-1.5077295583785139e+01
--4.2979717958066942e+01
-1.3972880061756513e+01
-9.6976385582340043e+00
--3.7927407662072859e+01
-1.4115365430738628e+01
-3.5630528908240890e+00
--2.5700796957601067e+01
--6.2165357186492738e+00
-1.5329354189630061e+01
--4.4276706461903764e+01
-1.2728931015113375e+01
-5.2459134644336327e+00
--2.8816142175101270e+01
-1.4644122710945306e+01
-3.2110456493792574e+00
--2.5342247119254644e+01
-1.1702565920804238e+01
-1.8756131841152328e+01
--5.6015835508087832e+01
-1.3809113602162949e+01
-2.6535905894865239e+00
--2.3756948728140777e+01
-1.4258000842464090e+01
-2.2299647453854492e+00
--2.3262724970440480e+01
-1.4258000842464090e+01
-2.2299647453854492e+00
--2.3262724970440480e+01
-1.4829436316569444e+01
-2.9242875414028084e+00
--2.4994779517947055e+01
-1.4440228526722613e+01
-2.6900902601707122e+00
--2.4272884266208710e+01
--8.6500561808740510e+00
-1.4978633378873536e+01
--4.3057085748061375e+01
--5.1271699529148860e+00
-1.5512468777069056e+01
--4.5274619923918515e+01
--4.2519244067078015e+00
-1.5648754676946851e+01
--4.5638164114804226e+01
--4.2528213317590264e+00
-1.5919436402143228e+01
--4.6319567604427569e+01
-1.0415844189502213e+01
-1.9086817530379278e+01
--5.6377135953652704e+01
-1.2928582405815773e+01
-4.8981544896284444e+00
--2.8300828413751045e+01
--7.6307740362807710e+00
-1.5087328809661697e+01
--4.3412332992507054e+01
--9.1605678512938518e+00
-1.4772031827553279e+01
--4.2723848556264045e+01
-1.3555510410716886e+01
-2.7416211147389422e+00
--2.4075432650744425e+01
-1.4061757900831225e+01
-3.6342101606975858e+00
--2.6388289148285331e+01
--8.9684589601930718e+00
-1.4457242953275207e+01
--4.2407734068697621e+01
--1.1163962665935189e+01
-1.3846266082003094e+01
--4.0613769111802974e+01
--4.9686096838142433e+00
-1.5751406577576120e+01
--4.5905965828446675e+01
-1.2996620506169865e+01
-4.8166504061563682e+00
--2.8530641937487292e+01
-1.3102747772347710e+01
-4.6250466445045122e+00
--2.8255273950655724e+01
--8.0701764613253033e+00
-1.4548545761646261e+01
--4.3146778537758280e+01
-1.2666737794935298e+01
-5.2887598135321872e+00
--2.9588697450471525e+01
-1.2666737794935298e+01
-5.2887598135321872e+00
--2.9588697450471525e+01
--1.1186674795031594e+01
-1.3643995576618369e+01
--4.0477218062021159e+01
--9.9397833235733675e+00
-1.4016107149301897e+01
--4.1421031560108815e+01
--8.5051805898022561e+00
-1.4557325357594232e+01
--4.3118760313142637e+01
-1.4062621445616402e+01
-3.4991999128272715e+00
--2.6500384189934252e+01
-8.8833728049285874e+00
-1.8312050761192854e+01
--5.5662086502650013e+01
--1.2909261951853519e+01
-1.3606592710541113e+01
--3.9911270296871329e+01
-1.4705145209266107e+01
-2.8124893936317501e+00
--2.5505368402030584e+01
-1.2820546365441986e+01
-4.8244424208833028e+00
--2.9025081739225119e+01
-1.3802835008926483e+01
-7.5297463883711986e+00
--3.5039057669933783e+01
-1.3362177328369659e+01
-4.7820501563391016e+00
--2.9144899972167405e+01
-1.3362177328369659e+01
-4.7820501563391016e+00
--2.9144899972167405e+01
--1.1007343880258063e+01
-1.4089810520913213e+01
--4.1699928321060206e+01
-1.4386003436576738e+01
-3.0918991866979901e+00
--2.6109052592616418e+01
-1.3570835644842587e+01
-2.7441780262920155e+00
--2.5079862003683960e+01
-1.4130248105584029e+01
-3.3098701527558854e+00
--2.6479914151317995e+01
--1.1259188150092632e+01
-1.3563700248208441e+01
--4.0911549207988472e+01
--1.1245815651533734e+01
-1.3457251534303111e+01
--4.0605303565051202e+01
-1.3452613079857834e+01
-3.2302665133480177e+00
--2.6128925080025475e+01
-1.3480823714377511e+01
-4.4060029669627410e+00
--2.8725021923090171e+01
-1.4559441728660842e+01
-1.9840135705470336e+00
--2.4039294854988150e+01
-1.4630989806707127e+01
-2.0456580568918223e+00
--2.4122771203576132e+01
-1.4153478726266469e+01
-7.5989135980388900e+00
--3.5728355835814966e+01
-1.4171809821602075e+01
-7.6208150009612021e+00
--3.5729409147826374e+01
-1.3407196314255874e+01
-3.9570150067395637e+00
--2.7836843461121216e+01
--1.3254034189349470e+01
-1.3251266973157716e+01
--3.9648331708614087e+01
--1.2454682169474637e+01
-1.3347181079584290e+01
--4.0134566579206734e+01
--1.0164509559572092e+01
-1.4013564845280962e+01
--4.2354542320758384e+01
-1.4430634486857949e+01
-2.6001202126643554e+00
--2.5445408546899955e+01
-5.6247182619504228e+00
--1.3953521732318347e-01
--1.6707681956162467e+01
--1.2150561043918700e+01
-1.3185358409216605e+01
--3.9758580947820214e+01
--6.1028068989304947e+00
-1.4967605833876359e+01
--4.5575209622711839e+01
--6.0877206127625749e+00
-1.4945940612763081e+01
--4.5585531142789094e+01
-1.4011804099099434e+01
-2.8820772917922253e+00
--2.5876555476030621e+01
--8.5299190443837638e+00
-1.4050872108764670e+01
--4.2989659014195233e+01
-1.4266356351724493e+01
-1.5948398722334223e+00
--2.3111421869898798e+01
-1.4266356351724493e+01
-1.5948398722334223e+00
--2.3111421869898798e+01
--1.0979697795580108e+01
-1.3602170605108574e+01
--4.1421643242672374e+01
--9.7277509644514204e+00
-1.3714530264537922e+01
--4.2018222837766842e+01
--4.5310650027819364e+00
-1.5036050135966201e+01
--4.6595248126520652e+01
-1.4268123568996677e+01
-1.5540560479011611e+00
--2.3143998250316553e+01
-5.9657285415323873e+00
-1.7467271263269900e+01
--5.4831068605295748e+01
-4.2424647238288582e+00
-1.6781492117076969e+01
--5.3175903004661528e+01
--4.4659872845739450e+00
-1.5303163416649983e+01
--4.7266579627119022e+01
-1.4575654972673968e+01
-2.6552812163697546e+00
--2.5990945204884074e+01
-1.3830140713170511e-01
-1.6456763461199873e+01
--5.0961022349757890e+01
-1.4531838931615795e+01
-2.3392290066629067e+00
--2.5333941924545673e+01
-1.4268546614676758e+01
-2.3741214359897858e+00
--2.5228497882949050e+01
--9.5754367181270545e+00
-1.3645702740466378e+01
--4.2379799201537843e+01
--1.3099285659250759e+01
-1.2723128922094219e+01
--3.9198217835714168e+01
-2.1800369174192516e-01
-2.9818416930336964e+00
--2.2130133043444832e+01
-2.7835821472491444e+00
-2.0344282930268367e+00
--2.0893535337410086e+01
-1.4351233210027770e+01
-2.2120280503710767e+00
--2.5133848885842582e+01
--1.6638860378214388e+00
-1.5593291268772706e+01
--4.9007630189353243e+01
--1.2784790613486194e+01
-1.2981828519680132e+01
--3.9746446144514870e+01
-1.4461127632585073e+01
-2.0865749606764870e+00
--2.4918054279367222e+01
-1.4566685716487388e+01
-8.6618827945046639e-01
--2.2271328465544546e+01
-1.4566685716487388e+01
-8.6618827945046639e-01
--2.2271328465544546e+01
--8.9897832384180560e+00
-1.3635987690541631e+01
--4.2935368847452281e+01
--8.5415936290775676e+00
-1.4005183541912395e+01
--4.3496590548307985e+01
--9.7485056346834789e+00
-1.3737953008187727e+01
--4.2906966188877696e+01
--1.1725076405433311e+01
-1.3014627776760376e+01
--4.0593868577498178e+01
-7.7150032993320428e-01
-1.6075099107177742e+01
--5.1293089063923624e+01
--1.3658746626631284e+00
-1.5172981232623128e+01
--4.8553826870032317e+01
--1.5884634949933196e+00
-1.5357604833664467e+01
--4.8892166094108639e+01
--1.1987833267454500e+01
-1.2870143852065510e+01
--4.0336553924143146e+01
--1.1942982906151869e+01
-1.2982381534466203e+01
--4.0904912930251754e+01
--4.0728862912653012e+00
-1.4805963676048799e+01
--4.7365151842803897e+01
--1.2225623119751063e+01
-1.2831546753628976e+01
--4.0620073908745681e+01
--9.8797360496450786e+00
-1.3429966823277276e+01
--4.2717993033747042e+01
-1.3541767331225277e+01
-3.9663240352965397e+00
--2.9267270390018112e+01
-1.3541767331225277e+01
-3.9663240352965397e+00
--2.9267270390018112e+01
--1.2529694994639771e+01
-1.2880289203859336e+01
--4.0591733803960153e+01
--1.1054083393811830e+01
-1.3065223279841524e+01
--4.1408621818158494e+01
--1.1517459385668461e+01
-1.2914894126966395e+01
--4.1068645190300899e+01
--1.2955845474439181e+01
-1.2852179492325346e+01
--4.0615470139700292e+01
--6.6183037707319121e+00
-1.4018145128449099e+01
--4.5313164976249489e+01
--6.6183037707319121e+00
-1.4018145128449099e+01
--4.5313164976249489e+01
-1.4629176642743861e+01
-1.3785029471379660e+00
--2.4175350029931820e+01
--1.0650183779655256e+01
-1.3034392435455748e+01
--4.1980421131878536e+01
--7.4768111583754857e+00
-1.4118194267001991e+01
--4.5269518260466597e+01
-1.4010677969599733e+01
-2.9421824928612352e+00
--2.7496310792249009e+01
-1.3917965967883362e+01
-2.9365182760250308e+00
--2.7394494845831996e+01
--9.9814399374264564e+00
-1.3288251673890960e+01
--4.2767180822161407e+01
--9.2148009342435060e+00
-1.3332851753531028e+01
--4.3001537771086802e+01
-2.0699606061103881e+00
-1.7367040843036625e+00
--2.0707758045969008e+01
--1.0061541652257928e+01
-1.3315943805521705e+01
--4.2908342497919513e+01
-2.4166134993064725e+00
-1.6605748258638411e+00
--2.0668808035741769e+01
-1.3447647451891642e+01
-3.2973234757850864e+00
--2.8139454841987519e+01
--1.0437428227219154e+01
-1.3037772910695914e+01
--4.2076530295353137e+01
--6.8766821455362077e+00
-1.3893702625377221e+01
--4.5253838157078910e+01
--1.0226439044053135e+01
-1.3375629306103431e+01
--4.3106105489360665e+01
-1.4663138846793471e+01
-8.5280053908545761e-01
--2.3249288371500377e+01
--1.3076945757003408e+01
-1.2707507195351935e+01
--4.0800600447038860e+01
-7.3617056465803288e-01
-1.5727605678905947e+01
--5.1692958904398459e+01
-7.5226749036595031e-01
-1.5842312189328791e+01
--5.2024911821210566e+01
-4.6122177300542322e-01
-2.1421929382265277e+00
--2.1167436656172686e+01
-4.7952796795715824e-01
-2.1511259111280467e+00
--2.1193570443309575e+01
-2.8416638333361033e-01
-2.2157019592183964e+00
--2.1330026389809252e+01
-1.4826993979126474e+01
-1.9770216456540799e+00
--2.5979647647263246e+01
-1.4617822801732011e+01
-1.8755737269161428e+00
--2.5663705010973533e+01
--8.3836789203578999e+00
-1.3637963900595855e+01
--4.4378035796227131e+01
-1.6819548864086888e+00
-1.7553346414936424e+00
--2.0760242971877915e+01
-8.9653807899578941e-01
-1.8881240645891872e+00
--2.0525456915854608e+01
-1.5331817518584456e+00
-1.7397395137882057e+00
--2.0687481574188059e+01
--5.2940697373855106e-01
-2.7560738392117599e+00
--2.2406575524404179e+01
--3.9031881808891233e+00
-1.4751590280173675e+01
--4.8439557984765500e+01
--3.9031881808891233e+00
-1.4751590280173675e+01
--4.8439557984765500e+01
-1.2079264444212026e+00
-1.8148818988614033e+00
--2.0824310193569268e+01
-1.1109177505060455e+00
-1.8720775935489009e+00
--2.0918185446244077e+01
-1.0809506455383302e+00
-1.7482071953153124e+00
--2.0765062176394110e+01
--3.7694627461595624e+00
-1.4904290074096341e+01
--4.9165530944591445e+01
-1.3817046073074406e+01
-3.2891077659838959e+00
--2.8804582189816923e+01
-2.9894754298998893e-01
-2.0675365873982505e+00
--2.1294555624563245e+01
-2.3375183274690856e-01
-2.1093247568557949e+00
--2.1333196079492598e+01
--4.2694850776910656e+00
-1.4601452853640762e+01
--4.8050415983254652e+01
-1.2105901469645181e+01
-2.8828363574165197e+00
--2.6954138343067484e+01
-1.4622355487007864e+01
-1.7328291680447758e+00
--2.5791893887988124e+01
-1.3360928392214118e+01
-3.3048180812655810e+00
--2.8797218320153625e+01
--4.2776110998881095e-01
-2.4880847589264463e+00
--2.2086684770744984e+01
--1.0414624850781767e+01
-1.2947299569056932e+01
--4.2908173027137572e+01
--6.8283273028627862e+00
-1.3616821918149984e+01
--4.5671064202354444e+01
--8.9926949348485952e-01
-3.3113392001751105e+00
--2.3845968047914507e+01
--7.0190669039118045e+00
-1.3605105383120129e+01
--4.5475607098971281e+01
-8.8967023145196522e-01
-1.7141925344098961e+00
--2.0808622782581569e+01
--1.1440083177914316e+01
-1.2629339531746449e+01
--4.1796388274851196e+01
-1.3169305796428532e+00
-1.6181245905963937e+00
--2.0799886650586355e+01
-1.4169965046869578e+01
-2.4274253295258066e+00
--2.7398629284419631e+01
--9.9368853272689730e+00
-1.2816537831049427e+01
--4.3003699196151210e+01
-1.1388745511422596e+00
-1.5468342215587383e+00
--2.0648054317210740e+01
--1.0598909745374650e+01
-1.2694067021753128e+01
--4.2367449422109679e+01
--1.0584354723402939e+01
-1.2866425172831530e+01
--4.2859791158504080e+01
-1.0029181187651628e+00
-1.4692983808139346e+00
--2.0335842332248632e+01
--3.4369674493811830e+00
-1.4825684754798248e+01
--4.9938843158577548e+01
--4.2105169856317853e-01
-2.2540695256676102e+00
--2.1856621938466613e+01
-1.2968919722566399e+01
-3.7187580067443613e+00
--3.0048075142684326e+01
-1.3008001787197440e+01
-3.4407020060424229e+00
--2.9461954386189934e+01
-1.4908811780767433e+01
-1.5531013889865992e+00
--2.6014119288698325e+01
-1.4908811780767433e+01
-1.5531013889865992e+00
--2.6014119288698325e+01
-2.7575268020689365e+00
-1.2573066577622687e+00
--2.0739275391772285e+01
--1.1365506796742448e+00
-2.8512901464222677e+00
--2.2709812197546157e+01
-1.3605323023521043e+01
-3.2722121031185027e+00
--2.9416130297069586e+01
-1.3030735139431350e+01
-3.5449817741332814e+00
--2.9898837736936013e+01
-1.3956308797589330e+01
-2.3765317471455432e+00
--2.7588145483301261e+01
-1.3933355007524430e+01
-2.3764472747650629e+00
--2.7591293135427119e+01
-5.9478582953514776e+00
--8.5223011337647547e-01
--1.7123887255407478e+01
--9.9204014883562799e+00
-1.2715577350624534e+01
--4.3098782674465724e+01
-4.5193638517564322e-01
-1.5715230342935982e+00
--2.0573564521762002e+01
-1.2496154052289116e+01
-2.7133801658663903e+00
--2.7529061978065609e+01
-1.4050417270479835e+01
-2.3493749799077830e+00
--2.7621687200165219e+01
-1.4070206049654608e+01
-2.3443302822187508e+00
--2.7580644319448552e+01
--1.1450474460063736e+01
-1.2351129506725375e+01
--4.1912408088519129e+01
--1.1609937338087597e+01
-1.2327103187865729e+01
--4.1638029918878409e+01
-6.1609788076329348e+00
-1.3109586433149978e+01
--4.9930421287813360e+01
-1.2656633921220973e+01
-3.9496856058467289e+00
--3.0801541204422900e+01
-1.4102815386847837e+01
-2.1375087245925708e+00
--2.7265281639558108e+01
--6.1462383437648105e-01
-2.1934976065303622e+00
--2.1957022624643798e+01
--6.0501229844526228e-01
-2.2288956418241397e+00
--2.1979006094545475e+01
--1.2654773199694487e+00
-2.7853205741801808e+00
--2.2812824267366242e+01
--4.8749300186701250e-01
-2.0690915128585359e+00
--2.1806968026734022e+01
-1.2869081740384869e+00
-1.1939824598751161e+00
--2.0481088314258173e+01
-1.3659014344399440e+01
-3.0089031469295717e+00
--2.9482120254161160e+01
-1.5100132968157697e+01
-1.1441257655022401e+00
--2.5867749412600812e+01
--1.0160941796632501e+00
-2.4756641234466046e+00
--2.2638003991294422e+01
--5.2978560455536066e+00
-1.3633825427197300e+01
--4.7758437177464664e+01
--3.9693854550571639e+00
-1.4243597804906971e+01
--4.9754347448309140e+01
-1.4873964605969878e+01
-1.3461270245317611e+00
--2.6295184848234729e+01
-8.5356032756341205e-01
-1.2549649683529895e+00
--2.0594381833586528e+01
-7.4911233307325253e-01
-1.2657819467491411e+00
--2.0639387908641201e+01
--5.4290270024191303e+00
-1.3620506899118398e+01
--4.8073188015560525e+01
-1.0835684318880627e+00
-1.1408215531617953e+00
--2.0497374163635886e+01
-2.9290736274973401e+00
-8.7988524498642173e-01
--2.0518379419503834e+01
-1.3790348786812398e+01
-2.0094641931226866e+00
--2.7463165614098354e+01
-1.3854933912562467e+01
-2.2334452448309534e+00
--2.8050596245349752e+01
-1.3854933912562467e+01
-2.2334452448309534e+00
--2.8050596245349752e+01
--1.1473021469465346e+01
-1.2026363811846810e+01
--4.2045318593313816e+01
--1.0851783362319411e+01
-1.2175940749415147e+01
--4.2601088259017196e+01
-1.4618659179002877e+01
-1.5274665621003576e+00
--2.6891823931273695e+01
-1.4618659179002877e+01
-1.5274665621003576e+00
--2.6891823931273695e+01
-1.2912449889896543e+01
-3.3341675326488773e+00
--3.0372549999024947e+01
-3.0054141449782451e-01
-1.4452886300687464e+00
--2.0961864712672028e+01
-3.8456548533934265e-01
-1.3663158326802269e+00
--2.0829065834608681e+01
-1.2590079223398908e+01
-3.7062558185754959e+00
--3.1166997335197170e+01
-1.2831996464905636e+01
-3.3622793467038301e+00
--3.0522224157526100e+01
-8.4148004720156211e-02
-1.5065609846430021e+00
--2.1129064710668789e+01
-2.5083081553723057e+00
-7.8498914318226864e-01
--2.0267261330297874e+01
-1.2596140896289167e+01
-3.7113323099539985e+00
--3.1267592008219591e+01
-1.2670039578062740e+01
-1.3890709888966442e+00
--2.5733823029344720e+01
-1.4257132430256325e+01
-1.5309232795316605e+00
--2.6793051774454238e+01
-1.3822358298055786e+01
-1.9472293121643740e+00
--2.7757300158207659e+01
--9.6815563197455923e+00
-1.2330193586949363e+01
--4.3965108590484959e+01
--6.8549063330226438e+00
-1.3289249630762720e+01
--4.7269339182592056e+01
-1.3910583499890564e+01
-1.2091065820211624e+00
--2.6014621205575938e+01
--5.1190299688594596e+00
-1.3533588830822943e+01
--4.8524328576833341e+01
--5.0744304588765425e+00
-1.3673664981001828e+01
--4.8980760530931299e+01
-1.3798940516896903e+00
-8.9210248926761171e-01
--2.0376129005710361e+01
--8.4040991777945102e+00
-1.2754048273640478e+01
--4.5806114333792813e+01
-1.4359393230721288e+01
-1.7016877570748516e+00
--2.7740307728943041e+01
-1.4049828144813810e+01
-1.3694259288009427e+00
--2.6666209339484379e+01
-1.4444357182497285e+01
-1.5007513035093365e+00
--2.7325682983075808e+01
-1.4652096658548416e+01
-1.0884848746882720e+00
--2.6485195928422936e+01
--1.2388627677822399e+01
-1.1649323344256828e+01
--4.1443323947685130e+01
--1.1699130712162891e+00
-2.1349466675455271e+00
--2.2526017860555733e+01
--1.2014390238415492e+01
-1.1927157346782948e+01
--4.2236440338681405e+01
-1.4277015337363366e+01
-1.4376158213192727e+00
--2.7045365351985872e+01
--1.1355924189918268e+01
-1.2071143818857795e+01
--4.3092029564480754e+01
-1.3076849750212077e+01
-2.9921789852097551e+00
--3.0477785867662778e+01
-1.3076849750212077e+01
-2.9921789852097551e+00
--3.0477785867662778e+01
--1.0683432607875218e+01
-1.1919056193701497e+01
--4.3145837401316804e+01
-1.3302357246401915e+01
-2.7165408316908830e+00
--2.9932397884866795e+01
-6.8389926745395291e-01
-9.3444383882835924e-01
--2.0545246425695129e+01
-3.5982534895817611e+00
-5.5458451578189216e-01
--2.0728614178178677e+01
-1.4468605837186710e+00
-7.0299678005599975e-01
--2.0317826774713076e+01
-1.3117836143430543e+01
-2.8481949087909331e+00
--3.0398773536451927e+01
--1.0506294143386114e+01
-1.2042964393749177e+01
--4.3867142523741030e+01
--1.0562230267665749e+01
-1.2106048053212598e+01
--4.3752598570122863e+01
-1.2785927497057541e+01
-3.1883948712614596e+00
--3.1139815480494786e+01
-6.2787723172522125e-01
-9.3581330671716412e-01
--2.0594261183768641e+01
--1.1699688388948349e+01
-1.2109934758174555e+01
--4.3186972246614680e+01
--5.5553184587703281e+00
-1.2943125297822149e+01
--4.8187130577038637e+01
-3.8746356902414423e+00
-1.0880704090454278e+01
--4.6762398643394441e+01
-3.9008654336558095e+00
-1.1137582846629552e+01
--4.7187981703154158e+01
-4.6318510223195236e-01
-8.5973111949391212e-01
--2.0370079143035355e+01
-1.4018687213660767e+01
-1.8309343754481320e+00
--2.8518713776069024e+01
--9.5385293471279109e+00
-1.2246117464268671e+01
--4.4850152829337979e+01
--9.5385293471279109e+00
-1.2246117464268671e+01
--4.4850152829337979e+01
--4.8939430877216443e+00
-1.3363908667734600e+01
--4.9403075159038139e+01
-3.6792661201427683e+00
-1.1335792788533356e+01
--4.8123449016937371e+01
-1.7931470795527382e+00
-5.3022662192013148e-01
--2.0310001488427137e+01
-1.7931470795527382e+00
-5.3022662192013148e-01
--2.0310001488427137e+01
-6.2733575209620867e+00
--1.1811163021250579e+00
--1.8070149437653786e+01
--7.9062896731680099e-01
-1.4865654483490782e+00
--2.1737105076599104e+01
--1.3481532488667918e+00
-1.9027014747044855e+00
--2.2616997995905326e+01
--1.0487679569536175e+01
-1.1743896168025614e+01
--4.4154005030793321e+01
--1.0487679569536175e+01
-1.1743896168025614e+01
--4.4154005030793321e+01
-1.2987261257388166e+01
-2.7967550449297298e+00
--3.1012303524014680e+01
--1.0406386550816270e+01
-1.1746438257843653e+01
--4.3925486193252482e+01
--1.6911613201181239e-01
-1.0090604241652679e+00
--2.0962311675725889e+01
-1.2971587219802190e+01
-2.6718359658481119e+00
--3.0955627783218954e+01
-1.4407712477211387e+01
-1.2427113326917829e+00
--2.8138287791283048e+01
-1.3612935958019147e+01
-2.2625885105618848e+00
--3.0226396977749577e+01
--3.9920928538629663e-01
-1.0806790744579586e+00
--2.1170949978760852e+01
-1.4446052840049328e+01
-8.7063164327211962e-01
--2.7272425273703377e+01
--3.4144969032646971e-01
-1.0126169480277170e+00
--2.1158593797261585e+01
--3.5150849428609854e-01
-1.0050267504222690e+00
--2.1108697821548834e+01
-1.5863443297164898e-01
-7.8229157283312478e-01
--2.0740090328303825e+01
--1.0083307862170740e+01
-1.1653582445880016e+01
--4.4496931265387900e+01
--1.6317471956994214e+00
-2.3704848760395372e+00
--2.4108780483215892e+01
--8.5218499896556277e-01
-1.3125933894370267e+00
--2.1707002360980134e+01
--8.7060933598672241e-01
-1.2827879598922987e+00
--2.1648266648607869e+01
-1.1713584403545003e+00
-4.2704944798220201e-01
--2.0334514468800378e+01
-1.4497221606324734e+01
-1.0383047639733565e+00
--2.7863196246669560e+01
--4.3208397870121394e-02
-8.1591535560044304e-01
--2.0860288683157421e+01
--1.1408108961279881e+00
-1.5676271467204050e+00
--2.2301515945467123e+01
--1.1408108961279881e+00
-1.5676271467204050e+00
--2.2301515945467123e+01
--1.3814843859704642e+00
-1.6407570226355306e+00
--2.2095283560845427e+01
-1.1909367845462726e+00
-4.0927494783920992e-01
--2.0358497202738757e+01
-1.4244324726486683e+01
-7.7106792404008229e-01
--2.7236351533443429e+01
-1.4244324726486683e+01
-7.7106792404008229e-01
--2.7236351533443429e+01
--3.5330529080385570e-01
-8.9872689392725791e-01
--2.1061160389394466e+01
-3.2040075074897376e+00
-9.4650831581637201e-02
--2.0533293037149839e+01
-3.6256870572382144e-01
-5.9181333596198993e-01
--2.0603228784468300e+01
-3.6256870572382144e-01
-5.9181333596198993e-01
--2.0603228784468300e+01
-4.7316056985033672e-01
-5.4322810379726205e-01
--2.0552745645630811e+01
-9.8081884055974522e-01
-3.5849437112719279e-01
--2.0374296098930042e+01
-6.8493766344991502e-01
-4.3778580071419332e-01
--2.0461649090820782e+01
-1.3347924450946019e+01
-2.0870954342947194e+00
--3.0301113668196351e+01
--1.0562096666024301e+00
-1.2856298820433458e+00
--2.1936322025172526e+01
--3.9369355846970738e-01
-8.2508660463998507e-01
--2.1091085932894138e+01
--3.9553946786996508e-01
-8.2781204294803579e-01
--2.1091162331133241e+01
--3.9702276085976951e-01
-8.2273111371527030e-01
--2.1086075144468285e+01
-1.3037752948087260e+01
-2.1287779164121892e+00
--3.0484689321140284e+01
-1.4183662559263150e+00
-1.7512965615962120e-01
--2.0271432019383873e+01
-1.4332880648256623e+01
-6.9050436872770793e-01
--2.7466609209440996e+01
-1.4242312404693211e+01
-6.3166512339043324e-01
--2.7363456837878985e+01
-1.4255639079181728e+01
-1.4629806471165144e-01
--2.6266245070028784e+01
-6.2278216077419755e+00
--1.5268175442426224e+00
--1.8223761754948768e+01
-2.6265409428193038e+00
--2.7581096631556212e-01
--1.9737198293752499e+01
-2.6265409428193038e+00
--2.7581096631556212e-01
--1.9737198293752499e+01
-3.3069079552886129e+00
--8.3351292064638816e-02
--2.0587670150205930e+01
-1.3373352009028164e+01
-1.9610845095454204e+00
--3.0560920727263607e+01
-1.4088040227922436e+01
-2.4150818929219209e-01
--2.6559999121419892e+01
-1.5141023763583680e+01
--7.3027765379174070e-01
--2.4526780044782129e+01
--3.5619456184911025e-01
-7.3273226042832396e-01
--2.1138048209728023e+01
-1.3302425002460183e+01
-1.8292358528245469e+00
--3.0325189656013663e+01
--4.4164309499508176e+00
-1.1709429257791339e+01
--4.8438856896170819e+01
--1.8412001032765517e+00
-3.6603945552979327e+00
--2.8353160891318161e+01
-2.9477564484084784e+00
--8.8651644818730432e-02
--2.0219225913824310e+01
-1.4381600235814123e+01
-3.0252559791294065e-01
--2.6924658103517348e+01
-8.7578483027822063e-01
-2.0570967831099871e-01
--2.0385166914587778e+01
-5.7310578432038212e-02
-4.6467565723711146e-01
--2.0741843971430932e+01
-1.4927811294157376e+01
--1.3572949354269892e-02
--2.6473932842599037e+01
--1.1516666154874137e+01
-1.1082619601539541e+01
--4.4090344174424104e+01
-1.4001281805380682e+01
-1.0599082582689023e+00
--2.8909547091478561e+01
--2.1051294984180258e+00
-2.6831045202914847e+00
--2.5769573289758210e+01
--4.6426713709634432e-01
-6.4737378230276443e-01
--2.1144684122917045e+01
--2.5124951779402743e-02
-4.3845877146138351e-01
--2.0783024988296084e+01
--7.3137445552089755e+00
-1.1707371328593631e+01
--4.7745908329254291e+01
--1.1165038245802239e+00
-9.9333930014647587e-01
--2.1817155519358106e+01
--1.1142870286317166e-01
-4.3347466726205397e-01
--2.0854111296811688e+01
-3.3199709088211455e+00
--2.4053390286611073e-01
--2.0639869363606632e+01
-1.1156461353254907e+00
-3.3014800325942770e-02
--2.0320390132595907e+01
--2.5730259534262019e+00
-3.5592522233475243e+00
--2.8083918179067759e+01
--2.3434285583898040e+00
-2.5132087107185366e+00
--2.5509337518731382e+01
--1.7011475657737304e-01
-4.3129496880952045e-01
--2.0859719187432969e+01
-1.4529142717186255e+01
--5.4975234571797960e-01
--2.5354302019864349e+01
--2.0337568115602539e-01
-4.4007163040076791e-01
--2.0934035979256176e+01
--4.2363980973093213e-01
-5.2645278164268117e-01
--2.1074115504221282e+01
-1.4089252623184651e+01
--1.2978471077593171e-01
--2.6339858286366077e+01
-1.4089252623184651e+01
--1.2978471077593171e-01
--2.6339858286366077e+01
-1.5361221867036823e+01
--3.6276846535066348e-01
--2.6447493957081164e+01
-3.9703823865697230e-01
-1.7096545369154442e-01
--2.0584267450228143e+01
-2.2935657557878120e+00
--2.5885694707314999e-01
--2.0343280505613201e+01
-1.4403679138479305e+01
-5.2135950619329874e-01
--2.8439910609994378e+01
--3.2213184554267427e-01
-4.0200343679312572e-01
--2.0958544151433095e+01
-1.4541489535857052e+01
-2.2804524976175541e-01
--2.7664146241938205e+01
-2.0945059346676724e+00
--3.1518999803177211e-01
--2.0291726211667275e+01
-2.0945059346676724e+00
--3.1518999803177211e-01
--2.0291726211667275e+01
-5.2828131567811076e-01
-1.6314375528698865e-02
--2.0482804541383178e+01
-1.3925902636883629e+01
-1.1057989296555526e+00
--3.0096271105552532e+01
--2.7474286733213782e-01
-3.2826502420314274e-01
--2.0972057846388616e+01
-1.0150716473838652e+00
--1.3331073556388567e-01
--2.0351478342729092e+01
--2.3025069556501649e+00
-2.2630352658401822e+00
--2.5264199325967507e+01
-1.1141087751660006e+00
--1.6359606061631776e-01
--2.0325243937799865e+01
-7.0798078379774393e-02
-1.3544968287542855e-01
--2.0717727367819879e+01
-2.9453554772235377e+00
--4.5426097227884210e-01
--2.0491180076213386e+01
-1.3659809889374678e+01
-7.3995770642792635e-01
--2.9029867458808980e+01
-1.3543461571746274e+00
--2.4966595169297062e-01
--2.0288283858529020e+01
--7.5817277390214057e+00
-1.1191928209863502e+01
--4.7719390946805866e+01
-7.0518062770421186e-01
--1.3885657061498013e-01
--2.0413396036389621e+01
-1.4087628656252926e+01
--3.3101160207410257e-01
--2.6673188349669374e+01
-9.9467199049763388e-01
--2.1783336053031607e-01
--2.0345421192673321e+01
-1.4240456873111256e+01
-6.0745614682999582e-01
--2.9309670130210126e+01
--2.5446120822008909e+00
-2.1103377055341381e+00
--2.5082089099522076e+01
-1.0097239613277600e-01
-3.8648273594583789e-02
--2.0704786822226541e+01
-1.4066939060830080e+01
-1.3508078143473962e-01
--2.8071985522065305e+01
-1.4336934549166461e+01
--3.7482399383499659e-01
--2.6936699828047232e+01
-1.4643201340807822e+01
-5.9054091300360434e-02
--2.8302086542879710e+01
-1.5314083740924339e+01
--7.6150749012281516e-01
--2.6496833722412919e+01
-2.5419480988794083e+00
--5.2434263218852595e-01
--2.0415661702719426e+01
-1.4504916262512622e+00
--3.7730521582831789e-01
--2.0305796912438794e+01
-1.4558378821429018e+01
--1.3730474634258474e-01
--2.7696781220089612e+01
-1.3916106565737071e+01
-5.1792457167207617e-01
--2.9162211725231604e+01
-1.3907261863280477e+01
-6.7687263586995927e-01
--2.9657124867317492e+01
--3.2654368083726766e+00
-3.0113789448579888e+00
--2.7312587930507288e+01
--2.2111683327542231e+00
-2.0128864216908928e+00
--2.5264474177549619e+01
-1.4035950255914800e+01
--2.2814093869219843e-01
--2.7207773148630558e+01
--2.2020310026746656e-01
-7.7921165060383768e-02
--2.0918000916969188e+01
-1.2533171443834183e+00
--3.9667964696401609e-01
--2.0328176720323377e+01
-1.4781998069501832e+00
--4.5812931159821452e-01
--2.0317010511163804e+01
-2.4146137570966304e+00
--6.1975592351544351e-01
--2.0361731058825033e+01
-3.3832278068719868e+00
--6.8624466398555029e-01
--2.0694056296187110e+01
--2.4858185714348808e+00
-1.6481655852143786e+00
--2.4420968210534166e+01
-1.4747896339539979e+01
--4.7398567862038310e-01
--2.7284348064035218e+01
--3.0490220516221647e+00
-2.4314880534034953e+00
--2.6465017884488677e+01
--1.1319307866962497e+01
-1.0111907693719246e+01
--4.4522655223661836e+01
--2.4816378078601482e+00
-1.5966307918270501e+00
--2.4445271716396896e+01
-1.3945046073088241e+01
-4.8670479567787295e-01
--2.9725960422355410e+01
-4.1474331467844039e-01
--2.7913839655174616e-01
--2.0577738239779944e+01
--9.7205626752017835e+00
-1.0742915827949437e+01
--4.7135737154154029e+01
-5.0539212250933883e+00
--1.1438780537319830e+00
--2.0611486330269425e+01
-2.0852821823690131e+00
--6.8472864121133858e-01
--2.0391662015622916e+01
--4.5801608547108827e+00
-8.8159797326826137e+00
--4.4692821165194019e+01
--2.9884859592869231e+00
-2.3583372749918792e+00
--2.6605780221622506e+01
-1.4189391086073019e+01
--1.1066040586810580e-02
--2.8961781999205449e+01
--1.9725304390964047e+00
-1.0290608769776415e+00
--2.3421586808167842e+01
-1.4172819119382217e+01
-1.8477710859412100e-01
--2.9494788732025491e+01
-1.4234502758339781e+01
-1.8725576195269633e-01
--2.9562269341601628e+01
--1.2092408717771581e+00
-3.3625792841091307e-01
--2.1778091099572020e+01
--1.2273582949654329e+00
-3.7062013315731018e-01
--2.1819960416927209e+01
-1.4010589549583001e+00
--6.4251770151716714e-01
--2.0347601905891128e+01
-1.4004028459400685e+01
--2.6306371400487560e-01
--2.8513956680798735e+01
--1.4983585002476678e+00
-4.8502526780641758e-01
--2.2359996201175452e+01
--8.0299077240955907e-01
-2.4573215771212240e-01
--2.2044964999605302e+01
-3.4319634921584913e-01
--4.3657616033067981e-01
--2.0598740063451078e+01
-5.8939798022766023e+00
--1.0329862249600710e+00
--2.1864049968656637e+01
-1.1588091390845745e+00
--6.8128217099070998e-01
--2.0382499047135926e+01
-1.4129167953468224e+01
--4.6994297530498802e-01
--2.8249811452578466e+01
-1.4136540621530660e+01
--4.4028727663393946e-01
--2.8341270681141221e+01
-1.3879899832818213e+01
-2.1729419701470257e-02
--2.9666955370022361e+01
-1.3834282624224256e+01
-3.6019593174430001e-02
--2.9905627836322068e+01
-1.3879859919342751e+01
--4.4920138463746470e-02
--2.9639080749266707e+01
-1.4045694503782251e+01
--4.1774421021017905e-01
--2.8820469169835238e+01
-1.3957795400165482e+01
--3.8164723507283155e-01
--2.8709472845041685e+01
-1.4989155050074508e+01
--1.3588801798240504e+00
--2.6489632297037705e+01
--1.4569512169311534e+00
-4.9208184661178977e-01
--2.2879943506498478e+01
-3.0065684557039205e+00
--1.2527454033994525e+00
--2.0157849238824731e+01
--3.7982740752490365e+00
-1.7829762140174696e+00
--2.5481020692270963e+01
--1.1284657771333011e+00
-1.3138371746435541e-02
--2.1698928895788224e+01
--9.3951014774096453e-01
-1.0260950546702007e-01
--2.2084337803202693e+01
-3.0635332933506576e+00
--1.0777281429448149e+00
--2.0737507194065188e+01
-2.9504324895173079e-01
--5.7825077541763414e-01
--2.0698654479483491e+01
-5.5252897138944823e-01
--6.9522963913440894e-01
--2.0558627171695054e+01
--2.4523568734841947e+00
-8.1640223257780287e-01
--2.3510098067900632e+01
--1.0648188089548700e+00
--6.2126235586341345e-02
--2.1611590742678004e+01
-1.3857236812421837e+01
--5.2114231356562332e-02
--3.0084858410325136e+01
-1.4889818707919074e+01
--8.6010136175579655e-01
--2.8354902702348941e+01
-9.0796971238395052e-01
--8.0128370728693232e-01
--2.0491058744937373e+01
-1.6034811363488441e+00
--9.4511866653312593e-01
--2.0435725373194504e+01
--7.9645402507653962e-01
--2.5158998732666854e-01
--2.1353939029336324e+01
-2.8627097653469114e+00
--1.1560569056861221e+00
--2.0668740058221481e+01
--8.3245529613162517e-01
--2.4315230101391946e-01
--2.1372824809939161e+01
-1.3906212948434639e+01
--3.1476408947802470e-01
--2.9902251717124443e+01
--3.1749059970626098e-01
--5.0403125539034044e-01
--2.1053815415698850e+01
--3.5232390077134879e+00
-1.3912966267580908e+00
--2.5202049155848897e+01
--1.1674763677567241e+00
--1.7541968015946022e-01
--2.1731817524741992e+01
--1.1674763677567241e+00
--1.7541968015946022e-01
--2.1731817524741992e+01
-8.8688473443207475e-02
--7.3732272925515863e-01
--2.0811977890614305e+01
--2.7334750964421350e+00
-6.9162074833999720e-01
--2.3622530160491660e+01
-1.4555440118523675e+01
--1.5253741474028268e+00
--2.6947183399110973e+01
-1.9147580505328272e+00
--1.2473436190151301e+00
--2.0448656589673906e+01
-3.2357134367321616e-01
--8.5487524038767937e-01
--2.0705846230458455e+01
-1.5339565892298201e+00
--1.1452502818870989e+00
--2.0521271923230238e+01
-1.5314285274016295e+00
--1.1470966519142449e+00
--2.0501493352912703e+01
-1.4118655118274914e+01
--6.5179127400529346e-01
--2.9750313919627661e+01
--5.9246435293099153e-01
--5.6726130813609810e-01
--2.1209385283617667e+01
-1.5614136665157583e+00
--1.2145068658211602e+00
--2.0557786678424780e+01
--1.4485230480486138e+00
--2.7334126874428499e-01
--2.1914404561126101e+01
--8.3872981678947647e-02
--8.5355023770260585e-01
--2.0934980043382271e+01
--6.1166624886713550e-01
--6.7291096897280178e-01
--2.1262800243643557e+01
--5.1783736387468060e-01
--6.9660257551414850e-01
--2.1258882954819324e+01
-9.5406062342330300e-01
--1.2390767782989263e+00
--2.0602494902347701e+01
-6.1398092961123429e-01
--1.1532001377965775e+00
--2.0687047288594965e+01
-6.5177075061187006e-01
--1.1698805529514047e+00
--2.0658509103126949e+01
-1.3856090638845760e+01
--6.0252207840799943e-01
--3.0856793860114941e+01
--1.3373185307180369e+00
--4.2385497096514413e-01
--2.1971081511868881e+01
-1.3934975389795769e+01
--5.5769346592262936e-01
--3.1091127706097165e+01
-6.1563399922322297e+00
--3.2538655989903846e+00
--1.7936594074308527e+01
-1.5310382961164317e+01
--2.1893856255908526e+00
--2.7175254526634962e+01
-1.2819061552872519e+01
--1.0315411514942916e+00
--2.9014925583657416e+01
--3.7427660458559870e+00
-6.1849965123775996e-01
--2.4161698788825792e+01
-1.3217037641758083e+01
--1.4090549515037825e+00
--2.8210482307324803e+01
--1.1858724765194393e+00
--7.9772134062004885e-01
--2.1349824831534477e+01
--2.2725683999536219e+00
--1.6896402228815513e-01
--2.2856962615729628e+01
-1.4858939819037856e+01
--2.2918880156433272e+00
--2.7376582278530350e+01
--2.0585198662016855e+00
--3.3260653554186070e-01
--2.2521949228874476e+01
--2.1853932927240347e+00
--4.3568649161026435e-01
--2.2289195524204519e+01
--2.0715374709351080e+00
--3.8827166910086969e-01
--2.2546439617437937e+01
--1.7450126166537783e+00
--7.3650752375728090e-01
--2.1497989958346761e+01
-4.2173861402943720e-02
--1.3877645675720820e+00
--2.0543641358037469e+01
-5.5723521326606820e+00
--3.7323094610431586e+00
--1.6779963679509269e+01
--1.7073719341674725e+00
--7.8977502677425204e-01
--2.1472383328837136e+01
--1.7351332545541032e+00
--7.8295293528201171e-01
--2.1566184991977135e+01
--2.2635591691533636e+00
--3.2299826112141428e-01
--2.2779527621727151e+01
--4.0338284320701270e+00
-6.8544988563481402e-01
--2.5160547990813157e+01
--5.0554044061736891e-01
--1.3711041720882537e+00
--2.0529900874837324e+01
-4.1975587478439111e+00
--2.3084449529651665e+00
--2.0538479858400226e+01
--1.4518346355051890e+00
--9.8938836674393393e-01
--2.1287095739895278e+01
-2.9703291574710855e+00
--2.5178570415249841e+00
--1.9411651346158688e+01
--7.7239366827029521e-01
--1.3646698284081524e+00
--2.0771746748831195e+01
--7.7433829786650266e-01
--1.3604568984838254e+00
--2.0777037425425782e+01
--7.7476775450965352e-01
--1.4069249395560202e+00
--2.0789334406287409e+01
-2.9690690441590575e+00
--2.7585950478793664e+00
--1.8879712597082527e+01
-4.5193090314013551e+00
--2.6382501401089598e+00
--2.0324658972911788e+01
-1.4461247149600950e+01
--2.3763252156266477e+00
--2.8414086801589505e+01
-1.4867091934738584e+01
--2.5422063406377844e+00
--2.8310350169962277e+01
--6.1220583224010594e-01
--1.5392096360645235e+00
--2.0662905276878242e+01
--5.9318122486256453e-01
--1.5517288548411665e+00
--2.0690230888096288e+01
--6.0078794697967608e-01
--1.5594640080294286e+00
--2.0665164346843298e+01
--5.2761949862751722e-01
--1.5590116306108626e+00
--2.0634130263991977e+01
--3.2432412841414906e+00
--4.5217868940847294e-01
--2.2758126986586699e+01
--6.7871647651485407e+00
-3.5886679199424329e+00
--3.4804093281015916e+01
--3.1253063847760862e+00
--5.3494431216126126e-01
--2.2700651355566201e+01
--7.3946101058618174e-01
--1.5345364323524013e+00
--2.0821581608764987e+01
--3.6262030845252240e+00
--3.9853696215671491e-01
--2.2984238363787696e+01
--4.9456082099656768e+00
-4.4948398876406692e+00
--3.9538397147070341e+01
--2.7004207281724746e-01
--1.7338518154156937e+00
--2.0580666152889563e+01
-1.7714558131350726e+00
--2.2276038163149749e+00
--2.0290814972422453e+01
-6.6875423174507495e-02
--1.8262825670303440e+00
--2.0460237633768493e+01
--6.9675593032143217e+00
-3.3439908528846649e+00
--3.4378243592069893e+01
--1.7086365865321052e+00
--1.1831900246545495e+00
--2.1682957267555455e+01
--1.7086365865321052e+00
--1.1831900246545495e+00
--2.1682957267555455e+01
-2.7772635352766667e-01
--1.9477197715033974e+00
--2.0466596938918389e+01
-2.7153128477878685e-01
--1.9417029398520551e+00
--2.0454249318167282e+01
-3.2934417407798593e+00
--2.6949386771215011e+00
--2.0006998031078790e+01
--1.3257870545357577e+00
--1.4198715936576363e+00
--2.1347202315879045e+01
--9.4975437449868372e-01
--1.5938838121578400e+00
--2.1052246781074501e+01
-4.0996807760822923e-01
--2.0255684835212082e+00
--2.0448515627075285e+01
-9.7606086734735309e-01
--2.1828998361784864e+00
--2.0305694144529966e+01
--3.7306281534908448e+00
--5.4508582167788511e-01
--2.3203026431878115e+01
--3.7306281534908448e+00
--5.4508582167788511e-01
--2.3203026431878115e+01
--2.8489214404968450e+00
--1.0956123584803990e+00
--2.1854647772179362e+01
--2.1138159176320906e-01
--1.9490729511414642e+00
--2.0670437403808261e+01
-1.9307251715614995e-01
--2.0562518989014227e+00
--2.0554171285561150e+01
--1.3043504161410064e+00
--1.5779293600665441e+00
--2.1278477005000379e+01
-1.5425649999946311e+01
--3.4843310723904546e+00
--2.7408575175014878e+01
--6.4621283240198997e+00
-4.0510020782941103e+00
--3.8859790181789641e+01
-3.1800715609626939e-02
--2.0755572912794427e+00
--2.0601189511306803e+01
--4.5906208195437461e+00
-2.1349707552243808e+00
--3.3179670096504772e+01
--3.6599693646890876e+00
-2.5610329353205574e+00
--3.6152169680763350e+01
--3.0992157743897768e+00
--1.0742034228196780e+00
--2.2471381519303399e+01
-1.5672548892219016e+01
--3.9187563372666605e+00
--2.6984203043465492e+01
--2.8527553004461907e+00
--1.4031621382814248e+00
--2.1573709302950693e+01
--3.0705101055965338e+00
--1.1644320987800474e+00
--2.2418288138505197e+01
-1.2439913876646404e-01
--2.3448641030112558e+00
--2.0315934917399019e+01
--1.6752865995971982e+00
--1.7965724502005476e+00
--2.1024308771252333e+01
-1.9100190873469942e+00
--3.0027408299679474e+00
--1.9679997271078921e+01
-4.8592787340648963e-01
--2.6261839506177909e+00
--1.9715837605162108e+01
--3.4081469837123453e+00
--1.0085861209098186e+00
--2.3221553559188223e+01
--8.1858976526409197e+00
-3.3962832647683818e+00
--3.7162912351899706e+01
-1.5534388036514952e+00
--3.0617953197732484e+00
--1.9424561919011268e+01
-2.0807814138091785e+00
--3.0628600738602692e+00
--1.9798439437319537e+01
-4.6091206214762828e+00
--3.2942677712367363e+00
--2.1044582093765801e+01
-1.4682636565042305e+01
--4.1403186343968192e+00
--2.6612164630642674e+01
--6.8657648545597088e+00
-2.7441881672635797e+00
--3.6558164294900067e+01
--2.3164929636078604e+00
--1.9281440800182483e+00
--2.1527799878757104e+01
--3.0540584320230098e+00
--1.5979068216898435e+00
--2.2432422274888662e+01
-2.0127984843762912e+00
--3.2986629632045066e+00
--2.0049035989922601e+01
--7.2978838382526288e+00
-2.3338009321874411e+00
--3.5612577391839878e+01
--8.4806798696323948e+00
-2.5619841443882594e+00
--3.5843114507588417e+01
--1.7847164772547723e+00
--2.3125870006949376e+00
--2.1185995912575837e+01
--2.6939029401077188e+00
--1.9251863199943811e+00
--2.2104790736532902e+01
--2.8529370053734171e-01
--2.8545468698198868e+00
--2.0209173467436841e+01
--2.8102565616501325e+00
--2.0051992788035244e+00
--2.1816778871077879e+01
--1.4490556959962170e-01
--2.9281869060634609e+00
--2.0175642832199326e+01
--2.5646645257874306e-01
--2.9492064027720604e+00
--2.0150744067744263e+01
--2.7988492881532476e+00
--2.0858814120380149e+00
--2.1940553781322375e+01
--1.9391281466629686e+00
--2.3561827366513812e+00
--2.1511416008777612e+01
-1.7658230139778219e+00
--3.4827450461407699e+00
--2.0254605366672919e+01
--3.6093795133907727e+00
--1.5893912160049319e+00
--2.3409693707091879e+01
-1.6917379303540436e+00
--3.4646337525294890e+00
--2.0145143791840766e+01
--6.0475994830856656e+00
-5.0348189202698079e-01
--3.0774936592911057e+01
--1.1228257415787151e+00
--2.8744864638815697e+00
--2.0667013520275795e+01
-7.7690642171106183e-01
--3.4988456109417534e+00
--1.9716245031810622e+01
--6.5185125564066313e+00
-4.3463065979375248e-01
--3.0571149623699164e+01
-3.4154394111971604e+00
--3.9892177699626954e+00
--2.0517226443292810e+01
--2.6218694393866921e+00
--2.3350671291006075e+00
--2.2115521770313094e+01
--2.6218694393866921e+00
--2.3350671291006075e+00
--2.2115521770313094e+01
--3.5083491790320753e-01
--3.1741206954227765e+00
--2.0489482422765338e+01
-2.8231578015499057e+00
--3.9082476713334113e+00
--2.0459841064071107e+01
--2.3473805931509109e+00
--2.4488187039461051e+00
--2.2110126964873356e+01
--1.5859532852461458e-01
--3.3459322667406930e+00
--2.0525140210292506e+01
--8.1315359304637500e+00
-1.2070995766888761e+00
--3.3996709763029443e+01
-2.9525022843958300e+00
--4.0721427845067453e+00
--2.0602504085528157e+01
--1.2325594526820220e+00
--3.1461178975789066e+00
--2.0686505764124927e+01
--3.0786478783607207e-01
--3.3449511331424255e+00
--2.0693399470547376e+01
--8.2912603947820163e+00
-1.0838747645655658e+00
--3.4074046094190678e+01
-3.9771815324334381e+00
--4.1897128968022725e+00
--2.1327061677735816e+01
--8.2200516787608624e+00
-1.0223608375758477e+00
--3.3917891153734615e+01
--3.4394055246330586e+00
--2.1979509161226507e+00
--2.3259754863130013e+01
-5.7791927474426497e-01
--3.6806700912530363e+00
--2.0353741499093882e+01
-5.2964544594501639e+00
--4.9884350797389549e+00
--2.0026066170074817e+01
--9.1161135290513229e-01
--3.2317148128305684e+00
--2.0957839707222821e+01
--1.2098882977100229e+00
--3.1467489529574530e+00
--2.1228983123465056e+01
--9.4258887261236417e+00
-1.1421883531954811e+00
--3.3866587585350665e+01
-4.9511325431467732e+00
--4.3947255563771508e+00
--2.2508222810185782e+01
--6.5430314253064674e+00
-1.9893889245637206e-01
--3.2695188864854579e+01
--7.9929182403905408e+00
--3.6611816092721967e-02
--2.9945459325795746e+01
-3.6644490693517295e+00
--4.3875547302689482e+00
--2.1289391960138502e+01
-2.3087015618350923e-01
--3.6392009170028912e+00
--2.1463390903607181e+01
-2.8517966414580691e+00
--4.3717749789630718e+00
--2.0740515396781738e+01
-1.1231099845207890e+01
--5.6189143694636208e+00
--2.4504188709071741e+01
-7.1641773638907646e-01
--3.9206876256201091e+00
--2.0583264200255776e+01
--4.2477540929689334e-01
--3.6281642281606361e+00
--2.1088732494677540e+01
--2.7245299219351358e+00
--2.8123122885909226e+00
--2.2726781291423084e+01
--2.7230522695510420e+00
--2.8577910999329754e+00
--2.2734382106076932e+01
--2.7393570270512062e+00
--2.9369139897345815e+00
--2.2425966140499021e+01
--2.8098385879872896e+00
--2.8612057759213996e+00
--2.2959766520174927e+01
--2.8888470726613487e+00
--2.9808872177257153e+00
--2.2620003695784188e+01
--9.2440568245849395e+00
-2.6512304273255788e-01
--3.2875495673644700e+01
--2.2221684429637505e+00
--3.2702854152782979e+00
--2.2097545583428413e+01
--3.1600363490060177e+00
--3.0007029018625113e+00
--2.2502743672566435e+01
-3.2545485025368948e-01
--4.1243982817975429e+00
--2.0986370926364742e+01
--3.2824883292804721e+00
--2.7283353108707096e+00
--2.4268405619743465e+01
-2.6962895614617590e+00
--4.8353951068774688e+00
--2.0903020521712776e+01
--2.4987737950371831e+00
--3.3388553654852511e+00
--2.2376939487797355e+01
--2.4434774596935913e+00
--3.3167215902162508e+00
--2.2860121106193052e+01
-1.5753352103107969e+00
--4.6345354200543660e+00
--2.1279798291030936e+01
--1.8483755655604754e+00
--3.6544969816914845e+00
--2.2210860359065546e+01
--1.4123679387800123e+00
--3.8421847481766851e+00
--2.1950226800724366e+01
-6.7518847994335329e-01
--4.5334118489137003e+00
--2.0884239966842237e+01
-6.7808758296121685e-01
--4.5134232910634164e+00
--2.0930762969205833e+01
--5.0244004300063372e-01
--4.1991251008172483e+00
--2.1365145068558231e+01
-2.9222808139854806e+00
--4.9748803354361000e+00
--2.1662487804369920e+01
-2.9752770542950255e+00
--5.0010438614472523e+00
--2.1659487665860944e+01
-2.7197400270932652e+00
--4.9334124635445349e+00
--2.1674327962180126e+01
--4.9057887712216269e-01
--4.2346993883240787e+00
--2.1474448897958027e+01
-6.9366722116523649e-01
--4.6090095228878569e+00
--2.1193192964622508e+01
-6.2094368088071528e-01
--4.7012985851453104e+00
--2.0787309084702539e+01
--2.7283262251785323e+00
--3.6162349219155381e+00
--2.3794725432269949e+01
--2.8056242071523432e+00
--3.6108289161886380e+00
--2.3612906992628538e+01
--1.6386426736959789e+00
--4.1369815790267843e+00
--2.2471976487081438e+01
--4.9259183420317615e-01
--4.5748968934730980e+00
--2.1743319090480128e+01
-4.8959546557785076e+00
--6.0216372905383118e+00
--2.2499897992157109e+01
--6.9064722589720384e+00
--2.3406461371679503e+00
--2.9266976390043638e+01
-5.8935699584577439e-01
--5.3730403885570395e+00
--2.1262228113766106e+01
--1.2594260165170139e+00
--4.9311854411533407e+00
--2.2048245459826191e+01
--1.4080709398002671e+00
--4.9955596442742500e+00
--2.2431020592004490e+01
-7.2051443998947962e-01
--5.6832666569122994e+00
--2.1509132490182083e+01
-4.6824373218040011e-01
--5.9053887228385236e+00
--2.0843858445814220e+01
-4.8400163618082626e-01
--6.1812433515328422e+00
--2.0903254780677283e+01
--3.5729687229321443e+00
--4.8642896717137774e+00
--2.3894034401578882e+01
--3.5437727243869936e+00
--4.8717770178168829e+00
--2.3850956627143322e+01
-1.4803600042726761e+00
--6.4176111361189712e+00
--2.1172474646204382e+01
--7.4834250339970190e+00
--3.8448097117382334e+00
--2.6937647361229988e+01
--3.5069611004443635e+00
--5.0978243201323226e+00
--2.3761131219298807e+01
--6.6706757105061127e+00
--4.1003663397957348e+00
--2.6820487029870375e+01
--7.3462617851707197e+00
--3.9893420255001444e+00
--2.7056591107692373e+01
-9.4258841161153561e-01
--6.7277430933888054e+00
--2.1667223923380810e+01
--1.7137095228050880e+00
--6.0732827264234395e+00
--2.2132261908061700e+01
--1.4956746045935869e+00
--6.2996556222899995e+00
--2.2097263649284315e+01
-1.4613058322536249e-01
--6.9104428739791457e+00
--2.1621199122242917e+01
-3.3003347400228948e+00
--7.8120712745384262e+00
--2.1245998318991386e+01
-2.1533915437600299e+00
--7.5138265398561668e+00
--2.1300454373935544e+01
--2.7065250828232870e+00
--6.3302710408568634e+00
--2.2653613666319469e+01
-3.5998812202915464e-01
--8.1444479581692448e+00
--2.0023007151780117e+01
--6.3655473214757334e+00
--6.2064599496364936e+00
--2.3974007898928225e+01
--2.6259598705995174e-01
--8.0356182122490338e+00
--2.0949897700965991e+01
-1.6170903478025098e+00
--8.9172738866762931e+00
--2.0496721245859753e+01
-1.5415701201091303e+00
--8.7423180221903394e+00
--1.9912527933648139e+01
--8.5890342846106886e+00
-2.3496360892998339e+01
--3.5417834736974946e+01
-3.3240193813636965e+00
-2.6832425709216619e+01
--4.0797509131967033e+01
-6.7020638692199042e-01
-2.5865944728980214e+01
--3.9545571633855864e+01
-5.9009332602465747e+00
-2.7914733016950127e+01
--4.2627962464046135e+01
-7.3516226931943462e+00
-2.8825491193396900e+01
--4.3817767994634934e+01
-3.5315399743995926e+00
-2.7263434224760058e+01
--4.1657352380183760e+01
-5.5056721030708369e+00
-2.8134038412188602e+01
--4.3062846842894665e+01
-1.0956584060522696e+01
-2.8800789459196732e+01
--4.4065717777914266e+01
-1.3130219679113086e+01
-2.9796178833399519e+01
--4.5657722983033409e+01
-6.2044884354164132e-01
-2.5781939470623893e+01
--3.9877747130833633e+01
-1.0880026039216252e+01
-2.8282744239851731e+01
--4.3842888730999739e+01
-1.1489804933322905e+01
-2.8698799734418792e+01
--4.3977306107710248e+01
-7.9572923741987180e+00
-2.7482414655317495e+01
--4.2874081805000699e+01
-1.0761520729134553e+01
-2.8716191708284036e+01
--4.4550523348165150e+01
-1.4235383713285728e+01
-3.0404619794889634e+01
--4.6957688775080882e+01
-1.4663815099643802e+01
-3.0920042876995719e+01
--4.7863826507932757e+01
-9.1245408457032333e+00
-2.8122921912545173e+01
--4.3786776196363334e+01
-4.8739540400260379e+00
-2.7128290138125340e+01
--4.2513621308270018e+01
-4.9995984181634352e+00
-2.6862855973956645e+01
--4.2004708776169032e+01
-9.7073451290418671e+00
-2.8845419732573227e+01
--4.5096038982946475e+01
-5.4525624279230795e+00
-2.7548280689118581e+01
--4.3427035998749297e+01
-4.8317549056491726e+00
-2.7289808492269508e+01
--4.3100537262527936e+01
-4.5159941530692285e+00
-2.6876129776546804e+01
--4.2831201982666549e+01
-1.4793548451395701e+01
-3.0289574193479734e+01
--4.7665621412755961e+01
-1.5029566100223567e+01
-3.0679630292906626e+01
--4.8079189996407209e+01
-5.3585957922702505e+00
-2.7541243160706969e+01
--4.3849526959384853e+01
-4.7831862992606897e+00
-2.6965283919356004e+01
--4.3272301663046747e+01
-1.4839194606073733e+01
-3.0813843390820708e+01
--4.9159292396707293e+01
-5.7456432386736740e+00
-2.7000305218298216e+01
--4.3889839859439697e+01
-1.5943177920569866e+01
-3.0730870090858019e+01
--4.9318499058299764e+01
--3.5259681750637064e+00
-2.2615607654513276e+01
--3.7439801902351988e+01
--2.3260506414176674e+00
-2.4097818924076229e+01
--3.9446483164766853e+01
-4.6303843122400936e+00
-2.6431790419968280e+01
--4.2930770336211062e+01
-1.0909978206516083e+01
-1.5680143543130095e+01
--2.9328287715637728e+01
-1.0058679990549896e+01
-1.4854588816772898e+01
--2.8306646853354280e+01
-1.1755916650594727e+01
-1.5895452129337437e+01
--2.9631472729599846e+01
-3.8879122365169736e+00
-2.6340869328677528e+01
--4.2726208233770194e+01
-6.4680262347689199e+00
-2.7046836989937329e+01
--4.3986077291244619e+01
-3.6372772995582916e+00
-2.5987883610737669e+01
--4.2542645758894167e+01
-1.0912054743283033e+01
-1.5510798968557010e+01
--2.9295199114292615e+01
-1.1703806354412043e+01
-1.5955362447065445e+01
--2.9862710255866592e+01
-1.0077272830976147e+01
-1.4973504418062783e+01
--2.8662537792806482e+01
-5.9593396026539232e+00
-2.6303472363086055e+01
--4.3091579423562820e+01
-1.3193920561958359e+00
-2.5682331992075849e+01
--4.2166825903546531e+01
-1.3496796609544532e+01
-1.6229490147472006e+01
--3.0556400577341915e+01
-2.7775362578756182e+00
-2.5636874776961918e+01
--4.2255859113437097e+01
-1.1823988929302772e+01
-1.5839536227820311e+01
--2.9854633495414650e+01
-6.9015491139169702e+00
-2.6839631302531650e+01
--4.4103172266949223e+01
-1.2186782781132576e+01
-1.6655025267969709e+01
--3.1042496730516035e+01
--2.1602182425043721e+00
-2.4167923434925267e+01
--4.0070785112471249e+01
--3.8524668605370160e+00
-2.2938894778084194e+01
--3.8178862678483078e+01
-3.1570486494551573e+00
-2.5716750213760580e+01
--4.2507756756372679e+01
-6.5597199702113942e+00
-2.7076859160564151e+01
--4.4420753770023623e+01
-2.6265432226154735e+00
-2.6175809177877955e+01
--4.3243842325016331e+01
-2.7652695159815575e+00
-2.6187285731847641e+01
--4.3278215130605957e+01
-1.2624470845924961e+01
-1.5707769998696108e+01
--2.9955330719857901e+01
-1.2274488963228031e+01
-1.0010899595320984e+01
--2.2788502321311618e+01
--7.8436036590132812e+00
-2.1492119959925173e+01
--3.6120492239259839e+01
--7.5238029949076859e+00
-2.1357105713187590e+01
--3.5955237715496430e+01
--6.0259503353117152e+00
-2.2042281143866642e+01
--3.7078211804244049e+01
--3.6988051346947182e-01
-2.4988367745304231e+01
--4.1648713946014929e+01
--8.3039870759895980e+00
-2.1460919838093766e+01
--3.6307532046472822e+01
-4.9830917945456923e+00
-2.6026544046309859e+01
--4.3370221405680994e+01
-1.7117690515899710e-02
-2.4637591385571358e+01
--4.1220057799742918e+01
-2.7899296039589494e+00
-2.5201154288475941e+01
--4.2075759156753911e+01
--6.4256392718720168e+00
-2.2092128485933404e+01
--3.7393222971298350e+01
-5.3158250944052234e+00
-2.6261552774549976e+01
--4.3890177783131662e+01
--4.9955751067744352e+00
-2.2641369800113981e+01
--3.8256457878780481e+01
--3.7508819834091072e+00
-2.2628948421734201e+01
--3.8334490837888225e+01
-1.0229492477804683e+01
-1.4877837000923545e+01
--2.9132085676182090e+01
-1.2457535802142440e+01
-1.5759195308493297e+01
--3.0377423572089675e+01
-2.2674536631044901e+00
-2.5034270175783522e+01
--4.2052172798371281e+01
--3.9000777933499933e+00
-2.2740551600814236e+01
--3.8610849799187889e+01
-7.3432550523247304e+00
-2.6715774650946983e+01
--4.4797380649234952e+01
-1.4560480041480460e+01
-2.9553918678260757e+01
--4.9209423731779047e+01
-1.2856526681801002e+01
-1.6627283508454777e+01
--3.1784337875305130e+01
-1.2856526681801002e+01
-1.6627283508454777e+01
--3.1784337875305130e+01
-8.7490953098927058e+00
-9.2342738733900838e+00
--2.1590517930026703e+01
-1.2068340773268032e+01
-1.0245371693133878e+01
--2.3429881570481609e+01
-8.9525530061011618e-02
-2.4341548870970616e+01
--4.1243251992863989e+01
-5.9802429574993283e+00
-2.6318026604084277e+01
--4.4246992990415784e+01
-5.7108291737862640e+00
-2.6176380492869274e+01
--4.4071334440677120e+01
-2.4868851299961312e+00
-2.4988423894646569e+01
--4.2482945452000955e+01
-6.0396564800494694e+00
-2.6478075706047736e+01
--4.4579803433686372e+01
--7.7795622981446977e+00
-2.0998936596617479e+01
--3.6117953015648403e+01
-5.9536658340123649e+00
-6.3251834925674588e+00
--1.7582126283841497e+01
-4.4533565887703643e+00
-2.5830170787702009e+01
--4.3922583523755314e+01
-1.3258711527048920e+01
-1.7199067047440060e+01
--3.2929768742721045e+01
-9.0278667207156484e+00
-7.0163409465147542e+00
--1.8809875360836912e+01
--1.3009052802490661e+01
-1.9226640821867932e+01
--3.3453827715094789e+01
-2.8442749893286958e+00
-2.5105423183155299e+01
--4.2733126166259012e+01
-3.2556521865938635e+00
-2.5982512947861380e+01
--4.4101449766824402e+01
-2.8442749893286958e+00
-2.5105423183155299e+01
--4.2733126166259012e+01
-6.0100846691671546e+00
-2.6396700282448673e+01
--4.4814547982718025e+01
--1.3047463579154257e+01
-1.9122653716798030e+01
--3.3329509317726341e+01
--8.3209240857072029e+00
-2.0557663522680446e+01
--3.5694906996575249e+01
-1.3082243947111026e+01
-1.0006609312806644e+01
--2.3428719285246107e+01
-1.6347732500372679e+01
-2.9914472434827040e+01
--5.0593797956234141e+01
--1.0780754602686780e+01
-2.0030132786980484e+01
--3.4943140978714126e+01
-4.9287042805835704e+00
-4.6800230770651163e+00
--1.5482914984425534e+01
--7.9236121111615976e+00
-2.0910626191259627e+01
--3.6346983796716472e+01
-7.4117124467481057e+00
-2.6029665219040474e+01
--4.5005748031447965e+01
-2.3493993637346624e+00
-2.4670645262135551e+01
--4.2621289611862053e+01
-8.9422509471528162e+00
-6.0920485281447201e+00
--1.7907097935882785e+01
-1.3794056461983264e+01
-2.7369976792803211e+01
--4.7515318896000714e+01
-1.3850473472060155e+01
-2.8690238464675851e+01
--4.9328526794028726e+01
-8.1176855584070413e+00
-2.6037946018390947e+01
--4.5386840801560787e+01
-2.9129465567672255e+00
-2.1711915176545666e+00
--1.2112551268055944e+01
-1.9594770289881647e+00
-2.4330548954325430e+01
--4.2680085305996826e+01
-1.1850004339240058e+01
-1.5584862819399175e+01
--3.1643052330729663e+01
-1.2430176969058422e+01
-1.6172015269734597e+01
--3.2383266141717847e+01
-1.1677526455407095e+01
-2.6718489692213190e+01
--4.7097820905626250e+01
-3.0510576612916401e-01
-2.3656453878658752e+01
--4.1854612580519216e+01
-2.2226146313868735e+01
-3.0271441217267945e+01
--5.2975554712269648e+01
--1.2767504000226648e+00
-2.2904866548642467e+01
--4.0727892259194533e+01
--1.0578688884239260e+00
-2.3108427465142331e+01
--4.1174310407508663e+01
--1.0578688884239260e+00
-2.3108427465142331e+01
--4.1174310407508663e+01
--1.1645871757653538e+01
-1.9212956973081852e+01
--3.4590560692846886e+01
-1.1989305517044709e+01
-1.5632086479746297e+01
--3.2009601096928250e+01
--7.0158788350470591e-01
-2.3053294858775832e+01
--4.1396065151718702e+01
--6.9858501189078959e-01
-2.3004577223080496e+01
--4.1339970591559251e+01
-3.8047237700503760e+00
-2.4179459085576131e+01
--4.3519227309476193e+01
--2.6415687552480482e-01
-2.3265648248867297e+01
--4.1776144670057064e+01
-1.6837041478863949e+01
-2.8140799766819129e+01
--5.0070781189496188e+01
-1.9186239778699981e+01
-3.1163629690476359e+01
--5.4877477476249290e+01
-5.8849113349391953e+00
-2.5677801251253303e+01
--4.5764752498249194e+01
-6.8295100782325164e+00
-2.6511468078845375e+01
--4.7198558663470209e+01
--1.0540700392477040e+00
-2.2925353491195011e+01
--4.1395293068440957e+01
--1.0277223988357123e+00
-2.2856197731995895e+01
--4.1244562161310228e+01
--1.0689883909274775e+00
-2.2800511410977851e+01
--4.1230629714722184e+01
--1.0578572511762738e+01
-1.9319103297991063e+01
--3.5086883049293014e+01
--8.9049043131803103e+00
-2.3861873107312789e+01
--4.1586988334575402e+01
--9.1865845097512260e+00
-1.9430114495782053e+01
--3.5568850479908193e+01
-9.9349800464971119e-02
-2.3620606918724363e+01
--4.2611471256324755e+01
-5.8491725808328772e+00
-2.5267001118520081e+01
--4.5478695360887819e+01
-1.2206886303572283e+01
-2.7211007226270212e+01
--4.8857877771663794e+01
-5.0900034385046862e+00
-4.0617684119967352e+00
--1.5608443700202624e+01
-1.2576311293085059e+01
-2.7276027598104882e+01
--4.8925519795829032e+01
--8.8467530993153272e+00
-2.0072169285777015e+01
--3.6696423003180925e+01
-1.1950513696200506e+01
-2.7268745046422133e+01
--4.8919488176481664e+01
-3.9224265134834813e+00
-2.5421743883127856e+01
--4.5636003939040400e+01
-1.2379752825784397e+01
-9.8790429220841176e+00
--2.4375565437776505e+01
-5.4992633698796434e+00
-2.4911495434794393e+01
--4.5162385235180025e+01
-1.5093592787247372e+01
-2.7384622636906577e+01
--4.9356507786313500e+01
-1.3993852947899422e+01
-1.4606058730171922e+01
--3.1342435246917937e+01
--9.7256317107404548e+00
-2.3616761340732346e+01
--4.1477121077672741e+01
--1.2474315614674390e+01
-1.8447800520190434e+01
--3.4114349659909230e+01
-3.4551057119776711e+00
-2.3763035014424965e+01
--4.3546549831154394e+01
--1.1442088351300599e+01
-1.8993713257294591e+01
--3.5060824212931699e+01
--9.1877474475309242e+00
-1.9608392130320794e+01
--3.6117986159009028e+01
--1.2530846135817884e+01
-1.8382227589441385e+01
--3.4228661394337323e+01
-1.2835398963845243e+01
-2.7401589937803003e+01
--4.9714483960753689e+01
-2.7130157070684726e+00
-2.3817662328470270e+01
--4.3728734778936015e+01
-1.2441685303940105e+01
-2.7010722467212894e+01
--4.9387398674256410e+01
-1.2967161582675590e+01
-2.5813271493730220e+01
--4.7919388483640233e+01
-1.3099047718028817e+01
-1.0985128444046643e+01
--2.6963501118276579e+01
-2.2339687200780070e+01
-3.1691714514278011e+01
--5.7816892929573157e+01
-2.2339687200780070e+01
-3.1691714514278011e+01
--5.7816892929573157e+01
--9.0002827681398512e-01
-2.2410018293364054e+01
--4.1815026838004030e+01
--1.5527579054599026e+00
-2.2190592969584195e+01
--4.1632239469705844e+01
--2.0295312412490842e+00
-2.1905266881337582e+01
--4.1048766518450584e+01
-9.4931576072582722e+00
-2.5351406656093136e+01
--4.7451369912627101e+01
--1.0958646561162519e+01
-1.8369057868225500e+01
--3.5004955484682533e+01
-1.3933159734603140e+00
-2.3144036497637209e+01
--4.3428762188612346e+01
-9.7916583417904732e+00
-2.5692099350904826e+01
--4.8180667467043058e+01
-4.3368631509278268e+00
-2.4146425459803577e+01
--4.5382251310644072e+01
-1.2037727035971724e+01
-2.6432901934339792e+01
--4.9418042951626326e+01
-2.7861095132975910e-01
-2.2960938617157431e+01
--4.3289856462445044e+01
-6.3755872069333455e+00
-2.4786487098732504e+01
--4.6726180021124904e+01
-1.4424345272663192e+01
-1.2787985058531824e+01
--2.9985720478312434e+01
-5.4841258872931427e+00
-2.3972361126956926e+01
--4.5444237605323231e+01
-8.7419517277140706e+00
-2.6253722795757298e+01
--4.9317246517014858e+01
--8.6577953303315667e+00
-1.9608543052010525e+01
--3.7432716409798317e+01
-1.1883181707610383e+01
-2.6371948005374524e+01
--4.9958254473695156e+01
--9.1580775586690262e+00
-1.9058410749661796e+01
--3.6526930095186209e+01
-1.2781150951243140e+01
-1.1656274917934589e+01
--2.8228465811110365e+01
--9.0362688008670062e+00
-1.9089351796063092e+01
--3.6586428080787918e+01
--2.4212068282874459e+00
-2.1588369135046122e+01
--4.1356916977437074e+01
-1.3198200282904120e+01
-9.5519422022513201e+00
--2.5476084504637491e+01
-1.2917258780854848e+01
-9.4146921287679479e+00
--2.5103712848906238e+01
-1.4221459158103954e+01
-8.1793773025792103e+00
--2.3616492242581280e+01
-3.6747088715188742e-01
-2.2854843014910617e+01
--4.3584861366500377e+01
-8.5569247476024266e+00
-2.4862746262765452e+01
--4.7487145074131590e+01
-1.5199554385618352e+01
-2.6055906101603611e+01
--5.0160477828090308e+01
--3.1510901023891660e+00
-2.1430396998160411e+01
--4.1142325057873634e+01
-9.0788186946807539e+00
-2.4747812899374573e+01
--4.7817149922170607e+01
-9.3752410965450839e+00
-2.5282599414642856e+01
--4.8536445802179301e+01
-1.4856608128889690e+01
-1.3316601024572636e+01
--3.1686199455618588e+01
--3.3314859200002402e+00
-2.1163215463114977e+01
--4.1026709424680597e+01
--3.3862438648700244e+00
-2.1077270168913518e+01
--4.0743144162767877e+01
-1.5521857356956502e+01
-2.6301919673110000e+01
--5.0756724205296372e+01
-9.0189538616726885e+00
-2.4901589479610823e+01
--4.8057861624377331e+01
-8.5898802887519476e+00
-2.4350256157732762e+01
--4.7246429978188623e+01
--1.1740431849821363e+01
-1.8151973431238027e+01
--3.5529421207093897e+01
-5.3434161831103832e+00
-2.3252946592725980e+01
--4.5424113217185720e+01
-6.4115649413372194e-02
-2.2271403886328613e+01
--4.3361274714791662e+01
-6.4476966692726387e-02
-2.2153931912017388e+01
--4.3118581018104763e+01
-1.2211175911036024e+01
-2.5137681817476295e+01
--4.8866238398225256e+01
-2.7023845623776821e+00
-2.2696445022728849e+01
--4.4328508990697195e+01
--6.1159393745322244e-01
-2.1993850630495174e+01
--4.2999540083591619e+01
-4.3312494429417558e+00
-2.3328917739015580e+01
--4.5597498772880812e+01
--6.1422074139163003e+00
-2.0065743223064722e+01
--3.9507087092499503e+01
--8.8771994137999020e+00
-1.7356444532166766e+01
--3.5072996625103684e+01
-1.0751697660368055e+01
-2.6389118045973021e+01
--5.1411190808861903e+01
--2.2409916929791796e+00
-2.1156682179713638e+01
--4.1773601031477135e+01
--7.2188944508100406e+00
-1.9336910691287173e+01
--3.8432918640161475e+01
-1.0289535520014585e+01
-2.5358871005677120e+01
--5.0102151163625891e+01
-9.4396210909210598e+00
-7.1368875383681152e+00
--2.2111959319956124e+01
-1.4374083558962225e+01
-1.4147853359994306e+01
--3.3761478810956554e+01
--5.9604644931682911e+00
-1.9515000937225825e+01
--3.9023432077162575e+01
-1.2647267013248783e+01
-8.5096409395753092e+00
--2.4877102928705323e+01
--7.7018723399892428e+00
-1.9206685014928105e+01
--3.8328499663342029e+01
-1.4498926189359411e+01
-1.2373123011517208e+01
--3.0958365267757003e+01
-2.8183997525242699e-01
-2.1767586946772109e+01
--4.3501845276011672e+01
--7.5351118655470248e+00
-1.9206277203473466e+01
--3.8475221479569939e+01
-5.3124431416960292e+00
-2.2886230599646598e+01
--4.5722363667584396e+01
--7.3931099385478962e+00
-2.1495678920998696e+01
--4.1895774504189774e+01
--8.1164015227649458e+00
-1.8962612391797354e+01
--3.8420136409007760e+01
--1.2796246431064864e+01
-1.7196122213935151e+01
--3.4908661521771265e+01
--7.9422289647376729e+00
-1.8585158004125418e+01
--3.8015186804355103e+01
-6.3219461785039393e+00
-2.3195022093298899e+01
--4.6633764201544246e+01
--8.8758032632004316e+00
-1.8871511182325808e+01
--3.8425781867931704e+01
--8.4135849589477019e+00
-2.0936271223584683e+01
--4.1159351038667339e+01
-5.9470945731858071e+00
-2.3232609319147752e+01
--4.6825812154893157e+01
-5.8881292226906590e+00
-2.2987249761553986e+01
--4.6245591113352639e+01
-1.5938644523194000e+01
-2.5966876334815318e+01
--5.2266298409988330e+01
--9.0912516129197432e+00
-1.8766638977091525e+01
--3.8419809065424133e+01
--9.0912516129197432e+00
-1.8766638977091525e+01
--3.8419809065424133e+01
--7.5448704202376442e+00
-1.9227422820508888e+01
--3.8941739219631899e+01
--7.5318121818252814e+00
-1.9164130991927198e+01
--3.8870749725104204e+01
-5.5229879622962619e+00
-2.2435014760456685e+01
--4.5573460371087933e+01
--7.3889170842128999e+00
-1.9095469281675790e+01
--3.9079770072192943e+01
--8.1039307887666414e+00
-1.8668766476120016e+01
--3.8278992240737296e+01
--1.2184782481778884e+00
-2.0962497867390805e+01
--4.2708864119814500e+01
--1.2790239927385265e+01
-1.6901724102965918e+01
--3.4728820908117676e+01
-1.6106692962240297e+00
-2.2011993617371399e+01
--4.4913052748994239e+01
-1.5956622975364068e+01
-2.5582426318421039e+01
--5.2029207068628033e+01
--1.2463386510951866e+01
-1.7217219865263200e+01
--3.5315110507538741e+01
--1.2180897257565073e+01
-1.7359323937118322e+01
--3.5612644594346278e+01
-6.5217002950729128e+00
-2.3455860656968984e+01
--4.7719595787926615e+01
--1.2556364907586408e+01
-1.6809389406875297e+01
--3.4783895311567576e+01
-1.2534498759186137e+01
-6.4173926824399654e+00
--2.2293381963919423e+01
--1.3985897845610593e+00
-2.1041660148115742e+01
--4.3279585484214515e+01
-1.5763021777203006e+01
-2.6097044696161291e+01
--5.3399597578698263e+01
--7.3150993089304572e+00
-1.9128802385072099e+01
--3.9685037763319798e+01
--7.3647474570308553e+00
-1.9096089874702148e+01
--3.9338857651797170e+01
--7.2409551421661487e+00
-1.8643655888031564e+01
--3.9065069919437740e+01
--1.0358000915359819e+01
-1.8332849347229391e+01
--3.8095691551197667e+01
--1.3375398921519086e+01
-1.6826092778116656e+01
--3.4831084818716143e+01
--1.3375398921519086e+01
-1.6826092778116656e+01
--3.4831084818716143e+01
--7.1165932953798956e+00
-1.9178423457409934e+01
--3.9968155810465944e+01
--7.2290535714217850e+00
-1.8966757317429146e+01
--3.9048093305445910e+01
-6.8462179983375711e+00
-2.3397204236764594e+01
--4.8171119236772967e+01
-7.2892694264615079e+00
-2.3322747229926385e+01
--4.7967653664854815e+01
--1.0445748203997169e+01
-1.7951982511930968e+01
--3.7347180213109034e+01
--1.0255538356751774e+01
-1.7489369693704436e+01
--3.6742271355896236e+01
--5.9031744727421342e+00
-1.9315453126886883e+01
--3.9868838754882177e+01
--4.0089697249089324e+00
-2.0073240089081022e+01
--4.2018017500957001e+01
--4.1134994792818347e+00
-1.9987755761019564e+01
--4.1508683741350751e+01
--4.0089697249089324e+00
-2.0073240089081022e+01
--4.2018017500957001e+01
--8.2012615963110527e+00
-1.8758494201918825e+01
--3.9362824312848097e+01
--8.1257342386275244e+00
-1.8278851663334883e+01
--3.8629054162435928e+01
--1.2539405880562361e+01
-1.6966218560637877e+01
--3.5513022488620287e+01
-1.7464185127909910e+00
-2.1728802543568996e+01
--4.5264106933200679e+01
-1.2394392707501837e+01
-9.6117926674842469e+00
--2.7728046971428377e+01
--1.2762811002779898e+01
-1.6788404006256151e+01
--3.5267578491430406e+01
--8.3339951427491368e+00
-1.8007541731888075e+01
--3.8229096730342029e+01
-5.4078193286382605e+00
-2.2000651987056333e+01
--4.6205018461610834e+01
--1.3056232768818449e+01
-1.6820959143626659e+01
--3.5308210105032501e+01
--3.7493910865407960e+00
-1.9849694461272158e+01
--4.1666965187055538e+01
-6.5805207302311413e+00
-2.2931038491588318e+01
--4.8044736237451744e+01
-6.5805207302311413e+00
-2.2931038491588318e+01
--4.8044736237451744e+01
--2.4127976570336402e+00
-2.0469374441877207e+01
--4.3019933112079670e+01
-7.0840054406336481e+00
-2.3019090882054481e+01
--4.8305820627529258e+01
-7.1885235160881127e+00
-2.3150304621758664e+01
--4.8471750045792831e+01
--1.0670654580095636e+01
-1.7644713020971682e+01
--3.7155459458380236e+01
--1.0694807893549488e+01
-1.7710157559854000e+01
--3.7236766989136029e+01
--9.1585309613052637e+00
-1.8280146521494842e+01
--3.8838160015266887e+01
--9.2010267650612594e+00
-1.8039075042427118e+01
--3.8250459555148097e+01
--3.0835231927945452e+00
-2.0002670662958618e+01
--4.2299695934306200e+01
-6.1585169752234332e+00
-2.2912184968830925e+01
--4.8051823784263227e+01
-1.2606040142276960e+01
-1.0577684294743321e+01
--2.9335187107707817e+01
-1.3196329884462568e+01
-6.4122418314337413e+00
--2.3236598230729385e+01
-1.5867000397940294e+00
-2.1540638582996131e+01
--4.5505364847052753e+01
-1.5806419995827505e+00
-2.1522238675180603e+01
--4.5487907027641100e+01
--8.4946314617252554e+00
-1.8141079145119004e+01
--3.8825780470638627e+01
--1.2629264806330912e+01
-1.6482739867984090e+01
--3.5229778855438127e+01
--1.2748567479929759e+01
-1.6413889847218876e+01
--3.5144420857306962e+01
-1.6613816024552193e+01
-2.4639956811040800e+01
--5.2895125803302641e+01
-1.8212745632877969e+01
-2.5664651006027349e+01
--5.4812333376176007e+01
-1.8842998660766121e+01
-2.6450335115910875e+01
--5.6122158653611933e+01
-3.2417776847997146e+00
-2.1826730014074474e+01
--4.6756205960178640e+01
-1.0024808846915381e+01
-2.3574207427850386e+01
--5.0446440275744116e+01
-1.3322885302207681e+01
-6.8441318749589346e+00
--2.4405080111826411e+01
-1.3695598387264305e+01
-6.6882770107240068e+00
--2.4200056970541421e+01
--1.0086770038858440e+01
-1.7571513821390255e+01
--3.7701037175555307e+01
-5.6939360373063490e+00
-3.0849695508190123e+00
--1.7000464098614085e+01
-1.2840762114780620e+01
-2.3446943035405514e+01
--5.0907288502043642e+01
--5.7462917559881967e+00
-1.8876803690438358e+01
--4.0885772745483251e+01
-1.7915191791268544e+01
-2.5857699077816637e+01
--5.6021547972095064e+01
--1.0194322782008333e+01
-1.7052164335901598e+01
--3.7623028196743476e+01
-1.2436424586950536e+00
-2.0784889719647122e+01
--4.5926681932528517e+01
-3.9227296245096444e+00
-2.0970618517235970e+01
--4.6436673723596648e+01
-1.6621479893176417e+01
-2.4583980935681907e+01
--5.4599196943428581e+01
--1.1054422104891598e+01
-1.7158112423150239e+01
--3.8243863296410751e+01
-1.3229815345268270e+00
-2.0734263617165752e+01
--4.5989794568357986e+01
--8.6703081495205705e+00
-1.7426646410599485e+01
--3.9290589352076708e+01
-1.4695977813464964e+01
-1.0836377340364361e+01
--3.2069701665912937e+01
-5.7588796563908424e+00
-2.1860846872955847e+01
--4.8962358432371346e+01
-1.2975741493916697e+01
-1.0132922831819966e+01
--3.0468423325389715e+01
-1.2311604726927966e+01
-7.2940015353180474e+00
--2.5837881504101787e+01
--9.0480809903454151e+00
-1.7357122369102402e+01
--3.8868661738538343e+01
--9.0336811118210676e+00
-1.7315455894857873e+01
--3.8823693689537983e+01
-6.3083348664553354e+00
-2.2806139759320519e+01
--5.0732136856534488e+01
--7.0312971418555623e+00
-1.8007674239810672e+01
--4.0494104411574220e+01
-1.8533515686842250e+01
-2.4690341821375672e+01
--5.5955099735038054e+01
-1.0723834913784605e+01
-2.2936731488442984e+01
--5.1924521004442660e+01
-1.2465630987529208e+01
-7.2189838446262948e+00
--2.6171313376852304e+01
-1.6660723826493378e+01
-2.3834740780677286e+01
--5.4586782270832067e+01
--8.9529237252344149e+00
-1.7182627094363895e+01
--3.9473342319368449e+01
--3.3542737175632871e+00
-1.8805139632682508e+01
--4.3311228085847503e+01
--1.2538880866933882e+01
-1.5784262777300254e+01
--3.6141431725013575e+01
-2.3507456542080050e+01
-2.7043482686215683e+01
--6.2049122195388115e+01
-1.3867787090907354e+01
-2.4457876072736802e+01
--5.6249490263401782e+01
-1.1807361079883531e+01
-7.3320257775710749e+00
--2.6361860691501548e+01
-1.3029970498669941e+01
-9.8483743204717094e+00
--3.0990453512996417e+01
--4.0902573115164049e+00
-1.8528960988798620e+01
--4.2822362805479706e+01
-1.0869716522089313e+01
-2.2865727350755769e+01
--5.3151482833537870e+01
-1.2863251594822955e+01
-9.6764018723389000e+00
--3.0618093688413037e+01
-1.2620676068634801e+01
-1.1362677549262754e+01
--3.3692951922981557e+01
--9.0086960919498225e+00
-1.6875598055707155e+01
--3.9586770110145473e+01
--1.2370207225250047e+01
-1.5858860666184066e+01
--3.6708414323554770e+01
-1.0781366969056482e+01
-2.2359975783573859e+01
--5.2247753305747082e+01
-1.1756108696295026e+01
-1.0556012577610277e+01
--3.2267988194723699e+01
--1.2148346019218536e+01
-1.3971272054409372e+01
--3.3668250957911248e+01
-1.2608269105358287e+01
-1.1184246044570139e+01
--3.3575650410247206e+01
--3.4024786448392521e+00
-1.8416976696942992e+01
--4.3507146864828606e+01
--9.0756043602193675e+00
-1.6625035641526416e+01
--3.9533373542236092e+01
-2.1783251988397300e+01
-2.5327273981390693e+01
--6.0281283010163790e+01
-1.1769297875516051e+01
-7.8324430276160113e+00
--2.8079116290181474e+01
-6.9931614470678936e+00
-2.1111863272771963e+01
--5.0312171875674871e+01
-6.4133203213122734e+00
-2.0978293328268197e+01
--5.0315662192662685e+01
-1.2952217645544209e+01
-5.7252373609035168e+00
--2.4784984656542296e+01
-1.3010162574476313e+01
-1.0207157596078563e+01
--3.2730945083781080e+01
-1.1934722376951772e+01
-7.2562722650391223e+00
--2.7277226413067247e+01
-1.2129126161517222e+01
-8.8458853195814324e+00
--2.9984145518952520e+01
--5.9221426138926807e+00
-1.7189989198019262e+01
--4.1838927636741531e+01
-1.1532055712249926e+01
-1.0823405104265561e+01
--3.3564359078162880e+01
-1.3277886277317338e+01
-1.1059206741601564e+01
--3.4574186399876936e+01
-1.3335449539708641e+01
-1.1099074961903391e+01
--3.4678802168886051e+01
--1.0732423565053779e+01
-1.6432437093218642e+01
--3.9526586365280544e+01
--1.0706593646512504e+01
-1.6093228689472209e+01
--3.8550124480558225e+01
-4.0361828456177493e+00
-1.9843104377027757e+01
--4.8526359911613277e+01
-1.3052150070398257e+01
-9.7322605220752880e+00
--3.2265783963108184e+01
--9.4474131780450126e+00
-1.6388158328222030e+01
--3.9586124858587866e+01
-1.3608319177467449e+01
-1.0051809113424717e+01
--3.3193804142285131e+01
-1.2160358516832481e+01
-6.1282297207579512e+00
--2.5725066171440766e+01
-1.2666013262058071e+01
-1.0052711737423207e+01
--3.2780119321421473e+01
-7.2599570924613159e+00
-2.1176437636141831e+01
--5.1757331461551018e+01
-1.2011386751312566e+01
-9.2123907772133187e+00
--3.1275902170269752e+01
--1.0400287142742538e+01
-1.5965987210232607e+01
--3.9193114909591962e+01
--6.2002653802752272e+00
-1.6936280530874939e+01
--4.1982129945054240e+01
-1.2530621727355074e+01
-9.2616320459410044e+00
--3.1577102948436078e+01
-1.4056477786477590e+01
-2.2700628101058548e+01
--5.6208684847699530e+01
-8.8314506367129511e+00
-2.0757943579949128e+01
--5.1615294108066827e+01
-1.2397927464867537e+01
-6.6467839458986475e+00
--2.7122450496744825e+01
-1.2409388069567438e+01
-4.5356302198818472e+00
--2.3567747034676373e+01
--6.0341030573499186e+00
-1.6754122461495104e+01
--4.2308598222176379e+01
-1.3729338901618329e+01
-3.7350988237881526e+00
--2.2498432682272792e+01
-1.5691217868984539e+00
-1.8942625443965504e+01
--4.7899457670233517e+01
--1.2381353330054417e+01
-1.5433636519031309e+01
--3.8689701803984072e+01
--1.0191716504154616e+01
-1.5888279701188219e+01
--4.0146507319966730e+01
-1.3795857847436364e+01
-2.1073137751642136e+01
--5.4706935253290908e+01
--6.5708308646820237e+00
-1.6457022057030567e+01
--4.2268695160397648e+01
-1.1742586013963535e+01
-5.6494332870847535e+00
--2.6037076800644297e+01
-1.3806957879379397e+01
-9.9625841955142462e+00
--3.4532966828204621e+01
-9.5229383225644426e+00
-1.9976765238859016e+01
--5.1849812729277367e+01
--5.1427407450085907e+00
-1.7133256096756021e+01
--4.4117718295396010e+01
-1.2678652131284963e+01
-8.4479660962206715e+00
--3.1570463975859631e+01
-8.8624465991389147e+00
-2.0922320220035214e+01
--5.4198769479216537e+01
-1.3192556663278220e+01
-4.6656726404210680e+00
--2.4845910071611282e+01
--9.0528791323623654e+00
-1.5563400298561255e+01
--4.0694147467142017e+01
--9.4291682700036253e-02
-1.8131681775186156e+01
--4.7112637467952865e+01
-7.0399685187533256e+00
-2.1418393541398657e+01
--5.5168750139394220e+01
-1.2604856792890669e+01
-6.0825765923219990e+00
--2.7714777731129004e+01
--9.2469265391072875e-01
-1.7758522034141855e+01
--4.6781448321660591e+01
--2.7341567178707371e+00
-1.7247979661958407e+01
--4.5625759015004107e+01
-1.1517497849557383e+01
-1.0032911555828392e+01
--3.5034499864006300e+01
-7.8229041339728855e+00
-1.9732357971628730e+01
--5.3050452116795142e+01
--1.1245242053929498e+01
-1.5157922408524739e+01
--3.9928895779926158e+01
-5.7095249172580842e-01
-1.8215907230384961e+01
--4.8556571174089143e+01
-9.3280904999031709e+00
-2.0107148849116971e+01
--5.4602417791169451e+01
--1.2206293196524125e+01
-1.2762484657167052e+01
--3.5041807384727285e+01
--3.0619352558563242e+00
-1.6977897397383749e+01
--4.5867776021348405e+01
-1.2111540159517361e+01
-5.8495514351076521e+00
--2.7610789615167803e+01
-1.2832508408796258e+01
-5.9525653672722987e+00
--2.8476286251425471e+01
-9.2941490774866473e+00
-1.9977293826233183e+01
--5.4670006845014349e+01
--1.2138680350133642e+01
-1.4382043949874392e+01
--3.8471737009884194e+01
--8.4567897008996660e+00
-1.5298096431343970e+01
--4.1715950564729447e+01
--1.2500500235766467e+01
-1.4532841342804936e+01
--3.9293638720287973e+01
--4.0588906163731417e+00
-1.6378300126332842e+01
--4.5110854405914580e+01
-1.4247929682756114e+01
-2.2521747186317009e+00
--2.1827794597645166e+01
-1.3085889025519840e+01
-5.0462541438816286e+00
--2.7070399582186088e+01
-1.2786112086853088e+01
-8.0893698031849777e+00
--3.2570025080070856e+01
-4.2830739089769381e+00
-1.8335103048438043e+01
--5.1191986352036672e+01
-1.2370346717238400e+01
-8.9015383109642006e+00
--3.4450409934792148e+01
-9.1290860807917595e-01
-1.7972386415948836e+01
--4.9973435877063601e+01
-1.2586833894669809e+01
-3.4225023740078937e+00
--2.4174507408960412e+01
-1.4279865880771398e+01
-4.0164327820634416e+00
--2.5990987681080338e+01
-1.3907169948615811e+01
-2.6317784481999809e+00
--2.3069847662307190e+01
--1.1158407500714523e+01
-1.4553092453995990e+01
--4.0100739876089996e+01
-1.4390617773897810e+01
-3.8635057139433706e+00
--2.5831151590034271e+01
-1.3248613234102637e+01
-4.2812975354618334e+00
--2.6309572627980220e+01
-1.6125418201725632e+00
-1.7337857005565578e+01
--4.9606560107012548e+01
-8.5471454973831253e+00
-1.9135152979639550e+01
--5.4776154087010930e+01
-5.9003237467599687e+00
-6.1641839741097149e-01
--1.7048911679610143e+01
-1.2983445074056565e+01
-5.9877943322166889e+00
--2.9819738337052325e+01
-1.3717435744056209e+01
-3.9418392204884003e+00
--2.5974767737608605e+01
-1.1760564210312463e+01
-4.8445648361835216e+00
--2.6898001327902062e+01
--1.0006415747598526e+01
-1.4410851791639418e+01
--4.1078745001817055e+01
-1.3215730163438062e+01
-9.4317367991380081e+00
--3.7262131950777579e+01
-1.4243608468317360e+01
-3.5932874418080201e+00
--2.5836919634002534e+01
--3.3708886394209272e+00
-1.6042798937334499e+01
--4.6347921968160158e+01
-1.3884953937676846e+01
-4.0734157503426456e+00
--2.6785515673040294e+01
--4.5201064535990048e+00
-1.5912602621912873e+01
--4.5801195364264899e+01
--4.5201064535990048e+00
-1.5912602621912873e+01
--4.5801195364264899e+01
-1.1077320454762500e+01
-5.4629534591637370e+00
--2.8459202640385467e+01
-1.2889046018663526e+01
-4.3233024520834178e+00
--2.6917141489066655e+01
-1.3972369279954206e+01
-3.4605688060634696e+00
--2.5539012208204394e+01
-1.4625146043595365e+01
-1.6929695374459506e+00
--2.2151520770865361e+01
--1.1128989584835731e+01
-1.4359720520447594e+01
--4.1077048590876814e+01
-1.4372794791104118e+01
-2.7221404540499994e+00
--2.4352209180657837e+01
--1.7098744848782496e-01
-1.6847692533232031e+01
--4.9352432611224266e+01
-1.4585590826331151e+01
-2.6862539335735165e+00
--2.4470673129068331e+01
--1.1955841364971443e+01
-1.3761445155048722e+01
--3.9564992242946687e+01
-3.6531775629288965e-01
-1.7159304322097118e+01
--5.0501125096597868e+01
-4.6829609241943260e+00
-1.7665458388139704e+01
--5.2716984995294020e+01
-1.3804806229694654e+01
-3.5579841610123761e+00
--2.6238590582298894e+01
--1.0939618683578413e+01
-1.3852880370924252e+01
--4.0912372717139611e+01
-1.3915976258314725e+01
-3.4702129252993088e+00
--2.6086526848627571e+01
-1.3894315386788737e+01
-3.3914805283694016e+00
--2.6014931078584112e+01
-1.4199249233099568e+01
-2.6946853876138785e+00
--2.4789524574808482e+01
--1.3070829491367007e+01
-1.3568385981821111e+01
--3.9814935402349697e+01
--9.3987756497574058e+00
-1.3475489660208833e+01
--4.0473792614294837e+01
--9.2955972081477523e+00
-1.4326767985761665e+01
--4.2553483133306294e+01
-1.4470856848489573e+01
-2.2709842132202613e+00
--2.4259799541882124e+01
--1.2596868841105010e+01
-1.3210600203647523e+01
--3.9062039657081861e+01
-1.4460471061704833e+01
-1.2929259144957077e+00
--2.2186371158088807e+01
-1.4460471061704833e+01
-1.2929259144957077e+00
--2.2186371158088807e+01
-1.3658178838532454e+01
-3.2433925330237607e+00
--2.6167682197829407e+01
-3.0608860597419696e+00
-2.9273874398762203e+00
--2.2222968942662281e+01
-1.3770006473049220e+01
-2.6614782577165550e+00
--2.5058237976077113e+01
-1.4440005573797070e+01
-1.3046067559319803e+00
--2.2288824227950634e+01
-1.6677444914465474e+00
-3.1791815933345342e+00
--2.2299707704131940e+01
-1.4265187498530800e+01
-2.5699230892207119e+00
--2.4976507070229847e+01
-1.4148333271925106e+01
-2.5798458384162042e+00
--2.4994625101724285e+01
--1.2956026448755297e+01
-1.3253436938754211e+01
--3.9811116663103142e+01
-1.8337639590407626e+00
-3.1305566661964237e+00
--2.2376494098353199e+01
-3.2820078233632923e+00
-2.9836406396441104e+00
--2.2514221541882065e+01
-1.4173802083670992e+01
-7.6214027682372008e+00
--3.5896814784123350e+01
--7.1926980304208508e+00
-1.4700696149298190e+01
--4.4497494512380648e+01
-1.4506794762140151e+01
-2.7822207198446862e+00
--2.6001197951772919e+01
--7.0685511155782610e+00
-1.4608560158780636e+01
--4.4696419197151087e+01
-1.4163035563062813e+01
-2.8929970648984042e+00
--2.6151880087341830e+01
--7.6001045809515011e+00
-1.4105421902429150e+01
--4.3819003054145142e+01
--1.2124453772570392e+01
-1.3242926536298025e+01
--4.0622574828960580e+01
--1.4758449752373841e+00
-1.5598102888022662e+01
--4.8776212455522789e+01
-3.4575712288587050e+00
-1.6928858846944575e+01
--5.3115603042994294e+01
--9.7779395710167414e+00
-1.3823689381329224e+01
--4.3006087984049323e+01
--3.3312813724140922e-01
-1.5957591707683006e+01
--5.0646142308826889e+01
-2.5258798469681425e+00
-1.8131744573609068e+00
--2.0425905679004995e+01
-1.3089233228939992e+01
-3.9979391311235970e+00
--2.8836455202981149e+01
--1.5205323934589874e+00
-1.5381982103598208e+01
--4.9078687858751898e+01
--9.7140129824458263e+00
-1.3741979991095846e+01
--4.2775251272072509e+01
--1.1281899900506922e+01
-1.3390788405433723e+01
--4.1886406700259379e+01
--9.8668702070390584e+00
-1.3630744165442733e+01
--4.2638711060799402e+01
--7.1441894886100004e+00
-1.4401695788867855e+01
--4.5209233040463936e+01
-1.4785494914739116e+01
-7.9095143932963152e-01
--2.2623124605321035e+01
--1.0293304066160673e+01
-1.3465275083164602e+01
--4.2448835071740426e+01
--3.5337240777527956e+00
-1.4774293026051012e+01
--4.7335211336627907e+01
-2.1816173284907863e+00
-1.6425966197345414e+00
--2.0174834832553000e+01
--1.3831406825049597e+00
-1.4982802547738244e+01
--4.8670667021818183e+01
--1.0578705140472014e+01
-1.3117123589190490e+01
--4.1944031272283539e+01
--7.1487250209493558e+00
-1.4037725138004651e+01
--4.5074441244271618e+01
-1.4433358564842289e+01
-2.3037136735327643e+00
--2.6221225858462830e+01
--4.9398223601103214e-01
-3.0791836054947228e+00
--2.2728413699410670e+01
-2.4475339950111472e+00
-1.6590007917673943e+00
--2.0555391511505537e+01
-1.4577144869261112e+00
-1.8308953931045779e+00
--2.0619596270901209e+01
-1.5119593345699809e+00
-1.7856558811120127e+00
--2.0581173938300381e+01
-7.4884418868083336e-01
-2.1022462216058222e+00
--2.1002549415269399e+01
-1.3511924946335755e+01
-3.0502106262462760e+00
--2.7740288740972254e+01
-1.6663651403483584e+00
-1.6879923662421548e+00
--2.0604027656736513e+01
-1.3749215104450543e+00
-1.8023974422609181e+00
--2.0774066746850366e+01
-1.4222708169161324e+01
-1.8651134741868474e+00
--2.5589061303501961e+01
--1.1059875653369678e+01
-1.2739627347226627e+01
--4.1802207627189517e+01
--6.9620681286144688e+00
-1.3948212641877252e+01
--4.5924209821835184e+01
--3.9174474175955636e+00
-1.4677272759939230e+01
--4.8648611462676563e+01
--1.1252081040120846e+01
-1.2876811339241746e+01
--4.1877590820667528e+01
--6.0949286108055800e-01
-2.6947754492836236e+00
--2.2439885610510164e+01
-1.2318535037300155e+01
-4.2959505010146968e+00
--3.0729838855538542e+01
--1.0267608035315183e+00
-3.2719992707802494e+00
--2.3665261635965841e+01
--5.6923477821883948e+00
-1.3945510007971102e+01
--4.6855753032198905e+01
-1.3934016547131245e+01
-1.4923080764327343e+00
--2.4937169259434494e+01
-4.6552916472007642e+00
--1.6800872206507942e+00
--1.4481044781836349e+01
-4.6552916472007642e+00
--1.6800872206507942e+00
--1.4481044781836349e+01
-7.7101100712701742e-01
-1.7253199827014645e+00
--2.0865131870124660e+01
-6.9571262337438613e+00
-1.3337596156096064e+01
--5.0106129840944412e+01
-1.4671977788034285e-01
-1.9565557400063658e+00
--2.1332248997732005e+01
--1.7952121607952706e-01
-1.5118389054264750e+01
--5.1889056774837172e+01
--1.0268393635749984e+00
-2.7016038143845122e+00
--2.2626703087921761e+01
-9.9010218891547264e-01
-1.5208536800536969e+01
--5.2585884876069670e+01
-1.0078357719448288e+00
-1.5428695337124172e+01
--5.2973575321861155e+01
-1.5422836614371840e+00
-1.5279521668645121e+01
--5.3072277963236964e+01
-9.5591919078766818e-01
-1.5007998099927213e+00
--2.0680718891619048e+01
-2.8729932086580201e-01
-1.6634099110942158e+00
--2.0992507673638272e+01
-4.7887109247225954e+00
--1.8466101031869027e+00
--1.4579370570818796e+01
-2.4530793865938622e-01
-1.6233150515172097e+00
--2.0976023255789908e+01
-5.9291917520483066e+00
--8.1325988563789930e-01
--1.7511498105613189e+01
-1.3962508691560464e+01
-1.2302411392498205e+00
--2.5351269392975325e+01
--1.0015914368611103e+01
-1.2606378777568914e+01
--4.3619779095877924e+01
-1.1734671478773199e+01
-4.0422271321665280e+00
--3.0797851178554303e+01
--5.8208687723970538e+00
-1.3806899401236874e+01
--4.7570686826942435e+01
-1.4995092648915652e+01
-1.0508780933265351e+00
--2.5682659992800129e+01
-1.4805951922410667e+01
-9.6640660152166735e-01
--2.5329069221156256e+01
--4.5421620078026892e-01
-1.8983940374694599e+00
--2.1546097163596691e+01
-1.1212037886351468e-01
-1.4358930465879520e+00
--2.0692004637592746e+01
-1.3170829698058782e+01
-2.3778362685650780e+00
--2.8005140700598183e+01
-1.2519924255790311e+01
-3.8047744864181738e+00
--3.1306099687028009e+01
-4.2417857651635584e+00
-1.2694593617101349e+01
--4.9221769932697555e+01
-1.3136000416028498e+01
-2.7329454810781360e+00
--2.9080181883127011e+01
-5.1561626581107252e+00
-1.2598692064413527e+01
--4.9849911582189314e+01
--1.1065471167513061e+00
-2.6233106751260751e+00
--2.3278769776088293e+01
--1.1495535579466408e+01
-1.2206683826899502e+01
--4.2811009214336792e+01
-1.3212187929164074e+01
-2.4175695600204326e+00
--2.8649743665604518e+01
--1.0417494999399707e+01
-1.2273919843488931e+01
--4.3638867295535064e+01
--7.4987503456006888e+00
-1.2989111231173670e+01
--4.6402166522911564e+01
--6.8776036700523466e+00
-1.3085964300779340e+01
--4.7234901351759589e+01
--9.5798946455829874e+00
-1.2532714538254432e+01
--4.4648701022577640e+01
-1.3817973029494791e+01
-9.3210026416773084e-01
--2.5729116715947612e+01
-1.4158015923098564e+01
-1.3111831754240706e+00
--2.6867436535979120e+01
--9.7559388733737873e-01
-2.1757714659173613e+00
--2.2875549104459207e+01
--1.3230309087204120e+00
-2.1964613928421945e+00
--2.2763726599889850e+01
--3.8123377771176914e+00
-1.3344318605224879e+01
--4.9556743680394938e+01
-3.1798497752903226e-01
-1.0921797654521423e+00
--2.0745339890029900e+01
--9.9482070472628621e+00
-1.2395586345756586e+01
--4.4557445223237792e+01
-1.4178736942567925e+01
-1.3911091178104757e+00
--2.7224789900999724e+01
-1.3083946057960755e+01
-2.5685409541442508e+00
--2.9559769877321852e+01
-1.3887312441855219e+01
-1.0674498264199099e+00
--2.6401511448482335e+01
--1.1139694307891721e+00
-1.9191339650736117e+00
--2.2199155775471297e+01
-1.3043350225184986e+01
-2.8969638007524097e+00
--3.0701270656233348e+01
--5.0404781680413944e+00
-1.2897754669174576e+01
--4.8871196303376912e+01
--5.7453241089481786e+00
-1.3065684824922959e+01
--4.8796545920180336e+01
--1.1277644625729488e+00
-1.6699618240628844e+00
--2.2141852113008841e+01
-1.4072677598141020e+01
-8.0086458377995551e-01
--2.6617277195696726e+01
-5.4403809373042149e+00
--1.9465504886235219e+00
--1.6034844334678034e+01
-7.6868400371469581e-01
-6.3286333327230115e-01
--2.0506587706180284e+01
-1.4030360527971629e+01
-1.4287870445014539e+00
--2.8335682651396048e+01
--1.1366350626330016e-01
-9.1505209400917809e-01
--2.0850753183963249e+01
-2.2167918655647658e+00
--8.8160755056512566e-03
--1.9713785658305582e+01
-5.2443836971939088e+00
--2.2050162483690845e+00
--1.5592172231668524e+01
-2.4086837870200779e+00
-1.5596118385902732e-01
--2.0032720763634707e+01
-1.3940178214221485e+01
-6.5019398930950356e-01
--2.6722922886245165e+01
-1.3005894571038167e+01
-2.3581073915327897e+00
--3.1044537231423039e+01
--1.8756504824433020e+00
-2.8188110597187364e+00
--2.5813182169784881e+01
-1.2970594481970619e+00
-1.7747683201439127e-01
--2.0247418719609701e+01
--1.0619349857863639e+01
-1.0466295101345672e+01
--4.3725503493977534e+01
--2.5320206718772997e+00
-3.5508570204989964e+00
--2.8059455351045617e+01
-1.3462199522586181e+01
-1.0535582118445137e+00
--2.8612900267125692e+01
-1.2484985040064405e+01
-7.6002508792954337e-01
--2.7435085389605312e+01
--1.4805013419729958e+00
-1.2450037559868830e+00
--2.2294318713431100e+01
-1.4239162767565100e+01
-7.6987131027830702e-01
--2.8719971360056789e+01
--2.0592495851459187e+00
-2.4814832301386867e+00
--2.5511288934301046e+01
-1.4072571353070749e+01
-4.5107184709729464e-01
--2.7931928610491738e+01
-3.6929240188880724e-01
-1.5326794999775847e-01
--2.0316233926149994e+01
-3.6929240188880724e-01
-1.5326794999775847e-01
--2.0316233926149994e+01
--7.7247305033653264e+00
-1.1616858956634463e+01
--4.7982909795144273e+01
-1.4372142485077170e+01
-3.2673176155146422e-01
--2.8055201872601231e+01
-1.4210966367060875e+01
-3.6249884539398208e-01
--2.7928838563913541e+01
--5.5050607933822837e-01
-4.9148415621680708e-01
--2.1151017623676410e+01
--2.1130221269481835e+00
-2.2490349210224134e+00
--2.5260844623635553e+01
-2.8621245372438553e+00
--4.0778684601032450e-01
--2.0166271664241076e+01
-1.5425160584315505e+00
--2.6330860994733984e-01
--1.9975651323235990e+01
--2.0129757007023348e+00
-1.6017674268929398e+00
--2.3677705248418047e+01
-2.6589236781998489e-02
-1.2149052491120051e-01
--2.0707736576385727e+01
-1.3886921630120614e+01
-7.3385009813636592e-01
--2.9435332842849967e+01
-6.2721484014580104e+00
--1.9177885590525987e+00
--1.8522132646801612e+01
-3.3830364611669284e+00
--5.9101566525126215e-01
--2.0577987109578757e+01
-3.3830364611669284e+00
--5.9101566525126215e-01
--2.0577987109578757e+01
--2.8616571506102559e+00
-2.7360062047409777e+00
--2.6973116008836474e+01
-1.3363962243090953e+01
-9.4429760287813180e-01
--3.0330463596766222e+01
--2.0276770051663662e+00
-1.2644092086851426e+00
--2.3431234323315561e+01
-9.6148342406645027e-01
--3.8731725206247603e-01
--2.0373969072750111e+01
-9.6148342406645027e-01
--3.8731725206247603e-01
--2.0373969072750111e+01
-2.4246471473075100e+00
--6.7713511233370793e-01
--2.0320847174579956e+01
--1.9626357843078384e+00
-1.1423377720596093e+00
--2.3362949801426716e+01
--5.9365198411109280e-02
--1.0500238316733698e-01
--2.0767039658552100e+01
--2.4623923575197058e+00
-1.3856022782309707e+00
--2.4134370689865769e+01
-9.5630344503497289e-01
--5.2808156413116680e-01
--2.0404313287881667e+01
-5.9329527623702543e+00
--1.1594339378041034e+00
--2.1312918583077877e+01
-2.6326076651136741e+00
--8.9014511487051551e-01
--2.0526643758463603e+01
-2.6010773985139299e+00
--8.6086293339704112e-01
--2.0549344522728955e+01
--1.7556139143024487e+00
-5.8876041532854040e-01
--2.2611373245240806e+01
--1.7532250512780287e+00
-5.8524004483150915e-01
--2.2611583419854828e+01
-2.1023815821416765e+00
--8.1558295447356244e-01
--2.0513697492734483e+01
-1.4384097900247577e+01
--7.9049222365474459e-01
--2.7759726739253438e+01
-1.4281590567071875e+01
--8.0696014789529635e-01
--2.7405714055234501e+01
-7.1932961528548070e-02
--4.1712515538711437e-01
--2.0797147707505300e+01
-1.4268298733742471e+01
--7.1578589106940760e-01
--2.8007769840931690e+01
--1.7058234520256688e+00
-4.8138564358610630e-01
--2.2655098277055799e+01
--1.7058234520256688e+00
-4.8138564358610630e-01
--2.2655098277055799e+01
-3.4595738163798362e-01
--5.8555660352424732e-01
--2.0630137382727209e+01
-1.2098110368189345e+00
--8.3148895615164375e-01
--2.0457447631728773e+01
-2.9817808919439135e+00
--1.1625257774802831e+00
--2.0515133493206452e+01
-2.5936383487085717e+00
--1.1445040883842683e+00
--2.0550773278849160e+01
--1.2551177630839261e+01
-9.5495871240224304e+00
--4.5162311582832345e+01
--2.1228265031213711e+00
-3.3998860760290761e-01
--2.2702200076416048e+01
--3.8361020296554980e+00
-1.4315459264045627e+00
--2.5208295500813822e+01
--3.8270934889157262e+00
-1.4379337220408710e+00
--2.5246172700202113e+01
-1.4363798775191327e+01
--9.3638754561152326e-01
--2.8771852315844477e+01
-3.2969883598421346e+00
--1.4445269432077426e+00
--2.0546347463389338e+01
-3.9295967944699024e+00
--1.5493548821944425e+00
--2.0775976312651679e+01
-6.1337740345179839e+00
--3.1187741828130631e+00
--1.8118157759078468e+01
--3.3301602257443910e+00
-7.9907476993272053e-01
--2.4532073451226545e+01
--2.5723825696205380e+00
-1.6267287647769932e-01
--2.2997429437307211e+01
-1.4728515053414606e+01
--1.7529674792851984e+00
--2.7831896912438118e+01
-1.6118871201235903e+00
--1.5659309875856300e+00
--2.0211011580679262e+01
-1.8103295146261857e+00
--1.5578760222360699e+00
--2.0200626907445351e+01
--2.5398118224403414e+00
-7.9724753955254468e-02
--2.3052478593885635e+01
--1.5820670252511626e+00
--5.1940655360236521e-01
--2.1650449205230821e+01
-1.5316542173025498e+01
--2.5028278818002887e+00
--2.6134745970607007e+01
-1.4747602882842521e+01
--2.0141777018054743e+00
--2.7739297507916003e+01
-1.4605206452453164e+01
--1.3902310241359850e+00
--2.9896707774382673e+01
-1.2865249460190109e+01
--1.4414006393843108e+00
--2.8011584711551116e+01
--3.8045395586776456e+00
-5.1070033395974224e-01
--2.3933257370967755e+01
-1.5244738746542152e+01
--2.2483395994125250e+00
--2.7594877086266919e+01
--3.8132978008505685e+00
-4.8228145999364475e-01
--2.4125578959379610e+01
--3.6627172516665896e+00
-4.8074901740981497e+00
--3.9160073111006589e+01
--1.4392927968649787e+00
--9.1801121512623018e-01
--2.1411854780101741e+01
-6.0228298232410937e+00
--3.4323473253442618e+00
--1.8334918585000580e+01
--1.2452943534195973e+00
--1.1293702073320964e+00
--2.1173091374665159e+01
-3.5636474387252826e-01
--1.7100883552150556e+00
--2.0304995412589111e+01
--1.2889675233971261e+00
--1.1622468444080936e+00
--2.1195800453429740e+01
-1.4963926281864033e+01
--2.5826922747059098e+00
--2.7860323846138424e+01
-4.4252723292989842e+00
--2.5960969273199042e+00
--2.0239527753024092e+01
--2.9119867349191320e+00
--3.9881512983244066e-01
--2.2861433515881981e+01
--3.7482767846515874e+00
--1.3059890560951268e-01
--2.3331640730481766e+01
--1.6799562545560422e+00
--1.0273774020175868e+00
--2.1574078956074818e+01
--1.7220718622165854e+00
--1.0210882289417924e+00
--2.1603217911825112e+01
--8.4923654353465450e-01
--1.3883503948304707e+00
--2.0744701937179499e+01
-1.4909117663679217e+01
--2.7791996710074574e+00
--2.7950807630304880e+01
--1.8470307124267418e+00
--1.0091602013602439e+00
--2.1732098655844744e+01
-3.4518926322144203e+00
--2.5513414893127933e+00
--2.0156765439898024e+01
-1.4920212410082319e+01
--2.6700639019428736e+00
--2.8173383913360997e+01
--1.7923563907838096e+00
--1.0779380717574012e+00
--2.1721477262228806e+01
--1.7965684395162678e+00
--1.0754133918954745e+00
--2.1714299632996390e+01
-4.3484854573551717e+00
--2.7211830719830821e+00
--2.0220232861764874e+01
--1.2628184895156223e+00
--1.3119638265901055e+00
--2.1256397672474083e+01
-6.0017180970307882e-01
--2.0139985099654498e+00
--2.0352895636188091e+01
-9.6227288713343040e-01
--2.1006500247663080e+00
--2.0017815461708015e+01
-2.7014321124002634e+00
--2.7070592791074399e+00
--1.9668091000626951e+01
-4.1992880612326049e+00
--2.8488168162816581e+00
--2.0374670798241432e+01
--3.4320609954712000e+00
--5.8270467984868868e-01
--2.2864826813136844e+01
--2.4932824787676813e+00
--1.0276196023448443e+00
--2.2034372095317575e+01
--9.9227183236746752e-01
--1.5936047682362933e+00
--2.1089204793654183e+01
--7.5893885561209107e-01
--1.6858689567083018e+00
--2.0910802788471873e+01
-5.5962242891660097e+00
--4.0833995043772591e+00
--1.7388232232807024e+01
-4.2068387217353092e+00
--2.8555863597301276e+00
--2.0324856994008471e+01
-1.5212508777207168e+01
--3.4760324087951151e+00
--2.7238113206343865e+01
-1.5212508777207168e+01
--3.4760324087951151e+00
--2.7238113206343865e+01
--3.7346487983873087e+00
--3.9805980520137513e-01
--2.3569460075633856e+01
--1.0909896577360419e+01
-4.6920757342045372e+00
--3.7789237974735734e+01
--5.0697725587875047e+00
-3.4146726241499605e+00
--3.7524460991611072e+01
-2.4282424004578815e+00
--2.7174884709803542e+00
--1.9920471326995926e+01
-4.5165124800670808e+00
--2.9472089955553882e+00
--2.0676645350532390e+01
-4.5165124800670808e+00
--2.9472089955553882e+00
--2.0676645350532390e+01
-5.7243717862869703e+00
--4.1041895037422744e+00
--1.7868557255708151e+01
-1.5336736852976147e+01
--3.8752963871805326e+00
--2.6045379060859950e+01
--2.2153861058503179e+00
--1.4903068499503933e+00
--2.1338458098775678e+01
--3.1666496659146603e+00
--1.0233920027646561e+00
--2.2524914460275117e+01
--2.8163363098897123e+00
--1.4506432531653191e+00
--2.1454805076068961e+01
--3.2745601670148332e+00
--9.8913099097792312e-01
--2.2756737972679993e+01
--3.4491867835417587e+00
--9.9421910106526790e-01
--2.2725840371751048e+01
--2.3674587521505193e+00
--1.6593361841682175e+00
--2.1154096522395822e+01
--4.4822584731555928e+00
-2.5419747747544306e+00
--3.6205899875469107e+01
-1.5622254292464033e+01
--4.1028361540634091e+00
--2.6618077111190388e+01
-2.1793994060318544e+00
--3.0017767981846935e+00
--1.9707701740084403e+01
-2.8795411753455404e+00
--3.1309004581989561e+00
--1.9891308368945850e+01
-1.4931655833054513e+00
--2.9632712901356153e+00
--1.9632641427752006e+01
--3.2617941960381680e+00
--1.1401920038781423e+00
--2.3154276797804577e+01
--2.6822186716938181e+00
--1.7687608975906326e+00
--2.1870616202762537e+01
--2.6827720083830089e+00
--1.7712593079798213e+00
--2.1870650357063766e+01
--1.2020610655096531e+00
--2.5037374204982585e+00
--2.0173498745047166e+01
--9.0039426966553482e-01
--2.6275127827565741e+00
--2.0016829951172387e+01
-1.7550894283938931e+00
--3.2557684030173286e+00
--1.9822560819163524e+01
--8.2367014816592192e+00
-2.7375404328364543e+00
--3.6150034717730030e+01
-1.4181807370175619e+00
--3.1802513993540389e+00
--1.9847365118743820e+01
-1.4331173426611134e+01
--4.6373891588360072e+00
--2.5962381439970756e+01
--5.7651525023231809e-01
--2.7207509803680061e+00
--2.0239343384452933e+01
--2.2197825486590142e-01
--2.8766434660102282e+00
--2.0175204188523292e+01
--6.1164886416949598e+00
-6.2697189656527630e-01
--3.0903915371730282e+01
--6.5434335847757561e+00
-7.0465282126228546e-01
--3.0905232842528495e+01
-2.6290293116807826e+00
--3.6785645546650856e+00
--2.0278688188867072e+01
--6.4306450566896334e-01
--2.9418290269465786e+00
--2.0450482887123442e+01
-1.1797864433868361e+00
--3.4801404798846063e+00
--1.9912281060979176e+01
-2.9343742716061261e+00
--3.8429732712921152e+00
--2.0419995120054342e+01
-7.9257077655339636e-01
--3.5502112845683240e+00
--1.9631602550791538e+01
--1.9113709959305634e+00
--2.5855832264180361e+00
--2.1531064277707948e+01
--6.7941483307592980e+00
-1.0849924914050006e+00
--3.4025218822089421e+01
-4.3163007512734426e+00
--4.0562617619190870e+00
--2.1643681778607590e+01
--6.7960142597805149e+00
-1.5247644725711729e-01
--3.0177463043095244e+01
--1.8128354981876105e+00
--2.7258870100857071e+00
--2.1717755132929394e+01
-4.1875097265206849e+00
--4.1249557003755077e+00
--2.1454550124641731e+01
--3.0797665400744250e+00
--2.1650348731011673e+00
--2.3187918360003859e+01
-3.9607877930384801e+00
--4.1394859968231730e+00
--2.1340120842408055e+01
--7.7094761173077497e+00
-7.9527092630112828e-01
--3.3476043870723515e+01
--1.2430106598214742e+01
-2.1991421201877204e+00
--3.5101595976652469e+01
--8.4628563598809539e+00
-1.0386663020605837e+00
--3.3919215535114375e+01
--6.7977173957680206e+00
--2.6104071934963041e-01
--2.9590265496718008e+01
--2.7638810267886873e+00
--2.5281950931595949e+00
--2.2642803378936190e+01
--1.7478363897301463e+00
--3.0234102821185433e+00
--2.1747009390511028e+01
--1.2070624633966847e+00
--3.3430567734651109e+00
--2.0943934951554009e+01
-7.9547088496706042e-01
--3.9147194947476391e+00
--2.0545470605736817e+01
-3.7512782315605411e+00
--4.4064030890253241e+00
--2.1539894413214366e+01
-7.3239438283603320e-01
--3.9264882215095582e+00
--2.0482002634415529e+01
-2.8643083351278391e+00
--4.4416027143258932e+00
--2.0744800931369525e+01
--2.6901262404548008e+00
--2.7675330219886254e+00
--2.2917239241238587e+01
--2.4897956680725870e+00
--2.8478259831424042e+00
--2.2676646244970087e+01
-4.4463564258188182e-01
--3.8859264748094793e+00
--2.0780863375847233e+01
-2.9370857669678045e+00
--4.4620374895527375e+00
--2.0958645790650927e+01
-3.6453203470128921e+00
--4.4384336106398239e+00
--2.1663005087210536e+01
-4.7039603599555129e+00
--4.6492060779722948e+00
--2.2256715511101099e+01
-4.5453439901119630e+00
--4.6551484207340001e+00
--2.2144465248324781e+01
--8.5514293514165889e+00
-2.7967123002094696e-01
--3.2956693601728688e+01
--7.4795015527902171e+00
--6.6940857138320842e-01
--2.9152694455999654e+01
--7.2535268113328364e+00
--4.4272874799046613e-01
--3.0723431328144859e+01
-2.0274740169408005e+00
--4.3213136889926274e+00
--2.0751704614945048e+01
--7.1457496949010064e+00
--2.6492876441144780e-01
--3.2553326004164859e+01
-1.0311051647448248e+00
--4.1634327269134577e+00
--2.0774526748025110e+01
--7.2354231358351295e-01
--3.7721160873931168e+00
--2.1475434230865094e+01
-7.4132824031113417e-02
--4.1899265970119215e+00
--2.1210075963513646e+01
-6.9514730910409384e-01
--4.4533723546922239e+00
--2.0929525282881464e+01
--1.9244263794328704e+00
--3.6062779830710481e+00
--2.2339901826804873e+01
-5.0965018167150589e-01
--4.4768534098248249e+00
--2.0990440674955170e+01
-5.9115060362915772e-01
--4.4330090375298203e+00
--2.1347376388291753e+01
-7.8623785629151866e-01
--4.5790715418138443e+00
--2.1208646050690156e+01
--9.0895870288169895e+00
--4.6793455324356320e-01
--3.1922861449114798e+01
--9.1025326902933745e+00
--4.9204987821948765e-01
--3.1659248754800000e+01
--1.9683737647862276e+00
--3.6860708057518896e+00
--2.2414949432082381e+01
--1.9186008354074646e+00
--3.7320176343176730e+00
--2.2355418234983372e+01
--1.8463047310743963e+00
--3.7484907308520086e+00
--2.2316769038243574e+01
--1.8725279332716078e+00
--3.7985927317575041e+00
--2.2116075309897447e+01
-1.6170295786238023e+00
--4.7825449435334111e+00
--2.1104119124686886e+01
--1.9851788285560690e+00
--3.7277782345674222e+00
--2.2398517266351764e+01
--4.9703332937353956e-01
--4.2883495899303199e+00
--2.1397399221061718e+01
--2.5427055290850120e+00
--3.5197203742677559e+00
--2.3411336420914395e+01
-1.5805618121470881e+00
--4.8903287219779870e+00
--2.1347727574475176e+01
--9.2634834309872216e-01
--4.2563526382102905e+00
--2.1850040309468469e+01
--2.2188897548457294e+00
--3.8312266685885912e+00
--2.3229591174050547e+01
--2.2387844554762015e+00
--3.8630930301431130e+00
--2.2943405776547220e+01
--1.9050225057212700e-01
--4.6013876773187556e+00
--2.1447441491337699e+01
--1.0488952025824418e+01
--9.7843253691178977e-01
--2.9985510216644908e+01
--2.6135051240978537e+00
--3.8145197276430549e+00
--2.3536760625299070e+01
--2.4252990762651039e+00
--3.8371893123800627e+00
--2.3513173933218706e+01
--2.5831814784179987e+00
--4.0102800043440432e+00
--2.3489884960123792e+01
--5.0500005483750199e+00
--3.0645493879440164e+00
--2.7744152541797614e+01
-7.3669798032952893e-01
--5.3531763252866202e+00
--2.1391347558384251e+01
--1.2620429692256740e+00
--4.8547774023521573e+00
--2.1984043197621173e+01
--7.0305326083364656e+00
--2.6291290051290095e+00
--2.8848089429604645e+01
--4.6665174607870403e+00
--3.6679237572666574e+00
--2.6027772789846718e+01
--6.8741386097379475e+00
--3.2388525986814183e+00
--2.7994704344680322e+01
--3.3934266655035539e+00
--4.6875922437804043e+00
--2.3430570525190902e+01
--3.2143503207573993e+00
--4.7778916713800141e+00
--2.3636695657019079e+01
--7.2960221659008146e+00
--3.3316994312577215e+00
--2.8076022220244134e+01
-4.2056530051820162e-01
--6.2142214623839491e+00
--2.0971301769895582e+01
--3.0750578798350028e+00
--5.1273645307221676e+00
--2.4078979739458596e+01
--3.5054656149104435e+00
--5.1617779338008605e+00
--2.3847362494545443e+01
--3.8453824462161479e-01
--6.1226778241836355e+00
--2.1773985627114783e+01
--7.7970046111416780e+00
--3.9094575739101947e+00
--2.6710793305863746e+01
--1.6785707094448583e+00
--5.8215893460735479e+00
--2.1947172397093080e+01
--1.7561674123228481e+00
--5.8013829125833007e+00
--2.2258429754045967e+01
--1.7748477220769538e+00
--5.9914452654569272e+00
--2.2579762237238775e+01
--3.5268050240121793e+00
--5.2669436898560154e+00
--2.4493257575618031e+01
--9.2983880332950388e+00
--3.8452717009283779e+00
--2.7089614753487030e+01
-2.8178945495238379e+00
--7.8332955158340960e+00
--1.9167095123742932e+01
-4.8835441295583113e+00
--8.8689804447330101e+00
--2.0309360702476763e+01
-4.5670353311726117e+00
--8.8036500048482633e+00
--2.0303540443716287e+01
-4.9569445253391011e+00
--8.9983867240634332e+00
--2.0008134928073666e+01
-2.2200345719685006e+00
--8.2339385828121294e+00
--2.0767480237019846e+01
-2.4416002140962609e+00
--8.3887815310445824e+00
--1.9230611507483754e+01
--6.4907206469095291e-01
--7.3389828086546824e+00
--2.1524050167333201e+01
-2.2813766283311914e+00
--8.4968716797290824e+00
--2.1565533530510415e+01
-1.9572349618228488e+00
--8.6521273880773588e+00
--2.1472731164344431e+01
--1.4201835357262380e+00
--7.4988714985971532e+00
--2.1744991408687138e+01
-1.7985156737655770e+00
--8.8021019825577937e+00
--2.0516568240450599e+01
--1.0668623252336393e+00
--7.7830763900762099e+00
--2.1276940417546044e+01
--5.1461954653789810e-01
--8.1483794124370341e+00
--2.1157951009142305e+01
--5.8698664640678322e-01
--7.9931075155120563e+00
--2.0991336711603228e+01
-5.2130319187032734e+00
-2.7505860233141366e+01
--4.1302333743787194e+01
-5.1876638526710046e+00
-2.7812628869050496e+01
--4.2708026499791707e+01
-3.3356422173962117e+00
-2.6888134287825356e+01
--4.1622017355966911e+01
-3.3602183700730492e+00
-2.6982575096290990e+01
--4.1653028004802032e+01
-4.7834540618523258e+00
-2.7283201823910662e+01
--4.2453725248922744e+01
-5.4088857017905889e+00
-2.7500403155318644e+01
--4.2577201287907329e+01
-4.9955279847861656e+00
-2.7534312123573756e+01
--4.2827880367888568e+01
-8.5020332838323238e+00
-2.8499653814013062e+01
--4.4258550202244315e+01
-1.1036248622729239e+01
-2.8945722243399572e+01
--4.5044208382164285e+01
-1.1510036524651893e+01
-2.8826929779356021e+01
--4.4725418047370695e+01
-8.6148136058025795e+00
-2.8220952975174455e+01
--4.4084083130062304e+01
-8.3790357609618571e+00
-2.8371915329095238e+01
--4.4364539559327966e+01
-1.2257342482007068e+01
-3.0112946779665343e+01
--4.6949316360182692e+01
-1.8446043906708816e+01
-3.2641458847794524e+01
--5.0260948377034161e+01
-4.3446893924611762e+00
-2.6849358395684582e+01
--4.2479744352453757e+01
-1.4593295376915291e+01
-3.0439428542169953e+01
--4.7347945570021423e+01
-1.5330151384478215e+01
-3.1441223811022994e+01
--4.8722474249496074e+01
-1.2483708759354441e+01
-3.0440272533242695e+01
--4.7536955639975233e+01
-1.2565936470218048e+01
-3.0392219062595128e+01
--4.7392145433919808e+01
-4.6419481373087477e+00
-2.7018471556900415e+01
--4.2782188058136200e+01
-4.7657151318248694e+00
-2.6940899905407793e+01
--4.2791094203316284e+01
-4.7225883039083252e+00
-2.7019719445152212e+01
--4.3372953884817839e+01
-9.7362886535649817e+00
-2.8575759163728414e+01
--4.5569673706314958e+01
-4.9922054105180571e+00
-2.6585785124558324e+01
--4.2867785544406630e+01
-1.7933153803590368e+01
-3.1390872007581070e+01
--4.9896110799330707e+01
-1.5582599280774495e+01
-3.0911637367268689e+01
--4.9176399087196216e+01
-1.0136767909146947e+01
-1.5085055825366018e+01
--2.8433312795578367e+01
-1.1666719375619696e+01
-1.6008478608836221e+01
--2.9592119825019612e+01
-1.6431879028687849e+01
-3.1165320206786419e+01
--4.9720241058542115e+01
-1.0961385554060071e+01
-1.4235448175296558e+01
--2.7441538613321143e+01
--3.8042410788396275e+00
-2.2875853576268586e+01
--3.7795011457765575e+01
-1.1345960515437362e+01
-2.8912888352372573e+01
--4.6779812272518058e+01
-1.2748700999567751e+01
-1.6372347063031253e+01
--3.0340796934517805e+01
-6.8489608888533553e+00
-2.7090073088923315e+01
--4.4066052812505788e+01
--2.0569715722535106e-01
-2.4467086773362336e+01
--4.0124219475263239e+01
-2.8983870604419417e+00
-2.5664362240513235e+01
--4.2133821773514498e+01
-1.1414613983229339e+01
-1.1713592065600679e+01
--2.4636756555531893e+01
--6.7963725512236917e-01
-2.4291624982620721e+01
--3.9940895398341411e+01
-7.0326767487971029e+00
-2.6959412049991062e+01
--4.4131269513462485e+01
-1.2152524813155994e+01
-1.6813704312015741e+01
--3.1146234365579037e+01
-2.4304303694004505e+00
-2.5512032510913038e+01
--4.2097624097103164e+01
-4.5501097375179835e+00
-2.6129978402041544e+01
--4.3139540823301907e+01
-2.2561230784986508e+00
-2.5798707492619837e+01
--4.2313018451328134e+01
-7.9189453423087564e+00
-2.7338588501745747e+01
--4.4969778883159719e+01
-6.3279368320888398e+00
-2.6782146243682430e+01
--4.4172695065658594e+01
--4.7961861968661808e+00
-2.2778195739893434e+01
--3.7995850438136266e+01
-1.2474795253221346e+01
-1.0397403265816047e+01
--2.3273596726386945e+01
--1.2308262628028171e+01
-1.9213948351242347e+01
--3.2769645533061038e+01
-1.4805224212576343e+01
-2.9947920172415504e+01
--4.9396526556520257e+01
--5.4367897972291450e+00
-2.2323827503553566e+01
--3.7795507956519899e+01
-1.1439438358129188e-01
-2.4339063913111275e+01
--4.0974379549963658e+01
-1.3057868037977605e-01
-2.4391899457438640e+01
--4.1015225401724116e+01
--5.8196691483883711e+00
-2.2425304212397485e+01
--3.7946492914558547e+01
-6.3465830612677774e+00
-7.1552475042031354e+00
--1.8497444147008537e+01
-1.7681090549099230e+00
-2.5213454243762545e+01
--4.2238387850797828e+01
-5.8407038457771101e+00
-6.3110061645420377e+00
--1.7438209013857232e+01
-6.3575311472690474e+00
-2.6163614998084896e+01
--4.4052198130807867e+01
-8.8296499640442807e+00
-8.7141250021872789e+00
--2.0884598541513444e+01
-1.4691234485989520e+01
-1.4472736924465034e+01
--2.9198714285733629e+01
--7.7355241526630814e-01
-2.3741020101715574e+01
--4.0472255306827400e+01
-3.8685482389067471e-01
-2.3901369260766138e+01
--4.0848314375589176e+01
-1.2598779233572881e+01
-1.0816870878168029e+01
--2.4192052102491033e+01
--6.0872380968800348e+00
-2.1748189340599303e+01
--3.7298818892622549e+01
-1.3047348318399354e+01
-9.9370396972938106e+00
--2.3082897205350495e+01
-1.4301055921737555e+00
-2.4595059139490431e+01
--4.1940498556615019e+01
--1.1194346803030508e+00
-2.3528795327670146e+01
--4.0312361689007858e+01
-1.8964065477751785e+01
-3.0676898761592323e+01
--5.1433991440239659e+01
-1.2593364670002073e+01
-1.0806213272983154e+01
--2.4320580625183176e+01
-1.3140250679688508e+01
-9.9478051835806589e+00
--2.3259082923129906e+01
-3.3355938131856613e+00
-2.5315066990026423e+01
--4.3365583269830388e+01
-1.6932066922425733e+01
-2.9885864885680249e+01
--5.0501378944761790e+01
-9.6095748462836248e+00
-7.4204023404665476e+00
--1.9655630159995681e+01
--1.1044961715217019e+01
-1.9943880559643816e+01
--3.4734616269833168e+01
-1.3122606270731390e+01
-9.8254153862797757e+00
--2.3227122737373747e+01
-4.3296850799423403e+00
-3.8519834567039171e+00
--1.4306479896084898e+01
-4.3296850799423403e+00
-3.8519834567039171e+00
--1.4306479896084898e+01
-1.3996681116588976e+01
-2.7694117929746444e+01
--4.7424437919545689e+01
-5.1257780121557959e+00
-2.5866696713343185e+01
--4.4442971850060047e+01
-1.2272841303559360e+01
-1.5991954666516158e+01
--3.1483720927510696e+01
-2.0849461493525592e+00
-2.4595406734884008e+01
--4.2465259704565916e+01
-1.3360035018424066e+01
-9.8416296061407067e+00
--2.3363609435102354e+01
-4.2332068097660240e+00
-3.6473341086525921e+00
--1.4113304096533669e+01
-7.6361788530299899e+00
-2.6436863350579852e+01
--4.5772581671635827e+01
-3.0805446448456046e+00
-2.1902720846741088e+00
--1.2101642761934578e+01
-1.4444064113228226e+01
-2.8384802595171330e+01
--4.9059894057306032e+01
-3.6495451849306133e+00
-2.8951121567976514e+00
--1.3206584648813971e+01
--5.3969752213467681e-01
-2.3289149817353934e+01
--4.1045339360248107e+01
--1.2049932950568568e+01
-1.9174536088534939e+01
--3.4271529849214673e+01
--1.2005806480997832e+01
-1.9145631723776443e+01
--3.4265910851073421e+01
--1.0494624770037635e+00
-2.3116223174488244e+01
--4.0820132609494053e+01
--9.8933110348499453e-01
-2.3202934015555190e+01
--4.1071429039982966e+01
-1.8479050123085759e+01
-2.9429911883450668e+01
--5.1515343022679595e+01
-1.7625163423048885e+01
-2.9426152677287284e+01
--5.1634422885266872e+01
--1.6678809933539519e-02
-2.3622664259571451e+01
--4.2001145503726356e+01
-1.8636273099872561e+01
-2.9590598548804454e+01
--5.2176316838408198e+01
-2.4316465860273510e+01
-2.9755894866572284e+01
--5.2939287989436565e+01
-1.4011524430380769e+01
-2.8171016269037878e+01
--4.9911022882667325e+01
-1.2515865653194037e+01
-2.7311052302724619e+01
--4.8638144657398911e+01
-1.1799828839802480e+01
-1.0622441121226144e+01
--2.5093571495091766e+01
-1.2549952822832820e+01
-1.2967006586661883e+01
--2.8494973937626416e+01
-1.4319241655301559e+01
-9.6787656362322476e+00
--2.4508549043832758e+01
-1.4319241655301559e+01
-9.6787656362322476e+00
--2.4508549043832758e+01
--1.1131209409406001e+01
-1.9246997623829646e+01
--3.5161642768031328e+01
-1.2032396075729601e+01
-2.5826254820359914e+01
--4.7047893867917615e+01
-1.2459282019648533e+01
-2.8482813064178906e+01
--5.1080996255595572e+01
-5.7621546197298885e+00
-2.4966124788223180e+01
--4.5532375626981604e+01
-1.5759694636650231e+01
-2.7882863811101199e+01
--5.0665165204265847e+01
-1.2586296310365233e+01
-2.7012560220985787e+01
--4.9604872346339285e+01
--5.5347811247261651e+00
-2.0818175461615589e+01
--3.8617776124592829e+01
-7.7654859096886719e+00
-2.5230726786878975e+01
--4.6551918067435309e+01
--3.2409665452826233e+00
-2.1635054150186214e+01
--4.0563539276608950e+01
-1.5280873332557874e+00
-2.3140710425536607e+01
--4.3436884212201043e+01
-7.7130062637367294e+00
-2.4955595324625470e+01
--4.6786004343797011e+01
-1.4902550410586143e+01
-2.6549694824299440e+01
--4.9548327997347926e+01
-1.4424352642858572e+01
-2.5728076319761072e+01
--4.8560440704753198e+01
-1.5017996275966841e+01
-2.5871704267468534e+01
--4.8995562139028657e+01
-2.1527272923344540e+01
-3.1304533816294793e+01
--5.7830452094638517e+01
--1.1043066951491824e+01
-1.8540399391417100e+01
--3.5323448613585775e+01
-1.0261812429646859e+01
-2.5286463094175005e+01
--4.8320520221302360e+01
-9.7846062272943950e+00
-2.4893637082223233e+01
--4.7476627254263583e+01
-4.6739491755725346e+00
-2.3980869955636336e+01
--4.5738407847774916e+01
-4.5564120856342489e+00
-2.3792321919889083e+01
--4.5263978096472904e+01
--6.8403161664952821e+00
-2.0157802409593700e+01
--3.8709771426958405e+01
-1.0428769405455681e+01
-2.4993166110154686e+01
--4.8019375674579123e+01
-2.0193953362459560e+01
-2.5631938175777019e+01
--5.0005498714482911e+01
-1.1833268076074599e+01
-9.9148461013062477e+00
--2.5621551643748685e+01
-1.0293678090074085e+01
-2.5502342532126196e+01
--4.8721953667629187e+01
-1.4483456889647636e+01
-1.2498322138169119e+01
--2.9968639319183982e+01
-6.3224741921776673e+00
-2.5217939125093629e+01
--4.7988077074743373e+01
-1.1896822155285678e+01
-1.3803601650564012e+01
--3.1524065823252322e+01
-1.1146470127038874e+00
-2.2745364003664680e+01
--4.3691992342424719e+01
--1.1658871462137659e+01
-1.8135012683695336e+01
--3.5440606786931049e+01
--8.9944151310462264e+00
-1.9178234226512316e+01
--3.7368418210231056e+01
--7.0885325701620685e+00
-1.9450963951927722e+01
--3.8091032890693356e+01
-1.2188861507094046e+01
-2.5439768886645389e+01
--4.9129456595025324e+01
-1.0552143153572462e+01
-2.5256720269129922e+01
--4.9026233541902059e+01
--1.1114132182460150e+01
-1.8323327045451556e+01
--3.5911029345049378e+01
--7.2655349789908783e+00
-1.9377644177267722e+01
--3.8032329052382892e+01
-1.3269125183993955e+01
-2.6132628494428545e+01
--5.0568458821205027e+01
-7.6904823008897036e+00
-2.4292022046031704e+01
--4.7371314509720449e+01
-9.4629162355172181e+00
-2.5184340847424220e+01
--4.9045496893744946e+01
--2.3419037504846667e+00
-2.1222363063703774e+01
--4.1534283791761226e+01
-1.3849104610757601e+01
-1.3912548798172963e+01
--3.2790531797757261e+01
-1.7433432610627065e+01
-2.8038702505914355e+01
--5.4458142442576140e+01
-2.3299208039453568e+01
-2.6648429277045047e+01
--5.3072502308594260e+01
--8.5935517311459915e+00
-1.8864333278602032e+01
--3.7358819210512110e+01
-1.1127769218158981e+01
-1.2491626621454969e+01
--3.0503484563588614e+01
-1.1568612925457561e+01
-1.1440789443738336e+01
--2.8992763519421992e+01
-9.6284640864416904e+00
-2.4736900216921427e+01
--4.8912645428868245e+01
-8.5346256568719863e+00
-2.4120092168993523e+01
--4.8059149628121169e+01
-1.5397747724087809e+01
-2.6308411541852706e+01
--5.1934201094213016e+01
-1.2759514866508997e+01
-1.1245518011247222e+01
--2.8792661376788622e+01
-1.7302493525259639e+01
-2.5302037707702098e+01
--5.0924550187126634e+01
--8.2021619831745607e+00
-1.9151372780128696e+01
--3.8306490528827425e+01
-1.2629707669534467e+01
-2.4229413985313322e+01
--4.8690638386821327e+01
--8.6412739979962101e+00
-1.8967305174540243e+01
--3.8261751215671033e+01
--8.6869858279515544e+00
-1.7616806705497197e+01
--3.6079422496850157e+01
-7.2422763800634904e-01
-2.1886854617250403e+01
--4.4053517663861918e+01
--1.4212347630287263e+00
-2.1128021689871709e+01
--4.2743680374594454e+01
--1.1508728459704841e+01
-1.7609017845234369e+01
--3.5786950365818100e+01
--7.7549060360669451e+00
-1.8987669182049810e+01
--3.8841825156826694e+01
--7.6795617018825997e+00
-1.8638240041500879e+01
--3.8369531070210122e+01
-1.8448191726865602e+01
-2.5553320504380633e+01
--5.2023270663982117e+01
-1.6007111733848681e+01
-2.5944989841411715e+01
--5.2515840741441167e+01
-5.4652554137180287e+00
-2.2735709236627358e+01
--4.6137835207489324e+01
--5.7713628881144121e+00
-1.9520840572420301e+01
--3.9842616166975084e+01
-6.6761893864973283e+00
-2.3362675000344225e+01
--4.7547576048669598e+01
--1.2742119737691553e+01
-1.7098408248047331e+01
--3.5019117498118142e+01
-6.0477166311702071e+00
-2.3099020227840025e+01
--4.7110409660224917e+01
--4.3042668807365008e+00
-1.9995624634753515e+01
--4.0966015608230158e+01
-1.2470479930951766e+01
-2.3980725923790882e+01
--4.9573845569231310e+01
-1.2465180173789095e+01
-2.3921946104027310e+01
--4.9513970962607139e+01
--8.9310666892257515e+00
-1.8651297725401673e+01
--3.8745734052305465e+01
-1.7838625755074428e+01
-2.7285896203848466e+01
--5.5597340877923401e+01
--1.2167638158717244e+01
-1.4963621853211110e+01
--3.2200925520068708e+01
-1.2414457400172806e+01
-6.4046979921239107e+00
--2.2427148051934250e+01
-1.7305527513961469e+01
-2.7307618697909405e+01
--5.5997451453861345e+01
-1.5361136315541479e+01
-2.5423443835718906e+01
--5.2526924198213536e+01
-1.2510850031801196e+01
-7.3158455151552042e+00
--2.4063323733955713e+01
--3.1983882050060641e+00
-1.9845196388600129e+01
--4.1796689810464301e+01
-2.0640840766939757e+01
-2.5998672155227258e+01
--5.4478208972780081e+01
-1.2665381655762530e+01
-8.7773624657025664e+00
--2.6707057151153847e+01
--3.0025894261152386e+00
-2.0100256053788691e+01
--4.2352348717807132e+01
--8.9336020213127423e+00
-1.7928329322904670e+01
--3.8027366550935838e+01
-1.9327781058976754e+01
-2.5570000033304218e+01
--5.3913655895230562e+01
--3.3806018848431582e-02
-2.1064365323772851e+01
--4.4395461232644308e+01
--2.3970836738109156e-02
-2.1055732947081566e+01
--4.4288271685622874e+01
-1.2729171527045986e+01
-1.0746525689063528e+01
--2.9651470557214004e+01
--8.5083531702485065e+00
-1.8392456106035432e+01
--3.8725745907841201e+01
--8.4972466840345593e+00
-1.8385421254364918e+01
--3.8724689574013006e+01
-1.1736974154651151e+01
-9.0283714502964028e+00
--2.6956093712488801e+01
-1.1736974154651151e+01
-9.0283714502964028e+00
--2.6956093712488801e+01
-9.4610520692832054e+00
-2.4715164631304869e+01
--5.1698512176889231e+01
-2.8781822530636822e+00
-2.1438743362843251e+01
--4.5391837395528221e+01
-2.7530062803861552e+00
-2.1565303823463875e+01
--4.5706150416166928e+01
-2.2179893347815156e+00
-2.1432710949047173e+01
--4.5425767823730318e+01
--1.0600409934499211e+01
-1.7457197852535462e+01
--3.7106748991317126e+01
-2.0417654401576484e+00
-2.1415171122745093e+01
--4.5608247922565027e+01
-1.8000362756860997e+00
-2.0948671391400598e+01
--4.4637106387360681e+01
-1.7663424807596033e+00
-2.1384748889854095e+01
--4.5557062847085149e+01
-1.7811125513661377e+00
-2.1396982968293106e+01
--4.5613089093252036e+01
--6.9187860484958428e+00
-1.8429540685946936e+01
--3.9517989831786814e+01
--1.2313680358669350e+01
-1.6810850371673030e+01
--3.5956521954253787e+01
-2.1040170537274374e+00
-2.1129788788030808e+01
--4.5615760523915483e+01
-1.5040659942214017e+01
-2.4640297700213868e+01
--5.3106679673963200e+01
-1.4494756240731981e+01
-2.4621873946882641e+01
--5.3040838942146650e+01
-9.6982212020407470e+00
-2.2387937643790686e+01
--4.9594396667068224e+01
-1.0349303023820942e+01
-2.3390813033510003e+01
--5.1373605183191323e+01
-1.7616066059864252e+01
-2.4997057288232956e+01
--5.4903793104305741e+01
-1.9325460044089557e+01
-2.4807737930043249e+01
--5.5057784899485590e+01
-1.9325460044089557e+01
-2.4807737930043249e+01
--5.5057784899485590e+01
-1.9408763330168682e+01
-2.4656749126056887e+01
--5.4857386583763791e+01
-9.0315402651180392e+00
-2.2609533799466529e+01
--5.0128634554501978e+01
-2.2304548868784330e+01
-2.7521503957974371e+01
--6.0658088588424420e+01
--4.9135685374783309e+00
-1.8715095970801713e+01
--4.1651904305355096e+01
--1.1817651549338365e+01
-1.6566775601555335e+01
--3.6899789751433737e+01
-1.3093923366975561e+01
-6.6014414683052838e+00
--2.4831552844412460e+01
-1.2147717272723815e+01
-7.6077348652714711e+00
--2.6564692277426456e+01
-1.7906275801308876e+01
-2.4458354019775946e+01
--5.5592785989998120e+01
-1.6482583919883304e+01
-2.3864544287459886e+01
--5.4798709060573785e+01
-1.5174144240030914e+01
-2.2980899397217087e+01
--5.3448416857331857e+01
-1.3539708422101818e+01
-2.2091623751324313e+01
--5.1686068765494319e+01
-1.2825887466662689e+01
-9.5064183800393334e+00
--3.0396582433846000e+01
-1.2942145359290141e+01
-5.2911493386621498e+00
--2.3663056571846571e+01
-6.3227130805479224e+00
-2.1348206774770354e+01
--5.0340063485404578e+01
-1.9523863423370059e+01
-2.3754117298497981e+01
--5.6971287694084673e+01
-1.3094394314085202e+01
-6.1927195132349908e+00
--2.5567472940284361e+01
-1.2740939521695566e+01
-1.0798487023759412e+01
--3.3812343231315090e+01
--3.6414784414201029e+00
-1.8258066625601131e+01
--4.3668697484135379e+01
-1.3677699800547835e+01
-1.0251722157167574e+01
--3.3318684478867929e+01
-1.1305957463045292e+01
-7.4363814847614815e+00
--2.7882057214522629e+01
-1.1985236560355816e+01
-9.2894182449479654e+00
--3.1484217946376226e+01
-1.7054467271252591e+00
-1.9452988532780093e+01
--4.7549492591211141e+01
-5.4261478272312536e-01
-1.8969775069812851e+01
--4.6980197503631949e+01
-5.5494112382814862e+00
-2.0187525550883532e+01
--5.0241754191942654e+01
--9.0913730977086082e+00
-1.5967371764272748e+01
--4.0092652931628145e+01
-1.5421612430696647e+00
-1.9760830807158428e+01
--4.8881613574037289e+01
-1.3095827947293614e+01
-9.3954837224193728e+00
--3.2426118345615443e+01
-5.8454253612449225e+00
-2.0035006605142865e+01
--5.0647734268752593e+01
-1.8463944764619262e+00
-1.9150598402161826e+01
--4.8326911603884461e+01
-5.4137031213413840e+00
-2.0089069427814668e+01
--5.0946747443608324e+01
-1.3380874458034050e+01
-9.1979150022302250e+00
--3.3258666607238290e+01
-1.3686022403525063e+01
-4.9520480402821727e+00
--2.5361882803186177e+01
-1.2246969467300204e+01
-6.7531994510347086e+00
--2.8572034240050201e+01
-1.2846004791894519e+01
-7.0425267730670749e+00
--2.9466164807534668e+01
--3.1445417212405644e+00
-1.7208999980963121e+01
--4.5379551201525388e+01
-1.2108942250470317e+01
-9.6242904625779619e+00
--3.4563380673595596e+01
-1.3728048862601925e+01
-5.3035595257551300e+00
--2.6987962885360393e+01
-1.3492258945421609e+01
-5.2945429604024570e+00
--2.6967498890610507e+01
-1.3314990765413738e+01
-4.8810727378604728e+00
--2.6277335892994564e+01
--5.6402484056276370e+00
-1.6488200020932421e+01
--4.3896911009031712e+01
--1.1842795397931726e+01
-1.4908494843287547e+01
--3.9498679636381759e+01
-1.5530806763198900e+01
-2.1105242174423648e+01
--5.7942964414005544e+01
-1.2046510171455742e+01
-6.4302805827977219e+00
--2.9080620451675628e+01
-5.0659744606034698e+00
-1.8890270998701030e+01
--5.1502981905130881e+01
-1.4135444433678790e+01
-4.1685213292493808e+00
--2.5544578152757467e+01
-1.3969673731647935e+01
-2.9511729995918716e+00
--2.3349951094604783e+01
--9.6958892786821842e+00
-1.5076917845799354e+01
--4.1082592446121623e+01
-1.3885041096957501e+01
-3.9750147093220574e+00
--2.5538633390470821e+01
-3.7874136655153889e+00
-1.8249583419018958e+01
--5.1457672252999451e+01
-1.2941288661907906e+01
-3.7090686549769285e+00
--2.4952142722313006e+01
-1.0005003977762410e+01
-2.2618440676359244e+00
--2.1315764230331649e+01
--1.2400786315910365e+01
-1.4173548410013302e+01
--3.9113633437962797e+01
-1.2993294024200342e+01
-8.7237986865102091e+00
--3.5321757750583302e+01
--7.7581462403202774e+00
-1.5325515870648950e+01
--4.3258239516637254e+01
--7.8103999235397810e+00
-1.5423358497911314e+01
--4.3281507588903693e+01
-1.3879033036268099e+01
-3.9125025168785816e+00
--2.6147867159558800e+01
-1.1774244675675856e+01
-5.8083632669634468e+00
--2.9697112161127436e+01
--1.0272277935588594e+01
-1.4455037790727657e+01
--4.1163814928151787e+01
-7.9744586945968345e+00
-1.8400404029229062e+01
--5.4307809259337077e+01
-1.4570946632831408e+01
-3.1967936341216001e+00
--2.5569344994442620e+01
--9.5352148661914859e-01
-1.6269557873743505e+01
--4.8590252687279104e+01
-1.4417597534864180e+01
-1.4686088036699194e+00
--2.2100254489506380e+01
-5.3229999550918503e+00
--5.2660462173820685e-02
--1.6347256288564726e+01
-1.3588699455785733e+01
-3.2582029739191900e+00
--2.5799891994068290e+01
-1.8113862011127966e+00
-3.3847662719022118e+00
--2.2857265259615868e+01
-1.2809438798313604e+01
-4.4833285039206423e+00
--2.8637738156963106e+01
--1.4262156895139910e+00
-1.6222131751934882e+01
--4.9503267276808693e+01
-1.4327993546707498e+01
-2.2922136505850892e+00
--2.4641064961465279e+01
--1.1488145096423045e+01
-1.3551509828100734e+01
--4.1009096350691678e+01
-1.2493477591550841e+01
-4.0232802714349232e+00
--2.7706167355350683e+01
-3.6576826611216906e-01
-1.6485978836864206e+01
--5.0581968069202389e+01
--9.8082705748315941e+00
-1.3911136279826277e+01
--4.2801789738727280e+01
--3.4521220718439261e+00
-1.5067373595858161e+01
--4.7606227078309061e+01
-2.9971611400437541e+00
-2.0800037128206488e+00
--2.1017315320851445e+01
--1.1462937187967858e+01
-1.3323365497828174e+01
--4.1064251571177110e+01
--1.0676621841093450e+01
-1.3274566309836382e+01
--4.1557810664298295e+01
--1.0730500077475689e+01
-1.3286862311071907e+01
--4.1383018237494383e+01
-1.3206702338388235e+01
-3.7339321663527234e+00
--2.8073693768614092e+01
-1.3402419621807807e+01
-3.7600762191717041e+00
--2.8209386158866124e+01
-3.0369417022269038e+00
-1.9407107646979838e+00
--2.0905798424042981e+01
--1.1270409939189794e+00
-1.5334535748640349e+01
--4.8753401276412632e+01
-1.4032845059993868e+01
-2.6392628984774751e+00
--2.6228317018832424e+01
--1.2938321511935664e+01
-1.2840740367603461e+01
--3.9847043696987583e+01
-1.4445397327485823e+01
-1.2744488004837982e+00
--2.3610004745941680e+01
-2.6554630756732402e+00
-1.7815591539197417e+00
--2.0717281962166606e+01
--9.2602827487708108e+00
-1.2672076201325428e+01
--4.1294866193491288e+01
-3.4873558017644228e+00
-1.6289915269123764e+01
--5.3620429308606624e+01
--5.8091756998650013e-01
-3.4292640265503556e+00
--2.3575493527511398e+01
--1.1076019847218070e+01
-1.3000975700928674e+01
--4.1892851241245936e+01
-1.3778128886135196e+01
-2.8811076837506095e+00
--2.7579314819385843e+01
-7.1769505000699363e-01
-1.5727608940984817e+01
--5.1978469631648721e+01
-8.0345526698843195e-01
-2.0701006417879380e+00
--2.1249563577468212e+01
--1.2790009527773975e+01
-1.2270751567283975e+01
--3.9935395054529046e+01
--9.0861964148066754e-01
-3.2885802410707274e+00
--2.3560462888077716e+01
--3.7503652176839819e-02
-1.5581858465278463e+01
--5.1671171453019944e+01
-6.6988674388195992e+00
-1.4039838826255101e+01
--5.1103033075012355e+01
--1.0930584690559469e+01
-1.3039793677793703e+01
--4.2911259336445426e+01
-1.2802973647453674e+01
-3.1114152875334615e+00
--2.8418432660877311e+01
-1.1387079929925024e+00
-1.4307515861454883e+00
--2.0398498888430570e+01
-1.2465983367828390e+01
-4.5329355235620525e+00
--3.2014170453194133e+01
-1.2301055678761623e+01
-2.4088613004725112e+00
--2.6778305609189953e+01
--6.2192022145872095e-01
-2.3507398647586903e+00
--2.2066163131086441e+01
-1.4742682917342787e+01
-1.4976163195281020e+00
--2.6020753177244618e+01
-2.8002878578303911e+00
-1.1229266908177105e+00
--2.0349879929826599e+01
--5.5385793541472599e-02
-1.9331473546525693e+00
--2.1366510815721707e+01
--9.3464832174005974e-01
-1.4590353129275101e+01
--5.1262545840823449e+01
--7.5338111776333394e-01
-2.1428793370088570e+00
--2.2008075190613773e+01
--5.1186505147325778e-01
-1.9083304854335301e+00
--2.1663562092718031e+01
-3.9186561901561014e+00
-1.3058052659795276e+01
--4.9835464231326796e+01
--7.0757537533893133e-02
-1.4412711023460197e+01
--5.2080987546133649e+01
-1.3616278080351043e+01
-1.5996886915804294e+00
--2.6768067373354583e+01
-1.3616278080351043e+01
-1.5996886915804294e+00
--2.6768067373354583e+01
-1.5587377989177633e+00
-8.4829192664279462e-01
--2.0046669173536440e+01
--1.4321506118389284e+00
-1.4387466934434633e+01
--5.2090839428557558e+01
--1.0104222964279417e+01
-1.1585553085522614e+01
--4.2272627887597999e+01
-3.9197170790892746e+00
-5.9116241033824446e-01
--2.0793525538733622e+01
--1.6115484661657875e+00
-2.4563756070067542e+00
--2.3201954422404736e+01
--1.1202987379067332e+01
-1.2043348979240060e+01
--4.3557850209080350e+01
--9.9495821954792731e+00
-1.2194610941649382e+01
--4.4454902214926165e+01
--9.9495821954792731e+00
-1.2194610941649382e+01
--4.4454902214926165e+01
--9.4095144712010477e+00
-1.2285130315012790e+01
--4.5257444117878542e+01
--3.2471971475556058e+00
-1.3307362678043773e+01
--5.0348313990948519e+01
--1.0596837566711709e+01
-1.2033237497278202e+01
--4.3992989941327927e+01
--3.4829139624834684e+00
-1.3486636925950570e+01
--5.0750687431923382e+01
-2.3652447224323114e+00
-1.1063947087628108e+01
--4.6966440676960907e+01
-2.5933818652491332e+00
-1.5549426080796289e-01
--1.9844427917865485e+01
-7.5929974854527016e-01
-6.9659757055287663e-01
--2.0478878534383156e+01
-1.3951045436696234e+01
-1.0691711596154923e+00
--2.7023224037525363e+01
-1.5023177739994710e+01
-1.9243246253433816e-01
--2.5929994220097264e+01
-4.3473113701352144e+00
-1.2389374686528239e+01
--5.2565849472509754e+01
-1.4373888300941621e+01
-6.3169990383305019e-01
--2.6731891599208520e+01
--2.3539880353273179e-01
-9.1061860385536775e-01
--2.1006624245667656e+01
-1.4231140549078991e+00
-3.2811574498765039e-01
--2.0278980067648334e+01
-1.3947943456205293e+01
-9.2216504170403724e-01
--2.7276531757339210e+01
--4.5868738027942078e+00
-1.2863487776461389e+01
--5.0181744962467704e+01
-6.0342646971724800e+00
--1.7659020216263865e+00
--1.7275590831526369e+01
--5.3880729660297322e-01
-9.0905523068715455e-01
--2.1287940004675892e+01
--1.8543154702578271e+00
-1.9053924240354454e+00
--2.3623995737537907e+01
-1.4710733330750678e+01
-4.9328943861008667e-01
--2.7614867247755750e+01
--1.7025131504701468e-01
-5.5171791938562609e-01
--2.0927134566073800e+01
-3.8522731602116935e+00
--1.1499732034894383e-01
--2.1015117877615520e+01
-1.4109000890094119e+01
-1.2518450036974516e-01
--2.6828817123168605e+01
-1.4934472748741081e+01
--1.2537120484106906e-01
--2.6441737030809477e+01
-1.4876402826558278e+01
--1.2487513899255973e-01
--2.6441188869771715e+01
--6.4477607159300954e+00
-1.1630577361931277e+01
--4.8294754403771847e+01
-1.5230323042855693e+01
--5.5996221236636601e-01
--2.6428915025525498e+01
--1.1582778263251785e+00
-7.5461383772700741e-01
--2.1855285760379594e+01
-1.4207962970284829e+01
-6.6567371788897889e-01
--2.9473244522082609e+01
--1.1253980419444072e+00
-1.3019549243860189e+00
--2.3482316449286305e+01
-1.6126386118258040e+00
--3.6419558602279811e-01
--2.0067480329895574e+01
--2.2286542495173802e+00
-2.0257073304206665e+00
--2.5085479685647602e+01
-1.8992530405113545e-01
--8.3430910069386632e-02
--2.0639290864273438e+01
--3.4880730848871755e+00
-2.7280051495430686e+00
--2.7080216408001643e+01
-1.5129748532279860e+01
--7.3418722779467938e-01
--2.7084395511522494e+01
--2.6930304200155053e+00
-1.6100029676989511e+00
--2.4348540688919289e+01
--2.5847164515770542e+00
-1.5872023713341747e+00
--2.4519479171600331e+01
-2.4377862662733270e+00
--7.1813180056026260e-01
--2.0455482916156953e+01
-1.4624599017568224e+01
--1.0302118870705128e+00
--2.6398708491680274e+01
--9.1347354854459406e-01
-2.1928488830134524e-01
--2.1528745860193496e+01
--2.6135722858770905e+00
-1.3110237605849573e+00
--2.4011992738994998e+01
--8.2850195476665889e-01
-9.8205524694569571e-02
--2.1357283130415123e+01
-1.9437037327934010e+00
--8.8387789427481722e-01
--2.0083042679041668e+01
-2.8063310061554509e+00
--9.5842468719344320e-01
--2.0635460481771510e+01
--2.2888824857152708e+00
-9.3933205449425039e-01
--2.3597878734869010e+01
-5.7888538292590219e+00
--2.6630012694501324e+00
--1.7630346276798527e+01
-1.5174942230811364e+01
--1.0830588237885648e+00
--2.7732803606704390e+01
-1.5135729873096109e+01
--1.2076758620875867e+00
--2.7562917281080772e+01
-2.4958915651066396e+00
--1.0531518437630678e+00
--2.0537735778770873e+01
-2.9401765047044610e+00
--1.4415088227539186e+00
--1.9915959598816919e+01
-5.5287504119660511e+00
--3.0828620761428516e+00
--1.6804333225070909e+01
--3.9632650753050678e+00
-1.4093163103026616e+00
--2.5413976628065420e+01
--2.8372040433450012e+00
-5.4192273926010393e-01
--2.3396473967033547e+01
-1.4922888605449701e+01
--2.1702978639024759e+00
--2.5848362728576728e+01
--3.1655541585973008e+00
-5.6575287773698877e+00
--4.0415954947529372e+01
--1.8610226474744047e+00
--2.2446550132831450e-01
--2.2032516380544653e+01
-1.3862204158980317e+01
--5.6294435327419956e-01
--3.0714602437171635e+01
-9.3383649103573374e-01
--1.2246350188497033e+00
--2.0599059371108446e+01
-5.7475601130972116e+00
--3.3393972431935146e+00
--1.7404862395600517e+01
--1.3561522793315741e+00
--7.7102294353453271e-01
--2.1239693892389766e+01
--2.3633144890035398e+00
--1.9005056590485828e-01
--2.2837319965198954e+01
-1.5617607516465657e+01
--2.5224209528788220e+00
--2.7212176873904344e+01
-5.7911373381934723e+00
--3.5773721056524779e+00
--1.7457363992526339e+01
--3.7307032456088280e+00
-6.7538378427293599e-02
--2.3403014067219569e+01
--8.2773226555411608e+00
-5.8303039949653570e+00
--4.0560795044262250e+01
-1.4399797829177540e+01
--1.9560681251830168e+00
--2.9600059020264741e+01
-3.5507855151166363e+00
--2.3239185865357417e+00
--2.0009695978824421e+01
-3.9546280606599273e+00
--2.4465146791284811e+00
--2.0323440664310084e+01
--3.5724421311689785e+00
--1.0460300454534795e-01
--2.3301059275782748e+01
--3.7265042951425729e+00
--1.7817995181113627e-01
--2.3070258509614916e+01
--3.6184629574174978e+00
--1.8390213922748011e-01
--2.3192240165358495e+01
-4.0366512685274234e+00
--2.5713257334354926e+00
--2.0202958706041418e+01
--3.6618807899055157e+00
--2.2063267954111559e-01
--2.3214357100078161e+01
--1.7638019814157559e+00
--1.0329250476534262e+00
--2.1669507360124310e+01
-3.1741227661880838e+00
--2.8058724012789305e+00
--1.9080681632124652e+01
-1.5253735766251426e+01
--3.3132127017218509e+00
--2.7069538222846372e+01
-1.5397525303846034e+01
--3.4807638914092962e+00
--2.6991340364511828e+01
-1.5578524754088946e+01
--3.7523898105618700e+00
--2.6443329121617776e+01
--5.2931103323070401e+00
-3.2721192846598348e+00
--3.6821824695482455e+01
--5.2707175551031309e+00
-3.3215562358588144e+00
--3.6611265593264775e+01
--2.4510795794141322e+00
--1.4162735242302322e+00
--2.1542244065296536e+01
--3.1523796932880899e+00
--1.0833365142092271e+00
--2.2263388555353906e+01
--3.1502117122962439e+00
--1.0643387320941389e+00
--2.2490090724130464e+01
-9.3734950796889882e-01
--2.6735880479801390e+00
--1.9893759879133867e+01
-3.1847392273573329e+00
--3.2967370958281341e+00
--1.9582357136904072e+01
-4.0412920357951627e+00
--3.1878711040950729e+00
--2.0659815483002859e+01
-4.0412920357951627e+00
--3.1878711040950729e+00
--2.0659815483002859e+01
--2.8607817638798969e+00
--1.4926650744061172e+00
--2.1553678339307634e+01
-6.5130414822004723e-01
--2.8871841142692753e+00
--1.9557655369733123e+01
--1.9687254980103686e+00
--1.9449794894698493e+00
--2.1069421380769057e+01
-9.7600743824395741e-01
--2.9631630812222660e+00
--1.9444560163491836e+01
-4.4529237049760839e+00
--3.3495262089498770e+00
--2.1230717924035275e+01
--1.7186551783915078e+00
--2.1065917359016963e+00
--2.0853240903589541e+01
--5.1810892573924860e-01
--2.6694328316008118e+00
--2.0136870115704273e+01
--7.0925140685345651e+00
-2.3514360223818640e+00
--3.5268130606185871e+01
--3.3999932238979564e+00
--1.3517016166319300e+00
--2.3593952741774348e+01
--6.3981854202307220e-01
--2.7557424411443274e+00
--2.0326206154345257e+01
-1.6428506744165607e+00
--3.3580608412353370e+00
--2.0130126466452552e+01
-1.6192138476938369e+00
--3.3466867022347784e+00
--2.0062650361897564e+01
-8.2789667883400331e-01
--3.3004793271390263e+00
--1.9639606046241028e+01
-1.5517025090671208e+00
--3.4871224128412996e+00
--2.0047286782284480e+01
--6.2607213243201025e+00
-5.8457469625789538e-01
--3.0716790550717210e+01
-1.6063448160613558e+00
--3.5530953945362396e+00
--2.0248585973279891e+01
--1.0012391028717817e+01
-2.0872595073659386e+00
--3.5364366698461396e+01
--2.2277843389998910e+00
--2.4282078539014029e+00
--2.1848367881311070e+01
-7.4154250378881248e-01
--3.5628732548963766e+00
--1.9813687915884529e+01
--1.8952599238638532e-01
--3.2097005508483090e+00
--2.0548167541535395e+01
--1.7267980755847296e+00
--2.6882612527866927e+00
--2.1366067109982531e+01
-3.7952843992177669e+00
--4.0458979642319335e+00
--2.1157533880445680e+01
--1.7438839952119560e+00
--2.6947223175140040e+00
--2.1511928614748456e+01
-8.1183247976657680e-01
--3.6192417538658859e+00
--2.0048710413845765e+01
-6.1604009690698402e-01
--3.5431574885934403e+00
--2.0231998103577098e+01
--1.9470559727697792e+00
--2.6963351816768295e+00
--2.1706977493321055e+01
-3.6711261505908044e+00
--4.0667181277615203e+00
--2.1111189662478509e+01
-2.5079872619252719e-01
--3.3285646670346072e+00
--2.1226506299648442e+01
--2.0371528835847315e+00
--2.7049979591813291e+00
--2.1882187933581395e+01
--7.9864217768677408e+00
-8.6057135775790583e-01
--3.3346443362686699e+01
-1.1497783008594460e+01
--5.3078995306098040e+00
--2.5393621479523613e+01
--6.6440314292214735e+00
-3.6391463100119664e-01
--3.2753357399586342e+01
--7.9765840688039189e+00
-4.7000660792784456e-02
--2.9983225281869988e+01
--7.9765840688039189e+00
-4.7000660792784456e-02
--2.9983225281869988e+01
-4.8642096201276281e+00
--4.4231220178822808e+00
--2.2146562792908920e+01
-5.0591133145356153e+00
--4.3636263696023354e+00
--2.2549809362215335e+01
-7.0474648200136381e-01
--3.8616157188138254e+00
--2.0146122962907008e+01
-3.7049894592561174e+00
--4.3144230624821329e+00
--2.1399790650779018e+01
--5.6078057908064874e-02
--3.6341761849690197e+00
--2.0821150531036057e+01
--7.0100901811943803e+00
-1.2487795299456639e-01
--3.2366408986402071e+01
-2.8371762314416715e+00
--4.4231092735118391e+00
--2.0618111673200399e+01
--6.6455274671313946e-01
--3.5787650253832184e+00
--2.1244388356952275e+01
-1.5332813776593115e+00
--4.3055989502386351e+00
--2.0768376957157898e+01
--6.6226472350850569e+00
--3.6928368769327830e-01
--3.1964187566712877e+01
--2.0708704388264811e+00
--3.2157147492328644e+00
--2.2346427750977789e+01
--7.5841190127297180e+00
--2.1235660004753137e-01
--3.2396792683780490e+01
-3.0826518303890472e-02
--4.0634748948772081e+00
--2.1020149345532538e+01
-1.9500187836945473e+00
--4.5456051848877372e+00
--2.0840744801933145e+01
--3.3423608898987012e+00
--2.7386110274787434e+00
--2.4265910053183184e+01
-8.3248349504871602e-02
--4.0911328623706824e+00
--2.1200812412713283e+01
--3.3300996639402594e+00
--2.8203768747748841e+00
--2.4289105586345887e+01
-1.4818588259773466e-01
--4.1967565640496174e+00
--2.1204017492149152e+01
--3.1783199242836906e+00
--2.9424700238188439e+00
--2.4077725306296347e+01
--7.1233865808198367e+00
--8.6658526151886028e-01
--3.1437877878580810e+01
--7.1294022236914580e+00
--8.4735374518262729e-01
--3.1385028099701184e+01
--7.3679843664477174e+00
--7.8851565432188864e-01
--3.1831514066246420e+01
-8.8355353713987717e-01
--4.5014153162375194e+00
--2.1161387326911395e+01
--7.2442563491386753e+00
--8.6358443004031360e-01
--3.1447892798414731e+01
-1.7108532820324500e+00
--4.6373569648011088e+00
--2.1255382537245360e+01
--8.4017519302117254e+00
--8.4319474509900894e-01
--3.0908092383053926e+01
-6.1724735375545936e-01
--4.5017763408510501e+00
--2.0951938224682397e+01
--8.1250824000926425e+00
--9.6653133494600851e-01
--3.0820975250495085e+01
--1.8325157921653763e+00
--3.6400865843559314e+00
--2.4101733054999595e+01
--2.2905513456004636e+00
--3.7068684078072716e+00
--2.2736983076129047e+01
--1.8658452000521928e+00
--3.8940507928553969e+00
--2.2360638555967459e+01
--1.0679686260816128e+01
--4.2867238272632452e-01
--3.1679841655722619e+01
-3.9343839707025230e-01
--4.5563106953539609e+00
--2.1533156863678318e+01
-4.3339438006713147e+00
--5.8999456658299554e+00
--2.0673754620724445e+01
--7.6032805456287926e+00
--1.5177906093653022e+00
--3.0439813759636753e+01
--2.4868349292010645e+00
--3.7141082389190276e+00
--2.3557871329226835e+01
--2.5800774155690123e+00
--3.7565100076007973e+00
--2.3505015682190269e+01
--2.2561865159893055e+00
--3.9569384826035998e+00
--2.2998712573694988e+01
--2.2561865159893055e+00
--3.9569384826035998e+00
--2.2998712573694988e+01
--9.2837919667100763e+00
--1.2371180588502486e+00
--3.0978109135368392e+01
--6.8281564315685186e+00
--2.2221289995269431e+00
--2.9639797448930533e+01
--9.0194242139344354e+00
--1.6778007175879130e+00
--2.9992413712649711e+01
--8.7533005370473269e+00
--1.7374393686803740e+00
--3.0371325439052452e+01
-5.6061264469958036e+00
--6.3664249021897845e+00
--2.2050127429348386e+01
-2.8767945739050722e+00
--5.8797545034282832e+00
--2.0909798536635854e+01
--3.0172411592512565e+00
--4.1137113945911175e+00
--2.4101603711632443e+01
-7.7221341738013816e-01
--5.3217847950723378e+00
--2.1464932982311375e+01
--6.7932416053022413e+00
--2.8872375556148397e+00
--2.8417494552375487e+01
-3.5848144280980476e-01
--5.3413211489022361e+00
--2.2122591977684696e+01
--7.7945500816225985e+00
--2.5683616938035114e+00
--2.9232425116148757e+01
--6.7990544053600281e+00
--2.9695058451021414e+00
--2.8464174331749927e+01
-7.7940115214373296e-01
--5.8300562398116655e+00
--2.1241263474742929e+01
--3.6472549685729501e+00
--4.4795689298445618e+00
--2.3792857227541006e+01
-6.5577970109386652e-01
--5.8877648522859616e+00
--2.1094502284365316e+01
--7.7054176048851293e+00
--3.0277490876829014e+00
--2.9722101269417003e+01
--3.4037800906655682e+00
--4.6978895828472265e+00
--2.3606267869978552e+01
--3.6230268681802325e+00
--4.8547548769674433e+00
--2.4267504540804335e+01
-3.1526794738549473e+00
--7.2699832516186156e+00
--2.0187316624097281e+01
--8.6385439376116260e+00
--3.7549813485205612e+00
--2.7704821551242635e+01
--7.1307401195825140e+00
--4.2440557625461581e+00
--2.7080012658102238e+01
--8.7621096719022500e+00
--3.8762486407879404e+00
--2.7069444443075458e+01
--8.8387161463962851e+00
--4.0090778961289546e+00
--2.6869345724372110e+01
-2.6967636157661476e+00
--8.0951351432578136e+00
--1.9151721712555247e+01
-3.7598714467047762e+00
--8.8585930438068434e+00
--2.0163966796038402e+01
-3.9283180299560465e+00
--8.9278625297977889e+00
--2.0186187852810068e+01
-2.2924034395573978e+00
--8.7333122724099503e+00
--1.8128661128859687e+01
-2.3143557758120799e+00
--8.7482114157601814e+00
--1.8087944883732387e+01
--4.5021921764452184e+00
--6.7074314906799231e+00
--2.3048884299581886e+01
-1.3030341671812973e-01
--8.1329433637997326e+00
--2.0773857111973104e+01
-1.7549395940549117e-01
--8.2389919207518538e+00
--2.0628750873373377e+01
-4.6722843056103974e-01
--8.4960311535936679e+00
--2.0244673841067328e+01
-7.3868480196120767e-01
-2.6224040799780354e+01
--4.0401991984631387e+01
-3.1649355846401899e+00
-2.6813617922453108e+01
--4.1104463706710689e+01
-1.0045363175494847e+01
-2.8750429702404443e+01
--4.3735653675899513e+01
-3.5586583235551643e+00
-2.6876425164038391e+01
--4.1289439140197580e+01
-1.1159743510106454e+01
-2.8739598535617599e+01
--4.3992572342895954e+01
-1.2941310346486066e+01
-3.0469037288541212e+01
--4.6543104229355997e+01
-9.6519477660149846e+00
-2.8923106183077710e+01
--4.4356263480678443e+01
-4.3764489624560072e+00
-2.7275556969778641e+01
--4.2446518785826250e+01
-8.1933264467971636e+00
-2.8450123779725505e+01
--4.4534163729315011e+01
-5.6013903011295108e-01
-2.5102051994207720e+01
--4.0661774941590757e+01
-5.5980150601977263e-01
-2.5125119314773951e+01
--4.0665284055427819e+01
-1.2163883034610818e+01
-2.9354205265335175e+01
--4.7016453623884587e+01
-1.2791338349407596e+01
-2.9758550660159294e+01
--4.7715460316743716e+01
-1.2495923567626003e+01
-2.9496499493962915e+01
--4.7424065810112488e+01
-1.2388703320741399e+01
-2.8165709132778371e+01
--4.5285883982913070e+01
-1.3906162263423390e+01
-3.0270745135629699e+01
--4.8454892267388018e+01
-8.3738040248739409e+00
-2.7671099364228869e+01
--4.4875155457661535e+01
-9.7642627641923063e+00
-2.8661581841784393e+01
--4.6391362753406931e+01
-9.7619705148023836e+00
-2.8581299135960080e+01
--4.5979150150706758e+01
-1.5409952798648405e-01
-2.4714642629778073e+01
--4.0360076875505669e+01
-8.6958774820983742e-01
-2.4947373496057541e+01
--4.0729113835783870e+01
-1.0668469400632887e+01
-2.8595486989421406e+01
--4.6037372577183163e+01
--5.7169673747046357e+00
-2.1334407346826616e+01
--3.5734295037807058e+01
-1.5810894923670554e+01
-3.0314103009152838e+01
--4.9133022396532461e+01
-4.6610609488638595e+00
-2.6207331145519039e+01
--4.2895906058734916e+01
-1.1615111130771840e+01
-1.6367182947674973e+01
--3.0636550704826451e+01
--1.0447480840508929e+01
-2.0920115895353220e+01
--3.5009892236486650e+01
--9.6901307451819108e+00
-1.8429064260931131e+01
--3.1996172018156489e+01
-5.1920002210799563e+00
-2.6222310050976386e+01
--4.3366658512072547e+01
-4.7353969849714455e+00
-2.6122382513950470e+01
--4.3420500788808283e+01
-6.5097530885355130e+00
-2.6643401596089660e+01
--4.4157353232231927e+01
-1.1773141899555357e+01
-1.1322386064581234e+01
--2.4202953822844613e+01
-1.8967471677226397e+00
-2.5044585408349338e+01
--4.1952370742294114e+01
-1.4867271507821878e+00
-2.4747947985720440e+01
--4.1620978546897796e+01
-1.3353082483496197e+01
-2.7542370650466129e+01
--4.6231692142568292e+01
-4.0964071297364599e+00
-2.5628578797951086e+01
--4.3157420458555166e+01
--5.2729912718532894e+00
-2.2110345656745899e+01
--3.7635942989973252e+01
-3.1169018510237225e+00
-2.5326711283773747e+01
--4.2696574414522850e+01
-9.0632820911130008e+00
-7.1495303889585315e+00
--1.8810967080202676e+01
-1.2735997261383419e+01
-9.4478623432320283e+00
--2.2444795034860871e+01
-1.3472661303662260e+01
-9.5250708956930517e+00
--2.2351821763265910e+01
-2.7456342825279232e+00
-2.5081381743841789e+01
--4.2361894743166381e+01
-8.2827416152342970e+00
-2.6809390275079732e+01
--4.5353945793150181e+01
--1.2321407261726513e+01
-1.9520874320356914e+01
--3.3737322498508838e+01
--1.1919221511199652e+01
-1.9675567151793164e+01
--3.3943750476931967e+01
-8.7575005282991878e+00
-6.5865664913340760e+00
--1.8118360243812756e+01
-9.4827999625583210e+00
-7.6466385764947402e+00
--1.9746479033523570e+01
--1.0103224406606924e-01
-2.4101233401235476e+01
--4.0995431227967494e+01
--1.1941226334168278e-01
-2.3922502171342970e+01
--4.0811591907939537e+01
--6.7504355911074461e+00
-2.1412911709703316e+01
--3.6840071737902200e+01
-5.6926441964640970e+00
-2.6280971416232934e+01
--4.4577176760144724e+01
-3.4517013409110793e+00
-2.8106053664409387e+00
--1.2706056069055816e+01
-1.2969479533174367e+01
-1.0038264650367930e+01
--2.3279835693014167e+01
-5.3300350301609525e+00
-2.6034523189652930e+01
--4.4220270703596320e+01
-8.8789417655105911e+00
-7.9146839405635152e+00
--2.0116924264733871e+01
-1.3474104742930013e+01
-9.5863641660219638e+00
--2.2790474905016207e+01
-4.6404155370494662e+00
-4.3781657957752476e+00
--1.4991298566193887e+01
--1.0490103487436409e+01
-1.9915413646219765e+01
--3.4955298325836338e+01
--6.3680285463468600e+00
-2.1350303932615013e+01
--3.7139970461367433e+01
-9.1972298786299849e+00
-2.8409371038054825e+01
--4.8311851092835042e+01
-9.1972298786299849e+00
-2.8409371038054825e+01
--4.8311851092835042e+01
-4.7429744454842249e+00
-2.5600514732737611e+01
--4.4148577438798512e+01
-1.3605004544823105e+01
-1.1284307080544069e+01
--2.5653835056616096e+01
--1.0684349313534874e+01
-1.9709736400585221e+01
--3.4636593032435364e+01
--8.6950538532628965e+00
-2.0450489209175878e+01
--3.5944178352940526e+01
--8.5050745449593868e-01
-2.3505487068906351e+01
--4.0914993615040792e+01
--8.4026604889848089e-02
-2.3681879447603421e+01
--4.1300900851148263e+01
-8.7526190904036145e+00
-2.6568708470212350e+01
--4.6117352183082254e+01
-5.4372464867196442e+00
-2.5461327285026787e+01
--4.4480778462135675e+01
-5.5300255970285610e+00
-2.5654255478537802e+01
--4.4774892637034185e+01
-7.6904230212343041e+00
-2.6497266954094965e+01
--4.6399467846522427e+01
--1.2072677694904986e+01
-1.8998010063526809e+01
--3.4078463356344287e+01
-8.2566424629090012e+00
-2.6372741935716316e+01
--4.6436411927058117e+01
-9.7875136008825034e+00
-2.7938450034087310e+01
--4.8823230418351997e+01
-7.8791952593924393e+00
-2.6185004778576850e+01
--4.6311415744764176e+01
-1.6696789483014577e+01
-2.8945831159442246e+01
--5.0996745088451220e+01
-1.2581878105767531e+01
-1.3446180059406622e+01
--2.8847239409002558e+01
--8.1390966224030825e-01
-2.3146669724035959e+01
--4.1397988073668586e+01
--8.6854332820678071e-01
-2.3006253228390595e+01
--4.1119167060870119e+01
-1.4571688394117250e+00
-2.3793022966443903e+01
--4.2438395020961138e+01
-1.4256473589306905e+01
-1.4171091989427575e+01
--3.0104268104269106e+01
-3.4903301221637579e+00
-2.4543277835257822e+01
--4.3752990803211830e+01
-9.4172340039747038e+00
-2.6219942709919753e+01
--4.6797349043078285e+01
-1.2042521978339547e+01
-2.7222655970466835e+01
--4.8665642594198367e+01
--9.1807001781047592e+00
-1.9798194890107769e+01
--3.6154456097162146e+01
-1.3304253587151065e+01
-2.7632477690483270e+01
--4.9880510598678846e+01
-1.6050157917075889e+01
-2.7980313963891945e+01
--5.0834493905821809e+01
-4.2481744328916038e-01
-2.3169814166240304e+01
--4.2503718572133003e+01
-2.0984219390090281e+01
-2.8639767684932970e+01
--5.2526666707055128e+01
-2.1124435452365280e+01
-2.8682250172432635e+01
--5.2673114361125670e+01
-1.1851529394907246e+01
-2.6714321080934884e+01
--4.9232844830020206e+01
--4.5520476653061381e+00
-2.1333989123833597e+01
--3.9814761599322289e+01
--1.0871702300918391e+00
-2.2172262809372356e+01
--4.1720486392940323e+01
--1.0674638432623182e+00
-2.2143870468021785e+01
--4.1734391155437869e+01
-1.2596013570788680e+01
-2.6573623908489310e+01
--4.9518408780328436e+01
-1.3790127511717222e+01
-8.8039893080138203e+00
--2.4016305232189548e+01
-1.3416075322373709e+01
-8.6107558570347287e+00
--2.3560765797177670e+01
-1.1933138569062569e+01
-2.5946564715877081e+01
--4.8660513211640790e+01
-1.2338948785962526e+01
-2.6576332490952922e+01
--4.9529235122176857e+01
-1.1516456437311156e+01
-2.6378913441678510e+01
--4.9375379901395405e+01
-1.9086445935245532e+01
-2.8768991134823768e+01
--5.3423275244222111e+01
--2.9252980214744144e+00
-2.1494915107809646e+01
--4.0660923018189521e+01
-2.4462856809937215e+01
-3.1288439924148179e+01
--5.8283788129716370e+01
-5.8934510358315734e-02
-2.2511182709666681e+01
--4.2869171392226029e+01
-3.6969328996967854e-01
-2.2588367894869631e+01
--4.2961953481554360e+01
-1.2488063406409251e+01
-2.6331368270170525e+01
--4.9721476357432628e+01
-1.7785578041998537e+01
-2.7779914039471990e+01
--5.2400313636117176e+01
-2.7754475876112060e+01
-3.2624031050831135e+01
--6.0760611963837455e+01
-1.2588676519219787e+01
-1.2026281067658065e+01
--2.8728749020084376e+01
-1.2639453188469204e+01
-2.6217345379641674e+01
--4.9894755285697642e+01
-1.3563736068667330e+01
-2.5361697171730686e+01
--4.8846038337936179e+01
-9.7971093256041417e+00
-2.5573638857865067e+01
--4.8707830569290486e+01
-7.6144598721708967e-01
-2.2441109336856112e+01
--4.3249737698135505e+01
--9.2547590675029632e+00
-2.2063139553444575e+01
--4.1117289885372578e+01
--8.7250076746144209e+00
-1.9175152669124650e+01
--3.7119331308891525e+01
-1.3302502772079603e+01
-2.6204179622214028e+01
--5.0259523810421634e+01
-8.2335828776160493e+00
-2.4324587282358582e+01
--4.7330875742304258e+01
-4.8849737018802237e+00
-2.3398491861555076e+01
--4.5764378282859937e+01
-3.2377352818913857e-01
-2.2105604781904251e+01
--4.3322048475546389e+01
-1.4404073920911696e+01
-2.5720004870380656e+01
--5.0339029896459280e+01
--8.3765319521034680e+00
-2.1602264500942010e+01
--4.1329055116301511e+01
--8.0041874475663093e+00
-1.9312102734293784e+01
--3.7975074388465565e+01
--5.9004899434536213e+00
-2.0105791549333258e+01
--3.9675966095843748e+01
--3.5150827280202862e-01
-2.1780440521352336e+01
--4.2945243558040247e+01
-1.2600525692177980e+01
-1.3341649999441133e+01
--3.1859863347640530e+01
-1.2650545291849561e+01
-1.1732691927300676e+01
--2.9428405037144088e+01
--1.1480919376130050e+01
-1.7999675769818836e+01
--3.5908864937861487e+01
--1.1422781982823844e+01
-1.7931297844078802e+01
--3.5840080201701156e+01
--3.7712137874025244e+00
-2.0589783397764279e+01
--4.0958683138951415e+01
-8.1728531204486199e+00
-2.4124267503089772e+01
--4.8105597731886519e+01
--7.8717904445809372e+00
-1.8304560073332190e+01
--3.7168460412005693e+01
--7.6811492757726088e+00
-1.9109597320664978e+01
--3.8486523071779068e+01
-9.4293616183658830e+00
-2.4150159630936692e+01
--4.8609340497804041e+01
-1.0158655524367770e+01
-2.5208431442556002e+01
--5.0244441314164426e+01
-4.2202744748635161e-02
-2.1629603020819339e+01
--4.3657195310091211e+01
--8.5868819901804212e+00
-1.8827680846854420e+01
--3.8306648591148374e+01
--2.6642311397677472e+00
-2.0725846349787421e+01
--4.1970658120436767e+01
--3.2786395380084643e-01
-2.1493932182383162e+01
--4.3483871447554456e+01
-6.1281252688821448e+00
-2.3041967889108527e+01
--4.6797124587198894e+01
-7.2295622337474104e+00
-2.3514862425841038e+01
--4.7743585081574025e+01
--3.5550954078945068e-01
-2.1939813220820781e+01
--4.4341142211407906e+01
--6.0036649222696803e-01
-2.1262900351664253e+01
--4.3311714445284622e+01
--7.7671462819772001e+00
-1.8920138117992163e+01
--3.8677208562235904e+01
-2.8986245957460817e+00
-2.2182041066591289e+01
--4.5356807149342615e+01
-6.9756876967332078e+00
-2.3351722129734114e+01
--4.7926071436175633e+01
-6.9756876967332078e+00
-2.3351722129734114e+01
--4.7926071436175633e+01
--1.6803734004464543e+00
-2.0685997106642027e+01
--4.2709879970829462e+01
--1.3896765608379676e+01
-1.6567038964959480e+01
--3.4413077546042274e+01
--1.3958188418531289e+01
-1.6641058755320969e+01
--3.4499110978989115e+01
-1.5510675863989649e+01
-2.4945747848114102e+01
--5.1887949484137316e+01
-1.5232310951103885e+01
-2.4966255499997072e+01
--5.1622977807396133e+01
--2.1671022882429800e+00
-2.0508986744154946e+01
--4.2568899020528320e+01
-4.5705979017549545e+00
-2.2614201634625672e+01
--4.6763376370024673e+01
-4.5298025281172194e+00
-2.2557747305922323e+01
--4.6608330124956396e+01
-1.9902381037115319e+01
-2.5986662910094971e+01
--5.4154780641310303e+01
--1.3995447057059391e+01
-1.6486867131589580e+01
--3.4342240699109610e+01
--7.6574091034791003e+00
-1.8751690005678352e+01
--3.9278057165253038e+01
-1.2603954376914544e+01
-6.9847380988816274e+00
--2.3694610845407553e+01
--7.8772730442108649e+00
-1.8693929697920684e+01
--3.9142892964833273e+01
-2.2000509476093963e+01
-2.8446787762876010e+01
--5.8801372774476555e+01
-1.2777459347523813e+01
-2.4585435041347324e+01
--5.1423963531619727e+01
-8.3428483735441077e+00
-2.4400848358124023e+01
--5.0978718837659997e+01
-7.5002580951793139e+00
-2.2800841023557730e+01
--4.8140615666570469e+01
-7.6088964677135635e+00
-2.2909010304368326e+01
--4.8367747021086743e+01
--1.3455559270534767e+01
-1.6443373929376214e+01
--3.4851221681827518e+01
--9.2489870563406507e-01
-2.0651004354053796e+01
--4.4103943080235901e+01
-1.2432321671910294e+00
-2.1320259102540184e+01
--4.5169146201383498e+01
-1.3667340616863912e+01
-2.4245113503489200e+01
--5.1655788564642648e+01
-1.3890417471414386e+01
-2.4414338442033870e+01
--5.1875559917254030e+01
-1.3498209833074263e+01
-2.4021912544817759e+01
--5.1173700986466315e+01
-1.6238131976749749e+01
-2.5248046874960824e+01
--5.3493568262231264e+01
--1.2953899116607406e+01
-1.6560868620023392e+01
--3.5293975898601261e+01
-1.5068612548347184e+00
-2.1347214550296595e+01
--4.5561213134277864e+01
-1.2967874358858298e+01
-6.0168771515151134e+00
--2.2708655698011022e+01
-8.1370233761571633e+00
-2.2963600007435428e+01
--4.9405165584635512e+01
-3.0522914083051106e-01
-2.0778254318042631e+01
--4.4893887349390759e+01
-1.8567789119000786e+01
-2.5612281066930962e+01
--5.5117440347817514e+01
-2.4556247680463837e+01
-2.8540694767722410e+01
--6.1079590069169456e+01
-1.7742300824448328e+01
-2.5270144466622813e+01
--5.4638708785883502e+01
-2.4648608329733726e+01
-2.9076622344497444e+01
--6.2430722510202685e+01
--3.4232393128316736e+00
-1.9552625234912760e+01
--4.2485409533026548e+01
-1.5588476945457159e+00
-2.1128790845566574e+01
--4.5833650647245754e+01
-1.2604287345593472e+00
-2.0916732262401201e+01
--4.5586710032529851e+01
-1.8236335916752047e+01
-2.4048962202227401e+01
--5.3279834126752085e+01
-2.0144616097387335e+01
-2.6008536782396657e+01
--5.6609749099968752e+01
-1.5172906216012329e+01
-2.4460827490917470e+01
--5.3509867838333705e+01
-1.4418679949904657e+01
-2.4356272750806664e+01
--5.3525076205913606e+01
-1.2566159127451172e+01
-2.3783385197310885e+01
--5.2453664404805231e+01
-1.3179010673677176e+01
-6.7181952833838672e+00
--2.4793887966909075e+01
-1.3179010673677176e+01
-6.7181952833838672e+00
--2.4793887966909075e+01
--1.3004682026525987e+01
-1.6164884562466597e+01
--3.5829875699686077e+01
-1.2874477907056859e+01
-1.0142511024918882e+01
--3.0522963417043425e+01
-2.0923871864612313e+00
-2.0383676330745597e+01
--4.6615824331587866e+01
-2.0775213285255920e+00
-2.0298927379739528e+01
--4.6954849790196107e+01
-1.0872256549074196e+01
-2.2612615447581614e+01
--5.2226099574478440e+01
-1.2333422068478733e+01
-1.1138645294788127e+01
--3.3077973432242757e+01
--3.5530364358588415e+00
-1.8771615478073826e+01
--4.3422803076907826e+01
-8.2421232411157526e+00
-2.1508340552581618e+01
--5.0245441418864552e+01
--3.9281544254948746e+00
-1.8638766492351760e+01
--4.3156578671162308e+01
-8.0046604460759276e+00
-2.1734247627389841e+01
--5.0750350486793231e+01
-1.1376411045847622e+01
-2.3399521479729035e+01
--5.4753380761270272e+01
-1.0578877996472540e+01
-2.2583809367107097e+01
--5.3419162796618743e+01
--1.3709188094525070e+01
-1.2590119392800615e+01
--3.1479947942750417e+01
--1.0178637736583693e+00
-1.9208280019947676e+01
--4.5737827620999461e+01
--1.1774308974167844e+00
-1.9512934063342474e+01
--4.6467934879964332e+01
--5.1655374290711915e+00
-1.7206428385568632e+01
--4.2558247119070593e+01
-1.3399907644134830e+01
-9.5559924491436679e+00
--3.2352488884230191e+01
-1.3231893765039549e+01
-1.0060262215393115e+01
--3.3129270718182667e+01
--4.1016121775011429e+00
-1.7889872070147092e+01
--4.3961668278256028e+01
-1.2053662101017485e+01
-6.6120265175865773e+00
--2.7199017196530534e+01
-1.3135704205742961e+01
-1.0456023058058058e+01
--3.4509825013950170e+01
--9.9318143770481111e+00
-1.6022074842769932e+01
--4.0105350705733947e+01
-1.4510502558290080e+01
-9.5050049180267138e+00
--3.3130144444902164e+01
-1.2428585003596000e+01
-7.4907586983478263e+00
--2.9241675722823860e+01
-7.7722363186680763e+00
-1.9677198467127933e+01
--5.0410856752599386e+01
-4.0829241302600137e+00
-1.9326793493947090e+01
--4.9167383454567670e+01
-9.5922192843808674e+00
-2.1449999768315774e+01
--5.4691069037387201e+01
-8.4713223809417784e+00
-2.1502366203467798e+01
--5.4662752926996525e+01
--1.2490741424862742e+01
-1.4847923736490015e+01
--3.7468448846749723e+01
--1.2516997736911756e+01
-1.4994195942457694e+01
--3.7655629813226540e+01
--1.2548688065568275e+01
-1.5027620409564786e+01
--3.7691763154319375e+01
-1.4605437765568730e+01
-9.4046140499470194e+00
--3.3620516034394015e+01
--9.4962361688891512e+00
-1.6013817509166568e+01
--4.0545209561558408e+01
--9.4781415699472920e+00
-1.5974440989869997e+01
--4.0446800798698554e+01
-8.1003437430869294e+00
-2.0775685017717930e+01
--5.3599587020206023e+01
--5.0978268071396942e+00
-1.7130687762052592e+01
--4.3674217808915088e+01
--5.0978268071396942e+00
-1.7130687762052592e+01
--4.3674217808915088e+01
-4.4074751393760510e+00
-1.8894728759001381e+01
--4.9569039207106357e+01
-1.0348723013117459e+01
-2.0754747430487246e+01
--5.3785757416633508e+01
-1.5374669019148307e+01
-2.1885048385685320e+01
--5.7497248211734949e+01
-1.3921388385441995e+01
-3.4214658968462790e+00
--2.2964029239076346e+01
-1.2597934369772577e+01
-1.0808762333940484e+01
--3.6562327771121581e+01
--3.4402189985256113e+00
-1.7291508695600061e+01
--4.5238051011338321e+01
-1.0677059543147296e+01
-2.0608041056315020e+01
--5.4745125839433960e+01
-1.0699109650545939e+01
-2.0612894481287711e+01
--5.4651800869883502e+01
--2.8496554397359617e+00
-1.7614303579958182e+01
--4.5969208092929975e+01
--2.8604042261118185e+00
-1.7470625255254404e+01
--4.5888719824934668e+01
--2.8791484372528613e+00
-1.7379240768139724e+01
--4.5561655987430441e+01
-2.6356711771035995e-01
-1.7839149819597431e+01
--4.7305823201707071e+01
-1.2497899539506649e+01
-9.7994051991136555e+00
--3.4927630973832443e+01
-9.2803011280383743e+00
-2.0215193620710096e+01
--5.4017409889387253e+01
-6.7644665940886402e+00
-1.9594521867164431e+01
--5.2381196011993786e+01
-1.1114630600890177e+01
-6.1767736575447261e+00
--2.7799832711867214e+01
-1.2653792566616964e+01
-6.7551479340208571e+00
--2.9564422474300059e+01
-1.0400434621097993e+01
-2.0185176010391142e+01
--5.4933120226807446e+01
-1.3989324109917250e+01
-2.9508374894107900e+00
--2.3109095143063943e+01
-4.5774393970724354e+00
-1.8580335385260373e+01
--5.1024578498001112e+01
--9.5035806348305449e+00
-1.5297416281203388e+01
--4.1475571651999310e+01
-1.2083948031909847e+01
-6.1625658684992120e+00
--2.9247833001922761e+01
-1.1633799512538943e+01
-2.0020552587224948e+01
--5.6548725520249377e+01
-4.6123986365005036e+00
-1.8322081411574644e+01
--5.1418645198597240e+01
-4.0930422188120490e+00
-1.8240793559737948e+01
--5.1390777599665931e+01
-1.7515132489434817e+00
-1.7816052758052706e+01
--5.0135562546162340e+01
-9.4418332746701488e+00
-1.9781020917839903e+01
--5.5884753940557033e+01
-1.3192719658245201e+01
-8.9627574634506288e+00
--3.5529244280233669e+01
-1.3578400827887085e+01
-9.1849270082359169e+00
--3.6063631160013436e+01
-1.3471227482782414e+01
-8.9110670719581009e+00
--3.5589473287027964e+01
-1.0052099083841528e+01
-1.9440678546226298e+01
--5.5783384808446115e+01
-1.3988199189012432e+01
-8.3787186337400215e+00
--3.5053832241477700e+01
-1.2680769680365808e-01
-1.7111418788064608e+01
--4.9444541538787938e+01
-3.7911949260582549e+00
-1.7649938886764776e+01
--5.1521508269525647e+01
-2.8085985603049285e-01
-1.6966869318985374e+01
--4.9115108177248018e+01
-2.7219170434128098e-01
-1.7000842351225192e+01
--4.9160093974678666e+01
-1.3820813304451804e+01
-3.6438587355558911e+00
--2.6221657753565502e+01
--5.1712942803724751e+00
-1.5702135391447468e+01
--4.5573530818011996e+01
-2.4211369624534293e-01
-1.7386962084568840e+01
--5.0690698004206695e+01
-1.3896245478624007e+01
-3.2909195897371855e+00
--2.5607468364960827e+01
-1.3798537250648502e+01
-7.9791668328399510e+00
--3.5641955340419265e+01
-5.4022255744060690e+00
--5.1640081974649932e-01
--1.5641680518968183e+01
--9.1344053545014852e+00
-1.3266695769770232e+01
--4.0388528398226946e+01
-1.2994128682669173e+01
-7.2330188004684910e+00
--3.3898989401570702e+01
--8.0452390336880057e+00
-1.4346522313624734e+01
--4.3532024654661527e+01
--4.7428575019718302e+00
-1.5107785851306808e+01
--4.6398736175816524e+01
--4.7428575019718302e+00
-1.5107785851306808e+01
--4.6398736175816524e+01
-1.4406188009892338e+01
-2.5291151480440339e+00
--2.5590571262348384e+01
--1.0341004611027367e+01
-1.3928444742231324e+01
--4.2493931203860647e+01
-1.8803430481926811e-01
-3.1297367115552137e+00
--2.2285452147082648e+01
-8.4211018120135456e-02
-3.1230730605985912e+00
--2.2220213087729228e+01
--1.1013424601062356e+01
-1.3623984202895038e+01
--4.1652158550257404e+01
--1.1043996137131387e+01
-1.3626109978083001e+01
--4.1683854285040205e+01
--1.1649771649461956e+01
-1.3266327078225009e+01
--4.1182718192954482e+01
--1.0630395006071199e+01
-1.3361803233583027e+01
--4.1816547788007185e+01
-9.6102291848523785e-02
-1.6042385192018354e+01
--5.0902098867007695e+01
-1.4160309452701890e+01
-2.4339446909394584e+00
--2.5755016458285127e+01
-2.7051147043064105e+00
-1.7023880765551984e+00
--2.0660084480893431e+01
--1.1870191317247752e+01
-1.3207649356759605e+01
--4.1725144131957371e+01
--7.9199670071421062e+00
-1.3851414526726369e+01
--4.4479418966258073e+01
-1.4202928457202562e+01
-2.4917345230722630e+00
--2.6452201925956487e+01
-1.4244997350090825e+01
-2.5190530929797821e+00
--2.6586244166330925e+01
--8.2575150366596473e-01
-1.5333277536048591e+01
--5.0362941295108904e+01
--5.0942681381565869e-01
-2.9363286109059747e+00
--2.2618816874988472e+01
-1.4577529988418986e+01
-1.9897027674378573e+00
--2.5862218076424696e+01
--8.9929363501143040e+00
-1.3649584444979691e+01
--4.4104782844308104e+01
-8.1600705772250204e-01
-1.5631816613824419e+01
--5.2091100436384998e+01
--6.3010101479483729e-02
-2.0732230985056210e+00
--2.1392856668081119e+01
-3.7181766098468274e+00
-1.4488145651813019e+01
--5.1581665884937010e+01
-1.3940004291114642e+01
-1.3734399238351380e+00
--2.5169884439743939e+01
-6.4159808312814670e+00
-1.3015860868239656e+01
--4.9314551591607383e+01
--6.8382834104926926e-01
-2.4210319319353553e+00
--2.2237952448971591e+01
-1.4305635779799129e+01
-1.8347966158537912e+00
--2.6991244295432367e+01
--1.3296479650929129e+00
-2.7500285349222788e+00
--2.3207608230102547e+01
-1.4935077926014394e+01
-8.0106971698475393e-01
--2.5611166326836496e+01
--4.4618646523899610e+00
-1.3449668109301928e+01
--4.8803980752493352e+01
--1.4836952797664564e+00
-2.4919920758492831e+00
--2.3297873794784099e+01
--3.4088299281212597e+00
-1.3798723351482673e+01
--5.0159195798953419e+01
-3.7306727285786740e+00
-5.6860429259639278e-01
--2.0673570583951356e+01
-1.3109484934426302e+01
-2.8844926488435871e+00
--3.0291328368008212e+01
-3.3433726332073070e+00
-1.9172125310035690e-01
--1.9987255521076520e+01
--6.9551810158927303e+00
-1.2266891061693414e+01
--4.7497915388780129e+01
-2.5137370534384396e-01
-6.6830288209746658e-01
--2.0396269452470946e+01
-2.5137370534384396e-01
-6.6830288209746658e-01
--2.0396269452470946e+01
--1.5469169010841630e+00
-3.4402999107904813e+00
--2.6973809579652453e+01
--1.8937568478289020e+00
-2.2845548327914429e+00
--2.3910396736218072e+01
--5.6361570425571443e+00
-1.2134358347964291e+01
--4.8966445510443222e+01
-1.3571920384912842e+01
-8.9457634229496985e-01
--2.9088091457555748e+01
-1.2005176284586263e+00
--2.4456766818724340e-01
--2.0361726742977829e+01
-1.4935910489999740e+01
--1.4364999455221810e+00
--2.4350829133462959e+01
-1.5055765322609480e+01
--1.3922171330264357e+00
--2.5098193388598052e+01
-5.8830330145362657e+00
--2.5363364872515550e+00
--1.7518606863556393e+01
--9.3696129043797260e-01
--1.6275840055254776e-02
--2.1377505466803612e+01
-3.3454167583150833e+00
--1.2691929889143374e+00
--2.0428771377504088e+01
-6.3361820261810049e+00
--1.4951692771572458e+00
--2.1360087855053088e+01
-3.4344517565326642e+00
--1.3980645121228925e+00
--2.0374173107242669e+01
-1.4884152464156948e+01
--1.2201231114839637e+00
--2.7723404915463860e+01
-2.5932020792168269e-02
--4.9222443738840077e-01
--2.1260985853842726e+01
--3.5531346111047584e+00
-1.3454805216929644e+00
--2.5224333887013142e+01
-1.4068261370246180e+01
--6.9565933152297299e-01
--2.9592475717317466e+01
-1.4487653330456240e+01
--1.3014358881414332e+00
--2.9709346999203007e+01
-1.4976202788602794e+01
--2.4994951056831280e+00
--2.7147184773642607e+01
--3.8462075212174565e+00
-1.8201373746039907e-02
--2.3353187192140950e+01
-1.4418267730227923e+01
--2.0299248965680490e+00
--2.9491272779566657e+01
-3.5550481297656900e+00
--2.6446892884149551e+00
--1.9583030181716790e+01
--2.9119351238911828e+00
--5.1416300714618313e-01
--2.2800750557584813e+01
-5.9906644809596159e+00
--3.6904767647354846e+00
--1.8344160769391880e+01
-5.9906644809596159e+00
--3.6904767647354846e+00
--1.8344160769391880e+01
-8.3833637990804477e-01
--2.1248545135948338e+00
--1.9969011916910862e+01
-6.2152848595923782e-01
--1.9782266076444937e+00
--2.0074544312915727e+01
-6.5811742898052350e-01
--2.0037039768154221e+00
--2.0108602757875506e+01
-6.4607748437470462e+00
--3.5699843425842968e+00
--1.9477925604128252e+01
--3.4384011089125357e+00
--5.2240954017127617e-01
--2.2852884385559211e+01
-1.5306763045167941e+01
--3.2234164368664526e+00
--2.7548683615789493e+01
--3.1107279154914549e+00
--9.5041250202190153e-01
--2.2277608261543879e+01
-4.3712485570754147e+00
--3.1210197862934637e+00
--2.0791909134329185e+01
--4.0436926957841246e+00
--7.1666860295535439e-01
--2.3403044623689645e+01
--2.5415100349562203e+00
--1.6001465755201745e+00
--2.1380422468451453e+01
--4.7069744132136693e+00
-2.4537038886678957e+00
--3.6211608332911595e+01
--3.9547681015783995e+00
--7.6010376809578040e-01
--2.3988624634287188e+01
-1.0359070651446700e+00
--2.9253854349494683e+00
--1.9602584607296826e+01
-1.3202853444144160e+00
--2.9120244500430932e+00
--2.0062177984898966e+01
-1.4217978195329001e+01
--4.2039997879718376e+00
--2.6487552770086349e+01
--7.6228331002745009e-01
--2.5299362617340981e+00
--2.0171073210832745e+01
--2.8991752001508218e+00
--1.7930542608925879e+00
--2.1513728768683539e+01
--9.9535104742571001e-01
--2.4900090352260267e+00
--2.0088378508546654e+01
-8.1810368748238482e-01
--3.0634632033220193e+00
--1.9443332139807637e+01
--7.9606750164396622e+00
-2.6800960071198534e+00
--3.6288919630018924e+01
--5.6000176976669791e-01
--2.6913338092478205e+00
--2.0174101029285509e+01
--5.1392152935608379e+00
-1.5972065842250327e+00
--3.5085693006036664e+01
-6.2001814497714924e-01
--3.1632714569936153e+00
--1.9833409744519781e+01
--6.3824285822168969e+00
-1.5935207973178991e+00
--3.4629747827147355e+01
-2.9104186937344485e+00
--3.5935501738413125e+00
--2.0336618035713617e+01
-2.8248951378038978e+00
--3.6927837022733931e+00
--2.0106640854436524e+01
--6.0293990352144684e+00
-1.3872977010332164e+00
--3.4358502938892698e+01
--2.0148057152748611e+00
--2.4177737314176606e+00
--2.1550761870352169e+01
--5.3784307136960052e-01
--3.0089474662092472e+00
--2.0524473437710633e+01
--5.8994549275656389e+00
-8.7554742053106316e-01
--3.3644513010736915e+01
--2.6299747177587274e+00
--2.2976008173243776e+00
--2.2224338471765115e+01
--2.6194655138527536e+00
--2.2933477291201734e+00
--2.2297929332482283e+01
--6.0994598584371236e+00
-8.5480067602811205e-01
--3.3296571581464683e+01
--3.5164898384017529e-01
--3.1631148818791130e+00
--2.0519737186568641e+01
-7.2896710127286046e-01
--3.6291397409459520e+00
--1.9806636662240933e+01
--6.7285095665254131e+00
-4.7141286168421372e-02
--3.0100123641702709e+01
-2.7399411852549052e+00
--4.0229420225820958e+00
--2.0487660399265728e+01
--3.1828139591211064e+00
--2.0715712296538205e+00
--2.3538227124425298e+01
--2.1449423454108621e-01
--3.2772293912911734e+00
--2.0663918577807248e+01
-3.4185991164760510e-02
--3.4312728677432647e+00
--2.0495708381548873e+01
--1.1816402586776107e+01
-1.9137607193801618e+00
--3.4922960962692848e+01
--1.1750577239330628e+00
--3.1820354368126678e+00
--2.1165723302890541e+01
-2.9567071318561635e+00
--4.5031333548388854e+00
--2.0281967989382899e+01
--7.2142199792135022e+00
-7.1025933514924630e-02
--3.2683810628690587e+01
-8.5999120775059401e-01
--4.1082824094989938e+00
--2.0214867252305528e+01
-2.8046083003075015e+00
--4.4413153226735220e+00
--2.0970949109091418e+01
--3.5364107098928010e+00
--2.3921313109348690e+00
--2.4069388828309247e+01
--7.1086661459110960e+00
--1.0268713630777648e-01
--3.2155229904938842e+01
--5.6411835508994264e+00
--6.4966758241301792e-01
--3.1414559104558105e+01
--6.6180621790775245e+00
--2.4931477322932219e-01
--3.2282136658658814e+01
--1.1853567565175966e+00
--3.5653029159676097e+00
--2.1230402831545327e+01
--1.8562702781629790e+00
--3.2219194249885903e+00
--2.2208573474696522e+01
--1.9832036415205698e+00
--3.2137664469060518e+00
--2.2199784295456269e+01
-5.2458757431608145e+00
--5.0708778429745234e+00
--2.2016327689631034e+01
--9.3527954032131411e-01
--3.7483522135740954e+00
--2.1425230576982926e+01
-7.4841321910491965e-01
--4.3118829548195992e+00
--2.0901577304048132e+01
--9.0408169275536441e+00
--9.9082987627105865e-02
--3.2334874530087006e+01
--1.9273123165927781e+00
--3.4919158149500675e+00
--2.2321986396327574e+01
--2.8677793685867652e+00
--3.1110680177589622e+00
--2.3133759316966518e+01
--3.0798440459952543e+00
--2.8997868270387515e+00
--2.4422056209645849e+01
--8.3226522016451749e+00
--5.0320594704435850e-01
--3.1837768832570589e+01
--2.0742813546498025e+00
--3.5593191560408552e+00
--2.2539177390896853e+01
-2.3729449225648542e+00
--4.8037319466424417e+00
--2.1313931617195855e+01
-1.4913078216631201e+00
--4.6723050092548668e+00
--2.1071314827412326e+01
--4.8457624993855958e-01
--4.1206240190148993e+00
--2.1321830413801639e+01
-1.8026680876730150e+00
--4.8405549814756332e+00
--2.1186256595841176e+01
--8.3033299579467776e+00
--9.0750308711547079e-01
--3.1284300650940736e+01
-1.9136096418076149e+00
--4.9048702550828507e+00
--2.1301455973613063e+01
--1.8450803618957323e+00
--3.9239438720454882e+00
--2.2593711293028083e+01
--2.4113141780166476e+00
--3.8912440404809878e+00
--2.3292410368847577e+01
--8.1206726725241456e+00
--1.5619454893381572e+00
--3.0399341561814410e+01
--7.9009730494545529e+00
--1.5973659755778804e+00
--3.0462564509757378e+01
--8.8494786767872657e+00
--1.3709810330001959e+00
--3.0557008434807937e+01
-6.3700872848731460e-01
--5.0457066344083241e+00
--2.1504186917587930e+01
--1.3307810968102243e+00
--4.7125284323945387e+00
--2.2101718509503318e+01
-9.8242247559407325e-01
--5.3893347539170930e+00
--2.1423208530182904e+01
--6.7520986456616683e+00
--2.6883246568625543e+00
--2.8636260603827882e+01
--7.2397491674523744e+00
--2.4479275055591656e+00
--2.9319957844336848e+01
--1.1083680164417768e+01
--1.4916217908092948e+00
--3.0452016836472886e+01
--7.0887475431136480e+00
--2.9161285390822713e+00
--2.8653529872609010e+01
--6.7552340728816844e+00
--3.1786449928978908e+00
--2.8058403502864156e+01
-3.8307411523952912e+00
--6.8561716272395286e+00
--2.1496216306194768e+01
--3.5482785275934905e+00
--5.0853274360890017e+00
--2.4009641097528842e+01
-4.3038766309002270e+00
--7.8199802019732054e+00
--2.1285910357417606e+01
--8.8226672181226551e+00
--4.2812171707552400e+00
--2.6778102443289530e+01
-2.5731701806867018e+00
--8.2291708925513873e+00
--1.9173345074661746e+01
-2.4720719494593872e+00
--8.2164790328359629e+00
--2.1284727119743383e+01
-2.2505905763855893e+00
--8.2449136283557269e+00
--2.2052775758948968e+01
-1.8287915162979576e+00
--8.1795418848501029e+00
--2.1203469303491438e+01
-3.0892407439149845e+00
--8.9042058519721579e+00
--1.9624601688613950e+01
-1.7301979087093842e+00
--8.7499915535862769e+00
--2.1336715261858622e+01
-3.4649868587794008e-01
--8.1718485105544492e+00
--2.0691837654077631e+01
-1.1887653888351914e+00
--8.6476194634196570e+00
--2.3128754962298441e+01
-1.9852576974215910e+00
--8.8693831947597541e+00
--1.9871601280690200e+01
-8.9255491860949909e-01
--8.6839765729970786e+00
--2.2565089282168035e+01
-4.0901453436342422e-01
--8.3643918541904405e+00
--2.0480588513318651e+01
-2.7266600113925694e+00
-2.6560530532496866e+01
--4.0789225026940677e+01
-1.9834769991331067e+00
-2.6566595389941320e+01
--4.0976014058037862e+01
-8.9394528091665038e+00
-2.9457002667136628e+01
--4.5109970719812452e+01
-1.3841570585306338e+01
-2.9611560936746521e+01
--4.5261717501546734e+01
-8.1612305239156910e+00
-2.8469191961320124e+01
--4.3953561055923913e+01
-5.0550350668615645e+00
-2.7049801453786749e+01
--4.3088753573695314e+01
-1.4275567717468270e+01
-3.0150067932193938e+01
--4.7365121028463363e+01
-4.7588532620748794e+00
-2.7941006248335921e+01
--4.4133530513216279e+01
-4.2130649476036028e+00
-2.6568159955283978e+01
--4.2597867481432189e+01
-1.4414679791398560e+01
-3.0793161280425625e+01
--4.8528978339232474e+01
-1.4128636299810461e+01
-3.0392750296915565e+01
--4.8105604735356181e+01
-1.2079187271333485e+01
-2.9541066295398441e+01
--4.6989360662378530e+01
-8.1703534592731897e-01
-2.5409103047267241e+01
--4.1227112194548127e+01
-6.6609782359849543e+00
-2.7321356033576635e+01
--4.4093709134323525e+01
--4.6439060821844069e-01
-2.4550362724977894e+01
--4.0228809657724021e+01
-1.1630506930659458e+01
-1.6248940643362051e+01
--3.0078906768425981e+01
-9.8471587090130761e+00
-2.8257063987632982e+01
--4.5771493558500637e+01
-5.4472377881605656e+00
-2.6628488523064554e+01
--4.3515754252003845e+01
--7.6251817316623893e-01
-2.4261238052965364e+01
--3.9840715631071980e+01
-5.0305037767070617e+00
-2.6502608128077849e+01
--4.3261224579791964e+01
-1.3129184541935574e+01
-1.0291856082442887e+01
--2.2910075130152343e+01
-1.5258957242502980e+00
-2.5064444529745877e+01
--4.1409188665336565e+01
-1.2470818981214583e+01
-1.5983465149823180e+01
--3.0145584360126986e+01
--1.6138796293744020e+00
-2.3966395387546186e+01
--4.0080659152027955e+01
-1.2225531138620779e+01
-1.6582623553389055e+01
--3.1219037891846000e+01
-1.4335361939529596e+01
-1.7215902406620259e+01
--3.2609319838595205e+01
--1.0547236226962630e+01
-1.9839592721749430e+01
--3.3802969419226031e+01
--9.6625798839594026e+00
-2.0448962353861894e+01
--3.4872924275898910e+01
-6.1524601585836942e+00
-2.6504364020046154e+01
--4.4283585184511388e+01
-6.8291328445337127e+00
-2.7835854555027510e+01
--4.6002410567642038e+01
-1.2854504452478269e+01
-1.5032895763391315e+01
--2.9388146027611093e+01
-4.6020846275232963e-01
-2.4430136127289714e+01
--4.1153446571357676e+01
--4.0518244872314240e+00
-2.2914813456397603e+01
--3.8852613658947860e+01
-1.1915262621492852e+01
-1.0844119815189845e+01
--2.4163040153260088e+01
-1.2920204190143284e+01
-9.0441084238801146e+00
--2.1984277795931643e+01
--3.8884318545709120e+00
-2.2778702238920356e+01
--3.8840818280331909e+01
-8.9865277702943969e-01
-2.4397914126023217e+01
--4.1461587328735476e+01
-7.1102211257815275e+00
-2.6707936247504836e+01
--4.5206836148846612e+01
-1.4242453213388293e+01
-1.0216385154298640e+01
--2.3901717218320140e+01
-8.6886409396225837e+00
-2.6876819742566980e+01
--4.5549202973404185e+01
-7.8328566838946068e-01
-2.4407214623305670e+01
--4.1929107417432725e+01
-2.9037099521239922e+00
-2.4881699830994325e+01
--4.2722817331955248e+01
-6.0771889473031671e+00
-2.5990902359296228e+01
--4.4579725823950064e+01
-7.3773227607146756e+00
-2.6528439797916771e+01
--4.5548427998383566e+01
-4.1431871348872468e-01
-2.3959085757546148e+01
--4.1453346967931942e+01
--3.1523544235551499e+00
-2.2964172728860234e+01
--3.9843148033143990e+01
--2.9051237189556045e-01
-2.3701704467796116e+01
--4.1059978332392816e+01
-5.3398474217541283e+00
-2.5663865584767422e+01
--4.4262987169251822e+01
-1.3546021422241653e+01
-9.3908122341371563e+00
--2.3058938097069259e+01
-3.9568880675090806e-01
-2.3763010025074937e+01
--4.1724321320630111e+01
-9.9846527030082710e-01
-2.4233397149710761e+01
--4.2444533571205135e+01
--1.1486286458820953e+01
-1.9245163573766508e+01
--3.4472919268343766e+01
-4.9624665190308237e+00
-2.5166345472530548e+01
--4.4574859652072341e+01
-5.0492346935571897e+00
-2.5245243431668200e+01
--4.4714397847187129e+01
--1.2926976007364411e+01
-1.8677488808773621e+01
--3.3737633038938498e+01
--1.0515333712790877e+01
-1.9470878955357062e+01
--3.5103270714261846e+01
--1.0510703549419000e+01
-1.9422119607268542e+01
--3.4946527553930750e+01
-3.7227553407143182e-01
-2.3530676721093375e+01
--4.1950240098114108e+01
--3.4459212201948536e-01
-2.3131505817010346e+01
--4.1425633010883629e+01
-1.4374889996352994e+01
-2.7971674151017552e+01
--4.9445599825050145e+01
-1.8247961506535631e+01
-2.8278909148528040e+01
--5.0430802798168884e+01
-5.5380718632348378e+00
-2.5396551261152130e+01
--4.5432975000349444e+01
-8.8667901560378528e+00
-2.6230448944671629e+01
--4.6790011545670033e+01
-2.2345499720099781e+01
-2.9617393471430262e+01
--5.2920881976043269e+01
--4.1314906274959320e+00
-2.1690554037133158e+01
--3.9134194777756036e+01
--4.0872110020524932e+00
-2.1926625058951739e+01
--3.9513160427715874e+01
-1.7185759429963341e+00
-2.4527582325738461e+01
--4.3942690336547521e+01
-1.7651906127199748e+01
-2.8780229101747601e+01
--5.1395124944626893e+01
-1.6767069976757771e+01
-2.7651116025785921e+01
--4.9683054232617764e+01
-9.5450326625791551e+00
-2.5827442556127362e+01
--4.6656058065480536e+01
-9.5450326625791551e+00
-2.5827442556127362e+01
--4.6656058065480536e+01
--1.1330477374785749e+01
-1.9170192438713197e+01
--3.5211706090090075e+01
-1.1818197711927212e+01
-2.6471270007224916e+01
--4.8121927397913716e+01
-1.2303517933082285e+01
-2.7040780265138967e+01
--4.8958394926780450e+01
-1.1552870872180918e+01
-2.7074003398597434e+01
--4.9173220339161730e+01
-1.1079107581045333e+01
-2.5994625608959115e+01
--4.7380722270663320e+01
-1.1756639610378370e+01
-2.6945275809389024e+01
--4.8935861836438370e+01
-1.7147176949493506e+01
-2.8808076547458104e+01
--5.2011681504138508e+01
-1.0593937947751360e+00
-2.3023783744280962e+01
--4.2977805512937998e+01
-1.1050078082274817e+00
-2.3169317737396618e+01
--4.3117415217205497e+01
-9.8848232043931166e+00
-2.5932585790492830e+01
--4.8155661646606383e+01
--1.1059330103335062e+01
-1.8331794562787049e+01
--3.4810710313692603e+01
--1.6254346127814667e+00
-2.2057651814049006e+01
--4.1669151859787029e+01
--3.0182650501440205e+00
-2.1375053666340843e+01
--4.0810763700831231e+01
-1.5191081149909490e+01
-2.6379234711497471e+01
--4.9952774645436854e+01
-4.3051839659249724e+00
-2.3622425824261313e+01
--4.5091927743444828e+01
--9.1164973971619467e+00
-1.9236826085497722e+01
--3.7180270546545366e+01
--9.1231513407313791e+00
-1.9010915325592542e+01
--3.6698019717678704e+01
-9.2947463861161630e+00
-2.4976115798005779e+01
--4.8028709610097188e+01
-1.2794197941393337e+01
-2.6024413611111086e+01
--4.9855041634257738e+01
-1.4976322883162139e+01
-2.6371540215277779e+01
--5.0755175262635035e+01
-1.4844217428933623e+01
-2.6106546151453990e+01
--5.0298734769384069e+01
--2.1969908826378237e+00
-2.1447101175099739e+01
--4.1465894605376846e+01
-1.0834571112046470e+01
-1.1777690984917495e+01
--2.8785634283494382e+01
-4.4852222846272163e+00
-2.3497094380698559e+01
--4.5569403829152613e+01
-4.2377563365322564e+00
-2.3010163774876645e+01
--4.4694221594253712e+01
-8.5825843179291077e+00
-2.4529791957145260e+01
--4.7675541992892562e+01
--1.0374484862982460e+01
-1.8276045915333249e+01
--3.5964560467226129e+01
--1.0374484862982460e+01
-1.8276045915333249e+01
--3.5964560467226129e+01
--1.0315570374062716e+01
-1.8251597259344329e+01
--3.5892684556720006e+01
-9.5054046372412841e+00
-2.5072980150247627e+01
--4.9030760753434173e+01
--2.6450049245912730e+00
-2.1145184173485660e+01
--4.1613419727946884e+01
-1.2774879745032777e+01
-1.1252078323572578e+01
--2.8553684460539952e+01
--3.1755371948935260e+00
-2.0950521653022761e+01
--4.1376026910191385e+01
--2.9643313678853951e+00
-2.0905870388244253e+01
--4.1437730769112584e+01
--1.2840329911063931e+01
-1.7338615644041667e+01
--3.4709778052480317e+01
-2.8944210737881754e-01
-2.1874805840370620e+01
--4.3612055832709302e+01
-7.7084057681781255e+00
-2.4077507131957880e+01
--4.8042850133435664e+01
--7.3978640575976637e+00
-1.9430380477301068e+01
--3.9046957001895485e+01
-8.7319684113623115e+00
-2.4158649172657622e+01
--4.8500565714550717e+01
--7.9942809121353156e+00
-1.9110594356596618e+01
--3.8688094094837808e+01
--7.9646881543861561e+00
-1.9133187098093032e+01
--3.8895759051991789e+01
--1.8419274966232715e+00
-2.1006583911652545e+01
--4.2472762547609051e+01
-1.3601743802688310e+01
-8.4307308598444024e+00
--2.5229059768173702e+01
--4.5659690873452172e+00
-2.0030718050795006e+01
--4.0548873219701036e+01
--2.4299823591714005e+00
-2.0667445777166758e+01
--4.2024186305078388e+01
--6.8575519943975429e+00
-1.9377130058050987e+01
--3.9425048964680578e+01
--9.0973702229740248e+00
-1.8582029305162944e+01
--3.7894548733228831e+01
-1.4152650855102538e+01
-2.4922180213524229e+01
--5.0960712500593360e+01
-1.1089696931714023e+01
-9.5744099440250352e+00
--2.6906526090331056e+01
--1.2629814433319684e+01
-1.7009972270582487e+01
--3.5212902024641387e+01
-1.2499417243874515e+01
-8.3931375438354312e+00
--2.5711145018296993e+01
-1.4268134794934964e+01
-2.4759155725638447e+01
--5.1387730982521539e+01
-1.2194448602621115e+00
-2.1517595669114876e+01
--4.4823282981234414e+01
-7.7462675279977082e+00
-2.2979585832923039e+01
--4.7967285410269646e+01
-1.2949650414006143e+01
-6.6501118798969978e+00
--2.3129921239291964e+01
-1.1344926478771727e+01
-1.2476091333338598e+01
--3.2002480122032495e+01
-2.2084215073849736e-01
-2.1141588037785919e+01
--4.4346544241835531e+01
-5.1636550527009595e-01
-2.1262299486024506e+01
--4.4681880678242635e+01
-5.2108388702865394e-01
-2.1202015158030452e+01
--4.4609365302597816e+01
--9.3916097155672027e+00
-1.7993370223742005e+01
--3.8140948722791634e+01
--9.3642138682961686e+00
-1.7996045661266006e+01
--3.8325799102202048e+01
--9.3739609019596557e+00
-1.8212563465742157e+01
--3.8756042894295334e+01
--9.1186882965526710e+00
-1.8119075161839259e+01
--3.8518083570369633e+01
--1.0833516731381991e+01
-1.7401689797627007e+01
--3.7159379122082285e+01
-2.3952012753726745e+01
-2.8790461630015503e+01
--6.0774250681530198e+01
--3.5972245661766693e+00
-1.9701532501309838e+01
--4.2097593890113224e+01
-2.3384575248826014e+01
-2.9181952877377373e+01
--6.1721674745078033e+01
-1.1774929896225913e+01
-1.3105771715729921e+01
--3.3977492024495611e+01
--9.7558078818282166e+00
-1.7744969501656168e+01
--3.8660233952803189e+01
-1.9715134538805014e+01
-2.5137494251439232e+01
--5.5042279667614643e+01
-1.0734925387024621e+01
-2.4162710844217031e+01
--5.2699821583373023e+01
-1.3150607985099340e+01
-8.1376797274719124e+00
--2.7072691082951430e+01
-8.8660518395653973e+00
-2.3411019561880067e+01
--5.1642074488157512e+01
-1.2213883822596696e+01
-7.3879416640921622e+00
--2.5810816515469487e+01
--9.7418012721537011e+00
-1.7191082107966693e+01
--3.8438518634623428e+01
-2.1986301965293084e+01
-2.7389743233985861e+01
--6.1569176084036130e+01
-1.3214347306731456e+01
-7.7756974780525505e+00
--2.7023036464636650e+01
--4.7884841469490906e+00
-1.9151707879422194e+01
--4.2892258398343834e+01
--4.7884841469490906e+00
-1.9151707879422194e+01
--4.2892258398343834e+01
-1.1913708130052690e+01
-2.3251330453075848e+01
--5.3526257156719382e+01
-1.2392200248233433e+01
-1.1510501606595527e+01
--3.4009768280720650e+01
-1.2463510423169531e+01
-1.1652608690063371e+01
--3.4205446577540130e+01
-1.1646603090433493e+01
-8.4346358723522297e+00
--2.8575208225965071e+01
-1.2039876594923394e+01
-8.6931377127727245e+00
--2.9100761625871211e+01
--4.2818041513620280e+00
-1.8426222350261657e+01
--4.2819582768731649e+01
-1.2642176259821017e+01
-6.9574077719608027e+00
--2.6588153550278509e+01
--6.7008918177757160e+00
-1.7481862691909406e+01
--4.1003452679370355e+01
-8.0940734897196265e+00
-2.1247617201912959e+01
--5.0883168136920638e+01
-6.8972747830702401e+00
-2.2562977404906924e+01
--5.2953807198419199e+01
-7.7731743434224998e-01
-1.9681577047192587e+01
--4.6917337140772929e+01
--4.2712944599121458e+00
-1.7923963318573001e+01
--4.3045293987493984e+01
-1.3226874431873092e+01
-5.8601036511779547e+00
--2.5429044587956724e+01
--9.9383170275700241e+00
-1.6436062350275616e+01
--3.9297479463398432e+01
--8.2539502261544551e-01
-1.8984017532106410e+01
--4.6104295117931464e+01
-5.7196187267886627e+00
-2.0885713009869036e+01
--5.0995952135095571e+01
-1.3318050829470813e+01
-5.2027813347399654e+00
--2.4825836383259862e+01
-5.1500694547906321e+00
-2.1030694657753013e+01
--5.1451808119143280e+01
-1.1914437187739512e+01
-8.1646083401165033e+00
--2.9674358170895729e+01
--9.4088839286936121e+00
-1.6334666725085551e+01
--4.0333846049269873e+01
--9.3658724923914907e+00
-1.6198208867404443e+01
--4.0104959326633754e+01
--9.3059121412160390e+00
-1.6093415296816399e+01
--3.9985103913273470e+01
--9.4538870056521809e+00
-1.6415087183591012e+01
--4.0159401026303101e+01
--6.2767857872900716e+00
-1.7142859438869046e+01
--4.2608858411491525e+01
-1.0434639048608245e+01
-2.2116114665412887e+01
--5.4724532541829639e+01
--1.0608262663759678e+01
-1.5824673209098325e+01
--3.8882027488421834e+01
-1.1018634786909626e+01
-7.0407766256826623e+00
--2.7435049104226973e+01
-1.3715278406125098e+01
-2.3324257024348626e+01
--5.7842837175451407e+01
--5.3710134857327247e+00
-1.7152375846206731e+01
--4.2912551761261945e+01
-1.3987576163452150e+01
-1.0782837324014121e+01
--3.5248534140589356e+01
-8.5309534300851653e-01
-1.9242271811835291e+01
--4.8179293340302635e+01
-1.3125322517060782e+01
-9.3114905626019180e+00
--3.2653546605248494e+01
-1.3002656289281935e+01
-8.8752117127111365e+00
--3.1869131098663544e+01
--4.1214413737116695e+00
-1.7439323549364421e+01
--4.4255019905313731e+01
--4.7655692521321145e+00
-1.7179379841320078e+01
--4.3822762401924884e+01
-1.3191780301810942e+01
-5.5641130204239433e+00
--2.6479478890608647e+01
-1.2481093858165112e+01
-7.2351792824922523e+00
--2.9265073183069308e+01
-1.3057395374577611e+01
-8.8551018240293118e+00
--3.2446657059920334e+01
-1.2960993494756218e+01
-8.8441725110886029e+00
--3.2297566159950179e+01
-1.3021845760639541e+01
-6.1732050655680997e+00
--2.7551744213125250e+01
--1.2446165536174663e+01
-1.5015251656262695e+01
--3.8466887707189265e+01
--9.6651016868666275e+00
-1.5647561080259702e+01
--4.0982670066387698e+01
-1.2775110929040885e+01
-1.0667210277950399e+01
--3.6824062320565510e+01
-1.3639500783771741e+01
-4.9918173708108524e+00
--2.6533719486642109e+01
-1.3728607389115028e+01
-9.2602140136070759e+00
--3.4928775432166695e+01
--6.2107819611750532e+00
-1.6075790155400668e+01
--4.3005972838455826e+01
-1.3481718303242788e+01
-9.4833090083158318e+00
--3.5503369764835568e+01
-1.3481718303242788e+01
-9.4833090083158318e+00
--3.5503369764835568e+01
--4.1596518711335007e+00
-1.6233282076116627e+01
--4.4252949543991036e+01
-1.3428695388083050e+01
-9.8228543132430204e+00
--3.6450482495910144e+01
-1.3326671229816755e+01
-8.8672392939421005e+00
--3.4474067777172507e+01
--9.7065472054498958e+00
-1.5128896452179859e+01
--4.1080390845850772e+01
--3.1778159811247693e+00
-1.7029188935684324e+01
--4.6400838629586659e+01
-1.3258155098232747e+01
-8.5858634411990984e+00
--3.4062746681658169e+01
-6.6533165768446101e-01
-1.7600370464672181e+01
--4.8645872215238406e+01
-2.4944682629864854e+00
-1.8050551941420888e+01
--5.0176745316676609e+01
-1.2251414824530553e+01
-7.6540751527176099e+00
--3.2028391611789019e+01
--5.2588763658254720e+00
-1.6134168740852640e+01
--4.4685206389977857e+01
-8.1609850935464809e+00
-1.9117862939236936e+01
--5.3721426492095240e+01
-1.4927893906032789e+01
-1.9485546671192502e+01
--5.5836640672737836e+01
--1.2192236566430914e+01
-1.4264148017747848e+01
--3.9107305703917170e+01
-1.3283732056847352e+01
-8.1404434195193645e+00
--3.3784946294332123e+01
-1.3917413169916403e+01
-8.2577121155508220e+00
--3.4291345398834608e+01
-1.3312459772280341e+01
-8.0443519273145885e+00
--3.3532294113151522e+01
--5.0779391002784999e+00
-1.6227530268210710e+01
--4.5411693670665329e+01
--4.0025467712256440e+00
-1.6154757366252465e+01
--4.5720152293938987e+01
--6.8693267861090348e+00
-1.5593306440227284e+01
--4.4035450941256357e+01
-1.2406992863140374e+01
-5.0953047481036347e+00
--2.8023108397372642e+01
--2.3575190030889690e+00
-1.6287256592737311e+01
--4.6852025061722244e+01
-1.3142066703295844e+01
-7.6193137533356889e+00
--3.3294296443112984e+01
-1.3474224274597159e+01
-4.0193045349914867e+00
--2.6584903615631671e+01
-4.2007364903799624e+00
-1.7647369096631113e+01
--5.1781219210707455e+01
--2.9108110309969133e+00
-1.5922164358655058e+01
--4.6347590130064290e+01
-1.2594830586926115e+01
-4.5631480572256677e+00
--2.7543924180372994e+01
--7.0210819894666319e+00
-1.5241021300306258e+01
--4.4119032082302596e+01
-5.7219492611538350e+00
-1.5310341282431600e-01
--1.6664144651828373e+01
-5.7219492611538350e+00
-1.5310341282431600e-01
--1.6664144651828373e+01
-1.4077238740921816e+01
-2.9433121336747265e+00
--2.4861594102485057e+01
-2.6389229857117145e+00
-3.7023596226446753e+00
--2.3232977121091338e+01
--3.0739547582333304e-01
-1.6114325000796569e+01
--4.9390459475802786e+01
--2.4220972225728063e-01
-1.6493658747622241e+01
--5.0140762162368560e+01
--9.3567641307209009e+00
-1.4293176412577328e+01
--4.3040610620622182e+01
--6.8400554617601583e-01
-1.6332928653929720e+01
--4.9596562632471219e+01
--6.4477840469003658e+00
-1.4548865254950163e+01
--4.4796140233380598e+01
--1.2280804791702629e+01
-1.3286604268275063e+01
--4.0439087776808961e+01
--1.0098641975632214e+01
-1.3994204639503472e+01
--4.2515968582426524e+01
-1.4479592641580245e+01
-1.1499919045201872e+00
--2.2397644885551127e+01
--1.1045592006862975e+01
-1.3512820191130817e+01
--4.1371060588936203e+01
-1.3423841001699804e+01
-3.2434874521197301e+00
--2.6773783848280406e+01
-5.9417758969349721e-01
-2.5283236327903125e+00
--2.1384923264946291e+01
--3.9692207900189647e-01
-3.1171159651820246e+00
--2.2691538265754406e+01
-1.3384632428948596e+01
-3.4299354700325302e+00
--2.7917804736299150e+01
--1.3058756037609834e+01
-1.2906861313468792e+01
--4.0474805877812301e+01
--3.3461484151728476e+00
-1.5112307561986107e+01
--4.8306636988057662e+01
--1.2107426552471141e+01
-1.3010593336329986e+01
--4.0975033233303890e+01
--6.9993390746537241e+00
-1.4008534688312107e+01
--4.5245110855948674e+01
-4.0905542758122893e-01
-2.3468063512012090e+00
--2.1400490818050255e+01
-2.1022680856356541e+00
-1.7016186508056537e+00
--2.0425183615378444e+01
--1.0712593833991370e+01
-1.3263380982465289e+01
--4.2396937023340421e+01
--1.4434425955818115e-02
-2.4578142988974228e+00
--2.1733211645332602e+01
-1.3014809152274134e+01
-3.1954254424919339e+00
--2.8384681357056724e+01
--1.0547423052302550e+01
-1.2771462094749459e+01
--4.2349307154249075e+01
-1.2696040537611605e+01
-3.7922317995569035e+00
--2.9692866749077243e+01
-4.7577885296643407e-01
-1.5279146293252426e+01
--5.2035389005877242e+01
--1.2359766238430991e+00
-3.1958412301917756e+00
--2.3895081332298005e+01
--2.5848125075396666e-01
-1.4769150766080550e+01
--5.1512713423672224e+01
-1.3541849447385218e+01
-2.1905104646670219e+00
--2.7195460898310852e+01
--8.5283508328786917e-01
-2.4042465759283602e+00
--2.2366735502886115e+01
-6.8911973966386841e-01
-1.4066052378952270e+00
--2.0668939971088335e+01
-1.8500837237971579e+00
-1.0178589685436923e+00
--2.0142339668718435e+01
-4.8953055542632278e+00
--1.7563404656381012e+00
--1.4948983822419299e+01
-2.1331183161131890e+00
-9.6560226944336991e-01
--2.0393760448553220e+01
-1.0497062435250062e+00
-1.0067628361964418e+00
--2.0280995529409523e+01
--6.4807718154244851e+00
-1.3086225265692143e+01
--4.6922563177746234e+01
--1.1362403338645906e+00
-2.2463095564056537e+00
--2.2517149750807125e+01
--1.1071928390564085e+00
-2.1928606708279230e+00
--2.2437102750161351e+01
-1.2755462501490257e+01
-3.2886052983835317e+00
--3.0512721325253612e+01
-5.6885551527812295e+00
--1.3315830950224865e+00
--1.6721627377335246e+01
--6.7262866140972406e+00
-1.3277970196788894e+01
--4.7375132007827013e+01
-1.4259042626681863e+01
-1.3409971584038569e+00
--2.6818682316713389e+01
-4.9683183898615448e+00
-1.1533171577839374e+01
--4.8354259282104138e+01
-1.2890410114655825e+01
-2.8271152941443187e+00
--3.0372470049236625e+01
--5.3100794560879399e+00
-1.2952922583152082e+01
--4.8673708530999598e+01
-9.5608050892590080e-01
-6.1318505177489102e-01
--2.0207817334182490e+01
--1.6743095705837052e-01
-1.0428683012144453e+00
--2.0819455897480236e+01
--1.0906376803643660e+00
-1.4279668664783813e+00
--2.1936334002888849e+01
-1.3332186348471920e+01
-2.2174419119421307e+00
--3.0262570257214644e+01
--5.8491439314746314e+00
-1.2688092953546249e+01
--4.9027381331796370e+01
-1.2996734627372513e+01
-2.5703657260310417e+00
--3.1079122421981651e+01
--1.8267499692849629e+00
-2.1460094585257803e+00
--2.3682593979151775e+01
--3.4332713832268026e-02
-7.2553032340769830e-01
--2.0844465272502202e+01
-1.3692639686128013e+01
-1.2678897341768791e+00
--2.8290995686606379e+01
--4.5346490296683667e-01
-7.6196424006082608e-01
--2.0997832769088443e+01
--1.7752484112934748e+00
-1.7622811510750263e+00
--2.3188130595619512e+01
-3.4401537009039562e+00
--2.8157903988963529e-01
--2.0283432103314613e+01
-5.3679454700210858e+00
--2.3375075037246704e+00
--1.5912266404739267e+01
-5.3679454700210858e+00
--2.3375075037246704e+00
--1.5912266404739267e+01
-1.5557062388853899e+00
-1.2845838867963897e-02
--2.0253877980429611e+01
-1.5075878473667264e+00
-3.2255063865841503e-02
--2.0260779942442365e+01
--6.7284054722498086e+00
-1.1888027389211365e+01
--4.8405689567720529e+01
-7.0936497036787545e+00
--6.6159964034668717e-03
--2.3098540733518629e+01
--1.8588577410245972e+00
-1.4836302924099700e+00
--2.3098796186051331e+01
--1.8062711932167967e+00
-1.4958575925231210e+00
--2.3185041804145403e+01
-1.4282917172225206e+01
--2.1434832619232517e-02
--2.7657860075058316e+01
-1.4227111257592934e+01
--1.6727447969433407e-01
--2.7463446892942791e+01
--3.2742731952343096e+00
-2.5787215309245362e+00
--2.6822701583288367e+01
-1.1341570551791435e+01
--9.0910529662629069e-01
--2.5000895005814389e+01
-1.1341570551791435e+01
--9.0910529662629069e-01
--2.5000895005814389e+01
-5.4829588120940542e+00
--3.0078155103117061e+00
--1.6247602042588586e+01
-1.4728140579750589e+01
--1.4227011474543567e+00
--2.6647844636535687e+01
-1.4232945132045359e+01
--7.7459324478058966e-01
--2.8415988790641915e+01
-1.4625997814284197e+01
--1.4844780149509711e+00
--2.7105798862398373e+01
-1.4184904839860772e+01
--4.5717877251515804e-01
--2.9994454559517802e+01
--3.2943734005222840e+00
-1.3118589578299527e+00
--2.5255206165495721e+01
-5.9368742353369504e+00
--2.8675439000731289e+00
--1.8071147216085354e+01
--2.7419085855457657e+00
-6.4989986523864951e-01
--2.3705621071419447e+01
-2.0470485054419296e-01
--8.7014800722355057e-01
--2.0774572707777232e+01
-1.4194986987594568e+01
--6.4963869023777321e-01
--3.0729025331392393e+01
-4.1585637724590949e+00
--1.9362735469106480e+00
--2.0728097254004300e+01
-6.2054550757510718e+00
--3.2173242753556588e+00
--1.8733981714243267e+01
-1.4181996012454027e+01
--1.2129605689906138e+00
--3.0539110853121883e+01
--3.8880315720763714e+00
-1.8797925083768349e-01
--2.3738909646417266e+01
--3.6521214978400338e+00
--2.6369062747305982e-01
--2.3146154191046868e+01
-6.2672917254011455e+00
--3.6404071816893548e+00
--1.8956659872521978e+01
--1.3050184035666719e+00
--1.3345562552406991e+00
--2.1313006840374339e+01
-9.3401482930312829e-01
--2.0991446925797139e+00
--2.0295561523706855e+01
-9.6625579683784613e-01
--2.1584447459636009e+00
--2.0208384237048847e+01
--3.3883825149254649e+00
--6.0470389376156719e-01
--2.2701194847020918e+01
-1.5145680607523325e+01
--3.0515799621928856e+00
--2.7770585086488339e+01
-3.1862576601893431e+00
--2.8896297662716970e+00
--1.9552028330656810e+01
-1.5280772326226167e+01
--3.5315931346421814e+00
--2.7187604101490010e+01
-1.5418735410378842e+01
--3.4619870480770247e+00
--2.7214840691022065e+01
--5.2609945953349213e-01
--1.8657675186957061e+00
--2.0749513358060170e+01
-1.5219062925953937e+01
--3.8709995313876449e+00
--2.6178962379785080e+01
-3.2035458834368846e+00
--3.1253645409145983e+00
--1.9695310364908956e+01
--2.9100542301041359e+00
--1.3042116509372308e+00
--2.1797226508533157e+01
--3.1260223653639567e+00
--1.2551012090834861e+00
--2.2056514458323228e+01
--2.9414869760315803e+00
--1.4464058333291459e+00
--2.1524950835172628e+01
--2.3736561749586294e+00
--1.6154487030480373e+00
--2.1499925243747732e+01
--2.0564517768398258e+00
--1.8319568398990271e+00
--2.1192316928341135e+01
--6.4856160965126888e+00
-2.8831735611906457e+00
--3.6391377727283569e+01
--1.9312822026241099e+00
--1.9286835328836645e+00
--2.0974366407782266e+01
--2.4533859882297855e+00
--1.7589138124258574e+00
--2.1630623277856696e+01
--1.4385055247007361e+00
--2.2370476242520203e+00
--2.0446221088548668e+01
-1.4986485448781549e+01
--4.4662437220614066e+00
--2.6292453828979333e+01
--3.7820839541540838e+00
--8.6994890306850392e-01
--2.4184905090008030e+01
--5.3421591728970097e-01
--2.5937460035621602e+00
--2.0241205367446174e+01
-1.8587086163855941e+00
--3.1860056547126208e+00
--1.9891439428276215e+01
-3.9903917185018578e+00
--3.5431599383022614e+00
--2.0772157405087345e+01
-4.4161571230548340e+00
--3.5387513260943866e+00
--2.1232657115084518e+01
--2.6388568454403130e+00
--1.9200896351691412e+00
--2.1943106232892802e+01
-1.1073633419529058e-01
--2.8852896913888797e+00
--1.9918321813652696e+01
-1.4089288116201452e+01
--4.9180741319662680e+00
--2.5714142754727543e+01
-2.6783562560557250e+00
--3.4694307485809994e+00
--2.0105602114320838e+01
--1.8351009958987985e+00
--2.3633330854585246e+00
--2.1218501902858652e+01
--5.7377653496508438e+00
-9.4405789560312636e-01
--3.3825143642849618e+01
--8.3791469837861570e+00
-1.4284346878713630e+00
--3.4462126529995452e+01
--3.0165765045042150e+00
--2.3373845064415333e+00
--2.2040642428882620e+01
--2.0027831549639039e+00
--2.6434233072160316e+00
--2.1773231061719166e+01
--8.6236294186905293e-01
--3.3123273386106944e+00
--2.1012008749867956e+01
-1.4651777841171723e-01
--3.5936839011006305e+00
--2.0755114627587453e+01
-1.8344993733926502e+00
--4.0843607616799806e+00
--2.0813964230458119e+01
-4.1837524276561080e+00
--4.5106767216412313e+00
--2.1950830798208237e+01
--6.3776034581550043e+00
--6.6870468241502362e-02
--3.2428476675872773e+01
--1.0390091384285558e+01
-1.0127381379372746e+00
--3.3688776965789764e+01
--2.0749274731074969e+00
--3.1501154160464742e+00
--2.2094611709296377e+01
--3.5624273423811808e+00
--2.4446755805246694e+00
--2.4547608042256034e+01
--3.2020396879427220e+00
--2.5914438622823734e+00
--2.3973224681355418e+01
--3.4681293749430182e+00
--2.5857675520723347e+00
--2.4141604429057345e+01
-7.0332027731106572e-01
--4.1403446367054029e+00
--2.0770165261414412e+01
-1.4929060119513426e+00
--4.3681683908055629e+00
--2.1011809266243958e+01
--3.9361689627898933e-02
--3.8587613187213634e+00
--2.0849648327059697e+01
--7.6409474903778374e-01
--3.7810907937877172e+00
--2.1415501774664317e+01
--7.3390212959750265e+00
--7.8856627657252321e-01
--3.1060020890262020e+01
-2.8788698415608875e+00
--4.9690007341686346e+00
--2.1553066685182447e+01
--2.5889842150086761e+00
--3.4535132975279481e+00
--2.3521015700505959e+01
--1.0986711198875419e+01
--1.2678517479780274e-01
--3.2237392660620856e+01
--2.1775137963906528e+00
--3.8016743917464382e+00
--2.3098169761933466e+01
--8.6646563133195548e-02
--4.5536849522063152e+00
--2.1681619818367547e+01
--2.0132143172662578e+00
--3.8744353431489653e+00
--2.2601871088681062e+01
--8.2977566792357091e+00
--1.5997144418294464e+00
--3.0415676646330535e+01
--8.1045095814278003e+00
--1.8034195446330870e+00
--3.0067362097808566e+01
-1.1775570404214577e+00
--5.2316668080678763e+00
--2.2479043756118568e+01
-6.7983952630076094e-01
--5.1734138972576833e+00
--2.1436441741673047e+01
-5.3644522480181689e-01
--5.3193276876830851e+00
--2.1185023829134337e+01
--9.1755498606488626e+00
--2.3310282804461329e+00
--2.8526690000183873e+01
--7.0816826066498244e+00
--3.4114369627288332e+00
--2.7696601950759494e+01
--2.1487686953962851e-01
--6.3630635463121186e+00
--2.1505481705433031e+01
--1.7782430176788833e+00
--6.1160114788534283e+00
--2.2366699582245474e+01
-2.2117649209232915e+00
--8.1908682770032026e+00
--2.1071247635673629e+01
--5.6467812498326815e+00
--6.5859425998123395e+00
--2.3021371063280785e+01
-2.8239804019124661e+00
--9.2975774797363968e+00
--1.9559696781006437e+01
-1.2541913782709311e+00
-2.6165886138729409e+01
--3.9665657837962002e+01
-5.2071104846842609e-01
-2.6279632016210709e+01
--4.0475722354483359e+01
-1.1877514701091387e+00
-2.5067979873717562e+01
--4.0594075409538974e+01
-5.1928762223620675e+00
-2.6577390313772380e+01
--4.3110013669791122e+01
-1.5303757176232319e+01
-3.0037295439791414e+01
--4.7954924139939870e+01
-1.2991345595596091e+01
-2.9594550419154153e+01
--4.7552750879040580e+01
-1.2991345595596091e+01
-2.9594550419154153e+01
--4.7552750879040580e+01
-1.1346455450461006e+01
-1.1693614727176312e+01
--2.4499229713377723e+01
-3.4574617958298188e+00
-2.5797041652304099e+01
--4.2403558097828714e+01
-4.1029629954341118e+00
-2.6009331497653776e+01
--4.2655887357045209e+01
-4.1261877237737634e+00
-2.6056397740763323e+01
--4.2693019504768280e+01
-1.0392075345439815e+00
-2.5043071738161125e+01
--4.1325423969917274e+01
--6.6698709100683951e-01
-2.4139262389714435e+01
--4.0155047414702395e+01
-1.2628532364994028e+01
-1.5575373382416910e+01
--2.9714433681567453e+01
-1.5736217161617640e+01
-2.9925996364925986e+01
--4.8928448145402498e+01
-1.2951921964692245e+01
-1.4736882980837672e+01
--2.9071570599281358e+01
--1.0689921493485430e+01
-1.9940354540625968e+01
--3.4151868078395438e+01
--6.5025995702199459e+00
-2.1738780875523766e+01
--3.7061698606849177e+01
-1.6717054284838973e+01
-3.0326989397160286e+01
--5.0494823914104124e+01
-9.3618661480698524e+00
-8.0423464334212014e+00
--2.0231130981409208e+01
--1.1925041060352831e+01
-1.9601617909401089e+01
--3.3961232356635087e+01
--9.2219320204169346e+00
-2.0738009209465385e+01
--3.5839797861661886e+01
--8.7353017694386388e+00
-2.0958653596361241e+01
--3.6036832095099626e+01
--8.7611399823283680e+00
-2.0626308077845788e+01
--3.5552857022365330e+01
-1.2948836865805506e+01
-1.4570796329804891e+01
--2.9281296577218097e+01
--8.5489106122245815e+00
-2.0693948236926907e+01
--3.5829813949638833e+01
--5.7940606817711062e+00
-2.1720479539957243e+01
--3.7600431920100100e+01
-1.5483634548686414e+00
-2.4439979004881156e+01
--4.2062586574833908e+01
-2.5683984227587713e+00
-2.4779200706747798e+01
--4.2626882202329568e+01
-1.2343329632902190e+01
-1.3946982927383704e+01
--2.8763416479232038e+01
--8.3900751624351493e+00
-2.0751419297082112e+01
--3.6231360719828032e+01
--9.3358957479593396e+00
-2.0456350802948290e+01
--3.6055843900052118e+01
-1.9838670311714426e+00
-2.4349031895434969e+01
--4.2460764268767072e+01
-3.2769914093995136e+00
-2.4742717358530957e+01
--4.3205539141518535e+01
--1.0488355936760803e+01
-1.9612828560287934e+01
--3.4768682665675321e+01
-1.6936547989352382e+00
-2.4177684737273296e+01
--4.2426683433615167e+01
--1.1216537278013035e+01
-1.9384380412103400e+01
--3.4634305430135797e+01
-3.3755586590782225e+00
-2.4728321412834614e+01
--4.3645421758446574e+01
-3.3607685835775651e+00
-2.4814804338394513e+01
--4.3676764216612966e+01
--9.4671636843975335e+00
-1.9874767665320228e+01
--3.5482415386728398e+01
--1.0337878873129613e+01
-1.9834414038171719e+01
--3.5623693290741095e+01
--1.1206084777659260e+01
-1.9147229695731532e+01
--3.4659089733929484e+01
--1.1206084777659260e+01
-1.9147229695731532e+01
--3.4659089733929484e+01
-1.4586467464859249e+01
-2.7600071201473828e+01
--4.9072013793961432e+01
-5.5852501253607620e+00
-5.4241194800374268e+00
--1.7418842448480191e+01
--8.7784019645020841e+00
-2.0062694139655953e+01
--3.6716571226292565e+01
--8.6845285383267630e+00
-2.3637400697384020e+01
--4.1890942575910188e+01
--4.9727962698324983e+00
-2.1358459362810066e+01
--3.9307543971018234e+01
--1.1207114347275727e+01
-1.8942967137333440e+01
--3.5430622917132155e+01
-1.2060909575193689e+01
-2.6573841795291699e+01
--4.8972387254681642e+01
-1.1351166973351962e+01
-2.5603634907818172e+01
--4.7524835728609517e+01
-4.6234579993931710e+00
-2.4962589567862096e+01
--4.6051431222593280e+01
-4.3245767966920763e+00
-2.4285624695943312e+01
--4.5142173120664197e+01
-1.2790238629751768e+01
-1.2055342821922787e+01
--2.8460015069161820e+01
-9.4609187172263063e+00
-2.5561445099774094e+01
--4.8208030979385747e+01
-9.2760406813432468e+00
-8.5191603187376863e+00
--2.3223707989451654e+01
-9.2760406813432468e+00
-8.5191603187376863e+00
--2.3223707989451654e+01
-5.3734114397792352e+00
-3.9153322884983428e+00
--1.6246727291315192e+01
--1.1339880562998548e+01
-1.8269861219223468e+01
--3.5315056411517226e+01
--1.8362603856388042e+00
-2.1674847046741139e+01
--4.1824359296697125e+01
--1.8311468125528063e+00
-2.1653266597641771e+01
--4.1781212756519210e+01
-1.2801386069345906e+01
-2.7920073764938902e+01
--5.2915816825453135e+01
--2.0919792066619974e-01
-2.2103491969485255e+01
--4.2933209512543698e+01
--2.0919792066619974e-01
-2.2103491969485255e+01
--4.2933209512543698e+01
--2.1015045962906846e+00
-2.1361599797177647e+01
--4.1867012698380719e+01
--2.1287628413040642e+00
-2.1263302510329090e+01
--4.1703805443068987e+01
--2.1078301705027052e+00
-2.1242797628953127e+01
--4.1738398701014361e+01
-1.2810995321171575e+01
-9.0950330767827907e+00
--2.5374902018493547e+01
-9.1271609649844159e+00
-6.9128099558771439e+00
--2.1562427583114943e+01
--6.1304440632685129e+00
-1.9757058587529485e+01
--3.9251775114268725e+01
--8.8188434398083757e+00
-1.8639124669958125e+01
--3.7348863992654529e+01
--1.2753752989353300e+01
-1.7278214592609384e+01
--3.4809325154920408e+01
--4.4879730092031389e+00
-2.0286024683277319e+01
--4.0489203179935927e+01
--4.3565198689566200e+00
-2.0134656695226944e+01
--4.0726748384652097e+01
-1.0962210400315536e+01
-8.9278718526514442e+00
--2.5489448071482929e+01
-1.2387208928729969e+01
-8.1250478665861223e+00
--2.4894660928399986e+01
-1.2387208928729969e+01
-8.1250478665861223e+00
--2.4894660928399986e+01
--8.1397398171379880e+00
-1.7684521492042236e+01
--3.6945247328536972e+01
--8.8195622105432463e+00
-1.8549972441785027e+01
--3.8664878217601171e+01
-8.2073559267191474e+00
-2.5139899219169269e+01
--5.1671687094294128e+01
-7.6082660547376602e+00
-2.4173410242349547e+01
--5.0047856960218674e+01
-7.4071991105503292e+00
-2.3903916384920052e+01
--4.9449723018779444e+01
-1.2716611040119549e+01
-8.0311255189721589e+00
--2.5422164726039345e+01
--1.0461076904284569e+01
-1.8152599413348273e+01
--3.8125102609532512e+01
-1.8399380250030955e+01
-2.6429959028180566e+01
--5.5221961522271485e+01
-1.8578569371249682e+01
-2.4280474448404668e+01
--5.2136485199040543e+01
--1.2891479229130866e+01
-1.6830339724184135e+01
--3.5535789575780733e+01
--1.3358816683791071e+01
-1.6689114314813398e+01
--3.5433399522255300e+01
--1.3358816683791071e+01
-1.6689114314813398e+01
--3.5433399522255300e+01
--2.9554491486397692e+00
-2.0063298245778014e+01
--4.2845013076514910e+01
-1.1746725047515307e+01
-1.0061394371270376e+01
--2.8825783938753073e+01
--1.0622365428130900e+01
-1.7497691879523749e+01
--3.7687544231558391e+01
--1.1231188601762497e+01
-1.7118546785173699e+01
--3.7143782860134422e+01
--1.0049464140949915e+01
-1.7720595087200351e+01
--3.8604631094793135e+01
--1.1991993127577842e+01
-1.6656837130272521e+01
--3.6293368019401967e+01
-1.8986682287113876e-01
-2.0607469454969127e+01
--4.5060809395517467e+01
--1.1514816020192722e+01
-1.6693147578942927e+01
--3.6863419224194516e+01
-9.8439829272415551e+00
-2.2585727912438124e+01
--5.0896966930004282e+01
--1.1594987409200796e+01
-1.6589085260886460e+01
--3.7121585551364134e+01
-1.3281568176245505e+01
-6.3939146453931803e+00
--2.4776999774792568e+01
-1.2248291849562754e+01
-1.1471577483801900e+01
--3.3021783872349097e+01
-1.1929221857168441e+01
-1.1264657783169897e+01
--3.2533708201023202e+01
-6.9499735838450150e-01
-2.0088298549744859e+01
--4.5800476289009495e+01
-1.9050370421680054e+01
-2.4853583586814949e+01
--5.6872573351383643e+01
-2.3474435333944463e+01
-2.7091797169239413e+01
--6.2232153625276993e+01
-1.8833001180842707e+01
-2.3584848652777627e+01
--5.5342632125389265e+01
-1.2635598952814373e+01
-1.0991075560761805e+01
--3.3332586417095058e+01
-1.1411322230381007e+01
-7.8217046106407055e+00
--2.7507046038102573e+01
-1.2041701773974724e+01
-6.2997493802880218e+00
--2.5276992390349999e+01
-1.2515354613928546e+01
-1.1297196263889397e+01
--3.4264880128010397e+01
-1.2876915152584326e+01
-1.0957935891704958e+01
--3.3538421890510520e+01
-1.5589931912806454e+00
-1.8986817443977010e+01
--4.7050914800280431e+01
-1.1167520086032965e+00
-1.8873304372781462e+01
--4.7376685768172123e+01
-1.3975332606496972e+01
-3.1377358420348616e+00
--2.1745580818332975e+01
-6.6271917450442892e+00
-2.0486446285753402e+01
--5.2200392783171402e+01
-6.3655268621417376e+00
-2.0527018472647299e+01
--5.2395096127211204e+01
-6.2781271624147372e+00
-1.9740662736789545e+01
--5.1499601290028266e+01
-1.2115279580782698e+01
-6.2264379187418557e+00
--2.7510757255429567e+01
-1.1915984842111586e+01
-5.2524640821891984e+00
--2.5956029067778939e+01
-1.2120387914684917e+01
-7.0476952423765153e+00
--3.0397410035691010e+01
--1.2112518174452426e+01
-1.2862812000469960e+01
--3.5836959213035890e+01
--2.3198608336098716e+00
-1.6094606208779727e+01
--4.4938078287755836e+01
-1.1864793110357811e+01
-1.9934559184517145e+01
--5.6176752054733313e+01
--1.1811124041448080e+01
-1.4504787635937564e+01
--3.9488372592298731e+01
-1.0804059886196210e+01
-1.9693126315078672e+01
--5.5794399572434109e+01
-1.2569637346440947e+01
-8.2637412455554511e+00
--3.3521324195196719e+01
-1.2758119327776202e+01
-4.7326920677049644e+00
--2.6828810434344245e+01
-1.4473302835286443e+01
-2.0370662838049736e+00
--2.2431342428154242e+01
-1.4473302835286443e+01
-2.0370662838049736e+00
--2.2431342428154242e+01
-1.2839515565248734e+01
-8.8506001349030985e+00
--3.5327963700948580e+01
-1.1972724680438157e+01
-5.9272370024706209e+00
--2.9358663912405323e+01
-1.3140790199599795e+01
-3.9275309816375783e+00
--2.6322596158689610e+01
-1.3384676785841119e+01
-7.8868599058658564e+00
--3.4387299347364738e+01
--3.2929977889202977e+00
-1.6000348103661246e+01
--4.6561046223753792e+01
-1.2171459088581997e+01
-5.2905954550636123e+00
--2.9014526484298500e+01
-1.4002266477781365e+01
-3.1235907448295910e+00
--2.5543333634860957e+01
--1.1525958131174058e+01
-1.3378911573583814e+01
--4.0389464975073835e+01
--1.1582530814654383e+01
-1.3571458383009404e+01
--4.0682828016403320e+01
-1.2485993805178758e+01
-4.6553716352033572e+00
--2.9271429342784991e+01
--2.1016910599636018e-01
-1.6076763122872496e+01
--5.0492807604886416e+01
--1.2090424031819165e+01
-1.3008487054170953e+01
--4.0362926543452964e+01
-1.2553545052811948e+01
-4.6466648040703813e+00
--2.9920205578388192e+01
-1.2354837878178737e+01
-4.5477909872283462e+00
--2.9650455120810882e+01
--1.0172471698214048e+01
-1.3669650802483410e+01
--4.2420978027046210e+01
-1.3853429686442158e+01
-2.8887946636445623e+00
--2.7036273089474715e+01
--1.0978158703451246e+01
-1.2845774611449004e+01
--4.1796701498814279e+01
-8.7366185228295521e+00
-1.8036065024381607e+01
--6.0223407946763786e+01
-7.8797405234311855e+00
-1.4399804056598034e+01
--5.1487409400846936e+01
--1.5178307099669650e+00
-1.4739175589704438e+01
--4.9393752847312406e+01
-1.3136009917352805e+01
-3.0767291882337511e+00
--2.7954237933899350e+01
-1.4067442497514255e+01
-1.4190180544934055e+00
--2.4842661616291231e+01
-7.8582721230906172e+00
-1.6177249587940530e+01
--5.6709132560950835e+01
-1.4150185477644847e+01
-1.1975544245731617e+00
--2.4563145529355406e+01
-1.4643418695322332e+01
-1.2939883861861079e+00
--2.5574432582408267e+01
-1.4025893246155677e+01
-2.0213244119771558e+00
--2.7233201528451602e+01
-1.3634846751508324e+01
-2.0640544867258681e+00
--2.7590298988628863e+01
--1.2212827554302881e+00
-1.4458882198952629e+01
--5.1610051178311686e+01
-1.4156564096751351e+01
-1.4651203245548348e+00
--2.6459328223206924e+01
-1.4188194638097043e+01
-1.5145888539137911e+00
--2.6544914348932178e+01
--7.4885665350636064e+00
-1.3169704824871452e+01
--4.6331536562705963e+01
--1.3574926969822134e+00
-2.5630101135072758e+00
--2.3085660977182318e+01
--1.3461429203142925e+00
-2.5577078333427634e+00
--2.3099063191743316e+01
--8.1908472715616354e-01
-1.9322230823839579e+00
--2.2000363340048487e+01
-2.6549598031002408e+00
-3.9648869045288371e-01
--1.9592197672728950e+01
-2.9595118716640467e+00
-1.2036620876167472e+01
--4.8314244478789384e+01
-1.4294116617531609e+01
-9.7377424115394962e-01
--2.6526343033311178e+01
-1.3969658774242053e+01
-1.6264573798552635e+00
--2.8173395375856398e+01
-5.4432657858977480e+00
--1.7934725372106086e+00
--1.6160836182352018e+01
-1.8489082917171724e+00
-4.4375880766179182e-01
--2.0042447617093767e+01
--9.1700691016981939e-01
-1.4489253094374623e+00
--2.1773029910538195e+01
-1.4151429022828147e+01
-5.4258497723607768e-01
--2.6030551097758661e+01
--1.3600335265828847e+00
-3.3448987136517792e+00
--2.6653929554825076e+01
--1.1915998084415460e+00
-1.5247587248407437e+00
--2.1994802107215627e+01
--1.1811127915021213e+00
-1.5100996191800014e+00
--2.1990730502217346e+01
-2.1012107237774971e+00
--6.9379230413573259e-04
--2.0068268718295119e+01
-2.1539264005256640e+00
--2.9081876942859425e-01
--1.9478327381230489e+01
-1.4937712349402883e+01
--8.4235751624912300e-02
--2.6156555759583679e+01
--1.1437423090659429e+00
-1.1527912731480308e+00
--2.1893883542436949e+01
--1.1787299150064834e+00
-1.1511094904473014e+00
--2.1853441092600615e+01
-2.0708816733779223e+00
--1.4222281026333733e-01
--2.0251273737876602e+01
--1.7421191139992454e+00
-1.8789018975163201e+00
--2.3870244013609753e+01
-1.4147160259921485e+01
-6.1180904603574382e-01
--2.8108135858576961e+01
-1.3764124656485411e+01
-5.0198739976576223e-01
--2.7553319389607644e+01
--2.5749668490325677e+00
-3.2643425756500144e+00
--2.7680848076041229e+01
-1.3846366045868038e+01
-4.4863157179825702e-01
--2.8611667854220311e+01
--6.4405390237934988e-03
-4.7268616451656344e-02
--2.0805128668891271e+01
--7.6193156589249533e-01
-2.7104994906407626e-01
--2.1303027712000603e+01
--4.5010213954262313e-01
-8.2330456386880482e-02
--2.1039458591700040e+01
-1.4559835030380077e+01
--7.2760831069888288e-01
--2.7792438722466457e+01
-1.4260346722371349e+01
--7.8352349410579447e-01
--2.7445609865996449e+01
--3.5400583156933298e+00
-2.0070162214192773e+00
--2.6040897749541386e+01
-1.4716355751993174e+01
--1.3094211844268957e+00
--2.6496075706485296e+01
--4.0069218497530361e+00
-1.6889546878963351e+00
--2.5183517194357695e+01
-1.2758119533159658e+00
--8.7884164210893079e-01
--2.0265585615436073e+01
--1.3068241210497180e+00
-2.6184155650719153e-02
--2.1872755079163543e+01
--1.2981428612987247e+00
-1.5474254310637543e-02
--2.1880218734605755e+01
-1.4331724553071950e+01
--1.0684776310766451e+00
--2.8142236463240515e+01
-1.4714748466887272e+01
--9.8397046574583780e-01
--2.8603079861738781e+01
--3.6155356188015606e+00
-1.4492252913704002e+00
--2.5290874694050078e+01
--3.5962027098087201e+00
-1.4786664569120775e+00
--2.5376462890462363e+01
--7.7975809677734109e-01
--4.1175090486528937e-01
--2.1206312109384303e+01
--2.7261630793546412e+00
-5.5265361749848063e-01
--2.3372924555102664e+01
-1.5054805778376322e+01
--1.5977660918657286e+00
--2.7872177400330543e+01
--3.4926882557401506e+00
-9.3266048361113518e-01
--2.4481082660359483e+01
--2.5684342122269657e+00
-2.2838821534639808e-01
--2.2854835018259678e+01
-1.4691528449663183e+01
--1.4975034321835696e+00
--2.8379412385389568e+01
--3.4883518793012223e+00
--2.9775173650691528e-01
--2.2998176143070143e+01
--1.4552554692974389e+00
--1.1884639317333670e+00
--2.1397500175461165e+01
--4.2030888719102402e+00
--1.6802101076729004e-01
--2.3268830125798694e+01
--3.6982321340237836e+00
--2.9233416524358669e-01
--2.3412166542418877e+01
-9.0899281109239463e-02
--1.9785070027530105e+00
--2.0357328295875245e+01
-4.5188745132213484e+00
--2.9127017388375154e+00
--2.0806386974743603e+01
-1.5227498045051764e+01
--3.5639999087748504e+00
--2.7385084263066460e+01
--3.9278309075207751e+00
--4.4315027558950043e-01
--2.3763525035579018e+01
-3.9561373713231545e+00
--3.0579958482787246e+00
--2.0322656056614363e+01
--3.2378065053650755e+00
--1.0881526113229558e+00
--2.2730119091629650e+01
-1.9975427283137488e+00
--3.1708511658987022e+00
--1.9627189998466733e+01
-2.8768116654688338e+00
--3.3062069691210634e+00
--2.0079267370155339e+01
-4.1531539493789991e+00
--3.5773528610945857e+00
--2.1144756216090691e+01
-4.7927057082211943e+00
--3.6539465717158262e+00
--2.1669362302102435e+01
--5.5347826715084132e+00
-1.4049403327052603e+00
--3.4816944062134887e+01
--7.6571959260132845e+00
-1.9323694481312055e+00
--3.5193864340393560e+01
--5.3307306876608571e+00
-1.2170036344891491e+00
--3.4583361678046735e+01
--6.5874475061390667e+00
-5.0525557046300862e-01
--3.0765064406662255e+01
--1.4404996789986266e+00
--2.7102443158866927e+00
--2.1148703548029882e+01
--5.7431647501984684e-01
--3.0475031506902925e+00
--2.0488409141071305e+01
--1.0626670820314709e+01
-1.7024927727164085e+00
--3.3728347944991469e+01
-2.8395635810486453e+00
--3.9821305444645998e+00
--2.0470087858824730e+01
--3.4849600300237857e+00
--1.8544547319137030e+00
--2.3961946868930266e+01
--8.1418546303867405e+00
-7.2985057415714605e-01
--3.3449872991695948e+01
--7.7087262700070225e+00
-4.9119736399990926e-01
--3.3358022808594924e+01
-1.2091276591805926e+00
--3.9937257972406774e+00
--2.0588691035879460e+01
--6.6798001216882614e+00
--1.4474119799997270e-01
--3.2417478638046468e+01
--3.1727769073240419e+00
--2.7541880292346774e+00
--2.3353602009969567e+01
--4.0155484431735916e-01
--3.9918806788250567e+00
--2.1133988997524362e+01
--7.7526149891801044e+00
--7.2591730344217464e-01
--3.1077495482394085e+01
-1.4036357821261949e+00
--4.5844680104763427e+00
--2.1054215508564877e+01
--9.2166222319179418e+00
--2.1686808410364541e-01
--3.2100743328272770e+01
--5.2859677856788800e-01
--4.2885846292830241e+00
--2.1683009726014124e+01
--7.9441708591682820e+00
--1.0956065889104107e+00
--3.0946660001808233e+01
-6.1443559181574137e-01
--4.6497319666412196e+00
--2.1095973730615711e+01
--1.0823703245961234e+01
--8.0446657431901458e-01
--3.0319715309803492e+01
--5.5875589322603336e-01
--4.4592522111543156e+00
--2.1773703264294166e+01
--1.0188514887409458e+01
--1.0342963046549274e+00
--3.0040434368157925e+01
--7.8039807335286229e+00
--1.7476105953705985e+00
--3.0279930484053622e+01
--7.0239535412517888e+00
--1.9806869581823234e+00
--3.0200998930085124e+01
--9.0817342465034709e+00
--1.5244911675667001e+00
--3.0461383756375746e+01
--1.0986014201141675e+01
--1.4142933603850076e+00
--3.0847398550850460e+01
--7.9170952627037110e+00
--2.6797961431801092e+00
--2.9068646473316679e+01
--7.2140579990655480e+00
--3.0416070148741357e+00
--2.8366425582715291e+01
--8.2316692468043247e+00
--3.2208507890959686e+00
--2.7537455726556242e+01
-3.0026171613543724e+00
--7.0808150277074926e+00
--2.1453073391500162e+01
--9.1342621239847777e+00
--3.9093015166729201e+00
--2.6054687304699634e+01
-2.3552265146250542e+00
--7.9046174425341897e+00
--1.7304709760525704e+01
-4.7661387148155931e+00
--8.4902283335170878e+00
--2.0730932011324988e+01
-1.5875480871584082e+00
--7.8734245884341227e+00
--2.1157781307915421e+01
-2.6625059706661784e+00
--8.3425182567963727e+00
--2.1944424839807954e+01
-3.2811507993704589e+00
-2.7056842773563876e+01
--4.0957297946431225e+01
-4.6247875098499485e+00
-2.7191387518193064e+01
--4.2382477766196232e+01
-1.3079320066958964e+01
-2.9303183897367472e+01
--4.5432418108841155e+01
-1.4042504350576110e+01
-1.7734267826651241e+01
--3.2508857893277266e+01
--1.2401402759776665e+00
-2.4134921350228467e+01
--3.9637101892285123e+01
--9.0312644486555875e+00
-2.0995247251779247e+01
--3.5632291751510699e+01
-7.6425927363429516e+00
-2.6684487134194615e+01
--4.5235659823831185e+01
--1.0029659071822232e+01
-2.0252856429003934e+01
--3.5302058507205324e+01
--9.0100593838790939e+00
-2.0641750412057384e+01
--3.5917183016623333e+01
--6.9100372534549690e+00
-2.0993521529207175e+01
--3.6750947557181057e+01
-7.4052718786263787e+00
-2.6526426116655593e+01
--4.6226457033238937e+01
-1.0512480536112786e+01
-2.8329754357449907e+01
--4.9429449682853054e+01
-1.3367365879658156e+01
-9.5645423553317919e+00
--2.3563878486168864e+01
--9.8983683227201720e+00
-1.9706272237398412e+01
--3.5475983984137400e+01
--4.7088134538504169e+00
-2.1761395381423107e+01
--3.9330848989480337e+01
-1.3457705388438615e+01
-9.7466813509834065e+00
--2.4448851582477133e+01
--1.0105877310867966e+01
-1.9233190373863959e+01
--3.5265227879783069e+01
--1.0876205405588419e+01
-1.9034038109680708e+01
--3.4961823854240386e+01
--1.0318924676460918e+01
-1.9228884092959532e+01
--3.5639239283714794e+01
-2.8442446753864399e+01
-3.4357316038585118e+01
--6.2072982017128339e+01
-1.2870428819131206e+01
-9.1395447562612411e+00
--2.4937423328183311e+01
-1.1317455980714699e+01
-1.2809579840376063e+01
--3.0676373683697072e+01
--1.1120391675933991e+01
-1.8039717972466548e+01
--3.6061829018136592e+01
--2.2757067776362874e+00
-2.1001394515785581e+01
--4.2030882448608828e+01
--2.7884670641886626e+00
-2.0115264937553047e+01
--4.2108713554961696e+01
--1.1306665565503355e+01
-1.7184853631573308e+01
--3.6706206732570315e+01
--1.3500808492464341e+01
-1.6144747235319461e+01
--3.5127316383496634e+01
-1.4667360514312854e+01
-1.1038890322191120e+01
--3.1885668163611246e+01
--9.8957274078043849e+00
-1.7365696976847037e+01
--3.8456838190728504e+01
-4.9892695699502161e+00
-2.0029395332156859e+00
--1.5465446247713638e+01
--1.3418611745513557e+01
-1.6317763499161114e+01
--3.6062822025576779e+01
-1.5306227968464563e+01
-2.4100196015851960e+01
--5.3890398108551672e+01
-2.9183338397065732e+00
-2.1080923217979670e+01
--4.7312967178258361e+01
-1.3541272520474740e+01
-6.3494518227187493e+00
--2.4717753264410128e+01
-1.6190732058529793e+01
-2.3622937765289517e+01
--5.4900925324507519e+01
-6.9489554777545051e+00
-2.1382544151829471e+01
--5.0596330969323439e+01
-1.2146468660004674e+01
-6.9696917449261084e+00
--2.6818211983310096e+01
-1.3768930937872797e+01
-5.5183518969499143e+00
--2.4922885355244595e+01
-1.0271552334272151e+01
-6.4659850211016172e+00
--2.6796215634175258e+01
-1.2693585613771782e+01
-5.5772140886714618e+00
--2.6451863725796098e+01
-1.2915197040683536e+01
-4.7949893883881307e+00
--2.5178175197733463e+01
-3.9603647157096025e+00
-1.8756982157047194e+01
--4.9622236680076639e+01
-3.2799562051127613e+00
-1.8272412630705400e+01
--4.9031241697937752e+01
-1.2148572405528190e+01
-6.4958551023820394e+00
--2.9585803386869959e+01
-1.3591012870517535e+01
-4.1782706116865143e+00
--2.5393662661777856e+01
-5.4608554649835570e+00
-1.9222498261649502e+01
--5.2690733679783740e+01
-5.2124041445655358e+00
-1.8295914768754812e+01
--5.1259039822793653e+01
-1.3560667432218081e+00
-1.7441071905138845e+01
--4.8954615022241434e+01
-5.3185505104703461e+00
-1.8392630838614583e+01
--5.2500516781133328e+01
-1.3802864229586417e+01
-7.6616892455783487e+00
--3.4885198150008549e+01
--7.0953914864247594e+00
-1.5038003691257464e+01
--4.4524809249744735e+01
-7.3560247517065458e-01
-3.7886046699486826e+00
--2.3217445038767384e+01
--1.4194007928710168e+00
-1.5995413514355771e+01
--4.8650599837137101e+01
-3.0646796625121215e+00
-2.9037604138743118e+00
--2.2398682973021554e+01
-6.7417043385860104e-02
-1.7686970222921650e+00
--2.1067720101357697e+01
-5.5646988394288295e+00
--1.4248436340557997e+00
--1.5883736358217250e+01
-1.4811503762768558e+01
-8.3566510636214075e-01
--2.4988579438928380e+01
-1.4426360451659448e+01
-6.4529727141896132e-01
--2.4450809045418367e+01
-7.6152597022899901e-03
-1.3515623589848036e+00
--2.0924327968563130e+01
--1.4746820475333737e+00
-2.1682703571687236e+00
--2.2816212354203131e+01
--1.4144580296279792e+00
-2.2025990269560318e+00
--2.2959754901853358e+01
-3.6100056531278448e+00
--2.1487423430204053e-01
--2.0720151844538812e+01
-1.3438160669994300e+01
-1.0838617104085282e+00
--2.8793563047385323e+01
--6.9111493138334765e+00
-1.1475319842339594e+01
--4.7731534092183281e+01
-1.5426371367127059e+01
--6.0424668743479693e-01
--2.6601163177910564e+01
-1.4970375589424648e+01
--3.8922876164566989e-01
--2.7109061235227514e+01
--1.2522537697333065e+00
-6.7938229403456307e-01
--2.1767353344178652e+01
--1.2538448386933769e+00
-6.6793912620422702e-01
--2.1699642481137793e+01
-6.3377652990035820e+00
--1.3552950293984232e+00
--2.1394776762894054e+01
-1.4239897369528318e+01
--8.4513409412497698e-01
--2.7810227136037152e+01
--3.4348297774606529e+00
-1.6138582851777097e+00
--2.5497183967052383e+01
--3.4348297774606529e+00
-1.6138582851777097e+00
--2.5497183967052383e+01
-1.5104249246739045e+01
--1.9329850873270829e+00
--2.5676369090812965e+01
--4.0709391881817005e+00
-1.4803513815546168e+00
--2.5258111026629333e+01
-3.6708964308274386e+00
--2.6920290601433461e+00
--1.8493804530912435e+01
--4.0691969473614158e+00
-1.9668445578711349e-01
--2.5627479311317529e+01
--3.4456978474317537e+00
--6.7844489234845373e-01
--2.2935996834190039e+01
--2.9015905230490544e+00
--1.1088741248692053e+00
--2.1929632019677371e+01
--3.3338646362378102e+00
--8.7377840382059790e-01
--2.3103646624441879e+01
--2.9646482473231042e+00
--1.5999550113796925e+00
--2.1514638560745496e+01
-2.8548678028443644e+00
--3.3151435622021479e+00
--1.9538910543230156e+01
--3.9261013553855499e+00
--4.0631705980179211e-01
--2.5580734292905447e+01
--1.7768187316761903e+00
--2.1555435372725413e+00
--2.0882374063721375e+01
--5.9492777311803113e+00
-1.6047034826734592e+00
--3.5162600572212028e+01
--3.8753270570917433e+00
--1.8082122408237837e+00
--2.4718549370807938e+01
--6.7778654474887281e+00
-5.5873642474022622e-01
--3.3198016811103564e+01
--3.0501165863027384e+00
--2.4317871070266053e+00
--2.2704291842643130e+01
--9.9266986196308116e-01
--3.1968509133676153e+00
--2.2219734866996323e+01
--3.4488460685834310e+00
--2.2384293251032275e+00
--2.4355628449814333e+01
-8.7511176453958726e+00
--5.0746470151842127e+00
--2.4238521456586021e+01
--1.6954500642698140e+00
--3.4470697505859569e+00
--2.2092175537446241e+01
-1.8048919235083183e+00
--4.7018850151731826e+00
--2.1159615382415272e+01
--9.9071522231362454e+00
--1.5987680727720472e+00
--3.0384574512293117e+01
--9.8929244817179036e+00
--1.6374955694873081e+00
--3.0532792294319336e+01
-6.5665746177303030e-01
--5.2417029451633574e+00
--2.1638558858604345e+01
--9.7293930022690152e+00
--2.6608463915832425e+00
--2.8970631407849233e+01
-3.6118476804876165e+00
--6.9862391761285654e+00
--2.1329205901311592e+01
--8.7721105310494991e+00
--4.0940239595506451e+00
--2.6674041672893100e+01
-2.3902119928679069e+00
--7.5765471713217032e+00
--2.1241221408110331e+01
-3.2438382885251551e+00
--9.0293651329010434e+00
--1.9216646209050428e+01
-1.6160205867888919e+00
--8.8695116560504008e+00
--1.9634640059584061e+01
-2.1280672185671916e+00
--8.9975176209880932e+00
--2.0052953572913921e+01
-1.2444685857515163e+00
-2.6590983658059184e+01
--4.1002126638356778e+01
-8.8664757924258346e+00
-2.8158801402248525e+01
--4.4212250493473064e+01
-3.5371870726220012e+00
-2.6399095905491784e+01
--4.2113865992130805e+01
-9.0206589694316790e+00
-9.5005130449889723e+00
--2.1756230767956474e+01
-1.1838325408348149e+01
-1.6076426431881369e+01
--3.0736063768299029e+01
--6.5604714122711689e+00
-2.0820764929033089e+01
--3.6449979145551850e+01
-1.1863486890782278e+01
-1.5379874717827816e+01
--3.1323461359299884e+01
-1.0469227619466261e+00
-2.3923986732291272e+01
--4.2361977094772961e+01
-2.0566664804087385e+00
-2.3860959574230975e+01
--4.3036282672342708e+01
-8.0833084979740626e+00
-2.6450365166867019e+01
--4.7737980373022843e+01
-1.1715738960582435e+01
-2.6354482948158157e+01
--4.9360838449037843e+01
-1.4294741278088466e+01
-1.2510859703972621e+01
--3.0481126501465052e+01
-1.2247931999262324e+01
-9.8332627299348179e+00
--2.6647358554968722e+01
--5.6065615271177318e+00
-2.1280647468832690e+01
--4.2273307151136265e+01
-1.1220802009671532e+01
-8.4855836609448811e+00
--2.5013641472632955e+01
-1.1339844701992902e+01
-8.2681233083284837e+00
--2.4769280748182940e+01
-1.1979015666361729e+01
-8.6231643819739112e+00
--2.7286932864181203e+01
-9.0159958256193811e+00
-2.2904666177751029e+01
--5.0261521274146787e+01
-1.3643366650722042e+01
-5.8007680303947549e+00
--2.4611292339603128e+01
-1.2699045838631358e+01
-1.1297877384408757e+01
--3.4020096870011990e+01
-1.2699045838631358e+01
-1.1297877384408757e+01
--3.4020096870011990e+01
-7.8396952038817327e+00
-2.0760817420478894e+01
--5.1279254161400175e+01
-1.4202426707954096e+01
-2.2117238093771221e+01
--5.6048757652178253e+01
-1.0124853674382297e+01
-5.8195886052250900e+00
--2.6579504139460280e+01
-1.4476510459231227e+01
-8.9654567986603002e+00
--3.4723692505660679e+01
-1.3802264122319979e+01
-3.8463945982097245e+00
--2.5558859708134428e+01
-1.4256885270976520e+01
-2.0066802834029861e+01
--5.8044868007468835e+01
-1.3076463136562220e+01
-4.9455111604981852e+00
--2.7750540412688125e+01
-1.3076463136562220e+01
-4.9455111604981852e+00
--2.7750540412688125e+01
--3.6822239115353579e+00
-1.5781780392079336e+01
--4.5730063143477025e+01
-7.6419279962949478e+00
-1.7997041896655130e+01
--5.5284565121011994e+01
-6.9248901258876687e+00
-1.7773386399049432e+01
--5.4967498887530382e+01
--8.5359222604716356e-01
-3.4182310107301204e+00
--2.3009133650056679e+01
--1.0260710153941581e+00
-1.5362299026560603e+01
--4.9563717427962686e+01
--1.1587105858777136e+00
-1.5089070151805778e+01
--4.9101428603934757e+01
-1.2597056809793889e+01
-4.2433075185623323e+00
--3.0830983170723208e+01
--5.2534680060338046e-01
-2.0335100203137628e+00
--2.1573559980782797e+01
-1.3140868664893901e+01
-3.0632141804233828e+00
--3.0078380370662483e+01
-5.8818748358120594e+00
--1.1801591890358962e+00
--1.7011384130467597e+01
--2.1398470305418096e+00
-3.0337464180893967e+00
--2.6290367249109025e+01
--1.8066932721962661e+00
-2.8173420308426604e+00
--2.5941594953581639e+01
-1.4828711755227822e+01
-7.8476302423155335e-03
--2.6570120319894276e+01
-1.4104778779888685e+01
--1.0442403316753834e-01
--2.5867672642892106e+01
-6.0738593578172688e+00
--2.1606733594301821e+00
--1.8264758188415737e+01
--1.7280182543482923e+00
-9.0207643401179261e-01
--2.2790190275958654e+01
--1.5784351850841867e+00
-6.9993833293445573e-01
--2.2449821083712898e+01
-4.4313814260647924e+00
--1.9639506626738144e+00
--1.9252532522681964e+01
-5.3531683157466157e+00
--3.3138443092724694e+00
--1.6801710811799662e+01
-6.1038775477017175e+00
--3.0691687275082629e+00
--1.8340685199478383e+01
--3.6009544423199125e+00
--6.5391228817051428e-01
--2.3323669261569417e+01
--3.0997143361799520e+00
--1.5400710142599563e+00
--2.2360783344428881e+01
--3.3656649239088723e+00
--1.2729949425846958e+00
--2.3185442389727321e+01
-6.5836083297200376e-01
--3.6281834902590622e+00
--2.0064350226527282e+01
-4.1703413987761673e+00
--4.2238960445643503e+00
--2.1729532066493377e+01
--6.3645903554306384e+00
-5.0507933074142808e-01
--3.3095112135233407e+01
-3.0981487090535595e+00
--4.3980030252619606e+00
--2.0871812730277568e+01
-8.1959517955695704e-01
--4.0684186633933228e+00
--2.0222860200498797e+01
--2.8879553351504823e+00
--2.2528489355962877e+00
--2.5618488680367353e+01
--3.7087345893803576e+00
--2.3076757457291075e+00
--2.5097136184940041e+01
--8.9631424726684941e+00
-1.5392771867419069e-01
--3.2751985461645354e+01
--1.9846357401611190e+00
--3.2926068488731319e+00
--2.2355585555570560e+01
-9.2586334431036713e-02
--4.1863334369425909e+00
--2.1276610114990000e+01
-1.6781458836949252e+00
--4.8914573179911836e+00
--2.1580676772845226e+01
--1.4198956978125086e+00
--4.4260081724788227e+00
--2.2359317935604068e+01
--7.7997595426594346e+00
--2.2146595115283962e+00
--2.9731923697652046e+01
--7.5747695321610333e+00
--2.8444831242942481e+00
--2.8837498489994704e+01
-4.9541610293789242e+00
--6.8771101894560545e+00
--2.2163607907299390e+01
-2.4412221323112124e+00
--6.5163034564543230e+00
--2.1581215233392520e+01
-3.3636818656350891e+00
--7.7207173872313870e+00
--2.1302131651961012e+01
-3.3636818656350891e+00
--7.7207173872313870e+00
--2.1302131651961012e+01
-1.3240951657096227e+01
-1.1893097735653427e+01
--2.6355429087230217e+01
-4.5688882040769480e-01
-2.4307850780942822e+01
--4.2980532033779731e+01
-8.3571041675198714e+00
-2.6238002324889596e+01
--4.6392261765915428e+01
-8.5543700613029294e+00
-2.7685040569110047e+01
--4.8490958013146553e+01
-3.2588540126914918e+00
-2.4201841375029836e+01
--4.3684312958268585e+01
-8.1617715869933765e+00
-2.5236738977626874e+01
--4.6628218653695811e+01
-8.2661422416043866e+00
-2.5475450695038077e+01
--4.6934509448551168e+01
-9.2012649549684689e+00
-5.5226859121703953e+00
--1.9016033045913034e+01
-2.3021432716774022e+01
-2.8502830055084832e+01
--5.4906059258589735e+01
--1.8142898745703431e+00
-2.1184692249678900e+01
--4.2375714252411058e+01
--2.9905075358728785e+00
-2.0476055836736180e+01
--4.1720685784416759e+01
-1.1265642473841131e+01
-1.2092214453343491e+01
--3.2313304243443277e+01
-1.5886464877139964e+01
-2.5085567599417111e+01
--5.4433444649553728e+01
-8.9405999279687898e-01
-2.0315322864116087e+01
--4.5639742470134294e+01
-1.1764638850438839e+01
-9.0020950994018047e+00
--2.8746623553298932e+01
-1.1811694270393872e+01
-8.5652815075639825e+00
--2.8389855758386808e+01
-7.2236648808840442e+00
-2.1049686070353310e+01
--5.0971478824453165e+01
--2.9638555795528050e+00
-1.7642130265628680e+01
--4.5490790080563848e+01
-5.2592754401902253e+00
-1.0579090764581202e-01
--1.6129419607826513e+01
-1.4224612148586411e+01
-2.8926928166224601e+00
--2.4382703022115919e+01
-1.4178512399286660e+01
-1.4801932609576371e+00
--2.3126661322762281e+01
--1.0355663530962977e-01
-1.6265358372404012e+01
--5.2762749385286476e+01
-1.4172131163275075e+01
-1.9981455027215040e+00
--2.6515398578957342e+01
-1.6019960326284493e+00
-3.6028277482561905e-01
--2.0102069080361659e+01
-6.4130915113581359e+00
--2.1583547499294093e+00
--1.6779631125706370e+01
--1.4335162706259770e+00
-8.0506224683072825e-01
--2.1845023261812745e+01
--2.5012767546298802e+00
-1.9075447168358288e+00
--2.4821824225156870e+01
-1.1220197051283560e+00
--6.7651190432119501e-01
--2.0373941409872092e+01
-1.5209358573148583e+01
--1.4310293068005762e+00
--2.7306261983732135e+01
-1.4984459105196189e+01
--2.4919463823639552e+00
--2.7637536465061263e+01
-1.5244844788540668e+01
--2.9595458819343645e+00
--2.6989204718521574e+01
--3.8592774094133162e+00
--2.4882381259223502e-01
--2.3486919270662501e+01
--9.4633284322427413e-01
--3.0997147027848198e+00
--2.0563150265785445e+01
-2.6243130756609734e+00
--4.2586623456932795e+00
--2.0759679274476625e+01
-4.0183460398279776e+00
--4.5333403851602911e+00
--2.1848561831185613e+01
-6.6893062868161723e-01
--5.0035895094472096e+00
--2.1379525897397620e+01
--1.2525628861136304e+00
--4.4811675340680521e+00
--2.2267622246228783e+01
--1.2459191438909125e+00
--4.5223681723290969e+00
--2.2150653137989782e+01
--1.2893032039632282e+00
--4.9715595244877901e+00
--2.2567245372538995e+01
-5.4803317589052192e+00
--6.7505840509913595e+00
--2.1941987686098830e+01
-4.9185046223914819e+00
--6.8504049605356974e+00
--2.1576465450333423e+01
--5.9084239906684450e+00
--3.8481630315841420e+00
--2.7132057870970797e+01
--4.5069449199330842e+00
--5.7337172817105264e+00
--2.3947115131258894e+01
-1.4632099385274339e-01
-2.4725394202534133e+01
--4.0809567350958588e+01
-1.3573379931694245e+01
-1.6648634392378042e+01
--3.1971717201919400e+01
-1.0742443330275478e+01
-9.9011438847183619e+00
--2.5373997763458917e+01
-8.1523172690261809e+00
-2.3419015154378886e+01
--4.8834180212803822e+01
-8.0961382324835540e+00
-2.3314030744111900e+01
--4.8726228953472635e+01
-1.6789844634310917e+01
-2.4772526981021784e+01
--5.5540934100567206e+01
--1.3560209775516187e+01
-1.5647485936105483e+01
--3.5375728504706323e+01
-9.0685008242420899e+00
-2.3158749257155375e+01
--5.2476033656997984e+01
-9.2487841143176244e+00
-2.2352020934590112e+01
--5.2368421633759894e+01
-9.5383847538139666e-01
-1.7420402935890934e+01
--4.7618097833818481e+01
-2.7674135342285439e-01
-3.7019682934946476e+00
--2.2858303091212466e+01
--1.3983879326606621e+00
-1.5637277636555197e+01
--4.8907140866179212e+01
-1.1238292598378803e+00
-1.6200359975554157e+01
--5.1993181556377479e+01
--7.5493279013898551e-01
-1.1509166467989052e+00
--2.1519388001248814e+01
-1.4665784417161849e+01
-7.7592232155952667e-01
--2.7763883844868172e+01
--2.7780785101028531e+00
--1.3475480851956514e+00
--2.1687539554596462e+01
--1.0460014017367236e+00
--2.3449562921057265e+00
--2.0248770539859727e+01
--3.1439244136304900e+00
--2.4494460509393265e+00
--2.3307294981268257e+01
--1.3266920953485977e+00
--3.3504414386842010e+00
--2.1334247321459081e+01
--8.1803487072704550e-01
--3.8241367128448451e+00
--2.1501181461222156e+01
--2.1430363843659679e+00
--3.4610590458288688e+00
--2.2686824513765018e+01
-1.9373327676840417e+00
--6.1572009830881873e+00
--2.1367564521993810e+01
-5.2886518781586798e+00
-2.7300781505423711e+01
--4.2468868919871426e+01
-1.3521813186116831e+00
-2.5695574677594760e+01
--4.0440701459022982e+01
-3.1536381902143207e-01
-2.5203419419759328e+01
--4.0345219040493454e+01
-5.9689132379051646e+00
-2.4180303952496150e+01
--4.4760527733914046e+01
-7.3372735074025055e+00
-2.6670813377358410e+01
--4.8463010090371135e+01
-1.6682504738105276e+01
-2.2397015012226305e+01
--5.5402190243652861e+01
-1.3057189710946286e+01
-9.1903424956593831e+00
--3.2501179084011746e+01
-3.4085519786239300e+00
-1.7556426196537362e+01
--5.0918123638221196e+01
-7.8989828454881883e-01
-1.9318570255521283e+00
--2.0886829125290930e+01
--2.9590301385537812e+00
--2.1518001129080391e+00
--2.2819160407439391e+01
-4.3374208691851024e+00
--6.2176877429417097e+00
--2.2125624306315615e+01
-4.3374208691851024e+00
--6.2176877429417097e+00
--2.2125624306315615e+01
-6.5716961880431128e+00
-2.7655737309589213e+01
--4.3744782992866476e+01
-2.5696841824668972e+00
-2.5923985955997104e+01
--4.1502617520916424e+01
-2.6308911213809814e+00
-2.6138846289289706e+01
--4.1718510458259722e+01
--4.8754498065933713e+00
-2.1889596390098728e+01
--3.7340528641871892e+01
-7.2323494878121108e+00
-2.7192733514983505e+01
--4.5391544372354588e+01
-1.2935135419873077e+01
-1.2864707650111583e+01
--2.7548060811023543e+01
-2.4038258111349369e+00
-2.3299227401646196e+01
--4.3822255494090790e+01
-2.4116364306560341e+00
-2.2503630737948143e+01
--4.5064778187442180e+01
-2.4151836937421152e+00
-2.2459143835552300e+01
--4.5013670463463946e+01
--3.3875320417746448e+00
--1.0154134195666840e+00
--2.2623483649378304e+01
-1.7116758631834914e+00
--4.1308446490382833e+00
--2.0541864677223160e+01
-1.1005800575813709e+00
--4.4895139377424238e+00
--2.0841861358388787e+01
-3.2203061741573245e+00
--5.7926225694326980e+00
--2.0821233670347162e+01
-2.7633636483148050e+00
-2.5551053205098594e+01
--4.3318094179442603e+01
-1.2291676341845887e+01
-1.4777468730232753e+01
--2.9600562592329641e+01
-1.2429330438111277e+01
-1.2784247163155417e+01
--3.0236349817110767e+01
-6.8151518865792751e+00
-2.3413566123509355e+01
--4.9260777042715766e+01
--2.2760594711449027e+00
-1.9977333031280121e+01
--4.4120245736321685e+01
-1.1154549542318859e+01
-2.0296929340010923e+01
--5.3556990909963936e+01
-1.4794265445475466e+01
-2.1128469432725964e+01
--5.6646586845455744e+01
-3.0324226897947222e+00
-1.8729810490844162e+01
--5.4304359584470433e+01
-2.2521115796034517e+00
-1.6008996093818194e+01
--5.1728434566786099e+01
--4.0877489005078207e+00
-1.4672854236834047e+01
--4.7849439954012823e+01
--1.7434119388104681e+00
-7.3953076117750627e-01
--2.2707356321832989e+01
--2.7439425379722588e+00
-7.5785113875786436e-01
--2.3234153695717069e+01
--3.4495643835576280e+00
--4.7660987649702868e-01
--2.2506459509244991e+01
-3.2706536481628743e+00
--5.3080521373479321e+00
--2.1044567828311560e+01
-1.6952859558054620e+01
-2.8191329343932576e+01
--5.6588355848682113e+01
--3.1018679072120419e+00
-1.6743464102169572e+01
--4.5262818122656874e+01
--1.5865255389993663e-01
-1.5523428657549458e+01
--4.9566799462589167e+01
--6.9145400019460568e-02
-1.6034316000514238e+01
--5.0666284402437434e+01
--1.0928262861881106e+00
-1.7714344075651233e+01
--4.6688510851609720e+01
-4.9049690662445036e+00
-2.3061933229159255e+01
--4.8455301193905953e+01
--2.5971808284613287e+00
-3.3532014579963281e+01
--3.9702455497287467e+01
-6.4747576005013876e+00
-3.7417351479476956e+01
--4.3359228325532733e+01
-6.5284131508726855e+00
-3.8567685696062910e+01
--4.4653420300731575e+01
-6.5429342120496310e+00
-3.7270226207406893e+01
--4.3530986478258214e+01
-6.2317219511725677e+00
-3.7267532848778153e+01
--4.3789261631621322e+01
-6.5465241554226754e+00
-3.8075915730335069e+01
--4.5178489500951045e+01
-3.5331383038007779e+01
-7.7295059028645824e+01
--8.9718829283790413e+01
-6.5543586255884119e+00
-3.3878717804916157e+01
--4.4796727259193531e+01
--3.2976143217787617e+00
-2.6490126547386382e+01
--3.8811900569298757e+01
-1.1428511779543175e+01
-2.9393823210606843e+01
--4.4387882115228102e+01
-7.9823791323338584e+00
-2.6865578700751332e+01
--4.2070885741074299e+01
-4.6749723046198097e+00
-2.7044663827493341e+01
--4.2320186612675343e+01
-1.1343412382985190e+00
-2.5079892360151209e+01
--4.0879113244792926e+01
-1.0247420784785964e+01
-1.5264112347258216e+01
--2.8728209472566256e+01
--1.7239907995502715e-01
-2.4251117816818983e+01
--3.9665155796910220e+01
-1.3055831877477452e+01
-1.5310962675138727e+01
--2.8801375827213100e+01
-1.6104699211905207e+00
-2.4806912531269298e+01
--4.1493941724887051e+01
-7.9989677302688005e+00
-8.5346281160137849e+00
--2.0329814205396463e+01
-4.6746531324597616e+00
-2.6273703414202753e+01
--4.3960059663137386e+01
-1.3551807473832195e+01
-1.4331458842511637e+01
--2.8363749598713316e+01
-8.6782593614541987e+00
-8.1044229282960814e+00
--2.0026432310612016e+01
-1.2514456707726293e+01
-1.6844525474814876e+01
--3.1989482521109757e+01
-2.3741472879915229e+01
-3.1672986023221000e+01
--5.2892177302734723e+01
-1.1232490954252302e+01
-2.7441262399563399e+01
--4.6865778887173668e+01
-8.4330273472416373e+00
-8.5875620668132502e+00
--2.1535014899139444e+01
--8.4295980105923507e-01
-2.3048293134459364e+01
--4.0848470057095327e+01
-1.3635557968320015e+01
-2.8209883749838884e+01
--4.9108336308595881e+01
-1.3198047088532434e+01
-9.2430689797978456e+00
--2.3101963689495140e+01
--9.6433180187670420e+00
-1.9613518822095735e+01
--3.5258418637770227e+01
-1.0718823132611455e+01
-2.6214566572218335e+01
--4.6365325851531402e+01
-1.2885562859038600e+01
-1.6222429983960261e+01
--3.2852203505528834e+01
-1.0808229094248242e+01
-2.7005522925546362e+01
--4.7442931823251513e+01
--9.3557666424313144e+00
-1.9528888092921346e+01
--3.5604758157175581e+01
-1.3055917259060916e+01
-1.5158252257267254e+01
--3.1718180269294987e+01
-1.2691055454361470e+01
-9.7562217170358387e+00
--2.4413950424557353e+01
-1.2356285550841957e+01
-2.7177433886003492e+01
--4.8802004060986278e+01
-7.7163244392412285e+00
-2.4757162781504686e+01
--4.5188280551788964e+01
--4.2434130901760012e+00
-2.1460292026312754e+01
--3.9474621154317752e+01
-1.4037099459228758e+01
-1.3865074412044223e+01
--3.0818876480334616e+01
-1.4037099459228758e+01
-1.3865074412044223e+01
--3.0818876480334616e+01
-1.1173087941550119e+00
-2.3143962945811250e+01
--4.3166538044787643e+01
-1.2273736988210961e+01
-9.9696492031847139e+00
--2.5560768752477149e+01
-1.2286989056980589e+01
-9.3832785081511449e+00
--2.4451878690635965e+01
-9.2739749210729272e+00
-2.5320380112187667e+01
--4.7291325447526717e+01
-1.2526520938707373e+01
-1.4485432127770098e+01
--3.2143947141454611e+01
-1.2613423473935981e+01
-8.4390551406770680e+00
--2.3815804309918637e+01
--8.6600709476331641e+00
-1.8958275415304389e+01
--3.6931120255441655e+01
-7.2210429493363248e+00
-2.4180384318239909e+01
--4.6628546042324004e+01
-9.2969669839275344e+00
-2.4653342123401700e+01
--4.7692826492398098e+01
-8.0124165757495227e+00
-2.4083773713143131e+01
--4.7071765435586777e+01
-1.3585730937720959e+01
-1.3296095629319206e+01
--3.1915240191367353e+01
--7.1782697346719031e+00
-1.9356846791808149e+01
--3.9362605950049577e+01
--7.3178451760050942e+00
-1.9062651896568894e+01
--3.8308321167561090e+01
-1.6303775597092571e+01
-2.6149178736294697e+01
--5.2667334095824600e+01
-1.1996662852845441e+01
-7.3969613605532940e+00
--2.3720500265104707e+01
--4.3413484260742878e+00
-1.9927853380164880e+01
--4.0997727770091906e+01
-9.2496774737129854e+00
-4.6615266318198891e+00
--1.9529802923859098e+01
-5.8155248940075595e+00
-2.2478160477627153e+01
--4.6759446488549621e+01
-1.3630710551669987e+01
-1.1015991899301346e+01
--3.0272672891288742e+01
-1.2270411319744843e+01
-5.9070637361654335e+00
--2.2360282664770594e+01
-2.5326956852472602e+00
-2.2088223531289273e+01
--4.6219034939229523e+01
--3.2915292704158277e+00
-1.9726411184823846e+01
--4.2251678390492913e+01
-1.1568267938138222e+01
-1.0264905415554082e+01
--2.9134864469852083e+01
-2.5490909043813442e+01
-2.9390695608398165e+01
--6.1816088023918105e+01
-1.7983076944466937e+01
-2.5688179653813496e+01
--5.5385636252224181e+01
-1.1329944266884453e+01
-2.3079952468721817e+01
--5.0559513137338001e+01
-1.2967443849557105e+01
-6.7144649704094261e+00
--2.4809191436016746e+01
-4.3308297650128118e+00
-2.1630365027185000e+01
--4.7748427716213918e+01
-1.2673251282837247e+01
-6.9515201744412582e+00
--2.5233670189469020e+01
-9.1445856950464179e+00
-5.2721840990382995e+00
--2.1736652374917142e+01
-1.1499012514410229e+01
-8.7457718095837205e+00
--2.8142575457301259e+01
-1.3365092790806825e+01
-1.2826759240183938e+01
--3.5310729733559448e+01
-1.2149532951997365e+01
-2.3241638390267401e+01
--5.2743773574112268e+01
-1.3229503718076890e+01
-6.0926367961877084e+00
--2.4860982280833543e+01
-1.2009817227851000e+01
-7.0338451148434791e+00
--2.6768405067017252e+01
-1.2879313581614063e+01
-1.0497090390319432e+01
--3.3642340173416059e+01
-1.3477675502091593e+01
-1.0571613414407835e+01
--3.3991316303730613e+01
-1.3422530052713871e+01
-4.8448628103070002e+00
--2.4728706729477725e+01
-1.4130002519158985e+01
-1.0031378531679175e+01
--3.4775177955702588e+01
-1.2671328037293938e+01
-1.0548562387662981e+01
--3.5512183975967240e+01
-1.2368802435513121e+01
-1.0386159663310737e+01
--3.5087155110235813e+01
-1.2675294028293870e+01
-5.7788268070898656e+00
--2.7043751758689563e+01
-1.2190157436385160e+01
-2.1154886890682150e+01
--5.4793116272357764e+01
-1.2334188685248321e+01
-6.1935214105180698e+00
--2.8331832342270378e+01
-7.4710936093682498e+00
-1.9889576934958878e+01
--5.2439648500243614e+01
-1.2484749733411435e+01
-7.6470045781766203e+00
--3.1269554373567328e+01
--2.7703444976613132e+00
-1.7456025001041947e+01
--4.6153294652624012e+01
-1.3324193497230059e+01
-1.0047579284036489e+01
--3.6337673052111917e+01
-1.2742985045379410e+01
-5.3420709024743767e+00
--2.7376678591507620e+01
-1.2710278298050978e+01
-5.4136773819101984e+00
--2.7467934383968558e+01
-1.3797828806199467e+01
-9.0407935972979416e+00
--3.4794499627263257e+01
-1.2607416373532494e+01
-5.4338695820483309e+00
--2.7789987385099103e+01
-1.2615371526709469e+01
-5.4523255525823719e+00
--2.7908183425774705e+01
-1.3659141956451757e+01
-4.0803199581419554e+00
--2.5558186522866979e+01
-1.3378146337233229e+01
-4.1387494989232332e+00
--2.6200572275525161e+01
-1.0047896700613649e+01
-1.9420166603380775e+01
--5.4727012383969466e+01
-1.4087483472245125e+01
-3.0738917189400716e+00
--2.4721344175448042e+01
-9.1855762558040723e+00
-1.9307568228420394e+01
--5.5371958641934377e+01
-1.4566791266573295e+01
-8.2237754272809660e+00
--3.5342146229593588e+01
-1.3988839603353854e+01
-2.8433600131842294e+00
--2.5078958247693368e+01
-2.7658725847045523e-02
-1.6594547092710215e+01
--4.8770938340269154e+01
-1.4192442363257388e+01
-2.5432415902371099e+00
--2.4895284779649014e+01
-1.3612629177941212e+01
-1.8242953322858595e+00
--2.3272167352749168e+01
-1.3444698273615849e+01
-2.2909875675710878e+00
--2.3998107237740864e+01
-1.2798072346193711e+01
-4.5453125973051742e+00
--2.8497514377311948e+01
-1.2751908830710843e+01
-4.5271898023441093e+00
--2.8551001386257294e+01
-1.3989526386402883e+01
-2.6929321073211363e+00
--2.5314581643887649e+01
-1.2644320759212464e+01
-3.8826430530719893e+00
--2.7390378690329815e+01
-1.3190308273667791e+01
-2.6841240508107438e+00
--2.5501349958907262e+01
-1.2939986968638735e+01
-4.1903246938845990e+00
--2.9094654912140022e+01
-1.3966376675666920e+01
-2.2393717976655170e+00
--2.5646132496557502e+01
-1.3657220043843019e+01
-2.8542244246791060e+00
--2.6750426814010503e+01
-1.3660724366781476e+01
-2.7939136650617646e+00
--2.6717199826266995e+01
-1.3284989149562087e+01
-3.2336099354794086e+00
--2.7702245172367263e+01
-2.7373346638394075e-01
-1.5801866874348887e+01
--5.0044544963692225e+01
-2.7373346638394075e-01
-1.5801866874348887e+01
--5.0044544963692225e+01
-1.4312016184562538e+01
-9.7530683660945375e-02
--2.1754707899607794e+01
-1.3616787730124701e+01
-1.2747306779738432e+00
--2.4471538087017780e+01
-4.1722710315586875e+00
-1.6442896499663853e+01
--5.3699950262980543e+01
-8.4047821251676758e-01
-1.5553664688165847e+01
--5.0900940826315455e+01
-1.3919544690414360e+01
-1.9018782411763386e+00
--2.6055321081256835e+01
-1.3282347385675980e+01
-3.0026186159419126e+00
--2.8164828639164227e+01
-1.3302944182259459e+01
-3.0258915553535024e+00
--2.8195866230619455e+01
-1.3448272029864427e+01
-2.2565470310617268e+00
--2.6697845196386258e+01
-1.4481610370300947e+01
--3.4487805837916419e-01
--2.1571682260884170e+01
-3.0163938821944272e+00
-1.5931966026582453e+01
--5.3484246401414907e+01
-1.3785956092318701e+01
-2.3224654144838701e+00
--2.7816183114586590e+01
--2.4673086773183778e-01
-1.9648712503822490e+00
--2.1589853962662954e+01
--4.4922559019121694e-01
-2.2857251431440115e+00
--2.2250632539995827e+01
-1.3854753504368729e+01
-1.7870838604595272e+00
--2.6979185146546101e+01
-1.3328953062862288e+01
-2.0777357391494804e+00
--2.7338496991676912e+01
-1.4132604545687849e+01
-1.2946380409261338e+00
--2.6370813826326408e+01
-1.4543455956690003e+01
--6.7832669084518415e-01
--2.1760707482668284e+01
-1.4180687694482167e+01
-1.1292172772387705e+00
--2.5855769742143845e+01
-1.4214346060192643e+01
-1.3030139019234970e+00
--2.6442672397089478e+01
-3.5422689308349831e-01
-1.2863791139487195e+00
--2.0812548902750191e+01
-1.4114423639922387e+01
-1.3894046707109751e+00
--2.6714535481395441e+01
-1.3660995895409721e+01
-1.2898812829587061e+00
--2.6354955958890343e+01
-1.7528127243445197e+00
-6.9138871226875931e-01
--2.0328272411984408e+01
-1.3907606767882214e+01
-1.5883087943842873e+00
--2.7492822988679343e+01
-3.1433531013603915e+00
-4.8085036707500445e-01
--2.0575085904625499e+01
-1.4683129287992406e+01
--1.1236008832890161e+00
--2.1586302023940306e+01
-1.4482836259370409e+01
-7.2887760704614946e-01
--2.6286123848931190e+01
--1.0833382769991660e+01
--6.1230824372087678e-01
--1.2060457668725661e+01
-1.3882877931260587e+01
-1.4379817616573081e+00
--2.7798417361700661e+01
--1.6433853416497315e+00
-2.2821178932090378e+00
--2.2982633872967590e+01
--1.1535541240884073e+00
-1.7935831983747894e+00
--2.2269412604329336e+01
-1.3587827642621496e+01
-1.0468430286727037e+00
--2.6995986999068236e+01
-1.3883696767509418e+01
-3.0668203944088995e-01
--2.5651729471024407e+01
-1.3546301930923773e+01
-1.1618754389693813e+00
--2.7536700675079693e+01
-1.9290155973331558e+00
-1.3032360523207759e-01
--2.0258954790248794e+01
-1.3890813785947209e+01
-1.1689490571979859e+00
--2.8311133129386448e+01
--1.5131677087192104e+00
-3.6603273894650825e+00
--2.7216715170323930e+01
-1.3988071916407856e+01
--1.6412957432225397e+00
--2.1397995144278312e+01
-1.3955696238089967e+01
-1.1634808164358852e+00
--2.8595335379068029e+01
--1.6363336580791448e+00
-1.8147006838160176e+00
--2.2669527737043865e+01
-3.0008509945599737e+00
--1.7897174649439121e-01
--2.0253120438456019e+01
-1.4106134244928349e+01
-6.8291787606173693e-01
--2.7806281783196376e+01
-1.3997911927556611e+01
-4.5408560528030978e-01
--2.7241670052967802e+01
-1.3669541893680687e+01
-2.5084658359166284e-01
--2.6571552516967493e+01
-1.3579711763083280e+01
-8.1437550029593420e-01
--2.8010237905071531e+01
-1.4189921032705275e+01
-2.5739117460530803e-01
--2.7728349958541390e+01
--1.9627619671546641e+00
-1.9588064973785673e+00
--2.4128486963906234e+01
-1.4461111350920877e+01
--4.8378656831888717e-02
--2.7328840704415530e+01
-1.4473941480852666e+01
--6.1987108899934376e-02
--2.7215629813770281e+01
--1.6492557430460779e+00
-1.2819354475863489e+00
--2.2807309365796286e+01
-4.7595284344810107e+00
--6.1004925432095491e-01
--2.1138636803885436e+01
-1.3939360169926671e+01
-1.3343479051313564e-01
--2.7829768324377767e+01
-1.4277455880748695e+01
-6.9274518367786878e-02
--2.8071874127364573e+01
--1.0163606503759801e+00
-6.3401389282630150e-01
--2.1828235346455727e+01
--2.4587973276882682e+00
-2.1090985795330037e+00
--2.5070817406276305e+01
-1.4088198842137142e+01
--4.0061084215470055e-02
--2.8411738749641060e+01
-1.1612537997802121e+00
--6.0072438341061329e-01
--2.0404791558443637e+01
--1.9438096072523586e-01
--1.4891342869983440e-01
--2.0921863711286800e+01
-5.7400733829085393e+00
--1.2409512874692863e+00
--2.1097485767345795e+01
--2.0328300249320175e+00
-1.1318178673216752e+00
--2.3336335273342886e+01
-2.7169803056194088e+00
--9.1894473427317980e-01
--2.0561053940278093e+01
--1.6081821187864349e+00
-6.3153917073257571e-01
--2.2633010606591391e+01
-1.4354079787001098e+01
--8.2257152427256441e-01
--2.7942723027667405e+01
-1.4843089844702460e+01
--1.2654466681654770e+00
--2.7036497703778760e+01
-5.1553842855571705e+00
--1.5479278723136207e+00
--2.0753689143449009e+01
-5.3189101861290871e+00
--1.6854062755777972e+00
--2.0483839559400248e+01
-5.1646595144445506e-01
--8.7056121514010365e-01
--2.0676271521281713e+01
--5.5981940875040737e-01
--4.6973436336811386e-01
--2.1218702822282264e+01
-1.5093249144964895e+01
--1.8927814300808661e+00
--2.7016821017792232e+01
-1.3988961521856076e+01
--6.9337486614062560e-01
--2.9589301392228929e+01
-1.4619034984807963e-01
--8.8521355459606210e-01
--2.0918638941284986e+01
--1.0789877374127624e+01
--1.5578727907909968e+00
--1.2413662855101967e+01
--1.3543317040416334e+00
--6.7898009921215130e-01
--2.1511436802810458e+01
-3.8790503332144826e+00
--2.1856701323275662e+00
--2.0321649335766992e+01
--9.2715157082375210e-01
--1.1442665433473129e+00
--2.0860565009644294e+01
-1.4466871268316769e+01
--2.1381769750361865e+00
--2.8655143633183698e+01
-1.4172964634150286e+01
--2.0782774401498179e+00
--2.8409461448006141e+01
--1.3956569423682490e+00
--1.0075659815006865e+00
--2.1293236808795612e+01
--1.8475850840463006e+00
--8.0059030667388065e-01
--2.1759808582625055e+01
-2.0758099605653428e+00
--2.1704221991889661e+00
--2.0309931108806179e+01
--1.0980582176781652e+01
--1.6775418801882109e+00
--1.2535220646822040e+01
-1.5249706455366768e+01
--3.8414418466928324e+00
--2.4237080145479908e+01
--4.0635637673931786e+00
-9.0043339587626914e-01
--2.5850387459900464e+01
-3.2471338519938170e-01
--1.8266713793218601e+00
--2.0399513660116583e+01
--7.4985898005995411e-01
--1.5266974259263091e+00
--2.0819379286551623e+01
-1.4865821187816497e+00
--2.1606121548626280e+00
--2.0356794276552286e+01
--3.3073509024859136e+00
--3.6899775265800061e-01
--2.2915152307287126e+01
-4.1326852198169145e-01
--2.0447839366899321e+00
--2.0462156843416999e+01
-4.8822902509725891e-01
--2.0731003567856705e+00
--2.0430568772015128e+01
--5.9587348355294578e+00
-5.2681123232672391e+00
--3.9421371008348707e+01
-2.7864807037622528e-02
--1.9826020698796993e+00
--2.0587745891918019e+01
-2.1957998063449962e+00
--2.7088649618123370e+00
--1.9561293807686642e+01
--3.0618558284292323e+00
--7.8330752439814366e-01
--2.2393651756660418e+01
-1.4907480093002798e+01
--3.8954447427680727e+00
--2.5890191825669866e+01
--3.6915761413253296e+00
--4.2357455081257728e-01
--2.3398026829825529e+01
--2.8542832621080381e+00
--1.3100998150841665e+00
--2.1614282242122208e+01
-8.6469619504004591e-01
--2.6248369060005134e+00
--1.9743401774772050e+01
--2.8000944342568324e+00
--1.3123739371989138e+00
--2.1625149084923663e+01
--2.7975496853837680e+00
--1.3563081725758861e+00
--2.1568996614074589e+01
--2.7766356718698950e+00
--1.3864526210865922e+00
--2.1566954836254567e+01
-2.8132650004390229e+00
--3.2023411890787221e+00
--1.9849027214388066e+01
--8.8684534097193501e-01
--2.2095642251305145e+00
--2.0529549388879690e+01
--1.1469570963551445e+00
--2.3360722212899074e+00
--2.0331149481144347e+01
--1.0848424273021191e+00
--2.4670108549612335e+00
--2.0240625180421400e+01
--3.4912144849101812e-01
--2.8917325578654824e+00
--2.0329022974212840e+01
--3.9172331283572417e+00
--1.0664208566077340e+00
--2.3929395975098132e+01
--8.0262913482716147e-01
--2.7999577941073266e+00
--2.0479284423989480e+01
--6.8270199481829392e+00
-2.7180447829857486e+00
--3.5500277231926376e+01
-1.1441911942724749e+01
--4.6090543472896419e+00
--2.5455055670772868e+01
-1.6156437451417263e+00
--3.6391708271385039e+00
--2.0269774153490239e+01
-2.9866075318562588e+00
--3.9221157566286409e+00
--2.0643941353686902e+01
--7.2446928182411714e+00
-2.3095865981919936e+00
--3.4931587439227791e+01
--6.8268261578148062e+00
-2.0741098106855853e+00
--3.4639986259166825e+01
-2.8492672366480796e+00
--3.9734825970319405e+00
--2.0723897250382244e+01
--4.0441682358598801e+00
--1.8509784056979546e+00
--2.2075452286165575e+01
--1.8577449340879835e+00
--2.6848202863761674e+00
--2.1511642913667611e+01
--1.6474185360264668e-01
--3.5052146329519700e+00
--2.0598319579787599e+01
--3.7786753705692266e-01
--3.4381708044135695e+00
--2.0698389344711060e+01
-2.2164067767987623e+00
--4.2470745836313615e+00
--2.0648244474765335e+01
-9.8906035893812652e-02
--3.7996596911882894e+00
--2.0813170032766376e+01
--1.7637018610108304e+00
--3.2474112753884783e+00
--2.1889547047432927e+01
--2.3701467090977610e+00
--3.0437985093665900e+00
--2.2364142159851237e+01
--2.3299845220341369e+00
--3.1052558999901310e+00
--2.2354791352350581e+01
-4.0753371227198920e-01
--4.1865016884623767e+00
--2.0990747361286299e+01
--2.4582125215438309e+00
--3.2766935842353782e+00
--2.2682027278987110e+01
-1.7434204821233110e-01
--4.2713337050527977e+00
--2.1263227175570368e+01
--4.7176765610446758e-01
-7.6108916382406889e+01
--7.8621239874981626e+01
-6.7389838169330361e+00
-3.8040377186057306e+01
--4.3840775090827670e+01
-6.2378171985144153e+00
-3.7469954121091739e+01
--4.3646970177844430e+01
--2.7485321107647449e+00
-3.2541388424519077e+01
--4.0067411592661188e+01
-6.8073671825326247e+00
-3.7399942697189843e+01
--4.5228384519402496e+01
--1.6852694626869451e+00
-3.2446673047297324e+01
--4.0940689937324208e+01
--2.7381508128378820e+00
-3.2273211363339030e+01
--4.1054821974263241e+01
-2.2967344273163457e+00
-3.1143064475364298e+01
--3.9867802922966717e+01
-6.3674041631827993e+00
-3.5659009147798429e+01
--4.5333548614043806e+01
--2.4874407610001379e+00
-3.1550218624971112e+01
--4.0928479014955414e+01
-3.3699210156559019e+01
-7.8582332608366301e+01
--9.1750596726634441e+01
--7.7888600267469232e-01
-3.0382211482278059e+01
--4.0353998483693182e+01
-8.7162585460497577e-01
-3.0694360175665476e+01
--4.0765439566073894e+01
--7.7590296360710453e-01
-2.9738356844501290e+01
--4.0236858309776323e+01
--3.5985877417679896e-01
-2.7947697171722137e+01
--3.9177246828488641e+01
--2.5857236525157788e-02
-2.8107130025275399e+01
--3.9341314483843014e+01
-5.9194999333041425e+00
-3.0452028596229898e+01
--4.1897150998916594e+01
--7.6805945606211201e-01
-2.8301273156980972e+01
--3.9483771087267975e+01
-5.1060192432364107e-02
-2.6944504372863005e+01
--3.8812547669438793e+01
-2.4611220855974731e+00
-2.6129793972078044e+01
--3.9143312998802294e+01
-4.9736113515787883e+00
-2.7010043533843582e+01
--4.0458657476915960e+01
-6.2238910181543687e+00
-2.6766270898513330e+01
--4.0797162040082625e+01
-2.8787757951193127e+00
-2.6029676035967899e+01
--4.0267155834045305e+01
-7.8266775810554656e-01
-2.5215414606645780e+01
--4.0114309865323108e+01
-1.4074661930011265e+01
-2.9670464613880878e+01
--4.7416834980393354e+01
-1.0828337739627221e+01
-2.7639009089869791e+01
--4.4540320838921737e+01
-1.2268236049409007e+01
-1.6670748840649566e+01
--3.0255142224307942e+01
--6.0830299299205652e+00
-2.1928373934725784e+01
--3.6692257535554170e+01
-7.9923088697268794e+00
-9.0807675719200667e+00
--2.0744426318514979e+01
--7.0983361704787269e+00
-2.1637107842416416e+01
--3.6508609067371964e+01
-1.3252729405738688e+01
-1.5148964465855506e+01
--2.9138272129896208e+01
-1.3222394166301671e+01
-1.5006285703256232e+01
--2.9040788741981014e+01
-8.5182673004422327e+00
-8.7815692805078811e+00
--2.0783682168373506e+01
-6.7077806148891055e+00
-2.6034552313934512e+01
--4.3421990714739820e+01
--7.8305765650062895e+00
-2.1196076277819564e+01
--3.6239660780325906e+01
-7.3219927860856222e+00
-2.7872530679919286e+01
--4.6102078243678875e+01
-1.4545207194047650e+01
-2.9456476069565920e+01
--4.8867784318157135e+01
-1.6890895007036335e+01
-3.0036755640523971e+01
--4.9992018509794931e+01
-6.1451274358828059e+00
-2.6310666133109113e+01
--4.4162609781687721e+01
-1.0050233995040630e+01
-2.6859862895155764e+01
--4.5305385286847120e+01
--3.0589640218316729e+00
-2.2392056564151225e+01
--3.8499217024712529e+01
-1.0279215879970465e+01
-2.5885838175170406e+01
--4.5325617487800670e+01
-1.1586525952956114e+01
-2.6602626949650272e+01
--4.6658112668645643e+01
-9.0021135602063591e+00
-2.5926828679295404e+01
--4.5618243248541255e+01
-1.2206182315129166e+01
-1.6065042840748145e+01
--3.2230514531168602e+01
-5.3795655520116377e+00
-2.5196385058023530e+01
--4.4466481271602866e+01
-1.2240366863603830e+01
-9.7346014766114273e+00
--2.3622960968497324e+01
-4.0007510241897837e+00
-2.4868465295815319e+01
--4.4168715652612669e+01
-3.8349429427100477e+00
-2.4396889131504082e+01
--4.3589783222741815e+01
-1.1640836358361147e+01
-2.6175272103034949e+01
--4.6872787135642902e+01
-1.4848555837491229e+01
-2.7115264350099377e+01
--4.8812267161853825e+01
-1.2657449535704329e+01
-2.7305050040258998e+01
--4.9474879873554272e+01
--3.3026393199716488e+00
-2.1540427309326148e+01
--4.0128588878288433e+01
--2.0437400635116254e+00
-2.1847657345269752e+01
--4.0904165607241140e+01
-6.4391035759756150e+00
-2.4658222893307489e+01
--4.6556772008944812e+01
-5.0307515779110927e+00
-2.3016502786648672e+01
--4.3638966051981960e+01
--2.2175385807932284e+00
-2.1410655439941209e+01
--4.1704481482657187e+01
-1.0985603696822924e+01
-1.0492303245097709e+01
--2.7079017545636674e+01
--7.2559176413820738e+00
-1.9338271747057224e+01
--3.8118467587139250e+01
--2.2526669380038888e+00
-2.1187554967317226e+01
--4.1728108827862073e+01
--8.3518916940684491e+00
-1.8848088012806663e+01
--3.7698866335184249e+01
--3.3869187240171228e+00
-2.0606725032287272e+01
--4.1017537698696273e+01
-1.2187861601455889e+01
-9.6960294999428527e+00
--2.6896451633970184e+01
--4.6239835626365160e+00
-1.9881382336578049e+01
--4.0428594209778254e+01
--3.2868925088001930e+00
-2.0193284914706023e+01
--4.1430746052029598e+01
-1.1412134005402420e+01
-1.3144816452040114e+01
--3.3686108091541087e+01
-1.3619072920973101e+01
-2.3780945703851405e+01
--5.1129476946404459e+01
-1.4444453812852128e+01
-1.1150285223778825e+01
--3.2029573987074230e+01
-9.3889471394142987e+00
-2.2142379048817144e+01
--5.0049207868328558e+01
-1.2055716874303741e+01
-5.1486024392322927e+00
--2.2389850547575190e+01
-1.2055716874303741e+01
-5.1486024392322927e+00
--2.2389850547575190e+01
-9.9603506247454181e+00
-2.2847780091628668e+01
--5.1713928000522962e+01
-1.4180307026934553e+00
-1.9917560198084139e+01
--4.6149236431057020e+01
-1.2289448393563918e+01
-9.1681875808312192e+00
--3.1878168418817570e+01
-1.2289448393563918e+01
-9.1681875808312192e+00
--3.1878168418817570e+01
-1.2289448393563918e+01
-9.1681875808312192e+00
--3.1878168418817570e+01
-1.3271754129486864e+01
-4.5082764928478465e+00
--2.4338334619874683e+01
-1.3642334038061501e+01
-2.2029654443218366e+01
--5.5869112716628429e+01
-1.8132648972749205e+01
-2.0870952732817926e+01
--5.6088754642916463e+01
-1.8827895187756528e+01
-2.1127502874073262e+01
--5.7866721760981221e+01
-1.8827895187756528e+01
-2.1127502874073262e+01
--5.7866721760981221e+01
--5.4600562793157641e+00
-1.6367057794853935e+01
--4.3053405309784999e+01
-1.3351308316878239e+01
-2.9997885270339104e+00
--2.3773313793739021e+01
-1.4335209268568336e+01
-2.4249613733052340e+00
--2.4234838875725352e+01
-1.2609926224220350e+01
-4.5160187000875922e+00
--2.7622941206025921e+01
-2.6639124628228115e+00
-2.0691890608830366e+00
--2.1012603722291935e+01
-2.3186395338457673e+00
-1.8291253294396632e+00
--2.0634431942231011e+01
--2.4023848163655818e-02
-2.8483636842070754e+00
--2.2279740390494215e+01
--2.5679014573540238e-01
-2.8497768038290423e+00
--2.2291291981877770e+01
--2.3628580823407977e-01
-1.6226069819852480e+01
--5.0809867997921614e+01
-1.4924983971150674e+00
-1.8488683977669964e+00
--2.0812334275671311e+01
--5.3202584380917550e-01
-1.5837956859972333e+01
--5.0000992528083856e+01
-8.6846331279421052e-01
-2.1940085050637013e+00
--2.1389795378480297e+01
-1.9423669887499824e+00
-1.3758582026487960e+00
--2.0502810547554070e+01
-1.3381921223642792e+01
-2.6356567217461855e+00
--2.8034670168162418e+01
-1.3331912533963049e+01
-2.1215389586437952e+00
--2.7081308654511293e+01
-1.4516438960647198e+01
--5.9615643781192240e-01
--2.1763512806764666e+01
-1.3835450481462894e+01
-1.0083174781037656e+00
--2.5708505394877768e+01
-3.1103694442848604e+00
-7.3312292799443013e-01
--2.0643716390770567e+01
-1.3810059670224927e+01
-6.1976349660882057e-01
--2.5183573841137115e+01
-1.2956680411963021e+01
-2.7368277219520176e+00
--3.0272552498177394e+01
-7.2091316130610877e-03
-7.0883050961333982e-01
--2.0859854071682300e+01
-1.3806764168756507e+01
-4.5380486737662878e-01
--2.6442107185498916e+01
-1.3986304223382390e+01
-2.4794998341366209e-01
--2.6672998451647327e+01
-1.4889277499722640e+01
--1.7793981562612604e+00
--2.2004892882912852e+01
--1.3616136848712801e+00
-1.3380604106016472e+00
--2.2390867353126620e+01
-1.3991283673133664e+01
--5.6313192078487007e-02
--2.6222542236692462e+01
--2.5589594640758850e-01
-4.5927476040486803e-01
--2.0811126099319242e+01
--9.4603336268723048e-01
-9.0767665561991828e-01
--2.1769741634088543e+01
-7.4585656875058370e-01
-3.6052411254671200e-02
--2.0437564397686568e+01
-1.4809215701979316e+01
--1.3863175514045727e+00
--2.4079920226184772e+01
-1.4809215701979316e+01
--1.3863175514045727e+00
--2.4079920226184772e+01
-1.0398988334524220e+00
--8.3847815070593801e-02
--2.0355131809897063e+01
--7.9017919724761276e-01
-5.6943996581031497e-01
--2.1457594204440415e+01
--2.0790165948134534e+00
-2.3918079176794187e+00
--2.5383546902333038e+01
-2.9679808257698106e+00
--5.2179325344401428e-01
--2.0285449006054879e+01
-1.3616957417067196e+01
-3.7535330077418261e-01
--2.8424992973825528e+01
-1.5073034578460256e+01
--2.0869745217837390e+00
--2.3467081660894507e+01
--2.0040246557080086e+00
-1.2606456134192439e+00
--2.3337529710533730e+01
--1.8748926078060884e+00
-1.0613461372575059e+00
--2.3011204396895714e+01
--1.9805628585326454e+00
-1.2010937615459358e+00
--2.3238168847810837e+01
-1.4259026152382404e+01
--3.8219755046865256e-01
--2.8054879049152184e+01
-1.3776339551754988e+01
--2.3663625278016184e-01
--2.8406055210783400e+01
--8.9592121266217184e-02
--3.4742021661845579e-01
--2.0870847202543903e+01
--1.0628931904671450e+01
--1.2944536847378274e+00
--1.2230506708341759e+01
-1.2885280635539753e+00
--9.6241619989683569e-01
--2.0490473516095200e+01
-4.7825205523428478e+00
--1.8709030530709965e+00
--2.0344925235672576e+01
-2.4997232277842460e+00
--1.4584445677785145e+00
--2.0166222380757532e+01
-8.9275669736570540e-01
--1.2014544261676190e+00
--2.0634699524725193e+01
--1.0739063335597299e+01
--1.4949454960574884e+00
--1.2388109111483667e+01
--1.0794622054187668e+01
--1.4975536108678889e+00
--1.2387630797808828e+01
--1.0824328086284613e+01
--1.5053657382332852e+00
--1.2398606819141365e+01
--1.0997464143047832e+01
--1.5162108521744555e+00
--1.2419261230800727e+01
-4.5432836261293819e-01
--1.4013594179858917e+00
--2.0545750489817227e+01
-2.6659409451761089e+00
--2.0986633917304083e+00
--2.0469045190289812e+01
--9.3880712258484122e-01
--1.1875087713221377e+00
--2.0890007213033531e+01
--3.8106111645413745e+00
-2.3464163011262185e-01
--2.3720623308119421e+01
--5.7252728219443245e+00
-5.9026252431954056e+00
--4.0182312968057332e+01
-2.9202836672939108e+00
--2.6784036198249388e+00
--1.9545116222345129e+01
--2.9707118184164485e+00
--2.9394901016234404e-01
--2.3026592942480654e+01
-1.8723628323127015e-01
--1.9110352829986377e+00
--2.0500764532551404e+01
--1.2694487721887395e+00
--1.4353138313067006e+00
--2.1372959605807132e+01
--2.5706710581299612e+00
--1.0222607790414211e+00
--2.2064765731023176e+01
--2.7743087754811055e+00
--1.0248203978834358e+00
--2.2012815721584118e+01
-1.4564094346157457e+00
--2.7908248915372540e+00
--1.9611062389631332e+01
--1.6066045789878947e+00
--1.6862272720548102e+00
--2.1248021913851602e+01
--3.3518712951098149e+00
--8.6029786196726599e-01
--2.2809012021028447e+01
-4.7713524578393840e-01
--2.5884856321998475e+00
--1.9970902969954974e+01
-2.3363948883551586e+00
--3.1974468829315592e+00
--1.9914968314314294e+01
-2.5046528672863805e-01
--2.6310601443965735e+00
--1.9929461394785747e+01
-2.4232748288501293e-01
--2.7341020690897504e+00
--1.9867804850339212e+01
-1.7138434539830683e+00
--3.1818218593519449e+00
--1.9964931323954161e+01
-1.6424900265987682e-01
--3.0269605232965535e+00
--2.0126947383644065e+01
--9.1700469912054425e-02
--3.0297328676589550e+00
--2.0208294561774469e+01
--3.1436221454539076e-01
--3.1763894850959344e+00
--2.0422616581439119e+01
--8.0483107482838856e-01
--3.0695668863922698e+00
--2.0641057272862206e+01
--2.7085691905958681e-01
--3.4064675123378696e+00
--2.0826295659355509e+01
--7.0088015247213176e-01
--3.3097526961084305e+00
--2.0970236082673136e+01
--7.0088014994601522e-01
--3.3097526960262580e+00
--2.0970236087480760e+01
-7.5006323807830355e-01
--3.9769080797691778e+00
--2.0499182686046257e+01
--6.4281772132520087e+00
-6.2455848810255510e-01
--3.2621658149066377e+01
--7.8292470827691094e+00
--5.7069952061722884e-01
--2.5910375214919299e+01
--2.9275693309759843e-01
--3.9071914584917540e+00
--2.1241379975156040e+01
--5.4985279374937945e-01
--3.9230488847030420e+00
--2.1493263615073982e+01
-6.7226153138728595e-01
--4.5009486697582233e+00
--2.1215335150987897e+01
--8.3308948480141307e+00
--1.2050769634971812e+00
--2.5414299673477714e+01
--1.2385146386673349e-01
-7.6804715375547815e+01
--8.2231775182473370e+01
--2.5882407954954365e+00
-3.4724907718128556e+01
--4.0742954309924428e+01
-6.2526888225730159e+00
-3.7716346610337915e+01
--4.3569896045264358e+01
-6.6492858999099189e+00
-3.7850503631463646e+01
--4.4864957808120934e+01
-6.6737877829660199e+00
-3.6113812377279984e+01
--4.5409006389107383e+01
-7.5680533137278765e+00
-3.2062200908267371e+01
--4.4114339136432704e+01
--9.2619563042583064e-01
-2.8487333379045413e+01
--4.0076294893260318e+01
-3.0608308075707826e-02
-2.7729868562745107e+01
--3.9519244154879509e+01
--8.2550703812132173e+00
-2.4034897965574178e+01
--3.5513389493130944e+01
-6.5724647768998323e-01
-2.6381039392839778e+01
--3.9098969279584963e+01
--8.4848799883774184e+00
-2.3909984396007953e+01
--3.5668502111770913e+01
-4.1808472609267788e+00
-2.6824782961875517e+01
--4.0071980573362914e+01
-4.5993213592294415e+00
-2.7489672948272929e+01
--4.1296179080990733e+01
-1.1221343557230814e+01
-2.9672677347949218e+01
--4.4949121431854394e+01
-9.5801930219609410e+00
-2.8527118072486715e+01
--4.3800939221062777e+01
-1.7730047290612919e+01
-3.1291696972765916e+01
--4.9106545822802936e+01
-1.1693279171601269e+01
-2.7942932735024407e+01
--4.4878873400090328e+01
-2.0260302255191259e+01
-3.0583693826970155e+01
--4.9229320357269991e+01
--7.7812485838019354e+00
-2.1163166860140247e+01
--3.5448982114568189e+01
-5.3616903266359923e+00
-2.7236966881867591e+01
--4.4573242754789874e+01
-6.2366567836329638e+00
-2.6033272897874475e+01
--4.3713472097504095e+01
-1.1737309266292346e+01
-1.0930687936667773e+01
--2.3746994430745591e+01
-7.8817222960405893e+00
-7.0248439301029375e+00
--1.8732738977672010e+01
--1.0386291652109891e+01
-1.9521102466302757e+01
--3.4401110674651846e+01
-5.1538410307254656e+00
-2.5272903949721663e+01
--4.4138290528390257e+01
--5.3433440818943287e+00
-2.1317230090077867e+01
--3.8225775236458517e+01
-1.7834069877403511e+01
-2.8986491298677475e+01
--5.0874547333687111e+01
-4.0551998218760925e+00
-2.4652539839228726e+01
--4.3752587085241437e+01
-1.1706513653528232e+01
-2.7392344535030279e+01
--4.8443784354589994e+01
--7.8477298120162475e-01
-2.2874844436727784e+01
--4.1352821224526132e+01
-1.3554919365637735e+01
-1.3917998386576956e+01
--3.0570534767725633e+01
-1.3333667277928535e+01
-1.4736444630652409e+01
--3.2104532908534907e+01
-1.8036927070228415e+01
-2.8127765495993387e+01
--5.1930443851515392e+01
-1.5966980269590460e+01
-2.7775405284054287e+01
--5.1383721540825746e+01
-4.2612985116505859e+00
-2.4016992378465957e+01
--4.5340220546928080e+01
--9.0626501913989941e+00
-1.8930155776353843e+01
--3.6567520448653745e+01
-1.2512713441506419e+01
-2.6654903807775753e+01
--5.0877657585213029e+01
-1.5918821374318098e+01
-2.6231873958232182e+01
--5.1150236511163548e+01
-1.3492552991321126e+01
-1.3751495538733570e+01
--3.2300968798893315e+01
-1.3583216324719659e+01
-1.3713884857208715e+01
--3.2748426110826180e+01
-1.4757027687704769e+01
-2.5337169602780548e+01
--5.0086689749324940e+01
-6.7429525473171354e+00
-2.3129593868936691e+01
--4.6458888988848045e+01
-1.2242404461666789e+01
-6.8864762485927731e+00
--2.2578408670851527e+01
--4.3235461802407249e+00
-1.9996391648353224e+01
--4.0785133574792070e+01
--2.7376836306525014e+00
-2.0556724613236220e+01
--4.1905475510549465e+01
-1.1677170738790061e+01
-2.4051491661182940e+01
--4.9705264621481419e+01
-1.1614915075318700e+01
-1.3047985542490883e+01
--3.3286657728880584e+01
-1.3120485252746951e+01
-2.4055728841086388e+01
--5.1044497538317678e+01
-1.5394188230972901e+01
-2.4487420255621654e+01
--5.1983132459534055e+01
-2.5920762161298776e+00
-2.1407370227182145e+01
--4.5837008718663675e+01
-1.6535546293730100e+01
-2.6297734107477048e+01
--5.5915104667249715e+01
-1.3151753770049774e+01
-6.0505735145291064e+00
--2.3294124991023175e+01
-2.4844463158215756e+01
-2.8531446265969290e+01
--6.0924142605683720e+01
-1.1221152061786922e+01
-2.3912482453880202e+01
--5.1558502314938572e+01
-8.5984234686374741e+00
-3.8842382614105029e+00
--1.9035680409110391e+01
-1.8183120958780151e+01
-2.6593645188131209e+01
--5.8148529511831093e+01
-2.3439850365902803e+01
-2.7554046906666784e+01
--6.1256952818652174e+01
-1.6828189713454016e+01
-2.3426762855657177e+01
--5.3620179583356624e+01
-7.4280338914609603e+00
-2.3147923982199604e+01
--5.1938253292081541e+01
-7.4280338914609603e+00
-2.3147923982199604e+01
--5.1938253292081541e+01
-1.2907678493448774e+01
-9.1417093586502247e+00
--3.1346654820904416e+01
-1.3899217267269909e+01
-9.4081071537372640e+00
--3.2246957158287650e+01
--6.8063827928098632e+00
-1.6774561987520428e+01
--4.0858517160214639e+01
-4.7679588023415045e+00
-1.9386180112763345e+01
--4.8712111628414462e+01
-8.7791977106742518e+00
-2.1783548994365212e+01
--5.5465617521452351e+01
-1.1302412778058054e+01
-6.4640007232178736e+00
--2.8500240871944101e+01
-1.4013727156250075e+01
-8.5602168634413900e+00
--3.3728290077042530e+01
-1.6745212963102336e+01
-2.2890711224068237e+01
--6.1535811164547169e+01
-9.2132349792157129e+00
-2.0238019416477208e+01
--5.5675225480257154e+01
-1.3938708691930007e+01
-1.4072217271020302e+00
--2.1554370242911698e+01
--4.4425061704745410e+00
-1.5991466250908566e+01
--4.5235690175794431e+01
-1.3537946622616493e+01
-3.3622096497195018e+00
--2.5666431951196753e+01
-1.4105167463307344e+01
-2.4145587854999402e+00
--2.4322645400413965e+01
-9.6047350935077958e-01
-4.0727904964260784e+00
--2.3566433298203723e+01
-1.3670994653772965e+01
-2.1602319919583186e+00
--2.4573694119885904e+01
-2.4869796016070933e+00
-1.9835389609134539e+00
--2.0835660262725309e+01
-4.3168420740468862e+00
-1.7098604828238546e+01
--5.3193350921952110e+01
-2.3289097228247932e+00
-1.4907273818713842e+00
--2.0483225808095476e+01
-1.2389999717814048e+01
-4.0391154747344320e+00
--2.9764918096831213e+01
--1.4588616868838009e+00
-1.5147678003934155e+01
--4.9116303751934048e+01
-1.4428968382992723e+01
--2.1421433060490064e-01
--2.1631963436614797e+01
-7.5547145304643823e+00
-1.3838072361616192e+01
--5.1675054032743496e+01
--1.2729166961656955e+00
-2.2480532299828289e+00
--2.2662128280013107e+01
-1.3820483969588832e+01
-7.4680776017178430e-01
--2.5556460305643803e+01
-1.3696300979182659e+01
-7.5486742913938987e-01
--2.6075048164557980e+01
--1.2870167326771884e+00
-1.9916457867578408e+00
--2.2455449216494479e+01
--1.4267165792974639e+00
-1.5683281208330613e+00
--2.2540049413631358e+01
-2.9424670236018495e+00
--1.5947998373135353e-01
--2.0623752206480010e+01
--1.8794160110140758e+00
-3.1803105014824351e+00
--2.6549087435990700e+01
--1.5532670869202010e+00
-1.3912355787950412e+00
--2.2696722871311593e+01
--2.1385882120448669e+00
-3.7906818001058755e+00
--2.8459766248897150e+01
-1.5968013765561602e+00
--1.9791568195477441e-01
--2.0070197034346297e+01
-4.9997450447877139e+00
--3.7242909084207848e-01
--2.1479015537831003e+01
--2.2998608293717693e+00
-2.8076425560029121e+00
--2.5994860679485708e+01
--1.9411557699965341e+00
-1.7144841378258615e+00
--2.3477053970099671e+01
-1.4038776059946766e+01
-5.6713203651188360e-01
--2.8695265439921457e+01
-1.5147971327566653e+01
--2.2339089531316310e+00
--2.3253567883181841e+01
-1.4898819431504876e+01
--2.1772660613062467e+00
--2.2944992805428669e+01
--9.8661407628467157e-01
-4.3201665491106211e-01
--2.1603851823290906e+01
-1.5236345766313699e+01
--2.5338912817517296e+00
--2.3270503743815013e+01
--1.0922206353991841e+01
--1.2224170841362680e+00
--1.2204072253157946e+01
--1.8469470760771756e+00
-6.9188703805246066e-01
--2.2827418022767642e+01
--1.0641931191650956e+01
--1.3224355608626610e+00
--1.2278570788659390e+01
-2.6426801999647451e+00
--1.1628914901187017e+00
--2.0592814633495230e+01
--1.0854065274804880e+01
--1.2828768678579752e+00
--1.2334684594094202e+01
--1.5871039518466608e+00
-2.8088118302253023e-01
--2.2315275601947771e+01
--1.0137367582031118e+00
--1.3360396151391291e-01
--2.1620380416515172e+01
-3.9184811071420635e+00
--1.5579172156709691e+00
--2.0624852628455173e+01
-1.5042498891862872e+01
--2.9582517795933612e+00
--2.3611706021452100e+01
--2.1921609735939502e+00
-6.8461230090562886e+00
--4.1645165326911346e+01
--1.0869358898664423e+01
--1.4580024179652871e+00
--1.2356399172254068e+01
--1.0926460529829940e+01
--1.4533705594663477e+00
--1.2358995933368901e+01
--1.1521878568657242e+00
--6.3745882805056009e-01
--2.1458175161932800e+01
--1.2720875733825738e+00
--7.2643697769568760e-01
--2.1304067122156180e+01
-3.7261030063544709e+00
--2.4528446083329221e+00
--1.9836027666378225e+01
-4.9825321715280282e+00
--2.6384149587443653e+00
--2.0361589170955792e+01
--3.9629065777990027e+00
--2.5243354343798576e-02
--2.3260121160093128e+01
--8.8091904925233433e-01
--1.4581585315122947e+00
--2.0813691167368546e+01
-1.5103145359003141e+01
--3.7689600362633153e+00
--2.5277856917546252e+01
-3.0126242176493609e+00
--2.9348602230081648e+00
--1.9684475885220785e+01
-1.5047275108308469e+01
--3.7789886633687884e+00
--2.5748694790029635e+01
-2.8565866992081670e+00
--3.0129251135006836e+00
--1.9836106374780503e+01
-1.5364698198350271e+00
--2.6394991008584703e+00
--1.9797059994742408e+01
--3.0928880260581399e+00
--1.0776610730089911e+00
--2.2010981532293496e+01
--3.6244974931495162e+00
--5.5473170232139768e-01
--2.3273419832374124e+01
--3.0103279661896654e+00
--1.2369533313619101e+00
--2.1757454711252326e+01
-1.9057507210676172e+00
--2.9458117146446416e+00
--1.9551760303222729e+01
-1.4961792653700863e+00
--2.9875607544889182e+00
--1.9467066960711509e+01
--6.2790411361591592e-01
--2.3692781472442928e+00
--2.0381822280923959e+01
--1.6246163827654068e+00
--2.3094091292309225e+00
--2.0798415984504445e+01
--1.6279759618549456e+00
--2.2472593049440244e+00
--2.0897077257935983e+01
-1.2432202617121442e+01
--4.4669941554908936e+00
--2.5553801326270033e+01
-1.6041234243266229e+00
--3.4256121841354630e+00
--2.0103715062088025e+01
--2.7332070715910355e+00
--1.9972452527446207e+00
--2.2006505304977022e+01
--1.8268773580691815e+00
--2.4575027373283311e+00
--2.1279475635539654e+01
--3.5363058785882595e+00
--1.4433352705346603e+00
--2.3648014846732899e+01
--1.9883047023800371e+00
--2.4627710230293687e+00
--2.1440198030298099e+01
--4.8881860650218032e+00
--1.4343438394823065e+00
--2.2627993252472962e+01
--1.2628573416723250e+00
--3.0164986613938427e+00
--2.0505043785647072e+01
--7.1162140606671205e+00
-1.9506373802983603e+00
--3.4347136998480742e+01
-1.1120175111988088e+01
--5.5534524851591804e+00
--2.4820169205483403e+01
--2.0246571567790723e+00
--2.9655944802645977e+00
--2.2072367465542879e+01
--2.3053681174433609e+00
--2.9759771079866830e+00
--2.2518685699637697e+01
--4.4310958678621102e+00
--2.6791377495487376e+00
--2.1347266892385420e+01
--2.3385830169247996e+00
--3.0606688255738308e+00
--2.2683564912335022e+01
--3.5056464019025571e+00
--2.4910063403030538e+00
--2.3796080742147186e+01
--6.7301048002745532e+00
-2.7809118519541121e-01
--3.2427744093272501e+01
--4.5308627671817172e+00
--2.8118436170146310e+00
--2.1250666435507398e+01
--7.0159161729968584e+00
-4.7616609808868622e-03
--3.2115590966238749e+01
--1.8951990584035681e+00
--4.1531228688934219e+00
--1.9367197250975654e+01
-6.8429317337327600e+00
-3.8512395489532253e+01
--4.4565707393466106e+01
--6.8609986493584973e-01
-2.8395916030364550e+01
--4.0412742125488428e+01
--6.5731255798462029e-01
-2.8131039358146573e+01
--4.0195855919133045e+01
--9.1106169643082406e+00
-2.3319269900275053e+01
--3.5173326928755706e+01
-9.5889914519681021e+00
-2.7877141621259025e+01
--4.2698639991268394e+01
-8.6849778776061939e+00
-2.7557458872322140e+01
--4.4674167244895372e+01
-1.2149735186935107e+01
-2.9334568789557309e+01
--4.6722310763774843e+01
-1.2754462522922141e+01
-1.6917920829849251e+01
--3.0855254466288862e+01
--9.7615769026936956e+00
-2.0198131834733427e+01
--3.4322800241816886e+01
-1.2728211749378007e+01
-1.5871778689307861e+01
--3.0029372571520863e+01
-1.2791070473934658e+01
-9.8931282294585170e+00
--2.2997944554586677e+01
--7.7171718378261343e+00
-2.0749858645992767e+01
--3.6234274512882109e+01
-4.7019188460030508e+00
-2.4665060801692889e+01
--4.2573929166917331e+01
-1.3852820911550996e+01
-2.6451113019559930e+01
--4.6609834573523528e+01
-9.7346027029102693e+00
-2.6733930446962734e+01
--4.7020469096377774e+01
-1.2153056005122126e+01
-1.5267418029697126e+01
--3.1263294006278223e+01
--7.2097472497714605e+00
-2.0806670871164343e+01
--3.7608265730351263e+01
-1.2877275829356947e+01
-1.4742955083381666e+01
--3.1068121422414688e+01
-8.6715490588550050e+00
-2.5787635439102587e+01
--4.6656111839709347e+01
-1.6401967420265390e+01
-2.8597395145492236e+01
--5.1625634421659718e+01
-2.4883428540712199e+01
-3.2104488758244230e+01
--5.8790684696335383e+01
-1.3050042218426883e+01
-1.3574628895082956e+01
--3.0652453054735968e+01
-4.9968319068815594e+00
-2.4005278110437843e+01
--4.5630414516095541e+01
-1.8515623172811690e+01
-2.9550296922715731e+01
--5.5178887421673146e+01
-1.3148294615276811e+01
-1.5346566404139081e+01
--3.4192625420895624e+01
--1.8130052911439025e+00
-2.1428098798238871e+01
--4.1947905013060584e+01
-1.7072083330883370e+01
-2.8184546588060062e+01
--5.4077672944801414e+01
-1.3889889217815247e+01
-1.2774163780696092e+01
--3.1200286146946464e+01
-1.1270523780530651e+01
-1.0685434886710835e+01
--2.8187102384530867e+01
-2.0423487628748649e+01
-2.5882359743391298e+01
--5.3512469933378739e+01
-1.6005292219163419e+01
-2.5332033908417010e+01
--5.2935779600535774e+01
-1.7698988763108105e+01
-2.5434096613897214e+01
--5.3784646696726426e+01
-1.6359598745674596e+01
-2.5013968319867956e+01
--5.3459916650065971e+01
-1.7079035094556005e+01
-2.3539120939000739e+01
--5.1538697796489913e+01
-9.2673655003347246e+00
-2.3024171206197522e+01
--4.9870119575271268e+01
-1.4204598953202176e+01
-2.3082577672318521e+01
--5.1223139144867815e+01
-1.1654018140849779e+01
-1.2601120389639402e+01
--3.3764607599523018e+01
-1.2457241526964259e+01
-2.3291391482853268e+01
--5.1922210698372382e+01
-8.7010579354216322e+00
-3.6990966006722781e+00
--1.9189253833886539e+01
-5.1983811763503436e+00
-2.0997995211512119e+01
--4.8451841383366464e+01
-1.2553325705670957e+01
-1.1365864706055476e+01
--3.3824397579666162e+01
-1.1621182619676873e+01
-1.0747645929053210e+01
--3.2517165961278813e+01
-1.2149799311617038e+01
-6.0142911835746382e+00
--2.6009878570729445e+01
-1.1775365094708636e+01
-9.2827723128427575e+00
--3.1524698658205963e+01
-7.6254254140344520e+00
-2.0721690624728449e+01
--5.0671224154745452e+01
-1.3912059632936094e+01
-9.4075904068603275e+00
--3.2700455388400300e+01
-1.3334810001285387e+01
-9.8511137016965016e+00
--3.3505383418342660e+01
-2.1670917454435823e+01
-2.4122397985268961e+01
--6.1973889914853821e+01
--1.7446850578968893e+00
-1.8123854124549563e+01
--4.5713211341372968e+01
-1.4043318897484617e+01
-1.0131138547500122e+01
--3.6250998368389197e+01
-1.2685080140070975e+01
-9.2793990002870608e+00
--3.4262927480283928e+01
-1.8805274549800870e+01
-2.1710625475472156e+01
--5.8976431782468019e+01
-1.8181140427387131e+01
-2.0988290796840566e+01
--5.6993450924021921e+01
-1.4287420649617566e+01
-2.1444217839548806e+01
--5.7910657517570151e+01
--3.4109537676778339e+00
-1.6811402704986161e+01
--4.4994598612553041e+01
-1.2103584250759849e+00
-1.8018381251792814e+01
--4.8822113537867125e+01
-4.9088482886232816e+00
-1.8426218889574432e+01
--5.1933533345836707e+01
-1.3728338171211012e+01
-3.6210069567202190e+00
--2.6069573620976868e+01
-1.3380780114383663e+01
-3.5125115227882855e+00
--2.5961348091424899e+01
-2.4543158756097920e+00
-4.0593312241552963e+00
--2.3621176225830428e+01
-1.3484322465912879e+01
-2.2724841694724809e+00
--2.3454018907896579e+01
-1.9754907391780241e+00
-1.9256796773242451e+00
--2.0602638290184188e+01
-5.1061745910678358e-02
-2.7442168696992590e+00
--2.2171720404185088e+01
--5.9236336163026992e-01
-2.9225725409218972e+00
--2.2571353388083427e+01
-1.4627682950160237e+01
--2.3741115173844080e-01
--2.2579968084573679e+01
--7.0968623056322111e-01
-2.2427459855783614e+00
--2.1989393636950215e+01
-1.1162599081957485e+00
-1.1912926960180517e+00
--2.0338935839313830e+01
-8.3935146694380069e-01
-1.2637126065164486e+00
--2.0370705244501725e+01
-9.2280255455311799e-01
-1.0580030780082812e+00
--2.0627091747527430e+01
-1.4592727391254659e+01
--8.2477458356745403e-01
--2.1751090378543395e+01
-1.3697877754198664e+01
-7.1576035761967094e-01
--2.6224673390851180e+01
--1.5932470150757463e+00
-1.6581435123226540e+00
--2.2784338351679228e+01
-1.4000380623499449e+01
-3.6824160026677116e-01
--2.7533704284917953e+01
--1.2994967631001426e+00
-1.0550850821142221e+00
--2.1943859304001258e+01
-1.4035192188654442e+01
--3.7301649467637510e-01
--2.6338253960496008e+01
-1.4035192188654442e+01
--3.7301649467637510e-01
--2.6338253960496008e+01
-1.1726113596355070e+00
--1.9360639920667283e-01
--2.0459673969621075e+01
--1.3421223463095964e+00
-7.9759820587976271e-01
--2.1825303218113415e+01
--3.0255856924687619e+00
-3.2715562294940512e+00
--2.7632145747191402e+01
-1.5223630042590262e+01
--2.3761807998326776e+00
--2.3104516521298521e+01
--1.9596590971895156e+00
-1.2383114440464567e+00
--2.3086876219621907e+01
--1.6324437725245442e+00
-7.6160778567650056e-01
--2.2505997361455091e+01
-1.5206294982381159e+01
--2.5354167821626183e+00
--2.3583300172116708e+01
-1.8896868730277545e+00
--1.1793405819834579e+00
--2.0531364709568912e+01
--1.4914408363930829e+00
--6.0428522231409698e-01
--2.1519228602265056e+01
--1.5827651161119841e-01
--1.2086274410584412e+00
--2.0618241084778699e+01
-2.2416686200829730e-01
--1.3574081602636334e+00
--2.0352082939755384e+01
--8.0948225395613527e-02
--1.3489381825492344e+00
--2.0616215024553195e+01
--1.0861315152251043e+01
--1.6515327463749627e+00
--1.2551105613544680e+01
--1.0702030281594315e+01
--1.6698523071781752e+00
--1.2637118140187246e+01
--1.0702030281594315e+01
--1.6698523071781752e+00
--1.2637118140187246e+01
-4.8571086845614753e-01
--1.9828697736999561e+00
--2.0202263009528341e+01
--4.2508354782356079e+00
--4.8882016438537195e-03
--2.3646353346481980e+01
--2.6266669879003617e+00
--1.0238939439888683e+00
--2.2010136869408665e+01
--4.0170604604297742e+00
-3.6159893631884027e-01
--2.5713917591978749e+01
--3.1925564828876190e+00
--8.6271725390387155e-01
--2.2387402490619419e+01
--5.5565136426230568e+00
-4.1966470397394326e+00
--3.7740915386347389e+01
--5.9962439782364143e+00
-4.0513409538504694e+00
--3.7567410008905988e+01
--9.7911023757094673e-01
--2.2121626335405451e+00
--2.0572914342888556e+01
--3.6999024120121160e-01
--2.5130730532019179e+00
--2.0038208260616713e+01
--7.1374495822984159e+00
-2.4404392111772144e+00
--3.5088610122964106e+01
-1.8275109319900449e+00
--4.0852530455806013e+00
--2.0740064945284658e+01
--2.9207110430509799e+00
--2.6136031085395515e+00
--2.2298146919265825e+01
--2.4598128894755072e-01
--3.5435389183843613e+00
--2.1103254536573047e+01
--2.9755569852966244e+00
--2.7086649230602631e+00
--2.2553099668041568e+01
--2.4612996454047714e-01
--4.0665593359448353e+00
--2.1346430497882555e+01
-7.2114782621740314e-01
--4.4686628316365313e+00
--2.0877449699155573e+01
--1.1555489502745853e+00
--4.3985179193350463e+00
--1.8934212208550775e+01
--3.3268226632489131e+00
--2.7521225788652766e+00
--2.4430259814681978e+01
-6.4593725488302374e+00
-3.8072031491656176e+01
--4.4834001373878017e+01
-6.0305462374055869e+00
-3.7801588223626879e+01
--4.4788607886981069e+01
--5.8535093327701182e-01
-2.8193956975233775e+01
--3.9962819772057806e+01
-3.2694317477489349e-01
-2.7647003514726674e+01
--3.9502785711992033e+01
--2.8354033223335451e+00
-2.6757677569813154e+01
--3.8836916567834656e+01
-1.9008748685666661e+00
-2.6560121288215925e+01
--4.0489923485643637e+01
-8.3194475527650322e+00
-2.8377127602879568e+01
--4.3463737551357774e+01
-7.0779281432085650e+00
-2.7371938167753207e+01
--4.1910981712741922e+01
-1.2440760981538837e+01
-1.7424295248913985e+01
--3.0239494840416096e+01
-6.5186669849811507e-01
-2.4665361267908533e+01
--4.0498387993651768e+01
-1.2190623230719019e+01
-1.6218119195628564e+01
--3.1115786926963860e+01
--1.0337916362318245e+01
-1.9513819153049859e+01
--3.4941091979873924e+01
--8.8521030224599055e+00
-1.9717022703974937e+01
--3.5858281938726350e+01
-1.1716062226885368e+01
-1.0561289114291748e+01
--2.4923179302500351e+01
-4.9970969013683009e+00
-2.4414385227978396e+01
--4.5281662102792431e+01
-1.2482195852100791e+01
-1.2088049979826021e+01
--2.8339045400715456e+01
-1.5969115322355290e+01
-2.7273441277294310e+01
--5.1574049566984989e+01
-5.7788063661388707e+00
-2.3374234593169504e+01
--4.6737691407893756e+01
--7.1328562376601949e+00
-1.8763724875313208e+01
--3.8688810288948140e+01
-1.1515141457370845e+01
-1.0192271132735504e+01
--2.9089325017687255e+01
-1.3175179834916731e+01
-1.3551590724691478e+01
--3.5098192232812977e+01
-1.3175179834916731e+01
-1.3551590724691478e+01
--3.5098192232812977e+01
-9.1863076992239581e+00
-5.7294413773296977e+00
--2.2906010647384363e+01
--4.7705646478632273e+00
-1.8189822210402806e+01
--4.2388027155733177e+01
-1.3301719258787879e+01
-5.1997382080005359e+00
--2.4048619882605323e+01
-1.7627853860469269e+01
-1.7989999116432518e+01
--4.7723202600534947e+01
-1.3112625313027980e+01
-9.3253805619585250e+00
--3.2133201425775944e+01
-1.1328980056646584e+01
-5.5919805431555138e+00
--2.6113704888550210e+01
-1.2139129391826424e+01
-6.4033497950111924e+00
--2.8649835362961834e+01
-1.2433353701769164e+01
-5.1595512765735183e+00
--2.7708861117432196e+01
-1.2657900659680161e+01
-5.2968194738705243e+00
--2.8471789912272975e+01
-1.2694268940702377e+01
-5.3353031312399226e+00
--2.8561485563918115e+01
-1.2046096607985167e+01
-5.0413445191219308e+00
--2.7649006344836689e+01
-8.5946811988876415e-01
-1.6877012961622732e+01
--4.9755214361357766e+01
-1.2936395092365087e+01
-3.0596552572644065e+00
--2.5604011532101502e+01
-1.2760651007191425e+01
-4.7290656558413602e+00
--2.9367924264995381e+01
-1.2651271379165234e+01
-4.7470012992127062e+00
--2.9147916868071921e+01
-1.0459844961970524e+00
-1.6763278770232660e+01
--5.0690617788250798e+01
-8.8302769315505913e-01
-1.6464564129381820e+01
--5.0006948945053487e+01
-4.7443417961459513e+00
-1.7079082767159687e+01
--5.2739304284509728e+01
-9.0832388135057540e-01
-1.6272903963614706e+01
--5.0432520877225357e+01
-9.0832388135057540e-01
-1.6272903963614706e+01
--5.0432520877225357e+01
-2.0239596314478296e+00
-1.6991484732504418e+01
--5.2482390917657106e+01
-1.3652237906741709e+01
-1.5836489542785186e+00
--2.6272789694968150e+01
-1.4455752423774570e+01
--4.3664244891296639e-01
--2.1867222779378633e+01
--1.8141966718243199e+00
-2.3348025546587001e+00
--2.3468220438085275e+01
-1.1888821073757518e+00
-2.7814405037191298e-01
--2.0240231555512583e+01
--1.7063047383935037e+00
-1.5686366861616199e+00
--2.2976926546918008e+01
-1.5197903313509222e+01
--2.3715201146021148e+00
--2.3272266342083871e+01
-2.0233042243207731e+00
--7.2828401803019438e-01
--2.0378912307238298e+01
-1.9818827168706868e-01
--3.0275956439484702e-01
--2.0549880515076957e+01
-1.5342945675378219e+01
--2.9056190757968965e+00
--2.3533423704850861e+01
-1.5124925146393148e+01
--2.5731846868685118e+00
--2.4361308051492681e+01
--1.2190412631441256e+00
--5.2603018162531733e-02
--2.1736835245742881e+01
--3.4028375695535091e+00
-1.5305393848186672e+00
--2.5466530893033202e+01
--1.0771830817996333e+01
--1.4553767795094084e+00
--1.2374425595201775e+01
--8.6921857468735630e-01
--6.3674665755567494e-01
--2.1447719674085242e+01
-2.4164825909955185e+00
--2.1208767700937980e+00
--2.0265600178659366e+01
--4.3521250824515114e+00
-6.3385718885505538e-01
--2.3985971776062161e+01
-1.5405146403809079e+01
--3.8248134307863255e+00
--2.4750727064616573e+01
-1.5187072427650966e+01
--3.7707824815196420e+00
--2.4609335394676240e+01
-1.5136830806994626e+01
--3.8902669465277571e+00
--2.5391299748423538e+01
--6.2295093310058265e+00
-4.4340952606866999e+00
--3.8080333450856635e+01
--2.8080565555393959e+00
--1.3185540205861208e+00
--2.1667918508636593e+01
--1.5492614130448618e-01
--2.3880288642817327e+00
--2.0075479348148708e+01
--1.8300440435054701e+00
--2.3688984650058740e+00
--2.1240453826176086e+01
--5.8404781534514019e+00
-1.2898313817950622e+00
--3.3838262803271633e+01
--1.8754245984664377e+00
--3.2814360469115007e+00
--2.1923123496730977e+01
--1.8754245984664377e+00
--3.2814360469115007e+00
--2.1923123496730977e+01
--2.5950753193820000e+00
--2.9894931973455776e+00
--2.2562857353855637e+01
--2.9089179819474071e+00
-3.2522498238675830e+01
--4.0903726949801595e+01
--2.7315394993678535e+00
-3.1053310778177192e+01
--3.9806442791526024e+01
-2.3165871208241802e+00
-3.1230494151570866e+01
--4.0033050353219494e+01
--8.3131570969706363e+00
-2.5472469543352016e+01
--3.4772246550138114e+01
-5.8588154297725898e+00
-3.1314410588153908e+01
--4.2957146260976742e+01
-1.8409657641539459e+00
-2.9342203914455304e+01
--4.0860243786541517e+01
-1.8409657641539459e+00
-2.9342203914455304e+01
--4.0860243786541517e+01
-2.0413520583531600e-01
-2.6989426659104094e+01
--3.9427405508361041e+01
-3.9001468986010396e-01
-2.5546851713063226e+01
--3.8440684901704465e+01
--1.3323952376062451e+00
-2.4074724996059278e+01
--3.8951039271952098e+01
-1.2566804250850218e+01
-1.5369567879530791e+01
--2.9706313156722182e+01
-1.8284934549913394e+00
-2.4425087325073878e+01
--4.2020694151757368e+01
--3.9336820029754738e+00
-2.0276703892793360e+01
--4.0983232698612227e+01
-2.0853922080915950e+01
-2.6394925625698566e+01
--5.5137382933370731e+01
-3.9345115461245492e+00
-2.1064057510097950e+01
--4.7780637738435424e+01
-1.3013617279949992e+01
-1.1932486572015167e+01
--3.5497674598530651e+01
-3.6127190148414140e-01
-1.9502880331348155e+01
--4.6017702981189146e+01
-9.7997814612717082e+00
-6.1128186157204967e+00
--2.5001805617507543e+01
-1.2666546707710497e+01
-2.2135852559392561e+01
--5.9340608533252002e+01
-1.3753324183980364e+01
-9.1917769065631560e+00
--3.5058185260748701e+01
-1.0872788750002243e+01
-1.9736562632726493e+01
--5.4467841238463947e+01
-1.1714987053568111e+01
-5.6287407267937066e+00
--3.0077627025450024e+01
-1.2240010964028409e+01
-4.8676095308971004e+00
--2.9031378875477564e+01
-1.3791832143633952e+01
-1.5559180018289465e+00
--2.3283856735131696e+01
-1.4314232484304757e+01
-1.0523515346868516e-01
--2.1302297921231578e+01
-1.0769147791466379e+01
-3.4054558148686027e+00
--2.7187051785608695e+01
-1.4410746879091251e+01
--1.5912750974053405e-01
--2.1757048776190199e+01
--1.3170434281580516e+00
-2.6594563125418027e+00
--2.2809426121650940e+01
-8.8497729701281469e-01
-9.3925273442781576e-01
--2.0685119798909202e+01
-8.1193985386096734e-01
-7.5207417983083835e-01
--2.0583926534107906e+01
-1.4747196077623194e+01
--9.0179581546439924e-01
--2.3080891299980038e+01
--1.5506823684940407e+00
-1.9554858112594660e+00
--2.2889253117682628e+01
-1.2231934473993440e-01
-6.1339109731812691e-01
--2.0824240660367934e+01
-8.5682614782054578e-01
-3.2828734745456789e-01
--2.0466634149196874e+01
--9.3155646068214737e-01
-9.2351624306643931e-01
--2.1628947329178271e+01
-1.9735647369002527e+00
--4.8304660625432144e-01
--2.0412845452609197e+01
--1.4427140572077830e+00
-7.3504466794972911e-01
--2.2187974398075042e+01
--3.9125944696270425e+00
-9.6738690883021838e-01
--2.4523923605986695e+01
--1.0754839807590354e+01
--1.5707372640795685e+00
--1.2455198706526584e+01
--4.3255798635409439e+00
-3.0152451527123264e-01
--2.3301652249614865e+01
-1.5258525148765044e+01
--3.8656997250121683e+00
--2.4453646075175424e+01
-1.5258525148765044e+01
--3.8656997250121683e+00
--2.4453646075175424e+01
--4.9543799744861623e+00
-4.8819494644154924e+00
--3.8405837907657485e+01
--3.2618368732761742e+00
--5.8635764409892843e-01
--2.2583101797612620e+01
--2.6131328512240768e+00
--1.4041559613403001e+00
--2.1539592508960883e+01
-7.7871652515485545e-01
--2.7007928585817162e+00
--1.9872719028898722e+01
--1.9166143196702983e+00
--1.8307741565613562e+00
--2.1048877890604089e+01
-2.7728472301406037e-01
--3.6125206549580500e+00
--2.0448900876968210e+01
--6.1793669195456271e+00
-1.1606490406268735e+00
--3.3408647746774434e+01
--2.0576588024254225e+00
--3.0862622684948811e+00
--2.2194709122816089e+01
-2.2550851208046661e+00
-2.9634498312428555e+01
--4.0992276664230936e+01
-3.5412507274363989e+00
-2.9410597609186659e+01
--4.1313664366835475e+01
--7.3668392109336391e+00
-2.1449795970446615e+01
--3.6003605358395589e+01
-1.2059688946266926e+01
-1.0225683788944222e+01
--2.2728577992040762e+01
-8.8889313241035381e+00
-2.6971126028626397e+01
--4.5422467132033105e+01
-8.0086476698672335e+00
-6.3986072446722222e+00
--1.8466722414180406e+01
-2.2993805106644008e-01
-2.3432452196454939e+01
--4.2868722268161839e+01
-1.1576843147841945e+01
-1.4710978413786396e+01
--3.1403667005731826e+01
-1.5524916928059801e+01
-2.5724425148552143e+01
--5.0113597510547393e+01
-1.3278865332896627e+01
-2.3932570481462921e+01
--5.1645855089122051e+01
-1.2399372458002663e+01
-5.2583964393149580e+00
--2.4844906014337788e+01
-2.0978232021756389e+00
-1.7960354426113454e+01
--5.0048577746358056e+01
-2.1130314233612641e+00
-1.7942180966031593e+01
--5.1024803857101340e+01
-3.3211214523332211e-01
-1.9527356358424386e+00
--2.1269320457420974e+01
-1.4514084104366901e+01
--4.6631391449488535e-01
--2.1431763570902131e+01
--2.1893523627751231e-02
-1.8428961907808972e+00
--2.1207032604303492e+01
-1.7155563562861871e+00
-1.1691869693196664e+00
--2.0487501799132740e+01
-1.2508239837812770e+01
-3.3656120889063028e+00
--2.9403651635268385e+01
--1.7773004612713969e-01
-1.5181289633571673e+00
--2.1138521307835777e+01
--1.5699267457240607e-01
-1.4989244335818301e+00
--2.1212968066191031e+01
--1.3782413757590621e+00
-2.2885801631461908e+00
--2.2744583506226018e+01
--1.9137297604680374e+00
-2.1630595533468444e+00
--2.4415622032365302e+01
--1.7254492420875085e+00
-1.2899429991869484e+00
--2.2929309456410788e+01
-2.0616906176183951e+00
--9.3259337298909961e-01
--2.0432458355441923e+01
--1.0714596326365642e+01
--1.3681372011486956e+00
--1.2323169867987810e+01
--1.7069127038629267e-01
--1.3653167296274973e+00
--2.0650406218398075e+01
--2.3968593108155174e+00
--1.4953699652170138e+00
--2.1471109290811597e+01
--1.5796828480079075e+00
--2.0189495176715142e+00
--2.0789291992864147e+01
--1.4621152036190659e+00
--2.0983686228908631e+00
--2.0634067724456482e+01
--9.5274949595140868e-01
--3.2731948863111087e+00
--2.0987503378151615e+01
--3.7226821769216012e+00
--1.9319377109668472e+00
--2.4346756620450041e+01
--7.8269894695483986e+00
--6.8431344829217089e-01
--2.5780606749486950e+01
--6.9040240801869750e+00
-3.8284325025723676e-01
--3.2695496966937661e+01
-6.9901310473124161e+00
-2.8155912896614826e+01
--4.3393333776814657e+01
-6.8660473553835510e-01
-2.5034137043452663e+01
--4.0442392278419575e+01
--8.1227196100208694e+00
-2.1115591790789708e+01
--3.5510192201655002e+01
--1.0378706381263997e+01
-2.0106212111266647e+01
--3.4199869165958809e+01
-2.0936052027087268e+01
-2.7425890657594625e+01
--5.2800290296639830e+01
-1.3754712237758485e+01
-3.5095262282497788e+00
--2.4316669664607478e+01
--1.0185966930277692e+00
-3.0966788750903089e+00
--2.3045757001538011e+01
--1.7469029876396056e+00
-2.3704994544916440e+00
--2.4104581168349831e+01
--1.1083879467354462e+01
--1.5473071174600714e+00
--1.2351646320334732e+01
--1.0768358389324131e+01
--2.1294336187642666e+00
--1.2877345009903287e+01
--4.1967010796900706e+00
--2.2161566867297795e+00
--2.1403733199293114e+01
--2.0594015016219838e+00
--2.9631852202971216e+00
--2.2045417557581686e+01
-8.7291752453768634e+00
-8.0931493318409764e+00
--2.1580788759361226e+01
-9.0350870532094234e+00
-2.4856763502682348e+01
--4.7454939873373036e+01
-1.7801142118991006e+01
-2.4338345043050364e+01
--5.4242966684060015e+01
-8.9362399651573721e-01
-2.0300795887190809e+01
--4.5623222848108924e+01
-1.6494216234168533e+01
-2.3081823990599347e+01
--5.7724201367614818e+01
-4.3902748690497644e+00
-1.8115737641383692e+01
--5.0973908606301642e+01
-4.8689340405610526e+00
-1.7298838689753801e+01
--5.2447610948288585e+01
-3.4576784283377482e-01
-1.1911977342733056e+00
--2.0709590110384536e+01
--1.0370768814559574e+00
--2.3847001161455572e+00
--2.0274301482176892e+01
-4.3166351444456392e+00
-2.6973347797724077e+01
--4.0410229922583582e+01
-1.5109379151260782e+01
-2.4807631058389617e+01
--5.3761343115641374e+01
-1.9393022710602763e+00
-7.2145744018224467e-01
--2.0291411007819846e+01
--1.0962841184272625e+00
-6.0808578406616631e-01
--2.1817090842977375e+01
--1.1020413326447141e+01
--1.2920849426818977e+00
--1.2145850718730030e+01
--9.0622382913146216e-01
--9.0352745482419083e-01
--2.1096832778788812e+01
-1.5191958054387689e+01
--3.4659377550942918e+00
--2.4299664789287014e+01
-1.9620901885321884e+00
--3.5339486424758877e+00
--1.9964753039672782e+01
-2.0328172426840125e+00
--3.5237775365503321e+00
--2.0077191031316698e+01
--3.6868476515911772e+00
--1.9405424471638153e+00
--2.4575476410389623e+01
-3.6769251826132194e+00
-2.6405795324509739e+01
--4.1433915033892319e+01
--1.0930603823797766e+01
--1.4787036936989639e+00
--1.2401184616991918e+01
-9.7192348719709916e+00
-2.3589669626020704e+01
--4.9281390055563215e+01
--9.8849988369768738e-01
-1.4141401658198185e+00
--2.2040148867584008e+01
-1.8325817971389973e+00
-2.4595156139928129e+01
--4.1784627942163233e+01
--6.8215568837601710e+00
-2.0912663574630827e+01
--3.8382574850588682e+01
-6.7850858442643682e+00
-2.3239469354021050e+01
--4.9099107420690991e+01
--3.6953690039830662e+00
-2.3115869213327624e+01
--3.9446481106998775e+01
--1.2166534091086236e+01
-2.1050597052833520e+00
--7.3018752743084629e+00
--1.1243524383086891e+01
--8.2524945846370878e-01
--7.7568345094917532e+00
--4.6045549238331027e+01
-2.8544824323029498e+01
--7.9689980363415501e+01
--4.5508405069299457e+01
-2.8752311414370762e+01
--7.9855283742129004e+01
--4.2570334693377319e+01
-3.2754637021555610e+01
--7.3806328695392523e+01
--3.3456509359910562e+01
-3.5526238381833863e+01
--5.3038424682757814e+01
--2.9956023668105445e+01
-3.1996443444763692e+01
--5.0851314517938576e+01
--2.9524325954763420e+01
-2.1937016231247817e+01
--5.6775925821631795e+01
--2.8730658693341816e+01
-3.3422750673476969e+01
--4.8589326495346235e+01
--2.4894169793273946e+01
-2.4982773518521910e+01
--4.3643421300151807e+01
--2.4549946843408474e+01
-2.7500786706745668e+01
--4.1835615471118793e+01
--2.4667932672288146e+01
-2.6844070292656461e+01
--4.2953208141526559e+01
--2.3735679794708712e+01
-2.2634076570791880e+01
--4.3258222299748809e+01
--3.9195698298514131e+01
-5.6122760457615271e+01
--6.8098962602443507e+01
--2.2702548279579013e+01
-1.4835159245236241e+01
--4.6978553122190007e+01
--2.1908067803155312e+01
-1.9353731172655451e+01
--4.2465168199308629e+01
--3.2204335557252634e+01
-4.4896790025481515e+01
--6.0159023609092912e+01
--2.8482250441155735e+01
-3.8468486203312111e+01
--5.1904991003353487e+01
--2.6254031742567673e+01
-3.5297074063365933e+01
--4.8588596210013606e+01
--2.6827059224845339e+01
-3.6506489749032056e+01
--4.9748229365675364e+01
--2.7410178129135101e+01
-3.8263987178642196e+01
--5.0537119221363085e+01
--1.8652816392224601e+01
-1.9759102426341205e+01
--3.4765277397611186e+01
--1.8652816392224601e+01
-1.9759102426341205e+01
--3.4765277397611186e+01
--1.8525940379463698e+01
-1.6066924724808793e+01
--3.7576675312890828e+01
--1.8508490866412050e+01
-1.9442162614270270e+01
--3.5125394756950868e+01
--2.8737066825835488e+01
-4.5465195926583689e+01
--5.3951746746744412e+01
--1.7144604856031705e+01
-1.1516608601178548e+01
--3.8085667891082160e+01
--1.6324882631641291e+01
-1.8380567652341853e+01
--3.1135238754704677e+01
--2.4136578287843733e+01
-3.5902543592148838e+01
--4.7001829134847249e+01
--2.4261208818848740e+01
-3.5530721754990154e+01
--4.9612805690629536e+01
--1.6127302060104515e+01
-1.4911738575675509e+01
--3.3806512108287876e+01
--2.3645348746031949e+01
-3.5575438909682092e+01
--4.6736089293876482e+01
--1.7108777842520091e+01
-1.3059467897104799e+01
--3.9632689918679695e+01
--2.3296470605609301e+01
-3.5227857644102023e+01
--4.6163380486922918e+01
--1.7396363161767031e+01
-1.2107159242646384e+01
--4.2780718390103210e+01
--1.6397550489423494e+01
-1.8167717012787623e+01
--3.3437936858288786e+01
--1.6160748384693367e+01
-1.9176410128454958e+01
--3.2329686420373108e+01
--2.1113412614973093e+01
-3.1325523665100505e+01
--4.2258563771419276e+01
--1.6732158175752893e+01
-1.0925129584643749e+01
--4.1974327228252413e+01
--1.6177576614584506e+01
-2.0053288390419848e+01
--3.2420806201002279e+01
--2.2796583291219061e+01
-3.7556611078424673e+01
--4.5421711270967108e+01
--1.6500314805628587e+01
-1.2132734744516497e+01
--4.0423275416813119e+01
--1.0943028668963370e+01
--4.3465263567493002e+00
--3.0979794192127191e+01
--1.6099366442367970e+01
-9.6663004324099955e+00
--4.1021819780765625e+01
--2.3616903372659696e+01
-4.1201926642971124e+01
--4.7343233784800468e+01
--1.0860649176623156e+01
--3.9538578127473798e+00
--3.0815328051714065e+01
--2.1759582076636281e+01
-3.4696191981583709e+01
--4.4878784574006303e+01
--2.1782849952763893e+01
-3.4575568534965996e+01
--4.5189504368450812e+01
--1.0755881043001477e+01
--4.1905483355992139e+00
--3.0744660976152556e+01
--1.5221921524586635e+01
-1.9612884012121839e+01
--3.0820481835489939e+01
--2.4138291558835775e+01
-4.0199000044531353e+01
--5.2353314505736712e+01
--2.1709261529288483e+01
-3.6097522047582970e+01
--4.4929330234703230e+01
--2.3434085214922650e+01
-4.0055240486236769e+01
--4.9639445488719929e+01
--1.5667102375992528e+01
-1.0942055402327037e+01
--4.0315431642041176e+01
--1.5723868592531757e+01
-9.8845290996408703e+00
--4.1382231683104997e+01
--2.2161275904936801e+01
-3.6461070029665684e+01
--4.7068995787553476e+01
--1.6256172912785427e+01
-9.5516360117222980e+00
--4.5093718223695419e+01
--1.5423835210362949e+01
-1.4814419843874029e+01
--3.7200882803888533e+01
--2.3370997240674612e+01
-4.1950432810641828e+01
--5.0818633374425843e+01
--1.5180929269144912e+01
-1.4141006504740025e+01
--3.7577941074683146e+01
--1.5235715099408415e+01
-1.2001233459774955e+01
--3.9721439831470519e+01
--1.5128145027502093e+01
-1.5494397889181098e+01
--3.6394925460533301e+01
--1.6487469164027889e+01
-2.4355065509952553e+01
--3.5371200166286137e+01
--1.6435449219026015e+01
-2.5045906841972993e+01
--3.4751643814584000e+01
--1.6633787123513613e+01
-1.9338373309575960e+01
--4.3183415781626920e+01
--1.5222810978388781e+01
-2.1494864059777466e+01
--3.3496706242207061e+01
--1.4696079429892665e+01
-1.9725491694443416e+01
--3.3065102383686359e+01
--1.4609865531823854e+01
-1.1518597946831692e+01
--3.9950597126653754e+01
--1.5501490095593839e+01
-2.3590952757785267e+01
--3.3615100317827881e+01
--1.6318504244802735e+01
-2.6238597630122474e+01
--3.5486737444714990e+01
--1.3942010118438315e+01
-1.9219411934210392e+01
--3.0922588193812800e+01
--1.4129602061673831e+01
-1.6898014191671667e+01
--3.3374621295787549e+01
--1.4530766829764495e+01
-1.9516845526336482e+01
--3.3915831265277603e+01
--1.5249339174644442e+01
-2.4218103354372339e+01
--3.3707070392703748e+01
--1.4027303626353575e+01
-1.8873595754083095e+01
--3.2536917004796877e+01
--1.2332523065054369e+01
-3.9503492645429379e+00
--3.7362195197534490e+01
--1.3090355764875774e+01
-1.7470444104347180e+01
--3.0822489651256650e+01
--1.3479863968484379e+01
-1.8866231250090717e+01
--3.0906898305613510e+01
--1.4157777844435621e+01
-1.2549410433488619e+01
--4.1142009074321244e+01
--1.3597193754369094e+01
-1.9889680225856029e+01
--3.1162323231430225e+01
--1.4004063938161737e+01
-1.2709722217138177e+01
--4.1583359122071165e+01
--1.3366106314239506e+01
-1.6332116945493492e+01
--3.4311196701098460e+01
--1.1911646089428068e+01
-1.5874357862626008e+01
--2.6950600310849506e+01
--1.3819204678512065e+01
-1.3331887259299153e+01
--4.0657035268585496e+01
--1.3819204678512065e+01
-1.3331887259299153e+01
--4.0657035268585496e+01
--1.3774686790816517e+01
-1.9325636090152539e+01
--3.4600388055895003e+01
--1.4329453653241323e+01
-2.3951371648474471e+01
--3.4026807735550911e+01
--1.3659877997394727e+01
-1.3428420255034139e+01
--4.0160767964445114e+01
--1.3522594134907308e+01
-1.7537295868251306e+01
--3.6878732600383003e+01
--7.7191355923484499e+00
--5.1984661267660268e+00
--2.5634000561994895e+01
--1.4176430931838134e+01
-2.5883704376686214e+01
--3.3195152849489340e+01
--1.4324652365944791e+01
-2.5828801494081940e+01
--3.3958406604569241e+01
--1.4985138681469532e+01
-2.7827504059636745e+01
--3.5419963818645037e+01
--1.3852547110229176e+01
-2.5421225767508954e+01
--3.2940386170027331e+01
--2.1420337601447699e+01
-4.9573222311261368e+01
--5.7809633774427965e+01
--1.1698459518206260e+01
-1.7800307534814479e+01
--2.9417056160343350e+01
--1.2746785274353892e+01
-1.0688398063625300e+01
--4.3455642780584512e+01
--1.2560892513162962e+01
-1.3048008491645323e+01
--4.0754578509664739e+01
--1.2535474127576929e+01
-1.7479660375100281e+01
--3.5237840785767048e+01
--1.2535474127576929e+01
-1.7479660375100281e+01
--3.5237840785767048e+01
--9.1826694927097208e+00
--1.0594542707141347e-01
--3.2309379246938789e+01
--1.8354135263404519e+01
-4.1027199678919516e+01
--4.8849019863160088e+01
--1.8670046460040311e+01
-4.2287236692664976e+01
--5.0778391369272391e+01
--6.8678663531118751e+00
--5.9261849850218837e+00
--2.4449726918966569e+01
--1.1955947925831431e+01
-1.7500889545942233e+01
--3.3896049989240275e+01
--8.7538081152023999e+00
--4.9382670142072888e-01
--3.1483000256896418e+01
--8.9142578640622965e+00
--3.7786506673009444e-02
--3.2333466485493638e+01
--1.4149251327528825e+01
-2.9655034610002257e+01
--3.7359849176142731e+01
--1.1775011137789795e+01
-1.5017981889965439e+01
--4.0125297943829310e+01
--1.1858993732670074e+01
-2.0399228297188898e+01
--3.4541095792901785e+01
--1.7823147804289448e+01
-4.3873803240211934e+01
--5.0856652729826152e+01
--8.2896209197547854e+00
--2.3466072891022252e-01
--3.1568041409031640e+01
--2.0409323877301162e+01
-5.4054331760399677e+01
--6.1955576824423289e+01
--1.0620644782907876e+01
-7.2221405247538790e+00
--4.2170847612506002e+01
--1.1442436281617603e+01
-1.9158995905894901e+01
--3.5184019598874741e+01
--1.2062699853977611e+01
-2.5042940742832883e+01
--3.3650034993340149e+01
--1.2712512105158421e+01
-2.6631238388014957e+01
--3.5691527392294560e+01
--1.1330590558431410e+01
-1.2005692054906573e+01
--4.4323239879947096e+01
--8.8310612904027934e+00
-3.7900733654790200e+00
--3.7084764138256638e+01
--5.7140894767807708e+00
--6.8319746276247200e+00
--2.3175044184802520e+01
--1.0922529820334217e+01
-2.0155352321723001e+01
--3.5884958970887652e+01
--1.0445905551221060e+01
-1.7254270676289458e+01
--3.5764796716181863e+01
--1.0713833087522040e+01
-1.9456135049681595e+01
--3.5053727394848799e+01
--1.5295479622434220e+01
-4.1270130922136936e+01
--4.9366881857321658e+01
--1.8674970836029907e+01
-5.5787217474855240e+01
--6.4063800650352178e+01
--8.1299185428497793e+00
-2.5205008209582100e+00
--3.4964687460189765e+01
--7.6426733528632687e+00
-1.6980810968497599e+00
--3.4029779909294561e+01
--5.2158790812792528e+00
--6.3455893150637461e+00
--2.1524442923879523e+01
--4.8410609160641771e+00
--9.8543914555925340e+00
--2.2671097552677768e+01
--1.1741661425560281e+01
-3.5704339572096174e+01
--4.0872223996275459e+01
--1.5128504783569072e+01
-4.6766037982963674e+01
--5.3816431172662391e+01
--9.6248706939665727e+00
-1.5080539735143329e+01
--4.1235505521597794e+01
--9.2688997388738272e+00
-1.2183579217945985e+01
--4.3852542244368777e+01
--1.3871515628042134e+01
-4.3515100235739972e+01
--5.1574291054879232e+01
--9.3584936627804964e+00
-1.6317594701185374e+01
--4.1132890151961334e+01
--4.3523672556748663e+00
--1.0193122379915289e+01
--2.2335523136116525e+01
--6.7753431147974252e+00
-2.0243983107650396e+00
--3.4884576715924283e+01
--6.8413227017214231e+00
-2.0833741776147470e+00
--3.5546754326013634e+01
--9.3579788620462878e+00
-2.0731654234600480e+01
--4.3923749807075126e+01
--1.2863482707204398e+01
-4.3229517453472219e+01
--5.1906558656666249e+01
--8.7356624559870095e+00
-1.8608542857550368e+01
--3.9056246513303940e+01
--8.4831108064896448e+00
-1.8336800398470832e+01
--3.6155401523482787e+01
--8.7311336896426308e+00
-2.0502147342462411e+01
--3.5971519724428489e+01
--7.2207457422585097e+00
-6.4094015678012459e+00
--4.0664411862549102e+01
--1.3526286373933971e+01
-4.9660049858593176e+01
--5.9692135240241448e+01
--3.9068656459699027e+00
--9.6258151158445635e+00
--2.2239869780378939e+01
--7.8072255102248125e+00
-1.4617904300124296e+01
--4.4131031796154630e+01
--3.7859274642663863e+00
--9.3207991274308046e+00
--1.9618185973930103e+01
--8.0535686381455402e+00
-2.0947141207473255e+01
--4.4526648769261122e+01
--1.0751366215213428e+01
-4.3484556474359856e+01
--5.2399607209509256e+01
--7.8050667926163868e+00
-2.6746390327310419e+01
--3.7789814209837289e+01
--6.8753241228721480e+00
-2.0068049161161767e+01
--3.8806273260814514e+01
--3.1600250735223425e+00
--7.9307726322577805e+00
--2.1717171876193369e+01
--5.9167441325883088e+00
-2.0172258228520235e+01
--3.9768875979877365e+01
--2.8893108608272584e+00
--9.6119936857038599e+00
--2.1748981074217415e+01
--3.7448737846197280e+00
--2.2210268915505432e-01
--2.3858974548434631e+01
--2.8714563173258671e+00
--9.5255316270799710e+00
--1.9310215405684350e+01
--2.9103966999676278e+00
--8.9971805130527880e+00
--2.0054565349885785e+01
--3.7751963554815298e+00
-3.4468838266858082e-01
--2.4084856054340179e+01
--4.5693959256545362e+00
-1.5349259117482703e+01
--4.6314610758778386e+01
--3.1980181409085078e+00
--2.8473089235599289e+00
--2.4147069971703775e+01
--2.5803657901119577e+00
--8.8101760676464949e+00
--2.0436043525198087e+01
--3.4980664362852671e+00
-2.4008159863693481e+00
--2.6884239524280368e+01
--2.4787363296783242e+00
--9.5132526740447538e+00
--1.9545199637809144e+01
--3.1353601156582402e+00
--1.1119880080677875e+00
--2.1997196562257706e+01
--2.5115271141011637e+00
--8.3036501278428254e+00
--2.1054393125450247e+01
--3.2567361133882571e+00
-2.6216647476285617e+00
--2.6812241515448239e+01
--5.3799030375117782e+00
-3.1785726979617952e+01
--3.9462757074760219e+01
--3.0335440369809494e+00
--1.3614913358793155e+00
--2.1961607394061179e+01
--3.1664887045672794e+00
-2.2853160663762577e+00
--2.6806101602719689e+01
--2.4314822483547669e+00
--8.2754931432326035e+00
--2.1095018073729349e+01
--5.2577447453761046e+00
-3.6205301423805473e+01
--4.4931806736593870e+01
--2.4430158869674097e+00
--7.6735941019615135e+00
--2.1381174095074595e+01
--2.3325199739165163e+00
--8.9115958193659086e+00
--2.0150268097080730e+01
--3.5660894168245836e+00
-1.8168978360729827e+01
--4.3834813659480332e+01
--3.4230962440894896e+00
-1.7548164751088969e+01
--4.4424511492631304e+01
--2.2611270195999582e+00
--7.8491902265796396e+00
--2.1653655954224952e+01
--2.2360069766641986e+00
--8.8882180527797843e+00
--2.0130831554540933e+01
--3.1489696903893902e+00
-1.6286015377822256e+01
--4.6607894322569571e+01
--3.0529829643701447e+00
-1.8008365845110912e+01
--4.5594632386259953e+01
--2.6405634284698971e+00
-1.5722852260131615e+00
--2.4361958941511023e+01
--2.0661555526451738e+00
--7.0379272553069621e+00
--2.2439806450643403e+01
--2.5850212366281182e+00
-3.2214496319440267e+00
--2.7726985529417892e+01
--2.5404402830454251e+00
-1.5746366900793378e+00
--2.4267184791465848e+01
--2.2316935007564833e+00
-1.7673741270371536e+01
--4.6665738430986643e+01
--2.2915796424510626e+00
-3.6808659908049162e+00
--2.8357747420531371e+01
--2.1678310562310861e+00
-1.8595607109381508e+01
--4.6942358834034337e+01
--2.8365874516545588e+00
-2.4026445656860144e+01
--3.8959590990160720e+01
--1.9343906622914178e+00
-2.0937167852471529e+01
--4.1838980169251982e+01
--1.9210289494332506e+00
-2.0829057577311531e+01
--4.1463478650701070e+01
--8.8535263980981493e-01
-8.2690103608899808e+00
--4.4043401428784840e+01
--1.2024935064326507e+00
-1.6944019008585641e+01
--4.7773996087508834e+01
--1.5041738500244117e+00
--8.8965113063771337e+00
--2.0095792693903654e+01
--1.5198899572592837e+00
-3.7691583157637147e+00
--2.7660005245057214e+01
--1.3010247896269784e+00
--8.9476594919371628e+00
--2.0363687506336206e+01
--3.9074071910054553e-01
-1.8421164470464959e+01
--4.7894482716718713e+01
--1.0359471720125355e+00
-2.0929831535327370e+01
--4.2751193667733162e+01
--1.3847125853109314e+00
-2.4871296655648997e+01
--4.0979485059582842e+01
--4.0038468149910672e-01
-1.8723609168684682e+01
--4.6221408448072587e+01
--1.7734217741280505e+00
-3.1652355484530226e+01
--4.0441444013442414e+01
--1.2102583398789970e+00
--8.6813915232091983e+00
--2.0437776986033697e+01
--6.7725368739469338e-01
-2.1088703444894232e+01
--4.3332151798047711e+01
--1.3102480469566549e+00
-3.3977099925388387e+01
--4.3626307130790025e+01
--1.0873367988389264e+00
--8.7196461036161725e+00
--2.0516090875509207e+01
--1.3725348313440282e+00
-3.3541224713481057e+01
--4.2127451747274542e+01
--1.2911300133287880e+00
-3.4472086882453617e+01
--4.2330759391341495e+01
-5.4495659979966937e-01
-9.4808584243058274e+00
--4.4902222010094107e+01
--1.2339371614615160e+00
-3.2673539707001034e+01
--4.1011187834633780e+01
--1.1659885397100718e+00
-3.1572196819153653e+01
--4.0555764183988728e+01
--9.2391541461182092e-01
-3.2139391840389074e+01
--4.2431274552728475e+01
--1.0798523813992797e+00
-3.2652046442123762e+01
--4.1662462029479194e+01
-7.8118961856781854e-01
-1.7581447983517851e+01
--5.0084806250313726e+01
--9.5182743660430191e-01
--8.4260442041862706e+00
--2.0894506017012734e+01
--4.1231926404439309e-03
-2.1325819008301405e+01
--4.5011221031210660e+01
--1.3510354534412770e+00
-2.7613407052681431e+00
--2.2739477874055936e+01
--9.5533634022427816e-01
--8.4185649792261117e+00
--2.0788851009396115e+01
--9.2551049288048526e-01
--8.3248524690287198e+00
--2.0923493259768954e+01
--8.4746214828482114e-01
--8.3627530961461574e+00
--2.1017453654711019e+01
--8.1376088664557567e-01
-3.2511354115724998e+01
--4.1696296136840651e+01
--4.2640915251361389e-01
-3.6307460193695370e+01
--4.6182704846836373e+01
--7.0991161453154972e-01
-2.9830169467481682e+01
--4.0533332142857326e+01
--5.8500937699790256e-01
-3.4719345902935245e+01
--4.2903555439500870e+01
--5.5009130863516464e-01
-3.4491738589714856e+01
--4.2548555324524216e+01
--5.0967304413211623e-01
-3.3628136226514329e+01
--4.2190610931798325e+01
--1.1372671834534431e+00
--9.0073820523111425e-01
--2.0947818922916383e+01
--4.7789500349558289e-01
-3.0675998726092491e+01
--4.0891509092149960e+01
-1.5456753004065369e+00
-1.2002417068847581e+01
--4.9032859793930285e+01
-2.6369541905849314e-01
-2.5426880209953080e+01
--4.3154871913498859e+01
-1.0197053902883471e+00
-1.9393341523346987e+01
--4.6812693610707541e+01
--2.8452940297757162e-01
-3.0434110802360337e+01
--4.1005516900515985e+01
-1.4071517668053052e-01
-3.5153939439482450e+01
--4.5662263710455051e+01
--1.4393502105474296e-01
-3.0854665028348691e+01
--4.0957628657059871e+01
--6.0939597142002554e-02
-3.5584886940013554e+01
--4.3657029903955156e+01
-5.8191634429099504e-01
-4.0249076722260739e+01
--4.9033891018255112e+01
-1.7201023963416151e+00
-1.0141893156812230e+01
--4.6004730426234033e+01
-5.0720302667542394e-01
-3.3281982393553264e+01
--4.4000712995692560e+01
-1.4533884517560900e+00
-4.7344742771318600e+01
--5.5587313338728634e+01
-8.0083160732342329e-01
-3.7584829142247777e+01
--4.7322830308721414e+01
-2.2098528230406950e-01
-2.8177784786780268e+01
--4.0142072878851920e+01
-2.2098528230406950e-01
-2.8177784786780268e+01
--4.0142072878851920e+01
-7.5813688332908669e-01
-3.3181432432617498e+01
--4.4881109009142961e+01
-1.8036753659720191e+00
-1.8244720067856118e+01
--4.7609410650989240e+01
-7.5334411029230886e-01
-3.1604773381521511e+01
--4.3956915023251852e+01
-8.1805905005257695e-01
-3.4455974018713107e+01
--4.5432495641403115e+01
-6.0880739519394900e-01
-3.6990533125689140e+01
--4.5309090870920969e+01
-7.9175419871441954e-01
-3.7077491101900058e+01
--4.5898333107253421e+01
--7.7499890211803790e-01
--5.0425754704507775e-01
--2.1158644743934982e+01
-9.0603271436301169e-01
-3.1692757199669554e+01
--4.4009945900259289e+01
-1.2810800468331049e+00
-2.2549410308386452e+01
--4.3573692205266610e+01
-6.0920134126327719e-01
-3.5011361684411625e+01
--4.3101643067923746e+01
-8.0958475921641115e-01
-3.2744433163244835e+01
--4.3351009259478360e+01
-6.7292027733640714e-01
-3.4825655502908873e+01
--4.3401795076610647e+01
-2.1814078517802651e+00
-9.8232498310754881e+00
--4.5954112815194208e+01
-1.6753070014154412e+00
-2.1199682998984468e+01
--4.5605189369552463e+01
-6.6920183034161351e-01
-3.2961034285222631e+01
--4.2382479050479063e+01
-1.4226908893924337e+00
-4.0668117286564744e+01
--4.9560809946319196e+01
-6.7261828484614927e-01
-2.7736864512630596e+01
--4.0303720153715354e+01
-5.9413521804948677e-01
-2.7621021949663156e+01
--3.9984753326489532e+01
-1.3337612941959718e+00
-3.6729237308753561e+01
--4.6901474406635465e+01
-1.1548965641272300e+00
-3.6942470149884208e+01
--4.5720375704579126e+01
--6.9966231348319297e-01
-1.1793138653493089e+00
--2.1274289918657427e+01
-9.8025592046313670e-01
-3.5228277934272164e+01
--4.3335432052213868e+01
-1.1231422429676270e+00
-3.2622202521087125e+01
--4.3141573355816206e+01
-1.6247780710763402e+00
-3.6565819976101864e+01
--4.7080307636184465e+01
-1.6247780710763402e+00
-3.6565819976101864e+01
--4.7080307636184465e+01
--6.9835243824127202e-01
--1.3550610898470554e+00
--2.0097657639453548e+01
-2.8348347183739748e+00
-1.2085220921870420e+01
--4.8470436973535598e+01
-1.3169448971122291e+00
-3.3102947992917287e+01
--4.3323683521245798e+01
--5.2915638098686490e-01
-1.8197557648367926e+00
--2.2013876278538422e+01
-1.3958128607834603e+00
-3.6462019632784070e+01
--4.4784533771368025e+01
--5.7478914618524501e-01
-3.9759473925445354e-01
--2.0934437271832035e+01
--4.4082239826445935e-01
-2.9255135199660440e+00
--2.2793893309218191e+01
-3.1130813605623997e+00
-2.6907176242807807e+01
--5.0525666712193839e+01
--6.0884525071026785e-01
--1.1497175257894097e+00
--2.0289575653247976e+01
-1.7387253647635785e+00
-3.2330524661523711e+01
--4.4867733431938902e+01
-1.7387253647635785e+00
-3.2330524661523711e+01
--4.4867733431938902e+01
-1.9396934736726767e+00
-3.6267933125470741e+01
--4.6943626748291237e+01
-2.6823596340820881e+00
-9.1103262497437676e+00
--4.4423705006377311e+01
-2.1786109061214245e+00
-2.2368511474804279e+01
--4.3912526693528648e+01
-1.5491381851335331e+00
-2.8755164302563873e+01
--4.1657088738903177e+01
-1.4612475140885532e+00
-2.7876042118571672e+01
--4.0208269531021905e+01
-2.5627817415801442e+00
-2.1382053780641769e+01
--4.5782336693920193e+01
--4.2871469783402238e-01
-1.7814757042367657e+00
--2.1265864207212591e+01
-1.9484004600391287e+00
-3.7225571146658368e+01
--4.5412524049611953e+01
--3.3135157977696394e-01
--8.4664101829995086e+00
--1.9525370058374570e+01
-1.9326624214820847e+00
-3.6405816150850164e+01
--4.4375527729252497e+01
-3.3870431651847430e+00
-1.1395286143232916e+01
--4.7334181281415191e+01
--3.4730296757468510e-01
-1.1838990199959800e+00
--2.0939801034223432e+01
-4.6377420331837849e+00
-1.7860703730575420e+01
--5.5715666345563605e+01
-3.4559154957710128e+00
-1.0514544826552699e+01
--4.5954042036437393e+01
-3.4330904543494634e+00
-1.0492387922170575e+01
--4.5991215643184546e+01
-2.4622288462469766e+00
-2.3364086150432140e+01
--4.2963083439972650e+01
-1.8461214106194923e+00
-2.7027590605254922e+01
--4.0401747147570568e+01
-1.9381691906651706e+00
-3.3227861670529336e+01
--4.2700079566539038e+01
-3.2704556154903761e+00
-4.2442657704708537e+01
--5.2331600602645700e+01
-2.3465455330421068e+00
-3.6602317401369483e+01
--4.4647025833596381e+01
-3.6363170246523517e-02
--3.8627316102680611e+00
--2.1159743311961982e+01
-3.2752966313611087e+00
-2.2055821552959593e+01
--4.5935016227046241e+01
-2.7605106591568771e+00
-3.0825481609248691e+01
--4.4494636393192707e+01
-2.6549006232087553e+00
-2.8931872374950554e+01
--4.3289289989482754e+01
-2.6965509128703626e+00
-3.7621631629798969e+01
--4.5997962154870116e+01
-2.6562976758114116e+00
-3.7106414061499834e+01
--4.5250578988364815e+01
-2.7393040799462787e+00
-3.6897510497502118e+01
--4.4981385154500458e+01
-3.0901085309627749e+00
-3.5492591063652249e+01
--4.5792746616815542e+01
-2.4648984108372618e-01
--5.6806851570032233e+00
--2.1602305891534499e+01
--1.0043057716915815e-01
-1.6382643917524551e+00
--2.0898496895353144e+01
-3.8231634390249551e+00
-1.0079696696378004e+01
--4.5181564938246517e+01
-3.8730924274038503e+00
-2.1239562240526812e+01
--4.7351399324714897e+01
-3.0862824779354856e+00
-3.7782660402534951e+01
--4.6201596283555027e+01
-3.0970854871404141e+00
-3.7780697925347106e+01
--4.6088628322061247e+01
--5.9237369346269081e-02
-1.1419080777119051e+00
--2.0683395843198713e+01
-3.2465307664204928e+00
-2.4359119195415449e+01
--4.3486939559893280e+01
-3.2909301763053009e+00
-3.0035890337764325e+01
--4.4280053857247083e+01
-2.8578618847268995e+00
-2.8580767385964979e+01
--4.1319099097519491e+01
-3.2013315611918212e+00
-3.0294454146439140e+01
--4.3830410832900867e+01
-3.0293453375533756e+00
-2.9574611784507560e+01
--4.2350159238395484e+01
-4.3760462182958442e+00
-4.1759368125610983e+01
--5.1347370331884051e+01
-2.6322900226502399e-01
-2.7200810289429942e+00
--2.2159614094377755e+01
-4.5649942152273421e-01
--5.8246479177458523e+00
--2.1391668278829584e+01
-4.3466231152705177e+00
-9.3323284700728006e+00
--4.4572282246620567e+01
-3.9757872219918844e+00
-3.1272275199629306e+01
--4.4735653539830643e+01
-4.3966540381655683e+00
-2.3431588986162918e+01
--4.5976472803495277e+01
-6.1053689329312224e+00
-1.7653666917703749e+01
--5.4124844978872062e+01
-1.4692121710078909e-01
--8.3357626757955416e-01
--1.9786498324384649e+01
-3.5521110401034588e+00
-3.0031908097661006e+01
--4.2062700801908349e+01
-3.7702591502864466e+00
-2.8469096131744568e+01
--4.2283790212331887e+01
-4.0862481897338903e+00
-3.4259311595027583e+01
--4.4894353928842854e+01
-6.2932536367541791e-01
--8.1512118901432054e+00
--2.1015507079726305e+01
-7.0968921489149670e+00
-2.3785270250923286e+01
--5.8254584043176827e+01
-4.8904784611411749e+00
-3.4351012166719137e+01
--4.7699673993233517e+01
-4.6913246343177786e+00
-2.4199536310259784e+01
--4.4908264642846710e+01
-4.6535980342662135e+00
-3.0447382011554517e+01
--4.5068405302513781e+01
-4.4183455049442838e-01
-4.6882798802451919e-01
--2.0297191829398574e+01
-5.2764237393588100e+00
-2.3097823660470006e+01
--4.6828200957924672e+01
-4.1892224234112767e+00
-2.8772289823682655e+01
--4.1863069125820253e+01
-4.3305905815723040e+00
-2.9981621885077598e+01
--4.2706277921364148e+01
-4.6676416891554284e+00
-3.1009205410749733e+01
--4.4165807880029369e+01
-4.6676416891554284e+00
-3.1009205410749733e+01
--4.4165807880029369e+01
-5.1997727206018129e-01
--6.0240927484516404e-01
--2.0270659918949548e+01
-5.5826881272456790e+00
-2.9624721143868772e+01
--4.8034180999144745e+01
-5.2700404997264672e+00
-3.1037493626065238e+01
--4.5549465124114136e+01
-6.4873101311305357e+00
-2.2382620146714128e+01
--5.0226617762023722e+01
-5.5688337688414462e+00
-2.2111205590254695e+01
--4.6526003535654915e+01
-9.6193704670371905e-01
--8.3342140836230794e+00
--2.0990127607650383e+01
-5.7528291533957248e+00
-2.2084559671770279e+01
--4.6467905436628079e+01
-6.7280881868901221e-01
-1.3562178846339630e+00
--2.0405317501772945e+01
-6.7172633617763573e+00
-2.2395543506926025e+01
--5.0240047208367024e+01
-5.6909286739106169e-01
--3.6928537241414969e+00
--1.9534478199719739e+01
-6.0427339065877543e+00
-2.2491281956808212e+01
--4.7353046152065495e+01
-6.1117069395422927e+00
-3.4521873368859602e+01
--4.8405942560311125e+01
-6.4685512293691065e+00
-2.2430946332094607e+01
--4.8665319638250331e+01
-5.4192487906357636e+00
-2.5713195672321593e+01
--4.4024809056854075e+01
-5.9178857008421470e+00
-3.1474546393800271e+01
--4.6597635461992581e+01
-7.8444999516106628e-01
-1.1451784768156443e+00
--2.0287773810554807e+01
-1.1955898536791463e+00
-2.0217922356736877e+00
--2.2237457954013994e+01
-5.7483731519975629e+00
-2.5849018023346531e+01
--4.4480946206847200e+01
-8.4411982493311544e-01
-1.2602598803765105e-01
--2.0130672257078782e+01
-6.4127910155158452e-01
--2.6289163635657409e+00
--1.9209543856674792e+01
-6.3097452524196616e+00
-3.1643907290685135e+01
--4.6832829091772204e+01
-5.8900347935937107e+00
-3.3168160347944955e+01
--4.5177831013911344e+01
-7.2520604222091078e+00
-3.8855647828359139e+01
--5.1188083197320836e+01
-5.8877148047381027e+00
-2.6070314928578593e+01
--4.4279209223419059e+01
-1.0280502950522492e+00
-1.1995905109777072e+00
--2.0428148347873851e+01
-6.2089356358498300e+00
-2.7261695826204420e+01
--4.5126443991955739e+01
-1.1291398600560456e+00
-5.6335981029246185e-01
--2.0937601656536845e+01
-6.1695763074594723e+00
-2.7108179264196117e+01
--4.4519832651996950e+01
-7.5823348826899926e+00
-3.7828286069304490e+01
--5.1166153514757653e+01
-1.0157486902684560e+00
-1.7752412293752204e+00
--2.0235796586513317e+01
-6.0086131676787105e+00
-2.9569450423620179e+01
--4.3484803612967660e+01
-6.0086131676787105e+00
-2.9569450423620179e+01
--4.3484803612967660e+01
-8.3890967118779667e+00
-4.4142338354959577e+01
--5.2870830081035123e+01
-7.3153956498802506e+00
-3.2543647345563691e+01
--4.8061344656647499e+01
-7.9421620262141888e+00
-3.7288214317983247e+01
--5.0934403027737048e+01
-8.7777772945339727e+00
-2.0336804886106489e+01
--5.3503355365198431e+01
-1.6900418518333742e+00
--8.2616574989782663e+00
--2.1985829353023576e+01
-6.5580804369112871e+00
-2.9772455197432873e+01
--4.3313095711345582e+01
-7.0514556798788774e+00
-3.3010242648812394e+01
--4.5623261286411250e+01
-7.0514556798788774e+00
-3.3010242648812394e+01
--4.5623261286411250e+01
-6.9991600906070612e+00
-3.2185894307225503e+01
--4.5155193129912966e+01
-6.9991600906070612e+00
-3.2185894307225503e+01
--4.5155193129912966e+01
-9.3453753766450038e+00
-2.1011763463629144e+01
--5.4307048179504712e+01
-8.8000900680592711e+00
-3.8040662866914111e+01
--5.2007886452924836e+01
-8.2352994841347193e+00
-3.4249702783921258e+01
--4.9493528480302167e+01
-7.4617895941992636e+00
-3.4065616300776448e+01
--4.6430367366168447e+01
-1.0564693121834858e+00
--2.7853702479625442e+00
--1.8890086020947436e+01
-1.6013961313868132e+00
--2.6112360639902010e+00
--2.0731823241002406e+01
-7.5757484007497427e+00
-2.7456889648785751e+01
--4.5548757558929204e+01
-8.4766454418248198e+00
-3.4786967435231453e+01
--4.8786891923197004e+01
-1.8340697028640343e+00
--1.5925760700513729e+00
--2.0914811986036430e+01
-1.8340697028640343e+00
--1.5925760700513729e+00
--2.0914811986036430e+01
-8.3399322521412174e+00
-1.0127376659171071e+01
--4.6293594904264111e+01
-1.0162551266754285e+01
-3.6103872928408677e+01
--5.1918778906074238e+01
-8.4524731248865912e+00
-1.0060246201999814e+01
--4.5733564866986001e+01
-8.6159724223708434e+00
-2.6355061366665225e+01
--4.5415552081037653e+01
-1.5668644284766198e+00
--6.7526972166093047e-02
--1.9079867902564899e+01
-1.0491097837315708e+01
-2.3545506600133699e+01
--5.0034971924182344e+01
-9.1185743352328110e+00
-2.7632004666168118e+01
--4.5132131462846829e+01
-2.5603174101033819e+00
--3.1417824594759125e+00
--2.1781445759902439e+01
-1.1006261994007385e+01
-2.5850215843064824e+01
--4.8207184150818890e+01
-1.1534913128984364e+01
-2.7503500935940639e+01
--4.9345821685274203e+01
-1.1828100127920857e+01
-2.7140534260351803e+01
--5.0136745693275827e+01
--1.2141664306201349e+01
-2.0198016693927023e+00
--7.3128093333218205e+00
--2.4636205038310738e+01
-3.4501531457349106e+00
--3.4938066784419590e+01
--5.5356054932304474e+01
-4.9111588862741677e+01
--8.8093475216305805e+01
--4.9035332386342425e+01
-3.0602938280071616e+01
--8.5947568334425057e+01
--5.1246050109375709e+01
-4.2437735648505608e+01
--8.3814234532226806e+01
--4.0829343368561396e+01
-4.0069867858995863e+01
--6.4431106038377493e+01
--4.4155909478491026e+01
-4.7358420664930236e+01
--6.8707466078373017e+01
--4.5265835445120082e+01
-3.7465848518079220e+01
--7.7741912430465305e+01
--3.4843985043068272e+01
-3.3818494123860091e+01
--5.4335597792463766e+01
--4.5854352723504938e+01
-4.2286043280764027e+01
--7.6672547731043892e+01
--4.3712145140643322e+01
-4.4653586648181140e+01
--7.0893494311721213e+01
--4.3678758261066093e+01
-3.5578415334689453e+01
--7.7043185522242581e+01
--3.6383090358216990e+01
-3.6477139315361079e+01
--5.8277714710245490e+01
--3.3774883192334379e+01
-2.7243399686008281e+01
--6.1657497882652613e+01
--3.3008458979963713e+01
-2.8033341039420275e+01
--6.0797237993181575e+01
--2.7248357078817932e+01
-2.8307193692106786e+01
--4.6453097077829426e+01
--3.2015514434684071e+01
-3.6935549892292322e+01
--5.3469288723712708e+01
--2.9386361020009513e+01
-2.9737766073215361e+01
--5.0950476212188782e+01
--2.5619100914260340e+01
-2.5078810406896757e+01
--4.3285935711985992e+01
--3.0353274531940443e+01
-2.9694551676752500e+01
--5.3752953673317137e+01
--2.6875675289123915e+01
-3.0121863924055251e+01
--4.4853203181786299e+01
--2.7060310048605071e+01
-2.5741258990954179e+01
--4.8408109957389549e+01
--4.0676932765601343e+01
-5.5017407486837264e+01
--6.8264136954295537e+01
--2.3963415364119406e+01
-2.6488328664137132e+01
--3.9859167875253014e+01
--2.5232583002429248e+01
-2.4580046657743122e+01
--4.4852385243199599e+01
--3.0159188127752337e+01
-3.7289748539811448e+01
--5.0684312149750056e+01
--2.2139386343070299e+01
-2.0138918502777102e+01
--4.1484946020278691e+01
--2.2914763948735697e+01
-2.1931076210109513e+01
--4.2743596717762536e+01
--2.2914763948735697e+01
-2.1931076210109513e+01
--4.2743596717762536e+01
--2.0508023461627584e+01
-1.9856347842976959e+01
--3.7667202684139824e+01
--2.9215170532884823e+01
-4.3580570890903992e+01
--5.2663783759955166e+01
--1.7375027628491260e+01
-1.9286949136831716e+01
--3.2275670637070341e+01
--1.3210687475663301e+01
--4.1262754000162533e-01
--3.2732285251715908e+01
--1.8659998847666003e+01
-2.4049003009500410e+01
--3.4534064999088116e+01
--1.2854009913652272e+01
--6.6531078456144122e-01
--3.2143502732782203e+01
--1.6984968645101514e+01
-1.0210868882963998e+01
--3.9649229107449820e+01
--1.6552878267427889e+01
-1.1824273250087320e+01
--3.8425709639814187e+01
--2.3697322128594880e+01
-3.6049676089069237e+01
--4.6764090338658747e+01
--2.3598370600900960e+01
-3.6263644106514064e+01
--4.6347683581699528e+01
--1.7501480544563567e+01
-1.3018669837324149e+01
--4.2183129039981836e+01
--2.2413642647423050e+01
-3.4719448076093151e+01
--4.3914932054561788e+01
--1.6292322556076925e+01
-1.6490719918979334e+01
--3.4580013210039581e+01
--2.2967084899355054e+01
-3.4884358718054585e+01
--4.6383946094037178e+01
--1.6227767288423639e+01
-1.5875087006756424e+01
--3.5347405230119975e+01
--2.2539704087363369e+01
-3.5134480807830109e+01
--4.5518898778987825e+01
--2.1753712228375974e+01
-3.4580069683611519e+01
--4.3745130041179287e+01
--2.2322452511706043e+01
-3.4850776038476475e+01
--4.5887830504215522e+01
--2.2791506627799279e+01
-3.5919367950646979e+01
--4.7196413401444943e+01
--2.3943144945839766e+01
-3.8758110339320218e+01
--5.0198914042579794e+01
--2.2289344952408808e+01
-3.5155853431328026e+01
--4.5731504235588353e+01
--2.2468413936181573e+01
-3.6557895231962242e+01
--4.7314416851891579e+01
--1.5726945556036831e+01
-1.4256015471589363e+01
--3.7358079391073368e+01
--1.5297804151307215e+01
-1.3002342856262299e+01
--3.7642927914423218e+01
--2.1620441475084810e+01
-3.5495026859117054e+01
--4.5484392467519832e+01
--1.5099775921334015e+01
-9.7198795556867168e+00
--4.0327596832570919e+01
--1.3512679555176490e+01
-3.8866518163100912e+00
--3.7154074012193171e+01
--1.5480602605578987e+01
-1.6074002236388768e+01
--3.5877975270059338e+01
--1.5699084012481464e+01
-1.0799232516023419e+01
--4.2067868709215197e+01
--1.5885502298879668e+01
-2.2216865162133210e+01
--3.2954590088129379e+01
--1.5704917788868775e+01
-1.2888725433345417e+01
--4.0537840635937222e+01
--2.2955027712634845e+01
-3.9676536234473460e+01
--5.0514653967723923e+01
--1.5206450786896964e+01
-1.2399924166549734e+01
--4.0101987315552421e+01
--8.2410594844264402e+00
--6.0695250918254233e+00
--2.4156073983427511e+01
--1.5161882787750738e+01
-1.2932474944659678e+01
--4.0766529040141286e+01
--1.4710421855524999e+01
-1.9616083618230302e+01
--3.3401288356096401e+01
--1.4518596509625651e+01
-1.9274635370047829e+01
--3.2825556119295356e+01
--1.4458448314768827e+01
-1.6885270174781162e+01
--3.4732515293311195e+01
--1.5230263910367773e+01
-2.5754079969046632e+01
--3.4516624980468400e+01
--7.0831891881636846e+00
--6.8868599917107645e+00
--2.3077575445548618e+01
--1.3387788316062515e+01
-1.9533338136118509e+01
--3.4954878495419145e+01
--7.4968010584219043e+00
--5.1419101801247438e+00
--2.4537811775112296e+01
--2.2252154906082470e+01
-5.1468544599598005e+01
--5.8965356977268783e+01
--1.2729467887272531e+01
-1.9281294063219303e+01
--3.2812277524550034e+01
--9.0269786248649133e+00
--5.9706572550431505e-02
--3.2126978968097546e+01
--8.8916671030658954e+00
--4.1142204626578055e-01
--3.1766738601027580e+01
--1.1997413460941564e+01
-1.6805835087361473e+01
--3.8168338308814661e+01
--1.3586298774270034e+01
-3.0349723373720586e+01
--3.6948997131343546e+01
--9.0506210421860516e+00
-2.5431007037544942e+00
--3.4926013735048770e+01
--1.1730623629765434e+01
-2.0359725741435820e+01
--3.5525784166998491e+01
--8.6755178707126479e+00
-2.2719112648147122e+00
--3.5168885231305723e+01
--5.3884965330948900e+00
--9.9721896628361968e+00
--2.3161123293557765e+01
--5.9542872022964319e+00
--6.8089252985114923e+00
--2.4642600216708058e+01
--8.3720574552921292e+00
-2.0430193749104113e+00
--3.4584055937046266e+01
--1.0694599142700538e+01
-1.4062641676074310e+01
--4.1290632007575695e+01
--1.0661498705105945e+01
-1.4444372534945412e+01
--4.2230145021144629e+01
--5.3316605123359082e+00
--7.6180866744716580e+00
--2.2084544335806836e+01
--1.0615296243353816e+01
-2.1012742398634956e+01
--3.5181760940694353e+01
--1.0297044961070059e+01
-1.7580914299833566e+01
--3.8625361713845770e+01
--1.0260603671441588e+01
-1.4276541373997166e+01
--4.3339517732252006e+01
--9.0474439906274728e+00
-1.1255085457144192e+01
--4.7912485339919755e+01
--8.5529284566634196e+00
-1.4999871307410608e+01
--4.3348556908326138e+01
--1.2323579924474302e+01
-3.6096345235995976e+01
--6.4536790164717530e+01
--8.3280359402077515e+00
-1.4156266973513434e+01
--4.3747506964799811e+01
--3.8917001530375659e+00
--9.0372796909382931e+00
--2.0272915490323076e+01
--8.2539765448749520e+00
-2.0752052295387077e+01
--3.5863655225323221e+01
--7.5715632214867146e+00
-1.9491342565704262e+01
--4.0110210966738777e+01
--6.9376989874348638e+00
-1.5876907345117161e+01
--4.4815797179583818e+01
--7.5555803809886717e+00
-2.5277485964169223e+01
--3.7795521349738344e+01
--6.8159025095336920e+00
-1.6785672459857068e+01
--4.6495027856696893e+01
--6.7403928418867993e+00
-1.8840916281146651e+01
--4.0540603478330496e+01
--3.2509603751250031e+00
--8.9474274800195897e+00
--2.0125064625618851e+01
--3.2509603751250031e+00
--8.9474274800195897e+00
--2.0125064625618851e+01
--3.1875347204209628e+00
--9.0718547710625526e+00
--2.0241848439822409e+01
--3.1816258672643754e+00
--8.5228849020691744e+00
--2.2428471297748953e+01
--6.3526816500859553e+00
-2.2284914073687652e+01
--3.7320214090648896e+01
--3.1322847590170744e+00
--7.6994088113213808e+00
--2.2109816702128740e+01
--3.1396680644752255e+00
--8.1180131603789203e+00
--2.1282823181216784e+01
--3.5783003829493389e+00
--2.3394923586572314e+00
--2.4458023540720745e+01
--5.2931654468307716e+00
-1.6175261585059594e+01
--4.4518084818307727e+01
--2.7615738384291757e+00
--9.1342778987189561e+00
--2.0024514034068943e+01
--2.7866505042469312e+00
--9.4291067334741818e+00
--1.9415175178149266e+01
--3.5584810193315040e+00
--5.4816412923898050e-01
--2.2792455434181779e+01
--4.5371814259511236e+00
-1.6729558561056184e+01
--4.6408434412151301e+01
--4.5322384621585980e+00
-1.6309790238430434e+01
--4.5265534627613910e+01
--3.3747188834910493e+00
--2.2576270797140732e-01
--2.2708826535628944e+01
--2.6202974565658321e+00
--8.3038900891098155e+00
--2.1048296628809549e+01
--3.2857447366923647e+00
-1.8303242843896097e+00
--2.5624013601721806e+01
--3.2769810293309884e+00
-1.9956110434650958e+00
--2.6059684395953624e+01
--2.5391467451644254e+00
--7.8583186764664017e+00
--2.1689941461358810e+01
--2.3494503476478532e+00
--1.0163899431400282e+01
--2.1130172099465451e+01
--2.4167958150518878e+00
--9.5443869330800233e+00
--1.9545176612904321e+01
--2.5063719744805808e+00
--8.1331636686873736e+00
--2.1299323425379026e+01
--3.0360421327274532e+00
--1.4509491911053722e+00
--2.1531233145141456e+01
--3.7711770119377714e+00
-1.7768507712389994e+01
--4.4732205115088519e+01
--3.6250639867758849e+00
-1.6914246986605011e+01
--4.5812474822212707e+01
--2.3610029452737917e+00
--7.7544281528398162e+00
--2.1899496075445544e+01
--2.1998736169907871e+00
--9.1833622782789952e+00
--1.9674998361416662e+01
--2.2564788415368349e+00
--8.2755516601075332e+00
--2.0382420804302207e+01
--2.0742108536482378e+00
--8.1262867725896797e+00
--2.2190545099206865e+01
--2.6545137207101850e+00
-2.0922946653197436e+00
--2.5398892947853120e+01
--2.2853091568435309e+00
--3.5388401972102379e+00
--2.2829204081547346e+01
--1.5162775464637011e+00
-1.7980321218418371e+01
--4.8128261609814750e+01
--1.6554655529770870e+00
-1.8406094614199496e+01
--4.5665778313728779e+01
--2.4759367333575324e+00
-2.4434928656221164e+01
--3.9874362602466171e+01
--2.6816112360135635e+00
-2.9547017432225569e+01
--4.0803589593886009e+01
--1.4853448224409416e+00
--8.4870306795698767e+00
--2.0720418905316361e+01
--1.4238930330239066e+00
--8.4213961226976863e+00
--2.0835111437294326e+01
--1.5585789534941066e-01
-1.4479301988155065e+01
--5.2389879580536423e+01
--1.2538670289141056e+00
--9.6032784609235602e+00
--2.1490066831865516e+01
--1.3537669577267053e+00
--8.4752187024142316e+00
--2.0750057354582662e+01
--1.3237615980651602e+00
--8.9114169588100225e+00
--2.0266372116641527e+01
--1.2636886948851387e+00
--8.2986620035531509e+00
--2.0963145793504545e+01
--1.2188911270477751e+00
--8.8702777893472557e+00
--2.0537714712364409e+01
--1.1315690329620920e+00
--8.8347744424410362e+00
--2.0560247394759664e+01
--1.1071234794486204e+00
-3.3895695458921679e+01
--4.4344370663729116e+01
--1.0594639603957829e+00
-3.7781106928907775e+01
--4.6647919081441884e+01
--1.4039219902269788e+00
-3.0400164302201111e+00
--2.3928095452166751e+01
--1.2419995850129055e+00
-3.0246800760391690e+01
--3.9970200767780909e+01
-5.6212256343649769e-01
-1.7564555635083309e+01
--4.9584327977115507e+01
--1.2882651845514310e+00
-2.0401721514987345e-01
--2.2430189394345536e+01
--1.0456443310185752e+00
-2.9678666622911120e+01
--4.0037949961907444e+01
--1.0515660576364978e+00
-3.2554803459711906e+01
--4.1395031236686918e+01
--8.3746313115602644e-01
-3.6022164099122485e+01
--4.4627905202524971e+01
--3.1377640515115941e-02
-4.1222582005750255e+01
--5.0041271061027629e+01
--8.6204864776004653e-01
--8.4182660321733636e+00
--2.0767198625734064e+01
--5.7553185248677352e-01
-3.1819484558082802e+01
--4.1459299416003581e+01
--5.7553185248677352e-01
-3.1819484558082802e+01
--4.1459299416003581e+01
--7.7073808440427349e-01
--8.3834019515242719e+00
--2.1074565883890422e+01
--1.4084665141192923e-02
-2.3676790313835287e+01
--4.1350475389055319e+01
-3.4044328366476229e-01
-2.3952866838270115e+01
--4.4174928292673684e+01
-1.7735282862933707e-01
-2.3133119677364501e+01
--4.2835182288351177e+01
--4.7196010219979651e-01
-2.9496454892267721e+01
--4.0396688665776708e+01
--4.4918521789337285e-01
-3.0093440463721890e+01
--4.0746739502703534e+01
--1.1337352654424548e+00
-2.8029289979774621e+00
--2.2444699103056468e+01
--3.4300002359609028e-01
-3.2008778486496610e+01
--4.2038077300808851e+01
--3.4855197525009424e-01
-3.1444156926355578e+01
--4.1229093174627671e+01
--1.0395202407853772e+00
--9.3520871304748165e-01
--2.0917488284489824e+01
--7.9264593155545016e-01
-3.3591344385927036e+00
--2.3737039120325509e+01
--7.7558175657961081e-01
-3.4047014285313537e+00
--2.4092070995437716e+01
-5.7086651327720742e-02
-3.2693161903376200e+01
--4.1524522891967578e+01
-1.5981557234742694e-01
-3.0518400244046067e+01
--4.0653492583096416e+01
-2.9325839719443886e-01
-3.4236249718670543e+01
--4.2756153593027307e+01
-7.9006225957195331e-01
-2.3494182801264774e+01
--4.1935935128308728e+01
-5.0916882037050903e-01
-2.9493686498247275e+01
--4.1808292376018251e+01
-1.7362606231301676e+00
-8.6457674651034839e+00
--4.3941106574618978e+01
-1.0494848906876957e+00
-2.2521222417261164e+01
--4.3328454043017572e+01
--7.7843582772623987e-01
--1.7763591466691822e+00
--2.0714737313247312e+01
--7.6971934811480636e-01
--3.2130764819594386e+00
--2.0425944991840847e+01
-1.0202561806282229e+00
-3.3805451020404178e+01
--4.5104585970378274e+01
-1.0202561806282229e+00
-3.3805451020404178e+01
--4.5104585970378274e+01
-8.2250376495380928e-01
-3.1082632424258431e+01
--4.1596684485356256e+01
-7.8285872816635560e-01
-2.9103139712861793e+01
--4.0448059085235542e+01
-7.8285872816635560e-01
-2.9103139712861793e+01
--4.0448059085235542e+01
-8.8363205390509847e-01
-3.2948731120113884e+01
--4.2769430261603780e+01
--5.0241375391395993e-01
--3.8250268995437917e+00
--2.1128355728557388e+01
-8.5965614860753470e-01
-2.8066957266912187e+01
--4.0237380360487492e+01
-8.3232913469098302e-01
-2.7809001424419119e+01
--3.9977390022951219e+01
-1.8028521701311446e+00
-3.9137381327935323e+01
--4.9112255561018308e+01
-1.2859689695687773e+00
-2.8511838980544546e+01
--4.1997962090448503e+01
-1.1113221329601695e+00
-3.2489459748695594e+01
--4.2676038168234626e+01
--5.8139677502563603e-01
--4.7417233217814442e-01
--2.0952753437413925e+01
--6.4890220110537866e-01
--1.0939694004665843e+00
--2.0307971226392329e+01
-1.2203187788575458e+00
-2.5268747244473751e+01
--4.0247794188407674e+01
-2.2115564650997359e+00
-2.1805543521954714e+01
--4.5752057947790362e+01
-1.5514986619379258e+00
-2.8193152426792068e+01
--4.1642237369658375e+01
-1.3618439925392134e+00
-2.8857835809172983e+01
--4.1140166310373282e+01
-2.1938709111596966e+00
-2.6589646682821837e+01
--4.5307173586183957e+01
-2.2296484902687186e+00
-3.8995166965887307e+01
--4.8625751920690142e+01
--1.4706876613829009e-01
-3.7942999610592270e+00
--2.3701747637371994e+01
-2.2703996331759400e+00
-2.5033839020018942e+01
--4.2525478041684707e+01
-3.1780039774481428e+00
-2.2637832173791157e+01
--4.7272094879595102e+01
-4.5606858555195320e+00
-2.1894884579780896e+01
--5.5212866780742466e+01
--1.3708966113999663e-01
-2.5396102099372677e+00
--2.2221449363580867e+01
-6.9961443444846105e-01
-4.3340337393329476e+00
--2.6328185949214635e+01
-2.8274331969688329e+00
-2.5314384746280719e+01
--4.2846339762902616e+01
-2.9889573887961554e+00
-3.1785276994587850e+01
--4.4986793227750219e+01
-5.6766861849674308e+00
-2.0513434745879525e+01
--5.6614371187404707e+01
-3.1785231587563928e-01
-2.8294511638868660e+00
--2.2526911903768344e+01
-9.7450308718570702e-02
-1.0241806216090361e+00
--2.0237637843503226e+01
-3.1703372827930387e-01
-1.0478964379908775e+00
--2.1146222639333732e+01
-4.0217394560217956e+00
-3.5586546279895813e+01
--4.5507499783521261e+01
-4.5232065393032350e+00
-2.4885182415407964e+01
--4.7117341357295821e+01
-6.6843132931709386e+00
-2.2433936531125426e+01
--5.7061078872674095e+01
-4.3705627362706325e+00
-2.5598532157498443e+01
--4.3452994713410945e+01
-5.3082377032920567e+00
-3.4197997209923898e+01
--4.7699953736229645e+01
-4.8162964295195554e+00
-3.2389974958229352e+01
--4.5320709109099504e+01
-4.5332673681903861e+00
-2.7185612103850467e+01
--4.2299845736150381e+01
-4.8190459731044060e+00
-2.6281851426075171e+01
--4.3691811234364550e+01
-4.5171712076890200e+00
-2.8932422190994227e+01
--4.2195501193924251e+01
-4.5926218922464663e+00
-2.9325996955958374e+01
--4.2734707926333947e+01
-6.2047114689657432e+00
-3.8750391323879150e+01
--4.9498448195532440e+01
-7.1314114761915448e-01
--7.6469876196728603e-01
--2.0244685966354044e+01
-6.2852546224671473e+00
-2.3121561121488895e+01
--4.7608520227363805e+01
-6.0230795852092989e+00
-2.2675122219136892e+01
--4.6584313059475534e+01
-6.6570730152371693e-01
-3.2504308092002293e-01
--1.9711709716208379e+01
-5.7922022474344681e+00
-2.5380910300891856e+01
--4.4707730099692419e+01
-5.6217605476555468e+00
-3.2470535173062444e+01
--4.4412920304521911e+01
-8.6807875004364210e-01
-1.7387241173424439e+00
--2.0750842279714927e+01
-5.6432839912070856e+00
-2.8568397470413547e+01
--4.2389479637495022e+01
-7.3280719525012863e+00
-2.2279845594173352e+01
--4.9164323905768633e+01
-6.4513131059823090e+00
-2.6387491135113347e+01
--4.4798862722859923e+01
-8.2553084290572247e+00
-1.9954039763434015e+01
--5.2416403875150053e+01
-7.8370734420702099e+00
-2.1931766381834894e+01
--4.9820659529767028e+01
-6.6366140266109195e+00
-2.6228436887427357e+01
--4.4502063420002408e+01
-6.7756514011797577e+00
-3.3061780842800388e+01
--4.4998630797872742e+01
-6.9275567811931049e+00
-3.3706749836811952e+01
--4.5902119998451774e+01
-7.1666654538116008e+00
-2.7806555341078063e+01
--4.6485211489949329e+01
-8.3736605711757086e+00
-2.1255590711150244e+01
--5.1081523089338972e+01
-7.1679011070036962e+00
-3.4236173847323762e+01
--4.5618974026080735e+01
-7.3164713225469349e+00
-2.7503209485821973e+01
--4.5996113879403744e+01
-7.2167602645543409e+00
-3.1974546438106898e+01
--4.5178237301538900e+01
-9.0454461609145032e+00
-1.4022457755918882e+01
--5.0775240431768282e+01
-8.3319717403534987e+00
-2.7282027387670748e+01
--4.7760362135198960e+01
-9.3061531438159228e+00
-3.6799340589730782e+01
--5.1387664421869864e+01
-9.3061531438159228e+00
-3.6799340589730782e+01
--5.1387664421869864e+01
-7.6720466228595994e+00
-3.0201238129370392e+01
--4.4487673040714554e+01
-2.1745281202874391e+00
--3.7152877321505153e+00
--2.1252619631896824e+01
-2.7221406094348866e+00
--5.3265996329154230e+00
--2.2920343825464382e+01
-2.3595811459653895e+00
-4.2653919294899734e-01
--2.1285404896953050e+01
-1.0858320711208714e+01
-2.6493521622451055e+01
--5.0596284302429382e+01
-2.1050851738606862e+00
--2.9121373890819484e+00
--1.9845881876653909e+01
-1.0139772527210436e+01
-2.6579797485753648e+01
--4.6594673355279433e+01
-1.0139772527210436e+01
-2.6579797485753648e+01
--4.6594673355279433e+01
-1.2055645215648386e+01
-3.2807535765531121e+01
--5.2805276535899843e+01
-1.4660875129480337e+01
-2.1752776679877496e+01
--6.0444090041081239e+01
--1.2914038630332826e+01
-2.8700434181559569e+00
--7.4252607154461252e+00
--4.7310597681444413e+01
-3.7949301279517961e+01
--7.9973704637534922e+01
--4.3931762136153189e+01
-4.2485233444149593e+01
--7.2170796872255863e+01
--3.7320860635113405e+01
-3.6298945127819550e+01
--6.2977079362005618e+01
--3.2050400885090973e+01
-3.7132156222346573e+01
--5.2537291333780139e+01
--3.3975510910917173e+01
-4.0268636791576604e+01
--5.5754488559183152e+01
--3.1654490070617854e+01
-3.8220941741138738e+01
--5.2052502751856700e+01
--2.6234947557022004e+01
-2.7650882145919191e+01
--4.4146448663765504e+01
--3.4483537142742712e+01
-4.2568164000231995e+01
--5.8298483119667438e+01
--4.0880036257502212e+01
-5.4841591809809110e+01
--6.8978709707160661e+01
--2.4692989251563439e+01
-2.3027149134142018e+01
--4.5730364733755657e+01
--1.9108682144219696e+01
-1.8433694761177300e+01
--3.6009096864861554e+01
--1.4073066178703892e+01
-6.1999712984554645e-01
--3.4085135604834200e+01
--1.7527091340273053e+01
-1.5491254631651488e+01
--3.5942560440065584e+01
--1.6991680515372501e+01
-1.8929921827848876e+01
--3.1960806484227021e+01
--2.4969450051717342e+01
-3.7072798913063146e+01
--4.7217392501919797e+01
--1.6101941676226154e+01
-1.8005796485276129e+01
--3.2710129106424930e+01
--1.6149968986877720e+01
-1.4744529447452805e+01
--3.6498294847339139e+01
--1.7948898156822988e+01
-1.5934550713890603e+01
--4.4473321370723518e+01
--2.2144009851047166e+01
-3.5504466196869039e+01
--4.5473880521243331e+01
--2.3494821543350533e+01
-4.0160319686150672e+01
--4.8947232390347203e+01
--1.5375855067885130e+01
-1.6754743548071737e+01
--3.3658885853547112e+01
--1.5616232678377866e+01
-1.7109444472608406e+01
--3.4347350321165919e+01
--1.5700164143126621e+01
-1.3808685765170706e+01
--3.7712264990522321e+01
--1.5262292331609130e+01
-1.8416819493774341e+01
--3.2201167669196614e+01
--2.2967004621428760e+01
-3.9605420240354206e+01
--4.9394340260568370e+01
--1.5408495597400998e+01
-1.2126501364302756e+01
--3.9170691670652253e+01
--1.5703029572955401e+01
-1.3474195673031728e+01
--3.9254982724318658e+01
--1.6559729347097182e+01
-2.3885586061048205e+01
--3.4366933202841558e+01
--1.5363498716356327e+01
-1.0805776159689742e+01
--4.1514623932477193e+01
--1.4653377921659798e+01
-1.8621688895663446e+01
--3.2442459573541832e+01
--1.4552439142650496e+01
-1.6284935311947784e+01
--3.5441456080960478e+01
--1.5438700606590277e+01
-2.5784727126175685e+01
--3.4951564147342978e+01
--1.3931553220518213e+01
-1.2991337163350138e+01
--4.1030717847504690e+01
--1.5531324268989948e+01
-2.7347322321511740e+01
--3.6199701452056587e+01
--1.2848545514420238e+01
-1.9797239995370241e+01
--3.4731790627800969e+01
--1.2138953194161120e+01
-2.0030483322737616e+01
--3.3863706477634352e+01
--6.0947737961591306e+00
--7.4929602698173152e+00
--2.4574187956477125e+01
--2.4008190537154427e+01
-6.9749899817340051e+01
--7.5913730787188356e+01
--1.1237933353979765e+01
-1.8498016250314553e+01
--3.6852770105755191e+01
--1.1200282676007394e+01
-1.8183141099952405e+01
--3.6273494762340761e+01
--8.8029514837131302e+00
-3.0105304154838439e+00
--3.6636410096374597e+01
--5.8393560685905666e+00
--6.4782691623449900e+00
--2.3783151604915133e+01
--8.4023026390526088e+00
-3.1285679907261610e+00
--3.5986738332895627e+01
--1.0670191596204683e+01
-2.0134034569816940e+01
--3.6676946485431962e+01
--1.0004642858907774e+01
-1.1499063958373123e+01
--4.5675044154897392e+01
--7.0490413554102416e+00
-7.1721928587810779e-01
--3.2899589818347138e+01
--9.9061462046096640e+00
-2.1052386294407878e+01
--3.5248301070222134e+01
--4.6902360371163265e+00
--9.9168230154443204e+00
--2.2545509873661260e+01
--7.3014340964872071e+00
-1.9035127750582035e+00
--3.4826558020336996e+01
--4.8963540862252382e+00
--7.0616304783606063e+00
--2.2840094011255825e+01
--9.3069478100287863e+00
-2.1241064257619310e+01
--3.5505759879670805e+01
--4.6429122557863600e+00
--7.5453978109886917e+00
--2.2224625697787708e+01
--4.2746668035357160e+00
--8.6857598549807626e+00
--2.0713023383904964e+01
--4.3204610108712345e+00
--8.6340095067432721e+00
--2.0581005631656836e+01
--8.9535477430271033e+00
-2.1296179201257196e+01
--3.6038333471586661e+01
--7.4895572387525613e+00
-8.0523364305625744e+00
--4.2806514072169890e+01
--8.1081474961830740e+00
-1.9248106310475503e+01
--3.9454839870678008e+01
--3.6138136802130312e+00
--9.8001178569751044e+00
--2.1950063201453634e+01
--7.4905284955073403e+00
-2.4945029154624827e+01
--3.4974585740387610e+01
--6.6225383814817809e+00
-2.2789693958479187e+01
--3.8085723284320011e+01
--3.3163450978092581e+00
--7.9081377188155964e+00
--2.1619884332261762e+01
--9.1058616519062987e+00
-7.0057968535865385e+01
--7.5649370731965035e+01
--2.6307534666313681e+00
--9.2936911981530042e+00
--1.9014780890024383e+01
--2.5797727924058784e+00
--7.8385397535727410e+00
--2.1800293668116637e+01
--2.8263540678294352e+00
-2.8529872866983550e+00
--2.7163628310965155e+01
--3.0766114585218292e+00
-1.9917139043198404e+01
--4.3414067545399490e+01
--3.3072770160490266e+00
-2.3908153988070147e+01
--3.9671119610797227e+01
--2.2822784778525809e+00
-2.6888442259911831e+00
--2.5903053918843764e+01
--1.7738499493792643e+00
--8.1411583674618928e+00
--2.1278380703546802e+01
--1.8002179884710936e+00
--9.5304210773633304e+00
--1.9155695871800859e+01
--1.3231184131324931e+00
-8.3913959237326488e+00
--4.3555953414719596e+01
--2.0506199426251039e+00
-3.4825511581704411e+00
--2.7841474064097749e+01
--1.4361313303676264e+00
--8.9080000847968428e+00
--2.0093379808206379e+01
--1.3352998418192275e+00
--8.3224399304467358e+00
--2.0941872629640731e+01
--1.4049379480992652e+00
--2.4523626141547190e+00
--1.9886017853015840e+01
-4.7871825111157090e-01
-1.9471259598361844e+01
--4.7085353656527161e+01
-4.7871825111157090e-01
-1.9471259598361844e+01
--4.7085353656527161e+01
-6.3944341732908294e-01
-2.0622716444161423e+01
--4.4503309288380450e+01
-2.6770474907562454e+00
-7.7879881260457239e+01
--8.5071144990989410e+01
--1.5968849447626587e-01
-2.8410690854408159e+01
--4.0066859458307000e+01
-6.0485671003609143e-01
-2.6568616004412153e+01
--4.0969384403097330e+01
--7.5449764222665772e-01
--1.0449440778837400e+00
--2.0868279733102430e+01
-1.6113253760291681e+00
-3.6344410329972426e+01
--4.6387625282070843e+01
--3.5366617515113641e-01
--4.0798590652226334e+00
--2.1233441221092669e+01
-1.7670287664369724e+00
-2.4211432509659204e+01
--4.2408341349089532e+01
-1.4852053092680029e+00
-3.4222645283570614e+01
--4.3767145826080871e+01
-1.5674447859956580e+00
-2.5192340536248746e+01
--4.1197051739386261e+01
-3.2342375079153980e+00
-1.1261204403006911e+01
--4.7445338407219175e+01
--1.2486464925240875e-01
--8.6078078981723571e+00
--2.0609325716544031e+01
--5.3723684702095109e-01
-8.1974990671816614e-02
--2.0252869697077937e+01
--4.3145836874704241e-01
-1.1945278405126900e-01
--2.0820418275655690e+01
-2.9860454382162280e+00
-2.2338875034567753e+01
--4.5886253802948509e+01
-3.9570397667977092e-01
-4.1833309700142189e+00
--2.5860073168669846e+01
-4.2773483105801384e+00
-1.7084105596841461e+01
--5.0579523229500893e+01
-1.7757830152806486e-01
--5.8069894020222019e+00
--2.1437854096976562e+01
--6.3186576639932768e-02
--8.2965585748526269e+00
--1.9660823726685404e+01
-2.9522572394773744e-01
-2.9106751801755584e+00
--2.2714672414467511e+01
-5.3271285770125179e+00
-2.2554415802190061e+01
--5.0010264795026025e+01
-5.5540684514753746e-01
--6.9561532102368617e-01
--2.1711159214749870e+01
-6.2954736267515132e-01
-2.3392738382715370e+00
--2.2355141434242920e+01
-4.0563063477182579e+00
-2.6482110426767331e+01
--4.3021836524191798e+01
-4.6098404017925221e+00
-2.5998765657940268e+01
--4.4571142372719180e+01
-3.0272019806364914e-01
-3.1554580246681335e-01
--1.9431787304402214e+01
-5.5355967958187717e+00
-2.5313244950134585e+01
--4.5278529703881667e+01
-5.2484082908893681e+00
-2.7616153350428508e+01
--4.4067457128849803e+01
-9.8101903487779807e-01
--4.3011068441393210e+00
--2.1105077111125318e+01
-5.8821166038861126e+00
-3.6721225813567443e+01
--4.6602534445004316e+01
-5.9728169258966046e+00
-3.6644155340086229e+01
--4.6898321916886793e+01
-8.5599812898829128e+00
-2.6984153792671151e+01
--5.6497796602323696e+01
-7.3514165675375160e+00
-2.4545205442767717e+01
--5.1322829677757568e+01
-8.5599812898829128e+00
-2.6984153792671151e+01
--5.6497796602323696e+01
-7.8465957966996092e-01
-1.2373070560071240e+00
--1.9676446694382076e+01
-6.9814598125912370e+00
-2.1736522972405950e+01
--4.8149650577100104e+01
-6.4485989253186267e+00
-2.7165732879716906e+01
--4.5509300496344977e+01
-7.6063983704720890e+00
-2.3525475668298053e+01
--4.9521811335589859e+01
-8.5066495190599412e+00
-2.2619373440301064e+01
--5.0085035028741508e+01
-7.3733660070971094e+00
-2.6151455677841703e+01
--4.5358015362320131e+01
-8.8769514224531356e+00
-1.3661553114322418e+01
--5.0343159225282918e+01
-1.4630749946694310e+00
-1.0612987185471705e+00
--2.0127068989147698e+01
-7.4941751076144270e+00
-2.6261023638977608e+01
--4.4622523135634104e+01
-1.3998642679245703e+00
-3.3236939651990050e-01
--1.9739994843499247e+01
-2.1672737010835408e+00
-2.9867271541440514e+00
--2.2486329783234467e+01
-9.4043729049893177e+00
-2.8555731680674668e+01
--5.0030587035624784e+01
-1.7461577793699643e+00
--2.6565413845143504e+00
--1.9894113475318282e+01
-9.3827169993404524e+00
-3.1585612390892706e+01
--4.8775347036736839e+01
-9.6105903070420151e+00
-2.4506494895080710e+01
--4.8526950678313675e+01
-2.9738425819285204e+00
--5.5557724608222534e+00
--2.4171209001193418e+01
-1.0387295062169184e+01
-2.2770184739632551e+01
--5.1033975841752657e+01
-9.8595782334624626e+00
-2.5513931489304948e+01
--4.8015769318759432e+01
-1.0192172541939918e+01
-2.2839676538483886e+01
--4.9544447297571097e+01
-1.1197272151861064e+01
-3.2369383240181392e+01
--5.0927629839285927e+01
-9.7989785323273360e+00
-2.7965781347756167e+01
--4.5497684312329987e+01
--1.5181956002124807e+01
--4.2435033520069938e+00
--2.4648823286324244e+01
--7.9265151469864364e+01
-7.2950185496335862e+01
--1.2580172825317041e+02
--7.6783860926804621e+01
-6.8960650878628371e+01
--1.2494853161708468e+02
--2.5840780920612499e+01
-1.1314648657789988e+01
--4.8076730708290107e+01
--3.5280879949554084e+01
-3.1280112454072260e+01
--6.2796670468232293e+01
--3.4806480008155162e+01
-3.9632415554759518e+01
--5.6259916621639384e+01
--3.1229832672999382e+01
-2.6804476809848008e+01
--5.5522736887458500e+01
--3.1229832672999382e+01
-2.6804476809848008e+01
--5.5522736887458500e+01
--2.9233392254886795e+01
-2.8221953674913649e+01
--5.0190092626721032e+01
--2.9810206805834941e+01
-2.6881826274320520e+01
--5.3719013125050637e+01
--2.9065740785419898e+01
-3.1495497376623423e+01
--4.8636930589182093e+01
--2.2282009694653176e+01
-2.0850968251529672e+01
--4.1861275111895921e+01
--1.6365366572314826e+01
-1.5588275754232450e+01
--3.5143808924487274e+01
--1.6144649061671668e+01
-2.0934600175259028e+01
--3.2475481473915174e+01
--1.5189517297925962e+01
-1.8654979160155722e+01
--3.2143806579137099e+01
--1.5060978258081173e+01
-1.3350692286789380e+01
--3.8744340728946497e+01
--1.5709652485410238e+01
-2.4182938389038757e+01
--3.4273540652998044e+01
--1.5709652485410238e+01
-2.4182938389038757e+01
--3.4273540652998044e+01
--1.5630414468491201e+01
-2.4905077666431680e+01
--3.4667075263857775e+01
--1.4276055577106220e+01
-1.2593343865270663e+01
--4.0885382163429014e+01
--1.3957497163473452e+01
-1.6243821358696781e+01
--3.6411082847107366e+01
--1.3526694154382986e+01
-1.2834257817504801e+01
--4.1012124376893141e+01
--1.4104602160458022e+01
-2.5470910528936066e+01
--3.3030068981678539e+01
--1.6349372143051820e+01
-4.0549105121497938e+01
--4.6455884081358072e+01
--1.1463914945703515e+01
-1.8924669940790839e+01
--3.6979067493085282e+01
--9.8590442889403622e+00
-1.7270802533014599e+01
--3.8372789393723778e+01
--9.0624833995790652e+00
-2.2030636506925166e+01
--3.6740224251225641e+01
--3.4631476534761396e+00
--8.9148492807640700e+00
--2.0191290931512437e+01
--3.2890342723633834e+00
--9.1817120028724073e+00
--1.9777052032511243e+01
--3.2163046160671978e+00
--9.0163715014847767e+00
--2.0032530575567733e+01
--3.3172246064071436e+00
--8.2328246123828031e+00
--2.1262211386624056e+01
--3.3050596756454760e+00
--8.4846640246289287e+00
--2.2257631229665840e+01
--6.1272949246590018e+00
-2.2045972352112848e+01
--3.8154912446764065e+01
--2.9898788411622332e+00
--8.1259264115582024e+00
--2.1405198674715386e+01
--3.5228038715160732e+00
--2.1109730178913320e+00
--2.4422875984619477e+01
--8.0472275955047810e+00
-4.7623472423727002e+01
--5.5236940257338695e+01
--2.6804122141020694e+00
--8.4015978256003923e+00
--2.2710644339188285e+01
--2.1611170721890711e+00
--8.5812945753907606e+00
--2.0607390385517462e+01
--1.5820269667605125e+00
--9.0739606528790997e+00
--2.1830100218662700e+01
--1.0211852351243254e+00
-1.3776733743654145e+01
--5.0162934933547035e+01
--1.3637374986138029e+00
--9.7046776007726194e+00
--1.8821837169278808e+01
--1.6231464615733875e+00
--2.2578679013516112e+00
--2.0230216173292050e+01
--1.0702755380448707e+00
-2.3081513604517710e+01
--3.9038585539564352e+01
--1.1554376141113478e+00
--2.6090416551949924e+00
--2.0884743375770771e+01
--4.5282701739740738e-01
-2.8242412836786428e+01
--3.9887404900666382e+01
--9.3099427166250859e-01
--2.1595273482784649e+00
--2.0375825663055856e+01
-5.6760046110464091e-01
-2.3512969535696939e+01
--4.1226366464904089e+01
-5.6760046110464091e-01
-2.3512969535696939e+01
--4.1226366464904089e+01
--8.8860415562295014e-01
--1.1713495632212716e+00
--2.0269439116426078e+01
-1.5644712095930973e+00
-2.4514194235356882e+01
--4.2405675571171209e+01
--1.3332466250850061e-01
-3.5390002211103431e+00
--2.3454272829830700e+01
-9.5462179240600062e-02
--1.4370042011941171e+00
--2.0192498010967782e+01
-1.2367659406304659e+00
-4.3902837906226759e+00
--2.6802101422366608e+01
-4.3142158928927854e+00
-3.5940774209335750e+01
--4.6495977067205281e+01
-8.3838682934311182e-01
-2.1832269964467463e+00
--2.1827193777993223e+01
-6.2503467317291572e-01
-1.9664572275880137e+00
--2.0566404945012295e+01
-8.7730878736160403e+00
-2.3786619399158930e+01
--6.0606098902587952e+01
-7.4079131237563507e+00
-2.0641543436359385e+01
--5.3268409815010862e+01
-7.8105625084615431e+00
-2.0809716918790897e+01
--5.2611462143966506e+01
-8.9672779767739186e-01
--2.7121735906019881e+00
--1.9581072571807315e+01
-1.4036216351889395e+00
-2.2260152308944798e+00
--2.1833165612404084e+01
-1.0076689050814712e+01
-2.1890941783219265e+01
--5.5423211803799113e+01
-1.6423607573016374e+00
--3.3519963129726138e+00
--2.0800489000967190e+01
-1.3832389601147110e+00
-1.0484760762209271e+00
--1.9305275438142658e+01
-3.1336169678421437e+00
--1.4728822882850712e+00
--2.3300346230448099e+01
--1.5092979379093057e+01
--4.0264846157753267e+00
--2.4642402457050594e+01
--4.2884461165857111e+01
-3.5996136326599036e+01
--7.0223706296415358e+01
--4.8240217222184526e+01
-4.1729280104762708e+01
--8.1499221220763488e+01
--4.3813189695171381e+01
-3.7539969237633990e+01
--7.7130275107003953e+01
--2.3103853475258969e+01
-2.3172268432186108e+01
--4.1483527279735853e+01
--2.3802874875658034e+01
-1.9262167151413863e+01
--4.6564411562446800e+01
--3.9177279172799373e+01
-6.1417471499753610e+01
--7.0955647249783340e+01
--1.7390969831918945e+01
-1.2424221885756138e+01
--3.9404491131835549e+01
--2.4038117017373917e+01
-3.6415922849561170e+01
--4.5768006619841955e+01
--1.6191598858070130e+01
-1.0117437157009757e+01
--4.3410846195681749e+01
--2.3079195771700800e+01
-3.9062060987241999e+01
--4.9120798729520672e+01
--1.5777726251089687e+01
-2.3555936034920705e+01
--3.3897199768033190e+01
--1.6721171099727258e+01
-3.8610647790133434e+01
--4.5304937157804680e+01
--1.0743730080028481e+01
-1.2033068746052709e+01
--4.4915386015058736e+01
--3.9503520042033213e+00
--8.7385823023444011e+00
--2.0670115889977804e+01
--3.8474776355818796e+00
--8.0977429294323695e+00
--2.1386970148138950e+01
--3.3573762313957078e+00
--2.0437991364144912e+00
--2.3707169320324592e+01
--2.3617536264963603e+00
--1.0096618689701710e+01
--2.1542780039962906e+01
--1.9685529777823760e+00
--8.4192213753443390e+00
--2.0864572095386478e+01
--1.9648115385914073e+00
--8.2158211284053362e+00
--2.1118438690299868e+01
--1.6008438201715134e+00
--1.6086558866040457e+00
--2.1084488374211961e+01
-4.0791333025727300e-01
-2.1317762301144558e+01
--4.3316215918113528e+01
-2.4209829974607411e+00
-9.8398210913978836e+00
--4.5494153817412140e+01
-2.4919232065243135e+00
-1.0854202235911435e+01
--4.6759311331817024e+01
-2.2985182292489754e+00
-9.1558723689162296e+00
--4.4056705978214978e+01
-1.8124533686272657e+00
-2.9958499935140452e+01
--4.2897148058356002e+01
-2.1938140137428244e+00
-2.7191263710642644e+01
--4.3796233655004492e+01
-1.5488216950359332e-01
--8.4881277086551083e+00
--2.0794417914331955e+01
-2.6731317154257259e+00
-3.4643853706454458e+01
--4.4583173228394529e+01
-9.3629260452055302e-02
--1.0454652005189702e+00
--2.0265763079357161e+01
-6.1481350150456562e+00
-2.2412180080940630e+01
--5.0793559226241435e+01
-6.0763116880175605e-01
--3.9347766517207474e+00
--2.0295568725295588e+01
-8.6407787466146679e+00
-4.3885567683386597e+01
--5.3013366083719653e+01
-1.2772624043856402e+00
--3.1409092407815709e+00
--1.9748011840579533e+01
-7.0789791613250932e+00
-3.1643612931222975e+01
--4.4961532901308232e+01
-1.6141376909614755e+00
--4.3488698374454779e+00
--2.0854867502350540e+01
-8.6423913700046970e+00
-3.2549669439785156e+01
--4.7854939029596707e+01
-1.0347517075372128e+01
-3.8949632542653113e+01
--5.1802379303188431e+01
--4.1935488365088290e+01
-3.5002184384731187e+01
--7.0012343467872924e+01
--4.0156819506346643e+01
-4.4277148461737568e+01
--6.0852902766121609e+01
--3.9915741548884291e+01
-3.9793294444731444e+01
--6.5658545381571074e+01
--3.5550339388535136e+01
-4.0141020071236476e+01
--5.6381543375604522e+01
--2.8608392776334810e+01
-2.3186486265766199e+01
--5.3830682597943579e+01
--2.9834828521497752e+01
-2.1398226635248690e+01
--5.9875492549787253e+01
--3.0118722050217336e+01
-2.2643878667357676e+01
--5.9807550170203321e+01
--2.0070728875755592e+01
-1.5498866638948108e+01
--4.1423433668068611e+01
--1.9030930812852279e+01
-1.9155733317965502e+01
--3.5205937376975150e+01
--2.4850182488705265e+01
-3.4717404814901002e+01
--4.4998770433008566e+01
--1.7149611042789996e+01
-1.3053920487756059e+01
--4.1831493590424856e+01
--1.5686745117684609e+01
-1.2407251700908338e+01
--3.9108708841527736e+01
--8.7957184086360876e+00
--5.3882104537513626e+00
--2.5482502757697684e+01
--1.5988511807889092e+01
-1.2375292603831234e+01
--4.4259537313852334e+01
--2.7049729621636079e+01
-5.2218810052623795e+01
--5.9612054695482257e+01
--6.4783183256979822e+00
--8.2548708542169233e+00
--2.0867875952608578e+01
--5.6093468155972932e+00
--6.9385233033709071e+00
--2.2851396209868515e+01
--1.0754187299153827e+01
-2.0665659688000989e+01
--3.5255208002004238e+01
--1.3894559389208991e+01
-4.2211115591050941e+01
--4.8583990251536846e+01
--3.1427102570709295e+00
--3.9082181659041009e+00
--2.4050560041789574e+01
--2.6491119027264127e+00
--9.1965881672101002e+00
--1.9868323540948829e+01
--2.6006723407101471e+00
--9.2635628393108238e+00
--1.9308350466055845e+01
--2.6006723407101471e+00
--9.2635628393108238e+00
--1.9308350466055845e+01
--2.3950824646413742e+00
--9.7963474972284956e+00
--2.1142444941048133e+01
--2.9314527276058326e+00
--1.3917367346109157e+00
--2.1445997207366769e+01
--4.1190923853088695e+00
-2.8942345053273034e+01
--3.9457040783107459e+01
--1.8913061178912547e+00
--9.1129709352451655e+00
--1.9837786486093879e+01
--1.3461236727517112e+00
--3.1225790720506281e+00
--2.0006730815650311e+01
--4.7206020454872882e-01
-3.6677826319691718e+01
--4.6118642421470113e+01
-9.0193206808167059e-01
-2.0982257330372455e+01
--4.5080599878245664e+01
--7.9507526328727651e-01
--2.2216530575117028e+00
--1.9954891539528692e+01
--6.5869365207135122e-01
--2.3988162988892148e+00
--2.0248724051422592e+01
--7.7726787130224281e-02
--3.7471334634156045e-01
--2.0609521911964176e+01
--1.5792201958515784e-01
-1.0681274511798562e+00
--2.0056733524480261e+01
-3.8503816423658641e+00
-3.5658331068725673e+01
--4.6885307738893779e+01
-4.2247349700021770e+00
-2.2660720596866870e+01
--4.4400469017323360e+01
-3.7295493119764114e+00
-2.9920878404869846e+01
--4.2092406995655004e+01
-5.2521059773968197e+00
-2.1462678521084772e+01
--4.6737039945925524e+01
-4.9477711420676656e+00
-3.1359778945992463e+01
--4.5309583792898188e+01
-6.8927317662097938e+00
-2.3947488252356198e+01
--4.8759508799359111e+01
-7.9073290740480324e+00
-3.2214441694775722e+01
--4.8169760390018283e+01
-1.3412498066944623e+01
-3.5601465500308734e+01
--5.6678874789962897e+01
--3.5122419542334583e+01
-3.7555855442321935e+01
--5.5700667219028020e+01
--2.7128533127477610e+01
-3.0395580852722048e+01
--4.4937971164507601e+01
--2.6507966551393643e+01
-2.0667297891288378e+01
--5.2523300331665119e+01
--2.5461220946852276e+01
-1.6713930673041386e+01
--5.7586462676424745e+01
--1.3124248463284305e+01
-1.2913998645155077e+01
--4.3546690584080650e+01
--4.7758563350788679e+00
-2.3677336715447506e+01
--3.8701217017882897e+01
--2.1450708126928038e+00
--8.4108270425513574e+00
--2.0857851565658301e+01
--1.0184420929577689e+00
-2.5570955212834637e+01
--4.2416811069184448e+01
--9.5262238665717625e-01
-3.0150401850404954e+01
--4.0118553675060880e+01
--1.1868052976506132e+00
--1.1564631270442989e+00
--2.0911218845649469e+01
--8.0323482352769293e-01
-2.9757262986373822e+00
--2.4921762024927787e+01
-3.1988298947363911e+00
-2.6810833075573111e+01
--4.2132083586615167e+01
-2.7886689336010723e-01
--2.3566514001439169e+00
--1.9609199712039633e+01
-6.0805690248739523e+00
-3.1200732361271079e+01
--4.5228143351695621e+01
-6.9839839645250112e+00
-2.2505110222314787e+01
--4.8029673393256367e+01
-1.0591393901440325e+00
-8.9322570972903503e-01
--2.0106398483460481e+01
-1.1139240881403978e+01
-2.4141307363320749e+01
--5.6569907616549770e+01
--2.4316629683626751e+01
-4.2137354068342873e+01
--4.9060219830354356e+01
--2.4316629683626751e+01
-4.2137354068342873e+01
--4.9060219830354356e+01
--1.4332833672664266e+01
-1.9797611390694996e+01
--3.3494408270563298e+01
--9.8374802656745342e+00
-2.1444787993835437e+01
--3.6994696680600349e+01
--3.6985607818502158e+00
--8.8509470070419152e+00
--2.0592153168996518e+01
--2.8368737734387834e+00
--3.6769473865510047e+00
--2.3891569400344999e+01
--1.4346014780380596e+00
--9.0381445721692746e+00
--2.0161049786577582e+01
-3.2604905975329868e-01
--5.8070704913275364e+00
--2.1558406757381505e+01
-6.3516069688190901e-01
--2.6981084017180201e-01
--1.9768213514614128e+01
-9.0517311294345664e+00
-3.1253285860161775e+01
--4.9286478111120708e+01
-1.0011841746533323e+01
-3.3355899559612062e+01
--4.9961264683481680e+01
--4.2854815637182426e+00
--9.3016011550827837e+00
--2.2472006157120784e+01
--9.2042721021307301e+00
-2.5380109337640064e+01
--3.4977618707513152e+01
--3.8339662362512015e+00
--8.6476607653097872e+00
--2.0932862675763573e+01
--3.8339662362512015e+00
--8.6476607653097872e+00
--2.0932862675763573e+01
--1.3286024306082618e+00
--8.8038335832372194e+00
--2.0230862351571272e+01
--9.1859892571730628e-01
--8.5785127110376465e+00
--2.0468503908644074e+01
-8.5620899813269669e-01
-2.6405152391207348e+01
--3.8699573099250422e+01
--1.9577404482803713e+00
--8.6503987766417385e+00
--2.0476153770302084e+01
-6.8251105638889396e+00
-2.8256179372426292e+01
--4.4797355410103656e+01
--3.4752998662387369e+00
-2.3860100841629837e+01
--4.1606007763603913e+01
--7.0896353337757567e-01
-2.0912902109583229e+01
--4.8346290894517487e+01
--8.5930050445050732e+00
-2.5365338341223676e+01
--3.6819367242377709e+01
--5.3334229178418302e-01
-2.5231279606723160e+01
--4.3416691557291074e+01
-9.0164821356197566e-01
--2.7529219807608039e+00
--1.9620270272595072e+01
--5.8334740936864495e+00
-2.4156341512074363e+01
--3.5735808906644600e+01
--4.1026245076266264e+01
-6.8829720787583469e+01
--7.7732600650333197e+01
--7.0855287177631721e-01
-5.1248502040782235e+01
--5.9866599881210291e+01
--3.8621528543069431e+01
-6.2275188326903816e+01
--7.1203865882926536e+01
--2.2634037450675537e+00
-4.9570099940000979e+01
--5.8413617973099299e+01
-8.9999334108657059e-01
-4.0931101094828357e+01
--4.7902848934284108e+01
--1.8685726659904450e+01
-4.4243838757717647e+01
--5.1233318783551134e+01
--1.0477540273018709e+01
-4.5317827307148164e+01
--5.3289949711600293e+01
--1.0468462422694145e+01
-4.5196093388914854e+01
--5.3386299367932530e+01
--3.9321818476861509e+01
-5.6111403211052568e+01
--6.6862004798026305e+01
--1.8527407984088558e+01
-4.0340980937433407e+01
--4.8410200948004217e+01
--3.7460676248432890e+01
-5.4617911161389166e+01
--6.5567398749250458e+01
--4.4675088009557484e+01
-5.9968406968918657e+01
--7.1826231018926947e+01
--2.1931749159904165e+01
-3.6072688253258285e+01
--4.4290870773231802e+01
--2.1766360661725745e+01
-3.6407671746789831e+01
--4.5235323112816921e+01
--2.2971293331156883e+01
-3.5712604407873201e+01
--4.7053849604337977e+01
--9.3971767638216210e+00
-2.8225329933580745e+01
--3.7454671917831220e+01
--1.5031277511951595e+01
-2.6594634447109438e+01
--3.5246933135380935e+01
--2.6765720331310913e+01
-3.7653425044098803e+01
--5.0686048337967541e+01
--1.5613057455434751e+01
-2.3706538835679360e+01
--3.4056404804733894e+01
-6.6239128992698433e+00
-2.7567730454983103e+01
--4.5676840339350797e+01
--2.6715151674389812e+00
-2.3993758647175678e+01
--3.9350749351875983e+01
-6.4964122270575828e+00
-2.7264691315901089e+01
--4.5601356067776685e+01
--2.2688442680833227e+00
-2.0643907725613577e+01
--3.3848798381466331e+01
--7.2012071590470772e-01
-2.0940278932353028e+01
--3.4638896182324174e+01
-5.4708023273492590e-01
-2.0913640825557870e+01
--3.5342719061623690e+01
-5.2342907419997697e+00
-1.9952645686501750e+01
--3.4071596453895395e+01
-4.8099315385633951e-01
-2.4331465325836966e+01
--4.1702922447771257e+01
-6.7704030888668330e+00
-2.5647830424708815e+01
--4.5128684324956303e+01
--1.2835575735138258e+00
-2.1504878746542094e+01
--3.7541268949717512e+01
-2.9296060592745397e+00
-2.0424689738092297e+01
--3.5884197484633127e+01
--1.1376873234600176e+01
-2.0323700608025401e+01
--3.5173767655542520e+01
-4.2092372853083972e+00
-2.2054273308023895e+01
--4.0049961886271120e+01
--1.0328107237943289e+00
-2.2666744910856931e+01
--4.1090062874040910e+01
--1.3252416964701277e+01
-1.9283585830481535e+01
--3.4360467320143620e+01
--1.1958436258654292e+00
-2.2539371564403371e+01
--4.1282359767885765e+01
-6.8722264489399203e+00
-2.1549529397099345e+01
--3.9982781374054333e+01
-6.8722264489399203e+00
-2.1549529397099345e+01
--3.9982781374054333e+01
-1.2524518067426815e+01
-2.5540301764569961e+01
--4.9282824084821677e+01
-6.4250214595673460e+00
-2.4360082040396740e+01
--4.6651535873066521e+01
-2.5652985576402663e+00
-1.9532836117590342e+01
--3.7289911300701945e+01
-4.1519237945758318e+00
-1.8859089065403960e+01
--3.7033607310012670e+01
--2.4256934142759099e+00
-2.1476450604780432e+01
--4.1984668438949335e+01
--2.4256934142759099e+00
-2.1476450604780432e+01
--4.1984668438949335e+01
-5.2787173237343872e+00
-1.8112106138126773e+01
--3.6743402275881401e+01
--6.9364330479675722e+00
-1.9253602852864436e+01
--3.8793800840460797e+01
-2.7800380094517654e+00
-2.2087702744633869e+01
--4.5395719636975606e+01
-3.7072688878540552e+00
-1.8547872195440725e+01
--3.8116159287470730e+01
--8.3798436632649640e+00
-2.3667547417887949e+01
--4.8497433665320663e+01
-1.1678530125527293e+00
-1.8897749237831153e+01
--3.9572459949737322e+01
-1.0067217368436221e+00
-1.8878258644603623e+01
--3.9578119771409838e+01
--1.9075006043641396e+00
-1.8734156284060361e+01
--3.9223329407272772e+01
--2.0530361494083853e+00
-2.3863772643153197e+01
--5.0586644833409231e+01
--4.8048269089321538e+00
-2.3018836268288712e+01
--4.9505594401341590e+01
--1.8259920021383480e+00
-1.8573629234804294e+01
--3.9897666682532773e+01
-1.1237041170249588e+01
-2.2152491011875309e+01
--4.9515277722747250e+01
-4.5807438691794120e+00
-1.7679101609886033e+01
--3.8754601849646683e+01
-3.1464110868287287e+00
-1.7931178973733342e+01
--3.9485713493506566e+01
-3.3721270798521084e+00
-2.4566892221962711e+01
--5.4851952652299332e+01
-1.5340513907839826e+01
-2.4932714300378041e+01
--5.7827645599903299e+01
--5.5456846295383802e+00
-2.1663232990315080e+01
--4.9260071204549746e+01
-1.3162878863995854e+01
-2.2690101028164563e+01
--5.3547664725424660e+01
--1.0927142678000839e+01
-1.9766429250331825e+01
--4.6104582019633128e+01
--8.1802342216726076e-01
-2.1011867102208491e+01
--4.9032868166754511e+01
--8.1802342216726076e-01
-2.1011867102208491e+01
--4.9032868166754511e+01
--8.5628638252343070e-01
-1.7727566532223033e+01
--4.1970187015242445e+01
--4.5112961934861806e+00
-2.0690128585780155e+01
--4.9629934340973534e+01
--7.3210736879641800e+00
-1.9126324249625391e+01
--4.6596196350230372e+01
--7.0346520370756549e+00
-1.7318687791885797e+01
--4.1925218820517429e+01
--9.6025565632325289e+00
-1.8752164992481877e+01
--4.5747427852933612e+01
-6.5923487883424770e+00
-2.2058799043676391e+01
--5.4223246149782433e+01
-3.8027356087105124e+00
-2.2877424250546284e+01
--5.5990966432457775e+01
--3.1969055448259240e+00
-2.0665262422629826e+01
--5.0380380763132116e+01
-3.7056810731943779e+00
-2.2772492159149888e+01
--5.6057846970669168e+01
--4.4057908270843162e+00
-2.0258337218839817e+01
--4.9974481602343047e+01
-3.4556035413704520e+00
-2.2644201952833072e+01
--5.6279254115666234e+01
--5.0987479812669612e-01
-2.1066491007416303e+01
--5.2317999994281749e+01
-7.6308760117575236e+00
-1.7654090493096589e+01
--4.4243632463100987e+01
-1.6360990825691186e+00
-1.7007312390771084e+01
--4.2493486231787259e+01
--7.1478663872274577e+00
-1.8461495686598646e+01
--4.6765618918579321e+01
--1.0626506453238816e+01
-1.8108893593835898e+01
--4.5836700639796007e+01
--3.9774350450410632e+00
-1.8429273325212613e+01
--4.7085026497855495e+01
--7.8653251544804459e-01
-2.0632347210946794e+01
--5.2339414358437516e+01
-1.4562254695622261e+01
-2.2757632533025372e+01
--5.9063097571729820e+01
--1.7586685895265306e+00
-1.7125192395666975e+01
--4.3419373436969138e+01
--1.0132720160758872e+00
-1.9557142216582257e+01
--4.9899508150075469e+01
--4.1250165984694256e+00
-1.8592699849602454e+01
--4.8879537175546169e+01
--7.2549942449819245e+00
-1.8737369982522200e+01
--4.8546830198842144e+01
--2.4710222044782824e+00
-1.8735033957107866e+01
--4.9473802941979557e+01
--1.2326517257446277e+01
-1.4914233934888546e+01
--3.8867897697910692e+01
-1.1685707786866079e-01
-2.0243087143123315e+01
--5.3749342001730156e+01
--3.0888892782631543e+00
-1.8531669262196523e+01
--4.9088144458637842e+01
--3.5155826005564026e+00
-1.6519186081777903e+01
--4.3502393947578469e+01
--2.4015765802155586e+00
-1.7641109754600450e+01
--4.7137630376239564e+01
--1.3904623257768142e+01
-1.7913459417997988e+01
--4.7657813260825350e+01
--1.3904623257768142e+01
-1.7913459417997988e+01
--4.7657813260825350e+01
--4.5719742490560851e+00
-1.7938019432661687e+01
--4.8984347558607247e+01
--5.1278337007524017e+00
-1.7685079860353031e+01
--4.8539366757541423e+01
--3.6280050549050036e+00
-1.8053039763938074e+01
--4.9756180339862404e+01
--4.1197173853147566e+00
-1.7423850470502419e+01
--4.8037350840864853e+01
-1.7352981098575757e+00
-2.0382779786561255e+01
--5.5861304236990087e+01
--9.8428724787157105e+00
-1.7587731641091345e+01
--4.7941325324568524e+01
--1.2488693169509208e+01
-1.4474089456969198e+01
--3.9382731916172176e+01
--3.1301886469161038e+00
-1.8619802683749565e+01
--5.1252329542373708e+01
-4.0487876319004616e+00
-1.7089704853360129e+01
--4.7375717734186068e+01
--8.3741000122237814e+00
-1.7641862877257381e+01
--4.8558926618856852e+01
--1.3440247102515583e+01
-1.7336692167543138e+01
--4.7770469453580539e+01
--8.6043984949695975e+00
-1.7342322263307494e+01
--4.8404533037929532e+01
--1.4665041671823178e+00
-1.7775862038707327e+01
--5.0868968272496154e+01
-2.0049940226974017e+00
-1.9326291867472396e+01
--5.7325042566801187e+01
--5.8923344025506914e+00
-1.6041275644980537e+01
--4.8451432502556884e+01
--1.5623285162230001e+01
-1.3457950575760512e+01
--4.0536025488840004e+01
--1.5044633107708249e+01
-1.2910420043944836e+01
--3.8370297414585366e+01
-3.6969037671697564e+00
-1.6116347247553577e+01
--4.8876946723250299e+01
--5.6763700589511201e-01
-1.7511684291288077e+01
--5.3679944527687098e+01
-4.2972847150247642e+00
-1.6831915640620952e+01
--5.2929187996524128e+01
--1.1421911543091838e+01
-1.3613408604879288e+01
--4.2541695381055654e+01
--1.5006316985041101e+01
-1.3034810346987777e+01
--4.1300724612382929e+01
--1.4138393543323906e+01
-1.2648126176793513e+01
--3.9880717780536173e+01
--1.4281921711734437e+01
-1.3080368441538717e+01
--4.1356025709695864e+01
--1.5755449911176068e+01
-1.2935946055586374e+01
--4.0826312017356258e+01
--5.3922724182990818e+00
-1.4740877561493305e+01
--4.7312691006416451e+01
--1.5862514544411864e+01
-1.2713092117621992e+01
--4.1139361280701344e+01
--7.1051661491960205e+00
-1.0238045867157803e+01
--3.4807054445124251e+01
-2.2058838082486207e-01
-1.5169252911664111e+01
--5.3153010883465541e+01
--4.2627083136991386e+00
-1.4243790309636559e+01
--5.0095277207509639e+01
--4.1936520539522473e+00
-1.4034926452147378e+01
--4.9390478550387378e+01
--6.5208296522065168e-01
-1.4914703350037103e+01
--5.3285440896519717e+01
--5.2608407632363630e+00
-1.4158667914069063e+01
--5.1256663911073808e+01
--5.2608407632363630e+00
-1.4158667914069063e+01
--5.1256663911073808e+01
-5.5636849961664128e+00
-1.3564903899065287e+01
--5.0757735208845752e+01
-6.0924214897366866e+00
-1.4440283589095381e+01
--5.4666858882422432e+01
-5.9299536809807085e+00
-1.3484158090841758e+01
--5.1328500672559720e+01
--9.7818853703263748e+00
-1.1959490080986694e+01
--4.5466951236278227e+01
--1.3479831527025045e+01
-1.1392589764698652e+01
--4.2996446124067468e+01
--1.2165411344912796e+01
-1.1771046291841126e+01
--4.4774947192084618e+01
--1.2311565370689269e+01
-1.1580798307530062e+01
--4.4051651503486589e+01
--1.5490906944979351e+01
-1.0684953909048899e+01
--4.0867621816199289e+01
--1.0005513403800638e+01
-1.1828324715933132e+01
--4.5794798940959019e+01
--1.6694659834169155e+01
-1.0773688641533330e+01
--4.3416921377698387e+01
--1.6863849627553009e+01
-1.0447738897517771e+01
--4.2083656658161900e+01
--1.7001170294211999e+01
-1.0297739493456275e+01
--4.2005652666490477e+01
-1.1688882510646286e+00
-1.0039759228510594e+01
--4.1123655046471406e+01
--1.6292833918898893e+01
-1.0246346643628769e+01
--4.2508832675640122e+01
--7.7584343006280543e+00
-1.1807864093900463e+01
--4.9236926460958664e+01
--1.5502330982360091e+01
-9.9458674706988752e+00
--4.2380261636992927e+01
--1.3014869511250536e+01
-1.0524664157909090e+01
--4.5381214682418609e+01
--1.5637688514904811e+01
-9.7733241565078917e+00
--4.3223808618920529e+01
--8.5975247416816707e+00
-8.4676952270653025e+00
--4.5102251082112410e+01
--1.6227942709904328e+00
-7.5263847864790785e+00
--4.2995297992429869e+01
--2.1745498637166132e+00
-6.4847357318671612e+00
--4.1245052898654819e+01
--4.7004202147714125e+00
-6.6543439436092697e+00
--4.2653181506270023e+01
--5.2799883638734366e+00
-6.3460519557570523e+00
--4.1069042809152840e+01
-2.7876496013534289e-02
-3.3358192137702578e+00
--2.2813387271565258e+01
--1.7249149990551917e+00
-4.2948863642139949e+00
--2.9205569845923964e+01
--1.9127354576853126e+00
-3.4320799876990149e+00
--2.3324511840524327e+01
--1.1703317046955204e+00
-3.9968554534340943e+00
--2.8054244014683398e+01
--3.1396049289479775e+00
-5.1966733883029335e+00
--3.6818755724887666e+01
--2.1964913001594426e+00
-3.0978423361320617e+00
--2.2916871552891198e+01
--1.6452081054554946e+00
-3.5302191855526939e+00
--2.7104396858662284e+01
--3.7295273973457159e+00
-5.1105545872038505e+00
--3.7483370489185305e+01
--5.3227139040068594e-01
-2.8581341720980404e+00
--2.2835230267991953e+01
--2.0478506383476796e+00
-3.8318780561562695e+00
--2.9069268609053630e+01
--2.5413693625572842e+00
-2.9209511489598170e+00
--2.2815592955194184e+01
--2.6745173488424188e+00
-3.5919890425439402e+00
--2.8591881927612469e+01
--1.1033354115292739e+00
-4.4639596528466194e+00
--3.3070556079109238e+01
--2.4325903162853204e+00
-2.8589144471809473e+00
--2.2677018165913427e+01
--1.8656263277438865e+00
-3.4538335012147647e+00
--2.7359246853332618e+01
--1.9538309631568593e+00
-3.3235894436953242e+00
--2.6772651746508814e+01
--1.1460171327809672e+00
-2.8007830118849943e+00
--2.3275162008989732e+01
--1.2836058038704921e+00
-2.7288831330875980e+00
--2.3231648539236520e+01
--8.8254258170013316e+00
-4.7811395334802196e+00
--3.8571869740065814e+01
--1.7784366104714222e+00
-3.1869580315166570e+00
--2.7002675122748101e+01
--1.8445408871068696e+00
-3.1131370755587491e+00
--2.6896066554174528e+01
--3.1230839968277926e+00
-3.1112518142573204e+00
--2.7822541883253315e+01
--1.8422077719787793e+00
-2.9965102456481176e+00
--2.6725064010790820e+01
--3.2869122513691238e+00
-2.9343052485797725e+00
--2.7316359657545409e+01
--3.2112698229800456e+00
-2.8738184045239494e+00
--2.7263455620428644e+01
--3.2112698229800456e+00
-2.8738184045239494e+00
--2.7263455620428644e+01
--2.8461331526349762e+00
-2.9101573934648530e+00
--2.7169877518715417e+01
--2.8324737112597052e+00
-2.2741350679111374e+00
--2.1978749824323039e+01
--2.2513683336631343e+00
-2.7437208871618499e+00
--2.6446024977881358e+01
--5.0267980612756913e-01
-2.1878135817749000e+00
--2.2594348612811242e+01
--3.3860198709736160e+00
-3.7463630636569896e+00
--3.4805625707059200e+01
--3.0435714822768309e+00
-4.1110319826527899e+00
--3.8123699153913464e+01
--2.9469327758044774e+00
-2.8032523087507464e+00
--2.7530578148224702e+01
--2.4424901616077515e+00
-2.5502423898199034e+00
--2.5603396839247853e+01
--1.3632152869653322e-01
-1.9164070241197100e+00
--2.1539613080924454e+01
--3.8393990184196531e+00
-2.2665101263964873e+00
--2.3815600613053061e+01
--2.4595124826448509e+00
-2.2392189424645794e+00
--2.5329925702388906e+01
--2.4283803140696905e+00
-2.3830213910876101e+00
--2.5993475892912450e+01
--1.0960001647582580e+01
-3.1655874853863137e+00
--3.6595430825182653e+01
--2.6383642802493172e+00
-2.0018136535816065e+00
--2.5065203541627120e+01
--5.8384871451395370e-01
-1.5793572399666471e+00
--2.1926191530423047e+01
--6.6142050685778031e+00
-2.9402183056202289e+00
--3.6360503062543003e+01
-1.3176154984627717e+00
-1.4579188386747386e+00
--2.1148154851217146e+01
--1.4012150595589214e+01
-7.2000566069391496e+01
--7.5775285893584268e+01
--2.9675877140501811e+01
-6.9785186531084150e+01
--7.5005629355918515e+01
--3.3204204216257970e+01
-6.7843537948716389e+01
--7.3305993012040062e+01
--3.2319743006021788e+01
-6.8337588515573927e+01
--7.3679665722782858e+01
--3.2319743006021788e+01
-6.8337588515573927e+01
--7.3679665722782858e+01
--3.3976950342119082e+01
-6.9349018079622098e+01
--7.4805085710028152e+01
--3.1225033985298673e+01
-6.6027889798777665e+01
--7.2016440144850733e+01
--6.6468233788783371e+00
-6.3577268821144258e+01
--7.0909485264238128e+01
--7.7950829608262229e+00
-6.2625013288172241e+01
--7.0156108898454946e+01
--2.7704703662155062e+01
-6.2116111634156461e+01
--6.9181415557126115e+01
--2.6390235738447171e+01
-6.1475095364183190e+01
--6.8887687432061298e+01
--2.8535262811389789e+01
-6.1253766207365132e+01
--6.8558968986970669e+01
--3.7125611889010230e+01
-6.9833297090109923e+01
--7.8934004827166305e+01
--3.8282384942402032e+01
-6.7991133653270836e+01
--7.7503070158057085e+01
--9.5920731825190604e+00
-4.7784655963791550e+01
--5.5207820650104459e+01
--4.9596641910497388e+00
-4.8809439594949538e+01
--5.6760245527621301e+01
--2.2172218100082674e+01
-4.3410101840713679e+01
--4.9597202311296854e+01
--1.3470677796978171e+01
-4.5939788309399987e+01
--5.3022922752300737e+01
--1.3743625337297418e+01
-4.5609267742793755e+01
--5.2911968659337013e+01
--5.0654483011762812e+00
-4.8184701170258492e+01
--5.6702291895446763e+01
--1.0864738043185890e+01
-4.6125114566523763e+01
--5.3566523878177563e+01
--1.1879974754305771e+01
-4.5717943722745161e+01
--5.3310356939801061e+01
--1.1879974754305771e+01
-4.5717943722745161e+01
--5.3310356939801061e+01
--3.6627076788649873e+01
-6.0731874804463658e+01
--7.0040092794937806e+01
--6.6521943061184770e+00
-4.6889494196779175e+01
--5.5156406251180123e+01
--2.2122613582715807e+01
-4.2872877434586762e+01
--4.9289580781807253e+01
--1.9306157616654122e+01
-4.3896282441548117e+01
--5.0775681895438034e+01
--5.8264208180934887e+00
-4.7026764563089642e+01
--5.5420380282977021e+01
--9.2628342014437930e+00
-4.6060657222889851e+01
--5.4248742871874818e+01
--1.0893140721216305e+01
-4.5278832018053407e+01
--5.3249489569223179e+01
--3.8576728514459624e+01
-5.9616687189186990e+01
--6.9284889344557129e+01
--3.8754896282248509e+01
-5.9154218910592881e+01
--6.9200446724791746e+01
--1.8691805995413230e+01
-4.3033116318435937e+01
--5.0457888134835500e+01
--1.4744277237779245e+01
-4.3521013159858271e+01
--5.1442912228657406e+01
--1.1381083112450529e+01
-4.3748737095033285e+01
--5.2280905829794200e+01
--1.8890467297251842e+01
-4.1842413618832659e+01
--4.9373071252162468e+01
--1.5099770322720723e+01
-4.2668853782723630e+01
--5.0818950503173596e+01
--1.4343058251979391e+01
-4.2751722650592647e+01
--5.1043031637635735e+01
-3.8564604683658525e+00
-3.7795127458344403e+01
--4.5900461584511852e+01
--5.6534118294535229e+00
-4.4868863512639734e+01
--5.4551701254180742e+01
-7.0535598794139354e+00
-3.7806666382589370e+01
--4.6339422646764604e+01
-7.1993730198791779e+00
-3.8597568472956773e+01
--4.7466044891169595e+01
--3.7915678746241831e+01
-5.7878886249206275e+01
--6.8337052867499708e+01
-9.8720265136102536e-01
-3.6102965519330652e+01
--4.3788120995987008e+01
--3.8267323136916460e+01
-5.6245566287272396e+01
--6.6860987295636704e+01
--3.7737737793893757e+01
-5.5420738167896602e+01
--6.6271821265695721e+01
--3.9818464663941114e+01
-5.5452636035927817e+01
--6.6244766459737818e+01
--3.8483282352938993e+01
-5.4474263691249021e+01
--6.5523342033469547e+01
--3.8999133651020578e+01
-5.4599742587512118e+01
--6.5689427188681023e+01
--1.3955454610377206e+01
-4.1108725818946681e+01
--5.0168314266175940e+01
--1.6370918131107124e+00
-3.2262136283369550e+01
--4.0809533608351991e+01
-2.4245596483042280e+00
-3.2063035588066789e+01
--4.1071870034020982e+01
--2.2730999576019922e+01
-3.5770789109652263e+01
--4.4652146463460220e+01
--1.5544962690904333e+01
-2.8519311097362888e+01
--3.5833050765942289e+01
--2.2404092928920466e+01
-3.6135187492828386e+01
--4.6733242506810001e+01
--2.3191088867337886e+01
-3.5054530164101308e+01
--4.5782930249657625e+01
--9.4671324260224718e+00
-2.8021223982369882e+01
--3.7113570408026220e+01
-7.0759216504395077e+00
-3.2406033022643697e+01
--4.5562680076571198e+01
--5.5274038143983489e+01
-6.0965068167674580e+01
--8.2816441763181103e+01
--2.3077570662989288e+01
-3.4580766932840980e+01
--4.6757232503247906e+01
--5.7292023857114152e+01
-6.3437033503977929e+01
--8.5963308200521126e+01
--5.4527636600505289e+01
-6.0160004057536000e+01
--8.2055879428290865e+01
--2.8151801653517296e+01
-3.4056750781588292e+01
--4.9028735971137650e+01
--1.5535710307455538e+01
-2.3325209196441161e+01
--3.3964271317101904e+01
-5.9893416722095489e+00
-2.8404942852756704e+01
--4.3584269330741193e+01
-4.4991650479888303e+00
-2.7793333953116552e+01
--4.2556863388950688e+01
-5.0999301915415316e+00
-2.6231038849986650e+01
--4.3115153247657766e+01
--1.7538191075317318e+01
-2.4072889514748571e+01
--3.7620351785594679e+01
--3.8066506392834309e+00
-2.3227512596593414e+01
--3.9072623926748520e+01
-6.9021274747596575e-02
-2.3356644148891114e+01
--4.0607245764548694e+01
--2.5661638057708127e-02
-2.2759354428094845e+01
--4.1367165965880758e+01
--1.1533888873717222e+01
-1.9172770667856120e+01
--3.4014429317452198e+01
--1.1533888873717222e+01
-1.9172770667856120e+01
--3.4014429317452198e+01
--1.6489824461241444e+01
-1.8281478515550745e+01
--3.2048970494700242e+01
-5.3606226397471541e+00
-1.9120337229100709e+01
--3.5137169057966133e+01
-8.9229473529383496e-01
-2.2664797040985288e+01
--4.2409756089736725e+01
-1.5067942940400771e+00
-2.3149860091282370e+01
--4.3646885751262452e+01
-5.6246857153152128e+00
-2.1476719858948158e+01
--4.0674587909947995e+01
-8.6868427254188596e-01
-2.1153260576851650e+01
--4.0146309299066168e+01
--2.3512858402180009e-01
-2.2248536862506871e+01
--4.2692308103911003e+01
--2.8875935041273193e+00
-2.1324768558126973e+01
--4.1014171215016027e+01
--2.8696778518962294e+00
-2.1231577821122190e+01
--4.0780912143436197e+01
--1.0373864911276952e+01
-1.9199922846788031e+01
--3.6473896173050207e+01
--1.1138158814744369e+01
-1.8637316347306648e+01
--3.5368350432950145e+01
-5.4809703735170716e+00
-2.4745692620829871e+01
--4.8580135099775895e+01
-4.5979280020668485e+00
-1.8977697665900674e+01
--3.6998790736763382e+01
--1.0309305333904319e+01
-1.8718418961359568e+01
--3.6193629481109767e+01
--7.1360805353019874e+00
-1.9918019740257154e+01
--3.8799300631993333e+01
-6.3183933587304777e+00
-2.3397341274645918e+01
--4.6781688275484285e+01
--7.1965269355497785e+00
-1.9387275703701668e+01
--3.7956838174997287e+01
-6.0730180284297495e+00
-2.3425338798462775e+01
--4.6817655593783506e+01
-6.4178591772520193e+00
-2.2996713479516448e+01
--4.5990089245698400e+01
--2.4161506335378378e+00
-2.1242367114960658e+01
--4.1984923308123150e+01
--4.8094332067085652e+01
-4.2106900897163705e+01
--8.2362345859938046e+01
-5.0513302713787036e+00
-2.2511201331306101e+01
--4.5852359041615507e+01
--7.3129803982500743e+00
-1.9611304052811857e+01
--3.8997200982611979e+01
--7.3121451167805471e+00
-1.9687308611871302e+01
--3.9114869478394056e+01
--1.0464686298701389e+01
-1.8599360443247988e+01
--3.6994805629052046e+01
--1.0464686298701389e+01
-1.8599360443247988e+01
--3.6994805629052046e+01
-2.7115450148591278e+00
-2.2300122568911224e+01
--4.5663945088808532e+01
-4.8824970647365058e+00
-1.8342340690803788e+01
--3.7549985091078177e+01
-9.9438217678226604e-01
-1.8977952428423386e+01
--3.8683655800733554e+01
--2.1354893745093158e+00
-2.0631746458932916e+01
--4.2200382509501232e+01
--7.8300189479649225e+00
-1.8858029410250840e+01
--3.8210745519295614e+01
-1.3342922245479747e+00
-1.9103340684584122e+01
--3.9091307465149683e+01
-2.3098380891020440e+00
-2.0475155464356686e+01
--4.2402888555957887e+01
--1.3005690008341309e+00
-1.9792052279886665e+01
--4.0918614770293381e+01
--5.8873025198433284e+00
-1.9228840534711370e+01
--3.9708203232526621e+01
--2.5130737422787806e+00
-2.3759942630420948e+01
--5.0106018924297437e+01
--8.7271994042658196e+00
-1.9266192056262270e+01
--4.0340688177641496e+01
--1.4361014689690248e+00
-2.0212689773815715e+01
--4.3161332417844129e+01
-1.1354085603854713e+01
-2.2851349383280805e+01
--5.0219595201996491e+01
-6.6025907689224734e+00
-2.3510631341547793e+01
--5.1776193103661861e+01
--1.1815250860383715e+00
-1.9744861424544105e+01
--4.4726828655751760e+01
--9.1417956875505766e+00
-1.8260971456913932e+01
--4.0981970604895700e+01
-5.2992752767034137e+00
-2.1050726588871381e+01
--4.8891429807767395e+01
-4.9756063091846610e+00
-2.0317434653307686e+01
--4.8357243763195484e+01
-1.0495413152054780e+01
-2.5134238485099580e+01
--6.0339552915949866e+01
-8.5654649089438148e+00
-2.5337545400787899e+01
--6.0573723472542504e+01
--5.4128866364234398e+01
-3.5622615604196461e+01
--9.2156890798429146e+01
-9.8494423887689138e+00
-2.0896594112020587e+01
--5.5842227209226003e+01
-1.3948597278008537e+01
-2.0826526729077585e+01
--5.6409305441965863e+01
-1.8405934453384472e+00
-1.7806018008923374e+01
--4.8150659062341774e+01
-9.3893812143243700e+00
-1.9599239092679152e+01
--5.3447326064190499e+01
-4.0428489982768196e+00
-1.9486971838101940e+01
--5.4109902629976517e+01
-1.5577220932193474e+00
-2.0075522157115362e+01
--5.5359359941847757e+01
-1.0923550215328842e+01
-1.9194973246957268e+01
--5.4459471481346206e+01
--1.4706306611909763e+01
-1.3676031409027988e+01
--3.7699877203307445e+01
--1.6341174132192979e+01
-1.4030608921644429e+01
--3.8403234079089096e+01
--3.5950279541200389e+00
-1.5984304666444592e+01
--4.5801666029529414e+01
--4.7987298885157981e-01
-1.6427132828642389e+01
--4.8535572871808064e+01
--1.1757485891810283e+01
-1.5810696028167952e+01
--4.6980787445242051e+01
--1.4406244435487874e+01
-1.3545800729017129e+01
--4.0188525947505518e+01
--1.4470617179295832e+01
-1.3534227783878842e+01
--4.0628469212158528e+01
--4.5627130255065973e+00
-1.6346413771810546e+01
--4.9877395427586691e+01
--1.4417330912513307e+01
-1.2947583341321785e+01
--3.8958681293003821e+01
--1.4468891382574043e+01
-1.2870701791404747e+01
--3.9235599059551120e+01
--1.5742718931083427e+01
-1.3067765963451720e+01
--4.0278337366952030e+01
--1.5742718931083427e+01
-1.3067765963451720e+01
--4.0278337366952030e+01
--3.4824554334442520e-01
-1.6619922830839986e+01
--5.2639071830713846e+01
--3.4408199191394889e-01
-1.6658710373045579e+01
--5.2697379931827705e+01
--1.0209536971107212e+01
-1.3872410793219494e+01
--4.4124113024420801e+01
--1.1403791323036000e+01
-1.3737179787799633e+01
--4.6031880437397298e+01
--1.5338736036912046e+01
-1.1859428499886565e+01
--4.0651131540606578e+01
-3.5691460821568355e-01
-1.5108504410595454e+01
--5.2725487458467136e+01
--5.7796859159807470e+00
-1.3434276651609412e+01
--4.8539708229436364e+01
--5.8440418577732780e+00
-1.3572023133224034e+01
--4.8824964766256343e+01
--1.6742383219298542e+01
-1.1219792903564311e+01
--4.1483485855375108e+01
--9.5598234049435877e+00
-1.1858300651981873e+01
--4.5787336401929437e+01
--9.5862981874309821e+00
-1.1998509430512931e+01
--4.6246338586299011e+01
-2.1624829119262428e+00
-1.0524764312163052e+01
--4.0792322193227207e+01
--1.7269490937820521e+01
-1.0295990363028601e+01
--4.2501738460557831e+01
--1.6790817849949857e+01
-1.0072761679964509e+01
--4.2910731522282447e+01
--1.5664837043555691e+01
-9.9587224258501781e+00
--4.2576602267531641e+01
--1.7438931036450104e+01
-1.0239893938029772e+01
--4.3464029082068102e+01
-5.4715312969833780e+00
-1.0933142061115513e+01
--4.8162990160706691e+01
--1.5562744902969593e+01
-9.6322548228787142e+00
--4.2687260616984354e+01
-4.9428363083137459e+00
-1.0851746724132472e+01
--4.8186967851637426e+01
-1.7871315067005502e+00
-8.1158664588657423e+00
--3.6621139689508816e+01
--1.4192904216971048e+01
-9.7337444830175333e+00
--4.8149771574695698e+01
--1.4965331671912770e+01
-8.6404399665103693e+00
--4.5635236006206945e+01
--4.2667751837373386e-01
-3.6568712962696921e+00
--2.1133364229904164e+01
-4.4118693575770501e-01
-4.2634196623087641e+00
--2.4501230984197282e+01
--3.2840773711340498e-01
-7.5247941200261721e+00
--4.2672092446945356e+01
--1.2251276092291659e+00
-7.9712482630775581e+00
--4.5532872575220161e+01
--8.0132612092797639e-01
-7.2617917014670876e+00
--4.2315457173737165e+01
--2.4208544585590563e-01
-3.8512496161657230e+00
--2.4011948549118461e+01
--2.0503861123752762e+00
-2.9691645028989488e+00
--2.0450508651694346e+01
--9.9607707775056883e-02
-3.2735713781555824e+00
--2.3290404465313227e+01
--2.0921263213473860e+00
-3.4105688155379834e+00
--2.3413155716856174e+01
--5.8608469954987985e+00
-6.1092905193956062e+00
--4.0734743400423753e+01
--1.3051693872599726e+00
-3.9444199949630390e+00
--2.8021453873625759e+01
--1.3175853724681876e+00
-3.8913324882218499e+00
--2.7948960162145404e+01
--1.4389018289928914e+00
-3.7089051623402702e+00
--2.7624865690679506e+01
--1.3008129915435548e+01
-5.6887123953826446e+00
--4.1900675256247212e+01
--1.4583052461294548e+00
-3.6507871202680238e+00
--2.7560415286799635e+01
--8.3733976925419096e-01
-3.0386326458914934e+00
--2.3364935129771442e+01
-4.8246705220237676e-02
-2.9324483050648360e+00
--2.2563011146998807e+01
--1.3877161437279870e+01
-5.3083166517768721e+00
--4.0681364520924667e+01
--1.4015860933144253e+01
-5.0216949547754082e+00
--3.9335188407967806e+01
--1.6700385088227652e+00
-3.2829364535804135e+00
--2.7072779954131363e+01
--1.2846908614407020e+00
-2.4797156624465972e+00
--2.2944485836536312e+01
-5.4918295272824580e-01
-2.3193406184130878e+00
--2.2425525718157374e+01
--1.6587911865889858e+01
-4.1848647381986295e+00
--4.1107515766075267e+01
--2.1660064685376685e+00
-2.4491353149821258e+00
--2.5655883129589888e+01
--2.9094501708531828e+00
-2.6204443414388314e+00
--2.7209095169829691e+01
--5.7134552981394715e-01
-1.8616786398084262e+00
--2.1606655018537587e+01
--8.0668755296413668e+00
-6.2396025821844141e+01
--6.9542527103115447e+01
--9.3355440524381201e+00
-6.1914594054487182e+01
--6.9382208388674727e+01
--2.9933975954454869e+01
-6.2142989202634745e+01
--6.9182078185341012e+01
--2.1230981753170286e+00
-5.1482196414855700e+01
--5.9098096159983726e+01
--1.2616951976879951e+01
-4.6588100117045435e+01
--5.3835279441930396e+01
--2.0389644451598077e+01
-4.3716458385252764e+01
--5.0026593888140141e+01
--2.0389644451598077e+01
-4.3716458385252764e+01
--5.0026593888140141e+01
-1.1790633334382892e+00
-4.1043781656553620e+01
--4.8110365855290496e+01
-7.0359688027756384e+00
-3.8350980944619216e+01
--4.5222430387088004e+01
--1.3221951516282981e+01
-4.5297463656161646e+01
--5.2831998034511507e+01
--1.3926388642489670e+01
-4.5172021165567045e+01
--5.2660926324829354e+01
--1.8903125854937279e+01
-4.3863998380171040e+01
--5.0732982040331585e+01
--8.6204333071133075e+00
-4.6373631178065523e+01
--5.4353044094367810e+01
--1.9250343604991773e+01
-4.4381486727024232e+01
--5.1173446379857346e+01
--1.6594031858171874e+01
-4.4268923665511821e+01
--5.1539741976511692e+01
--2.2095287630797721e+01
-4.2482851636400248e+01
--4.9032421154175388e+01
--1.8759378463212453e+01
-4.4176251589622211e+01
--5.1076938175727335e+01
--7.6910409825458173e+00
-4.6066348503321215e+01
--5.4685840974175257e+01
--1.0679754016034154e+01
-4.4861488694014277e+01
--5.3085242546952209e+01
--2.1510161020828583e+01
-4.2090674289621994e+01
--4.8940025647942527e+01
--1.7641665215686412e+01
-4.3323672957833971e+01
--5.0871298638514475e+01
--2.3052603938109055e+01
-4.2159646464697325e+01
--4.9081675416440305e+01
--1.4314446901880187e+01
-4.3374610337964292e+01
--5.1354196157691327e+01
--8.4235143232598269e+00
-4.4724508928177883e+01
--5.3228453543091206e+01
-4.4312127841212838e+00
-3.8237651936748819e+01
--4.6082915713523391e+01
--1.6334587012107299e+01
-4.2923021842283930e+01
--5.0808881377870783e+01
--2.2354767166778213e+01
-4.1468352375918712e+01
--4.8588819239333382e+01
--1.6999754037376455e+01
-4.2696443253619087e+01
--5.0512603802838044e+01
--2.6658643933704258e+01
-5.1356218079311567e+01
--6.1247973898523341e+01
--2.0671221135116411e+01
-4.1223022063233543e+01
--4.8763436076747944e+01
--2.2101550566479940e+01
-4.1028874478434474e+01
--4.8506226470380447e+01
--1.6365492674142484e+01
-4.2156460168021795e+01
--5.0320265691007343e+01
-1.9837319826855643e-01
-3.5537708683827702e+01
--4.3334994898055129e+01
--1.4287898804680871e+01
-4.1556327434424695e+01
--4.9948493486547441e+01
--1.4788069075619884e+01
-4.2006345560133006e+01
--5.0562642507142336e+01
--1.4788069075619884e+01
-4.2006345560133006e+01
--5.0562642507142336e+01
-7.2657747342735561e+00
-3.7762859334975154e+01
--4.6616382504419647e+01
--1.7846423591983235e+01
-4.1279419722610179e+01
--4.9647447149010638e+01
--1.7468617231260460e+01
-4.1315125351346182e+01
--4.9700736215020342e+01
--1.3589456059606675e+01
-4.1874097692867871e+01
--5.0697589277948552e+01
--1.3155934133144410e+01
-4.1743989355739515e+01
--5.0624240584705795e+01
--1.4140098977363625e+01
-4.1493229759391710e+01
--5.0331514659444743e+01
-2.6446869610725585e+00
-3.6201090315019265e+01
--4.4901762185259692e+01
--1.7503061193926957e+01
-3.2485579961908201e+01
--3.8643003876583450e+01
--1.6820992192607321e+01
-4.0679469193934601e+01
--4.9341117870932862e+01
--1.2266336360805743e+01
-4.1520792359615456e+01
--5.0751504784518765e+01
--6.4392214075753440e-01
-3.4500867771787554e+01
--4.2358514637164333e+01
--1.3557364752930493e+01
-4.0885966213420446e+01
--4.9938803794484372e+01
--1.3702173595612347e+01
-4.0456292903762481e+01
--4.9728675577216883e+01
--2.2234238475118143e+01
-3.7528837152760680e+01
--4.6458894870969601e+01
--1.8401313328642139e+00
-3.2173799593362986e+01
--4.0938219811084323e+01
--2.3245229646514598e+01
-3.5928808023615638e+01
--4.5171522010317815e+01
--1.4247784918430677e+01
-2.8792301147867374e+01
--3.6178505375992152e+01
--1.3798432756220362e+00
-3.1326149155622428e+01
--4.0792792857202642e+01
--2.2138085425289972e+01
-3.6536731510079044e+01
--4.6337602463485418e+01
--2.1339227118106688e+01
-3.5611747911366777e+01
--4.5212567337640550e+01
--2.2615228153889422e+01
-3.5244644657863525e+01
--4.5053437499053921e+01
--1.4979985109537092e+01
-2.7071417540260736e+01
--3.4848942019095631e+01
-7.2675056439546806e+00
-3.3660346776726946e+01
--4.5719581841486090e+01
--9.3426645250760942e-01
-2.9638283210137114e+01
--4.0170692064453128e+01
--2.8373339737756378e+01
-3.9864966502795497e+01
--5.2908630368660781e+01
--2.8400328951476013e+01
-3.9516776426144368e+01
--5.2778621444094135e+01
--2.7379326164189663e+01
-3.8013221414361155e+01
--5.0873383580967399e+01
--1.0209527393129584e+01
-2.6966554809776948e+01
--3.6501814931624082e+01
--4.6770890760986122e-01
-2.8226018693227509e+01
--4.0414715062405740e+01
--1.7186611803955781e+01
-2.5204544413148412e+01
--3.5197674297869717e+01
-2.1896033088069533e+00
-2.7726251262040684e+01
--4.0512704147784817e+01
--2.7402086079294413e+01
-3.4314295634932812e+01
--4.8858621979866342e+01
--2.8300869352667799e+01
-3.4976236030769641e+01
--4.9667322954628531e+01
--2.8844553770833585e+01
-3.3409183278809806e+01
--4.8841552119053986e+01
-1.0949297352555995e+01
-3.0735460093764907e+01
--4.7483352068697165e+01
--7.9619359660202749e+00
-2.3451992890935443e+01
--3.5877846244735530e+01
-3.0098651943346111e+00
-2.0723935592979291e+01
--3.4971118795158560e+01
-4.9172105987068555e+00
-2.5425114522062405e+01
--4.3661600882569267e+01
-7.2962237385291475e+00
-2.7144836989938966e+01
--4.6981904515953751e+01
--1.0338204800671265e+01
-2.0720894341918633e+01
--3.4888881131528812e+01
-6.7903649442571172e+00
-2.5675143252921398e+01
--4.5413982619006894e+01
--8.2465119271762291e+00
-2.0505323482030914e+01
--3.5334525114263059e+01
--1.2901702194391129e+01
-1.9052311533836615e+01
--3.2389231096029398e+01
--1.2437358091542608e+01
-1.9287038540839070e+01
--3.2874754753110153e+01
-7.4576243872815358e+00
-2.5081357038733024e+01
--4.5604833041486344e+01
-1.6345939018225892e+00
-2.0488850873512636e+01
--3.6552796525481277e+01
--1.5885048452297994e+01
-1.8438440458711781e+01
--3.2112651261841897e+01
--2.6440831399636816e-01
-2.0114403559253859e+01
--3.6196894945222965e+01
-1.2533926929930715e+01
-2.6032602255955045e+01
--4.9015991905110717e+01
--3.7759885271914961e+00
-2.1610352916767404e+01
--4.0358406206548011e+01
--3.8050057759969911e+00
-2.1409331580950010e+01
--3.9988051473877768e+01
-8.8193606315539146e+00
-2.1115402115427077e+01
--4.0270461186715316e+01
--2.2375473706825342e+00
-2.2004556563078793e+01
--4.1550509456025594e+01
--7.2324486463553761e+00
-2.0388496859622631e+01
--3.8365424497111249e+01
-1.4929465156249822e+00
-2.2373258352974119e+01
--4.3519632762859558e+01
-1.5132525676673369e+01
-2.5126489718507475e+01
--5.0619471538780800e+01
-1.2408881321478859e+01
-2.3476750853968742e+01
--4.9627703676888409e+01
-2.0495773139669393e+00
-2.2290185069894363e+01
--4.6750731634795009e+01
--1.3073550347038367e+01
-1.7154279779545980e+01
--3.5311457091070324e+01
-1.4886574897542688e+00
-2.1289697160058321e+01
--4.5429712261124791e+01
-1.4873955714134707e+01
-2.3883887296621708e+01
--5.2491414779288142e+01
--1.3401272551845047e+01
-1.7069386006558652e+01
--3.5809520308405538e+01
--1.3401272551845047e+01
-1.7069386006558652e+01
--3.5809520308405538e+01
-3.2392733095595347e+00
-1.8210675404819636e+01
--3.9631538415124453e+01
-1.1131787264948420e+01
-2.6900036792428899e+01
--6.1979527850601983e+01
-1.2679557087751469e+01
-2.4253872607334635e+01
--5.7577546160811799e+01
--6.8243010963483091e+00
-1.7850050097862734e+01
--4.2440315962541639e+01
-2.9589299480958737e+00
-1.6856376384899512e+01
--4.0949960669711416e+01
--2.5402331567696829e-01
-1.8718817506098443e+01
--4.5688153792146998e+01
--1.0322323551174888e+01
-1.9477721735315889e+01
--4.7675782326655778e+01
--9.6948408474593624e+00
-1.6852530299070864e+01
--4.1318637182490292e+01
--9.6948408474593624e+00
-1.6852530299070864e+01
--4.1318637182490292e+01
--3.5819099120518678e+00
-1.7427090078575670e+01
--4.5276303696335432e+01
-1.3773986169680068e+01
-2.6365784066194806e+01
--7.3676523011135899e+01
--1.1352114731754694e+01
-1.4244976624978468e+01
--4.1455035444746265e+01
--1.1306518629059612e+01
-1.4325977236146748e+01
--4.2342324321998213e+01
--1.2705142531430853e+01
-1.3023651478173649e+01
--4.0868061430667190e+01
--1.4135038533349704e+01
-1.2517171812697532e+01
--4.0439090815012918e+01
-8.0987312853123417e-01
-1.5268114099123080e+01
--5.2093800875350269e+01
--6.7925973198434724e+00
-1.3359844140843940e+01
--4.6474609338647348e+01
--1.2851667425808722e+01
-1.2233879427068427e+01
--4.3341211134310718e+01
--1.5618249665983935e+01
-1.1519649227760606e+01
--4.1243989509164841e+01
--1.1834388926961271e+01
-1.3173105476290027e+01
--4.9278261158308425e+01
--1.1576507554857207e+01
-1.1581993535673780e+01
--4.5756650198897752e+01
--1.2168818365562210e+01
-1.0919095081275422e+01
--4.4404536407405558e+01
--1.5398866948442336e+01
-1.0185694773945976e+01
--4.1830380819224779e+01
-5.6989225832197681e+00
-1.0782940581261414e+01
--4.7245880990419245e+01
-4.7130446316895318e+00
-1.0063669560463451e+01
--4.6335443389703123e+01
--1.5367410111486304e+01
-9.0928395654247325e+00
--4.3506038695348330e+01
--1.6575241187029498e+01
-9.3789706110427939e+00
--4.6904699798314184e+01
--1.5294984459804651e+01
-8.6386078968435740e+00
--4.4449131684510562e+01
--2.3280065558195444e+00
-7.5208264489288927e+00
--4.3378502228734156e+01
--1.3799169156932791e+01
-6.7423640834304974e+00
--4.3883732977144902e+01
--2.0858372089988084e+01
-7.0272655344131225e+00
--4.7626038792537926e+01
-2.6922682426242600e-01
-3.2161455623419548e+00
--2.3316848872656234e+01
--1.8857124167283055e+00
-5.8753676856373573e+00
--4.1327824994238611e+01
--6.1258942126666038e-01
-3.0542702680749456e+00
--2.2484581540339956e+01
--2.2449995199177417e+00
-3.8560992283820026e+00
--2.8979450333404632e+01
--2.8526915481865007e+00
-5.5400455524219971e+00
--4.0425371409332833e+01
--1.8171935260370329e+01
-5.6141455761446393e+00
--4.4441804950799231e+01
--1.3796076888689383e+01
-5.0354014969240879e+00
--3.9891432222651034e+01
--1.7939376974507287e+01
-5.3844468065801712e+00
--4.3549857166894753e+01
--3.4888892624365262e+00
-4.6339385268050703e+00
--3.8653252944302203e+01
--3.5284670217147629e+00
-3.6955085018511693e+00
--3.4689642071983386e+01
--1.2903550917156116e+01
-3.6668321998892077e+00
--3.7785004395215687e+01
--3.5519118932087785e+00
-2.0206050737214540e+00
--2.3196052383350789e+01
--7.2600565415360681e+00
-3.4338470209263328e+00
--3.7673401080777253e+01
--3.8965378060232175e-01
-1.8272191101461877e+00
--2.1914068166225267e+01
--6.4729459541968222e+00
-2.9566305531672734e+00
--3.6037437988845419e+01
--2.4303603306539916e+00
-1.9430291711665839e+00
--2.5020001018173055e+01
--2.4195146588329774e+00
-1.9964835358672957e+00
--2.5500181392438247e+01
-6.6254428931863654e+00
-4.0086890245021841e+01
--4.5785855559975090e+01
-6.8150234307477904e+00
-4.0030695660521666e+01
--4.5891613375223564e+01
-2.3640929880654022e+00
-3.6216319661610882e+01
--4.4736025272641648e+01
-9.3327285307819685e-01
-3.4361001045025439e+01
--4.3076550672782361e+01
--1.2938431648176516e+01
-2.7927108970421298e+01
--3.6067674682079065e+01
--2.4555071109587544e+01
-3.6174463484335810e+01
--4.7178774033388976e+01
-3.0926989938176441e+00
-3.0887668626620329e+01
--4.2443671823983010e+01
--2.3390426666240121e+01
-3.5395129732806261e+01
--4.7243776858972232e+01
--2.2935328084192413e+01
-3.4700460530966353e+01
--4.6246723930358648e+01
--2.3177692292623746e+01
-3.5231568222227416e+01
--4.7251938122532088e+01
--2.6654964102105986e+01
-3.7779968811567322e+01
--5.0717817747696401e+01
--2.7586403320677952e+01
-3.8117660128140024e+01
--5.1733741401538360e+01
--2.8324277683277966e+01
-3.6103545687324186e+01
--5.0184022184515563e+01
--2.8364625887746932e+01
-3.5913346213323209e+01
--5.0711779792311468e+01
--2.8343628830241752e+01
-3.4701303377244670e+01
--4.9497225440009714e+01
--2.8399743646895029e+01
-3.4088269107343798e+01
--4.9264487253439107e+01
--2.8399743646895029e+01
-3.4088269107343798e+01
--4.9264487253439107e+01
--2.7735136094025332e+01
-3.4060871999543465e+01
--4.9800700273314305e+01
-8.9219959994019007e+00
-2.8572236148489427e+01
--4.5337211902340137e+01
--1.5226716254557715e+01
-2.0740984577573059e+01
--3.2581825786023757e+01
-7.5152729384296544e+00
-2.6317572524667131e+01
--4.4509806668034798e+01
--7.4888056943479842e-01
-2.0983786097259244e+01
--3.4768705088117130e+01
--5.2797099885864771e+00
-2.1785355458706256e+01
--3.6973002355662210e+01
-1.6552314957482697e+01
-2.9369637448677640e+01
--5.2465816702904888e+01
-1.2478567318398870e+01
-2.7762271871777426e+01
--4.9290110820876691e+01
-8.0987997546379304e+00
-2.5377410750579710e+01
--4.5807432844309375e+01
-2.4761867939019817e+00
-2.3964817837313330e+01
--4.2925917008199093e+01
-2.9827787104937369e+00
-2.4236455425983891e+01
--4.3650525675663445e+01
--1.6600604700653214e+01
-1.8140314375409915e+01
--3.1534498551507731e+01
--7.3241451851777537e+00
-2.0941026253259501e+01
--3.7820066224526691e+01
--1.9233149127546845e+01
-2.0139012400087502e+01
--3.5912851393797432e+01
-1.5922040454640028e+01
-2.6344828031909081e+01
--5.1748817900164930e+01
-5.9913637573164689e+00
-2.2778888329104358e+01
--4.5328590998664581e+01
-6.7336058961612970e+00
-2.3169726296491390e+01
--4.6555881944327517e+01
--5.9309530805486617e+00
-2.0124228658099849e+01
--3.9653788404374005e+01
--1.2294634030015208e+01
-1.7884134822609049e+01
--3.6378342402591855e+01
--1.3578687316645797e+00
-2.0353256350154982e+01
--4.3262172016825048e+01
-1.0154152842566744e+00
-1.8718462113073439e+01
--3.9992709263523679e+01
-3.1390445189021690e+00
-2.0747188041189226e+01
--5.0124417802399549e+01
--3.1660121440014604e+00
-1.8943110245672312e+01
--4.9418940286502220e+01
-1.4209659263269625e+01
-2.1259562943590495e+01
--5.6221760697669978e+01
-6.2134552617568017e+00
-2.2412421566728501e+01
--5.9295022370061893e+01
-1.9653634023203954e+00
-2.0512083778300298e+01
--5.5440722518765355e+01
-1.3901667801802371e-02
-1.8807960089529093e+01
--5.3747680104929458e+01
--1.5287820470630349e+01
-1.3084003957482071e+01
--3.9867961513476075e+01
--1.1778894366945208e+01
-1.3469312479754441e+01
--4.2492825054122839e+01
--1.3045881329808276e+01
-1.3258782473337131e+01
--4.2514271776668913e+01
--3.5278952090058439e+01
-2.1550765171642762e+01
--6.8867937371065665e+01
--1.6940111018933774e+01
-1.2304927398450733e+01
--4.0850190538769041e+01
--1.6276502035058975e+01
-1.2192777858627032e+01
--4.0218652667344386e+01
-2.7934193900187196e+00
-1.6437124318595085e+01
--5.5119096839357248e+01
--1.6550360596986884e+01
-1.2155346576828778e+01
--4.0619295251081994e+01
--3.6558549817699406e+00
-1.4315458355487049e+01
--5.0080209305383185e+01
-6.1854108555816882e+00
-1.4504126108741151e+01
--5.1561112072667257e+01
-2.9998868204925704e+00
-1.1354240689411027e+01
--4.0948926957067911e+01
--1.2446963864742226e+01
-1.1661119249343191e+01
--4.3952627745954594e+01
--9.9984549687271702e+00
-1.2017324751238489e+01
--4.5698304753379105e+01
-2.4502868770586002e+00
-1.1516435559531001e+01
--4.7833945173357606e+01
--2.0555055729066883e+01
-1.1806865383851548e+01
--5.0395553925976238e+01
-3.0282917763392105e+00
-9.8399712912668580e+00
--4.5773870354209457e+01
--1.3966840967362353e+01
-9.3788284504503654e+00
--4.5952047324755775e+01
--5.7954812779459097e-01
-7.3533637301685530e+00
--4.2327943252717851e+01
--1.1543758429284987e+00
-7.3674240080429518e+00
--4.3462119762890488e+01
--1.4886238210074878e+00
-6.6962958432507209e+00
--4.1703011785970354e+01
--1.1534678913314345e+00
-3.4200254054706103e+00
--2.5560808124705506e+01
--4.1192982035266956e+00
-5.7702823791488758e+00
--4.1448781394464433e+01
--1.8859255512553692e+00
-2.8976432583109748e+00
--2.2132758162518002e+01
--2.4918626692323596e+00
-3.9890143587781162e+00
--3.0164114547409323e+01
--4.7609473059082958e+00
-5.0302500505839696e+00
--4.0190478377165981e+01
--1.5218732345943881e-01
-2.4703454916579677e+00
--2.1927717501527074e+01
--1.5849597251380736e+00
-2.4944133744718924e+00
--2.3710345309314526e+01
--5.6351473209108587e+00
-4.3317776749335621e+00
--3.8302310895485967e+01
--1.7673127325622719e+00
-2.2793410223249104e+00
--2.3426313114036212e+01
--1.9192448255985008e+00
-2.3017038686753133e+00
--2.3880418008234326e+01
--6.2884823425508527e+00
-3.2132193587129958e+00
--3.6392562890374229e+01
--3.3834862998413415e+00
-2.8763458401368576e+00
--3.1469746145005143e+01
--1.4713002048826572e+01
-6.7390908322912566e+01
--7.4628042778532674e+01
--2.3010233171036663e+01
-3.6234768918038000e+01
--4.5870164721335875e+01
--2.4472920033416795e+01
-3.6572781272564548e+01
--4.6532351248571004e+01
--2.2077875099122366e+01
-3.4894868079789397e+01
--4.5997154349441672e+01
--3.8362744700061135e+01
-4.4601224102631157e+01
--6.2184882792621707e+01
-1.2996088747268274e+01
-3.1082538265924647e+01
--4.9861935698106173e+01
--3.0252228887545829e-01
-2.3772702616264933e+01
--4.1209494426657876e+01
--1.4711305311944010e+01
-1.8667220138934233e+01
--3.2040413821423108e+01
--8.5416453684783100e+00
-2.0596771040692591e+01
--3.7037360349680483e+01
-8.1225961685147841e+00
-2.0005677875468130e+01
--3.7695045751943994e+01
-1.5953479588820965e+01
-2.7252041119489881e+01
--5.2031593587139980e+01
--7.3692723266461275e+00
-2.0270589121680629e+01
--3.8487618733605458e+01
-1.2490887402224521e+01
-2.4846667280860576e+01
--4.8942605193661208e+01
-6.5440110299053911e-01
-2.1602267417756597e+01
--4.3970395194003515e+01
-7.5968259471721202e+00
-2.2232219182935708e+01
--4.7956595129491156e+01
-1.4155002494197589e+01
-2.4845675964972354e+01
--5.7659551337407983e+01
-1.1423700233338566e+01
-2.0897173852654628e+01
--5.0739967839348971e+01
-9.5531781599107024e+00
-2.0222277190430450e+01
--4.9784495675902761e+01
-6.0128770721274742e+00
-1.5199239688500734e+01
--3.9211618442697578e+01
--5.0736400535013937e+00
-1.6206714149067690e+01
--4.5514749062598341e+01
-5.2334726704730263e+00
-2.0970938040026727e+01
--6.0406395852031686e+01
--1.2017393275921972e+01
-1.5824638647709788e+01
--4.6337111613177086e+01
--9.4617346321189988e+00
-1.4005721016672771e+01
--4.4022196654216515e+01
--1.4202502719625203e+01
-1.4982926794839951e+01
--4.8528089581588787e+01
--2.0297298549691031e-01
-1.5244542393105807e+01
--5.2908877465772967e+01
--1.6627375020483555e+01
-1.0050640516539369e+01
--4.3583834003202838e+01
--1.7570304454100079e+01
-9.4331172031807142e+00
--4.3326757128848911e+01
-3.1288669146630075e+00
-8.5011900970421852e+00
--4.0786109046423967e+01
--1.6838395393302605e+01
-9.3224364496331571e+00
--4.5483885874125768e+01
--1.2612633230500812e+00
-6.7490391505727931e+00
--4.1778416069916879e+01
--2.1131976543506905e+01
-6.9837394166712761e+00
--4.7803353609929047e+01
--1.7546519261362177e+00
-2.9354377594193384e+00
--2.1844153511218330e+01
-7.1400834970861748e-02
-2.9331245036099278e+00
--2.1956537935694211e+01
--5.0103510746299600e+00
-5.6396836099148207e+00
--4.0058734666172235e+01
--3.4473798656072394e+00
-5.2583710255228544e+00
--3.9902628916813001e+01
--1.2214241269121757e+00
-2.9005829239955188e+00
--2.3880486632139725e+01
--8.8350944994461695e+00
-4.3476541263118182e+00
--3.9129134743970091e+01
--3.3130372026324642e+00
-2.5489900249216308e+00
--2.3996640444996750e+01
--3.4617559595495893e+00
-4.3042057682382531e+00
--3.8673333928148516e+01
--3.4154243685637060e+00
-2.9175387480542549e+00
--2.7310172085753543e+01
--6.5644796954845708e+00
-3.6722000142365765e+00
--3.7348192117917797e+01
--1.7838587039780243e+00
-2.2259470439485467e+00
--2.4187125336789848e+01
-9.1061277135175125e+00
-7.5466877125013795e+01
--8.4465615370037213e+01
--1.8965253259012140e+01
-6.3484356969712287e+01
--7.1126188852013073e+01
--6.9505219438110464e+00
-2.1710775454353939e+01
--3.7926172998555131e+01
--9.5383729408750479e+00
-2.0459311235136404e+01
--3.6485418246130173e+01
--1.5939473586784285e+01
-1.8024684204605546e+01
--3.2482128603107505e+01
-2.3184219514004029e-01
-2.2047508500116990e+01
--4.2521596546109905e+01
-2.6602439978397778e+00
-2.2049828394800436e+01
--4.5694638319600564e+01
--1.2319232717006543e+01
-1.5691659130909686e+01
--4.0750140972476089e+01
-7.7886246151057348e+00
-1.9453191775557450e+01
--5.2075935372571337e+01
-9.4142585392461742e-01
-1.7652986179672013e+01
--4.8883678183360260e+01
-1.0776273803644623e+00
-1.5737162552647552e+01
--5.2237528474747393e+01
--1.6165026550411454e+01
-1.0109557270741334e+01
--4.1966826958129481e+01
--1.6625648022159393e+01
-1.0464725032065154e+01
--4.3647988086101918e+01
-2.2250713967530742e+00
-7.7111219122831747e+00
--3.5041607493607238e+01
--1.6253513466160163e+00
-3.4716038059257026e+00
--2.7297580452359679e+01
--6.0539365674793615e+00
-3.9046352027520412e+00
--3.7996712425990850e+01
--7.2638420593987050e+00
-4.6670240183237098e+01
--5.4922374911144971e+01
--7.2696513552179347e+00
-4.6639540408121640e+01
--5.5120552702900397e+01
--1.6904463392167564e+01
-4.3367420779089642e+01
--5.0972198122573722e+01
--1.0974032998290593e+01
-4.4678028073528523e+01
--5.2864185084282823e+01
--1.5313960054706959e+01
-4.3855025341117873e+01
--5.1606413205994514e+01
--1.5313960054706959e+01
-4.3855025341117873e+01
--5.1606413205994514e+01
--7.9415275976718265e+00
-4.4458771012435136e+01
--5.3530656052109848e+01
-6.9351213906371996e+00
-2.6489234586769822e+01
--4.7003682430624323e+01
--5.4008143475903672e+01
-4.4955582578711685e+01
--9.4512762419647217e+01
-6.4335490967826701e+00
-1.4462145659996565e+01
--3.9953526231429080e+01
-1.1941282219356427e+01
-2.1359771587374738e+01
--6.0380449851169821e+01
-1.0261235987158912e-01
-1.5945284562745860e+01
--5.0324299437165507e+01
--1.4937619260157215e+01
-1.2494953068669904e+01
--4.1068311351148679e+01
-1.6059530471184362e+00
-1.6063713840832399e+01
--5.3156254012324091e+01
--1.7639643594707137e+00
-1.2144153050087864e+01
--5.0115538444335911e+01
--1.5879760106918667e+01
-1.0085696040222253e+01
--4.4050330013115577e+01
--1.8442718589049512e+00
-3.4243680074509384e+00
--2.7002191150144441e+01
--1.8497176747474497e+00
-2.9824508549122419e+00
--2.6688850553228743e+01
--1.3781775827072172e+01
-4.3025640214586780e+01
--5.1565643057148478e+01
--3.2991966114557369e-01
-3.1176920124914378e+01
--4.1340811205966730e+01
-7.5082141907982409e+00
-3.3138517569585076e+01
--4.5845007723817716e+01
--1.1611240298619065e-01
-1.7366677422521068e+01
--4.8423956506762771e+01
--3.0671470722721752e+00
-1.6131071763321671e+01
--4.7246072529751707e+01
--1.5119138679783534e+01
-1.1165873919858349e+01
--4.0371203065251635e+01
-5.4973921009053806e+00
-8.4840504843397859e+00
--3.7836839986690876e+01
--3.3571883013533231e+01
-6.8356938812118287e+01
--7.5076676089126266e+01
--1.2785236743397784e+01
-4.4385525120237332e+01
--5.2284992194815665e+01
-1.4590807576887295e+01
-2.3543170930507515e+01
--5.8251209519640462e+01
-1.0592282654371351e+01
-2.1078703579628591e+01
--5.2502480492342897e+01
-2.4636637054860380e+00
-1.7455895235501337e+01
--4.9301070696661299e+01
--4.1566208308654247e+00
-1.5907061320610488e+01
--4.6939623745796453e+01
--3.4110121858262377e-01
-1.6351090580943705e+01
--5.3833807971369509e+01
--1.6188472821448450e+01
-1.8732042190726762e+01
--3.2047066980390021e+01
--2.3362238631836574e+00
-1.5811538531300890e+01
--4.8320453248141582e+01
-4.4258445761621079e+00
-2.0827367937920133e+01
--4.9063659822870598e+01
--6.7637180123649774e+00
-1.3368714851903801e+01
--4.8321968298101375e+01
-1.4576227362820484e+01
-1.5747812051719151e+01
--3.3222046989474897e+01
-1.3703798437407888e+01
-1.5013759113421960e+01
--3.2010252531983980e+01
-1.3612205954927630e+01
-1.4888264878695255e+01
--3.1673615385603977e+01
-1.3253818047791198e+01
-1.4863413909331346e+01
--3.2806118656132817e+01
-1.2477432459437226e+01
-1.1011162556984898e+01
--2.5445495689271873e+01
-1.3403703652769032e+01
-1.4743208583293573e+01
--3.3210522347365568e+01
-6.4133418421231490e+00
-2.1146350352672211e+01
--4.4832034765851873e+01
-1.7964955543257439e+01
-2.6892300657721336e+01
--6.2072659570765254e+01
-1.9204902204158255e+01
-2.6992360245979182e+01
--6.2774004162317190e+01
-1.6515057678193251e+01
-2.6435841109870363e+01
--6.1206411056412527e+01
-6.6902288077609606e+00
-2.0643342632862144e+01
--4.5861614667379762e+01
-8.0303182985460619e+00
-2.4282531305024978e+01
--5.4477660276734646e+01
-2.9166471463385673e+00
-2.3237234082246083e+01
--5.0540606785788654e+01
-9.2006782057174863e-01
-2.2932056272491707e+01
--4.9243854360743157e+01
-3.2069502126547440e+00
-2.3293469082364769e+01
--5.0796719021740984e+01
-1.4072083691160334e+01
-1.4131340898233221e+01
--3.6160289436643673e+01
-1.4072083691160334e+01
-1.4131340898233221e+01
--3.6160289436643673e+01
-1.4213617140968417e+01
-1.4070500926264328e+01
--3.6101972473469168e+01
-4.6660967877401651e+00
-2.1374904653654653e+01
--4.7633379883571109e+01
-1.9211898696758556e+01
-2.6196083640778465e+01
--6.3728909745352688e+01
-1.5945415102449289e+01
-2.5058178772970511e+01
--6.1028715154180155e+01
-1.1450731002291173e+01
-1.7966689243172084e+01
--4.4122017481931792e+01
-1.1450731002291173e+01
-1.7966689243172084e+01
--4.4122017481931792e+01
-1.3433490094726277e+01
-8.8697774003336214e+00
--2.6032512379505178e+01
-8.2113391051962914e+00
-2.3402239911782090e+01
--5.5564255317714050e+01
-1.2839267201446937e+01
-9.3207305013687929e+00
--2.7236245057529132e+01
-1.2961825494882646e+01
-9.2103924986993100e+00
--2.7032311201465067e+01
-1.2181578840825205e+01
-7.8781999174718607e+00
--2.4321012086933457e+01
-1.2527894700939937e+01
-7.8622718999378689e+00
--2.4287179070717077e+01
-6.5510981936806205e+00
-2.2708686438567486e+01
--5.4325605438160878e+01
-1.2896877680681824e+01
-8.8886349088423913e+00
--2.6618652632700652e+01
-7.3380076080365928e+00
-2.2826008228658257e+01
--5.5234833561846386e+01
-7.7435110816005182e+00
-2.2867264061575888e+01
--5.5509507935335968e+01
-1.1675781306353239e+01
-6.9967215396491218e+00
--2.2565484236809716e+01
-1.7168647671294508e+01
-2.4484578657243215e+01
--6.3629955022165049e+01
-1.3133751822018976e+01
-8.3000481116328420e+00
--2.6076460858565579e+01
-1.1769584977605559e+01
-6.8967906571629216e+00
--2.2822799161405445e+01
-1.3718624270674052e+01
-1.2943774395784644e+01
--3.7287275331531227e+01
-1.1208757353342227e+01
-2.2895935141829053e+01
--5.8828144812273820e+01
-7.4509131138837708e+00
-1.8613403923124498e+01
--4.7421476424639614e+01
-1.3403592155276570e+01
-7.5309645444575324e+00
--2.5371564887062753e+01
-1.4071613328976278e+01
-1.2275579365778631e+01
--3.6488450923982171e+01
-1.3705645490566354e+01
-1.2914072176236742e+01
--3.7869735630021076e+01
-5.1694415479461986e+00
-2.1453832157804133e+01
--5.4023745118205895e+01
-1.2290262636038017e+01
-1.2000707254982531e+01
--3.4996691531644402e+01
-1.9789642537123548e+00
-2.0973017032499701e+01
--5.1680266653403152e+01
-1.1658120172295067e+01
-7.0204491291541693e+00
--2.4011262417063552e+01
-1.7650320684935905e+00
-1.9956225084071257e+01
--4.9923710013730286e+01
-1.3696857426697429e+01
-1.2538586022363010e+01
--3.7790141288825602e+01
-1.2778879262283331e+01
-8.0851760201075749e+00
--2.7205066598125683e+01
-1.3191010109969502e+01
-7.5160107115042951e+00
--2.6174123598509446e+01
-8.2069761345220762e+00
-1.7980195422669240e+01
--4.8392400707527116e+01
-1.1933782745034348e+01
-8.0169044565376915e+00
--2.6973646299061038e+01
-1.7493843157011626e+00
-2.0513631206153317e+01
--5.1735492728115922e+01
-1.4154794220621371e+01
-1.1348427549635426e+01
--3.5792059898877326e+01
-1.2943846354311983e+01
-7.4645612374012673e+00
--2.6364314629755714e+01
-1.2918397355891960e+01
-6.5957622062334078e+00
--2.4261814525978632e+01
-1.2462631924615970e+01
-7.9498313527519846e+00
--2.7544992309158996e+01
-1.2986985298750731e+01
-7.3267117264371429e+00
--2.6342887225733801e+01
-1.2410737499646189e+01
-7.3577412578671044e+00
--2.6318369482963032e+01
-1.1885676107354692e+01
-7.9446712643860478e+00
--2.7194280548088631e+01
-5.8238783713338149e-01
-1.9980142343030092e+01
--5.1085395060155534e+01
-6.5460715127883011e+00
-2.0877330834328458e+01
--5.6041746894893706e+01
-1.2035658105269892e+01
-7.6712555034338186e+00
--2.6810435067113026e+01
-1.3706022228027908e+01
-6.0634464623226592e+00
--2.3987553188933870e+01
-1.4570624558552584e+01
-9.9147554883563753e+00
--3.3898543266420596e+01
-1.3015906680751938e+01
-7.0627102883487272e+00
--2.6356304824648220e+01
-6.2153125972012715e+00
-2.0562369818533949e+01
--5.6148026587640530e+01
-1.7849782784255050e-01
-1.9619120846636235e+01
--5.1018180352018348e+01
-1.2589421001019629e+00
-1.9683104932760894e+01
--5.1824140026130003e+01
-1.0985005426624788e+01
-2.1064832113089945e+01
--6.0347612323625782e+01
-1.1550866768513190e+01
-6.8857465278410439e+00
--2.6176694635914568e+01
-1.2489436914332190e+01
-7.3623387650397634e+00
--2.7837828659120042e+01
-1.3314557890571029e+01
-6.4584978658148202e+00
--2.5983779241593737e+01
-1.2097863955272357e+01
-7.1982190576019809e+00
--2.7213104354136114e+01
-1.2899138823144806e+01
-6.7153476551694977e+00
--2.6635134346560370e+01
-1.2673233555177577e+01
-7.1857919897893945e+00
--2.7838881362038755e+01
-1.3458108737578307e+01
-5.3814599077549499e+00
--2.3512842952887116e+01
-1.2009504028617087e+01
-7.2506950009704525e+00
--2.7644679695984344e+01
-1.2216457634156225e+01
-6.9466933954818897e+00
--2.7022350858941916e+01
-4.6026899512820316e+00
-1.9665030390767019e+01
--5.5510719356054167e+01
-4.6026899512820316e+00
-1.9665030390767019e+01
--5.5510719356054167e+01
-1.2750793745648709e+01
-7.2074586611669167e+00
--2.8017998937565082e+01
-1.2539829399376741e+01
-6.7884887311376705e+00
--2.7142064300663055e+01
-1.1572859211490057e+01
-6.5163101416294325e+00
--2.6222095231017114e+01
-1.3859294041679220e+01
-1.0173155746919562e+01
--3.7025758923844045e+01
-1.4627952943516066e+01
-8.6326931728975644e+00
--3.3717863485600553e+01
-1.3181166948639335e+01
-5.7892854673569767e+00
--2.5759136362869029e+01
-1.4330097713770265e+01
-9.0520026526316748e+00
--3.5086936232102325e+01
-1.3021046788768860e+01
-6.2291443846096364e+00
--2.6997170337435513e+01
-1.2956453281275124e+01
-6.1496290387313577e+00
--2.6810798863402056e+01
-1.3413417860533281e+01
-5.9916011272223120e+00
--2.6916004312202229e+01
-1.2874186910921910e+01
-5.6767660219765474e+00
--2.5754231059041270e+01
-1.1995142806309511e+01
-6.8064505593106102e+00
--2.8549945035677190e+01
-1.2859409776480158e+01
-5.9007988794879411e+00
--2.6622212450134235e+01
-1.3082632631153158e+01
-5.3121019390289481e+00
--2.5196929283564891e+01
-1.2330029260337923e+01
-6.6697891126733966e+00
--2.8656938882097155e+01
-3.9164059911670916e+00
-1.7767553484022880e+01
--5.4776019186146335e+01
-1.3499743798914110e+01
-1.0386553820191077e+01
--3.9753268219790840e+01
-1.1232314428877149e+01
-6.0991180750281160e+00
--2.7459777923042591e+01
-1.3850429958465002e+01
-9.5077446384324773e+00
--3.8108004184942160e+01
-1.2115302726665506e+01
-6.8036589062231769e+00
--2.9691146735235151e+01
-1.2115302726665506e+01
-6.8036589062231769e+00
--2.9691146735235151e+01
-1.2814789839818255e+01
-5.4244294680689835e+00
--2.6320722797690149e+01
-1.2067412618050986e+01
-6.3687569999072435e+00
--2.8411836087200292e+01
-1.4553678896553775e+01
-8.2253685595202839e+00
--3.5329129893255661e+01
-1.2294890862002680e+01
-6.3271504733257160e+00
--2.9011007953779249e+01
-1.1897602891876767e+01
-5.2603934571060709e+00
--2.5882021705551669e+01
-1.2766424638408214e+01
-5.6151377010498686e+00
--2.7445585370619433e+01
-1.2809300080168596e+01
-5.2748967706329788e+00
--2.6501780136315869e+01
-1.3285888396020797e+01
-5.5004513794997587e+00
--2.7455831580448354e+01
-1.2456221131382810e+01
-5.7112557750309740e+00
--2.7559788844137454e+01
-1.2718723077312314e+01
-5.2138981751562978e+00
--2.6532047230907516e+01
-1.2354873293450609e+01
-5.6965220826579444e+00
--2.7779025829740544e+01
-1.2608548744559297e+01
-5.4952988429913310e+00
--2.7376677761376133e+01
-1.2036267445944290e+01
-6.2251466105317732e+00
--2.9158671393021407e+01
-1.3557463870945066e+01
-9.7805257743639196e+00
--4.0339298340467444e+01
-1.3522600497308808e+01
-9.6275651680503564e+00
--4.0237772468015073e+01
-1.3532140629743905e+01
-9.5065900452311336e+00
--3.9933916020585897e+01
-7.9542297235747110e+00
-1.4378098128128549e+01
--5.0271510505915209e+01
-1.3837199017686469e+01
-9.8412122494407868e+00
--4.1929442054489584e+01
-6.2551127140135616e+00
-1.2439995265809229e+01
--4.4374403474443298e+01
-1.3917453941458817e+01
-9.7031004513087762e+00
--4.1777344275952224e+01
-1.2268048390029621e+01
-5.6546722589274028e+00
--2.8767407520981759e+01
-1.2617709938035254e+01
-5.1476974329237066e+00
--2.7929603848185621e+01
-1.2741131077537554e+01
-5.3689374958821654e+00
--2.8817197252233328e+01
-1.2905001924133838e+01
-4.2646687367319256e+00
--2.5712489183954158e+01
-1.2905001924133838e+01
-4.2646687367319256e+00
--2.5712489183954158e+01
-1.2276696810087845e+01
-5.6329618348146262e+00
--2.9335913672579998e+01
--1.8265085213403753e+00
-1.5126661033402284e+01
--4.8249605713158587e+01
-1.2524399098575444e+01
-4.9363331410716622e+00
--2.7912667999993754e+01
-1.2711244625354308e+01
-4.7776973939547318e+00
--2.7785480369435664e+01
-5.1285945490298808e+00
-1.2029475195259002e+01
--4.4739486327960861e+01
-1.3088294865420934e+01
-3.4953176149638261e+00
--2.4569332150533228e+01
-1.2804790663188994e+01
-4.6176291937563949e+00
--2.7594254198648642e+01
-1.2583971782536308e+01
-4.8025465866450583e+00
--2.8277232375826742e+01
-1.4204835509751527e+01
-3.5708766591342904e+00
--2.5727327522604888e+01
-1.2823587490486048e+01
-4.8752727609350268e+00
--2.8947020004703951e+01
-1.2669426720464825e+01
-4.7205881379204904e+00
--2.8231686753658295e+01
-1.4019985672693114e+01
-3.7325244413294998e+00
--2.6171275855161053e+01
-1.3835044060019360e+01
-7.0755346056142496e+00
--3.6596045955324648e+01
-1.2981838722672618e+01
-4.5763850816786249e+00
--2.8393260553282470e+01
-1.2854749678295635e+01
-4.3408807622940566e+00
--2.7555077507698691e+01
-1.3224469649917777e+01
-4.3103055634890790e+00
--2.8134977079228882e+01
-1.3334121129618003e+01
-4.3504863905564939e+00
--2.8267602462774029e+01
--3.2707814873120475e+00
-1.5050606987298940e+01
--5.0277356954990111e+01
-1.3031022621924329e+01
-4.0382243557157027e+00
--2.7297666835546647e+01
-1.3031022621924329e+01
-4.0382243557157027e+00
--2.7297666835546647e+01
-1.2666685330846093e+01
-3.8872823057385726e+00
--2.6754607838666665e+01
-1.2757346356091990e+01
-3.4613542836161102e+00
--2.5485655480229408e+01
-1.3894852960931802e+01
-3.5944597914786640e+00
--2.6656155930647770e+01
-1.3894852960931802e+01
-3.5944597914786640e+00
--2.6656155930647770e+01
-1.2968019779859681e+01
-4.3105210308531348e+00
--2.8440625149160429e+01
-1.2775129704056916e+01
-3.2240530919077961e+00
--2.5095808098779941e+01
-1.3855123881831453e+01
-3.5501102323342768e+00
--2.6859863265266704e+01
-1.1848186377425121e+01
-4.6017922376387350e+00
--2.8853535016774309e+01
-1.2935934537909166e+01
-4.4118812153081581e+00
--2.9027684560530489e+01
-1.3188697318995061e+01
-3.7622984635668821e+00
--2.6954527847569306e+01
-3.3567410520098591e+00
-1.1957806362352219e+01
--4.6078883161907527e+01
-1.3760099780459827e+01
-3.3977052144842061e+00
--2.6568682828755961e+01
-1.2387053357808799e+01
-4.7652735931580166e+00
--3.0405555904734907e+01
-1.3298503505501635e+01
-7.4176824794998488e+00
--3.9789051584873427e+01
-1.3272430191391249e+01
-3.8086704193185055e+00
--2.8011162146597613e+01
-1.3040106539150633e+01
-4.2364478947647157e+00
--2.9319014633433106e+01
-1.3922476925065922e+01
-3.2723854567789643e+00
--2.6922082905826866e+01
-1.3402506115350601e+01
-7.0308744881143559e+00
--3.9399112654088768e+01
-6.2183712782758889e+00
-1.0959863991237203e+01
--4.7241379690386125e+01
-1.3778468182942973e+01
-2.8759379535935898e+00
--2.5891447294481210e+01
-2.3719474068938067e+00
-1.2349684343654424e+01
--4.9253757011147613e+01
-1.2858106478041270e+01
-4.0219065700429804e+00
--2.9301307404798187e+01
-1.2719090714424725e+01
-4.0301737843248926e+00
--2.9048265472853458e+01
-1.3145206706079579e+01
-3.9981111902632360e+00
--2.9752036470703498e+01
-1.2815276643701802e+01
-2.4312654967408021e+00
--2.4463204727350004e+01
-5.4710515742609918e+00
-1.0649134881482546e+01
--4.6941477207247281e+01
-5.1636416686386335e+00
-1.1102030787836727e+01
--4.8572849743068858e+01
-1.2759773120003349e+01
-3.7163239850339735e+00
--2.9163480536894561e+01
-1.3509256965943463e+01
-2.9121863990912051e+00
--2.8028473238053650e+01
-3.3006054342252003e+00
-1.1030263923220776e+01
--4.8407780073950484e+01
-7.6091234032275565e+00
-9.0890539284470737e+00
--4.5407040755245205e+01
-1.2583116947160811e+01
-3.8218422983158589e+00
--3.1057226358907286e+01
-1.2432205653222855e+01
-3.7714412834984614e+00
--3.0858110204014121e+01
-1.2432205653222855e+01
-3.7714412834984614e+00
--3.0858110204014121e+01
-2.7641938802142549e+00
-3.9638346688367978e+00
--2.3475183693745581e+01
-1.7491019024822143e+00
-9.9089109773265420e+00
--4.4068548299907391e+01
-1.2138336844959053e+01
-3.7899019278608179e+00
--3.1311616491375744e+01
-1.4229312490078458e+01
-2.2907316781599256e+00
--2.8039540444617305e+01
-1.4500409224424880e+01
-2.0864640241581376e+00
--2.7640215960331620e+01
-1.4115659750959026e+01
-1.9237009578581563e+00
--2.6875457746097588e+01
-1.4382488594078950e+01
-1.8323911576093297e+00
--2.6892082540565251e+01
-1.4086212095820795e+01
-2.1087456472103439e+00
--2.7642005765509680e+01
-1.2612874918451052e+01
-1.8113844597918556e+00
--2.5474813823969193e+01
-1.3523984703544029e+01
-2.6558730378201179e+00
--2.9380018969872992e+01
-1.1573634229616059e+00
-4.1081509955608890e+00
--2.3647209428694143e+01
-1.2257599235757310e+01
-3.7294163163515117e+00
--3.2634702630228560e+01
-1.2242552280345365e+01
-3.7223979163113246e+00
--3.2672272293439235e+01
-1.1949487088550674e+01
-3.6319821195288533e+00
--3.2137712295751413e+01
-1.1918386031495768e+01
-3.6385722547674813e+00
--3.2208552604243579e+01
-1.2040212294050409e+01
-3.4724515536024958e+00
--3.1684328127322711e+01
-1.1982939128060661e+01
-3.4519128273397364e+00
--3.1816414255121860e+01
-1.2330567128250783e+01
-2.7848469973006775e+00
--2.9708691143224293e+01
-1.2509510207931447e+01
-1.6097591711358203e+00
--2.5607971961856439e+01
--9.2567610357853450e-02
-3.6098365321690498e+00
--2.0812892191387999e+01
-1.2901554641831826e+01
-2.7554300673188528e+00
--3.0289961441048892e+01
-1.2922027639771374e+01
-2.6174960700948722e+00
--3.0120532608368798e+01
-1.2305341465103359e+01
-2.2214363711712322e+00
--2.8277752640450721e+01
-1.2305341465103359e+01
-2.2214363711712322e+00
--2.8277752640450721e+01
-1.0271274224867446e+00
-8.9557488665954832e+00
--4.3344128637213565e+01
-1.4372169407392155e+01
-1.6966418000054166e+00
--2.8427443527411445e+01
-1.4372169407392155e+01
-1.6966418000054166e+00
--2.8427443527411445e+01
--3.8027761378625519e-01
-3.7364029590575911e+00
--2.1568405336528020e+01
--3.8027761378625519e-01
-3.7364029590575911e+00
--2.1568405336528020e+01
--3.2179688043398597e-01
-3.6769021838338474e+00
--2.1380938673755296e+01
-1.2590127748597521e+01
-1.1791523984621930e+00
--2.4895768419439204e+01
-2.1938339385960379e+00
-7.5693019995692152e+00
--3.9659571558874525e+01
-1.2953612551614340e+01
-2.8849013688066445e+00
--3.2163461844237119e+01
-1.2225304482478627e+01
-2.7003834012908712e+00
--3.0790799456126216e+01
-1.9450190200615345e+00
-3.0698701400020298e+00
--2.2270812824470028e+01
-3.5269664619340388e+00
-2.4975499444621598e+00
--2.1712825366150835e+01
-1.3783106690714224e+01
-1.5085744511538006e+00
--2.8068996644983066e+01
-1.8518621304417966e+00
-2.9578865900396014e+00
--2.2150786005695434e+01
-1.2776605585614544e+01
-2.6661639615219284e+00
--3.1892657973622551e+01
-1.4127420407175380e+01
-1.0418132497783728e+00
--2.6945949216490956e+01
-1.2671192961167675e+01
-2.5811412997875807e+00
--3.1570320004152862e+01
-1.2772945380154015e+01
-2.5046381794037766e+00
--3.1447318888825500e+01
-1.2495815878590120e+01
-7.4669328266250834e-01
--2.4916565349474027e+01
-1.2827605099868226e+01
-2.2283029518888031e+00
--3.1105745523161215e+01
-1.2827605099868226e+01
-2.2283029518888031e+00
--3.1105745523161215e+01
-1.2472671423857943e+01
-7.4190247368050644e-01
--2.5050635107260927e+01
-1.3668534097783560e+01
-1.3248524762709237e+00
--2.8437378297220807e+01
-1.2405823798502416e+01
-8.2510889293394651e-01
--2.5480309448850818e+01
--9.6609470595598124e-01
-3.4085367920207719e+00
--2.1654602627500470e+01
-1.4104542959777991e+01
-8.9217035702693526e-01
--2.7542672270843049e+01
-3.4898626383397308e-01
-7.4708151309281385e+00
--4.1229870501263456e+01
-3.1079794953936095e+00
-1.9828295127575375e+00
--2.1142898640773879e+01
-1.2438235726422931e+01
-1.0376279444887970e+00
--2.7752257979720437e+01
-1.2385573404401054e+01
-1.2790086715088178e+00
--2.8823503519826534e+01
-1.4569247707394885e+01
-6.8278447262658104e-01
--2.8250765798818001e+01
-1.4178889661742430e+01
-5.9807028777499827e-01
--2.7585043586278015e+01
-1.2485993974424115e+01
-1.2966479904498693e+00
--2.9271249348368563e+01
-1.2811659533321567e+01
-1.8650443269540560e+00
--3.1874613701223648e+01
-1.2352064824841197e+01
-6.7004897510727746e-01
--2.6615632054059848e+01
-1.2763699486806996e+01
-1.8450800664478080e+00
--3.2325334552292404e+01
-1.2439460735491396e+01
-6.1154537364798556e-01
--2.6765739064391621e+01
-1.2836119598819538e+01
-1.8656280790619360e+00
--3.2638306758316496e+01
-2.5816841196782430e+00
-1.7899952833537165e+00
--2.0833369889441130e+01
-1.2737545521810604e+01
-1.9324841632590795e+00
--3.3168258233663273e+01
-1.2348867136841978e+01
-2.7175353641281164e-01
--2.5606972879433933e+01
-1.2364221898368715e+01
-1.1818573112533792e-01
--2.5183079465745777e+01
-1.2364221898368715e+01
-1.1818573112533792e-01
--2.5183079465745777e+01
--7.7589699032465265e-01
-7.1874450346975944e+00
--4.1516877238014430e+01
-1.2468781331127982e+01
-4.6296907948643079e-01
--2.6948494628743504e+01
--2.9445121749693220e-01
-2.7499604956195980e+00
--2.2370586119199046e+01
-5.6323861173771328e-01
-2.2452754196462608e+00
--2.1261800252577746e+01
-5.9842761938425049e-01
-2.2424306067349158e+00
--2.1259424227300979e+01
-1.2887465381279535e+01
-1.4785704502174808e+00
--3.2444727143391013e+01
-6.4967756338750782e-01
-2.1501394852626947e+00
--2.1144485512743572e+01
-6.9245895894730214e-01
-2.1916323578332033e+00
--2.1292572676427167e+01
-1.4103397859997093e+01
-5.6840825851877985e-01
--3.0002920120067174e+01
-1.2314809257594387e+01
-3.6399981206537213e-01
--2.7234575694370289e+01
--1.2572985431522307e-01
-2.4546052964680829e+00
--2.1810116468861111e+01
--8.7119535574608375e-01
-2.8420043656709257e+00
--2.2770850702279141e+01
-3.9568331999003203e+00
-1.2475164134999521e+00
--2.1138030193156872e+01
-1.0640085423263133e+00
-1.9130284537526512e+00
--2.0854850227930672e+01
-1.3085517934753906e+01
-1.3114776300152979e+00
--3.2598748410573307e+01
-1.3085517934753906e+01
-1.3114776300152979e+00
--3.2598748410573307e+01
-1.2221571185781338e+01
--1.7646139253310936e-01
--2.4909892134027302e+01
-3.3724098741847119e-01
-2.2292890237296037e+00
--2.1445414457382373e+01
-9.2673228635262761e-01
-1.9785860538486422e+00
--2.1029841630908368e+01
-9.2673228635262761e-01
-1.9785860538486422e+00
--2.1029841630908368e+01
-1.2742248990185345e+01
-1.5904487754853511e+00
--3.3713818658451828e+01
-6.9003662988970971e-01
-1.9825378850937785e+00
--2.1006284704250429e+01
-1.6056141585229871e+00
-1.6497359366670872e+00
--2.0622388501888977e+01
--4.9966324169744963e-01
-2.5358850706459486e+00
--2.2302174564606762e+01
-1.3697924045541068e+01
-4.2068461561308301e-01
--2.9651174715717293e+01
-1.3780028380431357e+01
-3.8622561402077565e-01
--2.9538438288279860e+01
--2.3506745094901926e-01
-2.3276138903647072e+00
--2.1771802908987585e+01
-2.0560361354031205e+00
-1.3894207316656704e+00
--2.0539237576617023e+01
-1.2181920085063110e+01
--2.2501538940084212e-01
--2.5952864764468277e+01
-1.2180754203824122e+01
--4.9271688144408560e-01
--2.4793254277182470e+01
-1.2180754203824122e+01
--4.9271688144408560e-01
--2.4793254277182470e+01
-1.2196744181264071e+01
--2.8697807388194196e-01
--2.5870040781920903e+01
-1.3303823577058785e-01
-1.9843259159407851e+00
--2.1364229695288017e+01
-1.3141729958002628e+01
-9.0430225115116736e-01
--3.2932038153226848e+01
-1.3543593248548779e+01
-3.1651574337129895e-01
--3.0460557781225905e+01
-1.4350762987551706e+01
--1.9068723436733612e-01
--2.9072380756167622e+01
--4.9830262615646798e-02
-2.0264909170512682e+00
--2.1515872463075592e+01
-1.3466368410190404e+01
-3.3706815810004392e-01
--3.0640577987967891e+01
-1.2200674862663542e+01
--3.6122713583409888e-01
--2.5936046282064822e+01
--9.6739315769044487e-01
-2.4906316877679169e+00
--2.2684636059892494e+01
--1.0053264383819582e+00
-2.4456910204186442e+00
--2.2505557150614315e+01
-3.2310193550198023e+00
-9.7704107427042985e-01
--2.0631822651560313e+01
--2.5347700907330584e-01
-2.0314042093103573e+00
--2.1543066018724225e+01
--2.5612372017404494e-01
-2.0212007920454957e+00
--2.1533417409149859e+01
-1.2327474301449275e+01
-8.2394898128482177e-02
--2.9076749760760819e+01
-1.4784720568912579e+01
--5.8436681226303322e-01
--2.9796012340232920e+01
-1.3233732437369561e+01
-4.3617139610925748e-01
--3.2233563714326159e+01
--9.7790607314862152e-02
-1.8039104246498225e+00
--2.1301615709266425e+01
-1.2330881626272161e+00
-1.2759305407212012e+00
--2.0514512093906518e+01
-1.3423218708992488e+01
-2.6534831902584799e-01
--3.1877222119322273e+01
-1.3518977097551842e+01
-2.4839126884971824e-01
--3.2034514253082683e+01
-5.7318701514963033e+00
-4.7886696244335597e-01
--2.2741445965531369e+01
--1.1760276053080623e-01
-1.7129398745454143e+00
--2.1238593406229079e+01
-1.2143187594884933e+01
--7.2274937432431297e-01
--2.5832152314215687e+01
-7.0404693909119036e+00
-2.0991509842238898e-01
--2.3337512373619429e+01
-6.8688654140855512e+00
-2.0903367353984256e-01
--2.3331354954134600e+01
-1.3473181606308664e+01
-8.6798467018380246e-02
--3.1944334985032896e+01
-1.3531880438447050e+01
--6.0947253234251285e-02
--3.1198079934690941e+01
-4.1948751210250856e+00
-4.9010822075906568e-01
--2.1151044870839794e+01
-5.9084726771392733e+00
-3.6290326896588360e-01
--2.2966436152501252e+01
-7.5340343245250085e-01
-1.2589135357668799e+00
--2.0639046550245276e+01
--1.7985605716984394e+00
-2.9781487089834311e+00
--2.6317577461075032e+01
-1.3614055347061283e+01
--1.7118209443393126e-01
--3.1221018707725914e+01
-1.0524327528407411e+00
-1.1191236679068324e+00
--2.0488024729506840e+01
-1.5217448577658153e+00
-1.0008567576721843e+00
--2.0477541657640767e+01
-1.3638557487556806e+01
--2.2772193087123915e-01
--3.1267504905791860e+01
--2.5665973147340497e+00
-3.3140064358563772e+00
--2.7751017703469369e+01
-1.2170572537607338e+01
--1.0706393869228459e+00
--2.5724996853287259e+01
--1.8632945749333789e+00
-2.7864135211816898e+00
--2.6026704382261336e+01
-1.7194827835568768e-01
-1.3013668300669476e+00
--2.0982188316457190e+01
--3.5761135460088669e+00
-5.5219437394678090e+00
--4.0531989375785948e+01
--3.5761135460088669e+00
-5.5219437394678090e+00
--4.0531989375785948e+01
-3.2443139255844189e+00
-1.6934649900939955e-01
--1.9854143585648437e+01
--2.1162635803854490e+00
-2.5060972593732602e+00
--2.5498567345036729e+01
--2.1448799143044225e-01
-1.2195622310636951e+00
--2.1101221711871229e+01
-5.1511343420585154e-01
-9.3249705722951826e-01
--2.0627197077377403e+01
--2.4241150201828512e-01
-1.1947139994330889e+00
--2.1102564329118451e+01
--2.2062573832432975e+00
-2.4235452678981892e+00
--2.5396554479740136e+01
--2.7825633455764378e+00
-2.8553716682784511e+00
--2.7136390217056519e+01
--2.1851811489773594e+00
-2.3817034691998540e+00
--2.5342324584332406e+01
--2.3784549266601176e+00
-2.4033993478008591e+00
--2.5396661952532266e+01
--1.7912947225956131e+00
-1.8960260820419397e+00
--2.3473036120081041e+01
-8.1003322598610883e-01
-6.9523407066811260e-01
--2.0449248899563102e+01
--3.2331368142748423e-01
-1.0991298960132074e+00
--2.1092068515002456e+01
-2.8003269041435208e-01
-8.5075192171234681e-01
--2.0802525502487800e+01
-1.4605442755968985e+01
--1.6470868475816984e+00
--2.9528130513117429e+01
-1.2030439739677655e+01
--1.7135698309092458e+00
--2.5697294555906197e+01
-1.2030439739677655e+01
--1.7135698309092458e+00
--2.5697294555906197e+01
--3.4499877024023156e+00
-2.7571589140827180e+00
--2.6948970161610330e+01
--3.4468092131567785e+00
-2.7471066643604316e+00
--2.6961828605312441e+01
-1.0533553426045783e+00
-4.9286572765074632e-01
--2.0424155279910824e+01
-1.1217145003479141e+00
-4.4017839062850256e-01
--2.0370772018407965e+01
--2.4791548457400103e+00
-2.1380489374977665e+00
--2.5066149624492521e+01
-6.2828501921551521e+00
--7.4485726506365635e-01
--2.1931258646048832e+01
--1.3886132834616813e+00
-1.4517526912151928e+00
--2.2324076390565846e+01
-1.2167818962201322e+00
-3.9473302306847297e-01
--2.0362892507785826e+01
--2.7519817865011560e+00
-2.4661838937552356e+00
--2.6819174428147779e+01
--7.9591270320068719e-01
-1.0923718446784469e+00
--2.1483998517292605e+01
-4.2461649141144059e-01
-6.0379250872171286e-01
--2.0580347862386827e+01
--4.0022445597760709e-01
-9.2957963255542608e-01
--2.1261137963775489e+01
--3.3678500743186914e+00
-2.6121347865393378e+00
--2.7065489900215361e+01
-8.8298646110571721e-01
-4.3086706372278910e-01
--2.0454289741718931e+01
-8.8298646110571721e-01
-4.3086706372278910e-01
--2.0454289741718931e+01
--4.7569001880412237e-01
-8.9152949641831658e-01
--2.1307010712517041e+01
-4.0610558507494838e+00
--4.2188680385096544e-01
--2.1105092114866810e+01
-2.0542393871253846e+00
--5.2845211085553061e-02
--2.0278717523037773e+01
-5.1120321548872849e-01
-3.4928533278208712e-01
--2.0502061073813426e+01
-3.4604148259028094e+00
--4.3405150520687613e-01
--2.0734326665771622e+01
-6.5987662285732729e-01
-2.8804520200385503e-01
--2.0527606933592072e+01
-6.5987662285732729e-01
-2.8804520200385503e-01
--2.0527606933592072e+01
-1.6350170822491674e+00
--7.6766394483337103e-03
--2.0297957788472480e+01
-2.0187455307206026e-01
-3.9757348804838294e-01
--2.0628302735384693e+01
-2.1570636695254790e+00
--2.1232603109726148e-01
--2.0331121490136706e+01
-1.0175540468237806e-02
-4.5671308971314589e-01
--2.0915408836059406e+01
--1.8094607264849711e+00
-1.2074481098629142e+00
--2.3062536921513740e+01
--1.8094607264849711e+00
-1.2074481098629142e+00
--2.3062536921513740e+01
-2.4904286685196637e+00
--3.8470083725382248e-01
--2.0391551487989059e+01
-2.4904286685196637e+00
--3.8470083725382248e-01
--2.0391551487989059e+01
-1.1198031066110377e+00
-3.7947955194291699e-03
--2.0367225671471122e+01
--1.9741428724602279e+00
-1.2792973879281690e+00
--2.3462339494047065e+01
-4.7103394229782669e+00
--9.2751059716819106e-01
--2.1015103403616333e+01
-8.9198720016214550e-01
-4.6631248717350929e-02
--2.0425073959799864e+01
-6.5819304826197618e+00
--1.3495302411014751e+00
--2.1882701257578464e+01
-1.8667492008442765e-01
-2.5500846640059782e-01
--2.0659917873637578e+01
--1.5683609956860003e+00
-9.2303354830214657e-01
--2.2548116325688458e+01
-1.1979784962554163e+00
--1.3735398460625445e-01
--2.0453920954590902e+01
-1.3929486676482323e+00
--2.2315540405599832e-01
--2.0327133677987415e+01
--2.5414366720142678e+00
-1.3735140437631650e+00
--2.4043652950324631e+01
--8.9759104662552136e-01
-5.6302230789501173e-01
--2.1471561706728082e+01
-4.4793933072783085e+00
--1.1220637595495437e+00
--2.0749627487090166e+01
--1.6045519515659401e-01
-2.3904278582977942e-01
--2.0889548433490173e+01
--7.3070152779209849e-02
-1.5481062041326127e-01
--2.0845460847787180e+01
-2.9966701669560786e-01
--4.2360203718649478e-03
--2.0720485848371407e+01
--1.3875680396695491e+00
-6.4123148111197925e-01
--2.2242399272807287e+01
-2.6689354695304877e+00
--7.4665061886355211e-01
--2.0490758598362909e+01
-1.9024295978477912e-01
--2.9394815357242400e-02
--2.0702041076638217e+01
--2.1993533308302711e+00
-9.9106743994772672e-01
--2.3648514834492630e+01
--3.6314378668717340e+00
-1.6001533945941304e+00
--2.5486875920481296e+01
-4.3073228709703084e+00
--1.2590044813476486e+00
--2.0587794107108760e+01
-1.4789756657209667e+00
--5.1704911006449217e-01
--2.0355870178056787e+01
-1.8467421275667322e+00
--6.1645763052329394e-01
--2.0377666521572557e+01
-1.8713409622126949e+00
--6.0938052349912120e-01
--2.0435019568923018e+01
-4.6456984203217893e+00
--1.3452605571510674e+00
--2.0907379610764366e+01
-4.2164689051508493e+00
--1.2904854046757648e+00
--2.0563858682577617e+01
-5.5443718395930119e+00
--1.6702376396920535e+00
--2.0697920061593003e+01
--1.5062369059788465e+00
-5.2782039808039327e-01
--2.2455134834571787e+01
-3.1788928887242300e+00
--9.7716531893287861e-01
--2.0941642077955475e+01
--9.7678609520199733e-01
-2.3954697637954522e-01
--2.1656337165695874e+01
-5.1451664689406780e+00
--1.5913022617729453e+00
--2.0979050027084334e+01
--1.7616138850288547e+00
-5.3523741251297552e-01
--2.2798332452713638e+01
-5.3343740504168942e+00
--1.5715547150749662e+00
--2.1700225732650964e+01
--3.9844024474199422e+00
-1.4515268387825906e+00
--2.5328583409050641e+01
--7.0881382127182202e-01
-5.4740437262680110e-02
--2.1395288778743431e+01
--3.7973618792521631e+00
-1.2842921231000899e+00
--2.5017607535438195e+01
--3.7885207141566122e+00
-1.2882528068678845e+00
--2.5074085294479215e+01
-1.0141461254906814e+00
--6.2694954261591351e-01
--2.0464068985860099e+01
-2.7074283962652124e+00
--1.0935996248120374e+00
--2.0633071118819775e+01
-2.9087719501062632e+00
--1.1363264193511551e+00
--2.0707310832476278e+01
-2.3299333743279891e+00
--1.1395474178466762e+00
--2.0542607383416627e+01
--2.2395000084716523e+00
-4.3312437555780237e-01
--2.2908254948714177e+01
--4.0624985025616300e-01
--2.9071903280068562e-01
--2.1071572855895361e+01
-2.0952265469023486e+00
--1.0726171751246887e+00
--2.0569929721010954e+01
--3.2313393021161794e+00
-8.8825972233567885e-01
--2.4706981342658903e+01
--1.1729219829163464e+00
--1.4758863843764264e-01
--2.1816789860389555e+01
--1.1729219829163464e+00
--1.4758863843764264e-01
--2.1816789860389555e+01
--1.0472372474672447e+00
--3.4117514136435856e-01
--2.1701360134034395e+01
-4.9150446223197646e+00
--2.2698513261752198e+00
--1.9974034977569378e+01
--1.0205449423000053e-01
--7.4752021525472079e-01
--2.1108696479266420e+01
--4.7300238977293618e-01
--6.9077937669876277e-01
--2.1415763928060638e+01
--1.0022741885539130e+00
--5.2858536070330564e-01
--2.1734442917679385e+01
--2.5131366927158014e+00
-2.6864909258050053e-03
--2.2775985188740073e+01
--9.6271856465079919e-01
--6.6797254111231552e-01
--2.1515256462959048e+01
-2.3451918262706934e+00
--1.7585327900330432e+00
--2.0190941329806328e+01
-2.2881244367912466e+00
--1.7663432382583819e+00
--2.0196216186046467e+01
--1.6927746677244226e+00
--4.8323806778285316e-01
--2.1646437811023336e+01
-2.1954749295941216e+00
--1.7664726114248688e+00
--2.0169188143780978e+01
-1.9407862045717978e+00
--1.7005331432999056e+00
--2.0240939068678895e+01
--7.2722823493845423e-01
--8.3556640470193388e-01
--2.1332170436055083e+01
--7.2722823493845423e-01
--8.3556640470193388e-01
--2.1332170436055083e+01
--3.6495705139021895e+00
-1.9727614193570844e-01
--2.3875152674171396e+01
--7.8775519399497085e-01
--9.2784527002224448e-01
--2.1227115017237505e+01
-3.9902773886274572e+00
--2.4544482619992474e+00
--2.0046383805225997e+01
-4.6978018136336237e+00
--2.6216095466825178e+00
--2.0652685345308981e+01
-2.6952521044243802e+00
--2.1293433748677648e+00
--2.0370703988921516e+01
-2.6952521044243802e+00
--2.1293433748677648e+00
--2.0370703988921516e+01
-3.7073405180262808e+00
--2.4309982645181467e+00
--2.0429141051821759e+01
--3.6701235753658707e+00
--2.9966759310017951e-02
--2.3291259206122152e+01
--3.3651379183315733e+00
--1.3742893161393163e-01
--2.3346574255387292e+01
-4.8402108246653963e+00
--2.8211609388697139e+00
--2.0222935928217737e+01
-4.8402108246653963e+00
--2.8211609388697139e+00
--2.0222935928217737e+01
--3.8016252892355413e+00
--8.2646687453083192e-02
--2.3287678701661395e+01
--8.8675567616391948e-01
--1.1396149982120529e+00
--2.0955078441572240e+01
--3.4193554998037929e+00
--2.3474611336717655e-01
--2.3004191814916272e+01
--3.5366884117998301e+00
--2.3185989555146330e-01
--2.3073682265170540e+01
--1.3482862796599959e+00
--1.0098040845349632e+00
--2.1294256731818031e+01
-9.8692474503561528e-02
--1.5302104133526084e+00
--2.0567141156649424e+01
--7.6283578057618470e-02
--1.4804505525162199e+00
--2.0583294249417545e+01
-3.2950302695304390e+00
--2.5501452778293436e+00
--2.0240565968927626e+01
-9.0348672073935310e-01
--1.8529074607318172e+00
--2.0335118601934802e+01
-9.0348672073935310e-01
--1.8529074607318172e+00
--2.0335118601934802e+01
--2.9978411661970141e+00
--5.2284817696616626e-01
--2.2839542776587358e+01
--3.3449899965084726e+00
--4.2577276947614712e-01
--2.2919573174366473e+01
--2.9969608813900952e+00
--5.6277909018165506e-01
--2.2767079122033749e+01
--3.4507647031849178e+00
--4.2036641352294146e-01
--2.2960026576859029e+01
-3.5801438673186028e+00
--2.7420605420290181e+00
--2.0027683104934471e+01
-1.1619528079434871e+00
--2.0003749887604050e+00
--2.0280567250436391e+01
--3.2251949484658766e+00
--6.6469970372815990e-01
--2.2490671820134800e+01
-2.7764932413767762e-01
--1.8477295587461009e+00
--2.0477705762782328e+01
-5.4640779488234625e-01
--1.9400340004187797e+00
--2.0558922802359795e+01
-5.4640779488234625e-01
--1.9400340004187797e+00
--2.0558922802359795e+01
-2.7860340602633351e+00
--2.6435592795184308e+00
--2.0032314785786387e+01
-1.9585150597823711e-01
--1.8653739473940785e+00
--2.0533758552554215e+01
-2.7576807252270346e+00
--2.8211519604745985e+00
--1.9859398475186737e+01
-3.1601473633869608e+00
--3.0097725881323822e+00
--1.9430788154387894e+01
-3.1601473633869608e+00
--3.0097725881323822e+00
--1.9430788154387894e+01
--2.8394087365881879e+00
--1.0835853629882859e+00
--2.2140038302198946e+01
--1.7637684369109665e+00
--1.4896823129533505e+00
--2.1606529084584292e+01
-2.2622535302655509e+00
--2.8367751577713483e+00
--1.9865740874017767e+01
-4.9229739847177836e+00
--3.6366562529524553e+00
--2.1170210116665185e+01
-4.7771086594023853e+00
--3.5868585311855328e+00
--2.1372800511563369e+01
--3.1122726136747714e+00
--1.1165926459243463e+00
--2.2576307003433399e+01
--1.8291086826659064e+00
--1.6322829040181517e+00
--2.1435508993594752e+01
-1.8308440315187620e+00
--2.8590223120324301e+00
--1.9812770141297460e+01
-9.9336144391111436e-01
--2.5844676617947142e+00
--2.0252346264856861e+01
--2.8381152376916612e+00
--1.3468079923246243e+00
--2.1750096740281219e+01
--2.3047189974866122e+00
--1.5221256922689825e+00
--2.1411160078697019e+01
-1.4857263425134579e+00
--2.7656526111385031e+00
--1.9937071030584065e+01
-2.1187116459730997e+00
--2.9930021101633262e+00
--1.9765253401124777e+01
--1.2408768374208721e+00
--1.9218548800090982e+00
--2.0895427492595779e+01
-1.5822388571777282e+00
--2.8640241868327814e+00
--1.9817771265615995e+01
--1.6816465928804381e+00
--1.8077422743481173e+00
--2.1040814030438444e+01
--8.8196817018490004e-01
--2.0723002945290090e+00
--2.0710605893134431e+01
-1.3257623593552827e+00
--2.7930509372632852e+00
--1.9911908176550835e+01
--2.8107730442318433e+00
--1.4627097834994423e+00
--2.1506485719532225e+01
-4.3999706255006182e-01
--2.5183048901550658e+00
--2.0336957692973542e+01
--2.9885963433551574e+00
--1.4260073517901994e+00
--2.1500049099667436e+01
-1.8160637328163565e+00
--3.0165978862068643e+00
--1.9834875258503036e+01
-2.1659883907597766e+00
--3.1655725069698728e+00
--2.0016560302266424e+01
-6.1288185551658869e-01
--2.7174696138117778e+00
--1.9906286816347919e+01
-8.2983017998431718e-01
--2.8207134098739570e+00
--1.9914426369219729e+01
--7.4911932502098943e-01
--2.3162603195988569e+00
--2.0598952850014452e+01
-1.2190732823601973e-01
--2.6018691765532123e+00
--2.0097158529593656e+01
-1.6436004751308981e+00
--3.1171889316459680e+00
--1.9916025946483398e+01
--6.2924170230632737e-01
--2.4258825375794180e+00
--2.0286873622252703e+01
--7.5359483080331524e-01
--2.3852270437875451e+00
--2.0480417329933168e+01
-1.4427020417274755e-01
--2.7129426775236496e+00
--1.9942908179436063e+01
--1.7114027815512602e-02
--2.6648351224182383e+00
--2.0153066400851454e+01
-2.4030983587037409e+00
--3.4302761505057924e+00
--2.0292102459109294e+01
-3.8117244326317006e+00
--3.9526458483831735e+00
--2.1247729488921589e+01
-3.8117244326317006e+00
--3.9526458483831735e+00
--2.1247729488921589e+01
--1.1067271777487100e+00
--2.4360422515690994e+00
--2.0476820302641322e+01
-1.9037327728315736e+00
--3.4629071665515121e+00
--2.0324466594296350e+01
-1.8895966807477256e+00
--3.4461951320174768e+00
--2.0274063806652446e+01
-5.1679522247040603e+00
--4.5521533797472271e+00
--2.2237629905030165e+01
--3.1155218789626449e-01
--2.8534223226749886e+00
--2.0441669692412088e+01
-5.0570724542643815e+00
--4.5325457450462796e+00
--2.2125069314447607e+01
--1.4538986568627824e-01
--2.9185873767871793e+00
--2.0437881047155003e+01
-1.3983492383732929e+00
--3.4546284217494359e+00
--2.0319448722908859e+01
-1.3983492383732929e+00
--3.4546284217494359e+00
--2.0319448722908859e+01
-1.6097566203991411e+00
--3.5353807369781318e+00
--2.0173996302450263e+01
--4.7870313452032052e-03
--3.0340184896655984e+00
--2.0295983046131497e+01
-1.6910368256409738e+00
--3.6413921206007425e+00
--2.0533239199463903e+01
-4.6131543966319786e+00
--4.5961725929241117e+00
--2.2276470545325360e+01
-2.9093232327426041e-02
--3.2006033251867008e+00
--2.0470947580560559e+01
-1.1437208718838669e-01
--3.2673701044297436e+00
--2.0556934331124790e+01
-1.5326398521241744e+00
--3.7111876417093894e+00
--2.0587242384364011e+01
--2.1253723654647176e+00
--2.5862132491658087e+00
--2.2026519508630450e+01
-7.4929698862685867e-01
--3.6837760475784558e+00
--2.0122604925939083e+01
--2.4002181662814151e-01
--3.3538140921581321e+00
--2.1030405432229571e+01
-1.0773839741668428e-01
--3.5180245895839231e+00
--2.0868211611191199e+01
-2.2495602858664574e+00
--4.2819889376458500e+00
--2.1205690355798090e+01
-2.2932917046606991e+00
--4.3905284890534677e+00
--2.1270062999048182e+01
-7.0004641768008613e-01
--3.8704824363690480e+00
--2.0754129069489096e+01
-7.3042243641105276e-01
--3.9178373127842003e+00
--2.0840624087713937e+01
-2.2914231826401195e+00
--4.4958144563520959e+00
--2.1371378098081426e+01
-9.7169458708115053e-02
--3.8155060966147900e+00
--2.1164886143440818e+01
-2.0750651936385007e+00
--4.5943048021977138e+00
--2.1380849531424818e+01
-2.0750651936385007e+00
--4.5943048021977138e+00
--2.1380849531424818e+01
-1.7676973373249087e+00
--4.5336831064255909e+00
--2.1442900165843497e+01
--3.5964934494353046e-01
--3.9531495685228091e+00
--2.1729031985317459e+01
--5.5602457621121604e-01
--3.9046644821633962e+00
--2.1542819748699156e+01
--2.0850898724776914e+00
--3.5817498012598001e+00
--2.2956280347466453e+01
--2.0245293085463421e+00
--3.6680224932497936e+00
--2.2859349873091364e+01
--5.5690964101204832e-02
--4.2894562454619276e+00
--2.1819233331532221e+01
-3.0200203686269980e+00
--5.3334484806755391e+00
--2.2150402880991798e+01
-2.7393111114705260e+00
--5.2324642225458451e+00
--2.2055819918523547e+01
--1.1195017565714611e-01
--4.3366867429424030e+00
--2.1829899281718735e+01
-2.4725114921972411e+00
--5.2324711321064772e+00
--2.2078709762467394e+01
--1.2505981418652645e-01
--4.3893222778043972e+00
--2.1824491424776983e+01
--2.3057117579394317e+00
--3.7636806389742770e+00
--2.2989745151663541e+01
--1.3456852868652747e+00
--4.3214388505905523e+00
--2.2929818145052469e+01
--2.5469265987947924e+00
--3.9981535126087473e+00
--2.4046391643724526e+01
--1.4327383224816219e+00
--4.3819086335210020e+00
--2.3188151990012472e+01
--4.8636843171921912e-01
--4.7596843637251585e+00
--2.2664971218812770e+01
--3.1387448074532340e+00
--4.2257282298300058e+00
--2.4949657275860954e+01
-2.9706582884492243e+00
--6.5719464714033506e+00
--2.2242041108532515e+01
--3.4894475404836025e+00
--5.0566094373479018e+00
--2.4689116609922966e+01
--8.8057566458697831e+00
--3.5843936009364543e+00
--2.7795982711213341e+01
--8.6667205477219493e+00
--3.6632331386636015e+00
--2.7649218626745490e+01
-7.4282181646793699e-01
--6.4903921216896201e+00
--2.2112148183133570e+01
-1.1197953613047906e+00
--6.6846136238038536e+00
--2.2331295703235629e+01
-5.3370467205185146e-01
--6.5420103485607486e+00
--2.2411573789652014e+01
-6.6003925186210910e-01
--6.6109698473334237e+00
--2.2412040422865132e+01
-5.4078773096437327e-01
--6.6681565030065331e+00
--2.2475743113768196e+01
-4.6320368977067672e-01
--6.6461768406627986e+00
--2.2420815232965058e+01
-1.8337554627233084e-02
--6.6231633649121253e+00
--2.2744277115796450e+01
-5.7360714534620272e-01
--6.8164572350863946e+00
--2.2495606969145459e+01
-5.7360714534620272e-01
--6.8164572350863946e+00
--2.2495606969145459e+01
--1.2495063445563350e+00
--6.3419594961808814e+00
--2.3194414812809406e+01
--6.8627160247608590e+00
--4.8497327038850351e+00
--2.6825337997067169e+01
--6.9199715742678158e+00
--4.8454003312351590e+00
--2.6891165606005089e+01
-4.7490158035491428e+00
--8.4095683517255146e+00
--2.1136124972768908e+01
--6.0259700120408937e+00
--5.4517683190248025e+00
--2.5124736088686426e+01
--4.3289972469925591e+00
--6.0598163706549206e+00
--2.4541681395789123e+01
--4.1992038376392280e+00
--6.1702733449041363e+00
--2.4440931217063788e+01
--4.0773019933607371e+00
--6.1979207598776691e+00
--2.4345778996688924e+01
--3.3447847298689273e+00
--6.6160276341938138e+00
--2.3750747799679317e+01
--5.3116063433214498e+00
--6.1134235823736738e+00
--2.4153553118883458e+01
-3.4231567406167955e+00
--8.7976383331180603e+00
--2.0617810294211520e+01
-3.4708220330977135e+00
--8.8459032391174617e+00
--2.0720636270546581e+01
-2.0217036053000488e+00
--8.4438109957678122e+00
--2.1315664780941216e+01
-1.8665708210484961e+00
--8.3704756880037525e+00
--2.0941641569963519e+01
-1.4665581879322713e+00
--8.3764286575946532e+00
--2.1214682853207297e+01
-4.0190102379383834e+00
--9.3366808774805925e+00
--1.9930646037466971e+01
-4.6797500992202865e+00
--9.5138621954254674e+00
--1.9391527184027048e+01
--5.1968734769555489e+00
--6.6325658816344886e+00
--2.3546274544919783e+01
-1.4313960500728493e+00
--8.6916955947587855e+00
--2.0850141398412351e+01
--5.7389885800749676e+00
--6.5315193540733754e+00
--2.3737348953967832e+01
--5.7389885800749676e+00
--6.5315193540733754e+00
--2.3737348953967832e+01
--3.5073982747168859e+00
--7.2161118646885587e+00
--2.2657890973744941e+01
--5.5182228740237766e+00
--6.6369536537828457e+00
--2.3571778326618450e+01
--3.5592805612005098e+00
--7.2214636945125577e+00
--2.2650025117906360e+01
-3.2506135612207152e+00
--9.3106010639278978e+00
--1.9892921461466123e+01
-4.0649515809823420e+00
--9.5332010408191916e+00
--1.9318206140217026e+01
-2.9734029427585886e+00
--9.3284772941410168e+00
--1.9849776615795992e+01
--5.4700055911612360e+00
--6.9190277625951477e+00
--2.3372985685839616e+01
-3.1686211808499438e+00
--9.6049562045490049e+00
--1.9522310361220768e+01
-3.4599002673492167e+00
--9.7011096862048518e+00
--1.9393015741864950e+01
--2.4549383175218766e+00
--8.0492939945691049e+00
--2.2463520640263372e+01
--7.6256584123115694e+00
--6.4317633950319371e+00
--2.3812876927474491e+01
-3.9128429577127548e+00
--9.9521174146430091e+00
--1.9169353474692784e+01
-3.1348184914906585e+00
--9.8018438414050806e+00
--1.9423684004003739e+01
--3.7306885670247438e+00
--7.8175111135312116e+00
--2.2323060376322342e+01
-9.8887837748732765e-01
--9.2443295830949435e+00
--2.0307175404331883e+01
-9.5266423089913044e-01
--9.3499600986060045e+00
--2.0165152761780561e+01
--7.9494478483222082e+00
--6.6401756077945091e+00
--2.3515324123295997e+01
--5.6305978766720175e+00
--7.3624999754640283e+00
--2.2559927966708099e+01
--5.2450220154004612e-01
--8.9809520648671270e+00
--2.0301138022753623e+01
-2.9831816766251076e+00
--1.0243884907128297e+01
--1.8827716582202608e+01
-9.2837156635586027e-01
--9.7559379509861621e+00
--1.9609951718300980e+01
-1.1931271096075367e+00
--9.9713833320344296e+00
--1.9334332896033750e+01
--8.6513650314242752e-01
--9.8596240461390394e+00
--1.9609157356929455e+01
--5.3041831881565598e+00
--8.7491072345730760e+00
--2.1362283650385230e+01
--3.4130138495838604e+00
--9.3219939213303054e+00
--2.0483314334763861e+01
--3.4894381901823435e+00
--9.2406927583356087e+00
--2.0045664704807862e+01
--2.9497484821473985e-01
-2.3410253591134992e+01
--3.9199674641727341e+01
--2.9497484821473985e-01
-2.3410253591134992e+01
--3.9199674641727341e+01
-1.6594361518425956e+01
-2.7214287088812757e+01
--4.9472046891890251e+01
-1.3930167587534330e+01
-1.5871817787653780e+01
--3.0293173776359030e+01
-9.1620274912624939e+00
-2.2683952905861563e+01
--4.2052732180809429e+01
-1.7321600875456344e+01
-2.7694298583827916e+01
--5.2975023793321427e+01
-1.5783216794356173e+01
-1.5175412289735783e+01
--3.0784716734166800e+01
-9.7759181721116306e+00
-2.6717382823327011e+01
--5.0158161845045100e+01
-1.5243850212076486e+01
-2.6341615966959665e+01
--5.1455025148800345e+01
-1.4801887675984759e+01
-1.5750280495665502e+01
--3.2836917401316491e+01
-1.8009894256174157e+01
-2.5847872512917981e+01
--5.1943839488276240e+01
-6.3521337948484691e+00
-2.2393160926686011e+01
--4.2957402799759230e+01
-1.3624758587581532e+01
-1.1836054614225176e+01
--2.6059058183035628e+01
-1.7969010687799251e+01
-2.5412600757380343e+01
--5.2234962374025699e+01
-1.3281908669261563e+01
-1.3827250964507121e+01
--2.9956256885236886e+01
-6.2810462728256722e+00
-2.2222642200915537e+01
--4.3453481548784325e+01
-4.4252515348862485e+00
-2.3386983621126955e+01
--4.5075676355391117e+01
-1.4207732061374106e+01
-1.5993010117793526e+01
--3.4322247217257448e+01
-1.2586067140606971e+01
-1.1131889598550103e+01
--2.5105657485011559e+01
-1.0384825598843701e+01
-2.4975107461059189e+01
--5.0620741100591559e+01
-1.3214864970504705e+01
-1.1684989995152860e+01
--2.6736446601629371e+01
-6.3356697213040380e+00
-2.0734312173026009e+01
--4.2470443690770274e+01
-1.4240300190115434e+01
-1.5448220228610539e+01
--3.4789242696375680e+01
-9.9221114130632895e+00
-2.0727725665952729e+01
--4.3741605248682809e+01
-1.2303574477979569e+00
-2.1314408626379706e+01
--4.2258831062288969e+01
-1.2946578342172881e+01
-1.5072778290513895e+01
--3.3873150560198958e+01
-1.4374960838050994e+01
-1.2956525243634095e+01
--3.0276083234292336e+01
-2.2576090590170296e+01
-2.8120624017409177e+01
--6.2599837727118882e+01
-1.3722975866564189e+01
-9.3301805006346274e+00
--2.3332035841849798e+01
-1.7564472473105912e+01
-2.4522210026239652e+01
--5.4512748296236460e+01
-1.9640947421323315e+01
-2.7018249766873225e+01
--5.9878668198166743e+01
-2.5192213394784870e+00
-2.0720840047131993e+01
--4.2426298470451030e+01
--2.2622768679237519e+00
-2.1697807454916315e+01
--4.2781945981298271e+01
-1.3002953659911155e+01
-1.0009837435922782e+01
--2.4763840282418681e+01
-1.3002953659911155e+01
-1.0009837435922782e+01
--2.4763840282418681e+01
-1.5197700514363506e+01
-2.4961750870862328e+01
--5.4861058926158741e+01
-8.1204752981456227e+00
-2.3360438411382901e+01
--5.0003276691166086e+01
-1.2821543253327590e+01
-1.3521228473136775e+01
--3.2223817923971723e+01
-1.3796738602776306e+00
-2.0703250696598037e+01
--4.3416796895685287e+01
--1.2519082026438364e+00
-2.1342936042709987e+01
--4.3774263274729897e+01
-1.1901352080796427e+01
-9.9024724896082574e+00
--2.5253996726737203e+01
-1.4777784714879653e+01
-2.6251066881189576e+01
--5.9599929264710113e+01
-1.3150892694138367e+01
-1.0861858583770481e+01
--2.7591790586820796e+01
-5.2784513895154541e+00
-2.2113169135746414e+01
--4.7786303043284811e+01
-1.3432415767716599e+01
-1.0502666313718905e+01
--2.7015150847050382e+01
-1.3013405179401717e+01
-9.6411019067127484e+00
--2.5367031132015583e+01
-1.5812155106489499e+01
-2.5018060616347253e+01
--5.7954598093844538e+01
-1.3493399227602602e+01
-2.3278151098349575e+01
--5.4665465249315176e+01
-1.4670878017035214e+01
-2.5483300910199347e+01
--5.9894788771938941e+01
-1.5106274747499471e+01
-2.5566810040866358e+01
--6.0272777082733917e+01
-1.3261556738539355e+01
-1.3596781578723414e+01
--3.4484915326707331e+01
-1.4861554753695044e+01
-2.5560122511531087e+01
--6.0363361964002642e+01
-1.4676595302314531e+01
-2.5474667011310192e+01
--6.0210050480171624e+01
-1.4898801306707377e+01
-2.5374935201471647e+01
--6.0184734098379813e+01
-1.3056156258194680e+01
-9.0127563758230362e+00
--2.5195289869158337e+01
-1.2961842174857928e+01
-1.0311228323981519e+01
--2.8077187860602312e+01
-1.3535753072373669e+01
-8.4005401718487782e+00
--2.4379148386922871e+01
-1.5830559969493951e+01
-2.5013960249728907e+01
--6.1086793913772524e+01
-1.3094667667168826e+01
-8.7881439152465148e+00
--2.5644104794113293e+01
-1.3094667667168826e+01
-8.7881439152465148e+00
--2.5644104794113293e+01
-1.2470005152309994e+01
-8.1199514072628265e+00
--2.4157335496980917e+01
-1.7846240103718799e+01
-2.3814153364401989e+01
--6.0099280107891808e+01
-1.3140849597784248e+01
-8.8937821620544071e+00
--2.6200135925663162e+01
-1.0330777921828084e+01
-2.3694823927543617e+01
--5.7100104972772257e+01
-1.6244822375479591e+00
-2.0779642435757612e+01
--4.7514452869765506e+01
-1.2540737246517836e+01
-9.3610106418319443e+00
--2.6761353952052520e+01
-1.5651405245975562e+01
-2.3178971665378846e+01
--5.8701269428616882e+01
-1.2359787120681753e+01
-8.1534337697140877e+00
--2.4800725672132913e+01
-1.2226196788986158e+01
-7.8484373367451692e+00
--2.4326769168543972e+01
-1.3412903395221559e+01
-8.1224081297592221e+00
--2.4924361763091039e+01
-1.2464909035571408e+01
-7.6919188059681307e+00
--2.4224204862259139e+01
-1.2365275476737324e+01
-7.9852350275334523e+00
--2.4909287798007409e+01
-1.2603887274391996e+01
-1.2190345541833560e+01
--3.4185046996399649e+01
--3.3979277438446664e-01
-2.1182172318502673e+01
--4.9274689988460146e+01
-1.1311116083704983e+01
-2.2612173350605371e+01
--5.7296204271302564e+01
-3.0663100829477417e+00
-2.0041046311238887e+01
--4.7951225581822136e+01
-1.4655651520748970e+01
-1.0420999478763356e+01
--3.2143829461046053e+01
-2.0631220160147636e+00
-2.0963683515320103e+01
--5.1239889669261423e+01
-1.2154105109790049e+01
-7.3557267019194601e+00
--2.4854361519452205e+01
-1.2037869258260848e+01
-8.2488125509595829e+00
--2.6924381855361162e+01
-1.2349763114493738e+01
-8.7862162658058054e+00
--2.7986276511596561e+01
-1.2585983608717456e+01
-7.4234593409526193e+00
--2.5720429559432002e+01
-6.9821492062703259e+00
-2.1443113334779696e+01
--5.6105994538527803e+01
-1.3135231125906421e+01
-7.7173546533633495e+00
--2.6767460955630220e+01
-1.8669824368890482e+00
-1.9648859268200301e+01
--5.0507556094657893e+01
-1.2758556759827963e+01
-8.0023283331674193e+00
--2.7279207643256868e+01
-1.2107832117148455e+01
-7.6791567268298939e+00
--2.6608075759552381e+01
-1.3212034997016575e+01
-7.4264115602229142e+00
--2.6232683727983282e+01
-1.3212034997016575e+01
-7.4264115602229142e+00
--2.6232683727983282e+01
-6.5213304664512028e+00
-2.0981942686599464e+01
--5.5999730883791827e+01
-1.2856753646797470e+01
-7.4458051837024621e+00
--2.6726983659915721e+01
-1.2925844068862274e+01
-7.2557576975170317e+00
--2.6559827086681651e+01
-1.4097626391920818e+01
-1.0413295956025676e+01
--3.4491219712971592e+01
-1.8919009229398327e+01
-1.8002492802395338e+01
--5.6107460796920471e+01
-1.3563977464211307e+01
-9.9434561475151426e+00
--3.3774635804100896e+01
-8.3779201478608361e+00
-1.7210986290924488e+01
--4.8631898222204640e+01
--2.3030982711498020e+00
-1.9336386778457609e+01
--4.9037503640209117e+01
--2.3030982711498020e+00
-1.9336386778457609e+01
--4.9037503640209117e+01
-1.2203348742240699e+01
-7.2420473305733415e+00
--2.6588385426948562e+01
-1.3825603115109972e+00
-1.9678420647150862e+01
--5.2204814571193715e+01
-1.0842433768348638e+01
-2.1005441593839873e+01
--6.0427491283785905e+01
--2.1736924300544782e+00
-1.7614102595709657e+01
--4.6048380191026475e+01
-1.3293550124411965e+01
-1.0184025078172718e+01
--3.5472641422761981e+01
--1.5279212771761888e+00
-1.8895385886110319e+01
--5.0071741978237789e+01
--1.5279212771761888e+00
-1.8895385886110319e+01
--5.0071741978237789e+01
-1.2423922885810994e+01
-7.6814715582085702e+00
--2.8889168728505165e+01
-1.1345773136838831e+01
-7.1761415982549783e+00
--2.7622426363988605e+01
--1.8617772206705960e+00
-1.8469977900554248e+01
--5.0192779078580699e+01
--2.7477245839617810e+00
-1.8160227229350809e+01
--4.9710849410720087e+01
--1.6957947017372610e+00
-1.7571744748921677e+01
--4.8908565844456952e+01
-3.6433611799900706e-01
-1.8163831365093461e+01
--5.2625753991067256e+01
-2.4782734170520196e-01
-1.6917582029061403e+01
--4.9534732338889043e+01
-1.2062202744592353e+01
-7.0219708514091277e+00
--2.9606893172870841e+01
--4.0298273596130196e-01
-1.6761039996706511e+01
--4.9070038767372850e+01
-1.2752301812155988e+01
-6.5823767106115003e+00
--2.8638779515823707e+01
-1.2799664544265266e+01
-1.0194060625114897e+01
--3.8821416305370548e+01
-1.3378530647915928e+01
-5.7207632653226810e+00
--2.6977001747545295e+01
-1.2488399838379188e+01
-5.8161826358156556e+00
--2.7422212731894220e+01
-1.2568680514825934e+01
-5.7791129778641332e+00
--2.7220235041671117e+01
-1.2618735937069479e+01
-5.6350560805838956e+00
--2.7272628910717589e+01
-1.2836941963178472e+01
-5.6031885779500916e+00
--2.7419160556943229e+01
-1.3203947121494759e+01
-9.1701636145112655e+00
--3.8007477270785678e+01
-1.3881848312854030e+01
-8.7863051224856914e+00
--3.7459548553095580e+01
-1.2609894453941333e+01
-5.5074576945061899e+00
--2.7656734138253107e+01
-1.1919698146813021e+01
-6.2540289033724665e+00
--2.9507410739405952e+01
-1.2581720191583038e+01
-5.6656916764130587e+00
--2.8334251816427660e+01
-1.2450539696824714e+01
-5.4029262511439873e+00
--2.7573089758379499e+01
-1.2803832293579623e+01
-9.0082494439574443e+00
--3.8716940280021667e+01
-1.2803832293579623e+01
-9.0082494439574443e+00
--3.8716940280021667e+01
-1.2985681610724274e+01
-4.3935861460268617e+00
--2.5448058871804996e+01
-8.9821676804403494e-01
-1.5999693547607787e+01
--5.2046402894810342e+01
-1.2840924955651474e+01
-5.0842943219372039e+00
--2.7581214047990663e+01
-1.4190162291220398e+01
-7.6430504625168441e+00
--3.5947542307386428e+01
-1.3715551949097897e+01
-1.0205225209828916e+01
--4.3416293564377270e+01
-1.2889231712998226e+01
-9.0763953935987445e+00
--3.9765602319250675e+01
--1.9107470316619228e+00
-1.5149060135174095e+01
--4.8390959429067451e+01
-7.3969784909552718e+00
-1.3974102821327140e+01
--5.2335038693822632e+01
-1.2519513913730480e+00
-1.5308798434490571e+01
--5.2252501718208848e+01
-1.3870601054987421e+01
-9.2426960974497696e+00
--4.3042544801571097e+01
-7.1698544651425591e+00
-1.3614436607547846e+01
--5.2033349783511717e+01
-1.3070275957736367e+01
-4.7480148554461694e+00
--2.8904106732213442e+01
-1.2997815255877766e+01
-4.5960498027351555e+00
--2.8556928818505078e+01
-5.6175523392056572e+00
-1.3048606832956350e+01
--5.0062969189815718e+01
-5.6175523392056572e+00
-1.3048606832956350e+01
--5.0062969189815718e+01
--3.5089512677526158e+00
-1.5017997760077622e+01
--4.9824681161057811e+01
--3.7618512450514308e+00
-1.4740660489939392e+01
--4.8695321776384375e+01
--3.5340509361441899e+00
-1.5632909328557222e+01
--5.1942197897645627e+01
-1.2905299608816925e+01
-8.2911871559789478e+00
--4.0541694854156660e+01
-1.3271995446881164e+01
-4.1501403621086599e+00
--2.7792076015500488e+01
-1.2968717492989189e+01
-8.1770342104494684e+00
--4.0293374870996857e+01
--4.2820510218876713e+00
-1.4299488787562359e+01
--4.7588158123179362e+01
-3.4168217604501261e+00
-1.2520665588660641e+01
--5.0276000328319640e+01
-1.4153252714357743e+01
-6.2567496330866259e+00
--3.7603320460499233e+01
-1.2467125573551538e+01
-4.7588198468832505e+00
--3.1327806823618598e+01
-1.2316367768786749e+01
-3.6460630351628156e+00
--2.8623682911278760e+01
-1.2316367768786749e+01
-3.6460630351628156e+00
--2.8623682911278760e+01
--3.1335515423425897e+00
-1.3995160050280267e+01
--5.1747802970768674e+01
-6.4216241541672821e+00
-6.9687251011083049e+00
--3.5072613634961336e+01
-1.3440238218175317e+01
-3.5283511153823355e+00
--3.0076806242786372e+01
-1.2743398073778424e+01
-3.6250064373849358e+00
--3.0196765465742516e+01
-3.5479826739195439e+00
-9.7185499215869910e+00
--4.4783985948488095e+01
-2.8155107684929055e+00
-9.9816261977702236e+00
--4.4960677080704158e+01
-2.6989457486687445e+00
-9.0096278073154643e+00
--4.1779027466996453e+01
-3.3358341278792887e+00
-9.5197373933232914e+00
--4.5276630595232525e+01
-1.2477552517210224e+01
-2.5638415757640809e+00
--2.7812516356483226e+01
-1.3840696307450909e+01
-1.7880574338385975e+00
--2.6871271327372426e+01
-1.2279042916955238e+01
-3.7444133348170272e+00
--3.2507806138308517e+01
-1.2312758415492313e+01
-3.7492834389392429e+00
--3.2668915888472149e+01
--2.3715173840719697e+00
-1.1065162152896175e+01
--4.7722991287814331e+01
-2.0932630040953391e+00
-9.2615413230630086e+00
--4.5124087424283999e+01
--1.2278726240660184e-01
-3.6108164800930176e+00
--2.0909658050395283e+01
-1.1214874273401405e+00
-8.8495320114901883e+00
--4.3002643264025480e+01
-1.3017756646226870e+01
-2.3050017108582406e+00
--2.9414180830247140e+01
-1.5178422699150633e+00
-8.7951857965549287e+00
--4.4121842484129751e+01
-1.4432164047362191e+01
-1.4601214006746011e+00
--2.7994008015549440e+01
-1.4599901783621988e+01
-1.5211512653946913e+00
--2.8178577587370182e+01
-2.5503860191548204e+00
-8.3836761331483256e+00
--4.4130874790765354e+01
-1.2819685910491845e+01
-2.5812145560931614e+00
--3.0982720004145541e+01
-1.2149076499661339e+01
-2.7911342485710193e+00
--3.1685768560463430e+01
--7.0644700918508652e-01
-3.6175301232298209e+00
--2.1763131565469180e+01
-1.3520647982871957e+01
-2.0355459523121886e+00
--3.0699018384026200e+01
-1.2248785205820822e+01
-2.1369769762654984e+00
--3.1304511775797234e+01
--5.1636462790220938e-01
-8.1951718482971394e+00
--4.3646669325887288e+01
-1.4028043929206181e+01
-1.0014805699529319e+00
--2.8880853430596730e+01
-1.3977244354618657e+01
-1.0719607912292095e+00
--2.9040511470793064e+01
-1.3670388252586958e+01
-1.0233311554241256e+00
--2.8353910182582428e+01
-1.4310933962746960e+01
-7.0464584460010604e-01
--2.8148294627653303e+01
-1.4310933962746960e+01
-7.0464584460010604e-01
--2.8148294627653303e+01
-1.2348802658250843e+01
-3.0403772822329234e-01
--2.4850139545431229e+01
-1.2243901549245519e+01
-1.6709127830436146e+00
--3.0992635311527188e+01
--5.8273835641691851e-01
-3.0880700795300822e+00
--2.2954258823522977e+01
--1.3320167874500655e+00
-7.8791732315655540e+00
--4.4148717382560221e+01
--7.1045860326106758e-01
-3.0385732894532729e+00
--2.3035597448524094e+01
-1.2246363438018944e+01
-1.2971461900440366e+00
--3.0817257311711177e+01
-1.2863413327812422e+01
-1.4904094791768987e+00
--3.2217790308019445e+01
-1.2335305280047315e+01
-1.3613401725886237e-02
--2.5579533047981993e+01
-1.4240718698223082e+01
-2.8662455559983102e-01
--2.9247150138948804e+01
-1.2323456297847944e+01
--2.2860902047132602e-02
--2.6352625182777629e+01
--1.4246659777897808e+00
-3.5765292883997231e+00
--2.6296300354057010e+01
--1.4246659777897808e+00
-3.5765292883997231e+00
--2.6296300354057010e+01
-1.2244208909641182e+01
--9.0808124862232220e-02
--2.6250927798296640e+01
--1.3356012656597525e+00
-3.6545921326972577e+00
--2.7161495794328701e+01
--1.4282085848491997e+00
-3.5339448690537951e+00
--2.6406730813647286e+01
-1.5410818439617744e+00
-9.8292026311965264e-01
--1.7830604591378002e+01
--2.1241638416446404e+00
-6.6809432491787790e+00
--4.2004231949947133e+01
--2.1043687863568978e+00
-3.7851313578796653e+00
--2.8374610316936675e+01
-1.4102100203015029e+01
--7.4806386858928792e-02
--3.0415009663802831e+01
-5.4989867323398411e-01
-1.5337354040499376e+00
--2.0793004339671242e+01
--1.6660094078161132e+00
-3.1385587302436426e+00
--2.6541637141399114e+01
--1.7367742732668106e+00
-3.0334674712934731e+00
--2.6304621662850064e+01
-1.8490515860705101e+00
-9.6819452524464822e-01
--2.0367174686488170e+01
--2.0054956765515728e+00
-3.0320847867832486e+00
--2.6248541324192278e+01
--2.6797092485836358e+00
-3.6066644463945776e+00
--2.8377263628372145e+01
-1.2128231782630380e+01
--8.5774658827005090e-01
--2.5795495291420757e+01
-8.1095628773031458e-01
-1.2445486069262865e+00
--2.0673564061841748e+01
-1.2232408881693823e+01
--7.8824271113791289e-01
--2.6648734533168309e+01
-6.9864539739296365e+00
-5.2182030131779862e-02
--2.3544394098614831e+01
--8.9513393525648452e-02
-1.5247672201916573e+00
--2.1277419687705223e+01
-3.3071186000634376e+00
-4.6126182236007579e-01
--2.0650141497968701e+01
-1.4022398934263560e+00
-9.0159386663408658e-01
--2.0427661929492448e+01
-2.8491960926839743e+00
-4.9011878897176042e-01
--2.0455680397679004e+01
-1.5127807528797460e+01
--1.4013844786799783e+00
--2.9355084421049245e+01
-2.8315681291796406e+00
-4.5423403198685214e-01
--2.0426187706752224e+01
-2.0705379936511497e+00
-6.2168607192186498e-01
--2.0330587142687222e+01
--6.2276338129557449e-02
-1.1883584596684897e+00
--2.1064704512265134e+01
--3.1226655840504898e+00
-2.9246869513080487e+00
--2.7367063928005614e+01
-7.0205851875730341e-01
-7.5795501564927237e-01
--2.0579977304242650e+01
--2.0051025177928299e+00
-2.2585579088414978e+00
--2.5337139340438391e+01
-1.5140251042995196e+01
--1.8725615141128160e+00
--3.0117474343591507e+01
-3.2048205875131947e-01
-8.3089572562080238e-01
--2.0795416974491172e+01
-3.8462077421383228e-01
-7.8796094425341423e-01
--2.0682588927624469e+01
-4.9838845372393775e-01
-7.5178395033421153e-01
--2.0654149213874913e+01
--2.1227092153983342e+00
-2.1642334755833295e+00
--2.5263218567592027e+01
--2.7742781827573610e+00
-2.4967342253765490e+00
--2.6742975357290383e+01
--2.8054873252155286e+00
-2.5030002406262208e+00
--2.6936367130624127e+01
-2.7784217084289869e-01
-7.0202893714962722e-01
--2.0782951398454362e+01
-2.7784217084289869e-01
-7.0202893714962722e-01
--2.0782951398454362e+01
-2.7597636884875438e+00
--4.0460818423742974e-02
--2.0394829371611390e+01
-2.8636081602271775e+00
--1.9374647833313846e-01
--2.0452390319220839e+01
--3.4672866584305169e+00
-2.3543269491706234e+00
--2.6694302880440091e+01
--2.2927178718606873e+00
-1.4959027327373360e+00
--2.4348051939843469e+01
--1.7127641935268576e+00
-1.1431803356398860e+00
--2.2873162626312141e+01
--1.8411179962897208e+00
-1.1663510083924704e+00
--2.3116903199672237e+01
--2.0892410830457506e+00
-1.2704904211986257e+00
--2.3296279896760279e+01
--6.3437717751510514e-01
-4.5107739712835793e-01
--2.1375767668253378e+01
--2.6483991925600434e+00
-1.2700611831178861e+00
--2.3906703145697445e+01
--1.7187999799831362e+00
-7.9568854575006809e-01
--2.2894380280139423e+01
--1.7536625524925653e+00
-7.8400450562054380e-01
--2.2826590306689454e+01
--6.1884651494083309e-01
-2.5378467167114638e-01
--2.1224054034504562e+01
-2.6001165676843128e+00
--7.7423291669991789e-01
--2.0464829283829552e+01
--3.7924749118416051e-01
-1.4400688684775656e-01
--2.1176163657493532e+01
-4.2451017612951008e+00
--1.2423536334451952e+00
--2.0604595661906174e+01
--3.5599673980393418e+00
-1.5184054559692750e+00
--2.5309131024820918e+01
--3.1476902692584470e+00
-1.3606389067698001e+00
--2.5358259265012510e+01
--1.9797737503265864e+00
-6.7031711529766613e-01
--2.3234886053991552e+01
--1.6802575265435588e-01
--1.1436600370243986e-01
--2.0948566393389072e+01
--1.4549403928732256e+00
-4.0802669623369775e-01
--2.2359700260601876e+01
-2.6604847193000332e+00
--1.0141145580629043e+00
--2.0546885312896457e+01
-2.2057639997311562e+00
--9.3588815468244668e-01
--2.0416697533977480e+01
--1.9678431383706269e-01
--1.8806481668612335e-01
--2.1007179498621355e+01
--1.9323105967682970e+00
-5.4248342695687346e-01
--2.3095959937505210e+01
--2.0036794889330869e+00
-4.4739739970690029e-01
--2.2929910837641632e+01
--8.8190004395347577e-01
--7.4805259493473442e-02
--2.1530284841396213e+01
-1.2363179151266475e+00
--8.2350325177577677e-01
--2.0587619338931340e+01
--2.7695820837630816e+00
-6.2516013165695816e-01
--2.3738881541997383e+01
-1.4631350283127609e+00
--1.1601948643110827e+00
--2.0512462004446522e+01
-9.5876663305701659e-01
--1.0920238736213412e+00
--2.0569367114308424e+01
--7.0928739150048192e-01
--5.3772375586506727e-01
--2.1537942211417018e+01
--4.7548019018687064e+00
-2.0113761448272101e+00
--3.6468256537538281e+01
-7.1983099069364398e-01
--1.2214554235117789e+00
--2.0669538119945607e+01
--1.0099597215491520e+00
--6.7391053455589667e-01
--2.1519425584526342e+01
--3.7817554566871592e+00
-3.4970914329781116e-01
--2.3994828054082898e+01
-2.6965390549570492e+00
--1.8915216905401560e+00
--2.0175382112246695e+01
-4.4104503356523184e+00
--2.3821059294282652e+00
--2.0444295967814316e+01
-1.8755685792520773e+00
--1.7374788333854294e+00
--2.0193031456096861e+01
--5.7581783229558536e-01
--9.7783617493544261e-01
--2.1044298882027498e+01
-4.8660655039465279e+00
--2.6793509371225630e+00
--2.0119613769641692e+01
--1.6084176813518489e+00
--6.5696697701221241e-01
--2.1514838965253073e+01
--6.9303790060540127e-01
--1.0030200235179683e+00
--2.0965552335280975e+01
-4.5707868029380448e-02
--1.3245523776352861e+00
--2.0562749390155222e+01
-1.0040599983095544e+00
--1.6430825579332760e+00
--2.0382168057080417e+01
--3.8325003878891404e+00
-9.5636227302255510e-03
--2.3605539307889870e+01
-2.6484654728299111e+00
--2.1692671736572486e+00
--2.0362041078202264e+01
-3.1102930438985177e-01
--1.4888581770993330e+00
--2.0545134903962495e+01
-4.8480753254621609e+00
--2.8883622823223045e+00
--2.0325582880372671e+01
-2.7606250478165193e+00
--2.2027082412296322e+00
--2.0852806469133327e+01
-4.5774492918299723e+00
--2.8338480492162219e+00
--2.0477831762006982e+01
--9.0204047591425751e-01
--1.1824346234605854e+00
--2.0982414257166973e+01
-7.5444178028148412e-01
--1.7855951957666771e+00
--2.0398731862550015e+01
--3.0414263367639482e+00
--5.0662800580068246e-01
--2.2901229849247745e+01
--1.5044631251824361e+00
--1.0770022407862703e+00
--2.1599069094718946e+01
--5.8229246083617276e+00
-8.7593084746892280e-01
--3.3830166937653082e+01
-8.8843952737263782e-02
--1.7583032391174667e+00
--2.0480025857156445e+01
-4.6079762430537068e+00
--3.2055799274765939e+00
--2.0912127382619957e+01
-3.1383832263348466e+00
--2.8536109092836841e+00
--1.9553298807520157e+01
-3.0728168247722474e+00
--2.9140293902448571e+00
--1.9731326256873594e+01
-2.9913300763921713e+00
--2.9307556075338832e+00
--1.9498539758245407e+01
-4.3350076293353723e+00
--3.3205698376507491e+00
--2.0852095978750040e+01
--3.0405660260384120e+00
--1.1153549899049786e+00
--2.2315076967690210e+01
--2.4915007382643859e+00
--1.4364224362371301e+00
--2.1486235833780189e+01
--1.8608177154112828e+00
--1.7668576498994364e+00
--2.1114165926085935e+01
-4.1585747072734042e-01
--2.5070924769470171e+00
--2.0423766342127330e+01
--3.7498776893095481e-01
--2.3440283263646218e+00
--2.0634155024236190e+01
-1.7773870964467047e+00
--3.0433101774878799e+00
--1.9833681342547340e+01
--1.8418869830503033e+00
--1.9050759016558823e+00
--2.0976876614085750e+01
-2.3899858808797978e+00
--3.4088165765930358e+00
--2.0346129034684441e+01
--5.5145461024508813e-01
--2.5194025652464074e+00
--2.0188969956717077e+01
-2.2988848792092327e+00
--3.5032670303889901e+00
--2.0438033651882051e+01
-4.2768158294523824e+00
--4.1209307117745473e+00
--2.1540505639280273e+01
--2.6852752682110843e+00
--1.9288338910302072e+00
--2.2208183259785187e+01
-2.1046418333589871e+00
--3.5034913231644373e+00
--2.0375653103388945e+01
-4.4227886682570512e+00
--4.2306347097466670e+00
--2.1864938157962630e+01
--1.1691270347017466e+00
--2.5110525967841384e+00
--2.0200921192932306e+01
-1.6424254817965773e+00
--3.4492833871189710e+00
--2.0308462637293530e+01
-2.2450288810674039e+00
--3.6733228833295328e+00
--2.0555226374214172e+01
-2.9437525327676406e+00
--3.9553372745334006e+00
--2.0793077476450158e+01
--5.3254749818929425e-01
--3.0431412436037704e+00
--2.0666376947276817e+01
--1.7777859329730339e+00
--2.6659965665896168e+00
--2.1526860474571233e+01
--4.2895087427826756e-01
--3.1161607331088668e+00
--2.0679013522967072e+01
--6.2191006807788030e-01
--3.0954996865764519e+00
--2.0601867944924951e+01
--6.2191006807788030e-01
--3.0954996865764519e+00
--2.0601867944924951e+01
--1.3005841616049779e-01
--3.3527244384747639e+00
--2.0549982408097357e+01
--1.3005841616049779e-01
--3.3527244384747639e+00
--2.0549982408097357e+01
-1.6960237656232608e+00
--4.0370610327308087e+00
--2.0899561864316656e+01
--7.8146457660971003e-01
--3.2609494486373731e+00
--2.1123937782606763e+01
--3.3420008684300435e+00
--2.6225817263109357e+00
--2.4265110190661865e+01
--1.3991657542721421e+00
--3.3299762145174556e+00
--2.1659229319570368e+01
--3.0393844335925140e+00
--2.7276697430219694e+00
--2.2162114138567958e+01
-2.1586725262599100e+00
--4.5474802878408536e+00
--2.1454423503916118e+01
-2.0697466507508082e+00
--4.5603389785615844e+00
--2.1346290681837047e+01
--2.8461464281226112e+00
--2.9972775535703207e+00
--2.3300151938392965e+01
--2.8174196598736558e+00
--3.0008178262960410e+00
--2.3259381944585343e+01
-2.2715194961477971e+00
--4.6693507791578588e+00
--2.1454523364933696e+01
--3.2407256877825565e+00
--2.9644550725986196e+00
--2.4216678558327668e+01
--2.7064159201563603e-01
--3.9700443438198567e+00
--2.1072059730993644e+01
--3.2552929177470763e-01
--3.9565095299468918e+00
--2.1543002947472804e+01
--2.1113280460217485e+00
--3.4547696933063263e+00
--2.2898036464067960e+01
--2.1886588583453026e+00
--3.3401084003886665e+00
--2.2696541192272790e+01
-1.7949694403104819e+00
--4.7019549979609963e+00
--2.1153833310146435e+01
--8.5329448880965479e+00
--1.6676937685203408e+00
--3.0372292225185785e+01
-3.0201448721299444e+00
--5.2315042500499969e+00
--2.1744128071182825e+01
--3.6345295580889697e-01
--4.1649014859889411e+00
--2.1936827941149442e+01
--1.5256289877291358e+00
--3.8489154056364292e+00
--2.2128052104895620e+01
-1.3133058133238842e+00
--4.8457821349671590e+00
--2.1007706068395507e+01
-1.9510551979573001e-01
--4.4926080638928196e+00
--2.1823077677429335e+01
--7.9281026685484148e+00
--2.1972349006974312e+00
--2.9838945130215613e+01
--2.0280247535341740e+00
--3.9139657492108344e+00
--2.3014182852341211e+01
--2.0049288110225829e+00
--3.9338837975603194e+00
--2.3132515876814686e+01
--2.5509787447125926e-01
--4.4850916565381009e+00
--2.1313840130846412e+01
-1.4056466568345387e+00
--5.0935001078050881e+00
--2.1520754728470163e+01
-3.2383303291434382e+00
--5.9991176725510522e+00
--2.2602947509734360e+01
--7.3599382614630504e-01
--4.7221730516943943e+00
--2.2780690801398315e+01
--2.5892854023609537e+00
--4.2727003594952997e+00
--2.3979772485519330e+01
-5.4659799533223108e-01
--5.4202646082818573e+00
--2.2260829934417973e+01
-8.4820778643482786e-01
--5.7289565772236433e+00
--2.2755789450574472e+01
-1.3383467198151500e+00
--5.9830511972906368e+00
--2.1596513231512606e+01
--9.3822535853521560e-01
--5.3103735999396209e+00
--2.3080102483092382e+01
--3.2427096669314994e+00
--4.8316399706331596e+00
--2.4090341000007779e+01
--3.6143457460958519e+00
--4.7653147228343080e+00
--2.4156010390711781e+01
-7.3799425103478988e-01
--6.1788306032327975e+00
--2.1755255749848963e+01
--7.5657778899396675e+00
--4.0068789480340650e+00
--2.7663692549484246e+01
--1.5225077422813049e+00
--5.7176681257966928e+00
--2.2613630232263670e+01
--8.6119973328602999e+00
--3.7349070530697879e+00
--2.7569853588685465e+01
-6.1811106811774208e-01
--6.5506120901314588e+00
--2.2368217875976711e+01
-7.0800223415874597e-01
--6.6117995066692643e+00
--2.2318069050526578e+01
-3.7720080990705934e-01
--6.6193056463356532e+00
--2.2752102193263745e+01
--1.5306779173159004e+00
--6.1052888004345292e+00
--2.3059520946018313e+01
-7.9680149423927571e-01
--6.8610773960513551e+00
--2.2384547052971598e+01
-7.5194364562359550e-01
--6.9149001196439652e+00
--2.2502430950962172e+01
--1.3743433704066801e+00
--6.3451248562107834e+00
--2.3191496279194123e+01
--1.5556684123026108e+00
--6.3035988982332389e+00
--2.3309718028948815e+01
--1.4296564313250413e+00
--6.3429432383063631e+00
--2.3275158884397875e+01
--1.4296564313250413e+00
--6.3429432383063631e+00
--2.3275158884397875e+01
-4.7274590180853462e+00
--8.3936412159242568e+00
--2.0951177073691778e+01
--4.1313956304597568e+00
--6.1716306659238809e+00
--2.4442426974037264e+01
-3.9276098549978586e+00
--8.7010810896174604e+00
--2.0948179996571088e+01
-3.6398078542424819e+00
--8.6074900263034007e+00
--2.0941949297556960e+01
--2.7645113299960816e-01
--7.5395453090735085e+00
--2.1815433406325859e+01
--6.4816956474949281e+00
--5.8014429929949136e+00
--2.4664844853527704e+01
--5.4613331353535637e+00
--6.3576124134475434e+00
--2.3879608345978070e+01
-3.5634044833999026e+00
--9.2481579373616256e+00
--2.0150687716305736e+01
--6.4101118664422456e+00
--6.2234248576014952e+00
--2.4212898310893276e+01
--5.6435226819874336e+00
--6.5300816162734945e+00
--2.3812932640496907e+01
-4.5026637600703108e+00
--9.6965658215616273e+00
--1.9412293163873997e+01
--5.8270694419491074e+00
--6.5732106203307588e+00
--2.3676351454529716e+01
-1.5385786717682786e+00
--8.8102863608972815e+00
--2.0343749801672171e+01
-3.8378224238399703e+00
--9.6505990435421065e+00
--1.9465439738226884e+01
-3.3914494188293500e+00
--9.6042838975677292e+00
--1.9433986538732487e+01
-2.3135673601046021e+00
--9.3898093552325559e+00
--2.0075622227676408e+01
-3.5355169484947844e+00
--9.7557394761239422e+00
--1.9450626092940468e+01
-4.1458189063866163e-01
--8.9364465427850046e+00
--2.1196589280177939e+01
-1.7566261780147114e+00
--9.4056128174176727e+00
--2.0033019455094337e+01
-1.9264088684697804e+00
--9.4937987057819999e+00
--1.9959752991417730e+01
-1.4391320951881457e+00
--9.3643375596994467e+00
--1.9803558891860224e+01
-1.5121930766977758e+00
--9.4533374785872581e+00
--2.0001844822846259e+01
-3.1366782842433949e+00
--9.9322186291007206e+00
--1.9229121895830090e+01
-2.7940721358740248e+00
--9.8847651473971681e+00
--1.9316865085231797e+01
-7.2612261674599310e-01
--9.3096259497741940e+00
--2.0194013524912720e+01
-2.7036767065550742e+00
--9.9024129856781862e+00
--1.9301156570758629e+01
-7.7638708785029864e-01
--9.3643170129613118e+00
--2.0158180498284082e+01
--3.5594477513757856e+00
--8.1439778082117602e+00
--2.1913502487412785e+01
--1.1035609308394023e+00
--8.8007704970859866e+00
--2.0598487263868119e+01
-2.8466739455431611e+00
--1.0034969789232136e+01
--1.9119583476267589e+01
-1.4647186356527824e+00
--9.6433439937110048e+00
--1.9728078998244243e+01
--5.4111844281097055e+00
--7.5051734474880716e+00
--2.2349979981512778e+01
--3.9774073268855594e+00
--8.0629958504081998e+00
--2.1558628255308584e+01
--3.7976012673574453e+00
--8.1601857012154344e+00
--2.1443933312476378e+01
--3.6806900398097167e+00
--8.2610440554492719e+00
--2.1283697746554854e+01
-1.9976594081980337e+00
--9.9950503498356991e+00
--1.9267996088811106e+01
-4.9601033008207213e-01
--9.6294664005427251e+00
--1.9823908760384334e+01
--1.6862144144645392e+00
--8.9987715155566299e+00
--2.0751880068865162e+01
-2.9025324611439927e+00
--1.0373538538849351e+01
--1.8683888349280380e+01
--1.5167849175232622e+00
--9.6276778946421118e+00
--1.9973726779357687e+01
--9.2827612440429708e-01
--9.7995616539887020e+00
--1.9690964271159245e+01
--2.7196424081353303e+00
--9.3461824676072016e+00
--2.0366931644228259e+01
--4.7776406960289162e+00
--9.2726259348062658e+00
--2.0737053069025077e+01
-1.1030705683101432e+00
-2.4132179459218413e+01
--3.9974785695759422e+01
-1.1030132295592868e+01
-2.1036775234281041e+01
--3.7407181934147083e+01
-1.6951608800798276e+01
-2.8348605938979542e+01
--5.1167853765392692e+01
--6.5219679369051620e-01
-2.4744841705034780e+01
--4.1278857156213824e+01
-1.2771558221022458e+01
-1.6301695353024339e+01
--3.0648025075033090e+01
-6.0517129965426264e+00
-2.6534319373930497e+01
--4.6577393562158704e+01
-1.5197524851366879e+01
-1.6332645325131292e+01
--3.1547472142352806e+01
-1.8504864654143518e+01
-2.8049034690393839e+01
--5.3139505611777231e+01
-3.2233396414034068e+01
-3.4668881372752722e+01
--6.7569715210945432e+01
-3.2233396414034068e+01
-3.4668881372752722e+01
--6.7569715210945432e+01
-1.2088250224530228e+01
-2.6508664273136652e+01
--4.9181976019504560e+01
-1.4276485524670289e+01
-1.5125819525150286e+01
--2.9903482625649509e+01
-3.1546317817866971e+01
-3.4042879100605333e+01
--6.7151213802696816e+01
-1.0973208643775319e+01
-2.6601963587479396e+01
--5.1291947565385563e+01
--1.1676148268767763e+00
-2.1996203754763886e+01
--4.0396531378494601e+01
-9.1202445742284355e-01
-2.2504613404581757e+01
--4.2072522084697589e+01
--5.9732925013089677e-01
-2.3021141184802925e+01
--4.2880715106084835e+01
-2.6754361898158049e+01
-3.0541750315181691e+01
--6.4627543285405011e+01
-1.2742991378301211e+01
-1.1167878381406934e+01
--2.4911375040229892e+01
-1.2563831515280441e+01
-2.4673940915424271e+01
--4.9972751487516405e+01
-1.2563831515280441e+01
-2.4673940915424271e+01
--4.9972751487516405e+01
-1.5466411336148152e+01
-2.5033230181260997e+01
--5.1515448296369364e+01
-2.3824693579863073e+01
-2.8442386802877078e+01
--6.0562221598647355e+01
-1.6041233183092665e+01
-2.5553416511319348e+01
--5.2978815669174907e+01
-1.6732499014041323e+01
-2.6242525553330655e+01
--5.4594207028169109e+01
-1.4213881118164423e+01
-1.0860413570787765e+01
--2.5119957611912756e+01
-1.4656113068439987e+01
-1.0174052384804272e+01
--2.4061806643597528e+01
-1.4814022107667030e+01
-9.9770283827237627e+00
--2.4046143399108210e+01
-1.4561523452763758e+01
-1.3055371021752528e+01
--3.0118764165502842e+01
-9.9069274053041152e+00
-2.4158522897999745e+01
--4.9968719991436508e+01
-1.4335697409294621e+01
-1.4926924698861860e+01
--3.3553404570976802e+01
-1.3113496963808746e+01
-1.0115846305257012e+01
--2.4429499253927698e+01
--1.4610046402562191e+00
-2.2022533224381192e+01
--4.3177912945314212e+01
-1.1343106782884580e+00
-2.1126633845145740e+01
--4.2540292234139528e+01
-1.6032072790125781e+01
-2.5245313703529529e+01
--5.5254514486073802e+01
-2.1503027841950080e+00
-2.1785166686832177e+01
--4.4817488557321788e+01
-1.3188051647609324e+01
-1.1058771469773310e+01
--2.6950813775866493e+01
-1.5978288457602780e+01
-2.3825036912201867e+01
--5.3169054793806964e+01
-1.4143134768428320e+00
-1.9865062835845745e+01
--4.0958287247954914e+01
-1.3357013404370871e+01
-1.2514604399962813e+01
--3.0440430745532797e+01
-1.4271807173727993e+01
-1.2643162560920288e+01
--3.1081446960299424e+01
-1.4271807173727993e+01
-1.2643162560920288e+01
--3.1081446960299424e+01
-9.6272938100219001e+00
-2.3458267680904555e+01
--5.1065273919081172e+01
-8.0598280139281062e+00
-2.3740066413853746e+01
--5.1529412101850866e+01
-8.0598280139281062e+00
-2.3740066413853746e+01
--5.1529412101850866e+01
-1.8154275863848980e+01
-2.7126481540879510e+01
--6.2228771560709959e+01
-1.8042325865989383e+01
-2.5227576261271700e+01
--5.8499920274894485e+01
-1.3782509546503615e+01
-2.4153575246593970e+01
--5.4440323748273777e+01
-1.3993704818921708e+01
-9.9833669055254379e+00
--2.6006505754640230e+01
-1.6434234735327966e+01
-2.4161334054931110e+01
--5.6128443812174240e+01
-1.6785790511605580e+01
-2.4652712951506523e+01
--5.6769586559214105e+01
-1.2976735865414799e+01
-2.2844676710501965e+01
--5.2579905211655465e+01
-1.0860433611326336e+01
-2.3576200001144411e+01
--5.2880612067532340e+01
-2.6616902506066631e+00
-2.1561267828496661e+01
--4.6315094138881449e+01
-2.4896188384657858e+00
-2.1275411508534294e+01
--4.5613941928792606e+01
--2.1363503978897769e+00
-2.0995426961741302e+01
--4.3579126484139003e+01
-1.5313375866112807e+01
-2.4655717558479676e+01
--5.7618891918980985e+01
-1.3201542621607837e+01
-9.0267088856841244e+00
--2.4988041647658967e+01
-4.4307953023009015e+00
-2.1200854037021625e+01
--4.7550990729836457e+01
-9.3789521342262585e+00
-2.3376098004891919e+01
--5.3558671657548899e+01
-3.1812630003933984e-01
-2.0445889033149911e+01
--4.4455891622822534e+01
-1.4220376880321357e+01
-2.2658285456993443e+01
--5.4719823934182266e+01
-1.3080436941098652e+01
-9.0789884463424624e+00
--2.5333601477919895e+01
-3.3813412884589717e+00
-2.1060629563982335e+01
--4.7367377985769402e+01
-6.2498776875726634e+00
-2.1048237525277006e+01
--5.0092467362057555e+01
-5.3973317682158504e+00
-2.1043249791406993e+01
--4.9508914916436026e+01
-8.4913104409879452e+00
-2.3257075795753561e+01
--5.5899176364391671e+01
-1.3264411607054637e+01
-8.1801023457385682e+00
--2.5429272544906748e+01
-9.4556173919663138e+00
-2.2742695460458375e+01
--5.6574242525722120e+01
-8.6494470129306631e+00
-2.1176039981448206e+01
--5.3031414280999414e+01
-1.2979818582879988e+01
-1.1977485717700842e+01
--3.4804101099604495e+01
-7.8620489598936527e-01
-1.9550894786882512e+01
--4.6439281842359648e+01
-7.6915352079394568e+00
-1.8690148501778712e+01
--4.7445731056992265e+01
-7.5391775266441634e+00
-2.1841107846471637e+01
--5.5384142384535465e+01
-8.7839522587961731e+00
-2.0544202568817063e+01
--5.3852938859032903e+01
-9.2763379317379790e+00
-2.0591726049893598e+01
--5.4239478042664516e+01
-3.2003138248718139e+00
-1.9563830251485651e+01
--4.9447057333727599e+01
-3.6770381895083259e+00
-2.0925632291452501e+01
--5.3160862129318112e+01
-1.2967414957995482e+01
-7.8870015715199520e+00
--2.6730601588302260e+01
-1.4666620453067955e+01
-9.9275672397784902e+00
--3.2467151039601113e+01
-8.8602762223723914e+00
-2.0305310253922727e+01
--5.4554176783495073e+01
--9.7310885895936117e-01
-1.9904012107836131e+01
--4.9496543931862476e+01
-1.1726198152420476e+01
-7.6858254450668131e+00
--2.6316026017399693e+01
-1.2074773064546322e+01
-7.5566181936997312e+00
--2.6104796276387223e+01
-1.3091479569872364e+01
-7.6761271643492845e+00
--2.6989765390861461e+01
-1.3951899483474566e+01
-6.4588353188191068e+00
--2.4800908483258372e+01
-1.2191771343979298e+01
-7.4074426979981585e+00
--2.6534695162152719e+01
-1.3269890282839794e+01
-6.8578644902303463e+00
--2.6733229769574372e+01
-1.1491830462107979e+01
-6.9548120143471346e+00
--2.6695247654989643e+01
--5.5460593763120958e-01
-1.8974193988121453e+01
--5.1139043360210003e+01
--9.6908799301921078e-01
-1.8821662568368065e+01
--5.0826207517476341e+01
-1.4381245912879489e+01
-9.0181047717131602e+00
--3.4097961124175256e+01
-1.4012796660702424e+01
-8.6621010127420348e+00
--3.3219203894596120e+01
--1.9645045148077873e+00
-1.8410152676510982e+01
--5.0293019136911070e+01
-1.2969719887731776e+01
-9.8238049459312471e+00
--3.6279749159202161e+01
--5.4568281762469373e-01
-1.7049285084829847e+01
--4.8044565064035289e+01
--5.4568281762469373e-01
-1.7049285084829847e+01
--4.8044565064035289e+01
-1.3218153997765343e+01
-6.2658402134867135e+00
--2.7398086788849536e+01
-1.2274212575988155e+01
-6.7720749383426249e+00
--2.8788912633179297e+01
-1.2493966183878833e+01
-1.0310378965269674e+01
--3.8769286986848378e+01
-1.2899076653625327e+01
-5.8378554762712698e+00
--2.7278967326417987e+01
-1.2640552593056551e+01
-5.7301262394953705e+00
--2.6848109336428131e+01
-1.2195493547865301e+01
-6.2200706772247747e+00
--2.8295481044404927e+01
-1.3567629187497765e+01
-9.7414257752946529e+00
--3.9722010238483151e+01
-1.4331600190474942e+01
-7.8140867878255262e+00
--3.5953512534628885e+01
-1.3170410852267301e+01
-4.7206103019759418e+00
--2.6695207438526428e+01
--1.4094710381191888e+00
-1.5870717867190551e+01
--5.0140190408775219e+01
-1.3648763238600734e+01
-4.6337929891402174e+00
--2.6944107175429615e+01
-1.3336171125091973e+01
-9.5162268909273067e+00
--4.1633398067800009e+01
-1.3791932791689542e+01
-9.9559454334389592e+00
--4.3437891027063898e+01
-1.2387101921275667e+01
-5.4044239049053244e+00
--2.9374242946725420e+01
-1.3481501307327301e+01
-4.7378946727726339e+00
--2.7897254229587936e+01
-1.2017619098414162e+01
-5.4038293269330806e+00
--2.8888958366190945e+01
-1.3256723243465355e+01
-3.7764440081089932e+00
--2.5671329587649286e+01
-1.3059102509422695e+01
-4.9952160640312213e+00
--2.9545639245794042e+01
-1.6362491233689222e-01
-1.4936285056823191e+01
--5.1925824557167040e+01
--3.8225924487538916e+00
-1.4397486665370620e+01
--4.7909535531108375e+01
-4.4242192336487101e+00
-1.3613553336146083e+01
--5.1521349918839924e+01
-6.1500844060304587e+00
-1.1834003385189545e+01
--4.7799024283070153e+01
-9.4600712729663661e-01
-1.4203281902337372e+01
--5.1717887043188000e+01
-3.1224620883577550e+00
-1.2681445925692156e+01
--4.9305393408069747e+01
-5.2133023420976556e+00
-1.0697980411705142e+01
--4.6045302879204989e+01
-1.3384735528926504e+01
-3.0807202176526109e+00
--2.7374076511151166e+01
-2.9868963863839073e+00
-1.0528549522595144e+01
--4.4577550794727216e+01
-5.7576400089471287e+00
-1.0463067542873450e+01
--4.6978694104651566e+01
-1.4262920514293210e+01
-2.6446853023596701e+00
--2.6796069610587406e+01
-5.3812688854228172e+00
-1.0329893853225173e+01
--4.6518755486646448e+01
-4.0099949783425917e+00
-9.6301610388059817e+00
--4.2672940812307843e+01
-1.3074456933968035e+01
-3.1963950385322590e+00
--2.8371597520843270e+01
-2.3997892233729643e+00
-1.1388360566848663e+01
--4.8593996300889707e+01
-1.3698587183351666e+01
-2.3972547990806699e+00
--2.7321545171169824e+01
-1.2399231289853393e+01
-3.8353923722325214e+00
--3.1344517726177688e+01
-2.2099122446808321e+00
-1.0526644819722181e+01
--4.6757301755378712e+01
-1.2469858794244232e+01
-4.0441307928364125e+00
--3.2186274090421009e+01
-1.3684497619950143e+01
-2.6902692507961148e+00
--2.8576828103294883e+01
-3.3981337458611018e+00
-3.3890260129232357e+00
--2.2938283869428965e+01
-3.4477197658738108e+00
-3.3617211650239689e+00
--2.2888662891360845e+01
-1.2298029593870064e+01
-2.7507513954571450e+00
--2.8990530866789026e+01
-3.5341759021156074e+00
-2.7792515107580367e+00
--2.1924538014277996e+01
-1.3819993751059338e+00
-8.9487362251493874e+00
--4.4452305335664825e+01
-1.2281216780567526e+01
-2.4432680403726037e+00
--2.9560395925033355e+01
-1.4398246224516955e+01
-1.1618092790310137e+00
--2.7112860846732794e+01
-1.4289613574998844e+01
-1.2820114024300788e+00
--2.7479448322300030e+01
-4.1371565183605110e+00
-2.4325746262811956e+00
--2.2438139495099026e+01
-1.2337305989182912e+01
-2.2325696142754921e+00
--3.0885491855702064e+01
--1.1251552525638899e+00
-8.9354180815475228e+00
--4.4491286867127300e+01
--7.3893872521757242e-01
-3.2903183333811947e+00
--2.1027060215849648e+01
-1.3790160824036020e+01
-9.9058589671367425e-01
--2.9176110004868729e+01
-2.5401309949578801e+00
-2.0731273262676706e+00
--2.1097956901779835e+01
-1.2195795789955790e+01
-2.1021954812763330e+00
--3.2233941002861179e+01
-2.6464814732216553e+00
-1.8508405887777202e+00
--2.0806786427650618e+01
-1.4288301177649570e+01
-7.7833572578885446e-01
--2.9244073210651276e+01
-7.2082531040257178e+00
-1.6668945370782289e+00
--2.5532732062921646e+01
-1.2390718362107465e+01
-5.5115065959919118e-01
--2.7091141193200507e+01
-4.0097746759590489e+00
-1.3362636020815968e+00
--2.1147325186986443e+01
-1.2325691101787257e+01
-1.5093983657481813e-01
--2.6112415201276274e+01
--8.1252812441879807e-01
-2.8059492599071496e+00
--2.2861353208551169e+01
--8.7664513720086057e-01
-6.8579135546358572e+00
--4.1697000686400564e+01
-1.4114763037775703e+01
--1.4748235082146857e-02
--2.8281771829409884e+01
-2.9224682188718134e+00
-1.4058185626894428e+00
--2.0930763006797061e+01
-1.4265198741192268e+01
--1.5557901384996831e-01
--2.8215762256608475e+01
--5.9519217308407335e-01
-2.2577283561926293e+00
--2.1911901007784451e+01
-3.0018067178071899e+00
-9.9689990850594312e-01
--2.0567232453364856e+01
-1.5702615445888279e+00
-1.3247830991929859e+00
--2.0444412158749252e+01
-1.4518399623966223e+01
--7.1061771921986150e-01
--2.8630232022677593e+01
-1.6141988073804188e+00
-1.0982306511318602e+00
--2.0405782718530816e+01
-1.4488855455575409e+01
--9.7756074371668056e-01
--2.8342576773646840e+01
-9.4610326974183090e-01
-1.1913533642253853e+00
--2.0633451164369266e+01
--2.1005217901575142e+00
-2.8150833267159512e+00
--2.5940994345652349e+01
-1.9679559774864197e+00
-7.2295624968096361e-01
--2.0369243019947341e+01
--2.8113377394927999e+00
-5.2231429230748567e+00
--3.9370102124671476e+01
--4.3788617220433884e-01
-1.4772803334429743e+00
--2.1501997982444742e+01
-6.9278848518950067e+00
--3.2269124492426315e-01
--2.3695352880977403e+01
-3.9273599060673279e+00
-3.8758898033766150e-02
--2.1056854367479644e+01
--3.0969298737288606e+00
-2.6336811965881726e+00
--2.6516548932746613e+01
-4.0044749235642669e+00
--1.8911808364037391e-01
--2.1104376233897980e+01
-6.4852284140655918e+00
--6.6536144284860266e-01
--2.2516425797686964e+01
-4.1906201978439900e-01
-6.8049418502093684e-01
--2.0590923902399364e+01
--1.2673967879205055e+00
-1.3570919277449200e+00
--2.2293515205139229e+01
-2.5208892964937146e-01
-6.3448473136605799e-01
--2.0731618776017768e+01
-2.7604114670980778e-01
-5.8797302890769199e-01
--2.0641305082450419e+01
-4.3076192664179302e+00
--5.1962704215417810e-01
--2.1456941402598915e+01
--3.3553558446527894e+00
-3.9288539940967535e+00
--3.7552839344895283e+01
--3.3553558446527894e+00
-3.9288539940967535e+00
--3.7552839344895283e+01
--3.0563439626261975e+00
-2.0988947784929755e+00
--2.6361990690426293e+01
--2.9916220399798483e+00
-1.9732717397599833e+00
--2.6046685749615040e+01
--2.7728907618797285e+00
-3.5107822489213953e+00
--3.7701417131432770e+01
-2.9019324202106369e+00
--6.1780771511721166e-01
--1.9557499704748174e+01
-5.7410719974537425e+00
--1.2681526579565168e+00
--2.1235604125567338e+01
--1.5041236256548205e+00
-8.8694704422111192e-01
--2.2308278113253930e+01
-3.4738847741572343e+00
--7.1330754835946419e-01
--2.0758536924974560e+01
--2.4734807187818904e+00
-1.3783660159268691e+00
--2.4091831660203322e+01
-4.5591517909308649e-01
-5.9535309655548964e-02
--2.0514376088252813e+01
-1.1086412129265735e+00
--4.0744870331149108e-01
--1.7719532889333248e+01
--1.7910748856743444e+00
-1.0228963063228940e+00
--2.3105935269762917e+01
--1.8161697745846637e+00
-8.9342126680809753e-01
--2.2903975725172131e+01
-4.4655253429887498e+00
--1.1753936238768350e+00
--2.0658497084744297e+01
-1.5083860995359661e+00
--5.7417314646845186e-01
--2.0321601788891467e+01
--8.9280135748697920e-01
-2.2288248535012828e-01
--2.1592289899761582e+01
--1.2311460883032892e+00
-3.2650540296582548e-01
--2.1958555007826607e+01
-2.2074106510573105e-01
--2.7704551130814875e-01
--2.0848273476335649e+01
--3.3807864845496677e-01
--2.3057912734333413e-01
--2.1251891016411161e+01
--2.3091104957189561e+00
-5.3717736668229321e-01
--2.3102029374158427e+01
-1.5640822032812918e+00
--8.6682245382369683e-01
--2.0516429947018416e+01
--7.4732454491342110e-02
--3.8194133991091384e-01
--2.0959138156779716e+01
--1.1450003866280412e+00
-1.3769840544880124e-02
--2.1825946089924322e+01
--2.3722756912805512e+00
-3.6467311021932930e-01
--2.2880642494869210e+01
--2.1037624235401915e+00
-2.9362613442469354e-01
--2.2817075883639532e+01
--1.1729017210507067e+00
--8.5660227852976875e-02
--2.1901394989414730e+01
--2.9414274410751911e+00
-6.5137815789924691e-01
--2.3629099778317435e+01
--6.9826742697376554e-01
--3.3693763967327411e-01
--2.1295770143497549e+01
-4.3229831221639881e+00
--2.2837961753665108e+00
--2.0162474617895526e+01
--1.3730174284089636e+00
--6.6699893783189268e-01
--2.1520364714330398e+01
--3.2759939171506223e+00
--1.2380380741276405e-02
--2.3411695057472198e+01
-1.2728296336369243e+00
--1.7164523010992163e+00
--2.0231678064359528e+01
-1.1282651302413165e+00
--1.6980784541483203e+00
--2.0255282215127213e+01
--3.9139818462637215e+00
--9.0324745786720492e-02
--2.3489363855213629e+01
-1.6532172978873441e-01
--1.5413025399287883e+00
--2.0329032370837709e+01
--3.0931520323082120e+00
--3.9114526031079122e-01
--2.3065238195889744e+01
-6.1709577152694817e-01
--1.8750057377854070e+00
--2.0362380360619248e+01
--3.6211638012754404e+00
--5.8762329754873965e-01
--2.3095399072401154e+01
-1.6589507280946576e+00
--2.7002486999260285e+00
--2.0008228592745642e+01
--3.3883829455323493e+00
--1.0268531507889815e+00
--2.3276842064612307e+01
--2.9761853800301141e+00
--1.3275129609779019e+00
--2.1665897368868343e+01
-5.5501981121232502e-01
--2.6828514585999121e+00
--2.0026390864320199e+01
-3.9597237956984610e-01
--2.6272092455080132e+00
--1.9530289216355676e+01
-1.4646325234286091e+00
--3.0225849764967379e+00
--1.9724552848429742e+01
-2.3643952434444784e+00
--3.4769873292666484e+00
--2.0262821078832722e+01
-2.5649746010409706e+00
--3.6601021719052413e+00
--2.0163049690215058e+01
--1.4801834817388051e+00
--2.3728650530701620e+00
--2.1043663144872752e+01
--1.6891333314863710e+00
--2.6813691482285309e+00
--2.1694908529025533e+01
--4.6294279780666338e-02
--3.2851453911587964e+00
--2.0655478848755003e+01
--1.3425357351627534e+00
--3.0046306325280754e+00
--1.9409547477282128e+01
-7.1528900811744556e-01
--3.8685176309399565e+00
--2.0120976999140087e+01
-2.6512417462429863e+00
--4.5698876418270702e+00
--2.0883131202153123e+01
-2.2735950350308376e+00
--4.4499065752200879e+00
--2.1354591222261348e+01
--9.7230073435916853e-01
--3.5901605323895107e+00
--2.1496757504516168e+01
-1.9987938699006864e+00
--4.5233924250893018e+00
--2.0965632961817196e+01
-2.1367995717656756e+00
--4.5817385301616058e+00
--2.1346589788954763e+01
--2.4542284242267600e+00
--3.2378766941296973e+00
--2.1323962263987863e+01
--8.3000735388699756e+00
--1.7494535963348949e+00
--3.0565780781456411e+01
--2.2662426164574883e+00
--3.6366823416343537e+00
--2.3027225080551311e+01
--2.0121998341114578e-01
--4.2857792411404150e+00
--2.1878698532898824e+01
--2.6544458445660832e+00
--3.8492958254155498e+00
--2.4122168392461415e+01
--1.5797723505124592e+00
--4.2958887151718663e+00
--2.3216418355921686e+01
-1.2001362141550969e+00
--5.3635675249824919e+00
--2.2103254339070116e+01
--2.9204231136819216e+00
--3.9100241526232908e+00
--2.2734600842309671e+01
--7.3815007530067567e-01
--4.8648351278471473e+00
--2.2749175846130431e+01
--7.3131024012815109e+00
--3.7028336252639242e+00
--2.8041774352131085e+01
--7.6827480846086846e+00
--3.7206947040390763e+00
--2.7857848423906898e+01
--7.7802609589025788e+00
--3.8123721127975339e+00
--2.8051914764140491e+01
-6.0902241159963533e-01
--6.8948485184699138e+00
--2.2626030677017884e+01
-2.0448210220373109e-01
--7.1228306204065275e+00
--2.2467511923757332e+01
--6.7618460504132551e+00
--5.1358059174605657e+00
--2.6184832810774164e+01
--6.5070243243739769e+00
--5.1334686907798366e+00
--2.5503705810087521e+01
--7.6875671571109097e+00
--5.1348857154724179e+00
--2.6276219953218110e+01
-2.9735664206323862e+00
--8.5923333180285208e+00
--2.1072469034790945e+01
--5.6816945116783302e+00
--5.9913822184006209e+00
--2.4443778586574116e+01
-4.9467778114506356e+00
--9.3091530061203844e+00
--1.9886175528980299e+01
--4.8190047276147032e+00
--6.5098738139852301e+00
--2.3712146242955562e+01
--4.7698378449979266e+00
--6.6613832380236797e+00
--2.3962852259694738e+01
--6.5342216355375742e+00
--6.1212027071149091e+00
--2.4133211453487977e+01
--6.7001245697701792e+00
--6.1983910249578686e+00
--2.4170083174407811e+01
-2.7897648034231253e+00
--9.5184017653605082e+00
--1.9753534243153169e+01
--3.5561110422052042e+00
--7.5784075385933605e+00
--2.2192475125159397e+01
--2.7826334761111995e+00
--8.2228270112856965e+00
--2.1284886658753262e+01
--2.7826334761111995e+00
--8.2228270112856965e+00
--2.1284886658753262e+01
-3.7764545033307724e+00
--1.0229347086145090e+01
--1.8821011373034587e+01
-3.2190359493026102e+00
--1.0160533255316494e+01
--1.8931420595733456e+01
-2.4598632448748132e+00
--1.0003989852159897e+01
--1.9215179859907401e+01
--5.2172906948808171e+00
--7.7829226575696753e+00
--2.2522638915042162e+01
-2.8240476458483266e-01
--9.5310553522319719e+00
--1.9834410744319889e+01
--5.0396923378285301e+00
--8.0064574093371252e+00
--2.2220553205832566e+01
--4.4865789562472616e+00
--8.4681817320634831e+00
--2.1712656655956820e+01
--5.6927939116184838e+00
--8.2636032799873078e+00
--2.1988690546759138e+01
--2.0186314415038429e+00
--9.4649763670213503e+00
--2.0188211593242208e+01
--5.1395268498040680e+00
--8.6405188363923244e+00
--2.1512329996010973e+01
--2.7973248362375416e+00
--9.4667538136587090e+00
--2.0283959785857455e+01
--2.8541114393464531e+00
--9.3263676429237385e+00
--1.9972236503853427e+01
--3.0033801234227884e+00
--9.3110384721080148e+00
--1.9960662447210041e+01
--2.9471431707611924e+00
--9.4548110462868209e+00
--2.0284598156005558e+01
--4.6367502342991163e+00
--9.1297262728018911e+00
--2.0870844875259301e+01
-1.0451777663709345e+01
-2.7191747343388936e+01
--4.7418745936799638e+01
-1.4896395058505458e+01
-2.9918254521010898e+01
--5.2665380466978092e+01
-1.2666801900590446e+01
-1.6661461907058122e+01
--3.1092345687001849e+01
-1.5395983152145080e+01
-2.9481812440727364e+01
--5.3491107082141077e+01
-1.5395983152145080e+01
-2.9481812440727364e+01
--5.3491107082141077e+01
-1.8749598794857409e+01
-2.8238050942655928e+01
--5.2831290880627847e+01
-1.8678215958220459e+01
-2.8067889214097129e+01
--5.3131488171768964e+01
-3.1867842780265160e+01
-3.4451968919370337e+01
--6.7431035350043700e+01
-1.3269496640772665e+01
-2.8013625058453798e+01
--5.2672160036769625e+01
-1.4976558043868431e+01
-1.6117823847067196e+01
--3.2490272367430279e+01
-1.8611839465298480e+01
-2.9385170638882823e+01
--5.7062373176657388e+01
-1.8985053642953361e+01
-2.9453989675752752e+01
--5.7536234040845578e+01
-1.6235312807970704e+01
-2.6359323107888592e+01
--5.2107632282733739e+01
-2.1351862297660976e+01
-2.7000303026323021e+01
--5.5702045710054904e+01
-1.3681457918183625e+01
-1.1580054004448721e+01
--2.5705935627578675e+01
-5.8126262081675169e+00
-2.3974727467142305e+01
--4.6654421886140341e+01
-2.4141252769911926e+01
-2.9717811103333528e+01
--6.3012441878156089e+01
-1.9402604088371078e+01
-2.8134406025000786e+01
--5.8824211167351443e+01
-1.2494296799480100e+01
-1.1239408270607175e+01
--2.5422112398528075e+01
-1.3960415524219332e+01
-2.5541621155443899e+01
--5.2939534313486789e+01
-1.4464893779963738e+01
-1.5216374303524942e+01
--3.3811841157724508e+01
-1.3636746043683955e+01
-9.6470018750694138e+00
--2.3221173423552994e+01
-1.3636746043683955e+01
-9.6470018750694138e+00
--2.3221173423552994e+01
-1.4617724911635953e+01
-2.5178452547943174e+01
--5.3765298061279339e+01
-1.9021186081566160e+01
-2.5993903690295365e+01
--5.7721740178009981e+01
-1.3629167148524580e+01
-9.1557970450626183e+00
--2.3431268065272018e+01
-1.0489849025383240e+01
-2.3339439117726709e+01
--5.0506039569152350e+01
-1.1726291074158212e+01
-1.3456837429272824e+01
--3.2958430967333051e+01
-7.7471699950504700e+00
-2.4499494685290006e+01
--5.4309893284068849e+01
-6.0129976941756438e-02
-2.2625937136183779e+01
--4.8677038799330646e+01
-1.0508702391353612e+01
-2.3962024741624088e+01
--5.7274114157932260e+01
-9.4294970799378532e+00
-2.2281257514322114e+01
--5.3337139931093589e+01
-1.3495389746178729e+01
-8.3021830071301466e+00
--2.4640367733110082e+01
-1.2514722439550722e+01
-1.2066706995383043e+01
--3.3698619670657266e+01
-8.9983302626029826e-01
-1.9969890440939977e+01
--4.5976502095020948e+01
-1.1807544252156994e+01
-2.3376756925174078e+01
--5.8979701813089406e+01
-1.1730754927097635e+01
-2.3136570818729833e+01
--5.9183082729712233e+01
-2.5982363297161815e+00
-1.9793644460751054e+01
--4.7946572111036126e+01
-1.2762623110464999e+01
-7.1566879542596800e+00
--2.4331267109178143e+01
-8.2842522350203662e+00
-2.0395735033588064e+01
--5.2746908459144272e+01
-1.0129011984017469e+01
-2.2423781516048312e+01
--5.8442754401766329e+01
-8.9429196260486528e+00
-2.0731344306030110e+01
--5.4051529567199211e+01
-5.6734992756218361e+00
-2.0744668002775619e+01
--5.2818831343015660e+01
-1.4638699787566011e+01
-1.0107804585839226e+01
--3.2438223011075557e+01
-2.1459239104193104e+00
-2.0574729138946893e+01
--5.2210203088809322e+01
-9.6516802017226304e+00
-2.0983738456945574e+01
--5.7124603008984963e+01
-1.6448926278797245e+00
-2.0047264392133485e+01
--5.1891619207834715e+01
-1.0881596722823485e+01
-2.0257359190024331e+01
--5.6677288424867768e+01
-1.0881596722823485e+01
-2.0257359190024331e+01
--5.6677288424867768e+01
-1.2324288119663629e+01
-1.9682074465462936e+01
--5.7431853516225154e+01
-1.0847291677924247e+00
-1.9531849148688170e+01
--5.1916888924323914e+01
-1.2008025348160125e+01
-7.2459390564323272e+00
--2.6586109852242782e+01
-1.3210375708259056e+01
-5.7016720202993332e+00
--2.5425192883537331e+01
-8.1288673362910426e+00
-1.0423628592377252e+01
--3.7949854108186230e+01
--1.4187410760720298e+00
-1.6057179902436463e+01
--4.8802714755031175e+01
-1.2864076998529281e+01
-6.5233363358970138e+00
--3.0594520879316523e+01
-1.3966440362223530e+01
-7.7512813479658966e+00
--3.6736543405326465e+01
-8.9154037674595654e-01
-1.5803257940504023e+01
--5.1827865021957230e+01
-1.8535228163322988e-02
-1.5240497828977812e+01
--5.2102013236136187e+01
-1.3758622312667805e+01
-4.0706012196805421e+00
--2.7926988861601053e+01
-1.4084712810217784e+01
-3.3732276032746036e+00
--2.6461413751472136e+01
-5.2972876589685898e+00
-1.0997545832204860e+01
--4.6634903494614484e+01
-3.2689990628335508e+00
-1.1052208686003581e+01
--4.6651624813064636e+01
-2.9559336271250189e+00
-1.0508857909622508e+01
--4.6215441304000130e+01
-1.2070141394951268e+01
-3.7313822160869474e+00
--3.0490844516028925e+01
-1.2670348824534257e+01
-3.5290241198617962e+00
--3.0447368427971465e+01
-1.3448115123464234e+01
-3.2285615946645172e+00
--3.0190700742045532e+01
-1.2931559695129062e+01
-3.3009077132231939e+00
--3.0068021664970310e+01
-1.3047639600081741e+01
-3.4095182356057778e+00
--3.0431381641218376e+01
-1.4444132272811883e+01
-2.2334615644552027e+00
--2.7583098112883430e+01
-2.6378556222234608e+00
-8.4546907704514425e+00
--4.3533828644113058e+01
-3.3558560045844605e+00
-2.8869847246974869e+00
--2.2578444274922955e+01
-1.2069734382269329e+01
-3.0148563254190477e+00
--3.2017079001443335e+01
-1.4406151161929881e+01
-1.2483683505580148e+00
--2.7375469285820181e+01
-3.4591798972417740e+00
-2.4635946539347326e+00
--2.1607407053210938e+01
-1.2256122149159596e+01
-2.3172737561199943e+00
--3.1436919176911179e+01
-1.3455759070569043e+01
-2.6927618997322860e+00
--3.4473960212718289e+01
-7.2025205581403560e+00
-1.6576241072108377e+00
--2.5537640637218690e+01
-1.3061403863276766e+01
-3.1303202152331788e-01
--2.6149190095942352e+01
-1.2618558235046542e+01
-1.7559750146357738e+00
--3.3205499616025321e+01
-2.2918999523290378e+00
-1.6911448250800363e+00
--2.0721059617763476e+01
-4.1205616325514303e+00
-1.2104535676284760e+00
--2.1229127193538325e+01
-1.2870952747993423e+01
-4.9000465532463922e-01
--2.9993443930739769e+01
-1.3419966957579577e+01
-5.5288900045326694e-01
--3.0971146040057828e+01
-1.4359263791899293e+01
--1.6004034434172185e-01
--2.8616699943347800e+01
--1.1534352706052089e+00
-2.6999836592405995e+00
--2.2676600198713192e+01
-1.4381776713387797e+01
--3.1445690997926168e-01
--2.9253600975355834e+01
-2.7685657040410767e+00
-9.9644365894082543e-01
--2.0693260856217041e+01
-4.0414335816394980e+00
-6.9885394216286578e-01
--2.1040304698650992e+01
-1.3992738153783542e+01
-4.7107476119346975e-01
--3.3393484615779514e+01
-3.8109283171407125e+00
-7.0199287083885165e-01
--2.0787691827502204e+01
-1.8253444389629954e+00
-8.4995660487069646e-01
--2.0363602652387176e+01
-7.2792821548634923e-02
-1.3429862024445702e+00
--2.1003299214168511e+01
--2.3386838897227573e+00
-2.7448859363356002e+00
--2.6005466028310781e+01
--3.3455307536775711e+00
-3.2990988204120866e+00
--2.7874578265527468e+01
--2.5205348569253103e+00
-2.8744134728261881e+00
--2.7365873972145629e+01
--3.7301889438736344e+00
-5.1078030909507035e+00
--3.9117523383698888e+01
--1.8795855766322003e+00
-1.8834080692139219e+00
--2.3612989899628982e+01
-2.2923073093818882e+00
--2.4431788608319613e-02
--2.0298684348376405e+01
-1.9679390961579304e-01
-4.6899981973571231e-01
--2.0750184200227419e+01
--2.2835405346787168e+00
-1.7057511893444577e+00
--2.4631495297988142e+01
-4.2137845877805340e+00
--6.0534792113505698e-01
--2.1309299791752110e+01
--3.2770976718967287e-01
-5.7987885104503489e-01
--2.1016401410014119e+01
--1.8576979448042636e+00
-1.1165958894986585e+00
--2.3212567553057710e+01
-1.1607228537166179e+01
--1.9374581906199002e+00
--2.8942446173284935e+01
-1.4061239986115397e+00
--3.5714793877593010e-01
--2.0366761993412659e+01
--3.3394649310338389e+00
-1.5652226570908037e+00
--2.5660757147963690e+01
--1.5928098309456413e+00
-4.3925420049437092e-01
--2.2537309420984524e+01
-1.2675964647083044e+00
--6.4370357632435937e-01
--2.0393224822650041e+01
-1.0295950596001411e+01
--2.5029065029929911e+00
--2.7030095439732246e+01
--5.3616239260969767e-01
--6.6989690879488015e-02
--2.1245805284201939e+01
-5.4677569377696624e+00
--1.8317024124392784e+00
--2.1111717683929459e+01
--2.1932880848424916e+00
-4.9738015698828764e-01
--2.2948202779445353e+01
-3.9562708355207996e+00
--1.5686791742429951e+00
--2.0503914658179198e+01
--2.1161796934614130e+00
-3.5782892683792977e-01
--2.2806298394519015e+01
-1.1867002183313118e+00
--1.0435312059546535e+00
--2.0507579936396841e+01
--9.9505298381129959e-01
--5.0173399477782032e-01
--2.1613588942696481e+01
--4.3942813081507526e-01
--7.5100377322943179e-01
--2.1357438784111398e+01
--1.6047871892541317e+00
--4.7095463807870058e-01
--2.1805211908149033e+01
-4.8342718420642656e+00
--2.5275271575247711e+00
--2.0674753417578859e+01
-2.2611309460197121e-01
--1.7155823877634140e+00
--2.0383159238261591e+01
-1.6392645901895606e+00
--2.1373051572135502e+00
--2.0360617281270102e+01
-2.2398816577944567e+00
--2.6218579646032798e+00
--1.9886138649734324e+01
--3.8571496459250154e+00
--7.4178250674529789e-01
--2.4202026872287082e+01
--3.3353463775289236e+00
--1.0348983478023837e+00
--2.3078055026114498e+01
--2.8378063525375792e+00
--1.3549260183641645e+00
--2.1880224534732793e+01
-2.1898162040029017e-02
--2.4076072081839968e+00
--2.0445690673682432e+01
--5.8868902856052818e-01
--2.3792841994031031e+00
--2.0341863061393795e+01
-4.2880595482486648e+00
--4.0527027499028723e+00
--2.1566133167335515e+01
--1.7379644945137416e+00
--2.1882417685318871e+00
--2.0998056110922857e+01
--2.7040559641164510e+00
--2.0795833342835408e+00
--2.2426663661666566e+01
-4.2702935493863929e+00
--4.5280306576985714e+00
--2.1960545780557865e+01
-4.4151090206639303e+00
--4.5461860481293135e+00
--2.2292530530011842e+01
--1.2216303708722156e+00
--3.4123999907524336e+00
--2.1373392421005061e+01
-7.0114325445922610e-01
--4.0459592022493469e+00
--2.0238594105997272e+01
--1.7523994235801574e+00
--3.3088169395147422e+00
--2.2069430744792399e+01
--2.5319764541428982e+00
--3.1190154546875113e+00
--2.3067935592498443e+01
--3.2203185527236617e+00
--2.9717038114234122e+00
--2.4582910288312505e+01
-2.2852204693625691e+00
--4.7905919263112695e+00
--2.1594585316316156e+01
-2.2852204693625691e+00
--4.7905919263112695e+00
--2.1594585316316156e+01
-1.7073969738900119e+00
--4.6227726527263444e+00
--2.1282368092662789e+01
-1.4610936513904080e+00
--4.6930983341633770e+00
--2.0922660187738810e+01
-1.4610936513904080e+00
--4.6930983341633770e+00
--2.0922660187738810e+01
-3.1647149577749158e+00
--5.2954638502266684e+00
--2.1871691542858159e+01
--2.0563079773813104e+00
--3.7633431509378976e+00
--2.2607356058404097e+01
--4.4371106031594110e-01
--4.5841790364242678e+00
--2.2461745522313684e+01
--7.7916832500906894e+00
--2.6220645228474648e+00
--2.9425050511333367e+01
--7.7924379758685429e+00
--2.5652410662766103e+00
--2.8935862888203129e+01
--7.2374456018183650e+00
--4.1818522899128086e+00
--2.6452033271785599e+01
-5.9574162261084573e-01
--6.7252633238017214e+00
--2.2574979037112854e+01
-9.0479905691974383e-01
--6.9384702365685396e+00
--2.2505396533854004e+01
-3.3462804656375842e+00
--8.3455129559566466e+00
--2.1334059201567257e+01
--5.7313168479624048e+00
--6.0381786937601349e+00
--2.4367352835548289e+01
--5.0611623227272400e+00
--6.9398586774847031e+00
--2.2959683496466145e+01
-2.0045523336216724e+00
--9.0114185441567596e+00
--2.0281688194461502e+01
-2.2136364545438871e+00
--9.8055912773103646e+00
--1.9484849889040920e+01
--4.1414510339442021e+00
--8.0786223309800889e+00
--2.2041550095099055e+01
--4.0523336373489434e+00
--8.1579125874492338e+00
--2.1931283061877497e+01
--3.1636957131014927e+00
--9.5305078068244669e+00
--1.9442085332600445e+01
--4.5642468907467491e+00
--9.2883147809719073e+00
--2.0637833497150499e+01
-1.5450514783625216e+01
-1.7701432366135545e+01
--3.1832666086122913e+01
-2.7057509423364163e+01
-3.4186722534696827e+01
--6.2159238950074723e+01
-9.1292366472975779e+00
-2.8032777703950387e+01
--4.8313368445076811e+01
-9.1292366472975779e+00
-2.8032777703950387e+01
--4.8313368445076811e+01
-1.7067354298882066e+01
-2.7342930328086286e+01
--4.9407531670367206e+01
-1.2236187056025653e+01
-1.6919219079982092e+01
--3.1140993824947909e+01
-1.4657318966555298e+01
-2.9488488686917449e+01
--5.3003600615450594e+01
-2.3900377674372115e+00
-2.5238105425251796e+01
--4.3781239849165154e+01
-1.2692095472664326e+01
-1.6264184520968254e+01
--3.1308744778391898e+01
-1.4473317518908880e+01
-1.2752343013335617e+01
--2.5785751564972863e+01
-7.0923236806342294e-01
-2.3939259674703212e+01
--4.3126338445346228e+01
-1.0786735525599083e+01
-2.0294884300572413e+01
--4.0249028211582974e+01
-1.4614075606802933e+01
-2.4818109795139801e+01
--4.9702507309880879e+01
-1.0994023282075398e+00
-2.2898655800779096e+01
--4.5005821482333140e+01
-6.0640924360529702e+00
-2.3916765350790484e+01
--4.8689476689628258e+01
-1.9963656730207067e+01
-2.7497998975824011e+01
--6.0212895902087617e+01
-1.3119793045378962e+01
-9.8752760966709481e+00
--2.4606395745829044e+01
-1.2068814195060593e+01
-2.4768558743532864e+01
--5.4788055317944441e+01
-1.6758845744969488e+01
-2.5830381934356190e+01
--6.1092259126019961e+01
-1.5111236923381707e+01
-2.3804841889618974e+01
--5.6436273776914781e+01
-8.8435090352168846e+00
-2.2111241696096748e+01
--5.1022110013081303e+01
-1.3147106198974242e+01
-2.5149205624984262e+01
--5.9141529569487560e+01
-1.5012229744753602e+01
-2.4823287433311297e+01
--6.0005331562250113e+01
-1.3496751630278279e+01
-8.3029560294623739e+00
--2.5333044726098226e+01
-3.2829736881337843e+00
-2.2218194089265712e+01
--5.1652080876238372e+01
-2.4021378114744532e+00
-2.0271936668912080e+01
--4.7009896285413383e+01
-4.8928881571114893e+00
-2.1352513987700686e+01
--5.3602687055888332e+01
-1.2229265049897050e+01
-7.0311513700251522e+00
--2.4654854526403511e+01
-1.2229265049897050e+01
-7.0311513700251522e+00
--2.4654854526403511e+01
--1.4549320509697574e+00
-1.9124988705016804e+01
--4.6584607529189000e+01
-1.2409704822949795e+01
-8.5092558751291811e+00
--2.8256822390416477e+01
-1.2963588910233002e+01
-9.8886882799843310e+00
--3.2942198470889245e+01
-1.2783846637344929e+01
-1.1086704935438309e+01
--3.6192544567266992e+01
-1.1543555660574283e+01
-1.3236181594509132e+01
--4.0949453039852685e+01
-1.7852032096429994e+01
-1.7749793780811750e+01
--5.6236728698179760e+01
-1.2425295880014181e+01
-6.8601000380243429e+00
--2.6225353684880755e+01
--6.4698584531313427e-02
-1.9133809886999781e+01
--5.1424090993141199e+01
--1.1672447215337887e+00
-1.8928870867053540e+01
--5.0551897072897425e+01
-1.4027688332625699e+01
-8.9586726017533280e+00
--3.3670175009121003e+01
-8.2199824896256661e+00
-7.9219177051725884e+00
--2.9471688753180484e+01
-1.2044353959891447e+01
-8.7382366848531792e+00
--3.5574497875671497e+01
-1.3536078878059650e+01
-9.5108531088550823e+00
--3.8551868039418018e+01
-1.2181752241572083e+01
-6.2056918317777106e+00
--2.8757380837768530e+01
-1.3663379726516085e+01
-8.2631087693508860e+00
--3.7414344029184143e+01
-1.3798052331225486e+01
-7.1984633189426876e+00
--3.6655039802539648e+01
-1.3556024065677985e+01
-6.8063908206628243e+00
--3.6129501977500077e+01
-1.2671381386503018e+01
-4.5777304953195292e+00
--2.8764054274497990e+01
-1.3935674714697324e+01
-8.1215439108022949e+00
--4.1156511804412702e+01
-1.3497441069531225e+01
-6.6723096859096511e+00
--3.6319446969839099e+01
-1.4040035385163035e+01
-7.8289747610190910e+00
--4.0828813685989211e+01
-1.4008689309994709e+01
-7.8245653741099410e+00
--4.1146298969851735e+01
--3.3967755977878467e+00
-1.4387806701777221e+01
--5.0215107855243211e+01
-6.3334249733178511e+00
-9.0155358717465237e+00
--3.9205816750331728e+01
-1.3018383617427007e+01
-4.1288337192788225e+00
--2.8862543990797036e+01
--9.9664633749032150e-01
-1.4247922448451176e+01
--5.1894730619434824e+01
-5.0220211444295124e+00
-9.6899143614725194e+00
--4.3839446286491075e+01
-1.4353068425868925e+01
-2.5331360228886823e+00
--2.6632745620429635e+01
-4.2349152145556301e+00
-9.9935747648528945e+00
--4.4652138448476833e+01
-3.7312339016221965e+00
-9.1683461289503327e+00
--4.4847539672290303e+01
-1.2894286842461939e+01
-3.0887279483043333e+00
--3.1307969715546509e+01
-1.4752275712200120e+01
-1.5238540907022891e+00
--2.7582830107916315e+01
-1.3492742506917352e+01
-1.5089925069381780e+00
--2.9605806330092854e+01
-1.2408460918934797e+01
-5.0269497103927419e-01
--2.6133504902484489e+01
-1.0805028586027562e-01
-2.3380663622583073e+00
--2.1594911688896694e+01
-1.2269061273806731e+01
--2.0717129605466383e-01
--2.5767653604074550e+01
-1.5847137702955192e+00
-1.5783709231281273e+00
--2.0685666118123866e+01
-1.2279876446000500e+01
--2.8605613550016368e-01
--2.6652018208609427e+01
--1.4642453137745364e+00
-2.7612686210601485e+00
--2.3777132721740873e+01
-1.3385875356726210e+01
-1.7940769752054653e-01
--3.1337149243617912e+01
--2.7186384300899502e+00
-5.9929195151321464e+00
--4.0700330303010176e+01
-1.2103346060549971e+01
--8.4848695536594787e-01
--2.5774089690385267e+01
-1.7449115381456364e+00
-7.8579908382728858e-01
--2.0358161928443653e+01
-1.4753637988141238e+01
--1.1290918244953754e+00
--2.9491166626610937e+01
--4.0972777348812244e+00
-5.4827643982084862e+00
--4.0511660188488413e+01
-1.6688485429761568e+00
-2.1887754904550830e-01
--2.0281850952803786e+01
--3.1656158857266132e+00
-4.0235289773374490e+00
--3.7758561196652863e+01
--7.3115479327692823e-01
-4.3413130971832598e-01
--2.1350125131614085e+01
--2.0395428990297289e+00
-7.2076263976443100e-01
--2.3324163836213447e+01
--9.8364039760911889e-02
--1.2556147597376227e-01
--2.0969711895040515e+01
-2.2467606936689188e+00
--8.8216498299662005e-01
--2.0476396574171726e+01
--9.9012442870426998e-01
-1.0015558286029087e-01
--2.1675270051748303e+01
-1.2948857255392778e+00
--7.7288248601716114e-01
--2.0591840788611236e+01
--8.6976854043927895e-02
--5.4554549660537188e-01
--1.8741783194413458e+01
--1.7392316982057312e+00
--1.0192940444839937e-01
--2.2207877851910645e+01
--1.5481607776014135e+00
--2.2019890350284421e-01
--2.2063614991029432e+01
-1.5912650878596349e-01
--8.2689471178234542e-01
--2.0801844228612474e+01
--1.3912338946904637e+00
--4.5402474073492494e-01
--2.1747241957969845e+01
-1.3064887000629619e+00
--1.6538485953397026e+00
--2.0133680924499206e+01
-3.8817090579305957e-01
--1.3846483757076735e+00
--2.0713020042614549e+01
--8.0726311822357866e-01
--1.0182564171786246e+00
--2.1104647806679804e+01
--1.7787707342930454e+00
--1.4617040675066422e+00
--2.1731348255568143e+01
--1.9202067063588915e+00
--1.5046974207962636e+00
--2.1443676979582037e+01
--1.9202067063588915e+00
--1.5046974207962636e+00
--2.1443676979582037e+01
-4.0798996683760631e+00
--4.4800588173444158e+00
--2.1796395647306781e+01
-4.4521970214676871e+00
--4.6508495099232929e+00
--2.2216308143844383e+01
-3.8188596510272870e+00
--4.4952465550503966e+00
--2.1722257071044119e+01
--2.8467983294051535e-01
--3.2111649541765437e+00
--2.0690164171358298e+01
-8.9170479650818679e-01
--4.2657382509821922e+00
--2.1096572871984993e+01
--1.7922662157977078e+00
--3.8801584793940833e+00
--2.2680379462536191e+01
-2.6733543695343149e+00
--5.3880207803725799e+00
--2.2269023655252528e+01
-2.7773614683755272e+00
--5.7508824600967765e+00
--2.0673445747957032e+01
--7.0879619526658235e+00
--2.9178558019604872e+00
--2.9076704077925335e+01
-8.9485876971423406e-01
--5.3601103737644618e+00
--2.2024769923833905e+01
--8.1564256126278707e+00
--3.2349756618725642e+00
--2.8482823347217042e+01
--1.8877026271274262e+00
--4.8321279624141260e+00
--2.0893439625072773e+01
--7.2266204960209022e+00
--3.8733537230809958e+00
--2.7493408914387839e+01
--8.2459062213369521e+00
--3.8729231897956966e+00
--2.8009402820493374e+01
--6.7461617084928198e+00
--4.8470342188021887e+00
--2.5962848748004461e+01
--5.4745964949640049e+00
--5.8781561440565824e+00
--2.4567938618963360e+01
--6.9534802664049709e+00
--5.6665009651784333e+00
--2.5468304303482658e+01
--6.0705477231418667e+00
--5.9501966931980954e+00
--2.4537791029913524e+01
--6.7321454282918083e+00
--6.2060435675853460e+00
--2.3862675786509776e+01
--3.4946872834343621e+00
--7.3607676632945740e+00
--2.2497691264305388e+01
--5.6204218843584854e+00
--6.9147335691316316e+00
--2.2970303350451271e+01
--4.0602343102783296e+00
--7.5138688338592585e+00
--2.2270846461247164e+01
-3.3642566372244929e+00
--1.0142135740991526e+01
--1.8913955455531550e+01
--4.8333948199157666e+00
--8.2060319522728893e+00
--2.1193572777772896e+01
--5.1588252723932593e+00
--8.7503111435318548e+00
--2.1345150070931986e+01
--3.0349520299550097e+00
--9.3156253854685804e+00
--2.0065572616465275e+01
--3.1450758529020368e+00
--9.4531603149817069e+00
--2.0356103296205898e+01
--4.8246134256203668e+00
--9.0705797616088102e+00
--2.0925091137247730e+01
--3.1494457757892698e+00
--9.4902862367407632e+00
--1.9869940722386591e+01
--4.6903660651434578e+00
--9.2093037371972564e+00
--2.0756469389517097e+01
-1.4097605559787413e+01
-1.8365780982096812e+01
--3.3542514117878589e+01
-1.1757361044168610e+01
-2.0423813194452389e+01
--3.8967810158761345e+01
-1.3610747411785059e+01
-1.2900927867887008e+01
--2.6039091093998689e+01
-1.8801068858037793e+00
-2.4725808593032493e+01
--4.3833714983778592e+01
-1.6878104602674735e+01
-2.6524983770068033e+01
--5.2422875345787368e+01
-1.5199492281223758e+01
-1.1214558910387620e+01
--2.4422940270565775e+01
-1.4652081420528305e+01
-1.0444618762185174e+01
--2.3700917849539767e+01
-1.3787538051757499e+01
-1.4931589883960186e+01
--3.1914935148602563e+01
-1.8895394309149832e+01
-2.5700549365873758e+01
--5.3885156564844145e+01
-2.2132281483006135e+01
-2.7643514502107088e+01
--6.2638210232744783e+01
--1.6161244552965592e+00
-2.1679467945843232e+01
--4.3512551675144977e+01
-2.3063067003264194e+01
-2.6551385277711045e+01
--6.2363408399744124e+01
-2.4391881362005478e+01
-2.7798748582592420e+01
--6.4761832026376908e+01
-1.3924933101149827e+01
-2.3121915276179628e+01
--5.5945497051305232e+01
-1.2588746178090105e+01
-7.9340046735603229e+00
--2.5212663424894242e+01
-3.1161249951452613e-01
-1.9363273777797783e+01
--4.5692674778390220e+01
-9.2128882200943529e+00
-2.2123979405599350e+01
--5.6567846044571198e+01
-8.6847340171838994e+00
-2.1250892095722680e+01
--5.4176654482075669e+01
-1.3082983647752709e+01
-7.7219249981581290e+00
--2.6494805676408205e+01
-9.9710530321585744e-01
-1.9225888292307697e+01
--4.9564238251223216e+01
-1.4509799286296840e+01
-9.3613466008933415e+00
--3.3834602363893467e+01
-1.3932204252529770e+01
-9.0401829108717635e+00
--3.3001962247533633e+01
--9.1147170415611167e-01
-1.6762977258953512e+01
--4.8577437705071659e+01
-1.3814311216666573e+01
-9.4106280077875404e+00
--3.8121770040905268e+01
-1.2914534244964520e+01
-5.2464996277542451e+00
--2.8186913534408220e+01
-1.3604381873841175e+01
-7.6453643138117320e+00
--3.7171582217162275e+01
-1.4163966380161664e+01
-3.2292336724817421e+00
--2.6865038022089660e+01
-1.3561876220624193e+01
-6.3368813443854348e+00
--3.7449264494704003e+01
-2.8648936725661054e+00
-1.0866534751314614e+01
--4.5680743364850613e+01
-5.2601212121495227e+00
-8.8752205897371255e+00
--4.4336422959927731e+01
-1.3168050513447225e+01
-2.6456112324997645e+00
--3.2065166792061419e+01
-1.3112767578096124e+01
-2.0739994777689770e+00
--3.0692549364974063e+01
-3.1978166657053149e+00
-2.1091901348540718e+00
--2.1284595756939630e+01
-1.8991763178189371e+00
-1.8239052533125841e+00
--1.8721188312350996e+01
-1.3352490950232395e+01
-1.1768725656855230e+00
--3.0654353559066184e+01
-2.6935345785489004e+00
-1.5461711514922274e+00
--2.0872423728980834e+01
-1.4033463835057036e+01
-4.4391728912626571e-01
--2.9363060371257287e+01
-8.8229958763451477e-01
-1.9388434645690213e+00
--2.1019085076394706e+01
-1.2264095928671638e+01
--6.3263354671580985e-01
--2.5374646163533239e+01
-2.4184739208720609e+00
-9.0718973015203974e-01
--2.0490430313325870e+01
--2.5107500096306081e+00
-5.5142387511348439e+00
--4.0481557951571865e+01
-3.2944564633774620e+00
-9.9429515892773893e-02
--2.1143224901610761e+01
--3.7818349526076697e-02
-9.4088036306861389e-01
--2.0891578183627960e+01
-2.7919798186854701e+00
--4.6594406116095603e-02
--2.0403606795834406e+01
-2.3594092460368632e+00
--3.0626803907927858e-01
--2.0411397750792748e+01
--2.4298265966373904e+00
-1.4512062086196034e+00
--2.4305994929274046e+01
--2.4099628884063802e+00
-6.5780838923511298e-01
--2.3301794677848687e+01
--2.9649858059398229e+00
-9.4565263987124515e-01
--2.4691908076291785e+01
--2.9649858059398229e+00
-9.4565263987124515e-01
--2.4691908076291785e+01
-2.2916387487536345e+00
--1.0503184002819250e+00
--2.0498677076687155e+01
-2.2916387487536345e+00
--1.0503184002819250e+00
--2.0498677076687155e+01
--1.8217147139172980e+00
-2.8049170234829529e-01
--2.2729615168335741e+01
--1.4913027390131928e+00
-2.4882554944177158e-02
--2.2267250995185243e+01
--1.6702195907180379e+00
-9.5357047404033460e-02
--2.2450426922790395e+01
--6.8737224130364882e-01
--3.7478469902745698e-01
--2.1467688964067328e+01
-1.8685313177216343e+00
--1.2580689075188569e+00
--2.0551290419716214e+01
--1.7271116456134279e+00
--6.0571492216403988e-01
--2.1676078305942614e+01
--6.1024331013368893e-01
--9.6955565373286978e-01
--2.1190118003578014e+01
-1.5338359303720135e+00
--1.9066309981324525e+00
--2.0204240253546214e+01
-4.3487419204220812e+00
--2.8977829056156432e+00
--2.0419148631579624e+01
--1.3855211442498565e+00
--1.3999967292303204e+00
--2.1582874802521658e+01
-3.1959452846777823e+00
--3.0164744831713675e+00
--1.9646613312621387e+01
--3.3596082685960718e+00
--9.1880623913649151e-01
--2.3064646170454385e+01
--1.0327925084544280e+00
--1.7478125416769970e+00
--2.1302520948406695e+01
-4.5236742723071588e-01
--2.3556245951462103e+00
--2.0814490004602749e+01
-2.9835846089286711e+00
--3.3984811812255522e+00
--2.0133015598199254e+01
--2.7083494163019988e+00
--1.7542464667942623e+00
--2.1952100423071517e+01
-3.0172886038305591e+00
--4.2858179444815345e+00
--2.1341313037251339e+01
-4.3471440897846252e+00
--4.8870844555574147e+00
--2.2465922918839151e+01
--7.6274771857362547e+00
--2.0959223283878607e+00
--3.0705318941307262e+01
--7.6373081462176016e+00
--2.0902077836175632e+00
--3.0424835953795704e+01
--3.2647799008725981e-01
--4.7384031796583113e+00
--2.2673575375183894e+01
--8.0755961900290760e+00
--2.5234716430123441e+00
--2.9272251750163829e+01
--1.4235642800342991e+00
--4.6937087803074924e+00
--2.0620666800103582e+01
--5.4177854600612969e+00
--6.0106639437083986e+00
--2.4458371480155407e+01
--6.3524319349228859e+00
--5.8786133164179137e+00
--2.4881804455903843e+01
-4.3698266388319835e+00
--9.4372453873653761e+00
--1.9719133084888277e+01
-1.4498860805387012e-01
--8.8467076596853538e+00
--2.0835507916333160e+01
-3.8018049825539415e+00
--1.0160861705789914e+01
--1.8881387168987441e+01
-4.0356256980997490e-01
--9.4150026334202561e+00
--1.9911558353437020e+01
-8.5082192832482739e-01
--1.0150643276902041e+01
--1.8600095532267375e+01
--3.6843391492375179e+00
--9.2608858807381065e+00
--2.0605758250167263e+01
-1.3072085986877054e+01
-1.4959930540113685e+01
--3.0658370920258253e+01
-2.3809864957217016e+01
-2.9615295876905215e+01
--6.2599914738185610e+01
--2.8494201143173985e+00
-1.8469714853873484e+01
--4.5647407851701225e+01
-1.3703598675068401e+01
-1.0147968686851881e+01
--3.6770257014632847e+01
--1.8202993143621082e-01
-1.6693299535443970e+01
--4.9061470703342081e+01
-5.2015570823915214e+00
-9.8709968182817658e+00
--4.3716748217651137e+01
-1.2806386917845654e+00
-6.7169921562665291e-01
--2.0392956847676626e+01
--2.1256656884008494e+00
-2.0707428054582744e+00
--2.3627245996949753e+01
--1.8744443246035130e+00
-1.2864611495260061e+00
--2.3093151415820476e+01
--8.9896020658334030e-01
-7.3938761710126444e-01
--2.1613108031824876e+01
--5.8620374434381395e-01
-1.6210969028194563e-01
--2.1189609358480169e+01
--3.1424840441502699e-01
--7.9010398530536052e-01
--2.1197859648112860e+01
-3.0171358646250335e+00
--2.6324517240878889e+00
--1.9851098267237859e+01
-2.3075250201071764e+00
--2.5226929348702658e+00
--1.9627245600837124e+01
--9.3495790500649256e-01
--1.8190019235792425e+00
--2.1245301721749076e+01
--1.8689496861193622e+00
--1.6141509101515261e+00
--2.1568221905293395e+01
-3.0872537551745625e+00
--3.6236513532407932e+00
--2.0833283622935340e+01
-4.7027250022291418e-02
--3.8090946822621254e+00
--2.0932587839079158e+01
--3.2656621976514582e+00
--3.3046360474326804e+00
--2.4957325765000896e+01
--2.5071401922782188e+00
--3.8617303757592567e+00
--2.4040843833539686e+01
--6.5030326238083136e+00
--5.0752898067751442e+00
--2.5708883396304913e+01
--7.4229412863297828e+00
--5.0008730129249317e+00
--2.6004502913504705e+01
--3.1360677165319961e+00
--7.5805431146478819e+00
--2.2301094198899786e+01
--5.3604054397495497e+00
--7.1720130446341166e+00
--2.3225819353920450e+01
--1.2409745642360017e+00
-1.8999220254693679e+01
--5.0885655395431328e+01
--1.9439517067831895e+00
-1.7108158280179278e+01
--4.7988719223794533e+01
-1.1576370396035312e+01
-6.6910262968558847e+00
--2.8534831803579788e+01
-1.2628952318193067e+01
-4.7365497264662029e+00
--2.7693935889425870e+01
-1.2447251952230205e+01
-4.5209302051588329e+00
--2.7774781473543914e+01
-1.5806047521662763e+00
-4.1420437773670820e+00
--2.3837562688742491e+01
--2.3737311947113580e+00
-3.7239825079171514e+00
--2.8437725372024129e+01
--2.6966372402776155e+00
-3.4890091166071797e+00
--2.8196342812551453e+01
--2.5251967972461107e+00
-3.3273836138392503e+00
--2.7971135212586681e+01
-1.1194162157650025e+00
-8.7495157175474636e-01
--2.0411820811894597e+01
--2.9706990751500038e-02
--1.8566958951357054e-01
--2.0557433857946918e+01
-2.1294226351751919e+00
--1.8408578659522707e+00
--2.0014628777919075e+01
-1.2841487275865131e+00
--1.8526576516072764e+00
--2.0037802680868985e+01
-5.5179009126178458e-01
--1.7106379125512037e+00
--2.0241042078038991e+01
--8.6909165404879785e-01
--1.6983772506136354e+00
--2.1132075085819437e+01
-2.3929777562111427e+00
--2.8323284760396885e+00
--1.9770719880290134e+01
--6.8497242107358558e-01
--2.0134339684075648e+00
--2.0922343980957695e+01
-4.9150685931680274e+00
--4.3893679458588428e+00
--2.1939024597859198e+01
-4.5852371038065662e+00
--4.3991231366727126e+00
--2.2162561941915790e+01
-4.5852371038065662e+00
--4.3991231366727126e+00
--2.2162561941915790e+01
-2.1100179625468414e+00
--4.4842456559047763e+00
--2.0989593356401961e+01
-2.8042963789819431e+00
--4.9621171235219608e+00
--2.1427950428329009e+01
-3.0202114772531643e+00
--5.0602615693576398e+00
--2.1960946408862501e+01
--3.2410510021260315e+00
--3.4212790753889575e+00
--2.4791140778307863e+01
-3.0020719070721724e+00
--5.4496979195471011e+00
--2.2125280364258071e+01
--2.7262711433187521e+00
--3.7642276596539253e+00
--2.4148494267830408e+01
--7.3692878293602497e+00
--4.6248419782910926e+00
--2.6406075546965578e+01
--7.6018326845899784e+00
--4.7786723292581481e+00
--2.6460444939033955e+01
--4.5515347619747235e+00
--6.2648350276902285e+00
--2.4418452217217396e+01
--5.7879582638018796e+00
--5.8824820680961469e+00
--2.4516351171622826e+01
-3.9359995187888779e+00
--9.4960836701479359e+00
--1.9867653945105648e+01
-4.2083311672475832e+00
--9.8246303558988402e+00
--1.9378833702480765e+01
-1.3756722350152872e+01
-1.7776120215746570e+01
--3.4315566294739156e+01
-2.1876757813157141e+01
-3.0225079149338196e+01
--5.9997667224586515e+01
-8.4990169896802872e+00
-2.5207568581684786e+01
--5.0724710738695713e+01
-1.4682164108949106e+01
-1.2607572114553879e+01
--3.1976872147104896e+01
-9.6875526069437470e+00
-2.1750106698307409e+01
--5.3259737573881772e+01
-1.2907409459936028e+01
-5.4019455633162705e+00
--2.6121489671150552e+01
-1.2932016845388112e+01
-5.2739410182279789e+00
--2.8878142664603466e+01
-5.7749971779807154e+00
-1.1021831838120359e+01
--4.7267042937376125e+01
--1.8589733108122588e+00
-3.5999126377040080e+00
--2.7570799282430652e+01
-9.7067230607075428e-01
-3.7790678577693276e-02
--2.0405860131416404e+01
-2.0871809537403507e+00
--1.6485535488614009e+00
--2.0128665650059162e+01
--7.2879162958974204e+00
--2.6420158458611982e+00
--2.9234714861715791e+01
--3.3649644876540035e+00
--4.1087458610016139e+00
--2.4253958969043818e+01
--4.2856672899738975e+00
--6.9918490369084818e+00
--2.3550123689191874e+01
--6.2908475368031320e+00
--6.4482240175691308e+00
--2.3807299115862090e+01
-9.5314869830707796e+00
-2.7940013080602910e+01
--4.9132836804084825e+01
-4.6307322735199579e+00
-1.0427091792898256e+01
--4.5100325503913773e+01
-4.8206786539033153e-01
-9.4385412800516821e-01
--2.0665992640312727e+01
-2.8843209098940790e+00
--3.0852625061716297e+00
--1.9703858695660205e+01
-2.2633196380218013e+00
--4.6836636647904122e+00
--2.1045736404998237e+01
--2.0824339359346871e+00
--3.4950765832488084e+00
--2.3107606815825125e+01
--6.9954377352977160e+00
--4.8616259217587441e+00
--2.6240068318888969e+01
--6.9954377352977160e+00
--4.8616259217587441e+00
--2.6240068318888969e+01
--7.0355399005732737e+00
--5.1400457197513374e+00
--2.5589177864433825e+01
-2.0356829020779255e+01
-2.9909141910540335e+01
--5.8193601633769987e+01
-6.1550652014080445e+00
-2.5805747657583154e+01
--4.7632568398817476e+01
-1.3545101317401027e+01
-1.4947276822450620e+01
--3.2293782425934204e+01
-1.4481904609865104e+01
-1.3328489650377948e+01
--3.2978640339046436e+01
--2.3911505362561529e+00
-3.2077992751304456e+00
--2.7093921965056289e+01
-5.3271713024604178e-02
-4.6042973522135566e-01
--2.0951689342010162e+01
-4.7250364058491137e+00
--9.9098152865527167e-01
--2.0212674729577007e+01
-1.9240923089969346e+00
--3.1437037520641260e+00
--1.9813069692482969e+01
--1.0468464580775367e+00
--2.3703341533656141e+00
--2.0269239460065297e+01
--4.4091794630445191e+00
--7.2955742870948121e+00
--2.3158021403980879e+01
-1.4350446496846484e+01
-2.3978514034958160e+01
--6.1858467616963559e+01
-1.4350446496846484e+01
-2.3978514034958160e+01
--6.1858467616963559e+01
-1.3903413520737697e+00
-1.8996788933557404e+01
--5.1401757367027045e+01
--4.9087260975824776e-01
-8.3096344947912038e-01
--2.1251513264628354e+01
-2.8309084922574344e+00
--1.8860604431561641e+00
--1.8523611764336916e+01
-1.0098215463806481e+00
--2.8198167377485492e+00
--1.9772595565064108e+01
--2.2753399777497177e-01
--1.8788564400111112e+00
--2.0934652623313443e+01
--2.2753399777497177e-01
--1.8788564400111112e+00
--2.0934652623313443e+01
-7.8391840990741501e-01
-1.8073241928854095e+01
--4.6104094218746908e+01
--6.1728240653611088e+00
-1.6617478953683527e+01
--4.0891931430313718e+01
--1.4456838018867944e+00
-1.8576146166352473e+01
--4.7201830466822791e+01
--1.0748808992340562e+01
-1.5664511730016713e+01
--3.7408588168549493e+01
--6.0036138738610410e+00
-1.6487948813162532e+01
--4.1356467056041744e+01
--3.9747879357670834e+00
-1.6939863716525714e+01
--4.3140281662803233e+01
--3.9747879357670834e+00
-1.6939863716525714e+01
--4.3140281662803233e+01
--3.3656244713840584e+00
-1.7707820487148002e+01
--4.5400205868578851e+01
-1.2633213905837181e+01
-1.1000075397034108e+01
--3.4880882410042105e+01
--4.1668806319986045e+00
-1.6326698786506206e+01
--4.3934432221367977e+01
-1.1606222478665057e+01
-7.8897760386757909e+00
--2.6659884100698171e+01
-1.3503680269742441e+01
-9.6732124605851286e+00
--3.2322932738142541e+01
--5.7397990219152861e+00
-1.6640273709881473e+01
--4.4945900555390629e+01
--8.8132925780733089e+00
-1.4840538072694745e+01
--4.0735045487612631e+01
-1.5254173131291909e+01
-7.4380183297122553e+00
--2.8348943676751755e+01
--8.1143685797681187e+00
-1.5155409655855600e+01
--4.2095293297710093e+01
--5.9738763132640145e+00
-1.7147251755019393e+01
--4.8636434094246212e+01
--3.4870315219141013e+00
-1.7057838814480309e+01
--4.9436830296868663e+01
-1.2037166495244142e+01
-6.7482253655976923e+00
--2.5670463128212290e+01
-1.6667868946612281e+00
-1.8349221294916578e+01
--5.5054256821125925e+01
-1.5767174921708634e+01
-1.2793618840384291e+01
--4.4678860908025939e+01
--8.9407320102529599e+00
-1.5057813161997144e+01
--4.2034089433071330e+01
-4.1641131795609017e+00
-1.7414770644800228e+01
--5.4486737375178848e+01
-5.1492782256527718e+00
-1.9018158397223392e+01
--6.0213248622403697e+01
-1.3462826476128287e+01
-8.5730522754231018e+00
--3.3139177632199399e+01
--7.1518873818859969e+00
-1.4566800384933897e+01
--4.3633559996956357e+01
--3.5154437934095903e+00
-1.6358142937409983e+01
--5.0772654984706691e+01
--8.5713629622441108e+00
-1.3495587531818021e+01
--4.1120860106274904e+01
--8.5713629622441108e+00
-1.3495587531818021e+01
--4.1120860106274904e+01
--3.4520742674957590e+00
-1.6061199461614777e+01
--5.1081379666507019e+01
--1.3296427052315977e+01
-1.6118514597261271e+01
--4.7289515055318475e+01
--7.6548270733021750e+00
-1.5602792465605186e+01
--4.8080606567168203e+01
--3.7089615075167441e+00
-1.5971429831809974e+01
--5.0952180941205270e+01
--1.0264680943604672e+01
-1.3361774436186298e+01
--4.0366030699821579e+01
--8.2341413548162024e+00
-1.4221411724319228e+01
--4.3699003102000489e+01
--9.4647499276931999e+00
-1.3969350997169952e+01
--4.2372934380896780e+01
--1.1016979984597763e+01
-1.2765542212923105e+01
--3.8316519801138703e+01
--1.1173184312044532e+01
-1.2652292300333333e+01
--3.7971947832464238e+01
--1.0571725165947187e+01
-1.5067742923288069e+01
--4.5575737223820497e+01
--9.4811483259420672e+00
-1.3609691778553220e+01
--4.2061691182046417e+01
--1.5338010596310557e+01
-1.3808105840014827e+01
--3.9509133276013628e+01
--9.1636888033477568e+00
-1.3521511379223199e+01
--4.2584488066282667e+01
-4.6598706914114416e+00
-1.4765693089190574e+01
--5.1890681169477325e+01
-4.4746408270768709e+00
-1.4490153163218205e+01
--5.1252631679018734e+01
-1.4988956760000024e+01
-8.9064592966971272e+00
--3.8146959199020202e+01
--1.0348367582640037e+01
-1.2537817944177204e+01
--3.9451560953102394e+01
--8.9786546421424624e+00
-1.2710176212854233e+01
--4.0874121557989461e+01
--7.9818785979901792e+00
-1.4129514828517086e+01
--4.5861232101149277e+01
--1.0292984967914572e+01
-1.4549253930865206e+01
--4.6165993257500865e+01
-1.4423158082890973e+01
-9.0484101788256144e+00
--3.9294415872648536e+01
-1.4423158082890973e+01
-9.0484101788256144e+00
--3.9294415872648536e+01
--8.7123907491296197e+00
-1.3151354667643888e+01
--4.3083130888800454e+01
--9.0482201152941428e+00
-1.3542701056146768e+01
--4.4173242386588882e+01
--1.3634587139683251e+01
-1.5195364880370002e+01
--4.7625580503315433e+01
-6.2425598201313841e+00
-1.3361191928291385e+01
--5.0615074138780223e+01
--1.0220828711950267e+01
-1.3266361152303947e+01
--4.2816879426614221e+01
--1.2340194387643448e+01
-1.4429968636177055e+01
--4.5564441848172066e+01
--3.6087843829200583e+00
-1.4270113265471739e+01
--4.9512036525408568e+01
--1.4171663174472275e+01
-1.2732840256651748e+01
--3.9496797268501552e+01
-2.4710880017174222e+00
-1.5187442161495616e+01
--5.5432327405830463e+01
--8.8777379963845551e+00
-1.2576933409379906e+01
--4.2040244097852089e+01
-1.4314076097775047e+01
-1.1001294269636681e+01
--4.7667577735166603e+01
-4.4818862822343797e-01
-1.3618077936096723e+01
--5.0610389193857493e+01
-1.4243205272482044e+01
-8.6890227515771077e+00
--3.9713256660544360e+01
-1.3582672843070224e+01
-7.3944369357084838e+00
--3.5066089999580036e+01
--1.3629064146859433e+01
-1.3230917976235736e+01
--4.2630807064098100e+01
--9.6392118923547052e+00
-1.2355685333559721e+01
--4.1603412488894335e+01
--3.6232150051593233e+00
-1.4504878891461038e+01
--5.2033189902210843e+01
--1.3821000952623191e+01
-1.2399939656890682e+01
--4.0194199726883738e+01
--1.3821000952623191e+01
-1.2399939656890682e+01
--4.0194199726883738e+01
--7.1464632990124679e+00
-1.2584008484089491e+01
--4.4588806490696342e+01
--1.3463957551934135e+01
-1.2372473423425715e+01
--4.0509909894310049e+01
-2.0322325893242397e+00
-1.2390150884822951e+01
--4.8662922675495160e+01
-7.3762156530504897e-01
-1.2837951011913663e+01
--4.9695369895509607e+01
--7.4390098445975781e+00
-9.2165229950487682e+00
--3.3668801255678311e+01
--1.0476140618570772e+01
-1.3979347127852861e+01
--4.8319054010266179e+01
-3.8063764568481080e+00
-1.3299460934304374e+01
--5.3012801307274025e+01
--5.7904712460248344e+00
-1.2675352436167110e+01
--4.6517335190499495e+01
-1.2389202878454288e+00
-1.2620306611741897e+01
--4.9391046644715679e+01
--7.0509750787631207e+00
-1.3063846531390041e+01
--4.7328985019746504e+01
-2.9391115708008204e+00
-1.1752994525796566e+01
--4.8039081308449099e+01
-1.2443470879656672e+01
-5.4128688323976109e+00
--2.9179472339591150e+01
-2.4251127498027616e+00
-1.2385460244136135e+01
--5.0092650650373855e+01
-2.2768148968914286e+00
-1.2128473155418114e+01
--4.8739794102013221e+01
-2.0211408629939926e+00
-1.1737682777300462e+01
--4.8135302918080193e+01
-1.8177993008577646e+00
-1.1682075257026606e+01
--4.7967051835321001e+01
-1.4245915094495260e+01
-7.3159294833038393e+00
--3.7886716591702033e+01
-1.3761799201055920e+01
-5.1580671145822405e+00
--2.9573888082652697e+01
-1.3761799201055920e+01
-5.1580671145822405e+00
--2.9573888082652697e+01
--9.0095769939951265e-01
-1.2558779963213384e+01
--4.9895527333768349e+01
--1.0786160358666295e+00
-1.2112722867546230e+01
--4.8637909779016191e+01
--1.2467093315478042e+01
-1.0481530358929366e+01
--3.6631448397573998e+01
--3.5807672374628323e+00
-1.2284290945348843e+01
--4.8715684696236075e+01
--1.2004438069662230e+01
-1.0713367102704360e+01
--3.8233377797557338e+01
--1.2004438069662230e+01
-1.0713367102704360e+01
--3.8233377797557338e+01
--1.1773662671818203e+01
-1.0840747441328586e+01
--3.8883310694865592e+01
--9.4043778180791353e+00
-1.1538846231037125e+01
--4.3039271600787472e+01
--1.8505845528132421e+00
-1.1998537051980211e+01
--4.8783043293589671e+01
-8.3393382399680183e-01
-1.1432916597345878e+01
--4.7703424824803349e+01
--1.8582821315532261e+00
-1.1903401963634304e+01
--4.8799281684665914e+01
--4.1119841230397016e+00
-1.2506293038965737e+01
--4.9798772925031130e+01
--4.0165233319040432e+00
-1.2042769241534105e+01
--4.8435387790005123e+01
--2.6602618598884220e-01
-1.1189433860733962e+01
--4.7126341678255109e+01
--1.1503064839876052e+01
-1.0769365959977748e+01
--3.9379896262032354e+01
--8.6051831340865412e+00
-1.2241684428194919e+01
--4.7317616282779028e+01
--8.3455156546657481e+00
-1.1573940094467966e+01
--4.5002936019946290e+01
--4.0673869350027303e+00
-1.2042112378897436e+01
--4.9248860872939908e+01
--1.2931942391438765e+01
-1.1855528587855170e+01
--4.4114863955155933e+01
-7.9746042690392320e+00
-8.8211708694289825e+00
--4.4024001938588569e+01
--1.0394470963557445e+01
-1.1596427278364592e+01
--4.4824975780459809e+01
-1.3798055166450714e+01
-2.7985743851925444e+00
--2.3248606859915128e+01
-1.6567995440526396e+01
-3.5166448847276688e+00
--2.7866958984050747e+01
--7.6145054036767608e+00
-1.2328064360424531e+01
--5.0390731175472816e+01
--1.0439353412323138e+01
-1.2400554498575678e+01
--4.9177790377212808e+01
--3.6603828179062972e+00
-1.1037723925509953e+01
--4.7463074490130225e+01
--2.5742178626409657e+00
-1.1220778560103007e+01
--4.8880636613270937e+01
--1.3721703216642181e+01
-1.0454818149279815e+01
--3.9508428412609923e+01
-2.5332355771426611e+00
-9.5021047256011748e+00
--4.4642278600281976e+01
--8.2508931587811549e+00
-1.1106922626231343e+01
--4.5888816681429702e+01
--4.1305042794725981e+00
-1.1282333530168195e+01
--4.8827760535760639e+01
--1.2419023388356308e+01
-1.0691554155295430e+01
--4.1597901597538851e+01
--1.0777380370602742e+01
-1.2189111874208010e+01
--4.9033570253417956e+01
--9.9814705048591676e+00
-1.1815230684732954e+01
--4.7495550097874464e+01
--1.2322162888057807e+01
-1.1181271847963203e+01
--4.3666551070595233e+01
--8.4353215907062147e+00
-1.1040804519551060e+01
--4.6019083595436250e+01
--1.0338595399731403e+01
-1.1811216001272049e+01
--4.7710130132997264e+01
--1.0338595399731403e+01
-1.1811216001272049e+01
--4.7710130132997264e+01
--1.6485070783776232e+00
-1.0400665711795066e+01
--4.7412106269621908e+01
--1.3961473844824773e+01
-1.0632521960349976e+01
--4.1259267024824958e+01
--1.1855615353654429e+01
-1.0932564872966823e+01
--4.3459419599483979e+01
--1.6169278448142343e+01
-1.1328158661998520e+01
--4.2956578910919156e+01
-9.9048431921893627e+00
-7.4718936815211867e+00
--4.2547381826439143e+01
-1.4473027141660888e+01
-6.1313125722112147e+00
--3.9558132811245635e+01
-1.5689233897895694e+01
-3.4928889091873234e+00
--2.8884377220126876e+01
--5.8304405108587183e+00
-1.0476758709959400e+01
--4.6138963677844721e+01
--5.8304405108587183e+00
-1.0476758709959400e+01
--4.6138963677844721e+01
-1.3760375450252608e+01
-2.9798731549007211e+00
--2.5324324156284263e+01
--6.6674637102615506e+00
-1.0631405648252965e+01
--4.6396727880222400e+01
--1.0641096234234049e+00
-9.5012972100374693e+00
--4.5004237073047811e+01
--1.0247174254784083e+01
-1.1831254776323703e+01
--4.9427432521764011e+01
-2.8088963030431926e+00
-8.5788553944112174e+00
--4.3702995411203695e+01
--5.0143345828586252e+00
-1.0749794478499018e+01
--4.8127622480030759e+01
--1.1353447884474043e+01
-1.0127743341023312e+01
--4.1475863462419447e+01
--1.1431064108863980e+01
-1.0195771123890941e+01
--4.1905297060431892e+01
--5.3528069359784656e+00
-1.0489843806912587e+01
--4.7228124660989202e+01
--1.2968928991438124e+00
-9.3889550592783273e+00
--4.4889996584504210e+01
--1.2264565437436882e+01
-1.1917377957555940e+01
--4.8949040477969071e+01
--1.6967470550060284e+01
-1.0849747518280006e+01
--4.1320088091504729e+01
--1.2142484299062010e+01
-1.1868878354643648e+01
--4.9006029890215430e+01
--1.1855552448366270e+01
-1.1447080516001702e+01
--4.6843447336496418e+01
-1.4531531454082774e+01
-3.2323892649206805e+00
--2.7326577290846142e+01
--1.1975508271465754e+01
-9.9740860047519746e+00
--4.0893082693364036e+01
--1.1619821157696418e+01
-1.1724855381599429e+01
--4.8984640163780185e+01
--1.1457689444947034e+01
-1.1444199445763850e+01
--4.7386991230221305e+01
--1.3657768954805583e+01
-9.8547931168336582e+00
--3.9333756263541886e+01
--1.2710438198124821e+01
-1.1785837908524174e+01
--4.8837056558748223e+01
--1.0912171465769836e+01
-1.1428462209712436e+01
--4.8011412544649666e+01
--6.7526085098436308e+00
-1.0186031550009472e+01
--4.5789495643814874e+01
--4.5850650958374848e+00
-9.7602135722906525e+00
--4.5337206875124302e+01
-1.3995287075387399e+01
-2.5740642790278874e+00
--2.4614859518295248e+01
--1.1698267686242426e+01
-1.1673286034035058e+01
--4.9128215905349741e+01
--1.1541762986137742e+01
-1.1630002473626689e+01
--4.9153628844865267e+01
--1.2205221060987380e+01
-1.1646278220977857e+01
--4.8983246007068395e+01
-1.3402421353629427e+01
-2.7471082999254350e+00
--2.5847130160029575e+01
--1.2494884747969790e+01
-1.1636450464323532e+01
--4.9024474307582921e+01
--1.1219188580256574e+01
-1.1511189842496831e+01
--4.9182303311738714e+01
--1.0422313819606751e+01
-1.1429064485354610e+01
--4.9059027427519858e+01
-2.2520058693704184e+00
-8.1724910902814880e+00
--4.3305238843587738e+01
--1.5583483271220183e+01
-1.0573646278294161e+01
--4.2398428578970574e+01
--1.5738775596850358e+01
-1.0566707855684470e+01
--4.2354650957905221e+01
--1.1048844969915866e+01
-1.1413738892095504e+01
--4.9387050245025712e+01
--1.5395382670746137e+01
-9.8555851617609296e+00
--3.8735160789297922e+01
--1.4051925830091252e+01
-1.0109362296387326e+01
--4.1697735232481357e+01
--1.1663298677844553e+01
-1.1435982550623027e+01
--4.9295950096480418e+01
--1.2479695048546828e+01
-1.1462356985503979e+01
--4.8924493113055220e+01
--1.2479695048546828e+01
-1.1462356985503979e+01
--4.8924493113055220e+01
-1.3807420204299813e+01
-2.6040191308354825e+00
--2.5671053730149293e+01
--1.2596825504482611e+01
-1.1115571579626325e+01
--4.7200203841490811e+01
--6.6303047489804516e+00
-9.8344001142262663e+00
--4.5670649863598079e+01
--2.0986517783584264e+00
-8.6626771906247697e+00
--4.3882923543737370e+01
--3.3495764949578657e+00
-9.2992647876211372e+00
--4.5501628334694018e+01
-1.2724786980964581e+01
-5.5365931608815329e+00
--3.9702477663286210e+01
-1.4248799173247724e+01
-2.1654751016634450e+00
--2.4498988131040580e+01
--1.1329613473611621e+01
-1.0976254329385135e+01
--4.8658920354461301e+01
-3.9367873954285776e-01
-3.8069483577882717e+00
--2.3307621384479084e+01
--1.5856975314624709e+01
-1.0071138978420031e+01
--4.1806368202022675e+01
--1.3840360568827542e+01
-9.4101212220792938e+00
--4.0322198659553841e+01
--1.2867468315540378e+01
-1.1045654294952712e+01
--4.9014064412180559e+01
--1.1232274211367562e+01
-1.0854832578755925e+01
--4.9557042149856777e+01
-1.6158195638257581e+01
-2.4953025092402989e+00
--2.8479258631158395e+01
--1.1958788400343623e+01
-9.2237041883663284e+00
--4.1489155870572482e+01
-6.2810008042936327e-01
-7.4540542545265405e+00
--4.2081347466461239e+01
--1.4591255198134396e+01
-8.5939731621173205e+00
--3.6250749842964687e+01
--1.5689680825547400e+01
-9.7120147668124908e+00
--4.1420056195451515e+01
--1.1451816439878915e+01
-1.0831644762200041e+01
--4.9470177131188073e+01
--3.2334272818801923e+00
-8.0493857133595093e+00
--4.2843847078222936e+01
--2.1749367813441371e+01
-1.2853652269411526e+01
--5.2823827217365611e+01
--1.6557295646522171e+01
-9.9436737270994584e+00
--4.2369553977232606e+01
--1.4023827912195404e+01
-8.5505487689770003e+00
--3.7356006486943166e+01
--1.2964661999647266e+01
-1.0721652055386366e+01
--4.9167550206362563e+01
--1.4594930989658874e+01
-8.5337112688251935e+00
--3.6961387588033269e+01
--1.1977434237701381e+01
-9.0918441825393383e+00
--4.2467671333318798e+01
--5.5543962783531784e+00
-8.1004502480951128e+00
--4.2819472811705467e+01
--5.5543962783531784e+00
-8.1004502480951128e+00
--4.2819472811705467e+01
--2.6255080634901873e-01
-3.5583414460949778e+00
--2.3281177378158141e+01
--2.7086268449847632e+00
-7.5509654593851474e+00
--4.2241234192446974e+01
--1.3013726089217361e+01
-9.7607936989327371e+00
--4.5590588769371934e+01
--1.4087133758472444e+01
-1.0564107966068917e+01
--4.9005350141105538e+01
-1.3354108151775467e+01
-2.2290774852145412e+00
--2.7514241804705382e+01
--2.7440534519053319e+00
-7.4406747789825625e+00
--4.2106746282105291e+01
-1.4994655174426773e+01
-2.4620129906967647e+00
--2.9973037271752794e+01
-1.1843672081859701e+01
-4.4363811660645380e+00
--3.8232352847407526e+01
-3.6525516036168053e+00
-2.5535712813510529e+00
--2.1895104268935984e+01
-1.3616221382548522e+01
-1.9245083564337946e+00
--2.7118764261535933e+01
-3.8893386048841307e+00
-2.4142453484658697e+00
--2.1884461232428638e+01
-4.1182005456001667e+00
-2.3394733493605977e+00
--2.2038579396039705e+01
-1.4183502188900658e+01
-1.6062634120936776e+00
--2.6517500351390520e+01
-1.3891374561720651e+01
-2.3805159877193431e+00
--3.0789107945611182e+01
--6.8852285198072591e+00
-7.6008678560989891e+00
--4.3120908543000226e+01
-1.1671188553568992e+01
-3.7333422042832272e+00
--3.7290538713287951e+01
-4.5706798197893832e+00
-2.1105056900132353e+00
--2.2314770093409816e+01
-1.1781828130849949e+01
-3.4599749741028329e+00
--3.6876061157570859e+01
-3.1409828050582775e+00
-2.2746131787266508e+00
--2.2337589969081595e+01
-1.4520198849400051e+01
-6.0143626343338885e-01
--2.3202719111637201e+01
-1.1467327273657407e+01
-3.3292694285280811e+00
--3.6527509950568565e+01
-1.4409606957113661e+01
-1.0354756139049699e+00
--2.5153279161077936e+01
-1.3115522179499960e+01
-2.4921246477641086e+00
--3.3264434500010061e+01
--4.5591768128333127e-01
-2.7217450335631632e+00
--2.2312011179079555e+01
--1.2568086815555686e+00
-3.1015167214229762e+00
--2.4106003295397368e+01
--1.0520050102355203e+01
-7.1275230854840608e+00
--4.0740950334395919e+01
--1.0949614302875871e+01
-7.1624061491085529e+00
--4.0765334669450702e+01
--1.0949614302875871e+01
-7.1624061491085529e+00
--4.0765334669450702e+01
--1.5810563980320391e+00
-3.4706147571449022e+00
--2.6773153204764117e+01
--1.6366822737111035e+00
-3.3930177376484729e+00
--2.6586755487590253e+01
--1.3878598001274920e+01
-8.6678551439910834e+00
--4.7207562437120266e+01
-1.4668002150690393e+01
-2.4361998057769255e-01
--2.3019439645295471e+01
-1.3769185162032127e+01
-1.8366227888951530e+00
--3.2845305153030047e+01
--1.0992678836110619e+01
-6.6819499317897053e+00
--4.0066546472714464e+01
--7.4485144224202449e+00
-5.9657426083904896e+00
--4.0001164953761318e+01
-7.1596025513980512e+00
-1.6633488723099072e+00
--2.5911113131850030e+01
--8.7248532621165555e+00
-6.0944919161504041e+00
--3.9704627672144817e+01
--1.3903407517399479e+01
-6.9016899675755674e+00
--3.9766880289462804e+01
-1.3498794717928613e+01
-1.5591860404977043e+00
--3.2316285326635132e+01
-1.4485230456152584e+01
-6.2151071879418573e-01
--2.6894225323554661e+01
--7.1752007749220983e+00
-5.7393044750301225e+00
--4.0055003582283859e+01
--6.9607963437344278e+00
-5.6125439206740051e+00
--3.9534075112873182e+01
--1.0757397484422666e+00
-2.2702064999560418e+00
--2.2457952739676578e+01
--7.8296041232715219e-02
-1.9772091877200655e+00
--2.1406786884238109e+01
--3.0123995095261571e+00
-3.3369684926696457e+00
--2.8081817235072972e+01
-1.6575224243448208e+01
-3.8085699398340972e-01
--2.8871231731287690e+01
-4.8054351899450287e+00
-1.2764394341322893e+00
--2.2029638148965059e+01
--1.3588146663990390e+01
-6.4027468163115024e+00
--3.9218395817829375e+01
--2.1981016621457270e+00
-2.7856381652386966e+00
--2.5785788562680775e+01
--2.1981016621457270e+00
-2.7856381652386966e+00
--2.5785788562680775e+01
-7.2748164800618182e+00
-1.2680016314183611e+00
--2.5511561170447667e+01
-2.5458120805674973e+00
-1.4530725391885939e+00
--2.1662668708900444e+01
--6.0485742961924966e+00
-5.0562380120723445e+00
--3.9223433181753855e+01
--1.6902736518688561e+00
-2.4585663279041201e+00
--2.4314387876145901e+01
-2.8255150722346771e+00
-1.2538737351436509e+00
--2.0696876855284103e+01
-2.8255150722346771e+00
-1.2538737351436509e+00
--2.0696876855284103e+01
-1.4207274268813173e+01
-1.0357356649880738e-01
--2.6488420132676112e+01
--6.4437560993745366e+00
-5.0117658027746046e+00
--3.8617773944100328e+01
-1.2821016884541608e+01
-1.4121760893913058e+00
--3.4405184330688911e+01
-1.6070982871410173e+01
-2.5050054780760878e-01
--2.9589807174858187e+01
-1.5623630742589931e+01
-1.7404011069268224e+00
--4.1181373574960148e+01
-1.3122400379659677e+01
-1.3393244559130104e+00
--3.4656026917894323e+01
-1.3616110366043632e+01
-7.9047829931060054e-01
--3.1043655825775154e+01
--1.7239275449509373e+00
-2.1498091609094669e+00
--2.3391229221886348e+01
--6.0731419271976099e+00
-4.7588878974628930e+00
--3.8963013018409811e+01
-1.2766387368871431e+01
-1.1752836792146397e+00
--3.4040978280659232e+01
-1.6326271393170970e+01
--3.1037824895515070e-02
--2.9414971376876423e+01
-1.2774896991820375e+01
-1.1107861502266558e+00
--3.4155304639436402e+01
-3.7621810593636611e+00
-9.2437036393526995e-01
--2.1002145997432944e+01
-7.4194000969956271e+00
-8.0940491563559924e-01
--2.4872263400685814e+01
-1.5632834925779145e+01
-1.5598953730300141e-01
--3.0417588039736152e+01
--3.0404150756357904e+00
-2.5880917075154986e+00
--2.6594467363676621e+01
-3.9846774563918377e+00
-8.3283332724183767e-01
--2.1206690535416136e+01
--4.8308534694888010e+00
-4.0877722483848569e+00
--3.7422289200967953e+01
--1.3578056370566657e+01
-5.5351689132159247e+00
--3.7829513918348262e+01
--8.8707055690696173e+00
-4.7337754191195138e+00
--3.7933902854668084e+01
--1.0990219237138207e+01
-5.0463692149695092e+00
--3.7852286965162286e+01
-1.4605260273425678e+01
--6.0957900035126344e-01
--2.5393066573523253e+01
--8.7918233542359019e+00
-3.9838331356952112e+00
--3.2883682081693557e+01
-7.0232117544097488e+00
-5.3928827489363718e-01
--2.4474515672237192e+01
--6.4059460262218222e+00
-4.0700514604872007e+00
--3.7434331533559948e+01
-5.9442707845015610e+00
-5.2244543213050743e-01
--2.3341485700029992e+01
--1.1627173384471629e+01
-4.8342314982065941e+00
--3.7521063210196552e+01
-8.2240933979907704e-01
-9.6671213291513236e-01
--2.0481593142851466e+01
-2.9434267962737444e+00
-6.2732488345924509e-01
--2.0544775275097397e+01
-1.4231142935773804e+00
-7.8638125774012180e-01
--2.0359518179003487e+01
--8.2718170770607884e+00
-4.0006382091299928e+00
--3.7238199136351092e+01
--2.8178454889904163e+00
-1.8334339721392139e+00
--2.4690495212952356e+01
--3.2294703590968021e-01
-1.0796916692582079e+00
--2.1066117084301098e+01
--1.5648226160346088e+00
-1.3542941132850492e+00
--2.2500769125308910e+01
-7.1195167672477968e+00
-6.6719189842764356e-02
--2.3874866499897909e+01
--7.5129209813652214e+00
-3.6139799759157771e+00
--3.6863489402435711e+01
--7.7690589190376871e+00
-3.5914223827346179e+00
--3.6644790233854366e+01
-1.6817554373377803e+00
-5.3621513173216950e-01
--2.0309208586441219e+01
-5.6812295438398230e+00
-1.1713329436959166e-01
--2.2785826455383667e+01
--8.1781568845811723e+00
-3.6038907185281390e+00
--3.6546476006213915e+01
-4.1607738332380420e+00
-1.5418417175070995e-01
--2.1162246009558171e+01
-1.6994008343489547e+01
--1.2335520066837937e+00
--2.9683641165354565e+01
--8.4657570173293095e+00
-3.4629518495137317e+00
--3.6350968300946327e+01
-1.3635021355466668e+01
--4.9015890884773117e-01
--3.2183451962497330e+01
--8.8958932425044619e+00
-3.1974356373940278e+00
--3.3377684037778970e+01
--1.3639815266347860e-01
-6.8328762256438214e-01
--2.0827532923558639e+01
-1.3833797705450632e+01
--6.4301223785477846e-01
--3.2055317870002277e+01
--3.6509556837132857e+00
-1.5599256571792421e+00
--2.5517107654263125e+01
--1.8427279216162549e+00
-1.1061165800118733e+00
--2.3510992362015763e+01
--8.7419498321135478e+00
-3.1530022140005523e+00
--3.5750283945924664e+01
--3.6274611299157629e+00
-1.3859466186562186e+00
--2.4986549655773707e+01
-3.0888474692043211e+00
-1.8238701023169528e-02
--2.1870149405176235e+01
--5.2447949190647387e+00
-2.2935729326312368e+00
--3.5447706137014784e+01
--6.6283371414432422e+00
-2.4743431268876552e+00
--3.4882688033457491e+01
--6.0205148585727022e+00
-2.3873311013656124e+00
--3.5311632464430758e+01
-1.3600998255313257e+01
--1.1558278991092510e+00
--3.1689486058105448e+01
-6.7847770827262535e+00
--7.1311871423635353e-01
--2.2935235742728047e+01
-1.5417386034707853e+01
--2.2722538808668267e+00
--2.3534423655470498e+01
--8.3705061846746425e+00
-2.4985972564995680e+00
--3.4921825376829275e+01
-1.3938329039703433e+01
--1.4358083212171457e+00
--3.1079568428483519e+01
-1.4987454260714523e+01
--2.1579824024995280e+00
--2.6077565851514450e+01
--1.0095848529064003e+01
-2.6789392248793393e+00
--3.4828188345992132e+01
-1.5430157801828180e+01
--2.4285408391872401e+00
--2.3693451290931289e+01
-1.5502206011595204e+01
--2.5022928246142717e+00
--2.3563766411192024e+01
-1.6911217932003087e+01
--2.2353973607806310e+00
--3.0167003978022827e+01
--6.7315271050178831e+00
-1.9402270895092832e+00
--3.4509537604026434e+01
-1.4299636821244661e+01
--1.7437008357578674e+00
--3.1564117873716473e+01
-2.7962440975710732e+00
--4.8084663667948574e-01
--2.0518249408110044e+01
--6.8642128241231273e+00
-1.8407812763553817e+00
--3.4511729683266772e+01
-7.7851134259597138e-02
--3.2925807260475941e-02
--2.0770192929156838e+01
-2.0369923270047665e+00
--3.8947920164159155e-01
--2.0319250227980465e+01
-4.9847998730576641e+00
--8.3627762903925684e-01
--2.1547393768794752e+01
--7.2481668959898418e+00
-1.8788085200248512e+00
--3.5065889537464223e+01
--1.1209241751763528e+00
-1.1018334388510051e-01
--2.1640469531580269e+01
--7.1989438333310387e+00
-1.6676896676553352e+00
--3.4095539669154299e+01
--5.9973539687299100e+00
-1.4354085458419605e+00
--3.4051189133538180e+01
--8.3995045934521286e+00
-1.8141966249154216e+00
--3.3974845081003487e+01
-1.5545228391388443e+01
--2.8760104594445850e+00
--2.4054949051148821e+01
--8.1901428760211470e+00
-1.7437511807508834e+00
--3.4020925140659308e+01
--8.6453289652181535e+00
-1.8115279109058176e+00
--3.4070540961887311e+01
-1.5619779883965721e+01
--2.9171474536114150e+00
--2.3794672182478138e+01
--8.6738254490868520e+00
-1.7494458076577029e+00
--3.3884237819192194e+01
-6.5726886743984210e+00
--1.3212159629113944e+00
--2.2181422091929292e+01
-1.2640369414494286e+01
--2.0292518554533703e+00
--3.0146394408626435e+01
--6.1363107777360275e+00
-1.1743393440419776e+00
--3.3683745792222687e+01
--2.3953582198042644e+00
-6.8952930520046640e-02
--2.2449635768551321e+01
-4.4986949162845402e+00
--1.1669928846883295e+00
--2.1179796239942178e+01
--8.3362567862677874e+00
-1.3633713600094541e+00
--3.3469939450027283e+01
--2.5801459829129008e+00
-1.0165567176058125e-01
--2.3009692517287881e+01
-1.5553708741348434e+01
--3.2151989337041544e+00
--2.4708164097394732e+01
--1.9807775636822664e+00
--1.1173720868842099e-01
--2.2046999392811017e+01
-4.9857073960320557e+00
--1.3241407180010603e+00
--2.1541900882145189e+01
-1.2778422623991579e+00
--7.4694863588773630e-01
--2.0531149549359995e+01
--9.7640617096449862e+00
-1.4076059489855386e+00
--3.3084572897997141e+01
--9.7695442148918268e+00
-1.3945812099139967e+00
--3.3128732690127713e+01
--7.5851018360579445e+00
-9.5494976250471619e-01
--3.3151191774181477e+01
--7.6222627600926307e+00
-9.3221636862033541e-01
--3.3877845427922971e+01
--6.7364432882866208e+00
-7.4346887044603471e-01
--3.3022977680578606e+01
-5.2438321677531743e+00
--1.6251072764121179e+00
--2.1445035190222061e+01
--2.0659024700415429e+00
--3.8018049583286623e-01
--2.1853373122531710e+01
--3.3695711956767509e+00
--1.4572060691510028e-01
--2.3091746699073092e+01
--3.3695711956767509e+00
--1.4572060691510028e-01
--2.3091746699073092e+01
--2.2034639967344805e+00
--3.5027997316473825e-01
--2.2399115319079492e+01
-5.8687827126377234e+00
--1.8069257571333934e+00
--2.1433682262492663e+01
-5.0886437850515991e+00
--1.6779274641723441e+00
--2.1461158494347391e+01
--6.1806706368305662e+00
-3.8357103333763065e-01
--3.2446768634084115e+01
-1.5035123971599203e+01
--3.4402664668547294e+00
--3.0006782191957992e+01
-5.1294291277798374e+00
--1.8961918864954679e+00
--2.1186093319939715e+01
-4.5182742625117953e+00
--1.8227954122162227e+00
--2.1171650437455739e+01
-5.4069891397579282e+00
--2.0002685379905212e+00
--2.1101168635353893e+01
-5.4069891397579282e+00
--2.0002685379905212e+00
--2.1101168635353893e+01
--7.1787750774636967e+00
-1.5633925058625983e-01
--3.1969966990377461e+01
--3.3783896230239816e+00
--5.2186795322364465e-01
--2.2513162249028596e+01
-1.1472356428005780e+01
--3.1516925486289620e+00
--2.8537656706967805e+01
--2.5899835784437899e+00
--7.4070470694082557e-01
--2.2264836630151354e+01
--2.5899835784437899e+00
--7.4070470694082557e-01
--2.2264836630151354e+01
--1.4554295269283932e+00
--9.3937003705848454e-01
--2.1308527908421567e+01
-2.5646175616148308e+00
--1.6602164988796486e+00
--2.0309326681565768e+01
--1.2542970755847487e+00
--9.9923254224698077e-01
--2.1033149077556196e+01
-1.7592138909696349e+00
--1.5579730370092240e+00
--2.0363641445577528e+01
--8.5760714723959595e+00
-1.7449786987226396e-01
--3.1740172626870585e+01
--3.4115101433427326e+00
--7.3201456535523068e-01
--2.2706332570537285e+01
--8.6178443171263801e+00
-6.0046556842860740e-02
--3.1580403258821505e+01
--7.6573077592152243e+00
--1.1660405395449502e-01
--3.1601129387108060e+01
-5.3091712917202849e-01
--1.4471589167283769e+00
--2.0429070859033686e+01
-4.9179906982423800e+00
--2.2304086195748818e+00
--2.0809236620738268e+01
-1.8016966729854544e+00
--1.6869091854974310e+00
--2.0199038258935865e+01
-8.1392645496175609e-01
--1.5238191190188815e+00
--2.0363604486503643e+01
-4.9475329445651903e+00
--2.2837525141545538e+00
--2.0704261953044522e+01
--3.3784118603043396e+00
--8.9661359147066788e-01
--2.3046333314649381e+01
-2.6762235805953183e+00
--1.9144869320531710e+00
--2.0218431517938111e+01
--3.4252181085140512e+00
--8.8549116794194405e-01
--2.2862668579252475e+01
-5.1826998961843334e+00
--2.4079344787510584e+00
--2.0614982392099261e+01
-1.4259734798694343e+01
--4.1096265246258543e+00
--2.6439403803377157e+01
-3.8892267867452457e+00
--2.2598863830665867e+00
--2.0603163627417953e+01
--1.7911344432668415e+00
--1.2740549790181355e+00
--2.1545332475301517e+01
--8.8642399527852733e-01
--1.4284779706409478e+00
--2.0869918096407215e+01
--1.7007415774898096e+00
--1.3463449325115102e+00
--2.1499525195663988e+01
-3.8665198048756899e+00
--2.2800983238644750e+00
--2.1244974826658591e+01
--9.3713794345151591e+00
--3.1414404718039490e-01
--3.0725511072612996e+01
--8.3509059181782384e+00
--5.5874082864545915e-01
--3.0881543337841887e+01
--1.7436163530798348e+00
--1.4782050329838590e+00
--2.1389602602031690e+01
--7.7411024395917503e+00
--7.1622915363718631e-01
--3.0783985027368988e+01
-1.4420009557090648e+01
--4.5681115875335889e+00
--2.5880297248965675e+01
--1.0200062043254924e+01
--3.1460354231545179e-01
--3.0394413229310558e+01
--7.4198065974452065e+00
--8.6657190943456719e-01
--3.0680717676174819e+01
-1.2197641144182487e+01
--4.3042033079822577e+00
--2.7403601654398258e+01
--1.0100309930609530e+01
--3.7322029886829333e-01
--3.0456227057792130e+01
-3.6375855462711963e+00
--2.5258190889331762e+00
--2.0252069880510096e+01
--2.9406277767023794e+00
--1.4104680401464873e+00
--2.1529731288493178e+01
--1.0588375458338730e+01
--4.1780173826617756e-01
--2.9976792438375234e+01
--9.5877433584651719e+00
--7.1058262224790358e-01
--3.1578828474899698e+01
-3.3477106508969530e+00
--2.5965791751324465e+00
--2.0218821034187165e+01
--4.8396111052793547e+00
--1.4756641205395813e+00
--2.7095947670541765e+01
--1.2063271749018377e+01
--4.4212510058858034e-01
--3.2313046983511484e+01
--9.4085379745913151e+00
--8.2665325585753757e-01
--3.0109967557766922e+01
-1.3866019036544960e+01
--5.1064002316000598e+00
--2.7839313091064831e+01
--7.4507109066388075e+00
--1.4504834908238797e+00
--2.9713663502572278e+01
-3.0149538490760381e+00
--2.8433154555659801e+00
--1.9868551476170865e+01
--8.7704872980452091e+00
--1.2447152773164383e+00
--2.9625667731499274e+01
--9.1317004949306990e-01
--2.2052482329897130e+00
--2.0401499079284928e+01
--8.2965235365748899e+00
--1.3998552196007175e+00
--2.9583836967583672e+01
--9.8526248130918752e+00
--1.2768594353179259e+00
--3.0831885758795877e+01
--1.2446305629224449e+01
--8.8776717349411616e-01
--3.1501532118982659e+01
-9.0562192573005351e+00
--4.5159311977070189e+00
--2.6155463139553103e+01
--8.8718323474691516e+00
--1.5118472309278901e+00
--2.9055919114469564e+01
--1.3037284172330599e+00
--2.3774967993553777e+00
--2.0522939230450831e+01
--2.0184988630173886e-01
--2.5527889650803464e+00
--2.0060570849260404e+01
--8.6560881759952650e+00
--1.6444250472793582e+00
--2.9084494640841651e+01
--8.5926536947026855e-01
--2.4741475384355196e+00
--2.0200941137777317e+01
-1.3146352782891728e+00
--2.8429107229737869e+00
--1.9713059303033507e+01
-1.3146352782891728e+00
--2.8429107229737869e+00
--1.9713059303033507e+01
-1.8627121363976464e+00
--2.9434178490778979e+00
--1.9729359679119238e+01
--1.1061916391671920e+00
--2.4295912816513976e+00
--2.0172496953566529e+01
--3.3349535770205305e+00
--2.3184709288730772e+00
--2.3774047009730960e+01
--8.3167721826622942e-01
--2.5283476343917157e+00
--2.0218797745681265e+01
-2.4463824598002142e+00
--3.1561986128067345e+00
--1.9995482034400084e+01
--1.1913952872879671e+01
--1.3209341280699129e+00
--3.0862121464458518e+01
--9.0592490814965760e+00
--1.7956719092714515e+00
--2.8887051438963699e+01
--1.1776230314098907e+01
--1.5233972866482266e+00
--3.1117303872792196e+01
--1.1076479647051434e+01
--1.4067221967454862e+00
--2.8432086981604304e+01
--1.2663311890900728e+01
--1.1267217036468082e+00
--2.7457645299748997e+01
--9.0092751603542229e+00
--1.9277824855922627e+00
--2.8429133240978601e+01
--9.3292941903724138e+00
--1.8915557683122091e+00
--2.8376455185315365e+01
-1.8962349196066044e+00
--3.4250744637722437e+00
--2.0324715679572666e+01
--8.0639080484247661e+00
--2.3941341404530303e+00
--2.9264676770453551e+01
-1.0786732157981042e+01
--5.6577283455217824e+00
--2.5434334340153001e+01
--6.7789807715964594e+00
--2.7379580519055318e+00
--2.8513410896723713e+01
-5.3975502341884720e+00
--4.4725538036984887e+00
--2.2829943784514640e+01
-1.0671719730015237e+01
--5.7912368900195519e+00
--2.5221550885403026e+01
-1.1292543837636099e+01
--5.9371799859657139e+00
--2.5199313360659751e+01
-4.5027694809190235e+00
--4.4842166078693886e+00
--2.2350755220839297e+01
--2.7794493985995108e+00
--3.2863770918246598e+00
--2.3479983018858860e+01
-1.1802756969931117e+01
--6.0940786253074126e+00
--2.3851425000818828e+01
-1.6255612449309407e+00
--3.9514459736138043e+00
--2.0845710325685282e+01
--8.9532337064173380e+00
--2.7704673555857404e+00
--2.7154519958122084e+01
--9.8068983772320018e-01
--3.7085914511379112e+00
--2.1542963086169980e+01
--4.8652089092487500e+00
--3.5191170253922937e+00
--2.6371894510254268e+01
--1.0501362467665386e+01
--2.5097631495800701e+00
--2.6850896210263691e+01
--1.0501362467665386e+01
--2.5097631495800701e+00
--2.6850896210263691e+01
--9.1655897073962098e+00
--2.9195758998009045e+00
--2.6960621230466622e+01
-1.0447729547795992e+01
--6.4037440298740025e+00
--2.3946253941230797e+01
-2.1241446153013666e+00
--4.6592395021614230e+00
--2.1373328866930095e+01
--1.0463808953659044e+01
--2.8549810925177850e+00
--2.6317079894230297e+01
--6.8547620465634536e+00
--3.6600914001526546e+00
--2.6588108834638120e+01
--8.7740608260834883e+00
--3.5048430582818355e+00
--2.7755941205394699e+01
-6.7525293150956756e-01
--4.4109212766963299e+00
--2.1263107883596501e+01
-1.8026796889088279e+00
--4.7927597250528704e+00
--2.1476123893469712e+01
--7.9938263142392625e+00
--3.5844336154382450e+00
--2.6376311147086675e+01
-9.7470029475819668e+00
--6.8462483637536184e+00
--2.3777473609667691e+01
--1.1581850038223635e+01
--2.8130230572135639e+00
--2.5155410990115151e+01
-9.7481445488805267e+00
--6.9138938860221559e+00
--2.3789660430000630e+01
--8.5688284420252536e+00
--3.6685752435855776e+00
--2.5956893462191221e+01
-8.0582065949126740e+00
--6.6517045768163241e+00
--2.3726389202953552e+01
-1.2810887891252085e+00
--5.1926833956848641e+00
--2.1720721670406508e+01
-6.0977968927931068e+00
--6.4491945458095978e+00
--2.2929846113480068e+01
-7.0434933866833100e+00
--6.8494303159169432e+00
--2.3369380011715457e+01
-7.1028844148760673e+00
--6.8986171569044759e+00
--2.3496662105856320e+01
-6.3498133527474980e+00
--6.7500184727407744e+00
--2.2934255923991579e+01
-8.5267430668379376e+00
--7.3033021678832153e+00
--2.2971843531800285e+01
--2.1480983979425381e+00
--5.0854748291708374e+00
--2.2066459937414887e+01
-3.1467406412372934e-01
--5.6582425550947484e+00
--2.1468308028702921e+01
-6.9445842037910632e-01
--5.7804061629262016e+00
--2.1339874667842999e+01
-6.0355039986745220e+00
--7.1635158171283688e+00
--2.2706033334590277e+01
--1.6184259045288989e+00
--5.4462012088266283e+00
--2.1889565461298009e+01
-8.1350287142575972e+00
--7.7101864765279462e+00
--2.2390501249298111e+01
--2.1406468997234835e+00
--5.6876346357679148e+00
--2.2910723067312773e+01
--1.5762029852345794e+00
--5.8478655826192805e+00
--2.2590414928931729e+01
--7.4831245982839114e+00
--4.9581087366137000e+00
--2.4415264239276109e+01
--4.3559704301728503e+00
--5.5392649140003796e+00
--2.3861272305359865e+01
--8.2836209037097301e+00
--4.8050795255095027e+00
--2.4090746401592245e+01
--8.2836209037097301e+00
--4.8050795255095027e+00
--2.4090746401592245e+01
--7.4167172202382936e+00
--5.0612274528984118e+00
--2.4311651627726068e+01
--6.4546716996729652e+00
--5.3191305296409235e+00
--2.4107496677701398e+01
--9.5563569596193449e+00
--4.5861268441141050e+00
--2.3510363706870709e+01
--6.0858398454634628e+00
--5.4811079920347199e+00
--2.3954016657089984e+01
--1.0803204420185645e+01
--4.3163745005868162e+00
--2.2918935573664722e+01
--4.7087058361934035e+00
--5.9192843110444731e+00
--2.3613504973880666e+01
-7.3562961396171955e+00
--7.9541850176169415e+00
--2.1271674123108070e+01
--9.2605637182730458e+00
--4.9207766006450653e+00
--2.3166945406415664e+01
--1.0950123216930301e+00
--6.4728136861257335e+00
--2.2360537802723371e+01
-5.1945959562275545e+00
--7.7242614344319103e+00
--2.1940556749538572e+01
-8.3979069784752891e-01
--6.8259309681232381e+00
--2.1958211922705203e+01
--1.1177004244229025e+00
--6.5269666094834164e+00
--2.2320277160401343e+01
-4.9383519579933459e+00
--7.7267935520973623e+00
--2.1805331652680909e+01
--2.8797933037232999e-02
--6.7056261497782508e+00
--2.1779688815977238e+01
--8.4565751121114676e+00
--5.4470219529880382e+00
--2.2680240437513490e+01
--3.3786345936908795e+00
--6.5979712079563475e+00
--2.2791550424933959e+01
--7.5296364623948415e+00
--5.7315151048634698e+00
--2.2837278403986808e+01
--8.5499916112253587e+00
--5.4947975637215203e+00
--2.2651624761175508e+01
--7.3297217005757949e+00
--5.8266272855428634e+00
--2.2823030735346929e+01
--3.8898447146591439e+00
--6.5483235438724838e+00
--2.2747694988731759e+01
--4.4827770706211734e+00
--6.4433748584282347e+00
--2.2776775293674110e+01
--5.6180549781234141e+00
--6.5797645211280749e+00
--2.3898256318078793e+01
--4.4071794191125964e+00
--6.5181166414296854e+00
--2.2702243539068636e+01
--1.0896622403781497e+00
--7.1875647038095529e+00
--2.1656717554718682e+01
-4.4477635638467481e+00
--8.2280216751585762e+00
--2.0940601734865428e+01
--5.8409459512866935e+00
--6.4643182763165710e+00
--2.2464574204253502e+01
--3.9367088820057963e+00
--6.8206078367862588e+00
--2.2275176942664785e+01
--7.0200311604976200e+00
--6.2070317544011750e+00
--2.2286539121555897e+01
--5.3526808429145518e+00
--6.5998359421376041e+00
--2.2417884143319210e+01
-8.4050875082008574e+00
--9.2663169254504769e+00
--2.0922353280062961e+01
-1.6391854343594485e+00
--7.8684387666329805e+00
--2.1128740763776740e+01
-9.9335261374584469e+00
--9.7888469848785462e+00
--2.1098275675959812e+01
-8.2379834372129306e+00
--9.3023285698232083e+00
--2.0780921291277902e+01
--1.0017759439551172e+01
--5.5246025721625482e+00
--2.1195210108198808e+01
--3.8203955496070683e+00
--7.4359443065355890e+00
--2.2618060833628391e+01
--1.7598689355796302e+00
--7.5248975938187819e+00
--2.1605390638423845e+01
--9.6754734334803825e+00
--5.6666159205898801e+00
--2.1202480146755491e+01
--7.5232506757229123e+00
--6.3246012518488186e+00
--2.1771989752453024e+01
--7.5232506757229123e+00
--6.3246012518488186e+00
--2.1771989752453024e+01
-1.6325556275660391e+00
--8.1192317319588323e+00
--2.0995013058347755e+01
-6.0402003875899775e+00
--8.9763153742303139e+00
--2.0468748357814611e+01
--6.4151341761658731e-01
--7.7415742558199554e+00
--2.1394588010530029e+01
-8.1896185036339126e+00
--9.5300010925856036e+00
--2.0505691152324484e+01
--1.2330253548575694e+00
--7.6694774788324684e+00
--2.1467146224637531e+01
-1.4454215556562335e+00
--8.0812430042829995e+00
--2.0850247103344216e+01
--8.2446015776125705e+00
--6.1511023131475850e+00
--2.1536656570604240e+01
--5.5873777683651129e+00
--7.1766493499909867e+00
--2.2780077815689445e+01
--7.5120173186056212e+00
--6.4159280722256788e+00
--2.1708108638265376e+01
-5.1091927678313978e+00
--8.7311835209313262e+00
--2.0151826471060847e+01
--4.8085491165135508e-01
--7.8560012971981710e+00
--2.1256271421250457e+01
--3.7479897699401132e-01
--7.9040024231487500e+00
--2.1159666751620840e+01
--1.0598962024113872e+00
--7.7511446197895184e+00
--2.1139537939975341e+01
-7.6046696358504757e+00
--9.4956823804763246e+00
--2.0289535304563927e+01
-7.6046696358504757e+00
--9.4956823804763246e+00
--2.0289535304563927e+01
--8.3245071107779047e+00
--6.2232636594316411e+00
--2.1332638967586057e+01
--3.1632858500910868e-02
--7.9782785557504585e+00
--2.1037276275581153e+01
--7.6446914757254403e+00
--6.4542662297788196e+00
--2.1584025206298637e+01
--4.0320623585568631e+00
--7.2755641678109644e+00
--2.1532660372838524e+01
-1.8572881123291600e+00
--8.3297345709597739e+00
--2.0574083756451163e+01
--1.7032779533794071e+00
--7.7333616822697229e+00
--2.1204344590125974e+01
-4.8129964134544645e+00
--8.8935460228428216e+00
--2.0120146505002154e+01
-2.0252101669369740e+00
--8.4172816139925715e+00
--2.0603886359971469e+01
-1.5168108606329940e+00
--8.2835670657553528e+00
--2.0526929406390931e+01
--5.2282416372522569e+00
--7.1457251545970379e+00
--2.1323456116262626e+01
-3.3243832340637658e+00
--8.7058951227706078e+00
--2.0134668269508605e+01
-4.8509538833384775e+00
--9.0341572107338504e+00
--1.9905778089106644e+01
--5.3136953446277762e+00
--7.2043091658135205e+00
--2.1243744182615369e+01
-4.4890884090878229e+00
--9.0278240977316528e+00
--1.9902504255957190e+01
--7.6462038983987943e+00
--6.6481541400683755e+00
--2.1012640121419519e+01
--6.2666889283116278e+00
--7.0540355097637812e+00
--2.1125533743809488e+01
-3.2120184243711862e+00
--8.8349762326903054e+00
--1.9927029658864633e+01
--4.2348209385538294e+00
--7.5167796293035121e+00
--2.0936902431410108e+01
-4.0003687413150368e+00
--8.9916025813010911e+00
--1.9720669108870890e+01
-3.4881958498220174e+00
--8.9433436720380772e+00
--1.9689740984243191e+01
-6.4696073066770365e+00
--9.7005145444600327e+00
--1.9568726303729164e+01
-1.6065835934410682e+00
--8.6838630138885247e+00
--1.9940483812219810e+01
-5.4065680955093509e-01
--8.4970858138980301e+00
--2.0097294596645622e+01
-3.3493115933072519e+00
--9.0416820472558239e+00
--1.9627875705363266e+01
--5.6212111648127978e+00
--7.4347612765465403e+00
--2.0656499317990058e+01
-1.8362218511795887e+00
--8.8335299557186158e+00
--1.9708381898274595e+01
-1.8477423691895194e+00
--8.8650593820630768e+00
--1.9783811728823839e+01
--9.3759209395508094e+00
--6.3458322683037487e+00
--1.9971027252198791e+01
-3.1499383403387013e+00
--9.0867680503725747e+00
--1.9506198559438737e+01
-6.7421419590953082e+00
--9.9440550504595606e+00
--1.9438953933029872e+01
-3.9095248055039233e+00
--9.2542370042832260e+00
--1.9421482684333657e+01
--3.9416805577841840e+00
--7.8055110263665659e+00
--2.0491754829072956e+01
-7.1676752618656892e+00
--1.0094125682063696e+01
--1.9447362174500508e+01
--4.9002382772106658e+00
--7.6498525361631122e+00
--2.0569447817567021e+01
-2.9109488640485282e+00
--9.1336925074002782e+00
--1.9479635276963659e+01
--3.6777015988179587e+00
--7.9231906070857425e+00
--2.0281656768008769e+01
-2.4951614414175407e+00
--9.1016940172325569e+00
--1.9436632214912780e+01
--1.1044357422556885e+00
--8.4344557998907579e+00
--1.9894331472737967e+01
--4.4940178043204302e+00
--7.8345432005882678e+00
--2.0236897315030173e+01
--9.0389875027805522e-01
--8.5676017476971520e+00
--1.9686174126064842e+01
-2.5667731259526576e+00
--9.2851403472427734e+00
--1.9145645436572586e+01
-4.5692521702301747e-01
--8.9028138643078805e+00
--1.9394400888337607e+01
-2.6320125271284822e+00
--9.4401472748347945e+00
--1.8901134916769937e+01
--3.6233533669821445e+00
--8.2893662188154682e+00
--1.9512094822364229e+01
-2.5096007226526384e-01
--9.0575479027677961e+00
--1.9016013585115950e+01
-2.7360971236038073e-01
--9.1351282790457145e+00
--1.8881110122019138e+01
--3.7074182923141250e+00
--8.5659676860054894e+00
--1.9121734580027631e+01
--4.3391372379023840e+00
--8.5419565015725176e+00
--1.8970063733471065e+01
-2.7535955581231346e+00
-2.1162462306909589e+01
--5.2946756058449800e+01
-6.4835857526535556e-01
-1.9136373918243958e+01
--4.8569507387885103e+01
-1.1889473649601978e+01
-7.8119385209940306e+00
--2.4288388651138430e+01
-7.9441267317515587e+00
-2.0535501382375724e+01
--5.4226227483777201e+01
-1.1796642850599692e+01
-7.9451797538316393e+00
--2.4679487093378373e+01
-1.0643877649259519e+01
-2.2007331493291066e+01
--5.9847248778682932e+01
-1.5726394718182323e+01
-2.0527955730191778e+01
--5.8674082562542189e+01
-9.0462463872728147e+00
-1.9471411983486931e+01
--5.5021355725753615e+01
-7.0771164212982205e+00
-1.8814384059642617e+01
--5.3684106628571861e+01
-7.6141872896123411e-02
-1.8468569613163726e+01
--5.1264233833109564e+01
--5.0188891281278893e+00
-1.5998453904741213e+01
--4.3339606223427801e+01
--6.8831759032019137e+00
-1.6013187721284186e+01
--4.2507628353371992e+01
--6.9482626951620077e+00
-1.6182269704678653e+01
--4.2952181893527033e+01
--9.3805843545828012e+00
-1.5344904656871011e+01
--4.0115985476608024e+01
-1.4606292106617762e+00
-1.8798390641515731e+01
--5.3313762969609968e+01
-1.0651041500777806e+01
-2.0944465528042524e+01
--6.3359322039277181e+01
--9.6666934842151040e+00
-1.4942420133351369e+01
--4.0637954818561255e+01
-6.0194423766762943e+00
-1.7785798349486214e+01
--5.4512565289515528e+01
-4.4745589877198064e+00
-1.7287668537239583e+01
--5.4178103293758433e+01
-1.2663545761559694e+01
-9.2237698722047714e+00
--3.4808746930913181e+01
-1.5195142437602684e+01
-9.6177446264060649e+00
--3.7517532824833332e+01
-8.7515867324469117e+00
-1.6290856992988203e+01
--5.4767701466602389e+01
--8.5335808087011564e+00
-1.4377245535427793e+01
--4.3017491003219405e+01
-1.5048477776020997e+01
-9.4885170897746249e+00
--3.7643794437128136e+01
--1.0775917694010900e+01
-1.3748433470808918e+01
--4.1052320179411907e+01
--1.1494312806510790e+01
-1.3913685173475152e+01
--4.1379212651242206e+01
-6.0219513933997389e-02
-1.5164551773928130e+01
--5.0411323243562762e+01
--1.1269205725877928e+01
-1.3656106095855209e+01
--4.0741746098333728e+01
-1.2410316948767235e+01
-5.8874354761933922e+00
--2.6288005323285795e+01
--4.3622087587504667e-02
-1.5017557318524423e+01
--5.0695286180041364e+01
-1.3610206800880269e+01
-7.9026595407822091e+00
--3.4249824843207684e+01
--6.7763351099861913e+00
-1.3460430335342735e+01
--4.4265737916122539e+01
--1.0675200149667994e+01
-1.2400668175617922e+01
--3.9988369097938524e+01
-1.0253067122372292e-01
-1.4154761881526625e+01
--5.2054023932607436e+01
-1.5230590650254925e+00
-1.3467845255481880e+01
--5.0763696029968365e+01
--9.8363386105313939e+00
-1.2247086460816494e+01
--4.1573241769203797e+01
--5.7047966750352945e-02
-1.2910007449374046e+01
--4.9379754121518850e+01
--5.7047966750352945e-02
-1.2910007449374046e+01
--4.9379754121518850e+01
--5.0035947832216836e+00
-1.3760206584351113e+01
--4.9849374088094997e+01
--3.8230856071692201e+00
-1.4024927156254289e+01
--5.1631889840333884e+01
-2.6723379646518159e+00
-1.2032578277970307e+01
--4.8472037564784777e+01
--1.1100403896899182e+01
-1.2659340341025210e+01
--4.3616974617434934e+01
-1.0902073493201145e+00
-1.2335888755799576e+01
--4.8978850204959556e+01
-1.2873699797402621e+01
-9.7238615042501415e+00
--4.5752381025728582e+01
-8.7962738979594146e+00
-1.0311355256508589e+01
--4.6428535445783524e+01
-1.3712883309012707e+01
-4.1265911625640666e+00
--2.5459291225793610e+01
-1.0170376288867825e+01
-9.9917056003882916e+00
--4.6080431861455658e+01
-9.7132102870764925e+00
-9.5704550229283303e+00
--4.5069021383356372e+01
--1.3924638320740533e+01
-1.3420966145482900e+01
--4.7444988372627122e+01
--1.3924638320740533e+01
-1.3420966145482900e+01
--4.7444988372627122e+01
--3.6829288602958830e+00
-1.2354238252169608e+01
--4.9705163335166795e+01
--8.1882969790776450e+00
-1.1717493700090566e+01
--4.5058670290131609e+01
--2.1993913344077431e+00
-1.1972987444596399e+01
--4.9267304094508418e+01
--1.1444243693909916e+01
-1.0760130089552558e+01
--3.9547221529074939e+01
--1.8159284310906088e+00
-1.1293584651110285e+01
--4.7325019259497381e+01
-1.2094872005157873e+01
-8.5254268121529151e+00
--4.4061936193526492e+01
-1.2094872005157873e+01
-8.5254268121529151e+00
--4.4061936193526492e+01
-1.5311925111390751e+01
-4.2444407898595742e+00
--2.8824604955892575e+01
--1.1914583258592399e+01
-1.1259434633377719e+01
--4.1871195512793342e+01
--1.2155224781359644e+01
-1.1901514020633069e+01
--4.3990322120872619e+01
-1.4273675738196633e+01
-3.1577566083318569e+00
--2.3870437357568509e+01
--4.4231085438984277e+00
-1.2028862412888445e+01
--4.9903333368030196e+01
--9.8126165674212604e+00
-1.2429168225494388e+01
--4.8952245499871893e+01
-1.3916292726808900e+01
-3.4563794569770976e+00
--2.5653718368798927e+01
--5.7915863526719082e+00
-1.2119599113593814e+01
--5.0483900599008187e+01
--1.0630592302552566e+01
-1.2406327262543170e+01
--4.9093482553254475e+01
--3.7516305166348798e+00
-1.0779269658642969e+01
--4.6793396525259418e+01
-1.4962052598175720e+01
-3.3117083365401223e+00
--2.6175752898012810e+01
--1.1783115990419228e+01
-1.2356433821445506e+01
--4.8600768255991547e+01
--8.1920166889131867e+00
-1.2198026827653214e+01
--5.0285015458515382e+01
-1.2801151512401587e+01
-4.6018393456518947e+00
--3.0785156743325398e+01
--1.3429103126619061e+01
-1.2040225424785929e+01
--4.8070469653879940e+01
--1.0838879240435094e+01
-1.1940509133865330e+01
--4.9094035908276751e+01
--1.0649019952919769e+01
-1.1610963092341713e+01
--4.7292429592602304e+01
--1.2006119417508373e+01
-1.1511384008211650e+01
--4.6422351034384285e+01
-1.3467178387504919e+01
-6.5847378174204474e+00
--4.1238461623647446e+01
-1.4027477401038450e+01
-3.0581265813306797e+00
--2.5877516069101148e+01
-1.3732905901439421e+01
-2.9367158194687661e+00
--2.5391276612707166e+01
--9.6931652783484523e+00
-1.1414367859731328e+01
--4.8114328610344707e+01
--1.1051255318512718e+01
-1.1270356171204449e+01
--4.7371934979357867e+01
--1.2428186183664002e+01
-1.1024166814456732e+01
--4.5608030165895848e+01
-2.3504114608184086e+00
-8.6703514034626998e+00
--4.4909115142595311e+01
--6.6763146977383023e+00
-1.0785031363941533e+01
--4.8360894998051165e+01
--8.9968844036374591e+00
-1.0299357712284330e+01
--4.5531109310452756e+01
--1.0564501656616503e+01
-1.1370399366483314e+01
--4.9121116217075148e+01
--1.3875094544755187e+01
-1.0251678673992982e+01
--4.2656357560988596e+01
--1.5072963931984136e+00
-8.6346531936810038e+00
--4.3870698957241622e+01
--6.1374447673476888e+00
-9.4058553944938446e+00
--4.4516987125745494e+01
--1.0599393333815133e+01
-1.1156267555835434e+01
--4.9495927869551892e+01
-1.3650557423841613e+01
-5.4631336111312256e+00
--3.9730642608978719e+01
--1.2775623591002706e+01
-1.0927936450409343e+01
--4.6852665222532757e+01
--6.0871583487896928e+00
-9.2584073730420453e+00
--4.4382451847394059e+01
-1.3394985836002304e+01
-5.4580692316392350e+00
--3.9591458670732329e+01
--1.1573518509841195e+01
-1.1019294138601408e+01
--4.9115373250029165e+01
--1.1631298780142643e+01
-1.1017437737187819e+01
--4.9168027274865338e+01
--1.1286739238738651e+01
-1.0807725312306895e+01
--4.9167745673360351e+01
--6.6027184750236918e+00
-9.3524352529368890e+00
--4.5157765394493971e+01
--1.3022356424329228e+01
-1.0937366490722299e+01
--4.8760178741575324e+01
-3.9994360212706093e-01
-3.7360950742783863e+00
--2.3194428062227839e+01
--7.7019470373859358e+00
-9.6692088802467424e+00
--4.6312393519780514e+01
--1.2017837180554451e+01
-9.3463971452424932e+00
--4.2232502886657784e+01
--1.2568982761319511e+01
-1.0727425115374020e+01
--4.9290249399435773e+01
--7.1222443578216650e+00
-9.0046767844628821e+00
--4.5317889882404529e+01
-1.2355700483730359e+01
-4.6835435601873492e+00
--3.8591155799101607e+01
--3.3772186847607415e+00
-8.2745586259574040e+00
--4.4456133234026169e+01
--1.6934939891708524e+01
-1.0092732195268091e+01
--4.3493674211037685e+01
--1.6934939891708524e+01
-1.0092732195268091e+01
--4.3493674211037685e+01
--1.4189745873336424e+01
-8.4991128000271718e+00
--3.8679626261806860e+01
--7.8628542242359112e+00
-8.8650682005567614e+00
--4.5449189398725792e+01
--1.3395236111309780e+01
-1.0287973942290099e+01
--4.8573566013807650e+01
--5.5737688050334082e+00
-7.8815608959080965e+00
--4.2906259032801493e+01
-1.2231065349965482e+01
-4.3278701658238425e+00
--3.8162523657028942e+01
--1.3096599240461207e-01
-3.2473008861804828e+00
--2.2639356615484473e+01
-1.4134198448527641e+01
-1.3800545628115750e+00
--2.4338923334097501e+01
--1.4020958870504955e+01
-8.6701088616163133e+00
--4.0681235925346606e+01
-1.2893211744866310e+01
-2.7492764930321956e+00
--3.0678959608088345e+01
-1.5062071254121319e+01
-3.8839099567865580e+00
--3.9443856750762485e+01
-1.4032336421905116e+01
-1.2819973146134129e+00
--2.4723596277213275e+01
--8.9065469526246623e+00
-8.4319151954300722e+00
--4.4769940298248301e+01
--1.2336579896253406e+01
-8.9207997931503797e+00
--4.5709516797548908e+01
-1.2032228214170173e+01
-3.5669879561973659e+00
--3.6935779084081062e+01
--1.5989041286760758e+01
-9.0345300745038255e+00
--4.4845154955975069e+01
-4.5438632245911297e+00
-2.5847373286313080e+00
--2.4997656588606009e+01
-4.3446462677413100e+00
-2.0076931263381663e+00
--2.2026180771718522e+01
-4.8332443560644145e-02
-2.4795309840710646e+00
--2.1573378042915916e+01
--1.0881949092864229e+01
-7.2799312714768751e+00
--4.1246005978355207e+01
--1.3882687006282127e+01
-8.7316177477143242e+00
--4.6991642732409574e+01
--1.3882687006282127e+01
-8.7316177477143242e+00
--4.6991642732409574e+01
-5.8785228285108939e+00
-2.3491022484847766e+00
--2.6453487287121504e+01
-4.5262988582886550e+00
-1.8064322359413396e+00
--2.2148559374344529e+01
--1.3724704944520925e+01
-8.3743449405711399e+00
--4.6688720393049508e+01
--6.9637100374906220e+00
-6.0843104033306616e+00
--4.0136719749224412e+01
-1.4706177684894788e+01
-9.2916345224544006e-02
--2.3137879034228536e+01
-8.7177765423125730e-01
-1.9917661571491989e+00
--2.0998489958580564e+01
-2.7031655197266486e+00
-2.0614434038919502e+00
--2.3169992427908610e+01
-1.5723258888875858e+01
-9.7450241405582649e-01
--2.9746683200537031e+01
-2.0707633926350897e+00
-1.6933468377091090e+00
--2.0610929925623292e+01
--6.2332692529647993e+00
-5.7460698344004397e+00
--3.9873264379911426e+01
-6.2000823972156880e+00
-1.9337849678911680e+00
--2.6793313162323109e+01
-1.5665497496270747e+01
-2.2283174590353521e+00
--4.0415615793212453e+01
-1.2075286505374237e+01
-2.0602256729429880e+00
--3.5161092962553390e+01
-2.1836458274097557e+00
-1.4597976642165480e+00
--2.0568323573456226e+01
-1.2173078088187481e+01
-1.7543871643205216e+00
--3.4788549955444950e+01
-1.1340870357216599e+00
-1.5309331784319742e+00
--2.0623552065534032e+01
-1.4206610657819285e+01
-2.5371635537441595e-02
--2.6322215993916249e+01
-1.6859292419043641e+01
-3.0954678865803466e-02
--2.8796719686007119e+01
--4.9412412324474246e+00
-4.7014893791160413e+00
--3.8593416717042409e+01
-1.4537313522613140e+01
-8.2056870170799934e-01
--3.2159918456481606e+01
--1.9032122339238828e+01
-8.2399228374747899e+00
--4.8960310434998718e+01
-1.4611883551769454e+01
-7.5232804967130740e-01
--3.2399389845052447e+01
-1.3594709051364021e+01
-6.4900979211518994e-01
--3.0984154771676334e+01
-1.3594709051364021e+01
-6.4900979211518994e-01
--3.0984154771676334e+01
--8.4056311431308544e+00
-5.0115890534127825e+00
--3.8566167159721999e+01
--1.1847306248862635e+00
-1.8809562732699989e+00
--2.2678258377954052e+01
-1.2406953818222130e+01
-1.0778029713111983e+00
--3.3964263006045648e+01
-1.4750923428024887e+01
--2.2739381423612087e-01
--2.6834328477947128e+01
-1.4058753211071899e+01
-6.2201153325381964e-01
--3.3524530505084599e+01
-1.4372399015486396e+01
--2.3250470861611069e-01
--2.8515383181012190e+01
-1.4960600442427531e+01
--1.0422324225646249e+00
--2.3842274604931170e+01
--6.5776945196180687e+00
-3.8985610466153013e+00
--3.7771761882121012e+01
--6.5386613444575019e+00
-3.8602685935124876e+00
--3.7285354813481469e+01
-3.9244497651378900e+00
-4.4482106832822083e-01
--2.0988636075550190e+01
-1.4274749089620887e+01
--4.0304939316634775e-01
--3.1813141721242118e+01
--6.7937309991570602e+00
-3.1865098952995128e+00
--3.6342676770777068e+01
-1.4537932048950024e+01
--1.1159845732523688e+00
--2.9127982097569689e+01
-1.0976274497166054e+00
-4.6572377219159616e-01
--2.1114112379297161e+01
-1.4603274793536203e+01
--9.5832684681941183e-01
--3.2259715867585570e+01
-6.8714599182702685e+00
--3.9022687134904188e-01
--2.3324576125209319e+01
-1.7591506256489242e-01
-4.6081910933850068e-01
--2.0590539571281095e+01
--1.0146635587101089e+01
-3.2758476825195486e+00
--3.5547378785141660e+01
--5.2136515777591175e+00
-2.3900139794335344e+00
--3.5419405037658876e+01
--2.0724653555147734e+00
-9.6853069954472182e-01
--2.3237824914478900e+01
--1.9288866640457500e+00
-8.9776379699045339e-01
--2.2961904958346995e+01
--8.0916894208656931e+00
-2.6927314437319754e+00
--3.5350451543353294e+01
--7.1734872384419601e+00
-2.5130621513113254e+00
--3.6007001626963600e+01
--8.3745810740858904e+00
-2.6775412518144006e+00
--3.5319454186905290e+01
--1.3979353611011364e+01
-3.8913422265085842e+00
--4.0380621106664073e+01
-1.4025906865680321e+01
--1.4814951275126520e+00
--3.1869721921688356e+01
-1.3059628466208745e+01
--1.5089470453727092e+00
--3.0820956409175736e+01
-1.3059628466208745e+01
--1.5089470453727092e+00
--3.0820956409175736e+01
--1.9616136176102712e+00
-5.0799091970813359e-01
--2.2815524437135430e+01
-9.9130881323308129e-01
--6.1974443468649762e-02
--2.1179040579968767e+01
-2.1564471668824221e+00
--3.3603230581059040e-01
--2.1506309570058104e+01
--1.9765055456976952e+00
-3.5364706451284350e-01
--2.2566354717724639e+01
--1.3615434611526297e+01
-2.8698149232040437e+00
--3.3355671334750888e+01
--1.3615434611526297e+01
-2.8698149232040437e+00
--3.3355671334750888e+01
--1.4998653081919926e+00
-8.6762752574623698e-03
--2.2089132885016866e+01
-1.3931295002872352e+01
--2.3519720405777362e+00
--3.0077741183152650e+01
--9.6729696357782249e+00
-1.5585767936840875e+00
--3.3474348058440938e+01
--9.6393058949612591e+00
-1.5547042600081236e+00
--3.3327744608259401e+01
--8.6932675687998628e+00
-1.3030946473055940e+00
--3.3186949405487617e+01
--6.7910547733348041e+00
-9.5412425383995803e-01
--3.3508124869344975e+01
--1.8502617157804588e-01
--5.4153627500029766e-01
--2.0914131072100226e+01
-1.5188314953776375e+01
--3.2506276495696951e+00
--2.7165184988380076e+01
-1.5616817572871485e+01
--3.3986013642469346e+00
--2.4485352830421419e+01
--7.7818684174658772e+00
-9.9266960435281870e-01
--3.3974616322201705e+01
--9.4342233049556974e+00
-1.2851046962795070e+00
--3.3119268472798616e+01
--8.3504637939772532e+00
-1.0768257100172383e+00
--3.2950047995046816e+01
--2.5728729913965274e+00
--1.7949727821496059e-01
--2.2819143152307959e+01
-5.3095046938049180e+00
--1.5687371131401699e+00
--2.1637268116403988e+01
--8.2288438895389895e+00
-1.0204568589558909e+00
--3.3787895533334833e+01
--1.1199790822795928e+00
--5.4670836132378664e-01
--2.1513403453731726e+01
--3.0013853180892864e+00
--2.7209370802088478e-01
--2.2903265505424191e+01
--1.6229715438276480e+00
--6.4869872832509812e-01
--2.1383465665342527e+01
--2.1881679283552606e+00
--5.5713508197279138e-01
--2.2095974834797705e+01
--6.3279915356757233e+00
-2.4055539697325701e-01
--3.2854108740889160e+01
--6.2125664807542469e+00
-9.1570966526128353e-02
--3.2741385049776866e+01
--2.1465617539312070e+00
--6.7616388540943451e-01
--2.2044788748076190e+01
-2.2614688172775360e-01
--1.0826648510468622e+00
--2.1547341577744405e+01
-1.3106267688250492e+01
--3.3966794270472915e+00
--2.8638438685247969e+01
-1.3603365626837837e+01
--3.4893406827699511e+00
--2.8255258127070935e+01
--6.6278302221626086e+00
--7.1807994038546610e-02
--3.1980811842107112e+01
--1.1463577310284499e+01
-7.4034629423835852e-01
--3.1783398828366266e+01
--7.1381451388897643e+00
--7.3960806475324256e-02
--3.2614546106469952e+01
--6.3855398865251747e+00
--2.4567693741632318e-01
--3.1682133600423871e+01
--1.1965550624350607e+01
-6.6215575039034236e-01
--3.3806692855978930e+01
-1.8635210931638749e-01
--1.3457913282583727e+00
--2.0531695354640387e+01
--2.5473674446671106e+00
--8.8524693962311307e-01
--2.2381772050479285e+01
--1.1238053794641393e+01
-5.1585151311238153e-01
--3.1696047393852883e+01
--2.5959263255500273e+00
--9.4560312400535440e-01
--2.2080161699849342e+01
--7.3724455506328015e+00
--3.1266892582945022e-01
--3.2254844131367285e+01
--2.7654152963908469e+00
--9.3265065075495057e-01
--2.2575010411728222e+01
-5.7329927798498048e-01
--1.5305020459938201e+00
--2.0970938787998985e+01
--7.3255373232666221e+00
--5.3247630703231175e-01
--3.1967289763621466e+01
--7.2207229619055333e+00
--6.3515620639182435e-01
--3.1750210070883792e+01
--9.7225233976936671e+00
--2.5918110670855421e-01
--3.0637841074559343e+01
--9.7225233976936671e+00
--2.5918110670855421e-01
--3.0637841074559343e+01
--9.6433907721598011e+00
--3.0469177502948613e-01
--3.0575366324556018e+01
--2.6594169041492393e+00
--1.3087691711821263e+00
--2.1699972870966636e+01
-2.6938917794185282e+00
--2.1739201778281028e+00
--2.0567757630369442e+01
--8.0244063210848608e+00
--7.3704469575263942e-01
--3.1742116014200612e+01
--9.1622158201928681e+00
--5.9594896047460166e-01
--3.1745320025592427e+01
--1.6180293734017674e+00
--1.5649569909152361e+00
--2.2071221104009634e+01
--7.7037617257680404e+00
--8.6243765200932554e-01
--3.1447987605145407e+01
--1.1272286412329972e+01
--3.5151134234378439e-01
--3.2180602660830630e+01
--1.0768878433954312e+01
--4.9575445087115649e-01
--3.1910943297770874e+01
--7.6416706027076549e+00
--9.9420679179588378e-01
--3.1294925450717184e+01
-6.7202391797536727e+00
--3.5526523501792426e+00
--2.4223440189014966e+01
--1.1558846497547933e+01
--7.3897334396655123e-01
--2.9430165963174403e+01
-1.2140980816426589e+01
--4.9753148082537129e+00
--2.6538062786079220e+01
-1.3682686424541538e+01
--5.1423632587183379e+00
--2.4999400060322419e+01
--1.1214696756401366e+01
--1.0545449180677671e+00
--3.2459176091191097e+01
--5.5765336543767367e-03
--2.4525682832021034e+00
--2.1016005632384989e+01
--9.3082597811891592e+00
--1.3878854117768931e+00
--2.9301635262985915e+01
-9.9790726411394228e+00
--4.7765476394922644e+00
--2.6306941844383047e+01
--9.0029395099804219e+00
--1.4679095101693171e+00
--2.9130035122156951e+01
--9.1938445904076147e+00
--1.4998250993668367e+00
--2.8989406423184974e+01
--9.3623755476346879e+00
--1.6316700924155831e+00
--3.0901825657594937e+01
--1.9811443908565165e+00
--2.3479833539336306e+00
--2.1384342716101813e+01
--1.2157578937796834e+00
--2.5284089438548909e+00
--2.0071352439200240e+01
--7.2271163767221491e+00
--2.3096210963289772e+00
--2.9590287109248756e+01
-1.1210540682733059e+01
--5.5895245916913812e+00
--2.5469308662678433e+01
-1.1210540682733059e+01
--5.5895245916913812e+00
--2.5469308662678433e+01
-9.3707523767834981e+00
--5.3200376230050654e+00
--2.5501678604701972e+01
--6.6924473720463480e+00
--2.7668729650945822e+00
--2.7994626992633204e+01
--1.1143018894264117e+01
--2.1776800246820409e+00
--2.9777357178501461e+01
--2.8689620404967484e+00
--3.0083157862794452e+00
--2.3498267696513270e+01
-5.4401863059591546e+00
--4.5866513433958227e+00
--2.2876493648730172e+01
--1.0836203013660349e+01
--2.2385336899262911e+00
--2.9701410182699547e+01
-1.6760484657802193e+00
--3.7201756361254277e+00
--2.0607267577469980e+01
-1.6310646125773400e+00
--3.6634783426565916e+00
--2.0465562352772256e+01
--1.0990027833657164e+01
--2.3148968541014656e+00
--2.9609497002780092e+01
--1.0792673846699838e+01
--2.3151866344618801e+00
--2.9230536696939883e+01
--1.0095509489005066e+01
--2.2730642526731772e+00
--2.7760488369558100e+01
-1.0951340812824339e+01
--6.0869301741718260e+00
--2.4982513531076975e+01
-8.8001734927544213e+00
--5.7944268637188161e+00
--2.4904593570554280e+01
--7.8726840443398824e+00
--3.0162584285213230e+00
--2.8520350180987254e+01
--3.0047768018585805e+00
--3.4894197504221545e+00
--2.3391173392826950e+01
--9.0689475525389707e+00
--2.8491797854852701e+00
--2.7110204705613892e+01
--1.0384379826336698e+01
--2.8422424737545304e+00
--2.6336120045213878e+01
--1.1063752827146679e+01
--3.0370025239545066e+00
--2.8329514783463235e+01
--1.0127894165664292e+01
--2.9026763145767558e+00
--2.6201449280980334e+01
-1.4598778393564094e-02
--4.5512903995931904e+00
--2.2894556454348653e+01
-7.7399452778445497e+00
--6.4784754789625261e+00
--2.3900368746336905e+01
--9.0758804086965643e+00
--3.5370670533370161e+00
--2.5927940463295091e+01
--8.1883960776095641e+00
--3.9026029818245673e+00
--2.5645554264740220e+01
--8.5967524276798049e+00
--3.9195016799750726e+00
--2.5439033880482604e+01
-6.4615389441196500e+00
--6.7091549638515975e+00
--2.3002578192240488e+01
-6.5083879364260939e+00
--6.7494923993865372e+00
--2.3106770236709853e+01
--8.3115887594457138e+00
--4.1594985384618113e+00
--2.5185645937601148e+01
-6.1582666372959034e+00
--6.8671392368646060e+00
--2.2821490581595501e+01
--4.1928449293278724e+00
--5.2529917128542785e+00
--2.3997077509191552e+01
--3.5183369918017831e+00
--5.4097113476530732e+00
--2.3488374871301705e+01
--6.8886809708947361e+00
--5.1850688231152704e+00
--2.5634453104244205e+01
--6.4814928951548456e+00
--5.2535893662539648e+00
--2.5226101961342540e+01
--6.1389758867014663e+00
--5.2215154540858375e+00
--2.4270569941423457e+01
--9.8923662850811276e+00
--4.4620118353169316e+00
--2.3488880211707038e+01
--7.3961228860436341e+00
--5.3641591871165675e+00
--2.5410583996941522e+01
--3.0183783726676283e-01
--6.5746678895885644e+00
--2.2104374074028414e+01
--6.8069922454766205e+00
--5.5647205975063061e+00
--2.3526947396106564e+01
--6.7208528017551314e+00
--5.6061255716099225e+00
--2.3560923169480624e+01
--4.5629095142777114e+00
--6.2062535233066578e+00
--2.3204698244318738e+01
--7.3878419371416451e+00
--5.6589744783154350e+00
--2.3013133406953976e+01
--9.1504953513432756e+00
--5.4098863260289081e+00
--2.2271837036915993e+01
--5.7451469612308994e+00
--6.3077507987378301e+00
--2.2707751868759242e+01
-6.4664345992296592e+00
--8.5322768505562951e+00
--2.1024486859355214e+01
--6.1284794078622591e+00
--6.2953159323290704e+00
--2.2567617265506765e+01
--7.8363702861670692e+00
--5.9395060173818282e+00
--2.2116872445621162e+01
-3.4161751654382639e+00
--8.1071490610476946e+00
--2.1054539642234591e+01
-8.2985106368398274e+00
--9.2538721252905560e+00
--2.0792020113430151e+01
--5.9258619223600180e+00
--6.5610480647857354e+00
--2.2087086402227296e+01
--7.9693724136971529e+00
--6.0994806270261037e+00
--2.2042655482387261e+01
--6.7711573067233513e+00
--6.4050412235273031e+00
--2.1966747887545303e+01
-5.0475691762224573e+00
--8.6592728025363623e+00
--2.0400834928184718e+01
--3.7160244965061962e+00
--7.4429639557407201e+00
--2.2600285310546116e+01
-2.6757247581246508e+00
--8.2285084909843142e+00
--2.0694425910744854e+01
--5.8107216543638796e+00
--6.7592056509029126e+00
--2.1710015070112338e+01
--5.8107216543638796e+00
--6.7592056509029126e+00
--2.1710015070112338e+01
--1.4085336329385763e+00
--7.6420861793050063e+00
--2.1364778026837634e+01
--3.9688825792218831e+00
--7.1403398101165232e+00
--2.1468847458274535e+01
--4.0835388090489533e-01
--7.8611166220738111e+00
--2.1214569299640669e+01
--8.4625962563095258e-01
--7.7785544327813190e+00
--2.1218854401849384e+01
-1.7848516137233641e+00
--8.2605466168527553e+00
--2.0613756446374573e+01
-2.1242507168196894e+00
--8.3610612418828403e+00
--2.0581942606106825e+01
--9.4916251506751359e-01
--7.8535751171005757e+00
--2.1107190125223774e+01
-4.7375518001803307e+00
--8.8096778077779323e+00
--2.0105235368605324e+01
-3.1998458620532584e+00
--8.5875740672209471e+00
--2.0206790464658177e+01
--7.4845396165777931e+00
--6.5423317123913156e+00
--2.1250679455235137e+01
-3.3339557297500546e+00
--8.6183494585203277e+00
--2.0196387393047448e+01
-3.7555130137960075e+00
--8.7461152565811666e+00
--2.0217337937400604e+01
-4.9127654423011844e+00
--9.2253564285522458e+00
--2.0199267469823674e+01
-1.7800606820390714e+00
--8.4966505410680533e+00
--2.0223534223130866e+01
-1.7800606820390714e+00
--8.4966505410680533e+00
--2.0223534223130866e+01
--4.9665865026768863e+00
--7.3667891678877160e+00
--2.1097760915320958e+01
-4.9901410992566220e+00
--9.1148607108472230e+00
--1.9554958448994370e+01
-5.2357389385111341e+00
--9.1554671541798207e+00
--1.9513368205918187e+01
-6.0601232703287149e+00
--9.6425985306974553e+00
--1.9536526310894128e+01
-3.4455176741160467e+00
--9.1555515670416785e+00
--1.9511054312534498e+01
--1.1478872353996872e+00
--8.3923572140506337e+00
--1.9964065283778073e+01
--1.1478872353996872e+00
--8.3923572140506337e+00
--1.9964065283778073e+01
-1.9731541338345480e+00
--9.0069673991504544e+00
--1.9444308151038179e+01
--4.2751992258077881e-01
--8.5759757683672628e+00
--1.9803978782720161e+01
--1.0159412125980816e+00
--8.5160368425154225e+00
--1.9729868598904961e+01
-1.8315485722007732e+00
--9.4091961027872948e+00
--1.9778452296818607e+01
--4.2026680289117202e+00
--8.2692545107820159e+00
--1.9554429739527805e+01
--4.0896649187969185e+00
--8.3637418718445158e+00
--1.9405471814408791e+01
--2.9133155025300033e+00
--8.6011326048423840e+00
--1.9233870825347310e+01
--3.7013783956155959e+00
--8.4781616697327493e+00
--1.9200433469890942e+01
--3.6282055425999711e+00
--8.6437474564791135e+00
--1.9000166137013142e+01
-2.8904416861422759e+00
-2.0837794033129025e+01
--5.2773615762936217e+01
-2.1006838699023969e+01
-2.4765309446617184e+01
--6.7018576476622030e+01
-9.7607351290014961e+00
-2.0217824748031166e+01
--5.6297654648444642e+01
-9.7797259834412209e+00
-1.8774052275213123e+01
--5.6125989371704648e+01
-1.6097496208433659e+00
-1.8729594914931663e+01
--5.3732157762630273e+01
-1.3124547062788682e+01
-9.5654232328607840e+00
--3.3184727922408904e+01
-1.3293978084965397e+01
-9.6945071748120135e+00
--3.3548820994131304e+01
--3.3728975625968589e+00
-1.6070667483454848e+01
--4.9892128916302617e+01
-1.2944315056625562e+00
-1.5949390243728443e+01
--5.2371269606240226e+01
--1.0159262947664743e+01
-1.2855686937716895e+01
--3.9509181756837940e+01
--1.0026336078780762e+01
-1.2799093328680810e+01
--3.9943074348667096e+01
-1.3570908446279510e+01
-4.9251174487899805e+00
--2.4374388323950598e+01
-1.7194812660892937e+00
-1.4703322152215407e+01
--5.2343737615075966e+01
--9.5194925141811193e-01
-1.4751783333640187e+01
--5.1542815431432118e+01
-1.4897932604704851e+01
-8.4419466948895536e+00
--3.7854532096478067e+01
--1.2796421663022118e+01
-1.4810015453332108e+01
--4.7150948942080490e+01
-2.2650162632775857e+00
-1.3697460559477912e+01
--5.0900747788290104e+01
--9.5554293757935547e+00
-1.3273392552764419e+01
--4.4749579487859471e+01
--3.0506346909237608e-01
-1.4524174631449176e+01
--5.3420157230866536e+01
--1.0642077190506210e+01
-1.1975604189010600e+01
--4.0303227340303252e+01
-1.1310303456249994e+01
-5.8946983988195525e+00
--2.9307311054140314e+01
--9.7530144211529297e+00
-1.2101253656900189e+01
--4.1649282002351015e+01
--1.3630537469429418e+01
-1.2181321217850046e+01
--4.0011139885251744e+01
-9.7125544561180846e-02
-1.2718655953352759e+01
--4.9372838132906580e+01
-1.7428955595899838e+00
-1.2504802508909128e+01
--4.8928107750814213e+01
--1.7786343819114659e+01
-1.3357385087886522e+01
--4.2195565209731420e+01
-1.3420146966906142e+01
-8.3771509590818312e+00
--4.0832869318569529e+01
--9.8971513693375286e+00
-1.1630259026463888e+01
--4.1826784259875204e+01
-3.0503662064853953e-02
-1.2211283699943255e+01
--4.8907099019455842e+01
--1.1192805535900661e+01
-1.1215886027376463e+01
--4.0370774083843820e+01
-5.6699714440635640e+00
-1.0071914579138850e+01
--4.5816738856124324e+01
-5.3918556518590028e+00
-9.9804220485108246e+00
--4.4534915802771025e+01
--6.1316444343742571e+00
-1.2781663622246080e+01
--5.0077995661439687e+01
--1.2027439321138997e+01
-1.0669619199815383e+01
--3.9389629908611532e+01
-1.5923070900423220e+01
-3.8658975295073086e+00
--2.7968417538316132e+01
--7.3486847922743666e+00
-1.1435596131016691e+01
--4.5775125946562753e+01
--2.3585470352948086e+00
-1.1101344253581075e+01
--4.7549067312121622e+01
--1.0669938829170935e+01
-1.1919822198776208e+01
--4.6684678054796848e+01
--1.2111642189222325e+01
-1.1304667333733821e+01
--4.5028772051672107e+01
-1.2370879153247488e+01
-4.7288887099981638e+00
--3.1650815266130326e+01
--2.5657016300466520e+00
-9.7417989023986813e+00
--4.4992365942333997e+01
--1.0353333811514014e+01
-1.1720227520120888e+01
--4.9060220071765954e+01
-1.1253342319116189e+01
-7.1048054127335405e+00
--4.2307651869108085e+01
-9.8003904801163664e+00
-7.1742497617187233e+00
--4.2234450297935375e+01
--1.0492662867494138e+01
-1.1703499986340949e+01
--4.9289254186522719e+01
-1.1819614197517900e+01
-6.7460267092171620e+00
--4.1938718520365747e+01
-1.4147800169202936e+01
-5.9532087247883094e+00
--3.9939624324359535e+01
--1.1876042190803439e+01
-1.1579715724871301e+01
--4.8890618098337669e+01
-1.4230401636364448e+01
-5.7831193097760583e+00
--3.9784575553603872e+01
--1.3578902644150904e+01
-9.6050114880215691e+00
--3.9246346693188791e+01
--6.4783982381685101e+00
-9.7173426219199968e+00
--4.5185849598548799e+01
--6.4743922825265194e+00
-9.6921739658309178e+00
--4.5005659507454361e+01
--6.1205493250001712e+00
-9.7205854145154866e+00
--4.5430860117758833e+01
-1.4900538914351082e+00
-8.2375885625401661e+00
--4.3373609385067844e+01
-1.0176341857537050e+01
-6.1632580289569869e+00
--4.0524481217405345e+01
-1.0182201973465808e+01
-6.1616706165408210e+00
--4.0539904837972493e+01
--1.1270113379717520e+01
-1.0898391209457136e+01
--4.7882676971336004e+01
--1.3098551649498667e+01
-1.0831921943941211e+01
--4.6867237331908633e+01
--1.3310654017066639e+01
-1.0702798509991696e+01
--4.6693758931005945e+01
--1.2377542168117980e+01
-1.0529805001394264e+01
--4.7404974590818235e+01
--1.2391042704107393e+01
-1.0554712529595168e+01
--4.7459293256330362e+01
--1.2575238251768347e+01
-1.0624062847746778e+01
--4.9521646556545100e+01
--1.2548332689378590e+01
-1.0311821870659889e+01
--4.7779389364830848e+01
--1.4313062366288522e+01
-8.0757386697568023e+00
--3.7427544294583129e+01
--1.4804540704426602e+01
-1.0083170797061014e+01
--4.9594670387924360e+01
--1.3862871500947243e+01
-8.2716754531162184e+00
--4.0671463634787820e+01
-1.2129821063843170e+01
-3.5222814329552072e+00
--3.6819846531568345e+01
--5.4534623580054413e+00
-6.8201107186782668e+00
--4.1736573361307052e+01
--1.4076882708603332e+01
-8.7759716233664555e+00
--4.6211445631379732e+01
--3.4572947189490923e+00
-6.0790368699291166e+00
--4.0914521999311219e+01
--5.9007420140681859e+00
-6.0712540219058040e+00
--4.0349183878405427e+01
-1.3551565001052376e+01
-1.3115354544751623e+00
--2.9968224773824616e+01
--9.0572151208699943e+00
-6.6396360740870968e+00
--4.2456579220770372e+01
--9.0572151208699943e+00
-6.6396360740870968e+00
--4.2456579220770372e+01
-7.0541588695350255e+00
-1.7300567752867098e+00
--2.5899347935524681e+01
--3.7872635483347512e+00
-5.4257271442075190e+00
--3.9918537430559510e+01
--9.6155672261777383e+00
-6.3279871702047554e+00
--4.0123104892613782e+01
--9.6282747614432331e+00
-6.1866711574451010e+00
--3.9738574791613829e+01
--1.4050810810577431e+01
-7.6154472891843383e+00
--4.5705794270204969e+01
-1.5168220978703880e+01
-2.4303938313236069e+00
--4.1165347358697659e+01
-3.7427141963320891e+00
-1.3333571183124309e+00
--2.1198209081769232e+01
--6.3320982803558614e+00
-5.1630083826666970e+00
--3.9080736020285208e+01
--6.1943016757696778e+00
-5.0367908013314135e+00
--3.9231744609281783e+01
--1.5781910222835045e+01
-7.5318446646829873e+00
--4.6514740164422555e+01
--8.1264133416658080e-01
-1.9359263158076783e+00
--2.1926604943630377e+01
--1.1075531949085866e+01
-6.0502398015693952e+00
--4.2286714499002514e+01
--5.9632017993269280e+00
-4.8098266211853655e+00
--3.8812604164521652e+01
--1.7487930997239496e+00
-2.2705456085671667e+00
--2.4153487414601614e+01
--1.0525690027978158e+01
-5.0687116611209833e+00
--3.8069638269291239e+01
--7.9010478936841642e+00
-4.6232539013467413e+00
--3.9238209147098217e+01
-1.1952163535217116e+01
-7.9685272006978125e-01
--3.3504613117852443e+01
--8.2954536844811653e+00
-4.4613412680128279e+00
--3.7749321675828945e+01
-1.3750759935483680e+01
-4.3643091499069464e-01
--3.3270343408183884e+01
--1.0847729125312341e+01
-4.8021874836504734e+00
--3.7443493730599329e+01
-1.3573855573747435e+01
-4.6900052192194608e-01
--3.3987778392211261e+01
--7.5738713635320796e+00
-4.1350966991494289e+00
--3.7731860645963465e+01
--5.7793353201051403e+00
-3.7152097919535931e+00
--3.7298139342478009e+01
-4.7987218928096160e+00
-5.9615864201792934e-01
--2.3231625985766932e+01
--7.3660225314859815e+00
-3.7189024927071244e+00
--3.6693901401665698e+01
-6.7599816478888384e+00
-1.3430473874632562e-01
--2.3808539088729312e+01
--6.7550239840520208e+00
-3.5387624958555994e+00
--3.6895825631705208e+01
-1.3703111955763219e+01
--4.4732477286889383e-01
--3.2255108350099725e+01
-1.4132256861406674e+01
--7.0017693320015639e-01
--3.1563901123033506e+01
--1.8427860912320369e+01
-5.6172962212465523e+00
--4.5170606859006057e+01
-1.4886878276107687e+01
--9.5928653558498522e-01
--3.2502952600503100e+01
-1.4255765568324215e+01
--1.1924390357629107e+00
--3.1554091397065260e+01
--1.2235925823463731e+01
-3.3620470537383609e+00
--3.5540851665476325e+01
-1.4423965414000657e+01
--1.3850620086677292e+00
--3.1352844697106857e+01
-1.5410262487824438e+01
--2.2559454079958576e+00
--2.3606286167063224e+01
--2.6085048414193914e+00
-8.7738992880876154e-01
--2.3640774846807805e+01
--5.9772950479603386e+00
-1.6773636888683923e+00
--3.4848090022993418e+01
-2.6196623853857099e+00
--4.1497115120387612e-01
--2.1540666176533353e+01
--3.3278446037988121e+00
-6.7366517316741692e-01
--2.4072219101167022e+01
--6.9764295706043002e+00
-1.7881158238592059e+00
--3.4328961847924674e+01
--7.8209037916160993e+00
-1.8065258029702445e+00
--3.4162362498832692e+01
--9.8429231396376000e+00
-2.0404805358621982e+00
--3.3973000274399773e+01
--2.9910335551466076e+00
-3.6106328067433990e-01
--2.3740306934767936e+01
-1.2496541247512706e+01
--2.2188260267891837e+00
--3.0538880073461176e+01
--5.9246344189894398e+00
-9.3802192024282394e-01
--3.3544975129704852e+01
-1.3633960044265871e+01
--2.5171535530023368e+00
--3.0068964758051859e+01
--9.4339723099793744e+00
-1.5089339381426969e+00
--3.3157657727192543e+01
-5.5566114281378951e+00
--1.4597219670096584e+00
--2.1744420002336206e+01
--2.8103469696479348e+00
--2.1337921904638524e-01
--2.2913132554438988e+01
-1.2847203132426085e+01
--2.8916631845276686e+00
--2.8087356909888477e+01
--2.8221864906682077e+00
--2.9750530587791590e-01
--2.2933010133859227e+01
-1.5599270281709117e+01
--3.6801258032638846e+00
--2.5004157469893812e+01
--6.2987680207158618e+00
-3.6488016968809756e-01
--3.2462017835978934e+01
--8.5980221894640625e+00
-6.1385194050897274e-01
--3.2204623441740267e+01
--2.9179460917817042e+00
--4.8585608303599115e-01
--2.2696614498889819e+01
--7.1165876759285620e+00
-2.0973456789514153e-01
--3.2219201793254221e+01
-1.1367798987172851e+01
--3.0315571387943181e+00
--2.8683634101406742e+01
--1.6125046130660084e-01
--1.0710169434214354e+00
--2.0780779583152523e+01
--2.4042975015695305e+00
--8.8094524875535640e-01
--2.2071412753759191e+01
--2.1963702939873326e+00
--9.9039537337595096e-01
--2.1972506893214071e+01
--2.5156684225472858e+00
--9.5311248807494231e-01
--2.2265063469645021e+01
--8.6762634654024406e+00
--1.5687700950561301e-01
--3.2418759828852423e+01
--2.6802616093314695e+00
--1.0584347529467848e+00
--2.1881396955779472e+01
-1.3197819931331118e+01
--4.2655888501370365e+00
--2.6829239741269276e+01
--8.3361513991085427e+00
--3.0702907172078081e-01
--3.1196113243865817e+01
--2.3413100406085707e+00
--1.2158188298939314e+00
--2.1942655561641587e+01
--8.1341814868387612e+00
--4.8176600107554812e-01
--3.2038097181197912e+01
--2.9089416452050818e+00
--1.2783744498495659e+00
--2.1901418704429016e+01
-3.8445434984347662e+00
--2.4922682127131335e+00
--2.0378237140729514e+01
--1.4306574171408464e+00
--1.5806720190829353e+00
--2.1201183966944079e+01
--1.2068928657652163e+00
--1.6437974693635995e+00
--2.1214671148163895e+01
--7.0110265192271051e+00
--9.7982232308129980e-01
--3.1328570240539108e+01
--8.7283653158542105e+00
--7.4333602013794320e-01
--3.1626221303559291e+01
--8.7817308357222128e+00
--7.0983850868583198e-01
--3.2016116811157772e+01
--4.1952623380337606e-01
--1.9116508361473472e+00
--2.0747189521363680e+01
--8.9953977596857893e-01
--1.8961710791153736e+00
--2.0867458110625464e+01
--9.7068546220757277e+00
--9.4788288071576354e-01
--3.1253744662502633e+01
--7.9252406619439766e+00
--1.2737818390798059e+00
--2.9790248628110600e+01
--8.9253882947011167e+00
--1.3715011770242378e+00
--3.1106556904140490e+01
--8.5508356362179256e+00
--1.4516366689138180e+00
--3.0242371509894177e+01
--8.5357308501163782e+00
--1.4886474651711143e+00
--2.9254489179928989e+01
--9.0579346693437888e+00
--1.7558619680114684e+00
--3.0186578062435938e+01
--5.3859334763311650e-01
--2.5365141427548141e+00
--2.1217404385597892e+01
--2.0021632212431315e-01
--2.6937248048940106e+00
--2.1259372869469090e+01
-9.2982666351005439e-01
--3.0696947101536249e+00
--1.9493290130869319e+01
-1.0981760247485859e+01
--6.1304806443540736e+00
--2.4880118158678414e+01
-1.0380303348482380e+01
--6.3283680103937421e+00
--2.4588452153315853e+01
--2.2619094088787817e+00
--3.7913859327004524e+00
--2.3559409597322887e+01
--8.3289990707032899e+00
--3.3409603883662968e+00
--2.6759368005799764e+01
--9.9518018930493408e+00
--3.1044078302349551e+00
--2.5978809504921980e+01
--1.0641117581637674e+01
--3.4072802375621150e+00
--2.8004220323937822e+01
--7.2906616563105846e+00
--4.0849710350185102e+00
--2.7138524661240922e+01
-7.8014310705202066e+00
--6.5843059513416069e+00
--2.3552313679809714e+01
-6.7885635299382558e+00
--6.5515364348585958e+00
--2.3273207641908183e+01
--1.3513090623512323e+01
--3.7677080202924857e+00
--2.7797543779203391e+01
--8.4412874438928025e+00
--4.2094215716916716e+00
--2.4920002532589532e+01
--8.6879389992408118e+00
--4.3036067813601990e+00
--2.4776870909296083e+01
--7.9189351307720672e+00
--4.8964156157134520e+00
--2.6054496768838867e+01
--7.5515763051905891e+00
--5.1319991297893086e+00
--2.5818362530376838e+01
--7.6812506771169726e+00
--5.1619671220914576e+00
--2.5588231374293688e+01
--6.6094623704388686e+00
--5.3406067471565768e+00
--2.5246055421486652e+01
--7.4450585766137536e+00
--5.3953498456716327e+00
--2.5272900093213792e+01
--7.4577816843011790e+00
--5.4308971246357522e+00
--2.5406649072599198e+01
--2.9086595087252171e-01
--6.4064097250069736e+00
--2.2439524232405201e+01
-1.2497614210563273e+00
--6.5822864008833708e+00
--2.1811872288050086e+01
--7.0783961343668722e-01
--6.2730462294086351e+00
--2.2224417658631900e+01
--4.6526919022414965e+00
--6.1554107177288397e+00
--2.3230797049765357e+01
-9.2946549645272754e+00
--8.9417584149004696e+00
--2.1552571573946604e+01
--4.6829962266205660e+00
--6.3399757631383320e+00
--2.2898343920400965e+01
--7.8149725866563786e+00
--5.7364831357664832e+00
--2.2709332933968199e+01
-3.4964589377869699e+00
--7.9052678777813803e+00
--2.1439807418234146e+01
--8.8498786464745791e+00
--5.4861573505155476e+00
--2.2336338824505415e+01
--3.7449368368411755e+00
--6.6713993641764153e+00
--2.2558991189777835e+01
--7.0782008120505431e+00
--5.9890098042676270e+00
--2.2642866610183553e+01
--4.2027313384243419e+00
--6.5988609796433826e+00
--2.2611555958620400e+01
--4.3495959043078951e+00
--6.6642414578109985e+00
--2.2325340729071140e+01
-3.2557561571234692e+00
--8.0663984208338118e+00
--2.1268777174136083e+01
-3.3201426129559999e+00
--8.0989658750114089e+00
--2.0946926413748667e+01
-4.0602878692918081e+00
--8.4816316692231375e+00
--2.1163635007690875e+01
--3.6636263002841343e+00
--6.8979374687317492e+00
--2.1922646934885222e+01
--5.9337413549039191e+00
--6.6412258793439394e+00
--2.2018556763372377e+01
-3.2263175838695388e+00
--8.2910717102407325e+00
--2.0668606869052351e+01
-5.5054766173346676e+00
--8.6539423514958447e+00
--2.0225813883742614e+01
--1.0336387381447374e+00
--7.6841250884024843e+00
--2.1330008291973328e+01
--6.3603783152844189e+00
--6.6848575876014840e+00
--2.1730153727833937e+01
--1.2038090770696279e+00
--7.6891311496182499e+00
--2.1318366555369000e+01
--1.0975932379903592e+00
--7.7273045241428999e+00
--2.1314446879579158e+01
--1.0065384338004935e+00
--7.7606972182783851e+00
--2.1322591854532934e+01
--1.0065384338004935e+00
--7.7606972182783851e+00
--2.1322591854532934e+01
-1.9905445311586958e+00
--8.3381424859526394e+00
--2.0542318283350500e+01
-2.0557810643664420e+00
--8.4108909103238130e+00
--2.0467559406230169e+01
-3.8332532531721517e+00
--8.8068966552125687e+00
--2.0045752678188670e+01
--9.6665879996696980e+00
--6.0132926339371275e+00
--2.0474639861327812e+01
--8.2027006218642473e+00
--6.4704964617027914e+00
--2.0707928536111051e+01
--1.2556474599788201e+00
--8.4025722602988839e+00
--2.1297020015672011e+01
-2.5004327627380212e+00
--8.8619501623539954e+00
--1.9892188804817692e+01
-2.1003703369811446e+00
--9.1594533693672453e+00
--2.0304895386847065e+01
--7.9376107307886539e+00
--6.7742269901910381e+00
--2.0223702197944821e+01
-3.3459930644601354e+00
--9.0973050672734299e+00
--1.9448527586404843e+01
-3.7736154487330054e+00
--9.1459053267368109e+00
--1.9354405830142884e+01
-2.6940528245256683e+00
--9.3251977390546443e+00
--2.0024144997512447e+01
-9.2255496763149003e-01
--9.1064193683861401e+00
--2.0370889432808475e+01
-1.9056517615104362e+00
--9.0003695150940981e+00
--1.9404939175636233e+01
-6.9715287593502795e-01
--9.1724400332312896e+00
--2.0278701534241325e+01
-3.6076061049493848e+00
--9.6520908741516660e+00
--1.9563091101528649e+01
-6.3148568389315800e+00
--1.0359066569383351e+01
--1.8720460253184811e+01
--3.9572210823316616e+00
--8.4767335008240750e+00
--1.9278853974006694e+01
--3.1408518612276346e+00
--8.6392675187977801e+00
--1.9201216722649981e+01
--2.7701516184422572e+00
--9.4145288455712848e+00
--1.9968274952866746e+01
-1.6565970262951058e+01
-2.0897231535984425e+01
--5.8957373643361663e+01
-6.1141307198906123e+00
-1.7423850667915200e+01
--5.5172005774878571e+01
--4.0906924450524169e+00
-1.6379872065586596e+01
--4.8924531204538496e+01
-6.0631244342041271e+00
-1.7058804432532657e+01
--5.4947437473810204e+01
-1.3829187942049460e+01
-9.6921528622634678e+00
--3.6349020237132059e+01
-1.4848540706853356e+01
-9.9330002421056722e+00
--3.7550418314903816e+01
--1.1269397248149664e+00
-1.5414101088070657e+01
--4.8038083177024582e+01
--9.9811427843677318e+00
-1.2686179299743770e+01
--4.0305823459231540e+01
-1.3546325014123068e+01
-4.8866235986690585e+00
--2.4535494988112166e+01
--5.8891558929725241e+00
-1.3101865576386839e+01
--4.7482566887349336e+01
-1.4073197581966461e+01
-7.6713247327917227e+00
--3.9095115194825887e+01
--6.4059570583225982e+00
-1.3034518522758919e+01
--4.9776666817230684e+01
--6.4059570583225982e+00
-1.3034518522758919e+01
--4.9776666817230684e+01
--2.7257871054135330e-01
-1.1685898587435089e+01
--4.8128595136341126e+01
--9.7400368446001231e+00
-1.1521986480246703e+01
--4.2537544638968043e+01
-1.2236383258451479e+01
-9.0137129175063659e+00
--4.4759555970781022e+01
--5.4330974177754665e-01
-1.1399179848768586e+01
--4.7398263188788803e+01
-7.2375877220248084e+00
-9.9057093321258360e+00
--4.5692502110530526e+01
--1.2965347904550526e+01
-1.2023510832666481e+01
--4.2782607786712219e+01
--1.0460798741599461e+01
-1.2202413881577009e+01
--4.5654905478931589e+01
-2.6814359958722704e+00
-1.0464256948210615e+01
--4.5950543335786577e+01
-6.8124825408493654e+00
-9.3919420827052207e+00
--4.4865298590130266e+01
--3.6610194761728634e+00
-1.1911880029767888e+01
--4.8709674990639911e+01
--1.0715912228572462e+01
-1.2358921775914991e+01
--4.8513713234260308e+01
--9.6588006952515908e+00
-1.2021871447909783e+01
--4.7985755439816650e+01
--1.0189796453784350e+01
-1.1993499580782927e+01
--4.7642315599253855e+01
-1.3493406294645396e+01
-3.0186185750923400e+00
--2.4655912922856764e+01
--1.3430698324042012e+01
-1.0291666562014999e+01
--3.8995568861473579e+01
--1.0736367712226452e+01
-1.1776693290820726e+01
--4.7333390692226310e+01
-9.8011950178866254e+00
-7.5009116918413961e+00
--4.2589482719395001e+01
-9.8011950178866254e+00
-7.5009116918413961e+00
--4.2589482719395001e+01
--6.3033461715675214e+00
-1.0548814276571726e+01
--4.6335705660948463e+01
--1.3931795324640921e+01
-1.0474206086763735e+01
--4.1476638403072151e+01
--6.1520123999311576e+00
-1.0248383283072942e+01
--4.5770409635401563e+01
--8.0448342838696583e+00
-1.0436049998591415e+01
--4.5782843022269859e+01
--8.0448342838696583e+00
-1.0436049998591415e+01
--4.5782843022269859e+01
--1.2425286285395195e+01
-1.1167573776869567e+01
--4.6695576355470592e+01
-1.3546077982312918e+01
-5.2571453687715159e+00
--3.9443522135785692e+01
--1.3327593840984397e+01
-1.0062468007048100e+01
--4.7649488061367492e+01
--9.0942328518248825e+00
-9.1083324409737454e+00
--4.6576402453026276e+01
--1.1269914079091244e+01
-9.1777050244514289e+00
--4.6567623055213772e+01
-5.6691395968910161e+00
-2.8553435935889384e+00
--2.6494269002142708e+01
-1.2992977200464527e+01
-2.8112992084041868e+00
--3.2398100463295215e+01
--2.1611202718711122e+00
-6.4903191989432276e+00
--4.1320404655952558e+01
-1.1763633751029190e+01
-3.5163804180424671e+00
--3.6912546736666322e+01
-1.2719753525437291e+01
-2.6559873844129558e+00
--3.3948891301530267e+01
-1.5240850725823348e+01
-3.0372365050296848e+00
--3.9923663710778371e+01
-1.2963279421240960e+01
-2.4075019397905613e+00
--3.3224073739657030e+01
-6.3565860061938171e+00
-2.3339856291037608e+00
--2.7175782428554797e+01
--3.3883961112003189e+00
-5.3658104117451213e+00
--3.9635433671304028e+01
--1.4251792314683609e+01
-7.9869733478617979e+00
--4.6349212033845937e+01
-1.2640414272835585e+01
-2.0047343524721311e+00
--3.5189976468739289e+01
-1.1890487729354462e+01
-1.9405126247007245e+00
--3.4897635093196484e+01
-2.4484057566979733e+00
-1.4489562064285770e+00
--2.0675489456450038e+01
--4.6386481792746030e+00
-4.9110898136774521e+00
--3.9269765411534543e+01
--8.7100103317246749e+00
-5.0896830725260909e+00
--3.8555680286320836e+01
-4.7012499268145600e+00
-8.1737365050957922e-01
--2.1766656011994744e+01
-1.3957842501418900e+01
-4.8358491933222869e-01
--3.1872662384811552e+01
-7.2129806560837135e+00
-4.5181762947459653e-01
--2.4482476238464592e+01
--8.8755580855647835e+00
-4.2437343378969752e+00
--3.7210587348903928e+01
--1.3317099602522533e+00
-1.4382283478986766e+00
--2.2205870728203497e+01
-2.1593957941866124e+00
-6.4186155377091636e-01
--2.0314735568711672e+01
-2.1593957941866124e+00
-6.4186155377091636e-01
--2.0314735568711672e+01
--6.2080836015025325e+00
-3.2652535448072468e+00
--3.6565046713689711e+01
-5.7179379981375567e+00
--3.0551565376294398e-02
--2.2645620549285372e+01
-5.7179379981375567e+00
--3.0551565376294398e-02
--2.2645620549285372e+01
-1.4382558978084562e+01
--8.6803941648731830e-01
--3.2188944750537082e+01
--3.4589465637554664e+00
-1.4078074802889200e+00
--2.4983796837875943e+01
--7.4523454022689366e+00
-2.8497175283243275e+00
--3.5964278285866527e+01
--2.0729716981999107e+00
-9.0800737232046946e-01
--2.3188413156752791e+01
--8.5856068099336635e+00
-2.7200343823467863e+00
--3.5245437098109058e+01
--7.6885016103796193e+00
-2.5086713612933393e+00
--3.6165157256220482e+01
-1.3914778105690504e+01
--1.3920690116818695e+00
--3.1176509666594157e+01
--8.4711567033144615e+00
-2.5301533334967843e+00
--3.5021687067628349e+01
--7.4937755225884484e+00
-2.1546333588215520e+00
--3.4725934955318174e+01
--6.9577479386518455e+00
-1.9964052566511126e+00
--3.4688261622537141e+01
--8.9143827968192486e+00
-2.2625845561670990e+00
--3.3980233187054502e+01
-1.7463043680162219e+01
--2.4439640618741572e+00
--2.9900188324283619e+01
--1.3047335139492948e+00
-1.4899643541954102e-01
--2.1845627957166588e+01
--2.2341186649886171e+00
-2.7974318007328397e-01
--2.3211182382926093e+01
--1.0428340500565895e+01
-2.0683596170417506e+00
--3.6451147622327376e+01
--9.3994539368346963e+00
-1.3755435612936502e+00
--3.2919523590465403e+01
--2.7825787173422567e+00
--7.3762902316184653e-02
--2.3106018867746823e+01
--2.7825787173422567e+00
--7.3762902316184653e-02
--2.3106018867746823e+01
-3.7438316552446484e+00
--1.3645746690343457e+00
--2.2124459564544651e+01
--9.8796555797234618e+00
-8.7285594997259341e-01
--3.4695880875118661e+01
-1.3227382125342640e+01
--3.4372445617344880e+00
--2.7919966184219842e+01
-1.2843209303065368e+01
--3.1874856044710187e+00
--2.8896179295739348e+01
--6.7603615680064992e+00
-1.7028121613312883e-01
--3.2174196227533905e+01
--6.3354153125704347e+00
--3.7669880068734021e-02
--3.2033885458021672e+01
--1.7930257210369989e+00
--1.2532025629124888e+00
--2.1616828651382225e+01
--2.5439201281472137e+00
--1.1748520582102489e+00
--2.1868603950305275e+01
--9.2435407449760625e+00
--4.3303967231601331e-01
--3.0512136765187094e+01
--8.2726128714925018e+00
--7.5448350782705353e-01
--3.0495428267577704e+01
--1.0549276027138513e+01
--4.5258347356694073e-01
--2.9943998768522420e+01
--1.0549276027138513e+01
--4.5258347356694073e-01
--2.9943998768522420e+01
--9.8928599493486118e+00
--7.3218172056402664e-01
--2.9906949825054735e+01
--1.0161785964900545e+01
--9.0561117149138237e-01
--3.1480843978818562e+01
--9.6983548056756010e+00
--8.2681151645907547e-01
--2.9674713962614479e+01
--7.7499139402581436e+00
--1.2736808785515266e+00
--3.0416353861162040e+01
--9.0361611849011929e+00
--1.1562743136237117e+00
--3.1218581992551240e+01
--1.2315368027784764e+01
--9.0347222421007856e-01
--3.1582626072280704e+01
-2.6582257528626823e+00
--3.1521416339714947e+00
--1.9961057331189377e+01
-1.2831560547991744e+01
--5.4835853165602515e+00
--2.4682790863055882e+01
-1.1321705468825650e+01
--5.5332551000034043e+00
--2.5730362824313936e+01
-1.1305555785437138e+01
--5.6926690072720580e+00
--2.5517033950159522e+01
--2.1907179352709654e+00
--3.4189432303520557e+00
--2.2829063281971123e+01
-9.9790153545379512e-01
--4.1470698735664087e+00
--2.0663390363597340e+01
--2.4980476578781321e+00
--4.7543350181419148e+00
--2.2823870084090977e+01
-6.2393122813302124e+00
--6.7632040400326563e+00
--2.2794001967795843e+01
--1.8300679753250764e+00
--5.0919125577020372e+00
--2.2245831454702387e+01
--7.2856661637127278e+00
--4.7636588084867659e+00
--2.6262562072487214e+01
--6.3908741128903408e+00
--4.7642134856611040e+00
--2.4945401115149508e+01
-1.8183424456523125e+00
--6.7161278982832835e+00
--2.2182166674952100e+01
-1.8183424456523125e+00
--6.7161278982832835e+00
--2.2182166674952100e+01
-9.1019606581992072e+00
--8.8894864431424452e+00
--2.1445761553386319e+01
--6.4750122947255244e+00
--6.0333950232990299e+00
--2.2833917493431287e+01
--7.7041661527899956e+00
--6.1247148633186512e+00
--2.1846599591180254e+01
--8.0130441378629524e-01
--7.6337447270965733e+00
--2.1335025073754007e+01
--2.7130367428796589e+00
--7.7776357736362796e+00
--2.2127316030311508e+01
--6.3452658553869172e+00
--6.8077489768924471e+00
--2.1473635302771797e+01
--7.4483207351143721e-02
--8.1180095128921881e+00
--2.1087169577173551e+01
--9.1840478531521719e-02
--8.1925458440464851e+00
--2.0835400968826892e+01
--5.8738666162782467e+00
--7.1329607211766497e+00
--2.1106178428770331e+01
--5.9297470845181728e+00
--7.2044505261038356e+00
--2.0987264050129632e+01
-5.3790956208866296e+00
--9.4263717573898802e+00
--1.9607316377982755e+01
--3.9197412920778829e+00
--7.7240484803981309e+00
--2.0462754232525846e+01
--3.9197412920778829e+00
--7.7240484803981309e+00
--2.0462754232525846e+01
-4.0847668742012653e+00
--9.4532389781674606e+00
--1.9903449952172451e+01
--9.0853266085318585e-01
--9.2055970400633580e+00
--2.0193084211631113e+01
-5.7938683151042865e+00
--1.0329307631383443e+01
--1.8740004390905018e+01
--3.7587988218437420e+00
--8.3548957637627908e+00
--1.9636228989843751e+01
-5.4957059037484672e+00
--1.0423108678547630e+01
--1.8589023723769984e+01
-5.0566588481029937e+00
--1.0532697315180750e+01
--1.8467444283101177e+01
-1.8867413242025723e+01
-2.1648333654603345e+01
--5.9393625899064105e+01
-4.2511473796244461e+00
-1.7634831879012733e+01
--5.0523269148963109e+01
-7.1567329247820428e+00
-1.8261309891407546e+01
--5.4311055584547134e+01
--6.6129656212504742e+00
-1.5583455669034590e+01
--4.3480245457000443e+01
--4.7274045510425502e+00
-1.6219737990353902e+01
--4.6554366942193774e+01
-6.9159771804110530e+00
-1.7648959600400591e+01
--5.6280350163202911e+01
--4.6886877872904984e+00
-1.5740660952060637e+01
--4.7290687300831706e+01
-1.3085920852082635e+00
-1.6799765328458065e+01
--5.3824425912827216e+01
--9.0819156053857437e+00
-1.4434294539023909e+01
--4.4224265544147322e+01
--9.8932392339265132e+00
-1.3032338141626328e+01
--3.9453436734385555e+01
--8.3414386704065890e-01
-1.4936559236795564e+01
--4.9418756682936234e+01
-5.0657197720171732e-01
-1.5023579182455475e+01
--5.1641044930937937e+01
-1.1355958052899606e+01
-6.3606350150321820e+00
--2.8908496050750657e+01
-1.4622395067572089e+00
-1.3694625587412879e+01
--5.0919046116936798e+01
-1.5634746439555235e+01
-1.0021284731078753e+01
--4.5638736801940482e+01
-1.3923349821146880e+01
-5.8811388677240348e+00
--3.0266711567536714e+01
--4.9411668287368231e+00
-1.3862561934178217e+01
--4.9912153898449205e+01
-1.5311294397763260e+00
-1.2775369526305617e+01
--4.9477164990124443e+01
--6.4898996849673383e+00
-1.3261524571391645e+01
--4.9521957521152729e+01
-1.3265351576048410e+01
-1.2145402306891157e+01
--5.5933186319992750e+01
--9.9188117093716688e+00
-1.1535632473012507e+01
--4.2061363797429109e+01
--1.3086881436747607e+01
-1.2472894219674748e+01
--4.3640582063206438e+01
-8.4390601358919837e-01
-1.1672434339094691e+01
--4.8121909193273090e+01
--5.8454542081211098e+00
-1.3024638353872790e+01
--5.1264295488328834e+01
--6.8334764476552090e-01
-1.1196585184310916e+01
--4.7322593678386689e+01
-8.8353426458952136e+00
-8.3503364423562960e+00
--4.3068520813398017e+01
--1.2946963999056811e+01
-1.0103039168555469e+01
--3.7651182270183035e+01
--1.0336772307659110e+01
-1.2010001384269335e+01
--4.6834769587865452e+01
--4.7943762787984827e+00
-1.0828178961071723e+01
--4.6431687030283008e+01
-1.3816226925925244e+01
-2.6199501854135772e+00
--2.3281708757527696e+01
--1.0421717740778677e+01
-1.1568629419283608e+01
--4.7380563420902753e+01
-9.1401506297562545e+00
-7.2822613632262394e+00
--4.2119546840022672e+01
--1.1022870226081226e+01
-1.1145940071003738e+01
--4.6332751885258098e+01
--1.5559110839387905e+01
-1.0841000990343950e+01
--4.2149143908432734e+01
--1.4554940705581553e+01
-1.0946638874740788e+01
--4.3482822720620675e+01
--1.2781004391518008e+01
-1.1248956626317890e+01
--4.6407723614329193e+01
--8.0693382013467208e+00
-1.0112710970690667e+01
--4.5387366281740569e+01
--7.2392853347816919e+00
-1.0553039574671295e+01
--4.7724078671876796e+01
--1.2007794734141211e+01
-1.1144814760335425e+01
--4.7244001623267074e+01
--1.2693057494321250e+01
-1.0903329004721813e+01
--4.6920862609380556e+01
--1.1349778815889714e+01
-1.0867298665190784e+01
--4.7836203375473858e+01
-1.2680190575366577e+01
-4.0868078163268704e+00
--3.2638876525051266e+01
--8.4886441738366027e+00
-1.0287240680933891e+01
--4.7724407016488939e+01
-4.0000689494435431e+00
-3.6755633152111264e+00
--2.5950350817976410e+01
--9.0866478943854148e+00
-9.9347639883090419e+00
--4.7480865311207147e+01
-1.4154336145466630e+01
-1.5000490984800470e+00
--2.3688138905500495e+01
-1.2998139946641095e+01
-3.4848618650804895e+00
--3.3087006161129246e+01
--1.6984934917289234e+01
-1.0461865117812346e+01
--4.5784038246900799e+01
--1.6693495699996713e+01
-9.8141455492724869e+00
--4.4125970869897294e+01
--1.4303761108001932e+01
-8.4028460978241313e+00
--3.8621113389391624e+01
--1.2347935794516191e+01
-9.8985727874754765e+00
--4.7454405125998747e+01
--1.4844136334074845e+01
-9.6240274002544410e+00
--4.5063269814983762e+01
--1.4622906265542127e+01
-8.7168517237729919e+00
--4.7616172416310306e+01
-4.4096147622778797e-01
-2.2846019669224682e+00
--2.1450367347180201e+01
-1.4370450502844429e+01
-9.3574322421200795e-01
--2.6562806381488524e+01
-1.1961782939472464e+01
-1.8761979472498398e+00
--3.4802124383173528e+01
-2.9824369515041669e+00
-1.1691089441387337e+00
--2.0728185806618797e+01
-1.6274627525364377e+01
-1.7233734818777974e-01
--2.9337334481711444e+01
-1.4900959599548603e+01
--6.0342742279900718e-01
--2.3286301285015711e+01
--1.2771691861193014e+01
-5.9188907575263690e+00
--4.3037430970657461e+01
--1.2771691861193014e+01
-5.9188907575263690e+00
--4.3037430970657461e+01
-1.4602681372947439e+01
-1.9877201069060879e-01
--3.1006387424664187e+01
--8.6499018592823678e+00
-4.3673921061403815e+00
--3.7516966501074585e+01
-1.2582405823084102e+01
-5.0209737754564898e-01
--3.3834399997756393e+01
--6.8064758327631045e+00
-3.8589860760719343e+00
--3.7559615268694586e+01
--5.6091615548672955e+00
-3.5788574837582132e+00
--3.7116160978960536e+01
--2.1650270541091152e+00
-1.6258549876432336e+00
--2.3968418696312643e+01
--8.9104332254265444e+00
-3.9290585298459493e+00
--3.7136943901972664e+01
-1.4486389320133084e+01
--3.4835072502637449e-01
--3.3201764845191619e+01
-1.4102871630497198e+01
--5.4237719326690192e-01
--3.2426546824317768e+01
--6.4528312136901391e+00
-2.8937152649099271e+00
--3.5954183016207232e+01
-1.5025439752818309e+01
--1.6858246204696719e+00
--2.4925093882222871e+01
--2.5847846007987672e+00
-1.2049063641363458e+00
--2.4210303012033318e+01
-1.4312850342083417e+01
--1.0386269370829051e+00
--3.2130116883651510e+01
--2.3460315216451515e+00
-9.1928487176224416e-01
--2.3293917021964148e+01
-1.3984927167374597e+01
--1.2782337802625956e+00
--3.1552652900127974e+01
-1.4147412154036832e+01
--1.9631279484117943e+00
--2.9902369400541605e+01
-1.9234746319047238e+00
--2.5719734360496660e-01
--2.0368789307943825e+01
-3.2751057349917416e+00
--6.6787342663429539e-01
--2.0769843590657889e+01
-1.2061083071196375e+01
--1.7801968047648238e+00
--2.9464667816124837e+01
--5.8608954897990939e+00
-1.3644040983082399e+00
--3.3827092639622130e+01
--2.5339760733667207e+00
-2.5858322519913818e-01
--2.3296797351269269e+01
--9.7540125198899101e+00
-1.7630754590778228e+00
--3.3576845337185937e+01
-6.0081945224905740e+00
--1.3479790859566545e+00
--2.1686949735964934e+01
--1.5461606032228372e+00
--9.8589851703468540e-02
--2.2035351870927659e+01
-2.8323069997680199e+00
--9.7037114618683917e-01
--2.0666952226869196e+01
--2.5213415413648175e+00
--3.8180730189931740e-02
--2.2964106761189651e+01
-2.4720637223350392e+00
--1.2390913286960956e+00
--2.0698162445854539e+01
-1.6366745396555149e+00
--1.0170479285966232e+00
--2.2485019802065768e+01
--1.7407457129622359e+00
--6.1397641200576936e-01
--2.1523103192183616e+01
-1.3240429237891455e+01
--3.9495750518014945e+00
--2.7491110396524981e+01
--1.6445260059017099e+00
--1.2230961421373265e+00
--2.1589089720693885e+01
--2.9628138684027152e+00
--1.0550659679073284e+00
--2.2072625245307673e+01
-3.2593806571600181e+00
--2.0704908608980528e+00
--2.3314940840982391e+01
--1.9111364859368498e+00
--1.3462150566803290e+00
--2.1536398913558592e+01
-3.0759199106837363e+00
--2.1181360022511906e+00
--2.3229459064891483e+01
-6.3383079861474889e-01
--2.2969712397647561e+00
--2.0414726704469409e+01
-1.1477431749313716e+01
--4.8415613733280543e+00
--2.5698209351953039e+01
--1.1407941536210313e+01
--9.7254106433762089e-01
--2.9069462529420555e+01
--1.1175209386279072e+01
--1.2330476893340521e+00
--3.1443655182643877e+01
--8.5411545059450376e+00
--1.7461117938961392e+00
--3.0403568546625053e+01
--9.4537758354324541e+00
--2.4920885205421071e+00
--2.7529680954823839e+01
--9.6852253766566374e+00
--2.4412742109993579e+00
--2.7303788450549625e+01
--7.1035993058252034e+00
--3.3296351354619080e+00
--2.8027568128578590e+01
--2.1700314158450418e+00
--3.7293747400391108e+00
--2.3324659658475465e+01
--8.3276122595960231e+00
--3.1888688748508431e+00
--2.6846478923276692e+01
-1.1554117518633714e+01
--6.9506108587517224e+00
--2.3270832786514404e+01
-4.3609793553463616e-02
--4.4962728983936238e+00
--2.2772766634701561e+01
-1.7802463564583049e-01
--5.1153933322362715e+00
--2.2100503690270308e+01
--7.3374887271027749e+00
--4.8838086135489291e+00
--2.6103870929587782e+01
-3.3446420662559611e+00
--7.5792184324927803e+00
--2.1383971660172200e+01
--7.6405739980788532e+00
--5.7660691843690799e+00
--2.2586916370633350e+01
--7.6405739980788532e+00
--5.7660691843690799e+00
--2.2586916370633350e+01
--5.8324924875475057e+00
--6.3361941716383940e+00
--2.2798666603610258e+01
-1.6008336934781704e+00
--8.1218638530756557e+00
--2.1715689524978366e+01
-1.0006956951822231e+01
--9.6117463285359079e+00
--1.9965774275863179e+01
-7.9381427273129086e+00
--9.3224026048670314e+00
--2.0844624508261042e+01
--1.6525527627694971e+00
--7.6440779623683888e+00
--2.1333343014778823e+01
-5.1845191664977834e+00
--9.2032002758610947e+00
--1.9407775002761021e+01
--4.2199909902036303e+00
--7.8086836603441281e+00
--2.0209882759729027e+01
--2.2257317346956665e-01
--9.1184871497694591e+00
--2.0267212223497449e+01
--4.9229149383489466e+00
--8.8112380260294714e+00
--2.0800544487009731e+01
--7.3131403439618980e-01
--9.5510710859064432e+00
--1.9715280727145451e+01
--3.3303262619351086e+00
--9.2864703174979333e+00
--2.0128741951748736e+01
-6.3458654093769322e+00
-1.7866587686712315e+01
--5.4402623121438445e+01
-3.6873962660858073e+00
-1.6346051310806544e+01
--5.4721494413343585e+01
-1.5945443173665657e+01
-1.1520721771237367e+01
--4.6051149619311467e+01
--6.2773119874713845e-01
-1.4667536022064317e+01
--5.1585308426509883e+01
-1.6266254947415526e+01
-1.5139869392577182e+01
--6.4212301459635853e+01
-1.5026224971742106e+01
-1.4481511818590711e+01
--6.2372426054001373e+01
--1.7413180011232410e+00
-1.1694435319367448e+01
--4.8244737015775456e+01
-1.3046669033347765e+01
-3.8423082429429538e+00
--2.6098513530517270e+01
-1.2833868801122037e+01
-3.9297679040341378e+00
--2.7030647561365619e+01
-1.2482569473834284e+00
-9.4911902851939942e+00
--4.4378723741226835e+01
-1.1674180481214073e+01
-4.7507572203853607e+00
--3.1258498837260571e+01
--5.2229305703749640e+00
-9.6987406916031151e+00
--4.5371746271626478e+01
--1.0593717157324825e+01
-1.1218974863691214e+01
--4.8827967412553946e+01
--1.2850193665199614e+01
-1.1082750812879196e+01
--4.6825588947885628e+01
--1.3765264477934302e+01
-1.0647523238606110e+01
--4.5432378392748852e+01
--2.2277866297335454e+00
-8.2863568245867114e+00
--4.3371685354964143e+01
--5.1231863997935001e+00
-9.2962875470560213e+00
--4.5998814250631924e+01
--1.3476352466039277e+01
-1.0469140798564267e+01
--4.7237185887770224e+01
--1.5571182355135102e+01
-9.6938612338749408e+00
--4.5929976816589601e+01
--1.6203341543930392e+01
-9.5358201753374665e+00
--4.6712866198918356e+01
--1.0734941502675740e+01
-7.4277610284358779e+00
--4.1596831668546791e+01
-3.3972936632415993e+00
-1.7923583900440194e+00
--2.1659785593355267e+01
--8.2580978366119151e+00
-5.9801182543280609e+00
--4.0835955312311434e+01
--1.1983397345301553e+01
-6.1467064005038727e+00
--4.2714350646583874e+01
-1.3492643013266534e+01
-1.1298813043773090e+00
--3.4529075821002287e+01
-1.3492643013266534e+01
-1.1298813043773090e+00
--3.4529075821002287e+01
-1.5009100534102044e+01
--2.9149876791790909e-02
--3.1486828512596809e+01
-1.5045163744775371e+01
--2.4148302108400549e-02
--3.1555795788320008e+01
--1.1808075631309748e+01
-5.2169565622902452e+00
--4.1047430841889742e+01
--1.1808075631309748e+01
-5.2169565622902452e+00
--4.1047430841889742e+01
-1.2600034910516380e+01
-2.5252597325103721e-01
--3.3569432458501197e+01
--1.8594759254369048e+01
-6.5447677811687548e+00
--4.6763321134812365e+01
-8.8222017227362759e-01
-7.7796762339787706e-01
--2.1179469729014759e+01
--6.4482200097305595e+00
-2.6271760970471805e+00
--3.5673802674100543e+01
--6.2586924615316208e+00
-2.3629782470527827e+00
--3.5618735711277530e+01
--6.2508661873614324e+00
-2.3516563342088950e+00
--3.5310866087179008e+01
-1.4521938513813552e+01
--1.6364202665796335e+00
--3.1269469668218420e+01
--6.3264812294645543e+00
-1.7976956221013791e+00
--3.4372993523972681e+01
--1.7060919328494291e+00
-2.9956238098874111e-01
--2.3092241997048401e+01
-1.1531967564521617e+01
--2.0150401359206485e+00
--2.9172071231657206e+01
--6.9877042068470328e+00
-4.6197262219364127e-01
--3.3346775356643512e+01
-1.3274441073080354e-01
--2.1999873391825897e+00
--2.0522128093224207e+01
--1.1749512597034664e+00
--2.2354910319002599e+00
--2.0442592612399697e+01
--6.7422906052512088e-01
--2.3464282645745778e+00
--2.0874457884164034e+01
--8.4080073632465044e+00
--1.8243016655174777e+00
--2.8617082183486936e+01
--8.6690114774183780e+00
--1.8688046381834493e+00
--2.9696094948123854e+01
--9.1302914281300165e+00
--1.7540226486818167e+00
--2.9116745477239629e+01
-1.1677841397258758e+01
--5.5369948609390249e+00
--2.5767921242167130e+01
--6.9947572279745867e+00
--2.3968932590245400e+00
--2.9120917975570940e+01
--6.9947572279745867e+00
--2.3968932590245400e+00
--2.9120917975570940e+01
--1.1854313121057716e+01
--2.4208142200774478e+00
--2.5525680450550254e+01
--8.2658603365014063e+00
--3.3809412099567968e+00
--2.6335565292908498e+01
-1.1375515317872898e+01
--6.9762587572339694e+00
--2.3155325179654419e+01
--6.6971561351743869e+00
--5.2426032472446051e+00
--2.5386290034590481e+01
--7.8378904577397570e+00
--5.4777994680184259e+00
--2.3057531462046462e+01
--4.6018976181313072e+00
--6.3030218301853793e+00
--2.2992189641877623e+01
--7.7140409545094437e+00
--5.6455995079928316e+00
--2.2744296920561037e+01
--8.1041066118255447e+00
--5.6457753352641520e+00
--2.2372381450871881e+01
--5.9548998649644753e+00
--6.3469125793063235e+00
--2.2464492629930209e+01
--8.3940570530279857e+00
--5.8161052736056238e+00
--2.1927911890345605e+01
-3.6254394118223274e+00
--8.4519669308809586e+00
--2.1376539047226146e+01
-6.8212844431090618e+00
--8.8706996252657113e+00
--2.0661364316837517e+01
-4.3716821034823363e+00
--8.9101245976936596e+00
--2.0065300350806989e+01
--6.0618612418436335e+00
--7.0538973770670976e+00
--2.1096484506530079e+01
-4.9185842944280506e-01
--8.8324806325482896e+00
--2.0698569647972583e+01
-1.3480158198150248e+01
-9.9174857483851770e+00
--3.2843928995367122e+01
-1.3609045692463901e+01
-8.1373933782351919e+00
--3.5614922141500038e+01
--9.6431158183164314e+00
-1.3461506369317016e+01
--4.3895991539870387e+01
-8.0848591177147568e+00
-1.0376357797181496e+01
--4.4465692149958478e+01
-5.8730255602866359e+00
-9.6949867063149995e+00
--4.4236790297736718e+01
-9.2566884368737341e+00
-7.7560063694590244e+00
--4.2667518411042067e+01
-1.0388002285111341e+01
-7.4198758417427184e+00
--4.2389349436431971e+01
--1.4881530783069678e+01
-1.0122541702694859e+01
--4.1674146469160519e+01
--1.3010423906642089e+01
-1.0631926220938917e+01
--4.7295179854552465e+01
--1.2492490700354972e+01
-1.0857281531692738e+01
--4.9624927423257269e+01
--1.5267137162414732e+01
-9.6239309819393171e+00
--4.3409067471492726e+01
--6.7122705655908632e+00
-5.7613034156071850e+00
--3.9904529437336684e+01
--5.5051551714544509e+00
-5.5376902673916302e+00
--3.9585027793828502e+01
-1.2705069620338151e+01
-1.8147614750034522e+00
--3.4818347401120398e+01
--1.1410404275378843e+01
-4.9828096014298451e+00
--4.0688894275599367e+01
--3.5134929412849978e+00
-1.9228709466631819e+00
--2.5663528862179646e+01
-1.5080749011499741e+01
--6.4554413074132133e-01
--3.2166737023707455e+01
--6.6082581078233646e+00
-3.1659213424422208e+00
--3.6422094071578037e+01
--9.0914297506441564e+00
-1.0726382096964817e+00
--3.3352465683996300e+01
--2.4332525155060107e+00
--3.0475030752690396e-01
--2.2611693658706901e+01
-3.6900408203432677e-01
--1.5062734337107024e+00
--2.0368506852984659e+01
--1.9871961202977799e+00
--1.7310626793496766e+00
--2.1301990098874491e+01
--7.9537209232409500e+00
--1.9114685411486354e+00
--3.0201623199680711e+01
--4.0062929836361638e+00
--2.4360398462740482e+00
--2.5771557818127320e+01
--8.4558949258571197e+00
--2.4630228871854998e+00
--2.7527059313419254e+01
-1.1145309643331593e+01
--6.2564871188885123e+00
--2.5118339358652491e+01
--6.4535185413766216e+00
--5.0331567730276623e+00
--2.5998831889440517e+01
--7.7030087785262564e+00
--4.8368065894850902e+00
--2.6125783792133099e+01
-5.8807226695397219e-01
--6.1669428485614191e+00
--2.1672188887518711e+01
-7.9904664731315274e+00
--9.4285528186602505e+00
--2.0509464903766979e+01
-7.9904664731315274e+00
--9.4285528186602505e+00
--2.0509464903766979e+01
-6.9016476867788263e+00
--9.2904882367852455e+00
--2.0127687177521128e+01
-2.1702507553039649e+00
--8.4502422736408302e+00
--2.0257176517928158e+01
-6.4538409118092686e+00
--9.6169345596708347e+00
--1.9707541816635725e+01
-5.0133975163361981e+00
--9.5297078510063233e+00
--1.9637189775416438e+01
-6.8404259673236130e+00
--9.9050031643941630e+00
--1.9359770072140599e+01
-5.4422533473458872e+00
--9.6344511283171528e+00
--1.9529576164017918e+01
-1.4863007856206830e+01
-1.9860876032912866e+01
--5.6905133267558867e+01
-3.5820432824400368e+00
-1.8190045979520182e+01
--5.9542769755662214e+01
-1.3722127303636073e+01
-7.5951542405076520e+00
--3.5525914755779638e+01
-1.5548302202989492e+01
-9.5716779306949018e+00
--4.7006457296403234e+01
-7.1104012583102492e+00
-9.4937927323125031e+00
--4.3129815495049620e+01
--9.3926915233134043e+00
-1.1833360375065983e+01
--4.9349244277933344e+01
--9.6718386125004798e+00
-1.1281929150868816e+01
--4.8085345591347235e+01
--8.5527313496391089e-01
-2.9358385688428936e+00
--2.2910810707267718e+01
--1.5894388935093573e+01
-9.0695151178764917e+00
--4.6097392459829919e+01
--7.5297660187119642e-02
-1.9651577035715084e+00
--2.0950677911215816e+01
-1.4391866046411083e+01
--1.0614332868364629e+00
--3.1744808204509518e+01
-1.4047275350381303e+01
--1.4207980184814557e+00
--3.1140591763391388e+01
-5.9463722115993878e-01
-1.9311791353973068e-02
--2.1099587095838100e+01
-5.9463722115993878e-01
-1.9311791353973068e-02
--2.1099587095838100e+01
-1.3481061177963852e+01
--2.3385702400687398e+00
--2.9430150832845275e+01
-1.1193451547898224e+01
--2.8092246035017463e+00
--2.8126155047945204e+01
--3.0710612219300049e+00
--8.4855059939339472e-01
--2.2097605770456099e+01
--1.9260260823521771e-01
--1.3634846080675629e+00
--2.0631829555757669e+01
--2.1824390127064257e+00
--1.3781313521846181e+00
--2.1593571339847511e+01
--8.2217108813436131e+00
--1.2030427675853534e+00
--3.1078071824856224e+01
--7.9783312993160669e+00
--1.4290632013839746e+00
--3.0853458619820223e+01
--7.9783312993160669e+00
--1.4290632013839746e+00
--3.0853458619820223e+01
--9.1875256067867479e+00
--1.2667153131227207e+00
--3.0579445561116305e+01
--3.7288098520996207e+00
--2.3119744686472616e+00
--2.4817650257945516e+01
--7.4415996638697210e+00
--3.0267751462782915e+00
--2.8386316579910993e+01
-2.7886571476152540e+00
--4.2972656286063220e+00
--2.1245726403425941e+01
-1.6544266622424391e+00
--4.8723066670586617e+00
--2.2387085248784089e+01
--7.4938576765988421e+00
--4.3572551867743856e+00
--2.6649646498017642e+01
--6.6206043028374486e+00
--5.6724158975604304e+00
--2.5087643987491354e+01
--7.7615288729645293e+00
--5.8122477242762027e+00
--2.2667553909546264e+01
--8.2235775105618263e+00
--6.0379969973049050e+00
--2.1616169308114458e+01
--2.0885844741609834e+00
--7.8082095756668028e+00
--2.2111394052906572e+01
-2.5139422984876103e+00
--9.3550825713048091e+00
--2.0101003786261654e+01
-2.3707110976065349e+00
--9.4150215466962077e+00
--1.9775410578055194e+01
--2.3655305342555750e+00
--6.9224855885259495e-01
--2.2917058903217075e+01
--2.4840339710481194e+00
--4.0412570242181660e+00
--2.3655683665409668e+01
--6.8653337556237419e+00
--5.4250863871551296e+00
--2.5485630089732350e+01
-7.6688670284145468e+00
--9.1890252774364090e+00
--2.0798590136861595e+01
-6.7939888055808666e+00
--9.5109495137446256e+00
--1.9929424317558531e+01
-5.2978013782572173e+00
--9.5391699795992206e+00
--1.9731142550706963e+01
-4.2654914145957177e+00
--1.0123503392149892e+01
--1.8948197677736086e+01
-7.7598911397192412e+00
-1.8184027553850839e+01
--5.4733091114017263e+01
-1.5568533774634835e+01
-2.7562354152269601e+00
--2.8829335725917662e+01
--2.2172227994443032e+00
-1.3324417763454388e+00
--2.4262251870855316e+01
--1.3513230560084561e+00
--1.7164234868544042e+00
--2.1216077372480793e+01
--2.7286580121578523e+00
-1.3970632874608888e+00
--2.4587970612199396e+01
--6.8581279756515706e-02
--9.0266443862796208e+00
--2.0404487752142458e+01
-1.2822213231883117e+00
-1.7339498252388591e-01
--2.0523123051997064e+01
--2.0337540565527963e+00
--1.7248512119261616e-01
--2.1701644964105075e+01
--8.4784276910597764e+00
-1.3257910383426852e+01
--4.6185988933050801e+01
-7.5211288515235220e+00
-2.8233457140256256e+01
--4.5307066791612577e+01
-9.9811294098795784e+00
-1.1909805223523399e+01
--2.4781533729872148e+01
-1.3313182281309569e+01
-1.6183107913101065e+01
--3.0807190110071492e+01
-1.0266227468461409e+01
-1.0965304011782667e+01
--2.3941894622466183e+01
-1.7491737922836148e+01
-2.9762880990208853e+01
--5.1242404429384543e+01
--1.0481942115703838e+01
-1.9599226726149421e+01
--3.4592134214114765e+01
-1.5653652142893231e+01
-2.7229895791740599e+01
--4.9573473285590929e+01
-1.5752857637210835e-02
-2.3023910288833981e+01
--4.1940381172666875e+01
-9.2795037924091428e+00
-6.8496404095590089e+00
--2.0131459889014458e+01
-1.0578391828826222e+01
-1.0724349073509474e+01
--2.6174578163063039e+01
-1.0679397033839289e+01
-1.0193725619792868e+01
--2.6363107930956822e+01
-9.4422734440662257e+00
-6.3049083358292499e+00
--2.0671211939871288e+01
--7.7815870383189303e+00
-1.9154180124991424e+01
--3.8097927490916497e+01
-9.6234257005966395e+00
-5.4669235611860989e+00
--1.9745020480161877e+01
-1.2012784631006129e+01
-8.7286062586198288e+00
--2.5930219088089533e+01
-6.6948102743468789e+00
-2.3053813712719709e+01
--4.8324032144447749e+01
--7.4284493308579140e+00
-1.8605277347477344e+01
--3.9538795629858413e+01
--6.6226333459616091e+00
-1.8686931037753357e+01
--4.0062860275562748e+01
--6.6226333459616091e+00
-1.8686931037753357e+01
--4.0062860275562748e+01
--1.4353866775520017e+00
-2.0183015894412563e+01
--4.3499837627901037e+01
-9.5946167931266455e+00
-6.1609454209426104e+00
--2.2107664242022320e+01
-9.5532388603389311e+00
-6.0710724894730426e+00
--2.1943677803492072e+01
--7.3640606950355281e+00
-1.8145272828495958e+01
--4.0115038753261750e+01
-9.6291000191589493e+00
-5.7378426674573770e+00
--2.2030123190767810e+01
-1.1231740319761006e+01
-1.1989790175142542e+01
--3.3120876758545919e+01
-9.7538882537195484e+00
-2.3445773340891581e+01
--5.2541860922875536e+01
--9.0955956822864525e+00
-1.7525572971004486e+01
--3.9495394675894026e+01
--8.8869745267937041e+00
-1.7502055889067890e+01
--3.9775188950410211e+01
-7.0952361453590296e+00
-2.0621105648037847e+01
--4.8263281039600052e+01
-9.7694507863479298e+00
-4.1877646286792407e+00
--1.9918488532870093e+01
--8.9846329405655982e+00
-1.7242414281829877e+01
--3.9238367141874626e+01
-1.2646053651327987e+01
-1.2000509110320692e+01
--3.4298613361066216e+01
-9.4864332446736410e-01
-1.9909187585057641e+01
--4.6611903316998877e+01
-1.2710973728408261e+01
-1.1396095350368583e+01
--3.4089161679218037e+01
-5.6983192546936774e+00
-2.1549079469527644e+01
--5.1127680608505344e+01
-1.4297319175445782e+01
-5.8845760016383295e+00
--2.4975761530420087e+01
-8.3917170766031610e+00
-1.9993713747996971e+01
--5.0427199727480449e+01
-3.6839788427661810e+00
-2.0694060311145353e+01
--5.0524690263570747e+01
-1.0066286295523605e+01
-6.2049068515147718e+00
--2.5479450305344280e+01
-9.9561705420032443e+00
-3.6704290759159792e+00
--2.0704015363072276e+01
-1.1781257647833737e+01
-8.6903142494145378e+00
--3.0601317926106013e+01
-1.1928079379769105e+01
-9.7470459501936855e+00
--3.2880366471590285e+01
-1.3318532179494321e+01
-1.0275245063868546e+01
--3.4415414334751965e+01
-1.3673733367689497e+01
-5.9264172845548089e+00
--2.6381940638298492e+01
-6.2956305850382259e+00
-2.0845930355206018e+01
--5.3007789974983581e+01
-1.2942648307678725e+01
-1.0616112531973741e+01
--3.5484603834108036e+01
-1.7217513749437096e+01
-2.0050591652596250e+01
--5.4800048523486367e+01
-1.7217513749437096e+01
-2.0050591652596250e+01
--5.4800048523486367e+01
-1.0163046717611644e+01
-4.5371509906219751e+00
--2.3618502732723535e+01
--2.0348267329273120e+00
-1.7753052289191285e+01
--4.6592692147146082e+01
-1.0152914910724352e+01
-4.2724555038085557e+00
--2.3315735739765749e+01
-1.2244511872214025e+01
-7.2248821382723385e+00
--3.0518856818469409e+01
--1.2618206893184006e+01
-1.5059911049640853e+01
--4.0253193745800665e+01
-1.1670304524843653e+01
-1.0166065005291523e+01
--3.6073358516897024e+01
--1.2477802584081847e+01
-1.4580822201469589e+01
--3.9449744070348409e+01
-1.0381212784282958e+01
-4.1224547937099398e+00
--2.5407312076694406e+01
-1.2483088012387135e+01
-5.6210715060261531e+00
--2.9344343696499756e+01
-1.2455314624475260e+01
-5.5193059038007668e+00
--2.9504262027676628e+01
--7.5857107914140585e+00
-1.4872145394641379e+01
--4.4295239995352723e+01
-1.1572165722256154e+01
-8.4683867064960285e+00
--3.5567601598988048e+01
-1.0368653384311099e+01
-2.3668811844527626e+00
--2.2281477845772134e+01
-1.0675522819680262e+01
-4.2858743072276688e+00
--2.6731142258548704e+01
-4.5562262451043978e+00
-1.6949497630700595e+01
--5.2946454153079600e+01
--6.8702148673598975e+00
-1.4680966605913421e+01
--4.4684169478139516e+01
-1.2694064845908272e+01
-5.3345884587563939e+00
--2.9872207753504824e+01
--8.3519598965879620e+00
-1.4406574177775461e+01
--4.3671941213494677e+01
-1.3833049782230741e+01
-3.6268640846615998e+00
--2.6667735827262522e+01
-1.2633113407397959e+01
-5.1414390584464043e+00
--2.9690620592606496e+01
--8.9472286413154904e+00
-1.4160635234621816e+01
--4.3806207436513418e+01
-1.3459659887490121e+01
-4.0489219520299082e+00
--2.8117754835093312e+01
--1.2813073339880752e+01
-1.3401936498479975e+01
--4.0795537383498065e+01
--1.0241809425658957e+01
-1.3808132540835436e+01
--4.3130682488494507e+01
-6.9911650967689132e-01
-1.5508111136055176e+01
--5.0679680391350622e+01
-1.0735761135013746e+01
-3.4275916569089113e+00
--2.6240764802585360e+01
--1.3955227546693147e+01
-1.3287188576743569e+01
--4.1027387719694815e+01
--1.3084721713334012e+01
-1.2894609904310991e+01
--4.0333816180896896e+01
-1.0056567414094697e+01
-1.7416311479729249e+01
--5.8847396963167704e+01
--1.5316156418154625e+01
-1.2577257163352430e+01
--3.8823422155792706e+01
--1.3567864260111534e+01
-1.2707931256097263e+01
--3.9844596035856242e+01
--1.3443038957199949e+01
-1.2625295234494498e+01
--3.9827768533965852e+01
-1.0574260827710541e+01
-1.9156895735086503e+00
--2.2998920001556769e+01
--1.2951495700438198e+01
-1.2755253718440247e+01
--4.0490557479338399e+01
--1.5006429344326323e+01
-1.1792543839533694e+01
--3.9254753114566036e+01
--3.8193881310760944e+00
-1.4907471401758716e+01
--5.1001879815645275e+01
--1.1461087049905405e+01
-1.2240604927431601e+01
--4.2390941904868939e+01
--1.2628598597150736e+01
-1.2390004147579621e+01
--4.2114630339307254e+01
-1.3142917176227213e+01
-2.5454812626728263e+00
--2.7680035510007702e+01
-1.4126271816832061e+01
-2.5486468411681851e+00
--2.8167085540546339e+01
-1.0881908973823277e+01
-1.7343654016681125e+00
--2.5183809479504486e+01
--1.0394448812035562e+00
-2.8398945562110338e+00
--2.3287035395590440e+01
-7.2217440267668187e-01
-1.5207375710184450e+00
--2.0802016241572655e+01
-1.0823466813942860e+01
-6.9374067385698901e-01
--2.3685644945253546e+01
--1.2527634479021946e+01
-1.1357120251409881e+01
--4.2449635687742088e+01
-3.6945001269111372e-01
-1.4501928082857403e+00
--2.0875198814066959e+01
-4.7731633840641402e-01
-1.2689147679603696e+01
--5.2059078403295942e+01
-9.0516957718335422e-01
-1.1272785785111925e+00
--2.0480167080837663e+01
--1.5762355351435701e+01
-1.0580452676696519e+01
--3.9680631099082149e+01
--1.1997559525576879e+01
-1.1259784666747613e+01
--4.3387814630822646e+01
-1.4315341701556639e+01
-1.5975595544174288e+00
--2.8789002602494641e+01
--1.2954754853771894e+01
-1.1110488295819511e+01
--4.4251533861912648e+01
--2.0833863060961599e+00
-9.9178926085096712e+00
--4.5816544303165735e+01
-1.4392137454615659e+01
-1.0566387534976545e+00
--2.8254211388719511e+01
--1.4723265301488432e+01
-1.0260193047956708e+01
--4.1216630558165868e+01
--1.5993172081101813e+01
-1.0243564958783500e+01
--4.1399425762122256e+01
-1.1345931018450987e+01
--9.8982437832548203e-02
--2.5725007295747741e+01
--2.9766232268498385e+00
-3.1471739468632807e+00
--2.7843998311272305e+01
-1.4775804735960191e+01
-1.1595494816626999e-01
--2.8793621696850416e+01
--2.7763344854265806e+00
-2.9083873293461275e+00
--2.7488667596423678e+01
-1.4330643910938358e+01
-4.0421382267364314e-01
--2.9800978095006197e+01
--1.5536814241389225e+01
-9.4167902093623166e+00
--4.2601947316307033e+01
--3.2791545423868618e+00
-2.6220952738377217e+00
--2.7066674117911401e+01
--3.5157851864265299e+00
-2.4287721694158448e+00
--2.6692560394986067e+01
--1.0729539713237504e+00
-1.5800900359290726e-01
--2.1560296359310303e+01
--5.6374762293112946e-01
-1.8735901708752323e-01
--2.2058423877936981e+01
--2.0638743288419121e+00
-6.3487983724078312e+00
--4.3316070698021370e+01
-2.7180673530472887e+00
--1.0839258317411529e+00
--2.0661292810506879e+01
--7.9711905035238084e-01
--2.4951544249116206e-01
--2.1365842805329180e+01
-8.2464012505337003e-01
--8.9458478722886803e-01
--2.0552219445723232e+01
-4.4600193855370493e-02
--1.3315801375801444e+00
--2.0542168348907719e+01
--1.0220607073225925e+00
--1.0671874338317167e+00
--2.1947850171371869e+01
--9.4347236135726416e+00
-3.2712122960678234e+00
--3.6980376756961356e+01
--7.4383970974097335e-01
--1.9469626067757608e+00
--2.1496207358027458e+01
--1.2606730447026315e+00
--2.1034075892260673e+00
--2.0670008733421628e+01
--8.5300277253542245e-01
--2.6899142296960763e+00
--2.0395582018093272e+01
-1.3427060675410623e+00
--3.3044516904842895e+00
--1.9999171559032327e+01
--8.4264328753543580e+00
-8.0497050786660940e-01
--3.3556530718184057e+01
--4.5740330454816028e-02
--3.0662362324934427e+00
--2.1444518798116579e+01
--3.4649617917797166e+00
--2.1994369452728812e+00
--2.4163505701570369e+01
--3.5259771327152878e+00
--2.1835779022887558e+00
--2.4520786548551062e+01
-1.9774406268941627e-01
--3.5376697359598586e+00
--2.0866467262197180e+01
-1.6454928494609769e-01
--3.3968083657757986e+00
--2.1763997792595667e+01
--2.0646046887804159e+00
--2.9024430290307159e+00
--2.3956715193633190e+01
--9.2954784418325751e+00
--2.2369808309936348e-01
--3.2782754807353172e+01
-5.7089664068289037e-01
--3.8423390577137364e+00
--2.1973671234326254e+01
--7.1123976138053084e+00
--1.0392252354541720e+00
--3.1469482871402601e+01
--2.0601380795808875e+00
--3.4443967462298803e+00
--2.4622285848397812e+01
--1.2421986730770795e+00
--3.8494995211345131e+00
--2.3801257959787424e+01
--1.7906288852009731e+00
--3.6902417577273203e+00
--2.4245438679616278e+01
--8.1235846447545637e+00
--1.8145474741163237e+00
--3.0767592349513986e+01
--7.3546389823395950e+00
--1.8583919934047068e+00
--3.1401247942385087e+01
--9.5370200002801013e+00
--3.0530211932375253e+00
--2.9140351544826650e+01
--7.6608628684887874e+00
--3.7708816114890404e+00
--2.8256073302511137e+01
--7.1393436894981246e+00
--3.9903246098252101e+00
--2.8521571765844161e+01
--6.8674419873073633e+00
--4.7822449462465197e+00
--2.5876603450176880e+01
-9.8530787375976736e+00
-1.4480061664985744e+01
--2.8507348187448272e+01
--1.2841776458007971e+01
-1.9671681968130795e+01
--3.4400963477111198e+01
-1.4127313460153886e+01
-2.8264627407721495e+01
--5.0147050067051303e+01
-1.8577858798133398e+01
-2.9323957262575419e+01
--5.2771127804817368e+01
-1.8369867854594439e+01
-2.9274440490762725e+01
--5.2576081035678733e+01
-2.0009747347863094e+00
-2.0699337012818606e+01
--4.0003467798816786e+01
-1.6986572977119028e+01
-2.7419454389634701e+01
--5.3170957207946216e+01
-9.2730712157068442e+00
-2.4063481881694443e+01
--4.7734955206131318e+01
-9.4581480099589115e+00
-6.4762850213799208e+00
--2.0909068231900282e+01
-2.3523727434102373e+00
-2.1474829336008991e+01
--4.4300128524907990e+01
-9.5945981760902672e+00
-4.6116562402841055e+00
--1.9480148889656981e+01
-5.3857597879979959e+00
-2.2232532417941627e+01
--4.8194295719450317e+01
--9.3212053945665883e+00
-1.7613787188501647e+01
--3.8200950833273879e+01
--1.3117029348913311e+01
-1.6752445453810108e+01
--3.5713385390304865e+01
-4.1660919463800132e+00
-2.0707635556176982e+01
--4.6473834807313686e+01
-6.3149181255570443e+00
-2.0870079017305152e+01
--4.7746276359709128e+01
-1.5977901237658209e+01
-2.4208968803949904e+01
--5.4899336888939203e+01
-1.2726436625605007e+01
-7.4076555790957306e+00
--2.5938844248836151e+01
--9.1938973831121356e+00
-1.7246557074886692e+01
--3.8972137263334702e+01
-7.3734732032361201e+00
-2.0933223486111469e+01
--4.8884836751885956e+01
-9.7212987769727270e+00
-5.7141150537639085e+00
--2.3126601598747236e+01
-7.5236986102806993e+00
-1.9672090813248378e+01
--4.9984972905033160e+01
-7.4291288615922388e+00
-2.0121323559670593e+01
--5.0825115158579472e+01
-6.2612591266118320e+00
-2.0705781609672808e+01
--5.1475191599038382e+01
--1.1731167780971687e+01
-1.6158934163648890e+01
--3.9485391255943021e+01
--3.9569008608339082e+00
-1.7315606666843390e+01
--4.4200851826710135e+01
-1.0148539547553174e+01
-3.6228109687782752e+00
--2.2059561913626570e+01
--7.3494409756027297e+00
-1.6043373432179699e+01
--4.3128407337838603e+01
--3.7888699444812977e+00
-1.6536292233694926e+01
--4.5234377586771984e+01
-1.3028028603093333e+01
-5.2351445374295098e+00
--2.7411100831600280e+01
-1.0423701305265677e+01
-5.3790601739442980e+00
--2.7207448118222811e+01
-1.3874443600067744e+01
-4.0958848490582360e+00
--2.6204856166381006e+01
-1.3108408743272879e+01
-4.8200969267497831e+00
--2.7804575294174896e+01
-1.0457085170590721e+01
-3.8633332415816093e+00
--2.5099616449698402e+01
-1.2028185838081075e+01
-5.9575626345047823e+00
--3.0355005649369090e+01
--1.1464756465944079e+01
-1.3975583727678380e+01
--4.1196401693839100e+01
-7.3249400739331314e+00
-2.0268303117038624e+01
--6.0840220691386129e+01
-1.3071806172507635e+01
-3.4675818397811837e+00
--2.5782909121929880e+01
--5.8488990715535960e-01
-1.6720931682379490e+01
--5.1772497677688122e+01
-1.4983959865924943e+00
-1.5578385779564471e+01
--5.2243301727392932e+01
--1.2471150595201861e+01
-1.3194774392607471e+01
--4.1657595568176269e+01
--1.5163760113719242e+01
-1.2411989866593537e+01
--3.9986367093775868e+01
--1.5285240777247386e+01
-1.2083901721828560e+01
--4.0175326769897175e+01
--1.2578014658086222e+01
-1.2382790518757911e+01
--4.3152986624623750e+01
-1.0914597343552895e+01
-8.8392993888016014e-01
--2.4315704548078564e+01
-1.4067556510102588e-01
-1.2241127553330964e+00
--2.0816384396411831e+01
--1.5421227507980773e+00
-3.3558485057262990e+00
--2.6973376745423103e+01
--2.5428682736936241e+00
-3.5367424222175430e+00
--2.8013662213992088e+01
--3.4591030981951425e+00
-9.2386057868050013e+00
--4.5399389788170240e+01
--1.1383731133524902e+01
-1.0268837622529151e+01
--4.4860015619505795e+01
--1.6137602318192659e+01
-9.6352241457758403e+00
--4.1544203765179326e+01
--1.3605618944911020e+00
-9.1695057943561209e-01
--2.2113347877247719e+01
--6.1891244067764530e+00
-8.1058100825531039e+00
--4.3388575584138742e+01
--1.7383137140770404e+00
-7.0061866038826004e+00
--4.2508592960405394e+01
--3.3210753336696817e+00
-2.5042573859890846e+00
--2.6976211992200877e+01
-3.0138701203023417e+00
--6.1253090347681549e-01
--2.0611479360391396e+01
--1.1668409220531093e+00
-7.4334283868217783e+00
--4.5052198526999589e+01
-4.5109298786904279e+00
--1.1645892631639316e+00
--2.1059613003308090e+01
--3.5297332571536977e+00
-5.5920305822994445e+00
--4.0323059779586615e+01
-2.2378048414820478e-01
--7.1199873793522250e-01
--2.0555234089902090e+01
-1.4043728226293309e+01
--6.2846183472909845e-01
--3.1178263088169579e+01
--7.8874846251189341e+00
-5.6862130148360333e+00
--4.0235004286655283e+01
-7.3198607044190134e-01
--7.9056477926328339e-01
--2.1402148244179894e+01
-1.4543468713284856e+01
--1.3191609344049573e+00
--3.0323579403601677e+01
--1.8552126235268567e+00
--1.0016144784245344e+00
--2.1875361074726186e+01
--4.7052708406298338e+00
-2.2550246731745545e+00
--3.5971721968982138e+01
--5.7075143702665763e+00
-1.3140479384155406e+00
--3.4165223608043071e+01
--1.4314730809211995e+00
--2.2974488542884601e+00
--2.2205878888639507e+01
--2.8605095139058552e+00
--1.9401761433432472e+00
--2.4350271902563566e+01
--9.0309130896097525e+00
-3.4635619360485030e-02
--3.3271173772158527e+01
--2.8691308453085531e+00
--2.7372904779040148e+00
--2.2654718002736292e+01
--6.6763363623552969e+00
--5.3989243200331327e-01
--3.3489593942496022e+01
--9.3414602270488842e+00
--3.9657049088215957e-01
--3.2102195799759571e+01
--7.1628468290380809e+00
--1.0393721667796949e+00
--3.1708132914224983e+01
--3.3743778004592144e+00
--2.6931010820407035e+00
--2.4942639341581160e+01
--2.9336838363674693e+00
--2.7487271186506184e+00
--2.5639806407343293e+01
-1.3230802445159557e+00
--4.3068752177472724e+00
--2.1337337265356712e+01
-8.9915532953163044e+00
-7.7826010411859343e+00
--2.0110515637663404e+01
-9.0843060568437739e+00
-7.7350299414643500e+00
--2.0445224015056031e+01
-9.8249352227904030e+00
-2.4543671782245401e+01
--4.9547058226139562e+01
-9.4551728533751511e+00
-6.8253493398351406e+00
--2.2092441062218047e+01
--1.3603920839513037e+01
-1.6599348632813726e+01
--3.5142505348306670e+01
-8.6303056576718955e+00
-2.2805919124238809e+01
--5.0180879256071137e+01
-9.0517115873165253e+00
-2.3232165896927256e+01
--5.1532633885451474e+01
-9.0517115873165253e+00
-2.3232165896927256e+01
--5.1532633885451474e+01
-1.4241542621930485e+01
-6.4338504699333381e+00
--2.4856640925488986e+01
-7.9434728064192663e+00
-2.1349597641740697e+01
--5.1003156389321667e+01
-1.1070586061189074e+01
-2.2617927905127733e+01
--5.6008597907399746e+01
-1.7761709768742175e+01
-2.1219673494159426e+01
--5.6413240750799574e+01
-1.2631349915504707e+01
-6.4468894530370280e+00
--2.7553064598750176e+01
-1.2082554494940192e+01
-7.0413393384381671e+00
--2.8898264831502658e+01
-4.5458241931412395e+00
-1.8545607603349474e+01
--4.9733735844216390e+01
-4.5565145466882750e+00
-1.8680851759865909e+01
--5.0465697368214350e+01
-1.0233615786633125e+01
-5.2765324525944051e+00
--2.5492508802866990e+01
-1.0280315620518506e+01
-5.0495441829671970e+00
--2.5228328554613963e+01
-1.0678330443115902e+01
-1.9857419291803282e+01
--5.4912444547774172e+01
-1.0224190065498229e+01
-2.8563033547173360e+00
--2.2121898415886641e+01
--9.4164349473043440e+00
-1.4937954460117401e+01
--4.2323440089578753e+01
-5.6027170853188570e+00
-1.9609400880785898e+01
--5.8867802632802110e+01
-1.2591428460563746e+01
-4.3843350459766732e+00
--2.7651686162087636e+01
--1.2104230432923366e+01
-1.4124299691923703e+01
--4.2006089238250439e+01
--1.2047550806734945e+01
-1.3776554456116527e+01
--4.1118743551800108e+01
-1.3376763313437584e+01
-3.9430690719364434e+00
--2.8150790859283568e+01
-1.2814771138568876e+01
-4.6484588020691309e+00
--2.9596137764422700e+01
-1.3896906054074329e+01
-7.3464073129558614e+00
--3.6544908067422519e+01
--1.2450015791602388e+01
-1.3269108041025012e+01
--4.1365712488179163e+01
--1.3876947014463697e+01
-1.2805233412837504e+01
--4.0039652789337332e+01
--6.7087231404298846e+00
-1.3142450483285749e+01
--4.6908453665801581e+01
--4.5168748918896295e-01
-2.0152366854165220e+00
--2.1379765278915887e+01
--4.5168748918896295e-01
-2.0152366854165220e+00
--2.1379765278915887e+01
-1.4202738708206091e+01
-1.8092995838199444e+00
--2.7756057712950906e+01
--4.7161553279850360e-01
-9.0963766231100873e+00
--4.4361760443899513e+01
-1.0391230490163117e+00
-5.0756484994986639e-01
--2.0260132590926901e+01
--3.2841134497653313e+00
-2.9716562310404822e+00
--2.7647273113813235e+01
--1.8393701877683692e+00
-6.6682342378851587e+00
--4.3791733139178156e+01
--3.1547282715390819e+00
-3.5217428585850252e-01
--2.3953717993482666e+01
-8.6742491489205864e-01
--2.8291223091062814e+00
--2.0350179133378706e+01
--7.6439332846478196e+00
--4.5327875883171231e-01
--3.2346173458611638e+01
--8.4452733227937049e+00
--7.6992959431600549e-01
--3.2086576149806895e+01
--2.5585953904799146e+00
--3.5360400579438207e+00
--2.4902336736139581e+01
--1.1373306577581458e+01
--1.3988004846988844e+00
--3.1040817063611264e+01
--5.0893272867058414e-01
-2.4043093878770968e+01
--4.0583522954971912e+01
--5.0893272867058414e-01
-2.4043093878770968e+01
--4.0583522954971912e+01
-1.1191851944408656e+01
-1.2427398643139909e+01
--3.3841842114977041e+01
-1.3045848779134822e+01
-2.4383133824344068e+01
--5.6372927978156845e+01
-1.2180268319098495e+01
-2.3827077653300361e+01
--5.5438515187614748e+01
-6.0742199639971490e+00
-2.1258070566765518e+01
--5.1367274491532918e+01
-1.0121556869979408e+01
-2.0617898399844709e+01
--5.1525305027927580e+01
--2.2237230324916948e-01
-1.7933098574461219e+01
--4.7696665852190080e+01
-4.0392856320560924e+00
-1.8151295707661738e+01
--4.9780821645781629e+01
-1.3093141766347067e+01
-5.6088522170606607e+00
--2.6943329175632357e+01
--6.4968812978667648e-02
-1.8019834150295932e+01
--5.1209315659629652e+01
--5.3780263638657235e+00
-1.5306171019245662e+01
--4.5615290116728055e+01
-1.2523048695451337e+01
-4.8333709950741159e+00
--3.0834356279754811e+01
--1.5325293411717137e+01
-1.2280222818212586e+01
--4.0267447131978166e+01
--1.2170062035609389e+01
-1.1390541286114637e+01
--4.4448750570935573e+01
--4.1261464717984425e-01
-9.0926755654388547e+00
--4.5280379326392939e+01
-1.3587924915281661e+01
-1.2636092975950788e+00
--3.1063404762737665e+01
-1.4354351362527749e+01
-3.1621256381190116e-01
--2.9584829788033392e+01
-1.4354351362527749e+01
-3.1621256381190116e-01
--2.9584829788033392e+01
--1.2990919780700644e-01
--3.4753140537896388e-01
--2.0934787952483337e+01
-1.4225440767711303e+01
--7.7036822218967682e-01
--3.0636867009193619e+01
-1.4488086539195900e+01
--1.0351025647746239e+00
--3.0463073001781332e+01
-2.9166939692546565e+00
--4.0945153033498602e+00
--2.0882936374496321e+01
--9.5336986760485303e+00
--1.5655481603281964e+00
--3.0400265821197028e+01
--9.2927625989957967e+00
--1.6934734956073703e+00
--3.1308004198376604e+01
--9.2927625989957967e+00
--1.6934734956073703e+00
--3.1308004198376604e+01
--7.5620133807071497e+00
--2.1130063389122027e+00
--3.1115104579123710e+01
--5.7627732331550474e+00
-2.2306661289362292e+01
--3.8455827807531250e+01
-3.7760176044366571e+00
-1.9512913321847709e+01
--5.1372867860795878e+01
--9.6545758271574265e+00
-1.3680415994995498e+01
--4.3988372922393438e+01
-1.0835094657590330e+01
-2.2087222296882540e+00
--2.6287949843358589e+01
-3.2485804817488142e+00
--6.2172218786033817e-01
--2.0711714382854673e+01
--3.7474106825097437e+00
--4.4237222594913633e-01
--2.7738332833956562e+01
--1.6733831860104211e+00
--3.8259503694477774e+00
--2.4212027339186282e+01
--7.8906017787677936e+00
--2.6709305147429414e+00
--2.9484118571903771e+01
-1.3090402187340118e+01
-5.8488506572357046e+00
--2.7193936766598448e+01
-2.7182622208422598e+00
-1.7901046018535318e+01
--4.9511001302348774e+01
-7.4967947693000178e-02
-8.2660921392021780e-01
--2.0670651191316995e+01
-1.4973061250390225e+00
-2.7146392101816252e-01
--2.0302694029989933e+01
--2.9181582186850434e+00
--7.2040238156617331e-01
--2.2424609082625992e+01
--2.1361660151672139e+00
--1.4366796729679754e+00
--2.1525085308995138e+01
-4.5139014980125394e+00
--3.2303924316679353e+00
--2.1163708796675870e+01
-2.0438915265066315e+00
--4.6899277963360220e+00
--2.1272073434662939e+01
--4.4514214854045908e-01
--4.0996836675448494e+00
--2.1724604812796027e+01
-9.3574134164403677e+00
-7.9405530810656124e+00
--2.3366342369405498e+01
-8.7077488659851099e+00
-2.0163358431441146e+01
--5.0054891419686243e+01
--8.7368734069142686e+00
-1.4573414128363428e+01
--4.3706905365306390e+01
--1.1415921878563888e+00
-1.0297829726390185e+01
--4.6786048046524478e+01
-1.4398904629747465e+01
-3.5648595763306656e-01
--2.9005296046674548e+01
--7.5504729064172640e+00
-1.8587490972862362e+01
--3.9451694566445326e+01
-1.5292388701089211e+01
-1.6627856841803169e+01
--4.3759137783314635e+01
-6.9477655172224217e+00
-2.2764820748547788e+01
--4.6770984055873086e+01
-1.6859949245637321e+01
-2.5423905070780169e+01
--5.2740833807411498e+01
-1.0064051011615662e+01
-2.6335463493530189e+00
--2.1882493054500916e+01
-6.4828082296189500e+00
-1.5836891981477585e+01
--5.2825611099421529e+01
-8.9358871991530915e+00
-2.4363063555519997e+01
--4.7403552074594479e+01
-1.7904805266478320e+01
-2.5601040701468168e+01
--5.2441420521555777e+01
-5.6994158003903301e+00
-2.2781926504702138e+01
--4.7308149870919813e+01
-5.6272771150519016e+00
-2.2146087295916338e+01
--4.8068735909070064e+01
-1.2421292205289690e+01
-2.4091247519261987e+01
--5.2533893110867460e+01
-1.3359927919056810e+01
-2.3732201964494475e+01
--5.3254184224283975e+01
-1.7959197595767857e+00
-2.0669064643292678e+01
--4.5959861549251919e+01
-1.2039022665181458e+01
-2.1871282885439321e+01
--5.0597370656763538e+01
-1.2408677181063496e+01
-5.3653150385779442e+00
--2.4520299115699675e+01
-1.2256256436593532e+01
-2.2789876524554920e+01
--5.3510807597968018e+01
-1.4575269764841360e+01
-2.1738418492560655e+01
--5.6439773819053372e+01
-1.1385792766355365e+01
-9.9854991270630418e+00
--3.5185009029333848e+01
-1.2581638073230856e+01
-1.0388433189928946e+01
--3.6604767420906747e+01
--7.4306958107416987e-01
-1.2621139907732903e+01
--3.6844461432563165e+01
-1.9397963890634207e+00
-1.7947856028245337e+01
--4.7796582318227095e+01
-1.3702926119889407e+01
-2.0654961752448098e+00
--2.3871071586358831e+01
-1.4592978750970552e+01
-2.2018807338378830e+00
--2.4906017723446048e+01
-1.4683701983805229e+01
-2.0999656200215742e+00
--2.4714253797165192e+01
-1.3749075864038820e+01
-1.7427305973861931e+00
--2.4499093115405174e+01
-1.4059872096570722e+01
-1.2348215230764006e+00
--2.3768964039529980e+01
-1.2599488818586806e+01
-4.2599723306150317e+00
--3.0319377908062513e+01
-1.2495125000926381e+01
-4.2578488294266092e+00
--3.0524885823412738e+01
-1.2944046634926316e+01
-3.3776966534171291e+00
--2.9875311629529932e+01
-1.3908558917697910e+01
-1.0733628252667244e+00
--2.5343500274420869e+01
-1.2783882264566463e+01
-3.4085555783782304e+00
--3.0414523588083874e+01
-1.4091764805328143e+01
-3.3850692815923972e-01
--2.5938499815571188e+01
-1.4777388336507610e+01
-3.2496059528950033e-01
--2.6660182804863773e+01
-1.4176881892408959e+01
--6.4215498577293612e-02
--2.6315463434624906e+01
-4.4427457184134050e-01
-2.6461673718706130e-01
--2.0599140010535219e+01
-4.4427457184134050e-01
-2.6461673718706130e-01
--2.0599140010535219e+01
-1.4800229395922832e+01
--2.5018827011718409e-01
--2.7289350989829892e+01
-1.4803327885102849e+01
--3.1527961299510537e-01
--2.7244616779856891e+01
-1.4713175734406068e+01
--3.6273854339711403e-01
--2.7708387022804430e+01
-1.4845803121796777e+01
--7.5074419781330393e-01
--2.7808544377948230e+01
--5.6355538973770847e-01
-7.1682472070662797e+00
--4.2135172629854374e+01
--1.2878698529868355e+00
-6.2920695049314235e+00
--4.1152718204714091e+01
-1.5056207893966622e+01
--2.6665728461958484e+00
--2.7247870337578714e+01
-1.3243724573387222e+01
--2.6883658433866535e+00
--2.8940774797922952e+01
--6.1217796310129788e+00
-5.2023400691459427e+00
--3.9486594088934503e+01
-1.2576629481135186e+01
--5.7085948120899594e+00
--2.5059014160963287e+01
--1.3835824204561122e-02
--3.7250313972538640e+00
--2.1292615213161717e+01
-1.1266474831186802e+01
--7.0564531414782445e+00
--2.3279993210964587e+01
--3.9421679468824955e+00
--7.4223585299184123e+00
--2.2432423958122186e+01
-1.1174282379807746e+01
-8.6175169640542855e+00
--2.5377185592215625e+01
-7.9634737622507519e+00
-2.1740892125779133e+01
--4.8065224136366368e+01
-1.7145108096562886e+01
-2.3094745211839587e+01
--5.3754432284631733e+01
-1.8127664255194269e+01
-2.0513451777127536e+01
--5.6565022882510924e+01
-1.2729565301067849e+01
-4.0662282948619328e+00
--2.5907170229457048e+01
-1.3043748121129687e+01
-9.5614581073210196e+00
--3.6797775906696486e+01
-1.1947101707912854e+01
-5.6630193835794174e+00
--2.9193273755939874e+01
-1.2082182382077516e+01
-5.1881194353898632e+00
--3.1216637894952559e+01
-1.4330858470981914e+01
-7.7538847637132235e-01
--2.3190530518995203e+01
-1.2564139412011281e+01
-4.4763118820078285e+00
--3.0184959509156290e+01
-9.6962244933705417e+00
-1.4677241795134890e+01
--5.0912891920937284e+01
-9.7825045474375170e+00
-1.4973412444475349e+01
--5.1353969937422669e+01
-1.3753091561985787e+01
-9.8184569141451339e-01
--2.6322440873916392e+01
-1.3918654974979802e+01
-5.9281616760611999e-01
--2.6214679735440534e+01
-1.4384756610995435e+01
--3.3699072432733973e-01
--2.5619942479430879e+01
--5.3186474290889629e+00
-1.3543978969456621e+01
--4.8706592684205837e+01
-1.4240814938480753e+01
--2.2275485500014966e-01
--2.6529003646241584e+01
-1.4717136844617738e+01
--1.9793316022203000e+00
--2.7768566688550393e+01
-1.4980499759406229e+01
--2.6289653007018647e+00
--2.7433849710623925e+01
-1.4964749538030254e+01
--2.8493811591682845e+00
--2.8127683034091174e+01
-1.4787554599514396e+01
--2.6019264062709393e+00
--2.8927027733661681e+01
-1.5401418770724714e+01
--3.5136631421031179e+00
--2.6988483865663426e+01
--6.7279807060881742e+00
--4.6029007632540608e-01
--3.2047897919688417e+01
-1.7378417677000884e+00
--5.2952205191810133e+00
--2.2045909754648047e+01
--8.8475411446683925e+00
--1.1896569061251503e+00
--3.0734646426797923e+01
-3.9026141808945298e+00
--9.0693945714073418e+00
--2.0636779438429130e+01
--6.5724116836129109e+00
--5.4074983861184558e+00
--2.5224487635397153e+01
-4.9831784270961341e+00
-2.3556876527224173e+01
--4.5711141760405098e+01
-8.9177072165569040e+00
-2.3489480999239603e+01
--4.8445525518313346e+01
-6.7807279786381391e+00
-2.2645952421367461e+01
--4.8616215455041726e+01
-1.2466846662701258e+01
-2.4148968004910579e+01
--5.2294885918227791e+01
-1.2512295479013689e+01
-6.8711800310504998e+00
--2.6885015962844591e+01
-1.3197196595603138e+01
-5.7311807323749466e+00
--2.5467177201199402e+01
-1.8867856003835119e+01
-2.1942651373365930e+01
--5.5096734965725283e+01
-1.2021994278946222e+01
-5.8406583909013703e+00
--2.6573510816622452e+01
-1.3443525847065841e+01
-2.7253590098167395e+00
--2.3842903017165021e+01
-1.3349145734529788e+01
-8.4720426402805682e+00
--3.4746254059098682e+01
-1.3475861942510276e+01
-2.5479588225326437e+00
--2.4156535146880923e+01
-5.3570902832763849e+00
-1.8208011852978792e+01
--5.3786123188476516e+01
--1.1354721095604821e+00
-1.6499450617721884e+01
--4.8272747044729208e+01
-1.4202779674840492e+01
-8.7671039881449087e-01
--2.3404296426617691e+01
-1.4197733830721083e+01
--2.1797259065146096e-01
--2.6592696399088318e+01
-1.4926462580530096e+01
--5.8937431528385498e-01
--2.7149334307330093e+01
-1.4585303626750523e+01
--5.0071537405495203e-01
--2.8636700970397069e+01
-1.4451321552991445e+01
--7.6046385922906801e-01
--2.9701919126779753e+01
--1.2115774883678625e+00
-7.0791866884626797e+00
--4.2032789455293617e+01
-1.1848023281386428e+01
--7.0037650200524935e+00
--2.3318714153838403e+01
-1.1126592794311488e+01
--7.0958764351512089e+00
--2.3246672681697294e+01
--8.3352449111878375e+00
--5.7610114124351486e-01
--3.1438212220750920e+01
-2.5912305885165487e+00
--8.6267316621002621e+00
--2.0953570108103730e+01
--5.5893490265694599e+00
--7.2562470332799185e+00
--2.2640718011194814e+01
-9.0722492318368460e+00
-2.4185334334846434e+01
--4.7917369762207883e+01
-1.1984966091746703e+01
-1.2514622216906586e+01
--3.2805578923840713e+01
-1.2294902315632452e+01
-7.0396938739418990e+00
--2.7492557723017224e+01
-1.1839472058086773e+01
-5.9193538996641548e+00
--2.8066064787545294e+01
-2.4683495739371578e-01
-1.8293204673666938e+00
--2.0786388054256580e+01
-1.3926748417413446e+01
-8.3921485025315590e-01
--2.5824759298931451e+01
-1.5510891452483982e+01
--2.0646871505500783e+00
--2.6950277797850756e+01
--1.7092578780804684e+00
-6.3126942037059974e+00
--4.1395082285612894e+01
--6.4371300576570372e+00
--7.5209154723578061e-03
--3.2523095269502470e+01
--9.3383969741599717e+00
--3.6426374796538941e-01
--3.1771871664911874e+01
-6.0475399250648767e+00
--8.9540270024796325e+00
--2.0638129717402233e+01
--2.3140311094510166e+00
--6.1421218470122687e+00
--2.3381593452292048e+01
-5.4106529203028781e+00
--9.5433750641754109e+00
--1.9982841452721434e+01
-5.3539052083476752e+00
-1.7657776675058859e+01
--5.3690424631293318e+01
-7.3301278110407084e+00
-1.3002821267624025e+01
--4.9072681003336442e+01
-1.4343845899259204e+01
--2.5726726454255350e-01
--2.5415272828253649e+01
-1.3765753225282563e+01
-2.4217415836117129e-01
--2.8910740665662363e+01
--1.9219755499346847e+00
-1.1440005280604753e+01
--4.7968624530200579e+01
-6.2389986489038280e+00
--9.1682049113815562e+00
--2.0508916524734349e+01
-1.3479782638362511e+01
-2.6313000340606321e+00
--2.8523501944297955e+01
-1.2614760879814439e+00
-1.8172922739102525e+01
--4.7639008271667038e+01
--1.7962470272749655e+00
--5.1604483004745907e+00
--2.2797914540115073e+01
--7.3433980557541938e+00
--4.5525118344512032e+00
--2.6722032251842748e+01
-4.7595261195789460e+00
--9.5867897125562482e+00
--1.9914675672232324e+01
-1.3701929332318814e+01
-2.1667348070912236e+00
--2.4166909348545399e+01
-8.3708322232344621e+00
-2.2333990359944462e+01
--5.0653201676220768e+01
-3.0844156819864481e+00
-1.9656236157156759e+01
--4.8941575308074114e+01
-3.0844156819864481e+00
-1.9656236157156759e+01
--4.8941575308074114e+01
-1.2428877665922473e+00
-1.9002189917927439e+01
--4.7727810020628830e+01
-1.3339054477283875e+01
-7.6647097141944469e+00
--2.7171148337265972e+01
-9.4770961766116657e-01
-1.5593574602572019e+01
--5.1072255766825364e+01
--6.8818154545349657e+00
-1.3977593176251458e+01
--4.4469721904757570e+01
--8.1731640088793966e+00
-1.4155786907982447e+01
--4.4560042130872255e+01
--1.2058969360267357e+01
-1.2648926356954838e+01
--3.9137780469475295e+01
--6.9693618579334125e+00
-1.3690495651859681e+01
--4.4504415987462870e+01
--1.2819728224953078e+01
-1.2268097396011894e+01
--3.8603239795793833e+01
--1.4877254510070168e+01
-1.2938674905544991e+01
--4.1036340613323425e+01
--1.2129104538421154e+00
-1.4265406507392152e+01
--5.1497596117731192e+01
--1.0846449718649738e+00
-1.3763674103988766e+01
--5.0959925540085919e+01
--1.0005907690310535e+01
-1.2128653168070471e+01
--4.3149242967355114e+01
--1.0776162427715658e+01
-1.1897223889408636e+01
--4.2168740932539983e+01
--1.3141192885482150e+01
-1.2303791944919626e+01
--4.3157345179678572e+01
-2.1464406532843974e+00
-1.2523352660987403e+01
--4.9485883537233356e+01
--9.7854938445596638e+00
-1.1677772945027394e+01
--4.4088470382287014e+01
-1.3248775086323837e+01
-6.0687387935718080e+00
--2.8209367563475038e+01
--1.4341304766947831e+01
-1.0833332239538192e+01
--4.1067514191170602e+01
--1.4065802452725116e+01
-1.0826932529580635e+01
--4.1140777978351139e+01
--1.2425371573134500e+01
-1.0747035532696486e+01
--4.1796751642126473e+01
--1.2425371573134500e+01
-1.0747035532696486e+01
--4.1796751642126473e+01
--1.2442697216078244e+01
-1.0657491939456797e+01
--4.1870981049619488e+01
-1.4197458202166800e+01
-7.2484979935706688e+00
--3.7066929867571901e+01
--1.3189599911309770e+01
-1.0375057982260699e+01
--4.1741579963689986e+01
--1.3199933791359431e+01
-1.0287344626460877e+01
--4.1679183920797584e+01
--1.7298430499772444e+01
-1.0634431850233932e+01
--4.1549201056093985e+01
--1.3296568948434242e+01
-9.7662334303826359e+00
--4.2711509569558451e+01
--1.6406977720881923e+01
-9.9812373488817379e+00
--4.2454084097659774e+01
--1.6609510692091760e+01
-9.8688885706894318e+00
--4.2501701112986147e+01
-1.4663067752939371e+01
-3.7794318631450086e+00
--2.6456601425244131e+01
-1.4564734722587835e+01
-3.7638503123355123e+00
--2.6667139768437696e+01
-1.2961339713609329e+01
-4.1883328807711910e+00
--3.0733644032180383e+01
-1.4981736538861663e+01
-3.2766090868156272e+00
--2.6148761693495409e+01
-1.3015284121005985e+01
-4.0994620643433315e+00
--3.0665668370516695e+01
--6.6037830874096528e+00
-7.5049400438344112e+00
--4.2068980517997687e+01
-1.4962115164362620e+01
-3.2124568658540644e+00
--2.6265930157501298e+01
-1.5099683496660129e+01
-3.0967391925831977e+00
--2.5964625376321443e+01
--1.4751647538098915e+01
-8.2385561332161092e+00
--4.4133821227665294e+01
-1.4935417785943157e+01
-3.0428934764428477e+00
--2.6368643880349850e+01
-1.4528787795219346e+01
-2.8985458280526073e+00
--2.7250804960388251e+01
--1.3731797786706309e+01
-7.0186505250905338e+00
--4.2058135699085639e+01
-1.4936574766259600e+01
-2.4429172634243170e+00
--2.6668153195201153e+01
-1.3784734109266784e+01
-2.3631514332386656e+00
--2.9963194423388273e+01
-1.4522734908834193e+01
-1.9655961779436091e+00
--2.7923370461693590e+01
-1.4273712267410485e+01
-1.7483444460635305e+00
--2.9075460757293754e+01
-1.5200614709630527e+01
-1.3799459224442561e+00
--2.6812597360120190e+01
-1.3148472407606091e+01
-1.5412139369665325e+00
--3.2971051031935424e+01
-1.2787285272106489e+01
-1.6166976910002044e+00
--3.3832099413860796e+01
-8.7440747748588232e-01
-1.7654992237668432e+00
--2.0866757261245052e+01
-2.5355187440474460e+00
-1.5501609334530075e+00
--2.0694482113383444e+01
-1.5174708532173032e+01
-8.9333116794691936e-01
--2.7407658312174675e+01
--6.2737697195001746e-02
-1.6192150179242584e+00
--2.1161356293698990e+01
-1.5213746013270478e+01
-6.2837465563054506e-01
--2.7580491693474119e+01
--1.5171278151874803e+00
-1.6463930271058695e+00
--2.2627752992804798e+01
-1.1749799980764515e+00
-1.2214673935428659e+00
--2.0522365803573599e+01
-1.1749799980764515e+00
-1.2214673935428659e+00
--2.0522365803573599e+01
--1.4962424895143042e-01
-1.1257116636210596e+00
--2.1014529848555632e+01
-1.3641991699980617e+01
-1.5289224961586279e-01
--3.2147676532430914e+01
-1.5835582277268452e+01
--6.8565443173063401e-01
--2.7032380358396363e+01
-2.1349895367413065e+00
-3.1270194445386401e-01
--2.0311109734291609e+01
-1.4322473302062916e+01
--9.1085118119045327e-01
--3.0950929001745589e+01
--6.8186081125842604e+00
-4.3629192334779238e-01
--3.2931426645115380e+01
--1.3192994962094971e+01
-3.0714342309274800e-01
--3.3285668025290946e+01
--1.7252296497737967e+00
--5.0650352443735780e-01
--2.1623275080333602e+01
--6.7831411626258853e-01
--1.0672835489885275e+00
--2.0874873250744706e+01
--2.3503391928301767e+00
--1.1145834688481455e+00
--2.1870927312387664e+01
--9.6043606775673762e+00
--1.1581486988844079e+00
--3.0587102032530463e+01
--9.6095665643325763e+00
--1.1864035374339084e+00
--3.0410306015407247e+01
--2.4456652733702526e+00
--1.2873893710033533e+00
--2.1667931227188948e+01
-1.3558439254773905e+01
--3.5225820366156961e+00
--2.8246017692785291e+01
-2.6615239889592819e+00
--2.0255709534034594e+00
--2.0292530451211455e+01
--1.2366776849783780e+00
--1.9199891126392359e+00
--2.0838359080490630e+01
-3.1220625079348121e+00
--2.8895761859569431e+00
--1.9745328928574086e+01
--6.0206945145280599e+00
--6.6649236565535528e+00
--2.2793229515847475e+01
-5.2579421746112942e+00
--8.0774896700739252e+00
--2.1236543247935487e+01
-5.4300300817811129e+00
--8.1686872549163532e+00
--2.1080472516738368e+01
-5.1112991661622127e+00
--8.2022404765296280e+00
--2.0990721830637387e+01
-4.5178969146489489e+00
--8.2920031783100647e+00
--2.0845783446557913e+01
-3.4335178936198880e+00
--8.4579421887585919e+00
--2.0497246457492174e+01
-2.3066677703012268e+00
--8.5388991284688771e+00
--2.0308680821039065e+01
-4.6542145837861701e+00
--8.8278584545738035e+00
--2.0053661525941376e+01
-4.0995835313038524e+00
--8.7950060746164009e+00
--2.0071095235211278e+01
-4.0995835313038524e+00
--8.7950060746164009e+00
--2.0071095235211278e+01
-3.2928534779966174e+00
--9.1201921029688098e+00
--1.9503583254607872e+01
-1.2768015545955476e+01
-8.0653486890912145e+00
--2.8307897483758509e+01
-4.6089476335593389e+00
-1.6918738790359438e+01
--5.6178814583076161e+01
-1.4523131758246142e+00
-1.5332558288472013e+01
--5.3403581021408904e+01
--1.5614828367938481e+01
-1.3081925232029830e+01
--4.0616368041719710e+01
-8.1342323240948584e+00
-1.4978242503132970e+01
--5.4376298671790053e+01
-2.6984287546107852e+00
-1.5017467982647187e+01
--5.3234627236362527e+01
--4.7995764035210464e-01
-1.4683288103198436e+01
--5.2201891397758537e+01
-6.2777889316596169e-01
-1.4282548563494647e+01
--5.1666345099129906e+01
--1.2354091973196587e+01
-1.2656590485863921e+01
--4.2079928824151843e+01
--1.3885571231849386e+01
-1.2108037950129313e+01
--4.1765527511134472e+01
--1.0080175525328148e+01
-1.1816773357028707e+01
--4.5477601204948783e+01
--1.0080175525328148e+01
-1.1816773357028707e+01
--4.5477601204948783e+01
--1.6999395268331522e+01
-1.0763635715497893e+01
--4.1795895502284814e+01
--1.3756177567900696e+01
-1.0257450089989293e+01
--4.2649427736878728e+01
-1.3861169095434812e+01
-4.1031851431624782e+00
--2.7921170892475651e+01
-8.9706186875809346e-01
-7.6416872635458306e+00
--4.2782349813639307e+01
--1.5958426796224282e+01
-8.6107509673775660e+00
--4.4106869464684323e+01
--1.5367776839836123e+01
-8.5026620342444499e+00
--4.4544461964081790e+01
--1.0670174349130940e+01
-7.8189664406863812e+00
--4.2857192761400391e+01
--1.4693688398287110e+01
-7.3302581367397348e+00
--4.3198734675488566e+01
--1.6705833299379407e+00
-3.3548317886439061e+00
--2.6661055649558456e+01
-1.3189739479368477e+01
-1.0593448764581557e+00
--3.3289922110393270e+01
-3.3800983500812554e+00
-1.0108835824507914e+00
--2.2208944071228235e+01
-6.0713556683949514e+00
-4.3665990422216716e-01
--2.3937179284928177e+01
--1.4248719900713779e+01
-2.2740363388509977e+00
--3.6138167505373374e+01
-4.2498584791415741e+00
--2.2227049795027421e-02
--2.2045124825935712e+01
--6.2024490503385961e+00
--5.1305726945875138e-02
--3.1910928781169385e+01
--1.4519537494946743e+01
-2.1293001901234246e-01
--3.3455396855584226e+01
-1.3312440904737372e+01
--2.4694681138389565e+00
--2.9622569628587598e+01
-5.8525870900849633e+00
--1.7995909737208287e+00
--2.1368855494232406e+01
--9.7925581083840783e+00
--1.0380132726360254e+00
--3.1042118400160621e+01
-5.2788438747165181e+00
--2.2848489537549521e+00
--2.0681557220010742e+01
--2.0251973135784951e+00
--1.8131702123245843e+00
--2.1217910864238469e+01
-1.0653054313013348e+00
--2.4175787869519572e+00
--2.0934908710435298e+01
--2.8878721547831137e+00
--3.3069630691022094e+00
--2.3522271011100621e+01
--3.6225569235619024e+00
--4.8303033747084205e+00
--2.3996432213837622e+01
-4.8020275408077131e+00
--8.7708736304680404e+00
--2.0192193435499675e+01
-4.1822821574373243e+00
--8.8892369755576013e+00
--1.9961262592667047e+01
-7.4323584972333920e+00
-1.6795967228962727e+01
--5.6235789100513053e+01
--1.5137278180164252e+01
-1.3550031568907313e+01
--3.9972300469440682e+01
--3.4190244244066170e-01
-1.3845258583827345e+01
--5.1036429744611880e+01
--1.5463508106759514e+01
-1.2402217817510477e+01
--4.1216068188209007e+01
-6.7667014534328223e+00
-1.2545147412059579e+01
--5.0753222414941362e+01
-5.6291518115142027e+00
-1.1603313584927550e+01
--4.9665777343047459e+01
--4.8880777339938355e+00
-1.1170092207079970e+01
--4.7353980882534962e+01
--1.3910528093932276e+01
-1.0284137183186122e+01
--4.2586623894829756e+01
--1.5878351280228015e+01
-1.0321433709077912e+01
--4.2877746291886488e+01
--1.8281315032990726e+00
-9.4893469272191382e+00
--4.5021414331712343e+01
--6.1355612602523619e+00
-9.7537855407346861e+00
--4.5208439347078723e+01
-2.2723698767287206e+00
-8.6194766734651278e+00
--4.4479139016969953e+01
--1.5948625932483592e+01
-9.4419853688381785e+00
--4.3870742148344661e+01
--5.4153733390923628e+00
-7.1591171589660796e+00
--4.1812137082931521e+01
--1.5857187113427091e+01
-7.9101073730250135e+00
--4.3865149003805818e+01
-4.8103032302505957e+00
-1.1334024170205192e+00
--2.3406620622763125e+01
-3.1661137007490709e+00
-9.7156809335494454e-01
--2.0726609178183722e+01
--1.2431941297488764e+01
-2.9091006371413441e+00
--3.6723024950235860e+01
-3.3553514423560000e+00
-4.7026471320366753e-01
--2.2032920749224878e+01
--1.1926303585176179e+01
-1.9011577971874880e+00
--3.5394912261322808e+01
--6.2777693958395222e+00
--1.9183974775789320e-01
--3.1670783797950818e+01
-3.4449684107948557e+00
--8.0160984720947004e-01
--2.2223663395350300e+01
--2.3380647676527071e-02
--6.7109556919648283e-01
--2.1449016844704747e+01
--9.9870607540342959e-01
--8.7478946323734930e-01
--2.1488994372443248e+01
-1.7181818699938931e+00
--2.9221544856818200e+00
--2.0710492430117345e+01
--1.1545841203609795e+01
--3.1635529566447067e+00
--2.8175922356737370e+01
-1.8683016959912430e-01
--4.0565681076438311e+00
--2.1858317982182403e+01
--1.2899265148045785e+01
--3.9401623280296683e+00
--2.7147698991560318e+01
-3.8901804662718105e+00
--8.7312660204271282e+00
--2.0119772703687001e+01
-1.6268554736114769e+00
-1.4950235266648852e+01
--5.2947990932920980e+01
-1.7086266559077761e+00
-1.4520487772845959e+01
--5.2102977393664844e+01
-1.7086266559077761e+00
-1.4520487772845959e+01
--5.2102977393664844e+01
--1.4945595981012673e+01
-8.8486435603640494e+00
--4.4904809725417365e+01
--1.5011657530254842e+01
-8.2040816143621562e+00
--4.4482868538047448e+01
-1.4962978401899786e+01
-6.9224307719610789e-01
--2.8237428051213044e+01
--1.2070304391625104e+01
-2.6635953926036509e+00
--3.6227646573330318e+01
--3.4938441372432298e+00
-1.3096243582325315e+00
--2.5052184857998693e+01
-4.6910518989000165e+00
--5.7238705319403094e-01
--2.3454768231396134e+01
--1.0656121069074809e+01
--2.7585973540363448e-02
--3.2432613957728670e+01
-5.0266685480206439e+00
--1.0857730495927149e+00
--2.3185375153278770e+01
--1.2954341420319706e+01
-3.8958261524477455e-02
--3.1806666447373271e+01
-1.3905793363233766e+01
-9.1791407657861122e+00
--3.6438645378932492e+01
--1.1882956950413428e+00
-6.8175411951859122e+00
--4.1422307553203012e+01
-5.1569613469239215e+00
--8.0148947892172451e-01
--2.3616358035663122e+01
-2.0127817168338544e+00
--7.0051402297631726e-01
--2.0409114273774001e+01
--2.8235911302676930e+00
--1.2625422961586885e+00
--2.1698517361871442e+01
-4.3769997856845606e+00
--2.1135575726533680e+00
--2.2622400278879759e+01
--6.3860307202432294e+00
--4.7509728324085776e+00
--2.5538457299124573e+01
--5.1426994118233562e+00
-1.1527681068093251e+01
--4.7889424648451914e+01
--1.9361154033802936e+01
-7.9201116135934688e+00
--4.5013487471756605e+01
-3.6845332256778782e+00
-2.6429811528927312e+00
--2.3049359619998469e+01
--1.2256852458549790e+01
-5.3183167348485769e+00
--4.0076172960687700e+01
-1.4802092391512286e+01
-1.4680397603821613e+00
--2.7781528674410676e+01
-2.7885739739845632e+00
-9.1741230047892797e-01
--2.0631071669035748e+01
--1.2070992651919278e+01
--2.4239875794188230e+00
--2.9189171650591241e+01
--1.9111435587127573e+01
-7.5136167406062953e+00
--4.4346294437572780e+01
-1.5353164802717492e+01
-1.1386803951480667e-01
--2.7579017951267190e+01
--1.1017121998407291e+01
-2.8044482223013514e+00
--3.6116500397213336e+01
--1.3736808895985600e+01
-2.9609349676765034e-01
--3.3377730889281487e+01
-3.1212220325824176e+00
--1.4154564045578630e+00
--2.1912056668293324e+01
-3.3151839901326969e+00
--3.8665906727222241e+00
--2.0600548859201322e+01
--1.1797716479665862e+01
-6.9067384348539548e+01
--7.0749303529937919e+01
--1.8021526406863408e+01
-8.2181403125661589e+01
--8.4471471892405560e+01
--2.8120758429283757e+01
-7.1019659314840780e+01
--7.6973879046402203e+01
--2.9522997636553483e+00
-6.4325823458840972e+01
--7.2609485666047078e+01
--3.6892372944764862e+00
-6.3841630991333560e+01
--7.2445937424330566e+01
--5.2377071140476978e+00
-6.3496201974246169e+01
--7.2080765677417219e+01
--3.9321936645793945e+00
-6.3627203856405508e+01
--7.2687634288650244e+01
-3.0822618928688783e+01
-7.3387452476099753e+01
--9.0611639336574470e+01
--4.0313939764817789e+01
-7.3299365470093520e+01
--8.3216923976029591e+01
-3.0852620790557978e+01
-7.2800830702522461e+01
--9.0604572952674076e+01
-3.0852620790557978e+01
-7.2800830702522461e+01
--9.0604572952674076e+01
--3.8871345691615439e+01
-6.3052235645749228e+01
--7.3344465474786631e+01
--1.1842665599957108e+01
-4.0533296679528064e+01
--5.0894750574992869e+01
--2.7559222705796888e+01
-4.1008411806382753e+01
--4.9790106451638437e+01
--1.2725832782134082e+01
-2.8279667896197697e+01
--3.4783858446767525e+01
-5.3663905307414854e+00
-3.3301287592380419e+01
--4.3613094365083768e+01
-5.5642698051066706e+00
-3.3754425629648352e+01
--4.4761905697919921e+01
--2.1116379112269822e+01
-3.5129504233733918e+01
--4.4466617460695687e+01
--2.1141952348157091e+01
-3.5221069368337098e+01
--4.4799019117994042e+01
--8.7445995534488108e-01
-2.9697667286658085e+01
--3.9441208474198071e+01
-3.7415800029356774e+00
-3.1598207724223162e+01
--4.2946716262768213e+01
-4.4238052622406236e+00
-3.1054852770265260e+01
--4.2277879210206841e+01
--2.2200054301093253e+01
-3.4770246023954037e+01
--4.5252062707788070e+01
-7.0341715626057901e+00
-3.1466804529089451e+01
--4.3536633067217458e+01
--2.7434325638485049e+01
-3.8280864753684433e+01
--5.0549376482894573e+01
--2.7434325638485049e+01
-3.8280864753684433e+01
--5.0549376482894573e+01
--2.9539916312766014e+01
-4.0881628229300638e+01
--5.4529909491916108e+01
-2.2550223540168015e+00
-2.8799594902327176e+01
--4.0890699050758293e+01
--2.7396687032963897e+01
-3.7116567713516773e+01
--5.0099865298968844e+01
--5.5646884999646097e+01
-6.2153265328791932e+01
--8.4721954453311369e+01
--3.2845695554693030e+01
-4.2045045295721309e+01
--5.7090046578247708e+01
--4.6549169792767600e+01
-5.5491675804822286e+01
--7.6191530950025410e+01
--4.7847904710541094e+01
-5.6181882508533370e+01
--7.7668456308772775e+01
--5.5106153438699479e+01
-6.0688017473754492e+01
--8.3761353013994665e+01
--4.9232838692707659e+01
-5.5898189076066764e+01
--7.7442712242369623e+01
--2.9826081423078620e+01
-3.7577126949136137e+01
--5.2822498670448603e+01
-1.1541387984301588e+01
-3.0995331381542535e+01
--4.7705965235530115e+01
-1.0440059308827900e+01
-2.9631061447253781e+01
--4.5094888758523012e+01
--2.0736681281095741e+00
-2.9594298363947829e+01
--4.4320184831394066e+01
-1.1776443185728750e+01
-3.0044993077624401e+01
--4.6722421233325342e+01
--2.6965156730885681e+01
-3.1858072906565429e+01
--4.6691690738051115e+01
-4.6296939181024541e+00
-2.7423020675441599e+01
--4.3054594051674798e+01
-2.7890904058924995e+00
-2.6186396444968512e+01
--4.0714802600976263e+01
-1.1692158735657118e+01
-2.9626123259382624e+01
--4.7257364226251411e+01
-1.4871659944697734e+01
-3.1216766352762395e+01
--5.0555546381298413e+01
-1.5541328555219117e+01
-3.1023980084783133e+01
--5.0099930894239932e+01
-1.2202326325923709e+01
-3.0282418213321758e+01
--4.9399924933207444e+01
-4.7041529673521820e+00
-2.6688362088330503e+01
--4.2511401982888174e+01
-6.9228195893652620e+00
-2.7501379096644950e+01
--4.4847186659766379e+01
-7.3227060833179598e+00
-2.7680736381305799e+01
--4.5277620581532616e+01
-4.6385681890129566e+00
-2.6277969200296575e+01
--4.2902554064578744e+01
-3.7353123263772869e+00
-2.5877360559222321e+01
--4.2254411766751076e+01
-1.5547728842017028e+01
-3.0000966243385772e+01
--5.1363466933145070e+01
-4.5465493253791349e+00
-2.5803291381593933e+01
--4.3362166228903213e+01
-7.3186874110247579e+00
-2.6945162013881653e+01
--4.5745944424384881e+01
--4.6488713458356923e+00
-2.2195589648532980e+01
--3.6619158602360528e+01
-1.8545904025990332e+01
-3.0800522343238914e+01
--5.4046903466894328e+01
--2.1142480888425251e+01
-2.3412967303707056e+01
--3.7403234418618020e+01
-1.1780537305754654e+01
-2.8093425211002444e+01
--4.9151334390974611e+01
-1.3436177226024171e+01
-2.8849712687843830e+01
--5.1407521499593926e+01
-5.6941274193196776e+00
-2.5683327756840491e+01
--4.5083013075687582e+01
--1.0233389651426092e+01
-1.9813221134124674e+01
--3.4248346581085428e+01
--5.1902633226545651e+00
-6.3463450535468295e+00
--9.1349609453574931e+00
-1.0317467333566876e+01
-2.6195535116101976e+01
--4.9984501209525000e+01
-7.6138108568822718e+00
-2.5133060603445127e+01
--4.8028996592863692e+01
--1.6069370319891622e+01
-1.8237372621634680e+01
--3.2586042972415946e+01
-1.6424271528611957e+01
-2.7988611299017848e+01
--5.5041711084387636e+01
-9.5431799046985528e+00
-2.5626616026452524e+01
--4.9891376553405735e+01
--7.7019928136114357e+00
-1.9354074321553803e+01
--3.7025494062881954e+01
--1.4385535266279764e+01
-1.7944337281792816e+01
--3.3573144918351360e+01
-1.7617560703404735e+01
-2.7622277533842393e+01
--5.6744471186669401e+01
-5.7750751857809766e+00
-2.3600989096892384e+01
--4.7890821151218297e+01
-5.7750751857809766e+00
-2.3600989096892384e+01
--4.7890821151218297e+01
--1.2257069576260765e+01
-1.8082928016699451e+01
--3.5092199125540034e+01
--7.2062043565329157e+00
-1.9223345602185621e+01
--3.8142562234791733e+01
-2.9333353566832465e+00
-2.2267001079203943e+01
--4.5685231422275777e+01
--6.2377011983942561e+00
-1.9338115216236194e+01
--3.8733522365006813e+01
-2.6895442573045236e+00
-2.2216224580967136e+01
--4.5930484265513357e+01
-2.5041316072684427e+00
-2.2072032819933256e+01
--4.5662353785358192e+01
--1.6060364714179219e+01
-1.7055933431981778e+01
--3.3223446465652025e+01
--8.0077556656481441e+00
-1.8312140157415836e+01
--3.7612412240130332e+01
--1.9484504510917589e+01
-1.8884512018446262e+01
--3.7463464407583828e+01
--1.2963905686247827e+01
-1.7530147340455187e+01
--3.5719885306726404e+01
--9.6820099436428499e+00
-1.8088949014656567e+01
--3.7235612215445038e+01
--9.6820099436428499e+00
-1.8088949014656567e+01
--3.7235612215445038e+01
--6.7459666740634479e+00
-1.8660636598764636e+01
--3.9443794159690526e+01
-1.2579249548628848e+01
-2.3971622970399071e+01
--5.5534647339213350e+01
--1.0446210690881404e+01
-1.7188785433019458e+01
--3.7935622251991447e+01
--1.4971620545367260e+01
-1.6227307715677579e+01
--3.5816293408240426e+01
-1.4664412995974796e+00
-2.0262883275648843e+01
--4.7331820281952311e+01
-1.5954545594568927e+00
-2.0146655832182173e+01
--4.7423507979164313e+01
-9.2342709689886728e+00
-2.2476839963823807e+01
--5.3492622125140258e+01
--1.4770640540540443e+01
-1.6175318735965700e+01
--3.6267343535463496e+01
-5.4422465071908546e+00
-2.0980241333220391e+01
--5.0313453052682334e+01
-1.4276161326466298e+01
-2.3368030316646493e+01
--5.8060325468374813e+01
--6.9514801292157244e+00
-1.7075485733444676e+01
--4.1037465782119483e+01
-2.0583999126952048e+00
-1.9313003259262334e+01
--4.8844919710498480e+01
--1.2496675438223562e+01
-1.4446349633201399e+01
--3.7814203719461261e+01
--1.6194590697375819e+01
-1.4732960394393633e+01
--3.7659912131930980e+01
--5.4674197282073491e+00
-1.6309752968696916e+01
--4.3967548841695908e+01
--5.7444271075971374e+00
-1.6332262845216452e+01
--4.3703516626192652e+01
--7.0496992346771989e+00
-1.5884106474402881e+01
--4.2960020815681702e+01
--4.8517235007989825e+01
-3.0795338696648354e+01
--8.4710664971937192e+01
--8.9668103127731662e+00
-1.4478671644730149e+01
--4.2619642824244295e+01
--1.1241744519738827e+01
-1.3639212534178055e+01
--4.0965525778205389e+01
--1.7148826945432930e+01
-1.2776560029072234e+01
--3.9494177640827303e+01
--9.9142669999447168e+00
-1.2892397706944386e+01
--4.4835339537411748e+01
-2.1049604881225763e+00
-1.1191159112867805e+01
--4.7494653707507268e+01
--1.1556922583592630e+01
-1.1015749351888099e+01
--4.6572073012671929e+01
-1.7208674359196261e+00
-8.5769158390044176e+00
--4.3382338199292811e+01
-3.0000556915684232e+01
-7.6406630180769241e+01
--9.2789659811190063e+01
-2.9833105515986055e+01
-7.6963247700357542e+01
--9.4107760277096659e+01
--6.6961525002732252e+00
-3.6342640560623231e+01
--4.1090058280923053e+01
--9.7309884424174911e+00
-4.8568849415598173e+01
--5.5806739462039744e+01
--1.2493809415363369e+01
-4.7589249424706658e+01
--5.4707070996529836e+01
--2.3505729958543590e+01
-4.3105376110072157e+01
--4.9562361643649197e+01
-2.0916762339460124e+00
-3.5630825647861165e+01
--4.3179365425272195e+01
-9.6904867263465533e-01
-3.5731814723559154e+01
--4.3606458625017773e+01
--3.8136186403084116e-01
-3.4529207980242788e+01
--4.2460984449434370e+01
--2.1129832200656836e+01
-3.5243566463986426e+01
--4.4332317120237953e+01
-5.2672903102052455e+00
-3.2393422911317401e+01
--4.3393700435699813e+01
-3.7157550124102641e+00
-3.1988747060055321e+01
--4.3446893473516241e+01
-5.2859503214257249e+00
-3.2229931376127340e+01
--4.3903657721815911e+01
-4.5463421798206678e+00
-3.1893376214125531e+01
--4.3450397927890258e+01
-4.0081395540396016e+00
-3.1444096126526407e+01
--4.2922055657103563e+01
-5.2506743138691512e+00
-3.1266844113998385e+01
--4.3948687496690233e+01
--1.1104055457230873e+01
-2.7090244876781902e+01
--3.5891552820154288e+01
--1.4958972729906840e+01
-2.6439182833991001e+01
--3.4625176268547904e+01
--2.8623024138918886e+01
-4.0412500998670161e+01
--5.3961032607473093e+01
--2.6694413522896919e+01
-3.7209522807431561e+01
--5.0103869206165626e+01
--7.7055757910879121e+00
-2.5361475759696432e+01
--3.4947727267231947e+01
--3.9131820454152724e+00
-1.2943628672602387e+01
--1.6882157096003727e+01
--2.7742444120468722e+01
-3.4427057677855977e+01
--4.9179881170969381e+01
-1.9407816896161338e+00
-2.5743337180448567e+01
--4.0557213967854480e+01
-1.5006166900667450e+01
-3.1491623720345888e+01
--5.1998563429639809e+01
-7.3138359074388966e+00
-2.7650888744349615e+01
--4.4493393784133751e+01
-7.0177167102222249e-01
-2.4743301455399582e+01
--3.9546496138575918e+01
-9.8711414133256070e-01
-2.4926785387723552e+01
--3.9929309498637650e+01
-8.9378635704536578e+00
-2.6470036593068027e+01
--4.7848923442412968e+01
--1.0424582189391005e+01
-1.9443019783609039e+01
--3.4333555041075194e+01
-1.4425454102885459e+01
-2.8082841202207906e+01
--5.4203972278661972e+01
-1.2738975511448773e+01
-2.7179405706728534e+01
--5.2450914369601904e+01
--9.4784008681189889e+00
-1.9132787070048199e+01
--3.5699264592979659e+01
--1.2674121930391157e+01
-1.8374599666516620e+01
--3.3945792397564965e+01
--9.2729844597131184e+00
-1.9177016944932753e+01
--3.5959056191055041e+01
--7.7653939786473538e+00
-1.9143841896515948e+01
--3.7682976051469133e+01
--1.5693952884851107e+01
-1.7378722641849432e+01
--3.3429787678593534e+01
-1.4019510702770250e+00
-2.1795374256186751e+01
--4.4550076154409254e+01
-1.3001517637491997e-01
-2.1423340378992261e+01
--4.3920376655780466e+01
--1.9191591168420150e+01
-1.8741856575917609e+01
--3.6812022319709115e+01
--4.9878315238272521e+01
-4.0097380097737911e+01
--8.9555905189994462e+01
--5.0089955466867856e+01
-3.9860499534190851e+01
--9.0279957444584753e+01
--1.1720177654663328e+01
-1.4331734801014573e+01
--3.9114216409965529e+01
--8.2949270481293453e+00
-1.4913469495851150e+01
--4.3105494544123587e+01
--3.2490145741820009e-01
-1.4246728733370130e+01
--5.1283831349987672e+01
--9.7036575194416432e+00
-1.2014164734220552e+01
--4.6358095595352211e+01
--1.3101120182251590e+01
-1.0388970713178848e+01
--4.6134028031132814e+01
-1.1067735706571322e+00
-7.9763980585189298e+00
--4.2347132078160712e+01
--7.1045314420078798e+00
-7.3345791282241777e+01
--7.7857421537518249e+01
-1.2589323257936938e+01
-7.4100183509904625e+01
--8.3506453627359775e+01
-1.2589323257936938e+01
-7.4100183509904625e+01
--8.3506453627359775e+01
--5.5109274993195010e+00
-6.2812669966932326e+01
--7.1702447221327262e+01
--9.2384882599671396e+00
-6.1804527427235243e+01
--7.0450900920548449e+01
-3.1930985670093133e+01
-7.4373894059731995e+01
--9.1112223879580583e+01
--1.6808788335558138e+01
-4.4899292671272498e+01
--5.2116890677090566e+01
--2.3949970193255076e+01
-4.4224529222493885e+01
--5.0852582689947369e+01
--1.2121288060451697e-01
-3.5302381719290473e+01
--4.3417156822947256e+01
--1.3584769883958985e+00
-3.4143491457887734e+01
--4.1839674469667294e+01
-1.0792052136407839e+00
-3.5014459952207616e+01
--4.3380744899491731e+01
-1.4824092520338017e+00
-3.4848385454819883e+01
--4.3309474378176425e+01
--1.8563628351108183e-01
-3.3994827029879623e+01
--4.2251205441060613e+01
-6.4570326987844062e+00
-3.5439084067793068e+01
--4.5851383866756713e+01
--1.7526134401919492e+01
-3.2534872263622987e+01
--3.9544291008848923e+01
--1.1314453700512674e+00
-3.2168167264358068e+01
--4.1010611783586469e+01
-5.3074924614499901e+00
-3.3822213271884927e+01
--4.4518621530312643e+01
-5.2169118065785591e+00
-3.2871968029504771e+01
--4.4056790829032515e+01
--2.1812994326031006e+01
-3.7040084788455445e+01
--4.6680326186367694e+01
-5.6922854100763169e+00
-3.2966737792201648e+01
--4.4461047554851859e+01
-3.9341776476079202e+00
-3.1846617783618797e+01
--4.2548139393098275e+01
--2.2704505190631853e+01
-3.5121530842402663e+01
--4.4481561812658192e+01
-5.4088723577088049e-01
-3.0235964489776098e+01
--4.0808524409338133e+01
--4.9893505150459383e-01
-2.9465886302111645e+01
--3.9533654598631372e+01
-2.6260482982726963e+00
-2.9560580943255530e+01
--4.1436402902326456e+01
-1.1129618686459331e+00
-2.8838983430225603e+01
--4.0802349188832629e+01
-3.1370275575354101e+00
-2.8862007119872978e+01
--4.0750470860740812e+01
-1.7787128625107738e+00
-2.8720746649878798e+01
--4.1046867787859384e+01
--2.2858151443264770e+01
-3.4006105444966174e+01
--4.6511086982975293e+01
-3.9118880843235053e+00
-2.8293219820824888e+01
--4.1194395615941922e+01
-8.1855549872664852e+00
-2.9358729517867349e+01
--4.3948003319012408e+01
--3.9841172178954565e+01
-4.6047576783156359e+01
--6.4513873274198744e+01
--2.6646914031829457e+01
-3.3184242237961868e+01
--4.8429497956440485e+01
-4.8643944151357168e+00
-2.6630233943965653e+01
--4.3617889465342316e+01
--2.8912670859948143e+01
-3.1047676005383046e+01
--4.8507839439544398e+01
-1.7549755029505693e+01
-3.0262599216256245e+01
--5.3613108392102212e+01
--5.3126316522633266e+00
-2.1894145078008389e+01
--3.6482550274394974e+01
--8.6743626755768890e+00
-2.0795336562039420e+01
--3.4610773074855643e+01
-1.4884861085889195e+01
-2.8851666365723148e+01
--5.2884928991067028e+01
-1.4184159784776817e+00
-2.3601011516250246e+01
--4.1973869264869805e+01
--1.0046800301716905e+01
-1.9259869438885232e+01
--3.4973014247509099e+01
--1.4390285588712526e+01
-1.8037919987480564e+01
--3.3525993495823315e+01
--8.3842862500627575e+00
-1.9072052618043354e+01
--3.6818329052273079e+01
--1.5586199853913214e+01
-1.7408383431827293e+01
--3.3569108226624870e+01
--9.1560546334628548e+00
-1.7904276419331804e+01
--3.7834592477783140e+01
--9.1216866472673956e+00
-1.8149175038175265e+01
--3.8830832795467586e+01
--7.7958556815867697e+00
-1.8330705756954579e+01
--3.8772435897001763e+01
-1.4574488383245555e+01
-2.4661013584344062e+01
--5.7003609887651479e+01
--4.9581468667328636e+01
-3.1243491059940080e+01
--8.5578717543022762e+01
--3.2557561454818618e+01
-2.0654066859698254e+01
--6.5347090601789901e+01
--3.6408306069827674e+01
-2.2307272532948570e+01
--7.1110571007090556e+01
-4.9896647713275870e+00
-1.2172170531870922e+01
--4.8947017587163558e+01
--1.2657240040933422e+01
-1.0155529433785560e+01
--4.6897492724272787e+01
--5.0188786563806742e+00
-9.7759047108236281e+00
--4.5463245150384850e+01
--6.2964852021480198e+00
-8.1138719677101090e+00
--4.3832872926899576e+01
--1.4890612173463724e+01
-6.8164381085037562e+01
--7.5599735918980016e+01
--2.6969058735753442e+00
-3.1104657971139979e+01
--4.0648648164899029e+01
-2.6104177290266373e+00
-3.0030387011221453e+01
--4.0939758780783698e+01
--2.7944974672536902e+00
-2.6619113201728354e+01
--3.8904562459272022e+01
-1.5340453674972858e+01
-3.1864971164262332e+01
--4.8813573530684906e+01
-4.4692175141391095e+00
-2.7350575501796069e+01
--4.0986603634693836e+01
-8.7573341954537280e+00
-2.9262945946021453e+01
--4.5056242884330771e+01
-5.5529027688605401e+00
-2.6848456172884998e+01
--4.3569502949038892e+01
-1.0237184957289756e+00
-2.4811700926607919e+01
--4.0032641108246480e+01
-4.7092310709637353e+00
-2.5541550503635143e+01
--4.3917916480344275e+01
--1.6435944718378256e+01
-1.8361474868533168e+01
--3.0888907516411894e+01
--1.4645868317910450e+01
-1.8571164265497618e+01
--3.1890384876305141e+01
--2.2318936999054508e+00
-2.2080775194550792e+01
--4.0262458695186908e+01
--2.1917865972424252e+01
-2.2290373378866423e+01
--3.9995897078474940e+01
--3.8878742173447904e+01
-3.4524837755913083e+01
--6.8884997615368164e+01
--1.4055308319560259e+01
-1.6582652675217627e+01
--3.5692336985228557e+01
--1.2973493667725961e+01
-1.4254018840150547e+01
--4.0016340792533121e+01
--1.9445243612605037e+01
-6.5102432892453280e+01
--7.2815927052228346e+01
-3.2552998986762738e+01
-7.3834808892641348e+01
--9.1445666173184563e+01
--9.7397886708465187e+00
-4.1763565841310928e+01
--5.0917358411436581e+01
--9.8425148418474446e+00
-4.2269226511465924e+01
--5.1221943282693630e+01
-6.7604426084083364e+00
-3.6682460189144471e+01
--4.6404092971200420e+01
-5.5256953694771767e+00
-3.3889775161780783e+01
--4.4559426559833817e+01
-7.9155455928774296e+00
-3.2778037774663403e+01
--4.5321918908097949e+01
--7.6282657287136937e+00
-2.4047121228324944e+01
--3.5533642567217584e+01
-4.0548768072014141e-01
-2.4575396803198974e+01
--4.0096835196296958e+01
-6.8162826826593417e+00
-2.6586749704118596e+01
--4.6605683928082449e+01
--1.6685810790659190e+01
-2.0002609048928665e+01
--3.2209501594665937e+01
--6.3146719183388731e+00
-2.1527440289441181e+01
--3.5918085388739911e+01
--1.6417025907886046e+01
-1.9604261159550500e+01
--3.1976030592203582e+01
-2.6989029664810413e+00
-2.4726225530539963e+01
--4.3342151743193014e+01
--1.5342310455222488e+01
-1.4011017280306996e+01
--3.8878312400448529e+01
--1.1632687104380572e+01
-6.3678938512595550e+01
--7.0643866764470260e+01
--8.9816427932374552e+00
-4.5271890984205434e+01
--5.3662370534470718e+01
-5.1859679195743613e+00
-3.3181346913985927e+01
--4.4224700208617733e+01
--1.3705937994576979e+01
-9.9295142540632533e+00
--4.6575281046187769e+01
--4.0923784002865222e+00
-6.3161689948446451e+01
--6.8840604387594240e+01
--1.2555704449304979e+01
-4.6660789365708133e+01
--5.3459804019380925e+01
--1.8929225530016858e+01
-4.3974665648596144e+01
--5.1357342689935216e+01
-1.6756060633402170e+00
-2.5451082168766600e+01
--3.9804676594092982e+01
-1.8296543042338655e+01
-2.8959171119595371e+01
--5.5946913140654011e+01
-3.3531717273723274e+01
-7.4615456167068601e+01
--9.1474441673195855e+01
-3.3531717273723274e+01
-7.4615456167068601e+01
--9.1474441673195855e+01
-7.1812110317457112e+00
-3.5941286277435744e+01
--4.5539797536495101e+01
-6.5642565345853399e+00
-3.4291531261323072e+01
--4.5744720430705300e+01
-6.6916501908239230e+00
-3.4801189874883057e+01
--4.6689045368509419e+01
--2.1820232227612717e+01
-3.5204618414869962e+01
--4.3920329653290700e+01
-4.7990443547422066e+00
-3.1578771866170452e+01
--4.3545814201672748e+01
--2.6208121831164091e+00
-1.4803704635233423e+01
--4.7462382535300648e+01
-2.9778787738547288e+00
-2.9328708106696784e+01
--4.1600445246117395e+01
-8.5914881713293045e+00
-2.8287027592171736e+01
--4.5701311316405231e+01
--1.2876485552830367e+01
-2.8269074022657094e+01
--3.5549729744007756e+01
-1.2434165699169060e+00
-2.5333967960100598e+01
--3.9796894342155547e+01
-1.6969984878942590e+00
-1.4699414216489890e+01
--2.7642093775522905e+01
-6.4730357480222933e+00
-2.2080618503456691e+01
--5.0628587727637886e+01
-3.6626449461647481e-01
-2.1418953936637017e+01
--5.3024633213419243e+01
--1.5788372020887310e+01
-1.6568720104524502e+01
--4.9293686360801537e+01
--1.0841357887228055e+01
-1.1815035525100711e+01
--4.1924662013568415e+01
--1.0841357887228055e+01
-1.1815035525100711e+01
--4.1924662013568415e+01
--1.0417372148300338e+01
-1.1927730075811226e+01
--4.2599208398176479e+01
--9.6574331034546699e+00
-1.2050845170146575e+01
--4.3598509517876408e+01
--9.6895832102283901e+00
-1.1981062540084375e+01
--4.3610069777969535e+01
--9.6895832102283901e+00
-1.1981062540084375e+01
--4.3610069777969535e+01
--1.1504293994944650e+01
-1.1694018325177982e+01
--4.1455366820655264e+01
-1.2269599940944840e+01
-4.2424596619996455e+00
--3.2461241957222640e+01
--1.3149759409354617e+01
-1.1012269822975894e+01
--4.0351056194977488e+01
--1.2106492958075165e+01
-1.1084932390509634e+01
--4.1393606530675932e+01
--1.2106492958075165e+01
-1.1084932390509634e+01
--4.1393606530675932e+01
-8.2120492732594319e-01
-4.3504703623129588e+00
--2.7150517135782948e+01
--1.2466947799228363e+01
-1.0575368034165020e+01
--4.1663138952184426e+01
--1.2645876975963285e+01
-1.1045689628322814e+01
--4.3381279434046597e+01
--1.2541660128946704e+01
-1.0472267359121997e+01
--4.1758214942489026e+01
--1.3292963745654220e+01
-1.0217577713971306e+01
--4.1371630493907844e+01
--1.3309110980402442e+01
-1.0190313139995006e+01
--4.1516622801052961e+01
--1.3956589667403223e+01
-1.0316472709788767e+01
--4.1884206013003372e+01
-2.5307705016461708e+00
-1.5564789111471187e+00
--2.0692434519135432e+01
--1.6110903757379862e+00
-7.2630020387830561e+00
--4.2233149314627880e+01
-1.4039970936008844e+01
-5.7609413034803347e-01
--2.9994397820203417e+01
-1.1091019893222780e+00
-1.0367512973908415e+00
--2.0453374346879034e+01
-1.3568378698963077e+01
-1.4443187111103709e-01
--3.2024264581913144e+01
-1.3086622219058837e+00
-5.5422049593119938e-01
--2.0335832911839439e+01
-2.2155714471306962e+00
-3.1125402062236301e-01
--2.0300919371787217e+01
--5.7182352468302433e+00
-5.4106621080442299e+00
--4.0291782444593480e+01
-5.7279523179679144e+00
--2.3770447850715690e-01
--2.3057066403481656e+01
-1.4189924095756446e+01
--8.2719064786234975e-01
--3.0868231229679509e+01
-1.4242846664213493e+01
--1.0439795883834666e+00
--3.0877353021366641e+01
-2.1142452301192334e+00
--7.5524155361281631e-01
--2.0417665148838093e+01
-2.8650311193963462e+00
--1.1537906742498738e+00
--2.0708737745821246e+01
-3.4924471994497615e+00
--1.4162513735929567e+00
--2.0592265958308090e+01
-1.3284424320581936e+01
--2.8528298145201418e+00
--2.8722401180065773e+01
-1.0142033178442444e+00
--1.1795337000521364e+00
--2.0589827395041862e+01
-3.9181365400828216e-01
--1.8427098137502995e+00
--2.0375548962340215e+01
--2.7497993016378626e+00
--1.0399726558249449e+00
--2.2003677503238542e+01
--2.8000427677316684e+00
--1.3488424650793480e+00
--2.1535898018371363e+01
-1.1510558382794696e+00
--2.8043020031452155e+00
--1.9763788749805830e+01
-1.5564749829575999e+00
--3.3750366799157416e+00
--2.0118936076912131e+01
-2.5791915107937124e+00
--4.1924344902744739e+00
--2.0987751996890960e+01
--1.4811167174473916e-01
--3.5792073543062228e+00
--2.0901005099740956e+01
--7.2054710196904868e+00
--1.9521019437923706e+00
--2.9552097456793046e+01
--9.2067431107598150e+00
--1.4820228690376009e+00
--3.0073686987820658e+01
--9.2828064898378653e+00
--1.5029058190289504e+00
--2.9993499140882857e+01
--7.1928145320392227e+00
--2.0402733286152381e+00
--2.9450299131989802e+01
--9.7676234060886920e+00
--1.4054756611859325e+00
--3.0064013195877955e+01
-1.0156435968885313e+01
--6.7050605085299164e+00
--2.3508341892248708e+01
--1.1570823465196174e+01
--1.2259575000388256e+00
--2.9976251427944252e+01
-1.6234727806289200e+01
-2.2603138037516267e+01
--5.6263708590419931e+01
-7.9417906808121028e+00
-2.2119681240716226e+01
--5.3090177742243647e+01
-5.0212275236859227e+00
-2.1112269503873634e+01
--5.1516165751805879e+01
--1.0526309289766976e+01
-2.1400157801361800e+01
--4.8990502477455941e+01
--1.0644946831182605e+01
-1.6068371519799115e+01
--4.8968366012386014e+01
--1.5783365933521557e+01
-1.6369967890501844e+01
--4.9214858737449561e+01
--1.5471977363622235e+01
-1.5497893173235934e+01
--4.9204230874374055e+01
-2.4939709900150078e+00
-9.0951197828113060e+00
--4.4978284391814654e+01
--1.3893303981830888e+01
-1.0078057782914934e+01
--4.2612278013436303e+01
-2.7360310189947574e+00
-9.1135658938021857e-01
--2.0555854443321479e+01
--2.2016971062924720e+00
-3.5746059610946470e+00
--2.8593859433633195e+01
--1.5718771424219926e+00
-1.0625665468904140e+00
--2.2379952587103244e+01
--4.7930128617875027e+00
-2.0545828603583973e+00
--3.5928073581971347e+01
-6.9396728390607798e-01
-4.5010540309798008e+00
--2.6344190352191465e+01
-3.8518970392756513e+00
-2.5186608943402149e+00
--2.2397226050484790e+01
--1.1800433719813105e+01
-1.1131556192596078e+01
--4.8016880288904872e+01
--3.1483335114141791e+00
--1.4404033334623639e-01
--2.4883573723877589e+01
--1.7773455066388397e+00
--9.9912336980794314e-01
--2.1842928104306292e+01
--2.0313967026664566e+00
--2.9322347335346559e+00
--2.2119598437134723e+01
--7.2029394532641415e+00
--2.0732193672035995e+00
--3.1554250857185959e+01
--6.8637120697194591e+00
--2.6770281043481372e+00
--2.8538177895990799e+01
-5.2983273885889108e+00
-1.0705503485662108e+01
--4.6605042410255628e+01
--3.7336910041955158e+00
--3.1349483038543715e+00
--3.0722225173082041e+01
-1.6807324782172794e+00
-1.6789021559779037e+01
--5.4256626826579939e+01
--9.6057588838057626e+00
-1.4651901407585330e+01
--4.8587135008024632e+01
-1.3574276562677117e+01
-2.2433304965773213e-01
--3.1786740708230990e+01
--7.0170053508199421e+00
--2.8537123743328765e+00
--2.8382353292255829e+01
-4.2993286735985849e+00
-1.0522008392721398e+00
--2.2083278101526680e+01
--1.4136066809451435e+00
-4.2451080838650873e-01
--2.4687052055117885e+01
-2.3523626046086463e+01
-2.7505658523672917e+01
--6.6924068639456138e+01
-1.2164662003854614e+00
-1.1601823373955874e+01
--4.8327829619618178e+01
--4.9302004422946011e+00
-1.0146322676190147e+01
--4.5877428134257897e+01
-1.6127023291788209e+01
-7.9519998642869956e+00
--4.7974543275400123e+01
--1.7308842884700226e+01
-9.4506702760960657e+00
--4.2399748281806183e+01
--1.2028355713086775e+01
-8.1045616883984160e+00
--4.3398482312761260e+01
--8.3456973697429082e-01
-2.0439080110357604e+00
--2.2356146123567900e+01
--1.2811579233533800e+01
-2.5607811309056068e+00
--3.6144359979515407e+01
--1.4509027035540386e+01
-2.3122261689007937e+00
--3.6147427581670065e+01
--1.4534809958396254e+01
-2.2265570324105743e+00
--3.6012141451094429e+01
--1.1807014364063253e+00
--2.2408150341356359e-01
--2.2114659986178751e+01
--6.5618453027753256e+00
-5.4609049687959776e-01
--3.2907081241194227e+01
--1.0951810421980541e+00
--2.9678090741691082e-01
--2.2043229245876269e+01
--1.0390161284774097e+01
-7.2749709705900512e-01
--3.3309461988597000e+01
--6.8031592640029190e+00
-3.8896989924130521e-01
--3.2684748440669793e+01
--6.8851543277523275e-01
--5.2093069306376860e-01
--2.1802353220944880e+01
--1.3132257998570669e+01
-6.6444742205992402e-01
--3.3662573485934516e+01
-1.9064130111164024e+00
--1.2829074563532774e+00
--2.1579505810426287e+01
--1.1031959547141333e-01
--1.1933000585630773e+00
--2.1212145159197128e+01
--5.6438864704259339e+00
--4.0851500419171174e+00
--2.5992584564156957e+01
-1.5229744024977744e+01
-9.2043433065780658e+00
--4.8488026380980727e+01
--6.6501689231810586e+00
-8.1982596832350274e-01
--3.3306631567991971e+01
--8.7836330447702267e+00
--1.2085803872807752e+00
--3.0503756235111293e+01
--1.3108115891677123e+01
--1.5172812002955227e+00
--3.0567982830551806e+01
--6.6618727408066842e+00
-2.6961946187778332e+00
--3.5808518937748651e+01
--1.3008262829375791e+01
-5.6629347184104661e-01
--3.3470149528663271e+01
--9.2860689666160763e+00
--1.7218500957221128e+00
--2.9909626948891027e+01
-1.6040261369822417e+01
-8.2414526861626882e+00
--4.7773881095770804e+01
--1.1059584943217088e+01
-2.8979995607281932e+00
--3.6438826430512037e+01
--1.2213804131153926e+01
-1.9718006658458389e+00
--3.5380268538162255e+01
--6.2598084800410119e+00
-1.1392384427726711e-01
--3.2206198950967291e+01
-8.7187661291294738e-02
-4.9153104750992266e-01
--2.1328035006599070e+01
--6.3887492046338297e+00
--4.7332360001523517e+00
--2.5438856930587917e+01
--5.8958831441550847e+00
--5.3940883771420340e+00
--2.4565534365976252e+01
--6.0586488955679432e+00
--5.6140364629926722e+00
--2.4187419398866680e+01
-5.0778083202364392e+00
-1.1271541509721448e+01
--4.8092601879633222e+01
--1.7115690838471973e+01
-1.2065579242779451e+01
--4.0029391069533204e+01
--8.7848335791500531e+00
-1.1652577405755647e+01
--4.7192424437999875e+01
--8.0867212049118109e+00
-1.1563968038805301e+01
--4.7831875793951703e+01
--8.6270704170090706e+00
-1.0684589720037730e+01
--4.6810959170777309e+01
--5.1658843840370494e+00
-8.7190890000602259e+00
--4.3856247105773697e+01
--7.9343522447974468e+00
-7.3540260405955173e+00
--4.2005555023142122e+01
--3.7719680164031812e+00
-1.1022501903417394e+01
--4.7349911639646528e+01
diff --git a/third_party/ceres/docs/CMakeLists.txt b/third_party/ceres/docs/CMakeLists.txt
deleted file mode 100644
index b5588ef..0000000
--- a/third_party/ceres/docs/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-add_subdirectory(source)
diff --git a/third_party/ceres/docs/source/CMakeLists.txt b/third_party/ceres/docs/source/CMakeLists.txt
deleted file mode 100644
index 1f8fed8..0000000
--- a/third_party/ceres/docs/source/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-# HTML output directory
-set(SPHINX_HTML_DIR "${Ceres_BINARY_DIR}/docs/html")
-
-# Install documentation
-install(DIRECTORY ${SPHINX_HTML_DIR}
-        DESTINATION ${CMAKE_INSTALL_DOCDIR}
-        COMPONENT Doc
-        PATTERN "${SPHINX_HTML_DIR}/*")
-
-# Find python
-find_package(Python REQUIRED COMPONENTS Interpreter)
-
-# Building using 'make_docs.py' python script
-add_custom_target(ceres_docs ALL
-                  $<TARGET_FILE:Python::Interpreter>
-                  "${Ceres_SOURCE_DIR}/scripts/make_docs.py"
-                  "${Ceres_SOURCE_DIR}"
-                  "${Ceres_BINARY_DIR}/docs"
-                  "${Sphinx_BUILD_EXECUTABLE}"
-                  USES_TERMINAL
-                  COMMENT "Building HTML documentation with Sphinx")
diff --git a/third_party/ceres/docs/source/_templates/layout.html b/third_party/ceres/docs/source/_templates/layout.html
deleted file mode 100644
index 61c8eb5..0000000
--- a/third_party/ceres/docs/source/_templates/layout.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "!layout.html" %}
-
-{% block footer %}
-{{ super() }}
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-49769510-1', 'ceres-solver.org');
-  ga('send', 'pageview');
-</script>
-{% endblock %}
diff --git a/third_party/ceres/docs/source/analytical_derivatives.rst b/third_party/ceres/docs/source/analytical_derivatives.rst
deleted file mode 100644
index 2a3a404..0000000
--- a/third_party/ceres/docs/source/analytical_derivatives.rst
+++ /dev/null
@@ -1,192 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-analytical_derivatives:
-
-====================
-Analytic Derivatives
-====================
-
-Consider the problem of fitting the following curve (`Rat43
-<http://www.itl.nist.gov/div898/strd/nls/data/ratkowsky3.shtml>`_) to
-data:
-
-.. math::
-  y = \frac{b_1}{(1+e^{b_2-b_3x})^{1/b_4}}
-
-That is, given some data :math:`\{x_i, y_i\},\ \forall i=1,... ,n`,
-determine parameters :math:`b_1, b_2, b_3` and :math:`b_4` that best
-fit this data.
-
-Which can be stated as the problem of finding the
-values of :math:`b_1, b_2, b_3` and :math:`b_4` are the ones that
-minimize the following objective function [#f1]_:
-
-.. math::
-   \begin{align}
-   E(b_1, b_2, b_3, b_4)
-   &= \sum_i f^2(b_1, b_2, b_3, b_4 ; x_i, y_i)\\
-   &= \sum_i \left(\frac{b_1}{(1+e^{b_2-b_3x_i})^{1/b_4}} - y_i\right)^2\\
-   \end{align}
-
-To solve this problem using Ceres Solver, we need to define a
-:class:`CostFunction` that computes the residual :math:`f` for a given
-:math:`x` and :math:`y` and its derivatives with respect to
-:math:`b_1, b_2, b_3` and :math:`b_4`.
-
-Using elementary differential calculus, we can see that:
-
-.. math::
-  \begin{align}
-  D_1 f(b_1, b_2, b_3, b_4; x,y) &= \frac{1}{(1+e^{b_2-b_3x})^{1/b_4}}\\
-  D_2 f(b_1, b_2, b_3, b_4; x,y) &=
-  \frac{-b_1e^{b_2-b_3x}}{b_4(1+e^{b_2-b_3x})^{1/b_4 + 1}} \\
-  D_3 f(b_1, b_2, b_3, b_4; x,y) &=
-  \frac{b_1xe^{b_2-b_3x}}{b_4(1+e^{b_2-b_3x})^{1/b_4 + 1}} \\
-  D_4 f(b_1, b_2, b_3, b_4; x,y) & = \frac{b_1  \log\left(1+e^{b_2-b_3x}\right) }{b_4^2(1+e^{b_2-b_3x})^{1/b_4}}
-  \end{align}
-
-With these derivatives in hand, we can now implement the
-:class:`CostFunction` as:
-
-.. code-block:: c++
-
-  class Rat43Analytic : public SizedCostFunction<1,4> {
-     public:
-       Rat43Analytic(const double x, const double y) : x_(x), y_(y) {}
-       virtual ~Rat43Analytic() {}
-       virtual bool Evaluate(double const* const* parameters,
-                             double* residuals,
-                             double** jacobians) const {
-         const double b1 = parameters[0][0];
-         const double b2 = parameters[0][1];
-         const double b3 = parameters[0][2];
-         const double b4 = parameters[0][3];
-
-         residuals[0] = b1 *  pow(1 + exp(b2 -  b3 * x_), -1.0 / b4) - y_;
-
-         if (!jacobians) return true;
-         double* jacobian = jacobians[0];
-         if (!jacobian) return true;
-
-         jacobian[0] = pow(1 + exp(b2 - b3 * x_), -1.0 / b4);
-         jacobian[1] = -b1 * exp(b2 - b3 * x_) *
-                       pow(1 + exp(b2 - b3 * x_), -1.0 / b4 - 1) / b4;
-         jacobian[2] = x_ * b1 * exp(b2 - b3 * x_) *
-                       pow(1 + exp(b2 - b3 * x_), -1.0 / b4 - 1) / b4;
-         jacobian[3] = b1 * log(1 + exp(b2 - b3 * x_)) *
-                       pow(1 + exp(b2 - b3 * x_), -1.0 / b4) / (b4 * b4);
-         return true;
-       }
-
-      private:
-       const double x_;
-       const double y_;
-   };
-
-This is tedious code, hard to read and with a lot of
-redundancy. So in practice we will cache some sub-expressions to
-improve its efficiency, which would give us something like:
-
-.. code-block:: c++
-
-  class Rat43AnalyticOptimized : public SizedCostFunction<1,4> {
-     public:
-       Rat43AnalyticOptimized(const double x, const double y) : x_(x), y_(y) {}
-       virtual ~Rat43AnalyticOptimized() {}
-       virtual bool Evaluate(double const* const* parameters,
-                             double* residuals,
-                             double** jacobians) const {
-         const double b1 = parameters[0][0];
-         const double b2 = parameters[0][1];
-         const double b3 = parameters[0][2];
-         const double b4 = parameters[0][3];
-
-         const double t1 = exp(b2 -  b3 * x_);
-         const double t2 = 1 + t1;
-         const double t3 = pow(t2, -1.0 / b4);
-         residuals[0] = b1 * t3 - y_;
-
-         if (!jacobians) return true;
-         double* jacobian = jacobians[0];
-         if (!jacobian) return true;
-
-         const double t4 = pow(t2, -1.0 / b4 - 1);
-         jacobian[0] = t3;
-         jacobian[1] = -b1 * t1 * t4 / b4;
-         jacobian[2] = -x_ * jacobian[1];
-         jacobian[3] = b1 * log(t2) * t3 / (b4 * b4);
-         return true;
-       }
-
-     private:
-       const double x_;
-       const double y_;
-   };
-
-What is the difference in performance of these two implementations?
-
-==========================   =========
-CostFunction                 Time (ns)
-==========================   =========
-Rat43Analytic                      255
-Rat43AnalyticOptimized              92
-==========================   =========
-
-``Rat43AnalyticOptimized`` is :math:`2.8` times faster than
-``Rat43Analytic``.  This difference in run-time is not uncommon. To
-get the best performance out of analytically computed derivatives, one
-usually needs to optimize the code to account for common
-sub-expressions.
-
-
-When should you use analytical derivatives?
-===========================================
-
-#. The expressions are simple, e.g. mostly linear.
-
-#. A computer algebra system like `Maple
-   <https://www.maplesoft.com/products/maple/>`_ , `Mathematica
-   <https://www.wolfram.com/mathematica/>`_, or `SymPy
-   <http://www.sympy.org/en/index.html>`_ can be used to symbolically
-   differentiate the objective function and generate the C++ to
-   evaluate them.
-
-#. Performance is of utmost concern and there is algebraic structure
-   in the terms that you can exploit to get better performance than
-   automatic differentiation.
-
-   That said, getting the best performance out of analytical
-   derivatives requires a non-trivial amount of work.  Before going
-   down this path, it is useful to measure the amount of time being
-   spent evaluating the Jacobian as a fraction of the total solve time
-   and remember `Amdahl's Law
-   <https://en.wikipedia.org/wiki/Amdahl's_law>`_ is your friend.
-
-#. There is no other way to compute the derivatives, e.g. you
-   wish to compute the derivative of the root of a polynomial:
-
-   .. math::
-     a_3(x,y)z^3 + a_2(x,y)z^2 + a_1(x,y)z + a_0(x,y) = 0
-
-
-   with respect to :math:`x` and :math:`y`. This requires the use of
-   the `Inverse Function Theorem
-   <https://en.wikipedia.org/wiki/Inverse_function_theorem>`_
-
-#. You love the chain rule and actually enjoy doing all the algebra by
-   hand.
-
-
-.. rubric:: Footnotes
-
-.. [#f1] The notion of best fit depends on the choice of the objective
-         function used to measure the quality of fit, which in turn
-         depends on the underlying noise process which generated the
-         observations. Minimizing the sum of squared differences is
-         the right thing to do when the noise is `Gaussian
-         <https://en.wikipedia.org/wiki/Normal_distribution>`_. In
-         that case the optimal value of the parameters is the `Maximum
-         Likelihood Estimate
-         <https://en.wikipedia.org/wiki/Maximum_likelihood_estimation>`_.
diff --git a/third_party/ceres/docs/source/automatic_derivatives.rst b/third_party/ceres/docs/source/automatic_derivatives.rst
deleted file mode 100644
index 3fe0727..0000000
--- a/third_party/ceres/docs/source/automatic_derivatives.rst
+++ /dev/null
@@ -1,304 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-automatic_derivatives:
-
-=====================
-Automatic Derivatives
-=====================
-
-We will now consider automatic differentiation. It is a technique that
-can compute exact derivatives, fast, while requiring about the same
-effort from the user as is needed to use numerical differentiation.
-
-Don't believe me? Well here goes. The following code fragment
-implements an automatically differentiated ``CostFunction`` for `Rat43
-<http://www.itl.nist.gov/div898/strd/nls/data/ratkowsky3.shtml>`_.
-
-.. code-block:: c++
-
-  struct Rat43CostFunctor {
-    Rat43CostFunctor(const double x, const double y) : x_(x), y_(y) {}
-
-    template <typename T>
-    bool operator()(const T* parameters, T* residuals) const {
-      const T b1 = parameters[0];
-      const T b2 = parameters[1];
-      const T b3 = parameters[2];
-      const T b4 = parameters[3];
-      residuals[0] = b1 * pow(1.0 + exp(b2 -  b3 * x_), -1.0 / b4) - y_;
-      return true;
-    }
-
-    private:
-      const double x_;
-      const double y_;
-  };
-
-
-  auto* cost_function = new AutoDiffCostFunction<Rat43CostFunctor, 1, 4>(x, y);
-
-Notice that compared to numeric differentiation, the only difference
-when defining the functor for use with automatic differentiation is
-the signature of the ``operator()``.
-
-In the case of numeric differentiation it was
-
-.. code-block:: c++
-
-   bool operator()(const double* parameters, double* residuals) const;
-
-and for automatic differentiation it is a templated function of the
-form
-
-.. code-block:: c++
-
-   template <typename T> bool operator()(const T* parameters, T* residuals) const;
-
-
-So what does this small change buy us? The following table compares
-the time it takes to evaluate the residual and the Jacobian for
-`Rat43` using various methods.
-
-==========================   =========
-CostFunction                 Time (ns)
-==========================   =========
-Rat43Analytic                      255
-Rat43AnalyticOptimized              92
-Rat43NumericDiffForward            262
-Rat43NumericDiffCentral            517
-Rat43NumericDiffRidders           3760
-Rat43AutomaticDiff                 129
-==========================   =========
-
-We can get exact derivatives using automatic differentiation
-(``Rat43AutomaticDiff``) with about the same effort that is required
-to write the code for numeric differentiation but only :math:`40\%`
-slower than hand optimized analytical derivatives.
-
-So how does it work? For this we will have to learn about **Dual
-Numbers** and **Jets** .
-
-
-Dual Numbers & Jets
-===================
-
-.. NOTE::
-
-   Reading this and the next section on implementing Jets is not
-   necessary to use automatic differentiation in Ceres Solver. But
-   knowing the basics of how Jets work is useful when debugging and
-   reasoning about the performance of automatic differentiation.
-
-Dual numbers are an extension of the real numbers analogous to complex
-numbers: whereas complex numbers augment the reals by introducing an
-imaginary unit :math:`\iota` such that :math:`\iota^2 = -1`, dual
-numbers introduce an *infinitesimal* unit :math:`\epsilon` such that
-:math:`\epsilon^2 = 0` . A dual number :math:`a + v\epsilon` has two
-components, the *real* component :math:`a` and the *infinitesimal*
-component :math:`v`.
-
-Surprisingly, this simple change leads to a convenient method for
-computing exact derivatives without needing to manipulate complicated
-symbolic expressions.
-
-For example, consider the function
-
-.. math::
-
-   f(x) = x^2 ,
-
-Then,
-
-.. math::
-
-   \begin{align}
-   f(10 + \epsilon) &= (10 + \epsilon)^2\\
-            &= 100 + 20 \epsilon + \epsilon^2\\
-            &= 100 + 20 \epsilon
-   \end{align}
-
-Observe that the coefficient of :math:`\epsilon` is :math:`Df(10) =
-20`. Indeed this generalizes to functions which are not
-polynomial. Consider an arbitrary differentiable function
-:math:`f(x)`. Then we can evaluate :math:`f(x + \epsilon)` by
-considering the Taylor expansion of :math:`f` near :math:`x`, which
-gives us the infinite series
-
-.. math::
-   \begin{align}
-   f(x + \epsilon) &= f(x) + Df(x) \epsilon + D^2f(x)
-   \frac{\epsilon^2}{2} + D^3f(x) \frac{\epsilon^3}{6} + \cdots\\
-   f(x + \epsilon) &= f(x) + Df(x) \epsilon
-   \end{align}
-
-Here we are using the fact that :math:`\epsilon^2 = 0`.
-
-A `Jet <https://en.wikipedia.org/wiki/Jet_(mathematics)>`_ is a
-:math:`n`-dimensional dual number, where we augment the real numbers
-with :math:`n` infinitesimal units :math:`\epsilon_i,\ i=1,...,n` with
-the property that :math:`\forall i, j\ :\epsilon_i\epsilon_j = 0`. Then
-a Jet consists of a *real* part :math:`a` and a :math:`n`-dimensional
-*infinitesimal* part :math:`\mathbf{v}`, i.e.,
-
-.. math::
-   x = a + \sum_j v_{j} \epsilon_j
-
-The summation notation gets tedious, so we will also just write
-
-.. math::
-   x = a + \mathbf{v}.
-
-where the :math:`\epsilon_i`'s are implicit. Then, using the same
-Taylor series expansion used above, we can see that:
-
-.. math::
-
-  f(a + \mathbf{v}) = f(a) + Df(a) \mathbf{v}.
-
-Similarly for a multivariate function
-:math:`f:\mathbb{R}^{n}\rightarrow \mathbb{R}^m`, evaluated on
-:math:`x_i = a_i + \mathbf{v}_i,\ \forall i = 1,...,n`:
-
-.. math::
-   f(x_1,..., x_n) = f(a_1, ..., a_n) + \sum_i D_i f(a_1, ..., a_n) \mathbf{v}_i
-
-So if each :math:`\mathbf{v}_i = e_i` were the :math:`i^{\text{th}}`
-standard basis vector, then, the above expression would simplify to
-
-.. math::
-   f(x_1,..., x_n) = f(a_1, ..., a_n) + \sum_i D_i f(a_1, ..., a_n) \epsilon_i
-
-and we can extract the coordinates of the Jacobian by inspecting the
-coefficients of :math:`\epsilon_i`.
-
-Implementing Jets
------------------
-
-In order for the above to work in practice, we will need the ability
-to evaluate an arbitrary function :math:`f` not just on real numbers
-but also on dual numbers, but one does not usually evaluate functions
-by evaluating their Taylor expansions,
-
-This is where C++ templates and operator overloading comes into
-play. The following code fragment has a simple implementation of a
-``Jet`` and some operators/functions that operate on them.
-
-.. code-block:: c++
-
-   template<int N> struct Jet {
-     double a;
-     Eigen::Matrix<double, 1, N> v;
-   };
-
-   template<int N> Jet<N> operator+(const Jet<N>& f, const Jet<N>& g) {
-     return Jet<N>(f.a + g.a, f.v + g.v);
-   }
-
-   template<int N> Jet<N> operator-(const Jet<N>& f, const Jet<N>& g) {
-     return Jet<N>(f.a - g.a, f.v - g.v);
-   }
-
-   template<int N> Jet<N> operator*(const Jet<N>& f, const Jet<N>& g) {
-     return Jet<N>(f.a * g.a, f.a * g.v + f.v * g.a);
-   }
-
-   template<int N> Jet<N> operator/(const Jet<N>& f, const Jet<N>& g) {
-     return Jet<N>(f.a / g.a, f.v / g.a - f.a * g.v / (g.a * g.a));
-   }
-
-   template <int N> Jet<N> exp(const Jet<N>& f) {
-     return Jet<T, N>(exp(f.a), exp(f.a) * f.v);
-   }
-
-   // This is a simple implementation for illustration purposes, the
-   // actual implementation of pow requires careful handling of a number
-   // of corner cases.
-   template <int N>  Jet<N> pow(const Jet<N>& f, const Jet<N>& g) {
-     return Jet<N>(pow(f.a, g.a),
-                   g.a * pow(f.a, g.a - 1.0) * f.v +
-                   pow(f.a, g.a) * log(f.a); * g.v);
-   }
-
-
-With these overloaded functions in hand, we can now call
-``Rat43CostFunctor`` with an array of Jets instead of doubles. Putting
-that together with appropriately initialized Jets allows us to compute
-the Jacobian as follows:
-
-.. code-block:: c++
-
-  class Rat43Automatic : public ceres::SizedCostFunction<1,4> {
-   public:
-    Rat43Automatic(const Rat43CostFunctor* functor) : functor_(functor) {}
-    virtual ~Rat43Automatic() {}
-    virtual bool Evaluate(double const* const* parameters,
-                          double* residuals,
-                          double** jacobians) const {
-      // Just evaluate the residuals if Jacobians are not required.
-      if (!jacobians) return (*functor_)(parameters[0], residuals);
-
-      // Initialize the Jets
-      ceres::Jet<4> jets[4];
-      for (int i = 0; i < 4; ++i) {
-        jets[i].a = parameters[0][i];
-        jets[i].v.setZero();
-        jets[i].v[i] = 1.0;
-      }
-
-      ceres::Jet<4> result;
-      (*functor_)(jets, &result);
-
-      // Copy the values out of the Jet.
-      residuals[0] = result.a;
-      for (int i = 0; i < 4; ++i) {
-        jacobians[0][i] = result.v[i];
-      }
-      return true;
-    }
-
-   private:
-    std::unique_ptr<const Rat43CostFunctor> functor_;
-  };
-
-Indeed, this is essentially how :class:`AutoDiffCostFunction` works.
-
-Pitfalls
-========
-
-Automatic differentiation frees the user from the burden of computing
-and reasoning about the symbolic expressions for the Jacobians, but
-this freedom comes at a cost. For example consider the following
-simple functor:
-
-.. code-block:: c++
-
-   struct Functor {
-     template <typename T> bool operator()(const T* x, T* residual) const {
-       residual[0] = 1.0 - sqrt(x[0] * x[0] + x[1] * x[1]);
-       return true;
-     }
-   };
-
-Looking at the code for the residual computation, one does not foresee
-any problems. However, if we look at the analytical expressions for
-the Jacobian:
-
-.. math::
-
-      y &= 1 - \sqrt{x_0^2 + x_1^2}\\
-   D_1y &= -\frac{x_0}{\sqrt{x_0^2 + x_1^2}},\
-   D_2y = -\frac{x_1}{\sqrt{x_0^2 + x_1^2}}
-
-we find that it is an indeterminate form at :math:`x_0 = 0, x_1 =
-0`.
-
-There is no single solution to this problem. In some cases one needs
-to reason explicitly about the points where indeterminacy may occur
-and use alternate expressions using `L'Hôpital's rule
-<https://en.wikipedia.org/wiki/L'H%C3%B4pital's_rule>`_ (see for
-example some of the conversion routines in `rotation.h
-<https://github.com/ceres-solver/ceres-solver/blob/master/include/ceres/rotation.h>`_. In
-other cases, one may need to regularize the expressions to eliminate
-these points.
diff --git a/third_party/ceres/docs/source/bibliography.rst b/third_party/ceres/docs/source/bibliography.rst
deleted file mode 100644
index ba3bc87..0000000
--- a/third_party/ceres/docs/source/bibliography.rst
+++ /dev/null
@@ -1,180 +0,0 @@
-.. _sec-bibliography:
-
-============
-Bibliography
-============
-
-Background Reading
-==================
-
-For a short but informative introduction to the subject we recommend
-the booklet by [Madsen]_ . For a general introduction to non-linear
-optimization we recommend [NocedalWright]_. [Bjorck]_ remains the
-seminal reference on least squares problems. [TrefethenBau]_ is our
-favorite text on introductory numerical linear algebra. [Triggs]_
-provides a thorough coverage of the bundle adjustment problem.
-
-
-References
-==========
-
-.. [Agarwal] S. Agarwal, N. Snavely, S. M. Seitz and R. Szeliski,
-   **Bundle Adjustment in the Large**, *Proceedings of the European
-   Conference on Computer Vision*, pp. 29--42, 2010.
-
-.. [Bjorck] A. Bjorck, **Numerical Methods for Least Squares
-   Problems**, SIAM, 1996
-
-.. [Brown] D. C. Brown, **A solution to the general problem of
-   multiple station analytical stereo triangulation**,  Technical
-   Report 43, Patrick Airforce Base, Florida, 1958.
-
-.. [ByrdNocedal] R. H. Byrd, J. Nocedal, R. B. Schanbel,
-   **Representations of Quasi-Newton Matrices and their use in Limited
-   Memory Methods**, *Mathematical Programming* 63(4):129-156, 1994.
-
-.. [ByrdSchnabel] R.H. Byrd, R.B. Schnabel, and G.A. Shultz, **Approximate
-   solution of the trust region problem by minimization over
-   two dimensional subspaces**, *Mathematical programming*,
-   40(1):247-263, 1988.
-
-.. [Chen] Y. Chen, T. A. Davis, W. W. Hager, and
-   S. Rajamanickam, **Algorithm 887: CHOLMOD, Supernodal Sparse
-   Cholesky Factorization and Update/Downdate**, *TOMS*, 35(3), 2008.
-
-.. [Conn] A.R. Conn, N.I.M. Gould, and P.L. Toint, **Trust region
-   methods**, *Society for Industrial Mathematics*, 2000.
-
-.. [Davis] Timothy A. Davis, **Direct methods for Sparse Linear
-   Systems**, *SIAM*, 2006.
-
-.. [Dellaert] F. Dellaert, J. Carlson, V. Ila, K. Ni and C. E. Thorpe,
-   **Subgraph-preconditioned conjugate gradients for large scale SLAM**,
-   *International Conference on Intelligent Robots and Systems*, 2010.
-
-.. [GolubPereyra] G.H. Golub and V. Pereyra, **The differentiation of
-   pseudo-inverses and nonlinear least squares problems whose
-   variables separate**, *SIAM Journal on numerical analysis*,
-   10(2):413-432, 1973.
-
-.. [GouldScott] N. Gould and J. Scott, **The State-of-the-Art of
-   Preconditioners for Sparse Linear Least-Squares Problems**,
-   *ACM Trans. Math. Softw.*, 43(4), 2017.
-
-.. [HartleyZisserman] R.I. Hartley and A. Zisserman, **Multiview
-   Geometry in Computer Vision**, Cambridge University Press, 2004.
-
-.. [Hertzberg] C. Hertzberg, R. Wagner, U. Frese and L. Schroder,
-   **Integrating Generic Sensor Fusion Algorithms with Sound State
-   Representations through Encapsulation of Manifolds**, *Information
-   Fusion*, 14(1):57-77, 2013.
-
-.. [KanataniMorris] K. Kanatani and D. D. Morris, **Gauges and gauge
-   transformations for uncertainty description of geometric structure
-   with indeterminacy**, *IEEE Transactions on Information Theory*
-   47(5):2017-2028, 2001.
-
-.. [Keys] R. G. Keys, **Cubic convolution interpolation for digital
-   image processing**, *IEEE Trans. on Acoustics, Speech, and Signal
-   Processing*, 29(6), 1981.
-
-.. [KushalAgarwal] A. Kushal and S. Agarwal, **Visibility based
-   preconditioning for bundle adjustment**, *In Proceedings of the
-   IEEE Conference on Computer Vision and Pattern Recognition*, 2012.
-
-.. [Kanzow] C. Kanzow, N. Yamashita and M. Fukushima,
-   **Levenberg-Marquardt methods with strong local convergence
-   properties for solving nonlinear equations with convex
-   constraints**, *Journal of Computational and Applied Mathematics*,
-   177(2):375-397, 2005.
-
-.. [Levenberg] K. Levenberg, **A method for the solution of certain
-   nonlinear problems in least squares**, *Quart. Appl.  Math*,
-   2(2):164-168, 1944.
-
-.. [LiSaad] Na Li and Y. Saad, **MIQR: A multilevel incomplete qr
-   preconditioner for large sparse least squares problems**, *SIAM
-   Journal on Matrix Analysis and Applications*, 28(2):524-550, 2007.
-
-.. [LourakisArgyros] M. L. A. Lourakis, A. A. Argyros, **Is
-   Levenberg-Marquardt the most efficient algorithm for implementing
-   bundle adjustment?**, *International Conference on Computer
-   Vision*, 2005.
-
-.. [Madsen] K. Madsen, H.B. Nielsen, and O. Tingleff, **Methods for
-   nonlinear least squares problems**, 2004.
-
-.. [Mandel] J. Mandel, **On block diagonal and Schur complement
-   preconditioning**, *Numer. Math.*, 58(1):79-93, 1990.
-
-.. [Marquardt] D.W. Marquardt, **An algorithm for least squares
-   estimation of nonlinear parameters**, *J. SIAM*, 11(2):431-441,
-   1963.
-
-.. [Mathew] T.P.A. Mathew, **Domain decomposition methods for the
-   numerical solution of partial differential equations**, Springer
-   Verlag, 2008.
-
-.. [NashSofer] S.G. Nash and A. Sofer, **Assessing a search direction
-   within a truncated newton method**, *Operations Research Letters*,
-   9(4):219-221, 1990.
-
-.. [Nocedal] J. Nocedal, **Updating Quasi-Newton Matrices with Limited
-   Storage**, *Mathematics of Computation*, 35(151): 773--782, 1980.
-
-.. [NocedalWright] J. Nocedal and S. Wright, **Numerical Optimization**,
-   Springer, 2004.
-
-.. [Oren] S. S. Oren, **Self-scaling Variable Metric (SSVM) Algorithms
-   Part II: Implementation and Experiments**, Management Science,
-   20(5), 863-874, 1974.
-
-.. [Press] W. H. Press, S. A. Teukolsky, W. T. Vetterling
-   and B. P. Flannery, **Numerical Recipes**, Cambridge University
-   Press, 2007.
-
-.. [Ridders] C. J. F. Ridders, **Accurate computation of F'(x) and
-   F'(x) F"(x)**, Advances in Engineering Software 4(2), 75-76, 1978.
-
-.. [RuheWedin] A. Ruhe and P.Å. Wedin, **Algorithms for separable
-   nonlinear least squares problems**, Siam Review, 22(3):318-337,
-   1980.
-
-.. [Saad] Y. Saad, **Iterative methods for sparse linear
-   systems**, SIAM, 2003.
-
-.. [Simon] I. Simon, N. Snavely and S. M. Seitz, **Scene Summarization
-   for Online Image Collections**, *International Conference on
-   Computer Vision*, 2007.
-
-.. [Stigler] S. M. Stigler, **Gauss and the invention of least
-   squares**, *The Annals of Statistics*, 9(3):465-474, 1981.
-
-.. [TenenbaumDirector] J. Tenenbaum and B. Director, **How Gauss
-   Determined the Orbit of Ceres**.
-
-.. [TrefethenBau] L.N. Trefethen and D. Bau, **Numerical Linear
-   Algebra**, SIAM, 1997.
-
-.. [Triggs] B. Triggs, P. F. Mclauchlan, R. I. Hartley and
-   A. W. Fitzgibbon, **Bundle Adjustment: A Modern Synthesis**,
-   Proceedings of the International Workshop on Vision Algorithms:
-   Theory and Practice, pp. 298-372, 1999.
-
-.. [Weber] S. Weber, N. Demmel, TC Chan, D. Cremers, **Power Bundle
-   Adjustment for Large-Scale 3D Reconstruction**, *IEEE Conference on
-   Computer Vision and Pattern Recognition*, 2023.
-
-.. [Wiberg] T. Wiberg, **Computation of principal components when data
-   are missing**, In Proc. *Second Symp. Computational Statistics*,
-   pages 229-236, 1976.
-
-.. [WrightHolt] S. J. Wright and J. N. Holt, **An Inexact Levenberg
-   Marquardt Method for Large Sparse Nonlinear Least Squares**,
-   *Journal of the Australian Mathematical Society Series B*,
-   26(4):387-403, 1985.
-
-.. [Zheng] Q. Zheng, Y. Xi and Y. Saad, **A power Schur Complement
-   low-rank correction preconditioner for general sparse linear
-   systems**, *SIAM Journal on Matrix Analysis and
-   Applications*, 2021.
diff --git a/third_party/ceres/docs/source/conf.py b/third_party/ceres/docs/source/conf.py
deleted file mode 100644
index faa2403..0000000
--- a/third_party/ceres/docs/source/conf.py
+++ /dev/null
@@ -1,254 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Ceres Solver documentation build configuration file, created by
-# sphinx-quickstart on Sun Jan 20 20:34:07 2013.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration -----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax', 'sphinx.ext.ifconfig', 'sphinxcontrib.jquery']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'Ceres Solver'
-copyright = u'2023 Google Inc'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '2.2'
-# The full version, including alpha/beta/rc tags.
-release = '2.2.0'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = []
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-html_theme = 'sphinx_rtd_theme'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-html_theme_path = ["_themes",]
-import sphinx_rtd_theme
-html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-html_title = "Ceres Solver"
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-html_domain_indices = True
-
-# If false, no index is generated.
-html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-html_show_sourcelink = False
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-html_show_sphinx = False
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'CeresSolverdoc'
-
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
-
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'CeresSolver.tex', u'Ceres Solver',
-   u'Sameer Agarwal, Keir Mierle & Others', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    ('index', 'ceressolver', u'Ceres Solver',
-     [u'Sameer Agarwal, Keir Mierle & Others'], 1)
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output ------------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-  ('index', 'CeresSolver', u'Ceres Solver',
-   u'Sameer Agarwal, Keir Mierle & Others', 'CeresSolver', 'One line description of project.',
-   'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# Custom configuration for MathJax.
-#
-# By default MathJax does not use TeX fonts, which is a tragedy. Also
-# scaling the fonts down a bit makes them fit better with font sizing
-# in the "Read The Docs" theme.
-mathjax3_config = {
-'HTML-CSS' : {
-        'availableFonts' : ["TeX"],
-        'scale' : 90
-   }
-}
diff --git a/third_party/ceres/docs/source/contributing.rst b/third_party/ceres/docs/source/contributing.rst
deleted file mode 100644
index cba274c..0000000
--- a/third_party/ceres/docs/source/contributing.rst
+++ /dev/null
@@ -1,146 +0,0 @@
-.. _chapter-contributing:
-
-============
-Contributing
-============
-
-We welcome contributions to Ceres, whether they are new features, bug
-fixes or tests. The Ceres `mailing
-<http://groups.google.com/group/ceres-solver>`_ list is the best place
-for all development related discussions. Please consider joining
-it. If you have ideas on how you would like to contribute to Ceres, it
-is a good idea to let us know on the mailing list before you start
-development. We may have suggestions that will save effort when trying
-to merge your work into the main branch. If you are looking for ideas,
-please let us know about your interest and skills and we will be happy
-to make a suggestion or three.
-
-We follow Google's `C++ Style Guide
-<https://google.github.io/styleguide/cppguide.html>`_ and
-use `git <http://git-scm.com/>`_ for version control. We use the
-`Gerrit <https://ceres-solver-review.googlesource.com/>`_ to collaborate and
-review changes to Ceres. Gerrit enables pre-commit reviews so that
-Ceres can maintain a linear history with clean, reviewed commits, and
-no merges.
-
-We now describe how to set up your development environment and submit
-a change list for review via Gerrit.
-
-Setting up your Environment
-===========================
-
-1. Download and configure ``git``.
-
-   * Mac ``brew install git``.
-   * Linux ``sudo apt-get install git``.
-   * Windows. Download `msysgit
-     <https://code.google.com/p/msysgit/>`_, which includes a minimal
-     `Cygwin <http://www.cygwin.com/>`_ install.
-
-2. Sign up for `Gerrit
-   <https://ceres-solver-review.googlesource.com/>`_. You will also need to
-   `sign the Contributor License Agreement (CLA)
-   <https://opensource.google.com/docs/cla/#sign>`_ with Google, which gives
-   Google a royalty-free unlimited license to use your contributions. You
-   retain copyright.
-
-3. Clone the Ceres Solver ``git`` repository from Gerrit.
-
-   .. code-block:: bash
-
-      git clone https://ceres-solver.googlesource.com/ceres-solver
-
-
-4. Build Ceres, following the instructions in
-   :ref:`chapter-installation`.
-
-   On Mac and Linux, the ``CMake`` build will download and enable
-   the Gerrit pre-commit hook automatically. This pre-submit hook
-   creates ``Change-Id: ...`` lines in your commits.
-
-   If this does not work OR you are on Windows, execute the
-   following in the root directory of the local ``git`` repository:
-
-   .. code-block:: bash
-
-      curl -o .git/hooks/commit-msg https://ceres-solver-review.googlesource.com/tools/hooks/commit-msg
-      chmod +x .git/hooks/commit-msg
-
-5. Configure your Gerrit password with a ``.gitcookies`` which allows pushing
-   to Gerrit without having to enter a very long random password every time:
-
-   * Sign into `http://ceres-solver-review.googlesource.com
-     <http://ceres-solver-review.googlesource.com>`_.
-
-   * Click ``Settings -> HTTP Credentials -> Obtain Password``.
-
-   * (maybe) Select an account for multi-login. This should be the
-     same as your Gerrit login.
-
-   * Click ``Allow access`` when the page requests access to your
-     ``git`` repositories.
-
-   * Follow the instructions from Gerrit to create a ``.gitcookies`` file on
-     your system, either in ``$HOME/.gitcookies`` (Mac and Linux) or
-     ``%USERPROFILE%\.gitcookies`` (Windows). Note that for Windows, please get
-     a recent `Git for Windows <https://git-scm.com/download/win>`_ install to
-     enable automatic lookup in the ``%USERPROFILE%\.gitcookies``.
-
-6. Install ``clang-format``.
-
-   * Mac ``brew install clang-format``.
-   * Linux ``sudo apt-get install clang-format``.
-   * Windows. You can get clang-format with `clang or stand-alone via
-     npm <https://superuser.com/a/1505297/1141693>`_.
-
-   You can ensure all sources files are correctly formatted before
-   committing by manually running ``clang-format -i FILENAME``, by
-   running the script ``./scripts/format_all.sh``, or by configuring
-   your editor to format upon saving.
-
-Submitting a change
-===================
-
-1. Make your changes against master or whatever branch you
-   like. Ensure that the changes are formatted according to
-   ``clang-format``. Commit your changes as one patch. When you
-   commit, the Gerrit hook will add a ``Change-Id:`` line as the last
-   line of the commit.
-
-   Make sure that your commit message is formatted in the `50/72 style
-   <http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html>`_.
-
-2. Push your changes to the Ceres Gerrit instance:
-
-   .. code-block:: bash
-
-      git push origin HEAD:refs/for/master
-
-   When the push succeeds, the console will display a URL showing the
-   address of the review. Go to the URL and add at least one of the
-   maintainers (Sameer Agarwal, Keir Mierle, Alex Stewart, William
-   Rucklidge or Sergiu Deitsch) as reviewers.
-
-3. Wait for a review.
-
-4. Once review comments come in, address them. Please reply to each
-   comment in Gerrit, which makes the re-review process easier. After
-   modifying the code in your ``git`` instance, *don't make a new
-   commit*. Instead, update the last commit using a command like the
-   following:
-
-   .. code-block:: bash
-
-      git commit --amend -a
-
-   This will update the last commit, so that it has both the original
-   patch and your updates as a single commit. You will have a chance
-   to edit the commit message as well. Push the new commit to Gerrit
-   as before.
-
-   Gerrit will use the ``Change-Id:`` to match the previous commit
-   with the new one. The review interface retains your original patch,
-   but also shows the new patch.
-
-   Publish your responses to the comments, and wait for a new round
-   of reviews.
diff --git a/third_party/ceres/docs/source/derivatives.rst b/third_party/ceres/docs/source/derivatives.rst
deleted file mode 100644
index d9a52b0..0000000
--- a/third_party/ceres/docs/source/derivatives.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-on_derivatives:
-
-==============
-On Derivatives
-==============
-
-Ceres Solver, like all gradient based optimization algorithms, depends
-on being able to evaluate the objective function and its derivatives
-at arbitrary points in its domain. Indeed, defining the objective
-function and its `Jacobian
-<https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant>`_ is
-the principal task that the user is required to perform when solving
-an optimization problem using Ceres Solver. The correct and efficient
-computation of the Jacobian is the key to good performance.
-
-Ceres Solver offers considerable flexibility in how the user can
-provide derivatives to the solver. She can use:
-
-#. :ref:`chapter-analytical_derivatives`: The user figures out the
-   derivatives herself, by hand or using a tool like `Maple
-   <https://www.maplesoft.com/products/maple/>`_ or `Mathematica
-   <https://www.wolfram.com/mathematica/>`_, and implements them in a
-   :class:`CostFunction`.
-#. :ref:`chapter-numerical_derivatives`: Ceres numerically computes
-   the derivative using finite differences.
-#. :ref:`chapter-automatic_derivatives`: Ceres automatically computes
-   the analytic derivative using C++ templates and operator
-   overloading.
-
-Which of these three approaches (alone or in combination) should be
-used depends on the situation and the tradeoffs the user is willing to
-make. Unfortunately, numerical optimization textbooks rarely discuss
-these issues in detail and the user is left to her own devices.
-
-The aim of this article is to fill this gap and describe each of these
-three approaches in the context of Ceres Solver with sufficient detail
-that the user can make an informed choice.
-
-For the impatient amongst you, here is some high level advice:
-
-#. Use :ref:`chapter-automatic_derivatives`.
-#. In some cases it maybe worth using
-   :ref:`chapter-analytical_derivatives`.
-#. Avoid :ref:`chapter-numerical_derivatives`. Use it as a measure of
-   last resort, mostly to interface with external libraries.
-
-For the rest, read on.
-
-.. toctree::
-   :maxdepth: 1
-
-   spivak_notation
-   analytical_derivatives
-   numerical_derivatives
-   automatic_derivatives
-   interfacing_with_autodiff
-   inverse_and_implicit_function_theorems
diff --git a/third_party/ceres/docs/source/faqs.rst b/third_party/ceres/docs/source/faqs.rst
deleted file mode 100644
index 65c64e6..0000000
--- a/third_party/ceres/docs/source/faqs.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-.. _chapter-tricks:
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-===================
-FAQS, Tips & Tricks
-===================
-
-Answers to frequently asked questions, tricks of the trade and general
-wisdom.
-
-.. toctree::
-   :maxdepth: 2
-
-   modeling_faqs
-   solving_faqs
diff --git a/third_party/ceres/docs/source/features.rst b/third_party/ceres/docs/source/features.rst
deleted file mode 100644
index 609f41c..0000000
--- a/third_party/ceres/docs/source/features.rst
+++ /dev/null
@@ -1,96 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-====
-Why?
-====
-.. _chapter-features:
-
-* **Code Quality** - Ceres Solver has been used in production at
-  Google since 2011. It is clean, extensively tested and well
-  documented code that is actively developed and supported.
-
-* **Modeling API** - It is rarely the case that one starts with the
-  exact and complete formulation of the problem that one is trying to
-  solve. Ceres's modeling API has been designed so that the user can
-  easily build and modify the objective function, one term at a
-  time. And to do so without worrying about how the solver is going to
-  deal with the resulting changes in the sparsity/structure of the
-  underlying problem.
-
-  - **Derivatives** Supplying derivatives is perhaps the most tedious
-    and error prone part of using an optimization library.  Ceres
-    ships with `automatic`_ and `numeric`_ differentiation. So you
-    never have to compute derivatives by hand (unless you really want
-    to). Not only this, Ceres allows you to mix automatic, numeric and
-    analytical derivatives in any combination that you want.
-
-  - **Robust Loss Functions** Most non-linear least squares problems
-    involve data. If there is data, there will be outliers. Ceres
-    allows the user to *shape* their residuals using a
-    :class:`LossFunction` to reduce the influence of outliers.
-
-  - **Manifolds** In many cases, some parameters lie on a manifold
-    other than Euclidean space, e.g., rotation matrices. In such
-    cases, the user can specify the geometry of the local tangent
-    space by specifying a :class:`Manifold` object.
-
-* **Solver Choice** Depending on the size, sparsity structure, time &
-  memory budgets, and solution quality requirements, different
-  optimization algorithms will suit different needs. To this end,
-  Ceres Solver comes with a variety of optimization algorithms:
-
-  - **Trust Region Solvers** - Ceres supports Levenberg-Marquardt,
-    Powell's Dogleg, and Subspace dogleg methods. The key
-    computational cost in all of these methods is the solution of a
-    linear system. To this end Ceres ships with a variety of linear
-    solvers - dense QR and dense Cholesky factorization (using
-    `Eigen`_, `LAPACK`_ or `CUDA`_) for dense problems, sparse
-    Cholesky factorization (`SuiteSparse`_, `Apple's Accelerate`_,
-    `Eigen`_) for large sparse problems, custom Schur complement based
-    dense, sparse, and iterative linear solvers for `bundle
-    adjustment`_ problems.
-
-  - **Line Search Solvers** - When the problem size is so large that
-    storing and factoring the Jacobian is not feasible or a low
-    accuracy solution is required cheaply, Ceres offers a number of
-    line search based algorithms. This includes a number of variants
-    of Non-linear Conjugate Gradients, BFGS and LBFGS.
-
-* **Speed** - Ceres Solver has been extensively optimized, with C++
-  templating, hand written linear algebra routines and modern C++
-  threads based multithreading of the Jacobian evaluation and the
-  linear solvers.
-
-* **GPU Acceleration** If your system supports `CUDA`_ then Ceres
-  Solver can use the Nvidia GPU on your system to speed up the solver.
-
-* **Solution Quality** Ceres is the `best performing`_ solver on the
-  NIST problem set used by Mondragon and Borchers for benchmarking
-  non-linear least squares solvers.
-
-* **Covariance estimation** - Evaluate the sensitivity/uncertainty of
-  the solution by evaluating all or part of the covariance
-  matrix. Ceres is one of the few solvers that allows you to do this
-  analysis at scale.
-
-* **Community** Since its release as an open source software, Ceres
-  has developed an active developer community that contributes new
-  features, bug fixes and support.
-
-* **Portability** - Runs on *Linux*, *Windows*, *Mac OS X*, *Android*
-  *and iOS*.
-
-* **BSD Licensed** The BSD license offers the flexibility to ship your
-  application
-
-.. _best performing: https://groups.google.com/forum/#!topic/ceres-solver/UcicgMPgbXw
-.. _bundle adjustment: http://en.wikipedia.org/wiki/Bundle_adjustment
-.. _SuiteSparse: http://www.cise.ufl.edu/research/sparse/SuiteSparse/
-.. _Eigen: http://eigen.tuxfamily.org/
-.. _LAPACK: http://www.netlib.org/lapack/
-.. _automatic: http://en.wikipedia.org/wiki/Automatic_differentiation
-.. _numeric: http://en.wikipedia.org/wiki/Numerical_differentiation
-.. _CUDA : https://developer.nvidia.com/cuda-toolkit
-.. _Apple's Accelerate: https://developer.apple.com/documentation/accelerate/sparse_solvers
diff --git a/third_party/ceres/docs/source/forward_central_error.png b/third_party/ceres/docs/source/forward_central_error.png
deleted file mode 100644
index 56d10b0..0000000
--- a/third_party/ceres/docs/source/forward_central_error.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/forward_central_ridders_error.png b/third_party/ceres/docs/source/forward_central_ridders_error.png
deleted file mode 100644
index ecea674..0000000
--- a/third_party/ceres/docs/source/forward_central_ridders_error.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/gradient_solver.rst b/third_party/ceres/docs/source/gradient_solver.rst
deleted file mode 100644
index 4e3fc71..0000000
--- a/third_party/ceres/docs/source/gradient_solver.rst
+++ /dev/null
@@ -1,517 +0,0 @@
-.. highlight:: c++
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-gradient_problem_solver:
-
-==================================
-General Unconstrained Minimization
-==================================
-
-Modeling
-========
-
-:class:`FirstOrderFunction`
----------------------------
-
-.. class:: FirstOrderFunction
-
-  Instances of :class:`FirstOrderFunction` implement the evaluation of
-  a function and its gradient.
-
-  .. code-block:: c++
-
-   class FirstOrderFunction {
-     public:
-      virtual ~FirstOrderFunction() {}
-      virtual bool Evaluate(const double* const parameters,
-                            double* cost,
-                            double* gradient) const = 0;
-      virtual int NumParameters() const = 0;
-   };
-
-.. function:: bool FirstOrderFunction::Evaluate(const double* const parameters, double* cost, double* gradient) const
-
-   Evaluate the cost/value of the function. If ``gradient`` is not
-   ``nullptr`` then evaluate the gradient too. If evaluation is
-   successful return, ``true`` else return ``false``.
-
-   ``cost`` guaranteed to be never ``nullptr``, ``gradient`` can be ``nullptr``.
-
-.. function:: int FirstOrderFunction::NumParameters() const
-
-   Number of parameters in the domain of the function.
-
-
-:class:`GradientProblem`
-------------------------
-
-.. class:: GradientProblem
-
-.. code-block:: c++
-
-  class GradientProblem {
-   public:
-    explicit GradientProblem(FirstOrderFunction* function);
-    GradientProblem(FirstOrderFunction* function,
-                    Manifold* manifold);
-    int NumParameters() const;
-    int NumTangentParameters() const;
-    bool Evaluate(const double* parameters, double* cost, double* gradient) const;
-    bool Plus(const double* x, const double* delta, double* x_plus_delta) const;
-  };
-
-Instances of :class:`GradientProblem` represent general non-linear
-optimization problems that must be solved using just the value of the
-objective function and its gradient. Unlike the :class:`Problem`
-class, which can only be used to model non-linear least squares
-problems, instances of :class:`GradientProblem` not restricted in the
-form of the objective function.
-
-Structurally :class:`GradientProblem` is a composition of a
-:class:`FirstOrderFunction` and optionally a :class:`Manifold`.
-
-The :class:`FirstOrderFunction` is responsible for evaluating the cost
-and gradient of the objective function.
-
-The :class:`Manifold` is responsible for going back and forth between the
-ambient space and the local tangent space. When a :class:`Manifold` is not
-provided, then the tangent space is assumed to coincide with the ambient
-Euclidean space that the gradient vector lives in.
-
-The constructor takes ownership of the :class:`FirstOrderFunction` and
-:class:`Manifold` objects passed to it.
-
-
-.. function:: void Solve(const GradientProblemSolver::Options& options, const GradientProblem& problem, double* parameters, GradientProblemSolver::Summary* summary)
-
-   Solve the given :class:`GradientProblem` using the values in
-   ``parameters`` as the initial guess of the solution.
-
-
-Solving
-=======
-
-:class:`GradientProblemSolver::Options`
----------------------------------------
-
-.. class:: GradientProblemSolver::Options
-
-   :class:`GradientProblemSolver::Options` controls the overall
-   behavior of the solver. We list the various settings and their
-   default values below.
-
-.. function:: bool GradientProblemSolver::Options::IsValid(std::string* error) const
-
-   Validate the values in the options struct and returns true on
-   success. If there is a problem, the method returns false with
-   ``error`` containing a textual description of the cause.
-
-.. member:: LineSearchDirectionType GradientProblemSolver::Options::line_search_direction_type
-
-   Default: ``LBFGS``
-
-   Choices are ``STEEPEST_DESCENT``, ``NONLINEAR_CONJUGATE_GRADIENT``,
-   ``BFGS`` and ``LBFGS``.
-
-.. member:: LineSearchType GradientProblemSolver::Options::line_search_type
-
-   Default: ``WOLFE``
-
-   Choices are ``ARMIJO`` and ``WOLFE`` (strong Wolfe conditions).
-   Note that in order for the assumptions underlying the ``BFGS`` and
-   ``LBFGS`` line search direction algorithms to be guaranteed to be
-   satisfied, the ``WOLFE`` line search should be used.
-
-.. member:: NonlinearConjugateGradientType GradientProblemSolver::Options::nonlinear_conjugate_gradient_type
-
-   Default: ``FLETCHER_REEVES``
-
-   Choices are ``FLETCHER_REEVES``, ``POLAK_RIBIERE`` and
-   ``HESTENES_STIEFEL``.
-
-.. member:: int GradientProblemSolver::Options::max_lbfs_rank
-
-   Default: 20
-
-   The L-BFGS hessian approximation is a low rank approximation to the
-   inverse of the Hessian matrix. The rank of the approximation
-   determines (linearly) the space and time complexity of using the
-   approximation. Higher the rank, the better is the quality of the
-   approximation. The increase in quality is however is bounded for a
-   number of reasons.
-
-     1. The method only uses secant information and not actual
-        derivatives.
-
-     2. The Hessian approximation is constrained to be positive
-        definite.
-
-   So increasing this rank to a large number will cost time and space
-   complexity without the corresponding increase in solution
-   quality. There are no hard and fast rules for choosing the maximum
-   rank. The best choice usually requires some problem specific
-   experimentation.
-
-.. member:: bool GradientProblemSolver::Options::use_approximate_eigenvalue_bfgs_scaling
-
-   Default: ``false``
-
-   As part of the ``BFGS`` update step / ``LBFGS`` right-multiply
-   step, the initial inverse Hessian approximation is taken to be the
-   Identity.  However, [Oren]_ showed that using instead :math:`I *
-   \gamma`, where :math:`\gamma` is a scalar chosen to approximate an
-   eigenvalue of the true inverse Hessian can result in improved
-   convergence in a wide variety of cases.  Setting
-   ``use_approximate_eigenvalue_bfgs_scaling`` to true enables this
-   scaling in ``BFGS`` (before first iteration) and ``LBFGS`` (at each
-   iteration).
-
-   Precisely, approximate eigenvalue scaling equates to
-
-   .. math:: \gamma = \frac{y_k' s_k}{y_k' y_k}
-
-   With:
-
-  .. math:: y_k = \nabla f_{k+1} - \nabla f_k
-  .. math:: s_k = x_{k+1} - x_k
-
-  Where :math:`f()` is the line search objective and :math:`x` the
-  vector of parameter values [NocedalWright]_.
-
-  It is important to note that approximate eigenvalue scaling does
-  **not** *always* improve convergence, and that it can in fact
-  *significantly* degrade performance for certain classes of problem,
-  which is why it is disabled by default.  In particular it can
-  degrade performance when the sensitivity of the problem to different
-  parameters varies significantly, as in this case a single scalar
-  factor fails to capture this variation and detrimentally downscales
-  parts of the Jacobian approximation which correspond to
-  low-sensitivity parameters. It can also reduce the robustness of the
-  solution to errors in the Jacobians.
-
-.. member:: LineSearchInterpolationType GradientProblemSolver::Options::line_search_interpolation_type
-
-   Default: ``CUBIC``
-
-   Degree of the polynomial used to approximate the objective
-   function. Valid values are ``BISECTION``, ``QUADRATIC`` and
-   ``CUBIC``.
-
-.. member:: double GradientProblemSolver::Options::min_line_search_step_size
-
-   The line search terminates if:
-
-   .. math:: \|\Delta x_k\|_\infty < \text{min_line_search_step_size}
-
-   where :math:`\|\cdot\|_\infty` refers to the max norm, and
-   :math:`\Delta x_k` is the step change in the parameter values at
-   the :math:`k`-th iteration.
-
-.. member:: double GradientProblemSolver::Options::line_search_sufficient_function_decrease
-
-   Default: ``1e-4``
-
-   Solving the line search problem exactly is computationally
-   prohibitive. Fortunately, line search based optimization algorithms
-   can still guarantee convergence if instead of an exact solution,
-   the line search algorithm returns a solution which decreases the
-   value of the objective function sufficiently. More precisely, we
-   are looking for a step size s.t.
-
-   .. math:: f(\text{step_size}) \le f(0) + \text{sufficient_decrease} * [f'(0) * \text{step_size}]
-
-   This condition is known as the Armijo condition.
-
-.. member:: double GradientProblemSolver::Options::max_line_search_step_contraction
-
-   Default: ``1e-3``
-
-   In each iteration of the line search,
-
-   .. math:: \text{new_step_size} \geq \text{max_line_search_step_contraction} * \text{step_size}
-
-   Note that by definition, for contraction:
-
-   .. math:: 0 < \text{max_step_contraction} < \text{min_step_contraction} < 1
-
-.. member:: double GradientProblemSolver::Options::min_line_search_step_contraction
-
-   Default: ``0.6``
-
-   In each iteration of the line search,
-
-   .. math:: \text{new_step_size} \leq \text{min_line_search_step_contraction} * \text{step_size}
-
-   Note that by definition, for contraction:
-
-   .. math:: 0 < \text{max_step_contraction} < \text{min_step_contraction} < 1
-
-.. member:: int GradientProblemSolver::Options::max_num_line_search_step_size_iterations
-
-   Default: ``20``
-
-   Maximum number of trial step size iterations during each line
-   search, if a step size satisfying the search conditions cannot be
-   found within this number of trials, the line search will stop.
-
-   As this is an 'artificial' constraint (one imposed by the user, not
-   the underlying math), if ``WOLFE`` line search is being used, *and*
-   points satisfying the Armijo sufficient (function) decrease
-   condition have been found during the current search (in :math:`\leq`
-   ``max_num_line_search_step_size_iterations``).  Then, the step size
-   with the lowest function value which satisfies the Armijo condition
-   will be returned as the new valid step, even though it does *not*
-   satisfy the strong Wolfe conditions.  This behaviour protects
-   against early termination of the optimizer at a sub-optimal point.
-
-.. member:: int GradientProblemSolver::Options::max_num_line_search_direction_restarts
-
-   Default: ``5``
-
-   Maximum number of restarts of the line search direction algorithm
-   before terminating the optimization. Restarts of the line search
-   direction algorithm occur when the current algorithm fails to
-   produce a new descent direction. This typically indicates a
-   numerical failure, or a breakdown in the validity of the
-   approximations used.
-
-.. member:: double GradientProblemSolver::Options::line_search_sufficient_curvature_decrease
-
-   Default: ``0.9``
-
-   The strong Wolfe conditions consist of the Armijo sufficient
-   decrease condition, and an additional requirement that the
-   step size be chosen s.t. the *magnitude* ('strong' Wolfe
-   conditions) of the gradient along the search direction
-   decreases sufficiently. Precisely, this second condition
-   is that we seek a step size s.t.
-
-   .. math:: \|f'(\text{step_size})\| \leq \text{sufficient_curvature_decrease} * \|f'(0)\|
-
-   Where :math:`f()` is the line search objective and :math:`f'()` is the derivative
-   of :math:`f` with respect to the step size: :math:`\frac{d f}{d~\text{step size}}`.
-
-.. member:: double GradientProblemSolver::Options::max_line_search_step_expansion
-
-   Default: ``10.0``
-
-   During the bracketing phase of a Wolfe line search, the step size
-   is increased until either a point satisfying the Wolfe conditions
-   is found, or an upper bound for a bracket containing a point
-   satisfying the conditions is found.  Precisely, at each iteration
-   of the expansion:
-
-   .. math:: \text{new_step_size} \leq \text{max_step_expansion} * \text{step_size}
-
-   By definition for expansion
-
-   .. math:: \text{max_step_expansion} > 1.0
-
-.. member:: int GradientProblemSolver::Options::max_num_iterations
-
-   Default: ``50``
-
-   Maximum number of iterations for which the solver should run.
-
-.. member:: double GradientProblemSolver::Options::max_solver_time_in_seconds
-
-   Default: ``1e6``
-   Maximum amount of time for which the solver should run.
-
-.. member:: double GradientProblemSolver::Options::function_tolerance
-
-   Default: ``1e-6``
-
-   Solver terminates if
-
-   .. math:: \frac{|\Delta \text{cost}|}{\text{cost}} \leq \text{function_tolerance}
-
-   where, :math:`\Delta \text{cost}` is the change in objective
-   function value (up or down) in the current iteration of the line search.
-
-.. member:: double GradientProblemSolver::Options::gradient_tolerance
-
-   Default: ``1e-10``
-
-   Solver terminates if
-
-   .. math:: \|x - \Pi \boxplus(x, -g(x))\|_\infty \leq \text{gradient_tolerance}
-
-   where :math:`\|\cdot\|_\infty` refers to the max norm, :math:`\Pi`
-   is projection onto the bounds constraints and :math:`\boxplus` is
-   Plus operation for the manifold associated with the parameter
-   vector.
-
-.. member:: double GradientProblemSolver::Options::parameter_tolerance
-
-   Default: ``1e-8``
-
-   Solver terminates if
-
-   .. math:: \|\Delta x\| \leq (\|x\| + \text{parameter_tolerance}) * \text{parameter_tolerance}
-
-   where :math:`\Delta x` is the step computed by the linear solver in
-   the current iteration of the line search.
-
-.. member:: LoggingType GradientProblemSolver::Options::logging_type
-
-   Default: ``PER_MINIMIZER_ITERATION``
-
-.. member:: bool GradientProblemSolver::Options::minimizer_progress_to_stdout
-
-   Default: ``false``
-
-   By default the :class:`Minimizer` progress is logged to ``STDERR``
-   depending on the ``vlog`` level. If this flag is set to true, and
-   :member:`GradientProblemSolver::Options::logging_type` is not
-   ``SILENT``, the logging output is sent to ``STDOUT``.
-
-   The progress display looks like
-
-   .. code-block:: bash
-
-      0: f: 2.317806e+05 d: 0.00e+00 g: 3.19e-01 h: 0.00e+00 s: 0.00e+00 e:  0 it: 2.98e-02 tt: 8.50e-02
-      1: f: 2.312019e+05 d: 5.79e+02 g: 3.18e-01 h: 2.41e+01 s: 1.00e+00 e:  1 it: 4.54e-02 tt: 1.31e-01
-      2: f: 2.300462e+05 d: 1.16e+03 g: 3.17e-01 h: 4.90e+01 s: 2.54e-03 e:  1 it: 4.96e-02 tt: 1.81e-01
-
-   Here
-
-   #. ``f`` is the value of the objective function.
-   #. ``d`` is the change in the value of the objective function if
-      the step computed in this iteration is accepted.
-   #. ``g`` is the max norm of the gradient.
-   #. ``h`` is the change in the parameter vector.
-   #. ``s`` is the optimal step length computed by the line search.
-   #. ``it`` is the time take by the current iteration.
-   #. ``tt`` is the total time taken by the minimizer.
-
-.. member:: std::vector<IterationCallback> GradientProblemSolver::Options::callbacks
-
-   Callbacks that are executed at the end of each iteration of the
-   :class:`Minimizer`. They are executed in the order that they are
-   specified in this vector. By default, parameter blocks are updated
-   only at the end of the optimization, i.e., when the
-   :class:`Minimizer` terminates. This behavior is controlled by
-   :member:`GradientProblemSolver::Options::update_state_every_iteration`. If
-   the user wishes to have access to the update parameter blocks when
-   his/her callbacks are executed, then set
-   :member:`GradientProblemSolver::Options::update_state_every_iteration`
-   to true.
-
-   The solver does NOT take ownership of these pointers.
-
-
-.. member:: bool GradientProblemSolver::Options::update_state_every_iteration
-
-   Default: ``false``
-
-   Normally the parameter vector is only updated when the solver
-   terminates. Setting this to true updates it every iteration. This
-   setting is useful when building an interactive application using
-   Ceres and using an :class:`IterationCallback`.
-
-:class:`GradientProblemSolver::Summary`
----------------------------------------
-
-.. class:: GradientProblemSolver::Summary
-
-   Summary of the various stages of the solver after termination.
-
-.. function:: std::string GradientProblemSolver::Summary::BriefReport() const
-
-   A brief one line description of the state of the solver after
-   termination.
-
-.. function:: std::string GradientProblemSolver::Summary::FullReport() const
-
-   A full multiline description of the state of the solver after
-   termination.
-
-.. function:: bool GradientProblemSolver::Summary::IsSolutionUsable() const
-
-   Whether the solution returned by the optimization algorithm can be
-   relied on to be numerically sane. This will be the case if
-   `GradientProblemSolver::Summary:termination_type` is set to `CONVERGENCE`,
-   `USER_SUCCESS` or `NO_CONVERGENCE`, i.e., either the solver
-   converged by meeting one of the convergence tolerances or because
-   the user indicated that it had converged or it ran to the maximum
-   number of iterations or time.
-
-.. member:: TerminationType GradientProblemSolver::Summary::termination_type
-
-   The cause of the minimizer terminating.
-
-.. member:: std::string GradientProblemSolver::Summary::message
-
-   Reason why the solver terminated.
-
-.. member:: double GradientProblemSolver::Summary::initial_cost
-
-   Cost of the problem (value of the objective function) before the
-   optimization.
-
-.. member:: double GradientProblemSolver::Summary::final_cost
-
-   Cost of the problem (value of the objective function) after the
-   optimization.
-
-.. member:: std::vector<IterationSummary> GradientProblemSolver::Summary::iterations
-
-   :class:`IterationSummary` for each minimizer iteration in order.
-
-.. member:: int num_cost_evaluations
-
-   Number of times the cost (and not the gradient) was evaluated.
-
-.. member:: int num_gradient_evaluations
-
-   Number of times the gradient (and the cost) were evaluated.
-
-.. member:: double GradientProblemSolver::Summary::total_time_in_seconds
-
-   Time (in seconds) spent in the solver.
-
-.. member:: double GradientProblemSolver::Summary::cost_evaluation_time_in_seconds
-
-   Time (in seconds) spent evaluating the cost vector.
-
-.. member:: double GradientProblemSolver::Summary::gradient_evaluation_time_in_seconds
-
-   Time (in seconds) spent evaluating the gradient vector.
-
-.. member:: int GradientProblemSolver::Summary::num_parameters
-
-   Number of parameters in the problem.
-
-.. member:: int GradientProblemSolver::Summary::num_tangent_parameters
-
-   Dimension of the tangent space of the problem. This is different
-   from :member:`GradientProblemSolver::Summary::num_parameters` if a
-   :class:`Manifold` object is used.
-
-.. member:: LineSearchDirectionType GradientProblemSolver::Summary::line_search_direction_type
-
-   Type of line search direction used.
-
-.. member:: LineSearchType GradientProblemSolver::Summary::line_search_type
-
-   Type of the line search algorithm used.
-
-.. member:: LineSearchInterpolationType GradientProblemSolver::Summary::line_search_interpolation_type
-
-   When performing line search, the degree of the polynomial used to
-   approximate the objective function.
-
-.. member:: NonlinearConjugateGradientType GradientProblemSolver::Summary::nonlinear_conjugate_gradient_type
-
-   If the line search direction is `NONLINEAR_CONJUGATE_GRADIENT`,
-   then this indicates the particular variant of non-linear conjugate
-   gradient used.
-
-.. member:: int GradientProblemSolver::Summary::max_lbfgs_rank
-
-   If the type of the line search direction is `LBFGS`, then this
-   indicates the rank of the Hessian approximation.
diff --git a/third_party/ceres/docs/source/gradient_tutorial.rst b/third_party/ceres/docs/source/gradient_tutorial.rst
deleted file mode 100644
index 2af44e1..0000000
--- a/third_party/ceres/docs/source/gradient_tutorial.rst
+++ /dev/null
@@ -1,204 +0,0 @@
-.. highlight:: c++
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-gradient_tutorial:
-
-==================================
-General Unconstrained Minimization
-==================================
-
-Ceres Solver besides being able to solve non-linear least squares
-problem can also solve general unconstrained problems using just their
-objective function value and gradients. In this chapter we will see
-how to do this.
-
-Rosenbrock's Function
-=====================
-
-Consider minimizing the famous `Rosenbrock's function
-<http://en.wikipedia.org/wiki/Rosenbrock_function>`_ [#f1]_.
-
-The simplest way to minimize is to define a templated functor to
-evaluate the objective value of this function and then use Ceres
-Solver's automatic differentiation to compute its derivatives.
-
-We begin by defining a templated functor and then using
-``AutoDiffFirstOrderFunction`` to construct an instance of the
-``FirstOrderFunction`` interface. This is the object that is
-responsible for computing the objective function value and the
-gradient (if required). This is the analog of the
-:class:`CostFunction` when defining non-linear least squares problems
-in Ceres.
-
-.. code::
-
-  // f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-  struct Rosenbrock {
-    template <typename T>
-    bool operator()(const T* parameters, T* cost) const {
-      const T x = parameters[0];
-      const T y = parameters[1];
-      cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-      return true;
-    }
-
-    static ceres::FirstOrderFunction* Create() {
-      constexpr int kNumParameters = 2;
-      return new ceres::AutoDiffFirstOrderFunction<Rosenbrock, kNumParameters>();
-    }
-  };
-
-
-Minimizing it then is a straightforward matter of constructing a
-:class:`GradientProblem` object and calling :func:`Solve` on it.
-
-.. code::
-
-    double parameters[2] = {-1.2, 1.0};
-
-    ceres::GradientProblem problem(Rosenbrock::Create());
-
-    ceres::GradientProblemSolver::Options options;
-    options.minimizer_progress_to_stdout = true;
-    ceres::GradientProblemSolver::Summary summary;
-    ceres::Solve(options, problem, parameters, &summary);
-
-    std::cout << summary.FullReport() << "\n";
-
-Executing this code results, solve the problem using limited memory
-`BFGS
-<http://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm>`_
-algorithm.
-
-.. code-block:: bash
-
-       0: f: 2.420000e+01 d: 0.00e+00 g: 2.16e+02 h: 0.00e+00 s: 0.00e+00 e:  0 it: 1.19e-05 tt: 1.19e-05
-       1: f: 4.280493e+00 d: 1.99e+01 g: 1.52e+01 h: 2.01e-01 s: 8.62e-04 e:  2 it: 7.30e-05 tt: 1.72e-04
-       2: f: 3.571154e+00 d: 7.09e-01 g: 1.35e+01 h: 3.78e-01 s: 1.34e-01 e:  3 it: 1.60e-05 tt: 1.93e-04
-       3: f: 3.440869e+00 d: 1.30e-01 g: 1.73e+01 h: 1.36e-01 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 1.97e-04
-       4: f: 3.213597e+00 d: 2.27e-01 g: 1.55e+01 h: 1.06e-01 s: 4.59e-01 e:  1 it: 1.19e-06 tt: 2.00e-04
-       5: f: 2.839723e+00 d: 3.74e-01 g: 1.05e+01 h: 1.34e-01 s: 5.24e-01 e:  1 it: 9.54e-07 tt: 2.03e-04
-       6: f: 2.448490e+00 d: 3.91e-01 g: 1.29e+01 h: 3.04e-01 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 2.05e-04
-       7: f: 1.943019e+00 d: 5.05e-01 g: 4.00e+00 h: 8.81e-02 s: 7.43e-01 e:  1 it: 9.54e-07 tt: 2.08e-04
-       8: f: 1.731469e+00 d: 2.12e-01 g: 7.36e+00 h: 1.71e-01 s: 4.60e-01 e:  2 it: 2.15e-06 tt: 2.11e-04
-       9: f: 1.503267e+00 d: 2.28e-01 g: 6.47e+00 h: 8.66e-02 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 2.14e-04
-      10: f: 1.228331e+00 d: 2.75e-01 g: 2.00e+00 h: 7.70e-02 s: 7.90e-01 e:  1 it: 0.00e+00 tt: 2.16e-04
-      11: f: 1.016523e+00 d: 2.12e-01 g: 5.15e+00 h: 1.39e-01 s: 3.76e-01 e:  2 it: 1.91e-06 tt: 2.25e-04
-      12: f: 9.145773e-01 d: 1.02e-01 g: 6.74e+00 h: 7.98e-02 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 2.28e-04
-      13: f: 7.508302e-01 d: 1.64e-01 g: 3.88e+00 h: 5.76e-02 s: 4.93e-01 e:  1 it: 9.54e-07 tt: 2.30e-04
-      14: f: 5.832378e-01 d: 1.68e-01 g: 5.56e+00 h: 1.42e-01 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 2.33e-04
-      15: f: 3.969581e-01 d: 1.86e-01 g: 1.64e+00 h: 1.17e-01 s: 1.00e+00 e:  1 it: 1.19e-06 tt: 2.36e-04
-      16: f: 3.171557e-01 d: 7.98e-02 g: 3.84e+00 h: 1.18e-01 s: 3.97e-01 e:  2 it: 1.91e-06 tt: 2.39e-04
-      17: f: 2.641257e-01 d: 5.30e-02 g: 3.27e+00 h: 6.14e-02 s: 1.00e+00 e:  1 it: 1.19e-06 tt: 2.42e-04
-      18: f: 1.909730e-01 d: 7.32e-02 g: 5.29e-01 h: 8.55e-02 s: 6.82e-01 e:  1 it: 9.54e-07 tt: 2.45e-04
-      19: f: 1.472012e-01 d: 4.38e-02 g: 3.11e+00 h: 1.20e-01 s: 3.47e-01 e:  2 it: 1.91e-06 tt: 2.49e-04
-      20: f: 1.093558e-01 d: 3.78e-02 g: 2.97e+00 h: 8.43e-02 s: 1.00e+00 e:  1 it: 2.15e-06 tt: 2.52e-04
-      21: f: 6.710346e-02 d: 4.23e-02 g: 1.42e+00 h: 9.64e-02 s: 8.85e-01 e:  1 it: 8.82e-06 tt: 2.81e-04
-      22: f: 3.993377e-02 d: 2.72e-02 g: 2.30e+00 h: 1.29e-01 s: 4.63e-01 e:  2 it: 7.87e-06 tt: 2.96e-04
-      23: f: 2.911794e-02 d: 1.08e-02 g: 2.55e+00 h: 6.55e-02 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.00e-04
-      24: f: 1.457683e-02 d: 1.45e-02 g: 2.77e-01 h: 6.37e-02 s: 6.14e-01 e:  1 it: 1.19e-06 tt: 3.03e-04
-      25: f: 8.577515e-03 d: 6.00e-03 g: 2.86e+00 h: 1.40e-01 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.06e-04
-      26: f: 3.486574e-03 d: 5.09e-03 g: 1.76e-01 h: 1.23e-02 s: 1.00e+00 e:  1 it: 1.19e-06 tt: 3.09e-04
-      27: f: 1.257570e-03 d: 2.23e-03 g: 1.39e-01 h: 5.08e-02 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.12e-04
-      28: f: 2.783568e-04 d: 9.79e-04 g: 6.20e-01 h: 6.47e-02 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.15e-04
-      29: f: 2.533399e-05 d: 2.53e-04 g: 1.68e-02 h: 1.98e-03 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.17e-04
-      30: f: 7.591572e-07 d: 2.46e-05 g: 5.40e-03 h: 9.27e-03 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.20e-04
-      31: f: 1.902460e-09 d: 7.57e-07 g: 1.62e-03 h: 1.89e-03 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.23e-04
-      32: f: 1.003030e-12 d: 1.90e-09 g: 3.50e-05 h: 3.52e-05 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.26e-04
-      33: f: 4.835994e-17 d: 1.00e-12 g: 1.05e-07 h: 1.13e-06 s: 1.00e+00 e:  1 it: 1.19e-06 tt: 3.34e-04
-      34: f: 1.885250e-22 d: 4.84e-17 g: 2.69e-10 h: 1.45e-08 s: 1.00e+00 e:  1 it: 9.54e-07 tt: 3.37e-04
-
-    Solver Summary (v 2.2.0-eigen-(3.4.0)-lapack-suitesparse-(7.1.0)-metis-(5.1.0)-acceleratesparse-eigensparse)
-
-    Parameters                                  2
-    Line search direction              LBFGS (20)
-    Line search type                  CUBIC WOLFE
-
-
-    Cost:
-    Initial                          2.420000e+01
-    Final                            1.955192e-27
-    Change                           2.420000e+01
-
-    Minimizer iterations                       36
-
-    Time (in seconds):
-
-      Cost evaluation                    0.000000 (0)
-      Gradient & cost evaluation         0.000000 (44)
-      Polynomial minimization            0.000061
-    Total                                0.000438
-
-    Termination:                      CONVERGENCE (Parameter tolerance reached. Relative step_norm: 1.890726e-11 <= 1.000000e-08.)
-
-    Initial x: -1.2 y: 1
-    Final   x: 1 y: 1
-
-
-
-
-If you are unable to use automatic differentiation for some reason
-(say because you need to call an external library), then you can
-use numeric differentiation. In that case the functor is defined as
-follows [#f2]_.
-
-.. code::
-
-  // f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-  struct Rosenbrock {
-    bool operator()(const double* parameters, double* cost) const {
-      const double x = parameters[0];
-      const double y = parameters[1];
-      cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-      return true;
-    }
-
-    static ceres::FirstOrderFunction* Create() {
-      constexpr int kNumParameters = 2;
-      return new ceres::NumericDiffFirstOrderFunction<Rosenbrock,
-                                                      ceres::CENTRAL,
-                                                      kNumParameters>();
-    }
-  };
-
-And finally, if you would rather compute the derivatives by hand (say
-because the size of the parameter vector is too large to be
-automatically differentiated). Then you should define an instance of
-`FirstOrderFunction`, which is the analog of :class:`CostFunction` for
-non-linear least squares problems [#f3]_.
-
-.. code::
-
-  // f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-  class Rosenbrock final  : public ceres::FirstOrderFunction {
-    public:
-      bool Evaluate(const double* parameters,
-                             double* cost,
-                             double* gradient) const override {
-         const double x = parameters[0];
-         const double y = parameters[1];
-
-         cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-         if (gradient) {
-           gradient[0] = -2.0 * (1.0 - x) - 200.0 * (y - x * x) * 2.0 * x;
-           gradient[1] = 200.0 * (y - x * x);
-         }
-        return true;
-     }
-
-     int NumParameters() const override { return 2; }
-  };
-
-.. rubric:: Footnotes
-
-.. [#f1] `examples/rosenbrock.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/rosenbrock.cc>`_
-
-.. [#f2] `examples/rosenbrock_numeric_diff.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/rosenbrock_numeric_diff.cc>`_
-
-.. [#f3] `examples/rosenbrock_analytic_diff.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/rosenbrock_analytic_diff.cc>`_
diff --git a/third_party/ceres/docs/source/index.rst b/third_party/ceres/docs/source/index.rst
deleted file mode 100644
index 497b12c..0000000
--- a/third_party/ceres/docs/source/index.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-============
-Ceres Solver
-============
-
-Ceres Solver [#f1]_ is an open source C++ library for modeling and
-solving large, complicated optimization problems. It can be used to
-solve `Non-linear Least Squares`_ problems with bounds constraints and
-general unconstrained optimization problems. It is a mature, feature
-rich, and performant library that has been used in production at
-Google since 2010. For more, see :doc:`features`.
-
-`ceres-solver@googlegroups.com
-<https://groups.google.com/forum/?fromgroups#!forum/ceres-solver>`_ is
-the place for discussions and questions about Ceres Solver. We use the
-`GitHub Issue Tracker
-<https://github.com/ceres-solver/ceres-solver/issues>`_ to manage bug
-reports and feature requests.
-
-
-.. toctree::
-   :maxdepth: 1
-   :hidden:
-
-   features
-   installation
-   tutorial
-   derivatives
-   nnls_modeling
-   nnls_solving
-   nnls_covariance
-   gradient_solver
-   faqs
-   users
-   contributing
-   version_history
-   bibliography
-   license
-
-.. _Non-linear Least Squares: http://en.wikipedia.org/wiki/Non-linear_least_squares
-
-
-Cite Us
-=======
-
-If you use Ceres Solver for a publication, please cite it as::
-
-  @software{Agarwal_Ceres_Solver_2022,
-    author = {Agarwal, Sameer and Mierle, Keir and The Ceres Solver Team},
-    title = {{Ceres Solver}},
-    license = {Apache-2.0},
-    url = {https://github.com/ceres-solver/ceres-solver},
-    version = {2.2},
-    year = {2023},
-    month = {10}
-  }
-
-.. rubric:: Footnotes
-
-.. [#f1] While there is some debate as to who invented the method of
-         Least Squares [Stigler]_, there is no questioning the fact
-         that it was `Carl Friedrich Gauss
-         <http://www-groups.dcs.st-and.ac.uk/~history/Biographies/Gauss.html>`_
-         who brought it to the attention of the world. Using just 22
-         observations of the newly discovered asteroid `Ceres
-         <http://en.wikipedia.org/wiki/Ceres_(dwarf_planet)>`_, Gauss
-         used the method of least squares to correctly predict when
-         and where the asteroid will emerge from behind the Sun
-         [TenenbaumDirector]_. We named our solver after Ceres to
-         celebrate this seminal event in the history of astronomy,
-         statistics and optimization.
diff --git a/third_party/ceres/docs/source/installation.rst b/third_party/ceres/docs/source/installation.rst
deleted file mode 100644
index 4feb1a4..0000000
--- a/third_party/ceres/docs/source/installation.rst
+++ /dev/null
@@ -1,1105 +0,0 @@
-.. _chapter-installation:
-
-============
-Installation
-============
-
-Getting the source code
-=======================
-.. _section-source:
-
-You can start with the `latest stable release
-<http://ceres-solver.org/ceres-solver-2.2.0.tar.gz>`_ . Or if you want
-the latest version, you can clone the git repository
-
-.. code-block:: bash
-
-       git clone https://ceres-solver.googlesource.com/ceres-solver
-
-.. _section-dependencies:
-
-Dependencies
-============
-
- .. note ::
-
-    Ceres Solver 2.2 requires a **fully C++17-compliant** compiler.
-
-Ceres relies on a number of open source libraries, some of which are
-optional. For details on customizing the build process, see
-:ref:`section-customizing` .
-
-- `CMake <http://www.cmake.org>`_ 3.16 or later **required**.
-
-- `Eigen <http://eigen.tuxfamily.org/index.php?title=Main_Page>`_
-  3.3 or later **required**.
-
-  .. NOTE ::
-
-    Ceres can also use Eigen as a sparse linear algebra
-    library. Please see the documentation for ``EIGENSPARSE`` for
-    more details.
-
-- `glog <https://github.com/google/glog>`_ 0.3.5 or
-  later. **Recommended**
-
-  ``glog`` is used extensively throughout Ceres for logging detailed
-  information about memory allocations and time consumed in various
-  parts of the solve, internal error conditions etc. The Ceres
-  developers use it extensively to observe and analyze Ceres's
-  performance. `glog <https://github.com/google/glog>`_ allows you to
-  control its behaviour from the command line. Starting with
-  ``-logtostderr`` you can add ``-v=N`` for increasing values of ``N``
-  to get more and more verbose and detailed information about Ceres
-  internals.
-
-  Ceres also ships with a minimal replacement of ``glog`` called
-  ``miniglog`` that can be enabled with the ``MINIGLOG`` build option.
-  ``miniglog`` is supplied for platforms which do not support the full
-  version of ``glog``.
-
-  In an attempt to reduce dependencies, it may be tempting to use
-  ``miniglog`` on platforms which already support ``glog``. While
-  there is nothing preventing the user from doing so, we strongly
-  recommend against it. ``miniglog`` has worse performance than
-  ``glog`` and is much harder to control and use.
-
-- `gflags <https://github.com/gflags/gflags>`_. Needed to build
-  examples and tests and usually a dependency for glog.
-
-- `SuiteSparse <http://faculty.cse.tamu.edu/davis/suitesparse.html>`_
-  4.5.6 or later. Needed for solving large sparse linear
-  systems. **Optional; strongly recommended for large scale bundle
-  adjustment**
-
-  .. NOTE ::
-
-     If SuiteSparseQR is found, Ceres attempts to find the Intel
-     Thread Building Blocks (TBB) library. If found, Ceres assumes
-     SuiteSparseQR was compiled with TBB support and will link to the
-     found TBB version. You can customize the searched TBB location
-     with the ``TBB_ROOT`` variable.
-
-  A CMake native version of SuiteSparse that can be compiled on a variety of
-  platforms (e.g., using Visual Studio, Xcode, MinGW, etc.) is maintained by the
-  `CMake support for SuiteSparse <https://github.com/sergiud/SuiteSparse>`_
-  project.
-
-- `Apple's Accelerate sparse solvers <https://developer.apple.com/documentation/accelerate/sparse_solvers>`_.
-  As of Xcode 9.0, Apple's Accelerate framework includes support for
-  solving sparse linear systems across macOS, iOS et al. **Optional**
-
-- `BLAS <http://www.netlib.org/blas/>`_ and `LAPACK
-  <http://www.netlib.org/lapack/>`_ routines are needed by
-  ``SuiteSparse``, and optionally used by Ceres directly for some
-  operations.
-
-  For best performance on ``x86`` based Linux systems we recommend
-  using `Intel MKL
-  <https://www.intel.com/content/www/us/en/develop/documentation/get-started-with-mkl-for-dpcpp/top.html>`_.
-
-  Two other good options are `ATLAS
-  <http://math-atlas.sourceforge.net/>`_, which includes ``BLAS`` and
-  ``LAPACK`` routines and `OpenBLAS
-  <https://github.com/xianyi/OpenBLAS>`_ . However, one needs to be
-  careful to `turn off the threading
-  <https://github.com/xianyi/OpenBLAS/wiki/faq#wiki-multi-threaded>`_
-  inside ``OpenBLAS`` as it conflicts with use of threads in Ceres.
-
-  MacOS ships with an optimized ``LAPACK`` and ``BLAS``
-  implementation as part of the ``Accelerate`` framework. The Ceres
-  build system will automatically detect and use it.
-
-  For Windows things are much more complicated. `LAPACK For
-  Windows <http://icl.cs.utk.edu/lapack-for-windows/lapack/>`_
-  has detailed instructions..
-
-  **Optional but required for** ``SuiteSparse``.
-
-- `CUDA <https://developer.nvidia.com/cuda-toolkit>`_ If you have an
-  NVIDIA GPU then Ceres Solver can use it accelerate the solution of
-  the Gauss-Newton linear systems using the CMake flag ``USE_CUDA``.
-  Currently this support is limited to using the dense linear solvers that ship
-  with ``CUDA``. As a result GPU acceleration can be used to speed up
-  ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and
-  ``DENSE_SCHUR``. This also enables ``CUDA`` mixed precision solves
-  for ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``.  **Optional**.
-
-.. _section-linux:
-
-Linux
-=====
-
-We will use `Ubuntu <http://www.ubuntu.com>`_ as our example linux
-distribution.
-
-.. NOTE::
-
-   Ceres Solver always supports the previous and current Ubuntu LTS
-   releases, currently 18.04 and 20.04, using the default Ubuntu
-   repositories and compiler toolchain. Support for earlier versions
-   is not guaranteed or maintained.
-
-Start by installing all the dependencies.
-
-.. code-block:: bash
-
-     # CMake
-     sudo apt-get install cmake
-     # google-glog + gflags
-     sudo apt-get install libgoogle-glog-dev libgflags-dev
-     # Use ATLAS for BLAS & LAPACK
-     sudo apt-get install libatlas-base-dev
-     # Eigen3
-     sudo apt-get install libeigen3-dev
-     # SuiteSparse (optional)
-     sudo apt-get install libsuitesparse-dev
-
-We are now ready to build, test, and install Ceres.
-
-.. code-block:: bash
-
- tar zxf ceres-solver-2.2.0.tar.gz
- mkdir ceres-bin
- cd ceres-bin
- cmake ../ceres-solver-2.2.0
- make -j3
- make test
- # Optionally install Ceres, it can also be exported using CMake which
- # allows Ceres to be used without requiring installation, see the documentation
- # for the EXPORT_BUILD_DIR option for more information.
- make install
-
-You can also try running the command line bundling application with one of the
-included problems, which comes from the University of Washington's BAL
-dataset [Agarwal]_.
-
-.. code-block:: bash
-
- bin/simple_bundle_adjuster ../ceres-solver-2.2.0/data/problem-16-22106-pre.txt
-
-This runs Ceres for a maximum of 10 iterations using the
-``DENSE_SCHUR`` linear solver. The output should look something like
-this.
-
-.. code-block:: bash
-
-    iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
-       0  4.185660e+06    0.00e+00    1.09e+08   0.00e+00   0.00e+00  1.00e+04        0    2.18e-02    6.57e-02
-       1  1.062590e+05    4.08e+06    8.99e+06   0.00e+00   9.82e-01  3.00e+04        1    5.07e-02    1.16e-01
-       2  4.992817e+04    5.63e+04    8.32e+06   3.19e+02   6.52e-01  3.09e+04        1    4.75e-02    1.64e-01
-       3  1.899774e+04    3.09e+04    1.60e+06   1.24e+02   9.77e-01  9.26e+04        1    4.74e-02    2.11e-01
-       4  1.808729e+04    9.10e+02    3.97e+05   6.39e+01   9.51e-01  2.78e+05        1    4.75e-02    2.59e-01
-       5  1.803399e+04    5.33e+01    1.48e+04   1.23e+01   9.99e-01  8.33e+05        1    4.74e-02    3.06e-01
-       6  1.803390e+04    9.02e-02    6.35e+01   8.00e-01   1.00e+00  2.50e+06        1    4.76e-02    3.54e-01
-
-    Solver Summary (v 2.2.0-eigen-(3.4.0)-lapack-suitesparse-(7.1.0)-metis-(5.1.0)-acceleratesparse-eigensparse)
-
-                                         Original                  Reduced
-    Parameter blocks                        22122                    22122
-    Parameters                              66462                    66462
-    Residual blocks                         83718                    83718
-    Residuals                              167436                   167436
-
-    Minimizer                        TRUST_REGION
-
-    Dense linear algebra library            EIGEN
-    Trust region strategy     LEVENBERG_MARQUARDT
-                                            Given                     Used
-    Linear solver                     DENSE_SCHUR              DENSE_SCHUR
-    Threads                                     1                        1
-    Linear solver ordering              AUTOMATIC                 22106,16
-    Schur structure                         2,3,9                    2,3,9
-
-    Cost:
-    Initial                          4.185660e+06
-    Final                            1.803390e+04
-    Change                           4.167626e+06
-
-    Minimizer iterations                        7
-    Successful steps                            7
-    Unsuccessful steps                          0
-
-    Time (in seconds):
-    Preprocessor                         0.043895
-
-      Residual only evaluation           0.029855 (7)
-      Jacobian & residual evaluation     0.120581 (7)
-      Linear solver                      0.153665 (7)
-    Minimizer                            0.339275
-
-    Postprocessor                        0.000540
-    Total                                0.383710
-
-    Termination:                      CONVERGENCE (Function tolerance reached. |cost_change|/cost: 1.769759e-09 <= 1.000000e-06)
-
-
-.. section-macos:
-
-macOS
-=====
-
-On macOS, you can either use `Homebrew <https://brew.sh/>`_
-(recommended) or `MacPorts <https://www.macports.org/>`_ to install
-Ceres Solver.
-
-If using `Homebrew <https://brew.sh/>`_, then
-
-.. code-block:: bash
-
-      brew install ceres-solver
-
-will install the latest stable version along with all the required
-dependencies and
-
-.. code-block:: bash
-
-      brew install ceres-solver --HEAD
-
-will install the latest version in the git repo.
-
-If using `MacPorts <https://www.macports.org/>`_, then
-
-.. code-block:: bash
-
-   sudo port install ceres-solver
-
-will install the latest version.
-
-You can also install each of the dependencies by hand using `Homebrew
-<https://brew.sh/>`_. There is no need to install
-``BLAS`` or ``LAPACK`` separately as macOS ships with optimized
-``BLAS`` and ``LAPACK`` routines as part of the `vecLib
-<https://developer.apple.com/library/mac/#documentation/Performance/Conceptual/vecLib/Reference/reference.html>`_
-framework.
-
-.. code-block:: bash
-
-      # CMake
-      brew install cmake
-      # google-glog and gflags
-      brew install glog gflags
-      # Eigen3
-      brew install eigen
-      # SuiteSparse
-      brew install suite-sparse
-
-We are now ready to build, test, and install Ceres.
-
-.. code-block:: bash
-
-   tar zxf ceres-solver-2.2.0.tar.gz
-   mkdir ceres-bin
-   cd ceres-bin
-   cmake ../ceres-solver-2.2.0
-   make -j3
-   make test
-   # Optionally install Ceres, it can also be exported using CMake which
-   # allows Ceres to be used without requiring installation, see the
-   # documentation for the EXPORT_BUILD_DIR option for more information.
-   make install
-
-.. _section-windows:
-
-Windows
-=======
-
-Using a Library Manager
------------------------
-
-`vcpkg <https://github.com/microsoft/vcpkg>`_ is a library manager for Microsoft
-Windows that can be used to install Ceres Solver and all its dependencies.
-
-#. Install the library manager into a top-level directory ``vcpkg/`` on Windows
-   following the `guide
-   <https://github.com/microsoft/vcpkg#quick-start-windows>`_, e.g., using
-   Visual Studio 2022 community edition, or simply run
-
-    .. code:: bat
-
-        git clone https://github.com/Microsoft/vcpkg.git
-        cd vcpkg
-        .\bootstrap-vcpkg.bat
-        .\vcpkg integrate install
-
-#. Use vcpkg to install and build Ceres and all its dependencies, e.g., for 64
-   bit Windows
-
-   .. code:: bat
-
-      vcpkg\vcpkg.exe install ceres:x64-windows
-
-   Or with optional components, e.g., SuiteSparse, using
-
-   .. code:: bat
-
-      vcpkg\vcpkg.exe install ceres[suitesparse]:x64-windows
-
-#. Integrate vcpkg packages with Visual Studio to allow it to automatically
-   find all the libraries installed by vcpkg.
-
-   .. code:: bat
-
-      vcpkg\vcpkg.exe integrate install
-
-#. To use Ceres in a CMake project, follow our :ref:`instructions
-   <section-using-ceres>`.
-
-
-Building from Source
---------------------
-
-Ceres Solver can also be built from source. For this purpose, we support Visual
-Studio 2019 and newer.
-
-.. NOTE::
-
-  If you find the following CMake difficult to set up, then you may
-  be interested in a `Microsoft Visual Studio wrapper
-  <https://github.com/tbennun/ceres-windows>`_ for Ceres Solver by Tal
-  Ben-Nun.
-
-#. Create a top-level directory for dependencies, build, and sources somewhere,
-   e.g., ``ceres/``
-
-#. Get dependencies; unpack them as subdirectories in ``ceres/``
-   (``ceres/eigen``, ``ceres/glog``, etc.)
-
-   #. ``Eigen`` 3.3 . Configure and optionally install Eigen. It should be
-      exported into the CMake package registry by default as part of the
-      configure stage so installation should not be necessary.
-
-   #. ``google-glog`` Open up the Visual Studio solution and build it.
-   #. ``gflags`` Open up the Visual Studio solution and build it.
-
-   #. (Experimental) ``SuiteSparse`` Previously SuiteSparse was not
-      available on Windows, recently it has become possible to build
-      it on Windows using the `suitesparse-metis-for-windows
-      <https://github.com/jlblancoc/suitesparse-metis-for-windows>`_
-      project.  If you wish to use ``SuiteSparse``, follow their
-      instructions for obtaining and building it.
-
-      Alternatively, Ceres Solver supports ``SuiteSparse`` binary
-      packages available for Visual Studio 2019 and 2022 provided by
-      the `CMake support for SuiteSparse
-      <https://github.com/sergiud/SuiteSparse>`_ project that also
-      include `reference LAPACK <http://www.netlib.org/blas>`_ (and
-      BLAS). The binary packages are used by Ceres Solver for
-      continuous testing on Github.
-
-#. Unpack the Ceres tarball into ``ceres``. For the tarball, you
-   should get a directory inside ``ceres`` similar to
-   ``ceres-solver-2.2.0``. Alternately, checkout Ceres via ``git`` to
-   get ``ceres-solver.git`` inside ``ceres``.
-
-#. Install ``CMake``,
-
-#. Create a directory ``ceres/ceres-bin`` (for an out-of-tree build)
-
-   #. If you use the above binary ``SuiteSparse`` package, make sure CMake can
-      find it, e.g., by assigning the path of the directory that contains the
-      unzipped contents to the ``CMAKE_PREFIX_PATH`` environment variable. In a
-      Windows command prompt this can be achieved as follows:
-
-      .. code:: bat
-
-        export CMAKE_PREFIX_PATH=C:/Downloads/SuiteSparse-5.11.0-cmake.1-vc16-Win64-Release-shared-gpl
-
-#. Run ``CMake``; select the ``ceres-solver-X.Y.Z`` or
-   ``ceres-solver.git`` directory for the CMake file. Then select the
-   ``ceres-bin`` for the build directory.
-
-#. Try running ``Configure`` which can fail at first because some dependencies
-   cannot be automatically located. In this case, you must set the following
-   CMake variables to the appropriate directories where you unpacked/built them:
-
-   #. ``Eigen3_DIR`` (Set to directory containing ``Eigen3Config.cmake``)
-   #. ``GLOG_INCLUDE_DIR_HINTS``
-   #. ``GLOG_LIBRARY_DIR_HINTS``
-   #. (Optional) ``gflags_DIR`` (Set to directory containing ``gflags-config.cmake``)
-   #. (SuiteSparse binary package) ``BLAS_blas_LIBRARY`` and
-      ``LAPACK_lapack_LIBRARY`` CMake variables must be `explicitly set` to
-      ``<path>/lib/blas.lib`` and ``<path>/lib/lapack.lib``, respectively, both
-      located in the unzipped package directory ``<path>``.
-
-   If any of the variables are not visible in the ``CMake`` GUI, create a new
-   entry for them.  We recommend using the
-   ``<NAME>_(INCLUDE/LIBRARY)_DIR_HINTS`` variables rather than setting the
-   ``<NAME>_INCLUDE_DIR`` & ``<NAME>_LIBRARY`` variables directly to keep all of
-   the validity checking, and to avoid having to specify the library files
-   manually.
-
-#. You may have to tweak some more settings to generate a MSVC
-   project.  After each adjustment, try pressing Configure & Generate
-   until it generates successfully.
-
-#. Open the solution and build it in MSVC
-
-
-To run the tests, select the ``RUN_TESTS`` target and hit **Build
-RUN_TESTS** from the build menu.
-
-Like the Linux build, you should now be able to run
-``bin/simple_bundle_adjuster``.
-
-.. note::
-
-    #. The default build is ``Debug``; consider switching it to ``Release`` for
-       optimal performance.
-    #. CMake puts the resulting test binaries in ``ceres-bin/examples/Debug`` by
-       default.
-    #. Without a sparse linear algebra library, only a subset of
-       solvers is usable, namely: ``DENSE_QR``, ``DENSE_SCHUR``,
-       ``CGNR``, and ``ITERATIVE_SCHUR``.
-
-
-.. _section-android:
-
-Android
-=======
-
-.. NOTE::
-
-    You will need Android NDK r15 or higher to build Ceres solver.
-
-To build Ceres for Android, we need to force ``CMake`` to find
-the toolchains from the Android NDK instead of using the standard
-ones. For example, assuming you have specified ``$NDK_DIR``:
-
-.. code-block:: bash
-
-    cmake \
-    -DCMAKE_TOOLCHAIN_FILE=\
-        $NDK_DIR/build/cmake/android.toolchain.cmake \
-    -DEigen3_DIR=/path/to/Eigen3Config.cmake \
-    -DANDROID_ABI=arm64-v8a \
-    -DANDROID_STL=c++_shared \
-    -DANDROID_NATIVE_API_LEVEL=android-29 \
-    -DBUILD_SHARED_LIBS=ON \
-    -DMINIGLOG=ON \
-    <PATH_TO_CERES_SOURCE>
-
-You can build for any Android STL or ABI, but the c++_shared STL
-and the armeabi-v7a or arm64-v8a ABI are recommended for 32bit
-and 64bit architectures, respectively. Several API levels may
-be supported, but it is recommended that you use the highest
-level that is suitable for your Android project.
-
-.. NOTE::
-
-    You must always use the same API level and STL library for
-    your Android project and the Ceres binaries.
-
-After building, you get a ``libceres.so`` library, which you can
-link in your Android build system by using a
-``PREBUILT_SHARED_LIBRARY`` target in your build script.
-
-If you are building any Ceres samples and would like to verify
-your library, you will need to place them in an executable public
-directory together with ``libceres.so`` on your Android device
-(e.g. in /data/local/tmp) and ensure that the STL library from
-your NDK is present in that same directory. You may then execute
-the sample by running for example:
-
-.. code-block:: bash
-
-    adb shell
-    cd /data/local/tmp
-    LD_LIBRARY_PATH=/data/local/tmp ./helloworld
-
-Note that any solvers or other shared dependencies you include in
-your project must also be present in your android build config and
-your test directory on Android.
-
-.. _section-ios:
-
-iOS
-===
-
-.. NOTE::
-
-   You need iOS version 7.0 or higher to build Ceres Solver.
-
-To build Ceres for iOS, we need to force ``CMake`` to find the
-toolchains from the iOS SDK instead of using the standard ones. For
-example:
-
-.. code-block:: bash
-
-   cmake \
-   -DCMAKE_TOOLCHAIN_FILE=../ceres-solver/cmake/iOS.cmake \
-   -DEigen3_DIR=/path/to/Eigen3Config.cmake \
-   -DIOS_PLATFORM=<PLATFORM> \
-   <PATH_TO_CERES_SOURCE>
-
-``PLATFORM`` can be: ``OS``, ``SIMULATOR`` or ``SIMULATOR64``. You can
-build for ``OS`` (``armv7``, ``armv7s``, ``arm64``), ``SIMULATOR``
-(``i386``) or ``SIMULATOR64`` (``x86_64``) separately and use ``lipo``
-to merge them into one static library.  See ``cmake/iOS.cmake`` for
-more options.
-
-.. NOTE::
-
-   iOS version 11.0+ requires a 64-bit architecture, so you cannot
-   build for armv7/armv7s with iOS 11.0+ (only arm64 is supported).
-
-After building, you will get a ``libceres.a`` library, which you will
-need to add to your Xcode project.
-
-The default CMake configuration builds a bare bones version of Ceres
-Solver that only depends on Eigen (``MINIGLOG`` is compiled into Ceres
-if it is used), this should be sufficient for solving small to
-moderate sized problems.
-
-If you decide to use ``LAPACK`` and ``BLAS``, then you also need to
-add ``Accelerate.framework`` to your Xcode project's linking
-dependency.
-
-.. _section-customizing:
-
-Customizing the build
-=====================
-
-It is possible to reduce the libraries needed to build Ceres and
-customize the build process by setting the appropriate options in
-``CMake``.  These options can either be set in the ``CMake`` GUI, or
-via ``-D<OPTION>=<ON/OFF>`` when running ``CMake`` from the command
-line.  In general, you should only modify these options from their
-defaults if you know what you are doing.
-
-.. NOTE::
-
- If you are setting variables via ``-D<VARIABLE>=<VALUE>`` when
- calling ``CMake``, it is important to understand that this forcibly
- **overwrites** the variable ``<VARIABLE>`` in the ``CMake`` cache at
- the start of *every configure*.
-
- This can lead to confusion if you are invoking the ``CMake`` `curses
- <http://www.gnu.org/software/ncurses/ncurses.html>`_ terminal GUI
- (via ``ccmake``, e.g. ```ccmake -D<VARIABLE>=<VALUE>
- <PATH_TO_SRC>``).  In this case, even if you change the value of
- ``<VARIABLE>`` in the ``CMake`` GUI, your changes will be
- **overwritten** with the value passed via ``-D<VARIABLE>=<VALUE>``
- (if one exists) at the start of each configure.
-
- As such, it is generally easier not to pass values to ``CMake`` via
- ``-D`` and instead interactively experiment with their values in the
- ``CMake`` GUI.  If they are not present in the *Standard View*,
- toggle to the *Advanced View* with ``<t>``.
-
-
-Modifying default compilation flags
------------------------------------
-
-The ``CMAKE_CXX_FLAGS`` variable can be used to define additional
-default compilation flags for all build types.  Any flags specified
-in ``CMAKE_CXX_FLAGS`` will be used in addition to the default
-flags used by Ceres for the current build type.
-
-For example, if you wished to build Ceres with `-march=native
-<https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html>`_ which is not
-enabled by default (even if ``CMAKE_BUILD_TYPE=Release``) you would invoke
-CMake with:
-
-.. code-block:: bash
-
-       cmake -DCMAKE_CXX_FLAGS="-march=native" <PATH_TO_CERES_SOURCE>
-
-.. NOTE ::
-
-    The use of ``-march=native`` will limit portability, as it will tune the
-    implementation to the specific CPU of the compiling machine (e.g. use of
-    AVX if available).  Run-time segfaults may occur if you then tried to
-    run the resulting binaries on a machine with a different processor, even
-    if it is from the same family (e.g. x86) if the specific options available
-    are different.  Note that the performance gains from the use of
-    ``-march=native`` are not guaranteed to be significant.
-
-.. _options-controlling-ceres-configuration:
-
-Options controlling Ceres configuration
----------------------------------------
-
-#. ``LAPACK [Default: ON]``: If this option is enabled, and the ``BLAS`` and
-   ``LAPACK`` libraries are found, Ceres will enable **direct** use of
-   ``LAPACK`` routines (i.e. Ceres itself will call them).  If this option is
-   disabled, then Ceres will not require ``LAPACK`` or ``BLAS``.  It is
-   however still possible that Ceres may call ``LAPACK`` routines indirectly
-   via SuiteSparse if ``LAPACK=OFF`` and ``SUITESPARSE=ON``.  Finally
-   note that if ``LAPACK=ON`` and ``SUITESPARSE=ON``, the ``LAPACK`` and
-   ``BLAS`` libraries used by SuiteSparse and Ceres should be the same.
-
-#. ``SUITESPARSE [Default: ON]``: By default, Ceres will link to
-   ``SuiteSparse`` if it and all of its dependencies are present. Turn
-   this ``OFF`` to build Ceres without ``SuiteSparse``.
-
-   .. NOTE::
-
-      SuiteSparse is licensed under a mixture of GPL/LGPL/Commercial
-      terms.  Ceres requires some components that are only licensed under
-      GPL/Commercial terms.
-
-#. ``ACCELERATESPARSE [Default: ON]``: By default, Ceres will link to
-   Apple's Accelerate framework directly if a version of it is detected
-   which supports solving sparse linear systems.  Note that on Apple OSs
-   Accelerate usually also provides the BLAS/LAPACK implementations and
-   so would be linked against irrespective of the value of ``ACCELERATESPARSE``.
-
-#. ``EIGENSPARSE [Default: ON]``: By default, Ceres will use Eigen's
-   sparse Cholesky factorization.
-
-#. ``GFLAGS [Default: ON]``: Turn this ``OFF`` to build Ceres without
-   ``gflags``. This will also prevent some of the example code from
-   building.
-
-#. ``MINIGLOG [Default: OFF]``: Ceres includes a stripped-down,
-   minimal implementation of ``glog`` which can optionally be used as
-   a substitute for ``glog``, thus removing ``glog`` as a required
-   dependency. Turn this ``ON`` to use this minimal ``glog``
-   implementation.
-
-#. ``SCHUR_SPECIALIZATIONS [Default: ON]``: If you are concerned about
-   binary size/compilation time over some small (10-20%) performance
-   gains in the ``SPARSE_SCHUR`` solver, you can disable some of the
-   template specializations by turning this ``OFF``.
-
-#. ``BUILD_SHARED_LIBS [Default: OFF]``: By default Ceres is built as
-   a static library, turn this ``ON`` to instead build Ceres as a
-   shared library.
-
-#. ``EXPORT_BUILD_DIR [Default: OFF]``: By default Ceres is configured
-   solely for installation, and so must be installed in order for
-   clients to use it.  Turn this ``ON`` to export Ceres' build
-   directory location into the `user's local CMake package registry
-   <http://www.cmake.org/cmake/help/v3.5/manual/cmake-packages.7.html#user-package-registry>`_
-   where it will be detected **without requiring installation** in a
-   client project using CMake when `find_package(Ceres)
-   <http://www.cmake.org/cmake/help/v3.5/command/find_package.html>`_
-   is invoked.
-
-#. ``BUILD_DOCUMENTATION [Default: OFF]``: Use this to enable building
-   the documentation, requires `Sphinx <http://sphinx-doc.org/>`_ and
-   the `sphinx-rtd-theme
-   <https://pypi.org/project/sphinx-rtd-theme/>`_ package
-   available from the Python package index. In addition, ``make
-   ceres_docs`` can be used to build only the documentation.
-
-#. ``MSVC_USE_STATIC_CRT [Default: OFF]`` *Windows Only*: By default
-   Ceres will use the Visual Studio default, *shared* C-Run Time (CRT)
-   library.  Turn this ``ON`` to use the *static* C-Run Time library
-   instead.
-
-#. ``LIB_SUFFIX [Default: "64" on non-Debian/Arch based 64-bit Linux,
-   otherwise: ""]``: The suffix to append to the library install
-   directory, built from:
-   ``${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}``.
-
-   The filesystem hierarchy standard recommends that 64-bit systems
-   install native libraries to lib64 rather than lib.  Most Linux
-   distributions follow this convention, but Debian and Arch based
-   distros do not.  Note that the only generally sensible values for
-   ``LIB_SUFFIX`` are "" and "64".
-
-   Although by default Ceres will auto-detect non-Debian/Arch based
-   64-bit Linux distributions and default ``LIB_SUFFIX`` to "64", this
-   can always be overridden by manually specifying LIB_SUFFIX using:
-   ``-DLIB_SUFFIX=<VALUE>`` when invoking CMake.
-
-
-Options controlling Ceres dependency locations
-----------------------------------------------
-
-Ceres uses the ``CMake`` `find_package
-<http://www.cmake.org/cmake/help/v3.5/command/find_package.html>`_
-function to find all of its dependencies. Dependencies that reliably
-provide config files on all supported platforms are expected to be
-found in "Config" mode of ``find_package`` (``Eigen``, ``gflags``).
-This means you can use the standard ``CMake`` facilities to customize
-where these dependencies are found, such as ``CMAKE_PREFIX_PATH``,
-the ``<DEPENDENCY_NAME>_DIR`` variables, or since ``CMake`` 3.12 the
-``<DEPENDENCY_NAME>_ROOT`` variables.
-
-Other dependencies are found using
-``Find<DEPENDENCY_NAME>.cmake`` scripts which are either included in
-Ceres (for most dependencies) or are shipped as standard with
-``CMake`` (for ``LAPACK`` & ``BLAS``).  These scripts will search all
-of the "standard" install locations for various OSs for each
-dependency.  However, particularly for Windows, they may fail to find
-the library, in this case you will have to manually specify its
-installed location.  The ``Find<DEPENDENCY_NAME>.cmake`` scripts
-shipped with Ceres support two ways for you to do this:
-
-#. Set the *hints* variables specifying the *directories* to search in
-   preference, but in addition, to the search directories in the
-   ``Find<DEPENDENCY_NAME>.cmake`` script:
-
-   - ``<DEPENDENCY_NAME (CAPS)>_INCLUDE_DIR_HINTS``
-   - ``<DEPENDENCY_NAME (CAPS)>_LIBRARY_DIR_HINTS``
-
-   These variables should be set via ``-D<VAR>=<VALUE>``
-   ``CMake`` arguments as they are not visible in the GUI.
-
-#. Set the variables specifying the *explicit* include directory
-   and library file to use:
-
-   - ``<DEPENDENCY_NAME (CAPS)>_INCLUDE_DIR``
-   - ``<DEPENDENCY_NAME (CAPS)>_LIBRARY``
-
-   This bypasses *all* searching in the
-   ``Find<DEPENDENCY_NAME>.cmake`` script, but validation is still
-   performed.
-
-   These variables are available to set in the ``CMake`` GUI. They are
-   visible in the *Standard View* if the library has not been found
-   (but the current Ceres configuration requires it), but are always
-   visible in the *Advanced View*.  They can also be set directly via
-   ``-D<VAR>=<VALUE>`` arguments to ``CMake``.
-
-Building using custom BLAS & LAPACK installs
-----------------------------------------------
-
-If the standard find package scripts for ``BLAS`` & ``LAPACK`` which
-ship with ``CMake`` fail to find the desired libraries on your system,
-try setting ``CMAKE_LIBRARY_PATH`` to the path(s) to the directories
-containing the ``BLAS`` & ``LAPACK`` libraries when invoking ``CMake``
-to build Ceres via ``-D<VAR>=<VALUE>``.  This should result in the
-libraries being found for any common variant of each.
-
-Alternatively, you may also directly specify the ``BLAS_LIBRARIES`` and
-``LAPACK_LIBRARIES`` variables via ``-D<VAR>=<VALUE>`` when invoking CMake
-to configure Ceres.
-
-.. _section-using-ceres:
-
-Using Ceres with CMake
-======================
-
-In order to use Ceres in client code with CMake using `find_package()
-<http://www.cmake.org/cmake/help/v3.5/command/find_package.html>`_
-then either:
-
-#. Ceres must have been installed with ``make install``.  If the
-    install location is non-standard (i.e. is not in CMake's default
-    search paths) then it will not be detected by default, see:
-    :ref:`section-local-installations`.
-
-    Note that if you are using a non-standard install location you
-    should consider exporting Ceres instead, as this will not require
-    any extra information to be provided in client code for Ceres to
-    be detected.
-
-#. Or Ceres' build directory must have been exported by enabling the
-    ``EXPORT_BUILD_DIR`` option when Ceres was configured.
-
-
-As an example of how to use Ceres, to compile `examples/helloworld.cc
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/helloworld.cc>`_
-in a separate standalone project, the following CMakeList.txt can be
-used:
-
-.. code-block:: cmake
-
-    cmake_minimum_required(VERSION 3.5)
-
-    project(helloworld)
-
-    find_package(Ceres REQUIRED)
-
-    # helloworld
-    add_executable(helloworld helloworld.cc)
-    target_link_libraries(helloworld Ceres::ceres)
-
-Irrespective of whether Ceres was installed or exported, if multiple
-versions are detected, set: ``Ceres_DIR`` to control which is used.
-If Ceres was installed ``Ceres_DIR`` should be the path to the
-directory containing the installed ``CeresConfig.cmake`` file
-(e.g. ``/usr/local/lib/cmake/Ceres``).  If Ceres was exported, then
-``Ceres_DIR`` should be the path to the exported Ceres build
-directory.
-
-  .. NOTE ::
-
-     You do not need to call include_directories(${CERES_INCLUDE_DIRS})
-     as the exported Ceres CMake target already contains the definitions
-     of its public include directories which will be automatically
-     included by CMake when compiling a target that links against Ceres.
-     In fact, since v2.0 ``CERES_INCLUDE_DIRS`` is not even set.
-
-Specify Ceres components
--------------------------------------
-
-You can specify particular Ceres components that you require (in order
-for Ceres to be reported as found) when invoking
-``find_package(Ceres)``.  This allows you to specify, for example,
-that you require a version of Ceres built with SuiteSparse support.
-By definition, if you do not specify any components when calling
-``find_package(Ceres)`` (the default) any version of Ceres detected
-will be reported as found, irrespective of which components it was
-built with.
-
-The Ceres components which can be specified are:
-
-#. ``LAPACK``: Ceres built using LAPACK (``LAPACK=ON``).
-
-#. ``SuiteSparse``: Ceres built with SuiteSparse (``SUITESPARSE=ON``).
-
-#. ``AccelerateSparse``: Ceres built with Apple's Accelerate sparse solvers (``ACCELERATESPARSE=ON``).
-
-#. ``EigenSparse``: Ceres built with Eigen's sparse Cholesky factorization
-   (``EIGENSPARSE=ON``).
-
-#. ``SparseLinearAlgebraLibrary``: Ceres built with *at least one*
-   sparse linear algebra library.  This is equivalent to
-   ``SuiteSparse`` **OR** ``AccelerateSparse`` **OR** ``EigenSparse``.
-
-#. ``SchurSpecializations``: Ceres built with Schur specializations
-   (``SCHUR_SPECIALIZATIONS=ON``).
-
-To specify one/multiple Ceres components use the ``COMPONENTS`` argument to
-`find_package()
-<http://www.cmake.org/cmake/help/v3.5/command/find_package.html>`_ like so:
-
-.. code-block:: cmake
-
-    # Find a version of Ceres compiled with SuiteSparse & EigenSparse support.
-    #
-    # NOTE: This will report Ceres as **not** found if the detected version of
-    #            Ceres was not compiled with both SuiteSparse & EigenSparse.
-    #            Remember, if you have multiple versions of Ceres installed, you
-    #            can use Ceres_DIR to specify which should be used.
-    find_package(Ceres REQUIRED COMPONENTS SuiteSparse EigenSparse)
-
-
-Specify Ceres version
----------------------
-
-Additionally, when CMake has found Ceres it can optionally check the package
-version, if it has been specified in the `find_package()
-<http://www.cmake.org/cmake/help/v3.5/command/find_package.html>`_
-call.  For example:
-
-.. code-block:: cmake
-
-    find_package(Ceres 1.2.3 REQUIRED)
-
-.. _section-local-installations:
-
-Local installations
--------------------
-
-If Ceres was installed in a non-standard path by specifying
-``-DCMAKE_INSTALL_PREFIX="/some/where/local"``, then the user should
-add the **PATHS** option to the ``find_package()`` command, e.g.,
-
-.. code-block:: cmake
-
-   find_package(Ceres REQUIRED PATHS "/some/where/local/")
-
-Note that this can be used to have multiple versions of Ceres
-installed.  However, particularly if you have only a single version of
-Ceres which you want to use but do not wish to install to a system
-location, you should consider exporting Ceres using the
-``EXPORT_BUILD_DIR`` option instead of a local install, as exported
-versions of Ceres will be automatically detected by CMake,
-irrespective of their location.
-
-Understanding the CMake Package System
-----------------------------------------
-
-Although a full tutorial on CMake is outside the scope of this guide,
-here we cover some of the most common CMake misunderstandings that
-crop up when using Ceres.  For more detailed CMake usage, the
-following references are very useful:
-
-- The `official CMake tutorial <http://www.cmake.org/cmake-tutorial/>`_
-
-   Provides a tour of the core features of CMake.
-
-- `ProjectConfig tutorial
-  <http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file>`_
-  and the `cmake-packages documentation
-  <http://www.cmake.org/cmake/help/git-master/manual/cmake-packages.7.html>`_
-
-   Cover how to write a ``ProjectConfig.cmake`` file, discussed below,
-   for your own project when installing or exporting it using CMake.
-   It also covers how these processes in conjunction with
-   ``find_package()`` are actually handled by CMake.  The
-   `ProjectConfig tutorial
-   <http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file>`_
-   is the older style, currently used by Ceres for compatibility with
-   older versions of CMake.
-
-  .. NOTE :: **Targets in CMake.**
-
-    All libraries and executables built using CMake are represented as
-    *targets* created using `add_library()
-    <http://www.cmake.org/cmake/help/v3.5/command/add_library.html>`_
-    and `add_executable()
-    <http://www.cmake.org/cmake/help/v3.5/command/add_executable.html>`_.
-    Targets encapsulate the rules and dependencies (which can be other
-    targets) required to build or link against an object.  This allows
-    CMake to implicitly manage dependency chains.  Thus it is
-    sufficient to tell CMake that a library target: ``B`` depends on a
-    previously declared library target ``A``, and CMake will
-    understand that this means that ``B`` also depends on all of the
-    public dependencies of ``A``.
-
-When a project like Ceres is installed using CMake, or its build
-directory is exported into the local CMake package registry (see
-:ref:`section-install-vs-export`), in addition to the public headers
-and compiled libraries, a set of CMake-specific project configuration
-files are also installed to: ``<INSTALL_ROOT>/lib/cmake/Ceres`` (if Ceres
-is installed), or created in the build directory (if Ceres' build
-directory is exported).  When `find_package
-<http://www.cmake.org/cmake/help/v3.5/command/find_package.html>`_ is
-invoked, CMake checks various standard install locations (including
-``/usr/local`` on Linux & UNIX systems), and the local CMake package
-registry for CMake configuration files for the project to be found
-(i.e. Ceres in the case of ``find_package(Ceres)``).  Specifically it
-looks for:
-
-- ``<PROJECT_NAME>Config.cmake`` (or
-  ``<lower_case_project_name>-config.cmake``)
-
-   Which is written by the developers of the project, and is
-   configured with the selected options and installed locations when
-   the project is built and imports the project targets and/or defines
-   the legacy CMake variables: ``<PROJECT_NAME>_INCLUDE_DIRS`` &
-   ``<PROJECT_NAME>_LIBRARIES`` which are used by the caller.
-
-The ``<PROJECT_NAME>Config.cmake`` typically includes a second file
-installed to the same location:
-
-- ``<PROJECT_NAME>Targets.cmake``
-
-   Which is autogenerated by CMake as part of the install process and defines
-   **imported targets** for the project in the caller's CMake scope.
-
-An **imported target** contains the same information about a library
-as a CMake target that was declared locally in the current CMake
-project using ``add_library()``.  However, imported targets refer to
-objects that have already been built by a different CMake project.
-Principally, an imported target contains the location of the compiled
-object and all of its public dependencies required to link against it
-as well as all required include directories.  Any locally declared target
-can depend on an imported target, and CMake will manage the dependency
-chain, just as if the imported target had been declared locally by the
-current project.
-
-Crucially, just like any locally declared CMake target, an imported target is
-identified by its **name** when adding it as a dependency to another target.
-
-Since v2.0, Ceres has used the target namespace feature of CMake to prefix
-its export targets: ``Ceres::ceres``.  However, historically the Ceres target
-did not have a namespace, and was just called ``ceres``.
-
-Whilst an alias target called ``ceres`` is still provided in v2.0 for backwards
-compatibility, it creates a potential drawback, if you failed to call
-``find_package(Ceres)``, and Ceres is installed in a default search path for
-your compiler, then instead of matching the imported Ceres target, it will
-instead match the installed libceres.so/dylib/a library.  If this happens you
-will get either compiler errors for missing include directories or linker errors
-due to missing references to Ceres public dependencies.
-
-Note that this description applies both to projects that are
-**installed** using CMake, and to those whose **build directory is
-exported** using `export()
-<http://www.cmake.org/cmake/help/v3.5/command/export.html>`_ (instead
-of `install()
-<http://www.cmake.org/cmake/help/v3.5/command/install.html>`_).  Ceres
-supports both installation and export of its build directory if the
-``EXPORT_BUILD_DIR`` option is enabled, see
-:ref:`section-customizing`.
-
-.. _section-install-vs-export:
-
-Installing a project with CMake vs Exporting its build directory
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a project is **installed**, the compiled libraries and headers
-are copied from the source & build directory to the install location,
-and it is these copied files that are used by any client code.  When a
-project's build directory is **exported**, instead of copying the
-compiled libraries and headers, CMake creates an entry for the project
-in the `user's local CMake package registry
-<http://www.cmake.org/cmake/help/v3.5/manual/cmake-packages.7.html#user-package-registry>`_,
-``<USER_HOME>/.cmake/packages`` on Linux & macOS, which contains the
-path to the project's build directory which will be checked by CMake
-during a call to ``find_package()``.  The effect of which is that any
-client code uses the compiled libraries and headers in the build
-directory directly, **thus not requiring the project to be installed
-to be used**.
-
-Installing / Exporting a project that uses Ceres
---------------------------------------------------
-
-As described in `Understanding the CMake Package System`_, the contents of
-the ``CERES_LIBRARIES`` variable is the **name** of an imported target which
-represents Ceres.  If you are installing / exporting your *own* project which
-*uses* Ceres, it is important to understand that:
-
-**Imported targets are not (re)exported when a project which imported them is
-exported**.
-
-Thus, when a project ``Foo`` which uses Ceres is exported, its list of
-dependencies as seen by another project ``Bar`` which imports ``Foo``
-via: ``find_package(Foo REQUIRED)`` will contain: ``ceres``.  However,
-the definition of ``ceres`` as an imported target is **not
-(re)exported** when Foo is exported.  Hence, without any additional
-steps, when processing ``Bar``, ``ceres`` will not be defined as an
-imported target.  Thus, when processing ``Bar``, CMake will assume
-that ``ceres`` refers only to: ``libceres.a/so/dylib/lib`` (the
-compiled Ceres library) directly if it is on the current list of
-search paths.  In which case, no CMake errors will occur, but ``Bar``
-will not link properly, as it does not have the required public link
-dependencies of Ceres, which are stored in the imported target
-definition.
-
-The solution to this is for ``Foo`` (i.e., the project that uses
-Ceres) to invoke ``find_package(Ceres)`` in ``FooConfig.cmake``, thus
-``ceres`` will be defined as an imported target when CMake processes
-``Bar``.  An example of the required modifications to
-``FooConfig.cmake`` are show below:
-
-.. code-block:: cmake
-
-    # Importing Ceres in FooConfig.cmake using CMake 3.x style.
-    #
-    # In CMake v3.x, the find_dependency() macro exists to forward the REQUIRED
-    # / QUIET parameters to find_package() when searching for dependencies.
-    #
-    # Note that find_dependency() does not take a path hint, so if Ceres was
-    # installed in a non-standard location, that location must be added to
-    # CMake's search list before this call.
-    include(CMakeFindDependencyMacro)
-    find_dependency(Ceres)
-
-.. _section-migration:
-
-Migration
-=========
-
-The following includes some hints for migrating from previous versions.
-
-Version 2.0
------------
-
-- When using Ceres with CMake, the target name in v2.0 is
-  ``Ceres::ceres`` following modern naming convetions. The legacy
-  target ``ceres`` exists for backwards compatibility, but is
-  deprecated. ``CERES_INCLUDE_DIRS`` is not set any more, as the
-  exported Ceres CMake target already contains the definitions of its
-  public include directories which will be automatically included by
-  CMake when compiling a target that links against Ceres.
-- When building Ceres, some dependencies (Eigen, gflags) are not found
-  using custom ``Find<DEPENDENCY_NAME>.cmake`` modules any
-  more. Hence, instead of the custom variables (``<DEPENDENCY_NAME (CAPS)>_INCLUDE_DIR_HINTS``,
-  ``<DEPENDENCY_NAME (CAPS)>_INCLUDE_DIR``, ...) you should use standard
-  CMake facilities to customize where these dependencies are found, such as
-  ``CMAKE_PREFIX_PATH``, the ``<DEPENDENCY_NAME>_DIR`` variables, or
-  since CMake 3.12 the ``<DEPENDENCY_NAME>_ROOT`` variables.
-- While TBB is not used any more directly by Ceres, it might still try
-  to link against it, if SuiteSparseQR was found. The variable (environment
-  or CMake) to customize this is ``TBB_ROOT`` (used to be ``TBBROOT``).
-  For example, use ``cmake -DTBB_ROOT=/opt/intel/tbb ...`` if you want to
-  link against TBB installed from Intel's binary packages on Linux.
diff --git a/third_party/ceres/docs/source/interfacing_with_autodiff.rst b/third_party/ceres/docs/source/interfacing_with_autodiff.rst
deleted file mode 100644
index fa05835..0000000
--- a/third_party/ceres/docs/source/interfacing_with_autodiff.rst
+++ /dev/null
@@ -1,294 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-interfacing_with_automatic_differentiation:
-
-Interfacing with Automatic Differentiation
-==========================================
-
-Automatic differentiation is straightforward to use in cases where an
-explicit expression for the cost function is available. But this is
-not always possible. Often one has to interface with external routines
-or data. In this chapter we will consider a number of different ways
-of doing so.
-
-To do this, we will consider the problem of finding parameters
-:math:`\theta` and :math:`t` that solve an optimization problem of the
-form:
-
-.. math::
-   \min & \quad \sum_i \left \|y_i - f\left (\|q_{i}\|^2\right) q_i
-   \right \|^2\\
-   \text{such that} & \quad q_i = R(\theta) x_i + t
-
-Here, :math:`R` is a two dimensional rotation matrix parameterized
-using the angle :math:`\theta` and :math:`t` is a two dimensional
-vector. :math:`f` is an external distortion function.
-
-We begin by considering the case, where we have a templated function
-:code:`TemplatedComputeDistortion` that can compute the function
-:math:`f`. Then the implementation of the corresponding residual
-functor is straightforward and will look as follows:
-
-.. code-block:: c++
-   :emphasize-lines: 21
-
-   template <typename T> T TemplatedComputeDistortion(const T r2) {
-     const double k1 = 0.0082;
-     const double k2 = 0.000023;
-     return 1.0 + k1 * r2 + k2 * r2 * r2;
-   }
-
-   struct Affine2DWithDistortion {
-     Affine2DWithDistortion(const double x_in[2], const double y_in[2]) {
-       x[0] = x_in[0];
-       x[1] = x_in[1];
-       y[0] = y_in[0];
-       y[1] = y_in[1];
-     }
-
-     template <typename T>
-     bool operator()(const T* theta,
-                     const T* t,
-                     T* residuals) const {
-       const T q_0 =  cos(theta[0]) * x[0] - sin(theta[0]) * x[1] + t[0];
-       const T q_1 =  sin(theta[0]) * x[0] + cos(theta[0]) * x[1] + t[1];
-       const T f = TemplatedComputeDistortion(q_0 * q_0 + q_1 * q_1);
-       residuals[0] = y[0] - f * q_0;
-       residuals[1] = y[1] - f * q_1;
-       return true;
-     }
-
-     double x[2];
-     double y[2];
-   };
-
-So far so good, but let us now consider three ways of defining
-:math:`f` which are not directly amenable to being used with automatic
-differentiation:
-
-#. A non-templated function that evaluates its value.
-#. A function that evaluates its value and derivative.
-#. A function that is defined as a table of values to be interpolated.
-
-We will consider them in turn below.
-
-A function that returns its value
-----------------------------------
-
-Suppose we were given a function :code:`ComputeDistortionValue` with
-the following signature
-
-.. code-block:: c++
-
-   double ComputeDistortionValue(double r2);
-
-that computes the value of :math:`f`. The actual implementation of the
-function does not matter. Interfacing this function with
-:code:`Affine2DWithDistortion` is a three step process:
-
-1. Wrap :code:`ComputeDistortionValue` into a functor
-   :code:`ComputeDistortionValueFunctor`.
-2. Numerically differentiate :code:`ComputeDistortionValueFunctor`
-   using :class:`NumericDiffCostFunction` to create a
-   :class:`CostFunction`.
-3. Wrap the resulting :class:`CostFunction` object using
-   :class:`CostFunctionToFunctor`. The resulting object is a functor
-   with a templated :code:`operator()` method, which pipes the
-   Jacobian computed by :class:`NumericDiffCostFunction` into the
-   appropriate :code:`Jet` objects.
-
-An implementation of the above three steps looks as follows:
-
-.. code-block:: c++
-   :emphasize-lines: 15,16,17,18,19,20, 29
-
-   struct ComputeDistortionValueFunctor {
-     bool operator()(const double* r2, double* value) const {
-       *value = ComputeDistortionValue(r2[0]);
-       return true;
-     }
-   };
-
-   struct Affine2DWithDistortion {
-     Affine2DWithDistortion(const double x_in[2], const double y_in[2]) {
-       x[0] = x_in[0];
-       x[1] = x_in[1];
-       y[0] = y_in[0];
-       y[1] = y_in[1];
-
-       compute_distortion = std::make_unique<ceres::CostFunctionToFunctor<1, 1>>(
-         std::make_unique<ceres::NumericDiffCostFunction<
-               ComputeDistortionValueFunctor
-             , ceres::CENTRAL, 1, 1
-           >
-         >()
-       );
-     }
-
-     template <typename T>
-     bool operator()(const T* theta, const T* t, T* residuals) const {
-       const T q_0 = cos(theta[0]) * x[0] - sin(theta[0]) * x[1] + t[0];
-       const T q_1 = sin(theta[0]) * x[0] + cos(theta[0]) * x[1] + t[1];
-       const T r2 = q_0 * q_0 + q_1 * q_1;
-       T f;
-       (*compute_distortion)(&r2, &f);
-       residuals[0] = y[0] - f * q_0;
-       residuals[1] = y[1] - f * q_1;
-       return true;
-     }
-
-     double x[2];
-     double y[2];
-     std::unique_ptr<ceres::CostFunctionToFunctor<1, 1>> compute_distortion;
-   };
-
-
-A function that returns its value and derivative
-------------------------------------------------
-
-Now suppose we are given a function :code:`ComputeDistortionValue`
-that is able to compute its value and optionally its Jacobian on demand
-and has the following signature:
-
-.. code-block:: c++
-
-   void ComputeDistortionValueAndJacobian(double r2,
-                                          double* value,
-                                          double* jacobian);
-
-Again, the actual implementation of the function does not
-matter. Interfacing this function with :code:`Affine2DWithDistortion`
-is a two step process:
-
-1. Wrap :code:`ComputeDistortionValueAndJacobian` into a
-   :class:`CostFunction` object which we call
-   :code:`ComputeDistortionFunction`.
-2. Wrap the resulting :class:`ComputeDistortionFunction` object using
-   :class:`CostFunctionToFunctor`. The resulting object is a functor
-   with a templated :code:`operator()` method, which pipes the
-   Jacobian computed by :class:`NumericDiffCostFunction` into the
-   appropriate :code:`Jet` objects.
-
-The resulting code will look as follows:
-
-.. code-block:: c++
-   :emphasize-lines: 21,22, 33
-
-   class ComputeDistortionFunction : public ceres::SizedCostFunction<1, 1> {
-    public:
-     virtual bool Evaluate(double const* const* parameters,
-                           double* residuals,
-                           double** jacobians) const {
-       if (!jacobians) {
-         ComputeDistortionValueAndJacobian(parameters[0][0], residuals, nullptr);
-       } else {
-         ComputeDistortionValueAndJacobian(parameters[0][0], residuals, jacobians[0]);
-       }
-       return true;
-     }
-   };
-
-   struct Affine2DWithDistortion {
-     Affine2DWithDistortion(const double x_in[2], const double y_in[2]) {
-       x[0] = x_in[0];
-       x[1] = x_in[1];
-       y[0] = y_in[0];
-       y[1] = y_in[1];
-       compute_distortion.reset(
-           new ceres::CostFunctionToFunctor<1, 1>(new ComputeDistortionFunction));
-     }
-
-     template <typename T>
-     bool operator()(const T* theta,
-                     const T* t,
-                     T* residuals) const {
-       const T q_0 =  cos(theta[0]) * x[0] - sin(theta[0]) * x[1] + t[0];
-       const T q_1 =  sin(theta[0]) * x[0] + cos(theta[0]) * x[1] + t[1];
-       const T r2 = q_0 * q_0 + q_1 * q_1;
-       T f;
-       (*compute_distortion)(&r2, &f);
-       residuals[0] = y[0] - f * q_0;
-       residuals[1] = y[1] - f * q_1;
-       return true;
-     }
-
-     double x[2];
-     double y[2];
-     std::unique_ptr<ceres::CostFunctionToFunctor<1, 1> > compute_distortion;
-   };
-
-
-A function that is defined as a table of values
------------------------------------------------
-
-The third and final case we will consider is where the function
-:math:`f` is defined as a table of values on the interval :math:`[0,
-100)`, with a value for each integer.
-
-.. code-block:: c++
-
-   vector<double> distortion_values;
-
-There are many ways of interpolating a table of values. Perhaps the
-simplest and most common method is linear interpolation. But it is not
-a great idea to use linear interpolation because the interpolating
-function is not differentiable at the sample points.
-
-A simple (well behaved) differentiable interpolation is the `Cubic
-Hermite Spline
-<http://en.wikipedia.org/wiki/Cubic_Hermite_spline>`_. Ceres Solver
-ships with routines to perform Cubic & Bi-Cubic interpolation that is
-automatic differentiation friendly.
-
-Using Cubic interpolation requires first constructing a
-:class:`Grid1D` object to wrap the table of values and then
-constructing a :class:`CubicInterpolator` object using it.
-
-The resulting code will look as follows:
-
-.. code-block:: c++
-   :emphasize-lines: 10,11,12,13, 24, 32,33
-
-   struct Affine2DWithDistortion {
-     Affine2DWithDistortion(const double x_in[2],
-                            const double y_in[2],
-                            const std::vector<double>& distortion_values) {
-       x[0] = x_in[0];
-       x[1] = x_in[1];
-       y[0] = y_in[0];
-       y[1] = y_in[1];
-
-       grid.reset(new ceres::Grid1D<double, 1>(
-           &distortion_values[0], 0, distortion_values.size()));
-       compute_distortion.reset(
-           new ceres::CubicInterpolator<ceres::Grid1D<double, 1> >(*grid));
-     }
-
-     template <typename T>
-     bool operator()(const T* theta,
-                     const T* t,
-                     T* residuals) const {
-       const T q_0 =  cos(theta[0]) * x[0] - sin(theta[0]) * x[1] + t[0];
-       const T q_1 =  sin(theta[0]) * x[0] + cos(theta[0]) * x[1] + t[1];
-       const T r2 = q_0 * q_0 + q_1 * q_1;
-       T f;
-       compute_distortion->Evaluate(r2, &f);
-       residuals[0] = y[0] - f * q_0;
-       residuals[1] = y[1] - f * q_1;
-       return true;
-     }
-
-     double x[2];
-     double y[2];
-     std::unique_ptr<ceres::Grid1D<double, 1> > grid;
-     std::unique_ptr<ceres::CubicInterpolator<ceres::Grid1D<double, 1> > > compute_distortion;
-   };
-
-In the above example we used :class:`Grid1D` and
-:class:`CubicInterpolator` to interpolate a one dimensional table of
-values. :class:`Grid2D` combined with :class:`CubicInterpolator` lets
-the user to interpolate two dimensional tables of values. Note that
-neither :class:`Grid1D` or :class:`Grid2D` are limited to scalar
-valued functions, they also work with vector valued functions.
diff --git a/third_party/ceres/docs/source/inverse_and_implicit_function_theorems.rst b/third_party/ceres/docs/source/inverse_and_implicit_function_theorems.rst
deleted file mode 100644
index 7d8f7fa..0000000
--- a/third_party/ceres/docs/source/inverse_and_implicit_function_theorems.rst
+++ /dev/null
@@ -1,214 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-inverse_function_theorem:
-
-==========================================
-Using Inverse & Implicit Function Theorems
-==========================================
-
-Until now we have considered methods for computing derivatives that
-work directly on the function being differentiated. However, this is
-not always possible. For example, if the function can only be computed
-via an iterative algorithm, or there is no explicit definition of the
-function available.  In this section we will see how we can use two
-basic results from calculus to get around these difficulties.
-
-
-Inverse Function Theorem
-========================
-
-Suppose we wish to evaluate the derivative of a function :math:`f(x)`,
-but evaluating :math:`f(x)` is not easy. Say it involves running an
-iterative algorithm. You could try automatically differentiating the
-iterative algorithm, but even if that is possible, it can become quite
-expensive.
-
-In some cases we get lucky, and computing the inverse of :math:`f(x)`
-is an easy operation. In these cases, we can use the `Inverse Function
-Theorem <http://en.wikipedia.org/wiki/Inverse_function_theorem>`_ to
-compute the derivative exactly. Here is the key idea:
-
-Assuming that :math:`y=f(x)` is continuously differentiable in a
-neighborhood of a point :math:`x` and :math:`Df(x)` is the invertible
-Jacobian of :math:`f` at :math:`x`, then by applying the chain rule to
-the identity :math:`f^{-1}(f(x)) = x`, we have
-:math:`Df^{-1}(f(x))Df(x) = I`, or :math:`Df^{-1}(y) = (Df(x))^{-1}`,
-i.e., the Jacobian of :math:`f^{-1}` is the inverse of the Jacobian of
-:math:`f`, or :math:`Df(x) = (Df^{-1}(y))^{-1}`.
-
-For example, let :math:`f(x) = e^x`. Now of course we know that
-:math:`Df(x) = e^x`, but let's try and compute it via the Inverse
-Function Theorem. For :math:`x > 0`, we have :math:`f^{-1}(y) = \log
-y`, so :math:`Df^{-1}(y) = \frac{1}{y}`, so :math:`Df(x) =
-(Df^{-1}(y))^{-1} = y = e^x`.
-
-You maybe wondering why the above is true. A smoothly differentiable
-function in a small neighborhood is well approximated by a linear
-function. Indeed this is a good way to think about the Jacobian, it is
-the matrix that best approximates the function linearly. Once you do
-that, it is straightforward to see that *locally* :math:`f^{-1}(y)` is
-best approximated linearly by the inverse of the Jacobian of
-:math:`f(x)`.
-
-Let us now consider a more practical example.
-
-Geodetic Coordinate System Conversion
--------------------------------------
-
-When working with data related to the Earth, one can use two different
-coordinate systems. The familiar (latitude, longitude, height)
-Latitude-Longitude-Altitude coordinate system or the `ECEF
-<http://en.wikipedia.org/wiki/ECEF>`_ coordinate systems. The former
-is familiar but is not terribly convenient analytically. The latter is
-a Cartesian system but not particularly intuitive. So systems that
-process earth related data have to go back and forth between these
-coordinate systems.
-
-The conversion between the LLA and the ECEF coordinate system requires
-a model of the Earth, the most commonly used one being `WGS84
-<https://en.wikipedia.org/wiki/World_Geodetic_System#1984_version>`_.
-
-Going from the spherical :math:`(\phi,\lambda,h)` to the ECEF
-:math:`(x,y,z)` coordinates is easy.
-
-.. math::
-
-   \chi &= \sqrt{1 - e^2 \sin^2 \phi}
-
-   X &= \left( \frac{a}{\chi} + h \right) \cos \phi \cos \lambda
-
-   Y &= \left( \frac{a}{\chi} + h \right) \cos \phi \sin \lambda
-
-   Z &= \left(\frac{a(1-e^2)}{\chi}  +h \right) \sin \phi
-
-Here :math:`a` and :math:`e^2` are constants defined by `WGS84
-<https://en.wikipedia.org/wiki/World_Geodetic_System#1984_version>`_.
-
-Going from ECEF to LLA coordinates requires an iterative algorithm. So
-to compute the derivative of the this transformation we invoke the
-Inverse Function Theorem as follows:
-
-.. code-block:: c++
-
-   Eigen::Vector3d ecef; // Fill some values
-   // Iterative computation.
-   Eigen::Vector3d lla = ECEFToLLA(ecef);
-   // Analytic derivatives
-   Eigen::Matrix3d lla_to_ecef_jacobian = LLAToECEFJacobian(lla);
-   bool invertible;
-   Eigen::Matrix3d ecef_to_lla_jacobian;
-   lla_to_ecef_jacobian.computeInverseWithCheck(ecef_to_lla_jacobian, invertible);
-
-
-Implicit Function Theorem
-=========================
-
-Consider now the problem where we have two variables :math:`x \in
-\mathbb{R}^m` and :math:`y \in \mathbb{R}^n` and a function
-:math:`F:\mathbb{R}^m \times \mathbb{R}^n \rightarrow \mathbb{R}^n`
-such that :math:`F(x,y) = 0` and we wish to calculate the Jacobian of
-:math:`y` with respect to `x`. How do we do this?
-
-If for a given value of :math:`(x,y)`, the partial Jacobian
-:math:`D_2F(x,y)` is full rank, then the `Implicit Function Theorem
-<https://en.wikipedia.org/wiki/Implicit_function_theorem>`_ tells us
-that there exists a neighborhood of :math:`x` and a function :math:`G`
-such :math:`y = G(x)` in this neighborhood. Differentiating
-:math:`F(x,G(x)) = 0` gives us
-
-.. math::
-
-   D_1F(x,y) + D_2F(x,y)DG(x) &= 0
-
-                        DG(x) &= -(D_2F(x,y))^{-1} D_1 F(x,y)
-
-                        D y(x) &= -(D_2F(x,y))^{-1} D_1 F(x,y)
-
-This means that we can compute the derivative of :math:`y` with
-respect to :math:`x` by multiplying the Jacobian of :math:`F` w.r.t
-:math:`x` by the inverse of the Jacobian of :math:`F` w.r.t :math:`y`.
-
-Let's consider two examples.
-
-Roots of a Polynomial
----------------------
-
-The first example we consider is a classic. Let :math:`p(x) = a_0 +
-a_1 x + \dots + a_n x^n` be a degree :math:`n` polynomial, and we wish
-to compute the derivative of its roots with respect to its
-coefficients. There is no closed form formula for computing the roots
-of a general degree :math:`n` polynomial. `Galois
-<https://en.wikipedia.org/wiki/%C3%89variste_Galois>`_ and `Abel
-<https://en.wikipedia.org/wiki/Niels_Henrik_Abel>`_ proved that. There
-are numerical algorithms like computing the eigenvalues of the
-`Companion Matrix
-<https://nhigham.com/2021/03/23/what-is-a-companion-matrix/>`_, but
-differentiating an eigenvalue solver does not seem like fun. But the
-Implicit Function Theorem offers us a simple path.
-
-If :math:`x` is a root of :math:`p(x)`, then :math:`F(\mathbf{a}, x) =
-a_0 + a_1 x + \dots + a_n x^n = 0`. So,
-
-.. math::
-
-   D_1 F(\mathbf{a}, x) &= [1, x, x^2, \dots, x^n]
-
-   D_2 F(\mathbf{a}, x) &= \sum_{k=1}^n k a_k x^{k-1} = Dp(x)
-
-        Dx(a) &= \frac{-1}{Dp(x)} [1, x, x^2, \dots, x^n]
-
-Differentiating the Solution to an Optimization Problem
--------------------------------------------------------
-
-Sometimes we are required to solve optimization problems inside
-optimization problems, and this requires computing the derivative of
-the optimal solution (or a fixed point) of an optimization problem
-w.r.t its parameters.
-
-Let :math:`\theta \in \mathbb{R}^m` be a vector, :math:`A(\theta) \in
-\mathbb{R}^{k\times n}` be a matrix whose entries are a function of
-:math:`\theta` with :math:`k \ge n` and let :math:`b \in \mathbb{R}^k`
-be a constant vector, then consider the linear least squares problem:
-
-.. math::
-
-   x^* = \arg \min_x \|A(\theta) x - b\|_2^2
-
-How do we compute :math:`D_\theta x^*(\theta)`?
-
-One approach would be to observe that :math:`x^*(\theta) =
-(A^\top(\theta)A(\theta))^{-1}A^\top(\theta)b` and then differentiate
-this w.r.t :math:`\theta`. But this would require differentiating
-through the inverse of the matrix
-:math:`(A^\top(\theta)A(\theta))^{-1}`. Not exactly easy. Let's use
-the Implicit Function Theorem instead.
-
-The first step is to observe that :math:`x^*` satisfies the so called
-*normal equations*.
-
-.. math::
-
-   A^\top(\theta)A(\theta)x^* - A^\top(\theta)b = 0
-
-We will compute :math:`D_\theta x^*` column-wise, treating
-:math:`A(\theta)` as a function of one coordinate (:math:`\theta_i`)
-of :math:`\theta` at a time. So using the normal equations, let's
-define :math:`F(\theta_i, x^*) = A^\top(\theta_i)A(\theta_i)x^* -
-A^\top(\theta_i)b = 0`. Using which can now compute:
-
-.. math::
-
-   D_1F(\theta_i, x^*) &= D_{\theta_i}A^\top A + A^\top
-   D_{\theta_i}Ax^* - D_{\theta_i} A^\top b = g_i
-
-   D_2F(\theta_i, x^*) &= A^\top A
-
-   Dx^*(\theta_i) & = -(A^\top A)^{-1} g_i
-
-   Dx^*(\theta) & = -(A^\top A )^{-1} \left[g_1, \dots, g_m\right]
-
-Observe that we only need to compute the inverse of :math:`A^\top A`,
-to compute :math:`D x^*(\theta)`, which we needed anyways to compute
-:math:`x^*`.
diff --git a/third_party/ceres/docs/source/least_squares_fit.png b/third_party/ceres/docs/source/least_squares_fit.png
deleted file mode 100644
index 7dad673..0000000
--- a/third_party/ceres/docs/source/least_squares_fit.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/license.rst b/third_party/ceres/docs/source/license.rst
deleted file mode 100644
index ed85f6a..0000000
--- a/third_party/ceres/docs/source/license.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-=======
-License
-=======
-
-.. NOTE::
-
-   This page refers only to the license for Ceres itself, independent of its
-   optional dependencies which are separately licensed and which can affect
-   the resulting license of Ceres if built with them enabled.  See
-   :ref:`options-controlling-ceres-configuration` for an overview of these
-   implications.
-
-Ceres Solver is licensed under the New BSD license, whose terms are as follows.
-
-Copyright 2023 Google Inc. 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 must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-3.    Neither the name of Google Inc.,  nor the names of its contributors may
-      be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-This software is provided by the copyright holders and contributors "AS IS" and
-any express or implied warranties, including, but not limited to, the implied
-warranties of merchantability and fitness for a particular purpose are
-disclaimed. In no event shall Google Inc. 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/third_party/ceres/docs/source/loss.png b/third_party/ceres/docs/source/loss.png
deleted file mode 100644
index 5c9ac07..0000000
--- a/third_party/ceres/docs/source/loss.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/manhattan_olson_3500_result.png b/third_party/ceres/docs/source/manhattan_olson_3500_result.png
deleted file mode 100644
index 5631dfa..0000000
--- a/third_party/ceres/docs/source/manhattan_olson_3500_result.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/modeling_faqs.rst b/third_party/ceres/docs/source/modeling_faqs.rst
deleted file mode 100644
index 0d23de4..0000000
--- a/third_party/ceres/docs/source/modeling_faqs.rst
+++ /dev/null
@@ -1,88 +0,0 @@
-.. _chapter-modeling_faqs:
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-========
-Modeling
-========
-
-#. Use analytical/automatic derivatives.
-
-   This is the single most important piece of advice we can give to
-   you. It is tempting to take the easy way out and use numeric
-   differentiation. This is a bad idea. Numeric differentiation is
-   slow, ill-behaved, hard to get right, and results in poor
-   convergence behaviour.
-
-   Ceres allows the user to define templated functors which will
-   be automatically differentiated. For most situations this is enough
-   and we recommend using this facility. In some cases the derivatives
-   are simple enough or the performance considerations are such that
-   the overhead of automatic differentiation is too much. In such
-   cases, analytic derivatives are recommended.
-
-   The use of numerical derivatives should be a measure of last
-   resort, where it is simply not possible to write a templated
-   implementation of the cost function.
-
-   In many cases it is not possible to do analytic or automatic
-   differentiation of the entire cost function, but it is generally
-   the case that it is possible to decompose the cost function into
-   parts that need to be numerically differentiated and parts that can
-   be automatically or analytically differentiated.
-
-   To this end, Ceres has extensive support for mixing analytic,
-   automatic and numeric differentiation. See
-   :class:`CostFunctionToFunctor`.
-
-#. When using Quaternions,  consider using :class:`QuaternionManifold`.
-
-   `Quaternions <https://en.wikipedia.org/wiki/Quaternion>`_ are a
-   four dimensional parameterization of the space of three dimensional
-   rotations :math:`SO(3)`.  However, the :math:`SO(3)` is a three
-   dimensional set, and so is the tangent space of a
-   Quaternion. Therefore, it is sometimes (not always) beneficial to
-   associate a local parameterization with parameter blocks
-   representing a Quaternion. Assuming that the order of entries in
-   your parameter block is :math:`w,x,y,z`, you can use
-   :class:`QuaternionManifold`.
-
-   .. NOTE::
-
-     If you are using `Eigen's Quaternion
-     <http://eigen.tuxfamily.org/dox/classEigen_1_1Quaternion.html>`_
-     object, whose layout is :math:`x,y,z,w`, then you should use
-     :class:`EigenQuaternionManifold`.
-
-
-#. How do I solve problems with general linear & non-linear
-   **inequality** constraints with Ceres Solver?
-
-   Currently, Ceres Solver only supports upper and lower bounds
-   constraints on the parameter blocks.
-
-   A crude way of dealing with inequality constraints is have one or
-   more of your cost functions check if the inequalities you are
-   interested in are satisfied, and if not return false instead of
-   true. This will prevent the solver from ever stepping into an
-   infeasible region.
-
-   This requires that the starting point for the optimization be a
-   feasible point.  You also risk pre-mature convergence using this
-   method.
-
-#. How do I solve problems with general linear & non-linear **equality**
-   constraints with Ceres Solver?
-
-   There is no built in support in ceres for solving problems with
-   equality constraints.  Currently, Ceres Solver only supports upper
-   and lower bounds constraints on the parameter blocks.
-
-   The trick described above for dealing with inequality
-   constraints will **not** work for equality constraints.
-
-#. How do I set one or more components of a parameter block constant?
-
-   Using :class:`SubsetManifold`.
diff --git a/third_party/ceres/docs/source/nnls_covariance.rst b/third_party/ceres/docs/source/nnls_covariance.rst
deleted file mode 100644
index f95d246..0000000
--- a/third_party/ceres/docs/source/nnls_covariance.rst
+++ /dev/null
@@ -1,394 +0,0 @@
-.. highlight:: c++
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-nnls_covariance:
-
-=====================
-Covariance Estimation
-=====================
-
-Introduction
-============
-
-One way to assess the quality of the solution returned by a non-linear
-least squares solver is to analyze the covariance of the solution.
-
-Let us consider the non-linear regression problem
-
-.. math::  y = f(x) + N(0, I)
-
-i.e., the observation :math:`y` is a random non-linear function of the
-independent variable :math:`x` with mean :math:`f(x)` and identity
-covariance. Then the maximum likelihood estimate of :math:`x` given
-observations :math:`y` is the solution to the non-linear least squares
-problem:
-
-.. math:: x^* = \arg \min_x \|f(x) - y\|^2
-
-And the covariance of :math:`x^*` is given by
-
-.. math:: C(x^*) = \left(J'(x^*)J(x^*)\right)^{-1}
-
-Here :math:`J(x^*)` is the Jacobian of :math:`f` at :math:`x^*`. The
-above formula assumes that :math:`J(x^*)` has full column rank.
-
-If :math:`J(x^*)` is rank deficient, then the covariance matrix :math:`C(x^*)`
-is also rank deficient and is given by the Moore-Penrose pseudo inverse.
-
-.. math:: C(x^*) =  \left(J'(x^*)J(x^*)\right)^{\dagger}
-
-Note that in the above, we assumed that the covariance matrix for
-:math:`y` was identity. This is an important assumption. If this is
-not the case and we have
-
-.. math:: y = f(x) + N(0, S)
-
-Where :math:`S` is a positive semi-definite matrix denoting the
-covariance of :math:`y`, then the maximum likelihood problem to be
-solved is
-
-.. math:: x^* = \arg \min_x f'(x) S^{-1} f(x)
-
-and the corresponding covariance estimate of :math:`x^*` is given by
-
-.. math:: C(x^*) = \left(J'(x^*) S^{-1} J(x^*)\right)^{-1}
-
-So, if it is the case that the observations being fitted to have a
-covariance matrix not equal to identity, then it is the user's
-responsibility that the corresponding cost functions are correctly
-scaled, e.g. in the above case the cost function for this problem
-should evaluate :math:`S^{-1/2} f(x)` instead of just :math:`f(x)`,
-where :math:`S^{-1/2}` is the inverse square root of the covariance
-matrix :math:`S`.
-
-Gauge Invariance
-================
-
-In structure from motion (3D reconstruction) problems, the
-reconstruction is ambiguous up to a similarity transform. This is
-known as a *Gauge Ambiguity*. Handling Gauges correctly requires the
-use of SVD or custom inversion algorithms. For small problems the
-user can use the dense algorithm. For more details see the work of
-Kanatani & Morris [KanataniMorris]_.
-
-
-:class:`Covariance`
-===================
-
-:class:`Covariance` allows the user to evaluate the covariance for a
-non-linear least squares problem and provides random access to its
-blocks. The computation assumes that the cost functions compute
-residuals such that their covariance is identity.
-
-Since the computation of the covariance matrix requires computing the
-inverse of a potentially large matrix, this can involve a rather large
-amount of time and memory. However, it is usually the case that the
-user is only interested in a small part of the covariance
-matrix. Quite often just the block diagonal. :class:`Covariance`
-allows the user to specify the parts of the covariance matrix that she
-is interested in and then uses this information to only compute and
-store those parts of the covariance matrix.
-
-Rank of the Jacobian
-====================
-
-As we noted above, if the Jacobian is rank deficient, then the inverse
-of :math:`J'J` is not defined and instead a pseudo inverse needs to be
-computed.
-
-The rank deficiency in :math:`J` can be *structural* -- columns
-which are always known to be zero or *numerical* -- depending on the
-exact values in the Jacobian.
-
-Structural rank deficiency occurs when the problem contains parameter
-blocks that are constant. This class correctly handles structural rank
-deficiency like that.
-
-Numerical rank deficiency, where the rank of the matrix cannot be
-predicted by its sparsity structure and requires looking at its
-numerical values is more complicated. Here again there are two
-cases.
-
-  a. The rank deficiency arises from overparameterization. e.g., a
-     four dimensional quaternion used to parameterize :math:`SO(3)`,
-     which is a three dimensional manifold. In cases like this, the
-     user should use an appropriate
-     :class:`Manifold`. Not only will this lead to better
-     numerical behaviour of the Solver, it will also expose the rank
-     deficiency to the :class:`Covariance` object so that it can
-     handle it correctly.
-
-  b. More general numerical rank deficiency in the Jacobian requires
-     the computation of the so called Singular Value Decomposition
-     (SVD) of :math:`J'J`. We do not know how to do this for large
-     sparse matrices efficiently. For small and moderate sized
-     problems this is done using dense linear algebra.
-
-
-:class:`Covariance::Options`
-
-.. class:: Covariance::Options
-
-.. member:: int Covariance::Options::num_threads
-
-   Default: ``1``
-
-   Number of threads to be used for evaluating the Jacobian and
-   estimation of covariance.
-
-.. member:: SparseLinearAlgebraLibraryType Covariance::Options::sparse_linear_algebra_library_type
-
-   Default: ``SUITE_SPARSE`` Ceres Solver is built with support for
-   `SuiteSparse <http://faculty.cse.tamu.edu/davis/suitesparse.html>`_
-   and ``EIGEN_SPARSE`` otherwise. Note that ``EIGEN_SPARSE`` is
-   always available.
-
-.. member:: CovarianceAlgorithmType Covariance::Options::algorithm_type
-
-   Default: ``SPARSE_QR``
-
-   Ceres supports two different algorithms for covariance estimation,
-   which represent different tradeoffs in speed, accuracy and
-   reliability.
-
-   1. ``SPARSE_QR`` uses the sparse QR factorization algorithm to
-      compute the decomposition
-
-       .. math::
-
-          QR &= J\\
-          \left(J^\top J\right)^{-1} &= \left(R^\top R\right)^{-1}
-
-      The speed of this algorithm depends on the sparse linear algebra
-      library being used. ``Eigen``'s sparse QR factorization is a
-      moderately fast algorithm suitable for small to medium sized
-      matrices. For best performance we recommend using
-      ``SuiteSparseQR`` which is enabled by setting
-      :member:`Covariance::Options::sparse_linear_algebra_library_type`
-      to ``SUITE_SPARSE``.
-
-      ``SPARSE_QR`` cannot compute the covariance if the
-      Jacobian is rank deficient.
-
-
-   2. ``DENSE_SVD`` uses ``Eigen``'s ``JacobiSVD`` to perform the
-      computations. It computes the singular value decomposition
-
-      .. math::   U D V^\top = J
-
-      and then uses it to compute the pseudo inverse of J'J as
-
-      .. math::   (J'J)^{\dagger} = V  D^{2\dagger}  V^\top
-
-      It is an accurate but slow method and should only be used for
-      small to moderate sized problems. It can handle full-rank as
-      well as rank deficient Jacobians.
-
-
-.. member:: double Covariance::Options::column_pivot_threshold
-
-   Default: :math:`-1`
-
-    During QR factorization, if a column with Euclidean norm less than
-    ``column_pivot_threshold`` is encountered it is treated as zero.
-
-    If ``column_pivot_threshold < 0``, then an automatic default value
-    of `20*(m+n)*eps*sqrt(max(diag(J’*J)))` is used.  Here `m` and `n`
-    are the number of rows and columns of the Jacobian (`J`)
-    respectively.
-
-    This is an advanced option meant for users who know enough about
-    their Jacobian matrices that they can determine a value better
-    than the default.
-
-
-.. member:: int Covariance::Options::min_reciprocal_condition_number
-
-   Default: :math:`10^{-14}`
-
-   If the Jacobian matrix is near singular, then inverting :math:`J'J`
-   will result in unreliable results, e.g, if
-
-   .. math::
-
-     J = \begin{bmatrix}
-         1.0& 1.0 \\
-         1.0& 1.0000001
-         \end{bmatrix}
-
-   which is essentially a rank deficient matrix, we have
-
-   .. math::
-
-     (J'J)^{-1} = \begin{bmatrix}
-                  2.0471e+14&  -2.0471e+14 \\
-                  -2.0471e+14&   2.0471e+14
-                  \end{bmatrix}
-
-
-   This is not a useful result. Therefore, by default
-   :func:`Covariance::Compute` will return ``false`` if a rank
-   deficient Jacobian is encountered. How rank deficiency is detected
-   depends on the algorithm being used.
-
-   1. ``DENSE_SVD``
-
-      .. math:: \frac{\sigma_{\text{min}}}{\sigma_{\text{max}}}  < \sqrt{\text{min_reciprocal_condition_number}}
-
-      where :math:`\sigma_{\text{min}}` and
-      :math:`\sigma_{\text{max}}` are the minimum and maximum
-      singular values of :math:`J` respectively.
-
-   2. ``SPARSE_QR``
-
-       .. math:: \operatorname{rank}(J) < \operatorname{num\_col}(J)
-
-       Here :math:`\operatorname{rank}(J)` is the estimate of the rank
-       of :math:`J` returned by the sparse QR factorization
-       algorithm. It is a fairly reliable indication of rank
-       deficiency.
-
-.. member:: int Covariance::Options::null_space_rank
-
-    When using ``DENSE_SVD``, the user has more control in dealing
-    with singular and near singular covariance matrices.
-
-    As mentioned above, when the covariance matrix is near singular,
-    instead of computing the inverse of :math:`J'J`, the Moore-Penrose
-    pseudoinverse of :math:`J'J` should be computed.
-
-    If :math:`J'J` has the eigen decomposition :math:`(\lambda_i,
-    e_i)`, where :math:`\lambda_i` is the :math:`i^\textrm{th}`
-    eigenvalue and :math:`e_i` is the corresponding eigenvector, then
-    the inverse of :math:`J'J` is
-
-    .. math:: (J'J)^{-1} = \sum_i \frac{1}{\lambda_i} e_i e_i'
-
-    and computing the pseudo inverse involves dropping terms from this
-    sum that correspond to small eigenvalues.
-
-    How terms are dropped is controlled by
-    `min_reciprocal_condition_number` and `null_space_rank`.
-
-    If `null_space_rank` is non-negative, then the smallest
-    `null_space_rank` eigenvalue/eigenvectors are dropped irrespective
-    of the magnitude of :math:`\lambda_i`. If the ratio of the
-    smallest non-zero eigenvalue to the largest eigenvalue in the
-    truncated matrix is still below min_reciprocal_condition_number,
-    then the `Covariance::Compute()` will fail and return `false`.
-
-    Setting `null_space_rank = -1` drops all terms for which
-
-    .. math::  \frac{\lambda_i}{\lambda_{\textrm{max}}} < \textrm{min_reciprocal_condition_number}
-
-    This option has no effect on ``SPARSE_QR``.
-
-.. member:: bool Covariance::Options::apply_loss_function
-
-   Default: `true`
-
-   Even though the residual blocks in the problem may contain loss
-   functions, setting ``apply_loss_function`` to false will turn off
-   the application of the loss function to the output of the cost
-   function and in turn its effect on the covariance.
-
-.. class:: Covariance
-
-   :class:`Covariance::Options` as the name implies is used to control
-   the covariance estimation algorithm. Covariance estimation is a
-   complicated and numerically sensitive procedure. Please read the
-   entire documentation for :class:`Covariance::Options` before using
-   :class:`Covariance`.
-
-.. function:: bool Covariance::Compute(const std::vector<std::pair<const double*, const double*> >& covariance_blocks, Problem* problem)
-
-   Compute a part of the covariance matrix.
-
-   The vector ``covariance_blocks``, indexes into the covariance
-   matrix block-wise using pairs of parameter blocks. This allows the
-   covariance estimation algorithm to only compute and store these
-   blocks.
-
-   Since the covariance matrix is symmetric, if the user passes
-   ``<block1, block2>``, then ``GetCovarianceBlock`` can be called with
-   ``block1``, ``block2`` as well as ``block2``, ``block1``.
-
-   ``covariance_blocks`` cannot contain duplicates. Bad things will
-   happen if they do.
-
-   Note that the list of ``covariance_blocks`` is only used to
-   determine what parts of the covariance matrix are computed. The
-   full Jacobian is used to do the computation, i.e. they do not have
-   an impact on what part of the Jacobian is used for computation.
-
-   The return value indicates the success or failure of the covariance
-   computation. Please see the documentation for
-   :class:`Covariance::Options` for more on the conditions under which
-   this function returns ``false``.
-
-.. function:: bool GetCovarianceBlock(const double* parameter_block1, const double* parameter_block2, double* covariance_block) const
-
-   Return the block of the cross-covariance matrix corresponding to
-   ``parameter_block1`` and ``parameter_block2``.
-
-   Compute must be called before the first call to ``GetCovarianceBlock``
-   and the pair ``<parameter_block1, parameter_block2>`` OR the pair
-   ``<parameter_block2, parameter_block1>`` must have been present in the
-   vector covariance_blocks when ``Compute`` was called. Otherwise
-   ``GetCovarianceBlock`` will return false.
-
-   ``covariance_block`` must point to a memory location that can store
-   a ``parameter_block1_size x parameter_block2_size`` matrix. The
-   returned covariance will be a row-major matrix.
-
-.. function:: bool GetCovarianceBlockInTangentSpace(const double* parameter_block1, const double* parameter_block2, double* covariance_block) const
-
-   Return the block of the cross-covariance matrix corresponding to
-   ``parameter_block1`` and ``parameter_block2``.
-   Returns cross-covariance in the tangent space if a local
-   parameterization is associated with either parameter block;
-   else returns cross-covariance in the ambient space.
-
-   Compute must be called before the first call to ``GetCovarianceBlock``
-   and the pair ``<parameter_block1, parameter_block2>`` OR the pair
-   ``<parameter_block2, parameter_block1>`` must have been present in the
-   vector covariance_blocks when ``Compute`` was called. Otherwise
-   ``GetCovarianceBlock`` will return false.
-
-   ``covariance_block`` must point to a memory location that can store
-   a ``parameter_block1_local_size x parameter_block2_local_size`` matrix. The
-   returned covariance will be a row-major matrix.
-
-Example Usage
-=============
-
-.. code-block:: c++
-
- double x[3];
- double y[2];
-
- Problem problem;
- problem.AddParameterBlock(x, 3);
- problem.AddParameterBlock(y, 2);
- <Build Problem>
- <Solve Problem>
-
- Covariance::Options options;
- Covariance covariance(options);
-
- std::vector<std::pair<const double*, const double*> > covariance_blocks;
- covariance_blocks.push_back(make_pair(x, x));
- covariance_blocks.push_back(make_pair(y, y));
- covariance_blocks.push_back(make_pair(x, y));
-
- CHECK(covariance.Compute(covariance_blocks, &problem));
-
- double covariance_xx[3 * 3];
- double covariance_yy[2 * 2];
- double covariance_xy[3 * 2];
- covariance.GetCovarianceBlock(x, x, covariance_xx)
- covariance.GetCovarianceBlock(y, y, covariance_yy)
- covariance.GetCovarianceBlock(x, y, covariance_xy)
diff --git a/third_party/ceres/docs/source/nnls_modeling.rst b/third_party/ceres/docs/source/nnls_modeling.rst
deleted file mode 100644
index be87149..0000000
--- a/third_party/ceres/docs/source/nnls_modeling.rst
+++ /dev/null
@@ -1,2726 +0,0 @@
-.. highlight:: c++
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _`chapter-nnls_modeling`:
-
-=================================
-Modeling Non-linear Least Squares
-=================================
-
-Introduction
-============
-
-Ceres solver consists of two distinct parts. A modeling API which
-provides a rich set of tools to construct an optimization problem one
-term at a time and a solver API that controls the minimization
-algorithm. This chapter is devoted to the task of modeling
-optimization problems using Ceres. :ref:`chapter-nnls_solving` discusses
-the various ways in which an optimization problem can be solved using
-Ceres.
-
-Ceres solves robustified bounds constrained non-linear least squares
-problems of the form:
-
-.. math:: :label: ceresproblem_modeling
-
-   \min_{\mathbf{x}} &\quad \frac{1}{2}\sum_{i}
-   \rho_i\left(\left\|f_i\left(x_{i_1},
-   ... ,x_{i_k}\right)\right\|^2\right)  \\
-   \text{s.t.} &\quad l_j \le x_j \le u_j
-
-In Ceres parlance, the expression
-:math:`\rho_i\left(\left\|f_i\left(x_{i_1},...,x_{i_k}\right)\right\|^2\right)`
-is known as a **residual block**, where :math:`f_i(\cdot)` is a
-:class:`CostFunction` that depends on the **parameter blocks**
-:math:`\left\{x_{i_1},... , x_{i_k}\right\}`.
-
-In most optimization problems small groups of scalars occur
-together. For example the three components of a translation vector and
-the four components of the quaternion that define the pose of a
-camera. We refer to such a group of scalars as a **parameter block**. Of
-course a parameter block can be just a single scalar too.
-
-:math:`\rho_i` is a :class:`LossFunction`. A :class:`LossFunction` is
-a scalar valued function that is used to reduce the influence of
-outliers on the solution of non-linear least squares problems.
-
-:math:`l_j` and :math:`u_j` are lower and upper bounds on the
-parameter block :math:`x_j`.
-
-As a special case, when :math:`\rho_i(x) = x`, i.e., the identity
-function, and :math:`l_j = -\infty` and :math:`u_j = \infty` we get
-the usual unconstrained `non-linear least squares problem
-<http://en.wikipedia.org/wiki/Non-linear_least_squares>`_.
-
-.. math:: :label: ceresproblemunconstrained
-
-   \frac{1}{2}\sum_{i} \left\|f_i\left(x_{i_1}, ... ,x_{i_k}\right)\right\|^2.
-
-:class:`CostFunction`
-=====================
-
-For each term in the objective function, a :class:`CostFunction` is
-responsible for computing a vector of residuals and Jacobian
-matrices. Concretely, consider a function
-:math:`f\left(x_{1},...,x_{k}\right)` that depends on parameter blocks
-:math:`\left[x_{1}, ... , x_{k}\right]`.
-
-Then, given :math:`\left[x_{1}, ... , x_{k}\right]`,
-:class:`CostFunction` is responsible for computing the vector
-:math:`f\left(x_{1},...,x_{k}\right)` and the Jacobian matrices
-
-.. math:: J_i =  D_i f(x_1, ..., x_k) \quad \forall i \in \{1, \ldots, k\}
-
-.. class:: CostFunction
-
-   .. code-block:: c++
-
-    class CostFunction {
-     public:
-      virtual bool Evaluate(double const* const* parameters,
-                            double* residuals,
-                            double** jacobians) const = 0;
-      const std::vector<int32>& parameter_block_sizes();
-      int num_residuals() const;
-
-     protected:
-      std::vector<int32>* mutable_parameter_block_sizes();
-      void set_num_residuals(int num_residuals);
-    };
-
-
-The signature of the :class:`CostFunction` (number and sizes of input
-parameter blocks and number of outputs) is stored in
-:member:`CostFunction::parameter_block_sizes_` and
-:member:`CostFunction::num_residuals_` respectively. User code
-inheriting from this class is expected to set these two members with
-the corresponding accessors. This information will be verified by the
-:class:`Problem` when added with :func:`Problem::AddResidualBlock`.
-
-.. function:: bool CostFunction::Evaluate(double const* const* parameters, double* residuals, double** jacobians) const
-
-   Compute the residual vector and the Jacobian matrices.
-
-   ``parameters`` is an array of arrays of size
-   ``CostFunction::parameter_block_sizes_.size()`` and
-   ``parameters[i]`` is an array of size ``parameter_block_sizes_[i]``
-   that contains the :math:`i^{\text{th}}` parameter block that the
-   ``CostFunction`` depends on.
-
-   ``parameters`` is never ``nullptr``.
-
-   ``residuals`` is an array of size ``num_residuals_``.
-
-   ``residuals`` is never ``nullptr``.
-
-   ``jacobians`` is an array of arrays of size
-   ``CostFunction::parameter_block_sizes_.size()``.
-
-   If ``jacobians`` is ``nullptr``, the user is only expected to compute
-   the residuals.
-
-   ``jacobians[i]`` is a row-major array of size ``num_residuals x
-   parameter_block_sizes_[i]``.
-
-   If ``jacobians[i]`` is **not** ``nullptr``, the user is required to
-   compute the Jacobian of the residual vector with respect to
-   ``parameters[i]`` and store it in this array, i.e.
-
-   ``jacobians[i][r * parameter_block_sizes_[i] + c]`` =
-   :math:`\frac{\displaystyle \partial \text{residual}[r]}{\displaystyle \partial \text{parameters}[i][c]}`
-
-   If ``jacobians[i]`` is ``nullptr``, then this computation can be
-   skipped. This is the case when the corresponding parameter block is
-   marked constant.
-
-   The return value indicates whether the computation of the residuals
-   and/or jacobians was successful or not. This can be used to
-   communicate numerical failures in Jacobian computations for
-   instance.
-
-:class:`SizedCostFunction`
-==========================
-
-.. class:: SizedCostFunction
-
-   If the size of the parameter blocks and the size of the residual
-   vector is known at compile time (this is the common case),
-   :class:`SizeCostFunction` can be used where these values can be
-   specified as template parameters and the user only needs to
-   implement :func:`CostFunction::Evaluate`.
-
-   .. code-block:: c++
-
-    template<int kNumResiduals, int... Ns>
-    class SizedCostFunction : public CostFunction {
-     public:
-      virtual bool Evaluate(double const* const* parameters,
-                            double* residuals,
-                            double** jacobians) const = 0;
-    };
-
-
-:class:`AutoDiffCostFunction`
-=============================
-
-.. class:: AutoDiffCostFunction
-
-   Defining a :class:`CostFunction` or a :class:`SizedCostFunction`
-   can be a tedious and error prone especially when computing
-   derivatives.  To this end Ceres provides `automatic differentiation
-   <http://en.wikipedia.org/wiki/Automatic_differentiation>`_.
-
-   .. code-block:: c++
-
-     template <typename CostFunctor,
-            int kNumResiduals,  // Number of residuals, or ceres::DYNAMIC.
-            int... Ns>          // Size of each parameter block
-     class AutoDiffCostFunction : public
-     SizedCostFunction<kNumResiduals, Ns> {
-      public:
-       // Instantiate CostFunctor using the supplied arguments.
-       template<class ...Args>
-       explicit AutoDiffCostFunction(Args&& ...args);
-       explicit AutoDiffCostFunction(std::unique_ptr<CostFunctor> functor);
-       explicit AutoDiffCostFunction(CostFunctor* functor, ownership = TAKE_OWNERSHIP);
-
-       // Ignore the template parameter kNumResiduals and use
-       // num_residuals instead.
-       AutoDiffCostFunction(CostFunctor* functor,
-                            int num_residuals,
-                            ownership = TAKE_OWNERSHIP);
-       AutoDiffCostFunction(std::unique_ptr<CostFunctor> functor,
-                            int num_residuals);
-     };
-
-   To get an auto differentiated cost function, you must define a
-   class with a templated ``operator()`` (a functor) that computes the
-   cost function in terms of the template parameter ``T``. The
-   autodiff framework substitutes appropriate ``Jet`` objects for
-   ``T`` in order to compute the derivative when necessary, but this
-   is hidden, and you should write the function as if ``T`` were a
-   scalar type (e.g. a double-precision floating point number).
-
-   The function must write the computed value in the last argument
-   (the only non-``const`` one) and return true to indicate success.
-
-   For example, consider a scalar error :math:`e = k - x^\top y`,
-   where both :math:`x` and :math:`y` are two-dimensional vector
-   parameters and :math:`k` is a constant. The form of this error,
-   which is the difference between a constant and an expression, is a
-   common pattern in least squares problems. For example, the value
-   :math:`x^\top y` might be the model expectation for a series of
-   measurements, where there is an instance of the cost function for
-   each measurement :math:`k`.
-
-   The actual cost added to the total problem is :math:`e^2`, or
-   :math:`(k - x^\top y)^2`; however, the squaring is implicitly done
-   by the optimization framework.
-
-   To write an auto-differentiable cost function for the above model,
-   first define the object
-
-   .. code-block:: c++
-
-    class MyScalarCostFunctor {
-      MyScalarCostFunctor(double k): k_(k) {}
-
-      template <typename T>
-      bool operator()(const T* const x , const T* const y, T* e) const {
-        e[0] = k_ - x[0] * y[0] - x[1] * y[1];
-        return true;
-      }
-
-     private:
-      double k_;
-    };
-
-
-   Note that in the declaration of ``operator()`` the input parameters
-   ``x`` and ``y`` come first, and are passed as const pointers to arrays
-   of ``T``. If there were three input parameters, then the third input
-   parameter would come after ``y``. The output is always the last
-   parameter, and is also a pointer to an array. In the example above,
-   ``e`` is a scalar, so only ``e[0]`` is set.
-
-   Then given this class definition, the auto differentiated cost
-   function for it can be constructed as follows.
-
-   .. code-block:: c++
-
-    auto* cost_function
-        = new AutoDiffCostFunction<MyScalarCostFunctor, 1, 2, 2>(1.0);
-                                                        ^  ^  ^
-                                                        |  |  |
-                            Dimension of residual ------+  |  |
-                            Dimension of x ----------------+  |
-                            Dimension of y -------------------+
-
-
-   In this example, there is usually an instance for each measurement
-   of ``k``.
-
-   In the instantiation above, the template parameters following
-   ``MyScalarCostFunction``, ``<1, 2, 2>`` describe the functor as
-   computing a 1-dimensional output from two arguments, both
-   2-dimensional.
-
-   By default :class:`AutoDiffCostFunction` will take ownership of the cost
-   functor pointer passed to it, ie. will call `delete` on the cost functor
-   when the :class:`AutoDiffCostFunction` itself is deleted. However, this may
-   be undesirable in certain cases, therefore it is also possible to specify
-   :class:`DO_NOT_TAKE_OWNERSHIP` as a second argument in the constructor,
-   while passing a pointer to a cost functor which does not need to be deleted
-   by the AutoDiffCostFunction. For example:
-
-   .. code-block:: c++
-
-    MyScalarCostFunctor functor(1.0)
-    auto* cost_function
-        = new AutoDiffCostFunction<MyScalarCostFunctor, 1, 2, 2>(
-            &functor, DO_NOT_TAKE_OWNERSHIP);
-
-   :class:`AutoDiffCostFunction` also supports cost functions with a
-   runtime-determined number of residuals. For example:
-
-   .. code-block:: c++
-
-     auto functor = std::make_unique<CostFunctorWithDynamicNumResiduals>(1.0);
-     auto* cost_function
-         = new AutoDiffCostFunction<CostFunctorWithDynamicNumResiduals,
-                                                         DYNAMIC, 2, 2>(
-             std::move(functor),                            ^     ^  ^
-             runtime_number_of_residuals); <----+           |     |  |
-                                                |           |     |  |
-                                                |           |     |  |
-               Actual number of residuals ------+           |     |  |
-               Indicate dynamic number of residuals --------+     |  |
-               Dimension of x ------------------------------------+  |
-               Dimension of y ---------------------------------------+
-
-   .. warning::
-       A common beginner's error when first using :class:`AutoDiffCostFunction`
-       is to get the sizing wrong. In particular, there is a tendency to set the
-       template parameters to (dimension of residual, number of parameters)
-       instead of passing a dimension parameter for *every parameter block*. In
-       the example above, that would be ``<MyScalarCostFunction, 1, 2>``, which
-       is missing the 2 as the last template argument.
-
-
-:class:`DynamicAutoDiffCostFunction`
-====================================
-
-.. class:: DynamicAutoDiffCostFunction
-
-   :class:`AutoDiffCostFunction` requires that the number of parameter
-   blocks and their sizes be known at compile time. In a number of
-   applications, this is not enough e.g., Bezier curve fitting, Neural
-   Network training etc.
-
-     .. code-block:: c++
-
-      template <typename CostFunctor, int Stride = 4>
-      class DynamicAutoDiffCostFunction : public CostFunction {
-      };
-
-   In such cases :class:`DynamicAutoDiffCostFunction` can be
-   used. Like :class:`AutoDiffCostFunction` the user must define a
-   templated functor, but the signature of the functor differs
-   slightly. The expected interface for the cost functors is:
-
-     .. code-block:: c++
-
-       struct MyCostFunctor {
-         template<typename T>
-         bool operator()(T const* const* parameters, T* residuals) const {
-         }
-       }
-
-   Since the sizing of the parameters is done at runtime, you must
-   also specify the sizes after creating the dynamic autodiff cost
-   function. For example:
-
-     .. code-block:: c++
-
-       auto* cost_function = new DynamicAutoDiffCostFunction<MyCostFunctor, 4>();
-       cost_function->AddParameterBlock(5);
-       cost_function->AddParameterBlock(10);
-       cost_function->SetNumResiduals(21);
-
-   Under the hood, the implementation evaluates the cost function
-   multiple times, computing a small set of the derivatives (four by
-   default, controlled by the ``Stride`` template parameter) with each
-   pass. There is a performance tradeoff with the size of the passes;
-   Smaller sizes are more cache efficient but result in larger number
-   of passes, and larger stride lengths can destroy cache-locality
-   while reducing the number of passes over the cost function. The
-   optimal value depends on the number and sizes of the various
-   parameter blocks.
-
-   As a rule of thumb, try using :class:`AutoDiffCostFunction` before
-   you use :class:`DynamicAutoDiffCostFunction`.
-
-:class:`NumericDiffCostFunction`
-================================
-
-.. class:: NumericDiffCostFunction
-
-  In some cases, its not possible to define a templated cost functor,
-  for example when the evaluation of the residual involves a call to a
-  library function that you do not have control over.  In such a
-  situation, `numerical differentiation
-  <http://en.wikipedia.org/wiki/Numerical_differentiation>`_ can be
-  used.
-
-  .. NOTE ::
-
-    TODO(sameeragarwal): Add documentation for the constructor and for
-    NumericDiffOptions. Update DynamicNumericDiffOptions in a similar
-    manner.
-
-  .. code-block:: c++
-
-      template <typename CostFunctor,
-                NumericDiffMethodType method = CENTRAL,
-                int kNumResiduals,  // Number of residuals, or ceres::DYNAMIC.
-                int... Ns>          // Size of each parameter block.
-      class NumericDiffCostFunction : public
-      SizedCostFunction<kNumResiduals, Ns> {
-      };
-
-  To get a numerically differentiated :class:`CostFunction`, you must
-  define a class with a ``operator()`` (a functor) that computes the
-  residuals. The functor must write the computed value in the last
-  argument (the only non-``const`` one) and return ``true`` to
-  indicate success.  Please see :class:`CostFunction` for details on
-  how the return value may be used to impose simple constraints on the
-  parameter block. e.g., an object of the form
-
-  .. code-block:: c++
-
-     struct ScalarFunctor {
-      public:
-       bool operator()(const double* const x1,
-                       const double* const x2,
-                       double* residuals) const;
-     }
-
-  For example, consider a scalar error :math:`e = k - x'y`, where both
-  :math:`x` and :math:`y` are two-dimensional column vector
-  parameters, the prime sign indicates transposition, and :math:`k` is
-  a constant. The form of this error, which is the difference between
-  a constant and an expression, is a common pattern in least squares
-  problems. For example, the value :math:`x'y` might be the model
-  expectation for a series of measurements, where there is an instance
-  of the cost function for each measurement :math:`k`.
-
-  To write an numerically-differentiable class:`CostFunction` for the
-  above model, first define the object
-
-  .. code-block::  c++
-
-     class MyScalarCostFunctor {
-       MyScalarCostFunctor(double k): k_(k) {}
-
-       bool operator()(const double* const x,
-                       const double* const y,
-                       double* residuals) const {
-         residuals[0] = k_ - x[0] * y[0] + x[1] * y[1];
-         return true;
-       }
-
-      private:
-       double k_;
-     };
-
-  Note that in the declaration of ``operator()`` the input parameters
-  ``x`` and ``y`` come first, and are passed as const pointers to
-  arrays of ``double`` s. If there were three input parameters, then
-  the third input parameter would come after ``y``. The output is
-  always the last parameter, and is also a pointer to an array. In the
-  example above, the residual is a scalar, so only ``residuals[0]`` is
-  set.
-
-  Then given this class definition, the numerically differentiated
-  :class:`CostFunction` with central differences used for computing
-  the derivative can be constructed as follows.
-
-  .. code-block:: c++
-
-    auto* cost_function
-        = new NumericDiffCostFunction<MyScalarCostFunctor, CENTRAL, 1, 2, 2>(1.0)
-                                                              ^     ^  ^  ^
-                                                              |     |  |  |
-                                  Finite Differencing Scheme -+     |  |  |
-                                  Dimension of residual ------------+  |  |
-                                  Dimension of x ----------------------+  |
-                                  Dimension of y -------------------------+
-
-  In this example, there is usually an instance for each measurement
-  of `k`.
-
-  In the instantiation above, the template parameters following
-  ``MyScalarCostFunctor``, ``1, 2, 2``, describe the functor as
-  computing a 1-dimensional output from two arguments, both
-  2-dimensional.
-
-  NumericDiffCostFunction also supports cost functions with a
-  runtime-determined number of residuals. For example:
-
-   .. code-block:: c++
-
-     auto functor = std::make_unique<CostFunctorWithDynamicNumResiduals>(1.0);
-     auto* cost_function
-         = new NumericDiffCostFunction<CostFunctorWithDynamicNumResiduals,
-                                                CENTRAL, DYNAMIC, 2, 2>(
-             std::move(functor),                            ^     ^  ^
-             runtime_number_of_residuals); <----+           |     |  |
-                                                |           |     |  |
-                                                |           |     |  |
-               Actual number of residuals ------+           |     |  |
-               Indicate dynamic number of residuals --------+     |  |
-               Dimension of x ------------------------------------+  |
-               Dimension of y ---------------------------------------+
-
-
-  There are three available numeric differentiation schemes in ceres-solver:
-
-  The ``FORWARD`` difference method, which approximates :math:`f'(x)`
-  by computing :math:`\frac{f(x+h)-f(x)}{h}`, computes the cost
-  function one additional time at :math:`x+h`. It is the fastest but
-  least accurate method.
-
-  The ``CENTRAL`` difference method is more accurate at the cost of
-  twice as many function evaluations than forward difference,
-  estimating :math:`f'(x)` by computing
-  :math:`\frac{f(x+h)-f(x-h)}{2h}`.
-
-  The ``RIDDERS`` difference method[Ridders]_ is an adaptive scheme
-  that estimates derivatives by performing multiple central
-  differences at varying scales. Specifically, the algorithm starts at
-  a certain :math:`h` and as the derivative is estimated, this step
-  size decreases.  To conserve function evaluations and estimate the
-  derivative error, the method performs Richardson extrapolations
-  between the tested step sizes.  The algorithm exhibits considerably
-  higher accuracy, but does so by additional evaluations of the cost
-  function.
-
-  Consider using ``CENTRAL`` differences to begin with. Based on the
-  results, either try forward difference to improve performance or
-  Ridders' method to improve accuracy.
-
-  .. warning::
-      A common beginner's error when first using
-      :class:`NumericDiffCostFunction` is to get the sizing wrong. In
-      particular, there is a tendency to set the template parameters to
-      (dimension of residual, number of parameters) instead of passing a
-      dimension parameter for *every parameter*. In the example above, that
-      would be ``<MyScalarCostFunctor, 1, 2>``, which is missing the last ``2``
-      argument. Please be careful when setting the size parameters.
-
-
-Numeric Differentiation & Manifolds
------------------------------------
-
-   If your cost function depends on a parameter block that must lie on
-   a manifold and the functor cannot be evaluated for values of that
-   parameter block not on the manifold then you may have problems
-   numerically differentiating such functors.
-
-   This is because numeric differentiation in Ceres is performed by
-   perturbing the individual coordinates of the parameter blocks that
-   a cost functor depends on. This perturbation assumes that the
-   parameter block lives on a Euclidean Manifold rather than the
-   actual manifold associated with the parameter block. As a result
-   some of the perturbed points may not lie on the manifold anymore.
-
-   For example consider a four dimensional parameter block that is
-   interpreted as a unit Quaternion. Perturbing the coordinates of
-   this parameter block will violate the unit norm property of the
-   parameter block.
-
-   Fixing this problem requires that :class:`NumericDiffCostFunction`
-   be aware of the :class:`Manifold` associated with each
-   parameter block and only generate perturbations in the local
-   tangent space of each parameter block.
-
-   For now this is not considered to be a serious enough problem to
-   warrant changing the :class:`NumericDiffCostFunction` API. Further,
-   in most cases it is relatively straightforward to project a point
-   off the manifold back onto the manifold before using it in the
-   functor. For example in case of the Quaternion, normalizing the
-   4-vector before using it does the trick.
-
-   **Alternate Interface**
-
-   For a variety of reasons, including compatibility with legacy code,
-   :class:`NumericDiffCostFunction` can also take
-   :class:`CostFunction` objects as input. The following describes
-   how.
-
-   To get a numerically differentiated cost function, define a
-   subclass of :class:`CostFunction` such that the
-   :func:`CostFunction::Evaluate` function ignores the ``jacobians``
-   parameter. The numeric differentiation wrapper will fill in the
-   jacobian parameter if necessary by repeatedly calling the
-   :func:`CostFunction::Evaluate` with small changes to the
-   appropriate parameters, and computing the slope. For performance,
-   the numeric differentiation wrapper class is templated on the
-   concrete cost function, even though it could be implemented only in
-   terms of the :class:`CostFunction` interface.
-
-   The numerically differentiated version of a cost function for a
-   cost function can be constructed as follows:
-
-   .. code-block:: c++
-
-     auto* cost_function
-         = new NumericDiffCostFunction<MyCostFunction, CENTRAL, 1, 4, 8>(...);
-
-   where ``MyCostFunction`` has 1 residual and 2 parameter blocks with
-   sizes 4 and 8 respectively. Look at the tests for a more detailed
-   example.
-
-:class:`DynamicNumericDiffCostFunction`
-=======================================
-
-.. class:: DynamicNumericDiffCostFunction
-
-   Like :class:`AutoDiffCostFunction` :class:`NumericDiffCostFunction`
-   requires that the number of parameter blocks and their sizes be
-   known at compile time. In a number of applications, this is not enough.
-
-     .. code-block:: c++
-
-      template <typename CostFunctor, NumericDiffMethodType method = CENTRAL>
-      class DynamicNumericDiffCostFunction : public CostFunction {
-      };
-
-   In such cases when numeric differentiation is desired,
-   :class:`DynamicNumericDiffCostFunction` can be used.
-
-   Like :class:`NumericDiffCostFunction` the user must define a
-   functor, but the signature of the functor differs slightly. The
-   expected interface for the cost functors is:
-
-     .. code-block:: c++
-
-       struct MyCostFunctor {
-         bool operator()(double const* const* parameters, double* residuals) const {
-         }
-       }
-
-   Since the sizing of the parameters is done at runtime, you must
-   also specify the sizes after creating the dynamic numeric diff cost
-   function. For example:
-
-     .. code-block:: c++
-
-       auto cost_function = std::make_unique<DynamicNumericDiffCostFunction<MyCostFunctor>>();
-       cost_function->AddParameterBlock(5);
-       cost_function->AddParameterBlock(10);
-       cost_function->SetNumResiduals(21);
-
-   As a rule of thumb, try using :class:`NumericDiffCostFunction` before
-   you use :class:`DynamicNumericDiffCostFunction`.
-
-   .. warning::
-       The same caution about mixing manifolds with numeric differentiation
-       applies as is the case with :class:`NumericDiffCostFunction`.
-
-:class:`CostFunctionToFunctor`
-==============================
-
-.. class:: CostFunctionToFunctor
-
-   :class:`CostFunctionToFunctor` is an adapter class that allows
-   users to use :class:`CostFunction` objects in templated functors
-   which are to be used for automatic differentiation. This allows
-   the user to seamlessly mix analytic, numeric and automatic
-   differentiation.
-
-   For example, let us assume that
-
-   .. code-block:: c++
-
-     class IntrinsicProjection : public SizedCostFunction<2, 5, 3> {
-       public:
-         IntrinsicProjection(const double* observation);
-         virtual bool Evaluate(double const* const* parameters,
-                               double* residuals,
-                               double** jacobians) const;
-     };
-
-   is a :class:`CostFunction` that implements the projection of a
-   point in its local coordinate system onto its image plane and
-   subtracts it from the observed point projection. It can compute its
-   residual and either via analytic or numerical differentiation can
-   compute its jacobians.
-
-   Now we would like to compose the action of this
-   :class:`CostFunction` with the action of camera extrinsics, i.e.,
-   rotation and translation. Say we have a templated function
-
-   .. code-block:: c++
-
-      template<typename T>
-      void RotateAndTranslatePoint(const T* rotation,
-                                   const T* translation,
-                                   const T* point,
-                                   T* result);
-
-
-   Then we can now do the following,
-
-   .. code-block:: c++
-
-    struct CameraProjection {
-      explicit CameraProjection(double* observation)
-      : intrinsic_projection_(std::make_unique<IntrinsicProjection>(observation)) {
-      }
-
-      template <typename T>
-      bool operator()(const T* rotation,
-                      const T* translation,
-                      const T* intrinsics,
-                      const T* point,
-                      T* residual) const {
-        T transformed_point[3];
-        RotateAndTranslatePoint(rotation, translation, point, transformed_point);
-
-        // Note that we call intrinsic_projection_, just like it was
-        // any other templated functor.
-        return intrinsic_projection_(intrinsics, transformed_point, residual);
-      }
-
-     private:
-      CostFunctionToFunctor<2, 5, 3> intrinsic_projection_;
-    };
-
-   Note that :class:`CostFunctionToFunctor` takes ownership of the
-   :class:`CostFunction` that was passed in to the constructor.
-
-   In the above example, we assumed that ``IntrinsicProjection`` is a
-   ``CostFunction`` capable of evaluating its value and its
-   derivatives. Suppose, if that were not the case and
-   ``IntrinsicProjection`` was defined as follows:
-
-   .. code-block:: c++
-
-    struct IntrinsicProjection {
-      IntrinsicProjection(const double* observation) {
-        observation_[0] = observation[0];
-        observation_[1] = observation[1];
-      }
-
-      bool operator()(const double* calibration,
-                      const double* point,
-                      double* residuals) const {
-        double projection[2];
-        ThirdPartyProjectionFunction(calibration, point, projection);
-        residuals[0] = observation_[0] - projection[0];
-        residuals[1] = observation_[1] - projection[1];
-        return true;
-      }
-      double observation_[2];
-    };
-
-
-  Here ``ThirdPartyProjectionFunction`` is some third party library
-  function that we have no control over. So this function can compute
-  its value and we would like to use numeric differentiation to
-  compute its derivatives. In this case we can use a combination of
-  ``NumericDiffCostFunction`` and ``CostFunctionToFunctor`` to get the
-  job done.
-
-  .. code-block:: c++
-
-   struct CameraProjection {
-     explicit CameraProjection(double* observation)
-        : intrinsic_projection_(
-              std::make_unique<NumericDiffCostFunction<IntrinsicProjection, CENTRAL, 2, 5, 3>>()) {}
-
-     template <typename T>
-     bool operator()(const T* rotation,
-                     const T* translation,
-                     const T* intrinsics,
-                     const T* point,
-                     T* residuals) const {
-       T transformed_point[3];
-       RotateAndTranslatePoint(rotation, translation, point, transformed_point);
-       return intrinsic_projection_(intrinsics, transformed_point, residuals);
-     }
-
-    private:
-     CostFunctionToFunctor<2, 5, 3> intrinsic_projection_;
-   };
-
-
-:class:`DynamicCostFunctionToFunctor`
-=====================================
-
-.. class:: DynamicCostFunctionToFunctor
-
-   :class:`DynamicCostFunctionToFunctor` provides the same functionality as
-   :class:`CostFunctionToFunctor` for cases where the number and size of the
-   parameter vectors and residuals are not known at compile-time. The API
-   provided by :class:`DynamicCostFunctionToFunctor` matches what would be
-   expected by :class:`DynamicAutoDiffCostFunction`, i.e. it provides a
-   templated functor of this form:
-
-   .. code-block:: c++
-
-    template<typename T>
-    bool operator()(T const* const* parameters, T* residuals) const;
-
-   Similar to the example given for :class:`CostFunctionToFunctor`, let us
-   assume that
-
-   .. code-block:: c++
-
-     class IntrinsicProjection : public CostFunction {
-       public:
-         IntrinsicProjection(const double* observation);
-         virtual bool Evaluate(double const* const* parameters,
-                               double* residuals,
-                               double** jacobians) const;
-     };
-
-   is a :class:`CostFunction` that projects a point in its local coordinate
-   system onto its image plane and subtracts it from the observed point
-   projection.
-
-   Using this :class:`CostFunction` in a templated functor would then look like
-   this:
-
-   .. code-block:: c++
-
-    struct CameraProjection {
-      explicit CameraProjection(double* observation)
-          : intrinsic_projection_(std::make_unique<IntrinsicProjection>(observation)) {
-      }
-
-      template <typename T>
-      bool operator()(T const* const* parameters,
-                      T* residual) const {
-        const T* rotation = parameters[0];
-        const T* translation = parameters[1];
-        const T* intrinsics = parameters[2];
-        const T* point = parameters[3];
-
-        T transformed_point[3];
-        RotateAndTranslatePoint(rotation, translation, point, transformed_point);
-
-        const T* projection_parameters[2];
-        projection_parameters[0] = intrinsics;
-        projection_parameters[1] = transformed_point;
-        return intrinsic_projection_(projection_parameters, residual);
-      }
-
-     private:
-      DynamicCostFunctionToFunctor intrinsic_projection_;
-    };
-
-   Like :class:`CostFunctionToFunctor`, :class:`DynamicCostFunctionToFunctor`
-   takes ownership of the :class:`CostFunction` that was passed in to the
-   constructor.
-
-:class:`ConditionedCostFunction`
-================================
-
-.. class:: ConditionedCostFunction
-
-   This class allows you to apply different conditioning to the residual
-   values of a wrapped cost function. An example where this is useful is
-   where you have an existing cost function that produces N values, but you
-   want the total cost to be something other than just the sum of these
-   squared values - maybe you want to apply a different scaling to some
-   values, to change their contribution to the cost.
-
-   Usage:
-
-   .. code-block:: c++
-
-       //  my_cost_function produces N residuals
-       CostFunction* my_cost_function = ...
-       CHECK_EQ(N, my_cost_function->num_residuals());
-       std::vector<CostFunction*> conditioners;
-
-       //  Make N 1x1 cost functions (1 parameter, 1 residual)
-       CostFunction* f_1 = ...
-       conditioners.push_back(f_1);
-
-       CostFunction* f_N = ...
-       conditioners.push_back(f_N);
-       ConditionedCostFunction* ccf =
-         new ConditionedCostFunction(my_cost_function, conditioners);
-
-
-   Now ``ccf`` 's ``residual[i]`` (i=0..N-1) will be passed though the
-   :math:`i^{\text{th}}` conditioner.
-
-   .. code-block:: c++
-
-      ccf_residual[i] = f_i(my_cost_function_residual[i])
-
-   and the Jacobian will be affected appropriately.
-
-
-:class:`GradientChecker`
-========================
-
-.. class:: GradientChecker
-
-    This class compares the Jacobians returned by a cost function
-    against derivatives estimated using finite differencing. It is
-    meant as a tool for unit testing, giving you more fine-grained
-    control than the check_gradients option in the solver options.
-
-    The condition enforced is that
-
-    .. math:: \forall{i,j}: \frac{J_{ij} - J'_{ij}}{max_{ij}(J_{ij} - J'_{ij})} < r
-
-    where :math:`J_{ij}` is the jacobian as computed by the supplied
-    cost function multiplied by the `Manifold::PlusJacobian`,
-    :math:`J'_{ij}` is the jacobian as computed by finite differences,
-    multiplied by the `Manifold::PlusJacobian` as well, and :math:`r`
-    is the relative precision.
-
-   Usage:
-
-   .. code-block:: c++
-
-       // my_cost_function takes two parameter blocks. The first has a
-       // manifold associated with it.
-
-       CostFunction* my_cost_function = ...
-       Manifold* my_manifold = ...
-       NumericDiffOptions numeric_diff_options;
-
-       std::vector<Manifold*> manifolds;
-       manifolds.push_back(my_manifold);
-       manifolds.push_back(nullptr);
-
-       std::vector parameter1;
-       std::vector parameter2;
-       // Fill parameter 1 & 2 with test data...
-
-       std::vector<double*> parameter_blocks;
-       parameter_blocks.push_back(parameter1.data());
-       parameter_blocks.push_back(parameter2.data());
-
-       GradientChecker gradient_checker(my_cost_function,
-                                        manifolds,
-                                        numeric_diff_options);
-       GradientCheckResults results;
-       if (!gradient_checker.Probe(parameter_blocks.data(), 1e-9, &results) {
-         LOG(ERROR) << "An error has occurred:\n" << results.error_log;
-       }
-
-
-:class:`NormalPrior`
-====================
-
-.. class:: NormalPrior
-
-   .. code-block:: c++
-
-     class NormalPrior: public CostFunction {
-      public:
-       // Check that the number of rows in the vector b are the same as the
-       // number of columns in the matrix A, crash otherwise.
-       NormalPrior(const Matrix& A, const Vector& b);
-
-       virtual bool Evaluate(double const* const* parameters,
-                             double* residuals,
-                             double** jacobians) const;
-      };
-
-   Implements a cost function of the form
-
-   .. math::  cost(x) = ||A(x - b)||^2
-
-   where, the matrix :math:`A` and the vector :math:`b` are fixed and :math:`x`
-   is the variable. In case the user is interested in implementing a cost
-   function of the form
-
-  .. math::  cost(x) = (x - \mu)^T S^{-1} (x - \mu)
-
-  where, :math:`\mu` is a vector and :math:`S` is a covariance matrix,
-  then, :math:`A = S^{-1/2}`, i.e the matrix :math:`A` is the square
-  root of the inverse of the covariance, also known as the stiffness
-  matrix. There are however no restrictions on the shape of
-  :math:`A`. It is free to be rectangular, which would be the case if
-  the covariance matrix :math:`S` is rank deficient.
-
-
-
-.. _`section-loss_function`:
-
-:class:`LossFunction`
-=====================
-
-.. class:: LossFunction
-
-   For least squares problems where the minimization may encounter
-   input terms that contain outliers, that is, completely bogus
-   measurements, it is important to use a loss function that reduces
-   their influence.
-
-   Consider a structure from motion problem. The unknowns are 3D
-   points and camera parameters, and the measurements are image
-   coordinates describing the expected reprojected position for a
-   point in a camera. For example, we want to model the geometry of a
-   street scene with fire hydrants and cars, observed by a moving
-   camera with unknown parameters, and the only 3D points we care
-   about are the pointy tippy-tops of the fire hydrants. Our magic
-   image processing algorithm, which is responsible for producing the
-   measurements that are input to Ceres, has found and matched all
-   such tippy-tops in all image frames, except that in one of the
-   frame it mistook a car's headlight for a hydrant. If we didn't do
-   anything special the residual for the erroneous measurement will
-   result in the entire solution getting pulled away from the optimum
-   to reduce the large error that would otherwise be attributed to the
-   wrong measurement.
-
-   Using a robust loss function, the cost for large residuals is
-   reduced. In the example above, this leads to outlier terms getting
-   down-weighted so they do not overly influence the final solution.
-
-   .. code-block:: c++
-
-    class LossFunction {
-     public:
-      virtual void Evaluate(double s, double out[3]) const = 0;
-    };
-
-
-   The key method is :func:`LossFunction::Evaluate`, which given a
-   non-negative scalar ``s``, computes
-
-   .. math:: out = \begin{bmatrix}\rho(s), & \rho'(s), & \rho''(s)\end{bmatrix}
-
-   Here the convention is that the contribution of a term to the cost
-   function is given by :math:`\frac{1}{2}\rho(s)`, where :math:`s
-   =\|f_i\|^2`. Calling the method with a negative value of :math:`s`
-   is an error and the implementations are not required to handle that
-   case.
-
-   Most sane choices of :math:`\rho` satisfy:
-
-   .. math::
-
-      \rho(0) &= 0\\
-      \rho'(0) &= 1\\
-      \rho'(s) &< 1 \text{ in the outlier region}\\
-      \rho''(s) &< 0 \text{ in the outlier region}
-
-   so that they mimic the squared cost for small residuals.
-
-   **Scaling**
-
-   Given one robustifier :math:`\rho(s)` one can change the length
-   scale at which robustification takes place, by adding a scale
-   factor :math:`a > 0` which gives us :math:`\rho(s,a) = a^2 \rho(s /
-   a^2)` and the first and second derivatives as :math:`\rho'(s /
-   a^2)` and :math:`(1 / a^2) \rho''(s / a^2)` respectively.
-
-
-   The reason for the appearance of squaring is that :math:`a` is in
-   the units of the residual vector norm whereas :math:`s` is a squared
-   norm. For applications it is more convenient to specify :math:`a` than
-   its square.
-
-Instances
----------
-
-Ceres includes a number of predefined loss functions. For simplicity
-we described their unscaled versions. The figure below illustrates
-their shape graphically. More details can be found in
-``include/ceres/loss_function.h``.
-
-.. figure:: loss.png
-   :figwidth: 500px
-   :height: 400px
-   :align: center
-
-   Shape of the various common loss functions.
-
-.. class:: TrivialLoss
-
-      .. math:: \rho(s) = s
-
-.. class:: HuberLoss
-
-   .. math:: \rho(s) = \begin{cases} s & s \le 1\\ 2 \sqrt{s} - 1 & s > 1 \end{cases}
-
-.. class:: SoftLOneLoss
-
-   .. math:: \rho(s) = 2 (\sqrt{1+s} - 1)
-
-.. class:: CauchyLoss
-
-   .. math:: \rho(s) = \log(1 + s)
-
-.. class:: ArctanLoss
-
-   .. math:: \rho(s) = \arctan(s)
-
-.. class:: TolerantLoss
-
-   .. math:: \rho(s,a,b) = b \log(1 + e^{(s - a) / b}) - b \log(1 + e^{-a / b})
-
-.. class:: TukeyLoss
-
-   .. math:: \rho(s) = \begin{cases} \frac{1}{3} (1 - (1 - s)^3) & s \le 1\\ \frac{1}{3} & s > 1 \end{cases}
-
-.. class:: ComposedLoss
-
-   Given two loss functions ``f`` and ``g``, implements the loss
-   function ``h(s) = f(g(s))``.
-
-   .. code-block:: c++
-
-      class ComposedLoss : public LossFunction {
-       public:
-        explicit ComposedLoss(const LossFunction* f,
-                              Ownership ownership_f,
-                              const LossFunction* g,
-                              Ownership ownership_g);
-      };
-
-.. class:: ScaledLoss
-
-   Sometimes you want to simply scale the output value of the
-   robustifier. For example, you might want to weight different error
-   terms differently (e.g., weight pixel reprojection errors
-   differently from terrain errors).
-
-   Given a loss function :math:`\rho(s)` and a scalar :math:`a`, :class:`ScaledLoss`
-   implements the function :math:`a \rho(s)`.
-
-   Since we treat a ``nullptr`` Loss function as the Identity loss
-   function, :math:`rho` = ``nullptr``: is a valid input and will result
-   in the input being scaled by :math:`a`. This provides a simple way
-   of implementing a scaled ResidualBlock.
-
-.. class:: LossFunctionWrapper
-
-   Sometimes after the optimization problem has been constructed, we
-   wish to mutate the scale of the loss function. For example, when
-   performing estimation from data which has substantial outliers,
-   convergence can be improved by starting out with a large scale,
-   optimizing the problem and then reducing the scale. This can have
-   better convergence behavior than just using a loss function with a
-   small scale.
-
-   This templated class allows the user to implement a loss function
-   whose scale can be mutated after an optimization problem has been
-   constructed, e.g,
-
-   .. code-block:: c++
-
-     Problem problem;
-
-     // Add parameter blocks
-
-     auto* cost_function =
-         new AutoDiffCostFunction<UW_Camera_Mapper, 2, 9, 3>(feature_x, feature_y);
-
-     LossFunctionWrapper* loss_function(new HuberLoss(1.0), TAKE_OWNERSHIP);
-     problem.AddResidualBlock(cost_function, loss_function, parameters);
-
-     Solver::Options options;
-     Solver::Summary summary;
-     Solve(options, &problem, &summary);
-
-     loss_function->Reset(new HuberLoss(1.0), TAKE_OWNERSHIP);
-     Solve(options, &problem, &summary);
-
-
-Theory
-------
-
-Let us consider a problem with a single parameter block.
-
-.. math::
-
- \min_x \frac{1}{2}\rho(f^2(x))
-
-
-Then, the robustified gradient and the Gauss-Newton Hessian are
-
-.. math::
-
-        g(x) &= \rho'J^\top(x)f(x)\\
-        H(x) &= J^\top(x)\left(\rho' + 2 \rho''f(x)f^\top(x)\right)J(x)
-
-where the terms involving the second derivatives of :math:`f(x)` have
-been ignored. Note that :math:`H(x)` is indefinite if
-:math:`\rho''f(x)^\top f(x) + \frac{1}{2}\rho' < 0`. If this is not
-the case, then its possible to re-weight the residual and the Jacobian
-matrix such that the robustified Gauss-Newton step corresponds to an
-ordinary linear least squares problem.
-
-Let :math:`\alpha` be a root of
-
-.. math:: \frac{1}{2}\alpha^2 - \alpha - \frac{\rho''}{\rho'}\|f(x)\|^2 = 0.
-
-
-Then, define the rescaled residual and Jacobian as
-
-.. math::
-
-        \tilde{f}(x) &= \frac{\sqrt{\rho'}}{1 - \alpha} f(x)\\
-        \tilde{J}(x) &= \sqrt{\rho'}\left(1 - \alpha
-                        \frac{f(x)f^\top(x)}{\left\|f(x)\right\|^2} \right)J(x)
-
-
-In the case :math:`2 \rho''\left\|f(x)\right\|^2 + \rho' \lesssim 0`,
-we limit :math:`\alpha \le 1- \epsilon` for some small
-:math:`\epsilon`. For more details see [Triggs]_.
-
-With this simple rescaling, one can apply any Jacobian based non-linear
-least squares algorithm to robustified non-linear least squares
-problems.
-
-
-While the theory described above is elegant, in practice we observe
-that using the Triggs correction when :math:`\rho'' > 0` leads to poor
-performance, so we upper bound it by zero. For more details see
-`corrector.cc <https://github.com/ceres-solver/ceres-solver/blob/master/internal/ceres/corrector.cc#L51>`_
-
-
-:class:`Manifold`
-==================
-
-.. class:: Manifold
-
-In sensor fusion problems, we often have to model quantities that live
-in spaces known as `Manifolds
-<https://en.wikipedia.org/wiki/Manifold>`_, for example the
-rotation/orientation of a sensor that is represented by a `Quaternion
-<https://en.wikipedia.org/wiki/Quaternion>`_.
-
-Manifolds are spaces which locally look like Euclidean spaces. More
-precisely, at each point on the manifold there is a linear space that
-is tangent to the manifold. It has dimension equal to the intrinsic
-dimension of the manifold itself, which is less than or equal to the
-ambient space in which the manifold is embedded.
-
-For example, the tangent space to a point on a sphere in three
-dimensions is the two dimensional plane that is tangent to the sphere
-at that point. There are two reasons tangent spaces are interesting:
-
-1. They are Eucliean spaces so the usual vector space operations apply
-   there, which makes numerical operations easy.
-
-2. Movements in the tangent space translate into movements along the
-   manifold.  Movements perpendicular to the tangent space do not
-   translate into movements on the manifold.
-
-However, moving along the 2 dimensional plane tangent to the sphere
-and projecting back onto the sphere will move you away from the point
-you started from but moving along the normal at the same point and the
-projecting back onto the sphere brings you back to the point.
-
-Besides the mathematical niceness, modeling manifold valued
-quantities correctly and paying attention to their geometry has
-practical benefits too:
-
-1. It naturally constrains the quantity to the manifold throughout the
-   optimization, freeing the user from hacks like *quaternion
-   normalization*.
-
-2. It reduces the dimension of the optimization problem to its
-   *natural* size. For example, a quantity restricted to a line is a
-   one dimensional object regardless of the dimension of the ambient
-   space in which this line lives.
-
-   Working in the tangent space reduces not just the computational
-   complexity of the optimization algorithm, but also improves the
-   numerical behaviour of the algorithm.
-
-A basic operation one can perform on a manifold is the
-:math:`\boxplus` operation that computes the result of moving along
-:math:`\delta` in the tangent space at :math:`x`, and then projecting
-back onto the manifold that :math:`x` belongs to. Also known as a
-*Retraction*, :math:`\boxplus` is a generalization of vector addition
-in Euclidean spaces.
-
-The inverse of :math:`\boxplus` is :math:`\boxminus`, which given two
-points :math:`y` and :math:`x` on the manifold computes the tangent
-vector :math:`\Delta` at :math:`x` s.t. :math:`\boxplus(x, \Delta) =
-y`.
-
-Let us now consider two examples.
-
-The `Euclidean space <https://en.wikipedia.org/wiki/Euclidean_space>`_
-:math:`\mathbb{R}^n` is the simplest example of a manifold. It has
-dimension :math:`n` (and so does its tangent space) and
-:math:`\boxplus` and :math:`\boxminus` are the familiar vector sum and
-difference operations.
-
-.. math::
-   \begin{align*}
-   \boxplus(x, \Delta) &= x + \Delta = y\\
-   \boxminus(y, x) &= y - x = \Delta.
-   \end{align*}
-
-A more interesting case is the case :math:`SO(3)`, the `special
-orthogonal group <https://en.wikipedia.org/wiki/3D_rotation_group>`_
-in three dimensions - the space of :math:`3\times3` rotation
-matrices. :math:`SO(3)` is a three dimensional manifold embedded in
-:math:`\mathbb{R}^9` or :math:`\mathbb{R}^{3\times 3}`.  So points on :math:`SO(3)` are
-represented using 9 dimensional vectors or :math:`3\times 3` matrices,
-and points in its tangent spaces are represented by 3 dimensional
-vectors.
-
-For :math:`SO(3)`, :math:`\boxplus` and :math:`\boxminus` are defined
-in terms of the matrix :math:`\exp` and :math:`\log` operations as
-follows:
-
-Given a 3-vector :math:`\Delta = [\begin{matrix}p,&q,&r\end{matrix}]`, we have
-
-.. math::
-
-   \exp(\Delta) & = \left [ \begin{matrix}
-   \cos \theta + cp^2 & -sr + cpq        &  sq + cpr \\
-   sr + cpq         & \cos \theta + cq^2& -sp + cqr \\
-   -sq + cpr        & sp + cqr         & \cos \theta + cr^2
-   \end{matrix} \right ]
-
-where,
-
-.. math::
-     \begin{align}
-     \theta &= \sqrt{p^2 + q^2 + r^2},\\
-     s &= \frac{\sin \theta}{\theta},\\
-     c &= \frac{1 - \cos \theta}{\theta^2}.
-     \end{align}
-
-Given :math:`x \in SO(3)`, we have
-
-.. math::
-
-   \log(x) = 1/(2 \sin(\theta)/\theta)\left[\begin{matrix} x_{32} - x_{23},& x_{13} - x_{31},& x_{21} - x_{12}\end{matrix} \right]
-
-
-where,
-
-.. math:: \theta = \cos^{-1}((\operatorname{Trace}(x) - 1)/2)
-
-Then,
-
-.. math::
-   \begin{align*}
-   \boxplus(x, \Delta) &= x \exp(\Delta)
-   \\
-   \boxminus(y, x) &= \log(x^T y)
-   \end{align*}
-
-For :math:`\boxplus` and :math:`\boxminus` to be mathematically
-consistent, the following identities must be satisfied at all points
-:math:`x` on the manifold:
-
-1. :math:`\boxplus(x, 0) = x`. This ensures that the tangent space is
-   *centered* at :math:`x`, and the zero vector is the identity
-   element.
-2. For all :math:`y` on the manifold, :math:`\boxplus(x,
-   \boxminus(y,x)) = y`. This ensures that any :math:`y` can be
-   reached from :math:`x`.
-3. For all :math:`\Delta`, :math:`\boxminus(\boxplus(x, \Delta), x) =
-   \Delta`. This ensures that :math:`\boxplus` is an injective
-   (one-to-one) map.
-4. For all :math:`\Delta_1, \Delta_2\ |\boxminus(\boxplus(x, \Delta_1),
-   \boxplus(x, \Delta_2)) \leq |\Delta_1 - \Delta_2|`. Allows us to define
-   a metric on the manifold.
-
-Additionally we require that :math:`\boxplus` and :math:`\boxminus` be
-sufficiently smooth. In particular they need to be differentiable
-everywhere on the manifold.
-
-For more details, please see [Hertzberg]_
-
-The :class:`Manifold` interface allows the user to define a manifold
-for the purposes optimization by implementing ``Plus`` and ``Minus``
-operations and their derivatives (corresponding naturally to
-:math:`\boxplus` and :math:`\boxminus`).
-
-.. code-block:: c++
-
-  class Manifold {
-   public:
-    virtual ~Manifold();
-    virtual int AmbientSize() const = 0;
-    virtual int TangentSize() const = 0;
-    virtual bool Plus(const double* x,
-                      const double* delta,
-                      double* x_plus_delta) const = 0;
-    virtual bool PlusJacobian(const double* x, double* jacobian) const = 0;
-    virtual bool RightMultiplyByPlusJacobian(const double* x,
-                                             const int num_rows,
-                                             const double* ambient_matrix,
-                                             double* tangent_matrix) const;
-    virtual bool Minus(const double* y,
-                       const double* x,
-                       double* y_minus_x) const = 0;
-    virtual bool MinusJacobian(const double* x, double* jacobian) const = 0;
-  };
-
-
-.. function:: int Manifold::AmbientSize() const;
-
-   Dimension of the ambient space in which the manifold is embedded.
-
-.. function:: int Manifold::TangentSize() const;
-
-   Dimension of the manifold/tangent space.
-
-.. function:: bool Plus(const double* x, const double* delta, double* x_plus_delta) const;
-
-   Implements the :math:`\boxplus(x,\Delta)` operation for the manifold.
-
-   A generalization of vector addition in Euclidean space, ``Plus``
-   computes the result of moving along ``delta`` in the tangent space
-   at ``x``, and then projecting back onto the manifold that ``x``
-   belongs to.
-
-   ``x`` and ``x_plus_delta`` are :func:`Manifold::AmbientSize` vectors.
-   ``delta`` is a :func:`Manifold::TangentSize` vector.
-
-   Return value indicates if the operation was successful or not.
-
-.. function:: bool PlusJacobian(const double* x, double* jacobian) const;
-
-   Compute the derivative of :math:`\boxplus(x, \Delta)` w.r.t
-   :math:`\Delta` at :math:`\Delta = 0`, i.e. :math:`(D_2
-   \boxplus)(x, 0)`.
-
-   ``jacobian`` is a row-major :func:`Manifold::AmbientSize`
-   :math:`\times` :func:`Manifold::TangentSize` matrix.
-
-   Return value indicates whether the operation was successful or not.
-
-.. function:: bool RightMultiplyByPlusJacobian(const double* x, const int num_rows, const double* ambient_matrix, double* tangent_matrix) const;
-
-   ``tangent_matrix`` = ``ambient_matrix`` :math:`\times` plus_jacobian.
-
-
-   ``ambient_matrix`` is a row-major ``num_rows`` :math:`\times`
-   :func:`Manifold::AmbientSize` matrix.
-
-   ``tangent_matrix`` is a row-major ``num_rows`` :math:`\times`
-   :func:`Manifold::TangentSize` matrix.
-
-   Return value indicates whether the operation was successful or not.
-
-   This function is only used by the :class:`GradientProblemSolver`,
-   where the dimension of the parameter block can be large and it may
-   be more efficient to compute this product directly rather than
-   first evaluating the Jacobian into a matrix and then doing a matrix
-   vector product.
-
-   Because this is not an often used function, we provide a default
-   implementation for convenience. If performance becomes an issue
-   then the user should consider implementing a specialization.
-
-.. function:: bool Minus(const double* y, const double* x, double* y_minus_x) const;
-
-   Implements :math:`\boxminus(y,x)` operation for the manifold.
-
-   A generalization of vector subtraction in Euclidean spaces, given
-   two points ``x`` and ``y`` on the manifold, ``Minus`` computes the
-   change to ``x`` in the tangent space at ``x``, that will take it to
-   ``y``.
-
-   ``x`` and ``y`` are :func:`Manifold::AmbientSize` vectors.
-   ``y_minus_x`` is a ::func:`Manifold::TangentSize` vector.
-
-   Return value indicates if the operation was successful or not.
-
-.. function:: bool MinusJacobian(const double* x, double* jacobian) const = 0;
-
-   Compute the derivative of :math:`\boxminus(y, x)` w.r.t :math:`y`
-   at :math:`y = x`, i.e :math:`(D_1 \boxminus) (x, x)`.
-
-   ``jacobian`` is a row-major :func:`Manifold::TangentSize`
-   :math:`\times` :func:`Manifold::AmbientSize` matrix.
-
-   Return value indicates whether the operation was successful or not.
-
-Ceres Solver ships with a number of commonly used instances of
-:class:`Manifold`.
-
-For `Lie Groups <https://en.wikipedia.org/wiki/Lie_group>`_, a great
-place to find high quality implementations is the `Sophus
-<https://github.com/strasdat/Sophus>`_ library developed by Hauke
-Strasdat and his collaborators.
-
-:class:`EuclideanManifold`
---------------------------
-
-.. class:: EuclideanManifold
-
-:class:`EuclideanManifold` as the name implies represents a Euclidean
-space, where the :math:`\boxplus` and :math:`\boxminus` operations are
-the usual vector addition and subtraction.
-
-.. math::
-
-   \begin{align*}
-     \boxplus(x, \Delta) &= x + \Delta\\
-      \boxminus(y,x) &= y - x
-   \end{align*}
-
-By default parameter blocks are assumed to be Euclidean, so there is
-no need to use this manifold on its own. It is provided for the
-purpose of testing and for use in combination with other manifolds
-using :class:`ProductManifold`.
-
-The class works with dynamic and static ambient space dimensions. If
-the ambient space dimensions is known at compile time use
-
-.. code-block:: c++
-
-   EuclideanManifold<3> manifold;
-
-If the ambient space dimensions is not known at compile time the
-template parameter needs to be set to `ceres::DYNAMIC` and the actual
-dimension needs to be provided as a constructor argument:
-
-.. code-block:: c++
-
-   EuclideanManifold<ceres::DYNAMIC> manifold(ambient_dim);
-
-:class:`SubsetManifold`
------------------------
-
-.. class:: SubsetManifold
-
-Suppose :math:`x` is a two dimensional vector, and the user wishes to
-hold the first coordinate constant. Then, :math:`\Delta` is a scalar
-and :math:`\boxplus` is defined as
-
-.. math::
-   \boxplus(x, \Delta) = x + \left[ \begin{array}{c} 0 \\ 1 \end{array} \right] \Delta
-
-and given two, two-dimensional vectors :math:`x` and :math:`y` with
-the same first coordinate, :math:`\boxminus` is defined as:
-
-.. math::
-   \boxminus(y, x) = y[1] - x[1]
-
-:class:`SubsetManifold` generalizes this construction to hold
-any part of a parameter block constant by specifying the set of
-coordinates that are held constant.
-
-.. NOTE::
-
-   It is legal to hold *all* coordinates of a parameter block to
-   constant using a :class:`SubsetManifold`. It is the same as calling
-   :func:`Problem::SetParameterBlockConstant` on that parameter block.
-
-
-:class:`ProductManifold`
-------------------------
-
-.. class:: ProductManifold
-
-In cases, where a parameter block is the Cartesian product of a number
-of manifolds and you have the manifold of the individual
-parameter blocks available, :class:`ProductManifold` can be used to
-construct a :class:`Manifold` of the Cartesian product.
-
-For the case of the rigid transformation, where say you have a
-parameter block of size 7, where the first four entries represent the
-rotation as a quaternion, and the next three the translation, a
-manifold can be constructed as:
-
-.. code-block:: c++
-
-   ProductManifold<QuaternionManifold, EuclideanManifold<3>> se3;
-
-Manifolds can be copied and moved to :class:`ProductManifold`:
-
-.. code-block:: c++
-
-   SubsetManifold manifold1(5, {2});
-   SubsetManifold manifold2(3, {0, 1});
-   ProductManifold<SubsetManifold, SubsetManifold> manifold(manifold1,
-                                                            manifold2);
-
-In advanced use cases, manifolds can be dynamically allocated and passed as (smart) pointers:
-
-.. code-block:: c++
-
-   ProductManifold<std::unique_ptr<QuaternionManifold>, EuclideanManifold<3>> se3
-        {std::make_unique<QuaternionManifold>(), EuclideanManifold<3>{}};
-
-The template parameters can also be left out as they are deduced automatically
-making the initialization much simpler:
-
-.. code-block:: c++
-
-   ProductManifold se3{QuaternionManifold{}, EuclideanManifold<3>{}};
-
-
-:class:`QuaternionManifold`
----------------------------
-
-.. class:: QuaternionManifold
-
-.. NOTE::
-
-   If you are using ``Eigen`` quaternions, then you should use
-   :class:`EigenQuaternionManifold` instead because ``Eigen`` uses a
-   different memory layout for its Quaternions.
-
-Manifold for a Hamilton `Quaternion
-<https://en.wikipedia.org/wiki/Quaternion>`_. Quaternions are a three
-dimensional manifold represented as unit norm 4-vectors, i.e.
-
-.. math:: q = \left [\begin{matrix}q_0,& q_1,& q_2,& q_3\end{matrix}\right], \quad \|q\| = 1
-
-is the ambient space representation. Here :math:`q_0` is the scalar
-part. :math:`q_1` is the coefficient of :math:`i`, :math:`q_2` is the
-coefficient of :math:`j`, and :math:`q_3` is the coefficient of
-:math:`k`. Where:
-
-.. math::
-
-   \begin{align*}
-   i\times j &= k,\\
-   j\times k &= i,\\
-   k\times i &= j,\\
-   i\times i &= -1,\\
-   j\times j &= -1,\\
-   k\times k &= -1.
-   \end{align*}
-
-The tangent space is three dimensional and the :math:`\boxplus` and
-:math:`\boxminus` operators are defined in term of :math:`\exp` and
-:math:`\log` operations.
-
-.. math::
-   \begin{align*}
-   \boxplus(x, \Delta) &= \exp\left(\Delta\right) \otimes  x \\
-   \boxminus(y,x) &= \log\left(y \otimes x^{-1}\right)
-   \end{align*}
-
-Where :math:`\otimes` is the `Quaternion product
-<https://en.wikipedia.org/wiki/Quaternion#Hamilton_product>`_ and
-since :math:`x` is a unit quaternion, :math:`x^{-1} = [\begin{matrix}
-q_0,& -q_1,& -q_2,& -q_3\end{matrix}]`. Given a vector :math:`\Delta
-\in \mathbb{R}^3`,
-
-.. math::
-   \exp(\Delta) = \left[ \begin{matrix}
-                         \cos\left(\|\Delta\|\right)\\
-			 \frac{\displaystyle \sin\left(|\Delta\|\right)}{\displaystyle \|\Delta\|} \Delta
-    	                 \end{matrix} \right]
-
-and given a unit quaternion :math:`q = \left [\begin{matrix}q_0,& q_1,& q_2,& q_3\end{matrix}\right]`
-
-.. math::
-
-   \log(q) =  \frac{\operatorname{atan2}\left(\sqrt{1-q_0^2},q_0\right)}{\sqrt{1-q_0^2}} \left [\begin{matrix}q_1,& q_2,& q_3\end{matrix}\right]
-
-
-:class:`EigenQuaternionManifold`
---------------------------------
-
-.. class:: EigenQuaternionManifold
-
-Implements the quaternion manifold for `Eigen's
-<http://eigen.tuxfamily.org/index.php?title=Main_Page>`_
-representation of the Hamilton quaternion. Geometrically it is exactly
-the same as the :class:`QuaternionManifold` defined above. However,
-Eigen uses a different internal memory layout for the elements of the
-quaternion than what is commonly used. It stores the quaternion in
-memory as :math:`[q_1, q_2, q_3, q_0]` or :math:`[x, y, z, w]` where
-the real (scalar) part is last.
-
-Since Ceres operates on parameter blocks which are raw double pointers
-this difference is important and requires a different manifold.
-
-:class:`SphereManifold`
------------------------
-
-.. class:: SphereManifold
-
-This provides a manifold on a sphere meaning that the norm of the
-vector stays the same. Such cases often arises in Structure for Motion
-problems. One example where they are used is in representing points
-whose triangulation is ill-conditioned. Here it is advantageous to use
-an over-parameterization since homogeneous vectors can represent
-points at infinity.
-
-The ambient space dimension is required to be greater than 1.
-
-The class works with dynamic and static ambient space dimensions. If
-the ambient space dimensions is known at compile time use
-
-.. code-block:: c++
-
-   SphereManifold<3> manifold;
-
-If the ambient space dimensions is not known at compile time the
-template parameter needs to be set to `ceres::DYNAMIC` and the actual
-dimension needs to be provided as a constructor argument:
-
-.. code-block:: c++
-
-   SphereManifold<ceres::DYNAMIC> manifold(ambient_dim);
-
-For more details, please see Section B.2 (p.25) in [Hertzberg]_
-
-
-:class:`LineManifold`
----------------------
-
-.. class:: LineManifold
-
-This class provides a manifold for lines, where the line is defined
-using an origin point and a direction vector. So the ambient size
-needs to be two times the dimension of the space in which the line
-lives.  The first half of the parameter block is interpreted as the
-origin point and the second half as the direction. This manifold is a
-special case of the `Affine Grassmannian manifold
-<https://en.wikipedia.org/wiki/Affine_Grassmannian_(manifold))>`_ for
-the case :math:`\operatorname{Graff}_1(R^n)`.
-
-Note that this is a manifold for a line, rather than a point
-constrained to lie on a line. It is useful when one wants to optimize
-over the space of lines. For example, given :math:`n` distinct points
-in 3D (measurements) we want to find the line that minimizes the sum
-of squared distances to all the points.
-
-:class:`AutoDiffManifold`
-=========================
-
-.. class:: AutoDiffManifold
-
-Create a :class:`Manifold` with Jacobians computed via automatic
-differentiation.
-
-To get an auto differentiated manifold, you must define a Functor with
-templated ``Plus`` and ``Minus`` functions that compute:
-
-.. code-block:: c++
-
-  x_plus_delta = Plus(x, delta);
-  y_minus_x    = Minus(y, x);
-
-Where, ``x``, ``y`` and ``x_plus_delta`` are vectors on the manifold in
-the ambient space (so they are ``kAmbientSize`` vectors) and
-``delta``, ``y_minus_x`` are vectors in the tangent space (so they are
-``kTangentSize`` vectors).
-
-The Functor should have the signature:
-
-.. code-block:: c++
-
-   struct Functor {
-    template <typename T>
-    bool Plus(const T* x, const T* delta, T* x_plus_delta) const;
-
-    template <typename T>
-    bool Minus(const T* y, const T* x, T* y_minus_x) const;
-   };
-
-
-Observe that  the ``Plus`` and  ``Minus`` operations are  templated on
-the parameter  ``T``.  The autodiff framework  substitutes appropriate
-``Jet``  objects for  ``T`` in  order to  compute the  derivative when
-necessary.  This  is  the  same  mechanism that  is  used  to  compute
-derivatives when using :class:`AutoDiffCostFunction`.
-
-``Plus`` and ``Minus`` should return true if the computation is
-successful and false otherwise, in which case the result will not be
-used.
-
-Given this Functor, the corresponding :class:`Manifold` can be constructed as:
-
-.. code-block:: c++
-
-   AutoDiffManifold<Functor, kAmbientSize, kTangentSize> manifold;
-
-.. NOTE::
-
-   The following is only used for illustration purposes. Ceres Solver
-   ships with an optimized, production grade :class:`QuaternionManifold`
-   implementation.
-
-As a concrete example consider the case of `Quaternions
-<https://en.wikipedia.org/wiki/Quaternion>`_. Quaternions form a three
-dimensional manifold embedded in :math:`\mathbb{R}^4`, i.e. they have
-an ambient dimension of 4 and their tangent space has dimension 3. The
-following Functor defines the ``Plus`` and ``Minus`` operations on the
-Quaternion manifold. It assumes that the quaternions are laid out as
-``[w,x,y,z]`` in memory, i.e. the real or scalar part is the first
-coordinate.
-
-.. code-block:: c++
-
-   struct QuaternionFunctor {
-     template <typename T>
-     bool Plus(const T* x, const T* delta, T* x_plus_delta) const {
-       const T squared_norm_delta =
-           delta[0] * delta[0] + delta[1] * delta[1] + delta[2] * delta[2];
-
-       T q_delta[4];
-       if (squared_norm_delta > T(0.0)) {
-         T norm_delta = sqrt(squared_norm_delta);
-         const T sin_delta_by_delta = sin(norm_delta) / norm_delta;
-         q_delta[0] = cos(norm_delta);
-         q_delta[1] = sin_delta_by_delta * delta[0];
-         q_delta[2] = sin_delta_by_delta * delta[1];
-         q_delta[3] = sin_delta_by_delta * delta[2];
-       } else {
-         // We do not just use q_delta = [1,0,0,0] here because that is a
-         // constant and when used for automatic differentiation will
-         // lead to a zero derivative. Instead we take a first order
-         // approximation and evaluate it at zero.
-         q_delta[0] = T(1.0);
-         q_delta[1] = delta[0];
-         q_delta[2] = delta[1];
-         q_delta[3] = delta[2];
-       }
-
-       QuaternionProduct(q_delta, x, x_plus_delta);
-       return true;
-     }
-
-     template <typename T>
-     bool Minus(const T* y, const T* x, T* y_minus_x) const {
-       T minus_x[4] = {x[0], -x[1], -x[2], -x[3]};
-       T ambient_y_minus_x[4];
-       QuaternionProduct(y, minus_x, ambient_y_minus_x);
-       T u_norm = sqrt(ambient_y_minus_x[1] * ambient_y_minus_x[1] +
-		       ambient_y_minus_x[2] * ambient_y_minus_x[2] +
-		       ambient_y_minus_x[3] * ambient_y_minus_x[3]);
-       if (u_norm > 0.0) {
-	 T theta = atan2(u_norm, ambient_y_minus_x[0]);
-	 y_minus_x[0] = theta * ambient_y_minus_x[1] / u_norm;
-	 y_minus_x[1] = theta * ambient_y_minus_x[2] / u_norm;
-	 y_minus_x[2] = theta * ambient_y_minus_x[3] / u_norm;
-       } else {
-	 We do not use [0,0,0] here because even though the value part is
-	 a constant, the derivative part is not.
-	 y_minus_x[0] = ambient_y_minus_x[1];
-	 y_minus_x[1] = ambient_y_minus_x[2];
-	 y_minus_x[2] = ambient_y_minus_x[3];
-       }
-       return true;
-     }
-   };
-
-
-Then given this struct, the auto differentiated Quaternion Manifold can now
-be constructed as
-
-.. code-block:: c++
-
-   Manifold* manifold = new AutoDiffManifold<QuaternionFunctor, 4, 3>;
-
-:class:`Problem`
-================
-
-.. class:: Problem
-
-   :class:`Problem` holds the robustified bounds constrained
-   non-linear least squares problem :eq:`ceresproblem_modeling`. To
-   create a least squares problem, use the
-   :func:`Problem::AddResidalBlock` and
-   :func:`Problem::AddParameterBlock` methods.
-
-   For example a problem containing 3 parameter blocks of sizes 3, 4
-   and 5 respectively and two residual blocks of size 2 and 6:
-
-   .. code-block:: c++
-
-     double x1[] = { 1.0, 2.0, 3.0 };
-     double x2[] = { 1.0, 2.0, 3.0, 5.0 };
-     double x3[] = { 1.0, 2.0, 3.0, 6.0, 7.0 };
-
-     Problem problem;
-     problem.AddResidualBlock(new MyUnaryCostFunction(...), x1);
-     problem.AddResidualBlock(new MyBinaryCostFunction(...), x2, x3);
-
-   :func:`Problem::AddResidualBlock` as the name implies, adds a
-   residual block to the problem. It adds a :class:`CostFunction`, an
-   optional :class:`LossFunction` and connects the
-   :class:`CostFunction` to a set of parameter block.
-
-   The cost function carries with it information about the sizes of
-   the parameter blocks it expects. The function checks that these
-   match the sizes of the parameter blocks listed in
-   ``parameter_blocks``. The program aborts if a mismatch is
-   detected. ``loss_function`` can be ``nullptr``, in which case the cost
-   of the term is just the squared norm of the residuals.
-
-   The user has the option of explicitly adding the parameter blocks
-   using :func:`Problem::AddParameterBlock`. This causes additional
-   correctness checking; however, :func:`Problem::AddResidualBlock`
-   implicitly adds the parameter blocks if they are not present, so
-   calling :func:`Problem::AddParameterBlock` explicitly is not
-   required.
-
-   :func:`Problem::AddParameterBlock` explicitly adds a parameter
-   block to the :class:`Problem`. Optionally it allows the user to
-   associate a :class:`Manifold` object with the parameter block
-   too. Repeated calls with the same arguments are ignored. Repeated
-   calls with the same double pointer but a different size results in
-   undefined behavior.
-
-   You can set any parameter block to be constant using
-   :func:`Problem::SetParameterBlockConstant` and undo this using
-   :func:`SetParameterBlockVariable`.
-
-   In fact you can set any number of parameter blocks to be constant,
-   and Ceres is smart enough to figure out what part of the problem
-   you have constructed depends on the parameter blocks that are free
-   to change and only spends time solving it. So for example if you
-   constructed a problem with a million parameter blocks and 2 million
-   residual blocks, but then set all but one parameter blocks to be
-   constant and say only 10 residual blocks depend on this one
-   non-constant parameter block. Then the computational effort Ceres
-   spends in solving this problem will be the same if you had defined
-   a problem with one parameter block and 10 residual blocks.
-
-   **Ownership**
-
-   :class:`Problem` by default takes ownership of the
-   ``cost_function``, ``loss_function`` and ``manifold`` pointers. These
-   objects remain live for the life of the :class:`Problem`. If the user wishes
-   to keep control over the destruction of these objects, then they can do this
-   by setting the corresponding enums in the :class:`Problem::Options` struct.
-
-   Note that even though the Problem takes ownership of objects,
-   ``cost_function`` and ``loss_function``, it does not preclude the
-   user from re-using them in another residual block. Similarly the
-   same ``manifold`` object can be used with multiple parameter blocks. The
-   destructor takes care to call delete on each owned object exactly once.
-
-.. class:: Problem::Options
-
-   Options struct that is used to control :class:`Problem`.
-
-.. member:: Ownership Problem::Options::cost_function_ownership
-
-   Default: ``TAKE_OWNERSHIP``
-
-   This option controls whether the Problem object owns the cost
-   functions.
-
-   If set to ``TAKE_OWNERSHIP``, then the problem object will delete the
-   cost functions on destruction. The destructor is careful to delete
-   the pointers only once, since sharing cost functions is allowed.
-
-.. member:: Ownership Problem::Options::loss_function_ownership
-
-   Default: ``TAKE_OWNERSHIP``
-
-   This option controls whether the Problem object owns the loss
-   functions.
-
-   If set to ``TAKE_OWNERSHIP``, then the problem object will delete the
-   loss functions on destruction. The destructor is careful to delete
-   the pointers only once, since sharing loss functions is allowed.
-
-.. member:: Ownership Problem::Options::manifold_ownership
-
-   Default: ``TAKE_OWNERSHIP``
-
-   This option controls whether the Problem object owns the manifolds.
-
-   If set to ``TAKE_OWNERSHIP``, then the problem object will delete the
-   manifolds on destruction. The destructor is careful to delete the
-   pointers only once, since sharing manifolds is allowed.
-
-.. member:: bool Problem::Options::enable_fast_removal
-
-    Default: ``false``
-
-    If true, trades memory for faster
-    :func:`Problem::RemoveResidualBlock` and
-    :func:`Problem::RemoveParameterBlock` operations.
-
-    By default, :func:`Problem::RemoveParameterBlock` and
-    :func:`Problem::RemoveResidualBlock` take time proportional to
-    the size of the entire problem.  If you only ever remove
-    parameters or residuals from the problem occasionally, this might
-    be acceptable.  However, if you have memory to spare, enable this
-    option to make :func:`Problem::RemoveParameterBlock` take time
-    proportional to the number of residual blocks that depend on it,
-    and :func:`Problem::RemoveResidualBlock` take (on average)
-    constant time.
-
-    The increase in memory usage is twofold: an additional hash set
-    per parameter block containing all the residuals that depend on
-    the parameter block; and a hash set in the problem containing all
-    residuals.
-
-.. member:: bool Problem::Options::disable_all_safety_checks
-
-    Default: `false`
-
-    By default, Ceres performs a variety of safety checks when
-    constructing the problem. There is a small but measurable
-    performance penalty to these checks, typically around 5% of
-    construction time. If you are sure your problem construction is
-    correct, and 5% of the problem construction time is truly an
-    overhead you want to avoid, then you can set
-    disable_all_safety_checks to true.
-
-    .. warning::
-        Do not set this to true, unless you are absolutely sure of what you are
-        doing.
-
-.. member:: Context* Problem::Options::context
-
-    Default: ``nullptr``
-
-    A Ceres global context to use for solving this problem. This may
-    help to reduce computation time as Ceres can reuse expensive
-    objects to create.  The context object can be `nullptr`, in which
-    case Ceres may create one.
-
-    Ceres does NOT take ownership of the pointer.
-
-.. member:: EvaluationCallback* Problem::Options::evaluation_callback
-
-    Default: ``nullptr``
-
-    Using this callback interface, Ceres will notify you when it is
-    about to evaluate the residuals or Jacobians.
-
-    If an ``evaluation_callback`` is present, Ceres will update the
-    user's parameter blocks to the values that will be used when
-    calling :func:`CostFunction::Evaluate` before calling
-    :func:`EvaluationCallback::PrepareForEvaluation`. One can then use
-    this callback to share (or cache) computation between cost
-    functions by doing the shared computation in
-    :func:`EvaluationCallback::PrepareForEvaluation` before Ceres
-    calls :func:`CostFunction::Evaluate`.
-
-    Problem does NOT take ownership of the callback.
-
-    .. NOTE::
-
-       Evaluation callbacks are incompatible with inner iterations. So
-       calling Solve with
-       :member:`Solver::Options::use_inner_iterations` set to ``true``
-       on a :class:`Problem` with a non-null evaluation callback is an
-       error.
-
-.. function:: ResidualBlockId Problem::AddResidualBlock(CostFunction* cost_function, LossFunction* loss_function, const std::vector<double*> parameter_blocks)
-
-.. function:: template <typename Ts...> ResidualBlockId Problem::AddResidualBlock(CostFunction* cost_function, LossFunction* loss_function, double* x0, Ts... xs)
-
-   Add a residual block to the overall cost function. The cost
-   function carries with it information about the sizes of the
-   parameter blocks it expects. The function checks that these match
-   the sizes of the parameter blocks listed in parameter_blocks. The
-   program aborts if a mismatch is detected. loss_function can be
-   ``nullptr``, in which case the cost of the term is just the squared
-   norm of the residuals.
-
-   The parameter blocks may be passed together as a
-   ``vector<double*>``, or ``double*`` pointers.
-
-   The user has the option of explicitly adding the parameter blocks
-   using AddParameterBlock. This causes additional correctness
-   checking; however, AddResidualBlock implicitly adds the parameter
-   blocks if they are not present, so calling AddParameterBlock
-   explicitly is not required.
-
-   The Problem object by default takes ownership of the
-   cost_function and loss_function pointers. These objects remain
-   live for the life of the Problem object. If the user wishes to
-   keep control over the destruction of these objects, then they can
-   do this by setting the corresponding enums in the Options struct.
-
-   .. note::
-       Even though the Problem takes ownership of ``cost_function``
-       and ``loss_function``, it does not preclude the user from re-using
-       them in another residual block. The destructor takes care to call
-       delete on each cost_function or loss_function pointer only once,
-       regardless of how many residual blocks refer to them.
-
-   Example usage:
-
-   .. code-block:: c++
-
-      double x1[] = {1.0, 2.0, 3.0};
-      double x2[] = {1.0, 2.0, 5.0, 6.0};
-      double x3[] = {3.0, 6.0, 2.0, 5.0, 1.0};
-      std::vector<double*> v1;
-      v1.push_back(x1);
-      std::vector<double*> v2;
-      v2.push_back(x2);
-      v2.push_back(x1);
-
-      Problem problem;
-
-      problem.AddResidualBlock(new MyUnaryCostFunction(...), nullptr, x1);
-      problem.AddResidualBlock(new MyBinaryCostFunction(...), nullptr, x2, x1);
-      problem.AddResidualBlock(new MyUnaryCostFunction(...), nullptr, v1);
-      problem.AddResidualBlock(new MyBinaryCostFunction(...), nullptr, v2);
-
-.. function:: void Problem::AddParameterBlock(double* values, int size, Manifold* manifold)
-
-   Add a parameter block with appropriate size and Manifold to the
-   problem. It is okay for ``manifold`` to be ``nullptr``.
-
-   Repeated calls with the same arguments are ignored. Repeated calls
-   with the same double pointer but a different size results in a crash
-   (unless :member:`Solver::Options::disable_all_safety_checks` is set to true).
-
-   Repeated calls with the same double pointer and size but different
-   :class:`Manifold` is equivalent to calling `SetManifold(manifold)`,
-   i.e., any previously associated :class:`Manifold` object will be replaced
-   with the `manifold`.
-
-.. function:: void Problem::AddParameterBlock(double* values, int size)
-
-   Add a parameter block with appropriate size and parameterization to
-   the problem. Repeated calls with the same arguments are
-   ignored. Repeated calls with the same double pointer but a
-   different size results in undefined behavior.
-
-.. function:: void Problem::RemoveResidualBlock(ResidualBlockId residual_block)
-
-   Remove a residual block from the problem.
-
-   Since residual blocks are allowed to share cost function and loss
-   function objects, Ceres Solver uses a reference counting
-   mechanism. So when a residual block is deleted, the reference count
-   for the corresponding cost function and loss function objects are
-   decreased and when this count reaches zero, they are deleted.
-
-   If :member:`Problem::Options::enable_fast_removal` is ``true``, then the removal
-   is fast (almost constant time). Otherwise it is linear, requiring a
-   scan of the entire problem.
-
-   Removing a residual block has no effect on the parameter blocks
-   that the problem depends on.
-
-   .. warning::
-       Removing a residual or parameter block will destroy the implicit
-       ordering, rendering the jacobian or residuals returned from the solver
-       uninterpretable. If you depend on the evaluated jacobian, do not use
-       remove! This may change in a future release. Hold the indicated parameter
-       block constant during optimization.
-
-.. function:: void Problem::RemoveParameterBlock(const double* values)
-
-   Remove a parameter block from the problem. Any residual blocks that
-   depend on the parameter are also removed, as described above in
-   :func:`RemoveResidualBlock()`.
-
-   The manifold of the parameter block, if it exists, will persist until the
-   deletion of the problem.
-
-   If :member:`Problem::Options::enable_fast_removal` is ``true``, then the removal
-   is fast (almost constant time). Otherwise, removing a parameter
-   block will scan the entire Problem.
-
-   .. warning::
-       Removing a residual or parameter block will destroy the implicit
-       ordering, rendering the jacobian or residuals returned from the solver
-       uninterpretable. If you depend on the evaluated jacobian, do not use
-       remove! This may change in a future release.
-
-.. function:: void Problem::SetParameterBlockConstant(const double* values)
-
-   Hold the indicated parameter block constant during optimization.
-
-.. function:: void Problem::SetParameterBlockVariable(double* values)
-
-   Allow the indicated parameter to vary during optimization.
-
-.. function:: bool Problem::IsParameterBlockConstant(const double* values) const
-
-   Returns ``true`` if a parameter block is set constant, and false
-   otherwise. A parameter block may be set constant in two ways:
-   either by calling ``SetParameterBlockConstant`` or by associating a
-   :class:`Manifold` with a zero dimensional tangent space with it.
-
-.. function:: void SetManifold(double* values, Manifold* manifold);
-
-   Set the :class:`Manifold` for the parameter block. Calling
-   :func:`Problem::SetManifold` with ``nullptr`` will clear any
-   previously set :class:`Manifold` for the parameter block.
-
-   Repeated calls will result in any previously associated
-   :class:`Manifold` object to be replaced with ``manifold``.
-
-   ``manifold`` is owned by :class:`Problem` by default (See
-   :class:`Problem::Options` to override this behaviour).
-
-   It is acceptable to set the same :class:`Manifold` for multiple
-   parameter blocks.
-
-.. function:: const Manifold* GetManifold(const double* values) const;
-
-   Get the :class:`Manifold` object associated with this parameter block.
-
-   If there is no :class:`Manifold` object associated with the parameter block,
-   then ``nullptr`` is returned.
-
-.. function:: bool HasManifold(const double* values) const;
-
-   Returns ``true`` if a :class:`Manifold` is associated with this parameter
-   block, ``false`` otherwise.
-
-.. function:: void Problem::SetParameterLowerBound(double* values, int index, double lower_bound)
-
-   Set the lower bound for the parameter at position `index` in the
-   parameter block corresponding to `values`. By default the lower
-   bound is ``-std::numeric_limits<double>::max()``, which is treated
-   by the solver as the same as :math:`-\infty`.
-
-.. function:: void Problem::SetParameterUpperBound(double* values, int index, double upper_bound)
-
-   Set the upper bound for the parameter at position `index` in the
-   parameter block corresponding to `values`. By default the value is
-   ``std::numeric_limits<double>::max()``, which is treated by the
-   solver as the same as :math:`\infty`.
-
-.. function:: double Problem::GetParameterLowerBound(const double* values, int index)
-
-   Get the lower bound for the parameter with position `index`. If the
-   parameter is not bounded by the user, then its lower bound is
-   ``-std::numeric_limits<double>::max()``.
-
-.. function:: double Problem::GetParameterUpperBound(const double* values, int index)
-
-   Get the upper bound for the parameter with position `index`. If the
-   parameter is not bounded by the user, then its upper bound is
-   ``std::numeric_limits<double>::max()``.
-
-.. function:: int Problem::NumParameterBlocks() const
-
-   Number of parameter blocks in the problem. Always equals
-   parameter_blocks().size() and parameter_block_sizes().size().
-
-.. function:: int Problem::NumParameters() const
-
-   The size of the parameter vector obtained by summing over the sizes
-   of all the parameter blocks.
-
-.. function:: int Problem::NumResidualBlocks() const
-
-   Number of residual blocks in the problem. Always equals
-   residual_blocks().size().
-
-.. function:: int Problem::NumResiduals() const
-
-   The size of the residual vector obtained by summing over the sizes
-   of all of the residual blocks.
-
-.. function:: int Problem::ParameterBlockSize(const double* values) const
-
-   The size of the parameter block.
-
-.. function:: int Problem::ParameterBlockTangentSize(const double* values) const
-
-   The dimension of the tangent space of the :class:`Manifold` for the
-   parameter block. If there is no :class:`Manifold` associated with this
-   parameter block, then ``ParameterBlockTangentSize = ParameterBlockSize``.
-
-.. function:: bool Problem::HasParameterBlock(const double* values) const
-
-   Is the given parameter block present in the problem or not?
-
-.. function:: void Problem::GetParameterBlocks(std::vector<double*>* parameter_blocks) const
-
-   Fills the passed ``parameter_blocks`` vector with pointers to the
-   parameter blocks currently in the problem. After this call,
-   ``parameter_block.size() == NumParameterBlocks``.
-
-.. function:: void Problem::GetResidualBlocks(std::vector<ResidualBlockId>* residual_blocks) const
-
-   Fills the passed `residual_blocks` vector with pointers to the
-   residual blocks currently in the problem. After this call,
-   `residual_blocks.size() == NumResidualBlocks`.
-
-.. function:: void Problem::GetParameterBlocksForResidualBlock(const ResidualBlockId residual_block, std::vector<double*>* parameter_blocks) const
-
-   Get all the parameter blocks that depend on the given residual
-   block.
-
-.. function:: void Problem::GetResidualBlocksForParameterBlock(const double* values, std::vector<ResidualBlockId>* residual_blocks) const
-
-   Get all the residual blocks that depend on the given parameter
-   block.
-
-   If :member:`Problem::Options::enable_fast_removal` is
-   ``true``, then getting the residual blocks is fast and depends only
-   on the number of residual blocks. Otherwise, getting the residual
-   blocks for a parameter block will scan the entire problem.
-
-.. function:: const CostFunction* Problem::GetCostFunctionForResidualBlock(const ResidualBlockId residual_block) const
-
-   Get the :class:`CostFunction` for the given residual block.
-
-.. function:: const LossFunction* Problem::GetLossFunctionForResidualBlock(const ResidualBlockId residual_block) const
-
-   Get the :class:`LossFunction` for the given residual block.
-
-.. function::  bool EvaluateResidualBlock(ResidualBlockId residual_block_id, bool apply_loss_function, double* cost,double* residuals, double** jacobians) const
-
-   Evaluates the residual block, storing the scalar cost in ``cost``, the
-   residual components in ``residuals``, and the jacobians between the
-   parameters and residuals in ``jacobians[i]``, in row-major order.
-
-   If ``residuals`` is ``nullptr``, the residuals are not computed.
-
-   If ``jacobians`` is ``nullptr``, no Jacobians are computed. If
-   ``jacobians[i]`` is ``nullptr``, then the Jacobian for that
-   parameter block is not computed.
-
-   It is not okay to request the Jacobian w.r.t a parameter block
-   that is constant.
-
-   The return value indicates the success or failure. Even if the
-   function returns false, the caller should expect the output
-   memory locations to have been modified.
-
-   The returned cost and jacobians have had robustification and
-   :class:`Manifold` applied already; for example, the jacobian for a
-   4-dimensional quaternion parameter using the :class:`QuaternionManifold` is
-   ``num_residuals x 3`` instead of ``num_residuals x 4``.
-
-   ``apply_loss_function`` as the name implies allows the user to
-   switch the application of the loss function on and off.
-
-   .. NOTE:: If an :class:`EvaluationCallback` is associated with the
-      problem, then its
-      :func:`EvaluationCallback::PrepareForEvaluation` method will be
-      called every time this method is called with `new_point =
-      true`. This conservatively assumes that the user may have
-      changed the parameter values since the previous call to evaluate
-      / solve.  For improved efficiency, and only if you know that the
-      parameter values have not changed between calls, see
-      :func:`Problem::EvaluateResidualBlockAssumingParametersUnchanged`.
-
-
-.. function::  bool EvaluateResidualBlockAssumingParametersUnchanged(ResidualBlockId residual_block_id, bool apply_loss_function, double* cost,double* residuals, double** jacobians) const
-
-    Same as :func:`Problem::EvaluateResidualBlock` except that if an
-    :class:`EvaluationCallback` is associated with the problem, then
-    its :func:`EvaluationCallback::PrepareForEvaluation` method will
-    be called every time this method is called with new_point = false.
-
-    This means, if an :class:`EvaluationCallback` is associated with
-    the problem then it is the user's responsibility to call
-    :func:`EvaluationCallback::PrepareForEvaluation` before calling
-    this method if necessary, i.e. iff the parameter values have been
-    changed since the last call to evaluate / solve.'
-
-    This is because, as the name implies, we assume that the parameter
-    blocks did not change since the last time
-    :func:`EvaluationCallback::PrepareForEvaluation` was called (via
-    :func:`Solve`, :func:`Problem::Evaluate` or
-    :func:`Problem::EvaluateResidualBlock`).
-
-
-.. function:: bool Problem::Evaluate(const Problem::EvaluateOptions& options, double* cost, std::vector<double>* residuals, std::vector<double>* gradient, CRSMatrix* jacobian)
-
-   Evaluate a :class:`Problem`. Any of the output pointers can be
-   ``nullptr``. Which residual blocks and parameter blocks are used is
-   controlled by the :class:`Problem::EvaluateOptions` struct below.
-
-   .. NOTE::
-
-      The evaluation will use the values stored in the memory
-      locations pointed to by the parameter block pointers used at the
-      time of the construction of the problem, for example in the
-      following code:
-
-      .. code-block:: c++
-
-        Problem problem;
-        double x = 1;
-        problem.Add(new MyCostFunction, nullptr, &x);
-
-        double cost = 0.0;
-        problem.Evaluate(Problem::EvaluateOptions(), &cost, nullptr, nullptr, nullptr);
-
-      The cost is evaluated at `x = 1`. If you wish to evaluate the
-      problem at `x = 2`, then
-
-      .. code-block:: c++
-
-         x = 2;
-         problem.Evaluate(Problem::EvaluateOptions(), &cost, nullptr, nullptr, nullptr);
-
-      is the way to do so.
-
-   .. NOTE::
-
-      If no :class:`Manifold` are used, then the size of the gradient vector is
-      the sum of the sizes of all the parameter blocks. If a parameter block has
-      a manifold then it contributes "TangentSize" entries to the gradient
-      vector.
-
-   .. NOTE::
-
-      This function cannot be called while the problem is being
-      solved, for example it cannot be called from an
-      :class:`IterationCallback` at the end of an iteration during a
-      solve.
-
-   .. NOTE::
-
-      If an EvaluationCallback is associated with the problem, then
-      its PrepareForEvaluation method will be called everytime this
-      method is called with ``new_point = true``.
-
-.. class:: Problem::EvaluateOptions
-
-   Options struct that is used to control :func:`Problem::Evaluate`.
-
-.. member:: std::vector<double*> Problem::EvaluateOptions::parameter_blocks
-
-   The set of parameter blocks for which evaluation should be
-   performed. This vector determines the order in which parameter
-   blocks occur in the gradient vector and in the columns of the
-   jacobian matrix. If parameter_blocks is empty, then it is assumed
-   to be equal to a vector containing ALL the parameter
-   blocks. Generally speaking the ordering of the parameter blocks in
-   this case depends on the order in which they were added to the
-   problem and whether or not the user removed any parameter blocks.
-
-   **NOTE** This vector should contain the same pointers as the ones
-   used to add parameter blocks to the Problem. These parameter block
-   should NOT point to new memory locations. Bad things will happen if
-   you do.
-
-.. member:: std::vector<ResidualBlockId> Problem::EvaluateOptions::residual_blocks
-
-   The set of residual blocks for which evaluation should be
-   performed. This vector determines the order in which the residuals
-   occur, and how the rows of the jacobian are ordered. If
-   residual_blocks is empty, then it is assumed to be equal to the
-   vector containing all the residual blocks.
-
-.. member:: bool Problem::EvaluateOptions::apply_loss_function
-
-   Even though the residual blocks in the problem may contain loss
-   functions, setting apply_loss_function to false will turn off the
-   application of the loss function to the output of the cost
-   function. This is of use for example if the user wishes to analyse
-   the solution quality by studying the distribution of residuals
-   before and after the solve.
-
-.. member:: int Problem::EvaluateOptions::num_threads
-
-   Number of threads to use.
-
-
-:class:`EvaluationCallback`
-===========================
-
-.. class:: EvaluationCallback
-
-   Interface for receiving callbacks before Ceres evaluates residuals or
-   Jacobians:
-
-   .. code-block:: c++
-
-      class EvaluationCallback {
-       public:
-        virtual ~EvaluationCallback();
-        virtual void PrepareForEvaluation(bool evaluate_jacobians,
-                                          bool new_evaluation_point) = 0;
-      };
-
-.. function:: void EvaluationCallback::PrepareForEvaluation(bool evaluate_jacobians, bool new_evaluation_point)
-
-   Ceres will call :func:`EvaluationCallback::PrepareForEvaluation`
-   every time, and once before it computes the residuals and/or the
-   Jacobians.
-
-   User parameters (the double* values provided by the user) are fixed
-   until the next call to
-   :func:`EvaluationCallback::PrepareForEvaluation`. If
-   ``new_evaluation_point == true``, then this is a new point that is
-   different from the last evaluated point. Otherwise, it is the same
-   point that was evaluated previously (either Jacobian or residual)
-   and the user can use cached results from previous evaluations. If
-   ``evaluate_jacobians`` is ``true``, then Ceres will request Jacobians
-   in the upcoming cost evaluation.
-
-   Using this callback interface, Ceres can notify you when it is
-   about to evaluate the residuals or Jacobians. With the callback,
-   you can share computation between residual blocks by doing the
-   shared computation in
-   :func:`EvaluationCallback::PrepareForEvaluation` before Ceres calls
-   :func:`CostFunction::Evaluate` on all the residuals. It also
-   enables caching results between a pure residual evaluation and a
-   residual & Jacobian evaluation, via the ``new_evaluation_point``
-   argument.
-
-   One use case for this callback is if the cost function compute is
-   moved to the GPU. In that case, the prepare call does the actual
-   cost function evaluation, and subsequent calls from Ceres to the
-   actual cost functions merely copy the results from the GPU onto the
-   corresponding blocks for Ceres to plug into the solver.
-
-   **Note**: Ceres provides no mechanism to share data other than the
-   notification from the callback. Users must provide access to
-   pre-computed shared data to their cost functions behind the scenes;
-   this all happens without Ceres knowing. One approach is to put a
-   pointer to the shared data in each cost function (recommended) or
-   to use a global shared variable (discouraged; bug-prone).  As far
-   as Ceres is concerned, it is evaluating cost functions like any
-   other; it just so happens that behind the scenes the cost functions
-   reuse pre-computed data to execute faster. See
-   `examples/evaluation_callback_example.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/evaluation_callback_example.cc>`_
-   for an example.
-
-   See ``evaluation_callback_test.cc`` for code that explicitly
-   verifies the preconditions between
-   :func:`EvaluationCallback::PrepareForEvaluation` and
-   :func:`CostFunction::Evaluate`.
-
-
-``rotation.h``
-==============
-
-Many applications of Ceres Solver involve optimization problems where
-some of the variables correspond to rotations. To ease the pain of
-work with the various representations of rotations (angle-axis,
-quaternion and matrix) we provide a handy set of templated
-functions. These functions are templated so that the user can use them
-within Ceres Solver's automatic differentiation framework.
-
-.. function:: template <typename T> void AngleAxisToQuaternion(T const* angle_axis, T* quaternion)
-
-   Convert a value in combined axis-angle representation to a
-   quaternion.
-
-   The value ``angle_axis`` is a triple whose norm is an angle in radians,
-   and whose direction is aligned with the axis of rotation, and
-   ``quaternion`` is a 4-tuple that will contain the resulting quaternion.
-
-.. function::  template <typename T> void QuaternionToAngleAxis(T const* quaternion, T* angle_axis)
-
-   Convert a quaternion to the equivalent combined axis-angle
-   representation.
-
-   The value ``quaternion`` must be a unit quaternion - it is not
-   normalized first, and ``angle_axis`` will be filled with a value
-   whose norm is the angle of rotation in radians, and whose direction
-   is the axis of rotation.
-
-.. function:: template <typename T, int row_stride, int col_stride> void RotationMatrixToAngleAxis(const MatrixAdapter<const T, row_stride, col_stride>& R, T * angle_axis)
-.. function:: template <typename T, int row_stride, int col_stride> void AngleAxisToRotationMatrix(T const * angle_axis, const MatrixAdapter<T, row_stride, col_stride>& R)
-.. function:: template <typename T> void RotationMatrixToAngleAxis(T const * R, T * angle_axis)
-.. function:: template <typename T> void AngleAxisToRotationMatrix(T const * angle_axis, T * R)
-
-   Conversions between :math:`3\times3` rotation matrix with given column and row strides and
-   axis-angle rotation representations. The functions that take a pointer to T instead
-   of a MatrixAdapter assume a column major representation with unit row stride and a column stride of 3.
-
-.. function:: template <typename T, int row_stride, int col_stride> void EulerAnglesToRotationMatrix(const T* euler, const MatrixAdapter<T, row_stride, col_stride>& R)
-.. function:: template <typename T> void EulerAnglesToRotationMatrix(const T* euler, int row_stride, T* R)
-
-   Conversions between :math:`3\times3` rotation matrix with given column and row strides and
-   Euler angle (in degrees) rotation representations.
-
-   The {pitch,roll,yaw} Euler angles are rotations around the {x,y,z}
-   axes, respectively.  They are applied in that same order, so the
-   total rotation R is Rz * Ry * Rx.
-
-   The function that takes a pointer to T as the rotation matrix assumes a row
-   major representation with unit column stride and a row stride of 3.
-   The additional parameter row_stride is required to be 3.
-
-.. function:: template <typename T, int row_stride, int col_stride> void QuaternionToScaledRotation(const T q[4], const MatrixAdapter<T, row_stride, col_stride>& R)
-.. function:: template <typename T> void QuaternionToScaledRotation(const T q[4], T R[3 * 3])
-
-   Convert a 4-vector to a :math:`3\times3` scaled rotation matrix.
-
-   The choice of rotation is such that the quaternion
-   :math:`\begin{bmatrix} 1 &0 &0 &0\end{bmatrix}` goes to an identity
-   matrix and for small :math:`a, b, c` the quaternion
-   :math:`\begin{bmatrix}1 &a &b &c\end{bmatrix}` goes to the matrix
-
-   .. math::
-
-     I + 2 \begin{bmatrix} 0 & -c & b \\ c & 0 & -a\\ -b & a & 0
-           \end{bmatrix} + O(q^2)
-
-   which corresponds to a Rodrigues approximation, the last matrix
-   being the cross-product matrix of :math:`\begin{bmatrix} a& b&
-   c\end{bmatrix}`. Together with the property that :math:`R(q_1 \otimes q_2)
-   = R(q_1) R(q_2)` this uniquely defines the mapping from :math:`q` to
-   :math:`R`.
-
-   In the function that accepts a pointer to T instead of a MatrixAdapter,
-   the rotation matrix ``R`` is a row-major matrix with unit column stride
-   and a row stride of 3.
-
-   No normalization of the quaternion is performed, i.e.
-   :math:`R = \|q\|^2  Q`, where :math:`Q` is an orthonormal matrix
-   such that :math:`\det(Q) = 1` and :math:`QQ' = I`.
-
-
-.. function:: template <typename T> void QuaternionToRotation(const T q[4], const MatrixAdapter<T, row_stride, col_stride>& R)
-.. function:: template <typename T> void QuaternionToRotation(const T q[4], T R[3 * 3])
-
-   Same as above except that the rotation matrix is normalized by the
-   Frobenius norm, so that :math:`R R' = I` (and :math:`\det(R) = 1`).
-
-.. function:: template <typename T> void UnitQuaternionRotatePoint(const T q[4], const T pt[3], T result[3])
-
-   Rotates a point pt by a quaternion q:
-
-   .. math:: \text{result} = R(q)  \text{pt}
-
-   Assumes the quaternion is unit norm. If you pass in a quaternion
-   with :math:`|q|^2 = 2` then you WILL NOT get back 2 times the
-   result you get for a unit quaternion.
-
-
-.. function:: template <typename T> void QuaternionRotatePoint(const T q[4], const T pt[3], T result[3])
-
-   With this function you do not need to assume that :math:`q` has unit norm.
-   It does assume that the norm is non-zero.
-
-.. function:: template <typename T> void QuaternionProduct(const T z[4], const T w[4], T zw[4])
-
-   .. math:: zw = z \otimes w
-
-   where :math:`\otimes` is the Quaternion product between 4-vectors.
-
-
-.. function:: template <typename T> void CrossProduct(const T x[3], const T y[3], T x_cross_y[3])
-
-   .. math:: \text{x_cross_y} = x \times y
-
-.. function:: template <typename T> void AngleAxisRotatePoint(const T angle_axis[3], const T pt[3], T result[3])
-
-   .. math:: y = R(\text{angle_axis}) x
-
-
-Cubic Interpolation
-===================
-
-Optimization problems often involve functions that are given in the
-form of a table of values, for example an image. Evaluating these
-functions and their derivatives requires interpolating these
-values. Interpolating tabulated functions is a vast area of research
-and there are a lot of libraries which implement a variety of
-interpolation schemes. However, using them within the automatic
-differentiation framework in Ceres is quite painful. To this end,
-Ceres provides the ability to interpolate one dimensional and two
-dimensional tabular functions.
-
-The one dimensional interpolation is based on the Cubic Hermite
-Spline, also known as the Catmull-Rom Spline. This produces a first
-order differentiable interpolating function. The two dimensional
-interpolation scheme is a generalization of the one dimensional scheme
-where the interpolating function is assumed to be separable in the two
-dimensions,
-
-More details of the construction can be found `Linear Methods for
-Image Interpolation <http://www.ipol.im/pub/art/2011/g_lmii/>`_ by
-Pascal Getreuer.
-
-.. class:: CubicInterpolator
-
-Given as input an infinite one dimensional grid, which provides the
-following interface.
-
-.. code::
-
-  struct Grid1D {
-    enum { DATA_DIMENSION = 2; };
-    void GetValue(int n, double* f) const;
-  };
-
-Where, ``GetValue`` gives us the value of a function :math:`f`
-(possibly vector valued) for any integer :math:`n` and the enum
-``DATA_DIMENSION`` indicates the dimensionality of the function being
-interpolated. For example if you are interpolating rotations in
-axis-angle format over time, then ``DATA_DIMENSION = 3``.
-
-:class:`CubicInterpolator` uses Cubic Hermite splines to produce a
-smooth approximation to it that can be used to evaluate the
-:math:`f(x)` and :math:`f'(x)` at any point on the real number
-line. For example, the following code interpolates an array of four
-numbers.
-
-.. code::
-
-  const double x[] = {1.0, 2.0, 5.0, 6.0};
-  Grid1D<double, 1> array(x, 0, 4);
-  CubicInterpolator interpolator(array);
-  double f, dfdx;
-  interpolator.Evaluate(1.5, &f, &dfdx);
-
-
-In the above code we use ``Grid1D`` a templated helper class that
-allows easy interfacing between ``C++`` arrays and
-:class:`CubicInterpolator`.
-
-``Grid1D`` supports vector valued functions where the various
-coordinates of the function can be interleaved or stacked. It also
-allows the use of any numeric type as input, as long as it can be
-safely cast to a double.
-
-.. class:: BiCubicInterpolator
-
-Given as input an infinite two dimensional grid, which provides the
-following interface:
-
-.. code::
-
-  struct Grid2D {
-    enum { DATA_DIMENSION = 2 };
-    void GetValue(int row, int col, double* f) const;
-  };
-
-Where, ``GetValue`` gives us the value of a function :math:`f`
-(possibly vector valued) for any pair of integers :code:`row` and
-:code:`col` and the enum ``DATA_DIMENSION`` indicates the
-dimensionality of the function being interpolated. For example if you
-are interpolating a color image with three channels (Red, Green &
-Blue), then ``DATA_DIMENSION = 3``.
-
-:class:`BiCubicInterpolator` uses the cubic convolution interpolation
-algorithm of R. Keys [Keys]_, to produce a smooth approximation to it
-that can be used to evaluate the :math:`f(r,c)`, :math:`\frac{\partial
-f(r,c)}{\partial r}` and :math:`\frac{\partial f(r,c)}{\partial c}` at
-any any point in the real plane.
-
-For example the following code interpolates a two dimensional array.
-
-.. code::
-
-   const double data[] = {1.0, 3.0, -1.0, 4.0,
-                          3.6, 2.1,  4.2, 2.0,
-                          2.0, 1.0,  3.1, 5.2};
-   Grid2D<double, 1>  array(data, 0, 3, 0, 4);
-   BiCubicInterpolator interpolator(array);
-   double f, dfdr, dfdc;
-   interpolator.Evaluate(1.2, 2.5, &f, &dfdr, &dfdc);
-
-In the above code, the templated helper class ``Grid2D`` is used to
-make a ``C++`` array look like a two dimensional table to
-:class:`BiCubicInterpolator`.
-
-``Grid2D`` supports row or column major layouts. It also supports
-vector valued functions where the individual coordinates of the
-function may be interleaved or stacked. It also allows the use of any
-numeric type as input, as long as it can be safely cast to double.
diff --git a/third_party/ceres/docs/source/nnls_solving.rst b/third_party/ceres/docs/source/nnls_solving.rst
deleted file mode 100644
index 184b94b..0000000
--- a/third_party/ceres/docs/source/nnls_solving.rst
+++ /dev/null
@@ -1,2742 +0,0 @@
-.. highlight:: c++
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-nnls_solving:
-
-================================
-Solving Non-linear Least Squares
-================================
-
-Introduction
-============
-
-Effective use of Ceres Solver requires some familiarity with the basic
-components of a non-linear least squares solver, so before we describe
-how to configure and use the solver, we will take a brief look at how
-some of the core optimization algorithms in Ceres Solver work.
-
-Let :math:`x \in \mathbb{R}^n` be an :math:`n`-dimensional vector of
-variables, and
-:math:`F(x) = \left[f_1(x), ... ,  f_{m}(x) \right]^{\top}` be a
-:math:`m`-dimensional function of :math:`x`.  We are interested in
-solving the optimization problem [#f1]_
-
-.. math:: \arg \min_x \frac{1}{2}\|F(x)\|^2\ . \\
-          L \le x \le U
-  :label: nonlinsq
-
-Where, :math:`L` and :math:`U` are vector lower and upper bounds on
-the parameter vector :math:`x`. The inequality holds component-wise.
-
-Since the efficient global minimization of :eq:`nonlinsq` for
-general :math:`F(x)` is an intractable problem, we will have to settle
-for finding a local minimum.
-
-In the following, the Jacobian :math:`J(x)` of :math:`F(x)` is an
-:math:`m\times n` matrix, where :math:`J_{ij}(x) = D_j f_i(x)`
-and the gradient vector is :math:`g(x) = \nabla \frac{1}{2}\|F(x)\|^2
-= J(x)^\top F(x)`.
-
-The general strategy when solving non-linear optimization problems is
-to solve a sequence of approximations to the original problem
-[NocedalWright]_. At each iteration, the approximation is solved to
-determine a correction :math:`\Delta x` to the vector :math:`x`. For
-non-linear least squares, an approximation can be constructed by using
-the linearization :math:`F(x+\Delta x) \approx F(x) + J(x)\Delta x`,
-which leads to the following linear least squares problem:
-
-.. math:: \min_{\Delta x} \frac{1}{2}\|J(x)\Delta x + F(x)\|^2
-   :label: linearapprox
-
-Unfortunately, naively solving a sequence of these problems and
-updating :math:`x \leftarrow x+ \Delta x` leads to an algorithm that
-may not converge.  To get a convergent algorithm, we need to control
-the size of the step :math:`\Delta x`. Depending on how the size of
-the step :math:`\Delta x` is controlled, non-linear optimization
-algorithms can be divided into two major categories [NocedalWright]_.
-
-1. **Trust Region** The trust region approach approximates the
-   objective function using a model function (often a quadratic) over
-   a subset of the search space known as the trust region. If the
-   model function succeeds in minimizing the true objective function
-   the trust region is expanded; conversely, otherwise it is
-   contracted and the model optimization problem is solved again.
-
-2. **Line Search** The line search approach first finds a descent
-   direction along which the objective function will be reduced and
-   then computes a step size that decides how far should move along
-   that direction. The descent direction can be computed by various
-   methods, such as gradient descent, Newton's method and Quasi-Newton
-   method. The step size can be determined either exactly or
-   inexactly.
-
-Trust region methods are in some sense dual to line search methods:
-trust region methods first choose a step size (the size of the trust
-region) and then a step direction while line search methods first
-choose a step direction and then a step size. Ceres Solver implements
-multiple algorithms in both categories.
-
-.. _section-trust-region-methods:
-
-Trust Region Methods
-====================
-
-The basic trust region algorithm looks something like this.
-
-   1. Given an initial point :math:`x` and a trust region radius :math:`\mu`.
-   2. Solve
-
-      .. math::
-         \arg \min_{\Delta x}& \frac{1}{2}\|J(x)\Delta x + F(x)\|^2 \\
-         \text{such that} &\|D(x)\Delta x\|^2 \le \mu\\
-         &L \le x + \Delta x \le U.
-
-   3. :math:`\rho = \frac{\displaystyle \|F(x + \Delta x)\|^2 -
-      \|F(x)\|^2}{\displaystyle \|J(x)\Delta x + F(x)\|^2 -
-      \|F(x)\|^2}`
-   4. if :math:`\rho > \epsilon` then  :math:`x = x + \Delta x`.
-   5. if :math:`\rho > \eta_1` then :math:`\mu = 2  \mu`
-   6. else if :math:`\rho < \eta_2` then :math:`\mu = 0.5 * \mu`
-   7. Go to 2.
-
-Here, :math:`\mu` is the trust region radius, :math:`D(x)` is some
-matrix used to define a metric on the domain of :math:`F(x)` and
-:math:`\rho` measures the quality of the step :math:`\Delta x`, i.e.,
-how well did the linear model predict the decrease in the value of the
-non-linear objective. The idea is to increase or decrease the radius
-of the trust region depending on how well the linearization predicts
-the behavior of the non-linear objective, which in turn is reflected
-in the value of :math:`\rho`.
-
-The key computational step in a trust-region algorithm is the solution
-of the constrained optimization problem
-
-.. math::
-   \arg \min_{\Delta x}&\quad \frac{1}{2}\|J(x)\Delta x + F(x)\|^2 \\
-   \text{such that} &\quad \|D(x)\Delta x\|^2 \le \mu\\
-    &\quad L \le x + \Delta x \le U.
-   :label: trp
-
-There are a number of different ways of solving this problem, each
-giving rise to a different concrete trust-region algorithm. Currently,
-Ceres implements two trust-region algorithms - Levenberg-Marquardt
-and Dogleg, each of which is augmented with a line search if bounds
-constraints are present [Kanzow]_. The user can choose between them by
-setting :member:`Solver::Options::trust_region_strategy_type`.
-
-.. rubric:: Footnotes
-
-.. [#f1] At the level of the non-linear solver, the block structure is
-         not relevant, therefore our discussion here is in terms of an
-         optimization problem defined over a state vector of size
-         :math:`n`. Similarly the presence of loss functions is also
-         ignored as the problem is internally converted into a pure
-         non-linear least squares problem.
-
-
-.. _section-levenberg-marquardt:
-
-Levenberg-Marquardt
--------------------
-
-The Levenberg-Marquardt algorithm [Levenberg]_  [Marquardt]_ is the
-most popular algorithm for solving non-linear least squares problems.
-It was also the first trust region algorithm to be developed
-[Levenberg]_ [Marquardt]_. Ceres implements an exact step [Madsen]_
-and an inexact step variant of the Levenberg-Marquardt algorithm
-[WrightHolt]_ [NashSofer]_.
-
-It can be shown, that the solution to :eq:`trp` can be obtained by
-solving an unconstrained optimization of the form
-
-.. math:: \arg\min_{\Delta x} \frac{1}{2}\|J(x)\Delta x + F(x)\|^2 +\lambda  \|D(x)\Delta x\|^2
-   :label: lsqr-naive
-
-Where, :math:`\lambda` is a Lagrange multiplier that is inversely
-related to :math:`\mu`. In Ceres, we solve for
-
-.. math:: \arg\min_{\Delta x} \frac{1}{2}\|J(x)\Delta x + F(x)\|^2 + \frac{1}{\mu} \|D(x)\Delta x\|^2
-   :label: lsqr
-
-The matrix :math:`D(x)` is a non-negative diagonal matrix, typically
-the square root of the diagonal of the matrix :math:`J(x)^\top J(x)`.
-
-Before going further, let us make some notational simplifications.
-
-We will assume that the matrix :math:`\frac{1}{\sqrt{\mu}} D` has been
-concatenated at the bottom of the matrix :math:`J(x)` and a
-corresponding vector of zeroes has been added to the bottom of
-:math:`F(x)`, i.e.:
-
-.. math:: J(x) = \begin{bmatrix} J(x) \\ \frac{1}{\sqrt{\mu}} D
-          \end{bmatrix},\quad F(x) = \begin{bmatrix} F(x) \\ 0
-          \end{bmatrix}.
-
-This allows us to re-write :eq:`lsqr` as
-
-.. math:: \min_{\Delta x} \frac{1}{2} \|J(x)\Delta x + F(x)\|^2 .
-   :label: simple
-
-and only talk about :math:`J(x)` and :math:`F(x)` going forward.
-
-For all but the smallest problems the solution of :eq:`simple` in each
-iteration of the Levenberg-Marquardt algorithm is the dominant
-computational cost. Ceres provides a number of different options for
-solving :eq:`simple`. There are two major classes of methods -
-factorization and iterative.
-
-The factorization methods are based on computing an exact solution of
-:eq:`lsqr` using a Cholesky or a QR factorization and lead to the so
-called exact step Levenberg-Marquardt algorithm. But it is not clear
-if an exact solution of :eq:`lsqr` is necessary at each step of the
-Levenberg-Mardquardt algorithm.  We have already seen evidence that
-this may not be the case, as :eq:`lsqr` is itself a regularized
-version of :eq:`linearapprox`. Indeed, it is possible to construct
-non-linear optimization algorithms in which the linearized problem is
-solved approximately. These algorithms are known as inexact Newton or
-truncated Newton methods [NocedalWright]_.
-
-An inexact Newton method requires two ingredients. First, a cheap
-method for approximately solving systems of linear
-equations. Typically an iterative linear solver like the Conjugate
-Gradients method is used for this purpose [NocedalWright]_. Second, a
-termination rule for the iterative solver. A typical termination rule
-is of the form
-
-.. math:: \|H(x) \Delta x + g(x)\| \leq \eta_k \|g(x)\|.
-   :label: inexact
-
-Here, :math:`k` indicates the Levenberg-Marquardt iteration number and
-:math:`0 < \eta_k <1` is known as the forcing sequence.  [WrightHolt]_
-prove that a truncated Levenberg-Marquardt algorithm that uses an
-inexact Newton step based on :eq:`inexact` converges for any
-sequence :math:`\eta_k \leq \eta_0 < 1` and the rate of convergence
-depends on the choice of the forcing sequence :math:`\eta_k`.
-
-Ceres supports both exact and inexact step solution strategies. When
-the user chooses a factorization based linear solver, the exact step
-Levenberg-Marquardt algorithm is used. When the user chooses an
-iterative linear solver, the inexact step Levenberg-Marquardt
-algorithm is used.
-
-We will talk more about the various linear solvers that you can use in
-:ref:`section-linear-solver`.
-
-.. _section-dogleg:
-
-Dogleg
-------
-
-Another strategy for solving the trust region problem :eq:`trp` was
-introduced by
-`M. J. D. Powell <https://en.wikipedia.org/wiki/Michael_J._D._Powell>`_. The
-key idea there is to compute two vectors
-
-.. math::
-
-        \Delta x^{\text{Gauss-Newton}} &= \arg \min_{\Delta x}\frac{1}{2} \|J(x)\Delta x + f(x)\|^2.\\
-        \Delta x^{\text{Cauchy}} &= -\frac{\|g(x)\|^2}{\|J(x)g(x)\|^2}g(x).
-
-Note that the vector :math:`\Delta x^{\text{Gauss-Newton}}` is the
-solution to :eq:`linearapprox` and :math:`\Delta
-x^{\text{Cauchy}}` is the vector that minimizes the linear
-approximation if we restrict ourselves to moving along the direction
-of the gradient. Dogleg methods finds a vector :math:`\Delta x`
-defined by :math:`\Delta x^{\text{Gauss-Newton}}` and :math:`\Delta
-x^{\text{Cauchy}}` that solves the trust region problem. Ceres
-supports two variants that can be chose by setting
-:member:`Solver::Options::dogleg_type`.
-
-``TRADITIONAL_DOGLEG`` as described by Powell, constructs two line
-segments using the Gauss-Newton and Cauchy vectors and finds the point
-farthest along this line shaped like a dogleg (hence the name) that is
-contained in the trust-region. For more details on the exact reasoning
-and computations, please see Madsen et al [Madsen]_.
-
-``SUBSPACE_DOGLEG`` is a more sophisticated method that considers the
-entire two dimensional subspace spanned by these two vectors and finds
-the point that minimizes the trust region problem in this subspace
-[ByrdSchnabel]_.
-
-The key advantage of the Dogleg over Levenberg-Marquardt is that if
-the step computation for a particular choice of :math:`\mu` does not
-result in sufficient decrease in the value of the objective function,
-Levenberg-Marquardt solves the linear approximation from scratch with
-a smaller value of :math:`\mu`. Dogleg on the other hand, only needs
-to compute the interpolation between the Gauss-Newton and the Cauchy
-vectors, as neither of them depend on the value of :math:`\mu`. As a
-result the Dogleg method only solves one linear system per successful
-step, while Levenberg-Marquardt may need to solve an arbitrary number
-of linear systems before it can make progress [LourakisArgyros]_.
-
-A disadvantage of the Dogleg implementation in Ceres Solver is that is
-can only be used with method can only be used with exact factorization
-based linear solvers.
-
-.. _section-inner-iterations:
-
-Inner Iterations
-----------------
-
-Some non-linear least squares problems have additional structure in
-the way the parameter blocks interact that it is beneficial to modify
-the way the trust region step is computed. For example, consider the
-following regression problem
-
-.. math::   y = a_1 e^{b_1 x} + a_2 e^{b_3 x^2 + c_1}
-
-
-Given a set of pairs :math:`\{(x_i, y_i)\}`, the user wishes to estimate
-:math:`a_1, a_2, b_1, b_2`, and :math:`c_1`.
-
-Notice that the expression on the left is linear in :math:`a_1` and
-:math:`a_2`, and given any value for :math:`b_1, b_2` and :math:`c_1`,
-it is possible to use linear regression to estimate the optimal values
-of :math:`a_1` and :math:`a_2`. It's possible to analytically
-eliminate the variables :math:`a_1` and :math:`a_2` from the problem
-entirely. Problems like these are known as separable least squares
-problem and the most famous algorithm for solving them is the Variable
-Projection algorithm invented by Golub & Pereyra [GolubPereyra]_.
-
-Similar structure can be found in the matrix factorization with
-missing data problem. There the corresponding algorithm is known as
-Wiberg's algorithm [Wiberg]_.
-
-Ruhe & Wedin present an analysis of various algorithms for solving
-separable non-linear least squares problems and refer to *Variable
-Projection* as Algorithm I in their paper [RuheWedin]_.
-
-Implementing Variable Projection is tedious and expensive. Ruhe &
-Wedin present a simpler algorithm with comparable convergence
-properties, which they call Algorithm II.  Algorithm II performs an
-additional optimization step to estimate :math:`a_1` and :math:`a_2`
-exactly after computing a successful Newton step.
-
-
-This idea can be generalized to cases where the residual is not
-linear in :math:`a_1` and :math:`a_2`, i.e.,
-
-.. math:: y = f_1(a_1, e^{b_1 x}) + f_2(a_2, e^{b_3 x^2 + c_1})
-
-In this case, we solve for the trust region step for the full problem,
-and then use it as the starting point to further optimize just `a_1`
-and `a_2`. For the linear case, this amounts to doing a single linear
-least squares solve. For non-linear problems, any method for solving
-the :math:`a_1` and :math:`a_2` optimization problems will do. The
-only constraint on :math:`a_1` and :math:`a_2` (if they are two
-different parameter block) is that they do not co-occur in a residual
-block.
-
-This idea can be further generalized, by not just optimizing
-:math:`(a_1, a_2)`, but decomposing the graph corresponding to the
-Hessian matrix's sparsity structure into a collection of
-non-overlapping independent sets and optimizing each of them.
-
-Setting :member:`Solver::Options::use_inner_iterations` to ``true``
-enables the use of this non-linear generalization of Ruhe & Wedin's
-Algorithm II.  This version of Ceres has a higher iteration
-complexity, but also displays better convergence behavior per
-iteration.
-
-Setting :member:`Solver::Options::num_threads` to the maximum number
-possible is highly recommended.
-
-.. _section-non-monotonic-steps:
-
-Non-monotonic Steps
--------------------
-
-Note that the basic trust-region algorithm described in
-:ref:`section-trust-region-methods` is a descent algorithm in that it
-only accepts a point if it strictly reduces the value of the objective
-function.
-
-Relaxing this requirement allows the algorithm to be more efficient in
-the long term at the cost of some local increase in the value of the
-objective function.
-
-This is because allowing for non-decreasing objective function values
-in a principled manner allows the algorithm to *jump over boulders* as
-the method is not restricted to move into narrow valleys while
-preserving its convergence properties.
-
-Setting :member:`Solver::Options::use_nonmonotonic_steps` to ``true``
-enables the non-monotonic trust region algorithm as described by Conn,
-Gould & Toint in [Conn]_.
-
-Even though the value of the objective function may be larger than the
-minimum value encountered over the course of the optimization, the
-final parameters returned to the user are the ones corresponding to
-the minimum cost over all iterations.
-
-The option to take non-monotonic steps is available for all trust
-region strategies.
-
-
-.. _section-line-search-methods:
-
-Line Search Methods
-===================
-
-.. NOTE::
-
-   The line search method in Ceres Solver cannot handle bounds
-   constraints right now, so it can only be used for solving
-   unconstrained problems.
-
-The basic line search algorithm looks something like this:
-
-   1. Given an initial point :math:`x`
-   2. :math:`\Delta x = -H^{-1}(x) g(x)`
-   3. :math:`\arg \min_\mu \frac{1}{2} \| F(x + \mu \Delta x) \|^2`
-   4. :math:`x = x + \mu \Delta x`
-   5. Goto 2.
-
-Here :math:`H(x)` is some approximation to the Hessian of the
-objective function, and :math:`g(x)` is the gradient at
-:math:`x`. Depending on the choice of :math:`H(x)` we get a variety of
-different search directions :math:`\Delta x`.
-
-Step 4, which is a one dimensional optimization or `Line Search` along
-:math:`\Delta x` is what gives this class of methods its name.
-
-Different line search algorithms differ in their choice of the search
-direction :math:`\Delta x` and the method used for one dimensional
-optimization along :math:`\Delta x`. The choice of :math:`H(x)` is the
-primary source of computational complexity in these
-methods. Currently, Ceres Solver supports four choices of search
-directions, all aimed at large scale problems.
-
-1. ``STEEPEST_DESCENT`` This corresponds to choosing :math:`H(x)` to
-   be the identity matrix. This is not a good search direction for
-   anything but the simplest of the problems. It is only included here
-   for completeness.
-
-2. ``NONLINEAR_CONJUGATE_GRADIENT`` A generalization of the Conjugate
-   Gradient method to non-linear functions. The generalization can be
-   performed in a number of different ways, resulting in a variety of
-   search directions. Ceres Solver currently supports
-   ``FLETCHER_REEVES``, ``POLAK_RIBIERE`` and ``HESTENES_STIEFEL``
-   directions.
-
-3. ``BFGS`` A generalization of the Secant method to multiple
-   dimensions in which a full, dense approximation to the inverse
-   Hessian is maintained and used to compute a quasi-Newton step
-   [NocedalWright]_.  ``BFGS`` and its limited memory variant ``LBFGS``
-   are currently the best known general quasi-Newton algorithm.
-
-4. ``LBFGS`` A limited memory approximation to the full ``BFGS``
-   method in which the last `M` iterations are used to approximate the
-   inverse Hessian used to compute a quasi-Newton step [Nocedal]_,
-   [ByrdNocedal]_.
-
-Currently Ceres Solver supports both a backtracking and interpolation
-based `Armijo line search algorithm
-<https://en.wikipedia.org/wiki/Backtracking_line_search>`_ (``ARMIJO``)
-, and a sectioning / zoom interpolation (strong) `Wolfe condition line
-search algorithm <https://en.wikipedia.org/wiki/Wolfe_conditions>`_
-(``WOLFE``).
-
-.. NOTE::
-
-   In order for the assumptions underlying the ``BFGS`` and ``LBFGS``
-   methods to be satisfied the ``WOLFE`` algorithm must be used.
-
-.. _section-linear-solver:
-
-Linear Solvers
-==============
-
-Observe that for both of the trust-region methods described above, the
-key computational cost is the solution of a linear least squares
-problem of the form
-
-.. math:: \min_{\Delta x} \frac{1}{2} \|J(x)\Delta x + F(x)\|^2 .
-   :label: simple2
-
-Let :math:`H(x)= J(x)^\top J(x)` and :math:`g(x) = -J(x)^\top
-F(x)`. For notational convenience let us also drop the dependence on
-:math:`x`. Then it is easy to see that solving :eq:`simple2` is
-equivalent to solving the *normal equations*.
-
-.. math:: H \Delta x = g
-   :label: normal
-
-Ceres provides a number of different options for solving :eq:`normal`.
-
-.. _section-qr:
-
-DENSE_QR
---------
-
-For small problems (a couple of hundred parameters and a few thousand
-residuals) with relatively dense Jacobians, QR-decomposition is the
-method of choice [Bjorck]_. Let :math:`J = QR` be the QR-decomposition
-of :math:`J`, where :math:`Q` is an orthonormal matrix and :math:`R`
-is an upper triangular matrix [TrefethenBau]_. Then it can be shown
-that the solution to :eq:`normal` is given by
-
-.. math:: \Delta x^* = -R^{-1}Q^\top f
-
-You can use QR-decomposition by setting
-:member:`Solver::Options::linear_solver_type` to ``DENSE_QR``.
-
-By default (``Solver::Options::dense_linear_algebra_library_type =
-EIGEN``) Ceres Solver will use `Eigen Householder QR factorization
-<https://eigen.tuxfamily.org/dox-devel/classEigen_1_1HouseholderQR.html>`_
-.
-
-If Ceres Solver has been built with an optimized LAPACK
-implementation, then the user can also choose to use LAPACK's
-`DGEQRF`_ routine by setting
-:member:`Solver::Options::dense_linear_algebra_library_type` to
-``LAPACK``. Depending on the `LAPACK` and the underlying `BLAS`
-implementation this may perform better than using Eigen's Householder
-QR factorization.
-
-.. _DGEQRF: https://netlib.org/lapack/explore-html/df/dc5/group__variants_g_ecomputational_ga3766ea903391b5cf9008132f7440ec7b.html
-
-
-If an NVIDIA GPU is available and Ceres Solver has been built with
-CUDA support enabled, then the user can also choose to perform the
-QR-decomposition on the GPU by setting
-:member:`Solver::Options::dense_linear_algebra_library_type` to
-``CUDA``. Depending on the GPU this can lead to a substantial
-speedup. Using CUDA only makes sense for moderate to large sized
-problems. This is because to perform the decomposition on the GPU the
-matrix :math:`J` needs to be transferred from the CPU to the GPU and
-this incurs a cost. So unless the speedup from doing the decomposition
-on the GPU is large enough to also account for the time taken to
-transfer the Jacobian to the GPU, using CUDA will not be better than
-just doing the decomposition on the CPU.
-
-.. _section-dense-normal-cholesky:
-
-DENSE_NORMAL_CHOLESKY
----------------------
-
-It is often the case that the number of rows in the Jacobian :math:`J`
-are much larger than the the number of columns. The complexity of QR
-factorization scales linearly with the number of rows, so beyond a
-certain size it is more efficient to solve :eq:`normal` using a dense
-`Cholesky factorization
-<https://en.wikipedia.org/wiki/Cholesky_decomposition>`_.
-
-Let :math:`H = R^\top R` be the Cholesky factorization of the normal
-equations, where :math:`R` is an upper triangular matrix, then the
-solution to :eq:`normal` is given by
-
-.. math::
-
-    \Delta x^* = R^{-1} R^{-\top} g.
-
-
-The observant reader will note that the :math:`R` in the Cholesky
-factorization of :math:`H` is the same upper triangular matrix
-:math:`R` in the QR factorization of :math:`J`. Since :math:`Q` is an
-orthonormal matrix, :math:`J=QR` implies that :math:`J^\top J = R^\top
-Q^\top Q R = R^\top R`.
-
-Unfortunately, forming the matrix :math:`H = J'J` squares the
-condition number. As a result while the cost of forming :math:`H` and
-computing its Cholesky factorization is lower than computing the
-QR-factorization of :math:`J`, we pay the price in terms of increased
-numerical instability and potential failure of the Cholesky
-factorization for ill-conditioned Jacobians.
-
-You can use dense Cholesky factorization by setting
-:member:`Solver::Options::linear_solver_type` to
-``DENSE_NORMAL_CHOLESKY``.
-
-By default (``Solver::Options::dense_linear_algebra_library_type =
-EIGEN``) Ceres Solver will use `Eigen's LLT factorization`_ routine.
-
-.. _Eigen's LLT Factorization:  https://eigen.tuxfamily.org/dox/classEigen_1_1LLT.html
-
-If Ceres Solver has been built with an optimized LAPACK
-implementation, then the user can also choose to use LAPACK's
-`DPOTRF`_ routine by setting
-:member:`Solver::Options::dense_linear_algebra_library_type` to
-``LAPACK``. Depending on the `LAPACK` and the underlying `BLAS`
-implementation this may perform better than using Eigen's Cholesky
-factorization.
-
-.. _DPOTRF: https://www.netlib.org/lapack/explore-html/d1/d7a/group__double_p_ocomputational_ga2f55f604a6003d03b5cd4a0adcfb74d6.html
-
-If an NVIDIA GPU is available and Ceres Solver has been built with
-CUDA support enabled, then the user can also choose to perform the
-Cholesky factorization on the GPU by setting
-:member:`Solver::Options::dense_linear_algebra_library_type` to
-``CUDA``. Depending on the GPU this can lead to a substantial speedup.
-Using CUDA only makes sense for moderate to large sized problems. This
-is because to perform the decomposition on the GPU the matrix
-:math:`H` needs to be transferred from the CPU to the GPU and this
-incurs a cost. So unless the speedup from doing the decomposition on
-the GPU is large enough to also account for the time taken to transfer
-the Jacobian to the GPU, using CUDA will not be better than just doing
-the decomposition on the CPU.
-
-
-.. _section-sparse-normal-cholesky:
-
-SPARSE_NORMAL_CHOLESKY
-----------------------
-
-Large non-linear least square problems are usually sparse. In such
-cases, using a dense QR or Cholesky factorization is inefficient. For
-such problems, Cholesky factorization routines which treat :math:`H`
-as a sparse matrix and computes a sparse factor :math:`R` are better
-suited [Davis]_. This can lead to substantial savings in memory and
-CPU time for large sparse problems.
-
-You can use dense Cholesky factorization by setting
-:member:`Solver::Options::linear_solver_type` to
-``SPARSE_NORMAL_CHOLESKY``.
-
-The use of this linear solver requires that Ceres is compiled with
-support for at least one of:
-
- 1. `SuiteSparse <https://people.engr.tamu.edu/davis/suitesparse.html>`_ (``SUITE_SPARSE``).
- 2. `Apple's Accelerate framework
-    <https://developer.apple.com/documentation/accelerate/sparse_solvers?language=objc>`_
-    (``ACCELERATE_SPARSE``).
- 3. `Eigen's sparse linear solvers
-    <https://eigen.tuxfamily.org/dox/group__SparseCholesky__Module.html>`_
-    (``EIGEN_SPARSE``).
-
-SuiteSparse and Accelerate offer high performance sparse Cholesky
-factorization routines as they level-3 BLAS routines
-internally. Eigen's sparse Cholesky routines are *simplicial* and do
-not use dense linear algebra routines and as a result cannot compete
-with SuiteSparse and Accelerate, especially on large problems. As a
-result to get the best performance out of SuiteSparse it should be
-linked to high quality BLAS and LAPACK implementations e.g. `ATLAS
-<https://math-atlas.sourceforge.net/>`_, `OpenBLAS
-<https://www.openblas.net/>`_ or `Intel MKL
-<https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html>`_.
-
-A critical part of a sparse Cholesky factorization routine is the use
-a fill-reducing ordering. By default Ceres Solver uses the Approximate
-Minimum Degree (``AMD``) ordering, which usually performs well, but
-there are other options that may perform better depending on the
-actual sparsity structure of the Jacobian. See :ref:`section-ordering`
-for more details.
-
-.. _section-cgnr:
-
-CGNR
-----
-
-For general sparse problems, if the problem is too large for sparse
-Cholesky factorization or a sparse linear algebra library is not
-linked into Ceres, another option is the ``CGNR`` solver. This solver
-uses the `Conjugate Gradients
-<https://en.wikipedia.org/wiki/Conjugate_gradient_method>_` method on
-the *normal equations*, but without forming the normal equations
-explicitly. It exploits the relation
-
-.. math::
-    H x = J^\top J x = J^\top(J x)
-
-Because ``CGNR`` never solves the linear system exactly, when the user
-chooses ``CGNR`` as the linear solver, Ceres automatically switches
-from the exact step algorithm to an inexact step algorithm. This also
-means that ``CGNR`` can only be used with ``LEVENBERG_MARQUARDT`` and
-not with ``DOGLEG`` trust region strategy.
-
-``CGNR`` by default runs on the CPU. However, if an NVIDIA GPU is
-available and Ceres Solver has been built with CUDA support enabled,
-then the user can also choose to run ``CGNR`` on the GPU by setting
-:member:`Solver::Options::sparse_linear_algebra_library_type` to
-``CUDA_SPARSE``. The key complexity of ``CGNR`` comes from evaluating
-the two sparse-matrix vector products (SpMV) :math:`Jx` and
-:math:`J'y`. GPUs are particularly well suited for doing sparse
-matrix-vector products. As a result, for large problems using a GPU
-can lead to a substantial speedup.
-
-The convergence of Conjugate Gradients depends on the conditioner
-number :math:`\kappa(H)`. Usually :math:`H` is quite poorly
-conditioned and a `Preconditioner
-<https://en.wikipedia.org/wiki/Preconditioner>`_ must be used to get
-reasonable performance. See section on :ref:`section-preconditioner`
-for more details.
-
-.. _section-schur:
-
-DENSE_SCHUR & SPARSE_SCHUR
---------------------------
-
-While it is possible to use ``SPARSE_NORMAL_CHOLESKY`` to solve bundle
-adjustment problems, they have a special sparsity structure that can
-be exploited to solve the normal equations more efficiently.
-
-Suppose that the bundle adjustment problem consists of :math:`p`
-cameras and :math:`q` points and the variable vector :math:`x` has the
-block structure :math:`x = [y_{1}, ... ,y_{p},z_{1},
-... ,z_{q}]`. Where, :math:`y` and :math:`z` correspond to camera and
-point parameters respectively.  Further, let the camera blocks be of
-size :math:`c` and the point blocks be of size :math:`s` (for most
-problems :math:`c` = :math:`6`--`9` and :math:`s = 3`). Ceres does not
-impose any constancy requirement on these block sizes, but choosing
-them to be constant simplifies the exposition.
-
-The key property of bundle adjustment problems which we will exploit
-is the fact that no term :math:`f_{i}` in :eq:`nonlinsq` includes two
-or more point blocks at the same time.  This in turn implies that the
-matrix :math:`H` is of the form
-
-.. math:: H = \left[ \begin{matrix} B & E\\ E^\top & C \end{matrix} \right]\ ,
-   :label: hblock
-
-where :math:`B \in \mathbb{R}^{pc\times pc}` is a block sparse matrix
-with :math:`p` blocks of size :math:`c\times c` and :math:`C \in
-\mathbb{R}^{qs\times qs}` is a block diagonal matrix with :math:`q` blocks
-of size :math:`s\times s`. :math:`E \in \mathbb{R}^{pc\times qs}` is a
-general block sparse matrix, with a block of size :math:`c\times s`
-for each observation. Let us now block partition :math:`\Delta x =
-[\Delta y,\Delta z]` and :math:`g=[v,w]` to restate :eq:`normal`
-as the block structured linear system
-
-.. math:: \left[ \begin{matrix} B & E\\ E^\top & C \end{matrix}
-                \right]\left[ \begin{matrix} \Delta y \\ \Delta z
-                    \end{matrix} \right] = \left[ \begin{matrix} v\\ w
-                    \end{matrix} \right]\ ,
-   :label: linear2
-
-and apply Gaussian elimination to it. As we noted above, :math:`C` is
-a block diagonal matrix, with small diagonal blocks of size
-:math:`s\times s`.  Thus, calculating the inverse of :math:`C` by
-inverting each of these blocks is cheap. This allows us to eliminate
-:math:`\Delta z` by observing that :math:`\Delta z = C^{-1}(w - E^\top
-\Delta y)`, giving us
-
-.. math:: \left[B - EC^{-1}E^\top\right] \Delta y = v - EC^{-1}w\ .
-   :label: schur
-
-The matrix
-
-.. math:: S = B - EC^{-1}E^\top
-
-is the Schur complement of :math:`C` in :math:`H`. It is also known as
-the *reduced camera matrix*, because the only variables
-participating in :eq:`schur` are the ones corresponding to the
-cameras. :math:`S \in \mathbb{R}^{pc\times pc}` is a block structured
-symmetric positive definite matrix, with blocks of size :math:`c\times
-c`. The block :math:`S_{ij}` corresponding to the pair of images
-:math:`i` and :math:`j` is non-zero if and only if the two images
-observe at least one common point.
-
-
-Now :eq:`linear2` can be solved by first forming :math:`S`, solving
-for :math:`\Delta y`, and then back-substituting :math:`\Delta y` to
-obtain the value of :math:`\Delta z`.  Thus, the solution of what was
-an :math:`n\times n`, :math:`n=pc+qs` linear system is reduced to the
-inversion of the block diagonal matrix :math:`C`, a few matrix-matrix
-and matrix-vector multiplies, and the solution of block sparse
-:math:`pc\times pc` linear system :eq:`schur`.  For almost all
-problems, the number of cameras is much smaller than the number of
-points, :math:`p \ll q`, thus solving :eq:`schur` is significantly
-cheaper than solving :eq:`linear2`. This is the *Schur complement
-trick* [Brown]_.
-
-This still leaves open the question of solving :eq:`schur`. As we
-discussed when considering the exact solution of the normal equations
-using Cholesky factorization, we have two options.
-
-1. ``DENSE_SCHUR`` - The first is **dense Cholesky factorization**,
-where we store and factor :math:`S` as a dense matrix. This method has
-:math:`O(p^2)` space complexity and :math:`O(p^3)` time complexity and
-is only practical for problems with up to a few hundred cameras.
-
-2. ``SPARSE_SCHUR`` - For large bundle adjustment problems :math:`S`
-is typically a fairly sparse matrix, as most images only see a small
-fraction of the scene. This leads us to the second option: **sparse
-Cholesky factorization** [Davis]_.  Here we store :math:`S` as a
-sparse matrix, use row and column re-ordering algorithms to maximize
-the sparsity of the Cholesky decomposition, and focus their compute
-effort on the non-zero part of the factorization [Davis]_ [Chen]_
-. Sparse direct methods, depending on the exact sparsity structure of
-the Schur complement, allow bundle adjustment algorithms to scenes
-with thousands of cameras.
-
-
-.. _section-iterative_schur:
-
-ITERATIVE_SCHUR
----------------
-
-Another option for bundle adjustment problems is to apply Conjugate
-Gradients to the reduced camera matrix :math:`S` instead of
-:math:`H`. One reason to do this is that :math:`S` is a much smaller
-matrix than :math:`H`, but more importantly, it can be shown that
-:math:`\kappa(S)\leq \kappa(H)` [Agarwal]_.
-
-Ceres implements Conjugate Gradients on :math:`S` as the
-``ITERATIVE_SCHUR`` solver. When the user chooses ``ITERATIVE_SCHUR``
-as the linear solver, Ceres automatically switches from the exact step
-algorithm to an inexact step algorithm.
-
-
-The key computational operation when using Conjuagate Gradients is the
-evaluation of the matrix vector product :math:`Sx` for an arbitrary
-vector :math:`x`. Because PCG only needs access to :math:`S` via its
-product with a vector, one way to evaluate :math:`Sx` is to observe
-that
-
-.. math::  x_1 &= E^\top x\\
-           x_2 &= C^{-1} x_1\\
-           x_3 &= Ex_2\\
-           x_4 &= Bx\\
-           Sx &= x_4 - x_3
-   :label: schurtrick1
-
-Thus, we can run Conjugate Gradients on :math:`S` with the same
-computational effort per iteration as Conjugate Gradients on
-:math:`H`, while reaping the benefits of a more powerful
-preconditioner. In fact, we do not even need to compute :math:`H`,
-:eq:`schurtrick1` can be implemented using just the columns of
-:math:`J`.
-
-Equation :eq:`schurtrick1` is closely related to *Domain Decomposition
-methods* for solving large linear systems that arise in structural
-engineering and partial differential equations. In the language of
-Domain Decomposition, each point in a bundle adjustment problem is a
-domain, and the cameras form the interface between these domains. The
-iterative solution of the Schur complement then falls within the
-sub-category of techniques known as Iterative Sub-structuring [Saad]_
-[Mathew]_.
-
-While in most cases the above method for evaluating :math:`Sx` is the
-way to go, for some problems it is better to compute the Schur
-complemenent :math:`S` explicitly and then run Conjugate Gradients on
-it. This can be done by settin
-``Solver::Options::use_explicit_schur_complement`` to ``true``. This
-option can only be used with the ``SCHUR_JACOBI`` preconditioner.
-
-
-.. _section-schur_power_series_expansion:
-
-SCHUR_POWER_SERIES_EXPANSION
-----------------------------
-
-It can be shown that the inverse of the Schur complement can be
-written as an infinite power-series [Weber]_ [Zheng]_:
-
-.. math:: S      &= B - EC^{-1}E^\top\\
-	         &= B(I - B^{-1}EC^{-1}E^\top)\\
-	  S^{-1} &= (I - B^{-1}EC^{-1}E^\top)^{-1} B^{-1}\\
-	         & = \sum_{i=0}^\infty \left(B^{-1}EC^{-1}E^\top\right)^{i} B^{-1}
-
-As a result a truncated version of this power series expansion can be
-used to approximate the inverse and therefore the solution to
-:eq:`schur`. Ceres allows the user to use Schur power series expansion
-in three ways.
-
-1. As a linear solver. This is what [Weber]_ calls **Power Bundle
-   Adjustment** and corresponds to using the truncated power series to
-   approximate the inverse of the Schur complement. This is done by
-   setting the following options.
-
-   .. code-block:: c++
-
-      Solver::Options::linear_solver_type = ITERATIVE_SCHUR
-      Solver::Options::preconditioner_type = IDENTITY
-      Solver::Options::use_spse_initialization = true
-      Solver::Options::max_linear_solver_iterations = 0;
-
-      // The following two settings are worth tuning for your application.
-      Solver::Options::max_num_spse_iterations = 5;
-      Solver::Options::spse_tolerance = 0.1;
-
-
-2. As a preconditioner for ``ITERATIVE_SCHUR``. Any method for
-   approximating the inverse of a matrix can also be used as a
-   preconditioner. This is enabled by setting the following options.
-
-   .. code-block:: c++
-
-      Solver::Options::linear_solver_type = ITERATIVE_SCHUR
-      Solver::Options::preconditioner_type = SCHUR_POWER_SERIES_EXPANSION;
-      Solver::Options::use_spse_initialization = false;
-
-      // This is worth tuning for your application.
-      Solver::Options::max_num_spse_iterations = 5;
-
-
-3. As initialization for ``ITERATIIVE_SCHUR`` with any
-   preconditioner. This is a combination of the above two, where the
-   Schur Power Series Expansion
-
-   .. code-block:: c++
-
-      Solver::Options::linear_solver_type = ITERATIVE_SCHUR
-      Solver::Options::preconditioner_type = ... // Preconditioner of your choice.
-      Solver::Options::use_spse_initialization = true
-      Solver::Options::max_linear_solver_iterations = 0;
-
-      // The following two settings are worth tuning for your application.
-      Solver::Options::max_num_spse_iterations = 5;
-      // This only affects the initialization but not the preconditioner.
-      Solver::Options::spse_tolerance = 0.1;
-
-
-.. _section-mixed-precision:
-
-Mixed Precision Solves
-======================
-
-Generally speaking Ceres Solver does all its arithmetic in double
-precision. Sometimes though, one can use single precision arithmetic
-to get substantial speedups. Currently, for linear solvers that
-perform Cholesky factorization (sparse or dense) the user has the
-option cast the linear system to single precision and then use
-single precision Cholesky factorization routines to solve the
-resulting linear system. This can be enabled by setting
-:member:`Solver::Options::use_mixed_precision_solves` to ``true``.
-
-Depending on the conditioning of the problem, the use of single
-precision factorization may lead to some loss of accuracy. Some of
-this accuracy can be recovered by performing `Iterative Refinement
-<https://en.wikipedia.org/wiki/Iterative_refinement>`_. The number of
-iterations of iterative refinement are controlled by
-:member:`Solver::Options::max_num_refinement_iterations`. The default
-value of this parameter is zero, which means if
-:member:`Solver::Options::use_mixed_precision_solves` is ``true``,
-then no iterative refinement is performed. Usually 2-3 refinement
-iterations are enough.
-
-Mixed precision solves are available in the following linear solver
-configurations:
-
-1. ``DENSE_NORMAL_CHOLESKY`` + ``EIGEN``/ ``LAPACK`` / ``CUDA``.
-2. ``DENSE_SCHUR`` + ``EIGEN``/ ``LAPACK`` / ``CUDA``.
-3. ``SPARSE_NORMAL_CHOLESKY`` + ``EIGEN_SPARSE`` / ``ACCELERATE_SPARSE``
-4. ``SPARSE_SCHUR`` + ``EIGEN_SPARSE`` / ``ACCELERATE_SPARSE``
-
-Mixed precision solves area not available when using ``SUITE_SPARSE``
-as the sparse linear algebra backend because SuiteSparse/CHOLMOD does
-not support single precision solves.
-
-.. _section-preconditioner:
-
-Preconditioners
-===============
-
-The convergence rate of Conjugate Gradients for solving :eq:`normal`
-depends on the distribution of eigenvalues of :math:`H` [Saad]_. A
-useful upper bound is :math:`\sqrt{\kappa(H)}`, where,
-:math:`\kappa(H)` is the condition number of the matrix :math:`H`. For
-most non-linear least squares problems, :math:`\kappa(H)` is high and
-a direct application of Conjugate Gradients to :eq:`normal` results in
-extremely poor performance.
-
-The solution to this problem is to replace :eq:`normal` with a
-*preconditioned* system.  Given a linear system, :math:`Ax =b` and a
-preconditioner :math:`M` the preconditioned system is given by
-:math:`M^{-1}Ax = M^{-1}b`. The resulting algorithm is known as
-Preconditioned Conjugate Gradients algorithm (PCG) and its worst case
-complexity now depends on the condition number of the *preconditioned*
-matrix :math:`\kappa(M^{-1}A)`.
-
-The computational cost of using a preconditioner :math:`M` is the cost
-of computing :math:`M` and evaluating the product :math:`M^{-1}y` for
-arbitrary vectors :math:`y`. Thus, there are two competing factors to
-consider: How much of :math:`H`'s structure is captured by :math:`M`
-so that the condition number :math:`\kappa(HM^{-1})` is low, and the
-computational cost of constructing and using :math:`M`.  The ideal
-preconditioner would be one for which :math:`\kappa(M^{-1}A)
-=1`. :math:`M=A` achieves this, but it is not a practical choice, as
-applying this preconditioner would require solving a linear system
-equivalent to the unpreconditioned problem.  It is usually the case
-that the more information :math:`M` has about :math:`H`, the more
-expensive it is use. For example, Incomplete Cholesky factorization
-based preconditioners have much better convergence behavior than the
-Jacobi preconditioner, but are also much more expensive.
-
-For a survey of the state of the art in preconditioning linear least
-squares problems with general sparsity structure see [GouldScott]_.
-
-Ceres Solver comes with an number of preconditioners suited for
-problems with general sparsity as well as the special sparsity
-structure encountered in bundle adjustment problems.
-
-IDENTITY
---------
-
-This is equivalent to using an identity matrix as a preconditioner,
-i.e. no preconditioner at all.
-
-
-JACOBI
-------
-
-The simplest of all preconditioners is the diagonal or Jacobi
-preconditioner, i.e., :math:`M=\operatorname{diag}(A)`, which for
-block structured matrices like :math:`H` can be generalized to the
-block Jacobi preconditioner. The ``JACOBI`` preconditioner in Ceres
-when used with :ref:`section-cgnr` refers to the block diagonal of
-:math:`H` and when used with :ref:`section-iterative_schur` refers to
-the block diagonal of :math:`B` [Mandel]_.
-
-For detailed performance data about the performance of ``JACOBI`` on
-bundle adjustment problems see [Agarwal]_.
-
-
-SCHUR_JACOBI
-------------
-
-Another obvious choice for :ref:`section-iterative_schur` is the block
-diagonal of the Schur complement matrix :math:`S`, i.e, the block
-Jacobi preconditioner for :math:`S`. In Ceres we refer to it as the
-``SCHUR_JACOBI`` preconditioner.
-
-
-For detailed performance data about the performance of
-``SCHUR_JACOBI`` on bundle adjustment problems see [Agarwal]_.
-
-
-CLUSTER_JACOBI and CLUSTER_TRIDIAGONAL
---------------------------------------
-
-For bundle adjustment problems arising in reconstruction from
-community photo collections, more effective preconditioners can be
-constructed by analyzing and exploiting the camera-point visibility
-structure of the scene.
-
-The key idea is to cluster the cameras based on the visibility
-structure of the scene. The similarity between a pair of cameras
-:math:`i` and :math:`j` is given by:
-
-  .. math:: S_{ij} = \frac{|V_i \cap V_j|}{|V_i| |V_j|}
-
-Here :math:`V_i` is the set of scene points visible in camera
-:math:`i`. This idea was first exploited by [KushalAgarwal]_ to create
-the ``CLUSTER_JACOBI`` and the ``CLUSTER_TRIDIAGONAL`` preconditioners
-which Ceres implements.
-
-The performance of these two preconditioners depends on the speed and
-clustering quality of the clustering algorithm used when building the
-preconditioner. In the original paper, [KushalAgarwal]_ used the
-Canonical Views algorithm [Simon]_, which while producing high quality
-clusterings can be quite expensive for large graphs. So, Ceres
-supports two visibility clustering algorithms - ``CANONICAL_VIEWS``
-and ``SINGLE_LINKAGE``. The former is as the name implies Canonical
-Views algorithm of [Simon]_. The latter is the the classic `Single
-Linkage Clustering
-<https://en.wikipedia.org/wiki/Single-linkage_clustering>`_
-algorithm. The choice of clustering algorithm is controlled by
-:member:`Solver::Options::visibility_clustering_type`.
-
-SCHUR_POWER_SERIES_EXPANSION
-----------------------------
-
-As explained in :ref:`section-schur_power_series_expansion`, the Schur
-complement matrix admits a power series expansion and a truncated
-version of this power series can be used as a preconditioner for
-``ITERATIVE_SCHUR``. When used as a preconditioner
-:member:`Solver::Options::max_num_spse_iterations` controls the number
-of terms in the power series that are used.
-
-
-SUBSET
-------
-
-This is a  preconditioner for problems with general  sparsity. Given a
-subset  of residual  blocks of  a problem,  it uses  the corresponding
-subset  of the  rows of  the  Jacobian to  construct a  preconditioner
-[Dellaert]_.
-
-Suppose the Jacobian :math:`J` has been horizontally partitioned as
-
-  .. math:: J = \begin{bmatrix} P \\ Q \end{bmatrix}
-
-Where, :math:`Q` is the set of rows corresponding to the residual
-blocks in
-:member:`Solver::Options::residual_blocks_for_subset_preconditioner`. The
-preconditioner is the matrix :math:`(Q^\top Q)^{-1}`.
-
-The efficacy of the preconditioner depends on how well the matrix
-:math:`Q` approximates :math:`J^\top J`, or how well the chosen
-residual blocks approximate the full problem.
-
-This preconditioner is NOT available when running ``CGNR`` using
-``CUDA``.
-
-.. _section-ordering:
-
-Ordering
-========
-
-The order in which variables are eliminated in a linear solver can
-have a significant of impact on the efficiency and accuracy of the
-method. For example when doing sparse Cholesky factorization, there
-are matrices for which a good ordering will give a Cholesky factor
-with :math:`O(n)` storage, whereas a bad ordering will result in an
-completely dense factor.
-
-Ceres allows the user to provide varying amounts of hints to the
-solver about the variable elimination ordering to use. This can range
-from no hints, where the solver is free to decide the best possible
-ordering based on the user's choices like the linear solver being
-used, to an exact order in which the variables should be eliminated,
-and a variety of possibilities in between.
-
-The simplest thing to do is to just set
-:member:`Solver::Options::linear_solver_ordering_type` to ``AMD``
-(default) or ``NESDIS`` based on your understanding of the problem or
-empirical testing.
-
-
-More information can be commmuniucated by using an instance
-:class:`ParameterBlockOrdering` class.
-
-Formally an ordering is an ordered partitioning of the
-parameter blocks, i.e, each parameter block belongs to exactly
-one group, and each group has a unique non-negative integer
-associated with it, that determines its order in the set of
-groups.
-
-e.g. Consider the linear system
-
-.. math::
-   x + y &= 3 \\
-   2x + 3y &= 7
-
-There are two ways in which it can be solved. First eliminating
-:math:`x` from the two equations, solving for :math:`y` and then back
-substituting for :math:`x`, or first eliminating :math:`y`, solving
-for :math:`x` and back substituting for :math:`y`. The user can
-construct three orderings here.
-
-1. :math:`\{0: x\}, \{1: y\}` - eliminate :math:`x` first.
-2. :math:`\{0: y\}, \{1: x\}` - eliminate :math:`y` first.
-3. :math:`\{0: x, y\}` - Solver gets to decide the elimination order.
-
-Thus, to have Ceres determine the ordering automatically, put all the
-variables in group 0 and to control the ordering for every variable,
-create groups :math:`0 \dots N-1`, one per variable, in the desired
-order.
-
-``linear_solver_ordering == nullptr`` and an ordering where all the
-parameter blocks are in one elimination group mean the same thing -
-the solver is free to choose what it thinks is the best elimination
-ordering using the ordering algorithm (specified using
-:member:`Solver::Options::linear_solver_ordering_type`). Therefore in
-the following we will only consider the case where
-``linear_solver_ordering != nullptr``.
-
-The exact interpretation of the ``linear_solver_ordering`` depends on
-the values of :member:`Solver::Options::linear_solver_ordering_type`,
-:member:`Solver::Options::linear_solver_type`,
-:member:`Solver::Options::preconditioner_type` and
-:member:`Solver::Options::sparse_linear_algebra_library_type` as we will
-explain below.
-
-Bundle Adjustment
------------------
-
-If the user is using one of the Schur solvers (``DENSE_SCHUR``,
-``SPARSE_SCHUR``, ``ITERATIVE_SCHUR``) and chooses to specify an
-ordering, it must have one important property. The lowest numbered
-elimination group must form an independent set in the graph
-corresponding to the Hessian, or in other words, no two parameter
-blocks in the first elimination group should co-occur in the same
-residual block. For the best performance, this elimination group
-should be as large as possible. For standard bundle adjustment
-problems, this corresponds to the first elimination group containing
-all the 3d points, and the second containing the parameter blocks for
-all the cameras.
-
-If the user leaves the choice to Ceres, then the solver uses an
-approximate maximum independent set algorithm to identify the first
-elimination group [LiSaad]_.
-
-``sparse_linear_algebra_library_type = SUITE_SPARSE``
------------------------------------------------------
-
-**linear_solver_ordering_type = AMD**
-
-A constrained Approximate Minimum Degree (CAMD) ordering is used where
-the parameter blocks in the lowest numbered group are eliminated
-first, and then the parameter blocks in the next lowest numbered group
-and so on. Within each group, CAMD is free to order the parameter blocks
-as it chooses.
-
-**linear_solver_ordering_type = NESDIS**
-
-a. ``linear_solver_type = SPARSE_NORMAL_CHOLESKY`` or
-   ``linear_solver_type = CGNR`` and ``preconditioner_type = SUBSET``
-
-   The value of ``linear_solver_ordering`` is ignored and a Nested
-   Dissection algorithm is used to compute a fill reducing ordering.
-
-b. ``linear_solver_type = SPARSE_SCHUR/DENSE_SCHUR/ITERATIVE_SCHUR``
-
-   ONLY the lowest group are used to compute the Schur complement, and
-   Nested Dissection is used to compute a fill reducing ordering for
-   the Schur Complement (or its preconditioner).
-
-``sparse_linear_algebra_library_type = EIGEN_SPARSE/ACCELERATE_SPARSE``
------------------------------------------------------------------------
-
-a. ``linear_solver_type = SPARSE_NORMAL_CHOLESKY`` or
-   ``linear_solver_type = CGNR`` and ``preconditioner_type = SUBSET``
-
-   The value of ``linear_solver_ordering`` is ignored and ``AMD`` or
-   ``NESDIS`` is used to compute a fill reducing ordering as requested
-   by the user.
-
-b. ``linear_solver_type = SPARSE_SCHUR/DENSE_SCHUR/ITERATIVE_SCHUR``
-
-   ONLY the lowest group are used to compute the Schur complement, and
-   ``AMD`` or ``NESID`` is used to compute a fill reducing ordering
-   for the Schur Complement (or its preconditioner) as requested by
-   the user.
-
-
-.. _section-solver-options:
-
-:class:`Solver::Options`
-========================
-
-.. class:: Solver::Options
-
-   :class:`Solver::Options` controls the overall behavior of the
-   solver. We list the various settings and their default values below.
-
-.. function:: bool Solver::Options::IsValid(std::string* error) const
-
-   Validate the values in the options struct and returns true on
-   success. If there is a problem, the method returns false with
-   ``error`` containing a textual description of the cause.
-
-.. member:: MinimizerType Solver::Options::minimizer_type
-
-   Default: ``TRUST_REGION``
-
-   Choose between ``LINE_SEARCH`` and ``TRUST_REGION`` algorithms. See
-   :ref:`section-trust-region-methods` and
-   :ref:`section-line-search-methods` for more details.
-
-.. member:: LineSearchDirectionType Solver::Options::line_search_direction_type
-
-   Default: ``LBFGS``
-
-   Choices are ``STEEPEST_DESCENT``, ``NONLINEAR_CONJUGATE_GRADIENT``,
-   ``BFGS`` and ``LBFGS``.
-
-   See :ref:`section-line-search-methods` for more details.
-
-.. member:: LineSearchType Solver::Options::line_search_type
-
-   Default: ``WOLFE``
-
-   Choices are ``ARMIJO`` and ``WOLFE`` (strong Wolfe conditions).
-   Note that in order for the assumptions underlying the ``BFGS`` and
-   ``LBFGS`` line search direction algorithms to be satisfied, the
-   ``WOLFE`` line search must be used.
-
-   See :ref:`section-line-search-methods` for more details.
-
-.. member:: NonlinearConjugateGradientType Solver::Options::nonlinear_conjugate_gradient_type
-
-   Default: ``FLETCHER_REEVES``
-
-   Choices are ``FLETCHER_REEVES``, ``POLAK_RIBIERE`` and
-   ``HESTENES_STIEFEL``.
-
-.. member:: int Solver::Options::max_lbfgs_rank
-
-   Default: ``20``
-
-   The LBFGS hessian approximation is a low rank approximation to
-   the inverse of the Hessian matrix. The rank of the
-   approximation determines (linearly) the space and time
-   complexity of using the approximation. Higher the rank, the
-   better is the quality of the approximation. The increase in
-   quality is however is bounded for a number of reasons.
-
-   1. The method only uses secant information and not actual
-   derivatives.
-   2. The Hessian approximation is constrained to be positive
-   definite.
-
-   So increasing this rank to a large number will cost time and
-   space complexity without the corresponding increase in solution
-   quality. There are no hard and fast rules for choosing the
-   maximum rank. The best choice usually requires some problem
-   specific experimentation.
-
-   For more theoretical and implementation details of the LBFGS
-   method, please see [Nocedal]_.
-
-.. member:: bool Solver::Options::use_approximate_eigenvalue_bfgs_scaling
-
-   Default: ``false``
-
-   As part of the ``BFGS`` update step / ``LBFGS`` right-multiply
-   step, the initial inverse Hessian approximation is taken to be the
-   Identity.  However, [Oren]_ showed that using instead :math:`I *
-   \gamma`, where :math:`\gamma` is a scalar chosen to approximate an
-   eigenvalue of the true inverse Hessian can result in improved
-   convergence in a wide variety of cases.  Setting
-   ``use_approximate_eigenvalue_bfgs_scaling`` to true enables this
-   scaling in ``BFGS`` (before first iteration) and ``LBFGS`` (at each
-   iteration).
-
-   Precisely, approximate eigenvalue scaling equates to
-
-   .. math:: \gamma = \frac{y_k' s_k}{y_k' y_k}
-
-   With:
-
-  .. math:: y_k = \nabla f_{k+1} - \nabla f_k
-  .. math:: s_k = x_{k+1} - x_k
-
-  Where :math:`f()` is the line search objective and :math:`x` the
-  vector of parameter values [NocedalWright]_.
-
-  It is important to note that approximate eigenvalue scaling does
-  **not** *always* improve convergence, and that it can in fact
-  *significantly* degrade performance for certain classes of problem,
-  which is why it is disabled by default.  In particular it can
-  degrade performance when the sensitivity of the problem to different
-  parameters varies significantly, as in this case a single scalar
-  factor fails to capture this variation and detrimentally downscales
-  parts of the Jacobian approximation which correspond to
-  low-sensitivity parameters. It can also reduce the robustness of the
-  solution to errors in the Jacobians.
-
-.. member:: LineSearchIterpolationType Solver::Options::line_search_interpolation_type
-
-   Default: ``CUBIC``
-
-   Degree of the polynomial used to approximate the objective
-   function. Valid values are ``BISECTION``, ``QUADRATIC`` and
-   ``CUBIC``.
-
-.. member:: double Solver::Options::min_line_search_step_size
-
-   Default: ``1e-9``
-
-   The line search terminates if:
-
-   .. math:: \|\Delta x_k\|_\infty < \text{min_line_search_step_size}
-
-   where :math:`\|\cdot\|_\infty` refers to the max norm, and
-   :math:`\Delta x_k` is the step change in the parameter values at
-   the :math:`k`-th iteration.
-
-.. member:: double Solver::Options::line_search_sufficient_function_decrease
-
-   Default: ``1e-4``
-
-   Solving the line search problem exactly is computationally
-   prohibitive. Fortunately, line search based optimization algorithms
-   can still guarantee convergence if instead of an exact solution,
-   the line search algorithm returns a solution which decreases the
-   value of the objective function sufficiently. More precisely, we
-   are looking for a step size s.t.
-
-   .. math:: f(\text{step_size}) \le f(0) + \text{sufficient_decrease} * [f'(0) * \text{step_size}]
-
-   This condition is known as the Armijo condition.
-
-.. member:: double Solver::Options::max_line_search_step_contraction
-
-   Default: ``1e-3``
-
-   In each iteration of the line search,
-
-   .. math:: \text{new_step_size} >= \text{max_line_search_step_contraction} * \text{step_size}
-
-   Note that by definition, for contraction:
-
-   .. math:: 0 < \text{max_step_contraction} < \text{min_step_contraction} < 1
-
-.. member:: double Solver::Options::min_line_search_step_contraction
-
-   Default: ``0.6``
-
-   In each iteration of the line search,
-
-   .. math:: \text{new_step_size} <= \text{min_line_search_step_contraction} * \text{step_size}
-
-   Note that by definition, for contraction:
-
-   .. math:: 0 < \text{max_step_contraction} < \text{min_step_contraction} < 1
-
-.. member:: int Solver::Options::max_num_line_search_step_size_iterations
-
-   Default: ``20``
-
-   Maximum number of trial step size iterations during each line
-   search, if a step size satisfying the search conditions cannot be
-   found within this number of trials, the line search will stop.
-
-   The minimum allowed value is 0 for trust region minimizer and 1
-   otherwise. If 0 is specified for the trust region minimizer, then
-   line search will not be used when solving constrained optimization
-   problems.
-
-   As this is an 'artificial' constraint (one imposed by the user, not
-   the underlying math), if ``WOLFE`` line search is being used, *and*
-   points satisfying the Armijo sufficient (function) decrease
-   condition have been found during the current search (in :math:`<=`
-   ``max_num_line_search_step_size_iterations``).  Then, the step size
-   with the lowest function value which satisfies the Armijo condition
-   will be returned as the new valid step, even though it does *not*
-   satisfy the strong Wolfe conditions.  This behaviour protects
-   against early termination of the optimizer at a sub-optimal point.
-
-.. member:: int Solver::Options::max_num_line_search_direction_restarts
-
-   Default: ``5``
-
-   Maximum number of restarts of the line search direction algorithm
-   before terminating the optimization. Restarts of the line search
-   direction algorithm occur when the current algorithm fails to
-   produce a new descent direction. This typically indicates a
-   numerical failure, or a breakdown in the validity of the
-   approximations used.
-
-.. member:: double Solver::Options::line_search_sufficient_curvature_decrease
-
-   Default: ``0.9``
-
-   The strong Wolfe conditions consist of the Armijo sufficient
-   decrease condition, and an additional requirement that the
-   step size be chosen s.t. the *magnitude* ('strong' Wolfe
-   conditions) of the gradient along the search direction
-   decreases sufficiently. Precisely, this second condition
-   is that we seek a step size s.t.
-
-   .. math:: \|f'(\text{step_size})\| <= \text{sufficient_curvature_decrease} * \|f'(0)\|
-
-   Where :math:`f()` is the line search objective and :math:`f'()` is the derivative
-   of :math:`f` with respect to the step size: :math:`\frac{d f}{d~\text{step size}}`.
-
-.. member:: double Solver::Options::max_line_search_step_expansion
-
-   Default: ``10.0``
-
-   During the bracketing phase of a Wolfe line search, the step size
-   is increased until either a point satisfying the Wolfe conditions
-   is found, or an upper bound for a bracket containing a point
-   satisfying the conditions is found.  Precisely, at each iteration
-   of the expansion:
-
-   .. math:: \text{new_step_size} <= \text{max_step_expansion} * \text{step_size}
-
-   By definition for expansion
-
-   .. math:: \text{max_step_expansion} > 1.0
-
-.. member:: TrustRegionStrategyType Solver::Options::trust_region_strategy_type
-
-   Default: ``LEVENBERG_MARQUARDT``
-
-   The trust region step computation algorithm used by
-   Ceres. Currently ``LEVENBERG_MARQUARDT`` and ``DOGLEG`` are the two
-   valid choices. See :ref:`section-levenberg-marquardt` and
-   :ref:`section-dogleg` for more details.
-
-.. member:: DoglegType Solver::Options::dogleg_type
-
-   Default: ``TRADITIONAL_DOGLEG``
-
-   Ceres supports two different dogleg strategies.
-   ``TRADITIONAL_DOGLEG`` method by Powell and the ``SUBSPACE_DOGLEG``
-   method described by [ByrdSchnabel]_ .  See :ref:`section-dogleg`
-   for more details.
-
-.. member:: bool Solver::Options::use_nonmonotonic_steps
-
-   Default: ``false``
-
-   Relax the requirement that the trust-region algorithm take strictly
-   decreasing steps. See :ref:`section-non-monotonic-steps` for more
-   details.
-
-.. member:: int Solver::Options::max_consecutive_nonmonotonic_steps
-
-   Default: ``5``
-
-   The window size used by the step selection algorithm to accept
-   non-monotonic steps.
-
-.. member:: int Solver::Options::max_num_iterations
-
-   Default: ``50``
-
-   Maximum number of iterations for which the solver should run.
-
-.. member:: double Solver::Options::max_solver_time_in_seconds
-
-   Default: ``1e9``
-
-   Maximum amount of time for which the solver should run.
-
-.. member:: int Solver::Options::num_threads
-
-   Default: ``1``
-
-   Number of threads used by Ceres to evaluate the Jacobian.
-
-.. member::  double Solver::Options::initial_trust_region_radius
-
-   Default: ``1e4``
-
-   The size of the initial trust region. When the
-   ``LEVENBERG_MARQUARDT`` strategy is used, the reciprocal of this
-   number is the initial regularization parameter.
-
-.. member:: double Solver::Options::max_trust_region_radius
-
-   Default: ``1e16``
-
-   The trust region radius is not allowed to grow beyond this value.
-
-.. member:: double Solver::Options::min_trust_region_radius
-
-   Default: ``1e-32``
-
-   The solver terminates, when the trust region becomes smaller than
-   this value.
-
-.. member:: double Solver::Options::min_relative_decrease
-
-   Default: ``1e-3``
-
-   Lower threshold for relative decrease before a trust-region step is
-   accepted.
-
-.. member:: double Solver::Options::min_lm_diagonal
-
-   Default: ``1e-6``
-
-   The ``LEVENBERG_MARQUARDT`` strategy, uses a diagonal matrix to
-   regularize the trust region step. This is the lower bound on
-   the values of this diagonal matrix.
-
-.. member:: double Solver::Options::max_lm_diagonal
-
-   Default:  ``1e32``
-
-   The ``LEVENBERG_MARQUARDT`` strategy, uses a diagonal matrix to
-   regularize the trust region step. This is the upper bound on
-   the values of this diagonal matrix.
-
-.. member:: int Solver::Options::max_num_consecutive_invalid_steps
-
-   Default: ``5``
-
-   The step returned by a trust region strategy can sometimes be
-   numerically invalid, usually because of conditioning
-   issues. Instead of crashing or stopping the optimization, the
-   optimizer can go ahead and try solving with a smaller trust
-   region/better conditioned problem. This parameter sets the number
-   of consecutive retries before the minimizer gives up.
-
-.. member:: double Solver::Options::function_tolerance
-
-   Default: ``1e-6``
-
-   Solver terminates if
-
-   .. math:: \frac{|\Delta \text{cost}|}{\text{cost}} <= \text{function_tolerance}
-
-   where, :math:`\Delta \text{cost}` is the change in objective
-   function value (up or down) in the current iteration of
-   Levenberg-Marquardt.
-
-.. member:: double Solver::Options::gradient_tolerance
-
-   Default: ``1e-10``
-
-   Solver terminates if
-
-   .. math:: \|x - \Pi \boxplus(x, -g(x))\|_\infty <= \text{gradient_tolerance}
-
-   where :math:`\|\cdot\|_\infty` refers to the max norm, :math:`\Pi`
-   is projection onto the bounds constraints and :math:`\boxplus` is
-   Plus operation for the overall manifold associated with the
-   parameter vector.
-
-.. member:: double Solver::Options::parameter_tolerance
-
-   Default: ``1e-8``
-
-   Solver terminates if
-
-   .. math:: \|\Delta x\| <= (\|x\| + \text{parameter_tolerance}) * \text{parameter_tolerance}
-
-   where :math:`\Delta x` is the step computed by the linear solver in
-   the current iteration.
-
-.. member:: LinearSolverType Solver::Options::linear_solver_type
-
-   Default: ``SPARSE_NORMAL_CHOLESKY`` / ``DENSE_QR``
-
-   Type of linear solver used to compute the solution to the linear
-   least squares problem in each iteration of the Levenberg-Marquardt
-   algorithm. If Ceres is built with support for ``SuiteSparse`` or
-   ``Accelerate`` or ``Eigen``'s sparse Cholesky factorization, the
-   default is ``SPARSE_NORMAL_CHOLESKY``, it is ``DENSE_QR``
-   otherwise.
-
-.. member:: PreconditionerType Solver::Options::preconditioner_type
-
-   Default: ``JACOBI``
-
-   The preconditioner used by the iterative linear solver. The default
-   is the block Jacobi preconditioner. Valid values are (in increasing
-   order of complexity) ``IDENTITY``, ``JACOBI``, ``SCHUR_JACOBI``,
-   ``CLUSTER_JACOBI``, ``CLUSTER_TRIDIAGONAL``, ``SUBSET`` and
-   ``SCHUR_POWER_SERIES_EXPANSION``. See :ref:`section-preconditioner`
-   for more details.
-
-.. member:: VisibilityClusteringType Solver::Options::visibility_clustering_type
-
-   Default: ``CANONICAL_VIEWS``
-
-   Type of clustering algorithm to use when constructing a visibility
-   based preconditioner. The original visibility based preconditioning
-   paper and implementation only used the canonical views algorithm.
-
-   This algorithm gives high quality results but for large dense
-   graphs can be particularly expensive. As its worst case complexity
-   is cubic in size of the graph.
-
-   Another option is to use ``SINGLE_LINKAGE`` which is a simple
-   thresholded single linkage clustering algorithm that only pays
-   attention to tightly coupled blocks in the Schur complement. This
-   is a fast algorithm that works well.
-
-   The optimal choice of the clustering algorithm depends on the
-   sparsity structure of the problem, but generally speaking we
-   recommend that you try ``CANONICAL_VIEWS`` first and if it is too
-   expensive try ``SINGLE_LINKAGE``.
-
-.. member:: std::unordered_set<ResidualBlockId> Solver::Options::residual_blocks_for_subset_preconditioner
-
-   ``SUBSET`` preconditioner is a preconditioner for problems with
-   general sparsity. Given a subset of residual blocks of a problem,
-   it uses the corresponding subset of the rows of the Jacobian to
-   construct a preconditioner.
-
-   Suppose the Jacobian :math:`J` has been horizontally partitioned as
-
-       .. math:: J = \begin{bmatrix} P \\ Q \end{bmatrix}
-
-   Where, :math:`Q` is the set of rows corresponding to the residual
-   blocks in
-   :member:`Solver::Options::residual_blocks_for_subset_preconditioner`. The
-   preconditioner is the matrix :math:`(Q^\top Q)^{-1}`.
-
-   The efficacy of the preconditioner depends on how well the matrix
-   :math:`Q` approximates :math:`J^\top J`, or how well the chosen
-   residual blocks approximate the full problem.
-
-   If ``Solver::Options::preconditioner_type == SUBSET``, then
-   ``residual_blocks_for_subset_preconditioner`` must be non-empty.
-
-.. member:: DenseLinearAlgebraLibrary Solver::Options::dense_linear_algebra_library_type
-
-   Default: ``EIGEN``
-
-   Ceres supports using multiple dense linear algebra libraries for
-   dense matrix factorizations. Currently ``EIGEN``, ``LAPACK`` and
-   ``CUDA`` are the valid choices. ``EIGEN`` is always available,
-   ``LAPACK`` refers to the system ``BLAS + LAPACK`` library which may
-   or may not be available. ``CUDA`` refers to Nvidia's GPU based
-   dense linear algebra library which may or may not be available.
-
-   This setting affects the ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY``
-   and ``DENSE_SCHUR`` solvers. For small to moderate sized problem
-   ``EIGEN`` is a fine choice but for large problems, an optimized
-   ``LAPACK + BLAS`` or ``CUDA`` implementation can make a substantial
-   difference in performance.
-
-.. member:: SparseLinearAlgebraLibrary Solver::Options::sparse_linear_algebra_library_type
-
-   Default: The highest available according to: ``SUITE_SPARSE`` >
-   ``ACCELERATE_SPARSE`` > ``EIGEN_SPARSE`` > ``NO_SPARSE``
-
-   Ceres supports the use of three sparse linear algebra libraries,
-   ``SuiteSparse``, which is enabled by setting this parameter to
-   ``SUITE_SPARSE``, ``Acclerate``, which can be selected by setting
-   this parameter to ``ACCELERATE_SPARSE`` and ``Eigen`` which is
-   enabled by setting this parameter to ``EIGEN_SPARSE``.  Lastly,
-   ``NO_SPARSE`` means that no sparse linear solver should be used;
-   note that this is irrespective of whether Ceres was compiled with
-   support for one.
-
-   ``SuiteSparse`` is a sophisticated sparse linear algebra library
-   and should be used in general. On MacOS you may want to use the
-   ``Accelerate`` framework.
-
-   If your needs/platforms prevent you from using ``SuiteSparse``,
-   consider using the sparse linear algebra routines in ``Eigen``. The
-   sparse Cholesky algorithms currently included with ``Eigen`` are
-   not as sophisticated as the ones in ``SuiteSparse`` and
-   ``Accelerate`` and as a result its performance is considerably
-   worse.
-
-.. member:: LinearSolverOrderingType Solver::Options::linear_solver_ordering_type
-
-   Default: ``AMD``
-
-    The order in which variables are eliminated in a linear solver can
-    have a significant impact on the efficiency and accuracy of the
-    method. e.g., when doing sparse Cholesky factorization, there are
-    matrices for which a good ordering will give a Cholesky factor
-    with :math:`O(n)` storage, where as a bad ordering will result in
-    an completely dense factor.
-
-    Sparse direct solvers like ``SPARSE_NORMAL_CHOLESKY`` and
-    ``SPARSE_SCHUR`` use a fill reducing ordering of the columns and
-    rows of the matrix being factorized before computing the numeric
-    factorization.
-
-    This enum controls the type of algorithm used to compute this fill
-    reducing ordering. There is no single algorithm that works on all
-    matrices, so determining which algorithm works better is a matter
-    of empirical experimentation.
-
-.. member:: std::shared_ptr<ParameterBlockOrdering> Solver::Options::linear_solver_ordering
-
-   Default: ``nullptr``
-
-   An instance of the ordering object informs the solver about the
-   desired order in which parameter blocks should be eliminated by the
-   linear solvers.
-
-   If ``nullptr``, the solver is free to choose an ordering that it
-   thinks is best.
-
-   See :ref:`section-ordering` for more details.
-
-.. member:: bool Solver::Options::use_explicit_schur_complement
-
-   Default: ``false``
-
-   Use an explicitly computed Schur complement matrix with
-   ``ITERATIVE_SCHUR``.
-
-   By default this option is disabled and ``ITERATIVE_SCHUR``
-   evaluates evaluates matrix-vector products between the Schur
-   complement and a vector implicitly by exploiting the algebraic
-   expression for the Schur complement.
-
-   The cost of this evaluation scales with the number of non-zeros in
-   the Jacobian.
-
-   For small to medium sized problems there is a sweet spot where
-   computing the Schur complement is cheap enough that it is much more
-   efficient to explicitly compute it and use it for evaluating the
-   matrix-vector products.
-
-   .. NOTE::
-
-     This option can only be used with the ``SCHUR_JACOBI``
-     preconditioner.
-
-.. member:: bool Solver::Options::dynamic_sparsity
-
-   Default: ``false``
-
-   Some non-linear least squares problems are symbolically dense but
-   numerically sparse. i.e. at any given state only a small number of
-   Jacobian entries are non-zero, but the position and number of
-   non-zeros is different depending on the state. For these problems
-   it can be useful to factorize the sparse jacobian at each solver
-   iteration instead of including all of the zero entries in a single
-   general factorization.
-
-   If your problem does not have this property (or you do not know),
-   then it is probably best to keep this false, otherwise it will
-   likely lead to worse performance.
-
-   This setting only affects the `SPARSE_NORMAL_CHOLESKY` solver.
-
-.. member:: bool Solver::Options::use_mixed_precision_solves
-
-   Default: ``false``
-
-   If true, the Gauss-Newton matrix is computed in *double* precision, but
-   its factorization is computed in **single** precision. This can result in
-   significant time and memory savings at the cost of some accuracy in the
-   Gauss-Newton step. Iterative refinement is used to recover some
-   of this accuracy back.
-
-   If ``use_mixed_precision_solves`` is true, we recommend setting
-   ``max_num_refinement_iterations`` to 2-3.
-
-   See :ref:`section-mixed-precision` for more details.
-
-.. member:: int Solver::Options::max_num_refinement_iterations
-
-   Default: ``0``
-
-   Number steps of the iterative refinement process to run when
-   computing the Gauss-Newton step, see
-   :member:`Solver::Options::use_mixed_precision_solves`.
-
-.. member:: int Solver::Options::min_linear_solver_iterations
-
-   Default: ``0``
-
-   Minimum number of iterations used by the linear solver. This only
-   makes sense when the linear solver is an iterative solver, e.g.,
-   ``ITERATIVE_SCHUR`` or ``CGNR``.
-
-.. member:: int Solver::Options::max_linear_solver_iterations
-
-   Default: ``500``
-
-   Minimum number of iterations used by the linear solver. This only
-   makes sense when the linear solver is an iterative solver, e.g.,
-   ``ITERATIVE_SCHUR`` or ``CGNR``.
-
-.. member:: int Solver::Options::max_num_spse_iterations
-
-   Default: `5`
-
-   Maximum number of iterations performed by
-   ``SCHUR_POWER_SERIES_EXPANSION``. Each iteration corresponds to one
-   more term in the power series expansion od the inverse of the Schur
-   complement.  This value controls the maximum number of iterations
-   whether it is used as a preconditioner or just to initialize the
-   solution for ``ITERATIVE_SCHUR``.
-
-.. member:: bool Solver:Options::use_spse_initialization
-
-   Default: ``false``
-
-   Use Schur power series expansion to initialize the solution for
-   ``ITERATIVE_SCHUR``. This option can be set ``true`` regardless of
-   what preconditioner is being used.
-
-.. member:: double Solver::Options::spse_tolerance
-
-   Default: `0.1`
-
-   When ``use_spse_initialization`` is ``true``, this parameter along
-   with ``max_num_spse_iterations`` controls the number of
-   ``SCHUR_POWER_SERIES_EXPANSION`` iterations performed for
-   initialization. It is not used to control the preconditioner.
-
-.. member:: double Solver::Options::eta
-
-   Default: ``1e-1``
-
-   Forcing sequence parameter. The truncated Newton solver uses this
-   number to control the relative accuracy with which the Newton step
-   is computed. This constant is passed to
-   ``ConjugateGradientsSolver`` which uses it to terminate the
-   iterations when
-
-   .. math:: \frac{Q_i - Q_{i-1}}{Q_i} < \frac{\eta}{i}
-
-.. member:: bool Solver::Options::jacobi_scaling
-
-   Default: ``true``
-
-   ``true`` means that the Jacobian is scaled by the norm of its
-   columns before being passed to the linear solver. This improves the
-   numerical conditioning of the normal equations.
-
-.. member:: bool Solver::Options::use_inner_iterations
-
-   Default: ``false``
-
-   Use a non-linear version of a simplified variable projection
-   algorithm. Essentially this amounts to doing a further optimization
-   on each Newton/Trust region step using a coordinate descent
-   algorithm.  For more details, see :ref:`section-inner-iterations`.
-
-   **Note** Inner iterations cannot be used with :class:`Problem`
-   objects that have an :class:`EvaluationCallback` associated with
-   them.
-
-.. member:: std::shared_ptr<ParameterBlockOrdering> Solver::Options::inner_iteration_ordering
-
-   Default: ``nullptr``
-
-   If :member:`Solver::Options::use_inner_iterations` true, then the
-   user has two choices.
-
-   1. Let the solver heuristically decide which parameter blocks to
-      optimize in each inner iteration. To do this, set
-      :member:`Solver::Options::inner_iteration_ordering` to ``nullptr``.
-
-   2. Specify a collection of of ordered independent sets. The lower
-      numbered groups are optimized before the higher number groups
-      during the inner optimization phase. Each group must be an
-      independent set. Not all parameter blocks need to be included in
-      the ordering.
-
-   See :ref:`section-ordering` for more details.
-
-.. member:: double Solver::Options::inner_iteration_tolerance
-
-   Default: ``1e-3``
-
-   Generally speaking, inner iterations make significant progress in
-   the early stages of the solve and then their contribution drops
-   down sharply, at which point the time spent doing inner iterations
-   is not worth it.
-
-   Once the relative decrease in the objective function due to inner
-   iterations drops below ``inner_iteration_tolerance``, the use of
-   inner iterations in subsequent trust region minimizer iterations is
-   disabled.
-
-
-.. member:: LoggingType Solver::Options::logging_type
-
-   Default: ``PER_MINIMIZER_ITERATION``
-
-   Valid values are ``SILENT`` and ``PER_MINIMIZER_ITERATION``.
-
-.. member:: bool Solver::Options::minimizer_progress_to_stdout
-
-   Default: ``false``
-
-   By default the Minimizer's progress is logged to ``STDERR``
-   depending on the ``vlog`` level. If this flag is set to true, and
-   :member:`Solver::Options::logging_type` is not ``SILENT``, the
-   logging output is sent to ``STDOUT``.
-
-   For ``TRUST_REGION_MINIMIZER`` the progress display looks like
-
-   .. code-block:: bash
-
-      iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
-         0  4.185660e+06    0.00e+00    1.09e+08   0.00e+00   0.00e+00  1.00e+04       0    7.59e-02    3.37e-01
-         1  1.062590e+05    4.08e+06    8.99e+06   5.36e+02   9.82e-01  3.00e+04       1    1.65e-01    5.03e-01
-         2  4.992817e+04    5.63e+04    8.32e+06   3.19e+02   6.52e-01  3.09e+04       1    1.45e-01    6.48e-01
-
-   Here
-
-   #. ``cost`` is the value of the objective function.
-   #. ``cost_change`` is the change in the value of the objective
-      function if the step computed in this iteration is accepted.
-   #. ``|gradient|`` is the max norm of the gradient.
-   #. ``|step|`` is the change in the parameter vector.
-   #. ``tr_ratio`` is the ratio of the actual change in the objective
-      function value to the change in the value of the trust
-      region model.
-   #. ``tr_radius`` is the size of the trust region radius.
-   #. ``ls_iter`` is the number of linear solver iterations used to
-      compute the trust region step. For direct/factorization based
-      solvers it is always 1, for iterative solvers like
-      ``ITERATIVE_SCHUR`` it is the number of iterations of the
-      Conjugate Gradients algorithm.
-   #. ``iter_time`` is the time take by the current iteration.
-   #. ``total_time`` is the total time taken by the minimizer.
-
-   For ``LINE_SEARCH_MINIMIZER`` the progress display looks like
-
-   .. code-block:: bash
-
-      0: f: 2.317806e+05 d: 0.00e+00 g: 3.19e-01 h: 0.00e+00 s: 0.00e+00 e:  0 it: 2.98e-02 tt: 8.50e-02
-      1: f: 2.312019e+05 d: 5.79e+02 g: 3.18e-01 h: 2.41e+01 s: 1.00e+00 e:  1 it: 4.54e-02 tt: 1.31e-01
-      2: f: 2.300462e+05 d: 1.16e+03 g: 3.17e-01 h: 4.90e+01 s: 2.54e-03 e:  1 it: 4.96e-02 tt: 1.81e-01
-
-   Here
-
-   #. ``f`` is the value of the objective function.
-   #. ``d`` is the change in the value of the objective function if
-      the step computed in this iteration is accepted.
-   #. ``g`` is the max norm of the gradient.
-   #. ``h`` is the change in the parameter vector.
-   #. ``s`` is the optimal step length computed by the line search.
-   #. ``it`` is the time take by the current iteration.
-   #. ``tt`` is the total time taken by the minimizer.
-
-.. member:: std::vector<int> Solver::Options::trust_region_minimizer_iterations_to_dump
-
-   Default: ``empty``
-
-   List of iterations at which the trust region minimizer should dump
-   the trust region problem. Useful for testing and benchmarking. If
-   ``empty``, no problems are dumped.
-
-.. member:: std::string Solver::Options::trust_region_problem_dump_directory
-
-   Default: ``/tmp``
-
-    Directory to which the problems should be written to. Should be
-    non-empty if
-    :member:`Solver::Options::trust_region_minimizer_iterations_to_dump` is
-    non-empty and
-    :member:`Solver::Options::trust_region_problem_dump_format_type` is not
-    ``CONSOLE``.
-
-.. member:: DumpFormatType Solver::Options::trust_region_problem_dump_format_type
-
-   Default: ``TEXTFILE``
-
-   The format in which trust region problems should be logged when
-   :member:`Solver::Options::trust_region_minimizer_iterations_to_dump`
-   is non-empty.  There are three options:
-
-   * ``CONSOLE`` prints the linear least squares problem in a human
-      readable format to ``stderr``. The Jacobian is printed as a
-      dense matrix. The vectors :math:`D`, :math:`x` and :math:`f` are
-      printed as dense vectors. This should only be used for small
-      problems.
-
-   * ``TEXTFILE`` Write out the linear least squares problem to the
-     directory pointed to by
-     :member:`Solver::Options::trust_region_problem_dump_directory` as
-     text files which can be read into ``MATLAB/Octave``. The Jacobian
-     is dumped as a text file containing :math:`(i,j,s)` triplets, the
-     vectors :math:`D`, `x` and `f` are dumped as text files
-     containing a list of their values.
-
-     A ``MATLAB/Octave`` script called
-     ``ceres_solver_iteration_???.m`` is also output, which can be
-     used to parse and load the problem into memory.
-
-.. member:: bool Solver::Options::check_gradients
-
-   Default: ``false``
-
-   Check all Jacobians computed by each residual block with finite
-   differences. This is expensive since it involves computing the
-   derivative by normal means (e.g. user specified, autodiff, etc),
-   then also computing it using finite differences. The results are
-   compared, and if they differ substantially, the optimization fails
-   and the details are stored in the solver summary.
-
-.. member:: double Solver::Options::gradient_check_relative_precision
-
-   Default: ``1e-8``
-
-   Precision to check for in the gradient checker. If the relative
-   difference between an element in a Jacobian exceeds this number,
-   then the Jacobian for that cost term is dumped.
-
-.. member:: double Solver::Options::gradient_check_numeric_derivative_relative_step_size
-
-   Default: ``1e-6``
-
-   .. NOTE::
-
-      This option only applies to the numeric differentiation used for
-      checking the user provided derivatives when when
-      `Solver::Options::check_gradients` is true. If you are using
-      :class:`NumericDiffCostFunction` and are interested in changing
-      the step size for numeric differentiation in your cost function,
-      please have a look at :class:`NumericDiffOptions`.
-
-   Relative shift used for taking numeric derivatives when
-   `Solver::Options::check_gradients` is `true`.
-
-   For finite differencing, each dimension is evaluated at slightly
-   shifted values, e.g., for forward differences, the numerical
-   derivative is
-
-   .. math::
-
-     \delta &= gradient\_check\_numeric\_derivative\_relative\_step\_size\\
-     \Delta f &= \frac{f((1 + \delta)  x) - f(x)}{\delta x}
-
-   The finite differencing is done along each dimension. The reason to
-   use a relative (rather than absolute) step size is that this way,
-   numeric differentiation works for functions where the arguments are
-   typically large (e.g. :math:`10^9`) and when the values are small
-   (e.g. :math:`10^{-5}`). It is possible to construct *torture cases*
-   which break this finite difference heuristic, but they do not come
-   up often in practice.
-
-.. member:: bool Solver::Options::update_state_every_iteration
-
-   Default: ``false``
-
-   If ``update_state_every_iteration`` is ``true``, then Ceres Solver
-   will guarantee that at the end of every iteration and before any
-   user :class:`IterationCallback` is called, the parameter blocks are
-   updated to the current best solution found by the solver. Thus the
-   IterationCallback can inspect the values of the parameter blocks
-   for purposes of computation, visualization or termination.
-
-   If ``update_state_every_iteration`` is ``false`` then there is no
-   such guarantee, and user provided :class:`IterationCallback` s
-   should not expect to look at the parameter blocks and interpret
-   their values.
-
-.. member:: std::vector<IterationCallback*> Solver::Options::callbacks
-
-   Default: ``empty``
-
-   Callbacks that are executed at the end of each iteration of the
-   minimizer. They are executed in the order that they are
-   specified in this vector.
-
-   By default, parameter blocks are updated only at the end of the
-   optimization, i.e., when the minimizer terminates. This means that
-   by default, if an :class:`IterationCallback` inspects the parameter
-   blocks, they will not see them changing in the course of the
-   optimization.
-
-   To tell Ceres to update the parameter blocks at the end of each
-   iteration and before calling the user's callback, set
-   :member:`Solver::Options::update_state_every_iteration` to
-   ``true``.
-
-   See `examples/iteration_callback_example.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/iteration_callback_example.cc>`_
-   for an example of an :class:`IterationCallback` that uses
-   :member:`Solver::Options::update_state_every_iteration` to log
-   changes to the parameter blocks over the course of the
-   optimization.
-
-   The solver does NOT take ownership of these pointers.
-
-:class:`ParameterBlockOrdering`
-===============================
-
-.. class:: ParameterBlockOrdering
-
-   ``ParameterBlockOrdering`` is a class for storing and manipulating
-   an ordered collection of groups/sets with the following semantics:
-
-   Group IDs are non-negative integer values. Elements are any type
-   that can serve as a key in a map or an element of a set.
-
-   An element can only belong to one group at a time. A group may
-   contain an arbitrary number of elements.
-
-   Groups are ordered by their group id.
-
-.. function:: bool ParameterBlockOrdering::AddElementToGroup(const double* element, const int group)
-
-   Add an element to a group. If a group with this id does not exist,
-   one is created. This method can be called any number of times for
-   the same element. Group ids should be non-negative numbers.  Return
-   value indicates if adding the element was a success.
-
-.. function:: void ParameterBlockOrdering::Clear()
-
-   Clear the ordering.
-
-.. function:: bool ParameterBlockOrdering::Remove(const double* element)
-
-   Remove the element, no matter what group it is in. If the element
-   is not a member of any group, calling this method will result in a
-   crash.  Return value indicates if the element was actually removed.
-
-.. function:: void ParameterBlockOrdering::Reverse()
-
-   Reverse the order of the groups in place.
-
-.. function:: int ParameterBlockOrdering::GroupId(const double* element) const
-
-   Return the group id for the element. If the element is not a member
-   of any group, return -1.
-
-.. function:: bool ParameterBlockOrdering::IsMember(const double* element) const
-
-   True if there is a group containing the parameter block.
-
-.. function:: int ParameterBlockOrdering::GroupSize(const int group) const
-
-   This function always succeeds, i.e., implicitly there exists a
-   group for every integer.
-
-.. function:: int ParameterBlockOrdering::NumElements() const
-
-   Number of elements in the ordering.
-
-.. function:: int ParameterBlockOrdering::NumGroups() const
-
-   Number of groups with one or more elements.
-
-:class:`IterationSummary`
-=========================
-
-.. class:: IterationSummary
-
-   :class:`IterationSummary` describes the state of the minimizer at
-   the end of each iteration.
-
-.. member:: int IterationSummary::iteration
-
-   Current iteration number.
-
-.. member:: bool IterationSummary::step_is_valid
-
-   Step was numerically valid, i.e., all values are finite and the
-   step reduces the value of the linearized model.
-
-    **Note**: :member:`IterationSummary::step_is_valid` is `false`
-    when :member:`IterationSummary::iteration` = 0.
-
-.. member::  bool IterationSummary::step_is_nonmonotonic
-
-    Step did not reduce the value of the objective function
-    sufficiently, but it was accepted because of the relaxed
-    acceptance criterion used by the non-monotonic trust region
-    algorithm.
-
-    **Note**: :member:`IterationSummary::step_is_nonmonotonic` is
-    `false` when when :member:`IterationSummary::iteration` = 0.
-
-.. member:: bool IterationSummary::step_is_successful
-
-   Whether or not the minimizer accepted this step or not.
-
-   If the ordinary trust region algorithm is used, this means that the
-   relative reduction in the objective function value was greater than
-   :member:`Solver::Options::min_relative_decrease`. However, if the
-   non-monotonic trust region algorithm is used
-   (:member:`Solver::Options::use_nonmonotonic_steps` = `true`), then
-   even if the relative decrease is not sufficient, the algorithm may
-   accept the step and the step is declared successful.
-
-   **Note**: :member:`IterationSummary::step_is_successful` is `false`
-   when when :member:`IterationSummary::iteration` = 0.
-
-.. member:: double IterationSummary::cost
-
-   Value of the objective function.
-
-.. member:: double IterationSummary::cost_change
-
-   Change in the value of the objective function in this
-   iteration. This can be positive or negative.
-
-.. member:: double IterationSummary::gradient_max_norm
-
-   Infinity norm of the gradient vector.
-
-.. member:: double IterationSummary::gradient_norm
-
-   2-norm of the gradient vector.
-
-.. member:: double IterationSummary::step_norm
-
-   2-norm of the size of the step computed in this iteration.
-
-.. member:: double IterationSummary::relative_decrease
-
-   For trust region algorithms, the ratio of the actual change in cost
-   and the change in the cost of the linearized approximation.
-
-   This field is not used when a linear search minimizer is used.
-
-.. member:: double IterationSummary::trust_region_radius
-
-   Size of the trust region at the end of the current iteration. For
-   the Levenberg-Marquardt algorithm, the regularization parameter is
-   1.0 / :member:`IterationSummary::trust_region_radius`.
-
-.. member:: double IterationSummary::eta
-
-   For the inexact step Levenberg-Marquardt algorithm, this is the
-   relative accuracy with which the step is solved. This number is
-   only applicable to the iterative solvers capable of solving linear
-   systems inexactly. Factorization-based exact solvers always have an
-   eta of 0.0.
-
-.. member:: double IterationSummary::step_size
-
-   Step sized computed by the line search algorithm.
-
-   This field is not used when a trust region minimizer is used.
-
-.. member:: int IterationSummary::line_search_function_evaluations
-
-   Number of function evaluations used by the line search algorithm.
-
-   This field is not used when a trust region minimizer is used.
-
-.. member:: int IterationSummary::linear_solver_iterations
-
-   Number of iterations taken by the linear solver to solve for the
-   trust region step.
-
-   Currently this field is not used when a line search minimizer is
-   used.
-
-.. member:: double IterationSummary::iteration_time_in_seconds
-
-   Time (in seconds) spent inside the minimizer loop in the current
-   iteration.
-
-.. member:: double IterationSummary::step_solver_time_in_seconds
-
-   Time (in seconds) spent inside the trust region step solver.
-
-.. member:: double IterationSummary::cumulative_time_in_seconds
-
-   Time (in seconds) since the user called Solve().
-
-:class:`IterationCallback`
-==========================
-
-.. class:: IterationCallback
-
-   Interface for specifying callbacks that are executed at the end of
-   each iteration of the minimizer.
-
-   .. code-block:: c++
-
-      class IterationCallback {
-       public:
-        virtual ~IterationCallback() {}
-        virtual CallbackReturnType operator()(const IterationSummary& summary) = 0;
-      };
-
-
-  The solver uses the return value of ``operator()`` to decide whether
-  to continue solving or to terminate. The user can return three
-  values.
-
-  #. ``SOLVER_ABORT`` indicates that the callback detected an abnormal
-     situation. The solver returns without updating the parameter
-     blocks (unless ``Solver::Options::update_state_every_iteration`` is
-     set true). Solver returns with ``Solver::Summary::termination_type``
-     set to ``USER_FAILURE``.
-
-  #. ``SOLVER_TERMINATE_SUCCESSFULLY`` indicates that there is no need
-     to optimize anymore (some user specified termination criterion
-     has been met). Solver returns with
-     ``Solver::Summary::termination_type``` set to ``USER_SUCCESS``.
-
-  #. ``SOLVER_CONTINUE`` indicates that the solver should continue
-     optimizing.
-
-  The return values can be used to implement custom termination
-  criterion that supercede the iteration/time/tolerance based
-  termination implemented by Ceres.
-
-  For example, the following :class:`IterationCallback` is used
-  internally by Ceres to log the progress of the optimization.
-
-  .. code-block:: c++
-
-    class LoggingCallback : public IterationCallback {
-     public:
-      explicit LoggingCallback(bool log_to_stdout)
-          : log_to_stdout_(log_to_stdout) {}
-
-      ~LoggingCallback() {}
-
-      CallbackReturnType operator()(const IterationSummary& summary) {
-        const char* kReportRowFormat =
-            "% 4d: f:% 8e d:% 3.2e g:% 3.2e h:% 3.2e "
-            "rho:% 3.2e mu:% 3.2e eta:% 3.2e li:% 3d";
-        string output = StringPrintf(kReportRowFormat,
-                                     summary.iteration,
-                                     summary.cost,
-                                     summary.cost_change,
-                                     summary.gradient_max_norm,
-                                     summary.step_norm,
-                                     summary.relative_decrease,
-                                     summary.trust_region_radius,
-                                     summary.eta,
-                                     summary.linear_solver_iterations);
-        if (log_to_stdout_) {
-          cout << output << endl;
-        } else {
-          VLOG(1) << output;
-        }
-        return SOLVER_CONTINUE;
-      }
-
-     private:
-      const bool log_to_stdout_;
-    };
-
-
-  See `examples/evaluation_callback_example.cc
-  <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/iteration_callback_example.cc>`_
-  for another example that uses
-  :member:`Solver::Options::update_state_every_iteration` to log
-  changes to the parameter blocks over the course of the optimization.
-
-
-:class:`CRSMatrix`
-==================
-
-.. class:: CRSMatrix
-
-   A compressed row sparse matrix used primarily for communicating the
-   Jacobian matrix to the user.
-
-.. member:: int CRSMatrix::num_rows
-
-   Number of rows.
-
-.. member:: int CRSMatrix::num_cols
-
-   Number of columns.
-
-.. member:: std::vector<int> CRSMatrix::rows
-
-   :member:`CRSMatrix::rows` is a :member:`CRSMatrix::num_rows` + 1
-   sized array that points into the :member:`CRSMatrix::cols` and
-   :member:`CRSMatrix::values` array.
-
-.. member:: std::vector<int> CRSMatrix::cols
-
-   :member:`CRSMatrix::cols` contain as many entries as there are
-   non-zeros in the matrix.
-
-   For each row ``i``, ``cols[rows[i]]`` ... ``cols[rows[i + 1] - 1]``
-   are the indices of the non-zero columns of row ``i``.
-
-.. member:: std::vector<double> CRSMatrix::values
-
-   :member:`CRSMatrix::values` contain as many entries as there are
-   non-zeros in the matrix.
-
-   For each row ``i``,
-   ``values[rows[i]]`` ... ``values[rows[i + 1] - 1]`` are the values
-   of the non-zero columns of row ``i``.
-
-e.g., consider the 3x4 sparse matrix
-
-.. code-block:: c++
-
-   0 10  0  4
-   0  2 -3  2
-   1  2  0  0
-
-The three arrays will be:
-
-.. code-block:: c++
-
-            -row0-  ---row1---  -row2-
-   rows   = [ 0,      2,          5,     7]
-   cols   = [ 1,  3,  1,  2,  3,  0,  1]
-   values = [10,  4,  2, -3,  2,  1,  2]
-
-
-:class:`Solver::Summary`
-========================
-
-.. class:: Solver::Summary
-
-   Summary of the various stages of the solver after termination.
-
-.. function:: std::string Solver::Summary::BriefReport() const
-
-   A brief one line description of the state of the solver after
-   termination.
-
-.. function:: std::string Solver::Summary::FullReport() const
-
-   A full multiline description of the state of the solver after
-   termination.
-
-.. function:: bool Solver::Summary::IsSolutionUsable() const
-
-   Whether the solution returned by the optimization algorithm can be
-   relied on to be numerically sane. This will be the case if
-   `Solver::Summary:termination_type` is set to `CONVERGENCE`,
-   `USER_SUCCESS` or `NO_CONVERGENCE`, i.e., either the solver
-   converged by meeting one of the convergence tolerances or because
-   the user indicated that it had converged or it ran to the maximum
-   number of iterations or time.
-
-.. member:: MinimizerType Solver::Summary::minimizer_type
-
-   Type of minimization algorithm used.
-
-.. member:: TerminationType Solver::Summary::termination_type
-
-   The cause of the minimizer terminating.
-
-.. member:: std::string Solver::Summary::message
-
-   Reason why the solver terminated.
-
-.. member:: double Solver::Summary::initial_cost
-
-   Cost of the problem (value of the objective function) before the
-   optimization.
-
-.. member:: double Solver::Summary::final_cost
-
-   Cost of the problem (value of the objective function) after the
-   optimization.
-
-.. member:: double Solver::Summary::fixed_cost
-
-   The part of the total cost that comes from residual blocks that
-   were held fixed by the preprocessor because all the parameter
-   blocks that they depend on were fixed.
-
-.. member:: std::vector<IterationSummary> Solver::Summary::iterations
-
-   :class:`IterationSummary` for each minimizer iteration in order.
-
-.. member:: int Solver::Summary::num_successful_steps
-
-   Number of minimizer iterations in which the step was
-   accepted. Unless :member:`Solver::Options::use_nonmonotonic_steps`
-   is `true` this is also the number of steps in which the objective
-   function value/cost went down.
-
-.. member:: int Solver::Summary::num_unsuccessful_steps
-
-   Number of minimizer iterations in which the step was rejected
-   either because it did not reduce the cost enough or the step was
-   not numerically valid.
-
-.. member:: int Solver::Summary::num_inner_iteration_steps
-
-   Number of times inner iterations were performed.
-
-.. member:: int Solver::Summary::num_line_search_steps
-
-   Total number of iterations inside the line search algorithm across
-   all invocations. We call these iterations "steps" to distinguish
-   them from the outer iterations of the line search and trust region
-   minimizer algorithms which call the line search algorithm as a
-   subroutine.
-
-.. member:: double Solver::Summary::preprocessor_time_in_seconds
-
-   Time (in seconds) spent in the preprocessor.
-
-.. member:: double Solver::Summary::minimizer_time_in_seconds
-
-   Time (in seconds) spent in the minimizer.
-
-.. member:: double Solver::Summary::postprocessor_time_in_seconds
-
-   Time (in seconds) spent in the post processor.
-
-.. member:: double Solver::Summary::total_time_in_seconds
-
-   Time (in seconds) spent in the solver.
-
-.. member:: double Solver::Summary::linear_solver_time_in_seconds
-
-   Time (in seconds) spent in the linear solver computing the trust
-   region step.
-
-.. member:: int Solver::Summary::num_linear_solves
-
-   Number of times the Newton step was computed by solving a linear
-   system. This does not include linear solves used by inner
-   iterations.
-
-.. member:: double Solver::Summary::residual_evaluation_time_in_seconds
-
-   Time (in seconds) spent evaluating the residual vector.
-
-.. member:: int Solver::Summary::num_residual_evaluations
-
-   Number of times only the residuals were evaluated.
-
-.. member:: double Solver::Summary::jacobian_evaluation_time_in_seconds
-
-   Time (in seconds) spent evaluating the Jacobian matrix.
-
-.. member:: int Solver::Summary::num_jacobian_evaluations
-
-   Number of times only the Jacobian and the residuals were evaluated.
-
-.. member:: double Solver::Summary::inner_iteration_time_in_seconds
-
-   Time (in seconds) spent doing inner iterations.
-
-.. member:: int Solver::Summary::num_parameter_blocks
-
-   Number of parameter blocks in the problem.
-
-.. member:: int Solver::Summary::num_parameters
-
-   Number of parameters in the problem.
-
-.. member:: int Solver::Summary::num_effective_parameters
-
-   Dimension of the tangent space of the problem (or the number of
-   columns in the Jacobian for the problem). This is different from
-   :member:`Solver::Summary::num_parameters` if a parameter block is
-   associated with a :class:`Manifold`.
-
-.. member:: int Solver::Summary::num_residual_blocks
-
-   Number of residual blocks in the problem.
-
-.. member:: int Solver::Summary::num_residuals
-
-   Number of residuals in the problem.
-
-.. member:: int Solver::Summary::num_parameter_blocks_reduced
-
-   Number of parameter blocks in the problem after the inactive and
-   constant parameter blocks have been removed. A parameter block is
-   inactive if no residual block refers to it.
-
-.. member:: int Solver::Summary::num_parameters_reduced
-
-   Number of parameters in the reduced problem.
-
-.. member:: int Solver::Summary::num_effective_parameters_reduced
-
-   Dimension of the tangent space of the reduced problem (or the
-   number of columns in the Jacobian for the reduced problem). This is
-   different from :member:`Solver::Summary::num_parameters_reduced` if
-   a parameter block in the reduced problem is associated with a
-   :class:`Manifold`.
-
-.. member:: int Solver::Summary::num_residual_blocks_reduced
-
-   Number of residual blocks in the reduced problem.
-
-.. member:: int Solver::Summary::num_residuals_reduced
-
-   Number of residuals in the reduced problem.
-
-.. member:: int Solver::Summary::num_threads_given
-
-   Number of threads specified by the user for Jacobian and residual
-   evaluation.
-
-.. member:: int Solver::Summary::num_threads_used
-
-   Number of threads actually used by the solver for Jacobian and
-   residual evaluation.
-
-.. member:: LinearSolverType Solver::Summary::linear_solver_type_given
-
-   Type of the linear solver requested by the user.
-
-.. member:: LinearSolverType Solver::Summary::linear_solver_type_used
-
-   Type of the linear solver actually used. This may be different from
-   :member:`Solver::Summary::linear_solver_type_given` if Ceres
-   determines that the problem structure is not compatible with the
-   linear solver requested or if the linear solver requested by the
-   user is not available, e.g. The user requested
-   `SPARSE_NORMAL_CHOLESKY` but no sparse linear algebra library was
-   available.
-
-.. member:: std::vector<int> Solver::Summary::linear_solver_ordering_given
-
-   Size of the elimination groups given by the user as hints to the
-   linear solver.
-
-.. member:: std::vector<int> Solver::Summary::linear_solver_ordering_used
-
-   Size of the parameter groups used by the solver when ordering the
-   columns of the Jacobian.  This maybe different from
-   :member:`Solver::Summary::linear_solver_ordering_given` if the user
-   left :member:`Solver::Summary::linear_solver_ordering_given` blank
-   and asked for an automatic ordering, or if the problem contains
-   some constant or inactive parameter blocks.
-
-.. member:: std::string Solver::Summary::schur_structure_given
-
-    For Schur type linear solvers, this string describes the template
-    specialization which was detected in the problem and should be
-    used.
-
-.. member:: std::string Solver::Summary::schur_structure_used
-
-   For Schur type linear solvers, this string describes the template
-   specialization that was actually instantiated and used. The reason
-   this will be different from
-   :member:`Solver::Summary::schur_structure_given` is because the
-   corresponding template specialization does not exist.
-
-   Template specializations can be added to ceres by editing
-   ``internal/ceres/generate_template_specializations.py``
-
-.. member:: bool Solver::Summary::inner_iterations_given
-
-   `True` if the user asked for inner iterations to be used as part of
-   the optimization.
-
-.. member:: bool Solver::Summary::inner_iterations_used
-
-   `True` if the user asked for inner iterations to be used as part of
-   the optimization and the problem structure was such that they were
-   actually performed. For example, in a problem with just one parameter
-   block, inner iterations are not performed.
-
-.. member:: std::vector<int> Solver::Summary::inner_iteration_ordering_given
-
-   Size of the parameter groups given by the user for performing inner
-   iterations.
-
-.. member:: std::vector<int> Solver::Summary::inner_iteration_ordering_used
-
-   Size of the parameter groups given used by the solver for
-   performing inner iterations. This maybe different from
-   :member:`Solver::Summary::inner_iteration_ordering_given` if the
-   user left :member:`Solver::Summary::inner_iteration_ordering_given`
-   blank and asked for an automatic ordering, or if the problem
-   contains some constant or inactive parameter blocks.
-
-.. member:: PreconditionerType Solver::Summary::preconditioner_type_given
-
-   Type of the preconditioner requested by the user.
-
-.. member:: PreconditionerType Solver::Summary::preconditioner_type_used
-
-   Type of the preconditioner actually used. This may be different
-   from :member:`Solver::Summary::linear_solver_type_given` if Ceres
-   determines that the problem structure is not compatible with the
-   linear solver requested or if the linear solver requested by the
-   user is not available.
-
-.. member:: VisibilityClusteringType Solver::Summary::visibility_clustering_type
-
-   Type of clustering algorithm used for visibility based
-   preconditioning. Only meaningful when the
-   :member:`Solver::Summary::preconditioner_type_used` is
-   ``CLUSTER_JACOBI`` or ``CLUSTER_TRIDIAGONAL``.
-
-.. member:: TrustRegionStrategyType Solver::Summary::trust_region_strategy_type
-
-   Type of trust region strategy.
-
-.. member:: DoglegType Solver::Summary::dogleg_type
-
-   Type of dogleg strategy used for solving the trust region problem.
-
-.. member:: DenseLinearAlgebraLibraryType Solver::Summary::dense_linear_algebra_library_type
-
-   Type of the dense linear algebra library used.
-
-.. member:: SparseLinearAlgebraLibraryType Solver::Summary::sparse_linear_algebra_library_type
-
-   Type of the sparse linear algebra library used.
-
-.. member:: LineSearchDirectionType Solver::Summary::line_search_direction_type
-
-   Type of line search direction used.
-
-.. member:: LineSearchType Solver::Summary::line_search_type
-
-   Type of the line search algorithm used.
-
-.. member:: LineSearchInterpolationType Solver::Summary::line_search_interpolation_type
-
-   When performing line search, the degree of the polynomial used to
-   approximate the objective function.
-
-.. member:: NonlinearConjugateGradientType Solver::Summary::nonlinear_conjugate_gradient_type
-
-   If the line search direction is `NONLINEAR_CONJUGATE_GRADIENT`,
-   then this indicates the particular variant of non-linear conjugate
-   gradient used.
-
-.. member:: int Solver::Summary::max_lbfgs_rank
-
-   If the type of the line search direction is `LBFGS`, then this
-   indicates the rank of the Hessian approximation.
diff --git a/third_party/ceres/docs/source/nnls_tutorial.rst b/third_party/ceres/docs/source/nnls_tutorial.rst
deleted file mode 100644
index 6de800e..0000000
--- a/third_party/ceres/docs/source/nnls_tutorial.rst
+++ /dev/null
@@ -1,1044 +0,0 @@
-.. highlight:: c++
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-nnls_tutorial:
-
-========================
-Non-linear Least Squares
-========================
-
-Introduction
-============
-
-Ceres can solve bounds constrained robustified non-linear least
-squares problems of the form
-
-.. math:: :label: ceresproblem
-
-   \min_{\mathbf{x}} &\quad \frac{1}{2}\sum_{i} \rho_i\left(\left\|f_i\left(x_{i_1}, ... ,x_{i_k}\right)\right\|^2\right) \\
-   \text{s.t.} &\quad l_j \le x_j \le u_j
-
-Problems of this form comes up in a broad range of areas across
-science and engineering - from `fitting curves`_ in statistics, to
-constructing `3D models from photographs`_ in computer vision.
-
-.. _fitting curves: http://en.wikipedia.org/wiki/Nonlinear_regression
-.. _3D models from photographs: http://en.wikipedia.org/wiki/Bundle_adjustment
-
-In this chapter we will learn how to solve :eq:`ceresproblem` using
-Ceres Solver. Full working code for all the examples described in this
-chapter and more can be found in the `examples
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/>`_
-directory.
-
-The expression
-:math:`\rho_i\left(\left\|f_i\left(x_{i_1},...,x_{i_k}\right)\right\|^2\right)`
-is known as a ``ResidualBlock``, where :math:`f_i(\cdot)` is a
-:class:`CostFunction` that depends on the parameter blocks
-:math:`\left[x_{i_1},... , x_{i_k}\right]`. In most optimization
-problems small groups of scalars occur together. For example the three
-components of a translation vector and the four components of the
-quaternion that define the pose of a camera. We refer to such a group
-of small scalars as a ``ParameterBlock``. Of course a
-``ParameterBlock`` can just be a single parameter. :math:`l_j` and
-:math:`u_j` are bounds on the parameter block :math:`x_j`.
-
-:math:`\rho_i` is a :class:`LossFunction`. A :class:`LossFunction` is
-a scalar function that is used to reduce the influence of outliers on
-the solution of non-linear least squares problems.
-
-As a special case, when :math:`\rho_i(x) = x`, i.e., the identity
-function, and :math:`l_j = -\infty` and :math:`u_j = \infty` we get
-the more familiar `non-linear least squares problem
-<http://en.wikipedia.org/wiki/Non-linear_least_squares>`_.
-
-.. math:: \frac{1}{2}\sum_{i} \left\|f_i\left(x_{i_1}, ... ,x_{i_k}\right)\right\|^2.
-   :label: ceresproblemnonrobust
-
-.. _section-hello-world:
-
-Hello World!
-============
-
-To get started, consider the problem of finding the minimum of the
-function
-
-.. math:: \frac{1}{2}(10 -x)^2.
-
-This is a trivial problem, whose minimum is located at :math:`x = 10`,
-but it is a good place to start to illustrate the basics of solving a
-problem with Ceres [#f1]_.
-
-The first step is to write a functor that will evaluate this the
-function :math:`f(x) = 10 - x`:
-
-.. code-block:: c++
-
-   struct CostFunctor {
-      template <typename T>
-      bool operator()(const T* const x, T* residual) const {
-        residual[0] = 10.0 - x[0];
-        return true;
-      }
-   };
-
-The important thing to note here is that ``operator()`` is a templated
-method, which assumes that all its inputs and outputs are of some type
-``T``. The use of templating here allows Ceres to call
-``CostFunctor::operator<T>()``, with ``T=double`` when just the value
-of the residual is needed, and with a special type ``T=Jet`` when the
-Jacobians are needed. In :ref:`section-derivatives` we will discuss the
-various ways of supplying derivatives to Ceres in more detail.
-
-Once we have a way of computing the residual function, it is now time
-to construct a non-linear least squares problem using it and have
-Ceres solve it.
-
-.. code-block:: c++
-
-   int main(int argc, char** argv) {
-     google::InitGoogleLogging(argv[0]);
-
-     // The variable to solve for with its initial value.
-     double initial_x = 5.0;
-     double x = initial_x;
-
-     // Build the problem.
-     Problem problem;
-
-     // Set up the only cost function (also known as residual). This uses
-     // auto-differentiation to obtain the derivative (jacobian).
-     CostFunction* cost_function =
-         new AutoDiffCostFunction<CostFunctor, 1, 1>();
-     problem.AddResidualBlock(cost_function, nullptr, &x);
-
-     // Run the solver!
-     Solver::Options options;
-     options.linear_solver_type = ceres::DENSE_QR;
-     options.minimizer_progress_to_stdout = true;
-     Solver::Summary summary;
-     Solve(options, &problem, &summary);
-
-     std::cout << summary.BriefReport() << "\n";
-     std::cout << "x : " << initial_x
-               << " -> " << x << "\n";
-     return 0;
-   }
-
-:class:`AutoDiffCostFunction` takes a ``CostFunctor`` as input,
-automatically differentiates it and gives it a :class:`CostFunction`
-interface.
-
-Compiling and running `examples/helloworld.cc
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/helloworld.cc>`_
-gives us
-
-.. code-block:: bash
-
-   iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
-      0  4.512500e+01    0.00e+00    9.50e+00   0.00e+00   0.00e+00  1.00e+04       0    5.33e-04    3.46e-03
-      1  4.511598e-07    4.51e+01    9.50e-04   9.50e+00   1.00e+00  3.00e+04       1    5.00e-04    4.05e-03
-      2  5.012552e-16    4.51e-07    3.17e-08   9.50e-04   1.00e+00  9.00e+04       1    1.60e-05    4.09e-03
-   Ceres Solver Report: Iterations: 2, Initial cost: 4.512500e+01, Final cost: 5.012552e-16, Termination: CONVERGENCE
-   x : 0.5 -> 10
-
-Starting from a :math:`x=5`, the solver in two iterations goes to 10
-[#f2]_. The careful reader will note that this is a linear problem and
-one linear solve should be enough to get the optimal value.  The
-default configuration of the solver is aimed at non-linear problems,
-and for reasons of simplicity we did not change it in this example. It
-is indeed possible to obtain the solution to this problem using Ceres
-in one iteration. Also note that the solver did get very close to the
-optimal function value of 0 in the very first iteration. We will
-discuss these issues in greater detail when we talk about convergence
-and parameter settings for Ceres.
-
-.. rubric:: Footnotes
-
-.. [#f1] `examples/helloworld.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/helloworld.cc>`_
-.. [#f2] Actually the solver ran for three iterations, and it was
-   by looking at the value returned by the linear solver in the third
-   iteration, it observed that the update to the parameter block was too
-   small and declared convergence. Ceres only prints out the display at
-   the end of an iteration, and terminates as soon as it detects
-   convergence, which is why you only see two iterations here and not
-   three.
-
-.. _section-derivatives:
-
-
-Derivatives
-===========
-
-Ceres Solver like most optimization packages, depends on being able to
-evaluate the value and the derivatives of each term in the objective
-function at arbitrary parameter values. Doing so correctly and
-efficiently is essential to getting good results.  Ceres Solver
-provides a number of ways of doing so. You have already seen one of
-them in action --
-Automatic Differentiation in `examples/helloworld.cc
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/helloworld.cc>`_
-
-We now consider the other two possibilities. Analytic and numeric
-derivatives.
-
-
-Numeric Derivatives
--------------------
-
-In some cases, its not possible to define a templated cost functor,
-for example when the evaluation of the residual involves a call to a
-library function that you do not have control over.  In such a
-situation, numerical differentiation can be used. The user defines a
-functor which computes the residual value and construct a
-:class:`NumericDiffCostFunction` using it. e.g., for :math:`f(x) = 10 - x`
-the corresponding functor would be
-
-.. code-block:: c++
-
-  struct NumericDiffCostFunctor {
-    bool operator()(const double* const x, double* residual) const {
-      residual[0] = 10.0 - x[0];
-      return true;
-    }
-  };
-
-Which is added to the :class:`Problem` as:
-
-.. code-block:: c++
-
-  CostFunction* cost_function =
-    new NumericDiffCostFunction<NumericDiffCostFunctor, ceres::CENTRAL, 1, 1>();
-  problem.AddResidualBlock(cost_function, nullptr, &x);
-
-Notice the parallel from when we were using automatic differentiation
-
-.. code-block:: c++
-
-  CostFunction* cost_function =
-      new AutoDiffCostFunction<CostFunctor, 1, 1>();
-  problem.AddResidualBlock(cost_function, nullptr, &x);
-
-The construction looks almost identical to the one used for automatic
-differentiation, except for an extra template parameter that indicates
-the kind of finite differencing scheme to be used for computing the
-numerical derivatives [#f3]_. For more details see the documentation
-for :class:`NumericDiffCostFunction`.
-
-**Generally speaking we recommend automatic differentiation instead of
-numeric differentiation. The use of C++ templates makes automatic
-differentiation efficient, whereas numeric differentiation is
-expensive, prone to numeric errors, and leads to slower convergence.**
-
-
-Analytic Derivatives
---------------------
-
-In some cases, using automatic differentiation is not possible. For
-example, it may be the case that it is more efficient to compute the
-derivatives in closed form instead of relying on the chain rule used
-by the automatic differentiation code.
-
-In such cases, it is possible to supply your own residual and jacobian
-computation code. To do this, define a subclass of
-:class:`CostFunction` or :class:`SizedCostFunction` if you know the
-sizes of the parameters and residuals at compile time. Here for
-example is ``SimpleCostFunction`` that implements :math:`f(x) = 10 -
-x`.
-
-.. code-block:: c++
-
-  class QuadraticCostFunction : public ceres::SizedCostFunction<1, 1> {
-   public:
-    virtual ~QuadraticCostFunction() {}
-    virtual bool Evaluate(double const* const* parameters,
-                          double* residuals,
-                          double** jacobians) const {
-      const double x = parameters[0][0];
-      residuals[0] = 10 - x;
-
-      // Compute the Jacobian if asked for.
-      if (jacobians != nullptr && jacobians[0] != nullptr) {
-        jacobians[0][0] = -1;
-      }
-      return true;
-    }
-  };
-
-
-``SimpleCostFunction::Evaluate`` is provided with an input array of
-``parameters``, an output array ``residuals`` for residuals and an
-output array ``jacobians`` for Jacobians. The ``jacobians`` array is
-optional, ``Evaluate`` is expected to check when it is non-null, and
-if it is the case then fill it with the values of the derivative of
-the residual function. In this case since the residual function is
-linear, the Jacobian is constant [#f4]_ .
-
-As can be seen from the above code fragments, implementing
-:class:`CostFunction` objects is a bit tedious. We recommend that
-unless you have a good reason to manage the jacobian computation
-yourself, you use :class:`AutoDiffCostFunction` or
-:class:`NumericDiffCostFunction` to construct your residual blocks.
-
-More About Derivatives
-----------------------
-
-Computing derivatives is by far the most complicated part of using
-Ceres, and depending on the circumstance the user may need more
-sophisticated ways of computing derivatives. This section just
-scratches the surface of how derivatives can be supplied to
-Ceres. Once you are comfortable with using
-:class:`NumericDiffCostFunction` and :class:`AutoDiffCostFunction` we
-recommend taking a look at :class:`DynamicAutoDiffCostFunction`,
-:class:`CostFunctionToFunctor`, :class:`NumericDiffFunctor` and
-:class:`ConditionedCostFunction` for more advanced ways of
-constructing and computing cost functions.
-
-.. rubric:: Footnotes
-
-.. [#f3] `examples/helloworld_numeric_diff.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/helloworld_numeric_diff.cc>`_.
-.. [#f4] `examples/helloworld_analytic_diff.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/helloworld_analytic_diff.cc>`_.
-
-
-.. _section-powell:
-
-Powell's Function
-=================
-
-Consider now a slightly more complicated example -- the minimization
-of Powell's function. Let :math:`x = \left[x_1, x_2, x_3, x_4 \right]`
-and
-
-.. math::
-
-  \begin{align}
-     f_1(x) &= x_1 + 10x_2 \\
-     f_2(x) &= \sqrt{5}  (x_3 - x_4)\\
-     f_3(x) &= (x_2 - 2x_3)^2\\
-     f_4(x) &= \sqrt{10}  (x_1 - x_4)^2\\
-       F(x) &= \left[f_1(x),\ f_2(x),\ f_3(x),\ f_4(x) \right]
-  \end{align}
-
-
-:math:`F(x)` is a function of four parameters, has four residuals
-and we wish to find :math:`x` such that :math:`\frac{1}{2}\|F(x)\|^2`
-is minimized.
-
-Again, the first step is to define functors that evaluate of the terms
-in the objective functor. Here is the code for evaluating
-:math:`f_4(x_1, x_4)`:
-
-.. code-block:: c++
-
- struct F4 {
-   template <typename T>
-   bool operator()(const T* const x1, const T* const x4, T* residual) const {
-     residual[0] = sqrt(10.0) * (x1[0] - x4[0]) * (x1[0] - x4[0]);
-     return true;
-   }
- };
-
-
-Similarly, we can define classes ``F1``, ``F2`` and ``F3`` to evaluate
-:math:`f_1(x_1, x_2)`, :math:`f_2(x_3, x_4)` and :math:`f_3(x_2, x_3)`
-respectively. Using these, the problem can be constructed as follows:
-
-
-.. code-block:: c++
-
-  double x1 =  3.0; double x2 = -1.0; double x3 =  0.0; double x4 = 1.0;
-
-  Problem problem;
-
-  // Add residual terms to the problem using the autodiff
-  // wrapper to get the derivatives automatically.
-  problem.AddResidualBlock(
-    new AutoDiffCostFunction<F1, 1, 1, 1>(), nullptr, &x1, &x2);
-  problem.AddResidualBlock(
-    new AutoDiffCostFunction<F2, 1, 1, 1>(), nullptr, &x3, &x4);
-  problem.AddResidualBlock(
-    new AutoDiffCostFunction<F3, 1, 1, 1>(), nullptr, &x2, &x3);
-  problem.AddResidualBlock(
-    new AutoDiffCostFunction<F4, 1, 1, 1>(), nullptr, &x1, &x4);
-
-
-Note that each ``ResidualBlock`` only depends on the two parameters
-that the corresponding residual object depends on and not on all four
-parameters. Compiling and running `examples/powell.cc
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/powell.cc>`_
-gives us:
-
-.. code-block:: bash
-
-    Initial x1 = 3, x2 = -1, x3 = 0, x4 = 1
-    iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
-       0  1.075000e+02    0.00e+00    1.55e+02   0.00e+00   0.00e+00  1.00e+04        0    2.91e-05    3.40e-04
-       1  5.036190e+00    1.02e+02    2.00e+01   0.00e+00   9.53e-01  3.00e+04        1    4.98e-05    3.99e-04
-       2  3.148168e-01    4.72e+00    2.50e+00   6.23e-01   9.37e-01  9.00e+04        1    2.15e-06    4.06e-04
-       3  1.967760e-02    2.95e-01    3.13e-01   3.08e-01   9.37e-01  2.70e+05        1    9.54e-07    4.10e-04
-       4  1.229900e-03    1.84e-02    3.91e-02   1.54e-01   9.37e-01  8.10e+05        1    1.91e-06    4.14e-04
-       5  7.687123e-05    1.15e-03    4.89e-03   7.69e-02   9.37e-01  2.43e+06        1    1.91e-06    4.18e-04
-       6  4.804625e-06    7.21e-05    6.11e-04   3.85e-02   9.37e-01  7.29e+06        1    1.19e-06    4.21e-04
-       7  3.003028e-07    4.50e-06    7.64e-05   1.92e-02   9.37e-01  2.19e+07        1    1.91e-06    4.25e-04
-       8  1.877006e-08    2.82e-07    9.54e-06   9.62e-03   9.37e-01  6.56e+07        1    9.54e-07    4.28e-04
-       9  1.173223e-09    1.76e-08    1.19e-06   4.81e-03   9.37e-01  1.97e+08        1    9.54e-07    4.32e-04
-      10  7.333425e-11    1.10e-09    1.49e-07   2.40e-03   9.37e-01  5.90e+08        1    9.54e-07    4.35e-04
-      11  4.584044e-12    6.88e-11    1.86e-08   1.20e-03   9.37e-01  1.77e+09        1    9.54e-07    4.38e-04
-      12  2.865573e-13    4.30e-12    2.33e-09   6.02e-04   9.37e-01  5.31e+09        1    2.15e-06    4.42e-04
-      13  1.791438e-14    2.69e-13    2.91e-10   3.01e-04   9.37e-01  1.59e+10        1    1.91e-06    4.45e-04
-      14  1.120029e-15    1.68e-14    3.64e-11   1.51e-04   9.37e-01  4.78e+10        1    2.15e-06    4.48e-04
-
-    Solver Summary (v 2.2.0-eigen-(3.4.0)-lapack-suitesparse-(7.1.0)-metis-(5.1.0)-acceleratesparse-eigensparse)
-
-                                         Original                  Reduced
-    Parameter blocks                            4                        4
-    Parameters                                  4                        4
-    Residual blocks                             4                        4
-    Residuals                                   4                        4
-
-    Minimizer                        TRUST_REGION
-
-    Dense linear algebra library            EIGEN
-    Trust region strategy     LEVENBERG_MARQUARDT
-                                            Given                     Used
-    Linear solver                        DENSE_QR                 DENSE_QR
-    Threads                                     1                        1
-    Linear solver ordering              AUTOMATIC                        4
-
-    Cost:
-    Initial                          1.075000e+02
-    Final                            1.120029e-15
-    Change                           1.075000e+02
-
-    Minimizer iterations                       15
-    Successful steps                           15
-    Unsuccessful steps                          0
-
-    Time (in seconds):
-    Preprocessor                         0.000311
-
-      Residual only evaluation           0.000002 (14)
-      Jacobian & residual evaluation     0.000023 (15)
-      Linear solver                      0.000043 (14)
-    Minimizer                            0.000163
-
-    Postprocessor                        0.000012
-    Total                                0.000486
-
-    Termination:                      CONVERGENCE (Gradient tolerance reached. Gradient max norm: 3.642190e-11 <= 1.000000e-10)
-
-    Final x1 = 0.000146222, x2 = -1.46222e-05, x3 = 2.40957e-05, x4 = 2.40957e-05
-
-
-
-
-It is easy to see that the optimal solution to this problem is at
-:math:`x_1=0, x_2=0, x_3=0, x_4=0` with an objective function value of
-:math:`0`. In 10 iterations, Ceres finds a solution with an objective
-function value of :math:`4\times 10^{-12}`.
-
-.. rubric:: Footnotes
-
-.. [#f5] `examples/powell.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/powell.cc>`_.
-
-
-.. _section-fitting:
-
-Curve Fitting
-=============
-
-The examples we have seen until now are simple optimization problems
-with no data. The original purpose of least squares and non-linear
-least squares analysis was fitting curves to data. It is only
-appropriate that we now consider an example of such a problem
-[#f6]_. It contains data generated by sampling the curve :math:`y =
-e^{0.3x + 0.1}` and adding Gaussian noise with standard deviation
-:math:`\sigma = 0.2`. Let us fit some data to the curve
-
-.. math::  y = e^{mx + c}.
-
-We begin by defining a templated object to evaluate the
-residual. There will be a residual for each observation.
-
-.. code-block:: c++
-
- struct ExponentialResidual {
-   ExponentialResidual(double x, double y)
-       : x_(x), y_(y) {}
-
-   template <typename T>
-   bool operator()(const T* const m, const T* const c, T* residual) const {
-     residual[0] = y_ - exp(m[0] * x_ + c[0]);
-     return true;
-   }
-
-  private:
-   // Observations for a sample.
-   const double x_;
-   const double y_;
- };
-
-Assuming the observations are in a :math:`2n` sized array called
-``data`` the problem construction is a simple matter of creating a
-:class:`CostFunction` for every observation.
-
-
-.. code-block:: c++
-
- double m = 0.0;
- double c = 0.0;
-
- Problem problem;
- for (int i = 0; i < kNumObservations; ++i) {
-   CostFunction* cost_function =
-        new AutoDiffCostFunction<ExponentialResidual, 1, 1, 1>
-            (data[2 * i], data[2 * i + 1]);
-   problem.AddResidualBlock(cost_function, nullptr, &m, &c);
- }
-
-Compiling and running `examples/curve_fitting.cc
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/curve_fitting.cc>`_
-gives us:
-
-.. code-block:: bash
-
-    iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
-       0  1.211734e+02    0.00e+00    3.61e+02   0.00e+00   0.00e+00  1.00e+04       0    5.34e-04    2.56e-03
-       1  1.211734e+02   -2.21e+03    0.00e+00   7.52e-01  -1.87e+01  5.00e+03       1    4.29e-05    3.25e-03
-       2  1.211734e+02   -2.21e+03    0.00e+00   7.51e-01  -1.86e+01  1.25e+03       1    1.10e-05    3.28e-03
-       3  1.211734e+02   -2.19e+03    0.00e+00   7.48e-01  -1.85e+01  1.56e+02       1    1.41e-05    3.31e-03
-       4  1.211734e+02   -2.02e+03    0.00e+00   7.22e-01  -1.70e+01  9.77e+00       1    1.00e-05    3.34e-03
-       5  1.211734e+02   -7.34e+02    0.00e+00   5.78e-01  -6.32e+00  3.05e-01       1    1.00e-05    3.36e-03
-       6  3.306595e+01    8.81e+01    4.10e+02   3.18e-01   1.37e+00  9.16e-01       1    2.79e-05    3.41e-03
-       7  6.426770e+00    2.66e+01    1.81e+02   1.29e-01   1.10e+00  2.75e+00       1    2.10e-05    3.45e-03
-       8  3.344546e+00    3.08e+00    5.51e+01   3.05e-02   1.03e+00  8.24e+00       1    2.10e-05    3.48e-03
-       9  1.987485e+00    1.36e+00    2.33e+01   8.87e-02   9.94e-01  2.47e+01       1    2.10e-05    3.52e-03
-      10  1.211585e+00    7.76e-01    8.22e+00   1.05e-01   9.89e-01  7.42e+01       1    2.10e-05    3.56e-03
-      11  1.063265e+00    1.48e-01    1.44e+00   6.06e-02   9.97e-01  2.22e+02       1    2.60e-05    3.61e-03
-      12  1.056795e+00    6.47e-03    1.18e-01   1.47e-02   1.00e+00  6.67e+02       1    2.10e-05    3.64e-03
-      13  1.056751e+00    4.39e-05    3.79e-03   1.28e-03   1.00e+00  2.00e+03       1    2.10e-05    3.68e-03
-    Ceres Solver Report: Iterations: 13, Initial cost: 1.211734e+02, Final cost: 1.056751e+00, Termination: CONVERGENCE
-    Initial m: 0 c: 0
-    Final   m: 0.291861 c: 0.131439
-
-Starting from parameter values :math:`m = 0, c=0` with an initial
-objective function value of :math:`121.173` Ceres finds a solution
-:math:`m= 0.291861, c = 0.131439` with an objective function value of
-:math:`1.05675`. These values are a bit different than the
-parameters of the original model :math:`m=0.3, c= 0.1`, but this is
-expected. When reconstructing a curve from noisy data, we expect to
-see such deviations. Indeed, if you were to evaluate the objective
-function for :math:`m=0.3, c=0.1`, the fit is worse with an objective
-function value of :math:`1.082425`.  The figure below illustrates the fit.
-
-.. figure:: least_squares_fit.png
-   :figwidth: 500px
-   :height: 400px
-   :align: center
-
-   Least squares curve fitting.
-
-
-.. rubric:: Footnotes
-
-.. [#f6] `examples/curve_fitting.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/curve_fitting.cc>`_
-
-
-Robust Curve Fitting
-=====================
-
-Now suppose the data we are given has some outliers, i.e., we have
-some points that do not obey the noise model. If we were to use the
-code above to fit such data, we would get a fit that looks as
-below. Notice how the fitted curve deviates from the ground truth.
-
-.. figure:: non_robust_least_squares_fit.png
-   :figwidth: 500px
-   :height: 400px
-   :align: center
-
-To deal with outliers, a standard technique is to use a
-:class:`LossFunction`. Loss functions reduce the influence of
-residual blocks with high residuals, usually the ones corresponding to
-outliers. To associate a loss function with a residual block, we change
-
-.. code-block:: c++
-
-   problem.AddResidualBlock(cost_function, nullptr , &m, &c);
-
-to
-
-.. code-block:: c++
-
-   problem.AddResidualBlock(cost_function, new CauchyLoss(0.5) , &m, &c);
-
-:class:`CauchyLoss` is one of the loss functions that ships with Ceres
-Solver. The argument :math:`0.5` specifies the scale of the loss
-function. As a result, we get the fit below [#f7]_. Notice how the
-fitted curve moves back closer to the ground truth curve.
-
-.. figure:: robust_least_squares_fit.png
-   :figwidth: 500px
-   :height: 400px
-   :align: center
-
-   Using :class:`LossFunction` to reduce the effect of outliers on a
-   least squares fit.
-
-
-.. rubric:: Footnotes
-
-.. [#f7] `examples/robust_curve_fitting.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/robust_curve_fitting.cc>`_
-
-
-Bundle Adjustment
-=================
-
-One of the main reasons for writing Ceres was our need to solve large
-scale bundle adjustment problems [HartleyZisserman]_, [Triggs]_.
-
-Given a set of measured image feature locations and correspondences,
-the goal of bundle adjustment is to find 3D point positions and camera
-parameters that minimize the reprojection error. This optimization
-problem is usually formulated as a non-linear least squares problem,
-where the error is the squared :math:`L_2` norm of the difference between
-the observed feature location and the projection of the corresponding
-3D point on the image plane of the camera. Ceres has extensive support
-for solving bundle adjustment problems.
-
-Let us solve a problem from the `BAL
-<http://grail.cs.washington.edu/projects/bal/>`_ dataset [#f8]_.
-
-The first step as usual is to define a templated functor that computes
-the reprojection error/residual. The structure of the functor is
-similar to the ``ExponentialResidual``, in that there is an
-instance of this object responsible for each image observation.
-
-Each residual in a BAL problem depends on a three dimensional point
-and a nine parameter camera. The nine parameters defining the camera
-are: three for rotation as a Rodrigues' axis-angle vector, three
-for translation, one for focal length and two for radial distortion.
-The details of this camera model can be found the `Bundler homepage
-<http://phototour.cs.washington.edu/bundler/>`_ and the `BAL homepage
-<http://grail.cs.washington.edu/projects/bal/>`_.
-
-.. code-block:: c++
-
- struct SnavelyReprojectionError {
-   SnavelyReprojectionError(double observed_x, double observed_y)
-       : observed_x(observed_x), observed_y(observed_y) {}
-
-   template <typename T>
-   bool operator()(const T* const camera,
-                   const T* const point,
-                   T* residuals) const {
-     // camera[0,1,2] are the angle-axis rotation.
-     T p[3];
-     ceres::AngleAxisRotatePoint(camera, point, p);
-     // camera[3,4,5] are the translation.
-     p[0] += camera[3]; p[1] += camera[4]; p[2] += camera[5];
-
-     // Compute the center of distortion. The sign change comes from
-     // the camera model that Noah Snavely's Bundler assumes, whereby
-     // the camera coordinate system has a negative z axis.
-     T xp = - p[0] / p[2];
-     T yp = - p[1] / p[2];
-
-     // Apply second and fourth order radial distortion.
-     const T& l1 = camera[7];
-     const T& l2 = camera[8];
-     T r2 = xp*xp + yp*yp;
-     T distortion = 1.0 + r2  * (l1 + l2  * r2);
-
-     // Compute final projected point position.
-     const T& focal = camera[6];
-     T predicted_x = focal * distortion * xp;
-     T predicted_y = focal * distortion * yp;
-
-     // The error is the difference between the predicted and observed position.
-     residuals[0] = predicted_x - T(observed_x);
-     residuals[1] = predicted_y - T(observed_y);
-     return true;
-   }
-
-    // Factory to hide the construction of the CostFunction object from
-    // the client code.
-    static ceres::CostFunction* Create(const double observed_x,
-                                       const double observed_y) {
-      return new ceres::AutoDiffCostFunction<SnavelyReprojectionError, 2, 9, 3>
-        (observed_x, observed_y);
-    }
-
-   double observed_x;
-   double observed_y;
- };
-
-
-Note that unlike the examples before, this is a non-trivial function
-and computing its analytic Jacobian is a bit of a pain. Automatic
-differentiation makes life much simpler. The function
-:func:`AngleAxisRotatePoint` and other functions for manipulating
-rotations can be found in ``include/ceres/rotation.h``.
-
-Given this functor, the bundle adjustment problem can be constructed
-as follows:
-
-.. code-block:: c++
-
- ceres::Problem problem;
- for (int i = 0; i < bal_problem.num_observations(); ++i) {
-   ceres::CostFunction* cost_function =
-       SnavelyReprojectionError::Create(
-            bal_problem.observations()[2 * i + 0],
-            bal_problem.observations()[2 * i + 1]);
-   problem.AddResidualBlock(cost_function,
-                            nullptr /* squared loss */,
-                            bal_problem.mutable_camera_for_observation(i),
-                            bal_problem.mutable_point_for_observation(i));
- }
-
-
-Notice that the problem construction for bundle adjustment is very
-similar to the curve fitting example -- one term is added to the
-objective function per observation.
-
-Since this is a large sparse problem (well large for ``DENSE_QR``
-anyways), one way to solve this problem is to set
-:member:`Solver::Options::linear_solver_type` to
-``SPARSE_NORMAL_CHOLESKY`` and call :func:`Solve`. And while this is
-a reasonable thing to do, bundle adjustment problems have a special
-sparsity structure that can be exploited to solve them much more
-efficiently. Ceres provides three specialized solvers (collectively
-known as Schur-based solvers) for this task. The example code uses the
-simplest of them ``DENSE_SCHUR``.
-
-.. code-block:: c++
-
- ceres::Solver::Options options;
- options.linear_solver_type = ceres::DENSE_SCHUR;
- options.minimizer_progress_to_stdout = true;
- ceres::Solver::Summary summary;
- ceres::Solve(options, &problem, &summary);
- std::cout << summary.FullReport() << "\n";
-
-For a more sophisticated bundle adjustment example which demonstrates
-the use of Ceres' more advanced features including its various linear
-solvers, robust loss functions and manifolds see
-`examples/bundle_adjuster.cc
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/bundle_adjuster.cc>`_
-
-
-.. rubric:: Footnotes
-
-.. [#f8] `examples/simple_bundle_adjuster.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/simple_bundle_adjuster.cc>`_
-
-Other Examples
-==============
-
-Besides the examples in this chapter, the  `example
-<https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/>`_
-directory contains a number of other examples:
-
-#. `bundle_adjuster.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/bundle_adjuster.cc>`_
-   shows how to use the various features of Ceres to solve bundle
-   adjustment problems.
-
-#. `circle_fit.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/circle_fit.cc>`_
-   shows how to fit data to a circle.
-
-#. `ellipse_approximation.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/ellipse_approximation.cc>`_
-   fits points randomly distributed on an ellipse with an approximate
-   line segment contour. This is done by jointly optimizing the
-   control points of the line segment contour along with the preimage
-   positions for the data points. The purpose of this example is to
-   show an example use case for ``Solver::Options::dynamic_sparsity``,
-   and how it can benefit problems which are numerically dense but
-   dynamically sparse.
-
-#. `denoising.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/denoising.cc>`_
-   implements image denoising using the `Fields of Experts
-   <http://www.gris.informatik.tu-darmstadt.de/~sroth/research/foe/index.html>`_
-   model.
-
-#. `nist.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/nist.cc>`_
-   implements and attempts to solves the `NIST
-   <http://www.itl.nist.gov/div898/strd/nls/nls_main.shtml>`_
-   non-linear regression problems.
-
-#. `more_garbow_hillstrom.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/more_garbow_hillstrom.cc>`_
-   A subset of the test problems from the paper
-
-   Testing Unconstrained Optimization Software
-   Jorge J. More, Burton S. Garbow and Kenneth E. Hillstrom
-   ACM Transactions on Mathematical Software, 7(1), pp. 17-41, 1981
-
-   which were augmented with bounds and used for testing bounds
-   constrained optimization algorithms by
-
-   A Trust Region Approach to Linearly Constrained Optimization
-   David M. Gay
-   Numerical Analysis (Griffiths, D.F., ed.), pp. 72-105
-   Lecture Notes in Mathematics 1066, Springer Verlag, 1984.
-
-
-#. `libmv_bundle_adjuster.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/libmv_bundle_adjuster.cc>`_
-   is the bundle adjustment algorithm used by `Blender <www.blender.org>`_/libmv.
-
-#. `libmv_homography.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/libmv_homography.cc>`_
-   This file demonstrates solving for a homography between two sets of
-   points and using a custom exit criterion by having a callback check
-   for image-space error.
-
-#. `robot_pose_mle.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/robot_pose_mle.cc>`_
-   This example demonstrates how to use the ``DynamicAutoDiffCostFunction``
-   variant of CostFunction. The ``DynamicAutoDiffCostFunction`` is meant to
-   be used in cases where the number of parameter blocks or the sizes are not
-   known at compile time.
-
-   This example simulates a robot traversing down a 1-dimension hallway with
-   noise odometry readings and noisy range readings of the end of the hallway.
-   By fusing the noisy odometry and sensor readings this example demonstrates
-   how to compute the maximum likelihood estimate (MLE) of the robot's pose at
-   each timestep.
-
-#. `slam/pose_graph_2d/pose_graph_2d.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/slam/pose_graph_2d/pose_graph_2d.cc>`_
-   The Simultaneous Localization and Mapping (SLAM) problem consists of building
-   a map of an unknown environment while simultaneously localizing against this
-   map. The main difficulty of this problem stems from not having any additional
-   external aiding information such as GPS. SLAM has been considered one of the
-   fundamental challenges of robotics. There are many resources on SLAM
-   [#f9]_. A pose graph optimization problem is one example of a SLAM
-   problem. The following explains how to formulate the pose graph based SLAM
-   problem in 2-Dimensions with relative pose constraints.
-
-   Consider a robot moving in a 2-Dimensional plane. The robot has access to a
-   set of sensors such as wheel odometry or a laser range scanner. From these
-   raw measurements, we want to estimate the trajectory of the robot as well as
-   build a map of the environment. In order to reduce the computational
-   complexity of the problem, the pose graph approach abstracts the raw
-   measurements away.  Specifically, it creates a graph of nodes which represent
-   the pose of the robot, and edges which represent the relative transformation
-   (delta position and orientation) between the two nodes. The edges are virtual
-   measurements derived from the raw sensor measurements, e.g. by integrating
-   the raw wheel odometry or aligning the laser range scans acquired from the
-   robot. A visualization of the resulting graph is shown below.
-
-   .. figure:: slam2d.png
-      :figwidth: 500px
-      :height: 400px
-      :align: center
-
-      Visual representation of a graph SLAM problem.
-
-   The figure depicts the pose of the robot as the triangles, the measurements
-   are indicated by the connecting lines, and the loop closure measurements are
-   shown as dotted lines. Loop closures are measurements between non-sequential
-   robot states and they reduce the accumulation of error over time. The
-   following will describe the mathematical formulation of the pose graph
-   problem.
-
-   The robot at timestamp :math:`t` has state :math:`x_t = [p^T, \psi]^T` where
-   :math:`p` is a 2D vector that represents the position in the plane and
-   :math:`\psi` is the orientation in radians. The measurement of the relative
-   transform between the robot state at two timestamps :math:`a` and :math:`b`
-   is given as: :math:`z_{ab} = [\hat{p}_{ab}^T, \hat{\psi}_{ab}]`. The residual
-   implemented in the Ceres cost function which computes the error between the
-   measurement and the predicted measurement is:
-
-   .. math:: r_{ab} =
-             \left[
-             \begin{array}{c}
-               R_a^T\left(p_b - p_a\right) - \hat{p}_{ab} \\
-               \mathrm{Normalize}\left(\psi_b - \psi_a - \hat{\psi}_{ab}\right)
-             \end{array}
-             \right]
-
-   where the function :math:`\mathrm{Normalize}()` normalizes the angle in the range
-   :math:`[-\pi,\pi)`, and :math:`R` is the rotation matrix given by
-
-   .. math:: R_a =
-             \left[
-             \begin{array}{cc}
-               \cos \psi_a & -\sin \psi_a \\
-               \sin \psi_a & \cos \psi_a \\
-             \end{array}
-             \right]
-
-   To finish the cost function, we need to weight the residual by the
-   uncertainty of the measurement. Hence, we pre-multiply the residual by the
-   inverse square root of the covariance matrix for the measurement,
-   i.e. :math:`\Sigma_{ab}^{-\frac{1}{2}} r_{ab}` where :math:`\Sigma_{ab}` is
-   the covariance.
-
-   Lastly, we use a manifold to normalize the orientation in the range
-   :math:`[-\pi,\pi)`.  Specially, we define the
-   :member:`AngleManifold::Plus()` function to be:
-   :math:`\mathrm{Normalize}(\psi + \Delta)` and
-   :member:`AngleManifold::Minus()` function to be
-   :math:`\mathrm{Normalize}(y) - \mathrm{Normalize}(x)`.
-
-   This package includes an executable :member:`pose_graph_2d` that will read a
-   problem definition file. This executable can work with any 2D problem
-   definition that uses the g2o format. It would be relatively straightforward
-   to implement a new reader for a different format such as TORO or
-   others. :member:`pose_graph_2d` will print the Ceres solver full summary and
-   then output to disk the original and optimized poses (``poses_original.txt``
-   and ``poses_optimized.txt``, respectively) of the robot in the following
-   format:
-
-   .. code-block:: bash
-
-      pose_id x y yaw_radians
-      pose_id x y yaw_radians
-      pose_id x y yaw_radians
-
-   where ``pose_id`` is the corresponding integer ID from the file
-   definition. Note, the file will be sorted in ascending order for the
-   ``pose_id``.
-
-   The executable :member:`pose_graph_2d` expects the first argument to be
-   the path to the problem definition. To run the executable,
-
-   .. code-block:: bash
-
-      /path/to/bin/pose_graph_2d /path/to/dataset/dataset.g2o
-
-   A python script is provided to visualize the resulting output files.
-
-   .. code-block:: bash
-
-      /path/to/repo/examples/slam/pose_graph_2d/plot_results.py --optimized_poses ./poses_optimized.txt --initial_poses ./poses_original.txt
-
-   As an example, a standard synthetic benchmark dataset [#f10]_ created by
-   Edwin Olson which has 3500 nodes in a grid world with a total of 5598 edges
-   was solved.  Visualizing the results with the provided script produces:
-
-   .. figure:: manhattan_olson_3500_result.png
-      :figwidth: 600px
-      :height: 600px
-      :align: center
-
-   with the original poses in green and the optimized poses in blue. As shown,
-   the optimized poses more closely match the underlying grid world. Note, the
-   left side of the graph has a small yaw drift due to a lack of relative
-   constraints to provide enough information to reconstruct the trajectory.
-
-   .. rubric:: Footnotes
-
-   .. [#f9] Giorgio Grisetti, Rainer Kummerle, Cyrill Stachniss, Wolfram
-      Burgard. A Tutorial on Graph-Based SLAM. IEEE Intelligent Transportation
-      Systems Magazine, 52(3):199-222, 2010.
-
-   .. [#f10] E. Olson, J. Leonard, and S. Teller, “Fast iterative optimization of
-      pose graphs with poor initial estimates,” in Robotics and Automation
-      (ICRA), IEEE International Conference on, 2006, pp. 2262-2269.
-
-#. `slam/pose_graph_3d/pose_graph_3d.cc
-   <https://ceres-solver.googlesource.com/ceres-solver/+/master/examples/slam/pose_graph_3d/pose_graph_3d.cc>`_
-   The following explains how to formulate the pose graph based SLAM problem in
-   3-Dimensions with relative pose constraints. The example also illustrates how
-   to use Eigen's geometry module with Ceres's automatic differentiation
-   functionality.
-
-   The robot at timestamp :math:`t` has state :math:`x_t = [p^T, q^T]^T` where
-   :math:`p` is a 3D vector that represents the position and :math:`q` is the
-   orientation represented as an Eigen quaternion. The measurement of the
-   relative transform between the robot state at two timestamps :math:`a` and
-   :math:`b` is given as: :math:`z_{ab} = [\hat{p}_{ab}^T, \hat{q}_{ab}^T]^T`.
-   The residual implemented in the Ceres cost function which computes the error
-   between the measurement and the predicted measurement is:
-
-   .. math:: r_{ab} =
-             \left[
-             \begin{array}{c}
-                R(q_a)^{T} (p_b - p_a) - \hat{p}_{ab} \\
-                2.0 \mathrm{vec}\left((q_a^{-1} q_b) \hat{q}_{ab}^{-1}\right)
-             \end{array}
-             \right]
-
-   where the function :math:`\mathrm{vec}()` returns the vector part of the
-   quaternion, i.e. :math:`[q_x, q_y, q_z]`, and :math:`R(q)` is the rotation
-   matrix for the quaternion.
-
-   To finish the cost function, we need to weight the residual by the
-   uncertainty of the measurement. Hence, we pre-multiply the residual by the
-   inverse square root of the covariance matrix for the measurement,
-   i.e. :math:`\Sigma_{ab}^{-\frac{1}{2}} r_{ab}` where :math:`\Sigma_{ab}` is
-   the covariance.
-
-   Given that we are using a quaternion to represent the orientation,
-   we need to use a manifold (:class:`EigenQuaternionManifold`) to
-   only apply updates orthogonal to the 4-vector defining the
-   quaternion. Eigen's quaternion uses a different internal memory
-   layout for the elements of the quaternion than what is commonly
-   used. Specifically, Eigen stores the elements in memory as
-   :math:`[x, y, z, w]` where the real part is last whereas it is
-   typically stored first. Note, when creating an Eigen quaternion
-   through the constructor the elements are accepted in :math:`w`,
-   :math:`x`, :math:`y`, :math:`z` order. Since Ceres operates on
-   parameter blocks which are raw double pointers this difference is
-   important and requires a different parameterization.
-
-   This package includes an executable :member:`pose_graph_3d` that will read a
-   problem definition file. This executable can work with any 3D problem
-   definition that uses the g2o format with quaternions used for the orientation
-   representation. It would be relatively straightforward to implement a new
-   reader for a different format such as TORO or others. :member:`pose_graph_3d`
-   will print the Ceres solver full summary and then output to disk the original
-   and optimized poses (``poses_original.txt`` and ``poses_optimized.txt``,
-   respectively) of the robot in the following format:
-
-   .. code-block:: bash
-
-      pose_id x y z q_x q_y q_z q_w
-      pose_id x y z q_x q_y q_z q_w
-      pose_id x y z q_x q_y q_z q_w
-      ...
-
-   where ``pose_id`` is the corresponding integer ID from the file
-   definition. Note, the file will be sorted in ascending order for the
-   ``pose_id``.
-
-   The executable :member:`pose_graph_3d` expects the first argument to be the
-   path to the problem definition. The executable can be run via
-
-   .. code-block:: bash
-
-      /path/to/bin/pose_graph_3d /path/to/dataset/dataset.g2o
-
-   A script is provided to visualize the resulting output files. There is also
-   an option to enable equal axes using ``--axes_equal``
-
-   .. code-block:: bash
-
-      /path/to/repo/examples/slam/pose_graph_3d/plot_results.py --optimized_poses ./poses_optimized.txt --initial_poses ./poses_original.txt
-
-   As an example, a standard synthetic benchmark dataset [#f9]_ where the robot is
-   traveling on the surface of a sphere which has 2500 nodes with a total of
-   4949 edges was solved. Visualizing the results with the provided script
-   produces:
-
-   .. figure:: pose_graph_3d_ex.png
-      :figwidth: 600px
-      :height: 300px
-      :align: center
diff --git a/third_party/ceres/docs/source/non_robust_least_squares_fit.png b/third_party/ceres/docs/source/non_robust_least_squares_fit.png
deleted file mode 100644
index 643d162..0000000
--- a/third_party/ceres/docs/source/non_robust_least_squares_fit.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/numerical_derivatives.rst b/third_party/ceres/docs/source/numerical_derivatives.rst
deleted file mode 100644
index 8d7fb3a..0000000
--- a/third_party/ceres/docs/source/numerical_derivatives.rst
+++ /dev/null
@@ -1,402 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-numerical_derivatives:
-
-===================
-Numeric derivatives
-===================
-
-The other extreme from using analytic derivatives is to use numeric
-derivatives. The key observation here is that the process of
-differentiating a function :math:`f(x)` w.r.t :math:`x` can be written
-as the limiting process:
-
-.. math::
-   Df(x) = \lim_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h}
-
-
-Forward Differences
-===================
-
-Now of course one cannot perform the limiting operation numerically on
-a computer so we do the next best thing, which is to choose a small
-value of :math:`h` and approximate the derivative as
-
-.. math::
-   Df(x) \approx \frac{f(x + h) - f(x)}{h}
-
-
-The above formula is the simplest most basic form of numeric
-differentiation. It is known as the *Forward Difference* formula.
-
-So how would one go about constructing a numerically differentiated
-version of ``Rat43Analytic`` (`Rat43
-<http://www.itl.nist.gov/div898/strd/nls/data/ratkowsky3.shtml>`_) in
-Ceres Solver. This is done in two steps:
-
-  1. Define *Functor* that given the parameter values will evaluate the
-     residual for a given :math:`(x,y)`.
-  2. Construct a :class:`CostFunction` by using
-     :class:`NumericDiffCostFunction` to wrap an instance of
-     ``Rat43CostFunctor``.
-
-.. code-block:: c++
-
-  struct Rat43CostFunctor {
-    Rat43CostFunctor(const double x, const double y) : x_(x), y_(y) {}
-
-    bool operator()(const double* parameters, double* residuals) const {
-      const double b1 = parameters[0];
-      const double b2 = parameters[1];
-      const double b3 = parameters[2];
-      const double b4 = parameters[3];
-      residuals[0] = b1 * pow(1.0 + exp(b2 -  b3 * x_), -1.0 / b4) - y_;
-      return true;
-    }
-
-    const double x_;
-    const double y_;
-  }
-
-  CostFunction* cost_function =
-    new NumericDiffCostFunction<Rat43CostFunctor, FORWARD, 1, 4>(x, y);
-
-This is about the minimum amount of work one can expect to do to
-define the cost function. The only thing that the user needs to do is
-to make sure that the evaluation of the residual is implemented
-correctly and efficiently.
-
-Before going further, it is instructive to get an estimate of the
-error in the forward difference formula. We do this by considering the
-`Taylor expansion <https://en.wikipedia.org/wiki/Taylor_series>`_ of
-:math:`f` near :math:`x`.
-
-.. math::
-   \begin{align}
-   f(x+h) &= f(x) + h Df(x) + \frac{h^2}{2!} D^2f(x) +
-   \frac{h^3}{3!}D^3f(x) + \cdots \\
-   Df(x) &= \frac{f(x + h) - f(x)}{h} - \left [\frac{h}{2!}D^2f(x) +
-   \frac{h^2}{3!}D^3f(x) + \cdots  \right]\\
-   Df(x) &= \frac{f(x + h) - f(x)}{h} + O(h)
-   \end{align}
-
-i.e., the error in the forward difference formula is
-:math:`O(h)` [#f4]_.
-
-
-Implementation Details
-----------------------
-
-:class:`NumericDiffCostFunction` implements a generic algorithm to
-numerically differentiate a given functor. While the actual
-implementation of :class:`NumericDiffCostFunction` is complicated, the
-net result is a :class:`CostFunction` that roughly looks something
-like the following:
-
-.. code-block:: c++
-
-  class Rat43NumericDiffForward : public SizedCostFunction<1,4> {
-     public:
-       Rat43NumericDiffForward(const Rat43Functor* functor) : functor_(functor) {}
-       virtual ~Rat43NumericDiffForward() {}
-       virtual bool Evaluate(double const* const* parameters,
-                             double* residuals,
-			     double** jacobians) const {
- 	 functor_(parameters[0], residuals);
-	 if (!jacobians) return true;
-	 double* jacobian = jacobians[0];
-	 if (!jacobian) return true;
-
-	 const double f = residuals[0];
-	 double parameters_plus_h[4];
-	 for (int i = 0; i < 4; ++i) {
-	   std::copy(parameters, parameters + 4, parameters_plus_h);
-	   const double kRelativeStepSize = 1e-6;
-	   const double h = std::abs(parameters[i]) * kRelativeStepSize;
-	   parameters_plus_h[i] += h;
-           double f_plus;
-  	   functor_(parameters_plus_h, &f_plus);
-	   jacobian[i] = (f_plus - f) / h;
-         }
-	 return true;
-       }
-
-     private:
-       std::unique_ptr<Rat43Functor> functor_;
-   };
-
-
-Note the choice of step size :math:`h` in the above code, instead of
-an absolute step size which is the same for all parameters, we use a
-relative step size of :math:`\text{kRelativeStepSize} = 10^{-6}`. This
-gives better derivative estimates than an absolute step size [#f2]_
-[#f3]_. This choice of step size only works for parameter values that
-are not close to zero. So the actual implementation of
-:class:`NumericDiffCostFunction`, uses a more complex step size
-selection logic, where close to zero, it switches to a fixed step
-size.
-
-
-Central Differences
-===================
-
-:math:`O(h)` error in the Forward Difference formula is okay but not
-great. A better method is to use the *Central Difference* formula:
-
-.. math::
-   Df(x) \approx \frac{f(x + h) - f(x - h)}{2h}
-
-Notice that if the value of :math:`f(x)` is known, the Forward
-Difference formula only requires one extra evaluation, but the Central
-Difference formula requires two evaluations, making it twice as
-expensive. So is the extra evaluation worth it?
-
-To answer this question, we again compute the error of approximation
-in the central difference formula:
-
-.. math::
-   \begin{align}
-  f(x + h) &= f(x) + h Df(x) + \frac{h^2}{2!}
-  D^2f(x) + \frac{h^3}{3!} D^3f(x) + \frac{h^4}{4!} D^4f(x) + \cdots\\
-    f(x - h) &= f(x) - h Df(x) + \frac{h^2}{2!}
-  D^2f(x) - \frac{h^3}{3!} D^3f(c_2) + \frac{h^4}{4!} D^4f(x) +
-  \cdots\\
-  Df(x) & =  \frac{f(x + h) - f(x - h)}{2h} + \frac{h^2}{3!}
-  D^3f(x) +  \frac{h^4}{5!}
-  D^5f(x) + \cdots \\
-  Df(x) & =  \frac{f(x + h) - f(x - h)}{2h} + O(h^2)
-   \end{align}
-
-The error of the Central Difference formula is :math:`O(h^2)`, i.e.,
-the error goes down quadratically whereas the error in the Forward
-Difference formula only goes down linearly.
-
-Using central differences instead of forward differences in Ceres
-Solver is a simple matter of changing a template argument to
-:class:`NumericDiffCostFunction` as follows:
-
-.. code-block:: c++
-
-  CostFunction* cost_function =
-    new NumericDiffCostFunction<Rat43CostFunctor, CENTRAL, 1, 4>(
-      new Rat43CostFunctor(x, y));
-
-But what do these differences in the error mean in practice? To see
-this, consider the problem of evaluating the derivative of the
-univariate function
-
-.. math::
-   f(x) = \frac{e^x}{\sin x - x^2},
-
-at :math:`x = 1.0`.
-
-It is easy to determine that :math:`Df(1.0) =
-140.73773557129658`. Using this value as reference, we can now compute
-the relative error in the forward and central difference formulae as a
-function of the absolute step size and plot them.
-
-.. figure:: forward_central_error.png
-   :figwidth: 100%
-   :align: center
-
-Reading the graph from right to left, a number of things stand out in
-the above graph:
-
- 1. The graph for both formulae have two distinct regions. At first,
-    starting from a large value of :math:`h` the error goes down as
-    the effect of truncating the Taylor series dominates, but as the
-    value of :math:`h` continues to decrease, the error starts
-    increasing again as roundoff error starts to dominate the
-    computation. So we cannot just keep on reducing the value of
-    :math:`h` to get better estimates of :math:`Df`. The fact that we
-    are using finite precision arithmetic becomes a limiting factor.
- 2. Forward Difference formula is not a great method for evaluating
-    derivatives. Central Difference formula converges much more
-    quickly to a more accurate estimate of the derivative with
-    decreasing step size. So unless the evaluation of :math:`f(x)` is
-    so expensive that you absolutely cannot afford the extra
-    evaluation required by central differences, **do not use the
-    Forward Difference formula**.
- 3. Neither formula works well for a poorly chosen value of :math:`h`.
-
-
-Ridders' Method
-===============
-
-So, can we get better estimates of :math:`Df` without requiring such
-small values of :math:`h` that we start hitting floating point
-roundoff errors?
-
-One possible approach is to find a method whose error goes down faster
-than :math:`O(h^2)`. This can be done by applying `Richardson
-Extrapolation
-<https://en.wikipedia.org/wiki/Richardson_extrapolation>`_ to the
-problem of differentiation. This is also known as *Ridders' Method*
-[Ridders]_.
-
-Let us recall, the error in the central differences formula.
-
-.. math::
-   \begin{align}
-   Df(x) & =  \frac{f(x + h) - f(x - h)}{2h} + \frac{h^2}{3!}
-   D^3f(x) +  \frac{h^4}{5!}
-   D^5f(x) + \cdots\\
-           & =  \frac{f(x + h) - f(x - h)}{2h} + K_2 h^2 + K_4 h^4 + \cdots
-   \end{align}
-
-The key thing to note here is that the terms :math:`K_2, K_4, ...`
-are independent of :math:`h` and only depend on :math:`x`.
-
-Let us now define:
-
-.. math::
-
-   A(1, m) = \frac{f(x + h/2^{m-1}) - f(x - h/2^{m-1})}{2h/2^{m-1}}.
-
-Then observe that
-
-.. math::
-
-   Df(x) = A(1,1) + K_2 h^2 + K_4 h^4 + \cdots
-
-and
-
-.. math::
-
-   Df(x) = A(1, 2) + K_2 (h/2)^2 + K_4 (h/2)^4 + \cdots
-
-Here we have halved the step size to obtain a second central
-differences estimate of :math:`Df(x)`. Combining these two estimates,
-we get:
-
-.. math::
-
-   Df(x) = \frac{4 A(1, 2) - A(1,1)}{4 - 1} + O(h^4)
-
-which is an approximation of :math:`Df(x)` with truncation error that
-goes down as :math:`O(h^4)`. But we do not have to stop here. We can
-iterate this process to obtain even more accurate estimates as
-follows:
-
-.. math::
-
-   A(n, m) =  \begin{cases}
-    \frac{\displaystyle f(x + h/2^{m-1}) - f(x -
-    h/2^{m-1})}{\displaystyle 2h/2^{m-1}} & n = 1 \\
-   \frac{\displaystyle 4^{n-1} A(n - 1, m + 1) - A(n - 1, m)}{\displaystyle 4^{n-1} - 1} & n > 1
-   \end{cases}
-
-It is straightforward to show that the approximation error in
-:math:`A(n, 1)` is :math:`O(h^{2n})`. To see how the above formula can
-be implemented in practice to compute :math:`A(n,1)` it is helpful to
-structure the computation as the following tableau:
-
-.. math::
-   \begin{array}{ccccc}
-   A(1,1) & A(1, 2) & A(1, 3) & A(1, 4) & \cdots\\
-          & A(2, 1) & A(2, 2) & A(2, 3) & \cdots\\
-	  &         & A(3, 1) & A(3, 2) & \cdots\\
-	  &         &         & A(4, 1) & \cdots \\
-	  &         &         &         & \ddots
-   \end{array}
-
-So, to compute :math:`A(n, 1)` for increasing values of :math:`n` we
-move from the left to the right, computing one column at a
-time. Assuming that the primary cost here is the evaluation of the
-function :math:`f(x)`, the cost of computing a new column of the above
-tableau is two function evaluations. Since the cost of evaluating
-:math:`A(1, n)`, requires evaluating the central difference formula
-for step size of :math:`2^{1-n}h`
-
-Applying this method to :math:`f(x) = \frac{e^x}{\sin x - x^2}`
-starting with a fairly large step size :math:`h = 0.01`, we get:
-
-.. math::
-   \begin{array}{rrrrr}
-   141.678097131 &140.971663667 &140.796145400 &140.752333523 &140.741384778\\
-   &140.736185846 &140.737639311 &140.737729564 &140.737735196\\
-   & &140.737736209 &140.737735581 &140.737735571\\
-   & & &140.737735571 &140.737735571\\
-   & & & &140.737735571\\
-   \end{array}
-
-Compared to the *correct* value :math:`Df(1.0) = 140.73773557129658`,
-:math:`A(5, 1)` has a relative error of :math:`10^{-13}`. For
-comparison, the relative error for the central difference formula with
-the same step size (:math:`0.01/2^4 = 0.000625`) is :math:`10^{-5}`.
-
-The above tableau is the basis of Ridders' method for numeric
-differentiation. The full implementation is an adaptive scheme that
-tracks its own estimation error and stops automatically when the
-desired precision is reached. Of course it is more expensive than the
-forward and central difference formulae, but is also significantly
-more robust and accurate.
-
-Using Ridder's method instead of forward or central differences in
-Ceres is again a simple matter of changing a template argument to
-:class:`NumericDiffCostFunction` as follows:
-
-.. code-block:: c++
-
-  CostFunction* cost_function =
-    new NumericDiffCostFunction<Rat43CostFunctor, RIDDERS, 1, 4>(
-      new Rat43CostFunctor(x, y));
-
-The following graph shows the relative error of the three methods as a
-function of the absolute step size. For Ridders's method we assume
-that the step size for evaluating :math:`A(n,1)` is :math:`2^{1-n}h`.
-
-.. figure:: forward_central_ridders_error.png
-   :figwidth: 100%
-   :align: center
-
-Using the 10 function evaluations that are needed to compute
-:math:`A(5,1)` we are able to approximate :math:`Df(1.0)` about a 1000
-times better than the best central differences estimate. To put these
-numbers in perspective, machine epsilon for double precision
-arithmetic is :math:`\approx 2.22 \times 10^{-16}`.
-
-Going back to ``Rat43``, let us also look at the runtime cost of the
-various methods for computing numeric derivatives.
-
-==========================   =========
-CostFunction                 Time (ns)
-==========================   =========
-Rat43Analytic                      255
-Rat43AnalyticOptimized              92
-Rat43NumericDiffForward            262
-Rat43NumericDiffCentral            517
-Rat43NumericDiffRidders           3760
-==========================   =========
-
-As expected, Central Differences is about twice as expensive as
-Forward Differences and the remarkable accuracy improvements of
-Ridders' method cost an order of magnitude more runtime.
-
-Recommendations
-===============
-
-Numeric differentiation should be used when you cannot compute the
-derivatives either analytically or using automatic differentiation. This
-is usually the case when you are calling an external library or
-function whose analytic form you do not know or even if you do, you
-are not in a position to re-write it in a manner required to use
-:ref:`chapter-automatic_derivatives`.
-
-
-When using numeric differentiation, use at least Central Differences,
-and if execution time is not a concern or the objective function is
-such that determining a good static relative step size is hard,
-Ridders' method is recommended.
-
-.. rubric:: Footnotes
-
-.. [#f2] `Numerical Differentiation
-	 <https://en.wikipedia.org/wiki/Numerical_differentiation#Practical_considerations_using_floating_point_arithmetic>`_
-.. [#f3] [Press]_ Numerical Recipes, Section 5.7
-.. [#f4] In asymptotic error analysis, an error of :math:`O(h^k)`
-	 means that the absolute-value of the error is at most some
-	 constant times :math:`h^k` when :math:`h` is close enough to
-	 :math:`0`.
diff --git a/third_party/ceres/docs/source/pose_graph_3d_ex.png b/third_party/ceres/docs/source/pose_graph_3d_ex.png
deleted file mode 100644
index ae2cfc3..0000000
--- a/third_party/ceres/docs/source/pose_graph_3d_ex.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/robust_least_squares_fit.png b/third_party/ceres/docs/source/robust_least_squares_fit.png
deleted file mode 100644
index 89003c9..0000000
--- a/third_party/ceres/docs/source/robust_least_squares_fit.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/slam2d.png b/third_party/ceres/docs/source/slam2d.png
deleted file mode 100644
index ad287ee..0000000
--- a/third_party/ceres/docs/source/slam2d.png
+++ /dev/null
Binary files differ
diff --git a/third_party/ceres/docs/source/solving_faqs.rst b/third_party/ceres/docs/source/solving_faqs.rst
deleted file mode 100644
index 3842e4d..0000000
--- a/third_party/ceres/docs/source/solving_faqs.rst
+++ /dev/null
@@ -1,168 +0,0 @@
-.. _chapter-solving_faqs:
-
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-=======
-Solving
-=======
-
-#. How do I evaluate the Jacobian for a solved problem?
-
-   Using :func:`Problem::Evaluate`.
-
-#. How do I choose the right linear solver?
-
-   When using the ``TRUST_REGION`` minimizer, the choice of linear
-   solver is an important decision. It affects solution quality and
-   runtime. Here is a simple way to reason about it.
-
-   1. For small (a few hundred parameters) or dense problems use
-      ``DENSE_QR``.
-
-   2. For general sparse problems (i.e., the Jacobian matrix has a
-      substantial number of zeros) use
-      ``SPARSE_NORMAL_CHOLESKY``.
-
-   3. For bundle adjustment problems with up to a hundred or so
-      cameras, use ``DENSE_SCHUR``.
-
-   4. For larger bundle adjustment problems with sparse Schur
-      Complement/Reduced camera matrices use ``SPARSE_SCHUR``.
-
-      If you do not have access to these libraries for whatever
-      reason, ``ITERATIVE_SCHUR`` with ``SCHUR_JACOBI`` is an
-      excellent alternative.
-
-   5. For large bundle adjustment problems (a few thousand cameras or
-      more) use the ``ITERATIVE_SCHUR`` solver. There are a number of
-      preconditioner choices here. ``SCHUR_JACOBI`` offers an
-      excellent balance of speed and accuracy. This is also the
-      recommended option if you are solving medium sized problems for
-      which ``DENSE_SCHUR`` is too slow but ``SuiteSparse`` is not
-      available.
-
-      .. NOTE::
-
-        If you are solving small to medium sized problems, consider
-        setting ``Solver::Options::use_explicit_schur_complement`` to
-        ``true``, it can result in a substantial performance boost.
-
-      If you are not satisfied with ``SCHUR_JACOBI``'s performance try
-      ``CLUSTER_JACOBI`` and ``CLUSTER_TRIDIAGONAL`` in that
-      order. They require that you have ``SuiteSparse``
-      installed. Both of these preconditioners use a clustering
-      algorithm. Use ``SINGLE_LINKAGE`` before ``CANONICAL_VIEWS``.
-
-#. Use :func:`Solver::Summary::FullReport` to diagnose performance problems.
-
-   When diagnosing Ceres performance issues - runtime and convergence,
-   the first place to start is by looking at the output of
-   ``Solver::Summary::FullReport``. Here is an example
-
-   .. code-block:: bash
-
-     ./bin/bundle_adjuster --input ../data/problem-16-22106-pre.txt
-
-     iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
-        0  4.185660e+06    0.00e+00    2.16e+07   0.00e+00   0.00e+00  1.00e+04       0    7.50e-02    3.58e-01
-        1  1.980525e+05    3.99e+06    5.34e+06   2.40e+03   9.60e-01  3.00e+04       1    1.84e-01    5.42e-01
-        2  5.086543e+04    1.47e+05    2.11e+06   1.01e+03   8.22e-01  4.09e+04       1    1.53e-01    6.95e-01
-        3  1.859667e+04    3.23e+04    2.87e+05   2.64e+02   9.85e-01  1.23e+05       1    1.71e-01    8.66e-01
-        4  1.803857e+04    5.58e+02    2.69e+04   8.66e+01   9.93e-01  3.69e+05       1    1.61e-01    1.03e+00
-        5  1.803391e+04    4.66e+00    3.11e+02   1.02e+01   1.00e+00  1.11e+06       1    1.49e-01    1.18e+00
-
-     Ceres Solver v1.12.0 Solve Report
-     ----------------------------------
-                                          Original                  Reduced
-     Parameter blocks                        22122                    22122
-     Parameters                              66462                    66462
-     Residual blocks                         83718                    83718
-     Residual                               167436                   167436
-
-     Minimizer                        TRUST_REGION
-
-     Sparse linear algebra library    SUITE_SPARSE
-     Trust region strategy     LEVENBERG_MARQUARDT
-
-                                             Given                     Used
-     Linear solver                    SPARSE_SCHUR             SPARSE_SCHUR
-     Threads                                     1                        1
-     Linear solver threads                       1                        1
-     Linear solver ordering              AUTOMATIC                22106, 16
-
-     Cost:
-     Initial                          4.185660e+06
-     Final                            1.803391e+04
-     Change                           4.167626e+06
-
-     Minimizer iterations                        5
-     Successful steps                            5
-     Unsuccessful steps                          0
-
-     Time (in seconds):
-     Preprocessor                            0.283
-
-       Residual evaluation                   0.061
-       Jacobian evaluation                   0.361
-       Linear solver                         0.382
-     Minimizer                               0.895
-
-     Postprocessor                           0.002
-     Total                                   1.220
-
-     Termination:                   NO_CONVERGENCE (Maximum number of iterations reached.)
-
-  Let us focus on run-time performance. The relevant lines to look at
-  are
-
-
-   .. code-block:: bash
-
-     Time (in seconds):
-     Preprocessor                            0.283
-
-       Residual evaluation                   0.061
-       Jacobian evaluation                   0.361
-       Linear solver                         0.382
-     Minimizer                               0.895
-
-     Postprocessor                           0.002
-     Total                                   1.220
-
-
-  Which tell us that of the total 1.2 seconds, about .3 seconds was
-  spent in the linear solver and the rest was mostly spent in
-  preprocessing and jacobian evaluation.
-
-  The preprocessing seems particularly expensive. Looking back at the
-  report, we observe
-
-   .. code-block:: bash
-
-     Linear solver ordering              AUTOMATIC                22106, 16
-
-  Which indicates that we are using automatic ordering for the
-  ``SPARSE_SCHUR`` solver. This can be expensive at times. A straight
-  forward way to deal with this is to give the ordering manually. For
-  ``bundle_adjuster`` this can be done by passing the flag
-  ``-ordering=user``. Doing so and looking at the timing block of the
-  full report gives us
-
-   .. code-block:: bash
-
-     Time (in seconds):
-     Preprocessor                            0.051
-
-       Residual evaluation                   0.053
-       Jacobian evaluation                   0.344
-       Linear solver                         0.372
-     Minimizer                               0.854
-
-     Postprocessor                           0.002
-     Total                                   0.935
-
-
-
-  The preprocessor time has gone down by more than 5.5x!.
diff --git a/third_party/ceres/docs/source/spivak_notation.rst b/third_party/ceres/docs/source/spivak_notation.rst
deleted file mode 100644
index 3ac56ba..0000000
--- a/third_party/ceres/docs/source/spivak_notation.rst
+++ /dev/null
@@ -1,53 +0,0 @@
-.. default-domain:: cpp
-
-.. cpp:namespace:: ceres
-
-.. _chapter-spivak_notation:
-
-===============
-Spivak Notation
-===============
-
-To preserve our collective sanities, we will use Spivak's notation for
-derivatives. It is a functional notation that makes reading and
-reasoning about expressions involving derivatives simple.
-
-For a univariate function :math:`f`, :math:`f(a)` denotes its value at
-:math:`a`. :math:`Df` denotes its first derivative, and
-:math:`Df(a)` is the derivative evaluated at :math:`a`, i.e
-
-.. math::
-   Df(a) = \left . \frac{d}{dx} f(x) \right |_{x = a}
-
-:math:`D^kf` denotes the :math:`k^{\text{th}}` derivative of :math:`f`.
-
-For a bi-variate function :math:`g(x,y)`. :math:`D_1g` and
-:math:`D_2g` denote the partial derivatives of :math:`g` w.r.t the
-first and second variable respectively. In the classical notation this
-is equivalent to saying:
-
-.. math::
-
-   D_1 g = \frac{\partial}{\partial x}g(x,y) \text{ and }  D_2 g  = \frac{\partial}{\partial y}g(x,y).
-
-
-:math:`Dg` denotes the Jacobian of `g`, i.e.,
-
-.. math::
-
-  Dg = \begin{bmatrix} D_1g & D_2g \end{bmatrix}
-
-More generally for a multivariate function :math:`g:\mathbb{R}^n
-\longrightarrow \mathbb{R}^m`, :math:`Dg` denotes the :math:`m\times
-n` Jacobian matrix. :math:`D_i g` is the partial derivative of
-:math:`g` w.r.t the :math:`i^{\text{th}}` coordinate and the
-:math:`i^{\text{th}}` column of :math:`Dg`.
-
-Finally, :math:`D^2_1g` and :math:`D_1D_2g` have the obvious meaning
-as higher order partial derivatives.
-
-For more see Michael Spivak's book `Calculus on Manifolds
-<https://www.amazon.com/Calculus-Manifolds-Approach-Classical-Theorems/dp/0805390219>`_
-or a brief discussion of the `merits of this notation
-<http://www.vendian.org/mncharity/dir3/dxdoc/>`_ by
-Mitchell N. Charity.
diff --git a/third_party/ceres/docs/source/tutorial.rst b/third_party/ceres/docs/source/tutorial.rst
deleted file mode 100644
index a3fd212..0000000
--- a/third_party/ceres/docs/source/tutorial.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-.. _chapter-tutorial:
-
-========
-Tutorial
-========
-
-.. toctree::
-   :maxdepth: 3
-
-   nnls_tutorial
-   gradient_tutorial
diff --git a/third_party/ceres/docs/source/users.rst b/third_party/ceres/docs/source/users.rst
deleted file mode 100644
index b4f90fa..0000000
--- a/third_party/ceres/docs/source/users.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-.. _chapter-users:
-
-=====
-Users
-=====
-
-* At `Google <http://www.google.com>`_, Ceres is used to:
-
-  * Estimate the pose of `Street View`_ cars, aircrafts, and satellites.
-  * Build 3D models for `PhotoTours`_.
-  * Estimate satellite image sensor characteristics.
-  * Stitch `panoramas`_ on Android and iOS.
-  * Apply `Lens Blur`_ on Android.
-  * Solve `bundle adjustment`_ and `SLAM`_ problems in `Project
-    Tango`_.
-
-* `Willow Garage`_ uses Ceres to solve `SLAM`_ problems.
-* `Southwest Research Institute <http://www.swri.org/>`_ uses Ceres for
-  `calibrating robot-camera systems`_.
-* `Blender <http://www.blender.org>`_ uses Ceres for `planar
-  tracking`_ and `bundle adjustment`_.
-* `OpenMVG <http://imagine.enpc.fr/~moulonp/openMVG/>`_ an open source
-  multi-view geometry library uses Ceres for `bundle adjustment`_.
-* `Microsoft Research <http://research.microsoft.com/en-us/>`_ uses
-  Ceres for nonlinear optimization of objectives involving subdivision
-  surfaces under `skinned control meshes`_.
-* `Matterport <http://www.matterport.com>`_, uses Ceres for global
-  alignment of 3D point clouds and for pose graph optimization.
-* `Obvious Engineering <http://obviousengine.com/>`_ uses Ceres for
-  bundle adjustment for their 3D photography app `Seene
-  <http://seene.co/>`_.
-* The `Autonomous Systems Lab <http://www.asl.ethz.ch/>`_ at ETH
-  Zurich uses Ceres for
-
-  * Camera and Camera/IMU Calibration.
-  * Large scale optimization of visual, inertial, gps and
-    wheel-odometry data for long term autonomy.
-
-* `OpenPTrack <http://openptrack.org/>`_ uses Ceres for camera
-  calibration.
-* The `Intelligent Autonomous System Lab <http://robotics.dei.unipd.it/>`_
-  at University of Padova, Italy, uses Ceres for
-
-  * Camera/depth sensors network calibration.
-  * Depth sensor distortion map estimation.
-
-* `Theia <http://cs.ucsb.edu/~cmsweeney/theia>`_ is an open source
-  Structure from Motion library that uses Ceres for `bundle adjustment`_
-  and camera pose estimation.
-
-* The `Applied Research Laboratory <https://www.arl.psu.edu/>`_ at
-  Pennsylvania State University uses in their synthetic aperture Sonar
-  beamforming engine, called ASASIN , for estimating platform
-  kinematics.
-
-* `Colmap <https://github.com/colmap/colmap>`_ is an open source
-  structure from motion library that makes heavy use of Ceres for
-  bundle adjustment with support for many camera models and for other
-  non-linear least-squares problems (relative, absolute pose
-  refinement, etc.).
-
-
-
-.. _bundle adjustment: http://en.wikipedia.org/wiki/Structure_from_motion
-.. _Street View: http://youtu.be/z00ORu4bU-A
-.. _PhotoTours: http://google-latlong.blogspot.com/2012/04/visit-global-landmarks-with-photo-tours.html
-.. _panoramas: http://www.google.com/maps/about/contribute/photosphere/
-.. _Project Tango: https://www.google.com/atap/projecttango/
-.. _planar tracking: http://mango.blender.org/development/planar-tracking-preview/
-.. _Willow Garage: https://www.willowgarage.com/blog/2013/08/09/enabling-robots-see-better-through-improved-camera-calibration
-.. _Lens Blur: http://googleresearch.blogspot.com/2014/04/lens-blur-in-new-google-camera-app.html
-.. _SLAM: http://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping
-.. _calibrating robot-camera systems:
-   http://rosindustrial.org/news/2014/9/24/industrial-calibration-library-update-and-presentation
-.. _skinned control meshes: http://research.microsoft.com/en-us/projects/handmodelingfrommonoculardepth/
diff --git a/third_party/ceres/docs/source/version_history.rst b/third_party/ceres/docs/source/version_history.rst
deleted file mode 100644
index 50f8353..0000000
--- a/third_party/ceres/docs/source/version_history.rst
+++ /dev/null
@@ -1,1850 +0,0 @@
-.. default-domain:: cpp
-
-.. highlight:: c++
-
-.. cpp:namespace:: ceres
-
-
-.. _chapter-version-history:
-
-===============
-Version History
-===============
-
-2.2.0
-=====
-
-New Features
-------------
-
-#. Substantial improvement to threading performance across the board
-   (Dmitry Korchemkin)
-#. Mixed precision solves + iterative refinement when using ``CUDA`` or
-   CPU based dense linear solvers, or ``EIGEN_SPARSE`` as the sparse
-   linear algebra library. (Sameer Agarwal & Joydeep Biswas)
-#. Cuda based CGNR and preconditioner support (Joydeep Biswas & Sameer
-   Agarwal)
-#. Nested Dissection (``NESDIS``) is now supported as an ordering method
-   in addition to ``AMD``. (Sameer Agarwal, Alex Stewart & Sergiu
-   Deitsch)
-#. **Power Bundle Adjustment** is available as a linear solver and as
-   a preconditioner by the name of ``SCHUR POWER SERIES EXPANSION``
-   (Mark Shachkov).
-#. Generalized Euler Angle conversions (hs293go@)
-
-
-Backward Incompatible API Changes
----------------------------------
-
-#. :class:`LocalParameterization` has been removed, use
-   :class:`Manifold` instead.
-#. Ceres Solver now requires a C++17 compliant compiler.
-#. Ceres Solver now requires CMake version 3.16 or later.
-#. Ceres Solver now requires SuiteSparse version 4.5.6 or later.
-#. OpenMP and NO_THREADING backends have been removed. C++ threads is
-   how all threading is done.
-#. Support for ``CX_SPARSE`` as a sparse linear algebra backend has
-   been removed. Similar or better performance can be expected from
-   ``Eigen`` as the sparse linear algebra library.
-
-
-Bug Fixes & Minor Changes
--------------------------
-#. Optimize the computation of the LM diagonal in TinySolver
-#. Improvements to multi-threaded performance for small problems that
-   had regressed due to changes to threading (Dmitrity Korchemkin)
-#. Fix handling of M_PI for MSVC (Sergiu Deitsch)
-#. Add a default value for Solver::Summary::linear_solver_ordering_type (Sameer Agarwal)
-#. Make sure that the code compiles well with CUDA 11 (Dmitriy
-   Korchemkin)
-#. Rework MSVC warning suppression (Sergiu Deitsch)
-#. Add an example for EvaluationCallback (Sameer Agarwal)
-#. Add an example for IterationCallback (Sameer Agarwal)
-#. Add end-to-end BA tests for SCHUR_POWER_SERIES_EXPANSION (Sameer Agarwal)
-#. Update documentation for linear solvers (Sameer Agarwal)
-#. Add an accessor for the CostFunctor in DynamicAutoDiffCostFunction (Sameer Agarwal)
-#. Runtime check for cudaMallocAsync support (Dmitriy Korchemkin)
-#. Remove cuda-memcheck based tests (Sameer Agarwal)
-#. Modernize ``Sphinx`` related CMake handling as well the ``Sphinx``
-   build process in the terminal. (Sergiu Deitsch)
-#. Fix macos ``sprintf`` security related warnings (Sergiu Deitsch)
-#. Lots of Cuda releated build system fixes (Sergiu Deitsch, Dmitriy
-   Korchemkin, Jason Mak)
-#. Improved windows build support (Sergiu Deitsch)
-#. Various documentation fixes (Maxim Smolskiy, Evan Levine)
-#. Improved handling of large Jacobians (Sameer Agarwal)
-#. Improved handling of infinite initial cost (Sameer Agarwal)
-#. Improved traits support for Jets (Sameer Agarwal)
-#. Improved tests for Euler angle conversion routines (@Hs293Go)
-#. Use a std::tuple to store ProductManifold for better efficiency
-   (Sergiu Deitsch)
-#. Allow default construction of ProductManifold when underlying
-   manifolds have default constructors (Sergiu Deitsch)
-#. Move LineManifold and SphereManifold into their own headers (Sameer
-   Agarwal)
-#. Fix a byte vs number of elements error when dealing with CUDA
-   workspace computations (Joydeep Biswas)
-#. Hide and prevent internal symbols from being exported (Sergiu
-   Deitsch)
-#. Switch to imported SuiteSparse, CXSparse & METIS targets.
-#. Improve compilation on Ubuntu 20.04 (Sergiu Deitsch)
-#. Update to using gtest 1.11.0 (Sameer Agarwal)
-#. Fix Euler angle conversion code to not rely on constexpr
-   constrctors for Jets. (Sameer Agarwal)
-#. BlockRandomAccessSparseMatrix now uses a BlockSparseMatrix as
-   storage instead of TripletSparseMatrix. (Dmitriy Korchemkin)
-#. Deduction guide for DynamicAutoDiffCostFunction (Sergiu Deitsch)
-#. Explicit conversions from long to ints (Alexander Ivanov)
-#. Unused code deletion/commenting and code modernization (Alexander
-   Ivanov)
-#. Improve the bazel build & tests (Alexander Ivanov)
-#. Fix a bug in QuaternionRotatePoint introduced by the use of hypot
-   earlier in this release cycle (Jonathan Taylor & Sameer Agarwal)
-#. Lots of GitHub CI improvements (Sergiu Deitsch & Dmitry Korchemkin)
-#. Improve the robustness of the Cuda based dense linear algebra tests
-   (Joydeep Biswas)
-#. Refactor storage & threading support in BlockRandomAccessMatrix and
-   its subclasses (Sameer Agarwal)
-#. Fix a bug in CoordinateDescentMinimizer related to uninitialized
-   variables (Sameer Agarwal)
-#. Remove OpenMP and NO_THREADS backends. (Sameer Agarwal)
-#. Fix version string parsing starting with SuiteSparse 6.0 (Sergiu
-   Deitsch)
-#. Use FindCUDAToolkit for CMake >= 3.17 (Alex Stewart)
-#. Add a const accessor for the Problem::Options struct used by
-   Problem. (Alex Stewart)
-#. Fix a serious performance regression when using SuiteSparse
-   introduced in `d09f7e9d5e
-   <https://github.com/ceres-solver/ceres-solver/commit/d09f7e9d5e3bfab2d7ec7e81fd6a55786edca17a>`_. (Sameer
-   Agarwal)
-#. Fix the build on QNX (Alex Stewart)
-#. Improve testing macros and documentation for Manifolds (Alex
-   Stewart)
-#. Improved code formatting (Tyler Hovanec)
-#. Better use of std::unique_ptr in the code (Mike Vitus)
-#. Fix a memory leak in ContextImpl (Sameer Agarwal)
-#. Faster locking when num_thread = 1 (Sameer Agarwal)
-#. Fix how x_norm is computed in TrustRegionMinimizer (Sameer Agarwal)
-#. Faster JACOBI preconditioner for CGNR (Sameer Agarwal)
-#. Convert internal enums to class enums (Sameer Agarwal)
-#. Improve the code in small_blas to be more compiler friendly (Sameer
-   Agarwal)
-#. Add the ability to specify the pivot threshold in
-   ::class::`Covariance::Options` (Sameer Agarwal)
-#. Modernize the internals to use C++17 (Sameer Agarwal)
-#. Choose SPMV algorithm based on the CUDA SDK Version (Joydeep
-   Biswas)
-#. Better defaults in ``bundle_adjuster.cc`` (Sameer Agarwal)
-#. Use ``foo.data()`` instead of ``&foo[0]`` (Sameer Agarwal)
-#. Fix GCC 12.1.1 LTO -Walloc-size-larger-than= warnings (Sergiu
-   Deitsch)
-#. Improved determinism in tests by re-using the same PRNG (Sergiu
-   Deitsch)
-#. Improved docs for ``vcpkg`` installation. (Sergiu Deitsch)
-#. Update FindGlog.cmake to create glog::glog target (KrisThielemans@)
-#. Improve consistency & correctness of Sphere & Line Manifolds
-   (Julio L. Paneque)
-#. Remove ``ceres/internal/random.h`` in favor of ``<random>``.
-#. Fix a crash in ``InnerProductComputer`` (Sameer Agarwal)
-#. Various fixes to improve compilation on windows using MinGW & MSVC
-   (Sergiu Deitsch)
-#. Fix fmin/fmax() to use Jet averaging on equality (Alex Stewart)
-#. Fix use of conditional preprocessor checks within a macro in tests
-   (Alex Stewart)
-#. Better support for ``CUDA memcheck`` (Joydeep Biswas)
-#. Improve the logic for linking to the platform specific threading
-   library (Sergiu Deitsch)
-#. Generate the version string at compile time (Sergiu Deitsch)
-#. :class:`NumericDiffFirstOrderFunction` can now take a dynamically
-   sized parameter vector. (Sameer Agarwal)
-#. Fix compilation with SuiteSparse 7.2.0 (Mark Shackov)
-
-2.1.0
-=====
-
-New Features
-------------
-
-#. Support for CUDA based dense solvers - ``DENSE_QR``,
-   ``DENSE_NORMAL_CHOLESKY`` & ``DENSE_SCHUR`` (Joydeep Biswas, Sameer
-   Agarwal)
-
-#. :class:`Manifold` is the new
-   :class:`LocalParameterization`. Version 2.1 is the transition
-   release where users can use both :class:`LocalParameterization` as
-   well as :class:`Manifold` objects as they transition from the
-   former to the latter. :class:`LocalParameterization` will be
-   removed in version 2.2. There should be no numerical change to the
-   results as a result of this change. (Sameer Agarwal, Johannes Beck,
-   Sergiu Deitsch)
-
-#. A number of changes to :class:`Jet` s (Sergiu Deitsch)
-
-   * :class:`Jet` gained support for, ``copysign``, ``fma`` (fused
-     multiply-add), ``midpoint`` (C++20 and above), ``lerp`` (C++20
-     and above), 3-argument ``hypot`` (C++17 and above), ``log10``,
-     ``log1p``, ``exp1m``, ``norm`` (squared :math:`L^2` norm).
-
-   * Quiet floating-point comparison: ``isless``, ``isgreater``,
-     ``islessgreater``, ``islessequal``, ``isgreaterequal``,
-     ``isunordered``, ``signbit``, ``fdim``
-
-   * Categorization and comparison operations are applied exclusively
-     and consistently to the scalar part of a Jet now: ``isnan``,
-     ``isinf``, ``isnormal``, ``isfinite``, ``fpclassify`` (new),
-     ``fmin``, ``fmax``
-
-   * It is now possible to safely compare a :class:`Jet` against a scalar
-     (or literal) without constructing a :class:`Jet` first (even if it's
-     nested):
-
-     .. code-block:: c++
-
-        Jet<Jet<Jet<T, N>, M>, O> x;
-        if (x == 2) { } // equivalent to x.a.a.a == 2
-
-
-     This enables interaction with various arithmetic functions that
-     expect a scalar like instance, such as ``boost::math::pow<-N>``
-     for reciprocal computation.
-
-#. Add :class:`NumericDiffFirstOrderFunction` (Sameer Agarwal)
-
-
-Backward Incompatible API Changes
----------------------------------
-
-#. :class:`LocalParameterization` is deprecated. It will be removed in
-   version 2.2. Use :class:`Manifold` instead.
-#. Classification functions like ``IsFinite`` are deprecated. Use the
-   ``C++11`` functions (``isfinite``, ``isnan`` etc) going
-   forward. However to maintain consistent behaviour with comparison
-   operators, these functions only inspect the scalar part of the
-   :class:`Jet`.
-
-Bug Fixes & Minor Changes
--------------------------
-
-#. Worked around an MSVC ordering bug when using C++17/20 (Sergiu
-   Deitsch)
-#. Added a CITATION.cff file. (Sergiu Deitsch)
-#. Updated included gtest version to 1.11.0. This should fix some
-   ``C++20`` compilation problems. (Sameer Agarwal).
-#. Workaround ``MSVC`` ``STL`` deficiency in ``C++17`` mode (Sergiu
-   Deitsch)
-#. Fix ``Jet`` test failures on ``ARMv8`` with recent ``Xcode``
-   (Sergiu Deitsch)
-#. Fix unused arguments of ``Make1stOrderPerturbation`` (Dmitriy
-   Korchemkin)
-#. Fix ``SuiteSparse`` path and version reporting (Sergiu Deitsch)
-#. Enable `GitHub` workflows and deprecate ``TravisCI`` (Sergiu
-   Deitsch)
-#. Add missing includes (Sergiu Deitsch, Sameer Agarwal)
-#. Fix path for ``cuda-memcheck`` tests (Joydeep Biswas)
-#. ClangFormat cleanup (Sameer Agarwal)
-#. Set ``CMP0057`` policy for ``IN_LIST`` operator in
-   ``FindSuiteSparse.cmake`` (Brent Yi)
-#. Do not define unusable import targets (Sergiu Deitsch)
-#. Fix Ubuntu 18.04 shared library build (Sergiu Deitsch)
-#. Force ``C++`` linker when building the ``C`` API (Sergiu Deitsch)
-#. Modernize the code to be inline with ``C++14`` (Sergiu Deitsch,
-   Sameer Agarwal)
-#. Lots of fixes to make Ceres compile out of the box on Windows
-   (Sergiu Deitsch)
-#. Standardize path handling using ``GNUImstallDirs`` (Sergiu Deitsch)
-#. Add final specifier to classes to help the compiler with
-   devirtualization (Sameer Agarwal)
-#. LOTs of clean & modernization of the CMake build files (Sergiu
-   Deitsch & Alex Stewart)
-#. Simplification to the symbol export logic (Sergiu Deitsch)
-#. Add cmake option ``ENABLE_BITCODE`` for iOS builds (John Harrison)
-#. Add const accessor for functor wrapped by auto/numeric-diff objects
-   (Alex Stewart)
-#. Cleanup & refactor ``jet_test.cc``. (Sameer Agarwal)
-#. Fix docs of supported sparse backends for mixed precision solvers
-   (Alex Stewart)
-#. Fix C++20 compilation (Sergiu Deitsch)
-#. Add an example for ``BiCubicInterpolator`` (Dmitriy Korcchemkin)
-#. Add a section to the documentation on implicit and inverse function
-   theorems (Sameer Agarwal)
-#. Add a note about Trigg's correction (Sameer Agarwal)
-#. Fix the docs for ``Problem::RemoveResidualBlock`` &
-   ``Problem::RemoveParameterBlock`` (Sameer Agarwal)
-#. Fix an incorrect check in ``reorder_program.cc`` (William Gandler)
-#. Add ``function_tolerance`` based convergence testing to ``TinySolver``
-   (Sameer Agarwal).
-#. Fix a number of typos in ``rotation.h`` (@yiping)
-#. Fix a typo in ``interfacing_with_autodiff.rst`` (@tangobravo)
-#. Fix a matrix sizing bug in covariance_impl.cc (William Gandler)
-#. Fix a bug in ``system_test.cc`` (William Gandler)
-#. Fix the Jacobian computation in ``trust_region_minimizer_test.cc``
-   (William Gandler)
-#. Fix a bug in ``local_parameterization_test.cc`` (William Gandler)
-#. Add accessors to ``GradientProblem`` (Sameer Agarwal)
-#. Refactor ``small_blas_gemm_benchmark`` (Ahmed Taei)
-#. Refactor ``small_blas_test`` (Ahmed Taei)
-#. Fix dependency check for building documentation (Sumit Dey)
-#. Fix an errant double link in the docs (Timon Knigge)
-#. Fix a typo in the version history (Noah Snavely)
-#. Fix typo in LossFunctionWrapper sample code (Dmitriy Korchemkin)
-#. Add fmax/fmin overloads for scalars (Alex Karatarakis)
-#. Introduce benchmarks for ``Jet`` operations (Alexander Karatarakis)
-#. Fix typos in documentation and fix the documentation for
-   ``IterationSummary`` (Alexander Karatarakis)
-#. Do not check MaxNumThreadsAvailable if the thread number is set
-   to 1. (Fuhao Shi)
-#. Add a macro ``CERES_GET_FLAG``. (Sameer Agarwal)
-#. Reduce log spam in ``covariance_impl.cc`` (Daniel Henell)
-#. Fix FindTBB version detection with TBB >= 2021.1.1 (Alex Stewart)
-#. Fix Eigen3_VERSION (Florian Berchtold)
-#. Allow Unity Build (Tobias Schluter)
-#. Make miniglog's InitGoogleLogging argument const (Tobias Schluter)
-#. Use portable expression for constant 2/sqrt(pi) (Tobias Schluter)
-#. Fix a number of compile errors related (Austin Schuch)
-
-   * ``format not a string literal``
-   * ``-Wno-maybe-uninitialized error``
-   * ``nonnull arg compared to NULL``
-   * ``-Wno-format-nonliteral``
-   * ``-Wmissing-field-initializers``
-   * ``-Werror``
-
-#. Fix ``cc_binary`` includes so examples build as an external repo
-   (Austin Schuh)
-#. Fix an explicit double in TinySolver (Bogdan Burlacu)
-#. Fix unit quaternion rotation (Mykyta Kozlov)
-
-
-2.0.0
-=====
-
-New Features
-------------
-#. Ceres Solver now requires a C++14 compatible compiler, Eigen
-   version >= 3.3 & CMake version >= 3.5, XCode version >= 11.2 (Sameer
-   Agarwal, Alex Stewart & Keir Mierle)
-#. C++ threading based multi-threading support. (Mike Vitus)
-#. :func:`Problem::AddResidualBlock`, :class:`SizedFunction`,
-   :class:`AutoDiffCostFunction`, :class:`NumericDiffCostFunction`
-   support an arbitrary number of parameter blocks using variadic
-   templates (Johannes Beck)
-#. On Apple platforms, support for Apple's Accelerate framework as a
-   sparse linear algebra library. (Alex Stewart)
-#. Significantly faster AutoDiff (Darius Rueckert)
-#. Mixed precision solves when using
-   ``SPARSE_NORMAL_CHOLESKY``. (Sameer Agarwal)
-#. ``LocalParameterization`` objects can have a zero sized tangent
-   size, which effectively makes the parameter block constant. In
-   particular, this allows for a ``SubsetParameterization`` that holds
-   all the coordinates of a parameter block constant. (Sameer Agarwal
-   & Emil Ernerfeldt)
-#. Visibility based preconditioning now works with ``Eigen`` and
-   ``CXSparse``. (Sameer Agarwal)
-#. Added :func:`Problem::EvaluateResidualBlock` and
-   :func:`Problem::EvaluateResidualBlockAssumingParametersUnchanged`. (Sameer
-   Agarwal)
-#. ``GradientChecker`` now uses ``RIDDERS`` method for more accurate
-   numerical derivatives. (Sameer Agarwal)
-#. Covariance computation uses a faster SVD algorithm (Johannes Beck)
-#. A new local parameterization for lines (Johannes Beck)
-#. A new (``SUBSET``) preconditioner for problems with general
-   sparsity. (Sameer Agarwal)
-#. Faster Schur elimination using faster custom BLAS routines for
-   small matrices. (yangfan)
-#. Automatic differentiation for ``FirstOrderFunction`` in the form of
-   :class:`AutoDiffFirstOrderFunction`. (Sameer Agarwal)
-#. ``TinySolverAutoDiffFunction`` now supports dynamic number of residuals
-   just like ``AutoDiffCostFunction``. (Johannes Graeter)
-
-Backward Incompatible API Changes
----------------------------------
-
-#. ``EvaluationCallback`` has been moved from ``Solver::Options`` to
-   ``Problem::Options`` for a more correct API.
-#. Removed ``Android.mk`` based build.
-#. ``Solver::Options::num_linear_solver_threads`` is no more.
-
-Bug Fixes & Minor Changes
--------------------------
-#. Use CMAKE_PREFIX_PATH to pass Homebrew install location (Alex Stewart)
-#. Add automatic differentiation support for ``Erf`` and ``Erfc``. (Morten Hennemose)
-#. Add a move constructor to ``AutoDiffCostFunction``, ``NumericDiffCostFunction``, ``DynamicAutoDiffCostFunction`` and ``DynamicNumericDiffCostFunction``. (Julian Kent & Sameer Agarwal)
-#. Fix potential for mismatched release/debug TBB libraries (Alex Stewart)
-#. Trust region minimizer now reports the gradient of the current state, rather than zero when it encounters an unsuccessful step (Sameer Agarwal & Alex Stewart)
-#. Unify symbol visibility configuration for all compilers (Taylor Braun-Jones)
-#. Fix the Bazel build so that it points GitLab instead of the old BitBucket repo for Eigen (Sameer Agarwal)
-#. Reformat source to be clang-format clean and add a script to format the repo using clang-format. (Nikolaus Demmel)
-#. Various documentation improvements (Sameer Agarwal, Carl Dehlin,
-   Bayes Nie, Chris Choi, Frank, Kuang Fangjun, Dmitriy Korchemkin,
-   huangqinjin, Patrik Huber, Nikolaus Demmel, Lorenzo Lamia)
-#. Huge number of build system simplification & cleanups (Alex
-   Stewart, NeroBurner, Alastair Harrison, Linus Mårtensson, Nikolaus Demmel)
-#. Intel TBB based threading removed (Mike Vitus)
-#. Allow :class:`SubsetParameterization` to accept an empty vector of
-   constant parameters. (Sameer Agarwal & Frédéric Devernay)
-#. Fix a bug in DynamicAutoDiffCostFunction when all parameters are
-   constant (Ky Waegel & Sameer Agarwal)
-#. Fixed incorrect argument name in ``RotationMatrixToQuaternion``
-   (Alex Stewart & Frank Dellaert)
-#. Do not export class template LineParameterization (huangqinjin)
-#. Change the type of parameter index/offset to match their getter/setter (huangqinjin)
-#. Initialize integer variables with integer instead of double (huangqinjin)
-#. Add std::numeric_limit specialization for Jets (Sameer Agarwal)
-#. Fix a MSVC type deduction bug in ComputeHouseholderVector (Sameer Agarwal)
-#. Allow LocalParameterizations to have zero local size. (Sameer Agarwal)
-#. Add photometric and relative-pose residuals to autodiff benchmarks (Nikolaus Demmel)
-#. Add a constant cost function to the autodiff benchmarks (Darius Rueckert)
-#. Add const to GetCovarianceMatrix#. (Johannes Beck)
-#. Fix Tukey loss function (Enrique Fernandez)
-#. Fix 3+ nested Jet constructor (Julian Kent)
-#. Fix windows MSVC build. (Johannes Beck)
-#. Fix invert PSD matrix. (Johannes Beck)
-#. Remove not used using declaration (Johannes Beck)
-#. Let Problem::SetParameterization be called more than once. (Sameer Agarwal)
-#. Make Problem movable. (Sameer Agarwal)
-#. Make EventLogger more efficient. (Sameer Agarwal)
-#. Remove a CHECK failure from covariance_impl.cc (Sameer Agarwal)
-#. Add a missing cast in rotation.h (Sameer Agarwal)
-#. Add a specialized SchurEliminator and integrate it for the case <2,3,6> (Sameer Agarwal)
-#. Remove use of SetUsage as it creates compilation problems. (Sameer Agarwal)
-#. Protect declarations of lapack functions under CERES_NO_LAPACK (Sameer Agarwal)
-#. Drop ROS dependency on catkin (Scott K Logan)
-#. Explicitly delete the copy constructor and copy assignment operator (huangqinjin)
-#. Use selfAdjoingView<Upper> in InvertPSDMatrix. (Sameer Agarwal)
-#. Speed up InvertPSDMatrix (Sameer Agarwal)
-#. Allow Solver::Options::max_num_line_search_step_size_iterations = 0. (Sameer Agarwal)
-#. Make LineSearchMinizer work correctly with negative valued functions. (Sameer Agarwal)
-#. Fix missing declaration warnings in Ceres code (Sergey Sharybin)
-#. Modernize ProductParameterization. (Johannes Beck)
-#.  Add some missing string-to-enum-to-string convertors. (Sameer Agarwal)
-#. Add checks in rotation.h for inplace operations. (Johannes Beck)
-#. Update Bazel WORKSPACE for newest Bazel (Keir Mierle)
-#. TripletSparseMatrix: guard against self-assignment (ngoclinhng)
-#. Fix Eigen alignment issues. (Johannes Beck)
-#. Add the missing <array> header to fixed_array.h (Sameer Agarwal)
-#. Switch to FixedArray implementation from abseil. (Johannes Beck)
-#. IdentityTransformation -> IdentityParameterization (Sameer Agarwal)
-#. Reorder initializer list to make -Wreorder happy (Sam Hasinoff)
-#. Reduce machoness of macro definition in cost_functor_to_function_test.cc (Sameer Agarwal)
-#. Enable optional use of sanitizers (Alex Stewart)
-#. Fix a typo in cubic_interpolation.h (Sameer Agarwal)
-#. Update googletest/googlemock to db9b85e2. (Sameer Agarwal)
-#. Fix Jacobian evaluation for constant parameter (Johannes Beck)
-#. AutoDiffCostFunction: use static_assert to check if the correct overload of the constructor is used. (Christopher Wecht)
-#. Avoid additional memory allocation in gradient checker (Justin Carpentier)
-#. Swap the order of definition of IsValidParameterDimensionSequence. (Sameer Agarwal)
-#. Add ParameterBlock::IsSetConstantByUser() (Sameer Agarwal)
-#. Add parameter dims for variadic sized cost function (Johannes Beck)
-#. Remove trailing zero parameter block sizes (Johannes Beck)
-#. Adding integer sequence and algorithms (Johannes Beck)
-#. Improve readability of LocalParameterization code. (Sameer Agarwal)
-#. Simplifying Init in manual contructor (Johannes Beck)
-#. Fix typo in NIST url. (Alessandro Gentilini)
-#. Add a .clang-format file. (Sameer Agarwal)
-#. Make ConditionedCostFunction compatible with repeated CostFunction. (Sameer Agarwal)
-#. Remove conversions from a double to a Jet. (Kuang Fangjun)
-#. close the file on return. (Kuang Fangjun)
-#. Fix an error in the demo code for ceres::Jet. (Kuang Fangjun)
-#. Recheck the residual after a new call. (Kuang Fangjun)
-#. avoid recomputation. (Kuang Fangjun)
-#. Fix calculation of Solver::Summary::num_threads_used. (Alex Stewart)
-#. Convert calls to CHECK_NOTNULL to CHECK. (Sameer Agarwal)
-#. Add a missing <cstdint> to block_structure.h (Sameer Agarwal)
-#. Fix an uninitialized memory error in EvaluationCallbackTest (Sameer Agarwal)
-#. Respect bounds when using Solver::Options::check_gradients (Sameer Agarwal)
-#. Relax the limitation that SchurEliminator::Eliminate requires a rhs. (Sameer Agarwal)
-#. Fix three out of bounds errors in CompressedRowSparseMatrix. (Sameer Agarwal)
-#. Add Travis CI support. (Alex Stewart)
-#. Refactor Ceres threading option configuration. (Alex Stewart)
-#. Handle NULL permutation from SuiteSparseQR (Pau Gargallo)
-#. Remove chunk shuffle in multithreaded SchurEliminator (Norbert Wenzel)
-#. Add /bigobj to nist on MSVC. (Alex Stewart)
-#. Fix 'xxx.cc has no symbols' warnings. (Alex Stewart)
-#. Add a typedef to expose the scalar type used in a Jet. (Sameer Agarwal)
-#. Fix a use after free bug in the tests. (Sameer Agarwal)
-#. Simplify integration tests. (Sameer Agarwal)
-#. Converts std::unique_lock to std::lock_guard. (Mike Vitus)
-#. Bring the Bazel build in sync with the CMake build. (Sameer Agarwal)
-#. Adds a ParallelFor wrapper for no threads and OpenMP. (Mike Vitus)
-#. Improve the test coverage in small_blas_test (Sameer Agarwal)
-#. Handle possible overflow in TrustRegionStepEvaluator. (Sameer Agarwal)
-#. Fix lower-bound on result of minimising step-size polynomial. (Alex Stewart)
-#. Adds missing functional include in thread_pool.h (Mike Vitus)
-
-
-1.14.0
-======
-
-New Features
-------------
-
-#. New ``EvaluationCallback`` API. (Keir Mierle)
-#. TBB based threading (Yury Prokazov & Mike Vitus)
-#. C++11 threads based threading (Mike Vitus)
-#. A ``ceres::Context`` object to cache and keep track of global
-   state. (Mike Vitus)
-#. TinySolver - A small dense solver meant for solving small problems
-   really fast. [EXPERIMENTAL] (Keir Mierle & Sameer Agarwal)
-#. Bazel Build. (Keir Mierle & Rodrigo Queiro)
-
-
-Backward Incompatible API Changes
----------------------------------
-
-#. ``Solver::Options::num_linear_solver_threads`` is deprecated,
-   ``Solver::Options::num_threads`` controls all parallelism in Ceres
-   Solver now. Similarly,
-   ``Solver::Summary::num_linear_solver_threads_given`` and
-   ``Solver::Summary::num_linear_solver_threads_used`` are also
-   deprecated.
-
-
-Bug Fixes & Minor Changes
--------------------------
-
-#. Remove armv7 from target architectures when building for iOS >= 11. (Alex Stewart)
-#. Corrects the documentation of Problem::AddResidualBlock. (Mike Vitus)
-#. Fixes the configuration check in port.h. (Mike Vitus)
-#. Add small_blas_gemm_benchmark. (Sameer Agarwal)
-#. Implement some C++11 math functions for Jet (Emil Ernerfeldt)
-#. Fix integer conversion warning in MSVC. (Alex Stewart)
-#. Improve NDK build error handling (Keir Mierle)
-#. Fix build: -Wreorder, test fail (Keir Mierle)
-#. An implementation of SubsetPreconditioner. (Sameer Agarwal)
-#. Split bundle adjustment tests into individual binaries (Keir Mierle)
-#. Require Eigen >= 3.3.4 on aarch64. (Alex Stewart)
-#. Fix TBB detection on Windows. (Alex Stewart)
-#. Improve ExecutionSummary (Sameer Agarwal)
-#. Remove as typo from callbacks.h (Sameer Agarwal)
-#. Removes two unimplemented class functions. (Mike Vitus)
-#. Update EigenTypes to deal with 1 column matrices (Sameer Agarwal)
-#. Add GradientProblemSolver::Options::update_state_every_iteration (Sameer Agarwal)
-#. Fixes the pose graph example documentation. (Mike Vitus)
-#. Fix Eigen >= 3.3 compilation if EIGEN_DONT_VECTORIZE set (Janick Martinez Esturo)
-#. Add an optional dependency on the Google Benchmark library. (Sameer Agarwal)
-#. Fix the documentation for CostFunction::Evaluate. (Sameer Agarwal)
-#. Fix a mathematical typo. (Sameer Agarwal)
-#. Add TBB information to Ceres version string. (Alex Stewart)
-#. Move discussion of dependency licensing to Sphinx docs. (Alex Stewart)
-#. Fix an erroneous namespace comment (Sameer Agarwal)
-#. Fix use of unnamed type as template argument warnings on Clang. (Alex Stewart)
-#. Add link for CLA in docs; minor fixes (Keir Mierle)
-#. Fix tiny_solver_test (Sameer Agarwal)
-#. Improve compatibility with ceres::Solver (Sameer Agarwal)
-#. Refactor nist.cc to be compatible with TinySolver (Sameer Agarwal)
-#. Report timings with microsecond resolution (Thomas Gamper)
-#. Add missing Eigen traits to Jets (Sameer Agarwal)
-#. Use high-resolution timer on Windows (Thomas Gamper)
-#. Add a comment about default constructed reference counts= (Keir Mierle)
-#. Delete cost and loss functions when not in use. (Sameer Agarwal)
-#. Fix assert_ndk_version for >= r11. (Alex Stewart)
-#. Add docs explaining how to build Ceres with OpenMP on OS X. (Alex Stewart)
-#. Update LAPACK option to refer to direct use by Ceres only. (Alex Stewart)
-#. Hide optional SuiteSparse vars in CMake GUI by default. (Alex Stewart)
-#. Always hide TBB_LIBRARY in CMake GUI by default. (Alex Stewart)
-#. Fix typo in definition of f3 in powell example (x4 -> x3). (Alex Stewart)
-#. Fix suppression of C++11 propagation warning. (Alex Stewart)
-#. Add new Schur specialization for 2, 4, 6. (Chris Sweeney)
-#. Use const keyword for 'int thread_id' variables. (pmoulon)
-
-
-1.13.0
-======
-
-New Features
-------------
-#. ``LineSearchMinimizer`` and ``GradientProblemSolver`` are up to 2x
-   faster due to fewer function evaluations. (Sameer Agarwal)
-#. ``SPARSE_NORMAL_CHOLESKY`` is significantly faster because Ceres
-   now computes the normal equations exploiting the static block
-   sparsity structure. (Cheng Wang & Sameer Agarwal)
-#. Add compound with scalar operators for Jets. (Alex Stewart)
-#. Enable support for AVX instructions for Jets. (Alex Stewart)
-
-Backward Incompatible API Changes
----------------------------------
-The enum ``CovarianceAlgorithmType`` which controls the linear algebra
-algorithm used to compute the covariance used to combine the choice of
-the algorithm and the choice of the sparse linear algebra library into
-the enum name. So we had ``SUITE_SPARSE_QR`` and
-``EIGEN_SPARSE_QR``. ``Covariance::Options`` now has a separate member
-allowing the user to choose the sparse linear algebra library, just
-like the solver and ``CovarianceAlgorithmType`` now takes values
-``DENSE_SVD`` and ``SPARSE_QR``. This is a forward looking change that
-will allow us to develop more flexible covariance estimation
-algorithms with multiple linear algebra backends.
-
-Bug Fixes & Minor Changes
--------------------------
-#. Fix ``InvertPSDMatrix`` as it was triggering an Eigen assert in
-   Debug mode. (Philipp Hubner)
-#. Fix cmake error from CeresConfig.cmake when Ceres not found (Taylor
-   Braun-Jones)
-#. Completely refactored ``SparseNormalCholeskySolver``. (Sameer
-   Agarwal)
-#. Fixed time reporting in ``Summary::FullReport`` when
-   ``LineSearchMinimizer`` is used. (Sameer Agarwal)
-#. Remove unused file: collections_port.cc. (Sameer Agarwal)
-#. ``SPARSE_SCHUR`` + ``CX_SPARSE`` = Faster (Sameer Agarwal)
-#. Refactored a number of linear solver tests to be more thorough and
-   informative. (Sameer Agarwal)
-#. Pass user-specified search hints as HINTS not PATHS. (Alex Stewart)
-#. Prefer Eigen installs over exported build directories. (Alex
-   Stewart)
-#. Add OpenMP flags when compiling for C if enabled. (Alex Stewart)
-#. Add a missing ``CERES_EXPORT`` to GradientChecker (Sameer Agarwal)
-#. Use target_compile_features() to specify C++11 requirement if
-   available. (Alex Stewart)
-#. Update docs: .netrc --> .gitcookies (Keir Mierle)
-#. Fix implicit precision loss warning on 64-bit archs (Ricardo
-   Sanchez-Saez)
-#. Optionally use exported Eigen CMake configuration if
-   available. (Alex Stewart)
-#. Use ``Ceres_[SOURCE/BINARY]_DIR`` not ``CMAKE_XXX_DIR`` to support
-   nesting. (Alex Stewart)
-#. Update ``Problem::EvaluateOptions`` documentation. (Sameer Agarwal)
-#. Add public headers to CMake target for IDEs. (Devin Lane)
-#. Add an article on interfacing with automatic
-   differentiation. (Sameer Agarwal)
-#. Add default Fedora/Debian locations for CXSparse to search
-   paths. (Alex Stewart)
-#. Add a test for ``LineSearchMinimizer`` (Sameer Agarwal)
-#. Flatten the table of contents. (Sameer Agarwal)
-#. Fix when ``LineSearchMinimizer`` adds the ``IterationSummary``` to
-   ``Solver::Summary`` (Sameer Agarwal)
-#. Fix search path for miniglog headers when Ceres is exported. (Alex
-   Stewart)
-#. Fix ambiguous reference to ``WARNING`` when using miniglog. (Alex
-   Stewart)
-#. Fix Jet/Eigen compatibility for Eigen > 3.3 (Julien Pilet)
-#. Add max severity option when ``MINIGLOG`` is enabled (Taylor
-   Braun-Jones)
-#. Improvements to Schur template specializations (Sameer Agarwal)
-#. Added an article on derivatives (Sameer Agarwal)
-#. Require Eigen >= 3.3 to define ScalarBinaryOpTraits in Jet. (Alex
-   Stewart)
-#. A hacky fix for the Eigen::FullPivLU changes. (Sameer Agarwal)
-#. Specify ``ScalarBinaryOpTraits`` for Jet types. (Chris Sweeney)
-#. Remove spurious conversion from doubles to Jets. (Sameer Agarwal)
-#. Fix an error in the tutorial code for ``NumericDiffCostFunction``
-   (Sameer Agarwal)
-#. ``CERES_EXPORT`` fix to compile Ceres as DLL (Je Hyeong Hong)
-#. Fix detection of deprecated Bessel function names on MSVC. (Alex
-   Stewart)
-#. Ensure that partial evaluation of residuals triggers an error
-   (Sameer Agarwal)
-#. Fix detection of CMake-built glog on Windows. (Alex Stewart)
-#. Add additional search paths for glog & Eigen on Windows. (Alex
-   Stewart)
-#. Various minor grammar and bug fixes to the documentation (Sameer
-   Agarwal, Alex Stewart, William Rucklidge)
-
-
-1.12.0
-======
-
-New Features
-------------
-#. Aligned ``Jet`` matrices for improved automatic differentiation
-   performance. (Andrew Hunter)
-#. Auto-differentiable implementations of Bessel functions, ``floor``,
-   and ``ceil`` (Alessandro Gentilini & Michael Vitus)
-#. New 2D and 3D SLAM examples. (Michael Vitus)
-#. Added ``EigenQuaternionParameterization``. (Michael Vitus)
-#. Added ``Problem::IsParameterBlockConstant`` (Thomas Schneider)
-#. A complete refactoring of ``TrustRegionMinimizer``. (Sameer Agarwal)
-#. Gradient checking cleanup and local parameterization bugfix (David
-   Gossow)
-
-
-Backward Incompatible API Changes
----------------------------------
-#. ``Solver::Options::numeric_derivative_relative_step_size`` has been
-   renamed to
-   ``Solver::Options::gradient_check_numeric_derivative_relative_step_size``. (Sameer
-   Agarwal)
-
-Bug Fixes & Minor Changes
--------------------------
-#. Clear XXX_FOUND in Find<XXX>.cmake prior to searching. (Alex
-   Stewart)
-#. Fix versioning in the documentation (Sameer Agarwal)
-#. Fix missing gflags imported target definition in
-   CeresConfig.cmake. (Alex Stewart)
-#. Make gflags a public dependency of Ceres if it and glog are
-   found. (Alex Stewart)
-#. Add support for glog exported CMake target. (Alex Stewart)
-#. Use ``google::GLOG_WARNING`` instead of ``WARNING`` in tests to
-   support MSVC. (Alex Stewart)
-#. Update gtest and gmock to
-   ``a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47`` (Sameer Agarwal)
-#. Add MSVC-specific ``#define`` to expose math constants in
-   ``<cmath>``. (Alex Stewart)
-#. Fix typo. indepdendent -> independent (Hung Lun)
-#. Fix potential invalid reset of CMAKE_FIND_LIBRARY_PREFIXES on MSVC
-   (Alex Stewart)
-#. Fix use of alignas(0) which is not ignored on GCC (Alex Stewart)
-#. Use default alignment if alignof(std::max_align_t) < 16 with C++11
-   (Alex Stewart)
-#. Introduce a common base class for DynamicAutoDiffCostFunction and
-   DynamicNumericDiffCostFunction. (Sameer Agarwal)
-#. Fix an exact equality test causing breakage in
-   gradient_checker_test. (Sameer Agarwal)
-#. Add GradientProblemSolver::Options::parameter_tolerance. (Sameer
-   Agarwal)
-#. Add missing T() wrappers for constants. (Rob Carroll)
-#. Remove two checks from rotation.h (Sameer Agarwal)
-#. Relax the tolerance in QuaternionParameterizationTestHelper. (Je
-   Hyeong Hong)
-#. Occured -> Occurred. (Sameer Agarwal)
-#. Fix a test error in autodiff_test.cc. (Je Hyeong Hong)
-#. Fix documentation source for templated function in ``rotation.h``.
-#. Add ``package.xml`` to enable Catkin builds. (Damon Kohler)
-#. Relaxing Jacobian matching in Gradient Checker test. (David Gossow)
-#. Allow SubsetParameterization to hold all parameters constant
-   (Sameer Agarwal)
-#. Fix an Intel compiler error in covariance_impl.cc (Je Hyeong Hong)
-#. Removing duplicate include directive. (David Gossow)
-#. Remove two DCHECKs from CubicHermiteSpline. (Sameer Agarwal)
-#. Fix some compiler warnings. (Richard Trieu)
-#. Update ExpectArraysClose to use ExpectClose instead of
-   EXPECT_NEAR. (Phillip Hubner)
-#. FindWithDefault returns by value rather than reference. (@aradval)
-#. Fix compiler errors on some systems. (David Gossow)
-#. Note that Problem::Evaluate cannot be called from an
-   IterationCallback. (Sameer Agarwal)
-#. Use ProductParameterization in bundle_adjuster.cc (Sameer Agarwal)
-#. Enable support for OpenMP in Clang if detected. (Alex Stewart)
-#. Remove duplicate entry for the NIST example in the docs. (Michael
-   Vitus)
-#. Add additional logging for analyzing orderings (Sameer Agarwal)
-#. Add readme for the sampled_function example. (Michael Vitus)
-#. Use _j[0,1,n]() Bessel functions on MSVC to avoid deprecation
-   errors. (Alex Stewart & Kichang Kim)
-#. Fix: Copy minimizer option ``is_silent`` to
-   ``LineSearchDirection::Options`` (Nicolai Wojke)
-#. Fix typos in ``users.rst`` (Sameer Agarwal)
-#. Make some Jet comparisons exact. (Sameer Agarwal)
-#. Add colmap to users.rst (Sameer Agarwal)
-#. Fix step norm evaluation in LineSearchMinimizer (Sameer Agarwal)
-#. Remove use of -Werror when compiling Ceres. (Alex Stewart)
-#. Report Ceres compile options as components in find_package(). (Alex
-   Stewart)
-#. Fix a spelling error in nnls_modeling.rst (Timer)
-#. Only use collapse() directive with OpenMP 3.0 or higher. (Keir
-   Mierle)
-#. Fix install path for CeresConfig.cmake to be architecture-aware.
-#. Fix double conversion to degrees in rotation_test (Keir Mierle)
-#. Make Jet string output more readable (Keir Mierle)
-#. Fix rotation_test IsClose() and related tests (Keir Mierle)
-#. Loosen an exact equality in local_parameterization_test (Sameer
-   Agarwal)
-#. make_docs: Pass the file encoding to open() (Niels Ole Salscheider)
-#. Fix error message returned when using SUITE_SPARSE_QR in covariance
-   estimation on a ceres built without SuiteSparse support. (Simon
-   Rutishauser)
-#. Fix CXX11 option to be available on MinGW & CygWin, but not
-   MSVC. (Alex Stewart)
-#. Fix missing early return() in xxx_not_found() dependency
-   macros. (Alex Stewart)
-#. Initialize ``inner_iterations_were_useful_`` correctly. (Sameer
-   Agarwal)
-#. Add an implementation for GradientProblemSolver::Options::IsValid
-   (Sameer Agarwal)
-#. Fix use of va_copy() if compiling with explicit C++ version <
-   C++11. (Alex Stewart)
-#. Install CMake files to lib/cmake/Ceres (Niels Ole Salscheider)
-#. Allow users to override the documentation install directory. (Niels
-   Ole Salscheider)
-#. Add covariance matrix for a vector of parameters (Wannes Van Loock)
-#. Saner tolerances & stricter LRE test. (Sameer Agarwal)
-#. Fix a malformed sentence in the tutorial. (Sameer Agarwal)
-#. Add logging for sparse Cholesky factorization using Eigen. (Sameer
-   Agarwal)
-#. Use std::adjacent_find instead of std::unique. (Sameer Agarwal)
-#. Improve logging in CompressedRowJacobianWriter on crash. (Sameer
-   Agarwal)
-#. Fix free parameter block handling in covariance computation (Wannes
-   Van Loock)
-#. Report the number of line search steps in FullReport. (Sameer
-   Agarwal)
-#. Make CMake read Ceres version directly from
-   include/ceres/version.h. (Alex Stewart)
-#. Lots of code style/lint changes. (William Rucklidge)
-#. Fix covariance computation for constant blocks (Wannes Van Loock)
-#. Add IOS_DEPLOYMENT_TARGET variable to iOS.cmake (Eduard Feicho)
-#. Make miniglog threadsafe on non-windows system by using
-   localtime_r() instead of localtime() for time formatting (Simon
-   Rutishauser)
-
-1.11.0
-======
-
-New Features
-------------
-#. Adaptive numeric differentiation using Ridders' method. (Tal
-   Ben-Nun)
-#. Add ``CubicInterpolator`` and ``BiCubicInterpolator`` to allow
-   smooth interpolation of sampled functions and integration with
-   automatic differentiation.
-#. Add method to return covariance in tangent space. (Michael Vitus &
-   Steve Hsu)
-#. Add Homogeneous vector parameterization. (Michael Vitus)
-#. Add a ``ProductParameterization``, a local parameterization that
-   can be constructed as a cartesian product of other local
-   parameterization.
-#. Add DynamicCostFunctionToFunctor. (David Gossow)
-#. Optionally export Ceres build directory into local CMake package
-   registry.
-#. Faster ``SPARSE_NORMAL_CHOLESKY`` in the presence of dynamic
-   sparsity.
-
-Bug Fixes & Minor Changes
--------------------------
-#. Remove use of link-time optimisation (LTO) for all compilers due to
-   portability issues with gtest / type_info::operator== & Eigen with
-   Clang on OS X vs GCC 4.9+ on Linux requiring contradictory 'fixes'.
-#. Use link-time optimisation (LTO) only when compiling Ceres itself,
-   not tests or examples, to bypass gtest / type_info::operator==
-   issue.
-#. Use old minimum iOS version flags on Xcode < 7.0.
-#. Add gtest-specific flags when building/using as a shared library.
-#. Clean up iOS.cmake to use xcrun/xcodebuild & libtool.
-#. Import the latest version of ``googletest``.
-#. Refactored ``system_test`` into ``bundle_adjustment_test`` and
-   ``system_test``, where each test case is its own test.
-#. Fix invalid memory access bug in
-   ``CompressedRowSparseMatrix::AppendRows`` when it was called with a
-   matrix of size zero.
-#. Build position independent code when compiling Ceres statically
-   (Alexander Alekhin).
-#. Fix a bug in DetectStructure (Johannes Schonberger).
-#. Reduce memory footprint of SubsetParameterization (Johannes
-   Schonberger).
-#. Fix for reorder program unit test when built without suitesparse
-   (Sergey Sharybin).
-#. Fix a bug in the Schur eliminator (Werner Trobin).
-#. Fix a bug in the reordering code (Bernhard Zeisl).
-#. Add missing CERES_EXPORT to ComposedLoss (Simon Rutishauser).
-#. Add the option to use numeric differentiation to ``nist`` and
-   ``more_garbow_hillstrom``.
-#. Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI.
-#. Fix SparseNormalCholeskySolver with dynamic sparsity (Richie
-   Stebbing).
-#. Remove legacy dependency detection macros.
-#. Fix failed if() condition expansion if gflags is not found.
-#. Update all CMake to lowercase function name style.
-#. Update minimum iOS version to 7.0 for shared_ptr/unordered_map.
-#. Fix bug in gflags' <= 2.1.2 exported CMake configuration.
-#. Remove the spec file needed for generating RPMs.
-#. Fix a typo in small_blas.h (Werber Trobin).
-#. Cleanup FindGflags & use installed gflags CMake config if present.
-#. Add default glog install location on Windows to search paths
-   (bvanevery).
-#. Add default Eigen install location on Windows to search paths
-   (bvanevery).
-#. Fix explanation of config.h generation in bare config.h.
-#. Fix unused parameter compiler warnings in numeric_diff.h.
-#. Increase tolerance for a test in polynomial_test (Taylor Braun
-   Jones).
-#. Fix addition of Gerrit commit hook when Ceres is a git submodule
-   (Chris Cooper).
-#. Fix missing EIGEN_VERSION expansion typo.
-#. Fix links to SuiteSparse & CXSparse (Henrique Mendonça).
-#. Ensure Eigen is at least 3.1.0 for Eigen/SparseCore.
-#. Add option to use C++11 (not TR1) shared_ptr & unordered_map
-   (Norman Goldstein).
-#. Fix an incorrect usage message in bundle_adjuster.cc
-#. Gracefully disable docs if Sphinx is not found.
-#. Explicitly use (new) default OS X rpath policy if present.
-#. Add support of EIGEN_SPARSE type in
-   IsSparseLinearAlgebraLibraryTypeAvailable function (Pierre Moulon).
-#. Allow the LossFunction contained in a LossFunctionWrapper to be
-   NULL. This is consistent with how NULL LossFunctions are treated
-   everywhere else. (Simon Rutishauser).
-#. Improve numeric differentation near zero.
-#. Refactored DynamicNumericDiffCostFunction to use NumericDiff (Tal
-   Ben-Nun).
-#. Remove use of :caption tag in Sphinx.
-#. Add a small test to make sure GradientProblemSolver works correctly
-   (Petter Strandmark).
-#. Add simple unit tests for GradientProblem (Petter Strandmark).
-#. Make the robust curve fitting example robust.
-#. Homogenize convergence operators in docs and code (Johannes
-   Schonberger).
-#. Add parameter_tolerance convergence to line search minimizer
-   (Johannes Schonberger).
-#. Fix bug where pow(JetA,JetB) returned wrong result for JetA==0
-   (Russell Smith).
-#. Remove duplicate step norm computation (Johannes Schonberger).
-#. Enhance usability when encountering Eigen version mismatches
-   (Andrew Hundt).
-#. Add PLY file logger before and after BA in order to ease visual
-   comparison (Pierre Moulon).
-#. Fix CMake config file docs to include 2.8.x & 3.x styles.
-#. Python3 fixes (Markus Moll).
-#. Remove confusing code from DenseJacobianWriter (Michael Vitus).
-#. Add documentation on CMake package installation process.
-#. Revert a call to SolveUpperTriangularUsingCholesky.
-#. Make CERES_EIGEN_VERSION macro independent of CMake.
-#. Add versions of dependencies used to FullReport().
-#. Ensure local config.h is used if Ceres is already installed.
-#. Small messaging and comment updates in CMake
-#. Handle possible presence of library prefixes in MSVC (Sylvain
-   Duchêne).
-#. Use -O2 not -O3 on MinGW to workaround issue with Eigen
-   (s1m3mu3@gmail.com).
-#. Increase tolerance in small_blas test for Cygwin
-   (s1m3mu3@gmail.com).
-#. Fix iOS cmake file for cmake 3.0 (Jack Feng)
-#. Fix missing gflags shlwapi dependency on MinGW (s1m3mu3@gmail.com).
-#. Add thread dependency & fix namespace detection on Windows for
-   gflags (arrigo.benedetti@gmail.com).
-#. Rename macros in the public API to have a ``CERES_`` prefix.
-#. Fix ``OrderedGroup::Reverse()`` when it is empty (Chris Sweeney).
-#. Update the code to point to ceres-solver.org.
-#. Update documentation to point to the GitHub issue tracker.
-#. Disable ``LAPACK`` for iOS builds. (Greg Coombe)
-#. Force use of single-thread in ``Problem::Evaluate()`` without
-   OpenMP.
-#. Less strict check for multithreading. (Chris Sweeney)
-#. Update tolerances in small_blas_test.cc (Philipp Hubner)
-#. Documentation corrections (Steve Hsu)
-#. Fixed ``sampled_function.cc`` (Pablo Speciale)
-#. Fix example code in the documentation. (Rodney Hoskinson)
-#. Improve the error handling in Conjugate Gradients.
-#. Improve preconditioner documentation.
-#. Remove dead code from fpclassify.h.
-#. Make Android.mk threads sensitive.
-#. Changed the ``CURRENT_CONFIG_INSTALL_DIR`` to be a variable local
-   to Ceres. (Chris Sweeney)
-#. Fix typo in the comments in ``Jet.h``. (Julius Ziegler)
-#. Add the ASL at ETH Zurich, Theia & OpenPTrack to the list of users.
-#. Fixed a typo in the documentation. (Richard Stebbing)
-#. Fixed a boundary handling bug in the BiCubic interpolation
-   code. (Bernhard Zeisl)
-#. Fixed a ``MSVC`` compilation bug in the cubic interpolation code
-   (Johannes Schönberger)
-#. Add covariance related files to the Android build.
-#. Update Ubuntu 14.04 installation instructions. (Filippo Basso)
-#. Improved logging for linear solver failures.
-#. Improved crash messages in ``Problem``.
-#. Hide Homebrew related variables in CMake GUI.
-#. Add SuiteSparse link dependency for
-   compressed_col_sparse_matrix_utils_test.
-#. Autodetect Homebrew install prefix on OSX.
-#. Lint changes from William Rucklidge and Jim Roseborough.
-#. Remove ``using namespace std:`` from ``port.h``
-#. Add note about glog not currently compiling against gflags 2.1.
-#. Add explicit no sparse linear algebra library available option.
-#. Improve some wording in the FAQ. (Vasily Vylkov)
-#. Delete Incomplete LQ Factorization.
-#. Add a pointer to MacPorts. (Markus Moll)
-
-
-1.10.0
-======
-
-New Features
-------------
-#. Ceres Solver can now be used to solve general unconstrained
-   optimization problems. See the documentation for
-   ``GradientProblem`` and ``GradientProblemSolver``.
-#. ``Eigen`` can now be as a sparse linear algebra backend. This can
-   be done by setting
-   ``Solver::Options::sparse_linear_algebra_library_type`` to
-   ``EIGEN_SPARSE``. Performance should be comparable to
-   ``CX_SPARSE``.
-
-   .. NOTE::
-
-      Because ``Eigen`` is a header only library, and some of the code
-      related to sparse Cholesky factorization is LGPL, building Ceres
-      with support for Eigen's sparse linear algebra is disabled by
-      default and should be enabled explicitly.
-
-   .. NOTE::
-
-      For good performance, use Eigen version 3.2.2 or later.
-
-#. Added ``EIGEN_SPARSE_QR`` algorithm for covariance estimation using
-   ``Eigen``'s sparse QR factorization. (Michael Vitus)
-#. Faster inner iterations when using multiple threads.
-#. Faster ``ITERATIVE_SCHUR`` + ``SCHUR_JACOBI`` for small to medium
-   sized problems (see documentation for
-   ``Solver::Options::use_explicit_schur_complement``).
-#. Faster automatic Schur ordering.
-#. Reduced memory usage when solving problems with dynamic sparsity.
-#. ``CostFunctionToFunctor`` now supports dynamic number of residuals.
-#. A complete re-write of the problem preprocessing phase.
-#. ``Solver::Summary::FullReport`` now reports the build configuration
-   for Ceres.
-#. When building on Android, the ``NDK`` version detection logic has
-   been improved.
-#. The ``CERES_VERSION`` macro has been improved and replaced with the
-   ``CERES_VERSION_STRING`` macro.
-#. Added ``Solver::Options::IsValid`` which allows users to validate
-   their solver configuration before calling ``Solve``.
-#. Added ``Problem::GetCostFunctionForResidualBlock`` and
-   ``Problem::GetLossFunctionForResidualBlock``.
-#. Added Tukey's loss function. (Michael Vitus)
-#. Added RotationMatrixToQuaternion
-#. Compute & report timing information for line searches.
-#. Autodetect gflags namespace.
-#. Expanded ``more_garbow_hillstrom.cc``.
-#. Added a pointer to Tal Ben-Nun's MSVC wrapper to the docs.
-#. Added the ``<2,3,6>`` Schur template specialization. (Alessandro
-   Dal Grande)
-
-Backward Incompatible API Changes
----------------------------------
-#. ``NumericDiffFunctor`` has been removed. It's API was broken, and
-   the implementation was an unnecessary layer of abstraction over
-   ``CostFunctionToFunctor``.
-#. ``POLAK_RIBIRERE`` conjugate gradients direction type has been
-   renamed to ``POLAK_RIBIERE``.
-#. ``Solver::Options::solver_log`` has been removed. If needed this
-   iteration callback can easily be implemented in user code.
-#. The ``SPARSE_CHOLESKY`` algorithm for covariance estimation has
-   been removed. It is not rank revealing and numerically poorly
-   behaved. Sparse QR factorization is a much better way to do this.
-#. The ``SPARSE_QR`` algorithm for covariance estimation has been
-   renamed to ``SUITE_SPARSE_QR`` to be consistent with
-   ``EIGEN_SPARSE_QR``.
-#. ``Solver::Summary::preconditioner_type`` has been replaced with
-   ``Solver::Summary::preconditioner_type_given`` and
-   ``Solver::Summary::preconditioner_type_used`` to be more consistent
-   with how information about the linear solver is communicated.
-#. ``CERES_VERSION`` and ``CERES_ABI_VERSION`` macros were not
-   terribly useful. They have been replaced with
-   ``CERES_VERSION_MAJOR``, ``CERES_VERSION_MINOR`` ,
-   ``CERES_VERSION_REVISION`` and ``CERES_VERSION_ABI`` macros. In
-   particular the functionality of ``CERES_VERSION`` is provided by
-   ``CERES_VERSION_STRING`` macro.
-
-Bug Fixes
----------
-#. Do not try the gradient step if TR step line search fails.
-#. Fix missing include in libmv_bundle_adjuster on OSX.
-#. Conditionally log evaluation failure warnings.
-#. Runtime uses four digits after the decimal in Summary:FullReport.
-#. Better options checking for TrustRegionMinimizer.
-#. Fix RotationMatrixToAngleAxis when the angle of rotation is near
-   PI. (Tobias Strauss)
-#. Sometimes gradient norm based convergence would miss a step with a
-   substantial solution quality improvement. (Rodney Hoskinson)
-#. Ignore warnings from within Eigen/SparseQR (3.2.2).
-#. Fix empty Cache HELPSTRING parsing error on OS X 10.10 Yosemite.
-#. Fix a formatting error TrustRegionMinimizer logging.
-#. Add an explicit include for local_parameterization.h (cooordz)
-#. Fix a number of typos in the documentation (Martin Baeuml)
-#. Made the logging in TrustRegionMinimizer consistent with
-   LineSearchMinimizer.
-#. Fix some obsolete documentation in CostFunction::Evaluate.
-#. Fix CG solver options for ITERATIVE_SCHUR, which did not copy
-   min_num_iterations (Johannes Schönberger)
-#. Remove obsolete include of numeric_diff_functor.h. (Martin Baeuml)
-#. Fix max. linear solver iterations in ConjugateGradientsSolver
-   (Johannes Schönberger)
-#. Expand check for lack of a sparse linear algebra library. (Michael
-   Samples and Domink Reitzle)
-#. Fix Eigen Row/ColMajor bug in NumericDiffCostFunction. (Dominik
-   Reitzle)
-#. Fix crash in Covariance if # threads > 1 requested without OpenMP.
-#. Fixed Malformed regex. (Björn Piltz)
-#. Fixed MSVC error C2124: divide or mod by zero. (Björn Piltz)
-#. Add missing #include of <limits> for loss functions.
-#. Make canned loss functions more robust.
-#. Fix type of suppressed compiler warning for Eigen 3.2.0.
-#. Suppress unused variable warning from Eigen 3.2.0.
-#. Add "make install" to the install instructions.
-#. Correct formula in documentation of
-   Solver::Options::function_tolerance. (Alessandro Gentilini)
-#. Add release flags to iOS toolchain.
-#. Fix a broken hyperlink in the documentation. (Henrique Mendonca)
-#. Add fixes for multiple definitions of ERROR on Windows to docs.
-#. Compile miniglog into Ceres if enabled on all platforms.
-#. Add two missing files to Android.mk (Greg Coombe)
-#. Fix Cmake error when using miniglog. (Greg Coombe)
-#. Don't build miniglog unconditionally as a static library (Björn
-   Piltz)
-#. Added a missing include. (Björn Piltz)
-#. Conditionally disable SparseNormalCholesky.
-#. Fix a memory leak in program_test.cc.
-
-
-1.9.0
-=====
-
-New Features
-------------
-#. Bounds constraints: Support for upper and/or lower bounds on
-   parameters when using the trust region minimizer.
-#. Dynamic Sparsity: Problems in which the sparsity structure of the
-   Jacobian changes over the course of the optimization can now be
-   solved much more efficiently. (Richard Stebbing)
-#. Improved support for Microsoft Visual C++ including the ability to
-   build and ship DLLs. (Björn Piltz, Alex Stewart and Sergey
-   Sharybin)
-#. Support for building on iOS 6.0 or higher (Jack Feng).
-#. Autogeneration of config.h that captures all the defines used to
-   build and use Ceres Solver.
-#. Simpler and more informative solver termination type
-   reporting. (See below for more details)
-#. New `website <http://www.ceres-solver.org>`_ based entirely on
-   Sphinx.
-#. ``AutoDiffLocalParameterization`` allows the use of automatic
-   differentiation for defining ``LocalParameterization`` objects
-   (Alex Stewart)
-#. LBFGS is faster due to fewer memory copies.
-#. Parameter blocks are not restricted to be less than 32k in size,
-   they can be up to 2G in size.
-#. Faster ``SPARSE_NORMAL_CHOLESKY`` solver when using ``CX_SPARSE``
-   as the sparse linear algebra library.
-#. Added ``Problem::IsParameterBlockPresent`` and
-   ``Problem::GetParameterization``.
-#. Added the (2,4,9) and (2,4,8) template specializations.
-#. An example demonstrating the use of
-   DynamicAutoDiffCostFunction. (Joydeep Biswas)
-#. Homography estimation example from Blender demonstrating the use of
-   a custom ``IterationCallback``. (Sergey Sharybin)
-#. Support user passing a custom CMAKE_MODULE_PATH (for BLAS /
-   LAPACK).
-
-Backward Incompatible API Changes
----------------------------------
-#. ``Solver::Options::linear_solver_ordering`` used to be a naked
-   pointer that Ceres took ownership of. This is error prone behaviour
-   which leads to problems when copying the ``Solver::Options`` struct
-   around. This has been replaced with a ``shared_ptr`` to handle
-   ownership correctly across copies.
-
-#. The enum used for reporting the termination/convergence status of
-   the solver has been renamed from ``SolverTerminationType`` to
-   ``TerminationType``.
-
-   The enum values have also changed. ``FUNCTION_TOLERANCE``,
-   ``GRADIENT_TOLERANCE`` and ``PARAMETER_TOLERANCE`` have all been
-   replaced by ``CONVERGENCE``.
-
-   ``NUMERICAL_FAILURE`` has been replaced by ``FAILURE``.
-
-   ``USER_ABORT`` has been renamed to ``USER_FAILURE``.
-
-   Further ``Solver::Summary::error`` has been renamed to
-   ``Solver::Summary::message``. It contains a more detailed
-   explanation for why the solver terminated.
-
-#. ``Solver::Options::gradient_tolerance`` used to be a relative
-   gradient tolerance. i.e., The solver converged when
-
-   .. math:: \|g(x)\|_\infty < \text{gradient_tolerance} *
-      \|g(x_0)\|_\infty
-
-   where :math:`g(x)` is the gradient of the objective function at
-   :math:`x` and :math:`x_0` is the parmeter vector at the start of
-   the optimization.
-
-   This has changed to an absolute tolerance, i.e. the solver
-   converges when
-
-   .. math:: \|g(x)\|_\infty < \text{gradient_tolerance}
-
-#. Ceres cannot be built without the line search minimizer
-   anymore. Thus the preprocessor define
-   ``CERES_NO_LINE_SEARCH_MINIMIZER`` has been removed.
-
-Bug Fixes
----------
-#. Disabled warning C4251. (Björn Piltz)
-#. Do not propagate 3d party libs through
-   `IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE]` mechanism when
-   building shared libraries. (Björn Piltz)
-#. Fixed errant verbose levels (Björn Piltz)
-#. Variety of code cleanups, optimizations and bug fixes to the line
-   search minimizer code (Alex Stewart)
-#. Fixed ``BlockSparseMatrix::Transpose`` when the matrix has row and
-   column blocks. (Richard Bowen)
-#. Better error checking when ``Problem::RemoveResidualBlock`` is
-   called. (Alex Stewart)
-#. Fixed a memory leak in ``SchurComplementSolver``.
-#. Added ``epsilon()`` method to ``NumTraits<ceres::Jet<T, N>
-   >``. (Filippo Basso)
-#. Fixed a bug in `CompressedRowSparseMatrix::AppendRows`` and
-   ``DeleteRows``.q
-#. Handle empty problems consistently.
-#. Restore the state of the ``Problem`` after a call to
-   ``Problem::Evaluate``. (Stefan Leutenegger)
-#. Better error checking and reporting for linear solvers.
-#. Use explicit formula to solve quadratic polynomials instead of the
-   eigenvalue solver.
-#. Fix constant parameter handling in inner iterations (Mikael
-   Persson).
-#. SuiteSparse errors do not cause a fatal crash anymore.
-#. Fix ``corrector_test.cc``.
-#. Relax the requirements on loss function derivatives.
-#. Minor bugfix to logging.h (Scott Ettinger)
-#. Updated ``gmock`` and ``gtest`` to the latest upstream version.
-#. Fix build breakage on old versions of SuiteSparse.
-#. Fixed build issues related to Clang / LLVM 3.4 (Johannes
-   Schönberger)
-#. METIS_FOUND is never set. Changed the commit to fit the setting of
-   the other #._FOUND definitions. (Andreas Franek)
-#. Variety of bug fixes and cleanups to the ``CMake`` build system
-   (Alex Stewart)
-#. Removed fictitious shared library target from the NDK build.
-#. Solver::Options now uses ``shared_ptr`` to handle ownership of
-   ``Solver::Options::linear_solver_ordering`` and
-   ``Solver::Options::inner_iteration_ordering``. As a consequence the
-   ``NDK`` build now depends on ``libc++`` from the ``LLVM`` project.
-#. Variety of lint cleanups (William Rucklidge & Jim Roseborough)
-#. Various internal cleanups including dead code removal.
-
-
-1.8.0
-=====
-
-New Features
-------------
-#. Significant improved ``CMake`` files with better robustness,
-   dependency checking and GUI support. (Alex Stewart)
-#. Added ``DynamicNumericDiffCostFunction`` for numerically
-   differentiated cost functions whose sizing is determined at run
-   time.
-#. ``NumericDiffCostFunction`` now supports a dynamic number of
-   residuals just like ``AutoDiffCostFunction``.
-#. ``Problem`` exposes more of its structure in its API.
-#. Faster automatic differentiation (Tim Langlois)
-#. Added the commonly occurring ``2_d_d`` template specialization for
-   the Schur Eliminator.
-#. Faster ``ITERATIVE_SCHUR`` solver using template specializations.
-#. Faster ``SCHUR_JACOBI`` preconditioner construction.
-#. Faster ``AngleAxisRotatePoint``.
-#. Faster Jacobian evaluation when a loss function is used.
-#. Added support for multiple clustering algorithms in visibility
-   based preconditioning, including a new fast single linkage
-   clustering algorithm.
-
-Bug Fixes
----------
-#. Fix ordering of ParseCommandLineFlags() & InitGoogleTest() for
-   Windows. (Alex Stewart)
-#. Remove DCHECK_GE checks from fixed_array.h.
-#. Fix build on MSVC 2013 (Petter Strandmark)
-#. Fixed ``AngleAxisToRotationMatrix`` near zero.
-#. Move ``CERES_HASH_NAMESPACE`` macros to ``collections_port.h``.
-#. Fix handling of unordered_map/unordered_set on OSX 10.9.0.
-#. Explicitly link to libm for ``curve_fitting_c.c``. (Alex Stewart)
-#. Minor type conversion fix to autodiff.h
-#. Remove RuntimeNumericDiffCostFunction.
-#. Fix operator= ambiguity on some versions of Clang. (Alex Stewart)
-#. Various Lint cleanups (William Rucklidge & Jim Roseborough)
-#. Modified installation folders for Windows. (Pablo Speciale)
-#. Added librt to link libraries for SuiteSparse_config on
-   Linux. (Alex Stewart)
-#. Check for presence of return-type-c-linkage option with
-   Clang. (Alex Stewart)
-#. Fix Problem::RemoveParameterBlock after calling solve. (Simon
-   Lynen)
-#. Fix a free/delete bug in covariance_impl.cc
-#. Fix two build errors. (Dustin Lang)
-#. Add RequireInitialization = 1 to NumTraits::Jet.
-#. Update gmock/gtest to 1.7.0
-#. Added IterationSummary::gradient_norm.
-#. Reduced verbosity of the inner iteration minimizer.
-#. Fixed a bug in TrustRegionMinimizer. (Michael Vitus)
-#. Removed android/build_android.sh.
-
-
-1.7.0
-=====
-
-Backward Incompatible API Changes
----------------------------------
-
-#. ``Solver::Options::sparse_linear_algebra_library`` has been renamed
-   to ``Solver::Options::sparse_linear_algebra_library_type``.
-
-New Features
-------------
-#. Sparse and dense covariance estimation.
-#. A new Wolfe line search. (Alex Stewart)
-#. ``BFGS`` line search direction. (Alex Stewart)
-#. C API
-#. Speeded up the use of loss functions > 17x.
-#. Faster ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``
-   solvers.
-#. Support for multiple dense linear algebra backends. In particular
-   optimized ``BLAS`` and ``LAPACK`` implementations (e.g., Intel MKL,
-   ACML, OpenBLAS etc) can now be used to do the dense linear algebra
-   for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``
-#. Use of Inner iterations can now be adaptively stopped. Iteration
-   and runtime statistics for inner iterations are not reported in
-   ``Solver::Summary`` and ``Solver::Summary::FullReport``.
-#. Improved inner iteration step acceptance criterion.
-#. Add BlockRandomAccessCRSMatrix.
-#. Speeded up automatic differentiation by 7\%.
-#. Bundle adjustment example from libmv/Blender (Sergey Sharybin)
-#. Shared library building is now controlled by CMake, rather than a
-   custom solution. Previously, Ceres had a custom option, but this is
-   now deprecated in favor of CMake's built in support for switching
-   between static and shared. Turn on BUILD_SHARED_LIBS to get shared
-   Ceres libraries.
-#. No more dependence on Protocol Buffers.
-#. Incomplete LQ factorization.
-#. Ability to write trust region problems to disk.
-#. Add sinh, cosh, tanh and tan functions to automatic differentiation
-   (Johannes Schönberger)
-#. Simplifications to the cmake build file.
-#. ``miniglog`` can now be used as a replacement for ``google-glog``
-   on non Android platforms. (This is NOT recommended).
-
-Bug Fixes
----------
-#. Fix ``ITERATIVE_SCHUR`` solver to work correctly when the schur
-   complement is of size zero. (Soohyun Bae)
-#. Fix the ``spec`` file for generating ``RPM`` packages (Brian Pitts
-   and Taylor Braun-Jones).
-#. Fix how ceres calls CAMD (Manas Jagadev)
-#. Fix breakage on old versions of SuiteSparse. (Fisher Yu)
-#. Fix warning C4373 in Visual Studio (Petter Strandmark)
-#. Fix compilation error caused by missing suitesparse headers and
-   reorganize them to be more robust. (Sergey Sharybin)
-#. Check GCC Version before adding -fast compiler option on
-   OSX. (Steven Lovegrove)
-#. Add documentation for minimizer progress output.
-#. Lint and other cleanups (William Rucklidge and James Roseborough)
-#. Collections port fix for MSC 2008 (Sergey Sharybin)
-#. Various corrections and cleanups in the documentation.
-#. Change the path where CeresConfig.cmake is installed (Pablo
-   Speciale)
-#. Minor errors in documentation (Pablo Speciale)
-#. Updated depend.cmake to follow CMake IF convention. (Joydeep
-   Biswas)
-#. Stabilize the schur ordering algorithm.
-#. Update license header in split.h.
-#. Enabling -O4 (link-time optimization) only if compiler/linker
-   support it. (Alex Stewart)
-#. Consistent glog path across files.
-#. ceres-solver.spec: Use cleaner, more conventional Release string
-   (Taylor Braun-Jones)
-#. Fix compile bug on RHEL6 due to missing header (Taylor Braun-Jones)
-#. CMake file is less verbose.
-#. Use the latest upstream version of google-test and gmock.
-#. Rationalize some of the variable names in ``Solver::Options``.
-#. Improve Summary::FullReport when line search is used.
-#. Expose line search parameters in ``Solver::Options``.
-#. Fix update of L-BFGS history buffers after they become full. (Alex
-   Stewart)
-#. Fix configuration error on systems without SuiteSparse installed
-   (Sergey Sharybin)
-#. Enforce the read call returns correct value in
-   ``curve_fitting_c.c`` (Arnaud Gelas)
-#. Fix DynamicAutoDiffCostFunction (Richard Stebbing)
-#. Fix Problem::RemoveParameterBlock documentation (Johannes
-   Schönberger)
-#. Fix a logging bug in parameter_block.h
-#. Refactor the preconditioner class structure.
-#. Fix an uninitialized variable warning when building with ``GCC``.
-#. Fix a reallocation bug in
-   ``CreateJacobianBlockSparsityTranspose``. (Yuliy Schwartzburg)
-#. Add a define for O_BINARY.
-#. Fix miniglog-based Android NDK build; now works with NDK r9. (Scott
-   Ettinger)
-
-
-1.6.0
-=====
-
-New Features
-------------
-#. Major Performance improvements.
-
-   a. Schur type solvers (``SPARSE_SCHUR``, ``DENSE_SCHUR``,
-      ``ITERATIVE_SCHUR``) are significantly faster due to custom BLAS
-      routines and fewer heap allocations.
-
-   b. ``SPARSE_SCHUR`` when used with ``CX_SPARSE`` now uses a block
-      AMD for much improved factorization performance.
-
-   c. The jacobian matrix is pre-ordered so that
-      ``SPARSE_NORMAL_CHOLESKY`` and ``SPARSE_SCHUR`` do not have to
-      make copies inside ``CHOLMOD``.
-
-   d. Faster autodiff by replacing division by multplication by inverse.
-
-   e. When compiled without threads, the schur eliminator does not pay
-      the penalty for locking and unlocking mutexes.
-
-#. Users can now use ``linear_solver_ordering`` to affect the
-   fill-reducing ordering used by ``SUITE_SPARSE`` for
-   ``SPARSE_NORMAL_CHOLESKY``.
-#. ``Problem`` can now report the set of parameter blocks it knows about.
-#. ``TrustRegionMinimizer`` uses the evaluator to compute the gradient
-   instead of a matrix vector multiply.
-#. On ``Mac OS``, whole program optimization is enabled.
-#. Users can now use automatic differentiation to define new
-   ``LocalParameterization`` objects. (Sergey Sharybin)
-#. Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark)
-
-
-Bug Fixes
----------
-
-#. Update the documentation for ``CostFunction``.
-#. Fixed a typo in the documentation. (Pablo Speciale)
-#. Fix a typo in suitesparse.cc.
-#. Bugfix in ``NumericDiffCostFunction``. (Nicolas Brodu)
-#. Death to BlockSparseMatrixBase.
-#. Change Minimizer::Options::min_trust_region_radius to double.
-#. Update to compile with stricter gcc checks. (Joydeep Biswas)
-#. Do not modify cached CMAKE_CXX_FLAGS_RELEASE. (Sergey Sharybin)
-#. ``<iterator>`` needed for back_insert_iterator. (Petter Strandmark)
-#. Lint cleanup. (William Rucklidge)
-#. Documentation corrections. (Pablo Speciale)
-
-
-1.5.0
-=====
-
-Backward Incompatible API Changes
----------------------------------
-#. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
-   part of it without calling the solver.
-
-   In light of this the following settings have been deprecated and
-   removed from the API.
-
-   - ``Solver::Options::return_initial_residuals``
-   - ``Solver::Options::return_initial_gradient``
-   - ``Solver::Options::return_initial_jacobian``
-   - ``Solver::Options::return_final_residuals``
-   - ``Solver::Options::return_final_gradient``
-   - ``Solver::Options::return_final_jacobian``
-
-   Instead we recommend using something like this.
-
-   .. code-block:: c++
-
-     Problem problem;
-     // Build problem
-
-     vector<double> initial_residuals;
-     problem.Evaluate(Problem::EvaluateOptions(),
-                      NULL, /* No cost */
-                      &initial_residuals,
-                      NULL, /* No gradient */
-                      NULL  /* No jacobian */);
-
-     Solver::Options options;
-     Solver::Summary summary;
-     Solver::Solve(options, &problem, &summary);
-
-     vector<double> final_residuals;
-     problem.Evaluate(Problem::EvaluateOptions(),
-                      NULL, /* No cost */
-                      &final_residuals,
-                      NULL, /* No gradient */
-                      NULL  /* No jacobian */);
-
-
-New Features
-------------
-#. Problem now supports removal of ParameterBlocks and
-   ResidualBlocks. There is a space/time tradeoff in doing this which
-   is controlled by
-   ``Problem::Options::enable_fast_parameter_block_removal``.
-
-#. Ceres now supports Line search based optimization algorithms in
-   addition to trust region algorithms. Currently there is support for
-   gradient descent, non-linear conjugate gradient and LBFGS search
-   directions.
-#. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
-   part of it without calling the solver. In light of this the
-   following settings have been deprecated and removed from the API.
-
-   - ``Solver::Options::return_initial_residuals``
-   - ``Solver::Options::return_initial_gradient``
-   - ``Solver::Options::return_initial_jacobian``
-   - ``Solver::Options::return_final_residuals``
-   - ``Solver::Options::return_final_gradient``
-   - ``Solver::Options::return_final_jacobian``
-
-#. New, much improved HTML documentation using Sphinx.
-#. Changed ``NumericDiffCostFunction`` to take functors like
-   ``AutoDiffCostFunction``.
-#. Added support for mixing automatic, analytic and numeric
-   differentiation. This is done by adding ``CostFunctionToFunctor``
-   and ``NumericDiffFunctor`` objects to the API.
-#. Sped up the robust loss function correction logic when residual is
-   one dimensional.
-#. Sped up ``DenseQRSolver`` by changing the way dense jacobians are
-   stored. This is a 200-500% improvement in linear solver performance
-   depending on the size of the problem.
-#. ``DENSE_SCHUR`` now supports multi-threading.
-#. Greatly expanded ``Summary::FullReport``:
-
-   - Report the ordering used by the ``LinearSolver``.
-   - Report the ordering used by the inner iterations.
-   - Execution timing breakdown into evaluations and linear solves.
-   - Effective size of the problem solved by the solver, which now
-     accounts for the size of the tangent space when using a
-     ``LocalParameterization``.
-#. Ceres when run at the ``VLOG`` level 3 or higher will report
-   detailed timing information about its internals.
-#. Remove extraneous initial and final residual evaluations. This
-   speeds up the solver a bit.
-#. Automatic differenatiation with a dynamic number of parameter
-   blocks. (Based on an idea by Thad Hughes).
-#. Sped up problem construction and destruction.
-#. Added matrix adapters to ``rotation.h`` so that the rotation matrix
-   routines can work with row and column major matrices. (Markus Moll)
-#. ``SCHUR_JACOBI`` can now be used without ``SuiteSparse``.
-#. A ``.spec`` file for producing RPMs. (Taylor Braun-Jones)
-#. ``CMake`` can now build the sphinx documentation (Pablo Speciale)
-#. Add support for creating a CMake config file during build to make
-   embedding Ceres in other CMake-using projects easier. (Pablo
-   Speciale).
-#. Better error reporting in ``Problem`` for missing parameter blocks.
-#. A more flexible ``Android.mk`` and a more modular build. If binary
-   size and/or compile time is a concern, larger parts of the solver
-   can be disabled at compile time.
-
-Bug Fixes
----------
-#. Compilation fixes for MSVC2010 (Sergey Sharybin)
-#. Fixed "deprecated conversion from string constant to char*"
-   warnings. (Pablo Speciale)
-#. Correctly propagate ifdefs when building without Schur eliminator
-   template specializations.
-#. Correct handling of ``LIB_SUFFIX`` on Linux. (Yuliy Schwartzburg).
-#. Code and signature cleanup in ``rotation.h``.
-#. Make examples independent of internal code.
-#. Disable unused member in ``gtest`` which results in build error on
-   OS X with latest Xcode. (Taylor Braun-Jones)
-#. Pass the correct flags to the linker when using
-   ``pthreads``. (Taylor Braun-Jones)
-#. Only use ``cmake28`` macro when building on RHEL6. (Taylor
-   Braun-Jones)
-#. Remove ``-Wno-return-type-c-linkage`` when compiling with
-   GCC. (Taylor Braun-Jones)
-#. Fix ``No previous prototype`` warnings. (Sergey Sharybin)
-#. MinGW build fixes. (Sergey Sharybin)
-#. Lots of minor code and lint fixes. (William Rucklidge)
-#. Fixed a bug in ``solver_impl.cc`` residual evaluation. (Markus
-   Moll)
-#. Fixed variadic evaluation bug in ``AutoDiff``.
-#. Fixed ``SolverImpl`` tests.
-#. Fixed a bug in ``DenseSparseMatrix::ToDenseMatrix()``.
-#. Fixed an initialization bug in ``ProgramEvaluator``.
-#. Fixes to Android.mk paths (Carlos Hernandez)
-#. Modify ``nist.cc`` to compute accuracy based on ground truth
-   solution rather than the ground truth function value.
-#. Fixed a memory leak in ``cxsparse.cc``. (Alexander Mordvintsev).
-#. Fixed the install directory for libraries by correctly handling
-   ``LIB_SUFFIX``. (Taylor Braun-Jones)
-
-1.4.0
-=====
-
-Backward Incompatible API Changes
----------------------------------
-The new ordering API breaks existing code. Here the common case fixes.
-
-**Before**
-
-.. code-block:: c++
-
- options.linear_solver_type = ceres::DENSE_SCHUR
- options.ordering_type = ceres::SCHUR
-
-**After**
-
-
-.. code-block:: c++
-
-  options.linear_solver_type = ceres::DENSE_SCHUR
-
-
-**Before**
-
-.. code-block:: c++
-
- options.linear_solver_type = ceres::DENSE_SCHUR;
- options.ordering_type = ceres::USER;
- for (int i = 0; i < num_points; ++i) {
-   options.ordering.push_back(my_points[i])
- }
- for (int i = 0; i < num_cameras; ++i) {
-   options.ordering.push_back(my_cameras[i])
- }
- options.num_eliminate_blocks = num_points;
-
-
-**After**
-
-.. code-block:: c++
-
- options.linear_solver_type = ceres::DENSE_SCHUR;
- options.ordering = new ceres::ParameterBlockOrdering;
- for (int i = 0; i < num_points; ++i) {
-   options.linear_solver_ordering->AddElementToGroup(my_points[i], 0);
- }
- for (int i = 0; i < num_cameras; ++i) {
-   options.linear_solver_ordering->AddElementToGroup(my_cameras[i], 1);
- }
-
-
-New Features
-------------
-#. A new richer, more expressive and consistent API for ordering
-   parameter blocks.
-#. A non-linear generalization of Ruhe & Wedin's Algorithm II. This
-   allows the user to use variable projection on separable and
-   non-separable non-linear least squares problems. With
-   multithreading, this results in significant improvements to the
-   convergence behavior of the solver at a small increase in run time.
-#. An image denoising example using fields of experts. (Petter
-   Strandmark)
-#. Defines for Ceres version and ABI version.
-#. Higher precision timer code where available. (Petter Strandmark)
-#. Example Makefile for users of Ceres.
-#. IterationSummary now informs the user when the step is a
-   non-monotonic step.
-#. Fewer memory allocations when using ``DenseQRSolver``.
-#. GradientChecker for testing CostFunctions (William Rucklidge)
-#. Add support for cost functions with 10 parameter blocks in
-   ``Problem``. (Fisher)
-#. Add support for 10 parameter blocks in ``AutoDiffCostFunction``.
-
-
-Bug Fixes
----------
-
-#. static cast to force Eigen::Index to long conversion
-#. Change LOG(ERROR) to LOG(WARNING) in ``schur_complement_solver.cc``.
-#. Remove verbose logging from ``DenseQRSolve``.
-#. Fix the Android NDK build.
-#. Better handling of empty and constant Problems.
-#. Remove an internal header that was leaking into the public API.
-#. Memory leak in ``trust_region_minimizer.cc``
-#. Schur ordering was operating on the wrong object (Ricardo Martin)
-#. MSVC fixes (Petter Strandmark)
-#. Various fixes to ``nist.cc`` (Markus Moll)
-#. Fixed a jacobian scaling bug.
-#. Numerically robust computation of ``model_cost_change``.
-#. Signed comparison compiler warning fixes (Ricardo Martin)
-#. Various compiler warning fixes all over.
-#. Inclusion guard fixes (Petter Strandmark)
-#. Segfault in test code (Sergey Popov)
-#. Replaced ``EXPECT/ASSERT_DEATH`` with the more portable
-   ``EXPECT_DEATH_IF_SUPPORTED`` macros.
-#. Fixed the camera projection model in Ceres' implementation of
-   Snavely's camera model. (Ricardo Martin)
-
-
-1.3.0
-=====
-
-New Features
-------------
-#. Android Port (Scott Ettinger also contributed to the port)
-#. Windows port. (Changchang Wu and Pierre Moulon also contributed to the port)
-#. New subspace Dogleg Solver. (Markus Moll)
-#. Trust region algorithm now supports the option of non-monotonic steps.
-#. New loss functions ``ArcTanLossFunction``, ``TolerantLossFunction``
-   and ``ComposedLossFunction``. (James Roseborough).
-#. New ``DENSE_NORMAL_CHOLESKY`` linear solver, which uses Eigen's
-   LDLT factorization on the normal equations.
-#. Cached symbolic factorization when using ``CXSparse``.
-   (Petter Strandark)
-#. New example ``nist.cc`` and data from the NIST non-linear
-   regression test suite. (Thanks to Douglas Bates for suggesting this.)
-#. The traditional Dogleg solver now uses an elliptical trust
-   region (Markus Moll)
-#. Support for returning initial and final gradients & Jacobians.
-#. Gradient computation support in the evaluators, with an eye
-   towards developing first order/gradient based solvers.
-#. A better way to compute ``Solver::Summary::fixed_cost``. (Markus Moll)
-#. ``CMake`` support for building documentation, separate examples,
-   installing and uninstalling the library and Gerrit hooks (Arnaud
-   Gelas)
-#. ``SuiteSparse4`` support (Markus Moll)
-#. Support for building Ceres without ``TR1`` (This leads to
-   slightly slower ``DENSE_SCHUR`` and ``SPARSE_SCHUR`` solvers).
-#. ``BALProblem`` can now write a problem back to disk.
-#. ``bundle_adjuster`` now allows the user to normalize and perturb the
-   problem before solving.
-#. Solver progress logging to file.
-#. Added ``Program::ToString`` and ``ParameterBlock::ToString`` to
-   help with debugging.
-#. Ability to build Ceres as a shared library (MacOS and Linux only),
-   associated versioning and build release script changes.
-#. Portable floating point classification API.
-
-
-Bug Fixes
----------
-#. Fix how invalid step evaluations are handled.
-#. Change the slop handling around zero for model cost changes to use
-   relative tolerances rather than absolute tolerances.
-#. Fix an inadvertant integer to bool conversion. (Petter Strandmark)
-#. Do not link to ``libgomp`` when building on
-   windows. (Petter Strandmark)
-#. Include ``gflags.h`` in ``test_utils.cc``. (Petter
-   Strandmark)
-#. Use standard random number generation routines. (Petter Strandmark)
-#. ``TrustRegionMinimizer`` does not implicitly negate the
-   steps that it takes. (Markus Moll)
-#. Diagonal scaling allows for equal upper and lower bounds. (Markus Moll)
-#. TrustRegionStrategy does not misuse LinearSolver:Summary anymore.
-#. Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke)
-#. QuaternionToAngleAxis now guarantees an angle in $[-\pi, \pi]$. (Guoxuan Zhang)
-#. Added a workaround for a compiler bug in the Android NDK to the
-   Schur eliminator.
-#. The sparse linear algebra library is only logged in
-   Summary::FullReport if it is used.
-#. Rename the macro ``CERES_DONT_HAVE_PROTOCOL_BUFFERS``
-   to ``CERES_NO_PROTOCOL_BUFFERS`` for consistency.
-#. Fix how static structure detection for the Schur eliminator logs
-   its results.
-#. Correct example code in the documentation. (Petter Strandmark)
-#. Fix ``fpclassify.h`` to work with the Android NDK and STLport.
-#. Fix a memory leak in the ``levenber_marquardt_strategy_test.cc``
-#. Fix an early return bug in the Dogleg solver. (Markus Moll)
-#. Zero initialize Jets.
-#. Moved ``internal/ceres/mock_log.h`` to ``internal/ceres/gmock/mock-log.h``
-#. Unified file path handling in tests.
-#. ``data_fitting.cc`` includes ``gflags``
-#. Renamed Ceres' Mutex class and associated macros to avoid
-   namespace conflicts.
-#. Close the BAL problem file after reading it (Markus Moll)
-#. Fix IsInfinite on Jets.
-#. Drop alignment requirements for Jets.
-#. Fixed Jet to integer comparison. (Keith Leung)
-#. Fix use of uninitialized arrays. (Sebastian Koch & Markus Moll)
-#. Conditionally compile gflag dependencies.(Casey Goodlett)
-#. Add ``data_fitting.cc`` to the examples ``CMake`` file.
-
-
-1.2.3
-=====
-
-Bug Fixes
----------
-#. ``suitesparse_test`` is enabled even when ``-DSUITESPARSE=OFF``.
-#. ``FixedArray`` internal struct did not respect ``Eigen``
-   alignment requirements (Koichi Akabe & Stephan Kassemeyer).
-#. Fixed ``quadratic.cc`` documentation and code mismatch
-   (Nick Lewycky).
-
-1.2.2
-=====
-
-Bug Fixes
----------
-#. Fix constant parameter blocks, and other minor fixes (Markus Moll)
-#. Fix alignment issues when combining ``Jet`` and
-   ``FixedArray`` in automatic differeniation.
-#. Remove obsolete ``build_defs`` file.
-
-1.2.1
-=====
-
-New Features
-------------
-#. Powell's Dogleg solver
-#. Documentation now has a brief overview of Trust Region methods and
-   how the Levenberg-Marquardt and Dogleg methods work.
-
-Bug Fixes
----------
-#. Destructor for ``TrustRegionStrategy`` was not virtual (Markus
-   Moll)
-#. Invalid ``DCHECK`` in ``suitesparse.cc`` (Markus Moll)
-#. Iteration callbacks were not properly invoked (Luis Alberto
-   Zarrabeiti)
-#. Logging level changes in ConjugateGradientsSolver
-#. VisibilityBasedPreconditioner setup does not account for skipped
-   camera pairs. This was debugging code.
-#. Enable SSE support on MacOS
-#. ``system_test`` was taking too long and too much memory (Koichi
-   Akabe)
-
-1.2.0
-=====
-
-New Features
-------------
-
-#. ``CXSparse`` support.
-#. Block oriented fill reducing orderings. This reduces the
-   factorization time for sparse ``CHOLMOD`` significantly.
-#. New Trust region loop with support for multiple trust region step
-   strategies. Currently only Levenberg-Marquardt is supported, but
-   this refactoring opens the door for Dog-leg, Stiehaug and others.
-#. ``CMake`` file restructuring.  Builds in ``Release`` mode by   default, and now has platform specific tuning flags.
-#. Re-organized documentation. No new content, but better
-   organization.
-
-
-Bug Fixes
----------
-
-#. Fixed integer overflow bug in ``block_random_access_sparse_matrix.cc``.
-#. Renamed some macros to prevent name conflicts.
-#. Fixed incorrect input to ``StateUpdatingCallback``.
-#. Fixes to AutoDiff tests.
-#. Various internal cleanups.
-
-
-1.1.1
-=====
-
-Bug Fixes
----------
-#. Fix a bug in the handling of constant blocks. (Louis Simard)
-#. Add an optional lower bound to the Levenberg-Marquardt regularizer
-   to prevent oscillating between well and ill posed linear problems.
-#. Some internal refactoring and test fixes.
-
-1.1.0
-=====
-
-New Features
-------------
-#. New iterative linear solver for general sparse problems - ``CGNR``
-   and a block Jacobi preconditioner for it.
-#. Changed the semantics of how ``SuiteSparse`` dependencies are
-   checked and used. Now ``SuiteSparse`` is built by default, only if
-   all of its dependencies are present.
-#. Automatic differentiation now supports dynamic number of residuals.
-#. Support for writing the linear least squares problems to disk in
-   text format so that they can loaded into ``MATLAB``.
-#. Linear solver results are now checked for nan and infinities.
-#. Added ``.gitignore`` file.
-#. A better more robust build system.
-
-
-Bug Fixes
----------
-#. Fixed a strict weak ordering bug in the schur ordering.
-#. Grammar and typos in the documents and code comments.
-#. Fixed tests which depended on exact equality between floating point
-   values.
-
-1.0.0
-=====
-Initial open source release. Nathan Wiegand contributed to the Mac OSX
-port.
-
-
-Origins
-=======
-
-Ceres Solver grew out of the need for general least squares solving at
-Google. In early 2010, Sameer Agarwal and Frederik Schaffalitzky
-started the development of Ceres Solver. Frederik left Google shortly
-thereafter and Keir Mierle stepped in to take his place. After two
-years of on-and-off development, Ceres Solver was released as open
-source in May of 2012.
diff --git a/third_party/ceres/examples/BUILD b/third_party/ceres/examples/BUILD
deleted file mode 100644
index 8741b94..0000000
--- a/third_party/ceres/examples/BUILD
+++ /dev/null
@@ -1,127 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2018 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: mierle@gmail.com (Keir Mierle)
-
-EXAMPLE_COPTS = [
-    # Needed to silence GFlags complaints.
-    "-Wno-sign-compare",
-    "-Wno-unused-parameter",
-    # Needed to put fscanf in a function.
-    "-Wno-format-nonliteral",
-]
-
-EXAMPLE_DEPS = [
-    "//:ceres",
-    "@org_tuxfamily_eigen//:eigen",
-    "@com_github_gflags_gflags//:gflags",
-]
-
-cc_binary(
-    name = "bundle_adjuster",
-    srcs = [
-        "bal_problem.cc",
-        "bal_problem.h",
-        "bundle_adjuster.cc",
-        "snavely_reprojection_error.h",
-    ],
-    copts = EXAMPLE_COPTS,
-    deps = EXAMPLE_DEPS,
-)
-
-cc_binary(
-    name = "denoising",
-    srcs = [
-        "denoising.cc",
-        "fields_of_experts.cc",
-        "fields_of_experts.h",
-        "pgm_image.h",
-    ],
-    copts = EXAMPLE_COPTS,
-    deps = EXAMPLE_DEPS,
-)
-
-cc_binary(
-    name = "robot_pose_mle",
-    srcs = [
-        "robot_pose_mle.cc",
-    ],
-    copts = EXAMPLE_COPTS,
-    deps = EXAMPLE_DEPS,
-)
-
-cc_binary(
-    name = "pose_graph_2d",
-    srcs = [
-        "slam/common/read_g2o.h",
-        "slam/pose_graph_2d/angle_manifold.h",
-        "slam/pose_graph_2d/normalize_angle.h",
-        "slam/pose_graph_2d/pose_graph_2d.cc",
-        "slam/pose_graph_2d/pose_graph_2d_error_term.h",
-        "slam/pose_graph_2d/types.h",
-    ],
-    copts = EXAMPLE_COPTS,
-    includes = ["slam"],
-    deps = EXAMPLE_DEPS,
-)
-
-cc_binary(
-    name = "pose_graph_3d",
-    srcs = [
-        "slam/common/read_g2o.h",
-        "slam/pose_graph_3d/pose_graph_3d.cc",
-        "slam/pose_graph_3d/pose_graph_3d_error_term.h",
-        "slam/pose_graph_3d/types.h",
-    ],
-    copts = EXAMPLE_COPTS,
-    includes = ["slam"],
-    deps = EXAMPLE_DEPS,
-)
-
-[cc_binary(
-    name = example,
-    srcs = [example + ".cc"],
-    copts = EXAMPLE_COPTS,
-    deps = EXAMPLE_DEPS,
-) for example in [
-    "circle_fit",
-    "curve_fitting",
-    "ellipse_approximation",
-    "helloworld",
-    "helloworld_analytic_diff",
-    "helloworld_numeric_diff",
-    "libmv_bundle_adjuster",
-    "libmv_homography",
-    "more_garbow_hillstrom",
-    "nist",
-    "powell",
-    "robust_curve_fitting",
-    "rosenbrock",
-    "sampled_function/sampled_function",
-    "simple_bundle_adjuster",
-]]
diff --git a/third_party/ceres/examples/CMakeLists.txt b/third_party/ceres/examples/CMakeLists.txt
deleted file mode 100644
index 8af2077..0000000
--- a/third_party/ceres/examples/CMakeLists.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2022 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: keir@google.com (Keir Mierle)
-
-add_executable(helloworld helloworld.cc)
-target_link_libraries(helloworld PRIVATE Ceres::ceres)
-
-add_executable(helloworld_numeric_diff helloworld_numeric_diff.cc)
-target_link_libraries(helloworld_numeric_diff PRIVATE Ceres::ceres)
-
-add_executable(helloworld_analytic_diff helloworld_analytic_diff.cc)
-target_link_libraries(helloworld_analytic_diff PRIVATE Ceres::ceres)
-
-add_executable(curve_fitting curve_fitting.cc)
-target_link_libraries(curve_fitting PRIVATE Ceres::ceres)
-
-add_executable(rosenbrock rosenbrock.cc)
-target_link_libraries(rosenbrock PRIVATE Ceres::ceres)
-
-add_executable(rosenbrock_analytic_diff rosenbrock_analytic_diff.cc)
-target_link_libraries(rosenbrock_analytic_diff PRIVATE Ceres::ceres)
-
-add_executable(rosenbrock_numeric_diff rosenbrock_numeric_diff.cc)
-target_link_libraries(rosenbrock_numeric_diff PRIVATE Ceres::ceres)
-
-add_executable(curve_fitting_c curve_fitting.c)
-target_link_libraries(curve_fitting_c PRIVATE Ceres::ceres)
-# Force CMake to link curve_fitting_c using the C++ linker.
-set_target_properties(curve_fitting_c PROPERTIES LINKER_LANGUAGE CXX)
-# As this is a C file #including <math.h> we have to explicitly add the math
-# library (libm). Although some compilers (dependent upon options) will accept
-# the indirect link to libm via Ceres, at least GCC 4.8 on pure Debian won't.
-if (HAVE_LIBM)
-  target_link_libraries(curve_fitting_c PRIVATE m)
-endif (HAVE_LIBM)
-
-add_executable(ellipse_approximation ellipse_approximation.cc)
-target_link_libraries(ellipse_approximation PRIVATE Ceres::ceres)
-
-add_executable(robust_curve_fitting robust_curve_fitting.cc)
-target_link_libraries(robust_curve_fitting PRIVATE Ceres::ceres)
-
-add_executable(simple_bundle_adjuster simple_bundle_adjuster.cc)
-target_link_libraries(simple_bundle_adjuster PRIVATE Ceres::ceres)
-
-add_executable(bicubic_interpolation bicubic_interpolation.cc)
-target_link_libraries(bicubic_interpolation PRIVATE Ceres::ceres)
-
-add_executable(bicubic_interpolation_analytic bicubic_interpolation_analytic.cc)
-target_link_libraries(bicubic_interpolation_analytic PRIVATE Ceres::ceres)
-
-add_executable(iteration_callback_example iteration_callback_example.cc)
-target_link_libraries(iteration_callback_example PRIVATE Ceres::ceres)
-
-add_executable(evaluation_callback_example evaluation_callback_example.cc)
-target_link_libraries(evaluation_callback_example PRIVATE Ceres::ceres)
-
-if (GFLAGS)
-  add_executable(powell powell.cc)
-  target_link_libraries(powell PRIVATE Ceres::ceres gflags)
-
-  add_executable(nist nist.cc)
-  target_link_libraries(nist PRIVATE Ceres::ceres gflags)
-  if (HAVE_BIGOBJ)
-    target_compile_options(nist PRIVATE /bigobj)
-  endif()
-
-  add_executable(more_garbow_hillstrom more_garbow_hillstrom.cc)
-  target_link_libraries(more_garbow_hillstrom PRIVATE Ceres::ceres gflags)
-
-  add_executable(circle_fit circle_fit.cc)
-  target_link_libraries(circle_fit PRIVATE Ceres::ceres gflags)
-
-  add_executable(bundle_adjuster
-                 bundle_adjuster.cc
-                 bal_problem.cc)
-  target_link_libraries(bundle_adjuster PRIVATE Ceres::ceres gflags)
-
-  add_executable(libmv_bundle_adjuster
-                 libmv_bundle_adjuster.cc)
-  target_link_libraries(libmv_bundle_adjuster PRIVATE Ceres::ceres gflags)
-
-  add_executable(libmv_homography
-                 libmv_homography.cc)
-  target_link_libraries(libmv_homography PRIVATE Ceres::ceres gflags)
-
-  add_executable(denoising
-                 denoising.cc
-                 fields_of_experts.cc)
-  target_link_libraries(denoising PRIVATE Ceres::ceres gflags)
-
-  add_executable(robot_pose_mle
-                 robot_pose_mle.cc)
-  target_link_libraries(robot_pose_mle PRIVATE Ceres::ceres gflags)
-endif (GFLAGS)
-
-add_subdirectory(sampled_function)
-add_subdirectory(slam)
diff --git a/third_party/ceres/examples/bal_problem.cc b/third_party/ceres/examples/bal_problem.cc
deleted file mode 100644
index ccf7449..0000000
--- a/third_party/ceres/examples/bal_problem.cc
+++ /dev/null
@@ -1,341 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "bal_problem.h"
-
-#include <algorithm>
-#include <cstdio>
-#include <fstream>
-#include <functional>
-#include <random>
-#include <string>
-#include <vector>
-
-#include "Eigen/Core"
-#include "ceres/rotation.h"
-#include "glog/logging.h"
-
-namespace ceres::examples {
-namespace {
-using VectorRef = Eigen::Map<Eigen::VectorXd>;
-using ConstVectorRef = Eigen::Map<const Eigen::VectorXd>;
-
-template <typename T>
-void FscanfOrDie(FILE* fptr, const char* format, T* value) {
-  int num_scanned = fscanf(fptr, format, value);
-  if (num_scanned != 1) {
-    LOG(FATAL) << "Invalid UW data file.";
-  }
-}
-
-void PerturbPoint3(std::function<double()> dist, double* point) {
-  for (int i = 0; i < 3; ++i) {
-    point[i] += dist();
-  }
-}
-
-double Median(std::vector<double>* data) {
-  auto mid_point = data->begin() + data->size() / 2;
-  std::nth_element(data->begin(), mid_point, data->end());
-  return *mid_point;
-}
-
-}  // namespace
-
-BALProblem::BALProblem(const std::string& filename, bool use_quaternions) {
-  FILE* fptr = fopen(filename.c_str(), "r");
-
-  if (fptr == nullptr) {
-    LOG(FATAL) << "Error: unable to open file " << filename;
-    return;
-  };
-
-  // This will die horribly on invalid files. Them's the breaks.
-  FscanfOrDie(fptr, "%d", &num_cameras_);
-  FscanfOrDie(fptr, "%d", &num_points_);
-  FscanfOrDie(fptr, "%d", &num_observations_);
-
-  VLOG(1) << "Header: " << num_cameras_ << " " << num_points_ << " "
-          << num_observations_;
-
-  point_index_ = new int[num_observations_];
-  camera_index_ = new int[num_observations_];
-  observations_ = new double[2 * num_observations_];
-
-  num_parameters_ = 9 * num_cameras_ + 3 * num_points_;
-  parameters_ = new double[num_parameters_];
-
-  for (int i = 0; i < num_observations_; ++i) {
-    FscanfOrDie(fptr, "%d", camera_index_ + i);
-    FscanfOrDie(fptr, "%d", point_index_ + i);
-    for (int j = 0; j < 2; ++j) {
-      FscanfOrDie(fptr, "%lf", observations_ + 2 * i + j);
-    }
-  }
-
-  for (int i = 0; i < num_parameters_; ++i) {
-    FscanfOrDie(fptr, "%lf", parameters_ + i);
-  }
-
-  fclose(fptr);
-
-  use_quaternions_ = use_quaternions;
-  if (use_quaternions) {
-    // Switch the angle-axis rotations to quaternions.
-    num_parameters_ = 10 * num_cameras_ + 3 * num_points_;
-    auto* quaternion_parameters = new double[num_parameters_];
-    double* original_cursor = parameters_;
-    double* quaternion_cursor = quaternion_parameters;
-    for (int i = 0; i < num_cameras_; ++i) {
-      AngleAxisToQuaternion(original_cursor, quaternion_cursor);
-      quaternion_cursor += 4;
-      original_cursor += 3;
-      for (int j = 4; j < 10; ++j) {
-        *quaternion_cursor++ = *original_cursor++;
-      }
-    }
-    // Copy the rest of the points.
-    for (int i = 0; i < 3 * num_points_; ++i) {
-      *quaternion_cursor++ = *original_cursor++;
-    }
-    // Swap in the quaternion parameters.
-    delete[] parameters_;
-    parameters_ = quaternion_parameters;
-  }
-}
-
-// This function writes the problem to a file in the same format that
-// is read by the constructor.
-void BALProblem::WriteToFile(const std::string& filename) const {
-  FILE* fptr = fopen(filename.c_str(), "w");
-
-  if (fptr == nullptr) {
-    LOG(FATAL) << "Error: unable to open file " << filename;
-    return;
-  };
-
-  fprintf(fptr, "%d %d %d\n", num_cameras_, num_points_, num_observations_);
-
-  for (int i = 0; i < num_observations_; ++i) {
-    fprintf(fptr, "%d %d", camera_index_[i], point_index_[i]);
-    for (int j = 0; j < 2; ++j) {
-      fprintf(fptr, " %g", observations_[2 * i + j]);
-    }
-    fprintf(fptr, "\n");
-  }
-
-  for (int i = 0; i < num_cameras(); ++i) {
-    double angleaxis[9];
-    if (use_quaternions_) {
-      // Output in angle-axis format.
-      QuaternionToAngleAxis(parameters_ + 10 * i, angleaxis);
-      memcpy(angleaxis + 3, parameters_ + 10 * i + 4, 6 * sizeof(double));
-    } else {
-      memcpy(angleaxis, parameters_ + 9 * i, 9 * sizeof(double));
-    }
-    for (double coeff : angleaxis) {
-      fprintf(fptr, "%.16g\n", coeff);
-    }
-  }
-
-  const double* points = parameters_ + camera_block_size() * num_cameras_;
-  for (int i = 0; i < num_points(); ++i) {
-    const double* point = points + i * point_block_size();
-    for (int j = 0; j < point_block_size(); ++j) {
-      fprintf(fptr, "%.16g\n", point[j]);
-    }
-  }
-
-  fclose(fptr);
-}
-
-// Write the problem to a PLY file for inspection in Meshlab or CloudCompare.
-void BALProblem::WriteToPLYFile(const std::string& filename) const {
-  std::ofstream of(filename.c_str());
-
-  of << "ply" << '\n'
-     << "format ascii 1.0" << '\n'
-     << "element vertex " << num_cameras_ + num_points_ << '\n'
-     << "property float x" << '\n'
-     << "property float y" << '\n'
-     << "property float z" << '\n'
-     << "property uchar red" << '\n'
-     << "property uchar green" << '\n'
-     << "property uchar blue" << '\n'
-     << "end_header" << std::endl;
-
-  // Export extrinsic data (i.e. camera centers) as green points.
-  double angle_axis[3];
-  double center[3];
-  for (int i = 0; i < num_cameras(); ++i) {
-    const double* camera = cameras() + camera_block_size() * i;
-    CameraToAngleAxisAndCenter(camera, angle_axis, center);
-    of << center[0] << ' ' << center[1] << ' ' << center[2] << " 0 255 0"
-       << '\n';
-  }
-
-  // Export the structure (i.e. 3D Points) as white points.
-  const double* points = parameters_ + camera_block_size() * num_cameras_;
-  for (int i = 0; i < num_points(); ++i) {
-    const double* point = points + i * point_block_size();
-    for (int j = 0; j < point_block_size(); ++j) {
-      of << point[j] << ' ';
-    }
-    of << "255 255 255\n";
-  }
-  of.close();
-}
-
-void BALProblem::CameraToAngleAxisAndCenter(const double* camera,
-                                            double* angle_axis,
-                                            double* center) const {
-  VectorRef angle_axis_ref(angle_axis, 3);
-  if (use_quaternions_) {
-    QuaternionToAngleAxis(camera, angle_axis);
-  } else {
-    angle_axis_ref = ConstVectorRef(camera, 3);
-  }
-
-  // c = -R't
-  Eigen::VectorXd inverse_rotation = -angle_axis_ref;
-  AngleAxisRotatePoint(
-      inverse_rotation.data(), camera + camera_block_size() - 6, center);
-  VectorRef(center, 3) *= -1.0;
-}
-
-void BALProblem::AngleAxisAndCenterToCamera(const double* angle_axis,
-                                            const double* center,
-                                            double* camera) const {
-  ConstVectorRef angle_axis_ref(angle_axis, 3);
-  if (use_quaternions_) {
-    AngleAxisToQuaternion(angle_axis, camera);
-  } else {
-    VectorRef(camera, 3) = angle_axis_ref;
-  }
-
-  // t = -R * c
-  AngleAxisRotatePoint(angle_axis, center, camera + camera_block_size() - 6);
-  VectorRef(camera + camera_block_size() - 6, 3) *= -1.0;
-}
-
-void BALProblem::Normalize() {
-  // Compute the marginal median of the geometry.
-  std::vector<double> tmp(num_points_);
-  Eigen::Vector3d median;
-  double* points = mutable_points();
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < num_points_; ++j) {
-      tmp[j] = points[3 * j + i];
-    }
-    median(i) = Median(&tmp);
-  }
-
-  for (int i = 0; i < num_points_; ++i) {
-    VectorRef point(points + 3 * i, 3);
-    tmp[i] = (point - median).lpNorm<1>();
-  }
-
-  const double median_absolute_deviation = Median(&tmp);
-
-  // Scale so that the median absolute deviation of the resulting
-  // reconstruction is 100.
-  const double scale = 100.0 / median_absolute_deviation;
-
-  VLOG(2) << "median: " << median.transpose();
-  VLOG(2) << "median absolute deviation: " << median_absolute_deviation;
-  VLOG(2) << "scale: " << scale;
-
-  // X = scale * (X - median)
-  for (int i = 0; i < num_points_; ++i) {
-    VectorRef point(points + 3 * i, 3);
-    point = scale * (point - median);
-  }
-
-  double* cameras = mutable_cameras();
-  double angle_axis[3];
-  double center[3];
-  for (int i = 0; i < num_cameras_; ++i) {
-    double* camera = cameras + camera_block_size() * i;
-    CameraToAngleAxisAndCenter(camera, angle_axis, center);
-    // center = scale * (center - median)
-    VectorRef(center, 3) = scale * (VectorRef(center, 3) - median);
-    AngleAxisAndCenterToCamera(angle_axis, center, camera);
-  }
-}
-
-void BALProblem::Perturb(const double rotation_sigma,
-                         const double translation_sigma,
-                         const double point_sigma) {
-  CHECK_GE(point_sigma, 0.0);
-  CHECK_GE(rotation_sigma, 0.0);
-  CHECK_GE(translation_sigma, 0.0);
-  std::mt19937 prng;
-  std::normal_distribution<double> point_noise_distribution(0.0, point_sigma);
-  double* points = mutable_points();
-  if (point_sigma > 0) {
-    for (int i = 0; i < num_points_; ++i) {
-      PerturbPoint3(std::bind(point_noise_distribution, std::ref(prng)),
-                    points + 3 * i);
-    }
-  }
-
-  std::normal_distribution<double> rotation_noise_distribution(0.0,
-                                                               point_sigma);
-  std::normal_distribution<double> translation_noise_distribution(
-      0.0, translation_sigma);
-  for (int i = 0; i < num_cameras_; ++i) {
-    double* camera = mutable_cameras() + camera_block_size() * i;
-
-    double angle_axis[3];
-    double center[3];
-    // Perturb in the rotation of the camera in the angle-axis
-    // representation.
-    CameraToAngleAxisAndCenter(camera, angle_axis, center);
-    if (rotation_sigma > 0.0) {
-      PerturbPoint3(std::bind(rotation_noise_distribution, std::ref(prng)),
-                    angle_axis);
-    }
-    AngleAxisAndCenterToCamera(angle_axis, center, camera);
-
-    if (translation_sigma > 0.0) {
-      PerturbPoint3(std::bind(translation_noise_distribution, std::ref(prng)),
-                    camera + camera_block_size() - 6);
-    }
-  }
-}
-
-BALProblem::~BALProblem() {
-  delete[] point_index_;
-  delete[] camera_index_;
-  delete[] observations_;
-  delete[] parameters_;
-}
-
-}  // namespace ceres::examples
diff --git a/third_party/ceres/examples/bal_problem.h b/third_party/ceres/examples/bal_problem.h
deleted file mode 100644
index 93effc3..0000000
--- a/third_party/ceres/examples/bal_problem.h
+++ /dev/null
@@ -1,109 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Class for loading and holding in memory bundle adjustment problems
-// from the BAL (Bundle Adjustment in the Large) dataset from the
-// University of Washington.
-//
-// For more details see http://grail.cs.washington.edu/projects/bal/
-
-#ifndef CERES_EXAMPLES_BAL_PROBLEM_H_
-#define CERES_EXAMPLES_BAL_PROBLEM_H_
-
-#include <string>
-
-namespace ceres::examples {
-
-class BALProblem {
- public:
-  explicit BALProblem(const std::string& filename, bool use_quaternions);
-  ~BALProblem();
-
-  void WriteToFile(const std::string& filename) const;
-  void WriteToPLYFile(const std::string& filename) const;
-
-  // Move the "center" of the reconstruction to the origin, where the
-  // center is determined by computing the marginal median of the
-  // points. The reconstruction is then scaled so that the median
-  // absolute deviation of the points measured from the origin is
-  // 100.0.
-  //
-  // The reprojection error of the problem remains the same.
-  void Normalize();
-
-  // Perturb the camera pose and the geometry with random normal
-  // numbers with corresponding standard deviations.
-  void Perturb(const double rotation_sigma,
-               const double translation_sigma,
-               const double point_sigma);
-
-  // clang-format off
-  int camera_block_size()      const { return use_quaternions_ ? 10 : 9; }
-  int point_block_size()       const { return 3;                         }
-  int num_cameras()            const { return num_cameras_;              }
-  int num_points()             const { return num_points_;               }
-  int num_observations()       const { return num_observations_;         }
-  int num_parameters()         const { return num_parameters_;           }
-  const int* point_index()     const { return point_index_;              }
-  const int* camera_index()    const { return camera_index_;             }
-  const double* observations() const { return observations_;             }
-  const double* parameters()   const { return parameters_;               }
-  const double* cameras()      const { return parameters_;               }
-  double* mutable_cameras()          { return parameters_;               }
-  // clang-format on
-  double* mutable_points() {
-    return parameters_ + camera_block_size() * num_cameras_;
-  }
-
- private:
-  void CameraToAngleAxisAndCenter(const double* camera,
-                                  double* angle_axis,
-                                  double* center) const;
-
-  void AngleAxisAndCenterToCamera(const double* angle_axis,
-                                  const double* center,
-                                  double* camera) const;
-  int num_cameras_;
-  int num_points_;
-  int num_observations_;
-  int num_parameters_;
-  bool use_quaternions_;
-
-  int* point_index_;
-  int* camera_index_;
-  double* observations_;
-  // The parameter vector is laid out as follows
-  // [camera_1, ..., camera_n, point_1, ..., point_m]
-  double* parameters_;
-};
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_BAL_PROBLEM_H_
diff --git a/third_party/ceres/examples/bicubic_interpolation.cc b/third_party/ceres/examples/bicubic_interpolation.cc
deleted file mode 100644
index 21b3c7e..0000000
--- a/third_party/ceres/examples/bicubic_interpolation.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Bicubic interpolation with automatic differentiation
-//
-// We will use estimation of 2d shift as a sample problem for bicubic
-// interpolation.
-//
-// Let us define f(x, y) = x * x - y * x + y * y
-// And optimize cost function sum_i [f(x_i + s_x, y_i + s_y) - v_i]^2
-//
-// Bicubic interpolation of f(x, y) will be exact, thus we can expect close to
-// perfect convergence
-
-#include <utility>
-
-#include "ceres/ceres.h"
-#include "ceres/cubic_interpolation.h"
-#include "glog/logging.h"
-
-using Grid = ceres::Grid2D<double>;
-using Interpolator = ceres::BiCubicInterpolator<Grid>;
-
-// Cost-function using autodiff interface of BiCubicInterpolator
-struct AutoDiffBiCubicCost {
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
-
-  template <typename T>
-  bool operator()(const T* s, T* residual) const {
-    using Vector2T = Eigen::Matrix<T, 2, 1>;
-    Eigen::Map<const Vector2T> shift(s);
-
-    const Vector2T point = point_ + shift;
-
-    T v;
-    interpolator_.Evaluate(point.y(), point.x(), &v);
-
-    *residual = v - value_;
-    return true;
-  }
-
-  AutoDiffBiCubicCost(const Interpolator& interpolator,
-                      Eigen::Vector2d point,
-                      double value)
-      : point_(std::move(point)), value_(value), interpolator_(interpolator) {}
-
-  static ceres::CostFunction* Create(const Interpolator& interpolator,
-                                     const Eigen::Vector2d& point,
-                                     double value) {
-    return new ceres::AutoDiffCostFunction<AutoDiffBiCubicCost, 1, 2>(
-        interpolator, point, value);
-  }
-
-  const Eigen::Vector2d point_;
-  const double value_;
-  const Interpolator& interpolator_;
-};
-
-// Function for input data generation
-static double f(const double& x, const double& y) {
-  return x * x - y * x + y * y;
-}
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-  // Problem sizes
-  const int kGridRowsHalf = 9;
-  const int kGridColsHalf = 11;
-  const int kGridRows = 2 * kGridRowsHalf + 1;
-  const int kGridCols = 2 * kGridColsHalf + 1;
-  const int kPoints = 4;
-
-  const Eigen::Vector2d shift(1.234, 2.345);
-  const std::array<Eigen::Vector2d, kPoints> points = {
-      Eigen::Vector2d{-2., -3.},
-      Eigen::Vector2d{-2., 3.},
-      Eigen::Vector2d{2., 3.},
-      Eigen::Vector2d{2., -3.}};
-
-  // Data is a row-major array of kGridRows x kGridCols values of function
-  // f(x, y) on the grid, with x in {-kGridColsHalf, ..., +kGridColsHalf},
-  // and y in {-kGridRowsHalf, ..., +kGridRowsHalf}
-  double data[kGridRows * kGridCols];
-  for (int i = 0; i < kGridRows; ++i) {
-    for (int j = 0; j < kGridCols; ++j) {
-      // Using row-major order
-      int index = i * kGridCols + j;
-      double y = i - kGridRowsHalf;
-      double x = j - kGridColsHalf;
-
-      data[index] = f(x, y);
-    }
-  }
-  const Grid grid(data,
-                  -kGridRowsHalf,
-                  kGridRowsHalf + 1,
-                  -kGridColsHalf,
-                  kGridColsHalf + 1);
-  const Interpolator interpolator(grid);
-
-  Eigen::Vector2d shift_estimate(3.1415, 1.337);
-
-  ceres::Problem problem;
-  problem.AddParameterBlock(shift_estimate.data(), 2);
-
-  for (const auto& p : points) {
-    const Eigen::Vector2d shifted = p + shift;
-
-    const double v = f(shifted.x(), shifted.y());
-    problem.AddResidualBlock(AutoDiffBiCubicCost::Create(interpolator, p, v),
-                             nullptr,
-                             shift_estimate.data());
-  }
-
-  ceres::Solver::Options options;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << '\n';
-
-  std::cout << "Bicubic interpolation with automatic derivatives:\n";
-  std::cout << "Estimated shift: " << shift_estimate.transpose()
-            << ", ground-truth: " << shift.transpose()
-            << " (error: " << (shift_estimate - shift).transpose() << ")"
-            << std::endl;
-
-  CHECK_LT((shift_estimate - shift).norm(), 1e-9);
-  return 0;
-}
diff --git a/third_party/ceres/examples/bicubic_interpolation_analytic.cc b/third_party/ceres/examples/bicubic_interpolation_analytic.cc
deleted file mode 100644
index 4b79d56..0000000
--- a/third_party/ceres/examples/bicubic_interpolation_analytic.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Bicubic interpolation with analytic differentiation
-//
-// We will use estimation of 2d shift as a sample problem for bicubic
-// interpolation.
-//
-// Let us define f(x, y) = x * x - y * x + y * y
-// And optimize cost function sum_i [f(x_i + s_x, y_i + s_y) - v_i]^2
-//
-// Bicubic interpolation of f(x, y) will be exact, thus we can expect close to
-// perfect convergence
-
-#include <utility>
-
-#include "ceres/ceres.h"
-#include "ceres/cubic_interpolation.h"
-#include "glog/logging.h"
-
-using Grid = ceres::Grid2D<double>;
-using Interpolator = ceres::BiCubicInterpolator<Grid>;
-
-// Cost-function using analytic interface of BiCubicInterpolator
-struct AnalyticBiCubicCost : public ceres::CostFunction {
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    Eigen::Map<const Eigen::Vector2d> shift(parameters[0]);
-
-    const Eigen::Vector2d point = point_ + shift;
-
-    double* f = residuals;
-    double* dfdr = nullptr;
-    double* dfdc = nullptr;
-    if (jacobians && jacobians[0]) {
-      dfdc = jacobians[0];
-      dfdr = dfdc + 1;
-    }
-
-    interpolator_.Evaluate(point.y(), point.x(), f, dfdr, dfdc);
-
-    if (residuals) {
-      *f -= value_;
-    }
-    return true;
-  }
-
-  AnalyticBiCubicCost(const Interpolator& interpolator,
-                      Eigen::Vector2d point,
-                      double value)
-      : point_(std::move(point)), value_(value), interpolator_(interpolator) {
-    set_num_residuals(1);
-    *mutable_parameter_block_sizes() = {2};
-  }
-
-  static ceres::CostFunction* Create(const Interpolator& interpolator,
-                                     const Eigen::Vector2d& point,
-                                     double value) {
-    return new AnalyticBiCubicCost(interpolator, point, value);
-  }
-
-  const Eigen::Vector2d point_;
-  const double value_;
-  const Interpolator& interpolator_;
-};
-
-// Function for input data generation
-static double f(const double& x, const double& y) {
-  return x * x - y * x + y * y;
-}
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-  // Problem sizes
-  const int kGridRowsHalf = 9;
-  const int kGridColsHalf = 11;
-  const int kGridRows = 2 * kGridRowsHalf + 1;
-  const int kGridCols = 2 * kGridColsHalf + 1;
-  const int kPoints = 4;
-
-  const Eigen::Vector2d shift(1.234, 2.345);
-  const std::array<Eigen::Vector2d, kPoints> points = {
-      Eigen::Vector2d{-2., -3.},
-      Eigen::Vector2d{-2., 3.},
-      Eigen::Vector2d{2., 3.},
-      Eigen::Vector2d{2., -3.}};
-
-  // Data is a row-major array of kGridRows x kGridCols values of function
-  // f(x, y) on the grid, with x in {-kGridColsHalf, ..., +kGridColsHalf},
-  // and y in {-kGridRowsHalf, ..., +kGridRowsHalf}
-  double data[kGridRows * kGridCols];
-  for (int i = 0; i < kGridRows; ++i) {
-    for (int j = 0; j < kGridCols; ++j) {
-      // Using row-major order
-      int index = i * kGridCols + j;
-      double y = i - kGridRowsHalf;
-      double x = j - kGridColsHalf;
-
-      data[index] = f(x, y);
-    }
-  }
-  const Grid grid(data,
-                  -kGridRowsHalf,
-                  kGridRowsHalf + 1,
-                  -kGridColsHalf,
-                  kGridColsHalf + 1);
-  const Interpolator interpolator(grid);
-
-  Eigen::Vector2d shift_estimate(3.1415, 1.337);
-
-  ceres::Problem problem;
-  problem.AddParameterBlock(shift_estimate.data(), 2);
-
-  for (const auto& p : points) {
-    const Eigen::Vector2d shifted = p + shift;
-
-    const double v = f(shifted.x(), shifted.y());
-    problem.AddResidualBlock(AnalyticBiCubicCost::Create(interpolator, p, v),
-                             nullptr,
-                             shift_estimate.data());
-  }
-
-  ceres::Solver::Options options;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << '\n';
-
-  std::cout << "Bicubic interpolation with analytic derivatives:\n";
-  std::cout << "Estimated shift: " << shift_estimate.transpose()
-            << ", ground-truth: " << shift.transpose()
-            << " (error: " << (shift_estimate - shift).transpose() << ")"
-            << std::endl;
-
-  CHECK_LT((shift_estimate - shift).norm(), 1e-9);
-  return 0;
-}
diff --git a/third_party/ceres/examples/bundle_adjuster.cc b/third_party/ceres/examples/bundle_adjuster.cc
deleted file mode 100644
index 582ae2e..0000000
--- a/third_party/ceres/examples/bundle_adjuster.cc
+++ /dev/null
@@ -1,394 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// An example of solving a dynamically sized problem with various
-// solvers and loss functions.
-//
-// For a simpler bare bones example of doing bundle adjustment with
-// Ceres, please see simple_bundle_adjuster.cc.
-//
-// NOTE: This example will not compile without gflags and SuiteSparse.
-//
-// The problem being solved here is known as a Bundle Adjustment
-// problem in computer vision. Given a set of 3d points X_1, ..., X_n,
-// a set of cameras P_1, ..., P_m. If the point X_i is visible in
-// image j, then there is a 2D observation u_ij that is the expected
-// projection of X_i using P_j. The aim of this optimization is to
-// find values of X_i and P_j such that the reprojection error
-//
-//    E(X,P) =  sum_ij  |u_ij - P_j X_i|^2
-//
-// is minimized.
-//
-// The problem used here comes from a collection of bundle adjustment
-// problems published at University of Washington.
-// http://grail.cs.washington.edu/projects/bal
-
-#include <algorithm>
-#include <cmath>
-#include <cstdio>
-#include <cstdlib>
-#include <memory>
-#include <string>
-#include <thread>
-#include <vector>
-
-#include "bal_problem.h"
-#include "ceres/ceres.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-#include "snavely_reprojection_error.h"
-
-// clang-format makes the gflags definitions too verbose
-// clang-format off
-
-DEFINE_string(input, "", "Input File name");
-DEFINE_string(trust_region_strategy, "levenberg_marquardt",
-              "Options are: levenberg_marquardt, dogleg.");
-DEFINE_string(dogleg, "traditional_dogleg", "Options are: traditional_dogleg,"
-              "subspace_dogleg.");
-
-DEFINE_bool(inner_iterations, false, "Use inner iterations to non-linearly "
-            "refine each successful trust region step.");
-
-DEFINE_string(blocks_for_inner_iterations, "automatic", "Options are: "
-              "automatic, cameras, points, cameras,points, points,cameras");
-
-DEFINE_string(linear_solver, "sparse_schur", "Options are: "
-              "sparse_schur, dense_schur, iterative_schur, "
-              "sparse_normal_cholesky, dense_qr, dense_normal_cholesky, "
-              "and cgnr.");
-DEFINE_bool(explicit_schur_complement, false, "If using ITERATIVE_SCHUR "
-            "then explicitly compute the Schur complement.");
-DEFINE_string(preconditioner, "jacobi", "Options are: "
-              "identity, jacobi, schur_jacobi, schur_power_series_expansion, cluster_jacobi, "
-              "cluster_tridiagonal.");
-DEFINE_string(visibility_clustering, "canonical_views",
-              "single_linkage, canonical_views");
-DEFINE_bool(use_spse_initialization, false,
-            "Use power series expansion to initialize the solution in ITERATIVE_SCHUR linear solver.");
-
-DEFINE_string(sparse_linear_algebra_library, "suite_sparse",
-              "Options are: suite_sparse, accelerate_sparse, eigen_sparse, and "
-              "cuda_sparse.");
-DEFINE_string(dense_linear_algebra_library, "eigen",
-              "Options are: eigen, lapack, and cuda");
-DEFINE_string(ordering_type, "amd", "Options are: amd, nesdis");
-DEFINE_string(linear_solver_ordering, "user",
-              "Options are: automatic and user");
-
-DEFINE_bool(use_quaternions, false, "If true, uses quaternions to represent "
-            "rotations. If false, angle axis is used.");
-DEFINE_bool(use_manifolds, false, "For quaternions, use a manifold.");
-DEFINE_bool(robustify, false, "Use a robust loss function.");
-
-DEFINE_double(eta, 1e-2, "Default value for eta. Eta determines the "
-              "accuracy of each linear solve of the truncated newton step. "
-              "Changing this parameter can affect solve performance.");
-
-DEFINE_int32(num_threads, -1, "Number of threads. -1 = std::thread::hardware_concurrency.");
-DEFINE_int32(num_iterations, 5, "Number of iterations.");
-DEFINE_int32(max_linear_solver_iterations, 500, "Maximum number of iterations"
-            " for solution of linear system.");
-DEFINE_double(spse_tolerance, 0.1,
-             "Tolerance to reach during the iterations of power series expansion initialization or preconditioning.");
-DEFINE_int32(max_num_spse_iterations, 5,
-             "Maximum number of iterations for power series expansion initialization or preconditioning.");
-DEFINE_double(max_solver_time, 1e32, "Maximum solve time in seconds.");
-DEFINE_bool(nonmonotonic_steps, false, "Trust region algorithm can use"
-            " nonmonotic steps.");
-
-DEFINE_double(rotation_sigma, 0.0, "Standard deviation of camera rotation "
-              "perturbation.");
-DEFINE_double(translation_sigma, 0.0, "Standard deviation of the camera "
-              "translation perturbation.");
-DEFINE_double(point_sigma, 0.0, "Standard deviation of the point "
-              "perturbation.");
-DEFINE_int32(random_seed, 38401, "Random seed used to set the state "
-             "of the pseudo random number generator used to generate "
-             "the perturbations.");
-DEFINE_bool(line_search, false, "Use a line search instead of trust region "
-            "algorithm.");
-DEFINE_bool(mixed_precision_solves, false, "Use mixed precision solves.");
-DEFINE_int32(max_num_refinement_iterations, 0, "Iterative refinement iterations");
-DEFINE_string(initial_ply, "", "Export the BAL file data as a PLY file.");
-DEFINE_string(final_ply, "", "Export the refined BAL file data as a PLY "
-              "file.");
-// clang-format on
-
-namespace ceres::examples {
-namespace {
-
-void SetLinearSolver(Solver::Options* options) {
-  CHECK(StringToLinearSolverType(CERES_GET_FLAG(FLAGS_linear_solver),
-                                 &options->linear_solver_type));
-  CHECK(StringToPreconditionerType(CERES_GET_FLAG(FLAGS_preconditioner),
-                                   &options->preconditioner_type));
-  CHECK(StringToVisibilityClusteringType(
-      CERES_GET_FLAG(FLAGS_visibility_clustering),
-      &options->visibility_clustering_type));
-  CHECK(StringToSparseLinearAlgebraLibraryType(
-      CERES_GET_FLAG(FLAGS_sparse_linear_algebra_library),
-      &options->sparse_linear_algebra_library_type));
-  CHECK(StringToDenseLinearAlgebraLibraryType(
-      CERES_GET_FLAG(FLAGS_dense_linear_algebra_library),
-      &options->dense_linear_algebra_library_type));
-  CHECK(
-      StringToLinearSolverOrderingType(CERES_GET_FLAG(FLAGS_ordering_type),
-                                       &options->linear_solver_ordering_type));
-  options->use_explicit_schur_complement =
-      CERES_GET_FLAG(FLAGS_explicit_schur_complement);
-  options->use_mixed_precision_solves =
-      CERES_GET_FLAG(FLAGS_mixed_precision_solves);
-  options->max_num_refinement_iterations =
-      CERES_GET_FLAG(FLAGS_max_num_refinement_iterations);
-  options->max_linear_solver_iterations =
-      CERES_GET_FLAG(FLAGS_max_linear_solver_iterations);
-  options->use_spse_initialization =
-      CERES_GET_FLAG(FLAGS_use_spse_initialization);
-  options->spse_tolerance = CERES_GET_FLAG(FLAGS_spse_tolerance);
-  options->max_num_spse_iterations =
-      CERES_GET_FLAG(FLAGS_max_num_spse_iterations);
-}
-
-void SetOrdering(BALProblem* bal_problem, Solver::Options* options) {
-  const int num_points = bal_problem->num_points();
-  const int point_block_size = bal_problem->point_block_size();
-  double* points = bal_problem->mutable_points();
-
-  const int num_cameras = bal_problem->num_cameras();
-  const int camera_block_size = bal_problem->camera_block_size();
-  double* cameras = bal_problem->mutable_cameras();
-
-  if (options->use_inner_iterations) {
-    if (CERES_GET_FLAG(FLAGS_blocks_for_inner_iterations) == "cameras") {
-      LOG(INFO) << "Camera blocks for inner iterations";
-      options->inner_iteration_ordering =
-          std::make_shared<ParameterBlockOrdering>();
-      for (int i = 0; i < num_cameras; ++i) {
-        options->inner_iteration_ordering->AddElementToGroup(
-            cameras + camera_block_size * i, 0);
-      }
-    } else if (CERES_GET_FLAG(FLAGS_blocks_for_inner_iterations) == "points") {
-      LOG(INFO) << "Point blocks for inner iterations";
-      options->inner_iteration_ordering =
-          std::make_shared<ParameterBlockOrdering>();
-      for (int i = 0; i < num_points; ++i) {
-        options->inner_iteration_ordering->AddElementToGroup(
-            points + point_block_size * i, 0);
-      }
-    } else if (CERES_GET_FLAG(FLAGS_blocks_for_inner_iterations) ==
-               "cameras,points") {
-      LOG(INFO) << "Camera followed by point blocks for inner iterations";
-      options->inner_iteration_ordering =
-          std::make_shared<ParameterBlockOrdering>();
-      for (int i = 0; i < num_cameras; ++i) {
-        options->inner_iteration_ordering->AddElementToGroup(
-            cameras + camera_block_size * i, 0);
-      }
-      for (int i = 0; i < num_points; ++i) {
-        options->inner_iteration_ordering->AddElementToGroup(
-            points + point_block_size * i, 1);
-      }
-    } else if (CERES_GET_FLAG(FLAGS_blocks_for_inner_iterations) ==
-               "points,cameras") {
-      LOG(INFO) << "Point followed by camera blocks for inner iterations";
-      options->inner_iteration_ordering =
-          std::make_shared<ParameterBlockOrdering>();
-      for (int i = 0; i < num_cameras; ++i) {
-        options->inner_iteration_ordering->AddElementToGroup(
-            cameras + camera_block_size * i, 1);
-      }
-      for (int i = 0; i < num_points; ++i) {
-        options->inner_iteration_ordering->AddElementToGroup(
-            points + point_block_size * i, 0);
-      }
-    } else if (CERES_GET_FLAG(FLAGS_blocks_for_inner_iterations) ==
-               "automatic") {
-      LOG(INFO) << "Choosing automatic blocks for inner iterations";
-    } else {
-      LOG(FATAL) << "Unknown block type for inner iterations: "
-                 << CERES_GET_FLAG(FLAGS_blocks_for_inner_iterations);
-    }
-  }
-
-  // Bundle adjustment problems have a sparsity structure that makes
-  // them amenable to more specialized and much more efficient
-  // solution strategies. The SPARSE_SCHUR, DENSE_SCHUR and
-  // ITERATIVE_SCHUR solvers make use of this specialized
-  // structure.
-  //
-  // This can either be done by specifying a
-  // Options::linear_solver_ordering or having Ceres figure it out
-  // automatically using a greedy maximum independent set algorithm.
-  if (CERES_GET_FLAG(FLAGS_linear_solver_ordering) == "user") {
-    auto* ordering = new ceres::ParameterBlockOrdering;
-
-    // The points come before the cameras.
-    for (int i = 0; i < num_points; ++i) {
-      ordering->AddElementToGroup(points + point_block_size * i, 0);
-    }
-
-    for (int i = 0; i < num_cameras; ++i) {
-      // When using axis-angle, there is a single parameter block for
-      // the entire camera.
-      ordering->AddElementToGroup(cameras + camera_block_size * i, 1);
-    }
-
-    options->linear_solver_ordering.reset(ordering);
-  }
-}
-
-void SetMinimizerOptions(Solver::Options* options) {
-  options->max_num_iterations = CERES_GET_FLAG(FLAGS_num_iterations);
-  options->minimizer_progress_to_stdout = true;
-  if (CERES_GET_FLAG(FLAGS_num_threads) == -1) {
-    const int num_available_threads =
-        static_cast<int>(std::thread::hardware_concurrency());
-    if (num_available_threads > 0) {
-      options->num_threads = num_available_threads;
-    }
-  } else {
-    options->num_threads = CERES_GET_FLAG(FLAGS_num_threads);
-  }
-  CHECK_GE(options->num_threads, 1);
-
-  options->eta = CERES_GET_FLAG(FLAGS_eta);
-  options->max_solver_time_in_seconds = CERES_GET_FLAG(FLAGS_max_solver_time);
-  options->use_nonmonotonic_steps = CERES_GET_FLAG(FLAGS_nonmonotonic_steps);
-  if (CERES_GET_FLAG(FLAGS_line_search)) {
-    options->minimizer_type = ceres::LINE_SEARCH;
-  }
-
-  CHECK(StringToTrustRegionStrategyType(
-      CERES_GET_FLAG(FLAGS_trust_region_strategy),
-      &options->trust_region_strategy_type));
-  CHECK(
-      StringToDoglegType(CERES_GET_FLAG(FLAGS_dogleg), &options->dogleg_type));
-  options->use_inner_iterations = CERES_GET_FLAG(FLAGS_inner_iterations);
-}
-
-void SetSolverOptionsFromFlags(BALProblem* bal_problem,
-                               Solver::Options* options) {
-  SetMinimizerOptions(options);
-  SetLinearSolver(options);
-  SetOrdering(bal_problem, options);
-}
-
-void BuildProblem(BALProblem* bal_problem, Problem* problem) {
-  const int point_block_size = bal_problem->point_block_size();
-  const int camera_block_size = bal_problem->camera_block_size();
-  double* points = bal_problem->mutable_points();
-  double* cameras = bal_problem->mutable_cameras();
-
-  // Observations is 2*num_observations long array observations =
-  // [u_1, u_2, ... , u_n], where each u_i is two dimensional, the x
-  // and y positions of the observation.
-  const double* observations = bal_problem->observations();
-  for (int i = 0; i < bal_problem->num_observations(); ++i) {
-    CostFunction* cost_function;
-    // Each Residual block takes a point and a camera as input and
-    // outputs a 2 dimensional residual.
-    cost_function = (CERES_GET_FLAG(FLAGS_use_quaternions))
-                        ? SnavelyReprojectionErrorWithQuaternions::Create(
-                              observations[2 * i + 0], observations[2 * i + 1])
-                        : SnavelyReprojectionError::Create(
-                              observations[2 * i + 0], observations[2 * i + 1]);
-
-    // If enabled use Huber's loss function.
-    LossFunction* loss_function =
-        CERES_GET_FLAG(FLAGS_robustify) ? new HuberLoss(1.0) : nullptr;
-
-    // Each observation corresponds to a pair of a camera and a point
-    // which are identified by camera_index()[i] and point_index()[i]
-    // respectively.
-    double* camera =
-        cameras + camera_block_size * bal_problem->camera_index()[i];
-    double* point = points + point_block_size * bal_problem->point_index()[i];
-    problem->AddResidualBlock(cost_function, loss_function, camera, point);
-  }
-
-  if (CERES_GET_FLAG(FLAGS_use_quaternions) &&
-      CERES_GET_FLAG(FLAGS_use_manifolds)) {
-    Manifold* camera_manifold =
-        new ProductManifold<QuaternionManifold, EuclideanManifold<6>>{};
-    for (int i = 0; i < bal_problem->num_cameras(); ++i) {
-      problem->SetManifold(cameras + camera_block_size * i, camera_manifold);
-    }
-  }
-}
-
-void SolveProblem(const char* filename) {
-  BALProblem bal_problem(filename, CERES_GET_FLAG(FLAGS_use_quaternions));
-
-  if (!CERES_GET_FLAG(FLAGS_initial_ply).empty()) {
-    bal_problem.WriteToPLYFile(CERES_GET_FLAG(FLAGS_initial_ply));
-  }
-
-  Problem problem;
-
-  srand(CERES_GET_FLAG(FLAGS_random_seed));
-  bal_problem.Normalize();
-  bal_problem.Perturb(CERES_GET_FLAG(FLAGS_rotation_sigma),
-                      CERES_GET_FLAG(FLAGS_translation_sigma),
-                      CERES_GET_FLAG(FLAGS_point_sigma));
-
-  BuildProblem(&bal_problem, &problem);
-  Solver::Options options;
-  SetSolverOptionsFromFlags(&bal_problem, &options);
-  options.gradient_tolerance = 1e-16;
-  options.function_tolerance = 1e-16;
-  options.parameter_tolerance = 1e-16;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  std::cout << summary.FullReport() << "\n";
-
-  if (!CERES_GET_FLAG(FLAGS_final_ply).empty()) {
-    bal_problem.WriteToPLYFile(CERES_GET_FLAG(FLAGS_final_ply));
-  }
-}
-
-}  // namespace
-}  // namespace ceres::examples
-
-int main(int argc, char** argv) {
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-  if (CERES_GET_FLAG(FLAGS_input).empty()) {
-    LOG(ERROR) << "Usage: bundle_adjuster --input=bal_problem";
-    return 1;
-  }
-
-  CHECK(CERES_GET_FLAG(FLAGS_use_quaternions) ||
-        !CERES_GET_FLAG(FLAGS_use_manifolds))
-      << "--use_manifolds can only be used with --use_quaternions.";
-  ceres::examples::SolveProblem(CERES_GET_FLAG(FLAGS_input).c_str());
-  return 0;
-}
diff --git a/third_party/ceres/examples/circle_fit.cc b/third_party/ceres/examples/circle_fit.cc
deleted file mode 100644
index fd848d9..0000000
--- a/third_party/ceres/examples/circle_fit.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// This fits circles to a collection of points, where the error is related to
-// the distance of a point from the circle. This uses auto-differentiation to
-// take the derivatives.
-//
-// The input format is simple text. Feed on standard in:
-//
-//   x_initial y_initial r_initial
-//   x1 y1
-//   x2 y2
-//   y3 y3
-//   ...
-//
-// And the result after solving will be printed to stdout:
-//
-//   x y r
-//
-// There are closed form solutions [1] to this problem which you may want to
-// consider instead of using this one. If you already have a decent guess, Ceres
-// can squeeze down the last bit of error.
-//
-//   [1] http://www.mathworks.com/matlabcentral/fileexchange/5557-circle-fit/content/circfit.m  // NOLINT
-
-#include <cstdio>
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-
-DEFINE_double(robust_threshold,
-              0.0,
-              "Robust loss parameter. Set to 0 for normal squared error (no "
-              "robustification).");
-
-// The cost for a single sample. The returned residual is related to the
-// distance of the point from the circle (passed in as x, y, m parameters).
-//
-// Note that the radius is parameterized as r = m^2 to constrain the radius to
-// positive values.
-class DistanceFromCircleCost {
- public:
-  DistanceFromCircleCost(double xx, double yy) : xx_(xx), yy_(yy) {}
-  template <typename T>
-  bool operator()(const T* const x,
-                  const T* const y,
-                  const T* const m,  // r = m^2
-                  T* residual) const {
-    // Since the radius is parameterized as m^2, unpack m to get r.
-    T r = *m * *m;
-
-    // Get the position of the sample in the circle's coordinate system.
-    T xp = xx_ - *x;
-    T yp = yy_ - *y;
-
-    // It is tempting to use the following cost:
-    //
-    //   residual[0] = r - sqrt(xp*xp + yp*yp);
-    //
-    // which is the distance of the sample from the circle. This works
-    // reasonably well, but the sqrt() adds strong nonlinearities to the cost
-    // function. Instead, a different cost is used, which while not strictly a
-    // distance in the metric sense (it has units distance^2) it produces more
-    // robust fits when there are outliers. This is because the cost surface is
-    // more convex.
-    residual[0] = r * r - xp * xp - yp * yp;
-    return true;
-  }
-
- private:
-  // The measured x,y coordinate that should be on the circle.
-  double xx_, yy_;
-};
-
-int main(int argc, char** argv) {
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-
-  double x, y, r;
-  if (scanf("%lg %lg %lg", &x, &y, &r) != 3) {
-    fprintf(stderr, "Couldn't read first line.\n");
-    return 1;
-  }
-  fprintf(stderr, "Got x, y, r %lg, %lg, %lg\n", x, y, r);
-
-  // Save initial values for comparison.
-  double initial_x = x;
-  double initial_y = y;
-  double initial_r = r;
-
-  // Parameterize r as m^2 so that it can't be negative.
-  double m = sqrt(r);
-
-  ceres::Problem problem;
-
-  // Configure the loss function.
-  ceres::LossFunction* loss = nullptr;
-  if (CERES_GET_FLAG(FLAGS_robust_threshold)) {
-    loss = new ceres::CauchyLoss(CERES_GET_FLAG(FLAGS_robust_threshold));
-  }
-
-  // Add the residuals.
-  double xx, yy;
-  int num_points = 0;
-  while (scanf("%lf %lf\n", &xx, &yy) == 2) {
-    ceres::CostFunction* cost =
-        new ceres::AutoDiffCostFunction<DistanceFromCircleCost, 1, 1, 1, 1>(xx,
-                                                                            yy);
-    problem.AddResidualBlock(cost, loss, &x, &y, &m);
-    num_points++;
-  }
-
-  std::cout << "Got " << num_points << " points.\n";
-
-  // Build and solve the problem.
-  ceres::Solver::Options options;
-  options.max_num_iterations = 500;
-  options.linear_solver_type = ceres::DENSE_QR;
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-
-  // Recover r from m.
-  r = m * m;
-
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "x : " << initial_x << " -> " << x << "\n";
-  std::cout << "y : " << initial_y << " -> " << y << "\n";
-  std::cout << "r : " << initial_r << " -> " << r << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/curve_fitting.c b/third_party/ceres/examples/curve_fitting.c
deleted file mode 100644
index fef5581..0000000
--- a/third_party/ceres/examples/curve_fitting.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* Ceres Solver - A fast non-linear least squares minimizer
- * Copyright 2015 Google Inc. All rights reserved.
- * http://ceres-solver.org/
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright notice,
- *   this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright notice,
- *   this list of conditions and the following disclaimer in the documentation
- *   and/or other materials provided with the distribution.
- * - Neither the name of Google Inc. nor the names of its contributors may be
- *   used to endorse or promote products derived from this software without
- *   specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Author: mierle@gmail.com (Keir Mierle)
- *
- * This is a port of curve_fitting.cc to the minimal C API for Ceres.
- */
-
-#include <math.h>
-#include <stdio.h>
-#include <string.h>  // For NULL
-#include "ceres/c_api.h"
-
-/* Data generated using the following octave code.
- *
- *   randn('seed', 23497);
- *   m = 0.3;
- *   c = 0.1;
- *   x=[0:0.075:5];
- *   y = exp(m * x + c);
- *   noise = randn(size(x)) * 0.2;
- *   y_observed = y + noise;
- *   data = [x', y_observed'];
- *
- */
-
-int num_observations = 67;
-double data[] = {
-  0.000000e+00, 1.133898e+00,
-  7.500000e-02, 1.334902e+00,
-  1.500000e-01, 1.213546e+00,
-  2.250000e-01, 1.252016e+00,
-  3.000000e-01, 1.392265e+00,
-  3.750000e-01, 1.314458e+00,
-  4.500000e-01, 1.472541e+00,
-  5.250000e-01, 1.536218e+00,
-  6.000000e-01, 1.355679e+00,
-  6.750000e-01, 1.463566e+00,
-  7.500000e-01, 1.490201e+00,
-  8.250000e-01, 1.658699e+00,
-  9.000000e-01, 1.067574e+00,
-  9.750000e-01, 1.464629e+00,
-  1.050000e+00, 1.402653e+00,
-  1.125000e+00, 1.713141e+00,
-  1.200000e+00, 1.527021e+00,
-  1.275000e+00, 1.702632e+00,
-  1.350000e+00, 1.423899e+00,
-  1.425000e+00, 1.543078e+00,
-  1.500000e+00, 1.664015e+00,
-  1.575000e+00, 1.732484e+00,
-  1.650000e+00, 1.543296e+00,
-  1.725000e+00, 1.959523e+00,
-  1.800000e+00, 1.685132e+00,
-  1.875000e+00, 1.951791e+00,
-  1.950000e+00, 2.095346e+00,
-  2.025000e+00, 2.361460e+00,
-  2.100000e+00, 2.169119e+00,
-  2.175000e+00, 2.061745e+00,
-  2.250000e+00, 2.178641e+00,
-  2.325000e+00, 2.104346e+00,
-  2.400000e+00, 2.584470e+00,
-  2.475000e+00, 1.914158e+00,
-  2.550000e+00, 2.368375e+00,
-  2.625000e+00, 2.686125e+00,
-  2.700000e+00, 2.712395e+00,
-  2.775000e+00, 2.499511e+00,
-  2.850000e+00, 2.558897e+00,
-  2.925000e+00, 2.309154e+00,
-  3.000000e+00, 2.869503e+00,
-  3.075000e+00, 3.116645e+00,
-  3.150000e+00, 3.094907e+00,
-  3.225000e+00, 2.471759e+00,
-  3.300000e+00, 3.017131e+00,
-  3.375000e+00, 3.232381e+00,
-  3.450000e+00, 2.944596e+00,
-  3.525000e+00, 3.385343e+00,
-  3.600000e+00, 3.199826e+00,
-  3.675000e+00, 3.423039e+00,
-  3.750000e+00, 3.621552e+00,
-  3.825000e+00, 3.559255e+00,
-  3.900000e+00, 3.530713e+00,
-  3.975000e+00, 3.561766e+00,
-  4.050000e+00, 3.544574e+00,
-  4.125000e+00, 3.867945e+00,
-  4.200000e+00, 4.049776e+00,
-  4.275000e+00, 3.885601e+00,
-  4.350000e+00, 4.110505e+00,
-  4.425000e+00, 4.345320e+00,
-  4.500000e+00, 4.161241e+00,
-  4.575000e+00, 4.363407e+00,
-  4.650000e+00, 4.161576e+00,
-  4.725000e+00, 4.619728e+00,
-  4.800000e+00, 4.737410e+00,
-  4.875000e+00, 4.727863e+00,
-  4.950000e+00, 4.669206e+00,
-};
-
-/* This is the equivalent of a use-defined CostFunction in the C++ Ceres API.
- * This is passed as a callback to the Ceres C API, which internally converts
- * the callback into a CostFunction. */
-static int exponential_residual(void* user_data,
-                                double** parameters,
-                                double* residuals,
-                                double** jacobians) {
-  double* measurement = (double*) user_data;
-  double x = measurement[0];
-  double y = measurement[1];
-  double m = parameters[0][0];
-  double c = parameters[1][0];
-
-  residuals[0] = y - exp(m * x + c);
-  if (jacobians == NULL) {
-    return 1;
-  }
-  if (jacobians[0] != NULL) {
-    jacobians[0][0] = - x * exp(m * x + c);  /* dr/dm */
-  }
-  if (jacobians[1] != NULL) {
-    jacobians[1][0] =     - exp(m * x + c);  /* dr/dc */
-  }
-  return 1;
-}
-
-int main(int argc, char** argv) {
-  /* Note: Typically it is better to compact m and c into one block,
-   * but in this case use separate blocks to illustrate the use of
-   * multiple parameter blocks. */
-  double m = 0.0;
-  double c = 0.0;
-
-  double *parameter_pointers[] = { &m, &c };
-  int parameter_sizes[] = { 1, 1 };
-  int i;
-
-  ceres_problem_t* problem;
-
-  /* Ceres has some internal stuff that needs to get initialized. */
-  ceres_init();
-
-  problem = ceres_create_problem();
-
-  /* Add all the residuals. */
-  for (i = 0; i < num_observations; ++i) {
-    ceres_problem_add_residual_block(
-        problem,
-        exponential_residual,  /* Cost function */
-        &data[2 * i],          /* Points to the (x,y) measurement */
-        NULL,                  /* No loss function */
-        NULL,                  /* No loss function user data */
-        1,                     /* Number of residuals */
-        2,                     /* Number of parameter blocks */
-        parameter_sizes,
-        parameter_pointers);
-  }
-
-  ceres_solve(problem);
-  ceres_free_problem(problem);
-
-  printf("Initial m: 0.0, c: 0.0\n");
-  printf("Final m: %g, c: %g\n", m, c);
-  return 0;
-}
diff --git a/third_party/ceres/examples/curve_fitting.cc b/third_party/ceres/examples/curve_fitting.cc
deleted file mode 100644
index 105402e..0000000
--- a/third_party/ceres/examples/curve_fitting.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// This example fits the curve f(x;m,c) = e^(m * x + c) to data, minimizing the
-// sum squared loss.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// Data generated using the following octave code.
-//   randn('seed', 23497);
-//   m = 0.3;
-//   c = 0.1;
-//   x=[0:0.075:5];
-//   y = exp(m * x + c);
-//   noise = randn(size(x)) * 0.2;
-//   y_observed = y + noise;
-//   data = [x', y_observed'];
-
-const int kNumObservations = 67;
-// clang-format off
-const double data[] = {
-  0.000000e+00, 1.133898e+00,
-  7.500000e-02, 1.334902e+00,
-  1.500000e-01, 1.213546e+00,
-  2.250000e-01, 1.252016e+00,
-  3.000000e-01, 1.392265e+00,
-  3.750000e-01, 1.314458e+00,
-  4.500000e-01, 1.472541e+00,
-  5.250000e-01, 1.536218e+00,
-  6.000000e-01, 1.355679e+00,
-  6.750000e-01, 1.463566e+00,
-  7.500000e-01, 1.490201e+00,
-  8.250000e-01, 1.658699e+00,
-  9.000000e-01, 1.067574e+00,
-  9.750000e-01, 1.464629e+00,
-  1.050000e+00, 1.402653e+00,
-  1.125000e+00, 1.713141e+00,
-  1.200000e+00, 1.527021e+00,
-  1.275000e+00, 1.702632e+00,
-  1.350000e+00, 1.423899e+00,
-  1.425000e+00, 1.543078e+00,
-  1.500000e+00, 1.664015e+00,
-  1.575000e+00, 1.732484e+00,
-  1.650000e+00, 1.543296e+00,
-  1.725000e+00, 1.959523e+00,
-  1.800000e+00, 1.685132e+00,
-  1.875000e+00, 1.951791e+00,
-  1.950000e+00, 2.095346e+00,
-  2.025000e+00, 2.361460e+00,
-  2.100000e+00, 2.169119e+00,
-  2.175000e+00, 2.061745e+00,
-  2.250000e+00, 2.178641e+00,
-  2.325000e+00, 2.104346e+00,
-  2.400000e+00, 2.584470e+00,
-  2.475000e+00, 1.914158e+00,
-  2.550000e+00, 2.368375e+00,
-  2.625000e+00, 2.686125e+00,
-  2.700000e+00, 2.712395e+00,
-  2.775000e+00, 2.499511e+00,
-  2.850000e+00, 2.558897e+00,
-  2.925000e+00, 2.309154e+00,
-  3.000000e+00, 2.869503e+00,
-  3.075000e+00, 3.116645e+00,
-  3.150000e+00, 3.094907e+00,
-  3.225000e+00, 2.471759e+00,
-  3.300000e+00, 3.017131e+00,
-  3.375000e+00, 3.232381e+00,
-  3.450000e+00, 2.944596e+00,
-  3.525000e+00, 3.385343e+00,
-  3.600000e+00, 3.199826e+00,
-  3.675000e+00, 3.423039e+00,
-  3.750000e+00, 3.621552e+00,
-  3.825000e+00, 3.559255e+00,
-  3.900000e+00, 3.530713e+00,
-  3.975000e+00, 3.561766e+00,
-  4.050000e+00, 3.544574e+00,
-  4.125000e+00, 3.867945e+00,
-  4.200000e+00, 4.049776e+00,
-  4.275000e+00, 3.885601e+00,
-  4.350000e+00, 4.110505e+00,
-  4.425000e+00, 4.345320e+00,
-  4.500000e+00, 4.161241e+00,
-  4.575000e+00, 4.363407e+00,
-  4.650000e+00, 4.161576e+00,
-  4.725000e+00, 4.619728e+00,
-  4.800000e+00, 4.737410e+00,
-  4.875000e+00, 4.727863e+00,
-  4.950000e+00, 4.669206e+00,
-};
-// clang-format on
-
-struct ExponentialResidual {
-  ExponentialResidual(double x, double y) : x_(x), y_(y) {}
-
-  template <typename T>
-  bool operator()(const T* const m, const T* const c, T* residual) const {
-    residual[0] = y_ - exp(m[0] * x_ + c[0]);
-    return true;
-  }
-
- private:
-  const double x_;
-  const double y_;
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  const double initial_m = 0.0;
-  const double initial_c = 0.0;
-  double m = initial_m;
-  double c = initial_c;
-
-  ceres::Problem problem;
-  for (int i = 0; i < kNumObservations; ++i) {
-    problem.AddResidualBlock(
-        new ceres::AutoDiffCostFunction<ExponentialResidual, 1, 1, 1>(
-            data[2 * i], data[2 * i + 1]),
-        nullptr,
-        &m,
-        &c);
-  }
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 25;
-  options.linear_solver_type = ceres::DENSE_QR;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "Initial m: " << initial_m << " c: " << initial_c << "\n";
-  std::cout << "Final   m: " << m << " c: " << c << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/denoising.cc b/third_party/ceres/examples/denoising.cc
deleted file mode 100644
index dc13d19..0000000
--- a/third_party/ceres/examples/denoising.cc
+++ /dev/null
@@ -1,300 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-//
-// Denoising using Fields of Experts and the Ceres minimizer.
-//
-// Note that for good denoising results the weighting between the data term
-// and the Fields of Experts term needs to be adjusted. This is discussed
-// in [1]. This program assumes Gaussian noise. The noise model can be changed
-// by substituting another function for QuadraticCostFunction.
-//
-// [1] S. Roth and M.J. Black. "Fields of Experts." International Journal of
-//     Computer Vision, 82(2):205--229, 2009.
-
-#include <algorithm>
-#include <cmath>
-#include <iostream>
-#include <random>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "fields_of_experts.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-#include "pgm_image.h"
-
-DEFINE_string(input, "", "File to which the output image should be written");
-DEFINE_string(foe_file, "", "FoE file to use");
-DEFINE_string(output, "", "File to which the output image should be written");
-DEFINE_double(sigma, 20.0, "Standard deviation of noise");
-DEFINE_string(trust_region_strategy,
-              "levenberg_marquardt",
-              "Options are: levenberg_marquardt, dogleg.");
-DEFINE_string(dogleg,
-              "traditional_dogleg",
-              "Options are: traditional_dogleg,"
-              "subspace_dogleg.");
-DEFINE_string(linear_solver,
-              "sparse_normal_cholesky",
-              "Options are: "
-              "sparse_normal_cholesky and cgnr.");
-DEFINE_string(preconditioner,
-              "jacobi",
-              "Options are: "
-              "identity, jacobi, subset");
-DEFINE_string(sparse_linear_algebra_library,
-              "suite_sparse",
-              "Options are: suite_sparse, cx_sparse and eigen_sparse");
-DEFINE_double(eta,
-              1e-2,
-              "Default value for eta. Eta determines the "
-              "accuracy of each linear solve of the truncated newton step. "
-              "Changing this parameter can affect solve performance.");
-DEFINE_int32(num_threads, 1, "Number of threads.");
-DEFINE_int32(num_iterations, 10, "Number of iterations.");
-DEFINE_bool(nonmonotonic_steps,
-            false,
-            "Trust region algorithm can use"
-            " nonmonotic steps.");
-DEFINE_bool(inner_iterations,
-            false,
-            "Use inner iterations to non-linearly "
-            "refine each successful trust region step.");
-DEFINE_bool(mixed_precision_solves, false, "Use mixed precision solves.");
-DEFINE_int32(max_num_refinement_iterations,
-             0,
-             "Iterative refinement iterations");
-DEFINE_bool(line_search,
-            false,
-            "Use a line search instead of trust region "
-            "algorithm.");
-DEFINE_double(subset_fraction,
-              0.2,
-              "The fraction of residual blocks to use for the"
-              " subset preconditioner.");
-
-namespace ceres::examples {
-namespace {
-
-// This cost function is used to build the data term.
-//
-//   f_i(x) = a * (x_i - b)^2
-//
-class QuadraticCostFunction : public ceres::SizedCostFunction<1, 1> {
- public:
-  QuadraticCostFunction(double a, double b) : sqrta_(std::sqrt(a)), b_(b) {}
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    const double x = parameters[0][0];
-    residuals[0] = sqrta_ * (x - b_);
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = sqrta_;
-    }
-    return true;
-  }
-
- private:
-  double sqrta_, b_;
-};
-
-// Creates a Fields of Experts MAP inference problem.
-void CreateProblem(const FieldsOfExperts& foe,
-                   const PGMImage<double>& image,
-                   Problem* problem,
-                   PGMImage<double>* solution) {
-  // Create the data term
-  CHECK_GT(CERES_GET_FLAG(FLAGS_sigma), 0.0);
-  const double coefficient =
-      1 / (2.0 * CERES_GET_FLAG(FLAGS_sigma) * CERES_GET_FLAG(FLAGS_sigma));
-  for (int index = 0; index < image.NumPixels(); ++index) {
-    ceres::CostFunction* cost_function = new QuadraticCostFunction(
-        coefficient, image.PixelFromLinearIndex(index));
-    problem->AddResidualBlock(
-        cost_function, nullptr, solution->MutablePixelFromLinearIndex(index));
-  }
-
-  // Create Ceres cost and loss functions for regularization. One is needed for
-  // each filter.
-  std::vector<ceres::LossFunction*> loss_function(foe.NumFilters());
-  std::vector<ceres::CostFunction*> cost_function(foe.NumFilters());
-  for (int alpha_index = 0; alpha_index < foe.NumFilters(); ++alpha_index) {
-    loss_function[alpha_index] = foe.NewLossFunction(alpha_index);
-    cost_function[alpha_index] = foe.NewCostFunction(alpha_index);
-  }
-
-  // Add FoE regularization for each patch in the image.
-  for (int x = 0; x < image.width() - (foe.Size() - 1); ++x) {
-    for (int y = 0; y < image.height() - (foe.Size() - 1); ++y) {
-      // Build a vector with the pixel indices of this patch.
-      std::vector<double*> pixels;
-      const std::vector<int>& x_delta_indices = foe.GetXDeltaIndices();
-      const std::vector<int>& y_delta_indices = foe.GetYDeltaIndices();
-      for (int i = 0; i < foe.NumVariables(); ++i) {
-        double* pixel = solution->MutablePixel(x + x_delta_indices[i],
-                                               y + y_delta_indices[i]);
-        pixels.push_back(pixel);
-      }
-      // For this patch with coordinates (x, y), we will add foe.NumFilters()
-      // terms to the objective function.
-      for (int alpha_index = 0; alpha_index < foe.NumFilters(); ++alpha_index) {
-        problem->AddResidualBlock(
-            cost_function[alpha_index], loss_function[alpha_index], pixels);
-      }
-    }
-  }
-}
-
-void SetLinearSolver(Solver::Options* options) {
-  CHECK(StringToLinearSolverType(CERES_GET_FLAG(FLAGS_linear_solver),
-                                 &options->linear_solver_type));
-  CHECK(StringToPreconditionerType(CERES_GET_FLAG(FLAGS_preconditioner),
-                                   &options->preconditioner_type));
-  CHECK(StringToSparseLinearAlgebraLibraryType(
-      CERES_GET_FLAG(FLAGS_sparse_linear_algebra_library),
-      &options->sparse_linear_algebra_library_type));
-  options->use_mixed_precision_solves =
-      CERES_GET_FLAG(FLAGS_mixed_precision_solves);
-  options->max_num_refinement_iterations =
-      CERES_GET_FLAG(FLAGS_max_num_refinement_iterations);
-}
-
-void SetMinimizerOptions(Solver::Options* options) {
-  options->max_num_iterations = CERES_GET_FLAG(FLAGS_num_iterations);
-  options->minimizer_progress_to_stdout = true;
-  options->num_threads = CERES_GET_FLAG(FLAGS_num_threads);
-  options->eta = CERES_GET_FLAG(FLAGS_eta);
-  options->use_nonmonotonic_steps = CERES_GET_FLAG(FLAGS_nonmonotonic_steps);
-  if (CERES_GET_FLAG(FLAGS_line_search)) {
-    options->minimizer_type = ceres::LINE_SEARCH;
-  }
-
-  CHECK(StringToTrustRegionStrategyType(
-      CERES_GET_FLAG(FLAGS_trust_region_strategy),
-      &options->trust_region_strategy_type));
-  CHECK(
-      StringToDoglegType(CERES_GET_FLAG(FLAGS_dogleg), &options->dogleg_type));
-  options->use_inner_iterations = CERES_GET_FLAG(FLAGS_inner_iterations);
-}
-
-// Solves the FoE problem using Ceres and post-processes it to make sure the
-// solution stays within [0, 255].
-void SolveProblem(Problem* problem, PGMImage<double>* solution) {
-  // These parameters may be experimented with. For example, ceres::DOGLEG tends
-  // to be faster for 2x2 filters, but gives solutions with slightly higher
-  // objective function value.
-  ceres::Solver::Options options;
-  SetMinimizerOptions(&options);
-  SetLinearSolver(&options);
-  options.function_tolerance = 1e-3;  // Enough for denoising.
-
-  if (options.linear_solver_type == ceres::CGNR &&
-      options.preconditioner_type == ceres::SUBSET) {
-    std::vector<ResidualBlockId> residual_blocks;
-    problem->GetResidualBlocks(&residual_blocks);
-
-    // To use the SUBSET preconditioner we need to provide a list of
-    // residual blocks (rows of the Jacobian). The denoising problem
-    // has fairly general sparsity, and there is no apriori reason to
-    // select one residual block over another, so we will randomly
-    // subsample the residual blocks with probability subset_fraction.
-    std::default_random_engine engine;
-    std::uniform_real_distribution<> distribution(0, 1);  // rage 0 - 1
-    for (auto residual_block : residual_blocks) {
-      if (distribution(engine) <= CERES_GET_FLAG(FLAGS_subset_fraction)) {
-        options.residual_blocks_for_subset_preconditioner.insert(
-            residual_block);
-      }
-    }
-  }
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, problem, &summary);
-  std::cout << summary.FullReport() << "\n";
-
-  // Make the solution stay in [0, 255].
-  for (int x = 0; x < solution->width(); ++x) {
-    for (int y = 0; y < solution->height(); ++y) {
-      *solution->MutablePixel(x, y) =
-          std::min(255.0, std::max(0.0, solution->Pixel(x, y)));
-    }
-  }
-}
-
-}  // namespace
-}  // namespace ceres::examples
-
-int main(int argc, char** argv) {
-  using namespace ceres::examples;
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-
-  if (CERES_GET_FLAG(FLAGS_input).empty()) {
-    std::cerr << "Please provide an image file name using -input.\n";
-    return 1;
-  }
-
-  if (CERES_GET_FLAG(FLAGS_foe_file).empty()) {
-    std::cerr << "Please provide a Fields of Experts file name using -foe_file."
-                 "\n";
-    return 1;
-  }
-
-  // Load the Fields of Experts filters from file.
-  FieldsOfExperts foe;
-  if (!foe.LoadFromFile(CERES_GET_FLAG(FLAGS_foe_file))) {
-    std::cerr << "Loading \"" << CERES_GET_FLAG(FLAGS_foe_file)
-              << "\" failed.\n";
-    return 2;
-  }
-
-  // Read the images
-  PGMImage<double> image(CERES_GET_FLAG(FLAGS_input));
-  if (image.width() == 0) {
-    std::cerr << "Reading \"" << CERES_GET_FLAG(FLAGS_input) << "\" failed.\n";
-    return 3;
-  }
-  PGMImage<double> solution(image.width(), image.height());
-  solution.Set(0.0);
-
-  ceres::Problem problem;
-  CreateProblem(foe, image, &problem, &solution);
-
-  SolveProblem(&problem, &solution);
-
-  if (!CERES_GET_FLAG(FLAGS_output).empty()) {
-    CHECK(solution.WriteToFile(CERES_GET_FLAG(FLAGS_output)))
-        << "Writing \"" << CERES_GET_FLAG(FLAGS_output) << "\" failed.";
-  }
-
-  return 0;
-}
diff --git a/third_party/ceres/examples/ellipse_approximation.cc b/third_party/ceres/examples/ellipse_approximation.cc
deleted file mode 100644
index 6fa8f1c..0000000
--- a/third_party/ceres/examples/ellipse_approximation.cc
+++ /dev/null
@@ -1,455 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-//
-// This fits points randomly distributed on an ellipse with an approximate
-// line segment contour. This is done by jointly optimizing the control points
-// of the line segment contour along with the preimage positions for the data
-// points. The purpose of this example is to show an example use case for
-// dynamic_sparsity, and how it can benefit problems which are numerically
-// dense but dynamically sparse.
-
-#include <cmath>
-#include <utility>
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// Data generated with the following Python code.
-//   import numpy as np
-//   np.random.seed(1337)
-//   t = np.linspace(0.0, 2.0 * np.pi, 212, endpoint=False)
-//   t += 2.0 * np.pi * 0.01 * np.random.randn(t.size)
-//   theta = np.deg2rad(15)
-//   a, b = np.cos(theta), np.sin(theta)
-//   R = np.array([[a, -b],
-//                 [b, a]])
-//   Y = np.dot(np.c_[4.0 * np.cos(t), np.sin(t)], R.T)
-
-const int kYRows = 212;
-const int kYCols = 2;
-// clang-format off
-const double kYData[kYRows * kYCols] = {
-  +3.871364e+00, +9.916027e-01,
-  +3.864003e+00, +1.034148e+00,
-  +3.850651e+00, +1.072202e+00,
-  +3.868350e+00, +1.014408e+00,
-  +3.796381e+00, +1.153021e+00,
-  +3.857138e+00, +1.056102e+00,
-  +3.787532e+00, +1.162215e+00,
-  +3.704477e+00, +1.227272e+00,
-  +3.564711e+00, +1.294959e+00,
-  +3.754363e+00, +1.191948e+00,
-  +3.482098e+00, +1.322725e+00,
-  +3.602777e+00, +1.279658e+00,
-  +3.585433e+00, +1.286858e+00,
-  +3.347505e+00, +1.356415e+00,
-  +3.220855e+00, +1.378914e+00,
-  +3.558808e+00, +1.297174e+00,
-  +3.403618e+00, +1.343809e+00,
-  +3.179828e+00, +1.384721e+00,
-  +3.054789e+00, +1.398759e+00,
-  +3.294153e+00, +1.366808e+00,
-  +3.247312e+00, +1.374813e+00,
-  +2.988547e+00, +1.404247e+00,
-  +3.114508e+00, +1.392698e+00,
-  +2.899226e+00, +1.409802e+00,
-  +2.533256e+00, +1.414778e+00,
-  +2.654773e+00, +1.415909e+00,
-  +2.565100e+00, +1.415313e+00,
-  +2.976456e+00, +1.405118e+00,
-  +2.484200e+00, +1.413640e+00,
-  +2.324751e+00, +1.407476e+00,
-  +1.930468e+00, +1.378221e+00,
-  +2.329017e+00, +1.407688e+00,
-  +1.760640e+00, +1.360319e+00,
-  +2.147375e+00, +1.396603e+00,
-  +1.741989e+00, +1.358178e+00,
-  +1.743859e+00, +1.358394e+00,
-  +1.557372e+00, +1.335208e+00,
-  +1.280551e+00, +1.295087e+00,
-  +1.429880e+00, +1.317546e+00,
-  +1.213485e+00, +1.284400e+00,
-  +9.168172e-01, +1.232870e+00,
-  +1.311141e+00, +1.299839e+00,
-  +1.231969e+00, +1.287382e+00,
-  +7.453773e-01, +1.200049e+00,
-  +6.151587e-01, +1.173683e+00,
-  +5.935666e-01, +1.169193e+00,
-  +2.538707e-01, +1.094227e+00,
-  +6.806136e-01, +1.187089e+00,
-  +2.805447e-01, +1.100405e+00,
-  +6.184807e-01, +1.174371e+00,
-  +1.170550e-01, +1.061762e+00,
-  +2.890507e-01, +1.102365e+00,
-  +3.834234e-01, +1.123772e+00,
-  +3.980161e-04, +1.033061e+00,
-  -3.651680e-01, +9.370367e-01,
-  -8.386351e-01, +7.987201e-01,
-  -8.105704e-01, +8.073702e-01,
-  -8.735139e-01, +7.878886e-01,
-  -9.913836e-01, +7.506100e-01,
-  -8.784011e-01, +7.863636e-01,
-  -1.181440e+00, +6.882566e-01,
-  -1.229556e+00, +6.720191e-01,
-  -1.035839e+00, +7.362765e-01,
-  -8.031520e-01, +8.096470e-01,
-  -1.539136e+00, +5.629549e-01,
-  -1.755423e+00, +4.817306e-01,
-  -1.337589e+00, +6.348763e-01,
-  -1.836966e+00, +4.499485e-01,
-  -1.913367e+00, +4.195617e-01,
-  -2.126467e+00, +3.314900e-01,
-  -1.927625e+00, +4.138238e-01,
-  -2.339862e+00, +2.379074e-01,
-  -1.881736e+00, +4.322152e-01,
-  -2.116753e+00, +3.356163e-01,
-  -2.255733e+00, +2.754930e-01,
-  -2.555834e+00, +1.368473e-01,
-  -2.770277e+00, +2.895711e-02,
-  -2.563376e+00, +1.331890e-01,
-  -2.826715e+00, -9.000818e-04,
-  -2.978191e+00, -8.457804e-02,
-  -3.115855e+00, -1.658786e-01,
-  -2.982049e+00, -8.678322e-02,
-  -3.307892e+00, -2.902083e-01,
-  -3.038346e+00, -1.194222e-01,
-  -3.190057e+00, -2.122060e-01,
-  -3.279086e+00, -2.705777e-01,
-  -3.322028e+00, -2.999889e-01,
-  -3.122576e+00, -1.699965e-01,
-  -3.551973e+00, -4.768674e-01,
-  -3.581866e+00, -5.032175e-01,
-  -3.497799e+00, -4.315203e-01,
-  -3.565384e+00, -4.885602e-01,
-  -3.699493e+00, -6.199815e-01,
-  -3.585166e+00, -5.061925e-01,
-  -3.758914e+00, -6.918275e-01,
-  -3.741104e+00, -6.689131e-01,
-  -3.688331e+00, -6.077239e-01,
-  -3.810425e+00, -7.689015e-01,
-  -3.791829e+00, -7.386911e-01,
-  -3.789951e+00, -7.358189e-01,
-  -3.823100e+00, -7.918398e-01,
-  -3.857021e+00, -8.727074e-01,
-  -3.858250e+00, -8.767645e-01,
-  -3.872100e+00, -9.563174e-01,
-  -3.864397e+00, -1.032630e+00,
-  -3.846230e+00, -1.081669e+00,
-  -3.834799e+00, -1.102536e+00,
-  -3.866684e+00, -1.022901e+00,
-  -3.808643e+00, -1.139084e+00,
-  -3.868840e+00, -1.011569e+00,
-  -3.791071e+00, -1.158615e+00,
-  -3.797999e+00, -1.151267e+00,
-  -3.696278e+00, -1.232314e+00,
-  -3.779007e+00, -1.170504e+00,
-  -3.622855e+00, -1.270793e+00,
-  -3.647249e+00, -1.259166e+00,
-  -3.655412e+00, -1.255042e+00,
-  -3.573218e+00, -1.291696e+00,
-  -3.638019e+00, -1.263684e+00,
-  -3.498409e+00, -1.317750e+00,
-  -3.304143e+00, -1.364970e+00,
-  -3.183001e+00, -1.384295e+00,
-  -3.202456e+00, -1.381599e+00,
-  -3.244063e+00, -1.375332e+00,
-  -3.233308e+00, -1.377019e+00,
-  -3.060112e+00, -1.398264e+00,
-  -3.078187e+00, -1.396517e+00,
-  -2.689594e+00, -1.415761e+00,
-  -2.947662e+00, -1.407039e+00,
-  -2.854490e+00, -1.411860e+00,
-  -2.660499e+00, -1.415900e+00,
-  -2.875955e+00, -1.410930e+00,
-  -2.675385e+00, -1.415848e+00,
-  -2.813155e+00, -1.413363e+00,
-  -2.417673e+00, -1.411512e+00,
-  -2.725461e+00, -1.415373e+00,
-  -2.148334e+00, -1.396672e+00,
-  -2.108972e+00, -1.393738e+00,
-  -2.029905e+00, -1.387302e+00,
-  -2.046214e+00, -1.388687e+00,
-  -2.057402e+00, -1.389621e+00,
-  -1.650250e+00, -1.347160e+00,
-  -1.806764e+00, -1.365469e+00,
-  -1.206973e+00, -1.283343e+00,
-  -8.029259e-01, -1.211308e+00,
-  -1.229551e+00, -1.286993e+00,
-  -1.101507e+00, -1.265754e+00,
-  -9.110645e-01, -1.231804e+00,
-  -1.110046e+00, -1.267211e+00,
-  -8.465274e-01, -1.219677e+00,
-  -7.594163e-01, -1.202818e+00,
-  -8.023823e-01, -1.211203e+00,
-  -3.732519e-01, -1.121494e+00,
-  -1.918373e-01, -1.079668e+00,
-  -4.671988e-01, -1.142253e+00,
-  -4.033645e-01, -1.128215e+00,
-  -1.920740e-01, -1.079724e+00,
-  -3.022157e-01, -1.105389e+00,
-  -1.652831e-01, -1.073354e+00,
-  +4.671625e-01, -9.085886e-01,
-  +5.940178e-01, -8.721832e-01,
-  +3.147557e-01, -9.508290e-01,
-  +6.383631e-01, -8.591867e-01,
-  +9.888923e-01, -7.514088e-01,
-  +7.076339e-01, -8.386023e-01,
-  +1.326682e+00, -6.386698e-01,
-  +1.149834e+00, -6.988221e-01,
-  +1.257742e+00, -6.624207e-01,
-  +1.492352e+00, -5.799632e-01,
-  +1.595574e+00, -5.421766e-01,
-  +1.240173e+00, -6.684113e-01,
-  +1.706612e+00, -5.004442e-01,
-  +1.873984e+00, -4.353002e-01,
-  +1.985633e+00, -3.902561e-01,
-  +1.722880e+00, -4.942329e-01,
-  +2.095182e+00, -3.447402e-01,
-  +2.018118e+00, -3.768991e-01,
-  +2.422702e+00, -1.999563e-01,
-  +2.370611e+00, -2.239326e-01,
-  +2.152154e+00, -3.205250e-01,
-  +2.525121e+00, -1.516499e-01,
-  +2.422116e+00, -2.002280e-01,
-  +2.842806e+00, +9.536372e-03,
-  +3.030128e+00, +1.146027e-01,
-  +2.888424e+00, +3.433444e-02,
-  +2.991609e+00, +9.226409e-02,
-  +2.924807e+00, +5.445844e-02,
-  +3.007772e+00, +1.015875e-01,
-  +2.781973e+00, -2.282382e-02,
-  +3.164737e+00, +1.961781e-01,
-  +3.237671e+00, +2.430139e-01,
-  +3.046123e+00, +1.240014e-01,
-  +3.414834e+00, +3.669060e-01,
-  +3.436591e+00, +3.833600e-01,
-  +3.626207e+00, +5.444311e-01,
-  +3.223325e+00, +2.336361e-01,
-  +3.511963e+00, +4.431060e-01,
-  +3.698380e+00, +6.187442e-01,
-  +3.670244e+00, +5.884943e-01,
-  +3.558833e+00, +4.828230e-01,
-  +3.661807e+00, +5.797689e-01,
-  +3.767261e+00, +7.030893e-01,
-  +3.801065e+00, +7.532650e-01,
-  +3.828523e+00, +8.024454e-01,
-  +3.840719e+00, +8.287032e-01,
-  +3.848748e+00, +8.485921e-01,
-  +3.865801e+00, +9.066551e-01,
-  +3.870983e+00, +9.404873e-01,
-  +3.870263e+00, +1.001884e+00,
-  +3.864462e+00, +1.032374e+00,
-  +3.870542e+00, +9.996121e-01,
-  +3.865424e+00, +1.028474e+00
-};
-// clang-format on
-ceres::ConstMatrixRef kY(kYData, kYRows, kYCols);
-
-class PointToLineSegmentContourCostFunction : public ceres::CostFunction {
- public:
-  PointToLineSegmentContourCostFunction(const int num_segments,
-                                        Eigen::Vector2d y)
-      : num_segments_(num_segments), y_(std::move(y)) {
-    // The first parameter is the preimage position.
-    mutable_parameter_block_sizes()->push_back(1);
-    // The next parameters are the control points for the line segment contour.
-    for (int i = 0; i < num_segments_; ++i) {
-      mutable_parameter_block_sizes()->push_back(2);
-    }
-    set_num_residuals(2);
-  }
-
-  bool Evaluate(const double* const* x,
-                double* residuals,
-                double** jacobians) const override {
-    // Convert the preimage position `t` into a segment index `i0` and the
-    // line segment interpolation parameter `u`. `i1` is the index of the next
-    // control point.
-    const double t = ModuloNumSegments(*x[0]);
-    CHECK_GE(t, 0.0);
-    CHECK_LT(t, num_segments_);
-    const int i0 = floor(t), i1 = (i0 + 1) % num_segments_;
-    const double u = t - i0;
-
-    // Linearly interpolate between control points `i0` and `i1`.
-    residuals[0] = y_[0] - ((1.0 - u) * x[1 + i0][0] + u * x[1 + i1][0]);
-    residuals[1] = y_[1] - ((1.0 - u) * x[1 + i0][1] + u * x[1 + i1][1]);
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    if (jacobians[0] != nullptr) {
-      jacobians[0][0] = x[1 + i0][0] - x[1 + i1][0];
-      jacobians[0][1] = x[1 + i0][1] - x[1 + i1][1];
-    }
-    for (int i = 0; i < num_segments_; ++i) {
-      if (jacobians[i + 1] != nullptr) {
-        ceres::MatrixRef(jacobians[i + 1], 2, 2).setZero();
-        if (i == i0) {
-          jacobians[i + 1][0] = -(1.0 - u);
-          jacobians[i + 1][3] = -(1.0 - u);
-        } else if (i == i1) {
-          jacobians[i + 1][0] = -u;
-          jacobians[i + 1][3] = -u;
-        }
-      }
-    }
-    return true;
-  }
-
-  static ceres::CostFunction* Create(const int num_segments,
-                                     const Eigen::Vector2d& y) {
-    return new PointToLineSegmentContourCostFunction(num_segments, y);
-  }
-
- private:
-  inline double ModuloNumSegments(const double t) const {
-    return t - num_segments_ * floor(t / num_segments_);
-  }
-
-  const int num_segments_;
-  const Eigen::Vector2d y_;
-};
-
-class EuclideanDistanceFunctor {
- public:
-  explicit EuclideanDistanceFunctor(const double& sqrt_weight)
-      : sqrt_weight_(sqrt_weight) {}
-
-  template <typename T>
-  bool operator()(const T* x0, const T* x1, T* residuals) const {
-    residuals[0] = sqrt_weight_ * (x0[0] - x1[0]);
-    residuals[1] = sqrt_weight_ * (x0[1] - x1[1]);
-    return true;
-  }
-
-  static ceres::CostFunction* Create(const double sqrt_weight) {
-    return new ceres::AutoDiffCostFunction<EuclideanDistanceFunctor, 2, 2, 2>(
-        sqrt_weight);
-  }
-
- private:
-  const double sqrt_weight_;
-};
-
-static bool SolveWithFullReport(ceres::Solver::Options options,
-                                ceres::Problem* problem,
-                                bool dynamic_sparsity) {
-  options.dynamic_sparsity = dynamic_sparsity;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, problem, &summary);
-
-  std::cout << "####################" << std::endl;
-  std::cout << "dynamic_sparsity = " << dynamic_sparsity << std::endl;
-  std::cout << "####################" << std::endl;
-  std::cout << summary.FullReport() << std::endl;
-
-  return summary.termination_type == ceres::CONVERGENCE;
-}
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  // Problem configuration.
-  const int num_segments = 151;
-  const double regularization_weight = 1e-2;
-
-  // Eigen::MatrixXd is column major so we define our own MatrixXd which is
-  // row major. Eigen::VectorXd can be used directly.
-  using MatrixXd =
-      Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
-  using Eigen::VectorXd;
-
-  // `X` is the matrix of control points which make up the contour of line
-  // segments. The number of control points is equal to the number of line
-  // segments because the contour is closed.
-  //
-  // Initialize `X` to points on the unit circle.
-  VectorXd w(num_segments + 1);
-  w.setLinSpaced(num_segments + 1, 0.0, 2.0 * ceres::constants::pi);
-  w.conservativeResize(num_segments);
-  MatrixXd X(num_segments, 2);
-  X.col(0) = w.array().cos();
-  X.col(1) = w.array().sin();
-
-  // Each data point has an associated preimage position on the line segment
-  // contour. For each data point we initialize the preimage positions to
-  // the index of the closest control point.
-  const int64_t num_observations = kY.rows();
-  VectorXd t(num_observations);
-  for (int64_t i = 0; i < num_observations; ++i) {
-    (X.rowwise() - kY.row(i)).rowwise().squaredNorm().minCoeff(&t[i]);
-  }
-
-  ceres::Problem problem;
-
-  // For each data point add a residual which measures its distance to its
-  // corresponding position on the line segment contour.
-  std::vector<double*> parameter_blocks(1 + num_segments);
-  parameter_blocks[0] = nullptr;
-  for (int i = 0; i < num_segments; ++i) {
-    parameter_blocks[i + 1] = X.data() + 2 * i;
-  }
-  for (int i = 0; i < num_observations; ++i) {
-    parameter_blocks[0] = &t[i];
-    problem.AddResidualBlock(
-        PointToLineSegmentContourCostFunction::Create(num_segments, kY.row(i)),
-        nullptr,
-        parameter_blocks);
-  }
-
-  // Add regularization to minimize the length of the line segment contour.
-  for (int i = 0; i < num_segments; ++i) {
-    problem.AddResidualBlock(
-        EuclideanDistanceFunctor::Create(sqrt(regularization_weight)),
-        nullptr,
-        X.data() + 2 * i,
-        X.data() + 2 * ((i + 1) % num_segments));
-  }
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 100;
-  options.linear_solver_type = ceres::SPARSE_NORMAL_CHOLESKY;
-
-  // First, solve `X` and `t` jointly with dynamic_sparsity = true.
-  MatrixXd X0 = X;
-  VectorXd t0 = t;
-  CHECK(SolveWithFullReport(options, &problem, true));
-
-  // Second, solve with dynamic_sparsity = false.
-  X = X0;
-  t = t0;
-  CHECK(SolveWithFullReport(options, &problem, false));
-
-  return 0;
-}
diff --git a/third_party/ceres/examples/evaluation_callback_example.cc b/third_party/ceres/examples/evaluation_callback_example.cc
deleted file mode 100644
index 6dbf932..0000000
--- a/third_party/ceres/examples/evaluation_callback_example.cc
+++ /dev/null
@@ -1,257 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// This example illustrates the use of the EvaluationCallback, which can be used
-// to perform high performance computation of the residual and Jacobians outside
-// Ceres (in this case using Eigen's vectorized code) and then the CostFunctions
-// just copy these computed residuals and Jacobians appropriately and pass them
-// to Ceres Solver.
-//
-// The results of running this example should be identical to the results
-// obtained by running curve_fitting.cc. The only difference between the two
-// examples is how the residuals and Jacobians are computed.
-//
-// The observant reader will note that both here and curve_fitting.cc instead of
-// creating one ResidualBlock for each observation one can just do one
-// ResidualBlock/CostFunction for the entire problem. The reason for keeping one
-// residual per observation is that it is what is needed if and when we need to
-// introduce a loss function which is what we do in robust_curve_fitting.cc
-
-#include <iostream>
-
-#include "Eigen/Core"
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// Data generated using the following octave code.
-//   randn('seed', 23497);
-//   m = 0.3;
-//   c = 0.1;
-//   x=[0:0.075:5];
-//   y = exp(m * x + c);
-//   noise = randn(size(x)) * 0.2;
-//   y_observed = y + noise;
-//   data = [x', y_observed'];
-
-const int kNumObservations = 67;
-// clang-format off
-const double data[] = {
-  0.000000e+00, 1.133898e+00,
-  7.500000e-02, 1.334902e+00,
-  1.500000e-01, 1.213546e+00,
-  2.250000e-01, 1.252016e+00,
-  3.000000e-01, 1.392265e+00,
-  3.750000e-01, 1.314458e+00,
-  4.500000e-01, 1.472541e+00,
-  5.250000e-01, 1.536218e+00,
-  6.000000e-01, 1.355679e+00,
-  6.750000e-01, 1.463566e+00,
-  7.500000e-01, 1.490201e+00,
-  8.250000e-01, 1.658699e+00,
-  9.000000e-01, 1.067574e+00,
-  9.750000e-01, 1.464629e+00,
-  1.050000e+00, 1.402653e+00,
-  1.125000e+00, 1.713141e+00,
-  1.200000e+00, 1.527021e+00,
-  1.275000e+00, 1.702632e+00,
-  1.350000e+00, 1.423899e+00,
-  1.425000e+00, 1.543078e+00,
-  1.500000e+00, 1.664015e+00,
-  1.575000e+00, 1.732484e+00,
-  1.650000e+00, 1.543296e+00,
-  1.725000e+00, 1.959523e+00,
-  1.800000e+00, 1.685132e+00,
-  1.875000e+00, 1.951791e+00,
-  1.950000e+00, 2.095346e+00,
-  2.025000e+00, 2.361460e+00,
-  2.100000e+00, 2.169119e+00,
-  2.175000e+00, 2.061745e+00,
-  2.250000e+00, 2.178641e+00,
-  2.325000e+00, 2.104346e+00,
-  2.400000e+00, 2.584470e+00,
-  2.475000e+00, 1.914158e+00,
-  2.550000e+00, 2.368375e+00,
-  2.625000e+00, 2.686125e+00,
-  2.700000e+00, 2.712395e+00,
-  2.775000e+00, 2.499511e+00,
-  2.850000e+00, 2.558897e+00,
-  2.925000e+00, 2.309154e+00,
-  3.000000e+00, 2.869503e+00,
-  3.075000e+00, 3.116645e+00,
-  3.150000e+00, 3.094907e+00,
-  3.225000e+00, 2.471759e+00,
-  3.300000e+00, 3.017131e+00,
-  3.375000e+00, 3.232381e+00,
-  3.450000e+00, 2.944596e+00,
-  3.525000e+00, 3.385343e+00,
-  3.600000e+00, 3.199826e+00,
-  3.675000e+00, 3.423039e+00,
-  3.750000e+00, 3.621552e+00,
-  3.825000e+00, 3.559255e+00,
-  3.900000e+00, 3.530713e+00,
-  3.975000e+00, 3.561766e+00,
-  4.050000e+00, 3.544574e+00,
-  4.125000e+00, 3.867945e+00,
-  4.200000e+00, 4.049776e+00,
-  4.275000e+00, 3.885601e+00,
-  4.350000e+00, 4.110505e+00,
-  4.425000e+00, 4.345320e+00,
-  4.500000e+00, 4.161241e+00,
-  4.575000e+00, 4.363407e+00,
-  4.650000e+00, 4.161576e+00,
-  4.725000e+00, 4.619728e+00,
-  4.800000e+00, 4.737410e+00,
-  4.875000e+00, 4.727863e+00,
-  4.950000e+00, 4.669206e+00,
-};
-// clang-format on
-
-// This implementation of the EvaluationCallback interface also stores the
-// residuals and Jacobians that the CostFunction copies their values from.
-class MyEvaluationCallback : public ceres::EvaluationCallback {
- public:
-  // m and c are passed by reference so that we have access to their values as
-  // they evolve over time through the course of optimization.
-  MyEvaluationCallback(const double& m, const double& c) : m_(m), c_(c) {
-    x_ = Eigen::VectorXd::Zero(kNumObservations);
-    y_ = Eigen::VectorXd::Zero(kNumObservations);
-    residuals_ = Eigen::VectorXd::Zero(kNumObservations);
-    jacobians_ = Eigen::MatrixXd::Zero(kNumObservations, 2);
-    for (int i = 0; i < kNumObservations; ++i) {
-      x_[i] = data[2 * i];
-      y_[i] = data[2 * i + 1];
-    }
-    PrepareForEvaluation(true, true);
-  }
-
-  void PrepareForEvaluation(bool evaluate_jacobians,
-                            bool new_evaluation_point) final {
-    if (new_evaluation_point) {
-      ComputeResidualAndJacobian(evaluate_jacobians);
-      jacobians_are_stale_ = !evaluate_jacobians;
-    } else {
-      if (evaluate_jacobians && jacobians_are_stale_) {
-        ComputeResidualAndJacobian(evaluate_jacobians);
-        jacobians_are_stale_ = false;
-      }
-    }
-  }
-
-  const Eigen::VectorXd& residuals() const { return residuals_; }
-  const Eigen::MatrixXd& jacobians() const { return jacobians_; }
-  bool jacobians_are_stale() const { return jacobians_are_stale_; }
-
- private:
-  void ComputeResidualAndJacobian(bool evaluate_jacobians) {
-    residuals_ = -(m_ * x_.array() + c_).exp();
-    if (evaluate_jacobians) {
-      jacobians_.col(0) = residuals_.array() * x_.array();
-      jacobians_.col(1) = residuals_;
-    }
-    residuals_ += y_;
-  }
-
-  const double& m_;
-  const double& c_;
-  Eigen::VectorXd x_;
-  Eigen::VectorXd y_;
-  Eigen::VectorXd residuals_;
-  Eigen::MatrixXd jacobians_;
-
-  // jacobians_are_stale_ keeps track of whether the jacobian matrix matches the
-  // residuals or not, we only compute it if we know that Solver is going to
-  // need access to it.
-  bool jacobians_are_stale_ = true;
-};
-
-// As the name implies this CostFunction does not do any computation, it just
-// copies the appropriate residual and Jacobian from the matrices stored in
-// MyEvaluationCallback.
-class CostAndJacobianCopyingCostFunction
-    : public ceres::SizedCostFunction<1, 1, 1> {
- public:
-  CostAndJacobianCopyingCostFunction(
-      int index, const MyEvaluationCallback& evaluation_callback)
-      : index_(index), evaluation_callback_(evaluation_callback) {}
-  ~CostAndJacobianCopyingCostFunction() override = default;
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = evaluation_callback_.residuals()(index_);
-    if (!jacobians) return true;
-
-    // Ensure that we are not using stale Jacobians.
-    CHECK(!evaluation_callback_.jacobians_are_stale());
-
-    if (jacobians[0] != nullptr)
-      jacobians[0][0] = evaluation_callback_.jacobians()(index_, 0);
-    if (jacobians[1] != nullptr)
-      jacobians[1][0] = evaluation_callback_.jacobians()(index_, 1);
-    return true;
-  }
-
- private:
-  int index_ = -1;
-  const MyEvaluationCallback& evaluation_callback_;
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  const double initial_m = 0.0;
-  const double initial_c = 0.0;
-  double m = initial_m;
-  double c = initial_c;
-
-  MyEvaluationCallback evaluation_callback(m, c);
-  ceres::Problem::Options problem_options;
-  problem_options.evaluation_callback = &evaluation_callback;
-  ceres::Problem problem(problem_options);
-  for (int i = 0; i < kNumObservations; ++i) {
-    problem.AddResidualBlock(
-        new CostAndJacobianCopyingCostFunction(i, evaluation_callback),
-        nullptr,
-        &m,
-        &c);
-  }
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 25;
-  options.linear_solver_type = ceres::DENSE_QR;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "Initial m: " << initial_m << " c: " << initial_c << "\n";
-  std::cout << "Final   m: " << m << " c: " << c << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/fields_of_experts.cc b/third_party/ceres/examples/fields_of_experts.cc
deleted file mode 100644
index f59fe16..0000000
--- a/third_party/ceres/examples/fields_of_experts.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-//
-// Class for loading the data required for describing a Fields of Experts (FoE)
-// model.
-
-#include "fields_of_experts.h"
-
-#include <cmath>
-#include <fstream>
-
-#include "pgm_image.h"
-
-namespace ceres::examples {
-
-FieldsOfExpertsCost::FieldsOfExpertsCost(const std::vector<double>& filter)
-    : filter_(filter) {
-  set_num_residuals(1);
-  for (int64_t i = 0; i < filter_.size(); ++i) {
-    mutable_parameter_block_sizes()->push_back(1);
-  }
-}
-
-// This is a dot product between a the scalar parameters and a vector of filter
-// coefficients.
-bool FieldsOfExpertsCost::Evaluate(double const* const* parameters,
-                                   double* residuals,
-                                   double** jacobians) const {
-  const int64_t num_variables = filter_.size();
-  residuals[0] = 0;
-  for (int64_t i = 0; i < num_variables; ++i) {
-    residuals[0] += filter_[i] * parameters[i][0];
-  }
-
-  if (jacobians != nullptr) {
-    for (int64_t i = 0; i < num_variables; ++i) {
-      if (jacobians[i] != nullptr) {
-        jacobians[i][0] = filter_[i];
-      }
-    }
-  }
-
-  return true;
-}
-
-// This loss function builds the FoE terms and is equal to
-//
-//   f(x) = alpha_i * log(1 + (1/2)s)
-//
-void FieldsOfExpertsLoss::Evaluate(double sq_norm, double rho[3]) const {
-  const double c = 0.5;
-  const double sum = 1.0 + sq_norm * c;
-  const double inv = 1.0 / sum;
-  // 'sum' and 'inv' are always positive, assuming that 's' is.
-  rho[0] = alpha_ * log(sum);
-  rho[1] = alpha_ * c * inv;
-  rho[2] = -alpha_ * c * c * inv * inv;
-}
-
-FieldsOfExperts::FieldsOfExperts() : size_(0), num_filters_(0) {}
-
-bool FieldsOfExperts::LoadFromFile(const std::string& filename) {
-  std::ifstream foe_file(filename.c_str());
-  foe_file >> size_;
-  foe_file >> num_filters_;
-  if (size_ < 0 || num_filters_ < 0) {
-    return false;
-  }
-  const int num_variables = NumVariables();
-
-  x_delta_indices_.resize(num_variables);
-  for (int i = 0; i < num_variables; ++i) {
-    foe_file >> x_delta_indices_[i];
-  }
-
-  y_delta_indices_.resize(NumVariables());
-  for (int i = 0; i < num_variables; ++i) {
-    foe_file >> y_delta_indices_[i];
-  }
-
-  alpha_.resize(num_filters_);
-  for (int i = 0; i < num_filters_; ++i) {
-    foe_file >> alpha_[i];
-  }
-
-  filters_.resize(num_filters_);
-  for (int i = 0; i < num_filters_; ++i) {
-    filters_[i].resize(num_variables);
-    for (int j = 0; j < num_variables; ++j) {
-      foe_file >> filters_[i][j];
-    }
-  }
-
-  // If any read failed, return failure.
-  if (!foe_file) {
-    size_ = 0;
-    return false;
-  }
-
-  // There cannot be anything else in the file. Try reading another number and
-  // return failure if that succeeded.
-  double temp;
-  foe_file >> temp;
-  if (foe_file) {
-    size_ = 0;
-    return false;
-  }
-
-  return true;
-}
-
-ceres::CostFunction* FieldsOfExperts::NewCostFunction(int alpha_index) const {
-  return new FieldsOfExpertsCost(filters_[alpha_index]);
-}
-
-ceres::LossFunction* FieldsOfExperts::NewLossFunction(int alpha_index) const {
-  return new FieldsOfExpertsLoss(alpha_[alpha_index]);
-}
-
-}  // namespace ceres::examples
diff --git a/third_party/ceres/examples/fields_of_experts.h b/third_party/ceres/examples/fields_of_experts.h
deleted file mode 100644
index 2ff8c94..0000000
--- a/third_party/ceres/examples/fields_of_experts.h
+++ /dev/null
@@ -1,132 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-//
-// Class for loading the data required for describing a Fields of Experts (FoE)
-// model. The Fields of Experts regularization consists of terms of the type
-//
-//   alpha * log(1 + (1/2)*sum(F .* X)^2),
-//
-// where F is a d-by-d image patch and alpha is a constant. This is implemented
-// by a FieldsOfExpertsSum object which represents the dot product between the
-// image patches and a FieldsOfExpertsLoss which implements the log(1 + (1/2)s)
-// part.
-//
-// [1] S. Roth and M.J. Black. "Fields of Experts." International Journal of
-//     Computer Vision, 82(2):205--229, 2009.
-
-#ifndef CERES_EXAMPLES_FIELDS_OF_EXPERTS_H_
-#define CERES_EXAMPLES_FIELDS_OF_EXPERTS_H_
-
-#include <iostream>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/loss_function.h"
-#include "ceres/sized_cost_function.h"
-#include "pgm_image.h"
-
-namespace ceres::examples {
-
-// One sum in the FoE regularizer. This is a dot product between a filter and an
-// image patch. It simply calculates the dot product between the filter
-// coefficients given in the constructor and the scalar parameters passed to it.
-class FieldsOfExpertsCost : public ceres::CostFunction {
- public:
-  explicit FieldsOfExpertsCost(const std::vector<double>& filter);
-  // The number of scalar parameters passed to Evaluate must equal the number of
-  // filter coefficients passed to the constructor.
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override;
-
- private:
-  const std::vector<double>& filter_;
-};
-
-// The loss function used to build the correct regularization. See above.
-//
-//   f(x) = alpha_i * log(1 + (1/2)s)
-//
-class FieldsOfExpertsLoss : public ceres::LossFunction {
- public:
-  explicit FieldsOfExpertsLoss(double alpha) : alpha_(alpha) {}
-  void Evaluate(double, double*) const override;
-
- private:
-  const double alpha_;
-};
-
-// This class loads a set of filters and coefficients from file. Then the users
-// obtains the correct loss and cost functions through NewCostFunction and
-// NewLossFunction.
-class FieldsOfExperts {
- public:
-  // Creates an empty object with size() == 0.
-  FieldsOfExperts();
-  // Attempts to load filters from a file. If unsuccessful it returns false and
-  // sets size() == 0.
-  bool LoadFromFile(const std::string& filename);
-
-  // Side length of a square filter in this FoE. They are all of the same size.
-  int Size() const { return size_; }
-
-  // Total number of pixels the filter covers.
-  int NumVariables() const { return size_ * size_; }
-
-  // Number of filters used by the FoE.
-  int NumFilters() const { return num_filters_; }
-
-  // Creates a new cost function. The caller is responsible for deallocating the
-  // memory. alpha_index specifies which filter is used in the cost function.
-  ceres::CostFunction* NewCostFunction(int alpha_index) const;
-  // Creates a new loss function. The caller is responsible for deallocating the
-  // memory. alpha_index specifies which filter this loss function is for.
-  ceres::LossFunction* NewLossFunction(int alpha_index) const;
-
-  // Gets the delta pixel indices for all pixels in a patch.
-  const std::vector<int>& GetXDeltaIndices() const { return x_delta_indices_; }
-  const std::vector<int>& GetYDeltaIndices() const { return y_delta_indices_; }
-
- private:
-  // The side length of a square filter.
-  int size_;
-  // The number of different filters used.
-  int num_filters_;
-  // Pixel offsets for all variables.
-  std::vector<int> x_delta_indices_, y_delta_indices_;
-  // The coefficients in front of each term.
-  std::vector<double> alpha_;
-  // The filters used for the dot product with image patches.
-  std::vector<std::vector<double>> filters_;
-};
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_FIELDS_OF_EXPERTS_H_
diff --git a/third_party/ceres/examples/helloworld.cc b/third_party/ceres/examples/helloworld.cc
deleted file mode 100644
index 40c2f2c..0000000
--- a/third_party/ceres/examples/helloworld.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A simple example of using the Ceres minimizer.
-//
-// Minimize 0.5 (10 - x)^2 using jacobian matrix computed using
-// automatic differentiation.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// A templated cost functor that implements the residual r = 10 -
-// x. The method operator() is templated so that we can then use an
-// automatic differentiation wrapper around it to generate its
-// derivatives.
-struct CostFunctor {
-  template <typename T>
-  bool operator()(const T* const x, T* residual) const {
-    residual[0] = 10.0 - x[0];
-    return true;
-  }
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  // The variable to solve for with its initial value. It will be
-  // mutated in place by the solver.
-  double x = 0.5;
-  const double initial_x = x;
-
-  // Build the problem.
-  ceres::Problem problem;
-
-  // Set up the only cost function (also known as residual). This uses
-  // auto-differentiation to obtain the derivative (jacobian).
-  ceres::CostFunction* cost_function =
-      new ceres::AutoDiffCostFunction<CostFunctor, 1, 1>();
-  problem.AddResidualBlock(cost_function, nullptr, &x);
-
-  // Run the solver!
-  ceres::Solver::Options options;
-  options.minimizer_progress_to_stdout = true;
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "x : " << initial_x << " -> " << x << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/helloworld_analytic_diff.cc b/third_party/ceres/examples/helloworld_analytic_diff.cc
deleted file mode 100644
index b4826a2..0000000
--- a/third_party/ceres/examples/helloworld_analytic_diff.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A simple example of using the Ceres minimizer.
-//
-// Minimize 0.5 (10 - x)^2 using analytic jacobian matrix.
-
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// A CostFunction implementing analytically derivatives for the
-// function f(x) = 10 - x.
-class QuadraticCostFunction
-    : public ceres::SizedCostFunction<1 /* number of residuals */,
-                                      1 /* size of first parameter */> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    double x = parameters[0][0];
-
-    // f(x) = 10 - x.
-    residuals[0] = 10 - x;
-
-    // f'(x) = -1. Since there's only 1 parameter and that parameter
-    // has 1 dimension, there is only 1 element to fill in the
-    // jacobians.
-    //
-    // Since the Evaluate function can be called with the jacobians
-    // pointer equal to nullptr, the Evaluate function must check to see
-    // if jacobians need to be computed.
-    //
-    // For this simple problem it is overkill to check if jacobians[0]
-    // is nullptr, but in general when writing more complex
-    // CostFunctions, it is possible that Ceres may only demand the
-    // derivatives w.r.t. a subset of the parameter blocks.
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = -1;
-    }
-
-    return true;
-  }
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  // The variable to solve for with its initial value. It will be
-  // mutated in place by the solver.
-  double x = 0.5;
-  const double initial_x = x;
-
-  // Build the problem.
-  ceres::Problem problem;
-
-  // Set up the only cost function (also known as residual).
-  ceres::CostFunction* cost_function = new QuadraticCostFunction;
-  problem.AddResidualBlock(cost_function, nullptr, &x);
-
-  // Run the solver!
-  ceres::Solver::Options options;
-  options.minimizer_progress_to_stdout = true;
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "x : " << initial_x << " -> " << x << "\n";
-
-  return 0;
-}
diff --git a/third_party/ceres/examples/helloworld_numeric_diff.cc b/third_party/ceres/examples/helloworld_numeric_diff.cc
deleted file mode 100644
index 4ed9ca6..0000000
--- a/third_party/ceres/examples/helloworld_numeric_diff.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Minimize 0.5 (10 - x)^2 using jacobian matrix computed using
-// numeric differentiation.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// A cost functor that implements the residual r = 10 - x.
-struct CostFunctor {
-  bool operator()(const double* const x, double* residual) const {
-    residual[0] = 10.0 - x[0];
-    return true;
-  }
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  // The variable to solve for with its initial value. It will be
-  // mutated in place by the solver.
-  double x = 0.5;
-  const double initial_x = x;
-
-  // Build the problem.
-  ceres::Problem problem;
-
-  // Set up the only cost function (also known as residual). This uses
-  // numeric differentiation to obtain the derivative (jacobian).
-  ceres::CostFunction* cost_function =
-      new ceres::NumericDiffCostFunction<CostFunctor, ceres::CENTRAL, 1, 1>(
-          new CostFunctor);
-  problem.AddResidualBlock(cost_function, nullptr, &x);
-
-  // Run the solver!
-  ceres::Solver::Options options;
-  options.minimizer_progress_to_stdout = true;
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "x : " << initial_x << " -> " << x << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/iteration_callback_example.cc b/third_party/ceres/examples/iteration_callback_example.cc
deleted file mode 100644
index 0be2f36..0000000
--- a/third_party/ceres/examples/iteration_callback_example.cc
+++ /dev/null
@@ -1,199 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// This example is a variant of curve_fitting.cc where we use an
-// IterationCallback to implement custom logging which prints out the values of
-// the parameter blocks as they evolve over the course of the optimization. This
-// also requires the use of Solver::Options::update_state_every_iteration.
-
-#include <iostream>
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// Data generated using the following octave code.
-//   randn('seed', 23497);
-//   m = 0.3;
-//   c = 0.1;
-//   x=[0:0.075:5];
-//   y = exp(m * x + c);
-//   noise = randn(size(x)) * 0.2;
-//   y_observed = y + noise;
-//   data = [x', y_observed'];
-
-const int kNumObservations = 67;
-// clang-format off
-const double data[] = {
-  0.000000e+00, 1.133898e+00,
-  7.500000e-02, 1.334902e+00,
-  1.500000e-01, 1.213546e+00,
-  2.250000e-01, 1.252016e+00,
-  3.000000e-01, 1.392265e+00,
-  3.750000e-01, 1.314458e+00,
-  4.500000e-01, 1.472541e+00,
-  5.250000e-01, 1.536218e+00,
-  6.000000e-01, 1.355679e+00,
-  6.750000e-01, 1.463566e+00,
-  7.500000e-01, 1.490201e+00,
-  8.250000e-01, 1.658699e+00,
-  9.000000e-01, 1.067574e+00,
-  9.750000e-01, 1.464629e+00,
-  1.050000e+00, 1.402653e+00,
-  1.125000e+00, 1.713141e+00,
-  1.200000e+00, 1.527021e+00,
-  1.275000e+00, 1.702632e+00,
-  1.350000e+00, 1.423899e+00,
-  1.425000e+00, 1.543078e+00,
-  1.500000e+00, 1.664015e+00,
-  1.575000e+00, 1.732484e+00,
-  1.650000e+00, 1.543296e+00,
-  1.725000e+00, 1.959523e+00,
-  1.800000e+00, 1.685132e+00,
-  1.875000e+00, 1.951791e+00,
-  1.950000e+00, 2.095346e+00,
-  2.025000e+00, 2.361460e+00,
-  2.100000e+00, 2.169119e+00,
-  2.175000e+00, 2.061745e+00,
-  2.250000e+00, 2.178641e+00,
-  2.325000e+00, 2.104346e+00,
-  2.400000e+00, 2.584470e+00,
-  2.475000e+00, 1.914158e+00,
-  2.550000e+00, 2.368375e+00,
-  2.625000e+00, 2.686125e+00,
-  2.700000e+00, 2.712395e+00,
-  2.775000e+00, 2.499511e+00,
-  2.850000e+00, 2.558897e+00,
-  2.925000e+00, 2.309154e+00,
-  3.000000e+00, 2.869503e+00,
-  3.075000e+00, 3.116645e+00,
-  3.150000e+00, 3.094907e+00,
-  3.225000e+00, 2.471759e+00,
-  3.300000e+00, 3.017131e+00,
-  3.375000e+00, 3.232381e+00,
-  3.450000e+00, 2.944596e+00,
-  3.525000e+00, 3.385343e+00,
-  3.600000e+00, 3.199826e+00,
-  3.675000e+00, 3.423039e+00,
-  3.750000e+00, 3.621552e+00,
-  3.825000e+00, 3.559255e+00,
-  3.900000e+00, 3.530713e+00,
-  3.975000e+00, 3.561766e+00,
-  4.050000e+00, 3.544574e+00,
-  4.125000e+00, 3.867945e+00,
-  4.200000e+00, 4.049776e+00,
-  4.275000e+00, 3.885601e+00,
-  4.350000e+00, 4.110505e+00,
-  4.425000e+00, 4.345320e+00,
-  4.500000e+00, 4.161241e+00,
-  4.575000e+00, 4.363407e+00,
-  4.650000e+00, 4.161576e+00,
-  4.725000e+00, 4.619728e+00,
-  4.800000e+00, 4.737410e+00,
-  4.875000e+00, 4.727863e+00,
-  4.950000e+00, 4.669206e+00,
-};
-// clang-format on
-
-struct ExponentialResidual {
-  ExponentialResidual(double x, double y) : x(x), y(y) {}
-
-  template <typename T>
-  bool operator()(const T* const m, const T* const c, T* residual) const {
-    residual[0] = y - exp(m[0] * x + c[0]);
-    return true;
-  }
-
- private:
-  const double x;
-  const double y;
-};
-
-// MyIterationCallback prints the iteration number, the cost and the value of
-// the parameter blocks every iteration.
-class MyIterationCallback : public ceres::IterationCallback {
- public:
-  MyIterationCallback(const double* m, const double* c) : m_(m), c_(c) {}
-
-  ~MyIterationCallback() override = default;
-
-  ceres::CallbackReturnType operator()(
-      const ceres::IterationSummary& summary) final {
-    std::cout << "Iteration: " << summary.iteration << " cost: " << summary.cost
-              << " m: " << *m_ << " c: " << *c_ << std::endl;
-    return ceres::SOLVER_CONTINUE;
-  }
-
- private:
-  const double* m_ = nullptr;
-  const double* c_ = nullptr;
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  const double initial_m = 0.0;
-  const double initial_c = 0.0;
-
-  double m = initial_m;
-  double c = initial_c;
-
-  ceres::Problem problem;
-  for (int i = 0; i < kNumObservations; ++i) {
-    problem.AddResidualBlock(
-        new ceres::AutoDiffCostFunction<ExponentialResidual, 1, 1, 1>(
-            data[2 * i], data[2 * i + 1]),
-        nullptr,
-        &m,
-        &c);
-  }
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 25;
-  options.linear_solver_type = ceres::DENSE_QR;
-
-  // Turn off the default logging from Ceres so that it does not interfere with
-  // MyIterationCallback.
-  options.minimizer_progress_to_stdout = false;
-
-  MyIterationCallback callback(&m, &c);
-  options.callbacks.push_back(&callback);
-
-  // Tell Ceres to update the value of the parameter blocks on each each
-  // iteration (successful or not) so that MyIterationCallback will be able to
-  // see them when called.
-  options.update_state_every_iteration = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "Initial m: " << initial_m << " c: " << initial_c << "\n";
-  std::cout << "Final   m: " << m << " c: " << c << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/libmv_bundle_adjuster.cc b/third_party/ceres/examples/libmv_bundle_adjuster.cc
deleted file mode 100644
index 9315ed7..0000000
--- a/third_party/ceres/examples/libmv_bundle_adjuster.cc
+++ /dev/null
@@ -1,854 +0,0 @@
-// Copyright (c) 2013 libmv authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-//         sergey.vfx@gmail.com (Sergey Sharybin)
-//
-// This is an example application which contains bundle adjustment code used
-// in the Libmv library and Blender. It reads problems from files passed via
-// the command line and runs the bundle adjuster on the problem.
-//
-// File with problem a binary file, for which it is crucial to know in which
-// order bytes of float values are stored in. This information is provided
-// by a single character in the beginning of the file. There're two possible
-// values of this byte:
-//  - V, which means values in the file are stored with big endian type
-//  - v, which means values in the file are stored with little endian type
-//
-// The rest of the file contains data in the following order:
-//   - Space in which markers' coordinates are stored in
-//   - Camera intrinsics
-//   - Number of cameras
-//   - Cameras
-//   - Number of 3D points
-//   - 3D points
-//   - Number of markers
-//   - Markers
-//
-// Markers' space could either be normalized or image (pixels). This is defined
-// by the single character in the file. P means markers in the file is in image
-// space, and N means markers are in normalized space.
-//
-// Camera intrinsics are 8 described by 8 float 8.
-// This values goes in the following order:
-//
-//   - Focal length, principal point X, principal point Y, k1, k2, k3, p1, p2
-//
-// Every camera is described by:
-//
-//   - Image for which camera belongs to (single 4 bytes integer value).
-//   - Column-major camera rotation matrix, 9 float values.
-//   - Camera translation, 3-component vector of float values.
-//
-// Image number shall be greater or equal to zero. Order of cameras does not
-// matter and gaps are possible.
-//
-// Every 3D point is described by:
-//
-//  - Track number point belongs to (single 4 bytes integer value).
-//  - 3D position vector, 3-component vector of float values.
-//
-// Track number shall be greater or equal to zero. Order of tracks does not
-// matter and gaps are possible.
-//
-// Finally every marker is described by:
-//
-//  - Image marker belongs to single 4 bytes integer value).
-//  - Track marker belongs to single 4 bytes integer value).
-//  - 2D marker position vector, (two float values).
-//
-// Marker's space is used a default value for refine_intrinsics command line
-// flag. This means if there's no refine_intrinsics flag passed via command
-// line, camera intrinsics will be refined if markers in the problem are
-// stored in image space and camera intrinsics will not be refined if markers
-// are in normalized space.
-//
-// Passing refine_intrinsics command line flag defines explicitly whether
-// refinement of intrinsics will happen. Currently, only none and all
-// intrinsics refinement is supported.
-//
-// There're existing problem files dumped from blender stored in folder
-// ../data/libmv-ba-problems.
-
-#include <fcntl.h>
-
-#include <cstdio>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#ifdef _MSC_VER
-#include <io.h>
-#define open _open
-#define close _close
-typedef unsigned __int32 uint32_t;
-#else
-#include <unistd.h>
-
-#include <cstdint>
-
-// NOTE MinGW does define the macro.
-#ifndef O_BINARY
-// O_BINARY is not defined on unix like platforms, as there is no
-// difference between binary and text files.
-#define O_BINARY 0
-#endif
-
-#endif
-
-#include "ceres/ceres.h"
-#include "ceres/rotation.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-
-using Mat3 = Eigen::Matrix<double, 3, 3>;
-using Vec6 = Eigen::Matrix<double, 6, 1>;
-using Vec3 = Eigen::Vector3d;
-using Vec4 = Eigen::Vector4d;
-
-DEFINE_string(input, "", "Input File name");
-DEFINE_string(refine_intrinsics,
-              "",
-              "Camera intrinsics to be refined. Options are: none, radial.");
-
-namespace {
-
-// A EuclideanCamera is the location and rotation of the camera
-// viewing an image.
-//
-// image identifies which image this camera represents.
-// R is a 3x3 matrix representing the rotation of the camera.
-// t is a translation vector representing its positions.
-struct EuclideanCamera {
-  EuclideanCamera() = default;
-  EuclideanCamera(const EuclideanCamera& c) = default;
-
-  int image{-1};
-  Mat3 R;
-  Vec3 t;
-};
-
-// A Point is the 3D location of a track.
-//
-// track identifies which track this point corresponds to.
-// X represents the 3D position of the track.
-struct EuclideanPoint {
-  EuclideanPoint() = default;
-  EuclideanPoint(const EuclideanPoint& p) = default;
-  int track{-1};
-  Vec3 X;
-};
-
-// A Marker is the 2D location of a tracked point in an image.
-//
-// x and y is the position of the marker in pixels from the top left corner
-// in the image identified by an image. All markers for to the same target
-// form a track identified by a common track number.
-struct Marker {
-  int image;
-  int track;
-  double x, y;
-};
-
-// Cameras intrinsics to be bundled.
-//
-// BUNDLE_RADIAL actually implies bundling of k1 and k2 coefficients only,
-// no bundling of k3 is possible at this moment.
-enum BundleIntrinsics {
-  BUNDLE_NO_INTRINSICS = 0,
-  BUNDLE_FOCAL_LENGTH = 1,
-  BUNDLE_PRINCIPAL_POINT = 2,
-  BUNDLE_RADIAL_K1 = 4,
-  BUNDLE_RADIAL_K2 = 8,
-  BUNDLE_RADIAL = 12,
-  BUNDLE_TANGENTIAL_P1 = 16,
-  BUNDLE_TANGENTIAL_P2 = 32,
-  BUNDLE_TANGENTIAL = 48,
-};
-
-// Denotes which blocks to keep constant during bundling.
-// For example it is useful to keep camera translations constant
-// when bundling tripod motions.
-enum BundleConstraints {
-  BUNDLE_NO_CONSTRAINTS = 0,
-  BUNDLE_NO_TRANSLATION = 1,
-};
-
-// The intrinsics need to get combined into a single parameter block; use these
-// enums to index instead of numeric constants.
-enum {
-  OFFSET_FOCAL_LENGTH,
-  OFFSET_PRINCIPAL_POINT_X,
-  OFFSET_PRINCIPAL_POINT_Y,
-  OFFSET_K1,
-  OFFSET_K2,
-  OFFSET_K3,
-  OFFSET_P1,
-  OFFSET_P2,
-};
-
-// Returns a pointer to the camera corresponding to a image.
-EuclideanCamera* CameraForImage(std::vector<EuclideanCamera>* all_cameras,
-                                const int image) {
-  if (image < 0 || image >= all_cameras->size()) {
-    return nullptr;
-  }
-  EuclideanCamera* camera = &(*all_cameras)[image];
-  if (camera->image == -1) {
-    return nullptr;
-  }
-  return camera;
-}
-
-const EuclideanCamera* CameraForImage(
-    const std::vector<EuclideanCamera>& all_cameras, const int image) {
-  if (image < 0 || image >= all_cameras.size()) {
-    return nullptr;
-  }
-  const EuclideanCamera* camera = &all_cameras[image];
-  if (camera->image == -1) {
-    return nullptr;
-  }
-  return camera;
-}
-
-// Returns maximal image number at which marker exists.
-int MaxImage(const std::vector<Marker>& all_markers) {
-  if (all_markers.size() == 0) {
-    return -1;
-  }
-
-  int max_image = all_markers[0].image;
-  for (int i = 1; i < all_markers.size(); i++) {
-    max_image = std::max(max_image, all_markers[i].image);
-  }
-  return max_image;
-}
-
-// Returns a pointer to the point corresponding to a track.
-EuclideanPoint* PointForTrack(std::vector<EuclideanPoint>* all_points,
-                              const int track) {
-  if (track < 0 || track >= all_points->size()) {
-    return nullptr;
-  }
-  EuclideanPoint* point = &(*all_points)[track];
-  if (point->track == -1) {
-    return nullptr;
-  }
-  return point;
-}
-
-// Reader of binary file which makes sure possibly needed endian
-// conversion happens when loading values like floats and integers.
-//
-// File's endian type is reading from a first character of file, which
-// could either be V for big endian or v for little endian.  This
-// means you need to design file format assuming first character
-// denotes file endianness in this way.
-class EndianAwareFileReader {
- public:
-  EndianAwareFileReader() {
-    // Get an endian type of the host machine.
-    union {
-      unsigned char bytes[4];
-      uint32_t value;
-    } endian_test = {{0, 1, 2, 3}};
-    host_endian_type_ = endian_test.value;
-    file_endian_type_ = host_endian_type_;
-  }
-
-  ~EndianAwareFileReader() {
-    if (file_descriptor_ > 0) {
-      close(file_descriptor_);
-    }
-  }
-
-  bool OpenFile(const std::string& file_name) {
-    file_descriptor_ = open(file_name.c_str(), O_RDONLY | O_BINARY);
-    if (file_descriptor_ < 0) {
-      return false;
-    }
-    // Get an endian tpye of data in the file.
-    auto file_endian_type_flag = Read<unsigned char>();
-    if (file_endian_type_flag == 'V') {
-      file_endian_type_ = kBigEndian;
-    } else if (file_endian_type_flag == 'v') {
-      file_endian_type_ = kLittleEndian;
-    } else {
-      LOG(FATAL) << "Problem file is stored in unknown endian type.";
-    }
-    return true;
-  }
-
-  // Read value from the file, will switch endian if needed.
-  template <typename T>
-  T Read() const {
-    T value;
-    CERES_DISABLE_DEPRECATED_WARNING
-    CHECK_GT(read(file_descriptor_, &value, sizeof(value)), 0);
-    CERES_RESTORE_DEPRECATED_WARNING
-    // Switch endian type if file contains data in different type
-    // that current machine.
-    if (file_endian_type_ != host_endian_type_) {
-      value = SwitchEndian<T>(value);
-    }
-    return value;
-  }
-
- private:
-  static constexpr long int kLittleEndian = 0x03020100ul;
-  static constexpr long int kBigEndian = 0x00010203ul;
-
-  // Switch endian type between big to little.
-  template <typename T>
-  T SwitchEndian(const T value) const {
-    if (sizeof(T) == 4) {
-      auto temp_value = static_cast<unsigned int>(value);
-      // clang-format off
-      return ((temp_value >> 24)) |
-             ((temp_value << 8) & 0x00ff0000) |
-             ((temp_value >> 8) & 0x0000ff00) |
-             ((temp_value << 24));
-      // clang-format on
-    } else if (sizeof(T) == 1) {
-      return value;
-    } else {
-      LOG(FATAL) << "Entered non-implemented part of endian "
-                    "switching function.";
-    }
-  }
-
-  int host_endian_type_;
-  int file_endian_type_;
-  int file_descriptor_{-1};
-};
-
-// Read 3x3 column-major matrix from the file
-void ReadMatrix3x3(const EndianAwareFileReader& file_reader, Mat3* matrix) {
-  for (int i = 0; i < 9; i++) {
-    (*matrix)(i % 3, i / 3) = file_reader.Read<float>();
-  }
-}
-
-// Read 3-vector from file
-void ReadVector3(const EndianAwareFileReader& file_reader, Vec3* vector) {
-  for (int i = 0; i < 3; i++) {
-    (*vector)(i) = file_reader.Read<float>();
-  }
-}
-
-// Reads a bundle adjustment problem from the file.
-//
-// file_name denotes from which file to read the problem.
-// camera_intrinsics will contain initial camera intrinsics values.
-//
-// all_cameras is a vector of all reconstructed cameras to be optimized,
-// vector element with number i will contain camera for image i.
-//
-// all_points is a vector of all reconstructed 3D points to be optimized,
-// vector element with number i will contain point for track i.
-//
-// all_markers is a vector of all tracked markers existing in
-// the problem. Only used for reprojection error calculation, stay
-// unchanged during optimization.
-//
-// Returns false if any kind of error happened during
-// reading.
-bool ReadProblemFromFile(const std::string& file_name,
-                         double camera_intrinsics[8],
-                         std::vector<EuclideanCamera>* all_cameras,
-                         std::vector<EuclideanPoint>* all_points,
-                         bool* is_image_space,
-                         std::vector<Marker>* all_markers) {
-  EndianAwareFileReader file_reader;
-  if (!file_reader.OpenFile(file_name)) {
-    return false;
-  }
-
-  // Read markers' space flag.
-  auto is_image_space_flag = file_reader.Read<unsigned char>();
-  if (is_image_space_flag == 'P') {
-    *is_image_space = true;
-  } else if (is_image_space_flag == 'N') {
-    *is_image_space = false;
-  } else {
-    LOG(FATAL) << "Problem file contains markers stored in unknown space.";
-  }
-
-  // Read camera intrinsics.
-  for (int i = 0; i < 8; i++) {
-    camera_intrinsics[i] = file_reader.Read<float>();
-  }
-
-  // Read all cameras.
-  int number_of_cameras = file_reader.Read<int>();
-  for (int i = 0; i < number_of_cameras; i++) {
-    EuclideanCamera camera;
-
-    camera.image = file_reader.Read<int>();
-    ReadMatrix3x3(file_reader, &camera.R);
-    ReadVector3(file_reader, &camera.t);
-
-    if (camera.image >= all_cameras->size()) {
-      all_cameras->resize(camera.image + 1);
-    }
-
-    (*all_cameras)[camera.image].image = camera.image;
-    (*all_cameras)[camera.image].R = camera.R;
-    (*all_cameras)[camera.image].t = camera.t;
-  }
-
-  LOG(INFO) << "Read " << number_of_cameras << " cameras.";
-
-  // Read all reconstructed 3D points.
-  int number_of_points = file_reader.Read<int>();
-  for (int i = 0; i < number_of_points; i++) {
-    EuclideanPoint point;
-
-    point.track = file_reader.Read<int>();
-    ReadVector3(file_reader, &point.X);
-
-    if (point.track >= all_points->size()) {
-      all_points->resize(point.track + 1);
-    }
-
-    (*all_points)[point.track].track = point.track;
-    (*all_points)[point.track].X = point.X;
-  }
-
-  LOG(INFO) << "Read " << number_of_points << " points.";
-
-  // And finally read all markers.
-  int number_of_markers = file_reader.Read<int>();
-  for (int i = 0; i < number_of_markers; i++) {
-    Marker marker;
-
-    marker.image = file_reader.Read<int>();
-    marker.track = file_reader.Read<int>();
-    marker.x = file_reader.Read<float>();
-    marker.y = file_reader.Read<float>();
-
-    all_markers->push_back(marker);
-  }
-
-  LOG(INFO) << "Read " << number_of_markers << " markers.";
-
-  return true;
-}
-
-// Apply camera intrinsics to the normalized point to get image coordinates.
-// This applies the radial lens distortion to a point which is in normalized
-// camera coordinates (i.e. the principal point is at (0, 0)) to get image
-// coordinates in pixels. Templated for use with autodifferentiation.
-template <typename T>
-inline void ApplyRadialDistortionCameraIntrinsics(const T& focal_length_x,
-                                                  const T& focal_length_y,
-                                                  const T& principal_point_x,
-                                                  const T& principal_point_y,
-                                                  const T& k1,
-                                                  const T& k2,
-                                                  const T& k3,
-                                                  const T& p1,
-                                                  const T& p2,
-                                                  const T& normalized_x,
-                                                  const T& normalized_y,
-                                                  T* image_x,
-                                                  T* image_y) {
-  T x = normalized_x;
-  T y = normalized_y;
-
-  // Apply distortion to the normalized points to get (xd, yd).
-  T r2 = x * x + y * y;
-  T r4 = r2 * r2;
-  T r6 = r4 * r2;
-  T r_coeff = 1.0 + k1 * r2 + k2 * r4 + k3 * r6;
-  T xd = x * r_coeff + 2.0 * p1 * x * y + p2 * (r2 + 2.0 * x * x);
-  T yd = y * r_coeff + 2.0 * p2 * x * y + p1 * (r2 + 2.0 * y * y);
-
-  // Apply focal length and principal point to get the final image coordinates.
-  *image_x = focal_length_x * xd + principal_point_x;
-  *image_y = focal_length_y * yd + principal_point_y;
-}
-
-// Cost functor which computes reprojection error of 3D point X
-// on camera defined by angle-axis rotation and it's translation
-// (which are in the same block due to optimization reasons).
-//
-// This functor uses a radial distortion model.
-struct OpenCVReprojectionError {
-  OpenCVReprojectionError(const double observed_x, const double observed_y)
-      : observed_x(observed_x), observed_y(observed_y) {}
-
-  template <typename T>
-  bool operator()(const T* const intrinsics,
-                  const T* const R_t,  // Rotation denoted by angle axis
-                                       // followed with translation
-                  const T* const X,    // Point coordinates 3x1.
-                  T* residuals) const {
-    // Unpack the intrinsics.
-    const T& focal_length = intrinsics[OFFSET_FOCAL_LENGTH];
-    const T& principal_point_x = intrinsics[OFFSET_PRINCIPAL_POINT_X];
-    const T& principal_point_y = intrinsics[OFFSET_PRINCIPAL_POINT_Y];
-    const T& k1 = intrinsics[OFFSET_K1];
-    const T& k2 = intrinsics[OFFSET_K2];
-    const T& k3 = intrinsics[OFFSET_K3];
-    const T& p1 = intrinsics[OFFSET_P1];
-    const T& p2 = intrinsics[OFFSET_P2];
-
-    // Compute projective coordinates: x = RX + t.
-    T x[3];
-
-    ceres::AngleAxisRotatePoint(R_t, X, x);
-    x[0] += R_t[3];
-    x[1] += R_t[4];
-    x[2] += R_t[5];
-
-    // Compute normalized coordinates: x /= x[2].
-    T xn = x[0] / x[2];
-    T yn = x[1] / x[2];
-
-    T predicted_x, predicted_y;
-
-    // Apply distortion to the normalized points to get (xd, yd).
-    // TODO(keir): Do early bailouts for zero distortion; these are expensive
-    // jet operations.
-    ApplyRadialDistortionCameraIntrinsics(focal_length,
-                                          focal_length,
-                                          principal_point_x,
-                                          principal_point_y,
-                                          k1,
-                                          k2,
-                                          k3,
-                                          p1,
-                                          p2,
-                                          xn,
-                                          yn,
-                                          &predicted_x,
-                                          &predicted_y);
-
-    // The error is the difference between the predicted and observed position.
-    residuals[0] = predicted_x - observed_x;
-    residuals[1] = predicted_y - observed_y;
-
-    return true;
-  }
-
-  const double observed_x;
-  const double observed_y;
-};
-
-// Print a message to the log which camera intrinsics are gonna to be optimized.
-void BundleIntrinsicsLogMessage(const int bundle_intrinsics) {
-  if (bundle_intrinsics == BUNDLE_NO_INTRINSICS) {
-    LOG(INFO) << "Bundling only camera positions.";
-  } else {
-    std::string bundling_message = "";
-
-#define APPEND_BUNDLING_INTRINSICS(name, flag) \
-  if (bundle_intrinsics & flag) {              \
-    if (!bundling_message.empty()) {           \
-      bundling_message += ", ";                \
-    }                                          \
-    bundling_message += name;                  \
-  }                                            \
-  (void)0
-
-    APPEND_BUNDLING_INTRINSICS("f", BUNDLE_FOCAL_LENGTH);
-    APPEND_BUNDLING_INTRINSICS("px, py", BUNDLE_PRINCIPAL_POINT);
-    APPEND_BUNDLING_INTRINSICS("k1", BUNDLE_RADIAL_K1);
-    APPEND_BUNDLING_INTRINSICS("k2", BUNDLE_RADIAL_K2);
-    APPEND_BUNDLING_INTRINSICS("p1", BUNDLE_TANGENTIAL_P1);
-    APPEND_BUNDLING_INTRINSICS("p2", BUNDLE_TANGENTIAL_P2);
-
-    LOG(INFO) << "Bundling " << bundling_message << ".";
-  }
-}
-
-// Print a message to the log containing all the camera intriniscs values.
-void PrintCameraIntrinsics(const char* text, const double* camera_intrinsics) {
-  std::ostringstream intrinsics_output;
-
-  intrinsics_output << "f=" << camera_intrinsics[OFFSET_FOCAL_LENGTH];
-
-  intrinsics_output << " cx=" << camera_intrinsics[OFFSET_PRINCIPAL_POINT_X]
-                    << " cy=" << camera_intrinsics[OFFSET_PRINCIPAL_POINT_Y];
-
-#define APPEND_DISTORTION_COEFFICIENT(name, offset)                   \
-  {                                                                   \
-    if (camera_intrinsics[offset] != 0.0) {                           \
-      intrinsics_output << " " name "=" << camera_intrinsics[offset]; \
-    }                                                                 \
-  }                                                                   \
-  (void)0
-
-  APPEND_DISTORTION_COEFFICIENT("k1", OFFSET_K1);
-  APPEND_DISTORTION_COEFFICIENT("k2", OFFSET_K2);
-  APPEND_DISTORTION_COEFFICIENT("k3", OFFSET_K3);
-  APPEND_DISTORTION_COEFFICIENT("p1", OFFSET_P1);
-  APPEND_DISTORTION_COEFFICIENT("p2", OFFSET_P2);
-
-#undef APPEND_DISTORTION_COEFFICIENT
-
-  LOG(INFO) << text << intrinsics_output.str();
-}
-
-// Get a vector of camera's rotations denoted by angle axis
-// conjuncted with translations into single block
-//
-// Element with index i matches to a rotation+translation for
-// camera at image i.
-std::vector<Vec6> PackCamerasRotationAndTranslation(
-    const std::vector<Marker>& all_markers,
-    const std::vector<EuclideanCamera>& all_cameras) {
-  std::vector<Vec6> all_cameras_R_t;
-  int max_image = MaxImage(all_markers);
-
-  all_cameras_R_t.resize(max_image + 1);
-
-  for (int i = 0; i <= max_image; i++) {
-    const EuclideanCamera* camera = CameraForImage(all_cameras, i);
-
-    if (!camera) {
-      continue;
-    }
-
-    ceres::RotationMatrixToAngleAxis(&camera->R(0, 0), &all_cameras_R_t[i](0));
-    all_cameras_R_t[i].tail<3>() = camera->t;
-  }
-
-  return all_cameras_R_t;
-}
-
-// Convert cameras rotations fro mangle axis back to rotation matrix.
-void UnpackCamerasRotationAndTranslation(
-    const std::vector<Marker>& all_markers,
-    const std::vector<Vec6>& all_cameras_R_t,
-    std::vector<EuclideanCamera>* all_cameras) {
-  int max_image = MaxImage(all_markers);
-
-  for (int i = 0; i <= max_image; i++) {
-    EuclideanCamera* camera = CameraForImage(all_cameras, i);
-
-    if (!camera) {
-      continue;
-    }
-
-    ceres::AngleAxisToRotationMatrix(&all_cameras_R_t[i](0), &camera->R(0, 0));
-    camera->t = all_cameras_R_t[i].tail<3>();
-  }
-}
-
-void EuclideanBundleCommonIntrinsics(const std::vector<Marker>& all_markers,
-                                     const int bundle_intrinsics,
-                                     const int bundle_constraints,
-                                     double* camera_intrinsics,
-                                     std::vector<EuclideanCamera>* all_cameras,
-                                     std::vector<EuclideanPoint>* all_points) {
-  PrintCameraIntrinsics("Original intrinsics: ", camera_intrinsics);
-
-  ceres::Problem::Options problem_options;
-  problem_options.cost_function_ownership = ceres::DO_NOT_TAKE_OWNERSHIP;
-  ceres::Problem problem(problem_options);
-
-  // Convert cameras rotations to angle axis and merge with translation
-  // into single parameter block for maximal minimization speed
-  //
-  // Block for minimization has got the following structure:
-  //   <3 elements for angle-axis> <3 elements for translation>
-  std::vector<Vec6> all_cameras_R_t =
-      PackCamerasRotationAndTranslation(all_markers, *all_cameras);
-
-  // Manifold used to restrict camera motion for modal solvers.
-  ceres::SubsetManifold* constant_transform_manifold = nullptr;
-  if (bundle_constraints & BUNDLE_NO_TRANSLATION) {
-    std::vector<int> constant_translation;
-
-    // First three elements are rotation, last three are translation.
-    constant_translation.push_back(3);
-    constant_translation.push_back(4);
-    constant_translation.push_back(5);
-
-    constant_transform_manifold =
-        new ceres::SubsetManifold(6, constant_translation);
-  }
-
-  std::vector<OpenCVReprojectionError> errors;
-  std::vector<ceres::AutoDiffCostFunction<OpenCVReprojectionError, 2, 8, 6, 3>>
-      costFunctions;
-  errors.reserve(all_markers.size());
-  costFunctions.reserve(all_markers.size());
-
-  int num_residuals = 0;
-  bool have_locked_camera = false;
-  for (const auto& marker : all_markers) {
-    EuclideanCamera* camera = CameraForImage(all_cameras, marker.image);
-    EuclideanPoint* point = PointForTrack(all_points, marker.track);
-    if (camera == nullptr || point == nullptr) {
-      continue;
-    }
-
-    // Rotation of camera denoted in angle axis followed with
-    // camera translaiton.
-    double* current_camera_R_t = &all_cameras_R_t[camera->image](0);
-
-    errors.emplace_back(marker.x, marker.y);
-    costFunctions.emplace_back(&errors.back(), ceres::DO_NOT_TAKE_OWNERSHIP);
-
-    problem.AddResidualBlock(&costFunctions.back(),
-                             nullptr,
-                             camera_intrinsics,
-                             current_camera_R_t,
-                             &point->X(0));
-
-    // We lock the first camera to better deal with scene orientation ambiguity.
-    if (!have_locked_camera) {
-      problem.SetParameterBlockConstant(current_camera_R_t);
-      have_locked_camera = true;
-    }
-
-    if (bundle_constraints & BUNDLE_NO_TRANSLATION) {
-      problem.SetManifold(current_camera_R_t, constant_transform_manifold);
-    }
-
-    num_residuals++;
-  }
-  LOG(INFO) << "Number of residuals: " << num_residuals;
-
-  if (!num_residuals) {
-    LOG(INFO) << "Skipping running minimizer with zero residuals";
-    return;
-  }
-
-  BundleIntrinsicsLogMessage(bundle_intrinsics);
-
-  if (bundle_intrinsics == BUNDLE_NO_INTRINSICS) {
-    // No camera intrinsics are being refined,
-    // set the whole parameter block as constant for best performance.
-    problem.SetParameterBlockConstant(camera_intrinsics);
-  } else {
-    // Set the camera intrinsics that are not to be bundled as
-    // constant using some macro trickery.
-
-    std::vector<int> constant_intrinsics;
-#define MAYBE_SET_CONSTANT(bundle_enum, offset) \
-  if (!(bundle_intrinsics & bundle_enum)) {     \
-    constant_intrinsics.push_back(offset);      \
-  }
-    MAYBE_SET_CONSTANT(BUNDLE_FOCAL_LENGTH, OFFSET_FOCAL_LENGTH);
-    MAYBE_SET_CONSTANT(BUNDLE_PRINCIPAL_POINT, OFFSET_PRINCIPAL_POINT_X);
-    MAYBE_SET_CONSTANT(BUNDLE_PRINCIPAL_POINT, OFFSET_PRINCIPAL_POINT_Y);
-    MAYBE_SET_CONSTANT(BUNDLE_RADIAL_K1, OFFSET_K1);
-    MAYBE_SET_CONSTANT(BUNDLE_RADIAL_K2, OFFSET_K2);
-    MAYBE_SET_CONSTANT(BUNDLE_TANGENTIAL_P1, OFFSET_P1);
-    MAYBE_SET_CONSTANT(BUNDLE_TANGENTIAL_P2, OFFSET_P2);
-#undef MAYBE_SET_CONSTANT
-
-    // Always set K3 constant, it's not used at the moment.
-    constant_intrinsics.push_back(OFFSET_K3);
-
-    auto* subset_manifold = new ceres::SubsetManifold(8, constant_intrinsics);
-    problem.SetManifold(camera_intrinsics, subset_manifold);
-  }
-
-  // Configure the solver.
-  ceres::Solver::Options options;
-  options.use_nonmonotonic_steps = true;
-  options.preconditioner_type = ceres::SCHUR_JACOBI;
-  options.linear_solver_type = ceres::ITERATIVE_SCHUR;
-  options.use_inner_iterations = true;
-  options.max_num_iterations = 100;
-  options.minimizer_progress_to_stdout = true;
-
-  // Solve!
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-
-  std::cout << "Final report:\n" << summary.FullReport();
-
-  // Copy rotations and translations back.
-  UnpackCamerasRotationAndTranslation(
-      all_markers, all_cameras_R_t, all_cameras);
-
-  PrintCameraIntrinsics("Final intrinsics: ", camera_intrinsics);
-}
-}  // namespace
-
-int main(int argc, char** argv) {
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-
-  if (CERES_GET_FLAG(FLAGS_input).empty()) {
-    LOG(ERROR) << "Usage: libmv_bundle_adjuster --input=blender_problem";
-    return EXIT_FAILURE;
-  }
-
-  double camera_intrinsics[8];
-  std::vector<EuclideanCamera> all_cameras;
-  std::vector<EuclideanPoint> all_points;
-  bool is_image_space;
-  std::vector<Marker> all_markers;
-
-  if (!ReadProblemFromFile(CERES_GET_FLAG(FLAGS_input),
-                           camera_intrinsics,
-                           &all_cameras,
-                           &all_points,
-                           &is_image_space,
-                           &all_markers)) {
-    LOG(ERROR) << "Error reading problem file";
-    return EXIT_FAILURE;
-  }
-
-  // If there's no refine_intrinsics passed via command line
-  // (in this case FLAGS_refine_intrinsics will be an empty string)
-  // we use problem's settings to detect whether intrinsics
-  // shall be refined or not.
-  //
-  // Namely, if problem has got markers stored in image (pixel)
-  // space, we do full intrinsics refinement. If markers are
-  // stored in normalized space, and refine_intrinsics is not
-  // set, no refining will happen.
-  //
-  // Using command line argument refine_intrinsics will explicitly
-  // declare which intrinsics need to be refined and in this case
-  // refining flags does not depend on problem at all.
-  int bundle_intrinsics = BUNDLE_NO_INTRINSICS;
-  if (CERES_GET_FLAG(FLAGS_refine_intrinsics).empty()) {
-    if (is_image_space) {
-      bundle_intrinsics = BUNDLE_FOCAL_LENGTH | BUNDLE_RADIAL;
-    }
-  } else {
-    if (CERES_GET_FLAG(FLAGS_refine_intrinsics) == "radial") {
-      bundle_intrinsics = BUNDLE_FOCAL_LENGTH | BUNDLE_RADIAL;
-    } else if (CERES_GET_FLAG(FLAGS_refine_intrinsics) != "none") {
-      LOG(ERROR) << "Unsupported value for refine-intrinsics";
-      return EXIT_FAILURE;
-    }
-  }
-
-  // Run the bundler.
-  EuclideanBundleCommonIntrinsics(all_markers,
-                                  bundle_intrinsics,
-                                  BUNDLE_NO_CONSTRAINTS,
-                                  camera_intrinsics,
-                                  &all_cameras,
-                                  &all_points);
-
-  return EXIT_SUCCESS;
-}
diff --git a/third_party/ceres/examples/libmv_homography.cc b/third_party/ceres/examples/libmv_homography.cc
deleted file mode 100644
index b7c9eda..0000000
--- a/third_party/ceres/examples/libmv_homography.cc
+++ /dev/null
@@ -1,402 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Copyright (c) 2014 libmv authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//
-// Author: sergey.vfx@gmail.com (Sergey Sharybin)
-//
-// This file demonstrates solving for a homography between two sets of points.
-// A homography describes a transformation between a sets of points on a plane,
-// perspectively projected into two images. The first step is to solve a
-// homogeneous system of equations via singular value decomposition, giving an
-// algebraic solution for the homography, then solving for a final solution by
-// minimizing the symmetric transfer error in image space with Ceres (called the
-// Gold Standard Solution in "Multiple View Geometry"). The routines are based
-// on the routines from the Libmv library.
-//
-// This example demonstrates custom exit criterion by having a callback check
-// for image-space error.
-
-#include <utility>
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-using EigenDouble = Eigen::NumTraits<double>;
-
-using Mat = Eigen::MatrixXd;
-using Vec = Eigen::VectorXd;
-using Mat3 = Eigen::Matrix<double, 3, 3>;
-using Vec2 = Eigen::Matrix<double, 2, 1>;
-using MatX8 = Eigen::Matrix<double, Eigen::Dynamic, 8>;
-using Vec3 = Eigen::Vector3d;
-
-namespace {
-
-// This structure contains options that controls how the homography
-// estimation operates.
-//
-// Defaults should be suitable for a wide range of use cases, but
-// better performance and accuracy might require tweaking.
-struct EstimateHomographyOptions {
-  // Default settings for homography estimation which should be suitable
-  // for a wide range of use cases.
-  EstimateHomographyOptions() = default;
-
-  // Maximal number of iterations for the refinement step.
-  int max_num_iterations{50};
-
-  // Expected average of symmetric geometric distance between
-  // actual destination points and original ones transformed by
-  // estimated homography matrix.
-  //
-  // Refinement will finish as soon as average of symmetric
-  // geometric distance is less or equal to this value.
-  //
-  // This distance is measured in the same units as input points are.
-  double expected_average_symmetric_distance{1e-16};
-};
-
-// Calculate symmetric geometric cost terms:
-//
-// forward_error = D(H * x1, x2)
-// backward_error = D(H^-1 * x2, x1)
-//
-// Templated to be used with autodifferentiation.
-template <typename T>
-void SymmetricGeometricDistanceTerms(const Eigen::Matrix<T, 3, 3>& H,
-                                     const Eigen::Matrix<T, 2, 1>& x1,
-                                     const Eigen::Matrix<T, 2, 1>& x2,
-                                     T forward_error[2],
-                                     T backward_error[2]) {
-  using Vec3 = Eigen::Matrix<T, 3, 1>;
-  Vec3 x(x1(0), x1(1), T(1.0));
-  Vec3 y(x2(0), x2(1), T(1.0));
-
-  Vec3 H_x = H * x;
-  Vec3 Hinv_y = H.inverse() * y;
-
-  H_x /= H_x(2);
-  Hinv_y /= Hinv_y(2);
-
-  forward_error[0] = H_x(0) - y(0);
-  forward_error[1] = H_x(1) - y(1);
-  backward_error[0] = Hinv_y(0) - x(0);
-  backward_error[1] = Hinv_y(1) - x(1);
-}
-
-// Calculate symmetric geometric cost:
-//
-//   D(H * x1, x2)^2 + D(H^-1 * x2, x1)^2
-//
-double SymmetricGeometricDistance(const Mat3& H,
-                                  const Vec2& x1,
-                                  const Vec2& x2) {
-  Vec2 forward_error, backward_error;
-  SymmetricGeometricDistanceTerms<double>(
-      H, x1, x2, forward_error.data(), backward_error.data());
-  return forward_error.squaredNorm() + backward_error.squaredNorm();
-}
-
-// A parameterization of the 2D homography matrix that uses 8 parameters so
-// that the matrix is normalized (H(2,2) == 1).
-// The homography matrix H is built from a list of 8 parameters (a, b,...g, h)
-// as follows
-//
-//         |a b c|
-//     H = |d e f|
-//         |g h 1|
-//
-template <typename T = double>
-class Homography2DNormalizedParameterization {
- public:
-  using Parameters = Eigen::Matrix<T, 8, 1>;     // a, b, ... g, h
-  using Parameterized = Eigen::Matrix<T, 3, 3>;  // H
-
-  // Convert from the 8 parameters to a H matrix.
-  static void To(const Parameters& p, Parameterized* h) {
-    // clang-format off
-    *h << p(0), p(1), p(2),
-          p(3), p(4), p(5),
-          p(6), p(7), 1.0;
-    // clang-format on
-  }
-
-  // Convert from a H matrix to the 8 parameters.
-  static void From(const Parameterized& h, Parameters* p) {
-    // clang-format off
-    *p << h(0, 0), h(0, 1), h(0, 2),
-          h(1, 0), h(1, 1), h(1, 2),
-          h(2, 0), h(2, 1);
-    // clang-format on
-  }
-};
-
-// 2D Homography transformation estimation in the case that points are in
-// euclidean coordinates.
-//
-//   x = H y
-//
-// x and y vector must have the same direction, we could write
-//
-//   crossproduct(|x|, * H * |y| ) = |0|
-//
-//   | 0 -1  x2|   |a b c|   |y1|    |0|
-//   | 1  0 -x1| * |d e f| * |y2| =  |0|
-//   |-x2  x1 0|   |g h 1|   |1 |    |0|
-//
-// That gives:
-//
-//   (-d+x2*g)*y1    + (-e+x2*h)*y2 + -f+x2          |0|
-//   (a-x1*g)*y1     + (b-x1*h)*y2  + c-x1         = |0|
-//   (-x2*a+x1*d)*y1 + (-x2*b+x1*e)*y2 + -x2*c+x1*f  |0|
-//
-bool Homography2DFromCorrespondencesLinearEuc(const Mat& x1,
-                                              const Mat& x2,
-                                              Mat3* H,
-                                              double expected_precision) {
-  assert(2 == x1.rows());
-  assert(4 <= x1.cols());
-  assert(x1.rows() == x2.rows());
-  assert(x1.cols() == x2.cols());
-
-  const int64_t n = x1.cols();
-  MatX8 L = Mat::Zero(n * 3, 8);
-  Mat b = Mat::Zero(n * 3, 1);
-  for (int64_t i = 0; i < n; ++i) {
-    int64_t j = 3 * i;
-    L(j, 0) = x1(0, i);              // a
-    L(j, 1) = x1(1, i);              // b
-    L(j, 2) = 1.0;                   // c
-    L(j, 6) = -x2(0, i) * x1(0, i);  // g
-    L(j, 7) = -x2(0, i) * x1(1, i);  // h
-    b(j, 0) = x2(0, i);              // i
-
-    ++j;
-    L(j, 3) = x1(0, i);              // d
-    L(j, 4) = x1(1, i);              // e
-    L(j, 5) = 1.0;                   // f
-    L(j, 6) = -x2(1, i) * x1(0, i);  // g
-    L(j, 7) = -x2(1, i) * x1(1, i);  // h
-    b(j, 0) = x2(1, i);              // i
-
-    // This ensures better stability
-    // TODO(julien) make a lite version without this 3rd set
-    ++j;
-    L(j, 0) = x2(1, i) * x1(0, i);   // a
-    L(j, 1) = x2(1, i) * x1(1, i);   // b
-    L(j, 2) = x2(1, i);              // c
-    L(j, 3) = -x2(0, i) * x1(0, i);  // d
-    L(j, 4) = -x2(0, i) * x1(1, i);  // e
-    L(j, 5) = -x2(0, i);             // f
-  }
-  // Solve Lx=B
-  const Vec h = L.fullPivLu().solve(b);
-  Homography2DNormalizedParameterization<double>::To(h, H);
-  return (L * h).isApprox(b, expected_precision);
-}
-
-// Cost functor which computes symmetric geometric distance
-// used for homography matrix refinement.
-class HomographySymmetricGeometricCostFunctor {
- public:
-  HomographySymmetricGeometricCostFunctor(Vec2 x, Vec2 y)
-      : x_(std::move(x)), y_(std::move(y)) {}
-
-  template <typename T>
-  bool operator()(const T* homography_parameters, T* residuals) const {
-    using Mat3 = Eigen::Matrix<T, 3, 3>;
-    using Vec2 = Eigen::Matrix<T, 2, 1>;
-
-    Mat3 H(homography_parameters);
-    Vec2 x(T(x_(0)), T(x_(1)));
-    Vec2 y(T(y_(0)), T(y_(1)));
-
-    SymmetricGeometricDistanceTerms<T>(H, x, y, &residuals[0], &residuals[2]);
-    return true;
-  }
-
-  const Vec2 x_;
-  const Vec2 y_;
-};
-
-// Termination checking callback. This is needed to finish the
-// optimization when an absolute error threshold is met, as opposed
-// to Ceres's function_tolerance, which provides for finishing when
-// successful steps reduce the cost function by a fractional amount.
-// In this case, the callback checks for the absolute average reprojection
-// error and terminates when it's below a threshold (for example all
-// points < 0.5px error).
-class TerminationCheckingCallback : public ceres::IterationCallback {
- public:
-  TerminationCheckingCallback(const Mat& x1,
-                              const Mat& x2,
-                              const EstimateHomographyOptions& options,
-                              Mat3* H)
-      : options_(options), x1_(x1), x2_(x2), H_(H) {}
-
-  ceres::CallbackReturnType operator()(
-      const ceres::IterationSummary& summary) override {
-    // If the step wasn't successful, there's nothing to do.
-    if (!summary.step_is_successful) {
-      return ceres::SOLVER_CONTINUE;
-    }
-
-    // Calculate average of symmetric geometric distance.
-    double average_distance = 0.0;
-    for (int i = 0; i < x1_.cols(); i++) {
-      average_distance +=
-          SymmetricGeometricDistance(*H_, x1_.col(i), x2_.col(i));
-    }
-    average_distance /= x1_.cols();
-
-    if (average_distance <= options_.expected_average_symmetric_distance) {
-      return ceres::SOLVER_TERMINATE_SUCCESSFULLY;
-    }
-
-    return ceres::SOLVER_CONTINUE;
-  }
-
- private:
-  const EstimateHomographyOptions& options_;
-  const Mat& x1_;
-  const Mat& x2_;
-  Mat3* H_;
-};
-
-bool EstimateHomography2DFromCorrespondences(
-    const Mat& x1,
-    const Mat& x2,
-    const EstimateHomographyOptions& options,
-    Mat3* H) {
-  assert(2 == x1.rows());
-  assert(4 <= x1.cols());
-  assert(x1.rows() == x2.rows());
-  assert(x1.cols() == x2.cols());
-
-  // Step 1: Algebraic homography estimation.
-  // Assume algebraic estimation always succeeds.
-  Homography2DFromCorrespondencesLinearEuc(
-      x1, x2, H, EigenDouble::dummy_precision());
-
-  LOG(INFO) << "Estimated matrix after algebraic estimation:\n" << *H;
-
-  // Step 2: Refine matrix using Ceres minimizer.
-  ceres::Problem problem;
-  for (int i = 0; i < x1.cols(); i++) {
-    problem.AddResidualBlock(
-        new ceres::AutoDiffCostFunction<HomographySymmetricGeometricCostFunctor,
-                                        4,  // num_residuals
-                                        9>(x1.col(i), x2.col(i)),
-        nullptr,
-        H->data());
-  }
-
-  // Configure the solve.
-  ceres::Solver::Options solver_options;
-  solver_options.linear_solver_type = ceres::DENSE_QR;
-  solver_options.max_num_iterations = options.max_num_iterations;
-  solver_options.update_state_every_iteration = true;
-
-  // Terminate if the average symmetric distance is good enough.
-  TerminationCheckingCallback callback(x1, x2, options, H);
-  solver_options.callbacks.push_back(&callback);
-
-  // Run the solve.
-  ceres::Solver::Summary summary;
-  ceres::Solve(solver_options, &problem, &summary);
-
-  LOG(INFO) << "Summary:\n" << summary.FullReport();
-  LOG(INFO) << "Final refined matrix:\n" << *H;
-
-  return summary.IsSolutionUsable();
-}
-
-}  // namespace
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  Mat x1(2, 100);
-  for (int i = 0; i < x1.cols(); ++i) {
-    x1(0, i) = rand() % 1024;
-    x1(1, i) = rand() % 1024;
-  }
-
-  Mat3 homography_matrix;
-  // This matrix has been dumped from a Blender test file of plane tracking.
-  // clang-format off
-  homography_matrix << 1.243715, -0.461057, -111.964454,
-                       0.0,       0.617589, -192.379252,
-                       0.0,      -0.000983,    1.0;
-  // clang-format on
-
-  Mat x2 = x1;
-  for (int i = 0; i < x2.cols(); ++i) {
-    Vec3 homogeneous_x1 = Vec3(x1(0, i), x1(1, i), 1.0);
-    Vec3 homogeneous_x2 = homography_matrix * homogeneous_x1;
-    x2(0, i) = homogeneous_x2(0) / homogeneous_x2(2);
-    x2(1, i) = homogeneous_x2(1) / homogeneous_x2(2);
-
-    // Apply some noise so algebraic estimation is not good enough.
-    x2(0, i) += static_cast<double>(rand() % 1000) / 5000.0;
-    x2(1, i) += static_cast<double>(rand() % 1000) / 5000.0;
-  }
-
-  Mat3 estimated_matrix;
-
-  EstimateHomographyOptions options;
-  options.expected_average_symmetric_distance = 0.02;
-  EstimateHomography2DFromCorrespondences(x1, x2, options, &estimated_matrix);
-
-  // Normalize the matrix for easier comparison.
-  estimated_matrix /= estimated_matrix(2, 2);
-
-  std::cout << "Original matrix:\n" << homography_matrix << "\n";
-  std::cout << "Estimated matrix:\n" << estimated_matrix << "\n";
-
-  return EXIT_SUCCESS;
-}
diff --git a/third_party/ceres/examples/more_garbow_hillstrom.cc b/third_party/ceres/examples/more_garbow_hillstrom.cc
deleted file mode 100644
index f15e576..0000000
--- a/third_party/ceres/examples/more_garbow_hillstrom.cc
+++ /dev/null
@@ -1,675 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Test problems from the paper
-//
-// Testing Unconstrained Optimization Software
-// Jorge J. More, Burton S. Garbow and Kenneth E. Hillstrom
-// ACM Transactions on Mathematical Software, 7(1), pp. 17-41, 1981
-//
-// A subset of these problems were augmented with bounds and used for
-// testing bounds constrained optimization algorithms by
-//
-// A Trust Region Approach to Linearly Constrained Optimization
-// David M. Gay
-// Numerical Analysis (Griffiths, D.F., ed.), pp. 72-105
-// Lecture Notes in Mathematics 1066, Springer Verlag, 1984.
-//
-// The latter paper is behind a paywall. We obtained the bounds on the
-// variables and the function values at the global minimums from
-//
-// http://www.mat.univie.ac.at/~neum/glopt/bounds.html
-//
-// A problem is considered solved if of the log relative error of its
-// objective function is at least 4.
-
-#include <cmath>
-#include <iostream>  // NOLINT
-#include <sstream>   // NOLINT
-#include <string>
-
-#include "ceres/ceres.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-
-DEFINE_string(problem, "all", "Which problem to solve");
-DEFINE_bool(use_numeric_diff,
-            false,
-            "Use numeric differentiation instead of automatic"
-            " differentiation.");
-DEFINE_string(numeric_diff_method,
-              "ridders",
-              "When using numeric differentiation, selects algorithm. Options "
-              "are: central, forward, ridders.");
-DEFINE_int32(ridders_extrapolations,
-             3,
-             "Maximal number of extrapolations in Ridders' method.");
-
-namespace ceres::examples {
-
-const double kDoubleMax = std::numeric_limits<double>::max();
-
-static void SetNumericDiffOptions(ceres::NumericDiffOptions* options) {
-  options->max_num_ridders_extrapolations =
-      CERES_GET_FLAG(FLAGS_ridders_extrapolations);
-}
-
-#define BEGIN_MGH_PROBLEM(name, num_parameters, num_residuals)               \
-  struct name {                                                              \
-    static constexpr int kNumParameters = num_parameters;                    \
-    static const double initial_x[kNumParameters];                           \
-    static const double lower_bounds[kNumParameters];                        \
-    static const double upper_bounds[kNumParameters];                        \
-    static const double constrained_optimal_cost;                            \
-    static const double unconstrained_optimal_cost;                          \
-    static CostFunction* Create() {                                          \
-      if (CERES_GET_FLAG(FLAGS_use_numeric_diff)) {                          \
-        ceres::NumericDiffOptions options;                                   \
-        SetNumericDiffOptions(&options);                                     \
-        if (CERES_GET_FLAG(FLAGS_numeric_diff_method) == "central") {        \
-          return new NumericDiffCostFunction<name,                           \
-                                             ceres::CENTRAL,                 \
-                                             num_residuals,                  \
-                                             num_parameters>(                \
-              new name, ceres::TAKE_OWNERSHIP, num_residuals, options);      \
-        } else if (CERES_GET_FLAG(FLAGS_numeric_diff_method) == "forward") { \
-          return new NumericDiffCostFunction<name,                           \
-                                             ceres::FORWARD,                 \
-                                             num_residuals,                  \
-                                             num_parameters>(                \
-              new name, ceres::TAKE_OWNERSHIP, num_residuals, options);      \
-        } else if (CERES_GET_FLAG(FLAGS_numeric_diff_method) == "ridders") { \
-          return new NumericDiffCostFunction<name,                           \
-                                             ceres::RIDDERS,                 \
-                                             num_residuals,                  \
-                                             num_parameters>(                \
-              new name, ceres::TAKE_OWNERSHIP, num_residuals, options);      \
-        } else {                                                             \
-          LOG(ERROR) << "Invalid numeric diff method specified";             \
-          return nullptr;                                                    \
-        }                                                                    \
-      } else {                                                               \
-        return new AutoDiffCostFunction<name,                                \
-                                        num_residuals,                       \
-                                        num_parameters>();                   \
-      }                                                                      \
-    }                                                                        \
-    template <typename T>                                                    \
-    bool operator()(const T* const x, T* residual) const {
-// clang-format off
-
-#define END_MGH_PROBLEM return true; } };  // NOLINT
-
-// Rosenbrock function.
-BEGIN_MGH_PROBLEM(TestProblem1, 2, 2)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  residual[0] = 10.0 * (x2 - x1 * x1);
-  residual[1] = 1.0 - x1;
-END_MGH_PROBLEM;
-
-const double TestProblem1::initial_x[] = {-1.2, 1.0};
-const double TestProblem1::lower_bounds[] = {-kDoubleMax, -kDoubleMax};
-const double TestProblem1::upper_bounds[] = {kDoubleMax, kDoubleMax};
-const double TestProblem1::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem1::unconstrained_optimal_cost = 0.0;
-
-// Freudenstein and Roth function.
-BEGIN_MGH_PROBLEM(TestProblem2, 2, 2)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  residual[0] = -13.0 + x1 + ((5.0 - x2) * x2 - 2.0) * x2;
-  residual[1] = -29.0 + x1 + ((x2 + 1.0) * x2 - 14.0) * x2;
-END_MGH_PROBLEM;
-
-const double TestProblem2::initial_x[] = {0.5, -2.0};
-const double TestProblem2::lower_bounds[] = {-kDoubleMax, -kDoubleMax};
-const double TestProblem2::upper_bounds[] = {kDoubleMax, kDoubleMax};
-const double TestProblem2::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem2::unconstrained_optimal_cost = 0.0;
-
-// Powell badly scaled function.
-BEGIN_MGH_PROBLEM(TestProblem3, 2, 2)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  residual[0] = 10000.0 * x1 * x2 - 1.0;
-  residual[1] = exp(-x1) + exp(-x2) - 1.0001;
-END_MGH_PROBLEM;
-
-const double TestProblem3::initial_x[] = {0.0, 1.0};
-const double TestProblem3::lower_bounds[] = {0.0, 1.0};
-const double TestProblem3::upper_bounds[] = {1.0, 9.0};
-const double TestProblem3::constrained_optimal_cost = 0.15125900e-9;
-const double TestProblem3::unconstrained_optimal_cost = 0.0;
-
-// Brown badly scaled function.
-BEGIN_MGH_PROBLEM(TestProblem4, 2, 3)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  residual[0] = x1  - 1000000.0;
-  residual[1] = x2 - 0.000002;
-  residual[2] = x1 * x2 - 2.0;
-END_MGH_PROBLEM;
-
-const double TestProblem4::initial_x[] = {1.0, 1.0};
-const double TestProblem4::lower_bounds[] = {0.0, 0.00003};
-const double TestProblem4::upper_bounds[] = {1000000.0, 100.0};
-const double TestProblem4::constrained_optimal_cost = 0.78400000e3;
-const double TestProblem4::unconstrained_optimal_cost = 0.0;
-
-// Beale function.
-BEGIN_MGH_PROBLEM(TestProblem5, 2, 3)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  residual[0] = 1.5 - x1 * (1.0 - x2);
-  residual[1] = 2.25 - x1 * (1.0 - x2 * x2);
-  residual[2] = 2.625 - x1 * (1.0 - x2 * x2 * x2);
-END_MGH_PROBLEM;
-
-const double TestProblem5::initial_x[] = {1.0, 1.0};
-const double TestProblem5::lower_bounds[] = {0.6, 0.5};
-const double TestProblem5::upper_bounds[] = {10.0, 100.0};
-const double TestProblem5::constrained_optimal_cost = 0.0;
-const double TestProblem5::unconstrained_optimal_cost = 0.0;
-
-// Jennrich and Sampson function.
-BEGIN_MGH_PROBLEM(TestProblem6, 2, 10)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  for (int i = 1; i <= 10; ++i) {
-    residual[i - 1] = 2.0 + 2.0 * i -
-        (exp(static_cast<double>(i) * x1) +
-         exp(static_cast<double>(i) * x2));
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem6::initial_x[] = {1.0, 1.0};
-const double TestProblem6::lower_bounds[] = {-kDoubleMax, -kDoubleMax};
-const double TestProblem6::upper_bounds[] = {kDoubleMax, kDoubleMax};
-const double TestProblem6::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem6::unconstrained_optimal_cost = 124.362;
-
-// Helical valley function.
-BEGIN_MGH_PROBLEM(TestProblem7, 3, 3)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T theta = (0.5 / constants::pi)  * atan(x2 / x1) + (x1 > 0.0 ? 0.0 : 0.5);
-  residual[0] = 10.0 * (x3 - 10.0 * theta);
-  residual[1] = 10.0 * (sqrt(x1 * x1 + x2 * x2) - 1.0);
-  residual[2] = x3;
-END_MGH_PROBLEM;
-
-const double TestProblem7::initial_x[] = {-1.0, 0.0, 0.0};
-const double TestProblem7::lower_bounds[] = {-100.0, -1.0, -1.0};
-const double TestProblem7::upper_bounds[] = {0.8, 1.0, 1.0};
-const double TestProblem7::constrained_optimal_cost = 0.99042212;
-const double TestProblem7::unconstrained_optimal_cost = 0.0;
-
-// Bard function
-BEGIN_MGH_PROBLEM(TestProblem8, 3, 15)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-
-  double y[] = {0.14, 0.18, 0.22, 0.25,
-                0.29, 0.32, 0.35, 0.39, 0.37, 0.58,
-                0.73, 0.96, 1.34, 2.10, 4.39};
-
-  for (int i = 1; i <=15; ++i) {
-    const double u = i;
-    const double v = 16 - i;
-    const double w = std::min(i, 16 - i);
-    residual[i - 1] = y[i - 1] - (x1 + u / (v * x2 + w * x3));
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem8::initial_x[] = {1.0, 1.0, 1.0};
-const double TestProblem8::lower_bounds[] = {
-  -kDoubleMax, -kDoubleMax, -kDoubleMax};
-const double TestProblem8::upper_bounds[] = {
-  kDoubleMax, kDoubleMax, kDoubleMax};
-const double TestProblem8::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem8::unconstrained_optimal_cost = 8.21487e-3;
-
-// Gaussian function.
-BEGIN_MGH_PROBLEM(TestProblem9, 3, 15)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-
-  const double y[] = {0.0009, 0.0044, 0.0175, 0.0540, 0.1295, 0.2420, 0.3521,
-                      0.3989,
-                      0.3521, 0.2420, 0.1295, 0.0540, 0.0175, 0.0044, 0.0009};
-  for (int i = 0; i < 15; ++i) {
-    const double t_i = (8.0 - i - 1.0) / 2.0;
-    residual[i] = x1 * exp(-x2 * (t_i - x3) * (t_i - x3) / 2.0) - y[i];
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem9::initial_x[] = {0.4, 1.0, 0.0};
-const double TestProblem9::lower_bounds[] = {0.398, 1.0, -0.5};
-const double TestProblem9::upper_bounds[] = {4.2, 2.0, 0.1};
-const double TestProblem9::constrained_optimal_cost = 0.11279300e-7;
-const double TestProblem9::unconstrained_optimal_cost = 0.112793e-7;
-
-// Meyer function.
-BEGIN_MGH_PROBLEM(TestProblem10, 3, 16)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-
-  const double y[] = {34780, 28610, 23650, 19630, 16370, 13720, 11540, 9744,
-                      8261, 7030, 6005, 5147, 4427, 3820, 3307, 2872};
-
-  for (int i = 0; i < 16; ++i) {
-    const double ti = 45.0 + 5.0 * (i + 1);
-    residual[i] = x1 * exp(x2 / (ti + x3)) - y[i];
-  }
-END_MGH_PROBLEM
-
-const double TestProblem10::initial_x[] = {0.02, 4000, 250};
-const double TestProblem10::lower_bounds[] = {
-  -kDoubleMax, -kDoubleMax, -kDoubleMax};
-const double TestProblem10::upper_bounds[] = {
-  kDoubleMax, kDoubleMax, kDoubleMax};
-const double TestProblem10::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem10::unconstrained_optimal_cost = 87.9458;
-
-// Gulf research and development function
-BEGIN_MGH_PROBLEM(TestProblem11, 3, 100)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  for (int i = 1; i <= 100; ++i) {
-    const double ti = i / 100.0;
-    const double yi = 25.0 + pow(-50.0 * log(ti), 2.0 / 3.0);
-    residual[i - 1] = exp(-pow(abs((yi * 100.0 * i) * x2), x3) / x1) - ti;
-  }
-END_MGH_PROBLEM
-
-const double TestProblem11::initial_x[] = {5.0, 2.5, 0.15};
-const double TestProblem11::lower_bounds[] = {1e-16, 0.0, 0.0};
-const double TestProblem11::upper_bounds[] = {10.0, 10.0, 10.0};
-const double TestProblem11::constrained_optimal_cost = 0.58281431e-4;
-const double TestProblem11::unconstrained_optimal_cost = 0.0;
-
-// Box three-dimensional function.
-BEGIN_MGH_PROBLEM(TestProblem12, 3, 3)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-
-  const double t1 = 0.1;
-  const double t2 = 0.2;
-  const double t3 = 0.3;
-
-  residual[0] = exp(-t1 * x1) - exp(-t1 * x2) - x3 * (exp(-t1) - exp(-10.0 * t1));
-  residual[1] = exp(-t2 * x1) - exp(-t2 * x2) - x3 * (exp(-t2) - exp(-10.0 * t2));
-  residual[2] = exp(-t3 * x1) - exp(-t3 * x2) - x3 * (exp(-t3) - exp(-10.0 * t3));
-END_MGH_PROBLEM
-
-const double TestProblem12::initial_x[] = {0.0, 10.0, 20.0};
-const double TestProblem12::lower_bounds[] = {0.0, 5.0, 0.0};
-const double TestProblem12::upper_bounds[] = {2.0, 9.5, 20.0};
-const double TestProblem12::constrained_optimal_cost = 0.30998153e-5;
-const double TestProblem12::unconstrained_optimal_cost = 0.0;
-
-// Powell Singular function.
-BEGIN_MGH_PROBLEM(TestProblem13, 4, 4)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-
-  residual[0] = x1 + 10.0 * x2;
-  residual[1] = sqrt(5.0) * (x3 - x4);
-  residual[2] = (x2 - 2.0 * x3) * (x2 - 2.0 * x3);
-  residual[3] = sqrt(10.0) * (x1 - x4) * (x1 - x4);
-END_MGH_PROBLEM
-
-const double TestProblem13::initial_x[] = {3.0, -1.0, 0.0, 1.0};
-const double TestProblem13::lower_bounds[] = {
-  -kDoubleMax, -kDoubleMax, -kDoubleMax};
-const double TestProblem13::upper_bounds[] = {
-  kDoubleMax, kDoubleMax, kDoubleMax};
-const double TestProblem13::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem13::unconstrained_optimal_cost = 0.0;
-
-// Wood function.
-BEGIN_MGH_PROBLEM(TestProblem14, 4, 6)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-
-  residual[0] = 10.0 * (x2 - x1 * x1);
-  residual[1] = 1.0 - x1;
-  residual[2] = sqrt(90.0) * (x4 - x3 * x3);
-  residual[3] = 1.0 - x3;
-  residual[4] = sqrt(10.0) * (x2 + x4 - 2.0);
-  residual[5] = 1.0 / sqrt(10.0) * (x2 - x4);
-END_MGH_PROBLEM;
-
-  const double TestProblem14::initial_x[] = {-3.0, -1.0, -3.0, -1.0};
-  const double TestProblem14::lower_bounds[] = {-100.0, -100.0, -100.0, -100.0};
-  const double TestProblem14::upper_bounds[] = {0.0, 10.0, 100.0, 100.0};
-  const double TestProblem14::constrained_optimal_cost = 0.15567008e1;
-  const double TestProblem14::unconstrained_optimal_cost = 0.0;
-
-  // Kowalik and Osborne function.
-  BEGIN_MGH_PROBLEM(TestProblem15, 4, 11)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-
-  const double y[] = {0.1957, 0.1947, 0.1735, 0.1600, 0.0844, 0.0627,
-                      0.0456, 0.0342, 0.0323, 0.0235, 0.0246};
-  const double u[] = {4.0, 2.0, 1.0, 0.5, 0.25, 0.167, 0.125, 0.1,
-                      0.0833, 0.0714, 0.0625};
-
-  for (int i = 0; i < 11; ++i) {
-    residual[i]  = y[i] - x1 * (u[i] * u[i] + u[i] * x2) /
-        (u[i] * u[i]  + u[i] * x3 + x4);
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem15::initial_x[] = {0.25, 0.39, 0.415, 0.39};
-const double TestProblem15::lower_bounds[] = {
-  -kDoubleMax, -kDoubleMax, -kDoubleMax, -kDoubleMax};
-const double TestProblem15::upper_bounds[] = {
-  kDoubleMax, kDoubleMax, kDoubleMax, kDoubleMax};
-const double TestProblem15::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem15::unconstrained_optimal_cost = 3.07505e-4;
-
-// Brown and Dennis function.
-BEGIN_MGH_PROBLEM(TestProblem16, 4, 20)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-
-  for (int i = 0; i < 20; ++i) {
-    const double ti = (i + 1) / 5.0;
-    residual[i] = (x1 + ti * x2 - exp(ti)) * (x1 + ti * x2 - exp(ti)) +
-        (x3 + x4 * sin(ti) - cos(ti)) * (x3 + x4 * sin(ti) - cos(ti));
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem16::initial_x[] = {25.0, 5.0, -5.0, -1.0};
-const double TestProblem16::lower_bounds[] = {-10.0, 0.0, -100.0, -20.0};
-const double TestProblem16::upper_bounds[] = {100.0, 15.0, 0.0, 0.2};
-const double TestProblem16::constrained_optimal_cost = 0.88860479e5;
-const double TestProblem16::unconstrained_optimal_cost = 85822.2;
-
-// Osborne 1 function.
-BEGIN_MGH_PROBLEM(TestProblem17, 5, 33)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-  const T x5 = x[4];
-
-  const double y[] = {0.844, 0.908, 0.932, 0.936, 0.925, 0.908, 0.881, 0.850, 0.818,
-                      0.784, 0.751, 0.718, 0.685, 0.658, 0.628, 0.603, 0.580, 0.558,
-                      0.538, 0.522, 0.506, 0.490, 0.478, 0.467, 0.457, 0.448, 0.438,
-                      0.431, 0.424, 0.420, 0.414, 0.411, 0.406};
-
-  for (int i = 0; i < 33; ++i) {
-     const double ti = 10.0 * i;
-    residual[i] = y[i] - (x1 + x2 * exp(-ti * x4) + x3 * exp(-ti * x5));
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem17::initial_x[] = {0.5, 1.5, -1.0, 0.01, 0.02};
-const double TestProblem17::lower_bounds[] = {
-  -kDoubleMax, -kDoubleMax, -kDoubleMax, -kDoubleMax};
-const double TestProblem17::upper_bounds[] = {
-  kDoubleMax, kDoubleMax, kDoubleMax, kDoubleMax};
-const double TestProblem17::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem17::unconstrained_optimal_cost = 5.46489e-5;
-
-// Biggs EXP6 function.
-BEGIN_MGH_PROBLEM(TestProblem18, 6, 13)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-  const T x5 = x[4];
-  const T x6 = x[5];
-
-  for (int i = 0; i < 13; ++i) {
-    const double ti = 0.1 * (i + 1.0);
-    const double yi = exp(-ti) - 5.0 * exp(-10.0 * ti) + 3.0 * exp(-4.0 * ti);
-    residual[i] =
-        x3 * exp(-ti * x1) - x4 * exp(-ti * x2) + x6 * exp(-ti * x5) - yi;
-  }
-  END_MGH_PROBLEM
-
-  const double TestProblem18::initial_x[] = {1.0, 2.0, 1.0, 1.0, 1.0, 1.0};
-  const double TestProblem18::lower_bounds[] = {0.0, 0.0, 0.0, 1.0, 0.0, 0.0};
-  const double TestProblem18::upper_bounds[] = {2.0, 8.0, 1.0, 7.0, 5.0, 5.0};
-  const double TestProblem18::constrained_optimal_cost = 0.53209865e-3;
-  const double TestProblem18::unconstrained_optimal_cost = 0.0;
-
-  // Osborne 2 function.
-  BEGIN_MGH_PROBLEM(TestProblem19, 11, 65)
-  const T x1 = x[0];
-  const T x2 = x[1];
-  const T x3 = x[2];
-  const T x4 = x[3];
-  const T x5 = x[4];
-  const T x6 = x[5];
-  const T x7 = x[6];
-  const T x8 = x[7];
-  const T x9 = x[8];
-  const T x10 = x[9];
-  const T x11 = x[10];
-
-  const double y[] = {1.366, 1.191, 1.112, 1.013, 0.991,
-                      0.885, 0.831, 0.847, 0.786, 0.725,
-                      0.746, 0.679, 0.608, 0.655, 0.616,
-                      0.606, 0.602, 0.626, 0.651, 0.724,
-                      0.649, 0.649, 0.694, 0.644, 0.624,
-                      0.661, 0.612, 0.558, 0.533, 0.495,
-                      0.500, 0.423, 0.395, 0.375, 0.372,
-                      0.391, 0.396, 0.405, 0.428, 0.429,
-                      0.523, 0.562, 0.607, 0.653, 0.672,
-                      0.708, 0.633, 0.668, 0.645, 0.632,
-                      0.591, 0.559, 0.597, 0.625, 0.739,
-                      0.710, 0.729, 0.720, 0.636, 0.581,
-                      0.428, 0.292, 0.162, 0.098, 0.054};
-
-  for (int i = 0; i < 65; ++i) {
-    const double ti = i / 10.0;
-    residual[i] = y[i] - (x1 * exp(-(ti * x5)) +
-                          x2 * exp(-(ti - x9)  * (ti - x9)  * x6) +
-                          x3 * exp(-(ti - x10) * (ti - x10) * x7) +
-                          x4 * exp(-(ti - x11) * (ti - x11) * x8));
-  }
-END_MGH_PROBLEM;
-
-const double TestProblem19::initial_x[] = {1.3, 0.65, 0.65, 0.7, 0.6,
-                                           3.0, 5.0, 7.0, 2.0, 4.5, 5.5};
-const double TestProblem19::lower_bounds[] = {
-  -kDoubleMax, -kDoubleMax, -kDoubleMax, -kDoubleMax};
-const double TestProblem19::upper_bounds[] = {
-  kDoubleMax, kDoubleMax, kDoubleMax, kDoubleMax};
-const double TestProblem19::constrained_optimal_cost =
-    std::numeric_limits<double>::quiet_NaN();
-const double TestProblem19::unconstrained_optimal_cost = 4.01377e-2;
-
-
-#undef BEGIN_MGH_PROBLEM
-#undef END_MGH_PROBLEM
-
-// clang-format on
-
-template <typename TestProblem>
-bool Solve(bool is_constrained, int trial) {
-  double x[TestProblem::kNumParameters];
-  for (int i = 0; i < TestProblem::kNumParameters; ++i) {
-    x[i] = pow(10, trial) * TestProblem::initial_x[i];
-  }
-
-  Problem problem;
-  problem.AddResidualBlock(TestProblem::Create(), nullptr, x);
-  double optimal_cost = TestProblem::unconstrained_optimal_cost;
-
-  if (is_constrained) {
-    for (int i = 0; i < TestProblem::kNumParameters; ++i) {
-      problem.SetParameterLowerBound(x, i, TestProblem::lower_bounds[i]);
-      problem.SetParameterUpperBound(x, i, TestProblem::upper_bounds[i]);
-    }
-    optimal_cost = TestProblem::constrained_optimal_cost;
-  }
-
-  Solver::Options options;
-  options.parameter_tolerance = 1e-18;
-  options.function_tolerance = 1e-18;
-  options.gradient_tolerance = 1e-18;
-  options.max_num_iterations = 1000;
-  options.linear_solver_type = DENSE_QR;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-
-  const double kMinLogRelativeError = 4.0;
-  const double log_relative_error =
-      -std::log10(std::abs(2.0 * summary.final_cost - optimal_cost) /
-                  (optimal_cost > 0.0 ? optimal_cost : 1.0));
-
-  const bool success = log_relative_error >= kMinLogRelativeError;
-  LOG(INFO) << "Expected : " << optimal_cost
-            << " actual: " << 2.0 * summary.final_cost << " " << success
-            << " in " << summary.total_time_in_seconds << " seconds";
-  return success;
-}
-
-}  // namespace ceres::examples
-
-int main(int argc, char** argv) {
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-  using ceres::examples::Solve;
-
-  int unconstrained_problems = 0;
-  int unconstrained_successes = 0;
-  int constrained_problems = 0;
-  int constrained_successes = 0;
-  std::stringstream ss;
-
-#define UNCONSTRAINED_SOLVE(n)                              \
-  ss << "Unconstrained Problem " << n << " : ";             \
-  if (CERES_GET_FLAG(FLAGS_problem) == #n ||                \
-      CERES_GET_FLAG(FLAGS_problem) == "all") {             \
-    unconstrained_problems += 3;                            \
-    if (Solve<ceres::examples::TestProblem##n>(false, 0)) { \
-      unconstrained_successes += 1;                         \
-      ss << "Yes ";                                         \
-    } else {                                                \
-      ss << "No  ";                                         \
-    }                                                       \
-    if (Solve<ceres::examples::TestProblem##n>(false, 1)) { \
-      unconstrained_successes += 1;                         \
-      ss << "Yes ";                                         \
-    } else {                                                \
-      ss << "No  ";                                         \
-    }                                                       \
-    if (Solve<ceres::examples::TestProblem##n>(false, 2)) { \
-      unconstrained_successes += 1;                         \
-      ss << "Yes ";                                         \
-    } else {                                                \
-      ss << "No  ";                                         \
-    }                                                       \
-  }                                                         \
-  ss << std::endl;
-
-  UNCONSTRAINED_SOLVE(1);
-  UNCONSTRAINED_SOLVE(2);
-  UNCONSTRAINED_SOLVE(3);
-  UNCONSTRAINED_SOLVE(4);
-  UNCONSTRAINED_SOLVE(5);
-  UNCONSTRAINED_SOLVE(6);
-  UNCONSTRAINED_SOLVE(7);
-  UNCONSTRAINED_SOLVE(8);
-  UNCONSTRAINED_SOLVE(9);
-  UNCONSTRAINED_SOLVE(10);
-  UNCONSTRAINED_SOLVE(11);
-  UNCONSTRAINED_SOLVE(12);
-  UNCONSTRAINED_SOLVE(13);
-  UNCONSTRAINED_SOLVE(14);
-  UNCONSTRAINED_SOLVE(15);
-  UNCONSTRAINED_SOLVE(16);
-  UNCONSTRAINED_SOLVE(17);
-  UNCONSTRAINED_SOLVE(18);
-  UNCONSTRAINED_SOLVE(19);
-
-  ss << "Unconstrained : " << unconstrained_successes << "/"
-     << unconstrained_problems << std::endl;
-
-#define CONSTRAINED_SOLVE(n)                               \
-  ss << "Constrained Problem " << n << " : ";              \
-  if (CERES_GET_FLAG(FLAGS_problem) == #n ||               \
-      CERES_GET_FLAG(FLAGS_problem) == "all") {            \
-    constrained_problems += 1;                             \
-    if (Solve<ceres::examples::TestProblem##n>(true, 0)) { \
-      constrained_successes += 1;                          \
-      ss << "Yes ";                                        \
-    } else {                                               \
-      ss << "No  ";                                        \
-    }                                                      \
-  }                                                        \
-  ss << std::endl;
-
-  CONSTRAINED_SOLVE(3);
-  CONSTRAINED_SOLVE(4);
-  CONSTRAINED_SOLVE(5);
-  CONSTRAINED_SOLVE(7);
-  CONSTRAINED_SOLVE(9);
-  CONSTRAINED_SOLVE(11);
-  CONSTRAINED_SOLVE(12);
-  CONSTRAINED_SOLVE(14);
-  CONSTRAINED_SOLVE(16);
-  CONSTRAINED_SOLVE(18);
-  ss << "Constrained : " << constrained_successes << "/" << constrained_problems
-     << std::endl;
-
-  std::cout << ss.str();
-  return 0;
-}
diff --git a/third_party/ceres/examples/nist.cc b/third_party/ceres/examples/nist.cc
deleted file mode 100644
index b92c918..0000000
--- a/third_party/ceres/examples/nist.cc
+++ /dev/null
@@ -1,716 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// The National Institute of Standards and Technology has released a
-// set of problems to test non-linear least squares solvers.
-//
-// More information about the background on these problems and
-// suggested evaluation methodology can be found at:
-//
-//   http://www.itl.nist.gov/div898/strd/nls/nls_info.shtml
-//
-// The problem data themselves can be found at
-//
-//   http://www.itl.nist.gov/div898/strd/nls/nls_main.shtml
-//
-// The problems are divided into three levels of difficulty, Easy,
-// Medium and Hard. For each problem there are two starting guesses,
-// the first one far away from the global minimum and the second
-// closer to it.
-//
-// A problem is considered successfully solved, if every components of
-// the solution matches the globally optimal solution in at least 4
-// digits or more.
-//
-// This dataset was used for an evaluation of Non-linear least squares
-// solvers:
-//
-// P. F. Mondragon & B. Borchers, A Comparison of Nonlinear Regression
-// Codes, Journal of Modern Applied Statistical Methods, 4(1):343-351,
-// 2005.
-//
-// The results from Mondragon & Borchers can be summarized as
-//               Excel  Gnuplot  GaussFit  HBN  MinPack
-// Average LRE     2.3      4.3       4.0  6.8      4.4
-//      Winner       1        5        12   29       12
-//
-// Where the row Winner counts, the number of problems for which the
-// solver had the highest LRE.
-
-// In this file, we implement the same evaluation methodology using
-// Ceres. Currently using Levenberg-Marquardt with DENSE_QR, we get
-//
-//               Excel  Gnuplot  GaussFit  HBN  MinPack  Ceres
-// Average LRE     2.3      4.3       4.0  6.8      4.4    9.4
-//      Winner       0        0         5   11        2     41
-
-#include <cstdlib>
-#include <fstream>
-#include <iostream>
-#include <iterator>
-#include <string>
-#include <vector>
-
-#include "Eigen/Core"
-#include "ceres/ceres.h"
-#include "ceres/tiny_solver.h"
-#include "ceres/tiny_solver_cost_function_adapter.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-
-DEFINE_bool(use_tiny_solver, false, "Use TinySolver instead of Ceres::Solver");
-DEFINE_string(nist_data_dir,
-              "",
-              "Directory containing the NIST non-linear regression examples");
-DEFINE_string(minimizer,
-              "trust_region",
-              "Minimizer type to use, choices are: line_search & trust_region");
-DEFINE_string(trust_region_strategy,
-              "levenberg_marquardt",
-              "Options are: levenberg_marquardt, dogleg");
-DEFINE_string(dogleg,
-              "traditional_dogleg",
-              "Options are: traditional_dogleg, subspace_dogleg");
-DEFINE_string(linear_solver,
-              "dense_qr",
-              "Options are: sparse_cholesky, dense_qr, dense_normal_cholesky "
-              "and cgnr");
-DEFINE_string(dense_linear_algebra_library,
-              "eigen",
-              "Options are: eigen, lapack, and cuda.");
-DEFINE_string(preconditioner, "jacobi", "Options are: identity, jacobi");
-DEFINE_string(line_search,
-              "wolfe",
-              "Line search algorithm to use, choices are: armijo and wolfe.");
-DEFINE_string(line_search_direction,
-              "lbfgs",
-              "Line search direction algorithm to use, choices: lbfgs, bfgs");
-DEFINE_int32(max_line_search_iterations,
-             20,
-             "Maximum number of iterations for each line search.");
-DEFINE_int32(max_line_search_restarts,
-             10,
-             "Maximum number of restarts of line search direction algorithm.");
-DEFINE_string(line_search_interpolation,
-              "cubic",
-              "Degree of polynomial approximation in line search, choices are: "
-              "bisection, quadratic & cubic.");
-DEFINE_int32(lbfgs_rank,
-             20,
-             "Rank of L-BFGS inverse Hessian approximation in line search.");
-DEFINE_bool(approximate_eigenvalue_bfgs_scaling,
-            false,
-            "Use approximate eigenvalue scaling in (L)BFGS line search.");
-DEFINE_double(sufficient_decrease,
-              1.0e-4,
-              "Line search Armijo sufficient (function) decrease factor.");
-DEFINE_double(sufficient_curvature_decrease,
-              0.9,
-              "Line search Wolfe sufficient curvature decrease factor.");
-DEFINE_int32(num_iterations, 10000, "Number of iterations");
-DEFINE_bool(nonmonotonic_steps,
-            false,
-            "Trust region algorithm can use nonmonotic steps");
-DEFINE_double(initial_trust_region_radius, 1e4, "Initial trust region radius");
-DEFINE_bool(use_numeric_diff,
-            false,
-            "Use numeric differentiation instead of automatic "
-            "differentiation.");
-DEFINE_string(numeric_diff_method,
-              "ridders",
-              "When using numeric differentiation, selects algorithm. Options "
-              "are: central, forward, ridders.");
-DEFINE_double(ridders_step_size,
-              1e-9,
-              "Initial step size for Ridders numeric differentiation.");
-DEFINE_int32(ridders_extrapolations,
-             3,
-             "Maximal number of Ridders extrapolations.");
-
-namespace ceres::examples {
-namespace {
-
-using Eigen::Dynamic;
-using Eigen::RowMajor;
-using Vector = Eigen::Matrix<double, Dynamic, 1>;
-using Matrix = Eigen::Matrix<double, Dynamic, Dynamic, RowMajor>;
-
-void SplitStringUsingChar(const std::string& full,
-                          const char delim,
-                          std::vector<std::string>* result) {
-  std::back_insert_iterator<std::vector<std::string>> it(*result);
-
-  const char* p = full.data();
-  const char* end = p + full.size();
-  while (p != end) {
-    if (*p == delim) {
-      ++p;
-    } else {
-      const char* start = p;
-      while (++p != end && *p != delim) {
-        // Skip to the next occurrence of the delimiter.
-      }
-      *it++ = std::string(start, p - start);
-    }
-  }
-}
-
-bool GetAndSplitLine(std::ifstream& ifs, std::vector<std::string>* pieces) {
-  pieces->clear();
-  char buf[256];
-  ifs.getline(buf, 256);
-  SplitStringUsingChar(std::string(buf), ' ', pieces);
-  return true;
-}
-
-void SkipLines(std::ifstream& ifs, int num_lines) {
-  char buf[256];
-  for (int i = 0; i < num_lines; ++i) {
-    ifs.getline(buf, 256);
-  }
-}
-
-class NISTProblem {
- public:
-  explicit NISTProblem(const std::string& filename) {
-    std::ifstream ifs(filename.c_str(), std::ifstream::in);
-    CHECK(ifs) << "Unable to open : " << filename;
-
-    std::vector<std::string> pieces;
-    SkipLines(ifs, 24);
-    GetAndSplitLine(ifs, &pieces);
-    const int kNumResponses = std::atoi(pieces[1].c_str());
-
-    GetAndSplitLine(ifs, &pieces);
-    const int kNumPredictors = std::atoi(pieces[0].c_str());
-
-    GetAndSplitLine(ifs, &pieces);
-    const int kNumObservations = std::atoi(pieces[0].c_str());
-
-    SkipLines(ifs, 4);
-    GetAndSplitLine(ifs, &pieces);
-    const int kNumParameters = std::atoi(pieces[0].c_str());
-    SkipLines(ifs, 8);
-
-    // Get the first line of initial and final parameter values to
-    // determine the number of tries.
-    GetAndSplitLine(ifs, &pieces);
-    const int kNumTries = pieces.size() - 4;
-
-    predictor_.resize(kNumObservations, kNumPredictors);
-    response_.resize(kNumObservations, kNumResponses);
-    initial_parameters_.resize(kNumTries, kNumParameters);
-    final_parameters_.resize(1, kNumParameters);
-
-    // Parse the line for parameter b1.
-    int parameter_id = 0;
-    for (int i = 0; i < kNumTries; ++i) {
-      initial_parameters_(i, parameter_id) = std::atof(pieces[i + 2].c_str());
-    }
-    final_parameters_(0, parameter_id) =
-        std::atof(pieces[2 + kNumTries].c_str());
-
-    // Parse the remaining parameter lines.
-    for (int parameter_id = 1; parameter_id < kNumParameters; ++parameter_id) {
-      GetAndSplitLine(ifs, &pieces);
-      // b2, b3, ....
-      for (int i = 0; i < kNumTries; ++i) {
-        initial_parameters_(i, parameter_id) = std::atof(pieces[i + 2].c_str());
-      }
-      final_parameters_(0, parameter_id) =
-          std::atof(pieces[2 + kNumTries].c_str());
-    }
-
-    // Certified cost
-    SkipLines(ifs, 1);
-    GetAndSplitLine(ifs, &pieces);
-    certified_cost_ = std::atof(pieces[4].c_str()) / 2.0;
-
-    // Read the observations.
-    SkipLines(ifs, 18 - kNumParameters);
-    for (int i = 0; i < kNumObservations; ++i) {
-      GetAndSplitLine(ifs, &pieces);
-      // Response.
-      for (int j = 0; j < kNumResponses; ++j) {
-        response_(i, j) = std::atof(pieces[j].c_str());
-      }
-
-      // Predictor variables.
-      for (int j = 0; j < kNumPredictors; ++j) {
-        predictor_(i, j) = std::atof(pieces[j + kNumResponses].c_str());
-      }
-    }
-  }
-
-  Matrix initial_parameters(int start) const {
-    return initial_parameters_.row(start);
-  }  // NOLINT
-  Matrix final_parameters() const { return final_parameters_; }
-  Matrix predictor() const { return predictor_; }
-  Matrix response() const { return response_; }
-  int predictor_size() const { return predictor_.cols(); }
-  int num_observations() const { return predictor_.rows(); }
-  int response_size() const { return response_.cols(); }
-  int num_parameters() const { return initial_parameters_.cols(); }
-  int num_starts() const { return initial_parameters_.rows(); }
-  double certified_cost() const { return certified_cost_; }
-
- private:
-  Matrix predictor_;
-  Matrix response_;
-  Matrix initial_parameters_;
-  Matrix final_parameters_;
-  double certified_cost_;
-};
-
-#define NIST_BEGIN(CostFunctionName)                       \
-  struct CostFunctionName {                                \
-    CostFunctionName(const double* const x,                \
-                     const double* const y,                \
-                     const int n)                          \
-        : x_(x), y_(y), n_(n) {}                           \
-    const double* x_;                                      \
-    const double* y_;                                      \
-    const int n_;                                          \
-    template <typename T>                                  \
-    bool operator()(const T* const b, T* residual) const { \
-      for (int i = 0; i < n_; ++i) {                       \
-        const T x(x_[i]);                                  \
-        residual[i] = y_[i] - (
-
-// clang-format off
-
-#define NIST_END ); } return true; }};
-
-// y = b1 * (b2+x)**(-1/b3)  +  e
-NIST_BEGIN(Bennet5)
-  b[0] * pow(b[1] + x, -1.0 / b[2])
-NIST_END
-
-// y = b1*(1-exp[-b2*x])  +  e
-NIST_BEGIN(BoxBOD)
-  b[0] * (1.0 - exp(-b[1] * x))
-NIST_END
-
-// y = exp[-b1*x]/(b2+b3*x)  +  e
-NIST_BEGIN(Chwirut)
-  exp(-b[0] * x) / (b[1] + b[2] * x)
-NIST_END
-
-// y  = b1*x**b2  +  e
-NIST_BEGIN(DanWood)
-  b[0] * pow(x, b[1])
-NIST_END
-
-// y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 )
-//     + b6*exp( -(x-b7)**2 / b8**2 ) + e
-NIST_BEGIN(Gauss)
-  b[0] * exp(-b[1] * x) +
-  b[2] * exp(-pow((x - b[3])/b[4], 2)) +
-  b[5] * exp(-pow((x - b[6])/b[7], 2))
-NIST_END
-
-// y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x)  +  e
-NIST_BEGIN(Lanczos)
-  b[0] * exp(-b[1] * x) + b[2] * exp(-b[3] * x) + b[4] * exp(-b[5] * x)
-NIST_END
-
-// y = (b1+b2*x+b3*x**2+b4*x**3) /
-//     (1+b5*x+b6*x**2+b7*x**3)  +  e
-NIST_BEGIN(Hahn1)
-  (b[0] + b[1] * x + b[2] * x * x + b[3] * x * x * x) /
-  (1.0 + b[4] * x + b[5] * x * x + b[6] * x * x * x)
-NIST_END
-
-// y = (b1 + b2*x + b3*x**2) /
-//    (1 + b4*x + b5*x**2)  +  e
-NIST_BEGIN(Kirby2)
-  (b[0] + b[1] * x + b[2] * x * x) /
-  (1.0 + b[3] * x + b[4] * x * x)
-NIST_END
-
-// y = b1*(x**2+x*b2) / (x**2+x*b3+b4)  +  e
-NIST_BEGIN(MGH09)
-  b[0] * (x * x + x * b[1]) / (x * x + x * b[2] + b[3])
-NIST_END
-
-// y = b1 * exp[b2/(x+b3)]  +  e
-NIST_BEGIN(MGH10)
-  b[0] * exp(b[1] / (x + b[2]))
-NIST_END
-
-// y = b1 + b2*exp[-x*b4] + b3*exp[-x*b5]
-NIST_BEGIN(MGH17)
-  b[0] + b[1] * exp(-x * b[3]) + b[2] * exp(-x * b[4])
-NIST_END
-
-// y = b1*(1-exp[-b2*x])  +  e
-NIST_BEGIN(Misra1a)
-  b[0] * (1.0 - exp(-b[1] * x))
-NIST_END
-
-// y = b1 * (1-(1+b2*x/2)**(-2))  +  e
-NIST_BEGIN(Misra1b)
-  b[0] * (1.0 - 1.0/ ((1.0 + b[1] * x / 2.0) * (1.0 + b[1] * x / 2.0)))  // NOLINT
-NIST_END
-
-// y = b1 * (1-(1+2*b2*x)**(-.5))  +  e
-NIST_BEGIN(Misra1c)
-  b[0] * (1.0 - pow(1.0 + 2.0 * b[1] * x, -0.5))
-NIST_END
-
-// y = b1*b2*x*((1+b2*x)**(-1))  +  e
-NIST_BEGIN(Misra1d)
-  b[0] * b[1] * x / (1.0 + b[1] * x)
-NIST_END
-
-const double kPi = 3.141592653589793238462643383279;
-// pi = 3.141592653589793238462643383279E0
-// y =  b1 - b2*x - arctan[b3/(x-b4)]/pi  +  e
-NIST_BEGIN(Roszman1)
-  b[0] - b[1] * x - atan2(b[2], (x - b[3])) / kPi
-NIST_END
-
-// y = b1 / (1+exp[b2-b3*x])  +  e
-NIST_BEGIN(Rat42)
-  b[0] / (1.0 + exp(b[1] - b[2] * x))
-NIST_END
-
-// y = b1 / ((1+exp[b2-b3*x])**(1/b4))  +  e
-NIST_BEGIN(Rat43)
-  b[0] / pow(1.0 + exp(b[1] - b[2] * x), 1.0 / b[3])
-NIST_END
-
-// y = (b1 + b2*x + b3*x**2 + b4*x**3) /
-//    (1 + b5*x + b6*x**2 + b7*x**3)  +  e
-NIST_BEGIN(Thurber)
-  (b[0] + b[1] * x + b[2] * x * x  + b[3] * x * x * x) /
-  (1.0 + b[4] * x + b[5] * x * x + b[6] * x * x * x)
-NIST_END
-
-// y = b1 + b2*cos( 2*pi*x/12 ) + b3*sin( 2*pi*x/12 )
-//        + b5*cos( 2*pi*x/b4 ) + b6*sin( 2*pi*x/b4 )
-//        + b8*cos( 2*pi*x/b7 ) + b9*sin( 2*pi*x/b7 )  + e
-NIST_BEGIN(ENSO)
-  b[0] + b[1] * cos(2.0 * kPi * x / 12.0) +
-         b[2] * sin(2.0 * kPi * x / 12.0) +
-         b[4] * cos(2.0 * kPi * x / b[3]) +
-         b[5] * sin(2.0 * kPi * x / b[3]) +
-         b[7] * cos(2.0 * kPi * x / b[6]) +
-         b[8] * sin(2.0 * kPi * x / b[6])
-NIST_END
-
-// y = (b1/b2) * exp[-0.5*((x-b3)/b2)**2]  +  e
-NIST_BEGIN(Eckerle4)
-  b[0] / b[1] * exp(-0.5 * pow((x - b[2])/b[1], 2))
-NIST_END
-
-struct Nelson {
- public:
-  Nelson(const double* const x, const double* const y, const int n)
-      : x_(x), y_(y), n_(n) {}
-
-  template <typename T>
-  bool operator()(const T* const b, T* residual) const {
-    // log[y] = b1 - b2*x1 * exp[-b3*x2]  +  e
-    for (int i = 0; i < n_; ++i) {
-      residual[i] = log(y_[i]) - (b[0] - b[1] * x_[2 * i] * exp(-b[2] * x_[2 * i + 1]));
-    }
-    return true;
-  }
-
- private:
-  const double* x_;
-  const double* y_;
-  const int n_;
-};
-
-// clang-format on
-
-static void SetNumericDiffOptions(ceres::NumericDiffOptions* options) {
-  options->max_num_ridders_extrapolations =
-      CERES_GET_FLAG(FLAGS_ridders_extrapolations);
-  options->ridders_relative_initial_step_size =
-      CERES_GET_FLAG(FLAGS_ridders_step_size);
-}
-
-void SetMinimizerOptions(ceres::Solver::Options* options) {
-  CHECK(ceres::StringToMinimizerType(CERES_GET_FLAG(FLAGS_minimizer),
-                                     &options->minimizer_type));
-  CHECK(ceres::StringToLinearSolverType(CERES_GET_FLAG(FLAGS_linear_solver),
-                                        &options->linear_solver_type));
-  CHECK(StringToDenseLinearAlgebraLibraryType(
-      CERES_GET_FLAG(FLAGS_dense_linear_algebra_library),
-      &options->dense_linear_algebra_library_type));
-  CHECK(ceres::StringToPreconditionerType(CERES_GET_FLAG(FLAGS_preconditioner),
-                                          &options->preconditioner_type));
-  CHECK(ceres::StringToTrustRegionStrategyType(
-      CERES_GET_FLAG(FLAGS_trust_region_strategy),
-      &options->trust_region_strategy_type));
-  CHECK(ceres::StringToDoglegType(CERES_GET_FLAG(FLAGS_dogleg),
-                                  &options->dogleg_type));
-  CHECK(ceres::StringToLineSearchDirectionType(
-      CERES_GET_FLAG(FLAGS_line_search_direction),
-      &options->line_search_direction_type));
-  CHECK(ceres::StringToLineSearchType(CERES_GET_FLAG(FLAGS_line_search),
-                                      &options->line_search_type));
-  CHECK(ceres::StringToLineSearchInterpolationType(
-      CERES_GET_FLAG(FLAGS_line_search_interpolation),
-      &options->line_search_interpolation_type));
-
-  options->max_num_iterations = CERES_GET_FLAG(FLAGS_num_iterations);
-  options->use_nonmonotonic_steps = CERES_GET_FLAG(FLAGS_nonmonotonic_steps);
-  options->initial_trust_region_radius =
-      CERES_GET_FLAG(FLAGS_initial_trust_region_radius);
-  options->max_lbfgs_rank = CERES_GET_FLAG(FLAGS_lbfgs_rank);
-  options->line_search_sufficient_function_decrease =
-      CERES_GET_FLAG(FLAGS_sufficient_decrease);
-  options->line_search_sufficient_curvature_decrease =
-      CERES_GET_FLAG(FLAGS_sufficient_curvature_decrease);
-  options->max_num_line_search_step_size_iterations =
-      CERES_GET_FLAG(FLAGS_max_line_search_iterations);
-  options->max_num_line_search_direction_restarts =
-      CERES_GET_FLAG(FLAGS_max_line_search_restarts);
-  options->use_approximate_eigenvalue_bfgs_scaling =
-      CERES_GET_FLAG(FLAGS_approximate_eigenvalue_bfgs_scaling);
-  options->function_tolerance = std::numeric_limits<double>::epsilon();
-  options->gradient_tolerance = std::numeric_limits<double>::epsilon();
-  options->parameter_tolerance = std::numeric_limits<double>::epsilon();
-}
-
-std::string JoinPath(const std::string& dirname, const std::string& basename) {
-#ifdef _WIN32
-  static const char separator = '\\';
-#else
-  static const char separator = '/';
-#endif  // _WIN32
-
-  if ((!basename.empty() && basename[0] == separator) || dirname.empty()) {
-    return basename;
-  } else if (dirname[dirname.size() - 1] == separator) {
-    return dirname + basename;
-  } else {
-    return dirname + std::string(&separator, 1) + basename;
-  }
-}
-
-template <typename Model, int num_parameters>
-CostFunction* CreateCostFunction(const Matrix& predictor,
-                                 const Matrix& response,
-                                 const int num_observations) {
-  auto* model = new Model(predictor.data(), response.data(), num_observations);
-  ceres::CostFunction* cost_function = nullptr;
-  if (CERES_GET_FLAG(FLAGS_use_numeric_diff)) {
-    ceres::NumericDiffOptions options;
-    SetNumericDiffOptions(&options);
-    if (CERES_GET_FLAG(FLAGS_numeric_diff_method) == "central") {
-      cost_function = new NumericDiffCostFunction<Model,
-                                                  ceres::CENTRAL,
-                                                  ceres::DYNAMIC,
-                                                  num_parameters>(
-          model, ceres::TAKE_OWNERSHIP, num_observations, options);
-    } else if (CERES_GET_FLAG(FLAGS_numeric_diff_method) == "forward") {
-      cost_function = new NumericDiffCostFunction<Model,
-                                                  ceres::FORWARD,
-                                                  ceres::DYNAMIC,
-                                                  num_parameters>(
-          model, ceres::TAKE_OWNERSHIP, num_observations, options);
-    } else if (CERES_GET_FLAG(FLAGS_numeric_diff_method) == "ridders") {
-      cost_function = new NumericDiffCostFunction<Model,
-                                                  ceres::RIDDERS,
-                                                  ceres::DYNAMIC,
-                                                  num_parameters>(
-          model, ceres::TAKE_OWNERSHIP, num_observations, options);
-    } else {
-      LOG(ERROR) << "Invalid numeric diff method specified";
-      return nullptr;
-    }
-  } else {
-    cost_function =
-        new ceres::AutoDiffCostFunction<Model, ceres::DYNAMIC, num_parameters>(
-            model, num_observations);
-  }
-  return cost_function;
-}
-
-double ComputeLRE(const Matrix& expected, const Matrix& actual) {
-  // Compute the LRE by comparing each component of the solution
-  // with the ground truth, and taking the minimum.
-  const double kMaxNumSignificantDigits = 11;
-  double log_relative_error = kMaxNumSignificantDigits + 1;
-  for (int i = 0; i < expected.cols(); ++i) {
-    const double tmp_lre = -std::log10(std::fabs(expected(i) - actual(i)) /
-                                       std::fabs(expected(i)));
-    // The maximum LRE is capped at 11 - the precision at which the
-    // ground truth is known.
-    //
-    // The minimum LRE is capped at 0 - no digits match between the
-    // computed solution and the ground truth.
-    log_relative_error =
-        std::min(log_relative_error,
-                 std::max(0.0, std::min(kMaxNumSignificantDigits, tmp_lre)));
-  }
-  return log_relative_error;
-}
-
-template <typename Model, int num_parameters>
-int RegressionDriver(const std::string& filename) {
-  NISTProblem nist_problem(
-      JoinPath(CERES_GET_FLAG(FLAGS_nist_data_dir), filename));
-  CHECK_EQ(num_parameters, nist_problem.num_parameters());
-
-  Matrix predictor = nist_problem.predictor();
-  Matrix response = nist_problem.response();
-  Matrix final_parameters = nist_problem.final_parameters();
-
-  printf("%s\n", filename.c_str());
-
-  // Each NIST problem comes with multiple starting points, so we
-  // construct the problem from scratch for each case and solve it.
-  int num_success = 0;
-  for (int start = 0; start < nist_problem.num_starts(); ++start) {
-    Matrix initial_parameters = nist_problem.initial_parameters(start);
-    ceres::CostFunction* cost_function =
-        CreateCostFunction<Model, num_parameters>(
-            predictor, response, nist_problem.num_observations());
-
-    double initial_cost;
-    double final_cost;
-
-    if (!CERES_GET_FLAG(FLAGS_use_tiny_solver)) {
-      ceres::Problem problem;
-      problem.AddResidualBlock(
-          cost_function, nullptr, initial_parameters.data());
-      ceres::Solver::Summary summary;
-      ceres::Solver::Options options;
-      SetMinimizerOptions(&options);
-      Solve(options, &problem, &summary);
-      initial_cost = summary.initial_cost;
-      final_cost = summary.final_cost;
-    } else {
-      ceres::TinySolverCostFunctionAdapter<Eigen::Dynamic, num_parameters> cfa(
-          *cost_function);
-      using Solver = ceres::TinySolver<
-          ceres::TinySolverCostFunctionAdapter<Eigen::Dynamic, num_parameters>>;
-      Solver solver;
-      solver.options.max_num_iterations = CERES_GET_FLAG(FLAGS_num_iterations);
-      solver.options.gradient_tolerance =
-          std::numeric_limits<double>::epsilon();
-      solver.options.parameter_tolerance =
-          std::numeric_limits<double>::epsilon();
-      solver.options.function_tolerance = 0.0;
-
-      Eigen::Matrix<double, num_parameters, 1> x;
-      x = initial_parameters.transpose();
-      typename Solver::Summary summary = solver.Solve(cfa, &x);
-      initial_parameters = x;
-      initial_cost = summary.initial_cost;
-      final_cost = summary.final_cost;
-      delete cost_function;
-    }
-
-    const double log_relative_error =
-        ComputeLRE(nist_problem.final_parameters(), initial_parameters);
-    const int kMinNumMatchingDigits = 4;
-    if (log_relative_error > kMinNumMatchingDigits) {
-      ++num_success;
-    }
-
-    printf(
-        "start: %d status: %s lre: %4.1f initial cost: %e final cost:%e "
-        "certified cost: %e\n",
-        start + 1,
-        log_relative_error < kMinNumMatchingDigits ? "FAILURE" : "SUCCESS",
-        log_relative_error,
-        initial_cost,
-        final_cost,
-        nist_problem.certified_cost());
-  }
-  return num_success;
-}
-
-void SolveNISTProblems() {
-  if (CERES_GET_FLAG(FLAGS_nist_data_dir).empty()) {
-    LOG(FATAL) << "Must specify the directory containing the NIST problems";
-  }
-
-  std::cout << "Lower Difficulty\n";
-  int easy_success = 0;
-  easy_success += RegressionDriver<Misra1a, 2>("Misra1a.dat");
-  easy_success += RegressionDriver<Chwirut, 3>("Chwirut1.dat");
-  easy_success += RegressionDriver<Chwirut, 3>("Chwirut2.dat");
-  easy_success += RegressionDriver<Lanczos, 6>("Lanczos3.dat");
-  easy_success += RegressionDriver<Gauss, 8>("Gauss1.dat");
-  easy_success += RegressionDriver<Gauss, 8>("Gauss2.dat");
-  easy_success += RegressionDriver<DanWood, 2>("DanWood.dat");
-  easy_success += RegressionDriver<Misra1b, 2>("Misra1b.dat");
-
-  std::cout << "\nMedium Difficulty\n";
-  int medium_success = 0;
-  medium_success += RegressionDriver<Kirby2, 5>("Kirby2.dat");
-  medium_success += RegressionDriver<Hahn1, 7>("Hahn1.dat");
-  medium_success += RegressionDriver<Nelson, 3>("Nelson.dat");
-  medium_success += RegressionDriver<MGH17, 5>("MGH17.dat");
-  medium_success += RegressionDriver<Lanczos, 6>("Lanczos1.dat");
-  medium_success += RegressionDriver<Lanczos, 6>("Lanczos2.dat");
-  medium_success += RegressionDriver<Gauss, 8>("Gauss3.dat");
-  medium_success += RegressionDriver<Misra1c, 2>("Misra1c.dat");
-  medium_success += RegressionDriver<Misra1d, 2>("Misra1d.dat");
-  medium_success += RegressionDriver<Roszman1, 4>("Roszman1.dat");
-  medium_success += RegressionDriver<ENSO, 9>("ENSO.dat");
-
-  std::cout << "\nHigher Difficulty\n";
-  int hard_success = 0;
-  hard_success += RegressionDriver<MGH09, 4>("MGH09.dat");
-  hard_success += RegressionDriver<Thurber, 7>("Thurber.dat");
-  hard_success += RegressionDriver<BoxBOD, 2>("BoxBOD.dat");
-  hard_success += RegressionDriver<Rat42, 3>("Rat42.dat");
-  hard_success += RegressionDriver<MGH10, 3>("MGH10.dat");
-  hard_success += RegressionDriver<Eckerle4, 3>("Eckerle4.dat");
-  hard_success += RegressionDriver<Rat43, 4>("Rat43.dat");
-  hard_success += RegressionDriver<Bennet5, 3>("Bennett5.dat");
-
-  std::cout << "\n";
-  std::cout << "Easy    : " << easy_success << "/16\n";
-  std::cout << "Medium  : " << medium_success << "/22\n";
-  std::cout << "Hard    : " << hard_success << "/16\n";
-  std::cout << "Total   : " << easy_success + medium_success + hard_success
-            << "/54\n";
-}
-
-}  // namespace
-}  // namespace ceres::examples
-
-int main(int argc, char** argv) {
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-  ceres::examples::SolveNISTProblems();
-  return 0;
-}
diff --git a/third_party/ceres/examples/pgm_image.h b/third_party/ceres/examples/pgm_image.h
deleted file mode 100644
index 033ab4d..0000000
--- a/third_party/ceres/examples/pgm_image.h
+++ /dev/null
@@ -1,315 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-//
-// Simple class for accessing PGM images.
-
-#ifndef CERES_EXAMPLES_PGM_IMAGE_H_
-#define CERES_EXAMPLES_PGM_IMAGE_H_
-
-#include <algorithm>
-#include <cstring>
-#include <fstream>
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "glog/logging.h"
-
-namespace ceres::examples {
-
-template <typename Real>
-class PGMImage {
- public:
-  // Create an empty image
-  PGMImage(int width, int height);
-  // Load an image from file
-  explicit PGMImage(std::string filename);
-  // Sets an image to a constant
-  void Set(double constant);
-
-  // Reading dimensions
-  int width() const;
-  int height() const;
-  int NumPixels() const;
-
-  // Get individual pixels
-  Real* MutablePixel(int x, int y);
-  Real Pixel(int x, int y) const;
-  Real* MutablePixelFromLinearIndex(int index);
-  Real PixelFromLinearIndex(int index) const;
-  int LinearIndex(int x, int y) const;
-
-  // Adds an image to another
-  void operator+=(const PGMImage& image);
-  // Adds a constant to an image
-  void operator+=(Real a);
-  // Multiplies an image by a constant
-  void operator*=(Real a);
-
-  // File access
-  bool WriteToFile(std::string filename) const;
-  bool ReadFromFile(std::string filename);
-
-  // Accessing the image data directly
-  bool SetData(const std::vector<Real>& new_data);
-  const std::vector<Real>& data() const;
-
- protected:
-  int height_, width_;
-  std::vector<Real> data_;
-};
-
-// --- IMPLEMENTATION
-
-template <typename Real>
-PGMImage<Real>::PGMImage(int width, int height)
-    : height_(height), width_(width), data_(width * height, 0.0) {}
-
-template <typename Real>
-PGMImage<Real>::PGMImage(std::string filename) {
-  if (!ReadFromFile(filename)) {
-    height_ = 0;
-    width_ = 0;
-  }
-}
-
-template <typename Real>
-void PGMImage<Real>::Set(double constant) {
-  for (int i = 0; i < data_.size(); ++i) {
-    data_[i] = constant;
-  }
-}
-
-template <typename Real>
-int PGMImage<Real>::width() const {
-  return width_;
-}
-
-template <typename Real>
-int PGMImage<Real>::height() const {
-  return height_;
-}
-
-template <typename Real>
-int PGMImage<Real>::NumPixels() const {
-  return width_ * height_;
-}
-
-template <typename Real>
-Real* PGMImage<Real>::MutablePixel(int x, int y) {
-  return MutablePixelFromLinearIndex(LinearIndex(x, y));
-}
-
-template <typename Real>
-Real PGMImage<Real>::Pixel(int x, int y) const {
-  return PixelFromLinearIndex(LinearIndex(x, y));
-}
-
-template <typename Real>
-Real* PGMImage<Real>::MutablePixelFromLinearIndex(int index) {
-  CHECK(index >= 0);
-  CHECK(index < width_ * height_);
-  CHECK(index < data_.size());
-  return &data_[index];
-}
-
-template <typename Real>
-Real PGMImage<Real>::PixelFromLinearIndex(int index) const {
-  CHECK(index >= 0);
-  CHECK(index < width_ * height_);
-  CHECK(index < data_.size());
-  return data_[index];
-}
-
-template <typename Real>
-int PGMImage<Real>::LinearIndex(int x, int y) const {
-  return x + width_ * y;
-}
-
-// Adds an image to another
-template <typename Real>
-void PGMImage<Real>::operator+=(const PGMImage<Real>& image) {
-  CHECK(data_.size() == image.data_.size());
-  for (int i = 0; i < data_.size(); ++i) {
-    data_[i] += image.data_[i];
-  }
-}
-
-// Adds a constant to an image
-template <typename Real>
-void PGMImage<Real>::operator+=(Real a) {
-  for (int i = 0; i < data_.size(); ++i) {
-    data_[i] += a;
-  }
-}
-
-// Multiplies an image by a constant
-template <typename Real>
-void PGMImage<Real>::operator*=(Real a) {
-  for (int i = 0; i < data_.size(); ++i) {
-    data_[i] *= a;
-  }
-}
-
-template <typename Real>
-bool PGMImage<Real>::WriteToFile(std::string filename) const {
-  std::ofstream outputfile(filename.c_str());
-  outputfile << "P2" << std::endl;
-  outputfile << "# PGM format" << std::endl;
-  outputfile << " # <width> <height> <levels> " << std::endl;
-  outputfile << " # <data> ... " << std::endl;
-  outputfile << width_ << ' ' << height_ << " 255 " << std::endl;
-
-  // Write data
-  int num_pixels = width_ * height_;
-  for (int i = 0; i < num_pixels; ++i) {
-    // Convert to integer by rounding when writing file
-    outputfile << static_cast<int>(data_[i] + 0.5) << ' ';
-  }
-
-  return bool(outputfile);  // Returns true/false
-}
-
-namespace {
-
-// Helper function to read data from a text file, ignoring "#" comments.
-template <typename T>
-bool GetIgnoreComment(std::istream* in, T& t) {
-  std::string word;
-  bool ok;
-  do {
-    ok = true;
-    (*in) >> word;
-    if (word.length() > 0 && word[0] == '#') {
-      // Comment; read the whole line
-      ok = false;
-      std::getline(*in, word);
-    }
-  } while (!ok);
-
-  // Convert the string
-  std::stringstream sin(word);
-  sin >> t;
-
-  // Check for success
-  if (!in || !sin) {
-    return false;
-  }
-  return true;
-}
-}  // namespace
-
-template <typename Real>
-bool PGMImage<Real>::ReadFromFile(std::string filename) {
-  std::ifstream inputfile(filename.c_str());
-
-  // File must start with "P2"
-  char ch1, ch2;
-  inputfile >> ch1 >> ch2;
-  if (!inputfile || ch1 != 'P' || (ch2 != '2' && ch2 != '5')) {
-    return false;
-  }
-
-  // Read the image header
-  int two_fifty_five;
-  if (!GetIgnoreComment(&inputfile, width_) ||
-      !GetIgnoreComment(&inputfile, height_) ||
-      !GetIgnoreComment(&inputfile, two_fifty_five)) {
-    return false;
-  }
-  // Assert that the number of grey levels is 255.
-  if (two_fifty_five != 255) {
-    return false;
-  }
-
-  // Now read the data
-  int num_pixels = width_ * height_;
-  data_.resize(num_pixels);
-  if (ch2 == '2') {
-    // Ascii file
-    for (int i = 0; i < num_pixels; ++i) {
-      int pixel_data;
-      bool res = GetIgnoreComment(&inputfile, pixel_data);
-      if (!res) {
-        return false;
-      }
-      data_[i] = pixel_data;
-    }
-    // There cannot be anything else in the file (except comments). Try reading
-    // another number and return failure if that succeeded.
-    int temp;
-    bool res = GetIgnoreComment(&inputfile, temp);
-    if (res) {
-      return false;
-    }
-  } else {
-    // Read the line feed character
-    if (inputfile.get() != '\n') {
-      return false;
-    }
-    // Binary file
-    // TODO(strandmark): Will not work on Windows (linebreak conversion).
-    for (int i = 0; i < num_pixels; ++i) {
-      unsigned char pixel_data = inputfile.get();
-      if (!inputfile) {
-        return false;
-      }
-      data_[i] = pixel_data;
-    }
-    // There cannot be anything else in the file. Try reading another byte
-    // and return failure if that succeeded.
-    inputfile.get();
-    if (inputfile) {
-      return false;
-    }
-  }
-
-  return true;
-}
-
-template <typename Real>
-bool PGMImage<Real>::SetData(const std::vector<Real>& new_data) {
-  // This function cannot change the dimensions
-  if (new_data.size() != data_.size()) {
-    return false;
-  }
-  std::copy(new_data.begin(), new_data.end(), data_.begin());
-  return true;
-}
-
-template <typename Real>
-const std::vector<Real>& PGMImage<Real>::data() const {
-  return data_;
-}
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_PGM_IMAGE_H_
diff --git a/third_party/ceres/examples/powell.cc b/third_party/ceres/examples/powell.cc
deleted file mode 100644
index a4ca1b7..0000000
--- a/third_party/ceres/examples/powell.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// An example program that minimizes Powell's singular function.
-//
-//   F = 1/2 (f1^2 + f2^2 + f3^2 + f4^2)
-//
-//   f1 = x1 + 10*x2;
-//   f2 = sqrt(5) * (x3 - x4)
-//   f3 = (x2 - 2*x3)^2
-//   f4 = sqrt(10) * (x1 - x4)^2
-//
-// The starting values are x1 = 3, x2 = -1, x3 = 0, x4 = 1.
-// The minimum is 0 at (x1, x2, x3, x4) = 0.
-//
-// From: Testing Unconstrained Optimization Software by Jorge J. More, Burton S.
-// Garbow and Kenneth E. Hillstrom in ACM Transactions on Mathematical Software,
-// Vol 7(1), March 1981.
-
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-
-struct F1 {
-  template <typename T>
-  bool operator()(const T* const x1, const T* const x2, T* residual) const {
-    // f1 = x1 + 10 * x2;
-    residual[0] = x1[0] + 10.0 * x2[0];
-    return true;
-  }
-};
-
-struct F2 {
-  template <typename T>
-  bool operator()(const T* const x3, const T* const x4, T* residual) const {
-    // f2 = sqrt(5) (x3 - x4)
-    residual[0] = sqrt(5.0) * (x3[0] - x4[0]);
-    return true;
-  }
-};
-
-struct F3 {
-  template <typename T>
-  bool operator()(const T* const x2, const T* const x3, T* residual) const {
-    // f3 = (x2 - 2 x3)^2
-    residual[0] = (x2[0] - 2.0 * x3[0]) * (x2[0] - 2.0 * x3[0]);
-    return true;
-  }
-};
-
-struct F4 {
-  template <typename T>
-  bool operator()(const T* const x1, const T* const x4, T* residual) const {
-    // f4 = sqrt(10) (x1 - x4)^2
-    residual[0] = sqrt(10.0) * (x1[0] - x4[0]) * (x1[0] - x4[0]);
-    return true;
-  }
-};
-
-DEFINE_string(minimizer,
-              "trust_region",
-              "Minimizer type to use, choices are: line_search & trust_region");
-
-int main(int argc, char** argv) {
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  google::InitGoogleLogging(argv[0]);
-
-  double x1 = 3.0;
-  double x2 = -1.0;
-  double x3 = 0.0;
-  double x4 = 1.0;
-
-  ceres::Problem problem;
-  // Add residual terms to the problem using the autodiff
-  // wrapper to get the derivatives automatically. The parameters, x1 through
-  // x4, are modified in place.
-  problem.AddResidualBlock(
-      new ceres::AutoDiffCostFunction<F1, 1, 1, 1>(), nullptr, &x1, &x2);
-  problem.AddResidualBlock(
-      new ceres::AutoDiffCostFunction<F2, 1, 1, 1>(), nullptr, &x3, &x4);
-  problem.AddResidualBlock(
-      new ceres::AutoDiffCostFunction<F3, 1, 1, 1>(), nullptr, &x2, &x3);
-  problem.AddResidualBlock(
-      new ceres::AutoDiffCostFunction<F4, 1, 1, 1>(), nullptr, &x1, &x4);
-
-  ceres::Solver::Options options;
-  LOG_IF(FATAL,
-         !ceres::StringToMinimizerType(CERES_GET_FLAG(FLAGS_minimizer),
-                                       &options.minimizer_type))
-      << "Invalid minimizer: " << CERES_GET_FLAG(FLAGS_minimizer)
-      << ", valid options are: trust_region and line_search.";
-
-  options.max_num_iterations = 100;
-  options.linear_solver_type = ceres::DENSE_QR;
-  options.minimizer_progress_to_stdout = true;
-
-  // clang-format off
-  std::cout << "Initial x1 = " << x1
-            << ", x2 = " << x2
-            << ", x3 = " << x3
-            << ", x4 = " << x4
-            << "\n";
-  // clang-format on
-
-  // Run the solver!
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-
-  std::cout << summary.FullReport() << "\n";
-  // clang-format off
-  std::cout << "Final x1 = " << x1
-            << ", x2 = " << x2
-            << ", x3 = " << x3
-            << ", x4 = " << x4
-            << "\n";
-  // clang-format on
-  return 0;
-}
diff --git a/third_party/ceres/examples/robot_pose_mle.cc b/third_party/ceres/examples/robot_pose_mle.cc
deleted file mode 100644
index cc60e14..0000000
--- a/third_party/ceres/examples/robot_pose_mle.cc
+++ /dev/null
@@ -1,330 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@ri.cmu.edu (Joydeep Biswas)
-//
-// This example demonstrates how to use the DynamicAutoDiffCostFunction
-// variant of CostFunction. The DynamicAutoDiffCostFunction is meant to
-// be used in cases where the number of parameter blocks or the sizes are not
-// known at compile time.
-//
-// This example simulates a robot traversing down a 1-dimension hallway with
-// noise odometry readings and noisy range readings of the end of the hallway.
-// By fusing the noisy odometry and sensor readings this example demonstrates
-// how to compute the maximum likelihood estimate (MLE) of the robot's pose at
-// each timestep.
-//
-// The robot starts at the origin, and it is travels to the end of a corridor of
-// fixed length specified by the "--corridor_length" flag. It executes a series
-// of motion commands to move forward a fixed length, specified by the
-// "--pose_separation" flag, at which pose it receives relative odometry
-// measurements as well as a range reading of the distance to the end of the
-// hallway. The odometry readings are drawn with Gaussian noise and standard
-// deviation specified by the "--odometry_stddev" flag, and the range readings
-// similarly with standard deviation specified by the "--range-stddev" flag.
-//
-// There are two types of residuals in this problem:
-// 1) The OdometryConstraint residual, that accounts for the odometry readings
-//    between successive pose estimates of the robot.
-// 2) The RangeConstraint residual, that accounts for the errors in the observed
-//    range readings from each pose.
-//
-// The OdometryConstraint residual is modeled as an AutoDiffCostFunction with
-// a fixed parameter block size of 1, which is the relative odometry being
-// solved for, between a pair of successive poses of the robot. Differences
-// between observed and computed relative odometry values are penalized weighted
-// by the known standard deviation of the odometry readings.
-//
-// The RangeConstraint residual is modeled as a DynamicAutoDiffCostFunction
-// which sums up the relative odometry estimates to compute the estimated
-// global pose of the robot, and then computes the expected range reading.
-// Differences between the observed and expected range readings are then
-// penalized weighted by the standard deviation of readings of the sensor.
-// Since the number of poses of the robot is not known at compile time, this
-// cost function is implemented as a DynamicAutoDiffCostFunction.
-//
-// The outputs of the example are the initial values of the odometry and range
-// readings, and the range and odometry errors for every pose of the robot.
-// After computing the MLE, the computed poses and corrected odometry values
-// are printed out, along with the corresponding range and odometry errors. Note
-// that as an MLE of a noisy system the errors will not be reduced to zero, but
-// the odometry estimates will be updated to maximize the joint likelihood of
-// all odometry and range readings of the robot.
-//
-// Mathematical Formulation
-// ======================================================
-//
-// Let p_0, .., p_N be (N+1) robot poses, where the robot moves down the
-// corridor starting from p_0 and ending at p_N. We assume that p_0 is the
-// origin of the coordinate system.
-// Odometry u_i is the observed relative odometry between pose p_(i-1) and p_i,
-// and range reading y_i is the range reading of the end of the corridor from
-// pose p_i. Both odometry as well as range readings are noisy, but we wish to
-// compute the maximum likelihood estimate (MLE) of corrected odometry values
-// u*_0 to u*_(N-1), such that the Belief is optimized:
-//
-// Belief(u*_(0:N-1) | u_(0:N-1), y_(0:N-1))                                  1.
-//   =        P(u*_(0:N-1) | u_(0:N-1), y_(0:N-1))                            2.
-//   \propto  P(y_(0:N-1) | u*_(0:N-1), u_(0:N-1)) P(u*_(0:N-1) | u_(0:N-1))  3.
-//   =       \prod_i{ P(y_i | u*_(0:i)) P(u*_i | u_i) }                       4.
-//
-// Here, the subscript "(0:i)" is used as shorthand to indicate entries from all
-// timesteps 0 to i for that variable, both inclusive.
-//
-// Bayes' rule is used to derive eq. 3 from 2, and the independence of
-// odometry observations and range readings is exploited to derive 4 from 3.
-//
-// Thus, the Belief, up to scale, is factored as a product of a number of
-// terms, two for each pose, where for each pose term there is one term for the
-// range reading, P(y_i | u*_(0:i) and one term for the odometry reading,
-// P(u*_i | u_i) . Note that the term for the range reading is dependent on all
-// odometry values u*_(0:i), while the odometry term, P(u*_i | u_i) depends only
-// on a single value, u_i. Both the range reading as well as odometry
-// probability terms are modeled as the Normal distribution, and have the form:
-//
-// p(x) \propto \exp{-((x - x_mean) / x_stddev)^2}
-//
-// where x refers to either the MLE odometry u* or range reading y, and x_mean
-// is the corresponding mean value, u for the odometry terms, and y_expected,
-// the expected range reading based on all the previous odometry terms.
-// The MLE is thus found by finding those values x* which minimize:
-//
-// x* = \arg\min{((x - x_mean) / x_stddev)^2}
-//
-// which is in the nonlinear least-square form, suited to being solved by Ceres.
-// The non-linear component arise from the computation of x_mean. The residuals
-// ((x - x_mean) / x_stddev) for the residuals that Ceres will optimize. As
-// mentioned earlier, the odometry term for each pose depends only on one
-// variable, and will be computed by an AutoDiffCostFunction, while the term
-// for the range reading will depend on all previous odometry observations, and
-// will be computed by a DynamicAutoDiffCostFunction since the number of
-// odometry observations will only be known at run time.
-
-#include <algorithm>
-#include <cmath>
-#include <cstdio>
-#include <random>
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "ceres/dynamic_autodiff_cost_function.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-
-DEFINE_double(corridor_length,
-              30.0,
-              "Length of the corridor that the robot is travelling down.");
-
-DEFINE_double(pose_separation,
-              0.5,
-              "The distance that the robot traverses between successive "
-              "odometry updates.");
-
-DEFINE_double(odometry_stddev,
-              0.1,
-              "The standard deviation of odometry error of the robot.");
-
-DEFINE_double(range_stddev,
-              0.01,
-              "The standard deviation of range readings of the robot.");
-
-// The stride length of the dynamic_autodiff_cost_function evaluator.
-static constexpr int kStride = 10;
-
-struct OdometryConstraint {
-  using OdometryCostFunction =
-      ceres::AutoDiffCostFunction<OdometryConstraint, 1, 1>;
-
-  OdometryConstraint(double odometry_mean, double odometry_stddev)
-      : odometry_mean(odometry_mean), odometry_stddev(odometry_stddev) {}
-
-  template <typename T>
-  bool operator()(const T* const odometry, T* residual) const {
-    *residual = (*odometry - odometry_mean) / odometry_stddev;
-    return true;
-  }
-
-  static OdometryCostFunction* Create(const double odometry_value) {
-    return new OdometryCostFunction(new OdometryConstraint(
-        odometry_value, CERES_GET_FLAG(FLAGS_odometry_stddev)));
-  }
-
-  const double odometry_mean;
-  const double odometry_stddev;
-};
-
-struct RangeConstraint {
-  using RangeCostFunction =
-      ceres::DynamicAutoDiffCostFunction<RangeConstraint, kStride>;
-
-  RangeConstraint(int pose_index,
-                  double range_reading,
-                  double range_stddev,
-                  double corridor_length)
-      : pose_index(pose_index),
-        range_reading(range_reading),
-        range_stddev(range_stddev),
-        corridor_length(corridor_length) {}
-
-  template <typename T>
-  bool operator()(T const* const* relative_poses, T* residuals) const {
-    T global_pose(0);
-    for (int i = 0; i <= pose_index; ++i) {
-      global_pose += relative_poses[i][0];
-    }
-    residuals[0] =
-        (global_pose + range_reading - corridor_length) / range_stddev;
-    return true;
-  }
-
-  // Factory method to create a CostFunction from a RangeConstraint to
-  // conveniently add to a ceres problem.
-  static RangeCostFunction* Create(const int pose_index,
-                                   const double range_reading,
-                                   std::vector<double>* odometry_values,
-                                   std::vector<double*>* parameter_blocks) {
-    auto* constraint =
-        new RangeConstraint(pose_index,
-                            range_reading,
-                            CERES_GET_FLAG(FLAGS_range_stddev),
-                            CERES_GET_FLAG(FLAGS_corridor_length));
-    auto* cost_function = new RangeCostFunction(constraint);
-    // Add all the parameter blocks that affect this constraint.
-    parameter_blocks->clear();
-    for (int i = 0; i <= pose_index; ++i) {
-      parameter_blocks->push_back(&((*odometry_values)[i]));
-      cost_function->AddParameterBlock(1);
-    }
-    cost_function->SetNumResiduals(1);
-    return (cost_function);
-  }
-
-  const int pose_index;
-  const double range_reading;
-  const double range_stddev;
-  const double corridor_length;
-};
-
-namespace {
-
-void SimulateRobot(std::vector<double>* odometry_values,
-                   std::vector<double>* range_readings) {
-  const int num_steps =
-      static_cast<int>(ceil(CERES_GET_FLAG(FLAGS_corridor_length) /
-                            CERES_GET_FLAG(FLAGS_pose_separation)));
-  std::mt19937 prng;
-  std::normal_distribution<double> odometry_noise(
-      0.0, CERES_GET_FLAG(FLAGS_odometry_stddev));
-  std::normal_distribution<double> range_noise(
-      0.0, CERES_GET_FLAG(FLAGS_range_stddev));
-
-  // The robot starts out at the origin.
-  double robot_location = 0.0;
-  for (int i = 0; i < num_steps; ++i) {
-    const double actual_odometry_value =
-        std::min(CERES_GET_FLAG(FLAGS_pose_separation),
-                 CERES_GET_FLAG(FLAGS_corridor_length) - robot_location);
-    robot_location += actual_odometry_value;
-    const double actual_range =
-        CERES_GET_FLAG(FLAGS_corridor_length) - robot_location;
-    const double observed_odometry =
-        actual_odometry_value + odometry_noise(prng);
-    const double observed_range = actual_range + range_noise(prng);
-    odometry_values->push_back(observed_odometry);
-    range_readings->push_back(observed_range);
-  }
-}
-
-void PrintState(const std::vector<double>& odometry_readings,
-                const std::vector<double>& range_readings) {
-  CHECK_EQ(odometry_readings.size(), range_readings.size());
-  double robot_location = 0.0;
-  printf("pose: location     odom    range  r.error  o.error\n");
-  for (int i = 0; i < odometry_readings.size(); ++i) {
-    robot_location += odometry_readings[i];
-    const double range_error = robot_location + range_readings[i] -
-                               CERES_GET_FLAG(FLAGS_corridor_length);
-    const double odometry_error =
-        CERES_GET_FLAG(FLAGS_pose_separation) - odometry_readings[i];
-    printf("%4d: %8.3f %8.3f %8.3f %8.3f %8.3f\n",
-           static_cast<int>(i),
-           robot_location,
-           odometry_readings[i],
-           range_readings[i],
-           range_error,
-           odometry_error);
-  }
-}
-
-}  // namespace
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  // Make sure that the arguments parsed are all positive.
-  CHECK_GT(CERES_GET_FLAG(FLAGS_corridor_length), 0.0);
-  CHECK_GT(CERES_GET_FLAG(FLAGS_pose_separation), 0.0);
-  CHECK_GT(CERES_GET_FLAG(FLAGS_odometry_stddev), 0.0);
-  CHECK_GT(CERES_GET_FLAG(FLAGS_range_stddev), 0.0);
-
-  std::vector<double> odometry_values;
-  std::vector<double> range_readings;
-  SimulateRobot(&odometry_values, &range_readings);
-
-  printf("Initial values:\n");
-  PrintState(odometry_values, range_readings);
-  ceres::Problem problem;
-
-  for (int i = 0; i < odometry_values.size(); ++i) {
-    // Create and add a DynamicAutoDiffCostFunction for the RangeConstraint from
-    // pose i.
-    std::vector<double*> parameter_blocks;
-    RangeConstraint::RangeCostFunction* range_cost_function =
-        RangeConstraint::Create(
-            i, range_readings[i], &odometry_values, &parameter_blocks);
-    problem.AddResidualBlock(range_cost_function, nullptr, parameter_blocks);
-
-    // Create and add an AutoDiffCostFunction for the OdometryConstraint for
-    // pose i.
-    problem.AddResidualBlock(OdometryConstraint::Create(odometry_values[i]),
-                             nullptr,
-                             &(odometry_values[i]));
-  }
-
-  ceres::Solver::Options solver_options;
-  solver_options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  printf("Solving...\n");
-  ceres::Solve(solver_options, &problem, &summary);
-  printf("Done.\n");
-  std::cout << summary.FullReport() << "\n";
-  printf("Final values:\n");
-  PrintState(odometry_values, range_readings);
-  return 0;
-}
diff --git a/third_party/ceres/examples/robust_curve_fitting.cc b/third_party/ceres/examples/robust_curve_fitting.cc
deleted file mode 100644
index e08b0df..0000000
--- a/third_party/ceres/examples/robust_curve_fitting.cc
+++ /dev/null
@@ -1,165 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// This example fits the curve f(x;m,c) = e^(m * x + c) to data. However unlike
-// the data in curve_fitting.cc, the data here has outliers in it, so minimizing
-// the sum squared loss will result in a bad fit. So this example illustrates
-// the use of a robust loss function (CauchyLoss) to reduce the influence of the
-// outliers on the fit.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// Data generated using the following octave code.
-//   randn('seed', 23497);
-//   m = 0.3;
-//   c = 0.1;
-//   x=[0:0.075:5];
-//   y = exp(m * x + c);
-//   noise = randn(size(x)) * 0.2;
-//   outlier_noise = rand(size(x)) < 0.05;
-//   y_observed = y + noise + outlier_noise;
-//   data = [x', y_observed'];
-
-const int kNumObservations = 67;
-// clang-format off
-const double data[] = {
-0.000000e+00, 1.133898e+00,
-7.500000e-02, 1.334902e+00,
-1.500000e-01, 1.213546e+00,
-2.250000e-01, 1.252016e+00,
-3.000000e-01, 1.392265e+00,
-3.750000e-01, 1.314458e+00,
-4.500000e-01, 1.472541e+00,
-5.250000e-01, 1.536218e+00,
-6.000000e-01, 1.355679e+00,
-6.750000e-01, 1.463566e+00,
-7.500000e-01, 1.490201e+00,
-8.250000e-01, 1.658699e+00,
-9.000000e-01, 1.067574e+00,
-9.750000e-01, 1.464629e+00,
-1.050000e+00, 1.402653e+00,
-1.125000e+00, 1.713141e+00,
-1.200000e+00, 1.527021e+00,
-1.275000e+00, 1.702632e+00,
-1.350000e+00, 1.423899e+00,
-1.425000e+00, 5.543078e+00, // Outlier point
-1.500000e+00, 5.664015e+00, // Outlier point
-1.575000e+00, 1.732484e+00,
-1.650000e+00, 1.543296e+00,
-1.725000e+00, 1.959523e+00,
-1.800000e+00, 1.685132e+00,
-1.875000e+00, 1.951791e+00,
-1.950000e+00, 2.095346e+00,
-2.025000e+00, 2.361460e+00,
-2.100000e+00, 2.169119e+00,
-2.175000e+00, 2.061745e+00,
-2.250000e+00, 2.178641e+00,
-2.325000e+00, 2.104346e+00,
-2.400000e+00, 2.584470e+00,
-2.475000e+00, 1.914158e+00,
-2.550000e+00, 2.368375e+00,
-2.625000e+00, 2.686125e+00,
-2.700000e+00, 2.712395e+00,
-2.775000e+00, 2.499511e+00,
-2.850000e+00, 2.558897e+00,
-2.925000e+00, 2.309154e+00,
-3.000000e+00, 2.869503e+00,
-3.075000e+00, 3.116645e+00,
-3.150000e+00, 3.094907e+00,
-3.225000e+00, 2.471759e+00,
-3.300000e+00, 3.017131e+00,
-3.375000e+00, 3.232381e+00,
-3.450000e+00, 2.944596e+00,
-3.525000e+00, 3.385343e+00,
-3.600000e+00, 3.199826e+00,
-3.675000e+00, 3.423039e+00,
-3.750000e+00, 3.621552e+00,
-3.825000e+00, 3.559255e+00,
-3.900000e+00, 3.530713e+00,
-3.975000e+00, 3.561766e+00,
-4.050000e+00, 3.544574e+00,
-4.125000e+00, 3.867945e+00,
-4.200000e+00, 4.049776e+00,
-4.275000e+00, 3.885601e+00,
-4.350000e+00, 4.110505e+00,
-4.425000e+00, 4.345320e+00,
-4.500000e+00, 4.161241e+00,
-4.575000e+00, 4.363407e+00,
-4.650000e+00, 4.161576e+00,
-4.725000e+00, 4.619728e+00,
-4.800000e+00, 4.737410e+00,
-4.875000e+00, 4.727863e+00,
-4.950000e+00, 4.669206e+00
-};
-// clang-format on
-
-struct ExponentialResidual {
-  ExponentialResidual(double x, double y) : x_(x), y_(y) {}
-
-  template <typename T>
-  bool operator()(const T* const m, const T* const c, T* residual) const {
-    residual[0] = y_ - exp(m[0] * x_ + c[0]);
-    return true;
-  }
-
- private:
-  const double x_;
-  const double y_;
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  const double initial_m = 0.0;
-  const double initial_c = 0.0;
-  double m = initial_m;
-  double c = initial_c;
-
-  ceres::Problem problem;
-  for (int i = 0; i < kNumObservations; ++i) {
-    ceres::CostFunction* cost_function =
-        new ceres::AutoDiffCostFunction<ExponentialResidual, 1, 1, 1>(
-            data[2 * i], data[2 * i + 1]);
-    problem.AddResidualBlock(cost_function, new ceres::CauchyLoss(0.5), &m, &c);
-  }
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 25;
-  options.linear_solver_type = ceres::DENSE_QR;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "Initial m: " << initial_m << " c: " << initial_c << "\n";
-  std::cout << "Final   m: " << m << " c: " << c << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/rosenbrock.cc b/third_party/ceres/examples/rosenbrock.cc
deleted file mode 100644
index a382ccd..0000000
--- a/third_party/ceres/examples/rosenbrock.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Example of minimizing the Rosenbrock function
-// (https://en.wikipedia.org/wiki/Rosenbrock_function) using
-// GradientProblemSolver using automatically computed derivatives.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-struct Rosenbrock {
-  template <typename T>
-  bool operator()(const T* parameters, T* cost) const {
-    const T x = parameters[0];
-    const T y = parameters[1];
-    cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-    return true;
-  }
-
-  static ceres::FirstOrderFunction* Create() {
-    constexpr int kNumParameters = 2;
-    return new ceres::AutoDiffFirstOrderFunction<Rosenbrock, kNumParameters>(
-        new Rosenbrock);
-  }
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  double parameters[2] = {-1.2, 1.0};
-
-  ceres::GradientProblemSolver::Options options;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::GradientProblemSolver::Summary summary;
-  ceres::GradientProblem problem(Rosenbrock::Create());
-  ceres::Solve(options, problem, parameters, &summary);
-
-  std::cout << summary.FullReport() << "\n";
-  std::cout << "Initial x: " << -1.2 << " y: " << 1.0 << "\n";
-  std::cout << "Final   x: " << parameters[0] << " y: " << parameters[1]
-            << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/rosenbrock_analytic_diff.cc b/third_party/ceres/examples/rosenbrock_analytic_diff.cc
deleted file mode 100644
index 65e49eb..0000000
--- a/third_party/ceres/examples/rosenbrock_analytic_diff.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Example of minimizing the Rosenbrock function
-// (https://en.wikipedia.org/wiki/Rosenbrock_function) using
-// GradientProblemSolver using analytic derivatives.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-class Rosenbrock final : public ceres::FirstOrderFunction {
- public:
-  bool Evaluate(const double* parameters,
-                double* cost,
-                double* gradient) const override {
-    const double x = parameters[0];
-    const double y = parameters[1];
-
-    cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-
-    if (gradient) {
-      gradient[0] = -2.0 * (1.0 - x) - 200.0 * (y - x * x) * 2.0 * x;
-      gradient[1] = 200.0 * (y - x * x);
-    }
-
-    return true;
-  }
-
-  int NumParameters() const override { return 2; }
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  double parameters[2] = {-1.2, 1.0};
-
-  ceres::GradientProblemSolver::Options options;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::GradientProblemSolver::Summary summary;
-  ceres::GradientProblem problem(new Rosenbrock());
-  ceres::Solve(options, problem, parameters, &summary);
-
-  std::cout << summary.FullReport() << "\n";
-  std::cout << "Initial x: " << -1.2 << " y: " << 1.0 << "\n";
-  std::cout << "Final   x: " << parameters[0] << " y: " << parameters[1]
-            << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/rosenbrock_numeric_diff.cc b/third_party/ceres/examples/rosenbrock_numeric_diff.cc
deleted file mode 100644
index a711b2f..0000000
--- a/third_party/ceres/examples/rosenbrock_numeric_diff.cc
+++ /dev/null
@@ -1,74 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Example of minimizing the Rosenbrock function
-// (https://en.wikipedia.org/wiki/Rosenbrock_function) using
-// GradientProblemSolver using derivatives computed using numeric
-// differentiation.
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-
-// f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-struct Rosenbrock {
-  bool operator()(const double* parameters, double* cost) const {
-    const double x = parameters[0];
-    const double y = parameters[1];
-    cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-    return true;
-  }
-
-  static ceres::FirstOrderFunction* Create() {
-    constexpr int kNumParameters = 2;
-    return new ceres::NumericDiffFirstOrderFunction<Rosenbrock,
-                                                    ceres::CENTRAL,
-                                                    kNumParameters>(
-        new Rosenbrock);
-  }
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  double parameters[2] = {-1.2, 1.0};
-
-  ceres::GradientProblemSolver::Options options;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::GradientProblemSolver::Summary summary;
-  ceres::GradientProblem problem(Rosenbrock::Create());
-  ceres::Solve(options, problem, parameters, &summary);
-
-  std::cout << summary.FullReport() << "\n";
-  std::cout << "Initial x: " << -1.2 << " y: " << 1.0 << "\n";
-  std::cout << "Final   x: " << parameters[0] << " y: " << parameters[1]
-            << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/sampled_function/CMakeLists.txt b/third_party/ceres/examples/sampled_function/CMakeLists.txt
deleted file mode 100644
index 1013753..0000000
--- a/third_party/ceres/examples/sampled_function/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: vitus@google.com (Michael Vitus)
-
-add_executable(sampled_function sampled_function.cc)
-target_link_libraries(sampled_function PRIVATE Ceres::ceres)
diff --git a/third_party/ceres/examples/sampled_function/README.md b/third_party/ceres/examples/sampled_function/README.md
deleted file mode 100644
index 5fde415..0000000
--- a/third_party/ceres/examples/sampled_function/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Sampled Functions
---
-
-It is common to not have an analytical representation of the optimization
-problem but rather a table of values at specific inputs. This commonly occurs
-when working with images or when the functions in the problem are expensive to
-evaluate. To use this data in an optimization problem we can use interpolation
-to evaluate the function and derivatives at intermediate input values.
-
-There are many libraries that implement a variety of interpolation schemes, but
-it is difficult to use them in Ceres' automatic differentiation framework.
-Instead, Ceres provides the ability to interpolate one and two dimensional data.
-
-The one dimensional interpolation is based on the Cubic Hermite Spline. This
-interpolation method requires knowledge of the function derivatives at the
-control points, however we only know the function values. Consequently, we will
-use the data to estimate derivatives at the control points. The choice of how to
-compute the derivatives is not unique and Ceres uses the Catmull-Rom Spline
-variant which uses `0.5 * (p_{k+1} - p_{k-1})` as the derivative for control
-point `p_k.` This produces a first order differentiable interpolating
-function. The two dimensional interpolation scheme is a generalization of the
-one dimensional scheme where the interpolating function is assumed to be
-separable in the two dimensions.
-
-This example shows how to use interpolation schemes within the Ceres automatic
-differentiation framework. This is a one dimensional example and the objective
-function is to minimize `0.5 * f(x)^2` where `f(x) = (x - 4.5)^2`.
-
-It is also possible to use analytical derivatives with the provided
-interpolation schemes by using a `SizedCostFunction` and defining the
-``Evaluate` function. For this example, the evaluate function would be:
-
-```c++
-bool Evaluate(double const* const* parameters, double* residuals, double** jacobians) const {
-  if (jacobians == nullptr || jacobians[0] == nullptr)
-    interpolator_.Evaluate(parameters[0][0], residuals);
-  else
-    interpolator_.Evaluate(parameters[0][0], residuals, jacobians[0]);
-
-  return true;
-}
-```
diff --git a/third_party/ceres/examples/sampled_function/sampled_function.cc b/third_party/ceres/examples/sampled_function/sampled_function.cc
deleted file mode 100644
index 40e9c1f..0000000
--- a/third_party/ceres/examples/sampled_function/sampled_function.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// A simple example of optimizing a sampled function by using cubic
-// interpolation.
-
-#include "ceres/ceres.h"
-#include "ceres/cubic_interpolation.h"
-#include "glog/logging.h"
-
-using Interpolator = ceres::CubicInterpolator<ceres::Grid1D<double>>;
-
-// A simple cost functor that interfaces an interpolated table of
-// values with automatic differentiation.
-struct InterpolatedCostFunctor {
-  explicit InterpolatedCostFunctor(const Interpolator& interpolator)
-      : interpolator(interpolator) {}
-
-  template <typename T>
-  bool operator()(const T* x, T* residuals) const {
-    interpolator.Evaluate(*x, residuals);
-    return true;
-  }
-
-  static ceres::CostFunction* Create(const Interpolator& interpolator) {
-    return new ceres::AutoDiffCostFunction<InterpolatedCostFunctor, 1, 1>(
-        interpolator);
-  }
-
- private:
-  const Interpolator& interpolator;
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  // Evaluate the function f(x) = (x - 4.5)^2;
-  const int kNumSamples = 10;
-  double values[kNumSamples];
-  for (int i = 0; i < kNumSamples; ++i) {
-    values[i] = (i - 4.5) * (i - 4.5);
-  }
-
-  ceres::Grid1D<double> array(values, 0, kNumSamples);
-  Interpolator interpolator(array);
-
-  double x = 1.0;
-  ceres::Problem problem;
-  ceres::CostFunction* cost_function =
-      InterpolatedCostFunctor::Create(interpolator);
-  problem.AddResidualBlock(cost_function, nullptr, &x);
-
-  ceres::Solver::Options options;
-  options.minimizer_progress_to_stdout = true;
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.BriefReport() << "\n";
-  std::cout << "Expected x: 4.5. Actual x : " << x << std::endl;
-  return 0;
-}
diff --git a/third_party/ceres/examples/simple_bundle_adjuster.cc b/third_party/ceres/examples/simple_bundle_adjuster.cc
deleted file mode 100644
index bb0ba1c..0000000
--- a/third_party/ceres/examples/simple_bundle_adjuster.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A minimal, self-contained bundle adjuster using Ceres, that reads
-// files from University of Washington' Bundle Adjustment in the Large dataset:
-// http://grail.cs.washington.edu/projects/bal
-//
-// This does not use the best configuration for solving; see the more involved
-// bundle_adjuster.cc file for details.
-
-#include <cmath>
-#include <cstdio>
-#include <iostream>
-
-#include "ceres/ceres.h"
-#include "ceres/rotation.h"
-
-// Read a Bundle Adjustment in the Large dataset.
-class BALProblem {
- public:
-  ~BALProblem() {
-    delete[] point_index_;
-    delete[] camera_index_;
-    delete[] observations_;
-    delete[] parameters_;
-  }
-
-  int num_observations() const { return num_observations_; }
-  const double* observations() const { return observations_; }
-  double* mutable_cameras() { return parameters_; }
-  double* mutable_points() { return parameters_ + 9 * num_cameras_; }
-
-  double* mutable_camera_for_observation(int i) {
-    return mutable_cameras() + camera_index_[i] * 9;
-  }
-  double* mutable_point_for_observation(int i) {
-    return mutable_points() + point_index_[i] * 3;
-  }
-
-  bool LoadFile(const char* filename) {
-    FILE* fptr = fopen(filename, "r");
-    if (fptr == nullptr) {
-      return false;
-    };
-
-    FscanfOrDie(fptr, "%d", &num_cameras_);
-    FscanfOrDie(fptr, "%d", &num_points_);
-    FscanfOrDie(fptr, "%d", &num_observations_);
-
-    point_index_ = new int[num_observations_];
-    camera_index_ = new int[num_observations_];
-    observations_ = new double[2 * num_observations_];
-
-    num_parameters_ = 9 * num_cameras_ + 3 * num_points_;
-    parameters_ = new double[num_parameters_];
-
-    for (int i = 0; i < num_observations_; ++i) {
-      FscanfOrDie(fptr, "%d", camera_index_ + i);
-      FscanfOrDie(fptr, "%d", point_index_ + i);
-      for (int j = 0; j < 2; ++j) {
-        FscanfOrDie(fptr, "%lf", observations_ + 2 * i + j);
-      }
-    }
-
-    for (int i = 0; i < num_parameters_; ++i) {
-      FscanfOrDie(fptr, "%lf", parameters_ + i);
-    }
-    return true;
-  }
-
- private:
-  template <typename T>
-  void FscanfOrDie(FILE* fptr, const char* format, T* value) {
-    int num_scanned = fscanf(fptr, format, value);
-    if (num_scanned != 1) {
-      LOG(FATAL) << "Invalid UW data file.";
-    }
-  }
-
-  int num_cameras_;
-  int num_points_;
-  int num_observations_;
-  int num_parameters_;
-
-  int* point_index_;
-  int* camera_index_;
-  double* observations_;
-  double* parameters_;
-};
-
-// Templated pinhole camera model for used with Ceres.  The camera is
-// parameterized using 9 parameters: 3 for rotation, 3 for translation, 1 for
-// focal length and 2 for radial distortion. The principal point is not modeled
-// (i.e. it is assumed be located at the image center).
-struct SnavelyReprojectionError {
-  SnavelyReprojectionError(double observed_x, double observed_y)
-      : observed_x(observed_x), observed_y(observed_y) {}
-
-  template <typename T>
-  bool operator()(const T* const camera,
-                  const T* const point,
-                  T* residuals) const {
-    // camera[0,1,2] are the angle-axis rotation.
-    T p[3];
-    ceres::AngleAxisRotatePoint(camera, point, p);
-
-    // camera[3,4,5] are the translation.
-    p[0] += camera[3];
-    p[1] += camera[4];
-    p[2] += camera[5];
-
-    // Compute the center of distortion. The sign change comes from
-    // the camera model that Noah Snavely's Bundler assumes, whereby
-    // the camera coordinate system has a negative z axis.
-    T xp = -p[0] / p[2];
-    T yp = -p[1] / p[2];
-
-    // Apply second and fourth order radial distortion.
-    const T& l1 = camera[7];
-    const T& l2 = camera[8];
-    T r2 = xp * xp + yp * yp;
-    T distortion = 1.0 + r2 * (l1 + l2 * r2);
-
-    // Compute final projected point position.
-    const T& focal = camera[6];
-    T predicted_x = focal * distortion * xp;
-    T predicted_y = focal * distortion * yp;
-
-    // The error is the difference between the predicted and observed position.
-    residuals[0] = predicted_x - observed_x;
-    residuals[1] = predicted_y - observed_y;
-
-    return true;
-  }
-
-  // Factory to hide the construction of the CostFunction object from
-  // the client code.
-  static ceres::CostFunction* Create(const double observed_x,
-                                     const double observed_y) {
-    return new ceres::AutoDiffCostFunction<SnavelyReprojectionError, 2, 9, 3>(
-        observed_x, observed_y);
-  }
-
-  double observed_x;
-  double observed_y;
-};
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-  if (argc != 2) {
-    std::cerr << "usage: simple_bundle_adjuster <bal_problem>\n";
-    return 1;
-  }
-
-  BALProblem bal_problem;
-  if (!bal_problem.LoadFile(argv[1])) {
-    std::cerr << "ERROR: unable to open file " << argv[1] << "\n";
-    return 1;
-  }
-
-  const double* observations = bal_problem.observations();
-
-  // Create residuals for each observation in the bundle adjustment problem. The
-  // parameters for cameras and points are added automatically.
-  ceres::Problem problem;
-  for (int i = 0; i < bal_problem.num_observations(); ++i) {
-    // Each Residual block takes a point and a camera as input and outputs a 2
-    // dimensional residual. Internally, the cost function stores the observed
-    // image location and compares the reprojection against the observation.
-
-    ceres::CostFunction* cost_function = SnavelyReprojectionError::Create(
-        observations[2 * i + 0], observations[2 * i + 1]);
-    problem.AddResidualBlock(cost_function,
-                             nullptr /* squared loss */,
-                             bal_problem.mutable_camera_for_observation(i),
-                             bal_problem.mutable_point_for_observation(i));
-  }
-
-  // Make Ceres automatically detect the bundle structure. Note that the
-  // standard solver, SPARSE_NORMAL_CHOLESKY, also works fine but it is slower
-  // for standard bundle adjustment problems.
-  ceres::Solver::Options options;
-  options.linear_solver_type = ceres::DENSE_SCHUR;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, &problem, &summary);
-  std::cout << summary.FullReport() << "\n";
-  return 0;
-}
diff --git a/third_party/ceres/examples/slam/CMakeLists.txt b/third_party/ceres/examples/slam/CMakeLists.txt
deleted file mode 100644
index d0b03d7..0000000
--- a/third_party/ceres/examples/slam/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: vitus@google.com (Michael Vitus)
-include_directories(./)
-
-add_subdirectory(pose_graph_2d)
-add_subdirectory(pose_graph_3d)
diff --git a/third_party/ceres/examples/slam/common/read_g2o.h b/third_party/ceres/examples/slam/common/read_g2o.h
deleted file mode 100644
index 490b054..0000000
--- a/third_party/ceres/examples/slam/common/read_g2o.h
+++ /dev/null
@@ -1,141 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-//
-// Reads a file in the g2o filename format that describes a pose graph problem.
-
-#ifndef EXAMPLES_CERES_READ_G2O_H_
-#define EXAMPLES_CERES_READ_G2O_H_
-
-#include <fstream>
-#include <string>
-
-#include "glog/logging.h"
-
-namespace ceres::examples {
-
-// Reads a single pose from the input and inserts it into the map. Returns false
-// if there is a duplicate entry.
-template <typename Pose, typename Allocator>
-bool ReadVertex(std::ifstream* infile,
-                std::map<int, Pose, std::less<int>, Allocator>* poses) {
-  int id;
-  Pose pose;
-  *infile >> id >> pose;
-
-  // Ensure we don't have duplicate poses.
-  if (poses->find(id) != poses->end()) {
-    LOG(ERROR) << "Duplicate vertex with ID: " << id;
-    return false;
-  }
-  (*poses)[id] = pose;
-
-  return true;
-}
-
-// Reads the constraints between two vertices in the pose graph
-template <typename Constraint, typename Allocator>
-void ReadConstraint(std::ifstream* infile,
-                    std::vector<Constraint, Allocator>* constraints) {
-  Constraint constraint;
-  *infile >> constraint;
-
-  constraints->push_back(constraint);
-}
-
-// Reads a file in the g2o filename format that describes a pose graph
-// problem. The g2o format consists of two entries, vertices and constraints.
-//
-// In 2D, a vertex is defined as follows:
-//
-// VERTEX_SE2 ID x_meters y_meters yaw_radians
-//
-// A constraint is defined as follows:
-//
-// EDGE_SE2 ID_A ID_B A_x_B A_y_B A_yaw_B I_11 I_12 I_13 I_22 I_23 I_33
-//
-// where I_ij is the (i, j)-th entry of the information matrix for the
-// measurement.
-//
-//
-// In 3D, a vertex is defined as follows:
-//
-// VERTEX_SE3:QUAT ID x y z q_x q_y q_z q_w
-//
-// where the quaternion is in Hamilton form.
-// A constraint is defined as follows:
-//
-// EDGE_SE3:QUAT ID_a ID_b x_ab y_ab z_ab q_x_ab q_y_ab q_z_ab q_w_ab I_11 I_12 I_13 ... I_16 I_22 I_23 ... I_26 ... I_66 // NOLINT
-//
-// where I_ij is the (i, j)-th entry of the information matrix for the
-// measurement. Only the upper-triangular part is stored. The measurement order
-// is the delta position followed by the delta orientation.
-template <typename Pose,
-          typename Constraint,
-          typename MapAllocator,
-          typename VectorAllocator>
-bool ReadG2oFile(const std::string& filename,
-                 std::map<int, Pose, std::less<int>, MapAllocator>* poses,
-                 std::vector<Constraint, VectorAllocator>* constraints) {
-  CHECK(poses != nullptr);
-  CHECK(constraints != nullptr);
-
-  poses->clear();
-  constraints->clear();
-
-  std::ifstream infile(filename.c_str());
-  if (!infile) {
-    return false;
-  }
-
-  std::string data_type;
-  while (infile.good()) {
-    // Read whether the type is a node or a constraint.
-    infile >> data_type;
-    if (data_type == Pose::name()) {
-      if (!ReadVertex(&infile, poses)) {
-        return false;
-      }
-    } else if (data_type == Constraint::name()) {
-      ReadConstraint(&infile, constraints);
-    } else {
-      LOG(ERROR) << "Unknown data type: " << data_type;
-      return false;
-    }
-
-    // Clear any trailing whitespace from the line.
-    infile >> std::ws;
-  }
-
-  return true;
-}
-
-}  // namespace ceres::examples
-
-#endif  // EXAMPLES_CERES_READ_G2O_H_
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/CMakeLists.txt b/third_party/ceres/examples/slam/pose_graph_2d/CMakeLists.txt
deleted file mode 100644
index 87943ec..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: vitus@google.com (Michael Vitus)
-
-if (GFLAGS)
-  add_executable(pose_graph_2d
-    angle_manifold.h
-    normalize_angle.h
-    pose_graph_2d.cc
-    pose_graph_2d_error_term.h
-    types.h)
-  target_link_libraries(pose_graph_2d PRIVATE Ceres::ceres gflags)
-endif (GFLAGS)
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/README.md b/third_party/ceres/examples/slam/pose_graph_2d/README.md
deleted file mode 100644
index b5ff987..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-Pose Graph 2D
-----------------
-
-The Simultaneous Localization and Mapping (SLAM) problem consists of building a
-map of an unknown environment while simultaneously localizing against this
-map. The main difficulty of this problem stems from not having any additional
-external aiding information such as GPS. SLAM has been considered one of the
-fundamental challenges of robotics. A pose graph optimization problem is one
-example of a SLAM problem.
-
-This package defines the necessary Ceres cost functions needed to model the
-2-dimensional pose graph optimization problem as well as a binary to build and
-solve the problem. The cost functions are shown for instruction purposes and can
-be speed up by using analytical derivatives which take longer to implement.
-
-Running
------------
-This package includes an executable `pose_graph_2d` that will read a problem
-definition file. This executable can work with any 2D problem definition that
-uses the g2o format. It would be relatively straightforward to implement a new
-reader for a different format such as TORO or others. `pose_graph_2d` will print
-the Ceres solver full summary and then output to disk the original and optimized
-poses (`poses_original.txt` and `poses_optimized.txt`, respectively) of the
-robot in the following format:
-
-```
-pose_id x y yaw_radians
-pose_id x y yaw_radians
-pose_id x y yaw_radians
-...
-```
-
-where `pose_id` is the corresponding integer ID from the file definition. Note,
-the file will be sorted in ascending order for the `pose_id`.
-
-The executable `pose_graph_2d` has one flag `--input` which is the path to the
-problem definition. To run the executable,
-
-```
-/path/to/bin/pose_graph_2d --input /path/to/dataset/dataset.g2o
-```
-
-A python script is provided to visualize the resulting output files.
-```
-/path/to/repo/examples/slam/pose_graph_2d/plot_results.py --optimized_poses ./poses_optimized.txt --initial_poses ./poses_original.txt
-```
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/angle_manifold.h b/third_party/ceres/examples/slam/pose_graph_2d/angle_manifold.h
deleted file mode 100644
index 456d923..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/angle_manifold.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_EXAMPLES_POSE_GRAPH_2D_ANGLE_MANIFOLD_H_
-#define CERES_EXAMPLES_POSE_GRAPH_2D_ANGLE_MANIFOLD_H_
-
-#include "ceres/autodiff_manifold.h"
-#include "normalize_angle.h"
-
-namespace ceres::examples {
-
-// Defines a manifold for updating the angle to be constrained in [-pi to pi).
-class AngleManifold {
- public:
-  template <typename T>
-  bool Plus(const T* x_radians,
-            const T* delta_radians,
-            T* x_plus_delta_radians) const {
-    *x_plus_delta_radians = NormalizeAngle(*x_radians + *delta_radians);
-    return true;
-  }
-
-  template <typename T>
-  bool Minus(const T* y_radians,
-             const T* x_radians,
-             T* y_minus_x_radians) const {
-    *y_minus_x_radians =
-        NormalizeAngle(*y_radians) - NormalizeAngle(*x_radians);
-
-    return true;
-  }
-
-  static ceres::Manifold* Create() {
-    return new ceres::AutoDiffManifold<AngleManifold, 1, 1>;
-  }
-};
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_POSE_GRAPH_2D_ANGLE_MANIFOLD_H_
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/normalize_angle.h b/third_party/ceres/examples/slam/pose_graph_2d/normalize_angle.h
deleted file mode 100644
index 0602878..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/normalize_angle.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef CERES_EXAMPLES_POSE_GRAPH_2D_NORMALIZE_ANGLE_H_
-#define CERES_EXAMPLES_POSE_GRAPH_2D_NORMALIZE_ANGLE_H_
-
-#include <cmath>
-
-#include "ceres/ceres.h"
-
-namespace ceres::examples {
-
-// Normalizes the angle in radians between [-pi and pi).
-template <typename T>
-inline T NormalizeAngle(const T& angle_radians) {
-  // Use ceres::floor because it is specialized for double and Jet types.
-  T two_pi(2.0 * constants::pi);
-  return angle_radians -
-         two_pi * ceres::floor((angle_radians + T(constants::pi)) / two_pi);
-}
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_POSE_GRAPH_2D_NORMALIZE_ANGLE_H_
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/plot_results.py b/third_party/ceres/examples/slam/pose_graph_2d/plot_results.py
deleted file mode 100755
index 2c4d16e..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/plot_results.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/python
-#
-# Plots the results from the 2D pose graph optimization. It will draw a line
-# between consecutive vertices.  The commandline expects two optional filenames:
-#
-#   ./plot_results.py --initial_poses optional --optimized_poses optional
-#
-# The files have the following format:
-#   ID x y yaw_radians
-
-import matplotlib.pyplot as plot
-import numpy
-import sys
-from optparse import OptionParser
-
-parser = OptionParser()
-parser.add_option("--initial_poses", dest="initial_poses",
-                  default="", help="The filename that contains the original poses.")
-parser.add_option("--optimized_poses", dest="optimized_poses",
-                  default="", help="The filename that contains the optimized poses.")
-(options, args) = parser.parse_args()
-
-# Read the original and optimized poses files.
-poses_original = None
-if options.initial_poses != '':
-  poses_original = numpy.genfromtxt(options.initial_poses, usecols = (1, 2))
-
-poses_optimized = None
-if options.optimized_poses != '':
-  poses_optimized = numpy.genfromtxt(options.optimized_poses, usecols = (1, 2))
-
-# Plots the results for the specified poses.
-plot.figure()
-if poses_original is not None:
-  plot.plot(poses_original[:, 0], poses_original[:, 1], '-', label="Original",
-            alpha=0.5, color="green")
-
-if poses_optimized is not None:
-  plot.plot(poses_optimized[:, 0], poses_optimized[:, 1], '-', label="Optimized",
-            alpha=0.5, color="blue")
-
-plot.axis('equal')
-plot.legend()
-# Show the plot and wait for the user to close.
-plot.show()
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/pose_graph_2d.cc b/third_party/ceres/examples/slam/pose_graph_2d/pose_graph_2d.cc
deleted file mode 100644
index 3ebae3f..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/pose_graph_2d.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-//
-// An example of solving a graph-based formulation of Simultaneous Localization
-// and Mapping (SLAM). It reads a 2D pose graph problem definition file in the
-// g2o format, formulates and solves the Ceres optimization problem, and outputs
-// the original and optimized poses to file for plotting.
-
-#include <fstream>
-#include <iostream>
-#include <map>
-#include <string>
-#include <vector>
-
-#include "angle_manifold.h"
-#include "ceres/ceres.h"
-#include "common/read_g2o.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-#include "pose_graph_2d_error_term.h"
-#include "types.h"
-
-DEFINE_string(input, "", "The pose graph definition filename in g2o format.");
-
-namespace ceres::examples {
-namespace {
-
-// Constructs the nonlinear least squares optimization problem from the pose
-// graph constraints.
-void BuildOptimizationProblem(const std::vector<Constraint2d>& constraints,
-                              std::map<int, Pose2d>* poses,
-                              ceres::Problem* problem) {
-  CHECK(poses != nullptr);
-  CHECK(problem != nullptr);
-  if (constraints.empty()) {
-    LOG(INFO) << "No constraints, no problem to optimize.";
-    return;
-  }
-
-  ceres::LossFunction* loss_function = nullptr;
-  ceres::Manifold* angle_manifold = AngleManifold::Create();
-
-  for (const auto& constraint : constraints) {
-    auto pose_begin_iter = poses->find(constraint.id_begin);
-    CHECK(pose_begin_iter != poses->end())
-        << "Pose with ID: " << constraint.id_begin << " not found.";
-    auto pose_end_iter = poses->find(constraint.id_end);
-    CHECK(pose_end_iter != poses->end())
-        << "Pose with ID: " << constraint.id_end << " not found.";
-
-    const Eigen::Matrix3d sqrt_information =
-        constraint.information.llt().matrixL();
-    // Ceres will take ownership of the pointer.
-    ceres::CostFunction* cost_function = PoseGraph2dErrorTerm::Create(
-        constraint.x, constraint.y, constraint.yaw_radians, sqrt_information);
-    problem->AddResidualBlock(cost_function,
-                              loss_function,
-                              &pose_begin_iter->second.x,
-                              &pose_begin_iter->second.y,
-                              &pose_begin_iter->second.yaw_radians,
-                              &pose_end_iter->second.x,
-                              &pose_end_iter->second.y,
-                              &pose_end_iter->second.yaw_radians);
-
-    problem->SetManifold(&pose_begin_iter->second.yaw_radians, angle_manifold);
-    problem->SetManifold(&pose_end_iter->second.yaw_radians, angle_manifold);
-  }
-
-  // The pose graph optimization problem has three DOFs that are not fully
-  // constrained. This is typically referred to as gauge freedom. You can apply
-  // a rigid body transformation to all the nodes and the optimization problem
-  // will still have the exact same cost. The Levenberg-Marquardt algorithm has
-  // internal damping which mitigate this issue, but it is better to properly
-  // constrain the gauge freedom. This can be done by setting one of the poses
-  // as constant so the optimizer cannot change it.
-  auto pose_start_iter = poses->begin();
-  CHECK(pose_start_iter != poses->end()) << "There are no poses.";
-  problem->SetParameterBlockConstant(&pose_start_iter->second.x);
-  problem->SetParameterBlockConstant(&pose_start_iter->second.y);
-  problem->SetParameterBlockConstant(&pose_start_iter->second.yaw_radians);
-}
-
-// Returns true if the solve was successful.
-bool SolveOptimizationProblem(ceres::Problem* problem) {
-  CHECK(problem != nullptr);
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 100;
-  options.linear_solver_type = ceres::SPARSE_NORMAL_CHOLESKY;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, problem, &summary);
-
-  std::cout << summary.FullReport() << '\n';
-
-  return summary.IsSolutionUsable();
-}
-
-// Output the poses to the file with format: ID x y yaw_radians.
-bool OutputPoses(const std::string& filename,
-                 const std::map<int, Pose2d>& poses) {
-  std::fstream outfile;
-  outfile.open(filename.c_str(), std::istream::out);
-  if (!outfile) {
-    std::cerr << "Error opening the file: " << filename << '\n';
-    return false;
-  }
-  for (const auto& pair : poses) {
-    outfile << pair.first << " " << pair.second.x << " " << pair.second.y << ' '
-            << pair.second.yaw_radians << '\n';
-  }
-  return true;
-}
-
-}  // namespace
-}  // namespace ceres::examples
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-
-  CHECK(FLAGS_input != "") << "Need to specify the filename to read.";
-
-  std::map<int, ceres::examples::Pose2d> poses;
-  std::vector<ceres::examples::Constraint2d> constraints;
-
-  CHECK(ceres::examples::ReadG2oFile(FLAGS_input, &poses, &constraints))
-      << "Error reading the file: " << FLAGS_input;
-
-  std::cout << "Number of poses: " << poses.size() << '\n';
-  std::cout << "Number of constraints: " << constraints.size() << '\n';
-
-  CHECK(ceres::examples::OutputPoses("poses_original.txt", poses))
-      << "Error outputting to poses_original.txt";
-
-  ceres::Problem problem;
-  ceres::examples::BuildOptimizationProblem(constraints, &poses, &problem);
-
-  CHECK(ceres::examples::SolveOptimizationProblem(&problem))
-      << "The solve was not successful, exiting.";
-
-  CHECK(ceres::examples::OutputPoses("poses_optimized.txt", poses))
-      << "Error outputting to poses_original.txt";
-
-  return 0;
-}
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/pose_graph_2d_error_term.h b/third_party/ceres/examples/slam/pose_graph_2d/pose_graph_2d_error_term.h
deleted file mode 100644
index 3d34f8d..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/pose_graph_2d_error_term.h
+++ /dev/null
@@ -1,117 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-//
-// Cost function for a 2D pose graph formulation.
-
-#ifndef CERES_EXAMPLES_POSE_GRAPH_2D_POSE_GRAPH_2D_ERROR_TERM_H_
-#define CERES_EXAMPLES_POSE_GRAPH_2D_POSE_GRAPH_2D_ERROR_TERM_H_
-
-#include "Eigen/Core"
-#include "ceres/autodiff_cost_function.h"
-
-namespace ceres::examples {
-
-template <typename T>
-Eigen::Matrix<T, 2, 2> RotationMatrix2D(T yaw_radians) {
-  const T cos_yaw = ceres::cos(yaw_radians);
-  const T sin_yaw = ceres::sin(yaw_radians);
-
-  Eigen::Matrix<T, 2, 2> rotation;
-  rotation << cos_yaw, -sin_yaw, sin_yaw, cos_yaw;
-  return rotation;
-}
-
-// Computes the error term for two poses that have a relative pose measurement
-// between them. Let the hat variables be the measurement.
-//
-// residual =  information^{1/2} * [  r_a^T * (p_b - p_a) - \hat{p_ab}   ]
-//                                 [ Normalize(yaw_b - yaw_a - \hat{yaw_ab}) ]
-//
-// where r_a is the rotation matrix that rotates a vector represented in frame A
-// into the global frame, and Normalize(*) ensures the angles are in the range
-// [-pi, pi).
-class PoseGraph2dErrorTerm {
- public:
-  PoseGraph2dErrorTerm(double x_ab,
-                       double y_ab,
-                       double yaw_ab_radians,
-                       const Eigen::Matrix3d& sqrt_information)
-      : p_ab_(x_ab, y_ab),
-        yaw_ab_radians_(yaw_ab_radians),
-        sqrt_information_(sqrt_information) {}
-
-  template <typename T>
-  bool operator()(const T* const x_a,
-                  const T* const y_a,
-                  const T* const yaw_a,
-                  const T* const x_b,
-                  const T* const y_b,
-                  const T* const yaw_b,
-                  T* residuals_ptr) const {
-    const Eigen::Matrix<T, 2, 1> p_a(*x_a, *y_a);
-    const Eigen::Matrix<T, 2, 1> p_b(*x_b, *y_b);
-
-    Eigen::Map<Eigen::Matrix<T, 3, 1>> residuals_map(residuals_ptr);
-
-    residuals_map.template head<2>() =
-        RotationMatrix2D(*yaw_a).transpose() * (p_b - p_a) - p_ab_.cast<T>();
-    residuals_map(2) = ceres::examples::NormalizeAngle(
-        (*yaw_b - *yaw_a) - static_cast<T>(yaw_ab_radians_));
-
-    // Scale the residuals by the square root information matrix to account for
-    // the measurement uncertainty.
-    residuals_map = sqrt_information_.template cast<T>() * residuals_map;
-
-    return true;
-  }
-
-  static ceres::CostFunction* Create(double x_ab,
-                                     double y_ab,
-                                     double yaw_ab_radians,
-                                     const Eigen::Matrix3d& sqrt_information) {
-    return new ceres::
-        AutoDiffCostFunction<PoseGraph2dErrorTerm, 3, 1, 1, 1, 1, 1, 1>(
-            x_ab, y_ab, yaw_ab_radians, sqrt_information);
-  }
-
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
- private:
-  // The position of B relative to A in the A frame.
-  const Eigen::Vector2d p_ab_;
-  // The orientation of frame B relative to frame A.
-  const double yaw_ab_radians_;
-  // The inverse square root of the measurement covariance matrix.
-  const Eigen::Matrix3d sqrt_information_;
-};
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_POSE_GRAPH_2D_POSE_GRAPH_2D_ERROR_TERM_H_
diff --git a/third_party/ceres/examples/slam/pose_graph_2d/types.h b/third_party/ceres/examples/slam/pose_graph_2d/types.h
deleted file mode 100644
index caf4ccb..0000000
--- a/third_party/ceres/examples/slam/pose_graph_2d/types.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-//
-// Defines the types used in the 2D pose graph SLAM formulation. Each vertex of
-// the graph has a unique integer ID with a position and orientation. There are
-// delta transformation constraints between two vertices.
-
-#ifndef CERES_EXAMPLES_POSE_GRAPH_2D_TYPES_H_
-#define CERES_EXAMPLES_POSE_GRAPH_2D_TYPES_H_
-
-#include <fstream>
-
-#include "Eigen/Core"
-#include "normalize_angle.h"
-
-namespace ceres::examples {
-
-// The state for each vertex in the pose graph.
-struct Pose2d {
-  double x;
-  double y;
-  double yaw_radians;
-
-  // The name of the data type in the g2o file format.
-  static std::string name() { return "VERTEX_SE2"; }
-};
-
-inline std::istream& operator>>(std::istream& input, Pose2d& pose) {
-  input >> pose.x >> pose.y >> pose.yaw_radians;
-  // Normalize the angle between -pi to pi.
-  pose.yaw_radians = NormalizeAngle(pose.yaw_radians);
-  return input;
-}
-
-// The constraint between two vertices in the pose graph. The constraint is the
-// transformation from vertex id_begin to vertex id_end.
-struct Constraint2d {
-  int id_begin;
-  int id_end;
-
-  double x;
-  double y;
-  double yaw_radians;
-
-  // The inverse of the covariance matrix for the measurement. The order of the
-  // entries are x, y, and yaw.
-  Eigen::Matrix3d information;
-
-  // The name of the data type in the g2o file format.
-  static std::string name() { return "EDGE_SE2"; }
-};
-
-inline std::istream& operator>>(std::istream& input, Constraint2d& constraint) {
-  input >> constraint.id_begin >> constraint.id_end >> constraint.x >>
-      constraint.y >> constraint.yaw_radians >> constraint.information(0, 0) >>
-      constraint.information(0, 1) >> constraint.information(0, 2) >>
-      constraint.information(1, 1) >> constraint.information(1, 2) >>
-      constraint.information(2, 2);
-
-  // Set the lower triangular part of the information matrix.
-  constraint.information(1, 0) = constraint.information(0, 1);
-  constraint.information(2, 0) = constraint.information(0, 2);
-  constraint.information(2, 1) = constraint.information(1, 2);
-
-  // Normalize the angle between -pi to pi.
-  constraint.yaw_radians = NormalizeAngle(constraint.yaw_radians);
-  return input;
-}
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_POSE_GRAPH_2D_TYPES_H_
diff --git a/third_party/ceres/examples/slam/pose_graph_3d/CMakeLists.txt b/third_party/ceres/examples/slam/pose_graph_3d/CMakeLists.txt
deleted file mode 100644
index 544b00e..0000000
--- a/third_party/ceres/examples/slam/pose_graph_3d/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: vitus@google.com (Michael Vitus)
-
-if (GFLAGS)
-  add_executable(pose_graph_3d pose_graph_3d.cc)
-  target_link_libraries(pose_graph_3d PRIVATE Ceres::ceres gflags)
-endif (GFLAGS)
diff --git a/third_party/ceres/examples/slam/pose_graph_3d/README.md b/third_party/ceres/examples/slam/pose_graph_3d/README.md
deleted file mode 100644
index badc1ec..0000000
--- a/third_party/ceres/examples/slam/pose_graph_3d/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-Pose Graph 3D
-----------------
-
-The Simultaneous Localization and Mapping (SLAM) problem consists of building a
-map of an unknown environment while simultaneously localizing against this
-map. The main difficulty of this problem stems from not having any additional
-external aiding information such as GPS. SLAM has been considered one of the
-fundamental challenges of robotics. A pose graph optimization problem is one
-example of a SLAM problem.
-
-The example also illustrates how to use Eigen's geometry module with Ceres'
-automatic differentiation functionality. To represent the orientation, we will
-use Eigen's quaternion which uses the Hamiltonian convention but has different
-element ordering as compared with Ceres's rotation representation. Specifically
-they differ by whether the scalar component q_w is first or last; the element
-order for Ceres's quaternion is [q_w, q_x, q_y, q_z] where as Eigen's quaternion
-is [q_x, q_y, q_z, q_w].
-
-This package defines the necessary Ceres cost functions needed to model the
-3-dimensional pose graph optimization problem as well as a binary to build and
-solve the problem. The cost functions are shown for instruction purposes and can
-be speed up by using analytical derivatives which take longer to implement.
-
-
-Running
------------
-This package includes an executable `pose_graph_3d` that will read a problem
-definition file. This executable can work with any 3D problem definition that
-uses the g2o format with quaternions used for the orientation representation. It
-would be relatively straightforward to implement a new reader for a different
-format such as TORO or others. `pose_graph_3d` will print the Ceres solver full
-summary and then output to disk the original and optimized poses
-(`poses_original.txt` and `poses_optimized.txt`, respectively) of the robot in
-the following format:
-```
-pose_id x y z q_x q_y q_z q_w
-pose_id x y z q_x q_y q_z q_w
-pose_id x y z q_x q_y q_z q_w
-...
-```
-where `pose_id` is the corresponding integer ID from the file definition. Note,
-the file will be sorted in ascending order for the `pose_id`.
-
-The executable `pose_graph_3d` has one flag `--input` which is the path to the
-problem definition. To run the executable,
-```
-/path/to/bin/pose_graph_3d --input /path/to/dataset/dataset.g2o
-```
-
-A script is provided to visualize the resulting output files. There is also an
-option to enable equal axes using ```--axes_equal```.
-```
-/path/to/repo/examples/slam/pose_graph_3d/plot_results.py --optimized_poses ./poses_optimized.txt --initial_poses ./poses_original.txt
-```
diff --git a/third_party/ceres/examples/slam/pose_graph_3d/plot_results.py b/third_party/ceres/examples/slam/pose_graph_3d/plot_results.py
deleted file mode 100755
index defb9e6..0000000
--- a/third_party/ceres/examples/slam/pose_graph_3d/plot_results.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/python
-#
-# Plots the results from the 3D pose graph optimization. It will draw a line
-# between consecutive vertices.  The commandline expects two optional filenames:
-#
-#   ./plot_results.py --initial_poses filename  --optimized_poses filename
-#
-# The files have the following format:
-#   ID x y z q_x q_y q_z q_w
-
-from mpl_toolkits.mplot3d import Axes3D
-import matplotlib.pyplot as plot
-import numpy
-import sys
-from optparse import OptionParser
-
-def set_axes_equal(axes):
-    ''' Sets the axes of a 3D plot to have equal scale. '''
-    x_limits = axes.get_xlim3d()
-    y_limits = axes.get_ylim3d()
-    z_limits = axes.get_zlim3d()
-
-    x_range = abs(x_limits[1] - x_limits[0])
-    x_middle = numpy.mean(x_limits)
-    y_range = abs(y_limits[1] - y_limits[0])
-    y_middle = numpy.mean(y_limits)
-    z_range = abs(z_limits[1] - z_limits[0])
-    z_middle = numpy.mean(z_limits)
-
-    length = 0.5 * max([x_range, y_range, z_range])
-
-    axes.set_xlim3d([x_middle - length, x_middle + length])
-    axes.set_ylim3d([y_middle - length, y_middle + length])
-    axes.set_zlim3d([z_middle - length, z_middle + length])
-
-parser = OptionParser()
-parser.add_option("--initial_poses", dest="initial_poses",
-                  default="", help="The filename that contains the original poses.")
-parser.add_option("--optimized_poses", dest="optimized_poses",
-                  default="", help="The filename that contains the optimized poses.")
-parser.add_option("-e", "--axes_equal", action="store_true", dest="axes_equal",
-                  default="", help="Make the plot axes equal.")
-(options, args) = parser.parse_args()
-
-# Read the original and optimized poses files.
-poses_original = None
-if options.initial_poses != '':
-  poses_original = numpy.genfromtxt(options.initial_poses,
-                                    usecols = (1, 2, 3))
-
-poses_optimized = None
-if options.optimized_poses != '':
-  poses_optimized = numpy.genfromtxt(options.optimized_poses,
-                                     usecols = (1, 2, 3))
-
-# Plots the results for the specified poses.
-figure = plot.figure()
-
-if poses_original is not None:
-  axes = plot.subplot(1, 2, 1, projection='3d')
-  plot.plot(poses_original[:, 0], poses_original[:, 1], poses_original[:, 2],
-            '-', alpha=0.5, color="green")
-  plot.title('Original')
-  if options.axes_equal:
-    axes.set_aspect('equal')
-    set_axes_equal(axes)
-
-
-if poses_optimized is not None:
-  axes = plot.subplot(1, 2, 2, projection='3d')
-  plot.plot(poses_optimized[:, 0], poses_optimized[:, 1], poses_optimized[:, 2],
-            '-', alpha=0.5, color="blue")
-  plot.title('Optimized')
-  if options.axes_equal:
-    axes.set_aspect('equal')
-    set_axes_equal(plot.gca())
-
-
-# Show the plot and wait for the user to close.
-plot.show()
diff --git a/third_party/ceres/examples/slam/pose_graph_3d/pose_graph_3d.cc b/third_party/ceres/examples/slam/pose_graph_3d/pose_graph_3d.cc
deleted file mode 100644
index 522e2a1..0000000
--- a/third_party/ceres/examples/slam/pose_graph_3d/pose_graph_3d.cc
+++ /dev/null
@@ -1,165 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include "ceres/ceres.h"
-#include "common/read_g2o.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-#include "pose_graph_3d_error_term.h"
-#include "types.h"
-
-DEFINE_string(input, "", "The pose graph definition filename in g2o format.");
-
-namespace ceres::examples {
-namespace {
-
-// Constructs the nonlinear least squares optimization problem from the pose
-// graph constraints.
-void BuildOptimizationProblem(const VectorOfConstraints& constraints,
-                              MapOfPoses* poses,
-                              ceres::Problem* problem) {
-  CHECK(poses != nullptr);
-  CHECK(problem != nullptr);
-  if (constraints.empty()) {
-    LOG(INFO) << "No constraints, no problem to optimize.";
-    return;
-  }
-
-  ceres::LossFunction* loss_function = nullptr;
-  ceres::Manifold* quaternion_manifold = new EigenQuaternionManifold;
-
-  for (const auto& constraint : constraints) {
-    auto pose_begin_iter = poses->find(constraint.id_begin);
-    CHECK(pose_begin_iter != poses->end())
-        << "Pose with ID: " << constraint.id_begin << " not found.";
-    auto pose_end_iter = poses->find(constraint.id_end);
-    CHECK(pose_end_iter != poses->end())
-        << "Pose with ID: " << constraint.id_end << " not found.";
-
-    const Eigen::Matrix<double, 6, 6> sqrt_information =
-        constraint.information.llt().matrixL();
-    // Ceres will take ownership of the pointer.
-    ceres::CostFunction* cost_function =
-        PoseGraph3dErrorTerm::Create(constraint.t_be, sqrt_information);
-
-    problem->AddResidualBlock(cost_function,
-                              loss_function,
-                              pose_begin_iter->second.p.data(),
-                              pose_begin_iter->second.q.coeffs().data(),
-                              pose_end_iter->second.p.data(),
-                              pose_end_iter->second.q.coeffs().data());
-
-    problem->SetManifold(pose_begin_iter->second.q.coeffs().data(),
-                         quaternion_manifold);
-    problem->SetManifold(pose_end_iter->second.q.coeffs().data(),
-                         quaternion_manifold);
-  }
-
-  // The pose graph optimization problem has six DOFs that are not fully
-  // constrained. This is typically referred to as gauge freedom. You can apply
-  // a rigid body transformation to all the nodes and the optimization problem
-  // will still have the exact same cost. The Levenberg-Marquardt algorithm has
-  // internal damping which mitigates this issue, but it is better to properly
-  // constrain the gauge freedom. This can be done by setting one of the poses
-  // as constant so the optimizer cannot change it.
-  auto pose_start_iter = poses->begin();
-  CHECK(pose_start_iter != poses->end()) << "There are no poses.";
-  problem->SetParameterBlockConstant(pose_start_iter->second.p.data());
-  problem->SetParameterBlockConstant(pose_start_iter->second.q.coeffs().data());
-}
-
-// Returns true if the solve was successful.
-bool SolveOptimizationProblem(ceres::Problem* problem) {
-  CHECK(problem != nullptr);
-
-  ceres::Solver::Options options;
-  options.max_num_iterations = 200;
-  options.linear_solver_type = ceres::SPARSE_NORMAL_CHOLESKY;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, problem, &summary);
-
-  std::cout << summary.FullReport() << '\n';
-
-  return summary.IsSolutionUsable();
-}
-
-// Output the poses to the file with format: id x y z q_x q_y q_z q_w.
-bool OutputPoses(const std::string& filename, const MapOfPoses& poses) {
-  std::fstream outfile;
-  outfile.open(filename.c_str(), std::istream::out);
-  if (!outfile) {
-    LOG(ERROR) << "Error opening the file: " << filename;
-    return false;
-  }
-  for (const auto& pair : poses) {
-    outfile << pair.first << " " << pair.second.p.transpose() << " "
-            << pair.second.q.x() << " " << pair.second.q.y() << " "
-            << pair.second.q.z() << " " << pair.second.q.w() << '\n';
-  }
-  return true;
-}
-
-}  // namespace
-}  // namespace ceres::examples
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-
-  CHECK(FLAGS_input != "") << "Need to specify the filename to read.";
-
-  ceres::examples::MapOfPoses poses;
-  ceres::examples::VectorOfConstraints constraints;
-
-  CHECK(ceres::examples::ReadG2oFile(FLAGS_input, &poses, &constraints))
-      << "Error reading the file: " << FLAGS_input;
-
-  std::cout << "Number of poses: " << poses.size() << '\n';
-  std::cout << "Number of constraints: " << constraints.size() << '\n';
-
-  CHECK(ceres::examples::OutputPoses("poses_original.txt", poses))
-      << "Error outputting to poses_original.txt";
-
-  ceres::Problem problem;
-  ceres::examples::BuildOptimizationProblem(constraints, &poses, &problem);
-
-  CHECK(ceres::examples::SolveOptimizationProblem(&problem))
-      << "The solve was not successful, exiting.";
-
-  CHECK(ceres::examples::OutputPoses("poses_optimized.txt", poses))
-      << "Error outputting to poses_original.txt";
-
-  return 0;
-}
diff --git a/third_party/ceres/examples/slam/pose_graph_3d/pose_graph_3d_error_term.h b/third_party/ceres/examples/slam/pose_graph_3d/pose_graph_3d_error_term.h
deleted file mode 100644
index b1c0138..0000000
--- a/third_party/ceres/examples/slam/pose_graph_3d/pose_graph_3d_error_term.h
+++ /dev/null
@@ -1,133 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef EXAMPLES_CERES_POSE_GRAPH_3D_ERROR_TERM_H_
-#define EXAMPLES_CERES_POSE_GRAPH_3D_ERROR_TERM_H_
-
-#include <utility>
-
-#include "Eigen/Core"
-#include "ceres/autodiff_cost_function.h"
-#include "types.h"
-
-namespace ceres::examples {
-
-// Computes the error term for two poses that have a relative pose measurement
-// between them. Let the hat variables be the measurement. We have two poses x_a
-// and x_b. Through sensor measurements we can measure the transformation of
-// frame B w.r.t frame A denoted as t_ab_hat. We can compute an error metric
-// between the current estimate of the poses and the measurement.
-//
-// In this formulation, we have chosen to represent the rigid transformation as
-// a Hamiltonian quaternion, q, and position, p. The quaternion ordering is
-// [x, y, z, w].
-
-// The estimated measurement is:
-//      t_ab = [ p_ab ]  = [ R(q_a)^T * (p_b - p_a) ]
-//             [ q_ab ]    [ q_a^{-1] * q_b         ]
-//
-// where ^{-1} denotes the inverse and R(q) is the rotation matrix for the
-// quaternion. Now we can compute an error metric between the estimated and
-// measurement transformation. For the orientation error, we will use the
-// standard multiplicative error resulting in:
-//
-//   error = [ p_ab - \hat{p}_ab                 ]
-//           [ 2.0 * Vec(q_ab * \hat{q}_ab^{-1}) ]
-//
-// where Vec(*) returns the vector (imaginary) part of the quaternion. Since
-// the measurement has an uncertainty associated with how accurate it is, we
-// will weight the errors by the square root of the measurement information
-// matrix:
-//
-//   residuals = I^{1/2) * error
-// where I is the information matrix which is the inverse of the covariance.
-class PoseGraph3dErrorTerm {
- public:
-  PoseGraph3dErrorTerm(Pose3d t_ab_measured,
-                       Eigen::Matrix<double, 6, 6> sqrt_information)
-      : t_ab_measured_(std::move(t_ab_measured)),
-        sqrt_information_(std::move(sqrt_information)) {}
-
-  template <typename T>
-  bool operator()(const T* const p_a_ptr,
-                  const T* const q_a_ptr,
-                  const T* const p_b_ptr,
-                  const T* const q_b_ptr,
-                  T* residuals_ptr) const {
-    Eigen::Map<const Eigen::Matrix<T, 3, 1>> p_a(p_a_ptr);
-    Eigen::Map<const Eigen::Quaternion<T>> q_a(q_a_ptr);
-
-    Eigen::Map<const Eigen::Matrix<T, 3, 1>> p_b(p_b_ptr);
-    Eigen::Map<const Eigen::Quaternion<T>> q_b(q_b_ptr);
-
-    // Compute the relative transformation between the two frames.
-    Eigen::Quaternion<T> q_a_inverse = q_a.conjugate();
-    Eigen::Quaternion<T> q_ab_estimated = q_a_inverse * q_b;
-
-    // Represent the displacement between the two frames in the A frame.
-    Eigen::Matrix<T, 3, 1> p_ab_estimated = q_a_inverse * (p_b - p_a);
-
-    // Compute the error between the two orientation estimates.
-    Eigen::Quaternion<T> delta_q =
-        t_ab_measured_.q.template cast<T>() * q_ab_estimated.conjugate();
-
-    // Compute the residuals.
-    // [ position         ]   [ delta_p          ]
-    // [ orientation (3x1)] = [ 2 * delta_q(0:2) ]
-    Eigen::Map<Eigen::Matrix<T, 6, 1>> residuals(residuals_ptr);
-    residuals.template block<3, 1>(0, 0) =
-        p_ab_estimated - t_ab_measured_.p.template cast<T>();
-    residuals.template block<3, 1>(3, 0) = T(2.0) * delta_q.vec();
-
-    // Scale the residuals by the measurement uncertainty.
-    residuals.applyOnTheLeft(sqrt_information_.template cast<T>());
-
-    return true;
-  }
-
-  static ceres::CostFunction* Create(
-      const Pose3d& t_ab_measured,
-      const Eigen::Matrix<double, 6, 6>& sqrt_information) {
-    return new ceres::AutoDiffCostFunction<PoseGraph3dErrorTerm, 6, 3, 4, 3, 4>(
-        t_ab_measured, sqrt_information);
-  }
-
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
- private:
-  // The measurement for the position of B relative to A in the A frame.
-  const Pose3d t_ab_measured_;
-  // The square root of the measurement information matrix.
-  const Eigen::Matrix<double, 6, 6> sqrt_information_;
-};
-
-}  // namespace ceres::examples
-
-#endif  // EXAMPLES_CERES_POSE_GRAPH_3D_ERROR_TERM_H_
diff --git a/third_party/ceres/examples/slam/pose_graph_3d/types.h b/third_party/ceres/examples/slam/pose_graph_3d/types.h
deleted file mode 100644
index 207dd5d..0000000
--- a/third_party/ceres/examples/slam/pose_graph_3d/types.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef EXAMPLES_CERES_TYPES_H_
-#define EXAMPLES_CERES_TYPES_H_
-
-#include <functional>
-#include <istream>
-#include <map>
-#include <string>
-#include <vector>
-
-#include "Eigen/Core"
-#include "Eigen/Geometry"
-
-namespace ceres::examples {
-
-struct Pose3d {
-  Eigen::Vector3d p;
-  Eigen::Quaterniond q;
-
-  // The name of the data type in the g2o file format.
-  static std::string name() { return "VERTEX_SE3:QUAT"; }
-
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-};
-
-inline std::istream& operator>>(std::istream& input, Pose3d& pose) {
-  input >> pose.p.x() >> pose.p.y() >> pose.p.z() >> pose.q.x() >> pose.q.y() >>
-      pose.q.z() >> pose.q.w();
-  // Normalize the quaternion to account for precision loss due to
-  // serialization.
-  pose.q.normalize();
-  return input;
-}
-
-using MapOfPoses =
-    std::map<int,
-             Pose3d,
-             std::less<int>,
-             Eigen::aligned_allocator<std::pair<const int, Pose3d>>>;
-
-// The constraint between two vertices in the pose graph. The constraint is the
-// transformation from vertex id_begin to vertex id_end.
-struct Constraint3d {
-  int id_begin;
-  int id_end;
-
-  // The transformation that represents the pose of the end frame E w.r.t. the
-  // begin frame B. In other words, it transforms a vector in the E frame to
-  // the B frame.
-  Pose3d t_be;
-
-  // The inverse of the covariance matrix for the measurement. The order of the
-  // entries are x, y, z, delta orientation.
-  Eigen::Matrix<double, 6, 6> information;
-
-  // The name of the data type in the g2o file format.
-  static std::string name() { return "EDGE_SE3:QUAT"; }
-
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-};
-
-inline std::istream& operator>>(std::istream& input, Constraint3d& constraint) {
-  Pose3d& t_be = constraint.t_be;
-  input >> constraint.id_begin >> constraint.id_end >> t_be;
-
-  for (int i = 0; i < 6 && input.good(); ++i) {
-    for (int j = i; j < 6 && input.good(); ++j) {
-      input >> constraint.information(i, j);
-      if (i != j) {
-        constraint.information(j, i) = constraint.information(i, j);
-      }
-    }
-  }
-  return input;
-}
-
-using VectorOfConstraints =
-    std::vector<Constraint3d, Eigen::aligned_allocator<Constraint3d>>;
-
-}  // namespace ceres::examples
-
-#endif  // EXAMPLES_CERES_TYPES_H_
diff --git a/third_party/ceres/examples/snavely_reprojection_error.h b/third_party/ceres/examples/snavely_reprojection_error.h
deleted file mode 100644
index aaf0c6c..0000000
--- a/third_party/ceres/examples/snavely_reprojection_error.h
+++ /dev/null
@@ -1,174 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Templated struct implementing the camera model and residual
-// computation for bundle adjustment used by Noah Snavely's Bundler
-// SfM system. This is also the camera model/residual for the bundle
-// adjustment problems in the BAL dataset. It is templated so that we
-// can use Ceres's automatic differentiation to compute analytic
-// jacobians.
-//
-// For details see: http://phototour.cs.washington.edu/bundler/
-// and http://grail.cs.washington.edu/projects/bal/
-
-#ifndef CERES_EXAMPLES_SNAVELY_REPROJECTION_ERROR_H_
-#define CERES_EXAMPLES_SNAVELY_REPROJECTION_ERROR_H_
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/rotation.h"
-
-namespace ceres::examples {
-
-// Templated pinhole camera model for used with Ceres.  The camera is
-// parameterized using 9 parameters: 3 for rotation, 3 for translation, 1 for
-// focal length and 2 for radial distortion. The principal point is not modeled
-// (i.e. it is assumed be located at the image center).
-struct SnavelyReprojectionError {
-  SnavelyReprojectionError(double observed_x, double observed_y)
-      : observed_x(observed_x), observed_y(observed_y) {}
-
-  template <typename T>
-  bool operator()(const T* const camera,
-                  const T* const point,
-                  T* residuals) const {
-    // camera[0,1,2] are the angle-axis rotation.
-    T p[3];
-    AngleAxisRotatePoint(camera, point, p);
-
-    // camera[3,4,5] are the translation.
-    p[0] += camera[3];
-    p[1] += camera[4];
-    p[2] += camera[5];
-
-    // Compute the center of distortion. The sign change comes from
-    // the camera model that Noah Snavely's Bundler assumes, whereby
-    // the camera coordinate system has a negative z axis.
-    const T xp = -p[0] / p[2];
-    const T yp = -p[1] / p[2];
-
-    // Apply second and fourth order radial distortion.
-    const T& l1 = camera[7];
-    const T& l2 = camera[8];
-    const T r2 = xp * xp + yp * yp;
-    const T distortion = 1.0 + r2 * (l1 + l2 * r2);
-
-    // Compute final projected point position.
-    const T& focal = camera[6];
-    const T predicted_x = focal * distortion * xp;
-    const T predicted_y = focal * distortion * yp;
-
-    // The error is the difference between the predicted and observed position.
-    residuals[0] = predicted_x - observed_x;
-    residuals[1] = predicted_y - observed_y;
-
-    return true;
-  }
-
-  // Factory to hide the construction of the CostFunction object from
-  // the client code.
-  static ceres::CostFunction* Create(const double observed_x,
-                                     const double observed_y) {
-    return new ceres::AutoDiffCostFunction<SnavelyReprojectionError, 2, 9, 3>(
-        observed_x, observed_y);
-  }
-
-  double observed_x;
-  double observed_y;
-};
-
-// Templated pinhole camera model for used with Ceres.  The camera is
-// parameterized using 10 parameters. 4 for rotation, 3 for
-// translation, 1 for focal length and 2 for radial distortion. The
-// principal point is not modeled (i.e. it is assumed be located at
-// the image center).
-struct SnavelyReprojectionErrorWithQuaternions {
-  // (u, v): the position of the observation with respect to the image
-  // center point.
-  SnavelyReprojectionErrorWithQuaternions(double observed_x, double observed_y)
-      : observed_x(observed_x), observed_y(observed_y) {}
-
-  template <typename T>
-  bool operator()(const T* const camera,
-                  const T* const point,
-                  T* residuals) const {
-    // camera[0,1,2,3] is are the rotation of the camera as a quaternion.
-    //
-    // We use QuaternionRotatePoint as it does not assume that the
-    // quaternion is normalized, since one of the ways to run the
-    // bundle adjuster is to let Ceres optimize all 4 quaternion
-    // parameters without using a Quaternion manifold.
-    T p[3];
-    QuaternionRotatePoint(camera, point, p);
-
-    p[0] += camera[4];
-    p[1] += camera[5];
-    p[2] += camera[6];
-
-    // Compute the center of distortion. The sign change comes from
-    // the camera model that Noah Snavely's Bundler assumes, whereby
-    // the camera coordinate system has a negative z axis.
-    const T xp = -p[0] / p[2];
-    const T yp = -p[1] / p[2];
-
-    // Apply second and fourth order radial distortion.
-    const T& l1 = camera[8];
-    const T& l2 = camera[9];
-
-    const T r2 = xp * xp + yp * yp;
-    const T distortion = 1.0 + r2 * (l1 + l2 * r2);
-
-    // Compute final projected point position.
-    const T& focal = camera[7];
-    const T predicted_x = focal * distortion * xp;
-    const T predicted_y = focal * distortion * yp;
-
-    // The error is the difference between the predicted and observed position.
-    residuals[0] = predicted_x - observed_x;
-    residuals[1] = predicted_y - observed_y;
-
-    return true;
-  }
-
-  // Factory to hide the construction of the CostFunction object from
-  // the client code.
-  static ceres::CostFunction* Create(const double observed_x,
-                                     const double observed_y) {
-    return new ceres::
-        AutoDiffCostFunction<SnavelyReprojectionErrorWithQuaternions, 2, 10, 3>(
-            observed_x, observed_y);
-  }
-
-  double observed_x;
-  double observed_y;
-};
-
-}  // namespace ceres::examples
-
-#endif  // CERES_EXAMPLES_SNAVELY_REPROJECTION_ERROR_H_
diff --git a/third_party/ceres/include/ceres/autodiff_cost_function.h b/third_party/ceres/include/ceres/autodiff_cost_function.h
deleted file mode 100644
index 878b2ec..0000000
--- a/third_party/ceres/include/ceres/autodiff_cost_function.h
+++ /dev/null
@@ -1,276 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Create CostFunctions as needed by the least squares framework, with
-// Jacobians computed via automatic differentiation. For more
-// information on automatic differentiation, see the wikipedia article
-// at http://en.wikipedia.org/wiki/Automatic_differentiation
-//
-// To get an auto differentiated cost function, you must define a class with a
-// templated operator() (a functor) that computes the cost function in terms of
-// the template parameter T. The autodiff framework substitutes appropriate
-// "jet" objects for T in order to compute the derivative when necessary, but
-// this is hidden, and you should write the function as if T were a scalar type
-// (e.g. a double-precision floating point number).
-//
-// The function must write the computed value in the last argument
-// (the only non-const one) and return true to indicate
-// success. Please see cost_function.h for details on how the return
-// value maybe used to impose simple constraints on the parameter
-// block.
-//
-// For example, consider a scalar error e = k - x'y, where both x and y are
-// two-dimensional column vector parameters, the prime sign indicates
-// transposition, and k is a constant. The form of this error, which is the
-// difference between a constant and an expression, is a common pattern in least
-// squares problems. For example, the value x'y might be the model expectation
-// for a series of measurements, where there is an instance of the cost function
-// for each measurement k.
-//
-// The actual cost added to the total problem is e^2, or (k - x'y)^2; however,
-// the squaring is implicitly done by the optimization framework.
-//
-// To write an auto-differentiable cost function for the above model, first
-// define the object
-//
-//   class MyScalarCostFunctor {
-//     MyScalarCostFunctor(double k): k_(k) {}
-//
-//     template <typename T>
-//     bool operator()(const T* const x , const T* const y, T* e) const {
-//       e[0] = T(k_) - x[0] * y[0] + x[1] * y[1];
-//       return true;
-//     }
-//
-//    private:
-//     double k_;
-//   };
-//
-// Note that in the declaration of operator() the input parameters x and y come
-// first, and are passed as const pointers to arrays of T. If there were three
-// input parameters, then the third input parameter would come after y. The
-// output is always the last parameter, and is also a pointer to an array. In
-// the example above, e is a scalar, so only e[0] is set.
-//
-// Then given this class definition, the auto differentiated cost function for
-// it can be constructed as follows.
-//
-//   auto* cost_function
-//       = new AutoDiffCostFunction<MyScalarCostFunctor, 1, 2, 2>(1.0);
-//                                                       ^  ^  ^
-//                                                       |  |  |
-//                            Dimension of residual -----+  |  |
-//                            Dimension of x ---------------+  |
-//                            Dimension of y ------------------+
-//
-// In this example, there is usually an instance for each measurement of k.
-//
-// In the instantiation above, the template parameters following
-// "MyScalarCostFunctor", "1, 2, 2", describe the functor as computing a
-// 1-dimensional output from two arguments, both 2-dimensional.
-//
-// AutoDiffCostFunction also supports cost functions with a
-// runtime-determined number of residuals. For example:
-//
-//   auto functor = std::make_unique<CostFunctorWithDynamicNumResiduals>(1.0);
-//   auto* cost_function
-//       = new AutoDiffCostFunction<CostFunctorWithDynamicNumResiduals,
-//                                                       DYNAMIC, 2, 2>(
-//           std::move(functor),                            ^     ^  ^
-//           runtime_number_of_residuals); <----+           |     |  |
-//                                              |           |     |  |
-//                                              |           |     |  |
-//             Actual number of residuals ------+           |     |  |
-//             Indicate dynamic number of residuals --------+     |  |
-//             Dimension of x ------------------------------------+  |
-//             Dimension of y ---------------------------------------+
-//
-// WARNING #1: Since the functor will get instantiated with different types for
-// T, you must convert from other numeric types to T before mixing
-// computations with other variables of type T. In the example above, this is
-// seen where instead of using k_ directly, k_ is wrapped with T(k_).
-//
-// WARNING #2: A common beginner's error when first using autodiff cost
-// functions is to get the sizing wrong. In particular, there is a tendency to
-// set the template parameters to (dimension of residual, number of parameters)
-// instead of passing a dimension parameter for *every parameter*. In the
-// example above, that would be <MyScalarCostFunctor, 1, 2>, which is missing
-// the last '2' argument. Please be careful when setting the size parameters.
-
-#ifndef CERES_PUBLIC_AUTODIFF_COST_FUNCTION_H_
-#define CERES_PUBLIC_AUTODIFF_COST_FUNCTION_H_
-
-#include <memory>
-#include <type_traits>
-
-#include "ceres/internal/autodiff.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-// A cost function which computes the derivative of the cost with respect to
-// the parameters (a.k.a. the jacobian) using an auto differentiation framework.
-// The first template argument is the functor object, described in the header
-// comment. The second argument is the dimension of the residual (or
-// ceres::DYNAMIC to indicate it will be set at runtime), and subsequent
-// arguments describe the size of the Nth parameter, one per parameter.
-//
-// The constructors take ownership of the cost functor.
-//
-// If the number of residuals (argument kNumResiduals below) is
-// ceres::DYNAMIC, then the two-argument constructor must be used. The
-// second constructor takes a number of residuals (in addition to the
-// templated number of residuals). This allows for varying the number
-// of residuals for a single autodiff cost function at runtime.
-template <typename CostFunctor,
-          int kNumResiduals,  // Number of residuals, or ceres::DYNAMIC.
-          int... Ns>          // Number of parameters in each parameter block.
-class AutoDiffCostFunction final
-    : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  // Takes ownership of functor by default. Uses the template-provided
-  // value for the number of residuals ("kNumResiduals").
-  explicit AutoDiffCostFunction(std::unique_ptr<CostFunctor> functor)
-      : AutoDiffCostFunction{std::move(functor), TAKE_OWNERSHIP, FIXED_INIT} {}
-
-  // Constructs the CostFunctor on the heap and takes the ownership.
-  // Invocable only if the number of residuals is known at compile-time.
-  template <class... Args,
-            bool kIsDynamic = kNumResiduals == DYNAMIC,
-            std::enable_if_t<!kIsDynamic &&
-                             std::is_constructible_v<CostFunctor, Args&&...>>* =
-                nullptr>
-  explicit AutoDiffCostFunction(Args&&... args)
-      // NOTE We explicitly use direct initialization using parentheses instead
-      // of uniform initialization using braces to avoid narrowing conversion
-      // warnings.
-      : AutoDiffCostFunction{
-            std::make_unique<CostFunctor>(std::forward<Args>(args)...)} {}
-
-  AutoDiffCostFunction(std::unique_ptr<CostFunctor> functor, int num_residuals)
-      : AutoDiffCostFunction{
-            std::move(functor), num_residuals, TAKE_OWNERSHIP, DYNAMIC_INIT} {}
-
-  explicit AutoDiffCostFunction(CostFunctor* functor,
-                                Ownership ownership = TAKE_OWNERSHIP)
-      : AutoDiffCostFunction{
-            std::unique_ptr<CostFunctor>{functor}, ownership, FIXED_INIT} {}
-
-  // Takes ownership of functor by default. Ignores the template-provided
-  // kNumResiduals in favor of the "num_residuals" argument provided.
-  //
-  // This allows for having autodiff cost functions which return varying
-  // numbers of residuals at runtime.
-  AutoDiffCostFunction(CostFunctor* functor,
-                       int num_residuals,
-                       Ownership ownership = TAKE_OWNERSHIP)
-      : AutoDiffCostFunction{std::unique_ptr<CostFunctor>{functor},
-                             num_residuals,
-                             ownership,
-                             DYNAMIC_INIT} {}
-
-  AutoDiffCostFunction(AutoDiffCostFunction&& other) noexcept = default;
-  AutoDiffCostFunction& operator=(AutoDiffCostFunction&& other) noexcept =
-      default;
-  AutoDiffCostFunction(const AutoDiffCostFunction& other) = delete;
-  AutoDiffCostFunction& operator=(const AutoDiffCostFunction& other) = delete;
-
-  ~AutoDiffCostFunction() override {
-    // Manually release pointer if configured to not take ownership rather than
-    // deleting only if ownership is taken.
-    // This is to stay maximally compatible to old user code which may have
-    // forgotten to implement a virtual destructor, from when the
-    // AutoDiffCostFunction always took ownership.
-    if (ownership_ == DO_NOT_TAKE_OWNERSHIP) {
-      functor_.release();
-    }
-  }
-
-  // Implementation details follow; clients of the autodiff cost function should
-  // not have to examine below here.
-  //
-  // To handle variadic cost functions, some template magic is needed. It's
-  // mostly hidden inside autodiff.h.
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    using ParameterDims =
-        typename SizedCostFunction<kNumResiduals, Ns...>::ParameterDims;
-
-    if (jacobians == nullptr) {
-      return internal::VariadicEvaluate<ParameterDims>(
-          *functor_, parameters, residuals);
-    }
-    return internal::AutoDifferentiate<kNumResiduals, ParameterDims>(
-        *functor_,
-        parameters,
-        SizedCostFunction<kNumResiduals, Ns...>::num_residuals(),
-        residuals,
-        jacobians);
-  };
-
-  const CostFunctor& functor() const { return *functor_; }
-
- private:
-  // Tags used to differentiate between dynamic and fixed size constructor
-  // delegate invocations.
-  static constexpr std::integral_constant<int, DYNAMIC> DYNAMIC_INIT{};
-  static constexpr std::integral_constant<int, kNumResiduals> FIXED_INIT{};
-
-  template <class InitTag>
-  AutoDiffCostFunction(std::unique_ptr<CostFunctor> functor,
-                       int num_residuals,
-                       Ownership ownership,
-                       InitTag /*unused*/)
-      : functor_{std::move(functor)}, ownership_{ownership} {
-    static_assert(kNumResiduals == FIXED_INIT,
-                  "Can't run the fixed-size constructor if the number of "
-                  "residuals is set to ceres::DYNAMIC.");
-
-    if constexpr (InitTag::value == DYNAMIC_INIT) {
-      SizedCostFunction<kNumResiduals, Ns...>::set_num_residuals(num_residuals);
-    }
-  }
-
-  template <class InitTag>
-  AutoDiffCostFunction(std::unique_ptr<CostFunctor> functor,
-                       Ownership ownership,
-                       InitTag tag)
-      : AutoDiffCostFunction{
-            std::move(functor), kNumResiduals, ownership, tag} {}
-
-  std::unique_ptr<CostFunctor> functor_;
-  Ownership ownership_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_AUTODIFF_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/autodiff_first_order_function.h b/third_party/ceres/include/ceres/autodiff_first_order_function.h
deleted file mode 100644
index 6cd1b13..0000000
--- a/third_party/ceres/include/ceres/autodiff_first_order_function.h
+++ /dev/null
@@ -1,164 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_AUTODIFF_FIRST_ORDER_FUNCTION_H_
-#define CERES_PUBLIC_AUTODIFF_FIRST_ORDER_FUNCTION_H_
-
-#include <memory>
-#include <type_traits>
-
-#include "ceres/first_order_function.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/jet.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-// Create FirstOrderFunctions as needed by the GradientProblem
-// framework, with gradients computed via automatic
-// differentiation. For more information on automatic differentiation,
-// see the wikipedia article at
-// http://en.wikipedia.org/wiki/Automatic_differentiation
-//
-// To get an auto differentiated function, you must define a class
-// with a templated operator() (a functor) that computes the cost
-// function in terms of the template parameter T. The autodiff
-// framework substitutes appropriate "jet" objects for T in order to
-// compute the derivative when necessary, but this is hidden, and you
-// should write the function as if T were a scalar type (e.g. a
-// double-precision floating point number).
-//
-// The function must write the computed value in the last argument
-// (the only non-const one) and return true to indicate
-// success.
-//
-// For example, consider a scalar error e = x'y - a, where both x and y are
-// two-dimensional column vector parameters, the prime sign indicates
-// transposition, and a is a constant.
-//
-// To write an auto-differentiable FirstOrderFunction for the above model, first
-// define the object
-//
-//  class QuadraticCostFunctor {
-//   public:
-//    explicit QuadraticCostFunctor(double a) : a_(a) {}
-//    template <typename T>
-//    bool operator()(const T* const xy, T* cost) const {
-//      const T* const x = xy;
-//      const T* const y = xy + 2;
-//      *cost = x[0] * y[0] + x[1] * y[1] - T(a_);
-//      return true;
-//    }
-//
-//   private:
-//    double a_;
-//  };
-//
-// Note that in the declaration of operator() the input parameters xy come
-// first, and are passed as const pointers to arrays of T. The
-// output is the last parameter.
-//
-// Then given this class definition, the auto differentiated FirstOrderFunction
-// for it can be constructed as follows.
-//
-//    FirstOrderFunction* function =
-//      new AutoDiffFirstOrderFunction<QuadraticCostFunctor, 4>(
-//          new QuadraticCostFunctor(1.0)));
-//
-// In the instantiation above, the template parameters following
-// "QuadraticCostFunctor", "4", describe the functor as computing a
-// 1-dimensional output from a four dimensional vector.
-//
-// WARNING: Since the functor will get instantiated with different types for
-// T, you must convert from other numeric types to T before mixing
-// computations with other variables of type T. In the example above, this is
-// seen where instead of using a_ directly, a_ is wrapped with T(a_).
-
-template <typename FirstOrderFunctor, int kNumParameters>
-class AutoDiffFirstOrderFunction final : public FirstOrderFunction {
- public:
-  // Takes ownership of functor.
-  explicit AutoDiffFirstOrderFunction(FirstOrderFunctor* functor)
-      : AutoDiffFirstOrderFunction{
-            std::unique_ptr<FirstOrderFunctor>{functor}} {}
-
-  explicit AutoDiffFirstOrderFunction(
-      std::unique_ptr<FirstOrderFunctor> functor)
-      : functor_(std::move(functor)) {
-    static_assert(kNumParameters > 0, "kNumParameters must be positive");
-  }
-
-  template <class... Args,
-            std::enable_if_t<std::is_constructible_v<FirstOrderFunctor,
-                                                     Args&&...>>* = nullptr>
-  explicit AutoDiffFirstOrderFunction(Args&&... args)
-      : AutoDiffFirstOrderFunction{
-            std::make_unique<FirstOrderFunctor>(std::forward<Args>(args)...)} {}
-
-  bool Evaluate(const double* const parameters,
-                double* cost,
-                double* gradient) const override {
-    if (gradient == nullptr) {
-      return (*functor_)(parameters, cost);
-    }
-
-    using JetT = Jet<double, kNumParameters>;
-    internal::FixedArray<JetT, (256 * 7) / sizeof(JetT)> x(kNumParameters);
-    for (int i = 0; i < kNumParameters; ++i) {
-      x[i].a = parameters[i];
-      x[i].v.setZero();
-      x[i].v[i] = 1.0;
-    }
-
-    JetT output;
-    output.a = kImpossibleValue;
-    output.v.setConstant(kImpossibleValue);
-
-    if (!(*functor_)(x.data(), &output)) {
-      return false;
-    }
-
-    *cost = output.a;
-    VectorRef(gradient, kNumParameters) = output.v;
-    return true;
-  }
-
-  int NumParameters() const override { return kNumParameters; }
-
-  const FirstOrderFunctor& functor() const { return *functor_; }
-
- private:
-  std::unique_ptr<FirstOrderFunctor> functor_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_AUTODIFF_FIRST_ORDER_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/autodiff_manifold.h b/third_party/ceres/include/ceres/autodiff_manifold.h
deleted file mode 100644
index 4bf7e56..0000000
--- a/third_party/ceres/include/ceres/autodiff_manifold.h
+++ /dev/null
@@ -1,259 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_AUTODIFF_MANIFOLD_H_
-#define CERES_PUBLIC_AUTODIFF_MANIFOLD_H_
-
-#include <memory>
-
-#include "ceres/internal/autodiff.h"
-#include "ceres/manifold.h"
-
-namespace ceres {
-
-// Create a Manifold with Jacobians computed via automatic differentiation. For
-// more information on manifolds, see include/ceres/manifold.h
-//
-// To get an auto differentiated manifold, you must define a class/struct with
-// templated Plus and Minus functions that compute
-//
-//   x_plus_delta = Plus(x, delta);
-//   y_minus_x    = Minus(y, x);
-//
-// Where, x, y and x_plus_delta are vectors on the manifold in the ambient space
-// (so they are kAmbientSize vectors) and delta, y_minus_x are vectors in the
-// tangent space (so they are kTangentSize vectors).
-//
-// The Functor should have the signature:
-//
-// struct Functor {
-//   template <typename T>
-//   bool Plus(const T* x, const T* delta, T* x_plus_delta) const;
-//
-//   template <typename T>
-//   bool Minus(const T* y, const T* x, T* y_minus_x) const;
-// };
-//
-// Observe that the Plus and Minus operations are templated on the parameter T.
-// The autodiff framework substitutes appropriate "Jet" objects for T in order
-// to compute the derivative when necessary. This is the same mechanism that is
-// used to compute derivatives when using AutoDiffCostFunction.
-//
-// Plus and Minus should return true if the computation is successful and false
-// otherwise, in which case the result will not be used.
-//
-// Given this Functor, the corresponding Manifold can be constructed as:
-//
-// AutoDiffManifold<Functor, kAmbientSize, kTangentSize> manifold;
-//
-// As a concrete example consider the case of Quaternions. Quaternions form a
-// three dimensional manifold embedded in R^4, i.e. they have an ambient
-// dimension of 4 and their tangent space has dimension 3. The following Functor
-// (taken from autodiff_manifold_test.cc) defines the Plus and Minus operations
-// on the Quaternion manifold:
-//
-// NOTE: The following is only used for illustration purposes. Ceres Solver
-// ships with optimized production grade QuaternionManifold implementation. See
-// manifold.h.
-//
-// This functor assumes that the quaternions are laid out as [w,x,y,z] in
-// memory, i.e. the real or scalar part is the first coordinate.
-//
-// struct QuaternionFunctor {
-//   template <typename T>
-//   bool Plus(const T* x, const T* delta, T* x_plus_delta) const {
-//     const T squared_norm_delta =
-//         delta[0] * delta[0] + delta[1] * delta[1] + delta[2] * delta[2];
-//
-//     T q_delta[4];
-//     if (squared_norm_delta > T(0.0)) {
-//       T norm_delta = sqrt(squared_norm_delta);
-//       const T sin_delta_by_delta = sin(norm_delta) / norm_delta;
-//       q_delta[0] = cos(norm_delta);
-//       q_delta[1] = sin_delta_by_delta * delta[0];
-//       q_delta[2] = sin_delta_by_delta * delta[1];
-//       q_delta[3] = sin_delta_by_delta * delta[2];
-//     } else {
-//       // We do not just use q_delta = [1,0,0,0] here because that is a
-//       // constant and when used for automatic differentiation will
-//       // lead to a zero derivative. Instead we take a first order
-//       // approximation and evaluate it at zero.
-//       q_delta[0] = T(1.0);
-//       q_delta[1] = delta[0];
-//       q_delta[2] = delta[1];
-//       q_delta[3] = delta[2];
-//     }
-//
-//     QuaternionProduct(q_delta, x, x_plus_delta);
-//     return true;
-//   }
-//
-//   template <typename T>
-//   bool Minus(const T* y, const T* x, T* y_minus_x) const {
-//     T minus_x[4] = {x[0], -x[1], -x[2], -x[3]};
-//     T ambient_y_minus_x[4];
-//     QuaternionProduct(y, minus_x, ambient_y_minus_x);
-//     T u_norm = sqrt(ambient_y_minus_x[1] * ambient_y_minus_x[1] +
-//                     ambient_y_minus_x[2] * ambient_y_minus_x[2] +
-//                     ambient_y_minus_x[3] * ambient_y_minus_x[3]);
-//     if (u_norm > 0.0) {
-//       T theta = atan2(u_norm, ambient_y_minus_x[0]);
-//       y_minus_x[0] = theta * ambient_y_minus_x[1] / u_norm;
-//       y_minus_x[1] = theta * ambient_y_minus_x[2] / u_norm;
-//       y_minus_x[2] = theta * ambient_y_minus_x[3] / u_norm;
-//     } else {
-//       // We do not use [0,0,0] here because even though the value part is
-//       // a constant, the derivative part is not.
-//       y_minus_x[0] = ambient_y_minus_x[1];
-//       y_minus_x[1] = ambient_y_minus_x[2];
-//       y_minus_x[2] = ambient_y_minus_x[3];
-//     }
-//     return true;
-//   }
-// };
-//
-// Then given this struct, the auto differentiated Quaternion Manifold can now
-// be constructed as
-//
-//   Manifold* manifold = new AutoDiffManifold<QuaternionFunctor, 4, 3>;
-
-template <typename Functor, int kAmbientSize, int kTangentSize>
-class AutoDiffManifold final : public Manifold {
- public:
-  AutoDiffManifold() : functor_(std::make_unique<Functor>()) {}
-
-  // Takes ownership of functor.
-  explicit AutoDiffManifold(Functor* functor) : functor_(functor) {}
-
-  int AmbientSize() const override { return kAmbientSize; }
-  int TangentSize() const override { return kTangentSize; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override {
-    return functor_->Plus(x, delta, x_plus_delta);
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const override;
-
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override {
-    return functor_->Minus(y, x, y_minus_x);
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const override;
-
-  const Functor& functor() const { return *functor_; }
-
- private:
-  std::unique_ptr<Functor> functor_;
-};
-
-namespace internal {
-
-// The following two helper structs are needed to interface the Plus and Minus
-// methods of the ManifoldFunctor with the automatic differentiation which
-// expects a Functor with operator().
-template <typename Functor>
-struct PlusWrapper {
-  explicit PlusWrapper(const Functor& functor) : functor(functor) {}
-  template <typename T>
-  bool operator()(const T* x, const T* delta, T* x_plus_delta) const {
-    return functor.Plus(x, delta, x_plus_delta);
-  }
-  const Functor& functor;
-};
-
-template <typename Functor>
-struct MinusWrapper {
-  explicit MinusWrapper(const Functor& functor) : functor(functor) {}
-  template <typename T>
-  bool operator()(const T* y, const T* x, T* y_minus_x) const {
-    return functor.Minus(y, x, y_minus_x);
-  }
-  const Functor& functor;
-};
-}  // namespace internal
-
-template <typename Functor, int kAmbientSize, int kTangentSize>
-bool AutoDiffManifold<Functor, kAmbientSize, kTangentSize>::PlusJacobian(
-    const double* x, double* jacobian) const {
-  double zero_delta[kTangentSize];
-  for (int i = 0; i < kTangentSize; ++i) {
-    zero_delta[i] = 0.0;
-  }
-
-  double x_plus_delta[kAmbientSize];
-  for (int i = 0; i < kAmbientSize; ++i) {
-    x_plus_delta[i] = 0.0;
-  }
-
-  const double* parameter_ptrs[2] = {x, zero_delta};
-
-  // PlusJacobian is D_2 Plus(x,0) so we only need to compute the Jacobian
-  // w.r.t. the second argument.
-  double* jacobian_ptrs[2] = {nullptr, jacobian};
-  return internal::AutoDifferentiate<
-      kAmbientSize,
-      internal::StaticParameterDims<kAmbientSize, kTangentSize>>(
-      internal::PlusWrapper<Functor>(*functor_),
-      parameter_ptrs,
-      kAmbientSize,
-      x_plus_delta,
-      jacobian_ptrs);
-}
-
-template <typename Functor, int kAmbientSize, int kTangentSize>
-bool AutoDiffManifold<Functor, kAmbientSize, kTangentSize>::MinusJacobian(
-    const double* x, double* jacobian) const {
-  double y_minus_x[kTangentSize];
-  for (int i = 0; i < kTangentSize; ++i) {
-    y_minus_x[i] = 0.0;
-  }
-
-  const double* parameter_ptrs[2] = {x, x};
-
-  // MinusJacobian is D_1 Minus(x,x), so we only need to compute the Jacobian
-  // w.r.t. the first argument.
-  double* jacobian_ptrs[2] = {jacobian, nullptr};
-  return internal::AutoDifferentiate<
-      kTangentSize,
-      internal::StaticParameterDims<kAmbientSize, kAmbientSize>>(
-      internal::MinusWrapper<Functor>(*functor_),
-      parameter_ptrs,
-      kTangentSize,
-      y_minus_x,
-      jacobian_ptrs);
-}
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_AUTODIFF_MANIFOLD_H_
diff --git a/third_party/ceres/include/ceres/c_api.h b/third_party/ceres/include/ceres/c_api.h
deleted file mode 100644
index 30bcaaf..0000000
--- a/third_party/ceres/include/ceres/c_api.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Ceres Solver - A fast non-linear least squares minimizer
- * Copyright 2023 Google Inc. All rights reserved.
- * http://ceres-solver.org/
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright notice,
- *   this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright notice,
- *   this list of conditions and the following disclaimer in the documentation
- *   and/or other materials provided with the distribution.
- * - Neither the name of Google Inc. nor the names of its contributors may be
- *   used to endorse or promote products derived from this software without
- *   specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Author: mierle@gmail.com (Keir Mierle)
- *
- * A minimal C API for Ceres. Not all functionality is included. This API is
- * not intended for clients of Ceres, but is instead intended for easing the
- * process of binding Ceres to other languages.
- *
- * Currently this is a work in progress.
- */
-
-#ifndef CERES_PUBLIC_C_API_H_
-#define CERES_PUBLIC_C_API_H_
-
-// clang-format off
-#include "ceres/internal/export.h"
-#include "ceres/internal/disable_warnings.h"
-// clang-format on
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Init the Ceres private data. Must be called before anything else. */
-CERES_EXPORT void ceres_init();
-
-/* Equivalent to CostFunction::Evaluate() in the C++ API.
- *
- * The user may keep private information inside the opaque user_data object.
- * The pointer here is the same one passed in the ceres_add_residual_block().
- */
-typedef int (*ceres_cost_function_t)(void* user_data,
-                                     double** parameters,
-                                     double* residuals,
-                                     double** jacobians);
-
-/* Equivalent to LossFunction::Evaluate() from the C++ API. */
-typedef void (*ceres_loss_function_t)(void* user_data,
-                                      double squared_norm,
-                                      double out[3]);
-
-/* Create callback data for Ceres' stock loss functions.
- *
- * Ceres has several loss functions available by default, and these functions
- * expose those to the C API. To use the stock loss functions, call
- * ceres_create_*_loss_data(), which internally creates an instance of one of
- * the stock loss functions (for example ceres::CauchyLoss), and pass the
- * returned "loss_function_data" along with the ceres_stock_loss_function to
- * ceres_add_residual_block().
- *
- * For example:
- *
- *   void* cauchy_loss_function_data =
- *       ceres_create_cauchy_loss_function_data(1.2, 0.0);
- *   ceres_problem_add_residual_block(
- *       problem,
- *       my_cost_function,
- *       my_cost_function_data,
- *       ceres_stock_loss_function,
- *       cauchy_loss_function_data,
- *       1,
- *       2,
- *       parameter_sizes,
- *       parameter_pointers);
- *    ...
- *    ceres_free_stock_loss_function_data(cauchy_loss_function_data);
- *
- * See loss_function.h for the details of each loss function.
- */
-CERES_EXPORT void* ceres_create_huber_loss_function_data(double a);
-CERES_EXPORT void* ceres_create_softl1_loss_function_data(double a);
-CERES_EXPORT void* ceres_create_cauchy_loss_function_data(double a);
-CERES_EXPORT void* ceres_create_arctan_loss_function_data(double a);
-CERES_EXPORT void* ceres_create_tolerant_loss_function_data(double a, double b);
-
-/* Free the given stock loss function data. */
-CERES_EXPORT void ceres_free_stock_loss_function_data(void* loss_function_data);
-
-/* This is an implementation of ceres_loss_function_t contained within Ceres
- * itself, intended as a way to access the various stock Ceres loss functions
- * from the C API. This should be passed to ceres_add_residual() below, in
- * combination with a user_data pointer generated by
- * ceres_create_stock_loss_function() above. */
-CERES_EXPORT void ceres_stock_loss_function(void* user_data,
-                                            double squared_norm,
-                                            double out[3]);
-
-/* Equivalent to Problem from the C++ API. */
-struct ceres_problem_s;
-typedef struct ceres_problem_s ceres_problem_t;
-
-struct ceres_residual_block_id_s;
-typedef struct ceres_residual_block_id_s ceres_residual_block_id_t;
-
-/* Create and destroy a problem */
-/* TODO(keir): Add options for the problem. */
-CERES_EXPORT ceres_problem_t* ceres_create_problem();
-CERES_EXPORT void ceres_free_problem(ceres_problem_t* problem);
-
-/* Add a residual block. */
-CERES_EXPORT ceres_residual_block_id_t* ceres_problem_add_residual_block(
-    ceres_problem_t* problem,
-    ceres_cost_function_t cost_function,
-    void* cost_function_data,
-    ceres_loss_function_t loss_function,
-    void* loss_function_data,
-    int num_residuals,
-    int num_parameter_blocks,
-    int* parameter_block_sizes,
-    double** parameters);
-
-CERES_EXPORT void ceres_solve(ceres_problem_t* problem);
-
-/* TODO(keir): Figure out a way to pass a config in. */
-
-#ifdef __cplusplus
-}
-#endif
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif /* CERES_PUBLIC_C_API_H_ */
diff --git a/third_party/ceres/include/ceres/ceres.h b/third_party/ceres/include/ceres/ceres.h
deleted file mode 100644
index 51f9d89..0000000
--- a/third_party/ceres/include/ceres/ceres.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// This is a forwarding header containing the public symbols exported from
-// Ceres. Anything in the "ceres" namespace is available for use.
-
-#ifndef CERES_PUBLIC_CERES_H_
-#define CERES_PUBLIC_CERES_H_
-
-// IWYU pragma: begin_exports
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/autodiff_first_order_function.h"
-#include "ceres/autodiff_manifold.h"
-#include "ceres/conditioned_cost_function.h"
-#include "ceres/constants.h"
-#include "ceres/context.h"
-#include "ceres/cost_function.h"
-#include "ceres/cost_function_to_functor.h"
-#include "ceres/covariance.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/dynamic_autodiff_cost_function.h"
-#include "ceres/dynamic_cost_function.h"
-#include "ceres/dynamic_cost_function_to_functor.h"
-#include "ceres/dynamic_numeric_diff_cost_function.h"
-#include "ceres/evaluation_callback.h"
-#include "ceres/first_order_function.h"
-#include "ceres/gradient_checker.h"
-#include "ceres/gradient_problem.h"
-#include "ceres/gradient_problem_solver.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/jet.h"
-#include "ceres/line_manifold.h"
-#include "ceres/loss_function.h"
-#include "ceres/manifold.h"
-#include "ceres/numeric_diff_cost_function.h"
-#include "ceres/numeric_diff_first_order_function.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/ordered_groups.h"
-#include "ceres/problem.h"
-#include "ceres/product_manifold.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/solver.h"
-#include "ceres/sphere_manifold.h"
-#include "ceres/types.h"
-#include "ceres/version.h"
-// IWYU pragma: end_exports
-
-#endif  // CERES_PUBLIC_CERES_H_
diff --git a/third_party/ceres/include/ceres/conditioned_cost_function.h b/third_party/ceres/include/ceres/conditioned_cost_function.h
deleted file mode 100644
index 1edc006..0000000
--- a/third_party/ceres/include/ceres/conditioned_cost_function.h
+++ /dev/null
@@ -1,101 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-//
-// This file contains a cost function that can apply a transformation to
-// each residual value before they are square-summed.
-
-#ifndef CERES_PUBLIC_CONDITIONED_COST_FUNCTION_H_
-#define CERES_PUBLIC_CONDITIONED_COST_FUNCTION_H_
-
-#include <memory>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-// This class allows you to apply different conditioning to the residual
-// values of a wrapped cost function. An example where this is useful is
-// where you have an existing cost function that produces N values, but you
-// want the total cost to be something other than just the sum of these
-// squared values - maybe you want to apply a different scaling to some
-// values, to change their contribution to the cost.
-//
-// Usage:
-//
-//   // my_cost_function produces N residuals
-//   CostFunction* my_cost_function = ...
-//   CHECK_EQ(N, my_cost_function->num_residuals());
-//   vector<CostFunction*> conditioners;
-//
-//   // Make N 1x1 cost functions (1 parameter, 1 residual)
-//   CostFunction* f_1 = ...
-//   conditioners.push_back(f_1);
-//   ...
-//   CostFunction* f_N = ...
-//   conditioners.push_back(f_N);
-//   ConditionedCostFunction* ccf =
-//     new ConditionedCostFunction(my_cost_function, conditioners);
-//
-// Now ccf's residual i (i=0..N-1) will be passed though the i'th conditioner.
-//
-//   ccf_residual[i] = f_i(my_cost_function_residual[i])
-//
-// and the Jacobian will be affected appropriately.
-class CERES_EXPORT ConditionedCostFunction final : public CostFunction {
- public:
-  // Builds a cost function based on a wrapped cost function, and a
-  // per-residual conditioner. Takes ownership of all of the wrapped cost
-  // functions, or not, depending on the ownership parameter. Conditioners
-  // may be nullptr, in which case the corresponding residual is not modified.
-  //
-  // The conditioners can repeat.
-  ConditionedCostFunction(CostFunction* wrapped_cost_function,
-                          const std::vector<CostFunction*>& conditioners,
-                          Ownership ownership);
-  ~ConditionedCostFunction() override;
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override;
-
- private:
-  std::unique_ptr<CostFunction> wrapped_cost_function_;
-  std::vector<CostFunction*> conditioners_;
-  Ownership ownership_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_CONDITIONED_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/constants.h b/third_party/ceres/include/ceres/constants.h
deleted file mode 100644
index 584b669..0000000
--- a/third_party/ceres/include/ceres/constants.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: hellston20a@gmail.com (H S Helson Go)
-
-#ifndef CERES_PUBLIC_CONSTANTS_H_
-#define CERES_PUBLIC_CONSTANTS_H_
-
-// TODO(HSHelson): This header should no longer be necessary once C++20's
-// <numbers> (e.g. std::numbers::pi_v) becomes usable
-namespace ceres::constants {
-template <typename T>
-inline constexpr T pi_v(3.141592653589793238462643383279502884);
-inline constexpr double pi = pi_v<double>;
-}  // namespace ceres::constants
-
-#endif  // CERES_PUBLIC_CONSTANTS_H_
diff --git a/third_party/ceres/include/ceres/context.h b/third_party/ceres/include/ceres/context.h
deleted file mode 100644
index fe18726..0000000
--- a/third_party/ceres/include/ceres/context.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef CERES_PUBLIC_CONTEXT_H_
-#define CERES_PUBLIC_CONTEXT_H_
-
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// A global context for processing data in Ceres.  This provides a mechanism to
-// allow Ceres to reuse items that are expensive to create between multiple
-// calls; for example, thread pools.  The same Context can be used on multiple
-// Problems, either serially or in parallel. When using it with multiple
-// Problems at the same time, they may end up contending for resources
-// (e.g. threads) managed by the Context.
-class CERES_EXPORT Context {
- public:
-  Context();
-  Context(const Context&) = delete;
-  void operator=(const Context&) = delete;
-
-  virtual ~Context();
-
-  // Creates a context object and the caller takes ownership.
-  static Context* Create();
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_CONTEXT_H_
diff --git a/third_party/ceres/include/ceres/cost_function.h b/third_party/ceres/include/ceres/cost_function.h
deleted file mode 100644
index 2e5b1dd..0000000
--- a/third_party/ceres/include/ceres/cost_function.h
+++ /dev/null
@@ -1,148 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.m (Keir Mierle)
-//
-// This is the interface through which the least squares solver accesses the
-// residual and Jacobian of the least squares problem. Users are expected to
-// subclass CostFunction to define their own terms in the least squares problem.
-//
-// It is recommended that users define templated residual functors for use as
-// arguments for AutoDiffCostFunction (see autodiff_cost_function.h), instead of
-// directly implementing the CostFunction interface. This often results in both
-// shorter code and faster execution than hand-coded derivatives. However,
-// specialized cases may demand direct implementation of the lower-level
-// CostFunction interface; for example, this is true when calling legacy code
-// which is not templated on numeric types.
-
-#ifndef CERES_PUBLIC_COST_FUNCTION_H_
-#define CERES_PUBLIC_COST_FUNCTION_H_
-
-#include <cstdint>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// This class implements the computation of the cost (a.k.a. residual) terms as
-// a function of the input (control) variables, and is the interface for users
-// to describe their least squares problem to Ceres. In other words, this is the
-// modeling layer between users and the Ceres optimizer. The signature of the
-// function (number and sizes of input parameter blocks and number of outputs)
-// is stored in parameter_block_sizes_ and num_residuals_ respectively. User
-// code inheriting from this class is expected to set these two members with the
-// corresponding accessors. This information will be verified by the Problem
-// when added with AddResidualBlock().
-class CERES_EXPORT CostFunction {
- public:
-  CostFunction();
-  CostFunction(const CostFunction&) = delete;
-  CostFunction& operator=(const CostFunction&) = delete;
-
-  virtual ~CostFunction();
-
-  // Inputs:
-  //
-  // parameters is an array of pointers to arrays containing the
-  // various parameter blocks. parameters has the same number of
-  // elements as parameter_block_sizes_.  Parameter blocks are in the
-  // same order as parameter_block_sizes_.i.e.,
-  //
-  //   parameters_[i] = double[parameter_block_sizes_[i]]
-  //
-  // Outputs:
-  //
-  // residuals is an array of size num_residuals_.
-  //
-  // jacobians is an array of size parameter_block_sizes_ containing
-  // pointers to storage for jacobian blocks corresponding to each
-  // parameter block. Jacobian blocks are in the same order as
-  // parameter_block_sizes, i.e. jacobians[i], is an
-  // array that contains num_residuals_* parameter_block_sizes_[i]
-  // elements. Each jacobian block is stored in row-major order, i.e.,
-  //
-  //   jacobians[i][r*parameter_block_size_[i] + c] =
-  //                              d residual[r] / d parameters[i][c]
-  //
-  // If jacobians is nullptr, then no derivatives are returned; this is
-  // the case when computing cost only. If jacobians[i] is nullptr, then
-  // the jacobian block corresponding to the i'th parameter block must
-  // not to be returned.
-  //
-  // The return value indicates whether the computation of the
-  // residuals and/or jacobians was successful or not.
-  //
-  // This can be used to communicate numerical failures in jacobian
-  // computations for instance.
-  //
-  // A more interesting and common use is to impose constraints on the
-  // parameters. If the initial values of the parameter blocks satisfy
-  // the constraints, then returning false whenever the constraints
-  // are not satisfied will prevent the solver from moving into the
-  // infeasible region. This is not a very sophisticated mechanism for
-  // enforcing constraints, but is often good enough.
-  //
-  // Note that it is important that the initial values of the
-  // parameter block must be feasible, otherwise the solver will
-  // declare a numerical problem at iteration 0.
-  virtual bool Evaluate(double const* const* parameters,
-                        double* residuals,
-                        double** jacobians) const = 0;
-
-  const std::vector<int32_t>& parameter_block_sizes() const {
-    return parameter_block_sizes_;
-  }
-
-  int num_residuals() const { return num_residuals_; }
-
- protected:
-  // Prevent moving through the base class
-  CostFunction(CostFunction&& other) noexcept;
-  CostFunction& operator=(CostFunction&& other) noexcept;
-
-  std::vector<int32_t>* mutable_parameter_block_sizes() {
-    return &parameter_block_sizes_;
-  }
-
-  void set_num_residuals(int num_residuals) { num_residuals_ = num_residuals; }
-
- private:
-  // Cost function signature metadata: number of inputs & their sizes,
-  // number of outputs (residuals).
-  std::vector<int32_t> parameter_block_sizes_;
-  int num_residuals_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/cost_function_to_functor.h b/third_party/ceres/include/ceres/cost_function_to_functor.h
deleted file mode 100644
index 573508e..0000000
--- a/third_party/ceres/include/ceres/cost_function_to_functor.h
+++ /dev/null
@@ -1,173 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// CostFunctionToFunctor is an adapter class that allows users to use
-// SizedCostFunction objects in templated functors which are to be used for
-// automatic differentiation. This allows the user to seamlessly mix
-// analytic, numeric and automatic differentiation.
-//
-// For example, let us assume that
-//
-//  class IntrinsicProjection : public SizedCostFunction<2, 5, 3> {
-//    public:
-//      IntrinsicProjection(const double* observation);
-//      bool Evaluate(double const* const* parameters,
-//                    double* residuals,
-//                    double** jacobians) const override;
-//  };
-//
-// is a cost function that implements the projection of a point in its
-// local coordinate system onto its image plane and subtracts it from
-// the observed point projection. It can compute its residual and
-// jacobians either via analytic or numerical differentiation.
-//
-// Now we would like to compose the action of this CostFunction with
-// the action of camera extrinsics, i.e., rotation and
-// translation. Say we have a templated function
-//
-//   template<typename T>
-//   void RotateAndTranslatePoint(const T* rotation,
-//                                const T* translation,
-//                                const T* point,
-//                                T* result);
-//
-// Then we can now do the following,
-//
-// struct CameraProjection {
-//   CameraProjection(const double* observation)
-//       : intrinsic_projection_(new IntrinsicProjection(observation)) {
-//   }
-//   template <typename T>
-//   bool operator()(const T* rotation,
-//                   const T* translation,
-//                   const T* intrinsics,
-//                   const T* point,
-//                   T* residual) const {
-//     T transformed_point[3];
-//     RotateAndTranslatePoint(rotation, translation, point, transformed_point);
-//
-//     // Note that we call intrinsic_projection_, just like it was
-//     // any other templated functor.
-//
-//     return intrinsic_projection_(intrinsics, transformed_point, residual);
-//   }
-//
-//  private:
-//   CostFunctionToFunctor<2,5,3> intrinsic_projection_;
-// };
-
-#ifndef CERES_PUBLIC_COST_FUNCTION_TO_FUNCTOR_H_
-#define CERES_PUBLIC_COST_FUNCTION_TO_FUNCTOR_H_
-
-#include <cstdint>
-#include <numeric>
-#include <tuple>
-#include <utility>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/dynamic_cost_function_to_functor.h"
-#include "ceres/internal/parameter_dims.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-template <int kNumResiduals, int... Ns>
-class CostFunctionToFunctor {
- public:
-  // Takes ownership of cost_function.
-  explicit CostFunctionToFunctor(CostFunction* cost_function)
-      : CostFunctionToFunctor{std::unique_ptr<CostFunction>{cost_function}} {}
-
-  // Takes ownership of cost_function.
-  explicit CostFunctionToFunctor(std::unique_ptr<CostFunction> cost_function)
-      : cost_functor_(std::move(cost_function)) {
-    CHECK(cost_functor_.function() != nullptr);
-    CHECK(kNumResiduals > 0 || kNumResiduals == DYNAMIC);
-
-    const std::vector<int32_t>& parameter_block_sizes =
-        cost_functor_.function()->parameter_block_sizes();
-    const int num_parameter_blocks = ParameterDims::kNumParameterBlocks;
-    CHECK_EQ(static_cast<int>(parameter_block_sizes.size()),
-             num_parameter_blocks);
-
-    if (parameter_block_sizes.size() == num_parameter_blocks) {
-      for (int block = 0; block < num_parameter_blocks; ++block) {
-        CHECK_EQ(ParameterDims::GetDim(block), parameter_block_sizes[block])
-            << "Parameter block size mismatch. The specified static parameter "
-               "block dimension does not match the one from the cost function.";
-      }
-    }
-
-    CHECK_EQ(accumulate(
-                 parameter_block_sizes.begin(), parameter_block_sizes.end(), 0),
-             ParameterDims::kNumParameters);
-  }
-
-  template <typename T, typename... Ts>
-  bool operator()(const T* p1, Ts*... ps) const {
-    // Add one because of residual block.
-    static_assert(sizeof...(Ts) + 1 == ParameterDims::kNumParameterBlocks + 1,
-                  "Invalid number of parameter blocks specified.");
-
-    auto params = std::make_tuple(p1, ps...);
-
-    // Extract residual pointer from params. The residual pointer is the
-    // last pointer.
-    constexpr int kResidualIndex = ParameterDims::kNumParameterBlocks;
-    T* residuals = std::get<kResidualIndex>(params);
-
-    // Extract parameter block pointers from params.
-    using Indices =
-        std::make_integer_sequence<int, ParameterDims::kNumParameterBlocks>;
-    std::array<const T*, ParameterDims::kNumParameterBlocks> parameter_blocks =
-        GetParameterPointers<T>(params, Indices());
-
-    return cost_functor_(parameter_blocks.data(), residuals);
-  }
-
- private:
-  using ParameterDims = internal::StaticParameterDims<Ns...>;
-
-  template <typename T, typename Tuple, int... Indices>
-  static std::array<const T*, ParameterDims::kNumParameterBlocks>
-  GetParameterPointers(const Tuple& paramPointers,
-                       std::integer_sequence<int, Indices...>) {
-    return std::array<const T*, ParameterDims::kNumParameterBlocks>{
-        {std::get<Indices>(paramPointers)...}};
-  }
-
-  DynamicCostFunctionToFunctor cost_functor_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_COST_FUNCTION_TO_FUNCTOR_H_
diff --git a/third_party/ceres/include/ceres/covariance.h b/third_party/ceres/include/ceres/covariance.h
deleted file mode 100644
index d477f31..0000000
--- a/third_party/ceres/include/ceres/covariance.h
+++ /dev/null
@@ -1,470 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_COVARIANCE_H_
-#define CERES_PUBLIC_COVARIANCE_H_
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/config.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-class Problem;
-
-namespace internal {
-class CovarianceImpl;
-}  // namespace internal
-
-// WARNING
-// =======
-// It is very easy to use this class incorrectly without understanding
-// the underlying mathematics. Please read and understand the
-// documentation completely before attempting to use it.
-//
-//
-// This class allows the user to evaluate the covariance for a
-// non-linear least squares problem and provides random access to its
-// blocks
-//
-// Background
-// ==========
-// One way to assess the quality of the solution returned by a
-// non-linear least squares solver is to analyze the covariance of the
-// solution.
-//
-// Let us consider the non-linear regression problem
-//
-//   y = f(x) + N(0, I)
-//
-// i.e., the observation y is a random non-linear function of the
-// independent variable x with mean f(x) and identity covariance. Then
-// the maximum likelihood estimate of x given observations y is the
-// solution to the non-linear least squares problem:
-//
-//  x* = arg min_x |f(x) - y|^2
-//
-// And the covariance of x* is given by
-//
-//  C(x*) = inverse[J'(x*)J(x*)]
-//
-// Here J(x*) is the Jacobian of f at x*. The above formula assumes
-// that J(x*) has full column rank.
-//
-// If J(x*) is rank deficient, then the covariance matrix C(x*) is
-// also rank deficient and is given by
-//
-//  C(x*) =  pseudoinverse[J'(x*)J(x*)]
-//
-// Note that in the above, we assumed that the covariance
-// matrix for y was identity. This is an important assumption. If this
-// is not the case and we have
-//
-//  y = f(x) + N(0, S)
-//
-// Where S is a positive semi-definite matrix denoting the covariance
-// of y, then the maximum likelihood problem to be solved is
-//
-//  x* = arg min_x f'(x) inverse[S] f(x)
-//
-// and the corresponding covariance estimate of x* is given by
-//
-//  C(x*) = inverse[J'(x*) inverse[S] J(x*)]
-//
-// So, if it is the case that the observations being fitted to have a
-// covariance matrix not equal to identity, then it is the user's
-// responsibility that the corresponding cost functions are correctly
-// scaled, e.g. in the above case the cost function for this problem
-// should evaluate S^{-1/2} f(x) instead of just f(x), where S^{-1/2}
-// is the inverse square root of the covariance matrix S.
-//
-// This class allows the user to evaluate the covariance for a
-// non-linear least squares problem and provides random access to its
-// blocks. The computation assumes that the CostFunctions compute
-// residuals such that their covariance is identity.
-//
-// Since the computation of the covariance matrix requires computing
-// the inverse of a potentially large matrix, this can involve a
-// rather large amount of time and memory. However, it is usually the
-// case that the user is only interested in a small part of the
-// covariance matrix. Quite often just the block diagonal. This class
-// allows the user to specify the parts of the covariance matrix that
-// she is interested in and then uses this information to only compute
-// and store those parts of the covariance matrix.
-//
-// Rank of the Jacobian
-// --------------------
-// As we noted above, if the jacobian is rank deficient, then the
-// inverse of J'J is not defined and instead a pseudo inverse needs to
-// be computed.
-//
-// The rank deficiency in J can be structural -- columns which are
-// always known to be zero or numerical -- depending on the exact
-// values in the Jacobian.
-//
-// Structural rank deficiency occurs when the problem contains
-// parameter blocks that are constant. This class correctly handles
-// structural rank deficiency like that.
-//
-// Numerical rank deficiency, where the rank of the matrix cannot be
-// predicted by its sparsity structure and requires looking at its
-// numerical values is more complicated. Here again there are two
-// cases.
-//
-//   a. The rank deficiency arises from overparameterization. e.g., a
-//   four dimensional quaternion used to parameterize SO(3), which is
-//   a three dimensional manifold. In cases like this, the user should
-//   use an appropriate Manifold. Not only will this lead
-//   to better numerical behaviour of the Solver, it will also expose
-//   the rank deficiency to the Covariance object so that it can
-//   handle it correctly.
-//
-//   b. More general numerical rank deficiency in the Jacobian
-//   requires the computation of the so called Singular Value
-//   Decomposition (SVD) of J'J. We do not know how to do this for
-//   large sparse matrices efficiently. For small and moderate sized
-//   problems this is done using dense linear algebra.
-//
-// Gauge Invariance
-// ----------------
-// In structure from motion (3D reconstruction) problems, the
-// reconstruction is ambiguous up to a similarity transform. This is
-// known as a Gauge Ambiguity. Handling Gauges correctly requires the
-// use of SVD or custom inversion algorithms. For small problems the
-// user can use the dense algorithm. For more details see
-//
-// Ken-ichi Kanatani, Daniel D. Morris: Gauges and gauge
-// transformations for uncertainty description of geometric structure
-// with indeterminacy. IEEE Transactions on Information Theory 47(5):
-// 2017-2028 (2001)
-//
-// Example Usage
-// =============
-//
-//  double x[3];
-//  double y[2];
-//
-//  Problem problem;
-//  problem.AddParameterBlock(x, 3);
-//  problem.AddParameterBlock(y, 2);
-//  <Build Problem>
-//  <Solve Problem>
-//
-//  Covariance::Options options;
-//  Covariance covariance(options);
-//
-//  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-//  covariance_blocks.push_back(make_pair(x, x));
-//  covariance_blocks.push_back(make_pair(y, y));
-//  covariance_blocks.push_back(make_pair(x, y));
-//
-//  CHECK(covariance.Compute(covariance_blocks, &problem));
-//
-//  double covariance_xx[3 * 3];
-//  double covariance_yy[2 * 2];
-//  double covariance_xy[3 * 2];
-//  covariance.GetCovarianceBlock(x, x, covariance_xx)
-//  covariance.GetCovarianceBlock(y, y, covariance_yy)
-//  covariance.GetCovarianceBlock(x, y, covariance_xy)
-//
-class CERES_EXPORT Covariance {
- public:
-  struct CERES_EXPORT Options {
-    // Sparse linear algebra library to use when a sparse matrix
-    // factorization is being used to compute the covariance matrix.
-    //
-    // Currently this only applies to SPARSE_QR.
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type =
-#if !defined(CERES_NO_SUITESPARSE)
-        SUITE_SPARSE;
-#else
-        // Eigen's QR factorization is always available.
-        EIGEN_SPARSE;
-#endif
-
-    // Ceres supports two different algorithms for covariance
-    // estimation, which represent different tradeoffs in speed,
-    // accuracy and reliability.
-    //
-    // 1. DENSE_SVD uses Eigen's JacobiSVD to perform the
-    //    computations. It computes the singular value decomposition
-    //
-    //      U * D * V' = J
-    //
-    //    and then uses it to compute the pseudo inverse of J'J as
-    //
-    //      pseudoinverse[J'J] = V * pseudoinverse[D^2] * V'
-    //
-    //    It is an accurate but slow method and should only be used
-    //    for small to moderate sized problems. It can handle
-    //    full-rank as well as rank deficient Jacobians.
-    //
-    // 2. SPARSE_QR uses the sparse QR factorization algorithm
-    //    to compute the decomposition
-    //
-    //      Q * R = J
-    //
-    //    [J'J]^-1 = [R'*R]^-1
-    //
-    // SPARSE_QR is not capable of computing the covariance if the
-    // Jacobian is rank deficient. Depending on the value of
-    // Covariance::Options::sparse_linear_algebra_library_type, either
-    // Eigen's Sparse QR factorization algorithm will be used or
-    // SuiteSparse's high performance SuiteSparseQR algorithm will be
-    // used.
-    CovarianceAlgorithmType algorithm_type = SPARSE_QR;
-
-    // During QR factorization, if a column with Euclidean norm less
-    // than column_pivot_threshold is encountered it is treated as
-    // zero.
-    //
-    // If column_pivot_threshold < 0, then an automatic default value
-    // of 20*(m+n)*eps*sqrt(max(diag(J’*J))) is used. Here m and n are
-    // the number of rows and columns of the Jacobian (J)
-    // respectively.
-    //
-    // This is an advanced option meant for users who know enough
-    // about their Jacobian matrices that they can determine a value
-    // better than the default.
-    double column_pivot_threshold = -1;
-
-    // If the Jacobian matrix is near singular, then inverting J'J
-    // will result in unreliable results, e.g, if
-    //
-    //   J = [1.0 1.0         ]
-    //       [1.0 1.0000001   ]
-    //
-    // which is essentially a rank deficient matrix, we have
-    //
-    //   inv(J'J) = [ 2.0471e+14  -2.0471e+14]
-    //              [-2.0471e+14   2.0471e+14]
-    //
-    // This is not a useful result. Therefore, by default
-    // Covariance::Compute will return false if a rank deficient
-    // Jacobian is encountered. How rank deficiency is detected
-    // depends on the algorithm being used.
-    //
-    // 1. DENSE_SVD
-    //
-    //      min_sigma / max_sigma < sqrt(min_reciprocal_condition_number)
-    //
-    //    where min_sigma and max_sigma are the minimum and maximum
-    //    singular values of J respectively.
-    //
-    // 2. SPARSE_QR
-    //
-    //      rank(J) < num_col(J)
-    //
-    //   Here rank(J) is the estimate of the rank of J returned by the
-    //   sparse QR factorization algorithm. It is a fairly reliable
-    //   indication of rank deficiency.
-    //
-    double min_reciprocal_condition_number = 1e-14;
-
-    // When using DENSE_SVD, the user has more control in dealing with
-    // singular and near singular covariance matrices.
-    //
-    // As mentioned above, when the covariance matrix is near
-    // singular, instead of computing the inverse of J'J, the
-    // Moore-Penrose pseudoinverse of J'J should be computed.
-    //
-    // If J'J has the eigen decomposition (lambda_i, e_i), where
-    // lambda_i is the i^th eigenvalue and e_i is the corresponding
-    // eigenvector, then the inverse of J'J is
-    //
-    //   inverse[J'J] = sum_i e_i e_i' / lambda_i
-    //
-    // and computing the pseudo inverse involves dropping terms from
-    // this sum that correspond to small eigenvalues.
-    //
-    // How terms are dropped is controlled by
-    // min_reciprocal_condition_number and null_space_rank.
-    //
-    // If null_space_rank is non-negative, then the smallest
-    // null_space_rank eigenvalue/eigenvectors are dropped
-    // irrespective of the magnitude of lambda_i. If the ratio of the
-    // smallest non-zero eigenvalue to the largest eigenvalue in the
-    // truncated matrix is still below
-    // min_reciprocal_condition_number, then the Covariance::Compute()
-    // will fail and return false.
-    //
-    // Setting null_space_rank = -1 drops all terms for which
-    //
-    //   lambda_i / lambda_max < min_reciprocal_condition_number.
-    //
-    // This option has no effect on the SUITE_SPARSE_QR and
-    // EIGEN_SPARSE_QR algorithms.
-    int null_space_rank = 0;
-
-    int num_threads = 1;
-
-    // Even though the residual blocks in the problem may contain loss
-    // functions, setting apply_loss_function to false will turn off
-    // the application of the loss function to the output of the cost
-    // function and in turn its effect on the covariance.
-    //
-    // TODO(sameergaarwal): Expand this based on Jim's experiments.
-    bool apply_loss_function = true;
-  };
-
-  explicit Covariance(const Options& options);
-  ~Covariance();
-
-  // Compute a part of the covariance matrix.
-  //
-  // The vector covariance_blocks, indexes into the covariance matrix
-  // block-wise using pairs of parameter blocks. This allows the
-  // covariance estimation algorithm to only compute and store these
-  // blocks.
-  //
-  // Since the covariance matrix is symmetric, if the user passes
-  // (block1, block2), then GetCovarianceBlock can be called with
-  // block1, block2 as well as block2, block1.
-  //
-  // covariance_blocks cannot contain duplicates. Bad things will
-  // happen if they do.
-  //
-  // Note that the list of covariance_blocks is only used to determine
-  // what parts of the covariance matrix are computed. The full
-  // Jacobian is used to do the computation, i.e. they do not have an
-  // impact on what part of the Jacobian is used for computation.
-  //
-  // The return value indicates the success or failure of the
-  // covariance computation. Please see the documentation for
-  // Covariance::Options for more on the conditions under which this
-  // function returns false.
-  bool Compute(const std::vector<std::pair<const double*, const double*>>&
-                   covariance_blocks,
-               Problem* problem);
-
-  // Compute a part of the covariance matrix.
-  //
-  // The vector parameter_blocks contains the parameter blocks that
-  // are used for computing the covariance matrix. From this vector
-  // all covariance pairs are generated. This allows the covariance
-  // estimation algorithm to only compute and store these blocks.
-  //
-  // parameter_blocks cannot contain duplicates. Bad things will
-  // happen if they do.
-  //
-  // Note that the list of covariance_blocks is only used to determine
-  // what parts of the covariance matrix are computed. The full
-  // Jacobian is used to do the computation, i.e. they do not have an
-  // impact on what part of the Jacobian is used for computation.
-  //
-  // The return value indicates the success or failure of the
-  // covariance computation. Please see the documentation for
-  // Covariance::Options for more on the conditions under which this
-  // function returns false.
-  bool Compute(const std::vector<const double*>& parameter_blocks,
-               Problem* problem);
-
-  // Return the block of the cross-covariance matrix corresponding to
-  // parameter_block1 and parameter_block2.
-  //
-  // Compute must be called before the first call to
-  // GetCovarianceBlock and the pair <parameter_block1,
-  // parameter_block2> OR the pair <parameter_block2,
-  // parameter_block1> must have been present in the vector
-  // covariance_blocks when Compute was called. Otherwise
-  // GetCovarianceBlock will return false.
-  //
-  // covariance_block must point to a memory location that can store a
-  // parameter_block1_size x parameter_block2_size matrix. The
-  // returned covariance will be a row-major matrix.
-  bool GetCovarianceBlock(const double* parameter_block1,
-                          const double* parameter_block2,
-                          double* covariance_block) const;
-
-  // Returns the block of the cross-covariance in the tangent space if a
-  // manifold is associated with either parameter block; else returns
-  // cross-covariance in the ambient space.
-  //
-  // Compute must be called before the first call to
-  // GetCovarianceBlock and the pair <parameter_block1,
-  // parameter_block2> OR the pair <parameter_block2,
-  // parameter_block1> must have been present in the vector
-  // covariance_blocks when Compute was called. Otherwise
-  // GetCovarianceBlock will return false.
-  //
-  // covariance_block must point to a memory location that can store a
-  // parameter_block1_local_size x parameter_block2_local_size matrix. The
-  // returned covariance will be a row-major matrix.
-  bool GetCovarianceBlockInTangentSpace(const double* parameter_block1,
-                                        const double* parameter_block2,
-                                        double* covariance_block) const;
-
-  // Return the covariance matrix corresponding to all parameter_blocks.
-  //
-  // Compute must be called before calling GetCovarianceMatrix and all
-  // parameter_blocks must have been present in the vector
-  // parameter_blocks when Compute was called. Otherwise
-  // GetCovarianceMatrix returns false.
-  //
-  // covariance_matrix must point to a memory location that can store
-  // the size of the covariance matrix. The covariance matrix will be
-  // a square matrix whose row and column count is equal to the sum of
-  // the sizes of the individual parameter blocks. The covariance
-  // matrix will be a row-major matrix.
-  bool GetCovarianceMatrix(const std::vector<const double*>& parameter_blocks,
-                           double* covariance_matrix) const;
-
-  // Return the covariance matrix corresponding to parameter_blocks
-  // in the tangent space if a manifold is associated with one of the parameter
-  // blocks else returns the covariance matrix in the ambient space.
-  //
-  // Compute must be called before calling GetCovarianceMatrix and all
-  // parameter_blocks must have been present in the vector
-  // parameters_blocks when Compute was called. Otherwise
-  // GetCovarianceMatrix returns false.
-  //
-  // covariance_matrix must point to a memory location that can store
-  // the size of the covariance matrix. The covariance matrix will be
-  // a square matrix whose row and column count is equal to the sum of
-  // the sizes of the tangent spaces of the individual parameter
-  // blocks. The covariance matrix will be a row-major matrix.
-  bool GetCovarianceMatrixInTangentSpace(
-      const std::vector<const double*>& parameter_blocks,
-      double* covariance_matrix) const;
-
- private:
-  std::unique_ptr<internal::CovarianceImpl> impl_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_COVARIANCE_H_
diff --git a/third_party/ceres/include/ceres/crs_matrix.h b/third_party/ceres/include/ceres/crs_matrix.h
deleted file mode 100644
index 787b6a3..0000000
--- a/third_party/ceres/include/ceres/crs_matrix.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_CRS_MATRIX_H_
-#define CERES_PUBLIC_CRS_MATRIX_H_
-
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// A compressed row sparse matrix used primarily for communicating the
-// Jacobian matrix to the user.
-struct CERES_EXPORT CRSMatrix {
-  CRSMatrix() = default;
-
-  int num_rows{0};
-  int num_cols{0};
-
-  // A compressed row matrix stores its contents in three arrays,
-  // rows, cols and values.
-  //
-  // rows is a num_rows + 1 sized array that points into the cols and
-  // values array. For each row i:
-  //
-  // cols[rows[i]] ... cols[rows[i + 1] - 1] are the indices of the
-  // non-zero columns of row i.
-  //
-  // values[rows[i]] .. values[rows[i + 1] - 1] are the values of the
-  // corresponding entries.
-  //
-  // cols and values contain as many entries as there are non-zeros in
-  // the matrix.
-  //
-  // e.g, consider the 3x4 sparse matrix
-  //
-  //  [ 0 10  0  4 ]
-  //  [ 0  2 -3  2 ]
-  //  [ 1  2  0  0 ]
-  //
-  // The three arrays will be:
-  //
-  //
-  //            -row0-  ---row1---  -row2-
-  //  rows   = [ 0,      2,          5,     7]
-  //  cols   = [ 1,  3,  1,  2,  3,  0,  1]
-  //  values = [10,  4,  2, -3,  2,  1,  2]
-
-  std::vector<int> cols;
-  std::vector<int> rows;
-  std::vector<double> values;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_CRS_MATRIX_H_
diff --git a/third_party/ceres/include/ceres/cubic_interpolation.h b/third_party/ceres/include/ceres/cubic_interpolation.h
deleted file mode 100644
index f165d2b..0000000
--- a/third_party/ceres/include/ceres/cubic_interpolation.h
+++ /dev/null
@@ -1,436 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_CUBIC_INTERPOLATION_H_
-#define CERES_PUBLIC_CUBIC_INTERPOLATION_H_
-
-#include "Eigen/Core"
-#include "ceres/internal/export.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// Given samples from a function sampled at four equally spaced points,
-//
-//   p0 = f(-1)
-//   p1 = f(0)
-//   p2 = f(1)
-//   p3 = f(2)
-//
-// Evaluate the cubic Hermite spline (also known as the Catmull-Rom
-// spline) at a point x that lies in the interval [0, 1].
-//
-// This is also the interpolation kernel (for the case of a = 0.5) as
-// proposed by R. Keys, in:
-//
-// "Cubic convolution interpolation for digital image processing".
-// IEEE Transactions on Acoustics, Speech, and Signal Processing
-// 29 (6): 1153-1160.
-//
-// For more details see
-//
-// http://en.wikipedia.org/wiki/Cubic_Hermite_spline
-// http://en.wikipedia.org/wiki/Bicubic_interpolation
-//
-// f if not nullptr will contain the interpolated function values.
-// dfdx if not nullptr will contain the interpolated derivative values.
-template <int kDataDimension>
-void CubicHermiteSpline(const Eigen::Matrix<double, kDataDimension, 1>& p0,
-                        const Eigen::Matrix<double, kDataDimension, 1>& p1,
-                        const Eigen::Matrix<double, kDataDimension, 1>& p2,
-                        const Eigen::Matrix<double, kDataDimension, 1>& p3,
-                        const double x,
-                        double* f,
-                        double* dfdx) {
-  using VType = Eigen::Matrix<double, kDataDimension, 1>;
-  const VType a = 0.5 * (-p0 + 3.0 * p1 - 3.0 * p2 + p3);
-  const VType b = 0.5 * (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3);
-  const VType c = 0.5 * (-p0 + p2);
-  const VType d = p1;
-
-  // Use Horner's rule to evaluate the function value and its
-  // derivative.
-
-  // f = ax^3 + bx^2 + cx + d
-  if (f != nullptr) {
-    Eigen::Map<VType>(f, kDataDimension) = d + x * (c + x * (b + x * a));
-  }
-
-  // dfdx = 3ax^2 + 2bx + c
-  if (dfdx != nullptr) {
-    Eigen::Map<VType>(dfdx, kDataDimension) = c + x * (2.0 * b + 3.0 * a * x);
-  }
-}
-
-// Given as input an infinite one dimensional grid, which provides the
-// following interface.
-//
-//   class Grid {
-//    public:
-//     enum { DATA_DIMENSION = 2; };
-//     void GetValue(int n, double* f) const;
-//   };
-//
-// Here, GetValue gives the value of a function f (possibly vector
-// valued) for any integer n.
-//
-// The enum DATA_DIMENSION indicates the dimensionality of the
-// function being interpolated. For example if you are interpolating
-// rotations in axis-angle format over time, then DATA_DIMENSION = 3.
-//
-// CubicInterpolator uses cubic Hermite splines to produce a smooth
-// approximation to it that can be used to evaluate the f(x) and f'(x)
-// at any point on the real number line.
-//
-// For more details on cubic interpolation see
-//
-// http://en.wikipedia.org/wiki/Cubic_Hermite_spline
-//
-// Example usage:
-//
-//  const double data[] = {1.0, 2.0, 5.0, 6.0};
-//  Grid1D<double, 1> grid(data, 0, 4);
-//  CubicInterpolator<Grid1D<double, 1>> interpolator(grid);
-//  double f, dfdx;
-//  interpolator.Evaluator(1.5, &f, &dfdx);
-template <typename Grid>
-class CubicInterpolator {
- public:
-  explicit CubicInterpolator(const Grid& grid) : grid_(grid) {
-    // The + casts the enum into an int before doing the
-    // comparison. It is needed to prevent
-    // "-Wunnamed-type-template-args" related errors.
-    CHECK_GE(+Grid::DATA_DIMENSION, 1);
-  }
-
-  void Evaluate(double x, double* f, double* dfdx) const {
-    const int n = std::floor(x);
-    Eigen::Matrix<double, Grid::DATA_DIMENSION, 1> p0, p1, p2, p3;
-    grid_.GetValue(n - 1, p0.data());
-    grid_.GetValue(n, p1.data());
-    grid_.GetValue(n + 1, p2.data());
-    grid_.GetValue(n + 2, p3.data());
-    CubicHermiteSpline<Grid::DATA_DIMENSION>(p0, p1, p2, p3, x - n, f, dfdx);
-  }
-
-  // The following two Evaluate overloads are needed for interfacing
-  // with automatic differentiation. The first is for when a scalar
-  // evaluation is done, and the second one is for when Jets are used.
-  void Evaluate(const double& x, double* f) const { Evaluate(x, f, nullptr); }
-
-  template <typename JetT>
-  void Evaluate(const JetT& x, JetT* f) const {
-    double fx[Grid::DATA_DIMENSION], dfdx[Grid::DATA_DIMENSION];
-    Evaluate(x.a, fx, dfdx);
-    for (int i = 0; i < Grid::DATA_DIMENSION; ++i) {
-      f[i].a = fx[i];
-      f[i].v = dfdx[i] * x.v;
-    }
-  }
-
- private:
-  const Grid& grid_;
-};
-
-// An object that implements an infinite one dimensional grid needed
-// by the CubicInterpolator where the source of the function values is
-// an array of type T on the interval
-//
-//   [begin, ..., end - 1]
-//
-// Since the input array is finite and the grid is infinite, values
-// outside this interval needs to be computed. Grid1D uses the value
-// from the nearest edge.
-//
-// The function being provided can be vector valued, in which case
-// kDataDimension > 1. The dimensional slices of the function maybe
-// interleaved, or they maybe stacked, i.e, if the function has
-// kDataDimension = 2, if kInterleaved = true, then it is stored as
-//
-//   f01, f02, f11, f12 ....
-//
-// and if kInterleaved = false, then it is stored as
-//
-//  f01, f11, .. fn1, f02, f12, .. , fn2
-//
-template <typename T, int kDataDimension = 1, bool kInterleaved = true>
-struct Grid1D {
- public:
-  enum { DATA_DIMENSION = kDataDimension };
-
-  Grid1D(const T* data, const int begin, const int end)
-      : data_(data), begin_(begin), end_(end), num_values_(end - begin) {
-    CHECK_LT(begin, end);
-  }
-
-  EIGEN_STRONG_INLINE void GetValue(const int n, double* f) const {
-    const int idx = (std::min)((std::max)(begin_, n), end_ - 1) - begin_;
-    if (kInterleaved) {
-      for (int i = 0; i < kDataDimension; ++i) {
-        f[i] = static_cast<double>(data_[kDataDimension * idx + i]);
-      }
-    } else {
-      for (int i = 0; i < kDataDimension; ++i) {
-        f[i] = static_cast<double>(data_[i * num_values_ + idx]);
-      }
-    }
-  }
-
- private:
-  const T* data_;
-  const int begin_;
-  const int end_;
-  const int num_values_;
-};
-
-// Given as input an infinite two dimensional grid like object, which
-// provides the following interface:
-//
-//   struct Grid {
-//     enum { DATA_DIMENSION = 1 };
-//     void GetValue(int row, int col, double* f) const;
-//   };
-//
-// Where, GetValue gives us the value of a function f (possibly vector
-// valued) for any pairs of integers (row, col), and the enum
-// DATA_DIMENSION indicates the dimensionality of the function being
-// interpolated. For example if you are interpolating a color image
-// with three channels (Red, Green & Blue), then DATA_DIMENSION = 3.
-//
-// BiCubicInterpolator uses the cubic convolution interpolation
-// algorithm of R. Keys, to produce a smooth approximation to it that
-// can be used to evaluate the f(r,c), df(r, c)/dr and df(r,c)/dc at
-// any point in the real plane.
-//
-// For more details on the algorithm used here see:
-//
-// "Cubic convolution interpolation for digital image processing".
-// Robert G. Keys, IEEE Trans. on Acoustics, Speech, and Signal
-// Processing 29 (6): 1153-1160, 1981.
-//
-// http://en.wikipedia.org/wiki/Cubic_Hermite_spline
-// http://en.wikipedia.org/wiki/Bicubic_interpolation
-//
-// Example usage:
-//
-// const double data[] = {1.0, 3.0, -1.0, 4.0,
-//                         3.6, 2.1,  4.2, 2.0,
-//                        2.0, 1.0,  3.1, 5.2};
-//  Grid2D<double, 1>  grid(data, 3, 4);
-//  BiCubicInterpolator<Grid2D<double, 1>> interpolator(grid);
-//  double f, dfdr, dfdc;
-//  interpolator.Evaluate(1.2, 2.5, &f, &dfdr, &dfdc);
-
-template <typename Grid>
-class BiCubicInterpolator {
- public:
-  explicit BiCubicInterpolator(const Grid& grid) : grid_(grid) {
-    // The + casts the enum into an int before doing the
-    // comparison. It is needed to prevent
-    // "-Wunnamed-type-template-args" related errors.
-    CHECK_GE(+Grid::DATA_DIMENSION, 1);
-  }
-
-  // Evaluate the interpolated function value and/or its
-  // derivative. Uses the nearest point on the grid boundary if r or
-  // c is out of bounds.
-  void Evaluate(
-      double r, double c, double* f, double* dfdr, double* dfdc) const {
-    // BiCubic interpolation requires 16 values around the point being
-    // evaluated.  We will use pij, to indicate the elements of the
-    // 4x4 grid of values.
-    //
-    //          col
-    //      p00 p01 p02 p03
-    // row  p10 p11 p12 p13
-    //      p20 p21 p22 p23
-    //      p30 p31 p32 p33
-    //
-    // The point (r,c) being evaluated is assumed to lie in the square
-    // defined by p11, p12, p22 and p21.
-
-    const int row = std::floor(r);
-    const int col = std::floor(c);
-
-    Eigen::Matrix<double, Grid::DATA_DIMENSION, 1> p0, p1, p2, p3;
-
-    // Interpolate along each of the four rows, evaluating the function
-    // value and the horizontal derivative in each row.
-    Eigen::Matrix<double, Grid::DATA_DIMENSION, 1> f0, f1, f2, f3;
-    Eigen::Matrix<double, Grid::DATA_DIMENSION, 1> df0dc, df1dc, df2dc, df3dc;
-
-    grid_.GetValue(row - 1, col - 1, p0.data());
-    grid_.GetValue(row - 1, col, p1.data());
-    grid_.GetValue(row - 1, col + 1, p2.data());
-    grid_.GetValue(row - 1, col + 2, p3.data());
-    CubicHermiteSpline<Grid::DATA_DIMENSION>(
-        p0, p1, p2, p3, c - col, f0.data(), df0dc.data());
-
-    grid_.GetValue(row, col - 1, p0.data());
-    grid_.GetValue(row, col, p1.data());
-    grid_.GetValue(row, col + 1, p2.data());
-    grid_.GetValue(row, col + 2, p3.data());
-    CubicHermiteSpline<Grid::DATA_DIMENSION>(
-        p0, p1, p2, p3, c - col, f1.data(), df1dc.data());
-
-    grid_.GetValue(row + 1, col - 1, p0.data());
-    grid_.GetValue(row + 1, col, p1.data());
-    grid_.GetValue(row + 1, col + 1, p2.data());
-    grid_.GetValue(row + 1, col + 2, p3.data());
-    CubicHermiteSpline<Grid::DATA_DIMENSION>(
-        p0, p1, p2, p3, c - col, f2.data(), df2dc.data());
-
-    grid_.GetValue(row + 2, col - 1, p0.data());
-    grid_.GetValue(row + 2, col, p1.data());
-    grid_.GetValue(row + 2, col + 1, p2.data());
-    grid_.GetValue(row + 2, col + 2, p3.data());
-    CubicHermiteSpline<Grid::DATA_DIMENSION>(
-        p0, p1, p2, p3, c - col, f3.data(), df3dc.data());
-
-    // Interpolate vertically the interpolated value from each row and
-    // compute the derivative along the columns.
-    CubicHermiteSpline<Grid::DATA_DIMENSION>(f0, f1, f2, f3, r - row, f, dfdr);
-    if (dfdc != nullptr) {
-      // Interpolate vertically the derivative along the columns.
-      CubicHermiteSpline<Grid::DATA_DIMENSION>(
-          df0dc, df1dc, df2dc, df3dc, r - row, dfdc, nullptr);
-    }
-  }
-
-  // The following two Evaluate overloads are needed for interfacing
-  // with automatic differentiation. The first is for when a scalar
-  // evaluation is done, and the second one is for when Jets are used.
-  void Evaluate(const double& r, const double& c, double* f) const {
-    Evaluate(r, c, f, nullptr, nullptr);
-  }
-
-  template <typename JetT>
-  void Evaluate(const JetT& r, const JetT& c, JetT* f) const {
-    double frc[Grid::DATA_DIMENSION];
-    double dfdr[Grid::DATA_DIMENSION];
-    double dfdc[Grid::DATA_DIMENSION];
-    Evaluate(r.a, c.a, frc, dfdr, dfdc);
-    for (int i = 0; i < Grid::DATA_DIMENSION; ++i) {
-      f[i].a = frc[i];
-      f[i].v = dfdr[i] * r.v + dfdc[i] * c.v;
-    }
-  }
-
- private:
-  const Grid& grid_;
-};
-
-// An object that implements an infinite two dimensional grid needed
-// by the BiCubicInterpolator where the source of the function values
-// is an grid of type T on the grid
-//
-//   [(row_start,   col_start), ..., (row_start,   col_end - 1)]
-//   [                          ...                            ]
-//   [(row_end - 1, col_start), ..., (row_end - 1, col_end - 1)]
-//
-// Since the input grid is finite and the grid is infinite, values
-// outside this interval needs to be computed. Grid2D uses the value
-// from the nearest edge.
-//
-// The function being provided can be vector valued, in which case
-// kDataDimension > 1. The data maybe stored in row or column major
-// format and the various dimensional slices of the function maybe
-// interleaved, or they maybe stacked, i.e, if the function has
-// kDataDimension = 2, is stored in row-major format and if
-// kInterleaved = true, then it is stored as
-//
-//   f001, f002, f011, f012, ...
-//
-// A commonly occurring example are color images (RGB) where the three
-// channels are stored interleaved.
-//
-// If kInterleaved = false, then it is stored as
-//
-//  f001, f011, ..., fnm1, f002, f012, ...
-template <typename T,
-          int kDataDimension = 1,
-          bool kRowMajor = true,
-          bool kInterleaved = true>
-struct Grid2D {
- public:
-  enum { DATA_DIMENSION = kDataDimension };
-
-  Grid2D(const T* data,
-         const int row_begin,
-         const int row_end,
-         const int col_begin,
-         const int col_end)
-      : data_(data),
-        row_begin_(row_begin),
-        row_end_(row_end),
-        col_begin_(col_begin),
-        col_end_(col_end),
-        num_rows_(row_end - row_begin),
-        num_cols_(col_end - col_begin),
-        num_values_(num_rows_ * num_cols_) {
-    CHECK_GE(kDataDimension, 1);
-    CHECK_LT(row_begin, row_end);
-    CHECK_LT(col_begin, col_end);
-  }
-
-  EIGEN_STRONG_INLINE void GetValue(const int r, const int c, double* f) const {
-    const int row_idx =
-        (std::min)((std::max)(row_begin_, r), row_end_ - 1) - row_begin_;
-    const int col_idx =
-        (std::min)((std::max)(col_begin_, c), col_end_ - 1) - col_begin_;
-
-    const int n = (kRowMajor) ? num_cols_ * row_idx + col_idx
-                              : num_rows_ * col_idx + row_idx;
-
-    if (kInterleaved) {
-      for (int i = 0; i < kDataDimension; ++i) {
-        f[i] = static_cast<double>(data_[kDataDimension * n + i]);
-      }
-    } else {
-      for (int i = 0; i < kDataDimension; ++i) {
-        f[i] = static_cast<double>(data_[i * num_values_ + n]);
-      }
-    }
-  }
-
- private:
-  const T* data_;
-  const int row_begin_;
-  const int row_end_;
-  const int col_begin_;
-  const int col_end_;
-  const int num_rows_;
-  const int num_cols_;
-  const int num_values_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_CUBIC_INTERPOLATOR_H_
diff --git a/third_party/ceres/include/ceres/dynamic_autodiff_cost_function.h b/third_party/ceres/include/ceres/dynamic_autodiff_cost_function.h
deleted file mode 100644
index 2b8724d..0000000
--- a/third_party/ceres/include/ceres/dynamic_autodiff_cost_function.h
+++ /dev/null
@@ -1,318 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         mierle@gmail.com (Keir Mierle)
-
-#ifndef CERES_PUBLIC_DYNAMIC_AUTODIFF_COST_FUNCTION_H_
-#define CERES_PUBLIC_DYNAMIC_AUTODIFF_COST_FUNCTION_H_
-
-#include <cmath>
-#include <memory>
-#include <numeric>
-#include <type_traits>
-#include <vector>
-
-#include "ceres/dynamic_cost_function.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/jet.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// This autodiff implementation differs from the one found in
-// autodiff_cost_function.h by supporting autodiff on cost functions
-// with variable numbers of parameters with variable sizes. With the
-// other implementation, all the sizes (both the number of parameter
-// blocks and the size of each block) must be fixed at compile time.
-//
-// The functor API differs slightly from the API for fixed size
-// autodiff; the expected interface for the cost functors is:
-//
-//   struct MyCostFunctor {
-//     template<typename T>
-//     bool operator()(T const* const* parameters, T* residuals) const {
-//       // Use parameters[i] to access the i'th parameter block.
-//     }
-//   };
-//
-// Since the sizing of the parameters is done at runtime, you must
-// also specify the sizes after creating the dynamic autodiff cost
-// function. For example:
-//
-//   DynamicAutoDiffCostFunction<MyCostFunctor, 3> cost_function;
-//   cost_function.AddParameterBlock(5);
-//   cost_function.AddParameterBlock(10);
-//   cost_function.SetNumResiduals(21);
-//
-// Under the hood, the implementation evaluates the cost function
-// multiple times, computing a small set of the derivatives (four by
-// default, controlled by the Stride template parameter) with each
-// pass. There is a tradeoff with the size of the passes; you may want
-// to experiment with the stride.
-template <typename CostFunctor, int Stride = 4>
-class DynamicAutoDiffCostFunction final : public DynamicCostFunction {
- public:
-  // Constructs the CostFunctor on the heap and takes the ownership.
-  template <class... Args,
-            std::enable_if_t<std::is_constructible_v<CostFunctor, Args&&...>>* =
-                nullptr>
-  explicit DynamicAutoDiffCostFunction(Args&&... args)
-      // NOTE We explicitly use direct initialization using parentheses instead
-      // of uniform initialization using braces to avoid narrowing conversion
-      // warnings.
-      : DynamicAutoDiffCostFunction{
-            std::make_unique<CostFunctor>(std::forward<Args>(args)...)} {}
-
-  // Takes ownership by default.
-  explicit DynamicAutoDiffCostFunction(CostFunctor* functor,
-                                       Ownership ownership = TAKE_OWNERSHIP)
-      : DynamicAutoDiffCostFunction{std::unique_ptr<CostFunctor>{functor},
-                                    ownership} {}
-
-  explicit DynamicAutoDiffCostFunction(std::unique_ptr<CostFunctor> functor)
-      : DynamicAutoDiffCostFunction{std::move(functor), TAKE_OWNERSHIP} {}
-
-  DynamicAutoDiffCostFunction(const DynamicAutoDiffCostFunction& other) =
-      delete;
-  DynamicAutoDiffCostFunction& operator=(
-      const DynamicAutoDiffCostFunction& other) = delete;
-  DynamicAutoDiffCostFunction(DynamicAutoDiffCostFunction&& other) noexcept =
-      default;
-  DynamicAutoDiffCostFunction& operator=(
-      DynamicAutoDiffCostFunction&& other) noexcept = default;
-
-  ~DynamicAutoDiffCostFunction() override {
-    // Manually release pointer if configured to not take ownership
-    // rather than deleting only if ownership is taken.  This is to
-    // stay maximally compatible to old user code which may have
-    // forgotten to implement a virtual destructor, from when the
-    // AutoDiffCostFunction always took ownership.
-    if (ownership_ == DO_NOT_TAKE_OWNERSHIP) {
-      functor_.release();
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    CHECK_GT(num_residuals(), 0)
-        << "You must call DynamicAutoDiffCostFunction::SetNumResiduals() "
-        << "before DynamicAutoDiffCostFunction::Evaluate().";
-
-    if (jacobians == nullptr) {
-      return (*functor_)(parameters, residuals);
-    }
-
-    // The difficulty with Jets, as implemented in Ceres, is that they were
-    // originally designed for strictly compile-sized use. At this point, there
-    // is a large body of code that assumes inside a cost functor it is
-    // acceptable to do e.g. T(1.5) and get an appropriately sized jet back.
-    //
-    // Unfortunately, it is impossible to communicate the expected size of a
-    // dynamically sized jet to the static instantiations that existing code
-    // depends on.
-    //
-    // To work around this issue, the solution here is to evaluate the
-    // jacobians in a series of passes, each one computing Stride *
-    // num_residuals() derivatives. This is done with small, fixed-size jets.
-    const int num_parameter_blocks =
-        static_cast<int>(parameter_block_sizes().size());
-    const int num_parameters = std::accumulate(
-        parameter_block_sizes().begin(), parameter_block_sizes().end(), 0);
-
-    // Allocate scratch space for the strided evaluation.
-    using JetT = Jet<double, Stride>;
-    internal::FixedArray<JetT, (256 * 7) / sizeof(JetT)> input_jets(
-        num_parameters);
-    internal::FixedArray<JetT, (256 * 7) / sizeof(JetT)> output_jets(
-        num_residuals());
-
-    // Make the parameter pack that is sent to the functor (reused).
-    internal::FixedArray<Jet<double, Stride>*> jet_parameters(
-        num_parameter_blocks, nullptr);
-    int num_active_parameters = 0;
-
-    // To handle constant parameters between non-constant parameter blocks, the
-    // start position --- a raw parameter index --- of each contiguous block of
-    // non-constant parameters is recorded in start_derivative_section.
-    std::vector<int> start_derivative_section;
-    bool in_derivative_section = false;
-    int parameter_cursor = 0;
-
-    // Discover the derivative sections and set the parameter values.
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      jet_parameters[i] = &input_jets[parameter_cursor];
-
-      const int parameter_block_size = parameter_block_sizes()[i];
-      if (jacobians[i] != nullptr) {
-        if (!in_derivative_section) {
-          start_derivative_section.push_back(parameter_cursor);
-          in_derivative_section = true;
-        }
-
-        num_active_parameters += parameter_block_size;
-      } else {
-        in_derivative_section = false;
-      }
-
-      for (int j = 0; j < parameter_block_size; ++j, parameter_cursor++) {
-        input_jets[parameter_cursor].a = parameters[i][j];
-      }
-    }
-
-    if (num_active_parameters == 0) {
-      return (*functor_)(parameters, residuals);
-    }
-    // When `num_active_parameters % Stride != 0` then it can be the case
-    // that `active_parameter_count < Stride` while parameter_cursor is less
-    // than the total number of parameters and with no remaining non-constant
-    // parameter blocks. Pushing parameter_cursor (the total number of
-    // parameters) as a final entry to start_derivative_section is required
-    // because if a constant parameter block is encountered after the
-    // last non-constant block then current_derivative_section is incremented
-    // and would otherwise index an invalid position in
-    // start_derivative_section. Setting the final element to the total number
-    // of parameters means that this can only happen at most once in the loop
-    // below.
-    start_derivative_section.push_back(parameter_cursor);
-
-    // Evaluate all of the strides. Each stride is a chunk of the derivative to
-    // evaluate, typically some size proportional to the size of the SIMD
-    // registers of the CPU.
-    int num_strides = static_cast<int>(
-        ceil(num_active_parameters / static_cast<float>(Stride)));
-
-    int current_derivative_section = 0;
-    int current_derivative_section_cursor = 0;
-
-    for (int pass = 0; pass < num_strides; ++pass) {
-      // Set most of the jet components to zero, except for
-      // non-constant #Stride parameters.
-      const int initial_derivative_section = current_derivative_section;
-      const int initial_derivative_section_cursor =
-          current_derivative_section_cursor;
-
-      int active_parameter_count = 0;
-      parameter_cursor = 0;
-
-      for (int i = 0; i < num_parameter_blocks; ++i) {
-        for (int j = 0; j < parameter_block_sizes()[i];
-             ++j, parameter_cursor++) {
-          input_jets[parameter_cursor].v.setZero();
-          if (active_parameter_count < Stride &&
-              parameter_cursor >=
-                  (start_derivative_section[current_derivative_section] +
-                   current_derivative_section_cursor)) {
-            if (jacobians[i] != nullptr) {
-              input_jets[parameter_cursor].v[active_parameter_count] = 1.0;
-              ++active_parameter_count;
-              ++current_derivative_section_cursor;
-            } else {
-              ++current_derivative_section;
-              current_derivative_section_cursor = 0;
-            }
-          }
-        }
-      }
-
-      if (!(*functor_)(&jet_parameters[0], &output_jets[0])) {
-        return false;
-      }
-
-      // Copy the pieces of the jacobians into their final place.
-      active_parameter_count = 0;
-
-      current_derivative_section = initial_derivative_section;
-      current_derivative_section_cursor = initial_derivative_section_cursor;
-
-      for (int i = 0, parameter_cursor = 0; i < num_parameter_blocks; ++i) {
-        for (int j = 0; j < parameter_block_sizes()[i];
-             ++j, parameter_cursor++) {
-          if (active_parameter_count < Stride &&
-              parameter_cursor >=
-                  (start_derivative_section[current_derivative_section] +
-                   current_derivative_section_cursor)) {
-            if (jacobians[i] != nullptr) {
-              for (int k = 0; k < num_residuals(); ++k) {
-                jacobians[i][k * parameter_block_sizes()[i] + j] =
-                    output_jets[k].v[active_parameter_count];
-              }
-              ++active_parameter_count;
-              ++current_derivative_section_cursor;
-            } else {
-              ++current_derivative_section;
-              current_derivative_section_cursor = 0;
-            }
-          }
-        }
-      }
-
-      // Only copy the residuals over once (even though we compute them on
-      // every loop).
-      if (pass == num_strides - 1) {
-        for (int k = 0; k < num_residuals(); ++k) {
-          residuals[k] = output_jets[k].a;
-        }
-      }
-    }
-    return true;
-  }
-
-  const CostFunctor& functor() const { return *functor_; }
-
- private:
-  explicit DynamicAutoDiffCostFunction(std::unique_ptr<CostFunctor> functor,
-                                       Ownership ownership)
-      : functor_(std::move(functor)), ownership_(ownership) {}
-
-  std::unique_ptr<CostFunctor> functor_;
-  Ownership ownership_;
-};
-
-// Deduction guide that allows the user to avoid explicitly specifying the
-// template parameter of DynamicAutoDiffCostFunction. The class can instead be
-// instantiated as follows:
-//
-//   new DynamicAutoDiffCostFunction{new MyCostFunctor{}};
-//   new DynamicAutoDiffCostFunction{std::make_unique<MyCostFunctor>()};
-//
-template <typename CostFunctor>
-DynamicAutoDiffCostFunction(CostFunctor* functor)
-    -> DynamicAutoDiffCostFunction<CostFunctor>;
-template <typename CostFunctor>
-DynamicAutoDiffCostFunction(CostFunctor* functor, Ownership ownership)
-    -> DynamicAutoDiffCostFunction<CostFunctor>;
-template <typename CostFunctor>
-DynamicAutoDiffCostFunction(std::unique_ptr<CostFunctor> functor)
-    -> DynamicAutoDiffCostFunction<CostFunctor>;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_DYNAMIC_AUTODIFF_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/dynamic_cost_function.h b/third_party/ceres/include/ceres/dynamic_cost_function.h
deleted file mode 100644
index 02ce1e9..0000000
--- a/third_party/ceres/include/ceres/dynamic_cost_function.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_DYNAMIC_COST_FUNCTION_H_
-#define CERES_PUBLIC_DYNAMIC_COST_FUNCTION_H_
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-
-namespace ceres {
-
-// A common base class for DynamicAutoDiffCostFunction and
-// DynamicNumericDiffCostFunction which depend on methods that can add
-// parameter blocks and set the number of residuals at run time.
-class CERES_EXPORT DynamicCostFunction : public CostFunction {
- public:
-  virtual void AddParameterBlock(int size) {
-    mutable_parameter_block_sizes()->push_back(size);
-  }
-
-  virtual void SetNumResiduals(int num_residuals) {
-    set_num_residuals(num_residuals);
-  }
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_DYNAMIC_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/dynamic_cost_function_to_functor.h b/third_party/ceres/include/ceres/dynamic_cost_function_to_functor.h
deleted file mode 100644
index 45ed90f..0000000
--- a/third_party/ceres/include/ceres/dynamic_cost_function_to_functor.h
+++ /dev/null
@@ -1,202 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         dgossow@google.com (David Gossow)
-
-#ifndef CERES_PUBLIC_DYNAMIC_COST_FUNCTION_TO_FUNCTOR_H_
-#define CERES_PUBLIC_DYNAMIC_COST_FUNCTION_TO_FUNCTOR_H_
-
-#include <memory>
-#include <numeric>
-#include <vector>
-
-#include "ceres/dynamic_cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/fixed_array.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// DynamicCostFunctionToFunctor allows users to use CostFunction
-// objects in templated functors which are to be used for automatic
-// differentiation. It works similar to CostFunctionToFunctor, with the
-// difference that it allows you to wrap a cost function with dynamic numbers
-// of parameters and residuals.
-//
-// For example, let us assume that
-//
-//  class IntrinsicProjection : public CostFunction {
-//    public:
-//      IntrinsicProjection(const double* observation);
-//      bool Evaluate(double const* const* parameters,
-//                    double* residuals,
-//                    double** jacobians) const override;
-//  };
-//
-// is a cost function that implements the projection of a point in its
-// local coordinate system onto its image plane and subtracts it from
-// the observed point projection. It can compute its residual and
-// either via analytic or numerical differentiation can compute its
-// jacobians. The intrinsics are passed in as parameters[0] and the point as
-// parameters[1].
-//
-// Now we would like to compose the action of this CostFunction with
-// the action of camera extrinsics, i.e., rotation and
-// translation. Say we have a templated function
-//
-//   template<typename T>
-//   void RotateAndTranslatePoint(double const* const* parameters,
-//                                double* residuals);
-//
-// Then we can now do the following,
-//
-// struct CameraProjection {
-//   CameraProjection(const double* observation)
-//       : intrinsic_projection_.(new IntrinsicProjection(observation)) {
-//   }
-//   template <typename T>
-//   bool operator()(T const* const* parameters,
-//                   T* residual) const {
-//     const T* rotation = parameters[0];
-//     const T* translation = parameters[1];
-//     const T* intrinsics = parameters[2];
-//     const T* point = parameters[3];
-//     T transformed_point[3];
-//     RotateAndTranslatePoint(rotation, translation, point, transformed_point);
-//
-//     // Note that we call intrinsic_projection_, just like it was
-//     // any other templated functor.
-//     const T* projection_parameters[2];
-//     projection_parameters[0] = intrinsics;
-//     projection_parameters[1] = transformed_point;
-//     return intrinsic_projection_(projection_parameters, residual);
-//   }
-//
-//  private:
-//   DynamicCostFunctionToFunctor intrinsic_projection_;
-// };
-class CERES_EXPORT DynamicCostFunctionToFunctor {
- public:
-  // Takes ownership of cost_function.
-  explicit DynamicCostFunctionToFunctor(CostFunction* cost_function)
-      : DynamicCostFunctionToFunctor{
-            std::unique_ptr<CostFunction>{cost_function}} {}
-
-  // Takes ownership of cost_function.
-  explicit DynamicCostFunctionToFunctor(
-      std::unique_ptr<CostFunction> cost_function)
-      : cost_function_(std::move(cost_function)) {
-    CHECK(cost_function_ != nullptr);
-  }
-
-  bool operator()(double const* const* parameters, double* residuals) const {
-    return cost_function_->Evaluate(parameters, residuals, nullptr);
-  }
-
-  template <typename JetT>
-  bool operator()(JetT const* const* inputs, JetT* output) const {
-    const std::vector<int32_t>& parameter_block_sizes =
-        cost_function_->parameter_block_sizes();
-    const int num_parameter_blocks =
-        static_cast<int>(parameter_block_sizes.size());
-    const int num_residuals = cost_function_->num_residuals();
-    const int num_parameters = std::accumulate(
-        parameter_block_sizes.begin(), parameter_block_sizes.end(), 0);
-
-    internal::FixedArray<double> parameters(num_parameters);
-    internal::FixedArray<double*> parameter_blocks(num_parameter_blocks);
-    internal::FixedArray<double> jacobians(num_residuals * num_parameters);
-    internal::FixedArray<double*> jacobian_blocks(num_parameter_blocks);
-    internal::FixedArray<double> residuals(num_residuals);
-
-    // Build a set of arrays to get the residuals and jacobians from
-    // the CostFunction wrapped by this functor.
-    double* parameter_ptr = parameters.data();
-    double* jacobian_ptr = jacobians.data();
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      parameter_blocks[i] = parameter_ptr;
-      jacobian_blocks[i] = jacobian_ptr;
-      for (int j = 0; j < parameter_block_sizes[i]; ++j) {
-        *parameter_ptr++ = inputs[i][j].a;
-      }
-      jacobian_ptr += num_residuals * parameter_block_sizes[i];
-    }
-
-    if (!cost_function_->Evaluate(parameter_blocks.data(),
-                                  residuals.data(),
-                                  jacobian_blocks.data())) {
-      return false;
-    }
-
-    // Now that we have the incoming Jets, which are carrying the
-    // partial derivatives of each of the inputs w.r.t to some other
-    // underlying parameters. The derivative of the outputs of the
-    // cost function w.r.t to the same underlying parameters can now
-    // be computed by applying the chain rule.
-    //
-    //  d output[i]               d output[i]   d input[j]
-    //  --------------  = sum_j   ----------- * ------------
-    //  d parameter[k]            d input[j]    d parameter[k]
-    //
-    // d input[j]
-    // --------------  = inputs[j], so
-    // d parameter[k]
-    //
-    //  outputJet[i]  = sum_k jacobian[i][k] * inputJet[k]
-    //
-    // The following loop, iterates over the residuals, computing one
-    // output jet at a time.
-    for (int i = 0; i < num_residuals; ++i) {
-      output[i].a = residuals[i];
-      output[i].v.setZero();
-
-      for (int j = 0; j < num_parameter_blocks; ++j) {
-        const int32_t block_size = parameter_block_sizes[j];
-        for (int k = 0; k < parameter_block_sizes[j]; ++k) {
-          output[i].v +=
-              jacobian_blocks[j][i * block_size + k] * inputs[j][k].v;
-        }
-      }
-    }
-
-    return true;
-  }
-
-  CostFunction* function() const noexcept { return cost_function_.get(); }
-
- private:
-  std::unique_ptr<CostFunction> cost_function_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_DYNAMIC_COST_FUNCTION_TO_FUNCTOR_H_
diff --git a/third_party/ceres/include/ceres/dynamic_numeric_diff_cost_function.h b/third_party/ceres/include/ceres/dynamic_numeric_diff_cost_function.h
deleted file mode 100644
index 1ce384f..0000000
--- a/third_party/ceres/include/ceres/dynamic_numeric_diff_cost_function.h
+++ /dev/null
@@ -1,223 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//         thadh@gmail.com (Thad Hughes)
-//         tbennun@gmail.com (Tal Ben-Nun)
-
-#ifndef CERES_PUBLIC_DYNAMIC_NUMERIC_DIFF_COST_FUNCTION_H_
-#define CERES_PUBLIC_DYNAMIC_NUMERIC_DIFF_COST_FUNCTION_H_
-
-#include <cmath>
-#include <memory>
-#include <numeric>
-#include <type_traits>
-#include <vector>
-
-#include "ceres/dynamic_cost_function.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/numeric_diff.h"
-#include "ceres/internal/parameter_dims.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// This numeric diff implementation differs from the one found in
-// numeric_diff_cost_function.h by supporting numericdiff on cost
-// functions with variable numbers of parameters with variable
-// sizes. With the other implementation, all the sizes (both the
-// number of parameter blocks and the size of each block) must be
-// fixed at compile time.
-//
-// The functor API differs slightly from the API for fixed size
-// numeric diff; the expected interface for the cost functors is:
-//
-//   struct MyCostFunctor {
-//     bool operator()(double const*
-//                     const* parameters,
-//                     double* residuals) const {
-//       // Use parameters[i] to access the i'th parameter block.
-//     }
-//   }
-//
-// Since the sizing of the parameters is done at runtime, you must
-// also specify the sizes after creating the
-// DynamicNumericDiffCostFunction. For example:
-//
-//   DynamicAutoDiffCostFunction<MyCostFunctor, CENTRAL> cost_function;
-//   cost_function.AddParameterBlock(5);
-//   cost_function.AddParameterBlock(10);
-//   cost_function.SetNumResiduals(21);
-template <typename CostFunctor, NumericDiffMethodType kMethod = CENTRAL>
-class DynamicNumericDiffCostFunction final : public DynamicCostFunction {
- public:
-  explicit DynamicNumericDiffCostFunction(
-      const CostFunctor* functor,
-      Ownership ownership = TAKE_OWNERSHIP,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : DynamicNumericDiffCostFunction{
-            std::unique_ptr<const CostFunctor>{functor}, ownership, options} {}
-
-  explicit DynamicNumericDiffCostFunction(
-      std::unique_ptr<const CostFunctor> functor,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : DynamicNumericDiffCostFunction{
-            std::move(functor), TAKE_OWNERSHIP, options} {}
-
-  // Constructs the CostFunctor on the heap and takes the ownership.
-  template <class... Args,
-            std::enable_if_t<std::is_constructible_v<CostFunctor, Args&&...>>* =
-                nullptr>
-  explicit DynamicNumericDiffCostFunction(Args&&... args)
-      // NOTE We explicitly use direct initialization using parentheses instead
-      // of uniform initialization using braces to avoid narrowing conversion
-      // warnings.
-      : DynamicNumericDiffCostFunction{
-            std::make_unique<CostFunctor>(std::forward<Args>(args)...)} {}
-
-  DynamicNumericDiffCostFunction(const DynamicNumericDiffCostFunction&) =
-      delete;
-  DynamicNumericDiffCostFunction& operator=(
-      const DynamicNumericDiffCostFunction&) = delete;
-  DynamicNumericDiffCostFunction(
-      DynamicNumericDiffCostFunction&& other) noexcept = default;
-  DynamicNumericDiffCostFunction& operator=(
-      DynamicNumericDiffCostFunction&& other) noexcept = default;
-
-  ~DynamicNumericDiffCostFunction() override {
-    if (ownership_ != TAKE_OWNERSHIP) {
-      functor_.release();
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    using internal::NumericDiff;
-    CHECK_GT(num_residuals(), 0)
-        << "You must call DynamicNumericDiffCostFunction::SetNumResiduals() "
-        << "before DynamicNumericDiffCostFunction::Evaluate().";
-
-    const std::vector<int32_t>& block_sizes = parameter_block_sizes();
-    CHECK(!block_sizes.empty())
-        << "You must call DynamicNumericDiffCostFunction::AddParameterBlock() "
-        << "before DynamicNumericDiffCostFunction::Evaluate().";
-
-    const bool status =
-        internal::VariadicEvaluate<internal::DynamicParameterDims>(
-            *functor_.get(), parameters, residuals);
-    if (jacobians == nullptr || !status) {
-      return status;
-    }
-
-    // Create local space for a copy of the parameters which will get mutated.
-    int parameters_size = accumulate(block_sizes.begin(), block_sizes.end(), 0);
-    std::vector<double> parameters_copy(parameters_size);
-    std::vector<double*> parameters_references_copy(block_sizes.size());
-    parameters_references_copy[0] = parameters_copy.data();
-    for (size_t block = 1; block < block_sizes.size(); ++block) {
-      parameters_references_copy[block] =
-          parameters_references_copy[block - 1] + block_sizes[block - 1];
-    }
-
-    // Copy the parameters into the local temp space.
-    for (size_t block = 0; block < block_sizes.size(); ++block) {
-      memcpy(parameters_references_copy[block],
-             parameters[block],
-             block_sizes[block] * sizeof(*parameters[block]));
-    }
-
-    for (size_t block = 0; block < block_sizes.size(); ++block) {
-      if (jacobians[block] != nullptr &&
-          !NumericDiff<CostFunctor,
-                       kMethod,
-                       ceres::DYNAMIC,
-                       internal::DynamicParameterDims,
-                       ceres::DYNAMIC,
-                       ceres::DYNAMIC>::
-              EvaluateJacobianForParameterBlock(
-                  functor_.get(),
-                  residuals,
-                  options_,
-                  this->num_residuals(),
-                  block,
-                  block_sizes[block],
-                  parameters_references_copy.data(),
-                  jacobians[block])) {
-        return false;
-      }
-    }
-    return true;
-  }
-
- private:
-  explicit DynamicNumericDiffCostFunction(
-      std::unique_ptr<const CostFunctor> functor,
-      Ownership ownership,
-      const NumericDiffOptions& options)
-      : functor_(std::move(functor)),
-        ownership_(ownership),
-        options_(options) {}
-
-  std::unique_ptr<const CostFunctor> functor_;
-  Ownership ownership_;
-  NumericDiffOptions options_;
-};
-
-// Deduction guide that allows the user to avoid explicitly specifying the
-// template parameter of DynamicNumericDiffCostFunction. The class can instead
-// be instantiated as follows:
-//
-//   new DynamicNumericDiffCostFunction{new MyCostFunctor{}};
-//   new DynamicNumericDiffCostFunction{std::make_unique<MyCostFunctor>()};
-//
-template <typename CostFunctor>
-DynamicNumericDiffCostFunction(CostFunctor* functor)
-    -> DynamicNumericDiffCostFunction<CostFunctor>;
-template <typename CostFunctor>
-DynamicNumericDiffCostFunction(CostFunctor* functor, Ownership ownership)
-    -> DynamicNumericDiffCostFunction<CostFunctor>;
-template <typename CostFunctor>
-DynamicNumericDiffCostFunction(CostFunctor* functor,
-                               Ownership ownership,
-                               const NumericDiffOptions& options)
-    -> DynamicNumericDiffCostFunction<CostFunctor>;
-template <typename CostFunctor>
-DynamicNumericDiffCostFunction(std::unique_ptr<CostFunctor> functor)
-    -> DynamicNumericDiffCostFunction<CostFunctor>;
-template <typename CostFunctor>
-DynamicNumericDiffCostFunction(std::unique_ptr<CostFunctor> functor,
-                               const NumericDiffOptions& options)
-    -> DynamicNumericDiffCostFunction<CostFunctor>;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_DYNAMIC_AUTODIFF_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/evaluation_callback.h b/third_party/ceres/include/ceres/evaluation_callback.h
deleted file mode 100644
index e582dc8..0000000
--- a/third_party/ceres/include/ceres/evaluation_callback.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#ifndef CERES_PUBLIC_EVALUATION_CALLBACK_H_
-#define CERES_PUBLIC_EVALUATION_CALLBACK_H_
-
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// Using this callback interface, Ceres can notify you when it is
-// about to evaluate the residuals or jacobians. With the callback,
-// you can share computation between residual blocks by doing the
-// shared computation in PrepareForEvaluation() before Ceres calls
-// CostFunction::Evaluate(). It also enables caching results between a
-// pure residual evaluation and a residual & jacobian evaluation, via
-// the new_evaluation_point argument.
-//
-// One use case for this callback is if the cost function compute is
-// moved to the GPU. In that case, the prepare call does the actual
-// cost function evaluation, and subsequent calls from Ceres to the
-// actual cost functions merely copy the results from the GPU onto the
-// corresponding blocks for Ceres to plug into the solver.
-//
-// NOTE: Ceres provides no mechanism to share data other than the
-// notification from the callback. Users must provide access to
-// pre-computed shared data to their cost functions behind the scenes;
-// this all happens without Ceres knowing.
-//
-// One approach is to put a pointer to the shared data in each cost
-// function (recommended) or to use a global shared variable
-// (discouraged; bug-prone).  As far as Ceres is concerned, it is
-// evaluating cost functions like any other; it just so happens that
-// behind the scenes the cost functions reuse pre-computed data to
-// execute faster.
-class CERES_EXPORT EvaluationCallback {
- public:
-  virtual ~EvaluationCallback();
-
-  // Called before Ceres requests residuals or jacobians for a given setting of
-  // the parameters. User parameters (the double* values provided to the cost
-  // functions) are fixed until the next call to PrepareForEvaluation().
-  //
-  // If evaluate_jacobians == true, then the user provided CostFunctions will be
-  // asked to evaluate one or more of their Jacobians.
-  //
-  // If new_evaluation_point == true, then this is a new point that is different
-  // from the last evaluated point. Otherwise, it is the same point that was
-  // evaluated previously (either jacobian or residual) and the user can use
-  // cached results from previous evaluations.
-  virtual void PrepareForEvaluation(bool evaluate_jacobians,
-                                    bool new_evaluation_point) = 0;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_EVALUATION_CALLBACK_H_
diff --git a/third_party/ceres/include/ceres/first_order_function.h b/third_party/ceres/include/ceres/first_order_function.h
deleted file mode 100644
index ea42732..0000000
--- a/third_party/ceres/include/ceres/first_order_function.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_FIRST_ORDER_FUNCTION_H_
-#define CERES_PUBLIC_FIRST_ORDER_FUNCTION_H_
-
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// A FirstOrderFunction object implements the evaluation of a function
-// and its gradient.
-class CERES_EXPORT FirstOrderFunction {
- public:
-  virtual ~FirstOrderFunction();
-
-  // cost is never null. gradient may be null. The return value
-  // indicates whether the evaluation was successful or not.
-  virtual bool Evaluate(const double* const parameters,
-                        double* cost,
-                        double* gradient) const = 0;
-  virtual int NumParameters() const = 0;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_FIRST_ORDER_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/gradient_checker.h b/third_party/ceres/include/ceres/gradient_checker.h
deleted file mode 100644
index 77f2c8e..0000000
--- a/third_party/ceres/include/ceres/gradient_checker.h
+++ /dev/null
@@ -1,154 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-// Copyright 2023 Google Inc. All Rights Reserved.
-//
-// Authors: wjr@google.com (William Rucklidge),
-//          keir@google.com (Keir Mierle),
-//          dgossow@google.com (David Gossow)
-
-#ifndef CERES_PUBLIC_GRADIENT_CHECKER_H_
-#define CERES_PUBLIC_GRADIENT_CHECKER_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/dynamic_numeric_diff_cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/manifold.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// GradientChecker compares the Jacobians returned by a cost function against
-// derivatives estimated using finite differencing.
-//
-// The condition enforced is that
-//
-//    (J_actual(i, j) - J_numeric(i, j))
-//   ------------------------------------  <  relative_precision
-//   max(J_actual(i, j), J_numeric(i, j))
-//
-// where J_actual(i, j) is the Jacobian as computed by the supplied cost
-// function (by the user) multiplied by the manifold Jacobian and J_numeric is
-// the Jacobian as computed by finite differences, multiplied by the manifold
-// Jacobian as well.
-//
-// How to use: Fill in an array of pointers to parameter blocks for your
-// CostFunction, and then call Probe(). Check that the return value is 'true'.
-class CERES_EXPORT GradientChecker {
- public:
-  // This will not take ownership of the cost function or manifolds.
-  //
-  // function: The cost function to probe.
-  //
-  // manifolds: A vector of manifolds for each parameter. May be nullptr or
-  // contain nullptrs to indicate that the respective parameter blocks are
-  // Euclidean.
-  //
-  // options: Options to use for numerical differentiation.
-  GradientChecker(const CostFunction* function,
-                  const std::vector<const Manifold*>* manifolds,
-                  const NumericDiffOptions& options);
-
-  // Contains results from a call to Probe for later inspection.
-  struct CERES_EXPORT ProbeResults {
-    // The return value of the cost function.
-    bool return_value;
-
-    // Computed residual vector.
-    Vector residuals;
-
-    // The sizes of the Jacobians below are dictated by the cost function's
-    // parameter block size and residual block sizes. If a parameter block has a
-    // manifold associated with it, the size of the "local" Jacobian will be
-    // determined by the dimension of the manifold (which is the same as the
-    // dimension of the tangent space) and residual block size, otherwise it
-    // will be identical to the regular Jacobian.
-
-    // Derivatives as computed by the cost function.
-    std::vector<Matrix> jacobians;
-
-    // Derivatives as computed by the cost function in local space.
-    std::vector<Matrix> local_jacobians;
-
-    // Derivatives as computed by numerical differentiation in local space.
-    std::vector<Matrix> numeric_jacobians;
-
-    // Derivatives as computed by numerical differentiation in local space.
-    std::vector<Matrix> local_numeric_jacobians;
-
-    // Contains the maximum relative error found in the local Jacobians.
-    double maximum_relative_error;
-
-    // If an error was detected, this will contain a detailed description of
-    // that error.
-    std::string error_log;
-  };
-
-  // Call the cost function, compute alternative Jacobians using finite
-  // differencing and compare results. If manifolds are given, the Jacobians
-  // will be multiplied by the manifold Jacobians before performing the check,
-  // which effectively means that all errors along the null space of the
-  // manifold will be ignored.  Returns false if the Jacobians don't match, the
-  // cost function return false, or if a cost function returns a different
-  // residual when called with a Jacobian output argument vs. calling it
-  // without. Otherwise returns true.
-  //
-  // parameters: The parameter values at which to probe.
-  // relative_precision: A threshold for the relative difference between the
-  // Jacobians. If the Jacobians differ by more than this amount, then the
-  // probe fails.
-  // results: On return, the Jacobians (and other information) will be stored
-  // here. May be nullptr.
-  //
-  // Returns true if no problems are detected and the difference between the
-  // Jacobians is less than error_tolerance.
-  bool Probe(double const* const* parameters,
-             double relative_precision,
-             ProbeResults* results) const;
-
- private:
-  GradientChecker() = delete;
-  GradientChecker(const GradientChecker&) = delete;
-  void operator=(const GradientChecker&) = delete;
-
-  std::vector<const Manifold*> manifolds_;
-  const CostFunction* function_;
-  std::unique_ptr<CostFunction> finite_diff_cost_function_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_GRADIENT_CHECKER_H_
diff --git a/third_party/ceres/include/ceres/gradient_problem.h b/third_party/ceres/include/ceres/gradient_problem.h
deleted file mode 100644
index 96d6493..0000000
--- a/third_party/ceres/include/ceres/gradient_problem.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_GRADIENT_PROBLEM_H_
-#define CERES_PUBLIC_GRADIENT_PROBLEM_H_
-
-#include <memory>
-
-#include "ceres/first_order_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/manifold.h"
-
-namespace ceres {
-
-class FirstOrderFunction;
-
-// Instances of GradientProblem represent general non-linear
-// optimization problems that must be solved using just the value of
-// the objective function and its gradient.
-
-// Unlike the Problem class, which can only be used to model non-linear least
-// squares problems, instances of GradientProblem are not restricted in the form
-// of the objective function.
-//
-// Structurally GradientProblem is a composition of a FirstOrderFunction and
-// optionally a Manifold.
-//
-// The FirstOrderFunction is responsible for evaluating the cost and gradient of
-// the objective function.
-//
-// The Manifold is responsible for going back and forth between the ambient
-// space and the local tangent space. (See manifold.h for more details). When a
-// Manifold is not provided, then the tangent space is assumed to coincide with
-// the ambient Euclidean space that the gradient vector lives in.
-//
-// Example usage:
-//
-// The following demonstrate the problem construction for Rosenbrock's function
-//
-//   f(x,y) = (1-x)^2 + 100(y - x^2)^2;
-//
-// class Rosenbrock : public ceres::FirstOrderFunction {
-//  public:
-//   virtual ~Rosenbrock() {}
-//
-//   virtual bool Evaluate(const double* parameters,
-//                         double* cost,
-//                         double* gradient) const {
-//     const double x = parameters[0];
-//     const double y = parameters[1];
-//
-//     cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-//     if (gradient != nullptr) {
-//       gradient[0] = -2.0 * (1.0 - x) - 200.0 * (y - x * x) * 2.0 * x;
-//       gradient[1] = 200.0 * (y - x * x);
-//     }
-//     return true;
-//   };
-//
-//   virtual int NumParameters() const { return 2; };
-// };
-//
-// ceres::GradientProblem problem(new Rosenbrock());
-class CERES_EXPORT GradientProblem {
- public:
-  // Takes ownership of the function.
-  explicit GradientProblem(FirstOrderFunction* function);
-
-  // Takes ownership of the function and the manifold.
-  GradientProblem(FirstOrderFunction* function, Manifold* manifold);
-
-  int NumParameters() const;
-
-  // Dimension of the manifold (and its tangent space).
-  int NumTangentParameters() const;
-
-  // This call is not thread safe.
-  bool Evaluate(const double* parameters, double* cost, double* gradient) const;
-  bool Plus(const double* x, const double* delta, double* x_plus_delta) const;
-
-  const FirstOrderFunction* function() const { return function_.get(); }
-  FirstOrderFunction* mutable_function() { return function_.get(); }
-
-  const Manifold* manifold() const { return manifold_.get(); }
-  Manifold* mutable_manifold() { return manifold_.get(); }
-
- private:
-  std::unique_ptr<FirstOrderFunction> function_;
-  std::unique_ptr<Manifold> manifold_;
-  std::unique_ptr<double[]> scratch_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_GRADIENT_PROBLEM_H_
diff --git a/third_party/ceres/include/ceres/gradient_problem_solver.h b/third_party/ceres/include/ceres/gradient_problem_solver.h
deleted file mode 100644
index f4c392f..0000000
--- a/third_party/ceres/include/ceres/gradient_problem_solver.h
+++ /dev/null
@@ -1,353 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_GRADIENT_PROBLEM_SOLVER_H_
-#define CERES_PUBLIC_GRADIENT_PROBLEM_SOLVER_H_
-
-#include <cmath>
-#include <string>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/port.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-class GradientProblem;
-
-class CERES_EXPORT GradientProblemSolver {
- public:
-  virtual ~GradientProblemSolver();
-
-  // The options structure contains, not surprisingly, options that control how
-  // the solver operates. The defaults should be suitable for a wide range of
-  // problems; however, better performance is often obtainable with tweaking.
-  //
-  // The constants are defined inside types.h
-  struct CERES_EXPORT Options {
-    // Returns true if the options struct has a valid
-    // configuration. Returns false otherwise, and fills in *error
-    // with a message describing the problem.
-    bool IsValid(std::string* error) const;
-
-    // Minimizer options ----------------------------------------
-    LineSearchDirectionType line_search_direction_type = LBFGS;
-    LineSearchType line_search_type = WOLFE;
-    NonlinearConjugateGradientType nonlinear_conjugate_gradient_type =
-        FLETCHER_REEVES;
-
-    // The LBFGS hessian approximation is a low rank approximation to
-    // the inverse of the Hessian matrix. The rank of the
-    // approximation determines (linearly) the space and time
-    // complexity of using the approximation. Higher the rank, the
-    // better is the quality of the approximation. The increase in
-    // quality is however is bounded for a number of reasons.
-    //
-    // 1. The method only uses secant information and not actual
-    // derivatives.
-    //
-    // 2. The Hessian approximation is constrained to be positive
-    // definite.
-    //
-    // So increasing this rank to a large number will cost time and
-    // space complexity without the corresponding increase in solution
-    // quality. There are no hard and fast rules for choosing the
-    // maximum rank. The best choice usually requires some problem
-    // specific experimentation.
-    //
-    // For more theoretical and implementation details of the LBFGS
-    // method, please see:
-    //
-    // Nocedal, J. (1980). "Updating Quasi-Newton Matrices with
-    // Limited Storage". Mathematics of Computation 35 (151): 773-782.
-    int max_lbfgs_rank = 20;
-
-    // As part of the (L)BFGS update step (BFGS) / right-multiply step (L-BFGS),
-    // the initial inverse Hessian approximation is taken to be the Identity.
-    // However, Oren showed that using instead I * \gamma, where \gamma is
-    // chosen to approximate an eigenvalue of the true inverse Hessian can
-    // result in improved convergence in a wide variety of cases. Setting
-    // use_approximate_eigenvalue_bfgs_scaling to true enables this scaling.
-    //
-    // It is important to note that approximate eigenvalue scaling does not
-    // always improve convergence, and that it can in fact significantly degrade
-    // performance for certain classes of problem, which is why it is disabled
-    // by default.  In particular it can degrade performance when the
-    // sensitivity of the problem to different parameters varies significantly,
-    // as in this case a single scalar factor fails to capture this variation
-    // and detrimentally downscales parts of the jacobian approximation which
-    // correspond to low-sensitivity parameters. It can also reduce the
-    // robustness of the solution to errors in the jacobians.
-    //
-    // Oren S.S., Self-scaling variable metric (SSVM) algorithms
-    // Part II: Implementation and experiments, Management Science,
-    // 20(5), 863-874, 1974.
-    bool use_approximate_eigenvalue_bfgs_scaling = false;
-
-    // Degree of the polynomial used to approximate the objective
-    // function. Valid values are BISECTION, QUADRATIC and CUBIC.
-    //
-    // BISECTION corresponds to pure backtracking search with no
-    // interpolation.
-    LineSearchInterpolationType line_search_interpolation_type = CUBIC;
-
-    // If during the line search, the step_size falls below this
-    // value, it is truncated to zero.
-    double min_line_search_step_size = 1e-9;
-
-    // Line search parameters.
-
-    // Solving the line search problem exactly is computationally
-    // prohibitive. Fortunately, line search based optimization
-    // algorithms can still guarantee convergence if instead of an
-    // exact solution, the line search algorithm returns a solution
-    // which decreases the value of the objective function
-    // sufficiently. More precisely, we are looking for a step_size
-    // s.t.
-    //
-    //   f(step_size) <= f(0) + sufficient_decrease * f'(0) * step_size
-    //
-    double line_search_sufficient_function_decrease = 1e-4;
-
-    // In each iteration of the line search,
-    //
-    //  new_step_size >= max_line_search_step_contraction * step_size
-    //
-    // Note that by definition, for contraction:
-    //
-    //  0 < max_step_contraction < min_step_contraction < 1
-    //
-    double max_line_search_step_contraction = 1e-3;
-
-    // In each iteration of the line search,
-    //
-    //  new_step_size <= min_line_search_step_contraction * step_size
-    //
-    // Note that by definition, for contraction:
-    //
-    //  0 < max_step_contraction < min_step_contraction < 1
-    //
-    double min_line_search_step_contraction = 0.6;
-
-    // Maximum number of trial step size iterations during each line search,
-    // if a step size satisfying the search conditions cannot be found within
-    // this number of trials, the line search will terminate.
-    int max_num_line_search_step_size_iterations = 20;
-
-    // Maximum number of restarts of the line search direction algorithm before
-    // terminating the optimization. Restarts of the line search direction
-    // algorithm occur when the current algorithm fails to produce a new descent
-    // direction. This typically indicates a numerical failure, or a breakdown
-    // in the validity of the approximations used.
-    int max_num_line_search_direction_restarts = 5;
-
-    // The strong Wolfe conditions consist of the Armijo sufficient
-    // decrease condition, and an additional requirement that the
-    // step-size be chosen s.t. the _magnitude_ ('strong' Wolfe
-    // conditions) of the gradient along the search direction
-    // decreases sufficiently. Precisely, this second condition
-    // is that we seek a step_size s.t.
-    //
-    //   |f'(step_size)| <= sufficient_curvature_decrease * |f'(0)|
-    //
-    // Where f() is the line search objective and f'() is the derivative
-    // of f w.r.t step_size (d f / d step_size).
-    double line_search_sufficient_curvature_decrease = 0.9;
-
-    // During the bracketing phase of the Wolfe search, the step size is
-    // increased until either a point satisfying the Wolfe conditions is
-    // found, or an upper bound for a bracket containing a point satisfying
-    // the conditions is found.  Precisely, at each iteration of the
-    // expansion:
-    //
-    //   new_step_size <= max_step_expansion * step_size.
-    //
-    // By definition for expansion, max_step_expansion > 1.0.
-    double max_line_search_step_expansion = 10.0;
-
-    // Maximum number of iterations for the minimizer to run for.
-    int max_num_iterations = 50;
-
-    // Maximum time for which the minimizer should run for.
-    double max_solver_time_in_seconds = 1e9;
-
-    // Minimizer terminates when
-    //
-    //   (new_cost - old_cost) < function_tolerance * old_cost;
-    //
-    double function_tolerance = 1e-6;
-
-    // Minimizer terminates when
-    //
-    //   max_i |x - Project(Plus(x, -g(x))| < gradient_tolerance
-    //
-    // This value should typically be 1e-4 * function_tolerance.
-    double gradient_tolerance = 1e-10;
-
-    // Minimizer terminates when
-    //
-    //   |step|_2 <= parameter_tolerance * ( |x|_2 +  parameter_tolerance)
-    //
-    double parameter_tolerance = 1e-8;
-
-    // Logging options ---------------------------------------------------------
-
-    LoggingType logging_type = PER_MINIMIZER_ITERATION;
-
-    // By default the Minimizer progress is logged to VLOG(1), which
-    // is sent to STDERR depending on the vlog level. If this flag is
-    // set to true, and logging_type is not SILENT, the logging output
-    // is sent to STDOUT.
-    bool minimizer_progress_to_stdout = false;
-
-    // If true, the user's parameter blocks are updated at the end of
-    // every Minimizer iteration, otherwise they are updated when the
-    // Minimizer terminates. This is useful if, for example, the user
-    // wishes to visualize the state of the optimization every
-    // iteration.
-    bool update_state_every_iteration = false;
-
-    // Callbacks that are executed at the end of each iteration of the
-    // Minimizer. An iteration may terminate midway, either due to
-    // numerical failures or because one of the convergence tests has
-    // been satisfied. In this case none of the callbacks are
-    // executed.
-
-    // Callbacks are executed in the order that they are specified in
-    // this vector. By default, parameter blocks are updated only at
-    // the end of the optimization, i.e when the Minimizer
-    // terminates. This behaviour is controlled by
-    // update_state_every_variable. If the user wishes to have access
-    // to the update parameter blocks when his/her callbacks are
-    // executed, then set update_state_every_iteration to true.
-    //
-    // The solver does NOT take ownership of these pointers.
-    std::vector<IterationCallback*> callbacks;
-  };
-
-  struct CERES_EXPORT Summary {
-    // A brief one line description of the state of the solver after
-    // termination.
-    std::string BriefReport() const;
-
-    // A full multiline description of the state of the solver after
-    // termination.
-    std::string FullReport() const;
-
-    bool IsSolutionUsable() const;
-
-    // Minimizer summary -------------------------------------------------
-    TerminationType termination_type = FAILURE;
-
-    // Reason why the solver terminated.
-    std::string message = "ceres::GradientProblemSolve was not called.";
-
-    // Cost of the problem (value of the objective function) before
-    // the optimization.
-    double initial_cost = -1.0;
-
-    // Cost of the problem (value of the objective function) after the
-    // optimization.
-    double final_cost = -1.0;
-
-    // IterationSummary for each minimizer iteration in order.
-    std::vector<IterationSummary> iterations;
-
-    // Number of times the cost (and not the gradient) was evaluated.
-    int num_cost_evaluations = -1;
-
-    // Number of times the gradient (and the cost) were evaluated.
-    int num_gradient_evaluations = -1;
-
-    // Sum total of all time spent inside Ceres when Solve is called.
-    double total_time_in_seconds = -1.0;
-
-    // Time (in seconds) spent evaluating the cost.
-    double cost_evaluation_time_in_seconds = -1.0;
-
-    // Time (in seconds) spent evaluating the gradient.
-    double gradient_evaluation_time_in_seconds = -1.0;
-
-    // Time (in seconds) spent minimizing the interpolating polynomial
-    // to compute the next candidate step size as part of a line search.
-    double line_search_polynomial_minimization_time_in_seconds = -1.0;
-
-    // Number of parameters in the problem.
-    int num_parameters = -1;
-
-    // Dimension of the tangent space of the problem.
-    int num_tangent_parameters = -1;
-
-    // Type of line search direction used.
-    LineSearchDirectionType line_search_direction_type = LBFGS;
-
-    // Type of the line search algorithm used.
-    LineSearchType line_search_type = WOLFE;
-
-    //  When performing line search, the degree of the polynomial used
-    //  to approximate the objective function.
-    LineSearchInterpolationType line_search_interpolation_type = CUBIC;
-
-    // If the line search direction is NONLINEAR_CONJUGATE_GRADIENT,
-    // then this indicates the particular variant of non-linear
-    // conjugate gradient used.
-    NonlinearConjugateGradientType nonlinear_conjugate_gradient_type =
-        FLETCHER_REEVES;
-
-    // If the type of the line search direction is LBFGS, then this
-    // indicates the rank of the Hessian approximation.
-    int max_lbfgs_rank = -1;
-  };
-
-  // Once a least squares problem has been built, this function takes
-  // the problem and optimizes it based on the values of the options
-  // parameters. Upon return, a detailed summary of the work performed
-  // by the preprocessor, the non-linear minimizer and the linear
-  // solver are reported in the summary object.
-  virtual void Solve(const GradientProblemSolver::Options& options,
-                     const GradientProblem& problem,
-                     double* parameters,
-                     GradientProblemSolver::Summary* summary);
-};
-
-// Helper function which avoids going through the interface.
-CERES_EXPORT void Solve(const GradientProblemSolver::Options& options,
-                        const GradientProblem& problem,
-                        double* parameters,
-                        GradientProblemSolver::Summary* summary);
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_GRADIENT_PROBLEM_SOLVER_H_
diff --git a/third_party/ceres/include/ceres/internal/array_selector.h b/third_party/ceres/include/ceres/internal/array_selector.h
deleted file mode 100644
index 9480146..0000000
--- a/third_party/ceres/include/ceres/internal/array_selector.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-
-#ifndef CERES_PUBLIC_INTERNAL_ARRAY_SELECTOR_H_
-#define CERES_PUBLIC_INTERNAL_ARRAY_SELECTOR_H_
-
-#include <array>
-#include <vector>
-
-#include "ceres/internal/fixed_array.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-// StaticFixedArray selects the best array implementation based on template
-// arguments. If the size is not known at compile-time, pass
-// ceres::DYNAMIC as a size-template argument.
-//
-// Three different containers are selected in different scenarios:
-//
-//   num_elements == DYNAMIC:
-//      -> ceres::internal::FixedArray<T, max_stack_size>(size)
-
-//   num_elements != DYNAMIC  &&  num_elements <= max_stack_size
-//      -> std::array<T,num_elements>
-
-//   num_elements != DYNAMIC  &&  num_elements >  max_stack_size
-//      -> std::vector<T>(num_elements)
-//
-template <typename T,
-          int num_elements,
-          int max_num_elements_on_stack,
-          bool dynamic = (num_elements == DYNAMIC),
-          bool fits_on_stack = (num_elements <= max_num_elements_on_stack)>
-struct ArraySelector {};
-
-template <typename T,
-          int num_elements,
-          int max_num_elements_on_stack,
-          bool fits_on_stack>
-struct ArraySelector<T,
-                     num_elements,
-                     max_num_elements_on_stack,
-                     true,
-                     fits_on_stack>
-    : ceres::internal::FixedArray<T, max_num_elements_on_stack> {
-  explicit ArraySelector(int s)
-      : ceres::internal::FixedArray<T, max_num_elements_on_stack>(s) {}
-};
-
-template <typename T, int num_elements, int max_num_elements_on_stack>
-struct ArraySelector<T, num_elements, max_num_elements_on_stack, false, true>
-    : std::array<T, num_elements> {
-  explicit ArraySelector(int s) { CHECK_EQ(s, num_elements); }
-};
-
-template <typename T, int num_elements, int max_num_elements_on_stack>
-struct ArraySelector<T, num_elements, max_num_elements_on_stack, false, false>
-    : std::vector<T> {
-  explicit ArraySelector(int s) : std::vector<T>(s) {
-    CHECK_EQ(s, num_elements);
-  }
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_ARRAY_SELECTOR_H_
diff --git a/third_party/ceres/include/ceres/internal/autodiff.h b/third_party/ceres/include/ceres/internal/autodiff.h
deleted file mode 100644
index 8b02a2b..0000000
--- a/third_party/ceres/include/ceres/internal/autodiff.h
+++ /dev/null
@@ -1,363 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Computation of the Jacobian matrix for vector-valued functions of multiple
-// variables, using automatic differentiation based on the implementation of
-// dual numbers in jet.h. Before reading the rest of this file, it is advisable
-// to read jet.h's header comment in detail.
-//
-// The helper wrapper AutoDifferentiate() computes the jacobian of
-// functors with templated operator() taking this form:
-//
-//   struct F {
-//     template<typename T>
-//     bool operator()(const T *x, const T *y, ..., T *z) {
-//       // Compute z[] based on x[], y[], ...
-//       // return true if computation succeeded, false otherwise.
-//     }
-//   };
-//
-// All inputs and outputs may be vector-valued.
-//
-// To understand how jets are used to compute the jacobian, a
-// picture may help. Consider a vector-valued function, F, returning 3
-// dimensions and taking a vector-valued parameter of 4 dimensions:
-//
-//     y            x
-//   [ * ]    F   [ * ]
-//   [ * ]  <---  [ * ]
-//   [ * ]        [ * ]
-//                [ * ]
-//
-// Similar to the 2-parameter example for f described in jet.h, computing the
-// jacobian dy/dx is done by substituting a suitable jet object for x and all
-// intermediate steps of the computation of F. Since x is has 4 dimensions, use
-// a Jet<double, 4>.
-//
-// Before substituting a jet object for x, the dual components are set
-// appropriately for each dimension of x:
-//
-//          y                       x
-//   [ * | * * * * ]    f   [ * | 1 0 0 0 ]   x0
-//   [ * | * * * * ]  <---  [ * | 0 1 0 0 ]   x1
-//   [ * | * * * * ]        [ * | 0 0 1 0 ]   x2
-//         ---+---          [ * | 0 0 0 1 ]   x3
-//            |                   ^ ^ ^ ^
-//          dy/dx                 | | | +----- infinitesimal for x3
-//                                | | +------- infinitesimal for x2
-//                                | +--------- infinitesimal for x1
-//                                +----------- infinitesimal for x0
-//
-// The reason to set the internal 4x4 submatrix to the identity is that we wish
-// to take the derivative of y separately with respect to each dimension of x.
-// Each column of the 4x4 identity is therefore for a single component of the
-// independent variable x.
-//
-// Then the jacobian of the mapping, dy/dx, is the 3x4 sub-matrix of the
-// extended y vector, indicated in the above diagram.
-//
-// Functors with multiple parameters
-// ---------------------------------
-// In practice, it is often convenient to use a function f of two or more
-// vector-valued parameters, for example, x[3] and z[6]. Unfortunately, the jet
-// framework is designed for a single-parameter vector-valued input. The wrapper
-// in this file addresses this issue adding support for functions with one or
-// more parameter vectors.
-//
-// To support multiple parameters, all the parameter vectors are concatenated
-// into one and treated as a single parameter vector, except that since the
-// functor expects different inputs, we need to construct the jets as if they
-// were part of a single parameter vector. The extended jets are passed
-// separately for each parameter.
-//
-// For example, consider a functor F taking two vector parameters, p[2] and
-// q[3], and producing an output y[4]:
-//
-//   struct F {
-//     template<typename T>
-//     bool operator()(const T *p, const T *q, T *z) {
-//       // ...
-//     }
-//   };
-//
-// In this case, the necessary jet type is Jet<double, 5>. Here is a
-// visualization of the jet objects in this case:
-//
-//          Dual components for p ----+
-//                                    |
-//                                   -+-
-//           y                 [ * | 1 0 | 0 0 0 ]    --- p[0]
-//                             [ * | 0 1 | 0 0 0 ]    --- p[1]
-//   [ * | . . | + + + ]         |
-//   [ * | . . | + + + ]         v
-//   [ * | . . | + + + ]  <--- F(p, q)
-//   [ * | . . | + + + ]            ^
-//         ^^^   ^^^^^              |
-//        dy/dp  dy/dq            [ * | 0 0 | 1 0 0 ] --- q[0]
-//                                [ * | 0 0 | 0 1 0 ] --- q[1]
-//                                [ * | 0 0 | 0 0 1 ] --- q[2]
-//                                            --+--
-//                                              |
-//          Dual components for q --------------+
-//
-// where the 4x2 submatrix (marked with ".") and 4x3 submatrix (marked with "+"
-// of y in the above diagram are the derivatives of y with respect to p and q
-// respectively. This is how autodiff works for functors taking multiple vector
-// valued arguments (up to 6).
-//
-// Jacobian null pointers (nullptr)
-// --------------------------------
-// In general, the functions below will accept nullptr for all or some of the
-// Jacobian parameters, meaning that those Jacobians will not be computed.
-
-#ifndef CERES_PUBLIC_INTERNAL_AUTODIFF_H_
-#define CERES_PUBLIC_INTERNAL_AUTODIFF_H_
-
-#include <array>
-#include <cstddef>
-#include <utility>
-
-#include "ceres/internal/array_selector.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/internal/parameter_dims.h"
-#include "ceres/internal/variadic_evaluate.h"
-#include "ceres/jet.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-// If the number of parameters exceeds this values, the corresponding jets are
-// placed on the heap. This will reduce performance by a factor of 2-5 on
-// current compilers.
-#ifndef CERES_AUTODIFF_MAX_PARAMETERS_ON_STACK
-#define CERES_AUTODIFF_MAX_PARAMETERS_ON_STACK 50
-#endif
-
-#ifndef CERES_AUTODIFF_MAX_RESIDUALS_ON_STACK
-#define CERES_AUTODIFF_MAX_RESIDUALS_ON_STACK 20
-#endif
-
-namespace ceres::internal {
-
-// Extends src by a 1st order perturbation for every dimension and puts it in
-// dst. The size of src is N. Since this is also used for perturbations in
-// blocked arrays, offset is used to shift which part of the jet the
-// perturbation occurs. This is used to set up the extended x augmented by an
-// identity matrix. The JetT type should be a Jet type, and T should be a
-// numeric type (e.g. double). For example,
-//
-//             0   1 2   3 4 5   6 7 8
-//   dst[0]  [ * | . . | 1 0 0 | . . . ]
-//   dst[1]  [ * | . . | 0 1 0 | . . . ]
-//   dst[2]  [ * | . . | 0 0 1 | . . . ]
-//
-// is what would get put in dst if N was 3, offset was 3, and the jet type JetT
-// was 8-dimensional.
-template <int j, int N, int Offset, typename T, typename JetT>
-struct Make1stOrderPerturbation {
- public:
-  inline static void Apply(const T* src, JetT* dst) {
-    if (j == 0) {
-      DCHECK(src);
-      DCHECK(dst);
-    }
-    dst[j] = JetT(src[j], j + Offset);
-    Make1stOrderPerturbation<j + 1, N, Offset, T, JetT>::Apply(src, dst);
-  }
-};
-
-template <int N, int Offset, typename T, typename JetT>
-struct Make1stOrderPerturbation<N, N, Offset, T, JetT> {
- public:
-  static void Apply(const T* /* NOT USED */, JetT* /* NOT USED */) {}
-};
-
-// Calls Make1stOrderPerturbation for every parameter block.
-//
-// Example:
-// If one having three parameter blocks with dimensions (3, 2, 4), the call
-// Make1stOrderPerturbations<integer_sequence<3, 2, 4>::Apply(params, x);
-// will result in the following calls to Make1stOrderPerturbation:
-// Make1stOrderPerturbation<0, 3, 0>::Apply(params[0], x + 0);
-// Make1stOrderPerturbation<0, 2, 3>::Apply(params[1], x + 3);
-// Make1stOrderPerturbation<0, 4, 5>::Apply(params[2], x + 5);
-template <typename Seq, int ParameterIdx = 0, int Offset = 0>
-struct Make1stOrderPerturbations;
-
-template <int N, int... Ns, int ParameterIdx, int Offset>
-struct Make1stOrderPerturbations<std::integer_sequence<int, N, Ns...>,
-                                 ParameterIdx,
-                                 Offset> {
-  template <typename T, typename JetT>
-  inline static void Apply(T const* const* parameters, JetT* x) {
-    Make1stOrderPerturbation<0, N, Offset, T, JetT>::Apply(
-        parameters[ParameterIdx], x + Offset);
-    Make1stOrderPerturbations<std::integer_sequence<int, Ns...>,
-                              ParameterIdx + 1,
-                              Offset + N>::Apply(parameters, x);
-  }
-};
-
-// End of 'recursion'. Nothing more to do.
-template <int ParameterIdx, int Total>
-struct Make1stOrderPerturbations<std::integer_sequence<int>,
-                                 ParameterIdx,
-                                 Total> {
-  template <typename T, typename JetT>
-  static void Apply(T const* const* /* NOT USED */, JetT* /* NOT USED */) {}
-};
-
-// Takes the 0th order part of src, assumed to be a Jet type, and puts it in
-// dst. This is used to pick out the "vector" part of the extended y.
-template <typename JetT, typename T>
-inline void Take0thOrderPart(int M, const JetT* src, T dst) {
-  DCHECK(src);
-  for (int i = 0; i < M; ++i) {
-    dst[i] = src[i].a;
-  }
-}
-
-// Takes N 1st order parts, starting at index N0, and puts them in the M x N
-// matrix 'dst'. This is used to pick out the "matrix" parts of the extended y.
-template <int N0, int N, typename JetT, typename T>
-inline void Take1stOrderPart(const int M, const JetT* src, T* dst) {
-  DCHECK(src);
-  DCHECK(dst);
-  for (int i = 0; i < M; ++i) {
-    Eigen::Map<Eigen::Matrix<T, N, 1>>(dst + N * i, N) =
-        src[i].v.template segment<N>(N0);
-  }
-}
-
-// Calls Take1stOrderPart for every parameter block.
-//
-// Example:
-// If one having three parameter blocks with dimensions (3, 2, 4), the call
-// Take1stOrderParts<integer_sequence<3, 2, 4>::Apply(num_outputs,
-//                                                    output,
-//                                                    jacobians);
-// will result in the following calls to Take1stOrderPart:
-// if (jacobians[0]) {
-//   Take1stOrderPart<0, 3>(num_outputs, output, jacobians[0]);
-// }
-// if (jacobians[1]) {
-//   Take1stOrderPart<3, 2>(num_outputs, output, jacobians[1]);
-// }
-// if (jacobians[2]) {
-//   Take1stOrderPart<5, 4>(num_outputs, output, jacobians[2]);
-// }
-template <typename Seq, int ParameterIdx = 0, int Offset = 0>
-struct Take1stOrderParts;
-
-template <int N, int... Ns, int ParameterIdx, int Offset>
-struct Take1stOrderParts<std::integer_sequence<int, N, Ns...>,
-                         ParameterIdx,
-                         Offset> {
-  template <typename JetT, typename T>
-  inline static void Apply(int num_outputs, JetT* output, T** jacobians) {
-    if (jacobians[ParameterIdx]) {
-      Take1stOrderPart<Offset, N>(num_outputs, output, jacobians[ParameterIdx]);
-    }
-    Take1stOrderParts<std::integer_sequence<int, Ns...>,
-                      ParameterIdx + 1,
-                      Offset + N>::Apply(num_outputs, output, jacobians);
-  }
-};
-
-// End of 'recursion'. Nothing more to do.
-template <int ParameterIdx, int Offset>
-struct Take1stOrderParts<std::integer_sequence<int>, ParameterIdx, Offset> {
-  template <typename T, typename JetT>
-  static void Apply(int /* NOT USED*/,
-                    JetT* /* NOT USED*/,
-                    T** /* NOT USED */) {}
-};
-
-template <int kNumResiduals,
-          typename ParameterDims,
-          typename Functor,
-          typename T>
-inline bool AutoDifferentiate(const Functor& functor,
-                              T const* const* parameters,
-                              int dynamic_num_outputs,
-                              T* function_value,
-                              T** jacobians) {
-  using JetT = Jet<T, ParameterDims::kNumParameters>;
-  using Parameters = typename ParameterDims::Parameters;
-
-  if (kNumResiduals != DYNAMIC) {
-    DCHECK_EQ(kNumResiduals, dynamic_num_outputs);
-  }
-
-  ArraySelector<JetT,
-                ParameterDims::kNumParameters,
-                CERES_AUTODIFF_MAX_PARAMETERS_ON_STACK>
-      parameters_as_jets(ParameterDims::kNumParameters);
-
-  // Pointers to the beginning of each parameter block
-  std::array<JetT*, ParameterDims::kNumParameterBlocks> unpacked_parameters =
-      ParameterDims::GetUnpackedParameters(parameters_as_jets.data());
-
-  // If the number of residuals is fixed, we use the template argument as the
-  // number of outputs. Otherwise we use the num_outputs parameter. Note: The
-  // ?-operator here is compile-time evaluated, therefore num_outputs is also
-  // a compile-time constant for functors with fixed residuals.
-  const int num_outputs =
-      kNumResiduals == DYNAMIC ? dynamic_num_outputs : kNumResiduals;
-  DCHECK_GT(num_outputs, 0);
-
-  ArraySelector<JetT, kNumResiduals, CERES_AUTODIFF_MAX_RESIDUALS_ON_STACK>
-      residuals_as_jets(num_outputs);
-
-  // Invalidate the output Jets, so that we can detect if the user
-  // did not assign values to all of them.
-  for (int i = 0; i < num_outputs; ++i) {
-    residuals_as_jets[i].a = kImpossibleValue;
-    residuals_as_jets[i].v.setConstant(kImpossibleValue);
-  }
-
-  Make1stOrderPerturbations<Parameters>::Apply(parameters,
-                                               parameters_as_jets.data());
-
-  if (!VariadicEvaluate<ParameterDims>(
-          functor, unpacked_parameters.data(), residuals_as_jets.data())) {
-    return false;
-  }
-
-  Take0thOrderPart(num_outputs, residuals_as_jets.data(), function_value);
-  Take1stOrderParts<Parameters>::Apply(
-      num_outputs, residuals_as_jets.data(), jacobians);
-
-  return true;
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_AUTODIFF_H_
diff --git a/third_party/ceres/include/ceres/internal/disable_warnings.h b/third_party/ceres/include/ceres/internal/disable_warnings.h
deleted file mode 100644
index b6e38aa..0000000
--- a/third_party/ceres/include/ceres/internal/disable_warnings.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// This file has the sole purpose to silence warnings when including Ceres.
-
-// This is not your usual header guard. The macro CERES_WARNINGS_DISABLED
-// shows up again in reenable_warnings.h.
-#ifndef CERES_WARNINGS_DISABLED
-#define CERES_WARNINGS_DISABLED
-
-#ifdef _MSC_VER
-#pragma warning(push)
-// Disable the warning C4251 which is triggered by stl classes in
-// Ceres' public interface. To quote MSDN: "C4251 can be ignored "
-// "if you are deriving from a type in the Standard C++ Library"
-#pragma warning(disable : 4251)
-#endif
-
-#endif  // CERES_WARNINGS_DISABLED
diff --git a/third_party/ceres/include/ceres/internal/eigen.h b/third_party/ceres/include/ceres/internal/eigen.h
deleted file mode 100644
index fee6b52..0000000
--- a/third_party/ceres/include/ceres/internal/eigen.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_EIGEN_H_
-#define CERES_INTERNAL_EIGEN_H_
-
-#include "Eigen/Core"
-
-namespace ceres {
-
-using Vector = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-using Matrix =
-    Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
-using VectorRef = Eigen::Map<Vector>;
-using MatrixRef = Eigen::Map<Matrix>;
-using ConstVectorRef = Eigen::Map<const Vector>;
-using ConstMatrixRef = Eigen::Map<const Matrix>;
-
-// Column major matrices for DenseSparseMatrix/DenseQRSolver
-using ColMajorMatrix =
-    Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor>;
-
-using ColMajorMatrixRef =
-    Eigen::Map<ColMajorMatrix, 0, Eigen::Stride<Eigen::Dynamic, 1>>;
-
-using ConstColMajorMatrixRef =
-    Eigen::Map<const ColMajorMatrix, 0, Eigen::Stride<Eigen::Dynamic, 1>>;
-
-// C++ does not support templated typdefs, thus the need for this
-// struct so that we can support statically sized Matrix and Maps.
-template <int num_rows = Eigen::Dynamic, int num_cols = Eigen::Dynamic>
-struct EigenTypes {
-  using Matrix =
-      Eigen::Matrix<double,
-                    num_rows,
-                    num_cols,
-                    num_cols == 1 ? Eigen::ColMajor : Eigen::RowMajor>;
-
-  using MatrixRef = Eigen::Map<Matrix>;
-  using ConstMatrixRef = Eigen::Map<const Matrix>;
-  using Vector = Eigen::Matrix<double, num_rows, 1>;
-  using VectorRef = Eigen::Map<Eigen::Matrix<double, num_rows, 1>>;
-  using ConstVectorRef = Eigen::Map<const Eigen::Matrix<double, num_rows, 1>>;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_EIGEN_H_
diff --git a/third_party/ceres/include/ceres/internal/euler_angles.h b/third_party/ceres/include/ceres/internal/euler_angles.h
deleted file mode 100644
index 38f2702..0000000
--- a/third_party/ceres/include/ceres/internal/euler_angles.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef CERES_PUBLIC_INTERNAL_EULER_ANGLES_H_
-#define CERES_PUBLIC_INTERNAL_EULER_ANGLES_H_
-
-#include <type_traits>
-
-namespace ceres {
-namespace internal {
-
-// The EulerSystem struct represents an Euler Angle Convention in compile time.
-// It acts like a trait structure and is also used as a tag for dispatching
-// Euler angle conversion function templates
-//
-// Internally, it implements the convention laid out in "Euler angle
-// conversion", Ken Shoemake, Graphics Gems IV, where a choice of axis for the
-// first rotation (out of 3) and 3 binary choices compactly specify all 24
-// rotation conventions
-//
-//  - InnerAxis: Axis for the first rotation. This is specified by struct tags
-//  axis::X, axis::Y, and axis::Z
-//
-//  - Parity: Defines the parity of the axis permutation. The axis sequence has
-//  Even parity if the second axis of rotation is 'greater-than' the first axis
-//  of rotation according to the order X<Y<Z<X, otherwise it has Odd parity.
-//  This is specified by struct tags Even and Odd
-//
-//  - AngleConvention: Defines whether Proper Euler Angles (originally defined
-//  by Euler, which has the last axis repeated, i.e. ZYZ, ZXZ, etc), or
-//  Tait-Bryan Angles (introduced by the nautical and aerospace fields, i.e.
-//  using ZYX for roll-pitch-yaw) are used. This is specified by struct Tags
-//  ProperEuler and TaitBryan.
-//
-//  - FrameConvention: Defines whether the three rotations are be in a global
-//  frame of reference (extrinsic) or in a body centred frame of reference
-//  (intrinsic). This is specified by struct tags Extrinsic and Intrinsic
-
-namespace axis {
-struct X : std::integral_constant<int, 0> {};
-struct Y : std::integral_constant<int, 1> {};
-struct Z : std::integral_constant<int, 2> {};
-}  // namespace axis
-
-struct Even;
-struct Odd;
-
-struct ProperEuler;
-struct TaitBryan;
-
-struct Extrinsic;
-struct Intrinsic;
-
-template <typename InnerAxisType,
-          typename ParityType,
-          typename AngleConventionType,
-          typename FrameConventionType>
-struct EulerSystem {
-  static constexpr bool kIsParityOdd = std::is_same_v<ParityType, Odd>;
-  static constexpr bool kIsProperEuler =
-      std::is_same_v<AngleConventionType, ProperEuler>;
-  static constexpr bool kIsIntrinsic =
-      std::is_same_v<FrameConventionType, Intrinsic>;
-
-  static constexpr int kAxes[3] = {
-      InnerAxisType::value,
-      (InnerAxisType::value + 1 + static_cast<int>(kIsParityOdd)) % 3,
-      (InnerAxisType::value + 2 - static_cast<int>(kIsParityOdd)) % 3};
-};
-
-}  // namespace internal
-
-// Define human readable aliases to the type of the tags
-using ExtrinsicXYZ = internal::EulerSystem<internal::axis::X,
-                                           internal::Even,
-                                           internal::TaitBryan,
-                                           internal::Extrinsic>;
-using ExtrinsicXYX = internal::EulerSystem<internal::axis::X,
-                                           internal::Even,
-                                           internal::ProperEuler,
-                                           internal::Extrinsic>;
-using ExtrinsicXZY = internal::EulerSystem<internal::axis::X,
-                                           internal::Odd,
-                                           internal::TaitBryan,
-                                           internal::Extrinsic>;
-using ExtrinsicXZX = internal::EulerSystem<internal::axis::X,
-                                           internal::Odd,
-                                           internal::ProperEuler,
-                                           internal::Extrinsic>;
-using ExtrinsicYZX = internal::EulerSystem<internal::axis::Y,
-                                           internal::Even,
-                                           internal::TaitBryan,
-                                           internal::Extrinsic>;
-using ExtrinsicYZY = internal::EulerSystem<internal::axis::Y,
-                                           internal::Even,
-                                           internal::ProperEuler,
-                                           internal::Extrinsic>;
-using ExtrinsicYXZ = internal::EulerSystem<internal::axis::Y,
-                                           internal::Odd,
-                                           internal::TaitBryan,
-                                           internal::Extrinsic>;
-using ExtrinsicYXY = internal::EulerSystem<internal::axis::Y,
-                                           internal::Odd,
-                                           internal::ProperEuler,
-                                           internal::Extrinsic>;
-using ExtrinsicZXY = internal::EulerSystem<internal::axis::Z,
-                                           internal::Even,
-                                           internal::TaitBryan,
-                                           internal::Extrinsic>;
-using ExtrinsicZXZ = internal::EulerSystem<internal::axis::Z,
-                                           internal::Even,
-                                           internal::ProperEuler,
-                                           internal::Extrinsic>;
-using ExtrinsicZYX = internal::EulerSystem<internal::axis::Z,
-                                           internal::Odd,
-                                           internal::TaitBryan,
-                                           internal::Extrinsic>;
-using ExtrinsicZYZ = internal::EulerSystem<internal::axis::Z,
-                                           internal::Odd,
-                                           internal::ProperEuler,
-                                           internal::Extrinsic>;
-/* Rotating axes */
-using IntrinsicZYX = internal::EulerSystem<internal::axis::X,
-                                           internal::Even,
-                                           internal::TaitBryan,
-                                           internal::Intrinsic>;
-using IntrinsicXYX = internal::EulerSystem<internal::axis::X,
-                                           internal::Even,
-                                           internal::ProperEuler,
-                                           internal::Intrinsic>;
-using IntrinsicYZX = internal::EulerSystem<internal::axis::X,
-                                           internal::Odd,
-                                           internal::TaitBryan,
-                                           internal::Intrinsic>;
-using IntrinsicXZX = internal::EulerSystem<internal::axis::X,
-                                           internal::Odd,
-                                           internal::ProperEuler,
-                                           internal::Intrinsic>;
-using IntrinsicXZY = internal::EulerSystem<internal::axis::Y,
-                                           internal::Even,
-                                           internal::TaitBryan,
-                                           internal::Intrinsic>;
-using IntrinsicYZY = internal::EulerSystem<internal::axis::Y,
-                                           internal::Even,
-                                           internal::ProperEuler,
-                                           internal::Intrinsic>;
-using IntrinsicZXY = internal::EulerSystem<internal::axis::Y,
-                                           internal::Odd,
-                                           internal::TaitBryan,
-                                           internal::Intrinsic>;
-using IntrinsicYXY = internal::EulerSystem<internal::axis::Y,
-                                           internal::Odd,
-                                           internal::ProperEuler,
-                                           internal::Intrinsic>;
-using IntrinsicYXZ = internal::EulerSystem<internal::axis::Z,
-                                           internal::Even,
-                                           internal::TaitBryan,
-                                           internal::Intrinsic>;
-using IntrinsicZXZ = internal::EulerSystem<internal::axis::Z,
-                                           internal::Even,
-                                           internal::ProperEuler,
-                                           internal::Intrinsic>;
-using IntrinsicXYZ = internal::EulerSystem<internal::axis::Z,
-                                           internal::Odd,
-                                           internal::TaitBryan,
-                                           internal::Intrinsic>;
-using IntrinsicZYZ = internal::EulerSystem<internal::axis::Z,
-                                           internal::Odd,
-                                           internal::ProperEuler,
-                                           internal::Intrinsic>;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_INTERNAL_EULER_ANGLES_H_
diff --git a/third_party/ceres/include/ceres/internal/fixed_array.h b/third_party/ceres/include/ceres/internal/fixed_array.h
deleted file mode 100644
index 0e35f63..0000000
--- a/third_party/ceres/include/ceres/internal/fixed_array.h
+++ /dev/null
@@ -1,465 +0,0 @@
-// Copyright 2018 The Abseil Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-// -----------------------------------------------------------------------------
-// File: fixed_array.h
-// -----------------------------------------------------------------------------
-//
-// A `FixedArray<T>` represents a non-resizable array of `T` where the length of
-// the array can be determined at run-time. It is a good replacement for
-// non-standard and deprecated uses of `alloca()` and variable length arrays
-// within the GCC extension. (See
-// https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html).
-//
-// `FixedArray` allocates small arrays inline, keeping performance fast by
-// avoiding heap operations. It also helps reduce the chances of
-// accidentally overflowing your stack if large input is passed to
-// your function.
-
-#ifndef CERES_PUBLIC_INTERNAL_FIXED_ARRAY_H_
-#define CERES_PUBLIC_INTERNAL_FIXED_ARRAY_H_
-
-#include <Eigen/Core>  // For Eigen::aligned_allocator
-#include <algorithm>
-#include <array>
-#include <cstddef>
-#include <memory>
-#include <tuple>
-#include <type_traits>
-
-#include "ceres/internal/memory.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-constexpr static auto kFixedArrayUseDefault = static_cast<size_t>(-1);
-
-// The default fixed array allocator.
-//
-// As one can not easily detect if a struct contains or inherits from a fixed
-// size Eigen type, to be safe the Eigen::aligned_allocator is used by default.
-// But trivial types can never contain Eigen types, so std::allocator is used to
-// safe some heap memory.
-template <typename T>
-using FixedArrayDefaultAllocator =
-    typename std::conditional<std::is_trivial<T>::value,
-                              std::allocator<T>,
-                              Eigen::aligned_allocator<T>>::type;
-
-// -----------------------------------------------------------------------------
-// FixedArray
-// -----------------------------------------------------------------------------
-//
-// A `FixedArray` provides a run-time fixed-size array, allocating a small array
-// inline for efficiency.
-//
-// Most users should not specify an `inline_elements` argument and let
-// `FixedArray` automatically determine the number of elements
-// to store inline based on `sizeof(T)`. If `inline_elements` is specified, the
-// `FixedArray` implementation will use inline storage for arrays with a
-// length <= `inline_elements`.
-//
-// Note that a `FixedArray` constructed with a `size_type` argument will
-// default-initialize its values by leaving trivially constructible types
-// uninitialized (e.g. int, int[4], double), and others default-constructed.
-// This matches the behavior of c-style arrays and `std::array`, but not
-// `std::vector`.
-//
-// Note that `FixedArray` does not provide a public allocator; if it requires a
-// heap allocation, it will do so with global `::operator new[]()` and
-// `::operator delete[]()`, even if T provides class-scope overrides for these
-// operators.
-template <typename T,
-          size_t N = kFixedArrayUseDefault,
-          typename A = FixedArrayDefaultAllocator<T>>
-class FixedArray {
-  static_assert(!std::is_array<T>::value || std::extent<T>::value > 0,
-                "Arrays with unknown bounds cannot be used with FixedArray.");
-
-  static constexpr size_t kInlineBytesDefault = 256;
-
-  using AllocatorTraits = std::allocator_traits<A>;
-  // std::iterator_traits isn't guaranteed to be SFINAE-friendly until C++17,
-  // but this seems to be mostly pedantic.
-  template <typename Iterator>
-  using EnableIfForwardIterator = typename std::enable_if<std::is_convertible<
-      typename std::iterator_traits<Iterator>::iterator_category,
-      std::forward_iterator_tag>::value>::type;
-  static constexpr bool DefaultConstructorIsNonTrivial() {
-    return !std::is_trivially_default_constructible<StorageElement>::value;
-  }
-
- public:
-  using allocator_type = typename AllocatorTraits::allocator_type;
-  using value_type = typename AllocatorTraits::value_type;
-  using pointer = typename AllocatorTraits::pointer;
-  using const_pointer = typename AllocatorTraits::const_pointer;
-  using reference = value_type&;
-  using const_reference = const value_type&;
-  using size_type = typename AllocatorTraits::size_type;
-  using difference_type = typename AllocatorTraits::difference_type;
-  using iterator = pointer;
-  using const_iterator = const_pointer;
-  using reverse_iterator = std::reverse_iterator<iterator>;
-  using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-
-  static constexpr size_type inline_elements =
-      (N == kFixedArrayUseDefault ? kInlineBytesDefault / sizeof(value_type)
-                                  : static_cast<size_type>(N));
-
-  FixedArray(const FixedArray& other,
-             const allocator_type& a = allocator_type())
-      : FixedArray(other.begin(), other.end(), a) {}
-
-  FixedArray(FixedArray&& other, const allocator_type& a = allocator_type())
-      : FixedArray(std::make_move_iterator(other.begin()),
-                   std::make_move_iterator(other.end()),
-                   a) {}
-
-  // Creates an array object that can store `n` elements.
-  // Note that trivially constructible elements will be uninitialized.
-  explicit FixedArray(size_type n, const allocator_type& a = allocator_type())
-      : storage_(n, a) {
-    if (DefaultConstructorIsNonTrivial()) {
-      ConstructRange(storage_.alloc(), storage_.begin(), storage_.end());
-    }
-  }
-
-  // Creates an array initialized with `n` copies of `val`.
-  FixedArray(size_type n,
-             const value_type& val,
-             const allocator_type& a = allocator_type())
-      : storage_(n, a) {
-    ConstructRange(storage_.alloc(), storage_.begin(), storage_.end(), val);
-  }
-
-  // Creates an array initialized with the size and contents of `init_list`.
-  FixedArray(std::initializer_list<value_type> init_list,
-             const allocator_type& a = allocator_type())
-      : FixedArray(init_list.begin(), init_list.end(), a) {}
-
-  // Creates an array initialized with the elements from the input
-  // range. The array's size will always be `std::distance(first, last)`.
-  // REQUIRES: Iterator must be a forward_iterator or better.
-  template <typename Iterator, EnableIfForwardIterator<Iterator>* = nullptr>
-  FixedArray(Iterator first,
-             Iterator last,
-             const allocator_type& a = allocator_type())
-      : storage_(std::distance(first, last), a) {
-    CopyRange(storage_.alloc(), storage_.begin(), first, last);
-  }
-
-  ~FixedArray() noexcept {
-    for (auto* cur = storage_.begin(); cur != storage_.end(); ++cur) {
-      AllocatorTraits::destroy(storage_.alloc(), cur);
-    }
-  }
-
-  // Assignments are deleted because they break the invariant that the size of a
-  // `FixedArray` never changes.
-  void operator=(FixedArray&&) = delete;
-  void operator=(const FixedArray&) = delete;
-
-  // FixedArray::size()
-  //
-  // Returns the length of the fixed array.
-  size_type size() const { return storage_.size(); }
-
-  // FixedArray::max_size()
-  //
-  // Returns the largest possible value of `std::distance(begin(), end())` for a
-  // `FixedArray<T>`. This is equivalent to the most possible addressable bytes
-  // over the number of bytes taken by T.
-  constexpr size_type max_size() const {
-    return (std::numeric_limits<difference_type>::max)() / sizeof(value_type);
-  }
-
-  // FixedArray::empty()
-  //
-  // Returns whether or not the fixed array is empty.
-  bool empty() const { return size() == 0; }
-
-  // FixedArray::memsize()
-  //
-  // Returns the memory size of the fixed array in bytes.
-  size_t memsize() const { return size() * sizeof(value_type); }
-
-  // FixedArray::data()
-  //
-  // Returns a const T* pointer to elements of the `FixedArray`. This pointer
-  // can be used to access (but not modify) the contained elements.
-  const_pointer data() const { return AsValueType(storage_.begin()); }
-
-  // Overload of FixedArray::data() to return a T* pointer to elements of the
-  // fixed array. This pointer can be used to access and modify the contained
-  // elements.
-  pointer data() { return AsValueType(storage_.begin()); }
-
-  // FixedArray::operator[]
-  //
-  // Returns a reference the ith element of the fixed array.
-  // REQUIRES: 0 <= i < size()
-  reference operator[](size_type i) {
-    DCHECK_LT(i, size());
-    return data()[i];
-  }
-
-  // Overload of FixedArray::operator()[] to return a const reference to the
-  // ith element of the fixed array.
-  // REQUIRES: 0 <= i < size()
-  const_reference operator[](size_type i) const {
-    DCHECK_LT(i, size());
-    return data()[i];
-  }
-
-  // FixedArray::front()
-  //
-  // Returns a reference to the first element of the fixed array.
-  reference front() { return *begin(); }
-
-  // Overload of FixedArray::front() to return a reference to the first element
-  // of a fixed array of const values.
-  const_reference front() const { return *begin(); }
-
-  // FixedArray::back()
-  //
-  // Returns a reference to the last element of the fixed array.
-  reference back() { return *(end() - 1); }
-
-  // Overload of FixedArray::back() to return a reference to the last element
-  // of a fixed array of const values.
-  const_reference back() const { return *(end() - 1); }
-
-  // FixedArray::begin()
-  //
-  // Returns an iterator to the beginning of the fixed array.
-  iterator begin() { return data(); }
-
-  // Overload of FixedArray::begin() to return a const iterator to the
-  // beginning of the fixed array.
-  const_iterator begin() const { return data(); }
-
-  // FixedArray::cbegin()
-  //
-  // Returns a const iterator to the beginning of the fixed array.
-  const_iterator cbegin() const { return begin(); }
-
-  // FixedArray::end()
-  //
-  // Returns an iterator to the end of the fixed array.
-  iterator end() { return data() + size(); }
-
-  // Overload of FixedArray::end() to return a const iterator to the end of the
-  // fixed array.
-  const_iterator end() const { return data() + size(); }
-
-  // FixedArray::cend()
-  //
-  // Returns a const iterator to the end of the fixed array.
-  const_iterator cend() const { return end(); }
-
-  // FixedArray::rbegin()
-  //
-  // Returns a reverse iterator from the end of the fixed array.
-  reverse_iterator rbegin() { return reverse_iterator(end()); }
-
-  // Overload of FixedArray::rbegin() to return a const reverse iterator from
-  // the end of the fixed array.
-  const_reverse_iterator rbegin() const {
-    return const_reverse_iterator(end());
-  }
-
-  // FixedArray::crbegin()
-  //
-  // Returns a const reverse iterator from the end of the fixed array.
-  const_reverse_iterator crbegin() const { return rbegin(); }
-
-  // FixedArray::rend()
-  //
-  // Returns a reverse iterator from the beginning of the fixed array.
-  reverse_iterator rend() { return reverse_iterator(begin()); }
-
-  // Overload of FixedArray::rend() for returning a const reverse iterator
-  // from the beginning of the fixed array.
-  const_reverse_iterator rend() const {
-    return const_reverse_iterator(begin());
-  }
-
-  // FixedArray::crend()
-  //
-  // Returns a reverse iterator from the beginning of the fixed array.
-  const_reverse_iterator crend() const { return rend(); }
-
-  // FixedArray::fill()
-  //
-  // Assigns the given `value` to all elements in the fixed array.
-  void fill(const value_type& val) { std::fill(begin(), end(), val); }
-
-  // Relational operators. Equality operators are elementwise using
-  // `operator==`, while order operators order FixedArrays lexicographically.
-  friend bool operator==(const FixedArray& lhs, const FixedArray& rhs) {
-    return std::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
-  }
-
-  friend bool operator!=(const FixedArray& lhs, const FixedArray& rhs) {
-    return !(lhs == rhs);
-  }
-
-  friend bool operator<(const FixedArray& lhs, const FixedArray& rhs) {
-    return std::lexicographical_compare(
-        lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
-  }
-
-  friend bool operator>(const FixedArray& lhs, const FixedArray& rhs) {
-    return rhs < lhs;
-  }
-
-  friend bool operator<=(const FixedArray& lhs, const FixedArray& rhs) {
-    return !(rhs < lhs);
-  }
-
-  friend bool operator>=(const FixedArray& lhs, const FixedArray& rhs) {
-    return !(lhs < rhs);
-  }
-
- private:
-  // StorageElement
-  //
-  // For FixedArrays with a C-style-array value_type, StorageElement is a POD
-  // wrapper struct called StorageElementWrapper that holds the value_type
-  // instance inside. This is needed for construction and destruction of the
-  // entire array regardless of how many dimensions it has. For all other cases,
-  // StorageElement is just an alias of value_type.
-  //
-  // Maintainer's Note: The simpler solution would be to simply wrap value_type
-  // in a struct whether it's an array or not. That causes some paranoid
-  // diagnostics to misfire, believing that 'data()' returns a pointer to a
-  // single element, rather than the packed array that it really is.
-  // e.g.:
-  //
-  //     FixedArray<char> buf(1);
-  //     sprintf(buf.data(), "foo");
-  //
-  //     error: call to int __builtin___sprintf_chk(etc...)
-  //     will always overflow destination buffer [-Werror]
-  //
-  template <typename OuterT,
-            typename InnerT = typename std::remove_extent<OuterT>::type,
-            size_t InnerN = std::extent<OuterT>::value>
-  struct StorageElementWrapper {
-    InnerT array[InnerN];
-  };
-
-  using StorageElement =
-      typename std::conditional<std::is_array<value_type>::value,
-                                StorageElementWrapper<value_type>,
-                                value_type>::type;
-
-  static pointer AsValueType(pointer ptr) { return ptr; }
-  static pointer AsValueType(StorageElementWrapper<value_type>* ptr) {
-    return std::addressof(ptr->array);
-  }
-
-  static_assert(sizeof(StorageElement) == sizeof(value_type));
-  static_assert(alignof(StorageElement) == alignof(value_type));
-
-  class NonEmptyInlinedStorage {
-   public:
-    StorageElement* data() { return reinterpret_cast<StorageElement*>(buff_); }
-    void AnnotateConstruct(size_type) {}
-    void AnnotateDestruct(size_type) {}
-
-    // #ifdef ADDRESS_SANITIZER
-    //     void* RedzoneBegin() { return &redzone_begin_; }
-    //     void* RedzoneEnd() { return &redzone_end_ + 1; }
-    // #endif  // ADDRESS_SANITIZER
-
-   private:
-    // ADDRESS_SANITIZER_REDZONE(redzone_begin_);
-    alignas(StorageElement) char buff_[sizeof(StorageElement[inline_elements])];
-    // ADDRESS_SANITIZER_REDZONE(redzone_end_);
-  };
-
-  class EmptyInlinedStorage {
-   public:
-    StorageElement* data() { return nullptr; }
-    void AnnotateConstruct(size_type) {}
-    void AnnotateDestruct(size_type) {}
-  };
-
-  using InlinedStorage =
-      typename std::conditional<inline_elements == 0,
-                                EmptyInlinedStorage,
-                                NonEmptyInlinedStorage>::type;
-
-  // Storage
-  //
-  // An instance of Storage manages the inline and out-of-line memory for
-  // instances of FixedArray. This guarantees that even when construction of
-  // individual elements fails in the FixedArray constructor body, the
-  // destructor for Storage will still be called and out-of-line memory will be
-  // properly deallocated.
-  //
-  class Storage : public InlinedStorage {
-   public:
-    Storage(size_type n, const allocator_type& a)
-        : size_alloc_(n, a), data_(InitializeData()) {}
-
-    ~Storage() noexcept {
-      if (UsingInlinedStorage(size())) {
-        InlinedStorage::AnnotateDestruct(size());
-      } else {
-        AllocatorTraits::deallocate(alloc(), AsValueType(begin()), size());
-      }
-    }
-
-    size_type size() const { return std::get<0>(size_alloc_); }
-    StorageElement* begin() const { return data_; }
-    StorageElement* end() const { return begin() + size(); }
-    allocator_type& alloc() { return std::get<1>(size_alloc_); }
-
-   private:
-    static bool UsingInlinedStorage(size_type n) {
-      return n <= inline_elements;
-    }
-
-    StorageElement* InitializeData() {
-      if (UsingInlinedStorage(size())) {
-        InlinedStorage::AnnotateConstruct(size());
-        return InlinedStorage::data();
-      } else {
-        return reinterpret_cast<StorageElement*>(
-            AllocatorTraits::allocate(alloc(), size()));
-      }
-    }
-
-    // Using std::tuple and not absl::CompressedTuple, as it has a lot of
-    // dependencies to other absl headers.
-    std::tuple<size_type, allocator_type> size_alloc_;
-    StorageElement* data_;
-  };
-
-  Storage storage_;
-};
-
-template <typename T, size_t N, typename A>
-constexpr size_t FixedArray<T, N, A>::kInlineBytesDefault;
-
-template <typename T, size_t N, typename A>
-constexpr typename FixedArray<T, N, A>::size_type
-    FixedArray<T, N, A>::inline_elements;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_FIXED_ARRAY_H_
diff --git a/third_party/ceres/include/ceres/internal/householder_vector.h b/third_party/ceres/include/ceres/internal/householder_vector.h
deleted file mode 100644
index dd8361c..0000000
--- a/third_party/ceres/include/ceres/internal/householder_vector.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://code.google.com/p/ceres-solver/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef CERES_PUBLIC_INTERNAL_HOUSEHOLDER_VECTOR_H_
-#define CERES_PUBLIC_INTERNAL_HOUSEHOLDER_VECTOR_H_
-
-#include "Eigen/Core"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Algorithm 5.1.1 from 'Matrix Computations' by Golub et al. (Johns Hopkins
-// Studies in Mathematical Sciences) but using the nth element of the input
-// vector as pivot instead of first. This computes the vector v with v(n) = 1
-// and beta such that H = I - beta * v * v^T is orthogonal and
-// H * x = ||x||_2 * e_n.
-//
-// NOTE: Some versions of MSVC have trouble deducing the type of v if
-// you do not specify all the template arguments explicitly.
-template <typename XVectorType, typename Scalar, int N>
-void ComputeHouseholderVector(const XVectorType& x,
-                              Eigen::Matrix<Scalar, N, 1>* v,
-                              Scalar* beta) {
-  CHECK(beta != nullptr);
-  CHECK(v != nullptr);
-  CHECK_GT(x.rows(), 1);
-  CHECK_EQ(x.rows(), v->rows());
-
-  Scalar sigma = x.head(x.rows() - 1).squaredNorm();
-  *v = x;
-  (*v)(v->rows() - 1) = Scalar(1.0);
-
-  *beta = Scalar(0.0);
-  const Scalar& x_pivot = x(x.rows() - 1);
-
-  if (sigma <= Scalar(std::numeric_limits<double>::epsilon())) {
-    if (x_pivot < Scalar(0.0)) {
-      *beta = Scalar(2.0);
-    }
-    return;
-  }
-
-  const Scalar mu = sqrt(x_pivot * x_pivot + sigma);
-  Scalar v_pivot = Scalar(1.0);
-
-  if (x_pivot <= Scalar(0.0)) {
-    v_pivot = x_pivot - mu;
-  } else {
-    v_pivot = -sigma / (x_pivot + mu);
-  }
-
-  *beta = Scalar(2.0) * v_pivot * v_pivot / (sigma + v_pivot * v_pivot);
-
-  v->head(v->rows() - 1) /= v_pivot;
-}
-
-template <typename XVectorType, typename Derived>
-typename Derived::PlainObject ApplyHouseholderVector(
-    const XVectorType& y,
-    const Eigen::MatrixBase<Derived>& v,
-    const typename Derived::Scalar& beta) {
-  return (y - v * (beta * (v.transpose() * y)));
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_HOUSEHOLDER_VECTOR_H_
diff --git a/third_party/ceres/include/ceres/internal/integer_sequence_algorithm.h b/third_party/ceres/include/ceres/internal/integer_sequence_algorithm.h
deleted file mode 100644
index 0c27d72..0000000
--- a/third_party/ceres/include/ceres/internal/integer_sequence_algorithm.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: jodebo_beck@gmx.de (Johannes Beck)
-//         sergiu.deitsch@gmail.com (Sergiu Deitsch)
-//
-// Algorithms to be used together with integer_sequence, like computing the sum
-// or the exclusive scan (sometimes called exclusive prefix sum) at compile
-// time.
-
-#ifndef CERES_PUBLIC_INTERNAL_INTEGER_SEQUENCE_ALGORITHM_H_
-#define CERES_PUBLIC_INTERNAL_INTEGER_SEQUENCE_ALGORITHM_H_
-
-#include <utility>
-
-#include "ceres/jet_fwd.h"
-
-namespace ceres::internal {
-
-// Implementation of calculating an exclusive scan (exclusive prefix sum) of an
-// integer sequence. Exclusive means that the i-th input element is not included
-// in the i-th sum. Calculating the exclusive scan for an input array I results
-// in the following output R:
-//
-// R[0] = 0
-// R[1] = I[0];
-// R[2] = I[0] + I[1];
-// R[3] = I[0] + I[1] + I[2];
-// ...
-//
-// In C++17 std::exclusive_scan does the same operation at runtime (but
-// cannot be used to calculate the prefix sum at compile time). See
-// https://en.cppreference.com/w/cpp/algorithm/exclusive_scan for a more
-// detailed description.
-//
-// Example for integer_sequence<int, 1, 4, 3> (seq := integer_sequence):
-//                   T  , Sum,          Ns...   ,          Rs...
-// ExclusiveScanImpl<int,   0, seq<int, 1, 4, 3>, seq<int         >>
-// ExclusiveScanImpl<int,   1, seq<int,    4, 3>, seq<int, 0      >>
-// ExclusiveScanImpl<int,   5, seq<int,       3>, seq<int, 0, 1   >>
-// ExclusiveScanImpl<int,   8, seq<int         >, seq<int, 0, 1, 5>>
-//                                                ^^^^^^^^^^^^^^^^^
-//                                                resulting sequence
-template <typename T, T Sum, typename SeqIn, typename SeqOut>
-struct ExclusiveScanImpl;
-
-template <typename T, T Sum, T N, T... Ns, T... Rs>
-struct ExclusiveScanImpl<T,
-                         Sum,
-                         std::integer_sequence<T, N, Ns...>,
-                         std::integer_sequence<T, Rs...>> {
-  using Type =
-      typename ExclusiveScanImpl<T,
-                                 Sum + N,
-                                 std::integer_sequence<T, Ns...>,
-                                 std::integer_sequence<T, Rs..., Sum>>::Type;
-};
-
-// End of 'recursion'. The resulting type is SeqOut.
-template <typename T, T Sum, typename SeqOut>
-struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> {
-  using Type = SeqOut;
-};
-
-// Calculates the exclusive scan of the specified integer sequence. The last
-// element (the total) is not included in the resulting sequence so they have
-// same length. This means the exclusive scan of integer_sequence<int, 1, 2, 3>
-// will be integer_sequence<int, 0, 1, 3>.
-template <typename Seq>
-class ExclusiveScanT {
-  using T = typename Seq::value_type;
-
- public:
-  using Type =
-      typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type;
-};
-
-// Helper to use exclusive scan without typename.
-template <typename Seq>
-using ExclusiveScan = typename ExclusiveScanT<Seq>::Type;
-
-// Removes all elements from a integer sequence corresponding to specified
-// ValueToRemove.
-//
-// This type should not be used directly but instead RemoveValue.
-template <typename T, T ValueToRemove, typename... Sequence>
-struct RemoveValueImpl;
-
-// Final filtered sequence
-template <typename T, T ValueToRemove, T... Values>
-struct RemoveValueImpl<T,
-                       ValueToRemove,
-                       std::integer_sequence<T, Values...>,
-                       std::integer_sequence<T>> {
-  using type = std::integer_sequence<T, Values...>;
-};
-
-// Found a matching value
-template <typename T, T ValueToRemove, T... Head, T... Tail>
-struct RemoveValueImpl<T,
-                       ValueToRemove,
-                       std::integer_sequence<T, Head...>,
-                       std::integer_sequence<T, ValueToRemove, Tail...>>
-    : RemoveValueImpl<T,
-                      ValueToRemove,
-                      std::integer_sequence<T, Head...>,
-                      std::integer_sequence<T, Tail...>> {};
-
-// Move one element from the tail to the head
-template <typename T, T ValueToRemove, T... Head, T MiddleValue, T... Tail>
-struct RemoveValueImpl<T,
-                       ValueToRemove,
-                       std::integer_sequence<T, Head...>,
-                       std::integer_sequence<T, MiddleValue, Tail...>>
-    : RemoveValueImpl<T,
-                      ValueToRemove,
-                      std::integer_sequence<T, Head..., MiddleValue>,
-                      std::integer_sequence<T, Tail...>> {};
-
-// Start recursion by splitting the integer sequence into two separate ones
-template <typename T, T ValueToRemove, T... Tail>
-struct RemoveValueImpl<T, ValueToRemove, std::integer_sequence<T, Tail...>>
-    : RemoveValueImpl<T,
-                      ValueToRemove,
-                      std::integer_sequence<T>,
-                      std::integer_sequence<T, Tail...>> {};
-
-// RemoveValue takes an integer Sequence of arbitrary type and removes all
-// elements matching ValueToRemove.
-//
-// In contrast to RemoveValueImpl, this implementation deduces the value type
-// eliminating the need to specify it explicitly.
-//
-// As an example, RemoveValue<std::integer_sequence<int, 1, 2, 3>, 4>::type will
-// not transform the type of the original sequence. However,
-// RemoveValue<std::integer_sequence<int, 0, 0, 2>, 2>::type will generate a new
-// sequence of type std::integer_sequence<int, 0, 0> by removing the value 2.
-template <typename Sequence, typename Sequence::value_type ValueToRemove>
-struct RemoveValue
-    : RemoveValueImpl<typename Sequence::value_type, ValueToRemove, Sequence> {
-};
-
-// Convenience template alias for RemoveValue.
-template <typename Sequence, typename Sequence::value_type ValueToRemove>
-using RemoveValue_t = typename RemoveValue<Sequence, ValueToRemove>::type;
-
-// Returns true if all elements of Values are equal to HeadValue.
-//
-// Returns true if Values is empty.
-template <typename T, T HeadValue, T... Values>
-inline constexpr bool AreAllEqual_v = ((HeadValue == Values) && ...);
-
-// Predicate determining whether an integer sequence is either empty or all
-// values are equal.
-template <typename Sequence>
-struct IsEmptyOrAreAllEqual;
-
-// Empty case.
-template <typename T>
-struct IsEmptyOrAreAllEqual<std::integer_sequence<T>> : std::true_type {};
-
-// General case for sequences containing at least one value.
-template <typename T, T HeadValue, T... Values>
-struct IsEmptyOrAreAllEqual<std::integer_sequence<T, HeadValue, Values...>>
-    : std::integral_constant<bool, AreAllEqual_v<T, HeadValue, Values...>> {};
-
-// Convenience variable template for IsEmptyOrAreAllEqual.
-template <class Sequence>
-inline constexpr bool IsEmptyOrAreAllEqual_v =
-    IsEmptyOrAreAllEqual<Sequence>::value;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_INTEGER_SEQUENCE_ALGORITHM_H_
diff --git a/third_party/ceres/include/ceres/internal/jet_traits.h b/third_party/ceres/include/ceres/internal/jet_traits.h
deleted file mode 100644
index f504a61..0000000
--- a/third_party/ceres/include/ceres/internal/jet_traits.h
+++ /dev/null
@@ -1,195 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sergiu.deitsch@gmail.com (Sergiu Deitsch)
-//
-
-#ifndef CERES_PUBLIC_INTERNAL_JET_TRAITS_H_
-#define CERES_PUBLIC_INTERNAL_JET_TRAITS_H_
-
-#include <tuple>
-#include <type_traits>
-#include <utility>
-
-#include "ceres/internal/integer_sequence_algorithm.h"
-#include "ceres/jet_fwd.h"
-
-namespace ceres {
-namespace internal {
-
-// Predicate that determines whether any of the Types is a Jet.
-template <typename... Types>
-struct AreAnyJet : std::false_type {};
-
-template <typename T, typename... Types>
-struct AreAnyJet<T, Types...> : AreAnyJet<Types...> {};
-
-template <typename T, int N, typename... Types>
-struct AreAnyJet<Jet<T, N>, Types...> : std::true_type {};
-
-// Convenience variable template for AreAnyJet.
-template <typename... Types>
-inline constexpr bool AreAnyJet_v = AreAnyJet<Types...>::value;
-
-// Extracts the underlying floating-point from a type T.
-template <typename T, typename E = void>
-struct UnderlyingScalar {
-  using type = T;
-};
-
-template <typename T, int N>
-struct UnderlyingScalar<Jet<T, N>> : UnderlyingScalar<T> {};
-
-// Convenience template alias for UnderlyingScalar type trait.
-template <typename T>
-using UnderlyingScalar_t = typename UnderlyingScalar<T>::type;
-
-// Predicate determining whether all Types in the pack are the same.
-//
-// Specifically, the predicate applies std::is_same recursively to pairs of
-// Types in the pack.
-template <typename T1, typename... Types>
-inline constexpr bool AreAllSame_v = (std::is_same<T1, Types>::value && ...);
-
-// Determines the rank of a type. This allows to ensure that types passed as
-// arguments are compatible to each other. The rank of Jet is determined by the
-// dimensions of the dual part. The rank of a scalar is always 0.
-// Non-specialized types default to a rank of -1.
-template <typename T, typename E = void>
-struct Rank : std::integral_constant<int, -1> {};
-
-// The rank of a scalar is 0.
-template <typename T>
-struct Rank<T, std::enable_if_t<std::is_scalar<T>::value>>
-    : std::integral_constant<int, 0> {};
-
-// The rank of a Jet is given by its dimensionality.
-template <typename T, int N>
-struct Rank<Jet<T, N>> : std::integral_constant<int, N> {};
-
-// Convenience variable template for Rank.
-template <typename T>
-inline constexpr int Rank_v = Rank<T>::value;
-
-// Constructs an integer sequence of ranks for each of the Types in the pack.
-template <typename... Types>
-using Ranks_t = std::integer_sequence<int, Rank_v<Types>...>;
-
-// Returns the scalar part of a type. This overload acts as an identity.
-template <typename T>
-constexpr decltype(auto) AsScalar(T&& value) noexcept {
-  return std::forward<T>(value);
-}
-
-// Recursively unwraps the scalar part of a Jet until a non-Jet scalar type is
-// encountered.
-template <typename T, int N>
-constexpr decltype(auto) AsScalar(const Jet<T, N>& value) noexcept(
-    noexcept(AsScalar(value.a))) {
-  return AsScalar(value.a);
-}
-
-}  // namespace internal
-
-// Type trait ensuring at least one of the types is a Jet,
-// the underlying scalar types are the same and Jet dimensions match.
-//
-// The type trait can be further specialized if necessary.
-//
-// This trait is a candidate for a concept definition once C++20 features can
-// be used.
-template <typename... Types>
-// clang-format off
-struct CompatibleJetOperands : std::integral_constant
-<
-    bool,
-    // At least one of the types is a Jet
-    internal::AreAnyJet_v<Types...> &&
-    // The underlying floating-point types are exactly the same
-    internal::AreAllSame_v<internal::UnderlyingScalar_t<Types>...> &&
-    // Non-zero ranks of types are equal
-    internal::IsEmptyOrAreAllEqual_v<internal::RemoveValue_t<internal::Ranks_t<Types...>, 0>>
->
-// clang-format on
-{};
-
-// Single Jet operand is always compatible.
-template <typename T, int N>
-struct CompatibleJetOperands<Jet<T, N>> : std::true_type {};
-
-// Single non-Jet operand is always incompatible.
-template <typename T>
-struct CompatibleJetOperands<T> : std::false_type {};
-
-// Empty operands are always incompatible.
-template <>
-struct CompatibleJetOperands<> : std::false_type {};
-
-// Convenience variable template ensuring at least one of the types is a Jet,
-// the underlying scalar types are the same and Jet dimensions match.
-//
-// This trait is a candidate for a concept definition once C++20 features can
-// be used.
-template <typename... Types>
-inline constexpr bool CompatibleJetOperands_v =
-    CompatibleJetOperands<Types...>::value;
-
-// Type trait ensuring at least one of the types is a Jet,
-// the underlying scalar types are compatible among each other and Jet
-// dimensions match.
-//
-// The type trait can be further specialized if necessary.
-//
-// This trait is a candidate for a concept definition once C++20 features can
-// be used.
-template <typename... Types>
-// clang-format off
-struct PromotableJetOperands : std::integral_constant
-<
-    bool,
-    // Types can be compatible among each other
-    internal::AreAnyJet_v<Types...> &&
-    // Non-zero ranks of types are equal
-    internal::IsEmptyOrAreAllEqual_v<internal::RemoveValue_t<internal::Ranks_t<Types...>, 0>>
->
-// clang-format on
-{};
-
-// Convenience variable template ensuring at least one of the types is a Jet,
-// the underlying scalar types are compatible among each other and Jet
-// dimensions match.
-//
-// This trait is a candidate for a concept definition once C++20 features can
-// be used.
-template <typename... Types>
-inline constexpr bool PromotableJetOperands_v =
-    PromotableJetOperands<Types...>::value;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_INTERNAL_JET_TRAITS_H_
diff --git a/third_party/ceres/include/ceres/internal/line_parameterization.h b/third_party/ceres/include/ceres/internal/line_parameterization.h
deleted file mode 100644
index f50603d..0000000
--- a/third_party/ceres/include/ceres/internal/line_parameterization.h
+++ /dev/null
@@ -1,183 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: jodebo_beck@gmx.de (Johannes Beck)
-//
-
-#ifndef CERES_PUBLIC_INTERNAL_LINE_PARAMETERIZATION_H_
-#define CERES_PUBLIC_INTERNAL_LINE_PARAMETERIZATION_H_
-
-#include "householder_vector.h"
-
-namespace ceres {
-
-template <int AmbientSpaceDimension>
-bool LineParameterization<AmbientSpaceDimension>::Plus(
-    const double* x_ptr,
-    const double* delta_ptr,
-    double* x_plus_delta_ptr) const {
-  // We seek a box plus operator of the form
-  //
-  //   [o*, d*] = Plus([o, d], [delta_o, delta_d])
-  //
-  // where o is the origin point, d is the direction vector, delta_o is
-  // the delta of the origin point and delta_d the delta of the direction and
-  // o* and d* is the updated origin point and direction.
-  //
-  // We separate the Plus operator into the origin point and directional part
-  //   d* = Plus_d(d, delta_d)
-  //   o* = Plus_o(o, d, delta_o)
-  //
-  // The direction update function Plus_d is the same as for the homogeneous
-  // vector parameterization:
-  //
-  //   d* = H_{v(d)} [0.5 sinc(0.5 |delta_d|) delta_d, cos(0.5 |delta_d|)]^T
-  //
-  // where H is the householder matrix
-  //   H_{v} = I - (2 / |v|^2) v v^T
-  // and
-  //   v(d) = d - sign(d_n) |d| e_n.
-  //
-  // The origin point update function Plus_o is defined as
-  //
-  //   o* = o + H_{v(d)} [0.5 delta_o, 0]^T.
-
-  static constexpr int kDim = AmbientSpaceDimension;
-  using AmbientVector = Eigen::Matrix<double, kDim, 1>;
-  using AmbientVectorRef = Eigen::Map<Eigen::Matrix<double, kDim, 1>>;
-  using ConstAmbientVectorRef =
-      Eigen::Map<const Eigen::Matrix<double, kDim, 1>>;
-  using ConstTangentVectorRef =
-      Eigen::Map<const Eigen::Matrix<double, kDim - 1, 1>>;
-
-  ConstAmbientVectorRef o(x_ptr);
-  ConstAmbientVectorRef d(x_ptr + kDim);
-
-  ConstTangentVectorRef delta_o(delta_ptr);
-  ConstTangentVectorRef delta_d(delta_ptr + kDim - 1);
-  AmbientVectorRef o_plus_delta(x_plus_delta_ptr);
-  AmbientVectorRef d_plus_delta(x_plus_delta_ptr + kDim);
-
-  const double norm_delta_d = delta_d.norm();
-
-  o_plus_delta = o;
-
-  // Shortcut for zero delta direction.
-  if (norm_delta_d == 0.0) {
-    d_plus_delta = d;
-
-    if (delta_o.isZero(0.0)) {
-      return true;
-    }
-  }
-
-  // Calculate the householder transformation which is needed for f_d and f_o.
-  AmbientVector v;
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  internal::ComputeHouseholderVector<ConstAmbientVectorRef, double, kDim>(
-      d, &v, &beta);
-
-  if (norm_delta_d != 0.0) {
-    // Map the delta from the minimum representation to the over parameterized
-    // homogeneous vector. See section A6.9.2 on page 624 of Hartley & Zisserman
-    // (2nd Edition) for a detailed description.  Note there is a typo on Page
-    // 625, line 4 so check the book errata.
-    const double norm_delta_div_2 = 0.5 * norm_delta_d;
-    const double sin_delta_by_delta =
-        std::sin(norm_delta_div_2) / norm_delta_div_2;
-
-    // Apply the delta update to remain on the unit sphere. See section A6.9.3
-    // on page 625 of Hartley & Zisserman (2nd Edition) for a detailed
-    // description.
-    AmbientVector y;
-    y.template head<kDim - 1>() = 0.5 * sin_delta_by_delta * delta_d;
-    y[kDim - 1] = std::cos(norm_delta_div_2);
-
-    d_plus_delta = d.norm() * (y - v * (beta * (v.transpose() * y)));
-  }
-
-  // The null space is in the direction of the line, so the tangent space is
-  // perpendicular to the line direction. This is achieved by using the
-  // householder matrix of the direction and allow only movements
-  // perpendicular to e_n.
-  //
-  // The factor of 0.5 is used to be consistent with the line direction
-  // update.
-  AmbientVector y;
-  y << 0.5 * delta_o, 0;
-  o_plus_delta += y - v * (beta * (v.transpose() * y));
-
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool LineParameterization<AmbientSpaceDimension>::ComputeJacobian(
-    const double* x_ptr, double* jacobian_ptr) const {
-  static constexpr int kDim = AmbientSpaceDimension;
-  using AmbientVector = Eigen::Matrix<double, kDim, 1>;
-  using ConstAmbientVectorRef =
-      Eigen::Map<const Eigen::Matrix<double, kDim, 1>>;
-  using MatrixRef = Eigen::Map<
-      Eigen::Matrix<double, 2 * kDim, 2 * (kDim - 1), Eigen::RowMajor>>;
-
-  ConstAmbientVectorRef d(x_ptr + kDim);
-  MatrixRef jacobian(jacobian_ptr);
-
-  // Clear the Jacobian as only half of the matrix is not zero.
-  jacobian.setZero();
-
-  AmbientVector v;
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  internal::ComputeHouseholderVector<ConstAmbientVectorRef, double, kDim>(
-      d, &v, &beta);
-
-  // The Jacobian is equal to J = 0.5 * H.leftCols(kDim - 1) where H is
-  // the Householder matrix (H = I - beta * v * v') for the origin point. For
-  // the line direction part the Jacobian is scaled by the norm of the
-  // direction.
-  for (int i = 0; i < kDim - 1; ++i) {
-    jacobian.block(0, i, kDim, 1) = -0.5 * beta * v(i) * v;
-    jacobian.col(i)(i) += 0.5;
-  }
-
-  jacobian.template block<kDim, kDim - 1>(kDim, kDim - 1) =
-      jacobian.template block<kDim, kDim - 1>(0, 0) * d.norm();
-  return true;
-}
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_INTERNAL_LINE_PARAMETERIZATION_H_
diff --git a/third_party/ceres/include/ceres/internal/memory.h b/third_party/ceres/include/ceres/internal/memory.h
deleted file mode 100644
index e54cf2b..0000000
--- a/third_party/ceres/include/ceres/internal/memory.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2017 The Abseil Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-// -----------------------------------------------------------------------------
-// File: memory.h
-// -----------------------------------------------------------------------------
-//
-// This header file contains utility functions for managing the creation and
-// conversion of smart pointers. This file is an extension to the C++
-// standard <memory> library header file.
-
-#ifndef CERES_PUBLIC_INTERNAL_MEMORY_H_
-#define CERES_PUBLIC_INTERNAL_MEMORY_H_
-
-#include <memory>
-
-#ifdef CERES_HAVE_EXCEPTIONS
-#define CERES_INTERNAL_TRY try
-#define CERES_INTERNAL_CATCH_ANY catch (...)
-#define CERES_INTERNAL_RETHROW \
-  do {                         \
-    throw;                     \
-  } while (false)
-#else  // CERES_HAVE_EXCEPTIONS
-#define CERES_INTERNAL_TRY if (true)
-#define CERES_INTERNAL_CATCH_ANY else if (false)
-#define CERES_INTERNAL_RETHROW \
-  do {                         \
-  } while (false)
-#endif  // CERES_HAVE_EXCEPTIONS
-
-namespace ceres::internal {
-
-template <typename Allocator, typename Iterator, typename... Args>
-void ConstructRange(Allocator& alloc,
-                    Iterator first,
-                    Iterator last,
-                    const Args&... args) {
-  for (Iterator cur = first; cur != last; ++cur) {
-    CERES_INTERNAL_TRY {
-      std::allocator_traits<Allocator>::construct(
-          alloc, std::addressof(*cur), args...);
-    }
-    CERES_INTERNAL_CATCH_ANY {
-      while (cur != first) {
-        --cur;
-        std::allocator_traits<Allocator>::destroy(alloc, std::addressof(*cur));
-      }
-      CERES_INTERNAL_RETHROW;
-    }
-  }
-}
-
-template <typename Allocator, typename Iterator, typename InputIterator>
-void CopyRange(Allocator& alloc,
-               Iterator destination,
-               InputIterator first,
-               InputIterator last) {
-  for (Iterator cur = destination; first != last;
-       static_cast<void>(++cur), static_cast<void>(++first)) {
-    CERES_INTERNAL_TRY {
-      std::allocator_traits<Allocator>::construct(
-          alloc, std::addressof(*cur), *first);
-    }
-    CERES_INTERNAL_CATCH_ANY {
-      while (cur != destination) {
-        --cur;
-        std::allocator_traits<Allocator>::destroy(alloc, std::addressof(*cur));
-      }
-      CERES_INTERNAL_RETHROW;
-    }
-  }
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_MEMORY_H_
diff --git a/third_party/ceres/include/ceres/internal/numeric_diff.h b/third_party/ceres/include/ceres/internal/numeric_diff.h
deleted file mode 100644
index ba28bec..0000000
--- a/third_party/ceres/include/ceres/internal/numeric_diff.h
+++ /dev/null
@@ -1,506 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         mierle@gmail.com (Keir Mierle)
-//         tbennun@gmail.com (Tal Ben-Nun)
-//
-// Finite differencing routines used by NumericDiffCostFunction.
-
-#ifndef CERES_PUBLIC_INTERNAL_NUMERIC_DIFF_H_
-#define CERES_PUBLIC_INTERNAL_NUMERIC_DIFF_H_
-
-#include <cstring>
-#include <utility>
-
-#include "Eigen/Dense"
-#include "Eigen/StdVector"
-#include "ceres/cost_function.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/internal/variadic_evaluate.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// This is split from the main class because C++ doesn't allow partial template
-// specializations for member functions. The alternative is to repeat the main
-// class for differing numbers of parameters, which is also unfortunate.
-template <typename CostFunctor,
-          NumericDiffMethodType kMethod,
-          int kNumResiduals,
-          typename ParameterDims,
-          int kParameterBlock,
-          int kParameterBlockSize>
-struct NumericDiff {
-  // Mutates parameters but must restore them before return.
-  static bool EvaluateJacobianForParameterBlock(
-      const CostFunctor* functor,
-      const double* residuals_at_eval_point,
-      const NumericDiffOptions& options,
-      int num_residuals,
-      int parameter_block_index,
-      int parameter_block_size,
-      double** parameters,
-      double* jacobian) {
-    using Eigen::ColMajor;
-    using Eigen::Map;
-    using Eigen::Matrix;
-    using Eigen::RowMajor;
-
-    DCHECK(jacobian);
-
-    const int num_residuals_internal =
-        (kNumResiduals != ceres::DYNAMIC ? kNumResiduals : num_residuals);
-    const int parameter_block_index_internal =
-        (kParameterBlock != ceres::DYNAMIC ? kParameterBlock
-                                           : parameter_block_index);
-    const int parameter_block_size_internal =
-        (kParameterBlockSize != ceres::DYNAMIC ? kParameterBlockSize
-                                               : parameter_block_size);
-
-    using ResidualVector = Matrix<double, kNumResiduals, 1>;
-    using ParameterVector = Matrix<double, kParameterBlockSize, 1>;
-
-    // The convoluted reasoning for choosing the Row/Column major
-    // ordering of the matrix is an artifact of the restrictions in
-    // Eigen that prevent it from creating RowMajor matrices with a
-    // single column. In these cases, we ask for a ColMajor matrix.
-    using JacobianMatrix =
-        Matrix<double,
-               kNumResiduals,
-               kParameterBlockSize,
-               (kParameterBlockSize == 1) ? ColMajor : RowMajor>;
-
-    Map<JacobianMatrix> parameter_jacobian(
-        jacobian, num_residuals_internal, parameter_block_size_internal);
-
-    Map<ParameterVector> x_plus_delta(
-        parameters[parameter_block_index_internal],
-        parameter_block_size_internal);
-    ParameterVector x(x_plus_delta);
-    ParameterVector step_size =
-        x.array().abs() * ((kMethod == RIDDERS)
-                               ? options.ridders_relative_initial_step_size
-                               : options.relative_step_size);
-
-    // It is not a good idea to make the step size arbitrarily
-    // small. This will lead to problems with round off and numerical
-    // instability when dividing by the step size. The general
-    // recommendation is to not go down below sqrt(epsilon).
-    double min_step_size = std::sqrt(std::numeric_limits<double>::epsilon());
-
-    // For Ridders' method, the initial step size is required to be large,
-    // thus ridders_relative_initial_step_size is used.
-    if (kMethod == RIDDERS) {
-      min_step_size =
-          (std::max)(min_step_size, options.ridders_relative_initial_step_size);
-    }
-
-    // For each parameter in the parameter block, use finite differences to
-    // compute the derivative for that parameter.
-    FixedArray<double> temp_residual_array(num_residuals_internal);
-    FixedArray<double> residual_array(num_residuals_internal);
-    Map<ResidualVector> residuals(residual_array.data(),
-                                  num_residuals_internal);
-
-    for (int j = 0; j < parameter_block_size_internal; ++j) {
-      const double delta = (std::max)(min_step_size, step_size(j));
-
-      if (kMethod == RIDDERS) {
-        if (!EvaluateRiddersJacobianColumn(functor,
-                                           j,
-                                           delta,
-                                           options,
-                                           num_residuals_internal,
-                                           parameter_block_size_internal,
-                                           x.data(),
-                                           residuals_at_eval_point,
-                                           parameters,
-                                           x_plus_delta.data(),
-                                           temp_residual_array.data(),
-                                           residual_array.data())) {
-          return false;
-        }
-      } else {
-        if (!EvaluateJacobianColumn(functor,
-                                    j,
-                                    delta,
-                                    num_residuals_internal,
-                                    parameter_block_size_internal,
-                                    x.data(),
-                                    residuals_at_eval_point,
-                                    parameters,
-                                    x_plus_delta.data(),
-                                    temp_residual_array.data(),
-                                    residual_array.data())) {
-          return false;
-        }
-      }
-
-      parameter_jacobian.col(j).matrix() = residuals;
-    }
-    return true;
-  }
-
-  static bool EvaluateJacobianColumn(const CostFunctor* functor,
-                                     int parameter_index,
-                                     double delta,
-                                     int num_residuals,
-                                     int parameter_block_size,
-                                     const double* x_ptr,
-                                     const double* residuals_at_eval_point,
-                                     double** parameters,
-                                     double* x_plus_delta_ptr,
-                                     double* temp_residuals_ptr,
-                                     double* residuals_ptr) {
-    using Eigen::Map;
-    using Eigen::Matrix;
-
-    using ResidualVector = Matrix<double, kNumResiduals, 1>;
-    using ParameterVector = Matrix<double, kParameterBlockSize, 1>;
-
-    Map<const ParameterVector> x(x_ptr, parameter_block_size);
-    Map<ParameterVector> x_plus_delta(x_plus_delta_ptr, parameter_block_size);
-
-    Map<ResidualVector> residuals(residuals_ptr, num_residuals);
-    Map<ResidualVector> temp_residuals(temp_residuals_ptr, num_residuals);
-
-    // Mutate 1 element at a time and then restore.
-    x_plus_delta(parameter_index) = x(parameter_index) + delta;
-
-    if (!VariadicEvaluate<ParameterDims>(
-            *functor, parameters, residuals.data())) {
-      return false;
-    }
-
-    // Compute this column of the jacobian in 3 steps:
-    // 1. Store residuals for the forward part.
-    // 2. Subtract residuals for the backward (or 0) part.
-    // 3. Divide out the run.
-    double one_over_delta = 1.0 / delta;
-    if (kMethod == CENTRAL || kMethod == RIDDERS) {
-      // Compute the function on the other side of x(parameter_index).
-      x_plus_delta(parameter_index) = x(parameter_index) - delta;
-
-      if (!VariadicEvaluate<ParameterDims>(
-              *functor, parameters, temp_residuals.data())) {
-        return false;
-      }
-
-      residuals -= temp_residuals;
-      one_over_delta /= 2;
-    } else {
-      // Forward difference only; reuse existing residuals evaluation.
-      residuals -=
-          Map<const ResidualVector>(residuals_at_eval_point, num_residuals);
-    }
-
-    // Restore x_plus_delta.
-    x_plus_delta(parameter_index) = x(parameter_index);
-
-    // Divide out the run to get slope.
-    residuals *= one_over_delta;
-
-    return true;
-  }
-
-  // This numeric difference implementation uses adaptive differentiation
-  // on the parameters to obtain the Jacobian matrix. The adaptive algorithm
-  // is based on Ridders' method for adaptive differentiation, which creates
-  // a Romberg tableau from varying step sizes and extrapolates the
-  // intermediate results to obtain the current computational error.
-  //
-  // References:
-  // C.J.F. Ridders, Accurate computation of F'(x) and F'(x) F"(x), Advances
-  // in Engineering Software (1978), Volume 4, Issue 2, April 1982,
-  // Pages 75-76, ISSN 0141-1195,
-  // http://dx.doi.org/10.1016/S0141-1195(82)80057-0.
-  static bool EvaluateRiddersJacobianColumn(
-      const CostFunctor* functor,
-      int parameter_index,
-      double delta,
-      const NumericDiffOptions& options,
-      int num_residuals,
-      int parameter_block_size,
-      const double* x_ptr,
-      const double* residuals_at_eval_point,
-      double** parameters,
-      double* x_plus_delta_ptr,
-      double* temp_residuals_ptr,
-      double* residuals_ptr) {
-    using Eigen::aligned_allocator;
-    using Eigen::Map;
-    using Eigen::Matrix;
-
-    using ResidualVector = Matrix<double, kNumResiduals, 1>;
-    using ResidualCandidateMatrix =
-        Matrix<double, kNumResiduals, Eigen::Dynamic>;
-    using ParameterVector = Matrix<double, kParameterBlockSize, 1>;
-
-    Map<const ParameterVector> x(x_ptr, parameter_block_size);
-    Map<ParameterVector> x_plus_delta(x_plus_delta_ptr, parameter_block_size);
-
-    Map<ResidualVector> residuals(residuals_ptr, num_residuals);
-    Map<ResidualVector> temp_residuals(temp_residuals_ptr, num_residuals);
-
-    // In order for the algorithm to converge, the step size should be
-    // initialized to a value that is large enough to produce a significant
-    // change in the function.
-    // As the derivative is estimated, the step size decreases.
-    // By default, the step sizes are chosen so that the middle column
-    // of the Romberg tableau uses the input delta.
-    double current_step_size =
-        delta * pow(options.ridders_step_shrink_factor,
-                    options.max_num_ridders_extrapolations / 2);
-
-    // Double-buffering temporary differential candidate vectors
-    // from previous step size.
-    ResidualCandidateMatrix stepsize_candidates_a(
-        num_residuals, options.max_num_ridders_extrapolations);
-    ResidualCandidateMatrix stepsize_candidates_b(
-        num_residuals, options.max_num_ridders_extrapolations);
-    ResidualCandidateMatrix* current_candidates = &stepsize_candidates_a;
-    ResidualCandidateMatrix* previous_candidates = &stepsize_candidates_b;
-
-    // Represents the computational error of the derivative. This variable is
-    // initially set to a large value, and is set to the difference between
-    // current and previous finite difference extrapolations.
-    // norm_error is supposed to decrease as the finite difference tableau
-    // generation progresses, serving both as an estimate for differentiation
-    // error and as a measure of differentiation numerical stability.
-    double norm_error = (std::numeric_limits<double>::max)();
-
-    // Loop over decreasing step sizes until:
-    //  1. Error is smaller than a given value (ridders_epsilon),
-    //  2. Maximal order of extrapolation reached, or
-    //  3. Extrapolation becomes numerically unstable.
-    for (int i = 0; i < options.max_num_ridders_extrapolations; ++i) {
-      // Compute the numerical derivative at this step size.
-      if (!EvaluateJacobianColumn(functor,
-                                  parameter_index,
-                                  current_step_size,
-                                  num_residuals,
-                                  parameter_block_size,
-                                  x.data(),
-                                  residuals_at_eval_point,
-                                  parameters,
-                                  x_plus_delta.data(),
-                                  temp_residuals.data(),
-                                  current_candidates->col(0).data())) {
-        // Something went wrong; bail.
-        return false;
-      }
-
-      // Store initial results.
-      if (i == 0) {
-        residuals = current_candidates->col(0);
-      }
-
-      // Shrink differentiation step size.
-      current_step_size /= options.ridders_step_shrink_factor;
-
-      // Extrapolation factor for Richardson acceleration method (see below).
-      double richardson_factor = options.ridders_step_shrink_factor *
-                                 options.ridders_step_shrink_factor;
-      for (int k = 1; k <= i; ++k) {
-        // Extrapolate the various orders of finite differences using
-        // the Richardson acceleration method.
-        current_candidates->col(k) =
-            (richardson_factor * current_candidates->col(k - 1) -
-             previous_candidates->col(k - 1)) /
-            (richardson_factor - 1.0);
-
-        richardson_factor *= options.ridders_step_shrink_factor *
-                             options.ridders_step_shrink_factor;
-
-        // Compute the difference between the previous value and the current.
-        double candidate_error = (std::max)(
-            (current_candidates->col(k) - current_candidates->col(k - 1))
-                .norm(),
-            (current_candidates->col(k) - previous_candidates->col(k - 1))
-                .norm());
-
-        // If the error has decreased, update results.
-        if (candidate_error <= norm_error) {
-          norm_error = candidate_error;
-          residuals = current_candidates->col(k);
-
-          // If the error is small enough, stop.
-          if (norm_error < options.ridders_epsilon) {
-            break;
-          }
-        }
-      }
-
-      // After breaking out of the inner loop, declare convergence.
-      if (norm_error < options.ridders_epsilon) {
-        break;
-      }
-
-      // Check to see if the current gradient estimate is numerically unstable.
-      // If so, bail out and return the last stable result.
-      if (i > 0) {
-        double tableau_error =
-            (current_candidates->col(i) - previous_candidates->col(i - 1))
-                .norm();
-
-        // Compare current error to the chosen candidate's error.
-        if (tableau_error >= 2 * norm_error) {
-          break;
-        }
-      }
-
-      std::swap(current_candidates, previous_candidates);
-    }
-    return true;
-  }
-};
-
-// This function calls NumericDiff<...>::EvaluateJacobianForParameterBlock for
-// each parameter block.
-//
-// Example:
-// A call to
-// EvaluateJacobianForParameterBlocks<StaticParameterDims<2, 3>>(
-//        functor,
-//        residuals_at_eval_point,
-//        options,
-//        num_residuals,
-//        parameters,
-//        jacobians);
-// will result in the following calls to
-// NumericDiff<...>::EvaluateJacobianForParameterBlock:
-//
-// if (jacobians[0] != nullptr) {
-//   if (!NumericDiff<
-//           CostFunctor,
-//           method,
-//           kNumResiduals,
-//           StaticParameterDims<2, 3>,
-//           0,
-//           2>::EvaluateJacobianForParameterBlock(functor,
-//                                                 residuals_at_eval_point,
-//                                                 options,
-//                                                 num_residuals,
-//                                                 0,
-//                                                 2,
-//                                                 parameters,
-//                                                 jacobians[0])) {
-//     return false;
-//   }
-// }
-// if (jacobians[1] != nullptr) {
-//   if (!NumericDiff<
-//           CostFunctor,
-//           method,
-//           kNumResiduals,
-//           StaticParameterDims<2, 3>,
-//           1,
-//           3>::EvaluateJacobianForParameterBlock(functor,
-//                                                 residuals_at_eval_point,
-//                                                 options,
-//                                                 num_residuals,
-//                                                 1,
-//                                                 3,
-//                                                 parameters,
-//                                                 jacobians[1])) {
-//     return false;
-//   }
-// }
-template <typename ParameterDims,
-          typename Parameters = typename ParameterDims::Parameters,
-          int ParameterIdx = 0>
-struct EvaluateJacobianForParameterBlocks;
-
-template <typename ParameterDims, int N, int... Ns, int ParameterIdx>
-struct EvaluateJacobianForParameterBlocks<ParameterDims,
-                                          std::integer_sequence<int, N, Ns...>,
-                                          ParameterIdx> {
-  template <NumericDiffMethodType method,
-            int kNumResiduals,
-            typename CostFunctor>
-  static bool Apply(const CostFunctor* functor,
-                    const double* residuals_at_eval_point,
-                    const NumericDiffOptions& options,
-                    int num_residuals,
-                    double** parameters,
-                    double** jacobians) {
-    if (jacobians[ParameterIdx] != nullptr) {
-      if (!NumericDiff<
-              CostFunctor,
-              method,
-              kNumResiduals,
-              ParameterDims,
-              ParameterIdx,
-              N>::EvaluateJacobianForParameterBlock(functor,
-                                                    residuals_at_eval_point,
-                                                    options,
-                                                    num_residuals,
-                                                    ParameterIdx,
-                                                    N,
-                                                    parameters,
-                                                    jacobians[ParameterIdx])) {
-        return false;
-      }
-    }
-
-    return EvaluateJacobianForParameterBlocks<ParameterDims,
-                                              std::integer_sequence<int, Ns...>,
-                                              ParameterIdx + 1>::
-        template Apply<method, kNumResiduals>(functor,
-                                              residuals_at_eval_point,
-                                              options,
-                                              num_residuals,
-                                              parameters,
-                                              jacobians);
-  }
-};
-
-// End of 'recursion'. Nothing more to do.
-template <typename ParameterDims, int ParameterIdx>
-struct EvaluateJacobianForParameterBlocks<ParameterDims,
-                                          std::integer_sequence<int>,
-                                          ParameterIdx> {
-  template <NumericDiffMethodType method,
-            int kNumResiduals,
-            typename CostFunctor>
-  static bool Apply(const CostFunctor* /* NOT USED*/,
-                    const double* /* NOT USED*/,
-                    const NumericDiffOptions& /* NOT USED*/,
-                    int /* NOT USED*/,
-                    double** /* NOT USED*/,
-                    double** /* NOT USED*/) {
-    return true;
-  }
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_NUMERIC_DIFF_H_
diff --git a/third_party/ceres/include/ceres/internal/parameter_dims.h b/third_party/ceres/include/ceres/internal/parameter_dims.h
deleted file mode 100644
index b7cf935..0000000
--- a/third_party/ceres/include/ceres/internal/parameter_dims.h
+++ /dev/null
@@ -1,106 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: jodebo_beck@gmx.de (Johannes Beck)
-
-#ifndef CERES_PUBLIC_INTERNAL_PARAMETER_DIMS_H_
-#define CERES_PUBLIC_INTERNAL_PARAMETER_DIMS_H_
-
-#include <array>
-#include <utility>
-
-#include "ceres/internal/integer_sequence_algorithm.h"
-
-namespace ceres::internal {
-
-// Helper class that represents the parameter dimensions. The parameter
-// dimensions are either dynamic or the sizes are known at compile time. It is
-// used to pass parameter block dimensions around (e.g. between functions or
-// classes).
-//
-// As an example if one have three parameter blocks with dimensions (2, 4, 1),
-// one would use 'StaticParameterDims<2, 4, 1>' which is a synonym for
-// 'ParameterDims<false, 2, 4, 1>'.
-// For dynamic parameter dims, one would just use 'DynamicParameterDims', which
-// is a synonym for 'ParameterDims<true>'.
-template <bool IsDynamic, int... Ns>
-class ParameterDims {
- public:
-  using Parameters = std::integer_sequence<int, Ns...>;
-
-  // The parameter dimensions are only valid if all parameter block dimensions
-  // are greater than zero.
-  static constexpr bool kIsValid = ((Ns > 0) && ...);
-  static_assert(kIsValid,
-                "Invalid parameter block dimension detected. Each parameter "
-                "block dimension must be bigger than zero.");
-
-  static constexpr bool kIsDynamic = IsDynamic;
-  static constexpr int kNumParameterBlocks = sizeof...(Ns);
-  static_assert(kIsDynamic || kNumParameterBlocks > 0,
-                "At least one parameter block must be specified.");
-
-  static constexpr int kNumParameters = (Ns + ... + 0);
-
-  static constexpr int GetDim(int dim) { return params_[dim]; }
-
-  // If one has all parameters packed into a single array this function unpacks
-  // the parameters.
-  template <typename T>
-  static inline std::array<T*, kNumParameterBlocks> GetUnpackedParameters(
-      T* ptr) {
-    using Offsets = ExclusiveScan<Parameters>;
-    return GetUnpackedParameters(ptr, Offsets());
-  }
-
- private:
-  template <typename T, int... Indices>
-  static inline std::array<T*, kNumParameterBlocks> GetUnpackedParameters(
-      T* ptr, std::integer_sequence<int, Indices...>) {
-    return std::array<T*, kNumParameterBlocks>{{ptr + Indices...}};
-  }
-
-  static constexpr std::array<int, kNumParameterBlocks> params_{Ns...};
-};
-
-// Even static constexpr member variables needs to be defined (not only
-// declared). As the ParameterDims class is tempalted this definition must
-// be in the header file.
-template <bool IsDynamic, int... Ns>
-constexpr std::array<int, ParameterDims<IsDynamic, Ns...>::kNumParameterBlocks>
-    ParameterDims<IsDynamic, Ns...>::params_;
-
-// Using declarations for static and dynamic parameter dims. This makes client
-// code easier to read.
-template <int... Ns>
-using StaticParameterDims = ParameterDims<false, Ns...>;
-using DynamicParameterDims = ParameterDims<true>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_PARAMETER_DIMS_H_
diff --git a/third_party/ceres/include/ceres/internal/port.h b/third_party/ceres/include/ceres/internal/port.h
deleted file mode 100644
index d78ed51..0000000
--- a/third_party/ceres/include/ceres/internal/port.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_PUBLIC_INTERNAL_PORT_H_
-#define CERES_PUBLIC_INTERNAL_PORT_H_
-
-#include <cmath>  // Necessary for __cpp_lib_math_special_functions feature test
-
-// A macro to mark a function/variable/class as deprecated.
-// We use compiler specific attributes rather than the c++
-// attribute because they do not mix well with each other.
-#if defined(_MSC_VER)
-#define CERES_DEPRECATED_WITH_MSG(message) __declspec(deprecated(message))
-#elif defined(__GNUC__)
-#define CERES_DEPRECATED_WITH_MSG(message) __attribute__((deprecated(message)))
-#else
-// In the worst case fall back to c++ attribute.
-#define CERES_DEPRECATED_WITH_MSG(message) [[deprecated(message)]]
-#endif
-
-#ifndef CERES_GET_FLAG
-#define CERES_GET_FLAG(X) X
-#endif
-
-// Indicates whether C++20 is currently active
-#ifndef CERES_HAS_CPP20
-#if __cplusplus >= 202002L || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L)
-#define CERES_HAS_CPP20
-#endif  // __cplusplus >= 202002L || (defined(_MSVC_LANG) && _MSVC_LANG >=
-        // 202002L)
-#endif  // !defined(CERES_HAS_CPP20)
-
-// Prevents symbols from being substituted by the corresponding macro definition
-// under the same name. For instance, min and max are defined as macros on
-// Windows (unless NOMINMAX is defined) which causes compilation errors when
-// defining or referencing symbols under the same name.
-//
-// To be robust in all cases particularly when NOMINMAX cannot be used, use this
-// macro to annotate min/max declarations/definitions. Examples:
-//
-//   int max CERES_PREVENT_MACRO_SUBSTITUTION();
-//   min CERES_PREVENT_MACRO_SUBSTITUTION(a, b);
-//   max CERES_PREVENT_MACRO_SUBSTITUTION(a, b);
-//
-// NOTE: In case the symbols for which the substitution must be prevented are
-// used within another macro, the substitution must be inhibited using parens as
-//
-//   (std::numerical_limits<double>::max)()
-//
-// since the helper macro will not work here. Do not use this technique in
-// general case, because it will prevent argument-dependent lookup (ADL).
-//
-#define CERES_PREVENT_MACRO_SUBSTITUTION  // Yes, it's empty
-
-// CERES_DISABLE_DEPRECATED_WARNING and CERES_RESTORE_DEPRECATED_WARNING allow
-// to temporarily disable deprecation warnings
-#if defined(_MSC_VER)
-#define CERES_DISABLE_DEPRECATED_WARNING \
-  _Pragma("warning(push)") _Pragma("warning(disable : 4996)")
-#define CERES_RESTORE_DEPRECATED_WARNING _Pragma("warning(pop)")
-#else  // defined(_MSC_VER)
-#define CERES_DISABLE_DEPRECATED_WARNING
-#define CERES_RESTORE_DEPRECATED_WARNING
-#endif  // defined(_MSC_VER)
-
-#if defined(__cpp_lib_math_special_functions) &&      \
-    ((__cpp_lib_math_special_functions >= 201603L) || \
-     defined(__STDCPP_MATH_SPEC_FUNCS__) &&           \
-         (__STDCPP_MATH_SPEC_FUNCS__ >= 201003L))
-// If defined, indicates whether C++17 Bessel functions (of the first kind) are
-// available. Some standard library implementations, such as libc++ (Android
-// NDK, Apple, Clang) do not yet provide these functions. Implementations that
-// do not support C++17, but support ISO 29124:2010, provide the functions if
-// __STDCPP_MATH_SPEC_FUNCS__ is defined by the implementation to a value at
-// least 201003L and if the user defines __STDCPP_WANT_MATH_SPEC_FUNCS__ before
-// including any standard library headers. Standard library Bessel functions are
-// preferred over any other implementation.
-#define CERES_HAS_CPP17_BESSEL_FUNCTIONS
-#elif defined(_SVID_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
-// If defined, indicates that j0, j1, and jn from <math.h> are available.
-#define CERES_HAS_POSIX_BESSEL_FUNCTIONS
-#endif
-
-#endif  // CERES_PUBLIC_INTERNAL_PORT_H_
diff --git a/third_party/ceres/include/ceres/internal/reenable_warnings.h b/third_party/ceres/include/ceres/internal/reenable_warnings.h
deleted file mode 100644
index a183c25..0000000
--- a/third_party/ceres/include/ceres/internal/reenable_warnings.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-
-// This is not your usual header guard. See disable_warnings.h
-#ifdef CERES_WARNINGS_DISABLED
-#undef CERES_WARNINGS_DISABLED
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#endif  // CERES_WARNINGS_DISABLED
diff --git a/third_party/ceres/include/ceres/internal/sphere_manifold_functions.h b/third_party/ceres/include/ceres/internal/sphere_manifold_functions.h
deleted file mode 100644
index 4793442..0000000
--- a/third_party/ceres/include/ceres/internal/sphere_manifold_functions.h
+++ /dev/null
@@ -1,163 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Mike Vitus)
-//         jodebo_beck@gmx.de (Johannes Beck)
-
-#ifndef CERES_PUBLIC_INTERNAL_SPHERE_MANIFOLD_HELPERS_H_
-#define CERES_PUBLIC_INTERNAL_SPHERE_MANIFOLD_HELPERS_H_
-
-#include "ceres/constants.h"
-#include "ceres/internal/householder_vector.h"
-
-// This module contains functions to compute the SphereManifold plus and minus
-// operator and their Jacobians.
-//
-// As the parameters to these functions are shared between them, they are
-// described here: The following variable names are used:
-//  Plus(x, delta) = x + delta = x_plus_delta,
-//  Minus(y, x) = y - x = y_minus_x.
-//
-// The remaining ones are v and beta which describe the Householder
-// transformation of x, and norm_delta which is the norm of delta.
-//
-// The types of x, y, x_plus_delta and y_minus_x need to be equivalent to
-// Eigen::Matrix<double, AmbientSpaceDimension, 1> and the type of delta needs
-// to be equivalent to Eigen::Matrix<double, TangentSpaceDimension, 1>.
-//
-// The type of Jacobian plus needs to be equivalent to Eigen::Matrix<double,
-// AmbientSpaceDimension, TangentSpaceDimension, Eigen::RowMajor> and for
-// Jacobian minus Eigen::Matrix<double, TangentSpaceDimension,
-// AmbientSpaceDimension, Eigen::RowMajor>.
-//
-// For all vector / matrix inputs and outputs, template parameters are
-// used in order to allow also Eigen::Ref and Eigen block expressions to
-// be passed to the function.
-
-namespace ceres::internal {
-
-template <typename VT, typename XT, typename DeltaT, typename XPlusDeltaT>
-inline void ComputeSphereManifoldPlus(const VT& v,
-                                      double beta,
-                                      const XT& x,
-                                      const DeltaT& delta,
-                                      const double norm_delta,
-                                      XPlusDeltaT* x_plus_delta) {
-  constexpr int AmbientDim = VT::RowsAtCompileTime;
-
-  // Map the delta from the minimum representation to the over parameterized
-  // homogeneous vector. See B.2 p.25 equation (106) - (107) for more details.
-  const double sin_delta_by_delta = std::sin(norm_delta) / norm_delta;
-
-  Eigen::Matrix<double, AmbientDim, 1> y(v.size());
-  y << sin_delta_by_delta * delta, std::cos(norm_delta);
-
-  // Apply the delta update to remain on the sphere.
-  *x_plus_delta = x.norm() * ApplyHouseholderVector(y, v, beta);
-}
-
-template <typename VT, typename JacobianT>
-inline void ComputeSphereManifoldPlusJacobian(const VT& x,
-                                              JacobianT* jacobian) {
-  constexpr int AmbientSpaceDim = VT::RowsAtCompileTime;
-  using AmbientVector = Eigen::Matrix<double, AmbientSpaceDim, 1>;
-  const int ambient_size = x.size();
-  const int tangent_size = x.size() - 1;
-
-  AmbientVector v(ambient_size);
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  ComputeHouseholderVector<VT, double, AmbientSpaceDim>(x, &v, &beta);
-
-  // The Jacobian is equal to J = H.leftCols(size_ - 1) where H is the
-  // Householder matrix (H = I - beta * v * v').
-  for (int i = 0; i < tangent_size; ++i) {
-    (*jacobian).col(i) = -beta * v(i) * v;
-    (*jacobian)(i, i) += 1.0;
-  }
-  (*jacobian) *= x.norm();
-}
-
-template <typename VT, typename XT, typename YT, typename YMinusXT>
-inline void ComputeSphereManifoldMinus(
-    const VT& v, double beta, const XT& x, const YT& y, YMinusXT* y_minus_x) {
-  constexpr int AmbientSpaceDim = VT::RowsAtCompileTime;
-  constexpr int TangentSpaceDim =
-      AmbientSpaceDim == Eigen::Dynamic ? Eigen::Dynamic : AmbientSpaceDim - 1;
-  using AmbientVector = Eigen::Matrix<double, AmbientSpaceDim, 1>;
-
-  const int tangent_size = v.size() - 1;
-
-  const AmbientVector hy = ApplyHouseholderVector(y, v, beta) / x.norm();
-
-  // Calculate y - x. See B.2 p.25 equation (108).
-  const double y_last = hy[tangent_size];
-  const double hy_norm = hy.template head<TangentSpaceDim>(tangent_size).norm();
-  if (hy_norm == 0.0) {
-    y_minus_x->setZero();
-    y_minus_x->data()[tangent_size - 1] = y_last >= 0 ? 0.0 : constants::pi;
-  } else {
-    *y_minus_x = std::atan2(hy_norm, y_last) / hy_norm *
-                 hy.template head<TangentSpaceDim>(tangent_size);
-  }
-}
-
-template <typename VT, typename JacobianT>
-inline void ComputeSphereManifoldMinusJacobian(const VT& x,
-                                               JacobianT* jacobian) {
-  constexpr int AmbientSpaceDim = VT::RowsAtCompileTime;
-  using AmbientVector = Eigen::Matrix<double, AmbientSpaceDim, 1>;
-  const int ambient_size = x.size();
-  const int tangent_size = x.size() - 1;
-
-  AmbientVector v(ambient_size);
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  ComputeHouseholderVector<VT, double, AmbientSpaceDim>(x, &v, &beta);
-
-  // The Jacobian is equal to J = H.leftCols(size_ - 1) where H is the
-  // Householder matrix (H = I - beta * v * v').
-  for (int i = 0; i < tangent_size; ++i) {
-    // NOTE: The transpose is used for correctness (the product is expected to
-    // be a row vector), although here there seems to be no difference between
-    // transposing or not for Eigen (possibly a compile-time auto fix).
-    (*jacobian).row(i) = -beta * v(i) * v.transpose();
-    (*jacobian)(i, i) += 1.0;
-  }
-  (*jacobian) /= x.norm();
-}
-
-}  // namespace ceres::internal
-
-#endif
diff --git a/third_party/ceres/include/ceres/internal/variadic_evaluate.h b/third_party/ceres/include/ceres/internal/variadic_evaluate.h
deleted file mode 100644
index 61af6b2..0000000
--- a/third_party/ceres/include/ceres/internal/variadic_evaluate.h
+++ /dev/null
@@ -1,134 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         mierle@gmail.com (Keir Mierle)
-//         jodebo_beck@gmx.de (Johannes Beck)
-
-#ifndef CERES_PUBLIC_INTERNAL_VARIADIC_EVALUATE_H_
-#define CERES_PUBLIC_INTERNAL_VARIADIC_EVALUATE_H_
-
-#include <cstddef>
-#include <type_traits>
-#include <utility>
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/parameter_dims.h"
-
-namespace ceres::internal {
-
-// For fixed size cost functors
-template <typename Functor, typename T, int... Indices>
-inline bool VariadicEvaluateImpl(const Functor& functor,
-                                 T const* const* input,
-                                 T* output,
-                                 std::false_type /*is_dynamic*/,
-                                 std::integer_sequence<int, Indices...>) {
-  static_assert(sizeof...(Indices) > 0,
-                "Invalid number of parameter blocks. At least one parameter "
-                "block must be specified.");
-  return functor(input[Indices]..., output);
-}
-
-// For dynamic sized cost functors
-template <typename Functor, typename T>
-inline bool VariadicEvaluateImpl(const Functor& functor,
-                                 T const* const* input,
-                                 T* output,
-                                 std::true_type /*is_dynamic*/,
-                                 std::integer_sequence<int>) {
-  return functor(input, output);
-}
-
-// For ceres cost functors (not ceres::CostFunction)
-template <typename ParameterDims, typename Functor, typename T>
-inline bool VariadicEvaluateImpl(const Functor& functor,
-                                 T const* const* input,
-                                 T* output,
-                                 const void* /* NOT USED */) {
-  using ParameterBlockIndices =
-      std::make_integer_sequence<int, ParameterDims::kNumParameterBlocks>;
-  using IsDynamic = std::integral_constant<bool, ParameterDims::kIsDynamic>;
-  return VariadicEvaluateImpl(
-      functor, input, output, IsDynamic(), ParameterBlockIndices());
-}
-
-// For ceres::CostFunction
-template <typename ParameterDims, typename Functor, typename T>
-inline bool VariadicEvaluateImpl(const Functor& functor,
-                                 T const* const* input,
-                                 T* output,
-                                 const CostFunction* /* NOT USED */) {
-  return functor.Evaluate(input, output, nullptr);
-}
-
-// Variadic evaluate is a helper function to evaluate ceres cost function or
-// functors using an input, output and the parameter dimensions. There are
-// several ways different possibilities:
-// 1) If the passed functor is a 'ceres::CostFunction' its evaluate method is
-// called.
-// 2) If the functor is not a 'ceres::CostFunction' and the specified parameter
-// dims is dynamic, the functor must have the following signature
-// 'bool(T const* const* input, T* output)'.
-// 3) If the functor is not a 'ceres::CostFunction' and the specified parameter
-// dims is not dynamic, the input is expanded by using the number of parameter
-// blocks. The signature of the functor must have the following signature
-// 'bool()(const T* i_1, const T* i_2, ... const T* i_n, T* output)'.
-template <typename ParameterDims, typename Functor, typename T>
-inline bool VariadicEvaluate(const Functor& functor,
-                             T const* const* input,
-                             T* output) {
-  return VariadicEvaluateImpl<ParameterDims>(functor, input, output, &functor);
-}
-
-// When differentiating dynamically sized CostFunctions, VariadicEvaluate
-// expects a functor with the signature:
-//
-// bool operator()(double const* const* parameters, double* cost) const
-//
-// However for NumericDiffFirstOrderFunction, the functor has the signature
-//
-// bool operator()(double const* parameters, double* cost) const
-//
-// This thin wrapper adapts the latter to the former.
-template <typename Functor>
-class FirstOrderFunctorAdapter {
- public:
-  explicit FirstOrderFunctorAdapter(const Functor& functor)
-      : functor_(functor) {}
-  bool operator()(double const* const* parameters, double* cost) const {
-    return functor_(*parameters, cost);
-  }
-
- private:
-  const Functor& functor_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_PUBLIC_INTERNAL_VARIADIC_EVALUATE_H_
diff --git a/third_party/ceres/include/ceres/iteration_callback.h b/third_party/ceres/include/ceres/iteration_callback.h
deleted file mode 100644
index 955e2ad..0000000
--- a/third_party/ceres/include/ceres/iteration_callback.h
+++ /dev/null
@@ -1,204 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// When an iteration callback is specified, Ceres calls the callback
-// after each minimizer step (if the minimizer has not converged) and
-// passes it an IterationSummary object, defined below.
-
-#ifndef CERES_PUBLIC_ITERATION_CALLBACK_H_
-#define CERES_PUBLIC_ITERATION_CALLBACK_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-// This struct describes the state of the optimizer after each
-// iteration of the minimization.
-struct CERES_EXPORT IterationSummary {
-  // Current iteration number.
-  int iteration = 0;
-
-  // Step was numerically valid, i.e., all values are finite and the
-  // step reduces the value of the linearized model.
-  //
-  // Note: step_is_valid is always true when iteration = 0.
-  bool step_is_valid = false;
-
-  // Step did not reduce the value of the objective function
-  // sufficiently, but it was accepted because of the relaxed
-  // acceptance criterion used by the non-monotonic trust region
-  // algorithm.
-  //
-  // Note: step_is_nonmonotonic is always false when iteration = 0;
-  bool step_is_nonmonotonic = false;
-
-  // Whether or not the minimizer accepted this step or not. If the
-  // ordinary trust region algorithm is used, this means that the
-  // relative reduction in the objective function value was greater
-  // than Solver::Options::min_relative_decrease. However, if the
-  // non-monotonic trust region algorithm is used
-  // (Solver::Options:use_nonmonotonic_steps = true), then even if the
-  // relative decrease is not sufficient, the algorithm may accept the
-  // step and the step is declared successful.
-  //
-  // Note: step_is_successful is always true when iteration = 0.
-  bool step_is_successful = false;
-
-  // Value of the objective function.
-  double cost = 0.0;
-
-  // Change in the value of the objective function in this
-  // iteration. This can be positive or negative.
-  double cost_change = 0.0;
-
-  // Infinity norm of the gradient vector.
-  double gradient_max_norm = 0.0;
-
-  // 2-norm of the gradient vector.
-  double gradient_norm = 0.0;
-
-  // 2-norm of the size of the step computed by the optimization
-  // algorithm.
-  double step_norm = 0.0;
-
-  // For trust region algorithms, the ratio of the actual change in
-  // cost and the change in the cost of the linearized approximation.
-  double relative_decrease = 0.0;
-
-  // Size of the trust region at the end of the current iteration. For
-  // the Levenberg-Marquardt algorithm, the regularization parameter
-  // mu = 1.0 / trust_region_radius.
-  double trust_region_radius = 0.0;
-
-  // For the inexact step Levenberg-Marquardt algorithm, this is the
-  // relative accuracy with which the Newton(LM) step is solved. This
-  // number affects only the iterative solvers capable of solving
-  // linear systems inexactly. Factorization-based exact solvers
-  // ignore it.
-  double eta = 0.0;
-
-  // Step sized computed by the line search algorithm.
-  double step_size = 0.0;
-
-  // Number of function value evaluations used by the line search algorithm.
-  int line_search_function_evaluations = 0;
-
-  // Number of function gradient evaluations used by the line search algorithm.
-  int line_search_gradient_evaluations = 0;
-
-  // Number of iterations taken by the line search algorithm.
-  int line_search_iterations = 0;
-
-  // Number of iterations taken by the linear solver to solve for the
-  // Newton step.
-  int linear_solver_iterations = 0;
-
-  // All times reported below are wall times.
-
-  // Time (in seconds) spent inside the minimizer loop in the current
-  // iteration.
-  double iteration_time_in_seconds = 0.0;
-
-  // Time (in seconds) spent inside the trust region step solver.
-  double step_solver_time_in_seconds = 0.0;
-
-  // Time (in seconds) since the user called Solve().
-  double cumulative_time_in_seconds = 0.0;
-};
-
-// Interface for specifying callbacks that are executed at the end of
-// each iteration of the Minimizer. The solver uses the return value
-// of operator() to decide whether to continue solving or to
-// terminate. The user can return three values.
-//
-// SOLVER_ABORT indicates that the callback detected an abnormal
-// situation. The solver returns without updating the parameter blocks
-// (unless Solver::Options::update_state_every_iteration is set
-// true). Solver returns with Solver::Summary::termination_type set to
-// USER_ABORT.
-//
-// SOLVER_TERMINATE_SUCCESSFULLY indicates that there is no need to
-// optimize anymore (some user specified termination criterion has
-// been met). Solver returns with Solver::Summary::termination_type
-// set to USER_SUCCESS.
-//
-// SOLVER_CONTINUE indicates that the solver should continue
-// optimizing.
-//
-// For example, the following Callback is used internally by Ceres to
-// log the progress of the optimization.
-//
-// Callback for logging the state of the minimizer to STDERR or STDOUT
-// depending on the user's preferences and logging level.
-//
-//   class LoggingCallback : public IterationCallback {
-//    public:
-//     explicit LoggingCallback(bool log_to_stdout)
-//         : log_to_stdout_(log_to_stdout) {}
-//
-//     CallbackReturnType operator()(const IterationSummary& summary) {
-//       const char* kReportRowFormat =
-//           "% 4d: f:% 8e d:% 3.2e g:% 3.2e h:% 3.2e "
-//           "rho:% 3.2e mu:% 3.2e eta:% 3.2e li:% 3d";
-//       string output = StringPrintf(kReportRowFormat,
-//                                    summary.iteration,
-//                                    summary.cost,
-//                                    summary.cost_change,
-//                                    summary.gradient_max_norm,
-//                                    summary.step_norm,
-//                                    summary.relative_decrease,
-//                                    summary.trust_region_radius,
-//                                    summary.eta,
-//                                    summary.linear_solver_iterations);
-//       if (log_to_stdout_) {
-//         cout << output << endl;
-//       } else {
-//         VLOG(1) << output;
-//       }
-//       return SOLVER_CONTINUE;
-//     }
-//
-//    private:
-//     const bool log_to_stdout_;
-//   };
-//
-class CERES_EXPORT IterationCallback {
- public:
-  virtual ~IterationCallback();
-  virtual CallbackReturnType operator()(const IterationSummary& summary) = 0;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_ITERATION_CALLBACK_H_
diff --git a/third_party/ceres/include/ceres/jet.h b/third_party/ceres/include/ceres/jet.h
deleted file mode 100644
index 3b7f23f..0000000
--- a/third_party/ceres/include/ceres/jet.h
+++ /dev/null
@@ -1,1487 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A simple implementation of N-dimensional dual numbers, for automatically
-// computing exact derivatives of functions.
-//
-// While a complete treatment of the mechanics of automatic differentiation is
-// beyond the scope of this header (see
-// http://en.wikipedia.org/wiki/Automatic_differentiation for details), the
-// basic idea is to extend normal arithmetic with an extra element, "e," often
-// denoted with the greek symbol epsilon, such that e != 0 but e^2 = 0. Dual
-// numbers are extensions of the real numbers analogous to complex numbers:
-// whereas complex numbers augment the reals by introducing an imaginary unit i
-// such that i^2 = -1, dual numbers introduce an "infinitesimal" unit e such
-// that e^2 = 0. Dual numbers have two components: the "real" component and the
-// "infinitesimal" component, generally written as x + y*e. Surprisingly, this
-// leads to a convenient method for computing exact derivatives without needing
-// to manipulate complicated symbolic expressions.
-//
-// For example, consider the function
-//
-//   f(x) = x^2 ,
-//
-// evaluated at 10. Using normal arithmetic, f(10) = 100, and df/dx(10) = 20.
-// Next, argument 10 with an infinitesimal to get:
-//
-//   f(10 + e) = (10 + e)^2
-//             = 100 + 2 * 10 * e + e^2
-//             = 100 + 20 * e       -+-
-//                     --            |
-//                     |             +--- This is zero, since e^2 = 0
-//                     |
-//                     +----------------- This is df/dx!
-//
-// Note that the derivative of f with respect to x is simply the infinitesimal
-// component of the value of f(x + e). So, in order to take the derivative of
-// any function, it is only necessary to replace the numeric "object" used in
-// the function with one extended with infinitesimals. The class Jet, defined in
-// this header, is one such example of this, where substitution is done with
-// templates.
-//
-// To handle derivatives of functions taking multiple arguments, different
-// infinitesimals are used, one for each variable to take the derivative of. For
-// example, consider a scalar function of two scalar parameters x and y:
-//
-//   f(x, y) = x^2 + x * y
-//
-// Following the technique above, to compute the derivatives df/dx and df/dy for
-// f(1, 3) involves doing two evaluations of f, the first time replacing x with
-// x + e, the second time replacing y with y + e.
-//
-// For df/dx:
-//
-//   f(1 + e, y) = (1 + e)^2 + (1 + e) * 3
-//               = 1 + 2 * e + 3 + 3 * e
-//               = 4 + 5 * e
-//
-//               --> df/dx = 5
-//
-// For df/dy:
-//
-//   f(1, 3 + e) = 1^2 + 1 * (3 + e)
-//               = 1 + 3 + e
-//               = 4 + e
-//
-//               --> df/dy = 1
-//
-// To take the gradient of f with the implementation of dual numbers ("jets") in
-// this file, it is necessary to create a single jet type which has components
-// for the derivative in x and y, and passing them to a templated version of f:
-//
-//   template<typename T>
-//   T f(const T &x, const T &y) {
-//     return x * x + x * y;
-//   }
-//
-//   // The "2" means there should be 2 dual number components.
-//   // It computes the partial derivative at x=10, y=20.
-//   Jet<double, 2> x(10, 0);  // Pick the 0th dual number for x.
-//   Jet<double, 2> y(20, 1);  // Pick the 1st dual number for y.
-//   Jet<double, 2> z = f(x, y);
-//
-//   LOG(INFO) << "df/dx = " << z.v[0]
-//             << "df/dy = " << z.v[1];
-//
-// Most users should not use Jet objects directly; a wrapper around Jet objects,
-// which makes computing the derivative, gradient, or jacobian of templated
-// functors simple, is in autodiff.h. Even autodiff.h should not be used
-// directly; instead autodiff_cost_function.h is typically the file of interest.
-//
-// For the more mathematically inclined, this file implements first-order
-// "jets". A 1st order jet is an element of the ring
-//
-//   T[N] = T[t_1, ..., t_N] / (t_1, ..., t_N)^2
-//
-// which essentially means that each jet consists of a "scalar" value 'a' from T
-// and a 1st order perturbation vector 'v' of length N:
-//
-//   x = a + \sum_i v[i] t_i
-//
-// A shorthand is to write an element as x = a + u, where u is the perturbation.
-// Then, the main point about the arithmetic of jets is that the product of
-// perturbations is zero:
-//
-//   (a + u) * (b + v) = ab + av + bu + uv
-//                     = ab + (av + bu) + 0
-//
-// which is what operator* implements below. Addition is simpler:
-//
-//   (a + u) + (b + v) = (a + b) + (u + v).
-//
-// The only remaining question is how to evaluate the function of a jet, for
-// which we use the chain rule:
-//
-//   f(a + u) = f(a) + f'(a) u
-//
-// where f'(a) is the (scalar) derivative of f at a.
-//
-// By pushing these things through sufficiently and suitably templated
-// functions, we can do automatic differentiation. Just be sure to turn on
-// function inlining and common-subexpression elimination, or it will be very
-// slow!
-//
-// WARNING: Most Ceres users should not directly include this file or know the
-// details of how jets work. Instead the suggested method for automatic
-// derivatives is to use autodiff_cost_function.h, which is a wrapper around
-// both jets.h and autodiff.h to make taking derivatives of cost functions for
-// use in Ceres easier.
-
-#ifndef CERES_PUBLIC_JET_H_
-#define CERES_PUBLIC_JET_H_
-
-#include <cmath>
-#include <complex>
-#include <iosfwd>
-#include <iostream>  // NOLINT
-#include <limits>
-#include <numeric>
-#include <string>
-#include <type_traits>
-
-#include "Eigen/Core"
-#include "ceres/internal/jet_traits.h"
-#include "ceres/internal/port.h"
-#include "ceres/jet_fwd.h"
-
-// Here we provide partial specializations of std::common_type for the Jet class
-// to allow determining a Jet type with a common underlying arithmetic type.
-// Such an arithmetic type can be either a scalar or an another Jet. An example
-// for a common type, say, between a float and a Jet<double, N> is a Jet<double,
-// N> (i.e., std::common_type_t<float, ceres::Jet<double, N>> and
-// ceres::Jet<double, N> refer to the same type.)
-//
-// The partial specialization are also used for determining compatible types by
-// means of SFINAE and thus allow such types to be expressed as operands of
-// logical comparison operators. Missing (partial) specialization of
-// std::common_type for a particular (custom) type will therefore disable the
-// use of comparison operators defined by Ceres.
-//
-// Since these partial specializations are used as SFINAE constraints, they
-// enable standard promotion rules between various scalar types and consequently
-// their use in comparison against a Jet without providing implicit
-// conversions from a scalar, such as an int, to a Jet (see the implementation
-// of logical comparison operators below).
-
-template <typename T, int N, typename U>
-struct std::common_type<T, ceres::Jet<U, N>> {
-  using type = ceres::Jet<common_type_t<T, U>, N>;
-};
-
-template <typename T, int N, typename U>
-struct std::common_type<ceres::Jet<T, N>, U> {
-  using type = ceres::Jet<common_type_t<T, U>, N>;
-};
-
-template <typename T, int N, typename U>
-struct std::common_type<ceres::Jet<T, N>, ceres::Jet<U, N>> {
-  using type = ceres::Jet<common_type_t<T, U>, N>;
-};
-
-namespace ceres {
-
-template <typename T, int N>
-struct Jet {
-  enum { DIMENSION = N };
-  using Scalar = T;
-
-  // Default-construct "a" because otherwise this can lead to false errors about
-  // uninitialized uses when other classes relying on default constructed T
-  // (where T is a Jet<T, N>). This usually only happens in opt mode. Note that
-  // the C++ standard mandates that e.g. default constructed doubles are
-  // initialized to 0.0; see sections 8.5 of the C++03 standard.
-  Jet() : a() { v.setConstant(Scalar()); }
-
-  // Constructor from scalar: a + 0.
-  explicit Jet(const T& value) {
-    a = value;
-    v.setConstant(Scalar());
-  }
-
-  // Constructor from scalar plus variable: a + t_i.
-  Jet(const T& value, int k) {
-    a = value;
-    v.setConstant(Scalar());
-    v[k] = T(1.0);
-  }
-
-  // Constructor from scalar and vector part
-  // The use of Eigen::DenseBase allows Eigen expressions
-  // to be passed in without being fully evaluated until
-  // they are assigned to v
-  template <typename Derived>
-  EIGEN_STRONG_INLINE Jet(const T& a, const Eigen::DenseBase<Derived>& v)
-      : a(a), v(v) {}
-
-  // Compound operators
-  Jet<T, N>& operator+=(const Jet<T, N>& y) {
-    *this = *this + y;
-    return *this;
-  }
-
-  Jet<T, N>& operator-=(const Jet<T, N>& y) {
-    *this = *this - y;
-    return *this;
-  }
-
-  Jet<T, N>& operator*=(const Jet<T, N>& y) {
-    *this = *this * y;
-    return *this;
-  }
-
-  Jet<T, N>& operator/=(const Jet<T, N>& y) {
-    *this = *this / y;
-    return *this;
-  }
-
-  // Compound with scalar operators.
-  Jet<T, N>& operator+=(const T& s) {
-    *this = *this + s;
-    return *this;
-  }
-
-  Jet<T, N>& operator-=(const T& s) {
-    *this = *this - s;
-    return *this;
-  }
-
-  Jet<T, N>& operator*=(const T& s) {
-    *this = *this * s;
-    return *this;
-  }
-
-  Jet<T, N>& operator/=(const T& s) {
-    *this = *this / s;
-    return *this;
-  }
-
-  // The scalar part.
-  T a;
-
-  // The infinitesimal part.
-  Eigen::Matrix<T, N, 1> v;
-
-  // This struct needs to have an Eigen aligned operator new as it contains
-  // fixed-size Eigen types.
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-};
-
-// Unary +
-template <typename T, int N>
-inline Jet<T, N> const& operator+(const Jet<T, N>& f) {
-  return f;
-}
-
-// TODO(keir): Try adding __attribute__((always_inline)) to these functions to
-// see if it causes a performance increase.
-
-// Unary -
-template <typename T, int N>
-inline Jet<T, N> operator-(const Jet<T, N>& f) {
-  return Jet<T, N>(-f.a, -f.v);
-}
-
-// Binary +
-template <typename T, int N>
-inline Jet<T, N> operator+(const Jet<T, N>& f, const Jet<T, N>& g) {
-  return Jet<T, N>(f.a + g.a, f.v + g.v);
-}
-
-// Binary + with a scalar: x + s
-template <typename T, int N>
-inline Jet<T, N> operator+(const Jet<T, N>& f, T s) {
-  return Jet<T, N>(f.a + s, f.v);
-}
-
-// Binary + with a scalar: s + x
-template <typename T, int N>
-inline Jet<T, N> operator+(T s, const Jet<T, N>& f) {
-  return Jet<T, N>(f.a + s, f.v);
-}
-
-// Binary -
-template <typename T, int N>
-inline Jet<T, N> operator-(const Jet<T, N>& f, const Jet<T, N>& g) {
-  return Jet<T, N>(f.a - g.a, f.v - g.v);
-}
-
-// Binary - with a scalar: x - s
-template <typename T, int N>
-inline Jet<T, N> operator-(const Jet<T, N>& f, T s) {
-  return Jet<T, N>(f.a - s, f.v);
-}
-
-// Binary - with a scalar: s - x
-template <typename T, int N>
-inline Jet<T, N> operator-(T s, const Jet<T, N>& f) {
-  return Jet<T, N>(s - f.a, -f.v);
-}
-
-// Binary *
-template <typename T, int N>
-inline Jet<T, N> operator*(const Jet<T, N>& f, const Jet<T, N>& g) {
-  return Jet<T, N>(f.a * g.a, f.a * g.v + f.v * g.a);
-}
-
-// Binary * with a scalar: x * s
-template <typename T, int N>
-inline Jet<T, N> operator*(const Jet<T, N>& f, T s) {
-  return Jet<T, N>(f.a * s, f.v * s);
-}
-
-// Binary * with a scalar: s * x
-template <typename T, int N>
-inline Jet<T, N> operator*(T s, const Jet<T, N>& f) {
-  return Jet<T, N>(f.a * s, f.v * s);
-}
-
-// Binary /
-template <typename T, int N>
-inline Jet<T, N> operator/(const Jet<T, N>& f, const Jet<T, N>& g) {
-  // This uses:
-  //
-  //   a + u   (a + u)(b - v)   (a + u)(b - v)
-  //   ----- = -------------- = --------------
-  //   b + v   (b + v)(b - v)        b^2
-  //
-  // which holds because v*v = 0.
-  const T g_a_inverse = T(1.0) / g.a;
-  const T f_a_by_g_a = f.a * g_a_inverse;
-  return Jet<T, N>(f_a_by_g_a, (f.v - f_a_by_g_a * g.v) * g_a_inverse);
-}
-
-// Binary / with a scalar: s / x
-template <typename T, int N>
-inline Jet<T, N> operator/(T s, const Jet<T, N>& g) {
-  const T minus_s_g_a_inverse2 = -s / (g.a * g.a);
-  return Jet<T, N>(s / g.a, g.v * minus_s_g_a_inverse2);
-}
-
-// Binary / with a scalar: x / s
-template <typename T, int N>
-inline Jet<T, N> operator/(const Jet<T, N>& f, T s) {
-  const T s_inverse = T(1.0) / s;
-  return Jet<T, N>(f.a * s_inverse, f.v * s_inverse);
-}
-
-// Binary comparison operators for both scalars and jets. At least one of the
-// operands must be a Jet. Promotable scalars (e.g., int, float, double etc.)
-// can appear on either side of the operator. std::common_type_t is used as an
-// SFINAE constraint to selectively enable compatible operand types. This allows
-// comparison, for instance, against int literals without implicit conversion.
-// In case the Jet arithmetic type is a Jet itself, a recursive expansion of Jet
-// value is performed.
-#define CERES_DEFINE_JET_COMPARISON_OPERATOR(op)                            \
-  template <typename Lhs,                                                   \
-            typename Rhs,                                                   \
-            std::enable_if_t<PromotableJetOperands_v<Lhs, Rhs>>* = nullptr> \
-  constexpr bool operator op(const Lhs& f, const Rhs& g) noexcept(          \
-      noexcept(internal::AsScalar(f) op internal::AsScalar(g))) {           \
-    using internal::AsScalar;                                               \
-    return AsScalar(f) op AsScalar(g);                                      \
-  }
-CERES_DEFINE_JET_COMPARISON_OPERATOR(<)   // NOLINT
-CERES_DEFINE_JET_COMPARISON_OPERATOR(<=)  // NOLINT
-CERES_DEFINE_JET_COMPARISON_OPERATOR(>)   // NOLINT
-CERES_DEFINE_JET_COMPARISON_OPERATOR(>=)  // NOLINT
-CERES_DEFINE_JET_COMPARISON_OPERATOR(==)  // NOLINT
-CERES_DEFINE_JET_COMPARISON_OPERATOR(!=)  // NOLINT
-#undef CERES_DEFINE_JET_COMPARISON_OPERATOR
-
-// Pull some functions from namespace std.
-//
-// This is necessary because we want to use the same name (e.g. 'sqrt') for
-// double-valued and Jet-valued functions, but we are not allowed to put
-// Jet-valued functions inside namespace std.
-using std::abs;
-using std::acos;
-using std::asin;
-using std::atan;
-using std::atan2;
-using std::cbrt;
-using std::ceil;
-using std::copysign;
-using std::cos;
-using std::cosh;
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-using std::cyl_bessel_j;
-#endif  // CERES_HAS_CPP17_BESSEL_FUNCTIONS
-using std::erf;
-using std::erfc;
-using std::exp;
-using std::exp2;
-using std::expm1;
-using std::fdim;
-using std::floor;
-using std::fma;
-using std::fmax;
-using std::fmin;
-using std::fpclassify;
-using std::hypot;
-using std::isfinite;
-using std::isinf;
-using std::isnan;
-using std::isnormal;
-using std::log;
-using std::log10;
-using std::log1p;
-using std::log2;
-using std::norm;
-using std::pow;
-using std::signbit;
-using std::sin;
-using std::sinh;
-using std::sqrt;
-using std::tan;
-using std::tanh;
-
-// MSVC (up to 1930) defines quiet comparison functions as template functions
-// which causes compilation errors due to ambiguity in the template parameter
-// type resolution for using declarations in the ceres namespace. Workaround the
-// issue by defining specific overload and bypass MSVC standard library
-// definitions.
-#if defined(_MSC_VER)
-inline bool isgreater(double lhs,
-                      double rhs) noexcept(noexcept(std::isgreater(lhs, rhs))) {
-  return std::isgreater(lhs, rhs);
-}
-inline bool isless(double lhs,
-                   double rhs) noexcept(noexcept(std::isless(lhs, rhs))) {
-  return std::isless(lhs, rhs);
-}
-inline bool islessequal(double lhs,
-                        double rhs) noexcept(noexcept(std::islessequal(lhs,
-                                                                       rhs))) {
-  return std::islessequal(lhs, rhs);
-}
-inline bool isgreaterequal(double lhs, double rhs) noexcept(
-    noexcept(std::isgreaterequal(lhs, rhs))) {
-  return std::isgreaterequal(lhs, rhs);
-}
-inline bool islessgreater(double lhs, double rhs) noexcept(
-    noexcept(std::islessgreater(lhs, rhs))) {
-  return std::islessgreater(lhs, rhs);
-}
-inline bool isunordered(double lhs,
-                        double rhs) noexcept(noexcept(std::isunordered(lhs,
-                                                                       rhs))) {
-  return std::isunordered(lhs, rhs);
-}
-#else
-using std::isgreater;
-using std::isgreaterequal;
-using std::isless;
-using std::islessequal;
-using std::islessgreater;
-using std::isunordered;
-#endif
-
-#ifdef CERES_HAS_CPP20
-using std::lerp;
-using std::midpoint;
-#endif  // defined(CERES_HAS_CPP20)
-
-// Legacy names from pre-C++11 days.
-// clang-format off
-CERES_DEPRECATED_WITH_MSG("ceres::IsFinite will be removed in a future Ceres Solver release. Please use ceres::isfinite.")
-inline bool IsFinite(double x)   { return std::isfinite(x); }
-CERES_DEPRECATED_WITH_MSG("ceres::IsInfinite will be removed in a future Ceres Solver release. Please use ceres::isinf.")
-inline bool IsInfinite(double x) { return std::isinf(x);    }
-CERES_DEPRECATED_WITH_MSG("ceres::IsNaN will be removed in a future Ceres Solver release. Please use ceres::isnan.")
-inline bool IsNaN(double x)      { return std::isnan(x);    }
-CERES_DEPRECATED_WITH_MSG("ceres::IsNormal will be removed in a future Ceres Solver release. Please use ceres::isnormal.")
-inline bool IsNormal(double x)   { return std::isnormal(x); }
-// clang-format on
-
-// In general, f(a + h) ~= f(a) + f'(a) h, via the chain rule.
-
-// abs(x + h) ~= abs(x) + sgn(x)h
-template <typename T, int N>
-inline Jet<T, N> abs(const Jet<T, N>& f) {
-  return Jet<T, N>(abs(f.a), copysign(T(1), f.a) * f.v);
-}
-
-// copysign(a, b) composes a float with the magnitude of a and the sign of b.
-// Therefore, the function can be formally defined as
-//
-//   copysign(a, b) = sgn(b)|a|
-//
-// where
-//
-//   d/dx |x| = sgn(x)
-//   d/dx sgn(x) = 2δ(x)
-//
-// sgn(x) being the signum function. Differentiating copysign(a, b) with respect
-// to a and b gives:
-//
-//   d/da sgn(b)|a| = sgn(a) sgn(b)
-//   d/db sgn(b)|a| = 2|a|δ(b)
-//
-// with the dual representation given by
-//
-//   copysign(a + da, b + db) ~= sgn(b)|a| + (sgn(a)sgn(b) da + 2|a|δ(b) db)
-//
-// where δ(b) is the Dirac delta function.
-template <typename T, int N>
-inline Jet<T, N> copysign(const Jet<T, N>& f, const Jet<T, N> g) {
-  // The Dirac delta function  δ(b) is undefined at b=0 (here it's
-  // infinite) and 0 everywhere else.
-  T d = fpclassify(g) == FP_ZERO ? std::numeric_limits<T>::infinity() : T(0);
-  T sa = copysign(T(1), f.a);  // sgn(a)
-  T sb = copysign(T(1), g.a);  // sgn(b)
-  // The second part of the infinitesimal is 2|a|δ(b) which is either infinity
-  // or 0 unless a or any of the values of the b infinitesimal are 0. In the
-  // latter case, the corresponding values become NaNs (multiplying 0 by
-  // infinity gives NaN). We drop the constant factor 2 since it does not change
-  // the result (its values will still be either 0, infinity or NaN).
-  return Jet<T, N>(copysign(f.a, g.a), sa * sb * f.v + abs(f.a) * d * g.v);
-}
-
-// log(a + h) ~= log(a) + h / a
-template <typename T, int N>
-inline Jet<T, N> log(const Jet<T, N>& f) {
-  const T a_inverse = T(1.0) / f.a;
-  return Jet<T, N>(log(f.a), f.v * a_inverse);
-}
-
-// log10(a + h) ~= log10(a) + h / (a log(10))
-template <typename T, int N>
-inline Jet<T, N> log10(const Jet<T, N>& f) {
-  // Most compilers will expand log(10) to a constant.
-  const T a_inverse = T(1.0) / (f.a * log(T(10.0)));
-  return Jet<T, N>(log10(f.a), f.v * a_inverse);
-}
-
-// log1p(a + h) ~= log1p(a) + h / (1 + a)
-template <typename T, int N>
-inline Jet<T, N> log1p(const Jet<T, N>& f) {
-  const T a_inverse = T(1.0) / (T(1.0) + f.a);
-  return Jet<T, N>(log1p(f.a), f.v * a_inverse);
-}
-
-// exp(a + h) ~= exp(a) + exp(a) h
-template <typename T, int N>
-inline Jet<T, N> exp(const Jet<T, N>& f) {
-  const T tmp = exp(f.a);
-  return Jet<T, N>(tmp, tmp * f.v);
-}
-
-// expm1(a + h) ~= expm1(a) + exp(a) h
-template <typename T, int N>
-inline Jet<T, N> expm1(const Jet<T, N>& f) {
-  const T tmp = expm1(f.a);
-  const T expa = tmp + T(1.0);  // exp(a) = expm1(a) + 1
-  return Jet<T, N>(tmp, expa * f.v);
-}
-
-// sqrt(a + h) ~= sqrt(a) + h / (2 sqrt(a))
-template <typename T, int N>
-inline Jet<T, N> sqrt(const Jet<T, N>& f) {
-  const T tmp = sqrt(f.a);
-  const T two_a_inverse = T(1.0) / (T(2.0) * tmp);
-  return Jet<T, N>(tmp, f.v * two_a_inverse);
-}
-
-// cos(a + h) ~= cos(a) - sin(a) h
-template <typename T, int N>
-inline Jet<T, N> cos(const Jet<T, N>& f) {
-  return Jet<T, N>(cos(f.a), -sin(f.a) * f.v);
-}
-
-// acos(a + h) ~= acos(a) - 1 / sqrt(1 - a^2) h
-template <typename T, int N>
-inline Jet<T, N> acos(const Jet<T, N>& f) {
-  const T tmp = -T(1.0) / sqrt(T(1.0) - f.a * f.a);
-  return Jet<T, N>(acos(f.a), tmp * f.v);
-}
-
-// sin(a + h) ~= sin(a) + cos(a) h
-template <typename T, int N>
-inline Jet<T, N> sin(const Jet<T, N>& f) {
-  return Jet<T, N>(sin(f.a), cos(f.a) * f.v);
-}
-
-// asin(a + h) ~= asin(a) + 1 / sqrt(1 - a^2) h
-template <typename T, int N>
-inline Jet<T, N> asin(const Jet<T, N>& f) {
-  const T tmp = T(1.0) / sqrt(T(1.0) - f.a * f.a);
-  return Jet<T, N>(asin(f.a), tmp * f.v);
-}
-
-// tan(a + h) ~= tan(a) + (1 + tan(a)^2) h
-template <typename T, int N>
-inline Jet<T, N> tan(const Jet<T, N>& f) {
-  const T tan_a = tan(f.a);
-  const T tmp = T(1.0) + tan_a * tan_a;
-  return Jet<T, N>(tan_a, tmp * f.v);
-}
-
-// atan(a + h) ~= atan(a) + 1 / (1 + a^2) h
-template <typename T, int N>
-inline Jet<T, N> atan(const Jet<T, N>& f) {
-  const T tmp = T(1.0) / (T(1.0) + f.a * f.a);
-  return Jet<T, N>(atan(f.a), tmp * f.v);
-}
-
-// sinh(a + h) ~= sinh(a) + cosh(a) h
-template <typename T, int N>
-inline Jet<T, N> sinh(const Jet<T, N>& f) {
-  return Jet<T, N>(sinh(f.a), cosh(f.a) * f.v);
-}
-
-// cosh(a + h) ~= cosh(a) + sinh(a) h
-template <typename T, int N>
-inline Jet<T, N> cosh(const Jet<T, N>& f) {
-  return Jet<T, N>(cosh(f.a), sinh(f.a) * f.v);
-}
-
-// tanh(a + h) ~= tanh(a) + (1 - tanh(a)^2) h
-template <typename T, int N>
-inline Jet<T, N> tanh(const Jet<T, N>& f) {
-  const T tanh_a = tanh(f.a);
-  const T tmp = T(1.0) - tanh_a * tanh_a;
-  return Jet<T, N>(tanh_a, tmp * f.v);
-}
-
-// The floor function should be used with extreme care as this operation will
-// result in a zero derivative which provides no information to the solver.
-//
-// floor(a + h) ~= floor(a) + 0
-template <typename T, int N>
-inline Jet<T, N> floor(const Jet<T, N>& f) {
-  return Jet<T, N>(floor(f.a));
-}
-
-// The ceil function should be used with extreme care as this operation will
-// result in a zero derivative which provides no information to the solver.
-//
-// ceil(a + h) ~= ceil(a) + 0
-template <typename T, int N>
-inline Jet<T, N> ceil(const Jet<T, N>& f) {
-  return Jet<T, N>(ceil(f.a));
-}
-
-// Some new additions to C++11:
-
-// cbrt(a + h) ~= cbrt(a) + h / (3 a ^ (2/3))
-template <typename T, int N>
-inline Jet<T, N> cbrt(const Jet<T, N>& f) {
-  const T derivative = T(1.0) / (T(3.0) * cbrt(f.a * f.a));
-  return Jet<T, N>(cbrt(f.a), f.v * derivative);
-}
-
-// exp2(x + h) = 2^(x+h) ~= 2^x + h*2^x*log(2)
-template <typename T, int N>
-inline Jet<T, N> exp2(const Jet<T, N>& f) {
-  const T tmp = exp2(f.a);
-  const T derivative = tmp * log(T(2));
-  return Jet<T, N>(tmp, f.v * derivative);
-}
-
-// log2(x + h) ~= log2(x) + h / (x * log(2))
-template <typename T, int N>
-inline Jet<T, N> log2(const Jet<T, N>& f) {
-  const T derivative = T(1.0) / (f.a * log(T(2)));
-  return Jet<T, N>(log2(f.a), f.v * derivative);
-}
-
-// Like sqrt(x^2 + y^2),
-// but acts to prevent underflow/overflow for small/large x/y.
-// Note that the function is non-smooth at x=y=0,
-// so the derivative is undefined there.
-template <typename T, int N>
-inline Jet<T, N> hypot(const Jet<T, N>& x, const Jet<T, N>& y) {
-  // d/da sqrt(a) = 0.5 / sqrt(a)
-  // d/dx x^2 + y^2 = 2x
-  // So by the chain rule:
-  // d/dx sqrt(x^2 + y^2) = 0.5 / sqrt(x^2 + y^2) * 2x = x / sqrt(x^2 + y^2)
-  // d/dy sqrt(x^2 + y^2) = y / sqrt(x^2 + y^2)
-  const T tmp = hypot(x.a, y.a);
-  return Jet<T, N>(tmp, x.a / tmp * x.v + y.a / tmp * y.v);
-}
-
-// Like sqrt(x^2 + y^2 + z^2),
-// but acts to prevent underflow/overflow for small/large x/y/z.
-// Note that the function is non-smooth at x=y=z=0,
-// so the derivative is undefined there.
-template <typename T, int N>
-inline Jet<T, N> hypot(const Jet<T, N>& x,
-                       const Jet<T, N>& y,
-                       const Jet<T, N>& z) {
-  // d/da sqrt(a) = 0.5 / sqrt(a)
-  // d/dx x^2 + y^2 + z^2 = 2x
-  // So by the chain rule:
-  // d/dx sqrt(x^2 + y^2 + z^2)
-  //    = 0.5 / sqrt(x^2 + y^2 + z^2) * 2x
-  //    = x / sqrt(x^2 + y^2 + z^2)
-  // d/dy sqrt(x^2 + y^2 + z^2) = y / sqrt(x^2 + y^2 + z^2)
-  // d/dz sqrt(x^2 + y^2 + z^2) = z / sqrt(x^2 + y^2 + z^2)
-  const T tmp = hypot(x.a, y.a, z.a);
-  return Jet<T, N>(tmp, x.a / tmp * x.v + y.a / tmp * y.v + z.a / tmp * z.v);
-}
-
-// Like x * y + z but rounded only once.
-template <typename T, int N>
-inline Jet<T, N> fma(const Jet<T, N>& x,
-                     const Jet<T, N>& y,
-                     const Jet<T, N>& z) {
-  // d/dx fma(x, y, z) = y
-  // d/dy fma(x, y, z) = x
-  // d/dz fma(x, y, z) = 1
-  return Jet<T, N>(fma(x.a, y.a, z.a), y.a * x.v + x.a * y.v + z.v);
-}
-
-// Return value of fmax() and fmin() on equality
-// ---------------------------------------------
-//
-// There is arguably no good answer to what fmax() & fmin() should return on
-// equality, which for Jets by definition ONLY compares the scalar parts. We
-// choose what we think is the least worst option (averaging as Jets) which
-// minimises undesirable/unexpected behaviour as used, and also supports client
-// code written against Ceres versions prior to type promotion being supported
-// in Jet comparisons (< v2.1).
-//
-// The std::max() convention of returning the first argument on equality is
-// problematic, as it means that the derivative component may or may not be
-// preserved (when comparing a Jet with a scalar) depending upon the ordering.
-//
-// Always returning the Jet in {Jet, scalar} cases on equality is problematic
-// as it is inconsistent with the behaviour that would be obtained if the scalar
-// was first cast to Jet and the {Jet, Jet} case was used. Prior to type
-// promotion (Ceres v2.1) client code would typically cast constants to Jets
-// e.g: fmax(x, T(2.0)) which means the {Jet, Jet} case predominates, and we
-// still want the result to be order independent.
-//
-// Our intuition is that preserving a non-zero derivative is best, even if
-// its value does not match either of the inputs. Averaging achieves this
-// whilst ensuring argument ordering independence. This is also the approach
-// used by the Jax library, and TensorFlow's reduce_max().
-
-// Returns the larger of the two arguments, with Jet averaging on equality.
-// NaNs are treated as missing data.
-//
-// NOTE: This function is NOT subject to any of the error conditions specified
-//       in `math_errhandling`.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline decltype(auto) fmax(const Lhs& x, const Rhs& y) {
-  using J = std::common_type_t<Lhs, Rhs>;
-  // As x == y may set FP exceptions in the presence of NaNs when used with
-  // non-default compiler options so we avoid its use here.
-  if (isnan(x) || isnan(y) || islessgreater(x, y)) {
-    return isnan(x) || isless(x, y) ? J{y} : J{x};
-  }
-  // x == y (scalar parts) return the average of their Jet representations.
-#if defined(CERES_HAS_CPP20)
-  return midpoint(J{x}, J{y});
-#else
-  return (J{x} + J{y}) * typename J::Scalar(0.5);
-#endif  // defined(CERES_HAS_CPP20)
-}
-
-// Returns the smaller of the two arguments, with Jet averaging on equality.
-// NaNs are treated as missing data.
-//
-// NOTE: This function is NOT subject to any of the error conditions specified
-//       in `math_errhandling`.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline decltype(auto) fmin(const Lhs& x, const Rhs& y) {
-  using J = std::common_type_t<Lhs, Rhs>;
-  // As x == y may set FP exceptions in the presence of NaNs when used with
-  // non-default compiler options so we avoid its use here.
-  if (isnan(x) || isnan(y) || islessgreater(x, y)) {
-    return isnan(x) || isgreater(x, y) ? J{y} : J{x};
-  }
-  // x == y (scalar parts) return the average of their Jet representations.
-#if defined(CERES_HAS_CPP20)
-  return midpoint(J{x}, J{y});
-#else
-  return (J{x} + J{y}) * typename J::Scalar(0.5);
-#endif  // defined(CERES_HAS_CPP20)
-}
-
-// Returns the positive difference (f - g) of two arguments and zero if f <= g.
-// If at least one argument is NaN, a NaN is return.
-//
-// NOTE At least one of the argument types must be a Jet, the other one can be a
-// scalar. In case both arguments are Jets, their dimensionality must match.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline decltype(auto) fdim(const Lhs& f, const Rhs& g) {
-  using J = std::common_type_t<Lhs, Rhs>;
-  if (isnan(f) || isnan(g)) {
-    return std::numeric_limits<J>::quiet_NaN();
-  }
-  return isgreater(f, g) ? J{f - g} : J{};
-}
-
-// erf is defined as an integral that cannot be expressed analytically
-// however, the derivative is trivial to compute
-// erf(x + h) = erf(x) + h * 2*exp(-x^2)/sqrt(pi)
-template <typename T, int N>
-inline Jet<T, N> erf(const Jet<T, N>& x) {
-  // We evaluate the constant as follows:
-  //   2 / sqrt(pi) = 1 / sqrt(atan(1.))
-  // On POSIX systems it is defined as M_2_SQRTPI, but this is not
-  // portable and the type may not be T.  The above expression
-  // evaluates to full precision with IEEE arithmetic and, since it's
-  // constant, the compiler can generate exactly the same code.  gcc
-  // does so even at -O0.
-  return Jet<T, N>(erf(x.a), x.v * exp(-x.a * x.a) * (T(1) / sqrt(atan(T(1)))));
-}
-
-// erfc(x) = 1-erf(x)
-// erfc(x + h) = erfc(x) + h * (-2*exp(-x^2)/sqrt(pi))
-template <typename T, int N>
-inline Jet<T, N> erfc(const Jet<T, N>& x) {
-  // See in erf() above for the evaluation of the constant in the derivative.
-  return Jet<T, N>(erfc(x.a),
-                   -x.v * exp(-x.a * x.a) * (T(1) / sqrt(atan(T(1)))));
-}
-
-#if defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS) || \
-    defined(CERES_HAS_POSIX_BESSEL_FUNCTIONS)
-
-// Bessel functions of the first kind with integer order equal to 0, 1, n.
-//
-// Microsoft has deprecated the j[0,1,n]() POSIX Bessel functions in favour of
-// _j[0,1,n]().  Where available on MSVC, use _j[0,1,n]() to avoid deprecated
-// function errors in client code (the specific warning is suppressed when
-// Ceres itself is built).
-inline double BesselJ0(double x) {
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  return cyl_bessel_j(0, x);
-#else
-  CERES_DISABLE_DEPRECATED_WARNING
-  return j0(x);
-  CERES_RESTORE_DEPRECATED_WARNING
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-
-inline double BesselJ1(double x) {
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  return cyl_bessel_j(1, x);
-#else
-  CERES_DISABLE_DEPRECATED_WARNING
-  return j1(x);
-  CERES_RESTORE_DEPRECATED_WARNING
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-
-inline double BesselJn(int n, double x) {
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  return cyl_bessel_j(static_cast<double>(n), x);
-#else
-  CERES_DISABLE_DEPRECATED_WARNING
-  return jn(n, x);
-  CERES_RESTORE_DEPRECATED_WARNING
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-
-// For the formulae of the derivatives of the Bessel functions see the book:
-// Olver, Lozier, Boisvert, Clark, NIST Handbook of Mathematical Functions,
-// Cambridge University Press 2010.
-//
-// Formulae are also available at http://dlmf.nist.gov
-
-// See formula http://dlmf.nist.gov/10.6#E3
-// j0(a + h) ~= j0(a) - j1(a) h
-template <typename T, int N>
-inline Jet<T, N> BesselJ0(const Jet<T, N>& f) {
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  return cyl_bessel_j(0, f);
-#else
-  return Jet<T, N>(BesselJ0(f.a), -BesselJ1(f.a) * f.v);
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-
-// See formula http://dlmf.nist.gov/10.6#E1
-// j1(a + h) ~= j1(a) + 0.5 ( j0(a) - j2(a) ) h
-template <typename T, int N>
-inline Jet<T, N> BesselJ1(const Jet<T, N>& f) {
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  return cyl_bessel_j(1, f);
-#else
-  return Jet<T, N>(BesselJ1(f.a),
-                   T(0.5) * (BesselJ0(f.a) - BesselJn(2, f.a)) * f.v);
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-
-// See formula http://dlmf.nist.gov/10.6#E1
-// j_n(a + h) ~= j_n(a) + 0.5 ( j_{n-1}(a) - j_{n+1}(a) ) h
-template <typename T, int N>
-inline Jet<T, N> BesselJn(int n, const Jet<T, N>& f) {
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  return cyl_bessel_j(n, f);
-#else
-  return Jet<T, N>(
-      BesselJn(n, f.a),
-      T(0.5) * (BesselJn(n - 1, f.a) - BesselJn(n + 1, f.a)) * f.v);
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS) ||
-        // defined(CERES_HAS_POSIX_BESSEL_FUNCTIONS)
-
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-
-// See formula http://dlmf.nist.gov/10.6#E1
-// j_n(a + h) ~= j_n(a) + 0.5 ( j_{n-1}(a) - j_{n+1}(a) ) h
-template <typename T, int N>
-inline Jet<T, N> cyl_bessel_j(double v, const Jet<T, N>& f) {
-  // See formula http://dlmf.nist.gov/10.6#E3
-  // j0(a + h) ~= j0(a) - j1(a) h
-  if (fpclassify(v) == FP_ZERO) {
-    return Jet<T, N>(cyl_bessel_j(0, f.a), -cyl_bessel_j(1, f.a) * f.v);
-  }
-
-  return Jet<T, N>(
-      cyl_bessel_j(v, f.a),
-      T(0.5) * (cyl_bessel_j(v - 1, f.a) - cyl_bessel_j(v + 1, f.a)) * f.v);
-}
-
-#endif  // CERES_HAS_CPP17_BESSEL_FUNCTIONS
-
-// Classification and comparison functionality referencing only the scalar part
-// of a Jet. To classify the derivatives (e.g., for sanity checks), the dual
-// part should be referenced explicitly. For instance, to check whether the
-// derivatives of a Jet 'f' are reasonable, one can use
-//
-//  isfinite(f.v.array()).all()
-//  !isnan(f.v.array()).any()
-//
-// etc., depending on the desired semantics.
-//
-// NOTE: Floating-point classification and comparison functions and operators
-// should be used with care as no derivatives can be propagated by such
-// functions directly but only by expressions resulting from corresponding
-// conditional statements. At the same time, conditional statements can possibly
-// introduce a discontinuity in the cost function making it impossible to
-// evaluate its derivative and thus the optimization problem intractable.
-
-// Determines whether the scalar part of the Jet is finite.
-template <typename T, int N>
-inline bool isfinite(const Jet<T, N>& f) {
-  return isfinite(f.a);
-}
-
-// Determines whether the scalar part of the Jet is infinite.
-template <typename T, int N>
-inline bool isinf(const Jet<T, N>& f) {
-  return isinf(f.a);
-}
-
-// Determines whether the scalar part of the Jet is NaN.
-template <typename T, int N>
-inline bool isnan(const Jet<T, N>& f) {
-  return isnan(f.a);
-}
-
-// Determines whether the scalar part of the Jet is neither zero, subnormal,
-// infinite, nor NaN.
-template <typename T, int N>
-inline bool isnormal(const Jet<T, N>& f) {
-  return isnormal(f.a);
-}
-
-// Determines whether the scalar part of the Jet f is less than the scalar
-// part of g.
-//
-// NOTE: This function does NOT set any floating-point exceptions.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline bool isless(const Lhs& f, const Rhs& g) {
-  using internal::AsScalar;
-  return isless(AsScalar(f), AsScalar(g));
-}
-
-// Determines whether the scalar part of the Jet f is greater than the scalar
-// part of g.
-//
-// NOTE: This function does NOT set any floating-point exceptions.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline bool isgreater(const Lhs& f, const Rhs& g) {
-  using internal::AsScalar;
-  return isgreater(AsScalar(f), AsScalar(g));
-}
-
-// Determines whether the scalar part of the Jet f is less than or equal to the
-// scalar part of g.
-//
-// NOTE: This function does NOT set any floating-point exceptions.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline bool islessequal(const Lhs& f, const Rhs& g) {
-  using internal::AsScalar;
-  return islessequal(AsScalar(f), AsScalar(g));
-}
-
-// Determines whether the scalar part of the Jet f is less than or greater than
-// (f < g || f > g) the scalar part of g.
-//
-// NOTE: This function does NOT set any floating-point exceptions.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline bool islessgreater(const Lhs& f, const Rhs& g) {
-  using internal::AsScalar;
-  return islessgreater(AsScalar(f), AsScalar(g));
-}
-
-// Determines whether the scalar part of the Jet f is greater than or equal to
-// the scalar part of g.
-//
-// NOTE: This function does NOT set any floating-point exceptions.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline bool isgreaterequal(const Lhs& f, const Rhs& g) {
-  using internal::AsScalar;
-  return isgreaterequal(AsScalar(f), AsScalar(g));
-}
-
-// Determines if either of the scalar parts of the arguments are NaN and
-// thus cannot be ordered with respect to each other.
-template <typename Lhs,
-          typename Rhs,
-          std::enable_if_t<CompatibleJetOperands_v<Lhs, Rhs>>* = nullptr>
-inline bool isunordered(const Lhs& f, const Rhs& g) {
-  using internal::AsScalar;
-  return isunordered(AsScalar(f), AsScalar(g));
-}
-
-// Categorize scalar part as zero, subnormal, normal, infinite, NaN, or
-// implementation-defined.
-template <typename T, int N>
-inline int fpclassify(const Jet<T, N>& f) {
-  return fpclassify(f.a);
-}
-
-// Determines whether the scalar part of the argument is negative.
-template <typename T, int N>
-inline bool signbit(const Jet<T, N>& f) {
-  return signbit(f.a);
-}
-
-// Legacy functions from the pre-C++11 days.
-template <typename T, int N>
-CERES_DEPRECATED_WITH_MSG(
-    "ceres::IsFinite will be removed in a future Ceres Solver release. Please "
-    "use ceres::isfinite.")
-inline bool IsFinite(const Jet<T, N>& f) {
-  return isfinite(f);
-}
-
-template <typename T, int N>
-CERES_DEPRECATED_WITH_MSG(
-    "ceres::IsNaN will be removed in a future Ceres Solver release. Please use "
-    "ceres::isnan.")
-inline bool IsNaN(const Jet<T, N>& f) {
-  return isnan(f);
-}
-
-template <typename T, int N>
-CERES_DEPRECATED_WITH_MSG(
-    "ceres::IsNormal will be removed in a future Ceres Solver release. Please "
-    "use ceres::isnormal.")
-inline bool IsNormal(const Jet<T, N>& f) {
-  return isnormal(f);
-}
-
-// The jet is infinite if any part of the jet is infinite.
-template <typename T, int N>
-CERES_DEPRECATED_WITH_MSG(
-    "ceres::IsInfinite will be removed in a future Ceres Solver release. "
-    "Please use ceres::isinf.")
-inline bool IsInfinite(const Jet<T, N>& f) {
-  return isinf(f);
-}
-
-#ifdef CERES_HAS_CPP20
-// Computes the linear interpolation a + t(b - a) between a and b at the value
-// t. For arguments outside of the range 0 <= t <= 1, the values are
-// extrapolated.
-//
-// Differentiating lerp(a, b, t) with respect to a, b, and t gives:
-//
-//   d/da lerp(a, b, t) = 1 - t
-//   d/db lerp(a, b, t) = t
-//   d/dt lerp(a, b, t) = b - a
-//
-// with the dual representation given by
-//
-//   lerp(a + da, b + db, t + dt)
-//      ~= lerp(a, b, t) + (1 - t) da + t db + (b - a) dt .
-template <typename T, int N>
-inline Jet<T, N> lerp(const Jet<T, N>& a,
-                      const Jet<T, N>& b,
-                      const Jet<T, N>& t) {
-  return Jet<T, N>{lerp(a.a, b.a, t.a),
-                   (T(1) - t.a) * a.v + t.a * b.v + (b.a - a.a) * t.v};
-}
-
-// Computes the midpoint a + (b - a) / 2.
-//
-// Differentiating midpoint(a, b) with respect to a and b gives:
-//
-//   d/da midpoint(a, b) = 1/2
-//   d/db midpoint(a, b) = 1/2
-//
-// with the dual representation given by
-//
-//   midpoint(a + da, b + db) ~= midpoint(a, b) + (da + db) / 2 .
-template <typename T, int N>
-inline Jet<T, N> midpoint(const Jet<T, N>& a, const Jet<T, N>& b) {
-  Jet<T, N> result{midpoint(a.a, b.a)};
-  // To avoid overflow in the differential, compute
-  // (da + db) / 2 using midpoint.
-  for (int i = 0; i < N; ++i) {
-    result.v[i] = midpoint(a.v[i], b.v[i]);
-  }
-  return result;
-}
-#endif  // defined(CERES_HAS_CPP20)
-
-// atan2(b + db, a + da) ~= atan2(b, a) + (- b da + a db) / (a^2 + b^2)
-//
-// In words: the rate of change of theta is 1/r times the rate of
-// change of (x, y) in the positive angular direction.
-template <typename T, int N>
-inline Jet<T, N> atan2(const Jet<T, N>& g, const Jet<T, N>& f) {
-  // Note order of arguments:
-  //
-  //   f = a + da
-  //   g = b + db
-
-  T const tmp = T(1.0) / (f.a * f.a + g.a * g.a);
-  return Jet<T, N>(atan2(g.a, f.a), tmp * (-g.a * f.v + f.a * g.v));
-}
-
-// Computes the square x^2 of a real number x (not the Euclidean L^2 norm as
-// the name might suggest).
-//
-// NOTE: While std::norm is primarily intended for computing the squared
-// magnitude of a std::complex<> number, the current Jet implementation does not
-// support mixing a scalar T in its real part and std::complex<T> and in the
-// infinitesimal. Mixed Jet support is necessary for the type decay from
-// std::complex<T> to T (the squared magnitude of a complex number is always
-// real) performed by std::norm.
-//
-// norm(x + h) ~= norm(x) + 2x h
-template <typename T, int N>
-inline Jet<T, N> norm(const Jet<T, N>& f) {
-  return Jet<T, N>(norm(f.a), T(2) * f.a * f.v);
-}
-
-// pow -- base is a differentiable function, exponent is a constant.
-// (a+da)^p ~= a^p + p*a^(p-1) da
-template <typename T, int N>
-inline Jet<T, N> pow(const Jet<T, N>& f, double g) {
-  T const tmp = g * pow(f.a, g - T(1.0));
-  return Jet<T, N>(pow(f.a, g), tmp * f.v);
-}
-
-// pow -- base is a constant, exponent is a differentiable function.
-// We have various special cases, see the comment for pow(Jet, Jet) for
-// analysis:
-//
-// 1. For f > 0 we have: (f)^(g + dg) ~= f^g + f^g log(f) dg
-//
-// 2. For f == 0 and g > 0 we have: (f)^(g + dg) ~= f^g
-//
-// 3. For f < 0 and integer g we have: (f)^(g + dg) ~= f^g but if dg
-// != 0, the derivatives are not defined and we return NaN.
-
-template <typename T, int N>
-inline Jet<T, N> pow(T f, const Jet<T, N>& g) {
-  Jet<T, N> result;
-
-  if (fpclassify(f) == FP_ZERO && g > 0) {
-    // Handle case 2.
-    result = Jet<T, N>(T(0.0));
-  } else {
-    if (f < 0 && g == floor(g.a)) {  // Handle case 3.
-      result = Jet<T, N>(pow(f, g.a));
-      for (int i = 0; i < N; i++) {
-        if (fpclassify(g.v[i]) != FP_ZERO) {
-          // Return a NaN when g.v != 0.
-          result.v[i] = std::numeric_limits<T>::quiet_NaN();
-        }
-      }
-    } else {
-      // Handle case 1.
-      T const tmp = pow(f, g.a);
-      result = Jet<T, N>(tmp, log(f) * tmp * g.v);
-    }
-  }
-
-  return result;
-}
-
-// pow -- both base and exponent are differentiable functions. This has a
-// variety of special cases that require careful handling.
-//
-// 1. For f > 0:
-//    (f + df)^(g + dg) ~= f^g + f^(g - 1) * (g * df + f * log(f) * dg)
-//    The numerical evaluation of f * log(f) for f > 0 is well behaved, even for
-//    extremely small values (e.g. 1e-99).
-//
-// 2. For f == 0 and g > 1: (f + df)^(g + dg) ~= 0
-//    This cases is needed because log(0) can not be evaluated in the f > 0
-//    expression. However the function f*log(f) is well behaved around f == 0
-//    and its limit as f-->0 is zero.
-//
-// 3. For f == 0 and g == 1: (f + df)^(g + dg) ~= 0 + df
-//
-// 4. For f == 0 and 0 < g < 1: The value is finite but the derivatives are not.
-//
-// 5. For f == 0 and g < 0: The value and derivatives of f^g are not finite.
-//
-// 6. For f == 0 and g == 0: The C standard incorrectly defines 0^0 to be 1
-//    "because there are applications that can exploit this definition". We
-//    (arbitrarily) decree that derivatives here will be nonfinite, since that
-//    is consistent with the behavior for f == 0, g < 0 and 0 < g < 1.
-//    Practically any definition could have been justified because mathematical
-//    consistency has been lost at this point.
-//
-// 7. For f < 0, g integer, dg == 0: (f + df)^(g + dg) ~= f^g + g * f^(g - 1) df
-//    This is equivalent to the case where f is a differentiable function and g
-//    is a constant (to first order).
-//
-// 8. For f < 0, g integer, dg != 0: The value is finite but the derivatives are
-//    not, because any change in the value of g moves us away from the point
-//    with a real-valued answer into the region with complex-valued answers.
-//
-// 9. For f < 0, g noninteger: The value and derivatives of f^g are not finite.
-
-template <typename T, int N>
-inline Jet<T, N> pow(const Jet<T, N>& f, const Jet<T, N>& g) {
-  Jet<T, N> result;
-
-  if (fpclassify(f) == FP_ZERO && g >= 1) {
-    // Handle cases 2 and 3.
-    if (g > 1) {
-      result = Jet<T, N>(T(0.0));
-    } else {
-      result = f;
-    }
-
-  } else {
-    if (f < 0 && g == floor(g.a)) {
-      // Handle cases 7 and 8.
-      T const tmp = g.a * pow(f.a, g.a - T(1.0));
-      result = Jet<T, N>(pow(f.a, g.a), tmp * f.v);
-      for (int i = 0; i < N; i++) {
-        if (fpclassify(g.v[i]) != FP_ZERO) {
-          // Return a NaN when g.v != 0.
-          result.v[i] = T(std::numeric_limits<double>::quiet_NaN());
-        }
-      }
-    } else {
-      // Handle the remaining cases. For cases 4,5,6,9 we allow the log()
-      // function to generate -HUGE_VAL or NaN, since those cases result in a
-      // nonfinite derivative.
-      T const tmp1 = pow(f.a, g.a);
-      T const tmp2 = g.a * pow(f.a, g.a - T(1.0));
-      T const tmp3 = tmp1 * log(f.a);
-      result = Jet<T, N>(tmp1, tmp2 * f.v + tmp3 * g.v);
-    }
-  }
-
-  return result;
-}
-
-// Note: This has to be in the ceres namespace for argument dependent lookup to
-// function correctly. Otherwise statements like CHECK_LE(x, 2.0) fail with
-// strange compile errors.
-template <typename T, int N>
-inline std::ostream& operator<<(std::ostream& s, const Jet<T, N>& z) {
-  s << "[" << z.a << " ; ";
-  for (int i = 0; i < N; ++i) {
-    s << z.v[i];
-    if (i != N - 1) {
-      s << ", ";
-    }
-  }
-  s << "]";
-  return s;
-}
-}  // namespace ceres
-
-namespace std {
-template <typename T, int N>
-struct numeric_limits<ceres::Jet<T, N>> {
-  static constexpr bool is_specialized = true;
-  static constexpr bool is_signed = std::numeric_limits<T>::is_signed;
-  static constexpr bool is_integer = std::numeric_limits<T>::is_integer;
-  static constexpr bool is_exact = std::numeric_limits<T>::is_exact;
-  static constexpr bool has_infinity = std::numeric_limits<T>::has_infinity;
-  static constexpr bool has_quiet_NaN = std::numeric_limits<T>::has_quiet_NaN;
-  static constexpr bool has_signaling_NaN =
-      std::numeric_limits<T>::has_signaling_NaN;
-  static constexpr bool is_iec559 = std::numeric_limits<T>::is_iec559;
-  static constexpr bool is_bounded = std::numeric_limits<T>::is_bounded;
-  static constexpr bool is_modulo = std::numeric_limits<T>::is_modulo;
-
-  // has_denorm (and has_denorm_loss, not defined for Jet) has been deprecated
-  // in C++23. However, without an intent to remove the declaration. Disable
-  // deprecation warnings temporarily just for the corresponding symbols.
-  CERES_DISABLE_DEPRECATED_WARNING
-  static constexpr std::float_denorm_style has_denorm =
-      std::numeric_limits<T>::has_denorm;
-  CERES_RESTORE_DEPRECATED_WARNING
-  static constexpr std::float_round_style round_style =
-      std::numeric_limits<T>::round_style;
-
-  static constexpr int digits = std::numeric_limits<T>::digits;
-  static constexpr int digits10 = std::numeric_limits<T>::digits10;
-  static constexpr int max_digits10 = std::numeric_limits<T>::max_digits10;
-  static constexpr int radix = std::numeric_limits<T>::radix;
-  static constexpr int min_exponent = std::numeric_limits<T>::min_exponent;
-  static constexpr int min_exponent10 = std::numeric_limits<T>::max_exponent10;
-  static constexpr int max_exponent = std::numeric_limits<T>::max_exponent;
-  static constexpr int max_exponent10 = std::numeric_limits<T>::max_exponent10;
-  static constexpr bool traps = std::numeric_limits<T>::traps;
-  static constexpr bool tinyness_before =
-      std::numeric_limits<T>::tinyness_before;
-
-  static constexpr ceres::Jet<T, N> min
-  CERES_PREVENT_MACRO_SUBSTITUTION() noexcept {
-    return ceres::Jet<T, N>((std::numeric_limits<T>::min)());
-  }
-  static constexpr ceres::Jet<T, N> lowest() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::lowest());
-  }
-  static constexpr ceres::Jet<T, N> epsilon() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::epsilon());
-  }
-  static constexpr ceres::Jet<T, N> round_error() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::round_error());
-  }
-  static constexpr ceres::Jet<T, N> infinity() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::infinity());
-  }
-  static constexpr ceres::Jet<T, N> quiet_NaN() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::quiet_NaN());
-  }
-  static constexpr ceres::Jet<T, N> signaling_NaN() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::signaling_NaN());
-  }
-  static constexpr ceres::Jet<T, N> denorm_min() noexcept {
-    return ceres::Jet<T, N>(std::numeric_limits<T>::denorm_min());
-  }
-
-  static constexpr ceres::Jet<T, N> max
-  CERES_PREVENT_MACRO_SUBSTITUTION() noexcept {
-    return ceres::Jet<T, N>((std::numeric_limits<T>::max)());
-  }
-};
-
-}  // namespace std
-
-namespace Eigen {
-
-// Creating a specialization of NumTraits enables placing Jet objects inside
-// Eigen arrays, getting all the goodness of Eigen combined with autodiff.
-template <typename T, int N>
-struct NumTraits<ceres::Jet<T, N>> {
-  using Real = ceres::Jet<T, N>;
-  using NonInteger = ceres::Jet<T, N>;
-  using Nested = ceres::Jet<T, N>;
-  using Literal = ceres::Jet<T, N>;
-
-  static typename ceres::Jet<T, N> dummy_precision() {
-    return ceres::Jet<T, N>(1e-12);
-  }
-
-  static inline Real epsilon() {
-    return Real(std::numeric_limits<T>::epsilon());
-  }
-
-  static inline int digits10() { return NumTraits<T>::digits10(); }
-  static inline int max_digits10() { return NumTraits<T>::max_digits10(); }
-
-  enum {
-    IsComplex = 0,
-    IsInteger = 0,
-    IsSigned,
-    ReadCost = 1,
-    AddCost = 1,
-    // For Jet types, multiplication is more expensive than addition.
-    MulCost = 3,
-    HasFloatingPoint = 1,
-    RequireInitialization = 1
-  };
-
-  template <bool Vectorized>
-  struct Div {
-    enum {
-#if defined(EIGEN_VECTORIZE_AVX)
-      AVX = true,
-#else
-      AVX = false,
-#endif
-
-      // Assuming that for Jets, division is as expensive as
-      // multiplication.
-      Cost = 3
-    };
-  };
-
-  static inline Real highest() { return Real((std::numeric_limits<T>::max)()); }
-  static inline Real lowest() { return Real(-(std::numeric_limits<T>::max)()); }
-};
-
-// Specifying the return type of binary operations between Jets and scalar types
-// allows you to perform matrix/array operations with Eigen matrices and arrays
-// such as addition, subtraction, multiplication, and division where one Eigen
-// matrix/array is of type Jet and the other is a scalar type. This improves
-// performance by using the optimized scalar-to-Jet binary operations but
-// is only available on Eigen versions >= 3.3
-template <typename BinaryOp, typename T, int N>
-struct ScalarBinaryOpTraits<ceres::Jet<T, N>, T, BinaryOp> {
-  using ReturnType = ceres::Jet<T, N>;
-};
-template <typename BinaryOp, typename T, int N>
-struct ScalarBinaryOpTraits<T, ceres::Jet<T, N>, BinaryOp> {
-  using ReturnType = ceres::Jet<T, N>;
-};
-
-}  // namespace Eigen
-
-#endif  // CERES_PUBLIC_JET_H_
diff --git a/third_party/ceres/include/ceres/jet_fwd.h b/third_party/ceres/include/ceres/jet_fwd.h
deleted file mode 100644
index b5216da..0000000
--- a/third_party/ceres/include/ceres/jet_fwd.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sergiu.deitsch@gmail.com (Sergiu Deitsch)
-//
-
-#ifndef CERES_PUBLIC_JET_FWD_H_
-#define CERES_PUBLIC_JET_FWD_H_
-
-namespace ceres {
-
-// Jet forward declaration necessary for the following partial specialization of
-// std::common_type and type traits.
-template <typename T, int N>
-struct Jet;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_JET_FWD_H_
diff --git a/third_party/ceres/include/ceres/line_manifold.h b/third_party/ceres/include/ceres/line_manifold.h
deleted file mode 100644
index dad9737..0000000
--- a/third_party/ceres/include/ceres/line_manifold.h
+++ /dev/null
@@ -1,301 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: jodebo_beck@gmx.de (Johannes Beck)
-//
-
-#ifndef CERES_PUBLIC_LINE_MANIFOLD_H_
-#define CERES_PUBLIC_LINE_MANIFOLD_H_
-
-#include <Eigen/Core>
-#include <algorithm>
-#include <array>
-#include <memory>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/householder_vector.h"
-#include "ceres/internal/sphere_manifold_functions.h"
-#include "ceres/manifold.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-// This provides a manifold for lines, where the line is
-// over-parameterized by an origin point and a direction vector. So the
-// parameter vector size needs to be two times the ambient space dimension,
-// where the first half is interpreted as the origin point and the second half
-// as the direction.
-//
-// The plus operator for the line direction is the same as for the
-// SphereManifold. The update of the origin point is
-// perpendicular to the line direction before the update.
-//
-// This manifold is a special case of the affine Grassmannian
-// manifold (see https://en.wikipedia.org/wiki/Affine_Grassmannian_(manifold))
-// for the case Graff_1(R^n).
-//
-// The class works with dynamic and static ambient space dimensions. If the
-// ambient space dimensions is known at compile time use
-//
-//    LineManifold<3> manifold;
-//
-// If the ambient space dimensions is not known at compile time the template
-// parameter needs to be set to ceres::DYNAMIC and the actual dimension needs
-// to be provided as a constructor argument:
-//
-//    LineManifold<ceres::DYNAMIC> manifold(ambient_dim);
-//
-template <int AmbientSpaceDimension>
-class LineManifold final : public Manifold {
- public:
-  static_assert(AmbientSpaceDimension == DYNAMIC || AmbientSpaceDimension >= 2,
-                "The ambient space must be at least 2.");
-  static_assert(ceres::DYNAMIC == Eigen::Dynamic,
-                "ceres::DYNAMIC needs to be the same as Eigen::Dynamic.");
-
-  LineManifold();
-  explicit LineManifold(int size);
-
-  int AmbientSize() const override { return 2 * size_; }
-  int TangentSize() const override { return 2 * (size_ - 1); }
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override;
-  bool PlusJacobian(const double* x, double* jacobian) const override;
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override;
-  bool MinusJacobian(const double* x, double* jacobian) const override;
-
- private:
-  static constexpr bool IsDynamic = (AmbientSpaceDimension == ceres::DYNAMIC);
-  static constexpr int TangentSpaceDimension =
-      IsDynamic ? ceres::DYNAMIC : AmbientSpaceDimension - 1;
-
-  static constexpr int DAmbientSpaceDimension =
-      IsDynamic ? ceres::DYNAMIC : 2 * AmbientSpaceDimension;
-  static constexpr int DTangentSpaceDimension =
-      IsDynamic ? ceres::DYNAMIC : 2 * TangentSpaceDimension;
-
-  using AmbientVector = Eigen::Matrix<double, AmbientSpaceDimension, 1>;
-  using TangentVector = Eigen::Matrix<double, TangentSpaceDimension, 1>;
-  using MatrixPlusJacobian = Eigen::Matrix<double,
-                                           DAmbientSpaceDimension,
-                                           DTangentSpaceDimension,
-                                           Eigen::RowMajor>;
-  using MatrixMinusJacobian = Eigen::Matrix<double,
-                                            DTangentSpaceDimension,
-                                            DAmbientSpaceDimension,
-                                            Eigen::RowMajor>;
-
-  const int size_{AmbientSpaceDimension};
-};
-
-template <int AmbientSpaceDimension>
-LineManifold<AmbientSpaceDimension>::LineManifold()
-    : size_{AmbientSpaceDimension} {
-  static_assert(
-      AmbientSpaceDimension != Eigen::Dynamic,
-      "The size is set to dynamic. Please call the constructor with a size.");
-}
-
-template <int AmbientSpaceDimension>
-LineManifold<AmbientSpaceDimension>::LineManifold(int size) : size_{size} {
-  if (AmbientSpaceDimension != Eigen::Dynamic) {
-    CHECK_EQ(AmbientSpaceDimension, size)
-        << "Specified size by template parameter differs from the supplied "
-           "one.";
-  } else {
-    CHECK_GT(size_, 1)
-        << "The size of the manifold needs to be greater than 1.";
-  }
-}
-
-template <int AmbientSpaceDimension>
-bool LineManifold<AmbientSpaceDimension>::Plus(const double* x_ptr,
-                                               const double* delta_ptr,
-                                               double* x_plus_delta_ptr) const {
-  // We seek a box plus operator of the form
-  //
-  //   [o*, d*] = Plus([o, d], [delta_o, delta_d])
-  //
-  // where o is the origin point, d is the direction vector, delta_o is
-  // the delta of the origin point and delta_d the delta of the direction and
-  // o* and d* is the updated origin point and direction.
-  //
-  // We separate the Plus operator into the origin point and directional part
-  //   d* = Plus_d(d, delta_d)
-  //   o* = Plus_o(o, d, delta_o)
-  //
-  // The direction update function Plus_d is the same as as the SphereManifold:
-  //
-  //   d* = H_{v(d)} [sinc(|delta_d|) delta_d, cos(|delta_d|)]^T
-  //
-  // where H is the householder matrix
-  //   H_{v} = I - (2 / |v|^2) v v^T
-  // and
-  //   v(d) = d - sign(d_n) |d| e_n.
-  //
-  // The origin point update function Plus_o is defined as
-  //
-  //   o* = o + H_{v(d)} [delta_o, 0]^T.
-
-  Eigen::Map<const AmbientVector> o(x_ptr, size_);
-  Eigen::Map<const AmbientVector> d(x_ptr + size_, size_);
-
-  Eigen::Map<const TangentVector> delta_o(delta_ptr, size_ - 1);
-  Eigen::Map<const TangentVector> delta_d(delta_ptr + size_ - 1, size_ - 1);
-  Eigen::Map<AmbientVector> o_plus_delta(x_plus_delta_ptr, size_);
-  Eigen::Map<AmbientVector> d_plus_delta(x_plus_delta_ptr + size_, size_);
-
-  const double norm_delta_d = delta_d.norm();
-
-  o_plus_delta = o;
-
-  // Shortcut for zero delta direction.
-  if (norm_delta_d == 0.0) {
-    d_plus_delta = d;
-
-    if (delta_o.isZero(0.0)) {
-      return true;
-    }
-  }
-
-  // Calculate the householder transformation which is needed for f_d and f_o.
-  AmbientVector v(size_);
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  internal::ComputeHouseholderVector<Eigen::Map<const AmbientVector>,
-                                     double,
-                                     AmbientSpaceDimension>(d, &v, &beta);
-
-  if (norm_delta_d != 0.0) {
-    internal::ComputeSphereManifoldPlus(
-        v, beta, d, delta_d, norm_delta_d, &d_plus_delta);
-  }
-
-  // The null space is in the direction of the line, so the tangent space is
-  // perpendicular to the line direction. This is achieved by using the
-  // householder matrix of the direction and allow only movements
-  // perpendicular to e_n.
-  AmbientVector y(size_);
-  y << delta_o, 0;
-  o_plus_delta += internal::ApplyHouseholderVector(y, v, beta);
-
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool LineManifold<AmbientSpaceDimension>::PlusJacobian(
-    const double* x_ptr, double* jacobian_ptr) const {
-  Eigen::Map<const AmbientVector> d(x_ptr + size_, size_);
-  Eigen::Map<MatrixPlusJacobian> jacobian(
-      jacobian_ptr, 2 * size_, 2 * (size_ - 1));
-
-  // Clear the Jacobian as only half of the matrix is not zero.
-  jacobian.setZero();
-
-  auto jacobian_d =
-      jacobian
-          .template topLeftCorner<AmbientSpaceDimension, TangentSpaceDimension>(
-              size_, size_ - 1);
-  auto jacobian_o = jacobian.template bottomRightCorner<AmbientSpaceDimension,
-                                                        TangentSpaceDimension>(
-      size_, size_ - 1);
-  internal::ComputeSphereManifoldPlusJacobian(d, &jacobian_d);
-  jacobian_o = jacobian_d;
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool LineManifold<AmbientSpaceDimension>::Minus(const double* y_ptr,
-                                                const double* x_ptr,
-                                                double* y_minus_x) const {
-  Eigen::Map<const AmbientVector> y_o(y_ptr, size_);
-  Eigen::Map<const AmbientVector> y_d(y_ptr + size_, size_);
-  Eigen::Map<const AmbientVector> x_o(x_ptr, size_);
-  Eigen::Map<const AmbientVector> x_d(x_ptr + size_, size_);
-
-  Eigen::Map<TangentVector> y_minus_x_o(y_minus_x, size_ - 1);
-  Eigen::Map<TangentVector> y_minus_x_d(y_minus_x + size_ - 1, size_ - 1);
-
-  AmbientVector v(size_);
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  internal::ComputeHouseholderVector<Eigen::Map<const AmbientVector>,
-                                     double,
-                                     AmbientSpaceDimension>(x_d, &v, &beta);
-
-  internal::ComputeSphereManifoldMinus(v, beta, x_d, y_d, &y_minus_x_d);
-
-  AmbientVector delta_o = y_o - x_o;
-  const AmbientVector h_delta_o =
-      internal::ApplyHouseholderVector(delta_o, v, beta);
-  y_minus_x_o = h_delta_o.template head<TangentSpaceDimension>(size_ - 1);
-
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool LineManifold<AmbientSpaceDimension>::MinusJacobian(
-    const double* x_ptr, double* jacobian_ptr) const {
-  Eigen::Map<const AmbientVector> d(x_ptr + size_, size_);
-  Eigen::Map<MatrixMinusJacobian> jacobian(
-      jacobian_ptr, 2 * (size_ - 1), 2 * size_);
-
-  // Clear the Jacobian as only half of the matrix is not zero.
-  jacobian.setZero();
-
-  auto jacobian_d =
-      jacobian
-          .template topLeftCorner<TangentSpaceDimension, AmbientSpaceDimension>(
-              size_ - 1, size_);
-  auto jacobian_o = jacobian.template bottomRightCorner<TangentSpaceDimension,
-                                                        AmbientSpaceDimension>(
-      size_ - 1, size_);
-  internal::ComputeSphereManifoldMinusJacobian(d, &jacobian_d);
-  jacobian_o = jacobian_d;
-
-  return true;
-}
-
-}  // namespace ceres
-
-// clang-format off
-#include "ceres/internal/reenable_warnings.h"
-// clang-format on
-
-#endif  // CERES_PUBLIC_LINE_MANIFOLD_H_
diff --git a/third_party/ceres/include/ceres/loss_function.h b/third_party/ceres/include/ceres/loss_function.h
deleted file mode 100644
index b8582f8..0000000
--- a/third_party/ceres/include/ceres/loss_function.h
+++ /dev/null
@@ -1,433 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// The LossFunction interface is the way users describe how residuals
-// are converted to cost terms for the overall problem cost function.
-// For the exact manner in which loss functions are converted to the
-// overall cost for a problem, see problem.h.
-//
-// For least squares problem where there are no outliers and standard
-// squared loss is expected, it is not necessary to create a loss
-// function; instead passing a nullptr to the problem when adding
-// residuals implies a standard squared loss.
-//
-// For least squares problems where the minimization may encounter
-// input terms that contain outliers, that is, completely bogus
-// measurements, it is important to use a loss function that reduces
-// their associated penalty.
-//
-// Consider a structure from motion problem. The unknowns are 3D
-// points and camera parameters, and the measurements are image
-// coordinates describing the expected reprojected position for a
-// point in a camera. For example, we want to model the geometry of a
-// street scene with fire hydrants and cars, observed by a moving
-// camera with unknown parameters, and the only 3D points we care
-// about are the pointy tippy-tops of the fire hydrants. Our magic
-// image processing algorithm, which is responsible for producing the
-// measurements that are input to Ceres, has found and matched all
-// such tippy-tops in all image frames, except that in one of the
-// frame it mistook a car's headlight for a hydrant. If we didn't do
-// anything special (i.e. if we used a basic quadratic loss), the
-// residual for the erroneous measurement will result in extreme error
-// due to the quadratic nature of squared loss. This results in the
-// entire solution getting pulled away from the optimum to reduce
-// the large error that would otherwise be attributed to the wrong
-// measurement.
-//
-// Using a robust loss function, the cost for large residuals is
-// reduced. In the example above, this leads to outlier terms getting
-// downweighted so they do not overly influence the final solution.
-//
-// What cost function is best?
-//
-// In general, there isn't a principled way to select a robust loss
-// function. The authors suggest starting with a non-robust cost, then
-// only experimenting with robust loss functions if standard squared
-// loss doesn't work.
-
-#ifndef CERES_PUBLIC_LOSS_FUNCTION_H_
-#define CERES_PUBLIC_LOSS_FUNCTION_H_
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-class CERES_EXPORT LossFunction {
- public:
-  virtual ~LossFunction();
-
-  // For a residual vector with squared 2-norm 'sq_norm', this method
-  // is required to fill in the value and derivatives of the loss
-  // function (rho in this example):
-  //
-  //   out[0] = rho(sq_norm),
-  //   out[1] = rho'(sq_norm),
-  //   out[2] = rho''(sq_norm),
-  //
-  // Here the convention is that the contribution of a term to the
-  // cost function is given by 1/2 rho(s),  where
-  //
-  //   s = ||residuals||^2.
-  //
-  // Calling the method with a negative value of 's' is an error and
-  // the implementations are not required to handle that case.
-  //
-  // Most sane choices of rho() satisfy:
-  //
-  //   rho(0) = 0,
-  //   rho'(0) = 1,
-  //   rho'(s) < 1 in outlier region,
-  //   rho''(s) < 0 in outlier region,
-  //
-  // so that they mimic the least squares cost for small residuals.
-  virtual void Evaluate(double sq_norm, double out[3]) const = 0;
-};
-
-// Some common implementations follow below.
-//
-// Note: in the region of interest (i.e. s < 3) we have:
-//   TrivialLoss >= HuberLoss >= SoftLOneLoss >= CauchyLoss
-
-// This corresponds to no robustification.
-//
-//   rho(s) = s
-//
-// At s = 0: rho = [0, 1, 0].
-//
-// It is not normally necessary to use this, as passing nullptr for the
-// loss function when building the problem accomplishes the same
-// thing.
-class CERES_EXPORT TrivialLoss final : public LossFunction {
- public:
-  void Evaluate(double, double*) const override;
-};
-
-// Scaling
-// -------
-// Given one robustifier
-//   s -> rho(s)
-// one can change the length scale at which robustification takes
-// place, by adding a scale factor 'a' as follows:
-//
-//   s -> a^2 rho(s / a^2).
-//
-// The first and second derivatives are:
-//
-//   s -> rho'(s / a^2),
-//   s -> (1 / a^2) rho''(s / a^2),
-//
-// but the behaviour near s = 0 is the same as the original function,
-// i.e.
-//
-//   rho(s) = s + higher order terms,
-//   a^2 rho(s / a^2) = s + higher order terms.
-//
-// The scalar 'a' should be positive.
-//
-// The reason for the appearance of squaring is that 'a' is in the
-// units of the residual vector norm whereas 's' is a squared
-// norm. For applications it is more convenient to specify 'a' than
-// its square. The commonly used robustifiers below are described in
-// un-scaled format (a = 1) but their implementations work for any
-// non-zero value of 'a'.
-
-// Huber.
-//
-//   rho(s) = s               for s <= 1,
-//   rho(s) = 2 sqrt(s) - 1   for s >= 1.
-//
-// At s = 0: rho = [0, 1, 0].
-//
-// The scaling parameter 'a' corresponds to 'delta' on this page:
-//   http://en.wikipedia.org/wiki/Huber_Loss_Function
-class CERES_EXPORT HuberLoss final : public LossFunction {
- public:
-  explicit HuberLoss(double a) : a_(a), b_(a * a) {}
-  void Evaluate(double, double*) const override;
-
- private:
-  const double a_;
-  // b = a^2.
-  const double b_;
-};
-
-// Soft L1, similar to Huber but smooth.
-//
-//   rho(s) = 2 (sqrt(1 + s) - 1).
-//
-// At s = 0: rho = [0, 1, -1 / (2 * a^2)].
-class CERES_EXPORT SoftLOneLoss final : public LossFunction {
- public:
-  explicit SoftLOneLoss(double a) : b_(a * a), c_(1 / b_) {}
-  void Evaluate(double, double*) const override;
-
- private:
-  // b = a^2.
-  const double b_;
-  // c = 1 / a^2.
-  const double c_;
-};
-
-// Inspired by the Cauchy distribution
-//
-//   rho(s) = log(1 + s).
-//
-// At s = 0: rho = [0, 1, -1 / a^2].
-class CERES_EXPORT CauchyLoss final : public LossFunction {
- public:
-  explicit CauchyLoss(double a) : b_(a * a), c_(1 / b_) {}
-  void Evaluate(double, double*) const override;
-
- private:
-  // b = a^2.
-  const double b_;
-  // c = 1 / a^2.
-  const double c_;
-};
-
-// Loss that is capped beyond a certain level using the arc-tangent function.
-// The scaling parameter 'a' determines the level where falloff occurs.
-// For costs much smaller than 'a', the loss function is linear and behaves like
-// TrivialLoss, and for values much larger than 'a' the value asymptotically
-// approaches the constant value of a * PI / 2.
-//
-//   rho(s) = a atan(s / a).
-//
-// At s = 0: rho = [0, 1, 0].
-class CERES_EXPORT ArctanLoss final : public LossFunction {
- public:
-  explicit ArctanLoss(double a) : a_(a), b_(1 / (a * a)) {}
-  void Evaluate(double, double*) const override;
-
- private:
-  const double a_;
-  // b = 1 / a^2.
-  const double b_;
-};
-
-// Loss function that maps to approximately zero cost in a range around the
-// origin, and reverts to linear in error (quadratic in cost) beyond this range.
-// The tolerance parameter 'a' sets the nominal point at which the
-// transition occurs, and the transition size parameter 'b' sets the nominal
-// distance over which most of the transition occurs. Both a and b must be
-// greater than zero, and typically b will be set to a fraction of a.
-// The slope rho'[s] varies smoothly from about 0 at s <= a - b to
-// about 1 at s >= a + b.
-//
-// The term is computed as:
-//
-//   rho(s) = b log(1 + exp((s - a) / b)) - c0.
-//
-// where c0 is chosen so that rho(0) == 0
-//
-//   c0 = b log(1 + exp(-a / b)
-//
-// This has the following useful properties:
-//
-//   rho(s) == 0               for s = 0
-//   rho'(s) ~= 0              for s << a - b
-//   rho'(s) ~= 1              for s >> a + b
-//   rho''(s) > 0              for all s
-//
-// In addition, all derivatives are continuous, and the curvature is
-// concentrated in the range a - b to a + b.
-//
-// At s = 0: rho = [0, ~0, ~0].
-class CERES_EXPORT TolerantLoss final : public LossFunction {
- public:
-  explicit TolerantLoss(double a, double b);
-  void Evaluate(double, double*) const override;
-
- private:
-  const double a_, b_, c_;
-};
-
-// This is the Tukey biweight loss function which aggressively
-// attempts to suppress large errors.
-//
-// The term is computed as follows where the equations are scaled by a
-// factor of 2 because the cost function is given by 1/2 rho(s):
-//
-//   rho(s) = a^2 / 3 * (1 - (1 - s / a^2)^3 )   for s <= a^2,
-//   rho(s) = a^2 / 3                            for s >  a^2.
-//
-// At s = 0: rho = [0, 1, -2 / a^2]
-class CERES_EXPORT TukeyLoss final : public ceres::LossFunction {
- public:
-  explicit TukeyLoss(double a) : a_squared_(a * a) {}
-  void Evaluate(double, double*) const override;
-
- private:
-  const double a_squared_;
-};
-
-// Composition of two loss functions.  The error is the result of first
-// evaluating g followed by f to yield the composition f(g(s)).
-// The loss functions must not be nullptr.
-class CERES_EXPORT ComposedLoss final : public LossFunction {
- public:
-  explicit ComposedLoss(const LossFunction* f,
-                        Ownership ownership_f,
-                        const LossFunction* g,
-                        Ownership ownership_g);
-  ~ComposedLoss() override;
-  void Evaluate(double, double*) const override;
-
- private:
-  std::unique_ptr<const LossFunction> f_, g_;
-  const Ownership ownership_f_, ownership_g_;
-};
-
-// The discussion above has to do with length scaling: it affects the space
-// in which s is measured. Sometimes you want to simply scale the output
-// value of the robustifier. For example, you might want to weight
-// different error terms differently (e.g., weight pixel reprojection
-// errors differently from terrain errors).
-//
-// If rho is the wrapped robustifier, then this simply outputs
-// s -> a * rho(s)
-//
-// The first and second derivatives are, not surprisingly
-// s -> a * rho'(s)
-// s -> a * rho''(s)
-//
-// Since we treat the a nullptr Loss function as the Identity loss
-// function, rho = nullptr is a valid input and will result in the input
-// being scaled by a. This provides a simple way of implementing a
-// scaled ResidualBlock.
-class CERES_EXPORT ScaledLoss final : public LossFunction {
- public:
-  // Constructs a ScaledLoss wrapping another loss function. Takes
-  // ownership of the wrapped loss function or not depending on the
-  // ownership parameter.
-  ScaledLoss(const LossFunction* rho, double a, Ownership ownership)
-      : rho_(rho), a_(a), ownership_(ownership) {}
-  ScaledLoss(const ScaledLoss&) = delete;
-  void operator=(const ScaledLoss&) = delete;
-
-  ~ScaledLoss() override {
-    if (ownership_ == DO_NOT_TAKE_OWNERSHIP) {
-      rho_.release();
-    }
-  }
-  void Evaluate(double, double*) const override;
-
- private:
-  std::unique_ptr<const LossFunction> rho_;
-  const double a_;
-  const Ownership ownership_;
-};
-
-// Sometimes after the optimization problem has been constructed, we
-// wish to mutate the scale of the loss function. For example, when
-// performing estimation from data which has substantial outliers,
-// convergence can be improved by starting out with a large scale,
-// optimizing the problem and then reducing the scale. This can have
-// better convergence behaviour than just using a loss function with a
-// small scale.
-//
-// This templated class allows the user to implement a loss function
-// whose scale can be mutated after an optimization problem has been
-// constructed.
-//
-// Since we treat the a nullptr Loss function as the Identity loss
-// function, rho = nullptr is a valid input.
-//
-// Example usage
-//
-//  Problem problem;
-//
-//  // Add parameter blocks
-//
-//  CostFunction* cost_function =
-//    new AutoDiffCostFunction < UW_Camera_Mapper, 2, 9, 3>(
-//      new UW_Camera_Mapper(feature_x, feature_y));
-//
-//  LossFunctionWrapper* loss_function = new LossFunctionWrapper(
-//    new HuberLoss(1.0), TAKE_OWNERSHIP);
-//
-//  problem.AddResidualBlock(cost_function, loss_function, parameters);
-//
-//  Solver::Options options;
-//  Solger::Summary summary;
-//
-//  Solve(options, &problem, &summary)
-//
-//  loss_function->Reset(new HuberLoss(1.0), TAKE_OWNERSHIP);
-//
-//  Solve(options, &problem, &summary)
-//
-class CERES_EXPORT LossFunctionWrapper final : public LossFunction {
- public:
-  LossFunctionWrapper(LossFunction* rho, Ownership ownership)
-      : rho_(rho), ownership_(ownership) {}
-
-  LossFunctionWrapper(const LossFunctionWrapper&) = delete;
-  void operator=(const LossFunctionWrapper&) = delete;
-
-  ~LossFunctionWrapper() override {
-    if (ownership_ == DO_NOT_TAKE_OWNERSHIP) {
-      rho_.release();
-    }
-  }
-
-  void Evaluate(double sq_norm, double out[3]) const override {
-    if (rho_.get() == nullptr) {
-      out[0] = sq_norm;
-      out[1] = 1.0;
-      out[2] = 0.0;
-    } else {
-      rho_->Evaluate(sq_norm, out);
-    }
-  }
-
-  void Reset(LossFunction* rho, Ownership ownership) {
-    if (ownership_ == DO_NOT_TAKE_OWNERSHIP) {
-      rho_.release();
-    }
-    rho_.reset(rho);
-    ownership_ = ownership;
-  }
-
- private:
-  std::unique_ptr<const LossFunction> rho_;
-  Ownership ownership_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_LOSS_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/manifold.h b/third_party/ceres/include/ceres/manifold.h
deleted file mode 100644
index 9bd6459..0000000
--- a/third_party/ceres/include/ceres/manifold.h
+++ /dev/null
@@ -1,411 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_MANIFOLD_H_
-#define CERES_PUBLIC_MANIFOLD_H_
-
-#include <Eigen/Core>
-#include <algorithm>
-#include <array>
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// In sensor fusion problems, often we have to model quantities that live in
-// spaces known as Manifolds, for example the rotation/orientation of a sensor
-// that is represented by a quaternion.
-//
-// Manifolds are spaces which locally look like Euclidean spaces. More
-// precisely, at each point on the manifold there is a linear space that is
-// tangent to the manifold. It has dimension equal to the intrinsic dimension of
-// the manifold itself, which is less than or equal to the ambient space in
-// which the manifold is embedded.
-//
-// For example, the tangent space to a point on a sphere in three dimensions is
-// the two dimensional plane that is tangent to the sphere at that point. There
-// are two reasons tangent spaces are interesting:
-//
-// 1. They are Eucliean spaces so the usual vector space operations apply there,
-//    which makes numerical operations easy.
-// 2. Movement in the tangent space translate into movements along the manifold.
-//    Movements perpendicular to the tangent space do not translate into
-//    movements on the manifold.
-//
-// Returning to our sphere example, moving in the 2 dimensional plane
-// tangent to the sphere and projecting back onto the sphere will move you away
-// from the point you started from but moving along the normal at the same point
-// and the projecting back onto the sphere brings you back to the point.
-//
-// The Manifold interface defines two operations (and their derivatives)
-// involving the tangent space, allowing filtering and optimization to be
-// performed on said manifold:
-//
-// 1. x_plus_delta = Plus(x, delta)
-// 2. delta = Minus(x_plus_delta, x)
-//
-// "Plus" computes the result of moving along delta in the tangent space at x,
-// and then projecting back onto the manifold that x belongs to. In Differential
-// Geometry this is known as a "Retraction". It is a generalization of vector
-// addition in Euclidean spaces.
-//
-// Given two points on the manifold, "Minus" computes the change delta to x in
-// the tangent space at x, that will take it to x_plus_delta.
-//
-// Let us now consider two examples.
-//
-// The Euclidean space R^n is the simplest example of a manifold. It has
-// dimension n (and so does its tangent space) and Plus and Minus are the
-// familiar vector sum and difference operations.
-//
-//  Plus(x, delta) = x + delta = y,
-//  Minus(y, x) = y - x = delta.
-//
-// A more interesting case is SO(3), the special orthogonal group in three
-// dimensions - the space of 3x3 rotation matrices. SO(3) is a three dimensional
-// manifold embedded in R^9 or R^(3x3). So points on SO(3) are represented using
-// 9 dimensional vectors or 3x3 matrices, and points in its tangent spaces are
-// represented by 3 dimensional vectors.
-//
-// Defining Plus and Minus are defined in terms of the matrix Exp and Log
-// operations as follows:
-//
-// Let Exp(p, q, r) = [cos(theta) + cp^2, -sr + cpq        ,  sq + cpr        ]
-//                    [sr + cpq         , cos(theta) + cq^2, -sp + cqr        ]
-//                    [-sq + cpr        , sp + cqr         , cos(theta) + cr^2]
-//
-// where: theta = sqrt(p^2 + q^2 + r^2)
-//            s = sinc(theta)
-//            c = (1 - cos(theta))/theta^2
-//
-// and Log(x) = 1/(2 sinc(theta))[x_32 - x_23, x_13 - x_31, x_21 - x_12]
-//
-// where: theta = acos((Trace(x) - 1)/2)
-//
-// Then,
-//
-// Plus(x, delta) = x Exp(delta)
-// Minus(y, x) = Log(x^T y)
-//
-// For Plus and Minus to be mathematically consistent, the following identities
-// must be satisfied at all points x on the manifold:
-//
-// 1.  Plus(x, 0) = x.
-// 2.  For all y, Plus(x, Minus(y, x)) = y.
-// 3.  For all delta, Minus(Plus(x, delta), x) = delta.
-// 4.  For all delta_1, delta_2
-//    |Minus(Plus(x, delta_1), Plus(x, delta_2)) <= |delta_1 - delta_2|
-//
-// Briefly:
-// (1) Ensures that the tangent space is "centered" at x, and the zero vector is
-//     the identity element.
-// (2) Ensures that any y can be reached from x.
-// (3) Ensures that Plus is an injective (one-to-one) map.
-// (4) Allows us to define a metric on the manifold.
-//
-// Additionally we require that Plus and Minus be sufficiently smooth. In
-// particular they need to be differentiable everywhere on the manifold.
-//
-// For more details, please see
-//
-// "Integrating Generic Sensor Fusion Algorithms with Sound State
-// Representations through Encapsulation of Manifolds"
-// By C. Hertzberg, R. Wagner, U. Frese and L. Schroder
-// https://arxiv.org/pdf/1107.1119.pdf
-class CERES_EXPORT Manifold {
- public:
-  virtual ~Manifold();
-
-  // Dimension of the ambient space in which the manifold is embedded.
-  virtual int AmbientSize() const = 0;
-
-  // Dimension of the manifold/tangent space.
-  virtual int TangentSize() const = 0;
-
-  //   x_plus_delta = Plus(x, delta),
-  //
-  // A generalization of vector addition in Euclidean space, Plus computes the
-  // result of moving along delta in the tangent space at x, and then projecting
-  // back onto the manifold that x belongs to.
-  //
-  // x and x_plus_delta are AmbientSize() vectors.
-  // delta is a TangentSize() vector.
-  //
-  // Return value indicates if the operation was successful or not.
-  virtual bool Plus(const double* x,
-                    const double* delta,
-                    double* x_plus_delta) const = 0;
-
-  // Compute the derivative of Plus(x, delta) w.r.t delta at delta = 0, i.e.
-  //
-  // (D_2 Plus)(x, 0)
-  //
-  // jacobian is a row-major AmbientSize() x TangentSize() matrix.
-  //
-  // Return value indicates whether the operation was successful or not.
-  virtual bool PlusJacobian(const double* x, double* jacobian) const = 0;
-
-  // tangent_matrix = ambient_matrix * (D_2 Plus)(x, 0)
-  //
-  // ambient_matrix is a row-major num_rows x AmbientSize() matrix.
-  // tangent_matrix is a row-major num_rows x TangentSize() matrix.
-  //
-  // Return value indicates whether the operation was successful or not.
-  //
-  // This function is only used by the GradientProblemSolver, where the
-  // dimension of the parameter block can be large and it may be more efficient
-  // to compute this product directly rather than first evaluating the Jacobian
-  // into a matrix and then doing a matrix vector product.
-  //
-  // Because this is not an often used function, we provide a default
-  // implementation for convenience. If performance becomes an issue then the
-  // user should consider implementing a specialization.
-  virtual bool RightMultiplyByPlusJacobian(const double* x,
-                                           const int num_rows,
-                                           const double* ambient_matrix,
-                                           double* tangent_matrix) const;
-
-  // y_minus_x = Minus(y, x)
-  //
-  // Given two points on the manifold, Minus computes the change to x in the
-  // tangent space at x, that will take it to y.
-  //
-  // x and y are AmbientSize() vectors.
-  // y_minus_x is a TangentSize() vector.
-  //
-  // Return value indicates if the operation was successful or not.
-  virtual bool Minus(const double* y,
-                     const double* x,
-                     double* y_minus_x) const = 0;
-
-  // Compute the derivative of Minus(y, x) w.r.t y at y = x, i.e
-  //
-  //   (D_1 Minus) (x, x)
-  //
-  // Jacobian is a row-major TangentSize() x AmbientSize() matrix.
-  //
-  // Return value indicates whether the operation was successful or not.
-  virtual bool MinusJacobian(const double* x, double* jacobian) const = 0;
-};
-
-// The Euclidean manifold is another name for the ordinary vector space R^size,
-// where the plus and minus operations are the usual vector addition and
-// subtraction:
-//   Plus(x, delta) = x + delta
-//   Minus(y, x) = y - x.
-//
-// The class works with dynamic and static ambient space dimensions. If the
-// ambient space dimensions is know at compile time use
-//
-//    EuclideanManifold<3> manifold;
-//
-// If the ambient space dimensions is not known at compile time the template
-// parameter needs to be set to ceres::DYNAMIC and the actual dimension needs
-// to be provided as a constructor argument:
-//
-//    EuclideanManifold<ceres::DYNAMIC> manifold(ambient_dim);
-template <int Size>
-class EuclideanManifold final : public Manifold {
- public:
-  static_assert(Size == ceres::DYNAMIC || Size >= 0,
-                "The size of the manifold needs to be non-negative.");
-  static_assert(ceres::DYNAMIC == Eigen::Dynamic,
-                "ceres::DYNAMIC needs to be the same as Eigen::Dynamic.");
-
-  EuclideanManifold() : size_{Size} {
-    static_assert(
-        Size != ceres::DYNAMIC,
-        "The size is set to dynamic. Please call the constructor with a size.");
-  }
-
-  explicit EuclideanManifold(int size) : size_(size) {
-    if (Size != ceres::DYNAMIC) {
-      CHECK_EQ(Size, size)
-          << "Specified size by template parameter differs from the supplied "
-             "one.";
-    } else {
-      CHECK_GE(size_, 0)
-          << "The size of the manifold needs to be non-negative.";
-    }
-  }
-
-  int AmbientSize() const override { return size_; }
-  int TangentSize() const override { return size_; }
-
-  bool Plus(const double* x_ptr,
-            const double* delta_ptr,
-            double* x_plus_delta_ptr) const override {
-    Eigen::Map<const AmbientVector> x(x_ptr, size_);
-    Eigen::Map<const AmbientVector> delta(delta_ptr, size_);
-    Eigen::Map<AmbientVector> x_plus_delta(x_plus_delta_ptr, size_);
-    x_plus_delta = x + delta;
-    return true;
-  }
-
-  bool PlusJacobian(const double* x_ptr, double* jacobian_ptr) const override {
-    Eigen::Map<MatrixJacobian> jacobian(jacobian_ptr, size_, size_);
-    jacobian.setIdentity();
-    return true;
-  }
-
-  bool RightMultiplyByPlusJacobian(const double* x,
-                                   const int num_rows,
-                                   const double* ambient_matrix,
-                                   double* tangent_matrix) const override {
-    std::copy_n(ambient_matrix, num_rows * size_, tangent_matrix);
-    return true;
-  }
-
-  bool Minus(const double* y_ptr,
-             const double* x_ptr,
-             double* y_minus_x_ptr) const override {
-    Eigen::Map<const AmbientVector> x(x_ptr, size_);
-    Eigen::Map<const AmbientVector> y(y_ptr, size_);
-    Eigen::Map<AmbientVector> y_minus_x(y_minus_x_ptr, size_);
-    y_minus_x = y - x;
-    return true;
-  }
-
-  bool MinusJacobian(const double* x_ptr, double* jacobian_ptr) const override {
-    Eigen::Map<MatrixJacobian> jacobian(jacobian_ptr, size_, size_);
-    jacobian.setIdentity();
-    return true;
-  }
-
- private:
-  static constexpr bool IsDynamic = (Size == ceres::DYNAMIC);
-  using AmbientVector = Eigen::Matrix<double, Size, 1>;
-  using MatrixJacobian = Eigen::Matrix<double, Size, Size, Eigen::RowMajor>;
-
-  int size_{};
-};
-
-// Hold a subset of the parameters inside a parameter block constant.
-class CERES_EXPORT SubsetManifold final : public Manifold {
- public:
-  SubsetManifold(int size, const std::vector<int>& constant_parameters);
-  int AmbientSize() const override;
-  int TangentSize() const override;
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override;
-  bool PlusJacobian(const double* x, double* jacobian) const override;
-  bool RightMultiplyByPlusJacobian(const double* x,
-                                   const int num_rows,
-                                   const double* ambient_matrix,
-                                   double* tangent_matrix) const override;
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override;
-  bool MinusJacobian(const double* x, double* jacobian) const override;
-
- private:
-  const int tangent_size_ = 0;
-  std::vector<bool> constancy_mask_;
-};
-
-// Implements the manifold for a Hamilton quaternion as defined in
-// https://en.wikipedia.org/wiki/Quaternion. Quaternions are represented as
-// unit norm 4-vectors, i.e.
-//
-// q = [q0; q1; q2; q3], |q| = 1
-//
-// is the ambient space representation.
-//
-//   q0  scalar part.
-//   q1  coefficient of i.
-//   q2  coefficient of j.
-//   q3  coefficient of k.
-//
-// where: i*i = j*j = k*k = -1 and i*j = k, j*k = i, k*i = j.
-//
-// The tangent space is R^3, which relates to the ambient space through the
-// Plus and Minus operations defined as:
-//
-// Plus(x, delta) = [cos(|delta|); sin(|delta|) * delta / |delta|] * x
-//    Minus(y, x) = to_delta(y * x^{-1})
-//
-// where "*" is the quaternion product and because q is a unit quaternion
-// (|q|=1), q^-1 = [q0; -q1; -q2; -q3]
-//
-// and to_delta( [q0; u_{3x1}] ) = u / |u| * atan2(|u|, q0)
-class CERES_EXPORT QuaternionManifold final : public Manifold {
- public:
-  int AmbientSize() const override { return 4; }
-  int TangentSize() const override { return 3; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override;
-  bool PlusJacobian(const double* x, double* jacobian) const override;
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override;
-  bool MinusJacobian(const double* x, double* jacobian) const override;
-};
-
-// Implements the quaternion manifold for Eigen's representation of the
-// Hamilton quaternion. Geometrically it is exactly the same as the
-// QuaternionManifold defined above. However, Eigen uses a different internal
-// memory layout for the elements of the quaternion than what is commonly
-// used. It stores the quaternion in memory as [q1, q2, q3, q0] or
-// [x, y, z, w] where the real (scalar) part is last.
-//
-// Since Ceres operates on parameter blocks which are raw double pointers this
-// difference is important and requires a different manifold.
-class CERES_EXPORT EigenQuaternionManifold final : public Manifold {
- public:
-  int AmbientSize() const override { return 4; }
-  int TangentSize() const override { return 3; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override;
-  bool PlusJacobian(const double* x, double* jacobian) const override;
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override;
-  bool MinusJacobian(const double* x, double* jacobian) const override;
-};
-
-}  // namespace ceres
-
-// clang-format off
-#include "ceres/internal/reenable_warnings.h"
-// clang-format on
-
-#endif  // CERES_PUBLIC_MANIFOLD_H_
diff --git a/third_party/ceres/include/ceres/manifold_test_utils.h b/third_party/ceres/include/ceres/manifold_test_utils.h
deleted file mode 100644
index 3e61457..0000000
--- a/third_party/ceres/include/ceres/manifold_test_utils.h
+++ /dev/null
@@ -1,345 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <cmath>
-#include <limits>
-#include <memory>
-
-#include "ceres/dynamic_numeric_diff_cost_function.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/manifold.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/types.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-
-// Matchers and macros to simplify testing of custom Manifold objects using the
-// gtest testing framework.
-//
-// Testing a Manifold has two parts.
-//
-// 1. Checking that Manifold::Plus() and Manifold::Minus() are correctly
-//    defined. This requires per manifold tests.
-//
-// 2. The other methods of the manifold have mathematical properties that make
-//    them compatible with Plus() and Minus(), as described in [1].
-//
-// To verify these general requirements for a custom Manifold, use the
-// EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD() macro from within a gtest test. Note
-// that additional domain-specific tests may also be prudent, e.g to verify the
-// behaviour of a Quaternion Manifold about pi.
-//
-// [1] "Integrating Generic Sensor Fusion Algorithms with Sound State
-//     Representations through Encapsulation of Manifolds", C. Hertzberg,
-//     R. Wagner, U. Frese and L. Schroder, https://arxiv.org/pdf/1107.1119.pdf
-
-// Verifies the general requirements for a custom Manifold are satisfied to
-// within the specified (numerical) tolerance.
-//
-// Example usage for a custom Manifold: ExampleManifold:
-//
-//    TEST(ExampleManifold, ManifoldInvariantsHold) {
-//      constexpr double kTolerance = 1.0e-9;
-//      ExampleManifold manifold;
-//      ceres::Vector x = ceres::Vector::Zero(manifold.AmbientSize());
-//      ceres::Vector y = ceres::Vector::Zero(manifold.AmbientSize());
-//      ceres::Vector delta = ceres::Vector::Zero(manifold.TangentSize());
-//      EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-//    }
-#define EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, tolerance) \
-  ::ceres::Vector zero_tangent =                                               \
-      ::ceres::Vector::Zero(manifold.TangentSize());                           \
-  EXPECT_THAT(manifold, ::ceres::XPlusZeroIsXAt(x, tolerance));                \
-  EXPECT_THAT(manifold, ::ceres::XMinusXIsZeroAt(x, tolerance));               \
-  EXPECT_THAT(manifold, ::ceres::MinusPlusIsIdentityAt(x, delta, tolerance));  \
-  EXPECT_THAT(manifold,                                                        \
-              ::ceres::MinusPlusIsIdentityAt(x, zero_tangent, tolerance));     \
-  EXPECT_THAT(manifold, ::ceres::PlusMinusIsIdentityAt(x, x, tolerance));      \
-  EXPECT_THAT(manifold, ::ceres::PlusMinusIsIdentityAt(x, y, tolerance));      \
-  EXPECT_THAT(manifold, ::ceres::HasCorrectPlusJacobianAt(x, tolerance));      \
-  EXPECT_THAT(manifold, ::ceres::HasCorrectMinusJacobianAt(x, tolerance));     \
-  EXPECT_THAT(manifold, ::ceres::MinusPlusJacobianIsIdentityAt(x, tolerance)); \
-  EXPECT_THAT(manifold,                                                        \
-              ::ceres::HasCorrectRightMultiplyByPlusJacobianAt(x, tolerance));
-
-// Checks that the invariant Plus(x, 0) == x holds.
-MATCHER_P2(XPlusZeroIsXAt, x, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-
-  Vector actual = Vector::Zero(ambient_size);
-  Vector zero = Vector::Zero(tangent_size);
-  EXPECT_TRUE(arg.Plus(x.data(), zero.data(), actual.data()));
-  const double n = (actual - Vector{x}).norm();
-  const double d = x.norm();
-  const double diffnorm = (d == 0.0) ? n : (n / d);
-  if (diffnorm > tolerance) {
-    *result_listener << "\nexpected (x): " << x.transpose()
-                     << "\nactual: " << actual.transpose()
-                     << "\ndiffnorm: " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-// Checks that the invariant Minus(x, x) == 0 holds.
-MATCHER_P2(XMinusXIsZeroAt, x, tolerance, "") {
-  const int tangent_size = arg.TangentSize();
-  Vector actual = Vector::Zero(tangent_size);
-  EXPECT_TRUE(arg.Minus(x.data(), x.data(), actual.data()));
-  const double diffnorm = actual.norm();
-  if (diffnorm > tolerance) {
-    *result_listener << "\nx: " << x.transpose()  //
-                     << "\nexpected: 0 0 0"
-                     << "\nactual: " << actual.transpose()
-                     << "\ndiffnorm: " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-// Helper struct to curry Plus(x, .) so that it can be numerically
-// differentiated.
-struct PlusFunctor {
-  PlusFunctor(const Manifold& manifold, const double* x)
-      : manifold(manifold), x(x) {}
-  bool operator()(double const* const* parameters, double* x_plus_delta) const {
-    return manifold.Plus(x, parameters[0], x_plus_delta);
-  }
-
-  const Manifold& manifold;
-  const double* x;
-};
-
-// Checks that the output of PlusJacobian matches the one obtained by
-// numerically evaluating D_2 Plus(x,0).
-MATCHER_P2(HasCorrectPlusJacobianAt, x, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-
-  NumericDiffOptions options;
-  options.ridders_relative_initial_step_size = 1e-4;
-
-  DynamicNumericDiffCostFunction<PlusFunctor, RIDDERS> cost_function(
-      new PlusFunctor(arg, x.data()), TAKE_OWNERSHIP, options);
-  cost_function.AddParameterBlock(tangent_size);
-  cost_function.SetNumResiduals(ambient_size);
-
-  Vector zero = Vector::Zero(tangent_size);
-  double* parameters[1] = {zero.data()};
-
-  Vector x_plus_zero = Vector::Zero(ambient_size);
-  Matrix expected = Matrix::Zero(ambient_size, tangent_size);
-  double* jacobians[1] = {expected.data()};
-
-  EXPECT_TRUE(
-      cost_function.Evaluate(parameters, x_plus_zero.data(), jacobians));
-
-  Matrix actual = Matrix::Random(ambient_size, tangent_size);
-  EXPECT_TRUE(arg.PlusJacobian(x.data(), actual.data()));
-
-  const double n = (actual - expected).norm();
-  const double d = expected.norm();
-  const double diffnorm = (d == 0.0) ? n : n / d;
-  if (diffnorm > tolerance) {
-    *result_listener << "\nx: " << x.transpose() << "\nexpected: \n"
-                     << expected << "\nactual:\n"
-                     << actual << "\ndiff:\n"
-                     << expected - actual << "\ndiffnorm : " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-// Checks that the invariant Minus(Plus(x, delta), x) == delta holds.
-MATCHER_P3(MinusPlusIsIdentityAt, x, delta, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-  Vector x_plus_delta = Vector::Zero(ambient_size);
-  EXPECT_TRUE(arg.Plus(x.data(), delta.data(), x_plus_delta.data()));
-  Vector actual = Vector::Zero(tangent_size);
-  EXPECT_TRUE(arg.Minus(x_plus_delta.data(), x.data(), actual.data()));
-
-  const double n = (actual - Vector{delta}).norm();
-  const double d = delta.norm();
-  const double diffnorm = (d == 0.0) ? n : (n / d);
-  if (diffnorm > tolerance) {
-    *result_listener << "\nx: " << x.transpose()
-                     << "\nexpected: " << delta.transpose()
-                     << "\nactual:" << actual.transpose()
-                     << "\ndiff:" << (delta - actual).transpose()
-                     << "\ndiffnorm: " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-// Checks that the invariant Plus(Minus(y, x), x) == y holds.
-MATCHER_P3(PlusMinusIsIdentityAt, x, y, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-
-  Vector y_minus_x = Vector::Zero(tangent_size);
-  EXPECT_TRUE(arg.Minus(y.data(), x.data(), y_minus_x.data()));
-
-  Vector actual = Vector::Zero(ambient_size);
-  EXPECT_TRUE(arg.Plus(x.data(), y_minus_x.data(), actual.data()));
-
-  const double n = (actual - Vector{y}).norm();
-  const double d = y.norm();
-  const double diffnorm = (d == 0.0) ? n : (n / d);
-  if (diffnorm > tolerance) {
-    *result_listener << "\nx: " << x.transpose()
-                     << "\nexpected: " << y.transpose()
-                     << "\nactual:" << actual.transpose()
-                     << "\ndiff:" << (y - actual).transpose()
-                     << "\ndiffnorm: " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-// Helper struct to curry Minus(., x) so that it can be numerically
-// differentiated.
-struct MinusFunctor {
-  MinusFunctor(const Manifold& manifold, const double* x)
-      : manifold(manifold), x(x) {}
-  bool operator()(double const* const* parameters, double* y_minus_x) const {
-    return manifold.Minus(parameters[0], x, y_minus_x);
-  }
-
-  const Manifold& manifold;
-  const double* x;
-};
-
-// Checks that the output of MinusJacobian matches the one obtained by
-// numerically evaluating D_1 Minus(x,x).
-MATCHER_P2(HasCorrectMinusJacobianAt, x, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-
-  Vector y = x;
-  Vector y_minus_x = Vector::Zero(tangent_size);
-
-  NumericDiffOptions options;
-  options.ridders_relative_initial_step_size = 1e-4;
-  DynamicNumericDiffCostFunction<MinusFunctor, RIDDERS> cost_function(
-      new MinusFunctor(arg, x.data()), TAKE_OWNERSHIP, options);
-  cost_function.AddParameterBlock(ambient_size);
-  cost_function.SetNumResiduals(tangent_size);
-
-  double* parameters[1] = {y.data()};
-
-  Matrix expected = Matrix::Zero(tangent_size, ambient_size);
-  double* jacobians[1] = {expected.data()};
-
-  EXPECT_TRUE(cost_function.Evaluate(parameters, y_minus_x.data(), jacobians));
-
-  Matrix actual = Matrix::Random(tangent_size, ambient_size);
-  EXPECT_TRUE(arg.MinusJacobian(x.data(), actual.data()));
-
-  const double n = (actual - expected).norm();
-  const double d = expected.norm();
-  const double diffnorm = (d == 0.0) ? n : (n / d);
-  if (diffnorm > tolerance) {
-    *result_listener << "\nx: " << x.transpose() << "\nexpected: \n"
-                     << expected << "\nactual:\n"
-                     << actual << "\ndiff:\n"
-                     << expected - actual << "\ndiffnorm: " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-// Checks that D_delta Minus(Plus(x, delta), x) at delta = 0 is an identity
-// matrix.
-MATCHER_P2(MinusPlusJacobianIsIdentityAt, x, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-
-  Matrix plus_jacobian(ambient_size, tangent_size);
-  EXPECT_TRUE(arg.PlusJacobian(x.data(), plus_jacobian.data()));
-  Matrix minus_jacobian(tangent_size, ambient_size);
-  EXPECT_TRUE(arg.MinusJacobian(x.data(), minus_jacobian.data()));
-
-  const Matrix actual = minus_jacobian * plus_jacobian;
-  const Matrix expected = Matrix::Identity(tangent_size, tangent_size);
-
-  const double n = (actual - expected).norm();
-  const double d = expected.norm();
-  const double diffnorm = n / d;
-  if (diffnorm > tolerance) {
-    *result_listener << "\nx: " << x.transpose() << "\nexpected: \n"
-                     << expected << "\nactual:\n"
-                     << actual << "\ndiff:\n"
-                     << expected - actual << "\ndiffnorm: " << diffnorm;
-
-    return false;
-  }
-  return true;
-}
-
-// Verify that the output of RightMultiplyByPlusJacobian is ambient_matrix *
-// plus_jacobian.
-MATCHER_P2(HasCorrectRightMultiplyByPlusJacobianAt, x, tolerance, "") {
-  const int ambient_size = arg.AmbientSize();
-  const int tangent_size = arg.TangentSize();
-
-  constexpr int kMinNumRows = 0;
-  constexpr int kMaxNumRows = 3;
-  for (int num_rows = kMinNumRows; num_rows <= kMaxNumRows; ++num_rows) {
-    Matrix plus_jacobian = Matrix::Random(ambient_size, tangent_size);
-    EXPECT_TRUE(arg.PlusJacobian(x.data(), plus_jacobian.data()));
-
-    Matrix ambient_matrix = Matrix::Random(num_rows, ambient_size);
-    Matrix expected = ambient_matrix * plus_jacobian;
-
-    Matrix actual = Matrix::Random(num_rows, tangent_size);
-    EXPECT_TRUE(arg.RightMultiplyByPlusJacobian(
-        x.data(), num_rows, ambient_matrix.data(), actual.data()));
-    const double n = (actual - expected).norm();
-    const double d = expected.norm();
-    const double diffnorm = (d == 0.0) ? n : (n / d);
-    if (diffnorm > tolerance) {
-      *result_listener << "\nx: " << x.transpose() << "\nambient_matrix : \n"
-                       << ambient_matrix << "\nplus_jacobian : \n"
-                       << plus_jacobian << "\nexpected: \n"
-                       << expected << "\nactual:\n"
-                       << actual << "\ndiff:\n"
-                       << expected - actual << "\ndiffnorm : " << diffnorm;
-      return false;
-    }
-  }
-  return true;
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/include/ceres/normal_prior.h b/third_party/ceres/include/ceres/normal_prior.h
deleted file mode 100644
index 5a26e01..0000000
--- a/third_party/ceres/include/ceres/normal_prior.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Cost term that implements a prior on a parameter block using a
-// normal distribution.
-
-#ifndef CERES_PUBLIC_NORMAL_PRIOR_H_
-#define CERES_PUBLIC_NORMAL_PRIOR_H_
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-
-namespace ceres {
-
-// Implements a cost function of the form
-//
-//   cost(x) = ||A(x - b)||^2
-//
-// where, the matrix A and the vector b are fixed and x is the
-// variable. In case the user is interested in implementing a cost
-// function of the form
-//
-//   cost(x) = (x - mu)^T S^{-1} (x - mu)
-//
-// where, mu is a vector and S is a covariance matrix, then, A =
-// S^{-1/2}, i.e the matrix A is the square root of the inverse of the
-// covariance, also known as the stiffness matrix. There are however
-// no restrictions on the shape of A. It is free to be rectangular,
-// which would be the case if the covariance matrix S is rank
-// deficient.
-
-class CERES_EXPORT NormalPrior final : public CostFunction {
- public:
-  // Check that the number of rows in the vector b are the same as the
-  // number of columns in the matrix A, crash otherwise.
-  NormalPrior(const Matrix& A, Vector b);
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override;
-
- private:
-  Matrix A_;
-  Vector b_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_NORMAL_PRIOR_H_
diff --git a/third_party/ceres/include/ceres/numeric_diff_cost_function.h b/third_party/ceres/include/ceres/numeric_diff_cost_function.h
deleted file mode 100644
index f2a377b..0000000
--- a/third_party/ceres/include/ceres/numeric_diff_cost_function.h
+++ /dev/null
@@ -1,293 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// Create CostFunctions as needed by the least squares framework with jacobians
-// computed via numeric (a.k.a. finite) differentiation. For more details see
-// http://en.wikipedia.org/wiki/Numerical_differentiation.
-//
-// To get an numerically differentiated cost function, you must define
-// a class with a operator() (a functor) that computes the residuals.
-//
-// The function must write the computed value in the last argument
-// (the only non-const one) and return true to indicate success.
-// Please see cost_function.h for details on how the return value
-// maybe used to impose simple constraints on the parameter block.
-//
-// For example, consider a scalar error e = k - x'y, where both x and y are
-// two-dimensional column vector parameters, the prime sign indicates
-// transposition, and k is a constant. The form of this error, which is the
-// difference between a constant and an expression, is a common pattern in least
-// squares problems. For example, the value x'y might be the model expectation
-// for a series of measurements, where there is an instance of the cost function
-// for each measurement k.
-//
-// The actual cost added to the total problem is e^2, or (k - x'k)^2; however,
-// the squaring is implicitly done by the optimization framework.
-//
-// To write an numerically-differentiable cost function for the above model,
-// first define the object
-//
-//   class MyScalarCostFunctor {
-//     explicit MyScalarCostFunctor(double k): k_(k) {}
-//
-//     bool operator()(const double* const x,
-//                     const double* const y,
-//                     double* residuals) const {
-//       residuals[0] = k_ - x[0] * y[0] - x[1] * y[1];
-//       return true;
-//     }
-//
-//    private:
-//     double k_;
-//   };
-//
-// Note that in the declaration of operator() the input parameters x
-// and y come first, and are passed as const pointers to arrays of
-// doubles. If there were three input parameters, then the third input
-// parameter would come after y. The output is always the last
-// parameter, and is also a pointer to an array. In the example above,
-// the residual is a scalar, so only residuals[0] is set.
-//
-// Then given this class definition, the numerically differentiated
-// cost function with central differences used for computing the
-// derivative can be constructed as follows.
-//
-//   CostFunction* cost_function
-//       = new NumericDiffCostFunction<MyScalarCostFunctor, CENTRAL, 1, 2, 2>(
-//           new MyScalarCostFunctor(1.0));                    ^     ^  ^  ^
-//                                                             |     |  |  |
-//                                 Finite Differencing Scheme -+     |  |  |
-//                                 Dimension of residual ------------+  |  |
-//                                 Dimension of x ----------------------+  |
-//                                 Dimension of y -------------------------+
-//
-// In this example, there is usually an instance for each measurement of k.
-//
-// In the instantiation above, the template parameters following
-// "MyScalarCostFunctor", "1, 2, 2", describe the functor as computing
-// a 1-dimensional output from two arguments, both 2-dimensional.
-//
-// NumericDiffCostFunction also supports cost functions with a
-// runtime-determined number of residuals. For example:
-//
-// clang-format off
-//
-//   CostFunction* cost_function
-//       = new NumericDiffCostFunction<MyScalarCostFunctor, CENTRAL, DYNAMIC, 2, 2>(
-//           new CostFunctorWithDynamicNumResiduals(1.0),               ^     ^  ^
-//           TAKE_OWNERSHIP,                                            |     |  |
-//           runtime_number_of_residuals); <----+                       |     |  |
-//                                              |                       |     |  |
-//                                              |                       |     |  |
-//             Actual number of residuals ------+                       |     |  |
-//             Indicate dynamic number of residuals --------------------+     |  |
-//             Dimension of x ------------------------------------------------+  |
-//             Dimension of y ---------------------------------------------------+
-// clang-format on
-//
-//
-// The central difference method is considerably more accurate at the cost of
-// twice as many function evaluations than forward difference. Consider using
-// central differences begin with, and only after that works, trying forward
-// difference to improve performance.
-//
-// WARNING #1: A common beginner's error when first using
-// NumericDiffCostFunction is to get the sizing wrong. In particular,
-// there is a tendency to set the template parameters to (dimension of
-// residual, number of parameters) instead of passing a dimension
-// parameter for *every parameter*. In the example above, that would
-// be <MyScalarCostFunctor, 1, 2>, which is missing the last '2'
-// argument. Please be careful when setting the size parameters.
-//
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-//
-// ALTERNATE INTERFACE
-//
-// For a variety of reasons, including compatibility with legacy code,
-// NumericDiffCostFunction can also take CostFunction objects as
-// input. The following describes how.
-//
-// To get a numerically differentiated cost function, define a
-// subclass of CostFunction such that the Evaluate() function ignores
-// the jacobian parameter. The numeric differentiation wrapper will
-// fill in the jacobian parameter if necessary by repeatedly calling
-// the Evaluate() function with small changes to the appropriate
-// parameters, and computing the slope. For performance, the numeric
-// differentiation wrapper class is templated on the concrete cost
-// function, even though it could be implemented only in terms of the
-// virtual CostFunction interface.
-//
-// The numerically differentiated version of a cost function for a cost function
-// can be constructed as follows:
-//
-//   auto* cost_function
-//       = new NumericDiffCostFunction<MyCostFunction, CENTRAL, 1, 4, 8>();
-//
-// where MyCostFunction has 1 residual and 2 parameter blocks with sizes 4 and 8
-// respectively. Look at the tests for a more detailed example.
-//
-// TODO(keir): Characterize accuracy; mention pitfalls; provide alternatives.
-
-#ifndef CERES_PUBLIC_NUMERIC_DIFF_COST_FUNCTION_H_
-#define CERES_PUBLIC_NUMERIC_DIFF_COST_FUNCTION_H_
-
-#include <array>
-#include <memory>
-#include <type_traits>
-
-#include "Eigen/Dense"
-#include "ceres/cost_function.h"
-#include "ceres/internal/numeric_diff.h"
-#include "ceres/internal/parameter_dims.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-template <typename CostFunctor,
-          NumericDiffMethodType kMethod = CENTRAL,
-          int kNumResiduals = 0,  // Number of residuals, or ceres::DYNAMIC
-          int... Ns>              // Parameters dimensions for each block.
-class NumericDiffCostFunction final
-    : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  explicit NumericDiffCostFunction(
-      CostFunctor* functor,
-      Ownership ownership = TAKE_OWNERSHIP,
-      int num_residuals = kNumResiduals,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : NumericDiffCostFunction{std::unique_ptr<CostFunctor>{functor},
-                                ownership,
-                                num_residuals,
-                                options} {}
-
-  explicit NumericDiffCostFunction(
-      std::unique_ptr<CostFunctor> functor,
-      int num_residuals = kNumResiduals,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : NumericDiffCostFunction{
-            std::move(functor), TAKE_OWNERSHIP, num_residuals, options} {}
-
-  // Constructs the CostFunctor on the heap and takes the ownership.
-  // Invocable only if the number of residuals is known at compile-time.
-  template <class... Args,
-            bool kIsDynamic = kNumResiduals == DYNAMIC,
-            std::enable_if_t<!kIsDynamic &&
-                             std::is_constructible_v<CostFunctor, Args&&...>>* =
-                nullptr>
-  explicit NumericDiffCostFunction(Args&&... args)
-      // NOTE We explicitly use direct initialization using parentheses instead
-      // of uniform initialization using braces to avoid narrowing conversion
-      // warnings.
-      : NumericDiffCostFunction{
-            std::make_unique<CostFunctor>(std::forward<Args>(args)...),
-            TAKE_OWNERSHIP} {}
-
-  NumericDiffCostFunction(NumericDiffCostFunction&& other) noexcept = default;
-  NumericDiffCostFunction& operator=(NumericDiffCostFunction&& other) noexcept =
-      default;
-  NumericDiffCostFunction(const NumericDiffCostFunction&) = delete;
-  NumericDiffCostFunction& operator=(const NumericDiffCostFunction&) = delete;
-
-  ~NumericDiffCostFunction() override {
-    if (ownership_ != TAKE_OWNERSHIP) {
-      functor_.release();
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    using internal::FixedArray;
-    using internal::NumericDiff;
-
-    using ParameterDims =
-        typename SizedCostFunction<kNumResiduals, Ns...>::ParameterDims;
-
-    constexpr int kNumParameters = ParameterDims::kNumParameters;
-    constexpr int kNumParameterBlocks = ParameterDims::kNumParameterBlocks;
-
-    // Get the function value (residuals) at the the point to evaluate.
-    if (!internal::VariadicEvaluate<ParameterDims>(
-            *functor_, parameters, residuals)) {
-      return false;
-    }
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    // Create a copy of the parameters which will get mutated.
-    FixedArray<double> parameters_copy(kNumParameters);
-    std::array<double*, kNumParameterBlocks> parameters_reference_copy =
-        ParameterDims::GetUnpackedParameters(parameters_copy.data());
-
-    for (int block = 0; block < kNumParameterBlocks; ++block) {
-      memcpy(parameters_reference_copy[block],
-             parameters[block],
-             sizeof(double) * ParameterDims::GetDim(block));
-    }
-
-    internal::EvaluateJacobianForParameterBlocks<ParameterDims>::
-        template Apply<kMethod, kNumResiduals>(
-            functor_.get(),
-            residuals,
-            options_,
-            SizedCostFunction<kNumResiduals, Ns...>::num_residuals(),
-            parameters_reference_copy.data(),
-            jacobians);
-
-    return true;
-  }
-
-  const CostFunctor& functor() const { return *functor_; }
-
- private:
-  explicit NumericDiffCostFunction(std::unique_ptr<CostFunctor> functor,
-                                   Ownership ownership,
-                                   [[maybe_unused]] int num_residuals,
-                                   const NumericDiffOptions& options)
-      : functor_(std::move(functor)), ownership_(ownership), options_(options) {
-    if constexpr (kNumResiduals == DYNAMIC) {
-      SizedCostFunction<kNumResiduals, Ns...>::set_num_residuals(num_residuals);
-    }
-  }
-
-  std::unique_ptr<CostFunctor> functor_;
-  Ownership ownership_;
-  NumericDiffOptions options_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_NUMERIC_DIFF_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/numeric_diff_first_order_function.h b/third_party/ceres/include/ceres/numeric_diff_first_order_function.h
deleted file mode 100644
index 525f197..0000000
--- a/third_party/ceres/include/ceres/numeric_diff_first_order_function.h
+++ /dev/null
@@ -1,271 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_NUMERIC_DIFF_FIRST_ORDER_FUNCTION_H_
-#define CERES_PUBLIC_NUMERIC_DIFF_FIRST_ORDER_FUNCTION_H_
-
-#include <algorithm>
-#include <memory>
-#include <type_traits>
-#include <utility>
-
-#include "ceres/first_order_function.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/internal/numeric_diff.h"
-#include "ceres/internal/parameter_dims.h"
-#include "ceres/internal/variadic_evaluate.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// Creates FirstOrderFunctions as needed by the GradientProblem
-// framework, with gradients computed via numeric differentiation. For
-// more information on numeric differentiation, see the wikipedia
-// article at https://en.wikipedia.org/wiki/Numerical_differentiation
-//
-// To get an numerically differentiated cost function, you must define
-// a class with an operator() (a functor) that computes the cost.
-//
-// The function must write the computed value in the last argument
-// (the only non-const one) and return true to indicate success.
-//
-// For example, consider a scalar error e = x'y - a, where both x and y are
-// two-dimensional column vector parameters, the prime sign indicates
-// transposition, and a is a constant.
-//
-// To write an numerically-differentiable cost function for the above model,
-// first define the object
-//
-//  class QuadraticCostFunctor {
-//   public:
-//    explicit QuadraticCostFunctor(double a) : a_(a) {}
-//    bool operator()(const double* const xy, double* cost) const {
-//      constexpr int kInputVectorLength = 2;
-//      const double* const x = xy;
-//      const double* const y = xy + kInputVectorLength;
-//      *cost = x[0] * y[0] + x[1] * y[1] - a_;
-//      return true;
-//    }
-//
-//   private:
-//    double a_;
-//  };
-//
-//
-// Note that in the declaration of operator() the input parameters xy
-// come first, and are passed as const pointers to array of
-// doubles. The output cost is the last parameter.
-//
-// Then given this class definition, the numerically differentiated
-// first order function with central differences used for computing the
-// derivative can be constructed as follows.
-//
-//   FirstOrderFunction* function
-//       = new NumericDiffFirstOrderFunction<MyScalarCostFunctor, CENTRAL, 4>(
-//           new QuadraticCostFunctor(1.0));                   ^     ^     ^
-//                                                             |     |     |
-//                                 Finite Differencing Scheme -+     |     |
-//                                 Dimension of xy ------------------------+
-//
-//
-// In the instantiation above, the template parameters following
-// "QuadraticCostFunctor", "CENTRAL, 4", describe the finite
-// differencing scheme as "central differencing" and the functor as
-// computing its cost from a 4 dimensional input.
-//
-// If the size of the parameter vector is not known at compile time, then an
-// alternate construction syntax can be used:
-//
-//   FirstOrderFunction* function
-//       = new NumericDiffFirstOrderFunction<MyScalarCostFunctor, CENTRAL>(
-//           new QuadraticCostFunctor(1.0), 4);
-//
-// Note that instead of passing 4 as a template argument, it is now passed as
-// the second argument to the constructor.
-template <typename FirstOrderFunctor,
-          NumericDiffMethodType kMethod,
-          int kNumParameters = DYNAMIC>
-class NumericDiffFirstOrderFunction final : public FirstOrderFunction {
- public:
-  template <class... Args,
-            bool kIsDynamic = kNumParameters == DYNAMIC,
-            std::enable_if_t<!kIsDynamic &&
-                             std::is_constructible_v<FirstOrderFunctor,
-                                                     Args&&...>>* = nullptr>
-  explicit NumericDiffFirstOrderFunction(Args&&... args)
-      : NumericDiffFirstOrderFunction{std::make_unique<FirstOrderFunction>(
-            std::forward<Args>(args)...)} {}
-
-  NumericDiffFirstOrderFunction(const NumericDiffFirstOrderFunction&) = delete;
-  NumericDiffFirstOrderFunction& operator=(
-      const NumericDiffFirstOrderFunction&) = delete;
-  NumericDiffFirstOrderFunction(
-      NumericDiffFirstOrderFunction&& other) noexcept = default;
-  NumericDiffFirstOrderFunction& operator=(
-      NumericDiffFirstOrderFunction&& other) noexcept = default;
-
-  // Constructor for the case where the parameter size is known at compile time.
-  explicit NumericDiffFirstOrderFunction(
-      FirstOrderFunctor* functor,
-      Ownership ownership = TAKE_OWNERSHIP,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : NumericDiffFirstOrderFunction{
-            std::unique_ptr<FirstOrderFunctor>{functor},
-            kNumParameters,
-            ownership,
-            options,
-            FIXED_INIT} {}
-
-  // Constructor for the case where the parameter size is known at compile time.
-  explicit NumericDiffFirstOrderFunction(
-      std::unique_ptr<FirstOrderFunctor> functor,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : NumericDiffFirstOrderFunction{
-            std::move(functor), kNumParameters, TAKE_OWNERSHIP, FIXED_INIT} {}
-
-  // Constructor for the case where the parameter size is specified at run time.
-  explicit NumericDiffFirstOrderFunction(
-      FirstOrderFunctor* functor,
-      int num_parameters,
-      Ownership ownership = TAKE_OWNERSHIP,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : NumericDiffFirstOrderFunction{
-            std::unique_ptr<FirstOrderFunctor>{functor},
-            num_parameters,
-            ownership,
-            options,
-            DYNAMIC_INIT} {}
-
-  // Constructor for the case where the parameter size is specified at run time.
-  explicit NumericDiffFirstOrderFunction(
-      std::unique_ptr<FirstOrderFunctor> functor,
-      int num_parameters,
-      Ownership ownership = TAKE_OWNERSHIP,
-      const NumericDiffOptions& options = NumericDiffOptions())
-      : NumericDiffFirstOrderFunction{std::move(functor),
-                                      num_parameters,
-                                      ownership,
-                                      options,
-                                      DYNAMIC_INIT} {}
-
-  ~NumericDiffFirstOrderFunction() override {
-    if (ownership_ != TAKE_OWNERSHIP) {
-      functor_.release();
-    }
-  }
-
-  bool Evaluate(const double* const parameters,
-                double* cost,
-                double* gradient) const override {
-    // Get the function value (cost) at the the point to evaluate.
-    if (!(*functor_)(parameters, cost)) {
-      return false;
-    }
-
-    if (gradient == nullptr) {
-      return true;
-    }
-
-    // Create a copy of the parameters which will get mutated.
-    internal::FixedArray<double, 32> parameters_copy(num_parameters_);
-    std::copy_n(parameters, num_parameters_, parameters_copy.data());
-    double* parameters_ptr = parameters_copy.data();
-    constexpr int kNumResiduals = 1;
-    if constexpr (kNumParameters == DYNAMIC) {
-      internal::FirstOrderFunctorAdapter<FirstOrderFunctor> fofa(*functor_);
-      return internal::NumericDiff<
-          internal::FirstOrderFunctorAdapter<FirstOrderFunctor>,
-          kMethod,
-          kNumResiduals,
-          internal::DynamicParameterDims,
-          0,
-          DYNAMIC>::EvaluateJacobianForParameterBlock(&fofa,
-                                                      cost,
-                                                      options_,
-                                                      kNumResiduals,
-                                                      0,
-                                                      num_parameters_,
-                                                      &parameters_ptr,
-                                                      gradient);
-    } else {
-      return internal::EvaluateJacobianForParameterBlocks<
-          internal::StaticParameterDims<kNumParameters>>::
-          template Apply<kMethod, 1>(functor_.get(),
-                                     cost,
-                                     options_,
-                                     kNumResiduals,
-                                     &parameters_ptr,
-                                     &gradient);
-    }
-  }
-
-  int NumParameters() const override { return num_parameters_; }
-
-  const FirstOrderFunctor& functor() const { return *functor_; }
-
- private:
-  // Tags used to differentiate between dynamic and fixed size constructor
-  // delegate invocations.
-  static constexpr std::integral_constant<int, DYNAMIC> DYNAMIC_INIT{};
-  static constexpr std::integral_constant<int, kNumParameters> FIXED_INIT{};
-
-  template <class InitTag>
-  explicit NumericDiffFirstOrderFunction(
-      std::unique_ptr<FirstOrderFunctor> functor,
-      int num_parameters,
-      Ownership ownership,
-      const NumericDiffOptions& options,
-      InitTag /*unused*/)
-      : functor_(std::move(functor)),
-        num_parameters_(num_parameters),
-        ownership_(ownership),
-        options_(options) {
-    static_assert(
-        kNumParameters == FIXED_INIT,
-        "Template parameter must be DYNAMIC when using this constructor. If "
-        "you want to provide the number of parameters statically use the other "
-        "constructor.");
-    if constexpr (InitTag::value == DYNAMIC_INIT) {
-      CHECK_GT(num_parameters, 0);
-    }
-  }
-
-  std::unique_ptr<FirstOrderFunctor> functor_;
-  int num_parameters_;
-  Ownership ownership_;
-  NumericDiffOptions options_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_NUMERIC_DIFF_FIRST_ORDER_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/numeric_diff_options.h b/third_party/ceres/include/ceres/numeric_diff_options.h
deleted file mode 100644
index eefb7ad..0000000
--- a/third_party/ceres/include/ceres/numeric_diff_options.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: tbennun@gmail.com (Tal Ben-Nun)
-//
-
-#ifndef CERES_PUBLIC_NUMERIC_DIFF_OPTIONS_H_
-#define CERES_PUBLIC_NUMERIC_DIFF_OPTIONS_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// Options pertaining to numeric differentiation (e.g., convergence criteria,
-// step sizes).
-struct CERES_EXPORT NumericDiffOptions {
-  // Numeric differentiation step size (multiplied by parameter block's
-  // order of magnitude). If parameters are close to zero, the step size
-  // is set to sqrt(machine_epsilon).
-  double relative_step_size = 1e-6;
-
-  // Initial step size for Ridders adaptive numeric differentiation (multiplied
-  // by parameter block's order of magnitude).
-  // If parameters are close to zero, Ridders' method sets the step size
-  // directly to this value. This parameter is separate from
-  // "relative_step_size" in order to set a different default value.
-  //
-  // Note: For Ridders' method to converge, the step size should be initialized
-  // to a value that is large enough to produce a significant change in the
-  // function. As the derivative is estimated, the step size decreases.
-  double ridders_relative_initial_step_size = 1e-2;
-
-  // Maximal number of adaptive extrapolations (sampling) in Ridders' method.
-  int max_num_ridders_extrapolations = 10;
-
-  // Convergence criterion on extrapolation error for Ridders adaptive
-  // differentiation. The available error estimation methods are defined in
-  // NumericDiffErrorType and set in the "ridders_error_method" field.
-  double ridders_epsilon = 1e-12;
-
-  // The factor in which to shrink the step size with each extrapolation in
-  // Ridders' method.
-  double ridders_step_shrink_factor = 2.0;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_NUMERIC_DIFF_OPTIONS_H_
diff --git a/third_party/ceres/include/ceres/ordered_groups.h b/third_party/ceres/include/ceres/ordered_groups.h
deleted file mode 100644
index d15d22d..0000000
--- a/third_party/ceres/include/ceres/ordered_groups.h
+++ /dev/null
@@ -1,197 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_ORDERED_GROUPS_H_
-#define CERES_PUBLIC_ORDERED_GROUPS_H_
-
-#include <map>
-#include <set>
-#include <unordered_map>
-#include <vector>
-
-#include "ceres/internal/export.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// A class for storing and manipulating an ordered collection of
-// groups/sets with the following semantics:
-//
-// Group ids are non-negative integer values. Elements are any type
-// that can serve as a key in a map or an element of a set.
-//
-// An element can only belong to one group at a time. A group may
-// contain an arbitrary number of elements.
-//
-// Groups are ordered by their group id.
-template <typename T>
-class OrderedGroups {
- public:
-  // Add an element to a group. If a group with this id does not
-  // exist, one is created. This method can be called any number of
-  // times for the same element. Group ids should be non-negative
-  // numbers.
-  //
-  // Return value indicates if adding the element was a success.
-  bool AddElementToGroup(const T element, const int group) {
-    if (group < 0) {
-      return false;
-    }
-
-    auto it = element_to_group_.find(element);
-    if (it != element_to_group_.end()) {
-      if (it->second == group) {
-        // Element is already in the right group, nothing to do.
-        return true;
-      }
-
-      group_to_elements_[it->second].erase(element);
-      if (group_to_elements_[it->second].size() == 0) {
-        group_to_elements_.erase(it->second);
-      }
-    }
-
-    element_to_group_[element] = group;
-    group_to_elements_[group].insert(element);
-    return true;
-  }
-
-  void Clear() {
-    group_to_elements_.clear();
-    element_to_group_.clear();
-  }
-
-  // Remove the element, no matter what group it is in. Return value
-  // indicates if the element was actually removed.
-  bool Remove(const T element) {
-    const int current_group = GroupId(element);
-    if (current_group < 0) {
-      return false;
-    }
-
-    group_to_elements_[current_group].erase(element);
-
-    if (group_to_elements_[current_group].size() == 0) {
-      // If the group is empty, then get rid of it.
-      group_to_elements_.erase(current_group);
-    }
-
-    element_to_group_.erase(element);
-    return true;
-  }
-
-  // Bulk remove elements. The return value indicates the number of
-  // elements successfully removed.
-  int Remove(const std::vector<T>& elements) {
-    if (NumElements() == 0 || elements.size() == 0) {
-      return 0;
-    }
-
-    int num_removed = 0;
-    for (int i = 0; i < elements.size(); ++i) {
-      num_removed += Remove(elements[i]);
-    }
-    return num_removed;
-  }
-
-  // Reverse the order of the groups in place.
-  void Reverse() {
-    if (NumGroups() == 0) {
-      return;
-    }
-
-    auto it = group_to_elements_.rbegin();
-    std::map<int, std::set<T>> new_group_to_elements;
-    new_group_to_elements[it->first] = it->second;
-
-    int new_group_id = it->first + 1;
-    for (++it; it != group_to_elements_.rend(); ++it) {
-      for (const auto& element : it->second) {
-        element_to_group_[element] = new_group_id;
-      }
-      new_group_to_elements[new_group_id] = it->second;
-      new_group_id++;
-    }
-
-    group_to_elements_.swap(new_group_to_elements);
-  }
-
-  // Return the group id for the element. If the element is not a
-  // member of any group, return -1.
-  int GroupId(const T element) const {
-    auto it = element_to_group_.find(element);
-    if (it == element_to_group_.end()) {
-      return -1;
-    }
-    return it->second;
-  }
-
-  bool IsMember(const T element) const {
-    auto it = element_to_group_.find(element);
-    return (it != element_to_group_.end());
-  }
-
-  // This function always succeeds, i.e., implicitly there exists a
-  // group for every integer.
-  int GroupSize(const int group) const {
-    auto it = group_to_elements_.find(group);
-    return (it == group_to_elements_.end()) ? 0 : it->second.size();
-  }
-
-  int NumElements() const { return element_to_group_.size(); }
-
-  // Number of groups with one or more elements.
-  int NumGroups() const { return group_to_elements_.size(); }
-
-  // The first group with one or more elements. Calling this when
-  // there are no groups with non-zero elements will result in a
-  // crash.
-  int MinNonZeroGroup() const {
-    CHECK_NE(NumGroups(), 0);
-    return group_to_elements_.begin()->first;
-  }
-
-  const std::map<int, std::set<T>>& group_to_elements() const {
-    return group_to_elements_;
-  }
-
-  const std::map<T, int>& element_to_group() const { return element_to_group_; }
-
- private:
-  std::map<int, std::set<T>> group_to_elements_;
-  std::unordered_map<T, int> element_to_group_;
-};
-
-// Typedef for the most commonly used version of OrderedGroups.
-using ParameterBlockOrdering = OrderedGroups<double*>;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_ORDERED_GROUP_H_
diff --git a/third_party/ceres/include/ceres/problem.h b/third_party/ceres/include/ceres/problem.h
deleted file mode 100644
index 4c6fd1b..0000000
--- a/third_party/ceres/include/ceres/problem.h
+++ /dev/null
@@ -1,554 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.com (Keir Mierle)
-//
-// The Problem object is used to build and hold least squares problems.
-
-#ifndef CERES_PUBLIC_PROBLEM_H_
-#define CERES_PUBLIC_PROBLEM_H_
-
-#include <array>
-#include <cstddef>
-#include <map>
-#include <memory>
-#include <set>
-#include <vector>
-
-#include "ceres/context.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/port.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-class CostFunction;
-class EvaluationCallback;
-class LossFunction;
-class Manifold;
-class Solver;
-struct CRSMatrix;
-
-namespace internal {
-class Preprocessor;
-class ProblemImpl;
-class ParameterBlock;
-class ResidualBlock;
-}  // namespace internal
-
-// A ResidualBlockId is an opaque handle clients can use to remove residual
-// blocks from a Problem after adding them.
-using ResidualBlockId = internal::ResidualBlock*;
-
-// A class to represent non-linear least squares problems. Such
-// problems have a cost function that is a sum of error terms (known
-// as "residuals"), where each residual is a function of some subset
-// of the parameters. The cost function takes the form
-//
-//    N    1
-//   SUM  --- loss( || r_i1, r_i2,..., r_ik ||^2  ),
-//   i=1   2
-//
-// where
-//
-//   r_ij is residual number i, component j; the residual is a function of some
-//        subset of the parameters x1...xk. For example, in a structure from
-//        motion problem a residual might be the difference between a measured
-//        point in an image and the reprojected position for the matching
-//        camera, point pair. The residual would have two components, error in x
-//        and error in y.
-//
-//   loss(y) is the loss function; for example, squared error or Huber L1
-//           loss. If loss(y) = y, then the cost function is non-robustified
-//           least squares.
-//
-// This class is specifically designed to address the important subset of
-// "sparse" least squares problems, where each component of the residual depends
-// only on a small number number of parameters, even though the total number of
-// residuals and parameters may be very large. This property affords tremendous
-// gains in scale, allowing efficient solving of large problems that are
-// otherwise inaccessible.
-//
-// The canonical example of a sparse least squares problem is
-// "structure-from-motion" (SFM), where the parameters are points and cameras,
-// and residuals are reprojection errors. Typically a single residual will
-// depend only on 9 parameters (3 for the point, 6 for the camera).
-//
-// To create a least squares problem, use the AddResidualBlock() and
-// AddParameterBlock() methods, documented below. Here is an example least
-// squares problem containing 3 parameter blocks of sizes 3, 4 and 5
-// respectively and two residual terms of size 2 and 6:
-//
-//   double x1[] = { 1.0, 2.0, 3.0 };
-//   double x2[] = { 1.0, 2.0, 3.0, 5.0 };
-//   double x3[] = { 1.0, 2.0, 3.0, 6.0, 7.0 };
-//
-//   Problem problem;
-//
-//   problem.AddResidualBlock(new MyUnaryCostFunction(...), nullptr, x1);
-//   problem.AddResidualBlock(new MyBinaryCostFunction(...), nullptr, x2, x3);
-//
-// Please see cost_function.h for details of the CostFunction object.
-class CERES_EXPORT Problem {
- public:
-  struct CERES_EXPORT Options {
-    // These flags control whether the Problem object owns the CostFunctions,
-    // LossFunctions, and Manifolds passed into the Problem.
-    //
-    // If set to TAKE_OWNERSHIP, then the problem object will delete the
-    // corresponding object on destruction. The destructor is careful to delete
-    // the pointers only once, since sharing objects is allowed.
-    Ownership cost_function_ownership = TAKE_OWNERSHIP;
-    Ownership loss_function_ownership = TAKE_OWNERSHIP;
-    Ownership manifold_ownership = TAKE_OWNERSHIP;
-
-    // If true, trades memory for faster RemoveResidualBlock() and
-    // RemoveParameterBlock() operations.
-    //
-    // By default, RemoveParameterBlock() and RemoveResidualBlock() take time
-    // proportional to the size of the entire problem. If you only ever remove
-    // parameters or residuals from the problem occasionally, this might be
-    // acceptable. However, if you have memory to spare, enable this option to
-    // make RemoveParameterBlock() take time proportional to the number of
-    // residual blocks that depend on it, and RemoveResidualBlock() take (on
-    // average) constant time.
-    //
-    // The increase in memory usage is two-fold: an additional hash set per
-    // parameter block containing all the residuals that depend on the parameter
-    // block; and a hash set in the problem containing all residuals.
-    bool enable_fast_removal = false;
-
-    // By default, Ceres performs a variety of safety checks when constructing
-    // the problem. There is a small but measurable performance penalty to these
-    // checks, typically around 5% of construction time. If you are sure your
-    // problem construction is correct, and 5% of the problem construction time
-    // is truly an overhead you want to avoid, then you can set
-    // disable_all_safety_checks to true.
-    //
-    // WARNING: Do not set this to true, unless you are absolutely sure of what
-    // you are doing.
-    bool disable_all_safety_checks = false;
-
-    // A Ceres global context to use for solving this problem. This may help to
-    // reduce computation time as Ceres can reuse expensive objects to create.
-    // The context object can be nullptr, in which case Ceres may create one.
-    //
-    // Ceres does NOT take ownership of the pointer.
-    Context* context = nullptr;
-
-    // Using this callback interface, Ceres can notify you when it is about to
-    // evaluate the residuals or jacobians. With the callback, you can share
-    // computation between residual blocks by doing the shared computation in
-    // EvaluationCallback::PrepareForEvaluation() before Ceres calls
-    // CostFunction::Evaluate(). It also enables caching results between a pure
-    // residual evaluation and a residual & jacobian evaluation.
-    //
-    // Problem DOES NOT take ownership of the callback.
-    //
-    // NOTE: Evaluation callbacks are incompatible with inner iterations. So
-    // calling Solve with Solver::Options::use_inner_iterations = true on a
-    // Problem with a non-null evaluation callback is an error.
-    EvaluationCallback* evaluation_callback = nullptr;
-  };
-
-  // The default constructor is equivalent to the invocation
-  // Problem(Problem::Options()).
-  Problem();
-  explicit Problem(const Options& options);
-  Problem(Problem&&);
-  Problem& operator=(Problem&&);
-
-  Problem(const Problem&) = delete;
-  Problem& operator=(const Problem&) = delete;
-
-  ~Problem();
-
-  // Add a residual block to the overall cost function. The cost function
-  // carries with its information about the sizes of the parameter blocks it
-  // expects. The function checks that these match the sizes of the parameter
-  // blocks listed in parameter_blocks. The program aborts if a mismatch is
-  // detected. loss_function can be nullptr, in which case the cost of the term
-  // is just the squared norm of the residuals.
-  //
-  // The user has the option of explicitly adding the parameter blocks using
-  // AddParameterBlock. This causes additional correctness checking; however,
-  // AddResidualBlock implicitly adds the parameter blocks if they are not
-  // present, so calling AddParameterBlock explicitly is not required.
-  //
-  // The Problem object by default takes ownership of the cost_function and
-  // loss_function pointers (See Problem::Options to override this behaviour).
-  // These objects remain live for the life of the Problem object. If the user
-  // wishes to keep control over the destruction of these objects, then they can
-  // do this by setting the corresponding enums in the Options struct.
-  //
-  // Note: Even though the Problem takes ownership of cost_function and
-  // loss_function, it does not preclude the user from re-using them in another
-  // residual block. The destructor takes care to call delete on each
-  // cost_function or loss_function pointer only once, regardless of how many
-  // residual blocks refer to them.
-  //
-  // Example usage:
-  //
-  //   double x1[] = {1.0, 2.0, 3.0};
-  //   double x2[] = {1.0, 2.0, 5.0, 6.0};
-  //   double x3[] = {3.0, 6.0, 2.0, 5.0, 1.0};
-  //
-  //   Problem problem;
-  //
-  //   problem.AddResidualBlock(new MyUnaryCostFunction(...), nullptr, x1);
-  //   problem.AddResidualBlock(new MyBinaryCostFunction(...), nullptr, x2, x1);
-  //
-  // Add a residual block by listing the parameter block pointers directly
-  // instead of wapping them in a container.
-  template <typename... Ts>
-  ResidualBlockId AddResidualBlock(CostFunction* cost_function,
-                                   LossFunction* loss_function,
-                                   double* x0,
-                                   Ts*... xs) {
-    const std::array<double*, sizeof...(Ts) + 1> parameter_blocks{{x0, xs...}};
-    return AddResidualBlock(cost_function,
-                            loss_function,
-                            parameter_blocks.data(),
-                            static_cast<int>(parameter_blocks.size()));
-  }
-
-  // Add a residual block by providing a vector of parameter blocks.
-  ResidualBlockId AddResidualBlock(
-      CostFunction* cost_function,
-      LossFunction* loss_function,
-      const std::vector<double*>& parameter_blocks);
-
-  // Add a residual block by providing a pointer to the parameter block array
-  // and the number of parameter blocks.
-  ResidualBlockId AddResidualBlock(CostFunction* cost_function,
-                                   LossFunction* loss_function,
-                                   double* const* const parameter_blocks,
-                                   int num_parameter_blocks);
-
-  // Add a parameter block with appropriate size to the problem. Repeated calls
-  // with the same arguments are ignored. Repeated calls with the same double
-  // pointer but a different size will result in a crash.
-  void AddParameterBlock(double* values, int size);
-
-  // Add a parameter block with appropriate size and Manifold to the
-  // problem. It is okay for manifold to be nullptr.
-  //
-  // Repeated calls with the same arguments are ignored. Repeated calls
-  // with the same double pointer but a different size results in a crash
-  // (unless Solver::Options::disable_all_safety_checks is set to true).
-  //
-  // Repeated calls with the same double pointer and size but different Manifold
-  // is equivalent to calling SetManifold(manifold), i.e., any previously
-  // associated Manifold object will be replaced with the manifold.
-  void AddParameterBlock(double* values, int size, Manifold* manifold);
-
-  // Remove a parameter block from the problem. The Manifold of the parameter
-  // block, if it exists, will persist until the deletion of the problem
-  // (similar to cost/loss functions in residual block removal). Any residual
-  // blocks that depend on the parameter are also removed, as described above
-  // in RemoveResidualBlock().
-  //
-  // If Problem::Options::enable_fast_removal is true, then the removal is fast
-  // (almost constant time). Otherwise, removing a parameter block will incur a
-  // scan of the entire Problem object.
-  //
-  // WARNING: Removing a residual or parameter block will destroy the implicit
-  // ordering, rendering the jacobian or residuals returned from the solver
-  // uninterpretable. If you depend on the evaluated jacobian, do not use
-  // remove! This may change in a future release.
-  void RemoveParameterBlock(const double* values);
-
-  // Remove a residual block from the problem. Any parameters that the residual
-  // block depends on are not removed. The cost and loss functions for the
-  // residual block will not get deleted immediately; won't happen until the
-  // problem itself is deleted.
-  //
-  // WARNING: Removing a residual or parameter block will destroy the implicit
-  // ordering, rendering the jacobian or residuals returned from the solver
-  // uninterpretable. If you depend on the evaluated jacobian, do not use
-  // remove! This may change in a future release.
-  void RemoveResidualBlock(ResidualBlockId residual_block);
-
-  // Hold the indicated parameter block constant during optimization.
-  void SetParameterBlockConstant(const double* values);
-
-  // Allow the indicated parameter block to vary during optimization.
-  void SetParameterBlockVariable(double* values);
-
-  // Returns true if a parameter block is set constant, and false otherwise. A
-  // parameter block may be set constant in two ways: either by calling
-  // SetParameterBlockConstant or by associating a Manifold with a zero
-  // dimensional tangent space with it.
-  bool IsParameterBlockConstant(const double* values) const;
-
-  // Set the Manifold for the parameter block. Calling SetManifold with nullptr
-  // will clear any previously set Manifold for the parameter block.
-  //
-  // Repeated calls will result in any previously associated Manifold object to
-  // be replaced with the manifold.
-  //
-  // The manifold is owned by the Problem by default (See Problem::Options to
-  // override this behaviour).
-  //
-  // It is acceptable to set the same Manifold for multiple parameter blocks.
-  void SetManifold(double* values, Manifold* manifold);
-
-  // Get the Manifold object associated with this parameter block.
-  //
-  // If there is no Manifold object associated then nullptr is returned.
-  const Manifold* GetManifold(const double* values) const;
-
-  // Returns true if a Manifold is associated with this parameter block, false
-  // otherwise.
-  bool HasManifold(const double* values) const;
-
-  // Set the lower/upper bound for the parameter at position "index".
-  void SetParameterLowerBound(double* values, int index, double lower_bound);
-  void SetParameterUpperBound(double* values, int index, double upper_bound);
-
-  // Get the lower/upper bound for the parameter at position "index". If the
-  // parameter is not bounded by the user, then its lower bound is
-  // -std::numeric_limits<double>::max() and upper bound is
-  // std::numeric_limits<double>::max().
-  double GetParameterLowerBound(const double* values, int index) const;
-  double GetParameterUpperBound(const double* values, int index) const;
-
-  // Number of parameter blocks in the problem. Always equals
-  // parameter_blocks().size() and parameter_block_sizes().size().
-  int NumParameterBlocks() const;
-
-  // The size of the parameter vector obtained by summing over the sizes of all
-  // the parameter blocks.
-  int NumParameters() const;
-
-  // Number of residual blocks in the problem. Always equals
-  // residual_blocks().size().
-  int NumResidualBlocks() const;
-
-  // The size of the residual vector obtained by summing over the sizes of all
-  // of the residual blocks.
-  int NumResiduals() const;
-
-  // The size of the parameter block.
-  int ParameterBlockSize(const double* values) const;
-
-  // The dimension of the tangent space of the Manifold for the parameter block.
-  // If there is no Manifold associated with this parameter block, then
-  // ParameterBlockTangentSize = ParameterBlockSize.
-  int ParameterBlockTangentSize(const double* values) const;
-
-  // Is the given parameter block present in this problem or not?
-  bool HasParameterBlock(const double* values) const;
-
-  // Fills the passed parameter_blocks vector with pointers to the parameter
-  // blocks currently in the problem. After this call, parameter_block.size() ==
-  // NumParameterBlocks.
-  void GetParameterBlocks(std::vector<double*>* parameter_blocks) const;
-
-  // Fills the passed residual_blocks vector with pointers to the residual
-  // blocks currently in the problem. After this call, residual_blocks.size() ==
-  // NumResidualBlocks.
-  void GetResidualBlocks(std::vector<ResidualBlockId>* residual_blocks) const;
-
-  // Get all the parameter blocks that depend on the given residual block.
-  void GetParameterBlocksForResidualBlock(
-      const ResidualBlockId residual_block,
-      std::vector<double*>* parameter_blocks) const;
-
-  // Get the CostFunction for the given residual block.
-  const CostFunction* GetCostFunctionForResidualBlock(
-      const ResidualBlockId residual_block) const;
-
-  // Get the LossFunction for the given residual block. Returns nullptr
-  // if no loss function is associated with this residual block.
-  const LossFunction* GetLossFunctionForResidualBlock(
-      const ResidualBlockId residual_block) const;
-
-  // Get all the residual blocks that depend on the given parameter block.
-  //
-  // If Problem::Options::enable_fast_removal is true, then getting the residual
-  // blocks is fast and depends only on the number of residual
-  // blocks. Otherwise, getting the residual blocks for a parameter block will
-  // incur a scan of the entire Problem object.
-  void GetResidualBlocksForParameterBlock(
-      const double* values,
-      std::vector<ResidualBlockId>* residual_blocks) const;
-
-  // Options struct to control Problem::Evaluate.
-  struct EvaluateOptions {
-    // The set of parameter blocks for which evaluation should be
-    // performed. This vector determines the order that parameter blocks occur
-    // in the gradient vector and in the columns of the jacobian matrix. If
-    // parameter_blocks is empty, then it is assumed to be equal to vector
-    // containing ALL the parameter blocks. Generally speaking the parameter
-    // blocks will occur in the order in which they were added to the
-    // problem. But, this may change if the user removes any parameter blocks
-    // from the problem.
-    //
-    // NOTE: This vector should contain the same pointers as the ones used to
-    // add parameter blocks to the Problem. These parameter block should NOT
-    // point to new memory locations. Bad things will happen otherwise.
-    std::vector<double*> parameter_blocks;
-
-    // The set of residual blocks to evaluate. This vector determines the order
-    // in which the residuals occur, and how the rows of the jacobian are
-    // ordered. If residual_blocks is empty, then it is assumed to be equal to
-    // the vector containing ALL the residual blocks. Generally speaking the
-    // residual blocks will occur in the order in which they were added to the
-    // problem. But, this may change if the user removes any residual blocks
-    // from the problem.
-    std::vector<ResidualBlockId> residual_blocks;
-
-    // Even though the residual blocks in the problem may contain loss
-    // functions, setting apply_loss_function to false will turn off the
-    // application of the loss function to the output of the cost function. This
-    // is of use for example if the user wishes to analyse the solution quality
-    // by studying the distribution of residuals before and after the solve.
-    bool apply_loss_function = true;
-
-    int num_threads = 1;
-  };
-
-  // Evaluate Problem. Any of the output pointers can be nullptr. Which residual
-  // blocks and parameter blocks are used is controlled by the EvaluateOptions
-  // struct above.
-  //
-  // Note 1: The evaluation will use the values stored in the memory locations
-  // pointed to by the parameter block pointers used at the time of the
-  // construction of the problem. i.e.,
-  //
-  //   Problem problem;
-  //   double x = 1;
-  //   problem.AddResidualBlock(new MyCostFunction, nullptr, &x);
-  //
-  //   double cost = 0.0;
-  //   problem.Evaluate(Problem::EvaluateOptions(), &cost,
-  //                    nullptr, nullptr, nullptr);
-  //
-  // The cost is evaluated at x = 1. If you wish to evaluate the problem at x =
-  // 2, then
-  //
-  //   x = 2;
-  //   problem.Evaluate(Problem::EvaluateOptions(), &cost,
-  //                    nullptr, nullptr, nullptr);
-  //
-  // is the way to do so.
-  //
-  // Note 2: If no Manifolds are used, then the size of the gradient vector (and
-  // the number of columns in the jacobian) is the sum of the sizes of all the
-  // parameter blocks. If a parameter block has a Manifold, then it contributes
-  // "TangentSize" entries to the gradient vector (and the number of columns in
-  // the jacobian).
-  //
-  // Note 3: This function cannot be called while the problem is being solved,
-  // for example it cannot be called from an IterationCallback at the end of an
-  // iteration during a solve.
-  //
-  // Note 4: If an EvaluationCallback is associated with the problem, then its
-  // PrepareForEvaluation method will be called every time this method is called
-  // with new_point = true.
-  bool Evaluate(const EvaluateOptions& options,
-                double* cost,
-                std::vector<double>* residuals,
-                std::vector<double>* gradient,
-                CRSMatrix* jacobian);
-
-  // Evaluates the residual block, storing the scalar cost in *cost, the
-  // residual components in *residuals, and the jacobians between the parameters
-  // and residuals in jacobians[i], in row-major order.
-  //
-  // If residuals is nullptr, the residuals are not computed.
-  //
-  // If jacobians is nullptr, no Jacobians are computed. If jacobians[i] is
-  // nullptr, then the Jacobian for that parameter block is not computed.
-  //
-  // It is not okay to request the Jacobian w.r.t a parameter block that is
-  // constant.
-  //
-  // The return value indicates the success or failure. Even if the function
-  // returns false, the caller should expect the output memory locations to have
-  // been modified.
-  //
-  // The returned cost and jacobians have had robustification and Manifold
-  // applied already; for example, the jacobian for a 4-dimensional quaternion
-  // parameter using the "QuaternionParameterization" is num_residuals by 3
-  // instead of num_residuals by 4.
-  //
-  // apply_loss_function as the name implies allows the user to switch the
-  // application of the loss function on and off.
-  //
-  // If an EvaluationCallback is associated with the problem, then its
-  // PrepareForEvaluation method will be called every time this method is called
-  // with new_point = true. This conservatively assumes that the user may have
-  // changed the parameter values since the previous call to evaluate / solve.
-  // For improved efficiency, and only if you know that the parameter values
-  // have not changed between calls, see
-  // EvaluateResidualBlockAssumingParametersUnchanged().
-  bool EvaluateResidualBlock(ResidualBlockId residual_block_id,
-                             bool apply_loss_function,
-                             double* cost,
-                             double* residuals,
-                             double** jacobians) const;
-
-  // Same as EvaluateResidualBlock except that if an EvaluationCallback is
-  // associated with the problem, then its PrepareForEvaluation method will be
-  // called every time this method is called with new_point = false.
-  //
-  // This means, if an EvaluationCallback is associated with the problem then it
-  // is the user's responsibility to call PrepareForEvaluation before calling
-  // this method if necessary, i.e. iff the parameter values have been changed
-  // since the last call to evaluate / solve.'
-  //
-  // This is because, as the name implies, we assume that the parameter blocks
-  // did not change since the last time PrepareForEvaluation was called (via
-  // Solve, Evaluate or EvaluateResidualBlock).
-  bool EvaluateResidualBlockAssumingParametersUnchanged(
-      ResidualBlockId residual_block_id,
-      bool apply_loss_function,
-      double* cost,
-      double* residuals,
-      double** jacobians) const;
-
-  // Returns reference to the options with which the Problem was constructed.
-  const Options& options() const;
-
-  // Returns pointer to Problem implementation
-  internal::ProblemImpl* mutable_impl();
-
- private:
-  std::unique_ptr<internal::ProblemImpl> impl_;
-};
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_PROBLEM_H_
diff --git a/third_party/ceres/include/ceres/product_manifold.h b/third_party/ceres/include/ceres/product_manifold.h
deleted file mode 100644
index ed2d1f4..0000000
--- a/third_party/ceres/include/ceres/product_manifold.h
+++ /dev/null
@@ -1,319 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         sergiu.deitsch@gmail.com (Sergiu Deitsch)
-//
-
-#ifndef CERES_PUBLIC_PRODUCT_MANIFOLD_H_
-#define CERES_PUBLIC_PRODUCT_MANIFOLD_H_
-
-#include <algorithm>
-#include <array>
-#include <cassert>
-#include <cstddef>
-#include <numeric>
-#include <tuple>
-#include <type_traits>
-#include <utility>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/internal/port.h"
-#include "ceres/manifold.h"
-
-namespace ceres {
-
-// Construct a manifold by taking the Cartesian product of a number of other
-// manifolds. This is useful, when a parameter block is the Cartesian product
-// of two or more manifolds. For example the parameters of a camera consist of
-// a rotation and a translation, i.e., SO(3) x R^3.
-//
-// Example usage:
-//
-// ProductManifold<QuaternionManifold, EuclideanManifold<3>> se3;
-//
-// is the manifold for a rigid transformation, where the rotation is
-// represented using a quaternion.
-//
-// Manifolds can be copied and moved to ProductManifold:
-//
-// SubsetManifold manifold1(5, {2});
-// SubsetManifold manifold2(3, {0, 1});
-// ProductManifold<SubsetManifold, SubsetManifold> manifold(manifold1,
-//                                                          manifold2);
-//
-// In advanced use cases, manifolds can be dynamically allocated and passed as
-// (smart) pointers:
-//
-// ProductManifold<std::unique_ptr<QuaternionManifold>, EuclideanManifold<3>>
-//     se3{std::make_unique<QuaternionManifold>(), EuclideanManifold<3>{}};
-//
-// In C++17, the template parameters can be left out as they are automatically
-// deduced making the initialization much simpler:
-//
-// ProductManifold se3{QuaternionManifold{}, EuclideanManifold<3>{}};
-//
-// The manifold implementations must be either default constructible, copyable
-// or moveable to be usable in a ProductManifold.
-template <typename Manifold0, typename Manifold1, typename... ManifoldN>
-class ProductManifold final : public Manifold {
- public:
-  // ProductManifold constructor perfect forwards arguments to store manifolds.
-  //
-  // Either use default construction or if you need to copy or move-construct a
-  // manifold instance, you need to pass an instance as an argument for all
-  // types given as class template parameters.
-  template <typename... Args,
-            std::enable_if_t<std::is_constructible<
-                std::tuple<Manifold0, Manifold1, ManifoldN...>,
-                Args...>::value>* = nullptr>
-  explicit ProductManifold(Args&&... manifolds)
-      : ProductManifold{std::make_index_sequence<kNumManifolds>{},
-                        std::forward<Args>(manifolds)...} {}
-
-  int AmbientSize() const override { return ambient_size_; }
-  int TangentSize() const override { return tangent_size_; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override {
-    return PlusImpl(
-        x, delta, x_plus_delta, std::make_index_sequence<kNumManifolds>{});
-  }
-
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override {
-    return MinusImpl(
-        y, x, y_minus_x, std::make_index_sequence<kNumManifolds>{});
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian_ptr) const override {
-    MatrixRef jacobian(jacobian_ptr, AmbientSize(), TangentSize());
-    jacobian.setZero();
-    internal::FixedArray<double> buffer(buffer_size_);
-
-    return PlusJacobianImpl(
-        x, jacobian, buffer, std::make_index_sequence<kNumManifolds>{});
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian_ptr) const override {
-    MatrixRef jacobian(jacobian_ptr, TangentSize(), AmbientSize());
-    jacobian.setZero();
-    internal::FixedArray<double> buffer(buffer_size_);
-
-    return MinusJacobianImpl(
-        x, jacobian, buffer, std::make_index_sequence<kNumManifolds>{});
-  }
-
- private:
-  static constexpr std::size_t kNumManifolds = 2 + sizeof...(ManifoldN);
-
-  template <std::size_t... Indices, typename... Args>
-  explicit ProductManifold(std::index_sequence<Indices...>, Args&&... manifolds)
-      : manifolds_{std::forward<Args>(manifolds)...},
-        buffer_size_{(std::max)(
-            {(Dereference(std::get<Indices>(manifolds_)).TangentSize() *
-              Dereference(std::get<Indices>(manifolds_)).AmbientSize())...})},
-        ambient_sizes_{
-            Dereference(std::get<Indices>(manifolds_)).AmbientSize()...},
-        tangent_sizes_{
-            Dereference(std::get<Indices>(manifolds_)).TangentSize()...},
-        ambient_offsets_{ExclusiveScan(ambient_sizes_)},
-        tangent_offsets_{ExclusiveScan(tangent_sizes_)},
-        ambient_size_{
-            std::accumulate(ambient_sizes_.begin(), ambient_sizes_.end(), 0)},
-        tangent_size_{
-            std::accumulate(tangent_sizes_.begin(), tangent_sizes_.end(), 0)} {}
-
-  template <std::size_t Index0, std::size_t... Indices>
-  bool PlusImpl(const double* x,
-                const double* delta,
-                double* x_plus_delta,
-                std::index_sequence<Index0, Indices...>) const {
-    if (!Dereference(std::get<Index0>(manifolds_))
-             .Plus(x + ambient_offsets_[Index0],
-                   delta + tangent_offsets_[Index0],
-                   x_plus_delta + ambient_offsets_[Index0])) {
-      return false;
-    }
-
-    return PlusImpl(x, delta, x_plus_delta, std::index_sequence<Indices...>{});
-  }
-
-  static constexpr bool PlusImpl(const double* /*x*/,
-                                 const double* /*delta*/,
-                                 double* /*x_plus_delta*/,
-                                 std::index_sequence<>) noexcept {
-    return true;
-  }
-
-  template <std::size_t Index0, std::size_t... Indices>
-  bool MinusImpl(const double* y,
-                 const double* x,
-                 double* y_minus_x,
-                 std::index_sequence<Index0, Indices...>) const {
-    if (!Dereference(std::get<Index0>(manifolds_))
-             .Minus(y + ambient_offsets_[Index0],
-                    x + ambient_offsets_[Index0],
-                    y_minus_x + tangent_offsets_[Index0])) {
-      return false;
-    }
-
-    return MinusImpl(y, x, y_minus_x, std::index_sequence<Indices...>{});
-  }
-
-  static constexpr bool MinusImpl(const double* /*y*/,
-                                  const double* /*x*/,
-                                  double* /*y_minus_x*/,
-                                  std::index_sequence<>) noexcept {
-    return true;
-  }
-
-  template <std::size_t Index0, std::size_t... Indices>
-  bool PlusJacobianImpl(const double* x,
-                        MatrixRef& jacobian,
-                        internal::FixedArray<double>& buffer,
-                        std::index_sequence<Index0, Indices...>) const {
-    if (!Dereference(std::get<Index0>(manifolds_))
-             .PlusJacobian(x + ambient_offsets_[Index0], buffer.data())) {
-      return false;
-    }
-
-    jacobian.block(ambient_offsets_[Index0],
-                   tangent_offsets_[Index0],
-                   ambient_sizes_[Index0],
-                   tangent_sizes_[Index0]) =
-        MatrixRef(
-            buffer.data(), ambient_sizes_[Index0], tangent_sizes_[Index0]);
-
-    return PlusJacobianImpl(
-        x, jacobian, buffer, std::index_sequence<Indices...>{});
-  }
-
-  static constexpr bool PlusJacobianImpl(
-      const double* /*x*/,
-      MatrixRef& /*jacobian*/,
-      internal::FixedArray<double>& /*buffer*/,
-      std::index_sequence<>) noexcept {
-    return true;
-  }
-
-  template <std::size_t Index0, std::size_t... Indices>
-  bool MinusJacobianImpl(const double* x,
-                         MatrixRef& jacobian,
-                         internal::FixedArray<double>& buffer,
-                         std::index_sequence<Index0, Indices...>) const {
-    if (!Dereference(std::get<Index0>(manifolds_))
-             .MinusJacobian(x + ambient_offsets_[Index0], buffer.data())) {
-      return false;
-    }
-
-    jacobian.block(tangent_offsets_[Index0],
-                   ambient_offsets_[Index0],
-                   tangent_sizes_[Index0],
-                   ambient_sizes_[Index0]) =
-        MatrixRef(
-            buffer.data(), tangent_sizes_[Index0], ambient_sizes_[Index0]);
-
-    return MinusJacobianImpl(
-        x, jacobian, buffer, std::index_sequence<Indices...>{});
-  }
-
-  static constexpr bool MinusJacobianImpl(
-      const double* /*x*/,
-      MatrixRef& /*jacobian*/,
-      internal::FixedArray<double>& /*buffer*/,
-      std::index_sequence<>) noexcept {
-    return true;
-  }
-
-  template <typename T, std::size_t N>
-  static std::array<T, N> ExclusiveScan(const std::array<T, N>& values) {
-    std::array<T, N> result;
-    // TODO Replace with std::exclusive_scan once all platforms have full C++17
-    // STL support.
-    T init = 0;
-    for (std::size_t i = 0; i != N; ++i) {
-      result[i] = init;
-      init += values[i];
-    }
-    return result;
-  }
-
-  template <typename T, typename E = void>
-  struct IsDereferenceable : std::false_type {};
-
-  template <typename T>
-  struct IsDereferenceable<T, std::void_t<decltype(*std::declval<T>())>>
-      : std::true_type {};
-
-  template <typename T,
-            std::enable_if_t<!IsDereferenceable<T>::value>* = nullptr>
-  static constexpr decltype(auto) Dereference(T& value) {
-    return value;
-  }
-
-  // Support dereferenceable types such as std::unique_ptr, std::shared_ptr, raw
-  // pointers etc.
-  template <typename T,
-            std::enable_if_t<IsDereferenceable<T>::value>* = nullptr>
-  static constexpr decltype(auto) Dereference(T& value) {
-    return *value;
-  }
-
-  template <typename T>
-  static constexpr decltype(auto) Dereference(T* p) {
-    assert(p != nullptr);
-    return *p;
-  }
-
-  std::tuple<Manifold0, Manifold1, ManifoldN...> manifolds_;
-  int buffer_size_;
-  std::array<int, kNumManifolds> ambient_sizes_;
-  std::array<int, kNumManifolds> tangent_sizes_;
-  std::array<int, kNumManifolds> ambient_offsets_;
-  std::array<int, kNumManifolds> tangent_offsets_;
-  int ambient_size_;
-  int tangent_size_;
-};
-
-// C++17 deduction guide that allows the user to avoid explicitly specifying
-// the template parameters of ProductManifold. The class can instead be
-// instantiated as follows:
-//
-//   ProductManifold manifold{QuaternionManifold{}, EuclideanManifold<3>{}};
-//
-template <typename Manifold0, typename Manifold1, typename... Manifolds>
-ProductManifold(Manifold0&&, Manifold1&&, Manifolds&&...)
-    -> ProductManifold<Manifold0, Manifold1, Manifolds...>;
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_PRODUCT_MANIFOLD_H_
diff --git a/third_party/ceres/include/ceres/rotation.h b/third_party/ceres/include/ceres/rotation.h
deleted file mode 100644
index 0cccfa7..0000000
--- a/third_party/ceres/include/ceres/rotation.h
+++ /dev/null
@@ -1,861 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// Templated functions for manipulating rotations. The templated
-// functions are useful when implementing functors for automatic
-// differentiation.
-//
-// In the following, the Quaternions are laid out as 4-vectors, thus:
-//
-//   q[0]  scalar part.
-//   q[1]  coefficient of i.
-//   q[2]  coefficient of j.
-//   q[3]  coefficient of k.
-//
-// where: i*i = j*j = k*k = -1 and i*j = k, j*k = i, k*i = j.
-
-#ifndef CERES_PUBLIC_ROTATION_H_
-#define CERES_PUBLIC_ROTATION_H_
-
-#include <algorithm>
-#include <cmath>
-
-#include "ceres/constants.h"
-#include "ceres/internal/euler_angles.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// Trivial wrapper to index linear arrays as matrices, given a fixed
-// column and row stride. When an array "T* array" is wrapped by a
-//
-//   (const) MatrixAdapter<T, row_stride, col_stride> M"
-//
-// the expression  M(i, j) is equivalent to
-//
-//   array[i * row_stride + j * col_stride]
-//
-// Conversion functions to and from rotation matrices accept
-// MatrixAdapters to permit using row-major and column-major layouts,
-// and rotation matrices embedded in larger matrices (such as a 3x4
-// projection matrix).
-template <typename T, int row_stride, int col_stride>
-struct MatrixAdapter;
-
-// Convenience functions to create a MatrixAdapter that treats the
-// array pointed to by "pointer" as a 3x3 (contiguous) column-major or
-// row-major matrix.
-template <typename T>
-MatrixAdapter<T, 1, 3> ColumnMajorAdapter3x3(T* pointer);
-
-template <typename T>
-MatrixAdapter<T, 3, 1> RowMajorAdapter3x3(T* pointer);
-
-// Convert a value in combined axis-angle representation to a quaternion.
-// The value angle_axis is a triple whose norm is an angle in radians,
-// and whose direction is aligned with the axis of rotation,
-// and quaternion is a 4-tuple that will contain the resulting quaternion.
-// The implementation may be used with auto-differentiation up to the first
-// derivative, higher derivatives may have unexpected results near the origin.
-template <typename T>
-void AngleAxisToQuaternion(const T* angle_axis, T* quaternion);
-
-// Convert a quaternion to the equivalent combined axis-angle representation.
-// The value quaternion must be a unit quaternion - it is not normalized first,
-// and angle_axis will be filled with a value whose norm is the angle of
-// rotation in radians, and whose direction is the axis of rotation.
-// The implementation may be used with auto-differentiation up to the first
-// derivative, higher derivatives may have unexpected results near the origin.
-template <typename T>
-void QuaternionToAngleAxis(const T* quaternion, T* angle_axis);
-
-// Conversions between 3x3 rotation matrix (in column major order) and
-// quaternion rotation representations. Templated for use with
-// autodifferentiation.
-template <typename T>
-void RotationMatrixToQuaternion(const T* R, T* quaternion);
-
-template <typename T, int row_stride, int col_stride>
-void RotationMatrixToQuaternion(
-    const MatrixAdapter<const T, row_stride, col_stride>& R, T* quaternion);
-
-// Conversions between 3x3 rotation matrix (in column major order) and
-// axis-angle rotation representations. Templated for use with
-// autodifferentiation.
-template <typename T>
-void RotationMatrixToAngleAxis(const T* R, T* angle_axis);
-
-template <typename T, int row_stride, int col_stride>
-void RotationMatrixToAngleAxis(
-    const MatrixAdapter<const T, row_stride, col_stride>& R, T* angle_axis);
-
-template <typename T>
-void AngleAxisToRotationMatrix(const T* angle_axis, T* R);
-
-template <typename T, int row_stride, int col_stride>
-void AngleAxisToRotationMatrix(
-    const T* angle_axis, const MatrixAdapter<T, row_stride, col_stride>& R);
-
-// Conversions between 3x3 rotation matrix (in row major order) and
-// Euler angle (in degrees) rotation representations.
-//
-// The {pitch,roll,yaw} Euler angles are rotations around the {x,y,z}
-// axes, respectively.  They are applied in that same order, so the
-// total rotation R is Rz * Ry * Rx.
-template <typename T>
-void EulerAnglesToRotationMatrix(const T* euler, int row_stride, T* R);
-
-template <typename T, int row_stride, int col_stride>
-void EulerAnglesToRotationMatrix(
-    const T* euler, const MatrixAdapter<T, row_stride, col_stride>& R);
-
-// Convert a generic Euler Angle sequence (in radians) to a 3x3 rotation matrix.
-//
-// Euler Angles define a sequence of 3 rotations about a sequence of axes,
-// typically taken to be the X, Y, or Z axes. The last axis may be the same as
-// the first axis (e.g. ZYZ) per Euler's original definition of his angles
-// (proper Euler angles) or not (e.g. ZYX / yaw-pitch-roll), per common usage in
-// the nautical and aerospace fields (Tait-Bryan angles). The three rotations
-// may be in a global frame of reference (Extrinsic) or in a body fixed frame of
-// reference (Intrinsic) that moves with the rotating object.
-//
-// Internally, Euler Axis sequences are classified by Ken Shoemake's scheme from
-// "Euler angle conversion", Graphics Gems IV, where a choice of axis for the
-// first rotation and 3 binary choices:
-// 1. Parity of the axis permutation. The axis sequence has Even parity if the
-// second axis of rotation is 'greater-than' the first axis of rotation
-// according to the order X<Y<Z<X, otherwise it has Odd parity.
-// 2. Proper Euler Angles v.s. Tait-Bryan Angles
-// 3. Extrinsic Rotations v.s. Intrinsic Rotations
-// compactly represent all 24 possible Euler Angle Conventions
-//
-// One template parameter: EulerSystem must be explicitly given. This parameter
-// is a tag named by 'Extrinsic' or 'Intrinsic' followed by three characters in
-// the set '[XYZ]', specifying the axis sequence, e.g. ceres::ExtrinsicYZY
-// (robotic arms), ceres::IntrinsicZYX (for aerospace), etc.
-//
-// The order of elements in the input array 'euler' follows the axis sequence
-template <typename EulerSystem, typename T>
-inline void EulerAnglesToRotation(const T* euler, T* R);
-
-template <typename EulerSystem, typename T, int row_stride, int col_stride>
-void EulerAnglesToRotation(const T* euler,
-                           const MatrixAdapter<T, row_stride, col_stride>& R);
-
-// Convert a 3x3 rotation matrix to a generic Euler Angle sequence (in radians)
-//
-// Euler Angles define a sequence of 3 rotations about a sequence of axes,
-// typically taken to be the X, Y, or Z axes. The last axis may be the same as
-// the first axis (e.g. ZYZ) per Euler's original definition of his angles
-// (proper Euler angles) or not (e.g. ZYX / yaw-pitch-roll), per common usage in
-// the nautical and aerospace fields (Tait-Bryan angles). The three rotations
-// may be in a global frame of reference (Extrinsic) or in a body fixed frame of
-// reference (Intrinsic) that moves with the rotating object.
-//
-// Internally, Euler Axis sequences are classified by Ken Shoemake's scheme from
-// "Euler angle conversion", Graphics Gems IV, where a choice of axis for the
-// first rotation and 3 binary choices:
-// 1. Oddness of the axis permutation, that defines whether the second axis is
-// 'greater-than' the first axis according to the order X>Y>Z>X)
-// 2. Proper Euler Angles v.s. Tait-Bryan Angles
-// 3. Extrinsic Rotations v.s. Intrinsic Rotations
-// compactly represent all 24 possible Euler Angle Conventions
-//
-// One template parameter: EulerSystem must be explicitly given. This parameter
-// is a tag named by 'Extrinsic' or 'Intrinsic' followed by three characters in
-// the set '[XYZ]', specifying the axis sequence, e.g. ceres::ExtrinsicYZY
-// (robotic arms), ceres::IntrinsicZYX (for aerospace), etc.
-//
-// The order of elements in the output array 'euler' follows the axis sequence
-template <typename EulerSystem, typename T>
-inline void RotationMatrixToEulerAngles(const T* R, T* euler);
-
-template <typename EulerSystem, typename T, int row_stride, int col_stride>
-void RotationMatrixToEulerAngles(
-    const MatrixAdapter<const T, row_stride, col_stride>& R, T* euler);
-
-// Convert a 4-vector to a 3x3 scaled rotation matrix.
-//
-// The choice of rotation is such that the quaternion [1 0 0 0] goes to an
-// identity matrix and for small a, b, c the quaternion [1 a b c] goes to
-// the matrix
-//
-//         [  0 -c  b ]
-//   I + 2 [  c  0 -a ] + higher order terms
-//         [ -b  a  0 ]
-//
-// which corresponds to a Rodrigues approximation, the last matrix being
-// the cross-product matrix of [a b c]. Together with the property that
-// R(q1 * q2) = R(q1) * R(q2) this uniquely defines the mapping from q to R.
-//
-// No normalization of the quaternion is performed, i.e.
-// R = ||q||^2 * Q, where Q is an orthonormal matrix
-// such that det(Q) = 1 and Q*Q' = I
-//
-// WARNING: The rotation matrix is ROW MAJOR
-template <typename T>
-inline void QuaternionToScaledRotation(const T q[4], T R[3 * 3]);
-
-template <typename T, int row_stride, int col_stride>
-inline void QuaternionToScaledRotation(
-    const T q[4], const MatrixAdapter<T, row_stride, col_stride>& R);
-
-// Same as above except that the rotation matrix is normalized by the
-// Frobenius norm, so that R * R' = I (and det(R) = 1).
-//
-// WARNING: The rotation matrix is ROW MAJOR
-template <typename T>
-inline void QuaternionToRotation(const T q[4], T R[3 * 3]);
-
-template <typename T, int row_stride, int col_stride>
-inline void QuaternionToRotation(
-    const T q[4], const MatrixAdapter<T, row_stride, col_stride>& R);
-
-// Rotates a point pt by a quaternion q:
-//
-//   result = R(q) * pt
-//
-// Assumes the quaternion is unit norm. This assumption allows us to
-// write the transform as (something)*pt + pt, as is clear from the
-// formula below. If you pass in a quaternion with |q|^2 = 2 then you
-// WILL NOT get back 2 times the result you get for a unit quaternion.
-//
-// Inplace rotation is not supported. pt and result must point to different
-// memory locations, otherwise the result will be undefined.
-template <typename T>
-inline void UnitQuaternionRotatePoint(const T q[4], const T pt[3], T result[3]);
-
-// With this function you do not need to assume that q has unit norm.
-// It does assume that the norm is non-zero.
-//
-// Inplace rotation is not supported. pt and result must point to different
-// memory locations, otherwise the result will be undefined.
-template <typename T>
-inline void QuaternionRotatePoint(const T q[4], const T pt[3], T result[3]);
-
-// zw = z * w, where * is the Quaternion product between 4 vectors.
-//
-// Inplace quaternion product is not supported. The resulting quaternion zw must
-// not share the memory with the input quaternion z and w, otherwise the result
-// will be undefined.
-template <typename T>
-inline void QuaternionProduct(const T z[4], const T w[4], T zw[4]);
-
-// xy = x cross y;
-//
-// Inplace cross product is not supported. The resulting vector x_cross_y must
-// not share the memory with the input vectors x and y, otherwise the result
-// will be undefined.
-template <typename T>
-inline void CrossProduct(const T x[3], const T y[3], T x_cross_y[3]);
-
-template <typename T>
-inline T DotProduct(const T x[3], const T y[3]);
-
-// y = R(angle_axis) * x;
-//
-// Inplace rotation is not supported. pt and result must point to different
-// memory locations, otherwise the result will be undefined.
-template <typename T>
-inline void AngleAxisRotatePoint(const T angle_axis[3],
-                                 const T pt[3],
-                                 T result[3]);
-
-// --- IMPLEMENTATION
-
-template <typename T, int row_stride, int col_stride>
-struct MatrixAdapter {
-  T* pointer_;
-  explicit MatrixAdapter(T* pointer) : pointer_(pointer) {}
-
-  T& operator()(int r, int c) const {
-    return pointer_[r * row_stride + c * col_stride];
-  }
-};
-
-template <typename T>
-MatrixAdapter<T, 1, 3> ColumnMajorAdapter3x3(T* pointer) {
-  return MatrixAdapter<T, 1, 3>(pointer);
-}
-
-template <typename T>
-MatrixAdapter<T, 3, 1> RowMajorAdapter3x3(T* pointer) {
-  return MatrixAdapter<T, 3, 1>(pointer);
-}
-
-template <typename T>
-inline void AngleAxisToQuaternion(const T* angle_axis, T* quaternion) {
-  using std::fpclassify;
-  using std::hypot;
-  const T& a0 = angle_axis[0];
-  const T& a1 = angle_axis[1];
-  const T& a2 = angle_axis[2];
-  const T theta = hypot(a0, a1, a2);
-
-  // For points not at the origin, the full conversion is numerically stable.
-  if (fpclassify(theta) != FP_ZERO) {
-    const T half_theta = theta * T(0.5);
-    const T k = sin(half_theta) / theta;
-    quaternion[0] = cos(half_theta);
-    quaternion[1] = a0 * k;
-    quaternion[2] = a1 * k;
-    quaternion[3] = a2 * k;
-  } else {
-    // At the origin, sqrt() will produce NaN in the derivative since
-    // the argument is zero.  By approximating with a Taylor series,
-    // and truncating at one term, the value and first derivatives will be
-    // computed correctly when Jets are used.
-    const T k(0.5);
-    quaternion[0] = T(1.0);
-    quaternion[1] = a0 * k;
-    quaternion[2] = a1 * k;
-    quaternion[3] = a2 * k;
-  }
-}
-
-template <typename T>
-inline void QuaternionToAngleAxis(const T* quaternion, T* angle_axis) {
-  using std::fpclassify;
-  using std::hypot;
-  const T& q1 = quaternion[1];
-  const T& q2 = quaternion[2];
-  const T& q3 = quaternion[3];
-  const T sin_theta = hypot(q1, q2, q3);
-
-  // For quaternions representing non-zero rotation, the conversion
-  // is numerically stable.
-  if (fpclassify(sin_theta) != FP_ZERO) {
-    const T& cos_theta = quaternion[0];
-
-    // If cos_theta is negative, theta is greater than pi/2, which
-    // means that angle for the angle_axis vector which is 2 * theta
-    // would be greater than pi.
-    //
-    // While this will result in the correct rotation, it does not
-    // result in a normalized angle-axis vector.
-    //
-    // In that case we observe that 2 * theta ~ 2 * theta - 2 * pi,
-    // which is equivalent saying
-    //
-    //   theta - pi = atan(sin(theta - pi), cos(theta - pi))
-    //              = atan(-sin(theta), -cos(theta))
-    //
-    const T two_theta =
-        T(2.0) * ((cos_theta < T(0.0)) ? atan2(-sin_theta, -cos_theta)
-                                       : atan2(sin_theta, cos_theta));
-    const T k = two_theta / sin_theta;
-    angle_axis[0] = q1 * k;
-    angle_axis[1] = q2 * k;
-    angle_axis[2] = q3 * k;
-  } else {
-    // For zero rotation, sqrt() will produce NaN in the derivative since
-    // the argument is zero.  By approximating with a Taylor series,
-    // and truncating at one term, the value and first derivatives will be
-    // computed correctly when Jets are used.
-    const T k(2.0);
-    angle_axis[0] = q1 * k;
-    angle_axis[1] = q2 * k;
-    angle_axis[2] = q3 * k;
-  }
-}
-
-template <typename T>
-void RotationMatrixToQuaternion(const T* R, T* quaternion) {
-  RotationMatrixToQuaternion(ColumnMajorAdapter3x3(R), quaternion);
-}
-
-// This algorithm comes from "Quaternion Calculus and Fast Animation",
-// Ken Shoemake, 1987 SIGGRAPH course notes
-template <typename T, int row_stride, int col_stride>
-void RotationMatrixToQuaternion(
-    const MatrixAdapter<const T, row_stride, col_stride>& R, T* quaternion) {
-  const T trace = R(0, 0) + R(1, 1) + R(2, 2);
-  if (trace >= 0.0) {
-    T t = sqrt(trace + T(1.0));
-    quaternion[0] = T(0.5) * t;
-    t = T(0.5) / t;
-    quaternion[1] = (R(2, 1) - R(1, 2)) * t;
-    quaternion[2] = (R(0, 2) - R(2, 0)) * t;
-    quaternion[3] = (R(1, 0) - R(0, 1)) * t;
-  } else {
-    int i = 0;
-    if (R(1, 1) > R(0, 0)) {
-      i = 1;
-    }
-
-    if (R(2, 2) > R(i, i)) {
-      i = 2;
-    }
-
-    const int j = (i + 1) % 3;
-    const int k = (j + 1) % 3;
-    T t = sqrt(R(i, i) - R(j, j) - R(k, k) + T(1.0));
-    quaternion[i + 1] = T(0.5) * t;
-    t = T(0.5) / t;
-    quaternion[0] = (R(k, j) - R(j, k)) * t;
-    quaternion[j + 1] = (R(j, i) + R(i, j)) * t;
-    quaternion[k + 1] = (R(k, i) + R(i, k)) * t;
-  }
-}
-
-// The conversion of a rotation matrix to the angle-axis form is
-// numerically problematic when then rotation angle is close to zero
-// or to Pi. The following implementation detects when these two cases
-// occurs and deals with them by taking code paths that are guaranteed
-// to not perform division by a small number.
-template <typename T>
-inline void RotationMatrixToAngleAxis(const T* R, T* angle_axis) {
-  RotationMatrixToAngleAxis(ColumnMajorAdapter3x3(R), angle_axis);
-}
-
-template <typename T, int row_stride, int col_stride>
-void RotationMatrixToAngleAxis(
-    const MatrixAdapter<const T, row_stride, col_stride>& R, T* angle_axis) {
-  T quaternion[4];
-  RotationMatrixToQuaternion(R, quaternion);
-  QuaternionToAngleAxis(quaternion, angle_axis);
-  return;
-}
-
-template <typename T>
-inline void AngleAxisToRotationMatrix(const T* angle_axis, T* R) {
-  AngleAxisToRotationMatrix(angle_axis, ColumnMajorAdapter3x3(R));
-}
-
-template <typename T, int row_stride, int col_stride>
-void AngleAxisToRotationMatrix(
-    const T* angle_axis, const MatrixAdapter<T, row_stride, col_stride>& R) {
-  using std::fpclassify;
-  using std::hypot;
-  static const T kOne = T(1.0);
-  const T theta = hypot(angle_axis[0], angle_axis[1], angle_axis[2]);
-  if (fpclassify(theta) != FP_ZERO) {
-    // We want to be careful to only evaluate the square root if the
-    // norm of the angle_axis vector is greater than zero. Otherwise
-    // we get a division by zero.
-    const T wx = angle_axis[0] / theta;
-    const T wy = angle_axis[1] / theta;
-    const T wz = angle_axis[2] / theta;
-
-    const T costheta = cos(theta);
-    const T sintheta = sin(theta);
-
-    // clang-format off
-    R(0, 0) =     costheta   + wx*wx*(kOne -    costheta);
-    R(1, 0) =  wz*sintheta   + wx*wy*(kOne -    costheta);
-    R(2, 0) = -wy*sintheta   + wx*wz*(kOne -    costheta);
-    R(0, 1) =  wx*wy*(kOne - costheta)     - wz*sintheta;
-    R(1, 1) =     costheta   + wy*wy*(kOne -    costheta);
-    R(2, 1) =  wx*sintheta   + wy*wz*(kOne -    costheta);
-    R(0, 2) =  wy*sintheta   + wx*wz*(kOne -    costheta);
-    R(1, 2) = -wx*sintheta   + wy*wz*(kOne -    costheta);
-    R(2, 2) =     costheta   + wz*wz*(kOne -    costheta);
-    // clang-format on
-  } else {
-    // At zero, we switch to using the first order Taylor expansion.
-    R(0, 0) = kOne;
-    R(1, 0) = angle_axis[2];
-    R(2, 0) = -angle_axis[1];
-    R(0, 1) = -angle_axis[2];
-    R(1, 1) = kOne;
-    R(2, 1) = angle_axis[0];
-    R(0, 2) = angle_axis[1];
-    R(1, 2) = -angle_axis[0];
-    R(2, 2) = kOne;
-  }
-}
-
-template <typename EulerSystem, typename T>
-inline void EulerAnglesToRotation(const T* euler, T* R) {
-  EulerAnglesToRotation<EulerSystem>(euler, RowMajorAdapter3x3(R));
-}
-
-template <typename EulerSystem, typename T, int row_stride, int col_stride>
-void EulerAnglesToRotation(const T* euler,
-                           const MatrixAdapter<T, row_stride, col_stride>& R) {
-  using std::cos;
-  using std::sin;
-
-  const auto [i, j, k] = EulerSystem::kAxes;
-
-  T ea[3];
-  ea[1] = euler[1];
-  if constexpr (EulerSystem::kIsIntrinsic) {
-    ea[0] = euler[2];
-    ea[2] = euler[0];
-  } else {
-    ea[0] = euler[0];
-    ea[2] = euler[2];
-  }
-  if constexpr (EulerSystem::kIsParityOdd) {
-    ea[0] = -ea[0];
-    ea[1] = -ea[1];
-    ea[2] = -ea[2];
-  }
-
-  const T ci = cos(ea[0]);
-  const T cj = cos(ea[1]);
-  const T ch = cos(ea[2]);
-  const T si = sin(ea[0]);
-  const T sj = sin(ea[1]);
-  const T sh = sin(ea[2]);
-  const T cc = ci * ch;
-  const T cs = ci * sh;
-  const T sc = si * ch;
-  const T ss = si * sh;
-  if constexpr (EulerSystem::kIsProperEuler) {
-    R(i, i) = cj;
-    R(i, j) = sj * si;
-    R(i, k) = sj * ci;
-    R(j, i) = sj * sh;
-    R(j, j) = -cj * ss + cc;
-    R(j, k) = -cj * cs - sc;
-    R(k, i) = -sj * ch;
-    R(k, j) = cj * sc + cs;
-    R(k, k) = cj * cc - ss;
-  } else {
-    R(i, i) = cj * ch;
-    R(i, j) = sj * sc - cs;
-    R(i, k) = sj * cc + ss;
-    R(j, i) = cj * sh;
-    R(j, j) = sj * ss + cc;
-    R(j, k) = sj * cs - sc;
-    R(k, i) = -sj;
-    R(k, j) = cj * si;
-    R(k, k) = cj * ci;
-  }
-}
-
-template <typename EulerSystem, typename T>
-inline void RotationMatrixToEulerAngles(const T* R, T* euler) {
-  RotationMatrixToEulerAngles<EulerSystem>(RowMajorAdapter3x3(R), euler);
-}
-
-template <typename EulerSystem, typename T, int row_stride, int col_stride>
-void RotationMatrixToEulerAngles(
-    const MatrixAdapter<const T, row_stride, col_stride>& R, T* euler) {
-  using std::atan2;
-  using std::fpclassify;
-  using std::hypot;
-
-  const auto [i, j, k] = EulerSystem::kAxes;
-
-  T ea[3];
-  if constexpr (EulerSystem::kIsProperEuler) {
-    const T sy = hypot(R(i, j), R(i, k));
-    if (fpclassify(sy) != FP_ZERO) {
-      ea[0] = atan2(R(i, j), R(i, k));
-      ea[1] = atan2(sy, R(i, i));
-      ea[2] = atan2(R(j, i), -R(k, i));
-    } else {
-      ea[0] = atan2(-R(j, k), R(j, j));
-      ea[1] = atan2(sy, R(i, i));
-      ea[2] = T(0.0);
-    }
-  } else {
-    const T cy = hypot(R(i, i), R(j, i));
-    if (fpclassify(cy) != FP_ZERO) {
-      ea[0] = atan2(R(k, j), R(k, k));
-      ea[1] = atan2(-R(k, i), cy);
-      ea[2] = atan2(R(j, i), R(i, i));
-    } else {
-      ea[0] = atan2(-R(j, k), R(j, j));
-      ea[1] = atan2(-R(k, i), cy);
-      ea[2] = T(0.0);
-    }
-  }
-  if constexpr (EulerSystem::kIsParityOdd) {
-    ea[0] = -ea[0];
-    ea[1] = -ea[1];
-    ea[2] = -ea[2];
-  }
-  euler[1] = ea[1];
-  if constexpr (EulerSystem::kIsIntrinsic) {
-    euler[0] = ea[2];
-    euler[2] = ea[0];
-  } else {
-    euler[0] = ea[0];
-    euler[2] = ea[2];
-  }
-
-  // Proper euler angles are defined for angles in
-  //   [-pi, pi) x [0, pi / 2) x [-pi, pi)
-  // which is enforced here
-  if constexpr (EulerSystem::kIsProperEuler) {
-    const T kPi(constants::pi);
-    const T kTwoPi(2.0 * kPi);
-    if (euler[1] < T(0.0) || ea[1] > kPi) {
-      euler[0] += kPi;
-      euler[1] = -euler[1];
-      euler[2] -= kPi;
-    }
-
-    for (int i = 0; i < 3; ++i) {
-      if (euler[i] < -kPi) {
-        euler[i] += kTwoPi;
-      } else if (euler[i] > kPi) {
-        euler[i] -= kTwoPi;
-      }
-    }
-  }
-}
-
-template <typename T>
-inline void EulerAnglesToRotationMatrix(const T* euler,
-                                        const int row_stride_parameter,
-                                        T* R) {
-  EulerAnglesToRotationMatrix(euler, RowMajorAdapter3x3(R));
-}
-
-template <typename T, int row_stride, int col_stride>
-void EulerAnglesToRotationMatrix(
-    const T* euler, const MatrixAdapter<T, row_stride, col_stride>& R) {
-  const double kPi = 3.14159265358979323846;
-  const T degrees_to_radians(kPi / 180.0);
-
-  const T pitch(euler[0] * degrees_to_radians);
-  const T roll(euler[1] * degrees_to_radians);
-  const T yaw(euler[2] * degrees_to_radians);
-
-  const T c1 = cos(yaw);
-  const T s1 = sin(yaw);
-  const T c2 = cos(roll);
-  const T s2 = sin(roll);
-  const T c3 = cos(pitch);
-  const T s3 = sin(pitch);
-
-  R(0, 0) = c1 * c2;
-  R(0, 1) = -s1 * c3 + c1 * s2 * s3;
-  R(0, 2) = s1 * s3 + c1 * s2 * c3;
-
-  R(1, 0) = s1 * c2;
-  R(1, 1) = c1 * c3 + s1 * s2 * s3;
-  R(1, 2) = -c1 * s3 + s1 * s2 * c3;
-
-  R(2, 0) = -s2;
-  R(2, 1) = c2 * s3;
-  R(2, 2) = c2 * c3;
-}
-
-template <typename T>
-inline void QuaternionToScaledRotation(const T q[4], T R[3 * 3]) {
-  QuaternionToScaledRotation(q, RowMajorAdapter3x3(R));
-}
-
-template <typename T, int row_stride, int col_stride>
-inline void QuaternionToScaledRotation(
-    const T q[4], const MatrixAdapter<T, row_stride, col_stride>& R) {
-  // Make convenient names for elements of q.
-  T a = q[0];
-  T b = q[1];
-  T c = q[2];
-  T d = q[3];
-  // This is not to eliminate common sub-expression, but to
-  // make the lines shorter so that they fit in 80 columns!
-  T aa = a * a;
-  T ab = a * b;
-  T ac = a * c;
-  T ad = a * d;
-  T bb = b * b;
-  T bc = b * c;
-  T bd = b * d;
-  T cc = c * c;
-  T cd = c * d;
-  T dd = d * d;
-
-  // clang-format off
-  R(0, 0) = aa + bb - cc - dd; R(0, 1) = T(2) * (bc - ad);  R(0, 2) = T(2) * (ac + bd);
-  R(1, 0) = T(2) * (ad + bc);  R(1, 1) = aa - bb + cc - dd; R(1, 2) = T(2) * (cd - ab);
-  R(2, 0) = T(2) * (bd - ac);  R(2, 1) = T(2) * (ab + cd);  R(2, 2) = aa - bb - cc + dd;
-  // clang-format on
-}
-
-template <typename T>
-inline void QuaternionToRotation(const T q[4], T R[3 * 3]) {
-  QuaternionToRotation(q, RowMajorAdapter3x3(R));
-}
-
-template <typename T, int row_stride, int col_stride>
-inline void QuaternionToRotation(
-    const T q[4], const MatrixAdapter<T, row_stride, col_stride>& R) {
-  QuaternionToScaledRotation(q, R);
-
-  T normalizer = q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3];
-  normalizer = T(1) / normalizer;
-
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      R(i, j) *= normalizer;
-    }
-  }
-}
-
-template <typename T>
-inline void UnitQuaternionRotatePoint(const T q[4],
-                                      const T pt[3],
-                                      T result[3]) {
-  DCHECK_NE(pt, result) << "Inplace rotation is not supported.";
-
-  // clang-format off
-  T uv0 = q[2] * pt[2] - q[3] * pt[1];
-  T uv1 = q[3] * pt[0] - q[1] * pt[2];
-  T uv2 = q[1] * pt[1] - q[2] * pt[0];
-  uv0 += uv0;
-  uv1 += uv1;
-  uv2 += uv2;
-  result[0] = pt[0] + q[0] * uv0;
-  result[1] = pt[1] + q[0] * uv1;
-  result[2] = pt[2] + q[0] * uv2;
-  result[0] += q[2] * uv2 - q[3] * uv1;
-  result[1] += q[3] * uv0 - q[1] * uv2;
-  result[2] += q[1] * uv1 - q[2] * uv0;
-  // clang-format on
-}
-
-template <typename T>
-inline void QuaternionRotatePoint(const T q[4], const T pt[3], T result[3]) {
-  DCHECK_NE(pt, result) << "Inplace rotation is not supported.";
-
-  // 'scale' is 1 / norm(q).
-  const T scale =
-      T(1) / sqrt(q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3]);
-
-  // Make unit-norm version of q.
-  const T unit[4] = {
-      scale * q[0],
-      scale * q[1],
-      scale * q[2],
-      scale * q[3],
-  };
-
-  UnitQuaternionRotatePoint(unit, pt, result);
-}
-
-template <typename T>
-inline void QuaternionProduct(const T z[4], const T w[4], T zw[4]) {
-  DCHECK_NE(z, zw) << "Inplace quaternion product is not supported.";
-  DCHECK_NE(w, zw) << "Inplace quaternion product is not supported.";
-
-  // clang-format off
-  zw[0] = z[0] * w[0] - z[1] * w[1] - z[2] * w[2] - z[3] * w[3];
-  zw[1] = z[0] * w[1] + z[1] * w[0] + z[2] * w[3] - z[3] * w[2];
-  zw[2] = z[0] * w[2] - z[1] * w[3] + z[2] * w[0] + z[3] * w[1];
-  zw[3] = z[0] * w[3] + z[1] * w[2] - z[2] * w[1] + z[3] * w[0];
-  // clang-format on
-}
-
-// xy = x cross y;
-template <typename T>
-inline void CrossProduct(const T x[3], const T y[3], T x_cross_y[3]) {
-  DCHECK_NE(x, x_cross_y) << "Inplace cross product is not supported.";
-  DCHECK_NE(y, x_cross_y) << "Inplace cross product is not supported.";
-
-  x_cross_y[0] = x[1] * y[2] - x[2] * y[1];
-  x_cross_y[1] = x[2] * y[0] - x[0] * y[2];
-  x_cross_y[2] = x[0] * y[1] - x[1] * y[0];
-}
-
-template <typename T>
-inline T DotProduct(const T x[3], const T y[3]) {
-  return (x[0] * y[0] + x[1] * y[1] + x[2] * y[2]);
-}
-
-template <typename T>
-inline void AngleAxisRotatePoint(const T angle_axis[3],
-                                 const T pt[3],
-                                 T result[3]) {
-  DCHECK_NE(pt, result) << "Inplace rotation is not supported.";
-  using std::fpclassify;
-  using std::hypot;
-
-  const T theta = hypot(angle_axis[0], angle_axis[1], angle_axis[2]);
-
-  if (fpclassify(theta) != FP_ZERO) {
-    // Away from zero, use the rodriguez formula
-    //
-    //   result = pt costheta +
-    //            (w x pt) * sintheta +
-    //            w (w . pt) (1 - costheta)
-    //
-    // We want to be careful to only evaluate the square root if the
-    // norm of the angle_axis vector is greater than zero. Otherwise
-    // we get a division by zero.
-    //
-    const T costheta = cos(theta);
-    const T sintheta = sin(theta);
-    const T theta_inverse = T(1.0) / theta;
-
-    const T w[3] = {angle_axis[0] * theta_inverse,
-                    angle_axis[1] * theta_inverse,
-                    angle_axis[2] * theta_inverse};
-
-    // Explicitly inlined evaluation of the cross product for
-    // performance reasons.
-    const T w_cross_pt[3] = {w[1] * pt[2] - w[2] * pt[1],
-                             w[2] * pt[0] - w[0] * pt[2],
-                             w[0] * pt[1] - w[1] * pt[0]};
-    const T tmp =
-        (w[0] * pt[0] + w[1] * pt[1] + w[2] * pt[2]) * (T(1.0) - costheta);
-
-    result[0] = pt[0] * costheta + w_cross_pt[0] * sintheta + w[0] * tmp;
-    result[1] = pt[1] * costheta + w_cross_pt[1] * sintheta + w[1] * tmp;
-    result[2] = pt[2] * costheta + w_cross_pt[2] * sintheta + w[2] * tmp;
-  } else {
-    // At zero, the first order Taylor approximation of the rotation
-    // matrix R corresponding to a vector w and angle theta is
-    //
-    //   R = I + hat(w) * sin(theta)
-    //
-    // But sintheta ~ theta and theta * w = angle_axis, which gives us
-    //
-    //  R = I + hat(angle_axis)
-    //
-    // and actually performing multiplication with the point pt, gives us
-    // R * pt = pt + angle_axis x pt.
-    //
-    // Switching to the Taylor expansion at zero provides meaningful
-    // derivatives when evaluated using Jets.
-    //
-    // Explicitly inlined evaluation of the cross product for
-    // performance reasons.
-    const T w_cross_pt[3] = {angle_axis[1] * pt[2] - angle_axis[2] * pt[1],
-                             angle_axis[2] * pt[0] - angle_axis[0] * pt[2],
-                             angle_axis[0] * pt[1] - angle_axis[1] * pt[0]};
-
-    result[0] = pt[0] + w_cross_pt[0];
-    result[1] = pt[1] + w_cross_pt[1];
-    result[2] = pt[2] + w_cross_pt[2];
-  }
-}
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_ROTATION_H_
diff --git a/third_party/ceres/include/ceres/sized_cost_function.h b/third_party/ceres/include/ceres/sized_cost_function.h
deleted file mode 100644
index 8928c19..0000000
--- a/third_party/ceres/include/ceres/sized_cost_function.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A convenience class for cost functions which are statically sized.
-// Compared to the dynamically-sized base class, this reduces boilerplate.
-//
-// The kNumResiduals template parameter can be a constant such as 2 or 5, or it
-// can be ceres::DYNAMIC. If kNumResiduals is ceres::DYNAMIC, then subclasses
-// are responsible for calling set_num_residuals() at runtime.
-
-#ifndef CERES_PUBLIC_SIZED_COST_FUNCTION_H_
-#define CERES_PUBLIC_SIZED_COST_FUNCTION_H_
-
-#include <initializer_list>
-
-#include "ceres/cost_function.h"
-#include "ceres/types.h"
-#include "internal/parameter_dims.h"
-
-namespace ceres {
-
-template <int kNumResiduals, int... Ns>
-class SizedCostFunction : public CostFunction {
- public:
-  static_assert(kNumResiduals > 0 || kNumResiduals == DYNAMIC,
-                "Cost functions must have at least one residual block.");
-  static_assert(internal::StaticParameterDims<Ns...>::kIsValid,
-                "Invalid parameter block dimension detected. Each parameter "
-                "block dimension must be bigger than zero.");
-
-  using ParameterDims = internal::StaticParameterDims<Ns...>;
-
-  SizedCostFunction() {
-    set_num_residuals(kNumResiduals);
-    *mutable_parameter_block_sizes() = std::initializer_list<int32_t>{Ns...};
-  }
-
-  // Subclasses must implement Evaluate().
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_SIZED_COST_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/solver.h b/third_party/ceres/include/ceres/solver.h
deleted file mode 100644
index 68438a1..0000000
--- a/third_party/ceres/include/ceres/solver.h
+++ /dev/null
@@ -1,1126 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_SOLVER_H_
-#define CERES_PUBLIC_SOLVER_H_
-
-#include <cmath>
-#include <memory>
-#include <string>
-#include <unordered_set>
-#include <vector>
-
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/ordered_groups.h"
-#include "ceres/problem.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-// Interface for non-linear least squares solvers.
-class CERES_EXPORT Solver {
- public:
-  virtual ~Solver();
-
-  // The options structure contains, not surprisingly, options that control how
-  // the solver operates. The defaults should be suitable for a wide range of
-  // problems; however, better performance is often obtainable with tweaking.
-  //
-  // The constants are defined inside types.h
-  struct CERES_EXPORT Options {
-    // Returns true if the options struct has a valid
-    // configuration. Returns false otherwise, and fills in *error
-    // with a message describing the problem.
-    bool IsValid(std::string* error) const;
-
-    // Ceres supports the two major families of optimization strategies -
-    // Trust Region and Line Search.
-    //
-    // 1. The line search approach first finds a descent direction
-    // along which the objective function will be reduced and then
-    // computes a step size that decides how far should move along
-    // that direction. The descent direction can be computed by
-    // various methods, such as gradient descent, Newton's method and
-    // Quasi-Newton method. The step size can be determined either
-    // exactly or inexactly.
-    //
-    // 2. The trust region approach approximates the objective
-    // function using a model function (often a quadratic) over
-    // a subset of the search space known as the trust region. If the
-    // model function succeeds in minimizing the true objective
-    // function the trust region is expanded; conversely, otherwise it
-    // is contracted and the model optimization problem is solved
-    // again.
-    //
-    // Trust region methods are in some sense dual to line search methods:
-    // trust region methods first choose a step size (the size of the
-    // trust region) and then a step direction while line search methods
-    // first choose a step direction and then a step size.
-    MinimizerType minimizer_type = TRUST_REGION;
-
-    LineSearchDirectionType line_search_direction_type = LBFGS;
-    LineSearchType line_search_type = WOLFE;
-    NonlinearConjugateGradientType nonlinear_conjugate_gradient_type =
-        FLETCHER_REEVES;
-
-    // The LBFGS hessian approximation is a low rank approximation to
-    // the inverse of the Hessian matrix. The rank of the
-    // approximation determines (linearly) the space and time
-    // complexity of using the approximation. Higher the rank, the
-    // better is the quality of the approximation. The increase in
-    // quality is however is bounded for a number of reasons.
-    //
-    // 1. The method only uses secant information and not actual
-    // derivatives.
-    //
-    // 2. The Hessian approximation is constrained to be positive
-    // definite.
-    //
-    // So increasing this rank to a large number will cost time and
-    // space complexity without the corresponding increase in solution
-    // quality. There are no hard and fast rules for choosing the
-    // maximum rank. The best choice usually requires some problem
-    // specific experimentation.
-    //
-    // For more theoretical and implementation details of the LBFGS
-    // method, please see:
-    //
-    // Nocedal, J. (1980). "Updating Quasi-Newton Matrices with
-    // Limited Storage". Mathematics of Computation 35 (151): 773-782.
-    int max_lbfgs_rank = 20;
-
-    // As part of the (L)BFGS update step (BFGS) / right-multiply step (L-BFGS),
-    // the initial inverse Hessian approximation is taken to be the Identity.
-    // However, Oren showed that using instead I * \gamma, where \gamma is
-    // chosen to approximate an eigenvalue of the true inverse Hessian can
-    // result in improved convergence in a wide variety of cases. Setting
-    // use_approximate_eigenvalue_bfgs_scaling to true enables this scaling.
-    //
-    // It is important to note that approximate eigenvalue scaling does not
-    // always improve convergence, and that it can in fact significantly degrade
-    // performance for certain classes of problem, which is why it is disabled
-    // by default.  In particular it can degrade performance when the
-    // sensitivity of the problem to different parameters varies significantly,
-    // as in this case a single scalar factor fails to capture this variation
-    // and detrimentally downscales parts of the jacobian approximation which
-    // correspond to low-sensitivity parameters. It can also reduce the
-    // robustness of the solution to errors in the jacobians.
-    //
-    // Oren S.S., Self-scaling variable metric (SSVM) algorithms
-    // Part II: Implementation and experiments, Management Science,
-    // 20(5), 863-874, 1974.
-    bool use_approximate_eigenvalue_bfgs_scaling = false;
-
-    // Degree of the polynomial used to approximate the objective
-    // function. Valid values are BISECTION, QUADRATIC and CUBIC.
-    //
-    // BISECTION corresponds to pure backtracking search with no
-    // interpolation.
-    LineSearchInterpolationType line_search_interpolation_type = CUBIC;
-
-    // If during the line search, the step_size falls below this
-    // value, it is truncated to zero.
-    double min_line_search_step_size = 1e-9;
-
-    // Line search parameters.
-
-    // Solving the line search problem exactly is computationally
-    // prohibitive. Fortunately, line search based optimization
-    // algorithms can still guarantee convergence if instead of an
-    // exact solution, the line search algorithm returns a solution
-    // which decreases the value of the objective function
-    // sufficiently. More precisely, we are looking for a step_size
-    // s.t.
-    //
-    //   f(step_size) <= f(0) + sufficient_decrease * f'(0) * step_size
-    //
-    double line_search_sufficient_function_decrease = 1e-4;
-
-    // In each iteration of the line search,
-    //
-    //  new_step_size >= max_line_search_step_contraction * step_size
-    //
-    // Note that by definition, for contraction:
-    //
-    //  0 < max_step_contraction < min_step_contraction < 1
-    //
-    double max_line_search_step_contraction = 1e-3;
-
-    // In each iteration of the line search,
-    //
-    //  new_step_size <= min_line_search_step_contraction * step_size
-    //
-    // Note that by definition, for contraction:
-    //
-    //  0 < max_step_contraction < min_step_contraction < 1
-    //
-    double min_line_search_step_contraction = 0.6;
-
-    // Maximum number of trial step size iterations during each line
-    // search, if a step size satisfying the search conditions cannot
-    // be found within this number of trials, the line search will
-    // terminate.
-
-    // The minimum allowed value is 0 for trust region minimizer and 1
-    // otherwise. If 0 is specified for the trust region minimizer,
-    // then line search will not be used when solving constrained
-    // optimization problems.
-    int max_num_line_search_step_size_iterations = 20;
-
-    // Maximum number of restarts of the line search direction algorithm before
-    // terminating the optimization. Restarts of the line search direction
-    // algorithm occur when the current algorithm fails to produce a new descent
-    // direction. This typically indicates a numerical failure, or a breakdown
-    // in the validity of the approximations used.
-    int max_num_line_search_direction_restarts = 5;
-
-    // The strong Wolfe conditions consist of the Armijo sufficient
-    // decrease condition, and an additional requirement that the
-    // step-size be chosen s.t. the _magnitude_ ('strong' Wolfe
-    // conditions) of the gradient along the search direction
-    // decreases sufficiently. Precisely, this second condition
-    // is that we seek a step_size s.t.
-    //
-    //   |f'(step_size)| <= sufficient_curvature_decrease * |f'(0)|
-    //
-    // Where f() is the line search objective and f'() is the derivative
-    // of f w.r.t step_size (d f / d step_size).
-    double line_search_sufficient_curvature_decrease = 0.9;
-
-    // During the bracketing phase of the Wolfe search, the step size is
-    // increased until either a point satisfying the Wolfe conditions is
-    // found, or an upper bound for a bracket containing a point satisfying
-    // the conditions is found.  Precisely, at each iteration of the
-    // expansion:
-    //
-    //   new_step_size <= max_step_expansion * step_size.
-    //
-    // By definition for expansion, max_step_expansion > 1.0.
-    double max_line_search_step_expansion = 10.0;
-
-    TrustRegionStrategyType trust_region_strategy_type = LEVENBERG_MARQUARDT;
-
-    // Type of dogleg strategy to use.
-    DoglegType dogleg_type = TRADITIONAL_DOGLEG;
-
-    // The classical trust region methods are descent methods, in that
-    // they only accept a point if it strictly reduces the value of
-    // the objective function.
-    //
-    // Relaxing this requirement allows the algorithm to be more
-    // efficient in the long term at the cost of some local increase
-    // in the value of the objective function.
-    //
-    // This is because allowing for non-decreasing objective function
-    // values in a principled manner allows the algorithm to "jump over
-    // boulders" as the method is not restricted to move into narrow
-    // valleys while preserving its convergence properties.
-    //
-    // Setting use_nonmonotonic_steps to true enables the
-    // non-monotonic trust region algorithm as described by Conn,
-    // Gould & Toint in "Trust Region Methods", Section 10.1.
-    //
-    // The parameter max_consecutive_nonmonotonic_steps controls the
-    // window size used by the step selection algorithm to accept
-    // non-monotonic steps.
-    //
-    // Even though the value of the objective function may be larger
-    // than the minimum value encountered over the course of the
-    // optimization, the final parameters returned to the user are the
-    // ones corresponding to the minimum cost over all iterations.
-    bool use_nonmonotonic_steps = false;
-    int max_consecutive_nonmonotonic_steps = 5;
-
-    // Maximum number of iterations for the minimizer to run for.
-    int max_num_iterations = 50;
-
-    // Maximum time for which the minimizer should run for.
-    double max_solver_time_in_seconds = 1e9;
-
-    // Number of threads used by Ceres for evaluating the cost and
-    // jacobians.
-    int num_threads = 1;
-
-    // Trust region minimizer settings.
-    double initial_trust_region_radius = 1e4;
-    double max_trust_region_radius = 1e16;
-
-    // Minimizer terminates when the trust region radius becomes
-    // smaller than this value.
-    double min_trust_region_radius = 1e-32;
-
-    // Lower bound for the relative decrease before a step is
-    // accepted.
-    double min_relative_decrease = 1e-3;
-
-    // For the Levenberg-Marquadt algorithm, the scaled diagonal of
-    // the normal equations J'J is used to control the size of the
-    // trust region. Extremely small and large values along the
-    // diagonal can make this regularization scheme
-    // fail. max_lm_diagonal and min_lm_diagonal, clamp the values of
-    // diag(J'J) from above and below. In the normal course of
-    // operation, the user should not have to modify these parameters.
-    double min_lm_diagonal = 1e-6;
-    double max_lm_diagonal = 1e32;
-
-    // Sometimes due to numerical conditioning problems or linear
-    // solver flakiness, the trust region strategy may return a
-    // numerically invalid step that can be fixed by reducing the
-    // trust region size. So the TrustRegionMinimizer allows for a few
-    // successive invalid steps before it declares NUMERICAL_FAILURE.
-    int max_num_consecutive_invalid_steps = 5;
-
-    // Minimizer terminates when
-    //
-    //   (new_cost - old_cost) < function_tolerance * old_cost;
-    //
-    double function_tolerance = 1e-6;
-
-    // Minimizer terminates when
-    //
-    //   max_i |x - Project(Plus(x, -g(x))| < gradient_tolerance
-    //
-    // This value should typically be 1e-4 * function_tolerance.
-    double gradient_tolerance = 1e-10;
-
-    // Minimizer terminates when
-    //
-    //   |step|_2 <= parameter_tolerance * ( |x|_2 +  parameter_tolerance)
-    //
-    double parameter_tolerance = 1e-8;
-
-    // Linear least squares solver options -------------------------------------
-
-    LinearSolverType linear_solver_type =
-#if defined(CERES_NO_SPARSE)
-        DENSE_QR;
-#else
-        SPARSE_NORMAL_CHOLESKY;
-#endif
-
-    // Type of preconditioner to use with the iterative linear solvers.
-    PreconditionerType preconditioner_type = JACOBI;
-
-    // Type of clustering algorithm to use for visibility based
-    // preconditioning. This option is used only when the
-    // preconditioner_type is CLUSTER_JACOBI or CLUSTER_TRIDIAGONAL.
-    VisibilityClusteringType visibility_clustering_type = CANONICAL_VIEWS;
-
-    // Subset preconditioner is a preconditioner for problems with
-    // general sparsity. Given a subset of residual blocks of a
-    // problem, it uses the corresponding subset of the rows of the
-    // Jacobian to construct a preconditioner.
-    //
-    // Suppose the Jacobian J has been horizontally partitioned as
-    //
-    // J = [P]
-    //     [Q]
-    //
-    // Where, Q is the set of rows corresponding to the residual
-    // blocks in residual_blocks_for_subset_preconditioner.
-    //
-    // The preconditioner is the inverse of the matrix Q'Q.
-    //
-    // Obviously, the efficacy of the preconditioner depends on how
-    // well the matrix Q approximates J'J, or how well the chosen
-    // residual blocks approximate the non-linear least squares
-    // problem.
-    //
-    // If Solver::Options::preconditioner_type == SUBSET, then
-    // residual_blocks_for_subset_preconditioner must be non-empty.
-    std::unordered_set<ResidualBlockId>
-        residual_blocks_for_subset_preconditioner;
-
-    // Ceres supports using multiple dense linear algebra libraries for dense
-    // matrix factorizations. Currently EIGEN, LAPACK and CUDA are the valid
-    // choices. EIGEN is always available, LAPACK refers to the system BLAS +
-    // LAPACK library which may or may not be available. CUDA refers to Nvidia's
-    // GPU based dense linear algebra library, which may or may not be
-    // available.
-    //
-    // This setting affects the DENSE_QR, DENSE_NORMAL_CHOLESKY and DENSE_SCHUR
-    // solvers. For small to moderate sized problem EIGEN is a fine choice but
-    // for large problems, an optimized LAPACK + BLAS or CUDA implementation can
-    // make a substantial difference in performance.
-    DenseLinearAlgebraLibraryType dense_linear_algebra_library_type = EIGEN;
-
-    // Ceres supports using multiple sparse linear algebra libraries for sparse
-    // matrix ordering and factorizations.
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type =
-#if !defined(CERES_NO_SUITESPARSE)
-        SUITE_SPARSE;
-#elif !defined(CERES_NO_ACCELERATE_SPARSE)
-        ACCELERATE_SPARSE;
-#elif defined(CERES_USE_EIGEN_SPARSE)
-        EIGEN_SPARSE;
-#else
-        NO_SPARSE;
-#endif
-
-    // The order in which variables are eliminated in a linear solver
-    // can have a significant impact on the efficiency and accuracy of
-    // the method. e.g., when doing sparse Cholesky factorization,
-    // there are matrices for which a good ordering will give a
-    // Cholesky factor with O(n) storage, where as a bad ordering will
-    // result in an completely dense factor.
-    //
-    // Sparse direct solvers like SPARSE_NORMAL_CHOLESKY and
-    // SPARSE_SCHUR use a fill reducing ordering of the columns and
-    // rows of the matrix being factorized before computing the
-    // numeric factorization.
-    //
-    // This enum controls the type of algorithm used to compute
-    // this fill reducing ordering. There is no single algorithm
-    // that works on all matrices, so determining which algorithm
-    // works better is a matter of empirical experimentation.
-    //
-    // The exact behaviour of this setting is affected by the value of
-    // linear_solver_ordering as described below.
-    LinearSolverOrderingType linear_solver_ordering_type = AMD;
-
-    // Besides specifying the fill reducing ordering via
-    // linear_solver_ordering_type, Ceres allows the user to provide varying
-    // amounts of hints to the linear solver about the variable elimination
-    // ordering to use. This can range from no hints, where the solver is free
-    // to decide the best possible ordering based on the user's choices like the
-    // linear solver being used, to an exact order in which the variables should
-    // be eliminated, and a variety of possibilities in between.
-    //
-    // Instances of the ParameterBlockOrdering class are used to communicate
-    // this information to Ceres.
-    //
-    // Formally an ordering is an ordered partitioning of the parameter blocks,
-    // i.e, each parameter block belongs to exactly one group, and each group
-    // has a unique non-negative integer associated with it, that determines its
-    // order in the set of groups.
-    //
-    // e.g. Consider the linear system
-    //
-    //   x + y = 3
-    //   2x + 3y = 7
-    //
-    // There are two ways in which it can be solved. First eliminating x from
-    // the two equations, solving for y and then back substituting for x, or
-    // first eliminating y, solving for x and back substituting for y. The user
-    // can construct three orderings here.
-    //
-    //   {0: x}, {1: y} - eliminate x first.
-    //   {0: y}, {1: x} - eliminate y first.
-    //   {0: x, y}      - Solver gets to decide the elimination order.
-    //
-    // Thus, to have Ceres determine the ordering automatically, put all the
-    // variables in group 0 and to control the ordering for every variable
-    // create groups 0 ... N-1, one per variable, in the desired
-    // order.
-    //
-    // linear_solver_ordering == nullptr and an ordering where all the parameter
-    // blocks are in one elimination group mean the same thing - the solver is
-    // free to choose what it thinks is the best elimination ordering. Therefore
-    // in the following we will only consider the case where
-    // linear_solver_ordering is nullptr.
-    //
-    // The exact interpretation of this information depends on the values of
-    // linear_solver_ordering_type and linear_solver_type/preconditioner_type
-    // and sparse_linear_algebra_type.
-    //
-    // Bundle Adjustment
-    // =================
-    //
-    // If the user is using one of the Schur solvers (DENSE_SCHUR,
-    // SPARSE_SCHUR, ITERATIVE_SCHUR) and chooses to specify an
-    // ordering, it must have one important property. The lowest
-    // numbered elimination group must form an independent set in the
-    // graph corresponding to the Hessian, or in other words, no two
-    // parameter blocks in in the first elimination group should
-    // co-occur in the same residual block. For the best performance,
-    // this elimination group should be as large as possible. For
-    // standard bundle adjustment problems, this corresponds to the
-    // first elimination group containing all the 3d points, and the
-    // second containing the all the cameras parameter blocks.
-    //
-    // If the user leaves the choice to Ceres, then the solver uses an
-    // approximate maximum independent set algorithm to identify the first
-    // elimination group.
-    //
-    // sparse_linear_algebra_library_type = SUITE_SPARSE
-    // =================================================
-    //
-    // linear_solver_ordering_type = AMD
-    // ---------------------------------
-    //
-    // A Constrained Approximate Minimum Degree (CAMD) ordering used where the
-    // parameter blocks in the lowest numbered group are eliminated first, and
-    // then the parameter blocks in the next lowest numbered group and so
-    // on. Within each group, CAMD free to order the parameter blocks as it
-    // chooses.
-    //
-    // linear_solver_ordering_type = NESDIS
-    // -------------------------------------
-    //
-    // a. linear_solver_type = SPARSE_NORMAL_CHOLESKY or
-    //    linear_solver_type = CGNR and preconditioner_type = SUBSET
-    //
-    // The value of linear_solver_ordering is ignored and a Nested Dissection
-    // algorithm is used to compute a fill reducing ordering.
-    //
-    // b. linear_solver_type = SPARSE_SCHUR/DENSE_SCHUR/ITERATIVE_SCHUR
-    //
-    // ONLY the lowest group are used to compute the Schur complement, and
-    // Nested Dissection is used to compute a fill reducing ordering for the
-    // Schur Complement (or its preconditioner).
-    //
-    // sparse_linear_algebra_library_type = EIGEN_SPARSE or ACCELERATE_SPARSE
-    // ======================================================================
-    //
-    // a. linear_solver_type = SPARSE_NORMAL_CHOLESKY or
-    //    linear_solver_type = CGNR and preconditioner_type = SUBSET
-    //
-    // then the value of linear_solver_ordering is ignored and AMD or NESDIS is
-    // used to compute a fill reducing ordering as requested by the user.
-    //
-    // b. linear_solver_type = SPARSE_SCHUR/DENSE_SCHUR/ITERATIVE_SCHUR
-    //
-    // ONLY the lowest group are used to compute the Schur complement, and AMD
-    // or NESDIS is used to compute a fill reducing ordering for the Schur
-    // Complement (or its preconditioner).
-    std::shared_ptr<ParameterBlockOrdering> linear_solver_ordering;
-
-    // Use an explicitly computed Schur complement matrix with
-    // ITERATIVE_SCHUR.
-    //
-    // By default this option is disabled and ITERATIVE_SCHUR
-    // evaluates matrix-vector products between the Schur
-    // complement and a vector implicitly by exploiting the algebraic
-    // expression for the Schur complement.
-    //
-    // The cost of this evaluation scales with the number of non-zeros
-    // in the Jacobian.
-    //
-    // For small to medium sized problems there is a sweet spot where
-    // computing the Schur complement is cheap enough that it is much
-    // more efficient to explicitly compute it and use it for evaluating
-    // the matrix-vector products.
-    //
-    // Enabling this option tells ITERATIVE_SCHUR to use an explicitly
-    // computed Schur complement.
-    //
-    // NOTE: This option can only be used with the SCHUR_JACOBI
-    // preconditioner.
-    bool use_explicit_schur_complement = false;
-
-    // Sparse Cholesky factorization algorithms use a fill-reducing
-    // ordering to permute the columns of the Jacobian matrix. There
-    // are two ways of doing this.
-
-    // 1. Compute the Jacobian matrix in some order and then have the
-    //    factorization algorithm permute the columns of the Jacobian.
-
-    // 2. Compute the Jacobian with its columns already permuted.
-
-    // The first option incurs a significant memory penalty. The
-    // factorization algorithm has to make a copy of the permuted
-    // Jacobian matrix, thus Ceres pre-permutes the columns of the
-    // Jacobian matrix and generally speaking, there is no performance
-    // penalty for doing so.
-
-    // Some non-linear least squares problems are symbolically dense but
-    // numerically sparse. i.e. at any given state only a small number
-    // of jacobian entries are non-zero, but the position and number of
-    // non-zeros is different depending on the state. For these problems
-    // it can be useful to factorize the sparse jacobian at each solver
-    // iteration instead of including all of the zero entries in a single
-    // general factorization.
-    //
-    // If your problem does not have this property (or you do not know),
-    // then it is probably best to keep this false, otherwise it will
-    // likely lead to worse performance.
-
-    // This settings only affects the SPARSE_NORMAL_CHOLESKY solver.
-    bool dynamic_sparsity = false;
-
-    // If use_mixed_precision_solves is true, the Gauss-Newton matrix
-    // is computed in double precision, but its factorization is
-    // computed in single precision. This can result in significant
-    // time and memory savings at the cost of some accuracy in the
-    // Gauss-Newton step. Iterative refinement is used to recover some
-    // of this accuracy back.
-    //
-    // If use_mixed_precision_solves is true, we recommend setting
-    // max_num_refinement_iterations to 2-3.
-    //
-    // This options is available when linear solver uses sparse or dense
-    // cholesky factorization, except when sparse_linear_algebra_library_type =
-    // SUITE_SPARSE.
-    bool use_mixed_precision_solves = false;
-
-    // Number steps of the iterative refinement process to run when
-    // computing the Gauss-Newton step.
-    int max_num_refinement_iterations = 0;
-
-    // Minimum number of iterations for which the linear solver should
-    // run, even if the convergence criterion is satisfied.
-    int min_linear_solver_iterations = 0;
-
-    // Maximum number of iterations for which the linear solver should
-    // run. If the solver does not converge in less than
-    // max_linear_solver_iterations, then it returns MAX_ITERATIONS,
-    // as its termination type.
-    int max_linear_solver_iterations = 500;
-
-    // Maximum number of iterations performed by SCHUR_POWER_SERIES_EXPANSION.
-    // Each iteration corresponds to one more term in the power series expansion
-    // od the inverse of the Schur complement.  This value controls the maximum
-    // number of iterations whether it is used as a preconditioner or just to
-    // initialize the solution for ITERATIVE_SCHUR.
-    int max_num_spse_iterations = 5;
-
-    // Use SCHUR_POWER_SERIES_EXPANSION to initialize the solution for
-    // ITERATIVE_SCHUR. This option can be set true regardless of what
-    // preconditioner is being used.
-    bool use_spse_initialization = false;
-
-    // When use_spse_initialization is true, this parameter along with
-    // max_num_spse_iterations controls the number of
-    // SCHUR_POWER_SERIES_EXPANSION iterations performed for initialization. It
-    // is not used to control the preconditioner.
-    double spse_tolerance = 0.1;
-
-    // Forcing sequence parameter. The truncated Newton solver uses
-    // this number to control the relative accuracy with which the
-    // Newton step is computed.
-    //
-    // This constant is passed to ConjugateGradientsSolver which uses
-    // it to terminate the iterations when
-    //
-    //  (Q_i - Q_{i-1})/Q_i < eta/i
-    double eta = 1e-1;
-
-    // Normalize the jacobian using Jacobi scaling before calling
-    // the linear least squares solver.
-    bool jacobi_scaling = true;
-
-    // Some non-linear least squares problems have additional
-    // structure in the way the parameter blocks interact that it is
-    // beneficial to modify the way the trust region step is computed.
-    //
-    // e.g., consider the following regression problem
-    //
-    //   y = a_1 exp(b_1 x) + a_2 exp(b_3 x^2 + c_1)
-    //
-    // Given a set of pairs{(x_i, y_i)}, the user wishes to estimate
-    // a_1, a_2, b_1, b_2, and c_1.
-    //
-    // Notice here that the expression on the left is linear in a_1
-    // and a_2, and given any value for b_1, b_2 and c_1, it is
-    // possible to use linear regression to estimate the optimal
-    // values of a_1 and a_2. Indeed, its possible to analytically
-    // eliminate the variables a_1 and a_2 from the problem all
-    // together. Problems like these are known as separable least
-    // squares problem and the most famous algorithm for solving them
-    // is the Variable Projection algorithm invented by Golub &
-    // Pereyra.
-    //
-    // Similar structure can be found in the matrix factorization with
-    // missing data problem. There the corresponding algorithm is
-    // known as Wiberg's algorithm.
-    //
-    // Ruhe & Wedin (Algorithms for Separable Nonlinear Least Squares
-    // Problems, SIAM Reviews, 22(3), 1980) present an analysis of
-    // various algorithms for solving separable non-linear least
-    // squares problems and refer to "Variable Projection" as
-    // Algorithm I in their paper.
-    //
-    // Implementing Variable Projection is tedious and expensive, and
-    // they present a simpler algorithm, which they refer to as
-    // Algorithm II, where once the Newton/Trust Region step has been
-    // computed for the whole problem (a_1, a_2, b_1, b_2, c_1) and
-    // additional optimization step is performed to estimate a_1 and
-    // a_2 exactly.
-    //
-    // This idea can be generalized to cases where the residual is not
-    // linear in a_1 and a_2, i.e., Solve for the trust region step
-    // for the full problem, and then use it as the starting point to
-    // further optimize just a_1 and a_2. For the linear case, this
-    // amounts to doing a single linear least squares solve. For
-    // non-linear problems, any method for solving the a_1 and a_2
-    // optimization problems will do. The only constraint on a_1 and
-    // a_2 is that they do not co-occur in any residual block.
-    //
-    // This idea can be further generalized, by not just optimizing
-    // (a_1, a_2), but decomposing the graph corresponding to the
-    // Hessian matrix's sparsity structure in a collection of
-    // non-overlapping independent sets and optimizing each of them.
-    //
-    // Setting "use_inner_iterations" to true enables the use of this
-    // non-linear generalization of Ruhe & Wedin's Algorithm II.  This
-    // version of Ceres has a higher iteration complexity, but also
-    // displays better convergence behaviour per iteration. Setting
-    // Solver::Options::num_threads to the maximum number possible is
-    // highly recommended.
-    bool use_inner_iterations = false;
-
-    // If inner_iterations is true, then the user has two choices.
-    //
-    // 1. Let the solver heuristically decide which parameter blocks
-    //    to optimize in each inner iteration. To do this leave
-    //    Solver::Options::inner_iteration_ordering untouched.
-    //
-    // 2. Specify a collection of of ordered independent sets. Where
-    //    the lower numbered groups are optimized before the higher
-    //    number groups. Each group must be an independent set. Not
-    //    all parameter blocks need to be present in the ordering.
-    std::shared_ptr<ParameterBlockOrdering> inner_iteration_ordering;
-
-    // Generally speaking, inner iterations make significant progress
-    // in the early stages of the solve and then their contribution
-    // drops down sharply, at which point the time spent doing inner
-    // iterations is not worth it.
-    //
-    // Once the relative decrease in the objective function due to
-    // inner iterations drops below inner_iteration_tolerance, the use
-    // of inner iterations in subsequent trust region minimizer
-    // iterations is disabled.
-    double inner_iteration_tolerance = 1e-3;
-
-    LoggingType logging_type = PER_MINIMIZER_ITERATION;
-
-    // By default the Minimizer progress is logged to VLOG(1), which
-    // is sent to STDERR depending on the vlog level. If this flag is
-    // set to true, and logging_type is not SILENT, the logging output
-    // is sent to STDOUT.
-    bool minimizer_progress_to_stdout = false;
-
-    // List of iterations at which the minimizer should dump the trust
-    // region problem. Useful for testing and benchmarking. If empty
-    // (default), no problems are dumped.
-    std::vector<int> trust_region_minimizer_iterations_to_dump;
-
-    // Directory to which the problems should be written to. Should be
-    // non-empty if trust_region_minimizer_iterations_to_dump is
-    // non-empty and trust_region_problem_dump_format_type is not
-    // CONSOLE.
-    std::string trust_region_problem_dump_directory = "/tmp";
-    DumpFormatType trust_region_problem_dump_format_type = TEXTFILE;
-
-    // Finite differences options ----------------------------------------------
-
-    // Check all jacobians computed by each residual block with finite
-    // differences. This is expensive since it involves computing the
-    // derivative by normal means (e.g. user specified, autodiff,
-    // etc), then also computing it using finite differences. The
-    // results are compared, and if they differ substantially, details
-    // are printed to the log.
-    bool check_gradients = false;
-
-    // Relative precision to check for in the gradient checker. If the
-    // relative difference between an element in a jacobian exceeds
-    // this number, then the jacobian for that cost term is dumped.
-    double gradient_check_relative_precision = 1e-8;
-
-    // WARNING: This option only applies to the to the numeric
-    // differentiation used for checking the user provided derivatives
-    // when when Solver::Options::check_gradients is true. If you are
-    // using NumericDiffCostFunction and are interested in changing
-    // the step size for numeric differentiation in your cost
-    // function, please have a look at
-    // include/ceres/numeric_diff_options.h.
-    //
-    // Relative shift used for taking numeric derivatives when
-    // Solver::Options::check_gradients is true.
-    //
-    // For finite differencing, each dimension is evaluated at
-    // slightly shifted values; for the case of central difference,
-    // this is what gets evaluated:
-    //
-    //   delta = gradient_check_numeric_derivative_relative_step_size;
-    //   f_initial  = f(x)
-    //   f_forward  = f((1 + delta) * x)
-    //   f_backward = f((1 - delta) * x)
-    //
-    // The finite differencing is done along each dimension. The
-    // reason to use a relative (rather than absolute) step size is
-    // that this way, numeric differentiation works for functions where
-    // the arguments are typically large (e.g. 1e9) and when the
-    // values are small (e.g. 1e-5). It is possible to construct
-    // "torture cases" which break this finite difference heuristic,
-    // but they do not come up often in practice.
-    //
-    // TODO(keir): Pick a smarter number than the default above! In
-    // theory a good choice is sqrt(eps) * x, which for doubles means
-    // about 1e-8 * x. However, I have found this number too
-    // optimistic. This number should be exposed for users to change.
-    double gradient_check_numeric_derivative_relative_step_size = 1e-6;
-
-    // If update_state_every_iteration is true, then Ceres Solver will
-    // guarantee that at the end of every iteration and before any
-    // user provided IterationCallback is called, the parameter blocks
-    // are updated to the current best solution found by the
-    // solver. Thus the IterationCallback can inspect the values of
-    // the parameter blocks for purposes of computation, visualization
-    // or termination.
-
-    // If update_state_every_iteration is false then there is no such
-    // guarantee, and user provided IterationCallbacks should not
-    // expect to look at the parameter blocks and interpret their
-    // values.
-    bool update_state_every_iteration = false;
-
-    // Callbacks that are executed at the end of each iteration of the
-    // Minimizer. An iteration may terminate midway, either due to
-    // numerical failures or because one of the convergence tests has
-    // been satisfied. In this case none of the callbacks are
-    // executed.
-
-    // Callbacks are executed in the order that they are specified in
-    // this vector. By default, parameter blocks are updated only at the
-    // end of the optimization, i.e when the Minimizer terminates. This
-    // behaviour is controlled by update_state_every_iteration. If the
-    // user wishes to have access to the updated parameter blocks when
-    // his/her callbacks are executed, then set
-    // update_state_every_iteration to true.
-    //
-    // The solver does NOT take ownership of these pointers.
-    std::vector<IterationCallback*> callbacks;
-  };
-
-  struct CERES_EXPORT Summary {
-    // A brief one line description of the state of the solver after
-    // termination.
-    std::string BriefReport() const;
-
-    // A full multiline description of the state of the solver after
-    // termination.
-    std::string FullReport() const;
-
-    bool IsSolutionUsable() const;
-
-    // Minimizer summary -------------------------------------------------
-    MinimizerType minimizer_type = TRUST_REGION;
-
-    TerminationType termination_type = FAILURE;
-
-    // Reason why the solver terminated.
-    std::string message = "ceres::Solve was not called.";
-
-    // Cost of the problem (value of the objective function) before
-    // the optimization.
-    double initial_cost = -1.0;
-
-    // Cost of the problem (value of the objective function) after the
-    // optimization.
-    double final_cost = -1.0;
-
-    // The part of the total cost that comes from residual blocks that
-    // were held fixed by the preprocessor because all the parameter
-    // blocks that they depend on were fixed.
-    double fixed_cost = -1.0;
-
-    // IterationSummary for each minimizer iteration in order.
-    std::vector<IterationSummary> iterations;
-
-    // Number of minimizer iterations in which the step was accepted. Unless
-    // use_nonmonotonic_steps is true this is also the number of steps in which
-    // the objective function value/cost went down.
-    int num_successful_steps = -1;
-
-    // Number of minimizer iterations in which the step was rejected
-    // either because it did not reduce the cost enough or the step
-    // was not numerically valid.
-    int num_unsuccessful_steps = -1;
-
-    // Number of times inner iterations were performed.
-    int num_inner_iteration_steps = -1;
-
-    // Total number of iterations inside the line search algorithm
-    // across all invocations. We call these iterations "steps" to
-    // distinguish them from the outer iterations of the line search
-    // and trust region minimizer algorithms which call the line
-    // search algorithm as a subroutine.
-    int num_line_search_steps = -1;
-
-    // All times reported below are wall times.
-
-    // When the user calls Solve, before the actual optimization
-    // occurs, Ceres performs a number of preprocessing steps. These
-    // include error checks, memory allocations, and reorderings. This
-    // time is accounted for as preprocessing time.
-    double preprocessor_time_in_seconds = -1.0;
-
-    // Time spent in the TrustRegionMinimizer.
-    double minimizer_time_in_seconds = -1.0;
-
-    // After the Minimizer is finished, some time is spent in
-    // re-evaluating residuals etc. This time is accounted for in the
-    // postprocessor time.
-    double postprocessor_time_in_seconds = -1.0;
-
-    // Some total of all time spent inside Ceres when Solve is called.
-    double total_time_in_seconds = -1.0;
-
-    // Time (in seconds) spent in the linear solver computing the
-    // trust region step.
-    double linear_solver_time_in_seconds = -1.0;
-
-    // Number of times the Newton step was computed by solving a
-    // linear system. This does not include linear solves used by
-    // inner iterations.
-    int num_linear_solves = -1;
-
-    // Time (in seconds) spent evaluating the residual vector.
-    double residual_evaluation_time_in_seconds = -1.0;
-
-    // Number of residual only evaluations.
-    int num_residual_evaluations = -1;
-
-    // Time (in seconds) spent evaluating the jacobian matrix.
-    double jacobian_evaluation_time_in_seconds = -1.0;
-
-    // Number of Jacobian (and residual) evaluations.
-    int num_jacobian_evaluations = -1;
-
-    // Time (in seconds) spent doing inner iterations.
-    double inner_iteration_time_in_seconds = -1.0;
-
-    // Cumulative timing information for line searches performed as part of the
-    // solve.  Note that in addition to the case when the Line Search minimizer
-    // is used, the Trust Region minimizer also uses a line search when
-    // solving a constrained problem.
-
-    // Time (in seconds) spent evaluating the univariate cost function as part
-    // of a line search.
-    double line_search_cost_evaluation_time_in_seconds = -1.0;
-
-    // Time (in seconds) spent evaluating the gradient of the univariate cost
-    // function as part of a line search.
-    double line_search_gradient_evaluation_time_in_seconds = -1.0;
-
-    // Time (in seconds) spent minimizing the interpolating polynomial
-    // to compute the next candidate step size as part of a line search.
-    double line_search_polynomial_minimization_time_in_seconds = -1.0;
-
-    // Total time (in seconds) spent performing line searches.
-    double line_search_total_time_in_seconds = -1.0;
-
-    // Number of parameter blocks in the problem.
-    int num_parameter_blocks = -1;
-
-    // Number of parameters in the problem.
-    int num_parameters = -1;
-
-    // Dimension of the tangent space of the problem (or the number of
-    // columns in the Jacobian for the problem). This is different
-    // from num_parameters if a parameter block is associated with a
-    // Manifold.
-    int num_effective_parameters = -1;
-
-    // Number of residual blocks in the problem.
-    int num_residual_blocks = -1;
-
-    // Number of residuals in the problem.
-    int num_residuals = -1;
-
-    // Number of parameter blocks in the problem after the inactive
-    // and constant parameter blocks have been removed. A parameter
-    // block is inactive if no residual block refers to it.
-    int num_parameter_blocks_reduced = -1;
-
-    // Number of parameters in the reduced problem.
-    int num_parameters_reduced = -1;
-
-    // Dimension of the tangent space of the reduced problem (or the
-    // number of columns in the Jacobian for the reduced
-    // problem). This is different from num_parameters_reduced if a
-    // parameter block in the reduced problem is associated with a
-    // Manifold.
-    int num_effective_parameters_reduced = -1;
-
-    // Number of residual blocks in the reduced problem.
-    int num_residual_blocks_reduced = -1;
-
-    //  Number of residuals in the reduced problem.
-    int num_residuals_reduced = -1;
-
-    // Is the reduced problem bounds constrained.
-    bool is_constrained = false;
-
-    //  Number of threads specified by the user for Jacobian and
-    //  residual evaluation.
-    int num_threads_given = -1;
-
-    // Number of threads actually used by the solver for Jacobian and
-    // residual evaluation.
-    int num_threads_used = -1;
-
-    // Type of the linear solver requested by the user.
-    LinearSolverType linear_solver_type_given =
-#if defined(CERES_NO_SPARSE)
-        DENSE_QR;
-#else
-        SPARSE_NORMAL_CHOLESKY;
-#endif
-    // Type of the linear solver actually used. This may be different
-    // from linear_solver_type_given if Ceres determines that the
-    // problem structure is not compatible with the linear solver
-    // requested or if the linear solver requested by the user is not
-    // available, e.g. The user requested SPARSE_NORMAL_CHOLESKY but
-    // no sparse linear algebra library was available.
-    LinearSolverType linear_solver_type_used =
-#if defined(CERES_NO_SPARSE)
-        DENSE_QR;
-#else
-        SPARSE_NORMAL_CHOLESKY;
-#endif
-
-    bool mixed_precision_solves_used = false;
-
-    LinearSolverOrderingType linear_solver_ordering_type = AMD;
-
-    // Size of the elimination groups given by the user as hints to
-    // the linear solver.
-    std::vector<int> linear_solver_ordering_given;
-
-    // Size of the parameter groups used by the solver when ordering
-    // the columns of the Jacobian.  This maybe different from
-    // linear_solver_ordering_given if the user left
-    // linear_solver_ordering_given blank and asked for an automatic
-    // ordering, or if the problem contains some constant or inactive
-    // parameter blocks.
-    std::vector<int> linear_solver_ordering_used;
-
-    // For Schur type linear solvers, this string describes the
-    // template specialization which was detected in the problem and
-    // should be used.
-    std::string schur_structure_given;
-
-    // This is the Schur template specialization that was actually
-    // instantiated and used. The reason this will be different from
-    // schur_structure_given is because the corresponding template
-    // specialization does not exist.
-    //
-    // Template specializations can be added to ceres by editing
-    // internal/ceres/generate_template_specializations.py
-    std::string schur_structure_used;
-
-    // True if the user asked for inner iterations to be used as part
-    // of the optimization.
-    bool inner_iterations_given = false;
-
-    // True if the user asked for inner iterations to be used as part
-    // of the optimization and the problem structure was such that
-    // they were actually performed. e.g., in a problem with just one
-    // parameter block, inner iterations are not performed.
-    bool inner_iterations_used = false;
-
-    // Size of the parameter groups given by the user for performing
-    // inner iterations.
-    std::vector<int> inner_iteration_ordering_given;
-
-    // Size of the parameter groups given used by the solver for
-    // performing inner iterations. This maybe different from
-    // inner_iteration_ordering_given if the user left
-    // inner_iteration_ordering_given blank and asked for an automatic
-    // ordering, or if the problem contains some constant or inactive
-    // parameter blocks.
-    std::vector<int> inner_iteration_ordering_used;
-
-    // Type of the preconditioner requested by the user.
-    PreconditionerType preconditioner_type_given = IDENTITY;
-
-    // Type of the preconditioner actually used. This may be different
-    // from linear_solver_type_given if Ceres determines that the
-    // problem structure is not compatible with the linear solver
-    // requested or if the linear solver requested by the user is not
-    // available.
-    PreconditionerType preconditioner_type_used = IDENTITY;
-
-    // Type of clustering algorithm used for visibility based
-    // preconditioning. Only meaningful when the preconditioner_type_used
-    // is CLUSTER_JACOBI or CLUSTER_TRIDIAGONAL.
-    VisibilityClusteringType visibility_clustering_type = CANONICAL_VIEWS;
-
-    //  Type of trust region strategy.
-    TrustRegionStrategyType trust_region_strategy_type = LEVENBERG_MARQUARDT;
-
-    //  Type of dogleg strategy used for solving the trust region
-    //  problem.
-    DoglegType dogleg_type = TRADITIONAL_DOGLEG;
-
-    //  Type of the dense linear algebra library used.
-    DenseLinearAlgebraLibraryType dense_linear_algebra_library_type = EIGEN;
-
-    // Type of the sparse linear algebra library used.
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type =
-        NO_SPARSE;
-
-    // Type of line search direction used.
-    LineSearchDirectionType line_search_direction_type = LBFGS;
-
-    // Type of the line search algorithm used.
-    LineSearchType line_search_type = WOLFE;
-
-    //  When performing line search, the degree of the polynomial used
-    //  to approximate the objective function.
-    LineSearchInterpolationType line_search_interpolation_type = CUBIC;
-
-    // If the line search direction is NONLINEAR_CONJUGATE_GRADIENT,
-    // then this indicates the particular variant of non-linear
-    // conjugate gradient used.
-    NonlinearConjugateGradientType nonlinear_conjugate_gradient_type =
-        FLETCHER_REEVES;
-
-    // If the type of the line search direction is LBFGS, then this
-    // indicates the rank of the Hessian approximation.
-    int max_lbfgs_rank = -1;
-  };
-
-  // Once a least squares problem has been built, this function takes
-  // the problem and optimizes it based on the values of the options
-  // parameters. Upon return, a detailed summary of the work performed
-  // by the preprocessor, the non-linear minimizer and the linear
-  // solver are reported in the summary object.
-  virtual void Solve(const Options& options,
-                     Problem* problem,
-                     Solver::Summary* summary);
-};
-
-// Helper function which avoids going through the interface.
-CERES_EXPORT void Solve(const Solver::Options& options,
-                        Problem* problem,
-                        Solver::Summary* summary);
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_SOLVER_H_
diff --git a/third_party/ceres/include/ceres/sphere_manifold.h b/third_party/ceres/include/ceres/sphere_manifold.h
deleted file mode 100644
index 1c7458b..0000000
--- a/third_party/ceres/include/ceres/sphere_manifold.h
+++ /dev/null
@@ -1,236 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Mike Vitus)
-//         jodebo_beck@gmx.de (Johannes Beck)
-
-#ifndef CERES_PUBLIC_SPHERE_MANIFOLD_H_
-#define CERES_PUBLIC_SPHERE_MANIFOLD_H_
-
-#include <Eigen/Core>
-#include <algorithm>
-#include <array>
-#include <memory>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/householder_vector.h"
-#include "ceres/internal/sphere_manifold_functions.h"
-#include "ceres/manifold.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// This provides a manifold on a sphere meaning that the norm of the vector
-// stays the same. Such cases often arises in Structure for Motion
-// problems. One example where they are used is in representing points whose
-// triangulation is ill-conditioned. Here it is advantageous to use an
-// over-parameterization since homogeneous vectors can represent points at
-// infinity.
-//
-// The plus operator is defined as
-//  Plus(x, delta) =
-//    [sin(0.5 * |delta|) * delta / |delta|, cos(0.5 * |delta|)] * x
-//
-// The minus operator is defined as
-//  Minus(x, y) = 2 atan2(nhy, y[-1]) / nhy * hy[0 : size_ - 1]
-// with nhy = norm(hy[0 : size_ - 1])
-//
-// with * defined as an operator which applies the update orthogonal to x to
-// remain on the sphere. The ambient space dimension is required to be greater
-// than 1.
-//
-// The class works with dynamic and static ambient space dimensions. If the
-// ambient space dimensions is known at compile time use
-//
-//    SphereManifold<3> manifold;
-//
-// If the ambient space dimensions is not known at compile time the template
-// parameter needs to be set to ceres::DYNAMIC and the actual dimension needs
-// to be provided as a constructor argument:
-//
-//    SphereManifold<ceres::DYNAMIC> manifold(ambient_dim);
-//
-// See  section B.2 (p.25) in "Integrating Generic Sensor Fusion Algorithms
-// with Sound State Representations through Encapsulation of Manifolds" by C.
-// Hertzberg, R. Wagner, U. Frese and L. Schroder for more details
-// (https://arxiv.org/pdf/1107.1119.pdf)
-template <int AmbientSpaceDimension>
-class SphereManifold final : public Manifold {
- public:
-  static_assert(
-      AmbientSpaceDimension == ceres::DYNAMIC || AmbientSpaceDimension > 1,
-      "The size of the homogeneous vector needs to be greater than 1.");
-  static_assert(ceres::DYNAMIC == Eigen::Dynamic,
-                "ceres::DYNAMIC needs to be the same as Eigen::Dynamic.");
-
-  SphereManifold();
-  explicit SphereManifold(int size);
-
-  int AmbientSize() const override {
-    return AmbientSpaceDimension == ceres::DYNAMIC ? size_
-                                                   : AmbientSpaceDimension;
-  }
-  int TangentSize() const override { return AmbientSize() - 1; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override;
-  bool PlusJacobian(const double* x, double* jacobian) const override;
-
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override;
-  bool MinusJacobian(const double* x, double* jacobian) const override;
-
- private:
-  static constexpr int TangentSpaceDimension =
-      AmbientSpaceDimension > 0 ? AmbientSpaceDimension - 1 : Eigen::Dynamic;
-
-  // NOTE: Eigen does not allow to have a RowMajor column vector.
-  // In that case, change the storage order
-  static constexpr int SafeRowMajor =
-      TangentSpaceDimension == 1 ? Eigen::ColMajor : Eigen::RowMajor;
-
-  using AmbientVector = Eigen::Matrix<double, AmbientSpaceDimension, 1>;
-  using TangentVector = Eigen::Matrix<double, TangentSpaceDimension, 1>;
-  using MatrixPlusJacobian = Eigen::Matrix<double,
-                                           AmbientSpaceDimension,
-                                           TangentSpaceDimension,
-                                           SafeRowMajor>;
-  using MatrixMinusJacobian = Eigen::Matrix<double,
-                                            TangentSpaceDimension,
-                                            AmbientSpaceDimension,
-                                            Eigen::RowMajor>;
-
-  const int size_{};
-};
-
-template <int AmbientSpaceDimension>
-SphereManifold<AmbientSpaceDimension>::SphereManifold()
-    : size_{AmbientSpaceDimension} {
-  static_assert(
-      AmbientSpaceDimension != Eigen::Dynamic,
-      "The size is set to dynamic. Please call the constructor with a size.");
-}
-
-template <int AmbientSpaceDimension>
-SphereManifold<AmbientSpaceDimension>::SphereManifold(int size) : size_{size} {
-  if (AmbientSpaceDimension != Eigen::Dynamic) {
-    CHECK_EQ(AmbientSpaceDimension, size)
-        << "Specified size by template parameter differs from the supplied "
-           "one.";
-  } else {
-    CHECK_GT(size_, 1)
-        << "The size of the manifold needs to be greater than 1.";
-  }
-}
-
-template <int AmbientSpaceDimension>
-bool SphereManifold<AmbientSpaceDimension>::Plus(
-    const double* x_ptr,
-    const double* delta_ptr,
-    double* x_plus_delta_ptr) const {
-  Eigen::Map<const AmbientVector> x(x_ptr, size_);
-  Eigen::Map<const TangentVector> delta(delta_ptr, size_ - 1);
-  Eigen::Map<AmbientVector> x_plus_delta(x_plus_delta_ptr, size_);
-
-  const double norm_delta = delta.norm();
-
-  if (norm_delta == 0.0) {
-    x_plus_delta = x;
-    return true;
-  }
-
-  AmbientVector v(size_);
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  internal::ComputeHouseholderVector<Eigen::Map<const AmbientVector>,
-                                     double,
-                                     AmbientSpaceDimension>(x, &v, &beta);
-
-  internal::ComputeSphereManifoldPlus(
-      v, beta, x, delta, norm_delta, &x_plus_delta);
-
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool SphereManifold<AmbientSpaceDimension>::PlusJacobian(
-    const double* x_ptr, double* jacobian_ptr) const {
-  Eigen::Map<const AmbientVector> x(x_ptr, size_);
-  Eigen::Map<MatrixPlusJacobian> jacobian(jacobian_ptr, size_, size_ - 1);
-  internal::ComputeSphereManifoldPlusJacobian(x, &jacobian);
-
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool SphereManifold<AmbientSpaceDimension>::Minus(const double* y_ptr,
-                                                  const double* x_ptr,
-                                                  double* y_minus_x_ptr) const {
-  AmbientVector y = Eigen::Map<const AmbientVector>(y_ptr, size_);
-  Eigen::Map<const AmbientVector> x(x_ptr, size_);
-  Eigen::Map<TangentVector> y_minus_x(y_minus_x_ptr, size_ - 1);
-
-  // Apply hoseholder transformation.
-  AmbientVector v(size_);
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  internal::ComputeHouseholderVector<Eigen::Map<const AmbientVector>,
-                                     double,
-                                     AmbientSpaceDimension>(x, &v, &beta);
-  internal::ComputeSphereManifoldMinus(v, beta, x, y, &y_minus_x);
-  return true;
-}
-
-template <int AmbientSpaceDimension>
-bool SphereManifold<AmbientSpaceDimension>::MinusJacobian(
-    const double* x_ptr, double* jacobian_ptr) const {
-  Eigen::Map<const AmbientVector> x(x_ptr, size_);
-  Eigen::Map<MatrixMinusJacobian> jacobian(jacobian_ptr, size_ - 1, size_);
-
-  internal::ComputeSphereManifoldMinusJacobian(x, &jacobian);
-  return true;
-}
-
-}  // namespace ceres
-
-// clang-format off
-#include "ceres/internal/reenable_warnings.h"
-// clang-format on
-
-#endif  // CERES_PUBLIC_SPHERE_MANIFOLD_H_
diff --git a/third_party/ceres/include/ceres/tiny_solver.h b/third_party/ceres/include/ceres/tiny_solver.h
deleted file mode 100644
index 9242cd0..0000000
--- a/third_party/ceres/include/ceres/tiny_solver.h
+++ /dev/null
@@ -1,398 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-//
-// WARNING WARNING WARNING
-// WARNING WARNING WARNING  Tiny solver is experimental and will change.
-// WARNING WARNING WARNING
-//
-// A tiny least squares solver using Levenberg-Marquardt, intended for solving
-// small dense problems with low latency and low overhead. The implementation
-// takes care to do all allocation up front, so that no memory is allocated
-// during solving. This is especially useful when solving many similar problems;
-// for example, inverse pixel distortion for every pixel on a grid.
-//
-// Note: This code has no dependencies beyond Eigen, including on other parts of
-// Ceres, so it is possible to take this file alone and put it in another
-// project without the rest of Ceres.
-//
-// Algorithm based off of:
-//
-// [1] K. Madsen, H. Nielsen, O. Tingleoff.
-//     Methods for Non-linear Least Squares Problems.
-//     http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf
-
-#ifndef CERES_PUBLIC_TINY_SOLVER_H_
-#define CERES_PUBLIC_TINY_SOLVER_H_
-
-#include <cassert>
-#include <cmath>
-
-#include "Eigen/Dense"
-
-namespace ceres {
-
-// To use tiny solver, create a class or struct that allows computing the cost
-// function (described below). This is similar to a ceres::CostFunction, but is
-// different to enable statically allocating all memory for the solver
-// (specifically, enum sizes). Key parts are the Scalar typedef, the enums to
-// describe problem sizes (needed to remove all heap allocations), and the
-// operator() overload to evaluate the cost and (optionally) jacobians.
-//
-//   struct TinySolverCostFunctionTraits {
-//     typedef double Scalar;
-//     enum {
-//       NUM_RESIDUALS = <int> OR Eigen::Dynamic,
-//       NUM_PARAMETERS = <int> OR Eigen::Dynamic,
-//     };
-//     bool operator()(const double* parameters,
-//                     double* residuals,
-//                     double* jacobian) const;
-//
-//     int NumResiduals() const;  -- Needed if NUM_RESIDUALS == Eigen::Dynamic.
-//     int NumParameters() const; -- Needed if NUM_PARAMETERS == Eigen::Dynamic.
-//   };
-//
-// For operator(), the size of the objects is:
-//
-//   double* parameters -- NUM_PARAMETERS or NumParameters()
-//   double* residuals  -- NUM_RESIDUALS or NumResiduals()
-//   double* jacobian   -- NUM_RESIDUALS * NUM_PARAMETERS in column-major format
-//                         (Eigen's default); or nullptr if no jacobian
-//                         requested.
-//
-// An example (fully statically sized):
-//
-//   struct MyCostFunctionExample {
-//     typedef double Scalar;
-//     enum {
-//       NUM_RESIDUALS = 2,
-//       NUM_PARAMETERS = 3,
-//     };
-//     bool operator()(const double* parameters,
-//                     double* residuals,
-//                     double* jacobian) const {
-//       residuals[0] = x + 2*y + 4*z;
-//       residuals[1] = y * z;
-//       if (jacobian) {
-//         jacobian[0 * 2 + 0] = 1;   // First column (x).
-//         jacobian[0 * 2 + 1] = 0;
-//
-//         jacobian[1 * 2 + 0] = 2;   // Second column (y).
-//         jacobian[1 * 2 + 1] = z;
-//
-//         jacobian[2 * 2 + 0] = 4;   // Third column (z).
-//         jacobian[2 * 2 + 1] = y;
-//       }
-//       return true;
-//     }
-//   };
-//
-// The solver supports either statically or dynamically sized cost
-// functions. If the number of residuals is dynamic then the Function
-// must define:
-//
-//   int NumResiduals() const;
-//
-// If the number of parameters is dynamic then the Function must
-// define:
-//
-//   int NumParameters() const;
-//
-template <typename Function,
-          typename LinearSolver =
-              Eigen::LDLT<Eigen::Matrix<typename Function::Scalar,  //
-                                        Function::NUM_PARAMETERS,   //
-                                        Function::NUM_PARAMETERS>>>
-class TinySolver {
- public:
-  // This class needs to have an Eigen aligned operator new as it contains
-  // fixed-size Eigen types.
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
-  enum {
-    NUM_RESIDUALS = Function::NUM_RESIDUALS,
-    NUM_PARAMETERS = Function::NUM_PARAMETERS
-  };
-  using Scalar = typename Function::Scalar;
-  using Parameters = typename Eigen::Matrix<Scalar, NUM_PARAMETERS, 1>;
-
-  enum Status {
-    // max_norm |J'(x) * f(x)| < gradient_tolerance
-    GRADIENT_TOO_SMALL,
-    //  ||dx|| <= parameter_tolerance * (||x|| + parameter_tolerance)
-    RELATIVE_STEP_SIZE_TOO_SMALL,
-    // cost_threshold > ||f(x)||^2 / 2
-    COST_TOO_SMALL,
-    // num_iterations >= max_num_iterations
-    HIT_MAX_ITERATIONS,
-    // (new_cost - old_cost) < function_tolerance * old_cost
-    COST_CHANGE_TOO_SMALL,
-
-    // TODO(sameeragarwal): Deal with numerical failures.
-  };
-
-  struct Options {
-    int max_num_iterations = 50;
-
-    // max_norm |J'(x) * f(x)| < gradient_tolerance
-    Scalar gradient_tolerance = 1e-10;
-
-    //  ||dx|| <= parameter_tolerance * (||x|| + parameter_tolerance)
-    Scalar parameter_tolerance = 1e-8;
-
-    // (new_cost - old_cost) < function_tolerance * old_cost
-    Scalar function_tolerance = 1e-6;
-
-    // cost_threshold > ||f(x)||^2 / 2
-    Scalar cost_threshold = std::numeric_limits<Scalar>::epsilon();
-
-    Scalar initial_trust_region_radius = 1e4;
-  };
-
-  struct Summary {
-    // 1/2 ||f(x_0)||^2
-    Scalar initial_cost = -1;
-    // 1/2 ||f(x)||^2
-    Scalar final_cost = -1;
-    // max_norm(J'f(x))
-    Scalar gradient_max_norm = -1;
-    int iterations = -1;
-    Status status = HIT_MAX_ITERATIONS;
-  };
-
-  bool Update(const Function& function, const Parameters& x) {
-    if (!function(x.data(), residuals_.data(), jacobian_.data())) {
-      return false;
-    }
-
-    residuals_ = -residuals_;
-
-    // On the first iteration, compute a diagonal (Jacobi) scaling
-    // matrix, which we store as a vector.
-    if (summary.iterations == 0) {
-      // jacobi_scaling = 1 / (1 + diagonal(J'J))
-      //
-      // 1 is added to the denominator to regularize small diagonal
-      // entries.
-      jacobi_scaling_ = 1.0 / (1.0 + jacobian_.colwise().norm().array());
-    }
-
-    // This explicitly computes the normal equations, which is numerically
-    // unstable. Nevertheless, it is often good enough and is fast.
-    //
-    // TODO(sameeragarwal): Refactor this to allow for DenseQR
-    // factorization.
-    jacobian_ = jacobian_ * jacobi_scaling_.asDiagonal();
-    jtj_ = jacobian_.transpose() * jacobian_;
-    g_ = jacobian_.transpose() * residuals_;
-    summary.gradient_max_norm = g_.array().abs().maxCoeff();
-    cost_ = residuals_.squaredNorm() / 2;
-    return true;
-  }
-
-  const Summary& Solve(const Function& function, Parameters* x_and_min) {
-    Initialize<NUM_RESIDUALS, NUM_PARAMETERS>(function);
-    assert(x_and_min);
-    Parameters& x = *x_and_min;
-    summary = Summary();
-    summary.iterations = 0;
-
-    // TODO(sameeragarwal): Deal with failure here.
-    Update(function, x);
-    summary.initial_cost = cost_;
-    summary.final_cost = cost_;
-
-    if (summary.gradient_max_norm < options.gradient_tolerance) {
-      summary.status = GRADIENT_TOO_SMALL;
-      return summary;
-    }
-
-    if (cost_ < options.cost_threshold) {
-      summary.status = COST_TOO_SMALL;
-      return summary;
-    }
-
-    Scalar u = 1.0 / options.initial_trust_region_radius;
-    Scalar v = 2;
-
-    for (summary.iterations = 1;
-         summary.iterations < options.max_num_iterations;
-         summary.iterations++) {
-      jtj_regularized_ = jtj_;
-      const Scalar min_diagonal = 1e-6;
-      const Scalar max_diagonal = 1e32;
-      for (int i = 0; i < dx_.rows(); ++i) {
-        jtj_regularized_(i, i) +=
-            u * (std::min)((std::max)(jtj_(i, i), min_diagonal), max_diagonal);
-      }
-
-      // TODO(sameeragarwal): Check for failure and deal with it.
-      linear_solver_.compute(jtj_regularized_);
-      lm_step_ = linear_solver_.solve(g_);
-      dx_ = jacobi_scaling_.asDiagonal() * lm_step_;
-
-      // Adding parameter_tolerance to x.norm() ensures that this
-      // works if x is near zero.
-      const Scalar parameter_tolerance =
-          options.parameter_tolerance *
-          (x.norm() + options.parameter_tolerance);
-      if (dx_.norm() < parameter_tolerance) {
-        summary.status = RELATIVE_STEP_SIZE_TOO_SMALL;
-        break;
-      }
-      x_new_ = x + dx_;
-
-      // TODO(keir): Add proper handling of errors from user eval of cost
-      // functions.
-      function(&x_new_[0], &f_x_new_[0], nullptr);
-
-      const Scalar cost_change = (2 * cost_ - f_x_new_.squaredNorm());
-      // TODO(sameeragarwal): Better more numerically stable evaluation.
-      const Scalar model_cost_change = lm_step_.dot(2 * g_ - jtj_ * lm_step_);
-
-      // rho is the ratio of the actual reduction in error to the reduction
-      // in error that would be obtained if the problem was linear. See [1]
-      // for details.
-      Scalar rho(cost_change / model_cost_change);
-      if (rho > 0) {
-        // Accept the Levenberg-Marquardt step because the linear
-        // model fits well.
-        x = x_new_;
-
-        if (std::abs(cost_change) < options.function_tolerance) {
-          cost_ = f_x_new_.squaredNorm() / 2;
-          summary.status = COST_CHANGE_TOO_SMALL;
-          break;
-        }
-
-        // TODO(sameeragarwal): Deal with failure.
-        Update(function, x);
-        if (summary.gradient_max_norm < options.gradient_tolerance) {
-          summary.status = GRADIENT_TOO_SMALL;
-          break;
-        }
-
-        if (cost_ < options.cost_threshold) {
-          summary.status = COST_TOO_SMALL;
-          break;
-        }
-
-        Scalar tmp = Scalar(2 * rho - 1);
-        u = u * (std::max)(Scalar(1 / 3.), Scalar(1) - tmp * tmp * tmp);
-        v = 2;
-
-      } else {
-        // Reject the update because either the normal equations failed to solve
-        // or the local linear model was not good (rho < 0).
-
-        // Additionally if the cost change is too small, then terminate.
-        if (std::abs(cost_change) < options.function_tolerance) {
-          // Terminate
-          summary.status = COST_CHANGE_TOO_SMALL;
-          break;
-        }
-
-        // Reduce the size of the trust region.
-        u *= v;
-        v *= 2;
-      }
-    }
-
-    summary.final_cost = cost_;
-    return summary;
-  }
-
-  Options options;
-  Summary summary;
-
- private:
-  // Preallocate everything, including temporary storage needed for solving the
-  // linear system. This allows reusing the intermediate storage across solves.
-  LinearSolver linear_solver_;
-  Scalar cost_;
-  Parameters dx_, x_new_, g_, jacobi_scaling_, lm_step_;
-  Eigen::Matrix<Scalar, NUM_RESIDUALS, 1> residuals_, f_x_new_;
-  Eigen::Matrix<Scalar, NUM_RESIDUALS, NUM_PARAMETERS> jacobian_;
-  Eigen::Matrix<Scalar, NUM_PARAMETERS, NUM_PARAMETERS> jtj_, jtj_regularized_;
-
-  // The following definitions are needed for template metaprogramming.
-  template <bool Condition, typename T>
-  struct enable_if;
-
-  template <typename T>
-  struct enable_if<true, T> {
-    using type = T;
-  };
-
-  // The number of parameters and residuals are dynamically sized.
-  template <int R, int P>
-  typename enable_if<(R == Eigen::Dynamic && P == Eigen::Dynamic), void>::type
-  Initialize(const Function& function) {
-    Initialize(function.NumResiduals(), function.NumParameters());
-  }
-
-  // The number of parameters is dynamically sized and the number of
-  // residuals is statically sized.
-  template <int R, int P>
-  typename enable_if<(R == Eigen::Dynamic && P != Eigen::Dynamic), void>::type
-  Initialize(const Function& function) {
-    Initialize(function.NumResiduals(), P);
-  }
-
-  // The number of parameters is statically sized and the number of
-  // residuals is dynamically sized.
-  template <int R, int P>
-  typename enable_if<(R != Eigen::Dynamic && P == Eigen::Dynamic), void>::type
-  Initialize(const Function& function) {
-    Initialize(R, function.NumParameters());
-  }
-
-  // The number of parameters and residuals are statically sized.
-  template <int R, int P>
-  typename enable_if<(R != Eigen::Dynamic && P != Eigen::Dynamic), void>::type
-  Initialize(const Function& /* function */) {}
-
-  void Initialize(int num_residuals, int num_parameters) {
-    dx_.resize(num_parameters);
-    x_new_.resize(num_parameters);
-    g_.resize(num_parameters);
-    jacobi_scaling_.resize(num_parameters);
-    lm_step_.resize(num_parameters);
-    residuals_.resize(num_residuals);
-    f_x_new_.resize(num_residuals);
-    jacobian_.resize(num_residuals, num_parameters);
-    jtj_.resize(num_parameters, num_parameters);
-    jtj_regularized_.resize(num_parameters, num_parameters);
-  }
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_TINY_SOLVER_H_
diff --git a/third_party/ceres/include/ceres/tiny_solver_autodiff_function.h b/third_party/ceres/include/ceres/tiny_solver_autodiff_function.h
deleted file mode 100644
index 1b9bd96..0000000
--- a/third_party/ceres/include/ceres/tiny_solver_autodiff_function.h
+++ /dev/null
@@ -1,206 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-//
-// WARNING WARNING WARNING
-// WARNING WARNING WARNING  Tiny solver is experimental and will change.
-// WARNING WARNING WARNING
-
-#ifndef CERES_PUBLIC_TINY_SOLVER_AUTODIFF_FUNCTION_H_
-#define CERES_PUBLIC_TINY_SOLVER_AUTODIFF_FUNCTION_H_
-
-#include <memory>
-#include <type_traits>
-
-#include "Eigen/Core"
-#include "ceres/jet.h"
-#include "ceres/types.h"  // For kImpossibleValue.
-
-namespace ceres {
-
-// An adapter around autodiff-style CostFunctors to enable easier use of
-// TinySolver. See the example below showing how to use it:
-//
-//   // Example for cost functor with static residual size.
-//   // Same as an autodiff cost functor, but taking only 1 parameter.
-//   struct MyFunctor {
-//     template<typename T>
-//     bool operator()(const T* const parameters, T* residuals) const {
-//       const T& x = parameters[0];
-//       const T& y = parameters[1];
-//       const T& z = parameters[2];
-//       residuals[0] = x + 2.*y + 4.*z;
-//       residuals[1] = y * z;
-//       return true;
-//     }
-//   };
-//
-//   typedef TinySolverAutoDiffFunction<MyFunctor, 2, 3>
-//       AutoDiffFunction;
-//
-//   MyFunctor my_functor;
-//   AutoDiffFunction f(my_functor);
-//
-//   Vec3 x = ...;
-//   TinySolver<AutoDiffFunction> solver;
-//   solver.Solve(f, &x);
-//
-//   // Example for cost functor with dynamic residual size.
-//   // NumResiduals() supplies dynamic size of residuals.
-//   // Same functionality as in tiny_solver.h but with autodiff.
-//   struct MyFunctorWithDynamicResiduals {
-//     int NumResiduals() const {
-//       return 2;
-//     }
-//
-//     template<typename T>
-//     bool operator()(const T* const parameters, T* residuals) const {
-//       const T& x = parameters[0];
-//       const T& y = parameters[1];
-//       const T& z = parameters[2];
-//       residuals[0] = x + static_cast<T>(2.)*y + static_cast<T>(4.)*z;
-//       residuals[1] = y * z;
-//       return true;
-//     }
-//   };
-//
-//   typedef TinySolverAutoDiffFunction<MyFunctorWithDynamicResiduals,
-//                                      Eigen::Dynamic,
-//                                      3>
-//       AutoDiffFunctionWithDynamicResiduals;
-//
-//   MyFunctorWithDynamicResiduals my_functor_dyn;
-//   AutoDiffFunctionWithDynamicResiduals f(my_functor_dyn);
-//
-//   Vec3 x = ...;
-//   TinySolver<AutoDiffFunctionWithDynamicResiduals> solver;
-//   solver.Solve(f, &x);
-//
-// WARNING: The cost function adapter is not thread safe.
-template <typename CostFunctor,
-          int kNumResiduals,
-          int kNumParameters,
-          typename T = double>
-class TinySolverAutoDiffFunction {
- public:
-  // This class needs to have an Eigen aligned operator new as it contains
-  // as a member a Jet type, which itself has a fixed-size Eigen type as member.
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
-  explicit TinySolverAutoDiffFunction(const CostFunctor& cost_functor)
-      : cost_functor_(cost_functor) {
-    Initialize<kNumResiduals>(cost_functor);
-  }
-
-  using Scalar = T;
-  enum {
-    NUM_PARAMETERS = kNumParameters,
-    NUM_RESIDUALS = kNumResiduals,
-  };
-
-  // This is similar to AutoDifferentiate(), but since there is only one
-  // parameter block it is easier to inline to avoid overhead.
-  bool operator()(const T* parameters, T* residuals, T* jacobian) const {
-    if (jacobian == nullptr) {
-      // No jacobian requested, so just directly call the cost function with
-      // doubles, skipping jets and derivatives.
-      return cost_functor_(parameters, residuals);
-    }
-    // Initialize the input jets with passed parameters.
-    for (int i = 0; i < kNumParameters; ++i) {
-      jet_parameters_[i].a = parameters[i];  // Scalar part.
-      jet_parameters_[i].v.setZero();        // Derivative part.
-      jet_parameters_[i].v[i] = T(1.0);
-    }
-
-    // Initialize the output jets such that we can detect user errors.
-    for (int i = 0; i < num_residuals_; ++i) {
-      jet_residuals_[i].a = kImpossibleValue;
-      jet_residuals_[i].v.setConstant(kImpossibleValue);
-    }
-
-    // Execute the cost function, but with jets to find the derivative.
-    if (!cost_functor_(jet_parameters_, jet_residuals_.data())) {
-      return false;
-    }
-
-    // Copy the jacobian out of the derivative part of the residual jets.
-    Eigen::Map<Eigen::Matrix<T, kNumResiduals, kNumParameters>> jacobian_matrix(
-        jacobian, num_residuals_, kNumParameters);
-    for (int r = 0; r < num_residuals_; ++r) {
-      residuals[r] = jet_residuals_[r].a;
-      // Note that while this looks like a fast vectorized write, in practice it
-      // unfortunately thrashes the cache since the writes to the column-major
-      // jacobian are strided (e.g. rows are non-contiguous).
-      jacobian_matrix.row(r) = jet_residuals_[r].v;
-    }
-    return true;
-  }
-
-  int NumResiduals() const {
-    return num_residuals_;  // Set by Initialize.
-  }
-
- private:
-  const CostFunctor& cost_functor_;
-
-  // The number of residuals at runtime.
-  // This will be overridden if NUM_RESIDUALS == Eigen::Dynamic.
-  int num_residuals_ = kNumResiduals;
-
-  // To evaluate the cost function with jets, temporary storage is needed. These
-  // are the buffers that are used during evaluation; parameters for the input,
-  // and jet_residuals_ are where the final cost and derivatives end up.
-  //
-  // Since this buffer is used for evaluation, the adapter is not thread safe.
-  using JetType = Jet<T, kNumParameters>;
-  mutable JetType jet_parameters_[kNumParameters];
-  // Eigen::Matrix serves as static or dynamic container.
-  mutable Eigen::Matrix<JetType, kNumResiduals, 1> jet_residuals_;
-
-  // The number of residuals is dynamically sized and the number of
-  // parameters is statically sized.
-  template <int R>
-  typename std::enable_if<(R == Eigen::Dynamic), void>::type Initialize(
-      const CostFunctor& function) {
-    jet_residuals_.resize(function.NumResiduals());
-    num_residuals_ = function.NumResiduals();
-  }
-
-  // The number of parameters and residuals are statically sized.
-  template <int R>
-  typename std::enable_if<(R != Eigen::Dynamic), void>::type Initialize(
-      const CostFunctor& /* function */) {
-    num_residuals_ = kNumResiduals;
-  }
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_TINY_SOLVER_AUTODIFF_FUNCTION_H_
diff --git a/third_party/ceres/include/ceres/tiny_solver_cost_function_adapter.h b/third_party/ceres/include/ceres/tiny_solver_cost_function_adapter.h
deleted file mode 100644
index 166f03f..0000000
--- a/third_party/ceres/include/ceres/tiny_solver_cost_function_adapter.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_PUBLIC_TINY_SOLVER_COST_FUNCTION_ADAPTER_H_
-#define CERES_PUBLIC_TINY_SOLVER_COST_FUNCTION_ADAPTER_H_
-
-#include "Eigen/Core"
-#include "ceres/cost_function.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// An adapter class that lets users of TinySolver use
-// ceres::CostFunction objects that have exactly one parameter block.
-//
-// The adapter allows for the number of residuals and the size of the
-// parameter block to be specified at compile or run-time.
-//
-// WARNING: This object is not thread-safe.
-//
-// Example usage:
-//
-//  CostFunction* cost_function = ...
-//
-// Number of residuals and parameter block size known at compile time:
-//
-//   TinySolverCostFunctionAdapter<kNumResiduals, kNumParameters>
-//   cost_function_adapter(*cost_function);
-//
-// Number of residuals known at compile time and the parameter block
-// size not known at compile time.
-//
-//   TinySolverCostFunctionAdapter<kNumResiduals, Eigen::Dynamic>
-//   cost_function_adapter(*cost_function);
-//
-// Number of residuals not known at compile time and the parameter
-// block size known at compile time.
-//
-//   TinySolverCostFunctionAdapter<Eigen::Dynamic, kParameterBlockSize>
-//   cost_function_adapter(*cost_function);
-//
-// Number of residuals not known at compile time and the parameter
-// block size not known at compile time.
-//
-//   TinySolverCostFunctionAdapter cost_function_adapter(*cost_function);
-//
-template <int kNumResiduals = Eigen::Dynamic,
-          int kNumParameters = Eigen::Dynamic>
-class TinySolverCostFunctionAdapter {
- public:
-  using Scalar = double;
-  enum ComponentSizeType {
-    NUM_PARAMETERS = kNumParameters,
-    NUM_RESIDUALS = kNumResiduals
-  };
-
-  // This struct needs to have an Eigen aligned operator new as it contains
-  // fixed-size Eigen types.
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
-  explicit TinySolverCostFunctionAdapter(const CostFunction& cost_function)
-      : cost_function_(cost_function) {
-    CHECK_EQ(cost_function_.parameter_block_sizes().size(), 1)
-        << "Only CostFunctions with exactly one parameter blocks are allowed.";
-
-    const int parameter_block_size = cost_function_.parameter_block_sizes()[0];
-    if (NUM_PARAMETERS == Eigen::Dynamic || NUM_RESIDUALS == Eigen::Dynamic) {
-      if (NUM_RESIDUALS != Eigen::Dynamic) {
-        CHECK_EQ(cost_function_.num_residuals(), NUM_RESIDUALS);
-      }
-      if (NUM_PARAMETERS != Eigen::Dynamic) {
-        CHECK_EQ(parameter_block_size, NUM_PARAMETERS);
-      }
-
-      row_major_jacobian_.resize(cost_function_.num_residuals(),
-                                 parameter_block_size);
-    }
-  }
-
-  bool operator()(const double* parameters,
-                  double* residuals,
-                  double* jacobian) const {
-    if (!jacobian) {
-      return cost_function_.Evaluate(&parameters, residuals, nullptr);
-    }
-
-    double* jacobians[1] = {row_major_jacobian_.data()};
-    if (!cost_function_.Evaluate(&parameters, residuals, jacobians)) {
-      return false;
-    }
-
-    // The Function object used by TinySolver takes its Jacobian in a
-    // column-major layout, and the CostFunction objects use row-major
-    // Jacobian matrices. So the following bit of code does the
-    // conversion from row-major Jacobians to column-major Jacobians.
-    Eigen::Map<Eigen::Matrix<double, NUM_RESIDUALS, NUM_PARAMETERS>>
-        col_major_jacobian(jacobian, NumResiduals(), NumParameters());
-    col_major_jacobian = row_major_jacobian_;
-    return true;
-  }
-
-  int NumResiduals() const { return cost_function_.num_residuals(); }
-  int NumParameters() const {
-    return cost_function_.parameter_block_sizes()[0];
-  }
-
- private:
-  const CostFunction& cost_function_;
-  mutable Eigen::Matrix<double, NUM_RESIDUALS, NUM_PARAMETERS, Eigen::RowMajor>
-      row_major_jacobian_;
-};
-
-}  // namespace ceres
-
-#endif  // CERES_PUBLIC_TINY_SOLVER_COST_FUNCTION_ADAPTER_H_
diff --git a/third_party/ceres/include/ceres/types.h b/third_party/ceres/include/ceres/types.h
deleted file mode 100644
index 6e19c51..0000000
--- a/third_party/ceres/include/ceres/types.h
+++ /dev/null
@@ -1,565 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Enums and other top level class definitions.
-//
-// Note: internal/types.cc defines stringification routines for some
-// of these enums. Please update those routines if you extend or
-// remove enums from here.
-
-#ifndef CERES_PUBLIC_TYPES_H_
-#define CERES_PUBLIC_TYPES_H_
-
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres {
-
-// Argument type used in interfaces that can optionally take ownership
-// of a passed in argument. If TAKE_OWNERSHIP is passed, the called
-// object takes ownership of the pointer argument, and will call
-// delete on it upon completion.
-enum Ownership {
-  DO_NOT_TAKE_OWNERSHIP,
-  TAKE_OWNERSHIP,
-};
-
-// TODO(keir): Considerably expand the explanations of each solver type.
-enum LinearSolverType {
-  // These solvers are for general rectangular systems formed from the
-  // normal equations A'A x = A'b. They are direct solvers and do not
-  // assume any special problem structure.
-
-  // Solve the normal equations using a dense Cholesky solver; based
-  // on Eigen.
-  DENSE_NORMAL_CHOLESKY,
-
-  // Solve the normal equations using a dense QR solver; based on
-  // Eigen.
-  DENSE_QR,
-
-  // Solve the normal equations using a sparse cholesky solver;
-  SPARSE_NORMAL_CHOLESKY,
-
-  // Specialized solvers, specific to problems with a generalized
-  // bi-partitite structure.
-
-  // Solves the reduced linear system using a dense Cholesky solver;
-  // based on Eigen.
-  DENSE_SCHUR,
-
-  // Solves the reduced linear system using a sparse Cholesky solver;
-  // based on CHOLMOD.
-  SPARSE_SCHUR,
-
-  // Solves the reduced linear system using Conjugate Gradients, based
-  // on a new Ceres implementation.  Suitable for large scale
-  // problems.
-  ITERATIVE_SCHUR,
-
-  // Conjugate gradients on the normal equations.
-  CGNR
-};
-
-enum PreconditionerType {
-  // Trivial preconditioner - the identity matrix.
-  IDENTITY,
-
-  // Block diagonal of the Gauss-Newton Hessian.
-  JACOBI,
-
-  // Note: The following four preconditioners can only be used with
-  // the ITERATIVE_SCHUR solver. They are well suited for Structure
-  // from Motion problems.
-
-  // Block diagonal of the Schur complement. This preconditioner may
-  // only be used with the ITERATIVE_SCHUR solver.
-  SCHUR_JACOBI,
-
-  // Use power series expansion to approximate the inversion of Schur complement
-  // as a preconditioner.
-  SCHUR_POWER_SERIES_EXPANSION,
-
-  // Visibility clustering based preconditioners.
-  //
-  // The following two preconditioners use the visibility structure of
-  // the scene to determine the sparsity structure of the
-  // preconditioner. This is done using a clustering algorithm. The
-  // available visibility clustering algorithms are described below.
-  CLUSTER_JACOBI,
-  CLUSTER_TRIDIAGONAL,
-
-  // Subset preconditioner is a general purpose preconditioner
-  // linear least squares problems. Given a set of residual blocks,
-  // it uses the corresponding subset of the rows of the Jacobian to
-  // construct a preconditioner.
-  //
-  // Suppose the Jacobian J has been horizontally partitioned as
-  //
-  // J = [P]
-  //     [Q]
-  //
-  // Where, Q is the set of rows corresponding to the residual
-  // blocks in residual_blocks_for_subset_preconditioner.
-  //
-  // The preconditioner is the inverse of the matrix Q'Q.
-  //
-  // Obviously, the efficacy of the preconditioner depends on how
-  // well the matrix Q approximates J'J, or how well the chosen
-  // residual blocks approximate the non-linear least squares
-  // problem.
-  SUBSET
-};
-
-enum VisibilityClusteringType {
-  // Canonical views algorithm as described in
-  //
-  // "Scene Summarization for Online Image Collections", Ian Simon, Noah
-  // Snavely, Steven M. Seitz, ICCV 2007.
-  //
-  // This clustering algorithm can be quite slow, but gives high
-  // quality clusters. The original visibility based clustering paper
-  // used this algorithm.
-  CANONICAL_VIEWS,
-
-  // The classic single linkage algorithm. It is extremely fast as
-  // compared to CANONICAL_VIEWS, but can give slightly poorer
-  // results. For problems with large number of cameras though, this
-  // is generally a pretty good option.
-  //
-  // If you are using SCHUR_JACOBI preconditioner and have SuiteSparse
-  // available, CLUSTER_JACOBI and CLUSTER_TRIDIAGONAL in combination
-  // with the SINGLE_LINKAGE algorithm will generally give better
-  // results.
-  SINGLE_LINKAGE
-};
-
-enum SparseLinearAlgebraLibraryType {
-  // High performance sparse Cholesky factorization and approximate
-  // minimum degree ordering.
-  SUITE_SPARSE,
-
-  // Eigen's sparse linear algebra routines. In particular Ceres uses
-  // the Simplicial LDLT routines.
-  EIGEN_SPARSE,
-
-  // Apple's Accelerate framework sparse linear algebra routines.
-  ACCELERATE_SPARSE,
-
-  // Nvidia's cuSPARSE library.
-  CUDA_SPARSE,
-
-  // No sparse linear solver should be used.  This does not necessarily
-  // imply that Ceres was built without any sparse library, although that
-  // is the likely use case, merely that one should not be used.
-  NO_SPARSE
-};
-
-// The order in which variables are eliminated in a linear solver
-// can have a significant of impact on the efficiency and accuracy
-// of the method. e.g., when doing sparse Cholesky factorization,
-// there are matrices for which a good ordering will give a
-// Cholesky factor with O(n) storage, where as a bad ordering will
-// result in an completely dense factor.
-//
-// So sparse direct solvers like SPARSE_NORMAL_CHOLESKY and
-// SPARSE_SCHUR and preconditioners like SUBSET, CLUSTER_JACOBI &
-// CLUSTER_TRIDIAGONAL use a fill reducing ordering of the columns and
-// rows of the matrix being factorized before actually the numeric
-// factorization.
-//
-// This enum controls the class of algorithm used to compute this
-// fill reducing ordering. There is no single algorithm that works
-// on all matrices, so determining which algorithm works better is a
-// matter of empirical experimentation.
-enum LinearSolverOrderingType {
-  // Approximate Minimum Degree.
-  AMD,
-  // Nested Dissection.
-  NESDIS
-};
-
-enum DenseLinearAlgebraLibraryType {
-  EIGEN,
-  LAPACK,
-  CUDA,
-};
-
-// Logging options
-// The options get progressively noisier.
-enum LoggingType {
-  SILENT,
-  PER_MINIMIZER_ITERATION,
-};
-
-enum MinimizerType {
-  LINE_SEARCH,
-  TRUST_REGION,
-};
-
-enum LineSearchDirectionType {
-  // Negative of the gradient.
-  STEEPEST_DESCENT,
-
-  // A generalization of the Conjugate Gradient method to non-linear
-  // functions. The generalization can be performed in a number of
-  // different ways, resulting in a variety of search directions. The
-  // precise choice of the non-linear conjugate gradient algorithm
-  // used is determined by NonlinerConjuateGradientType.
-  NONLINEAR_CONJUGATE_GRADIENT,
-
-  // BFGS, and it's limited memory approximation L-BFGS, are quasi-Newton
-  // algorithms that approximate the Hessian matrix by iteratively refining
-  // an initial estimate with rank-one updates using the gradient at each
-  // iteration. They are a generalisation of the Secant method and satisfy
-  // the Secant equation.  The Secant equation has an infinium of solutions
-  // in multiple dimensions, as there are N*(N+1)/2 degrees of freedom in a
-  // symmetric matrix but only N conditions are specified by the Secant
-  // equation. The requirement that the Hessian approximation be positive
-  // definite imposes another N additional constraints, but that still leaves
-  // remaining degrees-of-freedom.  (L)BFGS methods uniquely determine the
-  // approximate Hessian by imposing the additional constraints that the
-  // approximation at the next iteration must be the 'closest' to the current
-  // approximation (the nature of how this proximity is measured is actually
-  // the defining difference between a family of quasi-Newton methods including
-  // (L)BFGS & DFP). (L)BFGS is currently regarded as being the best known
-  // general quasi-Newton method.
-  //
-  // The principal difference between BFGS and L-BFGS is that whilst BFGS
-  // maintains a full, dense approximation to the (inverse) Hessian, L-BFGS
-  // maintains only a window of the last M observations of the parameters and
-  // gradients. Using this observation history, the calculation of the next
-  // search direction can be computed without requiring the construction of the
-  // full dense inverse Hessian approximation. This is particularly important
-  // for problems with a large number of parameters, where storage of an N-by-N
-  // matrix in memory would be prohibitive.
-  //
-  // For more details on BFGS see:
-  //
-  // Broyden, C.G., "The Convergence of a Class of Double-rank Minimization
-  // Algorithms,"; J. Inst. Maths. Applics., Vol. 6, pp 76-90, 1970.
-  //
-  // Fletcher, R., "A New Approach to Variable Metric Algorithms,"
-  // Computer Journal, Vol. 13, pp 317-322, 1970.
-  //
-  // Goldfarb, D., "A Family of Variable Metric Updates Derived by Variational
-  // Means," Mathematics of Computing, Vol. 24, pp 23-26, 1970.
-  //
-  // Shanno, D.F., "Conditioning of Quasi-Newton Methods for Function
-  // Minimization," Mathematics of Computing, Vol. 24, pp 647-656, 1970.
-  //
-  // For more details on L-BFGS see:
-  //
-  // Nocedal, J. (1980). "Updating Quasi-Newton Matrices with Limited
-  // Storage". Mathematics of Computation 35 (151): 773-782.
-  //
-  // Byrd, R. H.; Nocedal, J.; Schnabel, R. B. (1994).
-  // "Representations of Quasi-Newton Matrices and their use in
-  // Limited Memory Methods". Mathematical Programming 63 (4):
-  // 129-156.
-  //
-  // A general reference for both methods:
-  //
-  // Nocedal J., Wright S., Numerical Optimization, 2nd Ed. Springer, 1999.
-  LBFGS,
-  BFGS,
-};
-
-// Nonlinear conjugate gradient methods are a generalization of the
-// method of Conjugate Gradients for linear systems. The
-// generalization can be carried out in a number of different ways
-// leading to number of different rules for computing the search
-// direction. Ceres provides a number of different variants. For more
-// details see Numerical Optimization by Nocedal & Wright.
-enum NonlinearConjugateGradientType {
-  FLETCHER_REEVES,
-  POLAK_RIBIERE,
-  HESTENES_STIEFEL,
-};
-
-enum LineSearchType {
-  // Backtracking line search with polynomial interpolation or
-  // bisection.
-  ARMIJO,
-  WOLFE,
-};
-
-// Ceres supports different strategies for computing the trust region
-// step.
-enum TrustRegionStrategyType {
-  // The default trust region strategy is to use the step computation
-  // used in the Levenberg-Marquardt algorithm. For more details see
-  // levenberg_marquardt_strategy.h
-  LEVENBERG_MARQUARDT,
-
-  // Powell's dogleg algorithm interpolates between the Cauchy point
-  // and the Gauss-Newton step. It is particularly useful if the
-  // LEVENBERG_MARQUARDT algorithm is making a large number of
-  // unsuccessful steps. For more details see dogleg_strategy.h.
-  //
-  // NOTES:
-  //
-  // 1. This strategy has not been experimented with or tested as
-  // extensively as LEVENBERG_MARQUARDT, and therefore it should be
-  // considered EXPERIMENTAL for now.
-  //
-  // 2. For now this strategy should only be used with exact
-  // factorization based linear solvers, i.e., SPARSE_SCHUR,
-  // DENSE_SCHUR, DENSE_QR and SPARSE_NORMAL_CHOLESKY.
-  DOGLEG
-};
-
-// Ceres supports two different dogleg strategies.
-// The "traditional" dogleg method by Powell and the
-// "subspace" method described in
-// R. H. Byrd, R. B. Schnabel, and G. A. Shultz,
-// "Approximate solution of the trust region problem by minimization
-//  over two-dimensional subspaces", Mathematical Programming,
-// 40 (1988), pp. 247--263
-enum DoglegType {
-  // The traditional approach constructs a dogleg path
-  // consisting of two line segments and finds the furthest
-  // point on that path that is still inside the trust region.
-  TRADITIONAL_DOGLEG,
-
-  // The subspace approach finds the exact minimum of the model
-  // constrained to the subspace spanned by the dogleg path.
-  SUBSPACE_DOGLEG
-};
-
-enum TerminationType {
-  // Minimizer terminated because one of the convergence criterion set
-  // by the user was satisfied.
-  //
-  // 1.  (new_cost - old_cost) < function_tolerance * old_cost;
-  // 2.  max_i |gradient_i| < gradient_tolerance
-  // 3.  |step|_2 <= parameter_tolerance * ( |x|_2 +  parameter_tolerance)
-  //
-  // The user's parameter blocks will be updated with the solution.
-  CONVERGENCE,
-
-  // The solver ran for maximum number of iterations or maximum amount
-  // of time specified by the user, but none of the convergence
-  // criterion specified by the user were met. The user's parameter
-  // blocks will be updated with the solution found so far.
-  NO_CONVERGENCE,
-
-  // The minimizer terminated because of an error.  The user's
-  // parameter blocks will not be updated.
-  FAILURE,
-
-  // Using an IterationCallback object, user code can control the
-  // minimizer. The following enums indicate that the user code was
-  // responsible for termination.
-  //
-  // Minimizer terminated successfully because a user
-  // IterationCallback returned SOLVER_TERMINATE_SUCCESSFULLY.
-  //
-  // The user's parameter blocks will be updated with the solution.
-  USER_SUCCESS,
-
-  // Minimizer terminated because because a user IterationCallback
-  // returned SOLVER_ABORT.
-  //
-  // The user's parameter blocks will not be updated.
-  USER_FAILURE
-};
-
-// Enums used by the IterationCallback instances to indicate to the
-// solver whether it should continue solving, the user detected an
-// error or the solution is good enough and the solver should
-// terminate.
-enum CallbackReturnType {
-  // Continue solving to next iteration.
-  SOLVER_CONTINUE,
-
-  // Terminate solver, and do not update the parameter blocks upon
-  // return. Unless the user has set
-  // Solver:Options:::update_state_every_iteration, in which case the
-  // state would have been updated every iteration
-  // anyways. Solver::Summary::termination_type is set to USER_ABORT.
-  SOLVER_ABORT,
-
-  // Terminate solver, update state and
-  // return. Solver::Summary::termination_type is set to USER_SUCCESS.
-  SOLVER_TERMINATE_SUCCESSFULLY
-};
-
-// The format in which linear least squares problems should be logged
-// when Solver::Options::lsqp_iterations_to_dump is non-empty.
-enum DumpFormatType {
-  // Print the linear least squares problem in a human readable format
-  // to stderr. The Jacobian is printed as a dense matrix. The vectors
-  // D, x and f are printed as dense vectors. This should only be used
-  // for small problems.
-  CONSOLE,
-
-  // Write out the linear least squares problem to the directory
-  // pointed to by Solver::Options::lsqp_dump_directory as text files
-  // which can be read into MATLAB/Octave. The Jacobian is dumped as a
-  // text file containing (i,j,s) triplets, the vectors D, x and f are
-  // dumped as text files containing a list of their values.
-  //
-  // A MATLAB/octave script called lm_iteration_???.m is also output,
-  // which can be used to parse and load the problem into memory.
-  TEXTFILE
-};
-
-// For SizedCostFunction and AutoDiffCostFunction, DYNAMIC can be
-// specified for the number of residuals. If specified, then the
-// number of residuas for that cost function can vary at runtime.
-enum DimensionType {
-  DYNAMIC = -1,
-};
-
-// The differentiation method used to compute numerical derivatives in
-// NumericDiffCostFunction and DynamicNumericDiffCostFunction.
-enum NumericDiffMethodType {
-  // Compute central finite difference: f'(x) ~ (f(x+h) - f(x-h)) / 2h.
-  CENTRAL,
-
-  // Compute forward finite difference: f'(x) ~ (f(x+h) - f(x)) / h.
-  FORWARD,
-
-  // Adaptive numerical differentiation using Ridders' method. Provides more
-  // accurate and robust derivatives at the expense of additional cost
-  // function evaluations.
-  RIDDERS
-};
-
-enum LineSearchInterpolationType {
-  BISECTION,
-  QUADRATIC,
-  CUBIC,
-};
-
-enum CovarianceAlgorithmType {
-  DENSE_SVD,
-  SPARSE_QR,
-};
-
-// It is a near impossibility that user code generates this exact
-// value in normal operation, thus we will use it to fill arrays
-// before passing them to user code. If on return an element of the
-// array still contains this value, we will assume that the user code
-// did not write to that memory location.
-const double kImpossibleValue = 1e302;
-
-CERES_EXPORT const char* LinearSolverTypeToString(LinearSolverType type);
-CERES_EXPORT bool StringToLinearSolverType(std::string value,
-                                           LinearSolverType* type);
-
-CERES_EXPORT const char* PreconditionerTypeToString(PreconditionerType type);
-CERES_EXPORT bool StringToPreconditionerType(std::string value,
-                                             PreconditionerType* type);
-
-CERES_EXPORT const char* VisibilityClusteringTypeToString(
-    VisibilityClusteringType type);
-CERES_EXPORT bool StringToVisibilityClusteringType(
-    std::string value, VisibilityClusteringType* type);
-
-CERES_EXPORT const char* SparseLinearAlgebraLibraryTypeToString(
-    SparseLinearAlgebraLibraryType type);
-CERES_EXPORT bool StringToSparseLinearAlgebraLibraryType(
-    std::string value, SparseLinearAlgebraLibraryType* type);
-
-CERES_EXPORT const char* LinearSolverOrderingTypeToString(
-    LinearSolverOrderingType type);
-CERES_EXPORT bool StringToLinearSolverOrderingType(
-    std::string value, LinearSolverOrderingType* type);
-
-CERES_EXPORT const char* DenseLinearAlgebraLibraryTypeToString(
-    DenseLinearAlgebraLibraryType type);
-CERES_EXPORT bool StringToDenseLinearAlgebraLibraryType(
-    std::string value, DenseLinearAlgebraLibraryType* type);
-
-CERES_EXPORT const char* TrustRegionStrategyTypeToString(
-    TrustRegionStrategyType type);
-CERES_EXPORT bool StringToTrustRegionStrategyType(
-    std::string value, TrustRegionStrategyType* type);
-
-CERES_EXPORT const char* DoglegTypeToString(DoglegType type);
-CERES_EXPORT bool StringToDoglegType(std::string value, DoglegType* type);
-
-CERES_EXPORT const char* MinimizerTypeToString(MinimizerType type);
-CERES_EXPORT bool StringToMinimizerType(std::string value, MinimizerType* type);
-
-CERES_EXPORT const char* LineSearchDirectionTypeToString(
-    LineSearchDirectionType type);
-CERES_EXPORT bool StringToLineSearchDirectionType(
-    std::string value, LineSearchDirectionType* type);
-
-CERES_EXPORT const char* LineSearchTypeToString(LineSearchType type);
-CERES_EXPORT bool StringToLineSearchType(std::string value,
-                                         LineSearchType* type);
-
-CERES_EXPORT const char* NonlinearConjugateGradientTypeToString(
-    NonlinearConjugateGradientType type);
-CERES_EXPORT bool StringToNonlinearConjugateGradientType(
-    std::string value, NonlinearConjugateGradientType* type);
-
-CERES_EXPORT const char* LineSearchInterpolationTypeToString(
-    LineSearchInterpolationType type);
-CERES_EXPORT bool StringToLineSearchInterpolationType(
-    std::string value, LineSearchInterpolationType* type);
-
-CERES_EXPORT const char* CovarianceAlgorithmTypeToString(
-    CovarianceAlgorithmType type);
-CERES_EXPORT bool StringToCovarianceAlgorithmType(
-    std::string value, CovarianceAlgorithmType* type);
-
-CERES_EXPORT const char* NumericDiffMethodTypeToString(
-    NumericDiffMethodType type);
-CERES_EXPORT bool StringToNumericDiffMethodType(std::string value,
-                                                NumericDiffMethodType* type);
-
-CERES_EXPORT const char* LoggingTypeToString(LoggingType type);
-CERES_EXPORT bool StringtoLoggingType(std::string value, LoggingType* type);
-
-CERES_EXPORT const char* DumpFormatTypeToString(DumpFormatType type);
-CERES_EXPORT bool StringtoDumpFormatType(std::string value,
-                                         DumpFormatType* type);
-CERES_EXPORT bool StringtoDumpFormatType(std::string value, LoggingType* type);
-
-CERES_EXPORT const char* TerminationTypeToString(TerminationType type);
-
-CERES_EXPORT bool IsSchurType(LinearSolverType type);
-CERES_EXPORT bool IsSparseLinearAlgebraLibraryTypeAvailable(
-    SparseLinearAlgebraLibraryType type);
-CERES_EXPORT bool IsDenseLinearAlgebraLibraryTypeAvailable(
-    DenseLinearAlgebraLibraryType type);
-
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_TYPES_H_
diff --git a/third_party/ceres/include/ceres/version.h b/third_party/ceres/include/ceres/version.h
deleted file mode 100644
index fe6c288..0000000
--- a/third_party/ceres/include/ceres/version.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#ifndef CERES_PUBLIC_VERSION_H_
-#define CERES_PUBLIC_VERSION_H_
-
-#define CERES_VERSION_MAJOR 2
-#define CERES_VERSION_MINOR 2
-#define CERES_VERSION_REVISION 0
-
-// Classic CPP stringifcation; the extra level of indirection allows the
-// preprocessor to expand the macro before being converted to a string.
-#define CERES_TO_STRING_HELPER(x) #x
-#define CERES_TO_STRING(x) CERES_TO_STRING_HELPER(x)
-
-// clang-format off
-#define CERES_SEMVER_VERSION(MAJOR, MINOR, PATCH) \
-  CERES_TO_STRING(MAJOR) "."                      \
-  CERES_TO_STRING(MINOR) "."                      \
-  CERES_TO_STRING(PATCH)
-// clang-format on
-
-// The Ceres version as a string; for example "1.9.0".
-#define CERES_VERSION_STRING \
-  CERES_SEMVER_VERSION(      \
-      CERES_VERSION_MAJOR, CERES_VERSION_MINOR, CERES_VERSION_REVISION)
-
-#endif  // CERES_PUBLIC_VERSION_H_
diff --git a/third_party/ceres/internal/ceres/CMakeLists.txt b/third_party/ceres/internal/ceres/CMakeLists.txt
deleted file mode 100644
index 583757e..0000000
--- a/third_party/ceres/internal/ceres/CMakeLists.txt
+++ /dev/null
@@ -1,596 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2022 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form %Cmust reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: keir@google.com (Keir Mierle)
-
-# Build the list of dependencies for Ceres based on the current configuration.
-
-# Avoid 'xxx.cc has no symbols' warnings from source files which are 'empty'
-# when their enclosing #ifdefs are disabled.
-find_package(Threads REQUIRED)
-list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES Threads::Threads)
-# Make dependency visible to the parent CMakeLists.txt
-set(Threads_DEPENDENCY "find_dependency (Threads)" PARENT_SCOPE)
-
-# Source files that contain public symbols and live in the ceres namespaces.
-# Such symbols are expected to be marked with CERES_EXPORT and the files below
-# sorted in lexicographical order.
-set(CERES_EXPORTED_SRCS
-    c_api.cc
-    gradient_checker.cc
-    gradient_problem.cc
-    loss_function.cc
-    manifold.cc
-    normal_prior.cc
-    problem.cc
-    solver.cc
-    types.cc
-)
-
-# Also depend on the header files so that they appear in IDEs.
-file(GLOB CERES_INTERNAL_HDRS *.h)
-if (MINIGLOG)
-  file(GLOB MINIGLOG_HDRS miniglog/glog/*.h)
-  list(APPEND CERES_INTERNAL_HDRS ${MINIGLOG_HDRS})
-  if (ANDROID)
-    list(APPEND CERES_LIBRARY_PUBLIC_DEPENDENCIES log)
-  endif()
-endif()
-
-# Depend also on public headers so they appear in IDEs.
-file(GLOB CERES_PUBLIC_HDRS ${Ceres_SOURCE_DIR}/include/ceres/*.h)
-file(GLOB CERES_PUBLIC_INTERNAL_HDRS ${Ceres_SOURCE_DIR}/include/ceres/internal/*.h)
-file(GLOB CERES_PUBLIC_INTERNAL_HDRS
-  ${Ceres_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/ceres/internal/*.h)
-
-# Include the specialized schur solvers.
-if (SCHUR_SPECIALIZATIONS)
-  file(GLOB CERES_INTERNAL_SCHUR_FILES generated/*.cc)
-else (SCHUR_SPECIALIZATIONS)
-  # Only the fully dynamic solver. The build is much faster this way.
-  file(GLOB CERES_INTERNAL_SCHUR_FILES generated/*_d_d_d.cc)
-endif (SCHUR_SPECIALIZATIONS)
-
-# The generated specializations of the Schur eliminator include
-# schur_eliminator_impl.h which defines EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
-# to a different value than Eigen's default.  Depending on the order of files
-# in the unity build this can lead to clashes.  Additionally, these files are
-# already generated in a way which leads to fairly large compilation units,
-# so the gains from a unity build would be marginal.
-set_source_files_properties(${CERES_INTERNAL_SCHUR_FILES} PROPERTIES
-  SKIP_UNITY_BUILD_INCLUSION ON)
-
-if (NOT MINIGLOG AND GLOG_FOUND)
-  list(APPEND CERES_LIBRARY_PUBLIC_DEPENDENCIES ${GLOG_LIBRARIES})
-  if (gflags_FOUND)
-    # If glog & gflags are both found, we assume that glog was built with
-    # gflags, as it is awkward to perform a try_compile() to verify this
-    # when gflags is an imported target (as it is in newer versions).
-    # As glog #includes gflags/gflags.h in glog/logging.h if compiled with
-    # gflags, it is thus a public dependency for Ceres in this case.
-    list(APPEND CERES_LIBRARY_PUBLIC_DEPENDENCIES gflags)
-  endif()
-endif (NOT MINIGLOG AND GLOG_FOUND)
-
-if (SUITESPARSE AND SuiteSparse_FOUND)
-  # Define version information for use in Solver::FullReport.
-  add_definitions(-DCERES_SUITESPARSE_VERSION="${SuiteSparse_VERSION}")
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES SuiteSparse::CHOLMOD
-    SuiteSparse::SPQR)
-
-  if (SuiteSparse_Partition_FOUND)
-    list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES SuiteSparse::Partition)
-  endif (SuiteSparse_Partition_FOUND)
-endif (SUITESPARSE AND SuiteSparse_FOUND)
-
-if (SuiteSparse_Partition_FOUND OR EIGENMETIS)
-  # Define version information for use in Solver::FullReport.
-  add_definitions(-DCERES_METIS_VERSION="${METIS_VERSION}")
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES METIS::METIS)
-endif (SuiteSparse_Partition_FOUND OR EIGENMETIS)
-
-if (ACCELERATESPARSE AND AccelerateSparse_FOUND)
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${AccelerateSparse_LIBRARIES})
-endif()
-
-if (USE_CUDA)
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${CERES_CUDA_LIBRARIES})
-  set_source_files_properties(cuda_kernels_vector_ops.cu.cc PROPERTIES LANGUAGE CUDA)
-  set_source_files_properties(cuda_kernels_bsm_to_crs.cu.cc PROPERTIES LANGUAGE CUDA)
-  add_library(ceres_cuda_kernels STATIC cuda_kernels_vector_ops.cu.cc cuda_kernels_bsm_to_crs.cu.cc)
-  target_compile_features(ceres_cuda_kernels PRIVATE cxx_std_14)
-  target_compile_definitions(ceres_cuda_kernels PRIVATE CERES_STATIC_DEFINE)
-  # Enable __host__ / __device__ annotations in lambda declarations
-  target_compile_options(ceres_cuda_kernels PRIVATE --extended-lambda)
-  target_include_directories(ceres_cuda_kernels PRIVATE  ${Ceres_SOURCE_DIR}/include  ${Ceres_SOURCE_DIR}/internal ${Ceres_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR})
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ceres_cuda_kernels)
-endif (USE_CUDA)
-
-if (LAPACK_FOUND)
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${LAPACK_LIBRARIES})
-endif ()
-
-# Source files that contain private symbols and live in the ceres::internal
-# namespace. The corresponding symbols (classes, functions, etc.) are expected
-# to be marked with CERES_NO_EXPORT and the files below sorted in
-# lexicographical order.
-add_library(ceres_internal OBJECT
-    ${CERES_INTERNAL_SCHUR_FILES}
-    accelerate_sparse.cc
-    array_utils.cc
-    block_evaluate_preparer.cc
-    block_jacobi_preconditioner.cc
-    block_jacobian_writer.cc
-    block_random_access_dense_matrix.cc
-    block_random_access_diagonal_matrix.cc
-    block_random_access_matrix.cc
-    block_random_access_sparse_matrix.cc
-    block_sparse_matrix.cc
-    block_structure.cc
-    callbacks.cc
-    canonical_views_clustering.cc
-    cgnr_solver.cc
-    compressed_col_sparse_matrix_utils.cc
-    compressed_row_jacobian_writer.cc
-    compressed_row_sparse_matrix.cc
-    conditioned_cost_function.cc
-    context.cc
-    context_impl.cc
-    coordinate_descent_minimizer.cc
-    corrector.cc
-    cost_function.cc
-    covariance.cc
-    covariance_impl.cc
-    cuda_block_sparse_crs_view.cc
-    cuda_partitioned_block_sparse_crs_view.cc
-    cuda_block_structure.cc
-    cuda_sparse_matrix.cc
-    cuda_vector.cc
-    dense_cholesky.cc
-    dense_normal_cholesky_solver.cc
-    dense_qr.cc
-    dense_qr_solver.cc
-    dense_sparse_matrix.cc
-    detect_structure.cc
-    dogleg_strategy.cc
-    dynamic_compressed_row_jacobian_writer.cc
-    dynamic_compressed_row_sparse_matrix.cc
-    dynamic_sparse_normal_cholesky_solver.cc
-    eigensparse.cc
-    evaluation_callback.cc
-    evaluator.cc
-    fake_bundle_adjustment_jacobian.cc
-    file.cc
-    first_order_function.cc
-    float_suitesparse.cc
-    function_sample.cc
-    gradient_checking_cost_function.cc
-    gradient_problem_solver.cc
-    implicit_schur_complement.cc
-    inner_product_computer.cc
-    is_close.cc
-    iteration_callback.cc
-    iterative_refiner.cc
-    iterative_schur_complement_solver.cc
-    levenberg_marquardt_strategy.cc
-    line_search.cc
-    line_search_direction.cc
-    line_search_minimizer.cc
-    line_search_preprocessor.cc
-    linear_least_squares_problems.cc
-    linear_operator.cc
-    linear_solver.cc
-    low_rank_inverse_hessian.cc
-    minimizer.cc
-    parallel_invoke.cc
-    parallel_utils.cc
-    parallel_vector_ops.cc
-    parameter_block_ordering.cc
-    partitioned_matrix_view.cc
-    polynomial.cc
-    power_series_expansion_preconditioner.cc
-    preconditioner.cc
-    preprocessor.cc
-    problem_impl.cc
-    program.cc
-    reorder_program.cc
-    residual_block.cc
-    residual_block_utils.cc
-    schur_complement_solver.cc
-    schur_eliminator.cc
-    schur_jacobi_preconditioner.cc
-    schur_templates.cc
-    scratch_evaluate_preparer.cc
-    single_linkage_clustering.cc
-    solver_utils.cc
-    sparse_cholesky.cc
-    sparse_matrix.cc
-    sparse_normal_cholesky_solver.cc
-    stringprintf.cc
-    subset_preconditioner.cc
-    suitesparse.cc
-    thread_pool.cc
-    thread_token_provider.cc
-    triplet_sparse_matrix.cc
-    trust_region_minimizer.cc
-    trust_region_preprocessor.cc
-    trust_region_step_evaluator.cc
-    trust_region_strategy.cc
-    visibility.cc
-    visibility_based_preconditioner.cc
-    wall_time.cc
-)
-
-set(CERES_LIBRARY_SOURCE
-    ${CERES_EXPORTED_SRCS}
-    ${CERES_INTERNAL_HDRS}
-    ${CERES_PUBLIC_HDRS}
-    ${CERES_PUBLIC_INTERNAL_HDRS})
-
-# Primarily for Android, but optionally for others, compile the minimal
-# glog implementation into Ceres.
-if (MINIGLOG)
-  list(APPEND CERES_LIBRARY_SOURCE miniglog/glog/logging.cc)
-endif (MINIGLOG)
-
-# Ceres C++ compiler flags can be too strict for an external library code
-# which we do not maintain.
-include(CheckCXXCompilerFlag)
-check_cxx_compiler_flag("-Wno-missing-declarations"
-                        CHECK_CXX_FLAG_Wno_missing_declarations)
-if (CHECK_CXX_FLAG_Wno_missing_declarations)
-  set_property(SOURCE gmock_gtest_all.cc
-               APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-missing-declarations")
-endif()
-
-add_library(ceres $<TARGET_OBJECTS:ceres_internal> ${CERES_LIBRARY_SOURCE})
-
-if(BUILD_SHARED_LIBS)
-  # While building shared libraries, we additionally require a static variant to
-  # be able to access internal symbols which are not intended for general use.
-  # Therefore, create a static library from object files and apply all the
-  # compiler options from the main library to the static one.
-  add_library(ceres_static STATIC $<TARGET_OBJECTS:ceres_internal> ${CERES_LIBRARY_SOURCE})
-  target_include_directories(ceres_static PUBLIC $<TARGET_PROPERTY:ceres,INCLUDE_DIRECTORIES>)
-  target_compile_definitions(ceres_static PUBLIC $<TARGET_PROPERTY:ceres,COMPILE_DEFINITIONS>)
-  target_compile_features(ceres_static PUBLIC $<TARGET_PROPERTY:ceres,COMPILE_FEATURES>)
-  target_compile_options(ceres_static PUBLIC $<TARGET_PROPERTY:ceres,COMPILE_OPTIONS>)
-  target_link_libraries(ceres_static
-    INTERFACE $<TARGET_PROPERTY:ceres,INTERFACE_LINK_LIBRARIES>
-    PRIVATE ${CERES_LIBRARY_PRIVATE_DEPENDENCIES})
-  # CERES_STATIC_DEFINE is generated by the GenerateExportHeader CMake module
-  # used to autogerate export.h. The macro should not be renamed without
-  # updating the corresponding generate_export_header invocation.
-  target_compile_definitions(ceres_static PUBLIC CERES_STATIC_DEFINE)
-else()
-  # In a static library build, not additional access layer is necessary as all
-  # symbols are visible.
-  add_library(ceres_static ALIAS ceres)
-endif()
-
-# Create a local alias target that matches the expected installed target.
-add_library(Ceres::ceres ALIAS ceres)
-
-# Apply all compiler options from the main Ceres target. Compiler options should
-# be generally defined on the main target referenced by the ceres_target CMake
-# variable.
-target_include_directories(ceres_internal PUBLIC $<TARGET_PROPERTY:ceres,INCLUDE_DIRECTORIES>)
-target_compile_definitions(ceres_internal PUBLIC $<TARGET_PROPERTY:ceres,COMPILE_DEFINITIONS>)
-target_compile_options(ceres_internal PUBLIC $<TARGET_PROPERTY:ceres,COMPILE_OPTIONS>)
-target_compile_definitions(ceres_internal PRIVATE ceres_EXPORTS)
-target_compile_features(ceres_internal PRIVATE $<TARGET_PROPERTY:ceres,COMPILE_FEATURES>)
-
-# Ensure the minimum required C++ language version is fulfilled as our
-# requirement by downstream clients. Consumers can choose the same or a newer
-# language standard revision.
-target_compile_features(ceres PUBLIC cxx_std_17)
-
-set_target_properties(ceres PROPERTIES
-  VERSION ${CERES_VERSION}
-  SOVERSION 4)
-
-target_link_libraries(ceres
-  PUBLIC ${CERES_LIBRARY_PUBLIC_DEPENDENCIES}
-  PRIVATE ${CERES_LIBRARY_PRIVATE_DEPENDENCIES})
-
-# Add the Ceres headers to its target.
-#
-# Force the location containing the configured config.h to the front of the
-# include_directories list (by default it is appended to the back) to ensure
-# that if the user has an installed version of Ceres in the same location as one
-# of the dependencies (e.g. /usr/local) that we find the config.h we just
-# configured, not the (older) installed config.h.
-target_include_directories(ceres
-  BEFORE PUBLIC
-  $<BUILD_INTERFACE:${Ceres_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}>
-  PRIVATE ${Ceres_SOURCE_DIR}/internal
-  PUBLIC $<BUILD_INTERFACE:${Ceres_SOURCE_DIR}/include>
-         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
-
-# Eigen SparseQR generates various compiler warnings related to unused and
-# uninitialised local variables.  To avoid having to individually suppress these
-# warnings around the #include statements for Eigen headers across all GCC/Clang
-# versions, we tell CMake to treat Eigen headers as system headers.  This
-# results in all compiler warnings from them being suppressed.
-target_link_libraries(ceres PUBLIC Eigen3::Eigen)
-
-# Gather the list of public & private include locations for all enabled optional
-# dependencies to be added to the Ceres target.
-set(CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS "")
-set(CERES_LIBRARY_PUBLIC_DEPENDENCIES_INCLUDE_DIRS "")
-if (MINIGLOG)
-  # Force the miniglog headers to the front of the public include directories
-  # to protect against the case when the user has glog installed in a standard
-  # location (specifically the same as the Ceres install location) but compiled
-  # Ceres with MINIGLOG anyway.  Otherwise: "glog/logging.h" in the public Ceres
-  # headers used in client code would match the installed version of glog, not
-  # the miniglog headers, and the client application would fail to link.
-  #
-  # Note that this is an imperfect fix, as we cannot control the include
-  # directories in client projects, and they could easily invert this ordering
-  # themselves (intentionally or otherwise) and so break their build.
-  target_include_directories(ceres BEFORE PUBLIC
-    $<BUILD_INTERFACE:${Ceres_SOURCE_DIR}/internal/ceres/miniglog>
-    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/ceres/internal/miniglog>)
-elseif (NOT FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-  # Only append glog include directories if the glog found was not a CMake
-  # exported target that already includes them.
-  list(APPEND CERES_LIBRARY_PUBLIC_DEPENDENCIES_INCLUDE_DIRS
-    ${GLOG_INCLUDE_DIRS})
-endif()
-if (ACCELERATESPARSE)
-  list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS
-    ${AccelerateSparse_INCLUDE_DIRS})
-endif()
-# Add include locations for optional dependencies to the Ceres target without
-# duplication.
-list(REMOVE_DUPLICATES CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS)
-target_include_directories(ceres PRIVATE ${CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS})
-list(REMOVE_DUPLICATES CERES_LIBRARY_PUBLIC_DEPENDENCIES_INCLUDE_DIRS)
-target_include_directories(ceres PUBLIC ${CERES_LIBRARY_PUBLIC_DEPENDENCIES_INCLUDE_DIRS})
-
-# Generate an export header for annotating symbols visibility
-include(GenerateExportHeader)
-generate_export_header(ceres EXPORT_FILE_NAME
-  ${Ceres_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/ceres/internal/export.h)
-
-if (USE_CUDA)
-  install(TARGETS ceres_cuda_kernels
-          EXPORT  CeresExport
-          RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-          LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-          ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-endif(USE_CUDA)
-
-install(TARGETS ceres
-        EXPORT  CeresExport
-        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-
-if (BUILD_TESTING AND GFLAGS)
-  add_library(gtest STATIC gmock_gtest_all.cc gmock_main.cc)
-
-  target_include_directories(gtest PRIVATE ${Ceres_SOURCE_DIR}/internal/ceres)
-  if (CMAKE_SYSTEM_NAME MATCHES "QNX")
-    target_link_libraries(gtest PUBLIC regex)
-  endif()
-  target_link_libraries(gtest PRIVATE Ceres::ceres gflags)
-
-  add_library(test_util STATIC
-              evaluator_test_utils.cc
-              numeric_diff_test_utils.cc
-              test_util.cc)
-
-  target_include_directories(test_util PUBLIC ${Ceres_SOURCE_DIR}/internal)
-  target_link_libraries (test_util PUBLIC ceres_static gflags gtest)
-
-  macro (CERES_TEST NAME)
-    add_executable(${NAME}_test ${NAME}_test.cc)
-    # Pull in local headers from the generated test directories when ceres_test()
-    # is invoked there, as well as the private headers in this directory which
-    # may be referenced without the 'ceres' path prefix and all private
-    # dependencies that may be directly referenced.
-    target_include_directories(${NAME}_test
-      PRIVATE ${Ceres_SOURCE_DIR}/internal/ceres
-              ${CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS})
-    # Some tests include direct references/includes of private dependency
-    # headers which are not propagated via the ceres targets, so link them
-    # explicitly.
-    target_link_libraries(${NAME}_test PRIVATE gtest test_util ceres_static
-      ${CERES_LIBRARY_PRIVATE_DEPENDENCIES})
-
-    # covariance_test uses SuiteSparseQR.hpp. However, since SuiteSparse import
-    # targets are private (link only) dependencies not propagated to consumers,
-    # we need to link against the target explicitly here.
-    if (TARGET SuiteSparse::SPQR)
-      target_link_libraries (${NAME}_test PRIVATE SuiteSparse::SPQR)
-    endif (TARGET SuiteSparse::SPQR)
-
-    add_test(NAME ${NAME}_test
-             COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${NAME}_test
-             --test_srcdir
-             ${Ceres_SOURCE_DIR}/data)
-  endmacro (CERES_TEST)
-
-  ceres_test(array_utils)
-  ceres_test(array_selector)
-  ceres_test(autodiff)
-  ceres_test(autodiff_first_order_function)
-  ceres_test(autodiff_cost_function)
-  ceres_test(autodiff_manifold)
-  ceres_test(block_jacobi_preconditioner)
-  ceres_test(block_random_access_dense_matrix)
-  ceres_test(block_random_access_diagonal_matrix)
-  ceres_test(block_random_access_sparse_matrix)
-  ceres_test(block_sparse_matrix)
-  ceres_test(c_api)
-  ceres_test(canonical_views_clustering)
-  ceres_test(compressed_col_sparse_matrix_utils)
-  ceres_test(compressed_row_sparse_matrix)
-  ceres_test(concurrent_queue)
-  ceres_test(conditioned_cost_function)
-  ceres_test(conjugate_gradients_solver)
-  ceres_test(corrector)
-  ceres_test(cost_function_to_functor)
-  ceres_test(covariance)
-  ceres_test(cubic_interpolation)
-  ceres_test(cuda_partitioned_block_sparse_crs_view)
-  ceres_test(cuda_block_sparse_crs_view)
-  ceres_test(cuda_block_structure)
-  ceres_test(cuda_dense_cholesky)
-  ceres_test(cuda_dense_qr)
-  ceres_test(cuda_kernels_vector_ops)
-  ceres_test(cuda_sparse_matrix)
-  ceres_test(cuda_streamed_buffer)
-  ceres_test(cuda_vector)
-  ceres_test(dense_linear_solver)
-  ceres_test(dense_cholesky)
-  ceres_test(dense_qr)
-  ceres_test(dense_sparse_matrix)
-  ceres_test(detect_structure)
-  ceres_test(dogleg_strategy)
-  ceres_test(dynamic_autodiff_cost_function)
-  ceres_test(dynamic_compressed_row_sparse_matrix)
-  ceres_test(dynamic_numeric_diff_cost_function)
-  ceres_test(dynamic_sparse_normal_cholesky_solver)
-  ceres_test(dynamic_sparsity)
-  ceres_test(evaluation_callback)
-  ceres_test(evaluator)
-  ceres_test(fixed_array)
-  ceres_test(gradient_checker)
-  ceres_test(gradient_checking_cost_function)
-  ceres_test(gradient_problem)
-  ceres_test(gradient_problem_solver)
-  ceres_test(graph)
-  ceres_test(graph_algorithms)
-  ceres_test(householder_vector)
-  ceres_test(implicit_schur_complement)
-  ceres_test(inner_product_computer)
-  ceres_test(invert_psd_matrix)
-  ceres_test(integer_sequence_algorithm)
-  ceres_test(is_close)
-  ceres_test(iterative_refiner)
-  ceres_test(iterative_schur_complement_solver)
-  ceres_test(jet)
-  ceres_test(jet_traits)
-  ceres_test(levenberg_marquardt_strategy)
-  ceres_test(line_search_minimizer)
-  ceres_test(line_search_preprocessor)
-  ceres_test(loss_function)
-  ceres_test(manifold)
-  ceres_test(minimizer)
-  ceres_test(normal_prior)
-  ceres_test(numeric_diff_cost_function)
-  ceres_test(numeric_diff_first_order_function)
-  ceres_test(ordered_groups)
-  ceres_test(parallel_for)
-  ceres_test(parallel_utils)
-  ceres_test(parameter_block)
-  ceres_test(parameter_block_ordering)
-  ceres_test(parameter_dims)
-  ceres_test(partitioned_matrix_view)
-  ceres_test(polynomial)
-  ceres_test(power_series_expansion_preconditioner)
-  ceres_test(problem)
-  ceres_test(program)
-  ceres_test(reorder_program)
-  ceres_test(residual_block)
-  ceres_test(residual_block_utils)
-  ceres_test(rotation)
-  ceres_test(schur_complement_solver)
-  ceres_test(schur_eliminator)
-  ceres_test(single_linkage_clustering)
-  ceres_test(small_blas)
-  ceres_test(solver)
-  ceres_test(sparse_cholesky)
-  ceres_test(sparse_normal_cholesky_solver)
-  ceres_test(subset_preconditioner)
-  ceres_test(system)
-  ceres_test(tiny_solver)
-  ceres_test(tiny_solver_autodiff_function)
-  ceres_test(tiny_solver_cost_function_adapter)
-  ceres_test(thread_pool)
-  ceres_test(triplet_sparse_matrix)
-  ceres_test(trust_region_minimizer)
-  ceres_test(trust_region_preprocessor)
-  ceres_test(visibility)
-  ceres_test(visibility_based_preconditioner)
-
-  add_subdirectory(generated_bundle_adjustment_tests)
-
-endif (BUILD_TESTING AND GFLAGS)
-
-macro(add_dependencies_to_benchmark BENCHMARK_TARGET)
-  target_include_directories(${BENCHMARK_TARGET}
-    PRIVATE ${Ceres_SOURCE_DIR}/internal
-            ${CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS})
-  # Benchmarks include direct references/includes of private dependency headers
-  # which are not propagated via the ceres targets, so link them explicitly.
-  target_link_libraries(${BENCHMARK_TARGET}
-    PRIVATE benchmark::benchmark ceres_static
-            ${CERES_LIBRARY_PRIVATE_DEPENDENCIES})
-endmacro()
-
-if (BUILD_BENCHMARKS)
-  add_executable(evaluation_benchmark evaluation_benchmark.cc)
-  add_dependencies_to_benchmark(evaluation_benchmark)
-
-  add_executable(small_blas_gemv_benchmark small_blas_gemv_benchmark.cc)
-  add_dependencies_to_benchmark(small_blas_gemv_benchmark)
-
-  add_executable(small_blas_gemm_benchmark small_blas_gemm_benchmark.cc)
-  add_dependencies_to_benchmark(small_blas_gemm_benchmark)
-
-  add_executable(invert_psd_matrix_benchmark invert_psd_matrix_benchmark.cc)
-  add_dependencies_to_benchmark(invert_psd_matrix_benchmark)
-
-  add_executable(schur_eliminator_benchmark schur_eliminator_benchmark.cc)
-  add_dependencies_to_benchmark(schur_eliminator_benchmark)
-
-  add_executable(jet_operator_benchmark jet_operator_benchmark.cc)
-  add_dependencies_to_benchmark(jet_operator_benchmark)
-
-  add_executable(dense_linear_solver_benchmark dense_linear_solver_benchmark.cc)
-  add_dependencies_to_benchmark(dense_linear_solver_benchmark)
-
-  add_executable(spmv_benchmark spmv_benchmark.cc)
-  add_dependencies_to_benchmark(spmv_benchmark)
-
-  add_executable(parallel_vector_operations_benchmark parallel_vector_operations_benchmark.cc)
-  add_dependencies_to_benchmark(parallel_vector_operations_benchmark)
-
-  add_executable(parallel_for_benchmark parallel_for_benchmark.cc)
-  add_dependencies_to_benchmark(parallel_for_benchmark)
-
-  add_executable(block_jacobi_preconditioner_benchmark
-    block_jacobi_preconditioner_benchmark.cc)
-  add_dependencies_to_benchmark(block_jacobi_preconditioner_benchmark)
-
-  add_subdirectory(autodiff_benchmarks)
-endif (BUILD_BENCHMARKS)
diff --git a/third_party/ceres/internal/ceres/accelerate_sparse.cc b/third_party/ceres/internal/ceres/accelerate_sparse.cc
deleted file mode 100644
index 0baadc0..0000000
--- a/third_party/ceres/internal/ceres/accelerate_sparse.cc
+++ /dev/null
@@ -1,305 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: alexs.mac@gmail.com (Alex Stewart)
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-#include <algorithm>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/accelerate_sparse.h"
-#include "ceres/compressed_col_sparse_matrix_utils.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-
-#define CASESTR(x) \
-  case x:          \
-    return #x
-
-namespace ceres {
-namespace internal {
-
-namespace {
-const char* SparseStatusToString(SparseStatus_t status) {
-  switch (status) {
-    CASESTR(SparseStatusOK);
-    CASESTR(SparseFactorizationFailed);
-    CASESTR(SparseMatrixIsSingular);
-    CASESTR(SparseInternalError);
-    CASESTR(SparseParameterError);
-    CASESTR(SparseStatusReleased);
-    default:
-      return "UNKNOWN";
-  }
-}
-}  // namespace.
-
-// Resizes workspace as required to contain at least required_size bytes
-// aligned to kAccelerateRequiredAlignment and returns a pointer to the
-// aligned start.
-void* ResizeForAccelerateAlignment(const size_t required_size,
-                                   std::vector<uint8_t>* workspace) {
-  // As per the Accelerate documentation, all workspace memory passed to the
-  // sparse solver functions must be 16-byte aligned.
-  constexpr int kAccelerateRequiredAlignment = 16;
-  // Although malloc() on macOS should always be 16-byte aligned, it is unclear
-  // if this holds for new(), or on other Apple OSs (phoneOS, watchOS etc).
-  // As such we assume it is not and use std::align() to create a (potentially
-  // offset) 16-byte aligned sub-buffer of the specified size within workspace.
-  workspace->resize(required_size + kAccelerateRequiredAlignment);
-  size_t size_from_aligned_start = workspace->size();
-  void* aligned_solve_workspace_start =
-      reinterpret_cast<void*>(workspace->data());
-  aligned_solve_workspace_start = std::align(kAccelerateRequiredAlignment,
-                                             required_size,
-                                             aligned_solve_workspace_start,
-                                             size_from_aligned_start);
-  CHECK(aligned_solve_workspace_start != nullptr)
-      << "required_size: " << required_size
-      << ", workspace size: " << workspace->size();
-  return aligned_solve_workspace_start;
-}
-
-template <typename Scalar>
-void AccelerateSparse<Scalar>::Solve(NumericFactorization* numeric_factor,
-                                     DenseVector* rhs_and_solution) {
-  // From SparseSolve() documentation in Solve.h
-  const int required_size = numeric_factor->solveWorkspaceRequiredStatic +
-                            numeric_factor->solveWorkspaceRequiredPerRHS;
-  SparseSolve(*numeric_factor,
-              *rhs_and_solution,
-              ResizeForAccelerateAlignment(required_size, &solve_workspace_));
-}
-
-template <typename Scalar>
-typename AccelerateSparse<Scalar>::ASSparseMatrix
-AccelerateSparse<Scalar>::CreateSparseMatrixTransposeView(
-    CompressedRowSparseMatrix* A) {
-  // Accelerate uses CSC as its sparse storage format whereas Ceres uses CSR.
-  // As this method returns the transpose view we can flip rows/cols to map
-  // from CSR to CSC^T.
-  //
-  // Accelerate's columnStarts is a long*, not an int*.  These types might be
-  // different (e.g. ARM on iOS) so always make a copy.
-  column_starts_.resize(A->num_rows() + 1);  // +1 for final column length.
-  std::copy_n(A->rows(), column_starts_.size(), column_starts_.data());
-
-  ASSparseMatrix At;
-  At.structure.rowCount = A->num_cols();
-  At.structure.columnCount = A->num_rows();
-  At.structure.columnStarts = column_starts_.data();
-  At.structure.rowIndices = A->mutable_cols();
-  At.structure.attributes.transpose = false;
-  At.structure.attributes.triangle = SparseUpperTriangle;
-  At.structure.attributes.kind = SparseSymmetric;
-  At.structure.attributes._reserved = 0;
-  At.structure.attributes._allocatedBySparse = 0;
-  At.structure.blockSize = 1;
-  if constexpr (std::is_same_v<Scalar, double>) {
-    At.data = A->mutable_values();
-  } else {
-    values_ =
-        ConstVectorRef(A->values(), A->num_nonzeros()).template cast<Scalar>();
-    At.data = values_.data();
-  }
-  return At;
-}
-
-template <typename Scalar>
-typename AccelerateSparse<Scalar>::SymbolicFactorization
-AccelerateSparse<Scalar>::AnalyzeCholesky(OrderingType ordering_type,
-                                          ASSparseMatrix* A) {
-  SparseSymbolicFactorOptions sfoption;
-  sfoption.control = SparseDefaultControl;
-  sfoption.orderMethod = SparseOrderDefault;
-  sfoption.order = nullptr;
-  sfoption.ignoreRowsAndColumns = nullptr;
-  sfoption.malloc = malloc;
-  sfoption.free = free;
-  sfoption.reportError = nullptr;
-
-  if (ordering_type == OrderingType::AMD) {
-    sfoption.orderMethod = SparseOrderAMD;
-  } else if (ordering_type == OrderingType::NESDIS) {
-    sfoption.orderMethod = SparseOrderMetis;
-  }
-  return SparseFactor(SparseFactorizationCholesky, A->structure, sfoption);
-}
-
-template <typename Scalar>
-typename AccelerateSparse<Scalar>::NumericFactorization
-AccelerateSparse<Scalar>::Cholesky(ASSparseMatrix* A,
-                                   SymbolicFactorization* symbolic_factor) {
-  return SparseFactor(*symbolic_factor, *A);
-}
-
-template <typename Scalar>
-void AccelerateSparse<Scalar>::Cholesky(ASSparseMatrix* A,
-                                        NumericFactorization* numeric_factor) {
-  // From SparseRefactor() documentation in Solve.h
-  const int required_size =
-      std::is_same<Scalar, double>::value
-          ? numeric_factor->symbolicFactorization.workspaceSize_Double
-          : numeric_factor->symbolicFactorization.workspaceSize_Float;
-  return SparseRefactor(
-      *A,
-      numeric_factor,
-      ResizeForAccelerateAlignment(required_size, &factorization_workspace_));
-}
-
-// Instantiate only for the specific template types required/supported s/t the
-// definition can be in the .cc file.
-template class AccelerateSparse<double>;
-template class AccelerateSparse<float>;
-
-template <typename Scalar>
-std::unique_ptr<SparseCholesky> AppleAccelerateCholesky<Scalar>::Create(
-    OrderingType ordering_type) {
-  return std::unique_ptr<SparseCholesky>(
-      new AppleAccelerateCholesky<Scalar>(ordering_type));
-}
-
-template <typename Scalar>
-AppleAccelerateCholesky<Scalar>::AppleAccelerateCholesky(
-    const OrderingType ordering_type)
-    : ordering_type_(ordering_type) {}
-
-template <typename Scalar>
-AppleAccelerateCholesky<Scalar>::~AppleAccelerateCholesky() {
-  FreeSymbolicFactorization();
-  FreeNumericFactorization();
-}
-
-template <typename Scalar>
-CompressedRowSparseMatrix::StorageType
-AppleAccelerateCholesky<Scalar>::StorageType() const {
-  return CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR;
-}
-
-template <typename Scalar>
-LinearSolverTerminationType AppleAccelerateCholesky<Scalar>::Factorize(
-    CompressedRowSparseMatrix* lhs, std::string* message) {
-  CHECK_EQ(lhs->storage_type(), StorageType());
-  if (lhs == nullptr) {
-    *message = "Failure: Input lhs is nullptr.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  typename SparseTypesTrait<Scalar>::SparseMatrix as_lhs =
-      as_.CreateSparseMatrixTransposeView(lhs);
-
-  if (!symbolic_factor_) {
-    symbolic_factor_ = std::make_unique<
-        typename SparseTypesTrait<Scalar>::SymbolicFactorization>(
-        as_.AnalyzeCholesky(ordering_type_, &as_lhs));
-
-    if (symbolic_factor_->status != SparseStatusOK) {
-      *message = StringPrintf(
-          "Apple Accelerate Failure : Symbolic factorisation failed: %s",
-          SparseStatusToString(symbolic_factor_->status));
-      FreeSymbolicFactorization();
-      return LinearSolverTerminationType::FATAL_ERROR;
-    }
-  }
-
-  if (!numeric_factor_) {
-    numeric_factor_ = std::make_unique<
-        typename SparseTypesTrait<Scalar>::NumericFactorization>(
-        as_.Cholesky(&as_lhs, symbolic_factor_.get()));
-  } else {
-    // Recycle memory from previous numeric factorization.
-    as_.Cholesky(&as_lhs, numeric_factor_.get());
-  }
-  if (numeric_factor_->status != SparseStatusOK) {
-    *message = StringPrintf(
-        "Apple Accelerate Failure : Numeric factorisation failed: %s",
-        SparseStatusToString(numeric_factor_->status));
-    FreeNumericFactorization();
-    return LinearSolverTerminationType::FAILURE;
-  }
-
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-template <typename Scalar>
-LinearSolverTerminationType AppleAccelerateCholesky<Scalar>::Solve(
-    const double* rhs, double* solution, std::string* message) {
-  CHECK_EQ(numeric_factor_->status, SparseStatusOK)
-      << "Solve called without a call to Factorize first ("
-      << SparseStatusToString(numeric_factor_->status) << ").";
-  const int num_cols = numeric_factor_->symbolicFactorization.columnCount;
-
-  typename SparseTypesTrait<Scalar>::DenseVector as_rhs_and_solution;
-  as_rhs_and_solution.count = num_cols;
-  if constexpr (std::is_same_v<Scalar, double>) {
-    as_rhs_and_solution.data = solution;
-    std::copy_n(rhs, num_cols, solution);
-  } else {
-    scalar_rhs_and_solution_ =
-        ConstVectorRef(rhs, num_cols).template cast<Scalar>();
-    as_rhs_and_solution.data = scalar_rhs_and_solution_.data();
-  }
-  as_.Solve(numeric_factor_.get(), &as_rhs_and_solution);
-  if (!std::is_same<Scalar, double>::value) {
-    VectorRef(solution, num_cols) =
-        scalar_rhs_and_solution_.template cast<double>();
-  }
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-template <typename Scalar>
-void AppleAccelerateCholesky<Scalar>::FreeSymbolicFactorization() {
-  if (symbolic_factor_) {
-    SparseCleanup(*symbolic_factor_);
-    symbolic_factor_ = nullptr;
-  }
-}
-
-template <typename Scalar>
-void AppleAccelerateCholesky<Scalar>::FreeNumericFactorization() {
-  if (numeric_factor_) {
-    SparseCleanup(*numeric_factor_);
-    numeric_factor_ = nullptr;
-  }
-}
-
-// Instantiate only for the specific template types required/supported s/t the
-// definition can be in the .cc file.
-template class AppleAccelerateCholesky<double>;
-template class AppleAccelerateCholesky<float>;
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/accelerate_sparse.h b/third_party/ceres/internal/ceres/accelerate_sparse.h
deleted file mode 100644
index ef819b8..0000000
--- a/third_party/ceres/internal/ceres/accelerate_sparse.h
+++ /dev/null
@@ -1,149 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: alexs.mac@gmail.com (Alex Stewart)
-
-#ifndef CERES_INTERNAL_ACCELERATE_SPARSE_H_
-#define CERES_INTERNAL_ACCELERATE_SPARSE_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "Accelerate.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_cholesky.h"
-
-namespace ceres {
-namespace internal {
-
-class CompressedRowSparseMatrix;
-class TripletSparseMatrix;
-
-template <typename Scalar>
-struct SparseTypesTrait {};
-
-template <>
-struct SparseTypesTrait<double> {
-  using DenseVector = DenseVector_Double;
-  using SparseMatrix = SparseMatrix_Double;
-  using SymbolicFactorization = SparseOpaqueSymbolicFactorization;
-  using NumericFactorization = SparseOpaqueFactorization_Double;
-};
-
-template <>
-struct SparseTypesTrait<float> {
-  using DenseVector = DenseVector_Float;
-  using SparseMatrix = SparseMatrix_Float;
-  using SymbolicFactorization = SparseOpaqueSymbolicFactorization;
-  using NumericFactorization = SparseOpaqueFactorization_Float;
-};
-
-template <typename Scalar>
-class AccelerateSparse {
- public:
-  using DenseVector = typename SparseTypesTrait<Scalar>::DenseVector;
-  // Use ASSparseMatrix to avoid collision with ceres::internal::SparseMatrix.
-  using ASSparseMatrix = typename SparseTypesTrait<Scalar>::SparseMatrix;
-  using SymbolicFactorization =
-      typename SparseTypesTrait<Scalar>::SymbolicFactorization;
-  using NumericFactorization =
-      typename SparseTypesTrait<Scalar>::NumericFactorization;
-
-  // Solves a linear system given its symbolic (reference counted within
-  // NumericFactorization) and numeric factorization.
-  void Solve(NumericFactorization* numeric_factor,
-             DenseVector* rhs_and_solution);
-
-  // Note: Accelerate's API passes/returns its objects by value, but as the
-  //       objects contain pointers to the underlying data these copies are
-  //       all shallow (in some cases Accelerate also reference counts the
-  //       objects internally).
-  ASSparseMatrix CreateSparseMatrixTransposeView(CompressedRowSparseMatrix* A);
-  // Computes a symbolic factorisation of A that can be used in Solve().
-  SymbolicFactorization AnalyzeCholesky(OrderingType ordering_type,
-                                        ASSparseMatrix* A);
-  // Compute the numeric Cholesky factorization of A, given its
-  // symbolic factorization.
-  NumericFactorization Cholesky(ASSparseMatrix* A,
-                                SymbolicFactorization* symbolic_factor);
-  // Reuse the NumericFactorization from a previous matrix with the same
-  // symbolic factorization to represent a new numeric factorization.
-  void Cholesky(ASSparseMatrix* A, NumericFactorization* numeric_factor);
-
- private:
-  std::vector<long> column_starts_;
-  std::vector<uint8_t> solve_workspace_;
-  std::vector<uint8_t> factorization_workspace_;
-  // Storage for the values of A if Scalar != double (necessitating a copy).
-  Eigen::Matrix<Scalar, Eigen::Dynamic, 1> values_;
-};
-
-// An implementation of SparseCholesky interface using Apple's Accelerate
-// framework.
-template <typename Scalar>
-class AppleAccelerateCholesky final : public SparseCholesky {
- public:
-  // Factory
-  static std::unique_ptr<SparseCholesky> Create(OrderingType ordering_type);
-
-  // SparseCholesky interface.
-  virtual ~AppleAccelerateCholesky();
-  CompressedRowSparseMatrix::StorageType StorageType() const;
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) final;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) final;
-
- private:
-  AppleAccelerateCholesky(const OrderingType ordering_type);
-  void FreeSymbolicFactorization();
-  void FreeNumericFactorization();
-
-  const OrderingType ordering_type_;
-  AccelerateSparse<Scalar> as_;
-  std::unique_ptr<typename AccelerateSparse<Scalar>::SymbolicFactorization>
-      symbolic_factor_;
-  std::unique_ptr<typename AccelerateSparse<Scalar>::NumericFactorization>
-      numeric_factor_;
-  // Copy of rhs/solution if Scalar != double (necessitating a copy).
-  Eigen::Matrix<Scalar, Eigen::Dynamic, 1> scalar_rhs_and_solution_;
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
-
-#endif  // CERES_INTERNAL_ACCELERATE_SPARSE_H_
diff --git a/third_party/ceres/internal/ceres/array_selector_test.cc b/third_party/ceres/internal/ceres/array_selector_test.cc
deleted file mode 100644
index ff1bcd7..0000000
--- a/third_party/ceres/internal/ceres/array_selector_test.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://code.google.com/p/ceres-solver/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-
-#include "ceres/internal/array_selector.h"
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// This test only checks, if the correct array implementations are selected. The
-// test for FixedArray is in fixed_array_test.cc. Tests for std::array and
-// std::vector are not included in ceres.
-TEST(ArraySelector, FixedArray) {
-  ArraySelector<int, DYNAMIC, 20> array1(10);
-  static_assert(
-      std::is_base_of<internal::FixedArray<int, 20>, decltype(array1)>::value);
-  EXPECT_EQ(array1.size(), 10);
-
-  ArraySelector<int, DYNAMIC, 10> array2(20);
-  static_assert(
-      std::is_base_of<internal::FixedArray<int, 10>, decltype(array2)>::value);
-  EXPECT_EQ(array2.size(), 20);
-}
-
-TEST(ArraySelector, Array) {
-  ArraySelector<int, 10, 20> array1(10);
-  static_assert(std::is_base_of<std::array<int, 10>, decltype(array1)>::value);
-  EXPECT_EQ(array1.size(), 10);
-
-  ArraySelector<int, 20, 20> array2(20);
-  static_assert(std::is_base_of<std::array<int, 20>, decltype(array2)>::value);
-  EXPECT_EQ(array2.size(), 20);
-}
-
-TEST(ArraySelector, Vector) {
-  ArraySelector<int, 20, 10> array1(20);
-  static_assert(std::is_base_of<std::vector<int>, decltype(array1)>::value);
-  EXPECT_EQ(array1.size(), 20);
-
-  ArraySelector<int, 1, 0> array2(1);
-  static_assert(std::is_base_of<std::vector<int>, decltype(array2)>::value);
-  EXPECT_EQ(array2.size(), 1);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/array_utils.cc b/third_party/ceres/internal/ceres/array_utils.cc
deleted file mode 100644
index a962f7f..0000000
--- a/third_party/ceres/internal/ceres/array_utils.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/array_utils.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstddef>
-#include <string>
-#include <vector>
-
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-bool IsArrayValid(const int64_t size, const double* x) {
-  if (x != nullptr) {
-    for (int64_t i = 0; i < size; ++i) {
-      if (!std::isfinite(x[i]) || (x[i] == kImpossibleValue)) {
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
-int64_t FindInvalidValue(const int64_t size, const double* x) {
-  if (x == nullptr) {
-    return size;
-  }
-
-  for (int64_t i = 0; i < size; ++i) {
-    if (!std::isfinite(x[i]) || (x[i] == kImpossibleValue)) {
-      return i;
-    }
-  }
-
-  return size;
-}
-
-void InvalidateArray(const int64_t size, double* x) {
-  if (x != nullptr) {
-    for (int64_t i = 0; i < size; ++i) {
-      x[i] = kImpossibleValue;
-    }
-  }
-}
-
-void AppendArrayToString(const int64_t size,
-                         const double* x,
-                         std::string* result) {
-  for (int64_t i = 0; i < size; ++i) {
-    if (x == nullptr) {
-      StringAppendF(result, "Not Computed  ");
-    } else {
-      if (x[i] == kImpossibleValue) {
-        StringAppendF(result, "Uninitialized ");
-      } else {
-        StringAppendF(result, "%12g ", x[i]);
-      }
-    }
-  }
-}
-
-void MapValuesToContiguousRange(const int64_t size, int* array) {
-  std::vector<int> unique_values(array, array + size);
-  std::sort(unique_values.begin(), unique_values.end());
-  unique_values.erase(std::unique(unique_values.begin(), unique_values.end()),
-                      unique_values.end());
-
-  for (int64_t i = 0; i < size; ++i) {
-    array[i] =
-        std::lower_bound(unique_values.begin(), unique_values.end(), array[i]) -
-        unique_values.begin();
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/array_utils.h b/third_party/ceres/internal/ceres/array_utils.h
deleted file mode 100644
index bd51aa5..0000000
--- a/third_party/ceres/internal/ceres/array_utils.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Utility routines for validating arrays.
-//
-// These are useful for detecting two common class of errors.
-//
-// 1. Uninitialized memory - where the user for some reason did not
-// compute part of an array, but the code expects it.
-//
-// 2. Numerical failure while computing the cost/residual/jacobian,
-// e.g. NaN, infinities etc. This is particularly useful since the
-// automatic differentiation code does computations that are not
-// evident to the user and can silently generate hard to debug errors.
-
-#ifndef CERES_INTERNAL_ARRAY_UTILS_H_
-#define CERES_INTERNAL_ARRAY_UTILS_H_
-
-#include <cstdint>
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Fill the array x with an impossible value that the user code is
-// never expected to compute.
-CERES_NO_EXPORT void InvalidateArray(const int64_t size, double* x);
-
-// Check if all the entries of the array x are valid, i.e. all the
-// values in the array should be finite and none of them should be
-// equal to the "impossible" value used by InvalidateArray.
-CERES_NO_EXPORT bool IsArrayValid(const int64_t size, const double* x);
-
-// If the array contains an invalid value, return the index for it,
-// otherwise return size.
-CERES_NO_EXPORT int64_t FindInvalidValue(const int64_t size, const double* x);
-
-// Utility routine to print an array of doubles to a string. If the
-// array pointer is nullptr, it is treated as an array of zeros.
-CERES_NO_EXPORT void AppendArrayToString(const int64_t size,
-                                         const double* x,
-                                         std::string* result);
-
-// This routine takes an array of integer values, sorts and uniques
-// them and then maps each value in the array to its position in the
-// sorted+uniqued array. By doing this, if there are k unique
-// values in the array, each value is replaced by an integer in the
-// range [0, k-1], while preserving their relative order.
-//
-// For example
-//
-// [1 0 3 5 0 1 5]
-//
-// gets mapped to
-//
-// [1 0 2 3 0 1 3]
-CERES_NO_EXPORT void MapValuesToContiguousRange(const int64_t size, int* array);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_ARRAY_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/array_utils_test.cc b/third_party/ceres/internal/ceres/array_utils_test.cc
deleted file mode 100644
index 2661f57..0000000
--- a/third_party/ceres/internal/ceres/array_utils_test.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/array_utils.h"
-
-#include <cmath>
-#include <limits>
-#include <vector>
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(ArrayUtils, IsArrayValid) {
-  double x[3];
-  x[0] = 0.0;
-  x[1] = 1.0;
-  x[2] = 2.0;
-  EXPECT_TRUE(IsArrayValid(3, x));
-  x[1] = std::numeric_limits<double>::infinity();
-  EXPECT_FALSE(IsArrayValid(3, x));
-  x[1] = std::numeric_limits<double>::quiet_NaN();
-  EXPECT_FALSE(IsArrayValid(3, x));
-  x[1] = std::numeric_limits<double>::signaling_NaN();
-  EXPECT_FALSE(IsArrayValid(3, x));
-  EXPECT_TRUE(IsArrayValid(1, nullptr));
-  InvalidateArray(3, x);
-  EXPECT_FALSE(IsArrayValid(3, x));
-}
-
-TEST(ArrayUtils, FindInvalidIndex) {
-  double x[3];
-  x[0] = 0.0;
-  x[1] = 1.0;
-  x[2] = 2.0;
-  EXPECT_EQ(FindInvalidValue(3, x), 3);
-  x[1] = std::numeric_limits<double>::infinity();
-  EXPECT_EQ(FindInvalidValue(3, x), 1);
-  x[1] = std::numeric_limits<double>::quiet_NaN();
-  EXPECT_EQ(FindInvalidValue(3, x), 1);
-  x[1] = std::numeric_limits<double>::signaling_NaN();
-  EXPECT_EQ(FindInvalidValue(3, x), 1);
-  EXPECT_EQ(FindInvalidValue(1, nullptr), 1);
-  InvalidateArray(3, x);
-  EXPECT_EQ(FindInvalidValue(3, x), 0);
-}
-
-TEST(MapValuesToContiguousRange, ContiguousEntries) {
-  std::vector<int> array;
-  array.push_back(0);
-  array.push_back(1);
-  std::vector<int> expected = array;
-  MapValuesToContiguousRange(array.size(), &array[0]);
-  EXPECT_EQ(array, expected);
-  array.clear();
-
-  array.push_back(1);
-  array.push_back(0);
-  expected = array;
-  MapValuesToContiguousRange(array.size(), &array[0]);
-  EXPECT_EQ(array, expected);
-}
-
-TEST(MapValuesToContiguousRange, NonContiguousEntries) {
-  std::vector<int> array;
-  array.push_back(0);
-  array.push_back(2);
-  std::vector<int> expected;
-  expected.push_back(0);
-  expected.push_back(1);
-  MapValuesToContiguousRange(array.size(), &array[0]);
-  EXPECT_EQ(array, expected);
-}
-
-TEST(MapValuesToContiguousRange, NonContiguousRepeatingEntries) {
-  std::vector<int> array;
-  array.push_back(3);
-  array.push_back(1);
-  array.push_back(0);
-  array.push_back(0);
-  array.push_back(0);
-  array.push_back(5);
-  std::vector<int> expected;
-  expected.push_back(2);
-  expected.push_back(1);
-  expected.push_back(0);
-  expected.push_back(0);
-  expected.push_back(0);
-  expected.push_back(3);
-  MapValuesToContiguousRange(array.size(), &array[0]);
-  EXPECT_EQ(array, expected);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/CMakeLists.txt b/third_party/ceres/internal/ceres/autodiff_benchmarks/CMakeLists.txt
deleted file mode 100644
index 99af152..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# TODO: Add support for other compilers
-if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-  # Increase the inlining threshold only for those functions marked with an
-  # inline hint. This is typically far more realistic to significantly increase
-  # in a large code-base than -inline-threshold as that has a larger scope.
-  list(APPEND CERES_BENCHMARK_FLAGS "-mllvm" "-inlinehint-threshold=1000000")
-endif()
-
-add_executable(autodiff_benchmarks autodiff_benchmarks.cc)
-add_dependencies_to_benchmark(autodiff_benchmarks)
-target_compile_options(autodiff_benchmarks PRIVATE ${CERES_BENCHMARK_FLAGS})
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/autodiff_benchmarks.cc b/third_party/ceres/internal/ceres/autodiff_benchmarks/autodiff_benchmarks.cc
deleted file mode 100644
index 87e0067..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/autodiff_benchmarks.cc
+++ /dev/null
@@ -1,430 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-
-#include <memory>
-#include <random>
-#include <utility>
-
-#include "benchmark/benchmark.h"
-#include "ceres/autodiff_benchmarks/brdf_cost_function.h"
-#include "ceres/autodiff_benchmarks/constant_cost_function.h"
-#include "ceres/autodiff_benchmarks/linear_cost_functions.h"
-#include "ceres/autodiff_benchmarks/photometric_error.h"
-#include "ceres/autodiff_benchmarks/relative_pose_error.h"
-#include "ceres/autodiff_benchmarks/snavely_reprojection_error.h"
-#include "ceres/ceres.h"
-
-namespace ceres {
-
-enum Dynamic { kNotDynamic, kDynamic };
-
-// Transforms a static functor into a dynamic one.
-template <typename CostFunctionType, int kNumParameterBlocks>
-class ToDynamic {
- public:
-  template <typename... _Args>
-  explicit ToDynamic(_Args&&... __args)
-      : cost_function_(std::forward<_Args>(__args)...) {}
-
-  template <typename T>
-  bool operator()(const T* const* parameters, T* residuals) const {
-    return Apply(
-        parameters, residuals, std::make_index_sequence<kNumParameterBlocks>());
-  }
-
- private:
-  template <typename T, size_t... Indices>
-  bool Apply(const T* const* parameters,
-             T* residuals,
-             std::index_sequence<Indices...>) const {
-    return cost_function_(parameters[Indices]..., residuals);
-  }
-
-  CostFunctionType cost_function_;
-};
-
-template <int kParameterBlockSize>
-static void BM_ConstantAnalytic(benchmark::State& state) {
-  constexpr int num_residuals = 1;
-  std::array<double, kParameterBlockSize> parameters_values;
-  std::iota(parameters_values.begin(), parameters_values.end(), 0);
-  double* parameters[] = {parameters_values.data()};
-
-  std::array<double, num_residuals> residuals;
-
-  std::array<double, num_residuals * kParameterBlockSize> jacobian_values;
-  double* jacobians[] = {jacobian_values.data()};
-
-  std::unique_ptr<ceres::CostFunction> cost_function(
-      new AnalyticConstantCostFunction<kParameterBlockSize>());
-
-  for (auto _ : state) {
-    cost_function->Evaluate(parameters, residuals.data(), jacobians);
-  }
-}
-
-// Helpers for CostFunctionFactory.
-template <typename DynamicCostFunctionType>
-void AddParameterBlocks(DynamicCostFunctionType*) {}
-
-template <int HeadN, int... TailNs, typename DynamicCostFunctionType>
-void AddParameterBlocks(DynamicCostFunctionType* dynamic_function) {
-  dynamic_function->AddParameterBlock(HeadN);
-  AddParameterBlocks<TailNs...>(dynamic_function);
-}
-
-// Creates an autodiff cost function wrapping `CostFunctor`, with
-// `kNumResiduals` residuals and parameter blocks with sized `Ns..`.
-// Depending on `kIsDynamic`, either a static or dynamic cost function is
-// created.
-// `args` are forwarded to the `CostFunctor` constructor.
-template <Dynamic kIsDynamic>
-struct CostFunctionFactory {};
-
-template <>
-struct CostFunctionFactory<kNotDynamic> {
-  template <typename CostFunctor,
-            int kNumResiduals,
-            int... Ns,
-            typename... Args>
-  static std::unique_ptr<ceres::CostFunction> Create(Args&&... args) {
-    return std::make_unique<
-        ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns...>>(
-        new CostFunctor(std::forward<Args>(args)...));
-  }
-};
-
-template <>
-struct CostFunctionFactory<kDynamic> {
-  template <typename CostFunctor,
-            int kNumResiduals,
-            int... Ns,
-            typename... Args>
-  static std::unique_ptr<ceres::CostFunction> Create(Args&&... args) {
-    constexpr const int kNumParameterBlocks = sizeof...(Ns);
-    auto dynamic_function = std::make_unique<ceres::DynamicAutoDiffCostFunction<
-        ToDynamic<CostFunctor, kNumParameterBlocks>>>(
-        new ToDynamic<CostFunctor, kNumParameterBlocks>(
-            std::forward<Args>(args)...));
-    dynamic_function->SetNumResiduals(kNumResiduals);
-    AddParameterBlocks<Ns...>(dynamic_function.get());
-    return dynamic_function;
-  }
-};
-
-template <int kParameterBlockSize, Dynamic kIsDynamic>
-static void BM_ConstantAutodiff(benchmark::State& state) {
-  constexpr int num_residuals = 1;
-  std::array<double, kParameterBlockSize> parameters_values;
-  std::iota(parameters_values.begin(), parameters_values.end(), 0);
-  double* parameters[] = {parameters_values.data()};
-
-  std::array<double, num_residuals> residuals;
-
-  std::array<double, num_residuals * kParameterBlockSize> jacobian_values;
-  double* jacobians[] = {jacobian_values.data()};
-
-  std::unique_ptr<ceres::CostFunction> cost_function =
-      CostFunctionFactory<kIsDynamic>::
-          template Create<ConstantCostFunction<kParameterBlockSize>, 1, 1>();
-
-  for (auto _ : state) {
-    cost_function->Evaluate(parameters, residuals.data(), jacobians);
-  }
-}
-
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 1);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 1, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 1, kDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 10);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 10, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 10, kDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 20);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 20, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 20, kDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 30);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 30, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 30, kDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 40);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 40, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 40, kDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 50);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 50, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 50, kDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAnalytic, 60);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 60, kNotDynamic);
-BENCHMARK_TEMPLATE(BM_ConstantAutodiff, 60, kDynamic);
-
-template <Dynamic kIsDynamic>
-static void BM_Linear1AutoDiff(benchmark::State& state) {
-  double parameter_block1[] = {1.};
-  double* parameters[] = {parameter_block1};
-
-  double jacobian1[1];
-  double residuals[1];
-  double* jacobians[] = {jacobian1};
-
-  std::unique_ptr<ceres::CostFunction> cost_function = CostFunctionFactory<
-      kIsDynamic>::template Create<Linear1CostFunction, 1, 1>();
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-BENCHMARK_TEMPLATE(BM_Linear1AutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_Linear1AutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-template <Dynamic kIsDynamic>
-static void BM_Linear10AutoDiff(benchmark::State& state) {
-  double parameter_block1[] = {1., 2., 3., 4., 5., 6., 7., 8., 9., 10.};
-  double* parameters[] = {parameter_block1};
-
-  double jacobian1[10 * 10];
-  double residuals[10];
-  double* jacobians[] = {jacobian1};
-
-  std::unique_ptr<ceres::CostFunction> cost_function = CostFunctionFactory<
-      kIsDynamic>::template Create<Linear10CostFunction, 10, 10>();
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-BENCHMARK_TEMPLATE(BM_Linear10AutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_Linear10AutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-// From the NIST problem collection.
-struct Rat43CostFunctor {
-  Rat43CostFunctor(const double x, const double y) : x_(x), y_(y) {}
-
-  template <typename T>
-  inline bool operator()(const T* parameters, T* residuals) const {
-    const T& b1 = parameters[0];
-    const T& b2 = parameters[1];
-    const T& b3 = parameters[2];
-    const T& b4 = parameters[3];
-    residuals[0] = b1 * pow(1.0 + exp(b2 - b3 * x_), -1.0 / b4) - y_;
-    return true;
-  }
-
-  static constexpr int kNumParameterBlocks = 1;
-
- private:
-  const double x_;
-  const double y_;
-};
-
-template <Dynamic kIsDynamic>
-static void BM_Rat43AutoDiff(benchmark::State& state) {
-  double parameter_block1[] = {1., 2., 3., 4.};
-  double* parameters[] = {parameter_block1};
-
-  double jacobian1[] = {0.0, 0.0, 0.0, 0.0};
-  double residuals;
-  double* jacobians[] = {jacobian1};
-  const double x = 0.2;
-  const double y = 0.3;
-  std::unique_ptr<ceres::CostFunction> cost_function =
-      CostFunctionFactory<kIsDynamic>::template Create<Rat43CostFunctor, 1, 4>(
-          x, y);
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, &residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-BENCHMARK_TEMPLATE(BM_Rat43AutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_Rat43AutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-template <Dynamic kIsDynamic>
-static void BM_SnavelyReprojectionAutoDiff(benchmark::State& state) {
-  double parameter_block1[] = {1., 2., 3., 4., 5., 6., 7., 8., 9.};
-  double parameter_block2[] = {1., 2., 3.};
-  double* parameters[] = {parameter_block1, parameter_block2};
-
-  double jacobian1[2 * 9];
-  double jacobian2[2 * 3];
-  double residuals[2];
-  double* jacobians[] = {jacobian1, jacobian2};
-
-  const double x = 0.2;
-  const double y = 0.3;
-  std::unique_ptr<ceres::CostFunction> cost_function = CostFunctionFactory<
-      kIsDynamic>::template Create<SnavelyReprojectionError, 2, 9, 3>(x, y);
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-
-BENCHMARK_TEMPLATE(BM_SnavelyReprojectionAutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_SnavelyReprojectionAutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-template <Dynamic kIsDynamic>
-static void BM_PhotometricAutoDiff(benchmark::State& state) {
-  constexpr int PATCH_SIZE = 8;
-
-  using FunctorType = PhotometricError<PATCH_SIZE>;
-  using ImageType = Eigen::Matrix<uint8_t, 128, 128, Eigen::RowMajor>;
-
-  // Prepare parameter / residual / jacobian blocks.
-  double parameter_block1[] = {1., 2., 3., 4., 5., 6., 7.};
-  double parameter_block2[] = {1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1};
-  double parameter_block3[] = {1.};
-  double* parameters[] = {parameter_block1, parameter_block2, parameter_block3};
-
-  Eigen::Map<Eigen::Quaterniond>(parameter_block1).normalize();
-  Eigen::Map<Eigen::Quaterniond>(parameter_block2).normalize();
-
-  double jacobian1[FunctorType::PATCH_SIZE * FunctorType::POSE_SIZE];
-  double jacobian2[FunctorType::PATCH_SIZE * FunctorType::POSE_SIZE];
-  double jacobian3[FunctorType::PATCH_SIZE * FunctorType::POINT_SIZE];
-  double residuals[FunctorType::PATCH_SIZE];
-  double* jacobians[] = {jacobian1, jacobian2, jacobian3};
-
-  // Prepare data (fixed seed for repeatability).
-  std::mt19937::result_type seed = 42;
-  std::mt19937 gen(seed);
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-  std::uniform_int_distribution<unsigned int> uniform0255(0, 255);
-
-  FunctorType::Patch<double> intensities_host =
-      FunctorType::Patch<double>::NullaryExpr(
-          [&]() { return uniform0255(gen); });
-
-  // Set bearing vector's z component to 1, i.e. pointing away from the camera,
-  // to ensure they are (likely) in the domain of the projection function (given
-  // a small rotation between host and target frame).
-  FunctorType::PatchVectors<double> bearings_host =
-      FunctorType::PatchVectors<double>::NullaryExpr(
-          [&]() { return uniform01(gen); });
-  bearings_host.row(2).array() = 1;
-  bearings_host.colwise().normalize();
-
-  ImageType image = ImageType::NullaryExpr(
-      [&]() { return static_cast<uint8_t>(uniform0255(gen)); });
-  FunctorType::Grid grid(image.data(), 0, image.rows(), 0, image.cols());
-  FunctorType::Interpolator image_target(grid);
-
-  FunctorType::Intrinsics intrinsics;
-  intrinsics << 128, 128, 1, -1, 0.5, 0.5;
-
-  std::unique_ptr<ceres::CostFunction> cost_function =
-      CostFunctionFactory<kIsDynamic>::template Create<FunctorType,
-                                                       FunctorType::PATCH_SIZE,
-                                                       FunctorType::POSE_SIZE,
-                                                       FunctorType::POSE_SIZE,
-                                                       FunctorType::POINT_SIZE>(
-          intensities_host, bearings_host, image_target, intrinsics);
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-
-BENCHMARK_TEMPLATE(BM_PhotometricAutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_PhotometricAutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-template <Dynamic kIsDynamic>
-static void BM_RelativePoseAutoDiff(benchmark::State& state) {
-  using FunctorType = RelativePoseError;
-
-  double parameter_block1[] = {1., 2., 3., 4., 5., 6., 7.};
-  double parameter_block2[] = {1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1};
-  double* parameters[] = {parameter_block1, parameter_block2};
-
-  Eigen::Map<Eigen::Quaterniond>(parameter_block1).normalize();
-  Eigen::Map<Eigen::Quaterniond>(parameter_block2).normalize();
-
-  double jacobian1[6 * 7];
-  double jacobian2[6 * 7];
-  double residuals[6];
-  double* jacobians[] = {jacobian1, jacobian2};
-
-  Eigen::Quaterniond q_i_j = Eigen::Quaterniond(1, 2, 3, 4).normalized();
-  Eigen::Vector3d t_i_j(1, 2, 3);
-
-  std::unique_ptr<ceres::CostFunction> cost_function =
-      CostFunctionFactory<kIsDynamic>::template Create<FunctorType, 6, 7, 7>(
-          q_i_j, t_i_j);
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-
-BENCHMARK_TEMPLATE(BM_RelativePoseAutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_RelativePoseAutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-template <Dynamic kIsDynamic>
-static void BM_BrdfAutoDiff(benchmark::State& state) {
-  using FunctorType = Brdf;
-
-  double material[] = {1., 2., 3., 4., 5., 6., 7., 8., 9., 10.};
-  auto c = Eigen::Vector3d(0.1, 0.2, 0.3);
-  auto n = Eigen::Vector3d(-0.1, 0.5, 0.2).normalized();
-  auto v = Eigen::Vector3d(0.5, -0.2, 0.9).normalized();
-  auto l = Eigen::Vector3d(-0.3, 0.4, -0.3).normalized();
-  auto x = Eigen::Vector3d(0.5, 0.7, -0.1).normalized();
-  auto y = Eigen::Vector3d(0.2, -0.2, -0.2).normalized();
-
-  double* parameters[7] = {
-      material, c.data(), n.data(), v.data(), l.data(), x.data(), y.data()};
-
-  double jacobian[(10 + 6 * 3) * 3];
-  double residuals[3];
-  // clang-format off
-  double* jacobians[7] = {
-      jacobian + 0,      jacobian + 10 * 3, jacobian + 13 * 3,
-      jacobian + 16 * 3, jacobian + 19 * 3, jacobian + 22 * 3,
-      jacobian + 25 * 3,
-  };
-  // clang-format on
-
-  std::unique_ptr<ceres::CostFunction> cost_function = CostFunctionFactory<
-      kIsDynamic>::template Create<FunctorType, 3, 10, 3, 3, 3, 3, 3, 3>();
-
-  for (auto _ : state) {
-    cost_function->Evaluate(
-        parameters, residuals, state.range(0) ? jacobians : nullptr);
-  }
-}
-
-BENCHMARK_TEMPLATE(BM_BrdfAutoDiff, kNotDynamic)->Arg(0)->Arg(1);
-BENCHMARK_TEMPLATE(BM_BrdfAutoDiff, kDynamic)->Arg(0)->Arg(1);
-
-}  // namespace ceres
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/brdf_cost_function.h b/third_party/ceres/internal/ceres/autodiff_benchmarks/brdf_cost_function.h
deleted file mode 100644
index 41cfcfa..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/brdf_cost_function.h
+++ /dev/null
@@ -1,223 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-//
-#ifndef CERES_INTERNAL_AUTODIFF_BENCHMARK_BRDF_COST_FUNCTION_H_
-#define CERES_INTERNAL_AUTODIFF_BENCHMARK_BRDF_COST_FUNCTION_H_
-
-#include <Eigen/Core>
-#include <cmath>
-
-#include "ceres/constants.h"
-
-namespace ceres {
-
-// The brdf is based on:
-// Burley, Brent, and Walt Disney Animation Studios. "Physically-based shading
-// at disney." ACM SIGGRAPH. Vol. 2012. 2012.
-//
-// The implementation is based on:
-// https://github.com/wdas/brdf/blob/master/src/brdfs/disney.brdf
-struct Brdf {
- public:
-  template <typename T>
-  inline bool operator()(const T* const material,
-                         const T* const c_ptr,
-                         const T* const n_ptr,
-                         const T* const v_ptr,
-                         const T* const l_ptr,
-                         const T* const x_ptr,
-                         const T* const y_ptr,
-                         T* residual) const {
-    using Vec3 = Eigen::Matrix<T, 3, 1>;
-
-    T metallic = material[0];
-    T subsurface = material[1];
-    T specular = material[2];
-    T roughness = material[3];
-    T specular_tint = material[4];
-    T anisotropic = material[5];
-    T sheen = material[6];
-    T sheen_tint = material[7];
-    T clearcoat = material[8];
-    T clearcoat_gloss = material[9];
-
-    Eigen::Map<const Vec3> c(c_ptr);
-    Eigen::Map<const Vec3> n(n_ptr);
-    Eigen::Map<const Vec3> v(v_ptr);
-    Eigen::Map<const Vec3> l(l_ptr);
-    Eigen::Map<const Vec3> x(x_ptr);
-    Eigen::Map<const Vec3> y(y_ptr);
-
-    const T n_dot_l = n.dot(l);
-    const T n_dot_v = n.dot(v);
-
-    const Vec3 l_p_v = l + v;
-    const Vec3 h = l_p_v / l_p_v.norm();
-
-    const T n_dot_h = n.dot(h);
-    const T l_dot_h = l.dot(h);
-
-    const T h_dot_x = h.dot(x);
-    const T h_dot_y = h.dot(y);
-
-    const T c_dlum = T(0.3) * c[0] + T(0.6) * c[1] + T(0.1) * c[2];
-
-    const Vec3 c_tint = c / c_dlum;
-
-    const Vec3 c_spec0 =
-        Lerp(specular * T(0.08) *
-                 Lerp(Vec3(T(1), T(1), T(1)), c_tint, specular_tint),
-             c,
-             metallic);
-    const Vec3 c_sheen = Lerp(Vec3(T(1), T(1), T(1)), c_tint, sheen_tint);
-
-    // Diffuse fresnel - go from 1 at normal incidence to .5 at grazing
-    // and mix in diffuse retro-reflection based on roughness
-    const T fl = SchlickFresnel(n_dot_l);
-    const T fv = SchlickFresnel(n_dot_v);
-    const T fd_90 = T(0.5) + T(2) * l_dot_h * l_dot_h * roughness;
-    const T fd = Lerp(T(1), fd_90, fl) * Lerp(T(1), fd_90, fv);
-
-    // Based on Hanrahan-Krueger brdf approximation of isotropic bssrdf
-    // 1.25 scale is used to (roughly) preserve albedo
-    // Fss90 used to "flatten" retroreflection based on roughness
-    const T fss_90 = l_dot_h * l_dot_h * roughness;
-    const T fss = Lerp(T(1), fss_90, fl) * Lerp(T(1), fss_90, fv);
-    const T ss =
-        T(1.25) * (fss * (T(1) / (n_dot_l + n_dot_v) - T(0.5)) + T(0.5));
-
-    // specular
-    const T eps = T(0.001);
-    const T aspct = Aspect(anisotropic);
-    const T ax_temp = Square(roughness) / aspct;
-    const T ay_temp = Square(roughness) * aspct;
-    const T ax = (ax_temp < eps ? eps : ax_temp);
-    const T ay = (ay_temp < eps ? eps : ay_temp);
-    const T ds = GTR2Aniso(n_dot_h, h_dot_x, h_dot_y, ax, ay);
-    const T fh = SchlickFresnel(l_dot_h);
-    const Vec3 fs = Lerp(c_spec0, Vec3(T(1), T(1), T(1)), fh);
-    const T roughg = Square(roughness * T(0.5) + T(0.5));
-    const T ggxn_dot_l = SmithG_GGX(n_dot_l, roughg);
-    const T ggxn_dot_v = SmithG_GGX(n_dot_v, roughg);
-    const T gs = ggxn_dot_l * ggxn_dot_v;
-
-    // sheen
-    const Vec3 f_sheen = fh * sheen * c_sheen;
-
-    // clearcoat (ior = 1.5 -> F0 = 0.04)
-    const T a = Lerp(T(0.1), T(0.001), clearcoat_gloss);
-    const T dr = GTR1(n_dot_h, a);
-    const T fr = Lerp(T(0.04), T(1), fh);
-    const T cggxn_dot_l = SmithG_GGX(n_dot_l, T(0.25));
-    const T cggxn_dot_v = SmithG_GGX(n_dot_v, T(0.25));
-    const T gr = cggxn_dot_l * cggxn_dot_v;
-
-    const Vec3 result_no_cosine =
-        (T(1.0 / constants::pi) * Lerp(fd, ss, subsurface) * c + f_sheen) *
-            (T(1) - metallic) +
-        gs * fs * ds +
-        Vec3(T(0.25), T(0.25), T(0.25)) * clearcoat * gr * fr * dr;
-    const Vec3 result = n_dot_l * result_no_cosine;
-    residual[0] = result(0);
-    residual[1] = result(1);
-    residual[2] = result(2);
-
-    return true;
-  }
-
-  template <typename T>
-  inline T SchlickFresnel(const T& u) const {
-    T m = T(1) - u;
-    const T m2 = m * m;
-    return m2 * m2 * m;  // (1-u)^5
-  }
-
-  template <typename T>
-  inline T Aspect(const T& anisotropic) const {
-    return T(sqrt(T(1) - anisotropic * T(0.9)));
-  }
-
-  template <typename T>
-  inline T SmithG_GGX(const T& n_dot_v, const T& alpha_g) const {
-    const T a = alpha_g * alpha_g;
-    const T b = n_dot_v * n_dot_v;
-    return T(1) / (n_dot_v + T(sqrt(a + b - a * b)));
-  }
-
-  // Generalized-Trowbridge-Reitz (GTR) Microfacet Distribution
-  // See paper, Appendix B
-  template <typename T>
-  inline T GTR1(const T& n_dot_h, const T& a) const {
-    T result = T(0);
-
-    if (a >= T(1)) {
-      result = T(1 / constants::pi);
-    } else {
-      const T a2 = a * a;
-      const T t = T(1) + (a2 - T(1)) * n_dot_h * n_dot_h;
-      result = (a2 - T(1)) / (T(constants::pi) * T(log(a2) * t));
-    }
-    return result;
-  }
-
-  template <typename T>
-  inline T GTR2Aniso(const T& n_dot_h,
-                     const T& h_dot_x,
-                     const T& h_dot_y,
-                     const T& ax,
-                     const T& ay) const {
-    return T(1) / (T(constants::pi) * ax * ay *
-                   Square(Square(h_dot_x / ax) + Square(h_dot_y / ay) +
-                          n_dot_h * n_dot_h));
-  }
-
-  template <typename T>
-  inline T Lerp(const T& a, const T& b, const T& u) const {
-    return a + u * (b - a);
-  }
-
-  template <typename Derived1, typename Derived2>
-  inline typename Derived1::PlainObject Lerp(
-      const Eigen::MatrixBase<Derived1>& a,
-      const Eigen::MatrixBase<Derived2>& b,
-      typename Derived1::Scalar alpha) const {
-    return (typename Derived1::Scalar(1) - alpha) * a + alpha * b;
-  }
-
-  template <typename T>
-  inline T Square(const T& x) const {
-    return x * x;
-  }
-};
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_AUTODIFF_BENCHMARK_BRDF_COST_FUNCTION_H_
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/constant_cost_function.h b/third_party/ceres/internal/ceres/autodiff_benchmarks/constant_cost_function.h
deleted file mode 100644
index 2bbe4cb..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/constant_cost_function.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-//
-#ifndef CERES_INTERNAL_AUTODIFF_BENCHMARKS_CONSTANT_COST_FUNCTIONS_H_
-#define CERES_INTERNAL_AUTODIFF_BENCHMARKS_CONSTANT_COST_FUNCTIONS_H_
-
-#include "ceres/sized_cost_function.h"
-
-namespace ceres {
-
-template <int kParameterBlockSize>
-struct ConstantCostFunction {
-  template <typename T>
-  inline bool operator()(const T* const x, T* residuals) const {
-    residuals[0] = T(5);
-    return true;
-  }
-};
-
-template <int kParameterBlockSize>
-struct AnalyticConstantCostFunction
-    : public ceres::SizedCostFunction<1, kParameterBlockSize> {
-  virtual bool Evaluate(double const* const* parameters,
-                        double* residuals,
-                        double** jacobians) const {
-    residuals[0] = 5.0;
-    if (jacobians) {
-      if (jacobians[0]) {
-        memset(jacobians[0], 0, sizeof(double) * kParameterBlockSize);
-      }
-    }
-    return true;
-  }
-};
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_AUTODIFF_BENCHMARKS_CONSTANT_COST_FUNCTIONS_H_
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/linear_cost_functions.h b/third_party/ceres/internal/ceres/autodiff_benchmarks/linear_cost_functions.h
deleted file mode 100644
index 2f2552f..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/linear_cost_functions.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-//
-#ifndef CERES_INTERNAL_AUTODIFF_BENCHMARKS_LINEAR_COST_FUNCTIONS_H_
-#define CERES_INTERNAL_AUTODIFF_BENCHMARKS_LINEAR_COST_FUNCTIONS_H_
-
-#include "ceres/rotation.h"
-
-namespace ceres {
-
-struct Linear1CostFunction {
-  template <typename T>
-  inline bool operator()(const T* const x, T* residuals) const {
-    residuals[0] = x[0] + T(10);
-    return true;
-  }
-};
-
-struct Linear10CostFunction {
-  template <typename T>
-  inline bool operator()(const T* const x, T* residuals) const {
-    for (int i = 0; i < 10; ++i) {
-      residuals[i] = x[i] + T(i);
-    }
-    return true;
-  }
-};
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_AUTODIFF_BENCHMARKS_LINEAR_COST_FUNCTIONS_H_
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/photometric_error.h b/third_party/ceres/internal/ceres/autodiff_benchmarks/photometric_error.h
deleted file mode 100644
index 8ed278d..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/photometric_error.h
+++ /dev/null
@@ -1,191 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: nikolaus@nikolaus-demmel.de (Nikolaus Demmel)
-//
-//
-#ifndef CERES_INTERNAL_AUTODIFF_BENCHMARK_PHOTOMETRIC_ERROR_H_
-#define CERES_INTERNAL_AUTODIFF_BENCHMARK_PHOTOMETRIC_ERROR_H_
-
-#include <Eigen/Dense>
-
-#include "ceres/cubic_interpolation.h"
-
-namespace ceres {
-
-// Photometric residual that computes the intensity difference for a patch
-// between host and target frame. The point is parameterized with inverse
-// distance relative to the host frame. The relative pose between host and
-// target frame is computed from their respective absolute poses.
-//
-// The residual is similar to the one defined by Engel et al. [1]. Differences
-// include:
-//
-// 1. Use of a camera model based on spherical projection, namely the enhanced
-// unified camera model [2][3]. This is intended to bring some variability to
-// the benchmark compared to the SnavelyReprojection that uses a
-// polynomial-based distortion model.
-//
-// 2. To match the camera model, inverse distance parameterization is used for
-// points instead of inverse depth [4].
-//
-// 3. For simplicity, camera intrinsics are assumed constant, and thus host
-// frame points are passed as (unprojected) bearing vectors, which avoids the
-// need for an 'unproject' function.
-//
-// 4. Some details of the residual in [1] are omitted for simplicity: The
-// brightness transform parameters [a,b], the constant pre-weight w, and the
-// per-pixel robust norm.
-//
-// [1] J. Engel, V. Koltun and D. Cremers, "Direct Sparse Odometry," in IEEE
-// Transactions on Pattern Analysis and Machine Intelligence, vol. 40, no. 3,
-// pp. 611-625, 1 March 2018.
-//
-// [2] B. Khomutenko, G. Garcia and P. Martinet, "An Enhanced Unified Camera
-// Model," in IEEE Robotics and Automation Letters, vol. 1, no. 1, pp. 137-144,
-// Jan. 2016.
-//
-// [3] V. Usenko, N. Demmel and D. Cremers, "The Double Sphere Camera Model,"
-// 2018 International Conference on 3D Vision (3DV), Verona, 2018, pp. 552-560.
-//
-// [4] H. Matsuki, L. von Stumberg, V. Usenko, J. Stückler and D. Cremers,
-// "Omnidirectional DSO: Direct Sparse Odometry With Fisheye Cameras," in IEEE
-// Robotics and Automation Letters, vol. 3, no. 4, pp. 3693-3700, Oct. 2018.
-template <int PATCH_SIZE_ = 8>
-struct PhotometricError {
-  static constexpr int PATCH_SIZE = PATCH_SIZE_;
-  static constexpr int POSE_SIZE = 7;
-  static constexpr int POINT_SIZE = 1;
-
-  using Grid = Grid2D<uint8_t, 1>;
-  using Interpolator = BiCubicInterpolator<Grid>;
-  using Intrinsics = Eigen::Array<double, 6, 1>;
-
-  template <typename T>
-  using Patch = Eigen::Array<T, PATCH_SIZE, 1>;
-
-  template <typename T>
-  using PatchVectors = Eigen::Matrix<T, 3, PATCH_SIZE>;
-
-  PhotometricError(const Patch<double>& intensities_host,
-                   const PatchVectors<double>& bearings_host,
-                   const Interpolator& image_target,
-                   const Intrinsics& intrinsics)
-      : intensities_host_(intensities_host),
-        bearings_host_(bearings_host),
-        image_target_(image_target),
-        intrinsics_(intrinsics) {}
-
-  template <typename T>
-  inline bool Project(Eigen::Matrix<T, 2, 1>& proj,
-                      const Eigen::Matrix<T, 3, 1>& p) const {
-    const double& fx = intrinsics_[0];
-    const double& fy = intrinsics_[1];
-    const double& cx = intrinsics_[2];
-    const double& cy = intrinsics_[3];
-    const double& alpha = intrinsics_[4];
-    const double& beta = intrinsics_[5];
-
-    const T rho2 = beta * (p.x() * p.x() + p.y() * p.y()) + p.z() * p.z();
-    const T rho = sqrt(rho2);
-
-    // Check if 3D point is in domain of projection function.
-    // See (8) and (17) in [3].
-    constexpr double NUMERIC_EPSILON = 1e-10;
-    const double w =
-        alpha > 0.5 ? (1.0 - alpha) / alpha : alpha / (1.0 - alpha);
-    if (p.z() <= -w * rho + NUMERIC_EPSILON) {
-      return false;
-    }
-
-    const T norm = alpha * rho + (1.0 - alpha) * p.z();
-    const T norm_inv = 1.0 / norm;
-
-    const T mx = p.x() * norm_inv;
-    const T my = p.y() * norm_inv;
-
-    proj[0] = fx * mx + cx;
-    proj[1] = fy * my + cy;
-
-    return true;
-  }
-
-  template <typename T>
-  inline bool operator()(const T* const pose_host_ptr,
-                         const T* const pose_target_ptr,
-                         const T* const idist_ptr,
-                         T* residuals_ptr) const {
-    Eigen::Map<const Eigen::Quaternion<T>> q_w_h(pose_host_ptr);
-    Eigen::Map<const Eigen::Matrix<T, 3, 1>> t_w_h(pose_host_ptr + 4);
-    Eigen::Map<const Eigen::Quaternion<T>> q_w_t(pose_target_ptr);
-    Eigen::Map<const Eigen::Matrix<T, 3, 1>> t_w_t(pose_target_ptr + 4);
-    const T& idist = *idist_ptr;
-    Eigen::Map<Patch<T>> residuals(residuals_ptr);
-
-    // Compute relative pose from host to target frame.
-    const Eigen::Quaternion<T> q_t_h = q_w_t.conjugate() * q_w_h;
-    const Eigen::Matrix<T, 3, 3> R_t_h = q_t_h.toRotationMatrix();
-    const Eigen::Matrix<T, 3, 1> t_t_h = q_w_t.conjugate() * (t_w_h - t_w_t);
-
-    // Transform points from host to target frame. 3D point in target frame is
-    // scaled by idist for numerical stability when idist is close to 0
-    // (projection is invariant to scaling).
-    PatchVectors<T> p_target_scaled =
-        (R_t_h * bearings_host_).colwise() + idist * t_t_h;
-
-    // Project points and interpolate image.
-    Patch<T> intensities_target;
-    for (int i = 0; i < p_target_scaled.cols(); ++i) {
-      Eigen::Matrix<T, 2, 1> uv;
-      if (!Project(uv, Eigen::Matrix<T, 3, 1>(p_target_scaled.col(i)))) {
-        // If any point of the patch is outside the domain of the projection
-        // function, the residual cannot be evaluated. For the benchmark we want
-        // to avoid this case and thus throw an exception to indicate
-        // immediately if it does actually happen after possible future changes.
-        throw std::runtime_error("Benchmark data leads to invalid projection.");
-      }
-
-      // Mind the order of u and v: Evaluate takes (row, column), but u is
-      // left-to-right and v top-to-bottom image axis.
-      image_target_.Evaluate(uv[1], uv[0], &intensities_target[i]);
-    }
-
-    // Residual is intensity difference between host and target frame.
-    residuals = intensities_target - intensities_host_;
-
-    return true;
-  }
-
- private:
-  const Patch<double>& intensities_host_;
-  const PatchVectors<double>& bearings_host_;
-  const Interpolator& image_target_;
-  const Intrinsics& intrinsics_;
-};
-}  // namespace ceres
-#endif  // CERES_INTERNAL_AUTODIFF_BENCHMARK_PHOTOMETRIC_ERROR_H_
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/relative_pose_error.h b/third_party/ceres/internal/ceres/autodiff_benchmarks/relative_pose_error.h
deleted file mode 100644
index a54a92f..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/relative_pose_error.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: nikolaus@nikolaus-demmel.de (Nikolaus Demmel)
-//
-//
-#ifndef CERES_INTERNAL_AUTODIFF_BENCHMARK_RELATIVE_POSE_ERROR_H_
-#define CERES_INTERNAL_AUTODIFF_BENCHMARK_RELATIVE_POSE_ERROR_H_
-
-#include <Eigen/Dense>
-#include <utility>
-
-#include "ceres/rotation.h"
-
-namespace ceres {
-
-// Relative pose error as one might use in SE(3) pose graph optimization.
-// The measurement is a relative pose T_i_j, and the parameters are absolute
-// poses T_w_i and T_w_j. For the residual we use the log of the the residual
-// pose, in split representation SO(3) x R^3.
-struct RelativePoseError {
-  RelativePoseError(Eigen::Quaterniond q_i_j, Eigen::Vector3d t_i_j)
-      : meas_q_i_j_(std::move(q_i_j)), meas_t_i_j_(std::move(t_i_j)) {}
-
-  template <typename T>
-  inline bool operator()(const T* const pose_i_ptr,
-                         const T* const pose_j_ptr,
-                         T* residuals_ptr) const {
-    Eigen::Map<const Eigen::Quaternion<T>> q_w_i(pose_i_ptr);
-    Eigen::Map<const Eigen::Matrix<T, 3, 1>> t_w_i(pose_i_ptr + 4);
-    Eigen::Map<const Eigen::Quaternion<T>> q_w_j(pose_j_ptr);
-    Eigen::Map<const Eigen::Matrix<T, 3, 1>> t_w_j(pose_j_ptr + 4);
-    Eigen::Map<Eigen::Matrix<T, 6, 1>> residuals(residuals_ptr);
-
-    // Compute estimate of relative pose from i to j.
-    const Eigen::Quaternion<T> est_q_j_i = q_w_j.conjugate() * q_w_i;
-    const Eigen::Matrix<T, 3, 1> est_t_j_i =
-        q_w_j.conjugate() * (t_w_i - t_w_j);
-
-    // Compute residual pose.
-    const Eigen::Quaternion<T> res_q = meas_q_i_j_.cast<T>() * est_q_j_i;
-    const Eigen::Matrix<T, 3, 1> res_t =
-        meas_q_i_j_.cast<T>() * est_t_j_i + meas_t_i_j_;
-
-    // Convert quaternion to ceres convention (Eigen stores xyzw, Ceres wxyz).
-    Eigen::Matrix<T, 4, 1> res_q_ceres;
-    res_q_ceres << res_q.w(), res_q.vec();
-
-    // Residual is log of pose. Use split representation SO(3) x R^3.
-    QuaternionToAngleAxis(res_q_ceres.data(), residuals.data());
-    residuals.template bottomRows<3>() = res_t;
-
-    return true;
-  }
-
- private:
-  // Measurement of relative pose from j to i.
-  Eigen::Quaterniond meas_q_i_j_;
-  Eigen::Vector3d meas_t_i_j_;
-};
-}  // namespace ceres
-#endif  // CERES_INTERNAL_AUTODIFF_BENCHMARK_RELATIVE_POSE_ERROR_H_
diff --git a/third_party/ceres/internal/ceres/autodiff_benchmarks/snavely_reprojection_error.h b/third_party/ceres/internal/ceres/autodiff_benchmarks/snavely_reprojection_error.h
deleted file mode 100644
index 439ee9b..0000000
--- a/third_party/ceres/internal/ceres/autodiff_benchmarks/snavely_reprojection_error.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2020 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-//
-#ifndef CERES_INTERNAL_AUTODIFF_BENCHMARK_SNAVELY_REPROJECTION_ERROR_H_
-#define CERES_INTERNAL_AUTODIFF_BENCHMARK_SNAVELY_REPROJECTION_ERROR_H_
-
-#include "ceres/rotation.h"
-
-namespace ceres {
-
-struct SnavelyReprojectionError {
-  SnavelyReprojectionError(double observed_x, double observed_y)
-      : observed_x(observed_x), observed_y(observed_y) {}
-
-  template <typename T>
-  inline bool operator()(const T* const camera,
-                         const T* const point,
-                         T* residuals) const {
-    T ox = T(observed_x);
-    T oy = T(observed_y);
-
-    // camera[0,1,2] are the angle-axis rotation.
-    T p[3];
-    ceres::AngleAxisRotatePoint(camera, point, p);
-
-    // camera[3,4,5] are the translation.
-    p[0] += camera[3];
-    p[1] += camera[4];
-    p[2] += camera[5];
-
-    // Compute the center of distortion. The sign change comes from
-    // the camera model that Noah Snavely's Bundler assumes, whereby
-    // the camera coordinate system has a negative z axis.
-    const T xp = -p[0] / p[2];
-    const T yp = -p[1] / p[2];
-
-    // Apply second and fourth order radial distortion.
-    const T& l1 = camera[7];
-    const T& l2 = camera[8];
-    const T r2 = xp * xp + yp * yp;
-    const T distortion = T(1.0) + r2 * (l1 + l2 * r2);
-
-    // Compute final projected point position.
-    const T& focal = camera[6];
-    const T predicted_x = focal * distortion * xp;
-    const T predicted_y = focal * distortion * yp;
-
-    // The error is the difference between the predicted and observed position.
-    residuals[0] = predicted_x - ox;
-    residuals[1] = predicted_y - oy;
-
-    return true;
-  }
-  double observed_x;
-  double observed_y;
-};
-}  // namespace ceres
-#endif  // CERES_INTERNAL_AUTODIFF_BENCHMARK_SNAVELY_REPROJECTION_ERROR_H_
diff --git a/third_party/ceres/internal/ceres/autodiff_cost_function_test.cc b/third_party/ceres/internal/ceres/autodiff_cost_function_test.cc
deleted file mode 100644
index dca67ba..0000000
--- a/third_party/ceres/internal/ceres/autodiff_cost_function_test.cc
+++ /dev/null
@@ -1,201 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/autodiff_cost_function.h"
-
-#include <memory>
-
-#include "ceres/array_utils.h"
-#include "ceres/cost_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class BinaryScalarCost {
- public:
-  explicit BinaryScalarCost(double a) : a_(a) {}
-  template <typename T>
-  bool operator()(const T* const x, const T* const y, T* cost) const {
-    cost[0] = x[0] * y[0] + x[1] * y[1] - T(a_);
-    return true;
-  }
-
- private:
-  double a_;
-};
-
-TEST(AutodiffCostFunction, BilinearDifferentiationTest) {
-  CostFunction* cost_function =
-      new AutoDiffCostFunction<BinaryScalarCost, 1, 2, 2>(
-          new BinaryScalarCost(1.0));
-
-  auto** parameters = new double*[2];
-  parameters[0] = new double[2];
-  parameters[1] = new double[2];
-
-  parameters[0][0] = 1;
-  parameters[0][1] = 2;
-
-  parameters[1][0] = 3;
-  parameters[1][1] = 4;
-
-  auto** jacobians = new double*[2];
-  jacobians[0] = new double[2];
-  jacobians[1] = new double[2];
-
-  double residuals = 0.0;
-
-  cost_function->Evaluate(parameters, &residuals, nullptr);
-  EXPECT_EQ(10.0, residuals);
-
-  cost_function->Evaluate(parameters, &residuals, jacobians);
-  EXPECT_EQ(10.0, residuals);
-
-  EXPECT_EQ(3, jacobians[0][0]);
-  EXPECT_EQ(4, jacobians[0][1]);
-  EXPECT_EQ(1, jacobians[1][0]);
-  EXPECT_EQ(2, jacobians[1][1]);
-
-  delete[] jacobians[0];
-  delete[] jacobians[1];
-  delete[] parameters[0];
-  delete[] parameters[1];
-  delete[] jacobians;
-  delete[] parameters;
-  delete cost_function;
-}
-
-struct TenParameterCost {
-  template <typename T>
-  bool operator()(const T* const x0,
-                  const T* const x1,
-                  const T* const x2,
-                  const T* const x3,
-                  const T* const x4,
-                  const T* const x5,
-                  const T* const x6,
-                  const T* const x7,
-                  const T* const x8,
-                  const T* const x9,
-                  T* cost) const {
-    cost[0] = *x0 + *x1 + *x2 + *x3 + *x4 + *x5 + *x6 + *x7 + *x8 + *x9;
-    return true;
-  }
-};
-
-TEST(AutodiffCostFunction, ManyParameterAutodiffInstantiates) {
-  CostFunction* cost_function =
-      new AutoDiffCostFunction<TenParameterCost,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1,
-                               1>(new TenParameterCost);
-
-  auto** parameters = new double*[10];
-  auto** jacobians = new double*[10];
-  for (int i = 0; i < 10; ++i) {
-    parameters[i] = new double[1];
-    parameters[i][0] = i;
-    jacobians[i] = new double[1];
-  }
-
-  double residuals = 0.0;
-
-  cost_function->Evaluate(parameters, &residuals, nullptr);
-  EXPECT_EQ(45.0, residuals);
-
-  cost_function->Evaluate(parameters, &residuals, jacobians);
-  EXPECT_EQ(residuals, 45.0);
-  for (int i = 0; i < 10; ++i) {
-    EXPECT_EQ(1.0, jacobians[i][0]);
-  }
-
-  for (int i = 0; i < 10; ++i) {
-    delete[] jacobians[i];
-    delete[] parameters[i];
-  }
-  delete[] jacobians;
-  delete[] parameters;
-  delete cost_function;
-}
-
-struct OnlyFillsOneOutputFunctor {
-  template <typename T>
-  bool operator()(const T* x, T* output) const {
-    output[0] = x[0];
-    return true;
-  }
-};
-
-TEST(AutoDiffCostFunction, PartiallyFilledResidualShouldFailEvaluation) {
-  double parameter = 1.0;
-  double jacobian[2];
-  double residuals[2];
-  double* parameters[] = {&parameter};
-  double* jacobians[] = {jacobian};
-
-  std::unique_ptr<CostFunction> cost_function(
-      new AutoDiffCostFunction<OnlyFillsOneOutputFunctor, 2, 1>(
-          new OnlyFillsOneOutputFunctor));
-  InvalidateArray(2, jacobian);
-  InvalidateArray(2, residuals);
-  EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, jacobians));
-  EXPECT_FALSE(IsArrayValid(2, jacobian));
-  EXPECT_FALSE(IsArrayValid(2, residuals));
-}
-
-TEST(AutodiffCostFunction, ArgumentForwarding) {
-  // No narrowing conversion warning should be emitted
-  auto cost_function1 =
-      std::make_unique<AutoDiffCostFunction<BinaryScalarCost, 1, 2, 2>>(1);
-  auto cost_function2 =
-      std::make_unique<AutoDiffCostFunction<BinaryScalarCost, 1, 2, 2>>(2.0);
-  // Default constructible functor
-  auto cost_function3 =
-      std::make_unique<AutoDiffCostFunction<OnlyFillsOneOutputFunctor, 1, 1>>();
-}
-
-TEST(AutodiffCostFunction, UniquePtrCtor) {
-  auto cost_function1 =
-      std::make_unique<AutoDiffCostFunction<BinaryScalarCost, 1, 2, 2>>(
-          std::make_unique<BinaryScalarCost>(1));
-  auto cost_function2 =
-      std::make_unique<AutoDiffCostFunction<BinaryScalarCost, 1, 2, 2>>(
-          std::make_unique<BinaryScalarCost>(2.0));
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/autodiff_first_order_function_test.cc b/third_party/ceres/internal/ceres/autodiff_first_order_function_test.cc
deleted file mode 100644
index e663f13..0000000
--- a/third_party/ceres/internal/ceres/autodiff_first_order_function_test.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/autodiff_first_order_function.h"
-
-#include <memory>
-
-#include "ceres/array_utils.h"
-#include "ceres/first_order_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-class QuadraticCostFunctor {
- public:
-  explicit QuadraticCostFunctor(double a) : a_(a) {}
-  template <typename T>
-  bool operator()(const T* const x, T* cost) const {
-    cost[0] = x[0] * x[1] + x[2] * x[3] - a_;
-    return true;
-  }
-
- private:
-  double a_;
-};
-
-TEST(AutoDiffFirstOrderFunction, BilinearDifferentiationTest) {
-  std::unique_ptr<FirstOrderFunction> function(
-      new AutoDiffFirstOrderFunction<QuadraticCostFunctor, 4>(
-          new QuadraticCostFunctor(1.0)));
-
-  double parameters[4] = {1.0, 2.0, 3.0, 4.0};
-  double gradient[4];
-  double cost;
-
-  function->Evaluate(parameters, &cost, nullptr);
-  EXPECT_EQ(cost, 13.0);
-
-  cost = -1.0;
-  function->Evaluate(parameters, &cost, gradient);
-  EXPECT_EQ(cost, 13.0);
-  EXPECT_EQ(gradient[0], parameters[1]);
-  EXPECT_EQ(gradient[1], parameters[0]);
-  EXPECT_EQ(gradient[2], parameters[3]);
-  EXPECT_EQ(gradient[3], parameters[2]);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/autodiff_manifold_test.cc b/third_party/ceres/internal/ceres/autodiff_manifold_test.cc
deleted file mode 100644
index c687719..0000000
--- a/third_party/ceres/internal/ceres/autodiff_manifold_test.cc
+++ /dev/null
@@ -1,295 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/autodiff_manifold.h"
-
-#include <cmath>
-
-#include "ceres/constants.h"
-#include "ceres/manifold.h"
-#include "ceres/manifold_test_utils.h"
-#include "ceres/rotation.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-namespace {
-
-constexpr int kNumTrials = 1000;
-constexpr double kTolerance = 1e-9;
-
-Vector RandomQuaternion() {
-  Vector x = Vector::Random(4);
-  x.normalize();
-  return x;
-}
-
-}  // namespace
-
-struct EuclideanFunctor {
-  template <typename T>
-  bool Plus(const T* x, const T* delta, T* x_plus_delta) const {
-    for (int i = 0; i < 3; ++i) {
-      x_plus_delta[i] = x[i] + delta[i];
-    }
-    return true;
-  }
-
-  template <typename T>
-  bool Minus(const T* y, const T* x, T* y_minus_x) const {
-    for (int i = 0; i < 3; ++i) {
-      y_minus_x[i] = y[i] - x[i];
-    }
-    return true;
-  }
-};
-
-TEST(AutoDiffLManifoldTest, EuclideanManifold) {
-  AutoDiffManifold<EuclideanFunctor, 3, 3> manifold;
-  EXPECT_EQ(manifold.AmbientSize(), 3);
-  EXPECT_EQ(manifold.TangentSize(), 3);
-
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    const Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-    Vector x_plus_delta = Vector::Zero(manifold.AmbientSize());
-
-    manifold.Plus(x.data(), delta.data(), x_plus_delta.data());
-    EXPECT_NEAR((x_plus_delta - x - delta).norm() / (x + delta).norm(),
-                0.0,
-                kTolerance);
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-struct ScaledFunctor {
-  explicit ScaledFunctor(const double s) : s(s) {}
-
-  template <typename T>
-  bool Plus(const T* x, const T* delta, T* x_plus_delta) const {
-    for (int i = 0; i < 3; ++i) {
-      x_plus_delta[i] = x[i] + s * delta[i];
-    }
-    return true;
-  }
-
-  template <typename T>
-  bool Minus(const T* y, const T* x, T* y_minus_x) const {
-    for (int i = 0; i < 3; ++i) {
-      y_minus_x[i] = (y[i] - x[i]) / s;
-    }
-    return true;
-  }
-
-  const double s;
-};
-
-TEST(AutoDiffManifoldTest, ScaledManifold) {
-  constexpr double kScale = 1.2342;
-  AutoDiffManifold<ScaledFunctor, 3, 3> manifold(new ScaledFunctor(kScale));
-  EXPECT_EQ(manifold.AmbientSize(), 3);
-  EXPECT_EQ(manifold.TangentSize(), 3);
-
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    const Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-    Vector x_plus_delta = Vector::Zero(manifold.AmbientSize());
-
-    manifold.Plus(x.data(), delta.data(), x_plus_delta.data());
-    EXPECT_NEAR((x_plus_delta - x - delta * kScale).norm() /
-                    (x + delta * kScale).norm(),
-                0.0,
-                kTolerance);
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-// Templated functor that implements the Plus and Minus operations on the
-// Quaternion manifold.
-struct QuaternionFunctor {
-  template <typename T>
-  bool Plus(const T* x, const T* delta, T* x_plus_delta) const {
-    const T squared_norm_delta =
-        delta[0] * delta[0] + delta[1] * delta[1] + delta[2] * delta[2];
-
-    T q_delta[4];
-    if (squared_norm_delta > T(0.0)) {
-      T norm_delta = sqrt(squared_norm_delta);
-      const T sin_delta_by_delta = sin(norm_delta) / norm_delta;
-      q_delta[0] = cos(norm_delta);
-      q_delta[1] = sin_delta_by_delta * delta[0];
-      q_delta[2] = sin_delta_by_delta * delta[1];
-      q_delta[3] = sin_delta_by_delta * delta[2];
-    } else {
-      // We do not just use q_delta = [1,0,0,0] here because that is a
-      // constant and when used for automatic differentiation will
-      // lead to a zero derivative. Instead we take a first order
-      // approximation and evaluate it at zero.
-      q_delta[0] = T(1.0);
-      q_delta[1] = delta[0];
-      q_delta[2] = delta[1];
-      q_delta[3] = delta[2];
-    }
-
-    QuaternionProduct(q_delta, x, x_plus_delta);
-    return true;
-  }
-
-  template <typename T>
-  bool Minus(const T* y, const T* x, T* y_minus_x) const {
-    T minus_x[4] = {x[0], -x[1], -x[2], -x[3]};
-    T ambient_y_minus_x[4];
-    QuaternionProduct(y, minus_x, ambient_y_minus_x);
-    T u_norm = sqrt(ambient_y_minus_x[1] * ambient_y_minus_x[1] +
-                    ambient_y_minus_x[2] * ambient_y_minus_x[2] +
-                    ambient_y_minus_x[3] * ambient_y_minus_x[3]);
-    if (u_norm > 0.0) {
-      T theta = atan2(u_norm, ambient_y_minus_x[0]);
-      y_minus_x[0] = theta * ambient_y_minus_x[1] / u_norm;
-      y_minus_x[1] = theta * ambient_y_minus_x[2] / u_norm;
-      y_minus_x[2] = theta * ambient_y_minus_x[3] / u_norm;
-    } else {
-      // We do not use [0,0,0] here because even though the value part is
-      // a constant, the derivative part is not.
-      y_minus_x[0] = ambient_y_minus_x[1];
-      y_minus_x[1] = ambient_y_minus_x[2];
-      y_minus_x[2] = ambient_y_minus_x[3];
-    }
-    return true;
-  }
-};
-
-TEST(AutoDiffManifoldTest, QuaternionPlusPiBy2) {
-  AutoDiffManifold<QuaternionFunctor, 4, 3> manifold;
-
-  Vector x = Vector::Zero(4);
-  x[0] = 1.0;
-
-  for (int i = 0; i < 3; ++i) {
-    Vector delta = Vector::Zero(3);
-    delta[i] = constants::pi / 2;
-    Vector x_plus_delta = Vector::Zero(4);
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), x_plus_delta.data()));
-
-    // Expect that the element corresponding to pi/2 is +/- 1. All other
-    // elements should be zero.
-    for (int j = 0; j < 4; ++j) {
-      if (i == (j - 1)) {
-        EXPECT_LT(std::abs(x_plus_delta[j]) - 1,
-                  std::numeric_limits<double>::epsilon())
-            << "\ndelta = " << delta.transpose()
-            << "\nx_plus_delta = " << x_plus_delta.transpose()
-            << "\n expected the " << j
-            << "th element of x_plus_delta to be +/- 1.";
-      } else {
-        EXPECT_LT(std::abs(x_plus_delta[j]),
-                  std::numeric_limits<double>::epsilon())
-            << "\ndelta = " << delta.transpose()
-            << "\nx_plus_delta = " << x_plus_delta.transpose()
-            << "\n expected the " << j << "th element of x_plus_delta to be 0.";
-      }
-    }
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(
-        manifold, x, delta, x_plus_delta, kTolerance);
-  }
-}
-
-// Compute the expected value of Quaternion::Plus via functions in rotation.h
-// and compares it to the one computed by Quaternion::Plus.
-MATCHER_P2(QuaternionPlusIsCorrectAt, x, delta, "") {
-  // This multiplication by 2 is needed because AngleAxisToQuaternion uses
-  // |delta|/2 as the angle of rotation where as in the implementation of
-  // Quaternion for historical reasons we use |delta|.
-  const Vector two_delta = delta * 2;
-  Vector delta_q(4);
-  AngleAxisToQuaternion(two_delta.data(), delta_q.data());
-
-  Vector expected(4);
-  QuaternionProduct(delta_q.data(), x.data(), expected.data());
-  Vector actual(4);
-  EXPECT_TRUE(arg.Plus(x.data(), delta.data(), actual.data()));
-
-  const double n = (actual - expected).norm();
-  const double d = expected.norm();
-  const double diffnorm = n / d;
-  if (diffnorm > kTolerance) {
-    *result_listener << "\nx: " << x.transpose()
-                     << "\ndelta: " << delta.transpose()
-                     << "\nexpected: " << expected.transpose()
-                     << "\nactual: " << actual.transpose()
-                     << "\ndiff: " << (expected - actual).transpose()
-                     << "\ndiffnorm : " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-TEST(AutoDiffManifoldTest, QuaternionGenericDelta) {
-  AutoDiffManifold<QuaternionFunctor, 4, 3> manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    EXPECT_THAT(manifold, QuaternionPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(AutoDiffManifoldTest, QuaternionSmallDelta) {
-  AutoDiffManifold<QuaternionFunctor, 4, 3> manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    delta.normalize();
-    delta *= 1e-6;
-    EXPECT_THAT(manifold, QuaternionPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(AutoDiffManifold, QuaternionDeltaJustBelowPi) {
-  AutoDiffManifold<QuaternionFunctor, 4, 3> manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    delta.normalize();
-    delta *= (constants::pi - 1e-6);
-    EXPECT_THAT(manifold, QuaternionPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/autodiff_test.cc b/third_party/ceres/internal/ceres/autodiff_test.cc
deleted file mode 100644
index 19adcae..0000000
--- a/third_party/ceres/internal/ceres/autodiff_test.cc
+++ /dev/null
@@ -1,682 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/internal/autodiff.h"
-
-#include <algorithm>
-#include <iterator>
-#include <random>
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-template <typename T>
-inline T& RowMajorAccess(T* base, int rows, int cols, int i, int j) {
-  return base[cols * i + j];
-}
-
-// Do (symmetric) finite differencing using the given function object 'b' of
-// type 'B' and scalar type 'T' with step size 'del'.
-//
-// The type B should have a signature
-//
-//   bool operator()(T const *, T *) const;
-//
-// which maps a vector of parameters to a vector of outputs.
-template <typename B, typename T, int M, int N>
-inline bool SymmetricDiff(const B& b,
-                          const T par[N],
-                          T del,  // step size.
-                          T fun[M],
-                          T jac[M * N]) {  // row-major.
-  if (!b(par, fun)) {
-    return false;
-  }
-
-  // Temporary parameter vector.
-  T tmp_par[N];
-  for (int j = 0; j < N; ++j) {
-    tmp_par[j] = par[j];
-  }
-
-  // For each dimension, we do one forward step and one backward step in
-  // parameter space, and store the output vector vectors in these vectors.
-  T fwd_fun[M];
-  T bwd_fun[M];
-
-  for (int j = 0; j < N; ++j) {
-    // Forward step.
-    tmp_par[j] = par[j] + del;
-    if (!b(tmp_par, fwd_fun)) {
-      return false;
-    }
-
-    // Backward step.
-    tmp_par[j] = par[j] - del;
-    if (!b(tmp_par, bwd_fun)) {
-      return false;
-    }
-
-    // Symmetric differencing:
-    //   f'(a) = (f(a + h) - f(a - h)) / (2 h)
-    for (int i = 0; i < M; ++i) {
-      RowMajorAccess(jac, M, N, i, j) =
-          (fwd_fun[i] - bwd_fun[i]) / (T(2) * del);
-    }
-
-    // Restore our temporary vector.
-    tmp_par[j] = par[j];
-  }
-
-  return true;
-}
-
-template <typename A>
-inline void QuaternionToScaledRotation(A const q[4], A R[3 * 3]) {
-  // Make convenient names for elements of q.
-  A a = q[0];
-  A b = q[1];
-  A c = q[2];
-  A d = q[3];
-  // This is not to eliminate common sub-expression, but to
-  // make the lines shorter so that they fit in 80 columns!
-  A aa = a * a;
-  A ab = a * b;
-  A ac = a * c;
-  A ad = a * d;
-  A bb = b * b;
-  A bc = b * c;
-  A bd = b * d;
-  A cc = c * c;
-  A cd = c * d;
-  A dd = d * d;
-#define R(i, j) RowMajorAccess(R, 3, 3, (i), (j))
-  R(0, 0) = aa + bb - cc - dd;
-  R(0, 1) = A(2) * (bc - ad);
-  R(0, 2) = A(2) * (ac + bd);  // NOLINT
-  R(1, 0) = A(2) * (ad + bc);
-  R(1, 1) = aa - bb + cc - dd;
-  R(1, 2) = A(2) * (cd - ab);  // NOLINT
-  R(2, 0) = A(2) * (bd - ac);
-  R(2, 1) = A(2) * (ab + cd);
-  R(2, 2) = aa - bb - cc + dd;  // NOLINT
-#undef R
-}
-
-// A structure for projecting a 3x4 camera matrix and a
-// homogeneous 3D point, to a 2D inhomogeneous point.
-struct Projective {
-  // Function that takes P and X as separate vectors:
-  //   P, X -> x
-  template <typename A>
-  bool operator()(A const P[12], A const X[4], A x[2]) const {
-    A PX[3];
-    for (int i = 0; i < 3; ++i) {
-      PX[i] = RowMajorAccess(P, 3, 4, i, 0) * X[0] +
-              RowMajorAccess(P, 3, 4, i, 1) * X[1] +
-              RowMajorAccess(P, 3, 4, i, 2) * X[2] +
-              RowMajorAccess(P, 3, 4, i, 3) * X[3];
-    }
-    if (PX[2] != 0.0) {
-      x[0] = PX[0] / PX[2];
-      x[1] = PX[1] / PX[2];
-      return true;
-    }
-    return false;
-  }
-
-  // Version that takes P and X packed in one vector:
-  //
-  //   (P, X) -> x
-  //
-  template <typename A>
-  bool operator()(A const P_X[12 + 4], A x[2]) const {
-    return operator()(P_X + 0, P_X + 12, x);
-  }
-};
-
-// Test projective camera model projector.
-TEST(AutoDiff, ProjectiveCameraModel) {
-  double const tol = 1e-10;  // floating-point tolerance.
-  double const del = 1e-4;   // finite-difference step.
-  double const err = 1e-6;   // finite-difference tolerance.
-
-  Projective b;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-
-  // Make random P and X, in a single vector.
-  double PX[12 + 4];
-  std::generate(std::begin(PX), std::end(PX), [&prng, &uniform01] {
-    return uniform01(prng);
-  });
-
-  // Handy names for the P and X parts.
-  double* P = PX + 0;
-  double* X = PX + 12;
-
-  // Apply the mapping, to get image point b_x.
-  double b_x[2];
-  b(P, X, b_x);
-
-  // Use finite differencing to estimate the Jacobian.
-  double fd_x[2];
-  double fd_J[2 * (12 + 4)];
-  ASSERT_TRUE(
-      (SymmetricDiff<Projective, double, 2, 12 + 4>(b, PX, del, fd_x, fd_J)));
-
-  for (int i = 0; i < 2; ++i) {
-    ASSERT_NEAR(fd_x[i], b_x[i], tol);
-  }
-
-  // Use automatic differentiation to compute the Jacobian.
-  double ad_x1[2];
-  double J_PX[2 * (12 + 4)];
-  {
-    double* parameters[] = {PX};
-    double* jacobians[] = {J_PX};
-    ASSERT_TRUE((AutoDifferentiate<2, StaticParameterDims<12 + 4>>(
-        b, parameters, 2, ad_x1, jacobians)));
-
-    for (int i = 0; i < 2; ++i) {
-      ASSERT_NEAR(ad_x1[i], b_x[i], tol);
-    }
-  }
-
-  // Use automatic differentiation (again), with two arguments.
-  {
-    double ad_x2[2];
-    double J_P[2 * 12];
-    double J_X[2 * 4];
-    double* parameters[] = {P, X};
-    double* jacobians[] = {J_P, J_X};
-    ASSERT_TRUE((AutoDifferentiate<2, StaticParameterDims<12, 4>>(
-        b, parameters, 2, ad_x2, jacobians)));
-
-    for (int i = 0; i < 2; ++i) {
-      ASSERT_NEAR(ad_x2[i], b_x[i], tol);
-    }
-
-    // Now compare the jacobians we got.
-    for (int i = 0; i < 2; ++i) {
-      for (int j = 0; j < 12 + 4; ++j) {
-        ASSERT_NEAR(J_PX[(12 + 4) * i + j], fd_J[(12 + 4) * i + j], err);
-      }
-
-      for (int j = 0; j < 12; ++j) {
-        ASSERT_NEAR(J_PX[(12 + 4) * i + j], J_P[12 * i + j], tol);
-      }
-      for (int j = 0; j < 4; ++j) {
-        ASSERT_NEAR(J_PX[(12 + 4) * i + 12 + j], J_X[4 * i + j], tol);
-      }
-    }
-  }
-}
-
-// Object to implement the projection by a calibrated camera.
-struct Metric {
-  // The mapping is
-  //
-  //   q, c, X -> x = dehomg(R(q) (X - c))
-  //
-  // where q is a quaternion and c is the center of projection.
-  //
-  // This function takes three input vectors.
-  template <typename A>
-  bool operator()(A const q[4], A const c[3], A const X[3], A x[2]) const {
-    A R[3 * 3];
-    QuaternionToScaledRotation(q, R);
-
-    // Convert the quaternion mapping all the way to projective matrix.
-    A P[3 * 4];
-
-    // Set P(:, 1:3) = R
-    for (int i = 0; i < 3; ++i) {
-      for (int j = 0; j < 3; ++j) {
-        RowMajorAccess(P, 3, 4, i, j) = RowMajorAccess(R, 3, 3, i, j);
-      }
-    }
-
-    // Set P(:, 4) = - R c
-    for (int i = 0; i < 3; ++i) {
-      RowMajorAccess(P, 3, 4, i, 3) = -(RowMajorAccess(R, 3, 3, i, 0) * c[0] +
-                                        RowMajorAccess(R, 3, 3, i, 1) * c[1] +
-                                        RowMajorAccess(R, 3, 3, i, 2) * c[2]);
-    }
-
-    A X1[4] = {X[0], X[1], X[2], A(1)};
-    Projective p;
-    return p(P, X1, x);
-  }
-
-  // A version that takes a single vector.
-  template <typename A>
-  bool operator()(A const q_c_X[4 + 3 + 3], A x[2]) const {
-    return operator()(q_c_X, q_c_X + 4, q_c_X + 4 + 3, x);
-  }
-};
-
-// This test is similar in structure to the previous one.
-TEST(AutoDiff, Metric) {
-  double const tol = 1e-10;  // floating-point tolerance.
-  double const del = 1e-4;   // finite-difference step.
-  double const err = 2e-5;   // finite-difference tolerance.
-
-  Metric b;
-
-  // Make random parameter vector.
-  double qcX[4 + 3 + 3];
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-
-  std::generate(std::begin(qcX), std::end(qcX), [&prng, &uniform01] {
-    return uniform01(prng);
-  });
-
-  // Handy names.
-  double* q = qcX;
-  double* c = qcX + 4;
-  double* X = qcX + 4 + 3;
-
-  // Compute projection, b_x.
-  double b_x[2];
-  ASSERT_TRUE(b(q, c, X, b_x));
-
-  // Finite differencing estimate of Jacobian.
-  double fd_x[2];
-  double fd_J[2 * (4 + 3 + 3)];
-  ASSERT_TRUE(
-      (SymmetricDiff<Metric, double, 2, 4 + 3 + 3>(b, qcX, del, fd_x, fd_J)));
-
-  for (int i = 0; i < 2; ++i) {
-    ASSERT_NEAR(fd_x[i], b_x[i], tol);
-  }
-
-  // Automatic differentiation.
-  double ad_x[2];
-  double J_q[2 * 4];
-  double J_c[2 * 3];
-  double J_X[2 * 3];
-  double* parameters[] = {q, c, X};
-  double* jacobians[] = {J_q, J_c, J_X};
-  ASSERT_TRUE((AutoDifferentiate<2, StaticParameterDims<4, 3, 3>>(
-      b, parameters, 2, ad_x, jacobians)));
-
-  for (int i = 0; i < 2; ++i) {
-    ASSERT_NEAR(ad_x[i], b_x[i], tol);
-  }
-
-  // Compare the pieces.
-  for (int i = 0; i < 2; ++i) {
-    for (int j = 0; j < 4; ++j) {
-      ASSERT_NEAR(J_q[4 * i + j], fd_J[(4 + 3 + 3) * i + j], err);
-    }
-    for (int j = 0; j < 3; ++j) {
-      ASSERT_NEAR(J_c[3 * i + j], fd_J[(4 + 3 + 3) * i + j + 4], err);
-    }
-    for (int j = 0; j < 3; ++j) {
-      ASSERT_NEAR(J_X[3 * i + j], fd_J[(4 + 3 + 3) * i + j + 4 + 3], err);
-    }
-  }
-}
-
-struct VaryingResidualFunctor {
-  template <typename T>
-  bool operator()(const T x[2], T* y) const {
-    for (int i = 0; i < num_residuals; ++i) {
-      y[i] = T(i) * x[0] * x[1] * x[1];
-    }
-    return true;
-  }
-
-  int num_residuals;
-};
-
-TEST(AutoDiff, VaryingNumberOfResidualsForOneCostFunctorType) {
-  double x[2] = {1.0, 5.5};
-  double* parameters[] = {x};
-  const int kMaxResiduals = 10;
-  double J_x[2 * kMaxResiduals];
-  double residuals[kMaxResiduals];
-  double* jacobians[] = {J_x};
-
-  // Use a single functor, but tweak it to produce different numbers of
-  // residuals.
-  VaryingResidualFunctor functor;
-
-  for (int num_residuals = 1; num_residuals < kMaxResiduals; ++num_residuals) {
-    // Tweak the number of residuals to produce.
-    functor.num_residuals = num_residuals;
-
-    // Run autodiff with the new number of residuals.
-    ASSERT_TRUE((AutoDifferentiate<DYNAMIC, StaticParameterDims<2>>(
-        functor, parameters, num_residuals, residuals, jacobians)));
-
-    const double kTolerance = 1e-14;
-    for (int i = 0; i < num_residuals; ++i) {
-      EXPECT_NEAR(J_x[2 * i + 0], i * x[1] * x[1], kTolerance) << "i: " << i;
-      EXPECT_NEAR(J_x[2 * i + 1], 2 * i * x[0] * x[1], kTolerance)
-          << "i: " << i;
-    }
-  }
-}
-
-struct Residual1Param {
-  template <typename T>
-  bool operator()(const T* x0, T* y) const {
-    y[0] = *x0;
-    return true;
-  }
-};
-
-struct Residual2Param {
-  template <typename T>
-  bool operator()(const T* x0, const T* x1, T* y) const {
-    y[0] = *x0 + pow(*x1, 2);
-    return true;
-  }
-};
-
-struct Residual3Param {
-  template <typename T>
-  bool operator()(const T* x0, const T* x1, const T* x2, T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3);
-    return true;
-  }
-};
-
-struct Residual4Param {
-  template <typename T>
-  bool operator()(
-      const T* x0, const T* x1, const T* x2, const T* x3, T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4);
-    return true;
-  }
-};
-
-struct Residual5Param {
-  template <typename T>
-  bool operator()(const T* x0,
-                  const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4) + pow(*x4, 5);
-    return true;
-  }
-};
-
-struct Residual6Param {
-  template <typename T>
-  bool operator()(const T* x0,
-                  const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4) + pow(*x4, 5) +
-           pow(*x5, 6);
-    return true;
-  }
-};
-
-struct Residual7Param {
-  template <typename T>
-  bool operator()(const T* x0,
-                  const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4) + pow(*x4, 5) +
-           pow(*x5, 6) + pow(*x6, 7);
-    return true;
-  }
-};
-
-struct Residual8Param {
-  template <typename T>
-  bool operator()(const T* x0,
-                  const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4) + pow(*x4, 5) +
-           pow(*x5, 6) + pow(*x6, 7) + pow(*x7, 8);
-    return true;
-  }
-};
-
-struct Residual9Param {
-  template <typename T>
-  bool operator()(const T* x0,
-                  const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  const T* x8,
-                  T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4) + pow(*x4, 5) +
-           pow(*x5, 6) + pow(*x6, 7) + pow(*x7, 8) + pow(*x8, 9);
-    return true;
-  }
-};
-
-struct Residual10Param {
-  template <typename T>
-  bool operator()(const T* x0,
-                  const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  const T* x8,
-                  const T* x9,
-                  T* y) const {
-    y[0] = *x0 + pow(*x1, 2) + pow(*x2, 3) + pow(*x3, 4) + pow(*x4, 5) +
-           pow(*x5, 6) + pow(*x6, 7) + pow(*x7, 8) + pow(*x8, 9) + pow(*x9, 10);
-    return true;
-  }
-};
-
-TEST(AutoDiff, VariadicAutoDiff) {
-  double x[10];
-  double residual = 0;
-  double* parameters[10];
-  double jacobian_values[10];
-  double* jacobians[10];
-
-  for (int i = 0; i < 10; ++i) {
-    x[i] = 2.0;
-    parameters[i] = x + i;
-    jacobians[i] = jacobian_values + i;
-  }
-
-  {
-    Residual1Param functor;
-    int num_variables = 1;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual2Param functor;
-    int num_variables = 2;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1, 1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual3Param functor;
-    int num_variables = 3;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1, 1, 1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual4Param functor;
-    int num_variables = 4;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual5Param functor;
-    int num_variables = 5;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1, 1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual6Param functor;
-    int num_variables = 6;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1, 1, 1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual7Param functor;
-    int num_variables = 7;
-    EXPECT_TRUE((AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1, 1, 1, 1>>(
-        functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual8Param functor;
-    int num_variables = 8;
-    EXPECT_TRUE(
-        (AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1, 1, 1, 1, 1>>(
-            functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual9Param functor;
-    int num_variables = 9;
-    EXPECT_TRUE(
-        (AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1, 1, 1, 1, 1, 1>>(
-            functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-
-  {
-    Residual10Param functor;
-    int num_variables = 10;
-    EXPECT_TRUE((
-        AutoDifferentiate<1, StaticParameterDims<1, 1, 1, 1, 1, 1, 1, 1, 1, 1>>(
-            functor, parameters, 1, &residual, jacobians)));
-    EXPECT_EQ(residual, pow(2, num_variables + 1) - 2);
-    for (int i = 0; i < num_variables; ++i) {
-      EXPECT_EQ(jacobian_values[i], (i + 1) * pow(2, i));
-    }
-  }
-}
-
-#ifdef __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-but-set-variable"
-#endif
-// This is fragile test that triggers the alignment bug on
-// i686-apple-darwin10-llvm-g++-4.2 (GCC) 4.2.1. It is quite possible,
-// that other combinations of operating system + compiler will
-// re-arrange the operations in this test.
-//
-// But this is the best (and only) way we know of to trigger this
-// problem for now. A more robust solution that guarantees the
-// alignment of Eigen types used for automatic differentiation would
-// be nice.
-TEST(AutoDiff, AlignedAllocationTest) {
-  // This int is needed to allocate 16 bits on the stack, so that the
-  // next allocation is not aligned by default.
-  char y = 0;
-
-  // This is needed to prevent the compiler from optimizing y out of
-  // this function.
-  y += 1;
-
-  using JetT = Jet<double, 2>;
-  FixedArray<JetT, (256 * 7) / sizeof(JetT)> x(3);
-
-  // Need this to makes sure that x does not get optimized out.
-  x[0] = x[0] + JetT(1.0);
-}
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/benchmarks/macbook-pro-2014-small_blas_gemm_benchmark.json b/third_party/ceres/internal/ceres/benchmarks/macbook-pro-2014-small_blas_gemm_benchmark.json
deleted file mode 100644
index e24572d..0000000
--- a/third_party/ceres/internal/ceres/benchmarks/macbook-pro-2014-small_blas_gemm_benchmark.json
+++ /dev/null
@@ -1,3833 +0,0 @@
-{
-  "context": {
-    "date": "2018-03-23 13:15:00",
-    "num_cpus": 8,
-    "mhz_per_cpu": 2200,
-    "cpu_scaling_enabled": false,
-    "library_build_type": "release"
-  },
-  "benchmarks": [
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/1",
-      "iterations": 70805770,
-      "real_time": 9.7085774076082654e+00,
-      "cpu_time": 9.7053531089344833e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/2",
-      "iterations": 74727246,
-      "real_time": 1.0385020397774865e+01,
-      "cpu_time": 1.0330810264304402e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/3",
-      "iterations": 58161273,
-      "real_time": 1.1918587820938697e+01,
-      "cpu_time": 1.1860538196954527e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/4",
-      "iterations": 48633401,
-      "real_time": 1.3997796658213307e+01,
-      "cpu_time": 1.3981090896768663e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/8",
-      "iterations": 32240533,
-      "real_time": 2.1278021890062710e+01,
-      "cpu_time": 2.1243600408219077e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/12",
-      "iterations": 25863853,
-      "real_time": 2.6210347317374435e+01,
-      "cpu_time": 2.6019054469571898e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/1/15",
-      "iterations": 18352905,
-      "real_time": 3.6613193819894164e+01,
-      "cpu_time": 3.6547020757749202e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/1",
-      "iterations": 73026206,
-      "real_time": 9.8186158953423952e+00,
-      "cpu_time": 9.8166677315811768e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/2",
-      "iterations": 58211574,
-      "real_time": 1.2254592290921693e+01,
-      "cpu_time": 1.2253937679128907e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/3",
-      "iterations": 41788051,
-      "real_time": 1.6580228591773523e+01,
-      "cpu_time": 1.6553320469528451e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/4",
-      "iterations": 37355846,
-      "real_time": 1.8618565967193987e+01,
-      "cpu_time": 1.8617300221229108e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/8",
-      "iterations": 23951522,
-      "real_time": 2.9064576941597569e+01,
-      "cpu_time": 2.9063497509678122e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/12",
-      "iterations": 17955394,
-      "real_time": 3.9849777902603556e+01,
-      "cpu_time": 3.9844906772861613e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/2/15",
-      "iterations": 15072693,
-      "real_time": 4.7936877638126703e+01,
-      "cpu_time": 4.7922026939711373e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/1",
-      "iterations": 70635009,
-      "real_time": 1.0202552222711139e+01,
-      "cpu_time": 1.0198639600937826e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/2",
-      "iterations": 49235444,
-      "real_time": 1.5070878878523310e+01,
-      "cpu_time": 1.5068494152302112e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/3",
-      "iterations": 38174808,
-      "real_time": 1.7475222821439619e+01,
-      "cpu_time": 1.7473879632872062e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/4",
-      "iterations": 34106744,
-      "real_time": 2.0029404214340389e+01,
-      "cpu_time": 2.0028736838673233e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/8",
-      "iterations": 20587933,
-      "real_time": 3.3617301212484371e+01,
-      "cpu_time": 3.3614787846842148e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/12",
-      "iterations": 15313500,
-      "real_time": 4.6273360696817100e+01,
-      "cpu_time": 4.6255069056714703e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/3/15",
-      "iterations": 11989586,
-      "real_time": 5.6997383313299295e+01,
-      "cpu_time": 5.6992209739351992e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/1",
-      "iterations": 62076549,
-      "real_time": 1.1642173391475032e+01,
-      "cpu_time": 1.1573790933513360e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/2",
-      "iterations": 43844265,
-      "real_time": 1.6274509083373967e+01,
-      "cpu_time": 1.6270428983129257e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/3",
-      "iterations": 32460306,
-      "real_time": 2.0151312527943880e+01,
-      "cpu_time": 2.0150641833136220e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/4",
-      "iterations": 30627603,
-      "real_time": 2.3542954928378649e+01,
-      "cpu_time": 2.3537787139267902e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/8",
-      "iterations": 16957323,
-      "real_time": 3.8976102596893007e+01,
-      "cpu_time": 3.8964463907422207e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/12",
-      "iterations": 11970314,
-      "real_time": 5.6122851917381425e+01,
-      "cpu_time": 5.6107550729245602e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/4/15",
-      "iterations": 9639749,
-      "real_time": 7.5149670604821367e+01,
-      "cpu_time": 7.5115545020933837e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/1",
-      "iterations": 46089625,
-      "real_time": 1.4720880177102261e+01,
-      "cpu_time": 1.4720059015450884e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/2",
-      "iterations": 35845047,
-      "real_time": 2.0075989328449982e+01,
-      "cpu_time": 2.0073735710264213e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/3",
-      "iterations": 27662955,
-      "real_time": 2.5734411745732761e+01,
-      "cpu_time": 2.5734018654189445e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/4",
-      "iterations": 21879855,
-      "real_time": 3.4106283108315687e+01,
-      "cpu_time": 3.4089714031468731e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/8",
-      "iterations": 10406446,
-      "real_time": 5.9840372689427156e+01,
-      "cpu_time": 5.9830512741813799e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/12",
-      "iterations": 8903134,
-      "real_time": 8.5126016525115261e+01,
-      "cpu_time": 8.5104750754060177e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/8/15",
-      "iterations": 6940176,
-      "real_time": 1.0028962911611278e+02,
-      "cpu_time": 1.0025855252085725e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/1",
-      "iterations": 35671516,
-      "real_time": 1.8399173111134672e+01,
-      "cpu_time": 1.8397255670322537e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/2",
-      "iterations": 25982607,
-      "real_time": 2.7018409545851057e+01,
-      "cpu_time": 2.7011839112218500e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/3",
-      "iterations": 18737168,
-      "real_time": 3.3898883702445445e+01,
-      "cpu_time": 3.3861787437674536e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/4",
-      "iterations": 15761399,
-      "real_time": 4.5105465061861274e+01,
-      "cpu_time": 4.5099042286791622e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/8",
-      "iterations": 9303562,
-      "real_time": 7.9825693855906351e+01,
-      "cpu_time": 7.9811151900745131e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/12",
-      "iterations": 5956180,
-      "real_time": 1.2225934256378150e+02,
-      "cpu_time": 1.2222196105557559e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/12/15",
-      "iterations": 4506302,
-      "real_time": 1.4818435404415453e+02,
-      "cpu_time": 1.4815784650030173e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/1",
-      "iterations": 35319999,
-      "real_time": 1.9630753360924967e+01,
-      "cpu_time": 1.9626416184213337e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/2",
-      "iterations": 23526644,
-      "real_time": 3.0066773439214494e+01,
-      "cpu_time": 3.0055710453220922e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/3",
-      "iterations": 17598729,
-      "real_time": 4.1083973283990723e+01,
-      "cpu_time": 4.1070806874746893e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/4",
-      "iterations": 12271659,
-      "real_time": 5.3032831420852794e+01,
-      "cpu_time": 5.3028526949779170e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/8",
-      "iterations": 7952738,
-      "real_time": 9.2429693026570703e+01,
-      "cpu_time": 9.2422131849433242e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/12",
-      "iterations": 4950880,
-      "real_time": 1.2875667093472620e+02,
-      "cpu_time": 1.2874357689946041e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/1/15/15",
-      "iterations": 3689648,
-      "real_time": 1.7201106256625351e+02,
-      "cpu_time": 1.7199635303963902e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/1",
-      "iterations": 71110750,
-      "real_time": 1.0465632580976097e+01,
-      "cpu_time": 1.0462187503295935e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/2",
-      "iterations": 38512960,
-      "real_time": 1.5239588699711753e+01,
-      "cpu_time": 1.5233105946673353e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/3",
-      "iterations": 39388909,
-      "real_time": 1.8149611024686859e+01,
-      "cpu_time": 1.8142772118923137e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/4",
-      "iterations": 32544668,
-      "real_time": 2.0374460451575882e+01,
-      "cpu_time": 2.0370863823222830e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/8",
-      "iterations": 22523030,
-      "real_time": 3.1021126554300547e+01,
-      "cpu_time": 3.1018428692764868e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/12",
-      "iterations": 16353383,
-      "real_time": 4.2191290576420187e+01,
-      "cpu_time": 4.2190903252250827e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/1/15",
-      "iterations": 13760296,
-      "real_time": 6.3105678174993102e+01,
-      "cpu_time": 6.3084180747274651e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/1",
-      "iterations": 53321552,
-      "real_time": 1.3571924725902662e+01,
-      "cpu_time": 1.3570760280946285e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/2",
-      "iterations": 34553227,
-      "real_time": 1.9240029591502111e+01,
-      "cpu_time": 1.9238347839407254e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/3",
-      "iterations": 26606966,
-      "real_time": 2.5684070292204609e+01,
-      "cpu_time": 2.5683123735340747e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/4",
-      "iterations": 21813649,
-      "real_time": 3.3015750690106444e+01,
-      "cpu_time": 3.3012312612163001e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/8",
-      "iterations": 13165814,
-      "real_time": 5.3961429801958381e+01,
-      "cpu_time": 5.3950329239043157e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/12",
-      "iterations": 9855407,
-      "real_time": 7.7330575997830607e+01,
-      "cpu_time": 7.7299699545640294e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/2/15",
-      "iterations": 7160320,
-      "real_time": 9.3059447338051214e+01,
-      "cpu_time": 9.3031456694673452e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/1",
-      "iterations": 44724434,
-      "real_time": 1.5451907116408652e+01,
-      "cpu_time": 1.5450704194490172e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/2",
-      "iterations": 31958363,
-      "real_time": 2.2135768501125039e+01,
-      "cpu_time": 2.2130576588043589e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/3",
-      "iterations": 22712598,
-      "real_time": 2.8762911975815388e+01,
-      "cpu_time": 2.8760734461112644e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/4",
-      "iterations": 19248749,
-      "real_time": 3.3782859186998586e+01,
-      "cpu_time": 3.3780377103987405e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/8",
-      "iterations": 11206634,
-      "real_time": 6.0281978239576361e+01,
-      "cpu_time": 6.0263233366950296e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/12",
-      "iterations": 7864550,
-      "real_time": 8.5909877865634058e+01,
-      "cpu_time": 8.5903198530112036e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/3/15",
-      "iterations": 6630295,
-      "real_time": 1.0815029754593648e+02,
-      "cpu_time": 1.0812912547631571e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/1",
-      "iterations": 40941658,
-      "real_time": 1.5922779899567644e+01,
-      "cpu_time": 1.5922657553340848e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/2",
-      "iterations": 27517887,
-      "real_time": 2.4661230893842301e+01,
-      "cpu_time": 2.4659415165124962e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/3",
-      "iterations": 21047188,
-      "real_time": 3.2587989757196986e+01,
-      "cpu_time": 3.2584495372968519e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/4",
-      "iterations": 17532786,
-      "real_time": 4.0907714269629892e+01,
-      "cpu_time": 4.0893672003981131e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/8",
-      "iterations": 10142723,
-      "real_time": 7.0529643763447154e+01,
-      "cpu_time": 7.0525045394614580e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/12",
-      "iterations": 7004763,
-      "real_time": 1.0097909736219086e+02,
-      "cpu_time": 1.0097914804540859e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/4/15",
-      "iterations": 4970108,
-      "real_time": 1.3961298447974306e+02,
-      "cpu_time": 1.3959455207009790e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/1",
-      "iterations": 29905201,
-      "real_time": 2.1529462050555786e+01,
-      "cpu_time": 2.1529265093385952e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/2",
-      "iterations": 21023483,
-      "real_time": 3.3446591554646147e+01,
-      "cpu_time": 3.3438988201907023e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/3",
-      "iterations": 15687962,
-      "real_time": 4.4666488545947821e+01,
-      "cpu_time": 4.4652390157497358e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/4",
-      "iterations": 12333715,
-      "real_time": 5.8456414226244306e+01,
-      "cpu_time": 5.8452218167843370e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/8",
-      "iterations": 6708579,
-      "real_time": 1.0254277962264361e+02,
-      "cpu_time": 1.0254228205406758e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/12",
-      "iterations": 4610116,
-      "real_time": 1.5292074472764102e+02,
-      "cpu_time": 1.5290352780710978e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/8/15",
-      "iterations": 3740855,
-      "real_time": 1.8836253878858312e+02,
-      "cpu_time": 1.8835346464912590e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/1",
-      "iterations": 26222827,
-      "real_time": 2.6458015643267686e+01,
-      "cpu_time": 2.6457444881896041e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/2",
-      "iterations": 16369904,
-      "real_time": 4.2282200980283513e+01,
-      "cpu_time": 4.2270925962668763e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/3",
-      "iterations": 12297530,
-      "real_time": 5.6847899220390829e+01,
-      "cpu_time": 5.6844911132561492e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/4",
-      "iterations": 9635768,
-      "real_time": 7.4954440888332272e+01,
-      "cpu_time": 7.4952821612143552e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/8",
-      "iterations": 4942805,
-      "real_time": 1.4190911294302057e+02,
-      "cpu_time": 1.4189574543199674e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/12",
-      "iterations": 2953823,
-      "real_time": 2.4287571296928039e+02,
-      "cpu_time": 2.4285578384351490e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/12/15",
-      "iterations": 2647384,
-      "real_time": 2.6651603998259009e+02,
-      "cpu_time": 2.6651366027747002e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/1",
-      "iterations": 24894908,
-      "real_time": 2.8931135794891475e+01,
-      "cpu_time": 2.8924790563596211e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/2",
-      "iterations": 10000000,
-      "real_time": 5.0149341800715774e+01,
-      "cpu_time": 5.0140900000000954e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/3",
-      "iterations": 10387914,
-      "real_time": 6.7789764718536929e+01,
-      "cpu_time": 6.7788874647981260e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/4",
-      "iterations": 8232001,
-      "real_time": 8.7254512836870219e+01,
-      "cpu_time": 8.7242457817970333e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/8",
-      "iterations": 4078969,
-      "real_time": 1.6140622300919441e+02,
-      "cpu_time": 1.6140279565743089e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/12",
-      "iterations": 2913983,
-      "real_time": 2.4624524953984053e+02,
-      "cpu_time": 2.4622140897871080e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/2/15/15",
-      "iterations": 1980545,
-      "real_time": 3.5652687670272678e+02,
-      "cpu_time": 3.5642613523045270e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/1",
-      "iterations": 56068628,
-      "real_time": 1.2794681797167486e+01,
-      "cpu_time": 1.2793286113582157e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/2",
-      "iterations": 39670171,
-      "real_time": 1.7598980981713570e+01,
-      "cpu_time": 1.7598336039438660e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/3",
-      "iterations": 31158472,
-      "real_time": 2.2851131887169714e+01,
-      "cpu_time": 2.2848938163591246e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/4",
-      "iterations": 26125739,
-      "real_time": 2.5647778157089107e+01,
-      "cpu_time": 2.5647810383468983e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/8",
-      "iterations": 16180744,
-      "real_time": 4.4158160894780949e+01,
-      "cpu_time": 4.4148896985206250e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/12",
-      "iterations": 11614209,
-      "real_time": 6.1220418967741509e+01,
-      "cpu_time": 6.1203737594182591e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/1/15",
-      "iterations": 7775445,
-      "real_time": 8.8192231440357872e+01,
-      "cpu_time": 8.8191351105949565e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/1",
-      "iterations": 42433758,
-      "real_time": 1.6789013218782308e+01,
-      "cpu_time": 1.6788143062888754e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/2",
-      "iterations": 27240110,
-      "real_time": 2.6047708914648279e+01,
-      "cpu_time": 2.6045709800731100e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/3",
-      "iterations": 21036625,
-      "real_time": 3.4483314841215552e+01,
-      "cpu_time": 3.4475159394627752e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/4",
-      "iterations": 16349143,
-      "real_time": 4.0972523638050760e+01,
-      "cpu_time": 4.0972545166434649e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/8",
-      "iterations": 9121829,
-      "real_time": 7.3690651728074570e+01,
-      "cpu_time": 7.3678206421101962e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/12",
-      "iterations": 6573758,
-      "real_time": 1.0611354388329170e+02,
-      "cpu_time": 1.0610658317510315e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/2/15",
-      "iterations": 5281106,
-      "real_time": 1.2952993671592768e+02,
-      "cpu_time": 1.2952267952963081e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/1",
-      "iterations": 37443767,
-      "real_time": 1.8692536893444267e+01,
-      "cpu_time": 1.8691949450491798e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/2",
-      "iterations": 24253512,
-      "real_time": 2.8977756462325814e+01,
-      "cpu_time": 2.8977040520977290e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/3",
-      "iterations": 18031942,
-      "real_time": 3.8052576424921078e+01,
-      "cpu_time": 3.8050310942659422e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/4",
-      "iterations": 14793400,
-      "real_time": 4.8389559534583100e+01,
-      "cpu_time": 4.8378871658984025e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/8",
-      "iterations": 7509118,
-      "real_time": 8.7285071553661098e+01,
-      "cpu_time": 8.7281622155892137e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/12",
-      "iterations": 5617437,
-      "real_time": 1.2594982336650604e+02,
-      "cpu_time": 1.2594996615004284e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/3/15",
-      "iterations": 4235468,
-      "real_time": 1.5662988364866754e+02,
-      "cpu_time": 1.5658930725010819e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/1",
-      "iterations": 33582967,
-      "real_time": 2.0666642557179625e+01,
-      "cpu_time": 2.0664940057261749e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/2",
-      "iterations": 20330280,
-      "real_time": 3.4482593843841727e+01,
-      "cpu_time": 3.4467995521949824e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/3",
-      "iterations": 14817261,
-      "real_time": 4.4999856386574585e+01,
-      "cpu_time": 4.4999882231946614e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/4",
-      "iterations": 12703713,
-      "real_time": 5.7508433168632642e+01,
-      "cpu_time": 5.7498071626775889e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/8",
-      "iterations": 6803250,
-      "real_time": 1.0353664954199472e+02,
-      "cpu_time": 1.0353022452504064e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/12",
-      "iterations": 4761484,
-      "real_time": 1.5105595102614049e+02,
-      "cpu_time": 1.5101636380590460e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/4/15",
-      "iterations": 3477121,
-      "real_time": 2.0255288986918265e+02,
-      "cpu_time": 2.0255291662268490e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/1",
-      "iterations": 24105845,
-      "real_time": 3.0166071218608963e+01,
-      "cpu_time": 3.0152521100172752e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/2",
-      "iterations": 14274178,
-      "real_time": 4.7932456426425794e+01,
-      "cpu_time": 4.7932427352385140e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/3",
-      "iterations": 11208070,
-      "real_time": 6.4670979126310669e+01,
-      "cpu_time": 6.4656626876885724e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/4",
-      "iterations": 8661544,
-      "real_time": 8.1036356563132159e+01,
-      "cpu_time": 8.1029779448099646e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/8",
-      "iterations": 4408532,
-      "real_time": 1.5933889874913777e+02,
-      "cpu_time": 1.5933898177443112e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/12",
-      "iterations": 3025836,
-      "real_time": 2.2925236332784999e+02,
-      "cpu_time": 2.2921764431383914e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/8/15",
-      "iterations": 2491999,
-      "real_time": 2.8641806799325639e+02,
-      "cpu_time": 2.8639016307791479e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/1",
-      "iterations": 19248855,
-      "real_time": 3.5610818100409780e+01,
-      "cpu_time": 3.5608871280915714e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/2",
-      "iterations": 12091481,
-      "real_time": 5.8460851325769724e+01,
-      "cpu_time": 5.8460084418112018e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/3",
-      "iterations": 8702571,
-      "real_time": 8.2073278220417663e+01,
-      "cpu_time": 8.2066437607921230e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/4",
-      "iterations": 6588049,
-      "real_time": 1.0495601975858659e+02,
-      "cpu_time": 1.0495353024848519e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/8",
-      "iterations": 3441545,
-      "real_time": 2.0682049776183950e+02,
-      "cpu_time": 2.0680363034625137e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/12",
-      "iterations": 1913520,
-      "real_time": 3.5206489242527891e+02,
-      "cpu_time": 3.5197646222668027e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/12/15",
-      "iterations": 1769187,
-      "real_time": 3.9255757818155735e+02,
-      "cpu_time": 3.9251644964607959e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/1",
-      "iterations": 17529493,
-      "real_time": 4.0357623289387469e+01,
-      "cpu_time": 4.0355017683627686e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/2",
-      "iterations": 10120287,
-      "real_time": 6.8401365789683695e+01,
-      "cpu_time": 6.8394305418413964e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/3",
-      "iterations": 7331839,
-      "real_time": 9.5766700952043223e+01,
-      "cpu_time": 9.5763832239086980e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/4",
-      "iterations": 5777437,
-      "real_time": 1.2417593458644886e+02,
-      "cpu_time": 1.2417166989445052e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/8",
-      "iterations": 2843390,
-      "real_time": 2.4545334972027791e+02,
-      "cpu_time": 2.4543344388213094e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/12",
-      "iterations": 2003899,
-      "real_time": 3.4996039020923655e+02,
-      "cpu_time": 3.4996075151492676e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/3/15/15",
-      "iterations": 1369917,
-      "real_time": 5.3407925510682742e+02,
-      "cpu_time": 5.3400388490691137e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/1",
-      "iterations": 43784206,
-      "real_time": 1.5567154102293838e+01,
-      "cpu_time": 1.5566777664073646e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/2",
-      "iterations": 33442579,
-      "real_time": 2.1867037525565301e+01,
-      "cpu_time": 2.1860634611941059e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/3",
-      "iterations": 26232949,
-      "real_time": 2.7432051955857808e+01,
-      "cpu_time": 2.7423260724518492e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/4",
-      "iterations": 21726783,
-      "real_time": 3.3097775082474257e+01,
-      "cpu_time": 3.3093072269374041e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/8",
-      "iterations": 12635379,
-      "real_time": 5.5527680649909243e+01,
-      "cpu_time": 5.5527736841135230e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/12",
-      "iterations": 7856077,
-      "real_time": 8.8061040521836091e+01,
-      "cpu_time": 8.8058200040553615e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/1/15",
-      "iterations": 5300460,
-      "real_time": 1.2661529226403675e+02,
-      "cpu_time": 1.2660165344139702e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/1",
-      "iterations": 34390768,
-      "real_time": 2.0377612358162786e+01,
-      "cpu_time": 2.0377561792164304e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/2",
-      "iterations": 20908879,
-      "real_time": 3.4186949283789282e+01,
-      "cpu_time": 3.4171846324233805e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/3",
-      "iterations": 15411815,
-      "real_time": 4.5325916440705925e+01,
-      "cpu_time": 4.5313287240988785e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/4",
-      "iterations": 12438032,
-      "real_time": 5.4548608170088684e+01,
-      "cpu_time": 5.4541345447574550e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/8",
-      "iterations": 7252233,
-      "real_time": 9.5601186552427208e+01,
-      "cpu_time": 9.5590282330976379e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/12",
-      "iterations": 4715647,
-      "real_time": 1.4106606686984432e+02,
-      "cpu_time": 1.4105275479695544e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/2/15",
-      "iterations": 4108608,
-      "real_time": 1.7176933988395049e+02,
-      "cpu_time": 1.7176571724535870e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/1",
-      "iterations": 30653086,
-      "real_time": 2.3378084249479144e+01,
-      "cpu_time": 2.3371578313517723e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/2",
-      "iterations": 18987479,
-      "real_time": 3.6601283509988470e+01,
-      "cpu_time": 3.6600540809024764e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/3",
-      "iterations": 14597262,
-      "real_time": 4.8923792148898187e+01,
-      "cpu_time": 4.8915611708551786e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/4",
-      "iterations": 11609779,
-      "real_time": 6.1787660821110308e+01,
-      "cpu_time": 6.1783949548049065e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/8",
-      "iterations": 6170445,
-      "real_time": 1.1533432271722650e+02,
-      "cpu_time": 1.1532134230189035e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/12",
-      "iterations": 3942551,
-      "real_time": 1.7028375181379528e+02,
-      "cpu_time": 1.7027756901559130e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/3/15",
-      "iterations": 3143680,
-      "real_time": 2.1163193262032627e+02,
-      "cpu_time": 2.1153902432817358e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/1",
-      "iterations": 26297796,
-      "real_time": 2.7622421285563462e+01,
-      "cpu_time": 2.7617903796958281e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/2",
-      "iterations": 16116963,
-      "real_time": 4.2681934678112448e+01,
-      "cpu_time": 4.2673548360196982e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/3",
-      "iterations": 11333463,
-      "real_time": 5.9496259266019280e+01,
-      "cpu_time": 5.9488260560782976e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/4",
-      "iterations": 9425832,
-      "real_time": 7.2428386902398671e+01,
-      "cpu_time": 7.2426816009451187e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/8",
-      "iterations": 5303754,
-      "real_time": 1.3631801739144950e+02,
-      "cpu_time": 1.3630609564470390e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/12",
-      "iterations": 3471792,
-      "real_time": 2.0895634672966241e+02,
-      "cpu_time": 2.0888780203422081e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/4/15",
-      "iterations": 2520089,
-      "real_time": 2.8573527243793194e+02,
-      "cpu_time": 2.8568475160995524e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/1",
-      "iterations": 19096621,
-      "real_time": 3.6688983777001837e+01,
-      "cpu_time": 3.6686385512912835e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/2",
-      "iterations": 11715481,
-      "real_time": 5.9865703340908404e+01,
-      "cpu_time": 5.9863867305149718e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/3",
-      "iterations": 8174992,
-      "real_time": 8.2275007966704990e+01,
-      "cpu_time": 8.2264056038215699e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/4",
-      "iterations": 6602839,
-      "real_time": 1.0513826369751193e+02,
-      "cpu_time": 1.0513825946687413e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/8",
-      "iterations": 3103153,
-      "real_time": 2.2933769686453937e+02,
-      "cpu_time": 2.2922105355424063e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/12",
-      "iterations": 2360909,
-      "real_time": 3.0008286085974277e+02,
-      "cpu_time": 3.0007382749609508e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/8/15",
-      "iterations": 1889522,
-      "real_time": 3.6764128913401316e+02,
-      "cpu_time": 3.6759773106638625e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/1",
-      "iterations": 15594924,
-      "real_time": 4.5340802243594723e+01,
-      "cpu_time": 4.5338855130040670e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/2",
-      "iterations": 9416323,
-      "real_time": 7.7935394432093759e+01,
-      "cpu_time": 7.7923197834230493e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/3",
-      "iterations": 6504911,
-      "real_time": 1.0715989640776804e+02,
-      "cpu_time": 1.0713782248519193e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/4",
-      "iterations": 5121452,
-      "real_time": 1.4158639932237980e+02,
-      "cpu_time": 1.4156454068104333e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/8",
-      "iterations": 2629809,
-      "real_time": 2.6729956094762065e+02,
-      "cpu_time": 2.6729964039213291e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/12",
-      "iterations": 1465266,
-      "real_time": 4.8055055047316051e+02,
-      "cpu_time": 4.8045406090090495e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/12/15",
-      "iterations": 1347579,
-      "real_time": 5.0750709527862261e+02,
-      "cpu_time": 5.0747525748026823e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/1",
-      "iterations": 13992164,
-      "real_time": 5.1035651877709000e+01,
-      "cpu_time": 5.1031848969179904e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/2",
-      "iterations": 8114437,
-      "real_time": 9.1338025169208450e+01,
-      "cpu_time": 9.1289266279351281e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/3",
-      "iterations": 5584453,
-      "real_time": 1.3020937251867338e+02,
-      "cpu_time": 1.3020093463048300e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/4",
-      "iterations": 4225191,
-      "real_time": 1.6777847509516360e+02,
-      "cpu_time": 1.6776780031956187e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/8",
-      "iterations": 2208097,
-      "real_time": 3.1420101474920136e+02,
-      "cpu_time": 3.1417641525712475e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/12",
-      "iterations": 1362239,
-      "real_time": 4.7193459299910199e+02,
-      "cpu_time": 4.7192966872919396e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/4/15/15",
-      "iterations": 1013934,
-      "real_time": 6.9074462639740500e+02,
-      "cpu_time": 6.9067611895843174e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/1",
-      "iterations": 35883083,
-      "real_time": 1.9658060568729933e+01,
-      "cpu_time": 1.9653244399317629e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/2",
-      "iterations": 24056388,
-      "real_time": 2.9539796622717901e+01,
-      "cpu_time": 2.9535938645485025e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/3",
-      "iterations": 18012176,
-      "real_time": 3.7624106551207404e+01,
-      "cpu_time": 3.7622994578778332e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/4",
-      "iterations": 14678345,
-      "real_time": 4.5918100918078160e+01,
-      "cpu_time": 4.5913827478505929e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/8",
-      "iterations": 7894084,
-      "real_time": 8.9416150485226595e+01,
-      "cpu_time": 8.9416200790360904e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/12",
-      "iterations": 5637614,
-      "real_time": 1.2666981333290803e+02,
-      "cpu_time": 1.2665606407249378e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/1/15",
-      "iterations": 3823507,
-      "real_time": 1.8736620963154931e+02,
-      "cpu_time": 1.8730395942781817e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/1",
-      "iterations": 24223046,
-      "real_time": 2.8497691000545316e+01,
-      "cpu_time": 2.8491338372555116e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/2",
-      "iterations": 15398423,
-      "real_time": 4.5795887799865483e+01,
-      "cpu_time": 4.5794819378582773e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/3",
-      "iterations": 11563176,
-      "real_time": 6.2808566696334694e+01,
-      "cpu_time": 6.2802987691271042e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/4",
-      "iterations": 9189970,
-      "real_time": 7.9181958046114659e+01,
-      "cpu_time": 7.9176972286086510e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/8",
-      "iterations": 5045518,
-      "real_time": 1.4116900465724606e+02,
-      "cpu_time": 1.4116370212137321e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/12",
-      "iterations": 3222317,
-      "real_time": 2.1623090867295952e+02,
-      "cpu_time": 2.1613391854370431e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/2/15",
-      "iterations": 2661132,
-      "real_time": 2.5762627518753141e+02,
-      "cpu_time": 2.5762607792473091e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/1",
-      "iterations": 21216879,
-      "real_time": 3.1723128644065358e+01,
-      "cpu_time": 3.1721536423899945e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/2",
-      "iterations": 12753475,
-      "real_time": 5.0896364085014220e+01,
-      "cpu_time": 5.0893109525054015e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/3",
-      "iterations": 10091108,
-      "real_time": 7.2624663025969213e+01,
-      "cpu_time": 7.2617595609916108e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/4",
-      "iterations": 7049416,
-      "real_time": 9.1072403728374738e+01,
-      "cpu_time": 9.1064848492413887e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/8",
-      "iterations": 4191818,
-      "real_time": 1.7144981293848105e+02,
-      "cpu_time": 1.7140486538298720e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/12",
-      "iterations": 2730067,
-      "real_time": 2.5822554940052413e+02,
-      "cpu_time": 2.5821783860981856e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/3/15",
-      "iterations": 2247191,
-      "real_time": 3.2026805378443191e+02,
-      "cpu_time": 3.2021443660107224e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/1",
-      "iterations": 18121429,
-      "real_time": 3.8547122245533529e+01,
-      "cpu_time": 3.8529798063938813e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/2",
-      "iterations": 11586335,
-      "real_time": 6.0852216685201718e+01,
-      "cpu_time": 6.0840377910704561e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/3",
-      "iterations": 7775445,
-      "real_time": 8.3481185069736838e+01,
-      "cpu_time": 8.3473421778429085e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/4",
-      "iterations": 5806575,
-      "real_time": 1.0983559688561705e+02,
-      "cpu_time": 1.0980741659239386e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/8",
-      "iterations": 3438553,
-      "real_time": 2.1037594070842158e+02,
-      "cpu_time": 2.1031026713853169e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/12",
-      "iterations": 2353234,
-      "real_time": 3.0354535504545981e+02,
-      "cpu_time": 3.0353844963994919e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/4/15",
-      "iterations": 1707234,
-      "real_time": 4.1212674833869283e+02,
-      "cpu_time": 4.1206594995178187e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/1",
-      "iterations": 13362349,
-      "real_time": 5.2982092895293206e+01,
-      "cpu_time": 5.2980205800642366e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/2",
-      "iterations": 8183210,
-      "real_time": 8.6807440359333526e+01,
-      "cpu_time": 8.6797234825940336e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/3",
-      "iterations": 5575956,
-      "real_time": 1.2095788793507765e+02,
-      "cpu_time": 1.2092742482186435e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/4",
-      "iterations": 4406784,
-      "real_time": 1.6091419163453321e+02,
-      "cpu_time": 1.6090282618798929e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/8",
-      "iterations": 2054986,
-      "real_time": 3.2413642234595721e+02,
-      "cpu_time": 3.2408687942400189e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/12",
-      "iterations": 1551202,
-      "real_time": 4.4303657167700601e+02,
-      "cpu_time": 4.4300548864687693e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/8/15",
-      "iterations": 1191347,
-      "real_time": 5.5736654808529727e+02,
-      "cpu_time": 5.5727424503526106e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/1",
-      "iterations": 10931863,
-      "real_time": 6.4586304002781674e+01,
-      "cpu_time": 6.4583227945685735e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/2",
-      "iterations": 6480881,
-      "real_time": 1.1095950659776847e+02,
-      "cpu_time": 1.1091346994336570e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/3",
-      "iterations": 4402294,
-      "real_time": 1.6057101819994259e+02,
-      "cpu_time": 1.6057105681719801e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/4",
-      "iterations": 3377482,
-      "real_time": 2.1260607102163365e+02,
-      "cpu_time": 2.1259239871595997e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/8",
-      "iterations": 1774438,
-      "real_time": 4.0620272672379355e+02,
-      "cpu_time": 4.0617254589902825e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/12",
-      "iterations": 1019947,
-      "real_time": 6.9195249654498321e+02,
-      "cpu_time": 6.9188300960735296e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/12/15",
-      "iterations": 884553,
-      "real_time": 7.5831573007795248e+02,
-      "cpu_time": 7.5825982162740524e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/1",
-      "iterations": 9880168,
-      "real_time": 7.0872998011871360e+01,
-      "cpu_time": 7.0861244464668601e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/2",
-      "iterations": 5605516,
-      "real_time": 1.3012630738160823e+02,
-      "cpu_time": 1.3010452561369684e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/3",
-      "iterations": 3594887,
-      "real_time": 1.8727335103647246e+02,
-      "cpu_time": 1.8727320218965750e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/4",
-      "iterations": 2914275,
-      "real_time": 2.5004251521486941e+02,
-      "cpu_time": 2.5001964468006324e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/8",
-      "iterations": 1496673,
-      "real_time": 4.5904399752450018e+02,
-      "cpu_time": 4.5904415994676094e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/12",
-      "iterations": 1019264,
-      "real_time": 6.9263589708023426e+02,
-      "cpu_time": 6.9257523075474012e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/6/15/15",
-      "iterations": 703822,
-      "real_time": 1.0274121383928141e+03,
-      "cpu_time": 1.0269911994794356e+03,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/1",
-      "iterations": 28848967,
-      "real_time": 2.4540278929744005e+01,
-      "cpu_time": 2.4540116115768196e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/2",
-      "iterations": 16448953,
-      "real_time": 4.1712574414326596e+01,
-      "cpu_time": 4.1707396209352183e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/3",
-      "iterations": 14226312,
-      "real_time": 4.9027181393759875e+01,
-      "cpu_time": 4.9021137734081250e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/4",
-      "iterations": 11454941,
-      "real_time": 5.9979401986663639e+01,
-      "cpu_time": 5.9975865436584797e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/8",
-      "iterations": 6124502,
-      "real_time": 1.1666736185728730e+02,
-      "cpu_time": 1.1663968760235049e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/12",
-      "iterations": 3998583,
-      "real_time": 1.6762970205238750e+02,
-      "cpu_time": 1.6757736428129780e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/1/15",
-      "iterations": 2814308,
-      "real_time": 2.4954055349218976e+02,
-      "cpu_time": 2.4952741490982092e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/1",
-      "iterations": 18724488,
-      "real_time": 3.5947751575164503e+01,
-      "cpu_time": 3.5943626335737079e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/2",
-      "iterations": 11921590,
-      "real_time": 5.9207167255952854e+01,
-      "cpu_time": 5.9207203066035085e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/3",
-      "iterations": 8754158,
-      "real_time": 8.2119780673261829e+01,
-      "cpu_time": 8.2108410654686921e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/4",
-      "iterations": 6998810,
-      "real_time": 1.0214988562003887e+02,
-      "cpu_time": 1.0214522183056609e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/8",
-      "iterations": 3592562,
-      "real_time": 1.9437585320576306e+02,
-      "cpu_time": 1.9436908813265629e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/12",
-      "iterations": 2396431,
-      "real_time": 2.8026308038860464e+02,
-      "cpu_time": 2.8025509601569246e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/2/15",
-      "iterations": 2046951,
-      "real_time": 3.5115058444827230e+02,
-      "cpu_time": 3.5108852141550892e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/1",
-      "iterations": 16325388,
-      "real_time": 3.9796095745111217e+01,
-      "cpu_time": 3.9796113881031708e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/2",
-      "iterations": 10737679,
-      "real_time": 6.5906308716831845e+01,
-      "cpu_time": 6.5905024726480917e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/3",
-      "iterations": 7088320,
-      "real_time": 9.3004828643787533e+01,
-      "cpu_time": 9.2977461514156531e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/4",
-      "iterations": 5870267,
-      "real_time": 1.2000603959593791e+02,
-      "cpu_time": 1.2000510368608558e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/8",
-      "iterations": 3068143,
-      "real_time": 2.3626721927352122e+02,
-      "cpu_time": 2.3623996665083703e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/12",
-      "iterations": 2099580,
-      "real_time": 3.3583827954933315e+02,
-      "cpu_time": 3.3581573457548717e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/3/15",
-      "iterations": 1649656,
-      "real_time": 4.2427198941703512e+02,
-      "cpu_time": 4.2424359987778223e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/1",
-      "iterations": 15155944,
-      "real_time": 4.6883314822829128e+01,
-      "cpu_time": 4.6868476156946230e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/2",
-      "iterations": 8977697,
-      "real_time": 7.8234271655284971e+01,
-      "cpu_time": 7.8221396868264293e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/3",
-      "iterations": 6523279,
-      "real_time": 1.0760156249974737e+02,
-      "cpu_time": 1.0759956764075524e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/4",
-      "iterations": 4932391,
-      "real_time": 1.4628502665592592e+02,
-      "cpu_time": 1.4624246131338307e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/8",
-      "iterations": 2622518,
-      "real_time": 2.7004358482882026e+02,
-      "cpu_time": 2.7002712660123399e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/12",
-      "iterations": 1776519,
-      "real_time": 4.0179950733230476e+02,
-      "cpu_time": 4.0170074173144076e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/4/15",
-      "iterations": 1306653,
-      "real_time": 5.3862783928653209e+02,
-      "cpu_time": 5.3852629581072210e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/1",
-      "iterations": 10522044,
-      "real_time": 6.7281942654985912e+01,
-      "cpu_time": 6.7279323294977956e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/2",
-      "iterations": 5683202,
-      "real_time": 1.1714747144106124e+02,
-      "cpu_time": 1.1712921694495108e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/3",
-      "iterations": 4012588,
-      "real_time": 1.7086801410540352e+02,
-      "cpu_time": 1.7082840301570150e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/4",
-      "iterations": 3210391,
-      "real_time": 2.1769298412875284e+02,
-      "cpu_time": 2.1764763232889757e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/8",
-      "iterations": 1386276,
-      "real_time": 4.2298219331094850e+02,
-      "cpu_time": 4.2296988478487037e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/12",
-      "iterations": 1229796,
-      "real_time": 5.8270287912404478e+02,
-      "cpu_time": 5.8268444522507320e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/8/15",
-      "iterations": 913278,
-      "real_time": 7.2295903331698173e+02,
-      "cpu_time": 7.2266932960169106e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/1",
-      "iterations": 8666906,
-      "real_time": 8.2825083479215138e+01,
-      "cpu_time": 8.2813290002222786e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/2",
-      "iterations": 4787962,
-      "real_time": 1.5893517973517132e+02,
-      "cpu_time": 1.5890017506404547e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/3",
-      "iterations": 3376993,
-      "real_time": 2.1209493534458539e+02,
-      "cpu_time": 2.1208572241637498e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/4",
-      "iterations": 2528052,
-      "real_time": 2.8361835277337747e+02,
-      "cpu_time": 2.8356220520780306e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/8",
-      "iterations": 1365161,
-      "real_time": 5.1563232464065175e+02,
-      "cpu_time": 5.1561244424649635e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/12",
-      "iterations": 774816,
-      "real_time": 9.1982087090455320e+02,
-      "cpu_time": 9.1976933878501256e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/12/15",
-      "iterations": 644128,
-      "real_time": 1.0335456059649105e+03,
-      "cpu_time": 1.0334296909931829e+03,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/1",
-      "iterations": 6749330,
-      "real_time": 9.3389646673451765e+01,
-      "cpu_time": 9.3385713841225680e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/2",
-      "iterations": 4076855,
-      "real_time": 1.7768800584069561e+02,
-      "cpu_time": 1.7766268361275348e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/3",
-      "iterations": 2646983,
-      "real_time": 2.4629957616369117e+02,
-      "cpu_time": 2.4629398828781095e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/4",
-      "iterations": 2202297,
-      "real_time": 3.2136069111042735e+02,
-      "cpu_time": 3.2135175228409929e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/8",
-      "iterations": 1097884,
-      "real_time": 6.1847880284255530e+02,
-      "cpu_time": 6.1845240480779523e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/12",
-      "iterations": 782910,
-      "real_time": 9.0918598563572277e+02,
-      "cpu_time": 9.0896271602092418e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixMatrixMultiplyDynamic/8/15/15",
-      "iterations": 527999,
-      "real_time": 1.3869756686825481e+03,
-      "cpu_time": 1.3864761107502002e+03,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/1/1",
-      "iterations": 71473060,
-      "real_time": 1.0218954287241552e+01,
-      "cpu_time": 1.0190986645876869e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/1/2",
-      "iterations": 56615982,
-      "real_time": 1.1715988235202534e+01,
-      "cpu_time": 1.1687053312967441e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/1/3",
-      "iterations": 41964917,
-      "real_time": 1.5662750051657548e+01,
-      "cpu_time": 1.5605130352097801e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/1/4",
-      "iterations": 43787767,
-      "real_time": 1.6259733979111644e+01,
-      "cpu_time": 1.6258513479347108e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/1/6",
-      "iterations": 36258346,
-      "real_time": 1.9466160398137074e+01,
-      "cpu_time": 1.9460291983534194e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/1/8",
-      "iterations": 29992202,
-      "real_time": 2.3460926542272730e+01,
-      "cpu_time": 2.3460664875490462e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/2/1",
-      "iterations": 64820817,
-      "real_time": 1.1306831399178281e+01,
-      "cpu_time": 1.1305241647910986e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/2/2",
-      "iterations": 42461300,
-      "real_time": 1.6090760857123335e+01,
-      "cpu_time": 1.6089709924096166e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/2/3",
-      "iterations": 34222131,
-      "real_time": 2.0463437795226742e+01,
-      "cpu_time": 2.0461291554286287e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/2/4",
-      "iterations": 28672426,
-      "real_time": 2.4036501725380685e+01,
-      "cpu_time": 2.4036508107125368e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/2/6",
-      "iterations": 22107753,
-      "real_time": 3.2366105997698078e+01,
-      "cpu_time": 3.2339243160535105e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/2/8",
-      "iterations": 17977851,
-      "real_time": 3.8303000509294193e+01,
-      "cpu_time": 3.8302408891917274e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/3/1",
-      "iterations": 47772113,
-      "real_time": 1.5043972116588071e+01,
-      "cpu_time": 1.5041369428227512e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/3/2",
-      "iterations": 34204071,
-      "real_time": 2.0490502315173504e+01,
-      "cpu_time": 2.0488379877355843e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/3/3",
-      "iterations": 24970214,
-      "real_time": 2.7615499291093524e+01,
-      "cpu_time": 2.7611537490226628e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/3/4",
-      "iterations": 21303857,
-      "real_time": 3.2186434312846430e+01,
-      "cpu_time": 3.2186425209294711e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/3/6",
-      "iterations": 15983487,
-      "real_time": 4.3950274933558802e+01,
-      "cpu_time": 4.3944290754573188e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/3/8",
-      "iterations": 13054830,
-      "real_time": 5.3519842379947981e+01,
-      "cpu_time": 5.3519042377420412e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/4/1",
-      "iterations": 38605567,
-      "real_time": 1.7140124584280613e+01,
-      "cpu_time": 1.7139237975704773e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/4/2",
-      "iterations": 24963892,
-      "real_time": 2.6611483778803432e+01,
-      "cpu_time": 2.6610874618428802e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/4/3",
-      "iterations": 20679041,
-      "real_time": 3.3410864169128558e+01,
-      "cpu_time": 3.3410833703554680e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/4/4",
-      "iterations": 16227632,
-      "real_time": 4.1827737282765789e+01,
-      "cpu_time": 4.1814603634095711e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/4/6",
-      "iterations": 12500000,
-      "real_time": 5.5144667755812407e+01,
-      "cpu_time": 5.5142799999998715e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/4/8",
-      "iterations": 10199175,
-      "real_time": 7.1093479030740511e+01,
-      "cpu_time": 7.1083690592624933e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/8/1",
-      "iterations": 23249326,
-      "real_time": 2.9231176507753009e+01,
-      "cpu_time": 2.9228202142289398e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/8/2",
-      "iterations": 15252472,
-      "real_time": 4.5119020311992401e+01,
-      "cpu_time": 4.5116489969624652e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/8/3",
-      "iterations": 11697861,
-      "real_time": 5.9494903808970463e+01,
-      "cpu_time": 5.9494979466764093e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/8/4",
-      "iterations": 9670378,
-      "real_time": 7.5506631901856167e+01,
-      "cpu_time": 7.5465302390455705e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/8/6",
-      "iterations": 6613757,
-      "real_time": 1.0650588401303291e+02,
-      "cpu_time": 1.0650482018011422e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/8/8",
-      "iterations": 5224816,
-      "real_time": 1.3476276754677889e+02,
-      "cpu_time": 1.3475019981565049e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/12/1",
-      "iterations": 16780897,
-      "real_time": 3.9535694129434802e+01,
-      "cpu_time": 3.9532570875080800e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/12/2",
-      "iterations": 11076475,
-      "real_time": 6.2615060207266964e+01,
-      "cpu_time": 6.2613782814477034e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/12/3",
-      "iterations": 7716475,
-      "real_time": 9.3239785648289768e+01,
-      "cpu_time": 9.3230523004355803e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/12/4",
-      "iterations": 6209031,
-      "real_time": 1.1262584290792275e+02,
-      "cpu_time": 1.1260195028821359e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/12/6",
-      "iterations": 4598547,
-      "real_time": 1.5699447042687075e+02,
-      "cpu_time": 1.5698610887308206e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/12/8",
-      "iterations": 3632307,
-      "real_time": 1.9546146239308518e+02,
-      "cpu_time": 1.9545126554555083e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/15/1",
-      "iterations": 14862532,
-      "real_time": 4.8933481992353883e+01,
-      "cpu_time": 4.8925445543194087e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/15/2",
-      "iterations": 9272751,
-      "real_time": 7.5060414440919416e+01,
-      "cpu_time": 7.5058307939039238e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/15/3",
-      "iterations": 6480341,
-      "real_time": 1.0979939651246349e+02,
-      "cpu_time": 1.0979591969003172e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/15/4",
-      "iterations": 4876180,
-      "real_time": 1.3706889409129832e+02,
-      "cpu_time": 1.3701832171905659e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/15/6",
-      "iterations": 3760125,
-      "real_time": 1.8651585653560488e+02,
-      "cpu_time": 1.8650789534924448e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/1/15/8",
-      "iterations": 2847137,
-      "real_time": 2.4058243597574796e+02,
-      "cpu_time": 2.4055217574707797e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/1/1",
-      "iterations": 68775115,
-      "real_time": 1.0161083190702918e+01,
-      "cpu_time": 1.0160099332440879e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/1/2",
-      "iterations": 49986789,
-      "real_time": 1.4439146730228050e+01,
-      "cpu_time": 1.4437994806987415e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/1/3",
-      "iterations": 39209975,
-      "real_time": 1.7907087851448971e+01,
-      "cpu_time": 1.7905188666914789e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/1/4",
-      "iterations": 33433954,
-      "real_time": 2.1579039621029189e+01,
-      "cpu_time": 2.1575940434684497e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/1/6",
-      "iterations": 23979419,
-      "real_time": 2.9080755623547759e+01,
-      "cpu_time": 2.9078352565590922e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/1/8",
-      "iterations": 18695882,
-      "real_time": 3.7289310238280216e+01,
-      "cpu_time": 3.7285964898579948e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/2/1",
-      "iterations": 46248885,
-      "real_time": 1.5789034589756211e+01,
-      "cpu_time": 1.5788380627987841e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/2/2",
-      "iterations": 31242050,
-      "real_time": 2.3166515994496951e+01,
-      "cpu_time": 2.3160420010851698e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/2/3",
-      "iterations": 23434728,
-      "real_time": 3.0073514528259938e+01,
-      "cpu_time": 3.0070415154806401e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/2/4",
-      "iterations": 18801991,
-      "real_time": 3.8634371435713341e+01,
-      "cpu_time": 3.8631493866794607e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/2/6",
-      "iterations": 13261846,
-      "real_time": 5.3974149983132079e+01,
-      "cpu_time": 5.3973104498422586e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/2/8",
-      "iterations": 10277341,
-      "real_time": 6.8221806885820996e+01,
-      "cpu_time": 6.8221828973073386e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/3/1",
-      "iterations": 36620838,
-      "real_time": 1.9742956780825988e+01,
-      "cpu_time": 1.9738516087478931e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/3/2",
-      "iterations": 22380520,
-      "real_time": 3.0584310238259096e+01,
-      "cpu_time": 3.0581461020569659e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/3/3",
-      "iterations": 15505215,
-      "real_time": 4.3842810372514549e+01,
-      "cpu_time": 4.3827125260759594e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/3/4",
-      "iterations": 13073116,
-      "real_time": 5.4027797198758762e+01,
-      "cpu_time": 5.4026599320315746e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/3/6",
-      "iterations": 9122780,
-      "real_time": 8.0540206384536461e+01,
-      "cpu_time": 8.0530934649306928e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/3/8",
-      "iterations": 6801796,
-      "real_time": 1.0112268436776978e+02,
-      "cpu_time": 1.0112270347419975e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/4/1",
-      "iterations": 28346967,
-      "real_time": 2.4199674908345415e+01,
-      "cpu_time": 2.4198109095763538e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/4/2",
-      "iterations": 17579106,
-      "real_time": 3.9392355676616084e+01,
-      "cpu_time": 3.9392333148229547e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/4/3",
-      "iterations": 12823096,
-      "real_time": 5.5229829597677757e+01,
-      "cpu_time": 5.5228940031327966e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/4/4",
-      "iterations": 9197335,
-      "real_time": 7.1939196631556840e+01,
-      "cpu_time": 7.1900936521278567e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/4/6",
-      "iterations": 6933302,
-      "real_time": 1.0101546536387012e+02,
-      "cpu_time": 1.0101564882072290e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/4/8",
-      "iterations": 4975301,
-      "real_time": 1.3746609339775961e+02,
-      "cpu_time": 1.3745037737415063e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/8/1",
-      "iterations": 16063741,
-      "real_time": 4.3754604925193078e+01,
-      "cpu_time": 4.3751078904970491e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/8/2",
-      "iterations": 9354662,
-      "real_time": 7.6260448106230101e+01,
-      "cpu_time": 7.6245298868089733e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/8/3",
-      "iterations": 6419133,
-      "real_time": 1.0508850618775932e+02,
-      "cpu_time": 1.0508864670665862e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/8/4",
-      "iterations": 5161975,
-      "real_time": 1.3653278172737677e+02,
-      "cpu_time": 1.3649988618696295e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/8/6",
-      "iterations": 3333905,
-      "real_time": 2.0003050893993625e+02,
-      "cpu_time": 2.0002939495876288e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/8/8",
-      "iterations": 2567385,
-      "real_time": 2.6870413744843034e+02,
-      "cpu_time": 2.6869674785822286e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/12/1",
-      "iterations": 11365666,
-      "real_time": 6.4047146198390067e+01,
-      "cpu_time": 6.4030651613372697e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/12/2",
-      "iterations": 6117651,
-      "real_time": 1.1035232166828166e+02,
-      "cpu_time": 1.1034970775546375e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/12/3",
-      "iterations": 4512461,
-      "real_time": 1.5934719212622446e+02,
-      "cpu_time": 1.5933079532431327e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/12/4",
-      "iterations": 3394713,
-      "real_time": 2.0214799867461599e+02,
-      "cpu_time": 2.0209661317467911e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/12/6",
-      "iterations": 2270648,
-      "real_time": 3.1233783523621946e+02,
-      "cpu_time": 3.1229102881643064e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/12/8",
-      "iterations": 1759811,
-      "real_time": 3.9604278754467276e+02,
-      "cpu_time": 3.9604082483857508e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/15/1",
-      "iterations": 8687343,
-      "real_time": 7.6983039231792091e+01,
-      "cpu_time": 7.6981419980770895e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/15/2",
-      "iterations": 4955963,
-      "real_time": 1.3700803639520927e+02,
-      "cpu_time": 1.3700808500788966e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/15/3",
-      "iterations": 3639010,
-      "real_time": 1.9288314461828989e+02,
-      "cpu_time": 1.9288350402994513e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/15/4",
-      "iterations": 2613725,
-      "real_time": 2.6284468681672615e+02,
-      "cpu_time": 2.6271738610605422e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/15/6",
-      "iterations": 1863660,
-      "real_time": 3.7728085221995713e+02,
-      "cpu_time": 3.7727428822852801e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/2/15/8",
-      "iterations": 1000000,
-      "real_time": 5.0862821191549301e+02,
-      "cpu_time": 5.0845500000002630e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/1/1",
-      "iterations": 64992944,
-      "real_time": 1.0316672268313182e+01,
-      "cpu_time": 1.0316150627058047e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/1/2",
-      "iterations": 42592807,
-      "real_time": 1.6668357031118255e+01,
-      "cpu_time": 1.6667368271831350e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/1/3",
-      "iterations": 35216936,
-      "real_time": 1.9412243503492750e+01,
-      "cpu_time": 1.9411796642388449e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/1/4",
-      "iterations": 29286742,
-      "real_time": 2.3951316948384065e+01,
-      "cpu_time": 2.3944281682133134e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/1/6",
-      "iterations": 20663231,
-      "real_time": 3.2769599775902847e+01,
-      "cpu_time": 3.2765785757320138e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/1/8",
-      "iterations": 17026825,
-      "real_time": 4.2386166947748293e+01,
-      "cpu_time": 4.2375663108065687e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/2/1",
-      "iterations": 43096283,
-      "real_time": 1.5777518098728892e+01,
-      "cpu_time": 1.5777532368627053e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/2/2",
-      "iterations": 28043074,
-      "real_time": 2.4808773925286083e+01,
-      "cpu_time": 2.4808763832383935e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/2/3",
-      "iterations": 20537676,
-      "real_time": 3.2383738596587712e+01,
-      "cpu_time": 3.2383167404140650e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/2/4",
-      "iterations": 16883825,
-      "real_time": 4.1009372165414604e+01,
-      "cpu_time": 4.1008065411719905e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/2/6",
-      "iterations": 11024664,
-      "real_time": 5.8886719720938295e+01,
-      "cpu_time": 5.8876352150046408e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/2/8",
-      "iterations": 9310368,
-      "real_time": 7.5767626156437032e+01,
-      "cpu_time": 7.5761774400326203e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/3/1",
-      "iterations": 33339525,
-      "real_time": 2.2024360966450818e+01,
-      "cpu_time": 2.2020649664324235e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/3/2",
-      "iterations": 20745351,
-      "real_time": 3.3640688990218322e+01,
-      "cpu_time": 3.3640741966717030e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/3/3",
-      "iterations": 15184579,
-      "real_time": 4.7369305992448858e+01,
-      "cpu_time": 4.7351921972943934e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/3/4",
-      "iterations": 11774006,
-      "real_time": 5.8984107456603738e+01,
-      "cpu_time": 5.8981454570349520e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/3/6",
-      "iterations": 8160791,
-      "real_time": 8.4328569250943218e+01,
-      "cpu_time": 8.4317316789508908e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/3/8",
-      "iterations": 6131476,
-      "real_time": 1.0972331784711314e+02,
-      "cpu_time": 1.0971143000478807e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/4/1",
-      "iterations": 27312916,
-      "real_time": 2.5933041459098458e+01,
-      "cpu_time": 2.5931614185758573e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/4/2",
-      "iterations": 15306067,
-      "real_time": 4.3585445437467484e+01,
-      "cpu_time": 4.3584808559901866e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/4/3",
-      "iterations": 11960496,
-      "real_time": 5.9213498838155310e+01,
-      "cpu_time": 5.9199133547639811e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/4/4",
-      "iterations": 9180809,
-      "real_time": 7.6254237082330079e+01,
-      "cpu_time": 7.6239250811118566e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/4/6",
-      "iterations": 6431459,
-      "real_time": 1.0985451155096177e+02,
-      "cpu_time": 1.0985190141149032e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/4/8",
-      "iterations": 4887415,
-      "real_time": 1.4419382576976491e+02,
-      "cpu_time": 1.4417682967376621e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/8/1",
-      "iterations": 13676416,
-      "real_time": 4.7890571114145779e+01,
-      "cpu_time": 4.7883305099816475e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/8/2",
-      "iterations": 8807801,
-      "real_time": 8.0382177334846844e+01,
-      "cpu_time": 8.0377837782663065e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/8/3",
-      "iterations": 5998183,
-      "real_time": 1.1687517603400644e+02,
-      "cpu_time": 1.1686455715005215e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/8/4",
-      "iterations": 4804755,
-      "real_time": 1.4730310453699278e+02,
-      "cpu_time": 1.4729970622850630e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/8/6",
-      "iterations": 3168984,
-      "real_time": 2.1250873814887458e+02,
-      "cpu_time": 2.1250880408357332e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/8/8",
-      "iterations": 2316745,
-      "real_time": 2.9031885426550616e+02,
-      "cpu_time": 2.9029047219266567e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/12/1",
-      "iterations": 10610884,
-      "real_time": 6.7091701507706901e+01,
-      "cpu_time": 6.7091394081776471e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/12/2",
-      "iterations": 6071698,
-      "real_time": 1.1987622769820872e+02,
-      "cpu_time": 1.1985032852425132e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/12/3",
-      "iterations": 4199286,
-      "real_time": 1.7022283193257698e+02,
-      "cpu_time": 1.7022036603364435e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/12/4",
-      "iterations": 3223341,
-      "real_time": 2.2084220750673069e+02,
-      "cpu_time": 2.2083049854173322e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/12/6",
-      "iterations": 2110258,
-      "real_time": 3.2486837439454968e+02,
-      "cpu_time": 3.2486785975931156e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/12/8",
-      "iterations": 1658882,
-      "real_time": 4.3248637153984356e+02,
-      "cpu_time": 4.3237433403940628e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/15/1",
-      "iterations": 8549096,
-      "real_time": 8.1755232245320613e+01,
-      "cpu_time": 8.1755310736949070e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/15/2",
-      "iterations": 4906771,
-      "real_time": 1.4219038120679400e+02,
-      "cpu_time": 1.4219045478177148e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/15/3",
-      "iterations": 3242032,
-      "real_time": 2.1243927882894664e+02,
-      "cpu_time": 2.1236866261651991e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/15/4",
-      "iterations": 2557479,
-      "real_time": 2.8195440313855738e+02,
-      "cpu_time": 2.8177435670049420e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/15/6",
-      "iterations": 1664534,
-      "real_time": 4.0540242255935544e+02,
-      "cpu_time": 4.0532124907033818e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/3/15/8",
-      "iterations": 1341844,
-      "real_time": 5.2444090298103026e+02,
-      "cpu_time": 5.2437690223306686e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/1/1",
-      "iterations": 62403609,
-      "real_time": 1.1623122679202432e+01,
-      "cpu_time": 1.1620882375569181e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/1/2",
-      "iterations": 39838824,
-      "real_time": 1.7179659544895046e+01,
-      "cpu_time": 1.7179648676375070e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/1/3",
-      "iterations": 32766167,
-      "real_time": 2.1615556255131441e+01,
-      "cpu_time": 2.1606860515603756e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/1/4",
-      "iterations": 24391349,
-      "real_time": 2.7071690169481549e+01,
-      "cpu_time": 2.7070335470169983e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/1/6",
-      "iterations": 18509753,
-      "real_time": 3.6619271630814140e+01,
-      "cpu_time": 3.6617452431698268e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/1/8",
-      "iterations": 14812088,
-      "real_time": 4.7171374350631837e+01,
-      "cpu_time": 4.7167489148051850e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/2/1",
-      "iterations": 36807816,
-      "real_time": 1.7987491516422690e+01,
-      "cpu_time": 1.7987483962645410e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/2/2",
-      "iterations": 23621436,
-      "real_time": 2.8243106264286279e+01,
-      "cpu_time": 2.8235285949593514e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/2/3",
-      "iterations": 18059529,
-      "real_time": 3.7942342518010385e+01,
-      "cpu_time": 3.7940911969518403e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/2/4",
-      "iterations": 13767061,
-      "real_time": 4.8099409165246634e+01,
-      "cpu_time": 4.8085208600441149e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/2/6",
-      "iterations": 10139637,
-      "real_time": 6.6952879276907154e+01,
-      "cpu_time": 6.6951805079415081e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/2/8",
-      "iterations": 8250728,
-      "real_time": 8.8170155535245442e+01,
-      "cpu_time": 8.8151372824304005e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/3/1",
-      "iterations": 29278168,
-      "real_time": 2.3159023406592443e+01,
-      "cpu_time": 2.3158996833409589e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/3/2",
-      "iterations": 17631620,
-      "real_time": 3.9443389771288025e+01,
-      "cpu_time": 3.9430863414704994e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/3/3",
-      "iterations": 12529758,
-      "real_time": 5.4492783743921215e+01,
-      "cpu_time": 5.4488362823931574e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/3/4",
-      "iterations": 10417752,
-      "real_time": 6.6576565565740083e+01,
-      "cpu_time": 6.6576647245975579e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/3/6",
-      "iterations": 7166110,
-      "real_time": 9.9976441742425465e+01,
-      "cpu_time": 9.9964694932119912e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/3/8",
-      "iterations": 5464481,
-      "real_time": 1.2876205205738952e+02,
-      "cpu_time": 1.2875696703859336e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/4/1",
-      "iterations": 23519688,
-      "real_time": 3.0345575244046909e+01,
-      "cpu_time": 3.0342069163502853e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/4/2",
-      "iterations": 14302118,
-      "real_time": 4.9426612122235376e+01,
-      "cpu_time": 4.9414918825307758e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/4/3",
-      "iterations": 10335459,
-      "real_time": 7.2294355962834658e+01,
-      "cpu_time": 7.2122873304418945e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/4/4",
-      "iterations": 6493205,
-      "real_time": 9.9755975976824729e+01,
-      "cpu_time": 9.9201857942263970e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/4/6",
-      "iterations": 4564305,
-      "real_time": 1.4452828283853472e+02,
-      "cpu_time": 1.4386439994697531e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/4/8",
-      "iterations": 3651520,
-      "real_time": 1.9601295598578233e+02,
-      "cpu_time": 1.9472247173779311e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/8/1",
-      "iterations": 11624238,
-      "real_time": 6.0146263001210585e+01,
-      "cpu_time": 6.0092627146829116e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/8/2",
-      "iterations": 6388727,
-      "real_time": 1.1215399483707569e+02,
-      "cpu_time": 1.1142470166592707e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/8/3",
-      "iterations": 4873871,
-      "real_time": 1.6555171444420100e+02,
-      "cpu_time": 1.6384717609472713e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/8/4",
-      "iterations": 3594075,
-      "real_time": 2.0919734646946930e+02,
-      "cpu_time": 2.0288057427848855e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/8/6",
-      "iterations": 2429594,
-      "real_time": 2.8568016052816324e+02,
-      "cpu_time": 2.8101032518191158e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/8/8",
-      "iterations": 1837989,
-      "real_time": 3.6725845149562946e+02,
-      "cpu_time": 3.6611372538137834e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/12/1",
-      "iterations": 8204695,
-      "real_time": 8.1424655276155079e+01,
-      "cpu_time": 8.1355979716493493e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/12/2",
-      "iterations": 4796985,
-      "real_time": 1.4769030756716896e+02,
-      "cpu_time": 1.4744532242648097e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/12/3",
-      "iterations": 3062104,
-      "real_time": 2.1750303906765461e+02,
-      "cpu_time": 2.1693645937564966e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/12/4",
-      "iterations": 2520624,
-      "real_time": 2.8551301858828515e+02,
-      "cpu_time": 2.8371427075199244e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/12/6",
-      "iterations": 1757372,
-      "real_time": 3.9824948044242757e+02,
-      "cpu_time": 3.9803126486596364e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/12/8",
-      "iterations": 1000000,
-      "real_time": 5.2905927901156247e+02,
-      "cpu_time": 5.2889500000003409e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/15/1",
-      "iterations": 7131796,
-      "real_time": 9.7810379170248950e+01,
-      "cpu_time": 9.7782662319559932e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/15/2",
-      "iterations": 4083847,
-      "real_time": 1.7354053151036834e+02,
-      "cpu_time": 1.7344307952771672e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/15/3",
-      "iterations": 2619378,
-      "real_time": 2.7425471238659838e+02,
-      "cpu_time": 2.7410744077410118e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/15/4",
-      "iterations": 1974891,
-      "real_time": 3.3991598773577073e+02,
-      "cpu_time": 3.3965165672437047e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/15/6",
-      "iterations": 1448622,
-      "real_time": 4.7448258004178871e+02,
-      "cpu_time": 4.7440671203394760e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/4/15/8",
-      "iterations": 1077006,
-      "real_time": 6.0661674584073819e+02,
-      "cpu_time": 6.0651286993756878e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/1/1",
-      "iterations": 51451294,
-      "real_time": 1.3556582503605545e+01,
-      "cpu_time": 1.3554275233581883e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/1/2",
-      "iterations": 34442208,
-      "real_time": 2.0249190380766187e+01,
-      "cpu_time": 2.0235955836513707e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/1/3",
-      "iterations": 27289172,
-      "real_time": 2.6551243473243439e+01,
-      "cpu_time": 2.6547635816873239e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/1/4",
-      "iterations": 21995218,
-      "real_time": 3.3027670287106289e+01,
-      "cpu_time": 3.3017949628870511e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/1/6",
-      "iterations": 15328322,
-      "real_time": 4.5239383604584916e+01,
-      "cpu_time": 4.5235805980591003e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/1/8",
-      "iterations": 12413989,
-      "real_time": 5.8476646226957911e+01,
-      "cpu_time": 5.8470568968607047e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/2/1",
-      "iterations": 32691338,
-      "real_time": 2.1089277898415219e+01,
-      "cpu_time": 2.1081149997593990e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/2/2",
-      "iterations": 21468112,
-      "real_time": 3.3973607689995347e+01,
-      "cpu_time": 3.3965119988195426e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/2/3",
-      "iterations": 15165072,
-      "real_time": 4.6516005137118221e+01,
-      "cpu_time": 4.6511285933889241e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/2/4",
-      "iterations": 12315921,
-      "real_time": 5.9578955238892931e+01,
-      "cpu_time": 5.9571103127403411e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/2/6",
-      "iterations": 8621858,
-      "real_time": 8.1341206143922918e+01,
-      "cpu_time": 8.1339196261410933e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/2/8",
-      "iterations": 6631048,
-      "real_time": 1.1145818444051133e+02,
-      "cpu_time": 1.1137621081917288e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/3/1",
-      "iterations": 23903757,
-      "real_time": 2.8763526841208261e+01,
-      "cpu_time": 2.8741716208041286e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/3/2",
-      "iterations": 14966123,
-      "real_time": 4.7201062097685181e+01,
-      "cpu_time": 4.7191714246902819e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/3/3",
-      "iterations": 10801136,
-      "real_time": 6.7185940348810547e+01,
-      "cpu_time": 6.7169971751122972e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/3/4",
-      "iterations": 8389362,
-      "real_time": 8.3364553351704686e+01,
-      "cpu_time": 8.3363907767948348e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/3/6",
-      "iterations": 5463884,
-      "real_time": 1.2765818125495605e+02,
-      "cpu_time": 1.2763740957896786e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/3/8",
-      "iterations": 4501260,
-      "real_time": 1.5720641530327470e+02,
-      "cpu_time": 1.5720176128461773e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/4/1",
-      "iterations": 19483845,
-      "real_time": 3.6366074509964967e+01,
-      "cpu_time": 3.6343288503885347e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/4/2",
-      "iterations": 11406782,
-      "real_time": 6.0186339667239302e+01,
-      "cpu_time": 6.0182968342866729e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/4/3",
-      "iterations": 8338197,
-      "real_time": 8.5351657319080601e+01,
-      "cpu_time": 8.5340631793654168e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/4/4",
-      "iterations": 6058246,
-      "real_time": 1.0923495844860254e+02,
-      "cpu_time": 1.0923343159058757e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/4/6",
-      "iterations": 4363056,
-      "real_time": 1.6283051558762142e+02,
-      "cpu_time": 1.6282990637755179e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/4/8",
-      "iterations": 3260667,
-      "real_time": 2.2207680725963471e+02,
-      "cpu_time": 2.2203064587705936e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/8/1",
-      "iterations": 11241368,
-      "real_time": 6.3151522032228591e+01,
-      "cpu_time": 6.3135287449004743e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/8/2",
-      "iterations": 6031415,
-      "real_time": 1.1361559816589077e+02,
-      "cpu_time": 1.1358727595430599e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/8/3",
-      "iterations": 4288112,
-      "real_time": 1.6079261434146306e+02,
-      "cpu_time": 1.6078684511972247e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/8/4",
-      "iterations": 3241987,
-      "real_time": 2.1923580079367372e+02,
-      "cpu_time": 2.1919489498261038e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/8/6",
-      "iterations": 2082937,
-      "real_time": 3.2217429718655586e+02,
-      "cpu_time": 3.2217681091649717e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/8/8",
-      "iterations": 1690944,
-      "real_time": 4.2858118184490007e+02,
-      "cpu_time": 4.2856652851899872e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/12/1",
-      "iterations": 7393091,
-      "real_time": 9.2698583996211596e+01,
-      "cpu_time": 9.2666247446426070e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/12/2",
-      "iterations": 4260836,
-      "real_time": 1.6870986257641803e+02,
-      "cpu_time": 1.6869811464230420e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/12/3",
-      "iterations": 2726122,
-      "real_time": 2.4784465480026338e+02,
-      "cpu_time": 2.4781356080175183e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/12/4",
-      "iterations": 2133932,
-      "real_time": 3.2471268155478242e+02,
-      "cpu_time": 3.2467716871952445e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/12/6",
-      "iterations": 1448394,
-      "real_time": 4.7851793436190400e+02,
-      "cpu_time": 4.7846511377426896e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/12/8",
-      "iterations": 1137120,
-      "real_time": 6.1080555608747670e+02,
-      "cpu_time": 6.1080536794706779e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/15/1",
-      "iterations": 6325054,
-      "real_time": 1.1604534015976786e+02,
-      "cpu_time": 1.1599711243572453e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/15/2",
-      "iterations": 3266251,
-      "real_time": 2.1890909332904664e+02,
-      "cpu_time": 2.1888091270389398e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/15/3",
-      "iterations": 2340417,
-      "real_time": 3.0651368499006946e+02,
-      "cpu_time": 3.0642573524291839e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/15/4",
-      "iterations": 1737520,
-      "real_time": 3.9936560269846456e+02,
-      "cpu_time": 3.9928633915007259e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/15/6",
-      "iterations": 1217984,
-      "real_time": 5.9439453058201616e+02,
-      "cpu_time": 5.9431815196256832e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/6/15/8",
-      "iterations": 931830,
-      "real_time": 7.5877669842632963e+02,
-      "cpu_time": 7.5873818185715822e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/1/1",
-      "iterations": 46516573,
-      "real_time": 1.4977390101744058e+01,
-      "cpu_time": 1.4972341148175227e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/1/2",
-      "iterations": 29132194,
-      "real_time": 2.2459752739197551e+01,
-      "cpu_time": 2.2457731813814231e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/1/3",
-      "iterations": 23066226,
-      "real_time": 3.0230697554256871e+01,
-      "cpu_time": 3.0222065803047059e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/1/4",
-      "iterations": 18471704,
-      "real_time": 3.6375699396191663e+01,
-      "cpu_time": 3.6374229470113249e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/1/6",
-      "iterations": 10000000,
-      "real_time": 5.0868511397857219e+01,
-      "cpu_time": 5.0868200000007846e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/1/8",
-      "iterations": 10894094,
-      "real_time": 6.6185205023448887e+01,
-      "cpu_time": 6.6171633914671787e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/2/1",
-      "iterations": 29674848,
-      "real_time": 2.4224997445737838e+01,
-      "cpu_time": 2.4216804749935658e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/2/2",
-      "iterations": 18571827,
-      "real_time": 3.8720325686354229e+01,
-      "cpu_time": 3.8710623354393242e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/2/3",
-      "iterations": 13801806,
-      "real_time": 5.1563614210871776e+01,
-      "cpu_time": 5.1561730399628566e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/2/4",
-      "iterations": 10916520,
-      "real_time": 6.5205774635663829e+01,
-      "cpu_time": 6.5198524804604475e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/2/6",
-      "iterations": 7301783,
-      "real_time": 9.5048175634761677e+01,
-      "cpu_time": 9.5020627153679243e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/2/8",
-      "iterations": 5840975,
-      "real_time": 1.2915930182068388e+02,
-      "cpu_time": 1.2900209297249791e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/3/1",
-      "iterations": 21209486,
-      "real_time": 3.7087220640826175e+01,
-      "cpu_time": 3.6957567005632619e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/3/2",
-      "iterations": 9589435,
-      "real_time": 5.4345414620661082e+01,
-      "cpu_time": 5.4340114928559998e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/3/3",
-      "iterations": 9362920,
-      "real_time": 7.8291851360821411e+01,
-      "cpu_time": 7.8260841703224330e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/3/4",
-      "iterations": 7038359,
-      "real_time": 9.6070806847655447e+01,
-      "cpu_time": 9.6065432297503520e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/3/6",
-      "iterations": 5137238,
-      "real_time": 1.4327072583245283e+02,
-      "cpu_time": 1.4320730322402366e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/3/8",
-      "iterations": 3697092,
-      "real_time": 1.9392137144099195e+02,
-      "cpu_time": 1.9382585015465978e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/4/1",
-      "iterations": 16382623,
-      "real_time": 4.3238417985279668e+01,
-      "cpu_time": 4.3192594983110659e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/4/2",
-      "iterations": 10265284,
-      "real_time": 7.3805508839851271e+01,
-      "cpu_time": 7.3513601766887291e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/4/3",
-      "iterations": 6711088,
-      "real_time": 9.7472410299774424e+01,
-      "cpu_time": 9.7390765848993198e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/4/4",
-      "iterations": 5544906,
-      "real_time": 1.2865057497267418e+02,
-      "cpu_time": 1.2861083668506240e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/4/6",
-      "iterations": 3905509,
-      "real_time": 1.8542579443530406e+02,
-      "cpu_time": 1.8540067376621201e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/4/8",
-      "iterations": 2729811,
-      "real_time": 2.6029918041362305e+02,
-      "cpu_time": 2.6025904357483864e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/8/1",
-      "iterations": 8843744,
-      "real_time": 7.5617499890368904e+01,
-      "cpu_time": 7.5583825131078228e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/8/2",
-      "iterations": 5366041,
-      "real_time": 1.3194637276852586e+02,
-      "cpu_time": 1.3192892115434097e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/8/3",
-      "iterations": 3604866,
-      "real_time": 1.9550793538299345e+02,
-      "cpu_time": 1.9549436789050722e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/8/4",
-      "iterations": 2839284,
-      "real_time": 2.5175813584366495e+02,
-      "cpu_time": 2.5172261739227918e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/8/6",
-      "iterations": 1987287,
-      "real_time": 3.6079913467532680e+02,
-      "cpu_time": 3.6075916563636036e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/8/8",
-      "iterations": 1484979,
-      "real_time": 4.8329740019174761e+02,
-      "cpu_time": 4.8325329853153823e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/12/1",
-      "iterations": 6513627,
-      "real_time": 1.0758186768089902e+02,
-      "cpu_time": 1.0752427180739905e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/12/2",
-      "iterations": 3404090,
-      "real_time": 1.9945774643077795e+02,
-      "cpu_time": 1.9941834675345973e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/12/3",
-      "iterations": 2538715,
-      "real_time": 2.8033430340346098e+02,
-      "cpu_time": 2.8028983166679978e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/12/4",
-      "iterations": 1962808,
-      "real_time": 3.6131444033815620e+02,
-      "cpu_time": 3.6130380556836366e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/12/6",
-      "iterations": 1330849,
-      "real_time": 5.3696716454749549e+02,
-      "cpu_time": 5.3680019295954082e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/12/8",
-      "iterations": 938841,
-      "real_time": 7.0354190640354318e+02,
-      "cpu_time": 7.0351848715594713e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/15/1",
-      "iterations": 5313496,
-      "real_time": 1.2908906454210609e+02,
-      "cpu_time": 1.2904761761371651e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/15/2",
-      "iterations": 2750783,
-      "real_time": 2.3788409413018474e+02,
-      "cpu_time": 2.3787990546689804e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/15/3",
-      "iterations": 2038748,
-      "real_time": 3.3997233348810170e+02,
-      "cpu_time": 3.3994245487917595e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/15/4",
-      "iterations": 1511667,
-      "real_time": 4.4431510644682237e+02,
-      "cpu_time": 4.4431280169507704e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/15/6",
-      "iterations": 1036361,
-      "real_time": 6.5201146125101457e+02,
-      "cpu_time": 6.5199095681905658e+02,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeMatrixMultiplyDynamic/8/15/8",
-      "iterations": 799114,
-      "real_time": 8.9333044218943689e+02,
-      "cpu_time": 8.9311412389216093e+02,
-      "time_unit": "ns"
-    }
-  ]
-}
diff --git a/third_party/ceres/internal/ceres/benchmarks/macbook-pro-2014-small_blas_gemv_benchmark.json b/third_party/ceres/internal/ceres/benchmarks/macbook-pro-2014-small_blas_gemv_benchmark.json
deleted file mode 100644
index a8a7795..0000000
--- a/third_party/ceres/internal/ceres/benchmarks/macbook-pro-2014-small_blas_gemv_benchmark.json
+++ /dev/null
@@ -1,599 +0,0 @@
-{
-  "context": {
-    "date": "2018-03-23 13:34:44",
-    "num_cpus": 8,
-    "mhz_per_cpu": 2200,
-    "cpu_scaling_enabled": false,
-    "library_build_type": "release"
-  },
-  "benchmarks": [
-    {
-      "name": "BM_MatrixVectorMultiply/1/1",
-      "iterations": 75370933,
-      "real_time": 8.9246668610270454e+00,
-      "cpu_time": 8.9241564782009526e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/1/2",
-      "iterations": 79276096,
-      "real_time": 9.1768834835134339e+00,
-      "cpu_time": 9.1733452666488553e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/1/3",
-      "iterations": 86461383,
-      "real_time": 8.1339961325563639e+00,
-      "cpu_time": 8.1315146208105382e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/1/4",
-      "iterations": 80784766,
-      "real_time": 8.6175041966102217e+00,
-      "cpu_time": 8.6169092821287645e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/1/8",
-      "iterations": 62071595,
-      "real_time": 1.1623699777324967e+01,
-      "cpu_time": 1.1622159862333158e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/1/12",
-      "iterations": 46187548,
-      "real_time": 1.4648812380771005e+01,
-      "cpu_time": 1.4647497632911776e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/1/15",
-      "iterations": 43216546,
-      "real_time": 1.5979603784946462e+01,
-      "cpu_time": 1.5978764244602067e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/1",
-      "iterations": 85460694,
-      "real_time": 8.4557136173013969e+00,
-      "cpu_time": 8.4517333781539410e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/2",
-      "iterations": 73809298,
-      "real_time": 9.3563609147448190e+00,
-      "cpu_time": 9.3563550760230729e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/3",
-      "iterations": 60910879,
-      "real_time": 1.1561664410556345e+01,
-      "cpu_time": 1.1560660616964670e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/4",
-      "iterations": 57011614,
-      "real_time": 1.2235077136567469e+01,
-      "cpu_time": 1.2233770473503897e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/8",
-      "iterations": 37294746,
-      "real_time": 1.7008151843698663e+01,
-      "cpu_time": 1.7008079368605955e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/12",
-      "iterations": 36096615,
-      "real_time": 2.0234282769587981e+01,
-      "cpu_time": 2.0232423455772722e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/2/15",
-      "iterations": 29620477,
-      "real_time": 2.4192867556653738e+01,
-      "cpu_time": 2.4189515921705162e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/1",
-      "iterations": 70819380,
-      "real_time": 1.0241319961826111e+01,
-      "cpu_time": 1.0236957736709932e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/2",
-      "iterations": 49055678,
-      "real_time": 1.4430740841341054e+01,
-      "cpu_time": 1.4428604982281607e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/3",
-      "iterations": 46364678,
-      "real_time": 1.4935508190628967e+01,
-      "cpu_time": 1.4931711593036367e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/4",
-      "iterations": 41730007,
-      "real_time": 1.6495830781686326e+01,
-      "cpu_time": 1.6495492080794520e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/8",
-      "iterations": 32099490,
-      "real_time": 2.1899212414803351e+01,
-      "cpu_time": 2.1896111122014723e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/12",
-      "iterations": 26976615,
-      "real_time": 2.5065036735486377e+01,
-      "cpu_time": 2.5063782094232344e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/3/15",
-      "iterations": 23158717,
-      "real_time": 3.0120809500024972e+01,
-      "cpu_time": 3.0119803268894366e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/1",
-      "iterations": 54510341,
-      "real_time": 1.2223535017736792e+01,
-      "cpu_time": 1.2219974921822656e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/2",
-      "iterations": 45100187,
-      "real_time": 1.5694088963631776e+01,
-      "cpu_time": 1.5693859539872824e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/3",
-      "iterations": 39166098,
-      "real_time": 1.7640497530917788e+01,
-      "cpu_time": 1.7634996470672178e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/4",
-      "iterations": 34750664,
-      "real_time": 2.1339453860003271e+01,
-      "cpu_time": 2.1335160674915432e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/8",
-      "iterations": 30043950,
-      "real_time": 2.3893673667994594e+01,
-      "cpu_time": 2.3885541015745137e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/12",
-      "iterations": 21692445,
-      "real_time": 3.2236621367456465e+01,
-      "cpu_time": 3.2233111574098835e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/4/15",
-      "iterations": 17051627,
-      "real_time": 3.9894564547043721e+01,
-      "cpu_time": 3.9893026043790357e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/1",
-      "iterations": 43622404,
-      "real_time": 1.6067802864650357e+01,
-      "cpu_time": 1.6063832703947249e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/2",
-      "iterations": 33862065,
-      "real_time": 1.9549917288877438e+01,
-      "cpu_time": 1.9548601067300531e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/3",
-      "iterations": 32245731,
-      "real_time": 2.1789015355885351e+01,
-      "cpu_time": 2.1776557027037121e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/4",
-      "iterations": 31862790,
-      "real_time": 2.2554395395088299e+01,
-      "cpu_time": 2.2547178071976678e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/8",
-      "iterations": 20659998,
-      "real_time": 3.2157974121069905e+01,
-      "cpu_time": 3.2154552967527074e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/12",
-      "iterations": 15551719,
-      "real_time": 4.5013863291655184e+01,
-      "cpu_time": 4.4924037014814900e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/6/15",
-      "iterations": 12874274,
-      "real_time": 5.4008553339302892e+01,
-      "cpu_time": 5.4001647005493055e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/1",
-      "iterations": 35825968,
-      "real_time": 1.9189763050020964e+01,
-      "cpu_time": 1.9188037012705493e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/2",
-      "iterations": 28860743,
-      "real_time": 2.3957427986537024e+01,
-      "cpu_time": 2.3950526845410646e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/3",
-      "iterations": 25577503,
-      "real_time": 2.6716626640397276e+01,
-      "cpu_time": 2.6707845562563413e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/4",
-      "iterations": 27263982,
-      "real_time": 2.6871541249702378e+01,
-      "cpu_time": 2.6865224602921419e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/8",
-      "iterations": 18390176,
-      "real_time": 3.8055934538584296e+01,
-      "cpu_time": 3.8052327503554217e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/12",
-      "iterations": 13196592,
-      "real_time": 5.7004881560951908e+01,
-      "cpu_time": 5.7001989604588779e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixVectorMultiply/8/15",
-      "iterations": 10753844,
-      "real_time": 6.5649689450107800e+01,
-      "cpu_time": 6.5649734178773684e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/1",
-      "iterations": 87950748,
-      "real_time": 8.1611993221244958e+00,
-      "cpu_time": 8.1607606111547870e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/2",
-      "iterations": 82828474,
-      "real_time": 8.1970134683295868e+00,
-      "cpu_time": 8.1947664519329049e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/3",
-      "iterations": 79647729,
-      "real_time": 9.1236429599833766e+00,
-      "cpu_time": 9.1225827669236015e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/4",
-      "iterations": 60000343,
-      "real_time": 1.1501341685749610e+01,
-      "cpu_time": 1.1497550939000405e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/8",
-      "iterations": 42555778,
-      "real_time": 1.6328523285845055e+01,
-      "cpu_time": 1.6328429009099469e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/12",
-      "iterations": 34690560,
-      "real_time": 2.0900962193107770e+01,
-      "cpu_time": 2.0898105997712126e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/1/15",
-      "iterations": 22984807,
-      "real_time": 3.0876962381519814e+01,
-      "cpu_time": 3.0874873128149208e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/1",
-      "iterations": 82616342,
-      "real_time": 8.4971062507129691e+00,
-      "cpu_time": 8.4946026780028845e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/2",
-      "iterations": 66217648,
-      "real_time": 1.0427153785878781e+01,
-      "cpu_time": 1.0426691687992145e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/3",
-      "iterations": 52740629,
-      "real_time": 1.3438166219244954e+01,
-      "cpu_time": 1.3437818498524338e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/4",
-      "iterations": 44820940,
-      "real_time": 1.6290960697977020e+01,
-      "cpu_time": 1.6288391095769057e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/8",
-      "iterations": 28365116,
-      "real_time": 2.4753231118037846e+01,
-      "cpu_time": 2.4752586945175814e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/12",
-      "iterations": 20152990,
-      "real_time": 3.3992543981506721e+01,
-      "cpu_time": 3.3989646201382811e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/2/15",
-      "iterations": 17477847,
-      "real_time": 4.1158645625261137e+01,
-      "cpu_time": 4.1148031562468589e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/1",
-      "iterations": 85071217,
-      "real_time": 8.6638082650656063e+00,
-      "cpu_time": 8.6620601654259222e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/2",
-      "iterations": 56597671,
-      "real_time": 1.2288259387556581e+01,
-      "cpu_time": 1.2287025026171113e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/3",
-      "iterations": 44866043,
-      "real_time": 1.6032917745159793e+01,
-      "cpu_time": 1.6028580902488002e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/4",
-      "iterations": 40158108,
-      "real_time": 1.7255109055033969e+01,
-      "cpu_time": 1.7254896570326416e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/8",
-      "iterations": 25254165,
-      "real_time": 2.8276512487003924e+01,
-      "cpu_time": 2.8273039318464768e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/12",
-      "iterations": 18068759,
-      "real_time": 3.9514967575238380e+01,
-      "cpu_time": 3.9513781771067336e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/3/15",
-      "iterations": 14997033,
-      "real_time": 4.7088586853686969e+01,
-      "cpu_time": 4.7085713554140796e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/1",
-      "iterations": 78983594,
-      "real_time": 8.9500300024881376e+00,
-      "cpu_time": 8.9485925393569730e+00,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/2",
-      "iterations": 50655629,
-      "real_time": 1.3881427511987113e+01,
-      "cpu_time": 1.3880806810236136e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/3",
-      "iterations": 42322156,
-      "real_time": 1.6617042784854270e+01,
-      "cpu_time": 1.6616851939206612e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/4",
-      "iterations": 35709549,
-      "real_time": 1.9691253563928413e+01,
-      "cpu_time": 1.9687591125835635e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/8",
-      "iterations": 20404356,
-      "real_time": 3.3671754796556790e+01,
-      "cpu_time": 3.3668153996136844e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/12",
-      "iterations": 15090728,
-      "real_time": 4.7125273353021399e+01,
-      "cpu_time": 4.7122776316689396e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/4/15",
-      "iterations": 11336950,
-      "real_time": 6.2453472226796620e+01,
-      "cpu_time": 6.2451805820789019e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/1",
-      "iterations": 65892276,
-      "real_time": 1.0683369458878103e+01,
-      "cpu_time": 1.0683331078137206e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/2",
-      "iterations": 45151386,
-      "real_time": 1.5743454386474488e+01,
-      "cpu_time": 1.5741886638873094e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/3",
-      "iterations": 35555194,
-      "real_time": 2.0272604644448467e+01,
-      "cpu_time": 2.0265815453011015e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/4",
-      "iterations": 28844688,
-      "real_time": 2.4899265682219198e+01,
-      "cpu_time": 2.4896646481320971e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/8",
-      "iterations": 16677944,
-      "real_time": 4.2613494320617384e+01,
-      "cpu_time": 4.2610288174610147e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/12",
-      "iterations": 10657572,
-      "real_time": 6.7212158173757643e+01,
-      "cpu_time": 6.7206583263055407e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/6/15",
-      "iterations": 8660580,
-      "real_time": 8.0843434848483710e+01,
-      "cpu_time": 8.0843430809486151e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/1",
-      "iterations": 57066458,
-      "real_time": 1.2319644088657304e+01,
-      "cpu_time": 1.2319338270477425e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/2",
-      "iterations": 38263912,
-      "real_time": 1.8003573181401965e+01,
-      "cpu_time": 1.7997610908158087e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/3",
-      "iterations": 29869088,
-      "real_time": 2.4137524754083010e+01,
-      "cpu_time": 2.4137328866552775e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/4",
-      "iterations": 22616613,
-      "real_time": 3.0444019799836454e+01,
-      "cpu_time": 3.0442931485806785e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/8",
-      "iterations": 12552902,
-      "real_time": 5.4102999925791671e+01,
-      "cpu_time": 5.4099761154830723e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/12",
-      "iterations": 9204229,
-      "real_time": 7.7715734577381653e+01,
-      "cpu_time": 7.7705802408872202e+01,
-      "time_unit": "ns"
-    },
-    {
-      "name": "BM_MatrixTransposeVectorMultiply/8/15",
-      "iterations": 7493764,
-      "real_time": 9.3483444364895007e+01,
-      "cpu_time": 9.3483461715635883e+01,
-      "time_unit": "ns"
-    }
-  ]
-}
diff --git a/third_party/ceres/internal/ceres/block_evaluate_preparer.cc b/third_party/ceres/internal/ceres/block_evaluate_preparer.cc
deleted file mode 100644
index c8b8177..0000000
--- a/third_party/ceres/internal/ceres/block_evaluate_preparer.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/block_evaluate_preparer.h"
-
-#include <vector>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/parameter_block.h"
-#include "ceres/residual_block.h"
-#include "ceres/sparse_matrix.h"
-
-namespace ceres::internal {
-
-void BlockEvaluatePreparer::Init(int const* const* jacobian_layout,
-                                 int max_derivatives_per_residual_block) {
-  jacobian_layout_ = jacobian_layout;
-  scratch_evaluate_preparer_.Init(max_derivatives_per_residual_block);
-}
-
-// Point the jacobian blocks directly into the block sparse matrix.
-void BlockEvaluatePreparer::Prepare(const ResidualBlock* residual_block,
-                                    int residual_block_index,
-                                    SparseMatrix* jacobian,
-                                    double** jacobians) {
-  // If the overall jacobian is not available, use the scratch space.
-  if (jacobian == nullptr) {
-    scratch_evaluate_preparer_.Prepare(
-        residual_block, residual_block_index, jacobian, jacobians);
-    return;
-  }
-
-  double* jacobian_values =
-      down_cast<BlockSparseMatrix*>(jacobian)->mutable_values();
-
-  const int* jacobian_block_offset = jacobian_layout_[residual_block_index];
-  const int num_parameter_blocks = residual_block->NumParameterBlocks();
-  for (int j = 0; j < num_parameter_blocks; ++j) {
-    if (!residual_block->parameter_blocks()[j]->IsConstant()) {
-      jacobians[j] = jacobian_values + *jacobian_block_offset;
-
-      // The jacobian_block_offset can't be indexed with 'j' since the code
-      // that creates the layout strips out any blocks for inactive
-      // parameters. Instead, bump the pointer for active parameters only.
-      jacobian_block_offset++;
-    } else {
-      jacobians[j] = nullptr;
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_evaluate_preparer.h b/third_party/ceres/internal/ceres/block_evaluate_preparer.h
deleted file mode 100644
index 8febfac..0000000
--- a/third_party/ceres/internal/ceres/block_evaluate_preparer.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A evaluate preparer which puts jacobian the evaluated jacobian blocks
-// directly into their final resting place in an overall block sparse matrix.
-// The evaluator takes care to avoid evaluating the jacobian for fixed
-// parameters.
-
-#ifndef CERES_INTERNAL_BLOCK_EVALUATE_PREPARER_H_
-#define CERES_INTERNAL_BLOCK_EVALUATE_PREPARER_H_
-
-#include "ceres/internal/export.h"
-#include "ceres/scratch_evaluate_preparer.h"
-
-namespace ceres::internal {
-
-class ResidualBlock;
-class SparseMatrix;
-
-class CERES_NO_EXPORT BlockEvaluatePreparer {
- public:
-  // Using Init() instead of a constructor allows for allocating this structure
-  // with new[]. This is because C++ doesn't allow passing arguments to objects
-  // constructed with new[] (as opposed to plain 'new').
-  void Init(int const* const* jacobian_layout,
-            int max_derivatives_per_residual_block);
-
-  // EvaluatePreparer interface
-
-  // Point the jacobian blocks directly into the block sparse matrix, if
-  // jacobian is non-null. Otherwise, uses an internal per-thread buffer to
-  // store the jacobians temporarily.
-  void Prepare(const ResidualBlock* residual_block,
-               int residual_block_index,
-               SparseMatrix* jacobian,
-               double** jacobians);
-
- private:
-  int const* const* jacobian_layout_;
-
-  // For the case that the overall jacobian is not available, but the
-  // individual jacobians are requested, use a pass-through scratch evaluate
-  // preparer.
-  ScratchEvaluatePreparer scratch_evaluate_preparer_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_BLOCK_EVALUATE_PREPARER_H_
diff --git a/third_party/ceres/internal/ceres/block_jacobi_preconditioner.cc b/third_party/ceres/internal/ceres/block_jacobi_preconditioner.cc
deleted file mode 100644
index 8f8893f..0000000
--- a/third_party/ceres/internal/ceres/block_jacobi_preconditioner.cc
+++ /dev/null
@@ -1,226 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/block_jacobi_preconditioner.h"
-
-#include <memory>
-#include <mutex>
-#include <utility>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_diagonal_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/parallel_for.h"
-#include "ceres/small_blas.h"
-
-namespace ceres::internal {
-
-BlockSparseJacobiPreconditioner::BlockSparseJacobiPreconditioner(
-    Preconditioner::Options options, const BlockSparseMatrix& A)
-    : options_(std::move(options)) {
-  m_ = std::make_unique<BlockRandomAccessDiagonalMatrix>(
-      A.block_structure()->cols, options_.context, options_.num_threads);
-}
-
-BlockSparseJacobiPreconditioner::~BlockSparseJacobiPreconditioner() = default;
-
-bool BlockSparseJacobiPreconditioner::UpdateImpl(const BlockSparseMatrix& A,
-                                                 const double* D) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-  m_->SetZero();
-
-  ParallelFor(options_.context,
-              0,
-              bs->rows.size(),
-              options_.num_threads,
-              [this, bs, values](int i) {
-                const int row_block_size = bs->rows[i].block.size;
-                const std::vector<Cell>& cells = bs->rows[i].cells;
-                for (const auto& cell : cells) {
-                  const int block_id = cell.block_id;
-                  const int col_block_size = bs->cols[block_id].size;
-                  int r, c, row_stride, col_stride;
-                  CellInfo* cell_info = m_->GetCell(
-                      block_id, block_id, &r, &c, &row_stride, &col_stride);
-                  MatrixRef m(cell_info->values, row_stride, col_stride);
-                  ConstMatrixRef b(
-                      values + cell.position, row_block_size, col_block_size);
-                  auto lock =
-                      MakeConditionalLock(options_.num_threads, cell_info->m);
-                  // clang-format off
-                  MatrixTransposeMatrixMultiply<Eigen::Dynamic, Eigen::Dynamic,
-                      Eigen::Dynamic,Eigen::Dynamic, 1>(
-                          values + cell.position, row_block_size,col_block_size,
-                          values + cell.position, row_block_size,col_block_size,
-                          cell_info->values,r, c,row_stride,col_stride);
-                  // clang-format on
-                }
-              });
-
-  if (D != nullptr) {
-    // Add the diagonal.
-    ParallelFor(options_.context,
-                0,
-                bs->cols.size(),
-                options_.num_threads,
-                [this, bs, D](int i) {
-                  const int block_size = bs->cols[i].size;
-                  int r, c, row_stride, col_stride;
-                  CellInfo* cell_info =
-                      m_->GetCell(i, i, &r, &c, &row_stride, &col_stride);
-                  MatrixRef m(cell_info->values, row_stride, col_stride);
-                  m.block(r, c, block_size, block_size).diagonal() +=
-                      ConstVectorRef(D + bs->cols[i].position, block_size)
-                          .array()
-                          .square()
-                          .matrix();
-                });
-  }
-
-  m_->Invert();
-  return true;
-}
-
-BlockCRSJacobiPreconditioner::BlockCRSJacobiPreconditioner(
-    Preconditioner::Options options, const CompressedRowSparseMatrix& A)
-    : options_(std::move(options)), locks_(A.col_blocks().size()) {
-  auto& col_blocks = A.col_blocks();
-
-  // Compute the number of non-zeros in the preconditioner. This is needed so
-  // that we can construct the CompressedRowSparseMatrix.
-  const int m_nnz = SumSquaredSizes(col_blocks);
-  m_ = std::make_unique<CompressedRowSparseMatrix>(
-      A.num_cols(), A.num_cols(), m_nnz);
-
-  const int num_col_blocks = col_blocks.size();
-
-  // Populate the sparsity structure of the preconditioner matrix.
-  int* m_cols = m_->mutable_cols();
-  int* m_rows = m_->mutable_rows();
-  m_rows[0] = 0;
-  for (int i = 0, idx = 0; i < num_col_blocks; ++i) {
-    // For each column block populate a diagonal block in the preconditioner.
-    // Not that the because of the way the CompressedRowSparseMatrix format
-    // works, the entire diagonal block is laid out contiguously in memory as a
-    // row-major matrix. We will use this when updating the block.
-    auto& block = col_blocks[i];
-    for (int j = 0; j < block.size; ++j) {
-      for (int k = 0; k < block.size; ++k, ++idx) {
-        m_cols[idx] = block.position + k;
-      }
-      m_rows[block.position + j + 1] = idx;
-    }
-  }
-
-  // In reality we only need num_col_blocks locks, however that would require
-  // that in UpdateImpl we are able to look up the column block from the it
-  // first column. To save ourselves this map we will instead spend a few extra
-  // lock objects.
-  std::vector<std::mutex> locks(A.num_cols());
-  locks_.swap(locks);
-  CHECK_EQ(m_rows[A.num_cols()], m_nnz);
-}
-
-BlockCRSJacobiPreconditioner::~BlockCRSJacobiPreconditioner() = default;
-
-bool BlockCRSJacobiPreconditioner::UpdateImpl(
-    const CompressedRowSparseMatrix& A, const double* D) {
-  const auto& col_blocks = A.col_blocks();
-  const auto& row_blocks = A.row_blocks();
-  const int num_col_blocks = col_blocks.size();
-  const int num_row_blocks = row_blocks.size();
-
-  const int* a_rows = A.rows();
-  const int* a_cols = A.cols();
-  const double* a_values = A.values();
-  double* m_values = m_->mutable_values();
-  const int* m_rows = m_->rows();
-
-  m_->SetZero();
-
-  ParallelFor(
-      options_.context,
-      0,
-      num_row_blocks,
-      options_.num_threads,
-      [this, row_blocks, a_rows, a_cols, a_values, m_values, m_rows](int i) {
-        const int row = row_blocks[i].position;
-        const int row_block_size = row_blocks[i].size;
-        const int row_nnz = a_rows[row + 1] - a_rows[row];
-        ConstMatrixRef row_block(
-            a_values + a_rows[row], row_block_size, row_nnz);
-        int c = 0;
-        while (c < row_nnz) {
-          const int idx = a_rows[row] + c;
-          const int col = a_cols[idx];
-          const int col_block_size = m_rows[col + 1] - m_rows[col];
-
-          // We make use of the fact that the entire diagonal block is
-          // stored contiguously in memory as a row-major matrix.
-          MatrixRef m(m_values + m_rows[col], col_block_size, col_block_size);
-          // We do not have a row_stride version of
-          // MatrixTransposeMatrixMultiply, otherwise we could use it
-          // here to further speed up the following expression.
-          auto b = row_block.middleCols(c, col_block_size);
-          auto lock = MakeConditionalLock(options_.num_threads, locks_[col]);
-          m.noalias() += b.transpose() * b;
-          c += col_block_size;
-        }
-      });
-
-  ParallelFor(
-      options_.context,
-      0,
-      num_col_blocks,
-      options_.num_threads,
-      [col_blocks, m_rows, m_values, D](int i) {
-        const int col = col_blocks[i].position;
-        const int col_block_size = col_blocks[i].size;
-        MatrixRef m(m_values + m_rows[col], col_block_size, col_block_size);
-
-        if (D != nullptr) {
-          m.diagonal() +=
-              ConstVectorRef(D + col, col_block_size).array().square().matrix();
-        }
-
-        // TODO(sameeragarwal): Deal with Cholesky inversion failure here and
-        // elsewhere.
-        m = m.llt().solve(Matrix::Identity(col_block_size, col_block_size));
-      });
-
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_jacobi_preconditioner.h b/third_party/ceres/internal/ceres/block_jacobi_preconditioner.h
deleted file mode 100644
index d175802..0000000
--- a/third_party/ceres/internal/ceres/block_jacobi_preconditioner.h
+++ /dev/null
@@ -1,104 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_BLOCK_JACOBI_PRECONDITIONER_H_
-#define CERES_INTERNAL_BLOCK_JACOBI_PRECONDITIONER_H_
-
-#include <memory>
-
-#include "ceres/block_random_access_diagonal_matrix.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/preconditioner.h"
-
-namespace ceres::internal {
-
-class BlockSparseMatrix;
-class CompressedRowSparseMatrix;
-
-// A block Jacobi preconditioner. This is intended for use with
-// conjugate gradients, or other iterative symmetric solvers.
-
-// This version of the preconditioner is for use with BlockSparseMatrix
-// Jacobians.
-//
-// TODO(https://github.com/ceres-solver/ceres-solver/issues/936):
-// BlockSparseJacobiPreconditioner::RightMultiply will benefit from
-// multithreading
-class CERES_NO_EXPORT BlockSparseJacobiPreconditioner
-    : public BlockSparseMatrixPreconditioner {
- public:
-  // A must remain valid while the BlockJacobiPreconditioner is.
-  explicit BlockSparseJacobiPreconditioner(Preconditioner::Options,
-                                           const BlockSparseMatrix& A);
-  ~BlockSparseJacobiPreconditioner() override;
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final {
-    return m_->RightMultiplyAndAccumulate(x, y);
-  }
-  int num_rows() const final { return m_->num_rows(); }
-  int num_cols() const final { return m_->num_rows(); }
-  const BlockRandomAccessDiagonalMatrix& matrix() const { return *m_; }
-
- private:
-  bool UpdateImpl(const BlockSparseMatrix& A, const double* D) final;
-
-  Preconditioner::Options options_;
-  std::unique_ptr<BlockRandomAccessDiagonalMatrix> m_;
-};
-
-// This version of the preconditioner is for use with CompressedRowSparseMatrix
-// Jacobians.
-class CERES_NO_EXPORT BlockCRSJacobiPreconditioner
-    : public CompressedRowSparseMatrixPreconditioner {
- public:
-  // A must remain valid while the BlockJacobiPreconditioner is.
-  explicit BlockCRSJacobiPreconditioner(Preconditioner::Options options,
-                                        const CompressedRowSparseMatrix& A);
-  ~BlockCRSJacobiPreconditioner() override;
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final {
-    m_->RightMultiplyAndAccumulate(x, y);
-  }
-  int num_rows() const final { return m_->num_rows(); }
-  int num_cols() const final { return m_->num_rows(); }
-  const CompressedRowSparseMatrix& matrix() const { return *m_; }
-
- private:
-  bool UpdateImpl(const CompressedRowSparseMatrix& A, const double* D) final;
-
-  Preconditioner::Options options_;
-  std::vector<std::mutex> locks_;
-  std::unique_ptr<CompressedRowSparseMatrix> m_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_BLOCK_JACOBI_PRECONDITIONER_H_
diff --git a/third_party/ceres/internal/ceres/block_jacobi_preconditioner_benchmark.cc b/third_party/ceres/internal/ceres/block_jacobi_preconditioner_benchmark.cc
deleted file mode 100644
index e6571f3..0000000
--- a/third_party/ceres/internal/ceres/block_jacobi_preconditioner_benchmark.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <memory>
-#include <random>
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/block_jacobi_preconditioner.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/fake_bundle_adjustment_jacobian.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-
-namespace ceres::internal {
-
-constexpr int kNumCameras = 1000;
-constexpr int kNumPoints = 10000;
-constexpr int kCameraSize = 6;
-constexpr int kPointSize = 3;
-constexpr double kVisibility = 0.1;
-
-constexpr int kNumRowBlocks = 100000;
-constexpr int kNumColBlocks = 10000;
-constexpr int kMinRowBlockSize = 1;
-constexpr int kMaxRowBlockSize = 5;
-constexpr int kMinColBlockSize = 1;
-constexpr int kMaxColBlockSize = 15;
-constexpr double kBlockDensity = 5.0 / kNumColBlocks;
-
-static void BM_BlockSparseJacobiPreconditionerBA(benchmark::State& state) {
-  std::mt19937 prng;
-  auto jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-
-  Preconditioner::Options preconditioner_options;
-  ContextImpl context;
-  preconditioner_options.context = &context;
-  preconditioner_options.num_threads = static_cast<int>(state.range(0));
-  context.EnsureMinimumThreads(preconditioner_options.num_threads);
-  BlockSparseJacobiPreconditioner p(preconditioner_options, *jacobian);
-
-  Vector d = Vector::Ones(jacobian->num_cols());
-  for (auto _ : state) {
-    p.Update(*jacobian, d.data());
-  }
-}
-
-BENCHMARK(BM_BlockSparseJacobiPreconditionerBA)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_BlockCRSJacobiPreconditionerBA(benchmark::State& state) {
-  std::mt19937 prng;
-  auto jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-
-  auto jacobian_crs = jacobian->ToCompressedRowSparseMatrix();
-  Preconditioner::Options preconditioner_options;
-  ContextImpl context;
-  preconditioner_options.context = &context;
-  preconditioner_options.num_threads = static_cast<int>(state.range(0));
-  context.EnsureMinimumThreads(preconditioner_options.num_threads);
-  BlockCRSJacobiPreconditioner p(preconditioner_options, *jacobian_crs);
-
-  Vector d = Vector::Ones(jacobian_crs->num_cols());
-  for (auto _ : state) {
-    p.Update(*jacobian_crs, d.data());
-  }
-}
-
-BENCHMARK(BM_BlockCRSJacobiPreconditionerBA)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_BlockSparseJacobiPreconditionerUnstructured(
-    benchmark::State& state) {
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  Preconditioner::Options preconditioner_options;
-  ContextImpl context;
-  preconditioner_options.context = &context;
-  preconditioner_options.num_threads = static_cast<int>(state.range(0));
-  context.EnsureMinimumThreads(preconditioner_options.num_threads);
-  BlockSparseJacobiPreconditioner p(preconditioner_options, *jacobian);
-
-  Vector d = Vector::Ones(jacobian->num_cols());
-  for (auto _ : state) {
-    p.Update(*jacobian, d.data());
-  }
-}
-
-BENCHMARK(BM_BlockSparseJacobiPreconditionerUnstructured)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_BlockCRSJacobiPreconditionerUnstructured(
-    benchmark::State& state) {
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  auto jacobian_crs = jacobian->ToCompressedRowSparseMatrix();
-  Preconditioner::Options preconditioner_options;
-  ContextImpl context;
-  preconditioner_options.context = &context;
-  preconditioner_options.num_threads = static_cast<int>(state.range(0));
-  context.EnsureMinimumThreads(preconditioner_options.num_threads);
-  BlockCRSJacobiPreconditioner p(preconditioner_options, *jacobian_crs);
-
-  Vector d = Vector::Ones(jacobian_crs->num_cols());
-  for (auto _ : state) {
-    p.Update(*jacobian_crs, d.data());
-  }
-}
-BENCHMARK(BM_BlockCRSJacobiPreconditionerUnstructured)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/block_jacobi_preconditioner_test.cc b/third_party/ceres/internal/ceres/block_jacobi_preconditioner_test.cc
deleted file mode 100644
index ca19a0d..0000000
--- a/third_party/ceres/internal/ceres/block_jacobi_preconditioner_test.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_jacobi_preconditioner.h"
-
-#include <memory>
-#include <random>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_diagonal_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(BlockSparseJacobiPreconditioner, _) {
-  constexpr int kNumtrials = 10;
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_col_blocks = 3;
-  options.min_col_block_size = 1;
-  options.max_col_block_size = 3;
-
-  options.num_row_blocks = 5;
-  options.min_row_block_size = 1;
-  options.max_row_block_size = 4;
-  options.block_density = 0.25;
-  std::mt19937 prng;
-
-  Preconditioner::Options preconditioner_options;
-  ContextImpl context;
-  preconditioner_options.context = &context;
-
-  for (int trial = 0; trial < kNumtrials; ++trial) {
-    auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-    Vector diagonal = Vector::Ones(jacobian->num_cols());
-    Matrix dense_jacobian;
-    jacobian->ToDenseMatrix(&dense_jacobian);
-    Matrix hessian = dense_jacobian.transpose() * dense_jacobian;
-    hessian.diagonal() += diagonal.array().square().matrix();
-
-    BlockSparseJacobiPreconditioner pre(preconditioner_options, *jacobian);
-    pre.Update(*jacobian, diagonal.data());
-
-    // The const_cast is needed to be able to call GetCell.
-    auto* m = const_cast<BlockRandomAccessDiagonalMatrix*>(&pre.matrix());
-    EXPECT_EQ(m->num_rows(), jacobian->num_cols());
-    EXPECT_EQ(m->num_cols(), jacobian->num_cols());
-
-    const CompressedRowBlockStructure* bs = jacobian->block_structure();
-    for (int i = 0; i < bs->cols.size(); ++i) {
-      const int block_size = bs->cols[i].size;
-      int r, c, row_stride, col_stride;
-      CellInfo* cell_info = m->GetCell(i, i, &r, &c, &row_stride, &col_stride);
-      Matrix actual_block_inverse =
-          MatrixRef(cell_info->values, row_stride, col_stride)
-              .block(r, c, block_size, block_size);
-      Matrix expected_block = hessian.block(
-          bs->cols[i].position, bs->cols[i].position, block_size, block_size);
-      const double residual = (actual_block_inverse * expected_block -
-                               Matrix::Identity(block_size, block_size))
-                                  .norm();
-      EXPECT_NEAR(residual, 0.0, 1e-12) << "Block: " << i;
-    }
-    options.num_col_blocks++;
-    options.num_row_blocks++;
-  }
-}
-
-TEST(CompressedRowSparseJacobiPreconditioner, _) {
-  constexpr int kNumtrials = 10;
-  CompressedRowSparseMatrix::RandomMatrixOptions options;
-  options.num_col_blocks = 3;
-  options.min_col_block_size = 1;
-  options.max_col_block_size = 3;
-
-  options.num_row_blocks = 5;
-  options.min_row_block_size = 1;
-  options.max_row_block_size = 4;
-  options.block_density = 0.25;
-  std::mt19937 prng;
-
-  Preconditioner::Options preconditioner_options;
-  ContextImpl context;
-  preconditioner_options.context = &context;
-
-  for (int trial = 0; trial < kNumtrials; ++trial) {
-    auto jacobian =
-        CompressedRowSparseMatrix::CreateRandomMatrix(options, prng);
-    Vector diagonal = Vector::Ones(jacobian->num_cols());
-
-    Matrix dense_jacobian;
-    jacobian->ToDenseMatrix(&dense_jacobian);
-    Matrix hessian = dense_jacobian.transpose() * dense_jacobian;
-    hessian.diagonal() += diagonal.array().square().matrix();
-
-    BlockCRSJacobiPreconditioner pre(preconditioner_options, *jacobian);
-    pre.Update(*jacobian, diagonal.data());
-    auto& m = pre.matrix();
-
-    EXPECT_EQ(m.num_rows(), jacobian->num_cols());
-    EXPECT_EQ(m.num_cols(), jacobian->num_cols());
-
-    const auto& col_blocks = jacobian->col_blocks();
-    for (int i = 0, col = 0; i < col_blocks.size(); ++i) {
-      const int block_size = col_blocks[i].size;
-      int idx = m.rows()[col];
-      for (int j = 0; j < block_size; ++j) {
-        EXPECT_EQ(m.rows()[col + j + 1] - m.rows()[col + j], block_size);
-        for (int k = 0; k < block_size; ++k, ++idx) {
-          EXPECT_EQ(m.cols()[idx], col + k);
-        }
-      }
-
-      ConstMatrixRef actual_block_inverse(
-          m.values() + m.rows()[col], block_size, block_size);
-      Matrix expected_block = hessian.block(col, col, block_size, block_size);
-      const double residual = (actual_block_inverse * expected_block -
-                               Matrix::Identity(block_size, block_size))
-                                  .norm();
-      EXPECT_NEAR(residual, 0.0, 1e-12) << "Block: " << i;
-      col += block_size;
-    }
-    options.num_col_blocks++;
-    options.num_row_blocks++;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_jacobian_writer.cc b/third_party/ceres/internal/ceres/block_jacobian_writer.cc
deleted file mode 100644
index 5a769cb..0000000
--- a/third_party/ceres/internal/ceres/block_jacobian_writer.cc
+++ /dev/null
@@ -1,263 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/block_jacobian_writer.h"
-
-#include <algorithm>
-#include <memory>
-#include <vector>
-
-#include "ceres/block_evaluate_preparer.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-
-namespace ceres::internal {
-
-namespace {
-
-// Given the residual block ordering, build a lookup table to determine which
-// per-parameter jacobian goes where in the overall program jacobian.
-//
-// Since we expect to use a Schur type linear solver to solve the LM step, take
-// extra care to place the E blocks and the F blocks contiguously. E blocks are
-// the first num_eliminate_blocks parameter blocks as indicated by the parameter
-// block ordering. The remaining parameter blocks are the F blocks.
-//
-// In order to simplify handling block-sparse to CRS conversion, cells within
-// the row-block of non-partitioned matrix are stored in memory sequentially in
-// the order of increasing column-block id. In case of partitioned matrices,
-// cells corresponding to F sub-matrix are stored sequentially in the order of
-// increasing column-block id (with cells corresponding to E sub-matrix stored
-// separately).
-//
-// TODO(keir): Consider if we should use a boolean for each parameter block
-// instead of num_eliminate_blocks.
-bool BuildJacobianLayout(const Program& program,
-                         int num_eliminate_blocks,
-                         std::vector<int*>* jacobian_layout,
-                         std::vector<int>* jacobian_layout_storage) {
-  const std::vector<ResidualBlock*>& residual_blocks =
-      program.residual_blocks();
-
-  // Iterate over all the active residual blocks and determine how many E blocks
-  // are there. This will determine where the F blocks start in the jacobian
-  // matrix. Also compute the number of jacobian blocks.
-  unsigned int f_block_pos = 0;
-  unsigned int num_jacobian_blocks = 0;
-  for (auto* residual_block : residual_blocks) {
-    const int num_residuals = residual_block->NumResiduals();
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-
-    // Advance f_block_pos over each E block for this residual.
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[j];
-      if (!parameter_block->IsConstant()) {
-        // Only count blocks for active parameters.
-        num_jacobian_blocks++;
-        if (parameter_block->index() < num_eliminate_blocks) {
-          f_block_pos += num_residuals * parameter_block->TangentSize();
-        }
-      }
-    }
-    if (num_jacobian_blocks > std::numeric_limits<int>::max()) {
-      LOG(ERROR) << "Overlow error. Too many blocks in the jacobian matrix : "
-                 << num_jacobian_blocks;
-      return false;
-    }
-  }
-
-  // We now know that the E blocks are laid out starting at zero, and the F
-  // blocks are laid out starting at f_block_pos. Iterate over the residual
-  // blocks again, and this time fill the jacobian_layout array with the
-  // position information.
-
-  jacobian_layout->resize(program.NumResidualBlocks());
-  jacobian_layout_storage->resize(num_jacobian_blocks);
-
-  int e_block_pos = 0;
-  int* jacobian_pos = jacobian_layout_storage->data();
-  std::vector<std::pair<int, int>> active_parameter_blocks;
-  for (int i = 0; i < residual_blocks.size(); ++i) {
-    const ResidualBlock* residual_block = residual_blocks[i];
-    const int num_residuals = residual_block->NumResiduals();
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-
-    (*jacobian_layout)[i] = jacobian_pos;
-    // Cells from F sub-matrix are to be stored sequentially with increasing
-    // column block id. For each non-constant parameter block, a pair of indices
-    // (index in the list of active parameter blocks and index in the list of
-    // all parameter blocks) is computed, and index pairs are sorted by the
-    // index of corresponding column block id.
-    active_parameter_blocks.clear();
-    active_parameter_blocks.reserve(num_parameter_blocks);
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[j];
-      if (parameter_block->IsConstant()) {
-        continue;
-      }
-      const int k = active_parameter_blocks.size();
-      active_parameter_blocks.emplace_back(k, j);
-    }
-    std::sort(active_parameter_blocks.begin(),
-              active_parameter_blocks.end(),
-              [&residual_block](const std::pair<int, int>& a,
-                                const std::pair<int, int>& b) {
-                return residual_block->parameter_blocks()[a.second]->index() <
-                       residual_block->parameter_blocks()[b.second]->index();
-              });
-    // Cell positions for each active parameter block are filled in the order of
-    // active parameter block indices sorted by columnd block index. This
-    // guarantees that cells are laid out sequentially with increasing column
-    // block indices.
-    for (const auto& indices : active_parameter_blocks) {
-      const auto [k, j] = indices;
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[j];
-      const int parameter_block_index = parameter_block->index();
-      const int jacobian_block_size =
-          num_residuals * parameter_block->TangentSize();
-      if (parameter_block_index < num_eliminate_blocks) {
-        jacobian_pos[k] = e_block_pos;
-        e_block_pos += jacobian_block_size;
-      } else {
-        jacobian_pos[k] = static_cast<int>(f_block_pos);
-        f_block_pos += jacobian_block_size;
-        if (f_block_pos > std::numeric_limits<int>::max()) {
-          LOG(ERROR)
-              << "Overlow error. Too many entries in the Jacobian matrix.";
-          return false;
-        }
-      }
-    }
-    jacobian_pos += active_parameter_blocks.size();
-  }
-  return true;
-}
-
-}  // namespace
-
-BlockJacobianWriter::BlockJacobianWriter(const Evaluator::Options& options,
-                                         Program* program)
-    : options_(options), program_(program) {
-  CHECK_GE(options.num_eliminate_blocks, 0)
-      << "num_eliminate_blocks must be greater than 0.";
-
-  jacobian_layout_is_valid_ = BuildJacobianLayout(*program,
-                                                  options.num_eliminate_blocks,
-                                                  &jacobian_layout_,
-                                                  &jacobian_layout_storage_);
-}
-
-// Create evaluate preparers that point directly into the final jacobian. This
-// makes the final Write() a nop.
-std::unique_ptr<BlockEvaluatePreparer[]>
-BlockJacobianWriter::CreateEvaluatePreparers(unsigned num_threads) {
-  const int max_derivatives_per_residual_block =
-      program_->MaxDerivativesPerResidualBlock();
-
-  auto preparers = std::make_unique<BlockEvaluatePreparer[]>(num_threads);
-  for (unsigned i = 0; i < num_threads; i++) {
-    preparers[i].Init(jacobian_layout_.data(),
-                      max_derivatives_per_residual_block);
-  }
-  return preparers;
-}
-
-std::unique_ptr<SparseMatrix> BlockJacobianWriter::CreateJacobian() const {
-  if (!jacobian_layout_is_valid_) {
-    LOG(ERROR) << "Unable to create Jacobian matrix. Too many entries in the "
-                  "Jacobian matrix.";
-    return nullptr;
-  }
-
-  auto* bs = new CompressedRowBlockStructure;
-
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program_->parameter_blocks();
-
-  // Construct the column blocks.
-  bs->cols.resize(parameter_blocks.size());
-  for (int i = 0, cursor = 0; i < parameter_blocks.size(); ++i) {
-    CHECK_NE(parameter_blocks[i]->index(), -1);
-    CHECK(!parameter_blocks[i]->IsConstant());
-    bs->cols[i].size = parameter_blocks[i]->TangentSize();
-    bs->cols[i].position = cursor;
-    cursor += bs->cols[i].size;
-  }
-
-  // Construct the cells in each row.
-  const std::vector<ResidualBlock*>& residual_blocks =
-      program_->residual_blocks();
-  int row_block_position = 0;
-  bs->rows.resize(residual_blocks.size());
-  for (int i = 0; i < residual_blocks.size(); ++i) {
-    const ResidualBlock* residual_block = residual_blocks[i];
-    CompressedRow* row = &bs->rows[i];
-
-    row->block.size = residual_block->NumResiduals();
-    row->block.position = row_block_position;
-    row_block_position += row->block.size;
-
-    // Size the row by the number of active parameters in this residual.
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    int num_active_parameter_blocks = 0;
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      if (residual_block->parameter_blocks()[j]->index() != -1) {
-        num_active_parameter_blocks++;
-      }
-    }
-    row->cells.resize(num_active_parameter_blocks);
-
-    // Add layout information for the active parameters in this row.
-    for (int j = 0, k = 0; j < num_parameter_blocks; ++j) {
-      const ParameterBlock* parameter_block =
-          residual_block->parameter_blocks()[j];
-      if (!parameter_block->IsConstant()) {
-        Cell& cell = row->cells[k];
-        cell.block_id = parameter_block->index();
-        cell.position = jacobian_layout_[i][k];
-
-        // Only increment k for active parameters, since there is only layout
-        // information for active parameters.
-        k++;
-      }
-    }
-
-    std::sort(row->cells.begin(), row->cells.end(), CellLessThan);
-  }
-
-  return std::make_unique<BlockSparseMatrix>(
-      bs, options_.sparse_linear_algebra_library_type == CUDA_SPARSE);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_jacobian_writer.h b/third_party/ceres/internal/ceres/block_jacobian_writer.h
deleted file mode 100644
index a6d02e3..0000000
--- a/third_party/ceres/internal/ceres/block_jacobian_writer.h
+++ /dev/null
@@ -1,146 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A jacobian writer that writes to block sparse matrices. The "writer" name is
-// misleading, since the Write() operation on the block jacobian writer does not
-// write anything. Instead, the Prepare() method on the BlockEvaluatePreparers
-// makes a jacobians array which has direct pointers into the block sparse
-// jacobian. When the cost function is evaluated, the jacobian blocks get placed
-// directly in their final location.
-
-#ifndef CERES_INTERNAL_BLOCK_JACOBIAN_WRITER_H_
-#define CERES_INTERNAL_BLOCK_JACOBIAN_WRITER_H_
-
-#include <memory>
-#include <vector>
-
-#include "ceres/evaluator.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-class BlockEvaluatePreparer;
-class Program;
-class SparseMatrix;
-
-// TODO(sameeragarwal): This class needs documentation.
-class CERES_NO_EXPORT BlockJacobianWriter {
- public:
-  // Pre-computes positions of cells in block-sparse jacobian.
-  // Two possible memory layouts are implemented:
-  //  - Non-partitioned case
-  //  - Partitioned case (for Schur type linear solver)
-  //
-  // In non-partitioned case, cells are stored sequentially in the
-  // lexicographic order of (row block id, column block id).
-  //
-  // In the case of partitoned matrix, cells of each sub-matrix (E and F) are
-  // stored sequentially in the lexicographic order of (row block id, column
-  // block id) and cells from E sub-matrix precede cells from F sub-matrix.
-  BlockJacobianWriter(const Evaluator::Options& options, Program* program);
-
-  // JacobianWriter interface.
-
-  // Create evaluate preparers that point directly into the final jacobian.
-  // This makes the final Write() a nop.
-  std::unique_ptr<BlockEvaluatePreparer[]> CreateEvaluatePreparers(
-      unsigned num_threads);
-
-  std::unique_ptr<SparseMatrix> CreateJacobian() const;
-
-  void Write(int /* residual_id */,
-             int /* residual_offset */,
-             double** /* jacobians */,
-             SparseMatrix* /* jacobian */) {
-    // This is a noop since the blocks were written directly into their final
-    // position by the outside evaluate call, thanks to the jacobians array
-    // prepared by the BlockEvaluatePreparers.
-  }
-
- private:
-  Evaluator::Options options_;
-  Program* program_;
-
-  // Stores the position of each residual / parameter jacobian.
-  //
-  // The block sparse matrix that this writer writes to is stored as a set of
-  // contiguous dense blocks, one after each other; see BlockSparseMatrix. The
-  // "double* values_" member of the block sparse matrix contains all of these
-  // blocks. Given a pointer to the first element of a block and the size of
-  // that block, it's possible to write to it.
-  //
-  // In the case of a block sparse jacobian, the jacobian writer needs a way to
-  // find the offset in the values_ array of each residual/parameter jacobian
-  // block.
-  //
-  // That is the purpose of jacobian_layout_.
-  //
-  // In particular, jacobian_layout_[i][j] is the offset in the values_ array of
-  // the derivative of residual block i with respect to the parameter block at
-  // active argument position j.
-  //
-  // The active qualifier means that non-active parameters do not count. Care
-  // must be taken when indexing into jacobian_layout_ to account for this.
-  // Consider a single residual example:
-  //
-  //   r(x, y, z)
-  //
-  // with r in R^3, x in R^4, y in R^2, and z in R^5.
-  // Take y as a constant (non-active) parameter.
-  // Take r as residual number 0.
-  //
-  // In this case, the active arguments are only (x, z), so the active argument
-  // position for x is 0, and the active argument position for z is 1. This is
-  // similar to thinking of r as taking only 2 parameters:
-  //
-  //   r(x, z)
-  //
-  // There are only 2 jacobian blocks: dr/dx and dr/dz. jacobian_layout_ would
-  // have the following contents:
-  //
-  //   jacobian_layout_[0] = { 0, 12 }
-  //
-  // which indicates that dr/dx is located at values_[0], and dr/dz is at
-  // values_[12]. See BlockEvaluatePreparer::Prepare()'s comments about 'j'.
-  std::vector<int*> jacobian_layout_;
-
-  // The pointers in jacobian_layout_ point directly into this vector.
-  std::vector<int> jacobian_layout_storage_;
-
-  // The constructor computes the layout of the Jacobian, and this bool keeps
-  // track of whether the computation of the layout completed successfully or
-  // not, if it is false, then jacobian_layout and jacobian_layout_storage are
-  // both in an invalid state.
-  bool jacobian_layout_is_valid_ = false;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_BLOCK_JACOBIAN_WRITER_H_
diff --git a/third_party/ceres/internal/ceres/block_random_access_dense_matrix.cc b/third_party/ceres/internal/ceres/block_random_access_dense_matrix.cc
deleted file mode 100644
index b8be51b..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_dense_matrix.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_dense_matrix.h"
-
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/parallel_vector_ops.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-BlockRandomAccessDenseMatrix::BlockRandomAccessDenseMatrix(
-    std::vector<Block> blocks, ContextImpl* context, int num_threads)
-    : blocks_(std::move(blocks)), context_(context), num_threads_(num_threads) {
-  const int num_blocks = blocks_.size();
-  num_rows_ = NumScalarEntries(blocks_);
-  values_ = std::make_unique<double[]>(num_rows_ * num_rows_);
-  cell_infos_ = std::make_unique<CellInfo[]>(num_blocks * num_blocks);
-  for (int i = 0; i < num_blocks * num_blocks; ++i) {
-    cell_infos_[i].values = values_.get();
-  }
-
-  SetZero();
-}
-
-CellInfo* BlockRandomAccessDenseMatrix::GetCell(const int row_block_id,
-                                                const int col_block_id,
-                                                int* row,
-                                                int* col,
-                                                int* row_stride,
-                                                int* col_stride) {
-  *row = blocks_[row_block_id].position;
-  *col = blocks_[col_block_id].position;
-  *row_stride = num_rows_;
-  *col_stride = num_rows_;
-  return &cell_infos_[row_block_id * blocks_.size() + col_block_id];
-}
-
-// Assume that the user does not hold any locks on any cell blocks
-// when they are calling SetZero.
-void BlockRandomAccessDenseMatrix::SetZero() {
-  ParallelSetZero(context_, num_threads_, values_.get(), num_rows_ * num_rows_);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_random_access_dense_matrix.h b/third_party/ceres/internal/ceres/block_random_access_dense_matrix.h
deleted file mode 100644
index 9468249..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_dense_matrix.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_BLOCK_RANDOM_ACCESS_DENSE_MATRIX_H_
-#define CERES_INTERNAL_BLOCK_RANDOM_ACCESS_DENSE_MATRIX_H_
-
-#include <memory>
-#include <vector>
-
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// A square block random accessible matrix with the same row and
-// column block structure. All cells are stored in the same single
-// array, so that its also accessible as a dense matrix of size
-// num_rows x num_cols.
-//
-// This class is NOT thread safe. Since all n^2 cells are stored,
-// GetCell never returns nullptr for any (row_block_id, col_block_id)
-// pair.
-//
-// ReturnCell is a nop.
-class CERES_NO_EXPORT BlockRandomAccessDenseMatrix
-    : public BlockRandomAccessMatrix {
- public:
-  // blocks is a vector of block sizes. The resulting matrix has
-  // blocks.size() * blocks.size() cells.
-  explicit BlockRandomAccessDenseMatrix(std::vector<Block> blocks,
-                                        ContextImpl* context,
-                                        int num_threads);
-
-  ~BlockRandomAccessDenseMatrix() override = default;
-
-  // BlockRandomAccessMatrix interface.
-  CellInfo* GetCell(int row_block_id,
-                    int col_block_id,
-                    int* row,
-                    int* col,
-                    int* row_stride,
-                    int* col_stride) final;
-
-  void SetZero() final;
-
-  // Since the matrix is square with the same row and column block
-  // structure, num_rows() = num_cols().
-  int num_rows() const final { return num_rows_; }
-  int num_cols() const final { return num_rows_; }
-
-  // The underlying matrix storing the cells.
-  const double* values() const { return values_.get(); }
-  double* mutable_values() { return values_.get(); }
-
- private:
-  std::vector<Block> blocks_;
-  ContextImpl* context_ = nullptr;
-  int num_threads_ = -1;
-  int num_rows_ = -1;
-  std::unique_ptr<double[]> values_;
-  std::unique_ptr<CellInfo[]> cell_infos_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_BLOCK_RANDOM_ACCESS_DENSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/block_random_access_dense_matrix_test.cc b/third_party/ceres/internal/ceres/block_random_access_dense_matrix_test.cc
deleted file mode 100644
index ba9c75d..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_dense_matrix_test.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_dense_matrix.h"
-
-#include <vector>
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(BlockRandomAccessDenseMatrix, GetCell) {
-  ContextImpl context;
-  constexpr int num_threads = 1;
-
-  std::vector<Block> blocks;
-  blocks.emplace_back(3, 0);
-  blocks.emplace_back(4, 3);
-  blocks.emplace_back(5, 7);
-  constexpr int num_rows = 3 + 4 + 5;
-  BlockRandomAccessDenseMatrix m(blocks, &context, num_threads);
-  EXPECT_EQ(m.num_rows(), num_rows);
-  EXPECT_EQ(m.num_cols(), num_rows);
-
-  for (int i = 0; i < blocks.size(); ++i) {
-    const int row_idx = blocks[i].position;
-    for (int j = 0; j < blocks.size(); ++j) {
-      const int col_idx = blocks[j].position;
-      int row;
-      int col;
-      int row_stride;
-      int col_stride;
-      CellInfo* cell = m.GetCell(i, j, &row, &col, &row_stride, &col_stride);
-
-      EXPECT_TRUE(cell != nullptr);
-      EXPECT_EQ(row, row_idx);
-      EXPECT_EQ(col, col_idx);
-      EXPECT_EQ(row_stride, 3 + 4 + 5);
-      EXPECT_EQ(col_stride, 3 + 4 + 5);
-    }
-  }
-}
-
-TEST(BlockRandomAccessDenseMatrix, WriteCell) {
-  ContextImpl context;
-  constexpr int num_threads = 1;
-
-  std::vector<Block> blocks;
-  blocks.emplace_back(3, 0);
-  blocks.emplace_back(4, 3);
-  blocks.emplace_back(5, 7);
-  constexpr int num_rows = 3 + 4 + 5;
-
-  BlockRandomAccessDenseMatrix m(blocks, &context, num_threads);
-
-  // Fill the cell (i,j) with (i + 1) * (j + 1)
-  for (int i = 0; i < blocks.size(); ++i) {
-    for (int j = 0; j < blocks.size(); ++j) {
-      int row;
-      int col;
-      int row_stride;
-      int col_stride;
-      CellInfo* cell = m.GetCell(i, j, &row, &col, &row_stride, &col_stride);
-      MatrixRef(cell->values, row_stride, col_stride)
-          .block(row, col, blocks[i].size, blocks[j].size) =
-          (i + 1) * (j + 1) * Matrix::Ones(blocks[i].size, blocks[j].size);
-    }
-  }
-
-  // Check the values in the array are correct by going over the
-  // entries of each block manually.
-  for (int i = 0; i < blocks.size(); ++i) {
-    const int row_idx = blocks[i].position;
-    for (int j = 0; j < blocks.size(); ++j) {
-      const int col_idx = blocks[j].position;
-      // Check the values of this block.
-      for (int r = 0; r < blocks[i].size; ++r) {
-        for (int c = 0; c < blocks[j].size; ++c) {
-          int pos = row_idx * num_rows + col_idx;
-          EXPECT_EQ(m.values()[pos], (i + 1) * (j + 1));
-        }
-      }
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.cc b/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.cc
deleted file mode 100644
index 643dbf1..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_diagonal_matrix.h"
-
-#include <algorithm>
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/internal/export.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/stl_util.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-BlockRandomAccessDiagonalMatrix::BlockRandomAccessDiagonalMatrix(
-    const std::vector<Block>& blocks, ContextImpl* context, int num_threads)
-    : context_(context), num_threads_(num_threads) {
-  m_ = CompressedRowSparseMatrix::CreateBlockDiagonalMatrix(nullptr, blocks);
-  double* values = m_->mutable_values();
-  layout_ = std::make_unique<CellInfo[]>(blocks.size());
-  for (int i = 0; i < blocks.size(); ++i) {
-    layout_[i].values = values;
-    values += blocks[i].size * blocks[i].size;
-  }
-}
-
-CellInfo* BlockRandomAccessDiagonalMatrix::GetCell(int row_block_id,
-                                                   int col_block_id,
-                                                   int* row,
-                                                   int* col,
-                                                   int* row_stride,
-                                                   int* col_stride) {
-  if (row_block_id != col_block_id) {
-    return nullptr;
-  }
-
-  auto& blocks = m_->row_blocks();
-  const int stride = blocks[row_block_id].size;
-
-  // Each cell is stored contiguously as its own little dense matrix.
-  *row = 0;
-  *col = 0;
-  *row_stride = stride;
-  *col_stride = stride;
-  return &layout_[row_block_id];
-}
-
-// Assume that the user does not hold any locks on any cell blocks
-// when they are calling SetZero.
-void BlockRandomAccessDiagonalMatrix::SetZero() {
-  ParallelSetZero(
-      context_, num_threads_, m_->mutable_values(), m_->num_nonzeros());
-}
-
-void BlockRandomAccessDiagonalMatrix::Invert() {
-  auto& blocks = m_->row_blocks();
-  const int num_blocks = blocks.size();
-  ParallelFor(context_, 0, num_blocks, num_threads_, [this, blocks](int i) {
-    auto& cell_info = layout_[i];
-    auto& block = blocks[i];
-    MatrixRef b(cell_info.values, block.size, block.size);
-    b = b.selfadjointView<Eigen::Upper>().llt().solve(
-        Matrix::Identity(block.size, block.size));
-  });
-}
-
-void BlockRandomAccessDiagonalMatrix::RightMultiplyAndAccumulate(
-    const double* x, double* y) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-  auto& blocks = m_->row_blocks();
-  const int num_blocks = blocks.size();
-  ParallelFor(
-      context_, 0, num_blocks, num_threads_, [this, blocks, x, y](int i) {
-        auto& cell_info = layout_[i];
-        auto& block = blocks[i];
-        ConstMatrixRef b(cell_info.values, block.size, block.size);
-        VectorRef(y + block.position, block.size).noalias() +=
-            b * ConstVectorRef(x + block.position, block.size);
-      });
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.h b/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.h
deleted file mode 100644
index 9671f3e..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_BLOCK_RANDOM_ACCESS_DIAGONAL_MATRIX_H_
-#define CERES_INTERNAL_BLOCK_RANDOM_ACCESS_DIAGONAL_MATRIX_H_
-
-#include <memory>
-#include <utility>
-
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-// A BlockRandomAccessMatrix which only stores the block diagonal.
-// BlockRandomAccessSparseMatrix can also be used to do this, but this class is
-// more efficient in time and in space.
-class CERES_NO_EXPORT BlockRandomAccessDiagonalMatrix
-    : public BlockRandomAccessMatrix {
- public:
-  // blocks is an array of block sizes.
-  BlockRandomAccessDiagonalMatrix(const std::vector<Block>& blocks,
-                                  ContextImpl* context,
-                                  int num_threads);
-  ~BlockRandomAccessDiagonalMatrix() override = default;
-
-  // BlockRandomAccessMatrix Interface.
-  CellInfo* GetCell(int row_block_id,
-                    int col_block_id,
-                    int* row,
-                    int* col,
-                    int* row_stride,
-                    int* col_stride) final;
-
-  // m = 0
-  void SetZero() final;
-
-  // m = m^{-1}
-  void Invert();
-
-  // y += m * x
-  void RightMultiplyAndAccumulate(const double* x, double* y) const;
-
-  // Since the matrix is square, num_rows() == num_cols().
-  int num_rows() const final { return m_->num_rows(); }
-  int num_cols() const final { return m_->num_cols(); }
-
-  const CompressedRowSparseMatrix* matrix() const { return m_.get(); }
-  CompressedRowSparseMatrix* mutable_matrix() { return m_.get(); }
-
- private:
-  ContextImpl* context_ = nullptr;
-  const int num_threads_ = 1;
-  std::unique_ptr<CompressedRowSparseMatrix> m_;
-  std::unique_ptr<CellInfo[]> layout_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_BLOCK_RANDOM_ACCESS_DIAGONAL_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix_test.cc b/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix_test.cc
deleted file mode 100644
index f665bd8..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix_test.cc
+++ /dev/null
@@ -1,169 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_diagonal_matrix.h"
-
-#include <limits>
-#include <memory>
-#include <vector>
-
-#include "Eigen/Cholesky"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class BlockRandomAccessDiagonalMatrixTest : public ::testing::Test {
- public:
-  void SetUp() override {
-    std::vector<Block> blocks;
-    blocks.emplace_back(3, 0);
-    blocks.emplace_back(4, 3);
-    blocks.emplace_back(5, 7);
-
-    const int num_rows = 3 + 4 + 5;
-    num_nonzeros_ = 3 * 3 + 4 * 4 + 5 * 5;
-
-    m_ =
-        std::make_unique<BlockRandomAccessDiagonalMatrix>(blocks, &context_, 1);
-
-    EXPECT_EQ(m_->num_rows(), num_rows);
-    EXPECT_EQ(m_->num_cols(), num_rows);
-
-    for (int i = 0; i < blocks.size(); ++i) {
-      const int row_block_id = i;
-      int col_block_id;
-      int row;
-      int col;
-      int row_stride;
-      int col_stride;
-
-      for (int j = 0; j < blocks.size(); ++j) {
-        col_block_id = j;
-        CellInfo* cell = m_->GetCell(
-            row_block_id, col_block_id, &row, &col, &row_stride, &col_stride);
-        // Off diagonal entries are not present.
-        if (i != j) {
-          EXPECT_TRUE(cell == nullptr);
-          continue;
-        }
-
-        EXPECT_TRUE(cell != nullptr);
-        EXPECT_EQ(row, 0);
-        EXPECT_EQ(col, 0);
-        EXPECT_EQ(row_stride, blocks[row_block_id].size);
-        EXPECT_EQ(col_stride, blocks[col_block_id].size);
-
-        // Write into the block
-        MatrixRef(cell->values, row_stride, col_stride)
-            .block(row,
-                   col,
-                   blocks[row_block_id].size,
-                   blocks[col_block_id].size) =
-            (row_block_id + 1) * (col_block_id + 1) *
-                Matrix::Ones(blocks[row_block_id].size,
-                             blocks[col_block_id].size) +
-            Matrix::Identity(blocks[row_block_id].size,
-                             blocks[row_block_id].size);
-      }
-    }
-  }
-
- protected:
-  ContextImpl context_;
-  int num_nonzeros_;
-  std::unique_ptr<BlockRandomAccessDiagonalMatrix> m_;
-};
-
-TEST_F(BlockRandomAccessDiagonalMatrixTest, MatrixContents) {
-  auto* crsm = m_->matrix();
-  EXPECT_EQ(crsm->num_nonzeros(), num_nonzeros_);
-
-  Matrix dense;
-  crsm->ToDenseMatrix(&dense);
-
-  double kTolerance = 1e-14;
-
-  // (0,0)
-  EXPECT_NEAR(
-      (dense.block(0, 0, 3, 3) - (Matrix::Ones(3, 3) + Matrix::Identity(3, 3)))
-          .norm(),
-      0.0,
-      kTolerance);
-
-  // (1,1)
-  EXPECT_NEAR((dense.block(3, 3, 4, 4) -
-               (2 * 2 * Matrix::Ones(4, 4) + Matrix::Identity(4, 4)))
-                  .norm(),
-              0.0,
-              kTolerance);
-
-  // (1,1)
-  EXPECT_NEAR((dense.block(7, 7, 5, 5) -
-               (3 * 3 * Matrix::Ones(5, 5) + Matrix::Identity(5, 5)))
-                  .norm(),
-              0.0,
-              kTolerance);
-
-  // There is nothing else in the matrix besides these four blocks.
-  EXPECT_NEAR(
-      dense.norm(),
-      sqrt(6 * 1.0 + 3 * 4.0 + 12 * 16.0 + 4 * 25.0 + 20 * 81.0 + 5 * 100.0),
-      kTolerance);
-}
-
-TEST_F(BlockRandomAccessDiagonalMatrixTest, RightMultiplyAndAccumulate) {
-  double kTolerance = 1e-14;
-  auto* crsm = m_->matrix();
-  Matrix dense;
-  crsm->ToDenseMatrix(&dense);
-  Vector x = Vector::Random(dense.rows());
-  Vector expected_y = dense * x;
-  Vector actual_y = Vector::Zero(dense.rows());
-  m_->RightMultiplyAndAccumulate(x.data(), actual_y.data());
-  EXPECT_NEAR((expected_y - actual_y).norm(), 0, kTolerance);
-}
-
-TEST_F(BlockRandomAccessDiagonalMatrixTest, Invert) {
-  double kTolerance = 1e-14;
-  auto* crsm = m_->matrix();
-  Matrix dense;
-  crsm->ToDenseMatrix(&dense);
-  Matrix expected_inverse =
-      dense.llt().solve(Matrix::Identity(dense.rows(), dense.rows()));
-
-  m_->Invert();
-  crsm->ToDenseMatrix(&dense);
-
-  EXPECT_NEAR((expected_inverse - dense).norm(), 0.0, kTolerance);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_random_access_matrix.cc b/third_party/ceres/internal/ceres/block_random_access_matrix.cc
deleted file mode 100644
index cb3d9dc..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_matrix.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_matrix.h"
-
-namespace ceres::internal {
-
-BlockRandomAccessMatrix::~BlockRandomAccessMatrix() = default;
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_random_access_matrix.h b/third_party/ceres/internal/ceres/block_random_access_matrix.h
deleted file mode 100644
index 66390d7..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_matrix.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Interface for matrices that allow block based random access.
-
-#ifndef CERES_INTERNAL_BLOCK_RANDOM_ACCESS_MATRIX_H_
-#define CERES_INTERNAL_BLOCK_RANDOM_ACCESS_MATRIX_H_
-
-#include <mutex>
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// A matrix implementing the BlockRandomAccessMatrix interface is a
-// matrix whose rows and columns are divided into blocks. For example
-// the matrix A:
-//
-//            3     4      5
-//  A =  5 [c_11  c_12  c_13]
-//       4 [c_21  c_22  c_23]
-//
-// has row blocks of size 5 and 4, and column blocks of size 3, 4 and
-// 5. It has six cells corresponding to the six row-column block
-// combinations.
-//
-// BlockRandomAccessMatrix objects provide access to cells c_ij using
-// the GetCell method. when a cell is present, GetCell will return a
-// CellInfo object containing a pointer to an array which contains the
-// cell as a submatrix and a mutex that guards this submatrix. If the
-// user is accessing the matrix concurrently, it is his responsibility
-// to use the mutex to exclude other writers from writing to the cell
-// concurrently.
-//
-// There is no requirement that all cells be present, i.e. the matrix
-// itself can be block sparse. When a cell is not present, the GetCell
-// method will return a nullptr pointer.
-//
-// There is no requirement about how the cells are stored beyond that
-// form a dense submatrix of a larger dense matrix. Like everywhere
-// else in Ceres, RowMajor storage assumed.
-//
-// Example usage:
-//
-//  BlockRandomAccessMatrix* A = new BlockRandomAccessMatrixSubClass(...)
-//
-//  int row, col, row_stride, col_stride;
-//  CellInfo* cell = A->GetCell(row_block_id, col_block_id,
-//                              &row, &col,
-//                              &row_stride, &col_stride);
-//
-//  if (cell != nullptr) {
-//     MatrixRef m(cell->values, row_stride, col_stride);
-//     std::lock_guard<std::mutex> l(&cell->m);
-//     m.block(row, col, row_block_size, col_block_size) = ...
-//  }
-
-// Structure to carry a pointer to the array containing a cell and the
-// mutex guarding it.
-struct CERES_NO_EXPORT CellInfo {
-  CellInfo() = default;
-  explicit CellInfo(double* values) : values(values) {}
-
-  double* values{nullptr};
-  std::mutex m;
-};
-
-class CERES_NO_EXPORT BlockRandomAccessMatrix {
- public:
-  virtual ~BlockRandomAccessMatrix();
-
-  // If the cell (row_block_id, col_block_id) is present, then return
-  // a CellInfo with a pointer to the dense matrix containing it,
-  // otherwise return nullptr. The dense matrix containing this cell has
-  // size row_stride, col_stride and the cell is located at position
-  // (row, col) within this matrix.
-  //
-  // The size of the cell is row_block_size x col_block_size is
-  // assumed known to the caller. row_block_size less than or equal to
-  // row_stride and col_block_size is upper bounded by col_stride.
-  virtual CellInfo* GetCell(int row_block_id,
-                            int col_block_id,
-                            int* row,
-                            int* col,
-                            int* row_stride,
-                            int* col_stride) = 0;
-
-  // Zero out the values of the array. The structure of the matrix
-  // (size and sparsity) is preserved.
-  virtual void SetZero() = 0;
-
-  // Number of scalar rows and columns in the matrix, i.e the sum of
-  // all row blocks and column block sizes respectively.
-  virtual int num_rows() const = 0;
-  virtual int num_cols() const = 0;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_BLOCK_RANDOM_ACCESS_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.cc b/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.cc
deleted file mode 100644
index b9f8b36..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.cc
+++ /dev/null
@@ -1,164 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_sparse_matrix.h"
-
-#include <algorithm>
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/export.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-BlockRandomAccessSparseMatrix::BlockRandomAccessSparseMatrix(
-    const std::vector<Block>& blocks,
-    const std::set<std::pair<int, int>>& block_pairs,
-    ContextImpl* context,
-    int num_threads)
-    : blocks_(blocks), context_(context), num_threads_(num_threads) {
-  CHECK_LE(blocks.size(), std::numeric_limits<std::int32_t>::max());
-
-  const int num_cols = NumScalarEntries(blocks);
-  const int num_blocks = blocks.size();
-
-  std::vector<int> num_cells_at_row(num_blocks);
-  for (auto& p : block_pairs) {
-    ++num_cells_at_row[p.first];
-  }
-  auto block_structure_ = new CompressedRowBlockStructure;
-  block_structure_->cols = blocks;
-  block_structure_->rows.resize(num_blocks);
-  auto p = block_pairs.begin();
-  int num_nonzeros = 0;
-  // Pairs of block indices are sorted lexicographically, thus pairs
-  // corresponding to a single row-block are stored in segments of index pairs
-  // with constant row-block index and increasing column-block index.
-  // CompressedRowBlockStructure is created by traversing block_pairs set.
-  for (int row_block_id = 0; row_block_id < num_blocks; ++row_block_id) {
-    auto& row = block_structure_->rows[row_block_id];
-    row.block = blocks[row_block_id];
-    row.cells.reserve(num_cells_at_row[row_block_id]);
-    const int row_block_size = blocks[row_block_id].size;
-    // Process all index pairs corresponding to the current row block. Because
-    // index pairs are sorted lexicographically, cells are being appended to the
-    // current row-block till the first change in row-block index
-    for (; p != block_pairs.end() && row_block_id == p->first; ++p) {
-      const int col_block_id = p->second;
-      row.cells.emplace_back(col_block_id, num_nonzeros);
-      num_nonzeros += row_block_size * blocks[col_block_id].size;
-    }
-  }
-  bsm_ = std::make_unique<BlockSparseMatrix>(block_structure_);
-  VLOG(1) << "Matrix Size [" << num_cols << "," << num_cols << "] "
-          << num_nonzeros;
-  double* values = bsm_->mutable_values();
-  for (int row_block_id = 0; row_block_id < num_blocks; ++row_block_id) {
-    const auto& cells = block_structure_->rows[row_block_id].cells;
-    for (auto& c : cells) {
-      const int col_block_id = c.block_id;
-      double* const data = values + c.position;
-      layout_.emplace(IntPairToInt64(row_block_id, col_block_id), data);
-    }
-  }
-}
-
-CellInfo* BlockRandomAccessSparseMatrix::GetCell(int row_block_id,
-                                                 int col_block_id,
-                                                 int* row,
-                                                 int* col,
-                                                 int* row_stride,
-                                                 int* col_stride) {
-  const auto it = layout_.find(IntPairToInt64(row_block_id, col_block_id));
-  if (it == layout_.end()) {
-    return nullptr;
-  }
-
-  // Each cell is stored contiguously as its own little dense matrix.
-  *row = 0;
-  *col = 0;
-  *row_stride = blocks_[row_block_id].size;
-  *col_stride = blocks_[col_block_id].size;
-  return &it->second;
-}
-
-// Assume that the user does not hold any locks on any cell blocks
-// when they are calling SetZero.
-void BlockRandomAccessSparseMatrix::SetZero() {
-  bsm_->SetZero(context_, num_threads_);
-}
-
-void BlockRandomAccessSparseMatrix::SymmetricRightMultiplyAndAccumulate(
-    const double* x, double* y) const {
-  const auto bs = bsm_->block_structure();
-  const auto values = bsm_->values();
-  const int num_blocks = blocks_.size();
-
-  for (int row_block_id = 0; row_block_id < num_blocks; ++row_block_id) {
-    const auto& row_block = bs->rows[row_block_id];
-    const int row_block_size = row_block.block.size;
-    const int row_block_pos = row_block.block.position;
-
-    for (auto& c : row_block.cells) {
-      const int col_block_id = c.block_id;
-      const int col_block_size = blocks_[col_block_id].size;
-      const int col_block_pos = blocks_[col_block_id].position;
-
-      MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-          values + c.position,
-          row_block_size,
-          col_block_size,
-          x + col_block_pos,
-          y + row_block_pos);
-      if (col_block_id == row_block_id) {
-        continue;
-      }
-
-      // Since the matrix is symmetric, but only the upper triangular
-      // part is stored, if the block being accessed is not a diagonal
-      // block, then use the same block to do the corresponding lower
-      // triangular multiply also
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-          values + c.position,
-          row_block_size,
-          col_block_size,
-          x + row_block_pos,
-          y + col_block_pos);
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.h b/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.h
deleted file mode 100644
index 5121832..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.h
+++ /dev/null
@@ -1,130 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_BLOCK_RANDOM_ACCESS_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_BLOCK_RANDOM_ACCESS_SPARSE_MATRIX_H_
-
-#include <cstdint>
-#include <memory>
-#include <set>
-#include <unordered_map>
-#include <utility>
-#include <vector>
-
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/small_blas.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-// A thread safe square block sparse implementation of
-// BlockRandomAccessMatrix. Internally a BlockSparseMatrix is used
-// for doing the actual storage. This class augments this matrix with
-// an unordered_map that allows random read/write access.
-class CERES_NO_EXPORT BlockRandomAccessSparseMatrix
-    : public BlockRandomAccessMatrix {
- public:
-  // blocks is an array of block sizes. block_pairs is a set of
-  // <row_block_id, col_block_id> pairs to identify the non-zero cells
-  // of this matrix.
-  BlockRandomAccessSparseMatrix(
-      const std::vector<Block>& blocks,
-      const std::set<std::pair<int, int>>& block_pairs,
-      ContextImpl* context,
-      int num_threads);
-
-  // The destructor is not thread safe. It assumes that no one is
-  // modifying any cells when the matrix is being destroyed.
-  ~BlockRandomAccessSparseMatrix() override = default;
-
-  // BlockRandomAccessMatrix Interface.
-  CellInfo* GetCell(int row_block_id,
-                    int col_block_id,
-                    int* row,
-                    int* col,
-                    int* row_stride,
-                    int* col_stride) final;
-
-  // This is not a thread safe method, it assumes that no cell is
-  // locked.
-  void SetZero() final;
-
-  // Assume that the matrix is symmetric and only one half of the matrix is
-  // stored.
-  //
-  // y += S * x
-  void SymmetricRightMultiplyAndAccumulate(const double* x, double* y) const;
-
-  // Since the matrix is square, num_rows() == num_cols().
-  int num_rows() const final { return bsm_->num_rows(); }
-  int num_cols() const final { return bsm_->num_cols(); }
-
-  // Access to the underlying matrix object.
-  const BlockSparseMatrix* matrix() const { return bsm_.get(); }
-  BlockSparseMatrix* mutable_matrix() { return bsm_.get(); }
-
- private:
-  int64_t IntPairToInt64(int row, int col) const {
-    return row * kRowShift + col;
-  }
-
-  void Int64ToIntPair(int64_t index, int* row, int* col) const {
-    *row = index / kRowShift;
-    *col = index % kRowShift;
-  }
-
-  constexpr static int64_t kRowShift{1ll << 32};
-
-  // row/column block sizes.
-  const std::vector<Block> blocks_;
-  ContextImpl* context_ = nullptr;
-  const int num_threads_ = 1;
-
-  // A mapping from <row_block_id, col_block_id> to the position in
-  // the values array of bsm_ where the block is stored.
-  using LayoutType = std::unordered_map<std::int64_t, CellInfo>;
-  LayoutType layout_;
-
-  // The underlying matrix object which actually stores the cells.
-  std::unique_ptr<BlockSparseMatrix> bsm_;
-
-  friend class BlockRandomAccessSparseMatrixTest;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_BLOCK_RANDOM_ACCESS_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/block_random_access_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/block_random_access_sparse_matrix_test.cc
deleted file mode 100644
index 0bb39f1..0000000
--- a/third_party/ceres/internal/ceres/block_random_access_sparse_matrix_test.cc
+++ /dev/null
@@ -1,181 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_random_access_sparse_matrix.h"
-
-#include <limits>
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(BlockRandomAccessSparseMatrix, GetCell) {
-  ContextImpl context;
-  constexpr int num_threads = 1;
-  std::vector<Block> blocks;
-  blocks.emplace_back(3, 0);
-  blocks.emplace_back(4, 3);
-  blocks.emplace_back(5, 7);
-  constexpr int num_rows = 3 + 4 + 5;
-
-  std::set<std::pair<int, int>> block_pairs;
-  int num_nonzeros = 0;
-  block_pairs.emplace(0, 0);
-  num_nonzeros += blocks[0].size * blocks[0].size;
-
-  block_pairs.emplace(1, 1);
-  num_nonzeros += blocks[1].size * blocks[1].size;
-
-  block_pairs.emplace(1, 2);
-  num_nonzeros += blocks[1].size * blocks[2].size;
-
-  block_pairs.emplace(0, 2);
-  num_nonzeros += blocks[2].size * blocks[0].size;
-
-  BlockRandomAccessSparseMatrix m(blocks, block_pairs, &context, num_threads);
-  EXPECT_EQ(m.num_rows(), num_rows);
-  EXPECT_EQ(m.num_cols(), num_rows);
-
-  for (const auto& block_pair : block_pairs) {
-    const int row_block_id = block_pair.first;
-    const int col_block_id = block_pair.second;
-    int row;
-    int col;
-    int row_stride;
-    int col_stride;
-    CellInfo* cell = m.GetCell(
-        row_block_id, col_block_id, &row, &col, &row_stride, &col_stride);
-    EXPECT_TRUE(cell != nullptr);
-    EXPECT_EQ(row, 0);
-    EXPECT_EQ(col, 0);
-    EXPECT_EQ(row_stride, blocks[row_block_id].size);
-    EXPECT_EQ(col_stride, blocks[col_block_id].size);
-
-    // Write into the block
-    MatrixRef(cell->values, row_stride, col_stride)
-        .block(row, col, blocks[row_block_id].size, blocks[col_block_id].size) =
-        (row_block_id + 1) * (col_block_id + 1) *
-        Matrix::Ones(blocks[row_block_id].size, blocks[col_block_id].size);
-  }
-
-  const BlockSparseMatrix* bsm = m.matrix();
-  EXPECT_EQ(bsm->num_nonzeros(), num_nonzeros);
-
-  Matrix dense;
-  bsm->ToDenseMatrix(&dense);
-
-  double kTolerance = 1e-14;
-
-  // (0, 0)
-  EXPECT_NEAR(
-      (dense.block(0, 0, 3, 3) - Matrix::Ones(3, 3)).norm(), 0.0, kTolerance);
-  // (1, 1)
-  EXPECT_NEAR((dense.block(3, 3, 4, 4) - 2 * 2 * Matrix::Ones(4, 4)).norm(),
-              0.0,
-              kTolerance);
-  // (1, 2)
-  EXPECT_NEAR((dense.block(3, 3 + 4, 4, 5) - 2 * 3 * Matrix::Ones(4, 5)).norm(),
-              0.0,
-              kTolerance);
-  // (0, 2)
-  EXPECT_NEAR((dense.block(0, 3 + 4, 3, 5) - 3 * 1 * Matrix::Ones(3, 5)).norm(),
-              0.0,
-              kTolerance);
-
-  // There is nothing else in the matrix besides these four blocks.
-  EXPECT_NEAR(
-      dense.norm(), sqrt(9. + 16. * 16. + 36. * 20. + 9. * 15.), kTolerance);
-
-  Vector x = Vector::Ones(dense.rows());
-  Vector actual_y = Vector::Zero(dense.rows());
-  Vector expected_y = Vector::Zero(dense.rows());
-
-  expected_y += dense.selfadjointView<Eigen::Upper>() * x;
-  m.SymmetricRightMultiplyAndAccumulate(x.data(), actual_y.data());
-  EXPECT_NEAR((expected_y - actual_y).norm(), 0.0, kTolerance)
-      << "actual: " << actual_y.transpose() << "\n"
-      << "expected: " << expected_y.transpose() << "matrix: \n " << dense;
-}
-
-// IntPairToInt64 is private, thus this fixture is needed to access and
-// test it.
-class BlockRandomAccessSparseMatrixTest : public ::testing::Test {
- public:
-  void SetUp() final {
-    std::vector<Block> blocks;
-    blocks.emplace_back(1, 0);
-    std::set<std::pair<int, int>> block_pairs;
-    block_pairs.emplace(0, 0);
-    m_ = std::make_unique<BlockRandomAccessSparseMatrix>(
-        blocks, block_pairs, &context_, 1);
-  }
-
-  void CheckIntPairToInt64(int a, int b) {
-    int64_t value = m_->IntPairToInt64(a, b);
-    EXPECT_GT(value, 0) << "Overflow a = " << a << " b = " << b;
-    EXPECT_GT(value, a) << "Overflow a = " << a << " b = " << b;
-    EXPECT_GT(value, b) << "Overflow a = " << a << " b = " << b;
-  }
-
-  void CheckInt64ToIntPair() {
-    uint64_t max_rows = m_->kRowShift;
-    for (int row = max_rows - 10; row < max_rows; ++row) {
-      for (int col = 0; col < 10; ++col) {
-        int row_computed;
-        int col_computed;
-        m_->Int64ToIntPair(
-            m_->IntPairToInt64(row, col), &row_computed, &col_computed);
-        EXPECT_EQ(row, row_computed);
-        EXPECT_EQ(col, col_computed);
-      }
-    }
-  }
-
- private:
-  ContextImpl context_;
-  std::unique_ptr<BlockRandomAccessSparseMatrix> m_;
-};
-
-TEST_F(BlockRandomAccessSparseMatrixTest, IntPairToInt64Overflow) {
-  CheckIntPairToInt64(std::numeric_limits<int32_t>::max(),
-                      std::numeric_limits<int32_t>::max());
-}
-
-TEST_F(BlockRandomAccessSparseMatrixTest, Int64ToIntPair) {
-  CheckInt64ToIntPair();
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_sparse_matrix.cc b/third_party/ceres/internal/ceres/block_sparse_matrix.cc
deleted file mode 100644
index 2efee39..0000000
--- a/third_party/ceres/internal/ceres/block_sparse_matrix.cc
+++ /dev/null
@@ -1,842 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_sparse_matrix.h"
-
-#include <algorithm>
-#include <cstddef>
-#include <memory>
-#include <numeric>
-#include <random>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/small_blas.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-
-#ifndef CERES_NO_CUDA
-#include "cuda_runtime.h"
-#endif
-
-namespace ceres::internal {
-
-namespace {
-void ComputeCumulativeNumberOfNonZeros(std::vector<CompressedList>& rows) {
-  if (rows.empty()) {
-    return;
-  }
-  rows[0].cumulative_nnz = rows[0].nnz;
-  for (int c = 1; c < rows.size(); ++c) {
-    const int curr_nnz = rows[c].nnz;
-    rows[c].cumulative_nnz = curr_nnz + rows[c - 1].cumulative_nnz;
-  }
-}
-
-template <bool transpose>
-std::unique_ptr<CompressedRowSparseMatrix>
-CreateStructureOfCompressedRowSparseMatrix(
-    int num_rows,
-    int num_cols,
-    int num_nonzeros,
-    const CompressedRowBlockStructure* block_structure) {
-  auto crs_matrix = std::make_unique<CompressedRowSparseMatrix>(
-      num_rows, num_cols, num_nonzeros);
-  auto crs_cols = crs_matrix->mutable_cols();
-  auto crs_rows = crs_matrix->mutable_rows();
-  int value_offset = 0;
-  const int num_row_blocks = block_structure->rows.size();
-  const auto& cols = block_structure->cols;
-  *crs_rows++ = 0;
-  for (int row_block_id = 0; row_block_id < num_row_blocks; ++row_block_id) {
-    const auto& row_block = block_structure->rows[row_block_id];
-    // Empty row block: only requires setting row offsets
-    if (row_block.cells.empty()) {
-      std::fill(crs_rows, crs_rows + row_block.block.size, value_offset);
-      crs_rows += row_block.block.size;
-      continue;
-    }
-
-    int row_nnz = 0;
-    if constexpr (transpose) {
-      // Transposed block structure comes with nnz in row-block filled-in
-      row_nnz = row_block.nnz / row_block.block.size;
-    } else {
-      // Nnz field of non-transposed block structure is not filled and it can
-      // have non-sequential structure (consider the case of jacobian for
-      // Schur-complement solver: E and F blocks are stored separately).
-      for (auto& c : row_block.cells) {
-        row_nnz += cols[c.block_id].size;
-      }
-    }
-
-    // Row-wise setup of matrix structure
-    for (int row = 0; row < row_block.block.size; ++row) {
-      value_offset += row_nnz;
-      *crs_rows++ = value_offset;
-      for (auto& c : row_block.cells) {
-        const int col_block_size = cols[c.block_id].size;
-        const int col_position = cols[c.block_id].position;
-        std::iota(crs_cols, crs_cols + col_block_size, col_position);
-        crs_cols += col_block_size;
-      }
-    }
-  }
-  return crs_matrix;
-}
-
-template <bool transpose>
-void UpdateCompressedRowSparseMatrixImpl(
-    CompressedRowSparseMatrix* crs_matrix,
-    const double* values,
-    const CompressedRowBlockStructure* block_structure) {
-  auto crs_values = crs_matrix->mutable_values();
-  auto crs_rows = crs_matrix->mutable_rows();
-  const int num_row_blocks = block_structure->rows.size();
-  const auto& cols = block_structure->cols;
-  for (int row_block_id = 0; row_block_id < num_row_blocks; ++row_block_id) {
-    const auto& row_block = block_structure->rows[row_block_id];
-    const int row_block_size = row_block.block.size;
-    const int row_nnz = crs_rows[1] - crs_rows[0];
-    crs_rows += row_block_size;
-
-    if (row_nnz == 0) {
-      continue;
-    }
-
-    MatrixRef crs_row_block(crs_values, row_block_size, row_nnz);
-    int col_offset = 0;
-    for (auto& c : row_block.cells) {
-      const int col_block_size = cols[c.block_id].size;
-      auto crs_cell =
-          crs_row_block.block(0, col_offset, row_block_size, col_block_size);
-      if constexpr (transpose) {
-        // Transposed matrix is filled using transposed block-strucutre
-        ConstMatrixRef cell(
-            values + c.position, col_block_size, row_block_size);
-        crs_cell = cell.transpose();
-      } else {
-        ConstMatrixRef cell(
-            values + c.position, row_block_size, col_block_size);
-        crs_cell = cell;
-      }
-      col_offset += col_block_size;
-    }
-    crs_values += row_nnz * row_block_size;
-  }
-}
-
-void SetBlockStructureOfCompressedRowSparseMatrix(
-    CompressedRowSparseMatrix* crs_matrix,
-    CompressedRowBlockStructure* block_structure) {
-  const int num_row_blocks = block_structure->rows.size();
-  auto& row_blocks = *crs_matrix->mutable_row_blocks();
-  row_blocks.resize(num_row_blocks);
-  for (int i = 0; i < num_row_blocks; ++i) {
-    row_blocks[i] = block_structure->rows[i].block;
-  }
-
-  auto& col_blocks = *crs_matrix->mutable_col_blocks();
-  col_blocks = block_structure->cols;
-}
-
-}  // namespace
-
-BlockSparseMatrix::BlockSparseMatrix(
-    CompressedRowBlockStructure* block_structure, bool use_page_locked_memory)
-    : use_page_locked_memory_(use_page_locked_memory),
-      num_rows_(0),
-      num_cols_(0),
-      num_nonzeros_(0),
-      block_structure_(block_structure) {
-  CHECK(block_structure_ != nullptr);
-
-  // Count the number of columns in the matrix.
-  for (auto& col : block_structure_->cols) {
-    num_cols_ += col.size;
-  }
-
-  // Count the number of non-zero entries and the number of rows in
-  // the matrix.
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    int row_block_size = block_structure_->rows[i].block.size;
-    num_rows_ += row_block_size;
-
-    const std::vector<Cell>& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      int col_block_id = cell.block_id;
-      int col_block_size = block_structure_->cols[col_block_id].size;
-      num_nonzeros_ += col_block_size * row_block_size;
-    }
-  }
-
-  CHECK_GE(num_rows_, 0);
-  CHECK_GE(num_cols_, 0);
-  CHECK_GE(num_nonzeros_, 0);
-  VLOG(2) << "Allocating values array with " << num_nonzeros_ * sizeof(double)
-          << " bytes.";  // NOLINT
-
-  values_ = AllocateValues(num_nonzeros_);
-  max_num_nonzeros_ = num_nonzeros_;
-  CHECK(values_ != nullptr);
-  AddTransposeBlockStructure();
-}
-
-BlockSparseMatrix::~BlockSparseMatrix() { FreeValues(values_); }
-
-void BlockSparseMatrix::AddTransposeBlockStructure() {
-  if (transpose_block_structure_ == nullptr) {
-    transpose_block_structure_ = CreateTranspose(*block_structure_);
-  }
-}
-
-void BlockSparseMatrix::SetZero() {
-  std::fill(values_, values_ + num_nonzeros_, 0.0);
-}
-
-void BlockSparseMatrix::SetZero(ContextImpl* context, int num_threads) {
-  ParallelSetZero(context, num_threads, values_, num_nonzeros_);
-}
-
-void BlockSparseMatrix::RightMultiplyAndAccumulate(const double* x,
-                                                   double* y) const {
-  RightMultiplyAndAccumulate(x, y, nullptr, 1);
-}
-
-void BlockSparseMatrix::RightMultiplyAndAccumulate(const double* x,
-                                                   double* y,
-                                                   ContextImpl* context,
-                                                   int num_threads) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-
-  const auto values = values_;
-  const auto block_structure = block_structure_.get();
-  const auto num_row_blocks = block_structure->rows.size();
-
-  ParallelFor(context,
-              0,
-              num_row_blocks,
-              num_threads,
-              [values, block_structure, x, y](int row_block_id) {
-                const int row_block_pos =
-                    block_structure->rows[row_block_id].block.position;
-                const int row_block_size =
-                    block_structure->rows[row_block_id].block.size;
-                const auto& cells = block_structure->rows[row_block_id].cells;
-                for (const auto& cell : cells) {
-                  const int col_block_id = cell.block_id;
-                  const int col_block_size =
-                      block_structure->cols[col_block_id].size;
-                  const int col_block_pos =
-                      block_structure->cols[col_block_id].position;
-                  MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-                      values + cell.position,
-                      row_block_size,
-                      col_block_size,
-                      x + col_block_pos,
-                      y + row_block_pos);
-                }
-              });
-}
-
-// TODO(https://github.com/ceres-solver/ceres-solver/issues/933): This method
-// might benefit from caching column-block partition
-void BlockSparseMatrix::LeftMultiplyAndAccumulate(const double* x,
-                                                  double* y,
-                                                  ContextImpl* context,
-                                                  int num_threads) const {
-  // While utilizing transposed structure allows to perform parallel
-  // left-multiplication by dense vector, it makes access patterns to matrix
-  // elements scattered. Thus, multiplication using transposed structure
-  // is only useful for parallel execution
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-  if (transpose_block_structure_ == nullptr || num_threads == 1) {
-    LeftMultiplyAndAccumulate(x, y);
-    return;
-  }
-
-  auto transpose_bs = transpose_block_structure_.get();
-  const auto values = values_;
-  const int num_col_blocks = transpose_bs->rows.size();
-  if (!num_col_blocks) {
-    return;
-  }
-
-  // Use non-zero count as iteration cost for guided parallel-for loop
-  ParallelFor(
-      context,
-      0,
-      num_col_blocks,
-      num_threads,
-      [values, transpose_bs, x, y](int row_block_id) {
-        int row_block_pos = transpose_bs->rows[row_block_id].block.position;
-        int row_block_size = transpose_bs->rows[row_block_id].block.size;
-        auto& cells = transpose_bs->rows[row_block_id].cells;
-
-        for (auto& cell : cells) {
-          const int col_block_id = cell.block_id;
-          const int col_block_size = transpose_bs->cols[col_block_id].size;
-          const int col_block_pos = transpose_bs->cols[col_block_id].position;
-          MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-              values + cell.position,
-              col_block_size,
-              row_block_size,
-              x + col_block_pos,
-              y + row_block_pos);
-        }
-      },
-      transpose_bs->rows.data(),
-      [](const CompressedRow& row) { return row.cumulative_nnz; });
-}
-
-void BlockSparseMatrix::LeftMultiplyAndAccumulate(const double* x,
-                                                  double* y) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-  // Single-threaded left products are always computed using a non-transpose
-  // block structure, because it has linear acess pattern to matrix elements
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    int row_block_pos = block_structure_->rows[i].block.position;
-    int row_block_size = block_structure_->rows[i].block.size;
-    const auto& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      int col_block_id = cell.block_id;
-      int col_block_size = block_structure_->cols[col_block_id].size;
-      int col_block_pos = block_structure_->cols[col_block_id].position;
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-          values_ + cell.position,
-          row_block_size,
-          col_block_size,
-          x + row_block_pos,
-          y + col_block_pos);
-    }
-  }
-}
-
-void BlockSparseMatrix::SquaredColumnNorm(double* x) const {
-  CHECK(x != nullptr);
-  VectorRef(x, num_cols_).setZero();
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    int row_block_size = block_structure_->rows[i].block.size;
-    auto& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      int col_block_id = cell.block_id;
-      int col_block_size = block_structure_->cols[col_block_id].size;
-      int col_block_pos = block_structure_->cols[col_block_id].position;
-      const MatrixRef m(
-          values_ + cell.position, row_block_size, col_block_size);
-      VectorRef(x + col_block_pos, col_block_size) += m.colwise().squaredNorm();
-    }
-  }
-}
-
-// TODO(https://github.com/ceres-solver/ceres-solver/issues/933): This method
-// might benefit from caching column-block partition
-void BlockSparseMatrix::SquaredColumnNorm(double* x,
-                                          ContextImpl* context,
-                                          int num_threads) const {
-  if (transpose_block_structure_ == nullptr || num_threads == 1) {
-    SquaredColumnNorm(x);
-    return;
-  }
-
-  CHECK(x != nullptr);
-  ParallelSetZero(context, num_threads, x, num_cols_);
-
-  auto transpose_bs = transpose_block_structure_.get();
-  const auto values = values_;
-  const int num_col_blocks = transpose_bs->rows.size();
-  ParallelFor(
-      context,
-      0,
-      num_col_blocks,
-      num_threads,
-      [values, transpose_bs, x](int row_block_id) {
-        const auto& row = transpose_bs->rows[row_block_id];
-
-        for (auto& cell : row.cells) {
-          const auto& col = transpose_bs->cols[cell.block_id];
-          const MatrixRef m(values + cell.position, col.size, row.block.size);
-          VectorRef(x + row.block.position, row.block.size) +=
-              m.colwise().squaredNorm();
-        }
-      },
-      transpose_bs->rows.data(),
-      [](const CompressedRow& row) { return row.cumulative_nnz; });
-}
-
-void BlockSparseMatrix::ScaleColumns(const double* scale) {
-  CHECK(scale != nullptr);
-
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    int row_block_size = block_structure_->rows[i].block.size;
-    auto& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      int col_block_id = cell.block_id;
-      int col_block_size = block_structure_->cols[col_block_id].size;
-      int col_block_pos = block_structure_->cols[col_block_id].position;
-      MatrixRef m(values_ + cell.position, row_block_size, col_block_size);
-      m *= ConstVectorRef(scale + col_block_pos, col_block_size).asDiagonal();
-    }
-  }
-}
-
-// TODO(https://github.com/ceres-solver/ceres-solver/issues/933): This method
-// might benefit from caching column-block partition
-void BlockSparseMatrix::ScaleColumns(const double* scale,
-                                     ContextImpl* context,
-                                     int num_threads) {
-  if (transpose_block_structure_ == nullptr || num_threads == 1) {
-    ScaleColumns(scale);
-    return;
-  }
-
-  CHECK(scale != nullptr);
-  auto transpose_bs = transpose_block_structure_.get();
-  auto values = values_;
-  const int num_col_blocks = transpose_bs->rows.size();
-  ParallelFor(
-      context,
-      0,
-      num_col_blocks,
-      num_threads,
-      [values, transpose_bs, scale](int row_block_id) {
-        const auto& row = transpose_bs->rows[row_block_id];
-
-        for (auto& cell : row.cells) {
-          const auto& col = transpose_bs->cols[cell.block_id];
-          MatrixRef m(values + cell.position, col.size, row.block.size);
-          m *= ConstVectorRef(scale + row.block.position, row.block.size)
-                   .asDiagonal();
-        }
-      },
-      transpose_bs->rows.data(),
-      [](const CompressedRow& row) { return row.cumulative_nnz; });
-}
-std::unique_ptr<CompressedRowSparseMatrix>
-BlockSparseMatrix::ToCompressedRowSparseMatrixTranspose() const {
-  auto bs = transpose_block_structure_.get();
-  auto crs_matrix = CreateStructureOfCompressedRowSparseMatrix<true>(
-      num_cols_, num_rows_, num_nonzeros_, bs);
-
-  SetBlockStructureOfCompressedRowSparseMatrix(crs_matrix.get(), bs);
-
-  UpdateCompressedRowSparseMatrixTranspose(crs_matrix.get());
-  return crs_matrix;
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-BlockSparseMatrix::ToCompressedRowSparseMatrix() const {
-  auto crs_matrix = CreateStructureOfCompressedRowSparseMatrix<false>(
-      num_rows_, num_cols_, num_nonzeros_, block_structure_.get());
-
-  SetBlockStructureOfCompressedRowSparseMatrix(crs_matrix.get(),
-                                               block_structure_.get());
-
-  UpdateCompressedRowSparseMatrix(crs_matrix.get());
-  return crs_matrix;
-}
-
-void BlockSparseMatrix::UpdateCompressedRowSparseMatrixTranspose(
-    CompressedRowSparseMatrix* crs_matrix) const {
-  CHECK(crs_matrix != nullptr);
-  CHECK_EQ(crs_matrix->num_rows(), num_cols_);
-  CHECK_EQ(crs_matrix->num_cols(), num_rows_);
-  CHECK_EQ(crs_matrix->num_nonzeros(), num_nonzeros_);
-  UpdateCompressedRowSparseMatrixImpl<true>(
-      crs_matrix, values(), transpose_block_structure_.get());
-}
-void BlockSparseMatrix::UpdateCompressedRowSparseMatrix(
-    CompressedRowSparseMatrix* crs_matrix) const {
-  CHECK(crs_matrix != nullptr);
-  CHECK_EQ(crs_matrix->num_rows(), num_rows_);
-  CHECK_EQ(crs_matrix->num_cols(), num_cols_);
-  CHECK_EQ(crs_matrix->num_nonzeros(), num_nonzeros_);
-  UpdateCompressedRowSparseMatrixImpl<false>(
-      crs_matrix, values(), block_structure_.get());
-}
-
-void BlockSparseMatrix::ToDenseMatrix(Matrix* dense_matrix) const {
-  CHECK(dense_matrix != nullptr);
-
-  dense_matrix->resize(num_rows_, num_cols_);
-  dense_matrix->setZero();
-  Matrix& m = *dense_matrix;
-
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    int row_block_pos = block_structure_->rows[i].block.position;
-    int row_block_size = block_structure_->rows[i].block.size;
-    auto& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      int col_block_id = cell.block_id;
-      int col_block_size = block_structure_->cols[col_block_id].size;
-      int col_block_pos = block_structure_->cols[col_block_id].position;
-      int jac_pos = cell.position;
-      m.block(row_block_pos, col_block_pos, row_block_size, col_block_size) +=
-          MatrixRef(values_ + jac_pos, row_block_size, col_block_size);
-    }
-  }
-}
-
-void BlockSparseMatrix::ToTripletSparseMatrix(
-    TripletSparseMatrix* matrix) const {
-  CHECK(matrix != nullptr);
-
-  matrix->Reserve(num_nonzeros_);
-  matrix->Resize(num_rows_, num_cols_);
-  matrix->SetZero();
-
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    int row_block_pos = block_structure_->rows[i].block.position;
-    int row_block_size = block_structure_->rows[i].block.size;
-    const auto& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      int col_block_id = cell.block_id;
-      int col_block_size = block_structure_->cols[col_block_id].size;
-      int col_block_pos = block_structure_->cols[col_block_id].position;
-      int jac_pos = cell.position;
-      for (int r = 0; r < row_block_size; ++r) {
-        for (int c = 0; c < col_block_size; ++c, ++jac_pos) {
-          matrix->mutable_rows()[jac_pos] = row_block_pos + r;
-          matrix->mutable_cols()[jac_pos] = col_block_pos + c;
-          matrix->mutable_values()[jac_pos] = values_[jac_pos];
-        }
-      }
-    }
-  }
-  matrix->set_num_nonzeros(num_nonzeros_);
-}
-
-// Return a pointer to the block structure. We continue to hold
-// ownership of the object though.
-const CompressedRowBlockStructure* BlockSparseMatrix::block_structure() const {
-  return block_structure_.get();
-}
-
-// Return a pointer to the block structure of matrix transpose. We continue to
-// hold ownership of the object though.
-const CompressedRowBlockStructure*
-BlockSparseMatrix::transpose_block_structure() const {
-  return transpose_block_structure_.get();
-}
-
-void BlockSparseMatrix::ToTextFile(FILE* file) const {
-  CHECK(file != nullptr);
-  for (int i = 0; i < block_structure_->rows.size(); ++i) {
-    const int row_block_pos = block_structure_->rows[i].block.position;
-    const int row_block_size = block_structure_->rows[i].block.size;
-    const auto& cells = block_structure_->rows[i].cells;
-    for (const auto& cell : cells) {
-      const int col_block_id = cell.block_id;
-      const int col_block_size = block_structure_->cols[col_block_id].size;
-      const int col_block_pos = block_structure_->cols[col_block_id].position;
-      int jac_pos = cell.position;
-      for (int r = 0; r < row_block_size; ++r) {
-        for (int c = 0; c < col_block_size; ++c) {
-          fprintf(file,
-                  "% 10d % 10d %17f\n",
-                  row_block_pos + r,
-                  col_block_pos + c,
-                  values_[jac_pos++]);
-        }
-      }
-    }
-  }
-}
-
-std::unique_ptr<BlockSparseMatrix> BlockSparseMatrix::CreateDiagonalMatrix(
-    const double* diagonal, const std::vector<Block>& column_blocks) {
-  // Create the block structure for the diagonal matrix.
-  auto* bs = new CompressedRowBlockStructure();
-  bs->cols = column_blocks;
-  int position = 0;
-  bs->rows.resize(column_blocks.size(), CompressedRow(1));
-  for (int i = 0; i < column_blocks.size(); ++i) {
-    CompressedRow& row = bs->rows[i];
-    row.block = column_blocks[i];
-    Cell& cell = row.cells[0];
-    cell.block_id = i;
-    cell.position = position;
-    position += row.block.size * row.block.size;
-  }
-
-  // Create the BlockSparseMatrix with the given block structure.
-  auto matrix = std::make_unique<BlockSparseMatrix>(bs);
-  matrix->SetZero();
-
-  // Fill the values array of the block sparse matrix.
-  double* values = matrix->mutable_values();
-  for (const auto& column_block : column_blocks) {
-    const int size = column_block.size;
-    for (int j = 0; j < size; ++j) {
-      // (j + 1) * size is compact way of accessing the (j,j) entry.
-      values[j * (size + 1)] = diagonal[j];
-    }
-    diagonal += size;
-    values += size * size;
-  }
-
-  return matrix;
-}
-
-void BlockSparseMatrix::AppendRows(const BlockSparseMatrix& m) {
-  CHECK_EQ(m.num_cols(), num_cols());
-  const CompressedRowBlockStructure* m_bs = m.block_structure();
-  CHECK_EQ(m_bs->cols.size(), block_structure_->cols.size());
-
-  const int old_num_nonzeros = num_nonzeros_;
-  const int old_num_row_blocks = block_structure_->rows.size();
-  block_structure_->rows.resize(old_num_row_blocks + m_bs->rows.size());
-
-  for (int i = 0; i < m_bs->rows.size(); ++i) {
-    const CompressedRow& m_row = m_bs->rows[i];
-    const int row_block_id = old_num_row_blocks + i;
-    CompressedRow& row = block_structure_->rows[row_block_id];
-    row.block.size = m_row.block.size;
-    row.block.position = num_rows_;
-    num_rows_ += m_row.block.size;
-    row.cells.resize(m_row.cells.size());
-    if (transpose_block_structure_) {
-      transpose_block_structure_->cols.emplace_back(row.block);
-    }
-    for (int c = 0; c < m_row.cells.size(); ++c) {
-      const int block_id = m_row.cells[c].block_id;
-      row.cells[c].block_id = block_id;
-      row.cells[c].position = num_nonzeros_;
-
-      const int cell_nnz = m_row.block.size * m_bs->cols[block_id].size;
-      if (transpose_block_structure_) {
-        transpose_block_structure_->rows[block_id].cells.emplace_back(
-            row_block_id, num_nonzeros_);
-        transpose_block_structure_->rows[block_id].nnz += cell_nnz;
-      }
-
-      num_nonzeros_ += cell_nnz;
-    }
-  }
-
-  if (num_nonzeros_ > max_num_nonzeros_) {
-    double* old_values = values_;
-    values_ = AllocateValues(num_nonzeros_);
-    std::copy_n(old_values, old_num_nonzeros, values_);
-    max_num_nonzeros_ = num_nonzeros_;
-    FreeValues(old_values);
-  }
-
-  std::copy(
-      m.values(), m.values() + m.num_nonzeros(), values_ + old_num_nonzeros);
-
-  if (transpose_block_structure_ == nullptr) {
-    return;
-  }
-  ComputeCumulativeNumberOfNonZeros(transpose_block_structure_->rows);
-}
-
-void BlockSparseMatrix::DeleteRowBlocks(const int delta_row_blocks) {
-  const int num_row_blocks = block_structure_->rows.size();
-  const int new_num_row_blocks = num_row_blocks - delta_row_blocks;
-  int delta_num_nonzeros = 0;
-  int delta_num_rows = 0;
-  const std::vector<Block>& column_blocks = block_structure_->cols;
-  for (int i = 0; i < delta_row_blocks; ++i) {
-    const CompressedRow& row = block_structure_->rows[num_row_blocks - i - 1];
-    delta_num_rows += row.block.size;
-    for (int c = 0; c < row.cells.size(); ++c) {
-      const Cell& cell = row.cells[c];
-      delta_num_nonzeros += row.block.size * column_blocks[cell.block_id].size;
-
-      if (transpose_block_structure_) {
-        auto& col_cells = transpose_block_structure_->rows[cell.block_id].cells;
-        while (!col_cells.empty() &&
-               col_cells.back().block_id >= new_num_row_blocks) {
-          const int del_block_id = col_cells.back().block_id;
-          const int del_block_rows =
-              block_structure_->rows[del_block_id].block.size;
-          const int del_block_cols = column_blocks[cell.block_id].size;
-          const int del_cell_nnz = del_block_rows * del_block_cols;
-          transpose_block_structure_->rows[cell.block_id].nnz -= del_cell_nnz;
-          col_cells.pop_back();
-        }
-      }
-    }
-  }
-  num_nonzeros_ -= delta_num_nonzeros;
-  num_rows_ -= delta_num_rows;
-  block_structure_->rows.resize(new_num_row_blocks);
-
-  if (transpose_block_structure_ == nullptr) {
-    return;
-  }
-  for (int i = 0; i < delta_row_blocks; ++i) {
-    transpose_block_structure_->cols.pop_back();
-  }
-
-  ComputeCumulativeNumberOfNonZeros(transpose_block_structure_->rows);
-}
-
-std::unique_ptr<BlockSparseMatrix> BlockSparseMatrix::CreateRandomMatrix(
-    const BlockSparseMatrix::RandomMatrixOptions& options,
-    std::mt19937& prng,
-    bool use_page_locked_memory) {
-  CHECK_GT(options.num_row_blocks, 0);
-  CHECK_GT(options.min_row_block_size, 0);
-  CHECK_GT(options.max_row_block_size, 0);
-  CHECK_LE(options.min_row_block_size, options.max_row_block_size);
-  CHECK_GT(options.block_density, 0.0);
-  CHECK_LE(options.block_density, 1.0);
-
-  std::uniform_int_distribution<int> col_distribution(
-      options.min_col_block_size, options.max_col_block_size);
-  std::uniform_int_distribution<int> row_distribution(
-      options.min_row_block_size, options.max_row_block_size);
-  auto bs = std::make_unique<CompressedRowBlockStructure>();
-  if (options.col_blocks.empty()) {
-    CHECK_GT(options.num_col_blocks, 0);
-    CHECK_GT(options.min_col_block_size, 0);
-    CHECK_GT(options.max_col_block_size, 0);
-    CHECK_LE(options.min_col_block_size, options.max_col_block_size);
-
-    // Generate the col block structure.
-    int col_block_position = 0;
-    for (int i = 0; i < options.num_col_blocks; ++i) {
-      const int col_block_size = col_distribution(prng);
-      bs->cols.emplace_back(col_block_size, col_block_position);
-      col_block_position += col_block_size;
-    }
-  } else {
-    bs->cols = options.col_blocks;
-  }
-
-  bool matrix_has_blocks = false;
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-  while (!matrix_has_blocks) {
-    VLOG(1) << "Clearing";
-    bs->rows.clear();
-    int row_block_position = 0;
-    int value_position = 0;
-    for (int r = 0; r < options.num_row_blocks; ++r) {
-      const int row_block_size = row_distribution(prng);
-      bs->rows.emplace_back();
-      CompressedRow& row = bs->rows.back();
-      row.block.size = row_block_size;
-      row.block.position = row_block_position;
-      row_block_position += row_block_size;
-      for (int c = 0; c < bs->cols.size(); ++c) {
-        if (uniform01(prng) > options.block_density) continue;
-
-        row.cells.emplace_back();
-        Cell& cell = row.cells.back();
-        cell.block_id = c;
-        cell.position = value_position;
-        value_position += row_block_size * bs->cols[c].size;
-        matrix_has_blocks = true;
-      }
-    }
-  }
-
-  auto matrix =
-      std::make_unique<BlockSparseMatrix>(bs.release(), use_page_locked_memory);
-  double* values = matrix->mutable_values();
-  std::normal_distribution<double> standard_normal_distribution;
-  std::generate_n(
-      values, matrix->num_nonzeros(), [&standard_normal_distribution, &prng] {
-        return standard_normal_distribution(prng);
-      });
-
-  return matrix;
-}
-
-std::unique_ptr<CompressedRowBlockStructure> CreateTranspose(
-    const CompressedRowBlockStructure& bs) {
-  auto transpose = std::make_unique<CompressedRowBlockStructure>();
-
-  transpose->rows.resize(bs.cols.size());
-  for (int i = 0; i < bs.cols.size(); ++i) {
-    transpose->rows[i].block = bs.cols[i];
-    transpose->rows[i].nnz = 0;
-  }
-
-  transpose->cols.resize(bs.rows.size());
-  for (int i = 0; i < bs.rows.size(); ++i) {
-    auto& row = bs.rows[i];
-    transpose->cols[i] = row.block;
-
-    const int nrows = row.block.size;
-    for (auto& cell : row.cells) {
-      transpose->rows[cell.block_id].cells.emplace_back(i, cell.position);
-      const int ncols = transpose->rows[cell.block_id].block.size;
-      transpose->rows[cell.block_id].nnz += nrows * ncols;
-    }
-  }
-  ComputeCumulativeNumberOfNonZeros(transpose->rows);
-  return transpose;
-}
-
-double* BlockSparseMatrix::AllocateValues(int size) {
-  if (!use_page_locked_memory_) {
-    return new double[size];
-  }
-
-#ifndef CERES_NO_CUDA
-
-  double* values = nullptr;
-  CHECK_EQ(cudaSuccess,
-           cudaHostAlloc(&values, sizeof(double) * size, cudaHostAllocDefault));
-  return values;
-#else
-  LOG(FATAL) << "Page locked memory requested when CUDA is not available. "
-             << "This is a Ceres bug; please contact the developers!";
-  return nullptr;
-#endif
-};
-
-void BlockSparseMatrix::FreeValues(double*& values) {
-  if (!use_page_locked_memory_) {
-    delete[] values;
-    values = nullptr;
-    return;
-  }
-
-#ifndef CERES_NO_CUDA
-  CHECK_EQ(cudaSuccess, cudaFreeHost(values));
-  values = nullptr;
-#else
-  LOG(FATAL) << "Page locked memory requested when CUDA is not available. "
-             << "This is a Ceres bug; please contact the developers!";
-#endif
-};
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_sparse_matrix.h b/third_party/ceres/internal/ceres/block_sparse_matrix.h
deleted file mode 100644
index 2e45488..0000000
--- a/third_party/ceres/internal/ceres/block_sparse_matrix.h
+++ /dev/null
@@ -1,210 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Implementation of the SparseMatrix interface for block sparse
-// matrices.
-
-#ifndef CERES_INTERNAL_BLOCK_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_BLOCK_SPARSE_MATRIX_H_
-
-#include <memory>
-#include <random>
-
-#include "ceres/block_structure.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/sparse_matrix.h"
-
-namespace ceres::internal {
-
-class TripletSparseMatrix;
-
-// This class implements the SparseMatrix interface for storing and
-// manipulating block sparse matrices. The block structure is stored
-// in the CompressedRowBlockStructure object and one is needed to
-// initialize the matrix. For details on how the blocks structure of
-// the matrix is stored please see the documentation
-//
-//   internal/ceres/block_structure.h
-//
-class CERES_NO_EXPORT BlockSparseMatrix final : public SparseMatrix {
- public:
-  // Construct a block sparse matrix with a fully initialized
-  // CompressedRowBlockStructure objected. The matrix takes over
-  // ownership of this object and destroys it upon destruction.
-  //
-  // TODO(sameeragarwal): Add a function which will validate legal
-  // CompressedRowBlockStructure objects.
-  explicit BlockSparseMatrix(CompressedRowBlockStructure* block_structure,
-                             bool use_page_locked_memory = false);
-  ~BlockSparseMatrix();
-
-  BlockSparseMatrix(const BlockSparseMatrix&) = delete;
-  void operator=(const BlockSparseMatrix&) = delete;
-
-  // Implementation of SparseMatrix interface.
-  void SetZero() override final;
-  void SetZero(ContextImpl* context, int num_threads) override final;
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  void RightMultiplyAndAccumulate(const double* x,
-                                  double* y,
-                                  ContextImpl* context,
-                                  int num_threads) const final;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final;
-  void LeftMultiplyAndAccumulate(const double* x,
-                                 double* y,
-                                 ContextImpl* context,
-                                 int num_threads) const final;
-  void SquaredColumnNorm(double* x) const final;
-  void SquaredColumnNorm(double* x,
-                         ContextImpl* context,
-                         int num_threads) const final;
-  void ScaleColumns(const double* scale) final;
-  void ScaleColumns(const double* scale,
-                    ContextImpl* context,
-                    int num_threads) final;
-
-  // Convert to CompressedRowSparseMatrix
-  std::unique_ptr<CompressedRowSparseMatrix> ToCompressedRowSparseMatrix()
-      const;
-  // Create CompressedRowSparseMatrix corresponding to transposed matrix
-  std::unique_ptr<CompressedRowSparseMatrix>
-  ToCompressedRowSparseMatrixTranspose() const;
-  // Copy values to CompressedRowSparseMatrix that has compatible structure
-  void UpdateCompressedRowSparseMatrix(
-      CompressedRowSparseMatrix* crs_matrix) const;
-  // Copy values to CompressedRowSparseMatrix that has structure of transposed
-  // matrix
-  void UpdateCompressedRowSparseMatrixTranspose(
-      CompressedRowSparseMatrix* crs_matrix) const;
-  void ToDenseMatrix(Matrix* dense_matrix) const final;
-  void ToTextFile(FILE* file) const final;
-
-  void AddTransposeBlockStructure();
-
-  // clang-format off
-  int num_rows()         const final { return num_rows_;     }
-  int num_cols()         const final { return num_cols_;     }
-  int num_nonzeros()     const final { return num_nonzeros_; }
-  const double* values() const final { return values_; }
-  double* mutable_values()     final { return values_; }
-  // clang-format on
-
-  void ToTripletSparseMatrix(TripletSparseMatrix* matrix) const;
-  const CompressedRowBlockStructure* block_structure() const;
-  const CompressedRowBlockStructure* transpose_block_structure() const;
-
-  // Append the contents of m to the bottom of this matrix. m must
-  // have the same column blocks structure as this matrix.
-  void AppendRows(const BlockSparseMatrix& m);
-
-  // Delete the bottom delta_rows_blocks.
-  void DeleteRowBlocks(int delta_row_blocks);
-
-  static std::unique_ptr<BlockSparseMatrix> CreateDiagonalMatrix(
-      const double* diagonal, const std::vector<Block>& column_blocks);
-
-  struct RandomMatrixOptions {
-    int num_row_blocks = 0;
-    int min_row_block_size = 0;
-    int max_row_block_size = 0;
-    int num_col_blocks = 0;
-    int min_col_block_size = 0;
-    int max_col_block_size = 0;
-
-    // 0 < block_density <= 1 is the probability of a block being
-    // present in the matrix. A given random matrix will not have
-    // precisely this density.
-    double block_density = 0.0;
-
-    // If col_blocks is non-empty, then the generated random matrix
-    // has this block structure and the column related options in this
-    // struct are ignored.
-    std::vector<Block> col_blocks;
-  };
-
-  // Create a random BlockSparseMatrix whose entries are normally
-  // distributed and whose structure is determined by
-  // RandomMatrixOptions.
-  static std::unique_ptr<BlockSparseMatrix> CreateRandomMatrix(
-      const RandomMatrixOptions& options,
-      std::mt19937& prng,
-      bool use_page_locked_memory = false);
-
- private:
-  double* AllocateValues(int size);
-  void FreeValues(double*& values);
-
-  const bool use_page_locked_memory_;
-  int num_rows_;
-  int num_cols_;
-  int num_nonzeros_;
-  int max_num_nonzeros_;
-  double* values_;
-  std::unique_ptr<CompressedRowBlockStructure> block_structure_;
-  std::unique_ptr<CompressedRowBlockStructure> transpose_block_structure_;
-};
-
-// A number of algorithms like the SchurEliminator do not need
-// access to the full BlockSparseMatrix interface. They only
-// need read only access to the values array and the block structure.
-//
-// BlockSparseDataMatrix a struct that carries these two bits of
-// information
-class CERES_NO_EXPORT BlockSparseMatrixData {
- public:
-  explicit BlockSparseMatrixData(const BlockSparseMatrix& m)
-      : block_structure_(m.block_structure()), values_(m.values()){};
-
-  BlockSparseMatrixData(const CompressedRowBlockStructure* block_structure,
-                        const double* values)
-      : block_structure_(block_structure), values_(values) {}
-
-  const CompressedRowBlockStructure* block_structure() const {
-    return block_structure_;
-  }
-  const double* values() const { return values_; }
-
- private:
-  const CompressedRowBlockStructure* block_structure_;
-  const double* values_;
-};
-
-std::unique_ptr<CompressedRowBlockStructure> CreateTranspose(
-    const CompressedRowBlockStructure& bs);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_BLOCK_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/block_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/block_sparse_matrix_test.cc
deleted file mode 100644
index 4a524f9..0000000
--- a/third_party/ceres/internal/ceres/block_sparse_matrix_test.cc
+++ /dev/null
@@ -1,675 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_sparse_matrix.h"
-
-#include <algorithm>
-#include <memory>
-#include <random>
-#include <string>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-namespace {
-
-std::unique_ptr<BlockSparseMatrix> CreateTestMatrixFromId(int id) {
-  if (id == 0) {
-    // Create the following block sparse matrix:
-    // [ 1 2 0 0  0 0 ]
-    // [ 3 4 0 0  0 0 ]
-    // [ 0 0 5 6  7 0 ]
-    // [ 0 0 8 9 10 0 ]
-    CompressedRowBlockStructure* bs = new CompressedRowBlockStructure;
-    bs->cols = {
-        // Block size 2, position 0.
-        Block(2, 0),
-        // Block size 3, position 2.
-        Block(3, 2),
-        // Block size 1, position 5.
-        Block(1, 5),
-    };
-    bs->rows = {CompressedRow(1), CompressedRow(1)};
-    bs->rows[0].block = Block(2, 0);
-    bs->rows[0].cells = {Cell(0, 0)};
-
-    bs->rows[1].block = Block(2, 2);
-    bs->rows[1].cells = {Cell(1, 4)};
-    auto m = std::make_unique<BlockSparseMatrix>(bs);
-    EXPECT_NE(m, nullptr);
-    EXPECT_EQ(m->num_rows(), 4);
-    EXPECT_EQ(m->num_cols(), 6);
-    EXPECT_EQ(m->num_nonzeros(), 10);
-    double* values = m->mutable_values();
-    for (int i = 0; i < 10; ++i) {
-      values[i] = i + 1;
-    }
-    return m;
-  } else if (id == 1) {
-    // Create the following block sparse matrix:
-    // [ 1 2 0 5 6 0 ]
-    // [ 3 4 0 7 8 0 ]
-    // [ 0 0 9 0 0 0 ]
-    CompressedRowBlockStructure* bs = new CompressedRowBlockStructure;
-    bs->cols = {
-        // Block size 2, position 0.
-        Block(2, 0),
-        // Block size 1, position 2.
-        Block(1, 2),
-        // Block size 2, position 3.
-        Block(2, 3),
-        // Block size 1, position 5.
-        Block(1, 5),
-    };
-    bs->rows = {CompressedRow(2), CompressedRow(1)};
-    bs->rows[0].block = Block(2, 0);
-    bs->rows[0].cells = {Cell(0, 0), Cell(2, 4)};
-
-    bs->rows[1].block = Block(1, 2);
-    bs->rows[1].cells = {Cell(1, 8)};
-    auto m = std::make_unique<BlockSparseMatrix>(bs);
-    EXPECT_NE(m, nullptr);
-    EXPECT_EQ(m->num_rows(), 3);
-    EXPECT_EQ(m->num_cols(), 6);
-    EXPECT_EQ(m->num_nonzeros(), 9);
-    double* values = m->mutable_values();
-    for (int i = 0; i < 9; ++i) {
-      values[i] = i + 1;
-    }
-    return m;
-  } else if (id == 2) {
-    // Create the following block sparse matrix:
-    // [ 1 2 0 | 6 7 0 ]
-    // [ 3 4 0 | 8 9 0 ]
-    // [ 0 0 5 | 0 0 10]
-    // With cells of the left submatrix preceding cells of the right submatrix
-    CompressedRowBlockStructure* bs = new CompressedRowBlockStructure;
-    bs->cols = {
-        // Block size 2, position 0.
-        Block(2, 0),
-        // Block size 1, position 2.
-        Block(1, 2),
-        // Block size 2, position 3.
-        Block(2, 3),
-        // Block size 1, position 5.
-        Block(1, 5),
-    };
-    bs->rows = {CompressedRow(2), CompressedRow(1)};
-    bs->rows[0].block = Block(2, 0);
-    bs->rows[0].cells = {Cell(0, 0), Cell(2, 5)};
-
-    bs->rows[1].block = Block(1, 2);
-    bs->rows[1].cells = {Cell(1, 4), Cell(3, 9)};
-    auto m = std::make_unique<BlockSparseMatrix>(bs);
-    EXPECT_NE(m, nullptr);
-    EXPECT_EQ(m->num_rows(), 3);
-    EXPECT_EQ(m->num_cols(), 6);
-    EXPECT_EQ(m->num_nonzeros(), 10);
-    double* values = m->mutable_values();
-    for (int i = 0; i < 10; ++i) {
-      values[i] = i + 1;
-    }
-    return m;
-  }
-  return nullptr;
-}
-}  // namespace
-
-const int kNumThreads = 4;
-
-class BlockSparseMatrixTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(2);
-    CHECK(problem != nullptr);
-    a_.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-
-    problem = CreateLinearLeastSquaresProblemFromId(1);
-    CHECK(problem != nullptr);
-    b_.reset(down_cast<TripletSparseMatrix*>(problem->A.release()));
-
-    CHECK_EQ(a_->num_rows(), b_->num_rows());
-    CHECK_EQ(a_->num_cols(), b_->num_cols());
-    CHECK_EQ(a_->num_nonzeros(), b_->num_nonzeros());
-    context_.EnsureMinimumThreads(kNumThreads);
-
-    BlockSparseMatrix::RandomMatrixOptions options;
-    options.num_row_blocks = 1000;
-    options.min_row_block_size = 1;
-    options.max_row_block_size = 8;
-    options.num_col_blocks = 100;
-    options.min_col_block_size = 1;
-    options.max_col_block_size = 8;
-    options.block_density = 0.05;
-
-    std::mt19937 rng;
-    c_ = BlockSparseMatrix::CreateRandomMatrix(options, rng);
-  }
-
-  std::unique_ptr<BlockSparseMatrix> a_;
-  std::unique_ptr<TripletSparseMatrix> b_;
-  std::unique_ptr<BlockSparseMatrix> c_;
-  ContextImpl context_;
-};
-
-TEST_F(BlockSparseMatrixTest, SetZeroTest) {
-  a_->SetZero();
-  EXPECT_EQ(13, a_->num_nonzeros());
-}
-
-TEST_F(BlockSparseMatrixTest, RightMultiplyAndAccumulateTest) {
-  Vector y_a = Vector::Zero(a_->num_rows());
-  Vector y_b = Vector::Zero(a_->num_rows());
-  for (int i = 0; i < a_->num_cols(); ++i) {
-    Vector x = Vector::Zero(a_->num_cols());
-    x[i] = 1.0;
-    a_->RightMultiplyAndAccumulate(x.data(), y_a.data());
-    b_->RightMultiplyAndAccumulate(x.data(), y_b.data());
-    EXPECT_LT((y_a - y_b).norm(), 1e-12);
-  }
-}
-
-TEST_F(BlockSparseMatrixTest, RightMultiplyAndAccumulateParallelTest) {
-  Vector y_0 = Vector::Random(a_->num_rows());
-  Vector y_s = y_0;
-  Vector y_p = y_0;
-
-  Vector x = Vector::Random(a_->num_cols());
-  a_->RightMultiplyAndAccumulate(x.data(), y_s.data());
-
-  a_->RightMultiplyAndAccumulate(x.data(), y_p.data(), &context_, kNumThreads);
-
-  // Current parallel implementation is expected to be bit-exact
-  EXPECT_EQ((y_s - y_p).norm(), 0.);
-}
-
-TEST_F(BlockSparseMatrixTest, LeftMultiplyAndAccumulateTest) {
-  Vector y_a = Vector::Zero(a_->num_cols());
-  Vector y_b = Vector::Zero(a_->num_cols());
-  for (int i = 0; i < a_->num_rows(); ++i) {
-    Vector x = Vector::Zero(a_->num_rows());
-    x[i] = 1.0;
-    a_->LeftMultiplyAndAccumulate(x.data(), y_a.data());
-    b_->LeftMultiplyAndAccumulate(x.data(), y_b.data());
-    EXPECT_LT((y_a - y_b).norm(), 1e-12);
-  }
-}
-
-TEST_F(BlockSparseMatrixTest, LeftMultiplyAndAccumulateParallelTest) {
-  Vector y_0 = Vector::Random(a_->num_cols());
-  Vector y_s = y_0;
-  Vector y_p = y_0;
-
-  Vector x = Vector::Random(a_->num_rows());
-  a_->LeftMultiplyAndAccumulate(x.data(), y_s.data());
-
-  a_->LeftMultiplyAndAccumulate(x.data(), y_p.data(), &context_, kNumThreads);
-
-  // Parallel implementation for left products uses a different order of
-  // traversal, thus results might be different
-  EXPECT_LT((y_s - y_p).norm(), 1e-12);
-}
-
-TEST_F(BlockSparseMatrixTest, SquaredColumnNormTest) {
-  Vector y_a = Vector::Zero(a_->num_cols());
-  Vector y_b = Vector::Zero(a_->num_cols());
-  a_->SquaredColumnNorm(y_a.data());
-  b_->SquaredColumnNorm(y_b.data());
-  EXPECT_LT((y_a - y_b).norm(), 1e-12);
-}
-
-TEST_F(BlockSparseMatrixTest, SquaredColumnNormParallelTest) {
-  Vector y_a = Vector::Zero(c_->num_cols());
-  Vector y_b = Vector::Zero(c_->num_cols());
-  c_->SquaredColumnNorm(y_a.data());
-
-  c_->SquaredColumnNorm(y_b.data(), &context_, kNumThreads);
-  EXPECT_LT((y_a - y_b).norm(), 1e-12);
-}
-
-TEST_F(BlockSparseMatrixTest, ScaleColumnsTest) {
-  const Vector scale = Vector::Random(c_->num_cols()).cwiseAbs();
-
-  const Vector x = Vector::Random(c_->num_rows());
-  Vector y_expected = Vector::Zero(c_->num_cols());
-  c_->LeftMultiplyAndAccumulate(x.data(), y_expected.data());
-  y_expected.array() *= scale.array();
-
-  c_->ScaleColumns(scale.data());
-  Vector y_observed = Vector::Zero(c_->num_cols());
-  c_->LeftMultiplyAndAccumulate(x.data(), y_observed.data());
-
-  EXPECT_GT(y_expected.norm(), 1.);
-  EXPECT_LT((y_observed - y_expected).norm(), 1e-12 * y_expected.norm());
-}
-
-TEST_F(BlockSparseMatrixTest, ScaleColumnsParallelTest) {
-  const Vector scale = Vector::Random(c_->num_cols()).cwiseAbs();
-
-  const Vector x = Vector::Random(c_->num_rows());
-  Vector y_expected = Vector::Zero(c_->num_cols());
-  c_->LeftMultiplyAndAccumulate(x.data(), y_expected.data());
-  y_expected.array() *= scale.array();
-
-  c_->ScaleColumns(scale.data(), &context_, kNumThreads);
-  Vector y_observed = Vector::Zero(c_->num_cols());
-  c_->LeftMultiplyAndAccumulate(x.data(), y_observed.data());
-
-  EXPECT_GT(y_expected.norm(), 1.);
-  EXPECT_LT((y_observed - y_expected).norm(), 1e-12 * y_expected.norm());
-}
-
-TEST_F(BlockSparseMatrixTest, ToDenseMatrixTest) {
-  Matrix m_a;
-  Matrix m_b;
-  a_->ToDenseMatrix(&m_a);
-  b_->ToDenseMatrix(&m_b);
-  EXPECT_LT((m_a - m_b).norm(), 1e-12);
-}
-
-TEST_F(BlockSparseMatrixTest, AppendRows) {
-  std::unique_ptr<LinearLeastSquaresProblem> problem =
-      CreateLinearLeastSquaresProblemFromId(2);
-  std::unique_ptr<BlockSparseMatrix> m(
-      down_cast<BlockSparseMatrix*>(problem->A.release()));
-  a_->AppendRows(*m);
-  EXPECT_EQ(a_->num_rows(), 2 * m->num_rows());
-  EXPECT_EQ(a_->num_cols(), m->num_cols());
-
-  problem = CreateLinearLeastSquaresProblemFromId(1);
-  std::unique_ptr<TripletSparseMatrix> m2(
-      down_cast<TripletSparseMatrix*>(problem->A.release()));
-  b_->AppendRows(*m2);
-
-  Vector y_a = Vector::Zero(a_->num_rows());
-  Vector y_b = Vector::Zero(a_->num_rows());
-  for (int i = 0; i < a_->num_cols(); ++i) {
-    Vector x = Vector::Zero(a_->num_cols());
-    x[i] = 1.0;
-    y_a.setZero();
-    y_b.setZero();
-
-    a_->RightMultiplyAndAccumulate(x.data(), y_a.data());
-    b_->RightMultiplyAndAccumulate(x.data(), y_b.data());
-    EXPECT_LT((y_a - y_b).norm(), 1e-12);
-  }
-}
-
-TEST_F(BlockSparseMatrixTest, AppendDeleteRowsTransposedStructure) {
-  auto problem = CreateLinearLeastSquaresProblemFromId(2);
-  std::unique_ptr<BlockSparseMatrix> m(
-      down_cast<BlockSparseMatrix*>(problem->A.release()));
-
-  auto block_structure = a_->block_structure();
-
-  // Several AppendRows and DeleteRowBlocks operations are applied to matrix,
-  // with regular and transpose block structures being compared after each
-  // operation.
-  //
-  // Non-negative values encode number of row blocks to remove
-  // -1 encodes appending matrix m
-  const int num_row_blocks_to_delete[] = {0, -1, 1, -1, 8, -1, 10};
-  for (auto& t : num_row_blocks_to_delete) {
-    if (t == -1) {
-      a_->AppendRows(*m);
-    } else if (t > 0) {
-      CHECK_GE(block_structure->rows.size(), t);
-      a_->DeleteRowBlocks(t);
-    }
-
-    auto block_structure = a_->block_structure();
-    auto transpose_block_structure = a_->transpose_block_structure();
-    ASSERT_NE(block_structure, nullptr);
-    ASSERT_NE(transpose_block_structure, nullptr);
-
-    EXPECT_EQ(block_structure->rows.size(),
-              transpose_block_structure->cols.size());
-    EXPECT_EQ(block_structure->cols.size(),
-              transpose_block_structure->rows.size());
-
-    std::vector<int> nnz_col(transpose_block_structure->rows.size());
-    for (int i = 0; i < block_structure->cols.size(); ++i) {
-      EXPECT_EQ(block_structure->cols[i].position,
-                transpose_block_structure->rows[i].block.position);
-      const int col_size = transpose_block_structure->rows[i].block.size;
-      EXPECT_EQ(block_structure->cols[i].size, col_size);
-
-      for (auto& col_cell : transpose_block_structure->rows[i].cells) {
-        int matches = 0;
-        const int row_block_id = col_cell.block_id;
-        nnz_col[i] +=
-            col_size * transpose_block_structure->cols[row_block_id].size;
-        for (auto& row_cell : block_structure->rows[row_block_id].cells) {
-          if (row_cell.block_id != i) continue;
-          EXPECT_EQ(row_cell.position, col_cell.position);
-          ++matches;
-        }
-        EXPECT_EQ(matches, 1);
-      }
-      EXPECT_EQ(nnz_col[i], transpose_block_structure->rows[i].nnz);
-      if (i > 0) {
-        nnz_col[i] += nnz_col[i - 1];
-      }
-      EXPECT_EQ(nnz_col[i], transpose_block_structure->rows[i].cumulative_nnz);
-    }
-    for (int i = 0; i < block_structure->rows.size(); ++i) {
-      EXPECT_EQ(block_structure->rows[i].block.position,
-                transpose_block_structure->cols[i].position);
-      EXPECT_EQ(block_structure->rows[i].block.size,
-                transpose_block_structure->cols[i].size);
-
-      for (auto& row_cell : block_structure->rows[i].cells) {
-        int matches = 0;
-        const int col_block_id = row_cell.block_id;
-        for (auto& col_cell :
-             transpose_block_structure->rows[col_block_id].cells) {
-          if (col_cell.block_id != i) continue;
-          EXPECT_EQ(col_cell.position, row_cell.position);
-          ++matches;
-        }
-        EXPECT_EQ(matches, 1);
-      }
-    }
-  }
-}
-
-TEST_F(BlockSparseMatrixTest, AppendAndDeleteBlockDiagonalMatrix) {
-  const std::vector<Block>& column_blocks = a_->block_structure()->cols;
-  const int num_cols =
-      column_blocks.back().size + column_blocks.back().position;
-  Vector diagonal(num_cols);
-  for (int i = 0; i < num_cols; ++i) {
-    diagonal(i) = 2 * i * i + 1;
-  }
-  std::unique_ptr<BlockSparseMatrix> appendage(
-      BlockSparseMatrix::CreateDiagonalMatrix(diagonal.data(), column_blocks));
-
-  a_->AppendRows(*appendage);
-  Vector y_a, y_b;
-  y_a.resize(a_->num_rows());
-  y_b.resize(a_->num_rows());
-  for (int i = 0; i < a_->num_cols(); ++i) {
-    Vector x = Vector::Zero(a_->num_cols());
-    x[i] = 1.0;
-    y_a.setZero();
-    y_b.setZero();
-
-    a_->RightMultiplyAndAccumulate(x.data(), y_a.data());
-    b_->RightMultiplyAndAccumulate(x.data(), y_b.data());
-    EXPECT_LT((y_a.head(b_->num_rows()) - y_b.head(b_->num_rows())).norm(),
-              1e-12);
-    Vector expected_tail = Vector::Zero(a_->num_cols());
-    expected_tail(i) = diagonal(i);
-    EXPECT_LT((y_a.tail(a_->num_cols()) - expected_tail).norm(), 1e-12);
-  }
-
-  a_->DeleteRowBlocks(column_blocks.size());
-  EXPECT_EQ(a_->num_rows(), b_->num_rows());
-  EXPECT_EQ(a_->num_cols(), b_->num_cols());
-
-  y_a.resize(a_->num_rows());
-  y_b.resize(a_->num_rows());
-  for (int i = 0; i < a_->num_cols(); ++i) {
-    Vector x = Vector::Zero(a_->num_cols());
-    x[i] = 1.0;
-    y_a.setZero();
-    y_b.setZero();
-
-    a_->RightMultiplyAndAccumulate(x.data(), y_a.data());
-    b_->RightMultiplyAndAccumulate(x.data(), y_b.data());
-    EXPECT_LT((y_a - y_b).norm(), 1e-12);
-  }
-}
-
-TEST(BlockSparseMatrix, CreateDiagonalMatrix) {
-  std::vector<Block> column_blocks;
-  column_blocks.emplace_back(2, 0);
-  column_blocks.emplace_back(1, 2);
-  column_blocks.emplace_back(3, 3);
-  const int num_cols =
-      column_blocks.back().size + column_blocks.back().position;
-  Vector diagonal(num_cols);
-  for (int i = 0; i < num_cols; ++i) {
-    diagonal(i) = 2 * i * i + 1;
-  }
-
-  std::unique_ptr<BlockSparseMatrix> m(
-      BlockSparseMatrix::CreateDiagonalMatrix(diagonal.data(), column_blocks));
-  const CompressedRowBlockStructure* bs = m->block_structure();
-  EXPECT_EQ(bs->cols.size(), column_blocks.size());
-  for (int i = 0; i < column_blocks.size(); ++i) {
-    EXPECT_EQ(bs->cols[i].size, column_blocks[i].size);
-    EXPECT_EQ(bs->cols[i].position, column_blocks[i].position);
-  }
-  EXPECT_EQ(m->num_rows(), m->num_cols());
-  Vector x = Vector::Ones(num_cols);
-  Vector y = Vector::Zero(num_cols);
-  m->RightMultiplyAndAccumulate(x.data(), y.data());
-  for (int i = 0; i < num_cols; ++i) {
-    EXPECT_NEAR(y[i], diagonal[i], std::numeric_limits<double>::epsilon());
-  }
-}
-
-TEST(BlockSparseMatrix, ToDenseMatrix) {
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(0);
-    Matrix m_dense;
-    m->ToDenseMatrix(&m_dense);
-    EXPECT_EQ(m_dense.rows(), 4);
-    EXPECT_EQ(m_dense.cols(), 6);
-    Matrix m_expected(4, 6);
-    m_expected << 1, 2, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 8,
-        9, 10, 0;
-    EXPECT_EQ(m_dense, m_expected);
-  }
-
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(1);
-    Matrix m_dense;
-    m->ToDenseMatrix(&m_dense);
-    EXPECT_EQ(m_dense.rows(), 3);
-    EXPECT_EQ(m_dense.cols(), 6);
-    Matrix m_expected(3, 6);
-    m_expected << 1, 2, 0, 5, 6, 0, 3, 4, 0, 7, 8, 0, 0, 0, 9, 0, 0, 0;
-    EXPECT_EQ(m_dense, m_expected);
-  }
-
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(2);
-    Matrix m_dense;
-    m->ToDenseMatrix(&m_dense);
-    EXPECT_EQ(m_dense.rows(), 3);
-    EXPECT_EQ(m_dense.cols(), 6);
-    Matrix m_expected(3, 6);
-    m_expected << 1, 2, 0, 6, 7, 0, 3, 4, 0, 8, 9, 0, 0, 0, 5, 0, 0, 10;
-    EXPECT_EQ(m_dense, m_expected);
-  }
-}
-
-TEST(BlockSparseMatrix, ToCRSMatrix) {
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(0);
-    auto m_crs = m->ToCompressedRowSparseMatrix();
-    std::vector<int> rows_expected = {0, 2, 4, 7, 10};
-    std::vector<int> cols_expected = {0, 1, 0, 1, 2, 3, 4, 2, 3, 4};
-    std::vector<double> values_expected = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
-    for (int i = 0; i < rows_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->rows()[i], rows_expected[i]);
-    }
-    for (int i = 0; i < cols_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->cols()[i], cols_expected[i]);
-    }
-    for (int i = 0; i < values_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->values()[i], values_expected[i]);
-    }
-  }
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(1);
-    auto m_crs = m->ToCompressedRowSparseMatrix();
-    std::vector<int> rows_expected = {0, 4, 8, 9};
-    std::vector<int> cols_expected = {0, 1, 3, 4, 0, 1, 3, 4, 2};
-    std::vector<double> values_expected = {1, 2, 5, 6, 3, 4, 7, 8, 9};
-    for (int i = 0; i < rows_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->rows()[i], rows_expected[i]);
-    }
-    for (int i = 0; i < cols_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->cols()[i], cols_expected[i]);
-    }
-    for (int i = 0; i < values_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->values()[i], values_expected[i]);
-    }
-  }
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(2);
-    auto m_crs = m->ToCompressedRowSparseMatrix();
-    std::vector<int> rows_expected = {0, 4, 8, 10};
-    std::vector<int> cols_expected = {0, 1, 3, 4, 0, 1, 3, 4, 2, 5};
-    std::vector<double> values_expected = {1, 2, 6, 7, 3, 4, 8, 9, 5, 10};
-    for (int i = 0; i < rows_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->rows()[i], rows_expected[i]);
-    }
-    for (int i = 0; i < cols_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->cols()[i], cols_expected[i]);
-    }
-    for (int i = 0; i < values_expected.size(); ++i) {
-      EXPECT_EQ(m_crs->values()[i], values_expected[i]);
-    }
-  }
-}
-
-TEST(BlockSparseMatrix, ToCRSMatrixTranspose) {
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(0);
-    auto m_crs_transpose = m->ToCompressedRowSparseMatrixTranspose();
-    std::vector<int> rows_expected = {0, 2, 4, 6, 8, 10, 10};
-    std::vector<int> cols_expected = {0, 1, 0, 1, 2, 3, 2, 3, 2, 3};
-    std::vector<double> values_expected = {1, 3, 2, 4, 5, 8, 6, 9, 7, 10};
-    EXPECT_EQ(m_crs_transpose->num_nonzeros(), cols_expected.size());
-    EXPECT_EQ(m_crs_transpose->num_rows(), rows_expected.size() - 1);
-    for (int i = 0; i < rows_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->rows()[i], rows_expected[i]);
-    }
-    for (int i = 0; i < cols_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->cols()[i], cols_expected[i]);
-    }
-    for (int i = 0; i < values_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->values()[i], values_expected[i]);
-    }
-  }
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(1);
-    auto m_crs_transpose = m->ToCompressedRowSparseMatrixTranspose();
-    std::vector<int> rows_expected = {0, 2, 4, 5, 7, 9, 9};
-    std::vector<int> cols_expected = {0, 1, 0, 1, 2, 0, 1, 0, 1};
-    std::vector<double> values_expected = {1, 3, 2, 4, 9, 5, 7, 6, 8};
-    EXPECT_EQ(m_crs_transpose->num_nonzeros(), cols_expected.size());
-    EXPECT_EQ(m_crs_transpose->num_rows(), rows_expected.size() - 1);
-    for (int i = 0; i < rows_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->rows()[i], rows_expected[i]);
-    }
-    for (int i = 0; i < cols_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->cols()[i], cols_expected[i]);
-    }
-    for (int i = 0; i < values_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->values()[i], values_expected[i]);
-    }
-  }
-  {
-    std::unique_ptr<BlockSparseMatrix> m = CreateTestMatrixFromId(2);
-    auto m_crs_transpose = m->ToCompressedRowSparseMatrixTranspose();
-    std::vector<int> rows_expected = {0, 2, 4, 5, 7, 9, 10};
-    std::vector<int> cols_expected = {0, 1, 0, 1, 2, 0, 1, 0, 1, 2};
-    std::vector<double> values_expected = {1, 3, 2, 4, 5, 6, 8, 7, 9, 10};
-    EXPECT_EQ(m_crs_transpose->num_nonzeros(), cols_expected.size());
-    EXPECT_EQ(m_crs_transpose->num_rows(), rows_expected.size() - 1);
-    for (int i = 0; i < rows_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->rows()[i], rows_expected[i]);
-    }
-    for (int i = 0; i < cols_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->cols()[i], cols_expected[i]);
-    }
-    for (int i = 0; i < values_expected.size(); ++i) {
-      EXPECT_EQ(m_crs_transpose->values()[i], values_expected[i]);
-    }
-  }
-}
-
-TEST(BlockSparseMatrix, CreateTranspose) {
-  constexpr int kNumtrials = 10;
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_col_blocks = 10;
-  options.min_col_block_size = 1;
-  options.max_col_block_size = 3;
-
-  options.num_row_blocks = 20;
-  options.min_row_block_size = 1;
-  options.max_row_block_size = 4;
-  options.block_density = 0.25;
-  std::mt19937 prng;
-
-  for (int trial = 0; trial < kNumtrials; ++trial) {
-    auto a = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-
-    auto ap_bs = std::make_unique<CompressedRowBlockStructure>();
-    *ap_bs = *a->block_structure();
-    BlockSparseMatrix ap(ap_bs.release());
-    std::copy_n(a->values(), a->num_nonzeros(), ap.mutable_values());
-
-    Vector x = Vector::Random(a->num_cols());
-    Vector y = Vector::Random(a->num_rows());
-    Vector a_x = Vector::Zero(a->num_rows());
-    Vector a_t_y = Vector::Zero(a->num_cols());
-    Vector ap_x = Vector::Zero(a->num_rows());
-    Vector ap_t_y = Vector::Zero(a->num_cols());
-    a->RightMultiplyAndAccumulate(x.data(), a_x.data());
-    ap.RightMultiplyAndAccumulate(x.data(), ap_x.data());
-    EXPECT_NEAR((a_x - ap_x).norm() / a_x.norm(),
-                0.0,
-                std::numeric_limits<double>::epsilon());
-    a->LeftMultiplyAndAccumulate(y.data(), a_t_y.data());
-    ap.LeftMultiplyAndAccumulate(y.data(), ap_t_y.data());
-    EXPECT_NEAR((a_t_y - ap_t_y).norm() / a_t_y.norm(),
-                0.0,
-                std::numeric_limits<double>::epsilon());
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/block_structure.cc b/third_party/ceres/internal/ceres/block_structure.cc
deleted file mode 100644
index 70f68b2..0000000
--- a/third_party/ceres/internal/ceres/block_structure.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/block_structure.h"
-
-#include <vector>
-
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-bool CellLessThan(const Cell& lhs, const Cell& rhs) {
-  if (lhs.block_id == rhs.block_id) {
-    return (lhs.position < rhs.position);
-  }
-  return (lhs.block_id < rhs.block_id);
-}
-
-std::vector<Block> Tail(const std::vector<Block>& blocks, int n) {
-  CHECK_LE(n, blocks.size());
-  std::vector<Block> tail;
-  const int num_blocks = blocks.size();
-  const int start = num_blocks - n;
-
-  int position = 0;
-  tail.reserve(n);
-  for (int i = start; i < num_blocks; ++i) {
-    tail.emplace_back(blocks[i].size, position);
-    position += blocks[i].size;
-  }
-
-  return tail;
-}
-
-int SumSquaredSizes(const std::vector<Block>& blocks) {
-  int sum = 0;
-  for (const auto& b : blocks) {
-    sum += b.size * b.size;
-  }
-  return sum;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/block_structure.h b/third_party/ceres/internal/ceres/block_structure.h
deleted file mode 100644
index 9500fbb..0000000
--- a/third_party/ceres/internal/ceres/block_structure.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Block structure objects are used to carry information about the
-// dense block structure of sparse matrices. The BlockSparseMatrix
-// object uses the BlockStructure objects to keep track of the matrix
-// structure and operate upon it. This allows us to use more cache
-// friendly block oriented linear algebra operations on the matrix
-// instead of accessing it one scalar entry at a time.
-
-#ifndef CERES_INTERNAL_BLOCK_STRUCTURE_H_
-#define CERES_INTERNAL_BLOCK_STRUCTURE_H_
-
-#include <cstdint>
-#include <vector>
-
-#include "ceres/internal/export.h"
-
-// This file is being included into source files that are compiled with nvcc.
-// nvcc shipped with ubuntu 20.04 does not support some features of c++17,
-// including nested namespace definitions
-namespace ceres {
-namespace internal {
-
-using BlockSize = int32_t;
-
-struct CERES_NO_EXPORT Block {
-  Block() = default;
-  Block(int size_, int position_) noexcept : size(size_), position(position_) {}
-
-  BlockSize size{-1};
-  int position{-1};  // Position along the row/column.
-};
-
-inline bool operator==(const Block& left, const Block& right) noexcept {
-  return (left.size == right.size) && (left.position == right.position);
-}
-
-struct CERES_NO_EXPORT Cell {
-  Cell() = default;
-  Cell(int block_id_, int position_) noexcept
-      : block_id(block_id_), position(position_) {}
-
-  // Column or row block id as the case maybe.
-  int block_id{-1};
-  // Where in the values array of the jacobian is this cell located.
-  int position{-1};
-};
-
-// Order cell by their block_id;
-CERES_NO_EXPORT bool CellLessThan(const Cell& lhs, const Cell& rhs);
-
-struct CERES_NO_EXPORT CompressedList {
-  CompressedList() = default;
-
-  // Construct a CompressedList with the cells containing num_cells
-  // entries.
-  explicit CompressedList(int num_cells) noexcept : cells(num_cells) {}
-  Block block;
-  std::vector<Cell> cells;
-  // Number of non-zeros in cells of this row block
-  int nnz{-1};
-  // Number of non-zeros in cells of this and every preceeding row block in
-  // block-sparse matrix
-  int cumulative_nnz{-1};
-};
-
-using CompressedRow = CompressedList;
-using CompressedColumn = CompressedList;
-
-// CompressedRowBlockStructure specifies the storage structure of a row block
-// sparse matrix.
-//
-// Consider the following matrix A:
-// A = [A_11 A_12 ...
-//      A_21 A_22 ...
-//      ...
-//      A_m1 A_m2 ... ]
-//
-// A row block sparse matrix is a matrix where the following properties hold:
-// 1. The number of rows in every block A_ij and A_ik are the same.
-// 2. The number of columns in every block A_ij and A_kj are the same.
-// 3. The number of rows in A_ij and A_kj may be different (i != k).
-// 4. The number of columns in A_ij and A_ik may be different (j != k).
-// 5. Any block A_ij may be all 0s, in which case the block is not stored.
-//
-// The structure of the matrix is stored as follows:
-//
-// The `rows' array contains the following information for each row block:
-// - rows[i].block.size: The number of rows in each block A_ij in the row block.
-// - rows[i].block.position: The starting row in the full matrix A of the
-//       row block i.
-// - rows[i].cells[j].block_id: The index into the `cols' array corresponding to
-//       the non-zero blocks A_ij.
-// - rows[i].cells[j].position: The index in the `values' array for the contents
-//       of block A_ij.
-//
-// The `cols' array contains the following information for block:
-// - cols[.].size: The number of columns spanned by the block.
-// - cols[.].position: The starting column in the full matrix A of the block.
-//
-//
-// Example of a row block sparse matrix:
-// block_id: | 0  |1|2  |3 |
-// rows[0]:  [ 1 2 0 3 4 0 ]
-//           [ 5 6 0 7 8 0 ]
-// rows[1]:  [ 0 0 9 0 0 0 ]
-//
-// This matrix is stored as follows:
-//
-// There are four column blocks:
-// cols[0].size = 2
-// cols[0].position = 0
-// cols[1].size = 1
-// cols[1].position = 2
-// cols[2].size = 2
-// cols[2].position = 3
-// cols[3].size = 1
-// cols[3].position = 5
-
-// The first row block spans two rows, starting at row 0:
-// rows[0].block.size = 2          // This row block spans two rows.
-// rows[0].block.position = 0      // It starts at row 0.
-// rows[0] has two cells, at column blocks 0 and 2:
-// rows[0].cells[0].block_id = 0   // This cell is in column block 0.
-// rows[0].cells[0].position = 0   // See below for an explanation of this.
-// rows[0].cells[1].block_id = 2   // This cell is in column block 2.
-// rows[0].cells[1].position = 4   // See below for an explanation of this.
-//
-// The second row block spans two rows, starting at row 2:
-// rows[1].block.size = 1          // This row block spans one row.
-// rows[1].block.position = 2      // It starts at row 2.
-// rows[1] has one cell at column block 1:
-// rows[1].cells[0].block_id = 1   // This cell is in column block 1.
-// rows[1].cells[0].position = 8   // See below for an explanation of this.
-//
-// The values in each blocks are stored contiguously in row major order.
-// However, there is no unique way to order the blocks -- it is usually
-// optimized to promote cache coherent access, e.g. ordering it so that
-// Jacobian blocks of parameters of the same type are stored nearby.
-// This is one possible way to store the values of the blocks in a values array:
-// values = { 1, 2, 5, 6, 3, 4, 7, 8, 9 }
-//           |           |          |   |    // The three blocks.
-//            ^ rows[0].cells[0].position = 0
-//                        ^ rows[0].cells[1].position = 4
-//                                    ^ rows[1].cells[0].position = 8
-struct CERES_NO_EXPORT CompressedRowBlockStructure {
-  std::vector<Block> cols;
-  std::vector<CompressedRow> rows;
-};
-
-struct CERES_NO_EXPORT CompressedColumnBlockStructure {
-  std::vector<Block> rows;
-  std::vector<CompressedColumn> cols;
-};
-
-inline int NumScalarEntries(const std::vector<Block>& blocks) {
-  if (blocks.empty()) {
-    return 0;
-  }
-
-  auto& block = blocks.back();
-  return block.position + block.size;
-}
-
-std::vector<Block> Tail(const std::vector<Block>& blocks, int n);
-int SumSquaredSizes(const std::vector<Block>& blocks);
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_BLOCK_STRUCTURE_H_
diff --git a/third_party/ceres/internal/ceres/bundle_adjustment_test_util.h b/third_party/ceres/internal/ceres/bundle_adjustment_test_util.h
deleted file mode 100644
index 785981a..0000000
--- a/third_party/ceres/internal/ceres/bundle_adjustment_test_util.h
+++ /dev/null
@@ -1,250 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// End-to-end bundle adjustment test utilities for Ceres. This base is used in
-// the generated bundle adjustment test binaries. The reason to split the
-// bundle tests into separate binaries is so the tests can get parallelized.
-
-#include <cmath>
-#include <cstdio>
-#include <cstdlib>
-#include <string>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/internal/export.h"
-#include "ceres/ordered_groups.h"
-#include "ceres/problem.h"
-#include "ceres/rotation.h"
-#include "ceres/solver.h"
-#include "ceres/stringprintf.h"
-#include "ceres/test_util.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-namespace internal {
-
-const bool kAutomaticOrdering = true;
-const bool kUserOrdering = false;
-
-// This class implements the SystemTestProblem interface and provides
-// access to a bundle adjustment problem. It is based on
-// examples/bundle_adjustment_example.cc. Currently a small 16 camera
-// problem is hard coded in the constructor.
-class BundleAdjustmentProblem {
- public:
-  BundleAdjustmentProblem(const std::string input_file) {
-    ReadData(input_file);
-    BuildProblem();
-  }
-  BundleAdjustmentProblem() {
-    const std::string input_file =
-        TestFileAbsolutePath("problem-16-22106-pre.txt");
-    ReadData(input_file);
-    BuildProblem();
-  }
-
-  ~BundleAdjustmentProblem() {
-    delete[] point_index_;
-    delete[] camera_index_;
-    delete[] observations_;
-    delete[] parameters_;
-  }
-
-  Problem* mutable_problem() { return &problem_; }
-  Solver::Options* mutable_solver_options() { return &options_; }
-
-  // clang-format off
-  int num_cameras()                const { return num_cameras_; }
-  int num_points()                 const { return num_points_; }
-  int num_observations()           const { return num_observations_; }
-  const int* point_index()         const { return point_index_; }
-  const int* camera_index()        const { return camera_index_; }
-  const double* observations()     const { return observations_; }
-  double* mutable_cameras()              { return parameters_; }
-  double* mutable_points()               { return parameters_ + 9 * num_cameras_; }
-  const Solver::Options& options() const { return options_; }
-  // clang-format on
-
-  static double kResidualTolerance;
-
- private:
-  void ReadData(const std::string& filename) {
-    FILE* fptr = fopen(
-        (std::string("../com_google_ceres_solver/") + filename).c_str(), "r");
-
-    if (!fptr) {
-      LOG(FATAL) << "File Error: unable to open file " << filename;
-    }
-
-    // This will die horribly on invalid files. Them's the breaks.
-    FscanfOrDie(fptr, "%d", &num_cameras_);
-    FscanfOrDie(fptr, "%d", &num_points_);
-    FscanfOrDie(fptr, "%d", &num_observations_);
-
-    VLOG(1) << "Header: " << num_cameras_ << " " << num_points_ << " "
-            << num_observations_;
-
-    point_index_ = new int[num_observations_];
-    camera_index_ = new int[num_observations_];
-    observations_ = new double[2 * num_observations_];
-
-    num_parameters_ = 9 * num_cameras_ + 3 * num_points_;
-    parameters_ = new double[num_parameters_];
-
-    for (int i = 0; i < num_observations_; ++i) {
-      FscanfOrDie(fptr, "%d", camera_index_ + i);
-      FscanfOrDie(fptr, "%d", point_index_ + i);
-      for (int j = 0; j < 2; ++j) {
-        FscanfOrDie(fptr, "%lf", observations_ + 2 * i + j);
-      }
-    }
-
-    for (int i = 0; i < num_parameters_; ++i) {
-      FscanfOrDie(fptr, "%lf", parameters_ + i);
-    }
-
-    fclose(fptr);
-  }
-
-  void BuildProblem() {
-    double* points = mutable_points();
-    double* cameras = mutable_cameras();
-
-    for (int i = 0; i < num_observations(); ++i) {
-      // Each Residual block takes a point and a camera as input and
-      // outputs a 2 dimensional residual.
-      CostFunction* cost_function =
-          new AutoDiffCostFunction<BundlerResidual, 2, 9, 3>(
-              new BundlerResidual(observations_[2 * i + 0],
-                                  observations_[2 * i + 1]));
-
-      // Each observation corresponds to a pair of a camera and a point
-      // which are identified by camera_index()[i] and
-      // point_index()[i] respectively.
-      double* camera = cameras + 9 * camera_index_[i];
-      double* point = points + 3 * point_index()[i];
-      problem_.AddResidualBlock(cost_function, nullptr, camera, point);
-    }
-
-    options_.linear_solver_ordering =
-        std::make_shared<ParameterBlockOrdering>();
-
-    // The points come before the cameras.
-    for (int i = 0; i < num_points_; ++i) {
-      options_.linear_solver_ordering->AddElementToGroup(points + 3 * i, 0);
-    }
-
-    for (int i = 0; i < num_cameras_; ++i) {
-      options_.linear_solver_ordering->AddElementToGroup(cameras + 9 * i, 1);
-    }
-
-    options_.linear_solver_type = DENSE_SCHUR;
-    options_.max_num_iterations = 25;
-    options_.function_tolerance = 1e-10;
-    options_.gradient_tolerance = 1e-10;
-    options_.parameter_tolerance = 1e-10;
-  }
-
-  template <typename T>
-  void FscanfOrDie(FILE* fptr, const char* format, T* value) {
-    int num_scanned = fscanf(fptr, format, value);
-    if (num_scanned != 1) {
-      LOG(FATAL) << "Invalid UW data file.";
-    }
-  }
-
-  // Templated pinhole camera model.  The camera is parameterized
-  // using 9 parameters. 3 for rotation, 3 for translation, 1 for
-  // focal length and 2 for radial distortion. The principal point is
-  // not modeled (i.e. it is assumed to be located at the image
-  // center).
-  struct BundlerResidual {
-    // (u, v): the position of the observation with respect to the image
-    // center point.
-    BundlerResidual(double u, double v) : u(u), v(v) {}
-
-    template <typename T>
-    bool operator()(const T* const camera,
-                    const T* const point,
-                    T* residuals) const {
-      T p[3];
-      AngleAxisRotatePoint(camera, point, p);
-
-      // Add the translation vector
-      p[0] += camera[3];
-      p[1] += camera[4];
-      p[2] += camera[5];
-
-      const T& focal = camera[6];
-      const T& l1 = camera[7];
-      const T& l2 = camera[8];
-
-      // Compute the center of distortion.  The sign change comes from
-      // the camera model that Noah Snavely's Bundler assumes, whereby
-      // the camera coordinate system has a negative z axis.
-      T xp = -focal * p[0] / p[2];
-      T yp = -focal * p[1] / p[2];
-
-      // Apply second and fourth order radial distortion.
-      T r2 = xp * xp + yp * yp;
-      T distortion = T(1.0) + r2 * (l1 + l2 * r2);
-
-      residuals[0] = distortion * xp - u;
-      residuals[1] = distortion * yp - v;
-
-      return true;
-    }
-
-    double u;
-    double v;
-  };
-
-  Problem problem_;
-  Solver::Options options_;
-
-  int num_cameras_;
-  int num_points_;
-  int num_observations_;
-  int num_parameters_;
-
-  int* point_index_;
-  int* camera_index_;
-  double* observations_;
-  // The parameter vector is laid out as follows
-  // [camera_1, ..., camera_n, point_1, ..., point_m]
-  double* parameters_;
-};
-
-double BundleAdjustmentProblem::kResidualTolerance = 1e-4;
-using BundleAdjustmentTest = SystemTest<BundleAdjustmentProblem>;
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/c_api.cc b/third_party/ceres/internal/ceres/c_api.cc
deleted file mode 100644
index 56e1324..0000000
--- a/third_party/ceres/internal/ceres/c_api.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-//
-// An incomplete C API for Ceres.
-//
-// TODO(keir): Figure out why logging does not seem to work.
-
-#include "ceres/c_api.h"
-
-#include <iostream>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/loss_function.h"
-#include "ceres/problem.h"
-#include "ceres/solver.h"
-#include "ceres/types.h"  // for std
-#include "glog/logging.h"
-
-using ceres::Problem;
-
-void ceres_init() {
-  // This is not ideal, but it's not clear what to do if there is no gflags and
-  // no access to command line arguments.
-  char message[] = "<unknown>";
-  google::InitGoogleLogging(message);
-}
-
-ceres_problem_t* ceres_create_problem() {
-  return reinterpret_cast<ceres_problem_t*>(new Problem);
-}
-
-void ceres_free_problem(ceres_problem_t* problem) {
-  delete reinterpret_cast<Problem*>(problem);
-}
-
-// This cost function wraps a C-level function pointer from the user, to bridge
-// between C and C++.
-class CERES_NO_EXPORT CallbackCostFunction final : public ceres::CostFunction {
- public:
-  CallbackCostFunction(ceres_cost_function_t cost_function,
-                       void* user_data,
-                       int num_residuals,
-                       int num_parameter_blocks,
-                       int* parameter_block_sizes)
-      : cost_function_(cost_function), user_data_(user_data) {
-    set_num_residuals(num_residuals);
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      mutable_parameter_block_sizes()->push_back(parameter_block_sizes[i]);
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    return (*cost_function_)(
-        user_data_, const_cast<double**>(parameters), residuals, jacobians);
-  }
-
- private:
-  ceres_cost_function_t cost_function_;
-  void* user_data_;
-};
-
-// This loss function wraps a C-level function pointer from the user, to bridge
-// between C and C++.
-class CallbackLossFunction final : public ceres::LossFunction {
- public:
-  explicit CallbackLossFunction(ceres_loss_function_t loss_function,
-                                void* user_data)
-      : loss_function_(loss_function), user_data_(user_data) {}
-  void Evaluate(double sq_norm, double* rho) const final {
-    (*loss_function_)(user_data_, sq_norm, rho);
-  }
-
- private:
-  ceres_loss_function_t loss_function_;
-  void* user_data_;
-};
-
-// Wrappers for the stock loss functions.
-void* ceres_create_huber_loss_function_data(double a) {
-  return new ceres::HuberLoss(a);
-}
-void* ceres_create_softl1_loss_function_data(double a) {
-  return new ceres::SoftLOneLoss(a);
-}
-void* ceres_create_cauchy_loss_function_data(double a) {
-  return new ceres::CauchyLoss(a);
-}
-void* ceres_create_arctan_loss_function_data(double a) {
-  return new ceres::ArctanLoss(a);
-}
-void* ceres_create_tolerant_loss_function_data(double a, double b) {
-  return new ceres::TolerantLoss(a, b);
-}
-
-void ceres_free_stock_loss_function_data(void* loss_function_data) {
-  delete reinterpret_cast<ceres::LossFunction*>(loss_function_data);
-}
-
-void ceres_stock_loss_function(void* user_data,
-                               double squared_norm,
-                               double out[3]) {
-  reinterpret_cast<ceres::LossFunction*>(user_data)->Evaluate(squared_norm,
-                                                              out);
-}
-
-ceres_residual_block_id_t* ceres_problem_add_residual_block(
-    ceres_problem_t* problem,
-    ceres_cost_function_t cost_function,
-    void* cost_function_data,
-    ceres_loss_function_t loss_function,
-    void* loss_function_data,
-    int num_residuals,
-    int num_parameter_blocks,
-    int* parameter_block_sizes,
-    double** parameters) {
-  auto* ceres_problem = reinterpret_cast<Problem*>(problem);
-
-  auto callback_cost_function =
-      std::make_unique<CallbackCostFunction>(cost_function,
-                                             cost_function_data,
-                                             num_residuals,
-                                             num_parameter_blocks,
-                                             parameter_block_sizes);
-
-  std::unique_ptr<ceres::LossFunction> callback_loss_function;
-  if (loss_function != nullptr) {
-    callback_loss_function = std::make_unique<CallbackLossFunction>(
-        loss_function, loss_function_data);
-  }
-
-  std::vector<double*> parameter_blocks(parameters,
-                                        parameters + num_parameter_blocks);
-  return reinterpret_cast<ceres_residual_block_id_t*>(
-      ceres_problem->AddResidualBlock(callback_cost_function.release(),
-                                      callback_loss_function.release(),
-                                      parameter_blocks));
-}
-
-void ceres_solve(ceres_problem_t* c_problem) {
-  auto* problem = reinterpret_cast<Problem*>(c_problem);
-
-  // TODO(keir): Obviously, this way of setting options won't scale or last.
-  // Instead, figure out a way to specify some of the options without
-  // duplicating everything.
-  ceres::Solver::Options options;
-  options.max_num_iterations = 100;
-  options.linear_solver_type = ceres::DENSE_QR;
-  options.minimizer_progress_to_stdout = true;
-
-  ceres::Solver::Summary summary;
-  ceres::Solve(options, problem, &summary);
-  std::cout << summary.FullReport() << "\n";
-}
diff --git a/third_party/ceres/internal/ceres/c_api_test.cc b/third_party/ceres/internal/ceres/c_api_test.cc
deleted file mode 100644
index 9386765..0000000
--- a/third_party/ceres/internal/ceres/c_api_test.cc
+++ /dev/null
@@ -1,220 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#include "ceres/c_api.h"
-
-#include <cmath>
-
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-// Duplicated from curve_fitting.cc.
-int num_observations = 67;
-// clang-format off
-double data[] = {
-  0.000000e+00, 1.133898e+00,
-  7.500000e-02, 1.334902e+00,
-  1.500000e-01, 1.213546e+00,
-  2.250000e-01, 1.252016e+00,
-  3.000000e-01, 1.392265e+00,
-  3.750000e-01, 1.314458e+00,
-  4.500000e-01, 1.472541e+00,
-  5.250000e-01, 1.536218e+00,
-  6.000000e-01, 1.355679e+00,
-  6.750000e-01, 1.463566e+00,
-  7.500000e-01, 1.490201e+00,
-  8.250000e-01, 1.658699e+00,
-  9.000000e-01, 1.067574e+00,
-  9.750000e-01, 1.464629e+00,
-  1.050000e+00, 1.402653e+00,
-  1.125000e+00, 1.713141e+00,
-  1.200000e+00, 1.527021e+00,
-  1.275000e+00, 1.702632e+00,
-  1.350000e+00, 1.423899e+00,
-  1.425000e+00, 1.543078e+00,
-  1.500000e+00, 1.664015e+00,
-  1.575000e+00, 1.732484e+00,
-  1.650000e+00, 1.543296e+00,
-  1.725000e+00, 1.959523e+00,
-  1.800000e+00, 1.685132e+00,
-  1.875000e+00, 1.951791e+00,
-  1.950000e+00, 2.095346e+00,
-  2.025000e+00, 2.361460e+00,
-  2.100000e+00, 2.169119e+00,
-  2.175000e+00, 2.061745e+00,
-  2.250000e+00, 2.178641e+00,
-  2.325000e+00, 2.104346e+00,
-  2.400000e+00, 2.584470e+00,
-  2.475000e+00, 1.914158e+00,
-  2.550000e+00, 2.368375e+00,
-  2.625000e+00, 2.686125e+00,
-  2.700000e+00, 2.712395e+00,
-  2.775000e+00, 2.499511e+00,
-  2.850000e+00, 2.558897e+00,
-  2.925000e+00, 2.309154e+00,
-  3.000000e+00, 2.869503e+00,
-  3.075000e+00, 3.116645e+00,
-  3.150000e+00, 3.094907e+00,
-  3.225000e+00, 2.471759e+00,
-  3.300000e+00, 3.017131e+00,
-  3.375000e+00, 3.232381e+00,
-  3.450000e+00, 2.944596e+00,
-  3.525000e+00, 3.385343e+00,
-  3.600000e+00, 3.199826e+00,
-  3.675000e+00, 3.423039e+00,
-  3.750000e+00, 3.621552e+00,
-  3.825000e+00, 3.559255e+00,
-  3.900000e+00, 3.530713e+00,
-  3.975000e+00, 3.561766e+00,
-  4.050000e+00, 3.544574e+00,
-  4.125000e+00, 3.867945e+00,
-  4.200000e+00, 4.049776e+00,
-  4.275000e+00, 3.885601e+00,
-  4.350000e+00, 4.110505e+00,
-  4.425000e+00, 4.345320e+00,
-  4.500000e+00, 4.161241e+00,
-  4.575000e+00, 4.363407e+00,
-  4.650000e+00, 4.161576e+00,
-  4.725000e+00, 4.619728e+00,
-  4.800000e+00, 4.737410e+00,
-  4.875000e+00, 4.727863e+00,
-  4.950000e+00, 4.669206e+00,
-};
-// clang-format on
-
-// A test cost function, similar to the one in curve_fitting.c.
-static int exponential_residual(void* user_data,
-                                double** parameters,
-                                double* residuals,
-                                double** jacobians) {
-  auto* measurement = static_cast<double*>(user_data);
-  double x = measurement[0];
-  double y = measurement[1];
-  double m = parameters[0][0];
-  double c = parameters[1][0];
-
-  residuals[0] = y - exp(m * x + c);
-  if (jacobians == nullptr) {
-    return 1;
-  }
-  if (jacobians[0] != nullptr) {
-    jacobians[0][0] = -x * exp(m * x + c);  // dr/dm
-  }
-  if (jacobians[1] != nullptr) {
-    jacobians[1][0] = -exp(m * x + c);  // dr/dc
-  }
-  return 1;
-}
-
-namespace ceres {
-namespace internal {
-
-TEST(C_API, SimpleEndToEndTest) {
-  double m = 0.0;
-  double c = 0.0;
-  double* parameter_pointers[] = {&m, &c};
-  int parameter_sizes[] = {1, 1};
-
-  ceres_problem_t* problem = ceres_create_problem();
-  for (int i = 0; i < num_observations; ++i) {
-    ceres_problem_add_residual_block(
-        problem,
-        exponential_residual,  // Cost function
-        &data[2 * i],          // Points to the (x,y) measurement
-        nullptr,               // Loss function
-        nullptr,               // Loss function user data
-        1,                     // Number of residuals
-        2,                     // Number of parameter blocks
-        parameter_sizes,
-        parameter_pointers);
-  }
-
-  ceres_solve(problem);
-
-  EXPECT_NEAR(0.3, m, 0.02);
-  EXPECT_NEAR(0.1, c, 0.04);
-
-  ceres_free_problem(problem);
-}
-
-template <typename T>
-class ScopedSetValue {
- public:
-  ScopedSetValue(T* variable, T new_value)
-      : variable_(variable), old_value_(*variable) {
-    *variable = new_value;
-  }
-  ~ScopedSetValue() { *variable_ = old_value_; }
-
- private:
-  T* variable_;
-  T old_value_;
-};
-
-TEST(C_API, LossFunctions) {
-  double m = 0.2;
-  double c = 0.03;
-  double* parameter_pointers[] = {&m, &c};
-  int parameter_sizes[] = {1, 1};
-
-  // Create two outliers, but be careful to leave the data intact.
-  ScopedSetValue<double> outlier1x(&data[12], 2.5);
-  ScopedSetValue<double> outlier1y(&data[13], 1.0e3);
-  ScopedSetValue<double> outlier2x(&data[14], 3.2);
-  ScopedSetValue<double> outlier2y(&data[15], 30e3);
-
-  // Create a cauchy cost function, and reuse it many times.
-  void* cauchy_loss_data = ceres_create_cauchy_loss_function_data(5.0);
-
-  ceres_problem_t* problem = ceres_create_problem();
-  for (int i = 0; i < num_observations; ++i) {
-    ceres_problem_add_residual_block(
-        problem,
-        exponential_residual,       // Cost function
-        &data[2 * i],               // Points to the (x,y) measurement
-        ceres_stock_loss_function,  //
-        cauchy_loss_data,           // Loss function user data
-        1,                          // Number of residuals
-        2,                          // Number of parameter blocks
-        parameter_sizes,
-        parameter_pointers);
-  }
-
-  ceres_solve(problem);
-
-  EXPECT_NEAR(0.3, m, 0.02);
-  EXPECT_NEAR(0.1, c, 0.04);
-
-  ceres_free_stock_loss_function_data(cauchy_loss_data);
-  ceres_free_problem(problem);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/callbacks.cc b/third_party/ceres/internal/ceres/callbacks.cc
deleted file mode 100644
index e6e0644..0000000
--- a/third_party/ceres/internal/ceres/callbacks.cc
+++ /dev/null
@@ -1,128 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/callbacks.h"
-
-#include <algorithm>
-#include <iostream>  // NO LINT
-#include <string>
-
-#include "ceres/program.h"
-#include "ceres/stringprintf.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-StateUpdatingCallback::StateUpdatingCallback(Program* program,
-                                             double* parameters)
-    : program_(program), parameters_(parameters) {}
-
-StateUpdatingCallback::~StateUpdatingCallback() = default;
-
-CallbackReturnType StateUpdatingCallback::operator()(
-    const IterationSummary& /*summary*/) {
-  program_->StateVectorToParameterBlocks(parameters_);
-  program_->CopyParameterBlockStateToUserState();
-  return SOLVER_CONTINUE;
-}
-
-GradientProblemSolverStateUpdatingCallback::
-    GradientProblemSolverStateUpdatingCallback(
-        int num_parameters,
-        const double* internal_parameters,
-        double* user_parameters)
-    : num_parameters_(num_parameters),
-      internal_parameters_(internal_parameters),
-      user_parameters_(user_parameters) {}
-
-GradientProblemSolverStateUpdatingCallback::
-    ~GradientProblemSolverStateUpdatingCallback() = default;
-
-CallbackReturnType GradientProblemSolverStateUpdatingCallback::operator()(
-    const IterationSummary& summary) {
-  if (summary.step_is_successful) {
-    std::copy_n(internal_parameters_, num_parameters_, user_parameters_);
-  }
-  return SOLVER_CONTINUE;
-}
-
-LoggingCallback::LoggingCallback(const MinimizerType minimizer_type,
-                                 const bool log_to_stdout)
-    : minimizer_type(minimizer_type), log_to_stdout_(log_to_stdout) {}
-
-LoggingCallback::~LoggingCallback() = default;
-
-CallbackReturnType LoggingCallback::operator()(
-    const IterationSummary& summary) {
-  std::string output;
-  if (minimizer_type == LINE_SEARCH) {
-    output = StringPrintf(
-        "% 4d: f:% 8e d:% 3.2e g:% 3.2e h:% 3.2e s:% 3.2e e:% 3d it:% 3.2e "
-        "tt:% 3.2e",
-        summary.iteration,
-        summary.cost,
-        summary.cost_change,
-        summary.gradient_max_norm,
-        summary.step_norm,
-        summary.step_size,
-        summary.line_search_function_evaluations,
-        summary.iteration_time_in_seconds,
-        summary.cumulative_time_in_seconds);
-  } else if (minimizer_type == TRUST_REGION) {
-    // clang-format off
-    if (summary.iteration == 0) {
-      output = "iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time\n";  // NOLINT
-    }
-    output += StringPrintf(
-        "% 4d % 8e   % 3.2e   % 3.2e  % 3.2e  % 3.2e % 3.2e     % 4d   % 3.2e   % 3.2e",  // NOLINT
-        // clang-format on
-        summary.iteration,
-        summary.cost,
-        summary.cost_change,
-        summary.gradient_max_norm,
-        summary.step_norm,
-        summary.relative_decrease,
-        summary.trust_region_radius,
-        summary.linear_solver_iterations,
-        summary.iteration_time_in_seconds,
-        summary.cumulative_time_in_seconds);
-  } else {
-    LOG(FATAL) << "Unknown minimizer type.";
-  }
-
-  if (log_to_stdout_) {
-    std::cout << output << std::endl;
-  } else {
-    VLOG(1) << output;
-  }
-  return SOLVER_CONTINUE;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/callbacks.h b/third_party/ceres/internal/ceres/callbacks.h
deleted file mode 100644
index d3a7657..0000000
--- a/third_party/ceres/internal/ceres/callbacks.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_CALLBACKS_H_
-#define CERES_INTERNAL_CALLBACKS_H_
-
-#include <string>
-
-#include "ceres/internal/export.h"
-#include "ceres/iteration_callback.h"
-
-namespace ceres::internal {
-
-class Program;
-
-// Callback for updating the externally visible state of parameter
-// blocks.
-class CERES_NO_EXPORT StateUpdatingCallback final : public IterationCallback {
- public:
-  StateUpdatingCallback(Program* program, double* parameters);
-  ~StateUpdatingCallback() override;
-  CallbackReturnType operator()(const IterationSummary& summary) final;
-
- private:
-  Program* program_;
-  double* parameters_;
-};
-
-// Callback for updating the externally visible state of the
-// parameters vector for GradientProblemSolver.
-class CERES_NO_EXPORT GradientProblemSolverStateUpdatingCallback final
-    : public IterationCallback {
- public:
-  GradientProblemSolverStateUpdatingCallback(int num_parameters,
-                                             const double* internal_parameters,
-                                             double* user_parameters);
-  ~GradientProblemSolverStateUpdatingCallback() override;
-  CallbackReturnType operator()(const IterationSummary& summary) final;
-
- private:
-  int num_parameters_;
-  const double* internal_parameters_;
-  double* user_parameters_;
-};
-
-// Callback for logging the state of the minimizer to STDERR or
-// STDOUT depending on the user's preferences and logging level.
-class CERES_NO_EXPORT LoggingCallback final : public IterationCallback {
- public:
-  LoggingCallback(MinimizerType minimizer_type, bool log_to_stdout);
-  ~LoggingCallback() override;
-  CallbackReturnType operator()(const IterationSummary& summary) final;
-
- private:
-  const MinimizerType minimizer_type;
-  const bool log_to_stdout_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_CALLBACKS_H_
diff --git a/third_party/ceres/internal/ceres/canonical_views_clustering.cc b/third_party/ceres/internal/ceres/canonical_views_clustering.cc
deleted file mode 100644
index d74e570..0000000
--- a/third_party/ceres/internal/ceres/canonical_views_clustering.cc
+++ /dev/null
@@ -1,223 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: David Gallup (dgallup@google.com)
-//         Sameer Agarwal (sameeragarwal@google.com)
-
-#include "ceres/canonical_views_clustering.h"
-
-#include <unordered_map>
-#include <unordered_set>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/internal/export.h"
-#include "ceres/map_util.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-using IntMap = std::unordered_map<int, int>;
-using IntSet = std::unordered_set<int>;
-
-class CERES_NO_EXPORT CanonicalViewsClustering {
- public:
-  // Compute the canonical views clustering of the vertices of the
-  // graph. centers will contain the vertices that are the identified
-  // as the canonical views/cluster centers, and membership is a map
-  // from vertices to cluster_ids. The i^th cluster center corresponds
-  // to the i^th cluster. It is possible depending on the
-  // configuration of the clustering algorithm that some of the
-  // vertices may not be assigned to any cluster. In this case they
-  // are assigned to a cluster with id = kInvalidClusterId.
-  void ComputeClustering(const CanonicalViewsClusteringOptions& options,
-                         const WeightedGraph<int>& graph,
-                         std::vector<int>* centers,
-                         IntMap* membership);
-
- private:
-  void FindValidViews(IntSet* valid_views) const;
-  double ComputeClusteringQualityDifference(
-      int candidate, const std::vector<int>& centers) const;
-  void UpdateCanonicalViewAssignments(const int canonical_view);
-  void ComputeClusterMembership(const std::vector<int>& centers,
-                                IntMap* membership) const;
-
-  CanonicalViewsClusteringOptions options_;
-  const WeightedGraph<int>* graph_;
-  // Maps a view to its representative canonical view (its cluster
-  // center).
-  IntMap view_to_canonical_view_;
-  // Maps a view to its similarity to its current cluster center.
-  std::unordered_map<int, double> view_to_canonical_view_similarity_;
-};
-
-void ComputeCanonicalViewsClustering(
-    const CanonicalViewsClusteringOptions& options,
-    const WeightedGraph<int>& graph,
-    std::vector<int>* centers,
-    IntMap* membership) {
-  time_t start_time = time(nullptr);
-  CanonicalViewsClustering cv;
-  cv.ComputeClustering(options, graph, centers, membership);
-  VLOG(2) << "Canonical views clustering time (secs): "
-          << time(nullptr) - start_time;
-}
-
-// Implementation of CanonicalViewsClustering
-void CanonicalViewsClustering::ComputeClustering(
-    const CanonicalViewsClusteringOptions& options,
-    const WeightedGraph<int>& graph,
-    std::vector<int>* centers,
-    IntMap* membership) {
-  options_ = options;
-  CHECK(centers != nullptr);
-  CHECK(membership != nullptr);
-  centers->clear();
-  membership->clear();
-  graph_ = &graph;
-
-  IntSet valid_views;
-  FindValidViews(&valid_views);
-  while (!valid_views.empty()) {
-    // Find the next best canonical view.
-    double best_difference = -std::numeric_limits<double>::max();
-    int best_view = 0;
-
-    // TODO(sameeragarwal): Make this loop multi-threaded.
-    for (const auto& view : valid_views) {
-      const double difference =
-          ComputeClusteringQualityDifference(view, *centers);
-      if (difference > best_difference) {
-        best_difference = difference;
-        best_view = view;
-      }
-    }
-
-    CHECK_GT(best_difference, -std::numeric_limits<double>::max());
-
-    // Add canonical view if quality improves, or if minimum is not
-    // yet met, otherwise break.
-    if ((best_difference <= 0) && (centers->size() >= options_.min_views)) {
-      break;
-    }
-
-    centers->push_back(best_view);
-    valid_views.erase(best_view);
-    UpdateCanonicalViewAssignments(best_view);
-  }
-
-  ComputeClusterMembership(*centers, membership);
-}
-
-// Return the set of vertices of the graph which have valid vertex
-// weights.
-void CanonicalViewsClustering::FindValidViews(IntSet* valid_views) const {
-  const IntSet& views = graph_->vertices();
-  for (const auto& view : views) {
-    if (graph_->VertexWeight(view) != WeightedGraph<int>::InvalidWeight()) {
-      valid_views->insert(view);
-    }
-  }
-}
-
-// Computes the difference in the quality score if 'candidate' were
-// added to the set of canonical views.
-double CanonicalViewsClustering::ComputeClusteringQualityDifference(
-    const int candidate, const std::vector<int>& centers) const {
-  // View score.
-  double difference =
-      options_.view_score_weight * graph_->VertexWeight(candidate);
-
-  // Compute how much the quality score changes if the candidate view
-  // was added to the list of canonical views and its nearest
-  // neighbors became members of its cluster.
-  const IntSet& neighbors = graph_->Neighbors(candidate);
-  for (const auto& neighbor : neighbors) {
-    const double old_similarity =
-        FindWithDefault(view_to_canonical_view_similarity_, neighbor, 0.0);
-    const double new_similarity = graph_->EdgeWeight(neighbor, candidate);
-    if (new_similarity > old_similarity) {
-      difference += new_similarity - old_similarity;
-    }
-  }
-
-  // Number of views penalty.
-  difference -= options_.size_penalty_weight;
-
-  // Orthogonality.
-  for (int center : centers) {
-    difference -= options_.similarity_penalty_weight *
-                  graph_->EdgeWeight(center, candidate);
-  }
-
-  return difference;
-}
-
-// Reassign views if they're more similar to the new canonical view.
-void CanonicalViewsClustering::UpdateCanonicalViewAssignments(
-    const int canonical_view) {
-  const IntSet& neighbors = graph_->Neighbors(canonical_view);
-  for (const auto& neighbor : neighbors) {
-    const double old_similarity =
-        FindWithDefault(view_to_canonical_view_similarity_, neighbor, 0.0);
-    const double new_similarity = graph_->EdgeWeight(neighbor, canonical_view);
-    if (new_similarity > old_similarity) {
-      view_to_canonical_view_[neighbor] = canonical_view;
-      view_to_canonical_view_similarity_[neighbor] = new_similarity;
-    }
-  }
-}
-
-// Assign a cluster id to each view.
-void CanonicalViewsClustering::ComputeClusterMembership(
-    const std::vector<int>& centers, IntMap* membership) const {
-  CHECK(membership != nullptr);
-  membership->clear();
-
-  // The i^th cluster has cluster id i.
-  IntMap center_to_cluster_id;
-  for (int i = 0; i < centers.size(); ++i) {
-    center_to_cluster_id[centers[i]] = i;
-  }
-
-  static constexpr int kInvalidClusterId = -1;
-
-  const IntSet& views = graph_->vertices();
-  for (const auto& view : views) {
-    auto it = view_to_canonical_view_.find(view);
-    int cluster_id = kInvalidClusterId;
-    if (it != view_to_canonical_view_.end()) {
-      cluster_id = FindOrDie(center_to_cluster_id, it->second);
-    }
-
-    InsertOrDie(membership, view, cluster_id);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/canonical_views_clustering.h b/third_party/ceres/internal/ceres/canonical_views_clustering.h
deleted file mode 100644
index eb05a91..0000000
--- a/third_party/ceres/internal/ceres/canonical_views_clustering.h
+++ /dev/null
@@ -1,126 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// An implementation of the Canonical Views clustering algorithm from
-// "Scene Summarization for Online Image Collections", Ian Simon, Noah
-// Snavely, Steven M. Seitz, ICCV 2007.
-//
-// More details can be found at
-// http://grail.cs.washington.edu/projects/canonview/
-//
-// Ceres uses this algorithm to perform view clustering for
-// constructing visibility based preconditioners.
-
-#ifndef CERES_INTERNAL_CANONICAL_VIEWS_CLUSTERING_H_
-#define CERES_INTERNAL_CANONICAL_VIEWS_CLUSTERING_H_
-
-#include <unordered_map>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-struct CanonicalViewsClusteringOptions;
-
-// Compute a partitioning of the vertices of the graph using the
-// canonical views clustering algorithm.
-//
-// In the following we will use the terms vertices and views
-// interchangeably.  Given a weighted Graph G(V,E), the canonical views
-// of G are the set of vertices that best "summarize" the content
-// of the graph. If w_ij i s the weight connecting the vertex i to
-// vertex j, and C is the set of canonical views. Then the objective
-// of the canonical views algorithm is
-//
-//   E[C] = sum_[i in V] max_[j in C] w_ij
-//          - size_penalty_weight * |C|
-//          - similarity_penalty_weight * sum_[i in C, j in C, j > i] w_ij
-//
-// alpha is the size penalty that penalizes large number of canonical
-// views.
-//
-// beta is the similarity penalty that penalizes canonical views that
-// are too similar to other canonical views.
-//
-// Thus the canonical views algorithm tries to find a canonical view
-// for each vertex in the graph which best explains it, while trying
-// to minimize the number of canonical views and the overlap between
-// them.
-//
-// We further augment the above objective function by allowing for per
-// vertex weights, higher weights indicating a higher preference for
-// being chosen as a canonical view. Thus if w_i is the vertex weight
-// for vertex i, the objective function is then
-//
-//   E[C] = sum_[i in V] max_[j in C] w_ij
-//          - size_penalty_weight * |C|
-//          - similarity_penalty_weight * sum_[i in C, j in C, j > i] w_ij
-//          + view_score_weight * sum_[i in C] w_i
-//
-// centers will contain the vertices that are the identified
-// as the canonical views/cluster centers, and membership is a map
-// from vertices to cluster_ids. The i^th cluster center corresponds
-// to the i^th cluster.
-//
-// It is possible depending on the configuration of the clustering
-// algorithm that some of the vertices may not be assigned to any
-// cluster. In this case they are assigned to a cluster with id = -1;
-CERES_NO_EXPORT void ComputeCanonicalViewsClustering(
-    const CanonicalViewsClusteringOptions& options,
-    const WeightedGraph<int>& graph,
-    std::vector<int>* centers,
-    std::unordered_map<int, int>* membership);
-
-struct CERES_NO_EXPORT CanonicalViewsClusteringOptions {
-  // The minimum number of canonical views to compute.
-  int min_views = 3;
-
-  // Penalty weight for the number of canonical views.  A higher
-  // number will result in fewer canonical views.
-  double size_penalty_weight = 5.75;
-
-  // Penalty weight for the diversity (orthogonality) of the
-  // canonical views.  A higher number will encourage less similar
-  // canonical views.
-  double similarity_penalty_weight = 100;
-
-  // Weight for per-view scores.  Lower weight places less
-  // confidence in the view scores.
-  double view_score_weight = 0.0;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_CANONICAL_VIEWS_CLUSTERING_H_
diff --git a/third_party/ceres/internal/ceres/canonical_views_clustering_test.cc b/third_party/ceres/internal/ceres/canonical_views_clustering_test.cc
deleted file mode 100644
index fa79582..0000000
--- a/third_party/ceres/internal/ceres/canonical_views_clustering_test.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: Sameer Agarwal (sameeragarwal@google.com)
-//         David Gallup (dgallup@google.com)
-
-#include "ceres/canonical_views_clustering.h"
-
-#include <unordered_map>
-
-#include "ceres/graph.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-const int kVertexIds[] = {0, 1, 2, 3};
-class CanonicalViewsTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    // The graph structure is as follows.
-    //
-    // Vertex weights:   0      2      2      0
-    //                   V0-----V1-----V2-----V3
-    // Edge weights:        0.8    0.9    0.3
-    const double kVertexWeights[] = {0.0, 2.0, 2.0, -1.0};
-    for (int i = 0; i < 4; ++i) {
-      graph_.AddVertex(i, kVertexWeights[i]);
-    }
-    // Create self edges.
-    // CanonicalViews requires that every view "sees" itself.
-    for (int i = 0; i < 4; ++i) {
-      graph_.AddEdge(i, i, 1.0);
-    }
-
-    // Create three edges.
-    const double kEdgeWeights[] = {0.8, 0.9, 0.3};
-    for (int i = 0; i < 3; ++i) {
-      // The graph interface is directed, so remember to create both
-      // edges.
-      graph_.AddEdge(kVertexIds[i], kVertexIds[i + 1], kEdgeWeights[i]);
-    }
-  }
-
-  void ComputeClustering() {
-    ComputeCanonicalViewsClustering(options_, graph_, &centers_, &membership_);
-  }
-
-  WeightedGraph<int> graph_;
-
-  CanonicalViewsClusteringOptions options_;
-  std::vector<int> centers_;
-  std::unordered_map<int, int> membership_;
-};
-
-TEST_F(CanonicalViewsTest, ComputeCanonicalViewsTest) {
-  options_.min_views = 0;
-  options_.size_penalty_weight = 0.5;
-  options_.similarity_penalty_weight = 0.0;
-  options_.view_score_weight = 0.0;
-  ComputeClustering();
-
-  // 2 canonical views.
-  EXPECT_EQ(centers_.size(), 2);
-  EXPECT_EQ(centers_[0], kVertexIds[1]);
-  EXPECT_EQ(centers_[1], kVertexIds[3]);
-
-  // Check cluster membership.
-  EXPECT_EQ(FindOrDie(membership_, kVertexIds[0]), 0);
-  EXPECT_EQ(FindOrDie(membership_, kVertexIds[1]), 0);
-  EXPECT_EQ(FindOrDie(membership_, kVertexIds[2]), 0);
-  EXPECT_EQ(FindOrDie(membership_, kVertexIds[3]), 1);
-}
-
-// Increases size penalty so the second canonical view won't be
-// chosen.
-TEST_F(CanonicalViewsTest, SizePenaltyTest) {
-  options_.min_views = 0;
-  options_.size_penalty_weight = 2.0;
-  options_.similarity_penalty_weight = 0.0;
-  options_.view_score_weight = 0.0;
-  ComputeClustering();
-
-  // 1 canonical view.
-  EXPECT_EQ(centers_.size(), 1);
-  EXPECT_EQ(centers_[0], kVertexIds[1]);
-}
-
-// Increases view score weight so vertex 2 will be chosen.
-TEST_F(CanonicalViewsTest, ViewScoreTest) {
-  options_.min_views = 0;
-  options_.size_penalty_weight = 0.5;
-  options_.similarity_penalty_weight = 0.0;
-  options_.view_score_weight = 1.0;
-  ComputeClustering();
-
-  // 2 canonical views.
-  EXPECT_EQ(centers_.size(), 2);
-  EXPECT_EQ(centers_[0], kVertexIds[1]);
-  EXPECT_EQ(centers_[1], kVertexIds[2]);
-}
-
-// Increases similarity penalty so vertex 2 won't be chosen despite
-// it's view score.
-TEST_F(CanonicalViewsTest, SimilarityPenaltyTest) {
-  options_.min_views = 0;
-  options_.size_penalty_weight = 0.5;
-  options_.similarity_penalty_weight = 3.0;
-  options_.view_score_weight = 1.0;
-  ComputeClustering();
-
-  // 2 canonical views.
-  EXPECT_EQ(centers_.size(), 1);
-  EXPECT_EQ(centers_[0], kVertexIds[1]);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/casts.h b/third_party/ceres/internal/ceres/casts.h
deleted file mode 100644
index af944520..0000000
--- a/third_party/ceres/internal/ceres/casts.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_CASTS_H_
-#define CERES_INTERNAL_CASTS_H_
-
-#include <cassert>
-
-namespace ceres {
-
-// Identity metafunction.
-template <class T>
-struct identity_ {
-  using type = T;
-};
-
-// Use implicit_cast as a safe version of static_cast or const_cast
-// for implicit conversions. For example:
-// - Upcasting in a type hierarchy.
-// - Performing arithmetic conversions (int32 to int64, int to double, etc.).
-// - Adding const or volatile qualifiers.
-//
-// In general, implicit_cast can be used to convert this code
-//   To to = from;
-//   DoSomething(to);
-// to this
-//   DoSomething(implicit_cast<To>(from));
-//
-// base::identity_ is used to make a non-deduced context, which
-// forces all callers to explicitly specify the template argument.
-template <typename To>
-inline To implicit_cast(typename identity_<To>::type to) {
-  return to;
-}
-
-// This version of implicit_cast is used when two template arguments
-// are specified. It's obsolete and should not be used.
-template <typename To, typename From>
-inline To implicit_cast(typename identity_<From>::type const& f) {
-  return f;
-}
-
-// When you upcast (that is, cast a pointer from type Foo to type
-// SuperclassOfFoo), it's fine to use implicit_cast<>, since upcasts
-// always succeed.  When you downcast (that is, cast a pointer from
-// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
-// how do you know the pointer is really of type SubclassOfFoo?  It
-// could be a bare Foo, or of type DifferentSubclassOfFoo.  Thus,
-// when you downcast, you should use this macro.  In debug mode, we
-// use dynamic_cast<> to double-check the downcast is legal (we die
-// if it's not).  In normal mode, we do the efficient static_cast<>
-// instead.  Thus, it's important to test in debug mode to make sure
-// the cast is legal!
-//    This is the only place in the code we should use dynamic_cast<>.
-// In particular, you SHOULDN'T be using dynamic_cast<> in order to
-// do RTTI (eg code like this:
-//    if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
-//    if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
-// You should design the code some other way not to need this.
-
-// TODO(sameeragarwal): Modernize this.
-template <typename To, typename From>  // use like this: down_cast<T*>(foo);
-inline To down_cast(From* f) {         // so we only accept pointers
-  // Ensures that To is a sub-type of From *.  This test is here only
-  // for compile-time type checking, and has no overhead in an
-  // optimized build at run-time, as it will be optimized away
-  // completely.
-
-  // TODO(csilvers): This should use COMPILE_ASSERT.
-  if (false) {
-    implicit_cast<From*, To>(nullptr);
-  }
-
-  // uses RTTI in dbg and fastbuild. asserts are disabled in opt builds.
-  assert(f == nullptr || dynamic_cast<To>(f) != nullptr);  // NOLINT
-  return static_cast<To>(f);
-}
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_CASTS_H_
diff --git a/third_party/ceres/internal/ceres/cgnr_solver.cc b/third_party/ceres/internal/ceres/cgnr_solver.cc
deleted file mode 100644
index da63484..0000000
--- a/third_party/ceres/internal/ceres/cgnr_solver.cc
+++ /dev/null
@@ -1,391 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/cgnr_solver.h"
-
-#include <memory>
-#include <utility>
-
-#include "ceres/block_jacobi_preconditioner.h"
-#include "ceres/conjugate_gradients_solver.h"
-#include "ceres/cuda_sparse_matrix.h"
-#include "ceres/cuda_vector.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/subset_preconditioner.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// A linear operator which takes a matrix A and a diagonal vector D and
-// performs products of the form
-//
-//   (A^T A + D^T D)x
-//
-// This is used to implement iterative general sparse linear solving with
-// conjugate gradients, where A is the Jacobian and D is a regularizing
-// parameter. A brief proof that D^T D is the correct regularizer:
-//
-// Given a regularized least squares problem:
-//
-//   min  ||Ax - b||^2 + ||Dx||^2
-//    x
-//
-// First expand into matrix notation:
-//
-//   (Ax - b)^T (Ax - b) + xD^TDx
-//
-// Then multiply out to get:
-//
-//   = xA^TAx - 2b^T Ax + b^Tb + xD^TDx
-//
-// Take the derivative:
-//
-//   0 = 2A^TAx - 2A^T b + 2 D^TDx
-//   0 = A^TAx - A^T b + D^TDx
-//   0 = (A^TA + D^TD)x - A^T b
-//
-// Thus, the symmetric system we need to solve for CGNR is
-//
-//   Sx = z
-//
-// with S = A^TA + D^TD
-//  and z = A^T b
-//
-// Note: This class is not thread safe, since it uses some temporary storage.
-class CERES_NO_EXPORT CgnrLinearOperator final
-    : public ConjugateGradientsLinearOperator<Vector> {
- public:
-  CgnrLinearOperator(const LinearOperator& A,
-                     const double* D,
-                     ContextImpl* context,
-                     int num_threads)
-      : A_(A),
-        D_(D),
-        z_(Vector::Zero(A.num_rows())),
-        context_(context),
-        num_threads_(num_threads) {}
-
-  void RightMultiplyAndAccumulate(const Vector& x, Vector& y) final {
-    // z = Ax
-    // y = y + Atz
-    z_.setZero();
-    A_.RightMultiplyAndAccumulate(x, z_, context_, num_threads_);
-    A_.LeftMultiplyAndAccumulate(z_, y, context_, num_threads_);
-
-    // y = y + DtDx
-    if (D_ != nullptr) {
-      int n = A_.num_cols();
-      ParallelAssign(
-          context_,
-          num_threads_,
-          y,
-          y.array() + ConstVectorRef(D_, n).array().square() * x.array());
-    }
-  }
-
- private:
-  const LinearOperator& A_;
-  const double* D_;
-  Vector z_;
-
-  ContextImpl* context_;
-  int num_threads_;
-};
-
-CgnrSolver::CgnrSolver(LinearSolver::Options options)
-    : options_(std::move(options)) {
-  if (options_.preconditioner_type != JACOBI &&
-      options_.preconditioner_type != IDENTITY &&
-      options_.preconditioner_type != SUBSET) {
-    LOG(FATAL)
-        << "Preconditioner = "
-        << PreconditionerTypeToString(options_.preconditioner_type) << ". "
-        << "Congratulations, you found a bug in Ceres. Please report it.";
-  }
-}
-
-CgnrSolver::~CgnrSolver() {
-  for (int i = 0; i < 4; ++i) {
-    if (scratch_[i]) {
-      delete scratch_[i];
-      scratch_[i] = nullptr;
-    }
-  }
-}
-
-LinearSolver::Summary CgnrSolver::SolveImpl(
-    BlockSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("CgnrSolver::Solve");
-  if (!preconditioner_) {
-    Preconditioner::Options preconditioner_options;
-    preconditioner_options.type = options_.preconditioner_type;
-    preconditioner_options.subset_preconditioner_start_row_block =
-        options_.subset_preconditioner_start_row_block;
-    preconditioner_options.sparse_linear_algebra_library_type =
-        options_.sparse_linear_algebra_library_type;
-    preconditioner_options.ordering_type = options_.ordering_type;
-    preconditioner_options.num_threads = options_.num_threads;
-    preconditioner_options.context = options_.context;
-
-    if (options_.preconditioner_type == JACOBI) {
-      preconditioner_ = std::make_unique<BlockSparseJacobiPreconditioner>(
-          preconditioner_options, *A);
-    } else if (options_.preconditioner_type == SUBSET) {
-      preconditioner_ =
-          std::make_unique<SubsetPreconditioner>(preconditioner_options, *A);
-    } else {
-      preconditioner_ = std::make_unique<IdentityPreconditioner>(A->num_cols());
-    }
-  }
-  preconditioner_->Update(*A, per_solve_options.D);
-
-  ConjugateGradientsSolverOptions cg_options;
-  cg_options.min_num_iterations = options_.min_num_iterations;
-  cg_options.max_num_iterations = options_.max_num_iterations;
-  cg_options.residual_reset_period = options_.residual_reset_period;
-  cg_options.q_tolerance = per_solve_options.q_tolerance;
-  cg_options.r_tolerance = per_solve_options.r_tolerance;
-  cg_options.context = options_.context;
-  cg_options.num_threads = options_.num_threads;
-
-  // lhs = AtA + DtD
-  CgnrLinearOperator lhs(
-      *A, per_solve_options.D, options_.context, options_.num_threads);
-  // rhs = Atb.
-  Vector rhs(A->num_cols());
-  rhs.setZero();
-  A->LeftMultiplyAndAccumulate(
-      b, rhs.data(), options_.context, options_.num_threads);
-
-  cg_solution_ = Vector::Zero(A->num_cols());
-  for (int i = 0; i < 4; ++i) {
-    if (scratch_[i] == nullptr) {
-      scratch_[i] = new Vector(A->num_cols());
-    }
-  }
-  event_logger.AddEvent("Setup");
-
-  LinearOperatorAdapter preconditioner(*preconditioner_);
-  auto summary = ConjugateGradientsSolver(
-      cg_options, lhs, rhs, preconditioner, scratch_, cg_solution_);
-  VectorRef(x, A->num_cols()) = cg_solution_;
-  event_logger.AddEvent("Solve");
-  return summary;
-}
-
-#ifndef CERES_NO_CUDA
-
-// A linear operator which takes a matrix A and a diagonal vector D and
-// performs products of the form
-//
-//   (A^T A + D^T D)x
-//
-// This is used to implement iterative general sparse linear solving with
-// conjugate gradients, where A is the Jacobian and D is a regularizing
-// parameter. A brief proof is included in cgnr_linear_operator.h.
-class CERES_NO_EXPORT CudaCgnrLinearOperator final
-    : public ConjugateGradientsLinearOperator<CudaVector> {
- public:
-  CudaCgnrLinearOperator(CudaSparseMatrix& A,
-                         const CudaVector& D,
-                         CudaVector* z)
-      : A_(A), D_(D), z_(z) {}
-
-  void RightMultiplyAndAccumulate(const CudaVector& x, CudaVector& y) final {
-    // z = Ax
-    z_->SetZero();
-    A_.RightMultiplyAndAccumulate(x, z_);
-
-    // y = y + Atz
-    //   = y + AtAx
-    A_.LeftMultiplyAndAccumulate(*z_, &y);
-
-    // y = y + DtDx
-    y.DtDxpy(D_, x);
-  }
-
- private:
-  CudaSparseMatrix& A_;
-  const CudaVector& D_;
-  CudaVector* z_ = nullptr;
-};
-
-class CERES_NO_EXPORT CudaIdentityPreconditioner final
-    : public CudaPreconditioner {
- public:
-  void Update(const CompressedRowSparseMatrix& A, const double* D) final {}
-  void RightMultiplyAndAccumulate(const CudaVector& x, CudaVector& y) final {
-    y.Axpby(1.0, x, 1.0);
-  }
-};
-
-// This class wraps the existing CPU Jacobi preconditioner, caches the structure
-// of the block diagonal, and for each CGNR solve updates the values on the CPU
-// and then copies them over to the GPU.
-class CERES_NO_EXPORT CudaJacobiPreconditioner final
-    : public CudaPreconditioner {
- public:
-  explicit CudaJacobiPreconditioner(Preconditioner::Options options,
-                                    const CompressedRowSparseMatrix& A)
-      : options_(std::move(options)),
-        cpu_preconditioner_(options_, A),
-        m_(options_.context, cpu_preconditioner_.matrix()) {}
-  ~CudaJacobiPreconditioner() = default;
-
-  void Update(const CompressedRowSparseMatrix& A, const double* D) final {
-    cpu_preconditioner_.Update(A, D);
-    m_.CopyValuesFromCpu(cpu_preconditioner_.matrix());
-  }
-
-  void RightMultiplyAndAccumulate(const CudaVector& x, CudaVector& y) final {
-    m_.RightMultiplyAndAccumulate(x, &y);
-  }
-
- private:
-  Preconditioner::Options options_;
-  BlockCRSJacobiPreconditioner cpu_preconditioner_;
-  CudaSparseMatrix m_;
-};
-
-CudaCgnrSolver::CudaCgnrSolver(LinearSolver::Options options)
-    : options_(std::move(options)) {}
-
-CudaCgnrSolver::~CudaCgnrSolver() {
-  for (int i = 0; i < 4; ++i) {
-    if (scratch_[i]) {
-      delete scratch_[i];
-      scratch_[i] = nullptr;
-    }
-  }
-}
-
-std::unique_ptr<CudaCgnrSolver> CudaCgnrSolver::Create(
-    LinearSolver::Options options, std::string* error) {
-  CHECK(error != nullptr);
-  if (options.preconditioner_type != IDENTITY &&
-      options.preconditioner_type != JACOBI) {
-    *error =
-        "CudaCgnrSolver does not support preconditioner type " +
-        std::string(PreconditionerTypeToString(options.preconditioner_type)) +
-        ". ";
-    return nullptr;
-  }
-  CHECK(options.context->IsCudaInitialized())
-      << "CudaCgnrSolver requires CUDA initialization.";
-  auto solver = std::make_unique<CudaCgnrSolver>(options);
-  return solver;
-}
-
-void CudaCgnrSolver::CpuToGpuTransfer(const CompressedRowSparseMatrix& A,
-                                      const double* b,
-                                      const double* D) {
-  if (A_ == nullptr) {
-    // Assume structure is not cached, do an initialization and structural copy.
-    A_ = std::make_unique<CudaSparseMatrix>(options_.context, A);
-    b_ = std::make_unique<CudaVector>(options_.context, A.num_rows());
-    x_ = std::make_unique<CudaVector>(options_.context, A.num_cols());
-    Atb_ = std::make_unique<CudaVector>(options_.context, A.num_cols());
-    Ax_ = std::make_unique<CudaVector>(options_.context, A.num_rows());
-    D_ = std::make_unique<CudaVector>(options_.context, A.num_cols());
-
-    Preconditioner::Options preconditioner_options;
-    preconditioner_options.type = options_.preconditioner_type;
-    preconditioner_options.subset_preconditioner_start_row_block =
-        options_.subset_preconditioner_start_row_block;
-    preconditioner_options.sparse_linear_algebra_library_type =
-        options_.sparse_linear_algebra_library_type;
-    preconditioner_options.ordering_type = options_.ordering_type;
-    preconditioner_options.num_threads = options_.num_threads;
-    preconditioner_options.context = options_.context;
-
-    if (options_.preconditioner_type == JACOBI) {
-      preconditioner_ =
-          std::make_unique<CudaJacobiPreconditioner>(preconditioner_options, A);
-    } else {
-      preconditioner_ = std::make_unique<CudaIdentityPreconditioner>();
-    }
-    for (int i = 0; i < 4; ++i) {
-      scratch_[i] = new CudaVector(options_.context, A.num_cols());
-    }
-  } else {
-    // Assume structure is cached, do a value copy.
-    A_->CopyValuesFromCpu(A);
-  }
-  b_->CopyFromCpu(ConstVectorRef(b, A.num_rows()));
-  D_->CopyFromCpu(ConstVectorRef(D, A.num_cols()));
-}
-
-LinearSolver::Summary CudaCgnrSolver::SolveImpl(
-    CompressedRowSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("CudaCgnrSolver::Solve");
-  LinearSolver::Summary summary;
-  summary.num_iterations = 0;
-  summary.termination_type = LinearSolverTerminationType::FATAL_ERROR;
-
-  CpuToGpuTransfer(*A, b, per_solve_options.D);
-  event_logger.AddEvent("CPU to GPU Transfer");
-  preconditioner_->Update(*A, per_solve_options.D);
-  event_logger.AddEvent("Preconditioner Update");
-
-  // Form z = Atb.
-  Atb_->SetZero();
-  A_->LeftMultiplyAndAccumulate(*b_, Atb_.get());
-
-  // Solve (AtA + DtD)x = z (= Atb).
-  x_->SetZero();
-  CudaCgnrLinearOperator lhs(*A_, *D_, Ax_.get());
-
-  event_logger.AddEvent("Setup");
-
-  ConjugateGradientsSolverOptions cg_options;
-  cg_options.min_num_iterations = options_.min_num_iterations;
-  cg_options.max_num_iterations = options_.max_num_iterations;
-  cg_options.residual_reset_period = options_.residual_reset_period;
-  cg_options.q_tolerance = per_solve_options.q_tolerance;
-  cg_options.r_tolerance = per_solve_options.r_tolerance;
-
-  summary = ConjugateGradientsSolver(
-      cg_options, lhs, *Atb_, *preconditioner_, scratch_, *x_);
-  x_->CopyTo(x);
-  event_logger.AddEvent("Solve");
-  return summary;
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/cgnr_solver.h b/third_party/ceres/internal/ceres/cgnr_solver.h
deleted file mode 100644
index c634538..0000000
--- a/third_party/ceres/internal/ceres/cgnr_solver.h
+++ /dev/null
@@ -1,116 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_CGNR_SOLVER_H_
-#define CERES_INTERNAL_CGNR_SOLVER_H_
-
-#include <memory>
-
-#include "ceres/conjugate_gradients_solver.h"
-#include "ceres/cuda_sparse_matrix.h"
-#include "ceres/cuda_vector.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-class Preconditioner;
-
-class BlockJacobiPreconditioner;
-
-// A conjugate gradients on the normal equations solver. This directly solves
-// for the solution to
-//
-//   (A^T A + D^T D)x = A^T b
-//
-// as required for solving for x in the least squares sense. Currently only
-// block diagonal preconditioning is supported.
-class CERES_NO_EXPORT CgnrSolver final : public BlockSparseMatrixSolver {
- public:
-  explicit CgnrSolver(LinearSolver::Options options);
-  CgnrSolver(const CgnrSolver&) = delete;
-  void operator=(const CgnrSolver&) = delete;
-  ~CgnrSolver() override;
-
-  Summary SolveImpl(BlockSparseMatrix* A,
-                    const double* b,
-                    const LinearSolver::PerSolveOptions& per_solve_options,
-                    double* x) final;
-
- private:
-  const LinearSolver::Options options_;
-  std::unique_ptr<Preconditioner> preconditioner_;
-  Vector cg_solution_;
-  Vector* scratch_[4] = {nullptr, nullptr, nullptr, nullptr};
-};
-
-#ifndef CERES_NO_CUDA
-class CudaPreconditioner : public ConjugateGradientsLinearOperator<CudaVector> {
- public:
-  virtual void Update(const CompressedRowSparseMatrix& A, const double* D) = 0;
-  virtual ~CudaPreconditioner() = default;
-};
-
-// A Cuda-accelerated version of CgnrSolver.
-// This solver assumes that the sparsity structure of A remains constant for its
-// lifetime.
-class CERES_NO_EXPORT CudaCgnrSolver final
-    : public CompressedRowSparseMatrixSolver {
- public:
-  explicit CudaCgnrSolver(LinearSolver::Options options);
-  static std::unique_ptr<CudaCgnrSolver> Create(LinearSolver::Options options,
-                                                std::string* error);
-  ~CudaCgnrSolver() override;
-
-  Summary SolveImpl(CompressedRowSparseMatrix* A,
-                    const double* b,
-                    const LinearSolver::PerSolveOptions& per_solve_options,
-                    double* x) final;
-
- private:
-  void CpuToGpuTransfer(const CompressedRowSparseMatrix& A,
-                        const double* b,
-                        const double* D);
-
-  LinearSolver::Options options_;
-  std::unique_ptr<CudaSparseMatrix> A_;
-  std::unique_ptr<CudaVector> b_;
-  std::unique_ptr<CudaVector> x_;
-  std::unique_ptr<CudaVector> Atb_;
-  std::unique_ptr<CudaVector> Ax_;
-  std::unique_ptr<CudaVector> D_;
-  std::unique_ptr<CudaPreconditioner> preconditioner_;
-  CudaVector* scratch_[4] = {nullptr, nullptr, nullptr, nullptr};
-};
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_CGNR_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.cc b/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.cc
deleted file mode 100644
index 5a25e31..0000000
--- a/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/compressed_col_sparse_matrix_utils.h"
-
-#include <algorithm>
-#include <vector>
-
-#include "ceres/internal/export.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-void CompressedColumnScalarMatrixToBlockMatrix(
-    const int* scalar_rows,
-    const int* scalar_cols,
-    const std::vector<Block>& row_blocks,
-    const std::vector<Block>& col_blocks,
-    std::vector<int>* block_rows,
-    std::vector<int>* block_cols) {
-  CHECK(block_rows != nullptr);
-  CHECK(block_cols != nullptr);
-  block_rows->clear();
-  block_cols->clear();
-  const int num_col_blocks = col_blocks.size();
-
-  // This loop extracts the block sparsity of the scalar sparse matrix
-  // It does so by iterating over the columns, but only considering
-  // the columns corresponding to the first element of each column
-  // block. Within each column, the inner loop iterates over the rows,
-  // and detects the presence of a row block by checking for the
-  // presence of a non-zero entry corresponding to its first element.
-  block_cols->push_back(0);
-  int c = 0;
-  for (int col_block = 0; col_block < num_col_blocks; ++col_block) {
-    int column_size = 0;
-    for (int idx = scalar_cols[c]; idx < scalar_cols[c + 1]; ++idx) {
-      auto it = std::lower_bound(row_blocks.begin(),
-                                 row_blocks.end(),
-                                 scalar_rows[idx],
-                                 [](const Block& block, double value) {
-                                   return block.position < value;
-                                 });
-      // Since we are using lower_bound, it will return the row id where the row
-      // block starts. For everything but the first row of the block, where
-      // these values will be the same, we can skip, as we only need the first
-      // row to detect the presence of the block.
-      //
-      // For rows all but the first row in the last row block, lower_bound will
-      // return row_blocks_.end(), but those can be skipped like the rows in
-      // other row blocks too.
-      if (it == row_blocks.end() || it->position != scalar_rows[idx]) {
-        continue;
-      }
-
-      block_rows->push_back(it - row_blocks.begin());
-      ++column_size;
-    }
-    block_cols->push_back(block_cols->back() + column_size);
-    c += col_blocks[col_block].size;
-  }
-}
-
-void BlockOrderingToScalarOrdering(const std::vector<Block>& blocks,
-                                   const std::vector<int>& block_ordering,
-                                   std::vector<int>* scalar_ordering) {
-  CHECK_EQ(blocks.size(), block_ordering.size());
-  const int num_blocks = blocks.size();
-  scalar_ordering->resize(NumScalarEntries(blocks));
-  int cursor = 0;
-  for (int i = 0; i < num_blocks; ++i) {
-    const int block_id = block_ordering[i];
-    const int block_size = blocks[block_id].size;
-    int block_position = blocks[block_id].position;
-    for (int j = 0; j < block_size; ++j) {
-      (*scalar_ordering)[cursor++] = block_position++;
-    }
-  }
-}
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.h b/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.h
deleted file mode 100644
index e9e067f..0000000
--- a/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.h
+++ /dev/null
@@ -1,148 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_COMPRESSED_COL_SPARSE_MATRIX_UTILS_H_
-#define CERES_INTERNAL_COMPRESSED_COL_SPARSE_MATRIX_UTILS_H_
-
-#include <algorithm>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Extract the block sparsity pattern of the scalar compressed columns
-// matrix and return it in compressed column form. The compressed
-// column form is stored in two vectors block_rows, and block_cols,
-// which correspond to the row and column arrays in a compressed
-// column sparse matrix.
-//
-// If c_ij is the block in the matrix A corresponding to row block i
-// and column block j, then it is expected that A contains at least
-// one non-zero entry corresponding to the top left entry of c_ij,
-// as that entry is used to detect the presence of a non-zero c_ij.
-CERES_NO_EXPORT void CompressedColumnScalarMatrixToBlockMatrix(
-    const int* scalar_rows,
-    const int* scalar_cols,
-    const std::vector<Block>& row_blocks,
-    const std::vector<Block>& col_blocks,
-    std::vector<int>* block_rows,
-    std::vector<int>* block_cols);
-
-// Given a set of blocks and a permutation of these blocks, compute
-// the corresponding "scalar" ordering, where the scalar ordering of
-// size sum(blocks).
-CERES_NO_EXPORT void BlockOrderingToScalarOrdering(
-    const std::vector<Block>& blocks,
-    const std::vector<int>& block_ordering,
-    std::vector<int>* scalar_ordering);
-
-// Solve the linear system
-//
-//   R * solution = rhs
-//
-// Where R is an upper triangular compressed column sparse matrix.
-template <typename IntegerType>
-void SolveUpperTriangularInPlace(IntegerType num_cols,
-                                 const IntegerType* rows,
-                                 const IntegerType* cols,
-                                 const double* values,
-                                 double* rhs_and_solution) {
-  for (IntegerType c = num_cols - 1; c >= 0; --c) {
-    rhs_and_solution[c] /= values[cols[c + 1] - 1];
-    for (IntegerType idx = cols[c]; idx < cols[c + 1] - 1; ++idx) {
-      const IntegerType r = rows[idx];
-      const double v = values[idx];
-      rhs_and_solution[r] -= v * rhs_and_solution[c];
-    }
-  }
-}
-
-// Solve the linear system
-//
-//   R' * solution = rhs
-//
-// Where R is an upper triangular compressed column sparse matrix.
-template <typename IntegerType>
-void SolveUpperTriangularTransposeInPlace(IntegerType num_cols,
-                                          const IntegerType* rows,
-                                          const IntegerType* cols,
-                                          const double* values,
-                                          double* rhs_and_solution) {
-  for (IntegerType c = 0; c < num_cols; ++c) {
-    for (IntegerType idx = cols[c]; idx < cols[c + 1] - 1; ++idx) {
-      const IntegerType r = rows[idx];
-      const double v = values[idx];
-      rhs_and_solution[c] -= v * rhs_and_solution[r];
-    }
-    rhs_and_solution[c] = rhs_and_solution[c] / values[cols[c + 1] - 1];
-  }
-}
-
-// Given a upper triangular matrix R in compressed column form, solve
-// the linear system,
-//
-//  R'R x = b
-//
-// Where b is all zeros except for rhs_nonzero_index, where it is
-// equal to one.
-//
-// The function exploits this knowledge to reduce the number of
-// floating point operations.
-template <typename IntegerType>
-void SolveRTRWithSparseRHS(IntegerType num_cols,
-                           const IntegerType* rows,
-                           const IntegerType* cols,
-                           const double* values,
-                           const int rhs_nonzero_index,
-                           double* solution) {
-  std::fill(solution, solution + num_cols, 0.0);
-  solution[rhs_nonzero_index] = 1.0 / values[cols[rhs_nonzero_index + 1] - 1];
-
-  for (IntegerType c = rhs_nonzero_index + 1; c < num_cols; ++c) {
-    for (IntegerType idx = cols[c]; idx < cols[c + 1] - 1; ++idx) {
-      const IntegerType r = rows[idx];
-      if (r < rhs_nonzero_index) continue;
-      const double v = values[idx];
-      solution[c] -= v * solution[r];
-    }
-    solution[c] = solution[c] / values[cols[c + 1] - 1];
-  }
-
-  SolveUpperTriangularInPlace(num_cols, rows, cols, values, solution);
-}
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_COMPRESSED_COL_SPARSE_MATRIX_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils_test.cc b/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils_test.cc
deleted file mode 100644
index b1c8219..0000000
--- a/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils_test.cc
+++ /dev/null
@@ -1,187 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/compressed_col_sparse_matrix_utils.h"
-
-#include <algorithm>
-#include <numeric>
-#include <vector>
-
-#include "Eigen/SparseCore"
-#include "ceres/internal/export.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(_, BlockPermutationToScalarPermutation) {
-  //  Block structure
-  //  0  --1-  ---2---  ---3---  4
-  // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-  std::vector<Block> blocks{{1, 0}, {2, 1}, {3, 3}, {3, 6}, {1, 9}};
-  // Block ordering
-  // [1, 0, 2, 4, 5]
-  std::vector<int> block_ordering{{1, 0, 2, 4, 3}};
-
-  // Expected ordering
-  // [1, 2, 0, 3, 4, 5, 9, 6, 7, 8]
-  std::vector<int> expected_scalar_ordering{{1, 2, 0, 3, 4, 5, 9, 6, 7, 8}};
-
-  std::vector<int> scalar_ordering;
-  BlockOrderingToScalarOrdering(blocks, block_ordering, &scalar_ordering);
-  EXPECT_EQ(scalar_ordering.size(), expected_scalar_ordering.size());
-  for (int i = 0; i < expected_scalar_ordering.size(); ++i) {
-    EXPECT_EQ(scalar_ordering[i], expected_scalar_ordering[i]);
-  }
-}
-
-static void FillBlock(const std::vector<Block>& row_blocks,
-                      const std::vector<Block>& col_blocks,
-                      const int row_block_id,
-                      const int col_block_id,
-                      std::vector<Eigen::Triplet<double>>* triplets) {
-  for (int r = 0; r < row_blocks[row_block_id].size; ++r) {
-    for (int c = 0; c < col_blocks[col_block_id].size; ++c) {
-      triplets->push_back(
-          Eigen::Triplet<double>(row_blocks[row_block_id].position + r,
-                                 col_blocks[col_block_id].position + c,
-                                 1.0));
-    }
-  }
-}
-
-TEST(_, ScalarMatrixToBlockMatrix) {
-  // Block sparsity.
-  //
-  //     [1 2 3 2]
-  // [1]  x   x
-  // [2]    x   x
-  // [2]  x x
-  // num_nonzeros = 1 + 3 + 4 + 4 + 1 + 2 = 15
-
-  std::vector<Block> col_blocks{{1, 0}, {2, 1}, {3, 3}, {2, 5}};
-  const int num_cols = NumScalarEntries(col_blocks);
-
-  std::vector<Block> row_blocks{{1, 0}, {2, 1}, {2, 3}};
-  const int num_rows = NumScalarEntries(row_blocks);
-
-  std::vector<Eigen::Triplet<double>> triplets;
-  FillBlock(row_blocks, col_blocks, 0, 0, &triplets);
-  FillBlock(row_blocks, col_blocks, 2, 0, &triplets);
-  FillBlock(row_blocks, col_blocks, 1, 1, &triplets);
-  FillBlock(row_blocks, col_blocks, 2, 1, &triplets);
-  FillBlock(row_blocks, col_blocks, 0, 2, &triplets);
-  FillBlock(row_blocks, col_blocks, 1, 3, &triplets);
-  Eigen::SparseMatrix<double> sparse_matrix(num_rows, num_cols);
-  sparse_matrix.setFromTriplets(triplets.begin(), triplets.end());
-
-  const std::vector<int> expected_compressed_block_rows{{0, 2, 1, 2, 0, 1}};
-  const std::vector<int> expected_compressed_block_cols{{0, 2, 4, 5, 6}};
-
-  std::vector<int> compressed_block_rows;
-  std::vector<int> compressed_block_cols;
-  CompressedColumnScalarMatrixToBlockMatrix(sparse_matrix.innerIndexPtr(),
-                                            sparse_matrix.outerIndexPtr(),
-                                            row_blocks,
-                                            col_blocks,
-                                            &compressed_block_rows,
-                                            &compressed_block_cols);
-
-  EXPECT_EQ(compressed_block_rows, expected_compressed_block_rows);
-  EXPECT_EQ(compressed_block_cols, expected_compressed_block_cols);
-}
-
-class SolveUpperTriangularTest : public ::testing::Test {
- protected:
-  const std::vector<int>& cols() const { return cols_; }
-  const std::vector<int>& rows() const { return rows_; }
-  const std::vector<double>& values() const { return values_; }
-
- private:
-  const std::vector<int> cols_ = {0, 1, 2, 4, 7};
-  const std::vector<int> rows_ = {0, 1, 1, 2, 0, 1, 3};
-  const std::vector<double> values_ = {
-      0.50754, 0.80483, 0.14120, 0.3, 0.77696, 0.41860, 0.88979};
-};
-
-TEST_F(SolveUpperTriangularTest, SolveInPlace) {
-  double rhs_and_solution[] = {1.0, 1.0, 2.0, 2.0};
-  const double expected[] = {-1.4706, -1.0962, 6.6667, 2.2477};
-
-  SolveUpperTriangularInPlace<int>(cols().size() - 1,
-                                   rows().data(),
-                                   cols().data(),
-                                   values().data(),
-                                   rhs_and_solution);
-
-  for (int i = 0; i < 4; ++i) {
-    EXPECT_NEAR(rhs_and_solution[i], expected[i], 1e-4) << i;
-  }
-}
-
-TEST_F(SolveUpperTriangularTest, TransposeSolveInPlace) {
-  double rhs_and_solution[] = {1.0, 1.0, 2.0, 2.0};
-  double expected[] = {1.970288, 1.242498, 6.081864, -0.057255};
-
-  SolveUpperTriangularTransposeInPlace<int>(cols().size() - 1,
-                                            rows().data(),
-                                            cols().data(),
-                                            values().data(),
-                                            rhs_and_solution);
-
-  for (int i = 0; i < 4; ++i) {
-    EXPECT_NEAR(rhs_and_solution[i], expected[i], 1e-4) << i;
-  }
-}
-
-TEST_F(SolveUpperTriangularTest, RTRSolveWithSparseRHS) {
-  double solution[4];
-  // clang-format off
-  double expected[] = { 6.8420e+00,   1.0057e+00,  -1.4907e-16,  -1.9335e+00,
-                        1.0057e+00,   2.2275e+00,  -1.9493e+00,  -6.5693e-01,
-                        -1.4907e-16,  -1.9493e+00,   1.1111e+01,   9.7381e-17,
-                        -1.9335e+00,  -6.5693e-01,   9.7381e-17,   1.2631e+00 };
-  // clang-format on
-
-  for (int i = 0; i < 4; ++i) {
-    SolveRTRWithSparseRHS<int>(cols().size() - 1,
-                               rows().data(),
-                               cols().data(),
-                               values().data(),
-                               i,
-                               solution);
-    for (int j = 0; j < 4; ++j) {
-      EXPECT_NEAR(solution[j], expected[4 * i + j], 1e-3) << i;
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.cc b/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.cc
deleted file mode 100644
index 007346d..0000000
--- a/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.cc
+++ /dev/null
@@ -1,246 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/compressed_row_jacobian_writer.h"
-
-#include <algorithm>
-#include <iterator>
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/scratch_evaluate_preparer.h"
-
-namespace ceres::internal {
-void CompressedRowJacobianWriter::PopulateJacobianRowAndColumnBlockVectors(
-    const Program* program, CompressedRowSparseMatrix* jacobian) {
-  const auto& parameter_blocks = program->parameter_blocks();
-  auto& col_blocks = *(jacobian->mutable_col_blocks());
-  col_blocks.resize(parameter_blocks.size());
-  int col_pos = 0;
-  for (int i = 0; i < parameter_blocks.size(); ++i) {
-    col_blocks[i].size = parameter_blocks[i]->TangentSize();
-    col_blocks[i].position = col_pos;
-    col_pos += col_blocks[i].size;
-  }
-
-  const auto& residual_blocks = program->residual_blocks();
-  auto& row_blocks = *(jacobian->mutable_row_blocks());
-  row_blocks.resize(residual_blocks.size());
-  int row_pos = 0;
-  for (int i = 0; i < residual_blocks.size(); ++i) {
-    row_blocks[i].size = residual_blocks[i]->NumResiduals();
-    row_blocks[i].position = row_pos;
-    row_pos += row_blocks[i].size;
-  }
-}
-
-void CompressedRowJacobianWriter::GetOrderedParameterBlocks(
-    const Program* program,
-    int residual_id,
-    std::vector<std::pair<int, int>>* evaluated_jacobian_blocks) {
-  auto residual_block = program->residual_blocks()[residual_id];
-  const int num_parameter_blocks = residual_block->NumParameterBlocks();
-
-  for (int j = 0; j < num_parameter_blocks; ++j) {
-    auto parameter_block = residual_block->parameter_blocks()[j];
-    if (!parameter_block->IsConstant()) {
-      evaluated_jacobian_blocks->push_back(
-          std::make_pair(parameter_block->index(), j));
-    }
-  }
-  std::sort(evaluated_jacobian_blocks->begin(),
-            evaluated_jacobian_blocks->end());
-}
-
-std::unique_ptr<SparseMatrix> CompressedRowJacobianWriter::CreateJacobian()
-    const {
-  const auto& residual_blocks = program_->residual_blocks();
-
-  const int total_num_residuals = program_->NumResiduals();
-  const int total_num_effective_parameters = program_->NumEffectiveParameters();
-
-  // Count the number of jacobian nonzeros.
-  //
-  // We used an unsigned int here, so that we can compare it INT_MAX without
-  // triggering overflow behaviour.
-  unsigned int num_jacobian_nonzeros = total_num_effective_parameters;
-  for (auto* residual_block : residual_blocks) {
-    const int num_residuals = residual_block->NumResiduals();
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      auto parameter_block = residual_block->parameter_blocks()[j];
-      if (!parameter_block->IsConstant()) {
-        num_jacobian_nonzeros += num_residuals * parameter_block->TangentSize();
-        if (num_jacobian_nonzeros > std::numeric_limits<int>::max()) {
-          LOG(ERROR) << "Unable to create Jacobian matrix: Too many entries in "
-                        "the Jacobian matrix. num_jacobian_nonzeros = "
-                     << num_jacobian_nonzeros;
-          return nullptr;
-        }
-      }
-    }
-  }
-
-  // Allocate storage for the jacobian with some extra space at the end.
-  // Allocate more space than needed to store the jacobian so that when the LM
-  // algorithm adds the diagonal, no reallocation is necessary. This reduces
-  // peak memory usage significantly.
-  auto jacobian = std::make_unique<CompressedRowSparseMatrix>(
-      total_num_residuals,
-      total_num_effective_parameters,
-      static_cast<int>(num_jacobian_nonzeros));
-
-  // At this stage, the CompressedRowSparseMatrix is an invalid state. But
-  // this seems to be the only way to construct it without doing a memory
-  // copy.
-  int* rows = jacobian->mutable_rows();
-  int* cols = jacobian->mutable_cols();
-
-  int row_pos = 0;
-  rows[0] = 0;
-  for (auto* residual_block : residual_blocks) {
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-
-    // Count the number of derivatives for a row of this residual block and
-    // build a list of active parameter block indices.
-    int num_derivatives = 0;
-    std::vector<int> parameter_indices;
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      auto parameter_block = residual_block->parameter_blocks()[j];
-      if (!parameter_block->IsConstant()) {
-        parameter_indices.push_back(parameter_block->index());
-        num_derivatives += parameter_block->TangentSize();
-      }
-    }
-
-    // Sort the parameters by their position in the state vector.
-    std::sort(parameter_indices.begin(), parameter_indices.end());
-    if (adjacent_find(parameter_indices.begin(), parameter_indices.end()) !=
-        parameter_indices.end()) {
-      std::string parameter_block_description;
-      for (int j = 0; j < num_parameter_blocks; ++j) {
-        auto parameter_block = residual_block->parameter_blocks()[j];
-        parameter_block_description += parameter_block->ToString() + "\n";
-      }
-      LOG(FATAL) << "Ceres internal error: "
-                 << "Duplicate parameter blocks detected in a cost function. "
-                 << "This should never happen. Please report this to "
-                 << "the Ceres developers.\n"
-                 << "Residual Block: " << residual_block->ToString() << "\n"
-                 << "Parameter Blocks: " << parameter_block_description;
-    }
-
-    // Update the row indices.
-    const int num_residuals = residual_block->NumResiduals();
-    for (int j = 0; j < num_residuals; ++j) {
-      rows[row_pos + j + 1] = rows[row_pos + j] + num_derivatives;
-    }
-
-    // Iterate over parameter blocks in the order which they occur in the
-    // parameter vector. This code mirrors that in Write(), where jacobian
-    // values are updated.
-    int col_pos = 0;
-    for (int parameter_index : parameter_indices) {
-      auto parameter_block = program_->parameter_blocks()[parameter_index];
-      const int parameter_block_size = parameter_block->TangentSize();
-
-      for (int r = 0; r < num_residuals; ++r) {
-        // This is the position in the values array of the jacobian where this
-        // row of the jacobian block should go.
-        const int column_block_begin = rows[row_pos + r] + col_pos;
-        for (int c = 0; c < parameter_block_size; ++c) {
-          cols[column_block_begin + c] = parameter_block->delta_offset() + c;
-        }
-      }
-      col_pos += parameter_block_size;
-    }
-    row_pos += num_residuals;
-  }
-  CHECK_EQ(num_jacobian_nonzeros - total_num_effective_parameters,
-           rows[total_num_residuals]);
-
-  PopulateJacobianRowAndColumnBlockVectors(program_, jacobian.get());
-
-  return jacobian;
-}
-
-void CompressedRowJacobianWriter::Write(int residual_id,
-                                        int residual_offset,
-                                        double** jacobians,
-                                        SparseMatrix* base_jacobian) {
-  auto* jacobian = down_cast<CompressedRowSparseMatrix*>(base_jacobian);
-
-  double* jacobian_values = jacobian->mutable_values();
-  const int* jacobian_rows = jacobian->rows();
-
-  auto residual_block = program_->residual_blocks()[residual_id];
-  const int num_residuals = residual_block->NumResiduals();
-
-  std::vector<std::pair<int, int>> evaluated_jacobian_blocks;
-  GetOrderedParameterBlocks(program_, residual_id, &evaluated_jacobian_blocks);
-
-  // Where in the current row does the jacobian for a parameter block begin.
-  int col_pos = 0;
-
-  // Iterate over the jacobian blocks in increasing order of their
-  // positions in the reduced parameter vector.
-  for (auto& evaluated_jacobian_block : evaluated_jacobian_blocks) {
-    auto parameter_block =
-        program_->parameter_blocks()[evaluated_jacobian_block.first];
-    const int argument = evaluated_jacobian_block.second;
-    const int parameter_block_size = parameter_block->TangentSize();
-
-    // Copy one row of the jacobian block at a time.
-    for (int r = 0; r < num_residuals; ++r) {
-      // Position of the r^th row of the current jacobian block.
-      const double* block_row_begin =
-          jacobians[argument] + r * parameter_block_size;
-
-      // Position in the values array of the jacobian where this
-      // row of the jacobian block should go.
-      double* column_block_begin =
-          jacobian_values + jacobian_rows[residual_offset + r] + col_pos;
-
-      std::copy(block_row_begin,
-                block_row_begin + parameter_block_size,
-                column_block_begin);
-    }
-    col_pos += parameter_block_size;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.h b/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.h
deleted file mode 100644
index 6fc40e9..0000000
--- a/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A jacobian writer that directly writes to compressed row sparse matrices.
-
-#ifndef CERES_INTERNAL_COMPRESSED_ROW_JACOBIAN_WRITER_H_
-#define CERES_INTERNAL_COMPRESSED_ROW_JACOBIAN_WRITER_H_
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/evaluator.h"
-#include "ceres/internal/export.h"
-#include "ceres/scratch_evaluate_preparer.h"
-
-namespace ceres::internal {
-
-class CompressedRowSparseMatrix;
-class Program;
-class SparseMatrix;
-
-class CERES_NO_EXPORT CompressedRowJacobianWriter {
- public:
-  CompressedRowJacobianWriter(Evaluator::Options /* ignored */,
-                              Program* program)
-      : program_(program) {}
-
-  // PopulateJacobianRowAndColumnBlockVectors sets col_blocks and
-  // row_blocks for a CompressedRowSparseMatrix, based on the
-  // parameter block sizes and residual sizes respectively from the
-  // program. This is useful when Solver::Options::use_block_amd =
-  // true;
-  //
-  // This function is static so that it is available to other jacobian
-  // writers which use CompressedRowSparseMatrix (or derived types).
-  // (Jacobian writers do not fall under any type hierarchy; they only
-  // have to provide an interface as specified in program_evaluator.h).
-  static void PopulateJacobianRowAndColumnBlockVectors(
-      const Program* program, CompressedRowSparseMatrix* jacobian);
-
-  // It is necessary to determine the order of the jacobian blocks
-  // before copying them into a CompressedRowSparseMatrix (or derived
-  // type).  Just because a cost function uses parameter blocks 1
-  // after 2 in its arguments does not mean that the block 1 occurs
-  // before block 2 in the column layout of the jacobian. Thus,
-  // GetOrderedParameterBlocks determines the order by sorting the
-  // jacobian blocks by their position in the state vector.
-  //
-  // This function is static so that it is available to other jacobian
-  // writers which use CompressedRowSparseMatrix (or derived types).
-  // (Jacobian writers do not fall under any type hierarchy; they only
-  // have to provide an interface as specified in
-  // program_evaluator.h).
-  static void GetOrderedParameterBlocks(
-      const Program* program,
-      int residual_id,
-      std::vector<std::pair<int, int>>* evaluated_jacobian_blocks);
-
-  // JacobianWriter interface.
-
-  // Since the compressed row matrix has different layout than that
-  // assumed by the cost functions, use scratch space to store the
-  // jacobians temporarily then copy them over to the larger jacobian
-  // in the Write() function.
-  std::unique_ptr<ScratchEvaluatePreparer[]> CreateEvaluatePreparers(
-      int num_threads) {
-    return ScratchEvaluatePreparer::Create(*program_, num_threads);
-  }
-
-  std::unique_ptr<SparseMatrix> CreateJacobian() const;
-
-  void Write(int residual_id,
-             int residual_offset,
-             double** jacobians,
-             SparseMatrix* base_jacobian);
-
- private:
-  Program* program_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_COMPRESSED_ROW_JACOBIAN_WRITER_H_
diff --git a/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.cc b/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.cc
deleted file mode 100644
index 21697f8..0000000
--- a/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.cc
+++ /dev/null
@@ -1,769 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/compressed_row_sparse_matrix.h"
-
-#include <algorithm>
-#include <functional>
-#include <memory>
-#include <numeric>
-#include <random>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/export.h"
-#include "ceres/parallel_for.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-namespace {
-
-// Helper functor used by the constructor for reordering the contents
-// of a TripletSparseMatrix. This comparator assumes that there are no
-// duplicates in the pair of arrays rows and cols, i.e., there is no
-// indices i and j (not equal to each other) s.t.
-//
-//  rows[i] == rows[j] && cols[i] == cols[j]
-//
-// If this is the case, this functor will not be a StrictWeakOrdering.
-struct RowColLessThan {
-  RowColLessThan(const int* rows, const int* cols) : rows(rows), cols(cols) {}
-
-  bool operator()(const int x, const int y) const {
-    if (rows[x] == rows[y]) {
-      return (cols[x] < cols[y]);
-    }
-    return (rows[x] < rows[y]);
-  }
-
-  const int* rows;
-  const int* cols;
-};
-
-void TransposeForCompressedRowSparseStructure(const int num_rows,
-                                              const int num_cols,
-                                              const int num_nonzeros,
-                                              const int* rows,
-                                              const int* cols,
-                                              const double* values,
-                                              int* transpose_rows,
-                                              int* transpose_cols,
-                                              double* transpose_values) {
-  // Explicitly zero out transpose_rows.
-  std::fill(transpose_rows, transpose_rows + num_cols + 1, 0);
-
-  // Count the number of entries in each column of the original matrix
-  // and assign to transpose_rows[col + 1].
-  for (int idx = 0; idx < num_nonzeros; ++idx) {
-    ++transpose_rows[cols[idx] + 1];
-  }
-
-  // Compute the starting position for each row in the transpose by
-  // computing the cumulative sum of the entries of transpose_rows.
-  for (int i = 1; i < num_cols + 1; ++i) {
-    transpose_rows[i] += transpose_rows[i - 1];
-  }
-
-  // Populate transpose_cols and (optionally) transpose_values by
-  // walking the entries of the source matrices. For each entry that
-  // is added, the value of transpose_row is incremented allowing us
-  // to keep track of where the next entry for that row should go.
-  //
-  // As a result transpose_row is shifted to the left by one entry.
-  for (int r = 0; r < num_rows; ++r) {
-    for (int idx = rows[r]; idx < rows[r + 1]; ++idx) {
-      const int c = cols[idx];
-      const int transpose_idx = transpose_rows[c]++;
-      transpose_cols[transpose_idx] = r;
-      if (values != nullptr && transpose_values != nullptr) {
-        transpose_values[transpose_idx] = values[idx];
-      }
-    }
-  }
-
-  // This loop undoes the left shift to transpose_rows introduced by
-  // the previous loop.
-  for (int i = num_cols - 1; i > 0; --i) {
-    transpose_rows[i] = transpose_rows[i - 1];
-  }
-  transpose_rows[0] = 0;
-}
-
-template <class RandomNormalFunctor>
-void AddRandomBlock(const int num_rows,
-                    const int num_cols,
-                    const int row_block_begin,
-                    const int col_block_begin,
-                    RandomNormalFunctor&& randn,
-                    std::vector<int>* rows,
-                    std::vector<int>* cols,
-                    std::vector<double>* values) {
-  for (int r = 0; r < num_rows; ++r) {
-    for (int c = 0; c < num_cols; ++c) {
-      rows->push_back(row_block_begin + r);
-      cols->push_back(col_block_begin + c);
-      values->push_back(randn());
-    }
-  }
-}
-
-template <class RandomNormalFunctor>
-void AddSymmetricRandomBlock(const int num_rows,
-                             const int row_block_begin,
-                             RandomNormalFunctor&& randn,
-                             std::vector<int>* rows,
-                             std::vector<int>* cols,
-                             std::vector<double>* values) {
-  for (int r = 0; r < num_rows; ++r) {
-    for (int c = r; c < num_rows; ++c) {
-      const double v = randn();
-      rows->push_back(row_block_begin + r);
-      cols->push_back(row_block_begin + c);
-      values->push_back(v);
-      if (r != c) {
-        rows->push_back(row_block_begin + c);
-        cols->push_back(row_block_begin + r);
-        values->push_back(v);
-      }
-    }
-  }
-}
-
-}  // namespace
-
-// This constructor gives you a semi-initialized CompressedRowSparseMatrix.
-CompressedRowSparseMatrix::CompressedRowSparseMatrix(int num_rows,
-                                                     int num_cols,
-                                                     int max_num_nonzeros) {
-  num_rows_ = num_rows;
-  num_cols_ = num_cols;
-  storage_type_ = StorageType::UNSYMMETRIC;
-  rows_.resize(num_rows + 1, 0);
-  cols_.resize(max_num_nonzeros, 0);
-  values_.resize(max_num_nonzeros, 0.0);
-
-  VLOG(1) << "# of rows: " << num_rows_ << " # of columns: " << num_cols_
-          << " max_num_nonzeros: " << cols_.size() << ". Allocating "
-          << (num_rows_ + 1) * sizeof(int) +     // NOLINT
-                 cols_.size() * sizeof(int) +    // NOLINT
-                 cols_.size() * sizeof(double);  // NOLINT
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-CompressedRowSparseMatrix::FromTripletSparseMatrix(
-    const TripletSparseMatrix& input) {
-  return CompressedRowSparseMatrix::FromTripletSparseMatrix(input, false);
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-CompressedRowSparseMatrix::FromTripletSparseMatrixTransposed(
-    const TripletSparseMatrix& input) {
-  return CompressedRowSparseMatrix::FromTripletSparseMatrix(input, true);
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-CompressedRowSparseMatrix::FromTripletSparseMatrix(
-    const TripletSparseMatrix& input, bool transpose) {
-  int num_rows = input.num_rows();
-  int num_cols = input.num_cols();
-  const int* rows = input.rows();
-  const int* cols = input.cols();
-  const double* values = input.values();
-
-  if (transpose) {
-    std::swap(num_rows, num_cols);
-    std::swap(rows, cols);
-  }
-
-  // index is the list of indices into the TripletSparseMatrix input.
-  std::vector<int> index(input.num_nonzeros(), 0);
-  for (int i = 0; i < input.num_nonzeros(); ++i) {
-    index[i] = i;
-  }
-
-  // Sort index such that the entries of m are ordered by row and ties
-  // are broken by column.
-  std::sort(index.begin(), index.end(), RowColLessThan(rows, cols));
-
-  VLOG(1) << "# of rows: " << num_rows << " # of columns: " << num_cols
-          << " num_nonzeros: " << input.num_nonzeros() << ". Allocating "
-          << ((num_rows + 1) * sizeof(int) +           // NOLINT
-              input.num_nonzeros() * sizeof(int) +     // NOLINT
-              input.num_nonzeros() * sizeof(double));  // NOLINT
-
-  auto output = std::make_unique<CompressedRowSparseMatrix>(
-      num_rows, num_cols, input.num_nonzeros());
-
-  if (num_rows == 0) {
-    // No data to copy.
-    return output;
-  }
-
-  // Copy the contents of the cols and values array in the order given
-  // by index and count the number of entries in each row.
-  int* output_rows = output->mutable_rows();
-  int* output_cols = output->mutable_cols();
-  double* output_values = output->mutable_values();
-
-  output_rows[0] = 0;
-  for (int i = 0; i < index.size(); ++i) {
-    const int idx = index[i];
-    ++output_rows[rows[idx] + 1];
-    output_cols[i] = cols[idx];
-    output_values[i] = values[idx];
-  }
-
-  // Find the cumulative sum of the row counts.
-  for (int i = 1; i < num_rows + 1; ++i) {
-    output_rows[i] += output_rows[i - 1];
-  }
-
-  CHECK_EQ(output->num_nonzeros(), input.num_nonzeros());
-  return output;
-}
-
-CompressedRowSparseMatrix::CompressedRowSparseMatrix(const double* diagonal,
-                                                     int num_rows) {
-  CHECK(diagonal != nullptr);
-
-  num_rows_ = num_rows;
-  num_cols_ = num_rows;
-  storage_type_ = StorageType::UNSYMMETRIC;
-  rows_.resize(num_rows + 1);
-  cols_.resize(num_rows);
-  values_.resize(num_rows);
-
-  rows_[0] = 0;
-  for (int i = 0; i < num_rows_; ++i) {
-    cols_[i] = i;
-    values_[i] = diagonal[i];
-    rows_[i + 1] = i + 1;
-  }
-
-  CHECK_EQ(num_nonzeros(), num_rows);
-}
-
-CompressedRowSparseMatrix::~CompressedRowSparseMatrix() = default;
-
-void CompressedRowSparseMatrix::SetZero() {
-  std::fill(values_.begin(), values_.end(), 0);
-}
-
-// TODO(sameeragarwal): Make RightMultiplyAndAccumulate and
-// LeftMultiplyAndAccumulate block-aware for higher performance.
-void CompressedRowSparseMatrix::RightMultiplyAndAccumulate(
-    const double* x, double* y, ContextImpl* context, int num_threads) const {
-  if (storage_type_ != StorageType::UNSYMMETRIC) {
-    RightMultiplyAndAccumulate(x, y);
-    return;
-  }
-
-  auto values = values_.data();
-  auto rows = rows_.data();
-  auto cols = cols_.data();
-
-  ParallelFor(
-      context, 0, num_rows_, num_threads, [values, rows, cols, x, y](int row) {
-        for (int idx = rows[row]; idx < rows[row + 1]; ++idx) {
-          const int c = cols[idx];
-          const double v = values[idx];
-          y[row] += v * x[c];
-        }
-      });
-}
-
-void CompressedRowSparseMatrix::RightMultiplyAndAccumulate(const double* x,
-                                                           double* y) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-
-  if (storage_type_ == StorageType::UNSYMMETRIC) {
-    RightMultiplyAndAccumulate(x, y, nullptr, 1);
-  } else if (storage_type_ == StorageType::UPPER_TRIANGULAR) {
-    // Because of their block structure, we will have entries that lie
-    // above (below) the diagonal for lower (upper) triangular matrices,
-    // so the loops below need to account for this.
-    for (int r = 0; r < num_rows_; ++r) {
-      int idx = rows_[r];
-      const int idx_end = rows_[r + 1];
-
-      // For upper triangular matrices r <= c, so skip entries with r
-      // > c.
-      while (idx < idx_end && r > cols_[idx]) {
-        ++idx;
-      }
-
-      for (; idx < idx_end; ++idx) {
-        const int c = cols_[idx];
-        const double v = values_[idx];
-        y[r] += v * x[c];
-        // Since we are only iterating over the upper triangular part
-        // of the matrix, add contributions for the strictly lower
-        // triangular part.
-        if (r != c) {
-          y[c] += v * x[r];
-        }
-      }
-    }
-  } else if (storage_type_ == StorageType::LOWER_TRIANGULAR) {
-    for (int r = 0; r < num_rows_; ++r) {
-      int idx = rows_[r];
-      const int idx_end = rows_[r + 1];
-      // For lower triangular matrices, we only iterate till we are r >=
-      // c.
-      for (; idx < idx_end && r >= cols_[idx]; ++idx) {
-        const int c = cols_[idx];
-        const double v = values_[idx];
-        y[r] += v * x[c];
-        // Since we are only iterating over the lower triangular part
-        // of the matrix, add contributions for the strictly upper
-        // triangular part.
-        if (r != c) {
-          y[c] += v * x[r];
-        }
-      }
-    }
-  } else {
-    LOG(FATAL) << "Unknown storage type: " << storage_type_;
-  }
-}
-
-void CompressedRowSparseMatrix::LeftMultiplyAndAccumulate(const double* x,
-                                                          double* y) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-
-  if (storage_type_ == StorageType::UNSYMMETRIC) {
-    for (int r = 0; r < num_rows_; ++r) {
-      for (int idx = rows_[r]; idx < rows_[r + 1]; ++idx) {
-        y[cols_[idx]] += values_[idx] * x[r];
-      }
-    }
-  } else {
-    // Since the matrix is symmetric, LeftMultiplyAndAccumulate =
-    // RightMultiplyAndAccumulate.
-    RightMultiplyAndAccumulate(x, y);
-  }
-}
-
-void CompressedRowSparseMatrix::SquaredColumnNorm(double* x) const {
-  CHECK(x != nullptr);
-
-  std::fill(x, x + num_cols_, 0.0);
-  if (storage_type_ == StorageType::UNSYMMETRIC) {
-    for (int idx = 0; idx < rows_[num_rows_]; ++idx) {
-      x[cols_[idx]] += values_[idx] * values_[idx];
-    }
-  } else if (storage_type_ == StorageType::UPPER_TRIANGULAR) {
-    // Because of their block structure, we will have entries that lie
-    // above (below) the diagonal for lower (upper) triangular
-    // matrices, so the loops below need to account for this.
-    for (int r = 0; r < num_rows_; ++r) {
-      int idx = rows_[r];
-      const int idx_end = rows_[r + 1];
-
-      // For upper triangular matrices r <= c, so skip entries with r
-      // > c.
-      while (idx < idx_end && r > cols_[idx]) {
-        ++idx;
-      }
-
-      for (; idx < idx_end; ++idx) {
-        const int c = cols_[idx];
-        const double v2 = values_[idx] * values_[idx];
-        x[c] += v2;
-        // Since we are only iterating over the upper triangular part
-        // of the matrix, add contributions for the strictly lower
-        // triangular part.
-        if (r != c) {
-          x[r] += v2;
-        }
-      }
-    }
-  } else if (storage_type_ == StorageType::LOWER_TRIANGULAR) {
-    for (int r = 0; r < num_rows_; ++r) {
-      int idx = rows_[r];
-      const int idx_end = rows_[r + 1];
-      // For lower triangular matrices, we only iterate till we are r >=
-      // c.
-      for (; idx < idx_end && r >= cols_[idx]; ++idx) {
-        const int c = cols_[idx];
-        const double v2 = values_[idx] * values_[idx];
-        x[c] += v2;
-        // Since we are only iterating over the lower triangular part
-        // of the matrix, add contributions for the strictly upper
-        // triangular part.
-        if (r != c) {
-          x[r] += v2;
-        }
-      }
-    }
-  } else {
-    LOG(FATAL) << "Unknown storage type: " << storage_type_;
-  }
-}
-void CompressedRowSparseMatrix::ScaleColumns(const double* scale) {
-  CHECK(scale != nullptr);
-
-  for (int idx = 0; idx < rows_[num_rows_]; ++idx) {
-    values_[idx] *= scale[cols_[idx]];
-  }
-}
-
-void CompressedRowSparseMatrix::ToDenseMatrix(Matrix* dense_matrix) const {
-  CHECK(dense_matrix != nullptr);
-  dense_matrix->resize(num_rows_, num_cols_);
-  dense_matrix->setZero();
-
-  for (int r = 0; r < num_rows_; ++r) {
-    for (int idx = rows_[r]; idx < rows_[r + 1]; ++idx) {
-      (*dense_matrix)(r, cols_[idx]) = values_[idx];
-    }
-  }
-}
-
-void CompressedRowSparseMatrix::DeleteRows(int delta_rows) {
-  CHECK_GE(delta_rows, 0);
-  CHECK_LE(delta_rows, num_rows_);
-  CHECK_EQ(storage_type_, StorageType::UNSYMMETRIC);
-
-  num_rows_ -= delta_rows;
-  rows_.resize(num_rows_ + 1);
-
-  // The rest of the code updates the block information. Immediately
-  // return in case of no block information.
-  if (row_blocks_.empty()) {
-    return;
-  }
-
-  // Walk the list of row blocks until we reach the new number of rows
-  // and the drop the rest of the row blocks.
-  int num_row_blocks = 0;
-  int num_rows = 0;
-  while (num_row_blocks < row_blocks_.size() && num_rows < num_rows_) {
-    num_rows += row_blocks_[num_row_blocks].size;
-    ++num_row_blocks;
-  }
-
-  row_blocks_.resize(num_row_blocks);
-}
-
-void CompressedRowSparseMatrix::AppendRows(const CompressedRowSparseMatrix& m) {
-  CHECK_EQ(storage_type_, StorageType::UNSYMMETRIC);
-  CHECK_EQ(m.num_cols(), num_cols_);
-
-  CHECK((row_blocks_.empty() && m.row_blocks().empty()) ||
-        (!row_blocks_.empty() && !m.row_blocks().empty()))
-      << "Cannot append a matrix with row blocks to one without and vice versa."
-      << "This matrix has : " << row_blocks_.size() << " row blocks."
-      << "The matrix being appended has: " << m.row_blocks().size()
-      << " row blocks.";
-
-  if (m.num_rows() == 0) {
-    return;
-  }
-
-  if (cols_.size() < num_nonzeros() + m.num_nonzeros()) {
-    cols_.resize(num_nonzeros() + m.num_nonzeros());
-    values_.resize(num_nonzeros() + m.num_nonzeros());
-  }
-
-  // Copy the contents of m into this matrix.
-  DCHECK_LT(num_nonzeros(), cols_.size());
-  if (m.num_nonzeros() > 0) {
-    std::copy(m.cols(), m.cols() + m.num_nonzeros(), &cols_[num_nonzeros()]);
-    std::copy(
-        m.values(), m.values() + m.num_nonzeros(), &values_[num_nonzeros()]);
-  }
-
-  rows_.resize(num_rows_ + m.num_rows() + 1);
-  // new_rows = [rows_, m.row() + rows_[num_rows_]]
-  std::fill(rows_.begin() + num_rows_,
-            rows_.begin() + num_rows_ + m.num_rows() + 1,
-            rows_[num_rows_]);
-
-  for (int r = 0; r < m.num_rows() + 1; ++r) {
-    rows_[num_rows_ + r] += m.rows()[r];
-  }
-
-  num_rows_ += m.num_rows();
-
-  // The rest of the code updates the block information. Immediately
-  // return in case of no block information.
-  if (row_blocks_.empty()) {
-    return;
-  }
-
-  row_blocks_.insert(
-      row_blocks_.end(), m.row_blocks().begin(), m.row_blocks().end());
-}
-
-void CompressedRowSparseMatrix::ToTextFile(FILE* file) const {
-  CHECK(file != nullptr);
-  for (int r = 0; r < num_rows_; ++r) {
-    for (int idx = rows_[r]; idx < rows_[r + 1]; ++idx) {
-      fprintf(file, "% 10d % 10d %17f\n", r, cols_[idx], values_[idx]);
-    }
-  }
-}
-
-void CompressedRowSparseMatrix::ToCRSMatrix(CRSMatrix* matrix) const {
-  matrix->num_rows = num_rows_;
-  matrix->num_cols = num_cols_;
-  matrix->rows = rows_;
-  matrix->cols = cols_;
-  matrix->values = values_;
-
-  // Trim.
-  matrix->rows.resize(matrix->num_rows + 1);
-  matrix->cols.resize(matrix->rows[matrix->num_rows]);
-  matrix->values.resize(matrix->rows[matrix->num_rows]);
-}
-
-void CompressedRowSparseMatrix::SetMaxNumNonZeros(int num_nonzeros) {
-  CHECK_GE(num_nonzeros, 0);
-
-  cols_.resize(num_nonzeros);
-  values_.resize(num_nonzeros);
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-CompressedRowSparseMatrix::CreateBlockDiagonalMatrix(
-    const double* diagonal, const std::vector<Block>& blocks) {
-  const int num_rows = NumScalarEntries(blocks);
-  int num_nonzeros = 0;
-  for (auto& block : blocks) {
-    num_nonzeros += block.size * block.size;
-  }
-
-  auto matrix = std::make_unique<CompressedRowSparseMatrix>(
-      num_rows, num_rows, num_nonzeros);
-
-  int* rows = matrix->mutable_rows();
-  int* cols = matrix->mutable_cols();
-  double* values = matrix->mutable_values();
-  std::fill(values, values + num_nonzeros, 0.0);
-
-  int idx_cursor = 0;
-  int col_cursor = 0;
-  for (auto& block : blocks) {
-    for (int r = 0; r < block.size; ++r) {
-      *(rows++) = idx_cursor;
-      if (diagonal != nullptr) {
-        values[idx_cursor + r] = diagonal[col_cursor + r];
-      }
-      for (int c = 0; c < block.size; ++c, ++idx_cursor) {
-        *(cols++) = col_cursor + c;
-      }
-    }
-    col_cursor += block.size;
-  }
-  *rows = idx_cursor;
-
-  *matrix->mutable_row_blocks() = blocks;
-  *matrix->mutable_col_blocks() = blocks;
-
-  CHECK_EQ(idx_cursor, num_nonzeros);
-  CHECK_EQ(col_cursor, num_rows);
-  return matrix;
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-CompressedRowSparseMatrix::Transpose() const {
-  auto transpose = std::make_unique<CompressedRowSparseMatrix>(
-      num_cols_, num_rows_, num_nonzeros());
-
-  switch (storage_type_) {
-    case StorageType::UNSYMMETRIC:
-      transpose->set_storage_type(StorageType::UNSYMMETRIC);
-      break;
-    case StorageType::LOWER_TRIANGULAR:
-      transpose->set_storage_type(StorageType::UPPER_TRIANGULAR);
-      break;
-    case StorageType::UPPER_TRIANGULAR:
-      transpose->set_storage_type(StorageType::LOWER_TRIANGULAR);
-      break;
-    default:
-      LOG(FATAL) << "Unknown storage type: " << storage_type_;
-  };
-
-  TransposeForCompressedRowSparseStructure(num_rows(),
-                                           num_cols(),
-                                           num_nonzeros(),
-                                           rows(),
-                                           cols(),
-                                           values(),
-                                           transpose->mutable_rows(),
-                                           transpose->mutable_cols(),
-                                           transpose->mutable_values());
-
-  // The rest of the code updates the block information. Immediately
-  // return in case of no block information.
-  if (row_blocks_.empty()) {
-    return transpose;
-  }
-
-  *(transpose->mutable_row_blocks()) = col_blocks_;
-  *(transpose->mutable_col_blocks()) = row_blocks_;
-  return transpose;
-}
-
-std::unique_ptr<CompressedRowSparseMatrix>
-CompressedRowSparseMatrix::CreateRandomMatrix(
-    CompressedRowSparseMatrix::RandomMatrixOptions options,
-    std::mt19937& prng) {
-  CHECK_GT(options.num_row_blocks, 0);
-  CHECK_GT(options.min_row_block_size, 0);
-  CHECK_GT(options.max_row_block_size, 0);
-  CHECK_LE(options.min_row_block_size, options.max_row_block_size);
-
-  if (options.storage_type == StorageType::UNSYMMETRIC) {
-    CHECK_GT(options.num_col_blocks, 0);
-    CHECK_GT(options.min_col_block_size, 0);
-    CHECK_GT(options.max_col_block_size, 0);
-    CHECK_LE(options.min_col_block_size, options.max_col_block_size);
-  } else {
-    // Symmetric matrices (LOWER_TRIANGULAR or UPPER_TRIANGULAR);
-    options.num_col_blocks = options.num_row_blocks;
-    options.min_col_block_size = options.min_row_block_size;
-    options.max_col_block_size = options.max_row_block_size;
-  }
-
-  CHECK_GT(options.block_density, 0.0);
-  CHECK_LE(options.block_density, 1.0);
-
-  std::vector<Block> row_blocks;
-  row_blocks.reserve(options.num_row_blocks);
-  std::vector<Block> col_blocks;
-  col_blocks.reserve(options.num_col_blocks);
-
-  std::uniform_int_distribution<int> col_distribution(
-      options.min_col_block_size, options.max_col_block_size);
-  std::uniform_int_distribution<int> row_distribution(
-      options.min_row_block_size, options.max_row_block_size);
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-  std::normal_distribution<double> standard_normal_distribution;
-
-  // Generate the row block structure.
-  int row_pos = 0;
-  for (int i = 0; i < options.num_row_blocks; ++i) {
-    // Generate a random integer in [min_row_block_size, max_row_block_size]
-    row_blocks.emplace_back(row_distribution(prng), row_pos);
-    row_pos += row_blocks.back().size;
-  }
-
-  if (options.storage_type == StorageType::UNSYMMETRIC) {
-    // Generate the col block structure.
-    int col_pos = 0;
-    for (int i = 0; i < options.num_col_blocks; ++i) {
-      // Generate a random integer in [min_col_block_size, max_col_block_size]
-      col_blocks.emplace_back(col_distribution(prng), col_pos);
-      col_pos += col_blocks.back().size;
-    }
-  } else {
-    // Symmetric matrices (LOWER_TRIANGULAR or UPPER_TRIANGULAR);
-    col_blocks = row_blocks;
-  }
-
-  std::vector<int> tsm_rows;
-  std::vector<int> tsm_cols;
-  std::vector<double> tsm_values;
-
-  // For ease of construction, we are going to generate the
-  // CompressedRowSparseMatrix by generating it as a
-  // TripletSparseMatrix and then converting it to a
-  // CompressedRowSparseMatrix.
-
-  // It is possible that the random matrix is empty which is likely
-  // not what the user wants, so do the matrix generation till we have
-  // at least one non-zero entry.
-  while (tsm_values.empty()) {
-    tsm_rows.clear();
-    tsm_cols.clear();
-    tsm_values.clear();
-
-    int row_block_begin = 0;
-    for (int r = 0; r < options.num_row_blocks; ++r) {
-      int col_block_begin = 0;
-      for (int c = 0; c < options.num_col_blocks; ++c) {
-        if (((options.storage_type == StorageType::UPPER_TRIANGULAR) &&
-             (r > c)) ||
-            ((options.storage_type == StorageType::LOWER_TRIANGULAR) &&
-             (r < c))) {
-          col_block_begin += col_blocks[c].size;
-          continue;
-        }
-
-        // Randomly determine if this block is present or not.
-        if (uniform01(prng) <= options.block_density) {
-          auto randn = [&standard_normal_distribution, &prng] {
-            return standard_normal_distribution(prng);
-          };
-          // If the matrix is symmetric, then we take care to generate
-          // symmetric diagonal blocks.
-          if (options.storage_type == StorageType::UNSYMMETRIC || r != c) {
-            AddRandomBlock(row_blocks[r].size,
-                           col_blocks[c].size,
-                           row_block_begin,
-                           col_block_begin,
-                           randn,
-                           &tsm_rows,
-                           &tsm_cols,
-                           &tsm_values);
-          } else {
-            AddSymmetricRandomBlock(row_blocks[r].size,
-                                    row_block_begin,
-                                    randn,
-                                    &tsm_rows,
-                                    &tsm_cols,
-                                    &tsm_values);
-          }
-        }
-        col_block_begin += col_blocks[c].size;
-      }
-      row_block_begin += row_blocks[r].size;
-    }
-  }
-
-  const int num_rows = NumScalarEntries(row_blocks);
-  const int num_cols = NumScalarEntries(col_blocks);
-  const bool kDoNotTranspose = false;
-  auto matrix = CompressedRowSparseMatrix::FromTripletSparseMatrix(
-      TripletSparseMatrix(num_rows, num_cols, tsm_rows, tsm_cols, tsm_values),
-      kDoNotTranspose);
-  (*matrix->mutable_row_blocks()) = row_blocks;
-  (*matrix->mutable_col_blocks()) = col_blocks;
-  matrix->set_storage_type(options.storage_type);
-  return matrix;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h b/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h
deleted file mode 100644
index 36c8895..0000000
--- a/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h
+++ /dev/null
@@ -1,249 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_COMPRESSED_ROW_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_COMPRESSED_ROW_SPARSE_MATRIX_H_
-
-#include <memory>
-#include <random>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-struct CRSMatrix;
-
-namespace internal {
-
-class ContextImpl;
-class TripletSparseMatrix;
-
-class CERES_NO_EXPORT CompressedRowSparseMatrix : public SparseMatrix {
- public:
-  enum class StorageType {
-    UNSYMMETRIC,
-    // Matrix is assumed to be symmetric but only the lower triangular
-    // part of the matrix is stored.
-    LOWER_TRIANGULAR,
-    // Matrix is assumed to be symmetric but only the upper triangular
-    // part of the matrix is stored.
-    UPPER_TRIANGULAR
-  };
-
-  // Create a matrix with the same content as the TripletSparseMatrix
-  // input. We assume that input does not have any repeated
-  // entries.
-  //
-  // The storage type of the matrix is set to UNSYMMETRIC.
-  static std::unique_ptr<CompressedRowSparseMatrix> FromTripletSparseMatrix(
-      const TripletSparseMatrix& input);
-
-  // Create a matrix with the same content as the TripletSparseMatrix
-  // input transposed. We assume that input does not have any repeated
-  // entries.
-  //
-  // The storage type of the matrix is set to UNSYMMETRIC.
-  static std::unique_ptr<CompressedRowSparseMatrix>
-  FromTripletSparseMatrixTransposed(const TripletSparseMatrix& input);
-
-  // Use this constructor only if you know what you are doing. This
-  // creates a "blank" matrix with the appropriate amount of memory
-  // allocated. However, the object itself is in an inconsistent state
-  // as the rows and cols matrices do not match the values of
-  // num_rows, num_cols and max_num_nonzeros.
-  //
-  // The use case for this constructor is that when the user knows the
-  // size of the matrix to begin with and wants to update the layout
-  // manually, instead of going via the indirect route of first
-  // constructing a TripletSparseMatrix, which leads to more than
-  // double the peak memory usage.
-  //
-  // The storage type is set to UNSYMMETRIC.
-  CompressedRowSparseMatrix(int num_rows, int num_cols, int max_num_nonzeros);
-
-  // Build a square sparse diagonal matrix with num_rows rows and
-  // columns. The diagonal m(i,i) = diagonal(i);
-  //
-  // The storage type is set to UNSYMMETRIC
-  CompressedRowSparseMatrix(const double* diagonal, int num_rows);
-
-  // SparseMatrix interface.
-  ~CompressedRowSparseMatrix() override;
-  void SetZero() final;
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  void RightMultiplyAndAccumulate(const double* x,
-                                  double* y,
-                                  ContextImpl* context,
-                                  int num_threads) const final;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final;
-  void SquaredColumnNorm(double* x) const final;
-  void ScaleColumns(const double* scale) final;
-  void ToDenseMatrix(Matrix* dense_matrix) const final;
-  void ToTextFile(FILE* file) const final;
-  int num_rows() const final { return num_rows_; }
-  int num_cols() const final { return num_cols_; }
-  int num_nonzeros() const final { return rows_[num_rows_]; }
-  const double* values() const final { return values_.data(); }
-  double* mutable_values() final { return values_.data(); }
-
-  // Delete the bottom delta_rows.
-  // num_rows -= delta_rows
-  void DeleteRows(int delta_rows);
-
-  // Append the contents of m to the bottom of this matrix. m must
-  // have the same number of columns as this matrix.
-  void AppendRows(const CompressedRowSparseMatrix& m);
-
-  void ToCRSMatrix(CRSMatrix* matrix) const;
-
-  std::unique_ptr<CompressedRowSparseMatrix> Transpose() const;
-
-  // Destructive array resizing method.
-  void SetMaxNumNonZeros(int num_nonzeros);
-
-  // Non-destructive array resizing method.
-  void set_num_rows(const int num_rows) { num_rows_ = num_rows; }
-  void set_num_cols(const int num_cols) { num_cols_ = num_cols; }
-
-  // Low level access methods that expose the structure of the matrix.
-  const int* cols() const { return cols_.data(); }
-  int* mutable_cols() { return cols_.data(); }
-
-  const int* rows() const { return rows_.data(); }
-  int* mutable_rows() { return rows_.data(); }
-
-  StorageType storage_type() const { return storage_type_; }
-  void set_storage_type(const StorageType storage_type) {
-    storage_type_ = storage_type;
-  }
-
-  const std::vector<Block>& row_blocks() const { return row_blocks_; }
-  std::vector<Block>* mutable_row_blocks() { return &row_blocks_; }
-
-  const std::vector<Block>& col_blocks() const { return col_blocks_; }
-  std::vector<Block>* mutable_col_blocks() { return &col_blocks_; }
-
-  // Create a block diagonal CompressedRowSparseMatrix with the given
-  // block structure. The individual blocks are assumed to be laid out
-  // contiguously in the diagonal array, one block at a time.
-  static std::unique_ptr<CompressedRowSparseMatrix> CreateBlockDiagonalMatrix(
-      const double* diagonal, const std::vector<Block>& blocks);
-
-  // Options struct to control the generation of random block sparse
-  // matrices in compressed row sparse format.
-  //
-  // The random matrix generation proceeds as follows.
-  //
-  // First the row and column block structure is determined by
-  // generating random row and column block sizes that lie within the
-  // given bounds.
-  //
-  // Then we walk the block structure of the resulting matrix, and with
-  // probability block_density determine whether they are structurally
-  // zero or not. If the answer is no, then we generate entries for the
-  // block which are distributed normally.
-  struct RandomMatrixOptions {
-    // Type of matrix to create.
-    //
-    // If storage_type is UPPER_TRIANGULAR (LOWER_TRIANGULAR), then
-    // create a square symmetric matrix with just the upper triangular
-    // (lower triangular) part. In this case, num_col_blocks,
-    // min_col_block_size and max_col_block_size will be ignored and
-    // assumed to be equal to the corresponding row settings.
-    StorageType storage_type = StorageType::UNSYMMETRIC;
-
-    int num_row_blocks = 0;
-    int min_row_block_size = 0;
-    int max_row_block_size = 0;
-    int num_col_blocks = 0;
-    int min_col_block_size = 0;
-    int max_col_block_size = 0;
-
-    // 0 < block_density <= 1 is the probability of a block being
-    // present in the matrix. A given random matrix will not have
-    // precisely this density.
-    double block_density = 0.0;
-  };
-
-  // Create a random CompressedRowSparseMatrix whose entries are
-  // normally distributed and whose structure is determined by
-  // RandomMatrixOptions.
-  static std::unique_ptr<CompressedRowSparseMatrix> CreateRandomMatrix(
-      RandomMatrixOptions options, std::mt19937& prng);
-
- private:
-  static std::unique_ptr<CompressedRowSparseMatrix> FromTripletSparseMatrix(
-      const TripletSparseMatrix& input, bool transpose);
-
-  int num_rows_;
-  int num_cols_;
-  std::vector<int> rows_;
-  std::vector<int> cols_;
-  std::vector<double> values_;
-  StorageType storage_type_;
-
-  // If the matrix has an underlying block structure, then it can also
-  // carry with it row and column block sizes. This is auxiliary and
-  // optional information for use by algorithms operating on the
-  // matrix. The class itself does not make use of this information in
-  // any way.
-  std::vector<Block> row_blocks_;
-  std::vector<Block> col_blocks_;
-};
-
-inline std::ostream& operator<<(std::ostream& s,
-                                CompressedRowSparseMatrix::StorageType type) {
-  switch (type) {
-    case CompressedRowSparseMatrix::StorageType::UNSYMMETRIC:
-      s << "UNSYMMETRIC";
-      break;
-    case CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR:
-      s << "UPPER_TRIANGULAR";
-      break;
-    case CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR:
-      s << "LOWER_TRIANGULAR";
-      break;
-    default:
-      s << "UNKNOWN CompressedRowSparseMatrix::StorageType";
-  }
-  return s;
-}
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_COMPRESSED_ROW_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/compressed_row_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/compressed_row_sparse_matrix_test.cc
deleted file mode 100644
index b6bcdb7..0000000
--- a/third_party/ceres/internal/ceres/compressed_row_sparse_matrix_test.cc
+++ /dev/null
@@ -1,672 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/compressed_row_sparse_matrix.h"
-
-#include <algorithm>
-#include <memory>
-#include <numeric>
-#include <random>
-#include <string>
-#include <vector>
-
-#include "Eigen/SparseCore"
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-static void CompareMatrices(const SparseMatrix* a, const SparseMatrix* b) {
-  EXPECT_EQ(a->num_rows(), b->num_rows());
-  EXPECT_EQ(a->num_cols(), b->num_cols());
-
-  int num_rows = a->num_rows();
-  int num_cols = a->num_cols();
-
-  for (int i = 0; i < num_cols; ++i) {
-    Vector x = Vector::Zero(num_cols);
-    x(i) = 1.0;
-
-    Vector y_a = Vector::Zero(num_rows);
-    Vector y_b = Vector::Zero(num_rows);
-
-    a->RightMultiplyAndAccumulate(x.data(), y_a.data());
-    b->RightMultiplyAndAccumulate(x.data(), y_b.data());
-    EXPECT_EQ((y_a - y_b).norm(), 0);
-  }
-}
-
-class CompressedRowSparseMatrixTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    auto problem = CreateLinearLeastSquaresProblemFromId(1);
-
-    CHECK(problem != nullptr);
-
-    tsm.reset(down_cast<TripletSparseMatrix*>(problem->A.release()));
-    crsm = CompressedRowSparseMatrix::FromTripletSparseMatrix(*tsm);
-
-    num_rows = tsm->num_rows();
-    num_cols = tsm->num_cols();
-
-    std::vector<Block>* row_blocks = crsm->mutable_row_blocks();
-    row_blocks->resize(num_rows);
-    for (int i = 0; i < row_blocks->size(); ++i) {
-      (*row_blocks)[i] = Block(1, i);
-    }
-    std::vector<Block>* col_blocks = crsm->mutable_col_blocks();
-    col_blocks->resize(num_cols);
-    for (int i = 0; i < col_blocks->size(); ++i) {
-      (*col_blocks)[i] = Block(1, i);
-    }
-  }
-
-  int num_rows;
-  int num_cols;
-
-  std::unique_ptr<TripletSparseMatrix> tsm;
-  std::unique_ptr<CompressedRowSparseMatrix> crsm;
-};
-
-TEST_F(CompressedRowSparseMatrixTest, Scale) {
-  Vector scale(num_cols);
-  for (int i = 0; i < num_cols; ++i) {
-    scale(i) = i + 1;
-  }
-
-  tsm->ScaleColumns(scale.data());
-  crsm->ScaleColumns(scale.data());
-  CompareMatrices(tsm.get(), crsm.get());
-}
-
-TEST_F(CompressedRowSparseMatrixTest, DeleteRows) {
-  // Clear the row and column blocks as these are purely scalar tests.
-  crsm->mutable_row_blocks()->clear();
-  crsm->mutable_col_blocks()->clear();
-
-  for (int i = 0; i < num_rows; ++i) {
-    tsm->Resize(num_rows - i, num_cols);
-    crsm->DeleteRows(crsm->num_rows() - tsm->num_rows());
-    CompareMatrices(tsm.get(), crsm.get());
-  }
-}
-
-TEST_F(CompressedRowSparseMatrixTest, AppendRows) {
-  // Clear the row and column blocks as these are purely scalar tests.
-  crsm->mutable_row_blocks()->clear();
-  crsm->mutable_col_blocks()->clear();
-
-  for (int i = 0; i < num_rows; ++i) {
-    TripletSparseMatrix tsm_appendage(*tsm);
-    tsm_appendage.Resize(i, num_cols);
-
-    tsm->AppendRows(tsm_appendage);
-    auto crsm_appendage =
-        CompressedRowSparseMatrix::FromTripletSparseMatrix(tsm_appendage);
-
-    crsm->AppendRows(*crsm_appendage);
-    CompareMatrices(tsm.get(), crsm.get());
-  }
-}
-
-TEST_F(CompressedRowSparseMatrixTest, AppendAndDeleteBlockDiagonalMatrix) {
-  int num_diagonal_rows = crsm->num_cols();
-
-  auto diagonal = std::make_unique<double[]>(num_diagonal_rows);
-  for (int i = 0; i < num_diagonal_rows; ++i) {
-    diagonal[i] = i;
-  }
-
-  std::vector<Block> row_and_column_blocks;
-  row_and_column_blocks.emplace_back(1, 0);
-  row_and_column_blocks.emplace_back(2, 1);
-  row_and_column_blocks.emplace_back(2, 3);
-
-  const std::vector<Block> pre_row_blocks = crsm->row_blocks();
-  const std::vector<Block> pre_col_blocks = crsm->col_blocks();
-
-  auto appendage = CompressedRowSparseMatrix::CreateBlockDiagonalMatrix(
-      diagonal.get(), row_and_column_blocks);
-
-  crsm->AppendRows(*appendage);
-
-  const std::vector<Block> post_row_blocks = crsm->row_blocks();
-  const std::vector<Block> post_col_blocks = crsm->col_blocks();
-
-  std::vector<Block> expected_row_blocks = pre_row_blocks;
-  expected_row_blocks.insert(expected_row_blocks.end(),
-                             row_and_column_blocks.begin(),
-                             row_and_column_blocks.end());
-
-  std::vector<Block> expected_col_blocks = pre_col_blocks;
-
-  EXPECT_EQ(expected_row_blocks, crsm->row_blocks());
-  EXPECT_EQ(expected_col_blocks, crsm->col_blocks());
-
-  crsm->DeleteRows(num_diagonal_rows);
-  EXPECT_EQ(crsm->row_blocks(), pre_row_blocks);
-  EXPECT_EQ(crsm->col_blocks(), pre_col_blocks);
-}
-
-TEST_F(CompressedRowSparseMatrixTest, ToDenseMatrix) {
-  Matrix tsm_dense;
-  Matrix crsm_dense;
-
-  tsm->ToDenseMatrix(&tsm_dense);
-  crsm->ToDenseMatrix(&crsm_dense);
-
-  EXPECT_EQ((tsm_dense - crsm_dense).norm(), 0.0);
-}
-
-TEST_F(CompressedRowSparseMatrixTest, ToCRSMatrix) {
-  CRSMatrix crs_matrix;
-  crsm->ToCRSMatrix(&crs_matrix);
-  EXPECT_EQ(crsm->num_rows(), crs_matrix.num_rows);
-  EXPECT_EQ(crsm->num_cols(), crs_matrix.num_cols);
-  EXPECT_EQ(crsm->num_rows() + 1, crs_matrix.rows.size());
-  EXPECT_EQ(crsm->num_nonzeros(), crs_matrix.cols.size());
-  EXPECT_EQ(crsm->num_nonzeros(), crs_matrix.values.size());
-
-  for (int i = 0; i < crsm->num_rows() + 1; ++i) {
-    EXPECT_EQ(crsm->rows()[i], crs_matrix.rows[i]);
-  }
-
-  for (int i = 0; i < crsm->num_nonzeros(); ++i) {
-    EXPECT_EQ(crsm->cols()[i], crs_matrix.cols[i]);
-    EXPECT_EQ(crsm->values()[i], crs_matrix.values[i]);
-  }
-}
-
-TEST(CompressedRowSparseMatrix, CreateBlockDiagonalMatrix) {
-  std::vector<Block> blocks;
-  blocks.emplace_back(1, 0);
-  blocks.emplace_back(2, 1);
-  blocks.emplace_back(2, 3);
-
-  Vector diagonal(5);
-  for (int i = 0; i < 5; ++i) {
-    diagonal(i) = i + 1;
-  }
-
-  auto matrix = CompressedRowSparseMatrix::CreateBlockDiagonalMatrix(
-      diagonal.data(), blocks);
-
-  EXPECT_EQ(matrix->num_rows(), 5);
-  EXPECT_EQ(matrix->num_cols(), 5);
-  EXPECT_EQ(matrix->num_nonzeros(), 9);
-  EXPECT_EQ(blocks, matrix->row_blocks());
-  EXPECT_EQ(blocks, matrix->col_blocks());
-
-  Vector x(5);
-  Vector y(5);
-
-  x.setOnes();
-  y.setZero();
-  matrix->RightMultiplyAndAccumulate(x.data(), y.data());
-  for (int i = 0; i < diagonal.size(); ++i) {
-    EXPECT_EQ(y[i], diagonal[i]);
-  }
-
-  y.setZero();
-  matrix->LeftMultiplyAndAccumulate(x.data(), y.data());
-  for (int i = 0; i < diagonal.size(); ++i) {
-    EXPECT_EQ(y[i], diagonal[i]);
-  }
-
-  Matrix dense;
-  matrix->ToDenseMatrix(&dense);
-  EXPECT_EQ((dense.diagonal() - diagonal).norm(), 0.0);
-}
-
-TEST(CompressedRowSparseMatrix, Transpose) {
-  //  0  1  0  2  3  0
-  //  4  5  6  0  0  7
-  //  8  9  0 10 11  0
-  // 12  0 13 14 15  0
-  //  0 16 17  0  0  0
-
-  // Block structure:
-  //  A  A  A  A  B  B
-  //  A  A  A  A  B  B
-  //  A  A  A  A  B  B
-  //  C  C  C  C  D  D
-  //  C  C  C  C  D  D
-  //  C  C  C  C  D  D
-
-  CompressedRowSparseMatrix matrix(5, 6, 30);
-  int* rows = matrix.mutable_rows();
-  int* cols = matrix.mutable_cols();
-  double* values = matrix.mutable_values();
-  matrix.mutable_row_blocks()->emplace_back(3, 0);
-  matrix.mutable_row_blocks()->emplace_back(3, 3);
-  matrix.mutable_col_blocks()->emplace_back(4, 0);
-  matrix.mutable_col_blocks()->emplace_back(2, 4);
-
-  rows[0] = 0;
-  cols[0] = 1;
-  cols[1] = 3;
-  cols[2] = 4;
-
-  rows[1] = 3;
-  cols[3] = 0;
-  cols[4] = 1;
-  cols[5] = 2;
-  cols[6] = 5;
-
-  rows[2] = 7;
-  cols[7] = 0;
-  cols[8] = 1;
-  cols[9] = 3;
-  cols[10] = 4;
-
-  rows[3] = 11;
-  cols[11] = 0;
-  cols[12] = 2;
-  cols[13] = 3;
-  cols[14] = 4;
-
-  rows[4] = 15;
-  cols[15] = 1;
-  cols[16] = 2;
-  rows[5] = 17;
-
-  std::iota(values, values + 17, 1);
-
-  auto transpose = matrix.Transpose();
-
-  ASSERT_EQ(transpose->row_blocks().size(), matrix.col_blocks().size());
-  for (int i = 0; i < transpose->row_blocks().size(); ++i) {
-    EXPECT_EQ(transpose->row_blocks()[i], matrix.col_blocks()[i]);
-  }
-
-  ASSERT_EQ(transpose->col_blocks().size(), matrix.row_blocks().size());
-  for (int i = 0; i < transpose->col_blocks().size(); ++i) {
-    EXPECT_EQ(transpose->col_blocks()[i], matrix.row_blocks()[i]);
-  }
-
-  Matrix dense_matrix;
-  matrix.ToDenseMatrix(&dense_matrix);
-
-  Matrix dense_transpose;
-  transpose->ToDenseMatrix(&dense_transpose);
-  EXPECT_NEAR((dense_matrix - dense_transpose.transpose()).norm(), 0.0, 1e-14);
-}
-
-TEST(CompressedRowSparseMatrix, FromTripletSparseMatrix) {
-  std::mt19937 prng;
-  TripletSparseMatrix::RandomMatrixOptions options;
-  options.num_rows = 5;
-  options.num_cols = 7;
-  options.density = 0.5;
-
-  const int kNumTrials = 10;
-  for (int i = 0; i < kNumTrials; ++i) {
-    auto tsm = TripletSparseMatrix::CreateRandomMatrix(options, prng);
-    auto crsm = CompressedRowSparseMatrix::FromTripletSparseMatrix(*tsm);
-
-    Matrix expected;
-    tsm->ToDenseMatrix(&expected);
-    Matrix actual;
-    crsm->ToDenseMatrix(&actual);
-    EXPECT_NEAR((expected - actual).norm() / actual.norm(),
-                0.0,
-                std::numeric_limits<double>::epsilon())
-        << "\nexpected: \n"
-        << expected << "\nactual: \n"
-        << actual;
-  }
-}
-
-TEST(CompressedRowSparseMatrix, FromTripletSparseMatrixTransposed) {
-  std::mt19937 prng;
-  TripletSparseMatrix::RandomMatrixOptions options;
-  options.num_rows = 5;
-  options.num_cols = 7;
-  options.density = 0.5;
-
-  const int kNumTrials = 10;
-  for (int i = 0; i < kNumTrials; ++i) {
-    auto tsm = TripletSparseMatrix::CreateRandomMatrix(options, prng);
-    auto crsm =
-        CompressedRowSparseMatrix::FromTripletSparseMatrixTransposed(*tsm);
-
-    Matrix tmp;
-    tsm->ToDenseMatrix(&tmp);
-    Matrix expected = tmp.transpose();
-    Matrix actual;
-    crsm->ToDenseMatrix(&actual);
-    EXPECT_NEAR((expected - actual).norm() / actual.norm(),
-                0.0,
-                std::numeric_limits<double>::epsilon())
-        << "\nexpected: \n"
-        << expected << "\nactual: \n"
-        << actual;
-  }
-}
-
-using Param = ::testing::tuple<CompressedRowSparseMatrix::StorageType>;
-
-static std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  if (::testing::get<0>(info.param) ==
-      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-    return "UPPER";
-  }
-
-  if (::testing::get<0>(info.param) ==
-      CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-    return "LOWER";
-  }
-
-  return "UNSYMMETRIC";
-}
-
-class RightMultiplyAndAccumulateTest : public ::testing::TestWithParam<Param> {
-};
-
-TEST_P(RightMultiplyAndAccumulateTest, _) {
-  const int kMinNumBlocks = 1;
-  const int kMaxNumBlocks = 10;
-  const int kMinBlockSize = 1;
-  const int kMaxBlockSize = 5;
-  const int kNumTrials = 10;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform(0.5, 1.0);
-  for (int num_blocks = kMinNumBlocks; num_blocks < kMaxNumBlocks;
-       ++num_blocks) {
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      Param param = GetParam();
-      CompressedRowSparseMatrix::RandomMatrixOptions options;
-      options.num_col_blocks = num_blocks;
-      options.min_col_block_size = kMinBlockSize;
-      options.max_col_block_size = kMaxBlockSize;
-      options.num_row_blocks = 2 * num_blocks;
-      options.min_row_block_size = kMinBlockSize;
-      options.max_row_block_size = kMaxBlockSize;
-      options.block_density = uniform(prng);
-      options.storage_type = ::testing::get<0>(param);
-      auto matrix =
-          CompressedRowSparseMatrix::CreateRandomMatrix(options, prng);
-      const int num_rows = matrix->num_rows();
-      const int num_cols = matrix->num_cols();
-
-      Vector x(num_cols);
-      x.setRandom();
-
-      Vector actual_y(num_rows);
-      actual_y.setZero();
-      matrix->RightMultiplyAndAccumulate(x.data(), actual_y.data());
-
-      Matrix dense;
-      matrix->ToDenseMatrix(&dense);
-      Vector expected_y;
-      if (::testing::get<0>(param) ==
-          CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-        expected_y = dense.selfadjointView<Eigen::Upper>() * x;
-      } else if (::testing::get<0>(param) ==
-                 CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-        expected_y = dense.selfadjointView<Eigen::Lower>() * x;
-      } else {
-        expected_y = dense * x;
-      }
-
-      ASSERT_NEAR((expected_y - actual_y).norm() / actual_y.norm(),
-                  0.0,
-                  std::numeric_limits<double>::epsilon() * 10)
-          << "\n"
-          << dense << "x:\n"
-          << x.transpose() << "\n"
-          << "expected: \n"
-          << expected_y.transpose() << "\n"
-          << "actual: \n"
-          << actual_y.transpose();
-    }
-  }
-}
-
-INSTANTIATE_TEST_SUITE_P(
-    CompressedRowSparseMatrix,
-    RightMultiplyAndAccumulateTest,
-    ::testing::Values(CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR,
-                      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR,
-                      CompressedRowSparseMatrix::StorageType::UNSYMMETRIC),
-    ParamInfoToString);
-
-class LeftMultiplyAndAccumulateTest : public ::testing::TestWithParam<Param> {};
-
-TEST_P(LeftMultiplyAndAccumulateTest, _) {
-  const int kMinNumBlocks = 1;
-  const int kMaxNumBlocks = 10;
-  const int kMinBlockSize = 1;
-  const int kMaxBlockSize = 5;
-  const int kNumTrials = 10;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform(0.5, 1.0);
-  for (int num_blocks = kMinNumBlocks; num_blocks < kMaxNumBlocks;
-       ++num_blocks) {
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      Param param = GetParam();
-      CompressedRowSparseMatrix::RandomMatrixOptions options;
-      options.num_col_blocks = num_blocks;
-      options.min_col_block_size = kMinBlockSize;
-      options.max_col_block_size = kMaxBlockSize;
-      options.num_row_blocks = 2 * num_blocks;
-      options.min_row_block_size = kMinBlockSize;
-      options.max_row_block_size = kMaxBlockSize;
-      options.block_density = uniform(prng);
-      options.storage_type = ::testing::get<0>(param);
-      auto matrix =
-          CompressedRowSparseMatrix::CreateRandomMatrix(options, prng);
-      const int num_rows = matrix->num_rows();
-      const int num_cols = matrix->num_cols();
-
-      Vector x(num_rows);
-      x.setRandom();
-
-      Vector actual_y(num_cols);
-      actual_y.setZero();
-      matrix->LeftMultiplyAndAccumulate(x.data(), actual_y.data());
-
-      Matrix dense;
-      matrix->ToDenseMatrix(&dense);
-      Vector expected_y;
-      if (::testing::get<0>(param) ==
-          CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-        expected_y = dense.selfadjointView<Eigen::Upper>() * x;
-      } else if (::testing::get<0>(param) ==
-                 CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-        expected_y = dense.selfadjointView<Eigen::Lower>() * x;
-      } else {
-        expected_y = dense.transpose() * x;
-      }
-
-      ASSERT_NEAR((expected_y - actual_y).norm() / actual_y.norm(),
-                  0.0,
-                  std::numeric_limits<double>::epsilon() * 10)
-          << "\n"
-          << dense << "x\n"
-          << x.transpose() << "\n"
-          << "expected: \n"
-          << expected_y.transpose() << "\n"
-          << "actual: \n"
-          << actual_y.transpose();
-    }
-  }
-}
-
-INSTANTIATE_TEST_SUITE_P(
-    CompressedRowSparseMatrix,
-    LeftMultiplyAndAccumulateTest,
-    ::testing::Values(CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR,
-                      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR,
-                      CompressedRowSparseMatrix::StorageType::UNSYMMETRIC),
-    ParamInfoToString);
-
-class SquaredColumnNormTest : public ::testing::TestWithParam<Param> {};
-
-TEST_P(SquaredColumnNormTest, _) {
-  const int kMinNumBlocks = 1;
-  const int kMaxNumBlocks = 10;
-  const int kMinBlockSize = 1;
-  const int kMaxBlockSize = 5;
-  const int kNumTrials = 10;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform(0.5, 1.0);
-  for (int num_blocks = kMinNumBlocks; num_blocks < kMaxNumBlocks;
-       ++num_blocks) {
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      Param param = GetParam();
-      CompressedRowSparseMatrix::RandomMatrixOptions options;
-      options.num_col_blocks = num_blocks;
-      options.min_col_block_size = kMinBlockSize;
-      options.max_col_block_size = kMaxBlockSize;
-      options.num_row_blocks = 2 * num_blocks;
-      options.min_row_block_size = kMinBlockSize;
-      options.max_row_block_size = kMaxBlockSize;
-      options.block_density = uniform(prng);
-      options.storage_type = ::testing::get<0>(param);
-      auto matrix =
-          CompressedRowSparseMatrix::CreateRandomMatrix(options, prng);
-      const int num_cols = matrix->num_cols();
-
-      Vector actual(num_cols);
-      actual.setZero();
-      matrix->SquaredColumnNorm(actual.data());
-
-      Matrix dense;
-      matrix->ToDenseMatrix(&dense);
-      Vector expected;
-      if (::testing::get<0>(param) ==
-          CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-        const Matrix full = dense.selfadjointView<Eigen::Upper>();
-        expected = full.colwise().squaredNorm();
-      } else if (::testing::get<0>(param) ==
-                 CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-        const Matrix full = dense.selfadjointView<Eigen::Lower>();
-        expected = full.colwise().squaredNorm();
-      } else {
-        expected = dense.colwise().squaredNorm();
-      }
-
-      ASSERT_NEAR((expected - actual).norm() / actual.norm(),
-                  0.0,
-                  std::numeric_limits<double>::epsilon() * 10)
-          << "\n"
-          << dense << "expected: \n"
-          << expected.transpose() << "\n"
-          << "actual: \n"
-          << actual.transpose();
-    }
-  }
-}
-
-INSTANTIATE_TEST_SUITE_P(
-    CompressedRowSparseMatrix,
-    SquaredColumnNormTest,
-    ::testing::Values(CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR,
-                      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR,
-                      CompressedRowSparseMatrix::StorageType::UNSYMMETRIC),
-    ParamInfoToString);
-
-const int kMaxNumThreads = 8;
-class CompressedRowSparseMatrixParallelTest
-    : public ::testing::TestWithParam<int> {
-  void SetUp() final { context_.EnsureMinimumThreads(kMaxNumThreads); }
-
- protected:
-  ContextImpl context_;
-};
-
-TEST_P(CompressedRowSparseMatrixParallelTest,
-       RightMultiplyAndAccumulateUnsymmetric) {
-  const int kMinNumBlocks = 1;
-  const int kMaxNumBlocks = 10;
-  const int kMinBlockSize = 1;
-  const int kMaxBlockSize = 5;
-  const int kNumTrials = 10;
-  const int kNumThreads = GetParam();
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform(0.5, 1.0);
-  for (int num_blocks = kMinNumBlocks; num_blocks < kMaxNumBlocks;
-       ++num_blocks) {
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      CompressedRowSparseMatrix::RandomMatrixOptions options;
-      options.num_col_blocks = num_blocks;
-      options.min_col_block_size = kMinBlockSize;
-      options.max_col_block_size = kMaxBlockSize;
-      options.num_row_blocks = 2 * num_blocks;
-      options.min_row_block_size = kMinBlockSize;
-      options.max_row_block_size = kMaxBlockSize;
-      options.block_density = uniform(prng);
-      options.storage_type =
-          CompressedRowSparseMatrix::StorageType::UNSYMMETRIC;
-      auto matrix =
-          CompressedRowSparseMatrix::CreateRandomMatrix(options, prng);
-      const int num_rows = matrix->num_rows();
-      const int num_cols = matrix->num_cols();
-
-      Vector x(num_cols);
-      x.setRandom();
-
-      Vector actual_y(num_rows);
-      actual_y.setZero();
-      matrix->RightMultiplyAndAccumulate(
-          x.data(), actual_y.data(), &context_, kNumThreads);
-
-      Matrix dense;
-      matrix->ToDenseMatrix(&dense);
-      Vector expected_y = dense * x;
-
-      ASSERT_NEAR((expected_y - actual_y).norm() / actual_y.norm(),
-                  0.0,
-                  std::numeric_limits<double>::epsilon() * 10)
-          << "\n"
-          << dense << "x:\n"
-          << x.transpose() << "\n"
-          << "expected: \n"
-          << expected_y.transpose() << "\n"
-          << "actual: \n"
-          << actual_y.transpose();
-    }
-  }
-}
-INSTANTIATE_TEST_SUITE_P(ParallelProducts,
-                         CompressedRowSparseMatrixParallelTest,
-                         ::testing::Values(1, 2, 4, 8),
-                         ::testing::PrintToStringParamName());
-
-// TODO(sameeragarwal) Add tests for the random matrix creation methods.
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/concurrent_queue.h b/third_party/ceres/internal/ceres/concurrent_queue.h
deleted file mode 100644
index 5f490ab..0000000
--- a/third_party/ceres/internal/ceres/concurrent_queue.h
+++ /dev/null
@@ -1,156 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef CERES_INTERNAL_CONCURRENT_QUEUE_H_
-#define CERES_INTERNAL_CONCURRENT_QUEUE_H_
-
-#include <condition_variable>
-#include <mutex>
-#include <queue>
-#include <thread>
-
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// A thread-safe multi-producer, multi-consumer queue for queueing items that
-// are typically handled asynchronously by multiple threads. The ConcurrentQueue
-// has two states which only affect the Wait call:
-//
-//  (1) Waiters have been enabled (enabled by default or calling
-//      EnableWaiters). The call to Wait will block until an item is available.
-//      Push and pop will operate as expected.
-//
-//  (2) StopWaiters has been called. All threads blocked in a Wait() call will
-//      be woken up and pop any available items from the queue. All future Wait
-//      requests will either return an element from the queue or return
-//      immediately if no element is present.  Push and pop will operate as
-//      expected.
-//
-// A common use case is using the concurrent queue as an interface for
-// scheduling tasks for a set of thread workers:
-//
-// ConcurrentQueue<Task> task_queue;
-//
-// [Worker threads]:
-//   Task task;
-//   while(task_queue.Wait(&task)) {
-//     ...
-//   }
-//
-// [Producers]:
-//   task_queue.Push(...);
-//   ..
-//   task_queue.Push(...);
-//   ...
-//   // Signal worker threads to stop blocking on Wait and terminate.
-//   task_queue.StopWaiters();
-//
-template <typename T>
-class ConcurrentQueue {
- public:
-  // Defaults the queue to blocking on Wait calls.
-  ConcurrentQueue() = default;
-
-  // Atomically push an element onto the queue.  If a thread was waiting for an
-  // element, wake it up.
-  void Push(const T& value) {
-    std::lock_guard<std::mutex> lock(mutex_);
-    queue_.push(value);
-    work_pending_condition_.notify_one();
-  }
-
-  // Atomically pop an element from the queue.  If an element is present, return
-  // true. If the queue was empty, return false.
-  bool Pop(T* value) {
-    CHECK(value != nullptr);
-
-    std::lock_guard<std::mutex> lock(mutex_);
-    return PopUnlocked(value);
-  }
-
-  // Atomically pop an element from the queue. Blocks until one is available or
-  // StopWaiters is called.  Returns true if an element was successfully popped
-  // from the queue, otherwise returns false.
-  bool Wait(T* value) {
-    CHECK(value != nullptr);
-
-    std::unique_lock<std::mutex> lock(mutex_);
-    work_pending_condition_.wait(lock,
-                                 [&]() { return !(wait_ && queue_.empty()); });
-
-    return PopUnlocked(value);
-  }
-
-  // Unblock all threads waiting to pop a value from the queue, and they will
-  // exit Wait() without getting a value. All future Wait requests will return
-  // immediately if no element is present until EnableWaiters is called.
-  void StopWaiters() {
-    std::lock_guard<std::mutex> lock(mutex_);
-    wait_ = false;
-    work_pending_condition_.notify_all();
-  }
-
-  // Enable threads to block on Wait calls.
-  void EnableWaiters() {
-    std::lock_guard<std::mutex> lock(mutex_);
-    wait_ = true;
-  }
-
- private:
-  // Pops an element from the queue.  If an element is present, return
-  // true. If the queue was empty, return false.  Not thread-safe. Must acquire
-  // the lock before calling.
-  bool PopUnlocked(T* value) {
-    if (queue_.empty()) {
-      return false;
-    }
-
-    *value = queue_.front();
-    queue_.pop();
-
-    return true;
-  }
-
-  // The mutex controls read and write access to the queue_ and stop_
-  // variables. It is also used to block the calling thread until an element is
-  // available to pop from the queue.
-  std::mutex mutex_;
-  std::condition_variable work_pending_condition_;
-
-  std::queue<T> queue_;
-  // If true, signals that callers of Wait will block waiting to pop an
-  // element off the queue.
-  bool wait_{true};
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_CONCURRENT_QUEUE_H_
diff --git a/third_party/ceres/internal/ceres/concurrent_queue_test.cc b/third_party/ceres/internal/ceres/concurrent_queue_test.cc
deleted file mode 100644
index db1446f..0000000
--- a/third_party/ceres/internal/ceres/concurrent_queue_test.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/concurrent_queue.h"
-
-#include <chrono>
-#include <thread>
-
-#include "ceres/internal/config.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// A basic test of push and pop.
-TEST(ConcurrentQueue, PushPop) {
-  ConcurrentQueue<int> queue;
-
-  const int num_to_add = 10;
-  for (int i = 0; i < num_to_add; ++i) {
-    queue.Push(i);
-  }
-
-  for (int i = 0; i < num_to_add; ++i) {
-    int value;
-    ASSERT_TRUE(queue.Pop(&value));
-    EXPECT_EQ(i, value);
-  }
-}
-
-// Push and pop elements from the queue after StopWaiters has been called.
-TEST(ConcurrentQueue, PushPopAfterStopWaiters) {
-  ConcurrentQueue<int> queue;
-
-  const int num_to_add = 10;
-  int value;
-
-  // Pop should return immediately with false with an empty queue.
-  ASSERT_FALSE(queue.Pop(&value));
-
-  for (int i = 0; i < num_to_add; ++i) {
-    queue.Push(i);
-  }
-
-  // Call stop waiters to ensure we can still Push and Pop from the queue.
-  queue.StopWaiters();
-
-  for (int i = 0; i < num_to_add; ++i) {
-    ASSERT_TRUE(queue.Pop(&value));
-    EXPECT_EQ(i, value);
-  }
-
-  // Pop should return immediately with false with an empty queue.
-  ASSERT_FALSE(queue.Pop(&value));
-
-  // Ensure we can still push onto the queue after StopWaiters has been called.
-  const int offset = 123;
-  for (int i = 0; i < num_to_add; ++i) {
-    queue.Push(i + offset);
-  }
-
-  for (int i = 0; i < num_to_add; ++i) {
-    int value;
-    ASSERT_TRUE(queue.Pop(&value));
-    EXPECT_EQ(i + offset, value);
-  }
-
-  // Pop should return immediately with false with an empty queue.
-  ASSERT_FALSE(queue.Pop(&value));
-
-  // Try calling StopWaiters again to ensure nothing changes.
-  queue.StopWaiters();
-
-  queue.Push(13456);
-  ASSERT_TRUE(queue.Pop(&value));
-  EXPECT_EQ(13456, value);
-}
-
-// Push and pop elements after StopWaiters and EnableWaiters has been called.
-TEST(ConcurrentQueue, PushPopStopAndStart) {
-  ConcurrentQueue<int> queue;
-
-  int value;
-
-  queue.Push(13456);
-  queue.Push(256);
-
-  queue.StopWaiters();
-
-  ASSERT_TRUE(queue.Pop(&value));
-  EXPECT_EQ(13456, value);
-
-  queue.EnableWaiters();
-
-  // Try adding another entry after enable has been called.
-  queue.Push(989);
-
-  // Ensure we can pop both elements off.
-  ASSERT_TRUE(queue.Pop(&value));
-  EXPECT_EQ(256, value);
-
-  ASSERT_TRUE(queue.Pop(&value));
-  EXPECT_EQ(989, value);
-
-  // Re-enable waiting.
-  queue.EnableWaiters();
-
-  // Pop should return immediately with false with an empty queue.
-  ASSERT_FALSE(queue.Pop(&value));
-}
-
-// A basic test for Wait.
-TEST(ConcurrentQueue, Wait) {
-  ConcurrentQueue<int> queue;
-
-  int value;
-
-  queue.Push(13456);
-
-  ASSERT_TRUE(queue.Wait(&value));
-  EXPECT_EQ(13456, value);
-
-  queue.StopWaiters();
-
-  // Ensure waiting returns immediately after StopWaiters.
-  EXPECT_FALSE(queue.Wait(&value));
-  EXPECT_FALSE(queue.Wait(&value));
-
-  EXPECT_FALSE(queue.Pop(&value));
-
-  // Calling StopWaiters multiple times does not change anything.
-  queue.StopWaiters();
-
-  EXPECT_FALSE(queue.Wait(&value));
-  EXPECT_FALSE(queue.Wait(&value));
-
-  queue.Push(989);
-  queue.Push(789);
-
-  ASSERT_TRUE(queue.Wait(&value));
-  EXPECT_EQ(989, value);
-
-  ASSERT_TRUE(queue.Wait(&value));
-  EXPECT_EQ(789, value);
-}
-
-// Ensure wait blocks until an element is pushed. Also ensure wait does not
-// block after StopWaiters is called and there is no value in the queue.
-// Finally, ensures EnableWaiters re-enables waiting.
-TEST(ConcurrentQueue, EnsureWaitBlocks) {
-  ConcurrentQueue<int> queue;
-
-  int value = 0;
-  bool valid_value = false;
-  bool waiting = false;
-  std::mutex mutex;
-
-  std::thread thread([&]() {
-    {
-      std::lock_guard<std::mutex> lock(mutex);
-      waiting = true;
-    }
-
-    int element = 87987;
-    bool valid = queue.Wait(&element);
-
-    {
-      std::lock_guard<std::mutex> lock(mutex);
-      waiting = false;
-      value = element;
-      valid_value = valid;
-    }
-  });
-
-  // Give the thread time to start and wait.
-  std::this_thread::sleep_for(std::chrono::milliseconds(500));
-
-  // Ensure nothing is has been popped off the queue
-  {
-    std::lock_guard<std::mutex> lock(mutex);
-    EXPECT_TRUE(waiting);
-    ASSERT_FALSE(valid_value);
-    ASSERT_EQ(0, value);
-  }
-
-  queue.Push(13456);
-
-  // Wait for the thread to pop the value.
-  thread.join();
-
-  EXPECT_TRUE(valid_value);
-  EXPECT_EQ(13456, value);
-}
-
-TEST(ConcurrentQueue, StopAndEnableWaiters) {
-  ConcurrentQueue<int> queue;
-
-  int value = 0;
-  bool valid_value = false;
-  bool waiting = false;
-  std::mutex mutex;
-
-  auto task = [&]() {
-    {
-      std::lock_guard<std::mutex> lock(mutex);
-      waiting = true;
-    }
-
-    int element = 87987;
-    bool valid = queue.Wait(&element);
-
-    {
-      std::lock_guard<std::mutex> lock(mutex);
-      waiting = false;
-      value = element;
-      valid_value = valid;
-    }
-  };
-
-  std::thread thread_1(task);
-
-  // Give the thread time to start and wait.
-  std::this_thread::sleep_for(std::chrono::milliseconds(500));
-
-  // Ensure the thread is waiting.
-  {
-    std::lock_guard<std::mutex> lock(mutex);
-    EXPECT_TRUE(waiting);
-  }
-
-  // Unblock the thread.
-  queue.StopWaiters();
-
-  thread_1.join();
-
-  // Ensure nothing has been popped off the queue.
-  EXPECT_FALSE(valid_value);
-  EXPECT_EQ(87987, value);
-
-  // Ensure another call to Wait returns immediately.
-  EXPECT_FALSE(queue.Wait(&value));
-
-  queue.EnableWaiters();
-
-  value = 0;
-  valid_value = false;
-  waiting = false;
-
-  // Start another task waiting for an element to be pushed.
-  std::thread thread_2(task);
-
-  // Give the thread time to start and wait.
-  std::this_thread::sleep_for(std::chrono::milliseconds(500));
-
-  // Ensure nothing is popped off the queue.
-  {
-    std::lock_guard<std::mutex> lock(mutex);
-    EXPECT_TRUE(waiting);
-    ASSERT_FALSE(valid_value);
-    ASSERT_EQ(0, value);
-  }
-
-  queue.Push(13456);
-
-  // Wait for the thread to pop the value.
-  thread_2.join();
-
-  EXPECT_TRUE(valid_value);
-  EXPECT_EQ(13456, value);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/conditioned_cost_function.cc b/third_party/ceres/internal/ceres/conditioned_cost_function.cc
deleted file mode 100644
index 5c826a9..0000000
--- a/third_party/ceres/internal/ceres/conditioned_cost_function.cc
+++ /dev/null
@@ -1,131 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-//
-// This file contains the implementation of the conditioned cost function.
-
-#include "ceres/conditioned_cost_function.h"
-
-#include <cstddef>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/stl_util.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// This cost function has the same dimensions (parameters, residuals) as
-// the one it's wrapping.
-ConditionedCostFunction::ConditionedCostFunction(
-    CostFunction* wrapped_cost_function,
-    const std::vector<CostFunction*>& conditioners,
-    Ownership ownership)
-    : wrapped_cost_function_(wrapped_cost_function),
-      conditioners_(conditioners),
-      ownership_(ownership) {
-  // Set up our dimensions.
-  set_num_residuals(wrapped_cost_function_->num_residuals());
-  *mutable_parameter_block_sizes() =
-      wrapped_cost_function_->parameter_block_sizes();
-
-  // Sanity-check the conditioners' dimensions.
-  CHECK_EQ(wrapped_cost_function_->num_residuals(), conditioners_.size());
-  for (int i = 0; i < wrapped_cost_function_->num_residuals(); i++) {
-    if (conditioners[i]) {
-      CHECK_EQ(1, conditioners[i]->num_residuals());
-      CHECK_EQ(1, conditioners[i]->parameter_block_sizes().size());
-      CHECK_EQ(1, conditioners[i]->parameter_block_sizes()[0]);
-    }
-  }
-}
-
-ConditionedCostFunction::~ConditionedCostFunction() {
-  if (ownership_ == TAKE_OWNERSHIP) {
-    STLDeleteUniqueContainerPointers(conditioners_.begin(),
-                                     conditioners_.end());
-  } else {
-    wrapped_cost_function_.release();
-  }
-}
-
-bool ConditionedCostFunction::Evaluate(double const* const* parameters,
-                                       double* residuals,
-                                       double** jacobians) const {
-  bool success =
-      wrapped_cost_function_->Evaluate(parameters, residuals, jacobians);
-  if (!success) {
-    return false;
-  }
-
-  for (int r = 0; r < wrapped_cost_function_->num_residuals(); r++) {
-    // On output, we want to have
-    // residuals[r] = conditioners[r](wrapped_residuals[r])
-    // For parameter block i, column c,
-    // jacobians[i][r*parameter_block_size_[i] + c] =
-    //   = d residual[r] / d parameters[i][c]
-    //   = conditioners[r]'(wrapped_residuals[r]) *
-    //       d wrapped_residuals[r] / d parameters[i][c]
-    if (conditioners_[r]) {
-      double conditioner_derivative;
-      double* conditioner_derivative_pointer = &conditioner_derivative;
-      double** conditioner_derivative_pointer2 =
-          &conditioner_derivative_pointer;
-      if (!jacobians) {
-        conditioner_derivative_pointer2 = nullptr;
-      }
-
-      double unconditioned_residual = residuals[r];
-      double* parameter_pointer = &unconditioned_residual;
-      success = conditioners_[r]->Evaluate(
-          &parameter_pointer, &residuals[r], conditioner_derivative_pointer2);
-      if (!success) {
-        return false;
-      }
-
-      if (jacobians) {
-        for (int i = 0;
-             i < wrapped_cost_function_->parameter_block_sizes().size();
-             i++) {
-          if (jacobians[i]) {
-            int parameter_block_size =
-                wrapped_cost_function_->parameter_block_sizes()[i];
-            VectorRef jacobian_row(jacobians[i] + r * parameter_block_size,
-                                   parameter_block_size,
-                                   1);
-            jacobian_row *= conditioner_derivative;
-          }
-        }
-      }
-    }
-  }
-  return true;
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/conditioned_cost_function_test.cc b/third_party/ceres/internal/ceres/conditioned_cost_function_test.cc
deleted file mode 100644
index e5938bc..0000000
--- a/third_party/ceres/internal/ceres/conditioned_cost_function_test.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-//
-// Tests for the conditioned cost function.
-
-#include "ceres/conditioned_cost_function.h"
-
-#include "ceres/internal/eigen.h"
-#include "ceres/normal_prior.h"
-#include "ceres/types.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// The size of the cost functions we build.
-static constexpr int kTestCostFunctionSize = 3;
-
-// A simple cost function: return ax + b.
-class LinearCostFunction : public CostFunction {
- public:
-  LinearCostFunction(double a, double b) : a_(a), b_(b) {
-    set_num_residuals(1);
-    mutable_parameter_block_sizes()->push_back(1);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    *residuals = **parameters * a_ + b_;
-    if (jacobians && *jacobians) {
-      **jacobians = a_;
-    }
-
-    return true;
-  }
-
- private:
-  const double a_, b_;
-};
-
-// Tests that ConditionedCostFunction does what it's supposed to.
-TEST(ConditionedCostFunction, NormalOperation) {
-  double v1[kTestCostFunctionSize], v2[kTestCostFunctionSize],
-      jac[kTestCostFunctionSize * kTestCostFunctionSize],
-      result[kTestCostFunctionSize];
-
-  for (int i = 0; i < kTestCostFunctionSize; i++) {
-    v1[i] = i;
-    v2[i] = i * 10;
-    // Seed a few garbage values in the Jacobian matrix, to make sure that
-    // they're overwritten.
-    jac[i * 2] = i * i;
-    result[i] = i * i * i;
-  }
-
-  // Make a cost function that computes x - v2
-  VectorRef v2_vector(v2, kTestCostFunctionSize, 1);
-  Matrix identity(kTestCostFunctionSize, kTestCostFunctionSize);
-  identity.setIdentity();
-  auto* difference_cost_function = new NormalPrior(identity, v2_vector);
-
-  std::vector<CostFunction*> conditioners;
-  for (int i = 0; i < kTestCostFunctionSize; i++) {
-    conditioners.push_back(new LinearCostFunction(i + 2, i * 7));
-  }
-
-  ConditionedCostFunction conditioned_cost_function(
-      difference_cost_function, conditioners, TAKE_OWNERSHIP);
-  EXPECT_EQ(difference_cost_function->num_residuals(),
-            conditioned_cost_function.num_residuals());
-  EXPECT_EQ(difference_cost_function->parameter_block_sizes(),
-            conditioned_cost_function.parameter_block_sizes());
-
-  double* parameters[1];
-  parameters[0] = v1;
-  double* jacs[1];
-  jacs[0] = jac;
-
-  conditioned_cost_function.Evaluate(parameters, result, jacs);
-  for (int i = 0; i < kTestCostFunctionSize; i++) {
-    EXPECT_DOUBLE_EQ((i + 2) * (v1[i] - v2[i]) + i * 7, result[i]);
-  }
-
-  for (int i = 0; i < kTestCostFunctionSize; i++) {
-    for (int j = 0; j < kTestCostFunctionSize; j++) {
-      double actual = jac[i * kTestCostFunctionSize + j];
-      if (i != j) {
-        EXPECT_DOUBLE_EQ(0, actual);
-      } else {
-        EXPECT_DOUBLE_EQ(i + 2, actual);
-      }
-    }
-  }
-}
-
-TEST(ConditionedCostFunction, SharedConditionersDoNotTriggerDoubleFree) {
-  // Make a cost function that computes x - v2
-  double v2[kTestCostFunctionSize];
-  VectorRef v2_vector(v2, kTestCostFunctionSize, 1);
-  Matrix identity =
-      Matrix::Identity(kTestCostFunctionSize, kTestCostFunctionSize);
-  auto* difference_cost_function = new NormalPrior(identity, v2_vector);
-  CostFunction* conditioner = new LinearCostFunction(2, 7);
-  std::vector<CostFunction*> conditioners;
-  for (int i = 0; i < kTestCostFunctionSize; i++) {
-    conditioners.push_back(conditioner);
-  }
-
-  ConditionedCostFunction conditioned_cost_function(
-      difference_cost_function, conditioners, TAKE_OWNERSHIP);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/conjugate_gradients_solver.h b/third_party/ceres/internal/ceres/conjugate_gradients_solver.h
deleted file mode 100644
index 84383ea..0000000
--- a/third_party/ceres/internal/ceres/conjugate_gradients_solver.h
+++ /dev/null
@@ -1,311 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Preconditioned Conjugate Gradients based solver for positive
-// semidefinite linear systems.
-
-#ifndef CERES_INTERNAL_CONJUGATE_GRADIENTS_SOLVER_H_
-#define CERES_INTERNAL_CONJUGATE_GRADIENTS_SOLVER_H_
-
-#include <cmath>
-#include <cstddef>
-#include <utility>
-
-#include "ceres/eigen_vector_ops.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_operator.h"
-#include "ceres/linear_solver.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Interface for the linear operator used by ConjugateGradientsSolver.
-template <typename DenseVectorType>
-class ConjugateGradientsLinearOperator {
- public:
-  ~ConjugateGradientsLinearOperator() = default;
-  virtual void RightMultiplyAndAccumulate(const DenseVectorType& x,
-                                          DenseVectorType& y) = 0;
-};
-
-// Adapter class that makes LinearOperator appear like an instance of
-// ConjugateGradientsLinearOperator.
-class LinearOperatorAdapter : public ConjugateGradientsLinearOperator<Vector> {
- public:
-  LinearOperatorAdapter(LinearOperator& linear_operator)
-      : linear_operator_(linear_operator) {}
-
-  void RightMultiplyAndAccumulate(const Vector& x, Vector& y) final {
-    linear_operator_.RightMultiplyAndAccumulate(x, y);
-  }
-
- private:
-  LinearOperator& linear_operator_;
-};
-
-// Options to control the ConjugateGradientsSolver. For detailed documentation
-// for each of these options see linear_solver.h
-struct ConjugateGradientsSolverOptions {
-  int min_num_iterations = 1;
-  int max_num_iterations = 1;
-  int residual_reset_period = 10;
-  double r_tolerance = 0.0;
-  double q_tolerance = 0.0;
-  ContextImpl* context = nullptr;
-  int num_threads = 1;
-};
-
-// This function implements the now classical Conjugate Gradients algorithm of
-// Hestenes & Stiefel for solving positive semidefinite linear systems.
-// Optionally it can use a preconditioner also to reduce the condition number of
-// the linear system and improve the convergence rate. Modern references for
-// Conjugate Gradients are the books by Yousef Saad and Trefethen & Bau. This
-// implementation of CG has been augmented with additional termination tests
-// that are needed for forcing early termination when used as part of an inexact
-// Newton solver.
-//
-// This implementation is templated over DenseVectorType and then in turn on
-// ConjugateGradientsLinearOperator, which allows us to write an abstract
-// implementaion of the Conjugate Gradients algorithm without worrying about how
-// these objects are implemented or where they are stored. In particular it
-// allows us to have a single implementation that works on CPU and GPU based
-// matrices and vectors.
-//
-// scratch must contain pointers to four DenseVector objects of the same size as
-// rhs and solution. By asking the user for scratch space, we guarantee that we
-// will not perform any allocations inside this function.
-template <typename DenseVectorType>
-LinearSolver::Summary ConjugateGradientsSolver(
-    const ConjugateGradientsSolverOptions options,
-    ConjugateGradientsLinearOperator<DenseVectorType>& lhs,
-    const DenseVectorType& rhs,
-    ConjugateGradientsLinearOperator<DenseVectorType>& preconditioner,
-    DenseVectorType* scratch[4],
-    DenseVectorType& solution) {
-  auto IsZeroOrInfinity = [](double x) {
-    return ((x == 0.0) || std::isinf(x));
-  };
-
-  DenseVectorType& p = *scratch[0];
-  DenseVectorType& r = *scratch[1];
-  DenseVectorType& z = *scratch[2];
-  DenseVectorType& tmp = *scratch[3];
-
-  LinearSolver::Summary summary;
-  summary.termination_type = LinearSolverTerminationType::NO_CONVERGENCE;
-  summary.message = "Maximum number of iterations reached.";
-  summary.num_iterations = 0;
-
-  const double norm_rhs = Norm(rhs, options.context, options.num_threads);
-  if (norm_rhs == 0.0) {
-    SetZero(solution, options.context, options.num_threads);
-    summary.termination_type = LinearSolverTerminationType::SUCCESS;
-    summary.message = "Convergence. |b| = 0.";
-    return summary;
-  }
-
-  const double tol_r = options.r_tolerance * norm_rhs;
-
-  SetZero(tmp, options.context, options.num_threads);
-  lhs.RightMultiplyAndAccumulate(solution, tmp);
-
-  // r = rhs - tmp
-  Axpby(1.0, rhs, -1.0, tmp, r, options.context, options.num_threads);
-
-  double norm_r = Norm(r, options.context, options.num_threads);
-  if (options.min_num_iterations == 0 && norm_r <= tol_r) {
-    summary.termination_type = LinearSolverTerminationType::SUCCESS;
-    summary.message =
-        StringPrintf("Convergence. |r| = %e <= %e.", norm_r, tol_r);
-    return summary;
-  }
-
-  double rho = 1.0;
-
-  // Initial value of the quadratic model Q = x'Ax - 2 * b'x.
-  // double Q0 = -1.0 * solution.dot(rhs + r);
-  Axpby(1.0, rhs, 1.0, r, tmp, options.context, options.num_threads);
-  double Q0 = -Dot(solution, tmp, options.context, options.num_threads);
-
-  for (summary.num_iterations = 1;; ++summary.num_iterations) {
-    SetZero(z, options.context, options.num_threads);
-    preconditioner.RightMultiplyAndAccumulate(r, z);
-
-    const double last_rho = rho;
-    // rho = r.dot(z);
-    rho = Dot(r, z, options.context, options.num_threads);
-    if (IsZeroOrInfinity(rho)) {
-      summary.termination_type = LinearSolverTerminationType::FAILURE;
-      summary.message = StringPrintf("Numerical failure. rho = r'z = %e.", rho);
-      break;
-    }
-
-    if (summary.num_iterations == 1) {
-      Copy(z, p, options.context, options.num_threads);
-    } else {
-      const double beta = rho / last_rho;
-      if (IsZeroOrInfinity(beta)) {
-        summary.termination_type = LinearSolverTerminationType::FAILURE;
-        summary.message = StringPrintf(
-            "Numerical failure. beta = rho_n / rho_{n-1} = %e, "
-            "rho_n = %e, rho_{n-1} = %e",
-            beta,
-            rho,
-            last_rho);
-        break;
-      }
-      // p = z + beta * p;
-      Axpby(1.0, z, beta, p, p, options.context, options.num_threads);
-    }
-
-    DenseVectorType& q = z;
-    SetZero(q, options.context, options.num_threads);
-    lhs.RightMultiplyAndAccumulate(p, q);
-    const double pq = Dot(p, q, options.context, options.num_threads);
-    if ((pq <= 0) || std::isinf(pq)) {
-      summary.termination_type = LinearSolverTerminationType::NO_CONVERGENCE;
-      summary.message = StringPrintf(
-          "Matrix is indefinite, no more progress can be made. "
-          "p'q = %e. |p| = %e, |q| = %e",
-          pq,
-          Norm(p, options.context, options.num_threads),
-          Norm(q, options.context, options.num_threads));
-      break;
-    }
-
-    const double alpha = rho / pq;
-    if (std::isinf(alpha)) {
-      summary.termination_type = LinearSolverTerminationType::FAILURE;
-      summary.message = StringPrintf(
-          "Numerical failure. alpha = rho / pq = %e, rho = %e, pq = %e.",
-          alpha,
-          rho,
-          pq);
-      break;
-    }
-
-    // solution = solution + alpha * p;
-    Axpby(1.0,
-          solution,
-          alpha,
-          p,
-          solution,
-          options.context,
-          options.num_threads);
-
-    // Ideally we would just use the update r = r - alpha*q to keep
-    // track of the residual vector. However this estimate tends to
-    // drift over time due to round off errors. Thus every
-    // residual_reset_period iterations, we calculate the residual as
-    // r = b - Ax. We do not do this every iteration because this
-    // requires an additional matrix vector multiply which would
-    // double the complexity of the CG algorithm.
-    if (summary.num_iterations % options.residual_reset_period == 0) {
-      SetZero(tmp, options.context, options.num_threads);
-      lhs.RightMultiplyAndAccumulate(solution, tmp);
-      Axpby(1.0, rhs, -1.0, tmp, r, options.context, options.num_threads);
-      // r = rhs - tmp;
-    } else {
-      Axpby(1.0, r, -alpha, q, r, options.context, options.num_threads);
-      // r = r - alpha * q;
-    }
-
-    // Quadratic model based termination.
-    //   Q1 = x'Ax - 2 * b' x.
-    // const double Q1 = -1.0 * solution.dot(rhs + r);
-    Axpby(1.0, rhs, 1.0, r, tmp, options.context, options.num_threads);
-    const double Q1 = -Dot(solution, tmp, options.context, options.num_threads);
-
-    // For PSD matrices A, let
-    //
-    //   Q(x) = x'Ax - 2b'x
-    //
-    // be the cost of the quadratic function defined by A and b. Then,
-    // the solver terminates at iteration i if
-    //
-    //   i * (Q(x_i) - Q(x_i-1)) / Q(x_i) < q_tolerance.
-    //
-    // This termination criterion is more useful when using CG to
-    // solve the Newton step. This particular convergence test comes
-    // from Stephen Nash's work on truncated Newton
-    // methods. References:
-    //
-    //   1. Stephen G. Nash & Ariela Sofer, Assessing A Search
-    //   Direction Within A Truncated Newton Method, Operation
-    //   Research Letters 9(1990) 219-221.
-    //
-    //   2. Stephen G. Nash, A Survey of Truncated Newton Methods,
-    //   Journal of Computational and Applied Mathematics,
-    //   124(1-2), 45-59, 2000.
-    //
-    const double zeta = summary.num_iterations * (Q1 - Q0) / Q1;
-    if (zeta < options.q_tolerance &&
-        summary.num_iterations >= options.min_num_iterations) {
-      summary.termination_type = LinearSolverTerminationType::SUCCESS;
-      summary.message =
-          StringPrintf("Iteration: %d Convergence: zeta = %e < %e. |r| = %e",
-                       summary.num_iterations,
-                       zeta,
-                       options.q_tolerance,
-                       Norm(r, options.context, options.num_threads));
-      break;
-    }
-    Q0 = Q1;
-
-    // Residual based termination.
-    norm_r = Norm(r, options.context, options.num_threads);
-    if (norm_r <= tol_r &&
-        summary.num_iterations >= options.min_num_iterations) {
-      summary.termination_type = LinearSolverTerminationType::SUCCESS;
-      summary.message =
-          StringPrintf("Iteration: %d Convergence. |r| = %e <= %e.",
-                       summary.num_iterations,
-                       norm_r,
-                       tol_r);
-      break;
-    }
-
-    if (summary.num_iterations >= options.max_num_iterations) {
-      break;
-    }
-  }
-
-  return summary;
-}
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_CONJUGATE_GRADIENTS_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/conjugate_gradients_solver_test.cc b/third_party/ceres/internal/ceres/conjugate_gradients_solver_test.cc
deleted file mode 100644
index 4727564..0000000
--- a/third_party/ceres/internal/ceres/conjugate_gradients_solver_test.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: fredp@google.com (Fred Pighin)
-//
-// TODO(sameeragarwal): More comprehensive testing with larger and
-// more badly conditioned problem.
-
-#include "ceres/conjugate_gradients_solver.h"
-
-#include <memory>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/preconditioner.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(ConjugateGradientTest, Solves3x3IdentitySystem) {
-  double diagonal[] = {1.0, 1.0, 1.0};
-  std::unique_ptr<TripletSparseMatrix> A(
-      TripletSparseMatrix::CreateSparseDiagonalMatrix(diagonal, 3));
-  Vector b(3);
-  Vector x(3);
-
-  b(0) = 1.0;
-  b(1) = 2.0;
-  b(2) = 3.0;
-
-  x(0) = 1;
-  x(1) = 1;
-  x(2) = 1;
-
-  ConjugateGradientsSolverOptions cg_options;
-  cg_options.min_num_iterations = 1;
-  cg_options.max_num_iterations = 10;
-  cg_options.residual_reset_period = 20;
-  cg_options.q_tolerance = 0.0;
-  cg_options.r_tolerance = 1e-9;
-
-  Vector scratch[4];
-  for (int i = 0; i < 4; ++i) {
-    scratch[i] = Vector::Zero(A->num_cols());
-  }
-
-  IdentityPreconditioner identity(A->num_cols());
-  LinearOperatorAdapter lhs(*A);
-  LinearOperatorAdapter preconditioner(identity);
-  Vector* scratch_array[4] = {
-      &scratch[0], &scratch[1], &scratch[2], &scratch[3]};
-  auto summary = ConjugateGradientsSolver(
-      cg_options, lhs, b, preconditioner, scratch_array, x);
-
-  EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-  ASSERT_EQ(summary.num_iterations, 1);
-
-  ASSERT_DOUBLE_EQ(1, x(0));
-  ASSERT_DOUBLE_EQ(2, x(1));
-  ASSERT_DOUBLE_EQ(3, x(2));
-}
-
-TEST(ConjuateGradientTest, Solves3x3SymmetricSystem) {
-  std::unique_ptr<TripletSparseMatrix> A(new TripletSparseMatrix(3, 3, 9));
-  Vector b(3);
-  Vector x(3);
-
-  //      | 2  -1  0|
-  //  A = |-1   2 -1| is symmetric positive definite.
-  //      | 0  -1  2|
-  int* Ai = A->mutable_rows();
-  int* Aj = A->mutable_cols();
-  double* Ax = A->mutable_values();
-  int counter = 0;
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      Ai[counter] = i;
-      Aj[counter] = j;
-      ++counter;
-    }
-  }
-  Ax[0] = 2.;
-  Ax[1] = -1.;
-  Ax[2] = 0;
-  Ax[3] = -1.;
-  Ax[4] = 2;
-  Ax[5] = -1;
-  Ax[6] = 0;
-  Ax[7] = -1;
-  Ax[8] = 2;
-  A->set_num_nonzeros(9);
-
-  b(0) = -1;
-  b(1) = 0;
-  b(2) = 3;
-
-  x(0) = 1;
-  x(1) = 1;
-  x(2) = 1;
-
-  ConjugateGradientsSolverOptions cg_options;
-  cg_options.min_num_iterations = 1;
-  cg_options.max_num_iterations = 10;
-  cg_options.residual_reset_period = 20;
-  cg_options.q_tolerance = 0.0;
-  cg_options.r_tolerance = 1e-9;
-
-  Vector scratch[4];
-  for (int i = 0; i < 4; ++i) {
-    scratch[i] = Vector::Zero(A->num_cols());
-  }
-  Vector* scratch_array[4] = {
-      &scratch[0], &scratch[1], &scratch[2], &scratch[3]};
-  IdentityPreconditioner identity(A->num_cols());
-  LinearOperatorAdapter lhs(*A);
-  LinearOperatorAdapter preconditioner(identity);
-
-  auto summary = ConjugateGradientsSolver(
-      cg_options, lhs, b, preconditioner, scratch_array, x);
-
-  EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-
-  ASSERT_DOUBLE_EQ(0, x(0));
-  ASSERT_DOUBLE_EQ(1, x(1));
-  ASSERT_DOUBLE_EQ(2, x(2));
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/context.cc b/third_party/ceres/internal/ceres/context.cc
deleted file mode 100644
index e5d85f6..0000000
--- a/third_party/ceres/internal/ceres/context.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/context.h"
-
-#include "ceres/context_impl.h"
-
-namespace ceres {
-
-Context::Context() = default;
-Context* Context::Create() { return new internal::ContextImpl(); }
-Context::~Context() = default;
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/context_impl.cc b/third_party/ceres/internal/ceres/context_impl.cc
deleted file mode 100644
index 2b9d9cc..0000000
--- a/third_party/ceres/internal/ceres/context_impl.cc
+++ /dev/null
@@ -1,196 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/context_impl.h"
-
-#include <string>
-
-#include "ceres/internal/config.h"
-#include "ceres/stringprintf.h"
-#include "ceres/wall_time.h"
-
-#ifndef CERES_NO_CUDA
-#include "cublas_v2.h"
-#include "cuda_runtime.h"
-#include "cusolverDn.h"
-#endif  // CERES_NO_CUDA
-
-namespace ceres::internal {
-
-ContextImpl::ContextImpl() = default;
-
-#ifndef CERES_NO_CUDA
-void ContextImpl::TearDown() {
-  if (cusolver_handle_ != nullptr) {
-    cusolverDnDestroy(cusolver_handle_);
-    cusolver_handle_ = nullptr;
-  }
-  if (cublas_handle_ != nullptr) {
-    cublasDestroy(cublas_handle_);
-    cublas_handle_ = nullptr;
-  }
-  if (cusparse_handle_ != nullptr) {
-    cusparseDestroy(cusparse_handle_);
-    cusparse_handle_ = nullptr;
-  }
-  for (auto& s : streams_) {
-    if (s != nullptr) {
-      cudaStreamDestroy(s);
-      s = nullptr;
-    }
-  }
-  is_cuda_initialized_ = false;
-}
-
-std::string ContextImpl::CudaConfigAsString() const {
-  return ceres::internal::StringPrintf(
-      "======================= CUDA Device Properties ======================\n"
-      "Cuda version              : %d.%d\n"
-      "Device ID                 : %d\n"
-      "Device name               : %s\n"
-      "Total GPU memory          : %6.f MiB\n"
-      "GPU memory available      : %6.f MiB\n"
-      "Compute capability        : %d.%d\n"
-      "Warp size                 : %d\n"
-      "Max threads per block     : %d\n"
-      "Max threads per dim       : %d %d %d\n"
-      "Max grid size             : %d %d %d\n"
-      "Multiprocessor count      : %d\n"
-      "cudaMallocAsync supported : %s\n"
-      "====================================================================",
-      cuda_version_major_,
-      cuda_version_minor_,
-      gpu_device_id_in_use_,
-      gpu_device_properties_.name,
-      gpu_device_properties_.totalGlobalMem / 1024.0 / 1024.0,
-      GpuMemoryAvailable() / 1024.0 / 1024.0,
-      gpu_device_properties_.major,
-      gpu_device_properties_.minor,
-      gpu_device_properties_.warpSize,
-      gpu_device_properties_.maxThreadsPerBlock,
-      gpu_device_properties_.maxThreadsDim[0],
-      gpu_device_properties_.maxThreadsDim[1],
-      gpu_device_properties_.maxThreadsDim[2],
-      gpu_device_properties_.maxGridSize[0],
-      gpu_device_properties_.maxGridSize[1],
-      gpu_device_properties_.maxGridSize[2],
-      gpu_device_properties_.multiProcessorCount,
-      // In CUDA 12.0.0+ cudaDeviceProp has field memoryPoolsSupported, but it
-      // is not available in older versions
-      is_cuda_memory_pools_supported_ ? "Yes" : "No");
-}
-
-size_t ContextImpl::GpuMemoryAvailable() const {
-  size_t free, total;
-  cudaMemGetInfo(&free, &total);
-  return free;
-}
-
-bool ContextImpl::InitCuda(std::string* message) {
-  if (is_cuda_initialized_) {
-    return true;
-  }
-  CHECK_EQ(cudaGetDevice(&gpu_device_id_in_use_), cudaSuccess);
-  int cuda_version;
-  CHECK_EQ(cudaRuntimeGetVersion(&cuda_version), cudaSuccess);
-  cuda_version_major_ = cuda_version / 1000;
-  cuda_version_minor_ = (cuda_version % 1000) / 10;
-  CHECK_EQ(
-      cudaGetDeviceProperties(&gpu_device_properties_, gpu_device_id_in_use_),
-      cudaSuccess);
-#if CUDART_VERSION >= 11020
-  int is_cuda_memory_pools_supported;
-  CHECK_EQ(cudaDeviceGetAttribute(&is_cuda_memory_pools_supported,
-                                  cudaDevAttrMemoryPoolsSupported,
-                                  gpu_device_id_in_use_),
-           cudaSuccess);
-  is_cuda_memory_pools_supported_ = is_cuda_memory_pools_supported == 1;
-#endif
-  VLOG(3) << "\n" << CudaConfigAsString();
-  EventLogger event_logger("InitCuda");
-  if (cublasCreate(&cublas_handle_) != CUBLAS_STATUS_SUCCESS) {
-    *message =
-        "CUDA initialization failed because cuBLAS::cublasCreate failed.";
-    cublas_handle_ = nullptr;
-    return false;
-  }
-  event_logger.AddEvent("cublasCreate");
-  if (cusolverDnCreate(&cusolver_handle_) != CUSOLVER_STATUS_SUCCESS) {
-    *message =
-        "CUDA initialization failed because cuSolverDN::cusolverDnCreate "
-        "failed.";
-    TearDown();
-    return false;
-  }
-  event_logger.AddEvent("cusolverDnCreate");
-  if (cusparseCreate(&cusparse_handle_) != CUSPARSE_STATUS_SUCCESS) {
-    *message =
-        "CUDA initialization failed because cuSPARSE::cusparseCreate failed.";
-    TearDown();
-    return false;
-  }
-  event_logger.AddEvent("cusparseCreate");
-  for (auto& s : streams_) {
-    if (cudaStreamCreateWithFlags(&s, cudaStreamNonBlocking) != cudaSuccess) {
-      *message =
-          "CUDA initialization failed because CUDA::cudaStreamCreateWithFlags "
-          "failed.";
-      TearDown();
-      return false;
-    }
-  }
-  event_logger.AddEvent("cudaStreamCreateWithFlags");
-  if (cusolverDnSetStream(cusolver_handle_, DefaultStream()) !=
-          CUSOLVER_STATUS_SUCCESS ||
-      cublasSetStream(cublas_handle_, DefaultStream()) !=
-          CUBLAS_STATUS_SUCCESS ||
-      cusparseSetStream(cusparse_handle_, DefaultStream()) !=
-          CUSPARSE_STATUS_SUCCESS) {
-    *message = "CUDA initialization failed because SetStream failed.";
-    TearDown();
-    return false;
-  }
-  event_logger.AddEvent("SetStream");
-  is_cuda_initialized_ = true;
-  return true;
-}
-#endif  // CERES_NO_CUDA
-
-ContextImpl::~ContextImpl() {
-#ifndef CERES_NO_CUDA
-  TearDown();
-#endif  // CERES_NO_CUDA
-}
-
-void ContextImpl::EnsureMinimumThreads(int num_threads) {
-  thread_pool.Resize(num_threads);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/context_impl.h b/third_party/ceres/internal/ceres/context_impl.h
deleted file mode 100644
index 46692e6..0000000
--- a/third_party/ceres/internal/ceres/context_impl.h
+++ /dev/null
@@ -1,147 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef CERES_INTERNAL_CONTEXT_IMPL_H_
-#define CERES_INTERNAL_CONTEXT_IMPL_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <string>
-
-#include "ceres/context.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-#ifndef CERES_NO_CUDA
-#include "cublas_v2.h"
-#include "cuda_runtime.h"
-#include "cusolverDn.h"
-#include "cusparse.h"
-#endif  // CERES_NO_CUDA
-
-#include "ceres/thread_pool.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT ContextImpl final : public Context {
- public:
-  ContextImpl();
-  ~ContextImpl() override;
-  ContextImpl(const ContextImpl&) = delete;
-  void operator=(const ContextImpl&) = delete;
-
-  // When compiled with C++ threading support, resize the thread pool to have
-  // at min(num_thread, num_hardware_threads) where num_hardware_threads is
-  // defined by the hardware.  Otherwise this call is a no-op.
-  void EnsureMinimumThreads(int num_threads);
-
-  ThreadPool thread_pool;
-
-#ifndef CERES_NO_CUDA
-  // Note on Ceres' use of CUDA Devices on multi-GPU systems:
-  // 1. On a multi-GPU system, if nothing special is done, the "default" CUDA
-  //    device will be used, which is device 0.
-  // 2. If the user masks out GPUs using the  CUDA_VISIBLE_DEVICES  environment
-  //    variable, Ceres will still use device 0 visible to the program, but
-  //    device 0 will be the first GPU indicated in the environment variable.
-  // 3. If the user explicitly selects a GPU in the host process before calling
-  //    Ceres, Ceres will use that GPU.
-
-  // Note on Ceres' use of CUDA Streams:
-  // Most of operations on the GPU are performed using a single stream.  In
-  // those cases DefaultStream() should be used. This ensures that operations
-  // are stream-ordered, and might be concurrent with cpu processing with no
-  // additional efforts.
-  //
-  // a. Single-stream workloads
-  //  - Only use default stream
-  //  - Return control to the callee without synchronization whenever possible
-  //  - Stream synchronization occurs only after GPU to CPU transfers, and is
-  //  handled by CudaBuffer
-  //
-  // b. Multi-stream workloads
-  // Multi-stream workloads are more restricted in order to make it harder to
-  // get a race-condition.
-  //  - Should always synchronize the default stream on entry
-  //  - Should always synchronize all utilized streams on exit
-  //  - Should not make any assumptions on one of streams_[] being default
-  //
-  // With those rules in place
-  //  - All single-stream asynchronous workloads are serialized using default
-  //  stream
-  //  - Multiple-stream workloads always wait single-stream workloads to finish
-  //  and leave no running computations on exit.
-  //  This slightly penalizes multi-stream workloads, but makes it easier to
-  //  avoid race conditions when  multiple-stream workload depends on results of
-  //  any preceeding gpu computations.
-
-  // Initializes cuBLAS, cuSOLVER, and cuSPARSE contexts, creates an
-  // asynchronous CUDA stream, and associates the stream with the contexts.
-  // Returns true iff initialization was successful, else it returns false and a
-  // human-readable error message is returned.
-  bool InitCuda(std::string* message);
-  void TearDown();
-  inline bool IsCudaInitialized() const { return is_cuda_initialized_; }
-  // Returns a human-readable string describing the capabilities of the current
-  // CUDA device. CudaConfigAsString can only be called after InitCuda has been
-  // called.
-  std::string CudaConfigAsString() const;
-  // Returns the number of bytes of available global memory on the current CUDA
-  // device. If it is called before InitCuda, it returns 0.
-  size_t GpuMemoryAvailable() const;
-
-  cusolverDnHandle_t cusolver_handle_ = nullptr;
-  cublasHandle_t cublas_handle_ = nullptr;
-
-  // Default stream.
-  // Kernel invocations and memory copies on this stream can be left without
-  // synchronization.
-  cudaStream_t DefaultStream() { return streams_[0]; }
-  static constexpr int kNumCudaStreams = 2;
-  cudaStream_t streams_[kNumCudaStreams] = {0};
-
-  cusparseHandle_t cusparse_handle_ = nullptr;
-  bool is_cuda_initialized_ = false;
-  int gpu_device_id_in_use_ = -1;
-  cudaDeviceProp gpu_device_properties_;
-  bool is_cuda_memory_pools_supported_ = false;
-  int cuda_version_major_ = 0;
-  int cuda_version_minor_ = 0;
-#endif  // CERES_NO_CUDA
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_CONTEXT_IMPL_H_
diff --git a/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc b/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc
deleted file mode 100644
index 53986ee..0000000
--- a/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc
+++ /dev/null
@@ -1,273 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/coordinate_descent_minimizer.h"
-
-#include <algorithm>
-#include <iterator>
-#include <map>
-#include <memory>
-#include <numeric>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "ceres/evaluator.h"
-#include "ceres/linear_solver.h"
-#include "ceres/minimizer.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parameter_block.h"
-#include "ceres/parameter_block_ordering.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/solver.h"
-#include "ceres/trust_region_minimizer.h"
-#include "ceres/trust_region_strategy.h"
-
-namespace ceres::internal {
-
-CoordinateDescentMinimizer::CoordinateDescentMinimizer(ContextImpl* context)
-    : context_(context) {
-  CHECK(context_ != nullptr);
-}
-
-CoordinateDescentMinimizer::~CoordinateDescentMinimizer() = default;
-
-bool CoordinateDescentMinimizer::Init(
-    const Program& program,
-    const ProblemImpl::ParameterMap& parameter_map,
-    const ParameterBlockOrdering& ordering,
-    std::string* /*error*/) {
-  parameter_blocks_.clear();
-  independent_set_offsets_.clear();
-  independent_set_offsets_.push_back(0);
-
-  // Serialize the OrderedGroups into a vector of parameter block
-  // offsets for parallel access.
-
-  // TODO(sameeragarwal): Investigate if parameter_block_index should be an
-  // ordered or an unordered container.
-  std::map<ParameterBlock*, int> parameter_block_index;
-  std::map<int, std::set<double*>> group_to_elements =
-      ordering.group_to_elements();
-  for (const auto& g_t_e : group_to_elements) {
-    const auto& elements = g_t_e.second;
-    for (double* parameter_block : elements) {
-      parameter_blocks_.push_back(parameter_map.find(parameter_block)->second);
-      parameter_block_index[parameter_blocks_.back()] =
-          parameter_blocks_.size() - 1;
-    }
-    independent_set_offsets_.push_back(independent_set_offsets_.back() +
-                                       elements.size());
-  }
-
-  // The ordering does not have to contain all parameter blocks, so
-  // assign zero offsets/empty independent sets to these parameter
-  // blocks.
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-  for (auto* parameter_block : parameter_blocks) {
-    if (!ordering.IsMember(parameter_block->mutable_user_state())) {
-      parameter_blocks_.push_back(parameter_block);
-      independent_set_offsets_.push_back(independent_set_offsets_.back());
-    }
-  }
-
-  // Compute the set of residual blocks that depend on each parameter
-  // block.
-  residual_blocks_.resize(parameter_block_index.size());
-  const std::vector<ResidualBlock*>& residual_blocks =
-      program.residual_blocks();
-  for (auto* residual_block : residual_blocks) {
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[j];
-      const auto it = parameter_block_index.find(parameter_block);
-      if (it != parameter_block_index.end()) {
-        residual_blocks_[it->second].push_back(residual_block);
-      }
-    }
-  }
-
-  evaluator_options_.linear_solver_type = DENSE_QR;
-  evaluator_options_.num_eliminate_blocks = 0;
-  evaluator_options_.num_threads = 1;
-  evaluator_options_.context = context_;
-
-  return true;
-}
-
-void CoordinateDescentMinimizer::Minimize(const Minimizer::Options& options,
-                                          double* parameters,
-                                          Solver::Summary* /*summary*/) {
-  // Set the state and mark all parameter blocks constant.
-  for (auto* parameter_block : parameter_blocks_) {
-    parameter_block->SetState(parameters + parameter_block->state_offset());
-    parameter_block->SetConstant();
-  }
-
-  std::vector<std::unique_ptr<LinearSolver>> linear_solvers(
-      options.num_threads);
-
-  LinearSolver::Options linear_solver_options;
-  linear_solver_options.type = DENSE_QR;
-  linear_solver_options.context = context_;
-
-  for (int i = 0; i < options.num_threads; ++i) {
-    linear_solvers[i] = LinearSolver::Create(linear_solver_options);
-  }
-
-  for (int i = 0; i < independent_set_offsets_.size() - 1; ++i) {
-    const int num_problems =
-        independent_set_offsets_[i + 1] - independent_set_offsets_[i];
-    // Avoid parallelization overhead call if the set is empty.
-    if (num_problems == 0) {
-      continue;
-    }
-
-    const int num_inner_iteration_threads =
-        std::min(options.num_threads, num_problems);
-    evaluator_options_.num_threads =
-        std::max(1, options.num_threads / num_inner_iteration_threads);
-
-    // The parameter blocks in each independent set can be optimized
-    // in parallel, since they do not co-occur in any residual block.
-    ParallelFor(
-        context_,
-        independent_set_offsets_[i],
-        independent_set_offsets_[i + 1],
-        num_inner_iteration_threads,
-        [&](int thread_id, int j) {
-          ParameterBlock* parameter_block = parameter_blocks_[j];
-          const int old_index = parameter_block->index();
-          const int old_delta_offset = parameter_block->delta_offset();
-          const int old_state_offset = parameter_block->state_offset();
-          parameter_block->SetVarying();
-          parameter_block->set_index(0);
-          parameter_block->set_delta_offset(0);
-          parameter_block->set_state_offset(0);
-
-          Program inner_program;
-          inner_program.mutable_parameter_blocks()->push_back(parameter_block);
-          *inner_program.mutable_residual_blocks() = residual_blocks_[j];
-
-          // TODO(sameeragarwal): Better error handling. Right now we
-          // assume that this is not going to lead to problems of any
-          // sort. Basically we should be checking for numerical failure
-          // of some sort.
-          //
-          // On the other hand, if the optimization is a failure, that in
-          // some ways is fine, since it won't change the parameters and
-          // we are fine.
-          Solver::Summary inner_summary;
-          Solve(&inner_program,
-                linear_solvers[thread_id].get(),
-                parameters + old_state_offset,
-                &inner_summary);
-
-          parameter_block->set_index(old_index);
-          parameter_block->set_delta_offset(old_delta_offset);
-          parameter_block->set_state_offset(old_state_offset);
-          parameter_block->SetState(parameters +
-                                    parameter_block->state_offset());
-          parameter_block->SetConstant();
-        });
-  }
-
-  for (auto* parameter_block : parameter_blocks_) {
-    parameter_block->SetVarying();
-  }
-}
-
-// Solve the optimization problem for one parameter block.
-void CoordinateDescentMinimizer::Solve(Program* program,
-                                       LinearSolver* linear_solver,
-                                       double* parameter,
-                                       Solver::Summary* summary) {
-  *summary = Solver::Summary();
-  summary->initial_cost = 0.0;
-  summary->fixed_cost = 0.0;
-  summary->final_cost = 0.0;
-  std::string error;
-
-  Minimizer::Options minimizer_options;
-  minimizer_options.evaluator =
-      Evaluator::Create(evaluator_options_, program, &error);
-  CHECK(minimizer_options.evaluator != nullptr);
-  minimizer_options.jacobian = minimizer_options.evaluator->CreateJacobian();
-  CHECK(minimizer_options.jacobian != nullptr);
-
-  TrustRegionStrategy::Options trs_options;
-  trs_options.linear_solver = linear_solver;
-  minimizer_options.trust_region_strategy =
-      TrustRegionStrategy::Create(trs_options);
-  CHECK(minimizer_options.trust_region_strategy != nullptr);
-  minimizer_options.is_silent = true;
-
-  TrustRegionMinimizer minimizer;
-  minimizer.Minimize(minimizer_options, parameter, summary);
-}
-
-bool CoordinateDescentMinimizer::IsOrderingValid(
-    const Program& program,
-    const ParameterBlockOrdering& ordering,
-    std::string* message) {
-  // TODO(sameeragarwal): Investigate if this should be an ordered or an
-  // unordered group.
-  const std::map<int, std::set<double*>>& group_to_elements =
-      ordering.group_to_elements();
-
-  // Verify that each group is an independent set
-  for (const auto& g_t_e : group_to_elements) {
-    if (!program.IsParameterBlockSetIndependent(g_t_e.second)) {
-      *message = StringPrintf(
-          "The user-provided parameter_blocks_for_inner_iterations does not "
-          "form an independent set. Group Id: %d",
-          g_t_e.first);
-      return false;
-    }
-  }
-  return true;
-}
-
-// Find a recursive decomposition of the Hessian matrix as a set
-// of independent sets of decreasing size and invert it. This
-// seems to work better in practice, i.e., Cameras before
-// points.
-std::shared_ptr<ParameterBlockOrdering>
-CoordinateDescentMinimizer::CreateOrdering(const Program& program) {
-  auto ordering = std::make_shared<ParameterBlockOrdering>();
-  ComputeRecursiveIndependentSetOrdering(program, ordering.get());
-  ordering->Reverse();
-  return ordering;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/coordinate_descent_minimizer.h b/third_party/ceres/internal/ceres/coordinate_descent_minimizer.h
deleted file mode 100644
index 8fc5dd7..0000000
--- a/third_party/ceres/internal/ceres/coordinate_descent_minimizer.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_COORDINATE_DESCENT_MINIMIZER_H_
-#define CERES_INTERNAL_COORDINATE_DESCENT_MINIMIZER_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/evaluator.h"
-#include "ceres/minimizer.h"
-#include "ceres/problem_impl.h"
-#include "ceres/solver.h"
-
-namespace ceres::internal {
-
-class Program;
-class LinearSolver;
-
-// Given a Program, and a ParameterBlockOrdering which partitions
-// (non-exhaustively) the Hessian matrix into independent sets,
-// perform coordinate descent on the parameter blocks in the
-// ordering. The independent set structure allows for all parameter
-// blocks in the same independent set to be optimized in parallel, and
-// the order of the independent set determines the order in which the
-// parameter block groups are optimized.
-//
-// The minimizer assumes that none of the parameter blocks in the
-// program are constant.
-class CERES_NO_EXPORT CoordinateDescentMinimizer final : public Minimizer {
- public:
-  explicit CoordinateDescentMinimizer(ContextImpl* context);
-
-  bool Init(const Program& program,
-            const ProblemImpl::ParameterMap& parameter_map,
-            const ParameterBlockOrdering& ordering,
-            std::string* error);
-
-  // Minimizer interface.
-  ~CoordinateDescentMinimizer() override;
-
-  void Minimize(const Minimizer::Options& options,
-                double* parameters,
-                Solver::Summary* summary) final;
-
-  // Verify that each group in the ordering forms an independent set.
-  static bool IsOrderingValid(const Program& program,
-                              const ParameterBlockOrdering& ordering,
-                              std::string* message);
-
-  // Find a recursive decomposition of the Hessian matrix as a set
-  // of independent sets of decreasing size and invert it. This
-  // seems to work better in practice, i.e., Cameras before
-  // points.
-  static std::shared_ptr<ParameterBlockOrdering> CreateOrdering(
-      const Program& program);
-
- private:
-  void Solve(Program* program,
-             LinearSolver* linear_solver,
-             double* parameters,
-             Solver::Summary* summary);
-
-  std::vector<ParameterBlock*> parameter_blocks_;
-  std::vector<std::vector<ResidualBlock*>> residual_blocks_;
-  // The optimization is performed in rounds. In each round all the
-  // parameter blocks that form one independent set are optimized in
-  // parallel. This array, marks the boundaries of the independent
-  // sets in parameter_blocks_.
-  std::vector<int> independent_set_offsets_;
-
-  Evaluator::Options evaluator_options_;
-
-  ContextImpl* context_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_COORDINATE_DESCENT_MINIMIZER_H_
diff --git a/third_party/ceres/internal/ceres/corrector.cc b/third_party/ceres/internal/ceres/corrector.cc
deleted file mode 100644
index d9b80cd..0000000
--- a/third_party/ceres/internal/ceres/corrector.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/corrector.h"
-
-#include <cmath>
-#include <cstddef>
-
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-Corrector::Corrector(const double sq_norm, const double rho[3]) {
-  CHECK_GE(sq_norm, 0.0);
-  sqrt_rho1_ = sqrt(rho[1]);
-
-  // If sq_norm = 0.0, the correction becomes trivial, the residual
-  // and the jacobian are scaled by the square root of the derivative
-  // of rho. Handling this case explicitly avoids the divide by zero
-  // error that would occur below.
-  //
-  // The case where rho'' < 0 also gets special handling. Technically
-  // it shouldn't, and the computation of the scaling should proceed
-  // as below, however we found in experiments that applying the
-  // curvature correction when rho'' < 0, which is the case when we
-  // are in the outlier region slows down the convergence of the
-  // algorithm significantly.
-  //
-  // Thus, we have divided the action of the robustifier into two
-  // parts. In the inliner region, we do the full second order
-  // correction which re-wights the gradient of the function by the
-  // square root of the derivative of rho, and the Gauss-Newton
-  // Hessian gets both the scaling and the rank-1 curvature
-  // correction. Normally, alpha is upper bounded by one, but with this
-  // change, alpha is bounded above by zero.
-  //
-  // Empirically we have observed that the full Triggs correction and
-  // the clamped correction both start out as very good approximations
-  // to the loss function when we are in the convex part of the
-  // function, but as the function starts transitioning from convex to
-  // concave, the Triggs approximation diverges more and more and
-  // ultimately becomes linear. The clamped Triggs model however
-  // remains quadratic.
-  //
-  // The reason why the Triggs approximation becomes so poor is
-  // because the curvature correction that it applies to the gauss
-  // newton hessian goes from being a full rank correction to a rank
-  // deficient correction making the inversion of the Hessian fraught
-  // with all sorts of misery and suffering.
-  //
-  // The clamped correction retains its quadratic nature and inverting it
-  // is always well formed.
-  if ((sq_norm == 0.0) || (rho[2] <= 0.0)) {
-    residual_scaling_ = sqrt_rho1_;
-    alpha_sq_norm_ = 0.0;
-    return;
-  }
-
-  // We now require that the first derivative of the loss function be
-  // positive only if the second derivative is positive. This is
-  // because when the second derivative is non-positive, we do not use
-  // the second order correction suggested by BAMS and instead use a
-  // simpler first order strategy which does not use a division by the
-  // gradient of the loss function.
-  CHECK_GT(rho[1], 0.0);
-
-  // Calculate the smaller of the two solutions to the equation
-  //
-  // 0.5 *  alpha^2 - alpha - rho'' / rho' *  z'z = 0.
-  //
-  // Start by calculating the discriminant D.
-  const double D = 1.0 + 2.0 * sq_norm * rho[2] / rho[1];
-
-  // Since both rho[1] and rho[2] are guaranteed to be positive at
-  // this point, we know that D > 1.0.
-
-  const double alpha = 1.0 - sqrt(D);
-
-  // Calculate the constants needed by the correction routines.
-  residual_scaling_ = sqrt_rho1_ / (1 - alpha);
-  alpha_sq_norm_ = alpha / sq_norm;
-}
-
-void Corrector::CorrectResiduals(const int num_rows, double* residuals) {
-  DCHECK(residuals != nullptr);
-  // Equation 11 in BAMS.
-  VectorRef(residuals, num_rows) *= residual_scaling_;
-}
-
-void Corrector::CorrectJacobian(const int num_rows,
-                                const int num_cols,
-                                double* residuals,
-                                double* jacobian) {
-  DCHECK(residuals != nullptr);
-  DCHECK(jacobian != nullptr);
-
-  // The common case (rho[2] <= 0).
-  if (alpha_sq_norm_ == 0.0) {
-    VectorRef(jacobian, num_rows * num_cols) *= sqrt_rho1_;
-    return;
-  }
-
-  // Equation 11 in BAMS.
-  //
-  //  J = sqrt(rho) * (J - alpha^2 r * r' J)
-  //
-  // In days gone by this loop used to be a single Eigen expression of
-  // the form
-  //
-  //  J = sqrt_rho1_ * (J - alpha_sq_norm_ * r* (r.transpose() * J));
-  //
-  // Which turns out to about 17x slower on bal problems. The reason
-  // is that Eigen is unable to figure out that this expression can be
-  // evaluated columnwise and ends up creating a temporary.
-  for (int c = 0; c < num_cols; ++c) {
-    double r_transpose_j = 0.0;
-    for (int r = 0; r < num_rows; ++r) {
-      r_transpose_j += jacobian[r * num_cols + c] * residuals[r];
-    }
-
-    for (int r = 0; r < num_rows; ++r) {
-      jacobian[r * num_cols + c] =
-          sqrt_rho1_ * (jacobian[r * num_cols + c] -
-                        alpha_sq_norm_ * residuals[r] * r_transpose_j);
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/corrector.h b/third_party/ceres/internal/ceres/corrector.h
deleted file mode 100644
index 2216a96..0000000
--- a/third_party/ceres/internal/ceres/corrector.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Class definition for the object that is responsible for applying a
-// second order correction to the Gauss-Newton based on the ideas in
-// BAMS by Triggs et al.
-
-#ifndef CERES_INTERNAL_CORRECTOR_H_
-#define CERES_INTERNAL_CORRECTOR_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Corrector is responsible for applying the second order correction
-// to the residual and jacobian of a least squares problem based on a
-// radial robust loss.
-//
-// The key idea here is to look at the expressions for the robustified
-// gauss newton approximation and then take its square root to get the
-// corresponding corrections to the residual and jacobian.  For the
-// full expressions see Eq. 10 and 11 in BAMS by Triggs et al.
-class CERES_NO_EXPORT Corrector {
- public:
-  // The constructor takes the squared norm, the value, the first and
-  // second derivatives of the LossFunction. It precalculates some of
-  // the constants that are needed to apply the correction. The
-  // correction constant alpha is constrained to be smaller than 1, if
-  // it becomes larger than 1, then it will reverse the sign of the
-  // residual and the correction. If alpha is equal to 1 will result
-  // in a divide by zero error. Thus we constrain alpha to be upper
-  // bounded by 1 - epsilon_.
-  //
-  // rho[1] needs to be positive. The constructor will crash if this
-  // condition is not met.
-  //
-  // In practical use CorrectJacobian should always be called before
-  // CorrectResidual, because the jacobian correction depends on the
-  // value of the uncorrected residual values.
-  explicit Corrector(double sq_norm, const double rho[3]);
-
-  // residuals *= sqrt(rho[1]) / (1 - alpha)
-  void CorrectResiduals(int num_rows, double* residuals);
-
-  // jacobian = sqrt(rho[1]) * jacobian -
-  // sqrt(rho[1]) * alpha / sq_norm * residuals residuals' * jacobian.
-  //
-  // The method assumes that the jacobian has row-major storage. It is
-  // the caller's responsibility to ensure that the pointer to
-  // jacobian is not null.
-  void CorrectJacobian(int num_rows,
-                       int num_cols,
-                       double* residuals,
-                       double* jacobian);
-
- private:
-  double sqrt_rho1_;
-  double residual_scaling_;
-  double alpha_sq_norm_;
-};
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_CORRECTOR_H_
diff --git a/third_party/ceres/internal/ceres/corrector_test.cc b/third_party/ceres/internal/ceres/corrector_test.cc
deleted file mode 100644
index 0548336..0000000
--- a/third_party/ceres/internal/ceres/corrector_test.cc
+++ /dev/null
@@ -1,271 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/corrector.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstring>
-#include <random>
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// If rho[1] is zero, the Corrector constructor should crash.
-TEST(Corrector, ZeroGradientDeathTest) {
-  const double kRho[] = {0.0, 0.0, 1.0};
-  EXPECT_DEATH_IF_SUPPORTED({ Corrector c(1.0, kRho); }, ".*");
-}
-
-// If rho[1] is negative, the Corrector constructor should crash.
-TEST(Corrector, NegativeGradientDeathTest) {
-  const double kRho[] = {0.0, -0.1, 1.0};
-  EXPECT_DEATH_IF_SUPPORTED({ Corrector c(1.0, kRho); }, ".*");
-}
-
-TEST(Corrector, ScalarCorrection) {
-  double residuals = sqrt(3.0);
-  double jacobian = 10.0;
-  double sq_norm = residuals * residuals;
-
-  const double kRho[] = {sq_norm, 0.1, -0.01};
-
-  // In light of the rho'' < 0 clamping now implemented in
-  // corrector.cc, alpha = 0 whenever rho'' < 0.
-  const double kAlpha = 0.0;
-
-  // Thus the expected value of the residual is
-  // residual[i] * sqrt(kRho[1]) / (1.0 - kAlpha).
-  const double kExpectedResidual = residuals * sqrt(kRho[1]) / (1 - kAlpha);
-
-  // The jacobian in this case will be
-  // sqrt(kRho[1]) * (1 - kAlpha) * jacobian.
-  const double kExpectedJacobian = sqrt(kRho[1]) * (1 - kAlpha) * jacobian;
-
-  Corrector c(sq_norm, kRho);
-  c.CorrectJacobian(1.0, 1.0, &residuals, &jacobian);
-  c.CorrectResiduals(1.0, &residuals);
-
-  ASSERT_NEAR(residuals, kExpectedResidual, 1e-6);
-  ASSERT_NEAR(kExpectedJacobian, jacobian, 1e-6);
-}
-
-TEST(Corrector, ScalarCorrectionZeroResidual) {
-  double residuals = 0.0;
-  double jacobian = 10.0;
-  double sq_norm = residuals * residuals;
-
-  const double kRho[] = {0.0, 0.1, -0.01};
-  Corrector c(sq_norm, kRho);
-
-  // The alpha equation is
-  // 1/2 alpha^2 - alpha + 0.0 = 0.
-  // i.e. alpha = 1.0 - sqrt(1.0).
-  //      alpha = 0.0.
-  // Thus the expected value of the residual is
-  // residual[i] * sqrt(kRho[1])
-  const double kExpectedResidual = residuals * sqrt(kRho[1]);
-
-  // The jacobian in this case will be
-  // sqrt(kRho[1]) * jacobian.
-  const double kExpectedJacobian = sqrt(kRho[1]) * jacobian;
-
-  c.CorrectJacobian(1, 1, &residuals, &jacobian);
-  c.CorrectResiduals(1, &residuals);
-
-  ASSERT_NEAR(residuals, kExpectedResidual, 1e-6);
-  ASSERT_NEAR(kExpectedJacobian, jacobian, 1e-6);
-}
-
-// Scaling behaviour for one dimensional functions.
-TEST(Corrector, ScalarCorrectionAlphaClamped) {
-  double residuals = sqrt(3.0);
-  double jacobian = 10.0;
-  double sq_norm = residuals * residuals;
-
-  const double kRho[] = {3, 0.1, -0.1};
-
-  // rho[2] < 0 -> alpha = 0.0
-  const double kAlpha = 0.0;
-
-  // Thus the expected value of the residual is
-  // residual[i] * sqrt(kRho[1]) / (1.0 - kAlpha).
-  const double kExpectedResidual = residuals * sqrt(kRho[1]) / (1.0 - kAlpha);
-
-  // The jacobian in this case will be scaled by
-  // sqrt(rho[1]) * (1 - alpha) * J.
-  const double kExpectedJacobian = sqrt(kRho[1]) * (1.0 - kAlpha) * jacobian;
-
-  Corrector c(sq_norm, kRho);
-  c.CorrectJacobian(1, 1, &residuals, &jacobian);
-  c.CorrectResiduals(1, &residuals);
-
-  ASSERT_NEAR(residuals, kExpectedResidual, 1e-6);
-  ASSERT_NEAR(kExpectedJacobian, jacobian, 1e-6);
-}
-
-// Test that the corrected multidimensional residual and jacobians
-// match the expected values and the resulting modified normal
-// equations match the robustified gauss newton approximation.
-TEST(Corrector, MultidimensionalGaussNewtonApproximation) {
-  double residuals[3];
-  double jacobian[2 * 3];
-  double rho[3];
-
-  // Eigen matrix references for linear algebra.
-  MatrixRef jac(jacobian, 3, 2);
-  VectorRef res(residuals, 3);
-
-  // Ground truth values of the modified jacobian and residuals.
-  Matrix g_jac(3, 2);
-  Vector g_res(3);
-
-  // Ground truth values of the robustified Gauss-Newton
-  // approximation.
-  Matrix g_hess(2, 2);
-  Vector g_grad(2);
-
-  // Corrected hessian and gradient implied by the modified jacobian
-  // and hessians.
-  Matrix c_hess(2, 2);
-  Vector c_grad(2);
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-  for (int iter = 0; iter < 10000; ++iter) {
-    // Initialize the jacobian and residual.
-    for (double& jacobian_entry : jacobian) jacobian_entry = uniform01(prng);
-    for (double& residual : residuals) residual = uniform01(prng);
-
-    const double sq_norm = res.dot(res);
-
-    rho[0] = sq_norm;
-    rho[1] = uniform01(prng);
-    rho[2] = uniform01(
-        prng, std::uniform_real_distribution<double>::param_type(-1, 1));
-
-    // If rho[2] > 0, then the curvature correction to the correction
-    // and the gauss newton approximation will match. Otherwise, we
-    // will clamp alpha to 0.
-
-    const double kD = 1 + 2 * rho[2] / rho[1] * sq_norm;
-    const double kAlpha = (rho[2] > 0.0) ? 1 - sqrt(kD) : 0.0;
-
-    // Ground truth values.
-    g_res = sqrt(rho[1]) / (1.0 - kAlpha) * res;
-    g_jac =
-        sqrt(rho[1]) * (jac - kAlpha / sq_norm * res * res.transpose() * jac);
-
-    g_grad = rho[1] * jac.transpose() * res;
-    g_hess = rho[1] * jac.transpose() * jac +
-             2.0 * rho[2] * jac.transpose() * res * res.transpose() * jac;
-
-    Corrector c(sq_norm, rho);
-    c.CorrectJacobian(3, 2, residuals, jacobian);
-    c.CorrectResiduals(3, residuals);
-
-    // Corrected gradient and hessian.
-    c_grad = jac.transpose() * res;
-    c_hess = jac.transpose() * jac;
-
-    ASSERT_NEAR((g_res - res).norm(), 0.0, 1e-10);
-    ASSERT_NEAR((g_jac - jac).norm(), 0.0, 1e-10);
-
-    ASSERT_NEAR((g_grad - c_grad).norm(), 0.0, 1e-10);
-  }
-}
-
-TEST(Corrector, MultidimensionalGaussNewtonApproximationZeroResidual) {
-  double residuals[3];
-  double jacobian[2 * 3];
-  double rho[3];
-
-  // Eigen matrix references for linear algebra.
-  MatrixRef jac(jacobian, 3, 2);
-  VectorRef res(residuals, 3);
-
-  // Ground truth values of the modified jacobian and residuals.
-  Matrix g_jac(3, 2);
-  Vector g_res(3);
-
-  // Ground truth values of the robustified Gauss-Newton
-  // approximation.
-  Matrix g_hess(2, 2);
-  Vector g_grad(2);
-
-  // Corrected hessian and gradient implied by the modified jacobian
-  // and hessians.
-  Matrix c_hess(2, 2);
-  Vector c_grad(2);
-
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-  for (int iter = 0; iter < 10000; ++iter) {
-    // Initialize the jacobian.
-    for (double& jacobian_entry : jacobian) jacobian_entry = uniform01(prng);
-
-    // Zero residuals
-    res.setZero();
-
-    const double sq_norm = res.dot(res);
-
-    rho[0] = sq_norm;
-    rho[1] = uniform01(prng);
-    rho[2] = uniform01(
-        prng, std::uniform_real_distribution<double>::param_type(-1, 1));
-
-    // Ground truth values.
-    g_res = sqrt(rho[1]) * res;
-    g_jac = sqrt(rho[1]) * jac;
-
-    g_grad = rho[1] * jac.transpose() * res;
-    g_hess = rho[1] * jac.transpose() * jac +
-             2.0 * rho[2] * jac.transpose() * res * res.transpose() * jac;
-
-    Corrector c(sq_norm, rho);
-    c.CorrectJacobian(3, 2, residuals, jacobian);
-    c.CorrectResiduals(3, residuals);
-
-    // Corrected gradient and hessian.
-    c_grad = jac.transpose() * res;
-    c_hess = jac.transpose() * jac;
-
-    ASSERT_NEAR((g_res - res).norm(), 0.0, 1e-10);
-    ASSERT_NEAR((g_jac - jac).norm(), 0.0, 1e-10);
-
-    ASSERT_NEAR((g_grad - c_grad).norm(), 0.0, 1e-10);
-    ASSERT_NEAR((g_hess - c_hess).norm(), 0.0, 1e-10);
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cost_function.cc b/third_party/ceres/internal/ceres/cost_function.cc
deleted file mode 100644
index 543348f..0000000
--- a/third_party/ceres/internal/ceres/cost_function.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.m (Keir Mierle)
-
-#include "ceres/cost_function.h"
-
-namespace ceres {
-
-CostFunction::CostFunction(CostFunction&& other) noexcept = default;
-CostFunction& CostFunction::operator=(CostFunction&& other) noexcept = default;
-CostFunction::CostFunction() : num_residuals_(0) {}
-CostFunction::~CostFunction() = default;
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cost_function_to_functor_test.cc b/third_party/ceres/internal/ceres/cost_function_to_functor_test.cc
deleted file mode 100644
index bc081f4..0000000
--- a/third_party/ceres/internal/ceres/cost_function_to_functor_test.cc
+++ /dev/null
@@ -1,430 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/cost_function_to_functor.h"
-
-#include <cstdint>
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/dynamic_autodiff_cost_function.h"
-#include "ceres/dynamic_cost_function_to_functor.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-const double kTolerance = 1e-18;
-
-static void ExpectCostFunctionsAreEqual(
-    const CostFunction& cost_function,
-    const CostFunction& actual_cost_function) {
-  EXPECT_EQ(cost_function.num_residuals(),
-            actual_cost_function.num_residuals());
-  const int num_residuals = cost_function.num_residuals();
-  const std::vector<int32_t>& parameter_block_sizes =
-      cost_function.parameter_block_sizes();
-  const std::vector<int32_t>& actual_parameter_block_sizes =
-      actual_cost_function.parameter_block_sizes();
-  EXPECT_EQ(parameter_block_sizes.size(), actual_parameter_block_sizes.size());
-
-  int num_parameters = 0;
-  for (int i = 0; i < parameter_block_sizes.size(); ++i) {
-    EXPECT_EQ(parameter_block_sizes[i], actual_parameter_block_sizes[i]);
-    num_parameters += parameter_block_sizes[i];
-  }
-
-  std::unique_ptr<double[]> parameters(new double[num_parameters]);
-  for (int i = 0; i < num_parameters; ++i) {
-    parameters[i] = static_cast<double>(i) + 1.0;
-  }
-
-  std::unique_ptr<double[]> residuals(new double[num_residuals]);
-  std::unique_ptr<double[]> jacobians(
-      new double[num_parameters * num_residuals]);
-
-  std::unique_ptr<double[]> actual_residuals(new double[num_residuals]);
-  std::unique_ptr<double[]> actual_jacobians(
-      new double[num_parameters * num_residuals]);
-
-  std::unique_ptr<double*[]> parameter_blocks(
-      new double*[parameter_block_sizes.size()]);
-  std::unique_ptr<double*[]> jacobian_blocks(
-      new double*[parameter_block_sizes.size()]);
-  std::unique_ptr<double*[]> actual_jacobian_blocks(
-      new double*[parameter_block_sizes.size()]);
-
-  num_parameters = 0;
-  for (int i = 0; i < parameter_block_sizes.size(); ++i) {
-    parameter_blocks[i] = parameters.get() + num_parameters;
-    jacobian_blocks[i] = jacobians.get() + num_parameters * num_residuals;
-    actual_jacobian_blocks[i] =
-        actual_jacobians.get() + num_parameters * num_residuals;
-    num_parameters += parameter_block_sizes[i];
-  }
-
-  EXPECT_TRUE(
-      cost_function.Evaluate(parameter_blocks.get(), residuals.get(), nullptr));
-  EXPECT_TRUE(actual_cost_function.Evaluate(
-      parameter_blocks.get(), actual_residuals.get(), nullptr));
-  for (int i = 0; i < num_residuals; ++i) {
-    EXPECT_NEAR(residuals[i], actual_residuals[i], kTolerance)
-        << "residual id: " << i;
-  }
-
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.get(), residuals.get(), jacobian_blocks.get()));
-  EXPECT_TRUE(actual_cost_function.Evaluate(parameter_blocks.get(),
-                                            actual_residuals.get(),
-                                            actual_jacobian_blocks.get()));
-  for (int i = 0; i < num_residuals; ++i) {
-    EXPECT_NEAR(residuals[i], actual_residuals[i], kTolerance)
-        << "residual : " << i;
-  }
-
-  for (int i = 0; i < num_residuals * num_parameters; ++i) {
-    EXPECT_NEAR(jacobians[i], actual_jacobians[i], kTolerance)
-        << "jacobian : " << i << " " << jacobians[i] << " "
-        << actual_jacobians[i];
-  }
-}
-
-struct OneParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1, T* residuals) const {
-    residuals[0] = x1[0] * x1[0];
-    residuals[1] = x1[1] * x1[1];
-    return true;
-  }
-};
-
-struct TwoParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1, const T* x2, T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1];
-    return true;
-  }
-};
-
-struct ThreeParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1, const T* x2, const T* x3, T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1];
-    return true;
-  }
-};
-
-struct FourParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(
-      const T* x1, const T* x2, const T* x3, const T* x4, T* residuals) const {
-    residuals[0] =
-        x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] + x4[0] * x4[0];
-    residuals[1] =
-        x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] + x4[1] * x4[1];
-    return true;
-  }
-};
-
-struct FiveParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] +
-                   x4[0] * x4[0] + x5[0] * x5[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] +
-                   x4[1] * x4[1] + x5[1] * x5[1];
-    return true;
-  }
-};
-
-struct SixParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] +
-                   x4[0] * x4[0] + x5[0] * x5[0] + x6[0] * x6[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] +
-                   x4[1] * x4[1] + x5[1] * x5[1] + x6[1] * x6[1];
-    return true;
-  }
-};
-
-struct SevenParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] +
-                   x4[0] * x4[0] + x5[0] * x5[0] + x6[0] * x6[0] +
-                   x7[0] * x7[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] +
-                   x4[1] * x4[1] + x5[1] * x5[1] + x6[1] * x6[1] +
-                   x7[1] * x7[1];
-    return true;
-  }
-};
-
-struct EightParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  const T* x8,
-                  T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] +
-                   x4[0] * x4[0] + x5[0] * x5[0] + x6[0] * x6[0] +
-                   x7[0] * x7[0] + x8[0] * x8[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] +
-                   x4[1] * x4[1] + x5[1] * x5[1] + x6[1] * x6[1] +
-                   x7[1] * x7[1] + x8[1] * x8[1];
-    return true;
-  }
-};
-
-struct NineParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  const T* x8,
-                  const T* x9,
-                  T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] +
-                   x4[0] * x4[0] + x5[0] * x5[0] + x6[0] * x6[0] +
-                   x7[0] * x7[0] + x8[0] * x8[0] + x9[0] * x9[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] +
-                   x4[1] * x4[1] + x5[1] * x5[1] + x6[1] * x6[1] +
-                   x7[1] * x7[1] + x8[1] * x8[1] + x9[1] * x9[1];
-    return true;
-  }
-};
-
-struct TenParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(const T* x1,
-                  const T* x2,
-                  const T* x3,
-                  const T* x4,
-                  const T* x5,
-                  const T* x6,
-                  const T* x7,
-                  const T* x8,
-                  const T* x9,
-                  const T* x10,
-                  T* residuals) const {
-    residuals[0] = x1[0] * x1[0] + x2[0] * x2[0] + x3[0] * x3[0] +
-                   x4[0] * x4[0] + x5[0] * x5[0] + x6[0] * x6[0] +
-                   x7[0] * x7[0] + x8[0] * x8[0] + x9[0] * x9[0] +
-                   x10[0] * x10[0];
-    residuals[1] = x1[1] * x1[1] + x2[1] * x2[1] + x3[1] * x3[1] +
-                   x4[1] * x4[1] + x5[1] * x5[1] + x6[1] * x6[1] +
-                   x7[1] * x7[1] + x8[1] * x8[1] + x9[1] * x9[1] +
-                   x10[1] * x10[1];
-    return true;
-  }
-};
-
-class DynamicTwoParameterBlockFunctor {
- public:
-  template <typename T>
-  bool operator()(T const* const* parameters, T* residuals) const {
-    for (int i = 0; i < 2; ++i) {
-      residuals[0] = parameters[i][0] * parameters[i][0];
-      residuals[1] = parameters[i][1] * parameters[i][1];
-    }
-    return true;
-  }
-};
-
-// Check that AutoDiff(Functor1) == AutoDiff(CostToFunctor(AutoDiff(Functor1)))
-#define TEST_BODY(Functor1)                                                    \
-  TEST(CostFunctionToFunctor, Functor1) {                                      \
-    using CostFunction1 =                                                      \
-        AutoDiffCostFunction<Functor1, 2, PARAMETER_BLOCK_SIZES>;              \
-    using FunctionToFunctor = CostFunctionToFunctor<2, PARAMETER_BLOCK_SIZES>; \
-    using CostFunction2 =                                                      \
-        AutoDiffCostFunction<FunctionToFunctor, 2, PARAMETER_BLOCK_SIZES>;     \
-                                                                               \
-    std::unique_ptr<CostFunction> cost_function(new CostFunction2(             \
-        new FunctionToFunctor(new CostFunction1(new Functor1))));              \
-                                                                               \
-    std::unique_ptr<CostFunction> actual_cost_function(                        \
-        new CostFunction1(new Functor1));                                      \
-    ExpectCostFunctionsAreEqual(*cost_function, *actual_cost_function);        \
-  }
-
-#define PARAMETER_BLOCK_SIZES 2
-TEST_BODY(OneParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2
-TEST_BODY(TwoParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2
-TEST_BODY(ThreeParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2
-TEST_BODY(FourParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2, 2
-TEST_BODY(FiveParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2, 2, 2
-TEST_BODY(SixParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2, 2, 2, 2
-TEST_BODY(SevenParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2, 2, 2, 2, 2
-TEST_BODY(EightParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2, 2, 2, 2, 2, 2
-TEST_BODY(NineParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#define PARAMETER_BLOCK_SIZES 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
-TEST_BODY(TenParameterBlockFunctor)
-#undef PARAMETER_BLOCK_SIZES
-
-#undef TEST_BODY
-
-TEST(CostFunctionToFunctor, DynamicNumberOfResiduals) {
-  std::unique_ptr<CostFunction> cost_function(
-      new AutoDiffCostFunction<CostFunctionToFunctor<ceres::DYNAMIC, 2, 2>,
-                               ceres::DYNAMIC,
-                               2,
-                               2>(
-          new CostFunctionToFunctor<ceres::DYNAMIC, 2, 2>(
-              new AutoDiffCostFunction<TwoParameterBlockFunctor, 2, 2, 2>(
-                  new TwoParameterBlockFunctor)),
-          2));
-
-  std::unique_ptr<CostFunction> actual_cost_function(
-      new AutoDiffCostFunction<TwoParameterBlockFunctor, 2, 2, 2>(
-          new TwoParameterBlockFunctor));
-  ExpectCostFunctionsAreEqual(*cost_function, *actual_cost_function);
-}
-
-TEST(CostFunctionToFunctor, DynamicCostFunctionToFunctor) {
-  auto* actual_cost_function(
-      new DynamicAutoDiffCostFunction<DynamicTwoParameterBlockFunctor>(
-          new DynamicTwoParameterBlockFunctor));
-  actual_cost_function->AddParameterBlock(2);
-  actual_cost_function->AddParameterBlock(2);
-  actual_cost_function->SetNumResiduals(2);
-
-  DynamicAutoDiffCostFunction<DynamicCostFunctionToFunctor> cost_function(
-      new DynamicCostFunctionToFunctor(actual_cost_function));
-  cost_function.AddParameterBlock(2);
-  cost_function.AddParameterBlock(2);
-  cost_function.SetNumResiduals(2);
-
-  ExpectCostFunctionsAreEqual(cost_function, *actual_cost_function);
-}
-
-TEST(CostFunctionToFunctor, UniquePtrArgumentForwarding) {
-  auto cost_function = std::make_unique<
-      AutoDiffCostFunction<CostFunctionToFunctor<ceres::DYNAMIC, 2, 2>,
-                           ceres::DYNAMIC,
-                           2,
-                           2>>(
-      std::make_unique<CostFunctionToFunctor<ceres::DYNAMIC, 2, 2>>(
-          std::make_unique<
-              AutoDiffCostFunction<TwoParameterBlockFunctor, 2, 2, 2>>()),
-      2);
-
-  auto actual_cost_function = std::make_unique<
-      AutoDiffCostFunction<TwoParameterBlockFunctor, 2, 2, 2>>();
-  ExpectCostFunctionsAreEqual(*cost_function, *actual_cost_function);
-}
-
-TEST(CostFunctionToFunctor, DynamicCostFunctionToFunctorUniquePtr) {
-  auto actual_cost_function = std::make_unique<
-      DynamicAutoDiffCostFunction<DynamicTwoParameterBlockFunctor>>();
-  actual_cost_function->AddParameterBlock(2);
-  actual_cost_function->AddParameterBlock(2);
-  actual_cost_function->SetNumResiduals(2);
-
-  // Use deduction guides for a more compact variable definition
-  DynamicAutoDiffCostFunction cost_function(
-      std::make_unique<DynamicCostFunctionToFunctor>(
-          std::move(actual_cost_function)));
-  cost_function.AddParameterBlock(2);
-  cost_function.AddParameterBlock(2);
-  cost_function.SetNumResiduals(2);
-
-  ExpectCostFunctionsAreEqual(cost_function,
-                              *cost_function.functor().function());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/covariance.cc b/third_party/ceres/internal/ceres/covariance.cc
deleted file mode 100644
index 50da029..0000000
--- a/third_party/ceres/internal/ceres/covariance.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/covariance.h"
-
-#include <utility>
-#include <vector>
-
-#include "ceres/covariance_impl.h"
-#include "ceres/problem.h"
-#include "ceres/problem_impl.h"
-
-namespace ceres {
-
-Covariance::Covariance(const Covariance::Options& options) {
-  impl_ = std::make_unique<internal::CovarianceImpl>(options);
-}
-
-Covariance::~Covariance() = default;
-
-bool Covariance::Compute(
-    const std::vector<std::pair<const double*, const double*>>&
-        covariance_blocks,
-    Problem* problem) {
-  return impl_->Compute(covariance_blocks, problem->mutable_impl());
-}
-
-bool Covariance::Compute(const std::vector<const double*>& parameter_blocks,
-                         Problem* problem) {
-  return impl_->Compute(parameter_blocks, problem->mutable_impl());
-}
-
-bool Covariance::GetCovarianceBlock(const double* parameter_block1,
-                                    const double* parameter_block2,
-                                    double* covariance_block) const {
-  return impl_->GetCovarianceBlockInTangentOrAmbientSpace(parameter_block1,
-                                                          parameter_block2,
-                                                          true,  // ambient
-                                                          covariance_block);
-}
-
-bool Covariance::GetCovarianceBlockInTangentSpace(
-    const double* parameter_block1,
-    const double* parameter_block2,
-    double* covariance_block) const {
-  return impl_->GetCovarianceBlockInTangentOrAmbientSpace(parameter_block1,
-                                                          parameter_block2,
-                                                          false,  // tangent
-                                                          covariance_block);
-}
-
-bool Covariance::GetCovarianceMatrix(
-    const std::vector<const double*>& parameter_blocks,
-    double* covariance_matrix) const {
-  return impl_->GetCovarianceMatrixInTangentOrAmbientSpace(parameter_blocks,
-                                                           true,  // ambient
-                                                           covariance_matrix);
-}
-
-bool Covariance::GetCovarianceMatrixInTangentSpace(
-    const std::vector<const double*>& parameter_blocks,
-    double* covariance_matrix) const {
-  return impl_->GetCovarianceMatrixInTangentOrAmbientSpace(parameter_blocks,
-                                                           false,  // tangent
-                                                           covariance_matrix);
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/covariance_impl.cc b/third_party/ceres/internal/ceres/covariance_impl.cc
deleted file mode 100644
index 6e8362d..0000000
--- a/third_party/ceres/internal/ceres/covariance_impl.cc
+++ /dev/null
@@ -1,889 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/covariance_impl.h"
-
-#include <algorithm>
-#include <cstdlib>
-#include <memory>
-#include <numeric>
-#include <sstream>
-#include <unordered_set>
-#include <utility>
-#include <vector>
-
-#include "Eigen/SVD"
-#include "Eigen/SparseCore"
-#include "Eigen/SparseQR"
-#include "ceres/compressed_col_sparse_matrix_utils.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/covariance.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/map_util.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_utils.h"
-#include "ceres/parameter_block.h"
-#include "ceres/problem_impl.h"
-#include "ceres/residual_block.h"
-#include "ceres/suitesparse.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-using CovarianceBlocks = std::vector<std::pair<const double*, const double*>>;
-
-CovarianceImpl::CovarianceImpl(const Covariance::Options& options)
-    : options_(options), is_computed_(false), is_valid_(false) {
-  evaluate_options_.num_threads = options_.num_threads;
-  evaluate_options_.apply_loss_function = options_.apply_loss_function;
-}
-
-CovarianceImpl::~CovarianceImpl() = default;
-
-template <typename T>
-void CheckForDuplicates(std::vector<T> blocks) {
-  std::sort(blocks.begin(), blocks.end());
-  auto it = std::adjacent_find(blocks.begin(), blocks.end());
-  if (it != blocks.end()) {
-    // In case there are duplicates, we search for their location.
-    std::map<T, std::vector<int>> blocks_map;
-    for (int i = 0; i < blocks.size(); ++i) {
-      blocks_map[blocks[i]].push_back(i);
-    }
-
-    std::ostringstream duplicates;
-    while (it != blocks.end()) {
-      duplicates << "(";
-      for (int i = 0; i < blocks_map[*it].size() - 1; ++i) {
-        duplicates << blocks_map[*it][i] << ", ";
-      }
-      duplicates << blocks_map[*it].back() << ")";
-      it = std::adjacent_find(it + 1, blocks.end());
-      if (it < blocks.end()) {
-        duplicates << " and ";
-      }
-    }
-
-    LOG(FATAL) << "Covariance::Compute called with duplicate blocks at "
-               << "indices " << duplicates.str();
-  }
-}
-
-bool CovarianceImpl::Compute(const CovarianceBlocks& covariance_blocks,
-                             ProblemImpl* problem) {
-  CheckForDuplicates<std::pair<const double*, const double*>>(
-      covariance_blocks);
-  problem_ = problem;
-  parameter_block_to_row_index_.clear();
-  covariance_matrix_ = nullptr;
-  is_valid_ = (ComputeCovarianceSparsity(covariance_blocks, problem) &&
-               ComputeCovarianceValues());
-  is_computed_ = true;
-  return is_valid_;
-}
-
-bool CovarianceImpl::Compute(const std::vector<const double*>& parameter_blocks,
-                             ProblemImpl* problem) {
-  CheckForDuplicates<const double*>(parameter_blocks);
-  CovarianceBlocks covariance_blocks;
-  for (int i = 0; i < parameter_blocks.size(); ++i) {
-    for (int j = i; j < parameter_blocks.size(); ++j) {
-      covariance_blocks.push_back(
-          std::make_pair(parameter_blocks[i], parameter_blocks[j]));
-    }
-  }
-
-  return Compute(covariance_blocks, problem);
-}
-
-bool CovarianceImpl::GetCovarianceBlockInTangentOrAmbientSpace(
-    const double* original_parameter_block1,
-    const double* original_parameter_block2,
-    bool lift_covariance_to_ambient_space,
-    double* covariance_block) const {
-  CHECK(is_computed_)
-      << "Covariance::GetCovarianceBlock called before Covariance::Compute";
-  CHECK(is_valid_)
-      << "Covariance::GetCovarianceBlock called when Covariance::Compute "
-      << "returned false.";
-
-  // If either of the two parameter blocks is constant, then the
-  // covariance block is also zero.
-  if (constant_parameter_blocks_.count(original_parameter_block1) > 0 ||
-      constant_parameter_blocks_.count(original_parameter_block2) > 0) {
-    const ProblemImpl::ParameterMap& parameter_map = problem_->parameter_map();
-    ParameterBlock* block1 = FindOrDie(
-        parameter_map, const_cast<double*>(original_parameter_block1));
-
-    ParameterBlock* block2 = FindOrDie(
-        parameter_map, const_cast<double*>(original_parameter_block2));
-
-    const int block1_size = block1->Size();
-    const int block2_size = block2->Size();
-    const int block1_tangent_size = block1->TangentSize();
-    const int block2_tangent_size = block2->TangentSize();
-    if (!lift_covariance_to_ambient_space) {
-      MatrixRef(covariance_block, block1_tangent_size, block2_tangent_size)
-          .setZero();
-    } else {
-      MatrixRef(covariance_block, block1_size, block2_size).setZero();
-    }
-    return true;
-  }
-
-  const double* parameter_block1 = original_parameter_block1;
-  const double* parameter_block2 = original_parameter_block2;
-  const bool transpose = parameter_block1 > parameter_block2;
-  if (transpose) {
-    std::swap(parameter_block1, parameter_block2);
-  }
-
-  // Find where in the covariance matrix the block is located.
-  const int row_begin =
-      FindOrDie(parameter_block_to_row_index_, parameter_block1);
-  const int col_begin =
-      FindOrDie(parameter_block_to_row_index_, parameter_block2);
-  const int* rows = covariance_matrix_->rows();
-  const int* cols = covariance_matrix_->cols();
-  const int row_size = rows[row_begin + 1] - rows[row_begin];
-  const int* cols_begin = cols + rows[row_begin];
-
-  // The only part that requires work is walking the compressed column
-  // vector to determine where the set of columns corresponding to the
-  // covariance block begin.
-  int offset = 0;
-  while (cols_begin[offset] != col_begin && offset < row_size) {
-    ++offset;
-  }
-
-  if (offset == row_size) {
-    LOG(ERROR) << "Unable to find covariance block for "
-               << original_parameter_block1 << " " << original_parameter_block2;
-    return false;
-  }
-
-  const ProblemImpl::ParameterMap& parameter_map = problem_->parameter_map();
-  ParameterBlock* block1 =
-      FindOrDie(parameter_map, const_cast<double*>(parameter_block1));
-  ParameterBlock* block2 =
-      FindOrDie(parameter_map, const_cast<double*>(parameter_block2));
-  const Manifold* manifold1 = block1->manifold();
-  const Manifold* manifold2 = block2->manifold();
-  const int block1_size = block1->Size();
-  const int block1_tangent_size = block1->TangentSize();
-  const int block2_size = block2->Size();
-  const int block2_tangent_size = block2->TangentSize();
-
-  ConstMatrixRef cov(covariance_matrix_->values() + rows[row_begin],
-                     block1_tangent_size,
-                     row_size);
-
-  // Fast path when there are no manifolds or if the user does not want it
-  // lifted to the ambient space.
-  if ((manifold1 == nullptr && manifold2 == nullptr) ||
-      !lift_covariance_to_ambient_space) {
-    if (transpose) {
-      MatrixRef(covariance_block, block2_tangent_size, block1_tangent_size) =
-          cov.block(0, offset, block1_tangent_size, block2_tangent_size)
-              .transpose();
-    } else {
-      MatrixRef(covariance_block, block1_tangent_size, block2_tangent_size) =
-          cov.block(0, offset, block1_tangent_size, block2_tangent_size);
-    }
-    return true;
-  }
-
-  // If manifolds are used then the covariance that has been computed is in the
-  // tangent space and it needs to be lifted back to the ambient space.
-  //
-  // This is given by the formula
-  //
-  //  C'_12 = J_1 C_12 J_2'
-  //
-  // Where C_12 is the local tangent space covariance for parameter
-  // blocks 1 and 2. J_1 and J_2 are respectively the local to global
-  // jacobians for parameter blocks 1 and 2.
-  //
-  // See Result 5.11 on page 142 of Hartley & Zisserman (2nd Edition)
-  // for a proof.
-  //
-  // TODO(sameeragarwal): Add caching the manifold plus_jacobian, so that they
-  // are computed just once per parameter block.
-  Matrix block1_jacobian(block1_size, block1_tangent_size);
-  if (manifold1 == nullptr) {
-    block1_jacobian.setIdentity();
-  } else {
-    manifold1->PlusJacobian(parameter_block1, block1_jacobian.data());
-  }
-
-  Matrix block2_jacobian(block2_size, block2_tangent_size);
-  // Fast path if the user is requesting a diagonal block.
-  if (parameter_block1 == parameter_block2) {
-    block2_jacobian = block1_jacobian;
-  } else {
-    if (manifold2 == nullptr) {
-      block2_jacobian.setIdentity();
-    } else {
-      manifold2->PlusJacobian(parameter_block2, block2_jacobian.data());
-    }
-  }
-
-  if (transpose) {
-    MatrixRef(covariance_block, block2_size, block1_size) =
-        block2_jacobian *
-        cov.block(0, offset, block1_tangent_size, block2_tangent_size)
-            .transpose() *
-        block1_jacobian.transpose();
-  } else {
-    MatrixRef(covariance_block, block1_size, block2_size) =
-        block1_jacobian *
-        cov.block(0, offset, block1_tangent_size, block2_tangent_size) *
-        block2_jacobian.transpose();
-  }
-
-  return true;
-}
-
-bool CovarianceImpl::GetCovarianceMatrixInTangentOrAmbientSpace(
-    const std::vector<const double*>& parameters,
-    bool lift_covariance_to_ambient_space,
-    double* covariance_matrix) const {
-  CHECK(is_computed_)
-      << "Covariance::GetCovarianceMatrix called before Covariance::Compute";
-  CHECK(is_valid_)
-      << "Covariance::GetCovarianceMatrix called when Covariance::Compute "
-      << "returned false.";
-
-  const ProblemImpl::ParameterMap& parameter_map = problem_->parameter_map();
-  // For OpenMP compatibility we need to define these vectors in advance
-  const int num_parameters = parameters.size();
-  std::vector<int> parameter_sizes;
-  std::vector<int> cum_parameter_size;
-  parameter_sizes.reserve(num_parameters);
-  cum_parameter_size.resize(num_parameters + 1);
-  cum_parameter_size[0] = 0;
-  for (int i = 0; i < num_parameters; ++i) {
-    ParameterBlock* block =
-        FindOrDie(parameter_map, const_cast<double*>(parameters[i]));
-    if (lift_covariance_to_ambient_space) {
-      parameter_sizes.push_back(block->Size());
-    } else {
-      parameter_sizes.push_back(block->TangentSize());
-    }
-  }
-  std::partial_sum(parameter_sizes.begin(),
-                   parameter_sizes.end(),
-                   cum_parameter_size.begin() + 1);
-  const int max_covariance_block_size =
-      *std::max_element(parameter_sizes.begin(), parameter_sizes.end());
-  const int covariance_size = cum_parameter_size.back();
-
-  // Assemble the blocks in the covariance matrix.
-  MatrixRef covariance(covariance_matrix, covariance_size, covariance_size);
-  const int num_threads = options_.num_threads;
-  auto workspace = std::make_unique<double[]>(
-      num_threads * max_covariance_block_size * max_covariance_block_size);
-
-  bool success = true;
-
-  // Technically the following code is a double nested loop where
-  // i = 1:n, j = i:n.
-  int iteration_count = (num_parameters * (num_parameters + 1)) / 2;
-  problem_->context()->EnsureMinimumThreads(num_threads);
-  ParallelFor(problem_->context(),
-              0,
-              iteration_count,
-              num_threads,
-              [&](int thread_id, int k) {
-                int i, j;
-                LinearIndexToUpperTriangularIndex(k, num_parameters, &i, &j);
-
-                int covariance_row_idx = cum_parameter_size[i];
-                int covariance_col_idx = cum_parameter_size[j];
-                int size_i = parameter_sizes[i];
-                int size_j = parameter_sizes[j];
-                double* covariance_block =
-                    workspace.get() + thread_id * max_covariance_block_size *
-                                          max_covariance_block_size;
-                if (!GetCovarianceBlockInTangentOrAmbientSpace(
-                        parameters[i],
-                        parameters[j],
-                        lift_covariance_to_ambient_space,
-                        covariance_block)) {
-                  success = false;
-                }
-
-                covariance.block(
-                    covariance_row_idx, covariance_col_idx, size_i, size_j) =
-                    MatrixRef(covariance_block, size_i, size_j);
-
-                if (i != j) {
-                  covariance.block(
-                      covariance_col_idx, covariance_row_idx, size_j, size_i) =
-                      MatrixRef(covariance_block, size_i, size_j).transpose();
-                }
-              });
-  return success;
-}
-
-// Determine the sparsity pattern of the covariance matrix based on
-// the block pairs requested by the user.
-bool CovarianceImpl::ComputeCovarianceSparsity(
-    const CovarianceBlocks& original_covariance_blocks, ProblemImpl* problem) {
-  EventLogger event_logger("CovarianceImpl::ComputeCovarianceSparsity");
-
-  // Determine an ordering for the parameter block, by sorting the
-  // parameter blocks by their pointers.
-  std::vector<double*> all_parameter_blocks;
-  problem->GetParameterBlocks(&all_parameter_blocks);
-  const ProblemImpl::ParameterMap& parameter_map = problem->parameter_map();
-  std::unordered_set<ParameterBlock*> parameter_blocks_in_use;
-  std::vector<ResidualBlock*> residual_blocks;
-  problem->GetResidualBlocks(&residual_blocks);
-
-  for (auto* residual_block : residual_blocks) {
-    parameter_blocks_in_use.insert(residual_block->parameter_blocks(),
-                                   residual_block->parameter_blocks() +
-                                       residual_block->NumParameterBlocks());
-  }
-
-  constant_parameter_blocks_.clear();
-  std::vector<double*>& active_parameter_blocks =
-      evaluate_options_.parameter_blocks;
-  active_parameter_blocks.clear();
-  for (auto* parameter_block : all_parameter_blocks) {
-    ParameterBlock* block = FindOrDie(parameter_map, parameter_block);
-    if (!block->IsConstant() && (parameter_blocks_in_use.count(block) > 0)) {
-      active_parameter_blocks.push_back(parameter_block);
-    } else {
-      constant_parameter_blocks_.insert(parameter_block);
-    }
-  }
-
-  std::sort(active_parameter_blocks.begin(), active_parameter_blocks.end());
-
-  // Compute the number of rows.  Map each parameter block to the
-  // first row corresponding to it in the covariance matrix using the
-  // ordering of parameter blocks just constructed.
-  int num_rows = 0;
-  parameter_block_to_row_index_.clear();
-  for (auto* parameter_block : active_parameter_blocks) {
-    const int parameter_block_size =
-        problem->ParameterBlockTangentSize(parameter_block);
-    parameter_block_to_row_index_[parameter_block] = num_rows;
-    num_rows += parameter_block_size;
-  }
-
-  // Compute the number of non-zeros in the covariance matrix.  Along
-  // the way flip any covariance blocks which are in the lower
-  // triangular part of the matrix.
-  int num_nonzeros = 0;
-  CovarianceBlocks covariance_blocks;
-  for (const auto& block_pair : original_covariance_blocks) {
-    if (constant_parameter_blocks_.count(block_pair.first) > 0 ||
-        constant_parameter_blocks_.count(block_pair.second) > 0) {
-      continue;
-    }
-
-    int index1 = FindOrDie(parameter_block_to_row_index_, block_pair.first);
-    int index2 = FindOrDie(parameter_block_to_row_index_, block_pair.second);
-    const int size1 = problem->ParameterBlockTangentSize(block_pair.first);
-    const int size2 = problem->ParameterBlockTangentSize(block_pair.second);
-    num_nonzeros += size1 * size2;
-
-    // Make sure we are constructing a block upper triangular matrix.
-    if (index1 > index2) {
-      covariance_blocks.push_back(
-          std::make_pair(block_pair.second, block_pair.first));
-    } else {
-      covariance_blocks.push_back(block_pair);
-    }
-  }
-
-  if (covariance_blocks.empty()) {
-    VLOG(2) << "No non-zero covariance blocks found";
-    covariance_matrix_ = nullptr;
-    return true;
-  }
-
-  // Sort the block pairs. As a consequence we get the covariance
-  // blocks as they will occur in the CompressedRowSparseMatrix that
-  // will store the covariance.
-  std::sort(covariance_blocks.begin(), covariance_blocks.end());
-
-  // Fill the sparsity pattern of the covariance matrix.
-  covariance_matrix_ = std::make_unique<CompressedRowSparseMatrix>(
-      num_rows, num_rows, num_nonzeros);
-
-  int* rows = covariance_matrix_->mutable_rows();
-  int* cols = covariance_matrix_->mutable_cols();
-
-  // Iterate over parameter blocks and in turn over the rows of the
-  // covariance matrix. For each parameter block, look in the upper
-  // triangular part of the covariance matrix to see if there are any
-  // blocks requested by the user. If this is the case then fill out a
-  // set of compressed rows corresponding to this parameter block.
-  //
-  // The key thing that makes this loop work is the fact that the
-  // row/columns of the covariance matrix are ordered by the pointer
-  // values of the parameter blocks. Thus iterating over the keys of
-  // parameter_block_to_row_index_ corresponds to iterating over the
-  // rows of the covariance matrix in order.
-  int i = 0;       // index into covariance_blocks.
-  int cursor = 0;  // index into the covariance matrix.
-  for (const auto& entry : parameter_block_to_row_index_) {
-    const double* row_block = entry.first;
-    const int row_block_size = problem->ParameterBlockTangentSize(row_block);
-    int row_begin = entry.second;
-
-    // Iterate over the covariance blocks contained in this row block
-    // and count the number of columns in this row block.
-    int num_col_blocks = 0;
-    for (int j = i; j < covariance_blocks.size(); ++j, ++num_col_blocks) {
-      const std::pair<const double*, const double*>& block_pair =
-          covariance_blocks[j];
-      if (block_pair.first != row_block) {
-        break;
-      }
-    }
-
-    // Fill out all the compressed rows for this parameter block.
-    for (int r = 0; r < row_block_size; ++r) {
-      rows[row_begin + r] = cursor;
-      for (int c = 0; c < num_col_blocks; ++c) {
-        const double* col_block = covariance_blocks[i + c].second;
-        const int col_block_size =
-            problem->ParameterBlockTangentSize(col_block);
-        int col_begin = FindOrDie(parameter_block_to_row_index_, col_block);
-        for (int k = 0; k < col_block_size; ++k) {
-          cols[cursor++] = col_begin++;
-        }
-      }
-    }
-
-    i += num_col_blocks;
-  }
-
-  rows[num_rows] = cursor;
-  return true;
-}
-
-bool CovarianceImpl::ComputeCovarianceValues() {
-  if (options_.algorithm_type == DENSE_SVD) {
-    return ComputeCovarianceValuesUsingDenseSVD();
-  }
-
-  if (options_.algorithm_type == SPARSE_QR) {
-    if (options_.sparse_linear_algebra_library_type == EIGEN_SPARSE) {
-      return ComputeCovarianceValuesUsingEigenSparseQR();
-    }
-
-    if (options_.sparse_linear_algebra_library_type == SUITE_SPARSE) {
-#if !defined(CERES_NO_SUITESPARSE)
-      return ComputeCovarianceValuesUsingSuiteSparseQR();
-#else
-      LOG(ERROR) << "SuiteSparse is required to use the SPARSE_QR algorithm "
-                 << "with "
-                 << "Covariance::Options::sparse_linear_algebra_library_type "
-                 << "= SUITE_SPARSE.";
-      return false;
-#endif
-    }
-
-    LOG(ERROR) << "Unsupported "
-               << "Covariance::Options::sparse_linear_algebra_library_type "
-               << "= "
-               << SparseLinearAlgebraLibraryTypeToString(
-                      options_.sparse_linear_algebra_library_type);
-    return false;
-  }
-
-  LOG(ERROR) << "Unsupported Covariance::Options::algorithm_type = "
-             << CovarianceAlgorithmTypeToString(options_.algorithm_type);
-  return false;
-}
-
-bool CovarianceImpl::ComputeCovarianceValuesUsingSuiteSparseQR() {
-  EventLogger event_logger(
-      "CovarianceImpl::ComputeCovarianceValuesUsingSparseQR");
-
-#ifndef CERES_NO_SUITESPARSE
-  if (covariance_matrix_ == nullptr) {
-    // Nothing to do, all zeros covariance matrix.
-    return true;
-  }
-
-  CRSMatrix jacobian;
-  problem_->Evaluate(evaluate_options_, nullptr, nullptr, nullptr, &jacobian);
-  event_logger.AddEvent("Evaluate");
-
-  // Construct a compressed column form of the Jacobian.
-  const int num_rows = jacobian.num_rows;
-  const int num_cols = jacobian.num_cols;
-  const int num_nonzeros = jacobian.values.size();
-
-  std::vector<SuiteSparse_long> transpose_rows(num_cols + 1, 0);
-  std::vector<SuiteSparse_long> transpose_cols(num_nonzeros, 0);
-  std::vector<double> transpose_values(num_nonzeros, 0);
-
-  for (int idx = 0; idx < num_nonzeros; ++idx) {
-    transpose_rows[jacobian.cols[idx] + 1] += 1;
-  }
-
-  for (int i = 1; i < transpose_rows.size(); ++i) {
-    transpose_rows[i] += transpose_rows[i - 1];
-  }
-
-  for (int r = 0; r < num_rows; ++r) {
-    for (int idx = jacobian.rows[r]; idx < jacobian.rows[r + 1]; ++idx) {
-      const int c = jacobian.cols[idx];
-      const int transpose_idx = transpose_rows[c];
-      transpose_cols[transpose_idx] = r;
-      transpose_values[transpose_idx] = jacobian.values[idx];
-      ++transpose_rows[c];
-    }
-  }
-
-  for (int i = transpose_rows.size() - 1; i > 0; --i) {
-    transpose_rows[i] = transpose_rows[i - 1];
-  }
-  transpose_rows[0] = 0;
-
-  cholmod_sparse cholmod_jacobian;
-  cholmod_jacobian.nrow = num_rows;
-  cholmod_jacobian.ncol = num_cols;
-  cholmod_jacobian.nzmax = num_nonzeros;
-  cholmod_jacobian.nz = nullptr;
-  cholmod_jacobian.p = reinterpret_cast<void*>(transpose_rows.data());
-  cholmod_jacobian.i = reinterpret_cast<void*>(transpose_cols.data());
-  cholmod_jacobian.x = reinterpret_cast<void*>(transpose_values.data());
-  cholmod_jacobian.z = nullptr;
-  cholmod_jacobian.stype = 0;  // Matrix is not symmetric.
-  cholmod_jacobian.itype = CHOLMOD_LONG;
-  cholmod_jacobian.xtype = CHOLMOD_REAL;
-  cholmod_jacobian.dtype = CHOLMOD_DOUBLE;
-  cholmod_jacobian.sorted = 1;
-  cholmod_jacobian.packed = 1;
-
-  cholmod_common cc;
-  cholmod_l_start(&cc);
-
-  cholmod_sparse* R = nullptr;
-  SuiteSparse_long* permutation = nullptr;
-
-  // Compute a Q-less QR factorization of the Jacobian. Since we are
-  // only interested in inverting J'J = R'R, we do not need Q. This
-  // saves memory and gives us R as a permuted compressed column
-  // sparse matrix.
-  //
-  // TODO(sameeragarwal): Currently the symbolic factorization and the
-  // numeric factorization is done at the same time, and this does not
-  // explicitly account for the block column and row structure in the
-  // matrix. When using AMD, we have observed in the past that
-  // computing the ordering with the block matrix is significantly
-  // more efficient, both in runtime as well as the quality of
-  // ordering computed. So, it maybe worth doing that analysis
-  // separately.
-  const SuiteSparse_long rank = SuiteSparseQR<double>(
-      SPQR_ORDERING_BESTAMD,
-      options_.column_pivot_threshold < 0 ? SPQR_DEFAULT_TOL
-                                          : options_.column_pivot_threshold,
-      static_cast<int64_t>(cholmod_jacobian.ncol),
-      &cholmod_jacobian,
-      &R,
-      &permutation,
-      &cc);
-  event_logger.AddEvent("Numeric Factorization");
-  if (R == nullptr) {
-    LOG(ERROR) << "Something is wrong. SuiteSparseQR returned R = nullptr.";
-    free(permutation);
-    cholmod_l_finish(&cc);
-    return false;
-  }
-
-  if (rank < cholmod_jacobian.ncol) {
-    LOG(WARNING) << "Jacobian matrix is rank deficient. "
-                 << "Number of columns: " << cholmod_jacobian.ncol
-                 << " rank: " << rank;
-    free(permutation);
-    cholmod_l_free_sparse(&R, &cc);
-    cholmod_l_finish(&cc);
-    return false;
-  }
-
-  std::vector<int> inverse_permutation(num_cols);
-  if (permutation) {
-    for (SuiteSparse_long i = 0; i < num_cols; ++i) {
-      inverse_permutation[permutation[i]] = i;
-    }
-  } else {
-    for (SuiteSparse_long i = 0; i < num_cols; ++i) {
-      inverse_permutation[i] = i;
-    }
-  }
-
-  const int* rows = covariance_matrix_->rows();
-  const int* cols = covariance_matrix_->cols();
-  double* values = covariance_matrix_->mutable_values();
-
-  // The following loop exploits the fact that the i^th column of A^{-1}
-  // is given by the solution to the linear system
-  //
-  //  A x = e_i
-  //
-  // where e_i is a vector with e(i) = 1 and all other entries zero.
-  //
-  // Since the covariance matrix is symmetric, the i^th row and column
-  // are equal.
-  const int num_threads = options_.num_threads;
-  auto workspace = std::make_unique<double[]>(num_threads * num_cols);
-
-  problem_->context()->EnsureMinimumThreads(num_threads);
-  ParallelFor(
-      problem_->context(), 0, num_cols, num_threads, [&](int thread_id, int r) {
-        const int row_begin = rows[r];
-        const int row_end = rows[r + 1];
-        if (row_end != row_begin) {
-          double* solution = workspace.get() + thread_id * num_cols;
-          SolveRTRWithSparseRHS<SuiteSparse_long>(
-              num_cols,
-              static_cast<SuiteSparse_long*>(R->i),
-              static_cast<SuiteSparse_long*>(R->p),
-              static_cast<double*>(R->x),
-              inverse_permutation[r],
-              solution);
-          for (int idx = row_begin; idx < row_end; ++idx) {
-            const int c = cols[idx];
-            values[idx] = solution[inverse_permutation[c]];
-          }
-        }
-      });
-
-  free(permutation);
-  cholmod_l_free_sparse(&R, &cc);
-  cholmod_l_finish(&cc);
-  event_logger.AddEvent("Inversion");
-  return true;
-
-#else  // CERES_NO_SUITESPARSE
-
-  return false;
-
-#endif  // CERES_NO_SUITESPARSE
-}
-
-bool CovarianceImpl::ComputeCovarianceValuesUsingDenseSVD() {
-  EventLogger event_logger(
-      "CovarianceImpl::ComputeCovarianceValuesUsingDenseSVD");
-  if (covariance_matrix_ == nullptr) {
-    // Nothing to do, all zeros covariance matrix.
-    return true;
-  }
-
-  CRSMatrix jacobian;
-  problem_->Evaluate(evaluate_options_, nullptr, nullptr, nullptr, &jacobian);
-  event_logger.AddEvent("Evaluate");
-
-  Matrix dense_jacobian(jacobian.num_rows, jacobian.num_cols);
-  dense_jacobian.setZero();
-  for (int r = 0; r < jacobian.num_rows; ++r) {
-    for (int idx = jacobian.rows[r]; idx < jacobian.rows[r + 1]; ++idx) {
-      const int c = jacobian.cols[idx];
-      dense_jacobian(r, c) = jacobian.values[idx];
-    }
-  }
-  event_logger.AddEvent("ConvertToDenseMatrix");
-
-  Eigen::BDCSVD<Matrix> svd(dense_jacobian,
-                            Eigen::ComputeThinU | Eigen::ComputeThinV);
-
-  event_logger.AddEvent("SingularValueDecomposition");
-
-  const Vector singular_values = svd.singularValues();
-  const int num_singular_values = singular_values.rows();
-  Vector inverse_squared_singular_values(num_singular_values);
-  inverse_squared_singular_values.setZero();
-
-  const double max_singular_value = singular_values[0];
-  const double min_singular_value_ratio =
-      sqrt(options_.min_reciprocal_condition_number);
-
-  const bool automatic_truncation = (options_.null_space_rank < 0);
-  const int max_rank = std::min(num_singular_values,
-                                num_singular_values - options_.null_space_rank);
-
-  // Compute the squared inverse of the singular values. Truncate the
-  // computation based on min_singular_value_ratio and
-  // null_space_rank. When either of these two quantities are active,
-  // the resulting covariance matrix is a Moore-Penrose inverse
-  // instead of a regular inverse.
-  for (int i = 0; i < max_rank; ++i) {
-    const double singular_value_ratio = singular_values[i] / max_singular_value;
-    if (singular_value_ratio < min_singular_value_ratio) {
-      // Since the singular values are in decreasing order, if
-      // automatic truncation is enabled, then from this point on
-      // all values will fail the ratio test and there is nothing to
-      // do in this loop.
-      if (automatic_truncation) {
-        break;
-      } else {
-        LOG(ERROR) << "Error: Covariance matrix is near rank deficient "
-                   << "and the user did not specify a non-zero"
-                   << "Covariance::Options::null_space_rank "
-                   << "to enable the computation of a Pseudo-Inverse. "
-                   << "Reciprocal condition number: "
-                   << singular_value_ratio * singular_value_ratio << " "
-                   << "min_reciprocal_condition_number: "
-                   << options_.min_reciprocal_condition_number;
-        return false;
-      }
-    }
-
-    inverse_squared_singular_values[i] =
-        1.0 / (singular_values[i] * singular_values[i]);
-  }
-
-  Matrix dense_covariance = svd.matrixV() *
-                            inverse_squared_singular_values.asDiagonal() *
-                            svd.matrixV().transpose();
-  event_logger.AddEvent("PseudoInverse");
-
-  const int num_rows = covariance_matrix_->num_rows();
-  const int* rows = covariance_matrix_->rows();
-  const int* cols = covariance_matrix_->cols();
-  double* values = covariance_matrix_->mutable_values();
-
-  for (int r = 0; r < num_rows; ++r) {
-    for (int idx = rows[r]; idx < rows[r + 1]; ++idx) {
-      const int c = cols[idx];
-      values[idx] = dense_covariance(r, c);
-    }
-  }
-  event_logger.AddEvent("CopyToCovarianceMatrix");
-  return true;
-}
-
-bool CovarianceImpl::ComputeCovarianceValuesUsingEigenSparseQR() {
-  EventLogger event_logger(
-      "CovarianceImpl::ComputeCovarianceValuesUsingEigenSparseQR");
-  if (covariance_matrix_ == nullptr) {
-    // Nothing to do, all zeros covariance matrix.
-    return true;
-  }
-
-  CRSMatrix jacobian;
-  problem_->Evaluate(evaluate_options_, nullptr, nullptr, nullptr, &jacobian);
-  event_logger.AddEvent("Evaluate");
-
-  using EigenSparseMatrix = Eigen::SparseMatrix<double, Eigen::ColMajor>;
-
-  // Convert the matrix to column major order as required by SparseQR.
-  EigenSparseMatrix sparse_jacobian =
-      Eigen::Map<Eigen::SparseMatrix<double, Eigen::RowMajor>>(
-          jacobian.num_rows,
-          jacobian.num_cols,
-          static_cast<int>(jacobian.values.size()),
-          jacobian.rows.data(),
-          jacobian.cols.data(),
-          jacobian.values.data());
-  event_logger.AddEvent("ConvertToSparseMatrix");
-
-  Eigen::SparseQR<EigenSparseMatrix, Eigen::COLAMDOrdering<int>> qr;
-  if (options_.column_pivot_threshold > 0) {
-    qr.setPivotThreshold(options_.column_pivot_threshold);
-  }
-
-  qr.compute(sparse_jacobian);
-  event_logger.AddEvent("QRDecomposition");
-
-  if (qr.info() != Eigen::Success) {
-    LOG(ERROR) << "Eigen::SparseQR decomposition failed.";
-    return false;
-  }
-
-  if (qr.rank() < jacobian.num_cols) {
-    LOG(ERROR) << "Jacobian matrix is rank deficient. "
-               << "Number of columns: " << jacobian.num_cols
-               << " rank: " << qr.rank();
-    return false;
-  }
-
-  const int* rows = covariance_matrix_->rows();
-  const int* cols = covariance_matrix_->cols();
-  double* values = covariance_matrix_->mutable_values();
-
-  // Compute the inverse column permutation used by QR factorization.
-  Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic> inverse_permutation =
-      qr.colsPermutation().inverse();
-
-  // The following loop exploits the fact that the i^th column of A^{-1}
-  // is given by the solution to the linear system
-  //
-  //  A x = e_i
-  //
-  // where e_i is a vector with e(i) = 1 and all other entries zero.
-  //
-  // Since the covariance matrix is symmetric, the i^th row and column
-  // are equal.
-  const int num_cols = jacobian.num_cols;
-  const int num_threads = options_.num_threads;
-  auto workspace = std::make_unique<double[]>(num_threads * num_cols);
-
-  problem_->context()->EnsureMinimumThreads(num_threads);
-  ParallelFor(
-      problem_->context(), 0, num_cols, num_threads, [&](int thread_id, int r) {
-        const int row_begin = rows[r];
-        const int row_end = rows[r + 1];
-        if (row_end != row_begin) {
-          double* solution = workspace.get() + thread_id * num_cols;
-          SolveRTRWithSparseRHS<int>(num_cols,
-                                     qr.matrixR().innerIndexPtr(),
-                                     qr.matrixR().outerIndexPtr(),
-                                     &qr.matrixR().data().value(0),
-                                     inverse_permutation.indices().coeff(r),
-                                     solution);
-
-          // Assign the values of the computed covariance using the
-          // inverse permutation used in the QR factorization.
-          for (int idx = row_begin; idx < row_end; ++idx) {
-            const int c = cols[idx];
-            values[idx] = solution[inverse_permutation.indices().coeff(c)];
-          }
-        }
-      });
-
-  event_logger.AddEvent("Inverse");
-
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/covariance_impl.h b/third_party/ceres/internal/ceres/covariance_impl.h
deleted file mode 100644
index 9ff7982..0000000
--- a/third_party/ceres/internal/ceres/covariance_impl.h
+++ /dev/null
@@ -1,102 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_COVARIANCE_IMPL_H_
-#define CERES_INTERNAL_COVARIANCE_IMPL_H_
-
-#include <map>
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "ceres/covariance.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/problem_impl.h"
-#include "ceres/suitesparse.h"
-
-namespace ceres::internal {
-
-class CompressedRowSparseMatrix;
-
-class CERES_NO_EXPORT CovarianceImpl {
- public:
-  explicit CovarianceImpl(const Covariance::Options& options);
-  ~CovarianceImpl();
-
-  bool Compute(const std::vector<std::pair<const double*, const double*>>&
-                   covariance_blocks,
-               ProblemImpl* problem);
-
-  bool Compute(const std::vector<const double*>& parameter_blocks,
-               ProblemImpl* problem);
-
-  bool GetCovarianceBlockInTangentOrAmbientSpace(
-      const double* parameter_block1,
-      const double* parameter_block2,
-      bool lift_covariance_to_ambient_space,
-      double* covariance_block) const;
-
-  bool GetCovarianceMatrixInTangentOrAmbientSpace(
-      const std::vector<const double*>& parameters,
-      bool lift_covariance_to_ambient_space,
-      double* covariance_matrix) const;
-
-  bool ComputeCovarianceSparsity(
-      const std::vector<std::pair<const double*, const double*>>&
-          covariance_blocks,
-      ProblemImpl* problem);
-
-  bool ComputeCovarianceValues();
-  bool ComputeCovarianceValuesUsingDenseSVD();
-  bool ComputeCovarianceValuesUsingSuiteSparseQR();
-  bool ComputeCovarianceValuesUsingEigenSparseQR();
-
-  const CompressedRowSparseMatrix* covariance_matrix() const {
-    return covariance_matrix_.get();
-  }
-
- private:
-  ProblemImpl* problem_;
-  Covariance::Options options_;
-  Problem::EvaluateOptions evaluate_options_;
-  bool is_computed_;
-  bool is_valid_;
-  std::map<const double*, int> parameter_block_to_row_index_;
-  std::set<const double*> constant_parameter_blocks_;
-  std::unique_ptr<CompressedRowSparseMatrix> covariance_matrix_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_COVARIANCE_IMPL_H_
diff --git a/third_party/ceres/internal/ceres/covariance_test.cc b/third_party/ceres/internal/ceres/covariance_test.cc
deleted file mode 100644
index 40d9b0e..0000000
--- a/third_party/ceres/internal/ceres/covariance_test.cc
+++ /dev/null
@@ -1,1361 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/covariance.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstdint>
-#include <map>
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/cost_function.h"
-#include "ceres/covariance_impl.h"
-#include "ceres/internal/config.h"
-#include "ceres/manifold.h"
-#include "ceres/map_util.h"
-#include "ceres/problem_impl.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-class UnaryCostFunction : public CostFunction {
- public:
-  UnaryCostFunction(const int num_residuals,
-                    const int32_t parameter_block_size,
-                    const double* jacobian)
-      : jacobian_(jacobian, jacobian + num_residuals * parameter_block_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 1;
-    }
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    if (jacobians[0] != nullptr) {
-      std::copy(jacobian_.begin(), jacobian_.end(), jacobians[0]);
-    }
-
-    return true;
-  }
-
- private:
-  std::vector<double> jacobian_;
-};
-
-class BinaryCostFunction : public CostFunction {
- public:
-  BinaryCostFunction(const int num_residuals,
-                     const int32_t parameter_block1_size,
-                     const int32_t parameter_block2_size,
-                     const double* jacobian1,
-                     const double* jacobian2)
-      : jacobian1_(jacobian1,
-                   jacobian1 + num_residuals * parameter_block1_size),
-        jacobian2_(jacobian2,
-                   jacobian2 + num_residuals * parameter_block2_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block1_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block2_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 2;
-    }
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    if (jacobians[0] != nullptr) {
-      std::copy(jacobian1_.begin(), jacobian1_.end(), jacobians[0]);
-    }
-
-    if (jacobians[1] != nullptr) {
-      std::copy(jacobian2_.begin(), jacobian2_.end(), jacobians[1]);
-    }
-
-    return true;
-  }
-
- private:
-  std::vector<double> jacobian1_;
-  std::vector<double> jacobian2_;
-};
-
-TEST(CovarianceImpl, ComputeCovarianceSparsity) {
-  double parameters[10];
-
-  double* block1 = parameters;
-  double* block2 = block1 + 1;
-  double* block3 = block2 + 2;
-  double* block4 = block3 + 3;
-
-  ProblemImpl problem;
-
-  // Add in random order
-  Vector junk_jacobian = Vector::Zero(10);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 1, junk_jacobian.data()), nullptr, block1);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 4, junk_jacobian.data()), nullptr, block4);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 3, junk_jacobian.data()), nullptr, block3);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 2, junk_jacobian.data()), nullptr, block2);
-
-  // Sparsity pattern
-  //
-  // Note that the problem structure does not imply this sparsity
-  // pattern since all the residual blocks are unary. But the
-  // ComputeCovarianceSparsity function in its current incarnation
-  // does not pay attention to this fact and only looks at the
-  // parameter block pairs that the user provides.
-  //
-  //  X . . . . . X X X X
-  //  . X X X X X . . . .
-  //  . X X X X X . . . .
-  //  . . . X X X . . . .
-  //  . . . X X X . . . .
-  //  . . . X X X . . . .
-  //  . . . . . . X X X X
-  //  . . . . . . X X X X
-  //  . . . . . . X X X X
-  //  . . . . . . X X X X
-
-  // clang-format off
-  int expected_rows[] = {0, 5, 10, 15, 18, 21, 24, 28, 32, 36, 40};
-  int expected_cols[] = {0, 6, 7, 8, 9,
-                         1, 2, 3, 4, 5,
-                         1, 2, 3, 4, 5,
-                         3, 4, 5,
-                         3, 4, 5,
-                         3, 4, 5,
-                         6, 7, 8, 9,
-                         6, 7, 8, 9,
-                         6, 7, 8, 9,
-                         6, 7, 8, 9};
-  // clang-format on
-
-  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-  covariance_blocks.emplace_back(block1, block1);
-  covariance_blocks.emplace_back(block4, block4);
-  covariance_blocks.emplace_back(block2, block2);
-  covariance_blocks.emplace_back(block3, block3);
-  covariance_blocks.emplace_back(block2, block3);
-  covariance_blocks.emplace_back(block4, block1);  // reversed
-
-  Covariance::Options options;
-  CovarianceImpl covariance_impl(options);
-  EXPECT_TRUE(
-      covariance_impl.ComputeCovarianceSparsity(covariance_blocks, &problem));
-
-  const CompressedRowSparseMatrix* crsm = covariance_impl.covariance_matrix();
-
-  EXPECT_EQ(crsm->num_rows(), 10);
-  EXPECT_EQ(crsm->num_cols(), 10);
-  EXPECT_EQ(crsm->num_nonzeros(), 40);
-
-  const int* rows = crsm->rows();
-  for (int r = 0; r < crsm->num_rows() + 1; ++r) {
-    EXPECT_EQ(rows[r], expected_rows[r])
-        << r << " " << rows[r] << " " << expected_rows[r];
-  }
-
-  const int* cols = crsm->cols();
-  for (int c = 0; c < crsm->num_nonzeros(); ++c) {
-    EXPECT_EQ(cols[c], expected_cols[c])
-        << c << " " << cols[c] << " " << expected_cols[c];
-  }
-}
-
-TEST(CovarianceImpl, ComputeCovarianceSparsityWithConstantParameterBlock) {
-  double parameters[10];
-
-  double* block1 = parameters;
-  double* block2 = block1 + 1;
-  double* block3 = block2 + 2;
-  double* block4 = block3 + 3;
-
-  ProblemImpl problem;
-
-  // Add in random order
-  Vector junk_jacobian = Vector::Zero(10);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 1, junk_jacobian.data()), nullptr, block1);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 4, junk_jacobian.data()), nullptr, block4);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 3, junk_jacobian.data()), nullptr, block3);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 2, junk_jacobian.data()), nullptr, block2);
-  problem.SetParameterBlockConstant(block3);
-
-  // Sparsity pattern
-  //
-  // Note that the problem structure does not imply this sparsity
-  // pattern since all the residual blocks are unary. But the
-  // ComputeCovarianceSparsity function in its current incarnation
-  // does not pay attention to this fact and only looks at the
-  // parameter block pairs that the user provides.
-  //
-  //  X . . X X X X
-  //  . X X . . . .
-  //  . X X . . . .
-  //  . . . X X X X
-  //  . . . X X X X
-  //  . . . X X X X
-  //  . . . X X X X
-
-  // clang-format off
-  int expected_rows[] = {0, 5, 7, 9, 13, 17, 21, 25};
-  int expected_cols[] = {0, 3, 4, 5, 6,
-                         1, 2,
-                         1, 2,
-                         3, 4, 5, 6,
-                         3, 4, 5, 6,
-                         3, 4, 5, 6,
-                         3, 4, 5, 6};
-  // clang-format on
-
-  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-  covariance_blocks.emplace_back(block1, block1);
-  covariance_blocks.emplace_back(block4, block4);
-  covariance_blocks.emplace_back(block2, block2);
-  covariance_blocks.emplace_back(block3, block3);
-  covariance_blocks.emplace_back(block2, block3);
-  covariance_blocks.emplace_back(block4, block1);  // reversed
-
-  Covariance::Options options;
-  CovarianceImpl covariance_impl(options);
-  EXPECT_TRUE(
-      covariance_impl.ComputeCovarianceSparsity(covariance_blocks, &problem));
-
-  const CompressedRowSparseMatrix* crsm = covariance_impl.covariance_matrix();
-
-  EXPECT_EQ(crsm->num_rows(), 7);
-  EXPECT_EQ(crsm->num_cols(), 7);
-  EXPECT_EQ(crsm->num_nonzeros(), 25);
-
-  const int* rows = crsm->rows();
-  for (int r = 0; r < crsm->num_rows() + 1; ++r) {
-    EXPECT_EQ(rows[r], expected_rows[r])
-        << r << " " << rows[r] << " " << expected_rows[r];
-  }
-
-  const int* cols = crsm->cols();
-  for (int c = 0; c < crsm->num_nonzeros(); ++c) {
-    EXPECT_EQ(cols[c], expected_cols[c])
-        << c << " " << cols[c] << " " << expected_cols[c];
-  }
-}
-
-TEST(CovarianceImpl, ComputeCovarianceSparsityWithFreeParameterBlock) {
-  double parameters[10];
-
-  double* block1 = parameters;
-  double* block2 = block1 + 1;
-  double* block3 = block2 + 2;
-  double* block4 = block3 + 3;
-
-  ProblemImpl problem;
-
-  // Add in random order
-  Vector junk_jacobian = Vector::Zero(10);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 1, junk_jacobian.data()), nullptr, block1);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 4, junk_jacobian.data()), nullptr, block4);
-  problem.AddParameterBlock(block3, 3);
-  problem.AddResidualBlock(
-      new UnaryCostFunction(1, 2, junk_jacobian.data()), nullptr, block2);
-
-  // Sparsity pattern
-  //
-  // Note that the problem structure does not imply this sparsity
-  // pattern since all the residual blocks are unary. But the
-  // ComputeCovarianceSparsity function in its current incarnation
-  // does not pay attention to this fact and only looks at the
-  // parameter block pairs that the user provides.
-  //
-  //  X . . X X X X
-  //  . X X . . . .
-  //  . X X . . . .
-  //  . . . X X X X
-  //  . . . X X X X
-  //  . . . X X X X
-  //  . . . X X X X
-
-  // clang-format off
-  int expected_rows[] = {0, 5, 7, 9, 13, 17, 21, 25};
-  int expected_cols[] = {0, 3, 4, 5, 6,
-                         1, 2,
-                         1, 2,
-                         3, 4, 5, 6,
-                         3, 4, 5, 6,
-                         3, 4, 5, 6,
-                         3, 4, 5, 6};
-  // clang-format on
-
-  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-  covariance_blocks.emplace_back(block1, block1);
-  covariance_blocks.emplace_back(block4, block4);
-  covariance_blocks.emplace_back(block2, block2);
-  covariance_blocks.emplace_back(block3, block3);
-  covariance_blocks.emplace_back(block2, block3);
-  covariance_blocks.emplace_back(block4, block1);  // reversed
-
-  Covariance::Options options;
-  CovarianceImpl covariance_impl(options);
-  EXPECT_TRUE(
-      covariance_impl.ComputeCovarianceSparsity(covariance_blocks, &problem));
-
-  const CompressedRowSparseMatrix* crsm = covariance_impl.covariance_matrix();
-
-  EXPECT_EQ(crsm->num_rows(), 7);
-  EXPECT_EQ(crsm->num_cols(), 7);
-  EXPECT_EQ(crsm->num_nonzeros(), 25);
-
-  const int* rows = crsm->rows();
-  for (int r = 0; r < crsm->num_rows() + 1; ++r) {
-    EXPECT_EQ(rows[r], expected_rows[r])
-        << r << " " << rows[r] << " " << expected_rows[r];
-  }
-
-  const int* cols = crsm->cols();
-  for (int c = 0; c < crsm->num_nonzeros(); ++c) {
-    EXPECT_EQ(cols[c], expected_cols[c])
-        << c << " " << cols[c] << " " << expected_cols[c];
-  }
-}
-
-// x_plus_delta = delta * x;
-class PolynomialManifold : public Manifold {
- public:
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const final {
-    x_plus_delta[0] = delta[0] * x[0];
-    x_plus_delta[1] = delta[0] * x[1];
-    return true;
-  }
-
-  bool Minus(const double* y, const double* x, double* y_minus_x) const final {
-    LOG(FATAL) << "Should not be called";
-    return true;
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const final {
-    jacobian[0] = x[0];
-    jacobian[1] = x[1];
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const final {
-    LOG(FATAL) << "Should not be called";
-    return true;
-  }
-
-  int AmbientSize() const final { return 2; }
-  int TangentSize() const final { return 1; }
-};
-
-class CovarianceTest : public ::testing::Test {
- protected:
-  // TODO(sameeragarwal): Investigate if this should be an ordered or an
-  // unordered map.
-  using BoundsMap = std::map<const double*, std::pair<int, int>>;
-
-  void SetUp() override {
-    double* x = parameters_;
-    double* y = x + 2;
-    double* z = y + 3;
-
-    x[0] = 1;
-    x[1] = 1;
-    y[0] = 2;
-    y[1] = 2;
-    y[2] = 2;
-    z[0] = 3;
-
-    {
-      double jacobian[] = {1.0, 0.0, 0.0, 1.0};
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(2, 2, jacobian), nullptr, x);
-    }
-
-    {
-      double jacobian[] = {2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0};
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(3, 3, jacobian), nullptr, y);
-    }
-
-    {
-      double jacobian = 5.0;
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(1, 1, &jacobian), nullptr, z);
-    }
-
-    {
-      double jacobian1[] = {1.0, 2.0, 3.0};
-      double jacobian2[] = {-5.0, -6.0};
-      problem_.AddResidualBlock(
-          new BinaryCostFunction(1, 3, 2, jacobian1, jacobian2), nullptr, y, x);
-    }
-
-    {
-      double jacobian1[] = {2.0};
-      double jacobian2[] = {3.0, -2.0};
-      problem_.AddResidualBlock(
-          new BinaryCostFunction(1, 1, 2, jacobian1, jacobian2), nullptr, z, x);
-    }
-
-    all_covariance_blocks_.emplace_back(x, x);
-    all_covariance_blocks_.emplace_back(y, y);
-    all_covariance_blocks_.emplace_back(z, z);
-    all_covariance_blocks_.emplace_back(x, y);
-    all_covariance_blocks_.emplace_back(x, z);
-    all_covariance_blocks_.emplace_back(y, z);
-
-    column_bounds_[x] = std::make_pair(0, 2);
-    column_bounds_[y] = std::make_pair(2, 5);
-    column_bounds_[z] = std::make_pair(5, 6);
-  }
-
-  // Computes covariance in ambient space.
-  void ComputeAndCompareCovarianceBlocks(const Covariance::Options& options,
-                                         const double* expected_covariance) {
-    ComputeAndCompareCovarianceBlocksInTangentOrAmbientSpace(
-        options,
-        true,  // ambient
-        expected_covariance);
-  }
-
-  // Computes covariance in tangent space.
-  void ComputeAndCompareCovarianceBlocksInTangentSpace(
-      const Covariance::Options& options, const double* expected_covariance) {
-    ComputeAndCompareCovarianceBlocksInTangentOrAmbientSpace(
-        options,
-        false,  // tangent
-        expected_covariance);
-  }
-
-  void ComputeAndCompareCovarianceBlocksInTangentOrAmbientSpace(
-      const Covariance::Options& options,
-      bool lift_covariance_to_ambient_space,
-      const double* expected_covariance) {
-    // Generate all possible combination of block pairs and check if the
-    // covariance computation is correct.
-    for (int i = 0; i <= 64; ++i) {
-      std::vector<std::pair<const double*, const double*>> covariance_blocks;
-      if (i & 1) {
-        covariance_blocks.push_back(all_covariance_blocks_[0]);
-      }
-
-      if (i & 2) {
-        covariance_blocks.push_back(all_covariance_blocks_[1]);
-      }
-
-      if (i & 4) {
-        covariance_blocks.push_back(all_covariance_blocks_[2]);
-      }
-
-      if (i & 8) {
-        covariance_blocks.push_back(all_covariance_blocks_[3]);
-      }
-
-      if (i & 16) {
-        covariance_blocks.push_back(all_covariance_blocks_[4]);
-      }
-
-      if (i & 32) {
-        covariance_blocks.push_back(all_covariance_blocks_[5]);
-      }
-
-      Covariance covariance(options);
-      EXPECT_TRUE(covariance.Compute(covariance_blocks, &problem_));
-
-      for (auto& covariance_block : covariance_blocks) {
-        const double* block1 = covariance_block.first;
-        const double* block2 = covariance_block.second;
-        // block1, block2
-        GetCovarianceBlockAndCompare(block1,
-                                     block2,
-                                     lift_covariance_to_ambient_space,
-                                     covariance,
-                                     expected_covariance);
-        // block2, block1
-        GetCovarianceBlockAndCompare(block2,
-                                     block1,
-                                     lift_covariance_to_ambient_space,
-                                     covariance,
-                                     expected_covariance);
-      }
-    }
-  }
-
-  void GetCovarianceBlockAndCompare(const double* block1,
-                                    const double* block2,
-                                    bool lift_covariance_to_ambient_space,
-                                    const Covariance& covariance,
-                                    const double* expected_covariance) {
-    const BoundsMap& column_bounds = lift_covariance_to_ambient_space
-                                         ? column_bounds_
-                                         : local_column_bounds_;
-    const int row_begin = FindOrDie(column_bounds, block1).first;
-    const int row_end = FindOrDie(column_bounds, block1).second;
-    const int col_begin = FindOrDie(column_bounds, block2).first;
-    const int col_end = FindOrDie(column_bounds, block2).second;
-
-    Matrix actual(row_end - row_begin, col_end - col_begin);
-    if (lift_covariance_to_ambient_space) {
-      EXPECT_TRUE(covariance.GetCovarianceBlock(block1, block2, actual.data()));
-    } else {
-      EXPECT_TRUE(covariance.GetCovarianceBlockInTangentSpace(
-          block1, block2, actual.data()));
-    }
-
-    int dof = 0;  // degrees of freedom = sum of LocalSize()s
-    for (const auto& bound : column_bounds) {
-      dof = std::max(dof, bound.second.second);
-    }
-    ConstMatrixRef expected(expected_covariance, dof, dof);
-    double diff_norm =
-        (expected.block(
-             row_begin, col_begin, row_end - row_begin, col_end - col_begin) -
-         actual)
-            .norm();
-    diff_norm /= (row_end - row_begin) * (col_end - col_begin);
-
-    const double kTolerance = 1e-5;
-    EXPECT_NEAR(diff_norm, 0.0, kTolerance)
-        << "rows: " << row_begin << " " << row_end << "  "
-        << "cols: " << col_begin << " " << col_end << "  "
-        << "\n\n expected: \n "
-        << expected.block(
-               row_begin, col_begin, row_end - row_begin, col_end - col_begin)
-        << "\n\n actual: \n " << actual << "\n\n full expected: \n"
-        << expected;
-  }
-
-  double parameters_[6];
-  Problem problem_;
-  std::vector<std::pair<const double*, const double*>> all_covariance_blocks_;
-  BoundsMap column_bounds_;
-  BoundsMap local_column_bounds_;
-};
-
-TEST_F(CovarianceTest, NormalBehavior) {
-  // J
-  //
-  //   1  0  0  0  0  0
-  //   0  1  0  0  0  0
-  //   0  0  2  0  0  0
-  //   0  0  0  2  0  0
-  //   0  0  0  0  2  0
-  //   0  0  0  0  0  5
-  //  -5 -6  1  2  3  0
-  //   3 -2  0  0  0  2
-
-  // J'J
-  //
-  //   35  24 -5 -10 -15  6
-  //   24  41 -6 -12 -18 -4
-  //   -5  -6  5   2   3  0
-  //  -10 -12  2   8   6  0
-  //  -15 -18  3   6  13  0
-  //    6  -4  0   0   0 29
-
-  // inv(J'J) computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-     7.0747e-02,  -8.4923e-03,   1.6821e-02,   3.3643e-02,   5.0464e-02,  -1.5809e-02,  // NOLINT
-    -8.4923e-03,   8.1352e-02,   2.4758e-02,   4.9517e-02,   7.4275e-02,   1.2978e-02,  // NOLINT
-     1.6821e-02,   2.4758e-02,   2.4904e-01,  -1.9271e-03,  -2.8906e-03,  -6.5325e-05,  // NOLINT
-     3.3643e-02,   4.9517e-02,  -1.9271e-03,   2.4615e-01,  -5.7813e-03,  -1.3065e-04,  // NOLINT
-     5.0464e-02,   7.4275e-02,  -2.8906e-03,  -5.7813e-03,   2.4133e-01,  -1.9598e-04,  // NOLINT
-    -1.5809e-02,   1.2978e-02,  -6.5325e-05,  -1.3065e-04,  -1.9598e-04,   3.9544e-02,  // NOLINT
-  };
-  // clang-format on
-
-  Covariance::Options options;
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, ThreadedNormalBehavior) {
-  // J
-  //
-  //   1  0  0  0  0  0
-  //   0  1  0  0  0  0
-  //   0  0  2  0  0  0
-  //   0  0  0  2  0  0
-  //   0  0  0  0  2  0
-  //   0  0  0  0  0  5
-  //  -5 -6  1  2  3  0
-  //   3 -2  0  0  0  2
-
-  // J'J
-  //
-  //   35  24 -5 -10 -15  6
-  //   24  41 -6 -12 -18 -4
-  //   -5  -6  5   2   3  0
-  //  -10 -12  2   8   6  0
-  //  -15 -18  3   6  13  0
-  //    6  -4  0   0   0 29
-
-  // inv(J'J) computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-     7.0747e-02,  -8.4923e-03,   1.6821e-02,   3.3643e-02,   5.0464e-02,  -1.5809e-02,  // NOLINT
-    -8.4923e-03,   8.1352e-02,   2.4758e-02,   4.9517e-02,   7.4275e-02,   1.2978e-02,  // NOLINT
-     1.6821e-02,   2.4758e-02,   2.4904e-01,  -1.9271e-03,  -2.8906e-03,  -6.5325e-05,  // NOLINT
-     3.3643e-02,   4.9517e-02,  -1.9271e-03,   2.4615e-01,  -5.7813e-03,  -1.3065e-04,  // NOLINT
-     5.0464e-02,   7.4275e-02,  -2.8906e-03,  -5.7813e-03,   2.4133e-01,  -1.9598e-04,  // NOLINT
-    -1.5809e-02,   1.2978e-02,  -6.5325e-05,  -1.3065e-04,  -1.9598e-04,   3.9544e-02,  // NOLINT
-  };
-  // clang-format on
-
-  Covariance::Options options;
-  options.num_threads = 4;
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, ConstantParameterBlock) {
-  problem_.SetParameterBlockConstant(parameters_);
-
-  // J
-  //
-  //  0  0  0  0  0  0
-  //  0  0  0  0  0  0
-  //  0  0  2  0  0  0
-  //  0  0  0  2  0  0
-  //  0  0  0  0  2  0
-  //  0  0  0  0  0  5
-  //  0  0  1  2  3  0
-  //  0  0  0  0  0  2
-
-  // J'J
-  //
-  //  0  0  0  0  0  0
-  //  0  0  0  0  0  0
-  //  0  0  5  2  3  0
-  //  0  0  2  8  6  0
-  //  0  0  3  6 13  0
-  //  0  0  0  0  0 29
-
-  // pinv(J'J) computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-              0,            0,            0,            0,            0,            0,  // NOLINT
-              0,            0,            0,            0,            0,            0,  // NOLINT
-              0,            0,      0.23611,     -0.02778,     -0.04167,     -0.00000,  // NOLINT
-              0,            0,     -0.02778,      0.19444,     -0.08333,     -0.00000,  // NOLINT
-              0,            0,     -0.04167,     -0.08333,      0.12500,     -0.00000,  // NOLINT
-              0,            0,     -0.00000,     -0.00000,     -0.00000,      0.03448   // NOLINT
-      // clang-format on
-  };
-
-  Covariance::Options options;
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, Manifold) {
-  double* x = parameters_;
-  double* y = x + 2;
-
-  problem_.SetManifold(x, new PolynomialManifold);
-
-  std::vector<int> subset;
-  subset.push_back(2);
-  problem_.SetManifold(y, new SubsetManifold(3, subset));
-
-  // Raw Jacobian: J
-  //
-  //   1   0  0  0  0  0
-  //   0   1  0  0  0  0
-  //   0   0  2  0  0  0
-  //   0   0  0  2  0  0
-  //   0   0  0  0  2  0
-  //   0   0  0  0  0  5
-  //  -5  -6  1  2  3  0
-  //   3  -2  0  0  0  2
-
-  // Local to global jacobian: A
-  //
-  //  1   0   0   0
-  //  1   0   0   0
-  //  0   1   0   0
-  //  0   0   1   0
-  //  0   0   0   0
-  //  0   0   0   1
-
-  // A * inv((J*A)'*(J*A)) * A'
-  // Computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-    0.01766,   0.01766,   0.02158,   0.04316,   0.00000,  -0.00122,
-    0.01766,   0.01766,   0.02158,   0.04316,   0.00000,  -0.00122,
-    0.02158,   0.02158,   0.24860,  -0.00281,   0.00000,  -0.00149,
-    0.04316,   0.04316,  -0.00281,   0.24439,   0.00000,  -0.00298,
-    0.00000,   0.00000,   0.00000,   0.00000,   0.00000,   0.00000,
-   -0.00122,  -0.00122,  -0.00149,  -0.00298,   0.00000,   0.03457
-  };
-  // clang-format on
-
-  Covariance::Options options;
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, ManifoldInTangentSpace) {
-  double* x = parameters_;
-  double* y = x + 2;
-  double* z = y + 3;
-
-  problem_.SetManifold(x, new PolynomialManifold);
-
-  std::vector<int> subset;
-  subset.push_back(2);
-  problem_.SetManifold(y, new SubsetManifold(3, subset));
-
-  local_column_bounds_[x] = std::make_pair(0, 1);
-  local_column_bounds_[y] = std::make_pair(1, 3);
-  local_column_bounds_[z] = std::make_pair(3, 4);
-
-  // Raw Jacobian: J
-  //
-  //   1   0  0  0  0  0
-  //   0   1  0  0  0  0
-  //   0   0  2  0  0  0
-  //   0   0  0  2  0  0
-  //   0   0  0  0  2  0
-  //   0   0  0  0  0  5
-  //  -5  -6  1  2  3  0
-  //   3  -2  0  0  0  2
-
-  // Local to global jacobian: A
-  //
-  //  1   0   0   0
-  //  1   0   0   0
-  //  0   1   0   0
-  //  0   0   1   0
-  //  0   0   0   0
-  //  0   0   0   1
-
-  // inv((J*A)'*(J*A))
-  // Computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-    0.01766,   0.02158,   0.04316,   -0.00122,
-    0.02158,   0.24860,  -0.00281,   -0.00149,
-    0.04316,  -0.00281,   0.24439,   -0.00298,
-   -0.00122,  -0.00149,  -0.00298,    0.03457  // NOLINT
-  };
-  // clang-format on
-
-  Covariance::Options options;
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, ManifoldInTangentSpaceWithConstantBlocks) {
-  double* x = parameters_;
-  double* y = x + 2;
-  double* z = y + 3;
-
-  problem_.SetManifold(x, new PolynomialManifold);
-  problem_.SetParameterBlockConstant(x);
-
-  std::vector<int> subset;
-  subset.push_back(2);
-  problem_.SetManifold(y, new SubsetManifold(3, subset));
-  problem_.SetParameterBlockConstant(y);
-
-  local_column_bounds_[x] = std::make_pair(0, 1);
-  local_column_bounds_[y] = std::make_pair(1, 3);
-  local_column_bounds_[z] = std::make_pair(3, 4);
-
-  // Raw Jacobian: J
-  //
-  //   1   0  0  0  0  0
-  //   0   1  0  0  0  0
-  //   0   0  2  0  0  0
-  //   0   0  0  2  0  0
-  //   0   0  0  0  2  0
-  //   0   0  0  0  0  5
-  //  -5  -6  1  2  3  0
-  //   3  -2  0  0  0  2
-
-  // Local to global jacobian: A
-  //
-  //  0   0   0   0
-  //  0   0   0   0
-  //  0   0   0   0
-  //  0   0   0   0
-  //  0   0   0   0
-  //  0   0   0   1
-
-  // pinv((J*A)'*(J*A))
-  // Computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-    0.0, 0.0, 0.0, 0.0,
-    0.0, 0.0, 0.0, 0.0,
-    0.0, 0.0, 0.0, 0.0,
-    0.0, 0.0, 0.0, 0.034482 // NOLINT
-  };
-  // clang-format on
-
-  Covariance::Options options;
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, TruncatedRank) {
-  // J
-  //
-  //   1  0  0  0  0  0
-  //   0  1  0  0  0  0
-  //   0  0  2  0  0  0
-  //   0  0  0  2  0  0
-  //   0  0  0  0  2  0
-  //   0  0  0  0  0  5
-  //  -5 -6  1  2  3  0
-  //   3 -2  0  0  0  2
-
-  // J'J
-  //
-  //   35  24 -5 -10 -15  6
-  //   24  41 -6 -12 -18 -4
-  //   -5  -6  5   2   3  0
-  //  -10 -12  2   8   6  0
-  //  -15 -18  3   6  13  0
-  //    6  -4  0   0   0 29
-
-  // 3.4142 is the smallest eigenvalue of J'J. The following matrix
-  // was obtained by dropping the eigenvector corresponding to this
-  // eigenvalue.
-  // clang-format off
-  double expected_covariance[] = {
-     5.4135e-02,  -3.5121e-02,   1.7257e-04,   3.4514e-04,   5.1771e-04,  -1.6076e-02,  // NOLINT
-    -3.5121e-02,   3.8667e-02,  -1.9288e-03,  -3.8576e-03,  -5.7864e-03,   1.2549e-02,  // NOLINT
-     1.7257e-04,  -1.9288e-03,   2.3235e-01,  -3.5297e-02,  -5.2946e-02,  -3.3329e-04,  // NOLINT
-     3.4514e-04,  -3.8576e-03,  -3.5297e-02,   1.7941e-01,  -1.0589e-01,  -6.6659e-04,  // NOLINT
-     5.1771e-04,  -5.7864e-03,  -5.2946e-02,  -1.0589e-01,   9.1162e-02,  -9.9988e-04,  // NOLINT
-    -1.6076e-02,   1.2549e-02,  -3.3329e-04,  -6.6659e-04,  -9.9988e-04,   3.9539e-02   // NOLINT
-  };
-  // clang-format on
-
-  {
-    Covariance::Options options;
-    options.algorithm_type = DENSE_SVD;
-    // Force dropping of the smallest eigenvector.
-    options.null_space_rank = 1;
-    ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-  }
-
-  {
-    Covariance::Options options;
-    options.algorithm_type = DENSE_SVD;
-    // Force dropping of the smallest eigenvector via the ratio but
-    // automatic truncation.
-    options.min_reciprocal_condition_number = 0.044494;
-    options.null_space_rank = -1;
-    ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-  }
-}
-
-TEST_F(CovarianceTest, DenseCovarianceMatrixFromSetOfParameters) {
-  Covariance::Options options;
-  Covariance covariance(options);
-  double* x = parameters_;
-  double* y = x + 2;
-  double* z = y + 3;
-  std::vector<const double*> parameter_blocks;
-  parameter_blocks.push_back(x);
-  parameter_blocks.push_back(y);
-  parameter_blocks.push_back(z);
-  covariance.Compute(parameter_blocks, &problem_);
-  double expected_covariance[36];
-  covariance.GetCovarianceMatrix(parameter_blocks, expected_covariance);
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, DenseCovarianceMatrixFromSetOfParametersThreaded) {
-  Covariance::Options options;
-  options.num_threads = 4;
-  Covariance covariance(options);
-  double* x = parameters_;
-  double* y = x + 2;
-  double* z = y + 3;
-  std::vector<const double*> parameter_blocks;
-  parameter_blocks.push_back(x);
-  parameter_blocks.push_back(y);
-  parameter_blocks.push_back(z);
-  covariance.Compute(parameter_blocks, &problem_);
-  double expected_covariance[36];
-  covariance.GetCovarianceMatrix(parameter_blocks, expected_covariance);
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, DenseCovarianceMatrixFromSetOfParametersInTangentSpace) {
-  Covariance::Options options;
-  Covariance covariance(options);
-  double* x = parameters_;
-  double* y = x + 2;
-  double* z = y + 3;
-
-  problem_.SetManifold(x, new PolynomialManifold);
-
-  std::vector<int> subset;
-  subset.push_back(2);
-  problem_.SetManifold(y, new SubsetManifold(3, subset));
-
-  local_column_bounds_[x] = std::make_pair(0, 1);
-  local_column_bounds_[y] = std::make_pair(1, 3);
-  local_column_bounds_[z] = std::make_pair(3, 4);
-
-  std::vector<const double*> parameter_blocks;
-  parameter_blocks.push_back(x);
-  parameter_blocks.push_back(y);
-  parameter_blocks.push_back(z);
-  covariance.Compute(parameter_blocks, &problem_);
-  double expected_covariance[16];
-  covariance.GetCovarianceMatrixInTangentSpace(parameter_blocks,
-                                               expected_covariance);
-
-#ifndef CERES_NO_SUITESPARSE
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-#endif
-
-  options.algorithm_type = DENSE_SVD;
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-
-  options.algorithm_type = SPARSE_QR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  ComputeAndCompareCovarianceBlocksInTangentSpace(options, expected_covariance);
-}
-
-TEST_F(CovarianceTest, ComputeCovarianceFailure) {
-  Covariance::Options options;
-  Covariance covariance(options);
-  double* x = parameters_;
-  double* y = x + 2;
-  std::vector<const double*> parameter_blocks;
-  parameter_blocks.push_back(x);
-  parameter_blocks.push_back(x);
-  parameter_blocks.push_back(y);
-  parameter_blocks.push_back(y);
-  EXPECT_DEATH_IF_SUPPORTED(covariance.Compute(parameter_blocks, &problem_),
-                            "Covariance::Compute called with duplicate blocks "
-                            "at indices \\(0, 1\\) and \\(2, 3\\)");
-  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-  covariance_blocks.emplace_back(x, x);
-  covariance_blocks.emplace_back(x, x);
-  covariance_blocks.emplace_back(y, y);
-  covariance_blocks.emplace_back(y, y);
-  EXPECT_DEATH_IF_SUPPORTED(covariance.Compute(covariance_blocks, &problem_),
-                            "Covariance::Compute called with duplicate blocks "
-                            "at indices \\(0, 1\\) and \\(2, 3\\)");
-}
-
-class RankDeficientCovarianceTest : public CovarianceTest {
- protected:
-  void SetUp() final {
-    double* x = parameters_;
-    double* y = x + 2;
-    double* z = y + 3;
-
-    {
-      double jacobian[] = {1.0, 0.0, 0.0, 1.0};
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(2, 2, jacobian), nullptr, x);
-    }
-
-    {
-      double jacobian[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(3, 3, jacobian), nullptr, y);
-    }
-
-    {
-      double jacobian = 5.0;
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(1, 1, &jacobian), nullptr, z);
-    }
-
-    {
-      double jacobian1[] = {0.0, 0.0, 0.0};
-      double jacobian2[] = {-5.0, -6.0};
-      problem_.AddResidualBlock(
-          new BinaryCostFunction(1, 3, 2, jacobian1, jacobian2), nullptr, y, x);
-    }
-
-    {
-      double jacobian1[] = {2.0};
-      double jacobian2[] = {3.0, -2.0};
-      problem_.AddResidualBlock(
-          new BinaryCostFunction(1, 1, 2, jacobian1, jacobian2), nullptr, z, x);
-    }
-
-    all_covariance_blocks_.emplace_back(x, x);
-    all_covariance_blocks_.emplace_back(y, y);
-    all_covariance_blocks_.emplace_back(z, z);
-    all_covariance_blocks_.emplace_back(x, y);
-    all_covariance_blocks_.emplace_back(x, z);
-    all_covariance_blocks_.emplace_back(y, z);
-
-    column_bounds_[x] = std::make_pair(0, 2);
-    column_bounds_[y] = std::make_pair(2, 5);
-    column_bounds_[z] = std::make_pair(5, 6);
-  }
-};
-
-TEST_F(RankDeficientCovarianceTest, AutomaticTruncation) {
-  // J
-  //
-  //   1  0  0  0  0  0
-  //   0  1  0  0  0  0
-  //   0  0  0  0  0  0
-  //   0  0  0  0  0  0
-  //   0  0  0  0  0  0
-  //   0  0  0  0  0  5
-  //  -5 -6  0  0  0  0
-  //   3 -2  0  0  0  2
-
-  // J'J
-  //
-  //  35 24  0  0  0  6
-  //  24 41  0  0  0 -4
-  //   0  0  0  0  0  0
-  //   0  0  0  0  0  0
-  //   0  0  0  0  0  0
-  //   6 -4  0  0  0 29
-
-  // pinv(J'J) computed using octave.
-  // clang-format off
-  double expected_covariance[] = {
-     0.053998,  -0.033145,   0.000000,   0.000000,   0.000000,  -0.015744,
-    -0.033145,   0.045067,   0.000000,   0.000000,   0.000000,   0.013074,
-     0.000000,   0.000000,   0.000000,   0.000000,   0.000000,   0.000000,
-     0.000000,   0.000000,   0.000000,   0.000000,   0.000000,   0.000000,
-     0.000000,   0.000000,   0.000000,   0.000000,   0.000000,   0.000000,
-    -0.015744,   0.013074,   0.000000,   0.000000,   0.000000,   0.039543
-  };
-  // clang-format on
-
-  Covariance::Options options;
-  options.algorithm_type = DENSE_SVD;
-  options.null_space_rank = -1;
-  ComputeAndCompareCovarianceBlocks(options, expected_covariance);
-}
-
-struct LinearCostFunction {
-  template <typename T>
-  bool operator()(const T* x, const T* y, T* residual) const {
-    residual[0] = T(10.0) - *x;
-    residual[1] = T(5.0) - *y;
-    return true;
-  }
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<LinearCostFunction, 2, 1, 1>(
-        new LinearCostFunction);
-  }
-};
-
-TEST(Covariance, ZeroSizedManifoldGetCovariance) {
-  double x = 0.0;
-  double y = 1.0;
-  Problem problem;
-  problem.AddResidualBlock(LinearCostFunction::Create(), nullptr, &x, &y);
-  problem.SetManifold(&y, new SubsetManifold(1, {0}));
-  // J = [-1 0]
-  //     [ 0 0]
-  Covariance::Options options;
-  options.algorithm_type = DENSE_SVD;
-  Covariance covariance(options);
-  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-  covariance_blocks.emplace_back(&x, &x);
-  covariance_blocks.emplace_back(&x, &y);
-  covariance_blocks.emplace_back(&y, &x);
-  covariance_blocks.emplace_back(&y, &y);
-  EXPECT_TRUE(covariance.Compute(covariance_blocks, &problem));
-
-  double value = -1;
-  covariance.GetCovarianceBlock(&x, &x, &value);
-  EXPECT_NEAR(value, 1.0, std::numeric_limits<double>::epsilon());
-
-  value = -1;
-  covariance.GetCovarianceBlock(&x, &y, &value);
-  EXPECT_NEAR(value, 0.0, std::numeric_limits<double>::epsilon());
-
-  value = -1;
-  covariance.GetCovarianceBlock(&y, &x, &value);
-  EXPECT_NEAR(value, 0.0, std::numeric_limits<double>::epsilon());
-
-  value = -1;
-  covariance.GetCovarianceBlock(&y, &y, &value);
-  EXPECT_NEAR(value, 0.0, std::numeric_limits<double>::epsilon());
-}
-
-TEST(Covariance, ZeroSizedManifoldGetCovarianceInTangentSpace) {
-  double x = 0.0;
-  double y = 1.0;
-  Problem problem;
-  problem.AddResidualBlock(LinearCostFunction::Create(), nullptr, &x, &y);
-  problem.SetManifold(&y, new SubsetManifold(1, {0}));
-  // J = [-1 0]
-  //     [ 0 0]
-  Covariance::Options options;
-  options.algorithm_type = DENSE_SVD;
-  Covariance covariance(options);
-  std::vector<std::pair<const double*, const double*>> covariance_blocks;
-  covariance_blocks.emplace_back(&x, &x);
-  covariance_blocks.emplace_back(&x, &y);
-  covariance_blocks.emplace_back(&y, &x);
-  covariance_blocks.emplace_back(&y, &y);
-  EXPECT_TRUE(covariance.Compute(covariance_blocks, &problem));
-
-  double value = -1;
-  covariance.GetCovarianceBlockInTangentSpace(&x, &x, &value);
-  EXPECT_NEAR(value, 1.0, std::numeric_limits<double>::epsilon());
-
-  value = -1;
-  // The following three calls, should not touch this value, since the
-  // tangent space is of size zero
-  covariance.GetCovarianceBlockInTangentSpace(&x, &y, &value);
-  EXPECT_EQ(value, -1);
-  covariance.GetCovarianceBlockInTangentSpace(&y, &x, &value);
-  EXPECT_EQ(value, -1);
-  covariance.GetCovarianceBlockInTangentSpace(&y, &y, &value);
-  EXPECT_EQ(value, -1);
-}
-
-class LargeScaleCovarianceTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    num_parameter_blocks_ = 2000;
-    parameter_block_size_ = 5;
-    parameters_ = std::make_unique<double[]>(parameter_block_size_ *
-                                             num_parameter_blocks_);
-
-    Matrix jacobian(parameter_block_size_, parameter_block_size_);
-    for (int i = 0; i < num_parameter_blocks_; ++i) {
-      jacobian.setIdentity();
-      jacobian *= (i + 1);
-
-      double* block_i = parameters_.get() + i * parameter_block_size_;
-      problem_.AddResidualBlock(
-          new UnaryCostFunction(
-              parameter_block_size_, parameter_block_size_, jacobian.data()),
-          nullptr,
-          block_i);
-      for (int j = i; j < num_parameter_blocks_; ++j) {
-        double* block_j = parameters_.get() + j * parameter_block_size_;
-        all_covariance_blocks_.emplace_back(block_i, block_j);
-      }
-    }
-  }
-
-  void ComputeAndCompare(
-      CovarianceAlgorithmType algorithm_type,
-      SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-      int num_threads) {
-    Covariance::Options options;
-    options.algorithm_type = algorithm_type;
-    options.sparse_linear_algebra_library_type =
-        sparse_linear_algebra_library_type;
-    options.num_threads = num_threads;
-    Covariance covariance(options);
-    EXPECT_TRUE(covariance.Compute(all_covariance_blocks_, &problem_));
-
-    Matrix expected(parameter_block_size_, parameter_block_size_);
-    Matrix actual(parameter_block_size_, parameter_block_size_);
-    const double kTolerance = 1e-16;
-
-    for (int i = 0; i < num_parameter_blocks_; ++i) {
-      expected.setIdentity();
-      expected /= (i + 1.0) * (i + 1.0);
-
-      double* block_i = parameters_.get() + i * parameter_block_size_;
-      covariance.GetCovarianceBlock(block_i, block_i, actual.data());
-      EXPECT_NEAR((expected - actual).norm(), 0.0, kTolerance)
-          << "block: " << i << ", " << i << "\n"
-          << "expected: \n"
-          << expected << "\n"
-          << "actual: \n"
-          << actual;
-
-      expected.setZero();
-      for (int j = i + 1; j < num_parameter_blocks_; ++j) {
-        double* block_j = parameters_.get() + j * parameter_block_size_;
-        covariance.GetCovarianceBlock(block_i, block_j, actual.data());
-        EXPECT_NEAR((expected - actual).norm(), 0.0, kTolerance)
-            << "block: " << i << ", " << j << "\n"
-            << "expected: \n"
-            << expected << "\n"
-            << "actual: \n"
-            << actual;
-      }
-    }
-  }
-
-  std::unique_ptr<double[]> parameters_;
-  int parameter_block_size_;
-  int num_parameter_blocks_;
-
-  Problem problem_;
-  std::vector<std::pair<const double*, const double*>> all_covariance_blocks_;
-};
-
-#if !defined(CERES_NO_SUITESPARSE)
-
-TEST_F(LargeScaleCovarianceTest, Parallel) {
-  ComputeAndCompare(SPARSE_QR, SUITE_SPARSE, 4);
-}
-
-#endif  // !defined(CERES_NO_SUITESPARSE)
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cubic_interpolation_test.cc b/third_party/ceres/internal/ceres/cubic_interpolation_test.cc
deleted file mode 100644
index c02951e..0000000
--- a/third_party/ceres/internal/ceres/cubic_interpolation_test.cc
+++ /dev/null
@@ -1,532 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/cubic_interpolation.h"
-
-#include <memory>
-
-#include "ceres/jet.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-static constexpr double kTolerance = 1e-12;
-
-TEST(Grid1D, OneDataDimension) {
-  int x[] = {1, 2, 3};
-  Grid1D<int, 1> grid(x, 0, 3);
-  for (int i = 0; i < 3; ++i) {
-    double value;
-    grid.GetValue(i, &value);
-    EXPECT_EQ(value, static_cast<double>(i + 1));
-  }
-}
-
-TEST(Grid1D, OneDataDimensionOutOfBounds) {
-  int x[] = {1, 2, 3};
-  Grid1D<int, 1> grid(x, 0, 3);
-  double value;
-  grid.GetValue(-1, &value);
-  EXPECT_EQ(value, x[0]);
-  grid.GetValue(-2, &value);
-  EXPECT_EQ(value, x[0]);
-  grid.GetValue(3, &value);
-  EXPECT_EQ(value, x[2]);
-  grid.GetValue(4, &value);
-  EXPECT_EQ(value, x[2]);
-}
-
-TEST(Grid1D, TwoDataDimensionIntegerDataInterleaved) {
-  // clang-format off
-  int x[] = {1, 5,
-             2, 6,
-             3, 7};
-  // clang-format on
-
-  Grid1D<int, 2, true> grid(x, 0, 3);
-  for (int i = 0; i < 3; ++i) {
-    double value[2];
-    grid.GetValue(i, value);
-    EXPECT_EQ(value[0], static_cast<double>(i + 1));
-    EXPECT_EQ(value[1], static_cast<double>(i + 5));
-  }
-}
-
-TEST(Grid1D, TwoDataDimensionIntegerDataStacked) {
-  // clang-format off
-  int x[] = {1, 2, 3,
-             5, 6, 7};
-  // clang-format on
-
-  Grid1D<int, 2, false> grid(x, 0, 3);
-  for (int i = 0; i < 3; ++i) {
-    double value[2];
-    grid.GetValue(i, value);
-    EXPECT_EQ(value[0], static_cast<double>(i + 1));
-    EXPECT_EQ(value[1], static_cast<double>(i + 5));
-  }
-}
-
-TEST(Grid2D, OneDataDimensionRowMajor) {
-  // clang-format off
-  int x[] = {1, 2, 3,
-             2, 3, 4};
-  // clang-format on
-  Grid2D<int, 1, true, true> grid(x, 0, 2, 0, 3);
-  for (int r = 0; r < 2; ++r) {
-    for (int c = 0; c < 3; ++c) {
-      double value;
-      grid.GetValue(r, c, &value);
-      EXPECT_EQ(value, static_cast<double>(r + c + 1));
-    }
-  }
-}
-
-TEST(Grid2D, OneDataDimensionRowMajorOutOfBounds) {
-  // clang-format off
-  int x[] = {1, 2, 3,
-             2, 3, 4};
-  // clang-format on
-  Grid2D<int, 1, true, true> grid(x, 0, 2, 0, 3);
-  double value;
-  grid.GetValue(-1, -1, &value);
-  EXPECT_EQ(value, x[0]);
-  grid.GetValue(-1, 0, &value);
-  EXPECT_EQ(value, x[0]);
-  grid.GetValue(-1, 1, &value);
-  EXPECT_EQ(value, x[1]);
-  grid.GetValue(-1, 2, &value);
-  EXPECT_EQ(value, x[2]);
-  grid.GetValue(-1, 3, &value);
-  EXPECT_EQ(value, x[2]);
-  grid.GetValue(0, 3, &value);
-  EXPECT_EQ(value, x[2]);
-  grid.GetValue(1, 3, &value);
-  EXPECT_EQ(value, x[5]);
-  grid.GetValue(2, 3, &value);
-  EXPECT_EQ(value, x[5]);
-  grid.GetValue(2, 2, &value);
-  EXPECT_EQ(value, x[5]);
-  grid.GetValue(2, 1, &value);
-  EXPECT_EQ(value, x[4]);
-  grid.GetValue(2, 0, &value);
-  EXPECT_EQ(value, x[3]);
-  grid.GetValue(2, -1, &value);
-  EXPECT_EQ(value, x[3]);
-  grid.GetValue(1, -1, &value);
-  EXPECT_EQ(value, x[3]);
-  grid.GetValue(0, -1, &value);
-  EXPECT_EQ(value, x[0]);
-}
-
-TEST(Grid2D, TwoDataDimensionRowMajorInterleaved) {
-  // clang-format off
-  int x[] = {1, 4, 2, 8, 3, 12,
-             2, 8, 3, 12, 4, 16};
-  // clang-format on
-  Grid2D<int, 2, true, true> grid(x, 0, 2, 0, 3);
-  for (int r = 0; r < 2; ++r) {
-    for (int c = 0; c < 3; ++c) {
-      double value[2];
-      grid.GetValue(r, c, value);
-      EXPECT_EQ(value[0], static_cast<double>(r + c + 1));
-      EXPECT_EQ(value[1], static_cast<double>(4 * (r + c + 1)));
-    }
-  }
-}
-
-TEST(Grid2D, TwoDataDimensionRowMajorStacked) {
-  // clang-format off
-  int x[] = {1,  2,  3,
-             2,  3,  4,
-             4,  8, 12,
-             8, 12, 16};
-  // clang-format on
-  Grid2D<int, 2, true, false> grid(x, 0, 2, 0, 3);
-  for (int r = 0; r < 2; ++r) {
-    for (int c = 0; c < 3; ++c) {
-      double value[2];
-      grid.GetValue(r, c, value);
-      EXPECT_EQ(value[0], static_cast<double>(r + c + 1));
-      EXPECT_EQ(value[1], static_cast<double>(4 * (r + c + 1)));
-    }
-  }
-}
-
-TEST(Grid2D, TwoDataDimensionColMajorInterleaved) {
-  // clang-format off
-  int x[] = { 1,  4, 2,  8,
-              2,  8, 3, 12,
-              3, 12, 4, 16};
-  // clang-format on
-  Grid2D<int, 2, false, true> grid(x, 0, 2, 0, 3);
-  for (int r = 0; r < 2; ++r) {
-    for (int c = 0; c < 3; ++c) {
-      double value[2];
-      grid.GetValue(r, c, value);
-      EXPECT_EQ(value[0], static_cast<double>(r + c + 1));
-      EXPECT_EQ(value[1], static_cast<double>(4 * (r + c + 1)));
-    }
-  }
-}
-
-TEST(Grid2D, TwoDataDimensionColMajorStacked) {
-  // clang-format off
-  int x[] = {1,   2,
-             2,   3,
-             3,   4,
-             4,   8,
-             8,  12,
-             12, 16};
-  // clang-format on
-  Grid2D<int, 2, false, false> grid(x, 0, 2, 0, 3);
-  for (int r = 0; r < 2; ++r) {
-    for (int c = 0; c < 3; ++c) {
-      double value[2];
-      grid.GetValue(r, c, value);
-      EXPECT_EQ(value[0], static_cast<double>(r + c + 1));
-      EXPECT_EQ(value[1], static_cast<double>(4 * (r + c + 1)));
-    }
-  }
-}
-
-class CubicInterpolatorTest : public ::testing::Test {
- public:
-  template <int kDataDimension>
-  void RunPolynomialInterpolationTest(const double a,
-                                      const double b,
-                                      const double c,
-                                      const double d) {
-    values_ = std::make_unique<double[]>(kDataDimension * kNumSamples);
-
-    for (int x = 0; x < kNumSamples; ++x) {
-      for (int dim = 0; dim < kDataDimension; ++dim) {
-        values_[x * kDataDimension + dim] =
-            (dim * dim + 1) * (a * x * x * x + b * x * x + c * x + d);
-      }
-    }
-
-    Grid1D<double, kDataDimension> grid(values_.get(), 0, kNumSamples);
-    CubicInterpolator<Grid1D<double, kDataDimension>> interpolator(grid);
-
-    // Check values in the all the cells but the first and the last
-    // ones. In these cells, the interpolated function values should
-    // match exactly the values of the function being interpolated.
-    //
-    // On the boundary, we extrapolate the values of the function on
-    // the basis of its first derivative, so we do not expect the
-    // function values and its derivatives not to match.
-    for (int j = 0; j < kNumTestSamples; ++j) {
-      const double x = 1.0 + 7.0 / (kNumTestSamples - 1) * j;
-      double expected_f[kDataDimension], expected_dfdx[kDataDimension];
-      double f[kDataDimension], dfdx[kDataDimension];
-
-      for (int dim = 0; dim < kDataDimension; ++dim) {
-        expected_f[dim] =
-            (dim * dim + 1) * (a * x * x * x + b * x * x + c * x + d);
-        expected_dfdx[dim] =
-            (dim * dim + 1) * (3.0 * a * x * x + 2.0 * b * x + c);
-      }
-
-      interpolator.Evaluate(x, f, dfdx);
-      for (int dim = 0; dim < kDataDimension; ++dim) {
-        EXPECT_NEAR(f[dim], expected_f[dim], kTolerance)
-            << "x: " << x << " dim: " << dim
-            << " actual f(x): " << expected_f[dim]
-            << " estimated f(x): " << f[dim];
-        EXPECT_NEAR(dfdx[dim], expected_dfdx[dim], kTolerance)
-            << "x: " << x << " dim: " << dim
-            << " actual df(x)/dx: " << expected_dfdx[dim]
-            << " estimated df(x)/dx: " << dfdx[dim];
-      }
-    }
-  }
-
- private:
-  static constexpr int kNumSamples = 10;
-  static constexpr int kNumTestSamples = 100;
-  std::unique_ptr<double[]> values_;
-};
-
-TEST_F(CubicInterpolatorTest, ConstantFunction) {
-  RunPolynomialInterpolationTest<1>(0.0, 0.0, 0.0, 0.5);
-  RunPolynomialInterpolationTest<2>(0.0, 0.0, 0.0, 0.5);
-  RunPolynomialInterpolationTest<3>(0.0, 0.0, 0.0, 0.5);
-}
-
-TEST_F(CubicInterpolatorTest, LinearFunction) {
-  RunPolynomialInterpolationTest<1>(0.0, 0.0, 1.0, 0.5);
-  RunPolynomialInterpolationTest<2>(0.0, 0.0, 1.0, 0.5);
-  RunPolynomialInterpolationTest<3>(0.0, 0.0, 1.0, 0.5);
-}
-
-TEST_F(CubicInterpolatorTest, QuadraticFunction) {
-  RunPolynomialInterpolationTest<1>(0.0, 0.4, 1.0, 0.5);
-  RunPolynomialInterpolationTest<2>(0.0, 0.4, 1.0, 0.5);
-  RunPolynomialInterpolationTest<3>(0.0, 0.4, 1.0, 0.5);
-}
-
-TEST(CubicInterpolator, JetEvaluation) {
-  const double values[] = {1.0, 2.0, 2.0, 5.0, 3.0, 9.0, 2.0, 7.0};
-
-  Grid1D<double, 2, true> grid(values, 0, 4);
-  CubicInterpolator<Grid1D<double, 2, true>> interpolator(grid);
-
-  double f[2], dfdx[2];
-  const double x = 2.5;
-  interpolator.Evaluate(x, f, dfdx);
-
-  // Create a Jet with the same scalar part as x, so that the output
-  // Jet will be evaluated at x.
-  Jet<double, 4> x_jet;
-  x_jet.a = x;
-  x_jet.v(0) = 1.0;
-  x_jet.v(1) = 1.1;
-  x_jet.v(2) = 1.2;
-  x_jet.v(3) = 1.3;
-
-  Jet<double, 4> f_jets[2];
-  interpolator.Evaluate(x_jet, f_jets);
-
-  // Check that the scalar part of the Jet is f(x).
-  EXPECT_EQ(f_jets[0].a, f[0]);
-  EXPECT_EQ(f_jets[1].a, f[1]);
-
-  // Check that the derivative part of the Jet is dfdx * x_jet.v
-  // by the chain rule.
-  EXPECT_NEAR((f_jets[0].v - dfdx[0] * x_jet.v).norm(), 0.0, kTolerance);
-  EXPECT_NEAR((f_jets[1].v - dfdx[1] * x_jet.v).norm(), 0.0, kTolerance);
-}
-
-class BiCubicInterpolatorTest : public ::testing::Test {
- public:
-  // This class needs to have an Eigen aligned operator new as it contains
-  // fixed-size Eigen types.
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
-  template <int kDataDimension>
-  void RunPolynomialInterpolationTest(const Eigen::Matrix3d& coeff) {
-    values_ = std::make_unique<double[]>(kNumRows * kNumCols * kDataDimension);
-    coeff_ = coeff;
-    double* v = values_.get();
-    for (int r = 0; r < kNumRows; ++r) {
-      for (int c = 0; c < kNumCols; ++c) {
-        for (int dim = 0; dim < kDataDimension; ++dim) {
-          *v++ = (dim * dim + 1) * EvaluateF(r, c);
-        }
-      }
-    }
-
-    Grid2D<double, kDataDimension> grid(
-        values_.get(), 0, kNumRows, 0, kNumCols);
-    BiCubicInterpolator<Grid2D<double, kDataDimension>> interpolator(grid);
-
-    for (int j = 0; j < kNumRowSamples; ++j) {
-      const double r = 1.0 + 7.0 / (kNumRowSamples - 1) * j;
-      for (int k = 0; k < kNumColSamples; ++k) {
-        const double c = 1.0 + 7.0 / (kNumColSamples - 1) * k;
-        double f[kDataDimension], dfdr[kDataDimension], dfdc[kDataDimension];
-        interpolator.Evaluate(r, c, f, dfdr, dfdc);
-        for (int dim = 0; dim < kDataDimension; ++dim) {
-          EXPECT_NEAR(f[dim], (dim * dim + 1) * EvaluateF(r, c), kTolerance);
-          EXPECT_NEAR(
-              dfdr[dim], (dim * dim + 1) * EvaluatedFdr(r, c), kTolerance);
-          EXPECT_NEAR(
-              dfdc[dim], (dim * dim + 1) * EvaluatedFdc(r, c), kTolerance);
-        }
-      }
-    }
-  }
-
- private:
-  double EvaluateF(double r, double c) {
-    Eigen::Vector3d x;
-    x(0) = r;
-    x(1) = c;
-    x(2) = 1;
-    return x.transpose() * coeff_ * x;
-  }
-
-  double EvaluatedFdr(double r, double c) {
-    Eigen::Vector3d x;
-    x(0) = r;
-    x(1) = c;
-    x(2) = 1;
-    return (coeff_.row(0) + coeff_.col(0).transpose()) * x;
-  }
-
-  double EvaluatedFdc(double r, double c) {
-    Eigen::Vector3d x;
-    x(0) = r;
-    x(1) = c;
-    x(2) = 1;
-    return (coeff_.row(1) + coeff_.col(1).transpose()) * x;
-  }
-
-  Eigen::Matrix3d coeff_;
-  static constexpr int kNumRows = 10;
-  static constexpr int kNumCols = 10;
-  static constexpr int kNumRowSamples = 100;
-  static constexpr int kNumColSamples = 100;
-  std::unique_ptr<double[]> values_;
-};
-
-TEST_F(BiCubicInterpolatorTest, ZeroFunction) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree00Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree01Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  coeff(0, 2) = 0.1;
-  coeff(2, 0) = 0.1;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree10Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  coeff(0, 1) = 0.1;
-  coeff(1, 0) = 0.1;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree11Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  coeff(0, 1) = 0.1;
-  coeff(1, 0) = 0.1;
-  coeff(0, 2) = 0.2;
-  coeff(2, 0) = 0.2;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree12Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  coeff(0, 1) = 0.1;
-  coeff(1, 0) = 0.1;
-  coeff(0, 2) = 0.2;
-  coeff(2, 0) = 0.2;
-  coeff(1, 1) = 0.3;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree21Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  coeff(0, 1) = 0.1;
-  coeff(1, 0) = 0.1;
-  coeff(0, 2) = 0.2;
-  coeff(2, 0) = 0.2;
-  coeff(0, 0) = 0.3;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST_F(BiCubicInterpolatorTest, Degree22Function) {
-  Eigen::Matrix3d coeff = Eigen::Matrix3d::Zero();
-  coeff(2, 2) = 1.0;
-  coeff(0, 1) = 0.1;
-  coeff(1, 0) = 0.1;
-  coeff(0, 2) = 0.2;
-  coeff(2, 0) = 0.2;
-  coeff(0, 0) = 0.3;
-  coeff(0, 1) = -0.4;
-  coeff(1, 0) = -0.4;
-  RunPolynomialInterpolationTest<1>(coeff);
-  RunPolynomialInterpolationTest<2>(coeff);
-  RunPolynomialInterpolationTest<3>(coeff);
-}
-
-TEST(BiCubicInterpolator, JetEvaluation) {
-  // clang-format off
-  const double values[] = {1.0, 5.0, 2.0, 10.0, 2.0, 6.0, 3.0, 5.0,
-                           1.0, 2.0, 2.0,  2.0, 2.0, 2.0, 3.0, 1.0};
-  // clang-format on
-
-  Grid2D<double, 2> grid(values, 0, 2, 0, 4);
-  BiCubicInterpolator<Grid2D<double, 2>> interpolator(grid);
-
-  double f[2], dfdr[2], dfdc[2];
-  const double r = 0.5;
-  const double c = 2.5;
-  interpolator.Evaluate(r, c, f, dfdr, dfdc);
-
-  // Create a Jet with the same scalar part as x, so that the output
-  // Jet will be evaluated at x.
-  Jet<double, 4> r_jet;
-  r_jet.a = r;
-  r_jet.v(0) = 1.0;
-  r_jet.v(1) = 1.1;
-  r_jet.v(2) = 1.2;
-  r_jet.v(3) = 1.3;
-
-  Jet<double, 4> c_jet;
-  c_jet.a = c;
-  c_jet.v(0) = 2.0;
-  c_jet.v(1) = 3.1;
-  c_jet.v(2) = 4.2;
-  c_jet.v(3) = 5.3;
-
-  Jet<double, 4> f_jets[2];
-  interpolator.Evaluate(r_jet, c_jet, f_jets);
-  EXPECT_EQ(f_jets[0].a, f[0]);
-  EXPECT_EQ(f_jets[1].a, f[1]);
-  EXPECT_NEAR((f_jets[0].v - dfdr[0] * r_jet.v - dfdc[0] * c_jet.v).norm(),
-              0.0,
-              kTolerance);
-  EXPECT_NEAR((f_jets[1].v - dfdr[1] * r_jet.v - dfdc[1] * c_jet.v).norm(),
-              0.0,
-              kTolerance);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view.cc b/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view.cc
deleted file mode 100644
index 7564d52..0000000
--- a/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/cuda_block_sparse_crs_view.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "ceres/cuda_kernels_bsm_to_crs.h"
-
-namespace ceres::internal {
-
-CudaBlockSparseCRSView::CudaBlockSparseCRSView(const BlockSparseMatrix& bsm,
-                                               ContextImpl* context)
-    : context_(context) {
-  block_structure_ = std::make_unique<CudaBlockSparseStructure>(
-      *bsm.block_structure(), context);
-  CudaBuffer<int32_t> rows(context, bsm.num_rows() + 1);
-  CudaBuffer<int32_t> cols(context, bsm.num_nonzeros());
-  FillCRSStructure(block_structure_->num_row_blocks(),
-                   bsm.num_rows(),
-                   block_structure_->first_cell_in_row_block(),
-                   block_structure_->cells(),
-                   block_structure_->row_blocks(),
-                   block_structure_->col_blocks(),
-                   rows.data(),
-                   cols.data(),
-                   context->DefaultStream(),
-                   context->is_cuda_memory_pools_supported_);
-  is_crs_compatible_ = block_structure_->IsCrsCompatible();
-  // if matrix is crs-compatible - we can drop block-structure and don't need
-  // streamed_buffer_
-  if (is_crs_compatible_) {
-    VLOG(3) << "Block-sparse matrix is compatible with CRS, discarding "
-               "block-structure";
-    block_structure_ = nullptr;
-  } else {
-    streamed_buffer_ = std::make_unique<CudaStreamedBuffer<double>>(
-        context_, kMaxTemporaryArraySize);
-  }
-  crs_matrix_ = std::make_unique<CudaSparseMatrix>(
-      bsm.num_cols(), std::move(rows), std::move(cols), context);
-  UpdateValues(bsm);
-}
-
-void CudaBlockSparseCRSView::UpdateValues(const BlockSparseMatrix& bsm) {
-  if (is_crs_compatible_) {
-    // Values of CRS-compatible matrices can be copied as-is
-    CHECK_EQ(cudaSuccess,
-             cudaMemcpyAsync(crs_matrix_->mutable_values(),
-                             bsm.values(),
-                             bsm.num_nonzeros() * sizeof(double),
-                             cudaMemcpyHostToDevice,
-                             context_->DefaultStream()));
-    return;
-  }
-  streamed_buffer_->CopyToGpu(
-      bsm.values(),
-      bsm.num_nonzeros(),
-      [bs = block_structure_.get(), crs = crs_matrix_.get()](
-          const double* values, int num_values, int offset, auto stream) {
-        PermuteToCRS(offset,
-                     num_values,
-                     bs->num_row_blocks(),
-                     bs->first_cell_in_row_block(),
-                     bs->cells(),
-                     bs->row_blocks(),
-                     bs->col_blocks(),
-                     crs->rows(),
-                     values,
-                     crs->mutable_values(),
-                     stream);
-      });
-}
-
-}  // namespace ceres::internal
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view.h b/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view.h
deleted file mode 100644
index 58ef618..0000000
--- a/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-//
-
-#ifndef CERES_INTERNAL_CUDA_BLOCK_SPARSE_CRS_VIEW_H_
-#define CERES_INTERNAL_CUDA_BLOCK_SPARSE_CRS_VIEW_H_
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include <memory>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/cuda_block_structure.h"
-#include "ceres/cuda_buffer.h"
-#include "ceres/cuda_sparse_matrix.h"
-#include "ceres/cuda_streamed_buffer.h"
-
-namespace ceres::internal {
-// We use cuSPARSE library for SpMV operations. However, it does not support
-// block-sparse format with varying size of the blocks. Thus, we perform the
-// following operations in order to compute products of block-sparse matrices
-// and dense vectors on gpu:
-//  - Once per block-sparse structure update:
-//    - Compute CRS structure from block-sparse structure and check if values of
-//    block-sparse matrix would have the same order as values of CRS matrix
-//  - Once per block-sparse values update:
-//    - Update values in CRS matrix with values of block-sparse matrix
-//
-// Only block-sparse matrices with sequential order of cells are supported.
-//
-// UpdateValues method updates values:
-//  - In a single host-to-device copy for matrices with CRS-compatible value
-//  layout
-//  - Simultaneously transferring and permuting values using CudaStreamedBuffer
-//  otherwise
-class CERES_NO_EXPORT CudaBlockSparseCRSView {
- public:
-  // Initializes internal CRS matrix using structure and values of block-sparse
-  // matrix For block-sparse matrices that have value layout different from CRS
-  // block-sparse structure will be stored/
-  CudaBlockSparseCRSView(const BlockSparseMatrix& bsm, ContextImpl* context);
-
-  const CudaSparseMatrix* crs_matrix() const { return crs_matrix_.get(); }
-  CudaSparseMatrix* mutable_crs_matrix() { return crs_matrix_.get(); }
-
-  // Update values of crs_matrix_ using values of block-sparse matrix.
-  // Assumes that bsm has the same block-sparse structure as matrix that was
-  // used for construction.
-  void UpdateValues(const BlockSparseMatrix& bsm);
-
-  // Returns true if block-sparse matrix had CRS-compatible value layout
-  bool IsCrsCompatible() const { return is_crs_compatible_; }
-
-  void LeftMultiplyAndAccumulate(const CudaVector& x, CudaVector* y) const {
-    crs_matrix()->LeftMultiplyAndAccumulate(x, y);
-  }
-
-  void RightMultiplyAndAccumulate(const CudaVector& x, CudaVector* y) const {
-    crs_matrix()->RightMultiplyAndAccumulate(x, y);
-  }
-
- private:
-  // Value permutation kernel performs a single element-wise operation per
-  // thread, thus performing permutation in blocks of 8 megabytes of
-  // block-sparse  values seems reasonable
-  static constexpr int kMaxTemporaryArraySize = 1 * 1024 * 1024;
-  std::unique_ptr<CudaSparseMatrix> crs_matrix_;
-  // Only created if block-sparse matrix has non-CRS value layout
-  std::unique_ptr<CudaStreamedBuffer<double>> streamed_buffer_;
-  // Only stored if block-sparse matrix has non-CRS value layout
-  std::unique_ptr<CudaBlockSparseStructure> block_structure_;
-  bool is_crs_compatible_;
-  ContextImpl* context_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-#endif  // CERES_INTERNAL_CUDA_BLOCK_SPARSE_CRS_VIEW_H_
diff --git a/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view_test.cc b/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view_test.cc
deleted file mode 100644
index 7d7d46c..0000000
--- a/third_party/ceres/internal/ceres/cuda_block_sparse_crs_view_test.cc
+++ /dev/null
@@ -1,164 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/cuda_block_sparse_crs_view.h"
-
-#include <glog/logging.h>
-#include <gtest/gtest.h>
-
-#include <numeric>
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-class CudaBlockSparseCRSViewTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::string message;
-    CHECK(context_.InitCuda(&message))
-        << "InitCuda() failed because: " << message;
-
-    BlockSparseMatrix::RandomMatrixOptions options;
-    options.num_row_blocks = 1234;
-    options.min_row_block_size = 1;
-    options.max_row_block_size = 10;
-    options.num_col_blocks = 567;
-    options.min_col_block_size = 1;
-    options.max_col_block_size = 10;
-    options.block_density = 0.2;
-    std::mt19937 rng;
-
-    // Block-sparse matrix with order of values different from CRS
-    block_sparse_non_crs_compatible_ =
-        BlockSparseMatrix::CreateRandomMatrix(options, rng, true);
-    std::iota(block_sparse_non_crs_compatible_->mutable_values(),
-              block_sparse_non_crs_compatible_->mutable_values() +
-                  block_sparse_non_crs_compatible_->num_nonzeros(),
-              1);
-
-    options.max_row_block_size = 1;
-    // Block-sparse matrix with CRS order of values (row-blocks are rows)
-    block_sparse_crs_compatible_rows_ =
-        BlockSparseMatrix::CreateRandomMatrix(options, rng, true);
-    std::iota(block_sparse_crs_compatible_rows_->mutable_values(),
-              block_sparse_crs_compatible_rows_->mutable_values() +
-                  block_sparse_crs_compatible_rows_->num_nonzeros(),
-              1);
-    // Block-sparse matrix with CRS order of values (single cell per row-block)
-    auto bs = std::make_unique<CompressedRowBlockStructure>(
-        *block_sparse_non_crs_compatible_->block_structure());
-
-    int num_nonzeros = 0;
-    for (auto& r : bs->rows) {
-      const int num_cells = r.cells.size();
-      if (num_cells > 1) {
-        std::uniform_int_distribution<int> uniform_cell(0, num_cells - 1);
-        const int selected_cell = uniform_cell(rng);
-        std::swap(r.cells[0], r.cells[selected_cell]);
-        r.cells.resize(1);
-      }
-      const int row_block_size = r.block.size;
-      for (auto& c : r.cells) {
-        c.position = num_nonzeros;
-        const int col_block_size = bs->cols[c.block_id].size;
-        num_nonzeros += col_block_size * row_block_size;
-      }
-    }
-    block_sparse_crs_compatible_single_cell_ =
-        std::make_unique<BlockSparseMatrix>(bs.release());
-    std::iota(block_sparse_crs_compatible_single_cell_->mutable_values(),
-              block_sparse_crs_compatible_single_cell_->mutable_values() +
-                  block_sparse_crs_compatible_single_cell_->num_nonzeros(),
-              1);
-  }
-
-  void Compare(const BlockSparseMatrix& bsm, const CudaSparseMatrix& csm) {
-    ASSERT_EQ(csm.num_cols(), bsm.num_cols());
-    ASSERT_EQ(csm.num_rows(), bsm.num_rows());
-    ASSERT_EQ(csm.num_nonzeros(), bsm.num_nonzeros());
-    const int num_rows = bsm.num_rows();
-    const int num_cols = bsm.num_cols();
-    Vector x(num_cols);
-    Vector y(num_rows);
-    CudaVector x_cuda(&context_, num_cols);
-    CudaVector y_cuda(&context_, num_rows);
-    Vector y_cuda_host(num_rows);
-
-    for (int i = 0; i < num_cols; ++i) {
-      x.setZero();
-      y.setZero();
-      y_cuda.SetZero();
-      x[i] = 1.;
-      x_cuda.CopyFromCpu(x);
-      csm.RightMultiplyAndAccumulate(x_cuda, &y_cuda);
-      bsm.RightMultiplyAndAccumulate(
-          x.data(), y.data(), &context_, std::thread::hardware_concurrency());
-      y_cuda.CopyTo(&y_cuda_host);
-      // There will be up to 1 non-zero product per row, thus we expect an exact
-      // match on 32-bit integer indices
-      EXPECT_EQ((y - y_cuda_host).squaredNorm(), 0.);
-    }
-  }
-
-  std::unique_ptr<BlockSparseMatrix> block_sparse_non_crs_compatible_;
-  std::unique_ptr<BlockSparseMatrix> block_sparse_crs_compatible_rows_;
-  std::unique_ptr<BlockSparseMatrix> block_sparse_crs_compatible_single_cell_;
-  ContextImpl context_;
-};
-
-TEST_F(CudaBlockSparseCRSViewTest, CreateUpdateValuesNonCompatible) {
-  auto view =
-      CudaBlockSparseCRSView(*block_sparse_non_crs_compatible_, &context_);
-  ASSERT_EQ(view.IsCrsCompatible(), false);
-
-  auto matrix = view.crs_matrix();
-  Compare(*block_sparse_non_crs_compatible_, *matrix);
-}
-
-TEST_F(CudaBlockSparseCRSViewTest, CreateUpdateValuesCompatibleRows) {
-  auto view =
-      CudaBlockSparseCRSView(*block_sparse_crs_compatible_rows_, &context_);
-  ASSERT_EQ(view.IsCrsCompatible(), true);
-
-  auto matrix = view.crs_matrix();
-  Compare(*block_sparse_crs_compatible_rows_, *matrix);
-}
-
-TEST_F(CudaBlockSparseCRSViewTest, CreateUpdateValuesCompatibleSingleCell) {
-  auto view = CudaBlockSparseCRSView(*block_sparse_crs_compatible_single_cell_,
-                                     &context_);
-  ASSERT_EQ(view.IsCrsCompatible(), true);
-
-  auto matrix = view.crs_matrix();
-  Compare(*block_sparse_crs_compatible_single_cell_, *matrix);
-}
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_block_structure.cc b/third_party/ceres/internal/ceres/cuda_block_structure.cc
deleted file mode 100644
index 3685775..0000000
--- a/third_party/ceres/internal/ceres/cuda_block_structure.cc
+++ /dev/null
@@ -1,234 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/cuda_block_structure.h"
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-namespace {
-// Dimension of a sorted array of blocks
-inline int Dimension(const std::vector<Block>& blocks) {
-  if (blocks.empty()) {
-    return 0;
-  }
-  const auto& last = blocks.back();
-  return last.size + last.position;
-}
-}  // namespace
-CudaBlockSparseStructure::CudaBlockSparseStructure(
-    const CompressedRowBlockStructure& block_structure, ContextImpl* context)
-    : CudaBlockSparseStructure(block_structure, 0, context) {}
-
-CudaBlockSparseStructure::CudaBlockSparseStructure(
-    const CompressedRowBlockStructure& block_structure,
-    const int num_col_blocks_e,
-    ContextImpl* context)
-    : first_cell_in_row_block_(context),
-      value_offset_row_block_f_(context),
-      cells_(context),
-      row_blocks_(context),
-      col_blocks_(context) {
-  // Row blocks extracted from CompressedRowBlockStructure::rows
-  std::vector<Block> row_blocks;
-  // Column blocks can be reused as-is
-  const auto& col_blocks = block_structure.cols;
-
-  // Row block offset is an index of the first cell corresponding to row block
-  std::vector<int> first_cell_in_row_block;
-  // Offset of the first value in the first non-empty row-block of F sub-matrix
-  std::vector<int> value_offset_row_block_f;
-  // Flat array of all cells from all row-blocks
-  std::vector<Cell> cells;
-
-  int f_values_offset = -1;
-  num_nonzeros_e_ = 0;
-  is_crs_compatible_ = true;
-  num_row_blocks_ = block_structure.rows.size();
-  num_col_blocks_ = col_blocks.size();
-
-  row_blocks.reserve(num_row_blocks_);
-  first_cell_in_row_block.reserve(num_row_blocks_ + 1);
-  value_offset_row_block_f.reserve(num_row_blocks_ + 1);
-  num_nonzeros_ = 0;
-  // Block-sparse matrices arising from block-jacobian writer are expected to
-  // have sequential layout (for partitioned matrices - it is expected that both
-  // E and F sub-matrices have sequential layout).
-  bool sequential_layout = true;
-  int row_block_id = 0;
-  num_row_blocks_e_ = 0;
-  for (; row_block_id < num_row_blocks_; ++row_block_id) {
-    const auto& r = block_structure.rows[row_block_id];
-    const int row_block_size = r.block.size;
-    const int num_cells = r.cells.size();
-
-    if (num_col_blocks_e == 0 || r.cells.size() == 0 ||
-        r.cells[0].block_id >= num_col_blocks_e) {
-      break;
-    }
-    num_row_blocks_e_ = row_block_id + 1;
-    // In E sub-matrix there is exactly a single E cell in the row
-    // since E cells are stored separately from F cells, crs-compatiblity of
-    // F sub-matrix only breaks if there are more than 2 cells in row (that
-    // is, more than 1 cell in F sub-matrix)
-    if (num_cells > 2 && row_block_size > 1) {
-      is_crs_compatible_ = false;
-    }
-    row_blocks.emplace_back(r.block);
-    first_cell_in_row_block.push_back(cells.size());
-
-    for (int cell_id = 0; cell_id < num_cells; ++cell_id) {
-      const auto& c = r.cells[cell_id];
-      const int col_block_size = col_blocks[c.block_id].size;
-      const int cell_size = col_block_size * row_block_size;
-      cells.push_back(c);
-      if (cell_id == 0) {
-        DCHECK(c.position == num_nonzeros_e_);
-        num_nonzeros_e_ += cell_size;
-      } else {
-        if (f_values_offset == -1) {
-          num_nonzeros_ = c.position;
-          f_values_offset = c.position;
-        }
-        sequential_layout &= c.position == num_nonzeros_;
-        num_nonzeros_ += cell_size;
-        if (cell_id == 1) {
-          // Correct value_offset_row_block_f for empty row-blocks of F
-          // preceding this one
-          for (auto it = value_offset_row_block_f.rbegin();
-               it != value_offset_row_block_f.rend();
-               ++it) {
-            if (*it != -1) break;
-            *it = c.position;
-          }
-          value_offset_row_block_f.push_back(c.position);
-        }
-      }
-    }
-    if (num_cells == 1) {
-      value_offset_row_block_f.push_back(-1);
-    }
-  }
-  for (; row_block_id < num_row_blocks_; ++row_block_id) {
-    const auto& r = block_structure.rows[row_block_id];
-    const int row_block_size = r.block.size;
-    const int num_cells = r.cells.size();
-    // After num_row_blocks_e_ row-blocks, there should be no cells in E
-    // sub-matrix. Thus crs-compatibility of F sub-matrix breaks if there are
-    // more than one cells in the row-block
-    if (num_cells > 1 && row_block_size > 1) {
-      is_crs_compatible_ = false;
-    }
-    row_blocks.emplace_back(r.block);
-    first_cell_in_row_block.push_back(cells.size());
-
-    if (r.cells.empty()) {
-      value_offset_row_block_f.push_back(-1);
-    } else {
-      for (auto it = value_offset_row_block_f.rbegin();
-           it != value_offset_row_block_f.rend();
-           --it) {
-        if (*it != -1) break;
-        *it = cells[0].position;
-      }
-      value_offset_row_block_f.push_back(r.cells[0].position);
-    }
-    for (const auto& c : r.cells) {
-      const int col_block_size = col_blocks[c.block_id].size;
-      const int cell_size = col_block_size * row_block_size;
-      cells.push_back(c);
-      DCHECK(c.block_id >= num_col_blocks_e);
-      if (f_values_offset == -1) {
-        num_nonzeros_ = c.position;
-        f_values_offset = c.position;
-      }
-      sequential_layout &= c.position == num_nonzeros_;
-      num_nonzeros_ += cell_size;
-    }
-  }
-
-  if (f_values_offset == -1) {
-    f_values_offset = num_nonzeros_e_;
-    num_nonzeros_ = num_nonzeros_e_;
-  }
-  // Fill non-zero offsets for the last rows of F submatrix
-  for (auto it = value_offset_row_block_f.rbegin();
-       it != value_offset_row_block_f.rend();
-       ++it) {
-    if (*it != -1) break;
-    *it = num_nonzeros_;
-  }
-  value_offset_row_block_f.push_back(num_nonzeros_);
-  CHECK_EQ(num_nonzeros_e_, f_values_offset);
-  first_cell_in_row_block.push_back(cells.size());
-  num_cells_ = cells.size();
-
-  num_rows_ = Dimension(row_blocks);
-  num_cols_ = Dimension(col_blocks);
-
-  CHECK(sequential_layout);
-
-  if (VLOG_IS_ON(3)) {
-    const size_t first_cell_in_row_block_size =
-        first_cell_in_row_block.size() * sizeof(int);
-    const size_t cells_size = cells.size() * sizeof(Cell);
-    const size_t row_blocks_size = row_blocks.size() * sizeof(Block);
-    const size_t col_blocks_size = col_blocks.size() * sizeof(Block);
-    const size_t total_size = first_cell_in_row_block_size + cells_size +
-                              col_blocks_size + row_blocks_size;
-    const double ratio =
-        (100. * total_size) / (num_nonzeros_ * (sizeof(int) + sizeof(double)) +
-                               num_rows_ * sizeof(int));
-    VLOG(3) << "\nCudaBlockSparseStructure:\n"
-               "\tRow block offsets: "
-            << first_cell_in_row_block_size
-            << " bytes\n"
-               "\tColumn blocks: "
-            << col_blocks_size
-            << " bytes\n"
-               "\tRow blocks: "
-            << row_blocks_size
-            << " bytes\n"
-               "\tCells: "
-            << cells_size << " bytes\n\tTotal: " << total_size
-            << " bytes of GPU memory (" << ratio << "% of CRS matrix size)";
-  }
-
-  first_cell_in_row_block_.CopyFromCpuVector(first_cell_in_row_block);
-  cells_.CopyFromCpuVector(cells);
-  row_blocks_.CopyFromCpuVector(row_blocks);
-  col_blocks_.CopyFromCpuVector(col_blocks);
-  if (num_col_blocks_e || num_row_blocks_e_) {
-    value_offset_row_block_f_.CopyFromCpuVector(value_offset_row_block_f);
-  }
-}
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_block_structure.h b/third_party/ceres/internal/ceres/cuda_block_structure.h
deleted file mode 100644
index 6da6fdd..0000000
--- a/third_party/ceres/internal/ceres/cuda_block_structure.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_CUDA_BLOCK_STRUCTURE_H_
-#define CERES_INTERNAL_CUDA_BLOCK_STRUCTURE_H_
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "ceres/block_structure.h"
-#include "ceres/cuda_buffer.h"
-
-namespace ceres::internal {
-class CudaBlockStructureTest;
-
-// This class stores a read-only block-sparse structure in gpu memory.
-// Invariants are the same as those of CompressedRowBlockStructure.
-// In order to simplify allocation and copying data to gpu, cells from all
-// row-blocks are stored in a single array sequentially. Array
-// first_cell_in_row_block of size num_row_blocks + 1 allows to identify range
-// of cells corresponding to a row-block. Cells corresponding to i-th row-block
-// are stored in sub-array cells[first_cell_in_row_block[i]; ...
-// first_cell_in_row_block[i + 1] - 1], and their order is preserved.
-class CERES_NO_EXPORT CudaBlockSparseStructure {
- public:
-  // CompressedRowBlockStructure is contains a vector of CompressedLists, with
-  // each CompressedList containing a vector of Cells. We precompute a flat
-  // array of cells on cpu and transfer it to the gpu.
-  CudaBlockSparseStructure(const CompressedRowBlockStructure& block_structure,
-                           ContextImpl* context);
-  // In the case of partitioned matrices, number of non-zeros in E and layout of
-  // F are computed
-  CudaBlockSparseStructure(const CompressedRowBlockStructure& block_structure,
-                           const int num_col_blocks_e,
-                           ContextImpl* context);
-
-  int num_rows() const { return num_rows_; }
-  int num_cols() const { return num_cols_; }
-  int num_cells() const { return num_cells_; }
-  int num_nonzeros() const { return num_nonzeros_; }
-  // When partitioned matrix constructor was used, returns number of non-zeros
-  // in E sub-matrix
-  int num_nonzeros_e() const { return num_nonzeros_e_; }
-  int num_row_blocks() const { return num_row_blocks_; }
-  int num_row_blocks_e() const { return num_row_blocks_e_; }
-  int num_col_blocks() const { return num_col_blocks_; }
-
-  // Returns true if values from block-sparse matrix (F sub-matrix in
-  // partitioned case) can be copied to CRS matrix as-is. This is possible if
-  // each row-block is stored in CRS order:
-  //  - Row-block consists of a single row
-  //  - Row-block contains a single cell
-  bool IsCrsCompatible() const { return is_crs_compatible_; }
-
-  // Device pointer to array of num_row_blocks + 1 indices of the first cell of
-  // row block
-  const int* first_cell_in_row_block() const {
-    return first_cell_in_row_block_.data();
-  }
-  // Device pointer to array of num_row_blocks + 1 indices of the first value in
-  // this or subsequent row-blocks of submatrix F
-  const int* value_offset_row_block_f() const {
-    return value_offset_row_block_f_.data();
-  }
-  // Device pointer to array of num_cells cells, sorted by row-block
-  const Cell* cells() const { return cells_.data(); }
-  // Device pointer to array of row blocks
-  const Block* row_blocks() const { return row_blocks_.data(); }
-  // Device pointer to array of column blocks
-  const Block* col_blocks() const { return col_blocks_.data(); }
-
- private:
-  int num_rows_;
-  int num_cols_;
-  int num_cells_;
-  int num_nonzeros_;
-  int num_nonzeros_e_;
-  int num_row_blocks_;
-  int num_row_blocks_e_;
-  int num_col_blocks_;
-  bool is_crs_compatible_;
-  CudaBuffer<int> first_cell_in_row_block_;
-  CudaBuffer<int> value_offset_row_block_f_;
-  CudaBuffer<Cell> cells_;
-  CudaBuffer<Block> row_blocks_;
-  CudaBuffer<Block> col_blocks_;
-  friend class CudaBlockStructureTest;
-};
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-#endif  // CERES_INTERNAL_CUDA_BLOCK_SPARSE_STRUCTURE_H_
diff --git a/third_party/ceres/internal/ceres/cuda_block_structure_test.cc b/third_party/ceres/internal/ceres/cuda_block_structure_test.cc
deleted file mode 100644
index daff431..0000000
--- a/third_party/ceres/internal/ceres/cuda_block_structure_test.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include <glog/logging.h>
-#include <gtest/gtest.h>
-
-#include <numeric>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/cuda_block_structure.h"
-
-namespace ceres::internal {
-
-class CudaBlockStructureTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::string message;
-    CHECK(context_.InitCuda(&message))
-        << "InitCuda() failed because: " << message;
-
-    BlockSparseMatrix::RandomMatrixOptions options;
-    options.num_row_blocks = 1234;
-    options.min_row_block_size = 1;
-    options.max_row_block_size = 10;
-    options.num_col_blocks = 567;
-    options.min_col_block_size = 1;
-    options.max_col_block_size = 10;
-    options.block_density = 0.2;
-    std::mt19937 rng;
-    A_ = BlockSparseMatrix::CreateRandomMatrix(options, rng);
-    std::iota(
-        A_->mutable_values(), A_->mutable_values() + A_->num_nonzeros(), 1);
-  }
-
-  std::vector<Cell> GetCells(const CudaBlockSparseStructure& structure) {
-    const auto& cuda_buffer = structure.cells_;
-    std::vector<Cell> cells(cuda_buffer.size());
-    cuda_buffer.CopyToCpu(cells.data(), cells.size());
-    return cells;
-  }
-  std::vector<Block> GetRowBlocks(const CudaBlockSparseStructure& structure) {
-    const auto& cuda_buffer = structure.row_blocks_;
-    std::vector<Block> blocks(cuda_buffer.size());
-    cuda_buffer.CopyToCpu(blocks.data(), blocks.size());
-    return blocks;
-  }
-  std::vector<Block> GetColBlocks(const CudaBlockSparseStructure& structure) {
-    const auto& cuda_buffer = structure.col_blocks_;
-    std::vector<Block> blocks(cuda_buffer.size());
-    cuda_buffer.CopyToCpu(blocks.data(), blocks.size());
-    return blocks;
-  }
-  std::vector<int> GetRowBlockOffsets(
-      const CudaBlockSparseStructure& structure) {
-    const auto& cuda_buffer = structure.first_cell_in_row_block_;
-    std::vector<int> first_cell_in_row_block(cuda_buffer.size());
-    cuda_buffer.CopyToCpu(first_cell_in_row_block.data(),
-                          first_cell_in_row_block.size());
-    return first_cell_in_row_block;
-  }
-
-  std::unique_ptr<BlockSparseMatrix> A_;
-  ContextImpl context_;
-};
-
-TEST_F(CudaBlockStructureTest, StructureIdentity) {
-  auto block_structure = A_->block_structure();
-  const int num_row_blocks = block_structure->rows.size();
-  const int num_col_blocks = block_structure->cols.size();
-
-  CudaBlockSparseStructure cuda_block_structure(*block_structure, &context_);
-
-  ASSERT_EQ(cuda_block_structure.num_rows(), A_->num_rows());
-  ASSERT_EQ(cuda_block_structure.num_cols(), A_->num_cols());
-  ASSERT_EQ(cuda_block_structure.num_nonzeros(), A_->num_nonzeros());
-  ASSERT_EQ(cuda_block_structure.num_row_blocks(), num_row_blocks);
-  ASSERT_EQ(cuda_block_structure.num_col_blocks(), num_col_blocks);
-
-  std::vector<Block> blocks = GetColBlocks(cuda_block_structure);
-  ASSERT_EQ(blocks.size(), num_col_blocks);
-  for (int i = 0; i < num_col_blocks; ++i) {
-    EXPECT_EQ(block_structure->cols[i].position, blocks[i].position);
-    EXPECT_EQ(block_structure->cols[i].size, blocks[i].size);
-  }
-
-  std::vector<Cell> cells = GetCells(cuda_block_structure);
-  std::vector<int> first_cell_in_row_block =
-      GetRowBlockOffsets(cuda_block_structure);
-  blocks = GetRowBlocks(cuda_block_structure);
-
-  ASSERT_EQ(blocks.size(), num_row_blocks);
-  ASSERT_EQ(first_cell_in_row_block.size(), num_row_blocks + 1);
-  ASSERT_EQ(first_cell_in_row_block.back(), cells.size());
-
-  for (int i = 0; i < num_row_blocks; ++i) {
-    const int num_cells = block_structure->rows[i].cells.size();
-    EXPECT_EQ(blocks[i].position, block_structure->rows[i].block.position);
-    EXPECT_EQ(blocks[i].size, block_structure->rows[i].block.size);
-    const int first_cell = first_cell_in_row_block[i];
-    const int last_cell = first_cell_in_row_block[i + 1];
-    ASSERT_EQ(last_cell - first_cell, num_cells);
-    for (int j = 0; j < num_cells; ++j) {
-      EXPECT_EQ(cells[first_cell + j].block_id,
-                block_structure->rows[i].cells[j].block_id);
-      EXPECT_EQ(cells[first_cell + j].position,
-                block_structure->rows[i].cells[j].position);
-    }
-  }
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_buffer.h b/third_party/ceres/internal/ceres/cuda_buffer.h
deleted file mode 100644
index 40048fd..0000000
--- a/third_party/ceres/internal/ceres/cuda_buffer.h
+++ /dev/null
@@ -1,172 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#ifndef CERES_INTERNAL_CUDA_BUFFER_H_
-#define CERES_INTERNAL_CUDA_BUFFER_H_
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include <vector>
-
-#include "cuda_runtime.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-// An encapsulated buffer to maintain GPU memory, and handle transfers between
-// GPU and system memory. It is the responsibility of the user to ensure that
-// the appropriate GPU device is selected before each subroutine is called. This
-// is particularly important when using multiple GPU devices on different CPU
-// threads, since active Cuda devices are determined by the cuda runtime on a
-// per-thread basis.
-template <typename T>
-class CudaBuffer {
- public:
-  explicit CudaBuffer(ContextImpl* context) : context_(context) {}
-  CudaBuffer(ContextImpl* context, int size) : context_(context) {
-    Reserve(size);
-  }
-
-  CudaBuffer(CudaBuffer&& other)
-      : data_(other.data_), size_(other.size_), context_(other.context_) {
-    other.data_ = nullptr;
-    other.size_ = 0;
-  }
-
-  CudaBuffer(const CudaBuffer&) = delete;
-  CudaBuffer& operator=(const CudaBuffer&) = delete;
-
-  ~CudaBuffer() {
-    if (data_ != nullptr) {
-      CHECK_EQ(cudaFree(data_), cudaSuccess);
-    }
-  }
-
-  // Grow the GPU memory buffer if needed to accommodate data of the specified
-  // size
-  void Reserve(const size_t size) {
-    if (size > size_) {
-      if (data_ != nullptr) {
-        CHECK_EQ(cudaFree(data_), cudaSuccess);
-      }
-      CHECK_EQ(cudaMalloc(&data_, size * sizeof(T)), cudaSuccess)
-          << "Failed to allocate " << size * sizeof(T)
-          << " bytes of GPU memory";
-      size_ = size;
-    }
-  }
-
-  // Perform an asynchronous copy from CPU memory to GPU memory managed by this
-  // CudaBuffer instance using the stream provided.
-  void CopyFromCpu(const T* data, const size_t size) {
-    Reserve(size);
-    CHECK_EQ(cudaMemcpyAsync(data_,
-                             data,
-                             size * sizeof(T),
-                             cudaMemcpyHostToDevice,
-                             context_->DefaultStream()),
-             cudaSuccess);
-  }
-
-  // Perform an asynchronous copy from a vector in CPU memory to GPU memory
-  // managed by this CudaBuffer instance.
-  void CopyFromCpuVector(const std::vector<T>& data) {
-    Reserve(data.size());
-    CHECK_EQ(cudaMemcpyAsync(data_,
-                             data.data(),
-                             data.size() * sizeof(T),
-                             cudaMemcpyHostToDevice,
-                             context_->DefaultStream()),
-             cudaSuccess);
-  }
-
-  // Perform an asynchronous copy from another GPU memory array to the GPU
-  // memory managed by this CudaBuffer instance using the stream provided.
-  void CopyFromGPUArray(const T* data, const size_t size) {
-    Reserve(size);
-    CHECK_EQ(cudaMemcpyAsync(data_,
-                             data,
-                             size * sizeof(T),
-                             cudaMemcpyDeviceToDevice,
-                             context_->DefaultStream()),
-             cudaSuccess);
-  }
-
-  // Copy data from the GPU memory managed by this CudaBuffer instance to CPU
-  // memory. It is the caller's responsibility to ensure that the CPU memory
-  // pointer is valid, i.e. it is not null, and that it points to memory of
-  // at least this->size() size. This method ensures all previously dispatched
-  // GPU operations on the specified stream have completed before copying the
-  // data to CPU memory.
-  void CopyToCpu(T* data, const size_t size) const {
-    CHECK(data_ != nullptr);
-    CHECK_EQ(cudaMemcpyAsync(data,
-                             data_,
-                             size * sizeof(T),
-                             cudaMemcpyDeviceToHost,
-                             context_->DefaultStream()),
-             cudaSuccess);
-    CHECK_EQ(cudaStreamSynchronize(context_->DefaultStream()), cudaSuccess);
-  }
-
-  // Copy N items from another GPU memory array to the GPU memory managed by
-  // this CudaBuffer instance, growing this buffer's size if needed. This copy
-  // is asynchronous, and operates on the stream provided.
-  void CopyNItemsFrom(int n, const CudaBuffer<T>& other) {
-    Reserve(n);
-    CHECK(other.data_ != nullptr);
-    CHECK(data_ != nullptr);
-    CHECK_EQ(cudaMemcpyAsync(data_,
-                             other.data_,
-                             size_ * sizeof(T),
-                             cudaMemcpyDeviceToDevice,
-                             context_->DefaultStream()),
-             cudaSuccess);
-  }
-
-  // Return a pointer to the GPU memory managed by this CudaBuffer instance.
-  T* data() { return data_; }
-  const T* data() const { return data_; }
-  // Return the number of items of type T that can fit in the GPU memory
-  // allocated so far by this CudaBuffer instance.
-  size_t size() const { return size_; }
-
- private:
-  T* data_ = nullptr;
-  size_t size_ = 0;
-  ContextImpl* context_ = nullptr;
-};
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-
-#endif  // CERES_INTERNAL_CUDA_BUFFER_H_
diff --git a/third_party/ceres/internal/ceres/cuda_dense_cholesky_test.cc b/third_party/ceres/internal/ceres/cuda_dense_cholesky_test.cc
deleted file mode 100644
index b74a75a..0000000
--- a/third_party/ceres/internal/ceres/cuda_dense_cholesky_test.cc
+++ /dev/null
@@ -1,332 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include <string>
-
-#include "ceres/dense_cholesky.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-#ifndef CERES_NO_CUDA
-
-TEST(CUDADenseCholesky, InvalidOptionOnCreate) {
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  auto dense_cuda_solver = CUDADenseCholesky::Create(options);
-  EXPECT_EQ(dense_cuda_solver, nullptr);
-}
-
-// Tests the CUDA Cholesky solver with a simple 4x4 matrix.
-TEST(CUDADenseCholesky, Cholesky4x4Matrix) {
-  Eigen::Matrix4d A;
-  // clang-format off
-  A <<  4,  12, -16, 0,
-       12,  37, -43, 0,
-      -16, -43,  98, 0,
-        0,   0,   0, 1;
-  // clang-format on
-
-  Vector b = Eigen::Vector4d::Ones();
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseCholesky::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(dense_cuda_solver->Factorize(A.cols(), A.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  Eigen::Vector4d x = Eigen::Vector4d::Zero();
-  ASSERT_EQ(dense_cuda_solver->Solve(b.data(), x.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  static const double kEpsilon = std::numeric_limits<double>::epsilon() * 10;
-  const Eigen::Vector4d x_expected(113.75 / 3.0, -31.0 / 3.0, 5.0 / 3.0, 1.0);
-  EXPECT_NEAR((x[0] - x_expected[0]) / x_expected[0], 0.0, kEpsilon);
-  EXPECT_NEAR((x[1] - x_expected[1]) / x_expected[1], 0.0, kEpsilon);
-  EXPECT_NEAR((x[2] - x_expected[2]) / x_expected[2], 0.0, kEpsilon);
-  EXPECT_NEAR((x[3] - x_expected[3]) / x_expected[3], 0.0, kEpsilon);
-}
-
-TEST(CUDADenseCholesky, SingularMatrix) {
-  Eigen::Matrix3d A;
-  // clang-format off
-  A <<  1, 0, 0,
-        0, 1, 0,
-        0, 0, 0;
-  // clang-format on
-
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseCholesky::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(dense_cuda_solver->Factorize(A.cols(), A.data(), &error_string),
-            LinearSolverTerminationType::FAILURE);
-}
-
-TEST(CUDADenseCholesky, NegativeMatrix) {
-  Eigen::Matrix3d A;
-  // clang-format off
-  A <<  1, 0, 0,
-        0, 1, 0,
-        0, 0, -1;
-  // clang-format on
-
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseCholesky::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(dense_cuda_solver->Factorize(A.cols(), A.data(), &error_string),
-            LinearSolverTerminationType::FAILURE);
-}
-
-TEST(CUDADenseCholesky, MustFactorizeBeforeSolve) {
-  const Eigen::Vector3d b = Eigen::Vector3d::Ones();
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseCholesky::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(dense_cuda_solver->Solve(b.data(), nullptr, &error_string),
-            LinearSolverTerminationType::FATAL_ERROR);
-}
-
-TEST(CUDADenseCholesky, Randomized1600x1600Tests) {
-  const int kNumCols = 1600;
-  using LhsType = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>;
-  using RhsType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-  using SolutionType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = ceres::CUDA;
-  std::unique_ptr<DenseCholesky> dense_cholesky =
-      CUDADenseCholesky::Create(options);
-
-  const int kNumTrials = 20;
-  for (int i = 0; i < kNumTrials; ++i) {
-    LhsType lhs = LhsType::Random(kNumCols, kNumCols);
-    lhs = lhs.transpose() * lhs;
-    lhs += 1e-3 * LhsType::Identity(kNumCols, kNumCols);
-    SolutionType x_expected = SolutionType::Random(kNumCols);
-    RhsType rhs = lhs * x_expected;
-    SolutionType x_computed = SolutionType::Zero(kNumCols);
-    // Sanity check the random matrix sizes.
-    EXPECT_EQ(lhs.rows(), kNumCols);
-    EXPECT_EQ(lhs.cols(), kNumCols);
-    EXPECT_EQ(rhs.rows(), kNumCols);
-    EXPECT_EQ(rhs.cols(), 1);
-    EXPECT_EQ(x_expected.rows(), kNumCols);
-    EXPECT_EQ(x_expected.cols(), 1);
-    EXPECT_EQ(x_computed.rows(), kNumCols);
-    EXPECT_EQ(x_computed.cols(), 1);
-    LinearSolver::Summary summary;
-    summary.termination_type = dense_cholesky->FactorAndSolve(
-        kNumCols, lhs.data(), rhs.data(), x_computed.data(), &summary.message);
-    ASSERT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-    static const double kEpsilon = std::numeric_limits<double>::epsilon() * 3e5;
-    ASSERT_NEAR(
-        (x_computed - x_expected).norm() / x_expected.norm(), 0.0, kEpsilon);
-  }
-}
-
-TEST(CUDADenseCholeskyMixedPrecision, InvalidOptionsOnCreate) {
-  {
-    // Did not ask for CUDA, and did not ask for mixed precision.
-    LinearSolver::Options options;
-    ContextImpl context;
-    options.context = &context;
-    std::string error;
-    EXPECT_TRUE(context.InitCuda(&error)) << error;
-    auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
-    ASSERT_EQ(solver, nullptr);
-  }
-  {
-    // Asked for CUDA, but did not ask for mixed precision.
-    LinearSolver::Options options;
-    ContextImpl context;
-    options.context = &context;
-    std::string error;
-    EXPECT_TRUE(context.InitCuda(&error)) << error;
-    options.dense_linear_algebra_library_type = ceres::CUDA;
-    auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
-    ASSERT_EQ(solver, nullptr);
-  }
-}
-
-// Tests the CUDA Cholesky solver with a simple 4x4 matrix.
-TEST(CUDADenseCholeskyMixedPrecision, Cholesky4x4Matrix1Step) {
-  Eigen::Matrix4d A;
-  // clang-format off
-  // A common test Cholesky decomposition test matrix, see :
-  // https://en.wikipedia.org/w/index.php?title=Cholesky_decomposition&oldid=1080607368#Example
-  A <<  4,  12, -16, 0,
-       12,  37, -43, 0,
-      -16, -43,  98, 0,
-        0,   0,   0, 1;
-  // clang-format on
-
-  const Eigen::Vector4d b = Eigen::Vector4d::Ones();
-  LinearSolver::Options options;
-  options.max_num_refinement_iterations = 0;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  options.use_mixed_precision_solves = true;
-  auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
-  ASSERT_NE(solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(solver->Factorize(A.cols(), A.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  Eigen::Vector4d x = Eigen::Vector4d::Zero();
-  ASSERT_EQ(solver->Solve(b.data(), x.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  // A single step of the mixed precision solver will be equivalent to solving
-  // in low precision (FP32). Hence the tolerance is defined w.r.t. FP32 epsilon
-  // instead of FP64 epsilon.
-  static const double kEpsilon = std::numeric_limits<float>::epsilon() * 10;
-  const Eigen::Vector4d x_expected(113.75 / 3.0, -31.0 / 3.0, 5.0 / 3.0, 1.0);
-  EXPECT_NEAR((x[0] - x_expected[0]) / x_expected[0], 0.0, kEpsilon);
-  EXPECT_NEAR((x[1] - x_expected[1]) / x_expected[1], 0.0, kEpsilon);
-  EXPECT_NEAR((x[2] - x_expected[2]) / x_expected[2], 0.0, kEpsilon);
-  EXPECT_NEAR((x[3] - x_expected[3]) / x_expected[3], 0.0, kEpsilon);
-}
-
-// Tests the CUDA Cholesky solver with a simple 4x4 matrix.
-TEST(CUDADenseCholeskyMixedPrecision, Cholesky4x4Matrix4Steps) {
-  Eigen::Matrix4d A;
-  // clang-format off
-  A <<  4,  12, -16, 0,
-       12,  37, -43, 0,
-      -16, -43,  98, 0,
-        0,   0,   0, 1;
-  // clang-format on
-
-  const Eigen::Vector4d b = Eigen::Vector4d::Ones();
-  LinearSolver::Options options;
-  options.max_num_refinement_iterations = 3;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  options.use_mixed_precision_solves = true;
-  auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
-  ASSERT_NE(solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(solver->Factorize(A.cols(), A.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  Eigen::Vector4d x = Eigen::Vector4d::Zero();
-  ASSERT_EQ(solver->Solve(b.data(), x.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  // The error does not reduce beyond four iterations, and stagnates at this
-  // level of precision.
-  static const double kEpsilon = std::numeric_limits<double>::epsilon() * 100;
-  const Eigen::Vector4d x_expected(113.75 / 3.0, -31.0 / 3.0, 5.0 / 3.0, 1.0);
-  EXPECT_NEAR((x[0] - x_expected[0]) / x_expected[0], 0.0, kEpsilon);
-  EXPECT_NEAR((x[1] - x_expected[1]) / x_expected[1], 0.0, kEpsilon);
-  EXPECT_NEAR((x[2] - x_expected[2]) / x_expected[2], 0.0, kEpsilon);
-  EXPECT_NEAR((x[3] - x_expected[3]) / x_expected[3], 0.0, kEpsilon);
-}
-
-TEST(CUDADenseCholeskyMixedPrecision, Randomized1600x1600Tests) {
-  const int kNumCols = 1600;
-  using LhsType = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>;
-  using RhsType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-  using SolutionType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = ceres::CUDA;
-  options.use_mixed_precision_solves = true;
-  options.max_num_refinement_iterations = 20;
-  std::unique_ptr<CUDADenseCholeskyMixedPrecision> dense_cholesky =
-      CUDADenseCholeskyMixedPrecision::Create(options);
-
-  const int kNumTrials = 20;
-  for (int i = 0; i < kNumTrials; ++i) {
-    LhsType lhs = LhsType::Random(kNumCols, kNumCols);
-    lhs = lhs.transpose() * lhs;
-    lhs += 1e-3 * LhsType::Identity(kNumCols, kNumCols);
-    SolutionType x_expected = SolutionType::Random(kNumCols);
-    RhsType rhs = lhs * x_expected;
-    SolutionType x_computed = SolutionType::Zero(kNumCols);
-    // Sanity check the random matrix sizes.
-    EXPECT_EQ(lhs.rows(), kNumCols);
-    EXPECT_EQ(lhs.cols(), kNumCols);
-    EXPECT_EQ(rhs.rows(), kNumCols);
-    EXPECT_EQ(rhs.cols(), 1);
-    EXPECT_EQ(x_expected.rows(), kNumCols);
-    EXPECT_EQ(x_expected.cols(), 1);
-    EXPECT_EQ(x_computed.rows(), kNumCols);
-    EXPECT_EQ(x_computed.cols(), 1);
-    LinearSolver::Summary summary;
-    summary.termination_type = dense_cholesky->FactorAndSolve(
-        kNumCols, lhs.data(), rhs.data(), x_computed.data(), &summary.message);
-    ASSERT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-    static const double kEpsilon = std::numeric_limits<double>::epsilon() * 1e6;
-    ASSERT_NEAR(
-        (x_computed - x_expected).norm() / x_expected.norm(), 0.0, kEpsilon);
-  }
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/cuda_dense_qr_test.cc b/third_party/ceres/internal/ceres/cuda_dense_qr_test.cc
deleted file mode 100644
index b1f25e2..0000000
--- a/third_party/ceres/internal/ceres/cuda_dense_qr_test.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include <string>
-
-#include "ceres/dense_qr.h"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-#ifndef CERES_NO_CUDA
-
-TEST(CUDADenseQR, InvalidOptionOnCreate) {
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  auto dense_cuda_solver = CUDADenseQR::Create(options);
-  EXPECT_EQ(dense_cuda_solver, nullptr);
-}
-
-// Tests the CUDA QR solver with a simple 4x4 matrix.
-TEST(CUDADenseQR, QR4x4Matrix) {
-  Eigen::Matrix4d A;
-  // clang-format off
-  A <<  4,  12, -16, 0,
-       12,  37, -43, 0,
-      -16, -43,  98, 0,
-        0,   0,   0, 1;
-  // clang-format on
-  const Eigen::Vector4d b = Eigen::Vector4d::Ones();
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseQR::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(
-      dense_cuda_solver->Factorize(A.rows(), A.cols(), A.data(), &error_string),
-      LinearSolverTerminationType::SUCCESS);
-  Eigen::Vector4d x = Eigen::Vector4d::Zero();
-  ASSERT_EQ(dense_cuda_solver->Solve(b.data(), x.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  // Empirically observed accuracy of cuSolverDN's QR solver.
-  const double kEpsilon = std::numeric_limits<double>::epsilon() * 1500;
-  const Eigen::Vector4d x_expected(113.75 / 3.0, -31.0 / 3.0, 5.0 / 3.0, 1.0);
-  EXPECT_NEAR((x - x_expected).norm() / x_expected.norm(), 0.0, kEpsilon);
-}
-
-// Tests the CUDA QR solver with a simple 4x4 matrix.
-TEST(CUDADenseQR, QR4x2Matrix) {
-  Eigen::Matrix<double, 4, 2> A;
-  // clang-format off
-  A <<  4,  12,
-       12,  37,
-      -16, -43,
-        0,   0;
-  // clang-format on
-
-  const std::vector<double> b(4, 1.0);
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseQR::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(
-      dense_cuda_solver->Factorize(A.rows(), A.cols(), A.data(), &error_string),
-      LinearSolverTerminationType::SUCCESS);
-  std::vector<double> x(2, 0);
-  ASSERT_EQ(dense_cuda_solver->Solve(b.data(), x.data(), &error_string),
-            LinearSolverTerminationType::SUCCESS);
-  // Empirically observed accuracy of cuSolverDN's QR solver.
-  const double kEpsilon = std::numeric_limits<double>::epsilon() * 10;
-  // Solution values computed with Octave.
-  const Eigen::Vector2d x_expected(-1.143410852713177, 0.4031007751937981);
-  EXPECT_NEAR((x[0] - x_expected[0]) / x_expected[0], 0.0, kEpsilon);
-  EXPECT_NEAR((x[1] - x_expected[1]) / x_expected[1], 0.0, kEpsilon);
-}
-
-TEST(CUDADenseQR, MustFactorizeBeforeSolve) {
-  const Eigen::Vector3d b = Eigen::Vector3d::Ones();
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = CUDA;
-  auto dense_cuda_solver = CUDADenseQR::Create(options);
-  ASSERT_NE(dense_cuda_solver, nullptr);
-  std::string error_string;
-  ASSERT_EQ(dense_cuda_solver->Solve(b.data(), nullptr, &error_string),
-            LinearSolverTerminationType::FATAL_ERROR);
-}
-
-TEST(CUDADenseQR, Randomized1600x100Tests) {
-  const int kNumRows = 1600;
-  const int kNumCols = 100;
-  using LhsType = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>;
-  using RhsType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-  using SolutionType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
-
-  LinearSolver::Options options;
-  ContextImpl context;
-  options.context = &context;
-  std::string error;
-  EXPECT_TRUE(context.InitCuda(&error)) << error;
-  options.dense_linear_algebra_library_type = ceres::CUDA;
-  std::unique_ptr<DenseQR> dense_qr = CUDADenseQR::Create(options);
-
-  const int kNumTrials = 20;
-  for (int i = 0; i < kNumTrials; ++i) {
-    LhsType lhs = LhsType::Random(kNumRows, kNumCols);
-    SolutionType x_expected = SolutionType::Random(kNumCols);
-    RhsType rhs = lhs * x_expected;
-    SolutionType x_computed = SolutionType::Zero(kNumCols);
-    // Sanity check the random matrix sizes.
-    EXPECT_EQ(lhs.rows(), kNumRows);
-    EXPECT_EQ(lhs.cols(), kNumCols);
-    EXPECT_EQ(rhs.rows(), kNumRows);
-    EXPECT_EQ(rhs.cols(), 1);
-    EXPECT_EQ(x_expected.rows(), kNumCols);
-    EXPECT_EQ(x_expected.cols(), 1);
-    EXPECT_EQ(x_computed.rows(), kNumCols);
-    EXPECT_EQ(x_computed.cols(), 1);
-    LinearSolver::Summary summary;
-    summary.termination_type = dense_qr->FactorAndSolve(kNumRows,
-                                                        kNumCols,
-                                                        lhs.data(),
-                                                        rhs.data(),
-                                                        x_computed.data(),
-                                                        &summary.message);
-    ASSERT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-    ASSERT_NEAR((x_computed - x_expected).norm() / x_expected.norm(),
-                0.0,
-                std::numeric_limits<double>::epsilon() * 400);
-  }
-}
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/cuda_kernels_bsm_to_crs.cu.cc b/third_party/ceres/internal/ceres/cuda_kernels_bsm_to_crs.cu.cc
deleted file mode 100644
index ee574f0..0000000
--- a/third_party/ceres/internal/ceres/cuda_kernels_bsm_to_crs.cu.cc
+++ /dev/null
@@ -1,477 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/cuda_kernels_bsm_to_crs.h"
-
-#include <cuda_runtime.h>
-#include <thrust/execution_policy.h>
-#include <thrust/scan.h>
-
-#include "ceres/block_structure.h"
-#include "ceres/cuda_kernels_utils.h"
-
-namespace ceres {
-namespace internal {
-
-namespace {
-inline auto ThrustCudaStreamExecutionPolicy(cudaStream_t stream) {
-  // par_nosync execution policy was added in Thrust 1.16
-  // https://github.com/NVIDIA/thrust/blob/main/CHANGELOG.md#thrust-1160
-#if THRUST_VERSION < 101700
-  return thrust::cuda::par.on(stream);
-#else
-  return thrust::cuda::par_nosync.on(stream);
-#endif
-}
-
-void* CudaMalloc(size_t size,
-                 cudaStream_t stream,
-                 bool memory_pools_supported) {
-  void* data = nullptr;
-  // Stream-ordered alloaction API is available since CUDA 11.2, but might be
-  // not implemented by particular device
-#if CUDART_VERSION < 11020
-#warning \
-    "Stream-ordered allocations are unavailable, consider updating CUDA toolkit to version 11.2+"
-  cudaMalloc(&data, size);
-#else
-  if (memory_pools_supported) {
-    cudaMallocAsync(&data, size, stream);
-  } else {
-    cudaMalloc(&data, size);
-  }
-#endif
-  return data;
-}
-
-void CudaFree(void* data, cudaStream_t stream, bool memory_pools_supported) {
-  // Stream-ordered alloaction API is available since CUDA 11.2, but might be
-  // not implemented by particular device
-#if CUDART_VERSION < 11020
-#warning \
-    "Stream-ordered allocations are unavailable, consider updating CUDA toolkit to version 11.2+"
-  cudaSuccess, cudaFree(data);
-#else
-  if (memory_pools_supported) {
-    cudaFreeAsync(data, stream);
-  } else {
-    cudaFree(data);
-  }
-#endif
-}
-template <typename T>
-T* CudaAllocate(size_t num_elements,
-                cudaStream_t stream,
-                bool memory_pools_supported) {
-  T* data = static_cast<T*>(
-      CudaMalloc(num_elements * sizeof(T), stream, memory_pools_supported));
-  return data;
-}
-}  // namespace
-
-// Fill row block id and nnz for each row using block-sparse structure
-// represented by a set of flat arrays.
-// Inputs:
-// - num_row_blocks: number of row-blocks in block-sparse structure
-// - first_cell_in_row_block: index of the first cell of the row-block; size:
-// num_row_blocks + 1
-// - cells: cells of block-sparse structure as a continuous array
-// - row_blocks: row blocks of block-sparse structure stored sequentially
-// - col_blocks: column blocks of block-sparse structure stored sequentially
-// Outputs:
-// - rows: rows[i + 1] will contain number of non-zeros in i-th row, rows[0]
-// will be set to 0; rows are filled with a shift by one element in order
-// to obtain row-index array of CRS matrix with a inclusive scan afterwards
-// - row_block_ids: row_block_ids[i] will be set to index of row-block that
-// contains i-th row.
-// Computation is perform row-block-wise
-template <bool partitioned = false>
-__global__ void RowBlockIdAndNNZ(
-    const int num_row_blocks,
-    const int num_col_blocks_e,
-    const int num_row_blocks_e,
-    const int* __restrict__ first_cell_in_row_block,
-    const Cell* __restrict__ cells,
-    const Block* __restrict__ row_blocks,
-    const Block* __restrict__ col_blocks,
-    int* __restrict__ rows_e,
-    int* __restrict__ rows_f,
-    int* __restrict__ row_block_ids) {
-  const int row_block_id = blockIdx.x * blockDim.x + threadIdx.x;
-  if (row_block_id > num_row_blocks) {
-    // No synchronization is performed in this kernel, thus it is safe to return
-    return;
-  }
-  if (row_block_id == num_row_blocks) {
-    // one extra thread sets the first element
-    rows_f[0] = 0;
-    if constexpr (partitioned) {
-      rows_e[0] = 0;
-    }
-    return;
-  }
-  const auto& row_block = row_blocks[row_block_id];
-  auto first_cell = cells + first_cell_in_row_block[row_block_id];
-  const auto last_cell = cells + first_cell_in_row_block[row_block_id + 1];
-  [[maybe_unused]] int row_nnz_e = 0;
-  if (partitioned && row_block_id < num_row_blocks_e) {
-    // First cell is a cell from E
-    row_nnz_e = col_blocks[first_cell->block_id].size;
-    ++first_cell;
-  }
-  int row_nnz_f = 0;
-  for (auto cell = first_cell; cell < last_cell; ++cell) {
-    row_nnz_f += col_blocks[cell->block_id].size;
-  }
-  const int first_row = row_block.position;
-  const int last_row = first_row + row_block.size;
-  for (int i = first_row; i < last_row; ++i) {
-    if constexpr (partitioned) {
-      rows_e[i + 1] = row_nnz_e;
-    }
-    rows_f[i + 1] = row_nnz_f;
-    row_block_ids[i] = row_block_id;
-  }
-}
-
-// Row-wise creation of CRS structure
-// Inputs:
-// - num_rows: number of rows in matrix
-// - first_cell_in_row_block: index of the first cell of the row-block; size:
-// num_row_blocks + 1
-// - cells: cells of block-sparse structure as a continuous array
-// - row_blocks: row blocks of block-sparse structure stored sequentially
-// - col_blocks: column blocks of block-sparse structure stored sequentially
-// - row_block_ids: index of row-block that corresponds to row
-// - rows: row-index array of CRS structure
-// Outputs:
-// - cols: column-index array of CRS structure
-// Computaion is perform row-wise
-template <bool partitioned>
-__global__ void ComputeColumns(const int num_rows,
-                               const int num_row_blocks_e,
-                               const int num_col_blocks_e,
-                               const int* __restrict__ first_cell_in_row_block,
-                               const Cell* __restrict__ cells,
-                               const Block* __restrict__ row_blocks,
-                               const Block* __restrict__ col_blocks,
-                               const int* __restrict__ row_block_ids,
-                               const int* __restrict__ rows_e,
-                               int* __restrict__ cols_e,
-                               const int* __restrict__ rows_f,
-                               int* __restrict__ cols_f) {
-  const int row = blockIdx.x * blockDim.x + threadIdx.x;
-  if (row >= num_rows) {
-    // No synchronization is performed in this kernel, thus it is safe to return
-    return;
-  }
-  const int row_block_id = row_block_ids[row];
-  // position in crs matrix
-  auto first_cell = cells + first_cell_in_row_block[row_block_id];
-  const auto last_cell = cells + first_cell_in_row_block[row_block_id + 1];
-  const int num_cols_e = col_blocks[num_col_blocks_e].position;
-  // For reach cell of row-block only current row is being filled
-  if (partitioned && row_block_id < num_row_blocks_e) {
-    // The first cell is cell from E
-    const auto& col_block = col_blocks[first_cell->block_id];
-    const int col_block_size = col_block.size;
-    int column_idx = col_block.position;
-    int crs_position_e = rows_e[row];
-    // Column indices for each element of row_in_block row of current cell
-    for (int i = 0; i < col_block_size; ++i, ++crs_position_e) {
-      cols_e[crs_position_e] = column_idx++;
-    }
-    ++first_cell;
-  }
-  int crs_position_f = rows_f[row];
-  for (auto cell = first_cell; cell < last_cell; ++cell) {
-    const auto& col_block = col_blocks[cell->block_id];
-    const int col_block_size = col_block.size;
-    int column_idx = col_block.position - num_cols_e;
-    // Column indices for each element of row_in_block row of current cell
-    for (int i = 0; i < col_block_size; ++i, ++crs_position_f) {
-      cols_f[crs_position_f] = column_idx++;
-    }
-  }
-}
-
-void FillCRSStructure(const int num_row_blocks,
-                      const int num_rows,
-                      const int* first_cell_in_row_block,
-                      const Cell* cells,
-                      const Block* row_blocks,
-                      const Block* col_blocks,
-                      int* rows,
-                      int* cols,
-                      cudaStream_t stream,
-                      bool memory_pools_supported) {
-  // Set number of non-zeros per row in rows array and row to row-block map in
-  // row_block_ids array
-  int* row_block_ids =
-      CudaAllocate<int>(num_rows, stream, memory_pools_supported);
-  const int num_blocks_blockwise = NumBlocksInGrid(num_row_blocks + 1);
-  RowBlockIdAndNNZ<false><<<num_blocks_blockwise, kCudaBlockSize, 0, stream>>>(
-      num_row_blocks,
-      0,
-      0,
-      first_cell_in_row_block,
-      cells,
-      row_blocks,
-      col_blocks,
-      nullptr,
-      rows,
-      row_block_ids);
-  // Finalize row-index array of CRS strucure by computing prefix sum
-  thrust::inclusive_scan(
-      ThrustCudaStreamExecutionPolicy(stream), rows, rows + num_rows + 1, rows);
-
-  // Fill cols array of CRS structure
-  const int num_blocks_rowwise = NumBlocksInGrid(num_rows);
-  ComputeColumns<false><<<num_blocks_rowwise, kCudaBlockSize, 0, stream>>>(
-      num_rows,
-      0,
-      0,
-      first_cell_in_row_block,
-      cells,
-      row_blocks,
-      col_blocks,
-      row_block_ids,
-      nullptr,
-      nullptr,
-      rows,
-      cols);
-  CudaFree(row_block_ids, stream, memory_pools_supported);
-}
-
-void FillCRSStructurePartitioned(const int num_row_blocks,
-                                 const int num_rows,
-                                 const int num_row_blocks_e,
-                                 const int num_col_blocks_e,
-                                 const int num_nonzeros_e,
-                                 const int* first_cell_in_row_block,
-                                 const Cell* cells,
-                                 const Block* row_blocks,
-                                 const Block* col_blocks,
-                                 int* rows_e,
-                                 int* cols_e,
-                                 int* rows_f,
-                                 int* cols_f,
-                                 cudaStream_t stream,
-                                 bool memory_pools_supported) {
-  // Set number of non-zeros per row in rows array and row to row-block map in
-  // row_block_ids array
-  int* row_block_ids =
-      CudaAllocate<int>(num_rows, stream, memory_pools_supported);
-  const int num_blocks_blockwise = NumBlocksInGrid(num_row_blocks + 1);
-  RowBlockIdAndNNZ<true><<<num_blocks_blockwise, kCudaBlockSize, 0, stream>>>(
-      num_row_blocks,
-      num_col_blocks_e,
-      num_row_blocks_e,
-      first_cell_in_row_block,
-      cells,
-      row_blocks,
-      col_blocks,
-      rows_e,
-      rows_f,
-      row_block_ids);
-  // Finalize row-index array of CRS strucure by computing prefix sum
-  thrust::inclusive_scan(ThrustCudaStreamExecutionPolicy(stream),
-                         rows_e,
-                         rows_e + num_rows + 1,
-                         rows_e);
-  thrust::inclusive_scan(ThrustCudaStreamExecutionPolicy(stream),
-                         rows_f,
-                         rows_f + num_rows + 1,
-                         rows_f);
-
-  // Fill cols array of CRS structure
-  const int num_blocks_rowwise = NumBlocksInGrid(num_rows);
-  ComputeColumns<true><<<num_blocks_rowwise, kCudaBlockSize, 0, stream>>>(
-      num_rows,
-      num_row_blocks_e,
-      num_col_blocks_e,
-      first_cell_in_row_block,
-      cells,
-      row_blocks,
-      col_blocks,
-      row_block_ids,
-      rows_e,
-      cols_e,
-      rows_f,
-      cols_f);
-  CudaFree(row_block_ids, stream, memory_pools_supported);
-}
-
-template <typename T, typename Predicate>
-__device__ int PartitionPoint(const T* data,
-                              int first,
-                              int last,
-                              Predicate&& predicate) {
-  if (!predicate(data[first])) {
-    return first;
-  }
-  while (last - first > 1) {
-    const auto midpoint = first + (last - first) / 2;
-    if (predicate(data[midpoint])) {
-      first = midpoint;
-    } else {
-      last = midpoint;
-    }
-  }
-  return last;
-}
-
-// Element-wise reordering of block-sparse values
-// - first_cell_in_row_block - position of the first cell of row-block
-// - block_sparse_values - segment of block-sparse values starting from
-// block_sparse_offset, containing num_values
-template <bool partitioned>
-__global__ void PermuteToCrsKernel(
-    const int block_sparse_offset,
-    const int num_values,
-    const int num_row_blocks,
-    const int num_row_blocks_e,
-    const int* __restrict__ first_cell_in_row_block,
-    const int* __restrict__ value_offset_row_block_f,
-    const Cell* __restrict__ cells,
-    const Block* __restrict__ row_blocks,
-    const Block* __restrict__ col_blocks,
-    const int* __restrict__ crs_rows,
-    const double* __restrict__ block_sparse_values,
-    double* __restrict__ crs_values) {
-  const int value_id = blockIdx.x * blockDim.x + threadIdx.x;
-  if (value_id >= num_values) {
-    return;
-  }
-  const int block_sparse_value_id = value_id + block_sparse_offset;
-  // Find the corresponding row-block with a binary search
-  const int row_block_id =
-      (partitioned
-           ? PartitionPoint(value_offset_row_block_f,
-                            0,
-                            num_row_blocks,
-                            [block_sparse_value_id] __device__(
-                                const int row_block_offset) {
-                              return row_block_offset <= block_sparse_value_id;
-                            })
-           : PartitionPoint(first_cell_in_row_block,
-                            0,
-                            num_row_blocks,
-                            [cells, block_sparse_value_id] __device__(
-                                const int row_block_offset) {
-                              return cells[row_block_offset].position <=
-                                     block_sparse_value_id;
-                            })) -
-      1;
-  // Find cell and calculate offset within the row with a linear scan
-  const auto& row_block = row_blocks[row_block_id];
-  auto first_cell = cells + first_cell_in_row_block[row_block_id];
-  const auto last_cell = cells + first_cell_in_row_block[row_block_id + 1];
-  const int row_block_size = row_block.size;
-  int num_cols_before = 0;
-  if (partitioned && row_block_id < num_row_blocks_e) {
-    ++first_cell;
-  }
-  for (const Cell* cell = first_cell; cell < last_cell; ++cell) {
-    const auto& col_block = col_blocks[cell->block_id];
-    const int col_block_size = col_block.size;
-    const int cell_size = row_block_size * col_block_size;
-    if (cell->position + cell_size > block_sparse_value_id) {
-      const int pos_in_cell = block_sparse_value_id - cell->position;
-      const int row_in_cell = pos_in_cell / col_block_size;
-      const int col_in_cell = pos_in_cell % col_block_size;
-      const int row = row_in_cell + row_block.position;
-      crs_values[crs_rows[row] + num_cols_before + col_in_cell] =
-          block_sparse_values[value_id];
-      break;
-    }
-    num_cols_before += col_block_size;
-  }
-}
-
-void PermuteToCRS(const int block_sparse_offset,
-                  const int num_values,
-                  const int num_row_blocks,
-                  const int* first_cell_in_row_block,
-                  const Cell* cells,
-                  const Block* row_blocks,
-                  const Block* col_blocks,
-                  const int* crs_rows,
-                  const double* block_sparse_values,
-                  double* crs_values,
-                  cudaStream_t stream) {
-  const int num_blocks_valuewise = NumBlocksInGrid(num_values);
-  PermuteToCrsKernel<false>
-      <<<num_blocks_valuewise, kCudaBlockSize, 0, stream>>>(
-          block_sparse_offset,
-          num_values,
-          num_row_blocks,
-          0,
-          first_cell_in_row_block,
-          nullptr,
-          cells,
-          row_blocks,
-          col_blocks,
-          crs_rows,
-          block_sparse_values,
-          crs_values);
-}
-
-void PermuteToCRSPartitionedF(const int block_sparse_offset,
-                              const int num_values,
-                              const int num_row_blocks,
-                              const int num_row_blocks_e,
-                              const int* first_cell_in_row_block,
-                              const int* value_offset_row_block_f,
-                              const Cell* cells,
-                              const Block* row_blocks,
-                              const Block* col_blocks,
-                              const int* crs_rows,
-                              const double* block_sparse_values,
-                              double* crs_values,
-                              cudaStream_t stream) {
-  const int num_blocks_valuewise = NumBlocksInGrid(num_values);
-  PermuteToCrsKernel<true><<<num_blocks_valuewise, kCudaBlockSize, 0, stream>>>(
-      block_sparse_offset,
-      num_values,
-      num_row_blocks,
-      num_row_blocks_e,
-      first_cell_in_row_block,
-      value_offset_row_block_f,
-      cells,
-      row_blocks,
-      col_blocks,
-      crs_rows,
-      block_sparse_values,
-      crs_values);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cuda_kernels_bsm_to_crs.h b/third_party/ceres/internal/ceres/cuda_kernels_bsm_to_crs.h
deleted file mode 100644
index 27f4a25..0000000
--- a/third_party/ceres/internal/ceres/cuda_kernels_bsm_to_crs.h
+++ /dev/null
@@ -1,113 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_CUDA_KERNELS_BSM_TO_CRS_H_
-#define CERES_INTERNAL_CUDA_KERNELS_BSM_TO_CRS_H_
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "cuda_runtime.h"
-
-namespace ceres {
-namespace internal {
-struct Block;
-struct Cell;
-
-// Compute structure of CRS matrix using block-sparse structure.
-// Arrays corresponding to CRS matrix are to be allocated by caller
-void FillCRSStructure(const int num_row_blocks,
-                      const int num_rows,
-                      const int* first_cell_in_row_block,
-                      const Cell* cells,
-                      const Block* row_blocks,
-                      const Block* col_blocks,
-                      int* rows,
-                      int* cols,
-                      cudaStream_t stream,
-                      bool memory_pools_supported);
-
-// Compute structure of partitioned CRS matrix using block-sparse structure.
-// Arrays corresponding to CRS matrices are to be allocated by caller
-void FillCRSStructurePartitioned(const int num_row_blocks,
-                                 const int num_rows,
-                                 const int num_row_blocks_e,
-                                 const int num_col_blocks_e,
-                                 const int num_nonzeros_e,
-                                 const int* first_cell_in_row_block,
-                                 const Cell* cells,
-                                 const Block* row_blocks,
-                                 const Block* col_blocks,
-                                 int* rows_e,
-                                 int* cols_e,
-                                 int* rows_f,
-                                 int* cols_f,
-                                 cudaStream_t stream,
-                                 bool memory_pools_supported);
-
-// Permute segment of values from block-sparse matrix with sequential layout to
-// CRS order. Segment starts at block_sparse_offset and has length of num_values
-void PermuteToCRS(const int block_sparse_offset,
-                  const int num_values,
-                  const int num_row_blocks,
-                  const int* first_cell_in_row_block,
-                  const Cell* cells,
-                  const Block* row_blocks,
-                  const Block* col_blocks,
-                  const int* crs_rows,
-                  const double* block_sparse_values,
-                  double* crs_values,
-                  cudaStream_t stream);
-
-// Permute segment of values from F sub-matrix of block-sparse partitioned
-// matrix with sequential layout to CRS order. Segment starts at
-// block_sparse_offset (including the offset induced by values of E submatrix)
-// and has length of num_values
-void PermuteToCRSPartitionedF(const int block_sparse_offset,
-                              const int num_values,
-                              const int num_row_blocks,
-                              const int num_row_blocks_e,
-                              const int* first_cell_in_row_block,
-                              const int* value_offset_row_block_f,
-                              const Cell* cells,
-                              const Block* row_blocks,
-                              const Block* col_blocks,
-                              const int* crs_rows,
-                              const double* block_sparse_values,
-                              double* crs_values,
-                              cudaStream_t stream);
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_NO_CUDA
-
-#endif  // CERES_INTERNAL_CUDA_KERNELS_BSM_TO_CRS_H_
diff --git a/third_party/ceres/internal/ceres/cuda_kernels_utils.h b/third_party/ceres/internal/ceres/cuda_kernels_utils.h
deleted file mode 100644
index 4a17bac..0000000
--- a/third_party/ceres/internal/ceres/cuda_kernels_utils.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#ifndef CERES_INTERNAL_CUDA_KERNELS_UTILS_H_
-#define CERES_INTERNAL_CUDA_KERNELS_UTILS_H_
-
-namespace ceres {
-namespace internal {
-
-// Parallel execution on CUDA device requires splitting job into blocks of a
-// fixed size. We use block-size of kCudaBlockSize for all kernels that do not
-// require any specific block size. As the CUDA Toolkit documentation says,
-// "although arbitrary in this case, is a common choice". This is determined by
-// the warp size, max block size, and multiprocessor sizes of recent GPUs. For
-// complex kernels with significant register usage and unusual memory patterns,
-// the occupancy calculator API might provide better performance. See "Occupancy
-// Calculator" under the CUDA toolkit documentation.
-constexpr int kCudaBlockSize = 256;
-
-// Compute number of blocks of kCudaBlockSize that span over 1-d grid with
-// dimension size. Note that 1-d grid dimension is limited by 2^31-1 in CUDA,
-// thus a signed int is used as an argument.
-inline int NumBlocksInGrid(int size) {
-  return (size + kCudaBlockSize - 1) / kCudaBlockSize;
-}
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_CUDA_KERNELS_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/cuda_kernels_vector_ops.cu.cc b/third_party/ceres/internal/ceres/cuda_kernels_vector_ops.cu.cc
deleted file mode 100644
index 3199ca6..0000000
--- a/third_party/ceres/internal/ceres/cuda_kernels_vector_ops.cu.cc
+++ /dev/null
@@ -1,123 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include "ceres/cuda_kernels_vector_ops.h"
-
-#include <cuda_runtime.h>
-
-#include "ceres/cuda_kernels_utils.h"
-
-namespace ceres {
-namespace internal {
-
-template <typename SrcType, typename DstType>
-__global__ void TypeConversionKernel(const SrcType* __restrict__ input,
-                                     DstType* __restrict__ output,
-                                     const int size) {
-  const int i = blockIdx.x * blockDim.x + threadIdx.x;
-  if (i < size) {
-    output[i] = static_cast<DstType>(input[i]);
-  }
-}
-
-void CudaFP64ToFP32(const double* input,
-                    float* output,
-                    const int size,
-                    cudaStream_t stream) {
-  const int num_blocks = NumBlocksInGrid(size);
-  TypeConversionKernel<double, float>
-      <<<num_blocks, kCudaBlockSize, 0, stream>>>(input, output, size);
-}
-
-void CudaFP32ToFP64(const float* input,
-                    double* output,
-                    const int size,
-                    cudaStream_t stream) {
-  const int num_blocks = NumBlocksInGrid(size);
-  TypeConversionKernel<float, double>
-      <<<num_blocks, kCudaBlockSize, 0, stream>>>(input, output, size);
-}
-
-template <typename T>
-__global__ void SetZeroKernel(T* __restrict__ output, const int size) {
-  const int i = blockIdx.x * blockDim.x + threadIdx.x;
-  if (i < size) {
-    output[i] = T(0.0);
-  }
-}
-
-void CudaSetZeroFP32(float* output, const int size, cudaStream_t stream) {
-  const int num_blocks = NumBlocksInGrid(size);
-  SetZeroKernel<float><<<num_blocks, kCudaBlockSize, 0, stream>>>(output, size);
-}
-
-void CudaSetZeroFP64(double* output, const int size, cudaStream_t stream) {
-  const int num_blocks = NumBlocksInGrid(size);
-  SetZeroKernel<double>
-      <<<num_blocks, kCudaBlockSize, 0, stream>>>(output, size);
-}
-
-template <typename SrcType, typename DstType>
-__global__ void XPlusEqualsYKernel(DstType* __restrict__ x,
-                                   const SrcType* __restrict__ y,
-                                   const int size) {
-  const int i = blockIdx.x * blockDim.x + threadIdx.x;
-  if (i < size) {
-    x[i] = x[i] + DstType(y[i]);
-  }
-}
-
-void CudaDsxpy(double* x, float* y, const int size, cudaStream_t stream) {
-  const int num_blocks = NumBlocksInGrid(size);
-  XPlusEqualsYKernel<float, double>
-      <<<num_blocks, kCudaBlockSize, 0, stream>>>(x, y, size);
-}
-
-__global__ void CudaDtDxpyKernel(double* __restrict__ y,
-                                 const double* D,
-                                 const double* __restrict__ x,
-                                 const int size) {
-  const int i = blockIdx.x * blockDim.x + threadIdx.x;
-  if (i < size) {
-    y[i] = y[i] + D[i] * D[i] * x[i];
-  }
-}
-
-void CudaDtDxpy(double* y,
-                const double* D,
-                const double* x,
-                const int size,
-                cudaStream_t stream) {
-  const int num_blocks = NumBlocksInGrid(size);
-  CudaDtDxpyKernel<<<num_blocks, kCudaBlockSize, 0, stream>>>(y, D, x, size);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cuda_kernels_vector_ops.h b/third_party/ceres/internal/ceres/cuda_kernels_vector_ops.h
deleted file mode 100644
index 9905657..0000000
--- a/third_party/ceres/internal/ceres/cuda_kernels_vector_ops.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#ifndef CERES_INTERNAL_CUDA_KERNELS_VECTOR_OPS_H_
-#define CERES_INTERNAL_CUDA_KERNELS_VECTOR_OPS_H_
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "cuda_runtime.h"
-
-namespace ceres {
-namespace internal {
-class Block;
-class Cell;
-
-// Convert an array of double (FP64) values to float (FP32). Both arrays must
-// already be on GPU memory.
-void CudaFP64ToFP32(const double* input,
-                    float* output,
-                    const int size,
-                    cudaStream_t stream);
-
-// Convert an array of float (FP32) values to double (FP64). Both arrays must
-// already be on GPU memory.
-void CudaFP32ToFP64(const float* input,
-                    double* output,
-                    const int size,
-                    cudaStream_t stream);
-
-// Set all elements of the array to the FP32 value 0. The array must be in GPU
-// memory.
-void CudaSetZeroFP32(float* output, const int size, cudaStream_t stream);
-
-// Set all elements of the array to the FP64 value 0. The array must be in GPU
-// memory.
-void CudaSetZeroFP64(double* output, const int size, cudaStream_t stream);
-
-// Compute x = x + double(y). Input array is float (FP32), output array is
-// double (FP64). Both arrays must already be on GPU memory.
-void CudaDsxpy(double* x, float* y, const int size, cudaStream_t stream);
-
-// Compute y[i] = y[i] + d[i]^2 x[i]. All arrays must already be on GPU memory.
-void CudaDtDxpy(double* y,
-                const double* D,
-                const double* x,
-                const int size,
-                cudaStream_t stream);
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_NO_CUDA
-
-#endif  // CERES_INTERNAL_CUDA_KERNELS_VECTOR_OPS_H_
diff --git a/third_party/ceres/internal/ceres/cuda_kernels_vector_ops_test.cc b/third_party/ceres/internal/ceres/cuda_kernels_vector_ops_test.cc
deleted file mode 100644
index e6116f7..0000000
--- a/third_party/ceres/internal/ceres/cuda_kernels_vector_ops_test.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include "ceres/cuda_kernels_vector_ops.h"
-
-#include <math.h>
-
-#include <limits>
-#include <string>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/cuda_buffer.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-#ifndef CERES_NO_CUDA
-
-TEST(CudaFP64ToFP32, SimpleConversions) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<double> fp64_cpu = {1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
-  CudaBuffer<double> fp64_gpu(&context);
-  fp64_gpu.CopyFromCpuVector(fp64_cpu);
-  CudaBuffer<float> fp32_gpu(&context);
-  fp32_gpu.Reserve(fp64_cpu.size());
-  CudaFP64ToFP32(fp64_gpu.data(),
-                 fp32_gpu.data(),
-                 fp64_cpu.size(),
-                 context.DefaultStream());
-  std::vector<float> fp32_cpu(fp64_cpu.size());
-  fp32_gpu.CopyToCpu(fp32_cpu.data(), fp32_cpu.size());
-  for (int i = 0; i < fp32_cpu.size(); ++i) {
-    EXPECT_EQ(fp32_cpu[i], static_cast<float>(fp64_cpu[i]));
-  }
-}
-
-TEST(CudaFP64ToFP32, NumericallyExtremeValues) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<double> fp64_cpu = {
-      DBL_MIN, 10.0 * DBL_MIN, DBL_MAX, 0.1 * DBL_MAX};
-  // First just make sure that the compiler has represented these values
-  // accurately as fp64.
-  EXPECT_GT(fp64_cpu[0], 0.0);
-  EXPECT_GT(fp64_cpu[1], 0.0);
-  EXPECT_TRUE(std::isfinite(fp64_cpu[2]));
-  EXPECT_TRUE(std::isfinite(fp64_cpu[3]));
-  CudaBuffer<double> fp64_gpu(&context);
-  fp64_gpu.CopyFromCpuVector(fp64_cpu);
-  CudaBuffer<float> fp32_gpu(&context);
-  fp32_gpu.Reserve(fp64_cpu.size());
-  CudaFP64ToFP32(fp64_gpu.data(),
-                 fp32_gpu.data(),
-                 fp64_cpu.size(),
-                 context.DefaultStream());
-  std::vector<float> fp32_cpu(fp64_cpu.size());
-  fp32_gpu.CopyToCpu(fp32_cpu.data(), fp32_cpu.size());
-  EXPECT_EQ(fp32_cpu[0], 0.0f);
-  EXPECT_EQ(fp32_cpu[1], 0.0f);
-  EXPECT_EQ(fp32_cpu[2], std::numeric_limits<float>::infinity());
-  EXPECT_EQ(fp32_cpu[3], std::numeric_limits<float>::infinity());
-}
-
-TEST(CudaFP32ToFP64, SimpleConversions) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<float> fp32_cpu = {1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
-  CudaBuffer<float> fp32_gpu(&context);
-  fp32_gpu.CopyFromCpuVector(fp32_cpu);
-  CudaBuffer<double> fp64_gpu(&context);
-  fp64_gpu.Reserve(fp32_cpu.size());
-  CudaFP32ToFP64(fp32_gpu.data(),
-                 fp64_gpu.data(),
-                 fp32_cpu.size(),
-                 context.DefaultStream());
-  std::vector<double> fp64_cpu(fp32_cpu.size());
-  fp64_gpu.CopyToCpu(fp64_cpu.data(), fp64_cpu.size());
-  for (int i = 0; i < fp64_cpu.size(); ++i) {
-    EXPECT_EQ(fp64_cpu[i], static_cast<double>(fp32_cpu[i]));
-  }
-}
-
-TEST(CudaSetZeroFP32, NonZeroInput) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<float> fp32_cpu = {1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
-  CudaBuffer<float> fp32_gpu(&context);
-  fp32_gpu.CopyFromCpuVector(fp32_cpu);
-  CudaSetZeroFP32(fp32_gpu.data(), fp32_cpu.size(), context.DefaultStream());
-  std::vector<float> fp32_cpu_zero(fp32_cpu.size());
-  fp32_gpu.CopyToCpu(fp32_cpu_zero.data(), fp32_cpu_zero.size());
-  for (int i = 0; i < fp32_cpu_zero.size(); ++i) {
-    EXPECT_EQ(fp32_cpu_zero[i], 0.0f);
-  }
-}
-
-TEST(CudaSetZeroFP64, NonZeroInput) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<double> fp64_cpu = {1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
-  CudaBuffer<double> fp64_gpu(&context);
-  fp64_gpu.CopyFromCpuVector(fp64_cpu);
-  CudaSetZeroFP64(fp64_gpu.data(), fp64_cpu.size(), context.DefaultStream());
-  std::vector<double> fp64_cpu_zero(fp64_cpu.size());
-  fp64_gpu.CopyToCpu(fp64_cpu_zero.data(), fp64_cpu_zero.size());
-  for (int i = 0; i < fp64_cpu_zero.size(); ++i) {
-    EXPECT_EQ(fp64_cpu_zero[i], 0.0);
-  }
-}
-
-TEST(CudaDsxpy, DoubleValues) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<float> fp32_cpu_a = {1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
-  std::vector<double> fp64_cpu_b = {
-      1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
-  CudaBuffer<float> fp32_gpu_a(&context);
-  fp32_gpu_a.CopyFromCpuVector(fp32_cpu_a);
-  CudaBuffer<double> fp64_gpu_b(&context);
-  fp64_gpu_b.CopyFromCpuVector(fp64_cpu_b);
-  CudaDsxpy(fp64_gpu_b.data(),
-            fp32_gpu_a.data(),
-            fp32_gpu_a.size(),
-            context.DefaultStream());
-  fp64_gpu_b.CopyToCpu(fp64_cpu_b.data(), fp64_cpu_b.size());
-  for (int i = 0; i < fp64_cpu_b.size(); ++i) {
-    EXPECT_DOUBLE_EQ(fp64_cpu_b[i], 2.0 * fp32_cpu_a[i]);
-  }
-}
-
-TEST(CudaDtDxpy, ComputeFourItems) {
-  ContextImpl context;
-  std::string cuda_error;
-  EXPECT_TRUE(context.InitCuda(&cuda_error)) << cuda_error;
-  std::vector<double> x_cpu = {1, 2, 3, 4};
-  std::vector<double> y_cpu = {4, 3, 2, 1};
-  std::vector<double> d_cpu = {10, 20, 30, 40};
-  CudaBuffer<double> x_gpu(&context);
-  x_gpu.CopyFromCpuVector(x_cpu);
-  CudaBuffer<double> y_gpu(&context);
-  y_gpu.CopyFromCpuVector(y_cpu);
-  CudaBuffer<double> d_gpu(&context);
-  d_gpu.CopyFromCpuVector(d_cpu);
-  CudaDtDxpy(y_gpu.data(),
-             d_gpu.data(),
-             x_gpu.data(),
-             y_gpu.size(),
-             context.DefaultStream());
-  y_gpu.CopyToCpu(y_cpu.data(), y_cpu.size());
-  EXPECT_DOUBLE_EQ(y_cpu[0], 4.0 + 10.0 * 10.0 * 1.0);
-  EXPECT_DOUBLE_EQ(y_cpu[1], 3.0 + 20.0 * 20.0 * 2.0);
-  EXPECT_DOUBLE_EQ(y_cpu[2], 2.0 + 30.0 * 30.0 * 3.0);
-  EXPECT_DOUBLE_EQ(y_cpu[3], 1.0 + 40.0 * 40.0 * 4.0);
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view.cc b/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view.cc
deleted file mode 100644
index c0c1dc8..0000000
--- a/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/cuda_partitioned_block_sparse_crs_view.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "ceres/cuda_block_structure.h"
-#include "ceres/cuda_kernels_bsm_to_crs.h"
-
-namespace ceres::internal {
-
-CudaPartitionedBlockSparseCRSView::CudaPartitionedBlockSparseCRSView(
-    const BlockSparseMatrix& bsm,
-    const int num_col_blocks_e,
-    ContextImpl* context)
-    :
-
-      context_(context) {
-  const auto& bs = *bsm.block_structure();
-  block_structure_ =
-      std::make_unique<CudaBlockSparseStructure>(bs, num_col_blocks_e, context);
-  // Determine number of non-zeros in left submatrix
-  // Row-blocks are at least 1 row high, thus we can use a temporary array of
-  // num_rows for ComputeNonZerosInColumnBlockSubMatrix; and later reuse it for
-  // FillCRSStructurePartitioned
-  const int num_rows = bsm.num_rows();
-  const int num_nonzeros_e = block_structure_->num_nonzeros_e();
-  const int num_nonzeros_f = bsm.num_nonzeros() - num_nonzeros_e;
-
-  const int num_cols_e = num_col_blocks_e < bs.cols.size()
-                             ? bs.cols[num_col_blocks_e].position
-                             : bsm.num_cols();
-  const int num_cols_f = bsm.num_cols() - num_cols_e;
-
-  CudaBuffer<int32_t> rows_e(context, num_rows + 1);
-  CudaBuffer<int32_t> cols_e(context, num_nonzeros_e);
-  CudaBuffer<int32_t> rows_f(context, num_rows + 1);
-  CudaBuffer<int32_t> cols_f(context, num_nonzeros_f);
-
-  num_row_blocks_e_ = block_structure_->num_row_blocks_e();
-  FillCRSStructurePartitioned(block_structure_->num_row_blocks(),
-                              num_rows,
-                              num_row_blocks_e_,
-                              num_col_blocks_e,
-                              num_nonzeros_e,
-                              block_structure_->first_cell_in_row_block(),
-                              block_structure_->cells(),
-                              block_structure_->row_blocks(),
-                              block_structure_->col_blocks(),
-                              rows_e.data(),
-                              cols_e.data(),
-                              rows_f.data(),
-                              cols_f.data(),
-                              context->DefaultStream(),
-                              context->is_cuda_memory_pools_supported_);
-  f_is_crs_compatible_ = block_structure_->IsCrsCompatible();
-  if (f_is_crs_compatible_) {
-    block_structure_ = nullptr;
-  } else {
-    streamed_buffer_ = std::make_unique<CudaStreamedBuffer<double>>(
-        context, kMaxTemporaryArraySize);
-  }
-  matrix_e_ = std::make_unique<CudaSparseMatrix>(
-      num_cols_e, std::move(rows_e), std::move(cols_e), context);
-  matrix_f_ = std::make_unique<CudaSparseMatrix>(
-      num_cols_f, std::move(rows_f), std::move(cols_f), context);
-
-  CHECK_EQ(bsm.num_nonzeros(),
-           matrix_e_->num_nonzeros() + matrix_f_->num_nonzeros());
-
-  UpdateValues(bsm);
-}
-
-void CudaPartitionedBlockSparseCRSView::UpdateValues(
-    const BlockSparseMatrix& bsm) {
-  if (f_is_crs_compatible_) {
-    CHECK_EQ(cudaSuccess,
-             cudaMemcpyAsync(matrix_e_->mutable_values(),
-                             bsm.values(),
-                             matrix_e_->num_nonzeros() * sizeof(double),
-                             cudaMemcpyHostToDevice,
-                             context_->DefaultStream()));
-
-    CHECK_EQ(cudaSuccess,
-             cudaMemcpyAsync(matrix_f_->mutable_values(),
-                             bsm.values() + matrix_e_->num_nonzeros(),
-                             matrix_f_->num_nonzeros() * sizeof(double),
-                             cudaMemcpyHostToDevice,
-                             context_->DefaultStream()));
-    return;
-  }
-  streamed_buffer_->CopyToGpu(
-      bsm.values(),
-      bsm.num_nonzeros(),
-      [block_structure = block_structure_.get(),
-       num_nonzeros_e = matrix_e_->num_nonzeros(),
-       num_row_blocks_e = num_row_blocks_e_,
-       values_f = matrix_f_->mutable_values(),
-       rows_f = matrix_f_->rows()](
-          const double* values, int num_values, int offset, auto stream) {
-        PermuteToCRSPartitionedF(num_nonzeros_e + offset,
-                                 num_values,
-                                 block_structure->num_row_blocks(),
-                                 num_row_blocks_e,
-                                 block_structure->first_cell_in_row_block(),
-                                 block_structure->value_offset_row_block_f(),
-                                 block_structure->cells(),
-                                 block_structure->row_blocks(),
-                                 block_structure->col_blocks(),
-                                 rows_f,
-                                 values,
-                                 values_f,
-                                 stream);
-      });
-  CHECK_EQ(cudaSuccess,
-           cudaMemcpyAsync(matrix_e_->mutable_values(),
-                           bsm.values(),
-                           matrix_e_->num_nonzeros() * sizeof(double),
-                           cudaMemcpyHostToDevice,
-                           context_->DefaultStream()));
-}
-
-}  // namespace ceres::internal
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view.h b/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view.h
deleted file mode 100644
index 3072dea..0000000
--- a/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-//
-
-#ifndef CERES_INTERNAL_CUDA_PARTITIONED_BLOCK_SPARSE_CRS_VIEW_H_
-#define CERES_INTERNAL_CUDA_PARTITIONED_BLOCK_SPARSE_CRS_VIEW_H_
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include <memory>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/cuda_block_structure.h"
-#include "ceres/cuda_buffer.h"
-#include "ceres/cuda_sparse_matrix.h"
-#include "ceres/cuda_streamed_buffer.h"
-
-namespace ceres::internal {
-// We use cuSPARSE library for SpMV operations. However, it does not support
-// neither block-sparse format with varying size of the blocks nor
-// submatrix-vector products. Thus, we perform the following operations in order
-// to compute products of partitioned block-sparse matrices and dense vectors on
-// gpu:
-//  - Once per block-sparse structure update:
-//    - Compute CRS structures of left and right submatrices from block-sparse
-//    structure
-//    - Check if values of F sub-matrix can be copied without permutation
-//    matrices
-//  - Once per block-sparse values update:
-//    - Copy values of E sub-matrix
-//    - Permute or copy values of F sub-matrix
-//
-// It is assumed that cells of block-sparse matrix are laid out sequentially in
-// both of sub-matrices and there is exactly one cell in row-block of E
-// sub-matrix in the first num_row_blocks_e_ row blocks, and no cells in E
-// sub-matrix below num_row_blocks_e_ row blocks.
-//
-// This class avoids storing both CRS and block-sparse values in GPU memory.
-// Instead, block-sparse values are transferred to gpu memory as a disjoint set
-// of small continuous segments with simultaneous permutation of the values into
-// correct order using block-structure.
-class CERES_NO_EXPORT CudaPartitionedBlockSparseCRSView {
- public:
-  // Initializes internal CRS matrix and block-sparse structure on GPU side
-  // values. The following objects are stored in gpu memory for the whole
-  // lifetime of the object
-  //  - matrix_e_: left CRS submatrix
-  //  - matrix_f_: right CRS submatrix
-  //  - block_structure_: copy of block-sparse structure on GPU
-  //  - streamed_buffer_: helper for value updating
-  CudaPartitionedBlockSparseCRSView(const BlockSparseMatrix& bsm,
-                                    const int num_col_blocks_e,
-                                    ContextImpl* context);
-
-  // Update values of CRS submatrices using values of block-sparse matrix.
-  // Assumes that bsm has the same block-sparse structure as matrix that was
-  // used for construction.
-  void UpdateValues(const BlockSparseMatrix& bsm);
-
-  const CudaSparseMatrix* matrix_e() const { return matrix_e_.get(); }
-  const CudaSparseMatrix* matrix_f() const { return matrix_f_.get(); }
-  CudaSparseMatrix* mutable_matrix_e() { return matrix_e_.get(); }
-  CudaSparseMatrix* mutable_matrix_f() { return matrix_f_.get(); }
-
- private:
-  // Value permutation kernel performs a single element-wise operation per
-  // thread, thus performing permutation in blocks of 8 megabytes of
-  // block-sparse  values seems reasonable
-  static constexpr int kMaxTemporaryArraySize = 1 * 1024 * 1024;
-  std::unique_ptr<CudaSparseMatrix> matrix_e_;
-  std::unique_ptr<CudaSparseMatrix> matrix_f_;
-  std::unique_ptr<CudaStreamedBuffer<double>> streamed_buffer_;
-  std::unique_ptr<CudaBlockSparseStructure> block_structure_;
-  bool f_is_crs_compatible_;
-  int num_row_blocks_e_;
-  ContextImpl* context_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-#endif  // CERES_INTERNAL_CUDA_PARTITIONED_BLOCK_SPARSE_CRS_VIEW_H_
diff --git a/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view_test.cc b/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view_test.cc
deleted file mode 100644
index ddfdeef..0000000
--- a/third_party/ceres/internal/ceres/cuda_partitioned_block_sparse_crs_view_test.cc
+++ /dev/null
@@ -1,279 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/cuda_partitioned_block_sparse_crs_view.h"
-
-#include <glog/logging.h>
-#include <gtest/gtest.h>
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-
-namespace {
-struct RandomPartitionedMatrixOptions {
-  int num_row_blocks_e;
-  int num_row_blocks_f;
-  int num_col_blocks_e;
-  int num_col_blocks_f;
-  int min_row_block_size;
-  int max_row_block_size;
-  int min_col_block_size;
-  int max_col_block_size;
-  double empty_f_probability;
-  double cell_probability_f;
-  int max_cells_f;
-};
-
-std::unique_ptr<BlockSparseMatrix> CreateRandomPartitionedMatrix(
-    const RandomPartitionedMatrixOptions& options, std::mt19937& rng) {
-  const int num_row_blocks =
-      std::max(options.num_row_blocks_e, options.num_row_blocks_f);
-  const int num_col_blocks =
-      options.num_col_blocks_e + options.num_col_blocks_f;
-
-  CompressedRowBlockStructure* block_structure =
-      new CompressedRowBlockStructure;
-  block_structure->cols.reserve(num_col_blocks);
-  block_structure->rows.reserve(num_row_blocks);
-
-  // Create column blocks
-  std::uniform_int_distribution<int> col_size(options.min_col_block_size,
-                                              options.max_col_block_size);
-  int num_cols = 0;
-  for (int i = 0; i < num_col_blocks; ++i) {
-    const int size = col_size(rng);
-    block_structure->cols.emplace_back(size, num_cols);
-    num_cols += size;
-  }
-
-  // Prepare column-block indices of E cells
-  std::vector<int> e_col_block_idx;
-  e_col_block_idx.reserve(options.num_row_blocks_e);
-  std::uniform_int_distribution<int> col_e(0, options.num_col_blocks_e - 1);
-  for (int i = 0; i < options.num_row_blocks_e; ++i) {
-    e_col_block_idx.emplace_back(col_e(rng));
-  }
-  std::sort(e_col_block_idx.begin(), e_col_block_idx.end());
-
-  // Prepare cell structure
-  std::uniform_int_distribution<int> row_size(options.min_row_block_size,
-                                              options.max_row_block_size);
-  std::uniform_real_distribution<double> uniform;
-  int num_rows = 0;
-  for (int i = 0; i < num_row_blocks; ++i) {
-    const int size = row_size(rng);
-    block_structure->rows.emplace_back();
-    auto& row = block_structure->rows.back();
-    row.block.size = size;
-    row.block.position = num_rows;
-    num_rows += size;
-    if (i < options.num_row_blocks_e) {
-      row.cells.emplace_back(e_col_block_idx[i], -1);
-      if (uniform(rng) < options.empty_f_probability) {
-        continue;
-      }
-    }
-    if (i >= options.num_row_blocks_f) continue;
-    const int cells_before = row.cells.size();
-    for (int j = options.num_col_blocks_e; j < num_col_blocks; ++j) {
-      if (uniform(rng) > options.cell_probability_f) {
-        continue;
-      }
-      row.cells.emplace_back(j, -1);
-    }
-    if (row.cells.size() > cells_before + options.max_cells_f) {
-      std::shuffle(row.cells.begin() + cells_before, row.cells.end(), rng);
-      row.cells.resize(cells_before + options.max_cells_f);
-      std::sort(
-          row.cells.begin(), row.cells.end(), [](const auto& a, const auto& b) {
-            return a.block_id < b.block_id;
-          });
-    }
-  }
-
-  // Fill positions in E sub-matrix
-  int num_nonzeros = 0;
-  for (int i = 0; i < options.num_row_blocks_e; ++i) {
-    CHECK_GE(block_structure->rows[i].cells.size(), 1);
-    block_structure->rows[i].cells[0].position = num_nonzeros;
-    const int col_block_size =
-        block_structure->cols[block_structure->rows[i].cells[0].block_id].size;
-    const int row_block_size = block_structure->rows[i].block.size;
-    num_nonzeros += row_block_size * col_block_size;
-    CHECK_GE(num_nonzeros, 0);
-  }
-  // Fill positions in F sub-matrix
-  for (int i = 0; i < options.num_row_blocks_f; ++i) {
-    const int row_block_size = block_structure->rows[i].block.size;
-    for (auto& cell : block_structure->rows[i].cells) {
-      if (cell.position >= 0) continue;
-      cell.position = num_nonzeros;
-      const int col_block_size = block_structure->cols[cell.block_id].size;
-      num_nonzeros += row_block_size * col_block_size;
-      CHECK_GE(num_nonzeros, 0);
-    }
-  }
-  // Populate values
-  auto bsm = std::make_unique<BlockSparseMatrix>(block_structure, true);
-  for (int i = 0; i < num_nonzeros; ++i) {
-    bsm->mutable_values()[i] = i + 1;
-  }
-  return bsm;
-}
-}  // namespace
-
-class CudaPartitionedBlockSparseCRSViewTest : public ::testing::Test {
-  static constexpr int kNumColBlocksE = 456;
-
- protected:
-  void SetUp() final {
-    std::string message;
-    CHECK(context_.InitCuda(&message))
-        << "InitCuda() failed because: " << message;
-
-    RandomPartitionedMatrixOptions options;
-    options.num_row_blocks_f = 123;
-    options.num_row_blocks_e = 456;
-    options.num_col_blocks_f = 123;
-    options.num_col_blocks_e = kNumColBlocksE;
-    options.min_row_block_size = 1;
-    options.max_row_block_size = 4;
-    options.min_col_block_size = 1;
-    options.max_col_block_size = 4;
-    options.empty_f_probability = .1;
-    options.cell_probability_f = .2;
-    options.max_cells_f = options.num_col_blocks_f;
-
-    std::mt19937 rng;
-    short_f_ = CreateRandomPartitionedMatrix(options, rng);
-
-    options.num_row_blocks_e = 123;
-    options.num_row_blocks_f = 456;
-    short_e_ = CreateRandomPartitionedMatrix(options, rng);
-
-    options.max_cells_f = 1;
-    options.num_row_blocks_e = options.num_row_blocks_f;
-    options.num_row_blocks_e = options.num_row_blocks_f;
-    f_crs_compatible_ = CreateRandomPartitionedMatrix(options, rng);
-  }
-
-  void TestMatrix(const BlockSparseMatrix& A_) {
-    const int num_col_blocks_e = 456;
-    CudaPartitionedBlockSparseCRSView view(A_, kNumColBlocksE, &context_);
-
-    const int num_rows = A_.num_rows();
-    const int num_cols = A_.num_cols();
-
-    const auto& bs = *A_.block_structure();
-    const int num_cols_e = bs.cols[num_col_blocks_e].position;
-    const int num_cols_f = num_cols - num_cols_e;
-
-    auto matrix_e = view.matrix_e();
-    auto matrix_f = view.matrix_f();
-    ASSERT_EQ(matrix_e->num_cols(), num_cols_e);
-    ASSERT_EQ(matrix_e->num_rows(), num_rows);
-    ASSERT_EQ(matrix_f->num_cols(), num_cols_f);
-    ASSERT_EQ(matrix_f->num_rows(), num_rows);
-
-    Vector x(num_cols);
-    Vector x_left(num_cols_e);
-    Vector x_right(num_cols_f);
-    Vector y(num_rows);
-    CudaVector x_cuda(&context_, num_cols);
-    CudaVector x_left_cuda(&context_, num_cols_e);
-    CudaVector x_right_cuda(&context_, num_cols_f);
-    CudaVector y_cuda(&context_, num_rows);
-    Vector y_cuda_host(num_rows);
-
-    for (int i = 0; i < num_cols_e; ++i) {
-      x.setZero();
-      x_left.setZero();
-      y.setZero();
-      y_cuda.SetZero();
-      x[i] = 1.;
-      x_left[i] = 1.;
-      x_left_cuda.CopyFromCpu(x_left);
-      A_.RightMultiplyAndAccumulate(
-          x.data(), y.data(), &context_, std::thread::hardware_concurrency());
-      matrix_e->RightMultiplyAndAccumulate(x_left_cuda, &y_cuda);
-      y_cuda.CopyTo(&y_cuda_host);
-      // There will be up to 1 non-zero product per row, thus we expect an exact
-      // match on 32-bit integer indices
-      EXPECT_EQ((y - y_cuda_host).squaredNorm(), 0.);
-    }
-    for (int i = num_cols_e; i < num_cols_f; ++i) {
-      x.setZero();
-      x_right.setZero();
-      y.setZero();
-      y_cuda.SetZero();
-      x[i] = 1.;
-      x_right[i - num_cols_e] = 1.;
-      x_right_cuda.CopyFromCpu(x_right);
-      A_.RightMultiplyAndAccumulate(
-          x.data(), y.data(), &context_, std::thread::hardware_concurrency());
-      matrix_f->RightMultiplyAndAccumulate(x_right_cuda, &y_cuda);
-      y_cuda.CopyTo(&y_cuda_host);
-      // There will be up to 1 non-zero product per row, thus we expect an exact
-      // match on 32-bit integer indices
-      EXPECT_EQ((y - y_cuda_host).squaredNorm(), 0.);
-    }
-  }
-
-  // E sub-matrix might have less row-blocks with cells than F sub-matrix. This
-  // test matrix checks if this case is handled properly
-  std::unique_ptr<BlockSparseMatrix> short_e_;
-  // In case of non-crs compatible F matrix, permuting values from block-order
-  // to crs order involves binary search over row-blocks of F. Having lots of
-  // row-blocks with no F cells is an edge case for this algorithm.
-  std::unique_ptr<BlockSparseMatrix> short_f_;
-  // With F matrix being CRS-compatible, update of the values of partitioned
-  // matrix view reduces to two host->device memcopies, and uses a separate code
-  // path
-  std::unique_ptr<BlockSparseMatrix> f_crs_compatible_;
-
-  ContextImpl context_;
-};
-
-TEST_F(CudaPartitionedBlockSparseCRSViewTest, CreateUpdateValuesShortE) {
-  TestMatrix(*short_e_);
-}
-
-TEST_F(CudaPartitionedBlockSparseCRSViewTest, CreateUpdateValuesShortF) {
-  TestMatrix(*short_f_);
-}
-
-TEST_F(CudaPartitionedBlockSparseCRSViewTest,
-       CreateUpdateValuesCrsCompatibleF) {
-  TestMatrix(*f_crs_compatible_);
-}
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_sparse_matrix.cc b/third_party/ceres/internal/ceres/cuda_sparse_matrix.cc
deleted file mode 100644
index 33685a4..0000000
--- a/third_party/ceres/internal/ceres/cuda_sparse_matrix.cc
+++ /dev/null
@@ -1,226 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-//
-// A CUDA sparse matrix linear operator.
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include "ceres/cuda_sparse_matrix.h"
-
-#include <math.h>
-
-#include <memory>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "ceres/cuda_buffer.h"
-#include "ceres/cuda_kernels_vector_ops.h"
-#include "ceres/cuda_vector.h"
-#include "cuda_runtime_api.h"
-#include "cusparse.h"
-
-namespace ceres::internal {
-namespace {
-// Starting in CUDA 11.2.1, CUSPARSE_MV_ALG_DEFAULT was deprecated in favor of
-// CUSPARSE_SPMV_ALG_DEFAULT.
-#if CUDART_VERSION >= 11021
-const auto kSpMVAlgorithm = CUSPARSE_SPMV_ALG_DEFAULT;
-#else   // CUDART_VERSION >= 11021
-const auto kSpMVAlgorithm = CUSPARSE_MV_ALG_DEFAULT;
-#endif  // CUDART_VERSION >= 11021
-size_t GetTempBufferSizeForOp(const cusparseHandle_t& handle,
-                              const cusparseOperation_t op,
-                              const cusparseDnVecDescr_t& x,
-                              const cusparseDnVecDescr_t& y,
-                              const cusparseSpMatDescr_t& A) {
-  size_t buffer_size;
-  const double alpha = 1.0;
-  const double beta = 1.0;
-  CHECK_NE(A, nullptr);
-  CHECK_EQ(cusparseSpMV_bufferSize(handle,
-                                   op,
-                                   &alpha,
-                                   A,
-                                   x,
-                                   &beta,
-                                   y,
-                                   CUDA_R_64F,
-                                   kSpMVAlgorithm,
-                                   &buffer_size),
-           CUSPARSE_STATUS_SUCCESS);
-  return buffer_size;
-}
-
-size_t GetTempBufferSize(const cusparseHandle_t& handle,
-                         const cusparseDnVecDescr_t& left,
-                         const cusparseDnVecDescr_t& right,
-                         const cusparseSpMatDescr_t& A) {
-  CHECK_NE(A, nullptr);
-  return std::max(GetTempBufferSizeForOp(
-                      handle, CUSPARSE_OPERATION_NON_TRANSPOSE, right, left, A),
-                  GetTempBufferSizeForOp(
-                      handle, CUSPARSE_OPERATION_TRANSPOSE, left, right, A));
-}
-}  // namespace
-
-CudaSparseMatrix::CudaSparseMatrix(int num_cols,
-                                   CudaBuffer<int32_t>&& rows,
-                                   CudaBuffer<int32_t>&& cols,
-                                   ContextImpl* context)
-    : num_rows_(rows.size() - 1),
-      num_cols_(num_cols),
-      num_nonzeros_(cols.size()),
-      context_(context),
-      rows_(std::move(rows)),
-      cols_(std::move(cols)),
-      values_(context, num_nonzeros_),
-      spmv_buffer_(context) {
-  Initialize();
-}
-
-CudaSparseMatrix::CudaSparseMatrix(ContextImpl* context,
-                                   const CompressedRowSparseMatrix& crs_matrix)
-    : num_rows_(crs_matrix.num_rows()),
-      num_cols_(crs_matrix.num_cols()),
-      num_nonzeros_(crs_matrix.num_nonzeros()),
-      context_(context),
-      rows_(context, num_rows_ + 1),
-      cols_(context, num_nonzeros_),
-      values_(context, num_nonzeros_),
-      spmv_buffer_(context) {
-  rows_.CopyFromCpu(crs_matrix.rows(), num_rows_ + 1);
-  cols_.CopyFromCpu(crs_matrix.cols(), num_nonzeros_);
-  values_.CopyFromCpu(crs_matrix.values(), num_nonzeros_);
-  Initialize();
-}
-
-CudaSparseMatrix::~CudaSparseMatrix() {
-  CHECK_EQ(cusparseDestroySpMat(descr_), CUSPARSE_STATUS_SUCCESS);
-  descr_ = nullptr;
-  CHECK_EQ(CUSPARSE_STATUS_SUCCESS, cusparseDestroyDnVec(descr_vec_left_));
-  CHECK_EQ(CUSPARSE_STATUS_SUCCESS, cusparseDestroyDnVec(descr_vec_right_));
-}
-
-void CudaSparseMatrix::CopyValuesFromCpu(
-    const CompressedRowSparseMatrix& crs_matrix) {
-  // There is no quick and easy way to verify that the structure is unchanged,
-  // but at least we can check that the size of the matrix and the number of
-  // nonzeros is unchanged.
-  CHECK_EQ(num_rows_, crs_matrix.num_rows());
-  CHECK_EQ(num_cols_, crs_matrix.num_cols());
-  CHECK_EQ(num_nonzeros_, crs_matrix.num_nonzeros());
-  values_.CopyFromCpu(crs_matrix.values(), num_nonzeros_);
-}
-
-void CudaSparseMatrix::Initialize() {
-  CHECK(context_->IsCudaInitialized());
-  CHECK_EQ(CUSPARSE_STATUS_SUCCESS,
-           cusparseCreateCsr(&descr_,
-                             num_rows_,
-                             num_cols_,
-                             num_nonzeros_,
-                             rows_.data(),
-                             cols_.data(),
-                             values_.data(),
-                             CUSPARSE_INDEX_32I,
-                             CUSPARSE_INDEX_32I,
-                             CUSPARSE_INDEX_BASE_ZERO,
-                             CUDA_R_64F));
-
-  // Note: values_.data() is used as non-zero pointer to device memory
-  // When there is no non-zero values, data-pointer of values_ array will be a
-  // nullptr; but in this case left/right products are trivial and temporary
-  // buffer (and vector descriptors) is not required
-  if (!num_nonzeros_) return;
-
-  CHECK_EQ(CUSPARSE_STATUS_SUCCESS,
-           cusparseCreateDnVec(
-               &descr_vec_left_, num_rows_, values_.data(), CUDA_R_64F));
-  CHECK_EQ(CUSPARSE_STATUS_SUCCESS,
-           cusparseCreateDnVec(
-               &descr_vec_right_, num_cols_, values_.data(), CUDA_R_64F));
-  size_t buffer_size = GetTempBufferSize(
-      context_->cusparse_handle_, descr_vec_left_, descr_vec_right_, descr_);
-  spmv_buffer_.Reserve(buffer_size);
-}
-
-void CudaSparseMatrix::SpMv(cusparseOperation_t op,
-                            const cusparseDnVecDescr_t& x,
-                            const cusparseDnVecDescr_t& y) const {
-  const double alpha = 1.0;
-  const double beta = 1.0;
-
-  CHECK_EQ(cusparseSpMV(context_->cusparse_handle_,
-                        op,
-                        &alpha,
-                        descr_,
-                        x,
-                        &beta,
-                        y,
-                        CUDA_R_64F,
-                        kSpMVAlgorithm,
-                        spmv_buffer_.data()),
-           CUSPARSE_STATUS_SUCCESS);
-}
-
-void CudaSparseMatrix::RightMultiplyAndAccumulate(const CudaVector& x,
-                                                  CudaVector* y) const {
-  DCHECK(GetTempBufferSize(
-             context_->cusparse_handle_, y->descr(), x.descr(), descr_) <=
-         spmv_buffer_.size());
-  SpMv(CUSPARSE_OPERATION_NON_TRANSPOSE, x.descr(), y->descr());
-}
-
-void CudaSparseMatrix::LeftMultiplyAndAccumulate(const CudaVector& x,
-                                                 CudaVector* y) const {
-  // TODO(Joydeep Biswas): We should consider storing a transposed copy of the
-  // matrix by converting CSR to CSC. From the cuSPARSE documentation:
-  // "In general, opA == CUSPARSE_OPERATION_NON_TRANSPOSE is 3x faster than opA
-  // != CUSPARSE_OPERATION_NON_TRANSPOSE"
-  DCHECK(GetTempBufferSize(
-             context_->cusparse_handle_, x.descr(), y->descr(), descr_) <=
-         spmv_buffer_.size());
-  SpMv(CUSPARSE_OPERATION_TRANSPOSE, x.descr(), y->descr());
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_sparse_matrix.h b/third_party/ceres/internal/ceres/cuda_sparse_matrix.h
deleted file mode 100644
index 2940d1d..0000000
--- a/third_party/ceres/internal/ceres/cuda_sparse_matrix.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-//
-// A CUDA sparse matrix linear operator.
-
-#ifndef CERES_INTERNAL_CUDA_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_CUDA_SPARSE_MATRIX_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <cstdint>
-#include <memory>
-#include <string>
-
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-#ifndef CERES_NO_CUDA
-#include "ceres/cuda_buffer.h"
-#include "ceres/cuda_vector.h"
-#include "cusparse.h"
-
-namespace ceres::internal {
-
-// A sparse matrix hosted on the GPU in compressed row sparse format, with
-// CUDA-accelerated operations.
-// The user of the class must ensure that ContextImpl::InitCuda() has already
-// been successfully called before using this class.
-class CERES_NO_EXPORT CudaSparseMatrix {
- public:
-  // Create a GPU copy of the matrix provided.
-  CudaSparseMatrix(ContextImpl* context,
-                   const CompressedRowSparseMatrix& crs_matrix);
-
-  // Create matrix from existing row and column index buffers.
-  // Values are left uninitialized.
-  CudaSparseMatrix(int num_cols,
-                   CudaBuffer<int32_t>&& rows,
-                   CudaBuffer<int32_t>&& cols,
-                   ContextImpl* context);
-
-  ~CudaSparseMatrix();
-
-  // Left/right products are using internal buffer and are not thread-safe
-  // y = y + Ax;
-  void RightMultiplyAndAccumulate(const CudaVector& x, CudaVector* y) const;
-  // y = y + A'x;
-  void LeftMultiplyAndAccumulate(const CudaVector& x, CudaVector* y) const;
-
-  int num_rows() const { return num_rows_; }
-  int num_cols() const { return num_cols_; }
-  int num_nonzeros() const { return num_nonzeros_; }
-
-  const int32_t* rows() const { return rows_.data(); }
-  const int32_t* cols() const { return cols_.data(); }
-  const double* values() const { return values_.data(); }
-
-  int32_t* mutable_rows() { return rows_.data(); }
-  int32_t* mutable_cols() { return cols_.data(); }
-  double* mutable_values() { return values_.data(); }
-
-  // If subsequent uses of this matrix involve only numerical changes and no
-  // structural changes, then this method can be used to copy the updated
-  // non-zero values -- the row and column index arrays are kept  the same. It
-  // is the caller's responsibility to ensure that the sparsity structure of the
-  // matrix is unchanged.
-  void CopyValuesFromCpu(const CompressedRowSparseMatrix& crs_matrix);
-
-  const cusparseSpMatDescr_t& descr() const { return descr_; }
-
- private:
-  // Disable copy and assignment.
-  CudaSparseMatrix(const CudaSparseMatrix&) = delete;
-  CudaSparseMatrix& operator=(const CudaSparseMatrix&) = delete;
-
-  // Allocate temporary buffer for left/right products, create cuSPARSE
-  // descriptors
-  void Initialize();
-
-  // y = y + op(M)x. op must be either CUSPARSE_OPERATION_NON_TRANSPOSE or
-  // CUSPARSE_OPERATION_TRANSPOSE.
-  void SpMv(cusparseOperation_t op,
-            const cusparseDnVecDescr_t& x,
-            const cusparseDnVecDescr_t& y) const;
-
-  int num_rows_ = 0;
-  int num_cols_ = 0;
-  int num_nonzeros_ = 0;
-
-  ContextImpl* context_ = nullptr;
-  // CSR row indices.
-  CudaBuffer<int32_t> rows_;
-  // CSR column indices.
-  CudaBuffer<int32_t> cols_;
-  // CSR values.
-  CudaBuffer<double> values_;
-
-  // CuSparse object that describes this matrix.
-  cusparseSpMatDescr_t descr_ = nullptr;
-
-  // Dense vector descriptors for pointer interface
-  cusparseDnVecDescr_t descr_vec_left_ = nullptr;
-  cusparseDnVecDescr_t descr_vec_right_ = nullptr;
-
-  mutable CudaBuffer<uint8_t> spmv_buffer_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-#endif  // CERES_INTERNAL_CUDA_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/cuda_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/cuda_sparse_matrix_test.cc
deleted file mode 100644
index 774829b..0000000
--- a/third_party/ceres/internal/ceres/cuda_sparse_matrix_test.cc
+++ /dev/null
@@ -1,286 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include "ceres/cuda_sparse_matrix.h"
-
-#include <string>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/cuda_vector.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-#ifndef CERES_NO_CUDA
-
-class CudaSparseMatrixTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::string message;
-    CHECK(context_.InitCuda(&message))
-        << "InitCuda() failed because: " << message;
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(2);
-    CHECK(problem != nullptr);
-    A_.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-    CHECK(A_ != nullptr);
-    CHECK(problem->b != nullptr);
-    CHECK(problem->x != nullptr);
-    b_.resize(A_->num_rows());
-    for (int i = 0; i < A_->num_rows(); ++i) {
-      b_[i] = problem->b[i];
-    }
-    x_.resize(A_->num_cols());
-    for (int i = 0; i < A_->num_cols(); ++i) {
-      x_[i] = problem->x[i];
-    }
-    CHECK_EQ(A_->num_rows(), b_.rows());
-    CHECK_EQ(A_->num_cols(), x_.rows());
-  }
-
-  std::unique_ptr<BlockSparseMatrix> A_;
-  Vector x_;
-  Vector b_;
-  ContextImpl context_;
-};
-
-TEST_F(CudaSparseMatrixTest, RightMultiplyAndAccumulate) {
-  std::string message;
-  auto A_crs = A_->ToCompressedRowSparseMatrix();
-  CudaSparseMatrix A_gpu(&context_, *A_crs);
-  CudaVector x_gpu(&context_, A_gpu.num_cols());
-  CudaVector res_gpu(&context_, A_gpu.num_rows());
-  x_gpu.CopyFromCpu(x_);
-
-  const Vector minus_b = -b_;
-  // res = -b
-  res_gpu.CopyFromCpu(minus_b);
-  // res += A * x
-  A_gpu.RightMultiplyAndAccumulate(x_gpu, &res_gpu);
-
-  Vector res;
-  res_gpu.CopyTo(&res);
-
-  Vector res_expected = minus_b;
-  A_->RightMultiplyAndAccumulate(x_.data(), res_expected.data());
-
-  EXPECT_LE((res - res_expected).norm(),
-            std::numeric_limits<double>::epsilon() * 1e3);
-}
-
-TEST(CudaSparseMatrix, CopyValuesFromCpu) {
-  // A1:
-  // [ 1 1 0 0
-  //   0 1 1 0]
-  // A2:
-  // [ 1 2 0 0
-  //   0 3 4 0]
-  // b: [1 2 3 4]'
-  // A1 * b = [3 5]'
-  // A2 * b = [5 18]'
-  TripletSparseMatrix A1(2, 4, {0, 0, 1, 1}, {0, 1, 1, 2}, {1, 1, 1, 1});
-  TripletSparseMatrix A2(2, 4, {0, 0, 1, 1}, {0, 1, 1, 2}, {1, 2, 3, 4});
-  Vector b(4);
-  b << 1, 2, 3, 4;
-
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  auto A1_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A1);
-  CudaSparseMatrix A_gpu(&context, *A1_crs);
-  CudaVector b_gpu(&context, A1.num_cols());
-  CudaVector x_gpu(&context, A1.num_rows());
-  b_gpu.CopyFromCpu(b);
-  x_gpu.SetZero();
-
-  Vector x_expected(2);
-  x_expected << 3, 5;
-  A_gpu.RightMultiplyAndAccumulate(b_gpu, &x_gpu);
-  Vector x_computed;
-  x_gpu.CopyTo(&x_computed);
-  EXPECT_EQ(x_computed, x_expected);
-
-  auto A2_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A2);
-  A_gpu.CopyValuesFromCpu(*A2_crs);
-  x_gpu.SetZero();
-  x_expected << 5, 18;
-  A_gpu.RightMultiplyAndAccumulate(b_gpu, &x_gpu);
-  x_gpu.CopyTo(&x_computed);
-  EXPECT_EQ(x_computed, x_expected);
-}
-
-TEST(CudaSparseMatrix, RightMultiplyAndAccumulate) {
-  // A:
-  // [ 1 2 0 0
-  //   0 3 4 0]
-  // b: [1 2 3 4]'
-  // A * b = [5 18]'
-  TripletSparseMatrix A(2, 4, {0, 0, 1, 1}, {0, 1, 1, 2}, {1, 2, 3, 4});
-  Vector b(4);
-  b << 1, 2, 3, 4;
-  Vector x_expected(2);
-  x_expected << 5, 18;
-
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  auto A_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A);
-  CudaSparseMatrix A_gpu(&context, *A_crs);
-  CudaVector b_gpu(&context, A.num_cols());
-  CudaVector x_gpu(&context, A.num_rows());
-  b_gpu.CopyFromCpu(b);
-  x_gpu.SetZero();
-
-  A_gpu.RightMultiplyAndAccumulate(b_gpu, &x_gpu);
-
-  Vector x_computed;
-  x_gpu.CopyTo(&x_computed);
-
-  EXPECT_EQ(x_computed, x_expected);
-}
-
-TEST(CudaSparseMatrix, LeftMultiplyAndAccumulate) {
-  // A:
-  // [ 1 2 0 0
-  //   0 3 4 0]
-  // b: [1 2]'
-  // A'* b = [1 8 8 0]'
-  TripletSparseMatrix A(2, 4, {0, 0, 1, 1}, {0, 1, 1, 2}, {1, 2, 3, 4});
-  Vector b(2);
-  b << 1, 2;
-  Vector x_expected(4);
-  x_expected << 1, 8, 8, 0;
-
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  auto A_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A);
-  CudaSparseMatrix A_gpu(&context, *A_crs);
-  CudaVector b_gpu(&context, A.num_rows());
-  CudaVector x_gpu(&context, A.num_cols());
-  b_gpu.CopyFromCpu(b);
-  x_gpu.SetZero();
-
-  A_gpu.LeftMultiplyAndAccumulate(b_gpu, &x_gpu);
-
-  Vector x_computed;
-  x_gpu.CopyTo(&x_computed);
-
-  EXPECT_EQ(x_computed, x_expected);
-}
-
-// If there are numerical errors due to synchronization issues, they will show
-// up when testing with large matrices, since each operation will take
-// significant time, thus hopefully revealing any potential synchronization
-// issues.
-TEST(CudaSparseMatrix, LargeMultiplyAndAccumulate) {
-  // Create a large NxN matrix A that has the following structure:
-  // In row i, only columns i and i+1 are non-zero.
-  // A_{i, i} = A_{i, i+1} = 1.
-  // There will be 2 * N - 1 non-zero elements in A.
-  // X = [1:N]
-  // Right multiply test:
-  // b = A * X
-  // Left multiply test:
-  // b = A' * X
-
-  const int N = 10 * 1000 * 1000;
-  const int num_non_zeros = 2 * N - 1;
-  std::vector<int> row_indices(num_non_zeros);
-  std::vector<int> col_indices(num_non_zeros);
-  std::vector<double> values(num_non_zeros);
-
-  for (int i = 0; i < N; ++i) {
-    row_indices[2 * i] = i;
-    col_indices[2 * i] = i;
-    values[2 * i] = 1.0;
-    if (i + 1 < N) {
-      col_indices[2 * i + 1] = i + 1;
-      row_indices[2 * i + 1] = i;
-      values[2 * i + 1] = 1;
-    }
-  }
-  TripletSparseMatrix A(N, N, row_indices, col_indices, values);
-  Vector x(N);
-  for (int i = 0; i < N; ++i) {
-    x[i] = i + 1;
-  }
-
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  auto A_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A);
-  CudaSparseMatrix A_gpu(&context, *A_crs);
-  CudaVector b_gpu(&context, N);
-  CudaVector x_gpu(&context, N);
-  x_gpu.CopyFromCpu(x);
-
-  // First check RightMultiply.
-  {
-    b_gpu.SetZero();
-    A_gpu.RightMultiplyAndAccumulate(x_gpu, &b_gpu);
-    Vector b_computed;
-    b_gpu.CopyTo(&b_computed);
-    for (int i = 0; i < N; ++i) {
-      if (i + 1 < N) {
-        EXPECT_EQ(b_computed[i], 2 * (i + 1) + 1);
-      } else {
-        EXPECT_EQ(b_computed[i], i + 1);
-      }
-    }
-  }
-
-  // Next check LeftMultiply.
-  {
-    b_gpu.SetZero();
-    A_gpu.LeftMultiplyAndAccumulate(x_gpu, &b_gpu);
-    Vector b_computed;
-    b_gpu.CopyTo(&b_computed);
-    for (int i = 0; i < N; ++i) {
-      if (i > 0) {
-        EXPECT_EQ(b_computed[i], 2 * (i + 1) - 1);
-      } else {
-        EXPECT_EQ(b_computed[i], i + 1);
-      }
-    }
-  }
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/cuda_streamed_buffer.h b/third_party/ceres/internal/ceres/cuda_streamed_buffer.h
deleted file mode 100644
index 37bcf4a..0000000
--- a/third_party/ceres/internal/ceres/cuda_streamed_buffer.h
+++ /dev/null
@@ -1,338 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_CUDA_STREAMED_BUFFER_H_
-#define CERES_INTERNAL_CUDA_STREAMED_BUFFER_H_
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include <algorithm>
-
-#include "ceres/cuda_buffer.h"
-
-namespace ceres::internal {
-
-// Most contemporary CUDA devices are capable of simultaneous code execution and
-// host-to-device transfer. This class copies batches of data to GPU memory and
-// executes processing of copied data in parallel (asynchronously).
-// Data is copied to a fixed-size buffer on GPU (containing at most
-// max_buffer_size values), and this memory is re-used when the previous
-// batch of values is processed by user-provided callback
-// Host-to-device copy uses a temporary buffer if required. Each batch of values
-// has size of kValuesPerBatch, except the last one.
-template <typename T>
-class CERES_NO_EXPORT CudaStreamedBuffer {
- public:
-  // If hardware supports only one host-to-device copy or one host-to-device
-  // copy is able to reach peak bandwidth, two streams are sufficient to reach
-  // maximum efficiency:
-  //  - If transferring batch of values takes more time, than processing it on
-  //  gpu, then at every moment of time one of the streams will be transferring
-  //  data and other stream will be either processing data or idle; the whole
-  //  process will be bounded by host-to-device copy.
-  //  - If transferring batch of values takes less time, than processing it on
-  //  gpu, then at every moment of time one of the streams will be processing
-  //  data and other stream will be either performing computations or
-  //  transferring data, and the whole process will be bounded by computations.
-  static constexpr int kNumBatches = 2;
-  // max_buffer_size is the maximal size (in elements of type T) of array
-  // to be pre-allocated in gpu memory. The size of array determines size of
-  // batch of values for simultaneous copying and processing. It should be large
-  // enough to allow highly-parallel execution of user kernels; making it too
-  // large increases latency.
-  CudaStreamedBuffer(ContextImpl* context, const int max_buffer_size)
-      : kValuesPerBatch(max_buffer_size / kNumBatches),
-        context_(context),
-        values_gpu_(context, kValuesPerBatch * kNumBatches) {
-    static_assert(ContextImpl::kNumCudaStreams >= kNumBatches);
-    CHECK_GE(max_buffer_size, kNumBatches);
-    // Pre-allocate a buffer of page-locked memory for transfers from a regular
-    // cpu memory. Because we will be only writing into that buffer from cpu,
-    // memory is allocated with cudaHostAllocWriteCombined flag.
-    CHECK_EQ(cudaSuccess,
-             cudaHostAlloc(&values_cpu_pinned_,
-                           sizeof(T) * kValuesPerBatch * kNumBatches,
-                           cudaHostAllocWriteCombined));
-    for (auto& e : copy_finished_) {
-      CHECK_EQ(cudaSuccess,
-               cudaEventCreateWithFlags(&e, cudaEventDisableTiming));
-    }
-  }
-
-  CudaStreamedBuffer(const CudaStreamedBuffer&) = delete;
-
-  ~CudaStreamedBuffer() {
-    CHECK_EQ(cudaSuccess, cudaFreeHost(values_cpu_pinned_));
-    for (auto& e : copy_finished_) {
-      CHECK_EQ(cudaSuccess, cudaEventDestroy(e));
-    }
-  }
-
-  // Transfer num_values at host-memory pointer from, calling
-  // callback(device_pointer, size_of_batch, offset_of_batch, stream_to_use)
-  // after scheduling transfer of each batch of data. User-provided callback
-  // should perform processing of data at device_pointer only in
-  // stream_to_use stream (device_pointer will be re-used in the next
-  // callback invocation with the same stream).
-  //
-  // Two diagrams below describe operation in two possible scenarios, depending
-  // on input data being stored in page-locked memory. In this example we will
-  // have max_buffer_size = 2 * K, num_values = N * K and callback
-  // scheduling a single asynchronous launch of
-  // Kernel<<..., stream_to_use>>(device_pointer,
-  //                              size_of_batch,
-  //                              offset_of_batch)
-  //
-  // a. Copying from page-locked memory
-  // In this case no copy on the host-side is necessary, and this method just
-  // schedules a bunch of interleaved memory copies and callback invocations:
-  //
-  //  cudaStreamSynchronize(context->DefaultStream());
-  //  - Iteration #0:
-  //    - cudaMemcpyAsync(values_gpu_, from, K * sizeof(T), H->D, stream_0)
-  //    - callback(values_gpu_, K, 0, stream_0)
-  //  - Iteration #1:
-  //    - cudaMemcpyAsync(values_gpu_ + K, from + K, K * sizeof(T), H->D,
-  //    stream_1)
-  //    - callback(values_gpu_ + K, K, K, stream_1)
-  //  - Iteration #2:
-  //    - cudaMemcpyAsync(values_gpu_, from + 2 * K, K * sizeof(T), H->D,
-  //    stream_0)
-  //    - callback(values_gpu_, K, 2 * K, stream_0)
-  //  - Iteration #3:
-  //     - cudaMemcpyAsync(values_gpu_ + K, from + 3 * K, K * sizeof(T), H->D,
-  //     stream_1)
-  //     - callback(values_gpu_ + K, K, 3 * K, stream_1)
-  //  ...
-  //  - Iteration #i:
-  //     - cudaMemcpyAsync(values_gpu_ + (i % 2) * K, from + i * K, K *
-  //     sizeof(T), H->D, stream_(i % 2))
-  //     - callback(values_gpu_ + (i % 2) * K, K, i * K, stream_(i % 2)
-  //  ...
-  //  cudaStreamSynchronize(stream_0)
-  //  cudaStreamSynchronize(stream_1)
-  //
-  //  This sequence of calls results in following activity on gpu (assuming that
-  //  kernel invoked by callback takes less time than host-to-device copy):
-  //  +-------------------+-------------------+
-  //  | Stream #0         | Stream #1         |
-  //  +-------------------+-------------------+
-  //  | Copy host->device |                   |
-  //  |                   |                   |
-  //  |                   |                   |
-  //  +-------------------+-------------------+
-  //  | Kernel            | Copy host->device |
-  //  +-------------------+                   |
-  //  |                   |                   |
-  //  +-------------------+-------------------+
-  //  | Copy host->device | Kernel            |
-  //  |                   +-------------------+
-  //  |                   |                   |
-  //  +-------------------+-------------------+
-  //  | Kernel            | Copy host->device |
-  //  |                  ...                  |
-  //  +---------------------------------------+
-  //
-  // b. Copying from regular memory
-  // In this case a copy from regular memory to page-locked memory is required
-  // in order to get asynchrnonous operation. Because pinned memory on host-side
-  // is reused, additional synchronization is required. On each iteration method
-  // the following actions are performed:
-  //  - Wait till previous copy operation in stream is completed
-  //  - Copy batch of values from input array into pinned memory
-  //  - Asynchronously launch host-to-device copy
-  //  - Setup event for synchronization on copy completion
-  //  - Invoke callback (that launches kernel asynchronously)
-  //
-  //  Invocations are performed with the following arguments
-  //  cudaStreamSynchronize(context->DefaultStream());
-  //  - Iteration #0:
-  //    - cudaEventSynchronize(copy_finished_0)
-  //    - std::copy_n(from, K, values_cpu_pinned_)
-  //    - cudaMemcpyAsync(values_gpu_, values_cpu_pinned_, K * sizeof(T), H->D,
-  //    stream_0)
-  //    - cudaEventRecord(copy_finished_0, stream_0)
-  //    - callback(values_gpu_, K, 0, stream_0)
-  //  - Iteration #1:
-  //    - cudaEventSynchronize(copy_finished_1)
-  //    - std::copy_n(from + K, K, values_cpu_pinned_ + K)
-  //    - cudaMemcpyAsync(values_gpu_ + K, values_cpu_pinned_ + K, K *
-  //    sizeof(T), H->D, stream_1)
-  //    - cudaEventRecord(copy_finished_1, stream_1)
-  //    - callback(values_gpu_ + K, K, K, stream_1)
-  //  - Iteration #2:
-  //    - cudaEventSynchronize(copy_finished_0)
-  //    - std::copy_n(from + 2 * K, K, values_cpu_pinned_)
-  //    - cudaMemcpyAsync(values_gpu_, values_cpu_pinned_, K * sizeof(T), H->D,
-  //    stream_0)
-  //    - cudaEventRecord(copy_finished_0, stream_0)
-  //    - callback(values_gpu_, K, 2 * K, stream_0)
-  //  - Iteration #3:
-  //    - cudaEventSynchronize(copy_finished_1)
-  //    - std::copy_n(from + 3 * K, K, values_cpu_pinned_ + K)
-  //    - cudaMemcpyAsync(values_gpu_ + K, values_cpu_pinned_ + K, K *
-  //    sizeof(T), H->D, stream_1)
-  //    - cudaEventRecord(copy_finished_1, stream_1)
-  //    - callback(values_gpu_ + K, K, 3 * K, stream_1)
-  //  ...
-  //  - Iteration #i:
-  //    - cudaEventSynchronize(copy_finished_(i % 2))
-  //    - std::copy_n(from + i * K, K, values_cpu_pinned_ + (i % 2) * K)
-  //    - cudaMemcpyAsync(values_gpu_ + (i % 2) * K, values_cpu_pinned_ + (i %
-  //    2) * K, K * sizeof(T), H->D, stream_(i % 2))
-  //    - cudaEventRecord(copy_finished_(i % 2), stream_(i % 2))
-  //    - callback(values_gpu_ + (i % 2) * K, K, i * K, stream_(i % 2))
-  //  ...
-  //  cudaStreamSynchronize(stream_0)
-  //  cudaStreamSynchronize(stream_1)
-  //
-  //  This sequence of calls results in following activity on cpu and gpu
-  //  (assuming that kernel invoked by callback takes less time than
-  //  host-to-device copy and copy in cpu memory, and copy in cpu memory is
-  //  faster than host-to-device copy):
-  //  +----------------------------+-------------------+-------------------+
-  //  | Stream #0                  | Stream #0         | Stream #1         |
-  //  +----------------------------+-------------------+-------------------+
-  //  | Copy to pinned memory      |                   |                   |
-  //  |                            |                   |                   |
-  //  +----------------------------+-------------------|                   |
-  //  | Copy to pinned memory      | Copy host->device |                   |
-  //  |                            |                   |                   |
-  //  +----------------------------+                   |                   |
-  //  | Waiting previous h->d copy |                   |                   |
-  //  +----------------------------+-------------------+-------------------+
-  //  | Copy to pinned memory      | Kernel            | Copy host->device |
-  //  |                            +-------------------+                   |
-  //  +----------------------------+                   |                   |
-  //  | Waiting previous h->d copy |                   |                   |
-  //  +----------------------------+-------------------+-------------------+
-  //  | Copy to pinned memory      | Copy host->device | Kernel            |
-  //  |                            |                   +-------------------+
-  //  |                           ...                 ...                  |
-  //  +----------------------------+---------------------------------------+
-  //
-  template <typename Fun>
-  void CopyToGpu(const T* from, const int num_values, Fun&& callback) {
-    // This synchronization is not required in some cases, but we perform it in
-    // order to avoid situation when user callback depends on data that is
-    // still to be computed in default stream
-    CHECK_EQ(cudaSuccess, cudaStreamSynchronize(context_->DefaultStream()));
-
-    // If pointer to input data does not correspond to page-locked memory,
-    // host-to-device memory copy might be executed synchrnonously (with a copy
-    // to pinned memory happening inside the driver). In that case we perform
-    // copy to a pre-allocated array of page-locked memory.
-    const bool copy_to_pinned_memory = MemoryTypeResultsInSynchronousCopy(from);
-    T* batch_values_gpu[kNumBatches];
-    T* batch_values_cpu[kNumBatches];
-    auto streams = context_->streams_;
-    for (int i = 0; i < kNumBatches; ++i) {
-      batch_values_gpu[i] = values_gpu_.data() + kValuesPerBatch * i;
-      batch_values_cpu[i] = values_cpu_pinned_ + kValuesPerBatch * i;
-    }
-    int batch_id = 0;
-    for (int offset = 0; offset < num_values; offset += kValuesPerBatch) {
-      const int num_values_batch =
-          std::min(num_values - offset, kValuesPerBatch);
-      const T* batch_from = from + offset;
-      T* batch_to = batch_values_gpu[batch_id];
-      auto stream = streams[batch_id];
-      auto copy_finished = copy_finished_[batch_id];
-
-      if (copy_to_pinned_memory) {
-        // Copying values to a temporary buffer should be started only after the
-        // previous copy from temporary buffer to device is completed.
-        CHECK_EQ(cudaSuccess, cudaEventSynchronize(copy_finished));
-        std::copy_n(batch_from, num_values_batch, batch_values_cpu[batch_id]);
-        batch_from = batch_values_cpu[batch_id];
-      }
-      CHECK_EQ(cudaSuccess,
-               cudaMemcpyAsync(batch_to,
-                               batch_from,
-                               sizeof(T) * num_values_batch,
-                               cudaMemcpyHostToDevice,
-                               stream));
-      if (copy_to_pinned_memory) {
-        // Next copy to a temporary buffer can start straight after asynchronous
-        // copy is completed (and might be started before kernels asynchronously
-        // executed in stream by user-supplied callback are completed).
-        // No explicit synchronization is required when copying data from
-        // page-locked memory, because memory copy and user kernel execution
-        // with corresponding part of values_gpu_ array is serialized using
-        // stream
-        CHECK_EQ(cudaSuccess, cudaEventRecord(copy_finished, stream));
-      }
-      callback(batch_to, num_values_batch, offset, stream);
-      batch_id = (batch_id + 1) % kNumBatches;
-    }
-    // Explicitly synchronize on all CUDA streams that were utilized.
-    for (int i = 0; i < kNumBatches; ++i) {
-      CHECK_EQ(cudaSuccess, cudaStreamSynchronize(streams[i]));
-    }
-  }
-
- private:
-  // It is necessary to have all host-to-device copies to be completely
-  // asynchronous. This requires source memory to be allocated in page-locked
-  // memory.
-  static bool MemoryTypeResultsInSynchronousCopy(const void* ptr) {
-    cudaPointerAttributes attributes;
-    auto status = cudaPointerGetAttributes(&attributes, ptr);
-#if CUDART_VERSION < 11000
-    // In CUDA versions prior 11 call to cudaPointerGetAttributes with host
-    // pointer will return  cudaErrorInvalidValue
-    if (status == cudaErrorInvalidValue) {
-      return true;
-    }
-#endif
-    CHECK_EQ(status, cudaSuccess);
-    // This class only supports cpu memory as a source
-    CHECK_NE(attributes.type, cudaMemoryTypeDevice);
-    // If host memory was allocated (or registered) with CUDA API, or is a
-    // managed memory, then call to cudaMemcpyAsync will be asynchrnous. In case
-    // of managed memory it might be slightly better to perform a single call of
-    // user-provided call-back (and hope that page migration will provide a
-    // similar throughput with zero efforts from our side).
-    return attributes.type == cudaMemoryTypeUnregistered;
-  }
-
-  const int kValuesPerBatch;
-  ContextImpl* context_ = nullptr;
-  CudaBuffer<T> values_gpu_;
-  T* values_cpu_pinned_ = nullptr;
-  cudaEvent_t copy_finished_[kNumBatches] = {nullptr};
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-#endif  // CERES_INTERNAL_CUDA_STREAMED_BUFFER_H_
diff --git a/third_party/ceres/internal/ceres/cuda_streamed_buffer_test.cc b/third_party/ceres/internal/ceres/cuda_streamed_buffer_test.cc
deleted file mode 100644
index 4837005..0000000
--- a/third_party/ceres/internal/ceres/cuda_streamed_buffer_test.cc
+++ /dev/null
@@ -1,169 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_CUDA
-
-#include <glog/logging.h>
-#include <gtest/gtest.h>
-
-#include <numeric>
-
-#include "ceres/cuda_streamed_buffer.h"
-
-namespace ceres::internal {
-
-TEST(CudaStreamedBufferTest, IntegerCopy) {
-  // Offsets and sizes of batches supplied to callback
-  std::vector<std::pair<int, int>> batches;
-  const int kMaxTemporaryArraySize = 16;
-  const int kInputSize = kMaxTemporaryArraySize * 7 + 3;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-
-  std::vector<int> inputs(kInputSize);
-  std::vector<int> outputs(kInputSize, -1);
-  std::iota(inputs.begin(), inputs.end(), 0);
-
-  CudaStreamedBuffer<int> streamed_buffer(&context, kMaxTemporaryArraySize);
-  streamed_buffer.CopyToGpu(inputs.data(),
-                            kInputSize,
-                            [&outputs, &batches](const int* device_pointer,
-                                                 int size,
-                                                 int offset,
-                                                 cudaStream_t stream) {
-                              batches.emplace_back(offset, size);
-                              CHECK_EQ(cudaSuccess,
-                                       cudaMemcpyAsync(outputs.data() + offset,
-                                                       device_pointer,
-                                                       sizeof(int) * size,
-                                                       cudaMemcpyDeviceToHost,
-                                                       stream));
-                            });
-  // All operations in all streams should be completed when CopyToGpu returns
-  // control to the callee
-  for (int i = 0; i < ContextImpl::kNumCudaStreams; ++i) {
-    CHECK_EQ(cudaSuccess, cudaStreamQuery(context.streams_[i]));
-  }
-
-  // Check if every element was visited
-  for (int i = 0; i < kInputSize; ++i) {
-    CHECK_EQ(outputs[i], i);
-  }
-
-  // Check if there is no overlap between batches
-  std::sort(batches.begin(), batches.end());
-  const int num_batches = batches.size();
-  for (int i = 0; i < num_batches; ++i) {
-    const auto [begin, size] = batches[i];
-    const int end = begin + size;
-    CHECK_GE(begin, 0);
-    CHECK_LT(begin, kInputSize);
-
-    CHECK_GT(size, 0);
-    CHECK_LE(end, kInputSize);
-
-    if (i + 1 == num_batches) continue;
-    CHECK_EQ(end, batches[i + 1].first);
-  }
-}
-
-TEST(CudaStreamedBufferTest, IntegerNoCopy) {
-  // Offsets and sizes of batches supplied to callback
-  std::vector<std::pair<int, int>> batches;
-  const int kMaxTemporaryArraySize = 16;
-  const int kInputSize = kMaxTemporaryArraySize * 7 + 3;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-
-  int* inputs;
-  int* outputs;
-  CHECK_EQ(cudaSuccess,
-           cudaHostAlloc(
-               &inputs, sizeof(int) * kInputSize, cudaHostAllocWriteCombined));
-  CHECK_EQ(
-      cudaSuccess,
-      cudaHostAlloc(&outputs, sizeof(int) * kInputSize, cudaHostAllocDefault));
-
-  std::fill(outputs, outputs + kInputSize, -1);
-  std::iota(inputs, inputs + kInputSize, 0);
-
-  CudaStreamedBuffer<int> streamed_buffer(&context, kMaxTemporaryArraySize);
-  streamed_buffer.CopyToGpu(inputs,
-                            kInputSize,
-                            [outputs, &batches](const int* device_pointer,
-                                                int size,
-                                                int offset,
-                                                cudaStream_t stream) {
-                              batches.emplace_back(offset, size);
-                              CHECK_EQ(cudaSuccess,
-                                       cudaMemcpyAsync(outputs + offset,
-                                                       device_pointer,
-                                                       sizeof(int) * size,
-                                                       cudaMemcpyDeviceToHost,
-                                                       stream));
-                            });
-  // All operations in all streams should be completed when CopyToGpu returns
-  // control to the callee
-  for (int i = 0; i < ContextImpl::kNumCudaStreams; ++i) {
-    CHECK_EQ(cudaSuccess, cudaStreamQuery(context.streams_[i]));
-  }
-
-  // Check if every element was visited
-  for (int i = 0; i < kInputSize; ++i) {
-    CHECK_EQ(outputs[i], i);
-  }
-
-  // Check if there is no overlap between batches
-  std::sort(batches.begin(), batches.end());
-  const int num_batches = batches.size();
-  for (int i = 0; i < num_batches; ++i) {
-    const auto [begin, size] = batches[i];
-    const int end = begin + size;
-    CHECK_GE(begin, 0);
-    CHECK_LT(begin, kInputSize);
-
-    CHECK_GT(size, 0);
-    CHECK_LE(end, kInputSize);
-
-    if (i + 1 == num_batches) continue;
-    CHECK_EQ(end, batches[i + 1].first);
-  }
-
-  CHECK_EQ(cudaSuccess, cudaFreeHost(inputs));
-  CHECK_EQ(cudaSuccess, cudaFreeHost(outputs));
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_vector.cc b/third_party/ceres/internal/ceres/cuda_vector.cc
deleted file mode 100644
index 08217b2..0000000
--- a/third_party/ceres/internal/ceres/cuda_vector.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-//
-// A simple CUDA vector class.
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <math.h>
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "ceres/cuda_buffer.h"
-#include "ceres/cuda_kernels_vector_ops.h"
-#include "ceres/cuda_vector.h"
-#include "cublas_v2.h"
-
-namespace ceres::internal {
-
-CudaVector::CudaVector(ContextImpl* context, int size)
-    : context_(context), data_(context, size) {
-  DCHECK_NE(context, nullptr);
-  DCHECK(context->IsCudaInitialized());
-  Resize(size);
-}
-
-CudaVector::CudaVector(CudaVector&& other)
-    : num_rows_(other.num_rows_),
-      context_(other.context_),
-      data_(std::move(other.data_)),
-      descr_(other.descr_) {
-  other.num_rows_ = 0;
-  other.descr_ = nullptr;
-}
-
-CudaVector& CudaVector::operator=(const CudaVector& other) {
-  if (this != &other) {
-    Resize(other.num_rows());
-    data_.CopyFromGPUArray(other.data_.data(), num_rows_);
-  }
-  return *this;
-}
-
-void CudaVector::DestroyDescriptor() {
-  if (descr_ != nullptr) {
-    CHECK_EQ(cusparseDestroyDnVec(descr_), CUSPARSE_STATUS_SUCCESS);
-    descr_ = nullptr;
-  }
-}
-
-CudaVector::~CudaVector() { DestroyDescriptor(); }
-
-void CudaVector::Resize(int size) {
-  data_.Reserve(size);
-  num_rows_ = size;
-  DestroyDescriptor();
-  CHECK_EQ(cusparseCreateDnVec(&descr_, num_rows_, data_.data(), CUDA_R_64F),
-           CUSPARSE_STATUS_SUCCESS);
-}
-
-double CudaVector::Dot(const CudaVector& x) const {
-  double result = 0;
-  CHECK_EQ(cublasDdot(context_->cublas_handle_,
-                      num_rows_,
-                      data_.data(),
-                      1,
-                      x.data(),
-                      1,
-                      &result),
-           CUBLAS_STATUS_SUCCESS)
-      << "CuBLAS cublasDdot failed.";
-  return result;
-}
-
-double CudaVector::Norm() const {
-  double result = 0;
-  CHECK_EQ(cublasDnrm2(
-               context_->cublas_handle_, num_rows_, data_.data(), 1, &result),
-           CUBLAS_STATUS_SUCCESS)
-      << "CuBLAS cublasDnrm2 failed.";
-  return result;
-}
-
-void CudaVector::CopyFromCpu(const double* x) {
-  data_.CopyFromCpu(x, num_rows_);
-}
-
-void CudaVector::CopyFromCpu(const Vector& x) {
-  if (x.rows() != num_rows_) {
-    Resize(x.rows());
-  }
-  CopyFromCpu(x.data());
-}
-
-void CudaVector::CopyTo(Vector* x) const {
-  CHECK(x != nullptr);
-  x->resize(num_rows_);
-  data_.CopyToCpu(x->data(), num_rows_);
-}
-
-void CudaVector::CopyTo(double* x) const {
-  CHECK(x != nullptr);
-  data_.CopyToCpu(x, num_rows_);
-}
-
-void CudaVector::SetZero() {
-  // Allow empty vector to be zeroed
-  if (num_rows_ == 0) return;
-  CHECK(data_.data() != nullptr);
-  CudaSetZeroFP64(data_.data(), num_rows_, context_->DefaultStream());
-}
-
-void CudaVector::Axpby(double a, const CudaVector& x, double b) {
-  if (&x == this) {
-    Scale(a + b);
-    return;
-  }
-  CHECK_EQ(num_rows_, x.num_rows_);
-  if (b != 1.0) {
-    // First scale y by b.
-    CHECK_EQ(
-        cublasDscal(context_->cublas_handle_, num_rows_, &b, data_.data(), 1),
-        CUBLAS_STATUS_SUCCESS)
-        << "CuBLAS cublasDscal failed.";
-  }
-  // Then add a * x to y.
-  CHECK_EQ(cublasDaxpy(context_->cublas_handle_,
-                       num_rows_,
-                       &a,
-                       x.data(),
-                       1,
-                       data_.data(),
-                       1),
-           CUBLAS_STATUS_SUCCESS)
-      << "CuBLAS cublasDaxpy failed.";
-}
-
-void CudaVector::DtDxpy(const CudaVector& D, const CudaVector& x) {
-  CudaDtDxpy(
-      data_.data(), D.data(), x.data(), num_rows_, context_->DefaultStream());
-}
-
-void CudaVector::Scale(double s) {
-  CHECK_EQ(
-      cublasDscal(context_->cublas_handle_, num_rows_, &s, data_.data(), 1),
-      CUBLAS_STATUS_SUCCESS)
-      << "CuBLAS cublasDscal failed.";
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/cuda_vector.h b/third_party/ceres/internal/ceres/cuda_vector.h
deleted file mode 100644
index 8db5649..0000000
--- a/third_party/ceres/internal/ceres/cuda_vector.h
+++ /dev/null
@@ -1,193 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-//
-// A simple CUDA vector class.
-
-#ifndef CERES_INTERNAL_CUDA_VECTOR_H_
-#define CERES_INTERNAL_CUDA_VECTOR_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <math.h>
-
-#include <memory>
-#include <string>
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-#ifndef CERES_NO_CUDA
-
-#include "ceres/cuda_buffer.h"
-#include "ceres/cuda_kernels_vector_ops.h"
-#include "ceres/internal/eigen.h"
-#include "cublas_v2.h"
-#include "cusparse.h"
-
-namespace ceres::internal {
-
-// An Nx1 vector, denoted y hosted on the GPU, with CUDA-accelerated operations.
-class CERES_NO_EXPORT CudaVector {
- public:
-  // Create a pre-allocated vector of size N and return a pointer to it. The
-  // caller must ensure that InitCuda() has already been successfully called on
-  // context before calling this method.
-  CudaVector(ContextImpl* context, int size);
-
-  CudaVector(CudaVector&& other);
-
-  ~CudaVector();
-
-  void Resize(int size);
-
-  // Perform a deep copy of the vector.
-  CudaVector& operator=(const CudaVector&);
-
-  // Return the inner product x' * y.
-  double Dot(const CudaVector& x) const;
-
-  // Return the L2 norm of the vector (||y||_2).
-  double Norm() const;
-
-  // Set all elements to zero.
-  void SetZero();
-
-  // Copy from Eigen vector.
-  void CopyFromCpu(const Vector& x);
-
-  // Copy from CPU memory array.
-  void CopyFromCpu(const double* x);
-
-  // Copy to Eigen vector.
-  void CopyTo(Vector* x) const;
-
-  // Copy to CPU memory array. It is the caller's responsibility to ensure
-  // that the array is large enough.
-  void CopyTo(double* x) const;
-
-  // y = a * x + b * y.
-  void Axpby(double a, const CudaVector& x, double b);
-
-  // y = diag(d)' * diag(d) * x + y.
-  void DtDxpy(const CudaVector& D, const CudaVector& x);
-
-  // y = s * y.
-  void Scale(double s);
-
-  int num_rows() const { return num_rows_; }
-  int num_cols() const { return 1; }
-
-  const double* data() const { return data_.data(); }
-  double* mutable_data() { return data_.data(); }
-
-  const cusparseDnVecDescr_t& descr() const { return descr_; }
-
- private:
-  CudaVector(const CudaVector&) = delete;
-  void DestroyDescriptor();
-
-  int num_rows_ = 0;
-  ContextImpl* context_ = nullptr;
-  CudaBuffer<double> data_;
-  // CuSparse object that describes this dense vector.
-  cusparseDnVecDescr_t descr_ = nullptr;
-};
-
-// Blas1 operations on Cuda vectors. These functions are needed as an
-// abstraction layer so that we can use different versions of a vector style
-// object in the conjugate gradients linear solver.
-// Context and num_threads arguments are not used by CUDA implementation,
-// context embedded into CudaVector is used instead.
-inline double Norm(const CudaVector& x,
-                   ContextImpl* context = nullptr,
-                   int num_threads = 1) {
-  (void)context;
-  (void)num_threads;
-  return x.Norm();
-}
-inline void SetZero(CudaVector& x,
-                    ContextImpl* context = nullptr,
-                    int num_threads = 1) {
-  (void)context;
-  (void)num_threads;
-  x.SetZero();
-}
-inline void Axpby(double a,
-                  const CudaVector& x,
-                  double b,
-                  const CudaVector& y,
-                  CudaVector& z,
-                  ContextImpl* context = nullptr,
-                  int num_threads = 1) {
-  (void)context;
-  (void)num_threads;
-  if (&x == &y && &y == &z) {
-    // z = (a + b) * z;
-    z.Scale(a + b);
-  } else if (&x == &z) {
-    // x is aliased to z.
-    // z = x
-    //   = b * y + a * x;
-    z.Axpby(b, y, a);
-  } else if (&y == &z) {
-    // y is aliased to z.
-    // z = y = a * x + b * y;
-    z.Axpby(a, x, b);
-  } else {
-    // General case: all inputs and outputs are distinct.
-    z = y;
-    z.Axpby(a, x, b);
-  }
-}
-inline double Dot(const CudaVector& x,
-                  const CudaVector& y,
-                  ContextImpl* context = nullptr,
-                  int num_threads = 1) {
-  (void)context;
-  (void)num_threads;
-  return x.Dot(y);
-}
-inline void Copy(const CudaVector& from,
-                 CudaVector& to,
-                 ContextImpl* context = nullptr,
-                 int num_threads = 1) {
-  (void)context;
-  (void)num_threads;
-  to = from;
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
-#endif  // CERES_INTERNAL_CUDA_SPARSE_LINEAR_OPERATOR_H_
diff --git a/third_party/ceres/internal/ceres/cuda_vector_test.cc b/third_party/ceres/internal/ceres/cuda_vector_test.cc
deleted file mode 100644
index 8dcb4b7..0000000
--- a/third_party/ceres/internal/ceres/cuda_vector_test.cc
+++ /dev/null
@@ -1,423 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include "ceres/cuda_vector.h"
-
-#include <string>
-
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-#ifndef CERES_NO_CUDA
-
-TEST(CudaVector, Creation) {
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x(&context, 1000);
-  EXPECT_EQ(x.num_rows(), 1000);
-  EXPECT_NE(x.data(), nullptr);
-}
-
-TEST(CudaVector, CopyVector) {
-  Vector x(3);
-  x << 1, 2, 3;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector y(&context, 10);
-  y.CopyFromCpu(x);
-  EXPECT_EQ(y.num_rows(), 3);
-
-  Vector z(3);
-  z << 0, 0, 0;
-  y.CopyTo(&z);
-  EXPECT_EQ(x, z);
-}
-
-TEST(CudaVector, Move) {
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector y(&context, 10);
-  const auto y_data = y.data();
-  const auto y_descr = y.descr();
-  EXPECT_EQ(y.num_rows(), 10);
-  CudaVector z(std::move(y));
-  EXPECT_EQ(y.data(), nullptr);
-  EXPECT_EQ(y.descr(), nullptr);
-  EXPECT_EQ(y.num_rows(), 0);
-
-  EXPECT_EQ(z.data(), y_data);
-  EXPECT_EQ(z.descr(), y_descr);
-}
-
-TEST(CudaVector, DeepCopy) {
-  Vector x(3);
-  x << 1, 2, 3;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 3);
-  x_gpu.CopyFromCpu(x);
-
-  CudaVector y_gpu(&context, 3);
-  y_gpu.SetZero();
-  EXPECT_EQ(y_gpu.Norm(), 0.0);
-
-  y_gpu = x_gpu;
-  Vector y(3);
-  y << 0, 0, 0;
-  y_gpu.CopyTo(&y);
-  EXPECT_EQ(x, y);
-}
-
-TEST(CudaVector, Dot) {
-  Vector x(3);
-  Vector y(3);
-  x << 1, 2, 3;
-  y << 100, 10, 1;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 10);
-  CudaVector y_gpu(&context, 10);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  EXPECT_EQ(x_gpu.Dot(y_gpu), 123.0);
-  EXPECT_EQ(Dot(x_gpu, y_gpu), 123.0);
-}
-
-TEST(CudaVector, Norm) {
-  Vector x(3);
-  x << 1, 2, 3;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 10);
-  x_gpu.CopyFromCpu(x);
-
-  EXPECT_NEAR(x_gpu.Norm(),
-              sqrt(1.0 + 4.0 + 9.0),
-              std::numeric_limits<double>::epsilon());
-
-  EXPECT_NEAR(Norm(x_gpu),
-              sqrt(1.0 + 4.0 + 9.0),
-              std::numeric_limits<double>::epsilon());
-}
-
-TEST(CudaVector, SetZero) {
-  Vector x(4);
-  x << 1, 1, 1, 1;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 10);
-  x_gpu.CopyFromCpu(x);
-
-  EXPECT_NEAR(x_gpu.Norm(), 2.0, std::numeric_limits<double>::epsilon());
-
-  x_gpu.SetZero();
-  EXPECT_NEAR(x_gpu.Norm(), 0.0, std::numeric_limits<double>::epsilon());
-
-  x_gpu.CopyFromCpu(x);
-  EXPECT_NEAR(x_gpu.Norm(), 2.0, std::numeric_limits<double>::epsilon());
-  SetZero(x_gpu);
-  EXPECT_NEAR(x_gpu.Norm(), 0.0, std::numeric_limits<double>::epsilon());
-}
-
-TEST(CudaVector, Resize) {
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 10);
-  EXPECT_EQ(x_gpu.num_rows(), 10);
-  x_gpu.Resize(4);
-  EXPECT_EQ(x_gpu.num_rows(), 4);
-}
-
-TEST(CudaVector, Axpy) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  x_gpu.Axpby(2.0, y_gpu, 1.0);
-  Vector result;
-  Vector expected(4);
-  expected << 201, 21, 3, 1;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyBEquals1) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  x_gpu.Axpby(2.0, y_gpu, 1.0);
-  Vector result;
-  Vector expected(4);
-  expected << 201, 21, 3, 1;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyMemberFunctionBNotEqual1) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  x_gpu.Axpby(2.0, y_gpu, 3.0);
-  Vector result;
-  Vector expected(4);
-  expected << 203, 23, 5, 3;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyMemberFunctionBEqual1) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  x_gpu.Axpby(2.0, y_gpu, 1.0);
-  Vector result;
-  Vector expected(4);
-  expected << 201, 21, 3, 1;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyMemberXAliasesY) {
-  Vector x(4);
-  x << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.SetZero();
-
-  x_gpu.Axpby(2.0, x_gpu, 1.0);
-  Vector result;
-  Vector expected(4);
-  expected << 300, 30, 3, 0;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyNonMemberMethodNoAliases) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  CudaVector z_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-  z_gpu.Resize(4);
-  z_gpu.SetZero();
-
-  Axpby(2.0, x_gpu, 3.0, y_gpu, z_gpu);
-  Vector result;
-  Vector expected(4);
-  expected << 302, 32, 5, 2;
-  z_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyNonMemberMethodXAliasesY) {
-  Vector x(4);
-  x << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector z_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  z_gpu.SetZero();
-
-  Axpby(2.0, x_gpu, 3.0, x_gpu, z_gpu);
-  Vector result;
-  Vector expected(4);
-  expected << 500, 50, 5, 0;
-  z_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyNonMemberMethodXAliasesZ) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 10);
-  CudaVector y_gpu(&context, 10);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  Axpby(2.0, x_gpu, 3.0, y_gpu, x_gpu);
-  Vector result;
-  Vector expected(4);
-  expected << 302, 32, 5, 2;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyNonMemberMethodYAliasesZ) {
-  Vector x(4);
-  Vector y(4);
-  x << 1, 1, 1, 1;
-  y << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-
-  Axpby(2.0, x_gpu, 3.0, y_gpu, y_gpu);
-  Vector result;
-  Vector expected(4);
-  expected << 302, 32, 5, 2;
-  y_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, AxpbyNonMemberMethodXAliasesYAliasesZ) {
-  Vector x(4);
-  x << 100, 10, 1, 0;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 10);
-  x_gpu.CopyFromCpu(x);
-
-  Axpby(2.0, x_gpu, 3.0, x_gpu, x_gpu);
-  Vector result;
-  Vector expected(4);
-  expected << 500, 50, 5, 0;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, DtDxpy) {
-  Vector x(4);
-  Vector y(4);
-  Vector D(4);
-  x << 1, 2, 3, 4;
-  y << 100, 10, 1, 0;
-  D << 4, 3, 2, 1;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  CudaVector y_gpu(&context, 4);
-  CudaVector D_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-  y_gpu.CopyFromCpu(y);
-  D_gpu.CopyFromCpu(D);
-
-  y_gpu.DtDxpy(D_gpu, x_gpu);
-  Vector result;
-  Vector expected(4);
-  expected << 116, 28, 13, 4;
-  y_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-TEST(CudaVector, Scale) {
-  Vector x(4);
-  x << 1, 2, 3, 4;
-  ContextImpl context;
-  std::string message;
-  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
-  CudaVector x_gpu(&context, 4);
-  x_gpu.CopyFromCpu(x);
-
-  x_gpu.Scale(-3.0);
-
-  Vector result;
-  Vector expected(4);
-  expected << -3.0, -6.0, -9.0, -12.0;
-  x_gpu.CopyTo(&result);
-  EXPECT_EQ(result, expected);
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/dense_cholesky.cc b/third_party/ceres/internal/ceres/dense_cholesky.cc
deleted file mode 100644
index 5a3e7e2..0000000
--- a/third_party/ceres/internal/ceres/dense_cholesky.cc
+++ /dev/null
@@ -1,645 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dense_cholesky.h"
-
-#include <algorithm>
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/config.h"
-#include "ceres/iterative_refiner.h"
-
-#ifndef CERES_NO_CUDA
-#include "ceres/context_impl.h"
-#include "ceres/cuda_kernels_vector_ops.h"
-#include "cuda_runtime.h"
-#include "cusolverDn.h"
-#endif  // CERES_NO_CUDA
-
-#ifndef CERES_NO_LAPACK
-
-// C interface to the LAPACK Cholesky factorization and triangular solve.
-extern "C" void dpotrf_(
-    const char* uplo, const int* n, double* a, const int* lda, int* info);
-
-extern "C" void dpotrs_(const char* uplo,
-                        const int* n,
-                        const int* nrhs,
-                        const double* a,
-                        const int* lda,
-                        double* b,
-                        const int* ldb,
-                        int* info);
-
-extern "C" void spotrf_(
-    const char* uplo, const int* n, float* a, const int* lda, int* info);
-
-extern "C" void spotrs_(const char* uplo,
-                        const int* n,
-                        const int* nrhs,
-                        const float* a,
-                        const int* lda,
-                        float* b,
-                        const int* ldb,
-                        int* info);
-#endif
-
-namespace ceres::internal {
-
-DenseCholesky::~DenseCholesky() = default;
-
-std::unique_ptr<DenseCholesky> DenseCholesky::Create(
-    const LinearSolver::Options& options) {
-  std::unique_ptr<DenseCholesky> dense_cholesky;
-
-  switch (options.dense_linear_algebra_library_type) {
-    case EIGEN:
-      // Eigen mixed precision solver not yet implemented.
-      if (options.use_mixed_precision_solves) {
-        dense_cholesky = std::make_unique<FloatEigenDenseCholesky>();
-      } else {
-        dense_cholesky = std::make_unique<EigenDenseCholesky>();
-      }
-      break;
-
-    case LAPACK:
-#ifndef CERES_NO_LAPACK
-      // LAPACK mixed precision solver not yet implemented.
-      if (options.use_mixed_precision_solves) {
-        dense_cholesky = std::make_unique<FloatLAPACKDenseCholesky>();
-      } else {
-        dense_cholesky = std::make_unique<LAPACKDenseCholesky>();
-      }
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for LAPACK.";
-#endif
-
-    case CUDA:
-#ifndef CERES_NO_CUDA
-      if (options.use_mixed_precision_solves) {
-        dense_cholesky = CUDADenseCholeskyMixedPrecision::Create(options);
-      } else {
-        dense_cholesky = CUDADenseCholesky::Create(options);
-      }
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for CUDA.";
-#endif
-
-    default:
-      LOG(FATAL) << "Unknown dense linear algebra library type : "
-                 << DenseLinearAlgebraLibraryTypeToString(
-                        options.dense_linear_algebra_library_type);
-  }
-
-  if (options.max_num_refinement_iterations > 0) {
-    auto refiner = std::make_unique<DenseIterativeRefiner>(
-        options.max_num_refinement_iterations);
-    dense_cholesky = std::make_unique<RefinedDenseCholesky>(
-        std::move(dense_cholesky), std::move(refiner));
-  }
-
-  return dense_cholesky;
-}
-
-LinearSolverTerminationType DenseCholesky::FactorAndSolve(
-    int num_cols,
-    double* lhs,
-    const double* rhs,
-    double* solution,
-    std::string* message) {
-  LinearSolverTerminationType termination_type =
-      Factorize(num_cols, lhs, message);
-  if (termination_type == LinearSolverTerminationType::SUCCESS) {
-    termination_type = Solve(rhs, solution, message);
-  }
-  return termination_type;
-}
-
-LinearSolverTerminationType EigenDenseCholesky::Factorize(
-    int num_cols, double* lhs, std::string* message) {
-  Eigen::Map<Eigen::MatrixXd> m(lhs, num_cols, num_cols);
-  llt_ = std::make_unique<LLTType>(m);
-  if (llt_->info() != Eigen::Success) {
-    *message = "Eigen failure. Unable to perform dense Cholesky factorization.";
-    return LinearSolverTerminationType::FAILURE;
-  }
-
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType EigenDenseCholesky::Solve(const double* rhs,
-                                                      double* solution,
-                                                      std::string* message) {
-  if (llt_->info() != Eigen::Success) {
-    *message = "Eigen failure. Unable to perform dense Cholesky factorization.";
-    return LinearSolverTerminationType::FAILURE;
-  }
-
-  VectorRef(solution, llt_->cols()) =
-      llt_->solve(ConstVectorRef(rhs, llt_->cols()));
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType FloatEigenDenseCholesky::Factorize(
-    int num_cols, double* lhs, std::string* message) {
-  // TODO(sameeragarwal): Check if this causes a double allocation.
-  lhs_ = Eigen::Map<Eigen::MatrixXd>(lhs, num_cols, num_cols).cast<float>();
-  llt_ = std::make_unique<LLTType>(lhs_);
-  if (llt_->info() != Eigen::Success) {
-    *message = "Eigen failure. Unable to perform dense Cholesky factorization.";
-    return LinearSolverTerminationType::FAILURE;
-  }
-
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType FloatEigenDenseCholesky::Solve(
-    const double* rhs, double* solution, std::string* message) {
-  if (llt_->info() != Eigen::Success) {
-    *message = "Eigen failure. Unable to perform dense Cholesky factorization.";
-    return LinearSolverTerminationType::FAILURE;
-  }
-
-  rhs_ = ConstVectorRef(rhs, llt_->cols()).cast<float>();
-  solution_ = llt_->solve(rhs_);
-  VectorRef(solution, llt_->cols()) = solution_.cast<double>();
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-#ifndef CERES_NO_LAPACK
-LinearSolverTerminationType LAPACKDenseCholesky::Factorize(
-    int num_cols, double* lhs, std::string* message) {
-  lhs_ = lhs;
-  num_cols_ = num_cols;
-
-  const char uplo = 'L';
-  int info = 0;
-  dpotrf_(&uplo, &num_cols_, lhs_, &num_cols_, &info);
-
-  if (info < 0) {
-    termination_type_ = LinearSolverTerminationType::FATAL_ERROR;
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it. "
-               << "LAPACK::dpotrf fatal error. "
-               << "Argument: " << -info << " is invalid.";
-  } else if (info > 0) {
-    termination_type_ = LinearSolverTerminationType::FAILURE;
-    *message = StringPrintf(
-        "LAPACK::dpotrf numerical failure. "
-        "The leading minor of order %d is not positive definite.",
-        info);
-  } else {
-    termination_type_ = LinearSolverTerminationType::SUCCESS;
-    *message = "Success.";
-  }
-  return termination_type_;
-}
-
-LinearSolverTerminationType LAPACKDenseCholesky::Solve(const double* rhs,
-                                                       double* solution,
-                                                       std::string* message) {
-  const char uplo = 'L';
-  const int nrhs = 1;
-  int info = 0;
-
-  VectorRef(solution, num_cols_) = ConstVectorRef(rhs, num_cols_);
-  dpotrs_(
-      &uplo, &num_cols_, &nrhs, lhs_, &num_cols_, solution, &num_cols_, &info);
-
-  if (info < 0) {
-    termination_type_ = LinearSolverTerminationType::FATAL_ERROR;
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it. "
-               << "LAPACK::dpotrs fatal error. "
-               << "Argument: " << -info << " is invalid.";
-  }
-
-  *message = "Success";
-  termination_type_ = LinearSolverTerminationType::SUCCESS;
-
-  return termination_type_;
-}
-
-LinearSolverTerminationType FloatLAPACKDenseCholesky::Factorize(
-    int num_cols, double* lhs, std::string* message) {
-  num_cols_ = num_cols;
-  lhs_ = Eigen::Map<Eigen::MatrixXd>(lhs, num_cols, num_cols).cast<float>();
-
-  const char uplo = 'L';
-  int info = 0;
-  spotrf_(&uplo, &num_cols_, lhs_.data(), &num_cols_, &info);
-
-  if (info < 0) {
-    termination_type_ = LinearSolverTerminationType::FATAL_ERROR;
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it. "
-               << "LAPACK::spotrf fatal error. "
-               << "Argument: " << -info << " is invalid.";
-  } else if (info > 0) {
-    termination_type_ = LinearSolverTerminationType::FAILURE;
-    *message = StringPrintf(
-        "LAPACK::spotrf numerical failure. "
-        "The leading minor of order %d is not positive definite.",
-        info);
-  } else {
-    termination_type_ = LinearSolverTerminationType::SUCCESS;
-    *message = "Success.";
-  }
-  return termination_type_;
-}
-
-LinearSolverTerminationType FloatLAPACKDenseCholesky::Solve(
-    const double* rhs, double* solution, std::string* message) {
-  const char uplo = 'L';
-  const int nrhs = 1;
-  int info = 0;
-  rhs_and_solution_ = ConstVectorRef(rhs, num_cols_).cast<float>();
-  spotrs_(&uplo,
-          &num_cols_,
-          &nrhs,
-          lhs_.data(),
-          &num_cols_,
-          rhs_and_solution_.data(),
-          &num_cols_,
-          &info);
-
-  if (info < 0) {
-    termination_type_ = LinearSolverTerminationType::FATAL_ERROR;
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it. "
-               << "LAPACK::dpotrs fatal error. "
-               << "Argument: " << -info << " is invalid.";
-  }
-
-  *message = "Success";
-  termination_type_ = LinearSolverTerminationType::SUCCESS;
-  VectorRef(solution, num_cols_) =
-      rhs_and_solution_.head(num_cols_).cast<double>();
-  return termination_type_;
-}
-
-#endif  // CERES_NO_LAPACK
-
-RefinedDenseCholesky::RefinedDenseCholesky(
-    std::unique_ptr<DenseCholesky> dense_cholesky,
-    std::unique_ptr<DenseIterativeRefiner> iterative_refiner)
-    : dense_cholesky_(std::move(dense_cholesky)),
-      iterative_refiner_(std::move(iterative_refiner)) {}
-
-RefinedDenseCholesky::~RefinedDenseCholesky() = default;
-
-LinearSolverTerminationType RefinedDenseCholesky::Factorize(
-    const int num_cols, double* lhs, std::string* message) {
-  lhs_ = lhs;
-  num_cols_ = num_cols;
-  return dense_cholesky_->Factorize(num_cols, lhs, message);
-}
-
-LinearSolverTerminationType RefinedDenseCholesky::Solve(const double* rhs,
-                                                        double* solution,
-                                                        std::string* message) {
-  CHECK(lhs_ != nullptr);
-  auto termination_type = dense_cholesky_->Solve(rhs, solution, message);
-  if (termination_type != LinearSolverTerminationType::SUCCESS) {
-    return termination_type;
-  }
-
-  iterative_refiner_->Refine(
-      num_cols_, lhs_, rhs, dense_cholesky_.get(), solution);
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-#ifndef CERES_NO_CUDA
-
-CUDADenseCholesky::CUDADenseCholesky(ContextImpl* context)
-    : context_(context),
-      lhs_{context},
-      rhs_{context},
-      device_workspace_{context},
-      error_(context, 1) {}
-
-LinearSolverTerminationType CUDADenseCholesky::Factorize(int num_cols,
-                                                         double* lhs,
-                                                         std::string* message) {
-  factorize_result_ = LinearSolverTerminationType::FATAL_ERROR;
-  lhs_.Reserve(num_cols * num_cols);
-  num_cols_ = num_cols;
-  lhs_.CopyFromCpu(lhs, num_cols * num_cols);
-  int device_workspace_size = 0;
-  if (cusolverDnDpotrf_bufferSize(context_->cusolver_handle_,
-                                  CUBLAS_FILL_MODE_LOWER,
-                                  num_cols,
-                                  lhs_.data(),
-                                  num_cols,
-                                  &device_workspace_size) !=
-      CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDpotrf_bufferSize failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  device_workspace_.Reserve(device_workspace_size);
-  if (cusolverDnDpotrf(context_->cusolver_handle_,
-                       CUBLAS_FILL_MODE_LOWER,
-                       num_cols,
-                       lhs_.data(),
-                       num_cols,
-                       reinterpret_cast<double*>(device_workspace_.data()),
-                       device_workspace_.size(),
-                       error_.data()) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDpotrf failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  int error = 0;
-  error_.CopyToCpu(&error, 1);
-  if (error < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres - "
-               << "please report it. "
-               << "cuSolverDN::cusolverDnXpotrf fatal error. "
-               << "Argument: " << -error << " is invalid.";
-    // The following line is unreachable, but return failure just to be
-    // pedantic, since the compiler does not know that.
-    return LinearSolverTerminationType::FATAL_ERROR;
-  } else if (error > 0) {
-    *message = StringPrintf(
-        "cuSolverDN::cusolverDnDpotrf numerical failure. "
-        "The leading minor of order %d is not positive definite.",
-        error);
-    factorize_result_ = LinearSolverTerminationType::FAILURE;
-    return LinearSolverTerminationType::FAILURE;
-  }
-  *message = "Success";
-  factorize_result_ = LinearSolverTerminationType::SUCCESS;
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType CUDADenseCholesky::Solve(const double* rhs,
-                                                     double* solution,
-                                                     std::string* message) {
-  if (factorize_result_ != LinearSolverTerminationType::SUCCESS) {
-    *message = "Factorize did not complete successfully previously.";
-    return factorize_result_;
-  }
-  rhs_.CopyFromCpu(rhs, num_cols_);
-  if (cusolverDnDpotrs(context_->cusolver_handle_,
-                       CUBLAS_FILL_MODE_LOWER,
-                       num_cols_,
-                       1,
-                       lhs_.data(),
-                       num_cols_,
-                       rhs_.data(),
-                       num_cols_,
-                       error_.data()) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDpotrs failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  int error = 0;
-  error_.CopyToCpu(&error, 1);
-  if (error != 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it."
-               << "cuSolverDN::cusolverDnDpotrs fatal error. "
-               << "Argument: " << -error << " is invalid.";
-  }
-  rhs_.CopyToCpu(solution, num_cols_);
-  *message = "Success";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-std::unique_ptr<CUDADenseCholesky> CUDADenseCholesky::Create(
-    const LinearSolver::Options& options) {
-  if (options.dense_linear_algebra_library_type != CUDA ||
-      options.context == nullptr || !options.context->IsCudaInitialized()) {
-    return nullptr;
-  }
-  return std::unique_ptr<CUDADenseCholesky>(
-      new CUDADenseCholesky(options.context));
-}
-
-std::unique_ptr<CUDADenseCholeskyMixedPrecision>
-CUDADenseCholeskyMixedPrecision::Create(const LinearSolver::Options& options) {
-  if (options.dense_linear_algebra_library_type != CUDA ||
-      !options.use_mixed_precision_solves || options.context == nullptr ||
-      !options.context->IsCudaInitialized()) {
-    return nullptr;
-  }
-  return std::unique_ptr<CUDADenseCholeskyMixedPrecision>(
-      new CUDADenseCholeskyMixedPrecision(
-          options.context, options.max_num_refinement_iterations));
-}
-
-LinearSolverTerminationType
-CUDADenseCholeskyMixedPrecision::CudaCholeskyFactorize(std::string* message) {
-  int device_workspace_size = 0;
-  if (cusolverDnSpotrf_bufferSize(context_->cusolver_handle_,
-                                  CUBLAS_FILL_MODE_LOWER,
-                                  num_cols_,
-                                  lhs_fp32_.data(),
-                                  num_cols_,
-                                  &device_workspace_size) !=
-      CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnSpotrf_bufferSize failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  device_workspace_.Reserve(device_workspace_size);
-  if (cusolverDnSpotrf(context_->cusolver_handle_,
-                       CUBLAS_FILL_MODE_LOWER,
-                       num_cols_,
-                       lhs_fp32_.data(),
-                       num_cols_,
-                       device_workspace_.data(),
-                       device_workspace_.size(),
-                       error_.data()) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnSpotrf failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  int error = 0;
-  error_.CopyToCpu(&error, 1);
-  if (error < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres - "
-               << "please report it. "
-               << "cuSolverDN::cusolverDnSpotrf fatal error. "
-               << "Argument: " << -error << " is invalid.";
-    // The following line is unreachable, but return failure just to be
-    // pedantic, since the compiler does not know that.
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  if (error > 0) {
-    *message = StringPrintf(
-        "cuSolverDN::cusolverDnSpotrf numerical failure. "
-        "The leading minor of order %d is not positive definite.",
-        error);
-    factorize_result_ = LinearSolverTerminationType::FAILURE;
-    return LinearSolverTerminationType::FAILURE;
-  }
-  *message = "Success";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType CUDADenseCholeskyMixedPrecision::CudaCholeskySolve(
-    std::string* message) {
-  CHECK_EQ(cudaMemcpyAsync(correction_fp32_.data(),
-                           residual_fp32_.data(),
-                           num_cols_ * sizeof(float),
-                           cudaMemcpyDeviceToDevice,
-                           context_->DefaultStream()),
-           cudaSuccess);
-  if (cusolverDnSpotrs(context_->cusolver_handle_,
-                       CUBLAS_FILL_MODE_LOWER,
-                       num_cols_,
-                       1,
-                       lhs_fp32_.data(),
-                       num_cols_,
-                       correction_fp32_.data(),
-                       num_cols_,
-                       error_.data()) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDpotrs failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  int error = 0;
-  error_.CopyToCpu(&error, 1);
-  if (error != 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it."
-               << "cuSolverDN::cusolverDnDpotrs fatal error. "
-               << "Argument: " << -error << " is invalid.";
-  }
-  *message = "Success";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-CUDADenseCholeskyMixedPrecision::CUDADenseCholeskyMixedPrecision(
-    ContextImpl* context, int max_num_refinement_iterations)
-    : context_(context),
-      lhs_fp64_{context},
-      rhs_fp64_{context},
-      lhs_fp32_{context},
-      device_workspace_{context},
-      error_(context, 1),
-      x_fp64_{context},
-      correction_fp32_{context},
-      residual_fp32_{context},
-      residual_fp64_{context},
-      max_num_refinement_iterations_(max_num_refinement_iterations) {}
-
-LinearSolverTerminationType CUDADenseCholeskyMixedPrecision::Factorize(
-    int num_cols, double* lhs, std::string* message) {
-  num_cols_ = num_cols;
-
-  // Copy fp64 version of lhs to GPU.
-  lhs_fp64_.Reserve(num_cols * num_cols);
-  lhs_fp64_.CopyFromCpu(lhs, num_cols * num_cols);
-
-  // Create an fp32 copy of lhs, lhs_fp32.
-  lhs_fp32_.Reserve(num_cols * num_cols);
-  CudaFP64ToFP32(lhs_fp64_.data(),
-                 lhs_fp32_.data(),
-                 num_cols * num_cols,
-                 context_->DefaultStream());
-
-  // Factorize lhs_fp32.
-  factorize_result_ = CudaCholeskyFactorize(message);
-  return factorize_result_;
-}
-
-LinearSolverTerminationType CUDADenseCholeskyMixedPrecision::Solve(
-    const double* rhs, double* solution, std::string* message) {
-  // If factorization failed, return failure.
-  if (factorize_result_ != LinearSolverTerminationType::SUCCESS) {
-    *message = "Factorize did not complete successfully previously.";
-    return factorize_result_;
-  }
-
-  // Reserve memory for all arrays.
-  rhs_fp64_.Reserve(num_cols_);
-  x_fp64_.Reserve(num_cols_);
-  correction_fp32_.Reserve(num_cols_);
-  residual_fp32_.Reserve(num_cols_);
-  residual_fp64_.Reserve(num_cols_);
-
-  // Initialize x = 0.
-  CudaSetZeroFP64(x_fp64_.data(), num_cols_, context_->DefaultStream());
-
-  // Initialize residual = rhs.
-  rhs_fp64_.CopyFromCpu(rhs, num_cols_);
-  residual_fp64_.CopyFromGPUArray(rhs_fp64_.data(), num_cols_);
-
-  for (int i = 0; i <= max_num_refinement_iterations_; ++i) {
-    // Cast residual from fp64 to fp32.
-    CudaFP64ToFP32(residual_fp64_.data(),
-                   residual_fp32_.data(),
-                   num_cols_,
-                   context_->DefaultStream());
-    // [fp32] c = lhs^-1 * residual.
-    auto result = CudaCholeskySolve(message);
-    if (result != LinearSolverTerminationType::SUCCESS) {
-      return result;
-    }
-    // [fp64] x += c.
-    CudaDsxpy(x_fp64_.data(),
-              correction_fp32_.data(),
-              num_cols_,
-              context_->DefaultStream());
-    if (i < max_num_refinement_iterations_) {
-      // [fp64] residual = rhs - lhs * x
-      // This is done in two steps:
-      // 1. [fp64] residual = rhs
-      residual_fp64_.CopyFromGPUArray(rhs_fp64_.data(), num_cols_);
-      // 2. [fp64] residual = residual - lhs * x
-      double alpha = -1.0;
-      double beta = 1.0;
-      cublasDsymv(context_->cublas_handle_,
-                  CUBLAS_FILL_MODE_LOWER,
-                  num_cols_,
-                  &alpha,
-                  lhs_fp64_.data(),
-                  num_cols_,
-                  x_fp64_.data(),
-                  1,
-                  &beta,
-                  residual_fp64_.data(),
-                  1);
-    }
-  }
-  x_fp64_.CopyToCpu(solution, num_cols_);
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_cholesky.h b/third_party/ceres/internal/ceres/dense_cholesky.h
deleted file mode 100644
index 04a5dd5..0000000
--- a/third_party/ceres/internal/ceres/dense_cholesky.h
+++ /dev/null
@@ -1,308 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_DENSE_CHOLESKY_H_
-#define CERES_INTERNAL_DENSE_CHOLESKY_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <memory>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/context_impl.h"
-#include "ceres/cuda_buffer.h"
-#include "ceres/linear_solver.h"
-#include "glog/logging.h"
-#ifndef CERES_NO_CUDA
-#include "ceres/context_impl.h"
-#include "cuda_runtime.h"
-#include "cusolverDn.h"
-#endif  // CERES_NO_CUDA
-
-namespace ceres::internal {
-
-// An interface that abstracts away the internal details of various dense linear
-// algebra libraries and offers a simple API for solving dense symmetric
-// positive definite linear systems using a Cholesky factorization.
-class CERES_NO_EXPORT DenseCholesky {
- public:
-  static std::unique_ptr<DenseCholesky> Create(
-      const LinearSolver::Options& options);
-
-  virtual ~DenseCholesky();
-
-  // Computes the Cholesky factorization of the given matrix.
-  //
-  // The input matrix lhs is assumed to be a column-major num_cols x num_cols
-  // matrix, that is symmetric positive definite with its lower triangular part
-  // containing the left hand side of the linear system being solved.
-  //
-  // The input matrix lhs may be modified by the implementation to store the
-  // factorization, irrespective of whether the factorization succeeds or not.
-  // As a result it is the user's responsibility to ensure that lhs is valid
-  // when Solve is called.
-  virtual LinearSolverTerminationType Factorize(int num_cols,
-                                                double* lhs,
-                                                std::string* message) = 0;
-
-  // Computes the solution to the equation
-  //
-  // lhs * solution = rhs
-  //
-  // Calling Solve without calling Factorize is undefined behaviour. It is the
-  // user's responsibility to ensure that the input matrix lhs passed to
-  // Factorize has not been freed/modified when Solve is called.
-  virtual LinearSolverTerminationType Solve(const double* rhs,
-                                            double* solution,
-                                            std::string* message) = 0;
-
-  // Convenience method which combines a call to Factorize and Solve. Solve is
-  // only called if Factorize returns LinearSolverTerminationType::SUCCESS.
-  //
-  // The input matrix lhs may be modified by the implementation to store the
-  // factorization, irrespective of whether the method succeeds or not. It is
-  // the user's responsibility to ensure that lhs is valid if and when Solve is
-  // called again after this call.
-  LinearSolverTerminationType FactorAndSolve(int num_cols,
-                                             double* lhs,
-                                             const double* rhs,
-                                             double* solution,
-                                             std::string* message);
-};
-
-class CERES_NO_EXPORT EigenDenseCholesky final : public DenseCholesky {
- public:
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  using LLTType = Eigen::LLT<Eigen::Ref<Eigen::MatrixXd>, Eigen::Lower>;
-  std::unique_ptr<LLTType> llt_;
-};
-
-class CERES_NO_EXPORT FloatEigenDenseCholesky final : public DenseCholesky {
- public:
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  Eigen::MatrixXf lhs_;
-  Eigen::VectorXf rhs_;
-  Eigen::VectorXf solution_;
-  using LLTType = Eigen::LLT<Eigen::MatrixXf, Eigen::Lower>;
-  std::unique_ptr<LLTType> llt_;
-};
-
-#ifndef CERES_NO_LAPACK
-class CERES_NO_EXPORT LAPACKDenseCholesky final : public DenseCholesky {
- public:
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  double* lhs_ = nullptr;
-  int num_cols_ = -1;
-  LinearSolverTerminationType termination_type_ =
-      LinearSolverTerminationType::FATAL_ERROR;
-};
-
-class CERES_NO_EXPORT FloatLAPACKDenseCholesky final : public DenseCholesky {
- public:
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  Eigen::MatrixXf lhs_;
-  Eigen::VectorXf rhs_and_solution_;
-  int num_cols_ = -1;
-  LinearSolverTerminationType termination_type_ =
-      LinearSolverTerminationType::FATAL_ERROR;
-};
-#endif  // CERES_NO_LAPACK
-
-class DenseIterativeRefiner;
-
-// Computes an initial solution using the given instance of
-// DenseCholesky, and then refines it using the DenseIterativeRefiner.
-class CERES_NO_EXPORT RefinedDenseCholesky final : public DenseCholesky {
- public:
-  RefinedDenseCholesky(
-      std::unique_ptr<DenseCholesky> dense_cholesky,
-      std::unique_ptr<DenseIterativeRefiner> iterative_refiner);
-  ~RefinedDenseCholesky() override;
-
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  std::unique_ptr<DenseCholesky> dense_cholesky_;
-  std::unique_ptr<DenseIterativeRefiner> iterative_refiner_;
-  double* lhs_ = nullptr;
-  int num_cols_;
-};
-
-#ifndef CERES_NO_CUDA
-// CUDA implementation of DenseCholesky using the cuSolverDN library using the
-// 32-bit legacy interface for maximum compatibility.
-class CERES_NO_EXPORT CUDADenseCholesky final : public DenseCholesky {
- public:
-  static std::unique_ptr<CUDADenseCholesky> Create(
-      const LinearSolver::Options& options);
-  CUDADenseCholesky(const CUDADenseCholesky&) = delete;
-  CUDADenseCholesky& operator=(const CUDADenseCholesky&) = delete;
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  explicit CUDADenseCholesky(ContextImpl* context);
-
-  ContextImpl* context_ = nullptr;
-  // Number of columns in the A matrix, to be cached between calls to *Factorize
-  // and *Solve.
-  size_t num_cols_ = 0;
-  // GPU memory allocated for the A matrix (lhs matrix).
-  CudaBuffer<double> lhs_;
-  // GPU memory allocated for the B matrix (rhs vector).
-  CudaBuffer<double> rhs_;
-  // Scratch space for cuSOLVER on the GPU.
-  CudaBuffer<double> device_workspace_;
-  // Required for error handling with cuSOLVER.
-  CudaBuffer<int> error_;
-  // Cache the result of Factorize to ensure that when Solve is called, the
-  // factorization of lhs is valid.
-  LinearSolverTerminationType factorize_result_ =
-      LinearSolverTerminationType::FATAL_ERROR;
-};
-
-// A mixed-precision iterative refinement dense Cholesky solver using FP32 CUDA
-// Dense Cholesky for inner iterations, and FP64 outer refinements.
-// This class implements a modified version of the  "Classical iterative
-// refinement" (Algorithm 4.1) from the following paper:
-// Haidar, Azzam, Harun Bayraktar, Stanimire Tomov, Jack Dongarra, and Nicholas
-// J. Higham. "Mixed-precision iterative refinement using tensor cores on GPUs
-// to accelerate solution of linear systems." Proceedings of the Royal Society A
-// 476, no. 2243 (2020): 20200110.
-//
-// The three key modifications from Algorithm 4.1 in the paper are:
-// 1. We use Cholesky factorization instead of LU factorization since our A is
-//    symmetric positive definite.
-// 2. During the solution update, the up-cast and accumulation is performed in
-//    one step with a custom kernel.
-class CERES_NO_EXPORT CUDADenseCholeskyMixedPrecision final
-    : public DenseCholesky {
- public:
-  static std::unique_ptr<CUDADenseCholeskyMixedPrecision> Create(
-      const LinearSolver::Options& options);
-  CUDADenseCholeskyMixedPrecision(const CUDADenseCholeskyMixedPrecision&) =
-      delete;
-  CUDADenseCholeskyMixedPrecision& operator=(
-      const CUDADenseCholeskyMixedPrecision&) = delete;
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  CUDADenseCholeskyMixedPrecision(ContextImpl* context,
-                                  int max_num_refinement_iterations);
-
-  // Helper function to wrap Cuda boilerplate needed to call Spotrf.
-  LinearSolverTerminationType CudaCholeskyFactorize(std::string* message);
-  // Helper function to wrap Cuda boilerplate needed to call Spotrs.
-  LinearSolverTerminationType CudaCholeskySolve(std::string* message);
-  // Picks up the cuSolverDN and cuStream handles from the context in the
-  // options, and the number of refinement iterations from the options. If
-  // the context is unable to initialize CUDA, returns false with a
-  // human-readable message indicating the reason.
-  bool Init(const LinearSolver::Options& options, std::string* message);
-
-  ContextImpl* context_ = nullptr;
-  // Number of columns in the A matrix, to be cached between calls to *Factorize
-  // and *Solve.
-  size_t num_cols_ = 0;
-  CudaBuffer<double> lhs_fp64_;
-  CudaBuffer<double> rhs_fp64_;
-  CudaBuffer<float> lhs_fp32_;
-  // Scratch space for cuSOLVER on the GPU.
-  CudaBuffer<float> device_workspace_;
-  // Required for error handling with cuSOLVER.
-  CudaBuffer<int> error_;
-
-  // Solution to lhs * x = rhs.
-  CudaBuffer<double> x_fp64_;
-  // Incremental correction to x.
-  CudaBuffer<float> correction_fp32_;
-  // Residual to iterative refinement.
-  CudaBuffer<float> residual_fp32_;
-  CudaBuffer<double> residual_fp64_;
-
-  // Number of inner refinement iterations to perform.
-  int max_num_refinement_iterations_ = 0;
-  // Cache the result of Factorize to ensure that when Solve is called, the
-  // factorization of lhs is valid.
-  LinearSolverTerminationType factorize_result_ =
-      LinearSolverTerminationType::FATAL_ERROR;
-};
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_DENSE_CHOLESKY_H_
diff --git a/third_party/ceres/internal/ceres/dense_cholesky_test.cc b/third_party/ceres/internal/ceres/dense_cholesky_test.cc
deleted file mode 100644
index 1b2e42d..0000000
--- a/third_party/ceres/internal/ceres/dense_cholesky_test.cc
+++ /dev/null
@@ -1,221 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dense_cholesky.h"
-
-#include <memory>
-#include <numeric>
-#include <sstream>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/iterative_refiner.h"
-#include "ceres/linear_solver.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using Param = ::testing::tuple<DenseLinearAlgebraLibraryType, bool>;
-constexpr bool kMixedPrecision = true;
-constexpr bool kFullPrecision = false;
-
-namespace {
-
-std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  Param param = info.param;
-  std::stringstream ss;
-  ss << DenseLinearAlgebraLibraryTypeToString(::testing::get<0>(param)) << "_"
-     << (::testing::get<1>(param) ? "MixedPrecision" : "FullPrecision");
-  return ss.str();
-}
-}  // namespace
-
-class DenseCholeskyTest : public ::testing::TestWithParam<Param> {};
-
-TEST_P(DenseCholeskyTest, FactorAndSolve) {
-  // TODO(sameeragarwal): Convert these tests into type parameterized tests so
-  // that we can test the single and double precision solvers.
-
-  using Scalar = double;
-  using MatrixType = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>;
-  using VectorType = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>;
-
-  LinearSolver::Options options;
-  ContextImpl context;
-#ifndef CERES_NO_CUDA
-  options.context = &context;
-  std::string error;
-  CHECK(context.InitCuda(&error)) << error;
-#endif  // CERES_NO_CUDA
-  options.dense_linear_algebra_library_type = ::testing::get<0>(GetParam());
-  options.use_mixed_precision_solves = ::testing::get<1>(GetParam());
-  const int kNumRefinementSteps = 4;
-  if (options.use_mixed_precision_solves) {
-    options.max_num_refinement_iterations = kNumRefinementSteps;
-  }
-  auto dense_cholesky = DenseCholesky::Create(options);
-
-  const int kNumTrials = 10;
-  const int kMinNumCols = 1;
-  const int kMaxNumCols = 10;
-  for (int num_cols = kMinNumCols; num_cols < kMaxNumCols; ++num_cols) {
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      const MatrixType a = MatrixType::Random(num_cols, num_cols);
-      MatrixType lhs = a.transpose() * a;
-      lhs += VectorType::Ones(num_cols).asDiagonal();
-      Vector x = VectorType::Random(num_cols);
-      Vector rhs = lhs * x;
-      Vector actual = Vector::Random(num_cols);
-
-      LinearSolver::Summary summary;
-      summary.termination_type = dense_cholesky->FactorAndSolve(
-          num_cols, lhs.data(), rhs.data(), actual.data(), &summary.message);
-      EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-      EXPECT_NEAR((x - actual).norm() / x.norm(),
-                  0.0,
-                  std::numeric_limits<double>::epsilon() * 10)
-          << "\nexpected: " << x.transpose()
-          << "\nactual  : " << actual.transpose();
-    }
-  }
-}
-
-INSTANTIATE_TEST_SUITE_P(EigenCholesky,
-                         DenseCholeskyTest,
-                         ::testing::Combine(::testing::Values(EIGEN),
-                                            ::testing::Values(kMixedPrecision,
-                                                              kFullPrecision)),
-                         ParamInfoToString);
-#ifndef CERES_NO_LAPACK
-INSTANTIATE_TEST_SUITE_P(LapackCholesky,
-                         DenseCholeskyTest,
-                         ::testing::Combine(::testing::Values(LAPACK),
-                                            ::testing::Values(kMixedPrecision,
-                                                              kFullPrecision)),
-                         ParamInfoToString);
-#endif
-#ifndef CERES_NO_CUDA
-INSTANTIATE_TEST_SUITE_P(CudaCholesky,
-                         DenseCholeskyTest,
-                         ::testing::Combine(::testing::Values(CUDA),
-                                            ::testing::Values(kMixedPrecision,
-                                                              kFullPrecision)),
-                         ParamInfoToString);
-#endif
-
-class MockDenseCholesky : public DenseCholesky {
- public:
-  MOCK_METHOD3(Factorize,
-               LinearSolverTerminationType(int num_cols,
-                                           double* lhs,
-                                           std::string* message));
-  MOCK_METHOD3(Solve,
-               LinearSolverTerminationType(const double* rhs,
-                                           double* solution,
-                                           std::string* message));
-};
-
-class MockDenseIterativeRefiner : public DenseIterativeRefiner {
- public:
-  MockDenseIterativeRefiner() : DenseIterativeRefiner(1) {}
-  MOCK_METHOD5(Refine,
-               void(int num_cols,
-                    const double* lhs,
-                    const double* rhs,
-                    DenseCholesky* dense_cholesky,
-                    double* solution));
-};
-
-using testing::_;
-using testing::Return;
-
-TEST(RefinedDenseCholesky, Factorize) {
-  auto dense_cholesky = std::make_unique<MockDenseCholesky>();
-  auto iterative_refiner = std::make_unique<MockDenseIterativeRefiner>();
-  EXPECT_CALL(*dense_cholesky, Factorize(_, _, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::SUCCESS));
-  EXPECT_CALL(*iterative_refiner, Refine(_, _, _, _, _)).Times(0);
-  RefinedDenseCholesky refined_dense_cholesky(std::move(dense_cholesky),
-                                              std::move(iterative_refiner));
-  double lhs;
-  std::string message;
-  EXPECT_EQ(refined_dense_cholesky.Factorize(1, &lhs, &message),
-            LinearSolverTerminationType::SUCCESS);
-};
-
-TEST(RefinedDenseCholesky, FactorAndSolveWithUnsuccessfulFactorization) {
-  auto dense_cholesky = std::make_unique<MockDenseCholesky>();
-  auto iterative_refiner = std::make_unique<MockDenseIterativeRefiner>();
-  EXPECT_CALL(*dense_cholesky, Factorize(_, _, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::FAILURE));
-  EXPECT_CALL(*dense_cholesky, Solve(_, _, _)).Times(0);
-  EXPECT_CALL(*iterative_refiner, Refine(_, _, _, _, _)).Times(0);
-  RefinedDenseCholesky refined_dense_cholesky(std::move(dense_cholesky),
-                                              std::move(iterative_refiner));
-  double lhs;
-  std::string message;
-  double rhs;
-  double solution;
-  EXPECT_EQ(
-      refined_dense_cholesky.FactorAndSolve(1, &lhs, &rhs, &solution, &message),
-      LinearSolverTerminationType::FAILURE);
-};
-
-TEST(RefinedDenseCholesky, FactorAndSolveWithSuccess) {
-  auto dense_cholesky = std::make_unique<MockDenseCholesky>();
-  auto iterative_refiner = std::make_unique<MockDenseIterativeRefiner>();
-  EXPECT_CALL(*dense_cholesky, Factorize(_, _, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::SUCCESS));
-  EXPECT_CALL(*dense_cholesky, Solve(_, _, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::SUCCESS));
-  EXPECT_CALL(*iterative_refiner, Refine(_, _, _, _, _)).Times(1);
-
-  RefinedDenseCholesky refined_dense_cholesky(std::move(dense_cholesky),
-                                              std::move(iterative_refiner));
-  double lhs;
-  std::string message;
-  double rhs;
-  double solution;
-  EXPECT_EQ(
-      refined_dense_cholesky.FactorAndSolve(1, &lhs, &rhs, &solution, &message),
-      LinearSolverTerminationType::SUCCESS);
-};
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_jacobian_writer.h b/third_party/ceres/internal/ceres/dense_jacobian_writer.h
deleted file mode 100644
index d0f2c89..0000000
--- a/third_party/ceres/internal/ceres/dense_jacobian_writer.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A jacobian writer that writes to dense Eigen matrices.
-
-#ifndef CERES_INTERNAL_DENSE_JACOBIAN_WRITER_H_
-#define CERES_INTERNAL_DENSE_JACOBIAN_WRITER_H_
-
-#include <memory>
-
-#include "ceres/casts.h"
-#include "ceres/dense_sparse_matrix.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/scratch_evaluate_preparer.h"
-
-namespace ceres {
-namespace internal {
-
-class CERES_NO_EXPORT DenseJacobianWriter {
- public:
-  DenseJacobianWriter(Evaluator::Options /* ignored */, Program* program)
-      : program_(program) {}
-
-  // JacobianWriter interface.
-
-  // Since the dense matrix has different layout than that assumed by the cost
-  // functions, use scratch space to store the jacobians temporarily then copy
-  // them over to the larger jacobian later.
-  std::unique_ptr<ScratchEvaluatePreparer[]> CreateEvaluatePreparers(
-      int num_threads) {
-    return ScratchEvaluatePreparer::Create(*program_, num_threads);
-  }
-
-  std::unique_ptr<SparseMatrix> CreateJacobian() const {
-    return std::make_unique<DenseSparseMatrix>(
-        program_->NumResiduals(), program_->NumEffectiveParameters());
-  }
-
-  void Write(int residual_id,
-             int residual_offset,
-             double** jacobians,
-             SparseMatrix* jacobian) {
-    DenseSparseMatrix* dense_jacobian = down_cast<DenseSparseMatrix*>(jacobian);
-    const ResidualBlock* residual_block =
-        program_->residual_blocks()[residual_id];
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    const int num_residuals = residual_block->NumResiduals();
-
-    // Now copy the jacobians for each parameter into the dense jacobian matrix.
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[j];
-
-      // If the parameter block is fixed, then there is nothing to do.
-      if (parameter_block->IsConstant()) {
-        continue;
-      }
-
-      const int parameter_block_size = parameter_block->TangentSize();
-      ConstMatrixRef parameter_jacobian(
-          jacobians[j], num_residuals, parameter_block_size);
-
-      dense_jacobian->mutable_matrix()->block(residual_offset,
-                                              parameter_block->delta_offset(),
-                                              num_residuals,
-                                              parameter_block_size) =
-          parameter_jacobian;
-    }
-  }
-
- private:
-  Program* program_;
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DENSE_JACOBIAN_WRITER_H_
diff --git a/third_party/ceres/internal/ceres/dense_linear_solver_benchmark.cc b/third_party/ceres/internal/ceres/dense_linear_solver_benchmark.cc
deleted file mode 100644
index 0930b7b..0000000
--- a/third_party/ceres/internal/ceres/dense_linear_solver_benchmark.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/context_impl.h"
-#include "ceres/dense_sparse_matrix.h"
-#include "ceres/internal/config.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-template <ceres::DenseLinearAlgebraLibraryType kLibraryType,
-          ceres::LinearSolverType kSolverType>
-static void BM_DenseSolver(benchmark::State& state) {
-  const int num_rows = static_cast<int>(state.range(0));
-  const int num_cols = static_cast<int>(state.range(1));
-  DenseSparseMatrix jacobian(num_rows, num_cols);
-  *jacobian.mutable_matrix() = Eigen::MatrixXd::Random(num_rows, num_cols);
-  Eigen::VectorXd rhs = Eigen::VectorXd::Random(num_rows, 1);
-
-  Eigen::VectorXd solution(num_cols);
-
-  LinearSolver::Options options;
-  options.type = kSolverType;
-  options.dense_linear_algebra_library_type = kLibraryType;
-  ContextImpl context;
-  options.context = &context;
-  auto solver = LinearSolver::Create(options);
-
-  LinearSolver::PerSolveOptions per_solve_options;
-  Eigen::VectorXd diagonal = Eigen::VectorXd::Ones(num_cols) * 100;
-  per_solve_options.D = diagonal.data();
-  for (auto _ : state) {
-    solver->Solve(&jacobian, rhs.data(), per_solve_options, solution.data());
-  }
-}
-
-// Some reasonable matrix sizes. I picked them out of thin air.
-static void MatrixSizes(benchmark::internal::Benchmark* b) {
-  // {num_rows, num_cols}
-  b->Args({1, 1});
-  b->Args({2, 1});
-  b->Args({3, 1});
-  b->Args({6, 2});
-  b->Args({10, 3});
-  b->Args({12, 4});
-  b->Args({20, 5});
-  b->Args({40, 5});
-  b->Args({100, 10});
-  b->Args({150, 15});
-  b->Args({200, 16});
-  b->Args({225, 18});
-  b->Args({300, 20});
-  b->Args({400, 20});
-  b->Args({600, 22});
-  b->Args({800, 25});
-}
-
-BENCHMARK_TEMPLATE2(BM_DenseSolver, ceres::EIGEN, ceres::DENSE_QR)
-    ->Apply(MatrixSizes);
-BENCHMARK_TEMPLATE2(BM_DenseSolver, ceres::EIGEN, ceres::DENSE_NORMAL_CHOLESKY)
-    ->Apply(MatrixSizes);
-
-#ifndef CERES_NO_LAPACK
-BENCHMARK_TEMPLATE2(BM_DenseSolver, ceres::LAPACK, ceres::DENSE_QR)
-    ->Apply(MatrixSizes);
-BENCHMARK_TEMPLATE2(BM_DenseSolver, ceres::LAPACK, ceres::DENSE_NORMAL_CHOLESKY)
-    ->Apply(MatrixSizes);
-#endif  // CERES_NO_LAPACK
-
-#ifndef CERES_NO_CUDA
-BENCHMARK_TEMPLATE2(BM_DenseSolver, ceres::CUDA, ceres::DENSE_NORMAL_CHOLESKY)
-    ->Apply(MatrixSizes);
-BENCHMARK_TEMPLATE2(BM_DenseSolver, ceres::CUDA, ceres::DENSE_QR)
-    ->Apply(MatrixSizes);
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/dense_linear_solver_test.cc b/third_party/ceres/internal/ceres/dense_linear_solver_test.cc
deleted file mode 100644
index 79d2543..0000000
--- a/third_party/ceres/internal/ceres/dense_linear_solver_test.cc
+++ /dev/null
@@ -1,138 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <memory>
-
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/config.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using Param = ::testing::
-    tuple<LinearSolverType, DenseLinearAlgebraLibraryType, bool, int>;
-
-static std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  Param param = info.param;
-  std::stringstream ss;
-  ss << LinearSolverTypeToString(::testing::get<0>(param)) << "_"
-     << DenseLinearAlgebraLibraryTypeToString(::testing::get<1>(param)) << "_"
-     << (::testing::get<2>(param) ? "Regularized" : "Unregularized") << "_"
-     << ::testing::get<3>(param);
-  return ss.str();
-}
-
-class DenseLinearSolverTest : public ::testing::TestWithParam<Param> {};
-
-TEST_P(DenseLinearSolverTest, _) {
-  Param param = GetParam();
-  const bool regularized = testing::get<2>(param);
-
-  std::unique_ptr<LinearLeastSquaresProblem> problem =
-      CreateLinearLeastSquaresProblemFromId(testing::get<3>(param));
-  DenseSparseMatrix lhs(*down_cast<TripletSparseMatrix*>(problem->A.get()));
-
-  const int num_cols = lhs.num_cols();
-  const int num_rows = lhs.num_rows();
-
-  Vector rhs = Vector::Zero(num_rows + num_cols);
-  rhs.head(num_rows) = ConstVectorRef(problem->b.get(), num_rows);
-
-  LinearSolver::Options options;
-  options.type = ::testing::get<0>(param);
-  options.dense_linear_algebra_library_type = ::testing::get<1>(param);
-  ContextImpl context;
-  options.context = &context;
-  std::unique_ptr<LinearSolver> solver(LinearSolver::Create(options));
-
-  LinearSolver::PerSolveOptions per_solve_options;
-  if (regularized) {
-    per_solve_options.D = problem->D.get();
-  }
-
-  Vector solution(num_cols);
-  LinearSolver::Summary summary =
-      solver->Solve(&lhs, rhs.data(), per_solve_options, solution.data());
-  EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-
-  Vector normal_rhs = lhs.matrix().transpose() * rhs.head(num_rows);
-  Matrix normal_lhs = lhs.matrix().transpose() * lhs.matrix();
-
-  if (regularized) {
-    ConstVectorRef diagonal(problem->D.get(), num_cols);
-    normal_lhs += diagonal.array().square().matrix().asDiagonal();
-  }
-
-  Vector actual_normal_rhs = normal_lhs * solution;
-
-  const double normalized_residual =
-      (normal_rhs - actual_normal_rhs).norm() / normal_rhs.norm();
-
-  EXPECT_NEAR(
-      normalized_residual, 0.0, 10 * std::numeric_limits<double>::epsilon())
-      << "\nexpected: " << normal_rhs.transpose()
-      << "\nactual: " << actual_normal_rhs.transpose();
-}
-
-namespace {
-
-// TODO(sameeragarwal): Should we move away from hard coded linear
-// least squares problem to randomly generated ones?
-#ifndef CERES_NO_LAPACK
-
-INSTANTIATE_TEST_SUITE_P(
-    DenseLinearSolver,
-    DenseLinearSolverTest,
-    ::testing::Combine(::testing::Values(DENSE_QR, DENSE_NORMAL_CHOLESKY),
-                       ::testing::Values(EIGEN, LAPACK),
-                       ::testing::Values(true, false),
-                       ::testing::Values(0, 1)),
-    ParamInfoToString);
-
-#else
-
-INSTANTIATE_TEST_SUITE_P(
-    DenseLinearSolver,
-    DenseLinearSolverTest,
-    ::testing::Combine(::testing::Values(DENSE_QR, DENSE_NORMAL_CHOLESKY),
-                       ::testing::Values(EIGEN),
-                       ::testing::Values(true, false),
-                       ::testing::Values(0, 1)),
-    ParamInfoToString);
-
-#endif
-}  // namespace
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.cc b/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.cc
deleted file mode 100644
index f6d5e5a..0000000
--- a/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dense_normal_cholesky_solver.h"
-
-#include <utility>
-
-#include "Eigen/Dense"
-#include "ceres/dense_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-
-DenseNormalCholeskySolver::DenseNormalCholeskySolver(
-    LinearSolver::Options options)
-    : options_(std::move(options)),
-      cholesky_(DenseCholesky::Create(options_)) {}
-
-LinearSolver::Summary DenseNormalCholeskySolver::SolveImpl(
-    DenseSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("DenseNormalCholeskySolver::Solve");
-
-  const int num_rows = A->num_rows();
-  const int num_cols = A->num_cols();
-
-  Matrix lhs(num_cols, num_cols);
-  lhs.setZero();
-
-  event_logger.AddEvent("Setup");
-
-  //   lhs += A'A
-  //
-  // Using rankUpdate instead of GEMM, exposes the fact that its the
-  // same matrix being multiplied with itself and that the product is
-  // symmetric.
-  lhs.selfadjointView<Eigen::Upper>().rankUpdate(A->matrix().transpose());
-
-  //   rhs = A'b
-  Vector rhs = A->matrix().transpose() * ConstVectorRef(b, num_rows);
-
-  if (per_solve_options.D != nullptr) {
-    ConstVectorRef D(per_solve_options.D, num_cols);
-    lhs += D.array().square().matrix().asDiagonal();
-  }
-  event_logger.AddEvent("Product");
-
-  LinearSolver::Summary summary;
-  summary.num_iterations = 1;
-  summary.termination_type = cholesky_->FactorAndSolve(
-      num_cols, lhs.data(), rhs.data(), x, &summary.message);
-  event_logger.AddEvent("FactorAndSolve");
-
-  return summary;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.h b/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.h
deleted file mode 100644
index c6aa2af..0000000
--- a/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Solve dense rectangular systems Ax = b by forming the normal
-// equations and solving them using the Cholesky factorization.
-
-#ifndef CERES_INTERNAL_DENSE_NORMAL_CHOLESKY_SOLVER_H_
-#define CERES_INTERNAL_DENSE_NORMAL_CHOLESKY_SOLVER_H_
-
-#include <memory>
-
-#include "ceres/dense_cholesky.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-class DenseSparseMatrix;
-
-// This class implements the LinearSolver interface for solving
-// rectangular/unsymmetric (well constrained) linear systems of the
-// form
-//
-//   Ax = b
-//
-// Since there does not usually exist a solution that satisfies these
-// equations, the solver instead solves the linear least squares
-// problem
-//
-//   min_x |Ax - b|^2
-//
-// Setting the gradient of the above optimization problem to zero
-// gives us the normal equations
-//
-//   A'Ax = A'b
-//
-// A'A is a positive definite matrix (hopefully), and the resulting
-// linear system can be solved using Cholesky factorization.
-//
-// If the PerSolveOptions struct has a non-null array D, then the
-// augmented/regularized linear system
-//
-//   [    A    ]x = [b]
-//   [ diag(D) ]    [0]
-//
-// is solved.
-//
-// This class uses the LDLT factorization routines from the Eigen
-// library. This solver always returns a solution, it is the user's
-// responsibility to judge if the solution is good enough for their
-// purposes.
-class CERES_NO_EXPORT DenseNormalCholeskySolver
-    : public DenseSparseMatrixSolver {
- public:
-  explicit DenseNormalCholeskySolver(LinearSolver::Options options);
-
- private:
-  LinearSolver::Summary SolveImpl(
-      DenseSparseMatrix* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x) final;
-
-  const LinearSolver::Options options_;
-  std::unique_ptr<DenseCholesky> cholesky_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DENSE_NORMAL_CHOLESKY_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/dense_qr.cc b/third_party/ceres/internal/ceres/dense_qr.cc
deleted file mode 100644
index fbbcadc..0000000
--- a/third_party/ceres/internal/ceres/dense_qr.cc
+++ /dev/null
@@ -1,456 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dense_qr.h"
-
-#include <algorithm>
-#include <memory>
-#include <string>
-
-#ifndef CERES_NO_CUDA
-#include "ceres/context_impl.h"
-#include "cublas_v2.h"
-#include "cusolverDn.h"
-#endif  // CERES_NO_CUDA
-
-#ifndef CERES_NO_LAPACK
-
-// LAPACK routines for solving a linear least squares problem using QR
-// factorization. This is done in three stages:
-//
-// A * x     = b
-// Q * R * x = b               (dgeqrf)
-//     R * x = Q' * b          (dormqr)
-//         x = R^{-1} * Q'* b  (dtrtrs)
-
-// clang-format off
-
-// Compute the QR factorization of a.
-//
-// a is an m x n column major matrix (Denoted by "A" in the above description)
-// lda is the leading dimension of a. lda >= max(1, num_rows)
-// tau is an array of size min(m,n). It contains the scalar factors of the
-// elementary reflectors.
-// work is an array of size max(1,lwork). On exit, if info=0, work[0] contains
-// the optimal size of work.
-//
-// if lwork >= 1 it is the size of work. If lwork = -1, then a workspace query is assumed.
-// dgeqrf computes the optimal size of the work array and returns it as work[0].
-//
-// info = 0, successful exit.
-// info < 0, if info = -i, then the i^th argument had illegal value.
-extern "C" void dgeqrf_(const int* m, const int* n, double* a, const int* lda,
-                        double* tau, double* work, const int* lwork, int* info);
-
-// Apply Q or Q' to b.
-//
-// b is a m times n column major matrix.
-// size = 'L' applies Q or Q' on the left, size = 'R' applies Q or Q' on the right.
-// trans = 'N', applies Q, trans = 'T', applies Q'.
-// k is the number of elementary reflectors whose product defines the matrix Q.
-// If size = 'L', m >= k >= 0 and if side = 'R', n >= k >= 0.
-// a is an lda x k column major matrix containing the reflectors as returned by dgeqrf.
-// ldb is the leading dimension of b.
-// work is an array of size max(1, lwork)
-// lwork if positive is the size of work. If lwork = -1, then a
-// workspace query is assumed.
-//
-// info = 0, successful exit.
-// info < 0, if info = -i, then the i^th argument had illegal value.
-extern "C" void dormqr_(const char* side, const char* trans, const int* m,
-                        const int* n ,const int* k, double* a, const int* lda,
-                        double* tau, double* b, const int* ldb, double* work,
-                        const int* lwork, int* info);
-
-// Solve a triangular system of the form A * x = b
-//
-// uplo = 'U', A is upper triangular. uplo = 'L' is lower triangular.
-// trans = 'N', 'T', 'C' specifies the form  - A, A^T, A^H.
-// DIAG = 'N', A is not unit triangular. 'U' is unit triangular.
-// n is the order of the matrix A.
-// nrhs number of columns of b.
-// a is a column major lda x n.
-// b is a column major matrix of ldb x nrhs
-//
-// info = 0 successful.
-//      = -i < 0 i^th argument is an illegal value.
-//      = i > 0, i^th diagonal element of A is zero.
-extern "C" void dtrtrs_(const char* uplo, const char* trans, const char* diag,
-                        const int* n, const int* nrhs, double* a, const int* lda,
-                        double* b, const int* ldb, int* info);
-// clang-format on
-
-#endif
-
-namespace ceres::internal {
-
-DenseQR::~DenseQR() = default;
-
-std::unique_ptr<DenseQR> DenseQR::Create(const LinearSolver::Options& options) {
-  std::unique_ptr<DenseQR> dense_qr;
-
-  switch (options.dense_linear_algebra_library_type) {
-    case EIGEN:
-      dense_qr = std::make_unique<EigenDenseQR>();
-      break;
-
-    case LAPACK:
-#ifndef CERES_NO_LAPACK
-      dense_qr = std::make_unique<LAPACKDenseQR>();
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for LAPACK.";
-#endif
-
-    case CUDA:
-#ifndef CERES_NO_CUDA
-      dense_qr = CUDADenseQR::Create(options);
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for CUDA.";
-#endif
-
-    default:
-      LOG(FATAL) << "Unknown dense linear algebra library type : "
-                 << DenseLinearAlgebraLibraryTypeToString(
-                        options.dense_linear_algebra_library_type);
-  }
-  return dense_qr;
-}
-
-LinearSolverTerminationType DenseQR::FactorAndSolve(int num_rows,
-                                                    int num_cols,
-                                                    double* lhs,
-                                                    const double* rhs,
-                                                    double* solution,
-                                                    std::string* message) {
-  LinearSolverTerminationType termination_type =
-      Factorize(num_rows, num_cols, lhs, message);
-  if (termination_type == LinearSolverTerminationType::SUCCESS) {
-    termination_type = Solve(rhs, solution, message);
-  }
-  return termination_type;
-}
-
-LinearSolverTerminationType EigenDenseQR::Factorize(int num_rows,
-                                                    int num_cols,
-                                                    double* lhs,
-                                                    std::string* message) {
-  Eigen::Map<ColMajorMatrix> m(lhs, num_rows, num_cols);
-  qr_ = std::make_unique<QRType>(m);
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType EigenDenseQR::Solve(const double* rhs,
-                                                double* solution,
-                                                std::string* message) {
-  VectorRef(solution, qr_->cols()) =
-      qr_->solve(ConstVectorRef(rhs, qr_->rows()));
-  *message = "Success.";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-#ifndef CERES_NO_LAPACK
-LinearSolverTerminationType LAPACKDenseQR::Factorize(int num_rows,
-                                                     int num_cols,
-                                                     double* lhs,
-                                                     std::string* message) {
-  int lwork = -1;
-  double work_size;
-  int info = 0;
-
-  // Compute the size of the temporary workspace needed to compute the QR
-  // factorization in the dgeqrf call below.
-  dgeqrf_(&num_rows,
-          &num_cols,
-          lhs_,
-          &num_rows,
-          tau_.data(),
-          &work_size,
-          &lwork,
-          &info);
-  if (info < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres."
-               << "Please report it."
-               << "LAPACK::dgels fatal error."
-               << "Argument: " << -info << " is invalid.";
-  }
-
-  lhs_ = lhs;
-  num_rows_ = num_rows;
-  num_cols_ = num_cols;
-
-  lwork = static_cast<int>(work_size);
-
-  if (work_.size() < lwork) {
-    work_.resize(lwork);
-  }
-  if (tau_.size() < num_cols) {
-    tau_.resize(num_cols);
-  }
-
-  if (q_transpose_rhs_.size() < num_rows) {
-    q_transpose_rhs_.resize(num_rows);
-  }
-
-  // Factorize the lhs_ using the workspace that we just constructed above.
-  dgeqrf_(&num_rows,
-          &num_cols,
-          lhs_,
-          &num_rows,
-          tau_.data(),
-          work_.data(),
-          &lwork,
-          &info);
-
-  if (info < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres."
-               << "Please report it. dgeqrf fatal error."
-               << "Argument: " << -info << " is invalid.";
-  }
-
-  termination_type_ = LinearSolverTerminationType::SUCCESS;
-  *message = "Success.";
-  return termination_type_;
-}
-
-LinearSolverTerminationType LAPACKDenseQR::Solve(const double* rhs,
-                                                 double* solution,
-                                                 std::string* message) {
-  if (termination_type_ != LinearSolverTerminationType::SUCCESS) {
-    *message = "QR factorization failed and solve called.";
-    return termination_type_;
-  }
-
-  std::copy_n(rhs, num_rows_, q_transpose_rhs_.data());
-
-  const char side = 'L';
-  char trans = 'T';
-  const int num_c_cols = 1;
-  const int lwork = work_.size();
-  int info = 0;
-  dormqr_(&side,
-          &trans,
-          &num_rows_,
-          &num_c_cols,
-          &num_cols_,
-          lhs_,
-          &num_rows_,
-          tau_.data(),
-          q_transpose_rhs_.data(),
-          &num_rows_,
-          work_.data(),
-          &lwork,
-          &info);
-  if (info < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres."
-               << "Please report it. dormr fatal error."
-               << "Argument: " << -info << " is invalid.";
-  }
-
-  const char uplo = 'U';
-  trans = 'N';
-  const char diag = 'N';
-  dtrtrs_(&uplo,
-          &trans,
-          &diag,
-          &num_cols_,
-          &num_c_cols,
-          lhs_,
-          &num_rows_,
-          q_transpose_rhs_.data(),
-          &num_rows_,
-          &info);
-
-  if (info < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres."
-               << "Please report it. dormr fatal error."
-               << "Argument: " << -info << " is invalid.";
-  } else if (info > 0) {
-    *message =
-        "QR factorization failure. The factorization is not full rank. R has "
-        "zeros on the diagonal.";
-    termination_type_ = LinearSolverTerminationType::FAILURE;
-  } else {
-    std::copy_n(q_transpose_rhs_.data(), num_cols_, solution);
-    termination_type_ = LinearSolverTerminationType::SUCCESS;
-  }
-
-  return termination_type_;
-}
-
-#endif  // CERES_NO_LAPACK
-
-#ifndef CERES_NO_CUDA
-
-CUDADenseQR::CUDADenseQR(ContextImpl* context)
-    : context_(context),
-      lhs_{context},
-      rhs_{context},
-      tau_{context},
-      device_workspace_{context},
-      error_(context, 1) {}
-
-LinearSolverTerminationType CUDADenseQR::Factorize(int num_rows,
-                                                   int num_cols,
-                                                   double* lhs,
-                                                   std::string* message) {
-  factorize_result_ = LinearSolverTerminationType::FATAL_ERROR;
-  lhs_.Reserve(num_rows * num_cols);
-  tau_.Reserve(std::min(num_rows, num_cols));
-  num_rows_ = num_rows;
-  num_cols_ = num_cols;
-  lhs_.CopyFromCpu(lhs, num_rows * num_cols);
-  int device_workspace_size = 0;
-  if (cusolverDnDgeqrf_bufferSize(context_->cusolver_handle_,
-                                  num_rows,
-                                  num_cols,
-                                  lhs_.data(),
-                                  num_rows,
-                                  &device_workspace_size) !=
-      CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDgeqrf_bufferSize failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  device_workspace_.Reserve(device_workspace_size);
-  if (cusolverDnDgeqrf(context_->cusolver_handle_,
-                       num_rows,
-                       num_cols,
-                       lhs_.data(),
-                       num_rows,
-                       tau_.data(),
-                       reinterpret_cast<double*>(device_workspace_.data()),
-                       device_workspace_.size(),
-                       error_.data()) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDgeqrf failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  int error = 0;
-  error_.CopyToCpu(&error, 1);
-  if (error < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres - "
-               << "please report it. "
-               << "cuSolverDN::cusolverDnDgeqrf fatal error. "
-               << "Argument: " << -error << " is invalid.";
-    // The following line is unreachable, but return failure just to be
-    // pedantic, since the compiler does not know that.
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-
-  *message = "Success";
-  factorize_result_ = LinearSolverTerminationType::SUCCESS;
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-LinearSolverTerminationType CUDADenseQR::Solve(const double* rhs,
-                                               double* solution,
-                                               std::string* message) {
-  if (factorize_result_ != LinearSolverTerminationType::SUCCESS) {
-    *message = "Factorize did not complete successfully previously.";
-    return factorize_result_;
-  }
-  rhs_.CopyFromCpu(rhs, num_rows_);
-  int device_workspace_size = 0;
-  if (cusolverDnDormqr_bufferSize(context_->cusolver_handle_,
-                                  CUBLAS_SIDE_LEFT,
-                                  CUBLAS_OP_T,
-                                  num_rows_,
-                                  1,
-                                  num_cols_,
-                                  lhs_.data(),
-                                  num_rows_,
-                                  tau_.data(),
-                                  rhs_.data(),
-                                  num_rows_,
-                                  &device_workspace_size) !=
-      CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDormqr_bufferSize failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  device_workspace_.Reserve(device_workspace_size);
-  // Compute rhs = Q^T * rhs, assuming that lhs has already been factorized.
-  // The result of factorization would have stored Q in a packed form in lhs_.
-  if (cusolverDnDormqr(context_->cusolver_handle_,
-                       CUBLAS_SIDE_LEFT,
-                       CUBLAS_OP_T,
-                       num_rows_,
-                       1,
-                       num_cols_,
-                       lhs_.data(),
-                       num_rows_,
-                       tau_.data(),
-                       rhs_.data(),
-                       num_rows_,
-                       reinterpret_cast<double*>(device_workspace_.data()),
-                       device_workspace_.size(),
-                       error_.data()) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnDormqr failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  int error = 0;
-  error_.CopyToCpu(&error, 1);
-  if (error < 0) {
-    LOG(FATAL) << "Congratulations, you found a bug in Ceres. "
-               << "Please report it."
-               << "cuSolverDN::cusolverDnDormqr fatal error. "
-               << "Argument: " << -error << " is invalid.";
-  }
-  // Compute the solution vector as x = R \ (Q^T * rhs). Since the previous step
-  // replaced rhs by (Q^T * rhs), this is just x = R \ rhs.
-  if (cublasDtrsv(context_->cublas_handle_,
-                  CUBLAS_FILL_MODE_UPPER,
-                  CUBLAS_OP_N,
-                  CUBLAS_DIAG_NON_UNIT,
-                  num_cols_,
-                  lhs_.data(),
-                  num_rows_,
-                  rhs_.data(),
-                  1) != CUBLAS_STATUS_SUCCESS) {
-    *message = "cuBLAS::cublasDtrsv failed.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-  rhs_.CopyToCpu(solution, num_cols_);
-  *message = "Success";
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-std::unique_ptr<CUDADenseQR> CUDADenseQR::Create(
-    const LinearSolver::Options& options) {
-  if (options.dense_linear_algebra_library_type != CUDA ||
-      options.context == nullptr || !options.context->IsCudaInitialized()) {
-    return nullptr;
-  }
-  return std::unique_ptr<CUDADenseQR>(new CUDADenseQR(options.context));
-}
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_qr.h b/third_party/ceres/internal/ceres/dense_qr.h
deleted file mode 100644
index 0ba17c4..0000000
--- a/third_party/ceres/internal/ceres/dense_qr.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_DENSE_QR_H_
-#define CERES_INTERNAL_DENSE_QR_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <memory>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "glog/logging.h"
-
-#ifndef CERES_NO_CUDA
-#include "ceres/context_impl.h"
-#include "ceres/cuda_buffer.h"
-#include "cublas_v2.h"
-#include "cuda_runtime.h"
-#include "cusolverDn.h"
-#endif  // CERES_NO_CUDA
-
-namespace ceres::internal {
-
-// An interface that abstracts away the internal details of various dense linear
-// algebra libraries and offers a simple API for solving dense linear systems
-// using a QR factorization.
-class CERES_NO_EXPORT DenseQR {
- public:
-  static std::unique_ptr<DenseQR> Create(const LinearSolver::Options& options);
-
-  virtual ~DenseQR();
-
-  // Computes the QR factorization of the given matrix.
-  //
-  // The input matrix lhs is assumed to be a column-major num_rows x num_cols
-  // matrix.
-  //
-  // The input matrix lhs may be modified by the implementation to store the
-  // factorization, irrespective of whether the factorization succeeds or not.
-  // As a result it is the user's responsibility to ensure that lhs is valid
-  // when Solve is called.
-  virtual LinearSolverTerminationType Factorize(int num_rows,
-                                                int num_cols,
-                                                double* lhs,
-                                                std::string* message) = 0;
-
-  // Computes the solution to the equation
-  //
-  // lhs * solution = rhs
-  //
-  // Calling Solve without calling Factorize is undefined behaviour. It is the
-  // user's responsibility to ensure that the input matrix lhs passed to
-  // Factorize has not been freed/modified when Solve is called.
-  virtual LinearSolverTerminationType Solve(const double* rhs,
-                                            double* solution,
-                                            std::string* message) = 0;
-
-  // Convenience method which combines a call to Factorize and Solve. Solve is
-  // only called if Factorize returns LinearSolverTerminationType::SUCCESS.
-  //
-  // The input matrix lhs may be modified by the implementation to store the
-  // factorization, irrespective of whether the method succeeds or not. It is
-  // the user's responsibility to ensure that lhs is valid if and when Solve is
-  // called again after this call.
-  LinearSolverTerminationType FactorAndSolve(int num_rows,
-                                             int num_cols,
-                                             double* lhs,
-                                             const double* rhs,
-                                             double* solution,
-                                             std::string* message);
-};
-
-class CERES_NO_EXPORT EigenDenseQR final : public DenseQR {
- public:
-  LinearSolverTerminationType Factorize(int num_rows,
-                                        int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  using QRType = Eigen::HouseholderQR<Eigen::Ref<ColMajorMatrix>>;
-  std::unique_ptr<QRType> qr_;
-};
-
-#ifndef CERES_NO_LAPACK
-class CERES_NO_EXPORT LAPACKDenseQR final : public DenseQR {
- public:
-  LinearSolverTerminationType Factorize(int num_rows,
-                                        int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  double* lhs_ = nullptr;
-  int num_rows_;
-  int num_cols_;
-  LinearSolverTerminationType termination_type_ =
-      LinearSolverTerminationType::FATAL_ERROR;
-  Vector work_;
-  Vector tau_;
-  Vector q_transpose_rhs_;
-};
-#endif  // CERES_NO_LAPACK
-
-#ifndef CERES_NO_CUDA
-// Implementation of DenseQR using the 32-bit cuSolverDn interface. A
-// requirement for using this solver is that the lhs must not be rank deficient.
-// This is because cuSolverDn does not implement the singularity-checking
-// wrapper trtrs, hence this solver directly uses trsv from CUBLAS for the
-// backsubstitution.
-class CERES_NO_EXPORT CUDADenseQR final : public DenseQR {
- public:
-  static std::unique_ptr<CUDADenseQR> Create(
-      const LinearSolver::Options& options);
-  CUDADenseQR(const CUDADenseQR&) = delete;
-  CUDADenseQR& operator=(const CUDADenseQR&) = delete;
-  LinearSolverTerminationType Factorize(int num_rows,
-                                        int num_cols,
-                                        double* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  explicit CUDADenseQR(ContextImpl* context);
-
-  ContextImpl* context_ = nullptr;
-  // Number of rowns in the A matrix, to be cached between calls to *Factorize
-  // and *Solve.
-  size_t num_rows_ = 0;
-  // Number of columns in the A matrix, to be cached between calls to *Factorize
-  // and *Solve.
-  size_t num_cols_ = 0;
-  // GPU memory allocated for the A matrix (lhs matrix).
-  CudaBuffer<double> lhs_;
-  // GPU memory allocated for the B matrix (rhs vector).
-  CudaBuffer<double> rhs_;
-  // GPU memory allocated for the TAU matrix (scaling of householder vectors).
-  CudaBuffer<double> tau_;
-  // Scratch space for cuSOLVER on the GPU.
-  CudaBuffer<double> device_workspace_;
-  // Required for error handling with cuSOLVER.
-  CudaBuffer<int> error_;
-  // Cache the result of Factorize to ensure that when Solve is called, the
-  // factiorization of lhs is valid.
-  LinearSolverTerminationType factorize_result_ =
-      LinearSolverTerminationType::FATAL_ERROR;
-};
-
-#endif  // CERES_NO_CUDA
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DENSE_QR_H_
diff --git a/third_party/ceres/internal/ceres/dense_qr_solver.cc b/third_party/ceres/internal/ceres/dense_qr_solver.cc
deleted file mode 100644
index 92652b4..0000000
--- a/third_party/ceres/internal/ceres/dense_qr_solver.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dense_qr_solver.h"
-
-#include <cstddef>
-
-#include "Eigen/Dense"
-#include "ceres/dense_qr.h"
-#include "ceres/dense_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-
-DenseQRSolver::DenseQRSolver(const LinearSolver::Options& options)
-    : options_(options), dense_qr_(DenseQR::Create(options)) {}
-
-LinearSolver::Summary DenseQRSolver::SolveImpl(
-    DenseSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("DenseQRSolver::Solve");
-
-  const int num_rows = A->num_rows();
-  const int num_cols = A->num_cols();
-  const int num_augmented_rows =
-      num_rows + ((per_solve_options.D != nullptr) ? num_cols : 0);
-
-  if (lhs_.rows() != num_augmented_rows || lhs_.cols() != num_cols) {
-    lhs_.resize(num_augmented_rows, num_cols);
-    rhs_.resize(num_augmented_rows);
-  }
-
-  lhs_.topRows(num_rows) = A->matrix();
-  rhs_.head(num_rows) = ConstVectorRef(b, num_rows);
-
-  if (num_rows != num_augmented_rows) {
-    lhs_.bottomRows(num_cols) =
-        ConstVectorRef(per_solve_options.D, num_cols).asDiagonal();
-    rhs_.tail(num_cols).setZero();
-  }
-
-  LinearSolver::Summary summary;
-  summary.termination_type = dense_qr_->FactorAndSolve(
-      lhs_.rows(), lhs_.cols(), lhs_.data(), rhs_.data(), x, &summary.message);
-  summary.num_iterations = 1;
-  event_logger.AddEvent("Solve");
-
-  return summary;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_qr_solver.h b/third_party/ceres/internal/ceres/dense_qr_solver.h
deleted file mode 100644
index 12db52f..0000000
--- a/third_party/ceres/internal/ceres/dense_qr_solver.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Solve dense rectangular systems Ax = b using the QR factorization.
-#ifndef CERES_INTERNAL_DENSE_QR_SOLVER_H_
-#define CERES_INTERNAL_DENSE_QR_SOLVER_H_
-
-#include <memory>
-
-#include "ceres/dense_qr.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-class DenseSparseMatrix;
-
-// This class implements the LinearSolver interface for solving
-// rectangular/unsymmetric (well constrained) linear systems of the
-// form
-//
-//   Ax = b
-//
-// Since there does not usually exist a solution that satisfies these
-// equations, the solver instead solves the linear least squares
-// problem
-//
-//   min_x |Ax - b|^2
-//
-// The solution strategy is based on computing the QR decomposition of
-// A, i.e.
-//
-//   A = QR
-//
-// Where Q is an orthonormal matrix and R is an upper triangular
-// matrix. Then
-//
-//     Ax = b
-//    QRx = b
-//  Q'QRx = Q'b
-//     Rx = Q'b
-//      x = R^{-1} Q'b
-//
-// If the PerSolveOptions struct has a non-null array D, then the
-// augmented/regularized linear system
-//
-//   [    A    ]x = [b]
-//   [ diag(D) ]    [0]
-//
-// is solved.
-//
-// This class uses the dense QR factorization routines from the Eigen
-// library. This solver always returns a solution, it is the user's
-// responsibility to judge if the solution is good enough for their
-// purposes.
-class CERES_NO_EXPORT DenseQRSolver final : public DenseSparseMatrixSolver {
- public:
-  explicit DenseQRSolver(const LinearSolver::Options& options);
-
- private:
-  LinearSolver::Summary SolveImpl(
-      DenseSparseMatrix* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x) final;
-
-  LinearSolver::Summary SolveUsingEigen(
-      DenseSparseMatrix* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x);
-
-  LinearSolver::Summary SolveUsingLAPACK(
-      DenseSparseMatrix* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x);
-
-  const LinearSolver::Options options_;
-  ColMajorMatrix lhs_;
-  Vector rhs_;
-  std::unique_ptr<DenseQR> dense_qr_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DENSE_QR_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/dense_qr_test.cc b/third_party/ceres/internal/ceres/dense_qr_test.cc
deleted file mode 100644
index 155570c..0000000
--- a/third_party/ceres/internal/ceres/dense_qr_test.cc
+++ /dev/null
@@ -1,130 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dense_qr.h"
-
-#include <memory>
-#include <numeric>
-#include <string>
-#include <tuple>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using Param = DenseLinearAlgebraLibraryType;
-
-namespace {
-
-std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  return DenseLinearAlgebraLibraryTypeToString(info.param);
-}
-
-}  // namespace
-
-class DenseQRTest : public ::testing::TestWithParam<Param> {};
-
-TEST_P(DenseQRTest, FactorAndSolve) {
-  // TODO(sameeragarwal): Convert these tests into type parameterized tests so
-  // that we can test the single and double precision solvers.
-
-  using Scalar = double;
-  using MatrixType = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>;
-  using VectorType = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>;
-
-  LinearSolver::Options options;
-  ContextImpl context;
-#ifndef CERES_NO_CUDA
-  options.context = &context;
-  std::string error;
-  CHECK(context.InitCuda(&error)) << error;
-#endif  // CERES_NO_CUDA
-  options.dense_linear_algebra_library_type = GetParam();
-  const double kEpsilon = std::numeric_limits<double>::epsilon() * 1.5e4;
-  std::unique_ptr<DenseQR> dense_qr = DenseQR::Create(options);
-
-  const int kNumTrials = 10;
-  const int kMinNumCols = 1;
-  const int kMaxNumCols = 10;
-  const int kMinRowsFactor = 1;
-  const int kMaxRowsFactor = 3;
-  for (int num_cols = kMinNumCols; num_cols < kMaxNumCols; ++num_cols) {
-    for (int num_rows = kMinRowsFactor * num_cols;
-         num_rows < kMaxRowsFactor * num_cols;
-         ++num_rows) {
-      for (int trial = 0; trial < kNumTrials; ++trial) {
-        MatrixType lhs = MatrixType::Random(num_rows, num_cols);
-        Vector x = VectorType::Random(num_cols);
-        Vector rhs = lhs * x;
-        Vector actual = Vector::Random(num_cols);
-        LinearSolver::Summary summary;
-        summary.termination_type = dense_qr->FactorAndSolve(num_rows,
-                                                            num_cols,
-                                                            lhs.data(),
-                                                            rhs.data(),
-                                                            actual.data(),
-                                                            &summary.message);
-        ASSERT_EQ(summary.termination_type,
-                  LinearSolverTerminationType::SUCCESS);
-        ASSERT_NEAR((x - actual).norm() / x.norm(), 0.0, kEpsilon)
-            << "\nexpected: " << x.transpose()
-            << "\nactual  : " << actual.transpose();
-      }
-    }
-  }
-}
-
-namespace {
-
-// NOTE: preprocessor directives in a macro are not standard conforming
-decltype(auto) MakeValues() {
-  return ::testing::Values(EIGEN
-#ifndef CERES_NO_LAPACK
-                           ,
-                           LAPACK
-#endif
-#ifndef CERES_NO_CUDA
-                           ,
-                           CUDA
-#endif
-  );
-}
-
-}  // namespace
-
-INSTANTIATE_TEST_SUITE_P(_, DenseQRTest, MakeValues(), ParamInfoToString);
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_sparse_matrix.cc b/third_party/ceres/internal/ceres/dense_sparse_matrix.cc
deleted file mode 100644
index e0c917c..0000000
--- a/third_party/ceres/internal/ceres/dense_sparse_matrix.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/dense_sparse_matrix.h"
-
-#include <algorithm>
-#include <utility>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-DenseSparseMatrix::DenseSparseMatrix(int num_rows, int num_cols)
-    : m_(Matrix(num_rows, num_cols)) {}
-
-DenseSparseMatrix::DenseSparseMatrix(const TripletSparseMatrix& m)
-    : m_(Matrix::Zero(m.num_rows(), m.num_cols())) {
-  const double* values = m.values();
-  const int* rows = m.rows();
-  const int* cols = m.cols();
-  int num_nonzeros = m.num_nonzeros();
-
-  for (int i = 0; i < num_nonzeros; ++i) {
-    m_(rows[i], cols[i]) += values[i];
-  }
-}
-
-DenseSparseMatrix::DenseSparseMatrix(Matrix m) : m_(std::move(m)) {}
-
-void DenseSparseMatrix::SetZero() { m_.setZero(); }
-
-void DenseSparseMatrix::RightMultiplyAndAccumulate(const double* x,
-                                                   double* y) const {
-  VectorRef(y, num_rows()).noalias() += m_ * ConstVectorRef(x, num_cols());
-}
-
-void DenseSparseMatrix::LeftMultiplyAndAccumulate(const double* x,
-                                                  double* y) const {
-  VectorRef(y, num_cols()).noalias() +=
-      m_.transpose() * ConstVectorRef(x, num_rows());
-}
-
-void DenseSparseMatrix::SquaredColumnNorm(double* x) const {
-  // This implementation is 3x faster than the naive version
-  // x = m_.colwise().square().sum(), likely because m_
-  // is a row major matrix.
-
-  const int num_rows = m_.rows();
-  const int num_cols = m_.cols();
-  std::fill_n(x, num_cols, 0.0);
-  const double* m = m_.data();
-  for (int i = 0; i < num_rows; ++i) {
-    for (int j = 0; j < num_cols; ++j, ++m) {
-      x[j] += (*m) * (*m);
-    }
-  }
-}
-
-void DenseSparseMatrix::ScaleColumns(const double* scale) {
-  m_ *= ConstVectorRef(scale, num_cols()).asDiagonal();
-}
-
-void DenseSparseMatrix::ToDenseMatrix(Matrix* dense_matrix) const {
-  *dense_matrix = m_;
-}
-
-int DenseSparseMatrix::num_rows() const { return m_.rows(); }
-
-int DenseSparseMatrix::num_cols() const { return m_.cols(); }
-
-int DenseSparseMatrix::num_nonzeros() const { return m_.rows() * m_.cols(); }
-
-const Matrix& DenseSparseMatrix::matrix() const { return m_; }
-
-Matrix* DenseSparseMatrix::mutable_matrix() { return &m_; }
-
-void DenseSparseMatrix::ToTextFile(FILE* file) const {
-  CHECK(file != nullptr);
-  for (int r = 0; r < m_.rows(); ++r) {
-    for (int c = 0; c < m_.cols(); ++c) {
-      fprintf(file, "% 10d % 10d %17f\n", r, c, m_(r, c));
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dense_sparse_matrix.h b/third_party/ceres/internal/ceres/dense_sparse_matrix.h
deleted file mode 100644
index dc066d5..0000000
--- a/third_party/ceres/internal/ceres/dense_sparse_matrix.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A dense matrix implemented under the SparseMatrix interface.
-
-#ifndef CERES_INTERNAL_DENSE_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_DENSE_SPARSE_MATRIX_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class TripletSparseMatrix;
-
-class CERES_NO_EXPORT DenseSparseMatrix final : public SparseMatrix {
- public:
-  // Build a matrix with the same content as the TripletSparseMatrix
-  // m. This assumes that m does not have any repeated entries.
-  explicit DenseSparseMatrix(const TripletSparseMatrix& m);
-  explicit DenseSparseMatrix(Matrix m);
-  DenseSparseMatrix(int num_rows, int num_cols);
-
-  // SparseMatrix interface.
-  void SetZero() final;
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final;
-  void SquaredColumnNorm(double* x) const final;
-  void ScaleColumns(const double* scale) final;
-  void ToDenseMatrix(Matrix* dense_matrix) const final;
-  void ToTextFile(FILE* file) const final;
-  int num_rows() const final;
-  int num_cols() const final;
-  int num_nonzeros() const final;
-  const double* values() const final { return m_.data(); }
-  double* mutable_values() final { return m_.data(); }
-
-  const Matrix& matrix() const;
-  Matrix* mutable_matrix();
-
- private:
-  Matrix m_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DENSE_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/dense_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/dense_sparse_matrix_test.cc
deleted file mode 100644
index 0e50b62..0000000
--- a/third_party/ceres/internal/ceres/dense_sparse_matrix_test.cc
+++ /dev/null
@@ -1,168 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// TODO(keir): Implement a generic "compare sparse matrix implementations" test
-// suite that can compare all the implementations. Then this file would shrink
-// in size.
-
-#include "ceres/dense_sparse_matrix.h"
-
-#include <memory>
-
-#include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-static void CompareMatrices(const SparseMatrix* a, const SparseMatrix* b) {
-  EXPECT_EQ(a->num_rows(), b->num_rows());
-  EXPECT_EQ(a->num_cols(), b->num_cols());
-
-  int num_rows = a->num_rows();
-  int num_cols = a->num_cols();
-
-  for (int i = 0; i < num_cols; ++i) {
-    Vector x = Vector::Zero(num_cols);
-    x(i) = 1.0;
-
-    Vector y_a = Vector::Zero(num_rows);
-    Vector y_b = Vector::Zero(num_rows);
-
-    a->RightMultiplyAndAccumulate(x.data(), y_a.data());
-    b->RightMultiplyAndAccumulate(x.data(), y_b.data());
-
-    EXPECT_EQ((y_a - y_b).norm(), 0);
-  }
-}
-
-class DenseSparseMatrixTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(1);
-
-    CHECK(problem != nullptr);
-
-    tsm.reset(down_cast<TripletSparseMatrix*>(problem->A.release()));
-    dsm = std::make_unique<DenseSparseMatrix>(*tsm);
-
-    num_rows = tsm->num_rows();
-    num_cols = tsm->num_cols();
-  }
-
-  int num_rows;
-  int num_cols;
-
-  std::unique_ptr<TripletSparseMatrix> tsm;
-  std::unique_ptr<DenseSparseMatrix> dsm;
-};
-
-TEST_F(DenseSparseMatrixTest, RightMultiplyAndAccumulate) {
-  CompareMatrices(tsm.get(), dsm.get());
-
-  // Try with a not entirely zero vector to verify column interactions, which
-  // could be masked by a subtle bug when using the elementary vectors.
-  Vector a(num_cols);
-  for (int i = 0; i < num_cols; i++) {
-    a(i) = i;
-  }
-  Vector b1 = Vector::Zero(num_rows);
-  Vector b2 = Vector::Zero(num_rows);
-
-  tsm->RightMultiplyAndAccumulate(a.data(), b1.data());
-  dsm->RightMultiplyAndAccumulate(a.data(), b2.data());
-
-  EXPECT_EQ((b1 - b2).norm(), 0);
-}
-
-TEST_F(DenseSparseMatrixTest, LeftMultiplyAndAccumulate) {
-  for (int i = 0; i < num_rows; ++i) {
-    Vector a = Vector::Zero(num_rows);
-    a(i) = 1.0;
-
-    Vector b1 = Vector::Zero(num_cols);
-    Vector b2 = Vector::Zero(num_cols);
-
-    tsm->LeftMultiplyAndAccumulate(a.data(), b1.data());
-    dsm->LeftMultiplyAndAccumulate(a.data(), b2.data());
-
-    EXPECT_EQ((b1 - b2).norm(), 0);
-  }
-
-  // Try with a not entirely zero vector to verify column interactions, which
-  // could be masked by a subtle bug when using the elementary vectors.
-  Vector a(num_rows);
-  for (int i = 0; i < num_rows; i++) {
-    a(i) = i;
-  }
-  Vector b1 = Vector::Zero(num_cols);
-  Vector b2 = Vector::Zero(num_cols);
-
-  tsm->LeftMultiplyAndAccumulate(a.data(), b1.data());
-  dsm->LeftMultiplyAndAccumulate(a.data(), b2.data());
-
-  EXPECT_EQ((b1 - b2).norm(), 0);
-}
-
-TEST_F(DenseSparseMatrixTest, ColumnNorm) {
-  Vector b1 = Vector::Zero(num_cols);
-  Vector b2 = Vector::Zero(num_cols);
-
-  tsm->SquaredColumnNorm(b1.data());
-  dsm->SquaredColumnNorm(b2.data());
-
-  EXPECT_EQ((b1 - b2).norm(), 0);
-}
-
-TEST_F(DenseSparseMatrixTest, Scale) {
-  Vector scale(num_cols);
-  for (int i = 0; i < num_cols; ++i) {
-    scale(i) = i + 1;
-  }
-  tsm->ScaleColumns(scale.data());
-  dsm->ScaleColumns(scale.data());
-  CompareMatrices(tsm.get(), dsm.get());
-}
-
-TEST_F(DenseSparseMatrixTest, ToDenseMatrix) {
-  Matrix tsm_dense;
-  Matrix dsm_dense;
-
-  tsm->ToDenseMatrix(&tsm_dense);
-  dsm->ToDenseMatrix(&dsm_dense);
-
-  EXPECT_EQ((tsm_dense - dsm_dense).norm(), 0.0);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/detect_structure.cc b/third_party/ceres/internal/ceres/detect_structure.cc
deleted file mode 100644
index e82d70f..0000000
--- a/third_party/ceres/internal/ceres/detect_structure.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/detect_structure.h"
-
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-void DetectStructure(const CompressedRowBlockStructure& bs,
-                     const int num_eliminate_blocks,
-                     int* row_block_size,
-                     int* e_block_size,
-                     int* f_block_size) {
-  const int num_row_blocks = bs.rows.size();
-  *row_block_size = 0;
-  *e_block_size = 0;
-  *f_block_size = 0;
-
-  // Iterate over row blocks of the matrix, checking if row_block,
-  // e_block or f_block sizes remain constant.
-  for (int r = 0; r < num_row_blocks; ++r) {
-    const CompressedRow& row = bs.rows[r];
-    // We do not care about the sizes of the blocks in rows which do
-    // not contain e_blocks.
-    if (row.cells.front().block_id >= num_eliminate_blocks) {
-      break;
-    }
-
-    // Detect fixed or dynamic row block size.
-    if (*row_block_size == 0) {
-      *row_block_size = row.block.size;
-    } else if (*row_block_size != Eigen::Dynamic &&
-               *row_block_size != row.block.size) {
-      VLOG(2) << "Dynamic row block size because the block size changed from "
-              << *row_block_size << " to " << row.block.size;
-      *row_block_size = Eigen::Dynamic;
-    }
-
-    // Detect fixed or dynamic e-block size.
-    const int e_block_id = row.cells.front().block_id;
-    if (*e_block_size == 0) {
-      *e_block_size = bs.cols[e_block_id].size;
-    } else if (*e_block_size != Eigen::Dynamic &&
-               *e_block_size != bs.cols[e_block_id].size) {
-      VLOG(2) << "Dynamic e block size because the block size changed from "
-              << *e_block_size << " to " << bs.cols[e_block_id].size;
-      *e_block_size = Eigen::Dynamic;
-    }
-
-    // Detect fixed or dynamic f-block size. We are only interested in
-    // rows with e-blocks, and the e-block is always the first block,
-    // so only rows of size greater than 1 are of interest.
-    if (row.cells.size() > 1) {
-      if (*f_block_size == 0) {
-        const int f_block_id = row.cells[1].block_id;
-        *f_block_size = bs.cols[f_block_id].size;
-      }
-
-      for (int c = 1;
-           (c < row.cells.size()) && (*f_block_size != Eigen::Dynamic);
-           ++c) {
-        const int f_block_id = row.cells[c].block_id;
-        if (*f_block_size != bs.cols[f_block_id].size) {
-          VLOG(2) << "Dynamic f block size because the block size "
-                  << "changed from " << *f_block_size << " to "
-                  << bs.cols[f_block_id].size;
-          *f_block_size = Eigen::Dynamic;
-        }
-      }
-    }
-
-    // clang-format off
-    const bool is_everything_dynamic = (*row_block_size == Eigen::Dynamic &&
-                                        *e_block_size == Eigen::Dynamic &&
-                                        *f_block_size == Eigen::Dynamic);
-    // clang-format on
-    if (is_everything_dynamic) {
-      break;
-    }
-  }
-
-  CHECK_NE(*row_block_size, 0) << "No rows found";
-  CHECK_NE(*e_block_size, 0) << "No e type blocks found";
-  // clang-format off
-  VLOG(1) << "Schur complement static structure <"
-          << *row_block_size << ","
-          << *e_block_size << ","
-          << *f_block_size << ">.";
-  // clang-format on
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/detect_structure.h b/third_party/ceres/internal/ceres/detect_structure.h
deleted file mode 100644
index 3237d10..0000000
--- a/third_party/ceres/internal/ceres/detect_structure.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_DETECT_STRUCTURE_H_
-#define CERES_INTERNAL_DETECT_STRUCTURE_H_
-
-#include "ceres/block_structure.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Detect static blocks in the problem sparsity. For rows containing
-// e_blocks, we are interested in detecting if the size of the row
-// blocks, e_blocks and the f_blocks remain constant. If they do, then
-// we can use template specialization to improve the performance of
-// the block level linear algebra operations used by the
-// SchurEliminator.
-//
-// If a block size is not constant, we return Eigen::Dynamic as the
-// value. This just means that the eliminator uses dynamically sized
-// linear algebra operations rather than static operations whose size
-// is known as compile time.
-//
-// For more details about e_blocks and f_blocks, see
-// schur_eliminator.h. This information is used to initialized an
-// appropriate template specialization of SchurEliminator.
-//
-// Note: The structure of rows without any e-blocks has no effect on
-// the values returned by this function. It is entirely possible that
-// the f_block_size and row_blocks_size is not constant in such rows.
-void CERES_NO_EXPORT DetectStructure(const CompressedRowBlockStructure& bs,
-                                     const int num_eliminate_blocks,
-                                     int* row_block_size,
-                                     int* e_block_size,
-                                     int* f_block_size);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DETECT_STRUCTURE_H_
diff --git a/third_party/ceres/internal/ceres/detect_structure_test.cc b/third_party/ceres/internal/ceres/detect_structure_test.cc
deleted file mode 100644
index e4e3f1d..0000000
--- a/third_party/ceres/internal/ceres/detect_structure_test.cc
+++ /dev/null
@@ -1,279 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/detect_structure.h"
-
-#include "Eigen/Core"
-#include "ceres/block_structure.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-TEST(DetectStructure, EverythingStatic) {
-  const int expected_row_block_size = 2;
-  const int expected_e_block_size = 3;
-  const int expected_f_block_size = 4;
-
-  CompressedRowBlockStructure bs;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 0;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 3;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 7;
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(1, 0);
-  }
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 2;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(2, 0);
-  }
-
-  int row_block_size = 0;
-  int e_block_size = 0;
-  int f_block_size = 0;
-  const int num_eliminate_blocks = 1;
-  DetectStructure(
-      bs, num_eliminate_blocks, &row_block_size, &e_block_size, &f_block_size);
-
-  EXPECT_EQ(row_block_size, expected_row_block_size);
-  EXPECT_EQ(e_block_size, expected_e_block_size);
-  EXPECT_EQ(f_block_size, expected_f_block_size);
-}
-
-TEST(DetectStructure, DynamicRow) {
-  const int expected_row_block_size = Eigen::Dynamic;
-  const int expected_e_block_size = 3;
-  const int expected_f_block_size = 4;
-
-  CompressedRowBlockStructure bs;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 0;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 3;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 7;
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(1, 0);
-  }
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 1;
-    row.block.position = 2;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(2, 0);
-  }
-
-  int row_block_size = 0;
-  int e_block_size = 0;
-  int f_block_size = 0;
-  const int num_eliminate_blocks = 1;
-  DetectStructure(
-      bs, num_eliminate_blocks, &row_block_size, &e_block_size, &f_block_size);
-
-  EXPECT_EQ(row_block_size, expected_row_block_size);
-  EXPECT_EQ(e_block_size, expected_e_block_size);
-  EXPECT_EQ(f_block_size, expected_f_block_size);
-}
-
-TEST(DetectStructure, DynamicFBlockDifferentRows) {
-  const int expected_row_block_size = 2;
-  const int expected_e_block_size = 3;
-  const int expected_f_block_size = Eigen::Dynamic;
-
-  CompressedRowBlockStructure bs;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 0;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 3;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 7;
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(1, 0);
-  }
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 2;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(2, 0);
-  }
-
-  int row_block_size = 0;
-  int e_block_size = 0;
-  int f_block_size = 0;
-  const int num_eliminate_blocks = 1;
-  DetectStructure(
-      bs, num_eliminate_blocks, &row_block_size, &e_block_size, &f_block_size);
-
-  EXPECT_EQ(row_block_size, expected_row_block_size);
-  EXPECT_EQ(e_block_size, expected_e_block_size);
-  EXPECT_EQ(f_block_size, expected_f_block_size);
-}
-
-TEST(DetectStructure, DynamicEBlock) {
-  const int expected_row_block_size = 2;
-  const int expected_e_block_size = Eigen::Dynamic;
-  const int expected_f_block_size = 3;
-
-  CompressedRowBlockStructure bs;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 0;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 3;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 7;
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(2, 0);
-  }
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 2;
-    row.cells.emplace_back(1, 0);
-    row.cells.emplace_back(2, 0);
-  }
-
-  int row_block_size = 0;
-  int e_block_size = 0;
-  int f_block_size = 0;
-  const int num_eliminate_blocks = 2;
-  DetectStructure(
-      bs, num_eliminate_blocks, &row_block_size, &e_block_size, &f_block_size);
-
-  EXPECT_EQ(row_block_size, expected_row_block_size);
-  EXPECT_EQ(e_block_size, expected_e_block_size);
-  EXPECT_EQ(f_block_size, expected_f_block_size);
-}
-
-TEST(DetectStructure, DynamicFBlockSameRow) {
-  const int expected_row_block_size = 2;
-  const int expected_e_block_size = 3;
-  const int expected_f_block_size = Eigen::Dynamic;
-
-  CompressedRowBlockStructure bs;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 0;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 4;
-  bs.cols.back().position = 3;
-
-  bs.cols.emplace_back();
-  bs.cols.back().size = 3;
-  bs.cols.back().position = 7;
-
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(1, 0);
-    row.cells.emplace_back(2, 0);
-  }
-
-  int row_block_size = 0;
-  int e_block_size = 0;
-  int f_block_size = 0;
-  const int num_eliminate_blocks = 1;
-  DetectStructure(
-      bs, num_eliminate_blocks, &row_block_size, &e_block_size, &f_block_size);
-
-  EXPECT_EQ(row_block_size, expected_row_block_size);
-  EXPECT_EQ(e_block_size, expected_e_block_size);
-  EXPECT_EQ(f_block_size, expected_f_block_size);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/dogleg_strategy.cc b/third_party/ceres/internal/ceres/dogleg_strategy.cc
deleted file mode 100644
index 877d8d9..0000000
--- a/third_party/ceres/internal/ceres/dogleg_strategy.cc
+++ /dev/null
@@ -1,718 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dogleg_strategy.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "Eigen/Dense"
-#include "ceres/array_utils.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/polynomial.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/trust_region_strategy.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-namespace {
-const double kMaxMu = 1.0;
-const double kMinMu = 1e-8;
-}  // namespace
-
-DoglegStrategy::DoglegStrategy(const TrustRegionStrategy::Options& options)
-    : linear_solver_(options.linear_solver),
-      radius_(options.initial_radius),
-      max_radius_(options.max_radius),
-      min_diagonal_(options.min_lm_diagonal),
-      max_diagonal_(options.max_lm_diagonal),
-      mu_(kMinMu),
-      min_mu_(kMinMu),
-      max_mu_(kMaxMu),
-      mu_increase_factor_(10.0),
-      increase_threshold_(0.75),
-      decrease_threshold_(0.25),
-      dogleg_step_norm_(0.0),
-      reuse_(false),
-      dogleg_type_(options.dogleg_type) {
-  CHECK(linear_solver_ != nullptr);
-  CHECK_GT(min_diagonal_, 0.0);
-  CHECK_LE(min_diagonal_, max_diagonal_);
-  CHECK_GT(max_radius_, 0.0);
-}
-
-// If the reuse_ flag is not set, then the Cauchy point (scaled
-// gradient) and the new Gauss-Newton step are computed from
-// scratch. The Dogleg step is then computed as interpolation of these
-// two vectors.
-TrustRegionStrategy::Summary DoglegStrategy::ComputeStep(
-    const TrustRegionStrategy::PerSolveOptions& per_solve_options,
-    SparseMatrix* jacobian,
-    const double* residuals,
-    double* step) {
-  CHECK(jacobian != nullptr);
-  CHECK(residuals != nullptr);
-  CHECK(step != nullptr);
-
-  const int n = jacobian->num_cols();
-  if (reuse_) {
-    // Gauss-Newton and gradient vectors are always available, only a
-    // new interpolant need to be computed. For the subspace case,
-    // the subspace and the two-dimensional model are also still valid.
-    switch (dogleg_type_) {
-      case TRADITIONAL_DOGLEG:
-        ComputeTraditionalDoglegStep(step);
-        break;
-
-      case SUBSPACE_DOGLEG:
-        ComputeSubspaceDoglegStep(step);
-        break;
-    }
-    TrustRegionStrategy::Summary summary;
-    summary.num_iterations = 0;
-    summary.termination_type = LinearSolverTerminationType::SUCCESS;
-    return summary;
-  }
-
-  reuse_ = true;
-  // Check that we have the storage needed to hold the various
-  // temporary vectors.
-  if (diagonal_.rows() != n) {
-    diagonal_.resize(n, 1);
-    gradient_.resize(n, 1);
-    gauss_newton_step_.resize(n, 1);
-  }
-
-  // Vector used to form the diagonal matrix that is used to
-  // regularize the Gauss-Newton solve and that defines the
-  // elliptical trust region
-  //
-  //   || D * step || <= radius_ .
-  //
-  jacobian->SquaredColumnNorm(diagonal_.data());
-  for (int i = 0; i < n; ++i) {
-    diagonal_[i] =
-        std::min(std::max(diagonal_[i], min_diagonal_), max_diagonal_);
-  }
-  diagonal_ = diagonal_.array().sqrt();
-
-  ComputeGradient(jacobian, residuals);
-  ComputeCauchyPoint(jacobian);
-
-  LinearSolver::Summary linear_solver_summary =
-      ComputeGaussNewtonStep(per_solve_options, jacobian, residuals);
-
-  TrustRegionStrategy::Summary summary;
-  summary.residual_norm = linear_solver_summary.residual_norm;
-  summary.num_iterations = linear_solver_summary.num_iterations;
-  summary.termination_type = linear_solver_summary.termination_type;
-
-  if (linear_solver_summary.termination_type ==
-      LinearSolverTerminationType::FATAL_ERROR) {
-    return summary;
-  }
-
-  if (linear_solver_summary.termination_type !=
-      LinearSolverTerminationType::FAILURE) {
-    switch (dogleg_type_) {
-      // Interpolate the Cauchy point and the Gauss-Newton step.
-      case TRADITIONAL_DOGLEG:
-        ComputeTraditionalDoglegStep(step);
-        break;
-
-      // Find the minimum in the subspace defined by the
-      // Cauchy point and the (Gauss-)Newton step.
-      case SUBSPACE_DOGLEG:
-        if (!ComputeSubspaceModel(jacobian)) {
-          summary.termination_type = LinearSolverTerminationType::FAILURE;
-          break;
-        }
-        ComputeSubspaceDoglegStep(step);
-        break;
-    }
-  }
-
-  return summary;
-}
-
-// The trust region is assumed to be elliptical with the
-// diagonal scaling matrix D defined by sqrt(diagonal_).
-// It is implemented by substituting step' = D * step.
-// The trust region for step' is spherical.
-// The gradient, the Gauss-Newton step, the Cauchy point,
-// and all calculations involving the Jacobian have to
-// be adjusted accordingly.
-void DoglegStrategy::ComputeGradient(SparseMatrix* jacobian,
-                                     const double* residuals) {
-  gradient_.setZero();
-  jacobian->LeftMultiplyAndAccumulate(residuals, gradient_.data());
-  gradient_.array() /= diagonal_.array();
-}
-
-// The Cauchy point is the global minimizer of the quadratic model
-// along the one-dimensional subspace spanned by the gradient.
-void DoglegStrategy::ComputeCauchyPoint(SparseMatrix* jacobian) {
-  // alpha * -gradient is the Cauchy point.
-  Vector Jg(jacobian->num_rows());
-  Jg.setZero();
-  // The Jacobian is scaled implicitly by computing J * (D^-1 * (D^-1 * g))
-  // instead of (J * D^-1) * (D^-1 * g).
-  Vector scaled_gradient = (gradient_.array() / diagonal_.array()).matrix();
-  jacobian->RightMultiplyAndAccumulate(scaled_gradient.data(), Jg.data());
-  alpha_ = gradient_.squaredNorm() / Jg.squaredNorm();
-}
-
-// The dogleg step is defined as the intersection of the trust region
-// boundary with the piecewise linear path from the origin to the Cauchy
-// point and then from there to the Gauss-Newton point (global minimizer
-// of the model function). The Gauss-Newton point is taken if it lies
-// within the trust region.
-void DoglegStrategy::ComputeTraditionalDoglegStep(double* dogleg) {
-  VectorRef dogleg_step(dogleg, gradient_.rows());
-
-  // Case 1. The Gauss-Newton step lies inside the trust region, and
-  // is therefore the optimal solution to the trust-region problem.
-  const double gradient_norm = gradient_.norm();
-  const double gauss_newton_norm = gauss_newton_step_.norm();
-  if (gauss_newton_norm <= radius_) {
-    dogleg_step = gauss_newton_step_;
-    dogleg_step_norm_ = gauss_newton_norm;
-    dogleg_step.array() /= diagonal_.array();
-    VLOG(3) << "GaussNewton step size: " << dogleg_step_norm_
-            << " radius: " << radius_;
-    return;
-  }
-
-  // Case 2. The Cauchy point and the Gauss-Newton steps lie outside
-  // the trust region. Rescale the Cauchy point to the trust region
-  // and return.
-  if (gradient_norm * alpha_ >= radius_) {
-    dogleg_step = -(radius_ / gradient_norm) * gradient_;
-    dogleg_step_norm_ = radius_;
-    dogleg_step.array() /= diagonal_.array();
-    VLOG(3) << "Cauchy step size: " << dogleg_step_norm_
-            << " radius: " << radius_;
-    return;
-  }
-
-  // Case 3. The Cauchy point is inside the trust region and the
-  // Gauss-Newton step is outside. Compute the line joining the two
-  // points and the point on it which intersects the trust region
-  // boundary.
-
-  // a = alpha * -gradient
-  // b = gauss_newton_step
-  const double b_dot_a = -alpha_ * gradient_.dot(gauss_newton_step_);
-  const double a_squared_norm = pow(alpha_ * gradient_norm, 2.0);
-  const double b_minus_a_squared_norm =
-      a_squared_norm - 2 * b_dot_a + pow(gauss_newton_norm, 2);
-
-  // c = a' (b - a)
-  //   = alpha * -gradient' gauss_newton_step - alpha^2 |gradient|^2
-  const double c = b_dot_a - a_squared_norm;
-  const double d = sqrt(c * c + b_minus_a_squared_norm *
-                                    (pow(radius_, 2.0) - a_squared_norm));
-
-  double beta = (c <= 0) ? (d - c) / b_minus_a_squared_norm
-                         : (radius_ * radius_ - a_squared_norm) / (d + c);
-  dogleg_step =
-      (-alpha_ * (1.0 - beta)) * gradient_ + beta * gauss_newton_step_;
-  dogleg_step_norm_ = dogleg_step.norm();
-  dogleg_step.array() /= diagonal_.array();
-  VLOG(3) << "Dogleg step size: " << dogleg_step_norm_
-          << " radius: " << radius_;
-}
-
-// The subspace method finds the minimum of the two-dimensional problem
-//
-//   min. 1/2 x' B' H B x + g' B x
-//   s.t. || B x ||^2 <= r^2
-//
-// where r is the trust region radius and B is the matrix with unit columns
-// spanning the subspace defined by the steepest descent and Newton direction.
-// This subspace by definition includes the Gauss-Newton point, which is
-// therefore taken if it lies within the trust region.
-void DoglegStrategy::ComputeSubspaceDoglegStep(double* dogleg) {
-  VectorRef dogleg_step(dogleg, gradient_.rows());
-
-  // The Gauss-Newton point is inside the trust region if |GN| <= radius_.
-  // This test is valid even though radius_ is a length in the two-dimensional
-  // subspace while gauss_newton_step_ is expressed in the (scaled)
-  // higher dimensional original space. This is because
-  //
-  //   1. gauss_newton_step_ by definition lies in the subspace, and
-  //   2. the subspace basis is orthonormal.
-  //
-  // As a consequence, the norm of the gauss_newton_step_ in the subspace is
-  // the same as its norm in the original space.
-  const double gauss_newton_norm = gauss_newton_step_.norm();
-  if (gauss_newton_norm <= radius_) {
-    dogleg_step = gauss_newton_step_;
-    dogleg_step_norm_ = gauss_newton_norm;
-    dogleg_step.array() /= diagonal_.array();
-    VLOG(3) << "GaussNewton step size: " << dogleg_step_norm_
-            << " radius: " << radius_;
-    return;
-  }
-
-  // The optimum lies on the boundary of the trust region. The above problem
-  // therefore becomes
-  //
-  //   min. 1/2 x^T B^T H B x + g^T B x
-  //   s.t. || B x ||^2 = r^2
-  //
-  // Notice the equality in the constraint.
-  //
-  // This can be solved by forming the Lagrangian, solving for x(y), where
-  // y is the Lagrange multiplier, using the gradient of the objective, and
-  // putting x(y) back into the constraint. This results in a fourth order
-  // polynomial in y, which can be solved using e.g. the companion matrix.
-  // See the description of MakePolynomialForBoundaryConstrainedProblem for
-  // details. The result is up to four real roots y*, not all of which
-  // correspond to feasible points. The feasible points x(y*) have to be
-  // tested for optimality.
-
-  if (subspace_is_one_dimensional_) {
-    // The subspace is one-dimensional, so both the gradient and
-    // the Gauss-Newton step point towards the same direction.
-    // In this case, we move along the gradient until we reach the trust
-    // region boundary.
-    dogleg_step = -(radius_ / gradient_.norm()) * gradient_;
-    dogleg_step_norm_ = radius_;
-    dogleg_step.array() /= diagonal_.array();
-    VLOG(3) << "Dogleg subspace step size (1D): " << dogleg_step_norm_
-            << " radius: " << radius_;
-    return;
-  }
-
-  Vector2d minimum(0.0, 0.0);
-  if (!FindMinimumOnTrustRegionBoundary(&minimum)) {
-    // For the positive semi-definite case, a traditional dogleg step
-    // is taken in this case.
-    LOG(WARNING) << "Failed to compute polynomial roots. "
-                 << "Taking traditional dogleg step instead.";
-    ComputeTraditionalDoglegStep(dogleg);
-    return;
-  }
-
-  // Test first order optimality at the minimum.
-  // The first order KKT conditions state that the minimum x*
-  // has to satisfy either || x* ||^2 < r^2 (i.e. has to lie within
-  // the trust region), or
-  //
-  //   (B x* + g) + y x* = 0
-  //
-  // for some positive scalar y.
-  // Here, as it is already known that the minimum lies on the boundary, the
-  // latter condition is tested. To allow for small imprecisions, we test if
-  // the angle between (B x* + g) and -x* is smaller than acos(0.99).
-  // The exact value of the cosine is arbitrary but should be close to 1.
-  //
-  // This condition should not be violated. If it is, the minimum was not
-  // correctly determined.
-  const double kCosineThreshold = 0.99;
-  const Vector2d grad_minimum = subspace_B_ * minimum + subspace_g_;
-  const double cosine_angle =
-      -minimum.dot(grad_minimum) / (minimum.norm() * grad_minimum.norm());
-  if (cosine_angle < kCosineThreshold) {
-    LOG(WARNING) << "First order optimality seems to be violated "
-                 << "in the subspace method!\n"
-                 << "Cosine of angle between x and B x + g is " << cosine_angle
-                 << ".\n"
-                 << "Taking a regular dogleg step instead.\n"
-                 << "Please consider filing a bug report if this "
-                 << "happens frequently or consistently.\n";
-    ComputeTraditionalDoglegStep(dogleg);
-    return;
-  }
-
-  // Create the full step from the optimal 2d solution.
-  dogleg_step = subspace_basis_ * minimum;
-  dogleg_step_norm_ = radius_;
-  dogleg_step.array() /= diagonal_.array();
-  VLOG(3) << "Dogleg subspace step size: " << dogleg_step_norm_
-          << " radius: " << radius_;
-}
-
-// Build the polynomial that defines the optimal Lagrange multipliers.
-// Let the Lagrangian be
-//
-//   L(x, y) = 0.5 x^T B x + x^T g + y (0.5 x^T x - 0.5 r^2).       (1)
-//
-// Stationary points of the Lagrangian are given by
-//
-//   0 = d L(x, y) / dx = Bx + g + y x                              (2)
-//   0 = d L(x, y) / dy = 0.5 x^T x - 0.5 r^2                       (3)
-//
-// For any given y, we can solve (2) for x as
-//
-//   x(y) = -(B + y I)^-1 g .                                       (4)
-//
-// As B + y I is 2x2, we form the inverse explicitly:
-//
-//   (B + y I)^-1 = (1 / det(B + y I)) adj(B + y I)                 (5)
-//
-// where adj() denotes adjugation. This should be safe, as B is positive
-// semi-definite and y is necessarily positive, so (B + y I) is indeed
-// invertible.
-// Plugging (5) into (4) and the result into (3), then dividing by 0.5 we
-// obtain
-//
-//   0 = (1 / det(B + y I))^2 g^T adj(B + y I)^T adj(B + y I) g - r^2
-//                                                                  (6)
-//
-// or
-//
-//   det(B + y I)^2 r^2 = g^T adj(B + y I)^T adj(B + y I) g         (7a)
-//                      = g^T adj(B)^T adj(B) g
-//                           + 2 y g^T adj(B)^T g + y^2 g^T g       (7b)
-//
-// as
-//
-//   adj(B + y I) = adj(B) + y I = adj(B)^T + y I .                 (8)
-//
-// The left hand side can be expressed explicitly using
-//
-//   det(B + y I) = det(B) + y tr(B) + y^2 .                        (9)
-//
-// So (7) is a polynomial in y of degree four.
-// Bringing everything back to the left hand side, the coefficients can
-// be read off as
-//
-//     y^4  r^2
-//   + y^3  2 r^2 tr(B)
-//   + y^2 (r^2 tr(B)^2 + 2 r^2 det(B) - g^T g)
-//   + y^1 (2 r^2 det(B) tr(B) - 2 g^T adj(B)^T g)
-//   + y^0 (r^2 det(B)^2 - g^T adj(B)^T adj(B) g)
-//
-Vector DoglegStrategy::MakePolynomialForBoundaryConstrainedProblem() const {
-  const double detB = subspace_B_.determinant();
-  const double trB = subspace_B_.trace();
-  const double r2 = radius_ * radius_;
-  Matrix2d B_adj;
-  // clang-format off
-  B_adj <<  subspace_B_(1, 1) , -subspace_B_(0, 1),
-           -subspace_B_(1, 0) ,  subspace_B_(0, 0);
-  // clang-format on
-
-  Vector polynomial(5);
-  polynomial(0) = r2;
-  polynomial(1) = 2.0 * r2 * trB;
-  polynomial(2) = r2 * (trB * trB + 2.0 * detB) - subspace_g_.squaredNorm();
-  polynomial(3) =
-      -2.0 * (subspace_g_.transpose() * B_adj * subspace_g_ - r2 * detB * trB);
-  polynomial(4) = r2 * detB * detB - (B_adj * subspace_g_).squaredNorm();
-
-  return polynomial;
-}
-
-// Given a Lagrange multiplier y that corresponds to a stationary point
-// of the Lagrangian L(x, y), compute the corresponding x from the
-// equation
-//
-//   0 = d L(x, y) / dx
-//     = B * x + g + y * x
-//     = (B + y * I) * x + g
-//
-DoglegStrategy::Vector2d DoglegStrategy::ComputeSubspaceStepFromRoot(
-    double y) const {
-  const Matrix2d B_i = subspace_B_ + y * Matrix2d::Identity();
-  return -B_i.partialPivLu().solve(subspace_g_);
-}
-
-// This function evaluates the quadratic model at a point x in the
-// subspace spanned by subspace_basis_.
-double DoglegStrategy::EvaluateSubspaceModel(const Vector2d& x) const {
-  return 0.5 * x.dot(subspace_B_ * x) + subspace_g_.dot(x);
-}
-
-// This function attempts to solve the boundary-constrained subspace problem
-//
-//   min. 1/2 x^T B^T H B x + g^T B x
-//   s.t. || B x ||^2 = r^2
-//
-// where B is an orthonormal subspace basis and r is the trust-region radius.
-//
-// This is done by finding the roots of a fourth degree polynomial. If the
-// root finding fails, the function returns false and minimum will be set
-// to (0, 0). If it succeeds, true is returned.
-//
-// In the failure case, another step should be taken, such as the traditional
-// dogleg step.
-bool DoglegStrategy::FindMinimumOnTrustRegionBoundary(Vector2d* minimum) const {
-  CHECK(minimum != nullptr);
-
-  // Return (0, 0) in all error cases.
-  minimum->setZero();
-
-  // Create the fourth-degree polynomial that is a necessary condition for
-  // optimality.
-  const Vector polynomial = MakePolynomialForBoundaryConstrainedProblem();
-
-  // Find the real parts y_i of its roots (not only the real roots).
-  Vector roots_real;
-  if (!FindPolynomialRoots(polynomial, &roots_real, nullptr)) {
-    // Failed to find the roots of the polynomial, i.e. the candidate
-    // solutions of the constrained problem. Report this back to the caller.
-    return false;
-  }
-
-  // For each root y, compute B x(y) and check for feasibility.
-  // Notice that there should always be four roots, as the leading term of
-  // the polynomial is r^2 and therefore non-zero. However, as some roots
-  // may be complex, the real parts are not necessarily unique.
-  double minimum_value = std::numeric_limits<double>::max();
-  bool valid_root_found = false;
-  for (int i = 0; i < roots_real.size(); ++i) {
-    const Vector2d x_i = ComputeSubspaceStepFromRoot(roots_real(i));
-
-    // Not all roots correspond to points on the trust region boundary.
-    // There are at most four candidate solutions. As we are interested
-    // in the minimum, it is safe to consider all of them after projecting
-    // them onto the trust region boundary.
-    if (x_i.norm() > 0) {
-      const double f_i = EvaluateSubspaceModel((radius_ / x_i.norm()) * x_i);
-      valid_root_found = true;
-      if (f_i < minimum_value) {
-        minimum_value = f_i;
-        *minimum = x_i;
-      }
-    }
-  }
-
-  return valid_root_found;
-}
-
-LinearSolver::Summary DoglegStrategy::ComputeGaussNewtonStep(
-    const PerSolveOptions& per_solve_options,
-    SparseMatrix* jacobian,
-    const double* residuals) {
-  const int n = jacobian->num_cols();
-  LinearSolver::Summary linear_solver_summary;
-  linear_solver_summary.termination_type = LinearSolverTerminationType::FAILURE;
-
-  // The Jacobian matrix is often quite poorly conditioned. Thus it is
-  // necessary to add a diagonal matrix at the bottom to prevent the
-  // linear solver from failing.
-  //
-  // We do this by computing the same diagonal matrix as the one used
-  // by Levenberg-Marquardt (other choices are possible), and scaling
-  // it by a small constant (independent of the trust region radius).
-  //
-  // If the solve fails, the multiplier to the diagonal is increased
-  // up to max_mu_ by a factor of mu_increase_factor_ every time. If
-  // the linear solver is still not successful, the strategy returns
-  // with LinearSolverTerminationType::FAILURE.
-  //
-  // Next time when a new Gauss-Newton step is requested, the
-  // multiplier starts out from the last successful solve.
-  //
-  // When a step is declared successful, the multiplier is decreased
-  // by half of mu_increase_factor_.
-
-  while (mu_ < max_mu_) {
-    // Dogleg, as far as I (sameeragarwal) understand it, requires a
-    // reasonably good estimate of the Gauss-Newton step. This means
-    // that we need to solve the normal equations more or less
-    // exactly. This is reflected in the values of the tolerances set
-    // below.
-    //
-    // For now, this strategy should only be used with exact
-    // factorization based solvers, for which these tolerances are
-    // automatically satisfied.
-    //
-    // The right way to combine inexact solves with trust region
-    // methods is to use Stiehaug's method.
-    LinearSolver::PerSolveOptions solve_options;
-    solve_options.q_tolerance = 0.0;
-    solve_options.r_tolerance = 0.0;
-
-    lm_diagonal_ = diagonal_ * std::sqrt(mu_);
-    solve_options.D = lm_diagonal_.data();
-
-    // As in the LevenbergMarquardtStrategy, solve Jy = r instead
-    // of Jx = -r and later set x = -y to avoid having to modify
-    // either jacobian or residuals.
-    InvalidateArray(n, gauss_newton_step_.data());
-    linear_solver_summary = linear_solver_->Solve(
-        jacobian, residuals, solve_options, gauss_newton_step_.data());
-
-    if (per_solve_options.dump_format_type == CONSOLE ||
-        (per_solve_options.dump_format_type != CONSOLE &&
-         !per_solve_options.dump_filename_base.empty())) {
-      if (!DumpLinearLeastSquaresProblem(per_solve_options.dump_filename_base,
-                                         per_solve_options.dump_format_type,
-                                         jacobian,
-                                         solve_options.D,
-                                         residuals,
-                                         gauss_newton_step_.data(),
-                                         0)) {
-        LOG(ERROR) << "Unable to dump trust region problem."
-                   << " Filename base: "
-                   << per_solve_options.dump_filename_base;
-      }
-    }
-
-    if (linear_solver_summary.termination_type ==
-        LinearSolverTerminationType::FATAL_ERROR) {
-      return linear_solver_summary;
-    }
-
-    if (linear_solver_summary.termination_type ==
-            LinearSolverTerminationType::FAILURE ||
-        !IsArrayValid(n, gauss_newton_step_.data())) {
-      mu_ *= mu_increase_factor_;
-      VLOG(2) << "Increasing mu " << mu_;
-      linear_solver_summary.termination_type =
-          LinearSolverTerminationType::FAILURE;
-      continue;
-    }
-    break;
-  }
-
-  if (linear_solver_summary.termination_type !=
-      LinearSolverTerminationType::FAILURE) {
-    // The scaled Gauss-Newton step is D * GN:
-    //
-    //     - (D^-1 J^T J D^-1)^-1 (D^-1 g)
-    //   = - D (J^T J)^-1 D D^-1 g
-    //   = D -(J^T J)^-1 g
-    //
-    gauss_newton_step_.array() *= -diagonal_.array();
-  }
-
-  return linear_solver_summary;
-}
-
-void DoglegStrategy::StepAccepted(double step_quality) {
-  CHECK_GT(step_quality, 0.0);
-
-  if (step_quality < decrease_threshold_) {
-    radius_ *= 0.5;
-  }
-
-  if (step_quality > increase_threshold_) {
-    radius_ = std::max(radius_, 3.0 * dogleg_step_norm_);
-  }
-
-  // Reduce the regularization multiplier, in the hope that whatever
-  // was causing the rank deficiency has gone away and we can return
-  // to doing a pure Gauss-Newton solve.
-  mu_ = std::max(min_mu_, 2.0 * mu_ / mu_increase_factor_);
-  reuse_ = false;
-}
-
-void DoglegStrategy::StepRejected(double /*step_quality*/) {
-  radius_ *= 0.5;
-  reuse_ = true;
-}
-
-void DoglegStrategy::StepIsInvalid() {
-  mu_ *= mu_increase_factor_;
-  reuse_ = false;
-}
-
-double DoglegStrategy::Radius() const { return radius_; }
-
-bool DoglegStrategy::ComputeSubspaceModel(SparseMatrix* jacobian) {
-  // Compute an orthogonal basis for the subspace using QR decomposition.
-  Matrix basis_vectors(jacobian->num_cols(), 2);
-  basis_vectors.col(0) = gradient_;
-  basis_vectors.col(1) = gauss_newton_step_;
-  Eigen::ColPivHouseholderQR<Matrix> basis_qr(basis_vectors);
-
-  switch (basis_qr.rank()) {
-    case 0:
-      // This should never happen, as it implies that both the gradient
-      // and the Gauss-Newton step are zero. In this case, the minimizer should
-      // have stopped due to the gradient being too small.
-      LOG(ERROR) << "Rank of subspace basis is 0. "
-                 << "This means that the gradient at the current iterate is "
-                 << "zero but the optimization has not been terminated. "
-                 << "You may have found a bug in Ceres.";
-      return false;
-
-    case 1:
-      // Gradient and Gauss-Newton step coincide, so we lie on one of the
-      // major axes of the quadratic problem. In this case, we simply move
-      // along the gradient until we reach the trust region boundary.
-      subspace_is_one_dimensional_ = true;
-      return true;
-
-    case 2:
-      subspace_is_one_dimensional_ = false;
-      break;
-
-    default:
-      LOG(ERROR) << "Rank of the subspace basis matrix is reported to be "
-                 << "greater than 2. As the matrix contains only two "
-                 << "columns this cannot be true and is indicative of "
-                 << "a bug.";
-      return false;
-  }
-
-  // The subspace is two-dimensional, so compute the subspace model.
-  // Given the basis U, this is
-  //
-  //   subspace_g_ = g_scaled^T U
-  //
-  // and
-  //
-  //   subspace_B_ = U^T (J_scaled^T J_scaled) U
-  //
-  // As J_scaled = J * D^-1, the latter becomes
-  //
-  //   subspace_B_ = ((U^T D^-1) J^T) (J (D^-1 U))
-  //               = (J (D^-1 U))^T (J (D^-1 U))
-
-  subspace_basis_ =
-      basis_qr.householderQ() * Matrix::Identity(jacobian->num_cols(), 2);
-
-  subspace_g_ = subspace_basis_.transpose() * gradient_;
-
-  Eigen::Matrix<double, 2, Eigen::Dynamic, Eigen::RowMajor> Jb(
-      2, jacobian->num_rows());
-  Jb.setZero();
-
-  Vector tmp;
-  tmp = (subspace_basis_.col(0).array() / diagonal_.array()).matrix();
-  jacobian->RightMultiplyAndAccumulate(tmp.data(), Jb.row(0).data());
-  tmp = (subspace_basis_.col(1).array() / diagonal_.array()).matrix();
-  jacobian->RightMultiplyAndAccumulate(tmp.data(), Jb.row(1).data());
-
-  subspace_B_ = Jb * Jb.transpose();
-
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dogleg_strategy.h b/third_party/ceres/internal/ceres/dogleg_strategy.h
deleted file mode 100644
index b4d29c9..0000000
--- a/third_party/ceres/internal/ceres/dogleg_strategy.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_DOGLEG_STRATEGY_H_
-#define CERES_INTERNAL_DOGLEG_STRATEGY_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/trust_region_strategy.h"
-
-namespace ceres::internal {
-
-// Dogleg step computation and trust region sizing strategy based on
-// on "Methods for Nonlinear Least Squares" by K. Madsen, H.B. Nielsen
-// and O. Tingleff. Available to download from
-//
-// http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf
-//
-// One minor modification is that instead of computing the pure
-// Gauss-Newton step, we compute a regularized version of it. This is
-// because the Jacobian is often rank-deficient and in such cases
-// using a direct solver leads to numerical failure.
-//
-// If SUBSPACE is passed as the type argument to the constructor, the
-// DoglegStrategy follows the approach by Shultz, Schnabel, Byrd.
-// This finds the exact optimum over the two-dimensional subspace
-// spanned by the two Dogleg vectors.
-class CERES_NO_EXPORT DoglegStrategy final : public TrustRegionStrategy {
- public:
-  explicit DoglegStrategy(const TrustRegionStrategy::Options& options);
-
-  // TrustRegionStrategy interface
-  Summary ComputeStep(const PerSolveOptions& per_solve_options,
-                      SparseMatrix* jacobian,
-                      const double* residuals,
-                      double* step) final;
-  void StepAccepted(double step_quality) final;
-  void StepRejected(double step_quality) final;
-  void StepIsInvalid() override;
-  double Radius() const final;
-
-  // These functions are predominantly for testing.
-  Vector gradient() const { return gradient_; }
-  Vector gauss_newton_step() const { return gauss_newton_step_; }
-  Matrix subspace_basis() const { return subspace_basis_; }
-  Vector subspace_g() const { return subspace_g_; }
-  Matrix subspace_B() const { return subspace_B_; }
-
- private:
-  using Vector2d = Eigen::Matrix<double, 2, 1, Eigen::DontAlign>;
-  using Matrix2d = Eigen::Matrix<double, 2, 2, Eigen::DontAlign>;
-
-  LinearSolver::Summary ComputeGaussNewtonStep(
-      const PerSolveOptions& per_solve_options,
-      SparseMatrix* jacobian,
-      const double* residuals);
-  void ComputeCauchyPoint(SparseMatrix* jacobian);
-  void ComputeGradient(SparseMatrix* jacobian, const double* residuals);
-  void ComputeTraditionalDoglegStep(double* step);
-  bool ComputeSubspaceModel(SparseMatrix* jacobian);
-  void ComputeSubspaceDoglegStep(double* step);
-
-  bool FindMinimumOnTrustRegionBoundary(Vector2d* minimum) const;
-  Vector MakePolynomialForBoundaryConstrainedProblem() const;
-  Vector2d ComputeSubspaceStepFromRoot(double lambda) const;
-  double EvaluateSubspaceModel(const Vector2d& x) const;
-
-  LinearSolver* linear_solver_;
-  double radius_;
-  const double max_radius_;
-
-  const double min_diagonal_;
-  const double max_diagonal_;
-
-  // mu is used to scale the diagonal matrix used to make the
-  // Gauss-Newton solve full rank. In each solve, the strategy starts
-  // out with mu = min_mu, and tries values up to max_mu. If the user
-  // reports an invalid step, the value of mu_ is increased so that
-  // the next solve starts with a stronger regularization.
-  //
-  // If a successful step is reported, then the value of mu_ is
-  // decreased with a lower bound of min_mu_.
-  double mu_;
-  const double min_mu_;
-  const double max_mu_;
-  const double mu_increase_factor_;
-  const double increase_threshold_;
-  const double decrease_threshold_;
-
-  Vector diagonal_;  // sqrt(diag(J^T J))
-  Vector lm_diagonal_;
-
-  Vector gradient_;
-  Vector gauss_newton_step_;
-
-  // cauchy_step = alpha * gradient
-  double alpha_;
-  double dogleg_step_norm_;
-
-  // When, ComputeStep is called, reuse_ indicates whether the
-  // Gauss-Newton and Cauchy steps from the last call to ComputeStep
-  // can be reused or not.
-  //
-  // If the user called StepAccepted, then it is expected that the
-  // user has recomputed the Jacobian matrix and new Gauss-Newton
-  // solve is needed and reuse is set to false.
-  //
-  // If the user called StepRejected, then it is expected that the
-  // user wants to solve the trust region problem with the same matrix
-  // but a different trust region radius and the Gauss-Newton and
-  // Cauchy steps can be reused to compute the Dogleg, thus reuse is
-  // set to true.
-  //
-  // If the user called StepIsInvalid, then there was a numerical
-  // problem with the step computed in the last call to ComputeStep,
-  // and the regularization used to do the Gauss-Newton solve is
-  // increased and a new solve should be done when ComputeStep is
-  // called again, thus reuse is set to false.
-  bool reuse_;
-
-  // The dogleg type determines how the minimum of the local
-  // quadratic model is found.
-  DoglegType dogleg_type_;
-
-  // If the type is SUBSPACE_DOGLEG, the two-dimensional
-  // model 1/2 x^T B x + g^T x has to be computed and stored.
-  bool subspace_is_one_dimensional_;
-  Matrix subspace_basis_;
-  Vector2d subspace_g_;
-  Matrix2d subspace_B_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DOGLEG_STRATEGY_H_
diff --git a/third_party/ceres/internal/ceres/dogleg_strategy_test.cc b/third_party/ceres/internal/ceres/dogleg_strategy_test.cc
deleted file mode 100644
index b256f3e..0000000
--- a/third_party/ceres/internal/ceres/dogleg_strategy_test.cc
+++ /dev/null
@@ -1,277 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: moll.markus@arcor.de (Markus Moll)
-
-#include "ceres/dogleg_strategy.h"
-
-#include <limits>
-#include <memory>
-
-#include "ceres/dense_qr_solver.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/trust_region_strategy.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-namespace {
-
-class Fixture : public testing::Test {
- protected:
-  std::unique_ptr<DenseSparseMatrix> jacobian_;
-  Vector residual_;
-  Vector x_;
-  TrustRegionStrategy::Options options_;
-};
-
-// A test problem where
-//
-//   J^T J = Q diag([1 2 4 8 16 32]) Q^T
-//
-// where Q is a randomly chosen orthonormal basis of R^6.
-// The residual is chosen so that the minimum of the quadratic function is
-// at (1, 1, 1, 1, 1, 1). It is therefore at a distance of sqrt(6) ~ 2.45
-// from the origin.
-class DoglegStrategyFixtureEllipse : public Fixture {
- protected:
-  void SetUp() final {
-    Matrix basis(6, 6);
-    // The following lines exceed 80 characters for better readability.
-    // clang-format off
-    basis << -0.1046920933796121, -0.7449367449921986, -0.4190744502875876, -0.4480450716142566,  0.2375351607929440, -0.0363053418882862,  // NOLINT
-              0.4064975684355914,  0.2681113508511354, -0.7463625494601520, -0.0803264850508117, -0.4463149623021321,  0.0130224954867195,  // NOLINT
-             -0.5514387729089798,  0.1026621026168657, -0.5008316122125011,  0.5738122212666414,  0.2974664724007106,  0.1296020877535158,  // NOLINT
-              0.5037835370947156,  0.2668479925183712, -0.1051754618492798, -0.0272739396578799,  0.7947481647088278, -0.1776623363955670,  // NOLINT
-             -0.4005458426625444,  0.2939330589634109, -0.0682629380550051, -0.2895448882503687, -0.0457239396341685, -0.8139899477847840,  // NOLINT
-             -0.3247764582762654,  0.4528151365941945, -0.0276683863102816, -0.6155994592510784,  0.1489240599972848,  0.5362574892189350;  // NOLINT
-    // clang-format on
-
-    Vector Ddiag(6);
-    Ddiag << 1.0, 2.0, 4.0, 8.0, 16.0, 32.0;
-
-    Matrix sqrtD = Ddiag.array().sqrt().matrix().asDiagonal();
-    Matrix jacobian = sqrtD * basis;
-    jacobian_ = std::make_unique<DenseSparseMatrix>(jacobian);
-
-    Vector minimum(6);
-    minimum << 1.0, 1.0, 1.0, 1.0, 1.0, 1.0;
-    residual_ = -jacobian * minimum;
-
-    x_.resize(6);
-    x_.setZero();
-
-    options_.min_lm_diagonal = 1.0;
-    options_.max_lm_diagonal = 1.0;
-  }
-};
-
-// A test problem where
-//
-//   J^T J = diag([1 2 4 8 16 32]) .
-//
-// The residual is chosen so that the minimum of the quadratic function is
-// at (0, 0, 1, 0, 0, 0). It is therefore at a distance of 1 from the origin.
-// The gradient at the origin points towards the global minimum.
-class DoglegStrategyFixtureValley : public Fixture {
- protected:
-  void SetUp() final {
-    Vector Ddiag(6);
-    Ddiag << 1.0, 2.0, 4.0, 8.0, 16.0, 32.0;
-
-    Matrix jacobian = Ddiag.asDiagonal();
-    jacobian_ = std::make_unique<DenseSparseMatrix>(jacobian);
-
-    Vector minimum(6);
-    minimum << 0.0, 0.0, 1.0, 0.0, 0.0, 0.0;
-    residual_ = -jacobian * minimum;
-
-    x_.resize(6);
-    x_.setZero();
-
-    options_.min_lm_diagonal = 1.0;
-    options_.max_lm_diagonal = 1.0;
-  }
-};
-
-const double kTolerance = 1e-14;
-const double kToleranceLoose = 1e-5;
-const double kEpsilon = std::numeric_limits<double>::epsilon();
-
-}  // namespace
-
-// The DoglegStrategy must never return a step that is longer than the current
-// trust region radius.
-TEST_F(DoglegStrategyFixtureEllipse, TrustRegionObeyedTraditional) {
-  std::unique_ptr<LinearSolver> linear_solver(
-      new DenseQRSolver(LinearSolver::Options()));
-  options_.linear_solver = linear_solver.get();
-  // The global minimum is at (1, 1, ..., 1), so the distance to it is
-  // sqrt(6.0).  By restricting the trust region to a radius of 2.0,
-  // we test if the trust region is actually obeyed.
-  options_.dogleg_type = TRADITIONAL_DOGLEG;
-  options_.initial_radius = 2.0;
-  options_.max_radius = 2.0;
-
-  DoglegStrategy strategy(options_);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  TrustRegionStrategy::Summary summary =
-      strategy.ComputeStep(pso, jacobian_.get(), residual_.data(), x_.data());
-
-  EXPECT_NE(summary.termination_type, LinearSolverTerminationType::FAILURE);
-  EXPECT_LE(x_.norm(), options_.initial_radius * (1.0 + 4.0 * kEpsilon));
-}
-
-TEST_F(DoglegStrategyFixtureEllipse, TrustRegionObeyedSubspace) {
-  std::unique_ptr<LinearSolver> linear_solver(
-      new DenseQRSolver(LinearSolver::Options()));
-  options_.linear_solver = linear_solver.get();
-  options_.dogleg_type = SUBSPACE_DOGLEG;
-  options_.initial_radius = 2.0;
-  options_.max_radius = 2.0;
-
-  DoglegStrategy strategy(options_);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  TrustRegionStrategy::Summary summary =
-      strategy.ComputeStep(pso, jacobian_.get(), residual_.data(), x_.data());
-
-  EXPECT_NE(summary.termination_type, LinearSolverTerminationType::FAILURE);
-  EXPECT_LE(x_.norm(), options_.initial_radius * (1.0 + 4.0 * kEpsilon));
-}
-
-TEST_F(DoglegStrategyFixtureEllipse, CorrectGaussNewtonStep) {
-  std::unique_ptr<LinearSolver> linear_solver(
-      new DenseQRSolver(LinearSolver::Options()));
-  options_.linear_solver = linear_solver.get();
-  options_.dogleg_type = SUBSPACE_DOGLEG;
-  options_.initial_radius = 10.0;
-  options_.max_radius = 10.0;
-
-  DoglegStrategy strategy(options_);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  TrustRegionStrategy::Summary summary =
-      strategy.ComputeStep(pso, jacobian_.get(), residual_.data(), x_.data());
-
-  EXPECT_NE(summary.termination_type, LinearSolverTerminationType::FAILURE);
-  EXPECT_NEAR(x_(0), 1.0, kToleranceLoose);
-  EXPECT_NEAR(x_(1), 1.0, kToleranceLoose);
-  EXPECT_NEAR(x_(2), 1.0, kToleranceLoose);
-  EXPECT_NEAR(x_(3), 1.0, kToleranceLoose);
-  EXPECT_NEAR(x_(4), 1.0, kToleranceLoose);
-  EXPECT_NEAR(x_(5), 1.0, kToleranceLoose);
-}
-
-// Test if the subspace basis is a valid orthonormal basis of the space spanned
-// by the gradient and the Gauss-Newton point.
-TEST_F(DoglegStrategyFixtureEllipse, ValidSubspaceBasis) {
-  std::unique_ptr<LinearSolver> linear_solver(
-      new DenseQRSolver(LinearSolver::Options()));
-  options_.linear_solver = linear_solver.get();
-  options_.dogleg_type = SUBSPACE_DOGLEG;
-  options_.initial_radius = 2.0;
-  options_.max_radius = 2.0;
-
-  DoglegStrategy strategy(options_);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  strategy.ComputeStep(pso, jacobian_.get(), residual_.data(), x_.data());
-
-  // Check if the basis is orthonormal.
-  const Matrix basis = strategy.subspace_basis();
-  EXPECT_NEAR(basis.col(0).norm(), 1.0, kTolerance);
-  EXPECT_NEAR(basis.col(1).norm(), 1.0, kTolerance);
-  EXPECT_NEAR(basis.col(0).dot(basis.col(1)), 0.0, kTolerance);
-
-  // Check if the gradient projects onto itself.
-  const Vector gradient = strategy.gradient();
-  EXPECT_NEAR((gradient - basis * (basis.transpose() * gradient)).norm(),
-              0.0,
-              kTolerance);
-
-  // Check if the Gauss-Newton point projects onto itself.
-  const Vector gn = strategy.gauss_newton_step();
-  EXPECT_NEAR((gn - basis * (basis.transpose() * gn)).norm(), 0.0, kTolerance);
-}
-
-// Test if the step is correct if the gradient and the Gauss-Newton step point
-// in the same direction and the Gauss-Newton step is outside the trust region,
-// i.e. the trust region is active.
-TEST_F(DoglegStrategyFixtureValley, CorrectStepLocalOptimumAlongGradient) {
-  std::unique_ptr<LinearSolver> linear_solver(
-      new DenseQRSolver(LinearSolver::Options()));
-  options_.linear_solver = linear_solver.get();
-  options_.dogleg_type = SUBSPACE_DOGLEG;
-  options_.initial_radius = 0.25;
-  options_.max_radius = 0.25;
-
-  DoglegStrategy strategy(options_);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  TrustRegionStrategy::Summary summary =
-      strategy.ComputeStep(pso, jacobian_.get(), residual_.data(), x_.data());
-
-  EXPECT_NE(summary.termination_type, LinearSolverTerminationType::FAILURE);
-  EXPECT_NEAR(x_(0), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(1), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(2), options_.initial_radius, kToleranceLoose);
-  EXPECT_NEAR(x_(3), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(4), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(5), 0.0, kToleranceLoose);
-}
-
-// Test if the step is correct if the gradient and the Gauss-Newton step point
-// in the same direction and the Gauss-Newton step is inside the trust region,
-// i.e. the trust region is inactive.
-TEST_F(DoglegStrategyFixtureValley, CorrectStepGlobalOptimumAlongGradient) {
-  std::unique_ptr<LinearSolver> linear_solver(
-      new DenseQRSolver(LinearSolver::Options()));
-  options_.linear_solver = linear_solver.get();
-  options_.dogleg_type = SUBSPACE_DOGLEG;
-  options_.initial_radius = 2.0;
-  options_.max_radius = 2.0;
-
-  DoglegStrategy strategy(options_);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  TrustRegionStrategy::Summary summary =
-      strategy.ComputeStep(pso, jacobian_.get(), residual_.data(), x_.data());
-
-  EXPECT_NE(summary.termination_type, LinearSolverTerminationType::FAILURE);
-  EXPECT_NEAR(x_(0), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(1), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(2), 1.0, kToleranceLoose);
-  EXPECT_NEAR(x_(3), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(4), 0.0, kToleranceLoose);
-  EXPECT_NEAR(x_(5), 0.0, kToleranceLoose);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dynamic_autodiff_cost_function_test.cc b/third_party/ceres/internal/ceres/dynamic_autodiff_cost_function_test.cc
deleted file mode 100644
index 51366c6..0000000
--- a/third_party/ceres/internal/ceres/dynamic_autodiff_cost_function_test.cc
+++ /dev/null
@@ -1,822 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: thadh@gmail.com (Thad Hughes)
-//         mierle@gmail.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dynamic_autodiff_cost_function.h"
-
-#include <cstddef>
-#include <memory>
-#include <vector>
-
-#include "ceres/types.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Takes 2 parameter blocks:
-//     parameters[0] is size 10.
-//     parameters[1] is size 5.
-// Emits 21 residuals:
-//     A: i - parameters[0][i], for i in [0,10)  -- this is 10 residuals
-//     B: parameters[0][i] - i, for i in [0,10)  -- this is another 10.
-//     C: sum(parameters[0][i]^2 - 8*parameters[0][i]) + sum(parameters[1][i])
-class MyCostFunctor {
- public:
-  template <typename T>
-  bool operator()(T const* const* parameters, T* residuals) const {
-    const T* params0 = parameters[0];
-    int r = 0;
-    for (int i = 0; i < 10; ++i) {
-      residuals[r++] = T(i) - params0[i];
-      residuals[r++] = params0[i] - T(i);
-    }
-
-    T c_residual(0.0);
-    for (int i = 0; i < 10; ++i) {
-      c_residual += pow(params0[i], 2) - T(8) * params0[i];
-    }
-
-    const T* params1 = parameters[1];
-    for (int i = 0; i < 5; ++i) {
-      c_residual += params1[i];
-    }
-    residuals[r++] = c_residual;
-    return true;
-  }
-};
-
-TEST(DynamicAutodiffCostFunctionTest, TestResiduals) {
-  std::vector<double> param_block_0(10, 0.0);
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicAutoDiffCostFunction<MyCostFunctor, 3> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Test residual computation.
-  std::vector<double> residuals(21, -100000);
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-  EXPECT_TRUE(
-      cost_function.Evaluate(&parameter_blocks[0], residuals.data(), nullptr));
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(0, residuals.at(20));
-}
-
-TEST(DynamicAutodiffCostFunctionTest, TestJacobian) {
-  // Test the residual counting.
-  std::vector<double> param_block_0(10, 0.0);
-  for (int i = 0; i < 10; ++i) {
-    param_block_0[i] = 2 * i;
-  }
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicAutoDiffCostFunction<MyCostFunctor, 3> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Prepare the residuals.
-  std::vector<double> residuals(21, -100000);
-
-  // Prepare the parameters.
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-
-  // Prepare the jacobian.
-  std::vector<std::vector<double>> jacobian_vect(2);
-  jacobian_vect[0].resize(21 * 10, -100000);
-  jacobian_vect[1].resize(21 * 5, -100000);
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect[0].data());
-  jacobian.push_back(jacobian_vect[1].data());
-
-  // Test jacobian computation.
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(+1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(420, residuals.at(20));
-  for (int p = 0; p < 10; ++p) {
-    // Check "A" Jacobian.
-    EXPECT_EQ(-1.0, jacobian_vect[0][2 * p * 10 + p]);
-    // Check "B" Jacobian.
-    EXPECT_EQ(+1.0, jacobian_vect[0][(2 * p + 1) * 10 + p]);
-    jacobian_vect[0][2 * p * 10 + p] = 0.0;
-    jacobian_vect[0][(2 * p + 1) * 10 + p] = 0.0;
-  }
-
-  // Check "C" Jacobian for first parameter block.
-  for (int p = 0; p < 10; ++p) {
-    EXPECT_EQ(4 * p - 8, jacobian_vect[0][20 * 10 + p]);
-    jacobian_vect[0][20 * 10 + p] = 0.0;
-  }
-  for (double entry : jacobian_vect[0]) {
-    EXPECT_EQ(0.0, entry);
-  }
-
-  // Check "C" Jacobian for second parameter block.
-  for (int p = 0; p < 5; ++p) {
-    EXPECT_EQ(1.0, jacobian_vect[1][20 * 5 + p]);
-    jacobian_vect[1][20 * 5 + p] = 0.0;
-  }
-  for (double entry : jacobian_vect[1]) {
-    EXPECT_EQ(0.0, entry);
-  }
-}
-
-TEST(DynamicAutodiffCostFunctionTest, JacobianWithFirstParameterBlockConstant) {
-  // Test the residual counting.
-  std::vector<double> param_block_0(10, 0.0);
-  for (int i = 0; i < 10; ++i) {
-    param_block_0[i] = 2 * i;
-  }
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicAutoDiffCostFunction<MyCostFunctor, 3> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Prepare the residuals.
-  std::vector<double> residuals(21, -100000);
-
-  // Prepare the parameters.
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-
-  // Prepare the jacobian.
-  std::vector<std::vector<double>> jacobian_vect(2);
-  jacobian_vect[0].resize(21 * 10, -100000);
-  jacobian_vect[1].resize(21 * 5, -100000);
-  std::vector<double*> jacobian;
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect[1].data());
-
-  // Test jacobian computation.
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(+1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(420, residuals.at(20));
-
-  // Check "C" Jacobian for second parameter block.
-  for (int p = 0; p < 5; ++p) {
-    EXPECT_EQ(1.0, jacobian_vect[1][20 * 5 + p]);
-    jacobian_vect[1][20 * 5 + p] = 0.0;
-  }
-  for (double& i : jacobian_vect[1]) {
-    EXPECT_EQ(0.0, i);
-  }
-}
-
-TEST(DynamicAutodiffCostFunctionTest,
-     JacobianWithSecondParameterBlockConstant) {  // NOLINT
-  // Test the residual counting.
-  std::vector<double> param_block_0(10, 0.0);
-  for (int i = 0; i < 10; ++i) {
-    param_block_0[i] = 2 * i;
-  }
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicAutoDiffCostFunction<MyCostFunctor, 3> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Prepare the residuals.
-  std::vector<double> residuals(21, -100000);
-
-  // Prepare the parameters.
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-
-  // Prepare the jacobian.
-  std::vector<std::vector<double>> jacobian_vect(2);
-  jacobian_vect[0].resize(21 * 10, -100000);
-  jacobian_vect[1].resize(21 * 5, -100000);
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect[0].data());
-  jacobian.push_back(nullptr);
-
-  // Test jacobian computation.
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(+1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(420, residuals.at(20));
-  for (int p = 0; p < 10; ++p) {
-    // Check "A" Jacobian.
-    EXPECT_EQ(-1.0, jacobian_vect[0][2 * p * 10 + p]);
-    // Check "B" Jacobian.
-    EXPECT_EQ(+1.0, jacobian_vect[0][(2 * p + 1) * 10 + p]);
-    jacobian_vect[0][2 * p * 10 + p] = 0.0;
-    jacobian_vect[0][(2 * p + 1) * 10 + p] = 0.0;
-  }
-
-  // Check "C" Jacobian for first parameter block.
-  for (int p = 0; p < 10; ++p) {
-    EXPECT_EQ(4 * p - 8, jacobian_vect[0][20 * 10 + p]);
-    jacobian_vect[0][20 * 10 + p] = 0.0;
-  }
-  for (double& i : jacobian_vect[0]) {
-    EXPECT_EQ(0.0, i);
-  }
-}
-
-// Takes 3 parameter blocks:
-//     parameters[0] (x) is size 1.
-//     parameters[1] (y) is size 2.
-//     parameters[2] (z) is size 3.
-// Emits 7 residuals:
-//     A: x[0] (= sum_x)
-//     B: y[0] + 2.0 * y[1] (= sum_y)
-//     C: z[0] + 3.0 * z[1] + 6.0 * z[2] (= sum_z)
-//     D: sum_x * sum_y
-//     E: sum_y * sum_z
-//     F: sum_x * sum_z
-//     G: sum_x * sum_y * sum_z
-class MyThreeParameterCostFunctor {
- public:
-  template <typename T>
-  bool operator()(T const* const* parameters, T* residuals) const {
-    const T* x = parameters[0];
-    const T* y = parameters[1];
-    const T* z = parameters[2];
-
-    T sum_x = x[0];
-    T sum_y = y[0] + 2.0 * y[1];
-    T sum_z = z[0] + 3.0 * z[1] + 6.0 * z[2];
-
-    residuals[0] = sum_x;
-    residuals[1] = sum_y;
-    residuals[2] = sum_z;
-    residuals[3] = sum_x * sum_y;
-    residuals[4] = sum_y * sum_z;
-    residuals[5] = sum_x * sum_z;
-    residuals[6] = sum_x * sum_y * sum_z;
-    return true;
-  }
-};
-
-class ThreeParameterCostFunctorTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    // Prepare the parameters.
-    x_.resize(1);
-    x_[0] = 0.0;
-
-    y_.resize(2);
-    y_[0] = 1.0;
-    y_[1] = 3.0;
-
-    z_.resize(3);
-    z_[0] = 2.0;
-    z_[1] = 4.0;
-    z_[2] = 6.0;
-
-    parameter_blocks_.resize(3);
-    parameter_blocks_[0] = &x_[0];
-    parameter_blocks_[1] = &y_[0];
-    parameter_blocks_[2] = &z_[0];
-
-    // Prepare the cost function.
-    using DynamicMyThreeParameterCostFunction =
-        DynamicAutoDiffCostFunction<MyThreeParameterCostFunctor, 3>;
-    auto cost_function = std::make_unique<DynamicMyThreeParameterCostFunction>(
-        new MyThreeParameterCostFunctor());
-    cost_function->AddParameterBlock(1);
-    cost_function->AddParameterBlock(2);
-    cost_function->AddParameterBlock(3);
-    cost_function->SetNumResiduals(7);
-
-    cost_function_ = std::move(cost_function);
-
-    // Setup jacobian data.
-    jacobian_vect_.resize(3);
-    jacobian_vect_[0].resize(7 * x_.size(), -100000);
-    jacobian_vect_[1].resize(7 * y_.size(), -100000);
-    jacobian_vect_[2].resize(7 * z_.size(), -100000);
-
-    // Prepare the expected residuals.
-    const double sum_x = x_[0];
-    const double sum_y = y_[0] + 2.0 * y_[1];
-    const double sum_z = z_[0] + 3.0 * z_[1] + 6.0 * z_[2];
-
-    expected_residuals_.resize(7);
-    expected_residuals_[0] = sum_x;
-    expected_residuals_[1] = sum_y;
-    expected_residuals_[2] = sum_z;
-    expected_residuals_[3] = sum_x * sum_y;
-    expected_residuals_[4] = sum_y * sum_z;
-    expected_residuals_[5] = sum_x * sum_z;
-    expected_residuals_[6] = sum_x * sum_y * sum_z;
-
-    // Prepare the expected jacobian entries.
-    expected_jacobian_x_.resize(7);
-    expected_jacobian_x_[0] = 1.0;
-    expected_jacobian_x_[1] = 0.0;
-    expected_jacobian_x_[2] = 0.0;
-    expected_jacobian_x_[3] = sum_y;
-    expected_jacobian_x_[4] = 0.0;
-    expected_jacobian_x_[5] = sum_z;
-    expected_jacobian_x_[6] = sum_y * sum_z;
-
-    expected_jacobian_y_.resize(14);
-    expected_jacobian_y_[0] = 0.0;
-    expected_jacobian_y_[1] = 0.0;
-    expected_jacobian_y_[2] = 1.0;
-    expected_jacobian_y_[3] = 2.0;
-    expected_jacobian_y_[4] = 0.0;
-    expected_jacobian_y_[5] = 0.0;
-    expected_jacobian_y_[6] = sum_x;
-    expected_jacobian_y_[7] = 2.0 * sum_x;
-    expected_jacobian_y_[8] = sum_z;
-    expected_jacobian_y_[9] = 2.0 * sum_z;
-    expected_jacobian_y_[10] = 0.0;
-    expected_jacobian_y_[11] = 0.0;
-    expected_jacobian_y_[12] = sum_x * sum_z;
-    expected_jacobian_y_[13] = 2.0 * sum_x * sum_z;
-
-    expected_jacobian_z_.resize(21);
-    expected_jacobian_z_[0] = 0.0;
-    expected_jacobian_z_[1] = 0.0;
-    expected_jacobian_z_[2] = 0.0;
-    expected_jacobian_z_[3] = 0.0;
-    expected_jacobian_z_[4] = 0.0;
-    expected_jacobian_z_[5] = 0.0;
-    expected_jacobian_z_[6] = 1.0;
-    expected_jacobian_z_[7] = 3.0;
-    expected_jacobian_z_[8] = 6.0;
-    expected_jacobian_z_[9] = 0.0;
-    expected_jacobian_z_[10] = 0.0;
-    expected_jacobian_z_[11] = 0.0;
-    expected_jacobian_z_[12] = sum_y;
-    expected_jacobian_z_[13] = 3.0 * sum_y;
-    expected_jacobian_z_[14] = 6.0 * sum_y;
-    expected_jacobian_z_[15] = sum_x;
-    expected_jacobian_z_[16] = 3.0 * sum_x;
-    expected_jacobian_z_[17] = 6.0 * sum_x;
-    expected_jacobian_z_[18] = sum_x * sum_y;
-    expected_jacobian_z_[19] = 3.0 * sum_x * sum_y;
-    expected_jacobian_z_[20] = 6.0 * sum_x * sum_y;
-  }
-
- protected:
-  std::vector<double> x_;
-  std::vector<double> y_;
-  std::vector<double> z_;
-
-  std::vector<double*> parameter_blocks_;
-
-  std::unique_ptr<CostFunction> cost_function_;
-
-  std::vector<std::vector<double>> jacobian_vect_;
-
-  std::vector<double> expected_residuals_;
-
-  std::vector<double> expected_jacobian_x_;
-  std::vector<double> expected_jacobian_y_;
-  std::vector<double> expected_jacobian_z_;
-};
-
-TEST_F(ThreeParameterCostFunctorTest, TestThreeParameterResiduals) {
-  std::vector<double> residuals(7, -100000);
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), nullptr));
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-}
-
-TEST_F(ThreeParameterCostFunctorTest, TestThreeParameterJacobian) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(jacobian_vect_[1].data());
-  jacobian.push_back(jacobian_vect_[2].data());
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_jacobian_x_[i], jacobian[0][i]);
-  }
-
-  for (int i = 0; i < 14; ++i) {
-    EXPECT_EQ(expected_jacobian_y_[i], jacobian[1][i]);
-  }
-
-  for (int i = 0; i < 21; ++i) {
-    EXPECT_EQ(expected_jacobian_z_[i], jacobian[2][i]);
-  }
-}
-
-TEST_F(ThreeParameterCostFunctorTest,
-       ThreeParameterJacobianWithFirstAndLastParameterBlockConstant) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[1].data());
-  jacobian.push_back(nullptr);
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 14; ++i) {
-    EXPECT_EQ(expected_jacobian_y_[i], jacobian[1][i]);
-  }
-}
-
-TEST_F(ThreeParameterCostFunctorTest,
-       ThreeParameterJacobianWithSecondParameterBlockConstant) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[2].data());
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_jacobian_x_[i], jacobian[0][i]);
-  }
-
-  for (int i = 0; i < 21; ++i) {
-    EXPECT_EQ(expected_jacobian_z_[i], jacobian[2][i]);
-  }
-}
-
-// Takes 6 parameter blocks all of size 1:
-//     x0, y0, y1, z0, z1, z2
-// Same 7 residuals as MyThreeParameterCostFunctor.
-// Naming convention for tests is (V)ariable and (C)onstant.
-class MySixParameterCostFunctor {
- public:
-  template <typename T>
-  bool operator()(T const* const* parameters, T* residuals) const {
-    const T* x0 = parameters[0];
-    const T* y0 = parameters[1];
-    const T* y1 = parameters[2];
-    const T* z0 = parameters[3];
-    const T* z1 = parameters[4];
-    const T* z2 = parameters[5];
-
-    T sum_x = x0[0];
-    T sum_y = y0[0] + 2.0 * y1[0];
-    T sum_z = z0[0] + 3.0 * z1[0] + 6.0 * z2[0];
-
-    residuals[0] = sum_x;
-    residuals[1] = sum_y;
-    residuals[2] = sum_z;
-    residuals[3] = sum_x * sum_y;
-    residuals[4] = sum_y * sum_z;
-    residuals[5] = sum_x * sum_z;
-    residuals[6] = sum_x * sum_y * sum_z;
-    return true;
-  }
-};
-
-class SixParameterCostFunctorTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    // Prepare the parameters.
-    x0_ = 0.0;
-    y0_ = 1.0;
-    y1_ = 3.0;
-    z0_ = 2.0;
-    z1_ = 4.0;
-    z2_ = 6.0;
-
-    parameter_blocks_.resize(6);
-    parameter_blocks_[0] = &x0_;
-    parameter_blocks_[1] = &y0_;
-    parameter_blocks_[2] = &y1_;
-    parameter_blocks_[3] = &z0_;
-    parameter_blocks_[4] = &z1_;
-    parameter_blocks_[5] = &z2_;
-
-    // Prepare the cost function.
-    using DynamicMySixParameterCostFunction =
-        DynamicAutoDiffCostFunction<MySixParameterCostFunctor, 3>;
-    auto cost_function = std::make_unique<DynamicMySixParameterCostFunction>(
-        new MySixParameterCostFunctor());
-    for (int i = 0; i < 6; ++i) {
-      cost_function->AddParameterBlock(1);
-    }
-    cost_function->SetNumResiduals(7);
-
-    cost_function_ = std::move(cost_function);
-
-    // Setup jacobian data.
-    jacobian_vect_.resize(6);
-    for (int i = 0; i < 6; ++i) {
-      jacobian_vect_[i].resize(7, -100000);
-    }
-
-    // Prepare the expected residuals.
-    const double sum_x = x0_;
-    const double sum_y = y0_ + 2.0 * y1_;
-    const double sum_z = z0_ + 3.0 * z1_ + 6.0 * z2_;
-
-    expected_residuals_.resize(7);
-    expected_residuals_[0] = sum_x;
-    expected_residuals_[1] = sum_y;
-    expected_residuals_[2] = sum_z;
-    expected_residuals_[3] = sum_x * sum_y;
-    expected_residuals_[4] = sum_y * sum_z;
-    expected_residuals_[5] = sum_x * sum_z;
-    expected_residuals_[6] = sum_x * sum_y * sum_z;
-
-    // Prepare the expected jacobian entries.
-    expected_jacobians_.resize(6);
-    expected_jacobians_[0].resize(7);
-    expected_jacobians_[0][0] = 1.0;
-    expected_jacobians_[0][1] = 0.0;
-    expected_jacobians_[0][2] = 0.0;
-    expected_jacobians_[0][3] = sum_y;
-    expected_jacobians_[0][4] = 0.0;
-    expected_jacobians_[0][5] = sum_z;
-    expected_jacobians_[0][6] = sum_y * sum_z;
-
-    expected_jacobians_[1].resize(7);
-    expected_jacobians_[1][0] = 0.0;
-    expected_jacobians_[1][1] = 1.0;
-    expected_jacobians_[1][2] = 0.0;
-    expected_jacobians_[1][3] = sum_x;
-    expected_jacobians_[1][4] = sum_z;
-    expected_jacobians_[1][5] = 0.0;
-    expected_jacobians_[1][6] = sum_x * sum_z;
-
-    expected_jacobians_[2].resize(7);
-    expected_jacobians_[2][0] = 0.0;
-    expected_jacobians_[2][1] = 2.0;
-    expected_jacobians_[2][2] = 0.0;
-    expected_jacobians_[2][3] = 2.0 * sum_x;
-    expected_jacobians_[2][4] = 2.0 * sum_z;
-    expected_jacobians_[2][5] = 0.0;
-    expected_jacobians_[2][6] = 2.0 * sum_x * sum_z;
-
-    expected_jacobians_[3].resize(7);
-    expected_jacobians_[3][0] = 0.0;
-    expected_jacobians_[3][1] = 0.0;
-    expected_jacobians_[3][2] = 1.0;
-    expected_jacobians_[3][3] = 0.0;
-    expected_jacobians_[3][4] = sum_y;
-    expected_jacobians_[3][5] = sum_x;
-    expected_jacobians_[3][6] = sum_x * sum_y;
-
-    expected_jacobians_[4].resize(7);
-    expected_jacobians_[4][0] = 0.0;
-    expected_jacobians_[4][1] = 0.0;
-    expected_jacobians_[4][2] = 3.0;
-    expected_jacobians_[4][3] = 0.0;
-    expected_jacobians_[4][4] = 3.0 * sum_y;
-    expected_jacobians_[4][5] = 3.0 * sum_x;
-    expected_jacobians_[4][6] = 3.0 * sum_x * sum_y;
-
-    expected_jacobians_[5].resize(7);
-    expected_jacobians_[5][0] = 0.0;
-    expected_jacobians_[5][1] = 0.0;
-    expected_jacobians_[5][2] = 6.0;
-    expected_jacobians_[5][3] = 0.0;
-    expected_jacobians_[5][4] = 6.0 * sum_y;
-    expected_jacobians_[5][5] = 6.0 * sum_x;
-    expected_jacobians_[5][6] = 6.0 * sum_x * sum_y;
-  }
-
- protected:
-  double x0_;
-  double y0_;
-  double y1_;
-  double z0_;
-  double z1_;
-  double z2_;
-
-  std::vector<double*> parameter_blocks_;
-
-  std::unique_ptr<CostFunction> cost_function_;
-
-  std::vector<std::vector<double>> jacobian_vect_;
-
-  std::vector<double> expected_residuals_;
-  std::vector<std::vector<double>> expected_jacobians_;
-};
-
-TEST_F(SixParameterCostFunctorTest, TestSixParameterResiduals) {
-  std::vector<double> residuals(7, -100000);
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), nullptr));
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-}
-
-TEST_F(SixParameterCostFunctorTest, TestSixParameterJacobian) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(jacobian_vect_[1].data());
-  jacobian.push_back(jacobian_vect_[2].data());
-  jacobian.push_back(jacobian_vect_[3].data());
-  jacobian.push_back(jacobian_vect_[4].data());
-  jacobian.push_back(jacobian_vect_[5].data());
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 6; ++i) {
-    for (int j = 0; j < 7; ++j) {
-      EXPECT_EQ(expected_jacobians_[i][j], jacobian[i][j]);
-    }
-  }
-}
-
-TEST_F(SixParameterCostFunctorTest, TestSixParameterJacobianVVCVVC) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(jacobian_vect_[1].data());
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[3].data());
-  jacobian.push_back(jacobian_vect_[4].data());
-  jacobian.push_back(nullptr);
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 6; ++i) {
-    // Skip the constant variables.
-    if (i == 2 || i == 5) {
-      continue;
-    }
-
-    for (int j = 0; j < 7; ++j) {
-      EXPECT_EQ(expected_jacobians_[i][j], jacobian[i][j]);
-    }
-  }
-}
-
-TEST_F(SixParameterCostFunctorTest, TestSixParameterJacobianVCCVCV) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(nullptr);
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[3].data());
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[5].data());
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 6; ++i) {
-    // Skip the constant variables.
-    if (i == 1 || i == 2 || i == 4) {
-      continue;
-    }
-
-    for (int j = 0; j < 7; ++j) {
-      EXPECT_EQ(expected_jacobians_[i][j], jacobian[i][j]);
-    }
-  }
-}
-
-class ValueError {
- public:
-  explicit ValueError(double target_value) : target_value_(target_value) {}
-
-  template <typename T>
-  bool operator()(const T* value, T* residual) const {
-    *residual = *value - T(target_value_);
-    return true;
-  }
-
- protected:
-  double target_value_;
-};
-
-class DynamicValueError {
- public:
-  explicit DynamicValueError(double target_value)
-      : target_value_(target_value) {}
-
-  template <typename T>
-  bool operator()(T const* const* parameters, T* residual) const {
-    residual[0] = T(target_value_) - parameters[0][0];
-    return true;
-  }
-
- protected:
-  double target_value_;
-};
-
-TEST(DynamicAutoDiffCostFunction,
-     EvaluateWithEmptyJacobiansArrayComputesResidual) {
-  const double target_value = 1.0;
-  double parameter = 0;
-  ceres::DynamicAutoDiffCostFunction<DynamicValueError, 1> cost_function(
-      new DynamicValueError(target_value));
-  cost_function.AddParameterBlock(1);
-  cost_function.SetNumResiduals(1);
-
-  double* parameter_blocks[1] = {&parameter};
-  double* jacobians[1] = {nullptr};
-  double residual;
-
-  EXPECT_TRUE(cost_function.Evaluate(parameter_blocks, &residual, jacobians));
-  EXPECT_EQ(residual, target_value);
-}
-
-TEST(DynamicAutoDiffCostFunctionTest, DeductionTemplateCompilationTest) {
-  // Ensure deduction guide to be working
-  (void)DynamicAutoDiffCostFunction(new MyCostFunctor());
-  (void)DynamicAutoDiffCostFunction(new MyCostFunctor(), TAKE_OWNERSHIP);
-  (void)DynamicAutoDiffCostFunction(std::make_unique<MyCostFunctor>());
-}
-
-TEST(DynamicAutoDiffCostFunctionTest, ArgumentForwarding) {
-  (void)DynamicAutoDiffCostFunction<MyCostFunctor>();
-}
-
-TEST(DynamicAutoDiffCostFunctionTest, UniquePtr) {
-  (void)DynamicAutoDiffCostFunction(std::make_unique<MyCostFunctor>());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dynamic_compressed_row_finalizer.h b/third_party/ceres/internal/ceres/dynamic_compressed_row_finalizer.h
deleted file mode 100644
index 9da73c0..0000000
--- a/third_party/ceres/internal/ceres/dynamic_compressed_row_finalizer.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-
-#ifndef CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_FINALIZER_H_
-#define CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_FINALIZER_H_
-
-#include "ceres/casts.h"
-#include "ceres/dynamic_compressed_row_sparse_matrix.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-struct CERES_NO_EXPORT DynamicCompressedRowJacobianFinalizer {
-  void operator()(SparseMatrix* base_jacobian, int num_parameters) {
-    auto* jacobian =
-        down_cast<DynamicCompressedRowSparseMatrix*>(base_jacobian);
-    jacobian->Finalize(num_parameters);
-  }
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_FINALISER_H_
diff --git a/third_party/ceres/internal/ceres/dynamic_compressed_row_jacobian_writer.cc b/third_party/ceres/internal/ceres/dynamic_compressed_row_jacobian_writer.cc
deleted file mode 100644
index 790a5fb..0000000
--- a/third_party/ceres/internal/ceres/dynamic_compressed_row_jacobian_writer.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-
-#include "ceres/dynamic_compressed_row_jacobian_writer.h"
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/compressed_row_jacobian_writer.h"
-#include "ceres/dynamic_compressed_row_sparse_matrix.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<ScratchEvaluatePreparer[]>
-DynamicCompressedRowJacobianWriter::CreateEvaluatePreparers(int num_threads) {
-  return ScratchEvaluatePreparer::Create(*program_, num_threads);
-}
-
-std::unique_ptr<SparseMatrix>
-DynamicCompressedRowJacobianWriter::CreateJacobian() const {
-  return std::make_unique<DynamicCompressedRowSparseMatrix>(
-      program_->NumResiduals(),
-      program_->NumEffectiveParameters(),
-      0 /* max_num_nonzeros */);
-}
-
-void DynamicCompressedRowJacobianWriter::Write(int residual_id,
-                                               int residual_offset,
-                                               double** jacobians,
-                                               SparseMatrix* base_jacobian) {
-  auto* jacobian = down_cast<DynamicCompressedRowSparseMatrix*>(base_jacobian);
-
-  // Get the `residual_block` of interest.
-  const ResidualBlock* residual_block =
-      program_->residual_blocks()[residual_id];
-  const int num_residuals = residual_block->NumResiduals();
-
-  std::vector<std::pair<int, int>> evaluated_jacobian_blocks;
-  CompressedRowJacobianWriter::GetOrderedParameterBlocks(
-      program_, residual_id, &evaluated_jacobian_blocks);
-
-  // `residual_offset` is the residual row in the global jacobian.
-  // Empty the jacobian rows.
-  jacobian->ClearRows(residual_offset, num_residuals);
-
-  // Iterate over each parameter block.
-  for (const auto& evaluated_jacobian_block : evaluated_jacobian_blocks) {
-    const ParameterBlock* parameter_block =
-        program_->parameter_blocks()[evaluated_jacobian_block.first];
-    const int parameter_block_jacobian_index = evaluated_jacobian_block.second;
-    const int parameter_block_size = parameter_block->TangentSize();
-    const double* parameter_jacobian =
-        jacobians[parameter_block_jacobian_index];
-
-    // For each parameter block only insert its non-zero entries.
-    for (int r = 0; r < num_residuals; ++r) {
-      for (int c = 0; c < parameter_block_size; ++c, ++parameter_jacobian) {
-        const double v = *parameter_jacobian;
-        // Only insert non-zero entries.
-        if (v != 0.0) {
-          jacobian->InsertEntry(
-              residual_offset + r, parameter_block->delta_offset() + c, v);
-        }
-      }
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dynamic_compressed_row_jacobian_writer.h b/third_party/ceres/internal/ceres/dynamic_compressed_row_jacobian_writer.h
deleted file mode 100644
index 489197f..0000000
--- a/third_party/ceres/internal/ceres/dynamic_compressed_row_jacobian_writer.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-//
-// A jacobian writer that directly writes to dynamic compressed row sparse
-// matrices.
-
-#ifndef CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_JACOBIAN_WRITER_H_
-#define CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_JACOBIAN_WRITER_H_
-
-#include <memory>
-
-#include "ceres/evaluator.h"
-#include "ceres/internal/export.h"
-#include "ceres/scratch_evaluate_preparer.h"
-
-namespace ceres::internal {
-
-class Program;
-class SparseMatrix;
-
-class CERES_NO_EXPORT DynamicCompressedRowJacobianWriter {
- public:
-  DynamicCompressedRowJacobianWriter(Evaluator::Options /* ignored */,
-                                     Program* program)
-      : program_(program) {}
-
-  // JacobianWriter interface.
-
-  // The compressed row matrix has different layout than that assumed by
-  // the cost functions. The scratch space is therefore used to store
-  // the jacobians (including zeros) temporarily before only the non-zero
-  // entries are copied over to the larger jacobian in `Write`.
-  std::unique_ptr<ScratchEvaluatePreparer[]> CreateEvaluatePreparers(
-      int num_threads);
-
-  // Return a `DynamicCompressedRowSparseMatrix` which is filled by
-  // `Write`. Note that `Finalize` must be called to make the
-  // `CompressedRowSparseMatrix` interface valid.
-  std::unique_ptr<SparseMatrix> CreateJacobian() const;
-
-  // Write only the non-zero jacobian entries for a residual block
-  // (specified by `residual_id`) into `base_jacobian`, starting at the row
-  // specified by `residual_offset`.
-  //
-  // This method is thread-safe over residual blocks (each `residual_id`).
-  void Write(int residual_id,
-             int residual_offset,
-             double** jacobians,
-             SparseMatrix* base_jacobian);
-
- private:
-  Program* program_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_JACOBIAN_WRITER_H_
diff --git a/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix.cc b/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix.cc
deleted file mode 100644
index 4081c9c..0000000
--- a/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-
-#include "ceres/dynamic_compressed_row_sparse_matrix.h"
-
-#include <cstring>
-
-namespace ceres::internal {
-
-DynamicCompressedRowSparseMatrix::DynamicCompressedRowSparseMatrix(
-    int num_rows, int num_cols, int initial_max_num_nonzeros)
-    : CompressedRowSparseMatrix(num_rows, num_cols, initial_max_num_nonzeros) {
-  dynamic_cols_.resize(num_rows);
-  dynamic_values_.resize(num_rows);
-}
-
-void DynamicCompressedRowSparseMatrix::InsertEntry(int row,
-                                                   int col,
-                                                   const double& value) {
-  CHECK_GE(row, 0);
-  CHECK_LT(row, num_rows());
-  CHECK_GE(col, 0);
-  CHECK_LT(col, num_cols());
-  dynamic_cols_[row].push_back(col);
-  dynamic_values_[row].push_back(value);
-}
-
-void DynamicCompressedRowSparseMatrix::ClearRows(int row_start, int num_rows) {
-  for (int r = 0; r < num_rows; ++r) {
-    const int i = row_start + r;
-    CHECK_GE(i, 0);
-    CHECK_LT(i, this->num_rows());
-    dynamic_cols_[i].resize(0);
-    dynamic_values_[i].resize(0);
-  }
-}
-
-void DynamicCompressedRowSparseMatrix::Finalize(int num_additional_elements) {
-  // `num_additional_elements` is provided as an argument so that additional
-  // storage can be reserved when it is known by the finalizer.
-  CHECK_GE(num_additional_elements, 0);
-
-  // Count the number of non-zeros and resize `cols_` and `values_`.
-  int num_jacobian_nonzeros = 0;
-  for (const auto& dynamic_col : dynamic_cols_) {
-    num_jacobian_nonzeros += dynamic_col.size();
-  }
-
-  SetMaxNumNonZeros(num_jacobian_nonzeros + num_additional_elements);
-
-  // Flatten `dynamic_cols_` into `cols_` and `dynamic_values_`
-  // into `values_`.
-  int index_into_values_and_cols = 0;
-  for (int i = 0; i < num_rows(); ++i) {
-    mutable_rows()[i] = index_into_values_and_cols;
-    const int num_nonzero_columns = dynamic_cols_[i].size();
-    if (num_nonzero_columns > 0) {
-      memcpy(mutable_cols() + index_into_values_and_cols,
-             &dynamic_cols_[i][0],
-             dynamic_cols_[i].size() * sizeof(dynamic_cols_[0][0]));
-      memcpy(mutable_values() + index_into_values_and_cols,
-             &dynamic_values_[i][0],
-             dynamic_values_[i].size() * sizeof(dynamic_values_[0][0]));
-      index_into_values_and_cols += dynamic_cols_[i].size();
-    }
-  }
-  mutable_rows()[num_rows()] = index_into_values_and_cols;
-
-  CHECK_EQ(index_into_values_and_cols, num_jacobian_nonzeros)
-      << "Ceres bug: final index into values_ and cols_ should be equal to "
-      << "the number of jacobian nonzeros. Please contact the developers!";
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix.h b/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix.h
deleted file mode 100644
index 6dafe59..0000000
--- a/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix.h
+++ /dev/null
@@ -1,104 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-//
-// A compressed row sparse matrix that provides an extended interface to
-// allow dynamic insertion of entries. This is provided for the use case
-// where the sparsity structure and number of non-zero entries is dynamic.
-// This flexibility is achieved by using an (internal) scratch space that
-// allows independent insertion of entries into each row (thread-safe).
-// Once insertion is complete, the `Finalize` method must be called to ensure
-// that the underlying `CompressedRowSparseMatrix` is consistent.
-//
-// This should only be used if you really do need a dynamic sparsity pattern.
-
-#ifndef CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_SPARSE_MATRIX_H_
-
-#include <vector>
-
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT DynamicCompressedRowSparseMatrix final
-    : public CompressedRowSparseMatrix {
- public:
-  // Set the number of rows and columns for the underlying
-  // `CompressedRowSparseMatrix` and set the initial number of maximum non-zero
-  // entries. Note that following the insertion of entries, when `Finalize`
-  // is called the number of non-zeros is determined and all internal
-  // structures are adjusted as required. If you know the upper limit on the
-  // number of non-zeros, then passing this value here can prevent future
-  // memory reallocations which may improve performance. Otherwise, if no
-  // upper limit is available a value of 0 is sufficient.
-  //
-  // Typical usage of this class is to define a new instance with a given
-  // number of rows, columns and maximum number of non-zero elements
-  // (if available). Next, entries are inserted at row and column positions
-  // using `InsertEntry`. Finally, once all elements have been inserted,
-  // `Finalize` must be called to make the underlying
-  // `CompressedRowSparseMatrix` consistent.
-  DynamicCompressedRowSparseMatrix(int num_rows,
-                                   int num_cols,
-                                   int initial_max_num_nonzeros);
-
-  // Insert an entry at a given row and column position. This method is
-  // thread-safe across rows i.e. different threads can insert values
-  // simultaneously into different rows. It should be emphasized that this
-  // method always inserts a new entry and does not check for existing
-  // entries at the specified row and column position. Duplicate entries
-  // for a given row and column position will result in undefined
-  // behavior.
-  void InsertEntry(int row, int col, const double& value);
-
-  // Clear all entries for rows, starting from row index `row_start`
-  // and proceeding for `num_rows`.
-  void ClearRows(int row_start, int num_rows);
-
-  // Make the underlying internal `CompressedRowSparseMatrix` data structures
-  // consistent. Additional space for non-zero entries in the
-  // `CompressedRowSparseMatrix` can be reserved by specifying
-  // `num_additional_elements`. This is useful when it is known that rows will
-  // be appended to the `CompressedRowSparseMatrix` (e.g. appending a diagonal
-  // matrix to the jacobian) as it prevents need for future reallocation.
-  void Finalize(int num_additional_elements);
-
- private:
-  std::vector<std::vector<int>> dynamic_cols_;
-  std::vector<std::vector<double>> dynamic_values_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_DYNAMIC_COMPRESSED_ROW_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc
deleted file mode 100644
index 47d86f2..0000000
--- a/third_party/ceres/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc
+++ /dev/null
@@ -1,214 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-
-#include "ceres/dynamic_compressed_row_sparse_matrix.h"
-
-#include <memory>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-class DynamicCompressedRowSparseMatrixTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    num_rows = 7;
-    num_cols = 4;
-
-    // The number of additional elements reserved when `Finalize` is called
-    // should have no effect on the number of rows, columns or nonzeros.
-    // Set this to some nonzero value to be sure.
-    num_additional_elements = 13;
-
-    expected_num_nonzeros = num_rows * num_cols - std::min(num_rows, num_cols);
-
-    InitialiseDenseReference();
-    InitialiseSparseMatrixReferences();
-
-    dcrsm = std::make_unique<DynamicCompressedRowSparseMatrix>(
-        num_rows, num_cols, 0);
-  }
-
-  void Finalize() { dcrsm->Finalize(num_additional_elements); }
-
-  void InitialiseDenseReference() {
-    dense.resize(num_rows, num_cols);
-    dense.setZero();
-    int num_nonzeros = 0;
-    for (int i = 0; i < (num_rows * num_cols); ++i) {
-      const int r = i / num_cols, c = i % num_cols;
-      if (r != c) {
-        dense(r, c) = i + 1;
-        ++num_nonzeros;
-      }
-    }
-    ASSERT_EQ(num_nonzeros, expected_num_nonzeros);
-  }
-
-  void InitialiseSparseMatrixReferences() {
-    std::vector<int> rows, cols;
-    std::vector<double> values;
-    for (int i = 0; i < (num_rows * num_cols); ++i) {
-      const int r = i / num_cols, c = i % num_cols;
-      if (r != c) {
-        rows.push_back(r);
-        cols.push_back(c);
-        values.push_back(i + 1);
-      }
-    }
-    ASSERT_EQ(values.size(), expected_num_nonzeros);
-
-    tsm = std::make_unique<TripletSparseMatrix>(
-        num_rows, num_cols, expected_num_nonzeros);
-    std::copy(rows.begin(), rows.end(), tsm->mutable_rows());
-    std::copy(cols.begin(), cols.end(), tsm->mutable_cols());
-    std::copy(values.begin(), values.end(), tsm->mutable_values());
-    tsm->set_num_nonzeros(values.size());
-
-    Matrix dense_from_tsm;
-    tsm->ToDenseMatrix(&dense_from_tsm);
-    ASSERT_TRUE((dense.array() == dense_from_tsm.array()).all());
-
-    crsm = CompressedRowSparseMatrix::FromTripletSparseMatrix(*tsm);
-    Matrix dense_from_crsm;
-    crsm->ToDenseMatrix(&dense_from_crsm);
-    ASSERT_TRUE((dense.array() == dense_from_crsm.array()).all());
-  }
-
-  void InsertNonZeroEntriesFromDenseReference() {
-    for (int r = 0; r < num_rows; ++r) {
-      for (int c = 0; c < num_cols; ++c) {
-        const double& v = dense(r, c);
-        if (v != 0.0) {
-          dcrsm->InsertEntry(r, c, v);
-        }
-      }
-    }
-  }
-
-  void ExpectEmpty() {
-    EXPECT_EQ(dcrsm->num_rows(), num_rows);
-    EXPECT_EQ(dcrsm->num_cols(), num_cols);
-    EXPECT_EQ(dcrsm->num_nonzeros(), 0);
-
-    Matrix dense_from_dcrsm;
-    dcrsm->ToDenseMatrix(&dense_from_dcrsm);
-    EXPECT_EQ(dense_from_dcrsm.rows(), num_rows);
-    EXPECT_EQ(dense_from_dcrsm.cols(), num_cols);
-    EXPECT_TRUE((dense_from_dcrsm.array() == 0.0).all());
-  }
-
-  void ExpectEqualToDenseReference() {
-    Matrix dense_from_dcrsm;
-    dcrsm->ToDenseMatrix(&dense_from_dcrsm);
-    EXPECT_TRUE((dense.array() == dense_from_dcrsm.array()).all());
-  }
-
-  void ExpectEqualToCompressedRowSparseMatrixReference() {
-    using ConstIntVectorRef = Eigen::Map<const Eigen::VectorXi>;
-
-    ConstIntVectorRef crsm_rows(crsm->rows(), crsm->num_rows() + 1);
-    ConstIntVectorRef dcrsm_rows(dcrsm->rows(), dcrsm->num_rows() + 1);
-    EXPECT_TRUE((crsm_rows.array() == dcrsm_rows.array()).all());
-
-    ConstIntVectorRef crsm_cols(crsm->cols(), crsm->num_nonzeros());
-    ConstIntVectorRef dcrsm_cols(dcrsm->cols(), dcrsm->num_nonzeros());
-    EXPECT_TRUE((crsm_cols.array() == dcrsm_cols.array()).all());
-
-    ConstVectorRef crsm_values(crsm->values(), crsm->num_nonzeros());
-    ConstVectorRef dcrsm_values(dcrsm->values(), dcrsm->num_nonzeros());
-    EXPECT_TRUE((crsm_values.array() == dcrsm_values.array()).all());
-  }
-
-  int num_rows;
-  int num_cols;
-
-  int num_additional_elements;
-
-  int expected_num_nonzeros;
-
-  Matrix dense;
-  std::unique_ptr<TripletSparseMatrix> tsm;
-  std::unique_ptr<CompressedRowSparseMatrix> crsm;
-
-  std::unique_ptr<DynamicCompressedRowSparseMatrix> dcrsm;
-};
-
-TEST_F(DynamicCompressedRowSparseMatrixTest, Initialization) {
-  ExpectEmpty();
-
-  Finalize();
-  ExpectEmpty();
-}
-
-TEST_F(DynamicCompressedRowSparseMatrixTest, InsertEntryAndFinalize) {
-  InsertNonZeroEntriesFromDenseReference();
-  ExpectEmpty();
-
-  Finalize();
-  ExpectEqualToDenseReference();
-  ExpectEqualToCompressedRowSparseMatrixReference();
-}
-
-TEST_F(DynamicCompressedRowSparseMatrixTest, ClearRows) {
-  InsertNonZeroEntriesFromDenseReference();
-  Finalize();
-  ExpectEqualToDenseReference();
-  ExpectEqualToCompressedRowSparseMatrixReference();
-
-  dcrsm->ClearRows(0, 0);
-  Finalize();
-  ExpectEqualToDenseReference();
-  ExpectEqualToCompressedRowSparseMatrixReference();
-
-  dcrsm->ClearRows(0, num_rows);
-  ExpectEqualToCompressedRowSparseMatrixReference();
-
-  Finalize();
-  ExpectEmpty();
-
-  InsertNonZeroEntriesFromDenseReference();
-  dcrsm->ClearRows(1, 2);
-  Finalize();
-  dense.block(1, 0, 2, num_cols).setZero();
-  ExpectEqualToDenseReference();
-
-  InitialiseDenseReference();
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/dynamic_numeric_diff_cost_function_test.cc b/third_party/ceres/internal/ceres/dynamic_numeric_diff_cost_function_test.cc
deleted file mode 100644
index aec7819..0000000
--- a/third_party/ceres/internal/ceres/dynamic_numeric_diff_cost_function_test.cc
+++ /dev/null
@@ -1,533 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         mierle@gmail.com (Keir Mierle)
-
-#include "ceres/dynamic_numeric_diff_cost_function.h"
-
-#include <cstddef>
-#include <memory>
-#include <vector>
-
-#include "ceres/numeric_diff_options.h"
-#include "ceres/types.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-const double kTolerance = 1e-6;
-
-// Takes 2 parameter blocks:
-//     parameters[0] is size 10.
-//     parameters[1] is size 5.
-// Emits 21 residuals:
-//     A: i - parameters[0][i], for i in [0,10)  -- this is 10 residuals
-//     B: parameters[0][i] - i, for i in [0,10)  -- this is another 10.
-//     C: sum(parameters[0][i]^2 - 8*parameters[0][i]) + sum(parameters[1][i])
-class MyCostFunctor {
- public:
-  bool operator()(double const* const* parameters, double* residuals) const {
-    const double* params0 = parameters[0];
-    int r = 0;
-    for (int i = 0; i < 10; ++i) {
-      residuals[r++] = i - params0[i];
-      residuals[r++] = params0[i] - i;
-    }
-
-    double c_residual = 0.0;
-    for (int i = 0; i < 10; ++i) {
-      c_residual += pow(params0[i], 2) - 8.0 * params0[i];
-    }
-
-    const double* params1 = parameters[1];
-    for (int i = 0; i < 5; ++i) {
-      c_residual += params1[i];
-    }
-    residuals[r++] = c_residual;
-    return true;
-  }
-};
-
-TEST(DynamicNumericdiffCostFunctionTest, TestResiduals) {
-  std::vector<double> param_block_0(10, 0.0);
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicNumericDiffCostFunction<MyCostFunctor> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Test residual computation.
-  std::vector<double> residuals(21, -100000);
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-  EXPECT_TRUE(
-      cost_function.Evaluate(&parameter_blocks[0], residuals.data(), nullptr));
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(0, residuals.at(20));
-}
-
-TEST(DynamicNumericdiffCostFunctionTest, TestJacobian) {
-  // Test the residual counting.
-  std::vector<double> param_block_0(10, 0.0);
-  for (int i = 0; i < 10; ++i) {
-    param_block_0[i] = 2 * i;
-  }
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicNumericDiffCostFunction<MyCostFunctor> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Prepare the residuals.
-  std::vector<double> residuals(21, -100000);
-
-  // Prepare the parameters.
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-
-  // Prepare the jacobian.
-  std::vector<std::vector<double>> jacobian_vect(2);
-  jacobian_vect[0].resize(21 * 10, -100000);
-  jacobian_vect[1].resize(21 * 5, -100000);
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect[0].data());
-  jacobian.push_back(jacobian_vect[1].data());
-
-  // Test jacobian computation.
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(+1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(420, residuals.at(20));
-  for (int p = 0; p < 10; ++p) {
-    // Check "A" Jacobian.
-    EXPECT_NEAR(-1.0, jacobian_vect[0][2 * p * 10 + p], kTolerance);
-    // Check "B" Jacobian.
-    EXPECT_NEAR(+1.0, jacobian_vect[0][(2 * p + 1) * 10 + p], kTolerance);
-    jacobian_vect[0][2 * p * 10 + p] = 0.0;
-    jacobian_vect[0][(2 * p + 1) * 10 + p] = 0.0;
-  }
-
-  // Check "C" Jacobian for first parameter block.
-  for (int p = 0; p < 10; ++p) {
-    EXPECT_NEAR(4 * p - 8, jacobian_vect[0][20 * 10 + p], kTolerance);
-    jacobian_vect[0][20 * 10 + p] = 0.0;
-  }
-  for (double entry : jacobian_vect[0]) {
-    EXPECT_NEAR(0.0, entry, kTolerance);
-  }
-
-  // Check "C" Jacobian for second parameter block.
-  for (int p = 0; p < 5; ++p) {
-    EXPECT_NEAR(1.0, jacobian_vect[1][20 * 5 + p], kTolerance);
-    jacobian_vect[1][20 * 5 + p] = 0.0;
-  }
-  for (double entry : jacobian_vect[1]) {
-    EXPECT_NEAR(0.0, entry, kTolerance);
-  }
-}
-
-TEST(DynamicNumericdiffCostFunctionTest,
-     JacobianWithFirstParameterBlockConstant) {  // NOLINT
-  // Test the residual counting.
-  std::vector<double> param_block_0(10, 0.0);
-  for (int i = 0; i < 10; ++i) {
-    param_block_0[i] = 2 * i;
-  }
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicNumericDiffCostFunction<MyCostFunctor> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Prepare the residuals.
-  std::vector<double> residuals(21, -100000);
-
-  // Prepare the parameters.
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-
-  // Prepare the jacobian.
-  std::vector<std::vector<double>> jacobian_vect(2);
-  jacobian_vect[0].resize(21 * 10, -100000);
-  jacobian_vect[1].resize(21 * 5, -100000);
-  std::vector<double*> jacobian;
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect[1].data());
-
-  // Test jacobian computation.
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(+1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(420, residuals.at(20));
-
-  // Check "C" Jacobian for second parameter block.
-  for (int p = 0; p < 5; ++p) {
-    EXPECT_NEAR(1.0, jacobian_vect[1][20 * 5 + p], kTolerance);
-    jacobian_vect[1][20 * 5 + p] = 0.0;
-  }
-  for (double& i : jacobian_vect[1]) {
-    EXPECT_EQ(0.0, i);
-  }
-}
-
-TEST(DynamicNumericdiffCostFunctionTest,
-     JacobianWithSecondParameterBlockConstant) {  // NOLINT
-  // Test the residual counting.
-  std::vector<double> param_block_0(10, 0.0);
-  for (int i = 0; i < 10; ++i) {
-    param_block_0[i] = 2 * i;
-  }
-  std::vector<double> param_block_1(5, 0.0);
-  DynamicNumericDiffCostFunction<MyCostFunctor> cost_function(
-      new MyCostFunctor());
-  cost_function.AddParameterBlock(param_block_0.size());
-  cost_function.AddParameterBlock(param_block_1.size());
-  cost_function.SetNumResiduals(21);
-
-  // Prepare the residuals.
-  std::vector<double> residuals(21, -100000);
-
-  // Prepare the parameters.
-  std::vector<double*> parameter_blocks(2);
-  parameter_blocks[0] = &param_block_0[0];
-  parameter_blocks[1] = &param_block_1[0];
-
-  // Prepare the jacobian.
-  std::vector<std::vector<double>> jacobian_vect(2);
-  jacobian_vect[0].resize(21 * 10, -100000);
-  jacobian_vect[1].resize(21 * 5, -100000);
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect[0].data());
-  jacobian.push_back(nullptr);
-
-  // Test jacobian computation.
-  EXPECT_TRUE(cost_function.Evaluate(
-      parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-  for (int r = 0; r < 10; ++r) {
-    EXPECT_EQ(-1.0 * r, residuals.at(r * 2));
-    EXPECT_EQ(+1.0 * r, residuals.at(r * 2 + 1));
-  }
-  EXPECT_EQ(420, residuals.at(20));
-  for (int p = 0; p < 10; ++p) {
-    // Check "A" Jacobian.
-    EXPECT_NEAR(-1.0, jacobian_vect[0][2 * p * 10 + p], kTolerance);
-    // Check "B" Jacobian.
-    EXPECT_NEAR(+1.0, jacobian_vect[0][(2 * p + 1) * 10 + p], kTolerance);
-    jacobian_vect[0][2 * p * 10 + p] = 0.0;
-    jacobian_vect[0][(2 * p + 1) * 10 + p] = 0.0;
-  }
-
-  // Check "C" Jacobian for first parameter block.
-  for (int p = 0; p < 10; ++p) {
-    EXPECT_NEAR(4 * p - 8, jacobian_vect[0][20 * 10 + p], kTolerance);
-    jacobian_vect[0][20 * 10 + p] = 0.0;
-  }
-  for (double& i : jacobian_vect[0]) {
-    EXPECT_EQ(0.0, i);
-  }
-}
-
-// Takes 3 parameter blocks:
-//     parameters[0] (x) is size 1.
-//     parameters[1] (y) is size 2.
-//     parameters[2] (z) is size 3.
-// Emits 7 residuals:
-//     A: x[0] (= sum_x)
-//     B: y[0] + 2.0 * y[1] (= sum_y)
-//     C: z[0] + 3.0 * z[1] + 6.0 * z[2] (= sum_z)
-//     D: sum_x * sum_y
-//     E: sum_y * sum_z
-//     F: sum_x * sum_z
-//     G: sum_x * sum_y * sum_z
-class MyThreeParameterCostFunctor {
- public:
-  template <typename T>
-  bool operator()(T const* const* parameters, T* residuals) const {
-    const T* x = parameters[0];
-    const T* y = parameters[1];
-    const T* z = parameters[2];
-
-    T sum_x = x[0];
-    T sum_y = y[0] + 2.0 * y[1];
-    T sum_z = z[0] + 3.0 * z[1] + 6.0 * z[2];
-
-    residuals[0] = sum_x;
-    residuals[1] = sum_y;
-    residuals[2] = sum_z;
-    residuals[3] = sum_x * sum_y;
-    residuals[4] = sum_y * sum_z;
-    residuals[5] = sum_x * sum_z;
-    residuals[6] = sum_x * sum_y * sum_z;
-    return true;
-  }
-};
-
-class ThreeParameterCostFunctorTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    // Prepare the parameters.
-    x_.resize(1);
-    x_[0] = 0.0;
-
-    y_.resize(2);
-    y_[0] = 1.0;
-    y_[1] = 3.0;
-
-    z_.resize(3);
-    z_[0] = 2.0;
-    z_[1] = 4.0;
-    z_[2] = 6.0;
-
-    parameter_blocks_.resize(3);
-    parameter_blocks_[0] = &x_[0];
-    parameter_blocks_[1] = &y_[0];
-    parameter_blocks_[2] = &z_[0];
-
-    // Prepare the cost function.
-    using DynamicMyThreeParameterCostFunction =
-        DynamicNumericDiffCostFunction<MyThreeParameterCostFunctor>;
-    auto cost_function = std::make_unique<DynamicMyThreeParameterCostFunction>(
-        new MyThreeParameterCostFunctor());
-    cost_function->AddParameterBlock(1);
-    cost_function->AddParameterBlock(2);
-    cost_function->AddParameterBlock(3);
-    cost_function->SetNumResiduals(7);
-
-    cost_function_ = std::move(cost_function);
-
-    // Setup jacobian data.
-    jacobian_vect_.resize(3);
-    jacobian_vect_[0].resize(7 * x_.size(), -100000);
-    jacobian_vect_[1].resize(7 * y_.size(), -100000);
-    jacobian_vect_[2].resize(7 * z_.size(), -100000);
-
-    // Prepare the expected residuals.
-    const double sum_x = x_[0];
-    const double sum_y = y_[0] + 2.0 * y_[1];
-    const double sum_z = z_[0] + 3.0 * z_[1] + 6.0 * z_[2];
-
-    expected_residuals_.resize(7);
-    expected_residuals_[0] = sum_x;
-    expected_residuals_[1] = sum_y;
-    expected_residuals_[2] = sum_z;
-    expected_residuals_[3] = sum_x * sum_y;
-    expected_residuals_[4] = sum_y * sum_z;
-    expected_residuals_[5] = sum_x * sum_z;
-    expected_residuals_[6] = sum_x * sum_y * sum_z;
-
-    // Prepare the expected jacobian entries.
-    expected_jacobian_x_.resize(7);
-    expected_jacobian_x_[0] = 1.0;
-    expected_jacobian_x_[1] = 0.0;
-    expected_jacobian_x_[2] = 0.0;
-    expected_jacobian_x_[3] = sum_y;
-    expected_jacobian_x_[4] = 0.0;
-    expected_jacobian_x_[5] = sum_z;
-    expected_jacobian_x_[6] = sum_y * sum_z;
-
-    expected_jacobian_y_.resize(14);
-    expected_jacobian_y_[0] = 0.0;
-    expected_jacobian_y_[1] = 0.0;
-    expected_jacobian_y_[2] = 1.0;
-    expected_jacobian_y_[3] = 2.0;
-    expected_jacobian_y_[4] = 0.0;
-    expected_jacobian_y_[5] = 0.0;
-    expected_jacobian_y_[6] = sum_x;
-    expected_jacobian_y_[7] = 2.0 * sum_x;
-    expected_jacobian_y_[8] = sum_z;
-    expected_jacobian_y_[9] = 2.0 * sum_z;
-    expected_jacobian_y_[10] = 0.0;
-    expected_jacobian_y_[11] = 0.0;
-    expected_jacobian_y_[12] = sum_x * sum_z;
-    expected_jacobian_y_[13] = 2.0 * sum_x * sum_z;
-
-    expected_jacobian_z_.resize(21);
-    expected_jacobian_z_[0] = 0.0;
-    expected_jacobian_z_[1] = 0.0;
-    expected_jacobian_z_[2] = 0.0;
-    expected_jacobian_z_[3] = 0.0;
-    expected_jacobian_z_[4] = 0.0;
-    expected_jacobian_z_[5] = 0.0;
-    expected_jacobian_z_[6] = 1.0;
-    expected_jacobian_z_[7] = 3.0;
-    expected_jacobian_z_[8] = 6.0;
-    expected_jacobian_z_[9] = 0.0;
-    expected_jacobian_z_[10] = 0.0;
-    expected_jacobian_z_[11] = 0.0;
-    expected_jacobian_z_[12] = sum_y;
-    expected_jacobian_z_[13] = 3.0 * sum_y;
-    expected_jacobian_z_[14] = 6.0 * sum_y;
-    expected_jacobian_z_[15] = sum_x;
-    expected_jacobian_z_[16] = 3.0 * sum_x;
-    expected_jacobian_z_[17] = 6.0 * sum_x;
-    expected_jacobian_z_[18] = sum_x * sum_y;
-    expected_jacobian_z_[19] = 3.0 * sum_x * sum_y;
-    expected_jacobian_z_[20] = 6.0 * sum_x * sum_y;
-  }
-
- protected:
-  std::vector<double> x_;
-  std::vector<double> y_;
-  std::vector<double> z_;
-
-  std::vector<double*> parameter_blocks_;
-
-  std::unique_ptr<CostFunction> cost_function_;
-
-  std::vector<std::vector<double>> jacobian_vect_;
-
-  std::vector<double> expected_residuals_;
-
-  std::vector<double> expected_jacobian_x_;
-  std::vector<double> expected_jacobian_y_;
-  std::vector<double> expected_jacobian_z_;
-};
-
-TEST_F(ThreeParameterCostFunctorTest, TestThreeParameterResiduals) {
-  std::vector<double> residuals(7, -100000);
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), nullptr));
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-}
-
-TEST_F(ThreeParameterCostFunctorTest, TestThreeParameterJacobian) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(jacobian_vect_[1].data());
-  jacobian.push_back(jacobian_vect_[2].data());
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_NEAR(expected_jacobian_x_[i], jacobian[0][i], kTolerance);
-  }
-
-  for (int i = 0; i < 14; ++i) {
-    EXPECT_NEAR(expected_jacobian_y_[i], jacobian[1][i], kTolerance);
-  }
-
-  for (int i = 0; i < 21; ++i) {
-    EXPECT_NEAR(expected_jacobian_z_[i], jacobian[2][i], kTolerance);
-  }
-}
-
-TEST_F(ThreeParameterCostFunctorTest,
-       ThreeParameterJacobianWithFirstAndLastParameterBlockConstant) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[1].data());
-  jacobian.push_back(nullptr);
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 14; ++i) {
-    EXPECT_NEAR(expected_jacobian_y_[i], jacobian[1][i], kTolerance);
-  }
-}
-
-TEST_F(ThreeParameterCostFunctorTest,
-       ThreeParameterJacobianWithSecondParameterBlockConstant) {
-  std::vector<double> residuals(7, -100000);
-
-  std::vector<double*> jacobian;
-  jacobian.push_back(jacobian_vect_[0].data());
-  jacobian.push_back(nullptr);
-  jacobian.push_back(jacobian_vect_[2].data());
-
-  EXPECT_TRUE(cost_function_->Evaluate(
-      parameter_blocks_.data(), residuals.data(), jacobian.data()));
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_EQ(expected_residuals_[i], residuals[i]);
-  }
-
-  for (int i = 0; i < 7; ++i) {
-    EXPECT_NEAR(expected_jacobian_x_[i], jacobian[0][i], kTolerance);
-  }
-
-  for (int i = 0; i < 21; ++i) {
-    EXPECT_NEAR(expected_jacobian_z_[i], jacobian[2][i], kTolerance);
-  }
-}
-
-TEST(DynamicNumericdiffCostFunctionTest, DeductionTemplateCompilationTest) {
-  // Ensure deduction guide to be working
-  (void)DynamicNumericDiffCostFunction{std::make_unique<MyCostFunctor>()};
-  (void)DynamicNumericDiffCostFunction{std::make_unique<MyCostFunctor>(),
-                                       NumericDiffOptions{}};
-  (void)DynamicNumericDiffCostFunction{new MyCostFunctor};
-  (void)DynamicNumericDiffCostFunction{new MyCostFunctor, TAKE_OWNERSHIP};
-  (void)DynamicNumericDiffCostFunction{
-      new MyCostFunctor, TAKE_OWNERSHIP, NumericDiffOptions{}};
-}
-
-TEST(DynamicNumericdiffCostFunctionTest, ArgumentForwarding) {
-  (void)DynamicNumericDiffCostFunction<MyCostFunctor>();
-}
-
-TEST(DynamicAutoDiffCostFunctionTest, UniquePtr) {
-  (void)DynamicNumericDiffCostFunction<MyCostFunctor>(
-      std::make_unique<MyCostFunctor>());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc b/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
deleted file mode 100644
index d77d7f7..0000000
--- a/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
+++ /dev/null
@@ -1,234 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/dynamic_sparse_normal_cholesky_solver.h"
-
-#include <algorithm>
-#include <cstring>
-#include <ctime>
-#include <memory>
-#include <sstream>
-#include <utility>
-
-#include "Eigen/SparseCore"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/suitesparse.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-#include "Eigen/SparseCholesky"
-#endif
-
-namespace ceres::internal {
-
-DynamicSparseNormalCholeskySolver::DynamicSparseNormalCholeskySolver(
-    LinearSolver::Options options)
-    : options_(std::move(options)) {}
-
-LinearSolver::Summary DynamicSparseNormalCholeskySolver::SolveImpl(
-    CompressedRowSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  const int num_cols = A->num_cols();
-  VectorRef(x, num_cols).setZero();
-  A->LeftMultiplyAndAccumulate(b, x);
-
-  if (per_solve_options.D != nullptr) {
-    // Temporarily append a diagonal block to the A matrix, but undo
-    // it before returning the matrix to the user.
-    std::unique_ptr<CompressedRowSparseMatrix> regularizer;
-    if (!A->col_blocks().empty()) {
-      regularizer = CompressedRowSparseMatrix::CreateBlockDiagonalMatrix(
-          per_solve_options.D, A->col_blocks());
-    } else {
-      regularizer = std::make_unique<CompressedRowSparseMatrix>(
-          per_solve_options.D, num_cols);
-    }
-    A->AppendRows(*regularizer);
-  }
-
-  LinearSolver::Summary summary;
-  switch (options_.sparse_linear_algebra_library_type) {
-    case SUITE_SPARSE:
-      summary = SolveImplUsingSuiteSparse(A, x);
-      break;
-    case EIGEN_SPARSE:
-      summary = SolveImplUsingEigen(A, x);
-      break;
-    default:
-      LOG(FATAL) << "Unsupported sparse linear algebra library for "
-                 << "dynamic sparsity: "
-                 << SparseLinearAlgebraLibraryTypeToString(
-                        options_.sparse_linear_algebra_library_type);
-  }
-
-  if (per_solve_options.D != nullptr) {
-    A->DeleteRows(num_cols);
-  }
-
-  return summary;
-}
-
-LinearSolver::Summary DynamicSparseNormalCholeskySolver::SolveImplUsingEigen(
-    CompressedRowSparseMatrix* A, double* rhs_and_solution) {
-#ifndef CERES_USE_EIGEN_SPARSE
-
-  LinearSolver::Summary summary;
-  summary.num_iterations = 0;
-  summary.termination_type = LinearSolverTerminationType::FATAL_ERROR;
-  summary.message =
-      "SPARSE_NORMAL_CHOLESKY cannot be used with EIGEN_SPARSE "
-      "because Ceres was not built with support for "
-      "Eigen's SimplicialLDLT decomposition. "
-      "This requires enabling building with -DEIGENSPARSE=ON.";
-  return summary;
-
-#else
-
-  EventLogger event_logger("DynamicSparseNormalCholeskySolver::Eigen::Solve");
-
-  Eigen::Map<Eigen::SparseMatrix<double, Eigen::RowMajor>> a(
-      A->num_rows(),
-      A->num_cols(),
-      A->num_nonzeros(),
-      A->mutable_rows(),
-      A->mutable_cols(),
-      A->mutable_values());
-
-  Eigen::SparseMatrix<double> lhs = a.transpose() * a;
-  Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>> solver;
-
-  LinearSolver::Summary summary;
-  summary.num_iterations = 1;
-  summary.termination_type = LinearSolverTerminationType::SUCCESS;
-  summary.message = "Success.";
-
-  solver.analyzePattern(lhs);
-  if (VLOG_IS_ON(2)) {
-    std::stringstream ss;
-    solver.dumpMemory(ss);
-    VLOG(2) << "Symbolic Analysis\n" << ss.str();
-  }
-
-  event_logger.AddEvent("Analyze");
-  if (solver.info() != Eigen::Success) {
-    summary.termination_type = LinearSolverTerminationType::FATAL_ERROR;
-    summary.message = "Eigen failure. Unable to find symbolic factorization.";
-    return summary;
-  }
-
-  solver.factorize(lhs);
-  event_logger.AddEvent("Factorize");
-  if (solver.info() != Eigen::Success) {
-    summary.termination_type = LinearSolverTerminationType::FAILURE;
-    summary.message = "Eigen failure. Unable to find numeric factorization.";
-    return summary;
-  }
-
-  const Vector rhs = VectorRef(rhs_and_solution, lhs.cols());
-  VectorRef(rhs_and_solution, lhs.cols()) = solver.solve(rhs);
-  event_logger.AddEvent("Solve");
-  if (solver.info() != Eigen::Success) {
-    summary.termination_type = LinearSolverTerminationType::FAILURE;
-    summary.message = "Eigen failure. Unable to do triangular solve.";
-    return summary;
-  }
-
-  return summary;
-#endif  // CERES_USE_EIGEN_SPARSE
-}
-
-LinearSolver::Summary
-DynamicSparseNormalCholeskySolver::SolveImplUsingSuiteSparse(
-    CompressedRowSparseMatrix* A, double* rhs_and_solution) {
-#ifdef CERES_NO_SUITESPARSE
-  (void)A;
-  (void)rhs_and_solution;
-
-  LinearSolver::Summary summary;
-  summary.num_iterations = 0;
-  summary.termination_type = LinearSolverTerminationType::FATAL_ERROR;
-  summary.message =
-      "SPARSE_NORMAL_CHOLESKY cannot be used with SUITE_SPARSE "
-      "because Ceres was not built with support for SuiteSparse. "
-      "This requires enabling building with -DSUITESPARSE=ON.";
-  return summary;
-
-#else
-
-  EventLogger event_logger(
-      "DynamicSparseNormalCholeskySolver::SuiteSparse::Solve");
-  LinearSolver::Summary summary;
-  summary.termination_type = LinearSolverTerminationType::SUCCESS;
-  summary.num_iterations = 1;
-  summary.message = "Success.";
-
-  SuiteSparse ss;
-  const int num_cols = A->num_cols();
-  cholmod_sparse lhs = ss.CreateSparseMatrixTransposeView(A);
-  event_logger.AddEvent("Setup");
-  cholmod_factor* factor =
-      ss.AnalyzeCholesky(&lhs, options_.ordering_type, &summary.message);
-  event_logger.AddEvent("Analysis");
-
-  if (factor == nullptr) {
-    summary.termination_type = LinearSolverTerminationType::FATAL_ERROR;
-    return summary;
-  }
-
-  summary.termination_type = ss.Cholesky(&lhs, factor, &summary.message);
-  if (summary.termination_type == LinearSolverTerminationType::SUCCESS) {
-    cholmod_dense cholmod_rhs =
-        ss.CreateDenseVectorView(rhs_and_solution, num_cols);
-    cholmod_dense* solution = ss.Solve(factor, &cholmod_rhs, &summary.message);
-    event_logger.AddEvent("Solve");
-    if (solution != nullptr) {
-      memcpy(
-          rhs_and_solution, solution->x, num_cols * sizeof(*rhs_and_solution));
-      ss.Free(solution);
-    } else {
-      summary.termination_type = LinearSolverTerminationType::FAILURE;
-    }
-  }
-
-  ss.Free(factor);
-  event_logger.AddEvent("Teardown");
-  return summary;
-
-#endif
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver.h b/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver.h
deleted file mode 100644
index 394ba2a..0000000
--- a/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// A solver for sparse linear least squares problem based on solving
-// the normal equations via a sparse cholesky factorization.
-
-#ifndef CERES_INTERNAL_DYNAMIC_SPARSE_NORMAL_CHOLESKY_SOLVER_H_
-#define CERES_INTERNAL_DYNAMIC_SPARSE_NORMAL_CHOLESKY_SOLVER_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-class CompressedRowSparseMatrix;
-
-// A variant of SparseNormalCholeskySolver in the case where matrix
-// sparsity is not constant across calls to Solve. This means that
-// there is no benefit to symbolically factorizing the matrix and
-// caching this factorization.
-//
-// TODO(alex): Add support for Accelerate sparse solvers:
-// https://github.com/ceres-solver/ceres-solver/issues/397
-class CERES_NO_EXPORT DynamicSparseNormalCholeskySolver
-    : public CompressedRowSparseMatrixSolver {
- public:
-  explicit DynamicSparseNormalCholeskySolver(LinearSolver::Options options);
-
- private:
-  LinearSolver::Summary SolveImpl(CompressedRowSparseMatrix* A,
-                                  const double* b,
-                                  const LinearSolver::PerSolveOptions& options,
-                                  double* x) final;
-
-  LinearSolver::Summary SolveImplUsingSuiteSparse(CompressedRowSparseMatrix* A,
-                                                  double* rhs_and_solution);
-
-  LinearSolver::Summary SolveImplUsingEigen(CompressedRowSparseMatrix* A,
-                                            double* rhs_and_solution);
-
-  const LinearSolver::Options options_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_DYNAMIC_SPARSE_NORMAL_CHOLESKY_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc b/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc
deleted file mode 100644
index 4afd372..0000000
--- a/third_party/ceres/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <memory>
-
-#include "Eigen/Cholesky"
-#include "ceres/casts.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/config.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// TODO(sameeragarwal): These tests needs to be re-written to be more
-// thorough, they do not really test the dynamic nature of the
-// sparsity.
-class DynamicSparseNormalCholeskySolverTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(1);
-    A_ = CompressedRowSparseMatrix::FromTripletSparseMatrix(
-        *down_cast<TripletSparseMatrix*>(problem->A.get()));
-    b_ = std::move(problem->b);
-    D_ = std::move(problem->D);
-  }
-
-  void TestSolver(const LinearSolver::Options& options, double* D) {
-    Matrix dense_A;
-    A_->ToDenseMatrix(&dense_A);
-    Matrix lhs = dense_A.transpose() * dense_A;
-    if (D != nullptr) {
-      lhs += (ConstVectorRef(D, A_->num_cols()).array() *
-              ConstVectorRef(D, A_->num_cols()).array())
-                 .matrix()
-                 .asDiagonal();
-    }
-
-    Vector rhs(A_->num_cols());
-    rhs.setZero();
-    A_->LeftMultiplyAndAccumulate(b_.get(), rhs.data());
-    Vector expected_solution = lhs.llt().solve(rhs);
-
-    std::unique_ptr<LinearSolver> solver(LinearSolver::Create(options));
-    LinearSolver::PerSolveOptions per_solve_options;
-    per_solve_options.D = D;
-    Vector actual_solution(A_->num_cols());
-    LinearSolver::Summary summary;
-    summary = solver->Solve(
-        A_.get(), b_.get(), per_solve_options, actual_solution.data());
-
-    EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-
-    for (int i = 0; i < A_->num_cols(); ++i) {
-      EXPECT_NEAR(expected_solution(i), actual_solution(i), 1e-8)
-          << "\nExpected: " << expected_solution.transpose()
-          << "\nActual: " << actual_solution.transpose();
-    }
-  }
-
-  void TestSolver(
-      const SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-      const OrderingType ordering_type) {
-    LinearSolver::Options options;
-    options.type = SPARSE_NORMAL_CHOLESKY;
-    options.dynamic_sparsity = true;
-    options.sparse_linear_algebra_library_type =
-        sparse_linear_algebra_library_type;
-    options.ordering_type = ordering_type;
-    ContextImpl context;
-    options.context = &context;
-    TestSolver(options, nullptr);
-    TestSolver(options, D_.get());
-  }
-
-  std::unique_ptr<CompressedRowSparseMatrix> A_;
-  std::unique_ptr<double[]> b_;
-  std::unique_ptr<double[]> D_;
-};
-
-#ifndef CERES_NO_SUITESPARSE
-TEST_F(DynamicSparseNormalCholeskySolverTest, SuiteSparseAMD) {
-  TestSolver(SUITE_SPARSE, OrderingType::AMD);
-}
-
-#ifndef CERES_NO_CHOLMOD_PARTITION
-TEST_F(DynamicSparseNormalCholeskySolverTest, SuiteSparseNESDIS) {
-  TestSolver(SUITE_SPARSE, OrderingType::NESDIS);
-}
-#endif
-#endif
-
-#ifdef CERES_USE_EIGEN_SPARSE
-TEST_F(DynamicSparseNormalCholeskySolverTest, EigenAMD) {
-  TestSolver(EIGEN_SPARSE, OrderingType::AMD);
-}
-
-#ifndef CERES_NO_EIGEN_METIS
-TEST_F(DynamicSparseNormalCholeskySolverTest, EigenNESDIS) {
-  TestSolver(EIGEN_SPARSE, OrderingType::NESDIS);
-}
-#endif
-#endif  // CERES_USE_EIGEN_SPARSE
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/dynamic_sparsity_test.cc b/third_party/ceres/internal/ceres/dynamic_sparsity_test.cc
deleted file mode 100644
index 0c29595..0000000
--- a/third_party/ceres/internal/ceres/dynamic_sparsity_test.cc
+++ /dev/null
@@ -1,463 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: richie.stebbing@gmail.com (Richard Stebbing)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// Based on examples/ellipse_approximation.cc
-
-#include <cmath>
-#include <utility>
-#include <vector>
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Data generated with the following Python code.
-//   import numpy as np
-//   np.random.seed(1337)
-//   t = np.linspace(0.0, 2.0 * np.pi, 212, endpoint=False)
-//   t += 2.0 * np.pi * 0.01 * np.random.randn(t.size)
-//   theta = np.deg2rad(15)
-//   a, b = np.cos(theta), np.sin(theta)
-//   R = np.array([[a, -b],
-//                 [b, a]])
-//   Y = np.dot(np.c_[4.0 * np.cos(t), np.sin(t)], R.T)
-
-const int kYRows = 212;
-const int kYCols = 2;
-// clang-format off
-const double kYData[kYRows * kYCols] = {
-  +3.871364e+00, +9.916027e-01,
-  +3.864003e+00, +1.034148e+00,
-  +3.850651e+00, +1.072202e+00,
-  +3.868350e+00, +1.014408e+00,
-  +3.796381e+00, +1.153021e+00,
-  +3.857138e+00, +1.056102e+00,
-  +3.787532e+00, +1.162215e+00,
-  +3.704477e+00, +1.227272e+00,
-  +3.564711e+00, +1.294959e+00,
-  +3.754363e+00, +1.191948e+00,
-  +3.482098e+00, +1.322725e+00,
-  +3.602777e+00, +1.279658e+00,
-  +3.585433e+00, +1.286858e+00,
-  +3.347505e+00, +1.356415e+00,
-  +3.220855e+00, +1.378914e+00,
-  +3.558808e+00, +1.297174e+00,
-  +3.403618e+00, +1.343809e+00,
-  +3.179828e+00, +1.384721e+00,
-  +3.054789e+00, +1.398759e+00,
-  +3.294153e+00, +1.366808e+00,
-  +3.247312e+00, +1.374813e+00,
-  +2.988547e+00, +1.404247e+00,
-  +3.114508e+00, +1.392698e+00,
-  +2.899226e+00, +1.409802e+00,
-  +2.533256e+00, +1.414778e+00,
-  +2.654773e+00, +1.415909e+00,
-  +2.565100e+00, +1.415313e+00,
-  +2.976456e+00, +1.405118e+00,
-  +2.484200e+00, +1.413640e+00,
-  +2.324751e+00, +1.407476e+00,
-  +1.930468e+00, +1.378221e+00,
-  +2.329017e+00, +1.407688e+00,
-  +1.760640e+00, +1.360319e+00,
-  +2.147375e+00, +1.396603e+00,
-  +1.741989e+00, +1.358178e+00,
-  +1.743859e+00, +1.358394e+00,
-  +1.557372e+00, +1.335208e+00,
-  +1.280551e+00, +1.295087e+00,
-  +1.429880e+00, +1.317546e+00,
-  +1.213485e+00, +1.284400e+00,
-  +9.168172e-01, +1.232870e+00,
-  +1.311141e+00, +1.299839e+00,
-  +1.231969e+00, +1.287382e+00,
-  +7.453773e-01, +1.200049e+00,
-  +6.151587e-01, +1.173683e+00,
-  +5.935666e-01, +1.169193e+00,
-  +2.538707e-01, +1.094227e+00,
-  +6.806136e-01, +1.187089e+00,
-  +2.805447e-01, +1.100405e+00,
-  +6.184807e-01, +1.174371e+00,
-  +1.170550e-01, +1.061762e+00,
-  +2.890507e-01, +1.102365e+00,
-  +3.834234e-01, +1.123772e+00,
-  +3.980161e-04, +1.033061e+00,
-  -3.651680e-01, +9.370367e-01,
-  -8.386351e-01, +7.987201e-01,
-  -8.105704e-01, +8.073702e-01,
-  -8.735139e-01, +7.878886e-01,
-  -9.913836e-01, +7.506100e-01,
-  -8.784011e-01, +7.863636e-01,
-  -1.181440e+00, +6.882566e-01,
-  -1.229556e+00, +6.720191e-01,
-  -1.035839e+00, +7.362765e-01,
-  -8.031520e-01, +8.096470e-01,
-  -1.539136e+00, +5.629549e-01,
-  -1.755423e+00, +4.817306e-01,
-  -1.337589e+00, +6.348763e-01,
-  -1.836966e+00, +4.499485e-01,
-  -1.913367e+00, +4.195617e-01,
-  -2.126467e+00, +3.314900e-01,
-  -1.927625e+00, +4.138238e-01,
-  -2.339862e+00, +2.379074e-01,
-  -1.881736e+00, +4.322152e-01,
-  -2.116753e+00, +3.356163e-01,
-  -2.255733e+00, +2.754930e-01,
-  -2.555834e+00, +1.368473e-01,
-  -2.770277e+00, +2.895711e-02,
-  -2.563376e+00, +1.331890e-01,
-  -2.826715e+00, -9.000818e-04,
-  -2.978191e+00, -8.457804e-02,
-  -3.115855e+00, -1.658786e-01,
-  -2.982049e+00, -8.678322e-02,
-  -3.307892e+00, -2.902083e-01,
-  -3.038346e+00, -1.194222e-01,
-  -3.190057e+00, -2.122060e-01,
-  -3.279086e+00, -2.705777e-01,
-  -3.322028e+00, -2.999889e-01,
-  -3.122576e+00, -1.699965e-01,
-  -3.551973e+00, -4.768674e-01,
-  -3.581866e+00, -5.032175e-01,
-  -3.497799e+00, -4.315203e-01,
-  -3.565384e+00, -4.885602e-01,
-  -3.699493e+00, -6.199815e-01,
-  -3.585166e+00, -5.061925e-01,
-  -3.758914e+00, -6.918275e-01,
-  -3.741104e+00, -6.689131e-01,
-  -3.688331e+00, -6.077239e-01,
-  -3.810425e+00, -7.689015e-01,
-  -3.791829e+00, -7.386911e-01,
-  -3.789951e+00, -7.358189e-01,
-  -3.823100e+00, -7.918398e-01,
-  -3.857021e+00, -8.727074e-01,
-  -3.858250e+00, -8.767645e-01,
-  -3.872100e+00, -9.563174e-01,
-  -3.864397e+00, -1.032630e+00,
-  -3.846230e+00, -1.081669e+00,
-  -3.834799e+00, -1.102536e+00,
-  -3.866684e+00, -1.022901e+00,
-  -3.808643e+00, -1.139084e+00,
-  -3.868840e+00, -1.011569e+00,
-  -3.791071e+00, -1.158615e+00,
-  -3.797999e+00, -1.151267e+00,
-  -3.696278e+00, -1.232314e+00,
-  -3.779007e+00, -1.170504e+00,
-  -3.622855e+00, -1.270793e+00,
-  -3.647249e+00, -1.259166e+00,
-  -3.655412e+00, -1.255042e+00,
-  -3.573218e+00, -1.291696e+00,
-  -3.638019e+00, -1.263684e+00,
-  -3.498409e+00, -1.317750e+00,
-  -3.304143e+00, -1.364970e+00,
-  -3.183001e+00, -1.384295e+00,
-  -3.202456e+00, -1.381599e+00,
-  -3.244063e+00, -1.375332e+00,
-  -3.233308e+00, -1.377019e+00,
-  -3.060112e+00, -1.398264e+00,
-  -3.078187e+00, -1.396517e+00,
-  -2.689594e+00, -1.415761e+00,
-  -2.947662e+00, -1.407039e+00,
-  -2.854490e+00, -1.411860e+00,
-  -2.660499e+00, -1.415900e+00,
-  -2.875955e+00, -1.410930e+00,
-  -2.675385e+00, -1.415848e+00,
-  -2.813155e+00, -1.413363e+00,
-  -2.417673e+00, -1.411512e+00,
-  -2.725461e+00, -1.415373e+00,
-  -2.148334e+00, -1.396672e+00,
-  -2.108972e+00, -1.393738e+00,
-  -2.029905e+00, -1.387302e+00,
-  -2.046214e+00, -1.388687e+00,
-  -2.057402e+00, -1.389621e+00,
-  -1.650250e+00, -1.347160e+00,
-  -1.806764e+00, -1.365469e+00,
-  -1.206973e+00, -1.283343e+00,
-  -8.029259e-01, -1.211308e+00,
-  -1.229551e+00, -1.286993e+00,
-  -1.101507e+00, -1.265754e+00,
-  -9.110645e-01, -1.231804e+00,
-  -1.110046e+00, -1.267211e+00,
-  -8.465274e-01, -1.219677e+00,
-  -7.594163e-01, -1.202818e+00,
-  -8.023823e-01, -1.211203e+00,
-  -3.732519e-01, -1.121494e+00,
-  -1.918373e-01, -1.079668e+00,
-  -4.671988e-01, -1.142253e+00,
-  -4.033645e-01, -1.128215e+00,
-  -1.920740e-01, -1.079724e+00,
-  -3.022157e-01, -1.105389e+00,
-  -1.652831e-01, -1.073354e+00,
-  +4.671625e-01, -9.085886e-01,
-  +5.940178e-01, -8.721832e-01,
-  +3.147557e-01, -9.508290e-01,
-  +6.383631e-01, -8.591867e-01,
-  +9.888923e-01, -7.514088e-01,
-  +7.076339e-01, -8.386023e-01,
-  +1.326682e+00, -6.386698e-01,
-  +1.149834e+00, -6.988221e-01,
-  +1.257742e+00, -6.624207e-01,
-  +1.492352e+00, -5.799632e-01,
-  +1.595574e+00, -5.421766e-01,
-  +1.240173e+00, -6.684113e-01,
-  +1.706612e+00, -5.004442e-01,
-  +1.873984e+00, -4.353002e-01,
-  +1.985633e+00, -3.902561e-01,
-  +1.722880e+00, -4.942329e-01,
-  +2.095182e+00, -3.447402e-01,
-  +2.018118e+00, -3.768991e-01,
-  +2.422702e+00, -1.999563e-01,
-  +2.370611e+00, -2.239326e-01,
-  +2.152154e+00, -3.205250e-01,
-  +2.525121e+00, -1.516499e-01,
-  +2.422116e+00, -2.002280e-01,
-  +2.842806e+00, +9.536372e-03,
-  +3.030128e+00, +1.146027e-01,
-  +2.888424e+00, +3.433444e-02,
-  +2.991609e+00, +9.226409e-02,
-  +2.924807e+00, +5.445844e-02,
-  +3.007772e+00, +1.015875e-01,
-  +2.781973e+00, -2.282382e-02,
-  +3.164737e+00, +1.961781e-01,
-  +3.237671e+00, +2.430139e-01,
-  +3.046123e+00, +1.240014e-01,
-  +3.414834e+00, +3.669060e-01,
-  +3.436591e+00, +3.833600e-01,
-  +3.626207e+00, +5.444311e-01,
-  +3.223325e+00, +2.336361e-01,
-  +3.511963e+00, +4.431060e-01,
-  +3.698380e+00, +6.187442e-01,
-  +3.670244e+00, +5.884943e-01,
-  +3.558833e+00, +4.828230e-01,
-  +3.661807e+00, +5.797689e-01,
-  +3.767261e+00, +7.030893e-01,
-  +3.801065e+00, +7.532650e-01,
-  +3.828523e+00, +8.024454e-01,
-  +3.840719e+00, +8.287032e-01,
-  +3.848748e+00, +8.485921e-01,
-  +3.865801e+00, +9.066551e-01,
-  +3.870983e+00, +9.404873e-01,
-  +3.870263e+00, +1.001884e+00,
-  +3.864462e+00, +1.032374e+00,
-  +3.870542e+00, +9.996121e-01,
-  +3.865424e+00, +1.028474e+00
-};
-// clang-format on
-
-ConstMatrixRef kY(kYData, kYRows, kYCols);
-
-class PointToLineSegmentContourCostFunction : public CostFunction {
- public:
-  // This class needs to have an Eigen aligned operator new as it contains
-  // fixed-size Eigen types.
-  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
-  PointToLineSegmentContourCostFunction(const int num_segments,
-                                        Eigen::Vector2d y)
-      : num_segments_(num_segments), y_(std::move(y)) {
-    // The first parameter is the preimage position.
-    mutable_parameter_block_sizes()->push_back(1);
-    // The next parameters are the control points for the line segment contour.
-    for (int i = 0; i < num_segments_; ++i) {
-      mutable_parameter_block_sizes()->push_back(2);
-    }
-    set_num_residuals(2);
-  }
-
-  bool Evaluate(const double* const* x,
-                double* residuals,
-                double** jacobians) const final {
-    // Convert the preimage position `t` into a segment index `i0` and the
-    // line segment interpolation parameter `u`. `i1` is the index of the next
-    // control point.
-    const double t = ModuloNumSegments(*x[0]);
-    CHECK_GE(t, 0.0);
-    CHECK_LT(t, num_segments_);
-    const int i0 = floor(t), i1 = (i0 + 1) % num_segments_;
-    const double u = t - i0;
-
-    // Linearly interpolate between control points `i0` and `i1`.
-    residuals[0] = y_[0] - ((1.0 - u) * x[1 + i0][0] + u * x[1 + i1][0]);
-    residuals[1] = y_[1] - ((1.0 - u) * x[1 + i0][1] + u * x[1 + i1][1]);
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    if (jacobians[0] != nullptr) {
-      jacobians[0][0] = x[1 + i0][0] - x[1 + i1][0];
-      jacobians[0][1] = x[1 + i0][1] - x[1 + i1][1];
-    }
-    for (int i = 0; i < num_segments_; ++i) {
-      if (jacobians[i + 1] != nullptr) {
-        MatrixRef(jacobians[i + 1], 2, 2).setZero();
-        if (i == i0) {
-          jacobians[i + 1][0] = -(1.0 - u);
-          jacobians[i + 1][3] = -(1.0 - u);
-        } else if (i == i1) {
-          jacobians[i + 1][0] = -u;
-          jacobians[i + 1][3] = -u;
-        }
-      }
-    }
-    return true;
-  }
-
-  static CostFunction* Create(const int num_segments,
-                              const Eigen::Vector2d& y) {
-    return new PointToLineSegmentContourCostFunction(num_segments, y);
-  }
-
- private:
-  inline double ModuloNumSegments(const double t) const {
-    return t - num_segments_ * floor(t / num_segments_);
-  }
-
-  const int num_segments_;
-  const Eigen::Vector2d y_;
-};
-
-class EuclideanDistanceFunctor {
- public:
-  explicit EuclideanDistanceFunctor(const double sqrt_weight)
-      : sqrt_weight_(sqrt_weight) {}
-
-  template <typename T>
-  bool operator()(const T* x0, const T* x1, T* residuals) const {
-    residuals[0] = sqrt_weight_ * (x0[0] - x1[0]);
-    residuals[1] = sqrt_weight_ * (x0[1] - x1[1]);
-    return true;
-  }
-
-  static CostFunction* Create(const double sqrt_weight) {
-    return new AutoDiffCostFunction<EuclideanDistanceFunctor, 2, 2, 2>(
-        new EuclideanDistanceFunctor(sqrt_weight));
-  }
-
- private:
-  const double sqrt_weight_;
-};
-
-TEST(DynamicSparsity, StaticAndDynamicSparsityProduceSameSolution) {
-  // Skip test if there is no sparse linear algebra library that
-  // supports dynamic sparsity.
-  if (!IsSparseLinearAlgebraLibraryTypeAvailable(SUITE_SPARSE) &&
-      !IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    return;
-  }
-
-  // Problem configuration.
-  const int num_segments = 151;
-  const double regularization_weight = 1e-2;
-
-  // `X` is the matrix of control points which make up the contour of line
-  // segments. The number of control points is equal to the number of line
-  // segments because the contour is closed.
-  //
-  // Initialize `X` to points on the unit circle.
-  Vector w(num_segments + 1);
-  w.setLinSpaced(num_segments + 1, 0.0, 2.0 * constants::pi);
-  w.conservativeResize(num_segments);
-  Matrix X(num_segments, 2);
-  X.col(0) = w.array().cos();
-  X.col(1) = w.array().sin();
-
-  // Each data point has an associated preimage position on the line segment
-  // contour. For each data point we initialize the preimage positions to
-  // the index of the closest control point.
-  const int num_observations = kY.rows();
-  Vector t(num_observations);
-  for (int i = 0; i < num_observations; ++i) {
-    (X.rowwise() - kY.row(i)).rowwise().squaredNorm().minCoeff(&t[i]);
-  }
-
-  Problem problem;
-
-  // For each data point add a residual which measures its distance to its
-  // corresponding position on the line segment contour.
-  std::vector<double*> parameter_blocks(1 + num_segments);
-  parameter_blocks[0] = nullptr;
-  for (int i = 0; i < num_segments; ++i) {
-    parameter_blocks[i + 1] = X.data() + 2 * i;
-  }
-  for (int i = 0; i < num_observations; ++i) {
-    parameter_blocks[0] = &t[i];
-    problem.AddResidualBlock(
-        PointToLineSegmentContourCostFunction::Create(num_segments, kY.row(i)),
-        nullptr,
-        parameter_blocks);
-  }
-
-  // Add regularization to minimize the length of the line segment contour.
-  for (int i = 0; i < num_segments; ++i) {
-    problem.AddResidualBlock(
-        EuclideanDistanceFunctor::Create(sqrt(regularization_weight)),
-        nullptr,
-        X.data() + 2 * i,
-        X.data() + 2 * ((i + 1) % num_segments));
-  }
-
-  Solver::Options options;
-  options.max_num_iterations = 100;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  // Only SuiteSparse & EigenSparse currently support dynamic sparsity.
-  options.sparse_linear_algebra_library_type =
-#if !defined(CERES_NO_SUITESPARSE)
-      ceres::SUITE_SPARSE;
-#elif defined(CERES_USE_EIGEN_SPARSE)
-      ceres::EIGEN_SPARSE;
-#endif
-
-  // First, solve `X` and `t` jointly with dynamic_sparsity = true.
-  Matrix X0 = X;
-  Vector t0 = t;
-  options.dynamic_sparsity = false;
-  Solver::Summary static_summary;
-  Solve(options, &problem, &static_summary);
-  EXPECT_EQ(static_summary.termination_type, CONVERGENCE)
-      << static_summary.FullReport();
-
-  X = X0;
-  t = t0;
-  options.dynamic_sparsity = true;
-  Solver::Summary dynamic_summary;
-  Solve(options, &problem, &dynamic_summary);
-  EXPECT_EQ(dynamic_summary.termination_type, CONVERGENCE)
-      << dynamic_summary.FullReport();
-
-  EXPECT_NEAR(static_summary.final_cost,
-              dynamic_summary.final_cost,
-              std::numeric_limits<double>::epsilon())
-      << "Static: \n"
-      << static_summary.FullReport() << "\nDynamic: \n"
-      << dynamic_summary.FullReport();
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/eigen_vector_ops.h b/third_party/ceres/internal/ceres/eigen_vector_ops.h
deleted file mode 100644
index 6ebff88..0000000
--- a/third_party/ceres/internal/ceres/eigen_vector_ops.h
+++ /dev/null
@@ -1,105 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_EIGEN_VECTOR_OPS_H_
-#define CERES_INTERNAL_EIGEN_VECTOR_OPS_H_
-
-#include <numeric>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_vector_ops.h"
-
-namespace ceres::internal {
-
-// Blas1 operations on Eigen vectors. These functions are needed as an
-// abstraction layer so that we can use different versions of a vector style
-// object in the conjugate gradients linear solver.
-template <typename Derived>
-inline double Norm(const Eigen::DenseBase<Derived>& x,
-                   ContextImpl* context,
-                   int num_threads) {
-  FixedArray<double> norms(num_threads, 0.);
-  ParallelFor(
-      context,
-      0,
-      x.rows(),
-      num_threads,
-      [&x, &norms](int thread_id, std::tuple<int, int> range) {
-        auto [start, end] = range;
-        norms[thread_id] += x.segment(start, end - start).squaredNorm();
-      },
-      kMinBlockSizeParallelVectorOps);
-  return std::sqrt(std::accumulate(norms.begin(), norms.end(), 0.));
-}
-inline void SetZero(Vector& x, ContextImpl* context, int num_threads) {
-  ParallelSetZero(context, num_threads, x);
-}
-inline void Axpby(double a,
-                  const Vector& x,
-                  double b,
-                  const Vector& y,
-                  Vector& z,
-                  ContextImpl* context,
-                  int num_threads) {
-  ParallelAssign(context, num_threads, z, a * x + b * y);
-}
-template <typename VectorLikeX, typename VectorLikeY>
-inline double Dot(const VectorLikeX& x,
-                  const VectorLikeY& y,
-                  ContextImpl* context,
-                  int num_threads) {
-  FixedArray<double> dots(num_threads, 0.);
-  ParallelFor(
-      context,
-      0,
-      x.rows(),
-      num_threads,
-      [&x, &y, &dots](int thread_id, std::tuple<int, int> range) {
-        auto [start, end] = range;
-        const int block_size = end - start;
-        const auto& x_block = x.segment(start, block_size);
-        const auto& y_block = y.segment(start, block_size);
-        dots[thread_id] += x_block.dot(y_block);
-      },
-      kMinBlockSizeParallelVectorOps);
-  return std::accumulate(dots.begin(), dots.end(), 0.);
-}
-inline void Copy(const Vector& from,
-                 Vector& to,
-                 ContextImpl* context,
-                 int num_threads) {
-  ParallelAssign(context, num_threads, to, from);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_EIGEN_VECTOR_OPS_H_
diff --git a/third_party/ceres/internal/ceres/eigensparse.cc b/third_party/ceres/internal/ceres/eigensparse.cc
deleted file mode 100644
index 7ed401d..0000000
--- a/third_party/ceres/internal/ceres/eigensparse.cc
+++ /dev/null
@@ -1,207 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/eigensparse.h"
-
-#include <memory>
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-#include <sstream>
-
-#ifndef CERES_NO_EIGEN_METIS
-#include <iostream>  // This is needed because MetisSupport depends on iostream.
-
-#include "Eigen/MetisSupport"
-#endif
-
-#include "Eigen/SparseCholesky"
-#include "Eigen/SparseCore"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-template <typename Solver>
-class EigenSparseCholeskyTemplate final : public SparseCholesky {
- public:
-  EigenSparseCholeskyTemplate() = default;
-  CompressedRowSparseMatrix::StorageType StorageType() const final {
-    return CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR;
-  }
-
-  LinearSolverTerminationType Factorize(
-      const Eigen::SparseMatrix<typename Solver::Scalar>& lhs,
-      std::string* message) {
-    if (!analyzed_) {
-      solver_.analyzePattern(lhs);
-
-      if (VLOG_IS_ON(2)) {
-        std::stringstream ss;
-        solver_.dumpMemory(ss);
-        VLOG(2) << "Symbolic Analysis\n" << ss.str();
-      }
-
-      if (solver_.info() != Eigen::Success) {
-        *message = "Eigen failure. Unable to find symbolic factorization.";
-        return LinearSolverTerminationType::FATAL_ERROR;
-      }
-
-      analyzed_ = true;
-    }
-
-    solver_.factorize(lhs);
-    if (solver_.info() != Eigen::Success) {
-      *message = "Eigen failure. Unable to find numeric factorization.";
-      return LinearSolverTerminationType::FAILURE;
-    }
-    return LinearSolverTerminationType::SUCCESS;
-  }
-
-  LinearSolverTerminationType Solve(const double* rhs_ptr,
-                                    double* solution_ptr,
-                                    std::string* message) override {
-    CHECK(analyzed_) << "Solve called without a call to Factorize first.";
-
-    // Avoid copying when the scalar type is double
-    if constexpr (std::is_same_v<typename Solver::Scalar, double>) {
-      ConstVectorRef scalar_rhs(rhs_ptr, solver_.cols());
-      VectorRef(solution_ptr, solver_.cols()) = solver_.solve(scalar_rhs);
-    } else {
-      auto scalar_rhs = ConstVectorRef(rhs_ptr, solver_.cols())
-                            .template cast<typename Solver::Scalar>();
-      auto scalar_solution = solver_.solve(scalar_rhs);
-      VectorRef(solution_ptr, solver_.cols()) =
-          scalar_solution.template cast<double>();
-    }
-
-    if (solver_.info() != Eigen::Success) {
-      *message = "Eigen failure. Unable to do triangular solve.";
-      return LinearSolverTerminationType::FAILURE;
-    }
-    return LinearSolverTerminationType::SUCCESS;
-  }
-
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) final {
-    CHECK_EQ(lhs->storage_type(), StorageType());
-
-    typename Solver::Scalar* values_ptr = nullptr;
-    if constexpr (std::is_same_v<typename Solver::Scalar, double>) {
-      values_ptr = lhs->mutable_values();
-    } else {
-      // In the case where the scalar used in this class is not
-      // double. In that case, make a copy of the values array in the
-      // CompressedRowSparseMatrix and cast it to Scalar along the way.
-      values_ = ConstVectorRef(lhs->values(), lhs->num_nonzeros())
-                    .cast<typename Solver::Scalar>();
-      values_ptr = values_.data();
-    }
-
-    Eigen::Map<
-        const Eigen::SparseMatrix<typename Solver::Scalar, Eigen::ColMajor>>
-        eigen_lhs(lhs->num_rows(),
-                  lhs->num_rows(),
-                  lhs->num_nonzeros(),
-                  lhs->rows(),
-                  lhs->cols(),
-                  values_ptr);
-    return Factorize(eigen_lhs, message);
-  }
-
- private:
-  Eigen::Matrix<typename Solver::Scalar, Eigen::Dynamic, 1> values_;
-
-  bool analyzed_{false};
-  Solver solver_;
-};
-
-std::unique_ptr<SparseCholesky> EigenSparseCholesky::Create(
-    const OrderingType ordering_type) {
-  using WithAMDOrdering = Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>,
-                                                Eigen::Upper,
-                                                Eigen::AMDOrdering<int>>;
-  using WithNaturalOrdering =
-      Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>,
-                            Eigen::Upper,
-                            Eigen::NaturalOrdering<int>>;
-
-  if (ordering_type == OrderingType::AMD) {
-    return std::make_unique<EigenSparseCholeskyTemplate<WithAMDOrdering>>();
-  } else if (ordering_type == OrderingType::NESDIS) {
-#ifndef CERES_NO_EIGEN_METIS
-    using WithMetisOrdering = Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>,
-                                                    Eigen::Upper,
-                                                    Eigen::MetisOrdering<int>>;
-    return std::make_unique<EigenSparseCholeskyTemplate<WithMetisOrdering>>();
-#else
-    LOG(FATAL)
-        << "Congratulations you have found a bug in Ceres Solver. Please "
-           "report it to the Ceres Solver developers.";
-    return nullptr;
-#endif  // CERES_NO_EIGEN_METIS
-  }
-  return std::make_unique<EigenSparseCholeskyTemplate<WithNaturalOrdering>>();
-}
-
-EigenSparseCholesky::~EigenSparseCholesky() = default;
-
-std::unique_ptr<SparseCholesky> FloatEigenSparseCholesky::Create(
-    const OrderingType ordering_type) {
-  using WithAMDOrdering = Eigen::SimplicialLDLT<Eigen::SparseMatrix<float>,
-                                                Eigen::Upper,
-                                                Eigen::AMDOrdering<int>>;
-  using WithNaturalOrdering =
-      Eigen::SimplicialLDLT<Eigen::SparseMatrix<float>,
-                            Eigen::Upper,
-                            Eigen::NaturalOrdering<int>>;
-  if (ordering_type == OrderingType::AMD) {
-    return std::make_unique<EigenSparseCholeskyTemplate<WithAMDOrdering>>();
-  } else if (ordering_type == OrderingType::NESDIS) {
-#ifndef CERES_NO_EIGEN_METIS
-    using WithMetisOrdering = Eigen::SimplicialLDLT<Eigen::SparseMatrix<float>,
-                                                    Eigen::Upper,
-                                                    Eigen::MetisOrdering<int>>;
-    return std::make_unique<EigenSparseCholeskyTemplate<WithMetisOrdering>>();
-#else
-    LOG(FATAL)
-        << "Congratulations you have found a bug in Ceres Solver. Please "
-           "report it to the Ceres Solver developers.";
-    return nullptr;
-#endif  // CERES_NO_EIGEN_METIS
-  }
-  return std::make_unique<EigenSparseCholeskyTemplate<WithNaturalOrdering>>();
-}
-
-FloatEigenSparseCholesky::~FloatEigenSparseCholesky() = default;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/eigensparse.h b/third_party/ceres/internal/ceres/eigensparse.h
deleted file mode 100644
index f16e8f2..0000000
--- a/third_party/ceres/internal/ceres/eigensparse.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// A simple C++ interface to the Eigen's Sparse Cholesky routines.
-
-#ifndef CERES_INTERNAL_EIGENSPARSE_H_
-#define CERES_INTERNAL_EIGENSPARSE_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-#include <memory>
-#include <string>
-
-#include "Eigen/SparseCore"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_cholesky.h"
-
-namespace ceres::internal {
-
-class EigenSparse {
- public:
-  static constexpr bool IsNestedDissectionAvailable() noexcept {
-#ifdef CERES_NO_EIGEN_METIS
-    return false;
-#else
-    return true;
-#endif
-  }
-};
-
-class CERES_NO_EXPORT EigenSparseCholesky : public SparseCholesky {
- public:
-  // Factory
-  static std::unique_ptr<SparseCholesky> Create(
-      const OrderingType ordering_type);
-
-  // SparseCholesky interface.
-  ~EigenSparseCholesky() override;
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) override = 0;
-  CompressedRowSparseMatrix::StorageType StorageType() const override = 0;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override = 0;
-};
-
-// Even though the input is double precision linear system, this class
-// solves it by computing a single precision Cholesky factorization.
-class CERES_NO_EXPORT FloatEigenSparseCholesky : public SparseCholesky {
- public:
-  // Factory
-  static std::unique_ptr<SparseCholesky> Create(
-      const OrderingType ordering_type);
-
-  // SparseCholesky interface.
-  ~FloatEigenSparseCholesky() override;
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) override = 0;
-  CompressedRowSparseMatrix::StorageType StorageType() const override = 0;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override = 0;
-};
-
-}  // namespace ceres::internal
-
-#else
-
-namespace ceres::internal {
-
-class EigenSparse {
- public:
-  static constexpr bool IsNestedDissectionAvailable() noexcept { return false; }
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
-
-#endif  // CERES_INTERNAL_EIGENSPARSE_H_
diff --git a/third_party/ceres/internal/ceres/evaluation_benchmark.cc b/third_party/ceres/internal/ceres/evaluation_benchmark.cc
deleted file mode 100644
index c679885..0000000
--- a/third_party/ceres/internal/ceres/evaluation_benchmark.cc
+++ /dev/null
@@ -1,1094 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#include <memory>
-#include <random>
-#include <string>
-#include <vector>
-
-#include "benchmark/benchmark.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/cuda_block_sparse_crs_view.h"
-#include "ceres/cuda_partitioned_block_sparse_crs_view.h"
-#include "ceres/cuda_sparse_matrix.h"
-#include "ceres/cuda_vector.h"
-#include "ceres/evaluator.h"
-#include "ceres/implicit_schur_complement.h"
-#include "ceres/partitioned_matrix_view.h"
-#include "ceres/power_series_expansion_preconditioner.h"
-#include "ceres/preprocessor.h"
-#include "ceres/problem.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/sparse_matrix.h"
-
-namespace ceres::internal {
-
-template <typename Derived, typename Base>
-std::unique_ptr<Derived> downcast_unique_ptr(std::unique_ptr<Base>& base) {
-  return std::unique_ptr<Derived>(dynamic_cast<Derived*>(base.release()));
-}
-
-// Benchmark library might invoke benchmark function multiple times.
-// In order to save time required to parse BAL data, we ensure that
-// each dataset is being loaded at most once.
-// Each type of jacobians is also cached after first creation
-struct BALData {
-  using PartitionedView = PartitionedMatrixView<2, 3, 9>;
-  explicit BALData(const std::string& path) {
-    bal_problem = std::make_unique<BundleAdjustmentProblem>(path);
-    CHECK(bal_problem != nullptr);
-
-    auto problem_impl = bal_problem->mutable_problem()->mutable_impl();
-    auto preprocessor = Preprocessor::Create(MinimizerType::TRUST_REGION);
-
-    preprocessed_problem = std::make_unique<PreprocessedProblem>();
-    Solver::Options options = bal_problem->options();
-    options.linear_solver_type = ITERATIVE_SCHUR;
-    CHECK(preprocessor->Preprocess(
-        options, problem_impl, preprocessed_problem.get()));
-
-    auto program = preprocessed_problem->reduced_program.get();
-
-    parameters.resize(program->NumParameters());
-    program->ParameterBlocksToStateVector(parameters.data());
-
-    const int num_residuals = program->NumResiduals();
-    b.resize(num_residuals);
-
-    std::mt19937 rng;
-    std::normal_distribution<double> rnorm;
-    for (int i = 0; i < num_residuals; ++i) {
-      b[i] = rnorm(rng);
-    }
-
-    const int num_parameters = program->NumParameters();
-    D.resize(num_parameters);
-    for (int i = 0; i < num_parameters; ++i) {
-      D[i] = rnorm(rng);
-    }
-  }
-
-  std::unique_ptr<BlockSparseMatrix> CreateBlockSparseJacobian(
-      ContextImpl* context, bool sequential) {
-    auto problem = bal_problem->mutable_problem();
-    auto problem_impl = problem->mutable_impl();
-    CHECK(problem_impl != nullptr);
-
-    Evaluator::Options options;
-    options.linear_solver_type = ITERATIVE_SCHUR;
-    options.num_threads = 1;
-    options.context = context;
-    options.num_eliminate_blocks = bal_problem->num_points();
-
-    std::string error;
-    auto program = preprocessed_problem->reduced_program.get();
-    auto evaluator = Evaluator::Create(options, program, &error);
-    CHECK(evaluator != nullptr);
-
-    auto jacobian = evaluator->CreateJacobian();
-    auto block_sparse = downcast_unique_ptr<BlockSparseMatrix>(jacobian);
-    CHECK(block_sparse != nullptr);
-
-    if (sequential) {
-      auto block_structure_sequential =
-          std::make_unique<CompressedRowBlockStructure>(
-              *block_sparse->block_structure());
-      int num_nonzeros = 0;
-      for (auto& row_block : block_structure_sequential->rows) {
-        const int row_block_size = row_block.block.size;
-        for (auto& cell : row_block.cells) {
-          const int col_block_size =
-              block_structure_sequential->cols[cell.block_id].size;
-          cell.position = num_nonzeros;
-          num_nonzeros += col_block_size * row_block_size;
-        }
-      }
-      block_sparse = std::make_unique<BlockSparseMatrix>(
-          block_structure_sequential.release(),
-#ifndef CERES_NO_CUDA
-          true
-#else
-          false
-#endif
-      );
-    }
-
-    std::mt19937 rng;
-    std::normal_distribution<double> rnorm;
-    const int nnz = block_sparse->num_nonzeros();
-    auto values = block_sparse->mutable_values();
-    for (int i = 0; i < nnz; ++i) {
-      values[i] = rnorm(rng);
-    }
-
-    return block_sparse;
-  }
-
-  std::unique_ptr<CompressedRowSparseMatrix> CreateCompressedRowSparseJacobian(
-      ContextImpl* context) {
-    auto block_sparse = BlockSparseJacobian(context);
-    return block_sparse->ToCompressedRowSparseMatrix();
-  }
-
-  const BlockSparseMatrix* BlockSparseJacobian(ContextImpl* context) {
-    if (!block_sparse_jacobian) {
-      block_sparse_jacobian = CreateBlockSparseJacobian(context, true);
-    }
-    return block_sparse_jacobian.get();
-  }
-
-  const BlockSparseMatrix* BlockSparseJacobianPartitioned(
-      ContextImpl* context) {
-    if (!block_sparse_jacobian_partitioned) {
-      block_sparse_jacobian_partitioned =
-          CreateBlockSparseJacobian(context, false);
-    }
-    return block_sparse_jacobian_partitioned.get();
-  }
-
-  const CompressedRowSparseMatrix* CompressedRowSparseJacobian(
-      ContextImpl* context) {
-    if (!crs_jacobian) {
-      crs_jacobian = CreateCompressedRowSparseJacobian(context);
-    }
-    return crs_jacobian.get();
-  }
-
-  std::unique_ptr<PartitionedView> PartitionedMatrixViewJacobian(
-      const LinearSolver::Options& options) {
-    auto block_sparse = BlockSparseJacobianPartitioned(options.context);
-    return std::make_unique<PartitionedView>(options, *block_sparse);
-  }
-
-  BlockSparseMatrix* BlockDiagonalEtE(const LinearSolver::Options& options) {
-    if (!block_diagonal_ete) {
-      auto partitioned_view = PartitionedMatrixViewJacobian(options);
-      block_diagonal_ete = partitioned_view->CreateBlockDiagonalEtE();
-    }
-    return block_diagonal_ete.get();
-  }
-
-  BlockSparseMatrix* BlockDiagonalFtF(const LinearSolver::Options& options) {
-    if (!block_diagonal_ftf) {
-      auto partitioned_view = PartitionedMatrixViewJacobian(options);
-      block_diagonal_ftf = partitioned_view->CreateBlockDiagonalFtF();
-    }
-    return block_diagonal_ftf.get();
-  }
-
-  const ImplicitSchurComplement* ImplicitSchurComplementWithoutDiagonal(
-      const LinearSolver::Options& options) {
-    auto block_sparse = BlockSparseJacobianPartitioned(options.context);
-    implicit_schur_complement =
-        std::make_unique<ImplicitSchurComplement>(options);
-    implicit_schur_complement->Init(*block_sparse, nullptr, b.data());
-    return implicit_schur_complement.get();
-  }
-
-  const ImplicitSchurComplement* ImplicitSchurComplementWithDiagonal(
-      const LinearSolver::Options& options) {
-    auto block_sparse = BlockSparseJacobianPartitioned(options.context);
-    implicit_schur_complement_diag =
-        std::make_unique<ImplicitSchurComplement>(options);
-    implicit_schur_complement_diag->Init(*block_sparse, D.data(), b.data());
-    return implicit_schur_complement_diag.get();
-  }
-
-  Vector parameters;
-  Vector D;
-  Vector b;
-  std::unique_ptr<BundleAdjustmentProblem> bal_problem;
-  std::unique_ptr<PreprocessedProblem> preprocessed_problem;
-  std::unique_ptr<BlockSparseMatrix> block_sparse_jacobian_partitioned;
-  std::unique_ptr<BlockSparseMatrix> block_sparse_jacobian;
-  std::unique_ptr<CompressedRowSparseMatrix> crs_jacobian;
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_ete;
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_ftf;
-  std::unique_ptr<ImplicitSchurComplement> implicit_schur_complement;
-  std::unique_ptr<ImplicitSchurComplement> implicit_schur_complement_diag;
-};
-
-static void Residuals(benchmark::State& state,
-                      BALData* data,
-                      ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  Evaluator::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.num_threads = num_threads;
-  options.context = context;
-  options.num_eliminate_blocks = 0;
-
-  std::string error;
-  CHECK(data->preprocessed_problem != nullptr);
-  auto program = data->preprocessed_problem->reduced_program.get();
-  CHECK(program != nullptr);
-  auto evaluator = Evaluator::Create(options, program, &error);
-  CHECK(evaluator != nullptr);
-
-  double cost = 0.;
-  Vector residuals = Vector::Zero(program->NumResiduals());
-
-  Evaluator::EvaluateOptions eval_options;
-  for (auto _ : state) {
-    CHECK(evaluator->Evaluate(eval_options,
-                              data->parameters.data(),
-                              &cost,
-                              residuals.data(),
-                              nullptr,
-                              nullptr));
-  }
-}
-
-static void ResidualsAndJacobian(benchmark::State& state,
-                                 BALData* data,
-                                 ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  Evaluator::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.num_threads = num_threads;
-  options.context = context;
-  options.num_eliminate_blocks = 0;
-
-  std::string error;
-  CHECK(data->preprocessed_problem != nullptr);
-  auto program = data->preprocessed_problem->reduced_program.get();
-  CHECK(program != nullptr);
-  auto evaluator = Evaluator::Create(options, program, &error);
-  CHECK(evaluator != nullptr);
-
-  double cost = 0.;
-  Vector residuals = Vector::Zero(program->NumResiduals());
-  auto jacobian = evaluator->CreateJacobian();
-
-  Evaluator::EvaluateOptions eval_options;
-  for (auto _ : state) {
-    CHECK(evaluator->Evaluate(eval_options,
-                              data->parameters.data(),
-                              &cost,
-                              residuals.data(),
-                              nullptr,
-                              jacobian.get()));
-  }
-}
-
-static void Plus(benchmark::State& state, BALData* data, ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  Evaluator::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.num_threads = num_threads;
-  options.context = context;
-  options.num_eliminate_blocks = 0;
-
-  std::string error;
-  CHECK(data->preprocessed_problem != nullptr);
-  auto program = data->preprocessed_problem->reduced_program.get();
-  CHECK(program != nullptr);
-  auto evaluator = Evaluator::Create(options, program, &error);
-  CHECK(evaluator != nullptr);
-
-  Vector state_plus_delta = Vector::Zero(program->NumParameters());
-  Vector delta = Vector::Random(program->NumEffectiveParameters());
-
-  for (auto _ : state) {
-    CHECK(evaluator->Plus(
-        data->parameters.data(), delta.data(), state_plus_delta.data()));
-  }
-  CHECK_GT(state_plus_delta.squaredNorm(), 0.);
-}
-
-static void PSEPreconditioner(benchmark::State& state,
-                              BALData* data,
-                              ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-
-  auto jacobian = data->ImplicitSchurComplementWithDiagonal(options);
-  Preconditioner::Options preconditioner_options(options);
-
-  PowerSeriesExpansionPreconditioner preconditioner(
-      jacobian, 10, 0, preconditioner_options);
-
-  Vector y = Vector::Zero(jacobian->num_cols());
-  Vector x = Vector::Random(jacobian->num_cols());
-
-  for (auto _ : state) {
-    preconditioner.RightMultiplyAndAccumulate(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void PMVRightMultiplyAndAccumulateF(benchmark::State& state,
-                                           BALData* data,
-                                           ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-
-  Vector y = Vector::Zero(jacobian->num_rows());
-  Vector x = Vector::Random(jacobian->num_cols_f());
-
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulateF(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void PMVLeftMultiplyAndAccumulateF(benchmark::State& state,
-                                          BALData* data,
-                                          ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-
-  Vector y = Vector::Zero(jacobian->num_cols_f());
-  Vector x = Vector::Random(jacobian->num_rows());
-
-  for (auto _ : state) {
-    jacobian->LeftMultiplyAndAccumulateF(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void PMVRightMultiplyAndAccumulateE(benchmark::State& state,
-                                           BALData* data,
-                                           ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-
-  Vector y = Vector::Zero(jacobian->num_rows());
-  Vector x = Vector::Random(jacobian->num_cols_e());
-
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulateE(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void PMVLeftMultiplyAndAccumulateE(benchmark::State& state,
-                                          BALData* data,
-                                          ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-
-  Vector y = Vector::Zero(jacobian->num_cols_e());
-  Vector x = Vector::Random(jacobian->num_rows());
-
-  for (auto _ : state) {
-    jacobian->LeftMultiplyAndAccumulateE(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void PMVUpdateBlockDiagonalEtE(benchmark::State& state,
-                                      BALData* data,
-                                      ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-  auto block_diagonal_ete = data->BlockDiagonalEtE(options);
-
-  for (auto _ : state) {
-    jacobian->UpdateBlockDiagonalEtE(block_diagonal_ete);
-  }
-}
-
-static void PMVUpdateBlockDiagonalFtF(benchmark::State& state,
-                                      BALData* data,
-                                      ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-  auto block_diagonal_ftf = data->BlockDiagonalFtF(options);
-
-  for (auto _ : state) {
-    jacobian->UpdateBlockDiagonalFtF(block_diagonal_ftf);
-  }
-}
-
-static void ISCRightMultiplyNoDiag(benchmark::State& state,
-                                   BALData* data,
-                                   ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  auto jacobian = data->ImplicitSchurComplementWithoutDiagonal(options);
-
-  Vector y = Vector::Zero(jacobian->num_rows());
-  Vector x = Vector::Random(jacobian->num_cols());
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void ISCRightMultiplyDiag(benchmark::State& state,
-                                 BALData* data,
-                                 ContextImpl* context) {
-  LinearSolver::Options options;
-  options.num_threads = static_cast<int>(state.range(0));
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-
-  auto jacobian = data->ImplicitSchurComplementWithDiagonal(options);
-
-  Vector y = Vector::Zero(jacobian->num_rows());
-  Vector x = Vector::Random(jacobian->num_cols());
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(x.data(), y.data());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void JacobianToCRS(benchmark::State& state,
-                          BALData* data,
-                          ContextImpl* context) {
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  std::unique_ptr<CompressedRowSparseMatrix> matrix;
-  for (auto _ : state) {
-    matrix = jacobian->ToCompressedRowSparseMatrix();
-  }
-  CHECK(matrix != nullptr);
-}
-
-#ifndef CERES_NO_CUDA
-static void PMVRightMultiplyAndAccumulateFCuda(benchmark::State& state,
-                                               BALData* data,
-                                               ContextImpl* context) {
-  LinearSolver::Options options;
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  options.num_threads = 1;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-  auto underlying_matrix = data->BlockSparseJacobianPartitioned(context);
-  CudaPartitionedBlockSparseCRSView view(
-      *underlying_matrix, jacobian->num_col_blocks_e(), context);
-
-  Vector x = Vector::Random(jacobian->num_cols_f());
-  CudaVector cuda_x(context, x.size());
-  CudaVector cuda_y(context, jacobian->num_rows());
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.SetZero();
-
-  auto matrix = view.matrix_f();
-  for (auto _ : state) {
-    matrix->RightMultiplyAndAccumulate(cuda_x, &cuda_y);
-  }
-  CHECK_GT(cuda_y.Norm(), 0.);
-}
-
-static void PMVLeftMultiplyAndAccumulateFCuda(benchmark::State& state,
-                                              BALData* data,
-                                              ContextImpl* context) {
-  LinearSolver::Options options;
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  options.num_threads = 1;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-  auto underlying_matrix = data->BlockSparseJacobianPartitioned(context);
-  CudaPartitionedBlockSparseCRSView view(
-      *underlying_matrix, jacobian->num_col_blocks_e(), context);
-
-  Vector x = Vector::Random(jacobian->num_rows());
-  CudaVector cuda_x(context, x.size());
-  CudaVector cuda_y(context, jacobian->num_cols_f());
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.SetZero();
-
-  auto matrix = view.matrix_f();
-  for (auto _ : state) {
-    matrix->LeftMultiplyAndAccumulate(cuda_x, &cuda_y);
-  }
-  CHECK_GT(cuda_y.Norm(), 0.);
-}
-
-static void PMVRightMultiplyAndAccumulateECuda(benchmark::State& state,
-                                               BALData* data,
-                                               ContextImpl* context) {
-  LinearSolver::Options options;
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  options.num_threads = 1;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-  auto underlying_matrix = data->BlockSparseJacobianPartitioned(context);
-  CudaPartitionedBlockSparseCRSView view(
-      *underlying_matrix, jacobian->num_col_blocks_e(), context);
-
-  Vector x = Vector::Random(jacobian->num_cols_e());
-  CudaVector cuda_x(context, x.size());
-  CudaVector cuda_y(context, jacobian->num_rows());
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.SetZero();
-
-  auto matrix = view.matrix_e();
-  for (auto _ : state) {
-    matrix->RightMultiplyAndAccumulate(cuda_x, &cuda_y);
-  }
-  CHECK_GT(cuda_y.Norm(), 0.);
-}
-
-static void PMVLeftMultiplyAndAccumulateECuda(benchmark::State& state,
-                                              BALData* data,
-                                              ContextImpl* context) {
-  LinearSolver::Options options;
-  options.elimination_groups.push_back(data->bal_problem->num_points());
-  options.context = context;
-  options.num_threads = 1;
-  auto jacobian = data->PartitionedMatrixViewJacobian(options);
-  auto underlying_matrix = data->BlockSparseJacobianPartitioned(context);
-  CudaPartitionedBlockSparseCRSView view(
-      *underlying_matrix, jacobian->num_col_blocks_e(), context);
-
-  Vector x = Vector::Random(jacobian->num_rows());
-  CudaVector cuda_x(context, x.size());
-  CudaVector cuda_y(context, jacobian->num_cols_e());
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.SetZero();
-
-  auto matrix = view.matrix_e();
-  for (auto _ : state) {
-    matrix->LeftMultiplyAndAccumulate(cuda_x, &cuda_y);
-  }
-  CHECK_GT(cuda_y.Norm(), 0.);
-}
-
-// We want CudaBlockSparseCRSView to be not slower than explicit conversion to
-// CRS on CPU
-static void JacobianToCRSView(benchmark::State& state,
-                              BALData* data,
-                              ContextImpl* context) {
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  std::unique_ptr<CudaBlockSparseCRSView> matrix;
-  for (auto _ : state) {
-    matrix = std::make_unique<CudaBlockSparseCRSView>(*jacobian, context);
-  }
-  CHECK(matrix != nullptr);
-}
-static void JacobianToCRSMatrix(benchmark::State& state,
-                                BALData* data,
-                                ContextImpl* context) {
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  std::unique_ptr<CudaSparseMatrix> matrix;
-  std::unique_ptr<CompressedRowSparseMatrix> matrix_cpu;
-  for (auto _ : state) {
-    matrix_cpu = jacobian->ToCompressedRowSparseMatrix();
-    matrix = std::make_unique<CudaSparseMatrix>(context, *matrix_cpu);
-  }
-  CHECK(matrix != nullptr);
-}
-// Updating values in CudaBlockSparseCRSView should be +- as fast as just
-// copying values (time spent in value permutation has to be hidden by PCIe
-// transfer)
-static void JacobianToCRSViewUpdate(benchmark::State& state,
-                                    BALData* data,
-                                    ContextImpl* context) {
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  auto matrix = CudaBlockSparseCRSView(*jacobian, context);
-  for (auto _ : state) {
-    matrix.UpdateValues(*jacobian);
-  }
-}
-static void JacobianToCRSMatrixUpdate(benchmark::State& state,
-                                      BALData* data,
-                                      ContextImpl* context) {
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  auto matrix_cpu = jacobian->ToCompressedRowSparseMatrix();
-  auto matrix = std::make_unique<CudaSparseMatrix>(context, *matrix_cpu);
-  for (auto _ : state) {
-    CHECK_EQ(cudaSuccess,
-             cudaMemcpy(matrix->mutable_values(),
-                        matrix_cpu->values(),
-                        matrix->num_nonzeros() * sizeof(double),
-                        cudaMemcpyHostToDevice));
-  }
-}
-#endif
-
-static void JacobianSquaredColumnNorm(benchmark::State& state,
-                                      BALData* data,
-                                      ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  Vector x = Vector::Zero(jacobian->num_cols());
-
-  for (auto _ : state) {
-    jacobian->SquaredColumnNorm(x.data(), context, num_threads);
-  }
-  CHECK_GT(x.squaredNorm(), 0.);
-}
-
-static void JacobianScaleColumns(benchmark::State& state,
-                                 BALData* data,
-                                 ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  auto jacobian_const = data->BlockSparseJacobian(context);
-  auto jacobian = const_cast<BlockSparseMatrix*>(jacobian_const);
-
-  Vector x = Vector::Ones(jacobian->num_cols());
-
-  for (auto _ : state) {
-    jacobian->ScaleColumns(x.data(), context, num_threads);
-  }
-}
-
-static void JacobianRightMultiplyAndAccumulate(benchmark::State& state,
-                                               BALData* data,
-                                               ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  Vector y = Vector::Zero(jacobian->num_rows());
-  Vector x = Vector::Random(jacobian->num_cols());
-
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(
-        x.data(), y.data(), context, num_threads);
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-static void JacobianLeftMultiplyAndAccumulate(benchmark::State& state,
-                                              BALData* data,
-                                              ContextImpl* context) {
-  const int num_threads = static_cast<int>(state.range(0));
-
-  auto jacobian = data->BlockSparseJacobian(context);
-
-  Vector y = Vector::Zero(jacobian->num_cols());
-  Vector x = Vector::Random(jacobian->num_rows());
-
-  for (auto _ : state) {
-    jacobian->LeftMultiplyAndAccumulate(
-        x.data(), y.data(), context, num_threads);
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-
-#ifndef CERES_NO_CUDA
-static void JacobianRightMultiplyAndAccumulateCuda(benchmark::State& state,
-                                                   BALData* data,
-                                                   ContextImpl* context) {
-  auto crs_jacobian = data->CompressedRowSparseJacobian(context);
-  CudaSparseMatrix cuda_jacobian(context, *crs_jacobian);
-  CudaVector cuda_x(context, 0);
-  CudaVector cuda_y(context, 0);
-
-  Vector x(crs_jacobian->num_cols());
-  Vector y(crs_jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.CopyFromCpu(y);
-  double sum = 0;
-  for (auto _ : state) {
-    cuda_jacobian.RightMultiplyAndAccumulate(cuda_x, &cuda_y);
-    sum += cuda_y.Norm();
-    CHECK_EQ(cudaDeviceSynchronize(), cudaSuccess);
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-static void JacobianLeftMultiplyAndAccumulateCuda(benchmark::State& state,
-                                                  BALData* data,
-                                                  ContextImpl* context) {
-  auto crs_jacobian = data->CompressedRowSparseJacobian(context);
-  CudaSparseMatrix cuda_jacobian(context, *crs_jacobian);
-  CudaVector cuda_x(context, 0);
-  CudaVector cuda_y(context, 0);
-
-  Vector x(crs_jacobian->num_rows());
-  Vector y(crs_jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.CopyFromCpu(y);
-  double sum = 0;
-  for (auto _ : state) {
-    cuda_jacobian.LeftMultiplyAndAccumulate(cuda_x, &cuda_y);
-    sum += cuda_y.Norm();
-    CHECK_EQ(cudaDeviceSynchronize(), cudaSuccess);
-  }
-  CHECK_NE(sum, 0.0);
-}
-#endif
-
-}  // namespace ceres::internal
-
-// Older versions of benchmark library might come without ::benchmark::Shutdown
-// function. We provide an empty fallback variant of Shutdown function in
-// order to support both older and newer versions
-namespace benchmark_shutdown_fallback {
-template <typename... Args>
-void Shutdown(Args... args) {}
-};  // namespace benchmark_shutdown_fallback
-
-int main(int argc, char** argv) {
-  ::benchmark::Initialize(&argc, argv);
-
-  std::vector<std::unique_ptr<ceres::internal::BALData>> benchmark_data;
-  if (argc == 1) {
-    LOG(FATAL) << "No input datasets specified. Usage: " << argv[0]
-               << " [benchmark flags] path_to_BAL_data_1.txt ... "
-                  "path_to_BAL_data_N.txt";
-    return -1;
-  }
-
-  ceres::internal::ContextImpl context;
-  context.EnsureMinimumThreads(16);
-#ifndef CERES_NO_CUDA
-  std::string message;
-  context.InitCuda(&message);
-#endif
-
-  for (int i = 1; i < argc; ++i) {
-    const std::string path(argv[i]);
-    const std::string name_residuals = "Residuals<" + path + ">";
-    benchmark_data.emplace_back(
-        std::make_unique<ceres::internal::BALData>(path));
-    auto data = benchmark_data.back().get();
-    ::benchmark::RegisterBenchmark(
-        name_residuals.c_str(), ceres::internal::Residuals, data, &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_jacobians = "ResidualsAndJacobian<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_jacobians.c_str(),
-                                   ceres::internal::ResidualsAndJacobian,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_plus = "Plus<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_plus.c_str(), ceres::internal::Plus, data, &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_right_product =
-        "JacobianRightMultiplyAndAccumulate<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_right_product.c_str(),
-        ceres::internal::JacobianRightMultiplyAndAccumulate,
-        data,
-        &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_right_product_partitioned_f =
-        "PMVRightMultiplyAndAccumulateF<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_right_product_partitioned_f.c_str(),
-        ceres::internal::PMVRightMultiplyAndAccumulateF,
-        data,
-        &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-#ifndef CERES_NO_CUDA
-    const std::string name_right_product_partitioned_f_cuda =
-        "PMVRightMultiplyAndAccumulateFCuda<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_right_product_partitioned_f_cuda.c_str(),
-        ceres::internal::PMVRightMultiplyAndAccumulateFCuda,
-        data,
-        &context);
-#endif
-
-    const std::string name_right_product_partitioned_e =
-        "PMVRightMultiplyAndAccumulateE<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_right_product_partitioned_e.c_str(),
-        ceres::internal::PMVRightMultiplyAndAccumulateE,
-        data,
-        &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-#ifndef CERES_NO_CUDA
-    const std::string name_right_product_partitioned_e_cuda =
-        "PMVRightMultiplyAndAccumulateECuda<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_right_product_partitioned_e_cuda.c_str(),
-        ceres::internal::PMVRightMultiplyAndAccumulateECuda,
-        data,
-        &context);
-#endif
-
-    const std::string name_update_block_diagonal_ftf =
-        "PMVUpdateBlockDiagonalFtF<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_update_block_diagonal_ftf.c_str(),
-                                   ceres::internal::PMVUpdateBlockDiagonalFtF,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_pse =
-        "PSEPreconditionerRightMultiplyAndAccumulate<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_pse.c_str(), ceres::internal::PSEPreconditioner, data, &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_isc_no_diag =
-        "ISCRightMultiplyAndAccumulate<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_isc_no_diag.c_str(),
-                                   ceres::internal::ISCRightMultiplyNoDiag,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_update_block_diagonal_ete =
-        "PMVUpdateBlockDiagonalEtE<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_update_block_diagonal_ete.c_str(),
-                                   ceres::internal::PMVUpdateBlockDiagonalEtE,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-    const std::string name_isc_diag =
-        "ISCRightMultiplyAndAccumulateDiag<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_isc_diag.c_str(),
-                                   ceres::internal::ISCRightMultiplyDiag,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-#ifndef CERES_NO_CUDA
-    const std::string name_right_product_cuda =
-        "JacobianRightMultiplyAndAccumulateCuda<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_right_product_cuda.c_str(),
-        ceres::internal::JacobianRightMultiplyAndAccumulateCuda,
-        data,
-        &context)
-        ->Arg(1);
-#endif
-
-    const std::string name_left_product =
-        "JacobianLeftMultiplyAndAccumulate<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_left_product.c_str(),
-        ceres::internal::JacobianLeftMultiplyAndAccumulate,
-        data,
-        &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_left_product_partitioned_f =
-        "PMVLeftMultiplyAndAccumulateF<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_left_product_partitioned_f.c_str(),
-        ceres::internal::PMVLeftMultiplyAndAccumulateF,
-        data,
-        &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-#ifndef CERES_NO_CUDA
-    const std::string name_left_product_partitioned_f_cuda =
-        "PMVLeftMultiplyAndAccumulateFCuda<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_left_product_partitioned_f_cuda.c_str(),
-        ceres::internal::PMVLeftMultiplyAndAccumulateFCuda,
-        data,
-        &context);
-#endif
-
-    const std::string name_left_product_partitioned_e =
-        "PMVLeftMultiplyAndAccumulateE<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_left_product_partitioned_e.c_str(),
-        ceres::internal::PMVLeftMultiplyAndAccumulateE,
-        data,
-        &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-#ifndef CERES_NO_CUDA
-    const std::string name_left_product_partitioned_e_cuda =
-        "PMVLeftMultiplyAndAccumulateECuda<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_left_product_partitioned_e_cuda.c_str(),
-        ceres::internal::PMVLeftMultiplyAndAccumulateECuda,
-        data,
-        &context);
-#endif
-
-#ifndef CERES_NO_CUDA
-    const std::string name_left_product_cuda =
-        "JacobianLeftMultiplyAndAccumulateCuda<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_left_product_cuda.c_str(),
-        ceres::internal::JacobianLeftMultiplyAndAccumulateCuda,
-        data,
-        &context)
-        ->Arg(1);
-#endif
-
-    const std::string name_squared_column_norm =
-        "JacobianSquaredColumnNorm<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_squared_column_norm.c_str(),
-                                   ceres::internal::JacobianSquaredColumnNorm,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_scale_columns = "JacobianScaleColumns<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_scale_columns.c_str(),
-                                   ceres::internal::JacobianScaleColumns,
-                                   data,
-                                   &context)
-        ->Arg(1)
-        ->Arg(2)
-        ->Arg(4)
-        ->Arg(8)
-        ->Arg(16);
-
-    const std::string name_to_crs = "JacobianToCRS<" + path + ">";
-    ::benchmark::RegisterBenchmark(
-        name_to_crs.c_str(), ceres::internal::JacobianToCRS, data, &context);
-#ifndef CERES_NO_CUDA
-    const std::string name_to_crs_view = "JacobianToCRSView<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_to_crs_view.c_str(),
-                                   ceres::internal::JacobianToCRSView,
-                                   data,
-                                   &context);
-    const std::string name_to_crs_matrix = "JacobianToCRSMatrix<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_to_crs_matrix.c_str(),
-                                   ceres::internal::JacobianToCRSMatrix,
-                                   data,
-                                   &context);
-    const std::string name_to_crs_view_update =
-        "JacobianToCRSViewUpdate<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_to_crs_view_update.c_str(),
-                                   ceres::internal::JacobianToCRSViewUpdate,
-                                   data,
-                                   &context);
-    const std::string name_to_crs_matrix_update =
-        "JacobianToCRSMatrixUpdate<" + path + ">";
-    ::benchmark::RegisterBenchmark(name_to_crs_matrix_update.c_str(),
-                                   ceres::internal::JacobianToCRSMatrixUpdate,
-                                   data,
-                                   &context);
-#endif
-  }
-  ::benchmark::RunSpecifiedBenchmarks();
-
-  using namespace ::benchmark;
-  using namespace benchmark_shutdown_fallback;
-  Shutdown();
-  return 0;
-}
diff --git a/third_party/ceres/internal/ceres/evaluation_callback.cc b/third_party/ceres/internal/ceres/evaluation_callback.cc
deleted file mode 100644
index 5ac6645..0000000
--- a/third_party/ceres/internal/ceres/evaluation_callback.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#include "ceres/evaluation_callback.h"
-
-namespace ceres {
-
-EvaluationCallback::~EvaluationCallback() = default;
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/evaluation_callback_test.cc b/third_party/ceres/internal/ceres/evaluation_callback_test.cc
deleted file mode 100644
index 7ce110c..0000000
--- a/third_party/ceres/internal/ceres/evaluation_callback_test.cc
+++ /dev/null
@@ -1,388 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#include "ceres/evaluation_callback.h"
-
-#include <cmath>
-#include <limits>
-#include <memory>
-#include <vector>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/problem.h"
-#include "ceres/problem_impl.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/solver.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Use an inline hash function to avoid portability wrangling. Algorithm from
-// Daniel Bernstein, known as the "djb2" hash.
-template <typename T>
-uint64_t Djb2Hash(const T* data, const int size) {
-  uint64_t hash = 5381;
-  const auto* data_as_bytes = reinterpret_cast<const uint8_t*>(data);
-  for (int i = 0; i < sizeof(*data) * size; ++i) {
-    hash = hash * 33 + data_as_bytes[i];
-  }
-  return hash;
-}
-
-const double kUninitialized = 0;
-
-// Generally multiple inheritance is a terrible idea, but in this (test)
-// case it makes for a relatively elegant test implementation.
-struct WigglyBowlCostFunctionAndEvaluationCallback : SizedCostFunction<2, 2>,
-                                                     EvaluationCallback {
-  explicit WigglyBowlCostFunctionAndEvaluationCallback(double* parameter)
-      : EvaluationCallback(),
-        user_parameter_block(parameter),
-        prepare_num_calls(0),
-        prepare_requested_jacobians(false),
-        prepare_new_evaluation_point(false),
-        prepare_parameter_hash(kUninitialized),
-        evaluate_num_calls(0),
-        evaluate_last_parameter_hash(kUninitialized) {}
-
-  // Evaluation callback interface. This checks that all the preconditions are
-  // met at the point that Ceres calls into it.
-  void PrepareForEvaluation(bool evaluate_jacobians,
-                            bool new_evaluation_point) final {
-    // At this point, the incoming parameters are implicitly pushed by Ceres
-    // into the user parameter blocks; in contrast to in Evaluate().
-    uint64_t incoming_parameter_hash = Djb2Hash(user_parameter_block, 2);
-
-    // Check: Prepare() & Evaluate() come in pairs, in that order. Before this
-    // call, the number of calls excluding this one should match.
-    EXPECT_EQ(prepare_num_calls, evaluate_num_calls);
-
-    // Check: new_evaluation_point indicates that the parameter has changed.
-    if (new_evaluation_point) {
-      // If it's a new evaluation point, then the parameter should have
-      // changed. Technically, it's not required that it must change but
-      // in practice it does, and that helps with testing.
-      EXPECT_NE(evaluate_last_parameter_hash, incoming_parameter_hash);
-      EXPECT_NE(prepare_parameter_hash, incoming_parameter_hash);
-    } else {
-      // If this is the same evaluation point as last time, ensure that
-      // the parameters match both from the previous evaluate, the
-      // previous prepare, and the current prepare.
-      EXPECT_EQ(evaluate_last_parameter_hash, prepare_parameter_hash);
-      EXPECT_EQ(evaluate_last_parameter_hash, incoming_parameter_hash);
-    }
-
-    // Save details for to check at the next call to Evaluate().
-    prepare_num_calls++;
-    prepare_requested_jacobians = evaluate_jacobians;
-    prepare_new_evaluation_point = new_evaluation_point;
-    prepare_parameter_hash = incoming_parameter_hash;
-  }
-
-  // Cost function interface. This checks that preconditions that were
-  // set as part of the PrepareForEvaluation() call are met in this one.
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    // Cost function implementation of the "Wiggly Bowl" function:
-    //
-    //   1/2 * [(y - a*sin(x))^2 + x^2],
-    //
-    // expressed as a Ceres cost function with two residuals:
-    //
-    //   r[0] = y - a*sin(x)
-    //   r[1] = x.
-    //
-    // This is harder to optimize than the Rosenbrock function because the
-    // minimizer has to navigate a sine-shaped valley while descending the 1D
-    // parabola formed along the y axis. Note that the "a" needs to be more
-    // than 5 to get a strong enough wiggle effect in the cost surface to
-    // trigger failed iterations in the optimizer.
-    const double a = 10.0;
-    double x = (*parameters)[0];
-    double y = (*parameters)[1];
-    residuals[0] = y - a * sin(x);
-    residuals[1] = x;
-    if (jacobians != nullptr) {
-      (*jacobians)[2 * 0 + 0] = -a * cos(x);  // df1/dx
-      (*jacobians)[2 * 0 + 1] = 1.0;          // df1/dy
-      (*jacobians)[2 * 1 + 0] = 1.0;          // df2/dx
-      (*jacobians)[2 * 1 + 1] = 0.0;          // df2/dy
-    }
-
-    uint64_t incoming_parameter_hash = Djb2Hash(*parameters, 2);
-
-    // Check: PrepareForEvaluation() & Evaluate() come in pairs, in that order.
-    EXPECT_EQ(prepare_num_calls, evaluate_num_calls + 1);
-
-    // Check: if new_evaluation_point indicates that the parameter has
-    // changed, it has changed; otherwise it is the same.
-    if (prepare_new_evaluation_point) {
-      EXPECT_NE(evaluate_last_parameter_hash, incoming_parameter_hash);
-    } else {
-      EXPECT_NE(evaluate_last_parameter_hash, kUninitialized);
-      EXPECT_EQ(evaluate_last_parameter_hash, incoming_parameter_hash);
-    }
-
-    // Check: Parameter matches value in in parameter blocks during prepare.
-    EXPECT_EQ(prepare_parameter_hash, incoming_parameter_hash);
-
-    // Check: jacobians are requested if they were in PrepareForEvaluation().
-    EXPECT_EQ(prepare_requested_jacobians, jacobians != nullptr);
-
-    evaluate_num_calls++;
-    evaluate_last_parameter_hash = incoming_parameter_hash;
-    return true;
-  }
-
-  // Pointer to the parameter block associated with this cost function.
-  // Contents should get set by Ceres before calls to PrepareForEvaluation()
-  // and Evaluate().
-  double* user_parameter_block;
-
-  // Track state: PrepareForEvaluation().
-  //
-  // These track details from the PrepareForEvaluation() call (hence the
-  // "prepare_" prefix), which are checked for consistency in Evaluate().
-  int prepare_num_calls;
-  bool prepare_requested_jacobians;
-  bool prepare_new_evaluation_point;
-  uint64_t prepare_parameter_hash;
-
-  // Track state: Evaluate().
-  //
-  // These track details from the Evaluate() call (hence the "evaluate_"
-  // prefix), which are then checked for consistency in the calls to
-  // PrepareForEvaluation(). Mutable is reasonable for this case.
-  mutable int evaluate_num_calls;
-  mutable uint64_t evaluate_last_parameter_hash;
-};
-
-TEST(EvaluationCallback, WithTrustRegionMinimizer) {
-  double parameters[2] = {50.0, 50.0};
-  const uint64_t original_parameters_hash = Djb2Hash(parameters, 2);
-
-  WigglyBowlCostFunctionAndEvaluationCallback cost_function(parameters);
-  Problem::Options problem_options;
-  problem_options.evaluation_callback = &cost_function;
-  problem_options.cost_function_ownership = DO_NOT_TAKE_OWNERSHIP;
-  Problem problem(problem_options);
-  problem.AddResidualBlock(&cost_function, nullptr, parameters);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_QR;
-  options.max_num_iterations = 50;
-
-  // Run the solve. Checking is done inside the cost function / callback.
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-
-  // Ensure that this was a hard cost function (not all steps succeed).
-  EXPECT_GT(summary.num_successful_steps, 10);
-  EXPECT_GT(summary.num_unsuccessful_steps, 10);
-
-  // Ensure PrepareForEvaluation() is called the appropriate number of times.
-  EXPECT_EQ(
-      cost_function.prepare_num_calls,
-      // Unsuccessful steps are evaluated only once (no jacobians).
-      summary.num_unsuccessful_steps +
-          // Successful steps are evaluated twice: with and without jacobians.
-          2 * summary.num_successful_steps
-          // Final iteration doesn't re-evaluate the jacobian.
-          // Note: This may be sensitive to tweaks to the TR algorithm; if
-          // this becomes too brittle, remove this EXPECT_EQ() entirely.
-          - 1);
-
-  // Ensure the callback calls ran a reasonable number of times.
-  EXPECT_GT(cost_function.prepare_num_calls, 0);
-  EXPECT_GT(cost_function.evaluate_num_calls, 0);
-  EXPECT_EQ(cost_function.prepare_num_calls, cost_function.evaluate_num_calls);
-
-  // Ensure that the parameters did actually change.
-  EXPECT_NE(Djb2Hash(parameters, 2), original_parameters_hash);
-}
-
-// r = 1 - x
-struct LinearResidual {
-  template <typename T>
-  bool operator()(const T* x, T* residuals) const {
-    residuals[0] = 1.0 - x[0];
-    return true;
-  }
-
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<LinearResidual, 1, 1>(new LinearResidual);
-  };
-};
-
-// Increments a counter everytime PrepareForEvaluation is called.
-class IncrementingEvaluationCallback : public EvaluationCallback {
- public:
-  void PrepareForEvaluation(bool evaluate_jacobians,
-                            bool new_evaluation_point) final {
-    (void)evaluate_jacobians;
-    (void)new_evaluation_point;
-    counter_ += 1.0;
-  }
-
-  double counter() const { return counter_; }
-
- private:
-  double counter_ = -1;
-};
-
-// r = IncrementingEvaluationCallback::counter - x
-struct EvaluationCallbackResidual {
-  explicit EvaluationCallbackResidual(
-      const IncrementingEvaluationCallback& callback)
-      : callback(callback) {}
-
-  template <typename T>
-  bool operator()(const T* x, T* residuals) const {
-    residuals[0] = callback.counter() - x[0];
-    return true;
-  }
-
-  const IncrementingEvaluationCallback& callback;
-
-  static CostFunction* Create(IncrementingEvaluationCallback& callback) {
-    return new AutoDiffCostFunction<EvaluationCallbackResidual, 1, 1>(
-        new EvaluationCallbackResidual(callback));
-  };
-};
-
-// The following test, constructs a problem with residual blocks all
-// of whose parameters are constant, so they are evaluated once
-// outside the Minimizer to compute Solver::Summary::fixed_cost.
-//
-// The cost function for this residual block depends on the
-// IncrementingEvaluationCallback::counter_, by checking the value of
-// the fixed cost, we can check if the IncrementingEvaluationCallback
-// was called.
-TEST(EvaluationCallback, EvaluationCallbackIsCalledBeforeFixedCostIsEvaluated) {
-  double x = 1;
-  double y = 2;
-  std::unique_ptr<IncrementingEvaluationCallback> callback(
-      new IncrementingEvaluationCallback);
-  Problem::Options problem_options;
-  problem_options.evaluation_callback = callback.get();
-  Problem problem(problem_options);
-  problem.AddResidualBlock(LinearResidual::Create(), nullptr, &x);
-  problem.AddResidualBlock(
-      EvaluationCallbackResidual::Create(*callback), nullptr, &y);
-  problem.SetParameterBlockConstant(&y);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_QR;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.fixed_cost, 2.0);
-  EXPECT_EQ(summary.final_cost, summary.fixed_cost);
-  EXPECT_GT(callback->counter(), 0);
-}
-
-static void WithLineSearchMinimizerImpl(
-    LineSearchType line_search,
-    LineSearchDirectionType line_search_direction,
-    LineSearchInterpolationType line_search_interpolation) {
-  double parameters[2] = {50.0, 50.0};
-  const uint64_t original_parameters_hash = Djb2Hash(parameters, 2);
-
-  WigglyBowlCostFunctionAndEvaluationCallback cost_function(parameters);
-  Problem::Options problem_options;
-  problem_options.evaluation_callback = &cost_function;
-  problem_options.cost_function_ownership = DO_NOT_TAKE_OWNERSHIP;
-  Problem problem(problem_options);
-  problem.AddResidualBlock(&cost_function, nullptr, parameters);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_QR;
-  options.max_num_iterations = 50;
-  options.minimizer_type = ceres::LINE_SEARCH;
-
-  options.line_search_type = line_search;
-  options.line_search_direction_type = line_search_direction;
-  options.line_search_interpolation_type = line_search_interpolation;
-
-  // Run the solve. Checking is done inside the cost function / callback.
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-
-  // Ensure the callback calls ran a reasonable number of times.
-  EXPECT_GT(summary.num_line_search_steps, 10);
-  EXPECT_GT(cost_function.prepare_num_calls, 30);
-  EXPECT_EQ(cost_function.prepare_num_calls, cost_function.evaluate_num_calls);
-
-  // Ensure that the parameters did actually change.
-  EXPECT_NE(Djb2Hash(parameters, 2), original_parameters_hash);
-}
-
-// Note: These tests omit combinations of Wolfe line search with bisection.
-// Due to an implementation quirk in Wolfe line search with bisection, there
-// are calls to re-evaluate an existing point with new_point = true. That
-// causes the (overly) strict tests to break, since they check the new_point
-// preconditions in an if-and-only-if way. Strictly speaking, if new_point =
-// true, the interface does not *require* that the point has changed; only that
-// if new_point = false, the same point is reused.
-//
-// Since the strict checking is useful to verify that there aren't missed
-// optimizations, omit tests of the Wolfe with bisection cases.
-
-// Wolfe with L-BFGS.
-TEST(EvaluationCallback, WithLineSearchMinimizerWolfeLbfgsCubic) {
-  WithLineSearchMinimizerImpl(WOLFE, LBFGS, CUBIC);
-}
-TEST(EvaluationCallback, WithLineSearchMinimizerWolfeLbfgsQuadratic) {
-  WithLineSearchMinimizerImpl(WOLFE, LBFGS, QUADRATIC);
-}
-
-// Wolfe with full BFGS.
-TEST(EvaluationCallback, WithLineSearchMinimizerWolfeBfgsCubic) {
-  WithLineSearchMinimizerImpl(WOLFE, BFGS, CUBIC);
-}
-
-TEST(EvaluationCallback, WithLineSearchMinimizerWolfeBfgsQuadratic) {
-  WithLineSearchMinimizerImpl(WOLFE, BFGS, QUADRATIC);
-}
-
-// Armijo with nonlinear conjugate gradient.
-TEST(EvaluationCallback, WithLineSearchMinimizerArmijoCubic) {
-  WithLineSearchMinimizerImpl(ARMIJO, NONLINEAR_CONJUGATE_GRADIENT, CUBIC);
-}
-
-TEST(EvaluationCallback, WithLineSearchMinimizerArmijoBisection) {
-  WithLineSearchMinimizerImpl(ARMIJO, NONLINEAR_CONJUGATE_GRADIENT, BISECTION);
-}
-
-TEST(EvaluationCallback, WithLineSearchMinimizerArmijoQuadratic) {
-  WithLineSearchMinimizerImpl(ARMIJO, NONLINEAR_CONJUGATE_GRADIENT, QUADRATIC);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/evaluator.cc b/third_party/ceres/internal/ceres/evaluator.cc
deleted file mode 100644
index 64eb4c5..0000000
--- a/third_party/ceres/internal/ceres/evaluator.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/evaluator.h"
-
-#include <memory>
-#include <vector>
-
-#include "ceres/block_evaluate_preparer.h"
-#include "ceres/block_jacobian_writer.h"
-#include "ceres/compressed_row_jacobian_writer.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/dense_jacobian_writer.h"
-#include "ceres/dynamic_compressed_row_finalizer.h"
-#include "ceres/dynamic_compressed_row_jacobian_writer.h"
-#include "ceres/internal/export.h"
-#include "ceres/program_evaluator.h"
-#include "ceres/scratch_evaluate_preparer.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-Evaluator::~Evaluator() = default;
-
-std::unique_ptr<Evaluator> Evaluator::Create(const Evaluator::Options& options,
-                                             Program* program,
-                                             std::string* error) {
-  CHECK(options.context != nullptr);
-
-  switch (options.linear_solver_type) {
-    case DENSE_QR:
-    case DENSE_NORMAL_CHOLESKY:
-      return std::make_unique<
-          ProgramEvaluator<ScratchEvaluatePreparer, DenseJacobianWriter>>(
-          options, program);
-    case DENSE_SCHUR:
-    case SPARSE_SCHUR:
-    case ITERATIVE_SCHUR:
-    case CGNR: {
-      if (options.sparse_linear_algebra_library_type == CUDA_SPARSE) {
-        return std::make_unique<ProgramEvaluator<ScratchEvaluatePreparer,
-                                                 CompressedRowJacobianWriter>>(
-            options, program);
-      } else {
-        return std::make_unique<
-            ProgramEvaluator<BlockEvaluatePreparer, BlockJacobianWriter>>(
-            options, program);
-      }
-    }
-    case SPARSE_NORMAL_CHOLESKY:
-      if (options.dynamic_sparsity) {
-        return std::make_unique<
-            ProgramEvaluator<ScratchEvaluatePreparer,
-                             DynamicCompressedRowJacobianWriter,
-                             DynamicCompressedRowJacobianFinalizer>>(options,
-                                                                     program);
-      } else {
-        return std::make_unique<
-            ProgramEvaluator<BlockEvaluatePreparer, BlockJacobianWriter>>(
-            options, program);
-      }
-
-    default:
-      *error = "Invalid Linear Solver Type. Unable to create evaluator.";
-      return nullptr;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/evaluator.h b/third_party/ceres/internal/ceres/evaluator.h
deleted file mode 100644
index dcb3cf6..0000000
--- a/third_party/ceres/internal/ceres/evaluator.h
+++ /dev/null
@@ -1,174 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_EVALUATOR_H_
-#define CERES_INTERNAL_EVALUATOR_H_
-
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/execution_summary.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-struct CRSMatrix;
-class EvaluationCallback;
-
-namespace internal {
-
-class Program;
-class SparseMatrix;
-
-// The Evaluator interface offers a way to interact with a least squares cost
-// function that is useful for an optimizer that wants to minimize the least
-// squares objective. This insulates the optimizer from issues like Jacobian
-// storage, manifolds, etc.
-class CERES_NO_EXPORT Evaluator {
- public:
-  virtual ~Evaluator();
-
-  struct Options {
-    int num_threads = 1;
-    int num_eliminate_blocks = -1;
-    LinearSolverType linear_solver_type = DENSE_QR;
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type =
-        NO_SPARSE;
-    bool dynamic_sparsity = false;
-    ContextImpl* context = nullptr;
-    EvaluationCallback* evaluation_callback = nullptr;
-  };
-
-  static std::unique_ptr<Evaluator> Create(const Options& options,
-                                           Program* program,
-                                           std::string* error);
-
-  // Build and return a sparse matrix for storing and working with the Jacobian
-  // of the objective function. The jacobian has dimensions
-  // NumEffectiveParameters() by NumParameters(), and is typically extremely
-  // sparse. Since the sparsity pattern of the Jacobian remains constant over
-  // the lifetime of the optimization problem, this method is used to
-  // instantiate a SparseMatrix object with the appropriate sparsity structure
-  // (which can be an expensive operation) and then reused by the optimization
-  // algorithm and the various linear solvers.
-  //
-  // It is expected that the classes implementing this interface will be aware
-  // of their client's requirements for the kind of sparse matrix storage and
-  // layout that is needed for an efficient implementation. For example
-  // CompressedRowOptimizationProblem creates a compressed row representation of
-  // the jacobian for use with CHOLMOD, where as BlockOptimizationProblem
-  // creates a BlockSparseMatrix representation of the jacobian for use in the
-  // Schur complement based methods.
-  virtual std::unique_ptr<SparseMatrix> CreateJacobian() const = 0;
-
-  // Options struct to control Evaluator::Evaluate;
-  struct EvaluateOptions {
-    // If false, the loss function correction is not applied to the
-    // residual blocks.
-    bool apply_loss_function = true;
-
-    // If false, this evaluation point is the same as the last one.
-    bool new_evaluation_point = true;
-  };
-
-  // Evaluate the cost function for the given state. Returns the cost,
-  // residuals, and jacobian in the corresponding arguments. Both residuals and
-  // jacobian are optional; to avoid computing them, pass nullptr.
-  //
-  // If non-nullptr, the Jacobian must have a suitable sparsity pattern; only
-  // the values array of the jacobian is modified.
-  //
-  // state is an array of size NumParameters(), cost is a pointer to a single
-  // double, and residuals is an array of doubles of size NumResiduals().
-  virtual bool Evaluate(const EvaluateOptions& evaluate_options,
-                        const double* state,
-                        double* cost,
-                        double* residuals,
-                        double* gradient,
-                        SparseMatrix* jacobian) = 0;
-
-  // Variant of Evaluator::Evaluate where the user wishes to use the
-  // default EvaluateOptions struct. This is mostly here as a
-  // convenience method.
-  bool Evaluate(const double* state,
-                double* cost,
-                double* residuals,
-                double* gradient,
-                SparseMatrix* jacobian) {
-    return Evaluate(
-        EvaluateOptions(), state, cost, residuals, gradient, jacobian);
-  }
-
-  // Make a change delta (of size NumEffectiveParameters()) to state (of size
-  // NumParameters()) and store the result in state_plus_delta.
-  //
-  // In the case that there are no manifolds used, this is equivalent to
-  //
-  //   state_plus_delta[i] = state[i] + delta[i] ;
-  //
-  // however, the mapping is more complicated in the case of manifolds
-  // like quaternions. This is the same as the "Plus()" operation in
-  // manifold.h, but operating over the entire state vector for a
-  // problem.
-  virtual bool Plus(const double* state,
-                    const double* delta,
-                    double* state_plus_delta) const = 0;
-
-  // The number of parameters in the optimization problem.
-  virtual int NumParameters() const = 0;
-
-  // This is the effective number of parameters that the optimizer may adjust.
-  // This applies when there are manifolds on some of the parameters.
-  virtual int NumEffectiveParameters() const = 0;
-
-  // The number of residuals in the optimization problem.
-  virtual int NumResiduals() const = 0;
-
-  // The following two methods return copies instead of references so
-  // that the base class implementation does not have to worry about
-  // life time issues. Further, these calls are not expected to be
-  // frequent or performance sensitive.
-  virtual std::map<std::string, CallStatistics> Statistics() const {
-    return {};
-  }
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_EVALUATOR_H_
diff --git a/third_party/ceres/internal/ceres/evaluator_test.cc b/third_party/ceres/internal/ceres/evaluator_test.cc
deleted file mode 100644
index 43e8872..0000000
--- a/third_party/ceres/internal/ceres/evaluator_test.cc
+++ /dev/null
@@ -1,726 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Tests shared across evaluators. The tests try all combinations of linear
-// solver and num_eliminate_blocks (for schur-based solvers).
-
-#include "ceres/evaluator.h"
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/cost_function.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/evaluator_test_utils.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/manifold.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// TODO(keir): Consider pushing this into a common test utils file.
-template <int kFactor, int kNumResiduals, int... Ns>
-class ParameterIgnoringCostFunction
-    : public SizedCostFunction<kNumResiduals, Ns...> {
-  using Base = SizedCostFunction<kNumResiduals, Ns...>;
-
- public:
-  explicit ParameterIgnoringCostFunction(bool succeeds = true)
-      : succeeds_(succeeds) {}
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < Base::num_residuals(); ++i) {
-      residuals[i] = i + 1;
-    }
-    if (jacobians) {
-      for (int k = 0; k < Base::parameter_block_sizes().size(); ++k) {
-        // The jacobians here are full sized, but they are transformed in the
-        // evaluator into the "local" jacobian. In the tests, the "subset
-        // constant" manifold is used, which should pick out columns from these
-        // jacobians. Put values in the jacobian that make this obvious; in
-        // particular, make the jacobians like this:
-        //
-        //   1 2 3 4 ...
-        //   1 2 3 4 ...   .*  kFactor
-        //   1 2 3 4 ...
-        //
-        // where the multiplication by kFactor makes it easier to distinguish
-        // between Jacobians of different residuals for the same parameter.
-        if (jacobians[k] != nullptr) {
-          MatrixRef jacobian(jacobians[k],
-                             Base::num_residuals(),
-                             Base::parameter_block_sizes()[k]);
-          for (int j = 0; j < Base::parameter_block_sizes()[k]; ++j) {
-            jacobian.col(j).setConstant(kFactor * (j + 1));
-          }
-        }
-      }
-    }
-    return succeeds_;
-  }
-
- private:
-  bool succeeds_;
-};
-
-struct EvaluatorTestOptions {
-  EvaluatorTestOptions(LinearSolverType linear_solver_type,
-                       int num_eliminate_blocks,
-                       bool dynamic_sparsity = false)
-      : linear_solver_type(linear_solver_type),
-        num_eliminate_blocks(num_eliminate_blocks),
-        dynamic_sparsity(dynamic_sparsity) {}
-
-  LinearSolverType linear_solver_type;
-  int num_eliminate_blocks;
-  bool dynamic_sparsity;
-};
-
-struct EvaluatorTest : public ::testing::TestWithParam<EvaluatorTestOptions> {
-  std::unique_ptr<Evaluator> CreateEvaluator(Program* program) {
-    // This program is straight from the ProblemImpl, and so has no index/offset
-    // yet; compute it here as required by the evaluator implementations.
-    program->SetParameterOffsetsAndIndex();
-
-    if (VLOG_IS_ON(1)) {
-      std::string report;
-      StringAppendF(&report,
-                    "Creating evaluator with type: %d",
-                    GetParam().linear_solver_type);
-      if (GetParam().linear_solver_type == SPARSE_NORMAL_CHOLESKY) {
-        StringAppendF(
-            &report, ", dynamic_sparsity: %d", GetParam().dynamic_sparsity);
-      }
-      StringAppendF(&report,
-                    " and num_eliminate_blocks: %d",
-                    GetParam().num_eliminate_blocks);
-      VLOG(1) << report;
-    }
-    Evaluator::Options options;
-    options.linear_solver_type = GetParam().linear_solver_type;
-    options.num_eliminate_blocks = GetParam().num_eliminate_blocks;
-    options.dynamic_sparsity = GetParam().dynamic_sparsity;
-    options.context = problem.context();
-    std::string error;
-    return Evaluator::Create(options, program, &error);
-  }
-
-  void EvaluateAndCompare(ProblemImpl* problem,
-                          int expected_num_rows,
-                          int expected_num_cols,
-                          double expected_cost,
-                          const double* expected_residuals,
-                          const double* expected_gradient,
-                          const double* expected_jacobian) {
-    std::unique_ptr<Evaluator> evaluator =
-        CreateEvaluator(problem->mutable_program());
-    int num_residuals = expected_num_rows;
-    int num_parameters = expected_num_cols;
-
-    double cost = -1;
-
-    Vector residuals(num_residuals);
-    residuals.setConstant(-2000);
-
-    Vector gradient(num_parameters);
-    gradient.setConstant(-3000);
-
-    std::unique_ptr<SparseMatrix> jacobian(evaluator->CreateJacobian());
-
-    ASSERT_EQ(expected_num_rows, evaluator->NumResiduals());
-    ASSERT_EQ(expected_num_cols, evaluator->NumEffectiveParameters());
-    ASSERT_EQ(expected_num_rows, jacobian->num_rows());
-    ASSERT_EQ(expected_num_cols, jacobian->num_cols());
-
-    std::vector<double> state(evaluator->NumParameters());
-
-    // clang-format off
-    ASSERT_TRUE(evaluator->Evaluate(
-          &state[0],
-          &cost,
-          expected_residuals != nullptr ? &residuals[0]  : nullptr,
-          expected_gradient  != nullptr ? &gradient[0]   : nullptr,
-          expected_jacobian  != nullptr ? jacobian.get() : nullptr));
-    // clang-format on
-
-    Matrix actual_jacobian;
-    if (expected_jacobian != nullptr) {
-      jacobian->ToDenseMatrix(&actual_jacobian);
-    }
-
-    CompareEvaluations(expected_num_rows,
-                       expected_num_cols,
-                       expected_cost,
-                       expected_residuals,
-                       expected_gradient,
-                       expected_jacobian,
-                       cost,
-                       &residuals[0],
-                       &gradient[0],
-                       actual_jacobian.data());
-  }
-
-  // Try all combinations of parameters for the evaluator.
-  void CheckAllEvaluationCombinations(const ExpectedEvaluation& expected) {
-    for (int i = 0; i < 8; ++i) {
-      EvaluateAndCompare(&problem,
-                         expected.num_rows,
-                         expected.num_cols,
-                         expected.cost,
-                         (i & 1) ? expected.residuals : nullptr,
-                         (i & 2) ? expected.gradient : nullptr,
-                         (i & 4) ? expected.jacobian : nullptr);
-    }
-  }
-
-  // The values are ignored completely by the cost function.
-  double x[2];
-  double y[3];
-  double z[4];
-
-  ProblemImpl problem;
-};
-
-static void SetSparseMatrixConstant(SparseMatrix* sparse_matrix, double value) {
-  VectorRef(sparse_matrix->mutable_values(), sparse_matrix->num_nonzeros())
-      .setConstant(value);
-}
-
-TEST_P(EvaluatorTest, SingleResidualProblem) {
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<1, 3, 2, 3, 4>, nullptr, x, y, z);
-
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    3, 9,
-    // Cost
-    7.0,
-    // Residuals
-    { 1.0, 2.0, 3.0 },
-    // Gradient
-    { 6.0, 12.0,              // x
-      6.0, 12.0, 18.0,        // y
-      6.0, 12.0, 18.0, 24.0,  // z
-    },
-    // Jacobian
-    //   x          y             z
-    { 1, 2,   1, 2, 3,   1, 2, 3, 4,
-      1, 2,   1, 2, 3,   1, 2, 3, 4,
-      1, 2,   1, 2, 3,   1, 2, 3, 4
-    }
-  };
-  // clang-format on
-  CheckAllEvaluationCombinations(expected);
-}
-
-TEST_P(EvaluatorTest, SingleResidualProblemWithPermutedParameters) {
-  // Add the parameters in explicit order to force the ordering in the program.
-  problem.AddParameterBlock(x, 2);
-  problem.AddParameterBlock(y, 3);
-  problem.AddParameterBlock(z, 4);
-
-  // Then use a cost function which is similar to the others, but swap around
-  // the ordering of the parameters to the cost function. This shouldn't affect
-  // the jacobian evaluation, but requires explicit handling in the evaluators.
-  // At one point the compressed row evaluator had a bug that went undetected
-  // for a long time, since by chance most users added parameters to the problem
-  // in the same order that they occurred as parameters to a cost function.
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<1, 3, 4, 3, 2>, nullptr, z, y, x);
-
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    3, 9,
-    // Cost
-    7.0,
-    // Residuals
-    { 1.0, 2.0, 3.0 },
-    // Gradient
-    { 6.0, 12.0,              // x
-      6.0, 12.0, 18.0,        // y
-      6.0, 12.0, 18.0, 24.0,  // z
-    },
-    // Jacobian
-    //   x          y             z
-    { 1, 2,   1, 2, 3,   1, 2, 3, 4,
-      1, 2,   1, 2, 3,   1, 2, 3, 4,
-      1, 2,   1, 2, 3,   1, 2, 3, 4
-    }
-  };
-  // clang-format on
-  CheckAllEvaluationCombinations(expected);
-}
-
-TEST_P(EvaluatorTest, SingleResidualProblemWithNuisanceParameters) {
-  // These parameters are not used.
-  double a[2];
-  double b[1];
-  double c[1];
-  double d[3];
-
-  // Add the parameters in a mixed order so the Jacobian is "checkered" with the
-  // values from the other parameters.
-  problem.AddParameterBlock(a, 2);
-  problem.AddParameterBlock(x, 2);
-  problem.AddParameterBlock(b, 1);
-  problem.AddParameterBlock(y, 3);
-  problem.AddParameterBlock(c, 1);
-  problem.AddParameterBlock(z, 4);
-  problem.AddParameterBlock(d, 3);
-
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<1, 3, 2, 3, 4>, nullptr, x, y, z);
-
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    3, 16,
-    // Cost
-    7.0,
-    // Residuals
-    { 1.0, 2.0, 3.0 },
-    // Gradient
-    { 0.0, 0.0,               // a
-      6.0, 12.0,              // x
-      0.0,                    // b
-      6.0, 12.0, 18.0,        // y
-      0.0,                    // c
-      6.0, 12.0, 18.0, 24.0,  // z
-      0.0, 0.0, 0.0,          // d
-    },
-    // Jacobian
-    //   a        x     b           y     c              z           d
-    { 0, 0,    1, 2,    0,    1, 2, 3,    0,    1, 2, 3, 4,    0, 0, 0,
-      0, 0,    1, 2,    0,    1, 2, 3,    0,    1, 2, 3, 4,    0, 0, 0,
-      0, 0,    1, 2,    0,    1, 2, 3,    0,    1, 2, 3, 4,    0, 0, 0
-    }
-  };
-  // clang-format on
-  CheckAllEvaluationCombinations(expected);
-}
-
-TEST_P(EvaluatorTest, MultipleResidualProblem) {
-  // Add the parameters in explicit order to force the ordering in the program.
-  problem.AddParameterBlock(x, 2);
-  problem.AddParameterBlock(y, 3);
-  problem.AddParameterBlock(z, 4);
-
-  // f(x, y) in R^2
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<1, 2, 2, 3>, nullptr, x, y);
-
-  // g(x, z) in R^3
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<2, 3, 2, 4>, nullptr, x, z);
-
-  // h(y, z) in R^4
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<3, 4, 3, 4>, nullptr, y, z);
-
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    9, 9,
-    // Cost
-    // f       g           h
-    (  1 + 4 + 1 + 4 + 9 + 1 + 4 + 9 + 16) / 2.0,
-    // Residuals
-    { 1.0, 2.0,           // f
-      1.0, 2.0, 3.0,      // g
-      1.0, 2.0, 3.0, 4.0  // h
-    },
-    // Gradient
-    { 15.0, 30.0,               // x
-      33.0, 66.0, 99.0,         // y
-      42.0, 84.0, 126.0, 168.0  // z
-    },
-    // Jacobian
-    //                x        y           z
-    {   /* f(x, y) */ 1, 2,    1, 2, 3,    0, 0, 0, 0,
-                      1, 2,    1, 2, 3,    0, 0, 0, 0,
-
-        /* g(x, z) */ 2, 4,    0, 0, 0,    2, 4, 6, 8,
-                      2, 4,    0, 0, 0,    2, 4, 6, 8,
-                      2, 4,    0, 0, 0,    2, 4, 6, 8,
-
-        /* h(y, z) */ 0, 0,    3, 6, 9,    3, 6, 9, 12,
-                      0, 0,    3, 6, 9,    3, 6, 9, 12,
-                      0, 0,    3, 6, 9,    3, 6, 9, 12,
-                      0, 0,    3, 6, 9,    3, 6, 9, 12
-    }
-  };
-  // clang-format on
-  CheckAllEvaluationCombinations(expected);
-}
-
-TEST_P(EvaluatorTest, MultipleResidualsWithManifolds) {
-  // Add the parameters in explicit order to force the ordering in the program.
-  problem.AddParameterBlock(x, 2);
-
-  // Fix y's first dimension.
-  std::vector<int> y_fixed;
-  y_fixed.push_back(0);
-  problem.AddParameterBlock(y, 3, new SubsetManifold(3, y_fixed));
-
-  // Fix z's second dimension.
-  std::vector<int> z_fixed;
-  z_fixed.push_back(1);
-  problem.AddParameterBlock(z, 4, new SubsetManifold(4, z_fixed));
-
-  // f(x, y) in R^2
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<1, 2, 2, 3>, nullptr, x, y);
-
-  // g(x, z) in R^3
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<2, 3, 2, 4>, nullptr, x, z);
-
-  // h(y, z) in R^4
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<3, 4, 3, 4>, nullptr, y, z);
-
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    9, 7,
-    // Cost
-    // f       g           h
-    (  1 + 4 + 1 + 4 + 9 + 1 + 4 + 9 + 16) / 2.0,
-    // Residuals
-    { 1.0, 2.0,           // f
-      1.0, 2.0, 3.0,      // g
-      1.0, 2.0, 3.0, 4.0  // h
-    },
-    // Gradient
-    { 15.0, 30.0,         // x
-      66.0, 99.0,         // y
-      42.0, 126.0, 168.0  // z
-    },
-    // Jacobian
-    //                x        y           z
-    {   /* f(x, y) */ 1, 2,    2, 3,    0, 0, 0,
-                      1, 2,    2, 3,    0, 0, 0,
-
-        /* g(x, z) */ 2, 4,    0, 0,    2, 6, 8,
-                      2, 4,    0, 0,    2, 6, 8,
-                      2, 4,    0, 0,    2, 6, 8,
-
-        /* h(y, z) */ 0, 0,    6, 9,    3, 9, 12,
-                      0, 0,    6, 9,    3, 9, 12,
-                      0, 0,    6, 9,    3, 9, 12,
-                      0, 0,    6, 9,    3, 9, 12
-    }
-  };
-  // clang-format on
-  CheckAllEvaluationCombinations(expected);
-}
-
-TEST_P(EvaluatorTest, MultipleResidualProblemWithSomeConstantParameters) {
-  // The values are ignored completely by the cost function.
-  double x[2];
-  double y[3];
-  double z[4];
-
-  // Add the parameters in explicit order to force the ordering in the program.
-  problem.AddParameterBlock(x, 2);
-  problem.AddParameterBlock(y, 3);
-  problem.AddParameterBlock(z, 4);
-
-  // f(x, y) in R^2
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<1, 2, 2, 3>, nullptr, x, y);
-
-  // g(x, z) in R^3
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<2, 3, 2, 4>, nullptr, x, z);
-
-  // h(y, z) in R^4
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<3, 4, 3, 4>, nullptr, y, z);
-
-  // For this test, "z" is constant.
-  problem.SetParameterBlockConstant(z);
-
-  // Create the reduced program which is missing the fixed "z" variable.
-  // Normally, the preprocessing of the program that happens in solver_impl
-  // takes care of this, but we don't want to invoke the solver here.
-  Program reduced_program;
-  std::vector<ParameterBlock*>* parameter_blocks =
-      problem.mutable_program()->mutable_parameter_blocks();
-
-  // "z" is the last parameter; save it for later and pop it off temporarily.
-  // Note that "z" will still get read during evaluation, so it cannot be
-  // deleted at this point.
-  ParameterBlock* parameter_block_z = parameter_blocks->back();
-  parameter_blocks->pop_back();
-
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    9, 5,
-    // Cost
-    // f       g           h
-    (  1 + 4 + 1 + 4 + 9 + 1 + 4 + 9 + 16) / 2.0,
-    // Residuals
-    { 1.0, 2.0,           // f
-      1.0, 2.0, 3.0,      // g
-      1.0, 2.0, 3.0, 4.0  // h
-    },
-    // Gradient
-    { 15.0, 30.0,        // x
-      33.0, 66.0, 99.0,  // y
-    },
-    // Jacobian
-    //                x        y
-    {   /* f(x, y) */ 1, 2,    1, 2, 3,
-                      1, 2,    1, 2, 3,
-
-        /* g(x, z) */ 2, 4,    0, 0, 0,
-                      2, 4,    0, 0, 0,
-                      2, 4,    0, 0, 0,
-
-        /* h(y, z) */ 0, 0,    3, 6, 9,
-                      0, 0,    3, 6, 9,
-                      0, 0,    3, 6, 9,
-                      0, 0,    3, 6, 9
-    }
-  };
-  // clang-format on
-  CheckAllEvaluationCombinations(expected);
-
-  // Restore parameter block z, so it will get freed in a consistent way.
-  parameter_blocks->push_back(parameter_block_z);
-}
-
-TEST_P(EvaluatorTest, EvaluatorAbortsForResidualsThatFailToEvaluate) {
-  // Switch the return value to failure.
-  problem.AddResidualBlock(
-      new ParameterIgnoringCostFunction<20, 3, 2, 3, 4>(false),
-      nullptr,
-      x,
-      y,
-      z);
-
-  // The values are ignored.
-  double state[9];
-
-  std::unique_ptr<Evaluator> evaluator =
-      CreateEvaluator(problem.mutable_program());
-  std::unique_ptr<SparseMatrix> jacobian(evaluator->CreateJacobian());
-  double cost;
-  EXPECT_FALSE(evaluator->Evaluate(state, &cost, nullptr, nullptr, nullptr));
-}
-
-// In the pairs, the first argument is the linear solver type, and the second
-// argument is num_eliminate_blocks. Changing the num_eliminate_blocks only
-// makes sense for the schur-based solvers.
-//
-// Try all values of num_eliminate_blocks that make sense given that in the
-// tests a maximum of 4 parameter blocks are present.
-INSTANTIATE_TEST_SUITE_P(
-    LinearSolvers,
-    EvaluatorTest,
-    ::testing::Values(EvaluatorTestOptions(DENSE_QR, 0),
-                      EvaluatorTestOptions(DENSE_SCHUR, 0),
-                      EvaluatorTestOptions(DENSE_SCHUR, 1),
-                      EvaluatorTestOptions(DENSE_SCHUR, 2),
-                      EvaluatorTestOptions(DENSE_SCHUR, 3),
-                      EvaluatorTestOptions(DENSE_SCHUR, 4),
-                      EvaluatorTestOptions(SPARSE_SCHUR, 0),
-                      EvaluatorTestOptions(SPARSE_SCHUR, 1),
-                      EvaluatorTestOptions(SPARSE_SCHUR, 2),
-                      EvaluatorTestOptions(SPARSE_SCHUR, 3),
-                      EvaluatorTestOptions(SPARSE_SCHUR, 4),
-                      EvaluatorTestOptions(ITERATIVE_SCHUR, 0),
-                      EvaluatorTestOptions(ITERATIVE_SCHUR, 1),
-                      EvaluatorTestOptions(ITERATIVE_SCHUR, 2),
-                      EvaluatorTestOptions(ITERATIVE_SCHUR, 3),
-                      EvaluatorTestOptions(ITERATIVE_SCHUR, 4),
-                      EvaluatorTestOptions(SPARSE_NORMAL_CHOLESKY, 0, false),
-                      EvaluatorTestOptions(SPARSE_NORMAL_CHOLESKY, 0, true)));
-
-// Simple cost function used to check if the evaluator is sensitive to
-// state changes.
-class ParameterSensitiveCostFunction : public SizedCostFunction<2, 2> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    double x1 = parameters[0][0];
-    double x2 = parameters[0][1];
-    residuals[0] = x1 * x1;
-    residuals[1] = x2 * x2;
-
-    if (jacobians != nullptr) {
-      double* jacobian = jacobians[0];
-      if (jacobian != nullptr) {
-        jacobian[0] = 2.0 * x1;
-        jacobian[1] = 0.0;
-        jacobian[2] = 0.0;
-        jacobian[3] = 2.0 * x2;
-      }
-    }
-    return true;
-  }
-};
-
-TEST(Evaluator, EvaluatorRespectsParameterChanges) {
-  ProblemImpl problem;
-
-  double x[2];
-  x[0] = 1.0;
-  x[1] = 1.0;
-
-  problem.AddResidualBlock(new ParameterSensitiveCostFunction(), nullptr, x);
-  Program* program = problem.mutable_program();
-  program->SetParameterOffsetsAndIndex();
-
-  Evaluator::Options options;
-  options.linear_solver_type = DENSE_QR;
-  options.num_eliminate_blocks = 0;
-  options.context = problem.context();
-  std::string error;
-  std::unique_ptr<Evaluator> evaluator(
-      Evaluator::Create(options, program, &error));
-  std::unique_ptr<SparseMatrix> jacobian(evaluator->CreateJacobian());
-
-  ASSERT_EQ(2, jacobian->num_rows());
-  ASSERT_EQ(2, jacobian->num_cols());
-
-  double state[2];
-  state[0] = 2.0;
-  state[1] = 3.0;
-
-  // The original state of a residual block comes from the user's
-  // state. So the original state is 1.0, 1.0, and the only way we get
-  // the 2.0, 3.0 results in the following tests is if it respects the
-  // values in the state vector.
-
-  // Cost only; no residuals and no jacobian.
-  {
-    double cost = -1;
-    ASSERT_TRUE(evaluator->Evaluate(state, &cost, nullptr, nullptr, nullptr));
-    EXPECT_EQ(48.5, cost);
-  }
-
-  // Cost and residuals, no jacobian.
-  {
-    double cost = -1;
-    double residuals[2] = {-2, -2};
-    ASSERT_TRUE(evaluator->Evaluate(state, &cost, residuals, nullptr, nullptr));
-    EXPECT_EQ(48.5, cost);
-    EXPECT_EQ(4, residuals[0]);
-    EXPECT_EQ(9, residuals[1]);
-  }
-
-  // Cost, residuals, and jacobian.
-  {
-    double cost = -1;
-    double residuals[2] = {-2, -2};
-    SetSparseMatrixConstant(jacobian.get(), -1);
-    ASSERT_TRUE(
-        evaluator->Evaluate(state, &cost, residuals, nullptr, jacobian.get()));
-    EXPECT_EQ(48.5, cost);
-    EXPECT_EQ(4, residuals[0]);
-    EXPECT_EQ(9, residuals[1]);
-    Matrix actual_jacobian;
-    jacobian->ToDenseMatrix(&actual_jacobian);
-
-    Matrix expected_jacobian(2, 2);
-    expected_jacobian << 2 * state[0], 0, 0, 2 * state[1];
-
-    EXPECT_TRUE((actual_jacobian.array() == expected_jacobian.array()).all())
-        << "Actual:\n"
-        << actual_jacobian << "\nExpected:\n"
-        << expected_jacobian;
-  }
-}
-
-class HugeCostFunction : public SizedCostFunction<46341, 46345> {
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    return true;
-  }
-};
-
-TEST(Evaluator, LargeProblemDoesNotCauseCrashBlockJacobianWriter) {
-  ProblemImpl problem;
-  std::vector<double> x(46345);
-
-  problem.AddResidualBlock(new HugeCostFunction, nullptr, x.data());
-  Evaluator::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.context = problem.context();
-  options.num_eliminate_blocks = 0;
-  options.dynamic_sparsity = false;
-  std::string error;
-  auto program = problem.mutable_program();
-  program->SetParameterOffsetsAndIndex();
-  auto evaluator = Evaluator::Create(options, program, &error);
-  auto jacobian = evaluator->CreateJacobian();
-  EXPECT_EQ(jacobian, nullptr);
-}
-
-TEST(Evaluator, LargeProblemDoesNotCauseCrashCompressedRowJacobianWriter) {
-  ProblemImpl problem;
-  std::vector<double> x(46345);
-
-  problem.AddResidualBlock(new HugeCostFunction, nullptr, x.data());
-  Evaluator::Options options;
-  // CGNR on CUDA_SPARSE is the only combination that triggers a
-  // CompressedRowJacobianWriter.
-  options.linear_solver_type = CGNR;
-  options.sparse_linear_algebra_library_type = CUDA_SPARSE;
-  options.context = problem.context();
-  options.num_eliminate_blocks = 0;
-  std::string error;
-  auto program = problem.mutable_program();
-  program->SetParameterOffsetsAndIndex();
-  auto evaluator = Evaluator::Create(options, program, &error);
-  auto jacobian = evaluator->CreateJacobian();
-  EXPECT_EQ(jacobian, nullptr);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/evaluator_test_utils.cc b/third_party/ceres/internal/ceres/evaluator_test_utils.cc
deleted file mode 100644
index 904635b..0000000
--- a/third_party/ceres/internal/ceres/evaluator_test_utils.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/evaluator_test_utils.h"
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-void CompareEvaluations(int expected_num_rows,
-                        int expected_num_cols,
-                        double expected_cost,
-                        const double* expected_residuals,
-                        const double* expected_gradient,
-                        const double* expected_jacobian,
-                        const double actual_cost,
-                        const double* actual_residuals,
-                        const double* actual_gradient,
-                        const double* actual_jacobian) {
-  EXPECT_EQ(expected_cost, actual_cost);
-
-  if (expected_residuals != nullptr) {
-    ConstVectorRef expected_residuals_vector(expected_residuals,
-                                             expected_num_rows);
-    ConstVectorRef actual_residuals_vector(actual_residuals, expected_num_rows);
-    EXPECT_TRUE(
-        (actual_residuals_vector.array() == expected_residuals_vector.array())
-            .all())
-        << "Actual:\n"
-        << actual_residuals_vector << "\nExpected:\n"
-        << expected_residuals_vector;
-  }
-
-  if (expected_gradient != nullptr) {
-    ConstVectorRef expected_gradient_vector(expected_gradient,
-                                            expected_num_cols);
-    ConstVectorRef actual_gradient_vector(actual_gradient, expected_num_cols);
-
-    EXPECT_TRUE(
-        (actual_gradient_vector.array() == expected_gradient_vector.array())
-            .all())
-        << "Actual:\n"
-        << actual_gradient_vector.transpose() << "\nExpected:\n"
-        << expected_gradient_vector.transpose();
-  }
-
-  if (expected_jacobian != nullptr) {
-    ConstMatrixRef expected_jacobian_matrix(
-        expected_jacobian, expected_num_rows, expected_num_cols);
-    ConstMatrixRef actual_jacobian_matrix(
-        actual_jacobian, expected_num_rows, expected_num_cols);
-    EXPECT_TRUE(
-        (actual_jacobian_matrix.array() == expected_jacobian_matrix.array())
-            .all())
-        << "Actual:\n"
-        << actual_jacobian_matrix << "\nExpected:\n"
-        << expected_jacobian_matrix;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/evaluator_test_utils.h b/third_party/ceres/internal/ceres/evaluator_test_utils.h
deleted file mode 100644
index e98dfb6..0000000
--- a/third_party/ceres/internal/ceres/evaluator_test_utils.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// Test utils used for evaluation testing.
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Fixed sized struct for storing an evaluation.
-struct CERES_NO_EXPORT ExpectedEvaluation {
-  int num_rows;
-  int num_cols;
-  double cost;
-  const double residuals[50];
-  const double gradient[50];
-  const double jacobian[200];
-};
-
-// Compare two evaluations.
-CERES_NO_EXPORT void CompareEvaluations(int expected_num_rows,
-                                        int expected_num_cols,
-                                        double expected_cost,
-                                        const double* expected_residuals,
-                                        const double* expected_gradient,
-                                        const double* expected_jacobian,
-                                        const double actual_cost,
-                                        const double* actual_residuals,
-                                        const double* actual_gradient,
-                                        const double* actual_jacobian);
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/execution_summary.h b/third_party/ceres/internal/ceres/execution_summary.h
deleted file mode 100644
index accc5e4..0000000
--- a/third_party/ceres/internal/ceres/execution_summary.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_EXECUTION_SUMMARY_H_
-#define CERES_INTERNAL_EXECUTION_SUMMARY_H_
-
-#include <map>
-#include <mutex>
-#include <string>
-#include <utility>
-
-#include "ceres/internal/export.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-
-struct CallStatistics {
-  CallStatistics() = default;
-  double time{0.};
-  int calls{0};
-};
-
-// Struct used by various objects to report statistics about their
-// execution.
-class ExecutionSummary {
- public:
-  void IncrementTimeBy(const std::string& name, const double value) {
-    std::lock_guard<std::mutex> l(mutex_);
-    CallStatistics& call_stats = statistics_[name];
-    call_stats.time += value;
-    ++call_stats.calls;
-  }
-
-  const std::map<std::string, CallStatistics>& statistics() const {
-    return statistics_;
-  }
-
- private:
-  std::mutex mutex_;
-  std::map<std::string, CallStatistics> statistics_;
-};
-
-class ScopedExecutionTimer {
- public:
-  ScopedExecutionTimer(std::string name, ExecutionSummary* summary)
-      : start_time_(WallTimeInSeconds()),
-        name_(std::move(name)),
-        summary_(summary) {}
-
-  ~ScopedExecutionTimer() {
-    summary_->IncrementTimeBy(name_, WallTimeInSeconds() - start_time_);
-  }
-
- private:
-  const double start_time_;
-  const std::string name_;
-  ExecutionSummary* summary_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_EXECUTION_SUMMARY_H_
diff --git a/third_party/ceres/internal/ceres/fake_bundle_adjustment_jacobian.cc b/third_party/ceres/internal/ceres/fake_bundle_adjustment_jacobian.cc
deleted file mode 100644
index 22f3405..0000000
--- a/third_party/ceres/internal/ceres/fake_bundle_adjustment_jacobian.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include "ceres/fake_bundle_adjustment_jacobian.h"
-
-#include <memory>
-#include <random>
-#include <string>
-#include <utility>
-
-#include "Eigen/Dense"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<BlockSparseMatrix> CreateFakeBundleAdjustmentJacobian(
-    int num_cameras,
-    int num_points,
-    int camera_size,
-    int point_size,
-    double visibility,
-    std::mt19937& prng) {
-  constexpr int kResidualSize = 2;
-
-  CompressedRowBlockStructure* bs = new CompressedRowBlockStructure;
-  int c = 0;
-  // Add column blocks for each point
-  for (int i = 0; i < num_points; ++i) {
-    bs->cols.push_back(Block(point_size, c));
-    c += point_size;
-  }
-
-  // Add column blocks for each camera.
-  for (int i = 0; i < num_cameras; ++i) {
-    bs->cols.push_back(Block(camera_size, c));
-    c += camera_size;
-  }
-
-  std::bernoulli_distribution visibility_distribution(visibility);
-  int row_pos = 0;
-  int cell_pos = 0;
-  for (int i = 0; i < num_points; ++i) {
-    for (int j = 0; j < num_cameras; ++j) {
-      if (!visibility_distribution(prng)) {
-        continue;
-      }
-      bs->rows.emplace_back();
-      auto& row = bs->rows.back();
-      row.block.position = row_pos;
-      row.block.size = kResidualSize;
-      auto& cells = row.cells;
-      cells.resize(2);
-
-      cells[0].block_id = i;
-      cells[0].position = cell_pos;
-      cell_pos += kResidualSize * point_size;
-
-      cells[1].block_id = num_points + j;
-      cells[1].position = cell_pos;
-      cell_pos += kResidualSize * camera_size;
-
-      row_pos += kResidualSize;
-    }
-  }
-
-  auto jacobian = std::make_unique<BlockSparseMatrix>(bs);
-  VectorRef(jacobian->mutable_values(), jacobian->num_nonzeros()).setRandom();
-  return jacobian;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/fake_bundle_adjustment_jacobian.h b/third_party/ceres/internal/ceres/fake_bundle_adjustment_jacobian.h
deleted file mode 100644
index 0448dbf..0000000
--- a/third_party/ceres/internal/ceres/fake_bundle_adjustment_jacobian.h
+++ /dev/null
@@ -1,52 +0,0 @@
-
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_FAKE_BUNDLE_ADJUSTMENT_JACOBIAN
-#define CERES_INTERNAL_FAKE_BUNDLE_ADJUSTMENT_JACOBIAN
-
-#include <memory>
-#include <random>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/partitioned_matrix_view.h"
-
-namespace ceres::internal {
-std::unique_ptr<BlockSparseMatrix> CreateFakeBundleAdjustmentJacobian(
-    int num_cameras,
-    int num_points,
-    int camera_size,
-    int point_size,
-    double visibility,
-    std::mt19937& prng);
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_FAKE_BUNDLE_ADJUSTMENT_JACOBIAN
diff --git a/third_party/ceres/internal/ceres/file.cc b/third_party/ceres/internal/ceres/file.cc
deleted file mode 100644
index 60d35fa..0000000
--- a/third_party/ceres/internal/ceres/file.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Really simple file IO.
-
-#include "ceres/file.h"
-
-#include <cstdio>
-#include <string>
-
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-void WriteStringToFileOrDie(const std::string& data,
-                            const std::string& filename) {
-  FILE* file_descriptor = fopen(filename.c_str(), "wb");
-  if (!file_descriptor) {
-    LOG(FATAL) << "Couldn't write to file: " << filename;
-  }
-  fwrite(data.c_str(), 1, data.size(), file_descriptor);
-  fclose(file_descriptor);
-}
-
-void ReadFileToStringOrDie(const std::string& filename, std::string* data) {
-  FILE* file_descriptor = fopen(filename.c_str(), "r");
-
-  if (!file_descriptor) {
-    LOG(FATAL) << "Couldn't read file: " << filename;
-  }
-
-  // Resize the input buffer appropriately.
-  fseek(file_descriptor, 0L, SEEK_END);
-  int64_t num_bytes = ftell(file_descriptor);
-  data->resize(num_bytes);
-
-  // Read the data.
-  fseek(file_descriptor, 0L, SEEK_SET);
-  int64_t num_read =
-      fread(&((*data)[0]), sizeof((*data)[0]), num_bytes, file_descriptor);
-  if (num_read != num_bytes) {
-    LOG(FATAL) << "Couldn't read all of " << filename
-               << "expected bytes: " << num_bytes * sizeof((*data)[0])
-               << "actual bytes: " << num_read;
-  }
-  fclose(file_descriptor);
-}
-
-std::string JoinPath(const std::string& dirname, const std::string& basename) {
-#ifdef _WIN32
-  static const char separator = '\\';
-#else
-  static const char separator = '/';
-#endif  // _WIN32
-
-  if ((!basename.empty() && basename[0] == separator) || dirname.empty()) {
-    return basename;
-  } else if (dirname[dirname.size() - 1] == separator) {
-    return dirname + basename;
-  } else {
-    return dirname + std::string(&separator, 1) + basename;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/file.h b/third_party/ceres/internal/ceres/file.h
deleted file mode 100644
index b21f1ca..0000000
--- a/third_party/ceres/internal/ceres/file.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Simple file IO support. This is a portability shim.
-
-#ifndef CERES_INTERNAL_FILE_H_
-#define CERES_INTERNAL_FILE_H_
-
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-CERES_NO_EXPORT
-void WriteStringToFileOrDie(const std::string& data,
-                            const std::string& filename);
-CERES_NO_EXPORT
-void ReadFileToStringOrDie(const std::string& filename, std::string* data);
-
-// Join two path components, adding a slash if necessary.  If basename is an
-// absolute path then JoinPath ignores dirname and simply returns basename.
-CERES_NO_EXPORT
-std::string JoinPath(const std::string& dirname, const std::string& basename);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_FILE_H_
diff --git a/third_party/ceres/internal/ceres/first_order_function.cc b/third_party/ceres/internal/ceres/first_order_function.cc
deleted file mode 100644
index 267b8ef..0000000
--- a/third_party/ceres/internal/ceres/first_order_function.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/first_order_function.h"
-
-namespace ceres {
-
-FirstOrderFunction::~FirstOrderFunction() = default;
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/fixed_array_test.cc b/third_party/ceres/internal/ceres/fixed_array_test.cc
deleted file mode 100644
index 66b3fbf..0000000
--- a/third_party/ceres/internal/ceres/fixed_array_test.cc
+++ /dev/null
@@ -1,835 +0,0 @@
-// Copyright 2017 The Abseil Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "ceres/internal/fixed_array.h"
-
-#include <cstdio>
-#include <cstring>
-#include <list>
-#include <memory>
-#include <numeric>
-#include <scoped_allocator>
-#include <stdexcept>
-#include <string>
-#include <vector>
-
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-using ::testing::ElementsAreArray;
-
-namespace {
-
-// CERES_INTERNAL_ARRAYSIZE()
-//
-// Returns the number of elements in an array as a compile-time constant, which
-// can be used in defining new arrays. If you use this macro on a pointer by
-// mistake, you will get a compile-time error.
-#define CERES_INTERNAL_ARRAYSIZE(array) (sizeof(ArraySizeHelper(array)))
-
-// Note: this internal template function declaration is used by
-// CERES_INTERNAL_ARRAYSIZE. The function doesn't need a definition, as we only
-// use its type.
-template <typename T, size_t N>
-auto ArraySizeHelper(const T (&array)[N]) -> char (&)[N];
-
-// Helper routine to determine if a ceres::internal::FixedArray used stack
-// allocation.
-template <typename ArrayType>
-static bool IsOnStack(const ArrayType& a) {
-  return a.size() <= ArrayType::inline_elements;
-}
-
-class ConstructionTester {
- public:
-  ConstructionTester() : self_ptr_(this) { constructions++; }
-  ~ConstructionTester() {
-    assert(self_ptr_ == this);
-    self_ptr_ = nullptr;
-    destructions++;
-  }
-
-  // These are incremented as elements are constructed and destructed so we can
-  // be sure all elements are properly cleaned up.
-  static int constructions;
-  static int destructions;
-
-  void CheckConstructed() { assert(self_ptr_ == this); }
-
-  void set(int value) { value_ = value; }
-  int get() { return value_; }
-
- private:
-  // self_ptr_ should always point to 'this' -- that's how we can be sure the
-  // constructor has been called.
-  ConstructionTester* self_ptr_;
-  int value_{0};
-};
-
-int ConstructionTester::constructions = 0;
-int ConstructionTester::destructions = 0;
-
-// ThreeInts will initialize its three ints to the value stored in
-// ThreeInts::counter. The constructor increments counter so that each object
-// in an array of ThreeInts will have different values.
-class ThreeInts {
- public:
-  ThreeInts() {
-    x_ = counter;
-    y_ = counter;
-    z_ = counter;
-    ++counter;
-  }
-
-  static int counter;
-
-  int x_, y_, z_;
-};
-
-int ThreeInts::counter = 0;
-
-TEST(FixedArrayTest, CopyCtor) {
-  ceres::internal::FixedArray<int, 10> on_stack(5);
-  std::iota(on_stack.begin(), on_stack.end(), 0);
-  ceres::internal::FixedArray<int, 10> stack_copy = on_stack;
-  EXPECT_THAT(stack_copy, ElementsAreArray(on_stack));
-  EXPECT_TRUE(IsOnStack(stack_copy));
-
-  ceres::internal::FixedArray<int, 10> allocated(15);
-  std::iota(allocated.begin(), allocated.end(), 0);
-  ceres::internal::FixedArray<int, 10> alloced_copy = allocated;
-  EXPECT_THAT(alloced_copy, ElementsAreArray(allocated));
-  EXPECT_FALSE(IsOnStack(alloced_copy));
-}
-
-TEST(FixedArrayTest, MoveCtor) {
-  ceres::internal::FixedArray<std::unique_ptr<int>, 10> on_stack(5);
-  for (int i = 0; i < 5; ++i) {
-    on_stack[i] = std::make_unique<int>(i);
-  }
-
-  ceres::internal::FixedArray<std::unique_ptr<int>, 10> stack_copy =
-      std::move(on_stack);
-  for (int i = 0; i < 5; ++i) EXPECT_EQ(*(stack_copy[i]), i);
-  EXPECT_EQ(stack_copy.size(), on_stack.size());
-
-  ceres::internal::FixedArray<std::unique_ptr<int>, 10> allocated(15);
-  for (int i = 0; i < 15; ++i) {
-    allocated[i] = std::make_unique<int>(i);
-  }
-
-  ceres::internal::FixedArray<std::unique_ptr<int>, 10> alloced_copy =
-      std::move(allocated);
-  for (int i = 0; i < 15; ++i) EXPECT_EQ(*(alloced_copy[i]), i);
-  EXPECT_EQ(allocated.size(), alloced_copy.size());
-}
-
-TEST(FixedArrayTest, SmallObjects) {
-  // Small object arrays
-  {
-    // Short arrays should be on the stack
-    ceres::internal::FixedArray<int> array(4);
-    EXPECT_TRUE(IsOnStack(array));
-  }
-
-  {
-    // Large arrays should be on the heap
-    ceres::internal::FixedArray<int> array(1048576);
-    EXPECT_FALSE(IsOnStack(array));
-  }
-
-  {
-    // Arrays of <= default size should be on the stack
-    ceres::internal::FixedArray<int, 100> array(100);
-    EXPECT_TRUE(IsOnStack(array));
-  }
-
-  {
-    // Arrays of > default size should be on the heap
-    ceres::internal::FixedArray<int, 100> array(101);
-    EXPECT_FALSE(IsOnStack(array));
-  }
-
-  {
-    // Arrays with different size elements should use approximately
-    // same amount of stack space
-    ceres::internal::FixedArray<int> array1(0);
-    ceres::internal::FixedArray<char> array2(0);
-    EXPECT_LE(sizeof(array1), sizeof(array2) + 100);
-    EXPECT_LE(sizeof(array2), sizeof(array1) + 100);
-  }
-
-  {
-    // Ensure that vectors are properly constructed inside a fixed array.
-    ceres::internal::FixedArray<std::vector<int>> array(2);
-    EXPECT_EQ(0, array[0].size());
-    EXPECT_EQ(0, array[1].size());
-  }
-
-  {
-    // Regardless of ceres::internal::FixedArray implementation, check that a
-    // type with a low alignment requirement and a non power-of-two size is
-    // initialized correctly.
-    ThreeInts::counter = 1;
-    ceres::internal::FixedArray<ThreeInts> array(2);
-    EXPECT_EQ(1, array[0].x_);
-    EXPECT_EQ(1, array[0].y_);
-    EXPECT_EQ(1, array[0].z_);
-    EXPECT_EQ(2, array[1].x_);
-    EXPECT_EQ(2, array[1].y_);
-    EXPECT_EQ(2, array[1].z_);
-  }
-}
-
-TEST(FixedArrayRelationalsTest, EqualArrays) {
-  for (int i = 0; i < 10; ++i) {
-    ceres::internal::FixedArray<int, 5> a1(i);
-    std::iota(a1.begin(), a1.end(), 0);
-    ceres::internal::FixedArray<int, 5> a2(a1.begin(), a1.end());
-
-    EXPECT_TRUE(a1 == a2);
-    EXPECT_FALSE(a1 != a2);
-    EXPECT_TRUE(a2 == a1);
-    EXPECT_FALSE(a2 != a1);
-    EXPECT_FALSE(a1 < a2);
-    EXPECT_FALSE(a1 > a2);
-    EXPECT_FALSE(a2 < a1);
-    EXPECT_FALSE(a2 > a1);
-    EXPECT_TRUE(a1 <= a2);
-    EXPECT_TRUE(a1 >= a2);
-    EXPECT_TRUE(a2 <= a1);
-    EXPECT_TRUE(a2 >= a1);
-  }
-}
-
-TEST(FixedArrayRelationalsTest, UnequalArrays) {
-  for (int i = 1; i < 10; ++i) {
-    ceres::internal::FixedArray<int, 5> a1(i);
-    std::iota(a1.begin(), a1.end(), 0);
-    ceres::internal::FixedArray<int, 5> a2(a1.begin(), a1.end());
-    --a2[i / 2];
-
-    EXPECT_FALSE(a1 == a2);
-    EXPECT_TRUE(a1 != a2);
-    EXPECT_FALSE(a2 == a1);
-    EXPECT_TRUE(a2 != a1);
-    EXPECT_FALSE(a1 < a2);
-    EXPECT_TRUE(a1 > a2);
-    EXPECT_TRUE(a2 < a1);
-    EXPECT_FALSE(a2 > a1);
-    EXPECT_FALSE(a1 <= a2);
-    EXPECT_TRUE(a1 >= a2);
-    EXPECT_TRUE(a2 <= a1);
-    EXPECT_FALSE(a2 >= a1);
-  }
-}
-
-template <int stack_elements>
-static void TestArray(int n) {
-  SCOPED_TRACE(n);
-  SCOPED_TRACE(stack_elements);
-  ConstructionTester::constructions = 0;
-  ConstructionTester::destructions = 0;
-  {
-    ceres::internal::FixedArray<ConstructionTester, stack_elements> array(n);
-
-    EXPECT_THAT(array.size(), n);
-    EXPECT_THAT(array.memsize(), sizeof(ConstructionTester) * n);
-    EXPECT_THAT(array.begin() + n, array.end());
-
-    // Check that all elements were constructed
-    for (int i = 0; i < n; i++) {
-      array[i].CheckConstructed();
-    }
-    // Check that no other elements were constructed
-    EXPECT_THAT(ConstructionTester::constructions, n);
-
-    // Test operator[]
-    for (int i = 0; i < n; i++) {
-      array[i].set(i);
-    }
-    for (int i = 0; i < n; i++) {
-      EXPECT_THAT(array[i].get(), i);
-      EXPECT_THAT(array.data()[i].get(), i);
-    }
-
-    // Test data()
-    for (int i = 0; i < n; i++) {
-      array.data()[i].set(i + 1);
-    }
-    for (int i = 0; i < n; i++) {
-      EXPECT_THAT(array[i].get(), i + 1);
-      EXPECT_THAT(array.data()[i].get(), i + 1);
-    }
-  }  // Close scope containing 'array'.
-
-  // Check that all constructed elements were destructed.
-  EXPECT_EQ(ConstructionTester::constructions,
-            ConstructionTester::destructions);
-}
-
-template <int elements_per_inner_array, int inline_elements>
-static void TestArrayOfArrays(int n) {
-  SCOPED_TRACE(n);
-  SCOPED_TRACE(inline_elements);
-  SCOPED_TRACE(elements_per_inner_array);
-  ConstructionTester::constructions = 0;
-  ConstructionTester::destructions = 0;
-  {
-    using InnerArray = ConstructionTester[elements_per_inner_array];
-    // Heap-allocate the FixedArray to avoid blowing the stack frame.
-    auto array_ptr = std::unique_ptr<
-        ceres::internal::FixedArray<InnerArray, inline_elements>>(
-        new ceres::internal::FixedArray<InnerArray, inline_elements>(n));
-    auto& array = *array_ptr;
-
-    ASSERT_EQ(array.size(), n);
-    ASSERT_EQ(array.memsize(),
-              sizeof(ConstructionTester) * elements_per_inner_array * n);
-    ASSERT_EQ(array.begin() + n, array.end());
-
-    // Check that all elements were constructed
-    for (int i = 0; i < n; i++) {
-      for (int j = 0; j < elements_per_inner_array; j++) {
-        (array[i])[j].CheckConstructed();
-      }
-    }
-    // Check that no other elements were constructed
-    ASSERT_EQ(ConstructionTester::constructions, n * elements_per_inner_array);
-
-    // Test operator[]
-    for (int i = 0; i < n; i++) {
-      for (int j = 0; j < elements_per_inner_array; j++) {
-        (array[i])[j].set(i * elements_per_inner_array + j);
-      }
-    }
-    for (int i = 0; i < n; i++) {
-      for (int j = 0; j < elements_per_inner_array; j++) {
-        ASSERT_EQ((array[i])[j].get(), i * elements_per_inner_array + j);
-        ASSERT_EQ((array.data()[i])[j].get(), i * elements_per_inner_array + j);
-      }
-    }
-
-    // Test data()
-    for (int i = 0; i < n; i++) {
-      for (int j = 0; j < elements_per_inner_array; j++) {
-        (array.data()[i])[j].set((i + 1) * elements_per_inner_array + j);
-      }
-    }
-    for (int i = 0; i < n; i++) {
-      for (int j = 0; j < elements_per_inner_array; j++) {
-        ASSERT_EQ((array[i])[j].get(), (i + 1) * elements_per_inner_array + j);
-        ASSERT_EQ((array.data()[i])[j].get(),
-                  (i + 1) * elements_per_inner_array + j);
-      }
-    }
-  }  // Close scope containing 'array'.
-
-  // Check that all constructed elements were destructed.
-  EXPECT_EQ(ConstructionTester::constructions,
-            ConstructionTester::destructions);
-}
-
-TEST(IteratorConstructorTest, NonInline) {
-  int const kInput[] = {2, 3, 5, 7, 11, 13, 17};
-  ceres::internal::FixedArray<int, CERES_INTERNAL_ARRAYSIZE(kInput) - 1> const
-      fixed(kInput, kInput + CERES_INTERNAL_ARRAYSIZE(kInput));
-  ASSERT_EQ(CERES_INTERNAL_ARRAYSIZE(kInput), fixed.size());
-  for (size_t i = 0; i < CERES_INTERNAL_ARRAYSIZE(kInput); ++i) {
-    ASSERT_EQ(kInput[i], fixed[i]);
-  }
-}
-
-TEST(IteratorConstructorTest, Inline) {
-  int const kInput[] = {2, 3, 5, 7, 11, 13, 17};
-  ceres::internal::FixedArray<int, CERES_INTERNAL_ARRAYSIZE(kInput)> const
-      fixed(kInput, kInput + CERES_INTERNAL_ARRAYSIZE(kInput));
-  ASSERT_EQ(CERES_INTERNAL_ARRAYSIZE(kInput), fixed.size());
-  for (size_t i = 0; i < CERES_INTERNAL_ARRAYSIZE(kInput); ++i) {
-    ASSERT_EQ(kInput[i], fixed[i]);
-  }
-}
-
-TEST(IteratorConstructorTest, NonPod) {
-  char const* kInput[] = {
-      "red", "orange", "yellow", "green", "blue", "indigo", "violet"};
-  ceres::internal::FixedArray<std::string> const fixed(
-      kInput, kInput + CERES_INTERNAL_ARRAYSIZE(kInput));
-  ASSERT_EQ(CERES_INTERNAL_ARRAYSIZE(kInput), fixed.size());
-  for (size_t i = 0; i < CERES_INTERNAL_ARRAYSIZE(kInput); ++i) {
-    ASSERT_EQ(kInput[i], fixed[i]);
-  }
-}
-
-TEST(IteratorConstructorTest, FromEmptyVector) {
-  std::vector<int> const empty;
-  ceres::internal::FixedArray<int> const fixed(empty.begin(), empty.end());
-  EXPECT_EQ(0, fixed.size());
-  EXPECT_EQ(empty.size(), fixed.size());
-}
-
-TEST(IteratorConstructorTest, FromNonEmptyVector) {
-  int const kInput[] = {2, 3, 5, 7, 11, 13, 17};
-  std::vector<int> const items(kInput,
-                               kInput + CERES_INTERNAL_ARRAYSIZE(kInput));
-  ceres::internal::FixedArray<int> const fixed(items.begin(), items.end());
-  ASSERT_EQ(items.size(), fixed.size());
-  for (size_t i = 0; i < items.size(); ++i) {
-    ASSERT_EQ(items[i], fixed[i]);
-  }
-}
-
-TEST(IteratorConstructorTest, FromBidirectionalIteratorRange) {
-  int const kInput[] = {2, 3, 5, 7, 11, 13, 17};
-  std::list<int> const items(kInput, kInput + CERES_INTERNAL_ARRAYSIZE(kInput));
-  ceres::internal::FixedArray<int> const fixed(items.begin(), items.end());
-  EXPECT_THAT(fixed, testing::ElementsAreArray(kInput));
-}
-
-TEST(InitListConstructorTest, InitListConstruction) {
-  ceres::internal::FixedArray<int> fixed = {1, 2, 3};
-  EXPECT_THAT(fixed, testing::ElementsAreArray({1, 2, 3}));
-}
-
-TEST(FillConstructorTest, NonEmptyArrays) {
-  ceres::internal::FixedArray<int> stack_array(4, 1);
-  EXPECT_THAT(stack_array, testing::ElementsAreArray({1, 1, 1, 1}));
-
-  ceres::internal::FixedArray<int, 0> heap_array(4, 1);
-  EXPECT_THAT(stack_array, testing::ElementsAreArray({1, 1, 1, 1}));
-}
-
-TEST(FillConstructorTest, EmptyArray) {
-  ceres::internal::FixedArray<int> empty_fill(0, 1);
-  ceres::internal::FixedArray<int> empty_size(0);
-  EXPECT_EQ(empty_fill, empty_size);
-}
-
-TEST(FillConstructorTest, NotTriviallyCopyable) {
-  std::string str = "abcd";
-  ceres::internal::FixedArray<std::string> strings = {str, str, str, str};
-
-  ceres::internal::FixedArray<std::string> array(4, str);
-  EXPECT_EQ(array, strings);
-}
-
-TEST(FillConstructorTest, Disambiguation) {
-  ceres::internal::FixedArray<size_t> a(1, 2);
-  EXPECT_THAT(a, testing::ElementsAre(2));
-}
-
-TEST(FixedArrayTest, ManySizedArrays) {
-  std::vector<int> sizes;
-  for (int i = 1; i < 100; i++) sizes.push_back(i);
-  for (int i = 100; i <= 1000; i += 100) sizes.push_back(i);
-  for (int n : sizes) {
-    TestArray<0>(n);
-    TestArray<1>(n);
-    TestArray<64>(n);
-    TestArray<1000>(n);
-  }
-}
-
-TEST(FixedArrayTest, ManySizedArraysOfArraysOf1) {
-  for (int n = 1; n < 1000; n++) {
-    ASSERT_NO_FATAL_FAILURE((TestArrayOfArrays<1, 0>(n)));
-    ASSERT_NO_FATAL_FAILURE((TestArrayOfArrays<1, 1>(n)));
-    ASSERT_NO_FATAL_FAILURE((TestArrayOfArrays<1, 64>(n)));
-    ASSERT_NO_FATAL_FAILURE((TestArrayOfArrays<1, 1000>(n)));
-  }
-}
-
-TEST(FixedArrayTest, ManySizedArraysOfArraysOf2) {
-  for (int n = 1; n < 1000; n++) {
-    TestArrayOfArrays<2, 0>(n);
-    TestArrayOfArrays<2, 1>(n);
-    TestArrayOfArrays<2, 64>(n);
-    TestArrayOfArrays<2, 1000>(n);
-  }
-}
-
-// If value_type is put inside of a struct container,
-// we might evoke this error in a hardened build unless data() is carefully
-// written, so check on that.
-//     error: call to int __builtin___sprintf_chk(etc...)
-//     will always overflow destination buffer [-Werror]
-TEST(FixedArrayTest, AvoidParanoidDiagnostics) {
-  ceres::internal::FixedArray<char, 32> buf(32);
-  snprintf(buf.data(), 32, "foo");
-}
-
-TEST(FixedArrayTest, TooBigInlinedSpace) {
-  struct TooBig {
-    char c[1 << 20];
-  };  // too big for even one on the stack
-
-  // Simulate the data members of ceres::internal::FixedArray, a pointer and a
-  // size_t.
-  struct Data {
-    std::tuple<size_t, std::allocator<double>> size_alloc_;
-    TooBig* p;
-  };
-
-  // Make sure TooBig objects are not inlined for 0 or default size.
-  static_assert(
-      sizeof(ceres::internal::FixedArray<TooBig, 0>) == sizeof(Data),
-      "0-sized ceres::internal::FixedArray should have same size as Data.");
-  static_assert(
-      alignof(ceres::internal::FixedArray<TooBig, 0>) == alignof(Data),
-      "0-sized ceres::internal::FixedArray should have same alignment as "
-      "Data.");
-  static_assert(sizeof(ceres::internal::FixedArray<TooBig>) == sizeof(Data),
-                "default-sized ceres::internal::FixedArray should have same "
-                "size as Data");
-  static_assert(alignof(ceres::internal::FixedArray<TooBig>) == alignof(Data),
-                "default-sized ceres::internal::FixedArray should have same "
-                "alignment as Data.");
-}
-
-// PickyDelete EXPECTs its class-scope deallocation funcs are unused.
-struct PickyDelete {
-  void operator delete(void* p) {
-    EXPECT_TRUE(false) << __FUNCTION__;
-    ::operator delete(p);
-  }
-  void operator delete[](void* p) {
-    EXPECT_TRUE(false) << __FUNCTION__;
-    ::operator delete[](p);
-  }
-};
-
-TEST(FixedArrayTest, UsesGlobalAlloc) {
-  ceres::internal::FixedArray<PickyDelete, 0> a(5);
-}
-
-TEST(FixedArrayTest, Data) {
-  static const int kInput[] = {2, 3, 5, 7, 11, 13, 17};
-  ceres::internal::FixedArray<int> fa(std::begin(kInput), std::end(kInput));
-  EXPECT_EQ(fa.data(), &*fa.begin());
-  EXPECT_EQ(fa.data(), &fa[0]);
-
-  const ceres::internal::FixedArray<int>& cfa = fa;
-  EXPECT_EQ(cfa.data(), &*cfa.begin());
-  EXPECT_EQ(cfa.data(), &cfa[0]);
-}
-
-TEST(FixedArrayTest, Empty) {
-  ceres::internal::FixedArray<int> empty(0);
-  ceres::internal::FixedArray<int> inline_filled(1);
-  ceres::internal::FixedArray<int, 0> heap_filled(1);
-  EXPECT_TRUE(empty.empty());
-  EXPECT_FALSE(inline_filled.empty());
-  EXPECT_FALSE(heap_filled.empty());
-}
-
-TEST(FixedArrayTest, FrontAndBack) {
-  ceres::internal::FixedArray<int, 3 * sizeof(int)> inlined = {1, 2, 3};
-  EXPECT_EQ(inlined.front(), 1);
-  EXPECT_EQ(inlined.back(), 3);
-
-  ceres::internal::FixedArray<int, 0> allocated = {1, 2, 3};
-  EXPECT_EQ(allocated.front(), 1);
-  EXPECT_EQ(allocated.back(), 3);
-
-  ceres::internal::FixedArray<int> one_element = {1};
-  EXPECT_EQ(one_element.front(), one_element.back());
-}
-
-TEST(FixedArrayTest, ReverseIteratorInlined) {
-  ceres::internal::FixedArray<int, 5 * sizeof(int)> a = {0, 1, 2, 3, 4};
-
-  int counter = 5;
-  for (ceres::internal::FixedArray<int>::reverse_iterator iter = a.rbegin();
-       iter != a.rend();
-       ++iter) {
-    counter--;
-    EXPECT_EQ(counter, *iter);
-  }
-  EXPECT_EQ(counter, 0);
-
-  counter = 5;
-  for (ceres::internal::FixedArray<int>::const_reverse_iterator iter =
-           a.rbegin();
-       iter != a.rend();
-       ++iter) {
-    counter--;
-    EXPECT_EQ(counter, *iter);
-  }
-  EXPECT_EQ(counter, 0);
-
-  counter = 5;
-  for (auto iter = a.crbegin(); iter != a.crend(); ++iter) {
-    counter--;
-    EXPECT_EQ(counter, *iter);
-  }
-  EXPECT_EQ(counter, 0);
-}
-
-TEST(FixedArrayTest, ReverseIteratorAllocated) {
-  ceres::internal::FixedArray<int, 0> a = {0, 1, 2, 3, 4};
-
-  int counter = 5;
-  for (ceres::internal::FixedArray<int>::reverse_iterator iter = a.rbegin();
-       iter != a.rend();
-       ++iter) {
-    counter--;
-    EXPECT_EQ(counter, *iter);
-  }
-  EXPECT_EQ(counter, 0);
-
-  counter = 5;
-  for (ceres::internal::FixedArray<int>::const_reverse_iterator iter =
-           a.rbegin();
-       iter != a.rend();
-       ++iter) {
-    counter--;
-    EXPECT_EQ(counter, *iter);
-  }
-  EXPECT_EQ(counter, 0);
-
-  counter = 5;
-  for (auto iter = a.crbegin(); iter != a.crend(); ++iter) {
-    counter--;
-    EXPECT_EQ(counter, *iter);
-  }
-  EXPECT_EQ(counter, 0);
-}
-
-TEST(FixedArrayTest, Fill) {
-  ceres::internal::FixedArray<int, 5 * sizeof(int)> inlined(5);
-  int fill_val = 42;
-  inlined.fill(fill_val);
-  for (int i : inlined) EXPECT_EQ(i, fill_val);
-
-  ceres::internal::FixedArray<int, 0> allocated(5);
-  allocated.fill(fill_val);
-  for (int i : allocated) EXPECT_EQ(i, fill_val);
-
-  // It doesn't do anything, just make sure this compiles.
-  ceres::internal::FixedArray<int> empty(0);
-  empty.fill(fill_val);
-}
-
-// TODO(johnsoncj): Investigate InlinedStorage default initialization in GCC 4.x
-#ifndef __GNUC__
-TEST(FixedArrayTest, DefaultCtorDoesNotValueInit) {
-  using T = char;
-  constexpr auto capacity = 10;
-  using FixedArrType = ceres::internal::FixedArray<T, capacity>;
-  using FixedArrBuffType =
-      typename std::aligned_storage<sizeof(FixedArrType),
-                                    alignof(FixedArrType)>::type;
-  constexpr auto scrubbed_bits = 0x95;
-  constexpr auto length = capacity / 2;
-
-  FixedArrBuffType buff;
-  std::memset(std::addressof(buff), scrubbed_bits, sizeof(FixedArrBuffType));
-
-  FixedArrType* arr =
-      ::new (static_cast<void*>(std::addressof(buff))) FixedArrType(length);
-  EXPECT_THAT(*arr, testing::Each(scrubbed_bits));
-  arr->~FixedArrType();
-}
-#endif  // __GNUC__
-
-// This is a stateful allocator, but the state lives outside of the
-// allocator (in whatever test is using the allocator). This is odd
-// but helps in tests where the allocator is propagated into nested
-// containers - that chain of allocators uses the same state and is
-// thus easier to query for aggregate allocation information.
-template <typename T>
-class CountingAllocator : public std::allocator<T> {
- public:
-  using Alloc = std::allocator<T>;
-  using size_type = typename Alloc::size_type;
-
-  CountingAllocator() = default;
-  explicit CountingAllocator(int64_t* b) : bytes_used_(b) {}
-  CountingAllocator(int64_t* b, int64_t* a)
-      : bytes_used_(b), instance_count_(a) {}
-
-  template <typename U>
-  explicit CountingAllocator(const CountingAllocator<U>& x)
-      : Alloc(x),
-        bytes_used_(x.bytes_used_),
-        instance_count_(x.instance_count_) {}
-
-  T* allocate(size_type n) {
-    assert(bytes_used_ != nullptr);
-    *bytes_used_ += n * sizeof(T);
-    return Alloc::allocate(n);
-  }
-
-  void deallocate(T* p, size_type n) {
-    Alloc::deallocate(p, n);
-    assert(bytes_used_ != nullptr);
-    *bytes_used_ -= n * sizeof(T);
-  }
-
-  int64_t* bytes_used_{nullptr};
-  int64_t* instance_count_{nullptr};
-};
-
-TEST(AllocatorSupportTest, CountInlineAllocations) {
-  constexpr size_t inlined_size = 4;
-  using Alloc = CountingAllocator<int>;
-  using AllocFxdArr = ceres::internal::FixedArray<int, inlined_size, Alloc>;
-
-  int64_t allocated = 0;
-  int64_t active_instances = 0;
-
-  {
-    const int ia[] = {0, 1, 2, 3, 4, 5, 6, 7};
-
-    Alloc alloc(&allocated, &active_instances);
-
-    AllocFxdArr arr(ia, ia + inlined_size, alloc);
-    static_cast<void>(arr);
-  }
-
-  EXPECT_EQ(allocated, 0);
-  EXPECT_EQ(active_instances, 0);
-}
-
-TEST(AllocatorSupportTest, CountOutoflineAllocations) {
-  constexpr size_t inlined_size = 4;
-  using Alloc = CountingAllocator<int>;
-  using AllocFxdArr = ceres::internal::FixedArray<int, inlined_size, Alloc>;
-
-  int64_t allocated = 0;
-  int64_t active_instances = 0;
-
-  {
-    const int ia[] = {0, 1, 2, 3, 4, 5, 6, 7};
-    Alloc alloc(&allocated, &active_instances);
-
-    AllocFxdArr arr(ia, ia + CERES_INTERNAL_ARRAYSIZE(ia), alloc);
-
-    EXPECT_EQ(allocated, arr.size() * sizeof(int));
-    static_cast<void>(arr);
-  }
-
-  EXPECT_EQ(active_instances, 0);
-}
-
-TEST(AllocatorSupportTest, CountCopyInlineAllocations) {
-  constexpr size_t inlined_size = 4;
-  using Alloc = CountingAllocator<int>;
-  using AllocFxdArr = ceres::internal::FixedArray<int, inlined_size, Alloc>;
-
-  int64_t allocated1 = 0;
-  int64_t allocated2 = 0;
-  int64_t active_instances = 0;
-  Alloc alloc(&allocated1, &active_instances);
-  Alloc alloc2(&allocated2, &active_instances);
-
-  {
-    int initial_value = 1;
-
-    AllocFxdArr arr1(inlined_size / 2, initial_value, alloc);
-
-    EXPECT_EQ(allocated1, 0);
-
-    AllocFxdArr arr2(arr1, alloc2);
-
-    EXPECT_EQ(allocated2, 0);
-    static_cast<void>(arr1);
-    static_cast<void>(arr2);
-  }
-
-  EXPECT_EQ(active_instances, 0);
-}
-
-TEST(AllocatorSupportTest, CountCopyOutoflineAllocations) {
-  constexpr size_t inlined_size = 4;
-  using Alloc = CountingAllocator<int>;
-  using AllocFxdArr = ceres::internal::FixedArray<int, inlined_size, Alloc>;
-
-  int64_t allocated1 = 0;
-  int64_t allocated2 = 0;
-  int64_t active_instances = 0;
-  Alloc alloc(&allocated1, &active_instances);
-  Alloc alloc2(&allocated2, &active_instances);
-
-  {
-    int initial_value = 1;
-
-    AllocFxdArr arr1(inlined_size * 2, initial_value, alloc);
-
-    EXPECT_EQ(allocated1, arr1.size() * sizeof(int));
-
-    AllocFxdArr arr2(arr1, alloc2);
-
-    EXPECT_EQ(allocated2, inlined_size * 2 * sizeof(int));
-    static_cast<void>(arr1);
-    static_cast<void>(arr2);
-  }
-
-  EXPECT_EQ(active_instances, 0);
-}
-
-TEST(AllocatorSupportTest, SizeValAllocConstructor) {
-  using testing::AllOf;
-  using testing::Each;
-  using testing::SizeIs;
-
-  constexpr size_t inlined_size = 4;
-  using Alloc = CountingAllocator<int>;
-  using AllocFxdArr = ceres::internal::FixedArray<int, inlined_size, Alloc>;
-
-  {
-    auto len = inlined_size / 2;
-    auto val = 0;
-    int64_t allocated = 0;
-    AllocFxdArr arr(len, val, Alloc(&allocated));
-
-    EXPECT_EQ(allocated, 0);
-    EXPECT_THAT(arr, AllOf(SizeIs(len), Each(0)));
-  }
-
-  {
-    auto len = inlined_size * 2;
-    auto val = 0;
-    int64_t allocated = 0;
-    AllocFxdArr arr(len, val, Alloc(&allocated));
-
-    EXPECT_EQ(allocated, len * sizeof(int));
-    EXPECT_THAT(arr, AllOf(SizeIs(len), Each(0)));
-  }
-}
-
-struct EigenStruct {
-  Eigen::Vector4d data;
-};
-
-static_assert(
-    std::is_same<ceres::internal::FixedArrayDefaultAllocator<double>,
-                 std::allocator<double>>::value,
-    "Double is a trivial type, so std::allocator should be used here.");
-static_assert(
-    std::is_same<ceres::internal::FixedArrayDefaultAllocator<double*>,
-                 std::allocator<double*>>::value,
-    "A pointer is a trivial type, so std::allocator should be used here.");
-static_assert(
-    std::is_same<ceres::internal::FixedArrayDefaultAllocator<Eigen::Matrix4d>,
-                 Eigen::aligned_allocator<Eigen::Matrix4d>>::value,
-    "An Eigen::Matrix4d needs the Eigen::aligned_allocator for proper "
-    "alignment.");
-static_assert(
-    std::is_same<ceres::internal::FixedArrayDefaultAllocator<EigenStruct>,
-                 Eigen::aligned_allocator<EigenStruct>>::value,
-    "A struct containing fixed size Eigen types needs Eigen::aligned_allocator "
-    "for proper alignment.");
-
-}  // namespace
diff --git a/third_party/ceres/internal/ceres/float_suitesparse.cc b/third_party/ceres/internal/ceres/float_suitesparse.cc
deleted file mode 100644
index 6016bad..0000000
--- a/third_party/ceres/internal/ceres/float_suitesparse.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/float_suitesparse.h"
-
-#include <memory>
-
-#if !defined(CERES_NO_SUITESPARSE)
-
-namespace ceres::internal {
-
-std::unique_ptr<SparseCholesky> FloatSuiteSparseCholesky::Create(
-    OrderingType ordering_type) {
-  LOG(FATAL) << "FloatSuiteSparseCholesky is not available.";
-  return {};
-}
-
-}  // namespace ceres::internal
-
-#endif  // !defined(CERES_NO_SUITESPARSE)
diff --git a/third_party/ceres/internal/ceres/float_suitesparse.h b/third_party/ceres/internal/ceres/float_suitesparse.h
deleted file mode 100644
index b9d298e..0000000
--- a/third_party/ceres/internal/ceres/float_suitesparse.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_FLOAT_SUITESPARSE_H_
-#define CERES_INTERNAL_FLOAT_SUITESPARSE_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <memory>
-
-#include "ceres/internal/export.h"
-#include "ceres/sparse_cholesky.h"
-
-#if !defined(CERES_NO_SUITESPARSE)
-
-namespace ceres::internal {
-
-// Fake implementation of a single precision Sparse Cholesky using
-// SuiteSparse.
-class CERES_NO_EXPORT FloatSuiteSparseCholesky : public SparseCholesky {
- public:
-  static std::unique_ptr<SparseCholesky> Create(OrderingType ordering_type);
-};
-
-}  // namespace ceres::internal
-
-#endif  // !defined(CERES_NO_SUITESPARSE)
-
-#endif  // CERES_INTERNAL_FLOAT_SUITESPARSE_H_
diff --git a/third_party/ceres/internal/ceres/function_sample.cc b/third_party/ceres/internal/ceres/function_sample.cc
deleted file mode 100644
index bb4bcff..0000000
--- a/third_party/ceres/internal/ceres/function_sample.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/function_sample.h"
-
-#include "ceres/stringprintf.h"
-
-namespace ceres::internal {
-
-FunctionSample::FunctionSample()
-    : x(0.0),
-      vector_x_is_valid(false),
-      value(0.0),
-      value_is_valid(false),
-      vector_gradient_is_valid(false),
-      gradient(0.0),
-      gradient_is_valid(false) {}
-
-FunctionSample::FunctionSample(const double x, const double value)
-    : x(x),
-      vector_x_is_valid(false),
-      value(value),
-      value_is_valid(true),
-      vector_gradient_is_valid(false),
-      gradient(0.0),
-      gradient_is_valid(false) {}
-
-FunctionSample::FunctionSample(const double x,
-                               const double value,
-                               const double gradient)
-    : x(x),
-      vector_x_is_valid(false),
-      value(value),
-      value_is_valid(true),
-      vector_gradient_is_valid(false),
-      gradient(gradient),
-      gradient_is_valid(true) {}
-
-std::string FunctionSample::ToDebugString() const {
-  return StringPrintf(
-      "[x: %.8e, value: %.8e, gradient: %.8e, "
-      "value_is_valid: %d, gradient_is_valid: %d]",
-      x,
-      value,
-      gradient,
-      value_is_valid,
-      gradient_is_valid);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/function_sample.h b/third_party/ceres/internal/ceres/function_sample.h
deleted file mode 100644
index 0582769..0000000
--- a/third_party/ceres/internal/ceres/function_sample.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_FUNCTION_SAMPLE_H_
-#define CERES_INTERNAL_FUNCTION_SAMPLE_H_
-
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// FunctionSample is used by the line search routines to store and
-// communicate the value and (optionally) the gradient of the function
-// being minimized.
-//
-// Since line search as the name implies happens along a certain
-// line/direction. FunctionSample contains the information in two
-// ways. Information in the ambient space and information along the
-// direction of search.
-struct CERES_NO_EXPORT FunctionSample {
-  FunctionSample();
-  FunctionSample(double x, double value);
-  FunctionSample(double x, double value, double gradient);
-
-  std::string ToDebugString() const;
-
-  // x is the location of the sample along the search direction.
-  double x;
-
-  // Let p be a point and d be the search direction then
-  //
-  // vector_x = p + x * d;
-  Vector vector_x;
-  // True if vector_x has been assigned a valid value.
-  bool vector_x_is_valid;
-
-  // value = f(vector_x)
-  double value;
-  // True of the evaluation was successful and value is a finite
-  // number.
-  bool value_is_valid;
-
-  // vector_gradient = Df(vector_position);
-  //
-  // D is the derivative operator.
-  Vector vector_gradient;
-  // True if the vector gradient was evaluated and the evaluation was
-  // successful (the value is a finite number).
-  bool vector_gradient_is_valid;
-
-  // gradient = d.transpose() * vector_gradient
-  //
-  // where d is the search direction.
-  double gradient;
-  // True if the evaluation of the gradient was successful and the
-  // value is a finite number.
-  bool gradient_is_valid;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_FUNCTION_SAMPLE_H_
diff --git a/third_party/ceres/internal/ceres/generate_bundle_adjustment_tests.py b/third_party/ceres/internal/ceres/generate_bundle_adjustment_tests.py
deleted file mode 100644
index ac83bc3..0000000
--- a/third_party/ceres/internal/ceres/generate_bundle_adjustment_tests.py
+++ /dev/null
@@ -1,305 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: keir@google.com (Keir Mierle)
-#
-# Generate bundle adjustment tests as separate binaries. Since the bundle
-# adjustment tests are fairly processing intensive, serializing them makes the
-# tests take forever to run. Splitting them into separate binaries makes it
-# easier to parallelize in continuous integration systems, and makes local
-# processing on multi-core workstations much faster.
-
-# Product of ORDERINGS, THREAD_CONFIGS, and SOLVER_CONFIGS is the full set of
-# tests to generate.
-ORDERINGS = ["kAutomaticOrdering", "kUserOrdering"]
-SINGLE_THREADED = "1"
-MULTI_THREADED = "4"
-THREAD_CONFIGS = [SINGLE_THREADED, MULTI_THREADED]
-
-DENSE_SOLVER_CONFIGS = [
-    # Linear solver  Dense backend
-    ('DENSE_SCHUR',  'EIGEN'),
-    ('DENSE_SCHUR',  'LAPACK'),
-    ('DENSE_SCHUR',  'CUDA'),
-]
-
-SPARSE_SOLVER_CONFIGS = [
-    # Linear solver            Sparse backend
-    ('SPARSE_NORMAL_CHOLESKY', 'SUITE_SPARSE'),
-    ('SPARSE_NORMAL_CHOLESKY', 'EIGEN_SPARSE'),
-    ('SPARSE_NORMAL_CHOLESKY', 'ACCELERATE_SPARSE'),
-    ('SPARSE_SCHUR',           'SUITE_SPARSE'),
-    ('SPARSE_SCHUR',           'EIGEN_SPARSE'),
-    ('SPARSE_SCHUR',           'ACCELERATE_SPARSE'),
-]
-
-ITERATIVE_SOLVER_CONFIGS = [
-    # Linear solver            Sparse backend      Preconditioner
-    ('ITERATIVE_SCHUR',        'NO_SPARSE',        'JACOBI'),
-    ('ITERATIVE_SCHUR',        'NO_SPARSE',        'SCHUR_JACOBI'),
-    ('ITERATIVE_SCHUR',        'NO_SPARSE',        'SCHUR_POWER_SERIES_EXPANSION'),
-    ('ITERATIVE_SCHUR',        'SUITE_SPARSE',     'CLUSTER_JACOBI'),
-    ('ITERATIVE_SCHUR',        'EIGEN_SPARSE',     'CLUSTER_JACOBI'),
-    ('ITERATIVE_SCHUR',        'ACCELERATE_SPARSE','CLUSTER_JACOBI'),
-    ('ITERATIVE_SCHUR',        'SUITE_SPARSE',     'CLUSTER_TRIDIAGONAL'),
-    ('ITERATIVE_SCHUR',        'EIGEN_SPARSE',     'CLUSTER_TRIDIAGONAL'),
-    ('ITERATIVE_SCHUR',        'ACCELERATE_SPARSE','CLUSTER_TRIDIAGONAL'),
-]
-
-FILENAME_SHORTENING_MAP = dict(
-  DENSE_SCHUR='denseschur',
-  ITERATIVE_SCHUR='iterschur',
-  SPARSE_NORMAL_CHOLESKY='sparsecholesky',
-  SPARSE_SCHUR='sparseschur',
-  EIGEN='eigen',
-  LAPACK='lapack',
-  CUDA='cuda',
-  NO_SPARSE='',  # Omit sparse reference entirely for dense tests.
-  SUITE_SPARSE='suitesparse',
-  EIGEN_SPARSE='eigensparse',
-  ACCELERATE_SPARSE='acceleratesparse',
-  IDENTITY='identity',
-  JACOBI='jacobi',
-  SCHUR_JACOBI='schurjacobi',
-  CLUSTER_JACOBI='clustjacobi',
-  CLUSTER_TRIDIAGONAL='clusttri',
-  SCHUR_POWER_SERIES_EXPANSION='spse',
-  kAutomaticOrdering='auto',
-  kUserOrdering='user',
-)
-
-COPYRIGHT_HEADER = (
-"""// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.""")
-
-BUNDLE_ADJUSTMENT_TEST_TEMPLATE = (COPYRIGHT_HEADER + """
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-%(preprocessor_conditions_begin)s
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       %(test_class_name)s) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = %(num_threads)s;
-  options->linear_solver_type = %(linear_solver)s;
-  options->dense_linear_algebra_library_type = %(dense_backend)s;
-  options->sparse_linear_algebra_library_type = %(sparse_backend)s;
-  options->preconditioner_type = %(preconditioner)s;
-  if (%(ordering)s) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-%(preprocessor_conditions_end)s""")
-
-def camelcasify(token):
-  """Convert capitalized underscore tokens to camel case"""
-  return ''.join([x.lower().capitalize() for x in token.split('_')])
-
-
-def generate_bundle_test(linear_solver,
-                         dense_backend,
-                         sparse_backend,
-                         preconditioner,
-                         ordering,
-                         thread_config):
-  """Generate a bundle adjustment test executable configured appropriately"""
-
-  # Preconditioner only makes sense for iterative schur; drop it otherwise.
-  preconditioner_tag = preconditioner
-  if linear_solver != 'ITERATIVE_SCHUR':
-    preconditioner_tag = ''
-
-  dense_backend_tag = dense_backend
-  if linear_solver != 'DENSE_SCHUR':
-    dense_backend_tag=''
-
-  # Omit references to the sparse backend when one is not in use.
-  sparse_backend_tag = sparse_backend
-  if sparse_backend == 'NO_SPARSE':
-    sparse_backend_tag = ''
-
-  # Use a double underscore; otherwise the names are harder to understand.
-  test_class_name = '_'.join(filter(lambda x: x, [
-      camelcasify(linear_solver),
-      camelcasify(dense_backend_tag),
-      camelcasify(sparse_backend_tag),
-      camelcasify(preconditioner_tag),
-      ordering[1:],  # Strip 'k'
-      'Threads' if thread_config == MULTI_THREADED else '']))
-
-  # Initial template parameters (augmented more below).
-  template_parameters = dict(
-          linear_solver=linear_solver,
-          dense_backend=dense_backend,
-          sparse_backend=sparse_backend,
-          preconditioner=preconditioner,
-          ordering=ordering,
-          num_threads=thread_config,
-          test_class_name=test_class_name)
-
-  # Accumulate appropriate #ifdef/#ifndefs for the solver's sparse backend.
-  preprocessor_conditions_begin = []
-  preprocessor_conditions_end = []
-  if sparse_backend == 'SUITE_SPARSE':
-    preprocessor_conditions_begin.append('#ifndef CERES_NO_SUITESPARSE')
-    preprocessor_conditions_end.insert(0, '#endif  // CERES_NO_SUITESPARSE')
-  elif sparse_backend == 'ACCELERATE_SPARSE':
-    preprocessor_conditions_begin.append('#ifndef CERES_NO_ACCELERATE_SPARSE')
-    preprocessor_conditions_end.insert(0, '#endif  // CERES_NO_ACCELERATE_SPARSE')
-  elif sparse_backend == 'EIGEN_SPARSE':
-    preprocessor_conditions_begin.append('#ifdef CERES_USE_EIGEN_SPARSE')
-    preprocessor_conditions_end.insert(0, '#endif  // CERES_USE_EIGEN_SPARSE')
-
-  if dense_backend == "LAPACK":
-    preprocessor_conditions_begin.append('#ifndef CERES_NO_LAPACK')
-    preprocessor_conditions_end.insert(0, '#endif  // CERES_NO_LAPACK')
-  elif dense_backend == "CUDA":
-    preprocessor_conditions_begin.append('#ifndef CERES_NO_CUDA')
-    preprocessor_conditions_end.insert(0, '#endif  // CERES_NO_CUDA')
-
-  # If there are #ifdefs, put newlines around them.
-  if preprocessor_conditions_begin:
-    preprocessor_conditions_begin.insert(0, '')
-    preprocessor_conditions_begin.append('')
-    preprocessor_conditions_end.insert(0, '')
-    preprocessor_conditions_end.append('')
-
-  # Put #ifdef/#ifndef stacks into the template parameters.
-  template_parameters['preprocessor_conditions_begin'] = '\n'.join(
-      preprocessor_conditions_begin)
-  template_parameters['preprocessor_conditions_end'] = '\n'.join(
-      preprocessor_conditions_end)
-
-  # Substitute variables into the test template, and write the result to a file.
-  filename_tag = '_'.join(FILENAME_SHORTENING_MAP.get(x) for x in [
-      linear_solver,
-      dense_backend_tag,
-      sparse_backend_tag,
-      preconditioner_tag,
-      ordering]
-      if FILENAME_SHORTENING_MAP.get(x))
-
-  if (thread_config == MULTI_THREADED):
-    filename_tag += '_threads'
-
-  filename = ('generated_bundle_adjustment_tests/ba_%s_test.cc' %
-                filename_tag.lower())
-  with open(filename, 'w') as fd:
-    fd.write(BUNDLE_ADJUSTMENT_TEST_TEMPLATE % template_parameters)
-
-  # All done.
-  print('Generated', filename)
-
-  return filename
-
-
-if __name__ == '__main__':
-  # Iterate over all the possible configurations and generate the tests.
-  generated_files = []
-
-  for ordering in ORDERINGS:
-    for thread_config in THREAD_CONFIGS:
-      for linear_solver, dense_backend in DENSE_SOLVER_CONFIGS:
-        generated_files.append(
-            generate_bundle_test(linear_solver,
-                                 dense_backend,
-                                 'NO_SPARSE',
-                                 'IDENTITY',
-                                 ordering,
-                                 thread_config))
-
-      for linear_solver, sparse_backend, in SPARSE_SOLVER_CONFIGS:
-        generated_files.append(
-            generate_bundle_test(linear_solver,
-                                 'EIGEN',
-                                 sparse_backend,
-                                 'IDENTITY',
-                                 ordering,
-                                 thread_config))
-
-      for linear_solver, sparse_backend, preconditioner, in ITERATIVE_SOLVER_CONFIGS:
-        generated_files.append(
-            generate_bundle_test(linear_solver,
-                                 'EIGEN',
-                                 sparse_backend,
-                                 preconditioner,
-                                 ordering,
-                                 thread_config))
-
-
-  # Generate the CMakeLists.txt as well.
-  with open('generated_bundle_adjustment_tests/CMakeLists.txt', 'w') as fd:
-    fd.write(COPYRIGHT_HEADER.replace('//', '#').replace('http:#', 'http://'))
-    fd.write('\n')
-    fd.write('\n')
-    for generated_file in generated_files:
-      fd.write('ceres_test(%s)\n' %
-               generated_file.split('/')[1].replace('_test.cc', ''))
diff --git a/third_party/ceres/internal/ceres/generate_template_specializations.py b/third_party/ceres/internal/ceres/generate_template_specializations.py
deleted file mode 100644
index 12cf0b0..0000000
--- a/third_party/ceres/internal/ceres/generate_template_specializations.py
+++ /dev/null
@@ -1,246 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: sameeragarwal@google.com (Sameer Agarwal)
-#
-# Script for explicitly generating template specialization of the
-# SchurEliminator class. It is a rather large class
-# and the number of explicit instantiations is also large. Explicitly
-# generating these instantiations in separate .cc files breaks the
-# compilation into separate compilation unit rather than one large cc
-# file which takes 2+GB of RAM to compile.
-#
-# This script creates three sets of files.
-#
-# 1. schur_eliminator_x_x_x.cc and partitioned_matrix_view_x_x_x.cc
-# where, the x indicates the template parameters and
-#
-# 2. schur_eliminator.cc & partitioned_matrix_view.cc
-#
-# that contains a factory function for instantiating these classes
-# based on runtime parameters.
-#
-# 3. schur_templates.cc
-#
-# that contains a function which can be queried to determine what
-# template specializations are available.
-#
-# The following list of tuples, specializations indicates the set of
-# specializations that is generated.
-SPECIALIZATIONS = [(2, 2, 2),
-                   (2, 2, 3),
-                   (2, 2, 4),
-                   (2, 2, "Eigen::Dynamic"),
-                   (2, 3, 3),
-                   (2, 3, 4),
-                   (2, 3, 6),
-                   (2, 3, 9),
-                   (2, 3, "Eigen::Dynamic"),
-                   (2, 4, 3),
-                   (2, 4, 4),
-                   (2, 4, 6),
-                   (2, 4, 8),
-                   (2, 4, 9),
-                   (2, 4, "Eigen::Dynamic"),
-                   (2, "Eigen::Dynamic", "Eigen::Dynamic"),
-                   (3, 3, 3),
-                   (4, 4, 2),
-                   (4, 4, 3),
-                   (4, 4, 4),
-                   (4, 4, "Eigen::Dynamic")]
-
-import schur_eliminator_template
-import partitioned_matrix_view_template
-import os
-import glob
-
-def SuffixForSize(size):
-  if size == "Eigen::Dynamic":
-    return "d"
-  return str(size)
-
-def SpecializationFilename(prefix, row_block_size, e_block_size, f_block_size):
-  return "_".join([prefix] + list(map(SuffixForSize, (row_block_size,
-                                                 e_block_size,
-                                                 f_block_size))))
-
-def GenerateFactoryConditional(row_block_size, e_block_size, f_block_size):
-  conditionals = []
-  if (row_block_size != "Eigen::Dynamic"):
-    conditionals.append("(options.row_block_size == %s)" % row_block_size)
-  if (e_block_size != "Eigen::Dynamic"):
-    conditionals.append("(options.e_block_size == %s)" % e_block_size)
-  if (f_block_size != "Eigen::Dynamic"):
-    conditionals.append("(options.f_block_size == %s)" % f_block_size)
-  if (len(conditionals) == 0):
-    return "%s"
-
-  if (len(conditionals) == 1):
-    return "  if " + conditionals[0] + " {\n  %s\n  }\n"
-
-  return "  if (" + " &&\n     ".join(conditionals) + ") {\n  %s\n  }\n"
-
-def Specialize(name, data):
-  """
-  Generate specialization code and the conditionals to instantiate it.
-  """
-
-  # Specialization files
-  for row_block_size, e_block_size, f_block_size in SPECIALIZATIONS:
-      output = SpecializationFilename("generated/" + name,
-                                      row_block_size,
-                                      e_block_size,
-                                      f_block_size) + ".cc"
-
-      with open(output, "w") as f:
-        f.write(data["HEADER"])
-        f.write(data["SPECIALIZATION_FILE"] %
-                  (row_block_size, e_block_size, f_block_size))
-
-  # Generate the _d_d_d specialization.
-  output = SpecializationFilename("generated/" + name,
-                                   "Eigen::Dynamic",
-                                   "Eigen::Dynamic",
-                                   "Eigen::Dynamic") + ".cc"
-  with open(output, "w") as f:
-    f.write(data["HEADER"])
-    f.write(data["DYNAMIC_FILE"] %
-              ("Eigen::Dynamic", "Eigen::Dynamic", "Eigen::Dynamic"))
-
-  # Factory
-  with open(name + ".cc", "w") as f:
-    f.write(data["HEADER"])
-    f.write(data["FACTORY_FILE_HEADER"])
-    for row_block_size, e_block_size, f_block_size in SPECIALIZATIONS:
-        factory_conditional = GenerateFactoryConditional(
-            row_block_size, e_block_size, f_block_size)
-        factory = data["FACTORY"] % (row_block_size, e_block_size, f_block_size)
-        f.write(factory_conditional % factory);
-    f.write(data["FACTORY_FOOTER"])
-
-QUERY_HEADER = """// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// What template specializations are available.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-"""
-
-QUERY_FILE_HEADER = """
-#include "ceres/internal/eigen.h"
-#include "ceres/schur_templates.h"
-
-namespace ceres {
-namespace internal {
-
-void GetBestSchurTemplateSpecialization(int* row_block_size,
-                                        int* e_block_size,
-                                        int* f_block_size) {
-  LinearSolver::Options options;
-  options.row_block_size = *row_block_size;
-  options.e_block_size = *e_block_size;
-  options.f_block_size = *f_block_size;
-  *row_block_size = Eigen::Dynamic;
-  *e_block_size = Eigen::Dynamic;
-  *f_block_size = Eigen::Dynamic;
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-"""
-
-QUERY_FOOTER = """
-#endif
-  return;
-}
-
-}  // namespace internal
-}  // namespace ceres
-"""
-
-QUERY_ACTION = """  *row_block_size = %s;
-    *e_block_size = %s;
-    *f_block_size = %s;
-    return;"""
-
-def GenerateQueryFile():
-  """
-  Generate file that allows querying for available template specializations.
-  """
-
-  with open("schur_templates.cc", "w") as f:
-    f.write(QUERY_HEADER)
-    f.write(QUERY_FILE_HEADER)
-    for row_block_size, e_block_size, f_block_size in SPECIALIZATIONS:
-      factory_conditional = GenerateFactoryConditional(
-        row_block_size, e_block_size, f_block_size)
-      action = QUERY_ACTION % (row_block_size, e_block_size, f_block_size)
-      f.write(factory_conditional % action)
-    f.write(QUERY_FOOTER)
-
-
-if __name__ == "__main__":
-  for f in glob.glob("generated/*"):
-    os.remove(f)
-
-  Specialize("schur_eliminator",
-               schur_eliminator_template.__dict__)
-  Specialize("partitioned_matrix_view",
-               partitioned_matrix_view_template.__dict__)
-  GenerateQueryFile()
diff --git a/third_party/ceres/internal/ceres/generated/.clang-format b/third_party/ceres/internal/ceres/generated/.clang-format
deleted file mode 100644
index 9d15924..0000000
--- a/third_party/ceres/internal/ceres/generated/.clang-format
+++ /dev/null
@@ -1,2 +0,0 @@
-DisableFormat: true
-SortIncludes: false
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_2.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_2.cc
deleted file mode 100644
index c37dbf0..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_2.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 2, 2>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_3.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_3.cc
deleted file mode 100644
index d856df6..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 2, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_4.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_4.cc
deleted file mode 100644
index a62a436..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 2, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_d.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_d.cc
deleted file mode 100644
index f8b7089..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 2, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_3.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_3.cc
deleted file mode 100644
index cd5bb91..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 3, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_4.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_4.cc
deleted file mode 100644
index 51af0f7..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 3, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_6.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_6.cc
deleted file mode 100644
index 39b920a..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_6.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 3, 6>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_9.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_9.cc
deleted file mode 100644
index 3f211b9..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_9.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 3, 9>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_d.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_d.cc
deleted file mode 100644
index a33d2e3..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 3, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_3.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_3.cc
deleted file mode 100644
index 14b91b3..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 4, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_4.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_4.cc
deleted file mode 100644
index be1c234..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 4, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_6.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_6.cc
deleted file mode 100644
index b4ad615..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_6.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 4, 6>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_8.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_8.cc
deleted file mode 100644
index b505f56..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_8.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 4, 8>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_9.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_9.cc
deleted file mode 100644
index f2f1469..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_9.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 4, 9>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_d.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_d.cc
deleted file mode 100644
index a0e250c..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, 4, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_d_d.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_d_d.cc
deleted file mode 100644
index 6878963..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_d_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<2, Eigen::Dynamic, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_3_3_3.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_3_3_3.cc
deleted file mode 100644
index 2e6b81a..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_3_3_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<3, 3, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_2.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_2.cc
deleted file mode 100644
index 8b09f75..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_2.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<4, 4, 2>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_3.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_3.cc
deleted file mode 100644
index e857daa..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<4, 4, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_4.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_4.cc
deleted file mode 100644
index f51a642..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<4, 4, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_d.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_d.cc
deleted file mode 100644
index 5e27e2e..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<4, 4, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_d_d_d.cc b/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_d_d_d.cc
deleted file mode 100644
index 6e788ad..0000000
--- a/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_d_d_d.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<Eigen::Dynamic,
-                                     Eigen::Dynamic,
-                                     Eigen::Dynamic>;
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_2.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_2.cc
deleted file mode 100644
index de29abe..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_2.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 2, 2>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_3.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_3.cc
deleted file mode 100644
index 38e2402..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 2, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_4.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_4.cc
deleted file mode 100644
index edf48ee..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 2, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_d.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_d.cc
deleted file mode 100644
index 48a8301..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 2, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_3.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_3.cc
deleted file mode 100644
index 49a450d..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 3, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_4.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_4.cc
deleted file mode 100644
index 730d2b1..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 3, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_6.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_6.cc
deleted file mode 100644
index 84b83af..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_6.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 3, 6>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_9.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_9.cc
deleted file mode 100644
index bfb903f..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_9.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 3, 9>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_d.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_d.cc
deleted file mode 100644
index 041b7ac..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 3, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_3.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_3.cc
deleted file mode 100644
index c7827d1..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 4, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_4.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_4.cc
deleted file mode 100644
index 9429d4c..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 4, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_6.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_6.cc
deleted file mode 100644
index ba14b08..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_6.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 4, 6>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_8.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_8.cc
deleted file mode 100644
index 9210d9d..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_8.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 4, 8>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_9.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_9.cc
deleted file mode 100644
index ea45d0f..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_9.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 4, 9>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_d.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_d.cc
deleted file mode 100644
index 8ba7c8c..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, 4, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_d_d.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_2_d_d.cc
deleted file mode 100644
index 1f40787..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_2_d_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<2, Eigen::Dynamic, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_3_3_3.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_3_3_3.cc
deleted file mode 100644
index 909fb79..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_3_3_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<3, 3, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_2.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_2.cc
deleted file mode 100644
index 5ca6fca..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_2.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<4, 4, 2>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_3.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_3.cc
deleted file mode 100644
index 9d0862a..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_3.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<4, 4, 3>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_4.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_4.cc
deleted file mode 100644
index b04ab66..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_4.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<4, 4, 4>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_d.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_d.cc
deleted file mode 100644
index 8e75543..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_d.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<4, 4, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
diff --git a/third_party/ceres/internal/ceres/generated/schur_eliminator_d_d_d.cc b/third_party/ceres/internal/ceres/generated/schur_eliminator_d_d_d.cc
deleted file mode 100644
index 49c40e8..0000000
--- a/third_party/ceres/internal/ceres/generated/schur_eliminator_d_d_d.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic>;
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/.clang-format b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/.clang-format
deleted file mode 100644
index 9d15924..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/.clang-format
+++ /dev/null
@@ -1,2 +0,0 @@
-DisableFormat: true
-SortIncludes: false
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/CMakeLists.txt b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/CMakeLists.txt
deleted file mode 100644
index 5f4f65e..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/CMakeLists.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# ========================================
-# THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-# THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-# THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-# THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-# ========================================
-#
-# This file is generated using generate_bundle_adjustment_tests.py.
-
-ceres_test(ba_denseschur_eigen_auto)
-ceres_test(ba_denseschur_lapack_auto)
-ceres_test(ba_denseschur_cuda_auto)
-ceres_test(ba_sparsecholesky_suitesparse_auto)
-ceres_test(ba_sparsecholesky_eigensparse_auto)
-ceres_test(ba_sparsecholesky_acceleratesparse_auto)
-ceres_test(ba_sparseschur_suitesparse_auto)
-ceres_test(ba_sparseschur_eigensparse_auto)
-ceres_test(ba_sparseschur_acceleratesparse_auto)
-ceres_test(ba_iterschur_jacobi_auto)
-ceres_test(ba_iterschur_schurjacobi_auto)
-ceres_test(ba_iterschur_spse_auto)
-ceres_test(ba_iterschur_suitesparse_clustjacobi_auto)
-ceres_test(ba_iterschur_eigensparse_clustjacobi_auto)
-ceres_test(ba_iterschur_acceleratesparse_clustjacobi_auto)
-ceres_test(ba_iterschur_suitesparse_clusttri_auto)
-ceres_test(ba_iterschur_eigensparse_clusttri_auto)
-ceres_test(ba_iterschur_acceleratesparse_clusttri_auto)
-ceres_test(ba_denseschur_eigen_auto_threads)
-ceres_test(ba_denseschur_lapack_auto_threads)
-ceres_test(ba_denseschur_cuda_auto_threads)
-ceres_test(ba_sparsecholesky_suitesparse_auto_threads)
-ceres_test(ba_sparsecholesky_eigensparse_auto_threads)
-ceres_test(ba_sparsecholesky_acceleratesparse_auto_threads)
-ceres_test(ba_sparseschur_suitesparse_auto_threads)
-ceres_test(ba_sparseschur_eigensparse_auto_threads)
-ceres_test(ba_sparseschur_acceleratesparse_auto_threads)
-ceres_test(ba_iterschur_jacobi_auto_threads)
-ceres_test(ba_iterschur_schurjacobi_auto_threads)
-ceres_test(ba_iterschur_spse_auto_threads)
-ceres_test(ba_iterschur_suitesparse_clustjacobi_auto_threads)
-ceres_test(ba_iterschur_eigensparse_clustjacobi_auto_threads)
-ceres_test(ba_iterschur_acceleratesparse_clustjacobi_auto_threads)
-ceres_test(ba_iterschur_suitesparse_clusttri_auto_threads)
-ceres_test(ba_iterschur_eigensparse_clusttri_auto_threads)
-ceres_test(ba_iterschur_acceleratesparse_clusttri_auto_threads)
-ceres_test(ba_denseschur_eigen_user)
-ceres_test(ba_denseschur_lapack_user)
-ceres_test(ba_denseschur_cuda_user)
-ceres_test(ba_sparsecholesky_suitesparse_user)
-ceres_test(ba_sparsecholesky_eigensparse_user)
-ceres_test(ba_sparsecholesky_acceleratesparse_user)
-ceres_test(ba_sparseschur_suitesparse_user)
-ceres_test(ba_sparseschur_eigensparse_user)
-ceres_test(ba_sparseschur_acceleratesparse_user)
-ceres_test(ba_iterschur_jacobi_user)
-ceres_test(ba_iterschur_schurjacobi_user)
-ceres_test(ba_iterschur_spse_user)
-ceres_test(ba_iterschur_suitesparse_clustjacobi_user)
-ceres_test(ba_iterschur_eigensparse_clustjacobi_user)
-ceres_test(ba_iterschur_acceleratesparse_clustjacobi_user)
-ceres_test(ba_iterschur_suitesparse_clusttri_user)
-ceres_test(ba_iterschur_eigensparse_clusttri_user)
-ceres_test(ba_iterschur_acceleratesparse_clusttri_user)
-ceres_test(ba_denseschur_eigen_user_threads)
-ceres_test(ba_denseschur_lapack_user_threads)
-ceres_test(ba_denseschur_cuda_user_threads)
-ceres_test(ba_sparsecholesky_suitesparse_user_threads)
-ceres_test(ba_sparsecholesky_eigensparse_user_threads)
-ceres_test(ba_sparsecholesky_acceleratesparse_user_threads)
-ceres_test(ba_sparseschur_suitesparse_user_threads)
-ceres_test(ba_sparseschur_eigensparse_user_threads)
-ceres_test(ba_sparseschur_acceleratesparse_user_threads)
-ceres_test(ba_iterschur_jacobi_user_threads)
-ceres_test(ba_iterschur_schurjacobi_user_threads)
-ceres_test(ba_iterschur_spse_user_threads)
-ceres_test(ba_iterschur_suitesparse_clustjacobi_user_threads)
-ceres_test(ba_iterschur_eigensparse_clustjacobi_user_threads)
-ceres_test(ba_iterschur_acceleratesparse_clustjacobi_user_threads)
-ceres_test(ba_iterschur_suitesparse_clusttri_user_threads)
-ceres_test(ba_iterschur_eigensparse_clusttri_user_threads)
-ceres_test(ba_iterschur_acceleratesparse_clusttri_user_threads)
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_auto_test.cc
deleted file mode 100644
index e48f646..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Cuda_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = CUDA;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_auto_threads_test.cc
deleted file mode 100644
index 336066e..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Cuda_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = CUDA;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_user_test.cc
deleted file mode 100644
index 86df64d..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Cuda_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = CUDA;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_user_threads_test.cc
deleted file mode 100644
index 5e752e4..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_cuda_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_CUDA
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Cuda_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = CUDA;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_CUDA
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_auto_test.cc
deleted file mode 100644
index faca44e..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_auto_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Eigen_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_auto_threads_test.cc
deleted file mode 100644
index c4db182..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_auto_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Eigen_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_user_test.cc
deleted file mode 100644
index 7fe05d1..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_user_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Eigen_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_user_threads_test.cc
deleted file mode 100644
index 7c34e20..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_eigen_user_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Eigen_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_auto_test.cc
deleted file mode 100644
index 79ec5ce..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_LAPACK
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Lapack_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = LAPACK;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_LAPACK
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_auto_threads_test.cc
deleted file mode 100644
index ee74420..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_LAPACK
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Lapack_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = LAPACK;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_LAPACK
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_user_test.cc
deleted file mode 100644
index 205de87..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_LAPACK
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Lapack_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = LAPACK;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_LAPACK
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_user_threads_test.cc
deleted file mode 100644
index 03a0a73..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_lapack_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_LAPACK
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       DenseSchur_Lapack_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = DENSE_SCHUR;
-  options->dense_linear_algebra_library_type = LAPACK;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_LAPACK
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_auto_test.cc
deleted file mode 100644
index 8ab6a9b..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterJacobi_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_auto_threads_test.cc
deleted file mode 100644
index cf6be8d..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterJacobi_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_user_test.cc
deleted file mode 100644
index b6ca30f..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterJacobi_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_user_threads_test.cc
deleted file mode 100644
index 2ef6aa1..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clustjacobi_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterJacobi_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_auto_test.cc
deleted file mode 100644
index ea24955..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterTridiagonal_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_auto_threads_test.cc
deleted file mode 100644
index 217edc3..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterTridiagonal_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_user_test.cc
deleted file mode 100644
index 4b66d17..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterTridiagonal_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_user_threads_test.cc
deleted file mode 100644
index 3e84734..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_acceleratesparse_clusttri_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_AccelerateSparse_ClusterTridiagonal_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_auto_test.cc
deleted file mode 100644
index c1ceb9f..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterJacobi_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_auto_threads_test.cc
deleted file mode 100644
index 35760db..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterJacobi_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_user_test.cc
deleted file mode 100644
index 6b35e6b..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterJacobi_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_user_threads_test.cc
deleted file mode 100644
index 9b36562..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clustjacobi_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterJacobi_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_auto_test.cc
deleted file mode 100644
index a62c8ba..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterTridiagonal_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_auto_threads_test.cc
deleted file mode 100644
index f306f81..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterTridiagonal_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_user_test.cc
deleted file mode 100644
index 62d60b1..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterTridiagonal_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_user_threads_test.cc
deleted file mode 100644
index 223a76a..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_eigensparse_clusttri_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_EigenSparse_ClusterTridiagonal_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
deleted file mode 100644
index 8e9afa1..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_Jacobi_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
deleted file mode 100644
index 433bf76..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_Jacobi_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
deleted file mode 100644
index 8e740da..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_Jacobi_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
deleted file mode 100644
index 705bfe2..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_Jacobi_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
deleted file mode 100644
index 6b46f3d..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurJacobi_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
deleted file mode 100644
index a74efa8..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurJacobi_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
deleted file mode 100644
index d0fa244..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurJacobi_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
deleted file mode 100644
index e5418c9..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurJacobi_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_auto_test.cc
deleted file mode 100644
index 1287a61..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_auto_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurPowerSeriesExpansion_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_POWER_SERIES_EXPANSION;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_auto_threads_test.cc
deleted file mode 100644
index 739d7bf..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_auto_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurPowerSeriesExpansion_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_POWER_SERIES_EXPANSION;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_user_test.cc
deleted file mode 100644
index 38b8d36..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_user_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurPowerSeriesExpansion_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_POWER_SERIES_EXPANSION;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_user_threads_test.cc
deleted file mode 100644
index 2a715cc..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_spse_user_threads_test.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SchurPowerSeriesExpansion_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = SCHUR_POWER_SERIES_EXPANSION;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
deleted file mode 100644
index d25a7e7..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
deleted file mode 100644
index 38d65b1..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
deleted file mode 100644
index 40b7451..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
deleted file mode 100644
index d12b524..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_JACOBI;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
deleted file mode 100644
index 7206132..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
deleted file mode 100644
index 61efa20..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
deleted file mode 100644
index b750cbb..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
deleted file mode 100644
index f704e32..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = CLUSTER_TRIDIAGONAL;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_auto_test.cc
deleted file mode 100644
index 05caf3c..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_AccelerateSparse_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_auto_threads_test.cc
deleted file mode 100644
index bfd1d4b..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_AccelerateSparse_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_user_test.cc
deleted file mode 100644
index 0017874..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_AccelerateSparse_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_user_threads_test.cc
deleted file mode 100644
index 7bb7f0b..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_acceleratesparse_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_AccelerateSparse_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
deleted file mode 100644
index a15553c..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_EigenSparse_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
deleted file mode 100644
index 2134295..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_EigenSparse_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
deleted file mode 100644
index de00ccb..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_EigenSparse_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
deleted file mode 100644
index f4ad5e0..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_EigenSparse_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
deleted file mode 100644
index f72ca55..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_SuiteSparse_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
deleted file mode 100644
index d301e5e..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_SuiteSparse_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
deleted file mode 100644
index db22d6c..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_SuiteSparse_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
deleted file mode 100644
index 8b97820..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseNormalCholesky_SuiteSparse_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_auto_test.cc
deleted file mode 100644
index d4b8dd2..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_AccelerateSparse_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_auto_threads_test.cc
deleted file mode 100644
index 8f7aacf..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_AccelerateSparse_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_user_test.cc
deleted file mode 100644
index 257cf0d..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_AccelerateSparse_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_user_threads_test.cc
deleted file mode 100644
index dea1a28..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_acceleratesparse_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_AccelerateSparse_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_ACCELERATE_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
deleted file mode 100644
index bcc2cc4..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_EigenSparse_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
deleted file mode 100644
index e70f9ee..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_EigenSparse_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
deleted file mode 100644
index cb408af..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_EigenSparse_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
deleted file mode 100644
index 8902146..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_EigenSparse_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_USE_EIGEN_SPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
deleted file mode 100644
index aaa38c0..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_SuiteSparse_AutomaticOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
deleted file mode 100644
index a3f4ad0..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_SuiteSparse_AutomaticOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kAutomaticOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
deleted file mode 100644
index 53cad2d..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_SuiteSparse_UserOrdering) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 1;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc b/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
deleted file mode 100644
index d23a277..0000000
--- a/third_party/ceres/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// ========================================
-//
-// This file is generated using generate_bundle_adjustment_tests.py.
-
-#include "ceres/bundle_adjustment_test_util.h"
-#include "ceres/internal/config.h"
-#include "gtest/gtest.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-namespace ceres::internal {
-
-TEST_F(BundleAdjustmentTest,
-       SparseSchur_SuiteSparse_UserOrdering_Threads) {  // NOLINT
-  BundleAdjustmentProblem bundle_adjustment_problem;
-  Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
-  options->eta = 0.01;
-  options->num_threads = 4;
-  options->linear_solver_type = SPARSE_SCHUR;
-  options->dense_linear_algebra_library_type = EIGEN;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options->preconditioner_type = IDENTITY;
-  if (kUserOrdering) {
-    options->linear_solver_ordering = nullptr;
-  }
-  Problem* problem = bundle_adjustment_problem.mutable_problem();
-  RunSolverForConfigAndExpectResidualsMatch(*options, problem);
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/gmock/.clang-format b/third_party/ceres/internal/ceres/gmock/.clang-format
deleted file mode 100644
index 9d15924..0000000
--- a/third_party/ceres/internal/ceres/gmock/.clang-format
+++ /dev/null
@@ -1,2 +0,0 @@
-DisableFormat: true
-SortIncludes: false
diff --git a/third_party/ceres/internal/ceres/gmock/gmock.h b/third_party/ceres/internal/ceres/gmock/gmock.h
deleted file mode 100644
index 9bb49d0..0000000
--- a/third_party/ceres/internal/ceres/gmock/gmock.h
+++ /dev/null
@@ -1,11647 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This is the main header file a user should include.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_H_
-
-// This file implements the following syntax:
-//
-//   ON_CALL(mock_object, Method(...))
-//     .With(...) ?
-//     .WillByDefault(...);
-//
-// where With() is optional and WillByDefault() must appear exactly
-// once.
-//
-//   EXPECT_CALL(mock_object, Method(...))
-//     .With(...) ?
-//     .Times(...) ?
-//     .InSequence(...) *
-//     .WillOnce(...) *
-//     .WillRepeatedly(...) ?
-//     .RetiresOnSaturation() ? ;
-//
-// where all clauses are optional and WillOnce() can be repeated.
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// The ACTION* family of macros can be used in a namespace scope to
-// define custom actions easily.  The syntax:
-//
-//   ACTION(name) { statements; }
-//
-// will define an action with the given name that executes the
-// statements.  The value returned by the statements will be used as
-// the return value of the action.  Inside the statements, you can
-// refer to the K-th (0-based) argument of the mock function by
-// 'argK', and refer to its type by 'argK_type'.  For example:
-//
-//   ACTION(IncrementArg1) {
-//     arg1_type temp = arg1;
-//     return ++(*temp);
-//   }
-//
-// allows you to write
-//
-//   ...WillOnce(IncrementArg1());
-//
-// You can also refer to the entire argument tuple and its type by
-// 'args' and 'args_type', and refer to the mock function type and its
-// return type by 'function_type' and 'return_type'.
-//
-// Note that you don't need to specify the types of the mock function
-// arguments.  However rest assured that your code is still type-safe:
-// you'll get a compiler error if *arg1 doesn't support the ++
-// operator, or if the type of ++(*arg1) isn't compatible with the
-// mock function's return type, for example.
-//
-// Sometimes you'll want to parameterize the action.   For that you can use
-// another macro:
-//
-//   ACTION_P(name, param_name) { statements; }
-//
-// For example:
-//
-//   ACTION_P(Add, n) { return arg0 + n; }
-//
-// will allow you to write:
-//
-//   ...WillOnce(Add(5));
-//
-// Note that you don't need to provide the type of the parameter
-// either.  If you need to reference the type of a parameter named
-// 'foo', you can write 'foo_type'.  For example, in the body of
-// ACTION_P(Add, n) above, you can write 'n_type' to refer to the type
-// of 'n'.
-//
-// We also provide ACTION_P2, ACTION_P3, ..., up to ACTION_P10 to support
-// multi-parameter actions.
-//
-// For the purpose of typing, you can view
-//
-//   ACTION_Pk(Foo, p1, ..., pk) { ... }
-//
-// as shorthand for
-//
-//   template <typename p1_type, ..., typename pk_type>
-//   FooActionPk<p1_type, ..., pk_type> Foo(p1_type p1, ..., pk_type pk) { ... }
-//
-// In particular, you can provide the template type arguments
-// explicitly when invoking Foo(), as in Foo<long, bool>(5, false);
-// although usually you can rely on the compiler to infer the types
-// for you automatically.  You can assign the result of expression
-// Foo(p1, ..., pk) to a variable of type FooActionPk<p1_type, ...,
-// pk_type>.  This can be useful when composing actions.
-//
-// You can also overload actions with different numbers of parameters:
-//
-//   ACTION_P(Plus, a) { ... }
-//   ACTION_P2(Plus, a, b) { ... }
-//
-// While it's tempting to always use the ACTION* macros when defining
-// a new action, you should also consider implementing ActionInterface
-// or using MakePolymorphicAction() instead, especially if you need to
-// use the action a lot.  While these approaches require more work,
-// they give you more control on the types of the mock function
-// arguments and the action parameters, which in general leads to
-// better compiler error messages that pay off in the long run.  They
-// also allow overloading actions based on parameter types (as opposed
-// to just based on the number of parameters).
-//
-// CAVEAT:
-//
-// ACTION*() can only be used in a namespace scope as templates cannot be
-// declared inside of a local class.
-// Users can, however, define any local functors (e.g. a lambda) that
-// can be used as actions.
-//
-// MORE INFORMATION:
-//
-// To learn more about using these macros, please search for 'ACTION' on
-// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
-
-#ifndef _WIN32_WCE
-# include <errno.h>
-#endif
-
-#include <algorithm>
-#include <functional>
-#include <memory>
-#include <string>
-#include <tuple>
-#include <type_traits>
-#include <utility>
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file defines some utilities useful for implementing Google
-// Mock.  They are subject to change without notice, so please DO NOT
-// USE THEM IN USER CODE.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
-
-#include <stdio.h>
-#include <ostream>  // NOLINT
-#include <string>
-#include <type_traits>
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Low-level types and utilities for porting Google Mock to various
-// platforms.  All macros ending with _ and symbols defined in an
-// internal namespace are subject to change without notice.  Code
-// outside Google Mock MUST NOT USE THEM DIRECTLY.  Macros that don't
-// end with _ are part of Google Mock's public API and can be used by
-// code outside Google Mock.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
-
-#include <assert.h>
-#include <stdlib.h>
-#include <cstdint>
-#include <iostream>
-
-// Most of the utilities needed for porting Google Mock are also
-// required for Google Test and are defined in gtest-port.h.
-//
-// Note to maintainers: to reduce code duplication, prefer adding
-// portability utilities to Google Test's gtest-port.h instead of
-// here, as Google Mock depends on Google Test.  Only add a utility
-// here if it's truly specific to Google Mock.
-
-#include "gtest/gtest.h"
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
-
-// For MS Visual C++, check the compiler version. At least VS 2015 is
-// required to compile Google Mock.
-#if defined(_MSC_VER) && _MSC_VER < 1900
-# error "At least Visual C++ 2015 (14.0) is required to compile Google Mock."
-#endif
-
-// Macro for referencing flags.  This is public as we want the user to
-// use this syntax to reference Google Mock flags.
-#define GMOCK_FLAG(name) FLAGS_gmock_##name
-
-#if !defined(GMOCK_DECLARE_bool_)
-
-// Macros for declaring flags.
-# define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
-# define GMOCK_DECLARE_int32_(name) extern GTEST_API_ int32_t GMOCK_FLAG(name)
-# define GMOCK_DECLARE_string_(name) \
-    extern GTEST_API_ ::std::string GMOCK_FLAG(name)
-
-// Macros for defining flags.
-# define GMOCK_DEFINE_bool_(name, default_val, doc) \
-    GTEST_API_ bool GMOCK_FLAG(name) = (default_val)
-# define GMOCK_DEFINE_int32_(name, default_val, doc) \
-    GTEST_API_ int32_t GMOCK_FLAG(name) = (default_val)
-# define GMOCK_DEFINE_string_(name, default_val, doc) \
-    GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val)
-
-#endif  // !defined(GMOCK_DECLARE_bool_)
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
-
-namespace testing {
-
-template <typename>
-class Matcher;
-
-namespace internal {
-
-// Silence MSVC C4100 (unreferenced formal parameter) and
-// C4805('==': unsafe mix of type 'const int' and type 'const bool')
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4100)
-# pragma warning(disable:4805)
-#endif
-
-// Joins a vector of strings as if they are fields of a tuple; returns
-// the joined string.
-GTEST_API_ std::string JoinAsTuple(const Strings& fields);
-
-// Converts an identifier name to a space-separated list of lower-case
-// words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
-// treated as one word.  For example, both "FooBar123" and
-// "foo_bar_123" are converted to "foo bar 123".
-GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_name);
-
-// GetRawPointer(p) returns the raw pointer underlying p when p is a
-// smart pointer, or returns p itself when p is already a raw pointer.
-// The following default implementation is for the smart pointer case.
-template <typename Pointer>
-inline const typename Pointer::element_type* GetRawPointer(const Pointer& p) {
-  return p.get();
-}
-// This overloaded version is for the raw pointer case.
-template <typename Element>
-inline Element* GetRawPointer(Element* p) { return p; }
-
-// MSVC treats wchar_t as a native type usually, but treats it as the
-// same as unsigned short when the compiler option /Zc:wchar_t- is
-// specified.  It defines _NATIVE_WCHAR_T_DEFINED symbol when wchar_t
-// is a native type.
-#if defined(_MSC_VER) && !defined(_NATIVE_WCHAR_T_DEFINED)
-// wchar_t is a typedef.
-#else
-# define GMOCK_WCHAR_T_IS_NATIVE_ 1
-#endif
-
-// In what follows, we use the term "kind" to indicate whether a type
-// is bool, an integer type (excluding bool), a floating-point type,
-// or none of them.  This categorization is useful for determining
-// when a matcher argument type can be safely converted to another
-// type in the implementation of SafeMatcherCast.
-enum TypeKind {
-  kBool, kInteger, kFloatingPoint, kOther
-};
-
-// KindOf<T>::value is the kind of type T.
-template <typename T> struct KindOf {
-  enum { value = kOther };  // The default kind.
-};
-
-// This macro declares that the kind of 'type' is 'kind'.
-#define GMOCK_DECLARE_KIND_(type, kind) \
-  template <> struct KindOf<type> { enum { value = kind }; }
-
-GMOCK_DECLARE_KIND_(bool, kBool);
-
-// All standard integer types.
-GMOCK_DECLARE_KIND_(char, kInteger);
-GMOCK_DECLARE_KIND_(signed char, kInteger);
-GMOCK_DECLARE_KIND_(unsigned char, kInteger);
-GMOCK_DECLARE_KIND_(short, kInteger);  // NOLINT
-GMOCK_DECLARE_KIND_(unsigned short, kInteger);  // NOLINT
-GMOCK_DECLARE_KIND_(int, kInteger);
-GMOCK_DECLARE_KIND_(unsigned int, kInteger);
-GMOCK_DECLARE_KIND_(long, kInteger);  // NOLINT
-GMOCK_DECLARE_KIND_(unsigned long, kInteger);  // NOLINT
-GMOCK_DECLARE_KIND_(long long, kInteger);  // NOLINT
-GMOCK_DECLARE_KIND_(unsigned long long, kInteger);  // NOLINT
-
-#if GMOCK_WCHAR_T_IS_NATIVE_
-GMOCK_DECLARE_KIND_(wchar_t, kInteger);
-#endif
-
-// All standard floating-point types.
-GMOCK_DECLARE_KIND_(float, kFloatingPoint);
-GMOCK_DECLARE_KIND_(double, kFloatingPoint);
-GMOCK_DECLARE_KIND_(long double, kFloatingPoint);
-
-#undef GMOCK_DECLARE_KIND_
-
-// Evaluates to the kind of 'type'.
-#define GMOCK_KIND_OF_(type) \
-  static_cast< ::testing::internal::TypeKind>( \
-      ::testing::internal::KindOf<type>::value)
-
-// LosslessArithmeticConvertibleImpl<kFromKind, From, kToKind, To>::value
-// is true if and only if arithmetic type From can be losslessly converted to
-// arithmetic type To.
-//
-// It's the user's responsibility to ensure that both From and To are
-// raw (i.e. has no CV modifier, is not a pointer, and is not a
-// reference) built-in arithmetic types, kFromKind is the kind of
-// From, and kToKind is the kind of To; the value is
-// implementation-defined when the above pre-condition is violated.
-template <TypeKind kFromKind, typename From, TypeKind kToKind, typename To>
-using LosslessArithmeticConvertibleImpl = std::integral_constant<
-    bool,
-    // clang-format off
-      // Converting from bool is always lossless
-      (kFromKind == kBool) ? true
-      // Converting between any other type kinds will be lossy if the type
-      // kinds are not the same.
-    : (kFromKind != kToKind) ? false
-    : (kFromKind == kInteger &&
-       // Converting between integers of different widths is allowed so long
-       // as the conversion does not go from signed to unsigned.
-      (((sizeof(From) < sizeof(To)) &&
-        !(std::is_signed<From>::value && !std::is_signed<To>::value)) ||
-       // Converting between integers of the same width only requires the
-       // two types to have the same signedness.
-       ((sizeof(From) == sizeof(To)) &&
-        (std::is_signed<From>::value == std::is_signed<To>::value)))
-       ) ? true
-      // Floating point conversions are lossless if and only if `To` is at least
-      // as wide as `From`.
-    : (kFromKind == kFloatingPoint && (sizeof(From) <= sizeof(To))) ? true
-    : false
-    // clang-format on
-    >;
-
-// LosslessArithmeticConvertible<From, To>::value is true if and only if
-// arithmetic type From can be losslessly converted to arithmetic type To.
-//
-// It's the user's responsibility to ensure that both From and To are
-// raw (i.e. has no CV modifier, is not a pointer, and is not a
-// reference) built-in arithmetic types; the value is
-// implementation-defined when the above pre-condition is violated.
-template <typename From, typename To>
-using LosslessArithmeticConvertible =
-    LosslessArithmeticConvertibleImpl<GMOCK_KIND_OF_(From), From,
-                                      GMOCK_KIND_OF_(To), To>;
-
-// This interface knows how to report a Google Mock failure (either
-// non-fatal or fatal).
-class FailureReporterInterface {
- public:
-  // The type of a failure (either non-fatal or fatal).
-  enum FailureType {
-    kNonfatal, kFatal
-  };
-
-  virtual ~FailureReporterInterface() {}
-
-  // Reports a failure that occurred at the given source file location.
-  virtual void ReportFailure(FailureType type, const char* file, int line,
-                             const std::string& message) = 0;
-};
-
-// Returns the failure reporter used by Google Mock.
-GTEST_API_ FailureReporterInterface* GetFailureReporter();
-
-// Asserts that condition is true; aborts the process with the given
-// message if condition is false.  We cannot use LOG(FATAL) or CHECK()
-// as Google Mock might be used to mock the log sink itself.  We
-// inline this function to prevent it from showing up in the stack
-// trace.
-inline void Assert(bool condition, const char* file, int line,
-                   const std::string& msg) {
-  if (!condition) {
-    GetFailureReporter()->ReportFailure(FailureReporterInterface::kFatal,
-                                        file, line, msg);
-  }
-}
-inline void Assert(bool condition, const char* file, int line) {
-  Assert(condition, file, line, "Assertion failed.");
-}
-
-// Verifies that condition is true; generates a non-fatal failure if
-// condition is false.
-inline void Expect(bool condition, const char* file, int line,
-                   const std::string& msg) {
-  if (!condition) {
-    GetFailureReporter()->ReportFailure(FailureReporterInterface::kNonfatal,
-                                        file, line, msg);
-  }
-}
-inline void Expect(bool condition, const char* file, int line) {
-  Expect(condition, file, line, "Expectation failed.");
-}
-
-// Severity level of a log.
-enum LogSeverity {
-  kInfo = 0,
-  kWarning = 1
-};
-
-// Valid values for the --gmock_verbose flag.
-
-// All logs (informational and warnings) are printed.
-const char kInfoVerbosity[] = "info";
-// Only warnings are printed.
-const char kWarningVerbosity[] = "warning";
-// No logs are printed.
-const char kErrorVerbosity[] = "error";
-
-// Returns true if and only if a log with the given severity is visible
-// according to the --gmock_verbose flag.
-GTEST_API_ bool LogIsVisible(LogSeverity severity);
-
-// Prints the given message to stdout if and only if 'severity' >= the level
-// specified by the --gmock_verbose flag.  If stack_frames_to_skip >=
-// 0, also prints the stack trace excluding the top
-// stack_frames_to_skip frames.  In opt mode, any positive
-// stack_frames_to_skip is treated as 0, since we don't know which
-// function calls will be inlined by the compiler and need to be
-// conservative.
-GTEST_API_ void Log(LogSeverity severity, const std::string& message,
-                    int stack_frames_to_skip);
-
-// A marker class that is used to resolve parameterless expectations to the
-// correct overload. This must not be instantiable, to prevent client code from
-// accidentally resolving to the overload; for example:
-//
-//    ON_CALL(mock, Method({}, nullptr))...
-//
-class WithoutMatchers {
- private:
-  WithoutMatchers() {}
-  friend GTEST_API_ WithoutMatchers GetWithoutMatchers();
-};
-
-// Internal use only: access the singleton instance of WithoutMatchers.
-GTEST_API_ WithoutMatchers GetWithoutMatchers();
-
-// Disable MSVC warnings for infinite recursion, since in this case the
-// the recursion is unreachable.
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4717)
-#endif
-
-// Invalid<T>() is usable as an expression of type T, but will terminate
-// the program with an assertion failure if actually run.  This is useful
-// when a value of type T is needed for compilation, but the statement
-// will not really be executed (or we don't care if the statement
-// crashes).
-template <typename T>
-inline T Invalid() {
-  Assert(false, "", -1, "Internal error: attempt to return invalid value");
-  // This statement is unreachable, and would never terminate even if it
-  // could be reached. It is provided only to placate compiler warnings
-  // about missing return statements.
-  return Invalid<T>();
-}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-// Given a raw type (i.e. having no top-level reference or const
-// modifier) RawContainer that's either an STL-style container or a
-// native array, class StlContainerView<RawContainer> has the
-// following members:
-//
-//   - type is a type that provides an STL-style container view to
-//     (i.e. implements the STL container concept for) RawContainer;
-//   - const_reference is a type that provides a reference to a const
-//     RawContainer;
-//   - ConstReference(raw_container) returns a const reference to an STL-style
-//     container view to raw_container, which is a RawContainer.
-//   - Copy(raw_container) returns an STL-style container view of a
-//     copy of raw_container, which is a RawContainer.
-//
-// This generic version is used when RawContainer itself is already an
-// STL-style container.
-template <class RawContainer>
-class StlContainerView {
- public:
-  typedef RawContainer type;
-  typedef const type& const_reference;
-
-  static const_reference ConstReference(const RawContainer& container) {
-    static_assert(!std::is_const<RawContainer>::value,
-                  "RawContainer type must not be const");
-    return container;
-  }
-  static type Copy(const RawContainer& container) { return container; }
-};
-
-// This specialization is used when RawContainer is a native array type.
-template <typename Element, size_t N>
-class StlContainerView<Element[N]> {
- public:
-  typedef typename std::remove_const<Element>::type RawElement;
-  typedef internal::NativeArray<RawElement> type;
-  // NativeArray<T> can represent a native array either by value or by
-  // reference (selected by a constructor argument), so 'const type'
-  // can be used to reference a const native array.  We cannot
-  // 'typedef const type& const_reference' here, as that would mean
-  // ConstReference() has to return a reference to a local variable.
-  typedef const type const_reference;
-
-  static const_reference ConstReference(const Element (&array)[N]) {
-    static_assert(std::is_same<Element, RawElement>::value,
-                  "Element type must not be const");
-    return type(array, N, RelationToSourceReference());
-  }
-  static type Copy(const Element (&array)[N]) {
-    return type(array, N, RelationToSourceCopy());
-  }
-};
-
-// This specialization is used when RawContainer is a native array
-// represented as a (pointer, size) tuple.
-template <typename ElementPointer, typename Size>
-class StlContainerView< ::std::tuple<ElementPointer, Size> > {
- public:
-  typedef typename std::remove_const<
-      typename std::pointer_traits<ElementPointer>::element_type>::type
-      RawElement;
-  typedef internal::NativeArray<RawElement> type;
-  typedef const type const_reference;
-
-  static const_reference ConstReference(
-      const ::std::tuple<ElementPointer, Size>& array) {
-    return type(std::get<0>(array), std::get<1>(array),
-                RelationToSourceReference());
-  }
-  static type Copy(const ::std::tuple<ElementPointer, Size>& array) {
-    return type(std::get<0>(array), std::get<1>(array), RelationToSourceCopy());
-  }
-};
-
-// The following specialization prevents the user from instantiating
-// StlContainer with a reference type.
-template <typename T> class StlContainerView<T&>;
-
-// A type transform to remove constness from the first part of a pair.
-// Pairs like that are used as the value_type of associative containers,
-// and this transform produces a similar but assignable pair.
-template <typename T>
-struct RemoveConstFromKey {
-  typedef T type;
-};
-
-// Partially specialized to remove constness from std::pair<const K, V>.
-template <typename K, typename V>
-struct RemoveConstFromKey<std::pair<const K, V> > {
-  typedef std::pair<K, V> type;
-};
-
-// Emit an assertion failure due to incorrect DoDefault() usage. Out-of-lined to
-// reduce code size.
-GTEST_API_ void IllegalDoDefault(const char* file, int line);
-
-template <typename F, typename Tuple, size_t... Idx>
-auto ApplyImpl(F&& f, Tuple&& args, IndexSequence<Idx...>) -> decltype(
-    std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...)) {
-  return std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...);
-}
-
-// Apply the function to a tuple of arguments.
-template <typename F, typename Tuple>
-auto Apply(F&& f, Tuple&& args) -> decltype(
-    ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args),
-              MakeIndexSequence<std::tuple_size<
-                  typename std::remove_reference<Tuple>::type>::value>())) {
-  return ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args),
-                   MakeIndexSequence<std::tuple_size<
-                       typename std::remove_reference<Tuple>::type>::value>());
-}
-
-// Template struct Function<F>, where F must be a function type, contains
-// the following typedefs:
-//
-//   Result:               the function's return type.
-//   Arg<N>:               the type of the N-th argument, where N starts with 0.
-//   ArgumentTuple:        the tuple type consisting of all parameters of F.
-//   ArgumentMatcherTuple: the tuple type consisting of Matchers for all
-//                         parameters of F.
-//   MakeResultVoid:       the function type obtained by substituting void
-//                         for the return type of F.
-//   MakeResultIgnoredValue:
-//                         the function type obtained by substituting Something
-//                         for the return type of F.
-template <typename T>
-struct Function;
-
-template <typename R, typename... Args>
-struct Function<R(Args...)> {
-  using Result = R;
-  static constexpr size_t ArgumentCount = sizeof...(Args);
-  template <size_t I>
-  using Arg = ElemFromList<I, Args...>;
-  using ArgumentTuple = std::tuple<Args...>;
-  using ArgumentMatcherTuple = std::tuple<Matcher<Args>...>;
-  using MakeResultVoid = void(Args...);
-  using MakeResultIgnoredValue = IgnoredValue(Args...);
-};
-
-template <typename R, typename... Args>
-constexpr size_t Function<R(Args...)>::ArgumentCount;
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-}  // namespace internal
-}  // namespace testing
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_
-
-// Expands and concatenates the arguments. Constructed macros reevaluate.
-#define GMOCK_PP_CAT(_1, _2) GMOCK_PP_INTERNAL_CAT(_1, _2)
-
-// Expands and stringifies the only argument.
-#define GMOCK_PP_STRINGIZE(...) GMOCK_PP_INTERNAL_STRINGIZE(__VA_ARGS__)
-
-// Returns empty. Given a variadic number of arguments.
-#define GMOCK_PP_EMPTY(...)
-
-// Returns a comma. Given a variadic number of arguments.
-#define GMOCK_PP_COMMA(...) ,
-
-// Returns the only argument.
-#define GMOCK_PP_IDENTITY(_1) _1
-
-// Evaluates to the number of arguments after expansion.
-//
-//   #define PAIR x, y
-//
-//   GMOCK_PP_NARG() => 1
-//   GMOCK_PP_NARG(x) => 1
-//   GMOCK_PP_NARG(x, y) => 2
-//   GMOCK_PP_NARG(PAIR) => 2
-//
-// Requires: the number of arguments after expansion is at most 15.
-#define GMOCK_PP_NARG(...) \
-  GMOCK_PP_INTERNAL_16TH(  \
-      (__VA_ARGS__, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
-
-// Returns 1 if the expansion of arguments has an unprotected comma. Otherwise
-// returns 0. Requires no more than 15 unprotected commas.
-#define GMOCK_PP_HAS_COMMA(...) \
-  GMOCK_PP_INTERNAL_16TH(       \
-      (__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0))
-
-// Returns the first argument.
-#define GMOCK_PP_HEAD(...) GMOCK_PP_INTERNAL_HEAD((__VA_ARGS__, unusedArg))
-
-// Returns the tail. A variadic list of all arguments minus the first. Requires
-// at least one argument.
-#define GMOCK_PP_TAIL(...) GMOCK_PP_INTERNAL_TAIL((__VA_ARGS__))
-
-// Calls CAT(_Macro, NARG(__VA_ARGS__))(__VA_ARGS__)
-#define GMOCK_PP_VARIADIC_CALL(_Macro, ...) \
-  GMOCK_PP_IDENTITY(                        \
-      GMOCK_PP_CAT(_Macro, GMOCK_PP_NARG(__VA_ARGS__))(__VA_ARGS__))
-
-// If the arguments after expansion have no tokens, evaluates to `1`. Otherwise
-// evaluates to `0`.
-//
-// Requires: * the number of arguments after expansion is at most 15.
-//           * If the argument is a macro, it must be able to be called with one
-//             argument.
-//
-// Implementation details:
-//
-// There is one case when it generates a compile error: if the argument is macro
-// that cannot be called with one argument.
-//
-//   #define M(a, b)  // it doesn't matter what it expands to
-//
-//   // Expected: expands to `0`.
-//   // Actual: compile error.
-//   GMOCK_PP_IS_EMPTY(M)
-//
-// There are 4 cases tested:
-//
-// * __VA_ARGS__ possible expansion has no unparen'd commas. Expected 0.
-// * __VA_ARGS__ possible expansion is not enclosed in parenthesis. Expected 0.
-// * __VA_ARGS__ possible expansion is not a macro that ()-evaluates to a comma.
-//   Expected 0
-// * __VA_ARGS__ is empty, or has unparen'd commas, or is enclosed in
-//   parenthesis, or is a macro that ()-evaluates to comma. Expected 1.
-//
-// We trigger detection on '0001', i.e. on empty.
-#define GMOCK_PP_IS_EMPTY(...)                                               \
-  GMOCK_PP_INTERNAL_IS_EMPTY(GMOCK_PP_HAS_COMMA(__VA_ARGS__),                \
-                             GMOCK_PP_HAS_COMMA(GMOCK_PP_COMMA __VA_ARGS__), \
-                             GMOCK_PP_HAS_COMMA(__VA_ARGS__()),              \
-                             GMOCK_PP_HAS_COMMA(GMOCK_PP_COMMA __VA_ARGS__()))
-
-// Evaluates to _Then if _Cond is 1 and _Else if _Cond is 0.
-#define GMOCK_PP_IF(_Cond, _Then, _Else) \
-  GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IF_, _Cond)(_Then, _Else)
-
-// Similar to GMOCK_PP_IF but takes _Then and _Else in parentheses.
-//
-// GMOCK_PP_GENERIC_IF(1, (a, b, c), (d, e, f)) => a, b, c
-// GMOCK_PP_GENERIC_IF(0, (a, b, c), (d, e, f)) => d, e, f
-//
-#define GMOCK_PP_GENERIC_IF(_Cond, _Then, _Else) \
-  GMOCK_PP_REMOVE_PARENS(GMOCK_PP_IF(_Cond, _Then, _Else))
-
-// Evaluates to the number of arguments after expansion. Identifies 'empty' as
-// 0.
-//
-//   #define PAIR x, y
-//
-//   GMOCK_PP_NARG0() => 0
-//   GMOCK_PP_NARG0(x) => 1
-//   GMOCK_PP_NARG0(x, y) => 2
-//   GMOCK_PP_NARG0(PAIR) => 2
-//
-// Requires: * the number of arguments after expansion is at most 15.
-//           * If the argument is a macro, it must be able to be called with one
-//             argument.
-#define GMOCK_PP_NARG0(...) \
-  GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(__VA_ARGS__), 0, GMOCK_PP_NARG(__VA_ARGS__))
-
-// Expands to 1 if the first argument starts with something in parentheses,
-// otherwise to 0.
-#define GMOCK_PP_IS_BEGIN_PARENS(...)                              \
-  GMOCK_PP_HEAD(GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_, \
-                             GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C __VA_ARGS__))
-
-// Expands to 1 is there is only one argument and it is enclosed in parentheses.
-#define GMOCK_PP_IS_ENCLOSED_PARENS(...)             \
-  GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(__VA_ARGS__), \
-              GMOCK_PP_IS_EMPTY(GMOCK_PP_EMPTY __VA_ARGS__), 0)
-
-// Remove the parens, requires GMOCK_PP_IS_ENCLOSED_PARENS(args) => 1.
-#define GMOCK_PP_REMOVE_PARENS(...) GMOCK_PP_INTERNAL_REMOVE_PARENS __VA_ARGS__
-
-// Expands to _Macro(0, _Data, e1) _Macro(1, _Data, e2) ... _Macro(K -1, _Data,
-// eK) as many of GMOCK_INTERNAL_NARG0 _Tuple.
-// Requires: * |_Macro| can be called with 3 arguments.
-//           * |_Tuple| expansion has no more than 15 elements.
-#define GMOCK_PP_FOR_EACH(_Macro, _Data, _Tuple)                        \
-  GMOCK_PP_CAT(GMOCK_PP_INTERNAL_FOR_EACH_IMPL_, GMOCK_PP_NARG0 _Tuple) \
-  (0, _Macro, _Data, _Tuple)
-
-// Expands to _Macro(0, _Data, ) _Macro(1, _Data, ) ... _Macro(K - 1, _Data, )
-// Empty if _K = 0.
-// Requires: * |_Macro| can be called with 3 arguments.
-//           * |_K| literal between 0 and 15
-#define GMOCK_PP_REPEAT(_Macro, _Data, _N)           \
-  GMOCK_PP_CAT(GMOCK_PP_INTERNAL_FOR_EACH_IMPL_, _N) \
-  (0, _Macro, _Data, GMOCK_PP_INTENRAL_EMPTY_TUPLE)
-
-// Increments the argument, requires the argument to be between 0 and 15.
-#define GMOCK_PP_INC(_i) GMOCK_PP_CAT(GMOCK_PP_INTERNAL_INC_, _i)
-
-// Returns comma if _i != 0. Requires _i to be between 0 and 15.
-#define GMOCK_PP_COMMA_IF(_i) GMOCK_PP_CAT(GMOCK_PP_INTERNAL_COMMA_IF_, _i)
-
-// Internal details follow. Do not use any of these symbols outside of this
-// file or we will break your code.
-#define GMOCK_PP_INTENRAL_EMPTY_TUPLE (, , , , , , , , , , , , , , , )
-#define GMOCK_PP_INTERNAL_CAT(_1, _2) _1##_2
-#define GMOCK_PP_INTERNAL_STRINGIZE(...) #__VA_ARGS__
-#define GMOCK_PP_INTERNAL_CAT_5(_1, _2, _3, _4, _5) _1##_2##_3##_4##_5
-#define GMOCK_PP_INTERNAL_IS_EMPTY(_1, _2, _3, _4)                             \
-  GMOCK_PP_HAS_COMMA(GMOCK_PP_INTERNAL_CAT_5(GMOCK_PP_INTERNAL_IS_EMPTY_CASE_, \
-                                             _1, _2, _3, _4))
-#define GMOCK_PP_INTERNAL_IS_EMPTY_CASE_0001 ,
-#define GMOCK_PP_INTERNAL_IF_1(_Then, _Else) _Then
-#define GMOCK_PP_INTERNAL_IF_0(_Then, _Else) _Else
-
-// Because of MSVC treating a token with a comma in it as a single token when
-// passed to another macro, we need to force it to evaluate it as multiple
-// tokens. We do that by using a "IDENTITY(MACRO PARENTHESIZED_ARGS)" macro. We
-// define one per possible macro that relies on this behavior. Note "_Args" must
-// be parenthesized.
-#define GMOCK_PP_INTERNAL_INTERNAL_16TH(_1, _2, _3, _4, _5, _6, _7, _8, _9, \
-                                        _10, _11, _12, _13, _14, _15, _16,  \
-                                        ...)                                \
-  _16
-#define GMOCK_PP_INTERNAL_16TH(_Args) \
-  GMOCK_PP_IDENTITY(GMOCK_PP_INTERNAL_INTERNAL_16TH _Args)
-#define GMOCK_PP_INTERNAL_INTERNAL_HEAD(_1, ...) _1
-#define GMOCK_PP_INTERNAL_HEAD(_Args) \
-  GMOCK_PP_IDENTITY(GMOCK_PP_INTERNAL_INTERNAL_HEAD _Args)
-#define GMOCK_PP_INTERNAL_INTERNAL_TAIL(_1, ...) __VA_ARGS__
-#define GMOCK_PP_INTERNAL_TAIL(_Args) \
-  GMOCK_PP_IDENTITY(GMOCK_PP_INTERNAL_INTERNAL_TAIL _Args)
-
-#define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C(...) 1 _
-#define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_1 1,
-#define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C \
-  0,
-#define GMOCK_PP_INTERNAL_REMOVE_PARENS(...) __VA_ARGS__
-#define GMOCK_PP_INTERNAL_INC_0 1
-#define GMOCK_PP_INTERNAL_INC_1 2
-#define GMOCK_PP_INTERNAL_INC_2 3
-#define GMOCK_PP_INTERNAL_INC_3 4
-#define GMOCK_PP_INTERNAL_INC_4 5
-#define GMOCK_PP_INTERNAL_INC_5 6
-#define GMOCK_PP_INTERNAL_INC_6 7
-#define GMOCK_PP_INTERNAL_INC_7 8
-#define GMOCK_PP_INTERNAL_INC_8 9
-#define GMOCK_PP_INTERNAL_INC_9 10
-#define GMOCK_PP_INTERNAL_INC_10 11
-#define GMOCK_PP_INTERNAL_INC_11 12
-#define GMOCK_PP_INTERNAL_INC_12 13
-#define GMOCK_PP_INTERNAL_INC_13 14
-#define GMOCK_PP_INTERNAL_INC_14 15
-#define GMOCK_PP_INTERNAL_INC_15 16
-#define GMOCK_PP_INTERNAL_COMMA_IF_0
-#define GMOCK_PP_INTERNAL_COMMA_IF_1 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_2 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_3 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_4 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_5 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_6 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_7 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_8 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_9 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_10 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_11 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_12 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_13 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_14 ,
-#define GMOCK_PP_INTERNAL_COMMA_IF_15 ,
-#define GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, _element) \
-  _Macro(_i, _Data, _element)
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_0(_i, _Macro, _Data, _Tuple)
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_1(_i, _Macro, _Data, _Tuple) \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple)
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_2(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_1(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_3(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_2(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_4(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_3(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_5(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_4(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_6(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_5(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_7(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_6(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_8(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_7(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_9(_i, _Macro, _Data, _Tuple)    \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_8(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_10(_i, _Macro, _Data, _Tuple)   \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_9(GMOCK_PP_INC(_i), _Macro, _Data,    \
-                                    (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_11(_i, _Macro, _Data, _Tuple)   \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_10(GMOCK_PP_INC(_i), _Macro, _Data,   \
-                                     (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_12(_i, _Macro, _Data, _Tuple)   \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_11(GMOCK_PP_INC(_i), _Macro, _Data,   \
-                                     (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_13(_i, _Macro, _Data, _Tuple)   \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_12(GMOCK_PP_INC(_i), _Macro, _Data,   \
-                                     (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_14(_i, _Macro, _Data, _Tuple)   \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_13(GMOCK_PP_INC(_i), _Macro, _Data,   \
-                                     (GMOCK_PP_TAIL _Tuple))
-#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_15(_i, _Macro, _Data, _Tuple)   \
-  GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \
-  GMOCK_PP_INTERNAL_FOR_EACH_IMPL_14(GMOCK_PP_INC(_i), _Macro, _Data,   \
-                                     (GMOCK_PP_TAIL _Tuple))
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4100)
-#endif
-
-namespace testing {
-
-// To implement an action Foo, define:
-//   1. a class FooAction that implements the ActionInterface interface, and
-//   2. a factory function that creates an Action object from a
-//      const FooAction*.
-//
-// The two-level delegation design follows that of Matcher, providing
-// consistency for extension developers.  It also eases ownership
-// management as Action objects can now be copied like plain values.
-
-namespace internal {
-
-// BuiltInDefaultValueGetter<T, true>::Get() returns a
-// default-constructed T value.  BuiltInDefaultValueGetter<T,
-// false>::Get() crashes with an error.
-//
-// This primary template is used when kDefaultConstructible is true.
-template <typename T, bool kDefaultConstructible>
-struct BuiltInDefaultValueGetter {
-  static T Get() { return T(); }
-};
-template <typename T>
-struct BuiltInDefaultValueGetter<T, false> {
-  static T Get() {
-    Assert(false, __FILE__, __LINE__,
-           "Default action undefined for the function return type.");
-    return internal::Invalid<T>();
-    // The above statement will never be reached, but is required in
-    // order for this function to compile.
-  }
-};
-
-// BuiltInDefaultValue<T>::Get() returns the "built-in" default value
-// for type T, which is NULL when T is a raw pointer type, 0 when T is
-// a numeric type, false when T is bool, or "" when T is string or
-// std::string.  In addition, in C++11 and above, it turns a
-// default-constructed T value if T is default constructible.  For any
-// other type T, the built-in default T value is undefined, and the
-// function will abort the process.
-template <typename T>
-class BuiltInDefaultValue {
- public:
-  // This function returns true if and only if type T has a built-in default
-  // value.
-  static bool Exists() {
-    return ::std::is_default_constructible<T>::value;
-  }
-
-  static T Get() {
-    return BuiltInDefaultValueGetter<
-        T, ::std::is_default_constructible<T>::value>::Get();
-  }
-};
-
-// This partial specialization says that we use the same built-in
-// default value for T and const T.
-template <typename T>
-class BuiltInDefaultValue<const T> {
- public:
-  static bool Exists() { return BuiltInDefaultValue<T>::Exists(); }
-  static T Get() { return BuiltInDefaultValue<T>::Get(); }
-};
-
-// This partial specialization defines the default values for pointer
-// types.
-template <typename T>
-class BuiltInDefaultValue<T*> {
- public:
-  static bool Exists() { return true; }
-  static T* Get() { return nullptr; }
-};
-
-// The following specializations define the default values for
-// specific types we care about.
-#define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \
-  template <> \
-  class BuiltInDefaultValue<type> { \
-   public: \
-    static bool Exists() { return true; } \
-    static type Get() { return value; } \
-  }
-
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void, );  // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::std::string, "");
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(bool, false);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned char, '\0');
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed char, '\0');
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(char, '\0');
-
-// There's no need for a default action for signed wchar_t, as that
-// type is the same as wchar_t for gcc, and invalid for MSVC.
-//
-// There's also no need for a default action for unsigned wchar_t, as
-// that type is the same as unsigned int for gcc, and invalid for
-// MSVC.
-#if GMOCK_WCHAR_T_IS_NATIVE_
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(wchar_t, 0U);  // NOLINT
-#endif
-
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned short, 0U);  // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed short, 0);     // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL);  // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L);     // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long long, 0);  // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long long, 0);  // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0);
-
-#undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
-
-// Simple two-arg form of std::disjunction.
-template <typename P, typename Q>
-using disjunction = typename ::std::conditional<P::value, P, Q>::type;
-
-}  // namespace internal
-
-// When an unexpected function call is encountered, Google Mock will
-// let it return a default value if the user has specified one for its
-// return type, or if the return type has a built-in default value;
-// otherwise Google Mock won't know what value to return and will have
-// to abort the process.
-//
-// The DefaultValue<T> class allows a user to specify the
-// default value for a type T that is both copyable and publicly
-// destructible (i.e. anything that can be used as a function return
-// type).  The usage is:
-//
-//   // Sets the default value for type T to be foo.
-//   DefaultValue<T>::Set(foo);
-template <typename T>
-class DefaultValue {
- public:
-  // Sets the default value for type T; requires T to be
-  // copy-constructable and have a public destructor.
-  static void Set(T x) {
-    delete producer_;
-    producer_ = new FixedValueProducer(x);
-  }
-
-  // Provides a factory function to be called to generate the default value.
-  // This method can be used even if T is only move-constructible, but it is not
-  // limited to that case.
-  typedef T (*FactoryFunction)();
-  static void SetFactory(FactoryFunction factory) {
-    delete producer_;
-    producer_ = new FactoryValueProducer(factory);
-  }
-
-  // Unsets the default value for type T.
-  static void Clear() {
-    delete producer_;
-    producer_ = nullptr;
-  }
-
-  // Returns true if and only if the user has set the default value for type T.
-  static bool IsSet() { return producer_ != nullptr; }
-
-  // Returns true if T has a default return value set by the user or there
-  // exists a built-in default value.
-  static bool Exists() {
-    return IsSet() || internal::BuiltInDefaultValue<T>::Exists();
-  }
-
-  // Returns the default value for type T if the user has set one;
-  // otherwise returns the built-in default value. Requires that Exists()
-  // is true, which ensures that the return value is well-defined.
-  static T Get() {
-    return producer_ == nullptr ? internal::BuiltInDefaultValue<T>::Get()
-                                : producer_->Produce();
-  }
-
- private:
-  class ValueProducer {
-   public:
-    virtual ~ValueProducer() {}
-    virtual T Produce() = 0;
-  };
-
-  class FixedValueProducer : public ValueProducer {
-   public:
-    explicit FixedValueProducer(T value) : value_(value) {}
-    T Produce() override { return value_; }
-
-   private:
-    const T value_;
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(FixedValueProducer);
-  };
-
-  class FactoryValueProducer : public ValueProducer {
-   public:
-    explicit FactoryValueProducer(FactoryFunction factory)
-        : factory_(factory) {}
-    T Produce() override { return factory_(); }
-
-   private:
-    const FactoryFunction factory_;
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(FactoryValueProducer);
-  };
-
-  static ValueProducer* producer_;
-};
-
-// This partial specialization allows a user to set default values for
-// reference types.
-template <typename T>
-class DefaultValue<T&> {
- public:
-  // Sets the default value for type T&.
-  static void Set(T& x) {  // NOLINT
-    address_ = &x;
-  }
-
-  // Unsets the default value for type T&.
-  static void Clear() { address_ = nullptr; }
-
-  // Returns true if and only if the user has set the default value for type T&.
-  static bool IsSet() { return address_ != nullptr; }
-
-  // Returns true if T has a default return value set by the user or there
-  // exists a built-in default value.
-  static bool Exists() {
-    return IsSet() || internal::BuiltInDefaultValue<T&>::Exists();
-  }
-
-  // Returns the default value for type T& if the user has set one;
-  // otherwise returns the built-in default value if there is one;
-  // otherwise aborts the process.
-  static T& Get() {
-    return address_ == nullptr ? internal::BuiltInDefaultValue<T&>::Get()
-                               : *address_;
-  }
-
- private:
-  static T* address_;
-};
-
-// This specialization allows DefaultValue<void>::Get() to
-// compile.
-template <>
-class DefaultValue<void> {
- public:
-  static bool Exists() { return true; }
-  static void Get() {}
-};
-
-// Points to the user-set default value for type T.
-template <typename T>
-typename DefaultValue<T>::ValueProducer* DefaultValue<T>::producer_ = nullptr;
-
-// Points to the user-set default value for type T&.
-template <typename T>
-T* DefaultValue<T&>::address_ = nullptr;
-
-// Implement this interface to define an action for function type F.
-template <typename F>
-class ActionInterface {
- public:
-  typedef typename internal::Function<F>::Result Result;
-  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
-  ActionInterface() {}
-  virtual ~ActionInterface() {}
-
-  // Performs the action.  This method is not const, as in general an
-  // action can have side effects and be stateful.  For example, a
-  // get-the-next-element-from-the-collection action will need to
-  // remember the current element.
-  virtual Result Perform(const ArgumentTuple& args) = 0;
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface);
-};
-
-// An Action<F> is a copyable and IMMUTABLE (except by assignment)
-// object that represents an action to be taken when a mock function
-// of type F is called.  The implementation of Action<T> is just a
-// std::shared_ptr to const ActionInterface<T>. Don't inherit from Action!
-// You can view an object implementing ActionInterface<F> as a
-// concrete action (including its current state), and an Action<F>
-// object as a handle to it.
-template <typename F>
-class Action {
-  // Adapter class to allow constructing Action from a legacy ActionInterface.
-  // New code should create Actions from functors instead.
-  struct ActionAdapter {
-    // Adapter must be copyable to satisfy std::function requirements.
-    ::std::shared_ptr<ActionInterface<F>> impl_;
-
-    template <typename... Args>
-    typename internal::Function<F>::Result operator()(Args&&... args) {
-      return impl_->Perform(
-          ::std::forward_as_tuple(::std::forward<Args>(args)...));
-    }
-  };
-
-  template <typename G>
-  using IsCompatibleFunctor = std::is_constructible<std::function<F>, G>;
-
- public:
-  typedef typename internal::Function<F>::Result Result;
-  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
-  // Constructs a null Action.  Needed for storing Action objects in
-  // STL containers.
-  Action() {}
-
-  // Construct an Action from a specified callable.
-  // This cannot take std::function directly, because then Action would not be
-  // directly constructible from lambda (it would require two conversions).
-  template <
-      typename G,
-      typename = typename std::enable_if<internal::disjunction<
-          IsCompatibleFunctor<G>, std::is_constructible<std::function<Result()>,
-                                                        G>>::value>::type>
-  Action(G&& fun) {  // NOLINT
-    Init(::std::forward<G>(fun), IsCompatibleFunctor<G>());
-  }
-
-  // Constructs an Action from its implementation.
-  explicit Action(ActionInterface<F>* impl)
-      : fun_(ActionAdapter{::std::shared_ptr<ActionInterface<F>>(impl)}) {}
-
-  // This constructor allows us to turn an Action<Func> object into an
-  // Action<F>, as long as F's arguments can be implicitly converted
-  // to Func's and Func's return type can be implicitly converted to F's.
-  template <typename Func>
-  explicit Action(const Action<Func>& action) : fun_(action.fun_) {}
-
-  // Returns true if and only if this is the DoDefault() action.
-  bool IsDoDefault() const { return fun_ == nullptr; }
-
-  // Performs the action.  Note that this method is const even though
-  // the corresponding method in ActionInterface is not.  The reason
-  // is that a const Action<F> means that it cannot be re-bound to
-  // another concrete action, not that the concrete action it binds to
-  // cannot change state.  (Think of the difference between a const
-  // pointer and a pointer to const.)
-  Result Perform(ArgumentTuple args) const {
-    if (IsDoDefault()) {
-      internal::IllegalDoDefault(__FILE__, __LINE__);
-    }
-    return internal::Apply(fun_, ::std::move(args));
-  }
-
- private:
-  template <typename G>
-  friend class Action;
-
-  template <typename G>
-  void Init(G&& g, ::std::true_type) {
-    fun_ = ::std::forward<G>(g);
-  }
-
-  template <typename G>
-  void Init(G&& g, ::std::false_type) {
-    fun_ = IgnoreArgs<typename ::std::decay<G>::type>{::std::forward<G>(g)};
-  }
-
-  template <typename FunctionImpl>
-  struct IgnoreArgs {
-    template <typename... Args>
-    Result operator()(const Args&...) const {
-      return function_impl();
-    }
-
-    FunctionImpl function_impl;
-  };
-
-  // fun_ is an empty function if and only if this is the DoDefault() action.
-  ::std::function<F> fun_;
-};
-
-// The PolymorphicAction class template makes it easy to implement a
-// polymorphic action (i.e. an action that can be used in mock
-// functions of than one type, e.g. Return()).
-//
-// To define a polymorphic action, a user first provides a COPYABLE
-// implementation class that has a Perform() method template:
-//
-//   class FooAction {
-//    public:
-//     template <typename Result, typename ArgumentTuple>
-//     Result Perform(const ArgumentTuple& args) const {
-//       // Processes the arguments and returns a result, using
-//       // std::get<N>(args) to get the N-th (0-based) argument in the tuple.
-//     }
-//     ...
-//   };
-//
-// Then the user creates the polymorphic action using
-// MakePolymorphicAction(object) where object has type FooAction.  See
-// the definition of Return(void) and SetArgumentPointee<N>(value) for
-// complete examples.
-template <typename Impl>
-class PolymorphicAction {
- public:
-  explicit PolymorphicAction(const Impl& impl) : impl_(impl) {}
-
-  template <typename F>
-  operator Action<F>() const {
-    return Action<F>(new MonomorphicImpl<F>(impl_));
-  }
-
- private:
-  template <typename F>
-  class MonomorphicImpl : public ActionInterface<F> {
-   public:
-    typedef typename internal::Function<F>::Result Result;
-    typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
-    explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
-
-    Result Perform(const ArgumentTuple& args) override {
-      return impl_.template Perform<Result>(args);
-    }
-
-   private:
-    Impl impl_;
-  };
-
-  Impl impl_;
-};
-
-// Creates an Action from its implementation and returns it.  The
-// created Action object owns the implementation.
-template <typename F>
-Action<F> MakeAction(ActionInterface<F>* impl) {
-  return Action<F>(impl);
-}
-
-// Creates a polymorphic action from its implementation.  This is
-// easier to use than the PolymorphicAction<Impl> constructor as it
-// doesn't require you to explicitly write the template argument, e.g.
-//
-//   MakePolymorphicAction(foo);
-// vs
-//   PolymorphicAction<TypeOfFoo>(foo);
-template <typename Impl>
-inline PolymorphicAction<Impl> MakePolymorphicAction(const Impl& impl) {
-  return PolymorphicAction<Impl>(impl);
-}
-
-namespace internal {
-
-// Helper struct to specialize ReturnAction to execute a move instead of a copy
-// on return. Useful for move-only types, but could be used on any type.
-template <typename T>
-struct ByMoveWrapper {
-  explicit ByMoveWrapper(T value) : payload(std::move(value)) {}
-  T payload;
-};
-
-// Implements the polymorphic Return(x) action, which can be used in
-// any function that returns the type of x, regardless of the argument
-// types.
-//
-// Note: The value passed into Return must be converted into
-// Function<F>::Result when this action is cast to Action<F> rather than
-// when that action is performed. This is important in scenarios like
-//
-// MOCK_METHOD1(Method, T(U));
-// ...
-// {
-//   Foo foo;
-//   X x(&foo);
-//   EXPECT_CALL(mock, Method(_)).WillOnce(Return(x));
-// }
-//
-// In the example above the variable x holds reference to foo which leaves
-// scope and gets destroyed.  If copying X just copies a reference to foo,
-// that copy will be left with a hanging reference.  If conversion to T
-// makes a copy of foo, the above code is safe. To support that scenario, we
-// need to make sure that the type conversion happens inside the EXPECT_CALL
-// statement, and conversion of the result of Return to Action<T(U)> is a
-// good place for that.
-//
-// The real life example of the above scenario happens when an invocation
-// of gtl::Container() is passed into Return.
-//
-template <typename R>
-class ReturnAction {
- public:
-  // Constructs a ReturnAction object from the value to be returned.
-  // 'value' is passed by value instead of by const reference in order
-  // to allow Return("string literal") to compile.
-  explicit ReturnAction(R value) : value_(new R(std::move(value))) {}
-
-  // This template type conversion operator allows Return(x) to be
-  // used in ANY function that returns x's type.
-  template <typename F>
-  operator Action<F>() const {  // NOLINT
-    // Assert statement belongs here because this is the best place to verify
-    // conditions on F. It produces the clearest error messages
-    // in most compilers.
-    // Impl really belongs in this scope as a local class but can't
-    // because MSVC produces duplicate symbols in different translation units
-    // in this case. Until MS fixes that bug we put Impl into the class scope
-    // and put the typedef both here (for use in assert statement) and
-    // in the Impl class. But both definitions must be the same.
-    typedef typename Function<F>::Result Result;
-    GTEST_COMPILE_ASSERT_(
-        !std::is_reference<Result>::value,
-        use_ReturnRef_instead_of_Return_to_return_a_reference);
-    static_assert(!std::is_void<Result>::value,
-                  "Can't use Return() on an action expected to return `void`.");
-    return Action<F>(new Impl<R, F>(value_));
-  }
-
- private:
-  // Implements the Return(x) action for a particular function type F.
-  template <typename R_, typename F>
-  class Impl : public ActionInterface<F> {
-   public:
-    typedef typename Function<F>::Result Result;
-    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
-    // The implicit cast is necessary when Result has more than one
-    // single-argument constructor (e.g. Result is std::vector<int>) and R
-    // has a type conversion operator template.  In that case, value_(value)
-    // won't compile as the compiler doesn't known which constructor of
-    // Result to call.  ImplicitCast_ forces the compiler to convert R to
-    // Result without considering explicit constructors, thus resolving the
-    // ambiguity. value_ is then initialized using its copy constructor.
-    explicit Impl(const std::shared_ptr<R>& value)
-        : value_before_cast_(*value),
-          value_(ImplicitCast_<Result>(value_before_cast_)) {}
-
-    Result Perform(const ArgumentTuple&) override { return value_; }
-
-   private:
-    GTEST_COMPILE_ASSERT_(!std::is_reference<Result>::value,
-                          Result_cannot_be_a_reference_type);
-    // We save the value before casting just in case it is being cast to a
-    // wrapper type.
-    R value_before_cast_;
-    Result value_;
-
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
-  };
-
-  // Partially specialize for ByMoveWrapper. This version of ReturnAction will
-  // move its contents instead.
-  template <typename R_, typename F>
-  class Impl<ByMoveWrapper<R_>, F> : public ActionInterface<F> {
-   public:
-    typedef typename Function<F>::Result Result;
-    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
-    explicit Impl(const std::shared_ptr<R>& wrapper)
-        : performed_(false), wrapper_(wrapper) {}
-
-    Result Perform(const ArgumentTuple&) override {
-      GTEST_CHECK_(!performed_)
-          << "A ByMove() action should only be performed once.";
-      performed_ = true;
-      return std::move(wrapper_->payload);
-    }
-
-   private:
-    bool performed_;
-    const std::shared_ptr<R> wrapper_;
-  };
-
-  const std::shared_ptr<R> value_;
-};
-
-// Implements the ReturnNull() action.
-class ReturnNullAction {
- public:
-  // Allows ReturnNull() to be used in any pointer-returning function. In C++11
-  // this is enforced by returning nullptr, and in non-C++11 by asserting a
-  // pointer type on compile time.
-  template <typename Result, typename ArgumentTuple>
-  static Result Perform(const ArgumentTuple&) {
-    return nullptr;
-  }
-};
-
-// Implements the Return() action.
-class ReturnVoidAction {
- public:
-  // Allows Return() to be used in any void-returning function.
-  template <typename Result, typename ArgumentTuple>
-  static void Perform(const ArgumentTuple&) {
-    static_assert(std::is_void<Result>::value, "Result should be void.");
-  }
-};
-
-// Implements the polymorphic ReturnRef(x) action, which can be used
-// in any function that returns a reference to the type of x,
-// regardless of the argument types.
-template <typename T>
-class ReturnRefAction {
- public:
-  // Constructs a ReturnRefAction object from the reference to be returned.
-  explicit ReturnRefAction(T& ref) : ref_(ref) {}  // NOLINT
-
-  // This template type conversion operator allows ReturnRef(x) to be
-  // used in ANY function that returns a reference to x's type.
-  template <typename F>
-  operator Action<F>() const {
-    typedef typename Function<F>::Result Result;
-    // Asserts that the function return type is a reference.  This
-    // catches the user error of using ReturnRef(x) when Return(x)
-    // should be used, and generates some helpful error message.
-    GTEST_COMPILE_ASSERT_(std::is_reference<Result>::value,
-                          use_Return_instead_of_ReturnRef_to_return_a_value);
-    return Action<F>(new Impl<F>(ref_));
-  }
-
- private:
-  // Implements the ReturnRef(x) action for a particular function type F.
-  template <typename F>
-  class Impl : public ActionInterface<F> {
-   public:
-    typedef typename Function<F>::Result Result;
-    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
-    explicit Impl(T& ref) : ref_(ref) {}  // NOLINT
-
-    Result Perform(const ArgumentTuple&) override { return ref_; }
-
-   private:
-    T& ref_;
-  };
-
-  T& ref_;
-};
-
-// Implements the polymorphic ReturnRefOfCopy(x) action, which can be
-// used in any function that returns a reference to the type of x,
-// regardless of the argument types.
-template <typename T>
-class ReturnRefOfCopyAction {
- public:
-  // Constructs a ReturnRefOfCopyAction object from the reference to
-  // be returned.
-  explicit ReturnRefOfCopyAction(const T& value) : value_(value) {}  // NOLINT
-
-  // This template type conversion operator allows ReturnRefOfCopy(x) to be
-  // used in ANY function that returns a reference to x's type.
-  template <typename F>
-  operator Action<F>() const {
-    typedef typename Function<F>::Result Result;
-    // Asserts that the function return type is a reference.  This
-    // catches the user error of using ReturnRefOfCopy(x) when Return(x)
-    // should be used, and generates some helpful error message.
-    GTEST_COMPILE_ASSERT_(
-        std::is_reference<Result>::value,
-        use_Return_instead_of_ReturnRefOfCopy_to_return_a_value);
-    return Action<F>(new Impl<F>(value_));
-  }
-
- private:
-  // Implements the ReturnRefOfCopy(x) action for a particular function type F.
-  template <typename F>
-  class Impl : public ActionInterface<F> {
-   public:
-    typedef typename Function<F>::Result Result;
-    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
-    explicit Impl(const T& value) : value_(value) {}  // NOLINT
-
-    Result Perform(const ArgumentTuple&) override { return value_; }
-
-   private:
-    T value_;
-  };
-
-  const T value_;
-};
-
-// Implements the polymorphic ReturnRoundRobin(v) action, which can be
-// used in any function that returns the element_type of v.
-template <typename T>
-class ReturnRoundRobinAction {
- public:
-  explicit ReturnRoundRobinAction(std::vector<T> values) {
-    GTEST_CHECK_(!values.empty())
-        << "ReturnRoundRobin requires at least one element.";
-    state_->values = std::move(values);
-  }
-
-  template <typename... Args>
-  T operator()(Args&&...) const {
-     return state_->Next();
-  }
-
- private:
-  struct State {
-    T Next() {
-      T ret_val = values[i++];
-      if (i == values.size()) i = 0;
-      return ret_val;
-    }
-
-    std::vector<T> values;
-    size_t i = 0;
-  };
-  std::shared_ptr<State> state_ = std::make_shared<State>();
-};
-
-// Implements the polymorphic DoDefault() action.
-class DoDefaultAction {
- public:
-  // This template type conversion operator allows DoDefault() to be
-  // used in any function.
-  template <typename F>
-  operator Action<F>() const { return Action<F>(); }  // NOLINT
-};
-
-// Implements the Assign action to set a given pointer referent to a
-// particular value.
-template <typename T1, typename T2>
-class AssignAction {
- public:
-  AssignAction(T1* ptr, T2 value) : ptr_(ptr), value_(value) {}
-
-  template <typename Result, typename ArgumentTuple>
-  void Perform(const ArgumentTuple& /* args */) const {
-    *ptr_ = value_;
-  }
-
- private:
-  T1* const ptr_;
-  const T2 value_;
-};
-
-#if !GTEST_OS_WINDOWS_MOBILE
-
-// Implements the SetErrnoAndReturn action to simulate return from
-// various system calls and libc functions.
-template <typename T>
-class SetErrnoAndReturnAction {
- public:
-  SetErrnoAndReturnAction(int errno_value, T result)
-      : errno_(errno_value),
-        result_(result) {}
-  template <typename Result, typename ArgumentTuple>
-  Result Perform(const ArgumentTuple& /* args */) const {
-    errno = errno_;
-    return result_;
-  }
-
- private:
-  const int errno_;
-  const T result_;
-};
-
-#endif  // !GTEST_OS_WINDOWS_MOBILE
-
-// Implements the SetArgumentPointee<N>(x) action for any function
-// whose N-th argument (0-based) is a pointer to x's type.
-template <size_t N, typename A, typename = void>
-struct SetArgumentPointeeAction {
-  A value;
-
-  template <typename... Args>
-  void operator()(const Args&... args) const {
-    *::std::get<N>(std::tie(args...)) = value;
-  }
-};
-
-// Implements the Invoke(object_ptr, &Class::Method) action.
-template <class Class, typename MethodPtr>
-struct InvokeMethodAction {
-  Class* const obj_ptr;
-  const MethodPtr method_ptr;
-
-  template <typename... Args>
-  auto operator()(Args&&... args) const
-      -> decltype((obj_ptr->*method_ptr)(std::forward<Args>(args)...)) {
-    return (obj_ptr->*method_ptr)(std::forward<Args>(args)...);
-  }
-};
-
-// Implements the InvokeWithoutArgs(f) action.  The template argument
-// FunctionImpl is the implementation type of f, which can be either a
-// function pointer or a functor.  InvokeWithoutArgs(f) can be used as an
-// Action<F> as long as f's type is compatible with F.
-template <typename FunctionImpl>
-struct InvokeWithoutArgsAction {
-  FunctionImpl function_impl;
-
-  // Allows InvokeWithoutArgs(f) to be used as any action whose type is
-  // compatible with f.
-  template <typename... Args>
-  auto operator()(const Args&...) -> decltype(function_impl()) {
-    return function_impl();
-  }
-};
-
-// Implements the InvokeWithoutArgs(object_ptr, &Class::Method) action.
-template <class Class, typename MethodPtr>
-struct InvokeMethodWithoutArgsAction {
-  Class* const obj_ptr;
-  const MethodPtr method_ptr;
-
-  using ReturnType =
-      decltype((std::declval<Class*>()->*std::declval<MethodPtr>())());
-
-  template <typename... Args>
-  ReturnType operator()(const Args&...) const {
-    return (obj_ptr->*method_ptr)();
-  }
-};
-
-// Implements the IgnoreResult(action) action.
-template <typename A>
-class IgnoreResultAction {
- public:
-  explicit IgnoreResultAction(const A& action) : action_(action) {}
-
-  template <typename F>
-  operator Action<F>() const {
-    // Assert statement belongs here because this is the best place to verify
-    // conditions on F. It produces the clearest error messages
-    // in most compilers.
-    // Impl really belongs in this scope as a local class but can't
-    // because MSVC produces duplicate symbols in different translation units
-    // in this case. Until MS fixes that bug we put Impl into the class scope
-    // and put the typedef both here (for use in assert statement) and
-    // in the Impl class. But both definitions must be the same.
-    typedef typename internal::Function<F>::Result Result;
-
-    // Asserts at compile time that F returns void.
-    static_assert(std::is_void<Result>::value, "Result type should be void.");
-
-    return Action<F>(new Impl<F>(action_));
-  }
-
- private:
-  template <typename F>
-  class Impl : public ActionInterface<F> {
-   public:
-    typedef typename internal::Function<F>::Result Result;
-    typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
-    explicit Impl(const A& action) : action_(action) {}
-
-    void Perform(const ArgumentTuple& args) override {
-      // Performs the action and ignores its result.
-      action_.Perform(args);
-    }
-
-   private:
-    // Type OriginalFunction is the same as F except that its return
-    // type is IgnoredValue.
-    typedef typename internal::Function<F>::MakeResultIgnoredValue
-        OriginalFunction;
-
-    const Action<OriginalFunction> action_;
-  };
-
-  const A action_;
-};
-
-template <typename InnerAction, size_t... I>
-struct WithArgsAction {
-  InnerAction action;
-
-  // The inner action could be anything convertible to Action<X>.
-  // We use the conversion operator to detect the signature of the inner Action.
-  template <typename R, typename... Args>
-  operator Action<R(Args...)>() const {  // NOLINT
-    using TupleType = std::tuple<Args...>;
-    Action<R(typename std::tuple_element<I, TupleType>::type...)>
-        converted(action);
-
-    return [converted](Args... args) -> R {
-      return converted.Perform(std::forward_as_tuple(
-        std::get<I>(std::forward_as_tuple(std::forward<Args>(args)...))...));
-    };
-  }
-};
-
-template <typename... Actions>
-struct DoAllAction {
- private:
-  template <typename T>
-  using NonFinalType =
-      typename std::conditional<std::is_scalar<T>::value, T, const T&>::type;
-
-  template <typename ActionT, size_t... I>
-  std::vector<ActionT> Convert(IndexSequence<I...>) const {
-    return {ActionT(std::get<I>(actions))...};
-  }
-
- public:
-  std::tuple<Actions...> actions;
-
-  template <typename R, typename... Args>
-  operator Action<R(Args...)>() const {  // NOLINT
-    struct Op {
-      std::vector<Action<void(NonFinalType<Args>...)>> converted;
-      Action<R(Args...)> last;
-      R operator()(Args... args) const {
-        auto tuple_args = std::forward_as_tuple(std::forward<Args>(args)...);
-        for (auto& a : converted) {
-          a.Perform(tuple_args);
-        }
-        return last.Perform(std::move(tuple_args));
-      }
-    };
-    return Op{Convert<Action<void(NonFinalType<Args>...)>>(
-                  MakeIndexSequence<sizeof...(Actions) - 1>()),
-              std::get<sizeof...(Actions) - 1>(actions)};
-  }
-};
-
-template <typename T, typename... Params>
-struct ReturnNewAction {
-  T* operator()() const {
-    return internal::Apply(
-        [](const Params&... unpacked_params) {
-          return new T(unpacked_params...);
-        },
-        params);
-  }
-  std::tuple<Params...> params;
-};
-
-template <size_t k>
-struct ReturnArgAction {
-  template <typename... Args>
-  auto operator()(const Args&... args) const ->
-      typename std::tuple_element<k, std::tuple<Args...>>::type {
-    return std::get<k>(std::tie(args...));
-  }
-};
-
-template <size_t k, typename Ptr>
-struct SaveArgAction {
-  Ptr pointer;
-
-  template <typename... Args>
-  void operator()(const Args&... args) const {
-    *pointer = std::get<k>(std::tie(args...));
-  }
-};
-
-template <size_t k, typename Ptr>
-struct SaveArgPointeeAction {
-  Ptr pointer;
-
-  template <typename... Args>
-  void operator()(const Args&... args) const {
-    *pointer = *std::get<k>(std::tie(args...));
-  }
-};
-
-template <size_t k, typename T>
-struct SetArgRefereeAction {
-  T value;
-
-  template <typename... Args>
-  void operator()(Args&&... args) const {
-    using argk_type =
-        typename ::std::tuple_element<k, std::tuple<Args...>>::type;
-    static_assert(std::is_lvalue_reference<argk_type>::value,
-                  "Argument must be a reference type.");
-    std::get<k>(std::tie(args...)) = value;
-  }
-};
-
-template <size_t k, typename I1, typename I2>
-struct SetArrayArgumentAction {
-  I1 first;
-  I2 last;
-
-  template <typename... Args>
-  void operator()(const Args&... args) const {
-    auto value = std::get<k>(std::tie(args...));
-    for (auto it = first; it != last; ++it, (void)++value) {
-      *value = *it;
-    }
-  }
-};
-
-template <size_t k>
-struct DeleteArgAction {
-  template <typename... Args>
-  void operator()(const Args&... args) const {
-    delete std::get<k>(std::tie(args...));
-  }
-};
-
-template <typename Ptr>
-struct ReturnPointeeAction {
-  Ptr pointer;
-  template <typename... Args>
-  auto operator()(const Args&...) const -> decltype(*pointer) {
-    return *pointer;
-  }
-};
-
-#if GTEST_HAS_EXCEPTIONS
-template <typename T>
-struct ThrowAction {
-  T exception;
-  // We use a conversion operator to adapt to any return type.
-  template <typename R, typename... Args>
-  operator Action<R(Args...)>() const {  // NOLINT
-    T copy = exception;
-    return [copy](Args...) -> R { throw copy; };
-  }
-};
-#endif  // GTEST_HAS_EXCEPTIONS
-
-}  // namespace internal
-
-// An Unused object can be implicitly constructed from ANY value.
-// This is handy when defining actions that ignore some or all of the
-// mock function arguments.  For example, given
-//
-//   MOCK_METHOD3(Foo, double(const string& label, double x, double y));
-//   MOCK_METHOD3(Bar, double(int index, double x, double y));
-//
-// instead of
-//
-//   double DistanceToOriginWithLabel(const string& label, double x, double y) {
-//     return sqrt(x*x + y*y);
-//   }
-//   double DistanceToOriginWithIndex(int index, double x, double y) {
-//     return sqrt(x*x + y*y);
-//   }
-//   ...
-//   EXPECT_CALL(mock, Foo("abc", _, _))
-//       .WillOnce(Invoke(DistanceToOriginWithLabel));
-//   EXPECT_CALL(mock, Bar(5, _, _))
-//       .WillOnce(Invoke(DistanceToOriginWithIndex));
-//
-// you could write
-//
-//   // We can declare any uninteresting argument as Unused.
-//   double DistanceToOrigin(Unused, double x, double y) {
-//     return sqrt(x*x + y*y);
-//   }
-//   ...
-//   EXPECT_CALL(mock, Foo("abc", _, _)).WillOnce(Invoke(DistanceToOrigin));
-//   EXPECT_CALL(mock, Bar(5, _, _)).WillOnce(Invoke(DistanceToOrigin));
-typedef internal::IgnoredValue Unused;
-
-// Creates an action that does actions a1, a2, ..., sequentially in
-// each invocation. All but the last action will have a readonly view of the
-// arguments.
-template <typename... Action>
-internal::DoAllAction<typename std::decay<Action>::type...> DoAll(
-    Action&&... action) {
-  return {std::forward_as_tuple(std::forward<Action>(action)...)};
-}
-
-// WithArg<k>(an_action) creates an action that passes the k-th
-// (0-based) argument of the mock function to an_action and performs
-// it.  It adapts an action accepting one argument to one that accepts
-// multiple arguments.  For convenience, we also provide
-// WithArgs<k>(an_action) (defined below) as a synonym.
-template <size_t k, typename InnerAction>
-internal::WithArgsAction<typename std::decay<InnerAction>::type, k>
-WithArg(InnerAction&& action) {
-  return {std::forward<InnerAction>(action)};
-}
-
-// WithArgs<N1, N2, ..., Nk>(an_action) creates an action that passes
-// the selected arguments of the mock function to an_action and
-// performs it.  It serves as an adaptor between actions with
-// different argument lists.
-template <size_t k, size_t... ks, typename InnerAction>
-internal::WithArgsAction<typename std::decay<InnerAction>::type, k, ks...>
-WithArgs(InnerAction&& action) {
-  return {std::forward<InnerAction>(action)};
-}
-
-// WithoutArgs(inner_action) can be used in a mock function with a
-// non-empty argument list to perform inner_action, which takes no
-// argument.  In other words, it adapts an action accepting no
-// argument to one that accepts (and ignores) arguments.
-template <typename InnerAction>
-internal::WithArgsAction<typename std::decay<InnerAction>::type>
-WithoutArgs(InnerAction&& action) {
-  return {std::forward<InnerAction>(action)};
-}
-
-// Creates an action that returns 'value'.  'value' is passed by value
-// instead of const reference - otherwise Return("string literal")
-// will trigger a compiler error about using array as initializer.
-template <typename R>
-internal::ReturnAction<R> Return(R value) {
-  return internal::ReturnAction<R>(std::move(value));
-}
-
-// Creates an action that returns NULL.
-inline PolymorphicAction<internal::ReturnNullAction> ReturnNull() {
-  return MakePolymorphicAction(internal::ReturnNullAction());
-}
-
-// Creates an action that returns from a void function.
-inline PolymorphicAction<internal::ReturnVoidAction> Return() {
-  return MakePolymorphicAction(internal::ReturnVoidAction());
-}
-
-// Creates an action that returns the reference to a variable.
-template <typename R>
-inline internal::ReturnRefAction<R> ReturnRef(R& x) {  // NOLINT
-  return internal::ReturnRefAction<R>(x);
-}
-
-// Prevent using ReturnRef on reference to temporary.
-template <typename R, R* = nullptr>
-internal::ReturnRefAction<R> ReturnRef(R&&) = delete;
-
-// Creates an action that returns the reference to a copy of the
-// argument.  The copy is created when the action is constructed and
-// lives as long as the action.
-template <typename R>
-inline internal::ReturnRefOfCopyAction<R> ReturnRefOfCopy(const R& x) {
-  return internal::ReturnRefOfCopyAction<R>(x);
-}
-
-// Modifies the parent action (a Return() action) to perform a move of the
-// argument instead of a copy.
-// Return(ByMove()) actions can only be executed once and will assert this
-// invariant.
-template <typename R>
-internal::ByMoveWrapper<R> ByMove(R x) {
-  return internal::ByMoveWrapper<R>(std::move(x));
-}
-
-// Creates an action that returns an element of `vals`. Calling this action will
-// repeatedly return the next value from `vals` until it reaches the end and
-// will restart from the beginning.
-template <typename T>
-internal::ReturnRoundRobinAction<T> ReturnRoundRobin(std::vector<T> vals) {
-  return internal::ReturnRoundRobinAction<T>(std::move(vals));
-}
-
-// Creates an action that returns an element of `vals`. Calling this action will
-// repeatedly return the next value from `vals` until it reaches the end and
-// will restart from the beginning.
-template <typename T>
-internal::ReturnRoundRobinAction<T> ReturnRoundRobin(
-    std::initializer_list<T> vals) {
-  return internal::ReturnRoundRobinAction<T>(std::vector<T>(vals));
-}
-
-// Creates an action that does the default action for the give mock function.
-inline internal::DoDefaultAction DoDefault() {
-  return internal::DoDefaultAction();
-}
-
-// Creates an action that sets the variable pointed by the N-th
-// (0-based) function argument to 'value'.
-template <size_t N, typename T>
-internal::SetArgumentPointeeAction<N, T> SetArgPointee(T value) {
-  return {std::move(value)};
-}
-
-// The following version is DEPRECATED.
-template <size_t N, typename T>
-internal::SetArgumentPointeeAction<N, T> SetArgumentPointee(T value) {
-  return {std::move(value)};
-}
-
-// Creates an action that sets a pointer referent to a given value.
-template <typename T1, typename T2>
-PolymorphicAction<internal::AssignAction<T1, T2> > Assign(T1* ptr, T2 val) {
-  return MakePolymorphicAction(internal::AssignAction<T1, T2>(ptr, val));
-}
-
-#if !GTEST_OS_WINDOWS_MOBILE
-
-// Creates an action that sets errno and returns the appropriate error.
-template <typename T>
-PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
-SetErrnoAndReturn(int errval, T result) {
-  return MakePolymorphicAction(
-      internal::SetErrnoAndReturnAction<T>(errval, result));
-}
-
-#endif  // !GTEST_OS_WINDOWS_MOBILE
-
-// Various overloads for Invoke().
-
-// Legacy function.
-// Actions can now be implicitly constructed from callables. No need to create
-// wrapper objects.
-// This function exists for backwards compatibility.
-template <typename FunctionImpl>
-typename std::decay<FunctionImpl>::type Invoke(FunctionImpl&& function_impl) {
-  return std::forward<FunctionImpl>(function_impl);
-}
-
-// Creates an action that invokes the given method on the given object
-// with the mock function's arguments.
-template <class Class, typename MethodPtr>
-internal::InvokeMethodAction<Class, MethodPtr> Invoke(Class* obj_ptr,
-                                                      MethodPtr method_ptr) {
-  return {obj_ptr, method_ptr};
-}
-
-// Creates an action that invokes 'function_impl' with no argument.
-template <typename FunctionImpl>
-internal::InvokeWithoutArgsAction<typename std::decay<FunctionImpl>::type>
-InvokeWithoutArgs(FunctionImpl function_impl) {
-  return {std::move(function_impl)};
-}
-
-// Creates an action that invokes the given method on the given object
-// with no argument.
-template <class Class, typename MethodPtr>
-internal::InvokeMethodWithoutArgsAction<Class, MethodPtr> InvokeWithoutArgs(
-    Class* obj_ptr, MethodPtr method_ptr) {
-  return {obj_ptr, method_ptr};
-}
-
-// Creates an action that performs an_action and throws away its
-// result.  In other words, it changes the return type of an_action to
-// void.  an_action MUST NOT return void, or the code won't compile.
-template <typename A>
-inline internal::IgnoreResultAction<A> IgnoreResult(const A& an_action) {
-  return internal::IgnoreResultAction<A>(an_action);
-}
-
-// Creates a reference wrapper for the given L-value.  If necessary,
-// you can explicitly specify the type of the reference.  For example,
-// suppose 'derived' is an object of type Derived, ByRef(derived)
-// would wrap a Derived&.  If you want to wrap a const Base& instead,
-// where Base is a base class of Derived, just write:
-//
-//   ByRef<const Base>(derived)
-//
-// N.B. ByRef is redundant with std::ref, std::cref and std::reference_wrapper.
-// However, it may still be used for consistency with ByMove().
-template <typename T>
-inline ::std::reference_wrapper<T> ByRef(T& l_value) {  // NOLINT
-  return ::std::reference_wrapper<T>(l_value);
-}
-
-// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
-// instance of type T, constructed on the heap with constructor arguments
-// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
-template <typename T, typename... Params>
-internal::ReturnNewAction<T, typename std::decay<Params>::type...> ReturnNew(
-    Params&&... params) {
-  return {std::forward_as_tuple(std::forward<Params>(params)...)};
-}
-
-// Action ReturnArg<k>() returns the k-th argument of the mock function.
-template <size_t k>
-internal::ReturnArgAction<k> ReturnArg() {
-  return {};
-}
-
-// Action SaveArg<k>(pointer) saves the k-th (0-based) argument of the
-// mock function to *pointer.
-template <size_t k, typename Ptr>
-internal::SaveArgAction<k, Ptr> SaveArg(Ptr pointer) {
-  return {pointer};
-}
-
-// Action SaveArgPointee<k>(pointer) saves the value pointed to
-// by the k-th (0-based) argument of the mock function to *pointer.
-template <size_t k, typename Ptr>
-internal::SaveArgPointeeAction<k, Ptr> SaveArgPointee(Ptr pointer) {
-  return {pointer};
-}
-
-// Action SetArgReferee<k>(value) assigns 'value' to the variable
-// referenced by the k-th (0-based) argument of the mock function.
-template <size_t k, typename T>
-internal::SetArgRefereeAction<k, typename std::decay<T>::type> SetArgReferee(
-    T&& value) {
-  return {std::forward<T>(value)};
-}
-
-// Action SetArrayArgument<k>(first, last) copies the elements in
-// source range [first, last) to the array pointed to by the k-th
-// (0-based) argument, which can be either a pointer or an
-// iterator. The action does not take ownership of the elements in the
-// source range.
-template <size_t k, typename I1, typename I2>
-internal::SetArrayArgumentAction<k, I1, I2> SetArrayArgument(I1 first,
-                                                             I2 last) {
-  return {first, last};
-}
-
-// Action DeleteArg<k>() deletes the k-th (0-based) argument of the mock
-// function.
-template <size_t k>
-internal::DeleteArgAction<k> DeleteArg() {
-  return {};
-}
-
-// This action returns the value pointed to by 'pointer'.
-template <typename Ptr>
-internal::ReturnPointeeAction<Ptr> ReturnPointee(Ptr pointer) {
-  return {pointer};
-}
-
-// Action Throw(exception) can be used in a mock function of any type
-// to throw the given exception.  Any copyable value can be thrown.
-#if GTEST_HAS_EXCEPTIONS
-template <typename T>
-internal::ThrowAction<typename std::decay<T>::type> Throw(T&& exception) {
-  return {std::forward<T>(exception)};
-}
-#endif  // GTEST_HAS_EXCEPTIONS
-
-namespace internal {
-
-// A macro from the ACTION* family (defined later in gmock-generated-actions.h)
-// defines an action that can be used in a mock function.  Typically,
-// these actions only care about a subset of the arguments of the mock
-// function.  For example, if such an action only uses the second
-// argument, it can be used in any mock function that takes >= 2
-// arguments where the type of the second argument is compatible.
-//
-// Therefore, the action implementation must be prepared to take more
-// arguments than it needs.  The ExcessiveArg type is used to
-// represent those excessive arguments.  In order to keep the compiler
-// error messages tractable, we define it in the testing namespace
-// instead of testing::internal.  However, this is an INTERNAL TYPE
-// and subject to change without notice, so a user MUST NOT USE THIS
-// TYPE DIRECTLY.
-struct ExcessiveArg {};
-
-// Builds an implementation of an Action<> for some particular signature, using
-// a class defined by an ACTION* macro.
-template <typename F, typename Impl> struct ActionImpl;
-
-template <typename Impl>
-struct ImplBase {
-  struct Holder {
-    // Allows each copy of the Action<> to get to the Impl.
-    explicit operator const Impl&() const { return *ptr; }
-    std::shared_ptr<Impl> ptr;
-  };
-  using type = typename std::conditional<std::is_constructible<Impl>::value,
-                                         Impl, Holder>::type;
-};
-
-template <typename R, typename... Args, typename Impl>
-struct ActionImpl<R(Args...), Impl> : ImplBase<Impl>::type {
-  using Base = typename ImplBase<Impl>::type;
-  using function_type = R(Args...);
-  using args_type = std::tuple<Args...>;
-
-  ActionImpl() = default;  // Only defined if appropriate for Base.
-  explicit ActionImpl(std::shared_ptr<Impl> impl) : Base{std::move(impl)} { }
-
-  R operator()(Args&&... arg) const {
-    static constexpr size_t kMaxArgs =
-        sizeof...(Args) <= 10 ? sizeof...(Args) : 10;
-    return Apply(MakeIndexSequence<kMaxArgs>{},
-                 MakeIndexSequence<10 - kMaxArgs>{},
-                 args_type{std::forward<Args>(arg)...});
-  }
-
-  template <std::size_t... arg_id, std::size_t... excess_id>
-  R Apply(IndexSequence<arg_id...>, IndexSequence<excess_id...>,
-          const args_type& args) const {
-    // Impl need not be specific to the signature of action being implemented;
-    // only the implementing function body needs to have all of the specific
-    // types instantiated.  Up to 10 of the args that are provided by the
-    // args_type get passed, followed by a dummy of unspecified type for the
-    // remainder up to 10 explicit args.
-    static constexpr ExcessiveArg kExcessArg{};
-    return static_cast<const Impl&>(*this).template gmock_PerformImpl<
-        /*function_type=*/function_type, /*return_type=*/R,
-        /*args_type=*/args_type,
-        /*argN_type=*/typename std::tuple_element<arg_id, args_type>::type...>(
-        /*args=*/args, std::get<arg_id>(args)...,
-        ((void)excess_id, kExcessArg)...);
-  }
-};
-
-// Stores a default-constructed Impl as part of the Action<>'s
-// std::function<>. The Impl should be trivial to copy.
-template <typename F, typename Impl>
-::testing::Action<F> MakeAction() {
-  return ::testing::Action<F>(ActionImpl<F, Impl>());
-}
-
-// Stores just the one given instance of Impl.
-template <typename F, typename Impl>
-::testing::Action<F> MakeAction(std::shared_ptr<Impl> impl) {
-  return ::testing::Action<F>(ActionImpl<F, Impl>(std::move(impl)));
-}
-
-#define GMOCK_INTERNAL_ARG_UNUSED(i, data, el) \
-  , const arg##i##_type& arg##i GTEST_ATTRIBUTE_UNUSED_
-#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_           \
-  const args_type& args GTEST_ATTRIBUTE_UNUSED_ GMOCK_PP_REPEAT( \
-      GMOCK_INTERNAL_ARG_UNUSED, , 10)
-
-#define GMOCK_INTERNAL_ARG(i, data, el) , const arg##i##_type& arg##i
-#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_ \
-  const args_type& args GMOCK_PP_REPEAT(GMOCK_INTERNAL_ARG, , 10)
-
-#define GMOCK_INTERNAL_TEMPLATE_ARG(i, data, el) , typename arg##i##_type
-#define GMOCK_ACTION_TEMPLATE_ARGS_NAMES_ \
-  GMOCK_PP_TAIL(GMOCK_PP_REPEAT(GMOCK_INTERNAL_TEMPLATE_ARG, , 10))
-
-#define GMOCK_INTERNAL_TYPENAME_PARAM(i, data, param) , typename param##_type
-#define GMOCK_ACTION_TYPENAME_PARAMS_(params) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_TYPENAME_PARAM, , params))
-
-#define GMOCK_INTERNAL_TYPE_PARAM(i, data, param) , param##_type
-#define GMOCK_ACTION_TYPE_PARAMS_(params) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_TYPE_PARAM, , params))
-
-#define GMOCK_INTERNAL_TYPE_GVALUE_PARAM(i, data, param) \
-  , param##_type gmock_p##i
-#define GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_TYPE_GVALUE_PARAM, , params))
-
-#define GMOCK_INTERNAL_GVALUE_PARAM(i, data, param) \
-  , std::forward<param##_type>(gmock_p##i)
-#define GMOCK_ACTION_GVALUE_PARAMS_(params) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GVALUE_PARAM, , params))
-
-#define GMOCK_INTERNAL_INIT_PARAM(i, data, param) \
-  , param(::std::forward<param##_type>(gmock_p##i))
-#define GMOCK_ACTION_INIT_PARAMS_(params) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_INIT_PARAM, , params))
-
-#define GMOCK_INTERNAL_FIELD_PARAM(i, data, param) param##_type param;
-#define GMOCK_ACTION_FIELD_PARAMS_(params) \
-  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_FIELD_PARAM, , params)
-
-#define GMOCK_INTERNAL_ACTION(name, full_name, params)                        \
-  template <GMOCK_ACTION_TYPENAME_PARAMS_(params)>                            \
-  class full_name {                                                           \
-   public:                                                                    \
-    explicit full_name(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params))              \
-        : impl_(std::make_shared<gmock_Impl>(                                 \
-                GMOCK_ACTION_GVALUE_PARAMS_(params))) { }                     \
-    full_name(const full_name&) = default;                                    \
-    full_name(full_name&&) noexcept = default;                                \
-    template <typename F>                                                     \
-    operator ::testing::Action<F>() const {                                   \
-      return ::testing::internal::MakeAction<F>(impl_);                       \
-    }                                                                         \
-   private:                                                                   \
-    class gmock_Impl {                                                        \
-     public:                                                                  \
-      explicit gmock_Impl(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params))           \
-          : GMOCK_ACTION_INIT_PARAMS_(params) {}                              \
-      template <typename function_type, typename return_type,                 \
-                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>        \
-      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const; \
-      GMOCK_ACTION_FIELD_PARAMS_(params)                                      \
-    };                                                                        \
-    std::shared_ptr<const gmock_Impl> impl_;                                  \
-  };                                                                          \
-  template <GMOCK_ACTION_TYPENAME_PARAMS_(params)>                            \
-  inline full_name<GMOCK_ACTION_TYPE_PARAMS_(params)> name(                   \
-      GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params)) {                             \
-    return full_name<GMOCK_ACTION_TYPE_PARAMS_(params)>(                      \
-        GMOCK_ACTION_GVALUE_PARAMS_(params));                                 \
-  }                                                                           \
-  template <GMOCK_ACTION_TYPENAME_PARAMS_(params)>                            \
-  template <typename function_type, typename return_type, typename args_type, \
-            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                \
-  return_type full_name<GMOCK_ACTION_TYPE_PARAMS_(params)>::gmock_Impl::      \
-  gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
-
-}  // namespace internal
-
-// Similar to GMOCK_INTERNAL_ACTION, but no bound parameters are stored.
-#define ACTION(name)                                                          \
-  class name##Action {                                                        \
-   public:                                                                    \
-   explicit name##Action() noexcept {}                                        \
-   name##Action(const name##Action&) noexcept {}                              \
-    template <typename F>                                                     \
-    operator ::testing::Action<F>() const {                                   \
-      return ::testing::internal::MakeAction<F, gmock_Impl>();                \
-    }                                                                         \
-   private:                                                                   \
-    class gmock_Impl {                                                        \
-     public:                                                                  \
-      template <typename function_type, typename return_type,                 \
-                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>        \
-      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const; \
-    };                                                                        \
-  };                                                                          \
-  inline name##Action name() GTEST_MUST_USE_RESULT_;                          \
-  inline name##Action name() { return name##Action(); }                       \
-  template <typename function_type, typename return_type, typename args_type, \
-            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                \
-  return_type name##Action::gmock_Impl::gmock_PerformImpl(                    \
-      GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
-
-#define ACTION_P(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP, (__VA_ARGS__))
-
-#define ACTION_P2(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP2, (__VA_ARGS__))
-
-#define ACTION_P3(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP3, (__VA_ARGS__))
-
-#define ACTION_P4(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP4, (__VA_ARGS__))
-
-#define ACTION_P5(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP5, (__VA_ARGS__))
-
-#define ACTION_P6(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP6, (__VA_ARGS__))
-
-#define ACTION_P7(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP7, (__VA_ARGS__))
-
-#define ACTION_P8(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP8, (__VA_ARGS__))
-
-#define ACTION_P9(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP9, (__VA_ARGS__))
-
-#define ACTION_P10(name, ...) \
-  GMOCK_INTERNAL_ACTION(name, name##ActionP10, (__VA_ARGS__))
-
-}  // namespace testing
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some commonly used cardinalities.  More
-// cardinalities can be defined by the user implementing the
-// CardinalityInterface interface if necessary.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
-
-#include <limits.h>
-#include <memory>
-#include <ostream>  // NOLINT
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// To implement a cardinality Foo, define:
-//   1. a class FooCardinality that implements the
-//      CardinalityInterface interface, and
-//   2. a factory function that creates a Cardinality object from a
-//      const FooCardinality*.
-//
-// The two-level delegation design follows that of Matcher, providing
-// consistency for extension developers.  It also eases ownership
-// management as Cardinality objects can now be copied like plain values.
-
-// The implementation of a cardinality.
-class CardinalityInterface {
- public:
-  virtual ~CardinalityInterface() {}
-
-  // Conservative estimate on the lower/upper bound of the number of
-  // calls allowed.
-  virtual int ConservativeLowerBound() const { return 0; }
-  virtual int ConservativeUpperBound() const { return INT_MAX; }
-
-  // Returns true if and only if call_count calls will satisfy this
-  // cardinality.
-  virtual bool IsSatisfiedByCallCount(int call_count) const = 0;
-
-  // Returns true if and only if call_count calls will saturate this
-  // cardinality.
-  virtual bool IsSaturatedByCallCount(int call_count) const = 0;
-
-  // Describes self to an ostream.
-  virtual void DescribeTo(::std::ostream* os) const = 0;
-};
-
-// A Cardinality is a copyable and IMMUTABLE (except by assignment)
-// object that specifies how many times a mock function is expected to
-// be called.  The implementation of Cardinality is just a std::shared_ptr
-// to const CardinalityInterface. Don't inherit from Cardinality!
-class GTEST_API_ Cardinality {
- public:
-  // Constructs a null cardinality.  Needed for storing Cardinality
-  // objects in STL containers.
-  Cardinality() {}
-
-  // Constructs a Cardinality from its implementation.
-  explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {}
-
-  // Conservative estimate on the lower/upper bound of the number of
-  // calls allowed.
-  int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); }
-  int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); }
-
-  // Returns true if and only if call_count calls will satisfy this
-  // cardinality.
-  bool IsSatisfiedByCallCount(int call_count) const {
-    return impl_->IsSatisfiedByCallCount(call_count);
-  }
-
-  // Returns true if and only if call_count calls will saturate this
-  // cardinality.
-  bool IsSaturatedByCallCount(int call_count) const {
-    return impl_->IsSaturatedByCallCount(call_count);
-  }
-
-  // Returns true if and only if call_count calls will over-saturate this
-  // cardinality, i.e. exceed the maximum number of allowed calls.
-  bool IsOverSaturatedByCallCount(int call_count) const {
-    return impl_->IsSaturatedByCallCount(call_count) &&
-        !impl_->IsSatisfiedByCallCount(call_count);
-  }
-
-  // Describes self to an ostream
-  void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
-
-  // Describes the given actual call count to an ostream.
-  static void DescribeActualCallCountTo(int actual_call_count,
-                                        ::std::ostream* os);
-
- private:
-  std::shared_ptr<const CardinalityInterface> impl_;
-};
-
-// Creates a cardinality that allows at least n calls.
-GTEST_API_ Cardinality AtLeast(int n);
-
-// Creates a cardinality that allows at most n calls.
-GTEST_API_ Cardinality AtMost(int n);
-
-// Creates a cardinality that allows any number of calls.
-GTEST_API_ Cardinality AnyNumber();
-
-// Creates a cardinality that allows between min and max calls.
-GTEST_API_ Cardinality Between(int min, int max);
-
-// Creates a cardinality that allows exactly n calls.
-GTEST_API_ Cardinality Exactly(int n);
-
-// Creates a cardinality from its implementation.
-inline Cardinality MakeCardinality(const CardinalityInterface* c) {
-  return Cardinality(c);
-}
-
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements MOCK_METHOD.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_  // NOLINT
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_  // NOLINT
-
-#include <type_traits>  // IWYU pragma: keep
-#include <utility>      // IWYU pragma: keep
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements the ON_CALL() and EXPECT_CALL() macros.
-//
-// A user can use the ON_CALL() macro to specify the default action of
-// a mock method.  The syntax is:
-//
-//   ON_CALL(mock_object, Method(argument-matchers))
-//       .With(multi-argument-matcher)
-//       .WillByDefault(action);
-//
-//  where the .With() clause is optional.
-//
-// A user can use the EXPECT_CALL() macro to specify an expectation on
-// a mock method.  The syntax is:
-//
-//   EXPECT_CALL(mock_object, Method(argument-matchers))
-//       .With(multi-argument-matchers)
-//       .Times(cardinality)
-//       .InSequence(sequences)
-//       .After(expectations)
-//       .WillOnce(action)
-//       .WillRepeatedly(action)
-//       .RetiresOnSaturation();
-//
-// where all clauses are optional, and .InSequence()/.After()/
-// .WillOnce() can appear any number of times.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
-
-#include <functional>
-#include <map>
-#include <memory>
-#include <set>
-#include <sstream>
-#include <string>
-#include <type_traits>
-#include <utility>
-#include <vector>
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// The MATCHER* family of macros can be used in a namespace scope to
-// define custom matchers easily.
-//
-// Basic Usage
-// ===========
-//
-// The syntax
-//
-//   MATCHER(name, description_string) { statements; }
-//
-// defines a matcher with the given name that executes the statements,
-// which must return a bool to indicate if the match succeeds.  Inside
-// the statements, you can refer to the value being matched by 'arg',
-// and refer to its type by 'arg_type'.
-//
-// The description string documents what the matcher does, and is used
-// to generate the failure message when the match fails.  Since a
-// MATCHER() is usually defined in a header file shared by multiple
-// C++ source files, we require the description to be a C-string
-// literal to avoid possible side effects.  It can be empty, in which
-// case we'll use the sequence of words in the matcher name as the
-// description.
-//
-// For example:
-//
-//   MATCHER(IsEven, "") { return (arg % 2) == 0; }
-//
-// allows you to write
-//
-//   // Expects mock_foo.Bar(n) to be called where n is even.
-//   EXPECT_CALL(mock_foo, Bar(IsEven()));
-//
-// or,
-//
-//   // Verifies that the value of some_expression is even.
-//   EXPECT_THAT(some_expression, IsEven());
-//
-// If the above assertion fails, it will print something like:
-//
-//   Value of: some_expression
-//   Expected: is even
-//     Actual: 7
-//
-// where the description "is even" is automatically calculated from the
-// matcher name IsEven.
-//
-// Argument Type
-// =============
-//
-// Note that the type of the value being matched (arg_type) is
-// determined by the context in which you use the matcher and is
-// supplied to you by the compiler, so you don't need to worry about
-// declaring it (nor can you).  This allows the matcher to be
-// polymorphic.  For example, IsEven() can be used to match any type
-// where the value of "(arg % 2) == 0" can be implicitly converted to
-// a bool.  In the "Bar(IsEven())" example above, if method Bar()
-// takes an int, 'arg_type' will be int; if it takes an unsigned long,
-// 'arg_type' will be unsigned long; and so on.
-//
-// Parameterizing Matchers
-// =======================
-//
-// Sometimes you'll want to parameterize the matcher.  For that you
-// can use another macro:
-//
-//   MATCHER_P(name, param_name, description_string) { statements; }
-//
-// For example:
-//
-//   MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; }
-//
-// will allow you to write:
-//
-//   EXPECT_THAT(Blah("a"), HasAbsoluteValue(n));
-//
-// which may lead to this message (assuming n is 10):
-//
-//   Value of: Blah("a")
-//   Expected: has absolute value 10
-//     Actual: -9
-//
-// Note that both the matcher description and its parameter are
-// printed, making the message human-friendly.
-//
-// In the matcher definition body, you can write 'foo_type' to
-// reference the type of a parameter named 'foo'.  For example, in the
-// body of MATCHER_P(HasAbsoluteValue, value) above, you can write
-// 'value_type' to refer to the type of 'value'.
-//
-// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P$n to
-// support multi-parameter matchers.
-//
-// Describing Parameterized Matchers
-// =================================
-//
-// The last argument to MATCHER*() is a string-typed expression.  The
-// expression can reference all of the matcher's parameters and a
-// special bool-typed variable named 'negation'.  When 'negation' is
-// false, the expression should evaluate to the matcher's description;
-// otherwise it should evaluate to the description of the negation of
-// the matcher.  For example,
-//
-//   using testing::PrintToString;
-//
-//   MATCHER_P2(InClosedRange, low, hi,
-//       std::string(negation ? "is not" : "is") + " in range [" +
-//       PrintToString(low) + ", " + PrintToString(hi) + "]") {
-//     return low <= arg && arg <= hi;
-//   }
-//   ...
-//   EXPECT_THAT(3, InClosedRange(4, 6));
-//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
-//
-// would generate two failures that contain the text:
-//
-//   Expected: is in range [4, 6]
-//   ...
-//   Expected: is not in range [2, 4]
-//
-// If you specify "" as the description, the failure message will
-// contain the sequence of words in the matcher name followed by the
-// parameter values printed as a tuple.  For example,
-//
-//   MATCHER_P2(InClosedRange, low, hi, "") { ... }
-//   ...
-//   EXPECT_THAT(3, InClosedRange(4, 6));
-//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
-//
-// would generate two failures that contain the text:
-//
-//   Expected: in closed range (4, 6)
-//   ...
-//   Expected: not (in closed range (2, 4))
-//
-// Types of Matcher Parameters
-// ===========================
-//
-// For the purpose of typing, you can view
-//
-//   MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... }
-//
-// as shorthand for
-//
-//   template <typename p1_type, ..., typename pk_type>
-//   FooMatcherPk<p1_type, ..., pk_type>
-//   Foo(p1_type p1, ..., pk_type pk) { ... }
-//
-// When you write Foo(v1, ..., vk), the compiler infers the types of
-// the parameters v1, ..., and vk for you.  If you are not happy with
-// the result of the type inference, you can specify the types by
-// explicitly instantiating the template, as in Foo<long, bool>(5,
-// false).  As said earlier, you don't get to (or need to) specify
-// 'arg_type' as that's determined by the context in which the matcher
-// is used.  You can assign the result of expression Foo(p1, ..., pk)
-// to a variable of type FooMatcherPk<p1_type, ..., pk_type>.  This
-// can be useful when composing matchers.
-//
-// While you can instantiate a matcher template with reference types,
-// passing the parameters by pointer usually makes your code more
-// readable.  If, however, you still want to pass a parameter by
-// reference, be aware that in the failure message generated by the
-// matcher you will see the value of the referenced object but not its
-// address.
-//
-// Explaining Match Results
-// ========================
-//
-// Sometimes the matcher description alone isn't enough to explain why
-// the match has failed or succeeded.  For example, when expecting a
-// long string, it can be very helpful to also print the diff between
-// the expected string and the actual one.  To achieve that, you can
-// optionally stream additional information to a special variable
-// named result_listener, whose type is a pointer to class
-// MatchResultListener:
-//
-//   MATCHER_P(EqualsLongString, str, "") {
-//     if (arg == str) return true;
-//
-//     *result_listener << "the difference: "
-///                     << DiffStrings(str, arg);
-//     return false;
-//   }
-//
-// Overloading Matchers
-// ====================
-//
-// You can overload matchers with different numbers of parameters:
-//
-//   MATCHER_P(Blah, a, description_string1) { ... }
-//   MATCHER_P2(Blah, a, b, description_string2) { ... }
-//
-// Caveats
-// =======
-//
-// When defining a new matcher, you should also consider implementing
-// MatcherInterface or using MakePolymorphicMatcher().  These
-// approaches require more work than the MATCHER* macros, but also
-// give you more control on the types of the value being matched and
-// the matcher parameters, which may leads to better compiler error
-// messages when the matcher is used wrong.  They also allow
-// overloading matchers based on parameter types (as opposed to just
-// based on the number of parameters).
-//
-// MATCHER*() can only be used in a namespace scope as templates cannot be
-// declared inside of a local class.
-//
-// More Information
-// ================
-//
-// To learn more about using these macros, please search for 'MATCHER'
-// on
-// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md
-//
-// This file also implements some commonly used argument matchers.  More
-// matchers can be defined by the user implementing the
-// MatcherInterface<T> interface if necessary.
-//
-// See googletest/include/gtest/gtest-matchers.h for the definition of class
-// Matcher, class MatcherInterface, and others.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
-
-#include <algorithm>
-#include <cmath>
-#include <initializer_list>
-#include <iterator>
-#include <limits>
-#include <memory>
-#include <ostream>  // NOLINT
-#include <sstream>
-#include <string>
-#include <type_traits>
-#include <utility>
-#include <vector>
-
-
-// MSVC warning C5046 is new as of VS2017 version 15.8.
-#if defined(_MSC_VER) && _MSC_VER >= 1915
-#define GMOCK_MAYBE_5046_ 5046
-#else
-#define GMOCK_MAYBE_5046_
-#endif
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(
-    4251 GMOCK_MAYBE_5046_ /* class A needs to have dll-interface to be used by
-                              clients of class B */
-    /* Symbol involving type with internal linkage not defined */)
-
-namespace testing {
-
-// To implement a matcher Foo for type T, define:
-//   1. a class FooMatcherImpl that implements the
-//      MatcherInterface<T> interface, and
-//   2. a factory function that creates a Matcher<T> object from a
-//      FooMatcherImpl*.
-//
-// The two-level delegation design makes it possible to allow a user
-// to write "v" instead of "Eq(v)" where a Matcher is expected, which
-// is impossible if we pass matchers by pointers.  It also eases
-// ownership management as Matcher objects can now be copied like
-// plain values.
-
-// A match result listener that stores the explanation in a string.
-class StringMatchResultListener : public MatchResultListener {
- public:
-  StringMatchResultListener() : MatchResultListener(&ss_) {}
-
-  // Returns the explanation accumulated so far.
-  std::string str() const { return ss_.str(); }
-
-  // Clears the explanation accumulated so far.
-  void Clear() { ss_.str(""); }
-
- private:
-  ::std::stringstream ss_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(StringMatchResultListener);
-};
-
-// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
-// and MUST NOT BE USED IN USER CODE!!!
-namespace internal {
-
-// The MatcherCastImpl class template is a helper for implementing
-// MatcherCast().  We need this helper in order to partially
-// specialize the implementation of MatcherCast() (C++ allows
-// class/struct templates to be partially specialized, but not
-// function templates.).
-
-// This general version is used when MatcherCast()'s argument is a
-// polymorphic matcher (i.e. something that can be converted to a
-// Matcher but is not one yet; for example, Eq(value)) or a value (for
-// example, "hello").
-template <typename T, typename M>
-class MatcherCastImpl {
- public:
-  static Matcher<T> Cast(const M& polymorphic_matcher_or_value) {
-    // M can be a polymorphic matcher, in which case we want to use
-    // its conversion operator to create Matcher<T>.  Or it can be a value
-    // that should be passed to the Matcher<T>'s constructor.
-    //
-    // We can't call Matcher<T>(polymorphic_matcher_or_value) when M is a
-    // polymorphic matcher because it'll be ambiguous if T has an implicit
-    // constructor from M (this usually happens when T has an implicit
-    // constructor from any type).
-    //
-    // It won't work to unconditionally implicit_cast
-    // polymorphic_matcher_or_value to Matcher<T> because it won't trigger
-    // a user-defined conversion from M to T if one exists (assuming M is
-    // a value).
-    return CastImpl(polymorphic_matcher_or_value,
-                    std::is_convertible<M, Matcher<T>>{},
-                    std::is_convertible<M, T>{});
-  }
-
- private:
-  template <bool Ignore>
-  static Matcher<T> CastImpl(const M& polymorphic_matcher_or_value,
-                             std::true_type /* convertible_to_matcher */,
-                             std::integral_constant<bool, Ignore>) {
-    // M is implicitly convertible to Matcher<T>, which means that either
-    // M is a polymorphic matcher or Matcher<T> has an implicit constructor
-    // from M.  In both cases using the implicit conversion will produce a
-    // matcher.
-    //
-    // Even if T has an implicit constructor from M, it won't be called because
-    // creating Matcher<T> would require a chain of two user-defined conversions
-    // (first to create T from M and then to create Matcher<T> from T).
-    return polymorphic_matcher_or_value;
-  }
-
-  // M can't be implicitly converted to Matcher<T>, so M isn't a polymorphic
-  // matcher. It's a value of a type implicitly convertible to T. Use direct
-  // initialization to create a matcher.
-  static Matcher<T> CastImpl(const M& value,
-                             std::false_type /* convertible_to_matcher */,
-                             std::true_type /* convertible_to_T */) {
-    return Matcher<T>(ImplicitCast_<T>(value));
-  }
-
-  // M can't be implicitly converted to either Matcher<T> or T. Attempt to use
-  // polymorphic matcher Eq(value) in this case.
-  //
-  // Note that we first attempt to perform an implicit cast on the value and
-  // only fall back to the polymorphic Eq() matcher afterwards because the
-  // latter calls bool operator==(const Lhs& lhs, const Rhs& rhs) in the end
-  // which might be undefined even when Rhs is implicitly convertible to Lhs
-  // (e.g. std::pair<const int, int> vs. std::pair<int, int>).
-  //
-  // We don't define this method inline as we need the declaration of Eq().
-  static Matcher<T> CastImpl(const M& value,
-                             std::false_type /* convertible_to_matcher */,
-                             std::false_type /* convertible_to_T */);
-};
-
-// This more specialized version is used when MatcherCast()'s argument
-// is already a Matcher.  This only compiles when type T can be
-// statically converted to type U.
-template <typename T, typename U>
-class MatcherCastImpl<T, Matcher<U> > {
- public:
-  static Matcher<T> Cast(const Matcher<U>& source_matcher) {
-    return Matcher<T>(new Impl(source_matcher));
-  }
-
- private:
-  class Impl : public MatcherInterface<T> {
-   public:
-    explicit Impl(const Matcher<U>& source_matcher)
-        : source_matcher_(source_matcher) {}
-
-    // We delegate the matching logic to the source matcher.
-    bool MatchAndExplain(T x, MatchResultListener* listener) const override {
-      using FromType = typename std::remove_cv<typename std::remove_pointer<
-          typename std::remove_reference<T>::type>::type>::type;
-      using ToType = typename std::remove_cv<typename std::remove_pointer<
-          typename std::remove_reference<U>::type>::type>::type;
-      // Do not allow implicitly converting base*/& to derived*/&.
-      static_assert(
-          // Do not trigger if only one of them is a pointer. That implies a
-          // regular conversion and not a down_cast.
-          (std::is_pointer<typename std::remove_reference<T>::type>::value !=
-           std::is_pointer<typename std::remove_reference<U>::type>::value) ||
-              std::is_same<FromType, ToType>::value ||
-              !std::is_base_of<FromType, ToType>::value,
-          "Can't implicitly convert from <base> to <derived>");
-
-      // Do the cast to `U` explicitly if necessary.
-      // Otherwise, let implicit conversions do the trick.
-      using CastType =
-          typename std::conditional<std::is_convertible<T&, const U&>::value,
-                                    T&, U>::type;
-
-      return source_matcher_.MatchAndExplain(static_cast<CastType>(x),
-                                             listener);
-    }
-
-    void DescribeTo(::std::ostream* os) const override {
-      source_matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      source_matcher_.DescribeNegationTo(os);
-    }
-
-   private:
-    const Matcher<U> source_matcher_;
-  };
-};
-
-// This even more specialized version is used for efficiently casting
-// a matcher to its own type.
-template <typename T>
-class MatcherCastImpl<T, Matcher<T> > {
- public:
-  static Matcher<T> Cast(const Matcher<T>& matcher) { return matcher; }
-};
-
-// Template specialization for parameterless Matcher.
-template <typename Derived>
-class MatcherBaseImpl {
- public:
-  MatcherBaseImpl() = default;
-
-  template <typename T>
-  operator ::testing::Matcher<T>() const {  // NOLINT(runtime/explicit)
-    return ::testing::Matcher<T>(new
-                                 typename Derived::template gmock_Impl<T>());
-  }
-};
-
-// Template specialization for Matcher with parameters.
-template <template <typename...> class Derived, typename... Ts>
-class MatcherBaseImpl<Derived<Ts...>> {
- public:
-  // Mark the constructor explicit for single argument T to avoid implicit
-  // conversions.
-  template <typename E = std::enable_if<sizeof...(Ts) == 1>,
-            typename E::type* = nullptr>
-  explicit MatcherBaseImpl(Ts... params)
-      : params_(std::forward<Ts>(params)...) {}
-  template <typename E = std::enable_if<sizeof...(Ts) != 1>,
-            typename = typename E::type>
-  MatcherBaseImpl(Ts... params)  // NOLINT
-      : params_(std::forward<Ts>(params)...) {}
-
-  template <typename F>
-  operator ::testing::Matcher<F>() const {  // NOLINT(runtime/explicit)
-    return Apply<F>(MakeIndexSequence<sizeof...(Ts)>{});
-  }
-
- private:
-  template <typename F, std::size_t... tuple_ids>
-  ::testing::Matcher<F> Apply(IndexSequence<tuple_ids...>) const {
-    return ::testing::Matcher<F>(
-        new typename Derived<Ts...>::template gmock_Impl<F>(
-            std::get<tuple_ids>(params_)...));
-  }
-
-  const std::tuple<Ts...> params_;
-};
-
-}  // namespace internal
-
-// In order to be safe and clear, casting between different matcher
-// types is done explicitly via MatcherCast<T>(m), which takes a
-// matcher m and returns a Matcher<T>.  It compiles only when T can be
-// statically converted to the argument type of m.
-template <typename T, typename M>
-inline Matcher<T> MatcherCast(const M& matcher) {
-  return internal::MatcherCastImpl<T, M>::Cast(matcher);
-}
-
-// This overload handles polymorphic matchers and values only since
-// monomorphic matchers are handled by the next one.
-template <typename T, typename M>
-inline Matcher<T> SafeMatcherCast(const M& polymorphic_matcher_or_value) {
-  return MatcherCast<T>(polymorphic_matcher_or_value);
-}
-
-// This overload handles monomorphic matchers.
-//
-// In general, if type T can be implicitly converted to type U, we can
-// safely convert a Matcher<U> to a Matcher<T> (i.e. Matcher is
-// contravariant): just keep a copy of the original Matcher<U>, convert the
-// argument from type T to U, and then pass it to the underlying Matcher<U>.
-// The only exception is when U is a reference and T is not, as the
-// underlying Matcher<U> may be interested in the argument's address, which
-// is not preserved in the conversion from T to U.
-template <typename T, typename U>
-inline Matcher<T> SafeMatcherCast(const Matcher<U>& matcher) {
-  // Enforce that T can be implicitly converted to U.
-  static_assert(std::is_convertible<const T&, const U&>::value,
-                "T must be implicitly convertible to U");
-  // Enforce that we are not converting a non-reference type T to a reference
-  // type U.
-  GTEST_COMPILE_ASSERT_(
-      std::is_reference<T>::value || !std::is_reference<U>::value,
-      cannot_convert_non_reference_arg_to_reference);
-  // In case both T and U are arithmetic types, enforce that the
-  // conversion is not lossy.
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT;
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(U) RawU;
-  constexpr bool kTIsOther = GMOCK_KIND_OF_(RawT) == internal::kOther;
-  constexpr bool kUIsOther = GMOCK_KIND_OF_(RawU) == internal::kOther;
-  GTEST_COMPILE_ASSERT_(
-      kTIsOther || kUIsOther ||
-      (internal::LosslessArithmeticConvertible<RawT, RawU>::value),
-      conversion_of_arithmetic_types_must_be_lossless);
-  return MatcherCast<T>(matcher);
-}
-
-// A<T>() returns a matcher that matches any value of type T.
-template <typename T>
-Matcher<T> A();
-
-// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
-// and MUST NOT BE USED IN USER CODE!!!
-namespace internal {
-
-// If the explanation is not empty, prints it to the ostream.
-inline void PrintIfNotEmpty(const std::string& explanation,
-                            ::std::ostream* os) {
-  if (explanation != "" && os != nullptr) {
-    *os << ", " << explanation;
-  }
-}
-
-// Returns true if the given type name is easy to read by a human.
-// This is used to decide whether printing the type of a value might
-// be helpful.
-inline bool IsReadableTypeName(const std::string& type_name) {
-  // We consider a type name readable if it's short or doesn't contain
-  // a template or function type.
-  return (type_name.length() <= 20 ||
-          type_name.find_first_of("<(") == std::string::npos);
-}
-
-// Matches the value against the given matcher, prints the value and explains
-// the match result to the listener. Returns the match result.
-// 'listener' must not be NULL.
-// Value cannot be passed by const reference, because some matchers take a
-// non-const argument.
-template <typename Value, typename T>
-bool MatchPrintAndExplain(Value& value, const Matcher<T>& matcher,
-                          MatchResultListener* listener) {
-  if (!listener->IsInterested()) {
-    // If the listener is not interested, we do not need to construct the
-    // inner explanation.
-    return matcher.Matches(value);
-  }
-
-  StringMatchResultListener inner_listener;
-  const bool match = matcher.MatchAndExplain(value, &inner_listener);
-
-  UniversalPrint(value, listener->stream());
-#if GTEST_HAS_RTTI
-  const std::string& type_name = GetTypeName<Value>();
-  if (IsReadableTypeName(type_name))
-    *listener->stream() << " (of type " << type_name << ")";
-#endif
-  PrintIfNotEmpty(inner_listener.str(), listener->stream());
-
-  return match;
-}
-
-// An internal helper class for doing compile-time loop on a tuple's
-// fields.
-template <size_t N>
-class TuplePrefix {
- public:
-  // TuplePrefix<N>::Matches(matcher_tuple, value_tuple) returns true
-  // if and only if the first N fields of matcher_tuple matches
-  // the first N fields of value_tuple, respectively.
-  template <typename MatcherTuple, typename ValueTuple>
-  static bool Matches(const MatcherTuple& matcher_tuple,
-                      const ValueTuple& value_tuple) {
-    return TuplePrefix<N - 1>::Matches(matcher_tuple, value_tuple) &&
-           std::get<N - 1>(matcher_tuple).Matches(std::get<N - 1>(value_tuple));
-  }
-
-  // TuplePrefix<N>::ExplainMatchFailuresTo(matchers, values, os)
-  // describes failures in matching the first N fields of matchers
-  // against the first N fields of values.  If there is no failure,
-  // nothing will be streamed to os.
-  template <typename MatcherTuple, typename ValueTuple>
-  static void ExplainMatchFailuresTo(const MatcherTuple& matchers,
-                                     const ValueTuple& values,
-                                     ::std::ostream* os) {
-    // First, describes failures in the first N - 1 fields.
-    TuplePrefix<N - 1>::ExplainMatchFailuresTo(matchers, values, os);
-
-    // Then describes the failure (if any) in the (N - 1)-th (0-based)
-    // field.
-    typename std::tuple_element<N - 1, MatcherTuple>::type matcher =
-        std::get<N - 1>(matchers);
-    typedef typename std::tuple_element<N - 1, ValueTuple>::type Value;
-    const Value& value = std::get<N - 1>(values);
-    StringMatchResultListener listener;
-    if (!matcher.MatchAndExplain(value, &listener)) {
-      *os << "  Expected arg #" << N - 1 << ": ";
-      std::get<N - 1>(matchers).DescribeTo(os);
-      *os << "\n           Actual: ";
-      // We remove the reference in type Value to prevent the
-      // universal printer from printing the address of value, which
-      // isn't interesting to the user most of the time.  The
-      // matcher's MatchAndExplain() method handles the case when
-      // the address is interesting.
-      internal::UniversalPrint(value, os);
-      PrintIfNotEmpty(listener.str(), os);
-      *os << "\n";
-    }
-  }
-};
-
-// The base case.
-template <>
-class TuplePrefix<0> {
- public:
-  template <typename MatcherTuple, typename ValueTuple>
-  static bool Matches(const MatcherTuple& /* matcher_tuple */,
-                      const ValueTuple& /* value_tuple */) {
-    return true;
-  }
-
-  template <typename MatcherTuple, typename ValueTuple>
-  static void ExplainMatchFailuresTo(const MatcherTuple& /* matchers */,
-                                     const ValueTuple& /* values */,
-                                     ::std::ostream* /* os */) {}
-};
-
-// TupleMatches(matcher_tuple, value_tuple) returns true if and only if
-// all matchers in matcher_tuple match the corresponding fields in
-// value_tuple.  It is a compiler error if matcher_tuple and
-// value_tuple have different number of fields or incompatible field
-// types.
-template <typename MatcherTuple, typename ValueTuple>
-bool TupleMatches(const MatcherTuple& matcher_tuple,
-                  const ValueTuple& value_tuple) {
-  // Makes sure that matcher_tuple and value_tuple have the same
-  // number of fields.
-  GTEST_COMPILE_ASSERT_(std::tuple_size<MatcherTuple>::value ==
-                            std::tuple_size<ValueTuple>::value,
-                        matcher_and_value_have_different_numbers_of_fields);
-  return TuplePrefix<std::tuple_size<ValueTuple>::value>::Matches(matcher_tuple,
-                                                                  value_tuple);
-}
-
-// Describes failures in matching matchers against values.  If there
-// is no failure, nothing will be streamed to os.
-template <typename MatcherTuple, typename ValueTuple>
-void ExplainMatchFailureTupleTo(const MatcherTuple& matchers,
-                                const ValueTuple& values,
-                                ::std::ostream* os) {
-  TuplePrefix<std::tuple_size<MatcherTuple>::value>::ExplainMatchFailuresTo(
-      matchers, values, os);
-}
-
-// TransformTupleValues and its helper.
-//
-// TransformTupleValuesHelper hides the internal machinery that
-// TransformTupleValues uses to implement a tuple traversal.
-template <typename Tuple, typename Func, typename OutIter>
-class TransformTupleValuesHelper {
- private:
-  typedef ::std::tuple_size<Tuple> TupleSize;
-
- public:
-  // For each member of tuple 't', taken in order, evaluates '*out++ = f(t)'.
-  // Returns the final value of 'out' in case the caller needs it.
-  static OutIter Run(Func f, const Tuple& t, OutIter out) {
-    return IterateOverTuple<Tuple, TupleSize::value>()(f, t, out);
-  }
-
- private:
-  template <typename Tup, size_t kRemainingSize>
-  struct IterateOverTuple {
-    OutIter operator() (Func f, const Tup& t, OutIter out) const {
-      *out++ = f(::std::get<TupleSize::value - kRemainingSize>(t));
-      return IterateOverTuple<Tup, kRemainingSize - 1>()(f, t, out);
-    }
-  };
-  template <typename Tup>
-  struct IterateOverTuple<Tup, 0> {
-    OutIter operator() (Func /* f */, const Tup& /* t */, OutIter out) const {
-      return out;
-    }
-  };
-};
-
-// Successively invokes 'f(element)' on each element of the tuple 't',
-// appending each result to the 'out' iterator. Returns the final value
-// of 'out'.
-template <typename Tuple, typename Func, typename OutIter>
-OutIter TransformTupleValues(Func f, const Tuple& t, OutIter out) {
-  return TransformTupleValuesHelper<Tuple, Func, OutIter>::Run(f, t, out);
-}
-
-// Implements _, a matcher that matches any value of any
-// type.  This is a polymorphic matcher, so we need a template type
-// conversion operator to make it appearing as a Matcher<T> for any
-// type T.
-class AnythingMatcher {
- public:
-  using is_gtest_matcher = void;
-
-  template <typename T>
-  bool MatchAndExplain(const T& /* x */, std::ostream* /* listener */) const {
-    return true;
-  }
-  void DescribeTo(std::ostream* os) const { *os << "is anything"; }
-  void DescribeNegationTo(::std::ostream* os) const {
-    // This is mostly for completeness' sake, as it's not very useful
-    // to write Not(A<bool>()).  However we cannot completely rule out
-    // such a possibility, and it doesn't hurt to be prepared.
-    *os << "never matches";
-  }
-};
-
-// Implements the polymorphic IsNull() matcher, which matches any raw or smart
-// pointer that is NULL.
-class IsNullMatcher {
- public:
-  template <typename Pointer>
-  bool MatchAndExplain(const Pointer& p,
-                       MatchResultListener* /* listener */) const {
-    return p == nullptr;
-  }
-
-  void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "isn't NULL";
-  }
-};
-
-// Implements the polymorphic NotNull() matcher, which matches any raw or smart
-// pointer that is not NULL.
-class NotNullMatcher {
- public:
-  template <typename Pointer>
-  bool MatchAndExplain(const Pointer& p,
-                       MatchResultListener* /* listener */) const {
-    return p != nullptr;
-  }
-
-  void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "is NULL";
-  }
-};
-
-// Ref(variable) matches any argument that is a reference to
-// 'variable'.  This matcher is polymorphic as it can match any
-// super type of the type of 'variable'.
-//
-// The RefMatcher template class implements Ref(variable).  It can
-// only be instantiated with a reference type.  This prevents a user
-// from mistakenly using Ref(x) to match a non-reference function
-// argument.  For example, the following will righteously cause a
-// compiler error:
-//
-//   int n;
-//   Matcher<int> m1 = Ref(n);   // This won't compile.
-//   Matcher<int&> m2 = Ref(n);  // This will compile.
-template <typename T>
-class RefMatcher;
-
-template <typename T>
-class RefMatcher<T&> {
-  // Google Mock is a generic framework and thus needs to support
-  // mocking any function types, including those that take non-const
-  // reference arguments.  Therefore the template parameter T (and
-  // Super below) can be instantiated to either a const type or a
-  // non-const type.
- public:
-  // RefMatcher() takes a T& instead of const T&, as we want the
-  // compiler to catch using Ref(const_value) as a matcher for a
-  // non-const reference.
-  explicit RefMatcher(T& x) : object_(x) {}  // NOLINT
-
-  template <typename Super>
-  operator Matcher<Super&>() const {
-    // By passing object_ (type T&) to Impl(), which expects a Super&,
-    // we make sure that Super is a super type of T.  In particular,
-    // this catches using Ref(const_value) as a matcher for a
-    // non-const reference, as you cannot implicitly convert a const
-    // reference to a non-const reference.
-    return MakeMatcher(new Impl<Super>(object_));
-  }
-
- private:
-  template <typename Super>
-  class Impl : public MatcherInterface<Super&> {
-   public:
-    explicit Impl(Super& x) : object_(x) {}  // NOLINT
-
-    // MatchAndExplain() takes a Super& (as opposed to const Super&)
-    // in order to match the interface MatcherInterface<Super&>.
-    bool MatchAndExplain(Super& x,
-                         MatchResultListener* listener) const override {
-      *listener << "which is located @" << static_cast<const void*>(&x);
-      return &x == &object_;
-    }
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "references the variable ";
-      UniversalPrinter<Super&>::Print(object_, os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "does not reference the variable ";
-      UniversalPrinter<Super&>::Print(object_, os);
-    }
-
-   private:
-    const Super& object_;
-  };
-
-  T& object_;
-};
-
-// Polymorphic helper functions for narrow and wide string matchers.
-inline bool CaseInsensitiveCStringEquals(const char* lhs, const char* rhs) {
-  return String::CaseInsensitiveCStringEquals(lhs, rhs);
-}
-
-inline bool CaseInsensitiveCStringEquals(const wchar_t* lhs,
-                                         const wchar_t* rhs) {
-  return String::CaseInsensitiveWideCStringEquals(lhs, rhs);
-}
-
-// String comparison for narrow or wide strings that can have embedded NUL
-// characters.
-template <typename StringType>
-bool CaseInsensitiveStringEquals(const StringType& s1,
-                                 const StringType& s2) {
-  // Are the heads equal?
-  if (!CaseInsensitiveCStringEquals(s1.c_str(), s2.c_str())) {
-    return false;
-  }
-
-  // Skip the equal heads.
-  const typename StringType::value_type nul = 0;
-  const size_t i1 = s1.find(nul), i2 = s2.find(nul);
-
-  // Are we at the end of either s1 or s2?
-  if (i1 == StringType::npos || i2 == StringType::npos) {
-    return i1 == i2;
-  }
-
-  // Are the tails equal?
-  return CaseInsensitiveStringEquals(s1.substr(i1 + 1), s2.substr(i2 + 1));
-}
-
-// String matchers.
-
-// Implements equality-based string matchers like StrEq, StrCaseNe, and etc.
-template <typename StringType>
-class StrEqualityMatcher {
- public:
-  StrEqualityMatcher(StringType str, bool expect_eq, bool case_sensitive)
-      : string_(std::move(str)),
-        expect_eq_(expect_eq),
-        case_sensitive_(case_sensitive) {}
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-  bool MatchAndExplain(const internal::StringView& s,
-                       MatchResultListener* listener) const {
-    // This should fail to compile if StringView is used with wide
-    // strings.
-    const StringType& str = std::string(s);
-    return MatchAndExplain(str, listener);
-  }
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-  // Accepts pointer types, particularly:
-  //   const char*
-  //   char*
-  //   const wchar_t*
-  //   wchar_t*
-  template <typename CharType>
-  bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
-    if (s == nullptr) {
-      return !expect_eq_;
-    }
-    return MatchAndExplain(StringType(s), listener);
-  }
-
-  // Matches anything that can convert to StringType.
-  //
-  // This is a template, not just a plain function with const StringType&,
-  // because StringView has some interfering non-explicit constructors.
-  template <typename MatcheeStringType>
-  bool MatchAndExplain(const MatcheeStringType& s,
-                       MatchResultListener* /* listener */) const {
-    const StringType s2(s);
-    const bool eq = case_sensitive_ ? s2 == string_ :
-        CaseInsensitiveStringEquals(s2, string_);
-    return expect_eq_ == eq;
-  }
-
-  void DescribeTo(::std::ostream* os) const {
-    DescribeToHelper(expect_eq_, os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    DescribeToHelper(!expect_eq_, os);
-  }
-
- private:
-  void DescribeToHelper(bool expect_eq, ::std::ostream* os) const {
-    *os << (expect_eq ? "is " : "isn't ");
-    *os << "equal to ";
-    if (!case_sensitive_) {
-      *os << "(ignoring case) ";
-    }
-    UniversalPrint(string_, os);
-  }
-
-  const StringType string_;
-  const bool expect_eq_;
-  const bool case_sensitive_;
-};
-
-// Implements the polymorphic HasSubstr(substring) matcher, which
-// can be used as a Matcher<T> as long as T can be converted to a
-// string.
-template <typename StringType>
-class HasSubstrMatcher {
- public:
-  explicit HasSubstrMatcher(const StringType& substring)
-      : substring_(substring) {}
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-  bool MatchAndExplain(const internal::StringView& s,
-                       MatchResultListener* listener) const {
-    // This should fail to compile if StringView is used with wide
-    // strings.
-    const StringType& str = std::string(s);
-    return MatchAndExplain(str, listener);
-  }
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-  // Accepts pointer types, particularly:
-  //   const char*
-  //   char*
-  //   const wchar_t*
-  //   wchar_t*
-  template <typename CharType>
-  bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
-    return s != nullptr && MatchAndExplain(StringType(s), listener);
-  }
-
-  // Matches anything that can convert to StringType.
-  //
-  // This is a template, not just a plain function with const StringType&,
-  // because StringView has some interfering non-explicit constructors.
-  template <typename MatcheeStringType>
-  bool MatchAndExplain(const MatcheeStringType& s,
-                       MatchResultListener* /* listener */) const {
-    return StringType(s).find(substring_) != StringType::npos;
-  }
-
-  // Describes what this matcher matches.
-  void DescribeTo(::std::ostream* os) const {
-    *os << "has substring ";
-    UniversalPrint(substring_, os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "has no substring ";
-    UniversalPrint(substring_, os);
-  }
-
- private:
-  const StringType substring_;
-};
-
-// Implements the polymorphic StartsWith(substring) matcher, which
-// can be used as a Matcher<T> as long as T can be converted to a
-// string.
-template <typename StringType>
-class StartsWithMatcher {
- public:
-  explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) {
-  }
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-  bool MatchAndExplain(const internal::StringView& s,
-                       MatchResultListener* listener) const {
-    // This should fail to compile if StringView is used with wide
-    // strings.
-    const StringType& str = std::string(s);
-    return MatchAndExplain(str, listener);
-  }
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-  // Accepts pointer types, particularly:
-  //   const char*
-  //   char*
-  //   const wchar_t*
-  //   wchar_t*
-  template <typename CharType>
-  bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
-    return s != nullptr && MatchAndExplain(StringType(s), listener);
-  }
-
-  // Matches anything that can convert to StringType.
-  //
-  // This is a template, not just a plain function with const StringType&,
-  // because StringView has some interfering non-explicit constructors.
-  template <typename MatcheeStringType>
-  bool MatchAndExplain(const MatcheeStringType& s,
-                       MatchResultListener* /* listener */) const {
-    const StringType& s2(s);
-    return s2.length() >= prefix_.length() &&
-        s2.substr(0, prefix_.length()) == prefix_;
-  }
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << "starts with ";
-    UniversalPrint(prefix_, os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "doesn't start with ";
-    UniversalPrint(prefix_, os);
-  }
-
- private:
-  const StringType prefix_;
-};
-
-// Implements the polymorphic EndsWith(substring) matcher, which
-// can be used as a Matcher<T> as long as T can be converted to a
-// string.
-template <typename StringType>
-class EndsWithMatcher {
- public:
-  explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {}
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-  bool MatchAndExplain(const internal::StringView& s,
-                       MatchResultListener* listener) const {
-    // This should fail to compile if StringView is used with wide
-    // strings.
-    const StringType& str = std::string(s);
-    return MatchAndExplain(str, listener);
-  }
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-  // Accepts pointer types, particularly:
-  //   const char*
-  //   char*
-  //   const wchar_t*
-  //   wchar_t*
-  template <typename CharType>
-  bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
-    return s != nullptr && MatchAndExplain(StringType(s), listener);
-  }
-
-  // Matches anything that can convert to StringType.
-  //
-  // This is a template, not just a plain function with const StringType&,
-  // because StringView has some interfering non-explicit constructors.
-  template <typename MatcheeStringType>
-  bool MatchAndExplain(const MatcheeStringType& s,
-                       MatchResultListener* /* listener */) const {
-    const StringType& s2(s);
-    return s2.length() >= suffix_.length() &&
-        s2.substr(s2.length() - suffix_.length()) == suffix_;
-  }
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << "ends with ";
-    UniversalPrint(suffix_, os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "doesn't end with ";
-    UniversalPrint(suffix_, os);
-  }
-
- private:
-  const StringType suffix_;
-};
-
-// Implements a matcher that compares the two fields of a 2-tuple
-// using one of the ==, <=, <, etc, operators.  The two fields being
-// compared don't have to have the same type.
-//
-// The matcher defined here is polymorphic (for example, Eq() can be
-// used to match a std::tuple<int, short>, a std::tuple<const long&, double>,
-// etc).  Therefore we use a template type conversion operator in the
-// implementation.
-template <typename D, typename Op>
-class PairMatchBase {
- public:
-  template <typename T1, typename T2>
-  operator Matcher<::std::tuple<T1, T2>>() const {
-    return Matcher<::std::tuple<T1, T2>>(new Impl<const ::std::tuple<T1, T2>&>);
-  }
-  template <typename T1, typename T2>
-  operator Matcher<const ::std::tuple<T1, T2>&>() const {
-    return MakeMatcher(new Impl<const ::std::tuple<T1, T2>&>);
-  }
-
- private:
-  static ::std::ostream& GetDesc(::std::ostream& os) {  // NOLINT
-    return os << D::Desc();
-  }
-
-  template <typename Tuple>
-  class Impl : public MatcherInterface<Tuple> {
-   public:
-    bool MatchAndExplain(Tuple args,
-                         MatchResultListener* /* listener */) const override {
-      return Op()(::std::get<0>(args), ::std::get<1>(args));
-    }
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "are " << GetDesc;
-    }
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "aren't " << GetDesc;
-    }
-  };
-};
-
-class Eq2Matcher : public PairMatchBase<Eq2Matcher, AnyEq> {
- public:
-  static const char* Desc() { return "an equal pair"; }
-};
-class Ne2Matcher : public PairMatchBase<Ne2Matcher, AnyNe> {
- public:
-  static const char* Desc() { return "an unequal pair"; }
-};
-class Lt2Matcher : public PairMatchBase<Lt2Matcher, AnyLt> {
- public:
-  static const char* Desc() { return "a pair where the first < the second"; }
-};
-class Gt2Matcher : public PairMatchBase<Gt2Matcher, AnyGt> {
- public:
-  static const char* Desc() { return "a pair where the first > the second"; }
-};
-class Le2Matcher : public PairMatchBase<Le2Matcher, AnyLe> {
- public:
-  static const char* Desc() { return "a pair where the first <= the second"; }
-};
-class Ge2Matcher : public PairMatchBase<Ge2Matcher, AnyGe> {
- public:
-  static const char* Desc() { return "a pair where the first >= the second"; }
-};
-
-// Implements the Not(...) matcher for a particular argument type T.
-// We do not nest it inside the NotMatcher class template, as that
-// will prevent different instantiations of NotMatcher from sharing
-// the same NotMatcherImpl<T> class.
-template <typename T>
-class NotMatcherImpl : public MatcherInterface<const T&> {
- public:
-  explicit NotMatcherImpl(const Matcher<T>& matcher)
-      : matcher_(matcher) {}
-
-  bool MatchAndExplain(const T& x,
-                       MatchResultListener* listener) const override {
-    return !matcher_.MatchAndExplain(x, listener);
-  }
-
-  void DescribeTo(::std::ostream* os) const override {
-    matcher_.DescribeNegationTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    matcher_.DescribeTo(os);
-  }
-
- private:
-  const Matcher<T> matcher_;
-};
-
-// Implements the Not(m) matcher, which matches a value that doesn't
-// match matcher m.
-template <typename InnerMatcher>
-class NotMatcher {
- public:
-  explicit NotMatcher(InnerMatcher matcher) : matcher_(matcher) {}
-
-  // This template type conversion operator allows Not(m) to be used
-  // to match any type m can match.
-  template <typename T>
-  operator Matcher<T>() const {
-    return Matcher<T>(new NotMatcherImpl<T>(SafeMatcherCast<T>(matcher_)));
-  }
-
- private:
-  InnerMatcher matcher_;
-};
-
-// Implements the AllOf(m1, m2) matcher for a particular argument type
-// T. We do not nest it inside the BothOfMatcher class template, as
-// that will prevent different instantiations of BothOfMatcher from
-// sharing the same BothOfMatcherImpl<T> class.
-template <typename T>
-class AllOfMatcherImpl : public MatcherInterface<const T&> {
- public:
-  explicit AllOfMatcherImpl(std::vector<Matcher<T> > matchers)
-      : matchers_(std::move(matchers)) {}
-
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "(";
-    for (size_t i = 0; i < matchers_.size(); ++i) {
-      if (i != 0) *os << ") and (";
-      matchers_[i].DescribeTo(os);
-    }
-    *os << ")";
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "(";
-    for (size_t i = 0; i < matchers_.size(); ++i) {
-      if (i != 0) *os << ") or (";
-      matchers_[i].DescribeNegationTo(os);
-    }
-    *os << ")";
-  }
-
-  bool MatchAndExplain(const T& x,
-                       MatchResultListener* listener) const override {
-    // If either matcher1_ or matcher2_ doesn't match x, we only need
-    // to explain why one of them fails.
-    std::string all_match_result;
-
-    for (size_t i = 0; i < matchers_.size(); ++i) {
-      StringMatchResultListener slistener;
-      if (matchers_[i].MatchAndExplain(x, &slistener)) {
-        if (all_match_result.empty()) {
-          all_match_result = slistener.str();
-        } else {
-          std::string result = slistener.str();
-          if (!result.empty()) {
-            all_match_result += ", and ";
-            all_match_result += result;
-          }
-        }
-      } else {
-        *listener << slistener.str();
-        return false;
-      }
-    }
-
-    // Otherwise we need to explain why *both* of them match.
-    *listener << all_match_result;
-    return true;
-  }
-
- private:
-  const std::vector<Matcher<T> > matchers_;
-};
-
-// VariadicMatcher is used for the variadic implementation of
-// AllOf(m_1, m_2, ...) and AnyOf(m_1, m_2, ...).
-// CombiningMatcher<T> is used to recursively combine the provided matchers
-// (of type Args...).
-template <template <typename T> class CombiningMatcher, typename... Args>
-class VariadicMatcher {
- public:
-  VariadicMatcher(const Args&... matchers)  // NOLINT
-      : matchers_(matchers...) {
-    static_assert(sizeof...(Args) > 0, "Must have at least one matcher.");
-  }
-
-  VariadicMatcher(const VariadicMatcher&) = default;
-  VariadicMatcher& operator=(const VariadicMatcher&) = delete;
-
-  // This template type conversion operator allows an
-  // VariadicMatcher<Matcher1, Matcher2...> object to match any type that
-  // all of the provided matchers (Matcher1, Matcher2, ...) can match.
-  template <typename T>
-  operator Matcher<T>() const {
-    std::vector<Matcher<T> > values;
-    CreateVariadicMatcher<T>(&values, std::integral_constant<size_t, 0>());
-    return Matcher<T>(new CombiningMatcher<T>(std::move(values)));
-  }
-
- private:
-  template <typename T, size_t I>
-  void CreateVariadicMatcher(std::vector<Matcher<T> >* values,
-                             std::integral_constant<size_t, I>) const {
-    values->push_back(SafeMatcherCast<T>(std::get<I>(matchers_)));
-    CreateVariadicMatcher<T>(values, std::integral_constant<size_t, I + 1>());
-  }
-
-  template <typename T>
-  void CreateVariadicMatcher(
-      std::vector<Matcher<T> >*,
-      std::integral_constant<size_t, sizeof...(Args)>) const {}
-
-  std::tuple<Args...> matchers_;
-};
-
-template <typename... Args>
-using AllOfMatcher = VariadicMatcher<AllOfMatcherImpl, Args...>;
-
-// Implements the AnyOf(m1, m2) matcher for a particular argument type
-// T.  We do not nest it inside the AnyOfMatcher class template, as
-// that will prevent different instantiations of AnyOfMatcher from
-// sharing the same EitherOfMatcherImpl<T> class.
-template <typename T>
-class AnyOfMatcherImpl : public MatcherInterface<const T&> {
- public:
-  explicit AnyOfMatcherImpl(std::vector<Matcher<T> > matchers)
-      : matchers_(std::move(matchers)) {}
-
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "(";
-    for (size_t i = 0; i < matchers_.size(); ++i) {
-      if (i != 0) *os << ") or (";
-      matchers_[i].DescribeTo(os);
-    }
-    *os << ")";
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "(";
-    for (size_t i = 0; i < matchers_.size(); ++i) {
-      if (i != 0) *os << ") and (";
-      matchers_[i].DescribeNegationTo(os);
-    }
-    *os << ")";
-  }
-
-  bool MatchAndExplain(const T& x,
-                       MatchResultListener* listener) const override {
-    std::string no_match_result;
-
-    // If either matcher1_ or matcher2_ matches x, we just need to
-    // explain why *one* of them matches.
-    for (size_t i = 0; i < matchers_.size(); ++i) {
-      StringMatchResultListener slistener;
-      if (matchers_[i].MatchAndExplain(x, &slistener)) {
-        *listener << slistener.str();
-        return true;
-      } else {
-        if (no_match_result.empty()) {
-          no_match_result = slistener.str();
-        } else {
-          std::string result = slistener.str();
-          if (!result.empty()) {
-            no_match_result += ", and ";
-            no_match_result += result;
-          }
-        }
-      }
-    }
-
-    // Otherwise we need to explain why *both* of them fail.
-    *listener << no_match_result;
-    return false;
-  }
-
- private:
-  const std::vector<Matcher<T> > matchers_;
-};
-
-// AnyOfMatcher is used for the variadic implementation of AnyOf(m_1, m_2, ...).
-template <typename... Args>
-using AnyOfMatcher = VariadicMatcher<AnyOfMatcherImpl, Args...>;
-
-// Wrapper for implementation of Any/AllOfArray().
-template <template <class> class MatcherImpl, typename T>
-class SomeOfArrayMatcher {
- public:
-  // Constructs the matcher from a sequence of element values or
-  // element matchers.
-  template <typename Iter>
-  SomeOfArrayMatcher(Iter first, Iter last) : matchers_(first, last) {}
-
-  template <typename U>
-  operator Matcher<U>() const {  // NOLINT
-    using RawU = typename std::decay<U>::type;
-    std::vector<Matcher<RawU>> matchers;
-    for (const auto& matcher : matchers_) {
-      matchers.push_back(MatcherCast<RawU>(matcher));
-    }
-    return Matcher<U>(new MatcherImpl<RawU>(std::move(matchers)));
-  }
-
- private:
-  const ::std::vector<T> matchers_;
-};
-
-template <typename T>
-using AllOfArrayMatcher = SomeOfArrayMatcher<AllOfMatcherImpl, T>;
-
-template <typename T>
-using AnyOfArrayMatcher = SomeOfArrayMatcher<AnyOfMatcherImpl, T>;
-
-// Used for implementing Truly(pred), which turns a predicate into a
-// matcher.
-template <typename Predicate>
-class TrulyMatcher {
- public:
-  explicit TrulyMatcher(Predicate pred) : predicate_(pred) {}
-
-  // This method template allows Truly(pred) to be used as a matcher
-  // for type T where T is the argument type of predicate 'pred'.  The
-  // argument is passed by reference as the predicate may be
-  // interested in the address of the argument.
-  template <typename T>
-  bool MatchAndExplain(T& x,  // NOLINT
-                       MatchResultListener* listener) const {
-    // Without the if-statement, MSVC sometimes warns about converting
-    // a value to bool (warning 4800).
-    //
-    // We cannot write 'return !!predicate_(x);' as that doesn't work
-    // when predicate_(x) returns a class convertible to bool but
-    // having no operator!().
-    if (predicate_(x))
-      return true;
-    *listener << "didn't satisfy the given predicate";
-    return false;
-  }
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << "satisfies the given predicate";
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "doesn't satisfy the given predicate";
-  }
-
- private:
-  Predicate predicate_;
-};
-
-// Used for implementing Matches(matcher), which turns a matcher into
-// a predicate.
-template <typename M>
-class MatcherAsPredicate {
- public:
-  explicit MatcherAsPredicate(M matcher) : matcher_(matcher) {}
-
-  // This template operator() allows Matches(m) to be used as a
-  // predicate on type T where m is a matcher on type T.
-  //
-  // The argument x is passed by reference instead of by value, as
-  // some matcher may be interested in its address (e.g. as in
-  // Matches(Ref(n))(x)).
-  template <typename T>
-  bool operator()(const T& x) const {
-    // We let matcher_ commit to a particular type here instead of
-    // when the MatcherAsPredicate object was constructed.  This
-    // allows us to write Matches(m) where m is a polymorphic matcher
-    // (e.g. Eq(5)).
-    //
-    // If we write Matcher<T>(matcher_).Matches(x) here, it won't
-    // compile when matcher_ has type Matcher<const T&>; if we write
-    // Matcher<const T&>(matcher_).Matches(x) here, it won't compile
-    // when matcher_ has type Matcher<T>; if we just write
-    // matcher_.Matches(x), it won't compile when matcher_ is
-    // polymorphic, e.g. Eq(5).
-    //
-    // MatcherCast<const T&>() is necessary for making the code work
-    // in all of the above situations.
-    return MatcherCast<const T&>(matcher_).Matches(x);
-  }
-
- private:
-  M matcher_;
-};
-
-// For implementing ASSERT_THAT() and EXPECT_THAT().  The template
-// argument M must be a type that can be converted to a matcher.
-template <typename M>
-class PredicateFormatterFromMatcher {
- public:
-  explicit PredicateFormatterFromMatcher(M m) : matcher_(std::move(m)) {}
-
-  // This template () operator allows a PredicateFormatterFromMatcher
-  // object to act as a predicate-formatter suitable for using with
-  // Google Test's EXPECT_PRED_FORMAT1() macro.
-  template <typename T>
-  AssertionResult operator()(const char* value_text, const T& x) const {
-    // We convert matcher_ to a Matcher<const T&> *now* instead of
-    // when the PredicateFormatterFromMatcher object was constructed,
-    // as matcher_ may be polymorphic (e.g. NotNull()) and we won't
-    // know which type to instantiate it to until we actually see the
-    // type of x here.
-    //
-    // We write SafeMatcherCast<const T&>(matcher_) instead of
-    // Matcher<const T&>(matcher_), as the latter won't compile when
-    // matcher_ has type Matcher<T> (e.g. An<int>()).
-    // We don't write MatcherCast<const T&> either, as that allows
-    // potentially unsafe downcasting of the matcher argument.
-    const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
-
-    // The expected path here is that the matcher should match (i.e. that most
-    // tests pass) so optimize for this case.
-    if (matcher.Matches(x)) {
-      return AssertionSuccess();
-    }
-
-    ::std::stringstream ss;
-    ss << "Value of: " << value_text << "\n"
-       << "Expected: ";
-    matcher.DescribeTo(&ss);
-
-    // Rerun the matcher to "PrintAndExplain" the failure.
-    StringMatchResultListener listener;
-    if (MatchPrintAndExplain(x, matcher, &listener)) {
-      ss << "\n  The matcher failed on the initial attempt; but passed when "
-            "rerun to generate the explanation.";
-    }
-    ss << "\n  Actual: " << listener.str();
-    return AssertionFailure() << ss.str();
-  }
-
- private:
-  const M matcher_;
-};
-
-// A helper function for converting a matcher to a predicate-formatter
-// without the user needing to explicitly write the type.  This is
-// used for implementing ASSERT_THAT() and EXPECT_THAT().
-// Implementation detail: 'matcher' is received by-value to force decaying.
-template <typename M>
-inline PredicateFormatterFromMatcher<M>
-MakePredicateFormatterFromMatcher(M matcher) {
-  return PredicateFormatterFromMatcher<M>(std::move(matcher));
-}
-
-// Implements the polymorphic IsNan() matcher, which matches any floating type
-// value that is Nan.
-class IsNanMatcher {
- public:
-  template <typename FloatType>
-  bool MatchAndExplain(const FloatType& f,
-                       MatchResultListener* /* listener */) const {
-    return (::std::isnan)(f);
-  }
-
-  void DescribeTo(::std::ostream* os) const { *os << "is NaN"; }
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "isn't NaN";
-  }
-};
-
-// Implements the polymorphic floating point equality matcher, which matches
-// two float values using ULP-based approximation or, optionally, a
-// user-specified epsilon.  The template is meant to be instantiated with
-// FloatType being either float or double.
-template <typename FloatType>
-class FloatingEqMatcher {
- public:
-  // Constructor for FloatingEqMatcher.
-  // The matcher's input will be compared with expected.  The matcher treats two
-  // NANs as equal if nan_eq_nan is true.  Otherwise, under IEEE standards,
-  // equality comparisons between NANs will always return false.  We specify a
-  // negative max_abs_error_ term to indicate that ULP-based approximation will
-  // be used for comparison.
-  FloatingEqMatcher(FloatType expected, bool nan_eq_nan) :
-    expected_(expected), nan_eq_nan_(nan_eq_nan), max_abs_error_(-1) {
-  }
-
-  // Constructor that supports a user-specified max_abs_error that will be used
-  // for comparison instead of ULP-based approximation.  The max absolute
-  // should be non-negative.
-  FloatingEqMatcher(FloatType expected, bool nan_eq_nan,
-                    FloatType max_abs_error)
-      : expected_(expected),
-        nan_eq_nan_(nan_eq_nan),
-        max_abs_error_(max_abs_error) {
-    GTEST_CHECK_(max_abs_error >= 0)
-        << ", where max_abs_error is" << max_abs_error;
-  }
-
-  // Implements floating point equality matcher as a Matcher<T>.
-  template <typename T>
-  class Impl : public MatcherInterface<T> {
-   public:
-    Impl(FloatType expected, bool nan_eq_nan, FloatType max_abs_error)
-        : expected_(expected),
-          nan_eq_nan_(nan_eq_nan),
-          max_abs_error_(max_abs_error) {}
-
-    bool MatchAndExplain(T value,
-                         MatchResultListener* listener) const override {
-      const FloatingPoint<FloatType> actual(value), expected(expected_);
-
-      // Compares NaNs first, if nan_eq_nan_ is true.
-      if (actual.is_nan() || expected.is_nan()) {
-        if (actual.is_nan() && expected.is_nan()) {
-          return nan_eq_nan_;
-        }
-        // One is nan; the other is not nan.
-        return false;
-      }
-      if (HasMaxAbsError()) {
-        // We perform an equality check so that inf will match inf, regardless
-        // of error bounds.  If the result of value - expected_ would result in
-        // overflow or if either value is inf, the default result is infinity,
-        // which should only match if max_abs_error_ is also infinity.
-        if (value == expected_) {
-          return true;
-        }
-
-        const FloatType diff = value - expected_;
-        if (::std::fabs(diff) <= max_abs_error_) {
-          return true;
-        }
-
-        if (listener->IsInterested()) {
-          *listener << "which is " << diff << " from " << expected_;
-        }
-        return false;
-      } else {
-        return actual.AlmostEquals(expected);
-      }
-    }
-
-    void DescribeTo(::std::ostream* os) const override {
-      // os->precision() returns the previously set precision, which we
-      // store to restore the ostream to its original configuration
-      // after outputting.
-      const ::std::streamsize old_precision = os->precision(
-          ::std::numeric_limits<FloatType>::digits10 + 2);
-      if (FloatingPoint<FloatType>(expected_).is_nan()) {
-        if (nan_eq_nan_) {
-          *os << "is NaN";
-        } else {
-          *os << "never matches";
-        }
-      } else {
-        *os << "is approximately " << expected_;
-        if (HasMaxAbsError()) {
-          *os << " (absolute error <= " << max_abs_error_ << ")";
-        }
-      }
-      os->precision(old_precision);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      // As before, get original precision.
-      const ::std::streamsize old_precision = os->precision(
-          ::std::numeric_limits<FloatType>::digits10 + 2);
-      if (FloatingPoint<FloatType>(expected_).is_nan()) {
-        if (nan_eq_nan_) {
-          *os << "isn't NaN";
-        } else {
-          *os << "is anything";
-        }
-      } else {
-        *os << "isn't approximately " << expected_;
-        if (HasMaxAbsError()) {
-          *os << " (absolute error > " << max_abs_error_ << ")";
-        }
-      }
-      // Restore original precision.
-      os->precision(old_precision);
-    }
-
-   private:
-    bool HasMaxAbsError() const {
-      return max_abs_error_ >= 0;
-    }
-
-    const FloatType expected_;
-    const bool nan_eq_nan_;
-    // max_abs_error will be used for value comparison when >= 0.
-    const FloatType max_abs_error_;
-  };
-
-  // The following 3 type conversion operators allow FloatEq(expected) and
-  // NanSensitiveFloatEq(expected) to be used as a Matcher<float>, a
-  // Matcher<const float&>, or a Matcher<float&>, but nothing else.
-  operator Matcher<FloatType>() const {
-    return MakeMatcher(
-        new Impl<FloatType>(expected_, nan_eq_nan_, max_abs_error_));
-  }
-
-  operator Matcher<const FloatType&>() const {
-    return MakeMatcher(
-        new Impl<const FloatType&>(expected_, nan_eq_nan_, max_abs_error_));
-  }
-
-  operator Matcher<FloatType&>() const {
-    return MakeMatcher(
-        new Impl<FloatType&>(expected_, nan_eq_nan_, max_abs_error_));
-  }
-
- private:
-  const FloatType expected_;
-  const bool nan_eq_nan_;
-  // max_abs_error will be used for value comparison when >= 0.
-  const FloatType max_abs_error_;
-};
-
-// A 2-tuple ("binary") wrapper around FloatingEqMatcher:
-// FloatingEq2Matcher() matches (x, y) by matching FloatingEqMatcher(x, false)
-// against y, and FloatingEq2Matcher(e) matches FloatingEqMatcher(x, false, e)
-// against y. The former implements "Eq", the latter "Near". At present, there
-// is no version that compares NaNs as equal.
-template <typename FloatType>
-class FloatingEq2Matcher {
- public:
-  FloatingEq2Matcher() { Init(-1, false); }
-
-  explicit FloatingEq2Matcher(bool nan_eq_nan) { Init(-1, nan_eq_nan); }
-
-  explicit FloatingEq2Matcher(FloatType max_abs_error) {
-    Init(max_abs_error, false);
-  }
-
-  FloatingEq2Matcher(FloatType max_abs_error, bool nan_eq_nan) {
-    Init(max_abs_error, nan_eq_nan);
-  }
-
-  template <typename T1, typename T2>
-  operator Matcher<::std::tuple<T1, T2>>() const {
-    return MakeMatcher(
-        new Impl<::std::tuple<T1, T2>>(max_abs_error_, nan_eq_nan_));
-  }
-  template <typename T1, typename T2>
-  operator Matcher<const ::std::tuple<T1, T2>&>() const {
-    return MakeMatcher(
-        new Impl<const ::std::tuple<T1, T2>&>(max_abs_error_, nan_eq_nan_));
-  }
-
- private:
-  static ::std::ostream& GetDesc(::std::ostream& os) {  // NOLINT
-    return os << "an almost-equal pair";
-  }
-
-  template <typename Tuple>
-  class Impl : public MatcherInterface<Tuple> {
-   public:
-    Impl(FloatType max_abs_error, bool nan_eq_nan) :
-        max_abs_error_(max_abs_error),
-        nan_eq_nan_(nan_eq_nan) {}
-
-    bool MatchAndExplain(Tuple args,
-                         MatchResultListener* listener) const override {
-      if (max_abs_error_ == -1) {
-        FloatingEqMatcher<FloatType> fm(::std::get<0>(args), nan_eq_nan_);
-        return static_cast<Matcher<FloatType>>(fm).MatchAndExplain(
-            ::std::get<1>(args), listener);
-      } else {
-        FloatingEqMatcher<FloatType> fm(::std::get<0>(args), nan_eq_nan_,
-                                        max_abs_error_);
-        return static_cast<Matcher<FloatType>>(fm).MatchAndExplain(
-            ::std::get<1>(args), listener);
-      }
-    }
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "are " << GetDesc;
-    }
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "aren't " << GetDesc;
-    }
-
-   private:
-    FloatType max_abs_error_;
-    const bool nan_eq_nan_;
-  };
-
-  void Init(FloatType max_abs_error_val, bool nan_eq_nan_val) {
-    max_abs_error_ = max_abs_error_val;
-    nan_eq_nan_ = nan_eq_nan_val;
-  }
-  FloatType max_abs_error_;
-  bool nan_eq_nan_;
-};
-
-// Implements the Pointee(m) matcher for matching a pointer whose
-// pointee matches matcher m.  The pointer can be either raw or smart.
-template <typename InnerMatcher>
-class PointeeMatcher {
- public:
-  explicit PointeeMatcher(const InnerMatcher& matcher) : matcher_(matcher) {}
-
-  // This type conversion operator template allows Pointee(m) to be
-  // used as a matcher for any pointer type whose pointee type is
-  // compatible with the inner matcher, where type Pointer can be
-  // either a raw pointer or a smart pointer.
-  //
-  // The reason we do this instead of relying on
-  // MakePolymorphicMatcher() is that the latter is not flexible
-  // enough for implementing the DescribeTo() method of Pointee().
-  template <typename Pointer>
-  operator Matcher<Pointer>() const {
-    return Matcher<Pointer>(new Impl<const Pointer&>(matcher_));
-  }
-
- private:
-  // The monomorphic implementation that works for a particular pointer type.
-  template <typename Pointer>
-  class Impl : public MatcherInterface<Pointer> {
-   public:
-    using Pointee =
-        typename std::pointer_traits<GTEST_REMOVE_REFERENCE_AND_CONST_(
-            Pointer)>::element_type;
-
-    explicit Impl(const InnerMatcher& matcher)
-        : matcher_(MatcherCast<const Pointee&>(matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "points to a value that ";
-      matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "does not point to a value that ";
-      matcher_.DescribeTo(os);
-    }
-
-    bool MatchAndExplain(Pointer pointer,
-                         MatchResultListener* listener) const override {
-      if (GetRawPointer(pointer) == nullptr) return false;
-
-      *listener << "which points to ";
-      return MatchPrintAndExplain(*pointer, matcher_, listener);
-    }
-
-   private:
-    const Matcher<const Pointee&> matcher_;
-  };
-
-  const InnerMatcher matcher_;
-};
-
-// Implements the Pointer(m) matcher
-// Implements the Pointer(m) matcher for matching a pointer that matches matcher
-// m.  The pointer can be either raw or smart, and will match `m` against the
-// raw pointer.
-template <typename InnerMatcher>
-class PointerMatcher {
- public:
-  explicit PointerMatcher(const InnerMatcher& matcher) : matcher_(matcher) {}
-
-  // This type conversion operator template allows Pointer(m) to be
-  // used as a matcher for any pointer type whose pointer type is
-  // compatible with the inner matcher, where type PointerType can be
-  // either a raw pointer or a smart pointer.
-  //
-  // The reason we do this instead of relying on
-  // MakePolymorphicMatcher() is that the latter is not flexible
-  // enough for implementing the DescribeTo() method of Pointer().
-  template <typename PointerType>
-  operator Matcher<PointerType>() const {  // NOLINT
-    return Matcher<PointerType>(new Impl<const PointerType&>(matcher_));
-  }
-
- private:
-  // The monomorphic implementation that works for a particular pointer type.
-  template <typename PointerType>
-  class Impl : public MatcherInterface<PointerType> {
-   public:
-    using Pointer =
-        const typename std::pointer_traits<GTEST_REMOVE_REFERENCE_AND_CONST_(
-            PointerType)>::element_type*;
-
-    explicit Impl(const InnerMatcher& matcher)
-        : matcher_(MatcherCast<Pointer>(matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "is a pointer that ";
-      matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "is not a pointer that ";
-      matcher_.DescribeTo(os);
-    }
-
-    bool MatchAndExplain(PointerType pointer,
-                         MatchResultListener* listener) const override {
-      *listener << "which is a pointer that ";
-      Pointer p = GetRawPointer(pointer);
-      return MatchPrintAndExplain(p, matcher_, listener);
-    }
-
-   private:
-    Matcher<Pointer> matcher_;
-  };
-
-  const InnerMatcher matcher_;
-};
-
-#if GTEST_HAS_RTTI
-// Implements the WhenDynamicCastTo<T>(m) matcher that matches a pointer or
-// reference that matches inner_matcher when dynamic_cast<T> is applied.
-// The result of dynamic_cast<To> is forwarded to the inner matcher.
-// If To is a pointer and the cast fails, the inner matcher will receive NULL.
-// If To is a reference and the cast fails, this matcher returns false
-// immediately.
-template <typename To>
-class WhenDynamicCastToMatcherBase {
- public:
-  explicit WhenDynamicCastToMatcherBase(const Matcher<To>& matcher)
-      : matcher_(matcher) {}
-
-  void DescribeTo(::std::ostream* os) const {
-    GetCastTypeDescription(os);
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    GetCastTypeDescription(os);
-    matcher_.DescribeNegationTo(os);
-  }
-
- protected:
-  const Matcher<To> matcher_;
-
-  static std::string GetToName() {
-    return GetTypeName<To>();
-  }
-
- private:
-  static void GetCastTypeDescription(::std::ostream* os) {
-    *os << "when dynamic_cast to " << GetToName() << ", ";
-  }
-};
-
-// Primary template.
-// To is a pointer. Cast and forward the result.
-template <typename To>
-class WhenDynamicCastToMatcher : public WhenDynamicCastToMatcherBase<To> {
- public:
-  explicit WhenDynamicCastToMatcher(const Matcher<To>& matcher)
-      : WhenDynamicCastToMatcherBase<To>(matcher) {}
-
-  template <typename From>
-  bool MatchAndExplain(From from, MatchResultListener* listener) const {
-    To to = dynamic_cast<To>(from);
-    return MatchPrintAndExplain(to, this->matcher_, listener);
-  }
-};
-
-// Specialize for references.
-// In this case we return false if the dynamic_cast fails.
-template <typename To>
-class WhenDynamicCastToMatcher<To&> : public WhenDynamicCastToMatcherBase<To&> {
- public:
-  explicit WhenDynamicCastToMatcher(const Matcher<To&>& matcher)
-      : WhenDynamicCastToMatcherBase<To&>(matcher) {}
-
-  template <typename From>
-  bool MatchAndExplain(From& from, MatchResultListener* listener) const {
-    // We don't want an std::bad_cast here, so do the cast with pointers.
-    To* to = dynamic_cast<To*>(&from);
-    if (to == nullptr) {
-      *listener << "which cannot be dynamic_cast to " << this->GetToName();
-      return false;
-    }
-    return MatchPrintAndExplain(*to, this->matcher_, listener);
-  }
-};
-#endif  // GTEST_HAS_RTTI
-
-// Implements the Field() matcher for matching a field (i.e. member
-// variable) of an object.
-template <typename Class, typename FieldType>
-class FieldMatcher {
- public:
-  FieldMatcher(FieldType Class::*field,
-               const Matcher<const FieldType&>& matcher)
-      : field_(field), matcher_(matcher), whose_field_("whose given field ") {}
-
-  FieldMatcher(const std::string& field_name, FieldType Class::*field,
-               const Matcher<const FieldType&>& matcher)
-      : field_(field),
-        matcher_(matcher),
-        whose_field_("whose field `" + field_name + "` ") {}
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << "is an object " << whose_field_;
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "is an object " << whose_field_;
-    matcher_.DescribeNegationTo(os);
-  }
-
-  template <typename T>
-  bool MatchAndExplain(const T& value, MatchResultListener* listener) const {
-    // FIXME: The dispatch on std::is_pointer was introduced as a workaround for
-    // a compiler bug, and can now be removed.
-    return MatchAndExplainImpl(
-        typename std::is_pointer<typename std::remove_const<T>::type>::type(),
-        value, listener);
-  }
-
- private:
-  bool MatchAndExplainImpl(std::false_type /* is_not_pointer */,
-                           const Class& obj,
-                           MatchResultListener* listener) const {
-    *listener << whose_field_ << "is ";
-    return MatchPrintAndExplain(obj.*field_, matcher_, listener);
-  }
-
-  bool MatchAndExplainImpl(std::true_type /* is_pointer */, const Class* p,
-                           MatchResultListener* listener) const {
-    if (p == nullptr) return false;
-
-    *listener << "which points to an object ";
-    // Since *p has a field, it must be a class/struct/union type and
-    // thus cannot be a pointer.  Therefore we pass false_type() as
-    // the first argument.
-    return MatchAndExplainImpl(std::false_type(), *p, listener);
-  }
-
-  const FieldType Class::*field_;
-  const Matcher<const FieldType&> matcher_;
-
-  // Contains either "whose given field " if the name of the field is unknown
-  // or "whose field `name_of_field` " if the name is known.
-  const std::string whose_field_;
-};
-
-// Implements the Property() matcher for matching a property
-// (i.e. return value of a getter method) of an object.
-//
-// Property is a const-qualified member function of Class returning
-// PropertyType.
-template <typename Class, typename PropertyType, typename Property>
-class PropertyMatcher {
- public:
-  typedef const PropertyType& RefToConstProperty;
-
-  PropertyMatcher(Property property, const Matcher<RefToConstProperty>& matcher)
-      : property_(property),
-        matcher_(matcher),
-        whose_property_("whose given property ") {}
-
-  PropertyMatcher(const std::string& property_name, Property property,
-                  const Matcher<RefToConstProperty>& matcher)
-      : property_(property),
-        matcher_(matcher),
-        whose_property_("whose property `" + property_name + "` ") {}
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << "is an object " << whose_property_;
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "is an object " << whose_property_;
-    matcher_.DescribeNegationTo(os);
-  }
-
-  template <typename T>
-  bool MatchAndExplain(const T&value, MatchResultListener* listener) const {
-    return MatchAndExplainImpl(
-        typename std::is_pointer<typename std::remove_const<T>::type>::type(),
-        value, listener);
-  }
-
- private:
-  bool MatchAndExplainImpl(std::false_type /* is_not_pointer */,
-                           const Class& obj,
-                           MatchResultListener* listener) const {
-    *listener << whose_property_ << "is ";
-    // Cannot pass the return value (for example, int) to MatchPrintAndExplain,
-    // which takes a non-const reference as argument.
-    RefToConstProperty result = (obj.*property_)();
-    return MatchPrintAndExplain(result, matcher_, listener);
-  }
-
-  bool MatchAndExplainImpl(std::true_type /* is_pointer */, const Class* p,
-                           MatchResultListener* listener) const {
-    if (p == nullptr) return false;
-
-    *listener << "which points to an object ";
-    // Since *p has a property method, it must be a class/struct/union
-    // type and thus cannot be a pointer.  Therefore we pass
-    // false_type() as the first argument.
-    return MatchAndExplainImpl(std::false_type(), *p, listener);
-  }
-
-  Property property_;
-  const Matcher<RefToConstProperty> matcher_;
-
-  // Contains either "whose given property " if the name of the property is
-  // unknown or "whose property `name_of_property` " if the name is known.
-  const std::string whose_property_;
-};
-
-// Type traits specifying various features of different functors for ResultOf.
-// The default template specifies features for functor objects.
-template <typename Functor>
-struct CallableTraits {
-  typedef Functor StorageType;
-
-  static void CheckIsValid(Functor /* functor */) {}
-
-  template <typename T>
-  static auto Invoke(Functor f, const T& arg) -> decltype(f(arg)) {
-    return f(arg);
-  }
-};
-
-// Specialization for function pointers.
-template <typename ArgType, typename ResType>
-struct CallableTraits<ResType(*)(ArgType)> {
-  typedef ResType ResultType;
-  typedef ResType(*StorageType)(ArgType);
-
-  static void CheckIsValid(ResType(*f)(ArgType)) {
-    GTEST_CHECK_(f != nullptr)
-        << "NULL function pointer is passed into ResultOf().";
-  }
-  template <typename T>
-  static ResType Invoke(ResType(*f)(ArgType), T arg) {
-    return (*f)(arg);
-  }
-};
-
-// Implements the ResultOf() matcher for matching a return value of a
-// unary function of an object.
-template <typename Callable, typename InnerMatcher>
-class ResultOfMatcher {
- public:
-  ResultOfMatcher(Callable callable, InnerMatcher matcher)
-      : callable_(std::move(callable)), matcher_(std::move(matcher)) {
-    CallableTraits<Callable>::CheckIsValid(callable_);
-  }
-
-  template <typename T>
-  operator Matcher<T>() const {
-    return Matcher<T>(new Impl<const T&>(callable_, matcher_));
-  }
-
- private:
-  typedef typename CallableTraits<Callable>::StorageType CallableStorageType;
-
-  template <typename T>
-  class Impl : public MatcherInterface<T> {
-    using ResultType = decltype(CallableTraits<Callable>::template Invoke<T>(
-        std::declval<CallableStorageType>(), std::declval<T>()));
-
-   public:
-    template <typename M>
-    Impl(const CallableStorageType& callable, const M& matcher)
-        : callable_(callable), matcher_(MatcherCast<ResultType>(matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "is mapped by the given callable to a value that ";
-      matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "is mapped by the given callable to a value that ";
-      matcher_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(T obj, MatchResultListener* listener) const override {
-      *listener << "which is mapped by the given callable to ";
-      // Cannot pass the return value directly to MatchPrintAndExplain, which
-      // takes a non-const reference as argument.
-      // Also, specifying template argument explicitly is needed because T could
-      // be a non-const reference (e.g. Matcher<Uncopyable&>).
-      ResultType result =
-          CallableTraits<Callable>::template Invoke<T>(callable_, obj);
-      return MatchPrintAndExplain(result, matcher_, listener);
-    }
-
-   private:
-    // Functors often define operator() as non-const method even though
-    // they are actually stateless. But we need to use them even when
-    // 'this' is a const pointer. It's the user's responsibility not to
-    // use stateful callables with ResultOf(), which doesn't guarantee
-    // how many times the callable will be invoked.
-    mutable CallableStorageType callable_;
-    const Matcher<ResultType> matcher_;
-  };  // class Impl
-
-  const CallableStorageType callable_;
-  const InnerMatcher matcher_;
-};
-
-// Implements a matcher that checks the size of an STL-style container.
-template <typename SizeMatcher>
-class SizeIsMatcher {
- public:
-  explicit SizeIsMatcher(const SizeMatcher& size_matcher)
-       : size_matcher_(size_matcher) {
-  }
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    return Matcher<Container>(new Impl<const Container&>(size_matcher_));
-  }
-
-  template <typename Container>
-  class Impl : public MatcherInterface<Container> {
-   public:
-    using SizeType = decltype(std::declval<Container>().size());
-    explicit Impl(const SizeMatcher& size_matcher)
-        : size_matcher_(MatcherCast<SizeType>(size_matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "size ";
-      size_matcher_.DescribeTo(os);
-    }
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "size ";
-      size_matcher_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(Container container,
-                         MatchResultListener* listener) const override {
-      SizeType size = container.size();
-      StringMatchResultListener size_listener;
-      const bool result = size_matcher_.MatchAndExplain(size, &size_listener);
-      *listener
-          << "whose size " << size << (result ? " matches" : " doesn't match");
-      PrintIfNotEmpty(size_listener.str(), listener->stream());
-      return result;
-    }
-
-   private:
-    const Matcher<SizeType> size_matcher_;
-  };
-
- private:
-  const SizeMatcher size_matcher_;
-};
-
-// Implements a matcher that checks the begin()..end() distance of an STL-style
-// container.
-template <typename DistanceMatcher>
-class BeginEndDistanceIsMatcher {
- public:
-  explicit BeginEndDistanceIsMatcher(const DistanceMatcher& distance_matcher)
-      : distance_matcher_(distance_matcher) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    return Matcher<Container>(new Impl<const Container&>(distance_matcher_));
-  }
-
-  template <typename Container>
-  class Impl : public MatcherInterface<Container> {
-   public:
-    typedef internal::StlContainerView<
-        GTEST_REMOVE_REFERENCE_AND_CONST_(Container)> ContainerView;
-    typedef typename std::iterator_traits<
-        typename ContainerView::type::const_iterator>::difference_type
-        DistanceType;
-    explicit Impl(const DistanceMatcher& distance_matcher)
-        : distance_matcher_(MatcherCast<DistanceType>(distance_matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "distance between begin() and end() ";
-      distance_matcher_.DescribeTo(os);
-    }
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "distance between begin() and end() ";
-      distance_matcher_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(Container container,
-                         MatchResultListener* listener) const override {
-      using std::begin;
-      using std::end;
-      DistanceType distance = std::distance(begin(container), end(container));
-      StringMatchResultListener distance_listener;
-      const bool result =
-          distance_matcher_.MatchAndExplain(distance, &distance_listener);
-      *listener << "whose distance between begin() and end() " << distance
-                << (result ? " matches" : " doesn't match");
-      PrintIfNotEmpty(distance_listener.str(), listener->stream());
-      return result;
-    }
-
-   private:
-    const Matcher<DistanceType> distance_matcher_;
-  };
-
- private:
-  const DistanceMatcher distance_matcher_;
-};
-
-// Implements an equality matcher for any STL-style container whose elements
-// support ==. This matcher is like Eq(), but its failure explanations provide
-// more detailed information that is useful when the container is used as a set.
-// The failure message reports elements that are in one of the operands but not
-// the other. The failure messages do not report duplicate or out-of-order
-// elements in the containers (which don't properly matter to sets, but can
-// occur if the containers are vectors or lists, for example).
-//
-// Uses the container's const_iterator, value_type, operator ==,
-// begin(), and end().
-template <typename Container>
-class ContainerEqMatcher {
- public:
-  typedef internal::StlContainerView<Container> View;
-  typedef typename View::type StlContainer;
-  typedef typename View::const_reference StlContainerReference;
-
-  static_assert(!std::is_const<Container>::value,
-                "Container type must not be const");
-  static_assert(!std::is_reference<Container>::value,
-                "Container type must not be a reference");
-
-  // We make a copy of expected in case the elements in it are modified
-  // after this matcher is created.
-  explicit ContainerEqMatcher(const Container& expected)
-      : expected_(View::Copy(expected)) {}
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << "equals ";
-    UniversalPrint(expected_, os);
-  }
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "does not equal ";
-    UniversalPrint(expected_, os);
-  }
-
-  template <typename LhsContainer>
-  bool MatchAndExplain(const LhsContainer& lhs,
-                       MatchResultListener* listener) const {
-    typedef internal::StlContainerView<
-        typename std::remove_const<LhsContainer>::type>
-        LhsView;
-    typedef typename LhsView::type LhsStlContainer;
-    StlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
-    if (lhs_stl_container == expected_)
-      return true;
-
-    ::std::ostream* const os = listener->stream();
-    if (os != nullptr) {
-      // Something is different. Check for extra values first.
-      bool printed_header = false;
-      for (typename LhsStlContainer::const_iterator it =
-               lhs_stl_container.begin();
-           it != lhs_stl_container.end(); ++it) {
-        if (internal::ArrayAwareFind(expected_.begin(), expected_.end(), *it) ==
-            expected_.end()) {
-          if (printed_header) {
-            *os << ", ";
-          } else {
-            *os << "which has these unexpected elements: ";
-            printed_header = true;
-          }
-          UniversalPrint(*it, os);
-        }
-      }
-
-      // Now check for missing values.
-      bool printed_header2 = false;
-      for (typename StlContainer::const_iterator it = expected_.begin();
-           it != expected_.end(); ++it) {
-        if (internal::ArrayAwareFind(
-                lhs_stl_container.begin(), lhs_stl_container.end(), *it) ==
-            lhs_stl_container.end()) {
-          if (printed_header2) {
-            *os << ", ";
-          } else {
-            *os << (printed_header ? ",\nand" : "which")
-                << " doesn't have these expected elements: ";
-            printed_header2 = true;
-          }
-          UniversalPrint(*it, os);
-        }
-      }
-    }
-
-    return false;
-  }
-
- private:
-  const StlContainer expected_;
-};
-
-// A comparator functor that uses the < operator to compare two values.
-struct LessComparator {
-  template <typename T, typename U>
-  bool operator()(const T& lhs, const U& rhs) const { return lhs < rhs; }
-};
-
-// Implements WhenSortedBy(comparator, container_matcher).
-template <typename Comparator, typename ContainerMatcher>
-class WhenSortedByMatcher {
- public:
-  WhenSortedByMatcher(const Comparator& comparator,
-                      const ContainerMatcher& matcher)
-      : comparator_(comparator), matcher_(matcher) {}
-
-  template <typename LhsContainer>
-  operator Matcher<LhsContainer>() const {
-    return MakeMatcher(new Impl<LhsContainer>(comparator_, matcher_));
-  }
-
-  template <typename LhsContainer>
-  class Impl : public MatcherInterface<LhsContainer> {
-   public:
-    typedef internal::StlContainerView<
-         GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
-    typedef typename LhsView::type LhsStlContainer;
-    typedef typename LhsView::const_reference LhsStlContainerReference;
-    // Transforms std::pair<const Key, Value> into std::pair<Key, Value>
-    // so that we can match associative containers.
-    typedef typename RemoveConstFromKey<
-        typename LhsStlContainer::value_type>::type LhsValue;
-
-    Impl(const Comparator& comparator, const ContainerMatcher& matcher)
-        : comparator_(comparator), matcher_(matcher) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "(when sorted) ";
-      matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "(when sorted) ";
-      matcher_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(LhsContainer lhs,
-                         MatchResultListener* listener) const override {
-      LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
-      ::std::vector<LhsValue> sorted_container(lhs_stl_container.begin(),
-                                               lhs_stl_container.end());
-      ::std::sort(
-           sorted_container.begin(), sorted_container.end(), comparator_);
-
-      if (!listener->IsInterested()) {
-        // If the listener is not interested, we do not need to
-        // construct the inner explanation.
-        return matcher_.Matches(sorted_container);
-      }
-
-      *listener << "which is ";
-      UniversalPrint(sorted_container, listener->stream());
-      *listener << " when sorted";
-
-      StringMatchResultListener inner_listener;
-      const bool match = matcher_.MatchAndExplain(sorted_container,
-                                                  &inner_listener);
-      PrintIfNotEmpty(inner_listener.str(), listener->stream());
-      return match;
-    }
-
-   private:
-    const Comparator comparator_;
-    const Matcher<const ::std::vector<LhsValue>&> matcher_;
-
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
-  };
-
- private:
-  const Comparator comparator_;
-  const ContainerMatcher matcher_;
-};
-
-// Implements Pointwise(tuple_matcher, rhs_container).  tuple_matcher
-// must be able to be safely cast to Matcher<std::tuple<const T1&, const
-// T2&> >, where T1 and T2 are the types of elements in the LHS
-// container and the RHS container respectively.
-template <typename TupleMatcher, typename RhsContainer>
-class PointwiseMatcher {
-  GTEST_COMPILE_ASSERT_(
-      !IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(RhsContainer)>::value,
-      use_UnorderedPointwise_with_hash_tables);
-
- public:
-  typedef internal::StlContainerView<RhsContainer> RhsView;
-  typedef typename RhsView::type RhsStlContainer;
-  typedef typename RhsStlContainer::value_type RhsValue;
-
-  static_assert(!std::is_const<RhsContainer>::value,
-                "RhsContainer type must not be const");
-  static_assert(!std::is_reference<RhsContainer>::value,
-                "RhsContainer type must not be a reference");
-
-  // Like ContainerEq, we make a copy of rhs in case the elements in
-  // it are modified after this matcher is created.
-  PointwiseMatcher(const TupleMatcher& tuple_matcher, const RhsContainer& rhs)
-      : tuple_matcher_(tuple_matcher), rhs_(RhsView::Copy(rhs)) {}
-
-  template <typename LhsContainer>
-  operator Matcher<LhsContainer>() const {
-    GTEST_COMPILE_ASSERT_(
-        !IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)>::value,
-        use_UnorderedPointwise_with_hash_tables);
-
-    return Matcher<LhsContainer>(
-        new Impl<const LhsContainer&>(tuple_matcher_, rhs_));
-  }
-
-  template <typename LhsContainer>
-  class Impl : public MatcherInterface<LhsContainer> {
-   public:
-    typedef internal::StlContainerView<
-         GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
-    typedef typename LhsView::type LhsStlContainer;
-    typedef typename LhsView::const_reference LhsStlContainerReference;
-    typedef typename LhsStlContainer::value_type LhsValue;
-    // We pass the LHS value and the RHS value to the inner matcher by
-    // reference, as they may be expensive to copy.  We must use tuple
-    // instead of pair here, as a pair cannot hold references (C++ 98,
-    // 20.2.2 [lib.pairs]).
-    typedef ::std::tuple<const LhsValue&, const RhsValue&> InnerMatcherArg;
-
-    Impl(const TupleMatcher& tuple_matcher, const RhsStlContainer& rhs)
-        // mono_tuple_matcher_ holds a monomorphic version of the tuple matcher.
-        : mono_tuple_matcher_(SafeMatcherCast<InnerMatcherArg>(tuple_matcher)),
-          rhs_(rhs) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "contains " << rhs_.size()
-          << " values, where each value and its corresponding value in ";
-      UniversalPrinter<RhsStlContainer>::Print(rhs_, os);
-      *os << " ";
-      mono_tuple_matcher_.DescribeTo(os);
-    }
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "doesn't contain exactly " << rhs_.size()
-          << " values, or contains a value x at some index i"
-          << " where x and the i-th value of ";
-      UniversalPrint(rhs_, os);
-      *os << " ";
-      mono_tuple_matcher_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(LhsContainer lhs,
-                         MatchResultListener* listener) const override {
-      LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
-      const size_t actual_size = lhs_stl_container.size();
-      if (actual_size != rhs_.size()) {
-        *listener << "which contains " << actual_size << " values";
-        return false;
-      }
-
-      typename LhsStlContainer::const_iterator left = lhs_stl_container.begin();
-      typename RhsStlContainer::const_iterator right = rhs_.begin();
-      for (size_t i = 0; i != actual_size; ++i, ++left, ++right) {
-        if (listener->IsInterested()) {
-          StringMatchResultListener inner_listener;
-          // Create InnerMatcherArg as a temporarily object to avoid it outlives
-          // *left and *right. Dereference or the conversion to `const T&` may
-          // return temp objects, e.g for vector<bool>.
-          if (!mono_tuple_matcher_.MatchAndExplain(
-                  InnerMatcherArg(ImplicitCast_<const LhsValue&>(*left),
-                                  ImplicitCast_<const RhsValue&>(*right)),
-                  &inner_listener)) {
-            *listener << "where the value pair (";
-            UniversalPrint(*left, listener->stream());
-            *listener << ", ";
-            UniversalPrint(*right, listener->stream());
-            *listener << ") at index #" << i << " don't match";
-            PrintIfNotEmpty(inner_listener.str(), listener->stream());
-            return false;
-          }
-        } else {
-          if (!mono_tuple_matcher_.Matches(
-                  InnerMatcherArg(ImplicitCast_<const LhsValue&>(*left),
-                                  ImplicitCast_<const RhsValue&>(*right))))
-            return false;
-        }
-      }
-
-      return true;
-    }
-
-   private:
-    const Matcher<InnerMatcherArg> mono_tuple_matcher_;
-    const RhsStlContainer rhs_;
-  };
-
- private:
-  const TupleMatcher tuple_matcher_;
-  const RhsStlContainer rhs_;
-};
-
-// Holds the logic common to ContainsMatcherImpl and EachMatcherImpl.
-template <typename Container>
-class QuantifierMatcherImpl : public MatcherInterface<Container> {
- public:
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
-  typedef StlContainerView<RawContainer> View;
-  typedef typename View::type StlContainer;
-  typedef typename View::const_reference StlContainerReference;
-  typedef typename StlContainer::value_type Element;
-
-  template <typename InnerMatcher>
-  explicit QuantifierMatcherImpl(InnerMatcher inner_matcher)
-      : inner_matcher_(
-           testing::SafeMatcherCast<const Element&>(inner_matcher)) {}
-
-  // Checks whether:
-  // * All elements in the container match, if all_elements_should_match.
-  // * Any element in the container matches, if !all_elements_should_match.
-  bool MatchAndExplainImpl(bool all_elements_should_match,
-                           Container container,
-                           MatchResultListener* listener) const {
-    StlContainerReference stl_container = View::ConstReference(container);
-    size_t i = 0;
-    for (typename StlContainer::const_iterator it = stl_container.begin();
-         it != stl_container.end(); ++it, ++i) {
-      StringMatchResultListener inner_listener;
-      const bool matches = inner_matcher_.MatchAndExplain(*it, &inner_listener);
-
-      if (matches != all_elements_should_match) {
-        *listener << "whose element #" << i
-                  << (matches ? " matches" : " doesn't match");
-        PrintIfNotEmpty(inner_listener.str(), listener->stream());
-        return !all_elements_should_match;
-      }
-    }
-    return all_elements_should_match;
-  }
-
- protected:
-  const Matcher<const Element&> inner_matcher_;
-};
-
-// Implements Contains(element_matcher) for the given argument type Container.
-// Symmetric to EachMatcherImpl.
-template <typename Container>
-class ContainsMatcherImpl : public QuantifierMatcherImpl<Container> {
- public:
-  template <typename InnerMatcher>
-  explicit ContainsMatcherImpl(InnerMatcher inner_matcher)
-      : QuantifierMatcherImpl<Container>(inner_matcher) {}
-
-  // Describes what this matcher does.
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "contains at least one element that ";
-    this->inner_matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "doesn't contain any element that ";
-    this->inner_matcher_.DescribeTo(os);
-  }
-
-  bool MatchAndExplain(Container container,
-                       MatchResultListener* listener) const override {
-    return this->MatchAndExplainImpl(false, container, listener);
-  }
-};
-
-// Implements Each(element_matcher) for the given argument type Container.
-// Symmetric to ContainsMatcherImpl.
-template <typename Container>
-class EachMatcherImpl : public QuantifierMatcherImpl<Container> {
- public:
-  template <typename InnerMatcher>
-  explicit EachMatcherImpl(InnerMatcher inner_matcher)
-      : QuantifierMatcherImpl<Container>(inner_matcher) {}
-
-  // Describes what this matcher does.
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "only contains elements that ";
-    this->inner_matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "contains some element that ";
-    this->inner_matcher_.DescribeNegationTo(os);
-  }
-
-  bool MatchAndExplain(Container container,
-                       MatchResultListener* listener) const override {
-    return this->MatchAndExplainImpl(true, container, listener);
-  }
-};
-
-// Implements polymorphic Contains(element_matcher).
-template <typename M>
-class ContainsMatcher {
- public:
-  explicit ContainsMatcher(M m) : inner_matcher_(m) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    return Matcher<Container>(
-        new ContainsMatcherImpl<const Container&>(inner_matcher_));
-  }
-
- private:
-  const M inner_matcher_;
-};
-
-// Implements polymorphic Each(element_matcher).
-template <typename M>
-class EachMatcher {
- public:
-  explicit EachMatcher(M m) : inner_matcher_(m) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    return Matcher<Container>(
-        new EachMatcherImpl<const Container&>(inner_matcher_));
-  }
-
- private:
-  const M inner_matcher_;
-};
-
-struct Rank1 {};
-struct Rank0 : Rank1 {};
-
-namespace pair_getters {
-using std::get;
-template <typename T>
-auto First(T& x, Rank1) -> decltype(get<0>(x)) {  // NOLINT
-  return get<0>(x);
-}
-template <typename T>
-auto First(T& x, Rank0) -> decltype((x.first)) {  // NOLINT
-  return x.first;
-}
-
-template <typename T>
-auto Second(T& x, Rank1) -> decltype(get<1>(x)) {  // NOLINT
-  return get<1>(x);
-}
-template <typename T>
-auto Second(T& x, Rank0) -> decltype((x.second)) {  // NOLINT
-  return x.second;
-}
-}  // namespace pair_getters
-
-// Implements Key(inner_matcher) for the given argument pair type.
-// Key(inner_matcher) matches an std::pair whose 'first' field matches
-// inner_matcher.  For example, Contains(Key(Ge(5))) can be used to match an
-// std::map that contains at least one element whose key is >= 5.
-template <typename PairType>
-class KeyMatcherImpl : public MatcherInterface<PairType> {
- public:
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
-  typedef typename RawPairType::first_type KeyType;
-
-  template <typename InnerMatcher>
-  explicit KeyMatcherImpl(InnerMatcher inner_matcher)
-      : inner_matcher_(
-          testing::SafeMatcherCast<const KeyType&>(inner_matcher)) {
-  }
-
-  // Returns true if and only if 'key_value.first' (the key) matches the inner
-  // matcher.
-  bool MatchAndExplain(PairType key_value,
-                       MatchResultListener* listener) const override {
-    StringMatchResultListener inner_listener;
-    const bool match = inner_matcher_.MatchAndExplain(
-        pair_getters::First(key_value, Rank0()), &inner_listener);
-    const std::string explanation = inner_listener.str();
-    if (explanation != "") {
-      *listener << "whose first field is a value " << explanation;
-    }
-    return match;
-  }
-
-  // Describes what this matcher does.
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "has a key that ";
-    inner_matcher_.DescribeTo(os);
-  }
-
-  // Describes what the negation of this matcher does.
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "doesn't have a key that ";
-    inner_matcher_.DescribeTo(os);
-  }
-
- private:
-  const Matcher<const KeyType&> inner_matcher_;
-};
-
-// Implements polymorphic Key(matcher_for_key).
-template <typename M>
-class KeyMatcher {
- public:
-  explicit KeyMatcher(M m) : matcher_for_key_(m) {}
-
-  template <typename PairType>
-  operator Matcher<PairType>() const {
-    return Matcher<PairType>(
-        new KeyMatcherImpl<const PairType&>(matcher_for_key_));
-  }
-
- private:
-  const M matcher_for_key_;
-};
-
-// Implements polymorphic Address(matcher_for_address).
-template <typename InnerMatcher>
-class AddressMatcher {
- public:
-  explicit AddressMatcher(InnerMatcher m) : matcher_(m) {}
-
-  template <typename Type>
-  operator Matcher<Type>() const {  // NOLINT
-    return Matcher<Type>(new Impl<const Type&>(matcher_));
-  }
-
- private:
-  // The monomorphic implementation that works for a particular object type.
-  template <typename Type>
-  class Impl : public MatcherInterface<Type> {
-   public:
-    using Address = const GTEST_REMOVE_REFERENCE_AND_CONST_(Type) *;
-    explicit Impl(const InnerMatcher& matcher)
-        : matcher_(MatcherCast<Address>(matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "has address that ";
-      matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "does not have address that ";
-      matcher_.DescribeTo(os);
-    }
-
-    bool MatchAndExplain(Type object,
-                         MatchResultListener* listener) const override {
-      *listener << "which has address ";
-      Address address = std::addressof(object);
-      return MatchPrintAndExplain(address, matcher_, listener);
-    }
-
-   private:
-    const Matcher<Address> matcher_;
-  };
-  const InnerMatcher matcher_;
-};
-
-// Implements Pair(first_matcher, second_matcher) for the given argument pair
-// type with its two matchers. See Pair() function below.
-template <typename PairType>
-class PairMatcherImpl : public MatcherInterface<PairType> {
- public:
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
-  typedef typename RawPairType::first_type FirstType;
-  typedef typename RawPairType::second_type SecondType;
-
-  template <typename FirstMatcher, typename SecondMatcher>
-  PairMatcherImpl(FirstMatcher first_matcher, SecondMatcher second_matcher)
-      : first_matcher_(
-            testing::SafeMatcherCast<const FirstType&>(first_matcher)),
-        second_matcher_(
-            testing::SafeMatcherCast<const SecondType&>(second_matcher)) {
-  }
-
-  // Describes what this matcher does.
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "has a first field that ";
-    first_matcher_.DescribeTo(os);
-    *os << ", and has a second field that ";
-    second_matcher_.DescribeTo(os);
-  }
-
-  // Describes what the negation of this matcher does.
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "has a first field that ";
-    first_matcher_.DescribeNegationTo(os);
-    *os << ", or has a second field that ";
-    second_matcher_.DescribeNegationTo(os);
-  }
-
-  // Returns true if and only if 'a_pair.first' matches first_matcher and
-  // 'a_pair.second' matches second_matcher.
-  bool MatchAndExplain(PairType a_pair,
-                       MatchResultListener* listener) const override {
-    if (!listener->IsInterested()) {
-      // If the listener is not interested, we don't need to construct the
-      // explanation.
-      return first_matcher_.Matches(pair_getters::First(a_pair, Rank0())) &&
-             second_matcher_.Matches(pair_getters::Second(a_pair, Rank0()));
-    }
-    StringMatchResultListener first_inner_listener;
-    if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank0()),
-                                        &first_inner_listener)) {
-      *listener << "whose first field does not match";
-      PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
-      return false;
-    }
-    StringMatchResultListener second_inner_listener;
-    if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank0()),
-                                         &second_inner_listener)) {
-      *listener << "whose second field does not match";
-      PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
-      return false;
-    }
-    ExplainSuccess(first_inner_listener.str(), second_inner_listener.str(),
-                   listener);
-    return true;
-  }
-
- private:
-  void ExplainSuccess(const std::string& first_explanation,
-                      const std::string& second_explanation,
-                      MatchResultListener* listener) const {
-    *listener << "whose both fields match";
-    if (first_explanation != "") {
-      *listener << ", where the first field is a value " << first_explanation;
-    }
-    if (second_explanation != "") {
-      *listener << ", ";
-      if (first_explanation != "") {
-        *listener << "and ";
-      } else {
-        *listener << "where ";
-      }
-      *listener << "the second field is a value " << second_explanation;
-    }
-  }
-
-  const Matcher<const FirstType&> first_matcher_;
-  const Matcher<const SecondType&> second_matcher_;
-};
-
-// Implements polymorphic Pair(first_matcher, second_matcher).
-template <typename FirstMatcher, typename SecondMatcher>
-class PairMatcher {
- public:
-  PairMatcher(FirstMatcher first_matcher, SecondMatcher second_matcher)
-      : first_matcher_(first_matcher), second_matcher_(second_matcher) {}
-
-  template <typename PairType>
-  operator Matcher<PairType> () const {
-    return Matcher<PairType>(
-        new PairMatcherImpl<const PairType&>(first_matcher_, second_matcher_));
-  }
-
- private:
-  const FirstMatcher first_matcher_;
-  const SecondMatcher second_matcher_;
-};
-
-template <typename T, size_t... I>
-auto UnpackStructImpl(const T& t, IndexSequence<I...>, int)
-    -> decltype(std::tie(get<I>(t)...)) {
-  static_assert(std::tuple_size<T>::value == sizeof...(I),
-                "Number of arguments doesn't match the number of fields.");
-  return std::tie(get<I>(t)...);
-}
-
-#if defined(__cpp_structured_bindings) && __cpp_structured_bindings >= 201606
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<1>, char) {
-  const auto& [a] = t;
-  return std::tie(a);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<2>, char) {
-  const auto& [a, b] = t;
-  return std::tie(a, b);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<3>, char) {
-  const auto& [a, b, c] = t;
-  return std::tie(a, b, c);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<4>, char) {
-  const auto& [a, b, c, d] = t;
-  return std::tie(a, b, c, d);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<5>, char) {
-  const auto& [a, b, c, d, e] = t;
-  return std::tie(a, b, c, d, e);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<6>, char) {
-  const auto& [a, b, c, d, e, f] = t;
-  return std::tie(a, b, c, d, e, f);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<7>, char) {
-  const auto& [a, b, c, d, e, f, g] = t;
-  return std::tie(a, b, c, d, e, f, g);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<8>, char) {
-  const auto& [a, b, c, d, e, f, g, h] = t;
-  return std::tie(a, b, c, d, e, f, g, h);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<9>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<10>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<11>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j, k] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j, k);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<12>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j, k, l] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<13>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<14>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m, n] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<15>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
-}
-template <typename T>
-auto UnpackStructImpl(const T& t, MakeIndexSequence<16>, char) {
-  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p] = t;
-  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
-}
-#endif  // defined(__cpp_structured_bindings)
-
-template <size_t I, typename T>
-auto UnpackStruct(const T& t)
-    -> decltype((UnpackStructImpl)(t, MakeIndexSequence<I>{}, 0)) {
-  return (UnpackStructImpl)(t, MakeIndexSequence<I>{}, 0);
-}
-
-// Helper function to do comma folding in C++11.
-// The array ensures left-to-right order of evaluation.
-// Usage: VariadicExpand({expr...});
-template <typename T, size_t N>
-void VariadicExpand(const T (&)[N]) {}
-
-template <typename Struct, typename StructSize>
-class FieldsAreMatcherImpl;
-
-template <typename Struct, size_t... I>
-class FieldsAreMatcherImpl<Struct, IndexSequence<I...>>
-    : public MatcherInterface<Struct> {
-  using UnpackedType =
-      decltype(UnpackStruct<sizeof...(I)>(std::declval<const Struct&>()));
-  using MatchersType = std::tuple<
-      Matcher<const typename std::tuple_element<I, UnpackedType>::type&>...>;
-
- public:
-  template <typename Inner>
-  explicit FieldsAreMatcherImpl(const Inner& matchers)
-      : matchers_(testing::SafeMatcherCast<
-                  const typename std::tuple_element<I, UnpackedType>::type&>(
-            std::get<I>(matchers))...) {}
-
-  void DescribeTo(::std::ostream* os) const override {
-    const char* separator = "";
-    VariadicExpand(
-        {(*os << separator << "has field #" << I << " that ",
-          std::get<I>(matchers_).DescribeTo(os), separator = ", and ")...});
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    const char* separator = "";
-    VariadicExpand({(*os << separator << "has field #" << I << " that ",
-                     std::get<I>(matchers_).DescribeNegationTo(os),
-                     separator = ", or ")...});
-  }
-
-  bool MatchAndExplain(Struct t, MatchResultListener* listener) const override {
-    return MatchInternal((UnpackStruct<sizeof...(I)>)(t), listener);
-  }
-
- private:
-  bool MatchInternal(UnpackedType tuple, MatchResultListener* listener) const {
-    if (!listener->IsInterested()) {
-      // If the listener is not interested, we don't need to construct the
-      // explanation.
-      bool good = true;
-      VariadicExpand({good = good && std::get<I>(matchers_).Matches(
-                                         std::get<I>(tuple))...});
-      return good;
-    }
-
-    size_t failed_pos = ~size_t{};
-
-    std::vector<StringMatchResultListener> inner_listener(sizeof...(I));
-
-    VariadicExpand(
-        {failed_pos == ~size_t{} && !std::get<I>(matchers_).MatchAndExplain(
-                                        std::get<I>(tuple), &inner_listener[I])
-             ? failed_pos = I
-             : 0 ...});
-    if (failed_pos != ~size_t{}) {
-      *listener << "whose field #" << failed_pos << " does not match";
-      PrintIfNotEmpty(inner_listener[failed_pos].str(), listener->stream());
-      return false;
-    }
-
-    *listener << "whose all elements match";
-    const char* separator = ", where";
-    for (size_t index = 0; index < sizeof...(I); ++index) {
-      const std::string str = inner_listener[index].str();
-      if (!str.empty()) {
-        *listener << separator << " field #" << index << " is a value " << str;
-        separator = ", and";
-      }
-    }
-
-    return true;
-  }
-
-  MatchersType matchers_;
-};
-
-template <typename... Inner>
-class FieldsAreMatcher {
- public:
-  explicit FieldsAreMatcher(Inner... inner) : matchers_(std::move(inner)...) {}
-
-  template <typename Struct>
-  operator Matcher<Struct>() const {  // NOLINT
-    return Matcher<Struct>(
-        new FieldsAreMatcherImpl<const Struct&, IndexSequenceFor<Inner...>>(
-            matchers_));
-  }
-
- private:
-  std::tuple<Inner...> matchers_;
-};
-
-// Implements ElementsAre() and ElementsAreArray().
-template <typename Container>
-class ElementsAreMatcherImpl : public MatcherInterface<Container> {
- public:
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
-  typedef internal::StlContainerView<RawContainer> View;
-  typedef typename View::type StlContainer;
-  typedef typename View::const_reference StlContainerReference;
-  typedef typename StlContainer::value_type Element;
-
-  // Constructs the matcher from a sequence of element values or
-  // element matchers.
-  template <typename InputIter>
-  ElementsAreMatcherImpl(InputIter first, InputIter last) {
-    while (first != last) {
-      matchers_.push_back(MatcherCast<const Element&>(*first++));
-    }
-  }
-
-  // Describes what this matcher does.
-  void DescribeTo(::std::ostream* os) const override {
-    if (count() == 0) {
-      *os << "is empty";
-    } else if (count() == 1) {
-      *os << "has 1 element that ";
-      matchers_[0].DescribeTo(os);
-    } else {
-      *os << "has " << Elements(count()) << " where\n";
-      for (size_t i = 0; i != count(); ++i) {
-        *os << "element #" << i << " ";
-        matchers_[i].DescribeTo(os);
-        if (i + 1 < count()) {
-          *os << ",\n";
-        }
-      }
-    }
-  }
-
-  // Describes what the negation of this matcher does.
-  void DescribeNegationTo(::std::ostream* os) const override {
-    if (count() == 0) {
-      *os << "isn't empty";
-      return;
-    }
-
-    *os << "doesn't have " << Elements(count()) << ", or\n";
-    for (size_t i = 0; i != count(); ++i) {
-      *os << "element #" << i << " ";
-      matchers_[i].DescribeNegationTo(os);
-      if (i + 1 < count()) {
-        *os << ", or\n";
-      }
-    }
-  }
-
-  bool MatchAndExplain(Container container,
-                       MatchResultListener* listener) const override {
-    // To work with stream-like "containers", we must only walk
-    // through the elements in one pass.
-
-    const bool listener_interested = listener->IsInterested();
-
-    // explanations[i] is the explanation of the element at index i.
-    ::std::vector<std::string> explanations(count());
-    StlContainerReference stl_container = View::ConstReference(container);
-    typename StlContainer::const_iterator it = stl_container.begin();
-    size_t exam_pos = 0;
-    bool mismatch_found = false;  // Have we found a mismatched element yet?
-
-    // Go through the elements and matchers in pairs, until we reach
-    // the end of either the elements or the matchers, or until we find a
-    // mismatch.
-    for (; it != stl_container.end() && exam_pos != count(); ++it, ++exam_pos) {
-      bool match;  // Does the current element match the current matcher?
-      if (listener_interested) {
-        StringMatchResultListener s;
-        match = matchers_[exam_pos].MatchAndExplain(*it, &s);
-        explanations[exam_pos] = s.str();
-      } else {
-        match = matchers_[exam_pos].Matches(*it);
-      }
-
-      if (!match) {
-        mismatch_found = true;
-        break;
-      }
-    }
-    // If mismatch_found is true, 'exam_pos' is the index of the mismatch.
-
-    // Find how many elements the actual container has.  We avoid
-    // calling size() s.t. this code works for stream-like "containers"
-    // that don't define size().
-    size_t actual_count = exam_pos;
-    for (; it != stl_container.end(); ++it) {
-      ++actual_count;
-    }
-
-    if (actual_count != count()) {
-      // The element count doesn't match.  If the container is empty,
-      // there's no need to explain anything as Google Mock already
-      // prints the empty container.  Otherwise we just need to show
-      // how many elements there actually are.
-      if (listener_interested && (actual_count != 0)) {
-        *listener << "which has " << Elements(actual_count);
-      }
-      return false;
-    }
-
-    if (mismatch_found) {
-      // The element count matches, but the exam_pos-th element doesn't match.
-      if (listener_interested) {
-        *listener << "whose element #" << exam_pos << " doesn't match";
-        PrintIfNotEmpty(explanations[exam_pos], listener->stream());
-      }
-      return false;
-    }
-
-    // Every element matches its expectation.  We need to explain why
-    // (the obvious ones can be skipped).
-    if (listener_interested) {
-      bool reason_printed = false;
-      for (size_t i = 0; i != count(); ++i) {
-        const std::string& s = explanations[i];
-        if (!s.empty()) {
-          if (reason_printed) {
-            *listener << ",\nand ";
-          }
-          *listener << "whose element #" << i << " matches, " << s;
-          reason_printed = true;
-        }
-      }
-    }
-    return true;
-  }
-
- private:
-  static Message Elements(size_t count) {
-    return Message() << count << (count == 1 ? " element" : " elements");
-  }
-
-  size_t count() const { return matchers_.size(); }
-
-  ::std::vector<Matcher<const Element&> > matchers_;
-};
-
-// Connectivity matrix of (elements X matchers), in element-major order.
-// Initially, there are no edges.
-// Use NextGraph() to iterate over all possible edge configurations.
-// Use Randomize() to generate a random edge configuration.
-class GTEST_API_ MatchMatrix {
- public:
-  MatchMatrix(size_t num_elements, size_t num_matchers)
-      : num_elements_(num_elements),
-        num_matchers_(num_matchers),
-        matched_(num_elements_* num_matchers_, 0) {
-  }
-
-  size_t LhsSize() const { return num_elements_; }
-  size_t RhsSize() const { return num_matchers_; }
-  bool HasEdge(size_t ilhs, size_t irhs) const {
-    return matched_[SpaceIndex(ilhs, irhs)] == 1;
-  }
-  void SetEdge(size_t ilhs, size_t irhs, bool b) {
-    matched_[SpaceIndex(ilhs, irhs)] = b ? 1 : 0;
-  }
-
-  // Treating the connectivity matrix as a (LhsSize()*RhsSize())-bit number,
-  // adds 1 to that number; returns false if incrementing the graph left it
-  // empty.
-  bool NextGraph();
-
-  void Randomize();
-
-  std::string DebugString() const;
-
- private:
-  size_t SpaceIndex(size_t ilhs, size_t irhs) const {
-    return ilhs * num_matchers_ + irhs;
-  }
-
-  size_t num_elements_;
-  size_t num_matchers_;
-
-  // Each element is a char interpreted as bool. They are stored as a
-  // flattened array in lhs-major order, use 'SpaceIndex()' to translate
-  // a (ilhs, irhs) matrix coordinate into an offset.
-  ::std::vector<char> matched_;
-};
-
-typedef ::std::pair<size_t, size_t> ElementMatcherPair;
-typedef ::std::vector<ElementMatcherPair> ElementMatcherPairs;
-
-// Returns a maximum bipartite matching for the specified graph 'g'.
-// The matching is represented as a vector of {element, matcher} pairs.
-GTEST_API_ ElementMatcherPairs
-FindMaxBipartiteMatching(const MatchMatrix& g);
-
-struct UnorderedMatcherRequire {
-  enum Flags {
-    Superset = 1 << 0,
-    Subset = 1 << 1,
-    ExactMatch = Superset | Subset,
-  };
-};
-
-// Untyped base class for implementing UnorderedElementsAre.  By
-// putting logic that's not specific to the element type here, we
-// reduce binary bloat and increase compilation speed.
-class GTEST_API_ UnorderedElementsAreMatcherImplBase {
- protected:
-  explicit UnorderedElementsAreMatcherImplBase(
-      UnorderedMatcherRequire::Flags matcher_flags)
-      : match_flags_(matcher_flags) {}
-
-  // A vector of matcher describers, one for each element matcher.
-  // Does not own the describers (and thus can be used only when the
-  // element matchers are alive).
-  typedef ::std::vector<const MatcherDescriberInterface*> MatcherDescriberVec;
-
-  // Describes this UnorderedElementsAre matcher.
-  void DescribeToImpl(::std::ostream* os) const;
-
-  // Describes the negation of this UnorderedElementsAre matcher.
-  void DescribeNegationToImpl(::std::ostream* os) const;
-
-  bool VerifyMatchMatrix(const ::std::vector<std::string>& element_printouts,
-                         const MatchMatrix& matrix,
-                         MatchResultListener* listener) const;
-
-  bool FindPairing(const MatchMatrix& matrix,
-                   MatchResultListener* listener) const;
-
-  MatcherDescriberVec& matcher_describers() {
-    return matcher_describers_;
-  }
-
-  static Message Elements(size_t n) {
-    return Message() << n << " element" << (n == 1 ? "" : "s");
-  }
-
-  UnorderedMatcherRequire::Flags match_flags() const { return match_flags_; }
-
- private:
-  UnorderedMatcherRequire::Flags match_flags_;
-  MatcherDescriberVec matcher_describers_;
-};
-
-// Implements UnorderedElementsAre, UnorderedElementsAreArray, IsSubsetOf, and
-// IsSupersetOf.
-template <typename Container>
-class UnorderedElementsAreMatcherImpl
-    : public MatcherInterface<Container>,
-      public UnorderedElementsAreMatcherImplBase {
- public:
-  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
-  typedef internal::StlContainerView<RawContainer> View;
-  typedef typename View::type StlContainer;
-  typedef typename View::const_reference StlContainerReference;
-  typedef typename StlContainer::const_iterator StlContainerConstIterator;
-  typedef typename StlContainer::value_type Element;
-
-  template <typename InputIter>
-  UnorderedElementsAreMatcherImpl(UnorderedMatcherRequire::Flags matcher_flags,
-                                  InputIter first, InputIter last)
-      : UnorderedElementsAreMatcherImplBase(matcher_flags) {
-    for (; first != last; ++first) {
-      matchers_.push_back(MatcherCast<const Element&>(*first));
-    }
-    for (const auto& m : matchers_) {
-      matcher_describers().push_back(m.GetDescriber());
-    }
-  }
-
-  // Describes what this matcher does.
-  void DescribeTo(::std::ostream* os) const override {
-    return UnorderedElementsAreMatcherImplBase::DescribeToImpl(os);
-  }
-
-  // Describes what the negation of this matcher does.
-  void DescribeNegationTo(::std::ostream* os) const override {
-    return UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(os);
-  }
-
-  bool MatchAndExplain(Container container,
-                       MatchResultListener* listener) const override {
-    StlContainerReference stl_container = View::ConstReference(container);
-    ::std::vector<std::string> element_printouts;
-    MatchMatrix matrix =
-        AnalyzeElements(stl_container.begin(), stl_container.end(),
-                        &element_printouts, listener);
-
-    if (matrix.LhsSize() == 0 && matrix.RhsSize() == 0) {
-      return true;
-    }
-
-    if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
-      if (matrix.LhsSize() != matrix.RhsSize()) {
-        // The element count doesn't match.  If the container is empty,
-        // there's no need to explain anything as Google Mock already
-        // prints the empty container. Otherwise we just need to show
-        // how many elements there actually are.
-        if (matrix.LhsSize() != 0 && listener->IsInterested()) {
-          *listener << "which has " << Elements(matrix.LhsSize());
-        }
-        return false;
-      }
-    }
-
-    return VerifyMatchMatrix(element_printouts, matrix, listener) &&
-           FindPairing(matrix, listener);
-  }
-
- private:
-  template <typename ElementIter>
-  MatchMatrix AnalyzeElements(ElementIter elem_first, ElementIter elem_last,
-                              ::std::vector<std::string>* element_printouts,
-                              MatchResultListener* listener) const {
-    element_printouts->clear();
-    ::std::vector<char> did_match;
-    size_t num_elements = 0;
-    DummyMatchResultListener dummy;
-    for (; elem_first != elem_last; ++num_elements, ++elem_first) {
-      if (listener->IsInterested()) {
-        element_printouts->push_back(PrintToString(*elem_first));
-      }
-      for (size_t irhs = 0; irhs != matchers_.size(); ++irhs) {
-        did_match.push_back(
-            matchers_[irhs].MatchAndExplain(*elem_first, &dummy));
-      }
-    }
-
-    MatchMatrix matrix(num_elements, matchers_.size());
-    ::std::vector<char>::const_iterator did_match_iter = did_match.begin();
-    for (size_t ilhs = 0; ilhs != num_elements; ++ilhs) {
-      for (size_t irhs = 0; irhs != matchers_.size(); ++irhs) {
-        matrix.SetEdge(ilhs, irhs, *did_match_iter++ != 0);
-      }
-    }
-    return matrix;
-  }
-
-  ::std::vector<Matcher<const Element&> > matchers_;
-};
-
-// Functor for use in TransformTuple.
-// Performs MatcherCast<Target> on an input argument of any type.
-template <typename Target>
-struct CastAndAppendTransform {
-  template <typename Arg>
-  Matcher<Target> operator()(const Arg& a) const {
-    return MatcherCast<Target>(a);
-  }
-};
-
-// Implements UnorderedElementsAre.
-template <typename MatcherTuple>
-class UnorderedElementsAreMatcher {
- public:
-  explicit UnorderedElementsAreMatcher(const MatcherTuple& args)
-      : matchers_(args) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
-    typedef typename internal::StlContainerView<RawContainer>::type View;
-    typedef typename View::value_type Element;
-    typedef ::std::vector<Matcher<const Element&> > MatcherVec;
-    MatcherVec matchers;
-    matchers.reserve(::std::tuple_size<MatcherTuple>::value);
-    TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
-                         ::std::back_inserter(matchers));
-    return Matcher<Container>(
-        new UnorderedElementsAreMatcherImpl<const Container&>(
-            UnorderedMatcherRequire::ExactMatch, matchers.begin(),
-            matchers.end()));
-  }
-
- private:
-  const MatcherTuple matchers_;
-};
-
-// Implements ElementsAre.
-template <typename MatcherTuple>
-class ElementsAreMatcher {
- public:
-  explicit ElementsAreMatcher(const MatcherTuple& args) : matchers_(args) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    GTEST_COMPILE_ASSERT_(
-        !IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>::value ||
-            ::std::tuple_size<MatcherTuple>::value < 2,
-        use_UnorderedElementsAre_with_hash_tables);
-
-    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
-    typedef typename internal::StlContainerView<RawContainer>::type View;
-    typedef typename View::value_type Element;
-    typedef ::std::vector<Matcher<const Element&> > MatcherVec;
-    MatcherVec matchers;
-    matchers.reserve(::std::tuple_size<MatcherTuple>::value);
-    TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
-                         ::std::back_inserter(matchers));
-    return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
-        matchers.begin(), matchers.end()));
-  }
-
- private:
-  const MatcherTuple matchers_;
-};
-
-// Implements UnorderedElementsAreArray(), IsSubsetOf(), and IsSupersetOf().
-template <typename T>
-class UnorderedElementsAreArrayMatcher {
- public:
-  template <typename Iter>
-  UnorderedElementsAreArrayMatcher(UnorderedMatcherRequire::Flags match_flags,
-                                   Iter first, Iter last)
-      : match_flags_(match_flags), matchers_(first, last) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    return Matcher<Container>(
-        new UnorderedElementsAreMatcherImpl<const Container&>(
-            match_flags_, matchers_.begin(), matchers_.end()));
-  }
-
- private:
-  UnorderedMatcherRequire::Flags match_flags_;
-  ::std::vector<T> matchers_;
-};
-
-// Implements ElementsAreArray().
-template <typename T>
-class ElementsAreArrayMatcher {
- public:
-  template <typename Iter>
-  ElementsAreArrayMatcher(Iter first, Iter last) : matchers_(first, last) {}
-
-  template <typename Container>
-  operator Matcher<Container>() const {
-    GTEST_COMPILE_ASSERT_(
-        !IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>::value,
-        use_UnorderedElementsAreArray_with_hash_tables);
-
-    return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
-        matchers_.begin(), matchers_.end()));
-  }
-
- private:
-  const ::std::vector<T> matchers_;
-};
-
-// Given a 2-tuple matcher tm of type Tuple2Matcher and a value second
-// of type Second, BoundSecondMatcher<Tuple2Matcher, Second>(tm,
-// second) is a polymorphic matcher that matches a value x if and only if
-// tm matches tuple (x, second).  Useful for implementing
-// UnorderedPointwise() in terms of UnorderedElementsAreArray().
-//
-// BoundSecondMatcher is copyable and assignable, as we need to put
-// instances of this class in a vector when implementing
-// UnorderedPointwise().
-template <typename Tuple2Matcher, typename Second>
-class BoundSecondMatcher {
- public:
-  BoundSecondMatcher(const Tuple2Matcher& tm, const Second& second)
-      : tuple2_matcher_(tm), second_value_(second) {}
-
-  BoundSecondMatcher(const BoundSecondMatcher& other) = default;
-
-  template <typename T>
-  operator Matcher<T>() const {
-    return MakeMatcher(new Impl<T>(tuple2_matcher_, second_value_));
-  }
-
-  // We have to define this for UnorderedPointwise() to compile in
-  // C++98 mode, as it puts BoundSecondMatcher instances in a vector,
-  // which requires the elements to be assignable in C++98.  The
-  // compiler cannot generate the operator= for us, as Tuple2Matcher
-  // and Second may not be assignable.
-  //
-  // However, this should never be called, so the implementation just
-  // need to assert.
-  void operator=(const BoundSecondMatcher& /*rhs*/) {
-    GTEST_LOG_(FATAL) << "BoundSecondMatcher should never be assigned.";
-  }
-
- private:
-  template <typename T>
-  class Impl : public MatcherInterface<T> {
-   public:
-    typedef ::std::tuple<T, Second> ArgTuple;
-
-    Impl(const Tuple2Matcher& tm, const Second& second)
-        : mono_tuple2_matcher_(SafeMatcherCast<const ArgTuple&>(tm)),
-          second_value_(second) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "and ";
-      UniversalPrint(second_value_, os);
-      *os << " ";
-      mono_tuple2_matcher_.DescribeTo(os);
-    }
-
-    bool MatchAndExplain(T x, MatchResultListener* listener) const override {
-      return mono_tuple2_matcher_.MatchAndExplain(ArgTuple(x, second_value_),
-                                                  listener);
-    }
-
-   private:
-    const Matcher<const ArgTuple&> mono_tuple2_matcher_;
-    const Second second_value_;
-  };
-
-  const Tuple2Matcher tuple2_matcher_;
-  const Second second_value_;
-};
-
-// Given a 2-tuple matcher tm and a value second,
-// MatcherBindSecond(tm, second) returns a matcher that matches a
-// value x if and only if tm matches tuple (x, second).  Useful for
-// implementing UnorderedPointwise() in terms of UnorderedElementsAreArray().
-template <typename Tuple2Matcher, typename Second>
-BoundSecondMatcher<Tuple2Matcher, Second> MatcherBindSecond(
-    const Tuple2Matcher& tm, const Second& second) {
-  return BoundSecondMatcher<Tuple2Matcher, Second>(tm, second);
-}
-
-// Returns the description for a matcher defined using the MATCHER*()
-// macro where the user-supplied description string is "", if
-// 'negation' is false; otherwise returns the description of the
-// negation of the matcher.  'param_values' contains a list of strings
-// that are the print-out of the matcher's parameters.
-GTEST_API_ std::string FormatMatcherDescription(bool negation,
-                                                const char* matcher_name,
-                                                const Strings& param_values);
-
-// Implements a matcher that checks the value of a optional<> type variable.
-template <typename ValueMatcher>
-class OptionalMatcher {
- public:
-  explicit OptionalMatcher(const ValueMatcher& value_matcher)
-      : value_matcher_(value_matcher) {}
-
-  template <typename Optional>
-  operator Matcher<Optional>() const {
-    return Matcher<Optional>(new Impl<const Optional&>(value_matcher_));
-  }
-
-  template <typename Optional>
-  class Impl : public MatcherInterface<Optional> {
-   public:
-    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Optional) OptionalView;
-    typedef typename OptionalView::value_type ValueType;
-    explicit Impl(const ValueMatcher& value_matcher)
-        : value_matcher_(MatcherCast<ValueType>(value_matcher)) {}
-
-    void DescribeTo(::std::ostream* os) const override {
-      *os << "value ";
-      value_matcher_.DescribeTo(os);
-    }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      *os << "value ";
-      value_matcher_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(Optional optional,
-                         MatchResultListener* listener) const override {
-      if (!optional) {
-        *listener << "which is not engaged";
-        return false;
-      }
-      const ValueType& value = *optional;
-      StringMatchResultListener value_listener;
-      const bool match = value_matcher_.MatchAndExplain(value, &value_listener);
-      *listener << "whose value " << PrintToString(value)
-                << (match ? " matches" : " doesn't match");
-      PrintIfNotEmpty(value_listener.str(), listener->stream());
-      return match;
-    }
-
-   private:
-    const Matcher<ValueType> value_matcher_;
-  };
-
- private:
-  const ValueMatcher value_matcher_;
-};
-
-namespace variant_matcher {
-// Overloads to allow VariantMatcher to do proper ADL lookup.
-template <typename T>
-void holds_alternative() {}
-template <typename T>
-void get() {}
-
-// Implements a matcher that checks the value of a variant<> type variable.
-template <typename T>
-class VariantMatcher {
- public:
-  explicit VariantMatcher(::testing::Matcher<const T&> matcher)
-      : matcher_(std::move(matcher)) {}
-
-  template <typename Variant>
-  bool MatchAndExplain(const Variant& value,
-                       ::testing::MatchResultListener* listener) const {
-    using std::get;
-    if (!listener->IsInterested()) {
-      return holds_alternative<T>(value) && matcher_.Matches(get<T>(value));
-    }
-
-    if (!holds_alternative<T>(value)) {
-      *listener << "whose value is not of type '" << GetTypeName() << "'";
-      return false;
-    }
-
-    const T& elem = get<T>(value);
-    StringMatchResultListener elem_listener;
-    const bool match = matcher_.MatchAndExplain(elem, &elem_listener);
-    *listener << "whose value " << PrintToString(elem)
-              << (match ? " matches" : " doesn't match");
-    PrintIfNotEmpty(elem_listener.str(), listener->stream());
-    return match;
-  }
-
-  void DescribeTo(std::ostream* os) const {
-    *os << "is a variant<> with value of type '" << GetTypeName()
-        << "' and the value ";
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(std::ostream* os) const {
-    *os << "is a variant<> with value of type other than '" << GetTypeName()
-        << "' or the value ";
-    matcher_.DescribeNegationTo(os);
-  }
-
- private:
-  static std::string GetTypeName() {
-#if GTEST_HAS_RTTI
-    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(
-        return internal::GetTypeName<T>());
-#endif
-    return "the element type";
-  }
-
-  const ::testing::Matcher<const T&> matcher_;
-};
-
-}  // namespace variant_matcher
-
-namespace any_cast_matcher {
-
-// Overloads to allow AnyCastMatcher to do proper ADL lookup.
-template <typename T>
-void any_cast() {}
-
-// Implements a matcher that any_casts the value.
-template <typename T>
-class AnyCastMatcher {
- public:
-  explicit AnyCastMatcher(const ::testing::Matcher<const T&>& matcher)
-      : matcher_(matcher) {}
-
-  template <typename AnyType>
-  bool MatchAndExplain(const AnyType& value,
-                       ::testing::MatchResultListener* listener) const {
-    if (!listener->IsInterested()) {
-      const T* ptr = any_cast<T>(&value);
-      return ptr != nullptr && matcher_.Matches(*ptr);
-    }
-
-    const T* elem = any_cast<T>(&value);
-    if (elem == nullptr) {
-      *listener << "whose value is not of type '" << GetTypeName() << "'";
-      return false;
-    }
-
-    StringMatchResultListener elem_listener;
-    const bool match = matcher_.MatchAndExplain(*elem, &elem_listener);
-    *listener << "whose value " << PrintToString(*elem)
-              << (match ? " matches" : " doesn't match");
-    PrintIfNotEmpty(elem_listener.str(), listener->stream());
-    return match;
-  }
-
-  void DescribeTo(std::ostream* os) const {
-    *os << "is an 'any' type with value of type '" << GetTypeName()
-        << "' and the value ";
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(std::ostream* os) const {
-    *os << "is an 'any' type with value of type other than '" << GetTypeName()
-        << "' or the value ";
-    matcher_.DescribeNegationTo(os);
-  }
-
- private:
-  static std::string GetTypeName() {
-#if GTEST_HAS_RTTI
-    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(
-        return internal::GetTypeName<T>());
-#endif
-    return "the element type";
-  }
-
-  const ::testing::Matcher<const T&> matcher_;
-};
-
-}  // namespace any_cast_matcher
-
-// Implements the Args() matcher.
-template <class ArgsTuple, size_t... k>
-class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
- public:
-  using RawArgsTuple = typename std::decay<ArgsTuple>::type;
-  using SelectedArgs =
-      std::tuple<typename std::tuple_element<k, RawArgsTuple>::type...>;
-  using MonomorphicInnerMatcher = Matcher<const SelectedArgs&>;
-
-  template <typename InnerMatcher>
-  explicit ArgsMatcherImpl(const InnerMatcher& inner_matcher)
-      : inner_matcher_(SafeMatcherCast<const SelectedArgs&>(inner_matcher)) {}
-
-  bool MatchAndExplain(ArgsTuple args,
-                       MatchResultListener* listener) const override {
-    // Workaround spurious C4100 on MSVC<=15.7 when k is empty.
-    (void)args;
-    const SelectedArgs& selected_args =
-        std::forward_as_tuple(std::get<k>(args)...);
-    if (!listener->IsInterested()) return inner_matcher_.Matches(selected_args);
-
-    PrintIndices(listener->stream());
-    *listener << "are " << PrintToString(selected_args);
-
-    StringMatchResultListener inner_listener;
-    const bool match =
-        inner_matcher_.MatchAndExplain(selected_args, &inner_listener);
-    PrintIfNotEmpty(inner_listener.str(), listener->stream());
-    return match;
-  }
-
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "are a tuple ";
-    PrintIndices(os);
-    inner_matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const override {
-    *os << "are a tuple ";
-    PrintIndices(os);
-    inner_matcher_.DescribeNegationTo(os);
-  }
-
- private:
-  // Prints the indices of the selected fields.
-  static void PrintIndices(::std::ostream* os) {
-    *os << "whose fields (";
-    const char* sep = "";
-    // Workaround spurious C4189 on MSVC<=15.7 when k is empty.
-    (void)sep;
-    const char* dummy[] = {"", (*os << sep << "#" << k, sep = ", ")...};
-    (void)dummy;
-    *os << ") ";
-  }
-
-  MonomorphicInnerMatcher inner_matcher_;
-};
-
-template <class InnerMatcher, size_t... k>
-class ArgsMatcher {
- public:
-  explicit ArgsMatcher(InnerMatcher inner_matcher)
-      : inner_matcher_(std::move(inner_matcher)) {}
-
-  template <typename ArgsTuple>
-  operator Matcher<ArgsTuple>() const {  // NOLINT
-    return MakeMatcher(new ArgsMatcherImpl<ArgsTuple, k...>(inner_matcher_));
-  }
-
- private:
-  InnerMatcher inner_matcher_;
-};
-
-}  // namespace internal
-
-// ElementsAreArray(iterator_first, iterator_last)
-// ElementsAreArray(pointer, count)
-// ElementsAreArray(array)
-// ElementsAreArray(container)
-// ElementsAreArray({ e1, e2, ..., en })
-//
-// The ElementsAreArray() functions are like ElementsAre(...), except
-// that they are given a homogeneous sequence rather than taking each
-// element as a function argument. The sequence can be specified as an
-// array, a pointer and count, a vector, an initializer list, or an
-// STL iterator range. In each of these cases, the underlying sequence
-// can be either a sequence of values or a sequence of matchers.
-//
-// All forms of ElementsAreArray() make a copy of the input matcher sequence.
-
-template <typename Iter>
-inline internal::ElementsAreArrayMatcher<
-    typename ::std::iterator_traits<Iter>::value_type>
-ElementsAreArray(Iter first, Iter last) {
-  typedef typename ::std::iterator_traits<Iter>::value_type T;
-  return internal::ElementsAreArrayMatcher<T>(first, last);
-}
-
-template <typename T>
-inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
-    const T* pointer, size_t count) {
-  return ElementsAreArray(pointer, pointer + count);
-}
-
-template <typename T, size_t N>
-inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
-    const T (&array)[N]) {
-  return ElementsAreArray(array, N);
-}
-
-template <typename Container>
-inline internal::ElementsAreArrayMatcher<typename Container::value_type>
-ElementsAreArray(const Container& container) {
-  return ElementsAreArray(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::ElementsAreArrayMatcher<T>
-ElementsAreArray(::std::initializer_list<T> xs) {
-  return ElementsAreArray(xs.begin(), xs.end());
-}
-
-// UnorderedElementsAreArray(iterator_first, iterator_last)
-// UnorderedElementsAreArray(pointer, count)
-// UnorderedElementsAreArray(array)
-// UnorderedElementsAreArray(container)
-// UnorderedElementsAreArray({ e1, e2, ..., en })
-//
-// UnorderedElementsAreArray() verifies that a bijective mapping onto a
-// collection of matchers exists.
-//
-// The matchers can be specified as an array, a pointer and count, a container,
-// an initializer list, or an STL iterator range. In each of these cases, the
-// underlying matchers can be either values or matchers.
-
-template <typename Iter>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename ::std::iterator_traits<Iter>::value_type>
-UnorderedElementsAreArray(Iter first, Iter last) {
-  typedef typename ::std::iterator_traits<Iter>::value_type T;
-  return internal::UnorderedElementsAreArrayMatcher<T>(
-      internal::UnorderedMatcherRequire::ExactMatch, first, last);
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T>
-UnorderedElementsAreArray(const T* pointer, size_t count) {
-  return UnorderedElementsAreArray(pointer, pointer + count);
-}
-
-template <typename T, size_t N>
-inline internal::UnorderedElementsAreArrayMatcher<T>
-UnorderedElementsAreArray(const T (&array)[N]) {
-  return UnorderedElementsAreArray(array, N);
-}
-
-template <typename Container>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename Container::value_type>
-UnorderedElementsAreArray(const Container& container) {
-  return UnorderedElementsAreArray(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T>
-UnorderedElementsAreArray(::std::initializer_list<T> xs) {
-  return UnorderedElementsAreArray(xs.begin(), xs.end());
-}
-
-// _ is a matcher that matches anything of any type.
-//
-// This definition is fine as:
-//
-//   1. The C++ standard permits using the name _ in a namespace that
-//      is not the global namespace or ::std.
-//   2. The AnythingMatcher class has no data member or constructor,
-//      so it's OK to create global variables of this type.
-//   3. c-style has approved of using _ in this case.
-const internal::AnythingMatcher _ = {};
-// Creates a matcher that matches any value of the given type T.
-template <typename T>
-inline Matcher<T> A() {
-  return _;
-}
-
-// Creates a matcher that matches any value of the given type T.
-template <typename T>
-inline Matcher<T> An() {
-  return _;
-}
-
-template <typename T, typename M>
-Matcher<T> internal::MatcherCastImpl<T, M>::CastImpl(
-    const M& value, std::false_type /* convertible_to_matcher */,
-    std::false_type /* convertible_to_T */) {
-  return Eq(value);
-}
-
-// Creates a polymorphic matcher that matches any NULL pointer.
-inline PolymorphicMatcher<internal::IsNullMatcher > IsNull() {
-  return MakePolymorphicMatcher(internal::IsNullMatcher());
-}
-
-// Creates a polymorphic matcher that matches any non-NULL pointer.
-// This is convenient as Not(NULL) doesn't compile (the compiler
-// thinks that that expression is comparing a pointer with an integer).
-inline PolymorphicMatcher<internal::NotNullMatcher > NotNull() {
-  return MakePolymorphicMatcher(internal::NotNullMatcher());
-}
-
-// Creates a polymorphic matcher that matches any argument that
-// references variable x.
-template <typename T>
-inline internal::RefMatcher<T&> Ref(T& x) {  // NOLINT
-  return internal::RefMatcher<T&>(x);
-}
-
-// Creates a polymorphic matcher that matches any NaN floating point.
-inline PolymorphicMatcher<internal::IsNanMatcher> IsNan() {
-  return MakePolymorphicMatcher(internal::IsNanMatcher());
-}
-
-// Creates a matcher that matches any double argument approximately
-// equal to rhs, where two NANs are considered unequal.
-inline internal::FloatingEqMatcher<double> DoubleEq(double rhs) {
-  return internal::FloatingEqMatcher<double>(rhs, false);
-}
-
-// Creates a matcher that matches any double argument approximately
-// equal to rhs, including NaN values when rhs is NaN.
-inline internal::FloatingEqMatcher<double> NanSensitiveDoubleEq(double rhs) {
-  return internal::FloatingEqMatcher<double>(rhs, true);
-}
-
-// Creates a matcher that matches any double argument approximately equal to
-// rhs, up to the specified max absolute error bound, where two NANs are
-// considered unequal.  The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<double> DoubleNear(
-    double rhs, double max_abs_error) {
-  return internal::FloatingEqMatcher<double>(rhs, false, max_abs_error);
-}
-
-// Creates a matcher that matches any double argument approximately equal to
-// rhs, up to the specified max absolute error bound, including NaN values when
-// rhs is NaN.  The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<double> NanSensitiveDoubleNear(
-    double rhs, double max_abs_error) {
-  return internal::FloatingEqMatcher<double>(rhs, true, max_abs_error);
-}
-
-// Creates a matcher that matches any float argument approximately
-// equal to rhs, where two NANs are considered unequal.
-inline internal::FloatingEqMatcher<float> FloatEq(float rhs) {
-  return internal::FloatingEqMatcher<float>(rhs, false);
-}
-
-// Creates a matcher that matches any float argument approximately
-// equal to rhs, including NaN values when rhs is NaN.
-inline internal::FloatingEqMatcher<float> NanSensitiveFloatEq(float rhs) {
-  return internal::FloatingEqMatcher<float>(rhs, true);
-}
-
-// Creates a matcher that matches any float argument approximately equal to
-// rhs, up to the specified max absolute error bound, where two NANs are
-// considered unequal.  The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<float> FloatNear(
-    float rhs, float max_abs_error) {
-  return internal::FloatingEqMatcher<float>(rhs, false, max_abs_error);
-}
-
-// Creates a matcher that matches any float argument approximately equal to
-// rhs, up to the specified max absolute error bound, including NaN values when
-// rhs is NaN.  The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<float> NanSensitiveFloatNear(
-    float rhs, float max_abs_error) {
-  return internal::FloatingEqMatcher<float>(rhs, true, max_abs_error);
-}
-
-// Creates a matcher that matches a pointer (raw or smart) that points
-// to a value that matches inner_matcher.
-template <typename InnerMatcher>
-inline internal::PointeeMatcher<InnerMatcher> Pointee(
-    const InnerMatcher& inner_matcher) {
-  return internal::PointeeMatcher<InnerMatcher>(inner_matcher);
-}
-
-#if GTEST_HAS_RTTI
-// Creates a matcher that matches a pointer or reference that matches
-// inner_matcher when dynamic_cast<To> is applied.
-// The result of dynamic_cast<To> is forwarded to the inner matcher.
-// If To is a pointer and the cast fails, the inner matcher will receive NULL.
-// If To is a reference and the cast fails, this matcher returns false
-// immediately.
-template <typename To>
-inline PolymorphicMatcher<internal::WhenDynamicCastToMatcher<To> >
-WhenDynamicCastTo(const Matcher<To>& inner_matcher) {
-  return MakePolymorphicMatcher(
-      internal::WhenDynamicCastToMatcher<To>(inner_matcher));
-}
-#endif  // GTEST_HAS_RTTI
-
-// Creates a matcher that matches an object whose given field matches
-// 'matcher'.  For example,
-//   Field(&Foo::number, Ge(5))
-// matches a Foo object x if and only if x.number >= 5.
-template <typename Class, typename FieldType, typename FieldMatcher>
-inline PolymorphicMatcher<
-  internal::FieldMatcher<Class, FieldType> > Field(
-    FieldType Class::*field, const FieldMatcher& matcher) {
-  return MakePolymorphicMatcher(
-      internal::FieldMatcher<Class, FieldType>(
-          field, MatcherCast<const FieldType&>(matcher)));
-  // The call to MatcherCast() is required for supporting inner
-  // matchers of compatible types.  For example, it allows
-  //   Field(&Foo::bar, m)
-  // to compile where bar is an int32 and m is a matcher for int64.
-}
-
-// Same as Field() but also takes the name of the field to provide better error
-// messages.
-template <typename Class, typename FieldType, typename FieldMatcher>
-inline PolymorphicMatcher<internal::FieldMatcher<Class, FieldType> > Field(
-    const std::string& field_name, FieldType Class::*field,
-    const FieldMatcher& matcher) {
-  return MakePolymorphicMatcher(internal::FieldMatcher<Class, FieldType>(
-      field_name, field, MatcherCast<const FieldType&>(matcher)));
-}
-
-// Creates a matcher that matches an object whose given property
-// matches 'matcher'.  For example,
-//   Property(&Foo::str, StartsWith("hi"))
-// matches a Foo object x if and only if x.str() starts with "hi".
-template <typename Class, typename PropertyType, typename PropertyMatcher>
-inline PolymorphicMatcher<internal::PropertyMatcher<
-    Class, PropertyType, PropertyType (Class::*)() const> >
-Property(PropertyType (Class::*property)() const,
-         const PropertyMatcher& matcher) {
-  return MakePolymorphicMatcher(
-      internal::PropertyMatcher<Class, PropertyType,
-                                PropertyType (Class::*)() const>(
-          property, MatcherCast<const PropertyType&>(matcher)));
-  // The call to MatcherCast() is required for supporting inner
-  // matchers of compatible types.  For example, it allows
-  //   Property(&Foo::bar, m)
-  // to compile where bar() returns an int32 and m is a matcher for int64.
-}
-
-// Same as Property() above, but also takes the name of the property to provide
-// better error messages.
-template <typename Class, typename PropertyType, typename PropertyMatcher>
-inline PolymorphicMatcher<internal::PropertyMatcher<
-    Class, PropertyType, PropertyType (Class::*)() const> >
-Property(const std::string& property_name,
-         PropertyType (Class::*property)() const,
-         const PropertyMatcher& matcher) {
-  return MakePolymorphicMatcher(
-      internal::PropertyMatcher<Class, PropertyType,
-                                PropertyType (Class::*)() const>(
-          property_name, property, MatcherCast<const PropertyType&>(matcher)));
-}
-
-// The same as above but for reference-qualified member functions.
-template <typename Class, typename PropertyType, typename PropertyMatcher>
-inline PolymorphicMatcher<internal::PropertyMatcher<
-    Class, PropertyType, PropertyType (Class::*)() const &> >
-Property(PropertyType (Class::*property)() const &,
-         const PropertyMatcher& matcher) {
-  return MakePolymorphicMatcher(
-      internal::PropertyMatcher<Class, PropertyType,
-                                PropertyType (Class::*)() const&>(
-          property, MatcherCast<const PropertyType&>(matcher)));
-}
-
-// Three-argument form for reference-qualified member functions.
-template <typename Class, typename PropertyType, typename PropertyMatcher>
-inline PolymorphicMatcher<internal::PropertyMatcher<
-    Class, PropertyType, PropertyType (Class::*)() const &> >
-Property(const std::string& property_name,
-         PropertyType (Class::*property)() const &,
-         const PropertyMatcher& matcher) {
-  return MakePolymorphicMatcher(
-      internal::PropertyMatcher<Class, PropertyType,
-                                PropertyType (Class::*)() const&>(
-          property_name, property, MatcherCast<const PropertyType&>(matcher)));
-}
-
-// Creates a matcher that matches an object if and only if the result of
-// applying a callable to x matches 'matcher'. For example,
-//   ResultOf(f, StartsWith("hi"))
-// matches a Foo object x if and only if f(x) starts with "hi".
-// `callable` parameter can be a function, function pointer, or a functor. It is
-// required to keep no state affecting the results of the calls on it and make
-// no assumptions about how many calls will be made. Any state it keeps must be
-// protected from the concurrent access.
-template <typename Callable, typename InnerMatcher>
-internal::ResultOfMatcher<Callable, InnerMatcher> ResultOf(
-    Callable callable, InnerMatcher matcher) {
-  return internal::ResultOfMatcher<Callable, InnerMatcher>(
-      std::move(callable), std::move(matcher));
-}
-
-// String matchers.
-
-// Matches a string equal to str.
-template <typename T = std::string>
-PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq(
-    const internal::StringLike<T>& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(std::string(str), true, true));
-}
-
-// Matches a string not equal to str.
-template <typename T = std::string>
-PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe(
-    const internal::StringLike<T>& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(std::string(str), false, true));
-}
-
-// Matches a string equal to str, ignoring case.
-template <typename T = std::string>
-PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq(
-    const internal::StringLike<T>& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(std::string(str), true, false));
-}
-
-// Matches a string not equal to str, ignoring case.
-template <typename T = std::string>
-PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe(
-    const internal::StringLike<T>& str) {
-  return MakePolymorphicMatcher(internal::StrEqualityMatcher<std::string>(
-      std::string(str), false, false));
-}
-
-// Creates a matcher that matches any string, std::string, or C string
-// that contains the given substring.
-template <typename T = std::string>
-PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr(
-    const internal::StringLike<T>& substring) {
-  return MakePolymorphicMatcher(
-      internal::HasSubstrMatcher<std::string>(std::string(substring)));
-}
-
-// Matches a string that starts with 'prefix' (case-sensitive).
-template <typename T = std::string>
-PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith(
-    const internal::StringLike<T>& prefix) {
-  return MakePolymorphicMatcher(
-      internal::StartsWithMatcher<std::string>(std::string(prefix)));
-}
-
-// Matches a string that ends with 'suffix' (case-sensitive).
-template <typename T = std::string>
-PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith(
-    const internal::StringLike<T>& suffix) {
-  return MakePolymorphicMatcher(
-      internal::EndsWithMatcher<std::string>(std::string(suffix)));
-}
-
-#if GTEST_HAS_STD_WSTRING
-// Wide string matchers.
-
-// Matches a string equal to str.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> > StrEq(
-    const std::wstring& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::wstring>(str, true, true));
-}
-
-// Matches a string not equal to str.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> > StrNe(
-    const std::wstring& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::wstring>(str, false, true));
-}
-
-// Matches a string equal to str, ignoring case.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> >
-StrCaseEq(const std::wstring& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::wstring>(str, true, false));
-}
-
-// Matches a string not equal to str, ignoring case.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> >
-StrCaseNe(const std::wstring& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::wstring>(str, false, false));
-}
-
-// Creates a matcher that matches any ::wstring, std::wstring, or C wide string
-// that contains the given substring.
-inline PolymorphicMatcher<internal::HasSubstrMatcher<std::wstring> > HasSubstr(
-    const std::wstring& substring) {
-  return MakePolymorphicMatcher(
-      internal::HasSubstrMatcher<std::wstring>(substring));
-}
-
-// Matches a string that starts with 'prefix' (case-sensitive).
-inline PolymorphicMatcher<internal::StartsWithMatcher<std::wstring> >
-StartsWith(const std::wstring& prefix) {
-  return MakePolymorphicMatcher(
-      internal::StartsWithMatcher<std::wstring>(prefix));
-}
-
-// Matches a string that ends with 'suffix' (case-sensitive).
-inline PolymorphicMatcher<internal::EndsWithMatcher<std::wstring> > EndsWith(
-    const std::wstring& suffix) {
-  return MakePolymorphicMatcher(
-      internal::EndsWithMatcher<std::wstring>(suffix));
-}
-
-#endif  // GTEST_HAS_STD_WSTRING
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field == the second field.
-inline internal::Eq2Matcher Eq() { return internal::Eq2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field >= the second field.
-inline internal::Ge2Matcher Ge() { return internal::Ge2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field > the second field.
-inline internal::Gt2Matcher Gt() { return internal::Gt2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field <= the second field.
-inline internal::Le2Matcher Le() { return internal::Le2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field < the second field.
-inline internal::Lt2Matcher Lt() { return internal::Lt2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field != the second field.
-inline internal::Ne2Matcher Ne() { return internal::Ne2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// FloatEq(first field) matches the second field.
-inline internal::FloatingEq2Matcher<float> FloatEq() {
-  return internal::FloatingEq2Matcher<float>();
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// DoubleEq(first field) matches the second field.
-inline internal::FloatingEq2Matcher<double> DoubleEq() {
-  return internal::FloatingEq2Matcher<double>();
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// FloatEq(first field) matches the second field with NaN equality.
-inline internal::FloatingEq2Matcher<float> NanSensitiveFloatEq() {
-  return internal::FloatingEq2Matcher<float>(true);
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// DoubleEq(first field) matches the second field with NaN equality.
-inline internal::FloatingEq2Matcher<double> NanSensitiveDoubleEq() {
-  return internal::FloatingEq2Matcher<double>(true);
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// FloatNear(first field, max_abs_error) matches the second field.
-inline internal::FloatingEq2Matcher<float> FloatNear(float max_abs_error) {
-  return internal::FloatingEq2Matcher<float>(max_abs_error);
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// DoubleNear(first field, max_abs_error) matches the second field.
-inline internal::FloatingEq2Matcher<double> DoubleNear(double max_abs_error) {
-  return internal::FloatingEq2Matcher<double>(max_abs_error);
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// FloatNear(first field, max_abs_error) matches the second field with NaN
-// equality.
-inline internal::FloatingEq2Matcher<float> NanSensitiveFloatNear(
-    float max_abs_error) {
-  return internal::FloatingEq2Matcher<float>(max_abs_error, true);
-}
-
-// Creates a polymorphic matcher that matches a 2-tuple where
-// DoubleNear(first field, max_abs_error) matches the second field with NaN
-// equality.
-inline internal::FloatingEq2Matcher<double> NanSensitiveDoubleNear(
-    double max_abs_error) {
-  return internal::FloatingEq2Matcher<double>(max_abs_error, true);
-}
-
-// Creates a matcher that matches any value of type T that m doesn't
-// match.
-template <typename InnerMatcher>
-inline internal::NotMatcher<InnerMatcher> Not(InnerMatcher m) {
-  return internal::NotMatcher<InnerMatcher>(m);
-}
-
-// Returns a matcher that matches anything that satisfies the given
-// predicate.  The predicate can be any unary function or functor
-// whose return type can be implicitly converted to bool.
-template <typename Predicate>
-inline PolymorphicMatcher<internal::TrulyMatcher<Predicate> >
-Truly(Predicate pred) {
-  return MakePolymorphicMatcher(internal::TrulyMatcher<Predicate>(pred));
-}
-
-// Returns a matcher that matches the container size. The container must
-// support both size() and size_type which all STL-like containers provide.
-// Note that the parameter 'size' can be a value of type size_type as well as
-// matcher. For instance:
-//   EXPECT_THAT(container, SizeIs(2));     // Checks container has 2 elements.
-//   EXPECT_THAT(container, SizeIs(Le(2));  // Checks container has at most 2.
-template <typename SizeMatcher>
-inline internal::SizeIsMatcher<SizeMatcher>
-SizeIs(const SizeMatcher& size_matcher) {
-  return internal::SizeIsMatcher<SizeMatcher>(size_matcher);
-}
-
-// Returns a matcher that matches the distance between the container's begin()
-// iterator and its end() iterator, i.e. the size of the container. This matcher
-// can be used instead of SizeIs with containers such as std::forward_list which
-// do not implement size(). The container must provide const_iterator (with
-// valid iterator_traits), begin() and end().
-template <typename DistanceMatcher>
-inline internal::BeginEndDistanceIsMatcher<DistanceMatcher>
-BeginEndDistanceIs(const DistanceMatcher& distance_matcher) {
-  return internal::BeginEndDistanceIsMatcher<DistanceMatcher>(distance_matcher);
-}
-
-// Returns a matcher that matches an equal container.
-// This matcher behaves like Eq(), but in the event of mismatch lists the
-// values that are included in one container but not the other. (Duplicate
-// values and order differences are not explained.)
-template <typename Container>
-inline PolymorphicMatcher<internal::ContainerEqMatcher<
-    typename std::remove_const<Container>::type>>
-ContainerEq(const Container& rhs) {
-  return MakePolymorphicMatcher(internal::ContainerEqMatcher<Container>(rhs));
-}
-
-// Returns a matcher that matches a container that, when sorted using
-// the given comparator, matches container_matcher.
-template <typename Comparator, typename ContainerMatcher>
-inline internal::WhenSortedByMatcher<Comparator, ContainerMatcher>
-WhenSortedBy(const Comparator& comparator,
-             const ContainerMatcher& container_matcher) {
-  return internal::WhenSortedByMatcher<Comparator, ContainerMatcher>(
-      comparator, container_matcher);
-}
-
-// Returns a matcher that matches a container that, when sorted using
-// the < operator, matches container_matcher.
-template <typename ContainerMatcher>
-inline internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>
-WhenSorted(const ContainerMatcher& container_matcher) {
-  return
-      internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>(
-          internal::LessComparator(), container_matcher);
-}
-
-// Matches an STL-style container or a native array that contains the
-// same number of elements as in rhs, where its i-th element and rhs's
-// i-th element (as a pair) satisfy the given pair matcher, for all i.
-// TupleMatcher must be able to be safely cast to Matcher<std::tuple<const
-// T1&, const T2&> >, where T1 and T2 are the types of elements in the
-// LHS container and the RHS container respectively.
-template <typename TupleMatcher, typename Container>
-inline internal::PointwiseMatcher<TupleMatcher,
-                                  typename std::remove_const<Container>::type>
-Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) {
-  return internal::PointwiseMatcher<TupleMatcher, Container>(tuple_matcher,
-                                                             rhs);
-}
-
-
-// Supports the Pointwise(m, {a, b, c}) syntax.
-template <typename TupleMatcher, typename T>
-inline internal::PointwiseMatcher<TupleMatcher, std::vector<T> > Pointwise(
-    const TupleMatcher& tuple_matcher, std::initializer_list<T> rhs) {
-  return Pointwise(tuple_matcher, std::vector<T>(rhs));
-}
-
-
-// UnorderedPointwise(pair_matcher, rhs) matches an STL-style
-// container or a native array that contains the same number of
-// elements as in rhs, where in some permutation of the container, its
-// i-th element and rhs's i-th element (as a pair) satisfy the given
-// pair matcher, for all i.  Tuple2Matcher must be able to be safely
-// cast to Matcher<std::tuple<const T1&, const T2&> >, where T1 and T2 are
-// the types of elements in the LHS container and the RHS container
-// respectively.
-//
-// This is like Pointwise(pair_matcher, rhs), except that the element
-// order doesn't matter.
-template <typename Tuple2Matcher, typename RhsContainer>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename internal::BoundSecondMatcher<
-        Tuple2Matcher,
-        typename internal::StlContainerView<
-            typename std::remove_const<RhsContainer>::type>::type::value_type>>
-UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
-                   const RhsContainer& rhs_container) {
-  // RhsView allows the same code to handle RhsContainer being a
-  // STL-style container and it being a native C-style array.
-  typedef typename internal::StlContainerView<RhsContainer> RhsView;
-  typedef typename RhsView::type RhsStlContainer;
-  typedef typename RhsStlContainer::value_type Second;
-  const RhsStlContainer& rhs_stl_container =
-      RhsView::ConstReference(rhs_container);
-
-  // Create a matcher for each element in rhs_container.
-  ::std::vector<internal::BoundSecondMatcher<Tuple2Matcher, Second> > matchers;
-  for (typename RhsStlContainer::const_iterator it = rhs_stl_container.begin();
-       it != rhs_stl_container.end(); ++it) {
-    matchers.push_back(
-        internal::MatcherBindSecond(tuple2_matcher, *it));
-  }
-
-  // Delegate the work to UnorderedElementsAreArray().
-  return UnorderedElementsAreArray(matchers);
-}
-
-
-// Supports the UnorderedPointwise(m, {a, b, c}) syntax.
-template <typename Tuple2Matcher, typename T>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename internal::BoundSecondMatcher<Tuple2Matcher, T> >
-UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
-                   std::initializer_list<T> rhs) {
-  return UnorderedPointwise(tuple2_matcher, std::vector<T>(rhs));
-}
-
-
-// Matches an STL-style container or a native array that contains at
-// least one element matching the given value or matcher.
-//
-// Examples:
-//   ::std::set<int> page_ids;
-//   page_ids.insert(3);
-//   page_ids.insert(1);
-//   EXPECT_THAT(page_ids, Contains(1));
-//   EXPECT_THAT(page_ids, Contains(Gt(2)));
-//   EXPECT_THAT(page_ids, Not(Contains(4)));
-//
-//   ::std::map<int, size_t> page_lengths;
-//   page_lengths[1] = 100;
-//   EXPECT_THAT(page_lengths,
-//               Contains(::std::pair<const int, size_t>(1, 100)));
-//
-//   const char* user_ids[] = { "joe", "mike", "tom" };
-//   EXPECT_THAT(user_ids, Contains(Eq(::std::string("tom"))));
-template <typename M>
-inline internal::ContainsMatcher<M> Contains(M matcher) {
-  return internal::ContainsMatcher<M>(matcher);
-}
-
-// IsSupersetOf(iterator_first, iterator_last)
-// IsSupersetOf(pointer, count)
-// IsSupersetOf(array)
-// IsSupersetOf(container)
-// IsSupersetOf({e1, e2, ..., en})
-//
-// IsSupersetOf() verifies that a surjective partial mapping onto a collection
-// of matchers exists. In other words, a container matches
-// IsSupersetOf({e1, ..., en}) if and only if there is a permutation
-// {y1, ..., yn} of some of the container's elements where y1 matches e1,
-// ..., and yn matches en. Obviously, the size of the container must be >= n
-// in order to have a match. Examples:
-//
-// - {1, 2, 3} matches IsSupersetOf({Ge(3), Ne(0)}), as 3 matches Ge(3) and
-//   1 matches Ne(0).
-// - {1, 2} doesn't match IsSupersetOf({Eq(1), Lt(2)}), even though 1 matches
-//   both Eq(1) and Lt(2). The reason is that different matchers must be used
-//   for elements in different slots of the container.
-// - {1, 1, 2} matches IsSupersetOf({Eq(1), Lt(2)}), as (the first) 1 matches
-//   Eq(1) and (the second) 1 matches Lt(2).
-// - {1, 2, 3} matches IsSupersetOf(Gt(1), Gt(1)), as 2 matches (the first)
-//   Gt(1) and 3 matches (the second) Gt(1).
-//
-// The matchers can be specified as an array, a pointer and count, a container,
-// an initializer list, or an STL iterator range. In each of these cases, the
-// underlying matchers can be either values or matchers.
-
-template <typename Iter>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename ::std::iterator_traits<Iter>::value_type>
-IsSupersetOf(Iter first, Iter last) {
-  typedef typename ::std::iterator_traits<Iter>::value_type T;
-  return internal::UnorderedElementsAreArrayMatcher<T>(
-      internal::UnorderedMatcherRequire::Superset, first, last);
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T> IsSupersetOf(
-    const T* pointer, size_t count) {
-  return IsSupersetOf(pointer, pointer + count);
-}
-
-template <typename T, size_t N>
-inline internal::UnorderedElementsAreArrayMatcher<T> IsSupersetOf(
-    const T (&array)[N]) {
-  return IsSupersetOf(array, N);
-}
-
-template <typename Container>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename Container::value_type>
-IsSupersetOf(const Container& container) {
-  return IsSupersetOf(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T> IsSupersetOf(
-    ::std::initializer_list<T> xs) {
-  return IsSupersetOf(xs.begin(), xs.end());
-}
-
-// IsSubsetOf(iterator_first, iterator_last)
-// IsSubsetOf(pointer, count)
-// IsSubsetOf(array)
-// IsSubsetOf(container)
-// IsSubsetOf({e1, e2, ..., en})
-//
-// IsSubsetOf() verifies that an injective mapping onto a collection of matchers
-// exists.  In other words, a container matches IsSubsetOf({e1, ..., en}) if and
-// only if there is a subset of matchers {m1, ..., mk} which would match the
-// container using UnorderedElementsAre.  Obviously, the size of the container
-// must be <= n in order to have a match. Examples:
-//
-// - {1} matches IsSubsetOf({Gt(0), Lt(0)}), as 1 matches Gt(0).
-// - {1, -1} matches IsSubsetOf({Lt(0), Gt(0)}), as 1 matches Gt(0) and -1
-//   matches Lt(0).
-// - {1, 2} doesn't matches IsSubsetOf({Gt(0), Lt(0)}), even though 1 and 2 both
-//   match Gt(0). The reason is that different matchers must be used for
-//   elements in different slots of the container.
-//
-// The matchers can be specified as an array, a pointer and count, a container,
-// an initializer list, or an STL iterator range. In each of these cases, the
-// underlying matchers can be either values or matchers.
-
-template <typename Iter>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename ::std::iterator_traits<Iter>::value_type>
-IsSubsetOf(Iter first, Iter last) {
-  typedef typename ::std::iterator_traits<Iter>::value_type T;
-  return internal::UnorderedElementsAreArrayMatcher<T>(
-      internal::UnorderedMatcherRequire::Subset, first, last);
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
-    const T* pointer, size_t count) {
-  return IsSubsetOf(pointer, pointer + count);
-}
-
-template <typename T, size_t N>
-inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
-    const T (&array)[N]) {
-  return IsSubsetOf(array, N);
-}
-
-template <typename Container>
-inline internal::UnorderedElementsAreArrayMatcher<
-    typename Container::value_type>
-IsSubsetOf(const Container& container) {
-  return IsSubsetOf(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
-    ::std::initializer_list<T> xs) {
-  return IsSubsetOf(xs.begin(), xs.end());
-}
-
-// Matches an STL-style container or a native array that contains only
-// elements matching the given value or matcher.
-//
-// Each(m) is semantically equivalent to Not(Contains(Not(m))). Only
-// the messages are different.
-//
-// Examples:
-//   ::std::set<int> page_ids;
-//   // Each(m) matches an empty container, regardless of what m is.
-//   EXPECT_THAT(page_ids, Each(Eq(1)));
-//   EXPECT_THAT(page_ids, Each(Eq(77)));
-//
-//   page_ids.insert(3);
-//   EXPECT_THAT(page_ids, Each(Gt(0)));
-//   EXPECT_THAT(page_ids, Not(Each(Gt(4))));
-//   page_ids.insert(1);
-//   EXPECT_THAT(page_ids, Not(Each(Lt(2))));
-//
-//   ::std::map<int, size_t> page_lengths;
-//   page_lengths[1] = 100;
-//   page_lengths[2] = 200;
-//   page_lengths[3] = 300;
-//   EXPECT_THAT(page_lengths, Not(Each(Pair(1, 100))));
-//   EXPECT_THAT(page_lengths, Each(Key(Le(3))));
-//
-//   const char* user_ids[] = { "joe", "mike", "tom" };
-//   EXPECT_THAT(user_ids, Not(Each(Eq(::std::string("tom")))));
-template <typename M>
-inline internal::EachMatcher<M> Each(M matcher) {
-  return internal::EachMatcher<M>(matcher);
-}
-
-// Key(inner_matcher) matches an std::pair whose 'first' field matches
-// inner_matcher.  For example, Contains(Key(Ge(5))) can be used to match an
-// std::map that contains at least one element whose key is >= 5.
-template <typename M>
-inline internal::KeyMatcher<M> Key(M inner_matcher) {
-  return internal::KeyMatcher<M>(inner_matcher);
-}
-
-// Pair(first_matcher, second_matcher) matches a std::pair whose 'first' field
-// matches first_matcher and whose 'second' field matches second_matcher.  For
-// example, EXPECT_THAT(map_type, ElementsAre(Pair(Ge(5), "foo"))) can be used
-// to match a std::map<int, string> that contains exactly one element whose key
-// is >= 5 and whose value equals "foo".
-template <typename FirstMatcher, typename SecondMatcher>
-inline internal::PairMatcher<FirstMatcher, SecondMatcher>
-Pair(FirstMatcher first_matcher, SecondMatcher second_matcher) {
-  return internal::PairMatcher<FirstMatcher, SecondMatcher>(
-      first_matcher, second_matcher);
-}
-
-namespace no_adl {
-// FieldsAre(matchers...) matches piecewise the fields of compatible structs.
-// These include those that support `get<I>(obj)`, and when structured bindings
-// are enabled any class that supports them.
-// In particular, `std::tuple`, `std::pair`, `std::array` and aggregate types.
-template <typename... M>
-internal::FieldsAreMatcher<typename std::decay<M>::type...> FieldsAre(
-    M&&... matchers) {
-  return internal::FieldsAreMatcher<typename std::decay<M>::type...>(
-      std::forward<M>(matchers)...);
-}
-
-// Creates a matcher that matches a pointer (raw or smart) that matches
-// inner_matcher.
-template <typename InnerMatcher>
-inline internal::PointerMatcher<InnerMatcher> Pointer(
-    const InnerMatcher& inner_matcher) {
-  return internal::PointerMatcher<InnerMatcher>(inner_matcher);
-}
-
-// Creates a matcher that matches an object that has an address that matches
-// inner_matcher.
-template <typename InnerMatcher>
-inline internal::AddressMatcher<InnerMatcher> Address(
-    const InnerMatcher& inner_matcher) {
-  return internal::AddressMatcher<InnerMatcher>(inner_matcher);
-}
-}  // namespace no_adl
-
-// Returns a predicate that is satisfied by anything that matches the
-// given matcher.
-template <typename M>
-inline internal::MatcherAsPredicate<M> Matches(M matcher) {
-  return internal::MatcherAsPredicate<M>(matcher);
-}
-
-// Returns true if and only if the value matches the matcher.
-template <typename T, typename M>
-inline bool Value(const T& value, M matcher) {
-  return testing::Matches(matcher)(value);
-}
-
-// Matches the value against the given matcher and explains the match
-// result to listener.
-template <typename T, typename M>
-inline bool ExplainMatchResult(
-    M matcher, const T& value, MatchResultListener* listener) {
-  return SafeMatcherCast<const T&>(matcher).MatchAndExplain(value, listener);
-}
-
-// Returns a string representation of the given matcher.  Useful for description
-// strings of matchers defined using MATCHER_P* macros that accept matchers as
-// their arguments.  For example:
-//
-// MATCHER_P(XAndYThat, matcher,
-//           "X that " + DescribeMatcher<int>(matcher, negation) +
-//               " and Y that " + DescribeMatcher<double>(matcher, negation)) {
-//   return ExplainMatchResult(matcher, arg.x(), result_listener) &&
-//          ExplainMatchResult(matcher, arg.y(), result_listener);
-// }
-template <typename T, typename M>
-std::string DescribeMatcher(const M& matcher, bool negation = false) {
-  ::std::stringstream ss;
-  Matcher<T> monomorphic_matcher = SafeMatcherCast<T>(matcher);
-  if (negation) {
-    monomorphic_matcher.DescribeNegationTo(&ss);
-  } else {
-    monomorphic_matcher.DescribeTo(&ss);
-  }
-  return ss.str();
-}
-
-template <typename... Args>
-internal::ElementsAreMatcher<
-    std::tuple<typename std::decay<const Args&>::type...>>
-ElementsAre(const Args&... matchers) {
-  return internal::ElementsAreMatcher<
-      std::tuple<typename std::decay<const Args&>::type...>>(
-      std::make_tuple(matchers...));
-}
-
-template <typename... Args>
-internal::UnorderedElementsAreMatcher<
-    std::tuple<typename std::decay<const Args&>::type...>>
-UnorderedElementsAre(const Args&... matchers) {
-  return internal::UnorderedElementsAreMatcher<
-      std::tuple<typename std::decay<const Args&>::type...>>(
-      std::make_tuple(matchers...));
-}
-
-// Define variadic matcher versions.
-template <typename... Args>
-internal::AllOfMatcher<typename std::decay<const Args&>::type...> AllOf(
-    const Args&... matchers) {
-  return internal::AllOfMatcher<typename std::decay<const Args&>::type...>(
-      matchers...);
-}
-
-template <typename... Args>
-internal::AnyOfMatcher<typename std::decay<const Args&>::type...> AnyOf(
-    const Args&... matchers) {
-  return internal::AnyOfMatcher<typename std::decay<const Args&>::type...>(
-      matchers...);
-}
-
-// AnyOfArray(array)
-// AnyOfArray(pointer, count)
-// AnyOfArray(container)
-// AnyOfArray({ e1, e2, ..., en })
-// AnyOfArray(iterator_first, iterator_last)
-//
-// AnyOfArray() verifies whether a given value matches any member of a
-// collection of matchers.
-//
-// AllOfArray(array)
-// AllOfArray(pointer, count)
-// AllOfArray(container)
-// AllOfArray({ e1, e2, ..., en })
-// AllOfArray(iterator_first, iterator_last)
-//
-// AllOfArray() verifies whether a given value matches all members of a
-// collection of matchers.
-//
-// The matchers can be specified as an array, a pointer and count, a container,
-// an initializer list, or an STL iterator range. In each of these cases, the
-// underlying matchers can be either values or matchers.
-
-template <typename Iter>
-inline internal::AnyOfArrayMatcher<
-    typename ::std::iterator_traits<Iter>::value_type>
-AnyOfArray(Iter first, Iter last) {
-  return internal::AnyOfArrayMatcher<
-      typename ::std::iterator_traits<Iter>::value_type>(first, last);
-}
-
-template <typename Iter>
-inline internal::AllOfArrayMatcher<
-    typename ::std::iterator_traits<Iter>::value_type>
-AllOfArray(Iter first, Iter last) {
-  return internal::AllOfArrayMatcher<
-      typename ::std::iterator_traits<Iter>::value_type>(first, last);
-}
-
-template <typename T>
-inline internal::AnyOfArrayMatcher<T> AnyOfArray(const T* ptr, size_t count) {
-  return AnyOfArray(ptr, ptr + count);
-}
-
-template <typename T>
-inline internal::AllOfArrayMatcher<T> AllOfArray(const T* ptr, size_t count) {
-  return AllOfArray(ptr, ptr + count);
-}
-
-template <typename T, size_t N>
-inline internal::AnyOfArrayMatcher<T> AnyOfArray(const T (&array)[N]) {
-  return AnyOfArray(array, N);
-}
-
-template <typename T, size_t N>
-inline internal::AllOfArrayMatcher<T> AllOfArray(const T (&array)[N]) {
-  return AllOfArray(array, N);
-}
-
-template <typename Container>
-inline internal::AnyOfArrayMatcher<typename Container::value_type> AnyOfArray(
-    const Container& container) {
-  return AnyOfArray(container.begin(), container.end());
-}
-
-template <typename Container>
-inline internal::AllOfArrayMatcher<typename Container::value_type> AllOfArray(
-    const Container& container) {
-  return AllOfArray(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::AnyOfArrayMatcher<T> AnyOfArray(
-    ::std::initializer_list<T> xs) {
-  return AnyOfArray(xs.begin(), xs.end());
-}
-
-template <typename T>
-inline internal::AllOfArrayMatcher<T> AllOfArray(
-    ::std::initializer_list<T> xs) {
-  return AllOfArray(xs.begin(), xs.end());
-}
-
-// Args<N1, N2, ..., Nk>(a_matcher) matches a tuple if the selected
-// fields of it matches a_matcher.  C++ doesn't support default
-// arguments for function templates, so we have to overload it.
-template <size_t... k, typename InnerMatcher>
-internal::ArgsMatcher<typename std::decay<InnerMatcher>::type, k...> Args(
-    InnerMatcher&& matcher) {
-  return internal::ArgsMatcher<typename std::decay<InnerMatcher>::type, k...>(
-      std::forward<InnerMatcher>(matcher));
-}
-
-// AllArgs(m) is a synonym of m.  This is useful in
-//
-//   EXPECT_CALL(foo, Bar(_, _)).With(AllArgs(Eq()));
-//
-// which is easier to read than
-//
-//   EXPECT_CALL(foo, Bar(_, _)).With(Eq());
-template <typename InnerMatcher>
-inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
-
-// Returns a matcher that matches the value of an optional<> type variable.
-// The matcher implementation only uses '!arg' and requires that the optional<>
-// type has a 'value_type' member type and that '*arg' is of type 'value_type'
-// and is printable using 'PrintToString'. It is compatible with
-// std::optional/std::experimental::optional.
-// Note that to compare an optional type variable against nullopt you should
-// use Eq(nullopt) and not Eq(Optional(nullopt)). The latter implies that the
-// optional value contains an optional itself.
-template <typename ValueMatcher>
-inline internal::OptionalMatcher<ValueMatcher> Optional(
-    const ValueMatcher& value_matcher) {
-  return internal::OptionalMatcher<ValueMatcher>(value_matcher);
-}
-
-// Returns a matcher that matches the value of a absl::any type variable.
-template <typename T>
-PolymorphicMatcher<internal::any_cast_matcher::AnyCastMatcher<T> > AnyWith(
-    const Matcher<const T&>& matcher) {
-  return MakePolymorphicMatcher(
-      internal::any_cast_matcher::AnyCastMatcher<T>(matcher));
-}
-
-// Returns a matcher that matches the value of a variant<> type variable.
-// The matcher implementation uses ADL to find the holds_alternative and get
-// functions.
-// It is compatible with std::variant.
-template <typename T>
-PolymorphicMatcher<internal::variant_matcher::VariantMatcher<T> > VariantWith(
-    const Matcher<const T&>& matcher) {
-  return MakePolymorphicMatcher(
-      internal::variant_matcher::VariantMatcher<T>(matcher));
-}
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Anything inside the `internal` namespace is internal to the implementation
-// and must not be used in user code!
-namespace internal {
-
-class WithWhatMatcherImpl {
- public:
-  WithWhatMatcherImpl(Matcher<std::string> matcher)
-      : matcher_(std::move(matcher)) {}
-
-  void DescribeTo(std::ostream* os) const {
-    *os << "contains .what() that ";
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(std::ostream* os) const {
-    *os << "contains .what() that does not ";
-    matcher_.DescribeTo(os);
-  }
-
-  template <typename Err>
-  bool MatchAndExplain(const Err& err, MatchResultListener* listener) const {
-    *listener << "which contains .what() that ";
-    return matcher_.MatchAndExplain(err.what(), listener);
-  }
-
- private:
-  const Matcher<std::string> matcher_;
-};
-
-inline PolymorphicMatcher<WithWhatMatcherImpl> WithWhat(
-    Matcher<std::string> m) {
-  return MakePolymorphicMatcher(WithWhatMatcherImpl(std::move(m)));
-}
-
-template <typename Err>
-class ExceptionMatcherImpl {
-  class NeverThrown {
-   public:
-    const char* what() const noexcept {
-      return "this exception should never be thrown";
-    }
-  };
-
-  // If the matchee raises an exception of a wrong type, we'd like to
-  // catch it and print its message and type. To do that, we add an additional
-  // catch clause:
-  //
-  //     try { ... }
-  //     catch (const Err&) { /* an expected exception */ }
-  //     catch (const std::exception&) { /* exception of a wrong type */ }
-  //
-  // However, if the `Err` itself is `std::exception`, we'd end up with two
-  // identical `catch` clauses:
-  //
-  //     try { ... }
-  //     catch (const std::exception&) { /* an expected exception */ }
-  //     catch (const std::exception&) { /* exception of a wrong type */ }
-  //
-  // This can cause a warning or an error in some compilers. To resolve
-  // the issue, we use a fake error type whenever `Err` is `std::exception`:
-  //
-  //     try { ... }
-  //     catch (const std::exception&) { /* an expected exception */ }
-  //     catch (const NeverThrown&) { /* exception of a wrong type */ }
-  using DefaultExceptionType = typename std::conditional<
-      std::is_same<typename std::remove_cv<
-                       typename std::remove_reference<Err>::type>::type,
-                   std::exception>::value,
-      const NeverThrown&, const std::exception&>::type;
-
- public:
-  ExceptionMatcherImpl(Matcher<const Err&> matcher)
-      : matcher_(std::move(matcher)) {}
-
-  void DescribeTo(std::ostream* os) const {
-    *os << "throws an exception which is a " << GetTypeName<Err>();
-    *os << " which ";
-    matcher_.DescribeTo(os);
-  }
-
-  void DescribeNegationTo(std::ostream* os) const {
-    *os << "throws an exception which is not a " << GetTypeName<Err>();
-    *os << " which ";
-    matcher_.DescribeNegationTo(os);
-  }
-
-  template <typename T>
-  bool MatchAndExplain(T&& x, MatchResultListener* listener) const {
-    try {
-      (void)(std::forward<T>(x)());
-    } catch (const Err& err) {
-      *listener << "throws an exception which is a " << GetTypeName<Err>();
-      *listener << " ";
-      return matcher_.MatchAndExplain(err, listener);
-    } catch (DefaultExceptionType err) {
-#if GTEST_HAS_RTTI
-      *listener << "throws an exception of type " << GetTypeName(typeid(err));
-      *listener << " ";
-#else
-      *listener << "throws an std::exception-derived type ";
-#endif
-      *listener << "with description \"" << err.what() << "\"";
-      return false;
-    } catch (...) {
-      *listener << "throws an exception of an unknown type";
-      return false;
-    }
-
-    *listener << "does not throw any exception";
-    return false;
-  }
-
- private:
-  const Matcher<const Err&> matcher_;
-};
-
-}  // namespace internal
-
-// Throws()
-// Throws(exceptionMatcher)
-// ThrowsMessage(messageMatcher)
-//
-// This matcher accepts a callable and verifies that when invoked, it throws
-// an exception with the given type and properties.
-//
-// Examples:
-//
-//   EXPECT_THAT(
-//       []() { throw std::runtime_error("message"); },
-//       Throws<std::runtime_error>());
-//
-//   EXPECT_THAT(
-//       []() { throw std::runtime_error("message"); },
-//       ThrowsMessage<std::runtime_error>(HasSubstr("message")));
-//
-//   EXPECT_THAT(
-//       []() { throw std::runtime_error("message"); },
-//       Throws<std::runtime_error>(
-//           Property(&std::runtime_error::what, HasSubstr("message"))));
-
-template <typename Err>
-PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> Throws() {
-  return MakePolymorphicMatcher(
-      internal::ExceptionMatcherImpl<Err>(A<const Err&>()));
-}
-
-template <typename Err, typename ExceptionMatcher>
-PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> Throws(
-    const ExceptionMatcher& exception_matcher) {
-  // Using matcher cast allows users to pass a matcher of a more broad type.
-  // For example user may want to pass Matcher<std::exception>
-  // to Throws<std::runtime_error>, or Matcher<int64> to Throws<int32>.
-  return MakePolymorphicMatcher(internal::ExceptionMatcherImpl<Err>(
-      SafeMatcherCast<const Err&>(exception_matcher)));
-}
-
-template <typename Err, typename MessageMatcher>
-PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> ThrowsMessage(
-    MessageMatcher&& message_matcher) {
-  static_assert(std::is_base_of<std::exception, Err>::value,
-                "expected an std::exception-derived type");
-  return Throws<Err>(internal::WithWhat(
-      MatcherCast<std::string>(std::forward<MessageMatcher>(message_matcher))));
-}
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-// These macros allow using matchers to check values in Google Test
-// tests.  ASSERT_THAT(value, matcher) and EXPECT_THAT(value, matcher)
-// succeed if and only if the value matches the matcher.  If the assertion
-// fails, the value and the description of the matcher will be printed.
-#define ASSERT_THAT(value, matcher) ASSERT_PRED_FORMAT1(\
-    ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
-#define EXPECT_THAT(value, matcher) EXPECT_PRED_FORMAT1(\
-    ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
-
-// MATCHER* macroses itself are listed below.
-#define MATCHER(name, description)                                             \
-  class name##Matcher                                                          \
-      : public ::testing::internal::MatcherBaseImpl<name##Matcher> {           \
-   public:                                                                     \
-    template <typename arg_type>                                               \
-    class gmock_Impl : public ::testing::MatcherInterface<const arg_type&> {   \
-     public:                                                                   \
-      gmock_Impl() {}                                                          \
-      bool MatchAndExplain(                                                    \
-          const arg_type& arg,                                                 \
-          ::testing::MatchResultListener* result_listener) const override;     \
-      void DescribeTo(::std::ostream* gmock_os) const override {               \
-        *gmock_os << FormatDescription(false);                                 \
-      }                                                                        \
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {       \
-        *gmock_os << FormatDescription(true);                                  \
-      }                                                                        \
-                                                                               \
-     private:                                                                  \
-      ::std::string FormatDescription(bool negation) const {                   \
-        ::std::string gmock_description = (description);                       \
-        if (!gmock_description.empty()) {                                      \
-          return gmock_description;                                            \
-        }                                                                      \
-        return ::testing::internal::FormatMatcherDescription(negation, #name,  \
-                                                             {});              \
-      }                                                                        \
-    };                                                                         \
-  };                                                                           \
-  GTEST_ATTRIBUTE_UNUSED_ inline name##Matcher name() { return {}; }           \
-  template <typename arg_type>                                                 \
-  bool name##Matcher::gmock_Impl<arg_type>::MatchAndExplain(                   \
-      const arg_type& arg,                                                     \
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_) \
-      const
-
-#define MATCHER_P(name, p0, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP, description, (p0))
-#define MATCHER_P2(name, p0, p1, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP2, description, (p0, p1))
-#define MATCHER_P3(name, p0, p1, p2, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP3, description, (p0, p1, p2))
-#define MATCHER_P4(name, p0, p1, p2, p3, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP4, description, (p0, p1, p2, p3))
-#define MATCHER_P5(name, p0, p1, p2, p3, p4, description)    \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP5, description, \
-                         (p0, p1, p2, p3, p4))
-#define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP6, description,  \
-                         (p0, p1, p2, p3, p4, p5))
-#define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP7, description,      \
-                         (p0, p1, p2, p3, p4, p5, p6))
-#define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP8, description,          \
-                         (p0, p1, p2, p3, p4, p5, p6, p7))
-#define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP9, description,              \
-                         (p0, p1, p2, p3, p4, p5, p6, p7, p8))
-#define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description) \
-  GMOCK_INTERNAL_MATCHER(name, name##MatcherP10, description,                  \
-                         (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9))
-
-#define GMOCK_INTERNAL_MATCHER(name, full_name, description, args)             \
-  template <GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args)>                      \
-  class full_name : public ::testing::internal::MatcherBaseImpl<               \
-                        full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>> { \
-   public:                                                                     \
-    using full_name::MatcherBaseImpl::MatcherBaseImpl;                         \
-    template <typename arg_type>                                               \
-    class gmock_Impl : public ::testing::MatcherInterface<const arg_type&> {   \
-     public:                                                                   \
-      explicit gmock_Impl(GMOCK_INTERNAL_MATCHER_FUNCTION_ARGS(args))          \
-          : GMOCK_INTERNAL_MATCHER_FORWARD_ARGS(args) {}                       \
-      bool MatchAndExplain(                                                    \
-          const arg_type& arg,                                                 \
-          ::testing::MatchResultListener* result_listener) const override;     \
-      void DescribeTo(::std::ostream* gmock_os) const override {               \
-        *gmock_os << FormatDescription(false);                                 \
-      }                                                                        \
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {       \
-        *gmock_os << FormatDescription(true);                                  \
-      }                                                                        \
-      GMOCK_INTERNAL_MATCHER_MEMBERS(args)                                     \
-                                                                               \
-     private:                                                                  \
-      ::std::string FormatDescription(bool negation) const {                   \
-        ::std::string gmock_description = (description);                       \
-        if (!gmock_description.empty()) {                                      \
-          return gmock_description;                                            \
-        }                                                                      \
-        return ::testing::internal::FormatMatcherDescription(                  \
-            negation, #name,                                                   \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(      \
-                ::std::tuple<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>(        \
-                    GMOCK_INTERNAL_MATCHER_MEMBERS_USAGE(args))));             \
-      }                                                                        \
-    };                                                                         \
-  };                                                                           \
-  template <GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args)>                      \
-  inline full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)> name(             \
-      GMOCK_INTERNAL_MATCHER_FUNCTION_ARGS(args)) {                            \
-    return full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>(                \
-        GMOCK_INTERNAL_MATCHER_ARGS_USAGE(args));                              \
-  }                                                                            \
-  template <GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args)>                      \
-  template <typename arg_type>                                                 \
-  bool full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>::gmock_Impl<        \
-      arg_type>::MatchAndExplain(const arg_type& arg,                          \
-                                 ::testing::MatchResultListener*               \
-                                     result_listener GTEST_ATTRIBUTE_UNUSED_)  \
-      const
-
-#define GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args) \
-  GMOCK_PP_TAIL(                                     \
-      GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAM, , args))
-#define GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAM(i_unused, data_unused, arg) \
-  , typename arg##_type
-
-#define GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_TYPE_PARAM, , args))
-#define GMOCK_INTERNAL_MATCHER_TYPE_PARAM(i_unused, data_unused, arg) \
-  , arg##_type
-
-#define GMOCK_INTERNAL_MATCHER_FUNCTION_ARGS(args) \
-  GMOCK_PP_TAIL(dummy_first GMOCK_PP_FOR_EACH(     \
-      GMOCK_INTERNAL_MATCHER_FUNCTION_ARG, , args))
-#define GMOCK_INTERNAL_MATCHER_FUNCTION_ARG(i, data_unused, arg) \
-  , arg##_type gmock_p##i
-
-#define GMOCK_INTERNAL_MATCHER_FORWARD_ARGS(args) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_FORWARD_ARG, , args))
-#define GMOCK_INTERNAL_MATCHER_FORWARD_ARG(i, data_unused, arg) \
-  , arg(::std::forward<arg##_type>(gmock_p##i))
-
-#define GMOCK_INTERNAL_MATCHER_MEMBERS(args) \
-  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_MEMBER, , args)
-#define GMOCK_INTERNAL_MATCHER_MEMBER(i_unused, data_unused, arg) \
-  const arg##_type arg;
-
-#define GMOCK_INTERNAL_MATCHER_MEMBERS_USAGE(args) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_MEMBER_USAGE, , args))
-#define GMOCK_INTERNAL_MATCHER_MEMBER_USAGE(i_unused, data_unused, arg) , arg
-
-#define GMOCK_INTERNAL_MATCHER_ARGS_USAGE(args) \
-  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_ARG_USAGE, , args))
-#define GMOCK_INTERNAL_MATCHER_ARG_USAGE(i, data_unused, arg_unused) \
-  , gmock_p##i
-
-// To prevent ADL on certain functions we put them on a separate namespace.
-using namespace no_adl;  // NOLINT
-
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251 5046
-
-// Include any custom callback matchers added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations. See README for details
-//
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>  // NOLINT
-#endif
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// An abstract handle of an expectation.
-class Expectation;
-
-// A set of expectation handles.
-class ExpectationSet;
-
-// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
-// and MUST NOT BE USED IN USER CODE!!!
-namespace internal {
-
-// Implements a mock function.
-template <typename F> class FunctionMocker;
-
-// Base class for expectations.
-class ExpectationBase;
-
-// Implements an expectation.
-template <typename F> class TypedExpectation;
-
-// Helper class for testing the Expectation class template.
-class ExpectationTester;
-
-// Helper classes for implementing NiceMock, StrictMock, and NaggyMock.
-template <typename MockClass>
-class NiceMockImpl;
-template <typename MockClass>
-class StrictMockImpl;
-template <typename MockClass>
-class NaggyMockImpl;
-
-// Protects the mock object registry (in class Mock), all function
-// mockers, and all expectations.
-//
-// The reason we don't use more fine-grained protection is: when a
-// mock function Foo() is called, it needs to consult its expectations
-// to see which one should be picked.  If another thread is allowed to
-// call a mock function (either Foo() or a different one) at the same
-// time, it could affect the "retired" attributes of Foo()'s
-// expectations when InSequence() is used, and thus affect which
-// expectation gets picked.  Therefore, we sequence all mock function
-// calls to ensure the integrity of the mock objects' states.
-GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_gmock_mutex);
-
-// Untyped base class for ActionResultHolder<R>.
-class UntypedActionResultHolderBase;
-
-// Abstract base class of FunctionMocker.  This is the
-// type-agnostic part of the function mocker interface.  Its pure
-// virtual methods are implemented by FunctionMocker.
-class GTEST_API_ UntypedFunctionMockerBase {
- public:
-  UntypedFunctionMockerBase();
-  virtual ~UntypedFunctionMockerBase();
-
-  // Verifies that all expectations on this mock function have been
-  // satisfied.  Reports one or more Google Test non-fatal failures
-  // and returns false if not.
-  bool VerifyAndClearExpectationsLocked()
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
-  // Clears the ON_CALL()s set on this mock function.
-  virtual void ClearDefaultActionsLocked()
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) = 0;
-
-  // In all of the following Untyped* functions, it's the caller's
-  // responsibility to guarantee the correctness of the arguments'
-  // types.
-
-  // Performs the default action with the given arguments and returns
-  // the action's result.  The call description string will be used in
-  // the error message to describe the call in the case the default
-  // action fails.
-  // L = *
-  virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
-      void* untyped_args, const std::string& call_description) const = 0;
-
-  // Performs the given action with the given arguments and returns
-  // the action's result.
-  // L = *
-  virtual UntypedActionResultHolderBase* UntypedPerformAction(
-      const void* untyped_action, void* untyped_args) const = 0;
-
-  // Writes a message that the call is uninteresting (i.e. neither
-  // explicitly expected nor explicitly unexpected) to the given
-  // ostream.
-  virtual void UntypedDescribeUninterestingCall(
-      const void* untyped_args,
-      ::std::ostream* os) const
-          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
-
-  // Returns the expectation that matches the given function arguments
-  // (or NULL is there's no match); when a match is found,
-  // untyped_action is set to point to the action that should be
-  // performed (or NULL if the action is "do default"), and
-  // is_excessive is modified to indicate whether the call exceeds the
-  // expected number.
-  virtual const ExpectationBase* UntypedFindMatchingExpectation(
-      const void* untyped_args,
-      const void** untyped_action, bool* is_excessive,
-      ::std::ostream* what, ::std::ostream* why)
-          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
-
-  // Prints the given function arguments to the ostream.
-  virtual void UntypedPrintArgs(const void* untyped_args,
-                                ::std::ostream* os) const = 0;
-
-  // Sets the mock object this mock method belongs to, and registers
-  // this information in the global mock registry.  Will be called
-  // whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
-  // method.
-  void RegisterOwner(const void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
-  // Sets the mock object this mock method belongs to, and sets the
-  // name of the mock function.  Will be called upon each invocation
-  // of this mock function.
-  void SetOwnerAndName(const void* mock_obj, const char* name)
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
-  // Returns the mock object this mock method belongs to.  Must be
-  // called after RegisterOwner() or SetOwnerAndName() has been
-  // called.
-  const void* MockObject() const
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
-  // Returns the name of this mock method.  Must be called after
-  // SetOwnerAndName() has been called.
-  const char* Name() const
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
-  // Returns the result of invoking this mock function with the given
-  // arguments.  This function can be safely called from multiple
-  // threads concurrently.  The caller is responsible for deleting the
-  // result.
-  UntypedActionResultHolderBase* UntypedInvokeWith(void* untyped_args)
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
- protected:
-  typedef std::vector<const void*> UntypedOnCallSpecs;
-
-  using UntypedExpectations = std::vector<std::shared_ptr<ExpectationBase>>;
-
-  // Returns an Expectation object that references and co-owns exp,
-  // which must be an expectation on this mock function.
-  Expectation GetHandleOf(ExpectationBase* exp);
-
-  // Address of the mock object this mock method belongs to.  Only
-  // valid after this mock method has been called or
-  // ON_CALL/EXPECT_CALL has been invoked on it.
-  const void* mock_obj_;  // Protected by g_gmock_mutex.
-
-  // Name of the function being mocked.  Only valid after this mock
-  // method has been called.
-  const char* name_;  // Protected by g_gmock_mutex.
-
-  // All default action specs for this function mocker.
-  UntypedOnCallSpecs untyped_on_call_specs_;
-
-  // All expectations for this function mocker.
-  //
-  // It's undefined behavior to interleave expectations (EXPECT_CALLs
-  // or ON_CALLs) and mock function calls.  Also, the order of
-  // expectations is important.  Therefore it's a logic race condition
-  // to read/write untyped_expectations_ concurrently.  In order for
-  // tools like tsan to catch concurrent read/write accesses to
-  // untyped_expectations, we deliberately leave accesses to it
-  // unprotected.
-  UntypedExpectations untyped_expectations_;
-};  // class UntypedFunctionMockerBase
-
-// Untyped base class for OnCallSpec<F>.
-class UntypedOnCallSpecBase {
- public:
-  // The arguments are the location of the ON_CALL() statement.
-  UntypedOnCallSpecBase(const char* a_file, int a_line)
-      : file_(a_file), line_(a_line), last_clause_(kNone) {}
-
-  // Where in the source file was the default action spec defined?
-  const char* file() const { return file_; }
-  int line() const { return line_; }
-
- protected:
-  // Gives each clause in the ON_CALL() statement a name.
-  enum Clause {
-    // Do not change the order of the enum members!  The run-time
-    // syntax checking relies on it.
-    kNone,
-    kWith,
-    kWillByDefault
-  };
-
-  // Asserts that the ON_CALL() statement has a certain property.
-  void AssertSpecProperty(bool property,
-                          const std::string& failure_message) const {
-    Assert(property, file_, line_, failure_message);
-  }
-
-  // Expects that the ON_CALL() statement has a certain property.
-  void ExpectSpecProperty(bool property,
-                          const std::string& failure_message) const {
-    Expect(property, file_, line_, failure_message);
-  }
-
-  const char* file_;
-  int line_;
-
-  // The last clause in the ON_CALL() statement as seen so far.
-  // Initially kNone and changes as the statement is parsed.
-  Clause last_clause_;
-};  // class UntypedOnCallSpecBase
-
-// This template class implements an ON_CALL spec.
-template <typename F>
-class OnCallSpec : public UntypedOnCallSpecBase {
- public:
-  typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
-
-  // Constructs an OnCallSpec object from the information inside
-  // the parenthesis of an ON_CALL() statement.
-  OnCallSpec(const char* a_file, int a_line,
-             const ArgumentMatcherTuple& matchers)
-      : UntypedOnCallSpecBase(a_file, a_line),
-        matchers_(matchers),
-        // By default, extra_matcher_ should match anything.  However,
-        // we cannot initialize it with _ as that causes ambiguity between
-        // Matcher's copy and move constructor for some argument types.
-        extra_matcher_(A<const ArgumentTuple&>()) {}
-
-  // Implements the .With() clause.
-  OnCallSpec& With(const Matcher<const ArgumentTuple&>& m) {
-    // Makes sure this is called at most once.
-    ExpectSpecProperty(last_clause_ < kWith,
-                       ".With() cannot appear "
-                       "more than once in an ON_CALL().");
-    last_clause_ = kWith;
-
-    extra_matcher_ = m;
-    return *this;
-  }
-
-  // Implements the .WillByDefault() clause.
-  OnCallSpec& WillByDefault(const Action<F>& action) {
-    ExpectSpecProperty(last_clause_ < kWillByDefault,
-                       ".WillByDefault() must appear "
-                       "exactly once in an ON_CALL().");
-    last_clause_ = kWillByDefault;
-
-    ExpectSpecProperty(!action.IsDoDefault(),
-                       "DoDefault() cannot be used in ON_CALL().");
-    action_ = action;
-    return *this;
-  }
-
-  // Returns true if and only if the given arguments match the matchers.
-  bool Matches(const ArgumentTuple& args) const {
-    return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
-  }
-
-  // Returns the action specified by the user.
-  const Action<F>& GetAction() const {
-    AssertSpecProperty(last_clause_ == kWillByDefault,
-                       ".WillByDefault() must appear exactly "
-                       "once in an ON_CALL().");
-    return action_;
-  }
-
- private:
-  // The information in statement
-  //
-  //   ON_CALL(mock_object, Method(matchers))
-  //       .With(multi-argument-matcher)
-  //       .WillByDefault(action);
-  //
-  // is recorded in the data members like this:
-  //
-  //   source file that contains the statement => file_
-  //   line number of the statement            => line_
-  //   matchers                                => matchers_
-  //   multi-argument-matcher                  => extra_matcher_
-  //   action                                  => action_
-  ArgumentMatcherTuple matchers_;
-  Matcher<const ArgumentTuple&> extra_matcher_;
-  Action<F> action_;
-};  // class OnCallSpec
-
-// Possible reactions on uninteresting calls.
-enum CallReaction {
-  kAllow,
-  kWarn,
-  kFail,
-};
-
-}  // namespace internal
-
-// Utilities for manipulating mock objects.
-class GTEST_API_ Mock {
- public:
-  // The following public methods can be called concurrently.
-
-  // Tells Google Mock to ignore mock_obj when checking for leaked
-  // mock objects.
-  static void AllowLeak(const void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Verifies and clears all expectations on the given mock object.
-  // If the expectations aren't satisfied, generates one or more
-  // Google Test non-fatal failures and returns false.
-  static bool VerifyAndClearExpectations(void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Verifies all expectations on the given mock object and clears its
-  // default actions and expectations.  Returns true if and only if the
-  // verification was successful.
-  static bool VerifyAndClear(void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Returns whether the mock was created as a naggy mock (default)
-  static bool IsNaggy(void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-  // Returns whether the mock was created as a nice mock
-  static bool IsNice(void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-  // Returns whether the mock was created as a strict mock
-  static bool IsStrict(void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- private:
-  friend class internal::UntypedFunctionMockerBase;
-
-  // Needed for a function mocker to register itself (so that we know
-  // how to clear a mock object).
-  template <typename F>
-  friend class internal::FunctionMocker;
-
-  template <typename MockClass>
-  friend class internal::NiceMockImpl;
-  template <typename MockClass>
-  friend class internal::NaggyMockImpl;
-  template <typename MockClass>
-  friend class internal::StrictMockImpl;
-
-  // Tells Google Mock to allow uninteresting calls on the given mock
-  // object.
-  static void AllowUninterestingCalls(const void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Tells Google Mock to warn the user about uninteresting calls on
-  // the given mock object.
-  static void WarnUninterestingCalls(const void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Tells Google Mock to fail uninteresting calls on the given mock
-  // object.
-  static void FailUninterestingCalls(const void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Tells Google Mock the given mock object is being destroyed and
-  // its entry in the call-reaction table should be removed.
-  static void UnregisterCallReaction(const void* mock_obj)
-      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Returns the reaction Google Mock will have on uninteresting calls
-  // made on the given mock object.
-  static internal::CallReaction GetReactionOnUninterestingCalls(
-      const void* mock_obj)
-          GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Verifies that all expectations on the given mock object have been
-  // satisfied.  Reports one or more Google Test non-fatal failures
-  // and returns false if not.
-  static bool VerifyAndClearExpectationsLocked(void* mock_obj)
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
-
-  // Clears all ON_CALL()s set on the given mock object.
-  static void ClearDefaultActionsLocked(void* mock_obj)
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
-
-  // Registers a mock object and a mock method it owns.
-  static void Register(
-      const void* mock_obj,
-      internal::UntypedFunctionMockerBase* mocker)
-          GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Tells Google Mock where in the source code mock_obj is used in an
-  // ON_CALL or EXPECT_CALL.  In case mock_obj is leaked, this
-  // information helps the user identify which object it is.
-  static void RegisterUseByOnCallOrExpectCall(
-      const void* mock_obj, const char* file, int line)
-          GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
-  // Unregisters a mock method; removes the owning mock object from
-  // the registry when the last mock method associated with it has
-  // been unregistered.  This is called only in the destructor of
-  // FunctionMocker.
-  static void UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
-};  // class Mock
-
-// An abstract handle of an expectation.  Useful in the .After()
-// clause of EXPECT_CALL() for setting the (partial) order of
-// expectations.  The syntax:
-//
-//   Expectation e1 = EXPECT_CALL(...)...;
-//   EXPECT_CALL(...).After(e1)...;
-//
-// sets two expectations where the latter can only be matched after
-// the former has been satisfied.
-//
-// Notes:
-//   - This class is copyable and has value semantics.
-//   - Constness is shallow: a const Expectation object itself cannot
-//     be modified, but the mutable methods of the ExpectationBase
-//     object it references can be called via expectation_base().
-
-class GTEST_API_ Expectation {
- public:
-  // Constructs a null object that doesn't reference any expectation.
-  Expectation();
-  Expectation(Expectation&&) = default;
-  Expectation(const Expectation&) = default;
-  Expectation& operator=(Expectation&&) = default;
-  Expectation& operator=(const Expectation&) = default;
-  ~Expectation();
-
-  // This single-argument ctor must not be explicit, in order to support the
-  //   Expectation e = EXPECT_CALL(...);
-  // syntax.
-  //
-  // A TypedExpectation object stores its pre-requisites as
-  // Expectation objects, and needs to call the non-const Retire()
-  // method on the ExpectationBase objects they reference.  Therefore
-  // Expectation must receive a *non-const* reference to the
-  // ExpectationBase object.
-  Expectation(internal::ExpectationBase& exp);  // NOLINT
-
-  // The compiler-generated copy ctor and operator= work exactly as
-  // intended, so we don't need to define our own.
-
-  // Returns true if and only if rhs references the same expectation as this
-  // object does.
-  bool operator==(const Expectation& rhs) const {
-    return expectation_base_ == rhs.expectation_base_;
-  }
-
-  bool operator!=(const Expectation& rhs) const { return !(*this == rhs); }
-
- private:
-  friend class ExpectationSet;
-  friend class Sequence;
-  friend class ::testing::internal::ExpectationBase;
-  friend class ::testing::internal::UntypedFunctionMockerBase;
-
-  template <typename F>
-  friend class ::testing::internal::FunctionMocker;
-
-  template <typename F>
-  friend class ::testing::internal::TypedExpectation;
-
-  // This comparator is needed for putting Expectation objects into a set.
-  class Less {
-   public:
-    bool operator()(const Expectation& lhs, const Expectation& rhs) const {
-      return lhs.expectation_base_.get() < rhs.expectation_base_.get();
-    }
-  };
-
-  typedef ::std::set<Expectation, Less> Set;
-
-  Expectation(
-      const std::shared_ptr<internal::ExpectationBase>& expectation_base);
-
-  // Returns the expectation this object references.
-  const std::shared_ptr<internal::ExpectationBase>& expectation_base() const {
-    return expectation_base_;
-  }
-
-  // A shared_ptr that co-owns the expectation this handle references.
-  std::shared_ptr<internal::ExpectationBase> expectation_base_;
-};
-
-// A set of expectation handles.  Useful in the .After() clause of
-// EXPECT_CALL() for setting the (partial) order of expectations.  The
-// syntax:
-//
-//   ExpectationSet es;
-//   es += EXPECT_CALL(...)...;
-//   es += EXPECT_CALL(...)...;
-//   EXPECT_CALL(...).After(es)...;
-//
-// sets three expectations where the last one can only be matched
-// after the first two have both been satisfied.
-//
-// This class is copyable and has value semantics.
-class ExpectationSet {
- public:
-  // A bidirectional iterator that can read a const element in the set.
-  typedef Expectation::Set::const_iterator const_iterator;
-
-  // An object stored in the set.  This is an alias of Expectation.
-  typedef Expectation::Set::value_type value_type;
-
-  // Constructs an empty set.
-  ExpectationSet() {}
-
-  // This single-argument ctor must not be explicit, in order to support the
-  //   ExpectationSet es = EXPECT_CALL(...);
-  // syntax.
-  ExpectationSet(internal::ExpectationBase& exp) {  // NOLINT
-    *this += Expectation(exp);
-  }
-
-  // This single-argument ctor implements implicit conversion from
-  // Expectation and thus must not be explicit.  This allows either an
-  // Expectation or an ExpectationSet to be used in .After().
-  ExpectationSet(const Expectation& e) {  // NOLINT
-    *this += e;
-  }
-
-  // The compiler-generator ctor and operator= works exactly as
-  // intended, so we don't need to define our own.
-
-  // Returns true if and only if rhs contains the same set of Expectation
-  // objects as this does.
-  bool operator==(const ExpectationSet& rhs) const {
-    return expectations_ == rhs.expectations_;
-  }
-
-  bool operator!=(const ExpectationSet& rhs) const { return !(*this == rhs); }
-
-  // Implements the syntax
-  //   expectation_set += EXPECT_CALL(...);
-  ExpectationSet& operator+=(const Expectation& e) {
-    expectations_.insert(e);
-    return *this;
-  }
-
-  int size() const { return static_cast<int>(expectations_.size()); }
-
-  const_iterator begin() const { return expectations_.begin(); }
-  const_iterator end() const { return expectations_.end(); }
-
- private:
-  Expectation::Set expectations_;
-};
-
-
-// Sequence objects are used by a user to specify the relative order
-// in which the expectations should match.  They are copyable (we rely
-// on the compiler-defined copy constructor and assignment operator).
-class GTEST_API_ Sequence {
- public:
-  // Constructs an empty sequence.
-  Sequence() : last_expectation_(new Expectation) {}
-
-  // Adds an expectation to this sequence.  The caller must ensure
-  // that no other thread is accessing this Sequence object.
-  void AddExpectation(const Expectation& expectation) const;
-
- private:
-  // The last expectation in this sequence.
-  std::shared_ptr<Expectation> last_expectation_;
-};  // class Sequence
-
-// An object of this type causes all EXPECT_CALL() statements
-// encountered in its scope to be put in an anonymous sequence.  The
-// work is done in the constructor and destructor.  You should only
-// create an InSequence object on the stack.
-//
-// The sole purpose for this class is to support easy definition of
-// sequential expectations, e.g.
-//
-//   {
-//     InSequence dummy;  // The name of the object doesn't matter.
-//
-//     // The following expectations must match in the order they appear.
-//     EXPECT_CALL(a, Bar())...;
-//     EXPECT_CALL(a, Baz())...;
-//     ...
-//     EXPECT_CALL(b, Xyz())...;
-//   }
-//
-// You can create InSequence objects in multiple threads, as long as
-// they are used to affect different mock objects.  The idea is that
-// each thread can create and set up its own mocks as if it's the only
-// thread.  However, for clarity of your tests we recommend you to set
-// up mocks in the main thread unless you have a good reason not to do
-// so.
-class GTEST_API_ InSequence {
- public:
-  InSequence();
-  ~InSequence();
- private:
-  bool sequence_created_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(InSequence);  // NOLINT
-} GTEST_ATTRIBUTE_UNUSED_;
-
-namespace internal {
-
-// Points to the implicit sequence introduced by a living InSequence
-// object (if any) in the current thread or NULL.
-GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
-
-// Base class for implementing expectations.
-//
-// There are two reasons for having a type-agnostic base class for
-// Expectation:
-//
-//   1. We need to store collections of expectations of different
-//   types (e.g. all pre-requisites of a particular expectation, all
-//   expectations in a sequence).  Therefore these expectation objects
-//   must share a common base class.
-//
-//   2. We can avoid binary code bloat by moving methods not depending
-//   on the template argument of Expectation to the base class.
-//
-// This class is internal and mustn't be used by user code directly.
-class GTEST_API_ ExpectationBase {
- public:
-  // source_text is the EXPECT_CALL(...) source that created this Expectation.
-  ExpectationBase(const char* file, int line, const std::string& source_text);
-
-  virtual ~ExpectationBase();
-
-  // Where in the source file was the expectation spec defined?
-  const char* file() const { return file_; }
-  int line() const { return line_; }
-  const char* source_text() const { return source_text_.c_str(); }
-  // Returns the cardinality specified in the expectation spec.
-  const Cardinality& cardinality() const { return cardinality_; }
-
-  // Describes the source file location of this expectation.
-  void DescribeLocationTo(::std::ostream* os) const {
-    *os << FormatFileLocation(file(), line()) << " ";
-  }
-
-  // Describes how many times a function call matching this
-  // expectation has occurred.
-  void DescribeCallCountTo(::std::ostream* os) const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
-  // If this mock method has an extra matcher (i.e. .With(matcher)),
-  // describes it to the ostream.
-  virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) = 0;
-
- protected:
-  friend class ::testing::Expectation;
-  friend class UntypedFunctionMockerBase;
-
-  enum Clause {
-    // Don't change the order of the enum members!
-    kNone,
-    kWith,
-    kTimes,
-    kInSequence,
-    kAfter,
-    kWillOnce,
-    kWillRepeatedly,
-    kRetiresOnSaturation
-  };
-
-  typedef std::vector<const void*> UntypedActions;
-
-  // Returns an Expectation object that references and co-owns this
-  // expectation.
-  virtual Expectation GetHandle() = 0;
-
-  // Asserts that the EXPECT_CALL() statement has the given property.
-  void AssertSpecProperty(bool property,
-                          const std::string& failure_message) const {
-    Assert(property, file_, line_, failure_message);
-  }
-
-  // Expects that the EXPECT_CALL() statement has the given property.
-  void ExpectSpecProperty(bool property,
-                          const std::string& failure_message) const {
-    Expect(property, file_, line_, failure_message);
-  }
-
-  // Explicitly specifies the cardinality of this expectation.  Used
-  // by the subclasses to implement the .Times() clause.
-  void SpecifyCardinality(const Cardinality& cardinality);
-
-  // Returns true if and only if the user specified the cardinality
-  // explicitly using a .Times().
-  bool cardinality_specified() const { return cardinality_specified_; }
-
-  // Sets the cardinality of this expectation spec.
-  void set_cardinality(const Cardinality& a_cardinality) {
-    cardinality_ = a_cardinality;
-  }
-
-  // The following group of methods should only be called after the
-  // EXPECT_CALL() statement, and only when g_gmock_mutex is held by
-  // the current thread.
-
-  // Retires all pre-requisites of this expectation.
-  void RetireAllPreRequisites()
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
-  // Returns true if and only if this expectation is retired.
-  bool is_retired() const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    return retired_;
-  }
-
-  // Retires this expectation.
-  void Retire()
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    retired_ = true;
-  }
-
-  // Returns true if and only if this expectation is satisfied.
-  bool IsSatisfied() const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    return cardinality().IsSatisfiedByCallCount(call_count_);
-  }
-
-  // Returns true if and only if this expectation is saturated.
-  bool IsSaturated() const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    return cardinality().IsSaturatedByCallCount(call_count_);
-  }
-
-  // Returns true if and only if this expectation is over-saturated.
-  bool IsOverSaturated() const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    return cardinality().IsOverSaturatedByCallCount(call_count_);
-  }
-
-  // Returns true if and only if all pre-requisites of this expectation are
-  // satisfied.
-  bool AllPrerequisitesAreSatisfied() const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
-  // Adds unsatisfied pre-requisites of this expectation to 'result'.
-  void FindUnsatisfiedPrerequisites(ExpectationSet* result) const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
-  // Returns the number this expectation has been invoked.
-  int call_count() const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    return call_count_;
-  }
-
-  // Increments the number this expectation has been invoked.
-  void IncrementCallCount()
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    call_count_++;
-  }
-
-  // Checks the action count (i.e. the number of WillOnce() and
-  // WillRepeatedly() clauses) against the cardinality if this hasn't
-  // been done before.  Prints a warning if there are too many or too
-  // few actions.
-  void CheckActionCountIfNotDone() const
-      GTEST_LOCK_EXCLUDED_(mutex_);
-
-  friend class ::testing::Sequence;
-  friend class ::testing::internal::ExpectationTester;
-
-  template <typename Function>
-  friend class TypedExpectation;
-
-  // Implements the .Times() clause.
-  void UntypedTimes(const Cardinality& a_cardinality);
-
-  // This group of fields are part of the spec and won't change after
-  // an EXPECT_CALL() statement finishes.
-  const char* file_;          // The file that contains the expectation.
-  int line_;                  // The line number of the expectation.
-  const std::string source_text_;  // The EXPECT_CALL(...) source text.
-  // True if and only if the cardinality is specified explicitly.
-  bool cardinality_specified_;
-  Cardinality cardinality_;            // The cardinality of the expectation.
-  // The immediate pre-requisites (i.e. expectations that must be
-  // satisfied before this expectation can be matched) of this
-  // expectation.  We use std::shared_ptr in the set because we want an
-  // Expectation object to be co-owned by its FunctionMocker and its
-  // successors.  This allows multiple mock objects to be deleted at
-  // different times.
-  ExpectationSet immediate_prerequisites_;
-
-  // This group of fields are the current state of the expectation,
-  // and can change as the mock function is called.
-  int call_count_;  // How many times this expectation has been invoked.
-  bool retired_;    // True if and only if this expectation has retired.
-  UntypedActions untyped_actions_;
-  bool extra_matcher_specified_;
-  bool repeated_action_specified_;  // True if a WillRepeatedly() was specified.
-  bool retires_on_saturation_;
-  Clause last_clause_;
-  mutable bool action_count_checked_;  // Under mutex_.
-  mutable Mutex mutex_;  // Protects action_count_checked_.
-};  // class ExpectationBase
-
-// Impements an expectation for the given function type.
-template <typename F>
-class TypedExpectation : public ExpectationBase {
- public:
-  typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
-  typedef typename Function<F>::Result Result;
-
-  TypedExpectation(FunctionMocker<F>* owner, const char* a_file, int a_line,
-                   const std::string& a_source_text,
-                   const ArgumentMatcherTuple& m)
-      : ExpectationBase(a_file, a_line, a_source_text),
-        owner_(owner),
-        matchers_(m),
-        // By default, extra_matcher_ should match anything.  However,
-        // we cannot initialize it with _ as that causes ambiguity between
-        // Matcher's copy and move constructor for some argument types.
-        extra_matcher_(A<const ArgumentTuple&>()),
-        repeated_action_(DoDefault()) {}
-
-  ~TypedExpectation() override {
-    // Check the validity of the action count if it hasn't been done
-    // yet (for example, if the expectation was never used).
-    CheckActionCountIfNotDone();
-    for (UntypedActions::const_iterator it = untyped_actions_.begin();
-         it != untyped_actions_.end(); ++it) {
-      delete static_cast<const Action<F>*>(*it);
-    }
-  }
-
-  // Implements the .With() clause.
-  TypedExpectation& With(const Matcher<const ArgumentTuple&>& m) {
-    if (last_clause_ == kWith) {
-      ExpectSpecProperty(false,
-                         ".With() cannot appear "
-                         "more than once in an EXPECT_CALL().");
-    } else {
-      ExpectSpecProperty(last_clause_ < kWith,
-                         ".With() must be the first "
-                         "clause in an EXPECT_CALL().");
-    }
-    last_clause_ = kWith;
-
-    extra_matcher_ = m;
-    extra_matcher_specified_ = true;
-    return *this;
-  }
-
-  // Implements the .Times() clause.
-  TypedExpectation& Times(const Cardinality& a_cardinality) {
-    ExpectationBase::UntypedTimes(a_cardinality);
-    return *this;
-  }
-
-  // Implements the .Times() clause.
-  TypedExpectation& Times(int n) {
-    return Times(Exactly(n));
-  }
-
-  // Implements the .InSequence() clause.
-  TypedExpectation& InSequence(const Sequence& s) {
-    ExpectSpecProperty(last_clause_ <= kInSequence,
-                       ".InSequence() cannot appear after .After(),"
-                       " .WillOnce(), .WillRepeatedly(), or "
-                       ".RetiresOnSaturation().");
-    last_clause_ = kInSequence;
-
-    s.AddExpectation(GetHandle());
-    return *this;
-  }
-  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2) {
-    return InSequence(s1).InSequence(s2);
-  }
-  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
-                               const Sequence& s3) {
-    return InSequence(s1, s2).InSequence(s3);
-  }
-  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
-                               const Sequence& s3, const Sequence& s4) {
-    return InSequence(s1, s2, s3).InSequence(s4);
-  }
-  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
-                               const Sequence& s3, const Sequence& s4,
-                               const Sequence& s5) {
-    return InSequence(s1, s2, s3, s4).InSequence(s5);
-  }
-
-  // Implements that .After() clause.
-  TypedExpectation& After(const ExpectationSet& s) {
-    ExpectSpecProperty(last_clause_ <= kAfter,
-                       ".After() cannot appear after .WillOnce(),"
-                       " .WillRepeatedly(), or "
-                       ".RetiresOnSaturation().");
-    last_clause_ = kAfter;
-
-    for (ExpectationSet::const_iterator it = s.begin(); it != s.end(); ++it) {
-      immediate_prerequisites_ += *it;
-    }
-    return *this;
-  }
-  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2) {
-    return After(s1).After(s2);
-  }
-  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
-                          const ExpectationSet& s3) {
-    return After(s1, s2).After(s3);
-  }
-  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
-                          const ExpectationSet& s3, const ExpectationSet& s4) {
-    return After(s1, s2, s3).After(s4);
-  }
-  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
-                          const ExpectationSet& s3, const ExpectationSet& s4,
-                          const ExpectationSet& s5) {
-    return After(s1, s2, s3, s4).After(s5);
-  }
-
-  // Implements the .WillOnce() clause.
-  TypedExpectation& WillOnce(const Action<F>& action) {
-    ExpectSpecProperty(last_clause_ <= kWillOnce,
-                       ".WillOnce() cannot appear after "
-                       ".WillRepeatedly() or .RetiresOnSaturation().");
-    last_clause_ = kWillOnce;
-
-    untyped_actions_.push_back(new Action<F>(action));
-    if (!cardinality_specified()) {
-      set_cardinality(Exactly(static_cast<int>(untyped_actions_.size())));
-    }
-    return *this;
-  }
-
-  // Implements the .WillRepeatedly() clause.
-  TypedExpectation& WillRepeatedly(const Action<F>& action) {
-    if (last_clause_ == kWillRepeatedly) {
-      ExpectSpecProperty(false,
-                         ".WillRepeatedly() cannot appear "
-                         "more than once in an EXPECT_CALL().");
-    } else {
-      ExpectSpecProperty(last_clause_ < kWillRepeatedly,
-                         ".WillRepeatedly() cannot appear "
-                         "after .RetiresOnSaturation().");
-    }
-    last_clause_ = kWillRepeatedly;
-    repeated_action_specified_ = true;
-
-    repeated_action_ = action;
-    if (!cardinality_specified()) {
-      set_cardinality(AtLeast(static_cast<int>(untyped_actions_.size())));
-    }
-
-    // Now that no more action clauses can be specified, we check
-    // whether their count makes sense.
-    CheckActionCountIfNotDone();
-    return *this;
-  }
-
-  // Implements the .RetiresOnSaturation() clause.
-  TypedExpectation& RetiresOnSaturation() {
-    ExpectSpecProperty(last_clause_ < kRetiresOnSaturation,
-                       ".RetiresOnSaturation() cannot appear "
-                       "more than once.");
-    last_clause_ = kRetiresOnSaturation;
-    retires_on_saturation_ = true;
-
-    // Now that no more action clauses can be specified, we check
-    // whether their count makes sense.
-    CheckActionCountIfNotDone();
-    return *this;
-  }
-
-  // Returns the matchers for the arguments as specified inside the
-  // EXPECT_CALL() macro.
-  const ArgumentMatcherTuple& matchers() const {
-    return matchers_;
-  }
-
-  // Returns the matcher specified by the .With() clause.
-  const Matcher<const ArgumentTuple&>& extra_matcher() const {
-    return extra_matcher_;
-  }
-
-  // Returns the action specified by the .WillRepeatedly() clause.
-  const Action<F>& repeated_action() const { return repeated_action_; }
-
-  // If this mock method has an extra matcher (i.e. .With(matcher)),
-  // describes it to the ostream.
-  void MaybeDescribeExtraMatcherTo(::std::ostream* os) override {
-    if (extra_matcher_specified_) {
-      *os << "    Expected args: ";
-      extra_matcher_.DescribeTo(os);
-      *os << "\n";
-    }
-  }
-
- private:
-  template <typename Function>
-  friend class FunctionMocker;
-
-  // Returns an Expectation object that references and co-owns this
-  // expectation.
-  Expectation GetHandle() override { return owner_->GetHandleOf(this); }
-
-  // The following methods will be called only after the EXPECT_CALL()
-  // statement finishes and when the current thread holds
-  // g_gmock_mutex.
-
-  // Returns true if and only if this expectation matches the given arguments.
-  bool Matches(const ArgumentTuple& args) const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
-  }
-
-  // Returns true if and only if this expectation should handle the given
-  // arguments.
-  bool ShouldHandleArguments(const ArgumentTuple& args) const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-
-    // In case the action count wasn't checked when the expectation
-    // was defined (e.g. if this expectation has no WillRepeatedly()
-    // or RetiresOnSaturation() clause), we check it when the
-    // expectation is used for the first time.
-    CheckActionCountIfNotDone();
-    return !is_retired() && AllPrerequisitesAreSatisfied() && Matches(args);
-  }
-
-  // Describes the result of matching the arguments against this
-  // expectation to the given ostream.
-  void ExplainMatchResultTo(
-      const ArgumentTuple& args,
-      ::std::ostream* os) const
-          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-
-    if (is_retired()) {
-      *os << "         Expected: the expectation is active\n"
-          << "           Actual: it is retired\n";
-    } else if (!Matches(args)) {
-      if (!TupleMatches(matchers_, args)) {
-        ExplainMatchFailureTupleTo(matchers_, args, os);
-      }
-      StringMatchResultListener listener;
-      if (!extra_matcher_.MatchAndExplain(args, &listener)) {
-        *os << "    Expected args: ";
-        extra_matcher_.DescribeTo(os);
-        *os << "\n           Actual: don't match";
-
-        internal::PrintIfNotEmpty(listener.str(), os);
-        *os << "\n";
-      }
-    } else if (!AllPrerequisitesAreSatisfied()) {
-      *os << "         Expected: all pre-requisites are satisfied\n"
-          << "           Actual: the following immediate pre-requisites "
-          << "are not satisfied:\n";
-      ExpectationSet unsatisfied_prereqs;
-      FindUnsatisfiedPrerequisites(&unsatisfied_prereqs);
-      int i = 0;
-      for (ExpectationSet::const_iterator it = unsatisfied_prereqs.begin();
-           it != unsatisfied_prereqs.end(); ++it) {
-        it->expectation_base()->DescribeLocationTo(os);
-        *os << "pre-requisite #" << i++ << "\n";
-      }
-      *os << "                   (end of pre-requisites)\n";
-    } else {
-      // This line is here just for completeness' sake.  It will never
-      // be executed as currently the ExplainMatchResultTo() function
-      // is called only when the mock function call does NOT match the
-      // expectation.
-      *os << "The call matches the expectation.\n";
-    }
-  }
-
-  // Returns the action that should be taken for the current invocation.
-  const Action<F>& GetCurrentAction(const FunctionMocker<F>* mocker,
-                                    const ArgumentTuple& args) const
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    const int count = call_count();
-    Assert(count >= 1, __FILE__, __LINE__,
-           "call_count() is <= 0 when GetCurrentAction() is "
-           "called - this should never happen.");
-
-    const int action_count = static_cast<int>(untyped_actions_.size());
-    if (action_count > 0 && !repeated_action_specified_ &&
-        count > action_count) {
-      // If there is at least one WillOnce() and no WillRepeatedly(),
-      // we warn the user when the WillOnce() clauses ran out.
-      ::std::stringstream ss;
-      DescribeLocationTo(&ss);
-      ss << "Actions ran out in " << source_text() << "...\n"
-         << "Called " << count << " times, but only "
-         << action_count << " WillOnce()"
-         << (action_count == 1 ? " is" : "s are") << " specified - ";
-      mocker->DescribeDefaultActionTo(args, &ss);
-      Log(kWarning, ss.str(), 1);
-    }
-
-    return count <= action_count
-               ? *static_cast<const Action<F>*>(
-                     untyped_actions_[static_cast<size_t>(count - 1)])
-               : repeated_action();
-  }
-
-  // Given the arguments of a mock function call, if the call will
-  // over-saturate this expectation, returns the default action;
-  // otherwise, returns the next action in this expectation.  Also
-  // describes *what* happened to 'what', and explains *why* Google
-  // Mock does it to 'why'.  This method is not const as it calls
-  // IncrementCallCount().  A return value of NULL means the default
-  // action.
-  const Action<F>* GetActionForArguments(const FunctionMocker<F>* mocker,
-                                         const ArgumentTuple& args,
-                                         ::std::ostream* what,
-                                         ::std::ostream* why)
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    if (IsSaturated()) {
-      // We have an excessive call.
-      IncrementCallCount();
-      *what << "Mock function called more times than expected - ";
-      mocker->DescribeDefaultActionTo(args, what);
-      DescribeCallCountTo(why);
-
-      return nullptr;
-    }
-
-    IncrementCallCount();
-    RetireAllPreRequisites();
-
-    if (retires_on_saturation_ && IsSaturated()) {
-      Retire();
-    }
-
-    // Must be done after IncrementCount()!
-    *what << "Mock function call matches " << source_text() <<"...\n";
-    return &(GetCurrentAction(mocker, args));
-  }
-
-  // All the fields below won't change once the EXPECT_CALL()
-  // statement finishes.
-  FunctionMocker<F>* const owner_;
-  ArgumentMatcherTuple matchers_;
-  Matcher<const ArgumentTuple&> extra_matcher_;
-  Action<F> repeated_action_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TypedExpectation);
-};  // class TypedExpectation
-
-// A MockSpec object is used by ON_CALL() or EXPECT_CALL() for
-// specifying the default behavior of, or expectation on, a mock
-// function.
-
-// Note: class MockSpec really belongs to the ::testing namespace.
-// However if we define it in ::testing, MSVC will complain when
-// classes in ::testing::internal declare it as a friend class
-// template.  To workaround this compiler bug, we define MockSpec in
-// ::testing::internal and import it into ::testing.
-
-// Logs a message including file and line number information.
-GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
-                                const char* file, int line,
-                                const std::string& message);
-
-template <typename F>
-class MockSpec {
- public:
-  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-  typedef typename internal::Function<F>::ArgumentMatcherTuple
-      ArgumentMatcherTuple;
-
-  // Constructs a MockSpec object, given the function mocker object
-  // that the spec is associated with.
-  MockSpec(internal::FunctionMocker<F>* function_mocker,
-           const ArgumentMatcherTuple& matchers)
-      : function_mocker_(function_mocker), matchers_(matchers) {}
-
-  // Adds a new default action spec to the function mocker and returns
-  // the newly created spec.
-  internal::OnCallSpec<F>& InternalDefaultActionSetAt(
-      const char* file, int line, const char* obj, const char* call) {
-    LogWithLocation(internal::kInfo, file, line,
-                    std::string("ON_CALL(") + obj + ", " + call + ") invoked");
-    return function_mocker_->AddNewOnCallSpec(file, line, matchers_);
-  }
-
-  // Adds a new expectation spec to the function mocker and returns
-  // the newly created spec.
-  internal::TypedExpectation<F>& InternalExpectedAt(
-      const char* file, int line, const char* obj, const char* call) {
-    const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " +
-                                  call + ")");
-    LogWithLocation(internal::kInfo, file, line, source_text + " invoked");
-    return function_mocker_->AddNewExpectation(
-        file, line, source_text, matchers_);
-  }
-
-  // This operator overload is used to swallow the superfluous parameter list
-  // introduced by the ON/EXPECT_CALL macros. See the macro comments for more
-  // explanation.
-  MockSpec<F>& operator()(const internal::WithoutMatchers&, void* const) {
-    return *this;
-  }
-
- private:
-  template <typename Function>
-  friend class internal::FunctionMocker;
-
-  // The function mocker that owns this spec.
-  internal::FunctionMocker<F>* const function_mocker_;
-  // The argument matchers specified in the spec.
-  ArgumentMatcherTuple matchers_;
-};  // class MockSpec
-
-// Wrapper type for generically holding an ordinary value or lvalue reference.
-// If T is not a reference type, it must be copyable or movable.
-// ReferenceOrValueWrapper<T> is movable, and will also be copyable unless
-// T is a move-only value type (which means that it will always be copyable
-// if the current platform does not support move semantics).
-//
-// The primary template defines handling for values, but function header
-// comments describe the contract for the whole template (including
-// specializations).
-template <typename T>
-class ReferenceOrValueWrapper {
- public:
-  // Constructs a wrapper from the given value/reference.
-  explicit ReferenceOrValueWrapper(T value)
-      : value_(std::move(value)) {
-  }
-
-  // Unwraps and returns the underlying value/reference, exactly as
-  // originally passed. The behavior of calling this more than once on
-  // the same object is unspecified.
-  T Unwrap() { return std::move(value_); }
-
-  // Provides nondestructive access to the underlying value/reference.
-  // Always returns a const reference (more precisely,
-  // const std::add_lvalue_reference<T>::type). The behavior of calling this
-  // after calling Unwrap on the same object is unspecified.
-  const T& Peek() const {
-    return value_;
-  }
-
- private:
-  T value_;
-};
-
-// Specialization for lvalue reference types. See primary template
-// for documentation.
-template <typename T>
-class ReferenceOrValueWrapper<T&> {
- public:
-  // Workaround for debatable pass-by-reference lint warning (c-library-team
-  // policy precludes NOLINT in this context)
-  typedef T& reference;
-  explicit ReferenceOrValueWrapper(reference ref)
-      : value_ptr_(&ref) {}
-  T& Unwrap() { return *value_ptr_; }
-  const T& Peek() const { return *value_ptr_; }
-
- private:
-  T* value_ptr_;
-};
-
-// C++ treats the void type specially.  For example, you cannot define
-// a void-typed variable or pass a void value to a function.
-// ActionResultHolder<T> holds a value of type T, where T must be a
-// copyable type or void (T doesn't need to be default-constructable).
-// It hides the syntactic difference between void and other types, and
-// is used to unify the code for invoking both void-returning and
-// non-void-returning mock functions.
-
-// Untyped base class for ActionResultHolder<T>.
-class UntypedActionResultHolderBase {
- public:
-  virtual ~UntypedActionResultHolderBase() {}
-
-  // Prints the held value as an action's result to os.
-  virtual void PrintAsActionResult(::std::ostream* os) const = 0;
-};
-
-// This generic definition is used when T is not void.
-template <typename T>
-class ActionResultHolder : public UntypedActionResultHolderBase {
- public:
-  // Returns the held value. Must not be called more than once.
-  T Unwrap() {
-    return result_.Unwrap();
-  }
-
-  // Prints the held value as an action's result to os.
-  void PrintAsActionResult(::std::ostream* os) const override {
-    *os << "\n          Returns: ";
-    // T may be a reference type, so we don't use UniversalPrint().
-    UniversalPrinter<T>::Print(result_.Peek(), os);
-  }
-
-  // Performs the given mock function's default action and returns the
-  // result in a new-ed ActionResultHolder.
-  template <typename F>
-  static ActionResultHolder* PerformDefaultAction(
-      const FunctionMocker<F>* func_mocker,
-      typename Function<F>::ArgumentTuple&& args,
-      const std::string& call_description) {
-    return new ActionResultHolder(Wrapper(func_mocker->PerformDefaultAction(
-        std::move(args), call_description)));
-  }
-
-  // Performs the given action and returns the result in a new-ed
-  // ActionResultHolder.
-  template <typename F>
-  static ActionResultHolder* PerformAction(
-      const Action<F>& action, typename Function<F>::ArgumentTuple&& args) {
-    return new ActionResultHolder(
-        Wrapper(action.Perform(std::move(args))));
-  }
-
- private:
-  typedef ReferenceOrValueWrapper<T> Wrapper;
-
-  explicit ActionResultHolder(Wrapper result)
-      : result_(std::move(result)) {
-  }
-
-  Wrapper result_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
-};
-
-// Specialization for T = void.
-template <>
-class ActionResultHolder<void> : public UntypedActionResultHolderBase {
- public:
-  void Unwrap() { }
-
-  void PrintAsActionResult(::std::ostream* /* os */) const override {}
-
-  // Performs the given mock function's default action and returns ownership
-  // of an empty ActionResultHolder*.
-  template <typename F>
-  static ActionResultHolder* PerformDefaultAction(
-      const FunctionMocker<F>* func_mocker,
-      typename Function<F>::ArgumentTuple&& args,
-      const std::string& call_description) {
-    func_mocker->PerformDefaultAction(std::move(args), call_description);
-    return new ActionResultHolder;
-  }
-
-  // Performs the given action and returns ownership of an empty
-  // ActionResultHolder*.
-  template <typename F>
-  static ActionResultHolder* PerformAction(
-      const Action<F>& action, typename Function<F>::ArgumentTuple&& args) {
-    action.Perform(std::move(args));
-    return new ActionResultHolder;
-  }
-
- private:
-  ActionResultHolder() {}
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
-};
-
-template <typename F>
-class FunctionMocker;
-
-template <typename R, typename... Args>
-class FunctionMocker<R(Args...)> final : public UntypedFunctionMockerBase {
-  using F = R(Args...);
-
- public:
-  using Result = R;
-  using ArgumentTuple = std::tuple<Args...>;
-  using ArgumentMatcherTuple = std::tuple<Matcher<Args>...>;
-
-  FunctionMocker() {}
-
-  // There is no generally useful and implementable semantics of
-  // copying a mock object, so copying a mock is usually a user error.
-  // Thus we disallow copying function mockers.  If the user really
-  // wants to copy a mock object, they should implement their own copy
-  // operation, for example:
-  //
-  //   class MockFoo : public Foo {
-  //    public:
-  //     // Defines a copy constructor explicitly.
-  //     MockFoo(const MockFoo& src) {}
-  //     ...
-  //   };
-  FunctionMocker(const FunctionMocker&) = delete;
-  FunctionMocker& operator=(const FunctionMocker&) = delete;
-
-  // The destructor verifies that all expectations on this mock
-  // function have been satisfied.  If not, it will report Google Test
-  // non-fatal failures for the violations.
-  ~FunctionMocker() override GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-    MutexLock l(&g_gmock_mutex);
-    VerifyAndClearExpectationsLocked();
-    Mock::UnregisterLocked(this);
-    ClearDefaultActionsLocked();
-  }
-
-  // Returns the ON_CALL spec that matches this mock function with the
-  // given arguments; returns NULL if no matching ON_CALL is found.
-  // L = *
-  const OnCallSpec<F>* FindOnCallSpec(
-      const ArgumentTuple& args) const {
-    for (UntypedOnCallSpecs::const_reverse_iterator it
-             = untyped_on_call_specs_.rbegin();
-         it != untyped_on_call_specs_.rend(); ++it) {
-      const OnCallSpec<F>* spec = static_cast<const OnCallSpec<F>*>(*it);
-      if (spec->Matches(args))
-        return spec;
-    }
-
-    return nullptr;
-  }
-
-  // Performs the default action of this mock function on the given
-  // arguments and returns the result. Asserts (or throws if
-  // exceptions are enabled) with a helpful call descrption if there
-  // is no valid return value. This method doesn't depend on the
-  // mutable state of this object, and thus can be called concurrently
-  // without locking.
-  // L = *
-  Result PerformDefaultAction(ArgumentTuple&& args,
-                              const std::string& call_description) const {
-    const OnCallSpec<F>* const spec =
-        this->FindOnCallSpec(args);
-    if (spec != nullptr) {
-      return spec->GetAction().Perform(std::move(args));
-    }
-    const std::string message =
-        call_description +
-        "\n    The mock function has no default action "
-        "set, and its return type has no default value set.";
-#if GTEST_HAS_EXCEPTIONS
-    if (!DefaultValue<Result>::Exists()) {
-      throw std::runtime_error(message);
-    }
-#else
-    Assert(DefaultValue<Result>::Exists(), "", -1, message);
-#endif
-    return DefaultValue<Result>::Get();
-  }
-
-  // Performs the default action with the given arguments and returns
-  // the action's result.  The call description string will be used in
-  // the error message to describe the call in the case the default
-  // action fails.  The caller is responsible for deleting the result.
-  // L = *
-  UntypedActionResultHolderBase* UntypedPerformDefaultAction(
-      void* untyped_args,  // must point to an ArgumentTuple
-      const std::string& call_description) const override {
-    ArgumentTuple* args = static_cast<ArgumentTuple*>(untyped_args);
-    return ResultHolder::PerformDefaultAction(this, std::move(*args),
-                                              call_description);
-  }
-
-  // Performs the given action with the given arguments and returns
-  // the action's result.  The caller is responsible for deleting the
-  // result.
-  // L = *
-  UntypedActionResultHolderBase* UntypedPerformAction(
-      const void* untyped_action, void* untyped_args) const override {
-    // Make a copy of the action before performing it, in case the
-    // action deletes the mock object (and thus deletes itself).
-    const Action<F> action = *static_cast<const Action<F>*>(untyped_action);
-    ArgumentTuple* args = static_cast<ArgumentTuple*>(untyped_args);
-    return ResultHolder::PerformAction(action, std::move(*args));
-  }
-
-  // Implements UntypedFunctionMockerBase::ClearDefaultActionsLocked():
-  // clears the ON_CALL()s set on this mock function.
-  void ClearDefaultActionsLocked() override
-      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-
-    // Deleting our default actions may trigger other mock objects to be
-    // deleted, for example if an action contains a reference counted smart
-    // pointer to that mock object, and that is the last reference. So if we
-    // delete our actions within the context of the global mutex we may deadlock
-    // when this method is called again. Instead, make a copy of the set of
-    // actions to delete, clear our set within the mutex, and then delete the
-    // actions outside of the mutex.
-    UntypedOnCallSpecs specs_to_delete;
-    untyped_on_call_specs_.swap(specs_to_delete);
-
-    g_gmock_mutex.Unlock();
-    for (UntypedOnCallSpecs::const_iterator it =
-             specs_to_delete.begin();
-         it != specs_to_delete.end(); ++it) {
-      delete static_cast<const OnCallSpec<F>*>(*it);
-    }
-
-    // Lock the mutex again, since the caller expects it to be locked when we
-    // return.
-    g_gmock_mutex.Lock();
-  }
-
-  // Returns the result of invoking this mock function with the given
-  // arguments.  This function can be safely called from multiple
-  // threads concurrently.
-  Result Invoke(Args... args) GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-    ArgumentTuple tuple(std::forward<Args>(args)...);
-    std::unique_ptr<ResultHolder> holder(DownCast_<ResultHolder*>(
-        this->UntypedInvokeWith(static_cast<void*>(&tuple))));
-    return holder->Unwrap();
-  }
-
-  MockSpec<F> With(Matcher<Args>... m) {
-    return MockSpec<F>(this, ::std::make_tuple(std::move(m)...));
-  }
-
- protected:
-  template <typename Function>
-  friend class MockSpec;
-
-  typedef ActionResultHolder<Result> ResultHolder;
-
-  // Adds and returns a default action spec for this mock function.
-  OnCallSpec<F>& AddNewOnCallSpec(
-      const char* file, int line,
-      const ArgumentMatcherTuple& m)
-          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-    Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
-    OnCallSpec<F>* const on_call_spec = new OnCallSpec<F>(file, line, m);
-    untyped_on_call_specs_.push_back(on_call_spec);
-    return *on_call_spec;
-  }
-
-  // Adds and returns an expectation spec for this mock function.
-  TypedExpectation<F>& AddNewExpectation(const char* file, int line,
-                                         const std::string& source_text,
-                                         const ArgumentMatcherTuple& m)
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-    Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
-    TypedExpectation<F>* const expectation =
-        new TypedExpectation<F>(this, file, line, source_text, m);
-    const std::shared_ptr<ExpectationBase> untyped_expectation(expectation);
-    // See the definition of untyped_expectations_ for why access to
-    // it is unprotected here.
-    untyped_expectations_.push_back(untyped_expectation);
-
-    // Adds this expectation into the implicit sequence if there is one.
-    Sequence* const implicit_sequence = g_gmock_implicit_sequence.get();
-    if (implicit_sequence != nullptr) {
-      implicit_sequence->AddExpectation(Expectation(untyped_expectation));
-    }
-
-    return *expectation;
-  }
-
- private:
-  template <typename Func> friend class TypedExpectation;
-
-  // Some utilities needed for implementing UntypedInvokeWith().
-
-  // Describes what default action will be performed for the given
-  // arguments.
-  // L = *
-  void DescribeDefaultActionTo(const ArgumentTuple& args,
-                               ::std::ostream* os) const {
-    const OnCallSpec<F>* const spec = FindOnCallSpec(args);
-
-    if (spec == nullptr) {
-      *os << (std::is_void<Result>::value ? "returning directly.\n"
-                                          : "returning default value.\n");
-    } else {
-      *os << "taking default action specified at:\n"
-          << FormatFileLocation(spec->file(), spec->line()) << "\n";
-    }
-  }
-
-  // Writes a message that the call is uninteresting (i.e. neither
-  // explicitly expected nor explicitly unexpected) to the given
-  // ostream.
-  void UntypedDescribeUninterestingCall(const void* untyped_args,
-                                        ::std::ostream* os) const override
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-    const ArgumentTuple& args =
-        *static_cast<const ArgumentTuple*>(untyped_args);
-    *os << "Uninteresting mock function call - ";
-    DescribeDefaultActionTo(args, os);
-    *os << "    Function call: " << Name();
-    UniversalPrint(args, os);
-  }
-
-  // Returns the expectation that matches the given function arguments
-  // (or NULL is there's no match); when a match is found,
-  // untyped_action is set to point to the action that should be
-  // performed (or NULL if the action is "do default"), and
-  // is_excessive is modified to indicate whether the call exceeds the
-  // expected number.
-  //
-  // Critical section: We must find the matching expectation and the
-  // corresponding action that needs to be taken in an ATOMIC
-  // transaction.  Otherwise another thread may call this mock
-  // method in the middle and mess up the state.
-  //
-  // However, performing the action has to be left out of the critical
-  // section.  The reason is that we have no control on what the
-  // action does (it can invoke an arbitrary user function or even a
-  // mock function) and excessive locking could cause a dead lock.
-  const ExpectationBase* UntypedFindMatchingExpectation(
-      const void* untyped_args, const void** untyped_action, bool* is_excessive,
-      ::std::ostream* what, ::std::ostream* why) override
-      GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-    const ArgumentTuple& args =
-        *static_cast<const ArgumentTuple*>(untyped_args);
-    MutexLock l(&g_gmock_mutex);
-    TypedExpectation<F>* exp = this->FindMatchingExpectationLocked(args);
-    if (exp == nullptr) {  // A match wasn't found.
-      this->FormatUnexpectedCallMessageLocked(args, what, why);
-      return nullptr;
-    }
-
-    // This line must be done before calling GetActionForArguments(),
-    // which will increment the call count for *exp and thus affect
-    // its saturation status.
-    *is_excessive = exp->IsSaturated();
-    const Action<F>* action = exp->GetActionForArguments(this, args, what, why);
-    if (action != nullptr && action->IsDoDefault())
-      action = nullptr;  // Normalize "do default" to NULL.
-    *untyped_action = action;
-    return exp;
-  }
-
-  // Prints the given function arguments to the ostream.
-  void UntypedPrintArgs(const void* untyped_args,
-                        ::std::ostream* os) const override {
-    const ArgumentTuple& args =
-        *static_cast<const ArgumentTuple*>(untyped_args);
-    UniversalPrint(args, os);
-  }
-
-  // Returns the expectation that matches the arguments, or NULL if no
-  // expectation matches them.
-  TypedExpectation<F>* FindMatchingExpectationLocked(
-      const ArgumentTuple& args) const
-          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    // See the definition of untyped_expectations_ for why access to
-    // it is unprotected here.
-    for (typename UntypedExpectations::const_reverse_iterator it =
-             untyped_expectations_.rbegin();
-         it != untyped_expectations_.rend(); ++it) {
-      TypedExpectation<F>* const exp =
-          static_cast<TypedExpectation<F>*>(it->get());
-      if (exp->ShouldHandleArguments(args)) {
-        return exp;
-      }
-    }
-    return nullptr;
-  }
-
-  // Returns a message that the arguments don't match any expectation.
-  void FormatUnexpectedCallMessageLocked(
-      const ArgumentTuple& args,
-      ::std::ostream* os,
-      ::std::ostream* why) const
-          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    *os << "\nUnexpected mock function call - ";
-    DescribeDefaultActionTo(args, os);
-    PrintTriedExpectationsLocked(args, why);
-  }
-
-  // Prints a list of expectations that have been tried against the
-  // current mock function call.
-  void PrintTriedExpectationsLocked(
-      const ArgumentTuple& args,
-      ::std::ostream* why) const
-          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-    g_gmock_mutex.AssertHeld();
-    const size_t count = untyped_expectations_.size();
-    *why << "Google Mock tried the following " << count << " "
-         << (count == 1 ? "expectation, but it didn't match" :
-             "expectations, but none matched")
-         << ":\n";
-    for (size_t i = 0; i < count; i++) {
-      TypedExpectation<F>* const expectation =
-          static_cast<TypedExpectation<F>*>(untyped_expectations_[i].get());
-      *why << "\n";
-      expectation->DescribeLocationTo(why);
-      if (count > 1) {
-        *why << "tried expectation #" << i << ": ";
-      }
-      *why << expectation->source_text() << "...\n";
-      expectation->ExplainMatchResultTo(args, why);
-      expectation->DescribeCallCountTo(why);
-    }
-  }
-};  // class FunctionMocker
-
-// Reports an uninteresting call (whose description is in msg) in the
-// manner specified by 'reaction'.
-void ReportUninterestingCall(CallReaction reaction, const std::string& msg);
-
-}  // namespace internal
-
-namespace internal {
-
-template <typename F>
-class MockFunction;
-
-template <typename R, typename... Args>
-class MockFunction<R(Args...)> {
- public:
-  MockFunction(const MockFunction&) = delete;
-  MockFunction& operator=(const MockFunction&) = delete;
-
-  std::function<R(Args...)> AsStdFunction() {
-    return [this](Args... args) -> R {
-      return this->Call(std::forward<Args>(args)...);
-    };
-  }
-
-  // Implementation detail: the expansion of the MOCK_METHOD macro.
-  R Call(Args... args) {
-    mock_.SetOwnerAndName(this, "Call");
-    return mock_.Invoke(std::forward<Args>(args)...);
-  }
-
-  MockSpec<R(Args...)> gmock_Call(Matcher<Args>... m) {
-    mock_.RegisterOwner(this);
-    return mock_.With(std::move(m)...);
-  }
-
-  MockSpec<R(Args...)> gmock_Call(const WithoutMatchers&, R (*)(Args...)) {
-    return this->gmock_Call(::testing::A<Args>()...);
-  }
-
- protected:
-  MockFunction() = default;
-  ~MockFunction() = default;
-
- private:
-  FunctionMocker<R(Args...)> mock_;
-};
-
-/*
-The SignatureOf<F> struct is a meta-function returning function signature
-corresponding to the provided F argument.
-
-It makes use of MockFunction easier by allowing it to accept more F arguments
-than just function signatures.
-
-Specializations provided here cover a signature type itself and any template
-that can be parameterized with a signature, including std::function and
-boost::function.
-*/
-
-template <typename F, typename = void>
-struct SignatureOf;
-
-template <typename R, typename... Args>
-struct SignatureOf<R(Args...)> {
-  using type = R(Args...);
-};
-
-template <template <typename> class C, typename F>
-struct SignatureOf<C<F>,
-                   typename std::enable_if<std::is_function<F>::value>::type>
-    : SignatureOf<F> {};
-
-template <typename F>
-using SignatureOfT = typename SignatureOf<F>::type;
-
-}  // namespace internal
-
-// A MockFunction<F> type has one mock method whose type is
-// internal::SignatureOfT<F>.  It is useful when you just want your
-// test code to emit some messages and have Google Mock verify the
-// right messages are sent (and perhaps at the right times).  For
-// example, if you are exercising code:
-//
-//   Foo(1);
-//   Foo(2);
-//   Foo(3);
-//
-// and want to verify that Foo(1) and Foo(3) both invoke
-// mock.Bar("a"), but Foo(2) doesn't invoke anything, you can write:
-//
-// TEST(FooTest, InvokesBarCorrectly) {
-//   MyMock mock;
-//   MockFunction<void(string check_point_name)> check;
-//   {
-//     InSequence s;
-//
-//     EXPECT_CALL(mock, Bar("a"));
-//     EXPECT_CALL(check, Call("1"));
-//     EXPECT_CALL(check, Call("2"));
-//     EXPECT_CALL(mock, Bar("a"));
-//   }
-//   Foo(1);
-//   check.Call("1");
-//   Foo(2);
-//   check.Call("2");
-//   Foo(3);
-// }
-//
-// The expectation spec says that the first Bar("a") must happen
-// before check point "1", the second Bar("a") must happen after check
-// point "2", and nothing should happen between the two check
-// points. The explicit check points make it easy to tell which
-// Bar("a") is called by which call to Foo().
-//
-// MockFunction<F> can also be used to exercise code that accepts
-// std::function<internal::SignatureOfT<F>> callbacks. To do so, use
-// AsStdFunction() method to create std::function proxy forwarding to
-// original object's Call. Example:
-//
-// TEST(FooTest, RunsCallbackWithBarArgument) {
-//   MockFunction<int(string)> callback;
-//   EXPECT_CALL(callback, Call("bar")).WillOnce(Return(1));
-//   Foo(callback.AsStdFunction());
-// }
-//
-// The internal::SignatureOfT<F> indirection allows to use other types
-// than just function signature type. This is typically useful when
-// providing a mock for a predefined std::function type. Example:
-//
-// using FilterPredicate = std::function<bool(string)>;
-// void MyFilterAlgorithm(FilterPredicate predicate);
-//
-// TEST(FooTest, FilterPredicateAlwaysAccepts) {
-//   MockFunction<FilterPredicate> predicateMock;
-//   EXPECT_CALL(predicateMock, Call(_)).WillRepeatedly(Return(true));
-//   MyFilterAlgorithm(predicateMock.AsStdFunction());
-// }
-template <typename F>
-class MockFunction : public internal::MockFunction<internal::SignatureOfT<F>> {
-  using Base = internal::MockFunction<internal::SignatureOfT<F>>;
-
- public:
-  using Base::Base;
-};
-
-// The style guide prohibits "using" statements in a namespace scope
-// inside a header file.  However, the MockSpec class template is
-// meant to be defined in the ::testing namespace.  The following line
-// is just a trick for working around a bug in MSVC 8.0, which cannot
-// handle it if we define MockSpec in ::testing.
-using internal::MockSpec;
-
-// Const(x) is a convenient function for obtaining a const reference
-// to x.  This is useful for setting expectations on an overloaded
-// const mock method, e.g.
-//
-//   class MockFoo : public FooInterface {
-//    public:
-//     MOCK_METHOD0(Bar, int());
-//     MOCK_CONST_METHOD0(Bar, int&());
-//   };
-//
-//   MockFoo foo;
-//   // Expects a call to non-const MockFoo::Bar().
-//   EXPECT_CALL(foo, Bar());
-//   // Expects a call to const MockFoo::Bar().
-//   EXPECT_CALL(Const(foo), Bar());
-template <typename T>
-inline const T& Const(const T& x) { return x; }
-
-// Constructs an Expectation object that references and co-owns exp.
-inline Expectation::Expectation(internal::ExpectationBase& exp)  // NOLINT
-    : expectation_base_(exp.GetHandle().expectation_base()) {}
-
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-// Implementation for ON_CALL and EXPECT_CALL macros. A separate macro is
-// required to avoid compile errors when the name of the method used in call is
-// a result of macro expansion. See CompilesWithMethodNameExpandedFromMacro
-// tests in internal/gmock-spec-builders_test.cc for more details.
-//
-// This macro supports statements both with and without parameter matchers. If
-// the parameter list is omitted, gMock will accept any parameters, which allows
-// tests to be written that don't need to encode the number of method
-// parameter. This technique may only be used for non-overloaded methods.
-//
-//   // These are the same:
-//   ON_CALL(mock, NoArgsMethod()).WillByDefault(...);
-//   ON_CALL(mock, NoArgsMethod).WillByDefault(...);
-//
-//   // As are these:
-//   ON_CALL(mock, TwoArgsMethod(_, _)).WillByDefault(...);
-//   ON_CALL(mock, TwoArgsMethod).WillByDefault(...);
-//
-//   // Can also specify args if you want, of course:
-//   ON_CALL(mock, TwoArgsMethod(_, 45)).WillByDefault(...);
-//
-//   // Overloads work as long as you specify parameters:
-//   ON_CALL(mock, OverloadedMethod(_)).WillByDefault(...);
-//   ON_CALL(mock, OverloadedMethod(_, _)).WillByDefault(...);
-//
-//   // Oops! Which overload did you want?
-//   ON_CALL(mock, OverloadedMethod).WillByDefault(...);
-//     => ERROR: call to member function 'gmock_OverloadedMethod' is ambiguous
-//
-// How this works: The mock class uses two overloads of the gmock_Method
-// expectation setter method plus an operator() overload on the MockSpec object.
-// In the matcher list form, the macro expands to:
-//
-//   // This statement:
-//   ON_CALL(mock, TwoArgsMethod(_, 45))...
-//
-//   // ...expands to:
-//   mock.gmock_TwoArgsMethod(_, 45)(WithoutMatchers(), nullptr)...
-//   |-------------v---------------||------------v-------------|
-//       invokes first overload        swallowed by operator()
-//
-//   // ...which is essentially:
-//   mock.gmock_TwoArgsMethod(_, 45)...
-//
-// Whereas the form without a matcher list:
-//
-//   // This statement:
-//   ON_CALL(mock, TwoArgsMethod)...
-//
-//   // ...expands to:
-//   mock.gmock_TwoArgsMethod(WithoutMatchers(), nullptr)...
-//   |-----------------------v--------------------------|
-//                 invokes second overload
-//
-//   // ...which is essentially:
-//   mock.gmock_TwoArgsMethod(_, _)...
-//
-// The WithoutMatchers() argument is used to disambiguate overloads and to
-// block the caller from accidentally invoking the second overload directly. The
-// second argument is an internal type derived from the method signature. The
-// failure to disambiguate two overloads of this method in the ON_CALL statement
-// is how we block callers from setting expectations on overloaded methods.
-#define GMOCK_ON_CALL_IMPL_(mock_expr, Setter, call)                    \
-  ((mock_expr).gmock_##call)(::testing::internal::GetWithoutMatchers(), \
-                             nullptr)                                   \
-      .Setter(__FILE__, __LINE__, #mock_expr, #call)
-
-#define ON_CALL(obj, call) \
-  GMOCK_ON_CALL_IMPL_(obj, InternalDefaultActionSetAt, call)
-
-#define EXPECT_CALL(obj, call) \
-  GMOCK_ON_CALL_IMPL_(obj, InternalExpectedAt, call)
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
-
-namespace testing {
-namespace internal {
-template <typename T>
-using identity_t = T;
-
-template <typename Pattern>
-struct ThisRefAdjuster {
-  template <typename T>
-  using AdjustT = typename std::conditional<
-      std::is_const<typename std::remove_reference<Pattern>::type>::value,
-      typename std::conditional<std::is_lvalue_reference<Pattern>::value,
-                                const T&, const T&&>::type,
-      typename std::conditional<std::is_lvalue_reference<Pattern>::value, T&,
-                                T&&>::type>::type;
-
-  template <typename MockType>
-  static AdjustT<MockType> Adjust(const MockType& mock) {
-    return static_cast<AdjustT<MockType>>(const_cast<MockType&>(mock));
-  }
-};
-
-}  // namespace internal
-
-// The style guide prohibits "using" statements in a namespace scope
-// inside a header file.  However, the FunctionMocker class template
-// is meant to be defined in the ::testing namespace.  The following
-// line is just a trick for working around a bug in MSVC 8.0, which
-// cannot handle it if we define FunctionMocker in ::testing.
-using internal::FunctionMocker;
-}  // namespace testing
-
-#define MOCK_METHOD(...) \
-  GMOCK_PP_VARIADIC_CALL(GMOCK_INTERNAL_MOCK_METHOD_ARG_, __VA_ARGS__)
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_1(...) \
-  GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__)
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_2(...) \
-  GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__)
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_3(_Ret, _MethodName, _Args) \
-  GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, ())
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec)     \
-  GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args);                                   \
-  GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec);                                   \
-  GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                      \
-      GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args));           \
-  GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec)                                     \
-  GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                            \
-      GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec),     \
-      GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec),    \
-      GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Spec),                                \
-      GMOCK_INTERNAL_GET_CALLTYPE(_Spec), GMOCK_INTERNAL_GET_REF_SPEC(_Spec), \
-      (GMOCK_INTERNAL_SIGNATURE(_Ret, _Args)))
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_5(...) \
-  GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__)
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_6(...) \
-  GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__)
-
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_7(...) \
-  GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__)
-
-#define GMOCK_INTERNAL_WRONG_ARITY(...)                                      \
-  static_assert(                                                             \
-      false,                                                                 \
-      "MOCK_METHOD must be called with 3 or 4 arguments. _Ret, "             \
-      "_MethodName, _Args and optionally _Spec. _Args and _Spec must be "    \
-      "enclosed in parentheses. If _Ret is a type with unprotected commas, " \
-      "it must also be enclosed in parentheses.")
-
-#define GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Tuple) \
-  static_assert(                                  \
-      GMOCK_PP_IS_ENCLOSED_PARENS(_Tuple),        \
-      GMOCK_PP_STRINGIZE(_Tuple) " should be enclosed in parentheses.")
-
-#define GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(_N, ...)                 \
-  static_assert(                                                       \
-      std::is_function<__VA_ARGS__>::value,                            \
-      "Signature must be a function type, maybe return type contains " \
-      "unprotected comma.");                                           \
-  static_assert(                                                       \
-      ::testing::tuple_size<typename ::testing::internal::Function<    \
-              __VA_ARGS__>::ArgumentTuple>::value == _N,               \
-      "This method does not take " GMOCK_PP_STRINGIZE(                 \
-          _N) " arguments. Parenthesize all types with unprotected commas.")
-
-#define GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \
-  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec)
-
-#define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness,           \
-                                        _Override, _Final, _NoexceptSpec,      \
-                                        _CallType, _RefSpec, _Signature)       \
-  typename ::testing::internal::Function<GMOCK_PP_REMOVE_PARENS(               \
-      _Signature)>::Result                                                     \
-  GMOCK_INTERNAL_EXPAND(_CallType)                                             \
-      _MethodName(GMOCK_PP_REPEAT(GMOCK_INTERNAL_PARAMETER, _Signature, _N))   \
-          GMOCK_PP_IF(_Constness, const, ) _RefSpec _NoexceptSpec              \
-          GMOCK_PP_IF(_Override, override, ) GMOCK_PP_IF(_Final, final, ) {    \
-    GMOCK_MOCKER_(_N, _Constness, _MethodName)                                 \
-        .SetOwnerAndName(this, #_MethodName);                                  \
-    return GMOCK_MOCKER_(_N, _Constness, _MethodName)                          \
-        .Invoke(GMOCK_PP_REPEAT(GMOCK_INTERNAL_FORWARD_ARG, _Signature, _N));  \
-  }                                                                            \
-  ::testing::MockSpec<GMOCK_PP_REMOVE_PARENS(_Signature)> gmock_##_MethodName( \
-      GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_PARAMETER, _Signature, _N))       \
-      GMOCK_PP_IF(_Constness, const, ) _RefSpec {                              \
-    GMOCK_MOCKER_(_N, _Constness, _MethodName).RegisterOwner(this);            \
-    return GMOCK_MOCKER_(_N, _Constness, _MethodName)                          \
-        .With(GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_ARGUMENT, , _N));         \
-  }                                                                            \
-  ::testing::MockSpec<GMOCK_PP_REMOVE_PARENS(_Signature)> gmock_##_MethodName( \
-      const ::testing::internal::WithoutMatchers&,                             \
-      GMOCK_PP_IF(_Constness, const, )::testing::internal::Function<           \
-          GMOCK_PP_REMOVE_PARENS(_Signature)>*) const _RefSpec _NoexceptSpec { \
-    return ::testing::internal::ThisRefAdjuster<GMOCK_PP_IF(                   \
-        _Constness, const, ) int _RefSpec>::Adjust(*this)                      \
-        .gmock_##_MethodName(GMOCK_PP_REPEAT(                                  \
-            GMOCK_INTERNAL_A_MATCHER_ARGUMENT, _Signature, _N));               \
-  }                                                                            \
-  mutable ::testing::FunctionMocker<GMOCK_PP_REMOVE_PARENS(_Signature)>        \
-      GMOCK_MOCKER_(_N, _Constness, _MethodName)
-
-#define GMOCK_INTERNAL_EXPAND(...) __VA_ARGS__
-
-// Five Valid modifiers.
-#define GMOCK_INTERNAL_HAS_CONST(_Tuple) \
-  GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_CONST, ~, _Tuple))
-
-#define GMOCK_INTERNAL_HAS_OVERRIDE(_Tuple) \
-  GMOCK_PP_HAS_COMMA(                       \
-      GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_OVERRIDE, ~, _Tuple))
-
-#define GMOCK_INTERNAL_HAS_FINAL(_Tuple) \
-  GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_FINAL, ~, _Tuple))
-
-#define GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Tuple) \
-  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_NOEXCEPT_SPEC_IF_NOEXCEPT, ~, _Tuple)
-
-#define GMOCK_INTERNAL_NOEXCEPT_SPEC_IF_NOEXCEPT(_i, _, _elem)          \
-  GMOCK_PP_IF(                                                          \
-      GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)), \
-      _elem, )
-
-#define GMOCK_INTERNAL_GET_REF_SPEC(_Tuple) \
-  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_REF_SPEC_IF_REF, ~, _Tuple)
-
-#define GMOCK_INTERNAL_REF_SPEC_IF_REF(_i, _, _elem)                       \
-  GMOCK_PP_IF(GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_REF(_i, _, _elem)), \
-              GMOCK_PP_CAT(GMOCK_INTERNAL_UNPACK_, _elem), )
-
-#define GMOCK_INTERNAL_GET_CALLTYPE(_Tuple) \
-  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_CALLTYPE_IMPL, ~, _Tuple)
-
-#define GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT(_i, _, _elem)            \
-  static_assert(                                                          \
-      (GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem)) +    \
-       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem)) + \
-       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem)) +    \
-       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)) + \
-       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_REF(_i, _, _elem)) +      \
-       GMOCK_INTERNAL_IS_CALLTYPE(_elem)) == 1,                           \
-      GMOCK_PP_STRINGIZE(                                                 \
-          _elem) " cannot be recognized as a valid specification modifier.");
-
-// Modifiers implementation.
-#define GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem) \
-  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_CONST_I_, _elem)
-
-#define GMOCK_INTERNAL_DETECT_CONST_I_const ,
-
-#define GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem) \
-  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_OVERRIDE_I_, _elem)
-
-#define GMOCK_INTERNAL_DETECT_OVERRIDE_I_override ,
-
-#define GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem) \
-  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_FINAL_I_, _elem)
-
-#define GMOCK_INTERNAL_DETECT_FINAL_I_final ,
-
-#define GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem) \
-  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_NOEXCEPT_I_, _elem)
-
-#define GMOCK_INTERNAL_DETECT_NOEXCEPT_I_noexcept ,
-
-#define GMOCK_INTERNAL_DETECT_REF(_i, _, _elem) \
-  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_REF_I_, _elem)
-
-#define GMOCK_INTERNAL_DETECT_REF_I_ref ,
-
-#define GMOCK_INTERNAL_UNPACK_ref(x) x
-
-#define GMOCK_INTERNAL_GET_CALLTYPE_IMPL(_i, _, _elem)           \
-  GMOCK_PP_IF(GMOCK_INTERNAL_IS_CALLTYPE(_elem),                 \
-              GMOCK_INTERNAL_GET_VALUE_CALLTYPE, GMOCK_PP_EMPTY) \
-  (_elem)
-
-// TODO(iserna): GMOCK_INTERNAL_IS_CALLTYPE and
-// GMOCK_INTERNAL_GET_VALUE_CALLTYPE needed more expansions to work on windows
-// maybe they can be simplified somehow.
-#define GMOCK_INTERNAL_IS_CALLTYPE(_arg) \
-  GMOCK_INTERNAL_IS_CALLTYPE_I(          \
-      GMOCK_PP_CAT(GMOCK_INTERNAL_IS_CALLTYPE_HELPER_, _arg))
-#define GMOCK_INTERNAL_IS_CALLTYPE_I(_arg) GMOCK_PP_IS_ENCLOSED_PARENS(_arg)
-
-#define GMOCK_INTERNAL_GET_VALUE_CALLTYPE(_arg) \
-  GMOCK_INTERNAL_GET_VALUE_CALLTYPE_I(          \
-      GMOCK_PP_CAT(GMOCK_INTERNAL_IS_CALLTYPE_HELPER_, _arg))
-#define GMOCK_INTERNAL_GET_VALUE_CALLTYPE_I(_arg) \
-  GMOCK_PP_IDENTITY _arg
-
-#define GMOCK_INTERNAL_IS_CALLTYPE_HELPER_Calltype
-
-// Note: The use of `identity_t` here allows _Ret to represent return types that
-// would normally need to be specified in a different way. For example, a method
-// returning a function pointer must be written as
-//
-// fn_ptr_return_t (*method(method_args_t...))(fn_ptr_args_t...)
-//
-// But we only support placing the return type at the beginning. To handle this,
-// we wrap all calls in identity_t, so that a declaration will be expanded to
-//
-// identity_t<fn_ptr_return_t (*)(fn_ptr_args_t...)> method(method_args_t...)
-//
-// This allows us to work around the syntactic oddities of function/method
-// types.
-#define GMOCK_INTERNAL_SIGNATURE(_Ret, _Args)                                 \
-  ::testing::internal::identity_t<GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(_Ret), \
-                                              GMOCK_PP_REMOVE_PARENS,         \
-                                              GMOCK_PP_IDENTITY)(_Ret)>(      \
-      GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_TYPE, _, _Args))
-
-#define GMOCK_INTERNAL_GET_TYPE(_i, _, _elem)                          \
-  GMOCK_PP_COMMA_IF(_i)                                                \
-  GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(_elem), GMOCK_PP_REMOVE_PARENS, \
-              GMOCK_PP_IDENTITY)                                       \
-  (_elem)
-
-#define GMOCK_INTERNAL_PARAMETER(_i, _Signature, _)            \
-  GMOCK_PP_COMMA_IF(_i)                                        \
-  GMOCK_INTERNAL_ARG_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature)) \
-  gmock_a##_i
-
-#define GMOCK_INTERNAL_FORWARD_ARG(_i, _Signature, _) \
-  GMOCK_PP_COMMA_IF(_i)                               \
-  ::std::forward<GMOCK_INTERNAL_ARG_O(                \
-      _i, GMOCK_PP_REMOVE_PARENS(_Signature))>(gmock_a##_i)
-
-#define GMOCK_INTERNAL_MATCHER_PARAMETER(_i, _Signature, _)        \
-  GMOCK_PP_COMMA_IF(_i)                                            \
-  GMOCK_INTERNAL_MATCHER_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature)) \
-  gmock_a##_i
-
-#define GMOCK_INTERNAL_MATCHER_ARGUMENT(_i, _1, _2) \
-  GMOCK_PP_COMMA_IF(_i)                             \
-  gmock_a##_i
-
-#define GMOCK_INTERNAL_A_MATCHER_ARGUMENT(_i, _Signature, _) \
-  GMOCK_PP_COMMA_IF(_i)                                      \
-  ::testing::A<GMOCK_INTERNAL_ARG_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature))>()
-
-#define GMOCK_INTERNAL_ARG_O(_i, ...) \
-  typename ::testing::internal::Function<__VA_ARGS__>::template Arg<_i>::type
-
-#define GMOCK_INTERNAL_MATCHER_O(_i, ...)                          \
-  const ::testing::Matcher<typename ::testing::internal::Function< \
-      __VA_ARGS__>::template Arg<_i>::type>&
-
-#define MOCK_METHOD0(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 0, __VA_ARGS__)
-#define MOCK_METHOD1(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 1, __VA_ARGS__)
-#define MOCK_METHOD2(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 2, __VA_ARGS__)
-#define MOCK_METHOD3(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 3, __VA_ARGS__)
-#define MOCK_METHOD4(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 4, __VA_ARGS__)
-#define MOCK_METHOD5(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 5, __VA_ARGS__)
-#define MOCK_METHOD6(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 6, __VA_ARGS__)
-#define MOCK_METHOD7(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 7, __VA_ARGS__)
-#define MOCK_METHOD8(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 8, __VA_ARGS__)
-#define MOCK_METHOD9(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 9, __VA_ARGS__)
-#define MOCK_METHOD10(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, , m, 10, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 0, __VA_ARGS__)
-#define MOCK_CONST_METHOD1(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 1, __VA_ARGS__)
-#define MOCK_CONST_METHOD2(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 2, __VA_ARGS__)
-#define MOCK_CONST_METHOD3(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 3, __VA_ARGS__)
-#define MOCK_CONST_METHOD4(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 4, __VA_ARGS__)
-#define MOCK_CONST_METHOD5(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 5, __VA_ARGS__)
-#define MOCK_CONST_METHOD6(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 6, __VA_ARGS__)
-#define MOCK_CONST_METHOD7(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 7, __VA_ARGS__)
-#define MOCK_CONST_METHOD8(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 8, __VA_ARGS__)
-#define MOCK_CONST_METHOD9(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 9, __VA_ARGS__)
-#define MOCK_CONST_METHOD10(m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 10, __VA_ARGS__)
-
-#define MOCK_METHOD0_T(m, ...) MOCK_METHOD0(m, __VA_ARGS__)
-#define MOCK_METHOD1_T(m, ...) MOCK_METHOD1(m, __VA_ARGS__)
-#define MOCK_METHOD2_T(m, ...) MOCK_METHOD2(m, __VA_ARGS__)
-#define MOCK_METHOD3_T(m, ...) MOCK_METHOD3(m, __VA_ARGS__)
-#define MOCK_METHOD4_T(m, ...) MOCK_METHOD4(m, __VA_ARGS__)
-#define MOCK_METHOD5_T(m, ...) MOCK_METHOD5(m, __VA_ARGS__)
-#define MOCK_METHOD6_T(m, ...) MOCK_METHOD6(m, __VA_ARGS__)
-#define MOCK_METHOD7_T(m, ...) MOCK_METHOD7(m, __VA_ARGS__)
-#define MOCK_METHOD8_T(m, ...) MOCK_METHOD8(m, __VA_ARGS__)
-#define MOCK_METHOD9_T(m, ...) MOCK_METHOD9(m, __VA_ARGS__)
-#define MOCK_METHOD10_T(m, ...) MOCK_METHOD10(m, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0_T(m, ...) MOCK_CONST_METHOD0(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD1_T(m, ...) MOCK_CONST_METHOD1(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD2_T(m, ...) MOCK_CONST_METHOD2(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD3_T(m, ...) MOCK_CONST_METHOD3(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD4_T(m, ...) MOCK_CONST_METHOD4(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD5_T(m, ...) MOCK_CONST_METHOD5(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD6_T(m, ...) MOCK_CONST_METHOD6(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD7_T(m, ...) MOCK_CONST_METHOD7(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD8_T(m, ...) MOCK_CONST_METHOD8(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD9_T(m, ...) MOCK_CONST_METHOD9(m, __VA_ARGS__)
-#define MOCK_CONST_METHOD10_T(m, ...) MOCK_CONST_METHOD10(m, __VA_ARGS__)
-
-#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 0, __VA_ARGS__)
-#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 1, __VA_ARGS__)
-#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 2, __VA_ARGS__)
-#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 3, __VA_ARGS__)
-#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 4, __VA_ARGS__)
-#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 5, __VA_ARGS__)
-#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 6, __VA_ARGS__)
-#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 7, __VA_ARGS__)
-#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 8, __VA_ARGS__)
-#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 9, __VA_ARGS__)
-#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 10, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 0, __VA_ARGS__)
-#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 1, __VA_ARGS__)
-#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 2, __VA_ARGS__)
-#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 3, __VA_ARGS__)
-#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 4, __VA_ARGS__)
-#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 5, __VA_ARGS__)
-#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 6, __VA_ARGS__)
-#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 7, __VA_ARGS__)
-#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 8, __VA_ARGS__)
-#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 9, __VA_ARGS__)
-#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \
-  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 10, __VA_ARGS__)
-
-#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD0_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD1_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD2_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD3_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD4_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD5_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD6_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD7_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD8_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD9_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_METHOD10_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
-  MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, __VA_ARGS__)
-
-#define GMOCK_INTERNAL_MOCK_METHODN(constness, ct, Method, args_num, ...) \
-  GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                  \
-      args_num, ::testing::internal::identity_t<__VA_ARGS__>);            \
-  GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                        \
-      args_num, Method, GMOCK_PP_NARG0(constness), 0, 0, , ct, ,          \
-      (::testing::internal::identity_t<__VA_ARGS__>))
-
-#define GMOCK_MOCKER_(arity, constness, Method) \
-  GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some commonly used variadic actions.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
-
-#include <memory>
-#include <utility>
-
-
-// Include any custom callback actions added by the local installation.
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
-
-// Sometimes you want to give an action explicit template parameters
-// that cannot be inferred from its value parameters.  ACTION() and
-// ACTION_P*() don't support that.  ACTION_TEMPLATE() remedies that
-// and can be viewed as an extension to ACTION() and ACTION_P*().
-//
-// The syntax:
-//
-//   ACTION_TEMPLATE(ActionName,
-//                   HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m),
-//                   AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; }
-//
-// defines an action template that takes m explicit template
-// parameters and n value parameters.  name_i is the name of the i-th
-// template parameter, and kind_i specifies whether it's a typename,
-// an integral constant, or a template.  p_i is the name of the i-th
-// value parameter.
-//
-// Example:
-//
-//   // DuplicateArg<k, T>(output) converts the k-th argument of the mock
-//   // function to type T and copies it to *output.
-//   ACTION_TEMPLATE(DuplicateArg,
-//                   HAS_2_TEMPLATE_PARAMS(int, k, typename, T),
-//                   AND_1_VALUE_PARAMS(output)) {
-//     *output = T(::std::get<k>(args));
-//   }
-//   ...
-//     int n;
-//     EXPECT_CALL(mock, Foo(_, _))
-//         .WillOnce(DuplicateArg<1, unsigned char>(&n));
-//
-// To create an instance of an action template, write:
-//
-//   ActionName<t1, ..., t_m>(v1, ..., v_n)
-//
-// where the ts are the template arguments and the vs are the value
-// arguments.  The value argument types are inferred by the compiler.
-// If you want to explicitly specify the value argument types, you can
-// provide additional template arguments:
-//
-//   ActionName<t1, ..., t_m, u1, ..., u_k>(v1, ..., v_n)
-//
-// where u_i is the desired type of v_i.
-//
-// ACTION_TEMPLATE and ACTION/ACTION_P* can be overloaded on the
-// number of value parameters, but not on the number of template
-// parameters.  Without the restriction, the meaning of the following
-// is unclear:
-//
-//   OverloadedAction<int, bool>(x);
-//
-// Are we using a single-template-parameter action where 'bool' refers
-// to the type of x, or are we using a two-template-parameter action
-// where the compiler is asked to infer the type of x?
-//
-// Implementation notes:
-//
-// GMOCK_INTERNAL_*_HAS_m_TEMPLATE_PARAMS and
-// GMOCK_INTERNAL_*_AND_n_VALUE_PARAMS are internal macros for
-// implementing ACTION_TEMPLATE.  The main trick we use is to create
-// new macro invocations when expanding a macro.  For example, we have
-//
-//   #define ACTION_TEMPLATE(name, template_params, value_params)
-//       ... GMOCK_INTERNAL_DECL_##template_params ...
-//
-// which causes ACTION_TEMPLATE(..., HAS_1_TEMPLATE_PARAMS(typename, T), ...)
-// to expand to
-//
-//       ... GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(typename, T) ...
-//
-// Since GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS is a macro, the
-// preprocessor will continue to expand it to
-//
-//       ... typename T ...
-//
-// This technique conforms to the C++ standard and is portable.  It
-// allows us to implement action templates using O(N) code, where N is
-// the maximum number of template/value parameters supported.  Without
-// using it, we'd have to devote O(N^2) amount of code to implement all
-// combinations of m and n.
-
-// Declares the template parameters.
-#define GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(kind0, name0) kind0 name0
-#define GMOCK_INTERNAL_DECL_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
-    name1) kind0 name0, kind1 name1
-#define GMOCK_INTERNAL_DECL_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2) kind0 name0, kind1 name1, kind2 name2
-#define GMOCK_INTERNAL_DECL_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3) kind0 name0, kind1 name1, kind2 name2, \
-    kind3 name3
-#define GMOCK_INTERNAL_DECL_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4) kind0 name0, kind1 name1, \
-    kind2 name2, kind3 name3, kind4 name4
-#define GMOCK_INTERNAL_DECL_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5) kind0 name0, \
-    kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5
-#define GMOCK_INTERNAL_DECL_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
-    name6) kind0 name0, kind1 name1, kind2 name2, kind3 name3, kind4 name4, \
-    kind5 name5, kind6 name6
-#define GMOCK_INTERNAL_DECL_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
-    kind7, name7) kind0 name0, kind1 name1, kind2 name2, kind3 name3, \
-    kind4 name4, kind5 name5, kind6 name6, kind7 name7
-#define GMOCK_INTERNAL_DECL_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
-    kind7, name7, kind8, name8) kind0 name0, kind1 name1, kind2 name2, \
-    kind3 name3, kind4 name4, kind5 name5, kind6 name6, kind7 name7, \
-    kind8 name8
-#define GMOCK_INTERNAL_DECL_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \
-    name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
-    name6, kind7, name7, kind8, name8, kind9, name9) kind0 name0, \
-    kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5, \
-    kind6 name6, kind7 name7, kind8 name8, kind9 name9
-
-// Lists the template parameters.
-#define GMOCK_INTERNAL_LIST_HAS_1_TEMPLATE_PARAMS(kind0, name0) name0
-#define GMOCK_INTERNAL_LIST_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
-    name1) name0, name1
-#define GMOCK_INTERNAL_LIST_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2) name0, name1, name2
-#define GMOCK_INTERNAL_LIST_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3) name0, name1, name2, name3
-#define GMOCK_INTERNAL_LIST_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4) name0, name1, name2, name3, \
-    name4
-#define GMOCK_INTERNAL_LIST_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5) name0, name1, \
-    name2, name3, name4, name5
-#define GMOCK_INTERNAL_LIST_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
-    name6) name0, name1, name2, name3, name4, name5, name6
-#define GMOCK_INTERNAL_LIST_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
-    kind7, name7) name0, name1, name2, name3, name4, name5, name6, name7
-#define GMOCK_INTERNAL_LIST_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
-    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
-    kind7, name7, kind8, name8) name0, name1, name2, name3, name4, name5, \
-    name6, name7, name8
-#define GMOCK_INTERNAL_LIST_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \
-    name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
-    name6, kind7, name7, kind8, name8, kind9, name9) name0, name1, name2, \
-    name3, name4, name5, name6, name7, name8, name9
-
-// Declares the types of value parameters.
-#define GMOCK_INTERNAL_DECL_TYPE_AND_0_VALUE_PARAMS()
-#define GMOCK_INTERNAL_DECL_TYPE_AND_1_VALUE_PARAMS(p0) , typename p0##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_2_VALUE_PARAMS(p0, p1) , \
-    typename p0##_type, typename p1##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , \
-    typename p0##_type, typename p1##_type, typename p2##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \
-    typename p0##_type, typename p1##_type, typename p2##_type, \
-    typename p3##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \
-    typename p0##_type, typename p1##_type, typename p2##_type, \
-    typename p3##_type, typename p4##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \
-    typename p0##_type, typename p1##_type, typename p2##_type, \
-    typename p3##_type, typename p4##_type, typename p5##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6) , typename p0##_type, typename p1##_type, typename p2##_type, \
-    typename p3##_type, typename p4##_type, typename p5##_type, \
-    typename p6##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6, p7) , typename p0##_type, typename p1##_type, typename p2##_type, \
-    typename p3##_type, typename p4##_type, typename p5##_type, \
-    typename p6##_type, typename p7##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6, p7, p8) , typename p0##_type, typename p1##_type, typename p2##_type, \
-    typename p3##_type, typename p4##_type, typename p5##_type, \
-    typename p6##_type, typename p7##_type, typename p8##_type
-#define GMOCK_INTERNAL_DECL_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6, p7, p8, p9) , typename p0##_type, typename p1##_type, \
-    typename p2##_type, typename p3##_type, typename p4##_type, \
-    typename p5##_type, typename p6##_type, typename p7##_type, \
-    typename p8##_type, typename p9##_type
-
-// Initializes the value parameters.
-#define GMOCK_INTERNAL_INIT_AND_0_VALUE_PARAMS()\
-    ()
-#define GMOCK_INTERNAL_INIT_AND_1_VALUE_PARAMS(p0)\
-    (p0##_type gmock_p0) : p0(::std::move(gmock_p0))
-#define GMOCK_INTERNAL_INIT_AND_2_VALUE_PARAMS(p0, p1)\
-    (p0##_type gmock_p0, p1##_type gmock_p1) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1))
-#define GMOCK_INTERNAL_INIT_AND_3_VALUE_PARAMS(p0, p1, p2)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2))
-#define GMOCK_INTERNAL_INIT_AND_4_VALUE_PARAMS(p0, p1, p2, p3)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3))
-#define GMOCK_INTERNAL_INIT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3, p4##_type gmock_p4) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4))
-#define GMOCK_INTERNAL_INIT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3, p4##_type gmock_p4, \
-        p5##_type gmock_p5) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5))
-#define GMOCK_INTERNAL_INIT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-        p6##_type gmock_p6) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6))
-#define GMOCK_INTERNAL_INIT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-        p6##_type gmock_p6, p7##_type gmock_p7) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
-        p7(::std::move(gmock_p7))
-#define GMOCK_INTERNAL_INIT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-        p6##_type gmock_p6, p7##_type gmock_p7, \
-        p8##_type gmock_p8) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
-        p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8))
-#define GMOCK_INTERNAL_INIT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8, p9)\
-    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-        p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
-        p9##_type gmock_p9) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
-        p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)), \
-        p9(::std::move(gmock_p9))
-
-// Defines the copy constructor
-#define GMOCK_INTERNAL_DEFN_COPY_AND_0_VALUE_PARAMS() \
-    {}  // Avoid https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82134
-#define GMOCK_INTERNAL_DEFN_COPY_AND_1_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_2_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_3_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_4_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_5_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_6_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_7_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_8_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_9_VALUE_PARAMS(...) = default;
-#define GMOCK_INTERNAL_DEFN_COPY_AND_10_VALUE_PARAMS(...) = default;
-
-// Declares the fields for storing the value parameters.
-#define GMOCK_INTERNAL_DEFN_AND_0_VALUE_PARAMS()
-#define GMOCK_INTERNAL_DEFN_AND_1_VALUE_PARAMS(p0) p0##_type p0;
-#define GMOCK_INTERNAL_DEFN_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0; \
-    p1##_type p1;
-#define GMOCK_INTERNAL_DEFN_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0; \
-    p1##_type p1; p2##_type p2;
-#define GMOCK_INTERNAL_DEFN_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0; \
-    p1##_type p1; p2##_type p2; p3##_type p3;
-#define GMOCK_INTERNAL_DEFN_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \
-    p4) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4;
-#define GMOCK_INTERNAL_DEFN_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \
-    p5) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
-    p5##_type p5;
-#define GMOCK_INTERNAL_DEFN_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
-    p5##_type p5; p6##_type p6;
-#define GMOCK_INTERNAL_DEFN_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
-    p5##_type p5; p6##_type p6; p7##_type p7;
-#define GMOCK_INTERNAL_DEFN_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \
-    p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8;
-#define GMOCK_INTERNAL_DEFN_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8, p9) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \
-    p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8; \
-    p9##_type p9;
-
-// Lists the value parameters.
-#define GMOCK_INTERNAL_LIST_AND_0_VALUE_PARAMS()
-#define GMOCK_INTERNAL_LIST_AND_1_VALUE_PARAMS(p0) p0
-#define GMOCK_INTERNAL_LIST_AND_2_VALUE_PARAMS(p0, p1) p0, p1
-#define GMOCK_INTERNAL_LIST_AND_3_VALUE_PARAMS(p0, p1, p2) p0, p1, p2
-#define GMOCK_INTERNAL_LIST_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0, p1, p2, p3
-#define GMOCK_INTERNAL_LIST_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) p0, p1, \
-    p2, p3, p4
-#define GMOCK_INTERNAL_LIST_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) p0, \
-    p1, p2, p3, p4, p5
-#define GMOCK_INTERNAL_LIST_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6) p0, p1, p2, p3, p4, p5, p6
-#define GMOCK_INTERNAL_LIST_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7) p0, p1, p2, p3, p4, p5, p6, p7
-#define GMOCK_INTERNAL_LIST_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8) p0, p1, p2, p3, p4, p5, p6, p7, p8
-#define GMOCK_INTERNAL_LIST_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8, p9) p0, p1, p2, p3, p4, p5, p6, p7, p8, p9
-
-// Lists the value parameter types.
-#define GMOCK_INTERNAL_LIST_TYPE_AND_0_VALUE_PARAMS()
-#define GMOCK_INTERNAL_LIST_TYPE_AND_1_VALUE_PARAMS(p0) , p0##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_2_VALUE_PARAMS(p0, p1) , p0##_type, \
-    p1##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , p0##_type, \
-    p1##_type, p2##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \
-    p0##_type, p1##_type, p2##_type, p3##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \
-    p0##_type, p1##_type, p2##_type, p3##_type, p4##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \
-    p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type, \
-    p6##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6, p7) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-    p5##_type, p6##_type, p7##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6, p7, p8) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-    p5##_type, p6##_type, p7##_type, p8##_type
-#define GMOCK_INTERNAL_LIST_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6, p7, p8, p9) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-    p5##_type, p6##_type, p7##_type, p8##_type, p9##_type
-
-// Declares the value parameters.
-#define GMOCK_INTERNAL_DECL_AND_0_VALUE_PARAMS()
-#define GMOCK_INTERNAL_DECL_AND_1_VALUE_PARAMS(p0) p0##_type p0
-#define GMOCK_INTERNAL_DECL_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0, \
-    p1##_type p1
-#define GMOCK_INTERNAL_DECL_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0, \
-    p1##_type p1, p2##_type p2
-#define GMOCK_INTERNAL_DECL_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0, \
-    p1##_type p1, p2##_type p2, p3##_type p3
-#define GMOCK_INTERNAL_DECL_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \
-    p4) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4
-#define GMOCK_INTERNAL_DECL_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \
-    p5) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
-    p5##_type p5
-#define GMOCK_INTERNAL_DECL_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
-    p6) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
-    p5##_type p5, p6##_type p6
-#define GMOCK_INTERNAL_DECL_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
-    p5##_type p5, p6##_type p6, p7##_type p7
-#define GMOCK_INTERNAL_DECL_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
-    p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8
-#define GMOCK_INTERNAL_DECL_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8, p9) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
-    p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
-    p9##_type p9
-
-// The suffix of the class template implementing the action template.
-#define GMOCK_INTERNAL_COUNT_AND_0_VALUE_PARAMS()
-#define GMOCK_INTERNAL_COUNT_AND_1_VALUE_PARAMS(p0) P
-#define GMOCK_INTERNAL_COUNT_AND_2_VALUE_PARAMS(p0, p1) P2
-#define GMOCK_INTERNAL_COUNT_AND_3_VALUE_PARAMS(p0, p1, p2) P3
-#define GMOCK_INTERNAL_COUNT_AND_4_VALUE_PARAMS(p0, p1, p2, p3) P4
-#define GMOCK_INTERNAL_COUNT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) P5
-#define GMOCK_INTERNAL_COUNT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) P6
-#define GMOCK_INTERNAL_COUNT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6) P7
-#define GMOCK_INTERNAL_COUNT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7) P8
-#define GMOCK_INTERNAL_COUNT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8) P9
-#define GMOCK_INTERNAL_COUNT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
-    p7, p8, p9) P10
-
-// The name of the class template implementing the action template.
-#define GMOCK_ACTION_CLASS_(name, value_params)\
-    GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params)
-
-#define ACTION_TEMPLATE(name, template_params, value_params)                   \
-  template <GMOCK_INTERNAL_DECL_##template_params                              \
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
-  class GMOCK_ACTION_CLASS_(name, value_params) {                              \
-   public:                                                                     \
-    explicit GMOCK_ACTION_CLASS_(name, value_params)(                          \
-        GMOCK_INTERNAL_DECL_##value_params)                                    \
-        GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),    \
-                    = default; ,                                               \
-                    : impl_(std::make_shared<gmock_Impl>(                      \
-                                GMOCK_INTERNAL_LIST_##value_params)) { })      \
-    GMOCK_ACTION_CLASS_(name, value_params)(                                   \
-        const GMOCK_ACTION_CLASS_(name, value_params)&) noexcept               \
-        GMOCK_INTERNAL_DEFN_COPY_##value_params                                \
-    GMOCK_ACTION_CLASS_(name, value_params)(                                   \
-        GMOCK_ACTION_CLASS_(name, value_params)&&) noexcept                    \
-        GMOCK_INTERNAL_DEFN_COPY_##value_params                                \
-    template <typename F>                                                      \
-    operator ::testing::Action<F>() const {                                    \
-      return GMOCK_PP_IF(                                                      \
-          GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),              \
-                      (::testing::internal::MakeAction<F, gmock_Impl>()),      \
-                      (::testing::internal::MakeAction<F>(impl_)));            \
-    }                                                                          \
-   private:                                                                    \
-    class gmock_Impl {                                                         \
-     public:                                                                   \
-      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}                \
-      template <typename function_type, typename return_type,                  \
-                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>         \
-      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const;  \
-      GMOCK_INTERNAL_DEFN_##value_params                                       \
-    };                                                                         \
-    GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),        \
-                , std::shared_ptr<const gmock_Impl> impl_;)                    \
-  };                                                                           \
-  template <GMOCK_INTERNAL_DECL_##template_params                              \
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
-  GMOCK_ACTION_CLASS_(name, value_params)<                                     \
-      GMOCK_INTERNAL_LIST_##template_params                                    \
-      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(                           \
-          GMOCK_INTERNAL_DECL_##value_params) GTEST_MUST_USE_RESULT_;          \
-  template <GMOCK_INTERNAL_DECL_##template_params                              \
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
-  inline GMOCK_ACTION_CLASS_(name, value_params)<                              \
-      GMOCK_INTERNAL_LIST_##template_params                                    \
-      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(                           \
-          GMOCK_INTERNAL_DECL_##value_params) {                                \
-    return GMOCK_ACTION_CLASS_(name, value_params)<                            \
-        GMOCK_INTERNAL_LIST_##template_params                                  \
-        GMOCK_INTERNAL_LIST_TYPE_##value_params>(                              \
-            GMOCK_INTERNAL_LIST_##value_params);                               \
-  }                                                                            \
-  template <GMOCK_INTERNAL_DECL_##template_params                              \
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
-  template <typename function_type, typename return_type, typename args_type,  \
-            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                 \
-  return_type GMOCK_ACTION_CLASS_(name, value_params)<                         \
-      GMOCK_INTERNAL_LIST_##template_params                                    \
-      GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl::gmock_PerformImpl( \
-          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
-
-namespace testing {
-
-// The ACTION*() macros trigger warning C4100 (unreferenced formal
-// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
-// the macro definition, as the warnings are generated when the macro
-// is expanded and macro expansion cannot contain #pragma.  Therefore
-// we suppress them here.
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4100)
-#endif
-
-namespace internal {
-
-// internal::InvokeArgument - a helper for InvokeArgument action.
-// The basic overloads are provided here for generic functors.
-// Overloads for other custom-callables are provided in the
-// internal/custom/gmock-generated-actions.h header.
-template <typename F, typename... Args>
-auto InvokeArgument(F f, Args... args) -> decltype(f(args...)) {
-  return f(args...);
-}
-
-template <std::size_t index, typename... Params>
-struct InvokeArgumentAction {
-  template <typename... Args>
-  auto operator()(Args&&... args) const -> decltype(internal::InvokeArgument(
-      std::get<index>(std::forward_as_tuple(std::forward<Args>(args)...)),
-      std::declval<const Params&>()...)) {
-    internal::FlatTuple<Args&&...> args_tuple(FlatTupleConstructTag{},
-                                              std::forward<Args>(args)...);
-    return params.Apply([&](const Params&... unpacked_params) {
-      auto&& callable = args_tuple.template Get<index>();
-      return internal::InvokeArgument(
-          std::forward<decltype(callable)>(callable), unpacked_params...);
-    });
-  }
-
-  internal::FlatTuple<Params...> params;
-};
-
-}  // namespace internal
-
-// The InvokeArgument<N>(a1, a2, ..., a_k) action invokes the N-th
-// (0-based) argument, which must be a k-ary callable, of the mock
-// function, with arguments a1, a2, ..., a_k.
-//
-// Notes:
-//
-//   1. The arguments are passed by value by default.  If you need to
-//   pass an argument by reference, wrap it inside std::ref().  For
-//   example,
-//
-//     InvokeArgument<1>(5, string("Hello"), std::ref(foo))
-//
-//   passes 5 and string("Hello") by value, and passes foo by
-//   reference.
-//
-//   2. If the callable takes an argument by reference but std::ref() is
-//   not used, it will receive the reference to a copy of the value,
-//   instead of the original value.  For example, when the 0-th
-//   argument of the mock function takes a const string&, the action
-//
-//     InvokeArgument<0>(string("Hello"))
-//
-//   makes a copy of the temporary string("Hello") object and passes a
-//   reference of the copy, instead of the original temporary object,
-//   to the callable.  This makes it easy for a user to define an
-//   InvokeArgument action from temporary values and have it performed
-//   later.
-template <std::size_t index, typename... Params>
-internal::InvokeArgumentAction<index, typename std::decay<Params>::type...>
-InvokeArgument(Params&&... params) {
-  return {internal::FlatTuple<typename std::decay<Params>::type...>(
-      internal::FlatTupleConstructTag{}, std::forward<Params>(params)...)};
-}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-}  // namespace testing
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
-// Copyright 2013, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some matchers that depend on gmock-matchers.h.
-//
-// Note that tests are implemented in gmock-matchers_test.cc rather than
-// gmock-more-matchers-test.cc.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
-
-
-namespace testing {
-
-// Silence C4100 (unreferenced formal
-// parameter) for MSVC
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4100)
-#if (_MSC_VER == 1900)
-// and silence C4800 (C4800: 'int *const ': forcing value
-// to bool 'true' or 'false') for MSVC 14
-# pragma warning(disable:4800)
-  #endif
-#endif
-
-// Defines a matcher that matches an empty container. The container must
-// support both size() and empty(), which all STL-like containers provide.
-MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
-  if (arg.empty()) {
-    return true;
-  }
-  *result_listener << "whose size is " << arg.size();
-  return false;
-}
-
-// Define a matcher that matches a value that evaluates in boolean
-// context to true.  Useful for types that define "explicit operator
-// bool" operators and so can't be compared for equality with true
-// and false.
-MATCHER(IsTrue, negation ? "is false" : "is true") {
-  return static_cast<bool>(arg);
-}
-
-// Define a matcher that matches a value that evaluates in boolean
-// context to false.  Useful for types that define "explicit operator
-// bool" operators and so can't be compared for equality with true
-// and false.
-MATCHER(IsFalse, negation ? "is true" : "is false") {
-  return !static_cast<bool>(arg);
-}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-
-}  // namespace testing
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Implements class templates NiceMock, NaggyMock, and StrictMock.
-//
-// Given a mock class MockFoo that is created using Google Mock,
-// NiceMock<MockFoo> is a subclass of MockFoo that allows
-// uninteresting calls (i.e. calls to mock methods that have no
-// EXPECT_CALL specs), NaggyMock<MockFoo> is a subclass of MockFoo
-// that prints a warning when an uninteresting call occurs, and
-// StrictMock<MockFoo> is a subclass of MockFoo that treats all
-// uninteresting calls as errors.
-//
-// Currently a mock is naggy by default, so MockFoo and
-// NaggyMock<MockFoo> behave like the same.  However, we will soon
-// switch the default behavior of mocks to be nice, as that in general
-// leads to more maintainable tests.  When that happens, MockFoo will
-// stop behaving like NaggyMock<MockFoo> and start behaving like
-// NiceMock<MockFoo>.
-//
-// NiceMock, NaggyMock, and StrictMock "inherit" the constructors of
-// their respective base class.  Therefore you can write
-// NiceMock<MockFoo>(5, "a") to construct a nice mock where MockFoo
-// has a constructor that accepts (int, const char*), for example.
-//
-// A known limitation is that NiceMock<MockFoo>, NaggyMock<MockFoo>,
-// and StrictMock<MockFoo> only works for mock methods defined using
-// the MOCK_METHOD* family of macros DIRECTLY in the MockFoo class.
-// If a mock method is defined in a base class of MockFoo, the "nice"
-// or "strict" modifier may not affect it, depending on the compiler.
-// In particular, nesting NiceMock, NaggyMock, and StrictMock is NOT
-// supported.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
-#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
-
-#include <type_traits>
-
-
-namespace testing {
-template <class MockClass>
-class NiceMock;
-template <class MockClass>
-class NaggyMock;
-template <class MockClass>
-class StrictMock;
-
-namespace internal {
-template <typename T>
-std::true_type StrictnessModifierProbe(const NiceMock<T>&);
-template <typename T>
-std::true_type StrictnessModifierProbe(const NaggyMock<T>&);
-template <typename T>
-std::true_type StrictnessModifierProbe(const StrictMock<T>&);
-std::false_type StrictnessModifierProbe(...);
-
-template <typename T>
-constexpr bool HasStrictnessModifier() {
-  return decltype(StrictnessModifierProbe(std::declval<const T&>()))::value;
-}
-
-// Base classes that register and deregister with testing::Mock to alter the
-// default behavior around uninteresting calls. Inheriting from one of these
-// classes first and then MockClass ensures the MockClass constructor is run
-// after registration, and that the MockClass destructor runs before
-// deregistration. This guarantees that MockClass's constructor and destructor
-// run with the same level of strictness as its instance methods.
-
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW && \
-    (defined(_MSC_VER) || defined(__clang__))
-// We need to mark these classes with this declspec to ensure that
-// the empty base class optimization is performed.
-#define GTEST_INTERNAL_EMPTY_BASE_CLASS __declspec(empty_bases)
-#else
-#define GTEST_INTERNAL_EMPTY_BASE_CLASS
-#endif
-
-template <typename Base>
-class NiceMockImpl {
- public:
-  NiceMockImpl() { ::testing::Mock::AllowUninterestingCalls(this); }
-
-  ~NiceMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
-};
-
-template <typename Base>
-class NaggyMockImpl {
- public:
-  NaggyMockImpl() { ::testing::Mock::WarnUninterestingCalls(this); }
-
-  ~NaggyMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
-};
-
-template <typename Base>
-class StrictMockImpl {
- public:
-  StrictMockImpl() { ::testing::Mock::FailUninterestingCalls(this); }
-
-  ~StrictMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
-};
-
-}  // namespace internal
-
-template <class MockClass>
-class GTEST_INTERNAL_EMPTY_BASE_CLASS NiceMock
-    : private internal::NiceMockImpl<MockClass>,
-      public MockClass {
- public:
-  static_assert(!internal::HasStrictnessModifier<MockClass>(),
-                "Can't apply NiceMock to a class hierarchy that already has a "
-                "strictness modifier. See "
-                "https://google.github.io/googletest/"
-                "gmock_cook_book.html#NiceStrictNaggy");
-  NiceMock() : MockClass() {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
-  // Ideally, we would inherit base class's constructors through a using
-  // declaration, which would preserve their visibility. However, many existing
-  // tests rely on the fact that current implementation reexports protected
-  // constructors as public. These tests would need to be cleaned up first.
-
-  // Single argument constructor is special-cased so that it can be
-  // made explicit.
-  template <typename A>
-  explicit NiceMock(A&& arg) : MockClass(std::forward<A>(arg)) {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
-  template <typename TArg1, typename TArg2, typename... An>
-  NiceMock(TArg1&& arg1, TArg2&& arg2, An&&... args)
-      : MockClass(std::forward<TArg1>(arg1), std::forward<TArg2>(arg2),
-                  std::forward<An>(args)...) {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(NiceMock);
-};
-
-template <class MockClass>
-class GTEST_INTERNAL_EMPTY_BASE_CLASS NaggyMock
-    : private internal::NaggyMockImpl<MockClass>,
-      public MockClass {
-  static_assert(!internal::HasStrictnessModifier<MockClass>(),
-                "Can't apply NaggyMock to a class hierarchy that already has a "
-                "strictness modifier. See "
-                "https://google.github.io/googletest/"
-                "gmock_cook_book.html#NiceStrictNaggy");
-
- public:
-  NaggyMock() : MockClass() {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
-  // Ideally, we would inherit base class's constructors through a using
-  // declaration, which would preserve their visibility. However, many existing
-  // tests rely on the fact that current implementation reexports protected
-  // constructors as public. These tests would need to be cleaned up first.
-
-  // Single argument constructor is special-cased so that it can be
-  // made explicit.
-  template <typename A>
-  explicit NaggyMock(A&& arg) : MockClass(std::forward<A>(arg)) {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
-  template <typename TArg1, typename TArg2, typename... An>
-  NaggyMock(TArg1&& arg1, TArg2&& arg2, An&&... args)
-      : MockClass(std::forward<TArg1>(arg1), std::forward<TArg2>(arg2),
-                  std::forward<An>(args)...) {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(NaggyMock);
-};
-
-template <class MockClass>
-class GTEST_INTERNAL_EMPTY_BASE_CLASS StrictMock
-    : private internal::StrictMockImpl<MockClass>,
-      public MockClass {
- public:
-  static_assert(
-      !internal::HasStrictnessModifier<MockClass>(),
-      "Can't apply StrictMock to a class hierarchy that already has a "
-      "strictness modifier. See "
-      "https://google.github.io/googletest/"
-      "gmock_cook_book.html#NiceStrictNaggy");
-  StrictMock() : MockClass() {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
-  // Ideally, we would inherit base class's constructors through a using
-  // declaration, which would preserve their visibility. However, many existing
-  // tests rely on the fact that current implementation reexports protected
-  // constructors as public. These tests would need to be cleaned up first.
-
-  // Single argument constructor is special-cased so that it can be
-  // made explicit.
-  template <typename A>
-  explicit StrictMock(A&& arg) : MockClass(std::forward<A>(arg)) {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
-  template <typename TArg1, typename TArg2, typename... An>
-  StrictMock(TArg1&& arg1, TArg2&& arg2, An&&... args)
-      : MockClass(std::forward<TArg1>(arg1), std::forward<TArg2>(arg2),
-                  std::forward<An>(args)...) {
-    static_assert(sizeof(*this) == sizeof(MockClass),
-                  "The impl subclass shouldn't introduce any padding");
-  }
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(StrictMock);
-};
-
-#undef GTEST_INTERNAL_EMPTY_BASE_CLASS
-
-}  // namespace testing
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
-
-namespace testing {
-
-// Declares Google Mock flags that we want a user to use programmatically.
-GMOCK_DECLARE_bool_(catch_leaked_mocks);
-GMOCK_DECLARE_string_(verbose);
-GMOCK_DECLARE_int32_(default_mock_behavior);
-
-// Initializes Google Mock.  This must be called before running the
-// tests.  In particular, it parses the command line for the flags
-// that Google Mock recognizes.  Whenever a Google Mock flag is seen,
-// it is removed from argv, and *argc is decremented.
-//
-// No value is returned.  Instead, the Google Mock flag variables are
-// updated.
-//
-// Since Google Test is needed for Google Mock to work, this function
-// also initializes Google Test and parses its flags, if that hasn't
-// been done.
-GTEST_API_ void InitGoogleMock(int* argc, char** argv);
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv);
-
-// This overloaded version can be used on Arduino/embedded platforms where
-// there is no argc/argv.
-GTEST_API_ void InitGoogleMock();
-
-}  // namespace testing
-
-#endif  // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_H_
diff --git a/third_party/ceres/internal/ceres/gmock/mock-log.h b/third_party/ceres/internal/ceres/gmock/mock-log.h
deleted file mode 100644
index 91b5939..0000000
--- a/third_party/ceres/internal/ceres/gmock/mock-log.h
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright (c) 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: Zhanyong Wan
-//
-// Defines the ScopedMockLog class (using Google C++ Mocking
-// Framework), which is convenient for testing code that uses LOG().
-//
-// NOTE(keir): This is a fork until Google Log exports the scoped mock log
-// class; see: http://code.google.com/p/google-glog/issues/detail?id=88
-
-#ifndef GOOGLE_CERES_INTERNAL_MOCK_LOG_H_
-#define GOOGLE_CERES_INTERNAL_MOCK_LOG_H_
-
-#include <string>
-
-#include <gmock/gmock.h>
-
-#include "glog/logging.h"
-
-namespace testing {
-
-// A ScopedMockLog object intercepts LOG() messages issued during its
-// lifespan.  Using this together with Google C++ Mocking Framework,
-// it's very easy to test how a piece of code calls LOG().  The
-// typical usage:
-//
-//   TEST(FooTest, LogsCorrectly) {
-//     ScopedMockLog log;
-//
-//     // We expect the WARNING "Something bad!" exactly twice.
-//     EXPECT_CALL(log, Log(WARNING, _, "Something bad!"))
-//         .Times(2);
-//
-//     // We allow foo.cc to call LOG(INFO) any number of times.
-//     EXPECT_CALL(log, Log(INFO, HasSubstr("/foo.cc"), _))
-//         .Times(AnyNumber());
-//
-//     Foo();  // Exercises the code under test.
-//   }
-class ScopedMockLog : public google::LogSink {
- public:
-  // When a ScopedMockLog object is constructed, it starts to
-  // intercept logs.
-  ScopedMockLog() { AddLogSink(this); }
-
-  // When the object is destructed, it stops intercepting logs.
-  ~ScopedMockLog() override { RemoveLogSink(this); }
-
-  // Implements the mock method:
-  //
-  //   void Log(LogSeverity severity, const string& file_path,
-  //            const string& message);
-  //
-  // The second argument to Send() is the full path of the source file
-  // in which the LOG() was issued.
-  //
-  // Note, that in a multi-threaded environment, all LOG() messages from a
-  // single thread will be handled in sequence, but that cannot be guaranteed
-  // for messages from different threads. In fact, if the same or multiple
-  // expectations are matched on two threads concurrently, their actions will
-  // be executed concurrently as well and may interleave.
-  MOCK_METHOD3(Log, void(google::LogSeverity severity,
-                         const std::string& file_path,
-                         const std::string& message));
-
- private:
-  // Implements the send() virtual function in class LogSink.
-  // Whenever a LOG() statement is executed, this function will be
-  // invoked with information presented in the LOG().
-  //
-  // The method argument list is long and carries much information a
-  // test usually doesn't care about, so we trim the list before
-  // forwarding the call to Log(), which is much easier to use in
-  // tests.
-  //
-  // We still cannot call Log() directly, as it may invoke other LOG()
-  // messages, either due to Invoke, or due to an error logged in
-  // Google C++ Mocking Framework code, which would trigger a deadlock
-  // since a lock is held during send().
-  //
-  // Hence, we save the message for WaitTillSent() which will be called after
-  // the lock on send() is released, and we'll call Log() inside
-  // WaitTillSent(). Since while a single send() call may be running at a
-  // time, multiple WaitTillSent() calls (along with the one send() call) may
-  // be running simultaneously, we ensure thread-safety of the exchange between
-  // send() and WaitTillSent(), and that for each message, LOG(), send(),
-  // WaitTillSent() and Log() are executed in the same thread.
-  void send(google::LogSeverity severity,
-                    const char* full_filename,
-                    const char* base_filename, int line, const tm* tm_time,
-                    const char* message, size_t message_len) override {
-    // We are only interested in the log severity, full file name, and
-    // log message.
-    message_info_.severity = severity;
-    message_info_.file_path = full_filename;
-    message_info_.message = std::string(message, message_len);
-  }
-
-  // Implements the WaitTillSent() virtual function in class LogSink.
-  // It will be executed after send() and after the global logging lock is
-  // released, so calls within it (or rather within the Log() method called
-  // within) may also issue LOG() statements.
-  //
-  // LOG(), send(), WaitTillSent() and Log() will occur in the same thread for
-  // a given log message.
-  void WaitTillSent() override {
-    // First, and very importantly, we save a copy of the message being
-    // processed before calling Log(), since Log() may indirectly call send()
-    // and WaitTillSent() in the same thread again.
-    MessageInfo message_info = message_info_;
-    Log(message_info.severity, message_info.file_path, message_info.message);
-  }
-
-  // All relevant information about a logged message that needs to be passed
-  // from send() to WaitTillSent().
-  struct MessageInfo {
-    google::LogSeverity severity;
-    std::string file_path;
-    std::string message;
-  };
-  MessageInfo message_info_;
-};
-
-}  // namespace testing
-
-#endif  // GOOGLE_CERES_INTERNAL_MOCK_LOG_H_
diff --git a/third_party/ceres/internal/ceres/gmock_gtest_all.cc b/third_party/ceres/internal/ceres/gmock_gtest_all.cc
deleted file mode 100644
index 9ea7029..0000000
--- a/third_party/ceres/internal/ceres/gmock_gtest_all.cc
+++ /dev/null
@@ -1,14463 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Utilities for testing Google Test itself and code that uses Google Test
-// (e.g. frameworks built on top of Google Test).
-
-// GOOGLETEST_CM0004 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
-
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// This helper class can be used to mock out Google Test failure reporting
-// so that we can test Google Test or code that builds on Google Test.
-//
-// An object of this class appends a TestPartResult object to the
-// TestPartResultArray object given in the constructor whenever a Google Test
-// failure is reported. It can either intercept only failures that are
-// generated in the same thread that created this object or it can intercept
-// all generated failures. The scope of this mock object can be controlled with
-// the second argument to the two arguments constructor.
-class GTEST_API_ ScopedFakeTestPartResultReporter
-    : public TestPartResultReporterInterface {
- public:
-  // The two possible mocking modes of this object.
-  enum InterceptMode {
-    INTERCEPT_ONLY_CURRENT_THREAD,  // Intercepts only thread local failures.
-    INTERCEPT_ALL_THREADS           // Intercepts all failures.
-  };
-
-  // The c'tor sets this object as the test part result reporter used
-  // by Google Test.  The 'result' parameter specifies where to report the
-  // results. This reporter will only catch failures generated in the current
-  // thread. DEPRECATED
-  explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
-
-  // Same as above, but you can choose the interception scope of this object.
-  ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
-                                   TestPartResultArray* result);
-
-  // The d'tor restores the previous test part result reporter.
-  ~ScopedFakeTestPartResultReporter() override;
-
-  // Appends the TestPartResult object to the TestPartResultArray
-  // received in the constructor.
-  //
-  // This method is from the TestPartResultReporterInterface
-  // interface.
-  void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
-  void Init();
-
-  const InterceptMode intercept_mode_;
-  TestPartResultReporterInterface* old_reporter_;
-  TestPartResultArray* const result_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
-};
-
-namespace internal {
-
-// A helper class for implementing EXPECT_FATAL_FAILURE() and
-// EXPECT_NONFATAL_FAILURE().  Its destructor verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring.  If that's not the case, a
-// non-fatal failure will be generated.
-class GTEST_API_ SingleFailureChecker {
- public:
-  // The constructor remembers the arguments.
-  SingleFailureChecker(const TestPartResultArray* results,
-                       TestPartResult::Type type, const std::string& substr);
-  ~SingleFailureChecker();
- private:
-  const TestPartResultArray* const results_;
-  const TestPartResult::Type type_;
-  const std::string substr_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
-};
-
-}  // namespace internal
-
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-// A set of macros for testing Google Test assertions or code that's expected
-// to generate Google Test fatal failures.  It verifies that the given
-// statement will cause exactly one fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-//   - 'statement' cannot reference local non-static variables or
-//     non-static members of the current object.
-//   - 'statement' cannot return a value.
-//   - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works.  The AcceptsMacroThatExpandsToUnprotectedComma test in
-// gtest_unittest.cc will fail to compile if we do that.
-#define EXPECT_FATAL_FAILURE(statement, substr) \
-  do { \
-    class GTestExpectFatalFailureHelper {\
-     public:\
-      static void Execute() { statement; }\
-    };\
-    ::testing::TestPartResultArray gtest_failures;\
-    ::testing::internal::SingleFailureChecker gtest_checker(\
-        &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
-    {\
-      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
-          ::testing::ScopedFakeTestPartResultReporter:: \
-          INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
-      GTestExpectFatalFailureHelper::Execute();\
-    }\
-  } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
-  do { \
-    class GTestExpectFatalFailureHelper {\
-     public:\
-      static void Execute() { statement; }\
-    };\
-    ::testing::TestPartResultArray gtest_failures;\
-    ::testing::internal::SingleFailureChecker gtest_checker(\
-        &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
-    {\
-      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
-          ::testing::ScopedFakeTestPartResultReporter:: \
-          INTERCEPT_ALL_THREADS, &gtest_failures);\
-      GTestExpectFatalFailureHelper::Execute();\
-    }\
-  } while (::testing::internal::AlwaysFalse())
-
-// A macro for testing Google Test assertions or code that's expected to
-// generate Google Test non-fatal failures.  It asserts that the given
-// statement will cause exactly one non-fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// 'statement' is allowed to reference local variables and members of
-// the current object.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-//   - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works.  If we do that, the code won't compile when the user gives
-// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
-// expands to code containing an unprotected comma.  The
-// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
-// catches that.
-//
-// For the same reason, we have to write
-//   if (::testing::internal::AlwaysTrue()) { statement; }
-// instead of
-//   GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-// to avoid an MSVC warning on unreachable code.
-#define EXPECT_NONFATAL_FAILURE(statement, substr) \
-  do {\
-    ::testing::TestPartResultArray gtest_failures;\
-    ::testing::internal::SingleFailureChecker gtest_checker(\
-        &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
-        (substr));\
-    {\
-      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
-          ::testing::ScopedFakeTestPartResultReporter:: \
-          INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
-      if (::testing::internal::AlwaysTrue()) { statement; }\
-    }\
-  } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
-  do {\
-    ::testing::TestPartResultArray gtest_failures;\
-    ::testing::internal::SingleFailureChecker gtest_checker(\
-        &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
-        (substr));\
-    {\
-      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
-          ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
-          &gtest_failures);\
-      if (::testing::internal::AlwaysTrue()) { statement; }\
-    }\
-  } while (::testing::internal::AlwaysFalse())
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
-
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include <algorithm>
-#include <chrono>  // NOLINT
-#include <cmath>
-#include <cstdint>
-#include <iomanip>
-#include <limits>
-#include <list>
-#include <map>
-#include <ostream>  // NOLINT
-#include <sstream>
-#include <vector>
-
-#if GTEST_OS_LINUX
-
-# include <fcntl.h>  // NOLINT
-# include <limits.h>  // NOLINT
-# include <sched.h>  // NOLINT
-// Declares vsnprintf().  This header is not available on Windows.
-# include <strings.h>  // NOLINT
-# include <sys/mman.h>  // NOLINT
-# include <sys/time.h>  // NOLINT
-# include <unistd.h>  // NOLINT
-# include <string>
-
-#elif GTEST_OS_ZOS
-# include <sys/time.h>  // NOLINT
-
-// On z/OS we additionally need strings.h for strcasecmp.
-# include <strings.h>  // NOLINT
-
-#elif GTEST_OS_WINDOWS_MOBILE  // We are on Windows CE.
-
-# include <windows.h>  // NOLINT
-# undef min
-
-#elif GTEST_OS_WINDOWS  // We are on Windows proper.
-
-# include <windows.h>  // NOLINT
-# undef min
-
-#ifdef _MSC_VER
-# include <crtdbg.h>  // NOLINT
-#endif
-
-# include <io.h>  // NOLINT
-# include <sys/timeb.h>  // NOLINT
-# include <sys/types.h>  // NOLINT
-# include <sys/stat.h>  // NOLINT
-
-# if GTEST_OS_WINDOWS_MINGW
-#  include <sys/time.h>  // NOLINT
-# endif  // GTEST_OS_WINDOWS_MINGW
-
-#else
-
-// cpplint thinks that the header is already included, so we want to
-// silence it.
-# include <sys/time.h>  // NOLINT
-# include <unistd.h>  // NOLINT
-
-#endif  // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h>  // NOLINT
-# include <netdb.h>  // NOLINT
-# include <sys/socket.h>  // NOLINT
-# include <sys/types.h>  // NOLINT
-#endif
-
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Utility functions and classes used by the Google C++ testing framework.//
-// This file contains purely Google Test's internal implementation.  Please
-// DO NOT #INCLUDE IT IN A USER PROGRAM.
-
-#ifndef GOOGLETEST_SRC_GTEST_INTERNAL_INL_H_
-#define GOOGLETEST_SRC_GTEST_INTERNAL_INL_H_
-
-#ifndef _WIN32_WCE
-# include <errno.h>
-#endif  // !_WIN32_WCE
-#include <stddef.h>
-#include <stdlib.h>  // For strtoll/_strtoul64/malloc/free.
-#include <string.h>  // For memmove.
-
-#include <algorithm>
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h>  // NOLINT
-# include <netdb.h>  // NOLINT
-#endif
-
-#if GTEST_OS_WINDOWS
-# include <windows.h>  // NOLINT
-#endif  // GTEST_OS_WINDOWS
-
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// Declares the flags.
-//
-// We don't want the users to modify this flag in the code, but want
-// Google Test's own unit tests to be able to access it. Therefore we
-// declare it here as opposed to in gtest.h.
-GTEST_DECLARE_bool_(death_test_use_fork);
-
-namespace internal {
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library.  This is solely for testing GetTestTypeId().
-GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
-const char kBreakOnFailureFlag[] = "break_on_failure";
-const char kCatchExceptionsFlag[] = "catch_exceptions";
-const char kColorFlag[] = "color";
-const char kFailFast[] = "fail_fast";
-const char kFilterFlag[] = "filter";
-const char kListTestsFlag[] = "list_tests";
-const char kOutputFlag[] = "output";
-const char kBriefFlag[] = "brief";
-const char kPrintTimeFlag[] = "print_time";
-const char kPrintUTF8Flag[] = "print_utf8";
-const char kRandomSeedFlag[] = "random_seed";
-const char kRepeatFlag[] = "repeat";
-const char kShuffleFlag[] = "shuffle";
-const char kStackTraceDepthFlag[] = "stack_trace_depth";
-const char kStreamResultToFlag[] = "stream_result_to";
-const char kThrowOnFailureFlag[] = "throw_on_failure";
-const char kFlagfileFlag[] = "flagfile";
-
-// A valid random seed must be in [1, kMaxRandomSeed].
-const int kMaxRandomSeed = 99999;
-
-// g_help_flag is true if and only if the --help flag or an equivalent form
-// is specified on the command line.
-GTEST_API_ extern bool g_help_flag;
-
-// Returns the current time in milliseconds.
-GTEST_API_ TimeInMillis GetTimeInMillis();
-
-// Returns true if and only if Google Test should use colors in the output.
-GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
-
-// Formats the given time in milliseconds as seconds.
-GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
-
-// Converts the given time in milliseconds to a date string in the ISO 8601
-// format, without the timezone information.  N.B.: due to the use the
-// non-reentrant localtime() function, this function is not thread safe.  Do
-// not use it in any code that can be called from multiple threads.
-GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
-
-// Parses a string for an Int32 flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true.  On failure, returns false without changing *value.
-GTEST_API_ bool ParseInt32Flag(
-    const char* str, const char* flag, int32_t* value);
-
-// Returns a random seed in range [1, kMaxRandomSeed] based on the
-// given --gtest_random_seed flag value.
-inline int GetRandomSeedFromFlag(int32_t random_seed_flag) {
-  const unsigned int raw_seed = (random_seed_flag == 0) ?
-      static_cast<unsigned int>(GetTimeInMillis()) :
-      static_cast<unsigned int>(random_seed_flag);
-
-  // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
-  // it's easy to type.
-  const int normalized_seed =
-      static_cast<int>((raw_seed - 1U) %
-                       static_cast<unsigned int>(kMaxRandomSeed)) + 1;
-  return normalized_seed;
-}
-
-// Returns the first valid random seed after 'seed'.  The behavior is
-// undefined if 'seed' is invalid.  The seed after kMaxRandomSeed is
-// considered to be 1.
-inline int GetNextRandomSeed(int seed) {
-  GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
-      << "Invalid random seed " << seed << " - must be in [1, "
-      << kMaxRandomSeed << "].";
-  const int next_seed = seed + 1;
-  return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
-}
-
-// This class saves the values of all Google Test flags in its c'tor, and
-// restores them in its d'tor.
-class GTestFlagSaver {
- public:
-  // The c'tor.
-  GTestFlagSaver() {
-    also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
-    break_on_failure_ = GTEST_FLAG(break_on_failure);
-    catch_exceptions_ = GTEST_FLAG(catch_exceptions);
-    color_ = GTEST_FLAG(color);
-    death_test_style_ = GTEST_FLAG(death_test_style);
-    death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
-    fail_fast_ = GTEST_FLAG(fail_fast);
-    filter_ = GTEST_FLAG(filter);
-    internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
-    list_tests_ = GTEST_FLAG(list_tests);
-    output_ = GTEST_FLAG(output);
-    brief_ = GTEST_FLAG(brief);
-    print_time_ = GTEST_FLAG(print_time);
-    print_utf8_ = GTEST_FLAG(print_utf8);
-    random_seed_ = GTEST_FLAG(random_seed);
-    repeat_ = GTEST_FLAG(repeat);
-    shuffle_ = GTEST_FLAG(shuffle);
-    stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
-    stream_result_to_ = GTEST_FLAG(stream_result_to);
-    throw_on_failure_ = GTEST_FLAG(throw_on_failure);
-  }
-
-  // The d'tor is not virtual.  DO NOT INHERIT FROM THIS CLASS.
-  ~GTestFlagSaver() {
-    GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
-    GTEST_FLAG(break_on_failure) = break_on_failure_;
-    GTEST_FLAG(catch_exceptions) = catch_exceptions_;
-    GTEST_FLAG(color) = color_;
-    GTEST_FLAG(death_test_style) = death_test_style_;
-    GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
-    GTEST_FLAG(filter) = filter_;
-    GTEST_FLAG(fail_fast) = fail_fast_;
-    GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
-    GTEST_FLAG(list_tests) = list_tests_;
-    GTEST_FLAG(output) = output_;
-    GTEST_FLAG(brief) = brief_;
-    GTEST_FLAG(print_time) = print_time_;
-    GTEST_FLAG(print_utf8) = print_utf8_;
-    GTEST_FLAG(random_seed) = random_seed_;
-    GTEST_FLAG(repeat) = repeat_;
-    GTEST_FLAG(shuffle) = shuffle_;
-    GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
-    GTEST_FLAG(stream_result_to) = stream_result_to_;
-    GTEST_FLAG(throw_on_failure) = throw_on_failure_;
-  }
-
- private:
-  // Fields for saving the original values of flags.
-  bool also_run_disabled_tests_;
-  bool break_on_failure_;
-  bool catch_exceptions_;
-  std::string color_;
-  std::string death_test_style_;
-  bool death_test_use_fork_;
-  bool fail_fast_;
-  std::string filter_;
-  std::string internal_run_death_test_;
-  bool list_tests_;
-  std::string output_;
-  bool brief_;
-  bool print_time_;
-  bool print_utf8_;
-  int32_t random_seed_;
-  int32_t repeat_;
-  bool shuffle_;
-  int32_t stack_trace_depth_;
-  std::string stream_result_to_;
-  bool throw_on_failure_;
-} GTEST_ATTRIBUTE_UNUSED_;
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type UInt32 because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
-GTEST_API_ std::string CodePointToUtf8(uint32_t code_point);
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
-//   UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
-//   UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded();
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (e.g., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-GTEST_API_ bool ShouldShard(const char* total_shards_str,
-                            const char* shard_index_str,
-                            bool in_subprocess_for_death_test);
-
-// Parses the environment variable var as a 32-bit integer. If it is unset,
-// returns default_val. If it is not a 32-bit integer, prints an error and
-// and aborts.
-GTEST_API_ int32_t Int32FromEnvOrDie(const char* env_var, int32_t default_val);
-
-// Given the total number of shards, the shard index, and the test id,
-// returns true if and only if the test should be run on this shard. The test id
-// is some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-GTEST_API_ bool ShouldRunTestOnShard(
-    int total_shards, int shard_index, int test_id);
-
-// STL container utilities.
-
-// Returns the number of elements in the given container that satisfy
-// the given predicate.
-template <class Container, typename Predicate>
-inline int CountIf(const Container& c, Predicate predicate) {
-  // Implemented as an explicit loop since std::count_if() in libCstd on
-  // Solaris has a non-standard signature.
-  int count = 0;
-  for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
-    if (predicate(*it))
-      ++count;
-  }
-  return count;
-}
-
-// Applies a function/functor to each element in the container.
-template <class Container, typename Functor>
-void ForEach(const Container& c, Functor functor) {
-  std::for_each(c.begin(), c.end(), functor);
-}
-
-// Returns the i-th element of the vector, or default_value if i is not
-// in range [0, v.size()).
-template <typename E>
-inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
-  return (i < 0 || i >= static_cast<int>(v.size())) ? default_value
-                                                    : v[static_cast<size_t>(i)];
-}
-
-// Performs an in-place shuffle of a range of the vector's elements.
-// 'begin' and 'end' are element indices as an STL-style range;
-// i.e. [begin, end) are shuffled, where 'end' == size() means to
-// shuffle to the end of the vector.
-template <typename E>
-void ShuffleRange(internal::Random* random, int begin, int end,
-                  std::vector<E>* v) {
-  const int size = static_cast<int>(v->size());
-  GTEST_CHECK_(0 <= begin && begin <= size)
-      << "Invalid shuffle range start " << begin << ": must be in range [0, "
-      << size << "].";
-  GTEST_CHECK_(begin <= end && end <= size)
-      << "Invalid shuffle range finish " << end << ": must be in range ["
-      << begin << ", " << size << "].";
-
-  // Fisher-Yates shuffle, from
-  // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
-  for (int range_width = end - begin; range_width >= 2; range_width--) {
-    const int last_in_range = begin + range_width - 1;
-    const int selected =
-        begin +
-        static_cast<int>(random->Generate(static_cast<uint32_t>(range_width)));
-    std::swap((*v)[static_cast<size_t>(selected)],
-              (*v)[static_cast<size_t>(last_in_range)]);
-  }
-}
-
-// Performs an in-place shuffle of the vector's elements.
-template <typename E>
-inline void Shuffle(internal::Random* random, std::vector<E>* v) {
-  ShuffleRange(random, 0, static_cast<int>(v->size()), v);
-}
-
-// A function for deleting an object.  Handy for being used as a
-// functor.
-template <typename T>
-static void Delete(T* x) {
-  delete x;
-}
-
-// A predicate that checks the key of a TestProperty against a known key.
-//
-// TestPropertyKeyIs is copyable.
-class TestPropertyKeyIs {
- public:
-  // Constructor.
-  //
-  // TestPropertyKeyIs has NO default constructor.
-  explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
-
-  // Returns true if and only if the test name of test property matches on key_.
-  bool operator()(const TestProperty& test_property) const {
-    return test_property.key() == key_;
-  }
-
- private:
-  std::string key_;
-};
-
-// Class UnitTestOptions.
-//
-// This class contains functions for processing options the user
-// specifies when running the tests.  It has only static members.
-//
-// In most cases, the user can specify an option using either an
-// environment variable or a command line flag.  E.g. you can set the
-// test filter using either GTEST_FILTER or --gtest_filter.  If both
-// the variable and the flag are present, the latter overrides the
-// former.
-class GTEST_API_ UnitTestOptions {
- public:
-  // Functions for processing the gtest_output flag.
-
-  // Returns the output format, or "" for normal printed output.
-  static std::string GetOutputFormat();
-
-  // Returns the absolute path of the requested output file, or the
-  // default (test_detail.xml in the original working directory) if
-  // none was explicitly specified.
-  static std::string GetAbsolutePathToOutputFile();
-
-  // Functions for processing the gtest_filter flag.
-
-  // Returns true if and only if the user-specified filter matches the test
-  // suite name and the test name.
-  static bool FilterMatchesTest(const std::string& test_suite_name,
-                                const std::string& test_name);
-
-#if GTEST_OS_WINDOWS
-  // Function for supporting the gtest_catch_exception flag.
-
-  // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
-  // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
-  // This function is useful as an __except condition.
-  static int GTestShouldProcessSEH(DWORD exception_code);
-#endif  // GTEST_OS_WINDOWS
-
-  // Returns true if "name" matches the ':' separated list of glob-style
-  // filters in "filter".
-  static bool MatchesFilter(const std::string& name, const char* filter);
-};
-
-// Returns the current application's name, removing directory path if that
-// is present.  Used by UnitTestOptions::GetOutputFile.
-GTEST_API_ FilePath GetCurrentExecutableName();
-
-// The role interface for getting the OS stack trace as a string.
-class OsStackTraceGetterInterface {
- public:
-  OsStackTraceGetterInterface() {}
-  virtual ~OsStackTraceGetterInterface() {}
-
-  // Returns the current OS stack trace as an std::string.  Parameters:
-  //
-  //   max_depth  - the maximum number of stack frames to be included
-  //                in the trace.
-  //   skip_count - the number of top frames to be skipped; doesn't count
-  //                against max_depth.
-  virtual std::string CurrentStackTrace(int max_depth, int skip_count) = 0;
-
-  // UponLeavingGTest() should be called immediately before Google Test calls
-  // user code. It saves some information about the current stack that
-  // CurrentStackTrace() will use to find and hide Google Test stack frames.
-  virtual void UponLeavingGTest() = 0;
-
-  // This string is inserted in place of stack frames that are part of
-  // Google Test's implementation.
-  static const char* const kElidedFramesMarker;
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
-};
-
-// A working implementation of the OsStackTraceGetterInterface interface.
-class OsStackTraceGetter : public OsStackTraceGetterInterface {
- public:
-  OsStackTraceGetter() {}
-
-  std::string CurrentStackTrace(int max_depth, int skip_count) override;
-  void UponLeavingGTest() override;
-
- private:
-#if GTEST_HAS_ABSL
-  Mutex mutex_;  // Protects all internal state.
-
-  // We save the stack frame below the frame that calls user code.
-  // We do this because the address of the frame immediately below
-  // the user code changes between the call to UponLeavingGTest()
-  // and any calls to the stack trace code from within the user code.
-  void* caller_frame_ = nullptr;
-#endif  // GTEST_HAS_ABSL
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
-};
-
-// Information about a Google Test trace point.
-struct TraceInfo {
-  const char* file;
-  int line;
-  std::string message;
-};
-
-// This is the default global test part result reporter used in UnitTestImpl.
-// This class should only be used by UnitTestImpl.
-class DefaultGlobalTestPartResultReporter
-  : public TestPartResultReporterInterface {
- public:
-  explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
-  // Implements the TestPartResultReporterInterface. Reports the test part
-  // result in the current test.
-  void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
-  UnitTestImpl* const unit_test_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
-};
-
-// This is the default per thread test part result reporter used in
-// UnitTestImpl. This class should only be used by UnitTestImpl.
-class DefaultPerThreadTestPartResultReporter
-    : public TestPartResultReporterInterface {
- public:
-  explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
-  // Implements the TestPartResultReporterInterface. The implementation just
-  // delegates to the current global test part result reporter of *unit_test_.
-  void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
-  UnitTestImpl* const unit_test_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
-};
-
-// The private implementation of the UnitTest class.  We don't protect
-// the methods under a mutex, as this class is not accessible by a
-// user and the UnitTest class that delegates work to this class does
-// proper locking.
-class GTEST_API_ UnitTestImpl {
- public:
-  explicit UnitTestImpl(UnitTest* parent);
-  virtual ~UnitTestImpl();
-
-  // There are two different ways to register your own TestPartResultReporter.
-  // You can register your own repoter to listen either only for test results
-  // from the current thread or for results from all threads.
-  // By default, each per-thread test result repoter just passes a new
-  // TestPartResult to the global test result reporter, which registers the
-  // test part result for the currently running test.
-
-  // Returns the global test part result reporter.
-  TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
-
-  // Sets the global test part result reporter.
-  void SetGlobalTestPartResultReporter(
-      TestPartResultReporterInterface* reporter);
-
-  // Returns the test part result reporter for the current thread.
-  TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
-
-  // Sets the test part result reporter for the current thread.
-  void SetTestPartResultReporterForCurrentThread(
-      TestPartResultReporterInterface* reporter);
-
-  // Gets the number of successful test suites.
-  int successful_test_suite_count() const;
-
-  // Gets the number of failed test suites.
-  int failed_test_suite_count() const;
-
-  // Gets the number of all test suites.
-  int total_test_suite_count() const;
-
-  // Gets the number of all test suites that contain at least one test
-  // that should run.
-  int test_suite_to_run_count() const;
-
-  // Gets the number of successful tests.
-  int successful_test_count() const;
-
-  // Gets the number of skipped tests.
-  int skipped_test_count() const;
-
-  // Gets the number of failed tests.
-  int failed_test_count() const;
-
-  // Gets the number of disabled tests that will be reported in the XML report.
-  int reportable_disabled_test_count() const;
-
-  // Gets the number of disabled tests.
-  int disabled_test_count() const;
-
-  // Gets the number of tests to be printed in the XML report.
-  int reportable_test_count() const;
-
-  // Gets the number of all tests.
-  int total_test_count() const;
-
-  // Gets the number of tests that should run.
-  int test_to_run_count() const;
-
-  // Gets the time of the test program start, in ms from the start of the
-  // UNIX epoch.
-  TimeInMillis start_timestamp() const { return start_timestamp_; }
-
-  // Gets the elapsed time, in milliseconds.
-  TimeInMillis elapsed_time() const { return elapsed_time_; }
-
-  // Returns true if and only if the unit test passed (i.e. all test suites
-  // passed).
-  bool Passed() const { return !Failed(); }
-
-  // Returns true if and only if the unit test failed (i.e. some test suite
-  // failed or something outside of all tests failed).
-  bool Failed() const {
-    return failed_test_suite_count() > 0 || ad_hoc_test_result()->Failed();
-  }
-
-  // Gets the i-th test suite among all the test suites. i can range from 0 to
-  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
-  const TestSuite* GetTestSuite(int i) const {
-    const int index = GetElementOr(test_suite_indices_, i, -1);
-    return index < 0 ? nullptr : test_suites_[static_cast<size_t>(i)];
-  }
-
-  //  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  const TestCase* GetTestCase(int i) const { return GetTestSuite(i); }
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Gets the i-th test suite among all the test suites. i can range from 0 to
-  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
-  TestSuite* GetMutableSuiteCase(int i) {
-    const int index = GetElementOr(test_suite_indices_, i, -1);
-    return index < 0 ? nullptr : test_suites_[static_cast<size_t>(index)];
-  }
-
-  // Provides access to the event listener list.
-  TestEventListeners* listeners() { return &listeners_; }
-
-  // Returns the TestResult for the test that's currently running, or
-  // the TestResult for the ad hoc test if no test is running.
-  TestResult* current_test_result();
-
-  // Returns the TestResult for the ad hoc test.
-  const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
-
-  // Sets the OS stack trace getter.
-  //
-  // Does nothing if the input and the current OS stack trace getter
-  // are the same; otherwise, deletes the old getter and makes the
-  // input the current getter.
-  void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
-
-  // Returns the current OS stack trace getter if it is not NULL;
-  // otherwise, creates an OsStackTraceGetter, makes it the current
-  // getter, and returns it.
-  OsStackTraceGetterInterface* os_stack_trace_getter();
-
-  // Returns the current OS stack trace as an std::string.
-  //
-  // The maximum number of stack frames to be included is specified by
-  // the gtest_stack_trace_depth flag.  The skip_count parameter
-  // specifies the number of top frames to be skipped, which doesn't
-  // count against the number of frames to be included.
-  //
-  // For example, if Foo() calls Bar(), which in turn calls
-  // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
-  // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
-  std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
-
-  // Finds and returns a TestSuite with the given name.  If one doesn't
-  // exist, creates one and returns it.
-  //
-  // Arguments:
-  //
-  //   test_suite_name: name of the test suite
-  //   type_param:      the name of the test's type parameter, or NULL if
-  //                    this is not a typed or a type-parameterized test.
-  //   set_up_tc:       pointer to the function that sets up the test suite
-  //   tear_down_tc:    pointer to the function that tears down the test suite
-  TestSuite* GetTestSuite(const char* test_suite_name, const char* type_param,
-                          internal::SetUpTestSuiteFunc set_up_tc,
-                          internal::TearDownTestSuiteFunc tear_down_tc);
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  TestCase* GetTestCase(const char* test_case_name, const char* type_param,
-                        internal::SetUpTestSuiteFunc set_up_tc,
-                        internal::TearDownTestSuiteFunc tear_down_tc) {
-    return GetTestSuite(test_case_name, type_param, set_up_tc, tear_down_tc);
-  }
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Adds a TestInfo to the unit test.
-  //
-  // Arguments:
-  //
-  //   set_up_tc:    pointer to the function that sets up the test suite
-  //   tear_down_tc: pointer to the function that tears down the test suite
-  //   test_info:    the TestInfo object
-  void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc,
-                   internal::TearDownTestSuiteFunc tear_down_tc,
-                   TestInfo* test_info) {
-#if GTEST_HAS_DEATH_TEST
-    // In order to support thread-safe death tests, we need to
-    // remember the original working directory when the test program
-    // was first invoked.  We cannot do this in RUN_ALL_TESTS(), as
-    // the user may have changed the current directory before calling
-    // RUN_ALL_TESTS().  Therefore we capture the current directory in
-    // AddTestInfo(), which is called to register a TEST or TEST_F
-    // before main() is reached.
-    if (original_working_dir_.IsEmpty()) {
-      original_working_dir_.Set(FilePath::GetCurrentDir());
-      GTEST_CHECK_(!original_working_dir_.IsEmpty())
-          << "Failed to get the current working directory.";
-    }
-#endif  // GTEST_HAS_DEATH_TEST
-
-    GetTestSuite(test_info->test_suite_name(), test_info->type_param(),
-                 set_up_tc, tear_down_tc)
-        ->AddTestInfo(test_info);
-  }
-
-  // Returns ParameterizedTestSuiteRegistry object used to keep track of
-  // value-parameterized tests and instantiate and register them.
-  internal::ParameterizedTestSuiteRegistry& parameterized_test_registry() {
-    return parameterized_test_registry_;
-  }
-
-  std::set<std::string>* ignored_parameterized_test_suites() {
-    return &ignored_parameterized_test_suites_;
-  }
-
-  // Returns TypeParameterizedTestSuiteRegistry object used to keep track of
-  // type-parameterized tests and instantiations of them.
-  internal::TypeParameterizedTestSuiteRegistry&
-  type_parameterized_test_registry() {
-    return type_parameterized_test_registry_;
-  }
-
-  // Sets the TestSuite object for the test that's currently running.
-  void set_current_test_suite(TestSuite* a_current_test_suite) {
-    current_test_suite_ = a_current_test_suite;
-  }
-
-  // Sets the TestInfo object for the test that's currently running.  If
-  // current_test_info is NULL, the assertion results will be stored in
-  // ad_hoc_test_result_.
-  void set_current_test_info(TestInfo* a_current_test_info) {
-    current_test_info_ = a_current_test_info;
-  }
-
-  // Registers all parameterized tests defined using TEST_P and
-  // INSTANTIATE_TEST_SUITE_P, creating regular tests for each test/parameter
-  // combination. This method can be called more then once; it has guards
-  // protecting from registering the tests more then once.  If
-  // value-parameterized tests are disabled, RegisterParameterizedTests is
-  // present but does nothing.
-  void RegisterParameterizedTests();
-
-  // Runs all tests in this UnitTest object, prints the result, and
-  // returns true if all tests are successful.  If any exception is
-  // thrown during a test, this test is considered to be failed, but
-  // the rest of the tests will still be run.
-  bool RunAllTests();
-
-  // Clears the results of all tests, except the ad hoc tests.
-  void ClearNonAdHocTestResult() {
-    ForEach(test_suites_, TestSuite::ClearTestSuiteResult);
-  }
-
-  // Clears the results of ad-hoc test assertions.
-  void ClearAdHocTestResult() {
-    ad_hoc_test_result_.Clear();
-  }
-
-  // Adds a TestProperty to the current TestResult object when invoked in a
-  // context of a test or a test suite, or to the global property set. If the
-  // result already contains a property with the same key, the value will be
-  // updated.
-  void RecordProperty(const TestProperty& test_property);
-
-  enum ReactionToSharding {
-    HONOR_SHARDING_PROTOCOL,
-    IGNORE_SHARDING_PROTOCOL
-  };
-
-  // Matches the full name of each test against the user-specified
-  // filter to decide whether the test should run, then records the
-  // result in each TestSuite and TestInfo object.
-  // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
-  // based on sharding variables in the environment.
-  // Returns the number of tests that should run.
-  int FilterTests(ReactionToSharding shard_tests);
-
-  // Prints the names of the tests matching the user-specified filter flag.
-  void ListTestsMatchingFilter();
-
-  const TestSuite* current_test_suite() const { return current_test_suite_; }
-  TestInfo* current_test_info() { return current_test_info_; }
-  const TestInfo* current_test_info() const { return current_test_info_; }
-
-  // Returns the vector of environments that need to be set-up/torn-down
-  // before/after the tests are run.
-  std::vector<Environment*>& environments() { return environments_; }
-
-  // Getters for the per-thread Google Test trace stack.
-  std::vector<TraceInfo>& gtest_trace_stack() {
-    return *(gtest_trace_stack_.pointer());
-  }
-  const std::vector<TraceInfo>& gtest_trace_stack() const {
-    return gtest_trace_stack_.get();
-  }
-
-#if GTEST_HAS_DEATH_TEST
-  void InitDeathTestSubprocessControlInfo() {
-    internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
-  }
-  // Returns a pointer to the parsed --gtest_internal_run_death_test
-  // flag, or NULL if that flag was not specified.
-  // This information is useful only in a death test child process.
-  // Must not be called before a call to InitGoogleTest.
-  const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
-    return internal_run_death_test_flag_.get();
-  }
-
-  // Returns a pointer to the current death test factory.
-  internal::DeathTestFactory* death_test_factory() {
-    return death_test_factory_.get();
-  }
-
-  void SuppressTestEventsIfInSubprocess();
-
-  friend class ReplaceDeathTestFactory;
-#endif  // GTEST_HAS_DEATH_TEST
-
-  // Initializes the event listener performing XML output as specified by
-  // UnitTestOptions. Must not be called before InitGoogleTest.
-  void ConfigureXmlOutput();
-
-#if GTEST_CAN_STREAM_RESULTS_
-  // Initializes the event listener for streaming test results to a socket.
-  // Must not be called before InitGoogleTest.
-  void ConfigureStreamingOutput();
-#endif
-
-  // Performs initialization dependent upon flag values obtained in
-  // ParseGoogleTestFlagsOnly.  Is called from InitGoogleTest after the call to
-  // ParseGoogleTestFlagsOnly.  In case a user neglects to call InitGoogleTest
-  // this function is also called from RunAllTests.  Since this function can be
-  // called more than once, it has to be idempotent.
-  void PostFlagParsingInit();
-
-  // Gets the random seed used at the start of the current test iteration.
-  int random_seed() const { return random_seed_; }
-
-  // Gets the random number generator.
-  internal::Random* random() { return &random_; }
-
-  // Shuffles all test suites, and the tests within each test suite,
-  // making sure that death tests are still run first.
-  void ShuffleTests();
-
-  // Restores the test suites and tests to their order before the first shuffle.
-  void UnshuffleTests();
-
-  // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
-  // UnitTest::Run() starts.
-  bool catch_exceptions() const { return catch_exceptions_; }
-
- private:
-  friend class ::testing::UnitTest;
-
-  // Used by UnitTest::Run() to capture the state of
-  // GTEST_FLAG(catch_exceptions) at the moment it starts.
-  void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
-
-  // The UnitTest object that owns this implementation object.
-  UnitTest* const parent_;
-
-  // The working directory when the first TEST() or TEST_F() was
-  // executed.
-  internal::FilePath original_working_dir_;
-
-  // The default test part result reporters.
-  DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
-  DefaultPerThreadTestPartResultReporter
-      default_per_thread_test_part_result_reporter_;
-
-  // Points to (but doesn't own) the global test part result reporter.
-  TestPartResultReporterInterface* global_test_part_result_repoter_;
-
-  // Protects read and write access to global_test_part_result_reporter_.
-  internal::Mutex global_test_part_result_reporter_mutex_;
-
-  // Points to (but doesn't own) the per-thread test part result reporter.
-  internal::ThreadLocal<TestPartResultReporterInterface*>
-      per_thread_test_part_result_reporter_;
-
-  // The vector of environments that need to be set-up/torn-down
-  // before/after the tests are run.
-  std::vector<Environment*> environments_;
-
-  // The vector of TestSuites in their original order.  It owns the
-  // elements in the vector.
-  std::vector<TestSuite*> test_suites_;
-
-  // Provides a level of indirection for the test suite list to allow
-  // easy shuffling and restoring the test suite order.  The i-th
-  // element of this vector is the index of the i-th test suite in the
-  // shuffled order.
-  std::vector<int> test_suite_indices_;
-
-  // ParameterizedTestRegistry object used to register value-parameterized
-  // tests.
-  internal::ParameterizedTestSuiteRegistry parameterized_test_registry_;
-  internal::TypeParameterizedTestSuiteRegistry
-      type_parameterized_test_registry_;
-
-  // The set holding the name of parameterized
-  // test suites that may go uninstantiated.
-  std::set<std::string> ignored_parameterized_test_suites_;
-
-  // Indicates whether RegisterParameterizedTests() has been called already.
-  bool parameterized_tests_registered_;
-
-  // Index of the last death test suite registered.  Initially -1.
-  int last_death_test_suite_;
-
-  // This points to the TestSuite for the currently running test.  It
-  // changes as Google Test goes through one test suite after another.
-  // When no test is running, this is set to NULL and Google Test
-  // stores assertion results in ad_hoc_test_result_.  Initially NULL.
-  TestSuite* current_test_suite_;
-
-  // This points to the TestInfo for the currently running test.  It
-  // changes as Google Test goes through one test after another.  When
-  // no test is running, this is set to NULL and Google Test stores
-  // assertion results in ad_hoc_test_result_.  Initially NULL.
-  TestInfo* current_test_info_;
-
-  // Normally, a user only writes assertions inside a TEST or TEST_F,
-  // or inside a function called by a TEST or TEST_F.  Since Google
-  // Test keeps track of which test is current running, it can
-  // associate such an assertion with the test it belongs to.
-  //
-  // If an assertion is encountered when no TEST or TEST_F is running,
-  // Google Test attributes the assertion result to an imaginary "ad hoc"
-  // test, and records the result in ad_hoc_test_result_.
-  TestResult ad_hoc_test_result_;
-
-  // The list of event listeners that can be used to track events inside
-  // Google Test.
-  TestEventListeners listeners_;
-
-  // The OS stack trace getter.  Will be deleted when the UnitTest
-  // object is destructed.  By default, an OsStackTraceGetter is used,
-  // but the user can set this field to use a custom getter if that is
-  // desired.
-  OsStackTraceGetterInterface* os_stack_trace_getter_;
-
-  // True if and only if PostFlagParsingInit() has been called.
-  bool post_flag_parse_init_performed_;
-
-  // The random number seed used at the beginning of the test run.
-  int random_seed_;
-
-  // Our random number generator.
-  internal::Random random_;
-
-  // The time of the test program start, in ms from the start of the
-  // UNIX epoch.
-  TimeInMillis start_timestamp_;
-
-  // How long the test took to run, in milliseconds.
-  TimeInMillis elapsed_time_;
-
-#if GTEST_HAS_DEATH_TEST
-  // The decomposed components of the gtest_internal_run_death_test flag,
-  // parsed when RUN_ALL_TESTS is called.
-  std::unique_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
-  std::unique_ptr<internal::DeathTestFactory> death_test_factory_;
-#endif  // GTEST_HAS_DEATH_TEST
-
-  // A per-thread stack of traces created by the SCOPED_TRACE() macro.
-  internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
-
-  // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
-  // starts.
-  bool catch_exceptions_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
-};  // class UnitTestImpl
-
-// Convenience function for accessing the global UnitTest
-// implementation object.
-inline UnitTestImpl* GetUnitTestImpl() {
-  return UnitTest::GetInstance()->impl();
-}
-
-#if GTEST_USES_SIMPLE_RE
-
-// Internal helper functions for implementing the simple regular
-// expression matcher.
-GTEST_API_ bool IsInSet(char ch, const char* str);
-GTEST_API_ bool IsAsciiDigit(char ch);
-GTEST_API_ bool IsAsciiPunct(char ch);
-GTEST_API_ bool IsRepeat(char ch);
-GTEST_API_ bool IsAsciiWhiteSpace(char ch);
-GTEST_API_ bool IsAsciiWordChar(char ch);
-GTEST_API_ bool IsValidEscape(char ch);
-GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
-GTEST_API_ bool ValidateRegex(const char* regex);
-GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
-GTEST_API_ bool MatchRepetitionAndRegexAtHead(
-    bool escaped, char ch, char repeat, const char* regex, const char* str);
-GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
-
-#endif  // GTEST_USES_SIMPLE_RE
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
-
-#if GTEST_HAS_DEATH_TEST
-
-// Returns the message describing the last system error, regardless of the
-// platform.
-GTEST_API_ std::string GetLastErrnoDescription();
-
-// Attempts to parse a string into a positive integer pointed to by the
-// number parameter.  Returns true if that is possible.
-// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
-// it here.
-template <typename Integer>
-bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
-  // Fail fast if the given string does not begin with a digit;
-  // this bypasses strtoXXX's "optional leading whitespace and plus
-  // or minus sign" semantics, which are undesirable here.
-  if (str.empty() || !IsDigit(str[0])) {
-    return false;
-  }
-  errno = 0;
-
-  char* end;
-  // BiggestConvertible is the largest integer type that system-provided
-  // string-to-number conversion routines can return.
-  using BiggestConvertible = unsigned long long;  // NOLINT
-
-  const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);  // NOLINT
-  const bool parse_success = *end == '\0' && errno == 0;
-
-  GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
-
-  const Integer result = static_cast<Integer>(parsed);
-  if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
-    *number = result;
-    return true;
-  }
-  return false;
-}
-#endif  // GTEST_HAS_DEATH_TEST
-
-// TestResult contains some private methods that should be hidden from
-// Google Test user but are required for testing. This class allow our tests
-// to access them.
-//
-// This class is supplied only for the purpose of testing Google Test's own
-// constructs. Do not use it in user tests, either directly or indirectly.
-class TestResultAccessor {
- public:
-  static void RecordProperty(TestResult* test_result,
-                             const std::string& xml_element,
-                             const TestProperty& property) {
-    test_result->RecordProperty(xml_element, property);
-  }
-
-  static void ClearTestPartResults(TestResult* test_result) {
-    test_result->ClearTestPartResults();
-  }
-
-  static const std::vector<testing::TestPartResult>& test_part_results(
-      const TestResult& test_result) {
-    return test_result.test_part_results();
-  }
-};
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Streams test results to the given port on the given host machine.
-class StreamingListener : public EmptyTestEventListener {
- public:
-  // Abstract base class for writing strings to a socket.
-  class AbstractSocketWriter {
-   public:
-    virtual ~AbstractSocketWriter() {}
-
-    // Sends a string to the socket.
-    virtual void Send(const std::string& message) = 0;
-
-    // Closes the socket.
-    virtual void CloseConnection() {}
-
-    // Sends a string and a newline to the socket.
-    void SendLn(const std::string& message) { Send(message + "\n"); }
-  };
-
-  // Concrete class for actually writing strings to a socket.
-  class SocketWriter : public AbstractSocketWriter {
-   public:
-    SocketWriter(const std::string& host, const std::string& port)
-        : sockfd_(-1), host_name_(host), port_num_(port) {
-      MakeConnection();
-    }
-
-    ~SocketWriter() override {
-      if (sockfd_ != -1)
-        CloseConnection();
-    }
-
-    // Sends a string to the socket.
-    void Send(const std::string& message) override {
-      GTEST_CHECK_(sockfd_ != -1)
-          << "Send() can be called only when there is a connection.";
-
-      const auto len = static_cast<size_t>(message.length());
-      if (write(sockfd_, message.c_str(), len) != static_cast<ssize_t>(len)) {
-        GTEST_LOG_(WARNING)
-            << "stream_result_to: failed to stream to "
-            << host_name_ << ":" << port_num_;
-      }
-    }
-
-   private:
-    // Creates a client socket and connects to the server.
-    void MakeConnection();
-
-    // Closes the socket.
-    void CloseConnection() override {
-      GTEST_CHECK_(sockfd_ != -1)
-          << "CloseConnection() can be called only when there is a connection.";
-
-      close(sockfd_);
-      sockfd_ = -1;
-    }
-
-    int sockfd_;  // socket file descriptor
-    const std::string host_name_;
-    const std::string port_num_;
-
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
-  };  // class SocketWriter
-
-  // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
-  static std::string UrlEncode(const char* str);
-
-  StreamingListener(const std::string& host, const std::string& port)
-      : socket_writer_(new SocketWriter(host, port)) {
-    Start();
-  }
-
-  explicit StreamingListener(AbstractSocketWriter* socket_writer)
-      : socket_writer_(socket_writer) { Start(); }
-
-  void OnTestProgramStart(const UnitTest& /* unit_test */) override {
-    SendLn("event=TestProgramStart");
-  }
-
-  void OnTestProgramEnd(const UnitTest& unit_test) override {
-    // Note that Google Test current only report elapsed time for each
-    // test iteration, not for the entire test program.
-    SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
-
-    // Notify the streaming server to stop.
-    socket_writer_->CloseConnection();
-  }
-
-  void OnTestIterationStart(const UnitTest& /* unit_test */,
-                            int iteration) override {
-    SendLn("event=TestIterationStart&iteration=" +
-           StreamableToString(iteration));
-  }
-
-  void OnTestIterationEnd(const UnitTest& unit_test,
-                          int /* iteration */) override {
-    SendLn("event=TestIterationEnd&passed=" +
-           FormatBool(unit_test.Passed()) + "&elapsed_time=" +
-           StreamableToString(unit_test.elapsed_time()) + "ms");
-  }
-
-  // Note that "event=TestCaseStart" is a wire format and has to remain
-  // "case" for compatibility
-  void OnTestCaseStart(const TestCase& test_case) override {
-    SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
-  }
-
-  // Note that "event=TestCaseEnd" is a wire format and has to remain
-  // "case" for compatibility
-  void OnTestCaseEnd(const TestCase& test_case) override {
-    SendLn("event=TestCaseEnd&passed=" + FormatBool(test_case.Passed()) +
-           "&elapsed_time=" + StreamableToString(test_case.elapsed_time()) +
-           "ms");
-  }
-
-  void OnTestStart(const TestInfo& test_info) override {
-    SendLn(std::string("event=TestStart&name=") + test_info.name());
-  }
-
-  void OnTestEnd(const TestInfo& test_info) override {
-    SendLn("event=TestEnd&passed=" +
-           FormatBool((test_info.result())->Passed()) +
-           "&elapsed_time=" +
-           StreamableToString((test_info.result())->elapsed_time()) + "ms");
-  }
-
-  void OnTestPartResult(const TestPartResult& test_part_result) override {
-    const char* file_name = test_part_result.file_name();
-    if (file_name == nullptr) file_name = "";
-    SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
-           "&line=" + StreamableToString(test_part_result.line_number()) +
-           "&message=" + UrlEncode(test_part_result.message()));
-  }
-
- private:
-  // Sends the given message and a newline to the socket.
-  void SendLn(const std::string& message) { socket_writer_->SendLn(message); }
-
-  // Called at the start of streaming to notify the receiver what
-  // protocol we are using.
-  void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
-
-  std::string FormatBool(bool value) { return value ? "1" : "0"; }
-
-  const std::unique_ptr<AbstractSocketWriter> socket_writer_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
-};  // class StreamingListener
-
-#endif  // GTEST_CAN_STREAM_RESULTS_
-
-}  // namespace internal
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-#endif  // GOOGLETEST_SRC_GTEST_INTERNAL_INL_H_
-
-#if GTEST_OS_WINDOWS
-# define vsnprintf _vsnprintf
-#endif  // GTEST_OS_WINDOWS
-
-#if GTEST_OS_MAC
-#ifndef GTEST_OS_IOS
-#include <crt_externs.h>
-#endif
-#endif
-
-#if GTEST_HAS_ABSL
-#include "absl/debugging/failure_signal_handler.h"
-#include "absl/debugging/stacktrace.h"
-#include "absl/debugging/symbolize.h"
-#include "absl/strings/str_cat.h"
-#endif  // GTEST_HAS_ABSL
-
-namespace testing {
-
-using internal::CountIf;
-using internal::ForEach;
-using internal::GetElementOr;
-using internal::Shuffle;
-
-// Constants.
-
-// A test whose test suite name or test name matches this filter is
-// disabled and not run.
-static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
-
-// A test suite whose name matches this filter is considered a death
-// test suite and will be run before test suites whose name doesn't
-// match this filter.
-static const char kDeathTestSuiteFilter[] = "*DeathTest:*DeathTest/*";
-
-// A test filter that matches everything.
-static const char kUniversalFilter[] = "*";
-
-// The default output format.
-static const char kDefaultOutputFormat[] = "xml";
-// The default output file.
-static const char kDefaultOutputFile[] = "test_detail";
-
-// The environment variable name for the test shard index.
-static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
-// The environment variable name for the total number of test shards.
-static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
-// The environment variable name for the test shard status file.
-static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
-
-namespace internal {
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-const char kStackTraceMarker[] = "\nStack trace:\n";
-
-// g_help_flag is true if and only if the --help flag or an equivalent form
-// is specified on the command line.
-bool g_help_flag = false;
-
-// Utilty function to Open File for Writing
-static FILE* OpenFileForWriting(const std::string& output_file) {
-  FILE* fileout = nullptr;
-  FilePath output_file_path(output_file);
-  FilePath output_dir(output_file_path.RemoveFileName());
-
-  if (output_dir.CreateDirectoriesRecursively()) {
-    fileout = posix::FOpen(output_file.c_str(), "w");
-  }
-  if (fileout == nullptr) {
-    GTEST_LOG_(FATAL) << "Unable to open file \"" << output_file << "\"";
-  }
-  return fileout;
-}
-
-}  // namespace internal
-
-// Bazel passes in the argument to '--test_filter' via the TESTBRIDGE_TEST_ONLY
-// environment variable.
-static const char* GetDefaultFilter() {
-  const char* const testbridge_test_only =
-      internal::posix::GetEnv("TESTBRIDGE_TEST_ONLY");
-  if (testbridge_test_only != nullptr) {
-    return testbridge_test_only;
-  }
-  return kUniversalFilter;
-}
-
-// Bazel passes in the argument to '--test_runner_fail_fast' via the
-// TESTBRIDGE_TEST_RUNNER_FAIL_FAST environment variable.
-static bool GetDefaultFailFast() {
-  const char* const testbridge_test_runner_fail_fast =
-      internal::posix::GetEnv("TESTBRIDGE_TEST_RUNNER_FAIL_FAST");
-  if (testbridge_test_runner_fail_fast != nullptr) {
-    return strcmp(testbridge_test_runner_fail_fast, "1") == 0;
-  }
-  return false;
-}
-
-GTEST_DEFINE_bool_(
-    fail_fast, internal::BoolFromGTestEnv("fail_fast", GetDefaultFailFast()),
-    "True if and only if a test failure should stop further test execution.");
-
-GTEST_DEFINE_bool_(
-    also_run_disabled_tests,
-    internal::BoolFromGTestEnv("also_run_disabled_tests", false),
-    "Run disabled tests too, in addition to the tests normally being run.");
-
-GTEST_DEFINE_bool_(
-    break_on_failure, internal::BoolFromGTestEnv("break_on_failure", false),
-    "True if and only if a failed assertion should be a debugger "
-    "break-point.");
-
-GTEST_DEFINE_bool_(catch_exceptions,
-                   internal::BoolFromGTestEnv("catch_exceptions", true),
-                   "True if and only if " GTEST_NAME_
-                   " should catch exceptions and treat them as test failures.");
-
-GTEST_DEFINE_string_(
-    color,
-    internal::StringFromGTestEnv("color", "auto"),
-    "Whether to use colors in the output.  Valid values: yes, no, "
-    "and auto.  'auto' means to use colors if the output is "
-    "being sent to a terminal and the TERM environment variable "
-    "is set to a terminal type that supports colors.");
-
-GTEST_DEFINE_string_(
-    filter,
-    internal::StringFromGTestEnv("filter", GetDefaultFilter()),
-    "A colon-separated list of glob (not regex) patterns "
-    "for filtering the tests to run, optionally followed by a "
-    "'-' and a : separated list of negative patterns (tests to "
-    "exclude).  A test is run if it matches one of the positive "
-    "patterns and does not match any of the negative patterns.");
-
-GTEST_DEFINE_bool_(
-    install_failure_signal_handler,
-    internal::BoolFromGTestEnv("install_failure_signal_handler", false),
-    "If true and supported on the current platform, " GTEST_NAME_ " should "
-    "install a signal handler that dumps debugging information when fatal "
-    "signals are raised.");
-
-GTEST_DEFINE_bool_(list_tests, false,
-                   "List all tests without running them.");
-
-// The net priority order after flag processing is thus:
-//   --gtest_output command line flag
-//   GTEST_OUTPUT environment variable
-//   XML_OUTPUT_FILE environment variable
-//   ''
-GTEST_DEFINE_string_(
-    output,
-    internal::StringFromGTestEnv("output",
-      internal::OutputFlagAlsoCheckEnvVar().c_str()),
-    "A format (defaults to \"xml\" but can be specified to be \"json\"), "
-    "optionally followed by a colon and an output file name or directory. "
-    "A directory is indicated by a trailing pathname separator. "
-    "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
-    "If a directory is specified, output files will be created "
-    "within that directory, with file-names based on the test "
-    "executable's name and, if necessary, made unique by adding "
-    "digits.");
-
-GTEST_DEFINE_bool_(
-    brief, internal::BoolFromGTestEnv("brief", false),
-    "True if only test failures should be displayed in text output.");
-
-GTEST_DEFINE_bool_(print_time, internal::BoolFromGTestEnv("print_time", true),
-                   "True if and only if " GTEST_NAME_
-                   " should display elapsed time in text output.");
-
-GTEST_DEFINE_bool_(print_utf8, internal::BoolFromGTestEnv("print_utf8", true),
-                   "True if and only if " GTEST_NAME_
-                   " prints UTF8 characters as text.");
-
-GTEST_DEFINE_int32_(
-    random_seed,
-    internal::Int32FromGTestEnv("random_seed", 0),
-    "Random number seed to use when shuffling test orders.  Must be in range "
-    "[1, 99999], or 0 to use a seed based on the current time.");
-
-GTEST_DEFINE_int32_(
-    repeat,
-    internal::Int32FromGTestEnv("repeat", 1),
-    "How many times to repeat each test.  Specify a negative number "
-    "for repeating forever.  Useful for shaking out flaky tests.");
-
-GTEST_DEFINE_bool_(show_internal_stack_frames, false,
-                   "True if and only if " GTEST_NAME_
-                   " should include internal stack frames when "
-                   "printing test failure stack traces.");
-
-GTEST_DEFINE_bool_(shuffle, internal::BoolFromGTestEnv("shuffle", false),
-                   "True if and only if " GTEST_NAME_
-                   " should randomize tests' order on every run.");
-
-GTEST_DEFINE_int32_(
-    stack_trace_depth,
-    internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
-    "The maximum number of stack frames to print when an "
-    "assertion fails.  The valid range is 0 through 100, inclusive.");
-
-GTEST_DEFINE_string_(
-    stream_result_to,
-    internal::StringFromGTestEnv("stream_result_to", ""),
-    "This flag specifies the host name and the port number on which to stream "
-    "test results. Example: \"localhost:555\". The flag is effective only on "
-    "Linux.");
-
-GTEST_DEFINE_bool_(
-    throw_on_failure,
-    internal::BoolFromGTestEnv("throw_on_failure", false),
-    "When this flag is specified, a failed assertion will throw an exception "
-    "if exceptions are enabled or exit the program with a non-zero code "
-    "otherwise. For use with an external test framework.");
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-GTEST_DEFINE_string_(
-    flagfile,
-    internal::StringFromGTestEnv("flagfile", ""),
-    "This flag specifies the flagfile to read command-line flags from.");
-#endif  // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-namespace internal {
-
-// Generates a random number from [0, range), using a Linear
-// Congruential Generator (LCG).  Crashes if 'range' is 0 or greater
-// than kMaxRange.
-uint32_t Random::Generate(uint32_t range) {
-  // These constants are the same as are used in glibc's rand(3).
-  // Use wider types than necessary to prevent unsigned overflow diagnostics.
-  state_ = static_cast<uint32_t>(1103515245ULL*state_ + 12345U) % kMaxRange;
-
-  GTEST_CHECK_(range > 0)
-      << "Cannot generate a number in the range [0, 0).";
-  GTEST_CHECK_(range <= kMaxRange)
-      << "Generation of a number in [0, " << range << ") was requested, "
-      << "but this can only generate numbers in [0, " << kMaxRange << ").";
-
-  // Converting via modulus introduces a bit of downward bias, but
-  // it's simple, and a linear congruential generator isn't too good
-  // to begin with.
-  return state_ % range;
-}
-
-// GTestIsInitialized() returns true if and only if the user has initialized
-// Google Test.  Useful for catching the user mistake of not initializing
-// Google Test before calling RUN_ALL_TESTS().
-static bool GTestIsInitialized() { return GetArgvs().size() > 0; }
-
-// Iterates over a vector of TestSuites, keeping a running sum of the
-// results of calling a given int-returning method on each.
-// Returns the sum.
-static int SumOverTestSuiteList(const std::vector<TestSuite*>& case_list,
-                                int (TestSuite::*method)() const) {
-  int sum = 0;
-  for (size_t i = 0; i < case_list.size(); i++) {
-    sum += (case_list[i]->*method)();
-  }
-  return sum;
-}
-
-// Returns true if and only if the test suite passed.
-static bool TestSuitePassed(const TestSuite* test_suite) {
-  return test_suite->should_run() && test_suite->Passed();
-}
-
-// Returns true if and only if the test suite failed.
-static bool TestSuiteFailed(const TestSuite* test_suite) {
-  return test_suite->should_run() && test_suite->Failed();
-}
-
-// Returns true if and only if test_suite contains at least one test that
-// should run.
-static bool ShouldRunTestSuite(const TestSuite* test_suite) {
-  return test_suite->should_run();
-}
-
-// AssertHelper constructor.
-AssertHelper::AssertHelper(TestPartResult::Type type,
-                           const char* file,
-                           int line,
-                           const char* message)
-    : data_(new AssertHelperData(type, file, line, message)) {
-}
-
-AssertHelper::~AssertHelper() {
-  delete data_;
-}
-
-// Message assignment, for assertion streaming support.
-void AssertHelper::operator=(const Message& message) const {
-  UnitTest::GetInstance()->
-    AddTestPartResult(data_->type, data_->file, data_->line,
-                      AppendUserMessage(data_->message, message),
-                      UnitTest::GetInstance()->impl()
-                      ->CurrentOsStackTraceExceptTop(1)
-                      // Skips the stack frame for this function itself.
-                      );  // NOLINT
-}
-
-namespace {
-
-// When TEST_P is found without a matching INSTANTIATE_TEST_SUITE_P
-// to creates test cases for it, a syntetic test case is
-// inserted to report ether an error or a log message.
-//
-// This configuration bit will likely be removed at some point.
-constexpr bool kErrorOnUninstantiatedParameterizedTest = true;
-constexpr bool kErrorOnUninstantiatedTypeParameterizedTest = true;
-
-// A test that fails at a given file/line location with a given message.
-class FailureTest : public Test {
- public:
-  explicit FailureTest(const CodeLocation& loc, std::string error_message,
-                       bool as_error)
-      : loc_(loc),
-        error_message_(std::move(error_message)),
-        as_error_(as_error) {}
-
-  void TestBody() override {
-    if (as_error_) {
-      AssertHelper(TestPartResult::kNonFatalFailure, loc_.file.c_str(),
-                   loc_.line, "") = Message() << error_message_;
-    } else {
-      std::cout << error_message_ << std::endl;
-    }
-  }
-
- private:
-  const CodeLocation loc_;
-  const std::string error_message_;
-  const bool as_error_;
-};
-
-
-}  // namespace
-
-std::set<std::string>* GetIgnoredParameterizedTestSuites() {
-  return UnitTest::GetInstance()->impl()->ignored_parameterized_test_suites();
-}
-
-// Add a given test_suit to the list of them allow to go un-instantiated.
-MarkAsIgnored::MarkAsIgnored(const char* test_suite) {
-  GetIgnoredParameterizedTestSuites()->insert(test_suite);
-}
-
-// If this parameterized test suite has no instantiations (and that
-// has not been marked as okay), emit a test case reporting that.
-void InsertSyntheticTestCase(const std::string& name, CodeLocation location,
-                             bool has_test_p) {
-  const auto& ignored = *GetIgnoredParameterizedTestSuites();
-  if (ignored.find(name) != ignored.end()) return;
-
-  const char kMissingInstantiation[] =  //
-      " is defined via TEST_P, but never instantiated. None of the test cases "
-      "will run. Either no INSTANTIATE_TEST_SUITE_P is provided or the only "
-      "ones provided expand to nothing."
-      "\n\n"
-      "Ideally, TEST_P definitions should only ever be included as part of "
-      "binaries that intend to use them. (As opposed to, for example, being "
-      "placed in a library that may be linked in to get other utilities.)";
-
-  const char kMissingTestCase[] =  //
-      " is instantiated via INSTANTIATE_TEST_SUITE_P, but no tests are "
-      "defined via TEST_P . No test cases will run."
-      "\n\n"
-      "Ideally, INSTANTIATE_TEST_SUITE_P should only ever be invoked from "
-      "code that always depend on code that provides TEST_P. Failing to do "
-      "so is often an indication of dead code, e.g. the last TEST_P was "
-      "removed but the rest got left behind.";
-
-  std::string message =
-      "Parameterized test suite " + name +
-      (has_test_p ? kMissingInstantiation : kMissingTestCase) +
-      "\n\n"
-      "To suppress this error for this test suite, insert the following line "
-      "(in a non-header) in the namespace it is defined in:"
-      "\n\n"
-      "GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(" + name + ");";
-
-  std::string full_name = "UninstantiatedParameterizedTestSuite<" + name + ">";
-  RegisterTest(  //
-      "GoogleTestVerification", full_name.c_str(),
-      nullptr,  // No type parameter.
-      nullptr,  // No value parameter.
-      location.file.c_str(), location.line, [message, location] {
-        return new FailureTest(location, message,
-                               kErrorOnUninstantiatedParameterizedTest);
-      });
-}
-
-void RegisterTypeParameterizedTestSuite(const char* test_suite_name,
-                                        CodeLocation code_location) {
-  GetUnitTestImpl()->type_parameterized_test_registry().RegisterTestSuite(
-      test_suite_name, code_location);
-}
-
-void RegisterTypeParameterizedTestSuiteInstantiation(const char* case_name) {
-  GetUnitTestImpl()
-      ->type_parameterized_test_registry()
-      .RegisterInstantiation(case_name);
-}
-
-void TypeParameterizedTestSuiteRegistry::RegisterTestSuite(
-    const char* test_suite_name, CodeLocation code_location) {
-  suites_.emplace(std::string(test_suite_name),
-                 TypeParameterizedTestSuiteInfo(code_location));
-}
-
-void TypeParameterizedTestSuiteRegistry::RegisterInstantiation(
-        const char* test_suite_name) {
-  auto it = suites_.find(std::string(test_suite_name));
-  if (it != suites_.end()) {
-    it->second.instantiated = true;
-  } else {
-    GTEST_LOG_(ERROR) << "Unknown type parameterized test suit '"
-                      << test_suite_name << "'";
-  }
-}
-
-void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
-  const auto& ignored = *GetIgnoredParameterizedTestSuites();
-  for (const auto& testcase : suites_) {
-    if (testcase.second.instantiated) continue;
-    if (ignored.find(testcase.first) != ignored.end()) continue;
-
-    std::string message =
-        "Type parameterized test suite " + testcase.first +
-        " is defined via REGISTER_TYPED_TEST_SUITE_P, but never instantiated "
-        "via INSTANTIATE_TYPED_TEST_SUITE_P. None of the test cases will run."
-        "\n\n"
-        "Ideally, TYPED_TEST_P definitions should only ever be included as "
-        "part of binaries that intend to use them. (As opposed to, for "
-        "example, being placed in a library that may be linked in to get other "
-        "utilities.)"
-        "\n\n"
-        "To suppress this error for this test suite, insert the following line "
-        "(in a non-header) in the namespace it is defined in:"
-        "\n\n"
-        "GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(" +
-        testcase.first + ");";
-
-    std::string full_name =
-        "UninstantiatedTypeParameterizedTestSuite<" + testcase.first + ">";
-    RegisterTest(  //
-        "GoogleTestVerification", full_name.c_str(),
-        nullptr,  // No type parameter.
-        nullptr,  // No value parameter.
-        testcase.second.code_location.file.c_str(),
-        testcase.second.code_location.line, [message, testcase] {
-          return new FailureTest(testcase.second.code_location, message,
-                                 kErrorOnUninstantiatedTypeParameterizedTest);
-        });
-  }
-}
-
-// A copy of all command line arguments.  Set by InitGoogleTest().
-static ::std::vector<std::string> g_argvs;
-
-::std::vector<std::string> GetArgvs() {
-#if defined(GTEST_CUSTOM_GET_ARGVS_)
-  // GTEST_CUSTOM_GET_ARGVS_() may return a container of std::string or
-  // ::string. This code converts it to the appropriate type.
-  const auto& custom = GTEST_CUSTOM_GET_ARGVS_();
-  return ::std::vector<std::string>(custom.begin(), custom.end());
-#else   // defined(GTEST_CUSTOM_GET_ARGVS_)
-  return g_argvs;
-#endif  // defined(GTEST_CUSTOM_GET_ARGVS_)
-}
-
-// Returns the current application's name, removing directory path if that
-// is present.
-FilePath GetCurrentExecutableName() {
-  FilePath result;
-
-#if GTEST_OS_WINDOWS || GTEST_OS_OS2
-  result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));
-#else
-  result.Set(FilePath(GetArgvs()[0]));
-#endif  // GTEST_OS_WINDOWS
-
-  return result.RemoveDirectoryName();
-}
-
-// Functions for processing the gtest_output flag.
-
-// Returns the output format, or "" for normal printed output.
-std::string UnitTestOptions::GetOutputFormat() {
-  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
-  const char* const colon = strchr(gtest_output_flag, ':');
-  return (colon == nullptr)
-             ? std::string(gtest_output_flag)
-             : std::string(gtest_output_flag,
-                           static_cast<size_t>(colon - gtest_output_flag));
-}
-
-// Returns the name of the requested output file, or the default if none
-// was explicitly specified.
-std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
-  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
-
-  std::string format = GetOutputFormat();
-  if (format.empty())
-    format = std::string(kDefaultOutputFormat);
-
-  const char* const colon = strchr(gtest_output_flag, ':');
-  if (colon == nullptr)
-    return internal::FilePath::MakeFileName(
-        internal::FilePath(
-            UnitTest::GetInstance()->original_working_dir()),
-        internal::FilePath(kDefaultOutputFile), 0,
-        format.c_str()).string();
-
-  internal::FilePath output_name(colon + 1);
-  if (!output_name.IsAbsolutePath())
-    output_name = internal::FilePath::ConcatPaths(
-        internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
-        internal::FilePath(colon + 1));
-
-  if (!output_name.IsDirectory())
-    return output_name.string();
-
-  internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
-      output_name, internal::GetCurrentExecutableName(),
-      GetOutputFormat().c_str()));
-  return result.string();
-}
-
-// Returns true if and only if the wildcard pattern matches the string. Each
-// pattern consists of regular characters, single-character wildcards (?), and
-// multi-character wildcards (*).
-//
-// This function implements a linear-time string globbing algorithm based on
-// https://research.swtch.com/glob.
-static bool PatternMatchesString(const std::string& name_str,
-                                 const char* pattern, const char* pattern_end) {
-  const char* name = name_str.c_str();
-  const char* const name_begin = name;
-  const char* const name_end = name + name_str.size();
-
-  const char* pattern_next = pattern;
-  const char* name_next = name;
-
-  while (pattern < pattern_end || name < name_end) {
-    if (pattern < pattern_end) {
-      switch (*pattern) {
-        default:  // Match an ordinary character.
-          if (name < name_end && *name == *pattern) {
-            ++pattern;
-            ++name;
-            continue;
-          }
-          break;
-        case '?':  // Match any single character.
-          if (name < name_end) {
-            ++pattern;
-            ++name;
-            continue;
-          }
-          break;
-        case '*':
-          // Match zero or more characters. Start by skipping over the wildcard
-          // and matching zero characters from name. If that fails, restart and
-          // match one more character than the last attempt.
-          pattern_next = pattern;
-          name_next = name + 1;
-          ++pattern;
-          continue;
-      }
-    }
-    // Failed to match a character. Restart if possible.
-    if (name_begin < name_next && name_next <= name_end) {
-      pattern = pattern_next;
-      name = name_next;
-      continue;
-    }
-    return false;
-  }
-  return true;
-}
-
-bool UnitTestOptions::MatchesFilter(const std::string& name_str,
-                                    const char* filter) {
-  // The filter is a list of patterns separated by colons (:).
-  const char* pattern = filter;
-  while (true) {
-    // Find the bounds of this pattern.
-    const char* const next_sep = strchr(pattern, ':');
-    const char* const pattern_end =
-        next_sep != nullptr ? next_sep : pattern + strlen(pattern);
-
-    // Check if this pattern matches name_str.
-    if (PatternMatchesString(name_str, pattern, pattern_end)) {
-      return true;
-    }
-
-    // Give up on this pattern. However, if we found a pattern separator (:),
-    // advance to the next pattern (skipping over the separator) and restart.
-    if (next_sep == nullptr) {
-      return false;
-    }
-    pattern = next_sep + 1;
-  }
-  return true;
-}
-
-// Returns true if and only if the user-specified filter matches the test
-// suite name and the test name.
-bool UnitTestOptions::FilterMatchesTest(const std::string& test_suite_name,
-                                        const std::string& test_name) {
-  const std::string& full_name = test_suite_name + "." + test_name.c_str();
-
-  // Split --gtest_filter at '-', if there is one, to separate into
-  // positive filter and negative filter portions
-  const char* const p = GTEST_FLAG(filter).c_str();
-  const char* const dash = strchr(p, '-');
-  std::string positive;
-  std::string negative;
-  if (dash == nullptr) {
-    positive = GTEST_FLAG(filter).c_str();  // Whole string is a positive filter
-    negative = "";
-  } else {
-    positive = std::string(p, dash);   // Everything up to the dash
-    negative = std::string(dash + 1);  // Everything after the dash
-    if (positive.empty()) {
-      // Treat '-test1' as the same as '*-test1'
-      positive = kUniversalFilter;
-    }
-  }
-
-  // A filter is a colon-separated list of patterns.  It matches a
-  // test if any pattern in it matches the test.
-  return (MatchesFilter(full_name, positive.c_str()) &&
-          !MatchesFilter(full_name, negative.c_str()));
-}
-
-#if GTEST_HAS_SEH
-// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
-// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
-// This function is useful as an __except condition.
-int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
-  // Google Test should handle a SEH exception if:
-  //   1. the user wants it to, AND
-  //   2. this is not a breakpoint exception, AND
-  //   3. this is not a C++ exception (VC++ implements them via SEH,
-  //      apparently).
-  //
-  // SEH exception code for C++ exceptions.
-  // (see http://support.microsoft.com/kb/185294 for more information).
-  const DWORD kCxxExceptionCode = 0xe06d7363;
-
-  bool should_handle = true;
-
-  if (!GTEST_FLAG(catch_exceptions))
-    should_handle = false;
-  else if (exception_code == EXCEPTION_BREAKPOINT)
-    should_handle = false;
-  else if (exception_code == kCxxExceptionCode)
-    should_handle = false;
-
-  return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
-}
-#endif  // GTEST_HAS_SEH
-
-}  // namespace internal
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test.  The 'result' parameter specifies where to report the
-// results. Intercepts only failures from the current thread.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
-    TestPartResultArray* result)
-    : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
-      result_(result) {
-  Init();
-}
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test.  The 'result' parameter specifies where to report the
-// results.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
-    InterceptMode intercept_mode, TestPartResultArray* result)
-    : intercept_mode_(intercept_mode),
-      result_(result) {
-  Init();
-}
-
-void ScopedFakeTestPartResultReporter::Init() {
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
-    old_reporter_ = impl->GetGlobalTestPartResultReporter();
-    impl->SetGlobalTestPartResultReporter(this);
-  } else {
-    old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
-    impl->SetTestPartResultReporterForCurrentThread(this);
-  }
-}
-
-// The d'tor restores the test part result reporter used by Google Test
-// before.
-ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
-    impl->SetGlobalTestPartResultReporter(old_reporter_);
-  } else {
-    impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
-  }
-}
-
-// Increments the test part result count and remembers the result.
-// This method is from the TestPartResultReporterInterface interface.
-void ScopedFakeTestPartResultReporter::ReportTestPartResult(
-    const TestPartResult& result) {
-  result_->Append(result);
-}
-
-namespace internal {
-
-// Returns the type ID of ::testing::Test.  We should always call this
-// instead of GetTypeId< ::testing::Test>() to get the type ID of
-// testing::Test.  This is to work around a suspected linker bug when
-// using Google Test as a framework on Mac OS X.  The bug causes
-// GetTypeId< ::testing::Test>() to return different values depending
-// on whether the call is from the Google Test framework itself or
-// from user test code.  GetTestTypeId() is guaranteed to always
-// return the same value, as it always calls GetTypeId<>() from the
-// gtest.cc, which is within the Google Test framework.
-TypeId GetTestTypeId() {
-  return GetTypeId<Test>();
-}
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library.  This is solely for testing GetTestTypeId().
-extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
-
-// This predicate-formatter checks that 'results' contains a test part
-// failure of the given type and that the failure message contains the
-// given substring.
-static AssertionResult HasOneFailure(const char* /* results_expr */,
-                                     const char* /* type_expr */,
-                                     const char* /* substr_expr */,
-                                     const TestPartResultArray& results,
-                                     TestPartResult::Type type,
-                                     const std::string& substr) {
-  const std::string expected(type == TestPartResult::kFatalFailure ?
-                        "1 fatal failure" :
-                        "1 non-fatal failure");
-  Message msg;
-  if (results.size() != 1) {
-    msg << "Expected: " << expected << "\n"
-        << "  Actual: " << results.size() << " failures";
-    for (int i = 0; i < results.size(); i++) {
-      msg << "\n" << results.GetTestPartResult(i);
-    }
-    return AssertionFailure() << msg;
-  }
-
-  const TestPartResult& r = results.GetTestPartResult(0);
-  if (r.type() != type) {
-    return AssertionFailure() << "Expected: " << expected << "\n"
-                              << "  Actual:\n"
-                              << r;
-  }
-
-  if (strstr(r.message(), substr.c_str()) == nullptr) {
-    return AssertionFailure() << "Expected: " << expected << " containing \""
-                              << substr << "\"\n"
-                              << "  Actual:\n"
-                              << r;
-  }
-
-  return AssertionSuccess();
-}
-
-// The constructor of SingleFailureChecker remembers where to look up
-// test part results, what type of failure we expect, and what
-// substring the failure message should contain.
-SingleFailureChecker::SingleFailureChecker(const TestPartResultArray* results,
-                                           TestPartResult::Type type,
-                                           const std::string& substr)
-    : results_(results), type_(type), substr_(substr) {}
-
-// The destructor of SingleFailureChecker verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring.  If that's not the case, a
-// non-fatal failure will be generated.
-SingleFailureChecker::~SingleFailureChecker() {
-  EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
-}
-
-DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
-    UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
-    const TestPartResult& result) {
-  unit_test_->current_test_result()->AddTestPartResult(result);
-  unit_test_->listeners()->repeater()->OnTestPartResult(result);
-}
-
-DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
-    UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
-    const TestPartResult& result) {
-  unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
-}
-
-// Returns the global test part result reporter.
-TestPartResultReporterInterface*
-UnitTestImpl::GetGlobalTestPartResultReporter() {
-  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
-  return global_test_part_result_repoter_;
-}
-
-// Sets the global test part result reporter.
-void UnitTestImpl::SetGlobalTestPartResultReporter(
-    TestPartResultReporterInterface* reporter) {
-  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
-  global_test_part_result_repoter_ = reporter;
-}
-
-// Returns the test part result reporter for the current thread.
-TestPartResultReporterInterface*
-UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
-  return per_thread_test_part_result_reporter_.get();
-}
-
-// Sets the test part result reporter for the current thread.
-void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
-    TestPartResultReporterInterface* reporter) {
-  per_thread_test_part_result_reporter_.set(reporter);
-}
-
-// Gets the number of successful test suites.
-int UnitTestImpl::successful_test_suite_count() const {
-  return CountIf(test_suites_, TestSuitePassed);
-}
-
-// Gets the number of failed test suites.
-int UnitTestImpl::failed_test_suite_count() const {
-  return CountIf(test_suites_, TestSuiteFailed);
-}
-
-// Gets the number of all test suites.
-int UnitTestImpl::total_test_suite_count() const {
-  return static_cast<int>(test_suites_.size());
-}
-
-// Gets the number of all test suites that contain at least one test
-// that should run.
-int UnitTestImpl::test_suite_to_run_count() const {
-  return CountIf(test_suites_, ShouldRunTestSuite);
-}
-
-// Gets the number of successful tests.
-int UnitTestImpl::successful_test_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::successful_test_count);
-}
-
-// Gets the number of skipped tests.
-int UnitTestImpl::skipped_test_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::skipped_test_count);
-}
-
-// Gets the number of failed tests.
-int UnitTestImpl::failed_test_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::failed_test_count);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTestImpl::reportable_disabled_test_count() const {
-  return SumOverTestSuiteList(test_suites_,
-                              &TestSuite::reportable_disabled_test_count);
-}
-
-// Gets the number of disabled tests.
-int UnitTestImpl::disabled_test_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::disabled_test_count);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTestImpl::reportable_test_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::reportable_test_count);
-}
-
-// Gets the number of all tests.
-int UnitTestImpl::total_test_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::total_test_count);
-}
-
-// Gets the number of tests that should run.
-int UnitTestImpl::test_to_run_count() const {
-  return SumOverTestSuiteList(test_suites_, &TestSuite::test_to_run_count);
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag.  The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
-// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
-std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
-  return os_stack_trace_getter()->CurrentStackTrace(
-      static_cast<int>(GTEST_FLAG(stack_trace_depth)),
-      skip_count + 1
-      // Skips the user-specified number of frames plus this function
-      // itself.
-      );  // NOLINT
-}
-
-// A helper class for measuring elapsed times.
-class Timer {
- public:
-  Timer() : start_(std::chrono::steady_clock::now()) {}
-
-  // Return time elapsed in milliseconds since the timer was created.
-  TimeInMillis Elapsed() {
-    return std::chrono::duration_cast<std::chrono::milliseconds>(
-               std::chrono::steady_clock::now() - start_)
-        .count();
-  }
-
- private:
-  std::chrono::steady_clock::time_point start_;
-};
-
-// Returns a timestamp as milliseconds since the epoch. Note this time may jump
-// around subject to adjustments by the system, to measure elapsed time use
-// Timer instead.
-TimeInMillis GetTimeInMillis() {
-  return std::chrono::duration_cast<std::chrono::milliseconds>(
-             std::chrono::system_clock::now() -
-             std::chrono::system_clock::from_time_t(0))
-      .count();
-}
-
-// Utilities
-
-// class String.
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Creates a UTF-16 wide string from the given ANSI string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the wide string, or NULL if the
-// input is NULL.
-LPCWSTR String::AnsiToUtf16(const char* ansi) {
-  if (!ansi) return nullptr;
-  const int length = strlen(ansi);
-  const int unicode_length =
-      MultiByteToWideChar(CP_ACP, 0, ansi, length, nullptr, 0);
-  WCHAR* unicode = new WCHAR[unicode_length + 1];
-  MultiByteToWideChar(CP_ACP, 0, ansi, length,
-                      unicode, unicode_length);
-  unicode[unicode_length] = 0;
-  return unicode;
-}
-
-// Creates an ANSI string from the given wide string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the ANSI string, or NULL if the
-// input is NULL.
-const char* String::Utf16ToAnsi(LPCWSTR utf16_str)  {
-  if (!utf16_str) return nullptr;
-  const int ansi_length = WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, nullptr,
-                                              0, nullptr, nullptr);
-  char* ansi = new char[ansi_length + 1];
-  WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, ansi, ansi_length, nullptr,
-                      nullptr);
-  ansi[ansi_length] = 0;
-  return ansi;
-}
-
-#endif  // GTEST_OS_WINDOWS_MOBILE
-
-// Compares two C strings.  Returns true if and only if they have the same
-// content.
-//
-// Unlike strcmp(), this function can handle NULL argument(s).  A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CStringEquals(const char * lhs, const char * rhs) {
-  if (lhs == nullptr) return rhs == nullptr;
-
-  if (rhs == nullptr) return false;
-
-  return strcmp(lhs, rhs) == 0;
-}
-
-#if GTEST_HAS_STD_WSTRING
-
-// Converts an array of wide chars to a narrow string using the UTF-8
-// encoding, and streams the result to the given Message object.
-static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
-                                     Message* msg) {
-  for (size_t i = 0; i != length; ) {  // NOLINT
-    if (wstr[i] != L'\0') {
-      *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
-      while (i != length && wstr[i] != L'\0')
-        i++;
-    } else {
-      *msg << '\0';
-      i++;
-    }
-  }
-}
-
-#endif  // GTEST_HAS_STD_WSTRING
-
-void SplitString(const ::std::string& str, char delimiter,
-                 ::std::vector< ::std::string>* dest) {
-  ::std::vector< ::std::string> parsed;
-  ::std::string::size_type pos = 0;
-  while (::testing::internal::AlwaysTrue()) {
-    const ::std::string::size_type colon = str.find(delimiter, pos);
-    if (colon == ::std::string::npos) {
-      parsed.push_back(str.substr(pos));
-      break;
-    } else {
-      parsed.push_back(str.substr(pos, colon - pos));
-      pos = colon + 1;
-    }
-  }
-  dest->swap(parsed);
-}
-
-}  // namespace internal
-
-// Constructs an empty Message.
-// We allocate the stringstream separately because otherwise each use of
-// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
-// stack frame leading to huge stack frames in some cases; gcc does not reuse
-// the stack space.
-Message::Message() : ss_(new ::std::stringstream) {
-  // By default, we want there to be enough precision when printing
-  // a double to a Message.
-  *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
-}
-
-// These two overloads allow streaming a wide C string to a Message
-// using the UTF-8 encoding.
-Message& Message::operator <<(const wchar_t* wide_c_str) {
-  return *this << internal::String::ShowWideCString(wide_c_str);
-}
-Message& Message::operator <<(wchar_t* wide_c_str) {
-  return *this << internal::String::ShowWideCString(wide_c_str);
-}
-
-#if GTEST_HAS_STD_WSTRING
-// Converts the given wide string to a narrow string using the UTF-8
-// encoding, and streams the result to this Message object.
-Message& Message::operator <<(const ::std::wstring& wstr) {
-  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
-  return *this;
-}
-#endif  // GTEST_HAS_STD_WSTRING
-
-// Gets the text streamed to this object so far as an std::string.
-// Each '\0' character in the buffer is replaced with "\\0".
-std::string Message::GetString() const {
-  return internal::StringStreamToString(ss_.get());
-}
-
-// AssertionResult constructors.
-// Used in EXPECT_TRUE/FALSE(assertion_result).
-AssertionResult::AssertionResult(const AssertionResult& other)
-    : success_(other.success_),
-      message_(other.message_.get() != nullptr
-                   ? new ::std::string(*other.message_)
-                   : static_cast< ::std::string*>(nullptr)) {}
-
-// Swaps two AssertionResults.
-void AssertionResult::swap(AssertionResult& other) {
-  using std::swap;
-  swap(success_, other.success_);
-  swap(message_, other.message_);
-}
-
-// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
-AssertionResult AssertionResult::operator!() const {
-  AssertionResult negation(!success_);
-  if (message_.get() != nullptr) negation << *message_;
-  return negation;
-}
-
-// Makes a successful assertion result.
-AssertionResult AssertionSuccess() {
-  return AssertionResult(true);
-}
-
-// Makes a failed assertion result.
-AssertionResult AssertionFailure() {
-  return AssertionResult(false);
-}
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << message.
-AssertionResult AssertionFailure(const Message& message) {
-  return AssertionFailure() << message;
-}
-
-namespace internal {
-
-namespace edit_distance {
-std::vector<EditType> CalculateOptimalEdits(const std::vector<size_t>& left,
-                                            const std::vector<size_t>& right) {
-  std::vector<std::vector<double> > costs(
-      left.size() + 1, std::vector<double>(right.size() + 1));
-  std::vector<std::vector<EditType> > best_move(
-      left.size() + 1, std::vector<EditType>(right.size() + 1));
-
-  // Populate for empty right.
-  for (size_t l_i = 0; l_i < costs.size(); ++l_i) {
-    costs[l_i][0] = static_cast<double>(l_i);
-    best_move[l_i][0] = kRemove;
-  }
-  // Populate for empty left.
-  for (size_t r_i = 1; r_i < costs[0].size(); ++r_i) {
-    costs[0][r_i] = static_cast<double>(r_i);
-    best_move[0][r_i] = kAdd;
-  }
-
-  for (size_t l_i = 0; l_i < left.size(); ++l_i) {
-    for (size_t r_i = 0; r_i < right.size(); ++r_i) {
-      if (left[l_i] == right[r_i]) {
-        // Found a match. Consume it.
-        costs[l_i + 1][r_i + 1] = costs[l_i][r_i];
-        best_move[l_i + 1][r_i + 1] = kMatch;
-        continue;
-      }
-
-      const double add = costs[l_i + 1][r_i];
-      const double remove = costs[l_i][r_i + 1];
-      const double replace = costs[l_i][r_i];
-      if (add < remove && add < replace) {
-        costs[l_i + 1][r_i + 1] = add + 1;
-        best_move[l_i + 1][r_i + 1] = kAdd;
-      } else if (remove < add && remove < replace) {
-        costs[l_i + 1][r_i + 1] = remove + 1;
-        best_move[l_i + 1][r_i + 1] = kRemove;
-      } else {
-        // We make replace a little more expensive than add/remove to lower
-        // their priority.
-        costs[l_i + 1][r_i + 1] = replace + 1.00001;
-        best_move[l_i + 1][r_i + 1] = kReplace;
-      }
-    }
-  }
-
-  // Reconstruct the best path. We do it in reverse order.
-  std::vector<EditType> best_path;
-  for (size_t l_i = left.size(), r_i = right.size(); l_i > 0 || r_i > 0;) {
-    EditType move = best_move[l_i][r_i];
-    best_path.push_back(move);
-    l_i -= move != kAdd;
-    r_i -= move != kRemove;
-  }
-  std::reverse(best_path.begin(), best_path.end());
-  return best_path;
-}
-
-namespace {
-
-// Helper class to convert string into ids with deduplication.
-class InternalStrings {
- public:
-  size_t GetId(const std::string& str) {
-    IdMap::iterator it = ids_.find(str);
-    if (it != ids_.end()) return it->second;
-    size_t id = ids_.size();
-    return ids_[str] = id;
-  }
-
- private:
-  typedef std::map<std::string, size_t> IdMap;
-  IdMap ids_;
-};
-
-}  // namespace
-
-std::vector<EditType> CalculateOptimalEdits(
-    const std::vector<std::string>& left,
-    const std::vector<std::string>& right) {
-  std::vector<size_t> left_ids, right_ids;
-  {
-    InternalStrings intern_table;
-    for (size_t i = 0; i < left.size(); ++i) {
-      left_ids.push_back(intern_table.GetId(left[i]));
-    }
-    for (size_t i = 0; i < right.size(); ++i) {
-      right_ids.push_back(intern_table.GetId(right[i]));
-    }
-  }
-  return CalculateOptimalEdits(left_ids, right_ids);
-}
-
-namespace {
-
-// Helper class that holds the state for one hunk and prints it out to the
-// stream.
-// It reorders adds/removes when possible to group all removes before all
-// adds. It also adds the hunk header before printint into the stream.
-class Hunk {
- public:
-  Hunk(size_t left_start, size_t right_start)
-      : left_start_(left_start),
-        right_start_(right_start),
-        adds_(),
-        removes_(),
-        common_() {}
-
-  void PushLine(char edit, const char* line) {
-    switch (edit) {
-      case ' ':
-        ++common_;
-        FlushEdits();
-        hunk_.push_back(std::make_pair(' ', line));
-        break;
-      case '-':
-        ++removes_;
-        hunk_removes_.push_back(std::make_pair('-', line));
-        break;
-      case '+':
-        ++adds_;
-        hunk_adds_.push_back(std::make_pair('+', line));
-        break;
-    }
-  }
-
-  void PrintTo(std::ostream* os) {
-    PrintHeader(os);
-    FlushEdits();
-    for (std::list<std::pair<char, const char*> >::const_iterator it =
-             hunk_.begin();
-         it != hunk_.end(); ++it) {
-      *os << it->first << it->second << "\n";
-    }
-  }
-
-  bool has_edits() const { return adds_ || removes_; }
-
- private:
-  void FlushEdits() {
-    hunk_.splice(hunk_.end(), hunk_removes_);
-    hunk_.splice(hunk_.end(), hunk_adds_);
-  }
-
-  // Print a unified diff header for one hunk.
-  // The format is
-  //   "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
-  // where the left/right parts are omitted if unnecessary.
-  void PrintHeader(std::ostream* ss) const {
-    *ss << "@@ ";
-    if (removes_) {
-      *ss << "-" << left_start_ << "," << (removes_ + common_);
-    }
-    if (removes_ && adds_) {
-      *ss << " ";
-    }
-    if (adds_) {
-      *ss << "+" << right_start_ << "," << (adds_ + common_);
-    }
-    *ss << " @@\n";
-  }
-
-  size_t left_start_, right_start_;
-  size_t adds_, removes_, common_;
-  std::list<std::pair<char, const char*> > hunk_, hunk_adds_, hunk_removes_;
-};
-
-}  // namespace
-
-// Create a list of diff hunks in Unified diff format.
-// Each hunk has a header generated by PrintHeader above plus a body with
-// lines prefixed with ' ' for no change, '-' for deletion and '+' for
-// addition.
-// 'context' represents the desired unchanged prefix/suffix around the diff.
-// If two hunks are close enough that their contexts overlap, then they are
-// joined into one hunk.
-std::string CreateUnifiedDiff(const std::vector<std::string>& left,
-                              const std::vector<std::string>& right,
-                              size_t context) {
-  const std::vector<EditType> edits = CalculateOptimalEdits(left, right);
-
-  size_t l_i = 0, r_i = 0, edit_i = 0;
-  std::stringstream ss;
-  while (edit_i < edits.size()) {
-    // Find first edit.
-    while (edit_i < edits.size() && edits[edit_i] == kMatch) {
-      ++l_i;
-      ++r_i;
-      ++edit_i;
-    }
-
-    // Find the first line to include in the hunk.
-    const size_t prefix_context = std::min(l_i, context);
-    Hunk hunk(l_i - prefix_context + 1, r_i - prefix_context + 1);
-    for (size_t i = prefix_context; i > 0; --i) {
-      hunk.PushLine(' ', left[l_i - i].c_str());
-    }
-
-    // Iterate the edits until we found enough suffix for the hunk or the input
-    // is over.
-    size_t n_suffix = 0;
-    for (; edit_i < edits.size(); ++edit_i) {
-      if (n_suffix >= context) {
-        // Continue only if the next hunk is very close.
-        auto it = edits.begin() + static_cast<int>(edit_i);
-        while (it != edits.end() && *it == kMatch) ++it;
-        if (it == edits.end() ||
-            static_cast<size_t>(it - edits.begin()) - edit_i >= context) {
-          // There is no next edit or it is too far away.
-          break;
-        }
-      }
-
-      EditType edit = edits[edit_i];
-      // Reset count when a non match is found.
-      n_suffix = edit == kMatch ? n_suffix + 1 : 0;
-
-      if (edit == kMatch || edit == kRemove || edit == kReplace) {
-        hunk.PushLine(edit == kMatch ? ' ' : '-', left[l_i].c_str());
-      }
-      if (edit == kAdd || edit == kReplace) {
-        hunk.PushLine('+', right[r_i].c_str());
-      }
-
-      // Advance indices, depending on edit type.
-      l_i += edit != kAdd;
-      r_i += edit != kRemove;
-    }
-
-    if (!hunk.has_edits()) {
-      // We are done. We don't want this hunk.
-      break;
-    }
-
-    hunk.PrintTo(&ss);
-  }
-  return ss.str();
-}
-
-}  // namespace edit_distance
-
-namespace {
-
-// The string representation of the values received in EqFailure() are already
-// escaped. Split them on escaped '\n' boundaries. Leave all other escaped
-// characters the same.
-std::vector<std::string> SplitEscapedString(const std::string& str) {
-  std::vector<std::string> lines;
-  size_t start = 0, end = str.size();
-  if (end > 2 && str[0] == '"' && str[end - 1] == '"') {
-    ++start;
-    --end;
-  }
-  bool escaped = false;
-  for (size_t i = start; i + 1 < end; ++i) {
-    if (escaped) {
-      escaped = false;
-      if (str[i] == 'n') {
-        lines.push_back(str.substr(start, i - start - 1));
-        start = i + 1;
-      }
-    } else {
-      escaped = str[i] == '\\';
-    }
-  }
-  lines.push_back(str.substr(start, end - start));
-  return lines;
-}
-
-}  // namespace
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings.  For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-//   lhs_expression: "foo"
-//   rhs_expression: "bar"
-//   lhs_value:      "5"
-//   rhs_value:      "6"
-//
-// The ignoring_case parameter is true if and only if the assertion is a
-// *_STRCASEEQ*.  When it's true, the string "Ignoring case" will
-// be inserted into the message.
-AssertionResult EqFailure(const char* lhs_expression,
-                          const char* rhs_expression,
-                          const std::string& lhs_value,
-                          const std::string& rhs_value,
-                          bool ignoring_case) {
-  Message msg;
-  msg << "Expected equality of these values:";
-  msg << "\n  " << lhs_expression;
-  if (lhs_value != lhs_expression) {
-    msg << "\n    Which is: " << lhs_value;
-  }
-  msg << "\n  " << rhs_expression;
-  if (rhs_value != rhs_expression) {
-    msg << "\n    Which is: " << rhs_value;
-  }
-
-  if (ignoring_case) {
-    msg << "\nIgnoring case";
-  }
-
-  if (!lhs_value.empty() && !rhs_value.empty()) {
-    const std::vector<std::string> lhs_lines =
-        SplitEscapedString(lhs_value);
-    const std::vector<std::string> rhs_lines =
-        SplitEscapedString(rhs_value);
-    if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
-      msg << "\nWith diff:\n"
-          << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
-    }
-  }
-
-  return AssertionFailure() << msg;
-}
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-std::string GetBoolAssertionFailureMessage(
-    const AssertionResult& assertion_result,
-    const char* expression_text,
-    const char* actual_predicate_value,
-    const char* expected_predicate_value) {
-  const char* actual_message = assertion_result.message();
-  Message msg;
-  msg << "Value of: " << expression_text
-      << "\n  Actual: " << actual_predicate_value;
-  if (actual_message[0] != '\0')
-    msg << " (" << actual_message << ")";
-  msg << "\nExpected: " << expected_predicate_value;
-  return msg.GetString();
-}
-
-// Helper function for implementing ASSERT_NEAR.
-AssertionResult DoubleNearPredFormat(const char* expr1,
-                                     const char* expr2,
-                                     const char* abs_error_expr,
-                                     double val1,
-                                     double val2,
-                                     double abs_error) {
-  const double diff = fabs(val1 - val2);
-  if (diff <= abs_error) return AssertionSuccess();
-
-  // Find the value which is closest to zero.
-  const double min_abs = std::min(fabs(val1), fabs(val2));
-  // Find the distance to the next double from that value.
-  const double epsilon =
-      nextafter(min_abs, std::numeric_limits<double>::infinity()) - min_abs;
-  // Detect the case where abs_error is so small that EXPECT_NEAR is
-  // effectively the same as EXPECT_EQUAL, and give an informative error
-  // message so that the situation can be more easily understood without
-  // requiring exotic floating-point knowledge.
-  // Don't do an epsilon check if abs_error is zero because that implies
-  // that an equality check was actually intended.
-  if (!(std::isnan)(val1) && !(std::isnan)(val2) && abs_error > 0 &&
-      abs_error < epsilon) {
-    return AssertionFailure()
-           << "The difference between " << expr1 << " and " << expr2 << " is "
-           << diff << ", where\n"
-           << expr1 << " evaluates to " << val1 << ",\n"
-           << expr2 << " evaluates to " << val2 << ".\nThe abs_error parameter "
-           << abs_error_expr << " evaluates to " << abs_error
-           << " which is smaller than the minimum distance between doubles for "
-              "numbers of this magnitude which is "
-           << epsilon
-           << ", thus making this EXPECT_NEAR check equivalent to "
-              "EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead.";
-  }
-  return AssertionFailure()
-      << "The difference between " << expr1 << " and " << expr2
-      << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
-      << expr1 << " evaluates to " << val1 << ",\n"
-      << expr2 << " evaluates to " << val2 << ", and\n"
-      << abs_error_expr << " evaluates to " << abs_error << ".";
-}
-
-
-// Helper template for implementing FloatLE() and DoubleLE().
-template <typename RawType>
-AssertionResult FloatingPointLE(const char* expr1,
-                                const char* expr2,
-                                RawType val1,
-                                RawType val2) {
-  // Returns success if val1 is less than val2,
-  if (val1 < val2) {
-    return AssertionSuccess();
-  }
-
-  // or if val1 is almost equal to val2.
-  const FloatingPoint<RawType> lhs(val1), rhs(val2);
-  if (lhs.AlmostEquals(rhs)) {
-    return AssertionSuccess();
-  }
-
-  // Note that the above two checks will both fail if either val1 or
-  // val2 is NaN, as the IEEE floating-point standard requires that
-  // any predicate involving a NaN must return false.
-
-  ::std::stringstream val1_ss;
-  val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
-          << val1;
-
-  ::std::stringstream val2_ss;
-  val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
-          << val2;
-
-  return AssertionFailure()
-      << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
-      << "  Actual: " << StringStreamToString(&val1_ss) << " vs "
-      << StringStreamToString(&val2_ss);
-}
-
-}  // namespace internal
-
-// Asserts that val1 is less than, or almost equal to, val2.  Fails
-// otherwise.  In particular, it fails if either val1 or val2 is NaN.
-AssertionResult FloatLE(const char* expr1, const char* expr2,
-                        float val1, float val2) {
-  return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
-}
-
-// Asserts that val1 is less than, or almost equal to, val2.  Fails
-// otherwise.  In particular, it fails if either val1 or val2 is NaN.
-AssertionResult DoubleLE(const char* expr1, const char* expr2,
-                         double val1, double val2) {
-  return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
-}
-
-namespace internal {
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
-                               const char* rhs_expression,
-                               const char* lhs,
-                               const char* rhs) {
-  if (String::CStringEquals(lhs, rhs)) {
-    return AssertionSuccess();
-  }
-
-  return EqFailure(lhs_expression,
-                   rhs_expression,
-                   PrintToString(lhs),
-                   PrintToString(rhs),
-                   false);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
-                                   const char* rhs_expression,
-                                   const char* lhs,
-                                   const char* rhs) {
-  if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
-    return AssertionSuccess();
-  }
-
-  return EqFailure(lhs_expression,
-                   rhs_expression,
-                   PrintToString(lhs),
-                   PrintToString(rhs),
-                   true);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
-                               const char* s2_expression,
-                               const char* s1,
-                               const char* s2) {
-  if (!String::CStringEquals(s1, s2)) {
-    return AssertionSuccess();
-  } else {
-    return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
-                              << s2_expression << "), actual: \""
-                              << s1 << "\" vs \"" << s2 << "\"";
-  }
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
-                                   const char* s2_expression,
-                                   const char* s1,
-                                   const char* s2) {
-  if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
-    return AssertionSuccess();
-  } else {
-    return AssertionFailure()
-        << "Expected: (" << s1_expression << ") != ("
-        << s2_expression << ") (ignoring case), actual: \""
-        << s1 << "\" vs \"" << s2 << "\"";
-  }
-}
-
-}  // namespace internal
-
-namespace {
-
-// Helper functions for implementing IsSubString() and IsNotSubstring().
-
-// This group of overloaded functions return true if and only if needle
-// is a substring of haystack.  NULL is considered a substring of
-// itself only.
-
-bool IsSubstringPred(const char* needle, const char* haystack) {
-  if (needle == nullptr || haystack == nullptr) return needle == haystack;
-
-  return strstr(haystack, needle) != nullptr;
-}
-
-bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
-  if (needle == nullptr || haystack == nullptr) return needle == haystack;
-
-  return wcsstr(haystack, needle) != nullptr;
-}
-
-// StringType here can be either ::std::string or ::std::wstring.
-template <typename StringType>
-bool IsSubstringPred(const StringType& needle,
-                     const StringType& haystack) {
-  return haystack.find(needle) != StringType::npos;
-}
-
-// This function implements either IsSubstring() or IsNotSubstring(),
-// depending on the value of the expected_to_be_substring parameter.
-// StringType here can be const char*, const wchar_t*, ::std::string,
-// or ::std::wstring.
-template <typename StringType>
-AssertionResult IsSubstringImpl(
-    bool expected_to_be_substring,
-    const char* needle_expr, const char* haystack_expr,
-    const StringType& needle, const StringType& haystack) {
-  if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
-    return AssertionSuccess();
-
-  const bool is_wide_string = sizeof(needle[0]) > 1;
-  const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
-  return AssertionFailure()
-      << "Value of: " << needle_expr << "\n"
-      << "  Actual: " << begin_string_quote << needle << "\"\n"
-      << "Expected: " << (expected_to_be_substring ? "" : "not ")
-      << "a substring of " << haystack_expr << "\n"
-      << "Which is: " << begin_string_quote << haystack << "\"";
-}
-
-}  // namespace
-
-// IsSubstring() and IsNotSubstring() check whether needle is a
-// substring of haystack (NULL is considered a substring of itself
-// only), and return an appropriate error message when they fail.
-
-AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const char* needle, const char* haystack) {
-  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const wchar_t* needle, const wchar_t* haystack) {
-  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const char* needle, const char* haystack) {
-  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const wchar_t* needle, const wchar_t* haystack) {
-  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::string& needle, const ::std::string& haystack) {
-  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::string& needle, const ::std::string& haystack) {
-  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-#if GTEST_HAS_STD_WSTRING
-AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::wstring& needle, const ::std::wstring& haystack) {
-  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::wstring& needle, const ::std::wstring& haystack) {
-  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-#endif  // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-
-namespace {
-
-// Helper function for IsHRESULT{SuccessFailure} predicates
-AssertionResult HRESULTFailureHelper(const char* expr,
-                                     const char* expected,
-                                     long hr) {  // NOLINT
-# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_TV_TITLE
-
-  // Windows CE doesn't support FormatMessage.
-  const char error_text[] = "";
-
-# else
-
-  // Looks up the human-readable system message for the HRESULT code
-  // and since we're not passing any params to FormatMessage, we don't
-  // want inserts expanded.
-  const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
-                       FORMAT_MESSAGE_IGNORE_INSERTS;
-  const DWORD kBufSize = 4096;
-  // Gets the system's human readable message string for this HRESULT.
-  char error_text[kBufSize] = { '\0' };
-  DWORD message_length = ::FormatMessageA(kFlags,
-                                          0,   // no source, we're asking system
-                                          static_cast<DWORD>(hr),  // the error
-                                          0,   // no line width restrictions
-                                          error_text,  // output buffer
-                                          kBufSize,    // buf size
-                                          nullptr);  // no arguments for inserts
-  // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
-  for (; message_length && IsSpace(error_text[message_length - 1]);
-          --message_length) {
-    error_text[message_length - 1] = '\0';
-  }
-
-# endif  // GTEST_OS_WINDOWS_MOBILE
-
-  const std::string error_hex("0x" + String::FormatHexInt(hr));
-  return ::testing::AssertionFailure()
-      << "Expected: " << expr << " " << expected << ".\n"
-      << "  Actual: " << error_hex << " " << error_text << "\n";
-}
-
-}  // namespace
-
-AssertionResult IsHRESULTSuccess(const char* expr, long hr) {  // NOLINT
-  if (SUCCEEDED(hr)) {
-    return AssertionSuccess();
-  }
-  return HRESULTFailureHelper(expr, "succeeds", hr);
-}
-
-AssertionResult IsHRESULTFailure(const char* expr, long hr) {  // NOLINT
-  if (FAILED(hr)) {
-    return AssertionSuccess();
-  }
-  return HRESULTFailureHelper(expr, "fails", hr);
-}
-
-#endif  // GTEST_OS_WINDOWS
-
-// Utility functions for encoding Unicode text (wide strings) in
-// UTF-8.
-
-// A Unicode code-point can have up to 21 bits, and is encoded in UTF-8
-// like this:
-//
-// Code-point length   Encoding
-//   0 -  7 bits       0xxxxxxx
-//   8 - 11 bits       110xxxxx 10xxxxxx
-//  12 - 16 bits       1110xxxx 10xxxxxx 10xxxxxx
-//  17 - 21 bits       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-// The maximum code-point a one-byte UTF-8 sequence can represent.
-constexpr uint32_t kMaxCodePoint1 = (static_cast<uint32_t>(1) <<  7) - 1;
-
-// The maximum code-point a two-byte UTF-8 sequence can represent.
-constexpr uint32_t kMaxCodePoint2 = (static_cast<uint32_t>(1) << (5 + 6)) - 1;
-
-// The maximum code-point a three-byte UTF-8 sequence can represent.
-constexpr uint32_t kMaxCodePoint3 = (static_cast<uint32_t>(1) << (4 + 2*6)) - 1;
-
-// The maximum code-point a four-byte UTF-8 sequence can represent.
-constexpr uint32_t kMaxCodePoint4 = (static_cast<uint32_t>(1) << (3 + 3*6)) - 1;
-
-// Chops off the n lowest bits from a bit pattern.  Returns the n
-// lowest bits.  As a side effect, the original bit pattern will be
-// shifted to the right by n bits.
-inline uint32_t ChopLowBits(uint32_t* bits, int n) {
-  const uint32_t low_bits = *bits & ((static_cast<uint32_t>(1) << n) - 1);
-  *bits >>= n;
-  return low_bits;
-}
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type uint32_t because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
-std::string CodePointToUtf8(uint32_t code_point) {
-  if (code_point > kMaxCodePoint4) {
-    return "(Invalid Unicode 0x" + String::FormatHexUInt32(code_point) + ")";
-  }
-
-  char str[5];  // Big enough for the largest valid code point.
-  if (code_point <= kMaxCodePoint1) {
-    str[1] = '\0';
-    str[0] = static_cast<char>(code_point);                          // 0xxxxxxx
-  } else if (code_point <= kMaxCodePoint2) {
-    str[2] = '\0';
-    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
-    str[0] = static_cast<char>(0xC0 | code_point);                   // 110xxxxx
-  } else if (code_point <= kMaxCodePoint3) {
-    str[3] = '\0';
-    str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
-    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
-    str[0] = static_cast<char>(0xE0 | code_point);                   // 1110xxxx
-  } else {  // code_point <= kMaxCodePoint4
-    str[4] = '\0';
-    str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
-    str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
-    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
-    str[0] = static_cast<char>(0xF0 | code_point);                   // 11110xxx
-  }
-  return str;
-}
-
-// The following two functions only make sense if the system
-// uses UTF-16 for wide string encoding. All supported systems
-// with 16 bit wchar_t (Windows, Cygwin) do use UTF-16.
-
-// Determines if the arguments constitute UTF-16 surrogate pair
-// and thus should be combined into a single Unicode code point
-// using CreateCodePointFromUtf16SurrogatePair.
-inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
-  return sizeof(wchar_t) == 2 &&
-      (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
-}
-
-// Creates a Unicode code point from UTF16 surrogate pair.
-inline uint32_t CreateCodePointFromUtf16SurrogatePair(wchar_t first,
-                                                      wchar_t second) {
-  const auto first_u = static_cast<uint32_t>(first);
-  const auto second_u = static_cast<uint32_t>(second);
-  const uint32_t mask = (1 << 10) - 1;
-  return (sizeof(wchar_t) == 2)
-             ? (((first_u & mask) << 10) | (second_u & mask)) + 0x10000
-             :
-             // This function should not be called when the condition is
-             // false, but we provide a sensible default in case it is.
-             first_u;
-}
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
-//   UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
-//   UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
-  if (num_chars == -1)
-    num_chars = static_cast<int>(wcslen(str));
-
-  ::std::stringstream stream;
-  for (int i = 0; i < num_chars; ++i) {
-    uint32_t unicode_code_point;
-
-    if (str[i] == L'\0') {
-      break;
-    } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
-      unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
-                                                                 str[i + 1]);
-      i++;
-    } else {
-      unicode_code_point = static_cast<uint32_t>(str[i]);
-    }
-
-    stream << CodePointToUtf8(unicode_code_point);
-  }
-  return StringStreamToString(&stream);
-}
-
-// Converts a wide C string to an std::string using the UTF-8 encoding.
-// NULL will be converted to "(null)".
-std::string String::ShowWideCString(const wchar_t * wide_c_str) {
-  if (wide_c_str == nullptr) return "(null)";
-
-  return internal::WideStringToUtf8(wide_c_str, -1);
-}
-
-// Compares two wide C strings.  Returns true if and only if they have the
-// same content.
-//
-// Unlike wcscmp(), this function can handle NULL argument(s).  A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
-  if (lhs == nullptr) return rhs == nullptr;
-
-  if (rhs == nullptr) return false;
-
-  return wcscmp(lhs, rhs) == 0;
-}
-
-// Helper function for *_STREQ on wide strings.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
-                               const char* rhs_expression,
-                               const wchar_t* lhs,
-                               const wchar_t* rhs) {
-  if (String::WideCStringEquals(lhs, rhs)) {
-    return AssertionSuccess();
-  }
-
-  return EqFailure(lhs_expression,
-                   rhs_expression,
-                   PrintToString(lhs),
-                   PrintToString(rhs),
-                   false);
-}
-
-// Helper function for *_STRNE on wide strings.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
-                               const char* s2_expression,
-                               const wchar_t* s1,
-                               const wchar_t* s2) {
-  if (!String::WideCStringEquals(s1, s2)) {
-    return AssertionSuccess();
-  }
-
-  return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
-                            << s2_expression << "), actual: "
-                            << PrintToString(s1)
-                            << " vs " << PrintToString(s2);
-}
-
-// Compares two C strings, ignoring case.  Returns true if and only if they have
-// the same content.
-//
-// Unlike strcasecmp(), this function can handle NULL argument(s).  A
-// NULL C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
-  if (lhs == nullptr) return rhs == nullptr;
-  if (rhs == nullptr) return false;
-  return posix::StrCaseCmp(lhs, rhs) == 0;
-}
-
-// Compares two wide C strings, ignoring case.  Returns true if and only if they
-// have the same content.
-//
-// Unlike wcscasecmp(), this function can handle NULL argument(s).
-// A NULL C string is considered different to any non-NULL wide C string,
-// including the empty string.
-// NB: The implementations on different platforms slightly differ.
-// On windows, this method uses _wcsicmp which compares according to LC_CTYPE
-// environment variable. On GNU platform this method uses wcscasecmp
-// which compares according to LC_CTYPE category of the current locale.
-// On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
-// current locale.
-bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
-                                              const wchar_t* rhs) {
-  if (lhs == nullptr) return rhs == nullptr;
-
-  if (rhs == nullptr) return false;
-
-#if GTEST_OS_WINDOWS
-  return _wcsicmp(lhs, rhs) == 0;
-#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
-  return wcscasecmp(lhs, rhs) == 0;
-#else
-  // Android, Mac OS X and Cygwin don't define wcscasecmp.
-  // Other unknown OSes may not define it either.
-  wint_t left, right;
-  do {
-    left = towlower(static_cast<wint_t>(*lhs++));
-    right = towlower(static_cast<wint_t>(*rhs++));
-  } while (left && left == right);
-  return left == right;
-#endif  // OS selector
-}
-
-// Returns true if and only if str ends with the given suffix, ignoring case.
-// Any string is considered to end with an empty suffix.
-bool String::EndsWithCaseInsensitive(
-    const std::string& str, const std::string& suffix) {
-  const size_t str_len = str.length();
-  const size_t suffix_len = suffix.length();
-  return (str_len >= suffix_len) &&
-         CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
-                                      suffix.c_str());
-}
-
-// Formats an int value as "%02d".
-std::string String::FormatIntWidth2(int value) {
-  return FormatIntWidthN(value, 2);
-}
-
-// Formats an int value to given width with leading zeros.
-std::string String::FormatIntWidthN(int value, int width) {
-  std::stringstream ss;
-  ss << std::setfill('0') << std::setw(width) << value;
-  return ss.str();
-}
-
-// Formats an int value as "%X".
-std::string String::FormatHexUInt32(uint32_t value) {
-  std::stringstream ss;
-  ss << std::hex << std::uppercase << value;
-  return ss.str();
-}
-
-// Formats an int value as "%X".
-std::string String::FormatHexInt(int value) {
-  return FormatHexUInt32(static_cast<uint32_t>(value));
-}
-
-// Formats a byte as "%02X".
-std::string String::FormatByte(unsigned char value) {
-  std::stringstream ss;
-  ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
-     << static_cast<unsigned int>(value);
-  return ss.str();
-}
-
-// Converts the buffer in a stringstream to an std::string, converting NUL
-// bytes to "\\0" along the way.
-std::string StringStreamToString(::std::stringstream* ss) {
-  const ::std::string& str = ss->str();
-  const char* const start = str.c_str();
-  const char* const end = start + str.length();
-
-  std::string result;
-  result.reserve(static_cast<size_t>(2 * (end - start)));
-  for (const char* ch = start; ch != end; ++ch) {
-    if (*ch == '\0') {
-      result += "\\0";  // Replaces NUL with "\\0";
-    } else {
-      result += *ch;
-    }
-  }
-
-  return result;
-}
-
-// Appends the user-supplied message to the Google-Test-generated message.
-std::string AppendUserMessage(const std::string& gtest_msg,
-                              const Message& user_msg) {
-  // Appends the user message if it's non-empty.
-  const std::string user_msg_string = user_msg.GetString();
-  if (user_msg_string.empty()) {
-    return gtest_msg;
-  }
-  if (gtest_msg.empty()) {
-    return user_msg_string;
-  }
-  return gtest_msg + "\n" + user_msg_string;
-}
-
-}  // namespace internal
-
-// class TestResult
-
-// Creates an empty TestResult.
-TestResult::TestResult()
-    : death_test_count_(0), start_timestamp_(0), elapsed_time_(0) {}
-
-// D'tor.
-TestResult::~TestResult() {
-}
-
-// Returns the i-th test part result among all the results. i can
-// range from 0 to total_part_count() - 1. If i is not in that range,
-// aborts the program.
-const TestPartResult& TestResult::GetTestPartResult(int i) const {
-  if (i < 0 || i >= total_part_count())
-    internal::posix::Abort();
-  return test_part_results_.at(static_cast<size_t>(i));
-}
-
-// Returns the i-th test property. i can range from 0 to
-// test_property_count() - 1. If i is not in that range, aborts the
-// program.
-const TestProperty& TestResult::GetTestProperty(int i) const {
-  if (i < 0 || i >= test_property_count())
-    internal::posix::Abort();
-  return test_properties_.at(static_cast<size_t>(i));
-}
-
-// Clears the test part results.
-void TestResult::ClearTestPartResults() {
-  test_part_results_.clear();
-}
-
-// Adds a test part result to the list.
-void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
-  test_part_results_.push_back(test_part_result);
-}
-
-// Adds a test property to the list. If a property with the same key as the
-// supplied property is already represented, the value of this test_property
-// replaces the old value for that key.
-void TestResult::RecordProperty(const std::string& xml_element,
-                                const TestProperty& test_property) {
-  if (!ValidateTestProperty(xml_element, test_property)) {
-    return;
-  }
-  internal::MutexLock lock(&test_properties_mutex_);
-  const std::vector<TestProperty>::iterator property_with_matching_key =
-      std::find_if(test_properties_.begin(), test_properties_.end(),
-                   internal::TestPropertyKeyIs(test_property.key()));
-  if (property_with_matching_key == test_properties_.end()) {
-    test_properties_.push_back(test_property);
-    return;
-  }
-  property_with_matching_key->SetValue(test_property.value());
-}
-
-// The list of reserved attributes used in the <testsuites> element of XML
-// output.
-static const char* const kReservedTestSuitesAttributes[] = {
-  "disabled",
-  "errors",
-  "failures",
-  "name",
-  "random_seed",
-  "tests",
-  "time",
-  "timestamp"
-};
-
-// The list of reserved attributes used in the <testsuite> element of XML
-// output.
-static const char* const kReservedTestSuiteAttributes[] = {
-    "disabled", "errors", "failures",  "name",
-    "tests",    "time",   "timestamp", "skipped"};
-
-// The list of reserved attributes used in the <testcase> element of XML output.
-static const char* const kReservedTestCaseAttributes[] = {
-    "classname",   "name", "status", "time",  "type_param",
-    "value_param", "file", "line"};
-
-// Use a slightly different set for allowed output to ensure existing tests can
-// still RecordProperty("result") or "RecordProperty(timestamp")
-static const char* const kReservedOutputTestCaseAttributes[] = {
-    "classname",   "name", "status", "time",   "type_param",
-    "value_param", "file", "line",   "result", "timestamp"};
-
-template <size_t kSize>
-std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
-  return std::vector<std::string>(array, array + kSize);
-}
-
-static std::vector<std::string> GetReservedAttributesForElement(
-    const std::string& xml_element) {
-  if (xml_element == "testsuites") {
-    return ArrayAsVector(kReservedTestSuitesAttributes);
-  } else if (xml_element == "testsuite") {
-    return ArrayAsVector(kReservedTestSuiteAttributes);
-  } else if (xml_element == "testcase") {
-    return ArrayAsVector(kReservedTestCaseAttributes);
-  } else {
-    GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
-  }
-  // This code is unreachable but some compilers may not realizes that.
-  return std::vector<std::string>();
-}
-
-// TODO(jdesprez): Merge the two getReserved attributes once skip is improved
-static std::vector<std::string> GetReservedOutputAttributesForElement(
-    const std::string& xml_element) {
-  if (xml_element == "testsuites") {
-    return ArrayAsVector(kReservedTestSuitesAttributes);
-  } else if (xml_element == "testsuite") {
-    return ArrayAsVector(kReservedTestSuiteAttributes);
-  } else if (xml_element == "testcase") {
-    return ArrayAsVector(kReservedOutputTestCaseAttributes);
-  } else {
-    GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
-  }
-  // This code is unreachable but some compilers may not realizes that.
-  return std::vector<std::string>();
-}
-
-static std::string FormatWordList(const std::vector<std::string>& words) {
-  Message word_list;
-  for (size_t i = 0; i < words.size(); ++i) {
-    if (i > 0 && words.size() > 2) {
-      word_list << ", ";
-    }
-    if (i == words.size() - 1) {
-      word_list << "and ";
-    }
-    word_list << "'" << words[i] << "'";
-  }
-  return word_list.GetString();
-}
-
-static bool ValidateTestPropertyName(
-    const std::string& property_name,
-    const std::vector<std::string>& reserved_names) {
-  if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
-          reserved_names.end()) {
-    ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
-                  << " (" << FormatWordList(reserved_names)
-                  << " are reserved by " << GTEST_NAME_ << ")";
-    return false;
-  }
-  return true;
-}
-
-// Adds a failure if the key is a reserved attribute of the element named
-// xml_element.  Returns true if the property is valid.
-bool TestResult::ValidateTestProperty(const std::string& xml_element,
-                                      const TestProperty& test_property) {
-  return ValidateTestPropertyName(test_property.key(),
-                                  GetReservedAttributesForElement(xml_element));
-}
-
-// Clears the object.
-void TestResult::Clear() {
-  test_part_results_.clear();
-  test_properties_.clear();
-  death_test_count_ = 0;
-  elapsed_time_ = 0;
-}
-
-// Returns true off the test part was skipped.
-static bool TestPartSkipped(const TestPartResult& result) {
-  return result.skipped();
-}
-
-// Returns true if and only if the test was skipped.
-bool TestResult::Skipped() const {
-  return !Failed() && CountIf(test_part_results_, TestPartSkipped) > 0;
-}
-
-// Returns true if and only if the test failed.
-bool TestResult::Failed() const {
-  for (int i = 0; i < total_part_count(); ++i) {
-    if (GetTestPartResult(i).failed())
-      return true;
-  }
-  return false;
-}
-
-// Returns true if and only if the test part fatally failed.
-static bool TestPartFatallyFailed(const TestPartResult& result) {
-  return result.fatally_failed();
-}
-
-// Returns true if and only if the test fatally failed.
-bool TestResult::HasFatalFailure() const {
-  return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
-}
-
-// Returns true if and only if the test part non-fatally failed.
-static bool TestPartNonfatallyFailed(const TestPartResult& result) {
-  return result.nonfatally_failed();
-}
-
-// Returns true if and only if the test has a non-fatal failure.
-bool TestResult::HasNonfatalFailure() const {
-  return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
-}
-
-// Gets the number of all test parts.  This is the sum of the number
-// of successful test parts and the number of failed test parts.
-int TestResult::total_part_count() const {
-  return static_cast<int>(test_part_results_.size());
-}
-
-// Returns the number of the test properties.
-int TestResult::test_property_count() const {
-  return static_cast<int>(test_properties_.size());
-}
-
-// class Test
-
-// Creates a Test object.
-
-// The c'tor saves the states of all flags.
-Test::Test()
-    : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {
-}
-
-// The d'tor restores the states of all flags.  The actual work is
-// done by the d'tor of the gtest_flag_saver_ field, and thus not
-// visible here.
-Test::~Test() {
-}
-
-// Sets up the test fixture.
-//
-// A sub-class may override this.
-void Test::SetUp() {
-}
-
-// Tears down the test fixture.
-//
-// A sub-class may override this.
-void Test::TearDown() {
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, const std::string& value) {
-  UnitTest::GetInstance()->RecordProperty(key, value);
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, int value) {
-  Message value_message;
-  value_message << value;
-  RecordProperty(key, value_message.GetString().c_str());
-}
-
-namespace internal {
-
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
-                                    const std::string& message) {
-  // This function is a friend of UnitTest and as such has access to
-  // AddTestPartResult.
-  UnitTest::GetInstance()->AddTestPartResult(
-      result_type,
-      nullptr,  // No info about the source file where the exception occurred.
-      -1,       // We have no info on which line caused the exception.
-      message,
-      "");  // No stack trace, either.
-}
-
-}  // namespace internal
-
-// Google Test requires all tests in the same test suite to use the same test
-// fixture class.  This function checks if the current test has the
-// same fixture class as the first test in the current test suite.  If
-// yes, it returns true; otherwise it generates a Google Test failure and
-// returns false.
-bool Test::HasSameFixtureClass() {
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  const TestSuite* const test_suite = impl->current_test_suite();
-
-  // Info about the first test in the current test suite.
-  const TestInfo* const first_test_info = test_suite->test_info_list()[0];
-  const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
-  const char* const first_test_name = first_test_info->name();
-
-  // Info about the current test.
-  const TestInfo* const this_test_info = impl->current_test_info();
-  const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
-  const char* const this_test_name = this_test_info->name();
-
-  if (this_fixture_id != first_fixture_id) {
-    // Is the first test defined using TEST?
-    const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
-    // Is this test defined using TEST?
-    const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
-
-    if (first_is_TEST || this_is_TEST) {
-      // Both TEST and TEST_F appear in same test suite, which is incorrect.
-      // Tell the user how to fix this.
-
-      // Gets the name of the TEST and the name of the TEST_F.  Note
-      // that first_is_TEST and this_is_TEST cannot both be true, as
-      // the fixture IDs are different for the two tests.
-      const char* const TEST_name =
-          first_is_TEST ? first_test_name : this_test_name;
-      const char* const TEST_F_name =
-          first_is_TEST ? this_test_name : first_test_name;
-
-      ADD_FAILURE()
-          << "All tests in the same test suite must use the same test fixture\n"
-          << "class, so mixing TEST_F and TEST in the same test suite is\n"
-          << "illegal.  In test suite " << this_test_info->test_suite_name()
-          << ",\n"
-          << "test " << TEST_F_name << " is defined using TEST_F but\n"
-          << "test " << TEST_name << " is defined using TEST.  You probably\n"
-          << "want to change the TEST to TEST_F or move it to another test\n"
-          << "case.";
-    } else {
-      // Two fixture classes with the same name appear in two different
-      // namespaces, which is not allowed. Tell the user how to fix this.
-      ADD_FAILURE()
-          << "All tests in the same test suite must use the same test fixture\n"
-          << "class.  However, in test suite "
-          << this_test_info->test_suite_name() << ",\n"
-          << "you defined test " << first_test_name << " and test "
-          << this_test_name << "\n"
-          << "using two different test fixture classes.  This can happen if\n"
-          << "the two classes are from different namespaces or translation\n"
-          << "units and have the same name.  You should probably rename one\n"
-          << "of the classes to put the tests into different test suites.";
-    }
-    return false;
-  }
-
-  return true;
-}
-
-#if GTEST_HAS_SEH
-
-// Adds an "exception thrown" fatal failure to the current test.  This
-// function returns its result via an output parameter pointer because VC++
-// prohibits creation of objects with destructors on stack in functions
-// using __try (see error C2712).
-static std::string* FormatSehExceptionMessage(DWORD exception_code,
-                                              const char* location) {
-  Message message;
-  message << "SEH exception with code 0x" << std::setbase(16) <<
-    exception_code << std::setbase(10) << " thrown in " << location << ".";
-
-  return new std::string(message.GetString());
-}
-
-#endif  // GTEST_HAS_SEH
-
-namespace internal {
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Adds an "exception thrown" fatal failure to the current test.
-static std::string FormatCxxExceptionMessage(const char* description,
-                                             const char* location) {
-  Message message;
-  if (description != nullptr) {
-    message << "C++ exception with description \"" << description << "\"";
-  } else {
-    message << "Unknown C++ exception";
-  }
-  message << " thrown in " << location << ".";
-
-  return message.GetString();
-}
-
-static std::string PrintTestPartResultToString(
-    const TestPartResult& test_part_result);
-
-GoogleTestFailureException::GoogleTestFailureException(
-    const TestPartResult& failure)
-    : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-// We put these helper functions in the internal namespace as IBM's xlC
-// compiler rejects the code if they were declared static.
-
-// Runs the given method and handles SEH exceptions it throws, when
-// SEH is supported; returns the 0-value for type Result in case of an
-// SEH exception.  (Microsoft compilers cannot handle SEH and C++
-// exceptions in the same function.  Therefore, we provide a separate
-// wrapper function for handling SEH exceptions.)
-template <class T, typename Result>
-Result HandleSehExceptionsInMethodIfSupported(
-    T* object, Result (T::*method)(), const char* location) {
-#if GTEST_HAS_SEH
-  __try {
-    return (object->*method)();
-  } __except (internal::UnitTestOptions::GTestShouldProcessSEH(  // NOLINT
-      GetExceptionCode())) {
-    // We create the exception message on the heap because VC++ prohibits
-    // creation of objects with destructors on stack in functions using __try
-    // (see error C2712).
-    std::string* exception_message = FormatSehExceptionMessage(
-        GetExceptionCode(), location);
-    internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
-                                             *exception_message);
-    delete exception_message;
-    return static_cast<Result>(0);
-  }
-#else
-  (void)location;
-  return (object->*method)();
-#endif  // GTEST_HAS_SEH
-}
-
-// Runs the given method and catches and reports C++ and/or SEH-style
-// exceptions, if they are supported; returns the 0-value for type
-// Result in case of an SEH exception.
-template <class T, typename Result>
-Result HandleExceptionsInMethodIfSupported(
-    T* object, Result (T::*method)(), const char* location) {
-  // NOTE: The user code can affect the way in which Google Test handles
-  // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
-  // RUN_ALL_TESTS() starts. It is technically possible to check the flag
-  // after the exception is caught and either report or re-throw the
-  // exception based on the flag's value:
-  //
-  // try {
-  //   // Perform the test method.
-  // } catch (...) {
-  //   if (GTEST_FLAG(catch_exceptions))
-  //     // Report the exception as failure.
-  //   else
-  //     throw;  // Re-throws the original exception.
-  // }
-  //
-  // However, the purpose of this flag is to allow the program to drop into
-  // the debugger when the exception is thrown. On most platforms, once the
-  // control enters the catch block, the exception origin information is
-  // lost and the debugger will stop the program at the point of the
-  // re-throw in this function -- instead of at the point of the original
-  // throw statement in the code under test.  For this reason, we perform
-  // the check early, sacrificing the ability to affect Google Test's
-  // exception handling in the method where the exception is thrown.
-  if (internal::GetUnitTestImpl()->catch_exceptions()) {
-#if GTEST_HAS_EXCEPTIONS
-    try {
-      return HandleSehExceptionsInMethodIfSupported(object, method, location);
-    } catch (const AssertionException&) {  // NOLINT
-      // This failure was reported already.
-    } catch (const internal::GoogleTestFailureException&) {  // NOLINT
-      // This exception type can only be thrown by a failed Google
-      // Test assertion with the intention of letting another testing
-      // framework catch it.  Therefore we just re-throw it.
-      throw;
-    } catch (const std::exception& e) {  // NOLINT
-      internal::ReportFailureInUnknownLocation(
-          TestPartResult::kFatalFailure,
-          FormatCxxExceptionMessage(e.what(), location));
-    } catch (...) {  // NOLINT
-      internal::ReportFailureInUnknownLocation(
-          TestPartResult::kFatalFailure,
-          FormatCxxExceptionMessage(nullptr, location));
-    }
-    return static_cast<Result>(0);
-#else
-    return HandleSehExceptionsInMethodIfSupported(object, method, location);
-#endif  // GTEST_HAS_EXCEPTIONS
-  } else {
-    return (object->*method)();
-  }
-}
-
-}  // namespace internal
-
-// Runs the test and updates the test result.
-void Test::Run() {
-  if (!HasSameFixtureClass()) return;
-
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  impl->os_stack_trace_getter()->UponLeavingGTest();
-  internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
-  // We will run the test only if SetUp() was successful and didn't call
-  // GTEST_SKIP().
-  if (!HasFatalFailure() && !IsSkipped()) {
-    impl->os_stack_trace_getter()->UponLeavingGTest();
-    internal::HandleExceptionsInMethodIfSupported(
-        this, &Test::TestBody, "the test body");
-  }
-
-  // However, we want to clean up as much as possible.  Hence we will
-  // always call TearDown(), even if SetUp() or the test body has
-  // failed.
-  impl->os_stack_trace_getter()->UponLeavingGTest();
-  internal::HandleExceptionsInMethodIfSupported(
-      this, &Test::TearDown, "TearDown()");
-}
-
-// Returns true if and only if the current test has a fatal failure.
-bool Test::HasFatalFailure() {
-  return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
-}
-
-// Returns true if and only if the current test has a non-fatal failure.
-bool Test::HasNonfatalFailure() {
-  return internal::GetUnitTestImpl()->current_test_result()->
-      HasNonfatalFailure();
-}
-
-// Returns true if and only if the current test was skipped.
-bool Test::IsSkipped() {
-  return internal::GetUnitTestImpl()->current_test_result()->Skipped();
-}
-
-// class TestInfo
-
-// Constructs a TestInfo object. It assumes ownership of the test factory
-// object.
-TestInfo::TestInfo(const std::string& a_test_suite_name,
-                   const std::string& a_name, const char* a_type_param,
-                   const char* a_value_param,
-                   internal::CodeLocation a_code_location,
-                   internal::TypeId fixture_class_id,
-                   internal::TestFactoryBase* factory)
-    : test_suite_name_(a_test_suite_name),
-      name_(a_name),
-      type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
-      value_param_(a_value_param ? new std::string(a_value_param) : nullptr),
-      location_(a_code_location),
-      fixture_class_id_(fixture_class_id),
-      should_run_(false),
-      is_disabled_(false),
-      matches_filter_(false),
-      is_in_another_shard_(false),
-      factory_(factory),
-      result_() {}
-
-// Destructs a TestInfo object.
-TestInfo::~TestInfo() { delete factory_; }
-
-namespace internal {
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
-//   test_suite_name:  name of the test suite
-//   name:             name of the test
-//   type_param:       the name of the test's type parameter, or NULL if
-//                     this is not a typed or a type-parameterized test.
-//   value_param:      text representation of the test's value parameter,
-//                     or NULL if this is not a value-parameterized test.
-//   code_location:    code location where the test is defined
-//   fixture_class_id: ID of the test fixture class
-//   set_up_tc:        pointer to the function that sets up the test suite
-//   tear_down_tc:     pointer to the function that tears down the test suite
-//   factory:          pointer to the factory that creates a test object.
-//                     The newly created TestInfo instance will assume
-//                     ownership of the factory object.
-TestInfo* MakeAndRegisterTestInfo(
-    const char* test_suite_name, const char* name, const char* type_param,
-    const char* value_param, CodeLocation code_location,
-    TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
-    TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory) {
-  TestInfo* const test_info =
-      new TestInfo(test_suite_name, name, type_param, value_param,
-                   code_location, fixture_class_id, factory);
-  GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
-  return test_info;
-}
-
-void ReportInvalidTestSuiteType(const char* test_suite_name,
-                                CodeLocation code_location) {
-  Message errors;
-  errors
-      << "Attempted redefinition of test suite " << test_suite_name << ".\n"
-      << "All tests in the same test suite must use the same test fixture\n"
-      << "class.  However, in test suite " << test_suite_name << ", you tried\n"
-      << "to define a test using a fixture class different from the one\n"
-      << "used earlier. This can happen if the two fixture classes are\n"
-      << "from different namespaces and have the same name. You should\n"
-      << "probably rename one of the classes to put the tests into different\n"
-      << "test suites.";
-
-  GTEST_LOG_(ERROR) << FormatFileLocation(code_location.file.c_str(),
-                                          code_location.line)
-                    << " " << errors.GetString();
-}
-}  // namespace internal
-
-namespace {
-
-// A predicate that checks the test name of a TestInfo against a known
-// value.
-//
-// This is used for implementation of the TestSuite class only.  We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestNameIs is copyable.
-class TestNameIs {
- public:
-  // Constructor.
-  //
-  // TestNameIs has NO default constructor.
-  explicit TestNameIs(const char* name)
-      : name_(name) {}
-
-  // Returns true if and only if the test name of test_info matches name_.
-  bool operator()(const TestInfo * test_info) const {
-    return test_info && test_info->name() == name_;
-  }
-
- private:
-  std::string name_;
-};
-
-}  // namespace
-
-namespace internal {
-
-// This method expands all parameterized tests registered with macros TEST_P
-// and INSTANTIATE_TEST_SUITE_P into regular tests and registers those.
-// This will be done just once during the program runtime.
-void UnitTestImpl::RegisterParameterizedTests() {
-  if (!parameterized_tests_registered_) {
-    parameterized_test_registry_.RegisterTests();
-    type_parameterized_test_registry_.CheckForInstantiations();
-    parameterized_tests_registered_ = true;
-  }
-}
-
-}  // namespace internal
-
-// Creates the test object, runs it, records its result, and then
-// deletes it.
-void TestInfo::Run() {
-  if (!should_run_) return;
-
-  // Tells UnitTest where to store test result.
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  impl->set_current_test_info(this);
-
-  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
-  // Notifies the unit test event listeners that a test is about to start.
-  repeater->OnTestStart(*this);
-
-  result_.set_start_timestamp(internal::GetTimeInMillis());
-  internal::Timer timer;
-
-  impl->os_stack_trace_getter()->UponLeavingGTest();
-
-  // Creates the test object.
-  Test* const test = internal::HandleExceptionsInMethodIfSupported(
-      factory_, &internal::TestFactoryBase::CreateTest,
-      "the test fixture's constructor");
-
-  // Runs the test if the constructor didn't generate a fatal failure or invoke
-  // GTEST_SKIP().
-  // Note that the object will not be null
-  if (!Test::HasFatalFailure() && !Test::IsSkipped()) {
-    // This doesn't throw as all user code that can throw are wrapped into
-    // exception handling code.
-    test->Run();
-  }
-
-  if (test != nullptr) {
-    // Deletes the test object.
-    impl->os_stack_trace_getter()->UponLeavingGTest();
-    internal::HandleExceptionsInMethodIfSupported(
-        test, &Test::DeleteSelf_, "the test fixture's destructor");
-  }
-
-  result_.set_elapsed_time(timer.Elapsed());
-
-  // Notifies the unit test event listener that a test has just finished.
-  repeater->OnTestEnd(*this);
-
-  // Tells UnitTest to stop associating assertion results to this
-  // test.
-  impl->set_current_test_info(nullptr);
-}
-
-// Skip and records a skipped test result for this object.
-void TestInfo::Skip() {
-  if (!should_run_) return;
-
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  impl->set_current_test_info(this);
-
-  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
-  // Notifies the unit test event listeners that a test is about to start.
-  repeater->OnTestStart(*this);
-
-  const TestPartResult test_part_result =
-      TestPartResult(TestPartResult::kSkip, this->file(), this->line(), "");
-  impl->GetTestPartResultReporterForCurrentThread()->ReportTestPartResult(
-      test_part_result);
-
-  // Notifies the unit test event listener that a test has just finished.
-  repeater->OnTestEnd(*this);
-  impl->set_current_test_info(nullptr);
-}
-
-// class TestSuite
-
-// Gets the number of successful tests in this test suite.
-int TestSuite::successful_test_count() const {
-  return CountIf(test_info_list_, TestPassed);
-}
-
-// Gets the number of successful tests in this test suite.
-int TestSuite::skipped_test_count() const {
-  return CountIf(test_info_list_, TestSkipped);
-}
-
-// Gets the number of failed tests in this test suite.
-int TestSuite::failed_test_count() const {
-  return CountIf(test_info_list_, TestFailed);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int TestSuite::reportable_disabled_test_count() const {
-  return CountIf(test_info_list_, TestReportableDisabled);
-}
-
-// Gets the number of disabled tests in this test suite.
-int TestSuite::disabled_test_count() const {
-  return CountIf(test_info_list_, TestDisabled);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int TestSuite::reportable_test_count() const {
-  return CountIf(test_info_list_, TestReportable);
-}
-
-// Get the number of tests in this test suite that should run.
-int TestSuite::test_to_run_count() const {
-  return CountIf(test_info_list_, ShouldRunTest);
-}
-
-// Gets the number of all tests.
-int TestSuite::total_test_count() const {
-  return static_cast<int>(test_info_list_.size());
-}
-
-// Creates a TestSuite with the given name.
-//
-// Arguments:
-//
-//   a_name:       name of the test suite
-//   a_type_param: the name of the test suite's type parameter, or NULL if
-//                 this is not a typed or a type-parameterized test suite.
-//   set_up_tc:    pointer to the function that sets up the test suite
-//   tear_down_tc: pointer to the function that tears down the test suite
-TestSuite::TestSuite(const char* a_name, const char* a_type_param,
-                     internal::SetUpTestSuiteFunc set_up_tc,
-                     internal::TearDownTestSuiteFunc tear_down_tc)
-    : name_(a_name),
-      type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
-      set_up_tc_(set_up_tc),
-      tear_down_tc_(tear_down_tc),
-      should_run_(false),
-      start_timestamp_(0),
-      elapsed_time_(0) {}
-
-// Destructor of TestSuite.
-TestSuite::~TestSuite() {
-  // Deletes every Test in the collection.
-  ForEach(test_info_list_, internal::Delete<TestInfo>);
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
-const TestInfo* TestSuite::GetTestInfo(int i) const {
-  const int index = GetElementOr(test_indices_, i, -1);
-  return index < 0 ? nullptr : test_info_list_[static_cast<size_t>(index)];
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
-TestInfo* TestSuite::GetMutableTestInfo(int i) {
-  const int index = GetElementOr(test_indices_, i, -1);
-  return index < 0 ? nullptr : test_info_list_[static_cast<size_t>(index)];
-}
-
-// Adds a test to this test suite.  Will delete the test upon
-// destruction of the TestSuite object.
-void TestSuite::AddTestInfo(TestInfo* test_info) {
-  test_info_list_.push_back(test_info);
-  test_indices_.push_back(static_cast<int>(test_indices_.size()));
-}
-
-// Runs every test in this TestSuite.
-void TestSuite::Run() {
-  if (!should_run_) return;
-
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  impl->set_current_test_suite(this);
-
-  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
-  // Call both legacy and the new API
-  repeater->OnTestSuiteStart(*this);
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  repeater->OnTestCaseStart(*this);
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  impl->os_stack_trace_getter()->UponLeavingGTest();
-  internal::HandleExceptionsInMethodIfSupported(
-      this, &TestSuite::RunSetUpTestSuite, "SetUpTestSuite()");
-
-  start_timestamp_ = internal::GetTimeInMillis();
-  internal::Timer timer;
-  for (int i = 0; i < total_test_count(); i++) {
-    GetMutableTestInfo(i)->Run();
-    if (GTEST_FLAG(fail_fast) && GetMutableTestInfo(i)->result()->Failed()) {
-      for (int j = i + 1; j < total_test_count(); j++) {
-        GetMutableTestInfo(j)->Skip();
-      }
-      break;
-    }
-  }
-  elapsed_time_ = timer.Elapsed();
-
-  impl->os_stack_trace_getter()->UponLeavingGTest();
-  internal::HandleExceptionsInMethodIfSupported(
-      this, &TestSuite::RunTearDownTestSuite, "TearDownTestSuite()");
-
-  // Call both legacy and the new API
-  repeater->OnTestSuiteEnd(*this);
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  repeater->OnTestCaseEnd(*this);
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  impl->set_current_test_suite(nullptr);
-}
-
-// Skips all tests under this TestSuite.
-void TestSuite::Skip() {
-  if (!should_run_) return;
-
-  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
-  impl->set_current_test_suite(this);
-
-  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
-  // Call both legacy and the new API
-  repeater->OnTestSuiteStart(*this);
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  repeater->OnTestCaseStart(*this);
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  for (int i = 0; i < total_test_count(); i++) {
-    GetMutableTestInfo(i)->Skip();
-  }
-
-  // Call both legacy and the new API
-  repeater->OnTestSuiteEnd(*this);
-  // Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  repeater->OnTestCaseEnd(*this);
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  impl->set_current_test_suite(nullptr);
-}
-
-// Clears the results of all tests in this test suite.
-void TestSuite::ClearResult() {
-  ad_hoc_test_result_.Clear();
-  ForEach(test_info_list_, TestInfo::ClearTestResult);
-}
-
-// Shuffles the tests in this test suite.
-void TestSuite::ShuffleTests(internal::Random* random) {
-  Shuffle(random, &test_indices_);
-}
-
-// Restores the test order to before the first shuffle.
-void TestSuite::UnshuffleTests() {
-  for (size_t i = 0; i < test_indices_.size(); i++) {
-    test_indices_[i] = static_cast<int>(i);
-  }
-}
-
-// Formats a countable noun.  Depending on its quantity, either the
-// singular form or the plural form is used. e.g.
-//
-// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
-// FormatCountableNoun(5, "book", "books") returns "5 books".
-static std::string FormatCountableNoun(int count,
-                                       const char * singular_form,
-                                       const char * plural_form) {
-  return internal::StreamableToString(count) + " " +
-      (count == 1 ? singular_form : plural_form);
-}
-
-// Formats the count of tests.
-static std::string FormatTestCount(int test_count) {
-  return FormatCountableNoun(test_count, "test", "tests");
-}
-
-// Formats the count of test suites.
-static std::string FormatTestSuiteCount(int test_suite_count) {
-  return FormatCountableNoun(test_suite_count, "test suite", "test suites");
-}
-
-// Converts a TestPartResult::Type enum to human-friendly string
-// representation.  Both kNonFatalFailure and kFatalFailure are translated
-// to "Failure", as the user usually doesn't care about the difference
-// between the two when viewing the test result.
-static const char * TestPartResultTypeToString(TestPartResult::Type type) {
-  switch (type) {
-    case TestPartResult::kSkip:
-      return "Skipped\n";
-    case TestPartResult::kSuccess:
-      return "Success";
-
-    case TestPartResult::kNonFatalFailure:
-    case TestPartResult::kFatalFailure:
-#ifdef _MSC_VER
-      return "error: ";
-#else
-      return "Failure\n";
-#endif
-    default:
-      return "Unknown result type";
-  }
-}
-
-namespace internal {
-namespace {
-enum class GTestColor { kDefault, kRed, kGreen, kYellow };
-}  // namespace
-
-// Prints a TestPartResult to an std::string.
-static std::string PrintTestPartResultToString(
-    const TestPartResult& test_part_result) {
-  return (Message()
-          << internal::FormatFileLocation(test_part_result.file_name(),
-                                          test_part_result.line_number())
-          << " " << TestPartResultTypeToString(test_part_result.type())
-          << test_part_result.message()).GetString();
-}
-
-// Prints a TestPartResult.
-static void PrintTestPartResult(const TestPartResult& test_part_result) {
-  const std::string& result =
-      PrintTestPartResultToString(test_part_result);
-  printf("%s\n", result.c_str());
-  fflush(stdout);
-  // If the test program runs in Visual Studio or a debugger, the
-  // following statements add the test part result message to the Output
-  // window such that the user can double-click on it to jump to the
-  // corresponding source code location; otherwise they do nothing.
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
-  // We don't call OutputDebugString*() on Windows Mobile, as printing
-  // to stdout is done by OutputDebugString() there already - we don't
-  // want the same message printed twice.
-  ::OutputDebugStringA(result.c_str());
-  ::OutputDebugStringA("\n");
-#endif
-}
-
-// class PrettyUnitTestResultPrinter
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
-    !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
-
-// Returns the character attribute for the given color.
-static WORD GetColorAttribute(GTestColor color) {
-  switch (color) {
-    case GTestColor::kRed:
-      return FOREGROUND_RED;
-    case GTestColor::kGreen:
-      return FOREGROUND_GREEN;
-    case GTestColor::kYellow:
-      return FOREGROUND_RED | FOREGROUND_GREEN;
-    default:           return 0;
-  }
-}
-
-static int GetBitOffset(WORD color_mask) {
-  if (color_mask == 0) return 0;
-
-  int bitOffset = 0;
-  while ((color_mask & 1) == 0) {
-    color_mask >>= 1;
-    ++bitOffset;
-  }
-  return bitOffset;
-}
-
-static WORD GetNewColor(GTestColor color, WORD old_color_attrs) {
-  // Let's reuse the BG
-  static const WORD background_mask = BACKGROUND_BLUE | BACKGROUND_GREEN |
-                                      BACKGROUND_RED | BACKGROUND_INTENSITY;
-  static const WORD foreground_mask = FOREGROUND_BLUE | FOREGROUND_GREEN |
-                                      FOREGROUND_RED | FOREGROUND_INTENSITY;
-  const WORD existing_bg = old_color_attrs & background_mask;
-
-  WORD new_color =
-      GetColorAttribute(color) | existing_bg | FOREGROUND_INTENSITY;
-  static const int bg_bitOffset = GetBitOffset(background_mask);
-  static const int fg_bitOffset = GetBitOffset(foreground_mask);
-
-  if (((new_color & background_mask) >> bg_bitOffset) ==
-      ((new_color & foreground_mask) >> fg_bitOffset)) {
-    new_color ^= FOREGROUND_INTENSITY;  // invert intensity
-  }
-  return new_color;
-}
-
-#else
-
-// Returns the ANSI color code for the given color. GTestColor::kDefault is
-// an invalid input.
-static const char* GetAnsiColorCode(GTestColor color) {
-  switch (color) {
-    case GTestColor::kRed:
-      return "1";
-    case GTestColor::kGreen:
-      return "2";
-    case GTestColor::kYellow:
-      return "3";
-    default:
-      return nullptr;
-  }
-}
-
-#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
-
-// Returns true if and only if Google Test should use colors in the output.
-bool ShouldUseColor(bool stdout_is_tty) {
-  const char* const gtest_color = GTEST_FLAG(color).c_str();
-
-  if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
-    // On Windows the TERM variable is usually not set, but the
-    // console there does support colors.
-    return stdout_is_tty;
-#else
-    // On non-Windows platforms, we rely on the TERM variable.
-    const char* const term = posix::GetEnv("TERM");
-    const bool term_supports_color =
-        String::CStringEquals(term, "xterm") ||
-        String::CStringEquals(term, "xterm-color") ||
-        String::CStringEquals(term, "xterm-256color") ||
-        String::CStringEquals(term, "screen") ||
-        String::CStringEquals(term, "screen-256color") ||
-        String::CStringEquals(term, "tmux") ||
-        String::CStringEquals(term, "tmux-256color") ||
-        String::CStringEquals(term, "rxvt-unicode") ||
-        String::CStringEquals(term, "rxvt-unicode-256color") ||
-        String::CStringEquals(term, "linux") ||
-        String::CStringEquals(term, "cygwin");
-    return stdout_is_tty && term_supports_color;
-#endif  // GTEST_OS_WINDOWS
-  }
-
-  return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
-      String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
-      String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
-      String::CStringEquals(gtest_color, "1");
-  // We take "yes", "true", "t", and "1" as meaning "yes".  If the
-  // value is neither one of these nor "auto", we treat it as "no" to
-  // be conservative.
-}
-
-// Helpers for printing colored strings to stdout. Note that on Windows, we
-// cannot simply emit special characters and have the terminal change colors.
-// This routine must actually emit the characters rather than return a string
-// that would be colored when printed, as can be done on Linux.
-
-GTEST_ATTRIBUTE_PRINTF_(2, 3)
-static void ColoredPrintf(GTestColor color, const char *fmt, ...) {
-  va_list args;
-  va_start(args, fmt);
-
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS || GTEST_OS_IOS || \
-    GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || defined(ESP_PLATFORM)
-  const bool use_color = AlwaysFalse();
-#else
-  static const bool in_color_mode =
-      ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
-  const bool use_color = in_color_mode && (color != GTestColor::kDefault);
-#endif  // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS
-
-  if (!use_color) {
-    vprintf(fmt, args);
-    va_end(args);
-    return;
-  }
-
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
-    !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
-  const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-
-  // Gets the current text color.
-  CONSOLE_SCREEN_BUFFER_INFO buffer_info;
-  GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
-  const WORD old_color_attrs = buffer_info.wAttributes;
-  const WORD new_color = GetNewColor(color, old_color_attrs);
-
-  // We need to flush the stream buffers into the console before each
-  // SetConsoleTextAttribute call lest it affect the text that is already
-  // printed but has not yet reached the console.
-  fflush(stdout);
-  SetConsoleTextAttribute(stdout_handle, new_color);
-
-  vprintf(fmt, args);
-
-  fflush(stdout);
-  // Restores the text color.
-  SetConsoleTextAttribute(stdout_handle, old_color_attrs);
-#else
-  printf("\033[0;3%sm", GetAnsiColorCode(color));
-  vprintf(fmt, args);
-  printf("\033[m");  // Resets the terminal to default.
-#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
-  va_end(args);
-}
-
-// Text printed in Google Test's text output and --gtest_list_tests
-// output to label the type parameter and value parameter for a test.
-static const char kTypeParamLabel[] = "TypeParam";
-static const char kValueParamLabel[] = "GetParam()";
-
-static void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
-  const char* const type_param = test_info.type_param();
-  const char* const value_param = test_info.value_param();
-
-  if (type_param != nullptr || value_param != nullptr) {
-    printf(", where ");
-    if (type_param != nullptr) {
-      printf("%s = %s", kTypeParamLabel, type_param);
-      if (value_param != nullptr) printf(" and ");
-    }
-    if (value_param != nullptr) {
-      printf("%s = %s", kValueParamLabel, value_param);
-    }
-  }
-}
-
-// This class implements the TestEventListener interface.
-//
-// Class PrettyUnitTestResultPrinter is copyable.
-class PrettyUnitTestResultPrinter : public TestEventListener {
- public:
-  PrettyUnitTestResultPrinter() {}
-  static void PrintTestName(const char* test_suite, const char* test) {
-    printf("%s.%s", test_suite, test);
-  }
-
-  // The following methods override what's in the TestEventListener class.
-  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
-  void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
-  void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
-  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseStart(const TestCase& test_case) override;
-#else
-  void OnTestSuiteStart(const TestSuite& test_suite) override;
-#endif  // OnTestCaseStart
-
-  void OnTestStart(const TestInfo& test_info) override;
-
-  void OnTestPartResult(const TestPartResult& result) override;
-  void OnTestEnd(const TestInfo& test_info) override;
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseEnd(const TestCase& test_case) override;
-#else
-  void OnTestSuiteEnd(const TestSuite& test_suite) override;
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override;
-  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
-  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
-  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
-
- private:
-  static void PrintFailedTests(const UnitTest& unit_test);
-  static void PrintFailedTestSuites(const UnitTest& unit_test);
-  static void PrintSkippedTests(const UnitTest& unit_test);
-};
-
-  // Fired before each iteration of tests starts.
-void PrettyUnitTestResultPrinter::OnTestIterationStart(
-    const UnitTest& unit_test, int iteration) {
-  if (GTEST_FLAG(repeat) != 1)
-    printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
-
-  const char* const filter = GTEST_FLAG(filter).c_str();
-
-  // Prints the filter if it's not *.  This reminds the user that some
-  // tests may be skipped.
-  if (!String::CStringEquals(filter, kUniversalFilter)) {
-    ColoredPrintf(GTestColor::kYellow, "Note: %s filter = %s\n", GTEST_NAME_,
-                  filter);
-  }
-
-  if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
-    const int32_t shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
-    ColoredPrintf(GTestColor::kYellow, "Note: This is test shard %d of %s.\n",
-                  static_cast<int>(shard_index) + 1,
-                  internal::posix::GetEnv(kTestTotalShards));
-  }
-
-  if (GTEST_FLAG(shuffle)) {
-    ColoredPrintf(GTestColor::kYellow,
-                  "Note: Randomizing tests' orders with a seed of %d .\n",
-                  unit_test.random_seed());
-  }
-
-  ColoredPrintf(GTestColor::kGreen, "[==========] ");
-  printf("Running %s from %s.\n",
-         FormatTestCount(unit_test.test_to_run_count()).c_str(),
-         FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
-  fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
-    const UnitTest& /*unit_test*/) {
-  ColoredPrintf(GTestColor::kGreen, "[----------] ");
-  printf("Global test environment set-up.\n");
-  fflush(stdout);
-}
-
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
-  const std::string counts =
-      FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
-  ColoredPrintf(GTestColor::kGreen, "[----------] ");
-  printf("%s from %s", counts.c_str(), test_case.name());
-  if (test_case.type_param() == nullptr) {
-    printf("\n");
-  } else {
-    printf(", where %s = %s\n", kTypeParamLabel, test_case.type_param());
-  }
-  fflush(stdout);
-}
-#else
-void PrettyUnitTestResultPrinter::OnTestSuiteStart(
-    const TestSuite& test_suite) {
-  const std::string counts =
-      FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
-  ColoredPrintf(GTestColor::kGreen, "[----------] ");
-  printf("%s from %s", counts.c_str(), test_suite.name());
-  if (test_suite.type_param() == nullptr) {
-    printf("\n");
-  } else {
-    printf(", where %s = %s\n", kTypeParamLabel, test_suite.type_param());
-  }
-  fflush(stdout);
-}
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
-  ColoredPrintf(GTestColor::kGreen, "[ RUN      ] ");
-  PrintTestName(test_info.test_suite_name(), test_info.name());
-  printf("\n");
-  fflush(stdout);
-}
-
-// Called after an assertion failure.
-void PrettyUnitTestResultPrinter::OnTestPartResult(
-    const TestPartResult& result) {
-  switch (result.type()) {
-    // If the test part succeeded, we don't need to do anything.
-    case TestPartResult::kSuccess:
-      return;
-    default:
-      // Print failure message from the assertion
-      // (e.g. expected this and got that).
-      PrintTestPartResult(result);
-      fflush(stdout);
-  }
-}
-
-void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
-  if (test_info.result()->Passed()) {
-    ColoredPrintf(GTestColor::kGreen, "[       OK ] ");
-  } else if (test_info.result()->Skipped()) {
-    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
-  } else {
-    ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
-  }
-  PrintTestName(test_info.test_suite_name(), test_info.name());
-  if (test_info.result()->Failed())
-    PrintFullTestCommentIfPresent(test_info);
-
-  if (GTEST_FLAG(print_time)) {
-    printf(" (%s ms)\n", internal::StreamableToString(
-           test_info.result()->elapsed_time()).c_str());
-  } else {
-    printf("\n");
-  }
-  fflush(stdout);
-}
-
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
-  if (!GTEST_FLAG(print_time)) return;
-
-  const std::string counts =
-      FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
-  ColoredPrintf(GTestColor::kGreen, "[----------] ");
-  printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_case.name(),
-         internal::StreamableToString(test_case.elapsed_time()).c_str());
-  fflush(stdout);
-}
-#else
-void PrettyUnitTestResultPrinter::OnTestSuiteEnd(const TestSuite& test_suite) {
-  if (!GTEST_FLAG(print_time)) return;
-
-  const std::string counts =
-      FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
-  ColoredPrintf(GTestColor::kGreen, "[----------] ");
-  printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_suite.name(),
-         internal::StreamableToString(test_suite.elapsed_time()).c_str());
-  fflush(stdout);
-}
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
-    const UnitTest& /*unit_test*/) {
-  ColoredPrintf(GTestColor::kGreen, "[----------] ");
-  printf("Global test environment tear-down\n");
-  fflush(stdout);
-}
-
-// Internal helper for printing the list of failed tests.
-void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
-  const int failed_test_count = unit_test.failed_test_count();
-  ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
-  printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
-
-  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
-    const TestSuite& test_suite = *unit_test.GetTestSuite(i);
-    if (!test_suite.should_run() || (test_suite.failed_test_count() == 0)) {
-      continue;
-    }
-    for (int j = 0; j < test_suite.total_test_count(); ++j) {
-      const TestInfo& test_info = *test_suite.GetTestInfo(j);
-      if (!test_info.should_run() || !test_info.result()->Failed()) {
-        continue;
-      }
-      ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
-      printf("%s.%s", test_suite.name(), test_info.name());
-      PrintFullTestCommentIfPresent(test_info);
-      printf("\n");
-    }
-  }
-  printf("\n%2d FAILED %s\n", failed_test_count,
-         failed_test_count == 1 ? "TEST" : "TESTS");
-}
-
-// Internal helper for printing the list of test suite failures not covered by
-// PrintFailedTests.
-void PrettyUnitTestResultPrinter::PrintFailedTestSuites(
-    const UnitTest& unit_test) {
-  int suite_failure_count = 0;
-  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
-    const TestSuite& test_suite = *unit_test.GetTestSuite(i);
-    if (!test_suite.should_run()) {
-      continue;
-    }
-    if (test_suite.ad_hoc_test_result().Failed()) {
-      ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
-      printf("%s: SetUpTestSuite or TearDownTestSuite\n", test_suite.name());
-      ++suite_failure_count;
-    }
-  }
-  if (suite_failure_count > 0) {
-    printf("\n%2d FAILED TEST %s\n", suite_failure_count,
-           suite_failure_count == 1 ? "SUITE" : "SUITES");
-  }
-}
-
-// Internal helper for printing the list of skipped tests.
-void PrettyUnitTestResultPrinter::PrintSkippedTests(const UnitTest& unit_test) {
-  const int skipped_test_count = unit_test.skipped_test_count();
-  if (skipped_test_count == 0) {
-    return;
-  }
-
-  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
-    const TestSuite& test_suite = *unit_test.GetTestSuite(i);
-    if (!test_suite.should_run() || (test_suite.skipped_test_count() == 0)) {
-      continue;
-    }
-    for (int j = 0; j < test_suite.total_test_count(); ++j) {
-      const TestInfo& test_info = *test_suite.GetTestInfo(j);
-      if (!test_info.should_run() || !test_info.result()->Skipped()) {
-        continue;
-      }
-      ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
-      printf("%s.%s", test_suite.name(), test_info.name());
-      printf("\n");
-    }
-  }
-}
-
-void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
-                                                     int /*iteration*/) {
-  ColoredPrintf(GTestColor::kGreen, "[==========] ");
-  printf("%s from %s ran.",
-         FormatTestCount(unit_test.test_to_run_count()).c_str(),
-         FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
-  if (GTEST_FLAG(print_time)) {
-    printf(" (%s ms total)",
-           internal::StreamableToString(unit_test.elapsed_time()).c_str());
-  }
-  printf("\n");
-  ColoredPrintf(GTestColor::kGreen, "[  PASSED  ] ");
-  printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
-
-  const int skipped_test_count = unit_test.skipped_test_count();
-  if (skipped_test_count > 0) {
-    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
-    printf("%s, listed below:\n", FormatTestCount(skipped_test_count).c_str());
-    PrintSkippedTests(unit_test);
-  }
-
-  if (!unit_test.Passed()) {
-    PrintFailedTests(unit_test);
-    PrintFailedTestSuites(unit_test);
-  }
-
-  int num_disabled = unit_test.reportable_disabled_test_count();
-  if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
-    if (unit_test.Passed()) {
-      printf("\n");  // Add a spacer if no FAILURE banner is displayed.
-    }
-    ColoredPrintf(GTestColor::kYellow, "  YOU HAVE %d DISABLED %s\n\n",
-                  num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
-  }
-  // Ensure that Google Test output is printed before, e.g., heapchecker output.
-  fflush(stdout);
-}
-
-// End PrettyUnitTestResultPrinter
-
-// This class implements the TestEventListener interface.
-//
-// Class BriefUnitTestResultPrinter is copyable.
-class BriefUnitTestResultPrinter : public TestEventListener {
- public:
-  BriefUnitTestResultPrinter() {}
-  static void PrintTestName(const char* test_suite, const char* test) {
-    printf("%s.%s", test_suite, test);
-  }
-
-  // The following methods override what's in the TestEventListener class.
-  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
-  void OnTestIterationStart(const UnitTest& /*unit_test*/,
-                            int /*iteration*/) override {}
-  void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {}
-  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseStart(const TestCase& /*test_case*/) override {}
-#else
-  void OnTestSuiteStart(const TestSuite& /*test_suite*/) override {}
-#endif  // OnTestCaseStart
-
-  void OnTestStart(const TestInfo& /*test_info*/) override {}
-
-  void OnTestPartResult(const TestPartResult& result) override;
-  void OnTestEnd(const TestInfo& test_info) override;
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseEnd(const TestCase& /*test_case*/) override {}
-#else
-  void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override {}
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {}
-  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
-  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
-  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
-};
-
-// Called after an assertion failure.
-void BriefUnitTestResultPrinter::OnTestPartResult(
-    const TestPartResult& result) {
-  switch (result.type()) {
-    // If the test part succeeded, we don't need to do anything.
-    case TestPartResult::kSuccess:
-      return;
-    default:
-      // Print failure message from the assertion
-      // (e.g. expected this and got that).
-      PrintTestPartResult(result);
-      fflush(stdout);
-  }
-}
-
-void BriefUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
-  if (test_info.result()->Failed()) {
-    ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
-    PrintTestName(test_info.test_suite_name(), test_info.name());
-    PrintFullTestCommentIfPresent(test_info);
-
-    if (GTEST_FLAG(print_time)) {
-      printf(" (%s ms)\n",
-             internal::StreamableToString(test_info.result()->elapsed_time())
-                 .c_str());
-    } else {
-      printf("\n");
-    }
-    fflush(stdout);
-  }
-}
-
-void BriefUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
-                                                    int /*iteration*/) {
-  ColoredPrintf(GTestColor::kGreen, "[==========] ");
-  printf("%s from %s ran.",
-         FormatTestCount(unit_test.test_to_run_count()).c_str(),
-         FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
-  if (GTEST_FLAG(print_time)) {
-    printf(" (%s ms total)",
-           internal::StreamableToString(unit_test.elapsed_time()).c_str());
-  }
-  printf("\n");
-  ColoredPrintf(GTestColor::kGreen, "[  PASSED  ] ");
-  printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
-
-  const int skipped_test_count = unit_test.skipped_test_count();
-  if (skipped_test_count > 0) {
-    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
-    printf("%s.\n", FormatTestCount(skipped_test_count).c_str());
-  }
-
-  int num_disabled = unit_test.reportable_disabled_test_count();
-  if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
-    if (unit_test.Passed()) {
-      printf("\n");  // Add a spacer if no FAILURE banner is displayed.
-    }
-    ColoredPrintf(GTestColor::kYellow, "  YOU HAVE %d DISABLED %s\n\n",
-                  num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
-  }
-  // Ensure that Google Test output is printed before, e.g., heapchecker output.
-  fflush(stdout);
-}
-
-// End BriefUnitTestResultPrinter
-
-// class TestEventRepeater
-//
-// This class forwards events to other event listeners.
-class TestEventRepeater : public TestEventListener {
- public:
-  TestEventRepeater() : forwarding_enabled_(true) {}
-  ~TestEventRepeater() override;
-  void Append(TestEventListener *listener);
-  TestEventListener* Release(TestEventListener* listener);
-
-  // Controls whether events will be forwarded to listeners_. Set to false
-  // in death test child processes.
-  bool forwarding_enabled() const { return forwarding_enabled_; }
-  void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
-
-  void OnTestProgramStart(const UnitTest& unit_test) override;
-  void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
-  void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
-  void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) override;
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseStart(const TestSuite& parameter) override;
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestSuiteStart(const TestSuite& parameter) override;
-  void OnTestStart(const TestInfo& test_info) override;
-  void OnTestPartResult(const TestPartResult& result) override;
-  void OnTestEnd(const TestInfo& test_info) override;
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseEnd(const TestCase& parameter) override;
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestSuiteEnd(const TestSuite& parameter) override;
-  void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override;
-  void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) override;
-  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
-  void OnTestProgramEnd(const UnitTest& unit_test) override;
-
- private:
-  // Controls whether events will be forwarded to listeners_. Set to false
-  // in death test child processes.
-  bool forwarding_enabled_;
-  // The list of listeners that receive events.
-  std::vector<TestEventListener*> listeners_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
-};
-
-TestEventRepeater::~TestEventRepeater() {
-  ForEach(listeners_, Delete<TestEventListener>);
-}
-
-void TestEventRepeater::Append(TestEventListener *listener) {
-  listeners_.push_back(listener);
-}
-
-TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
-  for (size_t i = 0; i < listeners_.size(); ++i) {
-    if (listeners_[i] == listener) {
-      listeners_.erase(listeners_.begin() + static_cast<int>(i));
-      return listener;
-    }
-  }
-
-  return nullptr;
-}
-
-// Since most methods are very similar, use macros to reduce boilerplate.
-// This defines a member that forwards the call to all listeners.
-#define GTEST_REPEATER_METHOD_(Name, Type) \
-void TestEventRepeater::Name(const Type& parameter) { \
-  if (forwarding_enabled_) { \
-    for (size_t i = 0; i < listeners_.size(); i++) { \
-      listeners_[i]->Name(parameter); \
-    } \
-  } \
-}
-// This defines a member that forwards the call to all listeners in reverse
-// order.
-#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type)      \
-  void TestEventRepeater::Name(const Type& parameter) { \
-    if (forwarding_enabled_) {                          \
-      for (size_t i = listeners_.size(); i != 0; i--) { \
-        listeners_[i - 1]->Name(parameter);             \
-      }                                                 \
-    }                                                   \
-  }
-
-GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
-GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REPEATER_METHOD_(OnTestCaseStart, TestSuite)
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REPEATER_METHOD_(OnTestSuiteStart, TestSuite)
-GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
-GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
-GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestSuite)
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REVERSE_REPEATER_METHOD_(OnTestSuiteEnd, TestSuite)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
-
-#undef GTEST_REPEATER_METHOD_
-#undef GTEST_REVERSE_REPEATER_METHOD_
-
-void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
-                                             int iteration) {
-  if (forwarding_enabled_) {
-    for (size_t i = 0; i < listeners_.size(); i++) {
-      listeners_[i]->OnTestIterationStart(unit_test, iteration);
-    }
-  }
-}
-
-void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
-                                           int iteration) {
-  if (forwarding_enabled_) {
-    for (size_t i = listeners_.size(); i > 0; i--) {
-      listeners_[i - 1]->OnTestIterationEnd(unit_test, iteration);
-    }
-  }
-}
-
-// End TestEventRepeater
-
-// This class generates an XML output file.
-class XmlUnitTestResultPrinter : public EmptyTestEventListener {
- public:
-  explicit XmlUnitTestResultPrinter(const char* output_file);
-
-  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
-  void ListTestsMatchingFilter(const std::vector<TestSuite*>& test_suites);
-
-  // Prints an XML summary of all unit tests.
-  static void PrintXmlTestsList(std::ostream* stream,
-                                const std::vector<TestSuite*>& test_suites);
-
- private:
-  // Is c a whitespace character that is normalized to a space character
-  // when it appears in an XML attribute value?
-  static bool IsNormalizableWhitespace(char c) {
-    return c == 0x9 || c == 0xA || c == 0xD;
-  }
-
-  // May c appear in a well-formed XML document?
-  static bool IsValidXmlCharacter(char c) {
-    return IsNormalizableWhitespace(c) || c >= 0x20;
-  }
-
-  // Returns an XML-escaped copy of the input string str.  If
-  // is_attribute is true, the text is meant to appear as an attribute
-  // value, and normalizable whitespace is preserved by replacing it
-  // with character references.
-  static std::string EscapeXml(const std::string& str, bool is_attribute);
-
-  // Returns the given string with all characters invalid in XML removed.
-  static std::string RemoveInvalidXmlCharacters(const std::string& str);
-
-  // Convenience wrapper around EscapeXml when str is an attribute value.
-  static std::string EscapeXmlAttribute(const std::string& str) {
-    return EscapeXml(str, true);
-  }
-
-  // Convenience wrapper around EscapeXml when str is not an attribute value.
-  static std::string EscapeXmlText(const char* str) {
-    return EscapeXml(str, false);
-  }
-
-  // Verifies that the given attribute belongs to the given element and
-  // streams the attribute as XML.
-  static void OutputXmlAttribute(std::ostream* stream,
-                                 const std::string& element_name,
-                                 const std::string& name,
-                                 const std::string& value);
-
-  // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
-  static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
-
-  // Streams a test suite XML stanza containing the given test result.
-  //
-  // Requires: result.Failed()
-  static void OutputXmlTestSuiteForTestResult(::std::ostream* stream,
-                                              const TestResult& result);
-
-  // Streams an XML representation of a TestResult object.
-  static void OutputXmlTestResult(::std::ostream* stream,
-                                  const TestResult& result);
-
-  // Streams an XML representation of a TestInfo object.
-  static void OutputXmlTestInfo(::std::ostream* stream,
-                                const char* test_suite_name,
-                                const TestInfo& test_info);
-
-  // Prints an XML representation of a TestSuite object
-  static void PrintXmlTestSuite(::std::ostream* stream,
-                                const TestSuite& test_suite);
-
-  // Prints an XML summary of unit_test to output stream out.
-  static void PrintXmlUnitTest(::std::ostream* stream,
-                               const UnitTest& unit_test);
-
-  // Produces a string representing the test properties in a result as space
-  // delimited XML attributes based on the property key="value" pairs.
-  // When the std::string is not empty, it includes a space at the beginning,
-  // to delimit this attribute from prior attributes.
-  static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
-
-  // Streams an XML representation of the test properties of a TestResult
-  // object.
-  static void OutputXmlTestProperties(std::ostream* stream,
-                                      const TestResult& result);
-
-  // The output file.
-  const std::string output_file_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
-};
-
-// Creates a new XmlUnitTestResultPrinter.
-XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
-    : output_file_(output_file) {
-  if (output_file_.empty()) {
-    GTEST_LOG_(FATAL) << "XML output file may not be null";
-  }
-}
-
-// Called after the unit test ends.
-void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
-                                                  int /*iteration*/) {
-  FILE* xmlout = OpenFileForWriting(output_file_);
-  std::stringstream stream;
-  PrintXmlUnitTest(&stream, unit_test);
-  fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
-  fclose(xmlout);
-}
-
-void XmlUnitTestResultPrinter::ListTestsMatchingFilter(
-    const std::vector<TestSuite*>& test_suites) {
-  FILE* xmlout = OpenFileForWriting(output_file_);
-  std::stringstream stream;
-  PrintXmlTestsList(&stream, test_suites);
-  fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
-  fclose(xmlout);
-}
-
-// Returns an XML-escaped copy of the input string str.  If is_attribute
-// is true, the text is meant to appear as an attribute value, and
-// normalizable whitespace is preserved by replacing it with character
-// references.
-//
-// Invalid XML characters in str, if any, are stripped from the output.
-// It is expected that most, if not all, of the text processed by this
-// module will consist of ordinary English text.
-// If this module is ever modified to produce version 1.1 XML output,
-// most invalid characters can be retained using character references.
-std::string XmlUnitTestResultPrinter::EscapeXml(
-    const std::string& str, bool is_attribute) {
-  Message m;
-
-  for (size_t i = 0; i < str.size(); ++i) {
-    const char ch = str[i];
-    switch (ch) {
-      case '<':
-        m << "&lt;";
-        break;
-      case '>':
-        m << "&gt;";
-        break;
-      case '&':
-        m << "&amp;";
-        break;
-      case '\'':
-        if (is_attribute)
-          m << "&apos;";
-        else
-          m << '\'';
-        break;
-      case '"':
-        if (is_attribute)
-          m << "&quot;";
-        else
-          m << '"';
-        break;
-      default:
-        if (IsValidXmlCharacter(ch)) {
-          if (is_attribute && IsNormalizableWhitespace(ch))
-            m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
-              << ";";
-          else
-            m << ch;
-        }
-        break;
-    }
-  }
-
-  return m.GetString();
-}
-
-// Returns the given string with all characters invalid in XML removed.
-// Currently invalid characters are dropped from the string. An
-// alternative is to replace them with certain characters such as . or ?.
-std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
-    const std::string& str) {
-  std::string output;
-  output.reserve(str.size());
-  for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
-    if (IsValidXmlCharacter(*it))
-      output.push_back(*it);
-
-  return output;
-}
-
-// The following routines generate an XML representation of a UnitTest
-// object.
-// GOOGLETEST_CM0009 DO NOT DELETE
-//
-// This is how Google Test concepts map to the DTD:
-//
-// <testsuites name="AllTests">        <-- corresponds to a UnitTest object
-//   <testsuite name="testcase-name">  <-- corresponds to a TestSuite object
-//     <testcase name="test-name">     <-- corresponds to a TestInfo object
-//       <failure message="...">...</failure>
-//       <failure message="...">...</failure>
-//       <failure message="...">...</failure>
-//                                     <-- individual assertion failures
-//     </testcase>
-//   </testsuite>
-// </testsuites>
-
-// Formats the given time in milliseconds as seconds.
-std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
-  ::std::stringstream ss;
-  ss << (static_cast<double>(ms) * 1e-3);
-  return ss.str();
-}
-
-static bool PortableLocaltime(time_t seconds, struct tm* out) {
-#if defined(_MSC_VER)
-  return localtime_s(out, &seconds) == 0;
-#elif defined(__MINGW32__) || defined(__MINGW64__)
-  // MINGW <time.h> provides neither localtime_r nor localtime_s, but uses
-  // Windows' localtime(), which has a thread-local tm buffer.
-  struct tm* tm_ptr = localtime(&seconds);  // NOLINT
-  if (tm_ptr == nullptr) return false;
-  *out = *tm_ptr;
-  return true;
-#elif defined(__STDC_LIB_EXT1__)
-  // Uses localtime_s when available as localtime_r is only available from
-  // C23 standard.
-  return localtime_s(&seconds, out) != nullptr;
-#else
-  return localtime_r(&seconds, out) != nullptr;
-#endif
-}
-
-// Converts the given epoch time in milliseconds to a date string in the ISO
-// 8601 format, without the timezone information.
-std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
-  struct tm time_struct;
-  if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
-    return "";
-  // YYYY-MM-DDThh:mm:ss.sss
-  return StreamableToString(time_struct.tm_year + 1900) + "-" +
-      String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
-      String::FormatIntWidth2(time_struct.tm_mday) + "T" +
-      String::FormatIntWidth2(time_struct.tm_hour) + ":" +
-      String::FormatIntWidth2(time_struct.tm_min) + ":" +
-      String::FormatIntWidth2(time_struct.tm_sec) + "." +
-      String::FormatIntWidthN(static_cast<int>(ms % 1000), 3);
-}
-
-// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
-void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
-                                                     const char* data) {
-  const char* segment = data;
-  *stream << "<![CDATA[";
-  for (;;) {
-    const char* const next_segment = strstr(segment, "]]>");
-    if (next_segment != nullptr) {
-      stream->write(
-          segment, static_cast<std::streamsize>(next_segment - segment));
-      *stream << "]]>]]&gt;<![CDATA[";
-      segment = next_segment + strlen("]]>");
-    } else {
-      *stream << segment;
-      break;
-    }
-  }
-  *stream << "]]>";
-}
-
-void XmlUnitTestResultPrinter::OutputXmlAttribute(
-    std::ostream* stream,
-    const std::string& element_name,
-    const std::string& name,
-    const std::string& value) {
-  const std::vector<std::string>& allowed_names =
-      GetReservedOutputAttributesForElement(element_name);
-
-  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
-                   allowed_names.end())
-      << "Attribute " << name << " is not allowed for element <" << element_name
-      << ">.";
-
-  *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
-}
-
-// Streams a test suite XML stanza containing the given test result.
-void XmlUnitTestResultPrinter::OutputXmlTestSuiteForTestResult(
-    ::std::ostream* stream, const TestResult& result) {
-  // Output the boilerplate for a minimal test suite with one test.
-  *stream << "  <testsuite";
-  OutputXmlAttribute(stream, "testsuite", "name", "NonTestSuiteFailure");
-  OutputXmlAttribute(stream, "testsuite", "tests", "1");
-  OutputXmlAttribute(stream, "testsuite", "failures", "1");
-  OutputXmlAttribute(stream, "testsuite", "disabled", "0");
-  OutputXmlAttribute(stream, "testsuite", "skipped", "0");
-  OutputXmlAttribute(stream, "testsuite", "errors", "0");
-  OutputXmlAttribute(stream, "testsuite", "time",
-                     FormatTimeInMillisAsSeconds(result.elapsed_time()));
-  OutputXmlAttribute(
-      stream, "testsuite", "timestamp",
-      FormatEpochTimeInMillisAsIso8601(result.start_timestamp()));
-  *stream << ">";
-
-  // Output the boilerplate for a minimal test case with a single test.
-  *stream << "    <testcase";
-  OutputXmlAttribute(stream, "testcase", "name", "");
-  OutputXmlAttribute(stream, "testcase", "status", "run");
-  OutputXmlAttribute(stream, "testcase", "result", "completed");
-  OutputXmlAttribute(stream, "testcase", "classname", "");
-  OutputXmlAttribute(stream, "testcase", "time",
-                     FormatTimeInMillisAsSeconds(result.elapsed_time()));
-  OutputXmlAttribute(
-      stream, "testcase", "timestamp",
-      FormatEpochTimeInMillisAsIso8601(result.start_timestamp()));
-
-  // Output the actual test result.
-  OutputXmlTestResult(stream, result);
-
-  // Complete the test suite.
-  *stream << "  </testsuite>\n";
-}
-
-// Prints an XML representation of a TestInfo object.
-void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
-                                                 const char* test_suite_name,
-                                                 const TestInfo& test_info) {
-  const TestResult& result = *test_info.result();
-  const std::string kTestsuite = "testcase";
-
-  if (test_info.is_in_another_shard()) {
-    return;
-  }
-
-  *stream << "    <testcase";
-  OutputXmlAttribute(stream, kTestsuite, "name", test_info.name());
-
-  if (test_info.value_param() != nullptr) {
-    OutputXmlAttribute(stream, kTestsuite, "value_param",
-                       test_info.value_param());
-  }
-  if (test_info.type_param() != nullptr) {
-    OutputXmlAttribute(stream, kTestsuite, "type_param",
-                       test_info.type_param());
-  }
-  if (GTEST_FLAG(list_tests)) {
-    OutputXmlAttribute(stream, kTestsuite, "file", test_info.file());
-    OutputXmlAttribute(stream, kTestsuite, "line",
-                       StreamableToString(test_info.line()));
-    *stream << " />\n";
-    return;
-  }
-
-  OutputXmlAttribute(stream, kTestsuite, "status",
-                     test_info.should_run() ? "run" : "notrun");
-  OutputXmlAttribute(stream, kTestsuite, "result",
-                     test_info.should_run()
-                         ? (result.Skipped() ? "skipped" : "completed")
-                         : "suppressed");
-  OutputXmlAttribute(stream, kTestsuite, "time",
-                     FormatTimeInMillisAsSeconds(result.elapsed_time()));
-  OutputXmlAttribute(
-      stream, kTestsuite, "timestamp",
-      FormatEpochTimeInMillisAsIso8601(result.start_timestamp()));
-  OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
-
-  OutputXmlTestResult(stream, result);
-}
-
-void XmlUnitTestResultPrinter::OutputXmlTestResult(::std::ostream* stream,
-                                                   const TestResult& result) {
-  int failures = 0;
-  int skips = 0;
-  for (int i = 0; i < result.total_part_count(); ++i) {
-    const TestPartResult& part = result.GetTestPartResult(i);
-    if (part.failed()) {
-      if (++failures == 1 && skips == 0) {
-        *stream << ">\n";
-      }
-      const std::string location =
-          internal::FormatCompilerIndependentFileLocation(part.file_name(),
-                                                          part.line_number());
-      const std::string summary = location + "\n" + part.summary();
-      *stream << "      <failure message=\""
-              << EscapeXmlAttribute(summary)
-              << "\" type=\"\">";
-      const std::string detail = location + "\n" + part.message();
-      OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
-      *stream << "</failure>\n";
-    } else if (part.skipped()) {
-      if (++skips == 1 && failures == 0) {
-        *stream << ">\n";
-      }
-      const std::string location =
-          internal::FormatCompilerIndependentFileLocation(part.file_name(),
-                                                          part.line_number());
-      const std::string summary = location + "\n" + part.summary();
-      *stream << "      <skipped message=\""
-              << EscapeXmlAttribute(summary.c_str()) << "\">";
-      const std::string detail = location + "\n" + part.message();
-      OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
-      *stream << "</skipped>\n";
-    }
-  }
-
-  if (failures == 0 && skips == 0 && result.test_property_count() == 0) {
-    *stream << " />\n";
-  } else {
-    if (failures == 0 && skips == 0) {
-      *stream << ">\n";
-    }
-    OutputXmlTestProperties(stream, result);
-    *stream << "    </testcase>\n";
-  }
-}
-
-// Prints an XML representation of a TestSuite object
-void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
-                                                 const TestSuite& test_suite) {
-  const std::string kTestsuite = "testsuite";
-  *stream << "  <" << kTestsuite;
-  OutputXmlAttribute(stream, kTestsuite, "name", test_suite.name());
-  OutputXmlAttribute(stream, kTestsuite, "tests",
-                     StreamableToString(test_suite.reportable_test_count()));
-  if (!GTEST_FLAG(list_tests)) {
-    OutputXmlAttribute(stream, kTestsuite, "failures",
-                       StreamableToString(test_suite.failed_test_count()));
-    OutputXmlAttribute(
-        stream, kTestsuite, "disabled",
-        StreamableToString(test_suite.reportable_disabled_test_count()));
-    OutputXmlAttribute(stream, kTestsuite, "skipped",
-                       StreamableToString(test_suite.skipped_test_count()));
-
-    OutputXmlAttribute(stream, kTestsuite, "errors", "0");
-
-    OutputXmlAttribute(stream, kTestsuite, "time",
-                       FormatTimeInMillisAsSeconds(test_suite.elapsed_time()));
-    OutputXmlAttribute(
-        stream, kTestsuite, "timestamp",
-        FormatEpochTimeInMillisAsIso8601(test_suite.start_timestamp()));
-    *stream << TestPropertiesAsXmlAttributes(test_suite.ad_hoc_test_result());
-  }
-  *stream << ">\n";
-  for (int i = 0; i < test_suite.total_test_count(); ++i) {
-    if (test_suite.GetTestInfo(i)->is_reportable())
-      OutputXmlTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
-  }
-  *stream << "  </" << kTestsuite << ">\n";
-}
-
-// Prints an XML summary of unit_test to output stream out.
-void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
-                                                const UnitTest& unit_test) {
-  const std::string kTestsuites = "testsuites";
-
-  *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-  *stream << "<" << kTestsuites;
-
-  OutputXmlAttribute(stream, kTestsuites, "tests",
-                     StreamableToString(unit_test.reportable_test_count()));
-  OutputXmlAttribute(stream, kTestsuites, "failures",
-                     StreamableToString(unit_test.failed_test_count()));
-  OutputXmlAttribute(
-      stream, kTestsuites, "disabled",
-      StreamableToString(unit_test.reportable_disabled_test_count()));
-  OutputXmlAttribute(stream, kTestsuites, "errors", "0");
-  OutputXmlAttribute(stream, kTestsuites, "time",
-                     FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
-  OutputXmlAttribute(
-      stream, kTestsuites, "timestamp",
-      FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
-
-  if (GTEST_FLAG(shuffle)) {
-    OutputXmlAttribute(stream, kTestsuites, "random_seed",
-                       StreamableToString(unit_test.random_seed()));
-  }
-  *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
-
-  OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
-  *stream << ">\n";
-
-  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
-    if (unit_test.GetTestSuite(i)->reportable_test_count() > 0)
-      PrintXmlTestSuite(stream, *unit_test.GetTestSuite(i));
-  }
-
-  // If there was a test failure outside of one of the test suites (like in a
-  // test environment) include that in the output.
-  if (unit_test.ad_hoc_test_result().Failed()) {
-    OutputXmlTestSuiteForTestResult(stream, unit_test.ad_hoc_test_result());
-  }
-
-  *stream << "</" << kTestsuites << ">\n";
-}
-
-void XmlUnitTestResultPrinter::PrintXmlTestsList(
-    std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
-  const std::string kTestsuites = "testsuites";
-
-  *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-  *stream << "<" << kTestsuites;
-
-  int total_tests = 0;
-  for (auto test_suite : test_suites) {
-    total_tests += test_suite->total_test_count();
-  }
-  OutputXmlAttribute(stream, kTestsuites, "tests",
-                     StreamableToString(total_tests));
-  OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
-  *stream << ">\n";
-
-  for (auto test_suite : test_suites) {
-    PrintXmlTestSuite(stream, *test_suite);
-  }
-  *stream << "</" << kTestsuites << ">\n";
-}
-
-// Produces a string representing the test properties in a result as space
-// delimited XML attributes based on the property key="value" pairs.
-std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
-    const TestResult& result) {
-  Message attributes;
-  for (int i = 0; i < result.test_property_count(); ++i) {
-    const TestProperty& property = result.GetTestProperty(i);
-    attributes << " " << property.key() << "="
-        << "\"" << EscapeXmlAttribute(property.value()) << "\"";
-  }
-  return attributes.GetString();
-}
-
-void XmlUnitTestResultPrinter::OutputXmlTestProperties(
-    std::ostream* stream, const TestResult& result) {
-  const std::string kProperties = "properties";
-  const std::string kProperty = "property";
-
-  if (result.test_property_count() <= 0) {
-    return;
-  }
-
-  *stream << "<" << kProperties << ">\n";
-  for (int i = 0; i < result.test_property_count(); ++i) {
-    const TestProperty& property = result.GetTestProperty(i);
-    *stream << "<" << kProperty;
-    *stream << " name=\"" << EscapeXmlAttribute(property.key()) << "\"";
-    *stream << " value=\"" << EscapeXmlAttribute(property.value()) << "\"";
-    *stream << "/>\n";
-  }
-  *stream << "</" << kProperties << ">\n";
-}
-
-// End XmlUnitTestResultPrinter
-
-// This class generates an JSON output file.
-class JsonUnitTestResultPrinter : public EmptyTestEventListener {
- public:
-  explicit JsonUnitTestResultPrinter(const char* output_file);
-
-  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
-
-  // Prints an JSON summary of all unit tests.
-  static void PrintJsonTestList(::std::ostream* stream,
-                                const std::vector<TestSuite*>& test_suites);
-
- private:
-  // Returns an JSON-escaped copy of the input string str.
-  static std::string EscapeJson(const std::string& str);
-
-  //// Verifies that the given attribute belongs to the given element and
-  //// streams the attribute as JSON.
-  static void OutputJsonKey(std::ostream* stream,
-                            const std::string& element_name,
-                            const std::string& name,
-                            const std::string& value,
-                            const std::string& indent,
-                            bool comma = true);
-  static void OutputJsonKey(std::ostream* stream,
-                            const std::string& element_name,
-                            const std::string& name,
-                            int value,
-                            const std::string& indent,
-                            bool comma = true);
-
-  // Streams a test suite JSON stanza containing the given test result.
-  //
-  // Requires: result.Failed()
-  static void OutputJsonTestSuiteForTestResult(::std::ostream* stream,
-                                               const TestResult& result);
-
-  // Streams a JSON representation of a TestResult object.
-  static void OutputJsonTestResult(::std::ostream* stream,
-                                   const TestResult& result);
-
-  // Streams a JSON representation of a TestInfo object.
-  static void OutputJsonTestInfo(::std::ostream* stream,
-                                 const char* test_suite_name,
-                                 const TestInfo& test_info);
-
-  // Prints a JSON representation of a TestSuite object
-  static void PrintJsonTestSuite(::std::ostream* stream,
-                                 const TestSuite& test_suite);
-
-  // Prints a JSON summary of unit_test to output stream out.
-  static void PrintJsonUnitTest(::std::ostream* stream,
-                                const UnitTest& unit_test);
-
-  // Produces a string representing the test properties in a result as
-  // a JSON dictionary.
-  static std::string TestPropertiesAsJson(const TestResult& result,
-                                          const std::string& indent);
-
-  // The output file.
-  const std::string output_file_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(JsonUnitTestResultPrinter);
-};
-
-// Creates a new JsonUnitTestResultPrinter.
-JsonUnitTestResultPrinter::JsonUnitTestResultPrinter(const char* output_file)
-    : output_file_(output_file) {
-  if (output_file_.empty()) {
-    GTEST_LOG_(FATAL) << "JSON output file may not be null";
-  }
-}
-
-void JsonUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
-                                                  int /*iteration*/) {
-  FILE* jsonout = OpenFileForWriting(output_file_);
-  std::stringstream stream;
-  PrintJsonUnitTest(&stream, unit_test);
-  fprintf(jsonout, "%s", StringStreamToString(&stream).c_str());
-  fclose(jsonout);
-}
-
-// Returns an JSON-escaped copy of the input string str.
-std::string JsonUnitTestResultPrinter::EscapeJson(const std::string& str) {
-  Message m;
-
-  for (size_t i = 0; i < str.size(); ++i) {
-    const char ch = str[i];
-    switch (ch) {
-      case '\\':
-      case '"':
-      case '/':
-        m << '\\' << ch;
-        break;
-      case '\b':
-        m << "\\b";
-        break;
-      case '\t':
-        m << "\\t";
-        break;
-      case '\n':
-        m << "\\n";
-        break;
-      case '\f':
-        m << "\\f";
-        break;
-      case '\r':
-        m << "\\r";
-        break;
-      default:
-        if (ch < ' ') {
-          m << "\\u00" << String::FormatByte(static_cast<unsigned char>(ch));
-        } else {
-          m << ch;
-        }
-        break;
-    }
-  }
-
-  return m.GetString();
-}
-
-// The following routines generate an JSON representation of a UnitTest
-// object.
-
-// Formats the given time in milliseconds as seconds.
-static std::string FormatTimeInMillisAsDuration(TimeInMillis ms) {
-  ::std::stringstream ss;
-  ss << (static_cast<double>(ms) * 1e-3) << "s";
-  return ss.str();
-}
-
-// Converts the given epoch time in milliseconds to a date string in the
-// RFC3339 format, without the timezone information.
-static std::string FormatEpochTimeInMillisAsRFC3339(TimeInMillis ms) {
-  struct tm time_struct;
-  if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
-    return "";
-  // YYYY-MM-DDThh:mm:ss
-  return StreamableToString(time_struct.tm_year + 1900) + "-" +
-      String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
-      String::FormatIntWidth2(time_struct.tm_mday) + "T" +
-      String::FormatIntWidth2(time_struct.tm_hour) + ":" +
-      String::FormatIntWidth2(time_struct.tm_min) + ":" +
-      String::FormatIntWidth2(time_struct.tm_sec) + "Z";
-}
-
-static inline std::string Indent(size_t width) {
-  return std::string(width, ' ');
-}
-
-void JsonUnitTestResultPrinter::OutputJsonKey(
-    std::ostream* stream,
-    const std::string& element_name,
-    const std::string& name,
-    const std::string& value,
-    const std::string& indent,
-    bool comma) {
-  const std::vector<std::string>& allowed_names =
-      GetReservedOutputAttributesForElement(element_name);
-
-  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
-                   allowed_names.end())
-      << "Key \"" << name << "\" is not allowed for value \"" << element_name
-      << "\".";
-
-  *stream << indent << "\"" << name << "\": \"" << EscapeJson(value) << "\"";
-  if (comma)
-    *stream << ",\n";
-}
-
-void JsonUnitTestResultPrinter::OutputJsonKey(
-    std::ostream* stream,
-    const std::string& element_name,
-    const std::string& name,
-    int value,
-    const std::string& indent,
-    bool comma) {
-  const std::vector<std::string>& allowed_names =
-      GetReservedOutputAttributesForElement(element_name);
-
-  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
-                   allowed_names.end())
-      << "Key \"" << name << "\" is not allowed for value \"" << element_name
-      << "\".";
-
-  *stream << indent << "\"" << name << "\": " << StreamableToString(value);
-  if (comma)
-    *stream << ",\n";
-}
-
-// Streams a test suite JSON stanza containing the given test result.
-void JsonUnitTestResultPrinter::OutputJsonTestSuiteForTestResult(
-    ::std::ostream* stream, const TestResult& result) {
-  // Output the boilerplate for a new test suite.
-  *stream << Indent(4) << "{\n";
-  OutputJsonKey(stream, "testsuite", "name", "NonTestSuiteFailure", Indent(6));
-  OutputJsonKey(stream, "testsuite", "tests", 1, Indent(6));
-  if (!GTEST_FLAG(list_tests)) {
-    OutputJsonKey(stream, "testsuite", "failures", 1, Indent(6));
-    OutputJsonKey(stream, "testsuite", "disabled", 0, Indent(6));
-    OutputJsonKey(stream, "testsuite", "skipped", 0, Indent(6));
-    OutputJsonKey(stream, "testsuite", "errors", 0, Indent(6));
-    OutputJsonKey(stream, "testsuite", "time",
-                  FormatTimeInMillisAsDuration(result.elapsed_time()),
-                  Indent(6));
-    OutputJsonKey(stream, "testsuite", "timestamp",
-                  FormatEpochTimeInMillisAsRFC3339(result.start_timestamp()),
-                  Indent(6));
-  }
-  *stream << Indent(6) << "\"testsuite\": [\n";
-
-  // Output the boilerplate for a new test case.
-  *stream << Indent(8) << "{\n";
-  OutputJsonKey(stream, "testcase", "name", "", Indent(10));
-  OutputJsonKey(stream, "testcase", "status", "RUN", Indent(10));
-  OutputJsonKey(stream, "testcase", "result", "COMPLETED", Indent(10));
-  OutputJsonKey(stream, "testcase", "timestamp",
-                FormatEpochTimeInMillisAsRFC3339(result.start_timestamp()),
-                Indent(10));
-  OutputJsonKey(stream, "testcase", "time",
-                FormatTimeInMillisAsDuration(result.elapsed_time()),
-                Indent(10));
-  OutputJsonKey(stream, "testcase", "classname", "", Indent(10), false);
-  *stream << TestPropertiesAsJson(result, Indent(10));
-
-  // Output the actual test result.
-  OutputJsonTestResult(stream, result);
-
-  // Finish the test suite.
-  *stream << "\n" << Indent(6) << "]\n" << Indent(4) << "}";
-}
-
-// Prints a JSON representation of a TestInfo object.
-void JsonUnitTestResultPrinter::OutputJsonTestInfo(::std::ostream* stream,
-                                                   const char* test_suite_name,
-                                                   const TestInfo& test_info) {
-  const TestResult& result = *test_info.result();
-  const std::string kTestsuite = "testcase";
-  const std::string kIndent = Indent(10);
-
-  *stream << Indent(8) << "{\n";
-  OutputJsonKey(stream, kTestsuite, "name", test_info.name(), kIndent);
-
-  if (test_info.value_param() != nullptr) {
-    OutputJsonKey(stream, kTestsuite, "value_param", test_info.value_param(),
-                  kIndent);
-  }
-  if (test_info.type_param() != nullptr) {
-    OutputJsonKey(stream, kTestsuite, "type_param", test_info.type_param(),
-                  kIndent);
-  }
-  if (GTEST_FLAG(list_tests)) {
-    OutputJsonKey(stream, kTestsuite, "file", test_info.file(), kIndent);
-    OutputJsonKey(stream, kTestsuite, "line", test_info.line(), kIndent, false);
-    *stream << "\n" << Indent(8) << "}";
-    return;
-  }
-
-  OutputJsonKey(stream, kTestsuite, "status",
-                test_info.should_run() ? "RUN" : "NOTRUN", kIndent);
-  OutputJsonKey(stream, kTestsuite, "result",
-                test_info.should_run()
-                    ? (result.Skipped() ? "SKIPPED" : "COMPLETED")
-                    : "SUPPRESSED",
-                kIndent);
-  OutputJsonKey(stream, kTestsuite, "timestamp",
-                FormatEpochTimeInMillisAsRFC3339(result.start_timestamp()),
-                kIndent);
-  OutputJsonKey(stream, kTestsuite, "time",
-                FormatTimeInMillisAsDuration(result.elapsed_time()), kIndent);
-  OutputJsonKey(stream, kTestsuite, "classname", test_suite_name, kIndent,
-                false);
-  *stream << TestPropertiesAsJson(result, kIndent);
-
-  OutputJsonTestResult(stream, result);
-}
-
-void JsonUnitTestResultPrinter::OutputJsonTestResult(::std::ostream* stream,
-                                                     const TestResult& result) {
-  const std::string kIndent = Indent(10);
-
-  int failures = 0;
-  for (int i = 0; i < result.total_part_count(); ++i) {
-    const TestPartResult& part = result.GetTestPartResult(i);
-    if (part.failed()) {
-      *stream << ",\n";
-      if (++failures == 1) {
-        *stream << kIndent << "\"" << "failures" << "\": [\n";
-      }
-      const std::string location =
-          internal::FormatCompilerIndependentFileLocation(part.file_name(),
-                                                          part.line_number());
-      const std::string message = EscapeJson(location + "\n" + part.message());
-      *stream << kIndent << "  {\n"
-              << kIndent << "    \"failure\": \"" << message << "\",\n"
-              << kIndent << "    \"type\": \"\"\n"
-              << kIndent << "  }";
-    }
-  }
-
-  if (failures > 0)
-    *stream << "\n" << kIndent << "]";
-  *stream << "\n" << Indent(8) << "}";
-}
-
-// Prints an JSON representation of a TestSuite object
-void JsonUnitTestResultPrinter::PrintJsonTestSuite(
-    std::ostream* stream, const TestSuite& test_suite) {
-  const std::string kTestsuite = "testsuite";
-  const std::string kIndent = Indent(6);
-
-  *stream << Indent(4) << "{\n";
-  OutputJsonKey(stream, kTestsuite, "name", test_suite.name(), kIndent);
-  OutputJsonKey(stream, kTestsuite, "tests", test_suite.reportable_test_count(),
-                kIndent);
-  if (!GTEST_FLAG(list_tests)) {
-    OutputJsonKey(stream, kTestsuite, "failures",
-                  test_suite.failed_test_count(), kIndent);
-    OutputJsonKey(stream, kTestsuite, "disabled",
-                  test_suite.reportable_disabled_test_count(), kIndent);
-    OutputJsonKey(stream, kTestsuite, "errors", 0, kIndent);
-    OutputJsonKey(
-        stream, kTestsuite, "timestamp",
-        FormatEpochTimeInMillisAsRFC3339(test_suite.start_timestamp()),
-        kIndent);
-    OutputJsonKey(stream, kTestsuite, "time",
-                  FormatTimeInMillisAsDuration(test_suite.elapsed_time()),
-                  kIndent, false);
-    *stream << TestPropertiesAsJson(test_suite.ad_hoc_test_result(), kIndent)
-            << ",\n";
-  }
-
-  *stream << kIndent << "\"" << kTestsuite << "\": [\n";
-
-  bool comma = false;
-  for (int i = 0; i < test_suite.total_test_count(); ++i) {
-    if (test_suite.GetTestInfo(i)->is_reportable()) {
-      if (comma) {
-        *stream << ",\n";
-      } else {
-        comma = true;
-      }
-      OutputJsonTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
-    }
-  }
-  *stream << "\n" << kIndent << "]\n" << Indent(4) << "}";
-}
-
-// Prints a JSON summary of unit_test to output stream out.
-void JsonUnitTestResultPrinter::PrintJsonUnitTest(std::ostream* stream,
-                                                  const UnitTest& unit_test) {
-  const std::string kTestsuites = "testsuites";
-  const std::string kIndent = Indent(2);
-  *stream << "{\n";
-
-  OutputJsonKey(stream, kTestsuites, "tests", unit_test.reportable_test_count(),
-                kIndent);
-  OutputJsonKey(stream, kTestsuites, "failures", unit_test.failed_test_count(),
-                kIndent);
-  OutputJsonKey(stream, kTestsuites, "disabled",
-                unit_test.reportable_disabled_test_count(), kIndent);
-  OutputJsonKey(stream, kTestsuites, "errors", 0, kIndent);
-  if (GTEST_FLAG(shuffle)) {
-    OutputJsonKey(stream, kTestsuites, "random_seed", unit_test.random_seed(),
-                  kIndent);
-  }
-  OutputJsonKey(stream, kTestsuites, "timestamp",
-                FormatEpochTimeInMillisAsRFC3339(unit_test.start_timestamp()),
-                kIndent);
-  OutputJsonKey(stream, kTestsuites, "time",
-                FormatTimeInMillisAsDuration(unit_test.elapsed_time()), kIndent,
-                false);
-
-  *stream << TestPropertiesAsJson(unit_test.ad_hoc_test_result(), kIndent)
-          << ",\n";
-
-  OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
-  *stream << kIndent << "\"" << kTestsuites << "\": [\n";
-
-  bool comma = false;
-  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
-    if (unit_test.GetTestSuite(i)->reportable_test_count() > 0) {
-      if (comma) {
-        *stream << ",\n";
-      } else {
-        comma = true;
-      }
-      PrintJsonTestSuite(stream, *unit_test.GetTestSuite(i));
-    }
-  }
-
-  // If there was a test failure outside of one of the test suites (like in a
-  // test environment) include that in the output.
-  if (unit_test.ad_hoc_test_result().Failed()) {
-    OutputJsonTestSuiteForTestResult(stream, unit_test.ad_hoc_test_result());
-  }
-
-  *stream << "\n" << kIndent << "]\n" << "}\n";
-}
-
-void JsonUnitTestResultPrinter::PrintJsonTestList(
-    std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
-  const std::string kTestsuites = "testsuites";
-  const std::string kIndent = Indent(2);
-  *stream << "{\n";
-  int total_tests = 0;
-  for (auto test_suite : test_suites) {
-    total_tests += test_suite->total_test_count();
-  }
-  OutputJsonKey(stream, kTestsuites, "tests", total_tests, kIndent);
-
-  OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
-  *stream << kIndent << "\"" << kTestsuites << "\": [\n";
-
-  for (size_t i = 0; i < test_suites.size(); ++i) {
-    if (i != 0) {
-      *stream << ",\n";
-    }
-    PrintJsonTestSuite(stream, *test_suites[i]);
-  }
-
-  *stream << "\n"
-          << kIndent << "]\n"
-          << "}\n";
-}
-// Produces a string representing the test properties in a result as
-// a JSON dictionary.
-std::string JsonUnitTestResultPrinter::TestPropertiesAsJson(
-    const TestResult& result, const std::string& indent) {
-  Message attributes;
-  for (int i = 0; i < result.test_property_count(); ++i) {
-    const TestProperty& property = result.GetTestProperty(i);
-    attributes << ",\n" << indent << "\"" << property.key() << "\": "
-               << "\"" << EscapeJson(property.value()) << "\"";
-  }
-  return attributes.GetString();
-}
-
-// End JsonUnitTestResultPrinter
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
-// replaces them by "%xx" where xx is their hexadecimal value. For
-// example, replaces "=" with "%3D".  This algorithm is O(strlen(str))
-// in both time and space -- important as the input str may contain an
-// arbitrarily long test failure message and stack trace.
-std::string StreamingListener::UrlEncode(const char* str) {
-  std::string result;
-  result.reserve(strlen(str) + 1);
-  for (char ch = *str; ch != '\0'; ch = *++str) {
-    switch (ch) {
-      case '%':
-      case '=':
-      case '&':
-      case '\n':
-        result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
-        break;
-      default:
-        result.push_back(ch);
-        break;
-    }
-  }
-  return result;
-}
-
-void StreamingListener::SocketWriter::MakeConnection() {
-  GTEST_CHECK_(sockfd_ == -1)
-      << "MakeConnection() can't be called when there is already a connection.";
-
-  addrinfo hints;
-  memset(&hints, 0, sizeof(hints));
-  hints.ai_family = AF_UNSPEC;    // To allow both IPv4 and IPv6 addresses.
-  hints.ai_socktype = SOCK_STREAM;
-  addrinfo* servinfo = nullptr;
-
-  // Use the getaddrinfo() to get a linked list of IP addresses for
-  // the given host name.
-  const int error_num = getaddrinfo(
-      host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
-  if (error_num != 0) {
-    GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
-                        << gai_strerror(error_num);
-  }
-
-  // Loop through all the results and connect to the first we can.
-  for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != nullptr;
-       cur_addr = cur_addr->ai_next) {
-    sockfd_ = socket(
-        cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
-    if (sockfd_ != -1) {
-      // Connect the client socket to the server socket.
-      if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
-        close(sockfd_);
-        sockfd_ = -1;
-      }
-    }
-  }
-
-  freeaddrinfo(servinfo);  // all done with this structure
-
-  if (sockfd_ == -1) {
-    GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
-                        << host_name_ << ":" << port_num_;
-  }
-}
-
-// End of class Streaming Listener
-#endif  // GTEST_CAN_STREAM_RESULTS__
-
-// class OsStackTraceGetter
-
-const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
-    "... " GTEST_NAME_ " internal frames ...";
-
-std::string OsStackTraceGetter::CurrentStackTrace(int max_depth, int skip_count)
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-#if GTEST_HAS_ABSL
-  std::string result;
-
-  if (max_depth <= 0) {
-    return result;
-  }
-
-  max_depth = std::min(max_depth, kMaxStackTraceDepth);
-
-  std::vector<void*> raw_stack(max_depth);
-  // Skips the frames requested by the caller, plus this function.
-  const int raw_stack_size =
-      absl::GetStackTrace(&raw_stack[0], max_depth, skip_count + 1);
-
-  void* caller_frame = nullptr;
-  {
-    MutexLock lock(&mutex_);
-    caller_frame = caller_frame_;
-  }
-
-  for (int i = 0; i < raw_stack_size; ++i) {
-    if (raw_stack[i] == caller_frame &&
-        !GTEST_FLAG(show_internal_stack_frames)) {
-      // Add a marker to the trace and stop adding frames.
-      absl::StrAppend(&result, kElidedFramesMarker, "\n");
-      break;
-    }
-
-    char tmp[1024];
-    const char* symbol = "(unknown)";
-    if (absl::Symbolize(raw_stack[i], tmp, sizeof(tmp))) {
-      symbol = tmp;
-    }
-
-    char line[1024];
-    snprintf(line, sizeof(line), "  %p: %s\n", raw_stack[i], symbol);
-    result += line;
-  }
-
-  return result;
-
-#else  // !GTEST_HAS_ABSL
-  static_cast<void>(max_depth);
-  static_cast<void>(skip_count);
-  return "";
-#endif  // GTEST_HAS_ABSL
-}
-
-void OsStackTraceGetter::UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_) {
-#if GTEST_HAS_ABSL
-  void* caller_frame = nullptr;
-  if (absl::GetStackTrace(&caller_frame, 1, 3) <= 0) {
-    caller_frame = nullptr;
-  }
-
-  MutexLock lock(&mutex_);
-  caller_frame_ = caller_frame;
-#endif  // GTEST_HAS_ABSL
-}
-
-// A helper class that creates the premature-exit file in its
-// constructor and deletes the file in its destructor.
-class ScopedPrematureExitFile {
- public:
-  explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
-      : premature_exit_filepath_(premature_exit_filepath ?
-                                 premature_exit_filepath : "") {
-    // If a path to the premature-exit file is specified...
-    if (!premature_exit_filepath_.empty()) {
-      // create the file with a single "0" character in it.  I/O
-      // errors are ignored as there's nothing better we can do and we
-      // don't want to fail the test because of this.
-      FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
-      fwrite("0", 1, 1, pfile);
-      fclose(pfile);
-    }
-  }
-
-  ~ScopedPrematureExitFile() {
-#if !defined GTEST_OS_ESP8266
-    if (!premature_exit_filepath_.empty()) {
-      int retval = remove(premature_exit_filepath_.c_str());
-      if (retval) {
-        GTEST_LOG_(ERROR) << "Failed to remove premature exit filepath \""
-                          << premature_exit_filepath_ << "\" with error "
-                          << retval;
-      }
-    }
-#endif
-  }
-
- private:
-  const std::string premature_exit_filepath_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
-};
-
-}  // namespace internal
-
-// class TestEventListeners
-
-TestEventListeners::TestEventListeners()
-    : repeater_(new internal::TestEventRepeater()),
-      default_result_printer_(nullptr),
-      default_xml_generator_(nullptr) {}
-
-TestEventListeners::~TestEventListeners() { delete repeater_; }
-
-// Returns the standard listener responsible for the default console
-// output.  Can be removed from the listeners list to shut down default
-// console output.  Note that removing this object from the listener list
-// with Release transfers its ownership to the user.
-void TestEventListeners::Append(TestEventListener* listener) {
-  repeater_->Append(listener);
-}
-
-// Removes the given event listener from the list and returns it.  It then
-// becomes the caller's responsibility to delete the listener. Returns
-// NULL if the listener is not found in the list.
-TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
-  if (listener == default_result_printer_)
-    default_result_printer_ = nullptr;
-  else if (listener == default_xml_generator_)
-    default_xml_generator_ = nullptr;
-  return repeater_->Release(listener);
-}
-
-// Returns repeater that broadcasts the TestEventListener events to all
-// subscribers.
-TestEventListener* TestEventListeners::repeater() { return repeater_; }
-
-// Sets the default_result_printer attribute to the provided listener.
-// The listener is also added to the listener list and previous
-// default_result_printer is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
-  if (default_result_printer_ != listener) {
-    // It is an error to pass this method a listener that is already in the
-    // list.
-    delete Release(default_result_printer_);
-    default_result_printer_ = listener;
-    if (listener != nullptr) Append(listener);
-  }
-}
-
-// Sets the default_xml_generator attribute to the provided listener.  The
-// listener is also added to the listener list and previous
-// default_xml_generator is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
-  if (default_xml_generator_ != listener) {
-    // It is an error to pass this method a listener that is already in the
-    // list.
-    delete Release(default_xml_generator_);
-    default_xml_generator_ = listener;
-    if (listener != nullptr) Append(listener);
-  }
-}
-
-// Controls whether events will be forwarded by the repeater to the
-// listeners in the list.
-bool TestEventListeners::EventForwardingEnabled() const {
-  return repeater_->forwarding_enabled();
-}
-
-void TestEventListeners::SuppressEventForwarding() {
-  repeater_->set_forwarding_enabled(false);
-}
-
-// class UnitTest
-
-// Gets the singleton UnitTest object.  The first time this method is
-// called, a UnitTest object is constructed and returned.  Consecutive
-// calls will return the same object.
-//
-// We don't protect this under mutex_ as a user is not supposed to
-// call this before main() starts, from which point on the return
-// value will never change.
-UnitTest* UnitTest::GetInstance() {
-  // CodeGear C++Builder insists on a public destructor for the
-  // default implementation.  Use this implementation to keep good OO
-  // design with private destructor.
-
-#if defined(__BORLANDC__)
-  static UnitTest* const instance = new UnitTest;
-  return instance;
-#else
-  static UnitTest instance;
-  return &instance;
-#endif  // defined(__BORLANDC__)
-}
-
-// Gets the number of successful test suites.
-int UnitTest::successful_test_suite_count() const {
-  return impl()->successful_test_suite_count();
-}
-
-// Gets the number of failed test suites.
-int UnitTest::failed_test_suite_count() const {
-  return impl()->failed_test_suite_count();
-}
-
-// Gets the number of all test suites.
-int UnitTest::total_test_suite_count() const {
-  return impl()->total_test_suite_count();
-}
-
-// Gets the number of all test suites that contain at least one test
-// that should run.
-int UnitTest::test_suite_to_run_count() const {
-  return impl()->test_suite_to_run_count();
-}
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-int UnitTest::successful_test_case_count() const {
-  return impl()->successful_test_suite_count();
-}
-int UnitTest::failed_test_case_count() const {
-  return impl()->failed_test_suite_count();
-}
-int UnitTest::total_test_case_count() const {
-  return impl()->total_test_suite_count();
-}
-int UnitTest::test_case_to_run_count() const {
-  return impl()->test_suite_to_run_count();
-}
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Gets the number of successful tests.
-int UnitTest::successful_test_count() const {
-  return impl()->successful_test_count();
-}
-
-// Gets the number of skipped tests.
-int UnitTest::skipped_test_count() const {
-  return impl()->skipped_test_count();
-}
-
-// Gets the number of failed tests.
-int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTest::reportable_disabled_test_count() const {
-  return impl()->reportable_disabled_test_count();
-}
-
-// Gets the number of disabled tests.
-int UnitTest::disabled_test_count() const {
-  return impl()->disabled_test_count();
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTest::reportable_test_count() const {
-  return impl()->reportable_test_count();
-}
-
-// Gets the number of all tests.
-int UnitTest::total_test_count() const { return impl()->total_test_count(); }
-
-// Gets the number of tests that should run.
-int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
-
-// Gets the time of the test program start, in ms from the start of the
-// UNIX epoch.
-internal::TimeInMillis UnitTest::start_timestamp() const {
-    return impl()->start_timestamp();
-}
-
-// Gets the elapsed time, in milliseconds.
-internal::TimeInMillis UnitTest::elapsed_time() const {
-  return impl()->elapsed_time();
-}
-
-// Returns true if and only if the unit test passed (i.e. all test suites
-// passed).
-bool UnitTest::Passed() const { return impl()->Passed(); }
-
-// Returns true if and only if the unit test failed (i.e. some test suite
-// failed or something outside of all tests failed).
-bool UnitTest::Failed() const { return impl()->Failed(); }
-
-// Gets the i-th test suite among all the test suites. i can range from 0 to
-// total_test_suite_count() - 1. If i is not in that range, returns NULL.
-const TestSuite* UnitTest::GetTestSuite(int i) const {
-  return impl()->GetTestSuite(i);
-}
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-const TestCase* UnitTest::GetTestCase(int i) const {
-  return impl()->GetTestCase(i);
-}
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Returns the TestResult containing information on test failures and
-// properties logged outside of individual test suites.
-const TestResult& UnitTest::ad_hoc_test_result() const {
-  return *impl()->ad_hoc_test_result();
-}
-
-// Gets the i-th test suite among all the test suites. i can range from 0 to
-// total_test_suite_count() - 1. If i is not in that range, returns NULL.
-TestSuite* UnitTest::GetMutableTestSuite(int i) {
-  return impl()->GetMutableSuiteCase(i);
-}
-
-// Returns the list of event listeners that can be used to track events
-// inside Google Test.
-TestEventListeners& UnitTest::listeners() {
-  return *impl()->listeners();
-}
-
-// Registers and returns a global test environment.  When a test
-// program is run, all global test environments will be set-up in the
-// order they were registered.  After all tests in the program have
-// finished, all global test environments will be torn-down in the
-// *reverse* order they were registered.
-//
-// The UnitTest object takes ownership of the given environment.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-Environment* UnitTest::AddEnvironment(Environment* env) {
-  if (env == nullptr) {
-    return nullptr;
-  }
-
-  impl_->environments().push_back(env);
-  return env;
-}
-
-// Adds a TestPartResult to the current TestResult object.  All Google Test
-// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
-// this to report their results.  The user code should use the
-// assertion macros instead of calling this directly.
-void UnitTest::AddTestPartResult(
-    TestPartResult::Type result_type,
-    const char* file_name,
-    int line_number,
-    const std::string& message,
-    const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
-  Message msg;
-  msg << message;
-
-  internal::MutexLock lock(&mutex_);
-  if (impl_->gtest_trace_stack().size() > 0) {
-    msg << "\n" << GTEST_NAME_ << " trace:";
-
-    for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) {
-      const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
-      msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
-          << " " << trace.message;
-    }
-  }
-
-  if (os_stack_trace.c_str() != nullptr && !os_stack_trace.empty()) {
-    msg << internal::kStackTraceMarker << os_stack_trace;
-  }
-
-  const TestPartResult result = TestPartResult(
-      result_type, file_name, line_number, msg.GetString().c_str());
-  impl_->GetTestPartResultReporterForCurrentThread()->
-      ReportTestPartResult(result);
-
-  if (result_type != TestPartResult::kSuccess &&
-      result_type != TestPartResult::kSkip) {
-    // gtest_break_on_failure takes precedence over
-    // gtest_throw_on_failure.  This allows a user to set the latter
-    // in the code (perhaps in order to use Google Test assertions
-    // with another testing framework) and specify the former on the
-    // command line for debugging.
-    if (GTEST_FLAG(break_on_failure)) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-      // Using DebugBreak on Windows allows gtest to still break into a debugger
-      // when a failure happens and both the --gtest_break_on_failure and
-      // the --gtest_catch_exceptions flags are specified.
-      DebugBreak();
-#elif (!defined(__native_client__)) &&            \
-    ((defined(__clang__) || defined(__GNUC__)) && \
-     (defined(__x86_64__) || defined(__i386__)))
-      // with clang/gcc we can achieve the same effect on x86 by invoking int3
-      asm("int3");
-#else
-      // Dereference nullptr through a volatile pointer to prevent the compiler
-      // from removing. We use this rather than abort() or __builtin_trap() for
-      // portability: some debuggers don't correctly trap abort().
-      *static_cast<volatile int*>(nullptr) = 1;
-#endif  // GTEST_OS_WINDOWS
-    } else if (GTEST_FLAG(throw_on_failure)) {
-#if GTEST_HAS_EXCEPTIONS
-      throw internal::GoogleTestFailureException(result);
-#else
-      // We cannot call abort() as it generates a pop-up in debug mode
-      // that cannot be suppressed in VC 7.1 or below.
-      exit(1);
-#endif
-    }
-  }
-}
-
-// Adds a TestProperty to the current TestResult object when invoked from
-// inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
-// from SetUpTestSuite or TearDownTestSuite, or to the global property set
-// when invoked elsewhere.  If the result already contains a property with
-// the same key, the value will be updated.
-void UnitTest::RecordProperty(const std::string& key,
-                              const std::string& value) {
-  impl_->RecordProperty(TestProperty(key, value));
-}
-
-// Runs all tests in this UnitTest object and prints the result.
-// Returns 0 if successful, or 1 otherwise.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-int UnitTest::Run() {
-  const bool in_death_test_child_process =
-      internal::GTEST_FLAG(internal_run_death_test).length() > 0;
-
-  // Google Test implements this protocol for catching that a test
-  // program exits before returning control to Google Test:
-  //
-  //   1. Upon start, Google Test creates a file whose absolute path
-  //      is specified by the environment variable
-  //      TEST_PREMATURE_EXIT_FILE.
-  //   2. When Google Test has finished its work, it deletes the file.
-  //
-  // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
-  // running a Google-Test-based test program and check the existence
-  // of the file at the end of the test execution to see if it has
-  // exited prematurely.
-
-  // If we are in the child process of a death test, don't
-  // create/delete the premature exit file, as doing so is unnecessary
-  // and will confuse the parent process.  Otherwise, create/delete
-  // the file upon entering/leaving this function.  If the program
-  // somehow exits before this function has a chance to return, the
-  // premature-exit file will be left undeleted, causing a test runner
-  // that understands the premature-exit-file protocol to report the
-  // test as having failed.
-  const internal::ScopedPrematureExitFile premature_exit_file(
-      in_death_test_child_process
-          ? nullptr
-          : internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE"));
-
-  // Captures the value of GTEST_FLAG(catch_exceptions).  This value will be
-  // used for the duration of the program.
-  impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
-
-#if GTEST_OS_WINDOWS
-  // Either the user wants Google Test to catch exceptions thrown by the
-  // tests or this is executing in the context of death test child
-  // process. In either case the user does not want to see pop-up dialogs
-  // about crashes - they are expected.
-  if (impl()->catch_exceptions() || in_death_test_child_process) {
-# if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-    // SetErrorMode doesn't exist on CE.
-    SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
-                 SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
-# endif  // !GTEST_OS_WINDOWS_MOBILE
-
-# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
-    // Death test children can be terminated with _abort().  On Windows,
-    // _abort() can show a dialog with a warning message.  This forces the
-    // abort message to go to stderr instead.
-    _set_error_mode(_OUT_TO_STDERR);
-# endif
-
-# if defined(_MSC_VER) && !GTEST_OS_WINDOWS_MOBILE
-    // In the debug version, Visual Studio pops up a separate dialog
-    // offering a choice to debug the aborted program. We need to suppress
-    // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
-    // executed. Google Test will notify the user of any unexpected
-    // failure via stderr.
-    if (!GTEST_FLAG(break_on_failure))
-      _set_abort_behavior(
-          0x0,                                    // Clear the following flags:
-          _WRITE_ABORT_MSG | _CALL_REPORTFAULT);  // pop-up window, core dump.
-
-    // In debug mode, the Windows CRT can crash with an assertion over invalid
-    // input (e.g. passing an invalid file descriptor).  The default handling
-    // for these assertions is to pop up a dialog and wait for user input.
-    // Instead ask the CRT to dump such assertions to stderr non-interactively.
-    if (!IsDebuggerPresent()) {
-      (void)_CrtSetReportMode(_CRT_ASSERT,
-                              _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
-      (void)_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
-    }
-# endif
-  }
-#endif  // GTEST_OS_WINDOWS
-
-  return internal::HandleExceptionsInMethodIfSupported(
-      impl(),
-      &internal::UnitTestImpl::RunAllTests,
-      "auxiliary test code (environments or event listeners)") ? 0 : 1;
-}
-
-// Returns the working directory when the first TEST() or TEST_F() was
-// executed.
-const char* UnitTest::original_working_dir() const {
-  return impl_->original_working_dir_.c_str();
-}
-
-// Returns the TestSuite object for the test that's currently running,
-// or NULL if no test is running.
-const TestSuite* UnitTest::current_test_suite() const
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-  internal::MutexLock lock(&mutex_);
-  return impl_->current_test_suite();
-}
-
-// Legacy API is still available but deprecated
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-const TestCase* UnitTest::current_test_case() const
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-  internal::MutexLock lock(&mutex_);
-  return impl_->current_test_suite();
-}
-#endif
-
-// Returns the TestInfo object for the test that's currently running,
-// or NULL if no test is running.
-const TestInfo* UnitTest::current_test_info() const
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-  internal::MutexLock lock(&mutex_);
-  return impl_->current_test_info();
-}
-
-// Returns the random seed used at the start of the current test run.
-int UnitTest::random_seed() const { return impl_->random_seed(); }
-
-// Returns ParameterizedTestSuiteRegistry object used to keep track of
-// value-parameterized tests and instantiate and register them.
-internal::ParameterizedTestSuiteRegistry&
-UnitTest::parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_) {
-  return impl_->parameterized_test_registry();
-}
-
-// Creates an empty UnitTest.
-UnitTest::UnitTest() {
-  impl_ = new internal::UnitTestImpl(this);
-}
-
-// Destructor of UnitTest.
-UnitTest::~UnitTest() {
-  delete impl_;
-}
-
-// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
-// Google Test trace stack.
-void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-  internal::MutexLock lock(&mutex_);
-  impl_->gtest_trace_stack().push_back(trace);
-}
-
-// Pops a trace from the per-thread Google Test trace stack.
-void UnitTest::PopGTestTrace()
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-  internal::MutexLock lock(&mutex_);
-  impl_->gtest_trace_stack().pop_back();
-}
-
-namespace internal {
-
-UnitTestImpl::UnitTestImpl(UnitTest* parent)
-    : parent_(parent),
-      GTEST_DISABLE_MSC_WARNINGS_PUSH_(4355 /* using this in initializer */)
-          default_global_test_part_result_reporter_(this),
-      default_per_thread_test_part_result_reporter_(this),
-      GTEST_DISABLE_MSC_WARNINGS_POP_() global_test_part_result_repoter_(
-          &default_global_test_part_result_reporter_),
-      per_thread_test_part_result_reporter_(
-          &default_per_thread_test_part_result_reporter_),
-      parameterized_test_registry_(),
-      parameterized_tests_registered_(false),
-      last_death_test_suite_(-1),
-      current_test_suite_(nullptr),
-      current_test_info_(nullptr),
-      ad_hoc_test_result_(),
-      os_stack_trace_getter_(nullptr),
-      post_flag_parse_init_performed_(false),
-      random_seed_(0),  // Will be overridden by the flag before first use.
-      random_(0),       // Will be reseeded before first use.
-      start_timestamp_(0),
-      elapsed_time_(0),
-#if GTEST_HAS_DEATH_TEST
-      death_test_factory_(new DefaultDeathTestFactory),
-#endif
-      // Will be overridden by the flag before first use.
-      catch_exceptions_(false) {
-  listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
-}
-
-UnitTestImpl::~UnitTestImpl() {
-  // Deletes every TestSuite.
-  ForEach(test_suites_, internal::Delete<TestSuite>);
-
-  // Deletes every Environment.
-  ForEach(environments_, internal::Delete<Environment>);
-
-  delete os_stack_trace_getter_;
-}
-
-// Adds a TestProperty to the current TestResult object when invoked in a
-// context of a test, to current test suite's ad_hoc_test_result when invoke
-// from SetUpTestSuite/TearDownTestSuite, or to the global property set
-// otherwise.  If the result already contains a property with the same key,
-// the value will be updated.
-void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
-  std::string xml_element;
-  TestResult* test_result;  // TestResult appropriate for property recording.
-
-  if (current_test_info_ != nullptr) {
-    xml_element = "testcase";
-    test_result = &(current_test_info_->result_);
-  } else if (current_test_suite_ != nullptr) {
-    xml_element = "testsuite";
-    test_result = &(current_test_suite_->ad_hoc_test_result_);
-  } else {
-    xml_element = "testsuites";
-    test_result = &ad_hoc_test_result_;
-  }
-  test_result->RecordProperty(xml_element, test_property);
-}
-
-#if GTEST_HAS_DEATH_TEST
-// Disables event forwarding if the control is currently in a death test
-// subprocess. Must not be called before InitGoogleTest.
-void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
-  if (internal_run_death_test_flag_.get() != nullptr)
-    listeners()->SuppressEventForwarding();
-}
-#endif  // GTEST_HAS_DEATH_TEST
-
-// Initializes event listeners performing XML output as specified by
-// UnitTestOptions. Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureXmlOutput() {
-  const std::string& output_format = UnitTestOptions::GetOutputFormat();
-  if (output_format == "xml") {
-    listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
-        UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
-  } else if (output_format == "json") {
-    listeners()->SetDefaultXmlGenerator(new JsonUnitTestResultPrinter(
-        UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
-  } else if (output_format != "") {
-    GTEST_LOG_(WARNING) << "WARNING: unrecognized output format \""
-                        << output_format << "\" ignored.";
-  }
-}
-
-#if GTEST_CAN_STREAM_RESULTS_
-// Initializes event listeners for streaming test results in string form.
-// Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureStreamingOutput() {
-  const std::string& target = GTEST_FLAG(stream_result_to);
-  if (!target.empty()) {
-    const size_t pos = target.find(':');
-    if (pos != std::string::npos) {
-      listeners()->Append(new StreamingListener(target.substr(0, pos),
-                                                target.substr(pos+1)));
-    } else {
-      GTEST_LOG_(WARNING) << "unrecognized streaming target \"" << target
-                          << "\" ignored.";
-    }
-  }
-}
-#endif  // GTEST_CAN_STREAM_RESULTS_
-
-// Performs initialization dependent upon flag values obtained in
-// ParseGoogleTestFlagsOnly.  Is called from InitGoogleTest after the call to
-// ParseGoogleTestFlagsOnly.  In case a user neglects to call InitGoogleTest
-// this function is also called from RunAllTests.  Since this function can be
-// called more than once, it has to be idempotent.
-void UnitTestImpl::PostFlagParsingInit() {
-  // Ensures that this function does not execute more than once.
-  if (!post_flag_parse_init_performed_) {
-    post_flag_parse_init_performed_ = true;
-
-#if defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
-    // Register to send notifications about key process state changes.
-    listeners()->Append(new GTEST_CUSTOM_TEST_EVENT_LISTENER_());
-#endif  // defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
-
-#if GTEST_HAS_DEATH_TEST
-    InitDeathTestSubprocessControlInfo();
-    SuppressTestEventsIfInSubprocess();
-#endif  // GTEST_HAS_DEATH_TEST
-
-    // Registers parameterized tests. This makes parameterized tests
-    // available to the UnitTest reflection API without running
-    // RUN_ALL_TESTS.
-    RegisterParameterizedTests();
-
-    // Configures listeners for XML output. This makes it possible for users
-    // to shut down the default XML output before invoking RUN_ALL_TESTS.
-    ConfigureXmlOutput();
-
-    if (GTEST_FLAG(brief)) {
-      listeners()->SetDefaultResultPrinter(new BriefUnitTestResultPrinter);
-    }
-
-#if GTEST_CAN_STREAM_RESULTS_
-    // Configures listeners for streaming test results to the specified server.
-    ConfigureStreamingOutput();
-#endif  // GTEST_CAN_STREAM_RESULTS_
-
-#if GTEST_HAS_ABSL
-    if (GTEST_FLAG(install_failure_signal_handler)) {
-      absl::FailureSignalHandlerOptions options;
-      absl::InstallFailureSignalHandler(options);
-    }
-#endif  // GTEST_HAS_ABSL
-  }
-}
-
-// A predicate that checks the name of a TestSuite against a known
-// value.
-//
-// This is used for implementation of the UnitTest class only.  We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestSuiteNameIs is copyable.
-class TestSuiteNameIs {
- public:
-  // Constructor.
-  explicit TestSuiteNameIs(const std::string& name) : name_(name) {}
-
-  // Returns true if and only if the name of test_suite matches name_.
-  bool operator()(const TestSuite* test_suite) const {
-    return test_suite != nullptr &&
-           strcmp(test_suite->name(), name_.c_str()) == 0;
-  }
-
- private:
-  std::string name_;
-};
-
-// Finds and returns a TestSuite with the given name.  If one doesn't
-// exist, creates one and returns it.  It's the CALLER'S
-// RESPONSIBILITY to ensure that this function is only called WHEN THE
-// TESTS ARE NOT SHUFFLED.
-//
-// Arguments:
-//
-//   test_suite_name: name of the test suite
-//   type_param:      the name of the test suite's type parameter, or NULL if
-//                    this is not a typed or a type-parameterized test suite.
-//   set_up_tc:       pointer to the function that sets up the test suite
-//   tear_down_tc:    pointer to the function that tears down the test suite
-TestSuite* UnitTestImpl::GetTestSuite(
-    const char* test_suite_name, const char* type_param,
-    internal::SetUpTestSuiteFunc set_up_tc,
-    internal::TearDownTestSuiteFunc tear_down_tc) {
-  // Can we find a TestSuite with the given name?
-  const auto test_suite =
-      std::find_if(test_suites_.rbegin(), test_suites_.rend(),
-                   TestSuiteNameIs(test_suite_name));
-
-  if (test_suite != test_suites_.rend()) return *test_suite;
-
-  // No.  Let's create one.
-  auto* const new_test_suite =
-      new TestSuite(test_suite_name, type_param, set_up_tc, tear_down_tc);
-
-  // Is this a death test suite?
-  if (internal::UnitTestOptions::MatchesFilter(test_suite_name,
-                                               kDeathTestSuiteFilter)) {
-    // Yes.  Inserts the test suite after the last death test suite
-    // defined so far.  This only works when the test suites haven't
-    // been shuffled.  Otherwise we may end up running a death test
-    // after a non-death test.
-    ++last_death_test_suite_;
-    test_suites_.insert(test_suites_.begin() + last_death_test_suite_,
-                        new_test_suite);
-  } else {
-    // No.  Appends to the end of the list.
-    test_suites_.push_back(new_test_suite);
-  }
-
-  test_suite_indices_.push_back(static_cast<int>(test_suite_indices_.size()));
-  return new_test_suite;
-}
-
-// Helpers for setting up / tearing down the given environment.  They
-// are for use in the ForEach() function.
-static void SetUpEnvironment(Environment* env) { env->SetUp(); }
-static void TearDownEnvironment(Environment* env) { env->TearDown(); }
-
-// Runs all tests in this UnitTest object, prints the result, and
-// returns true if all tests are successful.  If any exception is
-// thrown during a test, the test is considered to be failed, but the
-// rest of the tests will still be run.
-//
-// When parameterized tests are enabled, it expands and registers
-// parameterized tests first in RegisterParameterizedTests().
-// All other functions called from RunAllTests() may safely assume that
-// parameterized tests are ready to be counted and run.
-bool UnitTestImpl::RunAllTests() {
-  // True if and only if Google Test is initialized before RUN_ALL_TESTS() is
-  // called.
-  const bool gtest_is_initialized_before_run_all_tests = GTestIsInitialized();
-
-  // Do not run any test if the --help flag was specified.
-  if (g_help_flag)
-    return true;
-
-  // Repeats the call to the post-flag parsing initialization in case the
-  // user didn't call InitGoogleTest.
-  PostFlagParsingInit();
-
-  // Even if sharding is not on, test runners may want to use the
-  // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
-  // protocol.
-  internal::WriteToShardStatusFileIfNeeded();
-
-  // True if and only if we are in a subprocess for running a thread-safe-style
-  // death test.
-  bool in_subprocess_for_death_test = false;
-
-#if GTEST_HAS_DEATH_TEST
-  in_subprocess_for_death_test =
-      (internal_run_death_test_flag_.get() != nullptr);
-# if defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
-  if (in_subprocess_for_death_test) {
-    GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_();
-  }
-# endif  // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
-#endif  // GTEST_HAS_DEATH_TEST
-
-  const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
-                                        in_subprocess_for_death_test);
-
-  // Compares the full test names with the filter to decide which
-  // tests to run.
-  const bool has_tests_to_run = FilterTests(should_shard
-                                              ? HONOR_SHARDING_PROTOCOL
-                                              : IGNORE_SHARDING_PROTOCOL) > 0;
-
-  // Lists the tests and exits if the --gtest_list_tests flag was specified.
-  if (GTEST_FLAG(list_tests)) {
-    // This must be called *after* FilterTests() has been called.
-    ListTestsMatchingFilter();
-    return true;
-  }
-
-  random_seed_ = GTEST_FLAG(shuffle) ?
-      GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
-
-  // True if and only if at least one test has failed.
-  bool failed = false;
-
-  TestEventListener* repeater = listeners()->repeater();
-
-  start_timestamp_ = GetTimeInMillis();
-  repeater->OnTestProgramStart(*parent_);
-
-  // How many times to repeat the tests?  We don't want to repeat them
-  // when we are inside the subprocess of a death test.
-  const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
-  // Repeats forever if the repeat count is negative.
-  const bool gtest_repeat_forever = repeat < 0;
-  for (int i = 0; gtest_repeat_forever || i != repeat; i++) {
-    // We want to preserve failures generated by ad-hoc test
-    // assertions executed before RUN_ALL_TESTS().
-    ClearNonAdHocTestResult();
-
-    Timer timer;
-
-    // Shuffles test suites and tests if requested.
-    if (has_tests_to_run && GTEST_FLAG(shuffle)) {
-      random()->Reseed(static_cast<uint32_t>(random_seed_));
-      // This should be done before calling OnTestIterationStart(),
-      // such that a test event listener can see the actual test order
-      // in the event.
-      ShuffleTests();
-    }
-
-    // Tells the unit test event listeners that the tests are about to start.
-    repeater->OnTestIterationStart(*parent_, i);
-
-    // Runs each test suite if there is at least one test to run.
-    if (has_tests_to_run) {
-      // Sets up all environments beforehand.
-      repeater->OnEnvironmentsSetUpStart(*parent_);
-      ForEach(environments_, SetUpEnvironment);
-      repeater->OnEnvironmentsSetUpEnd(*parent_);
-
-      // Runs the tests only if there was no fatal failure or skip triggered
-      // during global set-up.
-      if (Test::IsSkipped()) {
-        // Emit diagnostics when global set-up calls skip, as it will not be
-        // emitted by default.
-        TestResult& test_result =
-            *internal::GetUnitTestImpl()->current_test_result();
-        for (int j = 0; j < test_result.total_part_count(); ++j) {
-          const TestPartResult& test_part_result =
-              test_result.GetTestPartResult(j);
-          if (test_part_result.type() == TestPartResult::kSkip) {
-            const std::string& result = test_part_result.message();
-            printf("%s\n", result.c_str());
-          }
-        }
-        fflush(stdout);
-      } else if (!Test::HasFatalFailure()) {
-        for (int test_index = 0; test_index < total_test_suite_count();
-             test_index++) {
-          GetMutableSuiteCase(test_index)->Run();
-          if (GTEST_FLAG(fail_fast) &&
-              GetMutableSuiteCase(test_index)->Failed()) {
-            for (int j = test_index + 1; j < total_test_suite_count(); j++) {
-              GetMutableSuiteCase(j)->Skip();
-            }
-            break;
-          }
-        }
-      } else if (Test::HasFatalFailure()) {
-        // If there was a fatal failure during the global setup then we know we
-        // aren't going to run any tests. Explicitly mark all of the tests as
-        // skipped to make this obvious in the output.
-        for (int test_index = 0; test_index < total_test_suite_count();
-             test_index++) {
-          GetMutableSuiteCase(test_index)->Skip();
-        }
-      }
-
-      // Tears down all environments in reverse order afterwards.
-      repeater->OnEnvironmentsTearDownStart(*parent_);
-      std::for_each(environments_.rbegin(), environments_.rend(),
-                    TearDownEnvironment);
-      repeater->OnEnvironmentsTearDownEnd(*parent_);
-    }
-
-    elapsed_time_ = timer.Elapsed();
-
-    // Tells the unit test event listener that the tests have just finished.
-    repeater->OnTestIterationEnd(*parent_, i);
-
-    // Gets the result and clears it.
-    if (!Passed()) {
-      failed = true;
-    }
-
-    // Restores the original test order after the iteration.  This
-    // allows the user to quickly repro a failure that happens in the
-    // N-th iteration without repeating the first (N - 1) iterations.
-    // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
-    // case the user somehow changes the value of the flag somewhere
-    // (it's always safe to unshuffle the tests).
-    UnshuffleTests();
-
-    if (GTEST_FLAG(shuffle)) {
-      // Picks a new random seed for each iteration.
-      random_seed_ = GetNextRandomSeed(random_seed_);
-    }
-  }
-
-  repeater->OnTestProgramEnd(*parent_);
-
-  if (!gtest_is_initialized_before_run_all_tests) {
-    ColoredPrintf(
-        GTestColor::kRed,
-        "\nIMPORTANT NOTICE - DO NOT IGNORE:\n"
-        "This test program did NOT call " GTEST_INIT_GOOGLE_TEST_NAME_
-        "() before calling RUN_ALL_TESTS(). This is INVALID. Soon " GTEST_NAME_
-        " will start to enforce the valid usage. "
-        "Please fix it ASAP, or IT WILL START TO FAIL.\n");  // NOLINT
-#if GTEST_FOR_GOOGLE_
-    ColoredPrintf(GTestColor::kRed,
-                  "For more details, see http://wiki/Main/ValidGUnitMain.\n");
-#endif  // GTEST_FOR_GOOGLE_
-  }
-
-  return !failed;
-}
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded() {
-  const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
-  if (test_shard_file != nullptr) {
-    FILE* const file = posix::FOpen(test_shard_file, "w");
-    if (file == nullptr) {
-      ColoredPrintf(GTestColor::kRed,
-                    "Could not write to the test shard status file \"%s\" "
-                    "specified by the %s environment variable.\n",
-                    test_shard_file, kTestShardStatusFile);
-      fflush(stdout);
-      exit(EXIT_FAILURE);
-    }
-    fclose(file);
-  }
-}
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (i.e., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-bool ShouldShard(const char* total_shards_env,
-                 const char* shard_index_env,
-                 bool in_subprocess_for_death_test) {
-  if (in_subprocess_for_death_test) {
-    return false;
-  }
-
-  const int32_t total_shards = Int32FromEnvOrDie(total_shards_env, -1);
-  const int32_t shard_index = Int32FromEnvOrDie(shard_index_env, -1);
-
-  if (total_shards == -1 && shard_index == -1) {
-    return false;
-  } else if (total_shards == -1 && shard_index != -1) {
-    const Message msg = Message()
-      << "Invalid environment variables: you have "
-      << kTestShardIndex << " = " << shard_index
-      << ", but have left " << kTestTotalShards << " unset.\n";
-    ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
-    fflush(stdout);
-    exit(EXIT_FAILURE);
-  } else if (total_shards != -1 && shard_index == -1) {
-    const Message msg = Message()
-      << "Invalid environment variables: you have "
-      << kTestTotalShards << " = " << total_shards
-      << ", but have left " << kTestShardIndex << " unset.\n";
-    ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
-    fflush(stdout);
-    exit(EXIT_FAILURE);
-  } else if (shard_index < 0 || shard_index >= total_shards) {
-    const Message msg = Message()
-      << "Invalid environment variables: we require 0 <= "
-      << kTestShardIndex << " < " << kTestTotalShards
-      << ", but you have " << kTestShardIndex << "=" << shard_index
-      << ", " << kTestTotalShards << "=" << total_shards << ".\n";
-    ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
-    fflush(stdout);
-    exit(EXIT_FAILURE);
-  }
-
-  return total_shards > 1;
-}
-
-// Parses the environment variable var as an Int32. If it is unset,
-// returns default_val. If it is not an Int32, prints an error
-// and aborts.
-int32_t Int32FromEnvOrDie(const char* var, int32_t default_val) {
-  const char* str_val = posix::GetEnv(var);
-  if (str_val == nullptr) {
-    return default_val;
-  }
-
-  int32_t result;
-  if (!ParseInt32(Message() << "The value of environment variable " << var,
-                  str_val, &result)) {
-    exit(EXIT_FAILURE);
-  }
-  return result;
-}
-
-// Given the total number of shards, the shard index, and the test id,
-// returns true if and only if the test should be run on this shard. The test id
-// is some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
-  return (test_id % total_shards) == shard_index;
-}
-
-// Compares the name of each test with the user-specified filter to
-// decide whether the test should be run, then records the result in
-// each TestSuite and TestInfo object.
-// If shard_tests == true, further filters tests based on sharding
-// variables in the environment - see
-// https://github.com/google/googletest/blob/master/googletest/docs/advanced.md
-// . Returns the number of tests that should run.
-int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
-  const int32_t total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
-      Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
-  const int32_t shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
-      Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
-
-  // num_runnable_tests are the number of tests that will
-  // run across all shards (i.e., match filter and are not disabled).
-  // num_selected_tests are the number of tests to be run on
-  // this shard.
-  int num_runnable_tests = 0;
-  int num_selected_tests = 0;
-  for (auto* test_suite : test_suites_) {
-    const std::string& test_suite_name = test_suite->name();
-    test_suite->set_should_run(false);
-
-    for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
-      TestInfo* const test_info = test_suite->test_info_list()[j];
-      const std::string test_name(test_info->name());
-      // A test is disabled if test suite name or test name matches
-      // kDisableTestFilter.
-      const bool is_disabled = internal::UnitTestOptions::MatchesFilter(
-                                   test_suite_name, kDisableTestFilter) ||
-                               internal::UnitTestOptions::MatchesFilter(
-                                   test_name, kDisableTestFilter);
-      test_info->is_disabled_ = is_disabled;
-
-      const bool matches_filter = internal::UnitTestOptions::FilterMatchesTest(
-          test_suite_name, test_name);
-      test_info->matches_filter_ = matches_filter;
-
-      const bool is_runnable =
-          (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
-          matches_filter;
-
-      const bool is_in_another_shard =
-          shard_tests != IGNORE_SHARDING_PROTOCOL &&
-          !ShouldRunTestOnShard(total_shards, shard_index, num_runnable_tests);
-      test_info->is_in_another_shard_ = is_in_another_shard;
-      const bool is_selected = is_runnable && !is_in_another_shard;
-
-      num_runnable_tests += is_runnable;
-      num_selected_tests += is_selected;
-
-      test_info->should_run_ = is_selected;
-      test_suite->set_should_run(test_suite->should_run() || is_selected);
-    }
-  }
-  return num_selected_tests;
-}
-
-// Prints the given C-string on a single line by replacing all '\n'
-// characters with string "\\n".  If the output takes more than
-// max_length characters, only prints the first max_length characters
-// and "...".
-static void PrintOnOneLine(const char* str, int max_length) {
-  if (str != nullptr) {
-    for (int i = 0; *str != '\0'; ++str) {
-      if (i >= max_length) {
-        printf("...");
-        break;
-      }
-      if (*str == '\n') {
-        printf("\\n");
-        i += 2;
-      } else {
-        printf("%c", *str);
-        ++i;
-      }
-    }
-  }
-}
-
-// Prints the names of the tests matching the user-specified filter flag.
-void UnitTestImpl::ListTestsMatchingFilter() {
-  // Print at most this many characters for each type/value parameter.
-  const int kMaxParamLength = 250;
-
-  for (auto* test_suite : test_suites_) {
-    bool printed_test_suite_name = false;
-
-    for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
-      const TestInfo* const test_info = test_suite->test_info_list()[j];
-      if (test_info->matches_filter_) {
-        if (!printed_test_suite_name) {
-          printed_test_suite_name = true;
-          printf("%s.", test_suite->name());
-          if (test_suite->type_param() != nullptr) {
-            printf("  # %s = ", kTypeParamLabel);
-            // We print the type parameter on a single line to make
-            // the output easy to parse by a program.
-            PrintOnOneLine(test_suite->type_param(), kMaxParamLength);
-          }
-          printf("\n");
-        }
-        printf("  %s", test_info->name());
-        if (test_info->value_param() != nullptr) {
-          printf("  # %s = ", kValueParamLabel);
-          // We print the value parameter on a single line to make the
-          // output easy to parse by a program.
-          PrintOnOneLine(test_info->value_param(), kMaxParamLength);
-        }
-        printf("\n");
-      }
-    }
-  }
-  fflush(stdout);
-  const std::string& output_format = UnitTestOptions::GetOutputFormat();
-  if (output_format == "xml" || output_format == "json") {
-    FILE* fileout = OpenFileForWriting(
-        UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
-    std::stringstream stream;
-    if (output_format == "xml") {
-      XmlUnitTestResultPrinter(
-          UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
-          .PrintXmlTestsList(&stream, test_suites_);
-    } else if (output_format == "json") {
-      JsonUnitTestResultPrinter(
-          UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
-          .PrintJsonTestList(&stream, test_suites_);
-    }
-    fprintf(fileout, "%s", StringStreamToString(&stream).c_str());
-    fclose(fileout);
-  }
-}
-
-// Sets the OS stack trace getter.
-//
-// Does nothing if the input and the current OS stack trace getter are
-// the same; otherwise, deletes the old getter and makes the input the
-// current getter.
-void UnitTestImpl::set_os_stack_trace_getter(
-    OsStackTraceGetterInterface* getter) {
-  if (os_stack_trace_getter_ != getter) {
-    delete os_stack_trace_getter_;
-    os_stack_trace_getter_ = getter;
-  }
-}
-
-// Returns the current OS stack trace getter if it is not NULL;
-// otherwise, creates an OsStackTraceGetter, makes it the current
-// getter, and returns it.
-OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
-  if (os_stack_trace_getter_ == nullptr) {
-#ifdef GTEST_OS_STACK_TRACE_GETTER_
-    os_stack_trace_getter_ = new GTEST_OS_STACK_TRACE_GETTER_;
-#else
-    os_stack_trace_getter_ = new OsStackTraceGetter;
-#endif  // GTEST_OS_STACK_TRACE_GETTER_
-  }
-
-  return os_stack_trace_getter_;
-}
-
-// Returns the most specific TestResult currently running.
-TestResult* UnitTestImpl::current_test_result() {
-  if (current_test_info_ != nullptr) {
-    return &current_test_info_->result_;
-  }
-  if (current_test_suite_ != nullptr) {
-    return &current_test_suite_->ad_hoc_test_result_;
-  }
-  return &ad_hoc_test_result_;
-}
-
-// Shuffles all test suites, and the tests within each test suite,
-// making sure that death tests are still run first.
-void UnitTestImpl::ShuffleTests() {
-  // Shuffles the death test suites.
-  ShuffleRange(random(), 0, last_death_test_suite_ + 1, &test_suite_indices_);
-
-  // Shuffles the non-death test suites.
-  ShuffleRange(random(), last_death_test_suite_ + 1,
-               static_cast<int>(test_suites_.size()), &test_suite_indices_);
-
-  // Shuffles the tests inside each test suite.
-  for (auto& test_suite : test_suites_) {
-    test_suite->ShuffleTests(random());
-  }
-}
-
-// Restores the test suites and tests to their order before the first shuffle.
-void UnitTestImpl::UnshuffleTests() {
-  for (size_t i = 0; i < test_suites_.size(); i++) {
-    // Unshuffles the tests in each test suite.
-    test_suites_[i]->UnshuffleTests();
-    // Resets the index of each test suite.
-    test_suite_indices_[i] = static_cast<int>(i);
-  }
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag.  The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
-                                            int skip_count) {
-  // We pass skip_count + 1 to skip this wrapper function in addition
-  // to what the user really wants to skip.
-  return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
-}
-
-// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
-// suppress unreachable code warnings.
-namespace {
-class ClassUniqueToAlwaysTrue {};
-}
-
-bool IsTrue(bool condition) { return condition; }
-
-bool AlwaysTrue() {
-#if GTEST_HAS_EXCEPTIONS
-  // This condition is always false so AlwaysTrue() never actually throws,
-  // but it makes the compiler think that it may throw.
-  if (IsTrue(false))
-    throw ClassUniqueToAlwaysTrue();
-#endif  // GTEST_HAS_EXCEPTIONS
-  return true;
-}
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false.  None of pstr, *pstr, and prefix can be NULL.
-bool SkipPrefix(const char* prefix, const char** pstr) {
-  const size_t prefix_len = strlen(prefix);
-  if (strncmp(*pstr, prefix, prefix_len) == 0) {
-    *pstr += prefix_len;
-    return true;
-  }
-  return false;
-}
-
-// Parses a string as a command line flag.  The string should have
-// the format "--flag=value".  When def_optional is true, the "=value"
-// part can be omitted.
-//
-// Returns the value of the flag, or NULL if the parsing failed.
-static const char* ParseFlagValue(const char* str, const char* flag,
-                                  bool def_optional) {
-  // str and flag must not be NULL.
-  if (str == nullptr || flag == nullptr) return nullptr;
-
-  // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
-  const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
-  const size_t flag_len = flag_str.length();
-  if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;
-
-  // Skips the flag name.
-  const char* flag_end = str + flag_len;
-
-  // When def_optional is true, it's OK to not have a "=value" part.
-  if (def_optional && (flag_end[0] == '\0')) {
-    return flag_end;
-  }
-
-  // If def_optional is true and there are more characters after the
-  // flag name, or if def_optional is false, there must be a '=' after
-  // the flag name.
-  if (flag_end[0] != '=') return nullptr;
-
-  // Returns the string after "=".
-  return flag_end + 1;
-}
-
-// Parses a string for a bool flag, in the form of either
-// "--flag=value" or "--flag".
-//
-// In the former case, the value is taken as true as long as it does
-// not start with '0', 'f', or 'F'.
-//
-// In the latter case, the value is taken as true.
-//
-// On success, stores the value of the flag in *value, and returns
-// true.  On failure, returns false without changing *value.
-static bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
-  // Gets the value of the flag as a string.
-  const char* const value_str = ParseFlagValue(str, flag, true);
-
-  // Aborts if the parsing failed.
-  if (value_str == nullptr) return false;
-
-  // Converts the string value to a bool.
-  *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
-  return true;
-}
-
-// Parses a string for an int32_t flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true.  On failure, returns false without changing *value.
-bool ParseInt32Flag(const char* str, const char* flag, int32_t* value) {
-  // Gets the value of the flag as a string.
-  const char* const value_str = ParseFlagValue(str, flag, false);
-
-  // Aborts if the parsing failed.
-  if (value_str == nullptr) return false;
-
-  // Sets *value to the value of the flag.
-  return ParseInt32(Message() << "The value of flag --" << flag,
-                    value_str, value);
-}
-
-// Parses a string for a string flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true.  On failure, returns false without changing *value.
-template <typename String>
-static bool ParseStringFlag(const char* str, const char* flag, String* value) {
-  // Gets the value of the flag as a string.
-  const char* const value_str = ParseFlagValue(str, flag, false);
-
-  // Aborts if the parsing failed.
-  if (value_str == nullptr) return false;
-
-  // Sets *value to the value of the flag.
-  *value = value_str;
-  return true;
-}
-
-// Determines whether a string has a prefix that Google Test uses for its
-// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
-// If Google Test detects that a command line flag has its prefix but is not
-// recognized, it will print its help message. Flags starting with
-// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
-// internal flags and do not trigger the help message.
-static bool HasGoogleTestFlagPrefix(const char* str) {
-  return (SkipPrefix("--", &str) ||
-          SkipPrefix("-", &str) ||
-          SkipPrefix("/", &str)) &&
-         !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
-         (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
-          SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
-}
-
-// Prints a string containing code-encoded text.  The following escape
-// sequences can be used in the string to control the text color:
-//
-//   @@    prints a single '@' character.
-//   @R    changes the color to red.
-//   @G    changes the color to green.
-//   @Y    changes the color to yellow.
-//   @D    changes to the default terminal text color.
-//
-static void PrintColorEncoded(const char* str) {
-  GTestColor color = GTestColor::kDefault;  // The current color.
-
-  // Conceptually, we split the string into segments divided by escape
-  // sequences.  Then we print one segment at a time.  At the end of
-  // each iteration, the str pointer advances to the beginning of the
-  // next segment.
-  for (;;) {
-    const char* p = strchr(str, '@');
-    if (p == nullptr) {
-      ColoredPrintf(color, "%s", str);
-      return;
-    }
-
-    ColoredPrintf(color, "%s", std::string(str, p).c_str());
-
-    const char ch = p[1];
-    str = p + 2;
-    if (ch == '@') {
-      ColoredPrintf(color, "@");
-    } else if (ch == 'D') {
-      color = GTestColor::kDefault;
-    } else if (ch == 'R') {
-      color = GTestColor::kRed;
-    } else if (ch == 'G') {
-      color = GTestColor::kGreen;
-    } else if (ch == 'Y') {
-      color = GTestColor::kYellow;
-    } else {
-      --str;
-    }
-  }
-}
-
-static const char kColorEncodedHelpMessage[] =
-    "This program contains tests written using " GTEST_NAME_
-    ". You can use the\n"
-    "following command line flags to control its behavior:\n"
-    "\n"
-    "Test Selection:\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "list_tests@D\n"
-    "      List the names of all tests instead of running them. The name of\n"
-    "      TEST(Foo, Bar) is \"Foo.Bar\".\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "filter=@YPOSITIVE_PATTERNS"
-    "[@G-@YNEGATIVE_PATTERNS]@D\n"
-    "      Run only the tests whose name matches one of the positive patterns "
-    "but\n"
-    "      none of the negative patterns. '?' matches any single character; "
-    "'*'\n"
-    "      matches any substring; ':' separates two patterns.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "also_run_disabled_tests@D\n"
-    "      Run all disabled tests too.\n"
-    "\n"
-    "Test Execution:\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "repeat=@Y[COUNT]@D\n"
-    "      Run the tests repeatedly; use a negative count to repeat forever.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "shuffle@D\n"
-    "      Randomize tests' orders on every iteration.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "random_seed=@Y[NUMBER]@D\n"
-    "      Random number seed to use for shuffling test orders (between 1 and\n"
-    "      99999, or 0 to use a seed based on the current time).\n"
-    "\n"
-    "Test Output:\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
-    "      Enable/disable colored output. The default is @Gauto@D.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "brief=1@D\n"
-    "      Only print test failures.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "print_time=0@D\n"
-    "      Don't print the elapsed time of each test.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G" GTEST_PATH_SEP_
-    "@Y|@G:@YFILE_PATH]@D\n"
-    "      Generate a JSON or XML report in the given directory or with the "
-    "given\n"
-    "      file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
-# if GTEST_CAN_STREAM_RESULTS_
-    "  @G--" GTEST_FLAG_PREFIX_
-    "stream_result_to=@YHOST@G:@YPORT@D\n"
-    "      Stream test results to the given server.\n"
-# endif  // GTEST_CAN_STREAM_RESULTS_
-    "\n"
-    "Assertion Behavior:\n"
-# if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-    "  @G--" GTEST_FLAG_PREFIX_
-    "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
-    "      Set the default death test style.\n"
-# endif  // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-    "  @G--" GTEST_FLAG_PREFIX_
-    "break_on_failure@D\n"
-    "      Turn assertion failures into debugger break-points.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "throw_on_failure@D\n"
-    "      Turn assertion failures into C++ exceptions for use by an external\n"
-    "      test framework.\n"
-    "  @G--" GTEST_FLAG_PREFIX_
-    "catch_exceptions=0@D\n"
-    "      Do not report exceptions as test failures. Instead, allow them\n"
-    "      to crash the program or throw a pop-up (on Windows).\n"
-    "\n"
-    "Except for @G--" GTEST_FLAG_PREFIX_
-    "list_tests@D, you can alternatively set "
-    "the corresponding\n"
-    "environment variable of a flag (all letters in upper-case). For example, "
-    "to\n"
-    "disable colored text output, you can either specify "
-    "@G--" GTEST_FLAG_PREFIX_
-    "color=no@D or set\n"
-    "the @G" GTEST_FLAG_PREFIX_UPPER_
-    "COLOR@D environment variable to @Gno@D.\n"
-    "\n"
-    "For more information, please read the " GTEST_NAME_
-    " documentation at\n"
-    "@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_
-    "\n"
-    "(not one in your own code or tests), please report it to\n"
-    "@G<" GTEST_DEV_EMAIL_ ">@D.\n";
-
-static bool ParseGoogleTestFlag(const char* const arg) {
-  return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
-                       &GTEST_FLAG(also_run_disabled_tests)) ||
-         ParseBoolFlag(arg, kBreakOnFailureFlag,
-                       &GTEST_FLAG(break_on_failure)) ||
-         ParseBoolFlag(arg, kCatchExceptionsFlag,
-                       &GTEST_FLAG(catch_exceptions)) ||
-         ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
-         ParseStringFlag(arg, kDeathTestStyleFlag,
-                         &GTEST_FLAG(death_test_style)) ||
-         ParseBoolFlag(arg, kDeathTestUseFork,
-                       &GTEST_FLAG(death_test_use_fork)) ||
-         ParseBoolFlag(arg, kFailFast, &GTEST_FLAG(fail_fast)) ||
-         ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
-         ParseStringFlag(arg, kInternalRunDeathTestFlag,
-                         &GTEST_FLAG(internal_run_death_test)) ||
-         ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
-         ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
-         ParseBoolFlag(arg, kBriefFlag, &GTEST_FLAG(brief)) ||
-         ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
-         ParseBoolFlag(arg, kPrintUTF8Flag, &GTEST_FLAG(print_utf8)) ||
-         ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
-         ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
-         ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
-         ParseInt32Flag(arg, kStackTraceDepthFlag,
-                        &GTEST_FLAG(stack_trace_depth)) ||
-         ParseStringFlag(arg, kStreamResultToFlag,
-                         &GTEST_FLAG(stream_result_to)) ||
-         ParseBoolFlag(arg, kThrowOnFailureFlag, &GTEST_FLAG(throw_on_failure));
-}
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-static void LoadFlagsFromFile(const std::string& path) {
-  FILE* flagfile = posix::FOpen(path.c_str(), "r");
-  if (!flagfile) {
-    GTEST_LOG_(FATAL) << "Unable to open file \"" << GTEST_FLAG(flagfile)
-                      << "\"";
-  }
-  std::string contents(ReadEntireFile(flagfile));
-  posix::FClose(flagfile);
-  std::vector<std::string> lines;
-  SplitString(contents, '\n', &lines);
-  for (size_t i = 0; i < lines.size(); ++i) {
-    if (lines[i].empty())
-      continue;
-    if (!ParseGoogleTestFlag(lines[i].c_str()))
-      g_help_flag = true;
-  }
-}
-#endif  // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.  The type parameter CharType can be
-// instantiated to either char or wchar_t.
-template <typename CharType>
-void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
-  for (int i = 1; i < *argc; i++) {
-    const std::string arg_string = StreamableToString(argv[i]);
-    const char* const arg = arg_string.c_str();
-
-    using internal::ParseBoolFlag;
-    using internal::ParseInt32Flag;
-    using internal::ParseStringFlag;
-
-    bool remove_flag = false;
-    if (ParseGoogleTestFlag(arg)) {
-      remove_flag = true;
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-    } else if (ParseStringFlag(arg, kFlagfileFlag, &GTEST_FLAG(flagfile))) {
-      LoadFlagsFromFile(GTEST_FLAG(flagfile));
-      remove_flag = true;
-#endif  // GTEST_USE_OWN_FLAGFILE_FLAG_
-    } else if (arg_string == "--help" || arg_string == "-h" ||
-               arg_string == "-?" || arg_string == "/?" ||
-               HasGoogleTestFlagPrefix(arg)) {
-      // Both help flag and unrecognized Google Test flags (excluding
-      // internal ones) trigger help display.
-      g_help_flag = true;
-    }
-
-    if (remove_flag) {
-      // Shift the remainder of the argv list left by one.  Note
-      // that argv has (*argc + 1) elements, the last one always being
-      // NULL.  The following loop moves the trailing NULL element as
-      // well.
-      for (int j = i; j != *argc; j++) {
-        argv[j] = argv[j + 1];
-      }
-
-      // Decrements the argument count.
-      (*argc)--;
-
-      // We also need to decrement the iterator as we just removed
-      // an element.
-      i--;
-    }
-  }
-
-  if (g_help_flag) {
-    // We print the help here instead of in RUN_ALL_TESTS(), as the
-    // latter may not be called at all if the user is using Google
-    // Test with another testing framework.
-    PrintColorEncoded(kColorEncodedHelpMessage);
-  }
-}
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
-  ParseGoogleTestFlagsOnlyImpl(argc, argv);
-
-  // Fix the value of *_NSGetArgc() on macOS, but if and only if
-  // *_NSGetArgv() == argv
-  // Only applicable to char** version of argv
-#if GTEST_OS_MAC
-#ifndef GTEST_OS_IOS
-  if (*_NSGetArgv() == argv) {
-    *_NSGetArgc() = *argc;
-  }
-#endif
-#endif
-}
-void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
-  ParseGoogleTestFlagsOnlyImpl(argc, argv);
-}
-
-// The internal implementation of InitGoogleTest().
-//
-// The type parameter CharType can be instantiated to either char or
-// wchar_t.
-template <typename CharType>
-void InitGoogleTestImpl(int* argc, CharType** argv) {
-  // We don't want to run the initialization code twice.
-  if (GTestIsInitialized()) return;
-
-  if (*argc <= 0) return;
-
-  g_argvs.clear();
-  for (int i = 0; i != *argc; i++) {
-    g_argvs.push_back(StreamableToString(argv[i]));
-  }
-
-#if GTEST_HAS_ABSL
-  absl::InitializeSymbolizer(g_argvs[0].c_str());
-#endif  // GTEST_HAS_ABSL
-
-  ParseGoogleTestFlagsOnly(argc, argv);
-  GetUnitTestImpl()->PostFlagParsingInit();
-}
-
-}  // namespace internal
-
-// Initializes Google Test.  This must be called before calling
-// RUN_ALL_TESTS().  In particular, it parses a command line for the
-// flags that Google Test recognizes.  Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned.  Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-void InitGoogleTest(int* argc, char** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-  GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else  // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-  internal::InitGoogleTestImpl(argc, argv);
-#endif  // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-void InitGoogleTest(int* argc, wchar_t** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-  GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else  // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-  internal::InitGoogleTestImpl(argc, argv);
-#endif  // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-// This overloaded version can be used on Arduino/embedded platforms where
-// there is no argc/argv.
-void InitGoogleTest() {
-  // Since Arduino doesn't have a command line, fake out the argc/argv arguments
-  int argc = 1;
-  const auto arg0 = "dummy";
-  char* argv0 = const_cast<char*>(arg0);
-  char** argv = &argv0;
-
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-  GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(&argc, argv);
-#else  // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-  internal::InitGoogleTestImpl(&argc, argv);
-#endif  // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-std::string TempDir() {
-#if defined(GTEST_CUSTOM_TEMPDIR_FUNCTION_)
-  return GTEST_CUSTOM_TEMPDIR_FUNCTION_();
-#elif GTEST_OS_WINDOWS_MOBILE
-  return "\\temp\\";
-#elif GTEST_OS_WINDOWS
-  const char* temp_dir = internal::posix::GetEnv("TEMP");
-  if (temp_dir == nullptr || temp_dir[0] == '\0') {
-    return "\\temp\\";
-  } else if (temp_dir[strlen(temp_dir) - 1] == '\\') {
-    return temp_dir;
-  } else {
-    return std::string(temp_dir) + "\\";
-  }
-#elif GTEST_OS_LINUX_ANDROID
-  const char* temp_dir = internal::posix::GetEnv("TEST_TMPDIR");
-  if (temp_dir == nullptr || temp_dir[0] == '\0') {
-    return "/data/local/tmp/";
-  } else {
-    return temp_dir;
-  }
-#elif GTEST_OS_LINUX
-  const char* temp_dir = internal::posix::GetEnv("TEST_TMPDIR");
-  if (temp_dir == nullptr || temp_dir[0] == '\0') {
-    return "/tmp/";
-  } else {
-    return temp_dir;
-  }
-#else
-  return "/tmp/";
-#endif  // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Class ScopedTrace
-
-// Pushes the given source file location and message onto a per-thread
-// trace stack maintained by Google Test.
-void ScopedTrace::PushTrace(const char* file, int line, std::string message) {
-  internal::TraceInfo trace;
-  trace.file = file;
-  trace.line = line;
-  trace.message.swap(message);
-
-  UnitTest::GetInstance()->PushGTestTrace(trace);
-}
-
-// Pops the info pushed by the c'tor.
-ScopedTrace::~ScopedTrace()
-    GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
-  UnitTest::GetInstance()->PopGTestTrace();
-}
-
-}  // namespace testing
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// This file implements death tests.
-
-
-#include <functional>
-#include <utility>
-
-
-#if GTEST_HAS_DEATH_TEST
-
-# if GTEST_OS_MAC
-#  include <crt_externs.h>
-# endif  // GTEST_OS_MAC
-
-# include <errno.h>
-# include <fcntl.h>
-# include <limits.h>
-
-# if GTEST_OS_LINUX
-#  include <signal.h>
-# endif  // GTEST_OS_LINUX
-
-# include <stdarg.h>
-
-# if GTEST_OS_WINDOWS
-#  include <windows.h>
-# else
-#  include <sys/mman.h>
-#  include <sys/wait.h>
-# endif  // GTEST_OS_WINDOWS
-
-# if GTEST_OS_QNX
-#  include <spawn.h>
-# endif  // GTEST_OS_QNX
-
-# if GTEST_OS_FUCHSIA
-#  include <lib/fdio/fd.h>
-#  include <lib/fdio/io.h>
-#  include <lib/fdio/spawn.h>
-#  include <lib/zx/channel.h>
-#  include <lib/zx/port.h>
-#  include <lib/zx/process.h>
-#  include <lib/zx/socket.h>
-#  include <zircon/processargs.h>
-#  include <zircon/syscalls.h>
-#  include <zircon/syscalls/policy.h>
-#  include <zircon/syscalls/port.h>
-# endif  // GTEST_OS_FUCHSIA
-
-#endif  // GTEST_HAS_DEATH_TEST
-
-
-namespace testing {
-
-// Constants.
-
-// The default death test style.
-//
-// This is defined in internal/gtest-port.h as "fast", but can be overridden by
-// a definition in internal/custom/gtest-port.h. The recommended value, which is
-// used internally at Google, is "threadsafe".
-static const char kDefaultDeathTestStyle[] = GTEST_DEFAULT_DEATH_TEST_STYLE;
-
-GTEST_DEFINE_string_(
-    death_test_style,
-    internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
-    "Indicates how to run a death test in a forked child process: "
-    "\"threadsafe\" (child process re-executes the test binary "
-    "from the beginning, running only the specific death test) or "
-    "\"fast\" (child process runs the death test immediately "
-    "after forking).");
-
-GTEST_DEFINE_bool_(
-    death_test_use_fork,
-    internal::BoolFromGTestEnv("death_test_use_fork", false),
-    "Instructs to use fork()/_exit() instead of clone() in death tests. "
-    "Ignored and always uses fork() on POSIX systems where clone() is not "
-    "implemented. Useful when running under valgrind or similar tools if "
-    "those do not support clone(). Valgrind 3.3.1 will just fail if "
-    "it sees an unsupported combination of clone() flags. "
-    "It is not recommended to use this flag w/o valgrind though it will "
-    "work in 99% of the cases. Once valgrind is fixed, this flag will "
-    "most likely be removed.");
-
-namespace internal {
-GTEST_DEFINE_string_(
-    internal_run_death_test, "",
-    "Indicates the file, line number, temporal index of "
-    "the single death test to run, and a file descriptor to "
-    "which a success code may be sent, all separated by "
-    "the '|' characters.  This flag is specified if and only if the "
-    "current process is a sub-process launched for running a thread-safe "
-    "death test.  FOR INTERNAL USE ONLY.");
-}  // namespace internal
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Valid only for fast death tests. Indicates the code is running in the
-// child process of a fast style death test.
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-static bool g_in_fast_death_test_child = false;
-# endif
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process.  Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests.  IMPORTANT: This is an internal utility.  Using it may break the
-// implementation of death tests.  User code MUST NOT use it.
-bool InDeathTestChild() {
-# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
-  // On Windows and Fuchsia, death tests are thread-safe regardless of the value
-  // of the death_test_style flag.
-  return !GTEST_FLAG(internal_run_death_test).empty();
-
-# else
-
-  if (GTEST_FLAG(death_test_style) == "threadsafe")
-    return !GTEST_FLAG(internal_run_death_test).empty();
-  else
-    return g_in_fast_death_test_child;
-#endif
-}
-
-}  // namespace internal
-
-// ExitedWithCode constructor.
-ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
-}
-
-// ExitedWithCode function-call operator.
-bool ExitedWithCode::operator()(int exit_status) const {
-# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
-  return exit_status == exit_code_;
-
-# else
-
-  return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
-
-# endif  // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-}
-
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// KilledBySignal constructor.
-KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
-}
-
-// KilledBySignal function-call operator.
-bool KilledBySignal::operator()(int exit_status) const {
-#  if defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
-  {
-    bool result;
-    if (GTEST_KILLED_BY_SIGNAL_OVERRIDE_(signum_, exit_status, &result)) {
-      return result;
-    }
-  }
-#  endif  // defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
-  return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
-}
-# endif  // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-
-namespace internal {
-
-// Utilities needed for death tests.
-
-// Generates a textual description of a given exit code, in the format
-// specified by wait(2).
-static std::string ExitSummary(int exit_code) {
-  Message m;
-
-# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
-  m << "Exited with exit status " << exit_code;
-
-# else
-
-  if (WIFEXITED(exit_code)) {
-    m << "Exited with exit status " << WEXITSTATUS(exit_code);
-  } else if (WIFSIGNALED(exit_code)) {
-    m << "Terminated by signal " << WTERMSIG(exit_code);
-  }
-#  ifdef WCOREDUMP
-  if (WCOREDUMP(exit_code)) {
-    m << " (core dumped)";
-  }
-#  endif
-# endif  // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
-  return m.GetString();
-}
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-bool ExitedUnsuccessfully(int exit_status) {
-  return !ExitedWithCode(0)(exit_status);
-}
-
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// Generates a textual failure message when a death test finds more than
-// one thread running, or cannot determine the number of threads, prior
-// to executing the given statement.  It is the responsibility of the
-// caller not to pass a thread_count of 1.
-static std::string DeathTestThreadWarning(size_t thread_count) {
-  Message msg;
-  msg << "Death tests use fork(), which is unsafe particularly"
-      << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
-  if (thread_count == 0) {
-    msg << "couldn't detect the number of threads.";
-  } else {
-    msg << "detected " << thread_count << " threads.";
-  }
-  msg << " See "
-         "https://github.com/google/googletest/blob/master/docs/"
-         "advanced.md#death-tests-and-threads"
-      << " for more explanation and suggested solutions, especially if"
-      << " this is the last message you see before your test times out.";
-  return msg.GetString();
-}
-# endif  // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-
-// Flag characters for reporting a death test that did not die.
-static const char kDeathTestLived = 'L';
-static const char kDeathTestReturned = 'R';
-static const char kDeathTestThrew = 'T';
-static const char kDeathTestInternalError = 'I';
-
-#if GTEST_OS_FUCHSIA
-
-// File descriptor used for the pipe in the child process.
-static const int kFuchsiaReadPipeFd = 3;
-
-#endif
-
-// An enumeration describing all of the possible ways that a death test can
-// conclude.  DIED means that the process died while executing the test
-// code; LIVED means that process lived beyond the end of the test code;
-// RETURNED means that the test statement attempted to execute a return
-// statement, which is not allowed; THREW means that the test statement
-// returned control by throwing an exception.  IN_PROGRESS means the test
-// has not yet concluded.
-enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
-
-// Routine for aborting the program which is safe to call from an
-// exec-style death test child process, in which case the error
-// message is propagated back to the parent process.  Otherwise, the
-// message is simply printed to stderr.  In either case, the program
-// then exits with status 1.
-static void DeathTestAbort(const std::string& message) {
-  // On a POSIX system, this function may be called from a threadsafe-style
-  // death test child process, which operates on a very small stack.  Use
-  // the heap for any additional non-minuscule memory requirements.
-  const InternalRunDeathTestFlag* const flag =
-      GetUnitTestImpl()->internal_run_death_test_flag();
-  if (flag != nullptr) {
-    FILE* parent = posix::FDOpen(flag->write_fd(), "w");
-    fputc(kDeathTestInternalError, parent);
-    fprintf(parent, "%s", message.c_str());
-    fflush(parent);
-    _exit(1);
-  } else {
-    fprintf(stderr, "%s", message.c_str());
-    fflush(stderr);
-    posix::Abort();
-  }
-}
-
-// A replacement for CHECK that calls DeathTestAbort if the assertion
-// fails.
-# define GTEST_DEATH_TEST_CHECK_(expression) \
-  do { \
-    if (!::testing::internal::IsTrue(expression)) { \
-      DeathTestAbort( \
-          ::std::string("CHECK failed: File ") + __FILE__ +  ", line " \
-          + ::testing::internal::StreamableToString(__LINE__) + ": " \
-          + #expression); \
-    } \
-  } while (::testing::internal::AlwaysFalse())
-
-// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
-// evaluating any system call that fulfills two conditions: it must return
-// -1 on failure, and set errno to EINTR when it is interrupted and
-// should be tried again.  The macro expands to a loop that repeatedly
-// evaluates the expression as long as it evaluates to -1 and sets
-// errno to EINTR.  If the expression evaluates to -1 but errno is
-// something other than EINTR, DeathTestAbort is called.
-# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
-  do { \
-    int gtest_retval; \
-    do { \
-      gtest_retval = (expression); \
-    } while (gtest_retval == -1 && errno == EINTR); \
-    if (gtest_retval == -1) { \
-      DeathTestAbort( \
-          ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
-          + ::testing::internal::StreamableToString(__LINE__) + ": " \
-          + #expression + " != -1"); \
-    } \
-  } while (::testing::internal::AlwaysFalse())
-
-// Returns the message describing the last system error in errno.
-std::string GetLastErrnoDescription() {
-    return errno == 0 ? "" : posix::StrError(errno);
-}
-
-// This is called from a death test parent process to read a failure
-// message from the death test child process and log it with the FATAL
-// severity. On Windows, the message is read from a pipe handle. On other
-// platforms, it is read from a file descriptor.
-static void FailFromInternalError(int fd) {
-  Message error;
-  char buffer[256];
-  int num_read;
-
-  do {
-    while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
-      buffer[num_read] = '\0';
-      error << buffer;
-    }
-  } while (num_read == -1 && errno == EINTR);
-
-  if (num_read == 0) {
-    GTEST_LOG_(FATAL) << error.GetString();
-  } else {
-    const int last_error = errno;
-    GTEST_LOG_(FATAL) << "Error while reading death test internal: "
-                      << GetLastErrnoDescription() << " [" << last_error << "]";
-  }
-}
-
-// Death test constructor.  Increments the running death test count
-// for the current test.
-DeathTest::DeathTest() {
-  TestInfo* const info = GetUnitTestImpl()->current_test_info();
-  if (info == nullptr) {
-    DeathTestAbort("Cannot run a death test outside of a TEST or "
-                   "TEST_F construct");
-  }
-}
-
-// Creates and returns a death test by dispatching to the current
-// death test factory.
-bool DeathTest::Create(const char* statement,
-                       Matcher<const std::string&> matcher, const char* file,
-                       int line, DeathTest** test) {
-  return GetUnitTestImpl()->death_test_factory()->Create(
-      statement, std::move(matcher), file, line, test);
-}
-
-const char* DeathTest::LastMessage() {
-  return last_death_test_message_.c_str();
-}
-
-void DeathTest::set_last_death_test_message(const std::string& message) {
-  last_death_test_message_ = message;
-}
-
-std::string DeathTest::last_death_test_message_;
-
-// Provides cross platform implementation for some death functionality.
-class DeathTestImpl : public DeathTest {
- protected:
-  DeathTestImpl(const char* a_statement, Matcher<const std::string&> matcher)
-      : statement_(a_statement),
-        matcher_(std::move(matcher)),
-        spawned_(false),
-        status_(-1),
-        outcome_(IN_PROGRESS),
-        read_fd_(-1),
-        write_fd_(-1) {}
-
-  // read_fd_ is expected to be closed and cleared by a derived class.
-  ~DeathTestImpl() override { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
-
-  void Abort(AbortReason reason) override;
-  bool Passed(bool status_ok) override;
-
-  const char* statement() const { return statement_; }
-  bool spawned() const { return spawned_; }
-  void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
-  int status() const { return status_; }
-  void set_status(int a_status) { status_ = a_status; }
-  DeathTestOutcome outcome() const { return outcome_; }
-  void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
-  int read_fd() const { return read_fd_; }
-  void set_read_fd(int fd) { read_fd_ = fd; }
-  int write_fd() const { return write_fd_; }
-  void set_write_fd(int fd) { write_fd_ = fd; }
-
-  // Called in the parent process only. Reads the result code of the death
-  // test child process via a pipe, interprets it to set the outcome_
-  // member, and closes read_fd_.  Outputs diagnostics and terminates in
-  // case of unexpected codes.
-  void ReadAndInterpretStatusByte();
-
-  // Returns stderr output from the child process.
-  virtual std::string GetErrorLogs();
-
- private:
-  // The textual content of the code this object is testing.  This class
-  // doesn't own this string and should not attempt to delete it.
-  const char* const statement_;
-  // A matcher that's expected to match the stderr output by the child process.
-  Matcher<const std::string&> matcher_;
-  // True if the death test child process has been successfully spawned.
-  bool spawned_;
-  // The exit status of the child process.
-  int status_;
-  // How the death test concluded.
-  DeathTestOutcome outcome_;
-  // Descriptor to the read end of the pipe to the child process.  It is
-  // always -1 in the child process.  The child keeps its write end of the
-  // pipe in write_fd_.
-  int read_fd_;
-  // Descriptor to the child's write end of the pipe to the parent process.
-  // It is always -1 in the parent process.  The parent keeps its end of the
-  // pipe in read_fd_.
-  int write_fd_;
-};
-
-// Called in the parent process only. Reads the result code of the death
-// test child process via a pipe, interprets it to set the outcome_
-// member, and closes read_fd_.  Outputs diagnostics and terminates in
-// case of unexpected codes.
-void DeathTestImpl::ReadAndInterpretStatusByte() {
-  char flag;
-  int bytes_read;
-
-  // The read() here blocks until data is available (signifying the
-  // failure of the death test) or until the pipe is closed (signifying
-  // its success), so it's okay to call this in the parent before
-  // the child process has exited.
-  do {
-    bytes_read = posix::Read(read_fd(), &flag, 1);
-  } while (bytes_read == -1 && errno == EINTR);
-
-  if (bytes_read == 0) {
-    set_outcome(DIED);
-  } else if (bytes_read == 1) {
-    switch (flag) {
-      case kDeathTestReturned:
-        set_outcome(RETURNED);
-        break;
-      case kDeathTestThrew:
-        set_outcome(THREW);
-        break;
-      case kDeathTestLived:
-        set_outcome(LIVED);
-        break;
-      case kDeathTestInternalError:
-        FailFromInternalError(read_fd());  // Does not return.
-        break;
-      default:
-        GTEST_LOG_(FATAL) << "Death test child process reported "
-                          << "unexpected status byte ("
-                          << static_cast<unsigned int>(flag) << ")";
-    }
-  } else {
-    GTEST_LOG_(FATAL) << "Read from death test child process failed: "
-                      << GetLastErrnoDescription();
-  }
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
-  set_read_fd(-1);
-}
-
-std::string DeathTestImpl::GetErrorLogs() {
-  return GetCapturedStderr();
-}
-
-// Signals that the death test code which should have exited, didn't.
-// Should be called only in a death test child process.
-// Writes a status byte to the child's status file descriptor, then
-// calls _exit(1).
-void DeathTestImpl::Abort(AbortReason reason) {
-  // The parent process considers the death test to be a failure if
-  // it finds any data in our pipe.  So, here we write a single flag byte
-  // to the pipe, then exit.
-  const char status_ch =
-      reason == TEST_DID_NOT_DIE ? kDeathTestLived :
-      reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
-
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
-  // We are leaking the descriptor here because on some platforms (i.e.,
-  // when built as Windows DLL), destructors of global objects will still
-  // run after calling _exit(). On such systems, write_fd_ will be
-  // indirectly closed from the destructor of UnitTestImpl, causing double
-  // close if it is also closed here. On debug configurations, double close
-  // may assert. As there are no in-process buffers to flush here, we are
-  // relying on the OS to close the descriptor after the process terminates
-  // when the destructors are not run.
-  _exit(1);  // Exits w/o any normal exit hooks (we were supposed to crash)
-}
-
-// Returns an indented copy of stderr output for a death test.
-// This makes distinguishing death test output lines from regular log lines
-// much easier.
-static ::std::string FormatDeathTestOutput(const ::std::string& output) {
-  ::std::string ret;
-  for (size_t at = 0; ; ) {
-    const size_t line_end = output.find('\n', at);
-    ret += "[  DEATH   ] ";
-    if (line_end == ::std::string::npos) {
-      ret += output.substr(at);
-      break;
-    }
-    ret += output.substr(at, line_end + 1 - at);
-    at = line_end + 1;
-  }
-  return ret;
-}
-
-// Assesses the success or failure of a death test, using both private
-// members which have previously been set, and one argument:
-//
-// Private data members:
-//   outcome:  An enumeration describing how the death test
-//             concluded: DIED, LIVED, THREW, or RETURNED.  The death test
-//             fails in the latter three cases.
-//   status:   The exit status of the child process. On *nix, it is in the
-//             in the format specified by wait(2). On Windows, this is the
-//             value supplied to the ExitProcess() API or a numeric code
-//             of the exception that terminated the program.
-//   matcher_: A matcher that's expected to match the stderr output by the child
-//             process.
-//
-// Argument:
-//   status_ok: true if exit_status is acceptable in the context of
-//              this particular death test, which fails if it is false
-//
-// Returns true if and only if all of the above conditions are met.  Otherwise,
-// the first failing condition, in the order given above, is the one that is
-// reported. Also sets the last death test message string.
-bool DeathTestImpl::Passed(bool status_ok) {
-  if (!spawned())
-    return false;
-
-  const std::string error_message = GetErrorLogs();
-
-  bool success = false;
-  Message buffer;
-
-  buffer << "Death test: " << statement() << "\n";
-  switch (outcome()) {
-    case LIVED:
-      buffer << "    Result: failed to die.\n"
-             << " Error msg:\n" << FormatDeathTestOutput(error_message);
-      break;
-    case THREW:
-      buffer << "    Result: threw an exception.\n"
-             << " Error msg:\n" << FormatDeathTestOutput(error_message);
-      break;
-    case RETURNED:
-      buffer << "    Result: illegal return in test statement.\n"
-             << " Error msg:\n" << FormatDeathTestOutput(error_message);
-      break;
-    case DIED:
-      if (status_ok) {
-        if (matcher_.Matches(error_message)) {
-          success = true;
-        } else {
-          std::ostringstream stream;
-          matcher_.DescribeTo(&stream);
-          buffer << "    Result: died but not with expected error.\n"
-                 << "  Expected: " << stream.str() << "\n"
-                 << "Actual msg:\n"
-                 << FormatDeathTestOutput(error_message);
-        }
-      } else {
-        buffer << "    Result: died but not with expected exit code:\n"
-               << "            " << ExitSummary(status()) << "\n"
-               << "Actual msg:\n" << FormatDeathTestOutput(error_message);
-      }
-      break;
-    case IN_PROGRESS:
-    default:
-      GTEST_LOG_(FATAL)
-          << "DeathTest::Passed somehow called before conclusion of test";
-  }
-
-  DeathTest::set_last_death_test_message(buffer.GetString());
-  return success;
-}
-
-# if GTEST_OS_WINDOWS
-// WindowsDeathTest implements death tests on Windows. Due to the
-// specifics of starting new processes on Windows, death tests there are
-// always threadsafe, and Google Test considers the
-// --gtest_death_test_style=fast setting to be equivalent to
-// --gtest_death_test_style=threadsafe there.
-//
-// A few implementation notes:  Like the Linux version, the Windows
-// implementation uses pipes for child-to-parent communication. But due to
-// the specifics of pipes on Windows, some extra steps are required:
-//
-// 1. The parent creates a communication pipe and stores handles to both
-//    ends of it.
-// 2. The parent starts the child and provides it with the information
-//    necessary to acquire the handle to the write end of the pipe.
-// 3. The child acquires the write end of the pipe and signals the parent
-//    using a Windows event.
-// 4. Now the parent can release the write end of the pipe on its side. If
-//    this is done before step 3, the object's reference count goes down to
-//    0 and it is destroyed, preventing the child from acquiring it. The
-//    parent now has to release it, or read operations on the read end of
-//    the pipe will not return when the child terminates.
-// 5. The parent reads child's output through the pipe (outcome code and
-//    any possible error messages) from the pipe, and its stderr and then
-//    determines whether to fail the test.
-//
-// Note: to distinguish Win32 API calls from the local method and function
-// calls, the former are explicitly resolved in the global namespace.
-//
-class WindowsDeathTest : public DeathTestImpl {
- public:
-  WindowsDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
-                   const char* file, int line)
-      : DeathTestImpl(a_statement, std::move(matcher)),
-        file_(file),
-        line_(line) {}
-
-  // All of these virtual functions are inherited from DeathTest.
-  virtual int Wait();
-  virtual TestRole AssumeRole();
-
- private:
-  // The name of the file in which the death test is located.
-  const char* const file_;
-  // The line number on which the death test is located.
-  const int line_;
-  // Handle to the write end of the pipe to the child process.
-  AutoHandle write_handle_;
-  // Child process handle.
-  AutoHandle child_handle_;
-  // Event the child process uses to signal the parent that it has
-  // acquired the handle to the write end of the pipe. After seeing this
-  // event the parent can release its own handles to make sure its
-  // ReadFile() calls return when the child terminates.
-  AutoHandle event_handle_;
-};
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists.  As a side effect, sets the
-// outcome data member.
-int WindowsDeathTest::Wait() {
-  if (!spawned())
-    return 0;
-
-  // Wait until the child either signals that it has acquired the write end
-  // of the pipe or it dies.
-  const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
-  switch (::WaitForMultipleObjects(2,
-                                   wait_handles,
-                                   FALSE,  // Waits for any of the handles.
-                                   INFINITE)) {
-    case WAIT_OBJECT_0:
-    case WAIT_OBJECT_0 + 1:
-      break;
-    default:
-      GTEST_DEATH_TEST_CHECK_(false);  // Should not get here.
-  }
-
-  // The child has acquired the write end of the pipe or exited.
-  // We release the handle on our side and continue.
-  write_handle_.Reset();
-  event_handle_.Reset();
-
-  ReadAndInterpretStatusByte();
-
-  // Waits for the child process to exit if it haven't already. This
-  // returns immediately if the child has already exited, regardless of
-  // whether previous calls to WaitForMultipleObjects synchronized on this
-  // handle or not.
-  GTEST_DEATH_TEST_CHECK_(
-      WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
-                                             INFINITE));
-  DWORD status_code;
-  GTEST_DEATH_TEST_CHECK_(
-      ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
-  child_handle_.Reset();
-  set_status(static_cast<int>(status_code));
-  return status();
-}
-
-// The AssumeRole process for a Windows death test.  It creates a child
-// process with the same executable as the current process to run the
-// death test.  The child process is given the --gtest_filter and
-// --gtest_internal_run_death_test flags such that it knows to run the
-// current death test only.
-DeathTest::TestRole WindowsDeathTest::AssumeRole() {
-  const UnitTestImpl* const impl = GetUnitTestImpl();
-  const InternalRunDeathTestFlag* const flag =
-      impl->internal_run_death_test_flag();
-  const TestInfo* const info = impl->current_test_info();
-  const int death_test_index = info->result()->death_test_count();
-
-  if (flag != nullptr) {
-    // ParseInternalRunDeathTestFlag() has performed all the necessary
-    // processing.
-    set_write_fd(flag->write_fd());
-    return EXECUTE_TEST;
-  }
-
-  // WindowsDeathTest uses an anonymous pipe to communicate results of
-  // a death test.
-  SECURITY_ATTRIBUTES handles_are_inheritable = {sizeof(SECURITY_ATTRIBUTES),
-                                                 nullptr, TRUE};
-  HANDLE read_handle, write_handle;
-  GTEST_DEATH_TEST_CHECK_(
-      ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
-                   0)  // Default buffer size.
-      != FALSE);
-  set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
-                                O_RDONLY));
-  write_handle_.Reset(write_handle);
-  event_handle_.Reset(::CreateEvent(
-      &handles_are_inheritable,
-      TRUE,       // The event will automatically reset to non-signaled state.
-      FALSE,      // The initial state is non-signalled.
-      nullptr));  // The even is unnamed.
-  GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != nullptr);
-  const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
-                                  kFilterFlag + "=" + info->test_suite_name() +
-                                  "." + info->name();
-  const std::string internal_flag =
-      std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
-      "=" + file_ + "|" + StreamableToString(line_) + "|" +
-      StreamableToString(death_test_index) + "|" +
-      StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
-      // size_t has the same width as pointers on both 32-bit and 64-bit
-      // Windows platforms.
-      // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
-      "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
-      "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
-
-  char executable_path[_MAX_PATH + 1];  // NOLINT
-  GTEST_DEATH_TEST_CHECK_(_MAX_PATH + 1 != ::GetModuleFileNameA(nullptr,
-                                                                executable_path,
-                                                                _MAX_PATH));
-
-  std::string command_line =
-      std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
-      internal_flag + "\"";
-
-  DeathTest::set_last_death_test_message("");
-
-  CaptureStderr();
-  // Flush the log buffers since the log streams are shared with the child.
-  FlushInfoLog();
-
-  // The child process will share the standard handles with the parent.
-  STARTUPINFOA startup_info;
-  memset(&startup_info, 0, sizeof(STARTUPINFO));
-  startup_info.dwFlags = STARTF_USESTDHANDLES;
-  startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
-  startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
-  startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
-
-  PROCESS_INFORMATION process_info;
-  GTEST_DEATH_TEST_CHECK_(
-      ::CreateProcessA(
-          executable_path, const_cast<char*>(command_line.c_str()),
-          nullptr,  // Retuned process handle is not inheritable.
-          nullptr,  // Retuned thread handle is not inheritable.
-          TRUE,  // Child inherits all inheritable handles (for write_handle_).
-          0x0,   // Default creation flags.
-          nullptr,  // Inherit the parent's environment.
-          UnitTest::GetInstance()->original_working_dir(), &startup_info,
-          &process_info) != FALSE);
-  child_handle_.Reset(process_info.hProcess);
-  ::CloseHandle(process_info.hThread);
-  set_spawned(true);
-  return OVERSEE_TEST;
-}
-
-# elif GTEST_OS_FUCHSIA
-
-class FuchsiaDeathTest : public DeathTestImpl {
- public:
-  FuchsiaDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
-                   const char* file, int line)
-      : DeathTestImpl(a_statement, std::move(matcher)),
-        file_(file),
-        line_(line) {}
-
-  // All of these virtual functions are inherited from DeathTest.
-  int Wait() override;
-  TestRole AssumeRole() override;
-  std::string GetErrorLogs() override;
-
- private:
-  // The name of the file in which the death test is located.
-  const char* const file_;
-  // The line number on which the death test is located.
-  const int line_;
-  // The stderr data captured by the child process.
-  std::string captured_stderr_;
-
-  zx::process child_process_;
-  zx::channel exception_channel_;
-  zx::socket stderr_socket_;
-};
-
-// Utility class for accumulating command-line arguments.
-class Arguments {
- public:
-  Arguments() { args_.push_back(nullptr); }
-
-  ~Arguments() {
-    for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
-         ++i) {
-      free(*i);
-    }
-  }
-  void AddArgument(const char* argument) {
-    args_.insert(args_.end() - 1, posix::StrDup(argument));
-  }
-
-  template <typename Str>
-  void AddArguments(const ::std::vector<Str>& arguments) {
-    for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
-         i != arguments.end();
-         ++i) {
-      args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
-    }
-  }
-  char* const* Argv() {
-    return &args_[0];
-  }
-
-  int size() {
-    return static_cast<int>(args_.size()) - 1;
-  }
-
- private:
-  std::vector<char*> args_;
-};
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists.  As a side effect, sets the
-// outcome data member.
-int FuchsiaDeathTest::Wait() {
-  const int kProcessKey = 0;
-  const int kSocketKey = 1;
-  const int kExceptionKey = 2;
-
-  if (!spawned())
-    return 0;
-
-  // Create a port to wait for socket/task/exception events.
-  zx_status_t status_zx;
-  zx::port port;
-  status_zx = zx::port::create(0, &port);
-  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
-  // Register to wait for the child process to terminate.
-  status_zx = child_process_.wait_async(
-      port, kProcessKey, ZX_PROCESS_TERMINATED, 0);
-  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
-  // Register to wait for the socket to be readable or closed.
-  status_zx = stderr_socket_.wait_async(
-      port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED, 0);
-  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
-  // Register to wait for an exception.
-  status_zx = exception_channel_.wait_async(
-      port, kExceptionKey, ZX_CHANNEL_READABLE, 0);
-  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
-  bool process_terminated = false;
-  bool socket_closed = false;
-  do {
-    zx_port_packet_t packet = {};
-    status_zx = port.wait(zx::time::infinite(), &packet);
-    GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
-    if (packet.key == kExceptionKey) {
-      // Process encountered an exception. Kill it directly rather than
-      // letting other handlers process the event. We will get a kProcessKey
-      // event when the process actually terminates.
-      status_zx = child_process_.kill();
-      GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-    } else if (packet.key == kProcessKey) {
-      // Process terminated.
-      GTEST_DEATH_TEST_CHECK_(ZX_PKT_IS_SIGNAL_ONE(packet.type));
-      GTEST_DEATH_TEST_CHECK_(packet.signal.observed & ZX_PROCESS_TERMINATED);
-      process_terminated = true;
-    } else if (packet.key == kSocketKey) {
-      GTEST_DEATH_TEST_CHECK_(ZX_PKT_IS_SIGNAL_ONE(packet.type));
-      if (packet.signal.observed & ZX_SOCKET_READABLE) {
-        // Read data from the socket.
-        constexpr size_t kBufferSize = 1024;
-        do {
-          size_t old_length = captured_stderr_.length();
-          size_t bytes_read = 0;
-          captured_stderr_.resize(old_length + kBufferSize);
-          status_zx = stderr_socket_.read(
-              0, &captured_stderr_.front() + old_length, kBufferSize,
-              &bytes_read);
-          captured_stderr_.resize(old_length + bytes_read);
-        } while (status_zx == ZX_OK);
-        if (status_zx == ZX_ERR_PEER_CLOSED) {
-          socket_closed = true;
-        } else {
-          GTEST_DEATH_TEST_CHECK_(status_zx == ZX_ERR_SHOULD_WAIT);
-          status_zx = stderr_socket_.wait_async(
-              port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED, 0);
-          GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-        }
-      } else {
-        GTEST_DEATH_TEST_CHECK_(packet.signal.observed & ZX_SOCKET_PEER_CLOSED);
-        socket_closed = true;
-      }
-    }
-  } while (!process_terminated && !socket_closed);
-
-  ReadAndInterpretStatusByte();
-
-  zx_info_process_t buffer;
-  status_zx = child_process_.get_info(ZX_INFO_PROCESS, &buffer, sizeof(buffer),
-                                      nullptr, nullptr);
-  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
-  GTEST_DEATH_TEST_CHECK_(buffer.flags & ZX_INFO_PROCESS_FLAG_EXITED);
-  set_status(static_cast<int>(buffer.return_code));
-  return status();
-}
-
-// The AssumeRole process for a Fuchsia death test.  It creates a child
-// process with the same executable as the current process to run the
-// death test.  The child process is given the --gtest_filter and
-// --gtest_internal_run_death_test flags such that it knows to run the
-// current death test only.
-DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
-  const UnitTestImpl* const impl = GetUnitTestImpl();
-  const InternalRunDeathTestFlag* const flag =
-      impl->internal_run_death_test_flag();
-  const TestInfo* const info = impl->current_test_info();
-  const int death_test_index = info->result()->death_test_count();
-
-  if (flag != nullptr) {
-    // ParseInternalRunDeathTestFlag() has performed all the necessary
-    // processing.
-    set_write_fd(kFuchsiaReadPipeFd);
-    return EXECUTE_TEST;
-  }
-
-  // Flush the log buffers since the log streams are shared with the child.
-  FlushInfoLog();
-
-  // Build the child process command line.
-  const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
-                                  kFilterFlag + "=" + info->test_suite_name() +
-                                  "." + info->name();
-  const std::string internal_flag =
-      std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
-      + file_ + "|"
-      + StreamableToString(line_) + "|"
-      + StreamableToString(death_test_index);
-  Arguments args;
-  args.AddArguments(GetInjectableArgvs());
-  args.AddArgument(filter_flag.c_str());
-  args.AddArgument(internal_flag.c_str());
-
-  // Build the pipe for communication with the child.
-  zx_status_t status;
-  zx_handle_t child_pipe_handle;
-  int child_pipe_fd;
-  status = fdio_pipe_half(&child_pipe_fd, &child_pipe_handle);
-  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-  set_read_fd(child_pipe_fd);
-
-  // Set the pipe handle for the child.
-  fdio_spawn_action_t spawn_actions[2] = {};
-  fdio_spawn_action_t* add_handle_action = &spawn_actions[0];
-  add_handle_action->action = FDIO_SPAWN_ACTION_ADD_HANDLE;
-  add_handle_action->h.id = PA_HND(PA_FD, kFuchsiaReadPipeFd);
-  add_handle_action->h.handle = child_pipe_handle;
-
-  // Create a socket pair will be used to receive the child process' stderr.
-  zx::socket stderr_producer_socket;
-  status =
-      zx::socket::create(0, &stderr_producer_socket, &stderr_socket_);
-  GTEST_DEATH_TEST_CHECK_(status >= 0);
-  int stderr_producer_fd = -1;
-  status =
-      fdio_fd_create(stderr_producer_socket.release(), &stderr_producer_fd);
-  GTEST_DEATH_TEST_CHECK_(status >= 0);
-
-  // Make the stderr socket nonblocking.
-  GTEST_DEATH_TEST_CHECK_(fcntl(stderr_producer_fd, F_SETFL, 0) == 0);
-
-  fdio_spawn_action_t* add_stderr_action = &spawn_actions[1];
-  add_stderr_action->action = FDIO_SPAWN_ACTION_CLONE_FD;
-  add_stderr_action->fd.local_fd = stderr_producer_fd;
-  add_stderr_action->fd.target_fd = STDERR_FILENO;
-
-  // Create a child job.
-  zx_handle_t child_job = ZX_HANDLE_INVALID;
-  status = zx_job_create(zx_job_default(), 0, & child_job);
-  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-  zx_policy_basic_t policy;
-  policy.condition = ZX_POL_NEW_ANY;
-  policy.policy = ZX_POL_ACTION_ALLOW;
-  status = zx_job_set_policy(
-      child_job, ZX_JOB_POL_RELATIVE, ZX_JOB_POL_BASIC, &policy, 1);
-  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
-  // Create an exception channel attached to the |child_job|, to allow
-  // us to suppress the system default exception handler from firing.
-  status =
-      zx_task_create_exception_channel(
-          child_job, 0, exception_channel_.reset_and_get_address());
-  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
-  // Spawn the child process.
-  status = fdio_spawn_etc(
-      child_job, FDIO_SPAWN_CLONE_ALL, args.Argv()[0], args.Argv(), nullptr,
-      2, spawn_actions, child_process_.reset_and_get_address(), nullptr);
-  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
-  set_spawned(true);
-  return OVERSEE_TEST;
-}
-
-std::string FuchsiaDeathTest::GetErrorLogs() {
-  return captured_stderr_;
-}
-
-#else  // We are neither on Windows, nor on Fuchsia.
-
-// ForkingDeathTest provides implementations for most of the abstract
-// methods of the DeathTest interface.  Only the AssumeRole method is
-// left undefined.
-class ForkingDeathTest : public DeathTestImpl {
- public:
-  ForkingDeathTest(const char* statement, Matcher<const std::string&> matcher);
-
-  // All of these virtual functions are inherited from DeathTest.
-  int Wait() override;
-
- protected:
-  void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
-
- private:
-  // PID of child process during death test; 0 in the child process itself.
-  pid_t child_pid_;
-};
-
-// Constructs a ForkingDeathTest.
-ForkingDeathTest::ForkingDeathTest(const char* a_statement,
-                                   Matcher<const std::string&> matcher)
-    : DeathTestImpl(a_statement, std::move(matcher)), child_pid_(-1) {}
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists.  As a side effect, sets the
-// outcome data member.
-int ForkingDeathTest::Wait() {
-  if (!spawned())
-    return 0;
-
-  ReadAndInterpretStatusByte();
-
-  int status_value;
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
-  set_status(status_value);
-  return status_value;
-}
-
-// A concrete death test class that forks, then immediately runs the test
-// in the child process.
-class NoExecDeathTest : public ForkingDeathTest {
- public:
-  NoExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher)
-      : ForkingDeathTest(a_statement, std::move(matcher)) {}
-  TestRole AssumeRole() override;
-};
-
-// The AssumeRole process for a fork-and-run death test.  It implements a
-// straightforward fork, with a simple pipe to transmit the status byte.
-DeathTest::TestRole NoExecDeathTest::AssumeRole() {
-  const size_t thread_count = GetThreadCount();
-  if (thread_count != 1) {
-    GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
-  }
-
-  int pipe_fd[2];
-  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
-
-  DeathTest::set_last_death_test_message("");
-  CaptureStderr();
-  // When we fork the process below, the log file buffers are copied, but the
-  // file descriptors are shared.  We flush all log files here so that closing
-  // the file descriptors in the child process doesn't throw off the
-  // synchronization between descriptors and buffers in the parent process.
-  // This is as close to the fork as possible to avoid a race condition in case
-  // there are multiple threads running before the death test, and another
-  // thread writes to the log file.
-  FlushInfoLog();
-
-  const pid_t child_pid = fork();
-  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
-  set_child_pid(child_pid);
-  if (child_pid == 0) {
-    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
-    set_write_fd(pipe_fd[1]);
-    // Redirects all logging to stderr in the child process to prevent
-    // concurrent writes to the log files.  We capture stderr in the parent
-    // process and append the child process' output to a log.
-    LogToStderr();
-    // Event forwarding to the listeners of event listener API mush be shut
-    // down in death test subprocesses.
-    GetUnitTestImpl()->listeners()->SuppressEventForwarding();
-    g_in_fast_death_test_child = true;
-    return EXECUTE_TEST;
-  } else {
-    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
-    set_read_fd(pipe_fd[0]);
-    set_spawned(true);
-    return OVERSEE_TEST;
-  }
-}
-
-// A concrete death test class that forks and re-executes the main
-// program from the beginning, with command-line flags set that cause
-// only this specific death test to be run.
-class ExecDeathTest : public ForkingDeathTest {
- public:
-  ExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
-                const char* file, int line)
-      : ForkingDeathTest(a_statement, std::move(matcher)),
-        file_(file),
-        line_(line) {}
-  TestRole AssumeRole() override;
-
- private:
-  static ::std::vector<std::string> GetArgvsForDeathTestChildProcess() {
-    ::std::vector<std::string> args = GetInjectableArgvs();
-#  if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
-    ::std::vector<std::string> extra_args =
-        GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_();
-    args.insert(args.end(), extra_args.begin(), extra_args.end());
-#  endif  // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
-    return args;
-  }
-  // The name of the file in which the death test is located.
-  const char* const file_;
-  // The line number on which the death test is located.
-  const int line_;
-};
-
-// Utility class for accumulating command-line arguments.
-class Arguments {
- public:
-  Arguments() { args_.push_back(nullptr); }
-
-  ~Arguments() {
-    for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
-         ++i) {
-      free(*i);
-    }
-  }
-  void AddArgument(const char* argument) {
-    args_.insert(args_.end() - 1, posix::StrDup(argument));
-  }
-
-  template <typename Str>
-  void AddArguments(const ::std::vector<Str>& arguments) {
-    for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
-         i != arguments.end();
-         ++i) {
-      args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
-    }
-  }
-  char* const* Argv() {
-    return &args_[0];
-  }
-
- private:
-  std::vector<char*> args_;
-};
-
-// A struct that encompasses the arguments to the child process of a
-// threadsafe-style death test process.
-struct ExecDeathTestArgs {
-  char* const* argv;  // Command-line arguments for the child's call to exec
-  int close_fd;       // File descriptor to close; the read end of a pipe
-};
-
-#  if GTEST_OS_QNX
-extern "C" char** environ;
-#  else  // GTEST_OS_QNX
-// The main function for a threadsafe-style death test child process.
-// This function is called in a clone()-ed process and thus must avoid
-// any potentially unsafe operations like malloc or libc functions.
-static int ExecDeathTestChildMain(void* child_arg) {
-  ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
-
-  // We need to execute the test program in the same environment where
-  // it was originally invoked.  Therefore we change to the original
-  // working directory first.
-  const char* const original_dir =
-      UnitTest::GetInstance()->original_working_dir();
-  // We can safely call chdir() as it's a direct system call.
-  if (chdir(original_dir) != 0) {
-    DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
-                   GetLastErrnoDescription());
-    return EXIT_FAILURE;
-  }
-
-  // We can safely call execv() as it's almost a direct system call. We
-  // cannot use execvp() as it's a libc function and thus potentially
-  // unsafe.  Since execv() doesn't search the PATH, the user must
-  // invoke the test program via a valid path that contains at least
-  // one path separator.
-  execv(args->argv[0], args->argv);
-  DeathTestAbort(std::string("execv(") + args->argv[0] + ", ...) in " +
-                 original_dir + " failed: " +
-                 GetLastErrnoDescription());
-  return EXIT_FAILURE;
-}
-#  endif  // GTEST_OS_QNX
-
-#  if GTEST_HAS_CLONE
-// Two utility routines that together determine the direction the stack
-// grows.
-// This could be accomplished more elegantly by a single recursive
-// function, but we want to guard against the unlikely possibility of
-// a smart compiler optimizing the recursion away.
-//
-// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
-// StackLowerThanAddress into StackGrowsDown, which then doesn't give
-// correct answer.
-static void StackLowerThanAddress(const void* ptr,
-                                  bool* result) GTEST_NO_INLINE_;
-// Make sure sanitizers do not tamper with the stack here.
-// Ideally, we want to use `__builtin_frame_address` instead of a local variable
-// address with sanitizer disabled, but it does not work when the
-// compiler optimizes the stack frame out, which happens on PowerPC targets.
-// HWAddressSanitizer add a random tag to the MSB of the local variable address,
-// making comparison result unpredictable.
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-static void StackLowerThanAddress(const void* ptr, bool* result) {
-  int dummy = 0;
-  *result = std::less<const void*>()(&dummy, ptr);
-}
-
-// Make sure AddressSanitizer does not tamper with the stack here.
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-static bool StackGrowsDown() {
-  int dummy = 0;
-  bool result;
-  StackLowerThanAddress(&dummy, &result);
-  return result;
-}
-#  endif  // GTEST_HAS_CLONE
-
-// Spawns a child process with the same executable as the current process in
-// a thread-safe manner and instructs it to run the death test.  The
-// implementation uses fork(2) + exec.  On systems where clone(2) is
-// available, it is used instead, being slightly more thread-safe.  On QNX,
-// fork supports only single-threaded environments, so this function uses
-// spawn(2) there instead.  The function dies with an error message if
-// anything goes wrong.
-static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
-  ExecDeathTestArgs args = { argv, close_fd };
-  pid_t child_pid = -1;
-
-#  if GTEST_OS_QNX
-  // Obtains the current directory and sets it to be closed in the child
-  // process.
-  const int cwd_fd = open(".", O_RDONLY);
-  GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
-  // We need to execute the test program in the same environment where
-  // it was originally invoked.  Therefore we change to the original
-  // working directory first.
-  const char* const original_dir =
-      UnitTest::GetInstance()->original_working_dir();
-  // We can safely call chdir() as it's a direct system call.
-  if (chdir(original_dir) != 0) {
-    DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
-                   GetLastErrnoDescription());
-    return EXIT_FAILURE;
-  }
-
-  int fd_flags;
-  // Set close_fd to be closed after spawn.
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
-                                        fd_flags | FD_CLOEXEC));
-  struct inheritance inherit = {0};
-  // spawn is a system call.
-  child_pid = spawn(args.argv[0], 0, nullptr, &inherit, args.argv, environ);
-  // Restores the current working directory.
-  GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
-
-#  else   // GTEST_OS_QNX
-#   if GTEST_OS_LINUX
-  // When a SIGPROF signal is received while fork() or clone() are executing,
-  // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
-  // it after the call to fork()/clone() is complete.
-  struct sigaction saved_sigprof_action;
-  struct sigaction ignore_sigprof_action;
-  memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
-  sigemptyset(&ignore_sigprof_action.sa_mask);
-  ignore_sigprof_action.sa_handler = SIG_IGN;
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
-      SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
-#   endif  // GTEST_OS_LINUX
-
-#   if GTEST_HAS_CLONE
-  const bool use_fork = GTEST_FLAG(death_test_use_fork);
-
-  if (!use_fork) {
-    static const bool stack_grows_down = StackGrowsDown();
-    const auto stack_size = static_cast<size_t>(getpagesize() * 2);
-    // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
-    void* const stack = mmap(nullptr, stack_size, PROT_READ | PROT_WRITE,
-                             MAP_ANON | MAP_PRIVATE, -1, 0);
-    GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
-
-    // Maximum stack alignment in bytes:  For a downward-growing stack, this
-    // amount is subtracted from size of the stack space to get an address
-    // that is within the stack space and is aligned on all systems we care
-    // about.  As far as I know there is no ABI with stack alignment greater
-    // than 64.  We assume stack and stack_size already have alignment of
-    // kMaxStackAlignment.
-    const size_t kMaxStackAlignment = 64;
-    void* const stack_top =
-        static_cast<char*>(stack) +
-            (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
-    GTEST_DEATH_TEST_CHECK_(
-        static_cast<size_t>(stack_size) > kMaxStackAlignment &&
-        reinterpret_cast<uintptr_t>(stack_top) % kMaxStackAlignment == 0);
-
-    child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
-
-    GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
-  }
-#   else
-  const bool use_fork = true;
-#   endif  // GTEST_HAS_CLONE
-
-  if (use_fork && (child_pid = fork()) == 0) {
-      ExecDeathTestChildMain(&args);
-      _exit(0);
-  }
-#  endif  // GTEST_OS_QNX
-#  if GTEST_OS_LINUX
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(
-      sigaction(SIGPROF, &saved_sigprof_action, nullptr));
-#  endif  // GTEST_OS_LINUX
-
-  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
-  return child_pid;
-}
-
-// The AssumeRole process for a fork-and-exec death test.  It re-executes the
-// main program from the beginning, setting the --gtest_filter
-// and --gtest_internal_run_death_test flags to cause only the current
-// death test to be re-run.
-DeathTest::TestRole ExecDeathTest::AssumeRole() {
-  const UnitTestImpl* const impl = GetUnitTestImpl();
-  const InternalRunDeathTestFlag* const flag =
-      impl->internal_run_death_test_flag();
-  const TestInfo* const info = impl->current_test_info();
-  const int death_test_index = info->result()->death_test_count();
-
-  if (flag != nullptr) {
-    set_write_fd(flag->write_fd());
-    return EXECUTE_TEST;
-  }
-
-  int pipe_fd[2];
-  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
-  // Clear the close-on-exec flag on the write end of the pipe, lest
-  // it be closed when the child process does an exec:
-  GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
-
-  const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
-                                  kFilterFlag + "=" + info->test_suite_name() +
-                                  "." + info->name();
-  const std::string internal_flag =
-      std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
-      + file_ + "|" + StreamableToString(line_) + "|"
-      + StreamableToString(death_test_index) + "|"
-      + StreamableToString(pipe_fd[1]);
-  Arguments args;
-  args.AddArguments(GetArgvsForDeathTestChildProcess());
-  args.AddArgument(filter_flag.c_str());
-  args.AddArgument(internal_flag.c_str());
-
-  DeathTest::set_last_death_test_message("");
-
-  CaptureStderr();
-  // See the comment in NoExecDeathTest::AssumeRole for why the next line
-  // is necessary.
-  FlushInfoLog();
-
-  const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
-  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
-  set_child_pid(child_pid);
-  set_read_fd(pipe_fd[0]);
-  set_spawned(true);
-  return OVERSEE_TEST;
-}
-
-# endif  // !GTEST_OS_WINDOWS
-
-// Creates a concrete DeathTest-derived class that depends on the
-// --gtest_death_test_style flag, and sets the pointer pointed to
-// by the "test" argument to its address.  If the test should be
-// skipped, sets that pointer to NULL.  Returns true, unless the
-// flag is set to an invalid value.
-bool DefaultDeathTestFactory::Create(const char* statement,
-                                     Matcher<const std::string&> matcher,
-                                     const char* file, int line,
-                                     DeathTest** test) {
-  UnitTestImpl* const impl = GetUnitTestImpl();
-  const InternalRunDeathTestFlag* const flag =
-      impl->internal_run_death_test_flag();
-  const int death_test_index = impl->current_test_info()
-      ->increment_death_test_count();
-
-  if (flag != nullptr) {
-    if (death_test_index > flag->index()) {
-      DeathTest::set_last_death_test_message(
-          "Death test count (" + StreamableToString(death_test_index)
-          + ") somehow exceeded expected maximum ("
-          + StreamableToString(flag->index()) + ")");
-      return false;
-    }
-
-    if (!(flag->file() == file && flag->line() == line &&
-          flag->index() == death_test_index)) {
-      *test = nullptr;
-      return true;
-    }
-  }
-
-# if GTEST_OS_WINDOWS
-
-  if (GTEST_FLAG(death_test_style) == "threadsafe" ||
-      GTEST_FLAG(death_test_style) == "fast") {
-    *test = new WindowsDeathTest(statement, std::move(matcher), file, line);
-  }
-
-# elif GTEST_OS_FUCHSIA
-
-  if (GTEST_FLAG(death_test_style) == "threadsafe" ||
-      GTEST_FLAG(death_test_style) == "fast") {
-    *test = new FuchsiaDeathTest(statement, std::move(matcher), file, line);
-  }
-
-# else
-
-  if (GTEST_FLAG(death_test_style) == "threadsafe") {
-    *test = new ExecDeathTest(statement, std::move(matcher), file, line);
-  } else if (GTEST_FLAG(death_test_style) == "fast") {
-    *test = new NoExecDeathTest(statement, std::move(matcher));
-  }
-
-# endif  // GTEST_OS_WINDOWS
-
-  else {  // NOLINT - this is more readable than unbalanced brackets inside #if.
-    DeathTest::set_last_death_test_message(
-        "Unknown death test style \"" + GTEST_FLAG(death_test_style)
-        + "\" encountered");
-    return false;
-  }
-
-  return true;
-}
-
-# if GTEST_OS_WINDOWS
-// Recreates the pipe and event handles from the provided parameters,
-// signals the event, and returns a file descriptor wrapped around the pipe
-// handle. This function is called in the child process only.
-static int GetStatusFileDescriptor(unsigned int parent_process_id,
-                            size_t write_handle_as_size_t,
-                            size_t event_handle_as_size_t) {
-  AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
-                                                   FALSE,  // Non-inheritable.
-                                                   parent_process_id));
-  if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
-    DeathTestAbort("Unable to open parent process " +
-                   StreamableToString(parent_process_id));
-  }
-
-  GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
-
-  const HANDLE write_handle =
-      reinterpret_cast<HANDLE>(write_handle_as_size_t);
-  HANDLE dup_write_handle;
-
-  // The newly initialized handle is accessible only in the parent
-  // process. To obtain one accessible within the child, we need to use
-  // DuplicateHandle.
-  if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
-                         ::GetCurrentProcess(), &dup_write_handle,
-                         0x0,    // Requested privileges ignored since
-                                 // DUPLICATE_SAME_ACCESS is used.
-                         FALSE,  // Request non-inheritable handler.
-                         DUPLICATE_SAME_ACCESS)) {
-    DeathTestAbort("Unable to duplicate the pipe handle " +
-                   StreamableToString(write_handle_as_size_t) +
-                   " from the parent process " +
-                   StreamableToString(parent_process_id));
-  }
-
-  const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
-  HANDLE dup_event_handle;
-
-  if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
-                         ::GetCurrentProcess(), &dup_event_handle,
-                         0x0,
-                         FALSE,
-                         DUPLICATE_SAME_ACCESS)) {
-    DeathTestAbort("Unable to duplicate the event handle " +
-                   StreamableToString(event_handle_as_size_t) +
-                   " from the parent process " +
-                   StreamableToString(parent_process_id));
-  }
-
-  const int write_fd =
-      ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
-  if (write_fd == -1) {
-    DeathTestAbort("Unable to convert pipe handle " +
-                   StreamableToString(write_handle_as_size_t) +
-                   " to a file descriptor");
-  }
-
-  // Signals the parent that the write end of the pipe has been acquired
-  // so the parent can release its own write end.
-  ::SetEvent(dup_event_handle);
-
-  return write_fd;
-}
-# endif  // GTEST_OS_WINDOWS
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
-  if (GTEST_FLAG(internal_run_death_test) == "") return nullptr;
-
-  // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
-  // can use it here.
-  int line = -1;
-  int index = -1;
-  ::std::vector< ::std::string> fields;
-  SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
-  int write_fd = -1;
-
-# if GTEST_OS_WINDOWS
-
-  unsigned int parent_process_id = 0;
-  size_t write_handle_as_size_t = 0;
-  size_t event_handle_as_size_t = 0;
-
-  if (fields.size() != 6
-      || !ParseNaturalNumber(fields[1], &line)
-      || !ParseNaturalNumber(fields[2], &index)
-      || !ParseNaturalNumber(fields[3], &parent_process_id)
-      || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
-      || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
-    DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
-                   GTEST_FLAG(internal_run_death_test));
-  }
-  write_fd = GetStatusFileDescriptor(parent_process_id,
-                                     write_handle_as_size_t,
-                                     event_handle_as_size_t);
-
-# elif GTEST_OS_FUCHSIA
-
-  if (fields.size() != 3
-      || !ParseNaturalNumber(fields[1], &line)
-      || !ParseNaturalNumber(fields[2], &index)) {
-    DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
-        + GTEST_FLAG(internal_run_death_test));
-  }
-
-# else
-
-  if (fields.size() != 4
-      || !ParseNaturalNumber(fields[1], &line)
-      || !ParseNaturalNumber(fields[2], &index)
-      || !ParseNaturalNumber(fields[3], &write_fd)) {
-    DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
-        + GTEST_FLAG(internal_run_death_test));
-  }
-
-# endif  // GTEST_OS_WINDOWS
-
-  return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
-}
-
-}  // namespace internal
-
-#endif  // GTEST_HAS_DEATH_TEST
-
-}  // namespace testing
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#include <stdlib.h>
-
-#if GTEST_OS_WINDOWS_MOBILE
-# include <windows.h>
-#elif GTEST_OS_WINDOWS
-# include <direct.h>
-# include <io.h>
-#else
-# include <limits.h>
-# include <climits>  // Some Linux distributions define PATH_MAX here.
-#endif  // GTEST_OS_WINDOWS_MOBILE
-
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_MAX_ _MAX_PATH
-#elif defined(PATH_MAX)
-# define GTEST_PATH_MAX_ PATH_MAX
-#elif defined(_XOPEN_PATH_MAX)
-# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
-#else
-# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
-#endif  // GTEST_OS_WINDOWS
-
-namespace testing {
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-// On Windows, '\\' is the standard path separator, but many tools and the
-// Windows API also accept '/' as an alternate path separator. Unless otherwise
-// noted, a file path can contain either kind of path separators, or a mixture
-// of them.
-const char kPathSeparator = '\\';
-const char kAlternatePathSeparator = '/';
-const char kAlternatePathSeparatorString[] = "/";
-# if GTEST_OS_WINDOWS_MOBILE
-// Windows CE doesn't have a current directory. You should not use
-// the current directory in tests on Windows CE, but this at least
-// provides a reasonable fallback.
-const char kCurrentDirectoryString[] = "\\";
-// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
-const DWORD kInvalidFileAttributes = 0xffffffff;
-# else
-const char kCurrentDirectoryString[] = ".\\";
-# endif  // GTEST_OS_WINDOWS_MOBILE
-#else
-const char kPathSeparator = '/';
-const char kCurrentDirectoryString[] = "./";
-#endif  // GTEST_OS_WINDOWS
-
-// Returns whether the given character is a valid path separator.
-static bool IsPathSeparator(char c) {
-#if GTEST_HAS_ALT_PATH_SEP_
-  return (c == kPathSeparator) || (c == kAlternatePathSeparator);
-#else
-  return c == kPathSeparator;
-#endif
-}
-
-// Returns the current working directory, or "" if unsuccessful.
-FilePath FilePath::GetCurrentDir() {
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE ||         \
-    GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_ESP32 || \
-    GTEST_OS_XTENSA
-  // These platforms do not have a current directory, so we just return
-  // something reasonable.
-  return FilePath(kCurrentDirectoryString);
-#elif GTEST_OS_WINDOWS
-  char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
-  return FilePath(_getcwd(cwd, sizeof(cwd)) == nullptr ? "" : cwd);
-#else
-  char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
-  char* result = getcwd(cwd, sizeof(cwd));
-# if GTEST_OS_NACL
-  // getcwd will likely fail in NaCl due to the sandbox, so return something
-  // reasonable. The user may have provided a shim implementation for getcwd,
-  // however, so fallback only when failure is detected.
-  return FilePath(result == nullptr ? kCurrentDirectoryString : cwd);
-# endif  // GTEST_OS_NACL
-  return FilePath(result == nullptr ? "" : cwd);
-#endif  // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns a copy of the FilePath with the case-insensitive extension removed.
-// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
-// FilePath("dir/file"). If a case-insensitive extension is not
-// found, returns a copy of the original FilePath.
-FilePath FilePath::RemoveExtension(const char* extension) const {
-  const std::string dot_extension = std::string(".") + extension;
-  if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
-    return FilePath(pathname_.substr(
-        0, pathname_.length() - dot_extension.length()));
-  }
-  return *this;
-}
-
-// Returns a pointer to the last occurrence of a valid path separator in
-// the FilePath. On Windows, for example, both '/' and '\' are valid path
-// separators. Returns NULL if no path separator was found.
-const char* FilePath::FindLastPathSeparator() const {
-  const char* const last_sep = strrchr(c_str(), kPathSeparator);
-#if GTEST_HAS_ALT_PATH_SEP_
-  const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
-  // Comparing two pointers of which only one is NULL is undefined.
-  if (last_alt_sep != nullptr &&
-      (last_sep == nullptr || last_alt_sep > last_sep)) {
-    return last_alt_sep;
-  }
-#endif
-  return last_sep;
-}
-
-// Returns a copy of the FilePath with the directory part removed.
-// Example: FilePath("path/to/file").RemoveDirectoryName() returns
-// FilePath("file"). If there is no directory part ("just_a_file"), it returns
-// the FilePath unmodified. If there is no file part ("just_a_dir/") it
-// returns an empty FilePath ("").
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveDirectoryName() const {
-  const char* const last_sep = FindLastPathSeparator();
-  return last_sep ? FilePath(last_sep + 1) : *this;
-}
-
-// RemoveFileName returns the directory path with the filename removed.
-// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
-// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
-// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
-// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveFileName() const {
-  const char* const last_sep = FindLastPathSeparator();
-  std::string dir;
-  if (last_sep) {
-    dir = std::string(c_str(), static_cast<size_t>(last_sep + 1 - c_str()));
-  } else {
-    dir = kCurrentDirectoryString;
-  }
-  return FilePath(dir);
-}
-
-// Helper functions for naming files in a directory for xml output.
-
-// Given directory = "dir", base_name = "test", number = 0,
-// extension = "xml", returns "dir/test.xml". If number is greater
-// than zero (e.g., 12), returns "dir/test_12.xml".
-// On Windows platform, uses \ as the separator rather than /.
-FilePath FilePath::MakeFileName(const FilePath& directory,
-                                const FilePath& base_name,
-                                int number,
-                                const char* extension) {
-  std::string file;
-  if (number == 0) {
-    file = base_name.string() + "." + extension;
-  } else {
-    file = base_name.string() + "_" + StreamableToString(number)
-        + "." + extension;
-  }
-  return ConcatPaths(directory, FilePath(file));
-}
-
-// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
-// On Windows, uses \ as the separator rather than /.
-FilePath FilePath::ConcatPaths(const FilePath& directory,
-                               const FilePath& relative_path) {
-  if (directory.IsEmpty())
-    return relative_path;
-  const FilePath dir(directory.RemoveTrailingPathSeparator());
-  return FilePath(dir.string() + kPathSeparator + relative_path.string());
-}
-
-// Returns true if pathname describes something findable in the file-system,
-// either a file, directory, or whatever.
-bool FilePath::FileOrDirectoryExists() const {
-#if GTEST_OS_WINDOWS_MOBILE
-  LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
-  const DWORD attributes = GetFileAttributes(unicode);
-  delete [] unicode;
-  return attributes != kInvalidFileAttributes;
-#else
-  posix::StatStruct file_stat{};
-  return posix::Stat(pathname_.c_str(), &file_stat) == 0;
-#endif  // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns true if pathname describes a directory in the file-system
-// that exists.
-bool FilePath::DirectoryExists() const {
-  bool result = false;
-#if GTEST_OS_WINDOWS
-  // Don't strip off trailing separator if path is a root directory on
-  // Windows (like "C:\\").
-  const FilePath& path(IsRootDirectory() ? *this :
-                                           RemoveTrailingPathSeparator());
-#else
-  const FilePath& path(*this);
-#endif
-
-#if GTEST_OS_WINDOWS_MOBILE
-  LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
-  const DWORD attributes = GetFileAttributes(unicode);
-  delete [] unicode;
-  if ((attributes != kInvalidFileAttributes) &&
-      (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
-    result = true;
-  }
-#else
-  posix::StatStruct file_stat{};
-  result = posix::Stat(path.c_str(), &file_stat) == 0 &&
-      posix::IsDir(file_stat);
-#endif  // GTEST_OS_WINDOWS_MOBILE
-
-  return result;
-}
-
-// Returns true if pathname describes a root directory. (Windows has one
-// root directory per disk drive.)
-bool FilePath::IsRootDirectory() const {
-#if GTEST_OS_WINDOWS
-  return pathname_.length() == 3 && IsAbsolutePath();
-#else
-  return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
-#endif
-}
-
-// Returns true if pathname describes an absolute path.
-bool FilePath::IsAbsolutePath() const {
-  const char* const name = pathname_.c_str();
-#if GTEST_OS_WINDOWS
-  return pathname_.length() >= 3 &&
-     ((name[0] >= 'a' && name[0] <= 'z') ||
-      (name[0] >= 'A' && name[0] <= 'Z')) &&
-     name[1] == ':' &&
-     IsPathSeparator(name[2]);
-#else
-  return IsPathSeparator(name[0]);
-#endif
-}
-
-// Returns a pathname for a file that does not currently exist. The pathname
-// will be directory/base_name.extension or
-// directory/base_name_<number>.extension if directory/base_name.extension
-// already exists. The number will be incremented until a pathname is found
-// that does not already exist.
-// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
-// There could be a race condition if two or more processes are calling this
-// function at the same time -- they could both pick the same filename.
-FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
-                                          const FilePath& base_name,
-                                          const char* extension) {
-  FilePath full_pathname;
-  int number = 0;
-  do {
-    full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
-  } while (full_pathname.FileOrDirectoryExists());
-  return full_pathname;
-}
-
-// Returns true if FilePath ends with a path separator, which indicates that
-// it is intended to represent a directory. Returns false otherwise.
-// This does NOT check that a directory (or file) actually exists.
-bool FilePath::IsDirectory() const {
-  return !pathname_.empty() &&
-         IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
-}
-
-// Create directories so that path exists. Returns true if successful or if
-// the directories already exist; returns false if unable to create directories
-// for any reason.
-bool FilePath::CreateDirectoriesRecursively() const {
-  if (!this->IsDirectory()) {
-    return false;
-  }
-
-  if (pathname_.length() == 0 || this->DirectoryExists()) {
-    return true;
-  }
-
-  const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
-  return parent.CreateDirectoriesRecursively() && this->CreateFolder();
-}
-
-// Create the directory so that path exists. Returns true if successful or
-// if the directory already exists; returns false if unable to create the
-// directory for any reason, including if the parent directory does not
-// exist. Not named "CreateDirectory" because that's a macro on Windows.
-bool FilePath::CreateFolder() const {
-#if GTEST_OS_WINDOWS_MOBILE
-  FilePath removed_sep(this->RemoveTrailingPathSeparator());
-  LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
-  int result = CreateDirectory(unicode, nullptr) ? 0 : -1;
-  delete [] unicode;
-#elif GTEST_OS_WINDOWS
-  int result = _mkdir(pathname_.c_str());
-#elif GTEST_OS_ESP8266 || GTEST_OS_XTENSA
-  // do nothing
-  int result = 0;
-#else
-  int result = mkdir(pathname_.c_str(), 0777);
-#endif  // GTEST_OS_WINDOWS_MOBILE
-
-  if (result == -1) {
-    return this->DirectoryExists();  // An error is OK if the directory exists.
-  }
-  return true;  // No error.
-}
-
-// If input name has a trailing separator character, remove it and return the
-// name, otherwise return the name string unmodified.
-// On Windows platform, uses \ as the separator, other platforms use /.
-FilePath FilePath::RemoveTrailingPathSeparator() const {
-  return IsDirectory()
-      ? FilePath(pathname_.substr(0, pathname_.length() - 1))
-      : *this;
-}
-
-// Removes any redundant separators that might be in the pathname.
-// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
-// redundancies that might be in a pathname involving "." or "..".
-void FilePath::Normalize() {
-  auto out = pathname_.begin();
-
-  for (const char character : pathname_) {
-    if (!IsPathSeparator(character)) {
-      *(out++) = character;
-    } else if (out == pathname_.begin() || *std::prev(out) != kPathSeparator) {
-      *(out++) = kPathSeparator;
-    } else {
-      continue;
-    }
-  }
-
-  pathname_.erase(out, pathname_.end());
-}
-
-}  // namespace internal
-}  // namespace testing
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This file implements just enough of the matcher interface to allow
-// EXPECT_DEATH and friends to accept a matcher argument.
-
-
-#include <string>
-
-namespace testing {
-
-// Constructs a matcher that matches a const std::string& whose value is
-// equal to s.
-Matcher<const std::string&>::Matcher(const std::string& s) { *this = Eq(s); }
-
-// Constructs a matcher that matches a const std::string& whose value is
-// equal to s.
-Matcher<const std::string&>::Matcher(const char* s) {
-  *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a std::string whose value is equal to
-// s.
-Matcher<std::string>::Matcher(const std::string& s) { *this = Eq(s); }
-
-// Constructs a matcher that matches a std::string whose value is equal to
-// s.
-Matcher<std::string>::Matcher(const char* s) { *this = Eq(std::string(s)); }
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-// Constructs a matcher that matches a const StringView& whose value is
-// equal to s.
-Matcher<const internal::StringView&>::Matcher(const std::string& s) {
-  *this = Eq(s);
-}
-
-// Constructs a matcher that matches a const StringView& whose value is
-// equal to s.
-Matcher<const internal::StringView&>::Matcher(const char* s) {
-  *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a const StringView& whose value is
-// equal to s.
-Matcher<const internal::StringView&>::Matcher(internal::StringView s) {
-  *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a StringView whose value is equal to
-// s.
-Matcher<internal::StringView>::Matcher(const std::string& s) { *this = Eq(s); }
-
-// Constructs a matcher that matches a StringView whose value is equal to
-// s.
-Matcher<internal::StringView>::Matcher(const char* s) {
-  *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a StringView whose value is equal to
-// s.
-Matcher<internal::StringView>::Matcher(internal::StringView s) {
-  *this = Eq(std::string(s));
-}
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-}  // namespace testing
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <cstdint>
-#include <fstream>
-#include <memory>
-
-#if GTEST_OS_WINDOWS
-# include <windows.h>
-# include <io.h>
-# include <sys/stat.h>
-# include <map>  // Used in ThreadLocal.
-# ifdef _MSC_VER
-#  include <crtdbg.h>
-# endif  // _MSC_VER
-#else
-# include <unistd.h>
-#endif  // GTEST_OS_WINDOWS
-
-#if GTEST_OS_MAC
-# include <mach/mach_init.h>
-# include <mach/task.h>
-# include <mach/vm_map.h>
-#endif  // GTEST_OS_MAC
-
-#if GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
-    GTEST_OS_NETBSD || GTEST_OS_OPENBSD
-# include <sys/sysctl.h>
-# if GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD
-#  include <sys/user.h>
-# endif
-#endif
-
-#if GTEST_OS_QNX
-# include <devctl.h>
-# include <fcntl.h>
-# include <sys/procfs.h>
-#endif  // GTEST_OS_QNX
-
-#if GTEST_OS_AIX
-# include <procinfo.h>
-# include <sys/types.h>
-#endif  // GTEST_OS_AIX
-
-#if GTEST_OS_FUCHSIA
-# include <zircon/process.h>
-# include <zircon/syscalls.h>
-#endif  // GTEST_OS_FUCHSIA
-
-
-namespace testing {
-namespace internal {
-
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
-const int kStdOutFileno = 1;
-const int kStdErrFileno = 2;
-#else
-const int kStdOutFileno = STDOUT_FILENO;
-const int kStdErrFileno = STDERR_FILENO;
-#endif  // _MSC_VER
-
-#if GTEST_OS_LINUX
-
-namespace {
-template <typename T>
-T ReadProcFileField(const std::string& filename, int field) {
-  std::string dummy;
-  std::ifstream file(filename.c_str());
-  while (field-- > 0) {
-    file >> dummy;
-  }
-  T output = 0;
-  file >> output;
-  return output;
-}
-}  // namespace
-
-// Returns the number of active threads, or 0 when there is an error.
-size_t GetThreadCount() {
-  const std::string filename =
-      (Message() << "/proc/" << getpid() << "/stat").GetString();
-  return ReadProcFileField<size_t>(filename, 19);
-}
-
-#elif GTEST_OS_MAC
-
-size_t GetThreadCount() {
-  const task_t task = mach_task_self();
-  mach_msg_type_number_t thread_count;
-  thread_act_array_t thread_list;
-  const kern_return_t status = task_threads(task, &thread_list, &thread_count);
-  if (status == KERN_SUCCESS) {
-    // task_threads allocates resources in thread_list and we need to free them
-    // to avoid leaks.
-    vm_deallocate(task,
-                  reinterpret_cast<vm_address_t>(thread_list),
-                  sizeof(thread_t) * thread_count);
-    return static_cast<size_t>(thread_count);
-  } else {
-    return 0;
-  }
-}
-
-#elif GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
-      GTEST_OS_NETBSD
-
-#if GTEST_OS_NETBSD
-#undef KERN_PROC
-#define KERN_PROC KERN_PROC2
-#define kinfo_proc kinfo_proc2
-#endif
-
-#if GTEST_OS_DRAGONFLY
-#define KP_NLWP(kp) (kp.kp_nthreads)
-#elif GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD
-#define KP_NLWP(kp) (kp.ki_numthreads)
-#elif GTEST_OS_NETBSD
-#define KP_NLWP(kp) (kp.p_nlwps)
-#endif
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
-  int mib[] = {
-    CTL_KERN,
-    KERN_PROC,
-    KERN_PROC_PID,
-    getpid(),
-#if GTEST_OS_NETBSD
-    sizeof(struct kinfo_proc),
-    1,
-#endif
-  };
-  u_int miblen = sizeof(mib) / sizeof(mib[0]);
-  struct kinfo_proc info;
-  size_t size = sizeof(info);
-  if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
-    return 0;
-  }
-  return static_cast<size_t>(KP_NLWP(info));
-}
-#elif GTEST_OS_OPENBSD
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
-  int mib[] = {
-    CTL_KERN,
-    KERN_PROC,
-    KERN_PROC_PID | KERN_PROC_SHOW_THREADS,
-    getpid(),
-    sizeof(struct kinfo_proc),
-    0,
-  };
-  u_int miblen = sizeof(mib) / sizeof(mib[0]);
-
-  // get number of structs
-  size_t size;
-  if (sysctl(mib, miblen, NULL, &size, NULL, 0)) {
-    return 0;
-  }
-
-  mib[5] = static_cast<int>(size / static_cast<size_t>(mib[4]));
-
-  // populate array of structs
-  struct kinfo_proc info[mib[5]];
-  if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
-    return 0;
-  }
-
-  // exclude empty members
-  size_t nthreads = 0;
-  for (size_t i = 0; i < size / static_cast<size_t>(mib[4]); i++) {
-    if (info[i].p_tid != -1)
-      nthreads++;
-  }
-  return nthreads;
-}
-
-#elif GTEST_OS_QNX
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
-  const int fd = open("/proc/self/as", O_RDONLY);
-  if (fd < 0) {
-    return 0;
-  }
-  procfs_info process_info;
-  const int status =
-      devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), nullptr);
-  close(fd);
-  if (status == EOK) {
-    return static_cast<size_t>(process_info.num_threads);
-  } else {
-    return 0;
-  }
-}
-
-#elif GTEST_OS_AIX
-
-size_t GetThreadCount() {
-  struct procentry64 entry;
-  pid_t pid = getpid();
-  int status = getprocs64(&entry, sizeof(entry), nullptr, 0, &pid, 1);
-  if (status == 1) {
-    return entry.pi_thcount;
-  } else {
-    return 0;
-  }
-}
-
-#elif GTEST_OS_FUCHSIA
-
-size_t GetThreadCount() {
-  int dummy_buffer;
-  size_t avail;
-  zx_status_t status = zx_object_get_info(
-      zx_process_self(),
-      ZX_INFO_PROCESS_THREADS,
-      &dummy_buffer,
-      0,
-      nullptr,
-      &avail);
-  if (status == ZX_OK) {
-    return avail;
-  } else {
-    return 0;
-  }
-}
-
-#else
-
-size_t GetThreadCount() {
-  // There's no portable way to detect the number of threads, so we just
-  // return 0 to indicate that we cannot detect it.
-  return 0;
-}
-
-#endif  // GTEST_OS_LINUX
-
-#if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-void SleepMilliseconds(int n) {
-  ::Sleep(static_cast<DWORD>(n));
-}
-
-AutoHandle::AutoHandle()
-    : handle_(INVALID_HANDLE_VALUE) {}
-
-AutoHandle::AutoHandle(Handle handle)
-    : handle_(handle) {}
-
-AutoHandle::~AutoHandle() {
-  Reset();
-}
-
-AutoHandle::Handle AutoHandle::Get() const {
-  return handle_;
-}
-
-void AutoHandle::Reset() {
-  Reset(INVALID_HANDLE_VALUE);
-}
-
-void AutoHandle::Reset(HANDLE handle) {
-  // Resetting with the same handle we already own is invalid.
-  if (handle_ != handle) {
-    if (IsCloseable()) {
-      ::CloseHandle(handle_);
-    }
-    handle_ = handle;
-  } else {
-    GTEST_CHECK_(!IsCloseable())
-        << "Resetting a valid handle to itself is likely a programmer error "
-            "and thus not allowed.";
-  }
-}
-
-bool AutoHandle::IsCloseable() const {
-  // Different Windows APIs may use either of these values to represent an
-  // invalid handle.
-  return handle_ != nullptr && handle_ != INVALID_HANDLE_VALUE;
-}
-
-Notification::Notification()
-    : event_(::CreateEvent(nullptr,     // Default security attributes.
-                           TRUE,        // Do not reset automatically.
-                           FALSE,       // Initially unset.
-                           nullptr)) {  // Anonymous event.
-  GTEST_CHECK_(event_.Get() != nullptr);
-}
-
-void Notification::Notify() {
-  GTEST_CHECK_(::SetEvent(event_.Get()) != FALSE);
-}
-
-void Notification::WaitForNotification() {
-  GTEST_CHECK_(
-      ::WaitForSingleObject(event_.Get(), INFINITE) == WAIT_OBJECT_0);
-}
-
-Mutex::Mutex()
-    : owner_thread_id_(0),
-      type_(kDynamic),
-      critical_section_init_phase_(0),
-      critical_section_(new CRITICAL_SECTION) {
-  ::InitializeCriticalSection(critical_section_);
-}
-
-Mutex::~Mutex() {
-  // Static mutexes are leaked intentionally. It is not thread-safe to try
-  // to clean them up.
-  if (type_ == kDynamic) {
-    ::DeleteCriticalSection(critical_section_);
-    delete critical_section_;
-    critical_section_ = nullptr;
-  }
-}
-
-void Mutex::Lock() {
-  ThreadSafeLazyInit();
-  ::EnterCriticalSection(critical_section_);
-  owner_thread_id_ = ::GetCurrentThreadId();
-}
-
-void Mutex::Unlock() {
-  ThreadSafeLazyInit();
-  // We don't protect writing to owner_thread_id_ here, as it's the
-  // caller's responsibility to ensure that the current thread holds the
-  // mutex when this is called.
-  owner_thread_id_ = 0;
-  ::LeaveCriticalSection(critical_section_);
-}
-
-// Does nothing if the current thread holds the mutex. Otherwise, crashes
-// with high probability.
-void Mutex::AssertHeld() {
-  ThreadSafeLazyInit();
-  GTEST_CHECK_(owner_thread_id_ == ::GetCurrentThreadId())
-      << "The current thread is not holding the mutex @" << this;
-}
-
-namespace {
-
-#ifdef _MSC_VER
-// Use the RAII idiom to flag mem allocs that are intentionally never
-// deallocated. The motivation is to silence the false positive mem leaks
-// that are reported by the debug version of MS's CRT which can only detect
-// if an alloc is missing a matching deallocation.
-// Example:
-//    MemoryIsNotDeallocated memory_is_not_deallocated;
-//    critical_section_ = new CRITICAL_SECTION;
-//
-class MemoryIsNotDeallocated
-{
- public:
-  MemoryIsNotDeallocated() : old_crtdbg_flag_(0) {
-    old_crtdbg_flag_ = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
-    // Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
-    // doesn't report mem leak if there's no matching deallocation.
-    _CrtSetDbgFlag(old_crtdbg_flag_ & ~_CRTDBG_ALLOC_MEM_DF);
-  }
-
-  ~MemoryIsNotDeallocated() {
-    // Restore the original _CRTDBG_ALLOC_MEM_DF flag
-    _CrtSetDbgFlag(old_crtdbg_flag_);
-  }
-
- private:
-  int old_crtdbg_flag_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MemoryIsNotDeallocated);
-};
-#endif  // _MSC_VER
-
-}  // namespace
-
-// Initializes owner_thread_id_ and critical_section_ in static mutexes.
-void Mutex::ThreadSafeLazyInit() {
-  // Dynamic mutexes are initialized in the constructor.
-  if (type_ == kStatic) {
-    switch (
-        ::InterlockedCompareExchange(&critical_section_init_phase_, 1L, 0L)) {
-      case 0:
-        // If critical_section_init_phase_ was 0 before the exchange, we
-        // are the first to test it and need to perform the initialization.
-        owner_thread_id_ = 0;
-        {
-          // Use RAII to flag that following mem alloc is never deallocated.
-#ifdef _MSC_VER
-          MemoryIsNotDeallocated memory_is_not_deallocated;
-#endif  // _MSC_VER
-          critical_section_ = new CRITICAL_SECTION;
-        }
-        ::InitializeCriticalSection(critical_section_);
-        // Updates the critical_section_init_phase_ to 2 to signal
-        // initialization complete.
-        GTEST_CHECK_(::InterlockedCompareExchange(
-                          &critical_section_init_phase_, 2L, 1L) ==
-                      1L);
-        break;
-      case 1:
-        // Somebody else is already initializing the mutex; spin until they
-        // are done.
-        while (::InterlockedCompareExchange(&critical_section_init_phase_,
-                                            2L,
-                                            2L) != 2L) {
-          // Possibly yields the rest of the thread's time slice to other
-          // threads.
-          ::Sleep(0);
-        }
-        break;
-
-      case 2:
-        break;  // The mutex is already initialized and ready for use.
-
-      default:
-        GTEST_CHECK_(false)
-            << "Unexpected value of critical_section_init_phase_ "
-            << "while initializing a static mutex.";
-    }
-  }
-}
-
-namespace {
-
-class ThreadWithParamSupport : public ThreadWithParamBase {
- public:
-  static HANDLE CreateThread(Runnable* runnable,
-                             Notification* thread_can_start) {
-    ThreadMainParam* param = new ThreadMainParam(runnable, thread_can_start);
-    DWORD thread_id;
-    HANDLE thread_handle = ::CreateThread(
-        nullptr,  // Default security.
-        0,        // Default stack size.
-        &ThreadWithParamSupport::ThreadMain,
-        param,        // Parameter to ThreadMainStatic
-        0x0,          // Default creation flags.
-        &thread_id);  // Need a valid pointer for the call to work under Win98.
-    GTEST_CHECK_(thread_handle != nullptr)
-        << "CreateThread failed with error " << ::GetLastError() << ".";
-    if (thread_handle == nullptr) {
-      delete param;
-    }
-    return thread_handle;
-  }
-
- private:
-  struct ThreadMainParam {
-    ThreadMainParam(Runnable* runnable, Notification* thread_can_start)
-        : runnable_(runnable),
-          thread_can_start_(thread_can_start) {
-    }
-    std::unique_ptr<Runnable> runnable_;
-    // Does not own.
-    Notification* thread_can_start_;
-  };
-
-  static DWORD WINAPI ThreadMain(void* ptr) {
-    // Transfers ownership.
-    std::unique_ptr<ThreadMainParam> param(static_cast<ThreadMainParam*>(ptr));
-    if (param->thread_can_start_ != nullptr)
-      param->thread_can_start_->WaitForNotification();
-    param->runnable_->Run();
-    return 0;
-  }
-
-  // Prohibit instantiation.
-  ThreadWithParamSupport();
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport);
-};
-
-}  // namespace
-
-ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
-                                         Notification* thread_can_start)
-      : thread_(ThreadWithParamSupport::CreateThread(runnable,
-                                                     thread_can_start)) {
-}
-
-ThreadWithParamBase::~ThreadWithParamBase() {
-  Join();
-}
-
-void ThreadWithParamBase::Join() {
-  GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0)
-      << "Failed to join the thread with error " << ::GetLastError() << ".";
-}
-
-// Maps a thread to a set of ThreadIdToThreadLocals that have values
-// instantiated on that thread and notifies them when the thread exits.  A
-// ThreadLocal instance is expected to persist until all threads it has
-// values on have terminated.
-class ThreadLocalRegistryImpl {
- public:
-  // Registers thread_local_instance as having value on the current thread.
-  // Returns a value that can be used to identify the thread from other threads.
-  static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
-      const ThreadLocalBase* thread_local_instance) {
-#ifdef _MSC_VER
-    MemoryIsNotDeallocated memory_is_not_deallocated;
-#endif  // _MSC_VER
-    DWORD current_thread = ::GetCurrentThreadId();
-    MutexLock lock(&mutex_);
-    ThreadIdToThreadLocals* const thread_to_thread_locals =
-        GetThreadLocalsMapLocked();
-    ThreadIdToThreadLocals::iterator thread_local_pos =
-        thread_to_thread_locals->find(current_thread);
-    if (thread_local_pos == thread_to_thread_locals->end()) {
-      thread_local_pos = thread_to_thread_locals->insert(
-          std::make_pair(current_thread, ThreadLocalValues())).first;
-      StartWatcherThreadFor(current_thread);
-    }
-    ThreadLocalValues& thread_local_values = thread_local_pos->second;
-    ThreadLocalValues::iterator value_pos =
-        thread_local_values.find(thread_local_instance);
-    if (value_pos == thread_local_values.end()) {
-      value_pos =
-          thread_local_values
-              .insert(std::make_pair(
-                  thread_local_instance,
-                  std::shared_ptr<ThreadLocalValueHolderBase>(
-                      thread_local_instance->NewValueForCurrentThread())))
-              .first;
-    }
-    return value_pos->second.get();
-  }
-
-  static void OnThreadLocalDestroyed(
-      const ThreadLocalBase* thread_local_instance) {
-    std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
-    // Clean up the ThreadLocalValues data structure while holding the lock, but
-    // defer the destruction of the ThreadLocalValueHolderBases.
-    {
-      MutexLock lock(&mutex_);
-      ThreadIdToThreadLocals* const thread_to_thread_locals =
-          GetThreadLocalsMapLocked();
-      for (ThreadIdToThreadLocals::iterator it =
-          thread_to_thread_locals->begin();
-          it != thread_to_thread_locals->end();
-          ++it) {
-        ThreadLocalValues& thread_local_values = it->second;
-        ThreadLocalValues::iterator value_pos =
-            thread_local_values.find(thread_local_instance);
-        if (value_pos != thread_local_values.end()) {
-          value_holders.push_back(value_pos->second);
-          thread_local_values.erase(value_pos);
-          // This 'if' can only be successful at most once, so theoretically we
-          // could break out of the loop here, but we don't bother doing so.
-        }
-      }
-    }
-    // Outside the lock, let the destructor for 'value_holders' deallocate the
-    // ThreadLocalValueHolderBases.
-  }
-
-  static void OnThreadExit(DWORD thread_id) {
-    GTEST_CHECK_(thread_id != 0) << ::GetLastError();
-    std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
-    // Clean up the ThreadIdToThreadLocals data structure while holding the
-    // lock, but defer the destruction of the ThreadLocalValueHolderBases.
-    {
-      MutexLock lock(&mutex_);
-      ThreadIdToThreadLocals* const thread_to_thread_locals =
-          GetThreadLocalsMapLocked();
-      ThreadIdToThreadLocals::iterator thread_local_pos =
-          thread_to_thread_locals->find(thread_id);
-      if (thread_local_pos != thread_to_thread_locals->end()) {
-        ThreadLocalValues& thread_local_values = thread_local_pos->second;
-        for (ThreadLocalValues::iterator value_pos =
-            thread_local_values.begin();
-            value_pos != thread_local_values.end();
-            ++value_pos) {
-          value_holders.push_back(value_pos->second);
-        }
-        thread_to_thread_locals->erase(thread_local_pos);
-      }
-    }
-    // Outside the lock, let the destructor for 'value_holders' deallocate the
-    // ThreadLocalValueHolderBases.
-  }
-
- private:
-  // In a particular thread, maps a ThreadLocal object to its value.
-  typedef std::map<const ThreadLocalBase*,
-                   std::shared_ptr<ThreadLocalValueHolderBase> >
-      ThreadLocalValues;
-  // Stores all ThreadIdToThreadLocals having values in a thread, indexed by
-  // thread's ID.
-  typedef std::map<DWORD, ThreadLocalValues> ThreadIdToThreadLocals;
-
-  // Holds the thread id and thread handle that we pass from
-  // StartWatcherThreadFor to WatcherThreadFunc.
-  typedef std::pair<DWORD, HANDLE> ThreadIdAndHandle;
-
-  static void StartWatcherThreadFor(DWORD thread_id) {
-    // The returned handle will be kept in thread_map and closed by
-    // watcher_thread in WatcherThreadFunc.
-    HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
-                                 FALSE,
-                                 thread_id);
-    GTEST_CHECK_(thread != nullptr);
-    // We need to pass a valid thread ID pointer into CreateThread for it
-    // to work correctly under Win98.
-    DWORD watcher_thread_id;
-    HANDLE watcher_thread = ::CreateThread(
-        nullptr,  // Default security.
-        0,        // Default stack size
-        &ThreadLocalRegistryImpl::WatcherThreadFunc,
-        reinterpret_cast<LPVOID>(new ThreadIdAndHandle(thread_id, thread)),
-        CREATE_SUSPENDED, &watcher_thread_id);
-    GTEST_CHECK_(watcher_thread != nullptr);
-    // Give the watcher thread the same priority as ours to avoid being
-    // blocked by it.
-    ::SetThreadPriority(watcher_thread,
-                        ::GetThreadPriority(::GetCurrentThread()));
-    ::ResumeThread(watcher_thread);
-    ::CloseHandle(watcher_thread);
-  }
-
-  // Monitors exit from a given thread and notifies those
-  // ThreadIdToThreadLocals about thread termination.
-  static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
-    const ThreadIdAndHandle* tah =
-        reinterpret_cast<const ThreadIdAndHandle*>(param);
-    GTEST_CHECK_(
-        ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
-    OnThreadExit(tah->first);
-    ::CloseHandle(tah->second);
-    delete tah;
-    return 0;
-  }
-
-  // Returns map of thread local instances.
-  static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
-    mutex_.AssertHeld();
-#ifdef _MSC_VER
-    MemoryIsNotDeallocated memory_is_not_deallocated;
-#endif  // _MSC_VER
-    static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
-    return map;
-  }
-
-  // Protects access to GetThreadLocalsMapLocked() and its return value.
-  static Mutex mutex_;
-  // Protects access to GetThreadMapLocked() and its return value.
-  static Mutex thread_map_mutex_;
-};
-
-Mutex ThreadLocalRegistryImpl::mutex_(Mutex::kStaticMutex);  // NOLINT
-Mutex ThreadLocalRegistryImpl::thread_map_mutex_(Mutex::kStaticMutex);  // NOLINT
-
-ThreadLocalValueHolderBase* ThreadLocalRegistry::GetValueOnCurrentThread(
-      const ThreadLocalBase* thread_local_instance) {
-  return ThreadLocalRegistryImpl::GetValueOnCurrentThread(
-      thread_local_instance);
-}
-
-void ThreadLocalRegistry::OnThreadLocalDestroyed(
-      const ThreadLocalBase* thread_local_instance) {
-  ThreadLocalRegistryImpl::OnThreadLocalDestroyed(thread_local_instance);
-}
-
-#endif  // GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-#if GTEST_USES_POSIX_RE
-
-// Implements RE.  Currently only needed for death tests.
-
-RE::~RE() {
-  if (is_valid_) {
-    // regfree'ing an invalid regex might crash because the content
-    // of the regex is undefined. Since the regex's are essentially
-    // the same, one cannot be valid (or invalid) without the other
-    // being so too.
-    regfree(&partial_regex_);
-    regfree(&full_regex_);
-  }
-  free(const_cast<char*>(pattern_));
-}
-
-// Returns true if and only if regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
-  if (!re.is_valid_) return false;
-
-  regmatch_t match;
-  return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
-}
-
-// Returns true if and only if regular expression re matches a substring of
-// str (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
-  if (!re.is_valid_) return false;
-
-  regmatch_t match;
-  return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
-  pattern_ = posix::StrDup(regex);
-
-  // Reserves enough bytes to hold the regular expression used for a
-  // full match.
-  const size_t full_regex_len = strlen(regex) + 10;
-  char* const full_pattern = new char[full_regex_len];
-
-  snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
-  is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
-  // We want to call regcomp(&partial_regex_, ...) even if the
-  // previous expression returns false.  Otherwise partial_regex_ may
-  // not be properly initialized can may cause trouble when it's
-  // freed.
-  //
-  // Some implementation of POSIX regex (e.g. on at least some
-  // versions of Cygwin) doesn't accept the empty string as a valid
-  // regex.  We change it to an equivalent form "()" to be safe.
-  if (is_valid_) {
-    const char* const partial_regex = (*regex == '\0') ? "()" : regex;
-    is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
-  }
-  EXPECT_TRUE(is_valid_)
-      << "Regular expression \"" << regex
-      << "\" is not a valid POSIX Extended regular expression.";
-
-  delete[] full_pattern;
-}
-
-#elif GTEST_USES_SIMPLE_RE
-
-// Returns true if and only if ch appears anywhere in str (excluding the
-// terminating '\0' character).
-bool IsInSet(char ch, const char* str) {
-  return ch != '\0' && strchr(str, ch) != nullptr;
-}
-
-// Returns true if and only if ch belongs to the given classification.
-// Unlike similar functions in <ctype.h>, these aren't affected by the
-// current locale.
-bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
-bool IsAsciiPunct(char ch) {
-  return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
-}
-bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
-bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
-bool IsAsciiWordChar(char ch) {
-  return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
-      ('0' <= ch && ch <= '9') || ch == '_';
-}
-
-// Returns true if and only if "\\c" is a supported escape sequence.
-bool IsValidEscape(char c) {
-  return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
-}
-
-// Returns true if and only if the given atom (specified by escaped and
-// pattern) matches ch.  The result is undefined if the atom is invalid.
-bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
-  if (escaped) {  // "\\p" where p is pattern_char.
-    switch (pattern_char) {
-      case 'd': return IsAsciiDigit(ch);
-      case 'D': return !IsAsciiDigit(ch);
-      case 'f': return ch == '\f';
-      case 'n': return ch == '\n';
-      case 'r': return ch == '\r';
-      case 's': return IsAsciiWhiteSpace(ch);
-      case 'S': return !IsAsciiWhiteSpace(ch);
-      case 't': return ch == '\t';
-      case 'v': return ch == '\v';
-      case 'w': return IsAsciiWordChar(ch);
-      case 'W': return !IsAsciiWordChar(ch);
-    }
-    return IsAsciiPunct(pattern_char) && pattern_char == ch;
-  }
-
-  return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
-}
-
-// Helper function used by ValidateRegex() to format error messages.
-static std::string FormatRegexSyntaxError(const char* regex, int index) {
-  return (Message() << "Syntax error at index " << index
-          << " in simple regular expression \"" << regex << "\": ").GetString();
-}
-
-// Generates non-fatal failures and returns false if regex is invalid;
-// otherwise returns true.
-bool ValidateRegex(const char* regex) {
-  if (regex == nullptr) {
-    ADD_FAILURE() << "NULL is not a valid simple regular expression.";
-    return false;
-  }
-
-  bool is_valid = true;
-
-  // True if and only if ?, *, or + can follow the previous atom.
-  bool prev_repeatable = false;
-  for (int i = 0; regex[i]; i++) {
-    if (regex[i] == '\\') {  // An escape sequence
-      i++;
-      if (regex[i] == '\0') {
-        ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
-                      << "'\\' cannot appear at the end.";
-        return false;
-      }
-
-      if (!IsValidEscape(regex[i])) {
-        ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
-                      << "invalid escape sequence \"\\" << regex[i] << "\".";
-        is_valid = false;
-      }
-      prev_repeatable = true;
-    } else {  // Not an escape sequence.
-      const char ch = regex[i];
-
-      if (ch == '^' && i > 0) {
-        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
-                      << "'^' can only appear at the beginning.";
-        is_valid = false;
-      } else if (ch == '$' && regex[i + 1] != '\0') {
-        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
-                      << "'$' can only appear at the end.";
-        is_valid = false;
-      } else if (IsInSet(ch, "()[]{}|")) {
-        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
-                      << "'" << ch << "' is unsupported.";
-        is_valid = false;
-      } else if (IsRepeat(ch) && !prev_repeatable) {
-        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
-                      << "'" << ch << "' can only follow a repeatable token.";
-        is_valid = false;
-      }
-
-      prev_repeatable = !IsInSet(ch, "^$?*+");
-    }
-  }
-
-  return is_valid;
-}
-
-// Matches a repeated regex atom followed by a valid simple regular
-// expression.  The regex atom is defined as c if escaped is false,
-// or \c otherwise.  repeat is the repetition meta character (?, *,
-// or +).  The behavior is undefined if str contains too many
-// characters to be indexable by size_t, in which case the test will
-// probably time out anyway.  We are fine with this limitation as
-// std::string has it too.
-bool MatchRepetitionAndRegexAtHead(
-    bool escaped, char c, char repeat, const char* regex,
-    const char* str) {
-  const size_t min_count = (repeat == '+') ? 1 : 0;
-  const size_t max_count = (repeat == '?') ? 1 :
-      static_cast<size_t>(-1) - 1;
-  // We cannot call numeric_limits::max() as it conflicts with the
-  // max() macro on Windows.
-
-  for (size_t i = 0; i <= max_count; ++i) {
-    // We know that the atom matches each of the first i characters in str.
-    if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
-      // We have enough matches at the head, and the tail matches too.
-      // Since we only care about *whether* the pattern matches str
-      // (as opposed to *how* it matches), there is no need to find a
-      // greedy match.
-      return true;
-    }
-    if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
-      return false;
-  }
-  return false;
-}
-
-// Returns true if and only if regex matches a prefix of str. regex must
-// be a valid simple regular expression and not start with "^", or the
-// result is undefined.
-bool MatchRegexAtHead(const char* regex, const char* str) {
-  if (*regex == '\0')  // An empty regex matches a prefix of anything.
-    return true;
-
-  // "$" only matches the end of a string.  Note that regex being
-  // valid guarantees that there's nothing after "$" in it.
-  if (*regex == '$')
-    return *str == '\0';
-
-  // Is the first thing in regex an escape sequence?
-  const bool escaped = *regex == '\\';
-  if (escaped)
-    ++regex;
-  if (IsRepeat(regex[1])) {
-    // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
-    // here's an indirect recursion.  It terminates as the regex gets
-    // shorter in each recursion.
-    return MatchRepetitionAndRegexAtHead(
-        escaped, regex[0], regex[1], regex + 2, str);
-  } else {
-    // regex isn't empty, isn't "$", and doesn't start with a
-    // repetition.  We match the first atom of regex with the first
-    // character of str and recurse.
-    return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
-        MatchRegexAtHead(regex + 1, str + 1);
-  }
-}
-
-// Returns true if and only if regex matches any substring of str.  regex must
-// be a valid simple regular expression, or the result is undefined.
-//
-// The algorithm is recursive, but the recursion depth doesn't exceed
-// the regex length, so we won't need to worry about running out of
-// stack space normally.  In rare cases the time complexity can be
-// exponential with respect to the regex length + the string length,
-// but usually it's must faster (often close to linear).
-bool MatchRegexAnywhere(const char* regex, const char* str) {
-  if (regex == nullptr || str == nullptr) return false;
-
-  if (*regex == '^')
-    return MatchRegexAtHead(regex + 1, str);
-
-  // A successful match can be anywhere in str.
-  do {
-    if (MatchRegexAtHead(regex, str))
-      return true;
-  } while (*str++ != '\0');
-  return false;
-}
-
-// Implements the RE class.
-
-RE::~RE() {
-  free(const_cast<char*>(pattern_));
-  free(const_cast<char*>(full_pattern_));
-}
-
-// Returns true if and only if regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
-  return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
-}
-
-// Returns true if and only if regular expression re matches a substring of
-// str (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
-  return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
-  pattern_ = full_pattern_ = nullptr;
-  if (regex != nullptr) {
-    pattern_ = posix::StrDup(regex);
-  }
-
-  is_valid_ = ValidateRegex(regex);
-  if (!is_valid_) {
-    // No need to calculate the full pattern when the regex is invalid.
-    return;
-  }
-
-  const size_t len = strlen(regex);
-  // Reserves enough bytes to hold the regular expression used for a
-  // full match: we need space to prepend a '^', append a '$', and
-  // terminate the string with '\0'.
-  char* buffer = static_cast<char*>(malloc(len + 3));
-  full_pattern_ = buffer;
-
-  if (*regex != '^')
-    *buffer++ = '^';  // Makes sure full_pattern_ starts with '^'.
-
-  // We don't use snprintf or strncpy, as they trigger a warning when
-  // compiled with VC++ 8.0.
-  memcpy(buffer, regex, len);
-  buffer += len;
-
-  if (len == 0 || regex[len - 1] != '$')
-    *buffer++ = '$';  // Makes sure full_pattern_ ends with '$'.
-
-  *buffer = '\0';
-}
-
-#endif  // GTEST_USES_POSIX_RE
-
-const char kUnknownFile[] = "unknown file";
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
-  const std::string file_name(file == nullptr ? kUnknownFile : file);
-
-  if (line < 0) {
-    return file_name + ":";
-  }
-#ifdef _MSC_VER
-  return file_name + "(" + StreamableToString(line) + "):";
-#else
-  return file_name + ":" + StreamableToString(line) + ":";
-#endif  // _MSC_VER
-}
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-// Note that FormatCompilerIndependentFileLocation() does NOT append colon
-// to the file location it produces, unlike FormatFileLocation().
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
-    const char* file, int line) {
-  const std::string file_name(file == nullptr ? kUnknownFile : file);
-
-  if (line < 0)
-    return file_name;
-  else
-    return file_name + ":" + StreamableToString(line);
-}
-
-GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
-    : severity_(severity) {
-  const char* const marker =
-      severity == GTEST_INFO ?    "[  INFO ]" :
-      severity == GTEST_WARNING ? "[WARNING]" :
-      severity == GTEST_ERROR ?   "[ ERROR ]" : "[ FATAL ]";
-  GetStream() << ::std::endl << marker << " "
-              << FormatFileLocation(file, line).c_str() << ": ";
-}
-
-// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
-GTestLog::~GTestLog() {
-  GetStream() << ::std::endl;
-  if (severity_ == GTEST_FATAL) {
-    fflush(stderr);
-    posix::Abort();
-  }
-}
-
-// Disable Microsoft deprecation warnings for POSIX functions called from
-// this class (creat, dup, dup2, and close)
-GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Object that captures an output stream (stdout/stderr).
-class CapturedStream {
- public:
-  // The ctor redirects the stream to a temporary file.
-  explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
-# if GTEST_OS_WINDOWS
-    char temp_dir_path[MAX_PATH + 1] = { '\0' };  // NOLINT
-    char temp_file_path[MAX_PATH + 1] = { '\0' };  // NOLINT
-
-    ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
-    const UINT success = ::GetTempFileNameA(temp_dir_path,
-                                            "gtest_redir",
-                                            0,  // Generate unique file name.
-                                            temp_file_path);
-    GTEST_CHECK_(success != 0)
-        << "Unable to create a temporary file in " << temp_dir_path;
-    const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
-    GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
-                                    << temp_file_path;
-    filename_ = temp_file_path;
-# else
-    // There's no guarantee that a test has write access to the current
-    // directory, so we create the temporary file in a temporary directory.
-    std::string name_template;
-
-#  if GTEST_OS_LINUX_ANDROID
-    // Note: Android applications are expected to call the framework's
-    // Context.getExternalStorageDirectory() method through JNI to get
-    // the location of the world-writable SD Card directory. However,
-    // this requires a Context handle, which cannot be retrieved
-    // globally from native code. Doing so also precludes running the
-    // code as part of a regular standalone executable, which doesn't
-    // run in a Dalvik process (e.g. when running it through 'adb shell').
-    //
-    // The location /data/local/tmp is directly accessible from native code.
-    // '/sdcard' and other variants cannot be relied on, as they are not
-    // guaranteed to be mounted, or may have a delay in mounting.
-    name_template = "/data/local/tmp/";
-#  elif GTEST_OS_IOS
-    char user_temp_dir[PATH_MAX + 1];
-
-    // Documented alternative to NSTemporaryDirectory() (for obtaining creating
-    // a temporary directory) at
-    // https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/RaceConditions.html#//apple_ref/doc/uid/TP40002585-SW10
-    //
-    // _CS_DARWIN_USER_TEMP_DIR (as well as _CS_DARWIN_USER_CACHE_DIR) is not
-    // documented in the confstr() man page at
-    // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/confstr.3.html#//apple_ref/doc/man/3/confstr
-    // but are still available, according to the WebKit patches at
-    // https://trac.webkit.org/changeset/262004/webkit
-    // https://trac.webkit.org/changeset/263705/webkit
-    //
-    // The confstr() implementation falls back to getenv("TMPDIR"). See
-    // https://opensource.apple.com/source/Libc/Libc-1439.100.3/gen/confstr.c.auto.html
-    ::confstr(_CS_DARWIN_USER_TEMP_DIR, user_temp_dir, sizeof(user_temp_dir));
-
-    name_template = user_temp_dir;
-    if (name_template.back() != GTEST_PATH_SEP_[0])
-      name_template.push_back(GTEST_PATH_SEP_[0]);
-#  else
-    name_template = "/tmp/";
-#  endif
-    name_template.append("gtest_captured_stream.XXXXXX");
-
-    // mkstemp() modifies the string bytes in place, and does not go beyond the
-    // string's length. This results in well-defined behavior in C++17.
-    //
-    // The const_cast is needed below C++17. The constraints on std::string
-    // implementations in C++11 and above make assumption behind the const_cast
-    // fairly safe.
-    const int captured_fd = ::mkstemp(const_cast<char*>(name_template.data()));
-    if (captured_fd == -1) {
-      GTEST_LOG_(WARNING)
-          << "Failed to create tmp file " << name_template
-          << " for test; does the test have access to the /tmp directory?";
-    }
-    filename_ = std::move(name_template);
-# endif  // GTEST_OS_WINDOWS
-    fflush(nullptr);
-    dup2(captured_fd, fd_);
-    close(captured_fd);
-  }
-
-  ~CapturedStream() {
-    remove(filename_.c_str());
-  }
-
-  std::string GetCapturedString() {
-    if (uncaptured_fd_ != -1) {
-      // Restores the original stream.
-      fflush(nullptr);
-      dup2(uncaptured_fd_, fd_);
-      close(uncaptured_fd_);
-      uncaptured_fd_ = -1;
-    }
-
-    FILE* const file = posix::FOpen(filename_.c_str(), "r");
-    if (file == nullptr) {
-      GTEST_LOG_(FATAL) << "Failed to open tmp file " << filename_
-                        << " for capturing stream.";
-    }
-    const std::string content = ReadEntireFile(file);
-    posix::FClose(file);
-    return content;
-  }
-
- private:
-  const int fd_;  // A stream to capture.
-  int uncaptured_fd_;
-  // Name of the temporary file holding the stderr output.
-  ::std::string filename_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
-};
-
-GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
-static CapturedStream* g_captured_stderr = nullptr;
-static CapturedStream* g_captured_stdout = nullptr;
-
-// Starts capturing an output stream (stdout/stderr).
-static void CaptureStream(int fd, const char* stream_name,
-                          CapturedStream** stream) {
-  if (*stream != nullptr) {
-    GTEST_LOG_(FATAL) << "Only one " << stream_name
-                      << " capturer can exist at a time.";
-  }
-  *stream = new CapturedStream(fd);
-}
-
-// Stops capturing the output stream and returns the captured string.
-static std::string GetCapturedStream(CapturedStream** captured_stream) {
-  const std::string content = (*captured_stream)->GetCapturedString();
-
-  delete *captured_stream;
-  *captured_stream = nullptr;
-
-  return content;
-}
-
-// Starts capturing stdout.
-void CaptureStdout() {
-  CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
-}
-
-// Starts capturing stderr.
-void CaptureStderr() {
-  CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
-}
-
-// Stops capturing stdout and returns the captured string.
-std::string GetCapturedStdout() {
-  return GetCapturedStream(&g_captured_stdout);
-}
-
-// Stops capturing stderr and returns the captured string.
-std::string GetCapturedStderr() {
-  return GetCapturedStream(&g_captured_stderr);
-}
-
-#endif  // GTEST_HAS_STREAM_REDIRECTION
-
-
-
-
-
-size_t GetFileSize(FILE* file) {
-  fseek(file, 0, SEEK_END);
-  return static_cast<size_t>(ftell(file));
-}
-
-std::string ReadEntireFile(FILE* file) {
-  const size_t file_size = GetFileSize(file);
-  char* const buffer = new char[file_size];
-
-  size_t bytes_last_read = 0;  // # of bytes read in the last fread()
-  size_t bytes_read = 0;       // # of bytes read so far
-
-  fseek(file, 0, SEEK_SET);
-
-  // Keeps reading the file until we cannot read further or the
-  // pre-determined file size is reached.
-  do {
-    bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
-    bytes_read += bytes_last_read;
-  } while (bytes_last_read > 0 && bytes_read < file_size);
-
-  const std::string content(buffer, bytes_read);
-  delete[] buffer;
-
-  return content;
-}
-
-#if GTEST_HAS_DEATH_TEST
-static const std::vector<std::string>* g_injected_test_argvs =
-    nullptr;  // Owned.
-
-std::vector<std::string> GetInjectableArgvs() {
-  if (g_injected_test_argvs != nullptr) {
-    return *g_injected_test_argvs;
-  }
-  return GetArgvs();
-}
-
-void SetInjectableArgvs(const std::vector<std::string>* new_argvs) {
-  if (g_injected_test_argvs != new_argvs) delete g_injected_test_argvs;
-  g_injected_test_argvs = new_argvs;
-}
-
-void SetInjectableArgvs(const std::vector<std::string>& new_argvs) {
-  SetInjectableArgvs(
-      new std::vector<std::string>(new_argvs.begin(), new_argvs.end()));
-}
-
-void ClearInjectableArgvs() {
-  delete g_injected_test_argvs;
-  g_injected_test_argvs = nullptr;
-}
-#endif  // GTEST_HAS_DEATH_TEST
-
-#if GTEST_OS_WINDOWS_MOBILE
-namespace posix {
-void Abort() {
-  DebugBreak();
-  TerminateProcess(GetCurrentProcess(), 1);
-}
-}  // namespace posix
-#endif  // GTEST_OS_WINDOWS_MOBILE
-
-// Returns the name of the environment variable corresponding to the
-// given flag.  For example, FlagToEnvVar("foo") will return
-// "GTEST_FOO" in the open-source version.
-static std::string FlagToEnvVar(const char* flag) {
-  const std::string full_flag =
-      (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
-
-  Message env_var;
-  for (size_t i = 0; i != full_flag.length(); i++) {
-    env_var << ToUpper(full_flag.c_str()[i]);
-  }
-
-  return env_var.GetString();
-}
-
-// Parses 'str' for a 32-bit signed integer.  If successful, writes
-// the result to *value and returns true; otherwise leaves *value
-// unchanged and returns false.
-bool ParseInt32(const Message& src_text, const char* str, int32_t* value) {
-  // Parses the environment variable as a decimal integer.
-  char* end = nullptr;
-  const long long_value = strtol(str, &end, 10);  // NOLINT
-
-  // Has strtol() consumed all characters in the string?
-  if (*end != '\0') {
-    // No - an invalid character was encountered.
-    Message msg;
-    msg << "WARNING: " << src_text
-        << " is expected to be a 32-bit integer, but actually"
-        << " has value \"" << str << "\".\n";
-    printf("%s", msg.GetString().c_str());
-    fflush(stdout);
-    return false;
-  }
-
-  // Is the parsed value in the range of an int32_t?
-  const auto result = static_cast<int32_t>(long_value);
-  if (long_value == LONG_MAX || long_value == LONG_MIN ||
-      // The parsed value overflows as a long.  (strtol() returns
-      // LONG_MAX or LONG_MIN when the input overflows.)
-      result != long_value
-      // The parsed value overflows as an int32_t.
-      ) {
-    Message msg;
-    msg << "WARNING: " << src_text
-        << " is expected to be a 32-bit integer, but actually"
-        << " has value " << str << ", which overflows.\n";
-    printf("%s", msg.GetString().c_str());
-    fflush(stdout);
-    return false;
-  }
-
-  *value = result;
-  return true;
-}
-
-// Reads and returns the Boolean environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-//
-// The value is considered true if and only if it's not "0".
-bool BoolFromGTestEnv(const char* flag, bool default_value) {
-#if defined(GTEST_GET_BOOL_FROM_ENV_)
-  return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
-#else
-  const std::string env_var = FlagToEnvVar(flag);
-  const char* const string_value = posix::GetEnv(env_var.c_str());
-  return string_value == nullptr ? default_value
-                                 : strcmp(string_value, "0") != 0;
-#endif  // defined(GTEST_GET_BOOL_FROM_ENV_)
-}
-
-// Reads and returns a 32-bit integer stored in the environment
-// variable corresponding to the given flag; if it isn't set or
-// doesn't represent a valid 32-bit integer, returns default_value.
-int32_t Int32FromGTestEnv(const char* flag, int32_t default_value) {
-#if defined(GTEST_GET_INT32_FROM_ENV_)
-  return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
-#else
-  const std::string env_var = FlagToEnvVar(flag);
-  const char* const string_value = posix::GetEnv(env_var.c_str());
-  if (string_value == nullptr) {
-    // The environment variable is not set.
-    return default_value;
-  }
-
-  int32_t result = default_value;
-  if (!ParseInt32(Message() << "Environment variable " << env_var,
-                  string_value, &result)) {
-    printf("The default value %s is used.\n",
-           (Message() << default_value).GetString().c_str());
-    fflush(stdout);
-    return default_value;
-  }
-
-  return result;
-#endif  // defined(GTEST_GET_INT32_FROM_ENV_)
-}
-
-// As a special case for the 'output' flag, if GTEST_OUTPUT is not
-// set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
-// system.  The value of XML_OUTPUT_FILE is a filename without the
-// "xml:" prefix of GTEST_OUTPUT.
-// Note that this is meant to be called at the call site so it does
-// not check that the flag is 'output'
-// In essence this checks an env variable called XML_OUTPUT_FILE
-// and if it is set we prepend "xml:" to its value, if it not set we return ""
-std::string OutputFlagAlsoCheckEnvVar(){
-  std::string default_value_for_output_flag = "";
-  const char* xml_output_file_env = posix::GetEnv("XML_OUTPUT_FILE");
-  if (nullptr != xml_output_file_env) {
-    default_value_for_output_flag = std::string("xml:") + xml_output_file_env;
-  }
-  return default_value_for_output_flag;
-}
-
-// Reads and returns the string environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-const char* StringFromGTestEnv(const char* flag, const char* default_value) {
-#if defined(GTEST_GET_STRING_FROM_ENV_)
-  return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
-#else
-  const std::string env_var = FlagToEnvVar(flag);
-  const char* const value = posix::GetEnv(env_var.c_str());
-  return value == nullptr ? default_value : value;
-#endif  // defined(GTEST_GET_STRING_FROM_ENV_)
-}
-
-}  // namespace internal
-}  // namespace testing
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Test - The Google C++ Testing and Mocking Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-//   void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// It uses the << operator when possible, and prints the bytes in the
-// object otherwise.  A user can override its behavior for a class
-// type Foo by defining either operator<<(::std::ostream&, const Foo&)
-// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
-// defines Foo.
-
-
-#include <stdio.h>
-
-#include <cctype>
-#include <cstdint>
-#include <cwchar>
-#include <ostream>  // NOLINT
-#include <string>
-#include <type_traits>
-
-
-namespace testing {
-
-namespace {
-
-using ::std::ostream;
-
-// Prints a segment of bytes in the given object.
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
-                                size_t count, ostream* os) {
-  char text[5] = "";
-  for (size_t i = 0; i != count; i++) {
-    const size_t j = start + i;
-    if (i != 0) {
-      // Organizes the bytes into groups of 2 for easy parsing by
-      // human.
-      if ((j % 2) == 0)
-        *os << ' ';
-      else
-        *os << '-';
-    }
-    GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
-    *os << text;
-  }
-}
-
-// Prints the bytes in the given value to the given ostream.
-void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
-                              ostream* os) {
-  // Tells the user how big the object is.
-  *os << count << "-byte object <";
-
-  const size_t kThreshold = 132;
-  const size_t kChunkSize = 64;
-  // If the object size is bigger than kThreshold, we'll have to omit
-  // some details by printing only the first and the last kChunkSize
-  // bytes.
-  if (count < kThreshold) {
-    PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
-  } else {
-    PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
-    *os << " ... ";
-    // Rounds up to 2-byte boundary.
-    const size_t resume_pos = (count - kChunkSize + 1)/2*2;
-    PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
-  }
-  *os << ">";
-}
-
-// Helpers for widening a character to char32_t. Since the standard does not
-// specify if char / wchar_t is signed or unsigned, it is important to first
-// convert it to the unsigned type of the same width before widening it to
-// char32_t.
-template <typename CharType>
-char32_t ToChar32(CharType in) {
-  return static_cast<char32_t>(
-      static_cast<typename std::make_unsigned<CharType>::type>(in));
-}
-
-}  // namespace
-
-namespace internal {
-
-// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
-// given object.  The delegation simplifies the implementation, which
-// uses the << operator and thus is easier done outside of the
-// ::testing::internal namespace, which contains a << operator that
-// sometimes conflicts with the one in STL.
-void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
-                          ostream* os) {
-  PrintBytesInObjectToImpl(obj_bytes, count, os);
-}
-
-// Depending on the value of a char (or wchar_t), we print it in one
-// of three formats:
-//   - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
-//   - as a hexadecimal escape sequence (e.g. '\x7F'), or
-//   - as a special escape sequence (e.g. '\r', '\n').
-enum CharFormat {
-  kAsIs,
-  kHexEscape,
-  kSpecialEscape
-};
-
-// Returns true if c is a printable ASCII character.  We test the
-// value of c directly instead of calling isprint(), which is buggy on
-// Windows Mobile.
-inline bool IsPrintableAscii(char32_t c) { return 0x20 <= c && c <= 0x7E; }
-
-// Prints c (of type char, char8_t, char16_t, char32_t, or wchar_t) as a
-// character literal without the quotes, escaping it when necessary; returns how
-// c was formatted.
-template <typename Char>
-static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
-  const char32_t u_c = ToChar32(c);
-  switch (u_c) {
-    case L'\0':
-      *os << "\\0";
-      break;
-    case L'\'':
-      *os << "\\'";
-      break;
-    case L'\\':
-      *os << "\\\\";
-      break;
-    case L'\a':
-      *os << "\\a";
-      break;
-    case L'\b':
-      *os << "\\b";
-      break;
-    case L'\f':
-      *os << "\\f";
-      break;
-    case L'\n':
-      *os << "\\n";
-      break;
-    case L'\r':
-      *os << "\\r";
-      break;
-    case L'\t':
-      *os << "\\t";
-      break;
-    case L'\v':
-      *os << "\\v";
-      break;
-    default:
-      if (IsPrintableAscii(u_c)) {
-        *os << static_cast<char>(c);
-        return kAsIs;
-      } else {
-        ostream::fmtflags flags = os->flags();
-        *os << "\\x" << std::hex << std::uppercase << static_cast<int>(u_c);
-        os->flags(flags);
-        return kHexEscape;
-      }
-  }
-  return kSpecialEscape;
-}
-
-// Prints a char32_t c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(char32_t c, ostream* os) {
-  switch (c) {
-    case L'\'':
-      *os << "'";
-      return kAsIs;
-    case L'"':
-      *os << "\\\"";
-      return kSpecialEscape;
-    default:
-      return PrintAsCharLiteralTo(c, os);
-  }
-}
-
-static const char* GetCharWidthPrefix(char) {
-  return "";
-}
-
-static const char* GetCharWidthPrefix(signed char) {
-  return "";
-}
-
-static const char* GetCharWidthPrefix(unsigned char) {
-  return "";
-}
-
-#ifdef __cpp_char8_t
-static const char* GetCharWidthPrefix(char8_t) {
-  return "u8";
-}
-#endif
-
-static const char* GetCharWidthPrefix(char16_t) {
-  return "u";
-}
-
-static const char* GetCharWidthPrefix(char32_t) {
-  return "U";
-}
-
-static const char* GetCharWidthPrefix(wchar_t) {
-  return "L";
-}
-
-// Prints a char c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
-  return PrintAsStringLiteralTo(ToChar32(c), os);
-}
-
-#ifdef __cpp_char8_t
-static CharFormat PrintAsStringLiteralTo(char8_t c, ostream* os) {
-  return PrintAsStringLiteralTo(ToChar32(c), os);
-}
-#endif
-
-static CharFormat PrintAsStringLiteralTo(char16_t c, ostream* os) {
-  return PrintAsStringLiteralTo(ToChar32(c), os);
-}
-
-static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {
-  return PrintAsStringLiteralTo(ToChar32(c), os);
-}
-
-// Prints a character c (of type char, char8_t, char16_t, char32_t, or wchar_t)
-// and its code. '\0' is printed as "'\\0'", other unprintable characters are
-// also properly escaped using the standard C++ escape sequence.
-template <typename Char>
-void PrintCharAndCodeTo(Char c, ostream* os) {
-  // First, print c as a literal in the most readable form we can find.
-  *os << GetCharWidthPrefix(c) << "'";
-  const CharFormat format = PrintAsCharLiteralTo(c, os);
-  *os << "'";
-
-  // To aid user debugging, we also print c's code in decimal, unless
-  // it's 0 (in which case c was printed as '\\0', making the code
-  // obvious).
-  if (c == 0)
-    return;
-  *os << " (" << static_cast<int>(c);
-
-  // For more convenience, we print c's code again in hexadecimal,
-  // unless c was already printed in the form '\x##' or the code is in
-  // [1, 9].
-  if (format == kHexEscape || (1 <= c && c <= 9)) {
-    // Do nothing.
-  } else {
-    *os << ", 0x" << String::FormatHexInt(static_cast<int>(c));
-  }
-  *os << ")";
-}
-
-void PrintTo(unsigned char c, ::std::ostream* os) { PrintCharAndCodeTo(c, os); }
-void PrintTo(signed char c, ::std::ostream* os) { PrintCharAndCodeTo(c, os); }
-
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its code.  L'\0' is printed as "L'\\0'".
-void PrintTo(wchar_t wc, ostream* os) { PrintCharAndCodeTo(wc, os); }
-
-// TODO(dcheng): Consider making this delegate to PrintCharAndCodeTo() as well.
-void PrintTo(char32_t c, ::std::ostream* os) {
-  *os << std::hex << "U+" << std::uppercase << std::setfill('0') << std::setw(4)
-      << static_cast<uint32_t>(c);
-}
-
-// Prints the given array of characters to the ostream.  CharType must be either
-// char, char8_t, char16_t, char32_t, or wchar_t.
-// The array starts at begin, the length is len, it may include '\0' characters
-// and may not be NUL-terminated.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static CharFormat PrintCharsAsStringTo(
-    const CharType* begin, size_t len, ostream* os) {
-  const char* const quote_prefix = GetCharWidthPrefix(*begin);
-  *os << quote_prefix << "\"";
-  bool is_previous_hex = false;
-  CharFormat print_format = kAsIs;
-  for (size_t index = 0; index < len; ++index) {
-    const CharType cur = begin[index];
-    if (is_previous_hex && IsXDigit(cur)) {
-      // Previous character is of '\x..' form and this character can be
-      // interpreted as another hexadecimal digit in its number. Break string to
-      // disambiguate.
-      *os << "\" " << quote_prefix << "\"";
-    }
-    is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
-    // Remember if any characters required hex escaping.
-    if (is_previous_hex) {
-      print_format = kHexEscape;
-    }
-  }
-  *os << "\"";
-  return print_format;
-}
-
-// Prints a (const) char/wchar_t array of 'len' elements, starting at address
-// 'begin'.  CharType must be either char or wchar_t.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static void UniversalPrintCharArray(
-    const CharType* begin, size_t len, ostream* os) {
-  // The code
-  //   const char kFoo[] = "foo";
-  // generates an array of 4, not 3, elements, with the last one being '\0'.
-  //
-  // Therefore when printing a char array, we don't print the last element if
-  // it's '\0', such that the output matches the string literal as it's
-  // written in the source code.
-  if (len > 0 && begin[len - 1] == '\0') {
-    PrintCharsAsStringTo(begin, len - 1, os);
-    return;
-  }
-
-  // If, however, the last element in the array is not '\0', e.g.
-  //    const char kFoo[] = { 'f', 'o', 'o' };
-  // we must print the entire array.  We also print a message to indicate
-  // that the array is not NUL-terminated.
-  PrintCharsAsStringTo(begin, len, os);
-  *os << " (no terminating NUL)";
-}
-
-// Prints a (const) char array of 'len' elements, starting at address 'begin'.
-void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
-  UniversalPrintCharArray(begin, len, os);
-}
-
-#ifdef __cpp_char8_t
-// Prints a (const) char8_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const char8_t* begin, size_t len, ostream* os) {
-  UniversalPrintCharArray(begin, len, os);
-}
-#endif
-
-// Prints a (const) char16_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const char16_t* begin, size_t len, ostream* os) {
-  UniversalPrintCharArray(begin, len, os);
-}
-
-// Prints a (const) char32_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const char32_t* begin, size_t len, ostream* os) {
-  UniversalPrintCharArray(begin, len, os);
-}
-
-// Prints a (const) wchar_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
-  UniversalPrintCharArray(begin, len, os);
-}
-
-namespace {
-
-// Prints a null-terminated C-style string to the ostream.
-template <typename Char>
-void PrintCStringTo(const Char* s, ostream* os) {
-  if (s == nullptr) {
-    *os << "NULL";
-  } else {
-    *os << ImplicitCast_<const void*>(s) << " pointing to ";
-    PrintCharsAsStringTo(s, std::char_traits<Char>::length(s), os);
-  }
-}
-
-}  // anonymous namespace
-
-void PrintTo(const char* s, ostream* os) { PrintCStringTo(s, os); }
-
-#ifdef __cpp_char8_t
-void PrintTo(const char8_t* s, ostream* os) { PrintCStringTo(s, os); }
-#endif
-
-void PrintTo(const char16_t* s, ostream* os) { PrintCStringTo(s, os); }
-
-void PrintTo(const char32_t* s, ostream* os) { PrintCStringTo(s, os); }
-
-// MSVC compiler can be configured to define whar_t as a typedef
-// of unsigned short. Defining an overload for const wchar_t* in that case
-// would cause pointers to unsigned shorts be printed as wide strings,
-// possibly accessing more memory than intended and causing invalid
-// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
-// wchar_t is implemented as a native type.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Prints the given wide C string to the ostream.
-void PrintTo(const wchar_t* s, ostream* os) { PrintCStringTo(s, os); }
-#endif  // wchar_t is native
-
-namespace {
-
-bool ContainsUnprintableControlCodes(const char* str, size_t length) {
-  const unsigned char *s = reinterpret_cast<const unsigned char *>(str);
-
-  for (size_t i = 0; i < length; i++) {
-    unsigned char ch = *s++;
-    if (std::iscntrl(ch)) {
-        switch (ch) {
-        case '\t':
-        case '\n':
-        case '\r':
-          break;
-        default:
-          return true;
-        }
-      }
-  }
-  return false;
-}
-
-bool IsUTF8TrailByte(unsigned char t) { return 0x80 <= t && t<= 0xbf; }
-
-bool IsValidUTF8(const char* str, size_t length) {
-  const unsigned char *s = reinterpret_cast<const unsigned char *>(str);
-
-  for (size_t i = 0; i < length;) {
-    unsigned char lead = s[i++];
-
-    if (lead <= 0x7f) {
-      continue;  // single-byte character (ASCII) 0..7F
-    }
-    if (lead < 0xc2) {
-      return false;  // trail byte or non-shortest form
-    } else if (lead <= 0xdf && (i + 1) <= length && IsUTF8TrailByte(s[i])) {
-      ++i;  // 2-byte character
-    } else if (0xe0 <= lead && lead <= 0xef && (i + 2) <= length &&
-               IsUTF8TrailByte(s[i]) &&
-               IsUTF8TrailByte(s[i + 1]) &&
-               // check for non-shortest form and surrogate
-               (lead != 0xe0 || s[i] >= 0xa0) &&
-               (lead != 0xed || s[i] < 0xa0)) {
-      i += 2;  // 3-byte character
-    } else if (0xf0 <= lead && lead <= 0xf4 && (i + 3) <= length &&
-               IsUTF8TrailByte(s[i]) &&
-               IsUTF8TrailByte(s[i + 1]) &&
-               IsUTF8TrailByte(s[i + 2]) &&
-               // check for non-shortest form
-               (lead != 0xf0 || s[i] >= 0x90) &&
-               (lead != 0xf4 || s[i] < 0x90)) {
-      i += 3;  // 4-byte character
-    } else {
-      return false;
-    }
-  }
-  return true;
-}
-
-void ConditionalPrintAsText(const char* str, size_t length, ostream* os) {
-  if (!ContainsUnprintableControlCodes(str, length) &&
-      IsValidUTF8(str, length)) {
-    *os << "\n    As Text: \"" << str << "\"";
-  }
-}
-
-}  // anonymous namespace
-
-void PrintStringTo(const ::std::string& s, ostream* os) {
-  if (PrintCharsAsStringTo(s.data(), s.size(), os) == kHexEscape) {
-    if (GTEST_FLAG(print_utf8)) {
-      ConditionalPrintAsText(s.data(), s.size(), os);
-    }
-  }
-}
-
-#ifdef __cpp_char8_t
-void PrintU8StringTo(const ::std::u8string& s, ostream* os) {
-  PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif
-
-void PrintU16StringTo(const ::std::u16string& s, ostream* os) {
-  PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-
-void PrintU32StringTo(const ::std::u32string& s, ostream* os) {
-  PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-
-#if GTEST_HAS_STD_WSTRING
-void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
-  PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif  // GTEST_HAS_STD_WSTRING
-
-}  // namespace internal
-
-}  // namespace testing
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-
-
-
-namespace testing {
-
-using internal::GetUnitTestImpl;
-
-// Gets the summary of the failure message by omitting the stack trace
-// in it.
-std::string TestPartResult::ExtractSummary(const char* message) {
-  const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
-  return stack_trace == nullptr ? message : std::string(message, stack_trace);
-}
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
-  return os << internal::FormatFileLocation(result.file_name(),
-                                            result.line_number())
-            << " "
-            << (result.type() == TestPartResult::kSuccess
-                    ? "Success"
-                    : result.type() == TestPartResult::kSkip
-                          ? "Skipped"
-                          : result.type() == TestPartResult::kFatalFailure
-                                ? "Fatal failure"
-                                : "Non-fatal failure")
-            << ":\n"
-            << result.message() << std::endl;
-}
-
-// Appends a TestPartResult to the array.
-void TestPartResultArray::Append(const TestPartResult& result) {
-  array_.push_back(result);
-}
-
-// Returns the TestPartResult at the given index (0-based).
-const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
-  if (index < 0 || index >= size()) {
-    printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
-    internal::posix::Abort();
-  }
-
-  return array_[static_cast<size_t>(index)];
-}
-
-// Returns the number of TestPartResult objects in the array.
-int TestPartResultArray::size() const {
-  return static_cast<int>(array_.size());
-}
-
-namespace internal {
-
-HasNewFatalFailureHelper::HasNewFatalFailureHelper()
-    : has_new_fatal_failure_(false),
-      original_reporter_(GetUnitTestImpl()->
-                         GetTestPartResultReporterForCurrentThread()) {
-  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
-}
-
-HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
-  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
-      original_reporter_);
-}
-
-void HasNewFatalFailureHelper::ReportTestPartResult(
-    const TestPartResult& result) {
-  if (result.fatally_failed())
-    has_new_fatal_failure_ = true;
-  original_reporter_->ReportTestPartResult(result);
-}
-
-}  // namespace internal
-
-}  // namespace testing
-// Copyright 2023 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-namespace testing {
-namespace internal {
-
-// Skips to the first non-space char in str. Returns an empty string if str
-// contains only whitespace characters.
-static const char* SkipSpaces(const char* str) {
-  while (IsSpace(*str))
-    str++;
-  return str;
-}
-
-static std::vector<std::string> SplitIntoTestNames(const char* src) {
-  std::vector<std::string> name_vec;
-  src = SkipSpaces(src);
-  for (; src != nullptr; src = SkipComma(src)) {
-    name_vec.push_back(StripTrailingSpaces(GetPrefixUntilComma(src)));
-  }
-  return name_vec;
-}
-
-// Verifies that registered_tests match the test names in
-// registered_tests_; returns registered_tests if successful, or
-// aborts the program otherwise.
-const char* TypedTestSuitePState::VerifyRegisteredTestNames(
-    const char* test_suite_name, const char* file, int line,
-    const char* registered_tests) {
-  RegisterTypeParameterizedTestSuite(test_suite_name, CodeLocation(file, line));
-
-  typedef RegisteredTestsMap::const_iterator RegisteredTestIter;
-  registered_ = true;
-
-  std::vector<std::string> name_vec = SplitIntoTestNames(registered_tests);
-
-  Message errors;
-
-  std::set<std::string> tests;
-  for (std::vector<std::string>::const_iterator name_it = name_vec.begin();
-       name_it != name_vec.end(); ++name_it) {
-    const std::string& name = *name_it;
-    if (tests.count(name) != 0) {
-      errors << "Test " << name << " is listed more than once.\n";
-      continue;
-    }
-
-    if (registered_tests_.count(name) != 0) {
-      tests.insert(name);
-    } else {
-      errors << "No test named " << name
-             << " can be found in this test suite.\n";
-    }
-  }
-
-  for (RegisteredTestIter it = registered_tests_.begin();
-       it != registered_tests_.end();
-       ++it) {
-    if (tests.count(it->first) == 0) {
-      errors << "You forgot to list test " << it->first << ".\n";
-    }
-  }
-
-  const std::string& errors_str = errors.GetString();
-  if (errors_str != "") {
-    fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
-            errors_str.c_str());
-    fflush(stderr);
-    posix::Abort();
-  }
-
-  return registered_tests;
-}
-
-}  // namespace internal
-}  // namespace testing
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Mocking Framework (Google Mock)
-//
-// This file #includes all Google Mock implementation .cc files.  The
-// purpose is to allow a user to build Google Mock by compiling this
-// file alone.
-
-// This line ensures that gmock.h can be compiled on its own, even
-// when it's fused.
-#include "gmock/gmock.h"
-
-// The following lines pull in the real gmock *.cc files.
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements cardinalities.
-
-
-#include <limits.h>
-#include <ostream>  // NOLINT
-#include <sstream>
-#include <string>
-
-namespace testing {
-
-namespace {
-
-// Implements the Between(m, n) cardinality.
-class BetweenCardinalityImpl : public CardinalityInterface {
- public:
-  BetweenCardinalityImpl(int min, int max)
-      : min_(min >= 0 ? min : 0),
-        max_(max >= min_ ? max : min_) {
-    std::stringstream ss;
-    if (min < 0) {
-      ss << "The invocation lower bound must be >= 0, "
-         << "but is actually " << min << ".";
-      internal::Expect(false, __FILE__, __LINE__, ss.str());
-    } else if (max < 0) {
-      ss << "The invocation upper bound must be >= 0, "
-         << "but is actually " << max << ".";
-      internal::Expect(false, __FILE__, __LINE__, ss.str());
-    } else if (min > max) {
-      ss << "The invocation upper bound (" << max
-         << ") must be >= the invocation lower bound (" << min
-         << ").";
-      internal::Expect(false, __FILE__, __LINE__, ss.str());
-    }
-  }
-
-  // Conservative estimate on the lower/upper bound of the number of
-  // calls allowed.
-  int ConservativeLowerBound() const override { return min_; }
-  int ConservativeUpperBound() const override { return max_; }
-
-  bool IsSatisfiedByCallCount(int call_count) const override {
-    return min_ <= call_count && call_count <= max_;
-  }
-
-  bool IsSaturatedByCallCount(int call_count) const override {
-    return call_count >= max_;
-  }
-
-  void DescribeTo(::std::ostream* os) const override;
-
- private:
-  const int min_;
-  const int max_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(BetweenCardinalityImpl);
-};
-
-// Formats "n times" in a human-friendly way.
-inline std::string FormatTimes(int n) {
-  if (n == 1) {
-    return "once";
-  } else if (n == 2) {
-    return "twice";
-  } else {
-    std::stringstream ss;
-    ss << n << " times";
-    return ss.str();
-  }
-}
-
-// Describes the Between(m, n) cardinality in human-friendly text.
-void BetweenCardinalityImpl::DescribeTo(::std::ostream* os) const {
-  if (min_ == 0) {
-    if (max_ == 0) {
-      *os << "never called";
-    } else if (max_ == INT_MAX) {
-      *os << "called any number of times";
-    } else {
-      *os << "called at most " << FormatTimes(max_);
-    }
-  } else if (min_ == max_) {
-    *os << "called " << FormatTimes(min_);
-  } else if (max_ == INT_MAX) {
-    *os << "called at least " << FormatTimes(min_);
-  } else {
-    // 0 < min_ < max_ < INT_MAX
-    *os << "called between " << min_ << " and " << max_ << " times";
-  }
-}
-
-}  // Unnamed namespace
-
-// Describes the given call count to an ostream.
-void Cardinality::DescribeActualCallCountTo(int actual_call_count,
-                                            ::std::ostream* os) {
-  if (actual_call_count > 0) {
-    *os << "called " << FormatTimes(actual_call_count);
-  } else {
-    *os << "never called";
-  }
-}
-
-// Creates a cardinality that allows at least n calls.
-GTEST_API_ Cardinality AtLeast(int n) { return Between(n, INT_MAX); }
-
-// Creates a cardinality that allows at most n calls.
-GTEST_API_ Cardinality AtMost(int n) { return Between(0, n); }
-
-// Creates a cardinality that allows any number of calls.
-GTEST_API_ Cardinality AnyNumber() { return AtLeast(0); }
-
-// Creates a cardinality that allows between min and max calls.
-GTEST_API_ Cardinality Between(int min, int max) {
-  return Cardinality(new BetweenCardinalityImpl(min, max));
-}
-
-// Creates a cardinality that allows exactly n calls.
-GTEST_API_ Cardinality Exactly(int n) { return Between(n, n); }
-
-}  // namespace testing
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file defines some utilities useful for implementing Google
-// Mock.  They are subject to change without notice, so please DO NOT
-// USE THEM IN USER CODE.
-
-
-#include <ctype.h>
-#include <ostream>  // NOLINT
-#include <string>
-
-namespace testing {
-namespace internal {
-
-// Joins a vector of strings as if they are fields of a tuple; returns
-// the joined string.
-GTEST_API_ std::string JoinAsTuple(const Strings& fields) {
-  switch (fields.size()) {
-    case 0:
-      return "";
-    case 1:
-      return fields[0];
-    default:
-      std::string result = "(" + fields[0];
-      for (size_t i = 1; i < fields.size(); i++) {
-        result += ", ";
-        result += fields[i];
-      }
-      result += ")";
-      return result;
-  }
-}
-
-// Converts an identifier name to a space-separated list of lower-case
-// words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
-// treated as one word.  For example, both "FooBar123" and
-// "foo_bar_123" are converted to "foo bar 123".
-GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_name) {
-  std::string result;
-  char prev_char = '\0';
-  for (const char* p = id_name; *p != '\0'; prev_char = *(p++)) {
-    // We don't care about the current locale as the input is
-    // guaranteed to be a valid C++ identifier name.
-    const bool starts_new_word = IsUpper(*p) ||
-        (!IsAlpha(prev_char) && IsLower(*p)) ||
-        (!IsDigit(prev_char) && IsDigit(*p));
-
-    if (IsAlNum(*p)) {
-      if (starts_new_word && result != "")
-        result += ' ';
-      result += ToLower(*p);
-    }
-  }
-  return result;
-}
-
-// This class reports Google Mock failures as Google Test failures.  A
-// user can define another class in a similar fashion if they intend to
-// use Google Mock with a testing framework other than Google Test.
-class GoogleTestFailureReporter : public FailureReporterInterface {
- public:
-  void ReportFailure(FailureType type, const char* file, int line,
-                     const std::string& message) override {
-    AssertHelper(type == kFatal ?
-                 TestPartResult::kFatalFailure :
-                 TestPartResult::kNonFatalFailure,
-                 file,
-                 line,
-                 message.c_str()) = Message();
-    if (type == kFatal) {
-      posix::Abort();
-    }
-  }
-};
-
-// Returns the global failure reporter.  Will create a
-// GoogleTestFailureReporter and return it the first time called.
-GTEST_API_ FailureReporterInterface* GetFailureReporter() {
-  // Points to the global failure reporter used by Google Mock.  gcc
-  // guarantees that the following use of failure_reporter is
-  // thread-safe.  We may need to add additional synchronization to
-  // protect failure_reporter if we port Google Mock to other
-  // compilers.
-  static FailureReporterInterface* const failure_reporter =
-      new GoogleTestFailureReporter();
-  return failure_reporter;
-}
-
-// Protects global resources (stdout in particular) used by Log().
-static GTEST_DEFINE_STATIC_MUTEX_(g_log_mutex);
-
-// Returns true if and only if a log with the given severity is visible
-// according to the --gmock_verbose flag.
-GTEST_API_ bool LogIsVisible(LogSeverity severity) {
-  if (GMOCK_FLAG(verbose) == kInfoVerbosity) {
-    // Always show the log if --gmock_verbose=info.
-    return true;
-  } else if (GMOCK_FLAG(verbose) == kErrorVerbosity) {
-    // Always hide it if --gmock_verbose=error.
-    return false;
-  } else {
-    // If --gmock_verbose is neither "info" nor "error", we treat it
-    // as "warning" (its default value).
-    return severity == kWarning;
-  }
-}
-
-// Prints the given message to stdout if and only if 'severity' >= the level
-// specified by the --gmock_verbose flag.  If stack_frames_to_skip >=
-// 0, also prints the stack trace excluding the top
-// stack_frames_to_skip frames.  In opt mode, any positive
-// stack_frames_to_skip is treated as 0, since we don't know which
-// function calls will be inlined by the compiler and need to be
-// conservative.
-GTEST_API_ void Log(LogSeverity severity, const std::string& message,
-                    int stack_frames_to_skip) {
-  if (!LogIsVisible(severity))
-    return;
-
-  // Ensures that logs from different threads don't interleave.
-  MutexLock l(&g_log_mutex);
-
-  if (severity == kWarning) {
-    // Prints a GMOCK WARNING marker to make the warnings easily searchable.
-    std::cout << "\nGMOCK WARNING:";
-  }
-  // Pre-pends a new-line to message if it doesn't start with one.
-  if (message.empty() || message[0] != '\n') {
-    std::cout << "\n";
-  }
-  std::cout << message;
-  if (stack_frames_to_skip >= 0) {
-#ifdef NDEBUG
-    // In opt mode, we have to be conservative and skip no stack frame.
-    const int actual_to_skip = 0;
-#else
-    // In dbg mode, we can do what the caller tell us to do (plus one
-    // for skipping this function's stack frame).
-    const int actual_to_skip = stack_frames_to_skip + 1;
-#endif  // NDEBUG
-
-    // Appends a new-line to message if it doesn't end with one.
-    if (!message.empty() && *message.rbegin() != '\n') {
-      std::cout << "\n";
-    }
-    std::cout << "Stack trace:\n"
-         << ::testing::internal::GetCurrentOsStackTraceExceptTop(
-             ::testing::UnitTest::GetInstance(), actual_to_skip);
-  }
-  std::cout << ::std::flush;
-}
-
-GTEST_API_ WithoutMatchers GetWithoutMatchers() { return WithoutMatchers(); }
-
-GTEST_API_ void IllegalDoDefault(const char* file, int line) {
-  internal::Assert(
-      false, file, line,
-      "You are using DoDefault() inside a composite action like "
-      "DoAll() or WithArgs().  This is not supported for technical "
-      "reasons.  Please instead spell out the default action, or "
-      "assign the default action to an Action variable and use "
-      "the variable in various places.");
-}
-
-}  // namespace internal
-}  // namespace testing
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements Matcher<const string&>, Matcher<string>, and
-// utilities for defining matchers.
-
-
-#include <string.h>
-#include <iostream>
-#include <sstream>
-#include <string>
-
-namespace testing {
-namespace internal {
-
-// Returns the description for a matcher defined using the MATCHER*()
-// macro where the user-supplied description string is "", if
-// 'negation' is false; otherwise returns the description of the
-// negation of the matcher.  'param_values' contains a list of strings
-// that are the print-out of the matcher's parameters.
-GTEST_API_ std::string FormatMatcherDescription(bool negation,
-                                                const char* matcher_name,
-                                                const Strings& param_values) {
-  std::string result = ConvertIdentifierNameToWords(matcher_name);
-  if (param_values.size() >= 1) result += " " + JoinAsTuple(param_values);
-  return negation ? "not (" + result + ")" : result;
-}
-
-// FindMaxBipartiteMatching and its helper class.
-//
-// Uses the well-known Ford-Fulkerson max flow method to find a maximum
-// bipartite matching. Flow is considered to be from left to right.
-// There is an implicit source node that is connected to all of the left
-// nodes, and an implicit sink node that is connected to all of the
-// right nodes. All edges have unit capacity.
-//
-// Neither the flow graph nor the residual flow graph are represented
-// explicitly. Instead, they are implied by the information in 'graph' and
-// a vector<int> called 'left_' whose elements are initialized to the
-// value kUnused. This represents the initial state of the algorithm,
-// where the flow graph is empty, and the residual flow graph has the
-// following edges:
-//   - An edge from source to each left_ node
-//   - An edge from each right_ node to sink
-//   - An edge from each left_ node to each right_ node, if the
-//     corresponding edge exists in 'graph'.
-//
-// When the TryAugment() method adds a flow, it sets left_[l] = r for some
-// nodes l and r. This induces the following changes:
-//   - The edges (source, l), (l, r), and (r, sink) are added to the
-//     flow graph.
-//   - The same three edges are removed from the residual flow graph.
-//   - The reverse edges (l, source), (r, l), and (sink, r) are added
-//     to the residual flow graph, which is a directional graph
-//     representing unused flow capacity.
-//
-// When the method augments a flow (moving left_[l] from some r1 to some
-// other r2), this can be thought of as "undoing" the above steps with
-// respect to r1 and "redoing" them with respect to r2.
-//
-// It bears repeating that the flow graph and residual flow graph are
-// never represented explicitly, but can be derived by looking at the
-// information in 'graph' and in left_.
-//
-// As an optimization, there is a second vector<int> called right_ which
-// does not provide any new information. Instead, it enables more
-// efficient queries about edges entering or leaving the right-side nodes
-// of the flow or residual flow graphs. The following invariants are
-// maintained:
-//
-// left[l] == kUnused or right[left[l]] == l
-// right[r] == kUnused or left[right[r]] == r
-//
-// . [ source ]                                        .
-// .   |||                                             .
-// .   |||                                             .
-// .   ||\--> left[0]=1  ---\    right[0]=-1 ----\     .
-// .   ||                   |                    |     .
-// .   |\---> left[1]=-1    \--> right[1]=0  ---\|     .
-// .   |                                        ||     .
-// .   \----> left[2]=2  ------> right[2]=2  --\||     .
-// .                                           |||     .
-// .         elements           matchers       vvv     .
-// .                                         [ sink ]  .
-//
-// See Also:
-//   [1] Cormen, et al (2001). "Section 26.2: The Ford-Fulkerson method".
-//       "Introduction to Algorithms (Second ed.)", pp. 651-664.
-//   [2] "Ford-Fulkerson algorithm", Wikipedia,
-//       'http://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm'
-class MaxBipartiteMatchState {
- public:
-  explicit MaxBipartiteMatchState(const MatchMatrix& graph)
-      : graph_(&graph),
-        left_(graph_->LhsSize(), kUnused),
-        right_(graph_->RhsSize(), kUnused) {}
-
-  // Returns the edges of a maximal match, each in the form {left, right}.
-  ElementMatcherPairs Compute() {
-    // 'seen' is used for path finding { 0: unseen, 1: seen }.
-    ::std::vector<char> seen;
-    // Searches the residual flow graph for a path from each left node to
-    // the sink in the residual flow graph, and if one is found, add flow
-    // to the graph. It's okay to search through the left nodes once. The
-    // edge from the implicit source node to each previously-visited left
-    // node will have flow if that left node has any path to the sink
-    // whatsoever. Subsequent augmentations can only add flow to the
-    // network, and cannot take away that previous flow unit from the source.
-    // Since the source-to-left edge can only carry one flow unit (or,
-    // each element can be matched to only one matcher), there is no need
-    // to visit the left nodes more than once looking for augmented paths.
-    // The flow is known to be possible or impossible by looking at the
-    // node once.
-    for (size_t ilhs = 0; ilhs < graph_->LhsSize(); ++ilhs) {
-      // Reset the path-marking vector and try to find a path from
-      // source to sink starting at the left_[ilhs] node.
-      GTEST_CHECK_(left_[ilhs] == kUnused)
-          << "ilhs: " << ilhs << ", left_[ilhs]: " << left_[ilhs];
-      // 'seen' initialized to 'graph_->RhsSize()' copies of 0.
-      seen.assign(graph_->RhsSize(), 0);
-      TryAugment(ilhs, &seen);
-    }
-    ElementMatcherPairs result;
-    for (size_t ilhs = 0; ilhs < left_.size(); ++ilhs) {
-      size_t irhs = left_[ilhs];
-      if (irhs == kUnused) continue;
-      result.push_back(ElementMatcherPair(ilhs, irhs));
-    }
-    return result;
-  }
-
- private:
-  static const size_t kUnused = static_cast<size_t>(-1);
-
-  // Perform a depth-first search from left node ilhs to the sink.  If a
-  // path is found, flow is added to the network by linking the left and
-  // right vector elements corresponding each segment of the path.
-  // Returns true if a path to sink was found, which means that a unit of
-  // flow was added to the network. The 'seen' vector elements correspond
-  // to right nodes and are marked to eliminate cycles from the search.
-  //
-  // Left nodes will only be explored at most once because they
-  // are accessible from at most one right node in the residual flow
-  // graph.
-  //
-  // Note that left_[ilhs] is the only element of left_ that TryAugment will
-  // potentially transition from kUnused to another value. Any other
-  // left_ element holding kUnused before TryAugment will be holding it
-  // when TryAugment returns.
-  //
-  bool TryAugment(size_t ilhs, ::std::vector<char>* seen) {
-    for (size_t irhs = 0; irhs < graph_->RhsSize(); ++irhs) {
-      if ((*seen)[irhs]) continue;
-      if (!graph_->HasEdge(ilhs, irhs)) continue;
-      // There's an available edge from ilhs to irhs.
-      (*seen)[irhs] = 1;
-      // Next a search is performed to determine whether
-      // this edge is a dead end or leads to the sink.
-      //
-      // right_[irhs] == kUnused means that there is residual flow from
-      // right node irhs to the sink, so we can use that to finish this
-      // flow path and return success.
-      //
-      // Otherwise there is residual flow to some ilhs. We push flow
-      // along that path and call ourselves recursively to see if this
-      // ultimately leads to sink.
-      if (right_[irhs] == kUnused || TryAugment(right_[irhs], seen)) {
-        // Add flow from left_[ilhs] to right_[irhs].
-        left_[ilhs] = irhs;
-        right_[irhs] = ilhs;
-        return true;
-      }
-    }
-    return false;
-  }
-
-  const MatchMatrix* graph_;  // not owned
-  // Each element of the left_ vector represents a left hand side node
-  // (i.e. an element) and each element of right_ is a right hand side
-  // node (i.e. a matcher). The values in the left_ vector indicate
-  // outflow from that node to a node on the right_ side. The values
-  // in the right_ indicate inflow, and specify which left_ node is
-  // feeding that right_ node, if any. For example, left_[3] == 1 means
-  // there's a flow from element #3 to matcher #1. Such a flow would also
-  // be redundantly represented in the right_ vector as right_[1] == 3.
-  // Elements of left_ and right_ are either kUnused or mutually
-  // referent. Mutually referent means that left_[right_[i]] = i and
-  // right_[left_[i]] = i.
-  ::std::vector<size_t> left_;
-  ::std::vector<size_t> right_;
-};
-
-const size_t MaxBipartiteMatchState::kUnused;
-
-GTEST_API_ ElementMatcherPairs FindMaxBipartiteMatching(const MatchMatrix& g) {
-  return MaxBipartiteMatchState(g).Compute();
-}
-
-static void LogElementMatcherPairVec(const ElementMatcherPairs& pairs,
-                                     ::std::ostream* stream) {
-  typedef ElementMatcherPairs::const_iterator Iter;
-  ::std::ostream& os = *stream;
-  os << "{";
-  const char* sep = "";
-  for (Iter it = pairs.begin(); it != pairs.end(); ++it) {
-    os << sep << "\n  ("
-       << "element #" << it->first << ", "
-       << "matcher #" << it->second << ")";
-    sep = ",";
-  }
-  os << "\n}";
-}
-
-bool MatchMatrix::NextGraph() {
-  for (size_t ilhs = 0; ilhs < LhsSize(); ++ilhs) {
-    for (size_t irhs = 0; irhs < RhsSize(); ++irhs) {
-      char& b = matched_[SpaceIndex(ilhs, irhs)];
-      if (!b) {
-        b = 1;
-        return true;
-      }
-      b = 0;
-    }
-  }
-  return false;
-}
-
-void MatchMatrix::Randomize() {
-  for (size_t ilhs = 0; ilhs < LhsSize(); ++ilhs) {
-    for (size_t irhs = 0; irhs < RhsSize(); ++irhs) {
-      char& b = matched_[SpaceIndex(ilhs, irhs)];
-      b = static_cast<char>(rand() & 1);  // NOLINT
-    }
-  }
-}
-
-std::string MatchMatrix::DebugString() const {
-  ::std::stringstream ss;
-  const char* sep = "";
-  for (size_t i = 0; i < LhsSize(); ++i) {
-    ss << sep;
-    for (size_t j = 0; j < RhsSize(); ++j) {
-      ss << HasEdge(i, j);
-    }
-    sep = ";";
-  }
-  return ss.str();
-}
-
-void UnorderedElementsAreMatcherImplBase::DescribeToImpl(
-    ::std::ostream* os) const {
-  switch (match_flags()) {
-    case UnorderedMatcherRequire::ExactMatch:
-      if (matcher_describers_.empty()) {
-        *os << "is empty";
-        return;
-      }
-      if (matcher_describers_.size() == 1) {
-        *os << "has " << Elements(1) << " and that element ";
-        matcher_describers_[0]->DescribeTo(os);
-        return;
-      }
-      *os << "has " << Elements(matcher_describers_.size())
-          << " and there exists some permutation of elements such that:\n";
-      break;
-    case UnorderedMatcherRequire::Superset:
-      *os << "a surjection from elements to requirements exists such that:\n";
-      break;
-    case UnorderedMatcherRequire::Subset:
-      *os << "an injection from elements to requirements exists such that:\n";
-      break;
-  }
-
-  const char* sep = "";
-  for (size_t i = 0; i != matcher_describers_.size(); ++i) {
-    *os << sep;
-    if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
-      *os << " - element #" << i << " ";
-    } else {
-      *os << " - an element ";
-    }
-    matcher_describers_[i]->DescribeTo(os);
-    if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
-      sep = ", and\n";
-    } else {
-      sep = "\n";
-    }
-  }
-}
-
-void UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(
-    ::std::ostream* os) const {
-  switch (match_flags()) {
-    case UnorderedMatcherRequire::ExactMatch:
-      if (matcher_describers_.empty()) {
-        *os << "isn't empty";
-        return;
-      }
-      if (matcher_describers_.size() == 1) {
-        *os << "doesn't have " << Elements(1) << ", or has " << Elements(1)
-            << " that ";
-        matcher_describers_[0]->DescribeNegationTo(os);
-        return;
-      }
-      *os << "doesn't have " << Elements(matcher_describers_.size())
-          << ", or there exists no permutation of elements such that:\n";
-      break;
-    case UnorderedMatcherRequire::Superset:
-      *os << "no surjection from elements to requirements exists such that:\n";
-      break;
-    case UnorderedMatcherRequire::Subset:
-      *os << "no injection from elements to requirements exists such that:\n";
-      break;
-  }
-  const char* sep = "";
-  for (size_t i = 0; i != matcher_describers_.size(); ++i) {
-    *os << sep;
-    if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
-      *os << " - element #" << i << " ";
-    } else {
-      *os << " - an element ";
-    }
-    matcher_describers_[i]->DescribeTo(os);
-    if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
-      sep = ", and\n";
-    } else {
-      sep = "\n";
-    }
-  }
-}
-
-// Checks that all matchers match at least one element, and that all
-// elements match at least one matcher. This enables faster matching
-// and better error reporting.
-// Returns false, writing an explanation to 'listener', if and only
-// if the success criteria are not met.
-bool UnorderedElementsAreMatcherImplBase::VerifyMatchMatrix(
-    const ::std::vector<std::string>& element_printouts,
-    const MatchMatrix& matrix, MatchResultListener* listener) const {
-  bool result = true;
-  ::std::vector<char> element_matched(matrix.LhsSize(), 0);
-  ::std::vector<char> matcher_matched(matrix.RhsSize(), 0);
-
-  for (size_t ilhs = 0; ilhs < matrix.LhsSize(); ilhs++) {
-    for (size_t irhs = 0; irhs < matrix.RhsSize(); irhs++) {
-      char matched = matrix.HasEdge(ilhs, irhs);
-      element_matched[ilhs] |= matched;
-      matcher_matched[irhs] |= matched;
-    }
-  }
-
-  if (match_flags() & UnorderedMatcherRequire::Superset) {
-    const char* sep =
-        "where the following matchers don't match any elements:\n";
-    for (size_t mi = 0; mi < matcher_matched.size(); ++mi) {
-      if (matcher_matched[mi]) continue;
-      result = false;
-      if (listener->IsInterested()) {
-        *listener << sep << "matcher #" << mi << ": ";
-        matcher_describers_[mi]->DescribeTo(listener->stream());
-        sep = ",\n";
-      }
-    }
-  }
-
-  if (match_flags() & UnorderedMatcherRequire::Subset) {
-    const char* sep =
-        "where the following elements don't match any matchers:\n";
-    const char* outer_sep = "";
-    if (!result) {
-      outer_sep = "\nand ";
-    }
-    for (size_t ei = 0; ei < element_matched.size(); ++ei) {
-      if (element_matched[ei]) continue;
-      result = false;
-      if (listener->IsInterested()) {
-        *listener << outer_sep << sep << "element #" << ei << ": "
-                  << element_printouts[ei];
-        sep = ",\n";
-        outer_sep = "";
-      }
-    }
-  }
-  return result;
-}
-
-bool UnorderedElementsAreMatcherImplBase::FindPairing(
-    const MatchMatrix& matrix, MatchResultListener* listener) const {
-  ElementMatcherPairs matches = FindMaxBipartiteMatching(matrix);
-
-  size_t max_flow = matches.size();
-  if ((match_flags() & UnorderedMatcherRequire::Superset) &&
-      max_flow < matrix.RhsSize()) {
-    if (listener->IsInterested()) {
-      *listener << "where no permutation of the elements can satisfy all "
-                   "matchers, and the closest match is "
-                << max_flow << " of " << matrix.RhsSize()
-                << " matchers with the pairings:\n";
-      LogElementMatcherPairVec(matches, listener->stream());
-    }
-    return false;
-  }
-  if ((match_flags() & UnorderedMatcherRequire::Subset) &&
-      max_flow < matrix.LhsSize()) {
-    if (listener->IsInterested()) {
-      *listener
-          << "where not all elements can be matched, and the closest match is "
-          << max_flow << " of " << matrix.RhsSize()
-          << " matchers with the pairings:\n";
-      LogElementMatcherPairVec(matches, listener->stream());
-    }
-    return false;
-  }
-
-  if (matches.size() > 1) {
-    if (listener->IsInterested()) {
-      const char* sep = "where:\n";
-      for (size_t mi = 0; mi < matches.size(); ++mi) {
-        *listener << sep << " - element #" << matches[mi].first
-                  << " is matched by matcher #" << matches[mi].second;
-        sep = ",\n";
-      }
-    }
-  }
-  return true;
-}
-
-}  // namespace internal
-}  // namespace testing
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements the spec builder syntax (ON_CALL and
-// EXPECT_CALL).
-
-
-#include <stdlib.h>
-
-#include <iostream>  // NOLINT
-#include <map>
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-
-#if GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC
-# include <unistd.h>  // NOLINT
-#endif
-
-// Silence C4800 (C4800: 'int *const ': forcing value
-// to bool 'true' or 'false') for MSVC 15
-#ifdef _MSC_VER
-#if _MSC_VER == 1900
-#  pragma warning(push)
-#  pragma warning(disable:4800)
-#endif
-#endif
-
-namespace testing {
-namespace internal {
-
-// Protects the mock object registry (in class Mock), all function
-// mockers, and all expectations.
-GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_gmock_mutex);
-
-// Logs a message including file and line number information.
-GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
-                                const char* file, int line,
-                                const std::string& message) {
-  ::std::ostringstream s;
-  s << internal::FormatFileLocation(file, line) << " " << message
-    << ::std::endl;
-  Log(severity, s.str(), 0);
-}
-
-// Constructs an ExpectationBase object.
-ExpectationBase::ExpectationBase(const char* a_file, int a_line,
-                                 const std::string& a_source_text)
-    : file_(a_file),
-      line_(a_line),
-      source_text_(a_source_text),
-      cardinality_specified_(false),
-      cardinality_(Exactly(1)),
-      call_count_(0),
-      retired_(false),
-      extra_matcher_specified_(false),
-      repeated_action_specified_(false),
-      retires_on_saturation_(false),
-      last_clause_(kNone),
-      action_count_checked_(false) {}
-
-// Destructs an ExpectationBase object.
-ExpectationBase::~ExpectationBase() {}
-
-// Explicitly specifies the cardinality of this expectation.  Used by
-// the subclasses to implement the .Times() clause.
-void ExpectationBase::SpecifyCardinality(const Cardinality& a_cardinality) {
-  cardinality_specified_ = true;
-  cardinality_ = a_cardinality;
-}
-
-// Retires all pre-requisites of this expectation.
-void ExpectationBase::RetireAllPreRequisites()
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-  if (is_retired()) {
-    // We can take this short-cut as we never retire an expectation
-    // until we have retired all its pre-requisites.
-    return;
-  }
-
-  ::std::vector<ExpectationBase*> expectations(1, this);
-  while (!expectations.empty()) {
-    ExpectationBase* exp = expectations.back();
-    expectations.pop_back();
-
-    for (ExpectationSet::const_iterator it =
-             exp->immediate_prerequisites_.begin();
-         it != exp->immediate_prerequisites_.end(); ++it) {
-      ExpectationBase* next = it->expectation_base().get();
-      if (!next->is_retired()) {
-        next->Retire();
-        expectations.push_back(next);
-      }
-    }
-  }
-}
-
-// Returns true if and only if all pre-requisites of this expectation
-// have been satisfied.
-bool ExpectationBase::AllPrerequisitesAreSatisfied() const
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-  g_gmock_mutex.AssertHeld();
-  ::std::vector<const ExpectationBase*> expectations(1, this);
-  while (!expectations.empty()) {
-    const ExpectationBase* exp = expectations.back();
-    expectations.pop_back();
-
-    for (ExpectationSet::const_iterator it =
-             exp->immediate_prerequisites_.begin();
-         it != exp->immediate_prerequisites_.end(); ++it) {
-      const ExpectationBase* next = it->expectation_base().get();
-      if (!next->IsSatisfied()) return false;
-      expectations.push_back(next);
-    }
-  }
-  return true;
-}
-
-// Adds unsatisfied pre-requisites of this expectation to 'result'.
-void ExpectationBase::FindUnsatisfiedPrerequisites(ExpectationSet* result) const
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-  g_gmock_mutex.AssertHeld();
-  ::std::vector<const ExpectationBase*> expectations(1, this);
-  while (!expectations.empty()) {
-    const ExpectationBase* exp = expectations.back();
-    expectations.pop_back();
-
-    for (ExpectationSet::const_iterator it =
-             exp->immediate_prerequisites_.begin();
-         it != exp->immediate_prerequisites_.end(); ++it) {
-      const ExpectationBase* next = it->expectation_base().get();
-
-      if (next->IsSatisfied()) {
-        // If *it is satisfied and has a call count of 0, some of its
-        // pre-requisites may not be satisfied yet.
-        if (next->call_count_ == 0) {
-          expectations.push_back(next);
-        }
-      } else {
-        // Now that we know next is unsatisfied, we are not so interested
-        // in whether its pre-requisites are satisfied.  Therefore we
-        // don't iterate into it here.
-        *result += *it;
-      }
-    }
-  }
-}
-
-// Describes how many times a function call matching this
-// expectation has occurred.
-void ExpectationBase::DescribeCallCountTo(::std::ostream* os) const
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-  g_gmock_mutex.AssertHeld();
-
-  // Describes how many times the function is expected to be called.
-  *os << "         Expected: to be ";
-  cardinality().DescribeTo(os);
-  *os << "\n           Actual: ";
-  Cardinality::DescribeActualCallCountTo(call_count(), os);
-
-  // Describes the state of the expectation (e.g. is it satisfied?
-  // is it active?).
-  *os << " - " << (IsOverSaturated() ? "over-saturated" :
-                   IsSaturated() ? "saturated" :
-                   IsSatisfied() ? "satisfied" : "unsatisfied")
-      << " and "
-      << (is_retired() ? "retired" : "active");
-}
-
-// Checks the action count (i.e. the number of WillOnce() and
-// WillRepeatedly() clauses) against the cardinality if this hasn't
-// been done before.  Prints a warning if there are too many or too
-// few actions.
-void ExpectationBase::CheckActionCountIfNotDone() const
-    GTEST_LOCK_EXCLUDED_(mutex_) {
-  bool should_check = false;
-  {
-    MutexLock l(&mutex_);
-    if (!action_count_checked_) {
-      action_count_checked_ = true;
-      should_check = true;
-    }
-  }
-
-  if (should_check) {
-    if (!cardinality_specified_) {
-      // The cardinality was inferred - no need to check the action
-      // count against it.
-      return;
-    }
-
-    // The cardinality was explicitly specified.
-    const int action_count = static_cast<int>(untyped_actions_.size());
-    const int upper_bound = cardinality().ConservativeUpperBound();
-    const int lower_bound = cardinality().ConservativeLowerBound();
-    bool too_many;  // True if there are too many actions, or false
-    // if there are too few.
-    if (action_count > upper_bound ||
-        (action_count == upper_bound && repeated_action_specified_)) {
-      too_many = true;
-    } else if (0 < action_count && action_count < lower_bound &&
-               !repeated_action_specified_) {
-      too_many = false;
-    } else {
-      return;
-    }
-
-    ::std::stringstream ss;
-    DescribeLocationTo(&ss);
-    ss << "Too " << (too_many ? "many" : "few")
-       << " actions specified in " << source_text() << "...\n"
-       << "Expected to be ";
-    cardinality().DescribeTo(&ss);
-    ss << ", but has " << (too_many ? "" : "only ")
-       << action_count << " WillOnce()"
-       << (action_count == 1 ? "" : "s");
-    if (repeated_action_specified_) {
-      ss << " and a WillRepeatedly()";
-    }
-    ss << ".";
-    Log(kWarning, ss.str(), -1);  // -1 means "don't print stack trace".
-  }
-}
-
-// Implements the .Times() clause.
-void ExpectationBase::UntypedTimes(const Cardinality& a_cardinality) {
-  if (last_clause_ == kTimes) {
-    ExpectSpecProperty(false,
-                       ".Times() cannot appear "
-                       "more than once in an EXPECT_CALL().");
-  } else {
-    ExpectSpecProperty(last_clause_ < kTimes,
-                       ".Times() cannot appear after "
-                       ".InSequence(), .WillOnce(), .WillRepeatedly(), "
-                       "or .RetiresOnSaturation().");
-  }
-  last_clause_ = kTimes;
-
-  SpecifyCardinality(a_cardinality);
-}
-
-// Points to the implicit sequence introduced by a living InSequence
-// object (if any) in the current thread or NULL.
-GTEST_API_ ThreadLocal<Sequence*> g_gmock_implicit_sequence;
-
-// Reports an uninteresting call (whose description is in msg) in the
-// manner specified by 'reaction'.
-void ReportUninterestingCall(CallReaction reaction, const std::string& msg) {
-  // Include a stack trace only if --gmock_verbose=info is specified.
-  const int stack_frames_to_skip =
-      GMOCK_FLAG(verbose) == kInfoVerbosity ? 3 : -1;
-  switch (reaction) {
-    case kAllow:
-      Log(kInfo, msg, stack_frames_to_skip);
-      break;
-    case kWarn:
-      Log(kWarning,
-          msg +
-              "\nNOTE: You can safely ignore the above warning unless this "
-              "call should not happen.  Do not suppress it by blindly adding "
-              "an EXPECT_CALL() if you don't mean to enforce the call.  "
-              "See "
-              "https://github.com/google/googletest/blob/master/docs/"
-              "gmock_cook_book.md#"
-              "knowing-when-to-expect for details.\n",
-          stack_frames_to_skip);
-      break;
-    default:  // FAIL
-      Expect(false, nullptr, -1, msg);
-  }
-}
-
-UntypedFunctionMockerBase::UntypedFunctionMockerBase()
-    : mock_obj_(nullptr), name_("") {}
-
-UntypedFunctionMockerBase::~UntypedFunctionMockerBase() {}
-
-// Sets the mock object this mock method belongs to, and registers
-// this information in the global mock registry.  Will be called
-// whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
-// method.
-void UntypedFunctionMockerBase::RegisterOwner(const void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-  {
-    MutexLock l(&g_gmock_mutex);
-    mock_obj_ = mock_obj;
-  }
-  Mock::Register(mock_obj, this);
-}
-
-// Sets the mock object this mock method belongs to, and sets the name
-// of the mock function.  Will be called upon each invocation of this
-// mock function.
-void UntypedFunctionMockerBase::SetOwnerAndName(const void* mock_obj,
-                                                const char* name)
-    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-  // We protect name_ under g_gmock_mutex in case this mock function
-  // is called from two threads concurrently.
-  MutexLock l(&g_gmock_mutex);
-  mock_obj_ = mock_obj;
-  name_ = name;
-}
-
-// Returns the name of the function being mocked.  Must be called
-// after RegisterOwner() or SetOwnerAndName() has been called.
-const void* UntypedFunctionMockerBase::MockObject() const
-    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-  const void* mock_obj;
-  {
-    // We protect mock_obj_ under g_gmock_mutex in case this mock
-    // function is called from two threads concurrently.
-    MutexLock l(&g_gmock_mutex);
-    Assert(mock_obj_ != nullptr, __FILE__, __LINE__,
-           "MockObject() must not be called before RegisterOwner() or "
-           "SetOwnerAndName() has been called.");
-    mock_obj = mock_obj_;
-  }
-  return mock_obj;
-}
-
-// Returns the name of this mock method.  Must be called after
-// SetOwnerAndName() has been called.
-const char* UntypedFunctionMockerBase::Name() const
-    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-  const char* name;
-  {
-    // We protect name_ under g_gmock_mutex in case this mock
-    // function is called from two threads concurrently.
-    MutexLock l(&g_gmock_mutex);
-    Assert(name_ != nullptr, __FILE__, __LINE__,
-           "Name() must not be called before SetOwnerAndName() has "
-           "been called.");
-    name = name_;
-  }
-  return name;
-}
-
-// Calculates the result of invoking this mock function with the given
-// arguments, prints it, and returns it.  The caller is responsible
-// for deleting the result.
-UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
-    void* const untyped_args) GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
-  // See the definition of untyped_expectations_ for why access to it
-  // is unprotected here.
-  if (untyped_expectations_.size() == 0) {
-    // No expectation is set on this mock method - we have an
-    // uninteresting call.
-
-    // We must get Google Mock's reaction on uninteresting calls
-    // made on this mock object BEFORE performing the action,
-    // because the action may DELETE the mock object and make the
-    // following expression meaningless.
-    const CallReaction reaction =
-        Mock::GetReactionOnUninterestingCalls(MockObject());
-
-    // True if and only if we need to print this call's arguments and return
-    // value.  This definition must be kept in sync with
-    // the behavior of ReportUninterestingCall().
-    const bool need_to_report_uninteresting_call =
-        // If the user allows this uninteresting call, we print it
-        // only when they want informational messages.
-        reaction == kAllow ? LogIsVisible(kInfo) :
-                           // If the user wants this to be a warning, we print
-                           // it only when they want to see warnings.
-            reaction == kWarn
-                ? LogIsVisible(kWarning)
-                :
-                // Otherwise, the user wants this to be an error, and we
-                // should always print detailed information in the error.
-                true;
-
-    if (!need_to_report_uninteresting_call) {
-      // Perform the action without printing the call information.
-      return this->UntypedPerformDefaultAction(
-          untyped_args, "Function call: " + std::string(Name()));
-    }
-
-    // Warns about the uninteresting call.
-    ::std::stringstream ss;
-    this->UntypedDescribeUninterestingCall(untyped_args, &ss);
-
-    // Calculates the function result.
-    UntypedActionResultHolderBase* const result =
-        this->UntypedPerformDefaultAction(untyped_args, ss.str());
-
-    // Prints the function result.
-    if (result != nullptr) result->PrintAsActionResult(&ss);
-
-    ReportUninterestingCall(reaction, ss.str());
-    return result;
-  }
-
-  bool is_excessive = false;
-  ::std::stringstream ss;
-  ::std::stringstream why;
-  ::std::stringstream loc;
-  const void* untyped_action = nullptr;
-
-  // The UntypedFindMatchingExpectation() function acquires and
-  // releases g_gmock_mutex.
-
-  const ExpectationBase* const untyped_expectation =
-      this->UntypedFindMatchingExpectation(untyped_args, &untyped_action,
-                                           &is_excessive, &ss, &why);
-  const bool found = untyped_expectation != nullptr;
-
-  // True if and only if we need to print the call's arguments
-  // and return value.
-  // This definition must be kept in sync with the uses of Expect()
-  // and Log() in this function.
-  const bool need_to_report_call =
-      !found || is_excessive || LogIsVisible(kInfo);
-  if (!need_to_report_call) {
-    // Perform the action without printing the call information.
-    return untyped_action == nullptr
-               ? this->UntypedPerformDefaultAction(untyped_args, "")
-               : this->UntypedPerformAction(untyped_action, untyped_args);
-  }
-
-  ss << "    Function call: " << Name();
-  this->UntypedPrintArgs(untyped_args, &ss);
-
-  // In case the action deletes a piece of the expectation, we
-  // generate the message beforehand.
-  if (found && !is_excessive) {
-    untyped_expectation->DescribeLocationTo(&loc);
-  }
-
-  UntypedActionResultHolderBase* result = nullptr;
-
-  auto perform_action = [&] {
-    return untyped_action == nullptr
-               ? this->UntypedPerformDefaultAction(untyped_args, ss.str())
-               : this->UntypedPerformAction(untyped_action, untyped_args);
-  };
-  auto handle_failures = [&] {
-    ss << "\n" << why.str();
-
-    if (!found) {
-      // No expectation matches this call - reports a failure.
-      Expect(false, nullptr, -1, ss.str());
-    } else if (is_excessive) {
-      // We had an upper-bound violation and the failure message is in ss.
-      Expect(false, untyped_expectation->file(), untyped_expectation->line(),
-             ss.str());
-    } else {
-      // We had an expected call and the matching expectation is
-      // described in ss.
-      Log(kInfo, loc.str() + ss.str(), 2);
-    }
-  };
-#if GTEST_HAS_EXCEPTIONS
-  try {
-    result = perform_action();
-  } catch (...) {
-    handle_failures();
-    throw;
-  }
-#else
-  result = perform_action();
-#endif
-
-  if (result != nullptr) result->PrintAsActionResult(&ss);
-  handle_failures();
-  return result;
-}
-
-// Returns an Expectation object that references and co-owns exp,
-// which must be an expectation on this mock function.
-Expectation UntypedFunctionMockerBase::GetHandleOf(ExpectationBase* exp) {
-  // See the definition of untyped_expectations_ for why access to it
-  // is unprotected here.
-  for (UntypedExpectations::const_iterator it =
-           untyped_expectations_.begin();
-       it != untyped_expectations_.end(); ++it) {
-    if (it->get() == exp) {
-      return Expectation(*it);
-    }
-  }
-
-  Assert(false, __FILE__, __LINE__, "Cannot find expectation.");
-  return Expectation();
-  // The above statement is just to make the code compile, and will
-  // never be executed.
-}
-
-// Verifies that all expectations on this mock function have been
-// satisfied.  Reports one or more Google Test non-fatal failures
-// and returns false if not.
-bool UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked()
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
-  g_gmock_mutex.AssertHeld();
-  bool expectations_met = true;
-  for (UntypedExpectations::const_iterator it =
-           untyped_expectations_.begin();
-       it != untyped_expectations_.end(); ++it) {
-    ExpectationBase* const untyped_expectation = it->get();
-    if (untyped_expectation->IsOverSaturated()) {
-      // There was an upper-bound violation.  Since the error was
-      // already reported when it occurred, there is no need to do
-      // anything here.
-      expectations_met = false;
-    } else if (!untyped_expectation->IsSatisfied()) {
-      expectations_met = false;
-      ::std::stringstream ss;
-      ss  << "Actual function call count doesn't match "
-          << untyped_expectation->source_text() << "...\n";
-      // No need to show the source file location of the expectation
-      // in the description, as the Expect() call that follows already
-      // takes care of it.
-      untyped_expectation->MaybeDescribeExtraMatcherTo(&ss);
-      untyped_expectation->DescribeCallCountTo(&ss);
-      Expect(false, untyped_expectation->file(),
-             untyped_expectation->line(), ss.str());
-    }
-  }
-
-  // Deleting our expectations may trigger other mock objects to be deleted, for
-  // example if an action contains a reference counted smart pointer to that
-  // mock object, and that is the last reference. So if we delete our
-  // expectations within the context of the global mutex we may deadlock when
-  // this method is called again. Instead, make a copy of the set of
-  // expectations to delete, clear our set within the mutex, and then clear the
-  // copied set outside of it.
-  UntypedExpectations expectations_to_delete;
-  untyped_expectations_.swap(expectations_to_delete);
-
-  g_gmock_mutex.Unlock();
-  expectations_to_delete.clear();
-  g_gmock_mutex.Lock();
-
-  return expectations_met;
-}
-
-CallReaction intToCallReaction(int mock_behavior) {
-  if (mock_behavior >= kAllow && mock_behavior <= kFail) {
-    return static_cast<internal::CallReaction>(mock_behavior);
-  }
-  return kWarn;
-}
-
-}  // namespace internal
-
-// Class Mock.
-
-namespace {
-
-typedef std::set<internal::UntypedFunctionMockerBase*> FunctionMockers;
-
-// The current state of a mock object.  Such information is needed for
-// detecting leaked mock objects and explicitly verifying a mock's
-// expectations.
-struct MockObjectState {
-  MockObjectState()
-      : first_used_file(nullptr), first_used_line(-1), leakable(false) {}
-
-  // Where in the source file an ON_CALL or EXPECT_CALL is first
-  // invoked on this mock object.
-  const char* first_used_file;
-  int first_used_line;
-  ::std::string first_used_test_suite;
-  ::std::string first_used_test;
-  bool leakable;  // true if and only if it's OK to leak the object.
-  FunctionMockers function_mockers;  // All registered methods of the object.
-};
-
-// A global registry holding the state of all mock objects that are
-// alive.  A mock object is added to this registry the first time
-// Mock::AllowLeak(), ON_CALL(), or EXPECT_CALL() is called on it.  It
-// is removed from the registry in the mock object's destructor.
-class MockObjectRegistry {
- public:
-  // Maps a mock object (identified by its address) to its state.
-  typedef std::map<const void*, MockObjectState> StateMap;
-
-  // This destructor will be called when a program exits, after all
-  // tests in it have been run.  By then, there should be no mock
-  // object alive.  Therefore we report any living object as test
-  // failure, unless the user explicitly asked us to ignore it.
-  ~MockObjectRegistry() {
-    if (!GMOCK_FLAG(catch_leaked_mocks))
-      return;
-
-    int leaked_count = 0;
-    for (StateMap::const_iterator it = states_.begin(); it != states_.end();
-         ++it) {
-      if (it->second.leakable)  // The user said it's fine to leak this object.
-        continue;
-
-      // FIXME: Print the type of the leaked object.
-      // This can help the user identify the leaked object.
-      std::cout << "\n";
-      const MockObjectState& state = it->second;
-      std::cout << internal::FormatFileLocation(state.first_used_file,
-                                                state.first_used_line);
-      std::cout << " ERROR: this mock object";
-      if (state.first_used_test != "") {
-        std::cout << " (used in test " << state.first_used_test_suite << "."
-                  << state.first_used_test << ")";
-      }
-      std::cout << " should be deleted but never is. Its address is @"
-           << it->first << ".";
-      leaked_count++;
-    }
-    if (leaked_count > 0) {
-      std::cout << "\nERROR: " << leaked_count << " leaked mock "
-                << (leaked_count == 1 ? "object" : "objects")
-                << " found at program exit. Expectations on a mock object are "
-                   "verified when the object is destructed. Leaking a mock "
-                   "means that its expectations aren't verified, which is "
-                   "usually a test bug. If you really intend to leak a mock, "
-                   "you can suppress this error using "
-                   "testing::Mock::AllowLeak(mock_object), or you may use a "
-                   "fake or stub instead of a mock.\n";
-      std::cout.flush();
-      ::std::cerr.flush();
-      // RUN_ALL_TESTS() has already returned when this destructor is
-      // called.  Therefore we cannot use the normal Google Test
-      // failure reporting mechanism.
-      _exit(1);  // We cannot call exit() as it is not reentrant and
-                 // may already have been called.
-    }
-  }
-
-  StateMap& states() { return states_; }
-
- private:
-  StateMap states_;
-};
-
-// Protected by g_gmock_mutex.
-MockObjectRegistry g_mock_object_registry;
-
-// Maps a mock object to the reaction Google Mock should have when an
-// uninteresting method is called.  Protected by g_gmock_mutex.
-std::map<const void*, internal::CallReaction> g_uninteresting_call_reaction;
-
-// Sets the reaction Google Mock should have when an uninteresting
-// method of the given mock object is called.
-void SetReactionOnUninterestingCalls(const void* mock_obj,
-                                     internal::CallReaction reaction)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  g_uninteresting_call_reaction[mock_obj] = reaction;
-}
-
-}  // namespace
-
-// Tells Google Mock to allow uninteresting calls on the given mock
-// object.
-void Mock::AllowUninterestingCalls(const void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  SetReactionOnUninterestingCalls(mock_obj, internal::kAllow);
-}
-
-// Tells Google Mock to warn the user about uninteresting calls on the
-// given mock object.
-void Mock::WarnUninterestingCalls(const void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  SetReactionOnUninterestingCalls(mock_obj, internal::kWarn);
-}
-
-// Tells Google Mock to fail uninteresting calls on the given mock
-// object.
-void Mock::FailUninterestingCalls(const void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  SetReactionOnUninterestingCalls(mock_obj, internal::kFail);
-}
-
-// Tells Google Mock the given mock object is being destroyed and its
-// entry in the call-reaction table should be removed.
-void Mock::UnregisterCallReaction(const void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  g_uninteresting_call_reaction.erase(mock_obj);
-}
-
-// Returns the reaction Google Mock will have on uninteresting calls
-// made on the given mock object.
-internal::CallReaction Mock::GetReactionOnUninterestingCalls(
-    const void* mock_obj)
-        GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  return (g_uninteresting_call_reaction.count(mock_obj) == 0) ?
-      internal::intToCallReaction(GMOCK_FLAG(default_mock_behavior)) :
-      g_uninteresting_call_reaction[mock_obj];
-}
-
-// Tells Google Mock to ignore mock_obj when checking for leaked mock
-// objects.
-void Mock::AllowLeak(const void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  g_mock_object_registry.states()[mock_obj].leakable = true;
-}
-
-// Verifies and clears all expectations on the given mock object.  If
-// the expectations aren't satisfied, generates one or more Google
-// Test non-fatal failures and returns false.
-bool Mock::VerifyAndClearExpectations(void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  return VerifyAndClearExpectationsLocked(mock_obj);
-}
-
-// Verifies all expectations on the given mock object and clears its
-// default actions and expectations.  Returns true if and only if the
-// verification was successful.
-bool Mock::VerifyAndClear(void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  ClearDefaultActionsLocked(mock_obj);
-  return VerifyAndClearExpectationsLocked(mock_obj);
-}
-
-// Verifies and clears all expectations on the given mock object.  If
-// the expectations aren't satisfied, generates one or more Google
-// Test non-fatal failures and returns false.
-bool Mock::VerifyAndClearExpectationsLocked(void* mock_obj)
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
-  internal::g_gmock_mutex.AssertHeld();
-  if (g_mock_object_registry.states().count(mock_obj) == 0) {
-    // No EXPECT_CALL() was set on the given mock object.
-    return true;
-  }
-
-  // Verifies and clears the expectations on each mock method in the
-  // given mock object.
-  bool expectations_met = true;
-  FunctionMockers& mockers =
-      g_mock_object_registry.states()[mock_obj].function_mockers;
-  for (FunctionMockers::const_iterator it = mockers.begin();
-       it != mockers.end(); ++it) {
-    if (!(*it)->VerifyAndClearExpectationsLocked()) {
-      expectations_met = false;
-    }
-  }
-
-  // We don't clear the content of mockers, as they may still be
-  // needed by ClearDefaultActionsLocked().
-  return expectations_met;
-}
-
-bool Mock::IsNaggy(void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  return Mock::GetReactionOnUninterestingCalls(mock_obj) == internal::kWarn;
-}
-bool Mock::IsNice(void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  return Mock::GetReactionOnUninterestingCalls(mock_obj) == internal::kAllow;
-}
-bool Mock::IsStrict(void* mock_obj)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  return Mock::GetReactionOnUninterestingCalls(mock_obj) == internal::kFail;
-}
-
-// Registers a mock object and a mock method it owns.
-void Mock::Register(const void* mock_obj,
-                    internal::UntypedFunctionMockerBase* mocker)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  g_mock_object_registry.states()[mock_obj].function_mockers.insert(mocker);
-}
-
-// Tells Google Mock where in the source code mock_obj is used in an
-// ON_CALL or EXPECT_CALL.  In case mock_obj is leaked, this
-// information helps the user identify which object it is.
-void Mock::RegisterUseByOnCallOrExpectCall(const void* mock_obj,
-                                           const char* file, int line)
-    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
-  internal::MutexLock l(&internal::g_gmock_mutex);
-  MockObjectState& state = g_mock_object_registry.states()[mock_obj];
-  if (state.first_used_file == nullptr) {
-    state.first_used_file = file;
-    state.first_used_line = line;
-    const TestInfo* const test_info =
-        UnitTest::GetInstance()->current_test_info();
-    if (test_info != nullptr) {
-      state.first_used_test_suite = test_info->test_suite_name();
-      state.first_used_test = test_info->name();
-    }
-  }
-}
-
-// Unregisters a mock method; removes the owning mock object from the
-// registry when the last mock method associated with it has been
-// unregistered.  This is called only in the destructor of
-// FunctionMockerBase.
-void Mock::UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
-  internal::g_gmock_mutex.AssertHeld();
-  for (MockObjectRegistry::StateMap::iterator it =
-           g_mock_object_registry.states().begin();
-       it != g_mock_object_registry.states().end(); ++it) {
-    FunctionMockers& mockers = it->second.function_mockers;
-    if (mockers.erase(mocker) > 0) {
-      // mocker was in mockers and has been just removed.
-      if (mockers.empty()) {
-        g_mock_object_registry.states().erase(it);
-      }
-      return;
-    }
-  }
-}
-
-// Clears all ON_CALL()s set on the given mock object.
-void Mock::ClearDefaultActionsLocked(void* mock_obj)
-    GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
-  internal::g_gmock_mutex.AssertHeld();
-
-  if (g_mock_object_registry.states().count(mock_obj) == 0) {
-    // No ON_CALL() was set on the given mock object.
-    return;
-  }
-
-  // Clears the default actions for each mock method in the given mock
-  // object.
-  FunctionMockers& mockers =
-      g_mock_object_registry.states()[mock_obj].function_mockers;
-  for (FunctionMockers::const_iterator it = mockers.begin();
-       it != mockers.end(); ++it) {
-    (*it)->ClearDefaultActionsLocked();
-  }
-
-  // We don't clear the content of mockers, as they may still be
-  // needed by VerifyAndClearExpectationsLocked().
-}
-
-Expectation::Expectation() {}
-
-Expectation::Expectation(
-    const std::shared_ptr<internal::ExpectationBase>& an_expectation_base)
-    : expectation_base_(an_expectation_base) {}
-
-Expectation::~Expectation() {}
-
-// Adds an expectation to a sequence.
-void Sequence::AddExpectation(const Expectation& expectation) const {
-  if (*last_expectation_ != expectation) {
-    if (last_expectation_->expectation_base() != nullptr) {
-      expectation.expectation_base()->immediate_prerequisites_
-          += *last_expectation_;
-    }
-    *last_expectation_ = expectation;
-  }
-}
-
-// Creates the implicit sequence if there isn't one.
-InSequence::InSequence() {
-  if (internal::g_gmock_implicit_sequence.get() == nullptr) {
-    internal::g_gmock_implicit_sequence.set(new Sequence);
-    sequence_created_ = true;
-  } else {
-    sequence_created_ = false;
-  }
-}
-
-// Deletes the implicit sequence if it was created by the constructor
-// of this object.
-InSequence::~InSequence() {
-  if (sequence_created_) {
-    delete internal::g_gmock_implicit_sequence.get();
-    internal::g_gmock_implicit_sequence.set(nullptr);
-  }
-}
-
-}  // namespace testing
-
-#ifdef _MSC_VER
-#if _MSC_VER == 1900
-#  pragma warning(pop)
-#endif
-#endif
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-namespace testing {
-
-GMOCK_DEFINE_bool_(catch_leaked_mocks, true,
-                   "true if and only if Google Mock should report leaked "
-                   "mock objects as failures.");
-
-GMOCK_DEFINE_string_(verbose, internal::kWarningVerbosity,
-                     "Controls how verbose Google Mock's output is."
-                     "  Valid values:\n"
-                     "  info    - prints all messages.\n"
-                     "  warning - prints warnings and errors.\n"
-                     "  error   - prints errors only.");
-
-GMOCK_DEFINE_int32_(default_mock_behavior, 1,
-                    "Controls the default behavior of mocks."
-                    "  Valid values:\n"
-                    "  0 - by default, mocks act as NiceMocks.\n"
-                    "  1 - by default, mocks act as NaggyMocks.\n"
-                    "  2 - by default, mocks act as StrictMocks.");
-
-namespace internal {
-
-// Parses a string as a command line flag.  The string should have the
-// format "--gmock_flag=value".  When def_optional is true, the
-// "=value" part can be omitted.
-//
-// Returns the value of the flag, or NULL if the parsing failed.
-static const char* ParseGoogleMockFlagValue(const char* str,
-                                            const char* flag,
-                                            bool def_optional) {
-  // str and flag must not be NULL.
-  if (str == nullptr || flag == nullptr) return nullptr;
-
-  // The flag must start with "--gmock_".
-  const std::string flag_str = std::string("--gmock_") + flag;
-  const size_t flag_len = flag_str.length();
-  if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;
-
-  // Skips the flag name.
-  const char* flag_end = str + flag_len;
-
-  // When def_optional is true, it's OK to not have a "=value" part.
-  if (def_optional && (flag_end[0] == '\0')) {
-    return flag_end;
-  }
-
-  // If def_optional is true and there are more characters after the
-  // flag name, or if def_optional is false, there must be a '=' after
-  // the flag name.
-  if (flag_end[0] != '=') return nullptr;
-
-  // Returns the string after "=".
-  return flag_end + 1;
-}
-
-// Parses a string for a Google Mock bool flag, in the form of
-// "--gmock_flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true.  On failure, returns false without changing *value.
-static bool ParseGoogleMockBoolFlag(const char* str, const char* flag,
-                                    bool* value) {
-  // Gets the value of the flag as a string.
-  const char* const value_str = ParseGoogleMockFlagValue(str, flag, true);
-
-  // Aborts if the parsing failed.
-  if (value_str == nullptr) return false;
-
-  // Converts the string value to a bool.
-  *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
-  return true;
-}
-
-// Parses a string for a Google Mock string flag, in the form of
-// "--gmock_flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true.  On failure, returns false without changing *value.
-template <typename String>
-static bool ParseGoogleMockStringFlag(const char* str, const char* flag,
-                                      String* value) {
-  // Gets the value of the flag as a string.
-  const char* const value_str = ParseGoogleMockFlagValue(str, flag, false);
-
-  // Aborts if the parsing failed.
-  if (value_str == nullptr) return false;
-
-  // Sets *value to the value of the flag.
-  *value = value_str;
-  return true;
-}
-
-static bool ParseGoogleMockIntFlag(const char* str, const char* flag,
-                                   int32_t* value) {
-  // Gets the value of the flag as a string.
-  const char* const value_str = ParseGoogleMockFlagValue(str, flag, true);
-
-  // Aborts if the parsing failed.
-  if (value_str == nullptr) return false;
-
-  // Sets *value to the value of the flag.
-  return ParseInt32(Message() << "The value of flag --" << flag,
-                    value_str, value);
-}
-
-// The internal implementation of InitGoogleMock().
-//
-// The type parameter CharType can be instantiated to either char or
-// wchar_t.
-template <typename CharType>
-void InitGoogleMockImpl(int* argc, CharType** argv) {
-  // Makes sure Google Test is initialized.  InitGoogleTest() is
-  // idempotent, so it's fine if the user has already called it.
-  InitGoogleTest(argc, argv);
-  if (*argc <= 0) return;
-
-  for (int i = 1; i != *argc; i++) {
-    const std::string arg_string = StreamableToString(argv[i]);
-    const char* const arg = arg_string.c_str();
-
-    // Do we see a Google Mock flag?
-    if (ParseGoogleMockBoolFlag(arg, "catch_leaked_mocks",
-                                &GMOCK_FLAG(catch_leaked_mocks)) ||
-        ParseGoogleMockStringFlag(arg, "verbose", &GMOCK_FLAG(verbose)) ||
-        ParseGoogleMockIntFlag(arg, "default_mock_behavior",
-                               &GMOCK_FLAG(default_mock_behavior))) {
-      // Yes.  Shift the remainder of the argv list left by one.  Note
-      // that argv has (*argc + 1) elements, the last one always being
-      // NULL.  The following loop moves the trailing NULL element as
-      // well.
-      for (int j = i; j != *argc; j++) {
-        argv[j] = argv[j + 1];
-      }
-
-      // Decrements the argument count.
-      (*argc)--;
-
-      // We also need to decrement the iterator as we just removed
-      // an element.
-      i--;
-    }
-  }
-}
-
-}  // namespace internal
-
-// Initializes Google Mock.  This must be called before running the
-// tests.  In particular, it parses a command line for the flags that
-// Google Mock recognizes.  Whenever a Google Mock flag is seen, it is
-// removed from argv, and *argc is decremented.
-//
-// No value is returned.  Instead, the Google Mock flag variables are
-// updated.
-//
-// Since Google Test is needed for Google Mock to work, this function
-// also initializes Google Test and parses its flags, if that hasn't
-// been done.
-GTEST_API_ void InitGoogleMock(int* argc, char** argv) {
-  internal::InitGoogleMockImpl(argc, argv);
-}
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv) {
-  internal::InitGoogleMockImpl(argc, argv);
-}
-
-// This overloaded version can be used on Arduino/embedded platforms where
-// there is no argc/argv.
-GTEST_API_ void InitGoogleMock() {
-  // Since Arduino doesn't have a command line, fake out the argc/argv arguments
-  int argc = 1;
-  const auto arg0 = "dummy";
-  char* argv0 = const_cast<char*>(arg0);
-  char** argv = &argv0;
-
-  internal::InitGoogleMockImpl(&argc, argv);
-}
-
-}  // namespace testing
diff --git a/third_party/ceres/internal/ceres/gmock_main.cc b/third_party/ceres/internal/ceres/gmock_main.cc
deleted file mode 100644
index 92d850c..0000000
--- a/third_party/ceres/internal/ceres/gmock_main.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-#include <iostream>
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-// NOTE(keir): This flag is normally part of gtest within Google but isn't in
-// the open source Google Test, since it is build-system dependent. However for
-// Ceres this is needed for our tests. Add the new flag here.
-DEFINE_string(test_srcdir, "", "The location of the source code.");
-
-// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
-// causes a link error when _tmain is defined in a static library and UNICODE
-// is enabled. For this reason instead of _tmain, main function is used on
-// Windows. See the following link to track the current status of this bug:
-// http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=394464  // NOLINT
-#if GTEST_OS_WINDOWS_MOBILE
-# include <tchar.h>  // NOLINT
-
-GTEST_API_ int _tmain(int argc, TCHAR** argv) {
-#else
-GTEST_API_ int main(int argc, char** argv) {
-#endif  // GTEST_OS_WINDOWS_MOBILE
-  std::cout << "Running main() from gmock_main.cc\n";
-  google::InitGoogleLogging(argv[0]);
-  // Since Google Mock depends on Google Test, InitGoogleMock() is
-  // also responsible for initializing Google Test.  Therefore there's
-  // no need for calling testing::InitGoogleTest() separately.
-  testing::InitGoogleMock(&argc, argv);
-  // On Windows, gtest passes additional non-gflags command line flags to
-  // death-tests, specifically --gtest_filter & --gtest_internal_run_death_test
-  // in order that these unknown (to gflags) flags do not invoke an error in
-  // gflags, InitGoogleTest() (called by InitGoogleMock()) must be called
-  // before ParseCommandLineFlags() to handle & remove them before gflags
-  // parses the remaining flags.
-  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
-  return RUN_ALL_TESTS();
-}
diff --git a/third_party/ceres/internal/ceres/gradient_checker.cc b/third_party/ceres/internal/ceres/gradient_checker.cc
deleted file mode 100644
index f49803c..0000000
--- a/third_party/ceres/internal/ceres/gradient_checker.cc
+++ /dev/null
@@ -1,285 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: wjr@google.com (William Rucklidge),
-//          keir@google.com (Keir Mierle),
-//          dgossow@google.com (David Gossow)
-
-#include "ceres/gradient_checker.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstdint>
-#include <numeric>
-#include <string>
-#include <vector>
-
-#include "ceres/is_close.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-using internal::IsClose;
-using internal::StringAppendF;
-using internal::StringPrintf;
-
-namespace {
-// Evaluate the cost function and transform the returned Jacobians to
-// the tangent space of the respective local parameterizations.
-bool EvaluateCostFunction(const CostFunction* function,
-                          double const* const* parameters,
-                          const std::vector<const Manifold*>& manifolds,
-                          Vector* residuals,
-                          std::vector<Matrix>* jacobians,
-                          std::vector<Matrix>* local_jacobians) {
-  CHECK(residuals != nullptr);
-  CHECK(jacobians != nullptr);
-  CHECK(local_jacobians != nullptr);
-
-  const std::vector<int32_t>& block_sizes = function->parameter_block_sizes();
-  const int num_parameter_blocks = block_sizes.size();
-
-  // Allocate Jacobian matrices in tangent space.
-  local_jacobians->resize(num_parameter_blocks);
-  std::vector<double*> local_jacobian_data(num_parameter_blocks);
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    int block_size = block_sizes.at(i);
-    if (manifolds.at(i) != nullptr) {
-      block_size = manifolds.at(i)->TangentSize();
-    }
-    local_jacobians->at(i).resize(function->num_residuals(), block_size);
-    local_jacobians->at(i).setZero();
-    local_jacobian_data.at(i) = local_jacobians->at(i).data();
-  }
-
-  // Allocate Jacobian matrices in ambient space.
-  jacobians->resize(num_parameter_blocks);
-  std::vector<double*> jacobian_data(num_parameter_blocks);
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    jacobians->at(i).resize(function->num_residuals(), block_sizes.at(i));
-    jacobians->at(i).setZero();
-    jacobian_data.at(i) = jacobians->at(i).data();
-  }
-
-  // Compute residuals & jacobians.
-  CHECK_NE(0, function->num_residuals());
-  residuals->resize(function->num_residuals());
-  residuals->setZero();
-  if (!function->Evaluate(
-          parameters, residuals->data(), jacobian_data.data())) {
-    return false;
-  }
-
-  // Convert Jacobians from ambient to local space.
-  for (size_t i = 0; i < local_jacobians->size(); ++i) {
-    if (manifolds.at(i) == nullptr) {
-      local_jacobians->at(i) = jacobians->at(i);
-    } else {
-      int ambient_size = manifolds.at(i)->AmbientSize();
-      int tangent_size = manifolds.at(i)->TangentSize();
-      CHECK_EQ(jacobians->at(i).cols(), ambient_size);
-      Matrix ambient_J_tangent(ambient_size, tangent_size);
-      manifolds.at(i)->PlusJacobian(parameters[i], ambient_J_tangent.data());
-      local_jacobians->at(i).noalias() = jacobians->at(i) * ambient_J_tangent;
-    }
-  }
-  return true;
-}
-}  // namespace
-
-GradientChecker::GradientChecker(const CostFunction* function,
-                                 const std::vector<const Manifold*>* manifolds,
-                                 const NumericDiffOptions& options)
-    : function_(function) {
-  CHECK(function != nullptr);
-  if (manifolds != nullptr) {
-    manifolds_ = *manifolds;
-  } else {
-    manifolds_.resize(function->parameter_block_sizes().size(), nullptr);
-  }
-
-  auto finite_diff_cost_function =
-      std::make_unique<DynamicNumericDiffCostFunction<CostFunction, RIDDERS>>(
-          function, DO_NOT_TAKE_OWNERSHIP, options);
-  const std::vector<int32_t>& parameter_block_sizes =
-      function->parameter_block_sizes();
-  const int num_parameter_blocks = parameter_block_sizes.size();
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    finite_diff_cost_function->AddParameterBlock(parameter_block_sizes[i]);
-  }
-  finite_diff_cost_function->SetNumResiduals(function->num_residuals());
-
-  finite_diff_cost_function_ = std::move(finite_diff_cost_function);
-}
-
-bool GradientChecker::Probe(double const* const* parameters,
-                            double relative_precision,
-                            ProbeResults* results_param) const {
-  int num_residuals = function_->num_residuals();
-
-  // Make sure that we have a place to store results, no matter if the user has
-  // provided an output argument.
-  ProbeResults* results;
-  ProbeResults results_local;
-  if (results_param != nullptr) {
-    results = results_param;
-    results->residuals.resize(0);
-    results->jacobians.clear();
-    results->numeric_jacobians.clear();
-    results->local_jacobians.clear();
-    results->local_numeric_jacobians.clear();
-    results->error_log.clear();
-  } else {
-    results = &results_local;
-  }
-  results->maximum_relative_error = 0.0;
-  results->return_value = true;
-
-  // Evaluate the derivative using the user supplied code.
-  std::vector<Matrix>& jacobians = results->jacobians;
-  std::vector<Matrix>& local_jacobians = results->local_jacobians;
-  if (!EvaluateCostFunction(function_,
-                            parameters,
-                            manifolds_,
-                            &results->residuals,
-                            &jacobians,
-                            &local_jacobians)) {
-    results->error_log = "Function evaluation with Jacobians failed.";
-    results->return_value = false;
-  }
-
-  // Evaluate the derivative using numeric derivatives.
-  std::vector<Matrix>& numeric_jacobians = results->numeric_jacobians;
-  std::vector<Matrix>& local_numeric_jacobians =
-      results->local_numeric_jacobians;
-  Vector finite_diff_residuals;
-  if (!EvaluateCostFunction(finite_diff_cost_function_.get(),
-                            parameters,
-                            manifolds_,
-                            &finite_diff_residuals,
-                            &numeric_jacobians,
-                            &local_numeric_jacobians)) {
-    results->error_log +=
-        "\nFunction evaluation with numerical "
-        "differentiation failed.";
-    results->return_value = false;
-  }
-
-  if (!results->return_value) {
-    return false;
-  }
-
-  for (int i = 0; i < num_residuals; ++i) {
-    if (!IsClose(results->residuals[i],
-                 finite_diff_residuals[i],
-                 relative_precision,
-                 nullptr,
-                 nullptr)) {
-      results->error_log =
-          "Function evaluation with and without Jacobians "
-          "resulted in different residuals.";
-      LOG(INFO) << results->residuals.transpose();
-      LOG(INFO) << finite_diff_residuals.transpose();
-      return false;
-    }
-  }
-
-  // See if any elements have relative error larger than the threshold.
-  int num_bad_jacobian_components = 0;
-  double& worst_relative_error = results->maximum_relative_error;
-  worst_relative_error = 0;
-
-  // Accumulate the error message for all the jacobians, since it won't get
-  // output if there are no bad jacobian components.
-  std::string error_log;
-  for (int k = 0; k < function_->parameter_block_sizes().size(); k++) {
-    StringAppendF(&error_log,
-                  "========== "
-                  "Jacobian for block %d: (%ld by %ld)) "
-                  "==========\n",
-                  k,
-                  static_cast<long>(local_jacobians[k].rows()),
-                  static_cast<long>(local_jacobians[k].cols()));
-    // The funny spacing creates appropriately aligned column headers.
-    error_log +=
-        " block  row  col        user dx/dy    num diff dx/dy         "
-        "abs error    relative error         parameter          residual\n";
-
-    for (int i = 0; i < local_jacobians[k].rows(); i++) {
-      for (int j = 0; j < local_jacobians[k].cols(); j++) {
-        double term_jacobian = local_jacobians[k](i, j);
-        double finite_jacobian = local_numeric_jacobians[k](i, j);
-        double relative_error, absolute_error;
-        bool bad_jacobian_entry = !IsClose(term_jacobian,
-                                           finite_jacobian,
-                                           relative_precision,
-                                           &relative_error,
-                                           &absolute_error);
-        worst_relative_error = std::max(worst_relative_error, relative_error);
-
-        StringAppendF(&error_log,
-                      "%6d %4d %4d %17g %17g %17g %17g %17g %17g",
-                      k,
-                      i,
-                      j,
-                      term_jacobian,
-                      finite_jacobian,
-                      absolute_error,
-                      relative_error,
-                      parameters[k][j],
-                      results->residuals[i]);
-
-        if (bad_jacobian_entry) {
-          num_bad_jacobian_components++;
-          StringAppendF(&error_log,
-                        " ------ (%d,%d,%d) Relative error worse than %g",
-                        k,
-                        i,
-                        j,
-                        relative_precision);
-        }
-        error_log += "\n";
-      }
-    }
-  }
-
-  // Since there were some bad errors, dump comprehensive debug info.
-  if (num_bad_jacobian_components) {
-    std::string header = StringPrintf(
-        "\nDetected %d bad Jacobian component(s). "
-        "Worst relative error was %g.\n",
-        num_bad_jacobian_components,
-        worst_relative_error);
-    results->error_log = header + "\n" + error_log;
-    return false;
-  }
-  return true;
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/gradient_checker_test.cc b/third_party/ceres/internal/ceres/gradient_checker_test.cc
deleted file mode 100644
index 2a20470..0000000
--- a/third_party/ceres/internal/ceres/gradient_checker_test.cc
+++ /dev/null
@@ -1,603 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-//
-// This file contains tests for the GradientChecker class.
-
-#include "ceres/gradient_checker.h"
-
-#include <cmath>
-#include <random>
-#include <utility>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/problem.h"
-#include "ceres/solver.h"
-#include "ceres/test_util.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-const double kTolerance = 1e-12;
-
-// We pick a (non-quadratic) function whose derivative are easy:
-//
-//    f = exp(- a' x).
-//   df = - f a.
-//
-// where 'a' is a vector of the same size as 'x'. In the block
-// version, they are both block vectors, of course.
-class GoodTestTerm : public CostFunction {
- public:
-  template <class UniformRandomFunctor>
-  GoodTestTerm(int arity, int const* dim, UniformRandomFunctor&& randu)
-      : arity_(arity), return_value_(true) {
-    std::uniform_real_distribution<double> distribution(-1.0, 1.0);
-    // Make 'arity' random vectors.
-    a_.resize(arity_);
-    for (int j = 0; j < arity_; ++j) {
-      a_[j].resize(dim[j]);
-      for (int u = 0; u < dim[j]; ++u) {
-        a_[j][u] = randu();
-      }
-    }
-
-    for (int i = 0; i < arity_; i++) {
-      mutable_parameter_block_sizes()->push_back(dim[i]);
-    }
-    set_num_residuals(1);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    if (!return_value_) {
-      return false;
-    }
-    // Compute a . x.
-    double ax = 0;
-    for (int j = 0; j < arity_; ++j) {
-      for (int u = 0; u < parameter_block_sizes()[j]; ++u) {
-        ax += a_[j][u] * parameters[j][u];
-      }
-    }
-
-    // This is the cost, but also appears as a factor
-    // in the derivatives.
-    double f = *residuals = exp(-ax);
-
-    // Accumulate 1st order derivatives.
-    if (jacobians) {
-      for (int j = 0; j < arity_; ++j) {
-        if (jacobians[j]) {
-          for (int u = 0; u < parameter_block_sizes()[j]; ++u) {
-            // See comments before class.
-            jacobians[j][u] = -f * a_[j][u];
-          }
-        }
-      }
-    }
-
-    return true;
-  }
-
-  void SetReturnValue(bool return_value) { return_value_ = return_value; }
-
- private:
-  int arity_;
-  bool return_value_;
-  std::vector<std::vector<double>> a_;  // our vectors.
-};
-
-class BadTestTerm : public CostFunction {
- public:
-  template <class UniformRandomFunctor>
-  BadTestTerm(int arity, int const* dim, UniformRandomFunctor&& randu)
-      : arity_(arity) {
-    // Make 'arity' random vectors.
-    a_.resize(arity_);
-    for (int j = 0; j < arity_; ++j) {
-      a_[j].resize(dim[j]);
-      for (int u = 0; u < dim[j]; ++u) {
-        a_[j][u] = randu();
-      }
-    }
-
-    for (int i = 0; i < arity_; i++) {
-      mutable_parameter_block_sizes()->push_back(dim[i]);
-    }
-    set_num_residuals(1);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    // Compute a . x.
-    double ax = 0;
-    for (int j = 0; j < arity_; ++j) {
-      for (int u = 0; u < parameter_block_sizes()[j]; ++u) {
-        ax += a_[j][u] * parameters[j][u];
-      }
-    }
-
-    // This is the cost, but also appears as a factor
-    // in the derivatives.
-    double f = *residuals = exp(-ax);
-
-    // Accumulate 1st order derivatives.
-    if (jacobians) {
-      for (int j = 0; j < arity_; ++j) {
-        if (jacobians[j]) {
-          for (int u = 0; u < parameter_block_sizes()[j]; ++u) {
-            // See comments before class.
-            jacobians[j][u] = -f * a_[j][u] + kTolerance;
-          }
-        }
-      }
-    }
-
-    return true;
-  }
-
- private:
-  int arity_;
-  std::vector<std::vector<double>> a_;  // our vectors.
-};
-
-static void CheckDimensions(const GradientChecker::ProbeResults& results,
-                            const std::vector<int>& parameter_sizes,
-                            const std::vector<int>& local_parameter_sizes,
-                            int residual_size) {
-  CHECK_EQ(parameter_sizes.size(), local_parameter_sizes.size());
-  int num_parameters = parameter_sizes.size();
-  ASSERT_EQ(residual_size, results.residuals.size());
-  ASSERT_EQ(num_parameters, results.local_jacobians.size());
-  ASSERT_EQ(num_parameters, results.local_numeric_jacobians.size());
-  ASSERT_EQ(num_parameters, results.jacobians.size());
-  ASSERT_EQ(num_parameters, results.numeric_jacobians.size());
-  for (int i = 0; i < num_parameters; ++i) {
-    EXPECT_EQ(residual_size, results.local_jacobians.at(i).rows());
-    EXPECT_EQ(local_parameter_sizes[i], results.local_jacobians.at(i).cols());
-    EXPECT_EQ(residual_size, results.local_numeric_jacobians.at(i).rows());
-    EXPECT_EQ(local_parameter_sizes[i],
-              results.local_numeric_jacobians.at(i).cols());
-    EXPECT_EQ(residual_size, results.jacobians.at(i).rows());
-    EXPECT_EQ(parameter_sizes[i], results.jacobians.at(i).cols());
-    EXPECT_EQ(residual_size, results.numeric_jacobians.at(i).rows());
-    EXPECT_EQ(parameter_sizes[i], results.numeric_jacobians.at(i).cols());
-  }
-}
-
-TEST(GradientChecker, SmokeTest) {
-  // Test with 3 blocks of size 2, 3 and 4.
-  int const num_parameters = 3;
-  std::vector<int> parameter_sizes(3);
-  parameter_sizes[0] = 2;
-  parameter_sizes[1] = 3;
-  parameter_sizes[2] = 4;
-
-  // Make a random set of blocks.
-  FixedArray<double*> parameters(num_parameters);
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(-1.0, 1.0);
-  auto randu = [&prng, &distribution] { return distribution(prng); };
-  for (int j = 0; j < num_parameters; ++j) {
-    parameters[j] = new double[parameter_sizes[j]];
-    for (int u = 0; u < parameter_sizes[j]; ++u) {
-      parameters[j][u] = randu();
-    }
-  }
-
-  NumericDiffOptions numeric_diff_options;
-  GradientChecker::ProbeResults results;
-
-  // Test that Probe returns true for correct Jacobians.
-  GoodTestTerm good_term(num_parameters, parameter_sizes.data(), randu);
-  std::vector<const Manifold*>* manifolds = nullptr;
-  GradientChecker good_gradient_checker(
-      &good_term, manifolds, numeric_diff_options);
-  EXPECT_TRUE(
-      good_gradient_checker.Probe(parameters.data(), kTolerance, nullptr));
-  EXPECT_TRUE(
-      good_gradient_checker.Probe(parameters.data(), kTolerance, &results))
-      << results.error_log;
-
-  // Check that results contain sensible data.
-  ASSERT_EQ(results.return_value, true);
-  ASSERT_EQ(results.residuals.size(), 1);
-  CheckDimensions(results, parameter_sizes, parameter_sizes, 1);
-  EXPECT_GE(results.maximum_relative_error, 0.0);
-  EXPECT_TRUE(results.error_log.empty());
-
-  // Test that if the cost function return false, Probe should return false.
-  good_term.SetReturnValue(false);
-  EXPECT_FALSE(
-      good_gradient_checker.Probe(parameters.data(), kTolerance, nullptr));
-  EXPECT_FALSE(
-      good_gradient_checker.Probe(parameters.data(), kTolerance, &results))
-      << results.error_log;
-
-  // Check that results contain sensible data.
-  ASSERT_EQ(results.return_value, false);
-  ASSERT_EQ(results.residuals.size(), 1);
-  CheckDimensions(results, parameter_sizes, parameter_sizes, 1);
-  for (int i = 0; i < num_parameters; ++i) {
-    EXPECT_EQ(results.local_jacobians.at(i).norm(), 0);
-    EXPECT_EQ(results.local_numeric_jacobians.at(i).norm(), 0);
-  }
-  EXPECT_EQ(results.maximum_relative_error, 0.0);
-  EXPECT_FALSE(results.error_log.empty());
-
-  // Test that Probe returns false for incorrect Jacobians.
-  BadTestTerm bad_term(num_parameters, parameter_sizes.data(), randu);
-  GradientChecker bad_gradient_checker(
-      &bad_term, manifolds, numeric_diff_options);
-  EXPECT_FALSE(
-      bad_gradient_checker.Probe(parameters.data(), kTolerance, nullptr));
-  EXPECT_FALSE(
-      bad_gradient_checker.Probe(parameters.data(), kTolerance, &results));
-
-  // Check that results contain sensible data.
-  ASSERT_EQ(results.return_value, true);
-  ASSERT_EQ(results.residuals.size(), 1);
-  CheckDimensions(results, parameter_sizes, parameter_sizes, 1);
-  EXPECT_GT(results.maximum_relative_error, kTolerance);
-  EXPECT_FALSE(results.error_log.empty());
-
-  // Setting a high threshold should make the test pass.
-  EXPECT_TRUE(bad_gradient_checker.Probe(parameters.data(), 1.0, &results));
-
-  // Check that results contain sensible data.
-  ASSERT_EQ(results.return_value, true);
-  ASSERT_EQ(results.residuals.size(), 1);
-  CheckDimensions(results, parameter_sizes, parameter_sizes, 1);
-  EXPECT_GT(results.maximum_relative_error, 0.0);
-  EXPECT_TRUE(results.error_log.empty());
-
-  for (int j = 0; j < num_parameters; j++) {
-    delete[] parameters[j];
-  }
-}
-
-/**
- * Helper cost function that multiplies the parameters by the given jacobians
- * and adds a constant offset.
- */
-class LinearCostFunction : public CostFunction {
- public:
-  explicit LinearCostFunction(Vector residuals_offset)
-      : residuals_offset_(std::move(residuals_offset)) {
-    set_num_residuals(residuals_offset_.size());
-  }
-
-  bool Evaluate(double const* const* parameter_ptrs,
-                double* residuals_ptr,
-                double** residual_J_params) const final {
-    CHECK_GE(residual_J_params_.size(), 0.0);
-    VectorRef residuals(residuals_ptr, residual_J_params_[0].rows());
-    residuals = residuals_offset_;
-
-    for (size_t i = 0; i < residual_J_params_.size(); ++i) {
-      const Matrix& residual_J_param = residual_J_params_[i];
-      int parameter_size = residual_J_param.cols();
-      ConstVectorRef param(parameter_ptrs[i], parameter_size);
-
-      // Compute residual.
-      residuals += residual_J_param * param;
-
-      // Return Jacobian.
-      if (residual_J_params != nullptr && residual_J_params[i] != nullptr) {
-        Eigen::Map<Matrix> residual_J_param_out(residual_J_params[i],
-                                                residual_J_param.rows(),
-                                                residual_J_param.cols());
-        if (jacobian_offsets_.count(i) != 0) {
-          residual_J_param_out = residual_J_param + jacobian_offsets_.at(i);
-        } else {
-          residual_J_param_out = residual_J_param;
-        }
-      }
-    }
-    return true;
-  }
-
-  void AddParameter(const Matrix& residual_J_param) {
-    CHECK_EQ(num_residuals(), residual_J_param.rows());
-    residual_J_params_.push_back(residual_J_param);
-    mutable_parameter_block_sizes()->push_back(residual_J_param.cols());
-  }
-
-  /// Add offset to the given Jacobian before returning it from Evaluate(),
-  /// thus introducing an error in the computation.
-  void SetJacobianOffset(size_t index, Matrix offset) {
-    CHECK_LT(index, residual_J_params_.size());
-    CHECK_EQ(residual_J_params_[index].rows(), offset.rows());
-    CHECK_EQ(residual_J_params_[index].cols(), offset.cols());
-    jacobian_offsets_[index] = offset;
-  }
-
- private:
-  std::vector<Matrix> residual_J_params_;
-  std::map<int, Matrix> jacobian_offsets_;
-  Vector residuals_offset_;
-};
-
-// Helper function to compare two Eigen matrices (used in the test below).
-static void ExpectMatricesClose(Matrix p, Matrix q, double tolerance) {
-  ASSERT_EQ(p.rows(), q.rows());
-  ASSERT_EQ(p.cols(), q.cols());
-  ExpectArraysClose(p.size(), p.data(), q.data(), tolerance);
-}
-
-// Helper manifold that multiplies the delta vector by the given
-// jacobian and adds it to the parameter.
-class MatrixManifold : public Manifold {
- public:
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const final {
-    VectorRef(x_plus_delta, AmbientSize()) =
-        ConstVectorRef(x, AmbientSize()) +
-        (global_to_local_ * ConstVectorRef(delta, TangentSize()));
-    return true;
-  }
-
-  bool PlusJacobian(const double* /*x*/, double* jacobian) const final {
-    MatrixRef(jacobian, AmbientSize(), TangentSize()) = global_to_local_;
-    return true;
-  }
-
-  bool Minus(const double* y, const double* x, double* y_minus_x) const final {
-    LOG(FATAL) << "Should not be called";
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const final {
-    LOG(FATAL) << "Should not be called";
-    return true;
-  }
-
-  int AmbientSize() const final { return global_to_local_.rows(); }
-  int TangentSize() const final { return global_to_local_.cols(); }
-
-  Matrix global_to_local_;
-};
-
-TEST(GradientChecker, TestCorrectnessWithManifolds) {
-  // Create cost function.
-  Eigen::Vector3d residual_offset(100.0, 200.0, 300.0);
-  LinearCostFunction cost_function(residual_offset);
-  Eigen::Matrix<double, 3, 3, Eigen::RowMajor> j0;
-  j0.row(0) << 1.0, 2.0, 3.0;
-  j0.row(1) << 4.0, 5.0, 6.0;
-  j0.row(2) << 7.0, 8.0, 9.0;
-  Eigen::Matrix<double, 3, 2, Eigen::RowMajor> j1;
-  j1.row(0) << 10.0, 11.0;
-  j1.row(1) << 12.0, 13.0;
-  j1.row(2) << 14.0, 15.0;
-
-  Eigen::Vector3d param0(1.0, 2.0, 3.0);
-  Eigen::Vector2d param1(4.0, 5.0);
-
-  cost_function.AddParameter(j0);
-  cost_function.AddParameter(j1);
-
-  std::vector<int> parameter_sizes(2);
-  parameter_sizes[0] = 3;
-  parameter_sizes[1] = 2;
-  std::vector<int> tangent_sizes(2);
-  tangent_sizes[0] = 2;
-  tangent_sizes[1] = 2;
-
-  // Test cost function for correctness.
-  Eigen::Matrix<double, 3, 3, Eigen::RowMajor> j1_out;
-  Eigen::Matrix<double, 3, 2, Eigen::RowMajor> j2_out;
-  Eigen::Vector3d residual;
-  std::vector<const double*> parameters(2);
-  parameters[0] = param0.data();
-  parameters[1] = param1.data();
-  std::vector<double*> jacobians(2);
-  jacobians[0] = j1_out.data();
-  jacobians[1] = j2_out.data();
-  cost_function.Evaluate(parameters.data(), residual.data(), jacobians.data());
-
-  Matrix residual_expected = residual_offset + j0 * param0 + j1 * param1;
-
-  ExpectMatricesClose(j1_out, j0, std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(j2_out, j1, std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(residual, residual_expected, kTolerance);
-
-  // Create manifold.
-  Eigen::Matrix<double, 3, 2, Eigen::RowMajor> global_to_local;
-  global_to_local.row(0) << 1.5, 2.5;
-  global_to_local.row(1) << 3.5, 4.5;
-  global_to_local.row(2) << 5.5, 6.5;
-
-  MatrixManifold manifold;
-  manifold.global_to_local_ = global_to_local;
-
-  // Test manifold for correctness.
-  Eigen::Vector3d x(7.0, 8.0, 9.0);
-  Eigen::Vector2d delta(10.0, 11.0);
-
-  Eigen::Matrix<double, 3, 2, Eigen::RowMajor> global_to_local_out;
-  manifold.PlusJacobian(x.data(), global_to_local_out.data());
-  ExpectMatricesClose(global_to_local_out,
-                      global_to_local,
-                      std::numeric_limits<double>::epsilon());
-
-  Eigen::Vector3d x_plus_delta;
-  manifold.Plus(x.data(), delta.data(), x_plus_delta.data());
-  Eigen::Vector3d x_plus_delta_expected = x + (global_to_local * delta);
-  ExpectMatricesClose(x_plus_delta, x_plus_delta_expected, kTolerance);
-
-  // Now test GradientChecker.
-  std::vector<const Manifold*> manifolds(2);
-  manifolds[0] = &manifold;
-  manifolds[1] = nullptr;
-  NumericDiffOptions numeric_diff_options;
-  GradientChecker::ProbeResults results;
-  GradientChecker gradient_checker(
-      &cost_function, &manifolds, numeric_diff_options);
-
-  Problem::Options problem_options;
-  problem_options.cost_function_ownership = DO_NOT_TAKE_OWNERSHIP;
-  problem_options.manifold_ownership = DO_NOT_TAKE_OWNERSHIP;
-  Problem problem(problem_options);
-  Eigen::Vector3d param0_solver;
-  Eigen::Vector2d param1_solver;
-  problem.AddParameterBlock(param0_solver.data(), 3, &manifold);
-  problem.AddParameterBlock(param1_solver.data(), 2);
-  problem.AddResidualBlock(
-      &cost_function, nullptr, param0_solver.data(), param1_solver.data());
-
-  // First test case: everything is correct.
-  EXPECT_TRUE(gradient_checker.Probe(parameters.data(), kTolerance, nullptr));
-  EXPECT_TRUE(gradient_checker.Probe(parameters.data(), kTolerance, &results))
-      << results.error_log;
-
-  // Check that results contain correct data.
-  ASSERT_EQ(results.return_value, true);
-  ExpectMatricesClose(
-      results.residuals, residual, std::numeric_limits<double>::epsilon());
-  CheckDimensions(results, parameter_sizes, tangent_sizes, 3);
-  ExpectMatricesClose(
-      results.local_jacobians.at(0), j0 * global_to_local, kTolerance);
-  ExpectMatricesClose(results.local_jacobians.at(1),
-                      j1,
-                      std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(
-      results.local_numeric_jacobians.at(0), j0 * global_to_local, kTolerance);
-  ExpectMatricesClose(results.local_numeric_jacobians.at(1), j1, kTolerance);
-  ExpectMatricesClose(
-      results.jacobians.at(0), j0, std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(
-      results.jacobians.at(1), j1, std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(results.numeric_jacobians.at(0), j0, kTolerance);
-  ExpectMatricesClose(results.numeric_jacobians.at(1), j1, kTolerance);
-  EXPECT_GE(results.maximum_relative_error, 0.0);
-  EXPECT_TRUE(results.error_log.empty());
-
-  // Test interaction with the 'check_gradients' option in Solver.
-  Solver::Options solver_options;
-  solver_options.linear_solver_type = DENSE_QR;
-  solver_options.check_gradients = true;
-  solver_options.initial_trust_region_radius = 1e10;
-  Solver solver;
-  Solver::Summary summary;
-
-  param0_solver = param0;
-  param1_solver = param1;
-  solver.Solve(solver_options, &problem, &summary);
-  EXPECT_EQ(CONVERGENCE, summary.termination_type);
-  EXPECT_LE(summary.final_cost, 1e-12);
-
-  // Second test case: Mess up reported derivatives with respect to 3rd
-  // component of 1st parameter. Check should fail.
-  Eigen::Matrix<double, 3, 3, Eigen::RowMajor> j0_offset;
-  j0_offset.setZero();
-  j0_offset.col(2).setConstant(0.001);
-  cost_function.SetJacobianOffset(0, j0_offset);
-  EXPECT_FALSE(gradient_checker.Probe(parameters.data(), kTolerance, nullptr));
-  EXPECT_FALSE(gradient_checker.Probe(parameters.data(), kTolerance, &results))
-      << results.error_log;
-
-  // Check that results contain correct data.
-  ASSERT_EQ(results.return_value, true);
-  ExpectMatricesClose(
-      results.residuals, residual, std::numeric_limits<double>::epsilon());
-  CheckDimensions(results, parameter_sizes, tangent_sizes, 3);
-  ASSERT_EQ(results.local_jacobians.size(), 2);
-  ASSERT_EQ(results.local_numeric_jacobians.size(), 2);
-  ExpectMatricesClose(results.local_jacobians.at(0),
-                      (j0 + j0_offset) * global_to_local,
-                      kTolerance);
-  ExpectMatricesClose(results.local_jacobians.at(1),
-                      j1,
-                      std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(
-      results.local_numeric_jacobians.at(0), j0 * global_to_local, kTolerance);
-  ExpectMatricesClose(results.local_numeric_jacobians.at(1), j1, kTolerance);
-  ExpectMatricesClose(results.jacobians.at(0), j0 + j0_offset, kTolerance);
-  ExpectMatricesClose(
-      results.jacobians.at(1), j1, std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(results.numeric_jacobians.at(0), j0, kTolerance);
-  ExpectMatricesClose(results.numeric_jacobians.at(1), j1, kTolerance);
-  EXPECT_GT(results.maximum_relative_error, 0.0);
-  EXPECT_FALSE(results.error_log.empty());
-
-  // Test interaction with the 'check_gradients' option in Solver.
-  param0_solver = param0;
-  param1_solver = param1;
-  solver.Solve(solver_options, &problem, &summary);
-  EXPECT_EQ(FAILURE, summary.termination_type);
-
-  // Now, zero out the manifold Jacobian with respect to the 3rd component of
-  // the 1st parameter. This makes the combination of cost function and manifold
-  // return correct values again.
-  manifold.global_to_local_.row(2).setZero();
-
-  // Verify that the gradient checker does not treat this as an error.
-  EXPECT_TRUE(gradient_checker.Probe(parameters.data(), kTolerance, &results))
-      << results.error_log;
-
-  // Check that results contain correct data.
-  ASSERT_EQ(results.return_value, true);
-  ExpectMatricesClose(
-      results.residuals, residual, std::numeric_limits<double>::epsilon());
-  CheckDimensions(results, parameter_sizes, tangent_sizes, 3);
-  ASSERT_EQ(results.local_jacobians.size(), 2);
-  ASSERT_EQ(results.local_numeric_jacobians.size(), 2);
-  ExpectMatricesClose(results.local_jacobians.at(0),
-                      (j0 + j0_offset) * manifold.global_to_local_,
-                      kTolerance);
-  ExpectMatricesClose(results.local_jacobians.at(1),
-                      j1,
-                      std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(results.local_numeric_jacobians.at(0),
-                      j0 * manifold.global_to_local_,
-                      kTolerance);
-  ExpectMatricesClose(results.local_numeric_jacobians.at(1), j1, kTolerance);
-  ExpectMatricesClose(results.jacobians.at(0), j0 + j0_offset, kTolerance);
-  ExpectMatricesClose(
-      results.jacobians.at(1), j1, std::numeric_limits<double>::epsilon());
-  ExpectMatricesClose(results.numeric_jacobians.at(0), j0, kTolerance);
-  ExpectMatricesClose(results.numeric_jacobians.at(1), j1, kTolerance);
-  EXPECT_GE(results.maximum_relative_error, 0.0);
-  EXPECT_TRUE(results.error_log.empty());
-
-  // Test interaction with the 'check_gradients' option in Solver.
-  param0_solver = param0;
-  param1_solver = param1;
-  solver.Solve(solver_options, &problem, &summary);
-  EXPECT_EQ(CONVERGENCE, summary.termination_type);
-  EXPECT_LE(summary.final_cost, 1e-12);
-}
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/gradient_checking_cost_function.cc b/third_party/ceres/internal/ceres/gradient_checking_cost_function.cc
deleted file mode 100644
index 8ca449b..0000000
--- a/third_party/ceres/internal/ceres/gradient_checking_cost_function.cc
+++ /dev/null
@@ -1,280 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: keir@google.com (Keir Mierle),
-//          dgossow@google.com (David Gossow)
-
-#include "ceres/gradient_checking_cost_function.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstdint>
-#include <memory>
-#include <numeric>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "ceres/dynamic_numeric_diff_cost_function.h"
-#include "ceres/gradient_checker.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/parameter_block.h"
-#include "ceres/problem.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-namespace {
-
-class GradientCheckingCostFunction final : public CostFunction {
- public:
-  GradientCheckingCostFunction(const CostFunction* function,
-                               const std::vector<const Manifold*>* manifolds,
-                               const NumericDiffOptions& options,
-                               double relative_precision,
-                               std::string extra_info,
-                               GradientCheckingIterationCallback* callback)
-      : function_(function),
-        gradient_checker_(function, manifolds, options),
-        relative_precision_(relative_precision),
-        extra_info_(std::move(extra_info)),
-        callback_(callback) {
-    CHECK(callback_ != nullptr);
-    const std::vector<int32_t>& parameter_block_sizes =
-        function->parameter_block_sizes();
-    *mutable_parameter_block_sizes() = parameter_block_sizes;
-    set_num_residuals(function->num_residuals());
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    if (!jacobians) {
-      // Nothing to check in this case; just forward.
-      return function_->Evaluate(parameters, residuals, nullptr);
-    }
-
-    GradientChecker::ProbeResults results;
-    bool okay =
-        gradient_checker_.Probe(parameters, relative_precision_, &results);
-
-    // If the cost function returned false, there's nothing we can say about
-    // the gradients.
-    if (results.return_value == false) {
-      return false;
-    }
-
-    // Copy the residuals.
-    const int num_residuals = function_->num_residuals();
-    MatrixRef(residuals, num_residuals, 1) = results.residuals;
-
-    // Copy the original jacobian blocks into the jacobians array.
-    const std::vector<int32_t>& block_sizes =
-        function_->parameter_block_sizes();
-    for (int k = 0; k < block_sizes.size(); k++) {
-      if (jacobians[k] != nullptr) {
-        MatrixRef(jacobians[k],
-                  results.jacobians[k].rows(),
-                  results.jacobians[k].cols()) = results.jacobians[k];
-      }
-    }
-
-    if (!okay) {
-      std::string error_log =
-          "Gradient Error detected!\nExtra info for this residual: " +
-          extra_info_ + "\n" + results.error_log;
-      callback_->SetGradientErrorDetected(error_log);
-    }
-    return true;
-  }
-
- private:
-  const CostFunction* function_;
-  GradientChecker gradient_checker_;
-  double relative_precision_;
-  std::string extra_info_;
-  GradientCheckingIterationCallback* callback_;
-};
-
-}  // namespace
-
-GradientCheckingIterationCallback::GradientCheckingIterationCallback()
-    : gradient_error_detected_(false) {}
-
-CallbackReturnType GradientCheckingIterationCallback::operator()(
-    const IterationSummary& /*summary*/) {
-  if (gradient_error_detected_) {
-    LOG(ERROR) << "Gradient error detected. Terminating solver.";
-    return SOLVER_ABORT;
-  }
-  return SOLVER_CONTINUE;
-}
-
-void GradientCheckingIterationCallback::SetGradientErrorDetected(
-    std::string& error_log) {
-  std::lock_guard<std::mutex> l(mutex_);
-  gradient_error_detected_ = true;
-  error_log_ += "\n" + error_log;
-}
-
-std::unique_ptr<CostFunction> CreateGradientCheckingCostFunction(
-    const CostFunction* cost_function,
-    const std::vector<const Manifold*>* manifolds,
-    double relative_step_size,
-    double relative_precision,
-    const std::string& extra_info,
-    GradientCheckingIterationCallback* callback) {
-  NumericDiffOptions numeric_diff_options;
-  numeric_diff_options.relative_step_size = relative_step_size;
-
-  return std::make_unique<GradientCheckingCostFunction>(cost_function,
-                                                        manifolds,
-                                                        numeric_diff_options,
-                                                        relative_precision,
-                                                        extra_info,
-                                                        callback);
-}
-
-std::unique_ptr<ProblemImpl> CreateGradientCheckingProblemImpl(
-    ProblemImpl* problem_impl,
-    double relative_step_size,
-    double relative_precision,
-    GradientCheckingIterationCallback* callback) {
-  CHECK(callback != nullptr);
-  // We create new CostFunctions by wrapping the original CostFunction in a
-  // gradient checking CostFunction. So its okay for the ProblemImpl to take
-  // ownership of it and destroy it. The LossFunctions and Manifolds are reused
-  // and since they are owned by problem_impl, gradient_checking_problem_impl
-  // should not take ownership of it.
-  Problem::Options gradient_checking_problem_options;
-  gradient_checking_problem_options.cost_function_ownership = TAKE_OWNERSHIP;
-  gradient_checking_problem_options.loss_function_ownership =
-      DO_NOT_TAKE_OWNERSHIP;
-  gradient_checking_problem_options.manifold_ownership = DO_NOT_TAKE_OWNERSHIP;
-  gradient_checking_problem_options.context = problem_impl->context();
-
-  NumericDiffOptions numeric_diff_options;
-  numeric_diff_options.relative_step_size = relative_step_size;
-
-  auto gradient_checking_problem_impl =
-      std::make_unique<ProblemImpl>(gradient_checking_problem_options);
-
-  Program* program = problem_impl->mutable_program();
-
-  // For every ParameterBlock in problem_impl, create a new parameter block with
-  // the same manifold and constancy.
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program->parameter_blocks();
-  for (auto* parameter_block : parameter_blocks) {
-    gradient_checking_problem_impl->AddParameterBlock(
-        parameter_block->mutable_user_state(),
-        parameter_block->Size(),
-        parameter_block->mutable_manifold());
-
-    if (parameter_block->IsConstant()) {
-      gradient_checking_problem_impl->SetParameterBlockConstant(
-          parameter_block->mutable_user_state());
-    }
-
-    for (int i = 0; i < parameter_block->Size(); ++i) {
-      gradient_checking_problem_impl->SetParameterUpperBound(
-          parameter_block->mutable_user_state(),
-          i,
-          parameter_block->UpperBound(i));
-      gradient_checking_problem_impl->SetParameterLowerBound(
-          parameter_block->mutable_user_state(),
-          i,
-          parameter_block->LowerBound(i));
-    }
-  }
-
-  // For every ResidualBlock in problem_impl, create a new
-  // ResidualBlock by wrapping its CostFunction inside a
-  // GradientCheckingCostFunction.
-  const std::vector<ResidualBlock*>& residual_blocks =
-      program->residual_blocks();
-  for (int i = 0; i < residual_blocks.size(); ++i) {
-    ResidualBlock* residual_block = residual_blocks[i];
-
-    // Build a human readable string which identifies the
-    // ResidualBlock. This is used by the GradientCheckingCostFunction
-    // when logging debugging information.
-    std::string extra_info =
-        StringPrintf("Residual block id %d; depends on parameters [", i);
-    std::vector<double*> parameter_blocks;
-    std::vector<const Manifold*> manifolds;
-    parameter_blocks.reserve(residual_block->NumParameterBlocks());
-    manifolds.reserve(residual_block->NumParameterBlocks());
-    for (int j = 0; j < residual_block->NumParameterBlocks(); ++j) {
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[j];
-      parameter_blocks.push_back(parameter_block->mutable_user_state());
-      StringAppendF(&extra_info, "%p", parameter_block->mutable_user_state());
-      extra_info += (j < residual_block->NumParameterBlocks() - 1) ? ", " : "]";
-      manifolds.push_back(
-          problem_impl->GetManifold(parameter_block->mutable_user_state()));
-    }
-
-    // Wrap the original CostFunction in a GradientCheckingCostFunction.
-    CostFunction* gradient_checking_cost_function =
-        new GradientCheckingCostFunction(residual_block->cost_function(),
-                                         &manifolds,
-                                         numeric_diff_options,
-                                         relative_precision,
-                                         extra_info,
-                                         callback);
-
-    // The const_cast is necessary because
-    // ProblemImpl::AddResidualBlock can potentially take ownership of
-    // the LossFunction, but in this case we are guaranteed that this
-    // will not be the case, so this const_cast is harmless.
-    gradient_checking_problem_impl->AddResidualBlock(
-        gradient_checking_cost_function,
-        const_cast<LossFunction*>(residual_block->loss_function()),
-        parameter_blocks.data(),
-        static_cast<int>(parameter_blocks.size()));
-  }
-
-  // Normally, when a problem is given to the solver, we guarantee
-  // that the state pointers for each parameter block point to the
-  // user provided data. Since we are creating this new problem from a
-  // problem given to us at an arbitrary stage of the solve, we cannot
-  // depend on this being the case, so we explicitly call
-  // SetParameterBlockStatePtrsToUserStatePtrs to ensure that this is
-  // the case.
-  gradient_checking_problem_impl->mutable_program()
-      ->SetParameterBlockStatePtrsToUserStatePtrs();
-
-  return gradient_checking_problem_impl;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/gradient_checking_cost_function.h b/third_party/ceres/internal/ceres/gradient_checking_cost_function.h
deleted file mode 100644
index 4ad3b6c..0000000
--- a/third_party/ceres/internal/ceres/gradient_checking_cost_function.h
+++ /dev/null
@@ -1,115 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: keir@google.com (Keir Mierle),
-//          dgossow@google.com (David Gossow)
-
-#ifndef CERES_INTERNAL_GRADIENT_CHECKING_COST_FUNCTION_H_
-#define CERES_INTERNAL_GRADIENT_CHECKING_COST_FUNCTION_H_
-
-#include <memory>
-#include <mutex>
-#include <string>
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/manifold.h"
-
-namespace ceres::internal {
-
-class ProblemImpl;
-
-// Callback that collects information about gradient checking errors, and
-// will abort the solve as soon as an error occurs.
-class CERES_NO_EXPORT GradientCheckingIterationCallback
-    : public IterationCallback {
- public:
-  GradientCheckingIterationCallback();
-
-  // Will return SOLVER_CONTINUE until a gradient error has been detected,
-  // then return SOLVER_ABORT.
-  CallbackReturnType operator()(const IterationSummary& summary) final;
-
-  // Notify this that a gradient error has occurred (thread safe).
-  void SetGradientErrorDetected(std::string& error_log);
-
-  // Retrieve error status (not thread safe).
-  bool gradient_error_detected() const { return gradient_error_detected_; }
-  const std::string& error_log() const { return error_log_; }
-
- private:
-  bool gradient_error_detected_;
-  std::string error_log_;
-  std::mutex mutex_;
-};
-
-// Creates a CostFunction that checks the Jacobians that cost_function computes
-// with finite differences. This API is only intended for unit tests that intend
-// to  check the functionality of the GradientCheckingCostFunction
-// implementation directly.
-CERES_NO_EXPORT std::unique_ptr<CostFunction>
-CreateGradientCheckingCostFunction(
-    const CostFunction* cost_function,
-    const std::vector<const Manifold*>* manifolds,
-    double relative_step_size,
-    double relative_precision,
-    const std::string& extra_info,
-    GradientCheckingIterationCallback* callback);
-
-// Create a new ProblemImpl object from the input problem_impl, where all
-// cost functions are wrapped so that each time their Evaluate method is called,
-// an additional check is performed that compares the Jacobians computed by
-// the original cost function with alternative Jacobians computed using
-// numerical differentiation. If local parameterizations are given for any
-// parameters, the Jacobians will be compared in the local space instead of the
-// ambient space. For details on the gradient checking procedure, see the
-// documentation of the GradientChecker class. If an error is detected in any
-// iteration, the respective cost function will notify the
-// GradientCheckingIterationCallback.
-//
-// Note: This is quite inefficient and is intended only for debugging.
-//
-// relative_step_size and relative_precision are parameters to control
-// the numeric differentiation and the relative tolerance between the
-// jacobian computed by the CostFunctions in problem_impl and
-// jacobians obtained by numerically differentiating them. See the
-// documentation of 'numeric_derivative_relative_step_size' in solver.h for a
-// better explanation.
-CERES_NO_EXPORT std::unique_ptr<ProblemImpl> CreateGradientCheckingProblemImpl(
-    ProblemImpl* problem_impl,
-    double relative_step_size,
-    double relative_precision,
-    GradientCheckingIterationCallback* callback);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_GRADIENT_CHECKING_COST_FUNCTION_H_
diff --git a/third_party/ceres/internal/ceres/gradient_checking_cost_function_test.cc b/third_party/ceres/internal/ceres/gradient_checking_cost_function_test.cc
deleted file mode 100644
index 545fcd2..0000000
--- a/third_party/ceres/internal/ceres/gradient_checking_cost_function_test.cc
+++ /dev/null
@@ -1,451 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/gradient_checking_cost_function.h"
-
-#include <cmath>
-#include <cstdint>
-#include <memory>
-#include <random>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/loss_function.h"
-#include "ceres/manifold.h"
-#include "ceres/parameter_block.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using testing::_;
-using testing::AllOf;
-using testing::AnyNumber;
-using testing::HasSubstr;
-
-// Pick a (non-quadratic) function whose derivative are easy:
-//
-//    f = exp(- a' x).
-//   df = - f a.
-//
-// where 'a' is a vector of the same size as 'x'. In the block
-// version, they are both block vectors, of course.
-template <int bad_block = 1, int bad_variable = 2>
-class TestTerm : public CostFunction {
- public:
-  // The constructor of this function needs to know the number
-  // of blocks desired, and the size of each block.
-  template <class UniformRandomFunctor>
-  TestTerm(int arity, int const* dim, UniformRandomFunctor&& randu)
-      : arity_(arity) {
-    // Make 'arity' random vectors.
-    a_.resize(arity_);
-    for (int j = 0; j < arity_; ++j) {
-      a_[j].resize(dim[j]);
-      for (int u = 0; u < dim[j]; ++u) {
-        a_[j][u] = randu();
-      }
-    }
-
-    for (int i = 0; i < arity_; i++) {
-      mutable_parameter_block_sizes()->push_back(dim[i]);
-    }
-    set_num_residuals(1);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    // Compute a . x.
-    double ax = 0;
-    for (int j = 0; j < arity_; ++j) {
-      for (int u = 0; u < parameter_block_sizes()[j]; ++u) {
-        ax += a_[j][u] * parameters[j][u];
-      }
-    }
-
-    // This is the cost, but also appears as a factor
-    // in the derivatives.
-    double f = *residuals = exp(-ax);
-
-    // Accumulate 1st order derivatives.
-    if (jacobians) {
-      for (int j = 0; j < arity_; ++j) {
-        if (jacobians[j]) {
-          for (int u = 0; u < parameter_block_sizes()[j]; ++u) {
-            // See comments before class.
-            jacobians[j][u] = -f * a_[j][u];
-
-            if (bad_block == j && bad_variable == u) {
-              // Whoopsiedoopsie! Deliberately introduce a faulty jacobian entry
-              // like what happens when users make an error in their jacobian
-              // computations. This should get detected.
-              LOG(INFO) << "Poisoning jacobian for parameter block " << j
-                        << ", row 0, column " << u;
-              jacobians[j][u] += 500;
-            }
-          }
-        }
-      }
-    }
-
-    return true;
-  }
-
- private:
-  int arity_;
-  std::vector<std::vector<double>> a_;
-};
-
-TEST(GradientCheckingCostFunction, ResidualsAndJacobiansArePreservedTest) {
-  // Test with 3 blocks of size 2, 3 and 4.
-  int const arity = 3;
-  int const dim[arity] = {2, 3, 4};
-
-  // Make a random set of blocks.
-  std::vector<double*> parameters(arity);
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(-1.0, 1.0);
-  auto randu = [&prng, &distribution] { return distribution(prng); };
-  for (int j = 0; j < arity; ++j) {
-    parameters[j] = new double[dim[j]];
-    for (int u = 0; u < dim[j]; ++u) {
-      parameters[j][u] = randu();
-    }
-  }
-
-  double original_residual;
-  double residual;
-  std::vector<double*> original_jacobians(arity);
-  std::vector<double*> jacobians(arity);
-
-  for (int j = 0; j < arity; ++j) {
-    // Since residual is one dimensional the jacobians have the same
-    // size as the parameter blocks.
-    jacobians[j] = new double[dim[j]];
-    original_jacobians[j] = new double[dim[j]];
-  }
-
-  const double kRelativeStepSize = 1e-6;
-  const double kRelativePrecision = 1e-4;
-
-  TestTerm<-1, -1> term(arity, dim, randu);
-  GradientCheckingIterationCallback callback;
-  auto gradient_checking_cost_function =
-      CreateGradientCheckingCostFunction(&term,
-                                         nullptr,
-                                         kRelativeStepSize,
-                                         kRelativePrecision,
-                                         "Ignored.",
-                                         &callback);
-  term.Evaluate(&parameters[0], &original_residual, &original_jacobians[0]);
-
-  gradient_checking_cost_function->Evaluate(
-      &parameters[0], &residual, &jacobians[0]);
-  EXPECT_EQ(original_residual, residual);
-
-  for (int j = 0; j < arity; j++) {
-    for (int k = 0; k < dim[j]; ++k) {
-      EXPECT_EQ(original_jacobians[j][k], jacobians[j][k]);
-    }
-
-    delete[] parameters[j];
-    delete[] jacobians[j];
-    delete[] original_jacobians[j];
-  }
-}
-
-TEST(GradientCheckingCostFunction, SmokeTest) {
-  // Test with 3 blocks of size 2, 3 and 4.
-  int const arity = 3;
-  int const dim[arity] = {2, 3, 4};
-
-  // Make a random set of blocks.
-  std::vector<double*> parameters(arity);
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(-1.0, 1.0);
-  auto randu = [&prng, &distribution] { return distribution(prng); };
-  for (int j = 0; j < arity; ++j) {
-    parameters[j] = new double[dim[j]];
-    for (int u = 0; u < dim[j]; ++u) {
-      parameters[j][u] = randu();
-    }
-  }
-
-  double residual;
-  std::vector<double*> jacobians(arity);
-  for (int j = 0; j < arity; ++j) {
-    // Since residual is one dimensional the jacobians have the same size as the
-    // parameter blocks.
-    jacobians[j] = new double[dim[j]];
-  }
-
-  const double kRelativeStepSize = 1e-6;
-  const double kRelativePrecision = 1e-4;
-
-  // Should have one term that's bad, causing everything to get dumped.
-  LOG(INFO) << "Bad gradient";
-  {
-    TestTerm<1, 2> term(arity, dim, randu);
-    GradientCheckingIterationCallback callback;
-    auto gradient_checking_cost_function =
-        CreateGradientCheckingCostFunction(&term,
-                                           nullptr,
-                                           kRelativeStepSize,
-                                           kRelativePrecision,
-                                           "Fuzzy banana",
-                                           &callback);
-    EXPECT_TRUE(gradient_checking_cost_function->Evaluate(
-        &parameters[0], &residual, &jacobians[0]));
-    EXPECT_TRUE(callback.gradient_error_detected());
-    EXPECT_TRUE(callback.error_log().find("Fuzzy banana") != std::string::npos);
-    EXPECT_TRUE(callback.error_log().find(
-                    "(1,0,2) Relative error worse than") != std::string::npos);
-  }
-
-  // The gradient is correct, so no errors are reported.
-  LOG(INFO) << "Good gradient";
-  {
-    TestTerm<-1, -1> term(arity, dim, randu);
-    GradientCheckingIterationCallback callback;
-    auto gradient_checking_cost_function =
-        CreateGradientCheckingCostFunction(&term,
-                                           nullptr,
-                                           kRelativeStepSize,
-                                           kRelativePrecision,
-                                           "Fuzzy banana",
-                                           &callback);
-    EXPECT_TRUE(gradient_checking_cost_function->Evaluate(
-        &parameters[0], &residual, &jacobians[0]));
-    EXPECT_FALSE(callback.gradient_error_detected());
-  }
-
-  for (int j = 0; j < arity; j++) {
-    delete[] parameters[j];
-    delete[] jacobians[j];
-  }
-}
-
-// The following three classes are for the purposes of defining
-// function signatures. They have dummy Evaluate functions.
-
-// Trivial cost function that accepts a single argument.
-class UnaryCostFunction : public CostFunction {
- public:
-  UnaryCostFunction(int num_residuals, int32_t parameter_block_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 1;
-    }
-    return true;
-  }
-};
-
-// Trivial cost function that accepts two arguments.
-class BinaryCostFunction : public CostFunction {
- public:
-  BinaryCostFunction(int num_residuals,
-                     int32_t parameter_block1_size,
-                     int32_t parameter_block2_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block1_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block2_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 2;
-    }
-    return true;
-  }
-};
-
-// Trivial cost function that accepts three arguments.
-class TernaryCostFunction : public CostFunction {
- public:
-  TernaryCostFunction(int num_residuals,
-                      int32_t parameter_block1_size,
-                      int32_t parameter_block2_size,
-                      int32_t parameter_block3_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block1_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block2_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block3_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 3;
-    }
-    return true;
-  }
-};
-
-// Verify that the two ParameterBlocks are formed from the same user
-// array and have the same Manifold objects.
-static void ParameterBlocksAreEquivalent(const ParameterBlock* left,
-                                         const ParameterBlock* right) {
-  CHECK(left != nullptr);
-  CHECK(right != nullptr);
-  EXPECT_EQ(left->user_state(), right->user_state());
-  EXPECT_EQ(left->Size(), right->Size());
-  EXPECT_EQ(left->Size(), right->Size());
-  EXPECT_EQ(left->TangentSize(), right->TangentSize());
-  EXPECT_EQ(left->manifold(), right->manifold());
-  EXPECT_EQ(left->IsConstant(), right->IsConstant());
-}
-
-TEST(GradientCheckingProblemImpl, ProblemDimensionsMatch) {
-  // Parameter blocks with arbitrarily chosen initial values.
-  double x[] = {1.0, 2.0, 3.0};
-  double y[] = {4.0, 5.0, 6.0, 7.0};
-  double z[] = {8.0, 9.0, 10.0, 11.0, 12.0};
-  double w[] = {13.0, 14.0, 15.0, 16.0};
-
-  ProblemImpl problem_impl;
-  problem_impl.AddParameterBlock(x, 3);
-  problem_impl.AddParameterBlock(y, 4);
-  problem_impl.SetParameterBlockConstant(y);
-  problem_impl.AddParameterBlock(z, 5);
-  problem_impl.AddParameterBlock(w, 4, new QuaternionManifold);
-  // clang-format off
-  problem_impl.AddResidualBlock(new UnaryCostFunction(2, 3),
-                                nullptr, x);
-  problem_impl.AddResidualBlock(new BinaryCostFunction(6, 5, 4),
-                                nullptr, z, y);
-  problem_impl.AddResidualBlock(new BinaryCostFunction(3, 3, 5),
-                                new TrivialLoss, x, z);
-  problem_impl.AddResidualBlock(new BinaryCostFunction(7, 5, 3),
-                                nullptr, z, x);
-  problem_impl.AddResidualBlock(new TernaryCostFunction(1, 5, 3, 4),
-                                nullptr, z, x, y);
-  // clang-format on
-
-  GradientCheckingIterationCallback callback;
-  auto gradient_checking_problem_impl =
-      CreateGradientCheckingProblemImpl(&problem_impl, 1.0, 1.0, &callback);
-
-  // The dimensions of the two problems match.
-  EXPECT_EQ(problem_impl.NumParameterBlocks(),
-            gradient_checking_problem_impl->NumParameterBlocks());
-  EXPECT_EQ(problem_impl.NumResidualBlocks(),
-            gradient_checking_problem_impl->NumResidualBlocks());
-
-  EXPECT_EQ(problem_impl.NumParameters(),
-            gradient_checking_problem_impl->NumParameters());
-  EXPECT_EQ(problem_impl.NumResiduals(),
-            gradient_checking_problem_impl->NumResiduals());
-
-  const Program& program = problem_impl.program();
-  const Program& gradient_checking_program =
-      gradient_checking_problem_impl->program();
-
-  // Since we added the ParameterBlocks and ResidualBlocks explicitly,
-  // they should be in the same order in the two programs. It is
-  // possible that may change due to implementation changes to
-  // Program. This is not expected to be the case and writing code to
-  // anticipate that possibility not worth the extra complexity in
-  // this test.
-  for (int i = 0; i < program.parameter_blocks().size(); ++i) {
-    ParameterBlocksAreEquivalent(
-        program.parameter_blocks()[i],
-        gradient_checking_program.parameter_blocks()[i]);
-  }
-
-  for (int i = 0; i < program.residual_blocks().size(); ++i) {
-    // Compare the sizes of the two ResidualBlocks.
-    const ResidualBlock* original_residual_block = program.residual_blocks()[i];
-    const ResidualBlock* new_residual_block =
-        gradient_checking_program.residual_blocks()[i];
-    EXPECT_EQ(original_residual_block->NumParameterBlocks(),
-              new_residual_block->NumParameterBlocks());
-    EXPECT_EQ(original_residual_block->NumResiduals(),
-              new_residual_block->NumResiduals());
-    EXPECT_EQ(original_residual_block->NumScratchDoublesForEvaluate(),
-              new_residual_block->NumScratchDoublesForEvaluate());
-
-    // Verify that the ParameterBlocks for the two residuals are equivalent.
-    for (int j = 0; j < original_residual_block->NumParameterBlocks(); ++j) {
-      ParameterBlocksAreEquivalent(
-          original_residual_block->parameter_blocks()[j],
-          new_residual_block->parameter_blocks()[j]);
-    }
-  }
-}
-
-TEST(GradientCheckingProblemImpl, ConstrainedProblemBoundsArePropagated) {
-  // Parameter blocks with arbitrarily chosen initial values.
-  double x[] = {1.0, 2.0, 3.0};
-  ProblemImpl problem_impl;
-  problem_impl.AddParameterBlock(x, 3);
-  problem_impl.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x);
-  problem_impl.SetParameterLowerBound(x, 0, 0.9);
-  problem_impl.SetParameterUpperBound(x, 1, 2.5);
-
-  GradientCheckingIterationCallback callback;
-  auto gradient_checking_problem_impl =
-      CreateGradientCheckingProblemImpl(&problem_impl, 1.0, 1.0, &callback);
-
-  // The dimensions of the two problems match.
-  EXPECT_EQ(problem_impl.NumParameterBlocks(),
-            gradient_checking_problem_impl->NumParameterBlocks());
-  EXPECT_EQ(problem_impl.NumResidualBlocks(),
-            gradient_checking_problem_impl->NumResidualBlocks());
-
-  EXPECT_EQ(problem_impl.NumParameters(),
-            gradient_checking_problem_impl->NumParameters());
-  EXPECT_EQ(problem_impl.NumResiduals(),
-            gradient_checking_problem_impl->NumResiduals());
-
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_EQ(problem_impl.GetParameterLowerBound(x, i),
-              gradient_checking_problem_impl->GetParameterLowerBound(x, i));
-    EXPECT_EQ(problem_impl.GetParameterUpperBound(x, i),
-              gradient_checking_problem_impl->GetParameterUpperBound(x, i));
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/gradient_problem.cc b/third_party/ceres/internal/ceres/gradient_problem.cc
deleted file mode 100644
index ee228b8..0000000
--- a/third_party/ceres/internal/ceres/gradient_problem.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/gradient_problem.h"
-
-#include <memory>
-
-#include "glog/logging.h"
-
-namespace ceres {
-
-GradientProblem::GradientProblem(FirstOrderFunction* function)
-    : function_(function),
-      manifold_(std::make_unique<EuclideanManifold<DYNAMIC>>(
-          function_->NumParameters())),
-      scratch_(new double[function_->NumParameters()]) {
-  CHECK(function != nullptr);
-}
-
-GradientProblem::GradientProblem(FirstOrderFunction* function,
-                                 Manifold* manifold)
-    : function_(function), scratch_(new double[function_->NumParameters()]) {
-  CHECK(function != nullptr);
-  if (manifold != nullptr) {
-    manifold_.reset(manifold);
-  } else {
-    manifold_ = std::make_unique<EuclideanManifold<DYNAMIC>>(
-        function_->NumParameters());
-  }
-  CHECK_EQ(function_->NumParameters(), manifold_->AmbientSize());
-}
-
-int GradientProblem::NumParameters() const {
-  return function_->NumParameters();
-}
-
-int GradientProblem::NumTangentParameters() const {
-  return manifold_->TangentSize();
-}
-
-bool GradientProblem::Evaluate(const double* parameters,
-                               double* cost,
-                               double* gradient) const {
-  if (gradient == nullptr) {
-    return function_->Evaluate(parameters, cost, nullptr);
-  }
-
-  return (function_->Evaluate(parameters, cost, scratch_.get()) &&
-          manifold_->RightMultiplyByPlusJacobian(
-              parameters, 1, scratch_.get(), gradient));
-}
-
-bool GradientProblem::Plus(const double* x,
-                           const double* delta,
-                           double* x_plus_delta) const {
-  return manifold_->Plus(x, delta, x_plus_delta);
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/gradient_problem_evaluator.h b/third_party/ceres/internal/ceres/gradient_problem_evaluator.h
deleted file mode 100644
index fe99767..0000000
--- a/third_party/ceres/internal/ceres/gradient_problem_evaluator.h
+++ /dev/null
@@ -1,103 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_GRADIENT_PROBLEM_EVALUATOR_H_
-#define CERES_INTERNAL_GRADIENT_PROBLEM_EVALUATOR_H_
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include "ceres/evaluator.h"
-#include "ceres/execution_summary.h"
-#include "ceres/gradient_problem.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT GradientProblemEvaluator final : public Evaluator {
- public:
-  explicit GradientProblemEvaluator(const GradientProblem& problem)
-      : problem_(problem) {}
-
-  std::unique_ptr<SparseMatrix> CreateJacobian() const final { return nullptr; }
-
-  bool Evaluate(const EvaluateOptions& /*evaluate_options*/,
-                const double* state,
-                double* cost,
-                double* /*residuals*/,
-                double* gradient,
-                SparseMatrix* jacobian) final {
-    CHECK(jacobian == nullptr);
-    ScopedExecutionTimer total_timer("Evaluator::Total", &execution_summary_);
-    // The reason we use Residual and Jacobian here even when we are
-    // only computing the cost and gradient has to do with the fact
-    // that the line search minimizer code is used by both the
-    // GradientProblemSolver and the main CeresSolver coder where the
-    // Evaluator evaluates the Jacobian, and these magic strings need
-    // to be consistent across the code base for the time accounting
-    // to work.
-    ScopedExecutionTimer call_type_timer(
-        gradient == nullptr ? "Evaluator::Residual" : "Evaluator::Jacobian",
-        &execution_summary_);
-    return problem_.Evaluate(state, cost, gradient);
-  }
-
-  bool Plus(const double* state,
-            const double* delta,
-            double* state_plus_delta) const final {
-    return problem_.Plus(state, delta, state_plus_delta);
-  }
-
-  int NumParameters() const final { return problem_.NumParameters(); }
-
-  int NumEffectiveParameters() const final {
-    return problem_.NumTangentParameters();
-  }
-
-  int NumResiduals() const final { return 1; }
-
-  std::map<std::string, internal::CallStatistics> Statistics() const final {
-    return execution_summary_.statistics();
-  }
-
- private:
-  const GradientProblem& problem_;
-  ::ceres::internal::ExecutionSummary execution_summary_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_GRADIENT_PROBLEM_EVALUATOR_H_
diff --git a/third_party/ceres/internal/ceres/gradient_problem_solver.cc b/third_party/ceres/internal/ceres/gradient_problem_solver.cc
deleted file mode 100644
index ad2ea13..0000000
--- a/third_party/ceres/internal/ceres/gradient_problem_solver.cc
+++ /dev/null
@@ -1,298 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/gradient_problem_solver.h"
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include "ceres/callbacks.h"
-#include "ceres/gradient_problem.h"
-#include "ceres/gradient_problem_evaluator.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/map_util.h"
-#include "ceres/minimizer.h"
-#include "ceres/solver.h"
-#include "ceres/solver_utils.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-namespace ceres {
-using internal::StringAppendF;
-using internal::StringPrintf;
-
-namespace {
-
-Solver::Options GradientProblemSolverOptionsToSolverOptions(
-    const GradientProblemSolver::Options& options) {
-#define COPY_OPTION(x) solver_options.x = options.x
-
-  Solver::Options solver_options;
-  solver_options.minimizer_type = LINE_SEARCH;
-  COPY_OPTION(line_search_direction_type);
-  COPY_OPTION(line_search_type);
-  COPY_OPTION(nonlinear_conjugate_gradient_type);
-  COPY_OPTION(max_lbfgs_rank);
-  COPY_OPTION(use_approximate_eigenvalue_bfgs_scaling);
-  COPY_OPTION(line_search_interpolation_type);
-  COPY_OPTION(min_line_search_step_size);
-  COPY_OPTION(line_search_sufficient_function_decrease);
-  COPY_OPTION(max_line_search_step_contraction);
-  COPY_OPTION(min_line_search_step_contraction);
-  COPY_OPTION(max_num_line_search_step_size_iterations);
-  COPY_OPTION(max_num_line_search_direction_restarts);
-  COPY_OPTION(line_search_sufficient_curvature_decrease);
-  COPY_OPTION(max_line_search_step_expansion);
-  COPY_OPTION(max_num_iterations);
-  COPY_OPTION(max_solver_time_in_seconds);
-  COPY_OPTION(parameter_tolerance);
-  COPY_OPTION(function_tolerance);
-  COPY_OPTION(gradient_tolerance);
-  COPY_OPTION(logging_type);
-  COPY_OPTION(minimizer_progress_to_stdout);
-  COPY_OPTION(callbacks);
-  return solver_options;
-#undef COPY_OPTION
-}
-
-}  // namespace
-
-bool GradientProblemSolver::Options::IsValid(std::string* error) const {
-  const Solver::Options solver_options =
-      GradientProblemSolverOptionsToSolverOptions(*this);
-  return solver_options.IsValid(error);
-}
-
-GradientProblemSolver::~GradientProblemSolver() = default;
-
-void GradientProblemSolver::Solve(const GradientProblemSolver::Options& options,
-                                  const GradientProblem& problem,
-                                  double* parameters_ptr,
-                                  GradientProblemSolver::Summary* summary) {
-  using internal::CallStatistics;
-  using internal::GradientProblemEvaluator;
-  using internal::GradientProblemSolverStateUpdatingCallback;
-  using internal::LoggingCallback;
-  using internal::Minimizer;
-  using internal::SetSummaryFinalCost;
-  using internal::WallTimeInSeconds;
-
-  double start_time = WallTimeInSeconds();
-
-  CHECK(summary != nullptr);
-  *summary = Summary();
-  // clang-format off
-  summary->num_parameters                    = problem.NumParameters();
-  summary->num_tangent_parameters            = problem.NumTangentParameters();
-  summary->line_search_direction_type        = options.line_search_direction_type;         //  NOLINT
-  summary->line_search_interpolation_type    = options.line_search_interpolation_type;     //  NOLINT
-  summary->line_search_type                  = options.line_search_type;
-  summary->max_lbfgs_rank                    = options.max_lbfgs_rank;
-  summary->nonlinear_conjugate_gradient_type = options.nonlinear_conjugate_gradient_type;  //  NOLINT
-  // clang-format on
-
-  // Check validity
-  if (!options.IsValid(&summary->message)) {
-    LOG(ERROR) << "Terminating: " << summary->message;
-    return;
-  }
-
-  VectorRef parameters(parameters_ptr, problem.NumParameters());
-  Vector solution(problem.NumParameters());
-  solution = parameters;
-
-  // TODO(sameeragarwal): This is a bit convoluted, we should be able
-  // to convert to minimizer options directly, but this will do for
-  // now.
-  Minimizer::Options minimizer_options =
-      Minimizer::Options(GradientProblemSolverOptionsToSolverOptions(options));
-  minimizer_options.evaluator =
-      std::make_unique<GradientProblemEvaluator>(problem);
-
-  std::unique_ptr<IterationCallback> logging_callback;
-  if (options.logging_type != SILENT) {
-    logging_callback = std::make_unique<LoggingCallback>(
-        LINE_SEARCH, options.minimizer_progress_to_stdout);
-    minimizer_options.callbacks.insert(minimizer_options.callbacks.begin(),
-                                       logging_callback.get());
-  }
-
-  std::unique_ptr<IterationCallback> state_updating_callback;
-  if (options.update_state_every_iteration) {
-    state_updating_callback =
-        std::make_unique<GradientProblemSolverStateUpdatingCallback>(
-            problem.NumParameters(), solution.data(), parameters_ptr);
-    minimizer_options.callbacks.insert(minimizer_options.callbacks.begin(),
-                                       state_updating_callback.get());
-  }
-
-  std::unique_ptr<Minimizer> minimizer(Minimizer::Create(LINE_SEARCH));
-
-  Solver::Summary solver_summary;
-  solver_summary.fixed_cost = 0.0;
-  solver_summary.preprocessor_time_in_seconds = 0.0;
-  solver_summary.postprocessor_time_in_seconds = 0.0;
-  solver_summary.line_search_polynomial_minimization_time_in_seconds = 0.0;
-
-  minimizer->Minimize(minimizer_options, solution.data(), &solver_summary);
-
-  // clang-format off
-  summary->termination_type = solver_summary.termination_type;
-  summary->message          = solver_summary.message;
-  summary->initial_cost     = solver_summary.initial_cost;
-  summary->final_cost       = solver_summary.final_cost;
-  summary->iterations       = solver_summary.iterations;
-  // clang-format on
-  summary->line_search_polynomial_minimization_time_in_seconds =
-      solver_summary.line_search_polynomial_minimization_time_in_seconds;
-
-  if (summary->IsSolutionUsable()) {
-    parameters = solution;
-    SetSummaryFinalCost(summary);
-  }
-
-  const std::map<std::string, CallStatistics>& evaluator_statistics =
-      minimizer_options.evaluator->Statistics();
-  {
-    const CallStatistics& call_stats = FindWithDefault(
-        evaluator_statistics, "Evaluator::Residual", CallStatistics());
-    summary->cost_evaluation_time_in_seconds = call_stats.time;
-    summary->num_cost_evaluations = call_stats.calls;
-  }
-
-  {
-    const CallStatistics& call_stats = FindWithDefault(
-        evaluator_statistics, "Evaluator::Jacobian", CallStatistics());
-    summary->gradient_evaluation_time_in_seconds = call_stats.time;
-    summary->num_gradient_evaluations = call_stats.calls;
-  }
-
-  summary->total_time_in_seconds = WallTimeInSeconds() - start_time;
-}
-
-bool GradientProblemSolver::Summary::IsSolutionUsable() const {
-  return internal::IsSolutionUsable(*this);
-}
-
-std::string GradientProblemSolver::Summary::BriefReport() const {
-  return StringPrintf(
-      "Ceres GradientProblemSolver Report: "
-      "Iterations: %d, "
-      "Initial cost: %e, "
-      "Final cost: %e, "
-      "Termination: %s",
-      static_cast<int>(iterations.size()),
-      initial_cost,
-      final_cost,
-      TerminationTypeToString(termination_type));
-}
-
-std::string GradientProblemSolver::Summary::FullReport() const {
-  using internal::VersionString;
-
-  // NOTE operator+ is not usable for concatenating a string and a string_view.
-  std::string report =
-      std::string{"\nSolver Summary (v "}.append(VersionString()) + ")\n\n";
-
-  StringAppendF(&report, "Parameters          % 25d\n", num_parameters);
-  if (num_tangent_parameters != num_parameters) {
-    StringAppendF(
-        &report, "Tangent parameters   % 25d\n", num_tangent_parameters);
-  }
-
-  std::string line_search_direction_string;
-  if (line_search_direction_type == LBFGS) {
-    line_search_direction_string = StringPrintf("LBFGS (%d)", max_lbfgs_rank);
-  } else if (line_search_direction_type == NONLINEAR_CONJUGATE_GRADIENT) {
-    line_search_direction_string = NonlinearConjugateGradientTypeToString(
-        nonlinear_conjugate_gradient_type);
-  } else {
-    line_search_direction_string =
-        LineSearchDirectionTypeToString(line_search_direction_type);
-  }
-
-  StringAppendF(&report,
-                "Line search direction     %19s\n",
-                line_search_direction_string.c_str());
-
-  const std::string line_search_type_string = StringPrintf(
-      "%s %s",
-      LineSearchInterpolationTypeToString(line_search_interpolation_type),
-      LineSearchTypeToString(line_search_type));
-  StringAppendF(&report,
-                "Line search type          %19s\n",
-                line_search_type_string.c_str());
-  StringAppendF(&report, "\n");
-
-  StringAppendF(&report, "\nCost:\n");
-  StringAppendF(&report, "Initial        % 30e\n", initial_cost);
-  if (termination_type != FAILURE && termination_type != USER_FAILURE) {
-    StringAppendF(&report, "Final          % 30e\n", final_cost);
-    StringAppendF(&report, "Change         % 30e\n", initial_cost - final_cost);
-  }
-
-  StringAppendF(&report,
-                "\nMinimizer iterations         % 16d\n",
-                static_cast<int>(iterations.size()));
-
-  StringAppendF(&report, "\nTime (in seconds):\n");
-  StringAppendF(&report,
-                "\n  Cost evaluation     %23.6f (%d)\n",
-                cost_evaluation_time_in_seconds,
-                num_cost_evaluations);
-  StringAppendF(&report,
-                "  Gradient & cost evaluation %16.6f (%d)\n",
-                gradient_evaluation_time_in_seconds,
-                num_gradient_evaluations);
-  StringAppendF(&report,
-                "  Polynomial minimization   %17.6f\n",
-                line_search_polynomial_minimization_time_in_seconds);
-  StringAppendF(
-      &report, "Total               %25.6f\n\n", total_time_in_seconds);
-
-  StringAppendF(&report,
-                "Termination:        %25s (%s)\n",
-                TerminationTypeToString(termination_type),
-                message.c_str());
-  return report;
-}
-
-void Solve(const GradientProblemSolver::Options& options,
-           const GradientProblem& problem,
-           double* parameters,
-           GradientProblemSolver::Summary* summary) {
-  GradientProblemSolver solver;
-  solver.Solve(options, problem, parameters, summary);
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/gradient_problem_solver_test.cc b/third_party/ceres/internal/ceres/gradient_problem_solver_test.cc
deleted file mode 100644
index f8eabf6..0000000
--- a/third_party/ceres/internal/ceres/gradient_problem_solver_test.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-
-#include "ceres/gradient_problem_solver.h"
-
-#include "ceres/gradient_problem.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Rosenbrock function; see http://en.wikipedia.org/wiki/Rosenbrock_function .
-class Rosenbrock : public ceres::FirstOrderFunction {
- public:
-  bool Evaluate(const double* parameters,
-                double* cost,
-                double* gradient) const final {
-    const double x = parameters[0];
-    const double y = parameters[1];
-
-    cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
-    if (gradient != nullptr) {
-      gradient[0] = -2.0 * (1.0 - x) - 200.0 * (y - x * x) * 2.0 * x;
-      gradient[1] = 200.0 * (y - x * x);
-    }
-    return true;
-  }
-
-  int NumParameters() const final { return 2; }
-};
-
-TEST(GradientProblemSolver, SolvesRosenbrockWithDefaultOptions) {
-  const double expected_tolerance = 1e-9;
-  double parameters[2] = {-1.2, 0.0};
-
-  ceres::GradientProblemSolver::Options options;
-  ceres::GradientProblemSolver::Summary summary;
-  ceres::GradientProblem problem(new Rosenbrock());
-  ceres::Solve(options, problem, parameters, &summary);
-
-  EXPECT_EQ(CONVERGENCE, summary.termination_type);
-  EXPECT_NEAR(1.0, parameters[0], expected_tolerance);
-  EXPECT_NEAR(1.0, parameters[1], expected_tolerance);
-}
-
-class QuadraticFunction : public ceres::FirstOrderFunction {
-  bool Evaluate(const double* parameters,
-                double* cost,
-                double* gradient) const final {
-    const double x = parameters[0];
-    *cost = 0.5 * (5.0 - x) * (5.0 - x);
-    if (gradient != nullptr) {
-      gradient[0] = x - 5.0;
-    }
-
-    return true;
-  }
-  int NumParameters() const final { return 1; }
-};
-
-struct RememberingCallback : public IterationCallback {
-  explicit RememberingCallback(double* x) : calls(0), x(x) {}
-  CallbackReturnType operator()(const IterationSummary& summary) final {
-    x_values.push_back(*x);
-    return SOLVER_CONTINUE;
-  }
-  int calls;
-  double* x;
-  std::vector<double> x_values;
-};
-
-TEST(Solver, UpdateStateEveryIterationOption) {
-  double x = 50.0;
-  const double original_x = x;
-
-  ceres::GradientProblem problem(new QuadraticFunction);
-  ceres::GradientProblemSolver::Options options;
-  RememberingCallback callback(&x);
-  options.callbacks.push_back(&callback);
-  ceres::GradientProblemSolver::Summary summary;
-
-  int num_iterations;
-
-  // First try: no updating.
-  ceres::Solve(options, problem, &x, &summary);
-  num_iterations = summary.iterations.size() - 1;
-  EXPECT_GT(num_iterations, 1);
-  for (double value : callback.x_values) {
-    EXPECT_EQ(50.0, value);
-  }
-
-  // Second try: with updating
-  x = 50.0;
-  options.update_state_every_iteration = true;
-  callback.x_values.clear();
-  ceres::Solve(options, problem, &x, &summary);
-  num_iterations = summary.iterations.size() - 1;
-  EXPECT_GT(num_iterations, 1);
-  EXPECT_EQ(original_x, callback.x_values[0]);
-  EXPECT_NE(original_x, callback.x_values[1]);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/gradient_problem_test.cc b/third_party/ceres/internal/ceres/gradient_problem_test.cc
deleted file mode 100644
index 52757a3..0000000
--- a/third_party/ceres/internal/ceres/gradient_problem_test.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-
-#include "ceres/gradient_problem.h"
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class QuadraticTestFunction : public ceres::FirstOrderFunction {
- public:
-  explicit QuadraticTestFunction(bool* flag_to_set_on_destruction = nullptr)
-      : flag_to_set_on_destruction_(flag_to_set_on_destruction) {}
-
-  ~QuadraticTestFunction() override {
-    if (flag_to_set_on_destruction_) {
-      *flag_to_set_on_destruction_ = true;
-    }
-  }
-
-  bool Evaluate(const double* parameters,
-                double* cost,
-                double* gradient) const final {
-    const double x = parameters[0];
-    cost[0] = x * x;
-    if (gradient != nullptr) {
-      gradient[0] = 2.0 * x;
-    }
-    return true;
-  }
-
-  int NumParameters() const final { return 1; }
-
- private:
-  bool* flag_to_set_on_destruction_;
-};
-
-TEST(GradientProblem, TakesOwnershipOfFirstOrderFunction) {
-  bool is_destructed = false;
-  { ceres::GradientProblem problem(new QuadraticTestFunction(&is_destructed)); }
-  EXPECT_TRUE(is_destructed);
-}
-
-TEST(GradientProblem, EvaluationWithManifoldAndNoGradient) {
-  ceres::GradientProblem problem(new QuadraticTestFunction(),
-                                 new EuclideanManifold<1>);
-  double x = 7.0;
-  double cost = 0;
-  problem.Evaluate(&x, &cost, nullptr);
-  EXPECT_EQ(x * x, cost);
-}
-
-TEST(GradientProblem, EvaluationWithoutManifoldAndWithGradient) {
-  ceres::GradientProblem problem(new QuadraticTestFunction());
-  double x = 7.0;
-  double cost = 0;
-  double gradient = 0;
-  problem.Evaluate(&x, &cost, &gradient);
-  EXPECT_EQ(2.0 * x, gradient);
-}
-
-TEST(GradientProblem, EvaluationWithManifoldAndWithGradient) {
-  ceres::GradientProblem problem(new QuadraticTestFunction(),
-                                 new EuclideanManifold<1>);
-  double x = 7.0;
-  double cost = 0;
-  double gradient = 0;
-  problem.Evaluate(&x, &cost, &gradient);
-  EXPECT_EQ(2.0 * x, gradient);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/graph.h b/third_party/ceres/internal/ceres/graph.h
deleted file mode 100644
index 4f8dfb9..0000000
--- a/third_party/ceres/internal/ceres/graph.h
+++ /dev/null
@@ -1,210 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_GRAPH_H_
-#define CERES_INTERNAL_GRAPH_H_
-
-#include <limits>
-#include <unordered_map>
-#include <unordered_set>
-#include <utility>
-
-#include "ceres/internal/export.h"
-#include "ceres/map_util.h"
-#include "ceres/pair_hash.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// A unweighted undirected graph templated over the vertex ids. Vertex
-// should be hashable.
-template <typename Vertex>
-class CERES_NO_EXPORT Graph {
- public:
-  // Add a vertex.
-  void AddVertex(const Vertex& vertex) {
-    if (vertices_.insert(vertex).second) {
-      edges_[vertex] = std::unordered_set<Vertex>();
-    }
-  }
-
-  bool RemoveVertex(const Vertex& vertex) {
-    if (vertices_.find(vertex) == vertices_.end()) {
-      return false;
-    }
-
-    vertices_.erase(vertex);
-    const std::unordered_set<Vertex>& sinks = edges_[vertex];
-    for (const Vertex& s : sinks) {
-      edges_[s].erase(vertex);
-    }
-
-    edges_.erase(vertex);
-    return true;
-  }
-
-  // Add an edge between the vertex1 and vertex2. Calling AddEdge on a
-  // pair of vertices which do not exist in the graph yet will result
-  // in undefined behavior.
-  //
-  // It is legal to call this method repeatedly for the same set of
-  // vertices.
-  void AddEdge(const Vertex& vertex1, const Vertex& vertex2) {
-    DCHECK(vertices_.find(vertex1) != vertices_.end());
-    DCHECK(vertices_.find(vertex2) != vertices_.end());
-
-    if (edges_[vertex1].insert(vertex2).second) {
-      edges_[vertex2].insert(vertex1);
-    }
-  }
-
-  // Calling Neighbors on a vertex not in the graph will result in
-  // undefined behaviour.
-  const std::unordered_set<Vertex>& Neighbors(const Vertex& vertex) const {
-    return FindOrDie(edges_, vertex);
-  }
-
-  const std::unordered_set<Vertex>& vertices() const { return vertices_; }
-
- private:
-  std::unordered_set<Vertex> vertices_;
-  std::unordered_map<Vertex, std::unordered_set<Vertex>> edges_;
-};
-
-// A weighted undirected graph templated over the vertex ids. Vertex
-// should be hashable and comparable.
-template <typename Vertex>
-class WeightedGraph {
- public:
-  // Add a weighted vertex. If the vertex already exists in the graph,
-  // its weight is set to the new weight.
-  void AddVertex(const Vertex& vertex, double weight) {
-    if (vertices_.find(vertex) == vertices_.end()) {
-      vertices_.insert(vertex);
-      edges_[vertex] = std::unordered_set<Vertex>();
-    }
-    vertex_weights_[vertex] = weight;
-  }
-
-  // Uses weight = 1.0. If vertex already exists, its weight is set to
-  // 1.0.
-  void AddVertex(const Vertex& vertex) { AddVertex(vertex, 1.0); }
-
-  bool RemoveVertex(const Vertex& vertex) {
-    if (vertices_.find(vertex) == vertices_.end()) {
-      return false;
-    }
-
-    vertices_.erase(vertex);
-    vertex_weights_.erase(vertex);
-    const std::unordered_set<Vertex>& sinks = edges_[vertex];
-    for (const Vertex& s : sinks) {
-      if (vertex < s) {
-        edge_weights_.erase(std::make_pair(vertex, s));
-      } else {
-        edge_weights_.erase(std::make_pair(s, vertex));
-      }
-      edges_[s].erase(vertex);
-    }
-
-    edges_.erase(vertex);
-    return true;
-  }
-
-  // Add a weighted edge between the vertex1 and vertex2. Calling
-  // AddEdge on a pair of vertices which do not exist in the graph yet
-  // will result in undefined behavior.
-  //
-  // It is legal to call this method repeatedly for the same set of
-  // vertices.
-  void AddEdge(const Vertex& vertex1, const Vertex& vertex2, double weight) {
-    DCHECK(vertices_.find(vertex1) != vertices_.end());
-    DCHECK(vertices_.find(vertex2) != vertices_.end());
-
-    if (edges_[vertex1].insert(vertex2).second) {
-      edges_[vertex2].insert(vertex1);
-    }
-
-    if (vertex1 < vertex2) {
-      edge_weights_[std::make_pair(vertex1, vertex2)] = weight;
-    } else {
-      edge_weights_[std::make_pair(vertex2, vertex1)] = weight;
-    }
-  }
-
-  // Uses weight = 1.0.
-  void AddEdge(const Vertex& vertex1, const Vertex& vertex2) {
-    AddEdge(vertex1, vertex2, 1.0);
-  }
-
-  // Calling VertexWeight on a vertex not in the graph will result in
-  // undefined behavior.
-  double VertexWeight(const Vertex& vertex) const {
-    return FindOrDie(vertex_weights_, vertex);
-  }
-
-  // Calling EdgeWeight on a pair of vertices where either one of the
-  // vertices is not present in the graph will result in undefined
-  // behaviour. If there is no edge connecting vertex1 and vertex2,
-  // the edge weight is zero.
-  double EdgeWeight(const Vertex& vertex1, const Vertex& vertex2) const {
-    if (vertex1 < vertex2) {
-      return FindWithDefault(
-          edge_weights_, std::make_pair(vertex1, vertex2), 0.0);
-    } else {
-      return FindWithDefault(
-          edge_weights_, std::make_pair(vertex2, vertex1), 0.0);
-    }
-  }
-
-  // Calling Neighbors on a vertex not in the graph will result in
-  // undefined behaviour.
-  const std::unordered_set<Vertex>& Neighbors(const Vertex& vertex) const {
-    return FindOrDie(edges_, vertex);
-  }
-
-  const std::unordered_set<Vertex>& vertices() const { return vertices_; }
-
-  static double InvalidWeight() {
-    return std::numeric_limits<double>::quiet_NaN();
-  }
-
- private:
-  std::unordered_set<Vertex> vertices_;
-  std::unordered_map<Vertex, double> vertex_weights_;
-  std::unordered_map<Vertex, std::unordered_set<Vertex>> edges_;
-  std::unordered_map<std::pair<Vertex, Vertex>, double, pair_hash>
-      edge_weights_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_GRAPH_H_
diff --git a/third_party/ceres/internal/ceres/graph_algorithms.h b/third_party/ceres/internal/ceres/graph_algorithms.h
deleted file mode 100644
index 4ebc8b3..0000000
--- a/third_party/ceres/internal/ceres/graph_algorithms.h
+++ /dev/null
@@ -1,344 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Various algorithms that operate on undirected graphs.
-
-#ifndef CERES_INTERNAL_GRAPH_ALGORITHMS_H_
-#define CERES_INTERNAL_GRAPH_ALGORITHMS_H_
-
-#include <algorithm>
-#include <memory>
-#include <unordered_map>
-#include <unordered_set>
-#include <utility>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/internal/export.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Compare two vertices of a graph by their degrees, if the degrees
-// are equal then order them by their ids.
-template <typename Vertex>
-class CERES_NO_EXPORT VertexTotalOrdering {
- public:
-  explicit VertexTotalOrdering(const Graph<Vertex>& graph) : graph_(graph) {}
-
-  bool operator()(const Vertex& lhs, const Vertex& rhs) const {
-    if (graph_.Neighbors(lhs).size() == graph_.Neighbors(rhs).size()) {
-      return lhs < rhs;
-    }
-    return graph_.Neighbors(lhs).size() < graph_.Neighbors(rhs).size();
-  }
-
- private:
-  const Graph<Vertex>& graph_;
-};
-
-template <typename Vertex>
-class VertexDegreeLessThan {
- public:
-  explicit VertexDegreeLessThan(const Graph<Vertex>& graph) : graph_(graph) {}
-
-  bool operator()(const Vertex& lhs, const Vertex& rhs) const {
-    return graph_.Neighbors(lhs).size() < graph_.Neighbors(rhs).size();
-  }
-
- private:
-  const Graph<Vertex>& graph_;
-};
-
-// Order the vertices of a graph using its (approximately) largest
-// independent set, where an independent set of a graph is a set of
-// vertices that have no edges connecting them. The maximum
-// independent set problem is NP-Hard, but there are effective
-// approximation algorithms available. The implementation here uses a
-// breadth first search that explores the vertices in order of
-// increasing degree. The same idea is used by Saad & Li in "MIQR: A
-// multilevel incomplete QR preconditioner for large sparse
-// least-squares problems", SIMAX, 2007.
-//
-// Given a undirected graph G(V,E), the algorithm is a greedy BFS
-// search where the vertices are explored in increasing order of their
-// degree. The output vector ordering contains elements of S in
-// increasing order of their degree, followed by elements of V - S in
-// increasing order of degree. The return value of the function is the
-// cardinality of S.
-template <typename Vertex>
-int IndependentSetOrdering(const Graph<Vertex>& graph,
-                           std::vector<Vertex>* ordering) {
-  const std::unordered_set<Vertex>& vertices = graph.vertices();
-  const int num_vertices = vertices.size();
-
-  CHECK(ordering != nullptr);
-  ordering->clear();
-  ordering->reserve(num_vertices);
-
-  // Colors for labeling the graph during the BFS.
-  const char kWhite = 0;
-  const char kGrey = 1;
-  const char kBlack = 2;
-
-  // Mark all vertices white.
-  std::unordered_map<Vertex, char> vertex_color;
-  std::vector<Vertex> vertex_queue;
-  for (const Vertex& vertex : vertices) {
-    vertex_color[vertex] = kWhite;
-    vertex_queue.push_back(vertex);
-  }
-
-  std::sort(vertex_queue.begin(),
-            vertex_queue.end(),
-            VertexTotalOrdering<Vertex>(graph));
-
-  // Iterate over vertex_queue. Pick the first white vertex, add it
-  // to the independent set. Mark it black and its neighbors grey.
-  for (const Vertex& vertex : vertex_queue) {
-    if (vertex_color[vertex] != kWhite) {
-      continue;
-    }
-
-    ordering->push_back(vertex);
-    vertex_color[vertex] = kBlack;
-    const std::unordered_set<Vertex>& neighbors = graph.Neighbors(vertex);
-    for (const Vertex& neighbor : neighbors) {
-      vertex_color[neighbor] = kGrey;
-    }
-  }
-
-  int independent_set_size = ordering->size();
-
-  // Iterate over the vertices and add all the grey vertices to the
-  // ordering. At this stage there should only be black or grey
-  // vertices in the graph.
-  for (const Vertex& vertex : vertex_queue) {
-    DCHECK(vertex_color[vertex] != kWhite);
-    if (vertex_color[vertex] != kBlack) {
-      ordering->push_back(vertex);
-    }
-  }
-
-  CHECK_EQ(ordering->size(), num_vertices);
-  return independent_set_size;
-}
-
-// Same as above with one important difference. The ordering parameter
-// is an input/output parameter which carries an initial ordering of
-// the vertices of the graph. The greedy independent set algorithm
-// starts by sorting the vertices in increasing order of their
-// degree. The input ordering is used to stabilize this sort, i.e., if
-// two vertices have the same degree then they are ordered in the same
-// order in which they occur in "ordering".
-//
-// This is useful in eliminating non-determinism from the Schur
-// ordering algorithm over all.
-template <typename Vertex>
-int StableIndependentSetOrdering(const Graph<Vertex>& graph,
-                                 std::vector<Vertex>* ordering) {
-  CHECK(ordering != nullptr);
-  const std::unordered_set<Vertex>& vertices = graph.vertices();
-  const int num_vertices = vertices.size();
-  CHECK_EQ(vertices.size(), ordering->size());
-
-  // Colors for labeling the graph during the BFS.
-  const char kWhite = 0;
-  const char kGrey = 1;
-  const char kBlack = 2;
-
-  std::vector<Vertex> vertex_queue(*ordering);
-
-  std::stable_sort(vertex_queue.begin(),
-                   vertex_queue.end(),
-                   VertexDegreeLessThan<Vertex>(graph));
-
-  // Mark all vertices white.
-  std::unordered_map<Vertex, char> vertex_color;
-  for (const Vertex& vertex : vertices) {
-    vertex_color[vertex] = kWhite;
-  }
-
-  ordering->clear();
-  ordering->reserve(num_vertices);
-  // Iterate over vertex_queue. Pick the first white vertex, add it
-  // to the independent set. Mark it black and its neighbors grey.
-  for (int i = 0; i < vertex_queue.size(); ++i) {
-    const Vertex& vertex = vertex_queue[i];
-    if (vertex_color[vertex] != kWhite) {
-      continue;
-    }
-
-    ordering->push_back(vertex);
-    vertex_color[vertex] = kBlack;
-    const std::unordered_set<Vertex>& neighbors = graph.Neighbors(vertex);
-    for (const Vertex& neighbor : neighbors) {
-      vertex_color[neighbor] = kGrey;
-    }
-  }
-
-  int independent_set_size = ordering->size();
-
-  // Iterate over the vertices and add all the grey vertices to the
-  // ordering. At this stage there should only be black or grey
-  // vertices in the graph.
-  for (const Vertex& vertex : vertex_queue) {
-    DCHECK(vertex_color[vertex] != kWhite);
-    if (vertex_color[vertex] != kBlack) {
-      ordering->push_back(vertex);
-    }
-  }
-
-  CHECK_EQ(ordering->size(), num_vertices);
-  return independent_set_size;
-}
-
-// Find the connected component for a vertex implemented using the
-// find and update operation for disjoint-set. Recursively traverse
-// the disjoint set structure till you reach a vertex whose connected
-// component has the same id as the vertex itself. Along the way
-// update the connected components of all the vertices. This updating
-// is what gives this data structure its efficiency.
-template <typename Vertex>
-Vertex FindConnectedComponent(const Vertex& vertex,
-                              std::unordered_map<Vertex, Vertex>* union_find) {
-  auto it = union_find->find(vertex);
-  DCHECK(it != union_find->end());
-  if (it->second != vertex) {
-    it->second = FindConnectedComponent(it->second, union_find);
-  }
-
-  return it->second;
-}
-
-// Compute a degree two constrained Maximum Spanning Tree/forest of
-// the input graph. Caller owns the result.
-//
-// Finding degree 2 spanning tree of a graph is not always
-// possible. For example a star graph, i.e. a graph with n-nodes
-// where one node is connected to the other n-1 nodes does not have
-// a any spanning trees of degree less than n-1.Even if such a tree
-// exists, finding such a tree is NP-Hard.
-
-// We get around both of these problems by using a greedy, degree
-// constrained variant of Kruskal's algorithm. We start with a graph
-// G_T with the same vertex set V as the input graph G(V,E) but an
-// empty edge set. We then iterate over the edges of G in decreasing
-// order of weight, adding them to G_T if doing so does not create a
-// cycle in G_T} and the degree of all the vertices in G_T remains
-// bounded by two. This O(|E|) algorithm results in a degree-2
-// spanning forest, or a collection of linear paths that span the
-// graph G.
-template <typename Vertex>
-std::unique_ptr<WeightedGraph<Vertex>> Degree2MaximumSpanningForest(
-    const WeightedGraph<Vertex>& graph) {
-  // Array of edges sorted in decreasing order of their weights.
-  std::vector<std::pair<double, std::pair<Vertex, Vertex>>> weighted_edges;
-  auto forest = std::make_unique<WeightedGraph<Vertex>>();
-
-  // Disjoint-set to keep track of the connected components in the
-  // maximum spanning tree.
-  std::unordered_map<Vertex, Vertex> disjoint_set;
-
-  // Sort of the edges in the graph in decreasing order of their
-  // weight. Also add the vertices of the graph to the Maximum
-  // Spanning Tree graph and set each vertex to be its own connected
-  // component in the disjoint_set structure.
-  const std::unordered_set<Vertex>& vertices = graph.vertices();
-  for (const Vertex& vertex1 : vertices) {
-    forest->AddVertex(vertex1, graph.VertexWeight(vertex1));
-    disjoint_set[vertex1] = vertex1;
-
-    const std::unordered_set<Vertex>& neighbors = graph.Neighbors(vertex1);
-    for (const Vertex& vertex2 : neighbors) {
-      if (vertex1 >= vertex2) {
-        continue;
-      }
-      const double weight = graph.EdgeWeight(vertex1, vertex2);
-      weighted_edges.push_back(
-          std::make_pair(weight, std::make_pair(vertex1, vertex2)));
-    }
-  }
-
-  // The elements of this vector, are pairs<edge_weight,
-  // edge>. Sorting it using the reverse iterators gives us the edges
-  // in decreasing order of edges.
-  std::sort(weighted_edges.rbegin(), weighted_edges.rend());
-
-  // Greedily add edges to the spanning tree/forest as long as they do
-  // not violate the degree/cycle constraint.
-  for (int i = 0; i < weighted_edges.size(); ++i) {
-    const std::pair<Vertex, Vertex>& edge = weighted_edges[i].second;
-    const Vertex vertex1 = edge.first;
-    const Vertex vertex2 = edge.second;
-
-    // Check if either of the vertices are of degree 2 already, in
-    // which case adding this edge will violate the degree 2
-    // constraint.
-    if ((forest->Neighbors(vertex1).size() == 2) ||
-        (forest->Neighbors(vertex2).size() == 2)) {
-      continue;
-    }
-
-    // Find the id of the connected component to which the two
-    // vertices belong to. If the id is the same, it means that the
-    // two of them are already connected to each other via some other
-    // vertex, and adding this edge will create a cycle.
-    Vertex root1 = FindConnectedComponent(vertex1, &disjoint_set);
-    Vertex root2 = FindConnectedComponent(vertex2, &disjoint_set);
-
-    if (root1 == root2) {
-      continue;
-    }
-
-    // This edge can be added, add an edge in either direction with
-    // the same weight as the original graph.
-    const double edge_weight = graph.EdgeWeight(vertex1, vertex2);
-    forest->AddEdge(vertex1, vertex2, edge_weight);
-    forest->AddEdge(vertex2, vertex1, edge_weight);
-
-    // Connected the two connected components by updating the
-    // disjoint_set structure. Always connect the connected component
-    // with the greater index with the connected component with the
-    // smaller index. This should ensure shallower trees, for quicker
-    // lookup.
-    if (root2 < root1) {
-      std::swap(root1, root2);
-    }
-
-    disjoint_set[root2] = root1;
-  }
-  return forest;
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_GRAPH_ALGORITHMS_H_
diff --git a/third_party/ceres/internal/ceres/graph_algorithms_test.cc b/third_party/ceres/internal/ceres/graph_algorithms_test.cc
deleted file mode 100644
index 6c86668..0000000
--- a/third_party/ceres/internal/ceres/graph_algorithms_test.cc
+++ /dev/null
@@ -1,245 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/graph_algorithms.h"
-
-#include <algorithm>
-#include <memory>
-#include <unordered_set>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/internal/export.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(IndependentSetOrdering, Chain) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddVertex(2);
-  graph.AddVertex(3);
-  graph.AddVertex(4);
-
-  graph.AddEdge(0, 1);
-  graph.AddEdge(1, 2);
-  graph.AddEdge(2, 3);
-  graph.AddEdge(3, 4);
-
-  // 0-1-2-3-4
-  // 0, 2, 4 should be in the independent set.
-  std::vector<int> ordering;
-  int independent_set_size = IndependentSetOrdering(graph, &ordering);
-
-  sort(ordering.begin(), ordering.begin() + 3);
-  sort(ordering.begin() + 3, ordering.end());
-
-  EXPECT_EQ(independent_set_size, 3);
-  EXPECT_EQ(ordering.size(), 5);
-  EXPECT_EQ(ordering[0], 0);
-  EXPECT_EQ(ordering[1], 2);
-  EXPECT_EQ(ordering[2], 4);
-  EXPECT_EQ(ordering[3], 1);
-  EXPECT_EQ(ordering[4], 3);
-}
-
-TEST(IndependentSetOrdering, Star) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddVertex(2);
-  graph.AddVertex(3);
-  graph.AddVertex(4);
-
-  graph.AddEdge(0, 1);
-  graph.AddEdge(0, 2);
-  graph.AddEdge(0, 3);
-  graph.AddEdge(0, 4);
-
-  //      1
-  //      |
-  //    4-0-2
-  //      |
-  //      3
-  // 1, 2, 3, 4 should be in the independent set.
-  std::vector<int> ordering;
-  int independent_set_size = IndependentSetOrdering(graph, &ordering);
-  EXPECT_EQ(independent_set_size, 4);
-  EXPECT_EQ(ordering.size(), 5);
-  EXPECT_EQ(ordering[4], 0);
-  sort(ordering.begin(), ordering.begin() + 4);
-  EXPECT_EQ(ordering[0], 1);
-  EXPECT_EQ(ordering[1], 2);
-  EXPECT_EQ(ordering[2], 3);
-  EXPECT_EQ(ordering[3], 4);
-}
-
-TEST(Degree2MaximumSpanningForest, PreserveWeights) {
-  WeightedGraph<int> graph;
-  graph.AddVertex(0, 1.0);
-  graph.AddVertex(1, 2.0);
-  graph.AddEdge(0, 1, 0.5);
-  graph.AddEdge(1, 0, 0.5);
-
-  std::unique_ptr<WeightedGraph<int>> forest(
-      Degree2MaximumSpanningForest(graph));
-
-  const std::unordered_set<int>& vertices = forest->vertices();
-  EXPECT_EQ(vertices.size(), 2);
-  EXPECT_EQ(forest->VertexWeight(0), 1.0);
-  EXPECT_EQ(forest->VertexWeight(1), 2.0);
-  EXPECT_EQ(forest->Neighbors(0).size(), 1.0);
-  EXPECT_EQ(forest->EdgeWeight(0, 1), 0.5);
-}
-
-TEST(Degree2MaximumSpanningForest, StarGraph) {
-  WeightedGraph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddVertex(2);
-  graph.AddVertex(3);
-  graph.AddVertex(4);
-
-  graph.AddEdge(0, 1, 1.0);
-  graph.AddEdge(0, 2, 2.0);
-  graph.AddEdge(0, 3, 3.0);
-  graph.AddEdge(0, 4, 4.0);
-
-  std::unique_ptr<WeightedGraph<int>> forest(
-      Degree2MaximumSpanningForest(graph));
-  const std::unordered_set<int>& vertices = forest->vertices();
-  EXPECT_EQ(vertices.size(), 5);
-
-  {
-    const std::unordered_set<int>& neighbors = forest->Neighbors(0);
-    EXPECT_EQ(neighbors.size(), 2);
-    EXPECT_TRUE(neighbors.find(4) != neighbors.end());
-    EXPECT_TRUE(neighbors.find(3) != neighbors.end());
-  }
-
-  {
-    const std::unordered_set<int>& neighbors = forest->Neighbors(3);
-    EXPECT_EQ(neighbors.size(), 1);
-    EXPECT_TRUE(neighbors.find(0) != neighbors.end());
-  }
-
-  {
-    const std::unordered_set<int>& neighbors = forest->Neighbors(4);
-    EXPECT_EQ(neighbors.size(), 1);
-    EXPECT_TRUE(neighbors.find(0) != neighbors.end());
-  }
-
-  {
-    const std::unordered_set<int>& neighbors = forest->Neighbors(1);
-    EXPECT_EQ(neighbors.size(), 0);
-  }
-
-  {
-    const std::unordered_set<int>& neighbors = forest->Neighbors(2);
-    EXPECT_EQ(neighbors.size(), 0);
-  }
-}
-
-TEST(VertexTotalOrdering, TotalOrdering) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddVertex(2);
-  graph.AddVertex(3);
-
-  // 0-1
-  //   |
-  // 2-3
-  // 0,1 and 2 have degree 1 and 3 has degree 2.
-  graph.AddEdge(0, 1);
-  graph.AddEdge(2, 3);
-  VertexTotalOrdering<int> less_than(graph);
-
-  for (int i = 0; i < 4; ++i) {
-    EXPECT_FALSE(less_than(i, i)) << "Failing vertex: " << i;
-    for (int j = 0; j < 4; ++j) {
-      if (i != j) {
-        EXPECT_TRUE(less_than(i, j) ^ less_than(j, i))
-            << "Failing vertex pair: " << i << " " << j;
-      }
-    }
-  }
-
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_TRUE(less_than(i, 3));
-    EXPECT_FALSE(less_than(3, i));
-  }
-}
-
-TEST(StableIndependentSet, BreakTies) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddVertex(2);
-  graph.AddVertex(3);
-
-  graph.AddEdge(0, 1);
-  graph.AddEdge(0, 2);
-  graph.AddEdge(0, 3);
-  graph.AddEdge(1, 2);
-  graph.AddEdge(1, 3);
-  graph.AddEdge(2, 3);
-
-  // Since this is a completely connected graph, the independent set
-  // contains exactly one vertex. StableIndependentSetOrdering
-  // guarantees that it will always be the first vertex in the
-  // ordering vector.
-  {
-    std::vector<int> ordering;
-    ordering.push_back(0);
-    ordering.push_back(1);
-    ordering.push_back(2);
-    ordering.push_back(3);
-    const int independent_set_size =
-        StableIndependentSetOrdering(graph, &ordering);
-    EXPECT_EQ(independent_set_size, 1);
-    EXPECT_EQ(ordering[0], 0);
-  }
-
-  {
-    std::vector<int> ordering;
-    ordering.push_back(1);
-    ordering.push_back(0);
-    ordering.push_back(2);
-    ordering.push_back(3);
-    const int independent_set_size =
-        StableIndependentSetOrdering(graph, &ordering);
-    EXPECT_EQ(independent_set_size, 1);
-    EXPECT_EQ(ordering[0], 1);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/graph_test.cc b/third_party/ceres/internal/ceres/graph_test.cc
deleted file mode 100644
index 8c8afc6..0000000
--- a/third_party/ceres/internal/ceres/graph_test.cc
+++ /dev/null
@@ -1,150 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/graph.h"
-
-#include <unordered_set>
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(Graph, EmptyGraph) {
-  Graph<int> graph;
-  EXPECT_EQ(graph.vertices().size(), 0);
-}
-
-TEST(Graph, AddVertexAndEdge) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddEdge(0, 1);
-
-  const std::unordered_set<int>& vertices = graph.vertices();
-  EXPECT_EQ(vertices.size(), 2);
-  EXPECT_EQ(graph.Neighbors(0).size(), 1);
-  EXPECT_EQ(graph.Neighbors(1).size(), 1);
-}
-
-TEST(Graph, AddVertexIdempotence) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddEdge(0, 1);
-
-  const std::unordered_set<int>& vertices = graph.vertices();
-
-  EXPECT_EQ(vertices.size(), 2);
-
-  // Try adding the vertex again with a new weight.
-  graph.AddVertex(0);
-  EXPECT_EQ(vertices.size(), 2);
-
-  // Rest of the graph remains the same.
-  EXPECT_EQ(graph.Neighbors(0).size(), 1);
-  EXPECT_EQ(graph.Neighbors(1).size(), 1);
-}
-
-TEST(Graph, DieOnNonExistentVertex) {
-  Graph<int> graph;
-  graph.AddVertex(0);
-  graph.AddVertex(1);
-  graph.AddEdge(0, 1);
-
-  EXPECT_DEATH_IF_SUPPORTED(graph.Neighbors(2), "key not found");
-}
-
-TEST(WeightedGraph, EmptyGraph) {
-  WeightedGraph<int> graph;
-  EXPECT_EQ(graph.vertices().size(), 0);
-}
-
-TEST(WeightedGraph, AddVertexAndEdge) {
-  WeightedGraph<int> graph;
-  graph.AddVertex(0, 1.0);
-  graph.AddVertex(1, 2.0);
-  graph.AddEdge(0, 1, 0.5);
-
-  const std::unordered_set<int>& vertices = graph.vertices();
-  EXPECT_EQ(vertices.size(), 2);
-  EXPECT_EQ(graph.VertexWeight(0), 1.0);
-  EXPECT_EQ(graph.VertexWeight(1), 2.0);
-  EXPECT_EQ(graph.Neighbors(0).size(), 1);
-  EXPECT_EQ(graph.Neighbors(1).size(), 1);
-  EXPECT_EQ(graph.EdgeWeight(0, 1), 0.5);
-  EXPECT_EQ(graph.EdgeWeight(1, 0), 0.5);
-}
-
-TEST(WeightedGraph, AddVertexIdempotence) {
-  WeightedGraph<int> graph;
-  graph.AddVertex(0, 1.0);
-  graph.AddVertex(1, 2.0);
-  graph.AddEdge(0, 1, 0.5);
-
-  const std::unordered_set<int>& vertices = graph.vertices();
-
-  EXPECT_EQ(vertices.size(), 2);
-
-  // Try adding the vertex again with a new weight.
-  graph.AddVertex(0, 3.0);
-  EXPECT_EQ(vertices.size(), 2);
-
-  // The vertex weight is reset.
-  EXPECT_EQ(graph.VertexWeight(0), 3.0);
-
-  // Rest of the graph remains the same.
-  EXPECT_EQ(graph.VertexWeight(1), 2.0);
-  EXPECT_EQ(graph.Neighbors(0).size(), 1);
-  EXPECT_EQ(graph.Neighbors(1).size(), 1);
-  EXPECT_EQ(graph.EdgeWeight(0, 1), 0.5);
-  EXPECT_EQ(graph.EdgeWeight(1, 0), 0.5);
-}
-
-TEST(WeightedGraph, DieOnNonExistentVertex) {
-  WeightedGraph<int> graph;
-  graph.AddVertex(0, 1.0);
-  graph.AddVertex(1, 2.0);
-  graph.AddEdge(0, 1, 0.5);
-
-  EXPECT_DEATH_IF_SUPPORTED(graph.VertexWeight(2), "key not found");
-  EXPECT_DEATH_IF_SUPPORTED(graph.Neighbors(2), "key not found");
-}
-
-TEST(WeightedGraph, NonExistentEdge) {
-  WeightedGraph<int> graph;
-  graph.AddVertex(0, 1.0);
-  graph.AddVertex(1, 2.0);
-  graph.AddEdge(0, 1, 0.5);
-
-  // Default value for non-existent edges is 0.
-  EXPECT_EQ(graph.EdgeWeight(2, 3), 0);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/gtest/.clang-format b/third_party/ceres/internal/ceres/gtest/.clang-format
deleted file mode 100644
index 9d15924..0000000
--- a/third_party/ceres/internal/ceres/gtest/.clang-format
+++ /dev/null
@@ -1,2 +0,0 @@
-DisableFormat: true
-SortIncludes: false
diff --git a/third_party/ceres/internal/ceres/gtest/gtest.h b/third_party/ceres/internal/ceres/gtest/gtest.h
deleted file mode 100644
index e749057..0000000
--- a/third_party/ceres/internal/ceres/gtest/gtest.h
+++ /dev/null
@@ -1,12377 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the public API for Google Test.  It should be
-// included by any test program that uses Google Test.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user
-// program!
-//
-// Acknowledgment: Google Test borrowed the idea of automatic test
-// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
-// easyUnit framework.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_H_
-
-#include <cstddef>
-#include <limits>
-#include <memory>
-#include <ostream>
-#include <type_traits>
-#include <vector>
-
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file declares functions and macros used internally by
-// Google Test.  They are subject to change without notice.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Low-level types and utilities for porting Google Test to various
-// platforms.  All macros ending with _ and symbols defined in an
-// internal namespace are subject to change without notice.  Code
-// outside Google Test MUST NOT USE THEM DIRECTLY.  Macros that don't
-// end with _ are part of Google Test's public API and can be used by
-// code outside Google Test.
-//
-// This file is fundamental to Google Test.  All other Google Test source
-// files are expected to #include this.  Therefore, it cannot #include
-// any other Google Test header.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-
-// Environment-describing macros
-// -----------------------------
-//
-// Google Test can be used in many different environments.  Macros in
-// this section tell Google Test what kind of environment it is being
-// used in, such that Google Test can provide environment-specific
-// features and implementations.
-//
-// Google Test tries to automatically detect the properties of its
-// environment, so users usually don't need to worry about these
-// macros.  However, the automatic detection is not perfect.
-// Sometimes it's necessary for a user to define some of the following
-// macros in the build script to override Google Test's decisions.
-//
-// If the user doesn't define a macro in the list, Google Test will
-// provide a default definition.  After this header is #included, all
-// macros in this list will be defined to either 1 or 0.
-//
-// Notes to maintainers:
-//   - Each macro here is a user-tweakable knob; do not grow the list
-//     lightly.
-//   - Use #if to key off these macros.  Don't use #ifdef or "#if
-//     defined(...)", which will not work as these macros are ALWAYS
-//     defined.
-//
-//   GTEST_HAS_CLONE          - Define it to 1/0 to indicate that clone(2)
-//                              is/isn't available.
-//   GTEST_HAS_EXCEPTIONS     - Define it to 1/0 to indicate that exceptions
-//                              are enabled.
-//   GTEST_HAS_POSIX_RE       - Define it to 1/0 to indicate that POSIX regular
-//                              expressions are/aren't available.
-//   GTEST_HAS_PTHREAD        - Define it to 1/0 to indicate that <pthread.h>
-//                              is/isn't available.
-//   GTEST_HAS_RTTI           - Define it to 1/0 to indicate that RTTI is/isn't
-//                              enabled.
-//   GTEST_HAS_STD_WSTRING    - Define it to 1/0 to indicate that
-//                              std::wstring does/doesn't work (Google Test can
-//                              be used where std::wstring is unavailable).
-//   GTEST_HAS_SEH            - Define it to 1/0 to indicate whether the
-//                              compiler supports Microsoft's "Structured
-//                              Exception Handling".
-//   GTEST_HAS_STREAM_REDIRECTION
-//                            - Define it to 1/0 to indicate whether the
-//                              platform supports I/O stream redirection using
-//                              dup() and dup2().
-//   GTEST_LINKED_AS_SHARED_LIBRARY
-//                            - Define to 1 when compiling tests that use
-//                              Google Test as a shared library (known as
-//                              DLL on Windows).
-//   GTEST_CREATE_SHARED_LIBRARY
-//                            - Define to 1 when compiling Google Test itself
-//                              as a shared library.
-//   GTEST_DEFAULT_DEATH_TEST_STYLE
-//                            - The default value of --gtest_death_test_style.
-//                              The legacy default has been "fast" in the open
-//                              source version since 2008. The recommended value
-//                              is "threadsafe", and can be set in
-//                              custom/gtest-port.h.
-
-// Platform-indicating macros
-// --------------------------
-//
-// Macros indicating the platform on which Google Test is being used
-// (a macro is defined to 1 if compiled on the given platform;
-// otherwise UNDEFINED -- it's never defined to 0.).  Google Test
-// defines these macros automatically.  Code outside Google Test MUST
-// NOT define them.
-//
-//   GTEST_OS_AIX      - IBM AIX
-//   GTEST_OS_CYGWIN   - Cygwin
-//   GTEST_OS_DRAGONFLY - DragonFlyBSD
-//   GTEST_OS_FREEBSD  - FreeBSD
-//   GTEST_OS_FUCHSIA  - Fuchsia
-//   GTEST_OS_GNU_KFREEBSD - GNU/kFreeBSD
-//   GTEST_OS_HAIKU    - Haiku
-//   GTEST_OS_HPUX     - HP-UX
-//   GTEST_OS_LINUX    - Linux
-//     GTEST_OS_LINUX_ANDROID - Google Android
-//   GTEST_OS_MAC      - Mac OS X
-//     GTEST_OS_IOS    - iOS
-//   GTEST_OS_NACL     - Google Native Client (NaCl)
-//   GTEST_OS_NETBSD   - NetBSD
-//   GTEST_OS_OPENBSD  - OpenBSD
-//   GTEST_OS_OS2      - OS/2
-//   GTEST_OS_QNX      - QNX
-//   GTEST_OS_SOLARIS  - Sun Solaris
-//   GTEST_OS_WINDOWS  - Windows (Desktop, MinGW, or Mobile)
-//     GTEST_OS_WINDOWS_DESKTOP  - Windows Desktop
-//     GTEST_OS_WINDOWS_MINGW    - MinGW
-//     GTEST_OS_WINDOWS_MOBILE   - Windows Mobile
-//     GTEST_OS_WINDOWS_PHONE    - Windows Phone
-//     GTEST_OS_WINDOWS_RT       - Windows Store App/WinRT
-//   GTEST_OS_ZOS      - z/OS
-//
-// Among the platforms, Cygwin, Linux, Mac OS X, and Windows have the
-// most stable support.  Since core members of the Google Test project
-// don't have access to other platforms, support for them may be less
-// stable.  If you notice any problems on your platform, please notify
-// googletestframework@googlegroups.com (patches for fixing them are
-// even more welcome!).
-//
-// It is possible that none of the GTEST_OS_* macros are defined.
-
-// Feature-indicating macros
-// -------------------------
-//
-// Macros indicating which Google Test features are available (a macro
-// is defined to 1 if the corresponding feature is supported;
-// otherwise UNDEFINED -- it's never defined to 0.).  Google Test
-// defines these macros automatically.  Code outside Google Test MUST
-// NOT define them.
-//
-// These macros are public so that portable tests can be written.
-// Such tests typically surround code using a feature with an #if
-// which controls that code.  For example:
-//
-// #if GTEST_HAS_DEATH_TEST
-//   EXPECT_DEATH(DoSomethingDeadly());
-// #endif
-//
-//   GTEST_HAS_DEATH_TEST   - death tests
-//   GTEST_HAS_TYPED_TEST   - typed tests
-//   GTEST_HAS_TYPED_TEST_P - type-parameterized tests
-//   GTEST_IS_THREADSAFE    - Google Test is thread-safe.
-//   GOOGLETEST_CM0007 DO NOT DELETE
-//   GTEST_USES_POSIX_RE    - enhanced POSIX regex is used. Do not confuse with
-//                            GTEST_HAS_POSIX_RE (see above) which users can
-//                            define themselves.
-//   GTEST_USES_SIMPLE_RE   - our own simple regex is used;
-//                            the above RE\b(s) are mutually exclusive.
-
-// Misc public macros
-// ------------------
-//
-//   GTEST_FLAG(flag_name)  - references the variable corresponding to
-//                            the given Google Test flag.
-
-// Internal utilities
-// ------------------
-//
-// The following macros and utilities are for Google Test's INTERNAL
-// use only.  Code outside Google Test MUST NOT USE THEM DIRECTLY.
-//
-// Macros for basic C++ coding:
-//   GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
-//   GTEST_ATTRIBUTE_UNUSED_  - declares that a class' instances or a
-//                              variable don't have to be used.
-//   GTEST_DISALLOW_ASSIGN_   - disables copy operator=.
-//   GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
-//   GTEST_DISALLOW_MOVE_ASSIGN_   - disables move operator=.
-//   GTEST_DISALLOW_MOVE_AND_ASSIGN_ - disables move ctor and operator=.
-//   GTEST_MUST_USE_RESULT_   - declares that a function's result must be used.
-//   GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
-//                                        suppressed (constant conditional).
-//   GTEST_INTENTIONAL_CONST_COND_POP_  - finish code section where MSVC C4127
-//                                        is suppressed.
-//   GTEST_INTERNAL_HAS_ANY - for enabling UniversalPrinter<std::any> or
-//                            UniversalPrinter<absl::any> specializations.
-//   GTEST_INTERNAL_HAS_OPTIONAL - for enabling UniversalPrinter<std::optional>
-//   or
-//                                 UniversalPrinter<absl::optional>
-//                                 specializations.
-//   GTEST_INTERNAL_HAS_STRING_VIEW - for enabling Matcher<std::string_view> or
-//                                    Matcher<absl::string_view>
-//                                    specializations.
-//   GTEST_INTERNAL_HAS_VARIANT - for enabling UniversalPrinter<std::variant> or
-//                                UniversalPrinter<absl::variant>
-//                                specializations.
-//
-// Synchronization:
-//   Mutex, MutexLock, ThreadLocal, GetThreadCount()
-//                            - synchronization primitives.
-//
-// Regular expressions:
-//   RE             - a simple regular expression class using the POSIX
-//                    Extended Regular Expression syntax on UNIX-like platforms
-//                    GOOGLETEST_CM0008 DO NOT DELETE
-//                    or a reduced regular exception syntax on other
-//                    platforms, including Windows.
-// Logging:
-//   GTEST_LOG_()   - logs messages at the specified severity level.
-//   LogToStderr()  - directs all log messages to stderr.
-//   FlushInfoLog() - flushes informational log messages.
-//
-// Stdout and stderr capturing:
-//   CaptureStdout()     - starts capturing stdout.
-//   GetCapturedStdout() - stops capturing stdout and returns the captured
-//                         string.
-//   CaptureStderr()     - starts capturing stderr.
-//   GetCapturedStderr() - stops capturing stderr and returns the captured
-//                         string.
-//
-// Integer types:
-//   TypeWithSize   - maps an integer to a int type.
-//   TimeInMillis   - integers of known sizes.
-//   BiggestInt     - the biggest signed integer type.
-//
-// Command-line utilities:
-//   GTEST_DECLARE_*()  - declares a flag.
-//   GTEST_DEFINE_*()   - defines a flag.
-//   GetInjectableArgvs() - returns the command line as a vector of strings.
-//
-// Environment variable utilities:
-//   GetEnv()             - gets the value of an environment variable.
-//   BoolFromGTestEnv()   - parses a bool environment variable.
-//   Int32FromGTestEnv()  - parses an int32_t environment variable.
-//   StringFromGTestEnv() - parses a string environment variable.
-//
-// Deprecation warnings:
-//   GTEST_INTERNAL_DEPRECATED(message) - attribute marking a function as
-//                                        deprecated; calling a marked function
-//                                        should generate a compiler warning
-
-#include <ctype.h>   // for isspace, etc
-#include <stddef.h>  // for ptrdiff_t
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <cerrno>
-#include <cstdint>
-#include <limits>
-#include <type_traits>
-
-#ifndef _WIN32_WCE
-# include <sys/types.h>
-# include <sys/stat.h>
-#endif  // !_WIN32_WCE
-
-#if defined __APPLE__
-# include <AvailabilityMacros.h>
-# include <TargetConditionals.h>
-#endif
-
-#include <iostream>  // NOLINT
-#include <locale>
-#include <memory>
-#include <string>  // NOLINT
-#include <tuple>
-#include <vector>  // NOLINT
-
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the GTEST_OS_* macro.
-// It is separate from gtest-port.h so that custom/gtest-port.h can include it.
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-
-// Determines the platform on which Google Test is compiled.
-#ifdef __CYGWIN__
-# define GTEST_OS_CYGWIN 1
-# elif defined(__MINGW__) || defined(__MINGW32__) || defined(__MINGW64__)
-#  define GTEST_OS_WINDOWS_MINGW 1
-#  define GTEST_OS_WINDOWS 1
-#elif defined _WIN32
-# define GTEST_OS_WINDOWS 1
-# ifdef _WIN32_WCE
-#  define GTEST_OS_WINDOWS_MOBILE 1
-# elif defined(WINAPI_FAMILY)
-#  include <winapifamily.h>
-#  if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-#   define GTEST_OS_WINDOWS_DESKTOP 1
-#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
-#   define GTEST_OS_WINDOWS_PHONE 1
-#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
-#   define GTEST_OS_WINDOWS_RT 1
-#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
-#   define GTEST_OS_WINDOWS_PHONE 1
-#   define GTEST_OS_WINDOWS_TV_TITLE 1
-#  else
-    // WINAPI_FAMILY defined but no known partition matched.
-    // Default to desktop.
-#   define GTEST_OS_WINDOWS_DESKTOP 1
-#  endif
-# else
-#  define GTEST_OS_WINDOWS_DESKTOP 1
-# endif  // _WIN32_WCE
-#elif defined __OS2__
-# define GTEST_OS_OS2 1
-#elif defined __APPLE__
-# define GTEST_OS_MAC 1
-# include <TargetConditionals.h>
-# if TARGET_OS_IPHONE
-#  define GTEST_OS_IOS 1
-# endif
-#elif defined __DragonFly__
-# define GTEST_OS_DRAGONFLY 1
-#elif defined __FreeBSD__
-# define GTEST_OS_FREEBSD 1
-#elif defined __Fuchsia__
-# define GTEST_OS_FUCHSIA 1
-#elif defined(__GLIBC__) && defined(__FreeBSD_kernel__)
-# define GTEST_OS_GNU_KFREEBSD 1
-#elif defined __linux__
-# define GTEST_OS_LINUX 1
-# if defined __ANDROID__
-#  define GTEST_OS_LINUX_ANDROID 1
-# endif
-#elif defined __MVS__
-# define GTEST_OS_ZOS 1
-#elif defined(__sun) && defined(__SVR4)
-# define GTEST_OS_SOLARIS 1
-#elif defined(_AIX)
-# define GTEST_OS_AIX 1
-#elif defined(__hpux)
-# define GTEST_OS_HPUX 1
-#elif defined __native_client__
-# define GTEST_OS_NACL 1
-#elif defined __NetBSD__
-# define GTEST_OS_NETBSD 1
-#elif defined __OpenBSD__
-# define GTEST_OS_OPENBSD 1
-#elif defined __QNX__
-# define GTEST_OS_QNX 1
-#elif defined(__HAIKU__)
-#define GTEST_OS_HAIKU 1
-#elif defined ESP8266
-#define GTEST_OS_ESP8266 1
-#elif defined ESP32
-#define GTEST_OS_ESP32 1
-#elif defined(__XTENSA__)
-#define GTEST_OS_XTENSA 1
-#endif  // __CYGWIN__
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-
-#if !defined(GTEST_DEV_EMAIL_)
-# define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
-# define GTEST_FLAG_PREFIX_ "gtest_"
-# define GTEST_FLAG_PREFIX_DASH_ "gtest-"
-# define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
-# define GTEST_NAME_ "Google Test"
-# define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
-#endif  // !defined(GTEST_DEV_EMAIL_)
-
-#if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-# define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
-#endif  // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-
-// Determines the version of gcc that is used to compile this.
-#ifdef __GNUC__
-// 40302 means version 4.3.2.
-# define GTEST_GCC_VER_ \
-    (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
-#endif  // __GNUC__
-
-// Macros for disabling Microsoft Visual C++ warnings.
-//
-//   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
-//   /* code that triggers warnings C4800 and C4385 */
-//   GTEST_DISABLE_MSC_WARNINGS_POP_()
-#if defined(_MSC_VER)
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
-    __pragma(warning(push))                        \
-    __pragma(warning(disable: warnings))
-# define GTEST_DISABLE_MSC_WARNINGS_POP_()          \
-    __pragma(warning(pop))
-#else
-// Not all compilers are MSVC
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
-# define GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-// Clang on Windows does not understand MSVC's pragma warning.
-// We need clang-specific way to disable function deprecation warning.
-#ifdef __clang__
-# define GTEST_DISABLE_MSC_DEPRECATED_PUSH_()                         \
-    _Pragma("clang diagnostic push")                                  \
-    _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
-    _Pragma("clang diagnostic ignored \"-Wdeprecated-implementations\"")
-#define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
-    _Pragma("clang diagnostic pop")
-#else
-# define GTEST_DISABLE_MSC_DEPRECATED_PUSH_() \
-    GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
-# define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
-    GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-// Brings in definitions for functions used in the testing::internal::posix
-// namespace (read, write, close, chdir, isatty, stat). We do not currently
-// use them on Windows Mobile.
-#if GTEST_OS_WINDOWS
-# if !GTEST_OS_WINDOWS_MOBILE
-#  include <direct.h>
-#  include <io.h>
-# endif
-// In order to avoid having to include <windows.h>, use forward declaration
-#if GTEST_OS_WINDOWS_MINGW && !defined(__MINGW64_VERSION_MAJOR)
-// MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two
-// separate (equivalent) structs, instead of using typedef
-typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION;
-#else
-// Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
-// This assumption is verified by
-// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
-typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
-#endif
-#elif GTEST_OS_XTENSA
-#include <unistd.h>
-// Xtensa toolchains define strcasecmp in the string.h header instead of
-// strings.h. string.h is already included.
-#else
-// This assumes that non-Windows OSes provide unistd.h. For OSes where this
-// is not the case, we need to include headers that provide the functions
-// mentioned above.
-# include <unistd.h>
-# include <strings.h>
-#endif  // GTEST_OS_WINDOWS
-
-#if GTEST_OS_LINUX_ANDROID
-// Used to define __ANDROID_API__ matching the target NDK API level.
-#  include <android/api-level.h>  // NOLINT
-#endif
-
-// Defines this to true if and only if Google Test can use POSIX regular
-// expressions.
-#ifndef GTEST_HAS_POSIX_RE
-# if GTEST_OS_LINUX_ANDROID
-// On Android, <regex.h> is only available starting with Gingerbread.
-#  define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
-# else
-#define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS && !GTEST_OS_XTENSA)
-# endif
-#endif
-
-#if GTEST_USES_PCRE
-// The appropriate headers have already been included.
-
-#elif GTEST_HAS_POSIX_RE
-
-// On some platforms, <regex.h> needs someone to define size_t, and
-// won't compile otherwise.  We can #include it here as we already
-// included <stdlib.h>, which is guaranteed to define size_t through
-// <stddef.h>.
-# include <regex.h>  // NOLINT
-
-# define GTEST_USES_POSIX_RE 1
-
-#elif GTEST_OS_WINDOWS
-
-// <regex.h> is not available on Windows.  Use our own simple regex
-// implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#else
-
-// <regex.h> may not be available on this platform.  Use our own
-// simple regex implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#endif  // GTEST_USES_PCRE
-
-#ifndef GTEST_HAS_EXCEPTIONS
-// The user didn't tell us whether exceptions are enabled, so we need
-// to figure it out.
-# if defined(_MSC_VER) && defined(_CPPUNWIND)
-// MSVC defines _CPPUNWIND to 1 if and only if exceptions are enabled.
-#  define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__BORLANDC__)
-// C++Builder's implementation of the STL uses the _HAS_EXCEPTIONS
-// macro to enable exceptions, so we'll do the same.
-// Assumes that exceptions are enabled by default.
-#  ifndef _HAS_EXCEPTIONS
-#   define _HAS_EXCEPTIONS 1
-#  endif  // _HAS_EXCEPTIONS
-#  define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
-# elif defined(__clang__)
-// clang defines __EXCEPTIONS if and only if exceptions are enabled before clang
-// 220714, but if and only if cleanups are enabled after that. In Obj-C++ files,
-// there can be cleanups for ObjC exceptions which also need cleanups, even if
-// C++ exceptions are disabled. clang has __has_feature(cxx_exceptions) which
-// checks for C++ exceptions starting at clang r206352, but which checked for
-// cleanups prior to that. To reliably check for C++ exception availability with
-// clang, check for
-// __EXCEPTIONS && __has_feature(cxx_exceptions).
-#  define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
-# elif defined(__GNUC__) && __EXCEPTIONS
-// gcc defines __EXCEPTIONS to 1 if and only if exceptions are enabled.
-#  define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__SUNPRO_CC)
-// Sun Pro CC supports exceptions.  However, there is no compile-time way of
-// detecting whether they are enabled or not.  Therefore, we assume that
-// they are enabled unless the user tells us otherwise.
-#  define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__IBMCPP__) && __EXCEPTIONS
-// xlC defines __EXCEPTIONS to 1 if and only if exceptions are enabled.
-#  define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__HP_aCC)
-// Exception handling is in effect by default in HP aCC compiler. It has to
-// be turned of by +noeh compiler option if desired.
-#  define GTEST_HAS_EXCEPTIONS 1
-# else
-// For other compilers, we assume exceptions are disabled to be
-// conservative.
-#  define GTEST_HAS_EXCEPTIONS 0
-# endif  // defined(_MSC_VER) || defined(__BORLANDC__)
-#endif  // GTEST_HAS_EXCEPTIONS
-
-#ifndef GTEST_HAS_STD_WSTRING
-// The user didn't tell us whether ::std::wstring is available, so we need
-// to figure it out.
-// Cygwin 1.7 and below doesn't support ::std::wstring.
-// Solaris' libc++ doesn't support it either.  Android has
-// no support for it at least as recent as Froyo (2.2).
-#define GTEST_HAS_STD_WSTRING                                         \
-  (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
-     GTEST_OS_HAIKU || GTEST_OS_ESP32 || GTEST_OS_ESP8266 || GTEST_OS_XTENSA))
-
-#endif  // GTEST_HAS_STD_WSTRING
-
-// Determines whether RTTI is available.
-#ifndef GTEST_HAS_RTTI
-// The user didn't tell us whether RTTI is enabled, so we need to
-// figure it out.
-
-# ifdef _MSC_VER
-
-#ifdef _CPPRTTI  // MSVC defines this macro if and only if RTTI is enabled.
-#   define GTEST_HAS_RTTI 1
-#  else
-#   define GTEST_HAS_RTTI 0
-#  endif
-
-// Starting with version 4.3.2, gcc defines __GXX_RTTI if and only if RTTI is
-// enabled.
-# elif defined(__GNUC__)
-
-#  ifdef __GXX_RTTI
-// When building against STLport with the Android NDK and with
-// -frtti -fno-exceptions, the build fails at link time with undefined
-// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
-// so disable RTTI when detected.
-#   if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
-       !defined(__EXCEPTIONS)
-#    define GTEST_HAS_RTTI 0
-#   else
-#    define GTEST_HAS_RTTI 1
-#   endif  // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
-#  else
-#   define GTEST_HAS_RTTI 0
-#  endif  // __GXX_RTTI
-
-// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
-// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
-// first version with C++ support.
-# elif defined(__clang__)
-
-#  define GTEST_HAS_RTTI __has_feature(cxx_rtti)
-
-// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
-// both the typeid and dynamic_cast features are present.
-# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
-
-#  ifdef __RTTI_ALL__
-#   define GTEST_HAS_RTTI 1
-#  else
-#   define GTEST_HAS_RTTI 0
-#  endif
-
-# else
-
-// For all other compilers, we assume RTTI is enabled.
-#  define GTEST_HAS_RTTI 1
-
-# endif  // _MSC_VER
-
-#endif  // GTEST_HAS_RTTI
-
-// It's this header's responsibility to #include <typeinfo> when RTTI
-// is enabled.
-#if GTEST_HAS_RTTI
-# include <typeinfo>
-#endif
-
-// Determines whether Google Test can use the pthreads library.
-#ifndef GTEST_HAS_PTHREAD
-// The user didn't tell us explicitly, so we make reasonable assumptions about
-// which platforms have pthreads support.
-//
-// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
-// to your compiler flags.
-#define GTEST_HAS_PTHREAD                                                      \
-  (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX ||          \
-   GTEST_OS_FREEBSD || GTEST_OS_NACL || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA || \
-   GTEST_OS_DRAGONFLY || GTEST_OS_GNU_KFREEBSD || GTEST_OS_OPENBSD ||          \
-   GTEST_OS_HAIKU)
-#endif  // GTEST_HAS_PTHREAD
-
-#if GTEST_HAS_PTHREAD
-// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
-// true.
-# include <pthread.h>  // NOLINT
-
-// For timespec and nanosleep, used below.
-# include <time.h>  // NOLINT
-#endif
-
-// Determines whether clone(2) is supported.
-// Usually it will only be available on Linux, excluding
-// Linux on the Itanium architecture.
-// Also see http://linux.die.net/man/2/clone.
-#ifndef GTEST_HAS_CLONE
-// The user didn't tell us, so we need to figure it out.
-
-# if GTEST_OS_LINUX && !defined(__ia64__)
-#  if GTEST_OS_LINUX_ANDROID
-// On Android, clone() became available at different API levels for each 32-bit
-// architecture.
-#    if defined(__LP64__) || \
-        (defined(__arm__) && __ANDROID_API__ >= 9) || \
-        (defined(__mips__) && __ANDROID_API__ >= 12) || \
-        (defined(__i386__) && __ANDROID_API__ >= 17)
-#     define GTEST_HAS_CLONE 1
-#    else
-#     define GTEST_HAS_CLONE 0
-#    endif
-#  else
-#   define GTEST_HAS_CLONE 1
-#  endif
-# else
-#  define GTEST_HAS_CLONE 0
-# endif  // GTEST_OS_LINUX && !defined(__ia64__)
-
-#endif  // GTEST_HAS_CLONE
-
-// Determines whether to support stream redirection. This is used to test
-// output correctness and to implement death tests.
-#ifndef GTEST_HAS_STREAM_REDIRECTION
-// By default, we assume that stream redirection is supported on all
-// platforms except known mobile ones.
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
-    GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
-#  define GTEST_HAS_STREAM_REDIRECTION 0
-# else
-#  define GTEST_HAS_STREAM_REDIRECTION 1
-# endif  // !GTEST_OS_WINDOWS_MOBILE
-#endif  // GTEST_HAS_STREAM_REDIRECTION
-
-// Determines whether to support death tests.
-// pops up a dialog window that cannot be suppressed programmatically.
-#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS ||             \
-     (GTEST_OS_MAC && !GTEST_OS_IOS) ||                                   \
-     (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER) || GTEST_OS_WINDOWS_MINGW ||  \
-     GTEST_OS_AIX || GTEST_OS_HPUX || GTEST_OS_OPENBSD || GTEST_OS_QNX || \
-     GTEST_OS_FREEBSD || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA ||           \
-     GTEST_OS_DRAGONFLY || GTEST_OS_GNU_KFREEBSD || GTEST_OS_HAIKU)
-# define GTEST_HAS_DEATH_TEST 1
-#endif
-
-// Determines whether to support type-driven tests.
-
-// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
-// Sun Pro CC, IBM Visual Age, and HP aCC support.
-#if defined(__GNUC__) || defined(_MSC_VER) || defined(__SUNPRO_CC) || \
-    defined(__IBMCPP__) || defined(__HP_aCC)
-# define GTEST_HAS_TYPED_TEST 1
-# define GTEST_HAS_TYPED_TEST_P 1
-#endif
-
-// Determines whether the system compiler uses UTF-16 for encoding wide strings.
-#define GTEST_WIDE_STRING_USES_UTF16_ \
-  (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
-
-// Determines whether test results can be streamed to a socket.
-#if GTEST_OS_LINUX || GTEST_OS_GNU_KFREEBSD || GTEST_OS_DRAGONFLY || \
-    GTEST_OS_FREEBSD || GTEST_OS_NETBSD || GTEST_OS_OPENBSD
-# define GTEST_CAN_STREAM_RESULTS_ 1
-#endif
-
-// Defines some utility macros.
-
-// The GNU compiler emits a warning if nested "if" statements are followed by
-// an "else" statement and braces are not used to explicitly disambiguate the
-// "else" binding.  This leads to problems with code like:
-//
-//   if (gate)
-//     ASSERT_*(condition) << "Some message";
-//
-// The "switch (0) case 0:" idiom is used to suppress this.
-#ifdef __INTEL_COMPILER
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
-#else
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default:  // NOLINT
-#endif
-
-// Use this annotation at the end of a struct/class definition to
-// prevent the compiler from optimizing away instances that are never
-// used.  This is useful when all interesting logic happens inside the
-// c'tor and / or d'tor.  Example:
-//
-//   struct Foo {
-//     Foo() { ... }
-//   } GTEST_ATTRIBUTE_UNUSED_;
-//
-// Also use it after a variable or parameter declaration to tell the
-// compiler the variable/parameter does not have to be used.
-#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-#elif defined(__clang__)
-# if __has_attribute(unused)
-#  define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-# endif
-#endif
-#ifndef GTEST_ATTRIBUTE_UNUSED_
-# define GTEST_ATTRIBUTE_UNUSED_
-#endif
-
-// Use this annotation before a function that takes a printf format string.
-#if (defined(__GNUC__) || defined(__clang__)) && !defined(COMPILER_ICC)
-# if defined(__MINGW_PRINTF_FORMAT)
-// MinGW has two different printf implementations. Ensure the format macro
-// matches the selected implementation. See
-// https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/.
-#  define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
-       __attribute__((__format__(__MINGW_PRINTF_FORMAT, string_index, \
-                                 first_to_check)))
-# else
-#  define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
-       __attribute__((__format__(__printf__, string_index, first_to_check)))
-# endif
-#else
-# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
-#endif
-
-
-// A macro to disallow copy operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_ASSIGN_(type) \
-  type& operator=(type const &) = delete
-
-// A macro to disallow copy constructor and operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
-  type(type const&) = delete;                 \
-  type& operator=(type const&) = delete
-
-// A macro to disallow move operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_MOVE_ASSIGN_(type) \
-  type& operator=(type &&) noexcept = delete
-
-// A macro to disallow move constructor and operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_MOVE_AND_ASSIGN_(type) \
-  type(type&&) noexcept = delete;             \
-  type& operator=(type&&) noexcept = delete
-
-// Tell the compiler to warn about unused return values for functions declared
-// with this macro.  The macro should be used on function declarations
-// following the argument list:
-//
-//   Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
-#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
-#else
-# define GTEST_MUST_USE_RESULT_
-#endif  // __GNUC__ && !COMPILER_ICC
-
-// MS C++ compiler emits warning when a conditional expression is compile time
-// constant. In some contexts this warning is false positive and needs to be
-// suppressed. Use the following two macros in such cases:
-//
-// GTEST_INTENTIONAL_CONST_COND_PUSH_()
-// while (true) {
-// GTEST_INTENTIONAL_CONST_COND_POP_()
-// }
-# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
-    GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
-# define GTEST_INTENTIONAL_CONST_COND_POP_() \
-    GTEST_DISABLE_MSC_WARNINGS_POP_()
-
-// Determine whether the compiler supports Microsoft's Structured Exception
-// Handling.  This is supported by several Windows compilers but generally
-// does not exist on any other system.
-#ifndef GTEST_HAS_SEH
-// The user didn't tell us, so we need to figure it out.
-
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-// These two compilers are known to support SEH.
-#  define GTEST_HAS_SEH 1
-# else
-// Assume no SEH.
-#  define GTEST_HAS_SEH 0
-# endif
-
-#endif  // GTEST_HAS_SEH
-
-#ifndef GTEST_IS_THREADSAFE
-
-#define GTEST_IS_THREADSAFE                                                 \
-  (GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ ||                                     \
-   (GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT) || \
-   GTEST_HAS_PTHREAD)
-
-#endif  // GTEST_IS_THREADSAFE
-
-// GTEST_API_ qualifies all symbols that must be exported. The definitions below
-// are guarded by #ifndef to give embedders a chance to define GTEST_API_ in
-// gtest/internal/custom/gtest-port.h
-#ifndef GTEST_API_
-
-#ifdef _MSC_VER
-# if GTEST_LINKED_AS_SHARED_LIBRARY
-#  define GTEST_API_ __declspec(dllimport)
-# elif GTEST_CREATE_SHARED_LIBRARY
-#  define GTEST_API_ __declspec(dllexport)
-# endif
-#elif __GNUC__ >= 4 || defined(__clang__)
-# define GTEST_API_ __attribute__((visibility ("default")))
-#endif  // _MSC_VER
-
-#endif  // GTEST_API_
-
-#ifndef GTEST_API_
-# define GTEST_API_
-#endif  // GTEST_API_
-
-#ifndef GTEST_DEFAULT_DEATH_TEST_STYLE
-# define GTEST_DEFAULT_DEATH_TEST_STYLE  "fast"
-#endif  // GTEST_DEFAULT_DEATH_TEST_STYLE
-
-#ifdef __GNUC__
-// Ask the compiler to never inline a given function.
-# define GTEST_NO_INLINE_ __attribute__((noinline))
-#else
-# define GTEST_NO_INLINE_
-#endif
-
-// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
-#if !defined(GTEST_HAS_CXXABI_H_)
-# if defined(__GLIBCXX__) || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER))
-#  define GTEST_HAS_CXXABI_H_ 1
-# else
-#  define GTEST_HAS_CXXABI_H_ 0
-# endif
-#endif
-
-// A function level attribute to disable checking for use of uninitialized
-// memory when built with MemorySanitizer.
-#if defined(__clang__)
-# if __has_feature(memory_sanitizer)
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
-       __attribute__((no_sanitize_memory))
-# else
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-# endif  // __has_feature(memory_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-#endif  // __clang__
-
-// A function level attribute to disable AddressSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(address_sanitizer)
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
-       __attribute__((no_sanitize_address))
-# else
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-# endif  // __has_feature(address_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-#endif  // __clang__
-
-// A function level attribute to disable HWAddressSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(hwaddress_sanitizer)
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_ \
-       __attribute__((no_sanitize("hwaddress")))
-# else
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-# endif  // __has_feature(hwaddress_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-#endif  // __clang__
-
-// A function level attribute to disable ThreadSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(thread_sanitizer)
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
-       __attribute__((no_sanitize_thread))
-# else
-#  define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-# endif  // __has_feature(thread_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-#endif  // __clang__
-
-namespace testing {
-
-class Message;
-
-// Legacy imports for backwards compatibility.
-// New code should use std:: names directly.
-using std::get;
-using std::make_tuple;
-using std::tuple;
-using std::tuple_element;
-using std::tuple_size;
-
-namespace internal {
-
-// A secret type that Google Test users don't know about.  It has no
-// definition on purpose.  Therefore it's impossible to create a
-// Secret object, which is what we want.
-class Secret;
-
-// The GTEST_COMPILE_ASSERT_ is a legacy macro used to verify that a compile
-// time expression is true (in new code, use static_assert instead). For
-// example, you could use it to verify the size of a static array:
-//
-//   GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
-//                         names_incorrect_size);
-//
-// The second argument to the macro must be a valid C++ identifier. If the
-// expression is false, compiler will issue an error containing this identifier.
-#define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg)
-
-// A helper for suppressing warnings on constant condition.  It just
-// returns 'condition'.
-GTEST_API_ bool IsTrue(bool condition);
-
-// Defines RE.
-
-#if GTEST_USES_PCRE
-// if used, PCRE is injected by custom/gtest-port.h
-#elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
-
-// A simple C++ wrapper for <regex.h>.  It uses the POSIX Extended
-// Regular Expression syntax.
-class GTEST_API_ RE {
- public:
-  // A copy constructor is required by the Standard to initialize object
-  // references from r-values.
-  RE(const RE& other) { Init(other.pattern()); }
-
-  // Constructs an RE from a string.
-  RE(const ::std::string& regex) { Init(regex.c_str()); }  // NOLINT
-
-  RE(const char* regex) { Init(regex); }  // NOLINT
-  ~RE();
-
-  // Returns the string representation of the regex.
-  const char* pattern() const { return pattern_; }
-
-  // FullMatch(str, re) returns true if and only if regular expression re
-  // matches the entire str.
-  // PartialMatch(str, re) returns true if and only if regular expression re
-  // matches a substring of str (including str itself).
-  static bool FullMatch(const ::std::string& str, const RE& re) {
-    return FullMatch(str.c_str(), re);
-  }
-  static bool PartialMatch(const ::std::string& str, const RE& re) {
-    return PartialMatch(str.c_str(), re);
-  }
-
-  static bool FullMatch(const char* str, const RE& re);
-  static bool PartialMatch(const char* str, const RE& re);
-
- private:
-  void Init(const char* regex);
-  const char* pattern_;
-  bool is_valid_;
-
-# if GTEST_USES_POSIX_RE
-
-  regex_t full_regex_;     // For FullMatch().
-  regex_t partial_regex_;  // For PartialMatch().
-
-# else  // GTEST_USES_SIMPLE_RE
-
-  const char* full_pattern_;  // For FullMatch();
-
-# endif
-};
-
-#endif  // GTEST_USES_PCRE
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
-                                                               int line);
-
-// Defines logging utilities:
-//   GTEST_LOG_(severity) - logs messages at the specified severity level. The
-//                          message itself is streamed into the macro.
-//   LogToStderr()  - directs all log messages to stderr.
-//   FlushInfoLog() - flushes informational log messages.
-
-enum GTestLogSeverity {
-  GTEST_INFO,
-  GTEST_WARNING,
-  GTEST_ERROR,
-  GTEST_FATAL
-};
-
-// Formats log entry severity, provides a stream object for streaming the
-// log message, and terminates the message with a newline when going out of
-// scope.
-class GTEST_API_ GTestLog {
- public:
-  GTestLog(GTestLogSeverity severity, const char* file, int line);
-
-  // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
-  ~GTestLog();
-
-  ::std::ostream& GetStream() { return ::std::cerr; }
-
- private:
-  const GTestLogSeverity severity_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
-};
-
-#if !defined(GTEST_LOG_)
-
-# define GTEST_LOG_(severity) \
-    ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
-                                  __FILE__, __LINE__).GetStream()
-
-inline void LogToStderr() {}
-inline void FlushInfoLog() { fflush(nullptr); }
-
-#endif  // !defined(GTEST_LOG_)
-
-#if !defined(GTEST_CHECK_)
-// INTERNAL IMPLEMENTATION - DO NOT USE.
-//
-// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
-// is not satisfied.
-//  Synopsys:
-//    GTEST_CHECK_(boolean_condition);
-//     or
-//    GTEST_CHECK_(boolean_condition) << "Additional message";
-//
-//    This checks the condition and if the condition is not satisfied
-//    it prints message about the condition violation, including the
-//    condition itself, plus additional message streamed into it, if any,
-//    and then it aborts the program. It aborts the program irrespective of
-//    whether it is built in the debug mode or not.
-# define GTEST_CHECK_(condition) \
-    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-    if (::testing::internal::IsTrue(condition)) \
-      ; \
-    else \
-      GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
-#endif  // !defined(GTEST_CHECK_)
-
-// An all-mode assert to verify that the given POSIX-style function
-// call returns 0 (indicating success).  Known limitation: this
-// doesn't expand to a balanced 'if' statement, so enclose the macro
-// in {} if you need to use it as the only statement in an 'if'
-// branch.
-#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
-  if (const int gtest_error = (posix_call)) \
-    GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
-                      << gtest_error
-
-// Transforms "T" into "const T&" according to standard reference collapsing
-// rules (this is only needed as a backport for C++98 compilers that do not
-// support reference collapsing). Specifically, it transforms:
-//
-//   char         ==> const char&
-//   const char   ==> const char&
-//   char&        ==> char&
-//   const char&  ==> const char&
-//
-// Note that the non-const reference will not have "const" added. This is
-// standard, and necessary so that "T" can always bind to "const T&".
-template <typename T>
-struct ConstRef { typedef const T& type; };
-template <typename T>
-struct ConstRef<T&> { typedef T& type; };
-
-// The argument T must depend on some template parameters.
-#define GTEST_REFERENCE_TO_CONST_(T) \
-  typename ::testing::internal::ConstRef<T>::type
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Use ImplicitCast_ as a safe version of static_cast for upcasting in
-// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
-// const Foo*).  When you use ImplicitCast_, the compiler checks that
-// the cast is safe.  Such explicit ImplicitCast_s are necessary in
-// surprisingly many situations where C++ demands an exact type match
-// instead of an argument type convertable to a target type.
-//
-// The syntax for using ImplicitCast_ is the same as for static_cast:
-//
-//   ImplicitCast_<ToType>(expr)
-//
-// ImplicitCast_ would have been part of the C++ standard library,
-// but the proposal was submitted too late.  It will probably make
-// its way into the language in the future.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., implicit_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To>
-inline To ImplicitCast_(To x) { return x; }
-
-// When you upcast (that is, cast a pointer from type Foo to type
-// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
-// always succeed.  When you downcast (that is, cast a pointer from
-// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
-// how do you know the pointer is really of type SubclassOfFoo?  It
-// could be a bare Foo, or of type DifferentSubclassOfFoo.  Thus,
-// when you downcast, you should use this macro.  In debug mode, we
-// use dynamic_cast<> to double-check the downcast is legal (we die
-// if it's not).  In normal mode, we do the efficient static_cast<>
-// instead.  Thus, it's important to test in debug mode to make sure
-// the cast is legal!
-//    This is the only place in the code we should use dynamic_cast<>.
-// In particular, you SHOULDN'T be using dynamic_cast<> in order to
-// do RTTI (eg code like this:
-//    if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
-//    if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
-// You should design the code some other way not to need this.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., down_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To, typename From>  // use like this: DownCast_<T*>(foo);
-inline To DownCast_(From* f) {  // so we only accept pointers
-  // Ensures that To is a sub-type of From *.  This test is here only
-  // for compile-time type checking, and has no overhead in an
-  // optimized build at run-time, as it will be optimized away
-  // completely.
-  GTEST_INTENTIONAL_CONST_COND_PUSH_()
-  if (false) {
-  GTEST_INTENTIONAL_CONST_COND_POP_()
-  const To to = nullptr;
-  ::testing::internal::ImplicitCast_<From*>(to);
-  }
-
-#if GTEST_HAS_RTTI
-  // RTTI: debug mode only!
-  GTEST_CHECK_(f == nullptr || dynamic_cast<To>(f) != nullptr);
-#endif
-  return static_cast<To>(f);
-}
-
-// Downcasts the pointer of type Base to Derived.
-// Derived must be a subclass of Base. The parameter MUST
-// point to a class of type Derived, not any subclass of it.
-// When RTTI is available, the function performs a runtime
-// check to enforce this.
-template <class Derived, class Base>
-Derived* CheckedDowncastToActualType(Base* base) {
-#if GTEST_HAS_RTTI
-  GTEST_CHECK_(typeid(*base) == typeid(Derived));
-#endif
-
-#if GTEST_HAS_DOWNCAST_
-  return ::down_cast<Derived*>(base);
-#elif GTEST_HAS_RTTI
-  return dynamic_cast<Derived*>(base);  // NOLINT
-#else
-  return static_cast<Derived*>(base);  // Poor man's downcast.
-#endif
-}
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Defines the stderr capturer:
-//   CaptureStdout     - starts capturing stdout.
-//   GetCapturedStdout - stops capturing stdout and returns the captured string.
-//   CaptureStderr     - starts capturing stderr.
-//   GetCapturedStderr - stops capturing stderr and returns the captured string.
-//
-GTEST_API_ void CaptureStdout();
-GTEST_API_ std::string GetCapturedStdout();
-GTEST_API_ void CaptureStderr();
-GTEST_API_ std::string GetCapturedStderr();
-
-#endif  // GTEST_HAS_STREAM_REDIRECTION
-// Returns the size (in bytes) of a file.
-GTEST_API_ size_t GetFileSize(FILE* file);
-
-// Reads the entire content of a file as a string.
-GTEST_API_ std::string ReadEntireFile(FILE* file);
-
-// All command line arguments.
-GTEST_API_ std::vector<std::string> GetArgvs();
-
-#if GTEST_HAS_DEATH_TEST
-
-std::vector<std::string> GetInjectableArgvs();
-// Deprecated: pass the args vector by value instead.
-void SetInjectableArgvs(const std::vector<std::string>* new_argvs);
-void SetInjectableArgvs(const std::vector<std::string>& new_argvs);
-void ClearInjectableArgvs();
-
-#endif  // GTEST_HAS_DEATH_TEST
-
-// Defines synchronization primitives.
-#if GTEST_IS_THREADSAFE
-# if GTEST_HAS_PTHREAD
-// Sleeps for (roughly) n milliseconds.  This function is only for testing
-// Google Test's own constructs.  Don't use it in user tests, either
-// directly or indirectly.
-inline void SleepMilliseconds(int n) {
-  const timespec time = {
-    0,                  // 0 seconds.
-    n * 1000L * 1000L,  // And n ms.
-  };
-  nanosleep(&time, nullptr);
-}
-# endif  // GTEST_HAS_PTHREAD
-
-# if GTEST_HAS_NOTIFICATION_
-// Notification has already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_HAS_PTHREAD
-// Allows a controller thread to pause execution of newly created
-// threads until notified.  Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class Notification {
- public:
-  Notification() : notified_(false) {
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
-  }
-  ~Notification() {
-    pthread_mutex_destroy(&mutex_);
-  }
-
-  // Notifies all threads created with this notification to start. Must
-  // be called from the controller thread.
-  void Notify() {
-    pthread_mutex_lock(&mutex_);
-    notified_ = true;
-    pthread_mutex_unlock(&mutex_);
-  }
-
-  // Blocks until the controller thread notifies. Must be called from a test
-  // thread.
-  void WaitForNotification() {
-    for (;;) {
-      pthread_mutex_lock(&mutex_);
-      const bool notified = notified_;
-      pthread_mutex_unlock(&mutex_);
-      if (notified)
-        break;
-      SleepMilliseconds(10);
-    }
-  }
-
- private:
-  pthread_mutex_t mutex_;
-  bool notified_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-GTEST_API_ void SleepMilliseconds(int n);
-
-// Provides leak-safe Windows kernel handle ownership.
-// Used in death tests and in threading support.
-class GTEST_API_ AutoHandle {
- public:
-  // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
-  // avoid including <windows.h> in this header file. Including <windows.h> is
-  // undesirable because it defines a lot of symbols and macros that tend to
-  // conflict with client code. This assumption is verified by
-  // WindowsTypesTest.HANDLEIsVoidStar.
-  typedef void* Handle;
-  AutoHandle();
-  explicit AutoHandle(Handle handle);
-
-  ~AutoHandle();
-
-  Handle Get() const;
-  void Reset();
-  void Reset(Handle handle);
-
- private:
-  // Returns true if and only if the handle is a valid handle object that can be
-  // closed.
-  bool IsCloseable() const;
-
-  Handle handle_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
-};
-
-// Allows a controller thread to pause execution of newly created
-// threads until notified.  Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class GTEST_API_ Notification {
- public:
-  Notification();
-  void Notify();
-  void WaitForNotification();
-
- private:
-  AutoHandle event_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-# endif  // GTEST_HAS_NOTIFICATION_
-
-// On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
-// defined, but we don't want to use MinGW's pthreads implementation, which
-// has conformance problems with some versions of the POSIX standard.
-# if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
-
-// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
-// Consequently, it cannot select a correct instantiation of ThreadWithParam
-// in order to call its Run(). Introducing ThreadWithParamBase as a
-// non-templated base class for ThreadWithParam allows us to bypass this
-// problem.
-class ThreadWithParamBase {
- public:
-  virtual ~ThreadWithParamBase() {}
-  virtual void Run() = 0;
-};
-
-// pthread_create() accepts a pointer to a function type with the C linkage.
-// According to the Standard (7.5/1), function types with different linkages
-// are different even if they are otherwise identical.  Some compilers (for
-// example, SunStudio) treat them as different types.  Since class methods
-// cannot be defined with C-linkage we need to define a free C-function to
-// pass into pthread_create().
-extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
-  static_cast<ThreadWithParamBase*>(thread)->Run();
-  return nullptr;
-}
-
-// Helper class for testing Google Test's multi-threading constructs.
-// To use it, write:
-//
-//   void ThreadFunc(int param) { /* Do things with param */ }
-//   Notification thread_can_start;
-//   ...
-//   // The thread_can_start parameter is optional; you can supply NULL.
-//   ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
-//   thread_can_start.Notify();
-//
-// These classes are only for testing Google Test's own constructs. Do
-// not use them in user tests, either directly or indirectly.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
-  typedef void UserThreadFunc(T);
-
-  ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
-      : func_(func),
-        param_(param),
-        thread_can_start_(thread_can_start),
-        finished_(false) {
-    ThreadWithParamBase* const base = this;
-    // The thread can be created only after all fields except thread_
-    // have been initialized.
-    GTEST_CHECK_POSIX_SUCCESS_(
-        pthread_create(&thread_, nullptr, &ThreadFuncWithCLinkage, base));
-  }
-  ~ThreadWithParam() override { Join(); }
-
-  void Join() {
-    if (!finished_) {
-      GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, nullptr));
-      finished_ = true;
-    }
-  }
-
-  void Run() override {
-    if (thread_can_start_ != nullptr) thread_can_start_->WaitForNotification();
-    func_(param_);
-  }
-
- private:
-  UserThreadFunc* const func_;  // User-supplied thread function.
-  const T param_;  // User-supplied parameter to the thread function.
-  // When non-NULL, used to block execution until the controller thread
-  // notifies.
-  Notification* const thread_can_start_;
-  bool finished_;  // true if and only if we know that the thread function has
-                   // finished.
-  pthread_t thread_;  // The native thread object.
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-# endif  // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
-         // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-# if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-// Mutex and ThreadLocal have already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-// Mutex implements mutex on Windows platforms.  It is used in conjunction
-// with class MutexLock:
-//
-//   Mutex mutex;
-//   ...
-//   MutexLock lock(&mutex);  // Acquires the mutex and releases it at the
-//                            // end of the current scope.
-//
-// A static Mutex *must* be defined or declared using one of the following
-// macros:
-//   GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
-//   GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
-//
-// (A non-static Mutex is defined/declared in the usual way).
-class GTEST_API_ Mutex {
- public:
-  enum MutexType { kStatic = 0, kDynamic = 1 };
-  // We rely on kStaticMutex being 0 as it is to what the linker initializes
-  // type_ in static mutexes.  critical_section_ will be initialized lazily
-  // in ThreadSafeLazyInit().
-  enum StaticConstructorSelector { kStaticMutex = 0 };
-
-  // This constructor intentionally does nothing.  It relies on type_ being
-  // statically initialized to 0 (effectively setting it to kStatic) and on
-  // ThreadSafeLazyInit() to lazily initialize the rest of the members.
-  explicit Mutex(StaticConstructorSelector /*dummy*/) {}
-
-  Mutex();
-  ~Mutex();
-
-  void Lock();
-
-  void Unlock();
-
-  // Does nothing if the current thread holds the mutex. Otherwise, crashes
-  // with high probability.
-  void AssertHeld();
-
- private:
-  // Initializes owner_thread_id_ and critical_section_ in static mutexes.
-  void ThreadSafeLazyInit();
-
-  // Per https://blogs.msdn.microsoft.com/oldnewthing/20040223-00/?p=40503,
-  // we assume that 0 is an invalid value for thread IDs.
-  unsigned int owner_thread_id_;
-
-  // For static mutexes, we rely on these members being initialized to zeros
-  // by the linker.
-  MutexType type_;
-  long critical_section_init_phase_;  // NOLINT
-  GTEST_CRITICAL_SECTION* critical_section_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
-    extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
-    ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)".  Hence the typedef trick below.
-class GTestMutexLock {
- public:
-  explicit GTestMutexLock(Mutex* mutex)
-      : mutex_(mutex) { mutex_->Lock(); }
-
-  ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
-  Mutex* const mutex_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Base class for ValueHolder<T>.  Allows a caller to hold and delete a value
-// without knowing its type.
-class ThreadLocalValueHolderBase {
- public:
-  virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Provides a way for a thread to send notifications to a ThreadLocal
-// regardless of its parameter type.
-class ThreadLocalBase {
- public:
-  // Creates a new ValueHolder<T> object holding a default value passed to
-  // this ThreadLocal<T>'s constructor and returns it.  It is the caller's
-  // responsibility not to call this when the ThreadLocal<T> instance already
-  // has a value on the current thread.
-  virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;
-
- protected:
-  ThreadLocalBase() {}
-  virtual ~ThreadLocalBase() {}
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
-};
-
-// Maps a thread to a set of ThreadLocals that have values instantiated on that
-// thread and notifies them when the thread exits.  A ThreadLocal instance is
-// expected to persist until all threads it has values on have terminated.
-class GTEST_API_ ThreadLocalRegistry {
- public:
-  // Registers thread_local_instance as having value on the current thread.
-  // Returns a value that can be used to identify the thread from other threads.
-  static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
-      const ThreadLocalBase* thread_local_instance);
-
-  // Invoked when a ThreadLocal instance is destroyed.
-  static void OnThreadLocalDestroyed(
-      const ThreadLocalBase* thread_local_instance);
-};
-
-class GTEST_API_ ThreadWithParamBase {
- public:
-  void Join();
-
- protected:
-  class Runnable {
-   public:
-    virtual ~Runnable() {}
-    virtual void Run() = 0;
-  };
-
-  ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
-  virtual ~ThreadWithParamBase();
-
- private:
-  AutoHandle thread_;
-};
-
-// Helper class for testing Google Test's multi-threading constructs.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
-  typedef void UserThreadFunc(T);
-
-  ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
-      : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
-  }
-  virtual ~ThreadWithParam() {}
-
- private:
-  class RunnableImpl : public Runnable {
-   public:
-    RunnableImpl(UserThreadFunc* func, T param)
-        : func_(func),
-          param_(param) {
-    }
-    virtual ~RunnableImpl() {}
-    virtual void Run() {
-      func_(param_);
-    }
-
-   private:
-    UserThreadFunc* const func_;
-    const T param_;
-
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
-  };
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-
-// Implements thread-local storage on Windows systems.
-//
-//   // Thread 1
-//   ThreadLocal<int> tl(100);  // 100 is the default value for each thread.
-//
-//   // Thread 2
-//   tl.set(150);  // Changes the value for thread 2 only.
-//   EXPECT_EQ(150, tl.get());
-//
-//   // Thread 1
-//   EXPECT_EQ(100, tl.get());  // In thread 1, tl has the original value.
-//   tl.set(200);
-//   EXPECT_EQ(200, tl.get());
-//
-// The template type argument T must have a public copy constructor.
-// In addition, the default ThreadLocal constructor requires T to have
-// a public default constructor.
-//
-// The users of a TheadLocal instance have to make sure that all but one
-// threads (including the main one) using that instance have exited before
-// destroying it. Otherwise, the per-thread objects managed for them by the
-// ThreadLocal instance are not guaranteed to be destroyed on all platforms.
-//
-// Google Test only uses global ThreadLocal objects.  That means they
-// will die after main() has returned.  Therefore, no per-thread
-// object managed by Google Test will be leaked as long as all threads
-// using Google Test have exited when main() returns.
-template <typename T>
-class ThreadLocal : public ThreadLocalBase {
- public:
-  ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
-  explicit ThreadLocal(const T& value)
-      : default_factory_(new InstanceValueHolderFactory(value)) {}
-
-  ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }
-
-  T* pointer() { return GetOrCreateValue(); }
-  const T* pointer() const { return GetOrCreateValue(); }
-  const T& get() const { return *pointer(); }
-  void set(const T& value) { *pointer() = value; }
-
- private:
-  // Holds a value of T.  Can be deleted via its base class without the caller
-  // knowing the type of T.
-  class ValueHolder : public ThreadLocalValueHolderBase {
-   public:
-    ValueHolder() : value_() {}
-    explicit ValueHolder(const T& value) : value_(value) {}
-
-    T* pointer() { return &value_; }
-
-   private:
-    T value_;
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
-  };
-
-
-  T* GetOrCreateValue() const {
-    return static_cast<ValueHolder*>(
-        ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
-  }
-
-  virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
-    return default_factory_->MakeNewHolder();
-  }
-
-  class ValueHolderFactory {
-   public:
-    ValueHolderFactory() {}
-    virtual ~ValueHolderFactory() {}
-    virtual ValueHolder* MakeNewHolder() const = 0;
-
-   private:
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
-  };
-
-  class DefaultValueHolderFactory : public ValueHolderFactory {
-   public:
-    DefaultValueHolderFactory() {}
-    ValueHolder* MakeNewHolder() const override { return new ValueHolder(); }
-
-   private:
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
-  };
-
-  class InstanceValueHolderFactory : public ValueHolderFactory {
-   public:
-    explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
-    ValueHolder* MakeNewHolder() const override {
-      return new ValueHolder(value_);
-    }
-
-   private:
-    const T value_;  // The value for each thread.
-
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
-  };
-
-  std::unique_ptr<ValueHolderFactory> default_factory_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# elif GTEST_HAS_PTHREAD
-
-// MutexBase and Mutex implement mutex on pthreads-based platforms.
-class MutexBase {
- public:
-  // Acquires this mutex.
-  void Lock() {
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
-    owner_ = pthread_self();
-    has_owner_ = true;
-  }
-
-  // Releases this mutex.
-  void Unlock() {
-    // Since the lock is being released the owner_ field should no longer be
-    // considered valid. We don't protect writing to has_owner_ here, as it's
-    // the caller's responsibility to ensure that the current thread holds the
-    // mutex when this is called.
-    has_owner_ = false;
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
-  }
-
-  // Does nothing if the current thread holds the mutex. Otherwise, crashes
-  // with high probability.
-  void AssertHeld() const {
-    GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
-        << "The current thread is not holding the mutex @" << this;
-  }
-
-  // A static mutex may be used before main() is entered.  It may even
-  // be used before the dynamic initialization stage.  Therefore we
-  // must be able to initialize a static mutex object at link time.
-  // This means MutexBase has to be a POD and its member variables
-  // have to be public.
- public:
-  pthread_mutex_t mutex_;  // The underlying pthread mutex.
-  // has_owner_ indicates whether the owner_ field below contains a valid thread
-  // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
-  // accesses to the owner_ field should be protected by a check of this field.
-  // An alternative might be to memset() owner_ to all zeros, but there's no
-  // guarantee that a zero'd pthread_t is necessarily invalid or even different
-  // from pthread_self().
-  bool has_owner_;
-  pthread_t owner_;  // The thread holding the mutex.
-};
-
-// Forward-declares a static mutex.
-#  define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
-     extern ::testing::internal::MutexBase mutex
-
-// Defines and statically (i.e. at link time) initializes a static mutex.
-// The initialization list here does not explicitly initialize each field,
-// instead relying on default initialization for the unspecified fields. In
-// particular, the owner_ field (a pthread_t) is not explicitly initialized.
-// This allows initialization to work whether pthread_t is a scalar or struct.
-// The flag -Wmissing-field-initializers must not be specified for this to work.
-#define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
-  ::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false, 0}
-
-// The Mutex class can only be used for mutexes created at runtime. It
-// shares its API with MutexBase otherwise.
-class Mutex : public MutexBase {
- public:
-  Mutex() {
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
-    has_owner_ = false;
-  }
-  ~Mutex() {
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
-  }
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)".  Hence the typedef trick below.
-class GTestMutexLock {
- public:
-  explicit GTestMutexLock(MutexBase* mutex)
-      : mutex_(mutex) { mutex_->Lock(); }
-
-  ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
-  MutexBase* const mutex_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Helpers for ThreadLocal.
-
-// pthread_key_create() requires DeleteThreadLocalValue() to have
-// C-linkage.  Therefore it cannot be templatized to access
-// ThreadLocal<T>.  Hence the need for class
-// ThreadLocalValueHolderBase.
-class ThreadLocalValueHolderBase {
- public:
-  virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Called by pthread to delete thread-local data stored by
-// pthread_setspecific().
-extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
-  delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
-}
-
-// Implements thread-local storage on pthreads-based systems.
-template <typename T>
-class GTEST_API_ ThreadLocal {
- public:
-  ThreadLocal()
-      : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
-  explicit ThreadLocal(const T& value)
-      : key_(CreateKey()),
-        default_factory_(new InstanceValueHolderFactory(value)) {}
-
-  ~ThreadLocal() {
-    // Destroys the managed object for the current thread, if any.
-    DeleteThreadLocalValue(pthread_getspecific(key_));
-
-    // Releases resources associated with the key.  This will *not*
-    // delete managed objects for other threads.
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
-  }
-
-  T* pointer() { return GetOrCreateValue(); }
-  const T* pointer() const { return GetOrCreateValue(); }
-  const T& get() const { return *pointer(); }
-  void set(const T& value) { *pointer() = value; }
-
- private:
-  // Holds a value of type T.
-  class ValueHolder : public ThreadLocalValueHolderBase {
-   public:
-    ValueHolder() : value_() {}
-    explicit ValueHolder(const T& value) : value_(value) {}
-
-    T* pointer() { return &value_; }
-
-   private:
-    T value_;
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
-  };
-
-  static pthread_key_t CreateKey() {
-    pthread_key_t key;
-    // When a thread exits, DeleteThreadLocalValue() will be called on
-    // the object managed for that thread.
-    GTEST_CHECK_POSIX_SUCCESS_(
-        pthread_key_create(&key, &DeleteThreadLocalValue));
-    return key;
-  }
-
-  T* GetOrCreateValue() const {
-    ThreadLocalValueHolderBase* const holder =
-        static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
-    if (holder != nullptr) {
-      return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
-    }
-
-    ValueHolder* const new_holder = default_factory_->MakeNewHolder();
-    ThreadLocalValueHolderBase* const holder_base = new_holder;
-    GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
-    return new_holder->pointer();
-  }
-
-  class ValueHolderFactory {
-   public:
-    ValueHolderFactory() {}
-    virtual ~ValueHolderFactory() {}
-    virtual ValueHolder* MakeNewHolder() const = 0;
-
-   private:
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
-  };
-
-  class DefaultValueHolderFactory : public ValueHolderFactory {
-   public:
-    DefaultValueHolderFactory() {}
-    ValueHolder* MakeNewHolder() const override { return new ValueHolder(); }
-
-   private:
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
-  };
-
-  class InstanceValueHolderFactory : public ValueHolderFactory {
-   public:
-    explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
-    ValueHolder* MakeNewHolder() const override {
-      return new ValueHolder(value_);
-    }
-
-   private:
-    const T value_;  // The value for each thread.
-
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
-  };
-
-  // A key pthreads uses for looking up per-thread values.
-  const pthread_key_t key_;
-  std::unique_ptr<ValueHolderFactory> default_factory_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# endif  // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-#else  // GTEST_IS_THREADSAFE
-
-// A dummy implementation of synchronization primitives (mutex, lock,
-// and thread-local variable).  Necessary for compiling Google Test where
-// mutex is not supported - using Google Test in multiple threads is not
-// supported on such platforms.
-
-class Mutex {
- public:
-  Mutex() {}
-  void Lock() {}
-  void Unlock() {}
-  void AssertHeld() const {}
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
-  extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)".  Hence the typedef trick below.
-class GTestMutexLock {
- public:
-  explicit GTestMutexLock(Mutex*) {}  // NOLINT
-};
-
-typedef GTestMutexLock MutexLock;
-
-template <typename T>
-class GTEST_API_ ThreadLocal {
- public:
-  ThreadLocal() : value_() {}
-  explicit ThreadLocal(const T& value) : value_(value) {}
-  T* pointer() { return &value_; }
-  const T* pointer() const { return &value_; }
-  const T& get() const { return value_; }
-  void set(const T& value) { value_ = value; }
- private:
-  T value_;
-};
-
-#endif  // GTEST_IS_THREADSAFE
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-GTEST_API_ size_t GetThreadCount();
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_SEP_ "\\"
-# define GTEST_HAS_ALT_PATH_SEP_ 1
-#else
-# define GTEST_PATH_SEP_ "/"
-# define GTEST_HAS_ALT_PATH_SEP_ 0
-#endif  // GTEST_OS_WINDOWS
-
-// Utilities for char.
-
-// isspace(int ch) and friends accept an unsigned char or EOF.  char
-// may be signed, depending on the compiler (or compiler flags).
-// Therefore we need to cast a char to unsigned char before calling
-// isspace(), etc.
-
-inline bool IsAlpha(char ch) {
-  return isalpha(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsAlNum(char ch) {
-  return isalnum(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsDigit(char ch) {
-  return isdigit(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsLower(char ch) {
-  return islower(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsSpace(char ch) {
-  return isspace(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsUpper(char ch) {
-  return isupper(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsXDigit(char ch) {
-  return isxdigit(static_cast<unsigned char>(ch)) != 0;
-}
-#ifdef __cpp_char8_t
-inline bool IsXDigit(char8_t ch) {
-  return isxdigit(static_cast<unsigned char>(ch)) != 0;
-}
-#endif
-inline bool IsXDigit(char16_t ch) {
-  const unsigned char low_byte = static_cast<unsigned char>(ch);
-  return ch == low_byte && isxdigit(low_byte) != 0;
-}
-inline bool IsXDigit(char32_t ch) {
-  const unsigned char low_byte = static_cast<unsigned char>(ch);
-  return ch == low_byte && isxdigit(low_byte) != 0;
-}
-inline bool IsXDigit(wchar_t ch) {
-  const unsigned char low_byte = static_cast<unsigned char>(ch);
-  return ch == low_byte && isxdigit(low_byte) != 0;
-}
-
-inline char ToLower(char ch) {
-  return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
-}
-inline char ToUpper(char ch) {
-  return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
-}
-
-inline std::string StripTrailingSpaces(std::string str) {
-  std::string::iterator it = str.end();
-  while (it != str.begin() && IsSpace(*--it))
-    it = str.erase(it);
-  return str;
-}
-
-// The testing::internal::posix namespace holds wrappers for common
-// POSIX functions.  These wrappers hide the differences between
-// Windows/MSVC and POSIX systems.  Since some compilers define these
-// standard functions as macros, the wrapper cannot have the same name
-// as the wrapped function.
-
-namespace posix {
-
-// Functions with a different name on Windows.
-
-#if GTEST_OS_WINDOWS
-
-typedef struct _stat StatStruct;
-
-# ifdef __BORLANDC__
-inline int DoIsATTY(int fd) { return isatty(fd); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
-  return stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-# else  // !__BORLANDC__
-#  if GTEST_OS_WINDOWS_MOBILE
-inline int DoIsATTY(int /* fd */) { return 0; }
-#  else
-inline int DoIsATTY(int fd) { return _isatty(fd); }
-#  endif  // GTEST_OS_WINDOWS_MOBILE
-inline int StrCaseCmp(const char* s1, const char* s2) {
-  return _stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return _strdup(src); }
-# endif  // __BORLANDC__
-
-# if GTEST_OS_WINDOWS_MOBILE
-inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
-// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
-// time and thus not defined there.
-# else
-inline int FileNo(FILE* file) { return _fileno(file); }
-inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
-inline int RmDir(const char* dir) { return _rmdir(dir); }
-inline bool IsDir(const StatStruct& st) {
-  return (_S_IFDIR & st.st_mode) != 0;
-}
-# endif  // GTEST_OS_WINDOWS_MOBILE
-
-#elif GTEST_OS_ESP8266
-typedef struct stat StatStruct;
-
-inline int FileNo(FILE* file) { return fileno(file); }
-inline int DoIsATTY(int fd) { return isatty(fd); }
-inline int Stat(const char* path, StatStruct* buf) {
-  // stat function not implemented on ESP8266
-  return 0;
-}
-inline int StrCaseCmp(const char* s1, const char* s2) {
-  return strcasecmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-inline int RmDir(const char* dir) { return rmdir(dir); }
-inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
-
-#else
-
-typedef struct stat StatStruct;
-
-inline int FileNo(FILE* file) { return fileno(file); }
-inline int DoIsATTY(int fd) { return isatty(fd); }
-inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
-  return strcasecmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-inline int RmDir(const char* dir) { return rmdir(dir); }
-inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
-
-#endif  // GTEST_OS_WINDOWS
-
-inline int IsATTY(int fd) {
-  // DoIsATTY might change errno (for example ENOTTY in case you redirect stdout
-  // to a file on Linux), which is unexpected, so save the previous value, and
-  // restore it after the call.
-  int savedErrno = errno;
-  int isAttyValue = DoIsATTY(fd);
-  errno = savedErrno;
-
-  return isAttyValue;
-}
-
-// Functions deprecated by MSVC 8.0.
-
-GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-
-// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
-// StrError() aren't needed on Windows CE at this time and thus not
-// defined there.
-
-#if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && \
-    !GTEST_OS_WINDOWS_RT && !GTEST_OS_ESP8266 && !GTEST_OS_XTENSA
-inline int ChDir(const char* dir) { return chdir(dir); }
-#endif
-inline FILE* FOpen(const char* path, const char* mode) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
-  struct wchar_codecvt : public std::codecvt<wchar_t, char, std::mbstate_t> {};
-  std::wstring_convert<wchar_codecvt> converter;
-  std::wstring wide_path = converter.from_bytes(path);
-  std::wstring wide_mode = converter.from_bytes(mode);
-  return _wfopen(wide_path.c_str(), wide_mode.c_str());
-#else  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
-  return fopen(path, mode);
-#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
-}
-#if !GTEST_OS_WINDOWS_MOBILE
-inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
-  return freopen(path, mode, stream);
-}
-inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
-#endif
-inline int FClose(FILE* fp) { return fclose(fp); }
-#if !GTEST_OS_WINDOWS_MOBILE
-inline int Read(int fd, void* buf, unsigned int count) {
-  return static_cast<int>(read(fd, buf, count));
-}
-inline int Write(int fd, const void* buf, unsigned int count) {
-  return static_cast<int>(write(fd, buf, count));
-}
-inline int Close(int fd) { return close(fd); }
-inline const char* StrError(int errnum) { return strerror(errnum); }
-#endif
-inline const char* GetEnv(const char* name) {
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
-    GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
-  // We are on an embedded platform, which has no environment variables.
-  static_cast<void>(name);  // To prevent 'unused argument' warning.
-  return nullptr;
-#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
-  // Environment variables which we programmatically clear will be set to the
-  // empty string rather than unset (NULL).  Handle that case.
-  const char* const env = getenv(name);
-  return (env != nullptr && env[0] != '\0') ? env : nullptr;
-#else
-  return getenv(name);
-#endif
-}
-
-GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Windows CE has no C library. The abort() function is used in
-// several places in Google Test. This implementation provides a reasonable
-// imitation of standard behaviour.
-[[noreturn]] void Abort();
-#else
-[[noreturn]] inline void Abort() { abort(); }
-#endif  // GTEST_OS_WINDOWS_MOBILE
-
-}  // namespace posix
-
-// MSVC "deprecates" snprintf and issues warnings wherever it is used.  In
-// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
-// MSVC-based platforms.  We map the GTEST_SNPRINTF_ macro to the appropriate
-// function in order to achieve that.  We use macro definition here because
-// snprintf is a variadic function.
-#if _MSC_VER && !GTEST_OS_WINDOWS_MOBILE
-// MSVC 2005 and above support variadic macros.
-# define GTEST_SNPRINTF_(buffer, size, format, ...) \
-     _snprintf_s(buffer, size, size, format, __VA_ARGS__)
-#elif defined(_MSC_VER)
-// Windows CE does not define _snprintf_s
-# define GTEST_SNPRINTF_ _snprintf
-#else
-# define GTEST_SNPRINTF_ snprintf
-#endif
-
-// The biggest signed integer type the compiler supports.
-//
-// long long is guaranteed to be at least 64-bits in C++11.
-using BiggestInt = long long;  // NOLINT
-
-// The maximum number a BiggestInt can represent.
-constexpr BiggestInt kMaxBiggestInt = (std::numeric_limits<BiggestInt>::max)();
-
-// This template class serves as a compile-time function from size to
-// type.  It maps a size in bytes to a primitive type with that
-// size. e.g.
-//
-//   TypeWithSize<4>::UInt
-//
-// is typedef-ed to be unsigned int (unsigned integer made up of 4
-// bytes).
-//
-// Such functionality should belong to STL, but I cannot find it
-// there.
-//
-// Google Test uses this class in the implementation of floating-point
-// comparison.
-//
-// For now it only handles UInt (unsigned int) as that's all Google Test
-// needs.  Other types can be easily added in the future if need
-// arises.
-template <size_t size>
-class TypeWithSize {
- public:
-  // This prevents the user from using TypeWithSize<N> with incorrect
-  // values of N.
-  using UInt = void;
-};
-
-// The specialization for size 4.
-template <>
-class TypeWithSize<4> {
- public:
-  using Int = std::int32_t;
-  using UInt = std::uint32_t;
-};
-
-// The specialization for size 8.
-template <>
-class TypeWithSize<8> {
- public:
-  using Int = std::int64_t;
-  using UInt = std::uint64_t;
-};
-
-// Integer types of known sizes.
-using TimeInMillis = int64_t;  // Represents time in milliseconds.
-
-// Utilities for command line flags and environment variables.
-
-// Macro for referencing flags.
-#if !defined(GTEST_FLAG)
-# define GTEST_FLAG(name) FLAGS_gtest_##name
-#endif  // !defined(GTEST_FLAG)
-
-#if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-# define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
-#endif  // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-
-#if !defined(GTEST_DECLARE_bool_)
-# define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver
-
-// Macros for declaring flags.
-# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
-# define GTEST_DECLARE_int32_(name) \
-    GTEST_API_ extern std::int32_t GTEST_FLAG(name)
-# define GTEST_DECLARE_string_(name) \
-    GTEST_API_ extern ::std::string GTEST_FLAG(name)
-
-// Macros for defining flags.
-# define GTEST_DEFINE_bool_(name, default_val, doc) \
-    GTEST_API_ bool GTEST_FLAG(name) = (default_val)
-# define GTEST_DEFINE_int32_(name, default_val, doc) \
-    GTEST_API_ std::int32_t GTEST_FLAG(name) = (default_val)
-# define GTEST_DEFINE_string_(name, default_val, doc) \
-    GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
-
-#endif  // !defined(GTEST_DECLARE_bool_)
-
-// Thread annotations
-#if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-# define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
-# define GTEST_LOCK_EXCLUDED_(locks)
-#endif  // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-
-// Parses 'str' for a 32-bit signed integer.  If successful, writes the result
-// to *value and returns true; otherwise leaves *value unchanged and returns
-// false.
-GTEST_API_ bool ParseInt32(const Message& src_text, const char* str,
-                           int32_t* value);
-
-// Parses a bool/int32_t/string from the environment variable
-// corresponding to the given Google Test flag.
-bool BoolFromGTestEnv(const char* flag, bool default_val);
-GTEST_API_ int32_t Int32FromGTestEnv(const char* flag, int32_t default_val);
-std::string OutputFlagAlsoCheckEnvVar();
-const char* StringFromGTestEnv(const char* flag, const char* default_val);
-
-}  // namespace internal
-}  // namespace testing
-
-#if !defined(GTEST_INTERNAL_DEPRECATED)
-
-// Internal Macro to mark an API deprecated, for googletest usage only
-// Usage: class GTEST_INTERNAL_DEPRECATED(message) MyClass or
-// GTEST_INTERNAL_DEPRECATED(message) <return_type> myFunction(); Every usage of
-// a deprecated entity will trigger a warning when compiled with
-// `-Wdeprecated-declarations` option (clang, gcc, any __GNUC__ compiler).
-// For msvc /W3 option will need to be used
-// Note that for 'other' compilers this macro evaluates to nothing to prevent
-// compilations errors.
-#if defined(_MSC_VER)
-#define GTEST_INTERNAL_DEPRECATED(message) __declspec(deprecated(message))
-#elif defined(__GNUC__)
-#define GTEST_INTERNAL_DEPRECATED(message) __attribute__((deprecated(message)))
-#else
-#define GTEST_INTERNAL_DEPRECATED(message)
-#endif
-
-#endif  // !defined(GTEST_INTERNAL_DEPRECATED)
-
-#if GTEST_HAS_ABSL
-// Always use absl::any for UniversalPrinter<> specializations if googletest
-// is built with absl support.
-#define GTEST_INTERNAL_HAS_ANY 1
-#include "absl/types/any.h"
-namespace testing {
-namespace internal {
-using Any = ::absl::any;
-}  // namespace internal
-}  // namespace testing
-#else
-#ifdef __has_include
-#if __has_include(<any>) && __cplusplus >= 201703L
-// Otherwise for C++17 and higher use std::any for UniversalPrinter<>
-// specializations.
-#define GTEST_INTERNAL_HAS_ANY 1
-#include <any>
-namespace testing {
-namespace internal {
-using Any = ::std::any;
-}  // namespace internal
-}  // namespace testing
-// The case where absl is configured NOT to alias std::any is not
-// supported.
-#endif  // __has_include(<any>) && __cplusplus >= 201703L
-#endif  // __has_include
-#endif  // GTEST_HAS_ABSL
-
-#if GTEST_HAS_ABSL
-// Always use absl::optional for UniversalPrinter<> specializations if
-// googletest is built with absl support.
-#define GTEST_INTERNAL_HAS_OPTIONAL 1
-#include "absl/types/optional.h"
-namespace testing {
-namespace internal {
-template <typename T>
-using Optional = ::absl::optional<T>;
-}  // namespace internal
-}  // namespace testing
-#else
-#ifdef __has_include
-#if __has_include(<optional>) && __cplusplus >= 201703L
-// Otherwise for C++17 and higher use std::optional for UniversalPrinter<>
-// specializations.
-#define GTEST_INTERNAL_HAS_OPTIONAL 1
-#include <optional>
-namespace testing {
-namespace internal {
-template <typename T>
-using Optional = ::std::optional<T>;
-}  // namespace internal
-}  // namespace testing
-// The case where absl is configured NOT to alias std::optional is not
-// supported.
-#endif  // __has_include(<optional>) && __cplusplus >= 201703L
-#endif  // __has_include
-#endif  // GTEST_HAS_ABSL
-
-#if GTEST_HAS_ABSL
-// Always use absl::string_view for Matcher<> specializations if googletest
-// is built with absl support.
-# define GTEST_INTERNAL_HAS_STRING_VIEW 1
-#include "absl/strings/string_view.h"
-namespace testing {
-namespace internal {
-using StringView = ::absl::string_view;
-}  // namespace internal
-}  // namespace testing
-#else
-# ifdef __has_include
-#   if __has_include(<string_view>) && __cplusplus >= 201703L
-// Otherwise for C++17 and higher use std::string_view for Matcher<>
-// specializations.
-#   define GTEST_INTERNAL_HAS_STRING_VIEW 1
-#include <string_view>
-namespace testing {
-namespace internal {
-using StringView = ::std::string_view;
-}  // namespace internal
-}  // namespace testing
-// The case where absl is configured NOT to alias std::string_view is not
-// supported.
-#  endif  // __has_include(<string_view>) && __cplusplus >= 201703L
-# endif  // __has_include
-#endif  // GTEST_HAS_ABSL
-
-#if GTEST_HAS_ABSL
-// Always use absl::variant for UniversalPrinter<> specializations if googletest
-// is built with absl support.
-#define GTEST_INTERNAL_HAS_VARIANT 1
-#include "absl/types/variant.h"
-namespace testing {
-namespace internal {
-template <typename... T>
-using Variant = ::absl::variant<T...>;
-}  // namespace internal
-}  // namespace testing
-#else
-#ifdef __has_include
-#if __has_include(<variant>) && __cplusplus >= 201703L
-// Otherwise for C++17 and higher use std::variant for UniversalPrinter<>
-// specializations.
-#define GTEST_INTERNAL_HAS_VARIANT 1
-#include <variant>
-namespace testing {
-namespace internal {
-template <typename... T>
-using Variant = ::std::variant<T...>;
-}  // namespace internal
-}  // namespace testing
-// The case where absl is configured NOT to alias std::variant is not supported.
-#endif  // __has_include(<variant>) && __cplusplus >= 201703L
-#endif  // __has_include
-#endif  // GTEST_HAS_ABSL
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-
-#if GTEST_OS_LINUX
-# include <stdlib.h>
-# include <sys/types.h>
-# include <sys/wait.h>
-# include <unistd.h>
-#endif  // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#include <ctype.h>
-#include <float.h>
-#include <string.h>
-#include <cstdint>
-#include <iomanip>
-#include <limits>
-#include <map>
-#include <set>
-#include <string>
-#include <type_traits>
-#include <vector>
-
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the Message class.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user
-// program!
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-
-#include <limits>
-#include <memory>
-#include <sstream>
-
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-// Ensures that there is at least one operator<< in the global namespace.
-// See Message& operator<<(...) below for why.
-void operator<<(const testing::internal::Secret&, int);
-
-namespace testing {
-
-// The Message class works like an ostream repeater.
-//
-// Typical usage:
-//
-//   1. You stream a bunch of values to a Message object.
-//      It will remember the text in a stringstream.
-//   2. Then you stream the Message object to an ostream.
-//      This causes the text in the Message to be streamed
-//      to the ostream.
-//
-// For example;
-//
-//   testing::Message foo;
-//   foo << 1 << " != " << 2;
-//   std::cout << foo;
-//
-// will print "1 != 2".
-//
-// Message is not intended to be inherited from.  In particular, its
-// destructor is not virtual.
-//
-// Note that stringstream behaves differently in gcc and in MSVC.  You
-// can stream a NULL char pointer to it in the former, but not in the
-// latter (it causes an access violation if you do).  The Message
-// class hides this difference by treating a NULL char pointer as
-// "(null)".
-class GTEST_API_ Message {
- private:
-  // The type of basic IO manipulators (endl, ends, and flush) for
-  // narrow streams.
-  typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
-
- public:
-  // Constructs an empty Message.
-  Message();
-
-  // Copy constructor.
-  Message(const Message& msg) : ss_(new ::std::stringstream) {  // NOLINT
-    *ss_ << msg.GetString();
-  }
-
-  // Constructs a Message from a C-string.
-  explicit Message(const char* str) : ss_(new ::std::stringstream) {
-    *ss_ << str;
-  }
-
-  // Streams a non-pointer value to this object.
-  template <typename T>
-  inline Message& operator <<(const T& val) {
-    // Some libraries overload << for STL containers.  These
-    // overloads are defined in the global namespace instead of ::std.
-    //
-    // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
-    // overloads are visible in either the std namespace or the global
-    // namespace, but not other namespaces, including the testing
-    // namespace which Google Test's Message class is in.
-    //
-    // To allow STL containers (and other types that has a << operator
-    // defined in the global namespace) to be used in Google Test
-    // assertions, testing::Message must access the custom << operator
-    // from the global namespace.  With this using declaration,
-    // overloads of << defined in the global namespace and those
-    // visible via Koenig lookup are both exposed in this function.
-    using ::operator <<;
-    *ss_ << val;
-    return *this;
-  }
-
-  // Streams a pointer value to this object.
-  //
-  // This function is an overload of the previous one.  When you
-  // stream a pointer to a Message, this definition will be used as it
-  // is more specialized.  (The C++ Standard, section
-  // [temp.func.order].)  If you stream a non-pointer, then the
-  // previous definition will be used.
-  //
-  // The reason for this overload is that streaming a NULL pointer to
-  // ostream is undefined behavior.  Depending on the compiler, you
-  // may get "0", "(nil)", "(null)", or an access violation.  To
-  // ensure consistent result across compilers, we always treat NULL
-  // as "(null)".
-  template <typename T>
-  inline Message& operator <<(T* const& pointer) {  // NOLINT
-    if (pointer == nullptr) {
-      *ss_ << "(null)";
-    } else {
-      *ss_ << pointer;
-    }
-    return *this;
-  }
-
-  // Since the basic IO manipulators are overloaded for both narrow
-  // and wide streams, we have to provide this specialized definition
-  // of operator <<, even though its body is the same as the
-  // templatized version above.  Without this definition, streaming
-  // endl or other basic IO manipulators to Message will confuse the
-  // compiler.
-  Message& operator <<(BasicNarrowIoManip val) {
-    *ss_ << val;
-    return *this;
-  }
-
-  // Instead of 1/0, we want to see true/false for bool values.
-  Message& operator <<(bool b) {
-    return *this << (b ? "true" : "false");
-  }
-
-  // These two overloads allow streaming a wide C string to a Message
-  // using the UTF-8 encoding.
-  Message& operator <<(const wchar_t* wide_c_str);
-  Message& operator <<(wchar_t* wide_c_str);
-
-#if GTEST_HAS_STD_WSTRING
-  // Converts the given wide string to a narrow string using the UTF-8
-  // encoding, and streams the result to this Message object.
-  Message& operator <<(const ::std::wstring& wstr);
-#endif  // GTEST_HAS_STD_WSTRING
-
-  // Gets the text streamed to this object so far as an std::string.
-  // Each '\0' character in the buffer is replaced with "\\0".
-  //
-  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-  std::string GetString() const;
-
- private:
-  // We'll hold the text streamed to this object here.
-  const std::unique_ptr< ::std::stringstream> ss_;
-
-  // We declare (but don't implement) this to prevent the compiler
-  // from implementing the assignment operator.
-  void operator=(const Message&);
-};
-
-// Streams a Message to an ostream.
-inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
-  return os << sb.GetString();
-}
-
-namespace internal {
-
-// Converts a streamable value to an std::string.  A NULL pointer is
-// converted to "(null)".  When the input value is a ::string,
-// ::std::string, ::wstring, or ::std::wstring object, each NUL
-// character in it is replaced with "\\0".
-template <typename T>
-std::string StreamableToString(const T& streamable) {
-  return (Message() << streamable).GetString();
-}
-
-}  // namespace internal
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Google Test filepath utilities
-//
-// This header file declares classes and functions used internally by
-// Google Test.  They are subject to change without notice.
-//
-// This file is #included in gtest/internal/gtest-internal.h.
-// Do not include this header file separately!
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file declares the String class and functions used internally by
-// Google Test.  They are subject to change without notice. They should not used
-// by code external to Google Test.
-//
-// This header file is #included by gtest-internal.h.
-// It should not be #included by other files.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-
-#ifdef __BORLANDC__
-// string.h is not guaranteed to provide strcpy on C++ Builder.
-# include <mem.h>
-#endif
-
-#include <string.h>
-#include <cstdint>
-#include <string>
-
-
-namespace testing {
-namespace internal {
-
-// String - an abstract class holding static string utilities.
-class GTEST_API_ String {
- public:
-  // Static utility methods
-
-  // Clones a 0-terminated C string, allocating memory using new.  The
-  // caller is responsible for deleting the return value using
-  // delete[].  Returns the cloned string, or NULL if the input is
-  // NULL.
-  //
-  // This is different from strdup() in string.h, which allocates
-  // memory using malloc().
-  static const char* CloneCString(const char* c_str);
-
-#if GTEST_OS_WINDOWS_MOBILE
-  // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
-  // able to pass strings to Win32 APIs on CE we need to convert them
-  // to 'Unicode', UTF-16.
-
-  // Creates a UTF-16 wide string from the given ANSI string, allocating
-  // memory using new. The caller is responsible for deleting the return
-  // value using delete[]. Returns the wide string, or NULL if the
-  // input is NULL.
-  //
-  // The wide string is created using the ANSI codepage (CP_ACP) to
-  // match the behaviour of the ANSI versions of Win32 calls and the
-  // C runtime.
-  static LPCWSTR AnsiToUtf16(const char* c_str);
-
-  // Creates an ANSI string from the given wide string, allocating
-  // memory using new. The caller is responsible for deleting the return
-  // value using delete[]. Returns the ANSI string, or NULL if the
-  // input is NULL.
-  //
-  // The returned string is created using the ANSI codepage (CP_ACP) to
-  // match the behaviour of the ANSI versions of Win32 calls and the
-  // C runtime.
-  static const char* Utf16ToAnsi(LPCWSTR utf16_str);
-#endif
-
-  // Compares two C strings.  Returns true if and only if they have the same
-  // content.
-  //
-  // Unlike strcmp(), this function can handle NULL argument(s).  A
-  // NULL C string is considered different to any non-NULL C string,
-  // including the empty string.
-  static bool CStringEquals(const char* lhs, const char* rhs);
-
-  // Converts a wide C string to a String using the UTF-8 encoding.
-  // NULL will be converted to "(null)".  If an error occurred during
-  // the conversion, "(failed to convert from wide string)" is
-  // returned.
-  static std::string ShowWideCString(const wchar_t* wide_c_str);
-
-  // Compares two wide C strings.  Returns true if and only if they have the
-  // same content.
-  //
-  // Unlike wcscmp(), this function can handle NULL argument(s).  A
-  // NULL C string is considered different to any non-NULL C string,
-  // including the empty string.
-  static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
-
-  // Compares two C strings, ignoring case.  Returns true if and only if
-  // they have the same content.
-  //
-  // Unlike strcasecmp(), this function can handle NULL argument(s).
-  // A NULL C string is considered different to any non-NULL C string,
-  // including the empty string.
-  static bool CaseInsensitiveCStringEquals(const char* lhs,
-                                           const char* rhs);
-
-  // Compares two wide C strings, ignoring case.  Returns true if and only if
-  // they have the same content.
-  //
-  // Unlike wcscasecmp(), this function can handle NULL argument(s).
-  // A NULL C string is considered different to any non-NULL wide C string,
-  // including the empty string.
-  // NB: The implementations on different platforms slightly differ.
-  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
-  // environment variable. On GNU platform this method uses wcscasecmp
-  // which compares according to LC_CTYPE category of the current locale.
-  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
-  // current locale.
-  static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
-                                               const wchar_t* rhs);
-
-  // Returns true if and only if the given string ends with the given suffix,
-  // ignoring case. Any string is considered to end with an empty suffix.
-  static bool EndsWithCaseInsensitive(
-      const std::string& str, const std::string& suffix);
-
-  // Formats an int value as "%02d".
-  static std::string FormatIntWidth2(int value);  // "%02d" for width == 2
-
-  // Formats an int value to given width with leading zeros.
-  static std::string FormatIntWidthN(int value, int width);
-
-  // Formats an int value as "%X".
-  static std::string FormatHexInt(int value);
-
-  // Formats an int value as "%X".
-  static std::string FormatHexUInt32(uint32_t value);
-
-  // Formats a byte as "%02X".
-  static std::string FormatByte(unsigned char value);
-
- private:
-  String();  // Not meant to be instantiated.
-};  // class String
-
-// Gets the content of the stringstream's buffer as an std::string.  Each '\0'
-// character in the buffer is replaced with "\\0".
-GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
-
-}  // namespace internal
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-namespace internal {
-
-// FilePath - a class for file and directory pathname manipulation which
-// handles platform-specific conventions (like the pathname separator).
-// Used for helper functions for naming files in a directory for xml output.
-// Except for Set methods, all methods are const or static, which provides an
-// "immutable value object" -- useful for peace of mind.
-// A FilePath with a value ending in a path separator ("like/this/") represents
-// a directory, otherwise it is assumed to represent a file. In either case,
-// it may or may not represent an actual file or directory in the file system.
-// Names are NOT checked for syntax correctness -- no checking for illegal
-// characters, malformed paths, etc.
-
-class GTEST_API_ FilePath {
- public:
-  FilePath() : pathname_("") { }
-  FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
-
-  explicit FilePath(const std::string& pathname) : pathname_(pathname) {
-    Normalize();
-  }
-
-  FilePath& operator=(const FilePath& rhs) {
-    Set(rhs);
-    return *this;
-  }
-
-  void Set(const FilePath& rhs) {
-    pathname_ = rhs.pathname_;
-  }
-
-  const std::string& string() const { return pathname_; }
-  const char* c_str() const { return pathname_.c_str(); }
-
-  // Returns the current working directory, or "" if unsuccessful.
-  static FilePath GetCurrentDir();
-
-  // Given directory = "dir", base_name = "test", number = 0,
-  // extension = "xml", returns "dir/test.xml". If number is greater
-  // than zero (e.g., 12), returns "dir/test_12.xml".
-  // On Windows platform, uses \ as the separator rather than /.
-  static FilePath MakeFileName(const FilePath& directory,
-                               const FilePath& base_name,
-                               int number,
-                               const char* extension);
-
-  // Given directory = "dir", relative_path = "test.xml",
-  // returns "dir/test.xml".
-  // On Windows, uses \ as the separator rather than /.
-  static FilePath ConcatPaths(const FilePath& directory,
-                              const FilePath& relative_path);
-
-  // Returns a pathname for a file that does not currently exist. The pathname
-  // will be directory/base_name.extension or
-  // directory/base_name_<number>.extension if directory/base_name.extension
-  // already exists. The number will be incremented until a pathname is found
-  // that does not already exist.
-  // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
-  // There could be a race condition if two or more processes are calling this
-  // function at the same time -- they could both pick the same filename.
-  static FilePath GenerateUniqueFileName(const FilePath& directory,
-                                         const FilePath& base_name,
-                                         const char* extension);
-
-  // Returns true if and only if the path is "".
-  bool IsEmpty() const { return pathname_.empty(); }
-
-  // If input name has a trailing separator character, removes it and returns
-  // the name, otherwise return the name string unmodified.
-  // On Windows platform, uses \ as the separator, other platforms use /.
-  FilePath RemoveTrailingPathSeparator() const;
-
-  // Returns a copy of the FilePath with the directory part removed.
-  // Example: FilePath("path/to/file").RemoveDirectoryName() returns
-  // FilePath("file"). If there is no directory part ("just_a_file"), it returns
-  // the FilePath unmodified. If there is no file part ("just_a_dir/") it
-  // returns an empty FilePath ("").
-  // On Windows platform, '\' is the path separator, otherwise it is '/'.
-  FilePath RemoveDirectoryName() const;
-
-  // RemoveFileName returns the directory path with the filename removed.
-  // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
-  // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
-  // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
-  // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
-  // On Windows platform, '\' is the path separator, otherwise it is '/'.
-  FilePath RemoveFileName() const;
-
-  // Returns a copy of the FilePath with the case-insensitive extension removed.
-  // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
-  // FilePath("dir/file"). If a case-insensitive extension is not
-  // found, returns a copy of the original FilePath.
-  FilePath RemoveExtension(const char* extension) const;
-
-  // Creates directories so that path exists. Returns true if successful or if
-  // the directories already exist; returns false if unable to create
-  // directories for any reason. Will also return false if the FilePath does
-  // not represent a directory (that is, it doesn't end with a path separator).
-  bool CreateDirectoriesRecursively() const;
-
-  // Create the directory so that path exists. Returns true if successful or
-  // if the directory already exists; returns false if unable to create the
-  // directory for any reason, including if the parent directory does not
-  // exist. Not named "CreateDirectory" because that's a macro on Windows.
-  bool CreateFolder() const;
-
-  // Returns true if FilePath describes something in the file-system,
-  // either a file, directory, or whatever, and that something exists.
-  bool FileOrDirectoryExists() const;
-
-  // Returns true if pathname describes a directory in the file-system
-  // that exists.
-  bool DirectoryExists() const;
-
-  // Returns true if FilePath ends with a path separator, which indicates that
-  // it is intended to represent a directory. Returns false otherwise.
-  // This does NOT check that a directory (or file) actually exists.
-  bool IsDirectory() const;
-
-  // Returns true if pathname describes a root directory. (Windows has one
-  // root directory per disk drive.)
-  bool IsRootDirectory() const;
-
-  // Returns true if pathname describes an absolute path.
-  bool IsAbsolutePath() const;
-
- private:
-  // Replaces multiple consecutive separators with a single separator.
-  // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
-  // redundancies that might be in a pathname involving "." or "..".
-  //
-  // A pathname with multiple consecutive separators may occur either through
-  // user error or as a result of some scripts or APIs that generate a pathname
-  // with a trailing separator. On other platforms the same API or script
-  // may NOT generate a pathname with a trailing "/". Then elsewhere that
-  // pathname may have another "/" and pathname components added to it,
-  // without checking for the separator already being there.
-  // The script language and operating system may allow paths like "foo//bar"
-  // but some of the functions in FilePath will not handle that correctly. In
-  // particular, RemoveTrailingPathSeparator() only removes one separator, and
-  // it is called in CreateDirectoriesRecursively() assuming that it will change
-  // a pathname from directory syntax (trailing separator) to filename syntax.
-  //
-  // On Windows this method also replaces the alternate path separator '/' with
-  // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
-  // "bar\\foo".
-
-  void Normalize();
-
-  // Returns a pointer to the last occurrence of a valid path separator in
-  // the FilePath. On Windows, for example, both '/' and '\' are valid path
-  // separators. Returns NULL if no path separator was found.
-  const char* FindLastPathSeparator() const;
-
-  std::string pathname_;
-};  // class FilePath
-
-}  // namespace internal
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Type utilities needed for implementing typed and type-parameterized
-// tests.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-
-
-// #ifdef __GNUC__ is too general here.  It is possible to use gcc without using
-// libstdc++ (which is where cxxabi.h comes from).
-# if GTEST_HAS_CXXABI_H_
-#  include <cxxabi.h>
-# elif defined(__HP_aCC)
-#  include <acxx_demangle.h>
-# endif  // GTEST_HASH_CXXABI_H_
-
-namespace testing {
-namespace internal {
-
-// Canonicalizes a given name with respect to the Standard C++ Library.
-// This handles removing the inline namespace within `std` that is
-// used by various standard libraries (e.g., `std::__1`).  Names outside
-// of namespace std are returned unmodified.
-inline std::string CanonicalizeForStdLibVersioning(std::string s) {
-  static const char prefix[] = "std::__";
-  if (s.compare(0, strlen(prefix), prefix) == 0) {
-    std::string::size_type end = s.find("::", strlen(prefix));
-    if (end != s.npos) {
-      // Erase everything between the initial `std` and the second `::`.
-      s.erase(strlen("std"), end - strlen("std"));
-    }
-  }
-  return s;
-}
-
-#if GTEST_HAS_RTTI
-// GetTypeName(const std::type_info&) returns a human-readable name of type T.
-inline std::string GetTypeName(const std::type_info& type) {
-  const char* const name = type.name();
-#if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
-  int status = 0;
-  // gcc's implementation of typeid(T).name() mangles the type name,
-  // so we have to demangle it.
-#if GTEST_HAS_CXXABI_H_
-  using abi::__cxa_demangle;
-#endif  // GTEST_HAS_CXXABI_H_
-  char* const readable_name = __cxa_demangle(name, nullptr, nullptr, &status);
-  const std::string name_str(status == 0 ? readable_name : name);
-  free(readable_name);
-  return CanonicalizeForStdLibVersioning(name_str);
-#else
-  return name;
-#endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
-}
-#endif  // GTEST_HAS_RTTI
-
-// GetTypeName<T>() returns a human-readable name of type T if and only if
-// RTTI is enabled, otherwise it returns a dummy type name.
-// NB: This function is also used in Google Mock, so don't move it inside of
-// the typed-test-only section below.
-template <typename T>
-std::string GetTypeName() {
-#if GTEST_HAS_RTTI
-  return GetTypeName(typeid(T));
-#else
-  return "<type>";
-#endif  // GTEST_HAS_RTTI
-}
-
-// A unique type indicating an empty node
-struct None {};
-
-# define GTEST_TEMPLATE_ template <typename T> class
-
-// The template "selector" struct TemplateSel<Tmpl> is used to
-// represent Tmpl, which must be a class template with one type
-// parameter, as a type.  TemplateSel<Tmpl>::Bind<T>::type is defined
-// as the type Tmpl<T>.  This allows us to actually instantiate the
-// template "selected" by TemplateSel<Tmpl>.
-//
-// This trick is necessary for simulating typedef for class templates,
-// which C++ doesn't support directly.
-template <GTEST_TEMPLATE_ Tmpl>
-struct TemplateSel {
-  template <typename T>
-  struct Bind {
-    typedef Tmpl<T> type;
-  };
-};
-
-# define GTEST_BIND_(TmplSel, T) \
-  TmplSel::template Bind<T>::type
-
-template <GTEST_TEMPLATE_ Head_, GTEST_TEMPLATE_... Tail_>
-struct Templates {
-  using Head = TemplateSel<Head_>;
-  using Tail = Templates<Tail_...>;
-};
-
-template <GTEST_TEMPLATE_ Head_>
-struct Templates<Head_> {
-  using Head = TemplateSel<Head_>;
-  using Tail = None;
-};
-
-// Tuple-like type lists
-template <typename Head_, typename... Tail_>
-struct Types {
-  using Head = Head_;
-  using Tail = Types<Tail_...>;
-};
-
-template <typename Head_>
-struct Types<Head_> {
-  using Head = Head_;
-  using Tail = None;
-};
-
-// Helper metafunctions to tell apart a single type from types
-// generated by ::testing::Types
-template <typename... Ts>
-struct ProxyTypeList {
-  using type = Types<Ts...>;
-};
-
-template <typename>
-struct is_proxy_type_list : std::false_type {};
-
-template <typename... Ts>
-struct is_proxy_type_list<ProxyTypeList<Ts...>> : std::true_type {};
-
-// Generator which conditionally creates type lists.
-// It recognizes if a requested type list should be created
-// and prevents creating a new type list nested within another one.
-template <typename T>
-struct GenerateTypeList {
- private:
-  using proxy = typename std::conditional<is_proxy_type_list<T>::value, T,
-                                          ProxyTypeList<T>>::type;
-
- public:
-  using type = typename proxy::type;
-};
-
-}  // namespace internal
-
-template <typename... Ts>
-using Types = internal::ProxyTypeList<Ts...>;
-
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-
-// Due to C++ preprocessor weirdness, we need double indirection to
-// concatenate two tokens when one of them is __LINE__.  Writing
-//
-//   foo ## __LINE__
-//
-// will result in the token foo__LINE__, instead of foo followed by
-// the current line number.  For more details, see
-// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
-#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
-#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
-
-// Stringifies its argument.
-// Work around a bug in visual studio which doesn't accept code like this:
-//
-//   #define GTEST_STRINGIFY_(name) #name
-//   #define MACRO(a, b, c) ... GTEST_STRINGIFY_(a) ...
-//   MACRO(, x, y)
-//
-// Complaining about the argument to GTEST_STRINGIFY_ being empty.
-// This is allowed by the spec.
-#define GTEST_STRINGIFY_HELPER_(name, ...) #name
-#define GTEST_STRINGIFY_(...) GTEST_STRINGIFY_HELPER_(__VA_ARGS__, )
-
-namespace proto2 {
-class MessageLite;
-}
-
-namespace testing {
-
-// Forward declarations.
-
-class AssertionResult;                 // Result of an assertion.
-class Message;                         // Represents a failure message.
-class Test;                            // Represents a test.
-class TestInfo;                        // Information about a test.
-class TestPartResult;                  // Result of a test part.
-class UnitTest;                        // A collection of test suites.
-
-template <typename T>
-::std::string PrintToString(const T& value);
-
-namespace internal {
-
-struct TraceInfo;                      // Information about a trace point.
-class TestInfoImpl;                    // Opaque implementation of TestInfo
-class UnitTestImpl;                    // Opaque implementation of UnitTest
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-GTEST_API_ extern const char kStackTraceMarker[];
-
-// An IgnoredValue object can be implicitly constructed from ANY value.
-class IgnoredValue {
-  struct Sink {};
- public:
-  // This constructor template allows any value to be implicitly
-  // converted to IgnoredValue.  The object has no data member and
-  // doesn't try to remember anything about the argument.  We
-  // deliberately omit the 'explicit' keyword in order to allow the
-  // conversion to be implicit.
-  // Disable the conversion if T already has a magical conversion operator.
-  // Otherwise we get ambiguity.
-  template <typename T,
-            typename std::enable_if<!std::is_convertible<T, Sink>::value,
-                                    int>::type = 0>
-  IgnoredValue(const T& /* ignored */) {}  // NOLINT(runtime/explicit)
-};
-
-// Appends the user-supplied message to the Google-Test-generated message.
-GTEST_API_ std::string AppendUserMessage(
-    const std::string& gtest_msg, const Message& user_msg);
-
-#if GTEST_HAS_EXCEPTIONS
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4275 \
-/* an exported class was derived from a class that was not exported */)
-
-// This exception is thrown by (and only by) a failed Google Test
-// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
-// are enabled).  We derive it from std::runtime_error, which is for
-// errors presumably detectable only at run time.  Since
-// std::runtime_error inherits from std::exception, many testing
-// frameworks know how to extract and print the message inside it.
-class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
- public:
-  explicit GoogleTestFailureException(const TestPartResult& failure);
-};
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4275
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-namespace edit_distance {
-// Returns the optimal edits to go from 'left' to 'right'.
-// All edits cost the same, with replace having lower priority than
-// add/remove.
-// Simple implementation of the Wagner-Fischer algorithm.
-// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
-enum EditType { kMatch, kAdd, kRemove, kReplace };
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
-    const std::vector<size_t>& left, const std::vector<size_t>& right);
-
-// Same as above, but the input is represented as strings.
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
-    const std::vector<std::string>& left,
-    const std::vector<std::string>& right);
-
-// Create a diff of the input strings in Unified diff format.
-GTEST_API_ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
-                                         const std::vector<std::string>& right,
-                                         size_t context = 2);
-
-}  // namespace edit_distance
-
-// Calculate the diff between 'left' and 'right' and return it in unified diff
-// format.
-// If not null, stores in 'total_line_count' the total number of lines found
-// in left + right.
-GTEST_API_ std::string DiffStrings(const std::string& left,
-                                   const std::string& right,
-                                   size_t* total_line_count);
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings.  For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-//   expected_expression: "foo"
-//   actual_expression:   "bar"
-//   expected_value:      "5"
-//   actual_value:        "6"
-//
-// The ignoring_case parameter is true if and only if the assertion is a
-// *_STRCASEEQ*.  When it's true, the string " (ignoring case)" will
-// be inserted into the message.
-GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
-                                     const char* actual_expression,
-                                     const std::string& expected_value,
-                                     const std::string& actual_value,
-                                     bool ignoring_case);
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-GTEST_API_ std::string GetBoolAssertionFailureMessage(
-    const AssertionResult& assertion_result,
-    const char* expression_text,
-    const char* actual_predicate_value,
-    const char* expected_predicate_value);
-
-// This template class represents an IEEE floating-point number
-// (either single-precision or double-precision, depending on the
-// template parameters).
-//
-// The purpose of this class is to do more sophisticated number
-// comparison.  (Due to round-off error, etc, it's very unlikely that
-// two floating-points will be equal exactly.  Hence a naive
-// comparison by the == operation often doesn't work.)
-//
-// Format of IEEE floating-point:
-//
-//   The most-significant bit being the leftmost, an IEEE
-//   floating-point looks like
-//
-//     sign_bit exponent_bits fraction_bits
-//
-//   Here, sign_bit is a single bit that designates the sign of the
-//   number.
-//
-//   For float, there are 8 exponent bits and 23 fraction bits.
-//
-//   For double, there are 11 exponent bits and 52 fraction bits.
-//
-//   More details can be found at
-//   http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
-//
-// Template parameter:
-//
-//   RawType: the raw floating-point type (either float or double)
-template <typename RawType>
-class FloatingPoint {
- public:
-  // Defines the unsigned integer type that has the same size as the
-  // floating point number.
-  typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
-
-  // Constants.
-
-  // # of bits in a number.
-  static const size_t kBitCount = 8*sizeof(RawType);
-
-  // # of fraction bits in a number.
-  static const size_t kFractionBitCount =
-    std::numeric_limits<RawType>::digits - 1;
-
-  // # of exponent bits in a number.
-  static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
-
-  // The mask for the sign bit.
-  static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
-
-  // The mask for the fraction bits.
-  static const Bits kFractionBitMask =
-    ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
-
-  // The mask for the exponent bits.
-  static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
-
-  // How many ULP's (Units in the Last Place) we want to tolerate when
-  // comparing two numbers.  The larger the value, the more error we
-  // allow.  A 0 value means that two numbers must be exactly the same
-  // to be considered equal.
-  //
-  // The maximum error of a single floating-point operation is 0.5
-  // units in the last place.  On Intel CPU's, all floating-point
-  // calculations are done with 80-bit precision, while double has 64
-  // bits.  Therefore, 4 should be enough for ordinary use.
-  //
-  // See the following article for more details on ULP:
-  // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
-  static const uint32_t kMaxUlps = 4;
-
-  // Constructs a FloatingPoint from a raw floating-point number.
-  //
-  // On an Intel CPU, passing a non-normalized NAN (Not a Number)
-  // around may change its bits, although the new value is guaranteed
-  // to be also a NAN.  Therefore, don't expect this constructor to
-  // preserve the bits in x when x is a NAN.
-  explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
-
-  // Static methods
-
-  // Reinterprets a bit pattern as a floating-point number.
-  //
-  // This function is needed to test the AlmostEquals() method.
-  static RawType ReinterpretBits(const Bits bits) {
-    FloatingPoint fp(0);
-    fp.u_.bits_ = bits;
-    return fp.u_.value_;
-  }
-
-  // Returns the floating-point number that represent positive infinity.
-  static RawType Infinity() {
-    return ReinterpretBits(kExponentBitMask);
-  }
-
-  // Returns the maximum representable finite floating-point number.
-  static RawType Max();
-
-  // Non-static methods
-
-  // Returns the bits that represents this number.
-  const Bits &bits() const { return u_.bits_; }
-
-  // Returns the exponent bits of this number.
-  Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
-
-  // Returns the fraction bits of this number.
-  Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
-
-  // Returns the sign bit of this number.
-  Bits sign_bit() const { return kSignBitMask & u_.bits_; }
-
-  // Returns true if and only if this is NAN (not a number).
-  bool is_nan() const {
-    // It's a NAN if the exponent bits are all ones and the fraction
-    // bits are not entirely zeros.
-    return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
-  }
-
-  // Returns true if and only if this number is at most kMaxUlps ULP's away
-  // from rhs.  In particular, this function:
-  //
-  //   - returns false if either number is (or both are) NAN.
-  //   - treats really large numbers as almost equal to infinity.
-  //   - thinks +0.0 and -0.0 are 0 DLP's apart.
-  bool AlmostEquals(const FloatingPoint& rhs) const {
-    // The IEEE standard says that any comparison operation involving
-    // a NAN must return false.
-    if (is_nan() || rhs.is_nan()) return false;
-
-    return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
-        <= kMaxUlps;
-  }
-
- private:
-  // The data type used to store the actual floating-point number.
-  union FloatingPointUnion {
-    RawType value_;  // The raw floating-point number.
-    Bits bits_;      // The bits that represent the number.
-  };
-
-  // Converts an integer from the sign-and-magnitude representation to
-  // the biased representation.  More precisely, let N be 2 to the
-  // power of (kBitCount - 1), an integer x is represented by the
-  // unsigned number x + N.
-  //
-  // For instance,
-  //
-  //   -N + 1 (the most negative number representable using
-  //          sign-and-magnitude) is represented by 1;
-  //   0      is represented by N; and
-  //   N - 1  (the biggest number representable using
-  //          sign-and-magnitude) is represented by 2N - 1.
-  //
-  // Read http://en.wikipedia.org/wiki/Signed_number_representations
-  // for more details on signed number representations.
-  static Bits SignAndMagnitudeToBiased(const Bits &sam) {
-    if (kSignBitMask & sam) {
-      // sam represents a negative number.
-      return ~sam + 1;
-    } else {
-      // sam represents a positive number.
-      return kSignBitMask | sam;
-    }
-  }
-
-  // Given two numbers in the sign-and-magnitude representation,
-  // returns the distance between them as an unsigned number.
-  static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
-                                                     const Bits &sam2) {
-    const Bits biased1 = SignAndMagnitudeToBiased(sam1);
-    const Bits biased2 = SignAndMagnitudeToBiased(sam2);
-    return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
-  }
-
-  FloatingPointUnion u_;
-};
-
-// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
-// macro defined by <windows.h>.
-template <>
-inline float FloatingPoint<float>::Max() { return FLT_MAX; }
-template <>
-inline double FloatingPoint<double>::Max() { return DBL_MAX; }
-
-// Typedefs the instances of the FloatingPoint template class that we
-// care to use.
-typedef FloatingPoint<float> Float;
-typedef FloatingPoint<double> Double;
-
-// In order to catch the mistake of putting tests that use different
-// test fixture classes in the same test suite, we need to assign
-// unique IDs to fixture classes and compare them.  The TypeId type is
-// used to hold such IDs.  The user should treat TypeId as an opaque
-// type: the only operation allowed on TypeId values is to compare
-// them for equality using the == operator.
-typedef const void* TypeId;
-
-template <typename T>
-class TypeIdHelper {
- public:
-  // dummy_ must not have a const type.  Otherwise an overly eager
-  // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
-  // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
-  static bool dummy_;
-};
-
-template <typename T>
-bool TypeIdHelper<T>::dummy_ = false;
-
-// GetTypeId<T>() returns the ID of type T.  Different values will be
-// returned for different types.  Calling the function twice with the
-// same type argument is guaranteed to return the same ID.
-template <typename T>
-TypeId GetTypeId() {
-  // The compiler is required to allocate a different
-  // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
-  // the template.  Therefore, the address of dummy_ is guaranteed to
-  // be unique.
-  return &(TypeIdHelper<T>::dummy_);
-}
-
-// Returns the type ID of ::testing::Test.  Always call this instead
-// of GetTypeId< ::testing::Test>() to get the type ID of
-// ::testing::Test, as the latter may give the wrong result due to a
-// suspected linker bug when compiling Google Test as a Mac OS X
-// framework.
-GTEST_API_ TypeId GetTestTypeId();
-
-// Defines the abstract factory interface that creates instances
-// of a Test object.
-class TestFactoryBase {
- public:
-  virtual ~TestFactoryBase() {}
-
-  // Creates a test instance to run. The instance is both created and destroyed
-  // within TestInfoImpl::Run()
-  virtual Test* CreateTest() = 0;
-
- protected:
-  TestFactoryBase() {}
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
-};
-
-// This class provides implementation of TeastFactoryBase interface.
-// It is used in TEST and TEST_F macros.
-template <class TestClass>
-class TestFactoryImpl : public TestFactoryBase {
- public:
-  Test* CreateTest() override { return new TestClass; }
-};
-
-#if GTEST_OS_WINDOWS
-
-// Predicate-formatters for implementing the HRESULT checking macros
-// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
-// We pass a long instead of HRESULT to avoid causing an
-// include dependency for the HRESULT type.
-GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
-                                            long hr);  // NOLINT
-GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
-                                            long hr);  // NOLINT
-
-#endif  // GTEST_OS_WINDOWS
-
-// Types of SetUpTestSuite() and TearDownTestSuite() functions.
-using SetUpTestSuiteFunc = void (*)();
-using TearDownTestSuiteFunc = void (*)();
-
-struct CodeLocation {
-  CodeLocation(const std::string& a_file, int a_line)
-      : file(a_file), line(a_line) {}
-
-  std::string file;
-  int line;
-};
-
-//  Helper to identify which setup function for TestCase / TestSuite to call.
-//  Only one function is allowed, either TestCase or TestSute but not both.
-
-// Utility functions to help SuiteApiResolver
-using SetUpTearDownSuiteFuncType = void (*)();
-
-inline SetUpTearDownSuiteFuncType GetNotDefaultOrNull(
-    SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def) {
-  return a == def ? nullptr : a;
-}
-
-template <typename T>
-//  Note that SuiteApiResolver inherits from T because
-//  SetUpTestSuite()/TearDownTestSuite() could be protected. Ths way
-//  SuiteApiResolver can access them.
-struct SuiteApiResolver : T {
-  // testing::Test is only forward declared at this point. So we make it a
-  // dependend class for the compiler to be OK with it.
-  using Test =
-      typename std::conditional<sizeof(T) != 0, ::testing::Test, void>::type;
-
-  static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite(const char* filename,
-                                                        int line_num) {
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-    SetUpTearDownSuiteFuncType test_case_fp =
-        GetNotDefaultOrNull(&T::SetUpTestCase, &Test::SetUpTestCase);
-    SetUpTearDownSuiteFuncType test_suite_fp =
-        GetNotDefaultOrNull(&T::SetUpTestSuite, &Test::SetUpTestSuite);
-
-    GTEST_CHECK_(!test_case_fp || !test_suite_fp)
-        << "Test can not provide both SetUpTestSuite and SetUpTestCase, please "
-           "make sure there is only one present at "
-        << filename << ":" << line_num;
-
-    return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
-#else
-    (void)(filename);
-    (void)(line_num);
-    return &T::SetUpTestSuite;
-#endif
-  }
-
-  static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite(const char* filename,
-                                                           int line_num) {
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-    SetUpTearDownSuiteFuncType test_case_fp =
-        GetNotDefaultOrNull(&T::TearDownTestCase, &Test::TearDownTestCase);
-    SetUpTearDownSuiteFuncType test_suite_fp =
-        GetNotDefaultOrNull(&T::TearDownTestSuite, &Test::TearDownTestSuite);
-
-    GTEST_CHECK_(!test_case_fp || !test_suite_fp)
-        << "Test can not provide both TearDownTestSuite and TearDownTestCase,"
-           " please make sure there is only one present at"
-        << filename << ":" << line_num;
-
-    return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
-#else
-    (void)(filename);
-    (void)(line_num);
-    return &T::TearDownTestSuite;
-#endif
-  }
-};
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
-//   test_suite_name:  name of the test suite
-//   name:             name of the test
-//   type_param:       the name of the test's type parameter, or NULL if
-//                     this is not a typed or a type-parameterized test.
-//   value_param:      text representation of the test's value parameter,
-//                     or NULL if this is not a type-parameterized test.
-//   code_location:    code location where the test is defined
-//   fixture_class_id: ID of the test fixture class
-//   set_up_tc:        pointer to the function that sets up the test suite
-//   tear_down_tc:     pointer to the function that tears down the test suite
-//   factory:          pointer to the factory that creates a test object.
-//                     The newly created TestInfo instance will assume
-//                     ownership of the factory object.
-GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
-    const char* test_suite_name, const char* name, const char* type_param,
-    const char* value_param, CodeLocation code_location,
-    TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
-    TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory);
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false.  None of pstr, *pstr, and prefix can be NULL.
-GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-// State of the definition of a type-parameterized test suite.
-class GTEST_API_ TypedTestSuitePState {
- public:
-  TypedTestSuitePState() : registered_(false) {}
-
-  // Adds the given test name to defined_test_names_ and return true
-  // if the test suite hasn't been registered; otherwise aborts the
-  // program.
-  bool AddTestName(const char* file, int line, const char* case_name,
-                   const char* test_name) {
-    if (registered_) {
-      fprintf(stderr,
-              "%s Test %s must be defined before "
-              "REGISTER_TYPED_TEST_SUITE_P(%s, ...).\n",
-              FormatFileLocation(file, line).c_str(), test_name, case_name);
-      fflush(stderr);
-      posix::Abort();
-    }
-    registered_tests_.insert(
-        ::std::make_pair(test_name, CodeLocation(file, line)));
-    return true;
-  }
-
-  bool TestExists(const std::string& test_name) const {
-    return registered_tests_.count(test_name) > 0;
-  }
-
-  const CodeLocation& GetCodeLocation(const std::string& test_name) const {
-    RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
-    GTEST_CHECK_(it != registered_tests_.end());
-    return it->second;
-  }
-
-  // Verifies that registered_tests match the test names in
-  // defined_test_names_; returns registered_tests if successful, or
-  // aborts the program otherwise.
-  const char* VerifyRegisteredTestNames(const char* test_suite_name,
-                                        const char* file, int line,
-                                        const char* registered_tests);
-
- private:
-  typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
-
-  bool registered_;
-  RegisteredTestsMap registered_tests_;
-};
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-using TypedTestCasePState = TypedTestSuitePState;
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-// Skips to the first non-space char after the first comma in 'str';
-// returns NULL if no comma is found in 'str'.
-inline const char* SkipComma(const char* str) {
-  const char* comma = strchr(str, ',');
-  if (comma == nullptr) {
-    return nullptr;
-  }
-  while (IsSpace(*(++comma))) {}
-  return comma;
-}
-
-// Returns the prefix of 'str' before the first comma in it; returns
-// the entire string if it contains no comma.
-inline std::string GetPrefixUntilComma(const char* str) {
-  const char* comma = strchr(str, ',');
-  return comma == nullptr ? str : std::string(str, comma);
-}
-
-// Splits a given string on a given delimiter, populating a given
-// vector with the fields.
-void SplitString(const ::std::string& str, char delimiter,
-                 ::std::vector< ::std::string>* dest);
-
-// The default argument to the template below for the case when the user does
-// not provide a name generator.
-struct DefaultNameGenerator {
-  template <typename T>
-  static std::string GetName(int i) {
-    return StreamableToString(i);
-  }
-};
-
-template <typename Provided = DefaultNameGenerator>
-struct NameGeneratorSelector {
-  typedef Provided type;
-};
-
-template <typename NameGenerator>
-void GenerateNamesRecursively(internal::None, std::vector<std::string>*, int) {}
-
-template <typename NameGenerator, typename Types>
-void GenerateNamesRecursively(Types, std::vector<std::string>* result, int i) {
-  result->push_back(NameGenerator::template GetName<typename Types::Head>(i));
-  GenerateNamesRecursively<NameGenerator>(typename Types::Tail(), result,
-                                          i + 1);
-}
-
-template <typename NameGenerator, typename Types>
-std::vector<std::string> GenerateNames() {
-  std::vector<std::string> result;
-  GenerateNamesRecursively<NameGenerator>(Types(), &result, 0);
-  return result;
-}
-
-// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
-// registers a list of type-parameterized tests with Google Test.  The
-// return value is insignificant - we just need to return something
-// such that we can call this function in a namespace scope.
-//
-// Implementation note: The GTEST_TEMPLATE_ macro declares a template
-// template parameter.  It's defined in gtest-type-util.h.
-template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
-class TypeParameterizedTest {
- public:
-  // 'index' is the index of the test in the type list 'Types'
-  // specified in INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, TestSuite,
-  // Types).  Valid values for 'index' are [0, N - 1] where N is the
-  // length of Types.
-  static bool Register(const char* prefix, const CodeLocation& code_location,
-                       const char* case_name, const char* test_names, int index,
-                       const std::vector<std::string>& type_names =
-                           GenerateNames<DefaultNameGenerator, Types>()) {
-    typedef typename Types::Head Type;
-    typedef Fixture<Type> FixtureClass;
-    typedef typename GTEST_BIND_(TestSel, Type) TestClass;
-
-    // First, registers the first type-parameterized test in the type
-    // list.
-    MakeAndRegisterTestInfo(
-        (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name +
-         "/" + type_names[static_cast<size_t>(index)])
-            .c_str(),
-        StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
-        GetTypeName<Type>().c_str(),
-        nullptr,  // No value parameter.
-        code_location, GetTypeId<FixtureClass>(),
-        SuiteApiResolver<TestClass>::GetSetUpCaseOrSuite(
-            code_location.file.c_str(), code_location.line),
-        SuiteApiResolver<TestClass>::GetTearDownCaseOrSuite(
-            code_location.file.c_str(), code_location.line),
-        new TestFactoryImpl<TestClass>);
-
-    // Next, recurses (at compile time) with the tail of the type list.
-    return TypeParameterizedTest<Fixture, TestSel,
-                                 typename Types::Tail>::Register(prefix,
-                                                                 code_location,
-                                                                 case_name,
-                                                                 test_names,
-                                                                 index + 1,
-                                                                 type_names);
-  }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, class TestSel>
-class TypeParameterizedTest<Fixture, TestSel, internal::None> {
- public:
-  static bool Register(const char* /*prefix*/, const CodeLocation&,
-                       const char* /*case_name*/, const char* /*test_names*/,
-                       int /*index*/,
-                       const std::vector<std::string>& =
-                           std::vector<std::string>() /*type_names*/) {
-    return true;
-  }
-};
-
-GTEST_API_ void RegisterTypeParameterizedTestSuite(const char* test_suite_name,
-                                                   CodeLocation code_location);
-GTEST_API_ void RegisterTypeParameterizedTestSuiteInstantiation(
-    const char* case_name);
-
-// TypeParameterizedTestSuite<Fixture, Tests, Types>::Register()
-// registers *all combinations* of 'Tests' and 'Types' with Google
-// Test.  The return value is insignificant - we just need to return
-// something such that we can call this function in a namespace scope.
-template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
-class TypeParameterizedTestSuite {
- public:
-  static bool Register(const char* prefix, CodeLocation code_location,
-                       const TypedTestSuitePState* state, const char* case_name,
-                       const char* test_names,
-                       const std::vector<std::string>& type_names =
-                           GenerateNames<DefaultNameGenerator, Types>()) {
-    RegisterTypeParameterizedTestSuiteInstantiation(case_name);
-    std::string test_name = StripTrailingSpaces(
-        GetPrefixUntilComma(test_names));
-    if (!state->TestExists(test_name)) {
-      fprintf(stderr, "Failed to get code location for test %s.%s at %s.",
-              case_name, test_name.c_str(),
-              FormatFileLocation(code_location.file.c_str(),
-                                 code_location.line).c_str());
-      fflush(stderr);
-      posix::Abort();
-    }
-    const CodeLocation& test_location = state->GetCodeLocation(test_name);
-
-    typedef typename Tests::Head Head;
-
-    // First, register the first test in 'Test' for each type in 'Types'.
-    TypeParameterizedTest<Fixture, Head, Types>::Register(
-        prefix, test_location, case_name, test_names, 0, type_names);
-
-    // Next, recurses (at compile time) with the tail of the test list.
-    return TypeParameterizedTestSuite<Fixture, typename Tests::Tail,
-                                      Types>::Register(prefix, code_location,
-                                                       state, case_name,
-                                                       SkipComma(test_names),
-                                                       type_names);
-  }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, typename Types>
-class TypeParameterizedTestSuite<Fixture, internal::None, Types> {
- public:
-  static bool Register(const char* /*prefix*/, const CodeLocation&,
-                       const TypedTestSuitePState* /*state*/,
-                       const char* /*case_name*/, const char* /*test_names*/,
-                       const std::vector<std::string>& =
-                           std::vector<std::string>() /*type_names*/) {
-    return true;
-  }
-};
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag.  The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
-    UnitTest* unit_test, int skip_count);
-
-// Helpers for suppressing warnings on unreachable code or constant
-// condition.
-
-// Always returns true.
-GTEST_API_ bool AlwaysTrue();
-
-// Always returns false.
-inline bool AlwaysFalse() { return !AlwaysTrue(); }
-
-// Helper for suppressing false warning from Clang on a const char*
-// variable declared in a conditional expression always being NULL in
-// the else branch.
-struct GTEST_API_ ConstCharPtr {
-  ConstCharPtr(const char* str) : value(str) {}
-  operator bool() const { return true; }
-  const char* value;
-};
-
-// Helper for declaring std::string within 'if' statement
-// in pre C++17 build environment.
-struct TrueWithString {
-  TrueWithString() = default;
-  explicit TrueWithString(const char* str) : value(str) {}
-  explicit TrueWithString(const std::string& str) : value(str) {}
-  explicit operator bool() const { return true; }
-  std::string value;
-};
-
-// A simple Linear Congruential Generator for generating random
-// numbers with a uniform distribution.  Unlike rand() and srand(), it
-// doesn't use global state (and therefore can't interfere with user
-// code).  Unlike rand_r(), it's portable.  An LCG isn't very random,
-// but it's good enough for our purposes.
-class GTEST_API_ Random {
- public:
-  static const uint32_t kMaxRange = 1u << 31;
-
-  explicit Random(uint32_t seed) : state_(seed) {}
-
-  void Reseed(uint32_t seed) { state_ = seed; }
-
-  // Generates a random number from [0, range).  Crashes if 'range' is
-  // 0 or greater than kMaxRange.
-  uint32_t Generate(uint32_t range);
-
- private:
-  uint32_t state_;
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
-};
-
-// Turns const U&, U&, const U, and U all into U.
-#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
-  typename std::remove_const<typename std::remove_reference<T>::type>::type
-
-// HasDebugStringAndShortDebugString<T>::value is a compile-time bool constant
-// that's true if and only if T has methods DebugString() and ShortDebugString()
-// that return std::string.
-template <typename T>
-class HasDebugStringAndShortDebugString {
- private:
-  template <typename C>
-  static auto CheckDebugString(C*) -> typename std::is_same<
-      std::string, decltype(std::declval<const C>().DebugString())>::type;
-  template <typename>
-  static std::false_type CheckDebugString(...);
-
-  template <typename C>
-  static auto CheckShortDebugString(C*) -> typename std::is_same<
-      std::string, decltype(std::declval<const C>().ShortDebugString())>::type;
-  template <typename>
-  static std::false_type CheckShortDebugString(...);
-
-  using HasDebugStringType = decltype(CheckDebugString<T>(nullptr));
-  using HasShortDebugStringType = decltype(CheckShortDebugString<T>(nullptr));
-
- public:
-  static constexpr bool value =
-      HasDebugStringType::value && HasShortDebugStringType::value;
-};
-
-template <typename T>
-constexpr bool HasDebugStringAndShortDebugString<T>::value;
-
-// When the compiler sees expression IsContainerTest<C>(0), if C is an
-// STL-style container class, the first overload of IsContainerTest
-// will be viable (since both C::iterator* and C::const_iterator* are
-// valid types and NULL can be implicitly converted to them).  It will
-// be picked over the second overload as 'int' is a perfect match for
-// the type of argument 0.  If C::iterator or C::const_iterator is not
-// a valid type, the first overload is not viable, and the second
-// overload will be picked.  Therefore, we can determine whether C is
-// a container class by checking the type of IsContainerTest<C>(0).
-// The value of the expression is insignificant.
-//
-// In C++11 mode we check the existence of a const_iterator and that an
-// iterator is properly implemented for the container.
-//
-// For pre-C++11 that we look for both C::iterator and C::const_iterator.
-// The reason is that C++ injects the name of a class as a member of the
-// class itself (e.g. you can refer to class iterator as either
-// 'iterator' or 'iterator::iterator').  If we look for C::iterator
-// only, for example, we would mistakenly think that a class named
-// iterator is an STL container.
-//
-// Also note that the simpler approach of overloading
-// IsContainerTest(typename C::const_iterator*) and
-// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
-typedef int IsContainer;
-template <class C,
-          class Iterator = decltype(::std::declval<const C&>().begin()),
-          class = decltype(::std::declval<const C&>().end()),
-          class = decltype(++::std::declval<Iterator&>()),
-          class = decltype(*::std::declval<Iterator>()),
-          class = typename C::const_iterator>
-IsContainer IsContainerTest(int /* dummy */) {
-  return 0;
-}
-
-typedef char IsNotContainer;
-template <class C>
-IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
-
-// Trait to detect whether a type T is a hash table.
-// The heuristic used is that the type contains an inner type `hasher` and does
-// not contain an inner type `reverse_iterator`.
-// If the container is iterable in reverse, then order might actually matter.
-template <typename T>
-struct IsHashTable {
- private:
-  template <typename U>
-  static char test(typename U::hasher*, typename U::reverse_iterator*);
-  template <typename U>
-  static int test(typename U::hasher*, ...);
-  template <typename U>
-  static char test(...);
-
- public:
-  static const bool value = sizeof(test<T>(nullptr, nullptr)) == sizeof(int);
-};
-
-template <typename T>
-const bool IsHashTable<T>::value;
-
-template <typename C,
-          bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer)>
-struct IsRecursiveContainerImpl;
-
-template <typename C>
-struct IsRecursiveContainerImpl<C, false> : public std::false_type {};
-
-// Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to
-// obey the same inconsistencies as the IsContainerTest, namely check if
-// something is a container is relying on only const_iterator in C++11 and
-// is relying on both const_iterator and iterator otherwise
-template <typename C>
-struct IsRecursiveContainerImpl<C, true> {
-  using value_type = decltype(*std::declval<typename C::const_iterator>());
-  using type =
-      std::is_same<typename std::remove_const<
-                       typename std::remove_reference<value_type>::type>::type,
-                   C>;
-};
-
-// IsRecursiveContainer<Type> is a unary compile-time predicate that
-// evaluates whether C is a recursive container type. A recursive container
-// type is a container type whose value_type is equal to the container type
-// itself. An example for a recursive container type is
-// boost::filesystem::path, whose iterator has a value_type that is equal to
-// boost::filesystem::path.
-template <typename C>
-struct IsRecursiveContainer : public IsRecursiveContainerImpl<C>::type {};
-
-// Utilities for native arrays.
-
-// ArrayEq() compares two k-dimensional native arrays using the
-// elements' operator==, where k can be any integer >= 0.  When k is
-// 0, ArrayEq() degenerates into comparing a single pair of values.
-
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
-  return internal::ArrayEq(lhs, N, rhs);
-}
-
-// This helper reduces code bloat.  If we instead put its logic inside
-// the previous ArrayEq() function, arrays with different sizes would
-// lead to different copies of the template code.
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
-  for (size_t i = 0; i != size; i++) {
-    if (!internal::ArrayEq(lhs[i], rhs[i]))
-      return false;
-  }
-  return true;
-}
-
-// Finds the first element in the iterator range [begin, end) that
-// equals elem.  Element may be a native array type itself.
-template <typename Iter, typename Element>
-Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
-  for (Iter it = begin; it != end; ++it) {
-    if (internal::ArrayEq(*it, elem))
-      return it;
-  }
-  return end;
-}
-
-// CopyArray() copies a k-dimensional native array using the elements'
-// operator=, where k can be any integer >= 0.  When k is 0,
-// CopyArray() degenerates into copying a single value.
-
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline void CopyArray(const T& from, U* to) { *to = from; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline void CopyArray(const T(&from)[N], U(*to)[N]) {
-  internal::CopyArray(from, N, *to);
-}
-
-// This helper reduces code bloat.  If we instead put its logic inside
-// the previous CopyArray() function, arrays with different sizes
-// would lead to different copies of the template code.
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to) {
-  for (size_t i = 0; i != size; i++) {
-    internal::CopyArray(from[i], to + i);
-  }
-}
-
-// The relation between an NativeArray object (see below) and the
-// native array it represents.
-// We use 2 different structs to allow non-copyable types to be used, as long
-// as RelationToSourceReference() is passed.
-struct RelationToSourceReference {};
-struct RelationToSourceCopy {};
-
-// Adapts a native array to a read-only STL-style container.  Instead
-// of the complete STL container concept, this adaptor only implements
-// members useful for Google Mock's container matchers.  New members
-// should be added as needed.  To simplify the implementation, we only
-// support Element being a raw type (i.e. having no top-level const or
-// reference modifier).  It's the client's responsibility to satisfy
-// this requirement.  Element can be an array type itself (hence
-// multi-dimensional arrays are supported).
-template <typename Element>
-class NativeArray {
- public:
-  // STL-style container typedefs.
-  typedef Element value_type;
-  typedef Element* iterator;
-  typedef const Element* const_iterator;
-
-  // Constructs from a native array. References the source.
-  NativeArray(const Element* array, size_t count, RelationToSourceReference) {
-    InitRef(array, count);
-  }
-
-  // Constructs from a native array. Copies the source.
-  NativeArray(const Element* array, size_t count, RelationToSourceCopy) {
-    InitCopy(array, count);
-  }
-
-  // Copy constructor.
-  NativeArray(const NativeArray& rhs) {
-    (this->*rhs.clone_)(rhs.array_, rhs.size_);
-  }
-
-  ~NativeArray() {
-    if (clone_ != &NativeArray::InitRef)
-      delete[] array_;
-  }
-
-  // STL-style container methods.
-  size_t size() const { return size_; }
-  const_iterator begin() const { return array_; }
-  const_iterator end() const { return array_ + size_; }
-  bool operator==(const NativeArray& rhs) const {
-    return size() == rhs.size() &&
-        ArrayEq(begin(), size(), rhs.begin());
-  }
-
- private:
-  static_assert(!std::is_const<Element>::value, "Type must not be const");
-  static_assert(!std::is_reference<Element>::value,
-                "Type must not be a reference");
-
-  // Initializes this object with a copy of the input.
-  void InitCopy(const Element* array, size_t a_size) {
-    Element* const copy = new Element[a_size];
-    CopyArray(array, a_size, copy);
-    array_ = copy;
-    size_ = a_size;
-    clone_ = &NativeArray::InitCopy;
-  }
-
-  // Initializes this object with a reference of the input.
-  void InitRef(const Element* array, size_t a_size) {
-    array_ = array;
-    size_ = a_size;
-    clone_ = &NativeArray::InitRef;
-  }
-
-  const Element* array_;
-  size_t size_;
-  void (NativeArray::*clone_)(const Element*, size_t);
-};
-
-// Backport of std::index_sequence.
-template <size_t... Is>
-struct IndexSequence {
-  using type = IndexSequence;
-};
-
-// Double the IndexSequence, and one if plus_one is true.
-template <bool plus_one, typename T, size_t sizeofT>
-struct DoubleSequence;
-template <size_t... I, size_t sizeofT>
-struct DoubleSequence<true, IndexSequence<I...>, sizeofT> {
-  using type = IndexSequence<I..., (sizeofT + I)..., 2 * sizeofT>;
-};
-template <size_t... I, size_t sizeofT>
-struct DoubleSequence<false, IndexSequence<I...>, sizeofT> {
-  using type = IndexSequence<I..., (sizeofT + I)...>;
-};
-
-// Backport of std::make_index_sequence.
-// It uses O(ln(N)) instantiation depth.
-template <size_t N>
-struct MakeIndexSequenceImpl
-    : DoubleSequence<N % 2 == 1, typename MakeIndexSequenceImpl<N / 2>::type,
-                     N / 2>::type {};
-
-template <>
-struct MakeIndexSequenceImpl<0> : IndexSequence<> {};
-
-template <size_t N>
-using MakeIndexSequence = typename MakeIndexSequenceImpl<N>::type;
-
-template <typename... T>
-using IndexSequenceFor = typename MakeIndexSequence<sizeof...(T)>::type;
-
-template <size_t>
-struct Ignore {
-  Ignore(...);  // NOLINT
-};
-
-template <typename>
-struct ElemFromListImpl;
-template <size_t... I>
-struct ElemFromListImpl<IndexSequence<I...>> {
-  // We make Ignore a template to solve a problem with MSVC.
-  // A non-template Ignore would work fine with `decltype(Ignore(I))...`, but
-  // MSVC doesn't understand how to deal with that pack expansion.
-  // Use `0 * I` to have a single instantiation of Ignore.
-  template <typename R>
-  static R Apply(Ignore<0 * I>..., R (*)(), ...);
-};
-
-template <size_t N, typename... T>
-struct ElemFromList {
-  using type =
-      decltype(ElemFromListImpl<typename MakeIndexSequence<N>::type>::Apply(
-          static_cast<T (*)()>(nullptr)...));
-};
-
-struct FlatTupleConstructTag {};
-
-template <typename... T>
-class FlatTuple;
-
-template <typename Derived, size_t I>
-struct FlatTupleElemBase;
-
-template <typename... T, size_t I>
-struct FlatTupleElemBase<FlatTuple<T...>, I> {
-  using value_type = typename ElemFromList<I, T...>::type;
-  FlatTupleElemBase() = default;
-  template <typename Arg>
-  explicit FlatTupleElemBase(FlatTupleConstructTag, Arg&& t)
-      : value(std::forward<Arg>(t)) {}
-  value_type value;
-};
-
-template <typename Derived, typename Idx>
-struct FlatTupleBase;
-
-template <size_t... Idx, typename... T>
-struct FlatTupleBase<FlatTuple<T...>, IndexSequence<Idx...>>
-    : FlatTupleElemBase<FlatTuple<T...>, Idx>... {
-  using Indices = IndexSequence<Idx...>;
-  FlatTupleBase() = default;
-  template <typename... Args>
-  explicit FlatTupleBase(FlatTupleConstructTag, Args&&... args)
-      : FlatTupleElemBase<FlatTuple<T...>, Idx>(FlatTupleConstructTag{},
-                                                std::forward<Args>(args))... {}
-
-  template <size_t I>
-  const typename ElemFromList<I, T...>::type& Get() const {
-    return FlatTupleElemBase<FlatTuple<T...>, I>::value;
-  }
-
-  template <size_t I>
-  typename ElemFromList<I, T...>::type& Get() {
-    return FlatTupleElemBase<FlatTuple<T...>, I>::value;
-  }
-
-  template <typename F>
-  auto Apply(F&& f) -> decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
-    return std::forward<F>(f)(Get<Idx>()...);
-  }
-
-  template <typename F>
-  auto Apply(F&& f) const -> decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
-    return std::forward<F>(f)(Get<Idx>()...);
-  }
-};
-
-// Analog to std::tuple but with different tradeoffs.
-// This class minimizes the template instantiation depth, thus allowing more
-// elements than std::tuple would. std::tuple has been seen to require an
-// instantiation depth of more than 10x the number of elements in some
-// implementations.
-// FlatTuple and ElemFromList are not recursive and have a fixed depth
-// regardless of T...
-// MakeIndexSequence, on the other hand, it is recursive but with an
-// instantiation depth of O(ln(N)).
-template <typename... T>
-class FlatTuple
-    : private FlatTupleBase<FlatTuple<T...>,
-                            typename MakeIndexSequence<sizeof...(T)>::type> {
-  using Indices = typename FlatTupleBase<
-      FlatTuple<T...>, typename MakeIndexSequence<sizeof...(T)>::type>::Indices;
-
- public:
-  FlatTuple() = default;
-  template <typename... Args>
-  explicit FlatTuple(FlatTupleConstructTag tag, Args&&... args)
-      : FlatTuple::FlatTupleBase(tag, std::forward<Args>(args)...) {}
-
-  using FlatTuple::FlatTupleBase::Apply;
-  using FlatTuple::FlatTupleBase::Get;
-};
-
-// Utility functions to be called with static_assert to induce deprecation
-// warnings.
-GTEST_INTERNAL_DEPRECATED(
-    "INSTANTIATE_TEST_CASE_P is deprecated, please use "
-    "INSTANTIATE_TEST_SUITE_P")
-constexpr bool InstantiateTestCase_P_IsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
-    "TYPED_TEST_CASE_P is deprecated, please use "
-    "TYPED_TEST_SUITE_P")
-constexpr bool TypedTestCase_P_IsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
-    "TYPED_TEST_CASE is deprecated, please use "
-    "TYPED_TEST_SUITE")
-constexpr bool TypedTestCaseIsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
-    "REGISTER_TYPED_TEST_CASE_P is deprecated, please use "
-    "REGISTER_TYPED_TEST_SUITE_P")
-constexpr bool RegisterTypedTestCase_P_IsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
-    "INSTANTIATE_TYPED_TEST_CASE_P is deprecated, please use "
-    "INSTANTIATE_TYPED_TEST_SUITE_P")
-constexpr bool InstantiateTypedTestCase_P_IsDeprecated() { return true; }
-
-}  // namespace internal
-}  // namespace testing
-
-namespace std {
-// Some standard library implementations use `struct tuple_size` and some use
-// `class tuple_size`. Clang warns about the mismatch.
-// https://reviews.llvm.org/D55466
-#ifdef __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wmismatched-tags"
-#endif
-template <typename... Ts>
-struct tuple_size<testing::internal::FlatTuple<Ts...>>
-    : std::integral_constant<size_t, sizeof...(Ts)> {};
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
-}  // namespace std
-
-#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
-  ::testing::internal::AssertHelper(result_type, file, line, message) \
-    = ::testing::Message()
-
-#define GTEST_MESSAGE_(message, result_type) \
-  GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
-
-#define GTEST_FATAL_FAILURE_(message) \
-  return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
-
-#define GTEST_NONFATAL_FAILURE_(message) \
-  GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
-
-#define GTEST_SUCCESS_(message) \
-  GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
-
-#define GTEST_SKIP_(message) \
-  return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
-
-// Suppress MSVC warning 4072 (unreachable code) for the code following
-// statement if it returns or throws (or doesn't return or throw in some
-// situations).
-// NOTE: The "else" is important to keep this expansion to prevent a top-level
-// "else" from attaching to our "if".
-#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
-  if (::testing::internal::AlwaysTrue()) {                        \
-    statement;                                                    \
-  } else                     /* NOLINT */                         \
-    static_assert(true, "")  // User must have a semicolon after expansion.
-
-#if GTEST_HAS_EXCEPTIONS
-
-namespace testing {
-namespace internal {
-
-class NeverThrown {
- public:
-  const char* what() const noexcept {
-    return "this exception should never be thrown";
-  }
-};
-
-}  // namespace internal
-}  // namespace testing
-
-#if GTEST_HAS_RTTI
-
-#define GTEST_EXCEPTION_TYPE_(e) ::testing::internal::GetTypeName(typeid(e))
-
-#else  // GTEST_HAS_RTTI
-
-#define GTEST_EXCEPTION_TYPE_(e) \
-  std::string { "an std::exception-derived error" }
-
-#endif  // GTEST_HAS_RTTI
-
-#define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)   \
-  catch (typename std::conditional<                                            \
-         std::is_same<typename std::remove_cv<typename std::remove_reference<  \
-                          expected_exception>::type>::type,                    \
-                      std::exception>::value,                                  \
-         const ::testing::internal::NeverThrown&, const std::exception&>::type \
-             e) {                                                              \
-    gtest_msg.value = "Expected: " #statement                                  \
-                      " throws an exception of type " #expected_exception      \
-                      ".\n  Actual: it throws ";                               \
-    gtest_msg.value += GTEST_EXCEPTION_TYPE_(e);                               \
-    gtest_msg.value += " with description \"";                                 \
-    gtest_msg.value += e.what();                                               \
-    gtest_msg.value += "\".";                                                  \
-    goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__);                \
-  }
-
-#else  // GTEST_HAS_EXCEPTIONS
-
-#define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-#define GTEST_TEST_THROW_(statement, expected_exception, fail)              \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_                                             \
-  if (::testing::internal::TrueWithString gtest_msg{}) {                    \
-    bool gtest_caught_expected = false;                                     \
-    try {                                                                   \
-      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement);            \
-    } catch (expected_exception const&) {                                   \
-      gtest_caught_expected = true;                                         \
-    }                                                                       \
-    GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)    \
-    catch (...) {                                                           \
-      gtest_msg.value = "Expected: " #statement                             \
-                        " throws an exception of type " #expected_exception \
-                        ".\n  Actual: it throws a different type.";         \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__);           \
-    }                                                                       \
-    if (!gtest_caught_expected) {                                           \
-      gtest_msg.value = "Expected: " #statement                             \
-                        " throws an exception of type " #expected_exception \
-                        ".\n  Actual: it throws nothing.";                  \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__);           \
-    }                                                                       \
-  } else /*NOLINT*/                                                         \
-    GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__)                   \
-        : fail(gtest_msg.value.c_str())
-
-#if GTEST_HAS_EXCEPTIONS
-
-#define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_()                \
-  catch (std::exception const& e) {                               \
-    gtest_msg.value = "it throws ";                               \
-    gtest_msg.value += GTEST_EXCEPTION_TYPE_(e);                  \
-    gtest_msg.value += " with description \"";                    \
-    gtest_msg.value += e.what();                                  \
-    gtest_msg.value += "\".";                                     \
-    goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
-  }
-
-#else  // GTEST_HAS_EXCEPTIONS
-
-#define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_()
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-#define GTEST_TEST_NO_THROW_(statement, fail) \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-  if (::testing::internal::TrueWithString gtest_msg{}) { \
-    try { \
-      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
-    } \
-    GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
-    catch (...) { \
-      gtest_msg.value = "it throws."; \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
-    } \
-  } else \
-    GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
-      fail(("Expected: " #statement " doesn't throw an exception.\n" \
-            "  Actual: " + gtest_msg.value).c_str())
-
-#define GTEST_TEST_ANY_THROW_(statement, fail) \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-  if (::testing::internal::AlwaysTrue()) { \
-    bool gtest_caught_any = false; \
-    try { \
-      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
-    } \
-    catch (...) { \
-      gtest_caught_any = true; \
-    } \
-    if (!gtest_caught_any) { \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
-    } \
-  } else \
-    GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
-      fail("Expected: " #statement " throws an exception.\n" \
-           "  Actual: it doesn't.")
-
-
-// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
-// either a boolean expression or an AssertionResult. text is a textual
-// representation of expression as it was passed into the EXPECT_TRUE.
-#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-  if (const ::testing::AssertionResult gtest_ar_ = \
-      ::testing::AssertionResult(expression)) \
-    ; \
-  else \
-    fail(::testing::internal::GetBoolAssertionFailureMessage(\
-        gtest_ar_, text, #actual, #expected).c_str())
-
-#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-  if (::testing::internal::AlwaysTrue()) { \
-    ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
-    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
-    if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
-    } \
-  } else \
-    GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
-      fail("Expected: " #statement " doesn't generate new fatal " \
-           "failures in the current thread.\n" \
-           "  Actual: it does.")
-
-// Expands to the name of the class that implements the given test.
-#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
-  test_suite_name##_##test_name##_Test
-
-// Helper macro for defining tests.
-#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id)      \
-  static_assert(sizeof(GTEST_STRINGIFY_(test_suite_name)) > 1,                \
-                "test_suite_name must not be empty");                         \
-  static_assert(sizeof(GTEST_STRINGIFY_(test_name)) > 1,                      \
-                "test_name must not be empty");                               \
-  class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)                    \
-      : public parent_class {                                                 \
-   public:                                                                    \
-    GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() = default;           \
-    ~GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() override = default; \
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name,   \
-                                                           test_name));       \
-    GTEST_DISALLOW_MOVE_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name,   \
-                                                           test_name));       \
-                                                                              \
-   private:                                                                   \
-    void TestBody() override;                                                 \
-    static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;     \
-  };                                                                          \
-                                                                              \
-  ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_suite_name,          \
-                                                    test_name)::test_info_ =  \
-      ::testing::internal::MakeAndRegisterTestInfo(                           \
-          #test_suite_name, #test_name, nullptr, nullptr,                     \
-          ::testing::internal::CodeLocation(__FILE__, __LINE__), (parent_id), \
-          ::testing::internal::SuiteApiResolver<                              \
-              parent_class>::GetSetUpCaseOrSuite(__FILE__, __LINE__),         \
-          ::testing::internal::SuiteApiResolver<                              \
-              parent_class>::GetTearDownCaseOrSuite(__FILE__, __LINE__),      \
-          new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_(    \
-              test_suite_name, test_name)>);                                  \
-  void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the public API for death tests.  It is
-// #included by gtest.h so a user doesn't need to include this
-// directly.
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines internal utilities needed for implementing
-// death tests.  They are subject to change without notice.
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This file implements just enough of the matcher interface to allow
-// EXPECT_DEATH and friends to accept a matcher argument.
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
-
-#include <atomic>
-#include <memory>
-#include <ostream>
-#include <string>
-#include <type_traits>
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Test - The Google C++ Testing and Mocking Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-//   void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// A user can teach this function how to print a class type T by
-// defining either operator<<() or PrintTo() in the namespace that
-// defines T.  More specifically, the FIRST defined function in the
-// following list will be used (assuming T is defined in namespace
-// foo):
-//
-//   1. foo::PrintTo(const T&, ostream*)
-//   2. operator<<(ostream&, const T&) defined in either foo or the
-//      global namespace.
-//
-// However if T is an STL-style container then it is printed element-wise
-// unless foo::PrintTo(const T&, ostream*) is defined. Note that
-// operator<<() is ignored for container types.
-//
-// If none of the above is defined, it will print the debug string of
-// the value if it is a protocol buffer, or print the raw bytes in the
-// value otherwise.
-//
-// To aid debugging: when T is a reference type, the address of the
-// value is also printed; when T is a (const) char pointer, both the
-// pointer value and the NUL-terminated string it points to are
-// printed.
-//
-// We also provide some convenient wrappers:
-//
-//   // Prints a value to a string.  For a (const or not) char
-//   // pointer, the NUL-terminated string (but not the pointer) is
-//   // printed.
-//   std::string ::testing::PrintToString(const T& value);
-//
-//   // Prints a value tersely: for a reference type, the referenced
-//   // value (but not the address) is printed; for a (const or not) char
-//   // pointer, the NUL-terminated string (but not the pointer) is
-//   // printed.
-//   void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
-//
-//   // Prints value using the type inferred by the compiler.  The difference
-//   // from UniversalTersePrint() is that this function prints both the
-//   // pointer and the NUL-terminated string for a (const or not) char pointer.
-//   void ::testing::internal::UniversalPrint(const T& value, ostream*);
-//
-//   // Prints the fields of a tuple tersely to a string vector, one
-//   // element for each field. Tuple support must be enabled in
-//   // gtest-port.h.
-//   std::vector<string> UniversalTersePrintTupleFieldsToStrings(
-//       const Tuple& value);
-//
-// Known limitation:
-//
-// The print primitives print the elements of an STL-style container
-// using the compiler-inferred type of *iter where iter is a
-// const_iterator of the container.  When const_iterator is an input
-// iterator but not a forward iterator, this inferred type may not
-// match value_type, and the print output may be incorrect.  In
-// practice, this is rarely a problem as for most containers
-// const_iterator is a forward iterator.  We'll fix this if there's an
-// actual need for it.  Note that this fix cannot rely on value_type
-// being defined as many user-defined container types don't have
-// value_type.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-
-#include <functional>
-#include <memory>
-#include <ostream>  // NOLINT
-#include <sstream>
-#include <string>
-#include <tuple>
-#include <type_traits>
-#include <utility>
-#include <vector>
-
-
-namespace testing {
-
-// Definitions in the internal* namespaces are subject to change without notice.
-// DO NOT USE THEM IN USER CODE!
-namespace internal {
-
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os);
-
-// Used to print an STL-style container when the user doesn't define
-// a PrintTo() for it.
-struct ContainerPrinter {
-  template <typename T,
-            typename = typename std::enable_if<
-                (sizeof(IsContainerTest<T>(0)) == sizeof(IsContainer)) &&
-                !IsRecursiveContainer<T>::value>::type>
-  static void PrintValue(const T& container, std::ostream* os) {
-    const size_t kMaxCount = 32;  // The maximum number of elements to print.
-    *os << '{';
-    size_t count = 0;
-    for (auto&& elem : container) {
-      if (count > 0) {
-        *os << ',';
-        if (count == kMaxCount) {  // Enough has been printed.
-          *os << " ...";
-          break;
-        }
-      }
-      *os << ' ';
-      // We cannot call PrintTo(elem, os) here as PrintTo() doesn't
-      // handle `elem` being a native array.
-      internal::UniversalPrint(elem, os);
-      ++count;
-    }
-
-    if (count > 0) {
-      *os << ' ';
-    }
-    *os << '}';
-  }
-};
-
-// Used to print a pointer that is neither a char pointer nor a member
-// pointer, when the user doesn't define PrintTo() for it.  (A member
-// variable pointer or member function pointer doesn't really point to
-// a location in the address space.  Their representation is
-// implementation-defined.  Therefore they will be printed as raw
-// bytes.)
-struct FunctionPointerPrinter {
-  template <typename T, typename = typename std::enable_if<
-                            std::is_function<T>::value>::type>
-  static void PrintValue(T* p, ::std::ostream* os) {
-    if (p == nullptr) {
-      *os << "NULL";
-    } else {
-      // T is a function type, so '*os << p' doesn't do what we want
-      // (it just prints p as bool).  We want to print p as a const
-      // void*.
-      *os << reinterpret_cast<const void*>(p);
-    }
-  }
-};
-
-struct PointerPrinter {
-  template <typename T>
-  static void PrintValue(T* p, ::std::ostream* os) {
-    if (p == nullptr) {
-      *os << "NULL";
-    } else {
-      // T is not a function type.  We just call << to print p,
-      // relying on ADL to pick up user-defined << for their pointer
-      // types, if any.
-      *os << p;
-    }
-  }
-};
-
-namespace internal_stream_operator_without_lexical_name_lookup {
-
-// The presence of an operator<< here will terminate lexical scope lookup
-// straight away (even though it cannot be a match because of its argument
-// types). Thus, the two operator<< calls in StreamPrinter will find only ADL
-// candidates.
-struct LookupBlocker {};
-void operator<<(LookupBlocker, LookupBlocker);
-
-struct StreamPrinter {
-  template <typename T,
-            // Don't accept member pointers here. We'd print them via implicit
-            // conversion to bool, which isn't useful.
-            typename = typename std::enable_if<
-                !std::is_member_pointer<T>::value>::type,
-            // Only accept types for which we can find a streaming operator via
-            // ADL (possibly involving implicit conversions).
-            typename = decltype(std::declval<std::ostream&>()
-                                << std::declval<const T&>())>
-  static void PrintValue(const T& value, ::std::ostream* os) {
-    // Call streaming operator found by ADL, possibly with implicit conversions
-    // of the arguments.
-    *os << value;
-  }
-};
-
-}  // namespace internal_stream_operator_without_lexical_name_lookup
-
-struct ProtobufPrinter {
-  // We print a protobuf using its ShortDebugString() when the string
-  // doesn't exceed this many characters; otherwise we print it using
-  // DebugString() for better readability.
-  static const size_t kProtobufOneLinerMaxLength = 50;
-
-  template <typename T,
-            typename = typename std::enable_if<
-                internal::HasDebugStringAndShortDebugString<T>::value>::type>
-  static void PrintValue(const T& value, ::std::ostream* os) {
-    std::string pretty_str = value.ShortDebugString();
-    if (pretty_str.length() > kProtobufOneLinerMaxLength) {
-      pretty_str = "\n" + value.DebugString();
-    }
-    *os << ("<" + pretty_str + ">");
-  }
-};
-
-struct ConvertibleToIntegerPrinter {
-  // Since T has no << operator or PrintTo() but can be implicitly
-  // converted to BiggestInt, we print it as a BiggestInt.
-  //
-  // Most likely T is an enum type (either named or unnamed), in which
-  // case printing it as an integer is the desired behavior.  In case
-  // T is not an enum, printing it as an integer is the best we can do
-  // given that it has no user-defined printer.
-  static void PrintValue(internal::BiggestInt value, ::std::ostream* os) {
-    *os << value;
-  }
-};
-
-struct ConvertibleToStringViewPrinter {
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-  static void PrintValue(internal::StringView value, ::std::ostream* os) {
-    internal::UniversalPrint(value, os);
-  }
-#endif
-};
-
-
-// Prints the given number of bytes in the given object to the given
-// ostream.
-GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
-                                     size_t count,
-                                     ::std::ostream* os);
-struct RawBytesPrinter {
-  // SFINAE on `sizeof` to make sure we have a complete type.
-  template <typename T, size_t = sizeof(T)>
-  static void PrintValue(const T& value, ::std::ostream* os) {
-    PrintBytesInObjectTo(
-        static_cast<const unsigned char*>(
-            // Load bearing cast to void* to support iOS
-            reinterpret_cast<const void*>(std::addressof(value))),
-        sizeof(value), os);
-  }
-};
-
-struct FallbackPrinter {
-  template <typename T>
-  static void PrintValue(const T&, ::std::ostream* os) {
-    *os << "(incomplete type)";
-  }
-};
-
-// Try every printer in order and return the first one that works.
-template <typename T, typename E, typename Printer, typename... Printers>
-struct FindFirstPrinter : FindFirstPrinter<T, E, Printers...> {};
-
-template <typename T, typename Printer, typename... Printers>
-struct FindFirstPrinter<
-    T, decltype(Printer::PrintValue(std::declval<const T&>(), nullptr)),
-    Printer, Printers...> {
-  using type = Printer;
-};
-
-// Select the best printer in the following order:
-//  - Print containers (they have begin/end/etc).
-//  - Print function pointers.
-//  - Print object pointers.
-//  - Use the stream operator, if available.
-//  - Print protocol buffers.
-//  - Print types convertible to BiggestInt.
-//  - Print types convertible to StringView, if available.
-//  - Fallback to printing the raw bytes of the object.
-template <typename T>
-void PrintWithFallback(const T& value, ::std::ostream* os) {
-  using Printer = typename FindFirstPrinter<
-      T, void, ContainerPrinter, FunctionPointerPrinter, PointerPrinter,
-      internal_stream_operator_without_lexical_name_lookup::StreamPrinter,
-      ProtobufPrinter, ConvertibleToIntegerPrinter,
-      ConvertibleToStringViewPrinter, RawBytesPrinter, FallbackPrinter>::type;
-  Printer::PrintValue(value, os);
-}
-
-// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
-// value of type ToPrint that is an operand of a comparison assertion
-// (e.g. ASSERT_EQ).  OtherOperand is the type of the other operand in
-// the comparison, and is used to help determine the best way to
-// format the value.  In particular, when the value is a C string
-// (char pointer) and the other operand is an STL string object, we
-// want to format the C string as a string, since we know it is
-// compared by value with the string object.  If the value is a char
-// pointer but the other operand is not an STL string object, we don't
-// know whether the pointer is supposed to point to a NUL-terminated
-// string, and thus want to print it as a pointer to be safe.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// The default case.
-template <typename ToPrint, typename OtherOperand>
-class FormatForComparison {
- public:
-  static ::std::string Format(const ToPrint& value) {
-    return ::testing::PrintToString(value);
-  }
-};
-
-// Array.
-template <typename ToPrint, size_t N, typename OtherOperand>
-class FormatForComparison<ToPrint[N], OtherOperand> {
- public:
-  static ::std::string Format(const ToPrint* value) {
-    return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
-  }
-};
-
-// By default, print C string as pointers to be safe, as we don't know
-// whether they actually point to a NUL-terminated string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType)                \
-  template <typename OtherOperand>                                      \
-  class FormatForComparison<CharType*, OtherOperand> {                  \
-   public:                                                              \
-    static ::std::string Format(CharType* value) {                      \
-      return ::testing::PrintToString(static_cast<const void*>(value)); \
-    }                                                                   \
-  }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
-#ifdef __cpp_char8_t
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char8_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char8_t);
-#endif
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char16_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char16_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char32_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char32_t);
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
-
-// If a C string is compared with an STL string object, we know it's meant
-// to point to a NUL-terminated string, and thus can print it as a string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
-  template <>                                                           \
-  class FormatForComparison<CharType*, OtherStringType> {               \
-   public:                                                              \
-    static ::std::string Format(CharType* value) {                      \
-      return ::testing::PrintToString(value);                           \
-    }                                                                   \
-  }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
-#ifdef __cpp_char8_t
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char8_t, ::std::u8string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char8_t, ::std::u8string);
-#endif
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char16_t, ::std::u16string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char16_t, ::std::u16string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char32_t, ::std::u32string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char32_t, ::std::u32string);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
-#endif
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
-
-// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
-// operand to be used in a failure message.  The type (but not value)
-// of the other operand may affect the format.  This allows us to
-// print a char* as a raw pointer when it is compared against another
-// char* or void*, and print it as a C string when it is compared
-// against an std::string object, for example.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename T1, typename T2>
-std::string FormatForComparisonFailureMessage(
-    const T1& value, const T2& /* other_operand */) {
-  return FormatForComparison<T1, T2>::Format(value);
-}
-
-// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
-// value to the given ostream.  The caller must ensure that
-// 'ostream_ptr' is not NULL, or the behavior is undefined.
-//
-// We define UniversalPrinter as a class template (as opposed to a
-// function template), as we need to partially specialize it for
-// reference types, which cannot be done with function templates.
-template <typename T>
-class UniversalPrinter;
-
-// Prints the given value using the << operator if it has one;
-// otherwise prints the bytes in it.  This is what
-// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
-// or overloaded for type T.
-//
-// A user can override this behavior for a class type Foo by defining
-// an overload of PrintTo() in the namespace where Foo is defined.  We
-// give the user this option as sometimes defining a << operator for
-// Foo is not desirable (e.g. the coding style may prevent doing it,
-// or there is already a << operator but it doesn't do what the user
-// wants).
-template <typename T>
-void PrintTo(const T& value, ::std::ostream* os) {
-  internal::PrintWithFallback(value, os);
-}
-
-// The following list of PrintTo() overloads tells
-// UniversalPrinter<T>::Print() how to print standard types (built-in
-// types, strings, plain arrays, and pointers).
-
-// Overloads for various char types.
-GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
-GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
-inline void PrintTo(char c, ::std::ostream* os) {
-  // When printing a plain char, we always treat it as unsigned.  This
-  // way, the output won't be affected by whether the compiler thinks
-  // char is signed or not.
-  PrintTo(static_cast<unsigned char>(c), os);
-}
-
-// Overloads for other simple built-in types.
-inline void PrintTo(bool x, ::std::ostream* os) {
-  *os << (x ? "true" : "false");
-}
-
-// Overload for wchar_t type.
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its decimal code (except for L'\0').
-// The L'\0' char is printed as "L'\\0'". The decimal code is printed
-// as signed integer when wchar_t is implemented by the compiler
-// as a signed type and is printed as an unsigned integer when wchar_t
-// is implemented as an unsigned type.
-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
-
-GTEST_API_ void PrintTo(char32_t c, ::std::ostream* os);
-inline void PrintTo(char16_t c, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<char32_t>(c), os);
-}
-#ifdef __cpp_char8_t
-inline void PrintTo(char8_t c, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<char32_t>(c), os);
-}
-#endif
-
-// Overloads for C strings.
-GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
-inline void PrintTo(char* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const char*>(s), os);
-}
-
-// signed/unsigned char is often used for representing binary data, so
-// we print pointers to it as void* to be safe.
-inline void PrintTo(const signed char* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(signed char* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(unsigned char* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const void*>(s), os);
-}
-#ifdef __cpp_char8_t
-// Overloads for u8 strings.
-GTEST_API_ void PrintTo(const char8_t* s, ::std::ostream* os);
-inline void PrintTo(char8_t* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const char8_t*>(s), os);
-}
-#endif
-// Overloads for u16 strings.
-GTEST_API_ void PrintTo(const char16_t* s, ::std::ostream* os);
-inline void PrintTo(char16_t* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const char16_t*>(s), os);
-}
-// Overloads for u32 strings.
-GTEST_API_ void PrintTo(const char32_t* s, ::std::ostream* os);
-inline void PrintTo(char32_t* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const char32_t*>(s), os);
-}
-
-// MSVC can be configured to define wchar_t as a typedef of unsigned
-// short.  It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
-// type.  When wchar_t is a typedef, defining an overload for const
-// wchar_t* would cause unsigned short* be printed as a wide string,
-// possibly causing invalid memory accesses.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Overloads for wide C strings
-GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
-inline void PrintTo(wchar_t* s, ::std::ostream* os) {
-  PrintTo(ImplicitCast_<const wchar_t*>(s), os);
-}
-#endif
-
-// Overload for C arrays.  Multi-dimensional arrays are printed
-// properly.
-
-// Prints the given number of elements in an array, without printing
-// the curly braces.
-template <typename T>
-void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
-  UniversalPrint(a[0], os);
-  for (size_t i = 1; i != count; i++) {
-    *os << ", ";
-    UniversalPrint(a[i], os);
-  }
-}
-
-// Overloads for ::std::string.
-GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
-inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
-  PrintStringTo(s, os);
-}
-
-// Overloads for ::std::u8string
-#ifdef __cpp_char8_t
-GTEST_API_ void PrintU8StringTo(const ::std::u8string& s, ::std::ostream* os);
-inline void PrintTo(const ::std::u8string& s, ::std::ostream* os) {
-  PrintU8StringTo(s, os);
-}
-#endif
-
-// Overloads for ::std::u16string
-GTEST_API_ void PrintU16StringTo(const ::std::u16string& s, ::std::ostream* os);
-inline void PrintTo(const ::std::u16string& s, ::std::ostream* os) {
-  PrintU16StringTo(s, os);
-}
-
-// Overloads for ::std::u32string
-GTEST_API_ void PrintU32StringTo(const ::std::u32string& s, ::std::ostream* os);
-inline void PrintTo(const ::std::u32string& s, ::std::ostream* os) {
-  PrintU32StringTo(s, os);
-}
-
-// Overloads for ::std::wstring.
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
-inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
-  PrintWideStringTo(s, os);
-}
-#endif  // GTEST_HAS_STD_WSTRING
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-// Overload for internal::StringView.
-inline void PrintTo(internal::StringView sp, ::std::ostream* os) {
-  PrintTo(::std::string(sp), os);
-}
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; }
-
-template <typename T>
-void PrintTo(std::reference_wrapper<T> ref, ::std::ostream* os) {
-  UniversalPrinter<T&>::Print(ref.get(), os);
-}
-
-inline const void* VoidifyPointer(const void* p) { return p; }
-inline const void* VoidifyPointer(volatile const void* p) {
-  return const_cast<const void*>(p);
-}
-
-template <typename T, typename Ptr>
-void PrintSmartPointer(const Ptr& ptr, std::ostream* os, char) {
-  if (ptr == nullptr) {
-    *os << "(nullptr)";
-  } else {
-    // We can't print the value. Just print the pointer..
-    *os << "(" << (VoidifyPointer)(ptr.get()) << ")";
-  }
-}
-template <typename T, typename Ptr,
-          typename = typename std::enable_if<!std::is_void<T>::value &&
-                                             !std::is_array<T>::value>::type>
-void PrintSmartPointer(const Ptr& ptr, std::ostream* os, int) {
-  if (ptr == nullptr) {
-    *os << "(nullptr)";
-  } else {
-    *os << "(ptr = " << (VoidifyPointer)(ptr.get()) << ", value = ";
-    UniversalPrinter<T>::Print(*ptr, os);
-    *os << ")";
-  }
-}
-
-template <typename T, typename D>
-void PrintTo(const std::unique_ptr<T, D>& ptr, std::ostream* os) {
-  (PrintSmartPointer<T>)(ptr, os, 0);
-}
-
-template <typename T>
-void PrintTo(const std::shared_ptr<T>& ptr, std::ostream* os) {
-  (PrintSmartPointer<T>)(ptr, os, 0);
-}
-
-// Helper function for printing a tuple.  T must be instantiated with
-// a tuple type.
-template <typename T>
-void PrintTupleTo(const T&, std::integral_constant<size_t, 0>,
-                  ::std::ostream*) {}
-
-template <typename T, size_t I>
-void PrintTupleTo(const T& t, std::integral_constant<size_t, I>,
-                  ::std::ostream* os) {
-  PrintTupleTo(t, std::integral_constant<size_t, I - 1>(), os);
-  GTEST_INTENTIONAL_CONST_COND_PUSH_()
-  if (I > 1) {
-    GTEST_INTENTIONAL_CONST_COND_POP_()
-    *os << ", ";
-  }
-  UniversalPrinter<typename std::tuple_element<I - 1, T>::type>::Print(
-      std::get<I - 1>(t), os);
-}
-
-template <typename... Types>
-void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream* os) {
-  *os << "(";
-  PrintTupleTo(t, std::integral_constant<size_t, sizeof...(Types)>(), os);
-  *os << ")";
-}
-
-// Overload for std::pair.
-template <typename T1, typename T2>
-void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
-  *os << '(';
-  // We cannot use UniversalPrint(value.first, os) here, as T1 may be
-  // a reference type.  The same for printing value.second.
-  UniversalPrinter<T1>::Print(value.first, os);
-  *os << ", ";
-  UniversalPrinter<T2>::Print(value.second, os);
-  *os << ')';
-}
-
-// Implements printing a non-reference type T by letting the compiler
-// pick the right overload of PrintTo() for T.
-template <typename T>
-class UniversalPrinter {
- public:
-  // MSVC warns about adding const to a function type, so we want to
-  // disable the warning.
-  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
-  // Note: we deliberately don't call this PrintTo(), as that name
-  // conflicts with ::testing::internal::PrintTo in the body of the
-  // function.
-  static void Print(const T& value, ::std::ostream* os) {
-    // By default, ::testing::internal::PrintTo() is used for printing
-    // the value.
-    //
-    // Thanks to Koenig look-up, if T is a class and has its own
-    // PrintTo() function defined in its namespace, that function will
-    // be visible here.  Since it is more specific than the generic ones
-    // in ::testing::internal, it will be picked by the compiler in the
-    // following statement - exactly what we want.
-    PrintTo(value, os);
-  }
-
-  GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-// Remove any const-qualifiers before passing a type to UniversalPrinter.
-template <typename T>
-class UniversalPrinter<const T> : public UniversalPrinter<T> {};
-
-#if GTEST_INTERNAL_HAS_ANY
-
-// Printer for std::any / absl::any
-
-template <>
-class UniversalPrinter<Any> {
- public:
-  static void Print(const Any& value, ::std::ostream* os) {
-    if (value.has_value()) {
-      *os << "value of type " << GetTypeName(value);
-    } else {
-      *os << "no value";
-    }
-  }
-
- private:
-  static std::string GetTypeName(const Any& value) {
-#if GTEST_HAS_RTTI
-    return internal::GetTypeName(value.type());
-#else
-    static_cast<void>(value);  // possibly unused
-    return "<unknown_type>";
-#endif  // GTEST_HAS_RTTI
-  }
-};
-
-#endif  // GTEST_INTERNAL_HAS_ANY
-
-#if GTEST_INTERNAL_HAS_OPTIONAL
-
-// Printer for std::optional / absl::optional
-
-template <typename T>
-class UniversalPrinter<Optional<T>> {
- public:
-  static void Print(const Optional<T>& value, ::std::ostream* os) {
-    *os << '(';
-    if (!value) {
-      *os << "nullopt";
-    } else {
-      UniversalPrint(*value, os);
-    }
-    *os << ')';
-  }
-};
-
-#endif  // GTEST_INTERNAL_HAS_OPTIONAL
-
-#if GTEST_INTERNAL_HAS_VARIANT
-
-// Printer for std::variant / absl::variant
-
-template <typename... T>
-class UniversalPrinter<Variant<T...>> {
- public:
-  static void Print(const Variant<T...>& value, ::std::ostream* os) {
-    *os << '(';
-#if GTEST_HAS_ABSL
-    absl::visit(Visitor{os, value.index()}, value);
-#else
-    std::visit(Visitor{os, value.index()}, value);
-#endif  // GTEST_HAS_ABSL
-    *os << ')';
-  }
-
- private:
-  struct Visitor {
-    template <typename U>
-    void operator()(const U& u) const {
-      *os << "'" << GetTypeName<U>() << "(index = " << index
-          << ")' with value ";
-      UniversalPrint(u, os);
-    }
-    ::std::ostream* os;
-    std::size_t index;
-  };
-};
-
-#endif  // GTEST_INTERNAL_HAS_VARIANT
-
-// UniversalPrintArray(begin, len, os) prints an array of 'len'
-// elements, starting at address 'begin'.
-template <typename T>
-void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
-  if (len == 0) {
-    *os << "{}";
-  } else {
-    *os << "{ ";
-    const size_t kThreshold = 18;
-    const size_t kChunkSize = 8;
-    // If the array has more than kThreshold elements, we'll have to
-    // omit some details by printing only the first and the last
-    // kChunkSize elements.
-    if (len <= kThreshold) {
-      PrintRawArrayTo(begin, len, os);
-    } else {
-      PrintRawArrayTo(begin, kChunkSize, os);
-      *os << ", ..., ";
-      PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
-    }
-    *os << " }";
-  }
-}
-// This overload prints a (const) char array compactly.
-GTEST_API_ void UniversalPrintArray(
-    const char* begin, size_t len, ::std::ostream* os);
-
-#ifdef __cpp_char8_t
-// This overload prints a (const) char8_t array compactly.
-GTEST_API_ void UniversalPrintArray(const char8_t* begin, size_t len,
-                                    ::std::ostream* os);
-#endif
-
-// This overload prints a (const) char16_t array compactly.
-GTEST_API_ void UniversalPrintArray(const char16_t* begin, size_t len,
-                                    ::std::ostream* os);
-
-// This overload prints a (const) char32_t array compactly.
-GTEST_API_ void UniversalPrintArray(const char32_t* begin, size_t len,
-                                    ::std::ostream* os);
-
-// This overload prints a (const) wchar_t array compactly.
-GTEST_API_ void UniversalPrintArray(
-    const wchar_t* begin, size_t len, ::std::ostream* os);
-
-// Implements printing an array type T[N].
-template <typename T, size_t N>
-class UniversalPrinter<T[N]> {
- public:
-  // Prints the given array, omitting some elements when there are too
-  // many.
-  static void Print(const T (&a)[N], ::std::ostream* os) {
-    UniversalPrintArray(a, N, os);
-  }
-};
-
-// Implements printing a reference type T&.
-template <typename T>
-class UniversalPrinter<T&> {
- public:
-  // MSVC warns about adding const to a function type, so we want to
-  // disable the warning.
-  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
-  static void Print(const T& value, ::std::ostream* os) {
-    // Prints the address of the value.  We use reinterpret_cast here
-    // as static_cast doesn't compile when T is a function type.
-    *os << "@" << reinterpret_cast<const void*>(&value) << " ";
-
-    // Then prints the value itself.
-    UniversalPrint(value, os);
-  }
-
-  GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-// Prints a value tersely: for a reference type, the referenced value
-// (but not the address) is printed; for a (const) char pointer, the
-// NUL-terminated string (but not the pointer) is printed.
-
-template <typename T>
-class UniversalTersePrinter {
- public:
-  static void Print(const T& value, ::std::ostream* os) {
-    UniversalPrint(value, os);
-  }
-};
-template <typename T>
-class UniversalTersePrinter<T&> {
- public:
-  static void Print(const T& value, ::std::ostream* os) {
-    UniversalPrint(value, os);
-  }
-};
-template <typename T, size_t N>
-class UniversalTersePrinter<T[N]> {
- public:
-  static void Print(const T (&value)[N], ::std::ostream* os) {
-    UniversalPrinter<T[N]>::Print(value, os);
-  }
-};
-template <>
-class UniversalTersePrinter<const char*> {
- public:
-  static void Print(const char* str, ::std::ostream* os) {
-    if (str == nullptr) {
-      *os << "NULL";
-    } else {
-      UniversalPrint(std::string(str), os);
-    }
-  }
-};
-template <>
-class UniversalTersePrinter<char*> : public UniversalTersePrinter<const char*> {
-};
-
-#ifdef __cpp_char8_t
-template <>
-class UniversalTersePrinter<const char8_t*> {
- public:
-  static void Print(const char8_t* str, ::std::ostream* os) {
-    if (str == nullptr) {
-      *os << "NULL";
-    } else {
-      UniversalPrint(::std::u8string(str), os);
-    }
-  }
-};
-template <>
-class UniversalTersePrinter<char8_t*>
-    : public UniversalTersePrinter<const char8_t*> {};
-#endif
-
-template <>
-class UniversalTersePrinter<const char16_t*> {
- public:
-  static void Print(const char16_t* str, ::std::ostream* os) {
-    if (str == nullptr) {
-      *os << "NULL";
-    } else {
-      UniversalPrint(::std::u16string(str), os);
-    }
-  }
-};
-template <>
-class UniversalTersePrinter<char16_t*>
-    : public UniversalTersePrinter<const char16_t*> {};
-
-template <>
-class UniversalTersePrinter<const char32_t*> {
- public:
-  static void Print(const char32_t* str, ::std::ostream* os) {
-    if (str == nullptr) {
-      *os << "NULL";
-    } else {
-      UniversalPrint(::std::u32string(str), os);
-    }
-  }
-};
-template <>
-class UniversalTersePrinter<char32_t*>
-    : public UniversalTersePrinter<const char32_t*> {};
-
-#if GTEST_HAS_STD_WSTRING
-template <>
-class UniversalTersePrinter<const wchar_t*> {
- public:
-  static void Print(const wchar_t* str, ::std::ostream* os) {
-    if (str == nullptr) {
-      *os << "NULL";
-    } else {
-      UniversalPrint(::std::wstring(str), os);
-    }
-  }
-};
-#endif
-
-template <>
-class UniversalTersePrinter<wchar_t*> {
- public:
-  static void Print(wchar_t* str, ::std::ostream* os) {
-    UniversalTersePrinter<const wchar_t*>::Print(str, os);
-  }
-};
-
-template <typename T>
-void UniversalTersePrint(const T& value, ::std::ostream* os) {
-  UniversalTersePrinter<T>::Print(value, os);
-}
-
-// Prints a value using the type inferred by the compiler.  The
-// difference between this and UniversalTersePrint() is that for a
-// (const) char pointer, this prints both the pointer and the
-// NUL-terminated string.
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os) {
-  // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
-  // UniversalPrinter with T directly.
-  typedef T T1;
-  UniversalPrinter<T1>::Print(value, os);
-}
-
-typedef ::std::vector< ::std::string> Strings;
-
-  // Tersely prints the first N fields of a tuple to a string vector,
-  // one element for each field.
-template <typename Tuple>
-void TersePrintPrefixToStrings(const Tuple&, std::integral_constant<size_t, 0>,
-                               Strings*) {}
-template <typename Tuple, size_t I>
-void TersePrintPrefixToStrings(const Tuple& t,
-                               std::integral_constant<size_t, I>,
-                               Strings* strings) {
-  TersePrintPrefixToStrings(t, std::integral_constant<size_t, I - 1>(),
-                            strings);
-  ::std::stringstream ss;
-  UniversalTersePrint(std::get<I - 1>(t), &ss);
-  strings->push_back(ss.str());
-}
-
-// Prints the fields of a tuple tersely to a string vector, one
-// element for each field.  See the comment before
-// UniversalTersePrint() for how we define "tersely".
-template <typename Tuple>
-Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
-  Strings result;
-  TersePrintPrefixToStrings(
-      value, std::integral_constant<size_t, std::tuple_size<Tuple>::value>(),
-      &result);
-  return result;
-}
-
-}  // namespace internal
-
-template <typename T>
-::std::string PrintToString(const T& value) {
-  ::std::stringstream ss;
-  internal::UniversalTersePrinter<T>::Print(value, &ss);
-  return ss.str();
-}
-
-}  // namespace testing
-
-// Include any custom printer added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// This file provides an injection point for custom printers in a local
-// installation of gTest.
-// It will be included from gtest-printers.h and the overrides in this file
-// will be visible to everyone.
-//
-// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-
-// MSVC warning C5046 is new as of VS2017 version 15.8.
-#if defined(_MSC_VER) && _MSC_VER >= 1915
-#define GTEST_MAYBE_5046_ 5046
-#else
-#define GTEST_MAYBE_5046_
-#endif
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(
-    4251 GTEST_MAYBE_5046_ /* class A needs to have dll-interface to be used by
-                              clients of class B */
-    /* Symbol involving type with internal linkage not defined */)
-
-namespace testing {
-
-// To implement a matcher Foo for type T, define:
-//   1. a class FooMatcherMatcher that implements the matcher interface:
-//     using is_gtest_matcher = void;
-//     bool MatchAndExplain(const T&, std::ostream*);
-//       (MatchResultListener* can also be used instead of std::ostream*)
-//     void DescribeTo(std::ostream*);
-//     void DescribeNegationTo(std::ostream*);
-//
-//   2. a factory function that creates a Matcher<T> object from a
-//      FooMatcherMatcher.
-
-class MatchResultListener {
- public:
-  // Creates a listener object with the given underlying ostream.  The
-  // listener does not own the ostream, and does not dereference it
-  // in the constructor or destructor.
-  explicit MatchResultListener(::std::ostream* os) : stream_(os) {}
-  virtual ~MatchResultListener() = 0;  // Makes this class abstract.
-
-  // Streams x to the underlying ostream; does nothing if the ostream
-  // is NULL.
-  template <typename T>
-  MatchResultListener& operator<<(const T& x) {
-    if (stream_ != nullptr) *stream_ << x;
-    return *this;
-  }
-
-  // Returns the underlying ostream.
-  ::std::ostream* stream() { return stream_; }
-
-  // Returns true if and only if the listener is interested in an explanation
-  // of the match result.  A matcher's MatchAndExplain() method can use
-  // this information to avoid generating the explanation when no one
-  // intends to hear it.
-  bool IsInterested() const { return stream_ != nullptr; }
-
- private:
-  ::std::ostream* const stream_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MatchResultListener);
-};
-
-inline MatchResultListener::~MatchResultListener() {
-}
-
-// An instance of a subclass of this knows how to describe itself as a
-// matcher.
-class GTEST_API_ MatcherDescriberInterface {
- public:
-  virtual ~MatcherDescriberInterface() {}
-
-  // Describes this matcher to an ostream.  The function should print
-  // a verb phrase that describes the property a value matching this
-  // matcher should have.  The subject of the verb phrase is the value
-  // being matched.  For example, the DescribeTo() method of the Gt(7)
-  // matcher prints "is greater than 7".
-  virtual void DescribeTo(::std::ostream* os) const = 0;
-
-  // Describes the negation of this matcher to an ostream.  For
-  // example, if the description of this matcher is "is greater than
-  // 7", the negated description could be "is not greater than 7".
-  // You are not required to override this when implementing
-  // MatcherInterface, but it is highly advised so that your matcher
-  // can produce good error messages.
-  virtual void DescribeNegationTo(::std::ostream* os) const {
-    *os << "not (";
-    DescribeTo(os);
-    *os << ")";
-  }
-};
-
-// The implementation of a matcher.
-template <typename T>
-class MatcherInterface : public MatcherDescriberInterface {
- public:
-  // Returns true if and only if the matcher matches x; also explains the
-  // match result to 'listener' if necessary (see the next paragraph), in
-  // the form of a non-restrictive relative clause ("which ...",
-  // "whose ...", etc) that describes x.  For example, the
-  // MatchAndExplain() method of the Pointee(...) matcher should
-  // generate an explanation like "which points to ...".
-  //
-  // Implementations of MatchAndExplain() should add an explanation of
-  // the match result *if and only if* they can provide additional
-  // information that's not already present (or not obvious) in the
-  // print-out of x and the matcher's description.  Whether the match
-  // succeeds is not a factor in deciding whether an explanation is
-  // needed, as sometimes the caller needs to print a failure message
-  // when the match succeeds (e.g. when the matcher is used inside
-  // Not()).
-  //
-  // For example, a "has at least 10 elements" matcher should explain
-  // what the actual element count is, regardless of the match result,
-  // as it is useful information to the reader; on the other hand, an
-  // "is empty" matcher probably only needs to explain what the actual
-  // size is when the match fails, as it's redundant to say that the
-  // size is 0 when the value is already known to be empty.
-  //
-  // You should override this method when defining a new matcher.
-  //
-  // It's the responsibility of the caller (Google Test) to guarantee
-  // that 'listener' is not NULL.  This helps to simplify a matcher's
-  // implementation when it doesn't care about the performance, as it
-  // can talk to 'listener' without checking its validity first.
-  // However, in order to implement dummy listeners efficiently,
-  // listener->stream() may be NULL.
-  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0;
-
-  // Inherits these methods from MatcherDescriberInterface:
-  //   virtual void DescribeTo(::std::ostream* os) const = 0;
-  //   virtual void DescribeNegationTo(::std::ostream* os) const;
-};
-
-namespace internal {
-
-struct AnyEq {
-  template <typename A, typename B>
-  bool operator()(const A& a, const B& b) const { return a == b; }
-};
-struct AnyNe {
-  template <typename A, typename B>
-  bool operator()(const A& a, const B& b) const { return a != b; }
-};
-struct AnyLt {
-  template <typename A, typename B>
-  bool operator()(const A& a, const B& b) const { return a < b; }
-};
-struct AnyGt {
-  template <typename A, typename B>
-  bool operator()(const A& a, const B& b) const { return a > b; }
-};
-struct AnyLe {
-  template <typename A, typename B>
-  bool operator()(const A& a, const B& b) const { return a <= b; }
-};
-struct AnyGe {
-  template <typename A, typename B>
-  bool operator()(const A& a, const B& b) const { return a >= b; }
-};
-
-// A match result listener that ignores the explanation.
-class DummyMatchResultListener : public MatchResultListener {
- public:
-  DummyMatchResultListener() : MatchResultListener(nullptr) {}
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(DummyMatchResultListener);
-};
-
-// A match result listener that forwards the explanation to a given
-// ostream.  The difference between this and MatchResultListener is
-// that the former is concrete.
-class StreamMatchResultListener : public MatchResultListener {
- public:
-  explicit StreamMatchResultListener(::std::ostream* os)
-      : MatchResultListener(os) {}
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamMatchResultListener);
-};
-
-struct SharedPayloadBase {
-  std::atomic<int> ref{1};
-  void Ref() { ref.fetch_add(1, std::memory_order_relaxed); }
-  bool Unref() { return ref.fetch_sub(1, std::memory_order_acq_rel) == 1; }
-};
-
-template <typename T>
-struct SharedPayload : SharedPayloadBase {
-  explicit SharedPayload(const T& v) : value(v) {}
-  explicit SharedPayload(T&& v) : value(std::move(v)) {}
-
-  static void Destroy(SharedPayloadBase* shared) {
-    delete static_cast<SharedPayload*>(shared);
-  }
-
-  T value;
-};
-
-// An internal class for implementing Matcher<T>, which will derive
-// from it.  We put functionalities common to all Matcher<T>
-// specializations here to avoid code duplication.
-template <typename T>
-class MatcherBase : private MatcherDescriberInterface {
- public:
-  // Returns true if and only if the matcher matches x; also explains the
-  // match result to 'listener'.
-  bool MatchAndExplain(const T& x, MatchResultListener* listener) const {
-    GTEST_CHECK_(vtable_ != nullptr);
-    return vtable_->match_and_explain(*this, x, listener);
-  }
-
-  // Returns true if and only if this matcher matches x.
-  bool Matches(const T& x) const {
-    DummyMatchResultListener dummy;
-    return MatchAndExplain(x, &dummy);
-  }
-
-  // Describes this matcher to an ostream.
-  void DescribeTo(::std::ostream* os) const final {
-    GTEST_CHECK_(vtable_ != nullptr);
-    vtable_->describe(*this, os, false);
-  }
-
-  // Describes the negation of this matcher to an ostream.
-  void DescribeNegationTo(::std::ostream* os) const final {
-    GTEST_CHECK_(vtable_ != nullptr);
-    vtable_->describe(*this, os, true);
-  }
-
-  // Explains why x matches, or doesn't match, the matcher.
-  void ExplainMatchResultTo(const T& x, ::std::ostream* os) const {
-    StreamMatchResultListener listener(os);
-    MatchAndExplain(x, &listener);
-  }
-
-  // Returns the describer for this matcher object; retains ownership
-  // of the describer, which is only guaranteed to be alive when
-  // this matcher object is alive.
-  const MatcherDescriberInterface* GetDescriber() const {
-    if (vtable_ == nullptr) return nullptr;
-    return vtable_->get_describer(*this);
-  }
-
- protected:
-  MatcherBase() : vtable_(nullptr) {}
-
-  // Constructs a matcher from its implementation.
-  template <typename U>
-  explicit MatcherBase(const MatcherInterface<U>* impl) {
-    Init(impl);
-  }
-
-  template <typename M, typename = typename std::remove_reference<
-                            M>::type::is_gtest_matcher>
-  MatcherBase(M&& m) {  // NOLINT
-    Init(std::forward<M>(m));
-  }
-
-  MatcherBase(const MatcherBase& other)
-      : vtable_(other.vtable_), buffer_(other.buffer_) {
-    if (IsShared()) buffer_.shared->Ref();
-  }
-
-  MatcherBase& operator=(const MatcherBase& other) {
-    if (this == &other) return *this;
-    Destroy();
-    vtable_ = other.vtable_;
-    buffer_ = other.buffer_;
-    if (IsShared()) buffer_.shared->Ref();
-    return *this;
-  }
-
-  MatcherBase(MatcherBase&& other)
-      : vtable_(other.vtable_), buffer_(other.buffer_) {
-    other.vtable_ = nullptr;
-  }
-
-  MatcherBase& operator=(MatcherBase&& other) {
-    if (this == &other) return *this;
-    Destroy();
-    vtable_ = other.vtable_;
-    buffer_ = other.buffer_;
-    other.vtable_ = nullptr;
-    return *this;
-  }
-
-  ~MatcherBase() override { Destroy(); }
-
- private:
-  struct VTable {
-    bool (*match_and_explain)(const MatcherBase&, const T&,
-                              MatchResultListener*);
-    void (*describe)(const MatcherBase&, std::ostream*, bool negation);
-    // Returns the captured object if it implements the interface, otherwise
-    // returns the MatcherBase itself.
-    const MatcherDescriberInterface* (*get_describer)(const MatcherBase&);
-    // Called on shared instances when the reference count reaches 0.
-    void (*shared_destroy)(SharedPayloadBase*);
-  };
-
-  bool IsShared() const {
-    return vtable_ != nullptr && vtable_->shared_destroy != nullptr;
-  }
-
-  // If the implementation uses a listener, call that.
-  template <typename P>
-  static auto MatchAndExplainImpl(const MatcherBase& m, const T& value,
-                                  MatchResultListener* listener)
-      -> decltype(P::Get(m).MatchAndExplain(value, listener->stream())) {
-    return P::Get(m).MatchAndExplain(value, listener->stream());
-  }
-
-  template <typename P>
-  static auto MatchAndExplainImpl(const MatcherBase& m, const T& value,
-                                  MatchResultListener* listener)
-      -> decltype(P::Get(m).MatchAndExplain(value, listener)) {
-    return P::Get(m).MatchAndExplain(value, listener);
-  }
-
-  template <typename P>
-  static void DescribeImpl(const MatcherBase& m, std::ostream* os,
-                           bool negation) {
-    if (negation) {
-      P::Get(m).DescribeNegationTo(os);
-    } else {
-      P::Get(m).DescribeTo(os);
-    }
-  }
-
-  template <typename P>
-  static const MatcherDescriberInterface* GetDescriberImpl(
-      const MatcherBase& m) {
-    // If the impl is a MatcherDescriberInterface, then return it.
-    // Otherwise use MatcherBase itself.
-    // This allows us to implement the GetDescriber() function without support
-    // from the impl, but some users really want to get their impl back when
-    // they call GetDescriber().
-    // We use std::get on a tuple as a workaround of not having `if constexpr`.
-    return std::get<(
-        std::is_convertible<decltype(&P::Get(m)),
-                            const MatcherDescriberInterface*>::value
-            ? 1
-            : 0)>(std::make_tuple(&m, &P::Get(m)));
-  }
-
-  template <typename P>
-  const VTable* GetVTable() {
-    static constexpr VTable kVTable = {&MatchAndExplainImpl<P>,
-                                       &DescribeImpl<P>, &GetDescriberImpl<P>,
-                                       P::shared_destroy};
-    return &kVTable;
-  }
-
-  union Buffer {
-    // Add some types to give Buffer some common alignment/size use cases.
-    void* ptr;
-    double d;
-    int64_t i;
-    // And add one for the out-of-line cases.
-    SharedPayloadBase* shared;
-  };
-
-  void Destroy() {
-    if (IsShared() && buffer_.shared->Unref()) {
-      vtable_->shared_destroy(buffer_.shared);
-    }
-  }
-
-  template <typename M>
-  static constexpr bool IsInlined() {
-    return sizeof(M) <= sizeof(Buffer) && alignof(M) <= alignof(Buffer) &&
-           std::is_trivially_copy_constructible<M>::value &&
-           std::is_trivially_destructible<M>::value;
-  }
-
-  template <typename M, bool = MatcherBase::IsInlined<M>()>
-  struct ValuePolicy {
-    static const M& Get(const MatcherBase& m) {
-      // When inlined along with Init, need to be explicit to avoid violating
-      // strict aliasing rules.
-      const M *ptr = static_cast<const M*>(
-          static_cast<const void*>(&m.buffer_));
-      return *ptr;
-    }
-    static void Init(MatcherBase& m, M impl) {
-      ::new (static_cast<void*>(&m.buffer_)) M(impl);
-    }
-    static constexpr auto shared_destroy = nullptr;
-  };
-
-  template <typename M>
-  struct ValuePolicy<M, false> {
-    using Shared = SharedPayload<M>;
-    static const M& Get(const MatcherBase& m) {
-      return static_cast<Shared*>(m.buffer_.shared)->value;
-    }
-    template <typename Arg>
-    static void Init(MatcherBase& m, Arg&& arg) {
-      m.buffer_.shared = new Shared(std::forward<Arg>(arg));
-    }
-    static constexpr auto shared_destroy = &Shared::Destroy;
-  };
-
-  template <typename U, bool B>
-  struct ValuePolicy<const MatcherInterface<U>*, B> {
-    using M = const MatcherInterface<U>;
-    using Shared = SharedPayload<std::unique_ptr<M>>;
-    static const M& Get(const MatcherBase& m) {
-      return *static_cast<Shared*>(m.buffer_.shared)->value;
-    }
-    static void Init(MatcherBase& m, M* impl) {
-      m.buffer_.shared = new Shared(std::unique_ptr<M>(impl));
-    }
-
-    static constexpr auto shared_destroy = &Shared::Destroy;
-  };
-
-  template <typename M>
-  void Init(M&& m) {
-    using MM = typename std::decay<M>::type;
-    using Policy = ValuePolicy<MM>;
-    vtable_ = GetVTable<Policy>();
-    Policy::Init(*this, std::forward<M>(m));
-  }
-
-  const VTable* vtable_;
-  Buffer buffer_;
-};
-
-}  // namespace internal
-
-// A Matcher<T> is a copyable and IMMUTABLE (except by assignment)
-// object that can check whether a value of type T matches.  The
-// implementation of Matcher<T> is just a std::shared_ptr to const
-// MatcherInterface<T>.  Don't inherit from Matcher!
-template <typename T>
-class Matcher : public internal::MatcherBase<T> {
- public:
-  // Constructs a null matcher.  Needed for storing Matcher objects in STL
-  // containers.  A default-constructed matcher is not yet initialized.  You
-  // cannot use it until a valid value has been assigned to it.
-  explicit Matcher() {}  // NOLINT
-
-  // Constructs a matcher from its implementation.
-  explicit Matcher(const MatcherInterface<const T&>* impl)
-      : internal::MatcherBase<T>(impl) {}
-
-  template <typename U>
-  explicit Matcher(
-      const MatcherInterface<U>* impl,
-      typename std::enable_if<!std::is_same<U, const U&>::value>::type* =
-          nullptr)
-      : internal::MatcherBase<T>(impl) {}
-
-  template <typename M, typename = typename std::remove_reference<
-                            M>::type::is_gtest_matcher>
-  Matcher(M&& m) : internal::MatcherBase<T>(std::forward<M>(m)) {}  // NOLINT
-
-  // Implicit constructor here allows people to write
-  // EXPECT_CALL(foo, Bar(5)) instead of EXPECT_CALL(foo, Bar(Eq(5))) sometimes
-  Matcher(T value);  // NOLINT
-};
-
-// The following two specializations allow the user to write str
-// instead of Eq(str) and "foo" instead of Eq("foo") when a std::string
-// matcher is expected.
-template <>
-class GTEST_API_ Matcher<const std::string&>
-    : public internal::MatcherBase<const std::string&> {
- public:
-  Matcher() {}
-
-  explicit Matcher(const MatcherInterface<const std::string&>* impl)
-      : internal::MatcherBase<const std::string&>(impl) {}
-
-  template <typename M, typename = typename std::remove_reference<
-                            M>::type::is_gtest_matcher>
-  Matcher(M&& m)  // NOLINT
-      : internal::MatcherBase<const std::string&>(std::forward<M>(m)) {}
-
-  // Allows the user to write str instead of Eq(str) sometimes, where
-  // str is a std::string object.
-  Matcher(const std::string& s);  // NOLINT
-
-  // Allows the user to write "foo" instead of Eq("foo") sometimes.
-  Matcher(const char* s);  // NOLINT
-};
-
-template <>
-class GTEST_API_ Matcher<std::string>
-    : public internal::MatcherBase<std::string> {
- public:
-  Matcher() {}
-
-  explicit Matcher(const MatcherInterface<const std::string&>* impl)
-      : internal::MatcherBase<std::string>(impl) {}
-  explicit Matcher(const MatcherInterface<std::string>* impl)
-      : internal::MatcherBase<std::string>(impl) {}
-
-  template <typename M, typename = typename std::remove_reference<
-                            M>::type::is_gtest_matcher>
-  Matcher(M&& m)  // NOLINT
-      : internal::MatcherBase<std::string>(std::forward<M>(m)) {}
-
-  // Allows the user to write str instead of Eq(str) sometimes, where
-  // str is a string object.
-  Matcher(const std::string& s);  // NOLINT
-
-  // Allows the user to write "foo" instead of Eq("foo") sometimes.
-  Matcher(const char* s);  // NOLINT
-};
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-// The following two specializations allow the user to write str
-// instead of Eq(str) and "foo" instead of Eq("foo") when a absl::string_view
-// matcher is expected.
-template <>
-class GTEST_API_ Matcher<const internal::StringView&>
-    : public internal::MatcherBase<const internal::StringView&> {
- public:
-  Matcher() {}
-
-  explicit Matcher(const MatcherInterface<const internal::StringView&>* impl)
-      : internal::MatcherBase<const internal::StringView&>(impl) {}
-
-  template <typename M, typename = typename std::remove_reference<
-                            M>::type::is_gtest_matcher>
-  Matcher(M&& m)  // NOLINT
-      : internal::MatcherBase<const internal::StringView&>(std::forward<M>(m)) {
-  }
-
-  // Allows the user to write str instead of Eq(str) sometimes, where
-  // str is a std::string object.
-  Matcher(const std::string& s);  // NOLINT
-
-  // Allows the user to write "foo" instead of Eq("foo") sometimes.
-  Matcher(const char* s);  // NOLINT
-
-  // Allows the user to pass absl::string_views or std::string_views directly.
-  Matcher(internal::StringView s);  // NOLINT
-};
-
-template <>
-class GTEST_API_ Matcher<internal::StringView>
-    : public internal::MatcherBase<internal::StringView> {
- public:
-  Matcher() {}
-
-  explicit Matcher(const MatcherInterface<const internal::StringView&>* impl)
-      : internal::MatcherBase<internal::StringView>(impl) {}
-  explicit Matcher(const MatcherInterface<internal::StringView>* impl)
-      : internal::MatcherBase<internal::StringView>(impl) {}
-
-  template <typename M, typename = typename std::remove_reference<
-                            M>::type::is_gtest_matcher>
-  Matcher(M&& m)  // NOLINT
-      : internal::MatcherBase<internal::StringView>(std::forward<M>(m)) {}
-
-  // Allows the user to write str instead of Eq(str) sometimes, where
-  // str is a std::string object.
-  Matcher(const std::string& s);  // NOLINT
-
-  // Allows the user to write "foo" instead of Eq("foo") sometimes.
-  Matcher(const char* s);  // NOLINT
-
-  // Allows the user to pass absl::string_views or std::string_views directly.
-  Matcher(internal::StringView s);  // NOLINT
-};
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-// Prints a matcher in a human-readable format.
-template <typename T>
-std::ostream& operator<<(std::ostream& os, const Matcher<T>& matcher) {
-  matcher.DescribeTo(&os);
-  return os;
-}
-
-// The PolymorphicMatcher class template makes it easy to implement a
-// polymorphic matcher (i.e. a matcher that can match values of more
-// than one type, e.g. Eq(n) and NotNull()).
-//
-// To define a polymorphic matcher, a user should provide an Impl
-// class that has a DescribeTo() method and a DescribeNegationTo()
-// method, and define a member function (or member function template)
-//
-//   bool MatchAndExplain(const Value& value,
-//                        MatchResultListener* listener) const;
-//
-// See the definition of NotNull() for a complete example.
-template <class Impl>
-class PolymorphicMatcher {
- public:
-  explicit PolymorphicMatcher(const Impl& an_impl) : impl_(an_impl) {}
-
-  // Returns a mutable reference to the underlying matcher
-  // implementation object.
-  Impl& mutable_impl() { return impl_; }
-
-  // Returns an immutable reference to the underlying matcher
-  // implementation object.
-  const Impl& impl() const { return impl_; }
-
-  template <typename T>
-  operator Matcher<T>() const {
-    return Matcher<T>(new MonomorphicImpl<const T&>(impl_));
-  }
-
- private:
-  template <typename T>
-  class MonomorphicImpl : public MatcherInterface<T> {
-   public:
-    explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
-
-    void DescribeTo(::std::ostream* os) const override { impl_.DescribeTo(os); }
-
-    void DescribeNegationTo(::std::ostream* os) const override {
-      impl_.DescribeNegationTo(os);
-    }
-
-    bool MatchAndExplain(T x, MatchResultListener* listener) const override {
-      return impl_.MatchAndExplain(x, listener);
-    }
-
-   private:
-    const Impl impl_;
-  };
-
-  Impl impl_;
-};
-
-// Creates a matcher from its implementation.
-// DEPRECATED: Especially in the generic code, prefer:
-//   Matcher<T>(new MyMatcherImpl<const T&>(...));
-//
-// MakeMatcher may create a Matcher that accepts its argument by value, which
-// leads to unnecessary copies & lack of support for non-copyable types.
-template <typename T>
-inline Matcher<T> MakeMatcher(const MatcherInterface<T>* impl) {
-  return Matcher<T>(impl);
-}
-
-// Creates a polymorphic matcher from its implementation.  This is
-// easier to use than the PolymorphicMatcher<Impl> constructor as it
-// doesn't require you to explicitly write the template argument, e.g.
-//
-//   MakePolymorphicMatcher(foo);
-// vs
-//   PolymorphicMatcher<TypeOfFoo>(foo);
-template <class Impl>
-inline PolymorphicMatcher<Impl> MakePolymorphicMatcher(const Impl& impl) {
-  return PolymorphicMatcher<Impl>(impl);
-}
-
-namespace internal {
-// Implements a matcher that compares a given value with a
-// pre-supplied value using one of the ==, <=, <, etc, operators.  The
-// two values being compared don't have to have the same type.
-//
-// The matcher defined here is polymorphic (for example, Eq(5) can be
-// used to match an int, a short, a double, etc).  Therefore we use
-// a template type conversion operator in the implementation.
-//
-// The following template definition assumes that the Rhs parameter is
-// a "bare" type (i.e. neither 'const T' nor 'T&').
-template <typename D, typename Rhs, typename Op>
-class ComparisonBase {
- public:
-  explicit ComparisonBase(const Rhs& rhs) : rhs_(rhs) {}
-
-  using is_gtest_matcher = void;
-
-  template <typename Lhs>
-  bool MatchAndExplain(const Lhs& lhs, std::ostream*) const {
-    return Op()(lhs, Unwrap(rhs_));
-  }
-  void DescribeTo(std::ostream* os) const {
-    *os << D::Desc() << " ";
-    UniversalPrint(Unwrap(rhs_), os);
-  }
-  void DescribeNegationTo(std::ostream* os) const {
-    *os << D::NegatedDesc() << " ";
-    UniversalPrint(Unwrap(rhs_), os);
-  }
-
- private:
-  template <typename T>
-  static const T& Unwrap(const T& v) {
-    return v;
-  }
-  template <typename T>
-  static const T& Unwrap(std::reference_wrapper<T> v) {
-    return v;
-  }
-
-  Rhs rhs_;
-};
-
-template <typename Rhs>
-class EqMatcher : public ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq> {
- public:
-  explicit EqMatcher(const Rhs& rhs)
-      : ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq>(rhs) { }
-  static const char* Desc() { return "is equal to"; }
-  static const char* NegatedDesc() { return "isn't equal to"; }
-};
-template <typename Rhs>
-class NeMatcher : public ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe> {
- public:
-  explicit NeMatcher(const Rhs& rhs)
-      : ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe>(rhs) { }
-  static const char* Desc() { return "isn't equal to"; }
-  static const char* NegatedDesc() { return "is equal to"; }
-};
-template <typename Rhs>
-class LtMatcher : public ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt> {
- public:
-  explicit LtMatcher(const Rhs& rhs)
-      : ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt>(rhs) { }
-  static const char* Desc() { return "is <"; }
-  static const char* NegatedDesc() { return "isn't <"; }
-};
-template <typename Rhs>
-class GtMatcher : public ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt> {
- public:
-  explicit GtMatcher(const Rhs& rhs)
-      : ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt>(rhs) { }
-  static const char* Desc() { return "is >"; }
-  static const char* NegatedDesc() { return "isn't >"; }
-};
-template <typename Rhs>
-class LeMatcher : public ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe> {
- public:
-  explicit LeMatcher(const Rhs& rhs)
-      : ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe>(rhs) { }
-  static const char* Desc() { return "is <="; }
-  static const char* NegatedDesc() { return "isn't <="; }
-};
-template <typename Rhs>
-class GeMatcher : public ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe> {
- public:
-  explicit GeMatcher(const Rhs& rhs)
-      : ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe>(rhs) { }
-  static const char* Desc() { return "is >="; }
-  static const char* NegatedDesc() { return "isn't >="; }
-};
-
-template <typename T, typename = typename std::enable_if<
-                          std::is_constructible<std::string, T>::value>::type>
-using StringLike = T;
-
-// Implements polymorphic matchers MatchesRegex(regex) and
-// ContainsRegex(regex), which can be used as a Matcher<T> as long as
-// T can be converted to a string.
-class MatchesRegexMatcher {
- public:
-  MatchesRegexMatcher(const RE* regex, bool full_match)
-      : regex_(regex), full_match_(full_match) {}
-
-#if GTEST_INTERNAL_HAS_STRING_VIEW
-  bool MatchAndExplain(const internal::StringView& s,
-                       MatchResultListener* listener) const {
-    return MatchAndExplain(std::string(s), listener);
-  }
-#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
-
-  // Accepts pointer types, particularly:
-  //   const char*
-  //   char*
-  //   const wchar_t*
-  //   wchar_t*
-  template <typename CharType>
-  bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
-    return s != nullptr && MatchAndExplain(std::string(s), listener);
-  }
-
-  // Matches anything that can convert to std::string.
-  //
-  // This is a template, not just a plain function with const std::string&,
-  // because absl::string_view has some interfering non-explicit constructors.
-  template <class MatcheeStringType>
-  bool MatchAndExplain(const MatcheeStringType& s,
-                       MatchResultListener* /* listener */) const {
-    const std::string& s2(s);
-    return full_match_ ? RE::FullMatch(s2, *regex_)
-                       : RE::PartialMatch(s2, *regex_);
-  }
-
-  void DescribeTo(::std::ostream* os) const {
-    *os << (full_match_ ? "matches" : "contains") << " regular expression ";
-    UniversalPrinter<std::string>::Print(regex_->pattern(), os);
-  }
-
-  void DescribeNegationTo(::std::ostream* os) const {
-    *os << "doesn't " << (full_match_ ? "match" : "contain")
-        << " regular expression ";
-    UniversalPrinter<std::string>::Print(regex_->pattern(), os);
-  }
-
- private:
-  const std::shared_ptr<const RE> regex_;
-  const bool full_match_;
-};
-}  // namespace internal
-
-// Matches a string that fully matches regular expression 'regex'.
-// The matcher takes ownership of 'regex'.
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
-    const internal::RE* regex) {
-  return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, true));
-}
-template <typename T = std::string>
-PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
-    const internal::StringLike<T>& regex) {
-  return MatchesRegex(new internal::RE(std::string(regex)));
-}
-
-// Matches a string that contains regular expression 'regex'.
-// The matcher takes ownership of 'regex'.
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
-    const internal::RE* regex) {
-  return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, false));
-}
-template <typename T = std::string>
-PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
-    const internal::StringLike<T>& regex) {
-  return ContainsRegex(new internal::RE(std::string(regex)));
-}
-
-// Creates a polymorphic matcher that matches anything equal to x.
-// Note: if the parameter of Eq() were declared as const T&, Eq("foo")
-// wouldn't compile.
-template <typename T>
-inline internal::EqMatcher<T> Eq(T x) { return internal::EqMatcher<T>(x); }
-
-// Constructs a Matcher<T> from a 'value' of type T.  The constructed
-// matcher matches any value that's equal to 'value'.
-template <typename T>
-Matcher<T>::Matcher(T value) { *this = Eq(value); }
-
-// Creates a monomorphic matcher that matches anything with type Lhs
-// and equal to rhs.  A user may need to use this instead of Eq(...)
-// in order to resolve an overloading ambiguity.
-//
-// TypedEq<T>(x) is just a convenient short-hand for Matcher<T>(Eq(x))
-// or Matcher<T>(x), but more readable than the latter.
-//
-// We could define similar monomorphic matchers for other comparison
-// operations (e.g. TypedLt, TypedGe, and etc), but decided not to do
-// it yet as those are used much less than Eq() in practice.  A user
-// can always write Matcher<T>(Lt(5)) to be explicit about the type,
-// for example.
-template <typename Lhs, typename Rhs>
-inline Matcher<Lhs> TypedEq(const Rhs& rhs) { return Eq(rhs); }
-
-// Creates a polymorphic matcher that matches anything >= x.
-template <typename Rhs>
-inline internal::GeMatcher<Rhs> Ge(Rhs x) {
-  return internal::GeMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything > x.
-template <typename Rhs>
-inline internal::GtMatcher<Rhs> Gt(Rhs x) {
-  return internal::GtMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything <= x.
-template <typename Rhs>
-inline internal::LeMatcher<Rhs> Le(Rhs x) {
-  return internal::LeMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything < x.
-template <typename Rhs>
-inline internal::LtMatcher<Rhs> Lt(Rhs x) {
-  return internal::LtMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything != x.
-template <typename Rhs>
-inline internal::NeMatcher<Rhs> Ne(Rhs x) {
-  return internal::NeMatcher<Rhs>(x);
-}
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251 5046
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
-
-#include <stdio.h>
-#include <memory>
-
-namespace testing {
-namespace internal {
-
-GTEST_DECLARE_string_(internal_run_death_test);
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kDeathTestStyleFlag[] = "death_test_style";
-const char kDeathTestUseFork[] = "death_test_use_fork";
-const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
-
-#if GTEST_HAS_DEATH_TEST
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-// DeathTest is a class that hides much of the complexity of the
-// GTEST_DEATH_TEST_ macro.  It is abstract; its static Create method
-// returns a concrete class that depends on the prevailing death test
-// style, as defined by the --gtest_death_test_style and/or
-// --gtest_internal_run_death_test flags.
-
-// In describing the results of death tests, these terms are used with
-// the corresponding definitions:
-//
-// exit status:  The integer exit information in the format specified
-//               by wait(2)
-// exit code:    The integer code passed to exit(3), _exit(2), or
-//               returned from main()
-class GTEST_API_ DeathTest {
- public:
-  // Create returns false if there was an error determining the
-  // appropriate action to take for the current death test; for example,
-  // if the gtest_death_test_style flag is set to an invalid value.
-  // The LastMessage method will return a more detailed message in that
-  // case.  Otherwise, the DeathTest pointer pointed to by the "test"
-  // argument is set.  If the death test should be skipped, the pointer
-  // is set to NULL; otherwise, it is set to the address of a new concrete
-  // DeathTest object that controls the execution of the current test.
-  static bool Create(const char* statement, Matcher<const std::string&> matcher,
-                     const char* file, int line, DeathTest** test);
-  DeathTest();
-  virtual ~DeathTest() { }
-
-  // A helper class that aborts a death test when it's deleted.
-  class ReturnSentinel {
-   public:
-    explicit ReturnSentinel(DeathTest* test) : test_(test) { }
-    ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
-   private:
-    DeathTest* const test_;
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
-  } GTEST_ATTRIBUTE_UNUSED_;
-
-  // An enumeration of possible roles that may be taken when a death
-  // test is encountered.  EXECUTE means that the death test logic should
-  // be executed immediately.  OVERSEE means that the program should prepare
-  // the appropriate environment for a child process to execute the death
-  // test, then wait for it to complete.
-  enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
-
-  // An enumeration of the three reasons that a test might be aborted.
-  enum AbortReason {
-    TEST_ENCOUNTERED_RETURN_STATEMENT,
-    TEST_THREW_EXCEPTION,
-    TEST_DID_NOT_DIE
-  };
-
-  // Assumes one of the above roles.
-  virtual TestRole AssumeRole() = 0;
-
-  // Waits for the death test to finish and returns its status.
-  virtual int Wait() = 0;
-
-  // Returns true if the death test passed; that is, the test process
-  // exited during the test, its exit status matches a user-supplied
-  // predicate, and its stderr output matches a user-supplied regular
-  // expression.
-  // The user-supplied predicate may be a macro expression rather
-  // than a function pointer or functor, or else Wait and Passed could
-  // be combined.
-  virtual bool Passed(bool exit_status_ok) = 0;
-
-  // Signals that the death test did not die as expected.
-  virtual void Abort(AbortReason reason) = 0;
-
-  // Returns a human-readable outcome message regarding the outcome of
-  // the last death test.
-  static const char* LastMessage();
-
-  static void set_last_death_test_message(const std::string& message);
-
- private:
-  // A string containing a description of the outcome of the last death test.
-  static std::string last_death_test_message_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
-};
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-// Factory interface for death tests.  May be mocked out for testing.
-class DeathTestFactory {
- public:
-  virtual ~DeathTestFactory() { }
-  virtual bool Create(const char* statement,
-                      Matcher<const std::string&> matcher, const char* file,
-                      int line, DeathTest** test) = 0;
-};
-
-// A concrete DeathTestFactory implementation for normal use.
-class DefaultDeathTestFactory : public DeathTestFactory {
- public:
-  bool Create(const char* statement, Matcher<const std::string&> matcher,
-              const char* file, int line, DeathTest** test) override;
-};
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
-
-// A string passed to EXPECT_DEATH (etc.) is caught by one of these overloads
-// and interpreted as a regex (rather than an Eq matcher) for legacy
-// compatibility.
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(
-    ::testing::internal::RE regex) {
-  return ContainsRegex(regex.pattern());
-}
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(const char* regex) {
-  return ContainsRegex(regex);
-}
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(
-    const ::std::string& regex) {
-  return ContainsRegex(regex);
-}
-
-// If a Matcher<const ::std::string&> is passed to EXPECT_DEATH (etc.), it's
-// used directly.
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(
-    Matcher<const ::std::string&> matcher) {
-  return matcher;
-}
-
-// Traps C++ exceptions escaping statement and reports them as test
-// failures. Note that trapping SEH exceptions is not implemented here.
-# if GTEST_HAS_EXCEPTIONS
-#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
-  try { \
-    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
-  } catch (const ::std::exception& gtest_exception) { \
-    fprintf(\
-        stderr, \
-        "\n%s: Caught std::exception-derived exception escaping the " \
-        "death test statement. Exception message: %s\n", \
-        ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
-        gtest_exception.what()); \
-    fflush(stderr); \
-    death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
-  } catch (...) { \
-    death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
-  }
-
-# else
-#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
-  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-
-# endif
-
-// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
-// ASSERT_EXIT*, and EXPECT_EXIT*.
-#define GTEST_DEATH_TEST_(statement, predicate, regex_or_matcher, fail)        \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_                                                \
-  if (::testing::internal::AlwaysTrue()) {                                     \
-    ::testing::internal::DeathTest* gtest_dt;                                  \
-    if (!::testing::internal::DeathTest::Create(                               \
-            #statement,                                                        \
-            ::testing::internal::MakeDeathTestMatcher(regex_or_matcher),       \
-            __FILE__, __LINE__, &gtest_dt)) {                                  \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__);                        \
-    }                                                                          \
-    if (gtest_dt != nullptr) {                                                 \
-      std::unique_ptr< ::testing::internal::DeathTest> gtest_dt_ptr(gtest_dt); \
-      switch (gtest_dt->AssumeRole()) {                                        \
-        case ::testing::internal::DeathTest::OVERSEE_TEST:                     \
-          if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) {                \
-            goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__);                  \
-          }                                                                    \
-          break;                                                               \
-        case ::testing::internal::DeathTest::EXECUTE_TEST: {                   \
-          ::testing::internal::DeathTest::ReturnSentinel gtest_sentinel(       \
-              gtest_dt);                                                       \
-          GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt);            \
-          gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE);   \
-          break;                                                               \
-        }                                                                      \
-        default:                                                               \
-          break;                                                               \
-      }                                                                        \
-    }                                                                          \
-  } else                                                                       \
-    GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__)                                \
-        : fail(::testing::internal::DeathTest::LastMessage())
-// The symbol "fail" here expands to something into which a message
-// can be streamed.
-
-// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
-// NDEBUG mode. In this case we need the statements to be executed and the macro
-// must accept a streamed message even though the message is never printed.
-// The regex object is not evaluated, but it is used to prevent "unused"
-// warnings and to avoid an expression that doesn't compile in debug mode.
-#define GTEST_EXECUTE_STATEMENT_(statement, regex_or_matcher)    \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_                                  \
-  if (::testing::internal::AlwaysTrue()) {                       \
-    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement);   \
-  } else if (!::testing::internal::AlwaysTrue()) {               \
-    ::testing::internal::MakeDeathTestMatcher(regex_or_matcher); \
-  } else                                                         \
-    ::testing::Message()
-
-// A class representing the parsed contents of the
-// --gtest_internal_run_death_test flag, as it existed when
-// RUN_ALL_TESTS was called.
-class InternalRunDeathTestFlag {
- public:
-  InternalRunDeathTestFlag(const std::string& a_file,
-                           int a_line,
-                           int an_index,
-                           int a_write_fd)
-      : file_(a_file), line_(a_line), index_(an_index),
-        write_fd_(a_write_fd) {}
-
-  ~InternalRunDeathTestFlag() {
-    if (write_fd_ >= 0)
-      posix::Close(write_fd_);
-  }
-
-  const std::string& file() const { return file_; }
-  int line() const { return line_; }
-  int index() const { return index_; }
-  int write_fd() const { return write_fd_; }
-
- private:
-  std::string file_;
-  int line_;
-  int index_;
-  int write_fd_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
-};
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
-
-#endif  // GTEST_HAS_DEATH_TEST
-
-}  // namespace internal
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-
-namespace testing {
-
-// This flag controls the style of death tests.  Valid values are "threadsafe",
-// meaning that the death test child process will re-execute the test binary
-// from the start, running only a single death test, or "fast",
-// meaning that the child process will execute the test logic immediately
-// after forking.
-GTEST_DECLARE_string_(death_test_style);
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process.  Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests.  IMPORTANT: This is an internal utility.  Using it may break the
-// implementation of death tests.  User code MUST NOT use it.
-GTEST_API_ bool InDeathTestChild();
-
-}  // namespace internal
-
-// The following macros are useful for writing death tests.
-
-// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
-// executed:
-//
-//   1. It generates a warning if there is more than one active
-//   thread.  This is because it's safe to fork() or clone() only
-//   when there is a single thread.
-//
-//   2. The parent process clone()s a sub-process and runs the death
-//   test in it; the sub-process exits with code 0 at the end of the
-//   death test, if it hasn't exited already.
-//
-//   3. The parent process waits for the sub-process to terminate.
-//
-//   4. The parent process checks the exit code and error message of
-//   the sub-process.
-//
-// Examples:
-//
-//   ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
-//   for (int i = 0; i < 5; i++) {
-//     EXPECT_DEATH(server.ProcessRequest(i),
-//                  "Invalid request .* in ProcessRequest()")
-//                  << "Failed to die on request " << i;
-//   }
-//
-//   ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
-//
-//   bool KilledBySIGHUP(int exit_code) {
-//     return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
-//   }
-//
-//   ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
-//
-// The final parameter to each of these macros is a matcher applied to any data
-// the sub-process wrote to stderr.  For compatibility with existing tests, a
-// bare string is interpreted as a regular expression matcher.
-//
-// On the regular expressions used in death tests:
-//
-//   GOOGLETEST_CM0005 DO NOT DELETE
-//   On POSIX-compliant systems (*nix), we use the <regex.h> library,
-//   which uses the POSIX extended regex syntax.
-//
-//   On other platforms (e.g. Windows or Mac), we only support a simple regex
-//   syntax implemented as part of Google Test.  This limited
-//   implementation should be enough most of the time when writing
-//   death tests; though it lacks many features you can find in PCRE
-//   or POSIX extended regex syntax.  For example, we don't support
-//   union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
-//   repetition count ("x{5,7}"), among others.
-//
-//   Below is the syntax that we do support.  We chose it to be a
-//   subset of both PCRE and POSIX extended regex, so it's easy to
-//   learn wherever you come from.  In the following: 'A' denotes a
-//   literal character, period (.), or a single \\ escape sequence;
-//   'x' and 'y' denote regular expressions; 'm' and 'n' are for
-//   natural numbers.
-//
-//     c     matches any literal character c
-//     \\d   matches any decimal digit
-//     \\D   matches any character that's not a decimal digit
-//     \\f   matches \f
-//     \\n   matches \n
-//     \\r   matches \r
-//     \\s   matches any ASCII whitespace, including \n
-//     \\S   matches any character that's not a whitespace
-//     \\t   matches \t
-//     \\v   matches \v
-//     \\w   matches any letter, _, or decimal digit
-//     \\W   matches any character that \\w doesn't match
-//     \\c   matches any literal character c, which must be a punctuation
-//     .     matches any single character except \n
-//     A?    matches 0 or 1 occurrences of A
-//     A*    matches 0 or many occurrences of A
-//     A+    matches 1 or many occurrences of A
-//     ^     matches the beginning of a string (not that of each line)
-//     $     matches the end of a string (not that of each line)
-//     xy    matches x followed by y
-//
-//   If you accidentally use PCRE or POSIX extended regex features
-//   not implemented by us, you will get a run-time failure.  In that
-//   case, please try to rewrite your regular expression within the
-//   above syntax.
-//
-//   This implementation is *not* meant to be as highly tuned or robust
-//   as a compiled regex library, but should perform well enough for a
-//   death test, which already incurs significant overhead by launching
-//   a child process.
-//
-// Known caveats:
-//
-//   A "threadsafe" style death test obtains the path to the test
-//   program from argv[0] and re-executes it in the sub-process.  For
-//   simplicity, the current implementation doesn't search the PATH
-//   when launching the sub-process.  This means that the user must
-//   invoke the test program via a path that contains at least one
-//   path separator (e.g. path/to/foo_test and
-//   /absolute/path/to/bar_test are fine, but foo_test is not).  This
-//   is rarely a problem as people usually don't put the test binary
-//   directory in PATH.
-//
-
-// Asserts that a given `statement` causes the program to exit, with an
-// integer exit status that satisfies `predicate`, and emitting error output
-// that matches `matcher`.
-# define ASSERT_EXIT(statement, predicate, matcher) \
-    GTEST_DEATH_TEST_(statement, predicate, matcher, GTEST_FATAL_FAILURE_)
-
-// Like `ASSERT_EXIT`, but continues on to successive tests in the
-// test suite, if any:
-# define EXPECT_EXIT(statement, predicate, matcher) \
-    GTEST_DEATH_TEST_(statement, predicate, matcher, GTEST_NONFATAL_FAILURE_)
-
-// Asserts that a given `statement` causes the program to exit, either by
-// explicitly exiting with a nonzero exit code or being killed by a
-// signal, and emitting error output that matches `matcher`.
-# define ASSERT_DEATH(statement, matcher) \
-    ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, matcher)
-
-// Like `ASSERT_DEATH`, but continues on to successive tests in the
-// test suite, if any:
-# define EXPECT_DEATH(statement, matcher) \
-    EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, matcher)
-
-// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
-
-// Tests that an exit code describes a normal exit with a given exit code.
-class GTEST_API_ ExitedWithCode {
- public:
-  explicit ExitedWithCode(int exit_code);
-  ExitedWithCode(const ExitedWithCode&) = default;
-  void operator=(const ExitedWithCode& other) = delete;
-  bool operator()(int exit_status) const;
- private:
-  const int exit_code_;
-};
-
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// Tests that an exit code describes an exit due to termination by a
-// given signal.
-// GOOGLETEST_CM0006 DO NOT DELETE
-class GTEST_API_ KilledBySignal {
- public:
-  explicit KilledBySignal(int signum);
-  bool operator()(int exit_status) const;
- private:
-  const int signum_;
-};
-# endif  // !GTEST_OS_WINDOWS
-
-// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
-// The death testing framework causes this to have interesting semantics,
-// since the sideeffects of the call are only visible in opt mode, and not
-// in debug mode.
-//
-// In practice, this can be used to test functions that utilize the
-// LOG(DFATAL) macro using the following style:
-//
-// int DieInDebugOr12(int* sideeffect) {
-//   if (sideeffect) {
-//     *sideeffect = 12;
-//   }
-//   LOG(DFATAL) << "death";
-//   return 12;
-// }
-//
-// TEST(TestSuite, TestDieOr12WorksInDgbAndOpt) {
-//   int sideeffect = 0;
-//   // Only asserts in dbg.
-//   EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
-//
-// #ifdef NDEBUG
-//   // opt-mode has sideeffect visible.
-//   EXPECT_EQ(12, sideeffect);
-// #else
-//   // dbg-mode no visible sideeffect.
-//   EXPECT_EQ(0, sideeffect);
-// #endif
-// }
-//
-// This will assert that DieInDebugReturn12InOpt() crashes in debug
-// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
-// appropriate fallback value (12 in this case) in opt mode. If you
-// need to test that a function has appropriate side-effects in opt
-// mode, include assertions against the side-effects.  A general
-// pattern for this is:
-//
-// EXPECT_DEBUG_DEATH({
-//   // Side-effects here will have an effect after this statement in
-//   // opt mode, but none in debug mode.
-//   EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
-// }, "death");
-//
-# ifdef NDEBUG
-
-#  define EXPECT_DEBUG_DEATH(statement, regex) \
-  GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-#  define ASSERT_DEBUG_DEATH(statement, regex) \
-  GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# else
-
-#  define EXPECT_DEBUG_DEATH(statement, regex) \
-  EXPECT_DEATH(statement, regex)
-
-#  define ASSERT_DEBUG_DEATH(statement, regex) \
-  ASSERT_DEATH(statement, regex)
-
-# endif  // NDEBUG for EXPECT_DEBUG_DEATH
-#endif  // GTEST_HAS_DEATH_TEST
-
-// This macro is used for implementing macros such as
-// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
-// death tests are not supported. Those macros must compile on such systems
-// if and only if EXPECT_DEATH and ASSERT_DEATH compile with the same parameters
-// on systems that support death tests. This allows one to write such a macro on
-// a system that does not support death tests and be sure that it will compile
-// on a death-test supporting system. It is exposed publicly so that systems
-// that have death-tests with stricter requirements than GTEST_HAS_DEATH_TEST
-// can write their own equivalent of EXPECT_DEATH_IF_SUPPORTED and
-// ASSERT_DEATH_IF_SUPPORTED.
-//
-// Parameters:
-//   statement -  A statement that a macro such as EXPECT_DEATH would test
-//                for program termination. This macro has to make sure this
-//                statement is compiled but not executed, to ensure that
-//                EXPECT_DEATH_IF_SUPPORTED compiles with a certain
-//                parameter if and only if EXPECT_DEATH compiles with it.
-//   regex     -  A regex that a macro such as EXPECT_DEATH would use to test
-//                the output of statement.  This parameter has to be
-//                compiled but not evaluated by this macro, to ensure that
-//                this macro only accepts expressions that a macro such as
-//                EXPECT_DEATH would accept.
-//   terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
-//                and a return statement for ASSERT_DEATH_IF_SUPPORTED.
-//                This ensures that ASSERT_DEATH_IF_SUPPORTED will not
-//                compile inside functions where ASSERT_DEATH doesn't
-//                compile.
-//
-//  The branch that has an always false condition is used to ensure that
-//  statement and regex are compiled (and thus syntactically correct) but
-//  never executed. The unreachable code macro protects the terminator
-//  statement from generating an 'unreachable code' warning in case
-//  statement unconditionally returns or throws. The Message constructor at
-//  the end allows the syntax of streaming additional messages into the
-//  macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
-# define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, terminator) \
-    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-    if (::testing::internal::AlwaysTrue()) { \
-      GTEST_LOG_(WARNING) \
-          << "Death tests are not supported on this platform.\n" \
-          << "Statement '" #statement "' cannot be verified."; \
-    } else if (::testing::internal::AlwaysFalse()) { \
-      ::testing::internal::RE::PartialMatch(".*", (regex)); \
-      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
-      terminator; \
-    } else \
-      ::testing::Message()
-
-// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
-// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
-// death tests are supported; otherwise they just issue a warning.  This is
-// useful when you are combining death test assertions with normal test
-// assertions in one test.
-#if GTEST_HAS_DEATH_TEST
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
-    EXPECT_DEATH(statement, regex)
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
-    ASSERT_DEATH(statement, regex)
-#else
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
-    GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
-    GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)
-#endif
-
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Macros and functions for implementing parameterized tests
-// in Google C++ Testing and Mocking Framework (Google Test)
-//
-// GOOGLETEST_CM0001 DO NOT DELETE
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-
-// Value-parameterized tests allow you to test your code with different
-// parameters without writing multiple copies of the same test.
-//
-// Here is how you use value-parameterized tests:
-
-#if 0
-
-// To write value-parameterized tests, first you should define a fixture
-// class. It is usually derived from testing::TestWithParam<T> (see below for
-// another inheritance scheme that's sometimes useful in more complicated
-// class hierarchies), where the type of your parameter values.
-// TestWithParam<T> is itself derived from testing::Test. T can be any
-// copyable type. If it's a raw pointer, you are responsible for managing the
-// lifespan of the pointed values.
-
-class FooTest : public ::testing::TestWithParam<const char*> {
-  // You can implement all the usual class fixture members here.
-};
-
-// Then, use the TEST_P macro to define as many parameterized tests
-// for this fixture as you want. The _P suffix is for "parameterized"
-// or "pattern", whichever you prefer to think.
-
-TEST_P(FooTest, DoesBlah) {
-  // Inside a test, access the test parameter with the GetParam() method
-  // of the TestWithParam<T> class:
-  EXPECT_TRUE(foo.Blah(GetParam()));
-  ...
-}
-
-TEST_P(FooTest, HasBlahBlah) {
-  ...
-}
-
-// Finally, you can use INSTANTIATE_TEST_SUITE_P to instantiate the test
-// case with any set of parameters you want. Google Test defines a number
-// of functions for generating test parameters. They return what we call
-// (surprise!) parameter generators. Here is a summary of them, which
-// are all in the testing namespace:
-//
-//
-//  Range(begin, end [, step]) - Yields values {begin, begin+step,
-//                               begin+step+step, ...}. The values do not
-//                               include end. step defaults to 1.
-//  Values(v1, v2, ..., vN)    - Yields values {v1, v2, ..., vN}.
-//  ValuesIn(container)        - Yields values from a C-style array, an STL
-//  ValuesIn(begin,end)          container, or an iterator range [begin, end).
-//  Bool()                     - Yields sequence {false, true}.
-//  Combine(g1, g2, ..., gN)   - Yields all combinations (the Cartesian product
-//                               for the math savvy) of the values generated
-//                               by the N generators.
-//
-// For more details, see comments at the definitions of these functions below
-// in this file.
-//
-// The following statement will instantiate tests from the FooTest test suite
-// each with parameter values "meeny", "miny", and "moe".
-
-INSTANTIATE_TEST_SUITE_P(InstantiationName,
-                         FooTest,
-                         Values("meeny", "miny", "moe"));
-
-// To distinguish different instances of the pattern, (yes, you
-// can instantiate it more than once) the first argument to the
-// INSTANTIATE_TEST_SUITE_P macro is a prefix that will be added to the
-// actual test suite name. Remember to pick unique prefixes for different
-// instantiations. The tests from the instantiation above will have
-// these names:
-//
-//    * InstantiationName/FooTest.DoesBlah/0 for "meeny"
-//    * InstantiationName/FooTest.DoesBlah/1 for "miny"
-//    * InstantiationName/FooTest.DoesBlah/2 for "moe"
-//    * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
-//    * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
-//    * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
-//
-// You can use these names in --gtest_filter.
-//
-// This statement will instantiate all tests from FooTest again, each
-// with parameter values "cat" and "dog":
-
-const char* pets[] = {"cat", "dog"};
-INSTANTIATE_TEST_SUITE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
-
-// The tests from the instantiation above will have these names:
-//
-//    * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
-//    * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
-//    * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
-//    * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
-//
-// Please note that INSTANTIATE_TEST_SUITE_P will instantiate all tests
-// in the given test suite, whether their definitions come before or
-// AFTER the INSTANTIATE_TEST_SUITE_P statement.
-//
-// Please also note that generator expressions (including parameters to the
-// generators) are evaluated in InitGoogleTest(), after main() has started.
-// This allows the user on one hand, to adjust generator parameters in order
-// to dynamically determine a set of tests to run and on the other hand,
-// give the user a chance to inspect the generated tests with Google Test
-// reflection API before RUN_ALL_TESTS() is executed.
-//
-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
-// for more examples.
-//
-// In the future, we plan to publish the API for defining new parameter
-// generators. But for now this interface remains part of the internal
-// implementation and is subject to change.
-//
-//
-// A parameterized test fixture must be derived from testing::Test and from
-// testing::WithParamInterface<T>, where T is the type of the parameter
-// values. Inheriting from TestWithParam<T> satisfies that requirement because
-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
-// complicated hierarchies, however, it is occasionally useful to inherit
-// separately from Test and WithParamInterface. For example:
-
-class BaseTest : public ::testing::Test {
-  // You can inherit all the usual members for a non-parameterized test
-  // fixture here.
-};
-
-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
-  // The usual test fixture members go here too.
-};
-
-TEST_F(BaseTest, HasFoo) {
-  // This is an ordinary non-parameterized test.
-}
-
-TEST_P(DerivedTest, DoesBlah) {
-  // GetParam works just the same here as if you inherit from TestWithParam.
-  EXPECT_TRUE(foo.Blah(GetParam()));
-}
-
-#endif  // 0
-
-#include <iterator>
-#include <utility>
-
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Type and function utilities for implementing parameterized tests.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-
-#include <ctype.h>
-
-#include <cassert>
-#include <iterator>
-#include <memory>
-#include <set>
-#include <tuple>
-#include <type_traits>
-#include <utility>
-#include <vector>
-
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-
-#include <iosfwd>
-#include <vector>
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// A copyable object representing the result of a test part (i.e. an
-// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
-//
-// Don't inherit from TestPartResult as its destructor is not virtual.
-class GTEST_API_ TestPartResult {
- public:
-  // The possible outcomes of a test part (i.e. an assertion or an
-  // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
-  enum Type {
-    kSuccess,          // Succeeded.
-    kNonFatalFailure,  // Failed but the test can continue.
-    kFatalFailure,     // Failed and the test should be terminated.
-    kSkip              // Skipped.
-  };
-
-  // C'tor.  TestPartResult does NOT have a default constructor.
-  // Always use this constructor (with parameters) to create a
-  // TestPartResult object.
-  TestPartResult(Type a_type, const char* a_file_name, int a_line_number,
-                 const char* a_message)
-      : type_(a_type),
-        file_name_(a_file_name == nullptr ? "" : a_file_name),
-        line_number_(a_line_number),
-        summary_(ExtractSummary(a_message)),
-        message_(a_message) {}
-
-  // Gets the outcome of the test part.
-  Type type() const { return type_; }
-
-  // Gets the name of the source file where the test part took place, or
-  // NULL if it's unknown.
-  const char* file_name() const {
-    return file_name_.empty() ? nullptr : file_name_.c_str();
-  }
-
-  // Gets the line in the source file where the test part took place,
-  // or -1 if it's unknown.
-  int line_number() const { return line_number_; }
-
-  // Gets the summary of the failure message.
-  const char* summary() const { return summary_.c_str(); }
-
-  // Gets the message associated with the test part.
-  const char* message() const { return message_.c_str(); }
-
-  // Returns true if and only if the test part was skipped.
-  bool skipped() const { return type_ == kSkip; }
-
-  // Returns true if and only if the test part passed.
-  bool passed() const { return type_ == kSuccess; }
-
-  // Returns true if and only if the test part non-fatally failed.
-  bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
-
-  // Returns true if and only if the test part fatally failed.
-  bool fatally_failed() const { return type_ == kFatalFailure; }
-
-  // Returns true if and only if the test part failed.
-  bool failed() const { return fatally_failed() || nonfatally_failed(); }
-
- private:
-  Type type_;
-
-  // Gets the summary of the failure message by omitting the stack
-  // trace in it.
-  static std::string ExtractSummary(const char* message);
-
-  // The name of the source file where the test part took place, or
-  // "" if the source file is unknown.
-  std::string file_name_;
-  // The line in the source file where the test part took place, or -1
-  // if the line number is unknown.
-  int line_number_;
-  std::string summary_;  // The test failure summary.
-  std::string message_;  // The test failure message.
-};
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
-
-// An array of TestPartResult objects.
-//
-// Don't inherit from TestPartResultArray as its destructor is not
-// virtual.
-class GTEST_API_ TestPartResultArray {
- public:
-  TestPartResultArray() {}
-
-  // Appends the given TestPartResult to the array.
-  void Append(const TestPartResult& result);
-
-  // Returns the TestPartResult at the given index (0-based).
-  const TestPartResult& GetTestPartResult(int index) const;
-
-  // Returns the number of TestPartResult objects in the array.
-  int size() const;
-
- private:
-  std::vector<TestPartResult> array_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
-};
-
-// This interface knows how to report a test part result.
-class GTEST_API_ TestPartResultReporterInterface {
- public:
-  virtual ~TestPartResultReporterInterface() {}
-
-  virtual void ReportTestPartResult(const TestPartResult& result) = 0;
-};
-
-namespace internal {
-
-// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
-// statement generates new fatal failures. To do so it registers itself as the
-// current test part result reporter. Besides checking if fatal failures were
-// reported, it only delegates the reporting to the former result reporter.
-// The original result reporter is restored in the destructor.
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-class GTEST_API_ HasNewFatalFailureHelper
-    : public TestPartResultReporterInterface {
- public:
-  HasNewFatalFailureHelper();
-  ~HasNewFatalFailureHelper() override;
-  void ReportTestPartResult(const TestPartResult& result) override;
-  bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
- private:
-  bool has_new_fatal_failure_;
-  TestPartResultReporterInterface* original_reporter_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
-};
-
-}  // namespace internal
-
-}  // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-
-namespace testing {
-// Input to a parameterized test name generator, describing a test parameter.
-// Consists of the parameter value and the integer parameter index.
-template <class ParamType>
-struct TestParamInfo {
-  TestParamInfo(const ParamType& a_param, size_t an_index) :
-    param(a_param),
-    index(an_index) {}
-  ParamType param;
-  size_t index;
-};
-
-// A builtin parameterized test name generator which returns the result of
-// testing::PrintToString.
-struct PrintToStringParamName {
-  template <class ParamType>
-  std::string operator()(const TestParamInfo<ParamType>& info) const {
-    return PrintToString(info.param);
-  }
-};
-
-namespace internal {
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-// Utility Functions
-
-// Outputs a message explaining invalid registration of different
-// fixture class for the same test suite. This may happen when
-// TEST_P macro is used to define two tests with the same name
-// but in different namespaces.
-GTEST_API_ void ReportInvalidTestSuiteType(const char* test_suite_name,
-                                           CodeLocation code_location);
-
-template <typename> class ParamGeneratorInterface;
-template <typename> class ParamGenerator;
-
-// Interface for iterating over elements provided by an implementation
-// of ParamGeneratorInterface<T>.
-template <typename T>
-class ParamIteratorInterface {
- public:
-  virtual ~ParamIteratorInterface() {}
-  // A pointer to the base generator instance.
-  // Used only for the purposes of iterator comparison
-  // to make sure that two iterators belong to the same generator.
-  virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
-  // Advances iterator to point to the next element
-  // provided by the generator. The caller is responsible
-  // for not calling Advance() on an iterator equal to
-  // BaseGenerator()->End().
-  virtual void Advance() = 0;
-  // Clones the iterator object. Used for implementing copy semantics
-  // of ParamIterator<T>.
-  virtual ParamIteratorInterface* Clone() const = 0;
-  // Dereferences the current iterator and provides (read-only) access
-  // to the pointed value. It is the caller's responsibility not to call
-  // Current() on an iterator equal to BaseGenerator()->End().
-  // Used for implementing ParamGenerator<T>::operator*().
-  virtual const T* Current() const = 0;
-  // Determines whether the given iterator and other point to the same
-  // element in the sequence generated by the generator.
-  // Used for implementing ParamGenerator<T>::operator==().
-  virtual bool Equals(const ParamIteratorInterface& other) const = 0;
-};
-
-// Class iterating over elements provided by an implementation of
-// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
-// and implements the const forward iterator concept.
-template <typename T>
-class ParamIterator {
- public:
-  typedef T value_type;
-  typedef const T& reference;
-  typedef ptrdiff_t difference_type;
-
-  // ParamIterator assumes ownership of the impl_ pointer.
-  ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
-  ParamIterator& operator=(const ParamIterator& other) {
-    if (this != &other)
-      impl_.reset(other.impl_->Clone());
-    return *this;
-  }
-
-  const T& operator*() const { return *impl_->Current(); }
-  const T* operator->() const { return impl_->Current(); }
-  // Prefix version of operator++.
-  ParamIterator& operator++() {
-    impl_->Advance();
-    return *this;
-  }
-  // Postfix version of operator++.
-  ParamIterator operator++(int /*unused*/) {
-    ParamIteratorInterface<T>* clone = impl_->Clone();
-    impl_->Advance();
-    return ParamIterator(clone);
-  }
-  bool operator==(const ParamIterator& other) const {
-    return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
-  }
-  bool operator!=(const ParamIterator& other) const {
-    return !(*this == other);
-  }
-
- private:
-  friend class ParamGenerator<T>;
-  explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
-  std::unique_ptr<ParamIteratorInterface<T> > impl_;
-};
-
-// ParamGeneratorInterface<T> is the binary interface to access generators
-// defined in other translation units.
-template <typename T>
-class ParamGeneratorInterface {
- public:
-  typedef T ParamType;
-
-  virtual ~ParamGeneratorInterface() {}
-
-  // Generator interface definition
-  virtual ParamIteratorInterface<T>* Begin() const = 0;
-  virtual ParamIteratorInterface<T>* End() const = 0;
-};
-
-// Wraps ParamGeneratorInterface<T> and provides general generator syntax
-// compatible with the STL Container concept.
-// This class implements copy initialization semantics and the contained
-// ParamGeneratorInterface<T> instance is shared among all copies
-// of the original object. This is possible because that instance is immutable.
-template<typename T>
-class ParamGenerator {
- public:
-  typedef ParamIterator<T> iterator;
-
-  explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
-  ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
-
-  ParamGenerator& operator=(const ParamGenerator& other) {
-    impl_ = other.impl_;
-    return *this;
-  }
-
-  iterator begin() const { return iterator(impl_->Begin()); }
-  iterator end() const { return iterator(impl_->End()); }
-
- private:
-  std::shared_ptr<const ParamGeneratorInterface<T> > impl_;
-};
-
-// Generates values from a range of two comparable values. Can be used to
-// generate sequences of user-defined types that implement operator+() and
-// operator<().
-// This class is used in the Range() function.
-template <typename T, typename IncrementT>
-class RangeGenerator : public ParamGeneratorInterface<T> {
- public:
-  RangeGenerator(T begin, T end, IncrementT step)
-      : begin_(begin), end_(end),
-        step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
-  ~RangeGenerator() override {}
-
-  ParamIteratorInterface<T>* Begin() const override {
-    return new Iterator(this, begin_, 0, step_);
-  }
-  ParamIteratorInterface<T>* End() const override {
-    return new Iterator(this, end_, end_index_, step_);
-  }
-
- private:
-  class Iterator : public ParamIteratorInterface<T> {
-   public:
-    Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
-             IncrementT step)
-        : base_(base), value_(value), index_(index), step_(step) {}
-    ~Iterator() override {}
-
-    const ParamGeneratorInterface<T>* BaseGenerator() const override {
-      return base_;
-    }
-    void Advance() override {
-      value_ = static_cast<T>(value_ + step_);
-      index_++;
-    }
-    ParamIteratorInterface<T>* Clone() const override {
-      return new Iterator(*this);
-    }
-    const T* Current() const override { return &value_; }
-    bool Equals(const ParamIteratorInterface<T>& other) const override {
-      // Having the same base generator guarantees that the other
-      // iterator is of the same type and we can downcast.
-      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
-          << "The program attempted to compare iterators "
-          << "from different generators." << std::endl;
-      const int other_index =
-          CheckedDowncastToActualType<const Iterator>(&other)->index_;
-      return index_ == other_index;
-    }
-
-   private:
-    Iterator(const Iterator& other)
-        : ParamIteratorInterface<T>(),
-          base_(other.base_), value_(other.value_), index_(other.index_),
-          step_(other.step_) {}
-
-    // No implementation - assignment is unsupported.
-    void operator=(const Iterator& other);
-
-    const ParamGeneratorInterface<T>* const base_;
-    T value_;
-    int index_;
-    const IncrementT step_;
-  };  // class RangeGenerator::Iterator
-
-  static int CalculateEndIndex(const T& begin,
-                               const T& end,
-                               const IncrementT& step) {
-    int end_index = 0;
-    for (T i = begin; i < end; i = static_cast<T>(i + step))
-      end_index++;
-    return end_index;
-  }
-
-  // No implementation - assignment is unsupported.
-  void operator=(const RangeGenerator& other);
-
-  const T begin_;
-  const T end_;
-  const IncrementT step_;
-  // The index for the end() iterator. All the elements in the generated
-  // sequence are indexed (0-based) to aid iterator comparison.
-  const int end_index_;
-};  // class RangeGenerator
-
-
-// Generates values from a pair of STL-style iterators. Used in the
-// ValuesIn() function. The elements are copied from the source range
-// since the source can be located on the stack, and the generator
-// is likely to persist beyond that stack frame.
-template <typename T>
-class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
- public:
-  template <typename ForwardIterator>
-  ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
-      : container_(begin, end) {}
-  ~ValuesInIteratorRangeGenerator() override {}
-
-  ParamIteratorInterface<T>* Begin() const override {
-    return new Iterator(this, container_.begin());
-  }
-  ParamIteratorInterface<T>* End() const override {
-    return new Iterator(this, container_.end());
-  }
-
- private:
-  typedef typename ::std::vector<T> ContainerType;
-
-  class Iterator : public ParamIteratorInterface<T> {
-   public:
-    Iterator(const ParamGeneratorInterface<T>* base,
-             typename ContainerType::const_iterator iterator)
-        : base_(base), iterator_(iterator) {}
-    ~Iterator() override {}
-
-    const ParamGeneratorInterface<T>* BaseGenerator() const override {
-      return base_;
-    }
-    void Advance() override {
-      ++iterator_;
-      value_.reset();
-    }
-    ParamIteratorInterface<T>* Clone() const override {
-      return new Iterator(*this);
-    }
-    // We need to use cached value referenced by iterator_ because *iterator_
-    // can return a temporary object (and of type other then T), so just
-    // having "return &*iterator_;" doesn't work.
-    // value_ is updated here and not in Advance() because Advance()
-    // can advance iterator_ beyond the end of the range, and we cannot
-    // detect that fact. The client code, on the other hand, is
-    // responsible for not calling Current() on an out-of-range iterator.
-    const T* Current() const override {
-      if (value_.get() == nullptr) value_.reset(new T(*iterator_));
-      return value_.get();
-    }
-    bool Equals(const ParamIteratorInterface<T>& other) const override {
-      // Having the same base generator guarantees that the other
-      // iterator is of the same type and we can downcast.
-      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
-          << "The program attempted to compare iterators "
-          << "from different generators." << std::endl;
-      return iterator_ ==
-          CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
-    }
-
-   private:
-    Iterator(const Iterator& other)
-          // The explicit constructor call suppresses a false warning
-          // emitted by gcc when supplied with the -Wextra option.
-        : ParamIteratorInterface<T>(),
-          base_(other.base_),
-          iterator_(other.iterator_) {}
-
-    const ParamGeneratorInterface<T>* const base_;
-    typename ContainerType::const_iterator iterator_;
-    // A cached value of *iterator_. We keep it here to allow access by
-    // pointer in the wrapping iterator's operator->().
-    // value_ needs to be mutable to be accessed in Current().
-    // Use of std::unique_ptr helps manage cached value's lifetime,
-    // which is bound by the lifespan of the iterator itself.
-    mutable std::unique_ptr<const T> value_;
-  };  // class ValuesInIteratorRangeGenerator::Iterator
-
-  // No implementation - assignment is unsupported.
-  void operator=(const ValuesInIteratorRangeGenerator& other);
-
-  const ContainerType container_;
-};  // class ValuesInIteratorRangeGenerator
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Default parameterized test name generator, returns a string containing the
-// integer test parameter index.
-template <class ParamType>
-std::string DefaultParamName(const TestParamInfo<ParamType>& info) {
-  Message name_stream;
-  name_stream << info.index;
-  return name_stream.GetString();
-}
-
-template <typename T = int>
-void TestNotEmpty() {
-  static_assert(sizeof(T) == 0, "Empty arguments are not allowed.");
-}
-template <typename T = int>
-void TestNotEmpty(const T&) {}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Stores a parameter value and later creates tests parameterized with that
-// value.
-template <class TestClass>
-class ParameterizedTestFactory : public TestFactoryBase {
- public:
-  typedef typename TestClass::ParamType ParamType;
-  explicit ParameterizedTestFactory(ParamType parameter) :
-      parameter_(parameter) {}
-  Test* CreateTest() override {
-    TestClass::SetParam(&parameter_);
-    return new TestClass();
-  }
-
- private:
-  const ParamType parameter_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactoryBase is a base class for meta-factories that create
-// test factories for passing into MakeAndRegisterTestInfo function.
-template <class ParamType>
-class TestMetaFactoryBase {
- public:
-  virtual ~TestMetaFactoryBase() {}
-
-  virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactory creates test factories for passing into
-// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
-// ownership of test factory pointer, same factory object cannot be passed
-// into that method twice. But ParameterizedTestSuiteInfo is going to call
-// it for each Test/Parameter value combination. Thus it needs meta factory
-// creator class.
-template <class TestSuite>
-class TestMetaFactory
-    : public TestMetaFactoryBase<typename TestSuite::ParamType> {
- public:
-  using ParamType = typename TestSuite::ParamType;
-
-  TestMetaFactory() {}
-
-  TestFactoryBase* CreateTestFactory(ParamType parameter) override {
-    return new ParameterizedTestFactory<TestSuite>(parameter);
-  }
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestSuiteInfoBase is a generic interface
-// to ParameterizedTestSuiteInfo classes. ParameterizedTestSuiteInfoBase
-// accumulates test information provided by TEST_P macro invocations
-// and generators provided by INSTANTIATE_TEST_SUITE_P macro invocations
-// and uses that information to register all resulting test instances
-// in RegisterTests method. The ParameterizeTestSuiteRegistry class holds
-// a collection of pointers to the ParameterizedTestSuiteInfo objects
-// and calls RegisterTests() on each of them when asked.
-class ParameterizedTestSuiteInfoBase {
- public:
-  virtual ~ParameterizedTestSuiteInfoBase() {}
-
-  // Base part of test suite name for display purposes.
-  virtual const std::string& GetTestSuiteName() const = 0;
-  // Test suite id to verify identity.
-  virtual TypeId GetTestSuiteTypeId() const = 0;
-  // UnitTest class invokes this method to register tests in this
-  // test suite right before running them in RUN_ALL_TESTS macro.
-  // This method should not be called more than once on any single
-  // instance of a ParameterizedTestSuiteInfoBase derived class.
-  virtual void RegisterTests() = 0;
-
- protected:
-  ParameterizedTestSuiteInfoBase() {}
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfoBase);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Report a the name of a test_suit as safe to ignore
-// as the side effect of construction of this type.
-struct GTEST_API_ MarkAsIgnored {
-  explicit MarkAsIgnored(const char* test_suite);
-};
-
-GTEST_API_ void InsertSyntheticTestCase(const std::string& name,
-                                        CodeLocation location, bool has_test_p);
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestSuiteInfo accumulates tests obtained from TEST_P
-// macro invocations for a particular test suite and generators
-// obtained from INSTANTIATE_TEST_SUITE_P macro invocations for that
-// test suite. It registers tests with all values generated by all
-// generators when asked.
-template <class TestSuite>
-class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
- public:
-  // ParamType and GeneratorCreationFunc are private types but are required
-  // for declarations of public methods AddTestPattern() and
-  // AddTestSuiteInstantiation().
-  using ParamType = typename TestSuite::ParamType;
-  // A function that returns an instance of appropriate generator type.
-  typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
-  using ParamNameGeneratorFunc = std::string(const TestParamInfo<ParamType>&);
-
-  explicit ParameterizedTestSuiteInfo(const char* name,
-                                      CodeLocation code_location)
-      : test_suite_name_(name), code_location_(code_location) {}
-
-  // Test suite base name for display purposes.
-  const std::string& GetTestSuiteName() const override {
-    return test_suite_name_;
-  }
-  // Test suite id to verify identity.
-  TypeId GetTestSuiteTypeId() const override { return GetTypeId<TestSuite>(); }
-  // TEST_P macro uses AddTestPattern() to record information
-  // about a single test in a LocalTestInfo structure.
-  // test_suite_name is the base name of the test suite (without invocation
-  // prefix). test_base_name is the name of an individual test without
-  // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
-  // test suite base name and DoBar is test base name.
-  void AddTestPattern(const char* test_suite_name, const char* test_base_name,
-                      TestMetaFactoryBase<ParamType>* meta_factory,
-                      CodeLocation code_location) {
-    tests_.push_back(std::shared_ptr<TestInfo>(new TestInfo(
-        test_suite_name, test_base_name, meta_factory, code_location)));
-  }
-  // INSTANTIATE_TEST_SUITE_P macro uses AddGenerator() to record information
-  // about a generator.
-  int AddTestSuiteInstantiation(const std::string& instantiation_name,
-                                GeneratorCreationFunc* func,
-                                ParamNameGeneratorFunc* name_func,
-                                const char* file, int line) {
-    instantiations_.push_back(
-        InstantiationInfo(instantiation_name, func, name_func, file, line));
-    return 0;  // Return value used only to run this method in namespace scope.
-  }
-  // UnitTest class invokes this method to register tests in this test suite
-  // right before running tests in RUN_ALL_TESTS macro.
-  // This method should not be called more than once on any single
-  // instance of a ParameterizedTestSuiteInfoBase derived class.
-  // UnitTest has a guard to prevent from calling this method more than once.
-  void RegisterTests() override {
-    bool generated_instantiations = false;
-
-    for (typename TestInfoContainer::iterator test_it = tests_.begin();
-         test_it != tests_.end(); ++test_it) {
-      std::shared_ptr<TestInfo> test_info = *test_it;
-      for (typename InstantiationContainer::iterator gen_it =
-               instantiations_.begin(); gen_it != instantiations_.end();
-               ++gen_it) {
-        const std::string& instantiation_name = gen_it->name;
-        ParamGenerator<ParamType> generator((*gen_it->generator)());
-        ParamNameGeneratorFunc* name_func = gen_it->name_func;
-        const char* file = gen_it->file;
-        int line = gen_it->line;
-
-        std::string test_suite_name;
-        if ( !instantiation_name.empty() )
-          test_suite_name = instantiation_name + "/";
-        test_suite_name += test_info->test_suite_base_name;
-
-        size_t i = 0;
-        std::set<std::string> test_param_names;
-        for (typename ParamGenerator<ParamType>::iterator param_it =
-                 generator.begin();
-             param_it != generator.end(); ++param_it, ++i) {
-          generated_instantiations = true;
-
-          Message test_name_stream;
-
-          std::string param_name = name_func(
-              TestParamInfo<ParamType>(*param_it, i));
-
-          GTEST_CHECK_(IsValidParamName(param_name))
-              << "Parameterized test name '" << param_name
-              << "' is invalid, in " << file
-              << " line " << line << std::endl;
-
-          GTEST_CHECK_(test_param_names.count(param_name) == 0)
-              << "Duplicate parameterized test name '" << param_name
-              << "', in " << file << " line " << line << std::endl;
-
-          test_param_names.insert(param_name);
-
-          if (!test_info->test_base_name.empty()) {
-            test_name_stream << test_info->test_base_name << "/";
-          }
-          test_name_stream << param_name;
-          MakeAndRegisterTestInfo(
-              test_suite_name.c_str(), test_name_stream.GetString().c_str(),
-              nullptr,  // No type parameter.
-              PrintToString(*param_it).c_str(), test_info->code_location,
-              GetTestSuiteTypeId(),
-              SuiteApiResolver<TestSuite>::GetSetUpCaseOrSuite(file, line),
-              SuiteApiResolver<TestSuite>::GetTearDownCaseOrSuite(file, line),
-              test_info->test_meta_factory->CreateTestFactory(*param_it));
-        }  // for param_it
-      }  // for gen_it
-    }  // for test_it
-
-    if (!generated_instantiations) {
-      // There are no generaotrs, or they all generate nothing ...
-      InsertSyntheticTestCase(GetTestSuiteName(), code_location_,
-                              !tests_.empty());
-    }
-  }    // RegisterTests
-
- private:
-  // LocalTestInfo structure keeps information about a single test registered
-  // with TEST_P macro.
-  struct TestInfo {
-    TestInfo(const char* a_test_suite_base_name, const char* a_test_base_name,
-             TestMetaFactoryBase<ParamType>* a_test_meta_factory,
-             CodeLocation a_code_location)
-        : test_suite_base_name(a_test_suite_base_name),
-          test_base_name(a_test_base_name),
-          test_meta_factory(a_test_meta_factory),
-          code_location(a_code_location) {}
-
-    const std::string test_suite_base_name;
-    const std::string test_base_name;
-    const std::unique_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
-    const CodeLocation code_location;
-  };
-  using TestInfoContainer = ::std::vector<std::shared_ptr<TestInfo> >;
-  // Records data received from INSTANTIATE_TEST_SUITE_P macros:
-  //  <Instantiation name, Sequence generator creation function,
-  //     Name generator function, Source file, Source line>
-  struct InstantiationInfo {
-      InstantiationInfo(const std::string &name_in,
-                        GeneratorCreationFunc* generator_in,
-                        ParamNameGeneratorFunc* name_func_in,
-                        const char* file_in,
-                        int line_in)
-          : name(name_in),
-            generator(generator_in),
-            name_func(name_func_in),
-            file(file_in),
-            line(line_in) {}
-
-      std::string name;
-      GeneratorCreationFunc* generator;
-      ParamNameGeneratorFunc* name_func;
-      const char* file;
-      int line;
-  };
-  typedef ::std::vector<InstantiationInfo> InstantiationContainer;
-
-  static bool IsValidParamName(const std::string& name) {
-    // Check for empty string
-    if (name.empty())
-      return false;
-
-    // Check for invalid characters
-    for (std::string::size_type index = 0; index < name.size(); ++index) {
-      if (!IsAlNum(name[index]) && name[index] != '_')
-        return false;
-    }
-
-    return true;
-  }
-
-  const std::string test_suite_name_;
-  CodeLocation code_location_;
-  TestInfoContainer tests_;
-  InstantiationContainer instantiations_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfo);
-};  // class ParameterizedTestSuiteInfo
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-template <class TestCase>
-using ParameterizedTestCaseInfo = ParameterizedTestSuiteInfo<TestCase>;
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestSuiteRegistry contains a map of
-// ParameterizedTestSuiteInfoBase classes accessed by test suite names. TEST_P
-// and INSTANTIATE_TEST_SUITE_P macros use it to locate their corresponding
-// ParameterizedTestSuiteInfo descriptors.
-class ParameterizedTestSuiteRegistry {
- public:
-  ParameterizedTestSuiteRegistry() {}
-  ~ParameterizedTestSuiteRegistry() {
-    for (auto& test_suite_info : test_suite_infos_) {
-      delete test_suite_info;
-    }
-  }
-
-  // Looks up or creates and returns a structure containing information about
-  // tests and instantiations of a particular test suite.
-  template <class TestSuite>
-  ParameterizedTestSuiteInfo<TestSuite>* GetTestSuitePatternHolder(
-      const char* test_suite_name, CodeLocation code_location) {
-    ParameterizedTestSuiteInfo<TestSuite>* typed_test_info = nullptr;
-    for (auto& test_suite_info : test_suite_infos_) {
-      if (test_suite_info->GetTestSuiteName() == test_suite_name) {
-        if (test_suite_info->GetTestSuiteTypeId() != GetTypeId<TestSuite>()) {
-          // Complain about incorrect usage of Google Test facilities
-          // and terminate the program since we cannot guaranty correct
-          // test suite setup and tear-down in this case.
-          ReportInvalidTestSuiteType(test_suite_name, code_location);
-          posix::Abort();
-        } else {
-          // At this point we are sure that the object we found is of the same
-          // type we are looking for, so we downcast it to that type
-          // without further checks.
-          typed_test_info = CheckedDowncastToActualType<
-              ParameterizedTestSuiteInfo<TestSuite> >(test_suite_info);
-        }
-        break;
-      }
-    }
-    if (typed_test_info == nullptr) {
-      typed_test_info = new ParameterizedTestSuiteInfo<TestSuite>(
-          test_suite_name, code_location);
-      test_suite_infos_.push_back(typed_test_info);
-    }
-    return typed_test_info;
-  }
-  void RegisterTests() {
-    for (auto& test_suite_info : test_suite_infos_) {
-      test_suite_info->RegisterTests();
-    }
-  }
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  template <class TestCase>
-  ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(
-      const char* test_case_name, CodeLocation code_location) {
-    return GetTestSuitePatternHolder<TestCase>(test_case_name, code_location);
-  }
-
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- private:
-  using TestSuiteInfoContainer = ::std::vector<ParameterizedTestSuiteInfoBase*>;
-
-  TestSuiteInfoContainer test_suite_infos_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteRegistry);
-};
-
-// Keep track of what type-parameterized test suite are defined and
-// where as well as which are intatiated. This allows susequently
-// identifying suits that are defined but never used.
-class TypeParameterizedTestSuiteRegistry {
- public:
-  // Add a suite definition
-  void RegisterTestSuite(const char* test_suite_name,
-                         CodeLocation code_location);
-
-  // Add an instantiation of a suit.
-  void RegisterInstantiation(const char* test_suite_name);
-
-  // For each suit repored as defined but not reported as instantiation,
-  // emit a test that reports that fact (configurably, as an error).
-  void CheckForInstantiations();
-
- private:
-  struct TypeParameterizedTestSuiteInfo {
-    explicit TypeParameterizedTestSuiteInfo(CodeLocation c)
-        : code_location(c), instantiated(false) {}
-
-    CodeLocation code_location;
-    bool instantiated;
-  };
-
-  std::map<std::string, TypeParameterizedTestSuiteInfo> suites_;
-};
-
-}  // namespace internal
-
-// Forward declarations of ValuesIn(), which is implemented in
-// include/gtest/gtest-param-test.h.
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
-    const Container& container);
-
-namespace internal {
-// Used in the Values() function to provide polymorphic capabilities.
-
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4100)
-#endif
-
-template <typename... Ts>
-class ValueArray {
- public:
-  explicit ValueArray(Ts... v) : v_(FlatTupleConstructTag{}, std::move(v)...) {}
-
-  template <typename T>
-  operator ParamGenerator<T>() const {  // NOLINT
-    return ValuesIn(MakeVector<T>(MakeIndexSequence<sizeof...(Ts)>()));
-  }
-
- private:
-  template <typename T, size_t... I>
-  std::vector<T> MakeVector(IndexSequence<I...>) const {
-    return std::vector<T>{static_cast<T>(v_.template Get<I>())...};
-  }
-
-  FlatTuple<Ts...> v_;
-};
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-template <typename... T>
-class CartesianProductGenerator
-    : public ParamGeneratorInterface<::std::tuple<T...>> {
- public:
-  typedef ::std::tuple<T...> ParamType;
-
-  CartesianProductGenerator(const std::tuple<ParamGenerator<T>...>& g)
-      : generators_(g) {}
-  ~CartesianProductGenerator() override {}
-
-  ParamIteratorInterface<ParamType>* Begin() const override {
-    return new Iterator(this, generators_, false);
-  }
-  ParamIteratorInterface<ParamType>* End() const override {
-    return new Iterator(this, generators_, true);
-  }
-
- private:
-  template <class I>
-  class IteratorImpl;
-  template <size_t... I>
-  class IteratorImpl<IndexSequence<I...>>
-      : public ParamIteratorInterface<ParamType> {
-   public:
-    IteratorImpl(const ParamGeneratorInterface<ParamType>* base,
-             const std::tuple<ParamGenerator<T>...>& generators, bool is_end)
-        : base_(base),
-          begin_(std::get<I>(generators).begin()...),
-          end_(std::get<I>(generators).end()...),
-          current_(is_end ? end_ : begin_) {
-      ComputeCurrentValue();
-    }
-    ~IteratorImpl() override {}
-
-    const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
-      return base_;
-    }
-    // Advance should not be called on beyond-of-range iterators
-    // so no component iterators must be beyond end of range, either.
-    void Advance() override {
-      assert(!AtEnd());
-      // Advance the last iterator.
-      ++std::get<sizeof...(T) - 1>(current_);
-      // if that reaches end, propagate that up.
-      AdvanceIfEnd<sizeof...(T) - 1>();
-      ComputeCurrentValue();
-    }
-    ParamIteratorInterface<ParamType>* Clone() const override {
-      return new IteratorImpl(*this);
-    }
-
-    const ParamType* Current() const override { return current_value_.get(); }
-
-    bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
-      // Having the same base generator guarantees that the other
-      // iterator is of the same type and we can downcast.
-      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
-          << "The program attempted to compare iterators "
-          << "from different generators." << std::endl;
-      const IteratorImpl* typed_other =
-          CheckedDowncastToActualType<const IteratorImpl>(&other);
-
-      // We must report iterators equal if they both point beyond their
-      // respective ranges. That can happen in a variety of fashions,
-      // so we have to consult AtEnd().
-      if (AtEnd() && typed_other->AtEnd()) return true;
-
-      bool same = true;
-      bool dummy[] = {
-          (same = same && std::get<I>(current_) ==
-                              std::get<I>(typed_other->current_))...};
-      (void)dummy;
-      return same;
-    }
-
-   private:
-    template <size_t ThisI>
-    void AdvanceIfEnd() {
-      if (std::get<ThisI>(current_) != std::get<ThisI>(end_)) return;
-
-      bool last = ThisI == 0;
-      if (last) {
-        // We are done. Nothing else to propagate.
-        return;
-      }
-
-      constexpr size_t NextI = ThisI - (ThisI != 0);
-      std::get<ThisI>(current_) = std::get<ThisI>(begin_);
-      ++std::get<NextI>(current_);
-      AdvanceIfEnd<NextI>();
-    }
-
-    void ComputeCurrentValue() {
-      if (!AtEnd())
-        current_value_ = std::make_shared<ParamType>(*std::get<I>(current_)...);
-    }
-    bool AtEnd() const {
-      bool at_end = false;
-      bool dummy[] = {
-          (at_end = at_end || std::get<I>(current_) == std::get<I>(end_))...};
-      (void)dummy;
-      return at_end;
-    }
-
-    const ParamGeneratorInterface<ParamType>* const base_;
-    std::tuple<typename ParamGenerator<T>::iterator...> begin_;
-    std::tuple<typename ParamGenerator<T>::iterator...> end_;
-    std::tuple<typename ParamGenerator<T>::iterator...> current_;
-    std::shared_ptr<ParamType> current_value_;
-  };
-
-  using Iterator = IteratorImpl<typename MakeIndexSequence<sizeof...(T)>::type>;
-
-  std::tuple<ParamGenerator<T>...> generators_;
-};
-
-template <class... Gen>
-class CartesianProductHolder {
- public:
-  CartesianProductHolder(const Gen&... g) : generators_(g...) {}
-  template <typename... T>
-  operator ParamGenerator<::std::tuple<T...>>() const {
-    return ParamGenerator<::std::tuple<T...>>(
-        new CartesianProductGenerator<T...>(generators_));
-  }
-
- private:
-  std::tuple<Gen...> generators_;
-};
-
-}  // namespace internal
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-
-namespace testing {
-
-// Functions producing parameter generators.
-//
-// Google Test uses these generators to produce parameters for value-
-// parameterized tests. When a parameterized test suite is instantiated
-// with a particular generator, Google Test creates and runs tests
-// for each element in the sequence produced by the generator.
-//
-// In the following sample, tests from test suite FooTest are instantiated
-// each three times with parameter values 3, 5, and 8:
-//
-// class FooTest : public TestWithParam<int> { ... };
-//
-// TEST_P(FooTest, TestThis) {
-// }
-// TEST_P(FooTest, TestThat) {
-// }
-// INSTANTIATE_TEST_SUITE_P(TestSequence, FooTest, Values(3, 5, 8));
-//
-
-// Range() returns generators providing sequences of values in a range.
-//
-// Synopsis:
-// Range(start, end)
-//   - returns a generator producing a sequence of values {start, start+1,
-//     start+2, ..., }.
-// Range(start, end, step)
-//   - returns a generator producing a sequence of values {start, start+step,
-//     start+step+step, ..., }.
-// Notes:
-//   * The generated sequences never include end. For example, Range(1, 5)
-//     returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
-//     returns a generator producing {1, 3, 5, 7}.
-//   * start and end must have the same type. That type may be any integral or
-//     floating-point type or a user defined type satisfying these conditions:
-//     * It must be assignable (have operator=() defined).
-//     * It must have operator+() (operator+(int-compatible type) for
-//       two-operand version).
-//     * It must have operator<() defined.
-//     Elements in the resulting sequences will also have that type.
-//   * Condition start < end must be satisfied in order for resulting sequences
-//     to contain any elements.
-//
-template <typename T, typename IncrementT>
-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
-  return internal::ParamGenerator<T>(
-      new internal::RangeGenerator<T, IncrementT>(start, end, step));
-}
-
-template <typename T>
-internal::ParamGenerator<T> Range(T start, T end) {
-  return Range(start, end, 1);
-}
-
-// ValuesIn() function allows generation of tests with parameters coming from
-// a container.
-//
-// Synopsis:
-// ValuesIn(const T (&array)[N])
-//   - returns a generator producing sequences with elements from
-//     a C-style array.
-// ValuesIn(const Container& container)
-//   - returns a generator producing sequences with elements from
-//     an STL-style container.
-// ValuesIn(Iterator begin, Iterator end)
-//   - returns a generator producing sequences with elements from
-//     a range [begin, end) defined by a pair of STL-style iterators. These
-//     iterators can also be plain C pointers.
-//
-// Please note that ValuesIn copies the values from the containers
-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
-//
-// Examples:
-//
-// This instantiates tests from test suite StringTest
-// each with C-string values of "foo", "bar", and "baz":
-//
-// const char* strings[] = {"foo", "bar", "baz"};
-// INSTANTIATE_TEST_SUITE_P(StringSequence, StringTest, ValuesIn(strings));
-//
-// This instantiates tests from test suite StlStringTest
-// each with STL strings with values "a" and "b":
-//
-// ::std::vector< ::std::string> GetParameterStrings() {
-//   ::std::vector< ::std::string> v;
-//   v.push_back("a");
-//   v.push_back("b");
-//   return v;
-// }
-//
-// INSTANTIATE_TEST_SUITE_P(CharSequence,
-//                          StlStringTest,
-//                          ValuesIn(GetParameterStrings()));
-//
-//
-// This will also instantiate tests from CharTest
-// each with parameter values 'a' and 'b':
-//
-// ::std::list<char> GetParameterChars() {
-//   ::std::list<char> list;
-//   list.push_back('a');
-//   list.push_back('b');
-//   return list;
-// }
-// ::std::list<char> l = GetParameterChars();
-// INSTANTIATE_TEST_SUITE_P(CharSequence2,
-//                          CharTest,
-//                          ValuesIn(l.begin(), l.end()));
-//
-template <typename ForwardIterator>
-internal::ParamGenerator<
-    typename std::iterator_traits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end) {
-  typedef typename std::iterator_traits<ForwardIterator>::value_type ParamType;
-  return internal::ParamGenerator<ParamType>(
-      new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
-}
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
-  return ValuesIn(array, array + N);
-}
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
-    const Container& container) {
-  return ValuesIn(container.begin(), container.end());
-}
-
-// Values() allows generating tests from explicitly specified list of
-// parameters.
-//
-// Synopsis:
-// Values(T v1, T v2, ..., T vN)
-//   - returns a generator producing sequences with elements v1, v2, ..., vN.
-//
-// For example, this instantiates tests from test suite BarTest each
-// with values "one", "two", and "three":
-//
-// INSTANTIATE_TEST_SUITE_P(NumSequence,
-//                          BarTest,
-//                          Values("one", "two", "three"));
-//
-// This instantiates tests from test suite BazTest each with values 1, 2, 3.5.
-// The exact type of values will depend on the type of parameter in BazTest.
-//
-// INSTANTIATE_TEST_SUITE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
-//
-//
-template <typename... T>
-internal::ValueArray<T...> Values(T... v) {
-  return internal::ValueArray<T...>(std::move(v)...);
-}
-
-// Bool() allows generating tests with parameters in a set of (false, true).
-//
-// Synopsis:
-// Bool()
-//   - returns a generator producing sequences with elements {false, true}.
-//
-// It is useful when testing code that depends on Boolean flags. Combinations
-// of multiple flags can be tested when several Bool()'s are combined using
-// Combine() function.
-//
-// In the following example all tests in the test suite FlagDependentTest
-// will be instantiated twice with parameters false and true.
-//
-// class FlagDependentTest : public testing::TestWithParam<bool> {
-//   virtual void SetUp() {
-//     external_flag = GetParam();
-//   }
-// }
-// INSTANTIATE_TEST_SUITE_P(BoolSequence, FlagDependentTest, Bool());
-//
-inline internal::ParamGenerator<bool> Bool() {
-  return Values(false, true);
-}
-
-// Combine() allows the user to combine two or more sequences to produce
-// values of a Cartesian product of those sequences' elements.
-//
-// Synopsis:
-// Combine(gen1, gen2, ..., genN)
-//   - returns a generator producing sequences with elements coming from
-//     the Cartesian product of elements from the sequences generated by
-//     gen1, gen2, ..., genN. The sequence elements will have a type of
-//     std::tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
-//     of elements from sequences produces by gen1, gen2, ..., genN.
-//
-// Example:
-//
-// This will instantiate tests in test suite AnimalTest each one with
-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
-// tuple("dog", BLACK), and tuple("dog", WHITE):
-//
-// enum Color { BLACK, GRAY, WHITE };
-// class AnimalTest
-//     : public testing::TestWithParam<std::tuple<const char*, Color> > {...};
-//
-// TEST_P(AnimalTest, AnimalLooksNice) {...}
-//
-// INSTANTIATE_TEST_SUITE_P(AnimalVariations, AnimalTest,
-//                          Combine(Values("cat", "dog"),
-//                                  Values(BLACK, WHITE)));
-//
-// This will instantiate tests in FlagDependentTest with all variations of two
-// Boolean flags:
-//
-// class FlagDependentTest
-//     : public testing::TestWithParam<std::tuple<bool, bool> > {
-//   virtual void SetUp() {
-//     // Assigns external_flag_1 and external_flag_2 values from the tuple.
-//     std::tie(external_flag_1, external_flag_2) = GetParam();
-//   }
-// };
-//
-// TEST_P(FlagDependentTest, TestFeature1) {
-//   // Test your code using external_flag_1 and external_flag_2 here.
-// }
-// INSTANTIATE_TEST_SUITE_P(TwoBoolSequence, FlagDependentTest,
-//                          Combine(Bool(), Bool()));
-//
-template <typename... Generator>
-internal::CartesianProductHolder<Generator...> Combine(const Generator&... g) {
-  return internal::CartesianProductHolder<Generator...>(g...);
-}
-
-#define TEST_P(test_suite_name, test_name)                                     \
-  class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)                     \
-      : public test_suite_name {                                               \
-   public:                                                                     \
-    GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {}                    \
-    void TestBody() override;                                                  \
-                                                                               \
-   private:                                                                    \
-    static int AddToRegistry() {                                               \
-      ::testing::UnitTest::GetInstance()                                       \
-          ->parameterized_test_registry()                                      \
-          .GetTestSuitePatternHolder<test_suite_name>(                         \
-              GTEST_STRINGIFY_(test_suite_name),                               \
-              ::testing::internal::CodeLocation(__FILE__, __LINE__))           \
-          ->AddTestPattern(                                                    \
-              GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name),  \
-              new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
-                  test_suite_name, test_name)>(),                              \
-              ::testing::internal::CodeLocation(__FILE__, __LINE__));          \
-      return 0;                                                                \
-    }                                                                          \
-    static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_;               \
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name,    \
-                                                           test_name));        \
-  };                                                                           \
-  int GTEST_TEST_CLASS_NAME_(test_suite_name,                                  \
-                             test_name)::gtest_registering_dummy_ =            \
-      GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry();     \
-  void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
-
-// The last argument to INSTANTIATE_TEST_SUITE_P allows the user to specify
-// generator and an optional function or functor that generates custom test name
-// suffixes based on the test parameters. Such a function or functor should
-// accept one argument of type testing::TestParamInfo<class ParamType>, and
-// return std::string.
-//
-// testing::PrintToStringParamName is a builtin test suffix generator that
-// returns the value of testing::PrintToString(GetParam()).
-//
-// Note: test names must be non-empty, unique, and may only contain ASCII
-// alphanumeric characters or underscore. Because PrintToString adds quotes
-// to std::string and C strings, it won't work for these types.
-
-#define GTEST_EXPAND_(arg) arg
-#define GTEST_GET_FIRST_(first, ...) first
-#define GTEST_GET_SECOND_(first, second, ...) second
-
-#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...)                \
-  static ::testing::internal::ParamGenerator<test_suite_name::ParamType>      \
-      gtest_##prefix##test_suite_name##_EvalGenerator_() {                    \
-    return GTEST_EXPAND_(GTEST_GET_FIRST_(__VA_ARGS__, DUMMY_PARAM_));        \
-  }                                                                           \
-  static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_(   \
-      const ::testing::TestParamInfo<test_suite_name::ParamType>& info) {     \
-    if (::testing::internal::AlwaysFalse()) {                                 \
-      ::testing::internal::TestNotEmpty(GTEST_EXPAND_(GTEST_GET_SECOND_(      \
-          __VA_ARGS__,                                                        \
-          ::testing::internal::DefaultParamName<test_suite_name::ParamType>,  \
-          DUMMY_PARAM_)));                                                    \
-      auto t = std::make_tuple(__VA_ARGS__);                                  \
-      static_assert(std::tuple_size<decltype(t)>::value <= 2,                 \
-                    "Too Many Args!");                                        \
-    }                                                                         \
-    return ((GTEST_EXPAND_(GTEST_GET_SECOND_(                                 \
-        __VA_ARGS__,                                                          \
-        ::testing::internal::DefaultParamName<test_suite_name::ParamType>,    \
-        DUMMY_PARAM_))))(info);                                               \
-  }                                                                           \
-  static int gtest_##prefix##test_suite_name##_dummy_                         \
-      GTEST_ATTRIBUTE_UNUSED_ =                                               \
-          ::testing::UnitTest::GetInstance()                                  \
-              ->parameterized_test_registry()                                 \
-              .GetTestSuitePatternHolder<test_suite_name>(                    \
-                  GTEST_STRINGIFY_(test_suite_name),                          \
-                  ::testing::internal::CodeLocation(__FILE__, __LINE__))      \
-              ->AddTestSuiteInstantiation(                                    \
-                  GTEST_STRINGIFY_(prefix),                                   \
-                  &gtest_##prefix##test_suite_name##_EvalGenerator_,          \
-                  &gtest_##prefix##test_suite_name##_EvalGenerateName_,       \
-                  __FILE__, __LINE__)
-
-
-// Allow Marking a Parameterized test class as not needing to be instantiated.
-#define GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(T)                   \
-  namespace gtest_do_not_use_outside_namespace_scope {}                   \
-  static const ::testing::internal::MarkAsIgnored gtest_allow_ignore_##T( \
-      GTEST_STRINGIFY_(T))
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define INSTANTIATE_TEST_CASE_P                                            \
-  static_assert(::testing::internal::InstantiateTestCase_P_IsDeprecated(), \
-                "");                                                       \
-  INSTANTIATE_TEST_SUITE_P
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework definitions useful in production code.
-// GOOGLETEST_CM0003 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
-
-// When you need to test the private or protected members of a class,
-// use the FRIEND_TEST macro to declare your tests as friends of the
-// class.  For example:
-//
-// class MyClass {
-//  private:
-//   void PrivateMethod();
-//   FRIEND_TEST(MyClassTest, PrivateMethodWorks);
-// };
-//
-// class MyClassTest : public testing::Test {
-//   // ...
-// };
-//
-// TEST_F(MyClassTest, PrivateMethodWorks) {
-//   // Can call MyClass::PrivateMethod() here.
-// }
-//
-// Note: The test class must be in the same namespace as the class being tested.
-// For example, putting MyClassTest in an anonymous namespace will not work.
-
-#define FRIEND_TEST(test_case_name, test_name)\
-friend class test_case_name##_##test_name##_Test
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-
-// This header implements typed tests and type-parameterized tests.
-
-// Typed (aka type-driven) tests repeat the same test for types in a
-// list.  You must know which types you want to test with when writing
-// typed tests. Here's how you do it:
-
-#if 0
-
-// First, define a fixture class template.  It should be parameterized
-// by a type.  Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- public:
-  ...
-  typedef std::list<T> List;
-  static T shared_;
-  T value_;
-};
-
-// Next, associate a list of types with the test suite, which will be
-// repeated for each type in the list.  The typedef is necessary for
-// the macro to parse correctly.
-typedef testing::Types<char, int, unsigned int> MyTypes;
-TYPED_TEST_SUITE(FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
-//   TYPED_TEST_SUITE(FooTest, int);
-
-// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
-// tests for this test suite as you want.
-TYPED_TEST(FooTest, DoesBlah) {
-  // Inside a test, refer to the special name TypeParam to get the type
-  // parameter.  Since we are inside a derived class template, C++ requires
-  // us to visit the members of FooTest via 'this'.
-  TypeParam n = this->value_;
-
-  // To visit static members of the fixture, add the TestFixture::
-  // prefix.
-  n += TestFixture::shared_;
-
-  // To refer to typedefs in the fixture, add the "typename
-  // TestFixture::" prefix.
-  typename TestFixture::List values;
-  values.push_back(n);
-  ...
-}
-
-TYPED_TEST(FooTest, HasPropertyA) { ... }
-
-// TYPED_TEST_SUITE takes an optional third argument which allows to specify a
-// class that generates custom test name suffixes based on the type. This should
-// be a class which has a static template function GetName(int index) returning
-// a string for each type. The provided integer index equals the index of the
-// type in the provided type list. In many cases the index can be ignored.
-//
-// For example:
-//   class MyTypeNames {
-//    public:
-//     template <typename T>
-//     static std::string GetName(int) {
-//       if (std::is_same<T, char>()) return "char";
-//       if (std::is_same<T, int>()) return "int";
-//       if (std::is_same<T, unsigned int>()) return "unsignedInt";
-//     }
-//   };
-//   TYPED_TEST_SUITE(FooTest, MyTypes, MyTypeNames);
-
-#endif  // 0
-
-// Type-parameterized tests are abstract test patterns parameterized
-// by a type.  Compared with typed tests, type-parameterized tests
-// allow you to define the test pattern without knowing what the type
-// parameters are.  The defined pattern can be instantiated with
-// different types any number of times, in any number of translation
-// units.
-//
-// If you are designing an interface or concept, you can define a
-// suite of type-parameterized tests to verify properties that any
-// valid implementation of the interface/concept should have.  Then,
-// each implementation can easily instantiate the test suite to verify
-// that it conforms to the requirements, without having to write
-// similar tests repeatedly.  Here's an example:
-
-#if 0
-
-// First, define a fixture class template.  It should be parameterized
-// by a type.  Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
-  ...
-};
-
-// Next, declare that you will define a type-parameterized test suite
-// (the _P suffix is for "parameterized" or "pattern", whichever you
-// prefer):
-TYPED_TEST_SUITE_P(FooTest);
-
-// Then, use TYPED_TEST_P() to define as many type-parameterized tests
-// for this type-parameterized test suite as you want.
-TYPED_TEST_P(FooTest, DoesBlah) {
-  // Inside a test, refer to TypeParam to get the type parameter.
-  TypeParam n = 0;
-  ...
-}
-
-TYPED_TEST_P(FooTest, HasPropertyA) { ... }
-
-// Now the tricky part: you need to register all test patterns before
-// you can instantiate them.  The first argument of the macro is the
-// test suite name; the rest are the names of the tests in this test
-// case.
-REGISTER_TYPED_TEST_SUITE_P(FooTest,
-                            DoesBlah, HasPropertyA);
-
-// Finally, you are free to instantiate the pattern with the types you
-// want.  If you put the above code in a header file, you can #include
-// it in multiple C++ source files and instantiate it multiple times.
-//
-// To distinguish different instances of the pattern, the first
-// argument to the INSTANTIATE_* macro is a prefix that will be added
-// to the actual test suite name.  Remember to pick unique prefixes for
-// different instances.
-typedef testing::Types<char, int, unsigned int> MyTypes;
-INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
-//   INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, int);
-//
-// Similar to the optional argument of TYPED_TEST_SUITE above,
-// INSTANTIATE_TEST_SUITE_P takes an optional fourth argument which allows to
-// generate custom names.
-//   INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes, MyTypeNames);
-
-#endif  // 0
-
-
-// Implements typed tests.
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the typedef for the type parameters of the
-// given test suite.
-#define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_
-
-// Expands to the name of the typedef for the NameGenerator, responsible for
-// creating the suffixes of the name.
-#define GTEST_NAME_GENERATOR_(TestSuiteName) \
-  gtest_type_params_##TestSuiteName##_NameGenerator
-
-#define TYPED_TEST_SUITE(CaseName, Types, ...)                          \
-  typedef ::testing::internal::GenerateTypeList<Types>::type            \
-      GTEST_TYPE_PARAMS_(CaseName);                                     \
-  typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \
-      GTEST_NAME_GENERATOR_(CaseName)
-
-#define TYPED_TEST(CaseName, TestName)                                        \
-  static_assert(sizeof(GTEST_STRINGIFY_(TestName)) > 1,                       \
-                "test-name must not be empty");                               \
-  template <typename gtest_TypeParam_>                                        \
-  class GTEST_TEST_CLASS_NAME_(CaseName, TestName)                            \
-      : public CaseName<gtest_TypeParam_> {                                   \
-   private:                                                                   \
-    typedef CaseName<gtest_TypeParam_> TestFixture;                           \
-    typedef gtest_TypeParam_ TypeParam;                                       \
-    void TestBody() override;                                                 \
-  };                                                                          \
-  static bool gtest_##CaseName##_##TestName##_registered_                     \
-      GTEST_ATTRIBUTE_UNUSED_ = ::testing::internal::TypeParameterizedTest<   \
-          CaseName,                                                           \
-          ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName,   \
-                                                                  TestName)>, \
-          GTEST_TYPE_PARAMS_(                                                 \
-              CaseName)>::Register("",                                        \
-                                   ::testing::internal::CodeLocation(         \
-                                       __FILE__, __LINE__),                   \
-                                   GTEST_STRINGIFY_(CaseName),                \
-                                   GTEST_STRINGIFY_(TestName), 0,             \
-                                   ::testing::internal::GenerateNames<        \
-                                       GTEST_NAME_GENERATOR_(CaseName),       \
-                                       GTEST_TYPE_PARAMS_(CaseName)>());      \
-  template <typename gtest_TypeParam_>                                        \
-  void GTEST_TEST_CLASS_NAME_(CaseName,                                       \
-                              TestName)<gtest_TypeParam_>::TestBody()
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define TYPED_TEST_CASE                                                \
-  static_assert(::testing::internal::TypedTestCaseIsDeprecated(), ""); \
-  TYPED_TEST_SUITE
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Implements type-parameterized tests.
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the namespace name that the type-parameterized tests for
-// the given type-parameterized test suite are defined in.  The exact
-// name of the namespace is subject to change without notice.
-#define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the variable used to remember the names of
-// the defined tests in the given test suite.
-#define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \
-  gtest_typed_test_suite_p_state_##TestSuiteName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
-//
-// Expands to the name of the variable used to remember the names of
-// the registered tests in the given test suite.
-#define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \
-  gtest_registered_test_names_##TestSuiteName##_
-
-// The variables defined in the type-parameterized test macros are
-// static as typically these macros are used in a .h file that can be
-// #included in multiple translation units linked together.
-#define TYPED_TEST_SUITE_P(SuiteName)              \
-  static ::testing::internal::TypedTestSuitePState \
-      GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName)
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define TYPED_TEST_CASE_P                                                 \
-  static_assert(::testing::internal::TypedTestCase_P_IsDeprecated(), ""); \
-  TYPED_TEST_SUITE_P
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#define TYPED_TEST_P(SuiteName, TestName)                             \
-  namespace GTEST_SUITE_NAMESPACE_(SuiteName) {                       \
-    template <typename gtest_TypeParam_>                              \
-    class TestName : public SuiteName<gtest_TypeParam_> {             \
-     private:                                                         \
-      typedef SuiteName<gtest_TypeParam_> TestFixture;                \
-      typedef gtest_TypeParam_ TypeParam;                             \
-      void TestBody() override;                                       \
-    };                                                                \
-    static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
-        GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).AddTestName(       \
-            __FILE__, __LINE__, GTEST_STRINGIFY_(SuiteName),          \
-            GTEST_STRINGIFY_(TestName));                              \
-  }                                                                   \
-  template <typename gtest_TypeParam_>                                \
-  void GTEST_SUITE_NAMESPACE_(                                        \
-      SuiteName)::TestName<gtest_TypeParam_>::TestBody()
-
-// Note: this won't work correctly if the trailing arguments are macros.
-#define REGISTER_TYPED_TEST_SUITE_P(SuiteName, ...)                         \
-  namespace GTEST_SUITE_NAMESPACE_(SuiteName) {                             \
-    typedef ::testing::internal::Templates<__VA_ARGS__> gtest_AllTests_;    \
-  }                                                                         \
-  static const char* const GTEST_REGISTERED_TEST_NAMES_(                    \
-      SuiteName) GTEST_ATTRIBUTE_UNUSED_ =                                  \
-      GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \
-          GTEST_STRINGIFY_(SuiteName), __FILE__, __LINE__, #__VA_ARGS__)
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define REGISTER_TYPED_TEST_CASE_P                                           \
-  static_assert(::testing::internal::RegisterTypedTestCase_P_IsDeprecated(), \
-                "");                                                         \
-  REGISTER_TYPED_TEST_SUITE_P
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...)       \
-  static_assert(sizeof(GTEST_STRINGIFY_(Prefix)) > 1,                       \
-                "test-suit-prefix must not be empty");                      \
-  static bool gtest_##Prefix##_##SuiteName GTEST_ATTRIBUTE_UNUSED_ =        \
-      ::testing::internal::TypeParameterizedTestSuite<                      \
-          SuiteName, GTEST_SUITE_NAMESPACE_(SuiteName)::gtest_AllTests_,    \
-          ::testing::internal::GenerateTypeList<Types>::type>::             \
-          Register(GTEST_STRINGIFY_(Prefix),                                \
-                   ::testing::internal::CodeLocation(__FILE__, __LINE__),   \
-                   &GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName),             \
-                   GTEST_STRINGIFY_(SuiteName),                             \
-                   GTEST_REGISTERED_TEST_NAMES_(SuiteName),                 \
-                   ::testing::internal::GenerateNames<                      \
-                       ::testing::internal::NameGeneratorSelector<          \
-                           __VA_ARGS__>::type,                              \
-                       ::testing::internal::GenerateTypeList<Types>::type>())
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define INSTANTIATE_TYPED_TEST_CASE_P                                      \
-  static_assert(                                                           \
-      ::testing::internal::InstantiateTypedTestCase_P_IsDeprecated(), ""); \
-  INSTANTIATE_TYPED_TEST_SUITE_P
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// Silence C4100 (unreferenced formal parameter) and 4805
-// unsafe mix of type 'const int' and type 'const bool'
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4805)
-# pragma warning(disable:4100)
-#endif
-
-
-// Declares the flags.
-
-// This flag temporary enables the disabled tests.
-GTEST_DECLARE_bool_(also_run_disabled_tests);
-
-// This flag brings the debugger on an assertion failure.
-GTEST_DECLARE_bool_(break_on_failure);
-
-// This flag controls whether Google Test catches all test-thrown exceptions
-// and logs them as failures.
-GTEST_DECLARE_bool_(catch_exceptions);
-
-// This flag enables using colors in terminal output. Available values are
-// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
-// to let Google Test decide.
-GTEST_DECLARE_string_(color);
-
-// This flag controls whether the test runner should continue execution past
-// first failure.
-GTEST_DECLARE_bool_(fail_fast);
-
-// This flag sets up the filter to select by name using a glob pattern
-// the tests to run. If the filter is not given all tests are executed.
-GTEST_DECLARE_string_(filter);
-
-// This flag controls whether Google Test installs a signal handler that dumps
-// debugging information when fatal signals are raised.
-GTEST_DECLARE_bool_(install_failure_signal_handler);
-
-// This flag causes the Google Test to list tests. None of the tests listed
-// are actually run if the flag is provided.
-GTEST_DECLARE_bool_(list_tests);
-
-// This flag controls whether Google Test emits a detailed XML report to a file
-// in addition to its normal textual output.
-GTEST_DECLARE_string_(output);
-
-// This flags control whether Google Test prints only test failures.
-GTEST_DECLARE_bool_(brief);
-
-// This flags control whether Google Test prints the elapsed time for each
-// test.
-GTEST_DECLARE_bool_(print_time);
-
-// This flags control whether Google Test prints UTF8 characters as text.
-GTEST_DECLARE_bool_(print_utf8);
-
-// This flag specifies the random number seed.
-GTEST_DECLARE_int32_(random_seed);
-
-// This flag sets how many times the tests are repeated. The default value
-// is 1. If the value is -1 the tests are repeating forever.
-GTEST_DECLARE_int32_(repeat);
-
-// This flag controls whether Google Test includes Google Test internal
-// stack frames in failure stack traces.
-GTEST_DECLARE_bool_(show_internal_stack_frames);
-
-// When this flag is specified, tests' order is randomized on every iteration.
-GTEST_DECLARE_bool_(shuffle);
-
-// This flag specifies the maximum number of stack frames to be
-// printed in a failure message.
-GTEST_DECLARE_int32_(stack_trace_depth);
-
-// When this flag is specified, a failed assertion will throw an
-// exception if exceptions are enabled, or exit the program with a
-// non-zero code otherwise. For use with an external test framework.
-GTEST_DECLARE_bool_(throw_on_failure);
-
-// When this flag is set with a "host:port" string, on supported
-// platforms test results are streamed to the specified port on
-// the specified host machine.
-GTEST_DECLARE_string_(stream_result_to);
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-GTEST_DECLARE_string_(flagfile);
-#endif  // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-// The upper limit for valid stack trace depths.
-const int kMaxStackTraceDepth = 100;
-
-namespace internal {
-
-class AssertHelper;
-class DefaultGlobalTestPartResultReporter;
-class ExecDeathTest;
-class NoExecDeathTest;
-class FinalSuccessChecker;
-class GTestFlagSaver;
-class StreamingListenerTest;
-class TestResultAccessor;
-class TestEventListenersAccessor;
-class TestEventRepeater;
-class UnitTestRecordPropertyTestHelper;
-class WindowsDeathTest;
-class FuchsiaDeathTest;
-class UnitTestImpl* GetUnitTestImpl();
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
-                                    const std::string& message);
-std::set<std::string>* GetIgnoredParameterizedTestSuites();
-
-}  // namespace internal
-
-// The friend relationship of some of these classes is cyclic.
-// If we don't forward declare them the compiler might confuse the classes
-// in friendship clauses with same named classes on the scope.
-class Test;
-class TestSuite;
-
-// Old API is still available but deprecated
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-using TestCase = TestSuite;
-#endif
-class TestInfo;
-class UnitTest;
-
-// A class for indicating whether an assertion was successful.  When
-// the assertion wasn't successful, the AssertionResult object
-// remembers a non-empty message that describes how it failed.
-//
-// To create an instance of this class, use one of the factory functions
-// (AssertionSuccess() and AssertionFailure()).
-//
-// This class is useful for two purposes:
-//   1. Defining predicate functions to be used with Boolean test assertions
-//      EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
-//   2. Defining predicate-format functions to be
-//      used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
-//
-// For example, if you define IsEven predicate:
-//
-//   testing::AssertionResult IsEven(int n) {
-//     if ((n % 2) == 0)
-//       return testing::AssertionSuccess();
-//     else
-//       return testing::AssertionFailure() << n << " is odd";
-//   }
-//
-// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
-// will print the message
-//
-//   Value of: IsEven(Fib(5))
-//     Actual: false (5 is odd)
-//   Expected: true
-//
-// instead of a more opaque
-//
-//   Value of: IsEven(Fib(5))
-//     Actual: false
-//   Expected: true
-//
-// in case IsEven is a simple Boolean predicate.
-//
-// If you expect your predicate to be reused and want to support informative
-// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
-// about half as often as positive ones in our tests), supply messages for
-// both success and failure cases:
-//
-//   testing::AssertionResult IsEven(int n) {
-//     if ((n % 2) == 0)
-//       return testing::AssertionSuccess() << n << " is even";
-//     else
-//       return testing::AssertionFailure() << n << " is odd";
-//   }
-//
-// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
-//
-//   Value of: IsEven(Fib(6))
-//     Actual: true (8 is even)
-//   Expected: false
-//
-// NB: Predicates that support negative Boolean assertions have reduced
-// performance in positive ones so be careful not to use them in tests
-// that have lots (tens of thousands) of positive Boolean assertions.
-//
-// To use this class with EXPECT_PRED_FORMAT assertions such as:
-//
-//   // Verifies that Foo() returns an even number.
-//   EXPECT_PRED_FORMAT1(IsEven, Foo());
-//
-// you need to define:
-//
-//   testing::AssertionResult IsEven(const char* expr, int n) {
-//     if ((n % 2) == 0)
-//       return testing::AssertionSuccess();
-//     else
-//       return testing::AssertionFailure()
-//         << "Expected: " << expr << " is even\n  Actual: it's " << n;
-//   }
-//
-// If Foo() returns 5, you will see the following message:
-//
-//   Expected: Foo() is even
-//     Actual: it's 5
-//
-class GTEST_API_ AssertionResult {
- public:
-  // Copy constructor.
-  // Used in EXPECT_TRUE/FALSE(assertion_result).
-  AssertionResult(const AssertionResult& other);
-
-// C4800 is a level 3 warning in Visual Studio 2015 and earlier.
-// This warning is not emitted in Visual Studio 2017.
-// This warning is off by default starting in Visual Studio 2019 but can be
-// enabled with command-line options.
-#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
-  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
-#endif
-
-  // Used in the EXPECT_TRUE/FALSE(bool_expression).
-  //
-  // T must be contextually convertible to bool.
-  //
-  // The second parameter prevents this overload from being considered if
-  // the argument is implicitly convertible to AssertionResult. In that case
-  // we want AssertionResult's copy constructor to be used.
-  template <typename T>
-  explicit AssertionResult(
-      const T& success,
-      typename std::enable_if<
-          !std::is_convertible<T, AssertionResult>::value>::type*
-      /*enabler*/
-      = nullptr)
-      : success_(success) {}
-
-#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
-  GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-  // Assignment operator.
-  AssertionResult& operator=(AssertionResult other) {
-    swap(other);
-    return *this;
-  }
-
-  // Returns true if and only if the assertion succeeded.
-  operator bool() const { return success_; }  // NOLINT
-
-  // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
-  AssertionResult operator!() const;
-
-  // Returns the text streamed into this AssertionResult. Test assertions
-  // use it when they fail (i.e., the predicate's outcome doesn't match the
-  // assertion's expectation). When nothing has been streamed into the
-  // object, returns an empty string.
-  const char* message() const {
-    return message_.get() != nullptr ? message_->c_str() : "";
-  }
-  // Deprecated; please use message() instead.
-  const char* failure_message() const { return message(); }
-
-  // Streams a custom failure message into this object.
-  template <typename T> AssertionResult& operator<<(const T& value) {
-    AppendMessage(Message() << value);
-    return *this;
-  }
-
-  // Allows streaming basic output manipulators such as endl or flush into
-  // this object.
-  AssertionResult& operator<<(
-      ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
-    AppendMessage(Message() << basic_manipulator);
-    return *this;
-  }
-
- private:
-  // Appends the contents of message to message_.
-  void AppendMessage(const Message& a_message) {
-    if (message_.get() == nullptr) message_.reset(new ::std::string);
-    message_->append(a_message.GetString().c_str());
-  }
-
-  // Swap the contents of this AssertionResult with other.
-  void swap(AssertionResult& other);
-
-  // Stores result of the assertion predicate.
-  bool success_;
-  // Stores the message describing the condition in case the expectation
-  // construct is not satisfied with the predicate's outcome.
-  // Referenced via a pointer to avoid taking too much stack frame space
-  // with test assertions.
-  std::unique_ptr< ::std::string> message_;
-};
-
-// Makes a successful assertion result.
-GTEST_API_ AssertionResult AssertionSuccess();
-
-// Makes a failed assertion result.
-GTEST_API_ AssertionResult AssertionFailure();
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << msg.
-GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
-
-}  // namespace testing
-
-// Includes the auto-generated header that implements a family of generic
-// predicate assertion macros. This include comes late because it relies on
-// APIs declared above.
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file is AUTOMATICALLY GENERATED on 01/02/2019 by command
-// 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!
-//
-// Implements a family of generic predicate assertion macros.
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-
-
-namespace testing {
-
-// This header implements a family of generic predicate assertion
-// macros:
-//
-//   ASSERT_PRED_FORMAT1(pred_format, v1)
-//   ASSERT_PRED_FORMAT2(pred_format, v1, v2)
-//   ...
-//
-// where pred_format is a function or functor that takes n (in the
-// case of ASSERT_PRED_FORMATn) values and their source expression
-// text, and returns a testing::AssertionResult.  See the definition
-// of ASSERT_EQ in gtest.h for an example.
-//
-// If you don't care about formatting, you can use the more
-// restrictive version:
-//
-//   ASSERT_PRED1(pred, v1)
-//   ASSERT_PRED2(pred, v1, v2)
-//   ...
-//
-// where pred is an n-ary function or functor that returns bool,
-// and the values v1, v2, ..., must support the << operator for
-// streaming to std::ostream.
-//
-// We also define the EXPECT_* variations.
-//
-// For now we only support predicates whose arity is at most 5.
-// Please email googletestframework@googlegroups.com if you need
-// support for higher arities.
-
-// GTEST_ASSERT_ is the basic statement to which all of the assertions
-// in this file reduce.  Don't use this in your code.
-
-#define GTEST_ASSERT_(expression, on_failure) \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-  if (const ::testing::AssertionResult gtest_ar = (expression)) \
-    ; \
-  else \
-    on_failure(gtest_ar.failure_message())
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED1.  Don't use
-// this in your code.
-template <typename Pred,
-          typename T1>
-AssertionResult AssertPred1Helper(const char* pred_text,
-                                  const char* e1,
-                                  Pred pred,
-                                  const T1& v1) {
-  if (pred(v1)) return AssertionSuccess();
-
-  return AssertionFailure()
-         << pred_text << "(" << e1 << ") evaluates to false, where"
-         << "\n"
-         << e1 << " evaluates to " << ::testing::PrintToString(v1);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
-  GTEST_ASSERT_(pred_format(#v1, v1), \
-                on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED1.  Don't use
-// this in your code.
-#define GTEST_PRED1_(pred, v1, on_failure)\
-  GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
-                                             #v1, \
-                                             pred, \
-                                             v1), on_failure)
-
-// Unary predicate assertion macros.
-#define EXPECT_PRED_FORMAT1(pred_format, v1) \
-  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED1(pred, v1) \
-  GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT1(pred_format, v1) \
-  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED1(pred, v1) \
-  GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED2.  Don't use
-// this in your code.
-template <typename Pred,
-          typename T1,
-          typename T2>
-AssertionResult AssertPred2Helper(const char* pred_text,
-                                  const char* e1,
-                                  const char* e2,
-                                  Pred pred,
-                                  const T1& v1,
-                                  const T2& v2) {
-  if (pred(v1, v2)) return AssertionSuccess();
-
-  return AssertionFailure()
-         << pred_text << "(" << e1 << ", " << e2
-         << ") evaluates to false, where"
-         << "\n"
-         << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
-         << e2 << " evaluates to " << ::testing::PrintToString(v2);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
-  GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
-                on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED2.  Don't use
-// this in your code.
-#define GTEST_PRED2_(pred, v1, v2, on_failure)\
-  GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
-                                             #v1, \
-                                             #v2, \
-                                             pred, \
-                                             v1, \
-                                             v2), on_failure)
-
-// Binary predicate assertion macros.
-#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
-  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED2(pred, v1, v2) \
-  GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
-  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED2(pred, v1, v2) \
-  GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED3.  Don't use
-// this in your code.
-template <typename Pred,
-          typename T1,
-          typename T2,
-          typename T3>
-AssertionResult AssertPred3Helper(const char* pred_text,
-                                  const char* e1,
-                                  const char* e2,
-                                  const char* e3,
-                                  Pred pred,
-                                  const T1& v1,
-                                  const T2& v2,
-                                  const T3& v3) {
-  if (pred(v1, v2, v3)) return AssertionSuccess();
-
-  return AssertionFailure()
-         << pred_text << "(" << e1 << ", " << e2 << ", " << e3
-         << ") evaluates to false, where"
-         << "\n"
-         << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
-         << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
-         << e3 << " evaluates to " << ::testing::PrintToString(v3);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
-  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
-                on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED3.  Don't use
-// this in your code.
-#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
-  GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
-                                             #v1, \
-                                             #v2, \
-                                             #v3, \
-                                             pred, \
-                                             v1, \
-                                             v2, \
-                                             v3), on_failure)
-
-// Ternary predicate assertion macros.
-#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
-  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED3(pred, v1, v2, v3) \
-  GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
-  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED3(pred, v1, v2, v3) \
-  GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED4.  Don't use
-// this in your code.
-template <typename Pred,
-          typename T1,
-          typename T2,
-          typename T3,
-          typename T4>
-AssertionResult AssertPred4Helper(const char* pred_text,
-                                  const char* e1,
-                                  const char* e2,
-                                  const char* e3,
-                                  const char* e4,
-                                  Pred pred,
-                                  const T1& v1,
-                                  const T2& v2,
-                                  const T3& v3,
-                                  const T4& v4) {
-  if (pred(v1, v2, v3, v4)) return AssertionSuccess();
-
-  return AssertionFailure()
-         << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
-         << ") evaluates to false, where"
-         << "\n"
-         << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
-         << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
-         << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
-         << e4 << " evaluates to " << ::testing::PrintToString(v4);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
-  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
-                on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED4.  Don't use
-// this in your code.
-#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
-  GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
-                                             #v1, \
-                                             #v2, \
-                                             #v3, \
-                                             #v4, \
-                                             pred, \
-                                             v1, \
-                                             v2, \
-                                             v3, \
-                                             v4), on_failure)
-
-// 4-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
-  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
-  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
-  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
-  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED5.  Don't use
-// this in your code.
-template <typename Pred,
-          typename T1,
-          typename T2,
-          typename T3,
-          typename T4,
-          typename T5>
-AssertionResult AssertPred5Helper(const char* pred_text,
-                                  const char* e1,
-                                  const char* e2,
-                                  const char* e3,
-                                  const char* e4,
-                                  const char* e5,
-                                  Pred pred,
-                                  const T1& v1,
-                                  const T2& v2,
-                                  const T3& v3,
-                                  const T4& v4,
-                                  const T5& v5) {
-  if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
-
-  return AssertionFailure()
-         << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
-         << ", " << e5 << ") evaluates to false, where"
-         << "\n"
-         << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
-         << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
-         << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
-         << e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n"
-         << e5 << " evaluates to " << ::testing::PrintToString(v5);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
-  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
-                on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED5.  Don't use
-// this in your code.
-#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
-  GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
-                                             #v1, \
-                                             #v2, \
-                                             #v3, \
-                                             #v4, \
-                                             #v5, \
-                                             pred, \
-                                             v1, \
-                                             v2, \
-                                             v3, \
-                                             v4, \
-                                             v5), on_failure)
-
-// 5-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
-  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
-  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
-  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
-  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-
-
-
-}  // namespace testing
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-
-namespace testing {
-
-// The abstract class that all tests inherit from.
-//
-// In Google Test, a unit test program contains one or many TestSuites, and
-// each TestSuite contains one or many Tests.
-//
-// When you define a test using the TEST macro, you don't need to
-// explicitly derive from Test - the TEST macro automatically does
-// this for you.
-//
-// The only time you derive from Test is when defining a test fixture
-// to be used in a TEST_F.  For example:
-//
-//   class FooTest : public testing::Test {
-//    protected:
-//     void SetUp() override { ... }
-//     void TearDown() override { ... }
-//     ...
-//   };
-//
-//   TEST_F(FooTest, Bar) { ... }
-//   TEST_F(FooTest, Baz) { ... }
-//
-// Test is not copyable.
-class GTEST_API_ Test {
- public:
-  friend class TestInfo;
-
-  // The d'tor is virtual as we intend to inherit from Test.
-  virtual ~Test();
-
-  // Sets up the stuff shared by all tests in this test suite.
-  //
-  // Google Test will call Foo::SetUpTestSuite() before running the first
-  // test in test suite Foo.  Hence a sub-class can define its own
-  // SetUpTestSuite() method to shadow the one defined in the super
-  // class.
-  static void SetUpTestSuite() {}
-
-  // Tears down the stuff shared by all tests in this test suite.
-  //
-  // Google Test will call Foo::TearDownTestSuite() after running the last
-  // test in test suite Foo.  Hence a sub-class can define its own
-  // TearDownTestSuite() method to shadow the one defined in the super
-  // class.
-  static void TearDownTestSuite() {}
-
-  // Legacy API is deprecated but still available. Use SetUpTestSuite and
-  // TearDownTestSuite instead.
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  static void TearDownTestCase() {}
-  static void SetUpTestCase() {}
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Returns true if and only if the current test has a fatal failure.
-  static bool HasFatalFailure();
-
-  // Returns true if and only if the current test has a non-fatal failure.
-  static bool HasNonfatalFailure();
-
-  // Returns true if and only if the current test was skipped.
-  static bool IsSkipped();
-
-  // Returns true if and only if the current test has a (either fatal or
-  // non-fatal) failure.
-  static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
-
-  // Logs a property for the current test, test suite, or for the entire
-  // invocation of the test program when used outside of the context of a
-  // test suite.  Only the last value for a given key is remembered.  These
-  // are public static so they can be called from utility functions that are
-  // not members of the test fixture.  Calls to RecordProperty made during
-  // lifespan of the test (from the moment its constructor starts to the
-  // moment its destructor finishes) will be output in XML as attributes of
-  // the <testcase> element.  Properties recorded from fixture's
-  // SetUpTestSuite or TearDownTestSuite are logged as attributes of the
-  // corresponding <testsuite> element.  Calls to RecordProperty made in the
-  // global context (before or after invocation of RUN_ALL_TESTS and from
-  // SetUp/TearDown method of Environment objects registered with Google
-  // Test) will be output as attributes of the <testsuites> element.
-  static void RecordProperty(const std::string& key, const std::string& value);
-  static void RecordProperty(const std::string& key, int value);
-
- protected:
-  // Creates a Test object.
-  Test();
-
-  // Sets up the test fixture.
-  virtual void SetUp();
-
-  // Tears down the test fixture.
-  virtual void TearDown();
-
- private:
-  // Returns true if and only if the current test has the same fixture class
-  // as the first test in the current test suite.
-  static bool HasSameFixtureClass();
-
-  // Runs the test after the test fixture has been set up.
-  //
-  // A sub-class must implement this to define the test logic.
-  //
-  // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
-  // Instead, use the TEST or TEST_F macro.
-  virtual void TestBody() = 0;
-
-  // Sets up, executes, and tears down the test.
-  void Run();
-
-  // Deletes self.  We deliberately pick an unusual name for this
-  // internal method to avoid clashing with names used in user TESTs.
-  void DeleteSelf_() { delete this; }
-
-  const std::unique_ptr<GTEST_FLAG_SAVER_> gtest_flag_saver_;
-
-  // Often a user misspells SetUp() as Setup() and spends a long time
-  // wondering why it is never called by Google Test.  The declaration of
-  // the following method is solely for catching such an error at
-  // compile time:
-  //
-  //   - The return type is deliberately chosen to be not void, so it
-  //   will be a conflict if void Setup() is declared in the user's
-  //   test fixture.
-  //
-  //   - This method is private, so it will be another compiler error
-  //   if the method is called from the user's test fixture.
-  //
-  // DO NOT OVERRIDE THIS FUNCTION.
-  //
-  // If you see an error about overriding the following function or
-  // about it being private, you have mis-spelled SetUp() as Setup().
-  struct Setup_should_be_spelled_SetUp {};
-  virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
-
-  // We disallow copying Tests.
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
-};
-
-typedef internal::TimeInMillis TimeInMillis;
-
-// A copyable object representing a user specified test property which can be
-// output as a key/value string pair.
-//
-// Don't inherit from TestProperty as its destructor is not virtual.
-class TestProperty {
- public:
-  // C'tor.  TestProperty does NOT have a default constructor.
-  // Always use this constructor (with parameters) to create a
-  // TestProperty object.
-  TestProperty(const std::string& a_key, const std::string& a_value) :
-    key_(a_key), value_(a_value) {
-  }
-
-  // Gets the user supplied key.
-  const char* key() const {
-    return key_.c_str();
-  }
-
-  // Gets the user supplied value.
-  const char* value() const {
-    return value_.c_str();
-  }
-
-  // Sets a new value, overriding the one supplied in the constructor.
-  void SetValue(const std::string& new_value) {
-    value_ = new_value;
-  }
-
- private:
-  // The key supplied by the user.
-  std::string key_;
-  // The value supplied by the user.
-  std::string value_;
-};
-
-// The result of a single Test.  This includes a list of
-// TestPartResults, a list of TestProperties, a count of how many
-// death tests there are in the Test, and how much time it took to run
-// the Test.
-//
-// TestResult is not copyable.
-class GTEST_API_ TestResult {
- public:
-  // Creates an empty TestResult.
-  TestResult();
-
-  // D'tor.  Do not inherit from TestResult.
-  ~TestResult();
-
-  // Gets the number of all test parts.  This is the sum of the number
-  // of successful test parts and the number of failed test parts.
-  int total_part_count() const;
-
-  // Returns the number of the test properties.
-  int test_property_count() const;
-
-  // Returns true if and only if the test passed (i.e. no test part failed).
-  bool Passed() const { return !Skipped() && !Failed(); }
-
-  // Returns true if and only if the test was skipped.
-  bool Skipped() const;
-
-  // Returns true if and only if the test failed.
-  bool Failed() const;
-
-  // Returns true if and only if the test fatally failed.
-  bool HasFatalFailure() const;
-
-  // Returns true if and only if the test has a non-fatal failure.
-  bool HasNonfatalFailure() const;
-
-  // Returns the elapsed time, in milliseconds.
-  TimeInMillis elapsed_time() const { return elapsed_time_; }
-
-  // Gets the time of the test case start, in ms from the start of the
-  // UNIX epoch.
-  TimeInMillis start_timestamp() const { return start_timestamp_; }
-
-  // Returns the i-th test part result among all the results. i can range from 0
-  // to total_part_count() - 1. If i is not in that range, aborts the program.
-  const TestPartResult& GetTestPartResult(int i) const;
-
-  // Returns the i-th test property. i can range from 0 to
-  // test_property_count() - 1. If i is not in that range, aborts the
-  // program.
-  const TestProperty& GetTestProperty(int i) const;
-
- private:
-  friend class TestInfo;
-  friend class TestSuite;
-  friend class UnitTest;
-  friend class internal::DefaultGlobalTestPartResultReporter;
-  friend class internal::ExecDeathTest;
-  friend class internal::TestResultAccessor;
-  friend class internal::UnitTestImpl;
-  friend class internal::WindowsDeathTest;
-  friend class internal::FuchsiaDeathTest;
-
-  // Gets the vector of TestPartResults.
-  const std::vector<TestPartResult>& test_part_results() const {
-    return test_part_results_;
-  }
-
-  // Gets the vector of TestProperties.
-  const std::vector<TestProperty>& test_properties() const {
-    return test_properties_;
-  }
-
-  // Sets the start time.
-  void set_start_timestamp(TimeInMillis start) { start_timestamp_ = start; }
-
-  // Sets the elapsed time.
-  void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
-
-  // Adds a test property to the list. The property is validated and may add
-  // a non-fatal failure if invalid (e.g., if it conflicts with reserved
-  // key names). If a property is already recorded for the same key, the
-  // value will be updated, rather than storing multiple values for the same
-  // key.  xml_element specifies the element for which the property is being
-  // recorded and is used for validation.
-  void RecordProperty(const std::string& xml_element,
-                      const TestProperty& test_property);
-
-  // Adds a failure if the key is a reserved attribute of Google Test
-  // testsuite tags.  Returns true if the property is valid.
-  // FIXME: Validate attribute names are legal and human readable.
-  static bool ValidateTestProperty(const std::string& xml_element,
-                                   const TestProperty& test_property);
-
-  // Adds a test part result to the list.
-  void AddTestPartResult(const TestPartResult& test_part_result);
-
-  // Returns the death test count.
-  int death_test_count() const { return death_test_count_; }
-
-  // Increments the death test count, returning the new count.
-  int increment_death_test_count() { return ++death_test_count_; }
-
-  // Clears the test part results.
-  void ClearTestPartResults();
-
-  // Clears the object.
-  void Clear();
-
-  // Protects mutable state of the property vector and of owned
-  // properties, whose values may be updated.
-  internal::Mutex test_properties_mutex_;
-
-  // The vector of TestPartResults
-  std::vector<TestPartResult> test_part_results_;
-  // The vector of TestProperties
-  std::vector<TestProperty> test_properties_;
-  // Running count of death tests.
-  int death_test_count_;
-  // The start time, in milliseconds since UNIX Epoch.
-  TimeInMillis start_timestamp_;
-  // The elapsed time, in milliseconds.
-  TimeInMillis elapsed_time_;
-
-  // We disallow copying TestResult.
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
-};  // class TestResult
-
-// A TestInfo object stores the following information about a test:
-//
-//   Test suite name
-//   Test name
-//   Whether the test should be run
-//   A function pointer that creates the test object when invoked
-//   Test result
-//
-// The constructor of TestInfo registers itself with the UnitTest
-// singleton such that the RUN_ALL_TESTS() macro knows which tests to
-// run.
-class GTEST_API_ TestInfo {
- public:
-  // Destructs a TestInfo object.  This function is not virtual, so
-  // don't inherit from TestInfo.
-  ~TestInfo();
-
-  // Returns the test suite name.
-  const char* test_suite_name() const { return test_suite_name_.c_str(); }
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  const char* test_case_name() const { return test_suite_name(); }
-#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Returns the test name.
-  const char* name() const { return name_.c_str(); }
-
-  // Returns the name of the parameter type, or NULL if this is not a typed
-  // or a type-parameterized test.
-  const char* type_param() const {
-    if (type_param_.get() != nullptr) return type_param_->c_str();
-    return nullptr;
-  }
-
-  // Returns the text representation of the value parameter, or NULL if this
-  // is not a value-parameterized test.
-  const char* value_param() const {
-    if (value_param_.get() != nullptr) return value_param_->c_str();
-    return nullptr;
-  }
-
-  // Returns the file name where this test is defined.
-  const char* file() const { return location_.file.c_str(); }
-
-  // Returns the line where this test is defined.
-  int line() const { return location_.line; }
-
-  // Return true if this test should not be run because it's in another shard.
-  bool is_in_another_shard() const { return is_in_another_shard_; }
-
-  // Returns true if this test should run, that is if the test is not
-  // disabled (or it is disabled but the also_run_disabled_tests flag has
-  // been specified) and its full name matches the user-specified filter.
-  //
-  // Google Test allows the user to filter the tests by their full names.
-  // The full name of a test Bar in test suite Foo is defined as
-  // "Foo.Bar".  Only the tests that match the filter will run.
-  //
-  // A filter is a colon-separated list of glob (not regex) patterns,
-  // optionally followed by a '-' and a colon-separated list of
-  // negative patterns (tests to exclude).  A test is run if it
-  // matches one of the positive patterns and does not match any of
-  // the negative patterns.
-  //
-  // For example, *A*:Foo.* is a filter that matches any string that
-  // contains the character 'A' or starts with "Foo.".
-  bool should_run() const { return should_run_; }
-
-  // Returns true if and only if this test will appear in the XML report.
-  bool is_reportable() const {
-    // The XML report includes tests matching the filter, excluding those
-    // run in other shards.
-    return matches_filter_ && !is_in_another_shard_;
-  }
-
-  // Returns the result of the test.
-  const TestResult* result() const { return &result_; }
-
- private:
-#if GTEST_HAS_DEATH_TEST
-  friend class internal::DefaultDeathTestFactory;
-#endif  // GTEST_HAS_DEATH_TEST
-  friend class Test;
-  friend class TestSuite;
-  friend class internal::UnitTestImpl;
-  friend class internal::StreamingListenerTest;
-  friend TestInfo* internal::MakeAndRegisterTestInfo(
-      const char* test_suite_name, const char* name, const char* type_param,
-      const char* value_param, internal::CodeLocation code_location,
-      internal::TypeId fixture_class_id, internal::SetUpTestSuiteFunc set_up_tc,
-      internal::TearDownTestSuiteFunc tear_down_tc,
-      internal::TestFactoryBase* factory);
-
-  // Constructs a TestInfo object. The newly constructed instance assumes
-  // ownership of the factory object.
-  TestInfo(const std::string& test_suite_name, const std::string& name,
-           const char* a_type_param,   // NULL if not a type-parameterized test
-           const char* a_value_param,  // NULL if not a value-parameterized test
-           internal::CodeLocation a_code_location,
-           internal::TypeId fixture_class_id,
-           internal::TestFactoryBase* factory);
-
-  // Increments the number of death tests encountered in this test so
-  // far.
-  int increment_death_test_count() {
-    return result_.increment_death_test_count();
-  }
-
-  // Creates the test object, runs it, records its result, and then
-  // deletes it.
-  void Run();
-
-  // Skip and records the test result for this object.
-  void Skip();
-
-  static void ClearTestResult(TestInfo* test_info) {
-    test_info->result_.Clear();
-  }
-
-  // These fields are immutable properties of the test.
-  const std::string test_suite_name_;    // test suite name
-  const std::string name_;               // Test name
-  // Name of the parameter type, or NULL if this is not a typed or a
-  // type-parameterized test.
-  const std::unique_ptr<const ::std::string> type_param_;
-  // Text representation of the value parameter, or NULL if this is not a
-  // value-parameterized test.
-  const std::unique_ptr<const ::std::string> value_param_;
-  internal::CodeLocation location_;
-  const internal::TypeId fixture_class_id_;  // ID of the test fixture class
-  bool should_run_;           // True if and only if this test should run
-  bool is_disabled_;          // True if and only if this test is disabled
-  bool matches_filter_;       // True if this test matches the
-                              // user-specified filter.
-  bool is_in_another_shard_;  // Will be run in another shard.
-  internal::TestFactoryBase* const factory_;  // The factory that creates
-                                              // the test object
-
-  // This field is mutable and needs to be reset before running the
-  // test for the second time.
-  TestResult result_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
-};
-
-// A test suite, which consists of a vector of TestInfos.
-//
-// TestSuite is not copyable.
-class GTEST_API_ TestSuite {
- public:
-  // Creates a TestSuite with the given name.
-  //
-  // TestSuite does NOT have a default constructor.  Always use this
-  // constructor to create a TestSuite object.
-  //
-  // Arguments:
-  //
-  //   name:         name of the test suite
-  //   a_type_param: the name of the test's type parameter, or NULL if
-  //                 this is not a type-parameterized test.
-  //   set_up_tc:    pointer to the function that sets up the test suite
-  //   tear_down_tc: pointer to the function that tears down the test suite
-  TestSuite(const char* name, const char* a_type_param,
-            internal::SetUpTestSuiteFunc set_up_tc,
-            internal::TearDownTestSuiteFunc tear_down_tc);
-
-  // Destructor of TestSuite.
-  virtual ~TestSuite();
-
-  // Gets the name of the TestSuite.
-  const char* name() const { return name_.c_str(); }
-
-  // Returns the name of the parameter type, or NULL if this is not a
-  // type-parameterized test suite.
-  const char* type_param() const {
-    if (type_param_.get() != nullptr) return type_param_->c_str();
-    return nullptr;
-  }
-
-  // Returns true if any test in this test suite should run.
-  bool should_run() const { return should_run_; }
-
-  // Gets the number of successful tests in this test suite.
-  int successful_test_count() const;
-
-  // Gets the number of skipped tests in this test suite.
-  int skipped_test_count() const;
-
-  // Gets the number of failed tests in this test suite.
-  int failed_test_count() const;
-
-  // Gets the number of disabled tests that will be reported in the XML report.
-  int reportable_disabled_test_count() const;
-
-  // Gets the number of disabled tests in this test suite.
-  int disabled_test_count() const;
-
-  // Gets the number of tests to be printed in the XML report.
-  int reportable_test_count() const;
-
-  // Get the number of tests in this test suite that should run.
-  int test_to_run_count() const;
-
-  // Gets the number of all tests in this test suite.
-  int total_test_count() const;
-
-  // Returns true if and only if the test suite passed.
-  bool Passed() const { return !Failed(); }
-
-  // Returns true if and only if the test suite failed.
-  bool Failed() const {
-    return failed_test_count() > 0 || ad_hoc_test_result().Failed();
-  }
-
-  // Returns the elapsed time, in milliseconds.
-  TimeInMillis elapsed_time() const { return elapsed_time_; }
-
-  // Gets the time of the test suite start, in ms from the start of the
-  // UNIX epoch.
-  TimeInMillis start_timestamp() const { return start_timestamp_; }
-
-  // Returns the i-th test among all the tests. i can range from 0 to
-  // total_test_count() - 1. If i is not in that range, returns NULL.
-  const TestInfo* GetTestInfo(int i) const;
-
-  // Returns the TestResult that holds test properties recorded during
-  // execution of SetUpTestSuite and TearDownTestSuite.
-  const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
-
- private:
-  friend class Test;
-  friend class internal::UnitTestImpl;
-
-  // Gets the (mutable) vector of TestInfos in this TestSuite.
-  std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
-
-  // Gets the (immutable) vector of TestInfos in this TestSuite.
-  const std::vector<TestInfo*>& test_info_list() const {
-    return test_info_list_;
-  }
-
-  // Returns the i-th test among all the tests. i can range from 0 to
-  // total_test_count() - 1. If i is not in that range, returns NULL.
-  TestInfo* GetMutableTestInfo(int i);
-
-  // Sets the should_run member.
-  void set_should_run(bool should) { should_run_ = should; }
-
-  // Adds a TestInfo to this test suite.  Will delete the TestInfo upon
-  // destruction of the TestSuite object.
-  void AddTestInfo(TestInfo * test_info);
-
-  // Clears the results of all tests in this test suite.
-  void ClearResult();
-
-  // Clears the results of all tests in the given test suite.
-  static void ClearTestSuiteResult(TestSuite* test_suite) {
-    test_suite->ClearResult();
-  }
-
-  // Runs every test in this TestSuite.
-  void Run();
-
-  // Skips the execution of tests under this TestSuite
-  void Skip();
-
-  // Runs SetUpTestSuite() for this TestSuite.  This wrapper is needed
-  // for catching exceptions thrown from SetUpTestSuite().
-  void RunSetUpTestSuite() {
-    if (set_up_tc_ != nullptr) {
-      (*set_up_tc_)();
-    }
-  }
-
-  // Runs TearDownTestSuite() for this TestSuite.  This wrapper is
-  // needed for catching exceptions thrown from TearDownTestSuite().
-  void RunTearDownTestSuite() {
-    if (tear_down_tc_ != nullptr) {
-      (*tear_down_tc_)();
-    }
-  }
-
-  // Returns true if and only if test passed.
-  static bool TestPassed(const TestInfo* test_info) {
-    return test_info->should_run() && test_info->result()->Passed();
-  }
-
-  // Returns true if and only if test skipped.
-  static bool TestSkipped(const TestInfo* test_info) {
-    return test_info->should_run() && test_info->result()->Skipped();
-  }
-
-  // Returns true if and only if test failed.
-  static bool TestFailed(const TestInfo* test_info) {
-    return test_info->should_run() && test_info->result()->Failed();
-  }
-
-  // Returns true if and only if the test is disabled and will be reported in
-  // the XML report.
-  static bool TestReportableDisabled(const TestInfo* test_info) {
-    return test_info->is_reportable() && test_info->is_disabled_;
-  }
-
-  // Returns true if and only if test is disabled.
-  static bool TestDisabled(const TestInfo* test_info) {
-    return test_info->is_disabled_;
-  }
-
-  // Returns true if and only if this test will appear in the XML report.
-  static bool TestReportable(const TestInfo* test_info) {
-    return test_info->is_reportable();
-  }
-
-  // Returns true if the given test should run.
-  static bool ShouldRunTest(const TestInfo* test_info) {
-    return test_info->should_run();
-  }
-
-  // Shuffles the tests in this test suite.
-  void ShuffleTests(internal::Random* random);
-
-  // Restores the test order to before the first shuffle.
-  void UnshuffleTests();
-
-  // Name of the test suite.
-  std::string name_;
-  // Name of the parameter type, or NULL if this is not a typed or a
-  // type-parameterized test.
-  const std::unique_ptr<const ::std::string> type_param_;
-  // The vector of TestInfos in their original order.  It owns the
-  // elements in the vector.
-  std::vector<TestInfo*> test_info_list_;
-  // Provides a level of indirection for the test list to allow easy
-  // shuffling and restoring the test order.  The i-th element in this
-  // vector is the index of the i-th test in the shuffled test list.
-  std::vector<int> test_indices_;
-  // Pointer to the function that sets up the test suite.
-  internal::SetUpTestSuiteFunc set_up_tc_;
-  // Pointer to the function that tears down the test suite.
-  internal::TearDownTestSuiteFunc tear_down_tc_;
-  // True if and only if any test in this test suite should run.
-  bool should_run_;
-  // The start time, in milliseconds since UNIX Epoch.
-  TimeInMillis start_timestamp_;
-  // Elapsed time, in milliseconds.
-  TimeInMillis elapsed_time_;
-  // Holds test properties recorded during execution of SetUpTestSuite and
-  // TearDownTestSuite.
-  TestResult ad_hoc_test_result_;
-
-  // We disallow copying TestSuites.
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestSuite);
-};
-
-// An Environment object is capable of setting up and tearing down an
-// environment.  You should subclass this to define your own
-// environment(s).
-//
-// An Environment object does the set-up and tear-down in virtual
-// methods SetUp() and TearDown() instead of the constructor and the
-// destructor, as:
-//
-//   1. You cannot safely throw from a destructor.  This is a problem
-//      as in some cases Google Test is used where exceptions are enabled, and
-//      we may want to implement ASSERT_* using exceptions where they are
-//      available.
-//   2. You cannot use ASSERT_* directly in a constructor or
-//      destructor.
-class Environment {
- public:
-  // The d'tor is virtual as we need to subclass Environment.
-  virtual ~Environment() {}
-
-  // Override this to define how to set up the environment.
-  virtual void SetUp() {}
-
-  // Override this to define how to tear down the environment.
-  virtual void TearDown() {}
- private:
-  // If you see an error about overriding the following function or
-  // about it being private, you have mis-spelled SetUp() as Setup().
-  struct Setup_should_be_spelled_SetUp {};
-  virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
-};
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Exception which can be thrown from TestEventListener::OnTestPartResult.
-class GTEST_API_ AssertionException
-    : public internal::GoogleTestFailureException {
- public:
-  explicit AssertionException(const TestPartResult& result)
-      : GoogleTestFailureException(result) {}
-};
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-// The interface for tracing execution of tests. The methods are organized in
-// the order the corresponding events are fired.
-class TestEventListener {
- public:
-  virtual ~TestEventListener() {}
-
-  // Fired before any test activity starts.
-  virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
-
-  // Fired before each iteration of tests starts.  There may be more than
-  // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
-  // index, starting from 0.
-  virtual void OnTestIterationStart(const UnitTest& unit_test,
-                                    int iteration) = 0;
-
-  // Fired before environment set-up for each iteration of tests starts.
-  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
-
-  // Fired after environment set-up for each iteration of tests ends.
-  virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
-
-  // Fired before the test suite starts.
-  virtual void OnTestSuiteStart(const TestSuite& /*test_suite*/) {}
-
-  //  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Fired before the test starts.
-  virtual void OnTestStart(const TestInfo& test_info) = 0;
-
-  // Fired after a failed assertion or a SUCCEED() invocation.
-  // If you want to throw an exception from this function to skip to the next
-  // TEST, it must be AssertionException defined above, or inherited from it.
-  virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
-
-  // Fired after the test ends.
-  virtual void OnTestEnd(const TestInfo& test_info) = 0;
-
-  // Fired after the test suite ends.
-  virtual void OnTestSuiteEnd(const TestSuite& /*test_suite*/) {}
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Fired before environment tear-down for each iteration of tests starts.
-  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
-
-  // Fired after environment tear-down for each iteration of tests ends.
-  virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
-
-  // Fired after each iteration of tests finishes.
-  virtual void OnTestIterationEnd(const UnitTest& unit_test,
-                                  int iteration) = 0;
-
-  // Fired after all test activities have ended.
-  virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
-};
-
-// The convenience class for users who need to override just one or two
-// methods and are not concerned that a possible change to a signature of
-// the methods they override will not be caught during the build.  For
-// comments about each method please see the definition of TestEventListener
-// above.
-class EmptyTestEventListener : public TestEventListener {
- public:
-  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
-  void OnTestIterationStart(const UnitTest& /*unit_test*/,
-                            int /*iteration*/) override {}
-  void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {}
-  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
-  void OnTestSuiteStart(const TestSuite& /*test_suite*/) override {}
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseStart(const TestCase& /*test_case*/) override {}
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  void OnTestStart(const TestInfo& /*test_info*/) override {}
-  void OnTestPartResult(const TestPartResult& /*test_part_result*/) override {}
-  void OnTestEnd(const TestInfo& /*test_info*/) override {}
-  void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override {}
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  void OnTestCaseEnd(const TestCase& /*test_case*/) override {}
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {}
-  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
-  void OnTestIterationEnd(const UnitTest& /*unit_test*/,
-                          int /*iteration*/) override {}
-  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
-};
-
-// TestEventListeners lets users add listeners to track events in Google Test.
-class GTEST_API_ TestEventListeners {
- public:
-  TestEventListeners();
-  ~TestEventListeners();
-
-  // Appends an event listener to the end of the list. Google Test assumes
-  // the ownership of the listener (i.e. it will delete the listener when
-  // the test program finishes).
-  void Append(TestEventListener* listener);
-
-  // Removes the given event listener from the list and returns it.  It then
-  // becomes the caller's responsibility to delete the listener. Returns
-  // NULL if the listener is not found in the list.
-  TestEventListener* Release(TestEventListener* listener);
-
-  // Returns the standard listener responsible for the default console
-  // output.  Can be removed from the listeners list to shut down default
-  // console output.  Note that removing this object from the listener list
-  // with Release transfers its ownership to the caller and makes this
-  // function return NULL the next time.
-  TestEventListener* default_result_printer() const {
-    return default_result_printer_;
-  }
-
-  // Returns the standard listener responsible for the default XML output
-  // controlled by the --gtest_output=xml flag.  Can be removed from the
-  // listeners list by users who want to shut down the default XML output
-  // controlled by this flag and substitute it with custom one.  Note that
-  // removing this object from the listener list with Release transfers its
-  // ownership to the caller and makes this function return NULL the next
-  // time.
-  TestEventListener* default_xml_generator() const {
-    return default_xml_generator_;
-  }
-
- private:
-  friend class TestSuite;
-  friend class TestInfo;
-  friend class internal::DefaultGlobalTestPartResultReporter;
-  friend class internal::NoExecDeathTest;
-  friend class internal::TestEventListenersAccessor;
-  friend class internal::UnitTestImpl;
-
-  // Returns repeater that broadcasts the TestEventListener events to all
-  // subscribers.
-  TestEventListener* repeater();
-
-  // Sets the default_result_printer attribute to the provided listener.
-  // The listener is also added to the listener list and previous
-  // default_result_printer is removed from it and deleted. The listener can
-  // also be NULL in which case it will not be added to the list. Does
-  // nothing if the previous and the current listener objects are the same.
-  void SetDefaultResultPrinter(TestEventListener* listener);
-
-  // Sets the default_xml_generator attribute to the provided listener.  The
-  // listener is also added to the listener list and previous
-  // default_xml_generator is removed from it and deleted. The listener can
-  // also be NULL in which case it will not be added to the list. Does
-  // nothing if the previous and the current listener objects are the same.
-  void SetDefaultXmlGenerator(TestEventListener* listener);
-
-  // Controls whether events will be forwarded by the repeater to the
-  // listeners in the list.
-  bool EventForwardingEnabled() const;
-  void SuppressEventForwarding();
-
-  // The actual list of listeners.
-  internal::TestEventRepeater* repeater_;
-  // Listener responsible for the standard result output.
-  TestEventListener* default_result_printer_;
-  // Listener responsible for the creation of the XML output file.
-  TestEventListener* default_xml_generator_;
-
-  // We disallow copying TestEventListeners.
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
-};
-
-// A UnitTest consists of a vector of TestSuites.
-//
-// This is a singleton class.  The only instance of UnitTest is
-// created when UnitTest::GetInstance() is first called.  This
-// instance is never deleted.
-//
-// UnitTest is not copyable.
-//
-// This class is thread-safe as long as the methods are called
-// according to their specification.
-class GTEST_API_ UnitTest {
- public:
-  // Gets the singleton UnitTest object.  The first time this method
-  // is called, a UnitTest object is constructed and returned.
-  // Consecutive calls will return the same object.
-  static UnitTest* GetInstance();
-
-  // Runs all tests in this UnitTest object and prints the result.
-  // Returns 0 if successful, or 1 otherwise.
-  //
-  // This method can only be called from the main thread.
-  //
-  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-  int Run() GTEST_MUST_USE_RESULT_;
-
-  // Returns the working directory when the first TEST() or TEST_F()
-  // was executed.  The UnitTest object owns the string.
-  const char* original_working_dir() const;
-
-  // Returns the TestSuite object for the test that's currently running,
-  // or NULL if no test is running.
-  const TestSuite* current_test_suite() const GTEST_LOCK_EXCLUDED_(mutex_);
-
-// Legacy API is still available but deprecated
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  const TestCase* current_test_case() const GTEST_LOCK_EXCLUDED_(mutex_);
-#endif
-
-  // Returns the TestInfo object for the test that's currently running,
-  // or NULL if no test is running.
-  const TestInfo* current_test_info() const
-      GTEST_LOCK_EXCLUDED_(mutex_);
-
-  // Returns the random seed used at the start of the current test run.
-  int random_seed() const;
-
-  // Returns the ParameterizedTestSuiteRegistry object used to keep track of
-  // value-parameterized tests and instantiate and register them.
-  //
-  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-  internal::ParameterizedTestSuiteRegistry& parameterized_test_registry()
-      GTEST_LOCK_EXCLUDED_(mutex_);
-
-  // Gets the number of successful test suites.
-  int successful_test_suite_count() const;
-
-  // Gets the number of failed test suites.
-  int failed_test_suite_count() const;
-
-  // Gets the number of all test suites.
-  int total_test_suite_count() const;
-
-  // Gets the number of all test suites that contain at least one test
-  // that should run.
-  int test_suite_to_run_count() const;
-
-  //  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  int successful_test_case_count() const;
-  int failed_test_case_count() const;
-  int total_test_case_count() const;
-  int test_case_to_run_count() const;
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Gets the number of successful tests.
-  int successful_test_count() const;
-
-  // Gets the number of skipped tests.
-  int skipped_test_count() const;
-
-  // Gets the number of failed tests.
-  int failed_test_count() const;
-
-  // Gets the number of disabled tests that will be reported in the XML report.
-  int reportable_disabled_test_count() const;
-
-  // Gets the number of disabled tests.
-  int disabled_test_count() const;
-
-  // Gets the number of tests to be printed in the XML report.
-  int reportable_test_count() const;
-
-  // Gets the number of all tests.
-  int total_test_count() const;
-
-  // Gets the number of tests that should run.
-  int test_to_run_count() const;
-
-  // Gets the time of the test program start, in ms from the start of the
-  // UNIX epoch.
-  TimeInMillis start_timestamp() const;
-
-  // Gets the elapsed time, in milliseconds.
-  TimeInMillis elapsed_time() const;
-
-  // Returns true if and only if the unit test passed (i.e. all test suites
-  // passed).
-  bool Passed() const;
-
-  // Returns true if and only if the unit test failed (i.e. some test suite
-  // failed or something outside of all tests failed).
-  bool Failed() const;
-
-  // Gets the i-th test suite among all the test suites. i can range from 0 to
-  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
-  const TestSuite* GetTestSuite(int i) const;
-
-//  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-  const TestCase* GetTestCase(int i) const;
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-  // Returns the TestResult containing information on test failures and
-  // properties logged outside of individual test suites.
-  const TestResult& ad_hoc_test_result() const;
-
-  // Returns the list of event listeners that can be used to track events
-  // inside Google Test.
-  TestEventListeners& listeners();
-
- private:
-  // Registers and returns a global test environment.  When a test
-  // program is run, all global test environments will be set-up in
-  // the order they were registered.  After all tests in the program
-  // have finished, all global test environments will be torn-down in
-  // the *reverse* order they were registered.
-  //
-  // The UnitTest object takes ownership of the given environment.
-  //
-  // This method can only be called from the main thread.
-  Environment* AddEnvironment(Environment* env);
-
-  // Adds a TestPartResult to the current TestResult object.  All
-  // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
-  // eventually call this to report their results.  The user code
-  // should use the assertion macros instead of calling this directly.
-  void AddTestPartResult(TestPartResult::Type result_type,
-                         const char* file_name,
-                         int line_number,
-                         const std::string& message,
-                         const std::string& os_stack_trace)
-      GTEST_LOCK_EXCLUDED_(mutex_);
-
-  // Adds a TestProperty to the current TestResult object when invoked from
-  // inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
-  // from SetUpTestSuite or TearDownTestSuite, or to the global property set
-  // when invoked elsewhere.  If the result already contains a property with
-  // the same key, the value will be updated.
-  void RecordProperty(const std::string& key, const std::string& value);
-
-  // Gets the i-th test suite among all the test suites. i can range from 0 to
-  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
-  TestSuite* GetMutableTestSuite(int i);
-
-  // Accessors for the implementation object.
-  internal::UnitTestImpl* impl() { return impl_; }
-  const internal::UnitTestImpl* impl() const { return impl_; }
-
-  // These classes and functions are friends as they need to access private
-  // members of UnitTest.
-  friend class ScopedTrace;
-  friend class Test;
-  friend class internal::AssertHelper;
-  friend class internal::StreamingListenerTest;
-  friend class internal::UnitTestRecordPropertyTestHelper;
-  friend Environment* AddGlobalTestEnvironment(Environment* env);
-  friend std::set<std::string>* internal::GetIgnoredParameterizedTestSuites();
-  friend internal::UnitTestImpl* internal::GetUnitTestImpl();
-  friend void internal::ReportFailureInUnknownLocation(
-      TestPartResult::Type result_type,
-      const std::string& message);
-
-  // Creates an empty UnitTest.
-  UnitTest();
-
-  // D'tor
-  virtual ~UnitTest();
-
-  // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
-  // Google Test trace stack.
-  void PushGTestTrace(const internal::TraceInfo& trace)
-      GTEST_LOCK_EXCLUDED_(mutex_);
-
-  // Pops a trace from the per-thread Google Test trace stack.
-  void PopGTestTrace()
-      GTEST_LOCK_EXCLUDED_(mutex_);
-
-  // Protects mutable state in *impl_.  This is mutable as some const
-  // methods need to lock it too.
-  mutable internal::Mutex mutex_;
-
-  // Opaque implementation object.  This field is never changed once
-  // the object is constructed.  We don't mark it as const here, as
-  // doing so will cause a warning in the constructor of UnitTest.
-  // Mutable state in *impl_ is protected by mutex_.
-  internal::UnitTestImpl* impl_;
-
-  // We disallow copying UnitTest.
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
-};
-
-// A convenient wrapper for adding an environment for the test
-// program.
-//
-// You should call this before RUN_ALL_TESTS() is called, probably in
-// main().  If you use gtest_main, you need to call this before main()
-// starts for it to take effect.  For example, you can define a global
-// variable like this:
-//
-//   testing::Environment* const foo_env =
-//       testing::AddGlobalTestEnvironment(new FooEnvironment);
-//
-// However, we strongly recommend you to write your own main() and
-// call AddGlobalTestEnvironment() there, as relying on initialization
-// of global variables makes the code harder to read and may cause
-// problems when you register multiple environments from different
-// translation units and the environments have dependencies among them
-// (remember that the compiler doesn't guarantee the order in which
-// global variables from different translation units are initialized).
-inline Environment* AddGlobalTestEnvironment(Environment* env) {
-  return UnitTest::GetInstance()->AddEnvironment(env);
-}
-
-// Initializes Google Test.  This must be called before calling
-// RUN_ALL_TESTS().  In particular, it parses a command line for the
-// flags that Google Test recognizes.  Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned.  Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-GTEST_API_ void InitGoogleTest(int* argc, char** argv);
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
-
-// This overloaded version can be used on Arduino/embedded platforms where
-// there is no argc/argv.
-GTEST_API_ void InitGoogleTest();
-
-namespace internal {
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_* in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQFailure(const char* lhs_expression,
-                                   const char* rhs_expression,
-                                   const T1& lhs, const T2& rhs) {
-  return EqFailure(lhs_expression,
-                   rhs_expression,
-                   FormatForComparisonFailureMessage(lhs, rhs),
-                   FormatForComparisonFailureMessage(rhs, lhs),
-                   false);
-}
-
-// This block of code defines operator==/!=
-// to block lexical scope lookup.
-// It prevents using invalid operator==/!= defined at namespace scope.
-struct faketype {};
-inline bool operator==(faketype, faketype) { return true; }
-inline bool operator!=(faketype, faketype) { return false; }
-
-// The helper function for {ASSERT|EXPECT}_EQ.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQ(const char* lhs_expression,
-                            const char* rhs_expression,
-                            const T1& lhs,
-                            const T2& rhs) {
-  if (lhs == rhs) {
-    return AssertionSuccess();
-  }
-
-  return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
-}
-
-class EqHelper {
- public:
-  // This templatized version is for the general case.
-  template <
-      typename T1, typename T2,
-      // Disable this overload for cases where one argument is a pointer
-      // and the other is the null pointer constant.
-      typename std::enable_if<!std::is_integral<T1>::value ||
-                              !std::is_pointer<T2>::value>::type* = nullptr>
-  static AssertionResult Compare(const char* lhs_expression,
-                                 const char* rhs_expression, const T1& lhs,
-                                 const T2& rhs) {
-    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
-  }
-
-  // With this overloaded version, we allow anonymous enums to be used
-  // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
-  // enums can be implicitly cast to BiggestInt.
-  //
-  // Even though its body looks the same as the above version, we
-  // cannot merge the two, as it will make anonymous enums unhappy.
-  static AssertionResult Compare(const char* lhs_expression,
-                                 const char* rhs_expression,
-                                 BiggestInt lhs,
-                                 BiggestInt rhs) {
-    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
-  }
-
-  template <typename T>
-  static AssertionResult Compare(
-      const char* lhs_expression, const char* rhs_expression,
-      // Handle cases where '0' is used as a null pointer literal.
-      std::nullptr_t /* lhs */, T* rhs) {
-    // We already know that 'lhs' is a null pointer.
-    return CmpHelperEQ(lhs_expression, rhs_expression, static_cast<T*>(nullptr),
-                       rhs);
-  }
-};
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperOP. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_OP in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
-                                   const T1& val1, const T2& val2,
-                                   const char* op) {
-  return AssertionFailure()
-         << "Expected: (" << expr1 << ") " << op << " (" << expr2
-         << "), actual: " << FormatForComparisonFailureMessage(val1, val2)
-         << " vs " << FormatForComparisonFailureMessage(val2, val1);
-}
-
-// A macro for implementing the helper functions needed to implement
-// ASSERT_?? and EXPECT_??.  It is here just to avoid copy-and-paste
-// of similar code.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
-template <typename T1, typename T2>\
-AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
-                                   const T1& val1, const T2& val2) {\
-  if (val1 op val2) {\
-    return AssertionSuccess();\
-  } else {\
-    return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
-  }\
-}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// Implements the helper function for {ASSERT|EXPECT}_NE
-GTEST_IMPL_CMP_HELPER_(NE, !=)
-// Implements the helper function for {ASSERT|EXPECT}_LE
-GTEST_IMPL_CMP_HELPER_(LE, <=)
-// Implements the helper function for {ASSERT|EXPECT}_LT
-GTEST_IMPL_CMP_HELPER_(LT, <)
-// Implements the helper function for {ASSERT|EXPECT}_GE
-GTEST_IMPL_CMP_HELPER_(GE, >=)
-// Implements the helper function for {ASSERT|EXPECT}_GT
-GTEST_IMPL_CMP_HELPER_(GT, >)
-
-#undef GTEST_IMPL_CMP_HELPER_
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
-                                          const char* s2_expression,
-                                          const char* s1,
-                                          const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
-                                              const char* s2_expression,
-                                              const char* s1,
-                                              const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
-                                          const char* s2_expression,
-                                          const char* s1,
-                                          const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
-                                              const char* s2_expression,
-                                              const char* s1,
-                                              const char* s2);
-
-
-// Helper function for *_STREQ on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
-                                          const char* s2_expression,
-                                          const wchar_t* s1,
-                                          const wchar_t* s2);
-
-// Helper function for *_STRNE on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
-                                          const char* s2_expression,
-                                          const wchar_t* s1,
-                                          const wchar_t* s2);
-
-}  // namespace internal
-
-// IsSubstring() and IsNotSubstring() are intended to be used as the
-// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
-// themselves.  They check whether needle is a substring of haystack
-// (NULL is considered a substring of itself only), and return an
-// appropriate error message when they fail.
-//
-// The {needle,haystack}_expr arguments are the stringified
-// expressions that generated the two real arguments.
-GTEST_API_ AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::string& needle, const ::std::string& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::string& needle, const ::std::string& haystack);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ AssertionResult IsSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::wstring& needle, const ::std::wstring& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
-    const char* needle_expr, const char* haystack_expr,
-    const ::std::wstring& needle, const ::std::wstring& haystack);
-#endif  // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-// Helper template function for comparing floating-points.
-//
-// Template parameter:
-//
-//   RawType: the raw floating-point type (either float or double)
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename RawType>
-AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
-                                         const char* rhs_expression,
-                                         RawType lhs_value,
-                                         RawType rhs_value) {
-  const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
-
-  if (lhs.AlmostEquals(rhs)) {
-    return AssertionSuccess();
-  }
-
-  ::std::stringstream lhs_ss;
-  lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
-         << lhs_value;
-
-  ::std::stringstream rhs_ss;
-  rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
-         << rhs_value;
-
-  return EqFailure(lhs_expression,
-                   rhs_expression,
-                   StringStreamToString(&lhs_ss),
-                   StringStreamToString(&rhs_ss),
-                   false);
-}
-
-// Helper function for implementing ASSERT_NEAR.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
-                                                const char* expr2,
-                                                const char* abs_error_expr,
-                                                double val1,
-                                                double val2,
-                                                double abs_error);
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-// A class that enables one to stream messages to assertion macros
-class GTEST_API_ AssertHelper {
- public:
-  // Constructor.
-  AssertHelper(TestPartResult::Type type,
-               const char* file,
-               int line,
-               const char* message);
-  ~AssertHelper();
-
-  // Message assignment is a semantic trick to enable assertion
-  // streaming; see the GTEST_MESSAGE_ macro below.
-  void operator=(const Message& message) const;
-
- private:
-  // We put our data in a struct so that the size of the AssertHelper class can
-  // be as small as possible.  This is important because gcc is incapable of
-  // re-using stack space even for temporary variables, so every EXPECT_EQ
-  // reserves stack space for another AssertHelper.
-  struct AssertHelperData {
-    AssertHelperData(TestPartResult::Type t,
-                     const char* srcfile,
-                     int line_num,
-                     const char* msg)
-        : type(t), file(srcfile), line(line_num), message(msg) { }
-
-    TestPartResult::Type const type;
-    const char* const file;
-    int const line;
-    std::string const message;
-
-   private:
-    GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
-  };
-
-  AssertHelperData* const data_;
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
-};
-
-}  // namespace internal
-
-// The pure interface class that all value-parameterized tests inherit from.
-// A value-parameterized class must inherit from both ::testing::Test and
-// ::testing::WithParamInterface. In most cases that just means inheriting
-// from ::testing::TestWithParam, but more complicated test hierarchies
-// may need to inherit from Test and WithParamInterface at different levels.
-//
-// This interface has support for accessing the test parameter value via
-// the GetParam() method.
-//
-// Use it with one of the parameter generator defining functions, like Range(),
-// Values(), ValuesIn(), Bool(), and Combine().
-//
-// class FooTest : public ::testing::TestWithParam<int> {
-//  protected:
-//   FooTest() {
-//     // Can use GetParam() here.
-//   }
-//   ~FooTest() override {
-//     // Can use GetParam() here.
-//   }
-//   void SetUp() override {
-//     // Can use GetParam() here.
-//   }
-//   void TearDown override {
-//     // Can use GetParam() here.
-//   }
-// };
-// TEST_P(FooTest, DoesBar) {
-//   // Can use GetParam() method here.
-//   Foo foo;
-//   ASSERT_TRUE(foo.DoesBar(GetParam()));
-// }
-// INSTANTIATE_TEST_SUITE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
-
-template <typename T>
-class WithParamInterface {
- public:
-  typedef T ParamType;
-  virtual ~WithParamInterface() {}
-
-  // The current parameter value. Is also available in the test fixture's
-  // constructor.
-  static const ParamType& GetParam() {
-    GTEST_CHECK_(parameter_ != nullptr)
-        << "GetParam() can only be called inside a value-parameterized test "
-        << "-- did you intend to write TEST_P instead of TEST_F?";
-    return *parameter_;
-  }
-
- private:
-  // Sets parameter value. The caller is responsible for making sure the value
-  // remains alive and unchanged throughout the current test.
-  static void SetParam(const ParamType* parameter) {
-    parameter_ = parameter;
-  }
-
-  // Static value used for accessing parameter during a test lifetime.
-  static const ParamType* parameter_;
-
-  // TestClass must be a subclass of WithParamInterface<T> and Test.
-  template <class TestClass> friend class internal::ParameterizedTestFactory;
-};
-
-template <typename T>
-const T* WithParamInterface<T>::parameter_ = nullptr;
-
-// Most value-parameterized classes can ignore the existence of
-// WithParamInterface, and can just inherit from ::testing::TestWithParam.
-
-template <typename T>
-class TestWithParam : public Test, public WithParamInterface<T> {
-};
-
-// Macros for indicating success/failure in test code.
-
-// Skips test in runtime.
-// Skipping test aborts current function.
-// Skipped tests are neither successful nor failed.
-#define GTEST_SKIP() GTEST_SKIP_("")
-
-// ADD_FAILURE unconditionally adds a failure to the current test.
-// SUCCEED generates a success - it doesn't automatically make the
-// current test successful, as a test is only successful when it has
-// no failure.
-//
-// EXPECT_* verifies that a certain condition is satisfied.  If not,
-// it behaves like ADD_FAILURE.  In particular:
-//
-//   EXPECT_TRUE  verifies that a Boolean condition is true.
-//   EXPECT_FALSE verifies that a Boolean condition is false.
-//
-// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
-// that they will also abort the current function on failure.  People
-// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
-// writing data-driven tests often find themselves using ADD_FAILURE
-// and EXPECT_* more.
-
-// Generates a nonfatal failure with a generic message.
-#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
-
-// Generates a nonfatal failure at the given source file location with
-// a generic message.
-#define ADD_FAILURE_AT(file, line) \
-  GTEST_MESSAGE_AT_(file, line, "Failed", \
-                    ::testing::TestPartResult::kNonFatalFailure)
-
-// Generates a fatal failure with a generic message.
-#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
-
-// Like GTEST_FAIL(), but at the given source file location.
-#define GTEST_FAIL_AT(file, line)         \
-  GTEST_MESSAGE_AT_(file, line, "Failed", \
-                    ::testing::TestPartResult::kFatalFailure)
-
-// Define this macro to 1 to omit the definition of FAIL(), which is a
-// generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_FAIL
-# define FAIL() GTEST_FAIL()
-#endif
-
-// Generates a success with a generic message.
-#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
-
-// Define this macro to 1 to omit the definition of SUCCEED(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_SUCCEED
-# define SUCCEED() GTEST_SUCCEED()
-#endif
-
-// Macros for testing exceptions.
-//
-//    * {ASSERT|EXPECT}_THROW(statement, expected_exception):
-//         Tests that the statement throws the expected exception.
-//    * {ASSERT|EXPECT}_NO_THROW(statement):
-//         Tests that the statement doesn't throw any exception.
-//    * {ASSERT|EXPECT}_ANY_THROW(statement):
-//         Tests that the statement throws an exception.
-
-#define EXPECT_THROW(statement, expected_exception) \
-  GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_NO_THROW(statement) \
-  GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_ANY_THROW(statement) \
-  GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_THROW(statement, expected_exception) \
-  GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
-#define ASSERT_NO_THROW(statement) \
-  GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
-#define ASSERT_ANY_THROW(statement) \
-  GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
-
-// Boolean assertions. Condition can be either a Boolean expression or an
-// AssertionResult. For more information on how to use AssertionResult with
-// these macros see comments on that class.
-#define GTEST_EXPECT_TRUE(condition) \
-  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
-                      GTEST_NONFATAL_FAILURE_)
-#define GTEST_EXPECT_FALSE(condition) \
-  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
-                      GTEST_NONFATAL_FAILURE_)
-#define GTEST_ASSERT_TRUE(condition) \
-  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
-                      GTEST_FATAL_FAILURE_)
-#define GTEST_ASSERT_FALSE(condition) \
-  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
-                      GTEST_FATAL_FAILURE_)
-
-// Define these macros to 1 to omit the definition of the corresponding
-// EXPECT or ASSERT, which clashes with some users' own code.
-
-#if !GTEST_DONT_DEFINE_EXPECT_TRUE
-#define EXPECT_TRUE(condition) GTEST_EXPECT_TRUE(condition)
-#endif
-
-#if !GTEST_DONT_DEFINE_EXPECT_FALSE
-#define EXPECT_FALSE(condition) GTEST_EXPECT_FALSE(condition)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_TRUE
-#define ASSERT_TRUE(condition) GTEST_ASSERT_TRUE(condition)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_FALSE
-#define ASSERT_FALSE(condition) GTEST_ASSERT_FALSE(condition)
-#endif
-
-// Macros for testing equalities and inequalities.
-//
-//    * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
-//    * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
-//    * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
-//    * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
-//    * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
-//    * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
-//
-// When they are not, Google Test prints both the tested expressions and
-// their actual values.  The values must be compatible built-in types,
-// or you will get a compiler error.  By "compatible" we mean that the
-// values can be compared by the respective operator.
-//
-// Note:
-//
-//   1. It is possible to make a user-defined type work with
-//   {ASSERT|EXPECT}_??(), but that requires overloading the
-//   comparison operators and is thus discouraged by the Google C++
-//   Usage Guide.  Therefore, you are advised to use the
-//   {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
-//   equal.
-//
-//   2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
-//   pointers (in particular, C strings).  Therefore, if you use it
-//   with two C strings, you are testing how their locations in memory
-//   are related, not how their content is related.  To compare two C
-//   strings by content, use {ASSERT|EXPECT}_STR*().
-//
-//   3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
-//   {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
-//   what the actual value is when it fails, and similarly for the
-//   other comparisons.
-//
-//   4. Do not depend on the order in which {ASSERT|EXPECT}_??()
-//   evaluate their arguments, which is undefined.
-//
-//   5. These macros evaluate their arguments exactly once.
-//
-// Examples:
-//
-//   EXPECT_NE(Foo(), 5);
-//   EXPECT_EQ(a_pointer, NULL);
-//   ASSERT_LT(i, array_size);
-//   ASSERT_GT(records.size(), 0) << "There is no record left.";
-
-#define EXPECT_EQ(val1, val2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
-#define EXPECT_NE(val1, val2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define EXPECT_LE(val1, val2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define EXPECT_LT(val1, val2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define EXPECT_GE(val1, val2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define EXPECT_GT(val1, val2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-#define GTEST_ASSERT_EQ(val1, val2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
-#define GTEST_ASSERT_NE(val1, val2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define GTEST_ASSERT_LE(val1, val2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define GTEST_ASSERT_LT(val1, val2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define GTEST_ASSERT_GE(val1, val2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define GTEST_ASSERT_GT(val1, val2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
-// ASSERT_XY(), which clashes with some users' own code.
-
-#if !GTEST_DONT_DEFINE_ASSERT_EQ
-# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_NE
-# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LE
-# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LT
-# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GE
-# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GT
-# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
-#endif
-
-// C-string Comparisons.  All tests treat NULL and any non-NULL string
-// as different.  Two NULLs are equal.
-//
-//    * {ASSERT|EXPECT}_STREQ(s1, s2):     Tests that s1 == s2
-//    * {ASSERT|EXPECT}_STRNE(s1, s2):     Tests that s1 != s2
-//    * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
-//    * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
-//
-// For wide or narrow string objects, you can use the
-// {ASSERT|EXPECT}_??() macros.
-//
-// Don't depend on the order in which the arguments are evaluated,
-// which is undefined.
-//
-// These macros evaluate their arguments exactly once.
-
-#define EXPECT_STREQ(s1, s2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define EXPECT_STRNE(s1, s2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define EXPECT_STRCASEEQ(s1, s2) \
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define EXPECT_STRCASENE(s1, s2)\
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-#define ASSERT_STREQ(s1, s2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define ASSERT_STRNE(s1, s2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define ASSERT_STRCASEEQ(s1, s2) \
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define ASSERT_STRCASENE(s1, s2)\
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-// Macros for comparing floating-point numbers.
-//
-//    * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
-//         Tests that two float values are almost equal.
-//    * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
-//         Tests that two double values are almost equal.
-//    * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
-//         Tests that v1 and v2 are within the given distance to each other.
-//
-// Google Test uses ULP-based comparison to automatically pick a default
-// error bound that is appropriate for the operands.  See the
-// FloatingPoint template class in gtest-internal.h if you are
-// interested in the implementation details.
-
-#define EXPECT_FLOAT_EQ(val1, val2)\
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
-                      val1, val2)
-
-#define EXPECT_DOUBLE_EQ(val1, val2)\
-  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
-                      val1, val2)
-
-#define ASSERT_FLOAT_EQ(val1, val2)\
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
-                      val1, val2)
-
-#define ASSERT_DOUBLE_EQ(val1, val2)\
-  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
-                      val1, val2)
-
-#define EXPECT_NEAR(val1, val2, abs_error)\
-  EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
-                      val1, val2, abs_error)
-
-#define ASSERT_NEAR(val1, val2, abs_error)\
-  ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
-                      val1, val2, abs_error)
-
-// These predicate format functions work on floating-point values, and
-// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
-//
-//   EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
-
-// Asserts that val1 is less than, or almost equal to, val2.  Fails
-// otherwise.  In particular, it fails if either val1 or val2 is NaN.
-GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
-                                   float val1, float val2);
-GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
-                                    double val1, double val2);
-
-
-#if GTEST_OS_WINDOWS
-
-// Macros that test for HRESULT failure and success, these are only useful
-// on Windows, and rely on Windows SDK macros and APIs to compile.
-//
-//    * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
-//
-// When expr unexpectedly fails or succeeds, Google Test prints the
-// expected result and the actual result with both a human-readable
-// string representation of the error, if available, as well as the
-// hex result code.
-# define EXPECT_HRESULT_SUCCEEDED(expr) \
-    EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define ASSERT_HRESULT_SUCCEEDED(expr) \
-    ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define EXPECT_HRESULT_FAILED(expr) \
-    EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-# define ASSERT_HRESULT_FAILED(expr) \
-    ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-#endif  // GTEST_OS_WINDOWS
-
-// Macros that execute statement and check that it doesn't generate new fatal
-// failures in the current thread.
-//
-//   * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
-//
-// Examples:
-//
-//   EXPECT_NO_FATAL_FAILURE(Process());
-//   ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
-//
-#define ASSERT_NO_FATAL_FAILURE(statement) \
-    GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
-#define EXPECT_NO_FATAL_FAILURE(statement) \
-    GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
-
-// Causes a trace (including the given source file path and line number,
-// and the given message) to be included in every test failure message generated
-// by code in the scope of the lifetime of an instance of this class. The effect
-// is undone with the destruction of the instance.
-//
-// The message argument can be anything streamable to std::ostream.
-//
-// Example:
-//   testing::ScopedTrace trace("file.cc", 123, "message");
-//
-class GTEST_API_ ScopedTrace {
- public:
-  // The c'tor pushes the given source file location and message onto
-  // a trace stack maintained by Google Test.
-
-  // Template version. Uses Message() to convert the values into strings.
-  // Slow, but flexible.
-  template <typename T>
-  ScopedTrace(const char* file, int line, const T& message) {
-    PushTrace(file, line, (Message() << message).GetString());
-  }
-
-  // Optimize for some known types.
-  ScopedTrace(const char* file, int line, const char* message) {
-    PushTrace(file, line, message ? message : "(null)");
-  }
-
-  ScopedTrace(const char* file, int line, const std::string& message) {
-    PushTrace(file, line, message);
-  }
-
-  // The d'tor pops the info pushed by the c'tor.
-  //
-  // Note that the d'tor is not virtual in order to be efficient.
-  // Don't inherit from ScopedTrace!
-  ~ScopedTrace();
-
- private:
-  void PushTrace(const char* file, int line, std::string message);
-
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
-} GTEST_ATTRIBUTE_UNUSED_;  // A ScopedTrace object does its job in its
-                            // c'tor and d'tor.  Therefore it doesn't
-                            // need to be used otherwise.
-
-// Causes a trace (including the source file path, the current line
-// number, and the given message) to be included in every test failure
-// message generated by code in the current scope.  The effect is
-// undone when the control leaves the current scope.
-//
-// The message argument can be anything streamable to std::ostream.
-//
-// In the implementation, we include the current line number as part
-// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
-// to appear in the same block - as long as they are on different
-// lines.
-//
-// Assuming that each thread maintains its own stack of traces.
-// Therefore, a SCOPED_TRACE() would (correctly) only affect the
-// assertions in its own thread.
-#define SCOPED_TRACE(message) \
-  ::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
-    __FILE__, __LINE__, (message))
-
-// Compile-time assertion for type equality.
-// StaticAssertTypeEq<type1, type2>() compiles if and only if type1 and type2
-// are the same type.  The value it returns is not interesting.
-//
-// Instead of making StaticAssertTypeEq a class template, we make it a
-// function template that invokes a helper class template.  This
-// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
-// defining objects of that type.
-//
-// CAVEAT:
-//
-// When used inside a method of a class template,
-// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
-// instantiated.  For example, given:
-//
-//   template <typename T> class Foo {
-//    public:
-//     void Bar() { testing::StaticAssertTypeEq<int, T>(); }
-//   };
-//
-// the code:
-//
-//   void Test1() { Foo<bool> foo; }
-//
-// will NOT generate a compiler error, as Foo<bool>::Bar() is never
-// actually instantiated.  Instead, you need:
-//
-//   void Test2() { Foo<bool> foo; foo.Bar(); }
-//
-// to cause a compiler error.
-template <typename T1, typename T2>
-constexpr bool StaticAssertTypeEq() noexcept {
-  static_assert(std::is_same<T1, T2>::value, "T1 and T2 are not the same type");
-  return true;
-}
-
-// Defines a test.
-//
-// The first parameter is the name of the test suite, and the second
-// parameter is the name of the test within the test suite.
-//
-// The convention is to end the test suite name with "Test".  For
-// example, a test suite for the Foo class can be named FooTest.
-//
-// Test code should appear between braces after an invocation of
-// this macro.  Example:
-//
-//   TEST(FooTest, InitializesCorrectly) {
-//     Foo foo;
-//     EXPECT_TRUE(foo.StatusIsOK());
-//   }
-
-// Note that we call GetTestTypeId() instead of GetTypeId<
-// ::testing::Test>() here to get the type ID of testing::Test.  This
-// is to work around a suspected linker bug when using Google Test as
-// a framework on Mac OS X.  The bug causes GetTypeId<
-// ::testing::Test>() to return different values depending on whether
-// the call is from the Google Test framework itself or from user test
-// code.  GetTestTypeId() is guaranteed to always return the same
-// value, as it always calls GetTypeId<>() from the Google Test
-// framework.
-#define GTEST_TEST(test_suite_name, test_name)             \
-  GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
-              ::testing::internal::GetTestTypeId())
-
-// Define this macro to 1 to omit the definition of TEST(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_TEST
-#define TEST(test_suite_name, test_name) GTEST_TEST(test_suite_name, test_name)
-#endif
-
-// Defines a test that uses a test fixture.
-//
-// The first parameter is the name of the test fixture class, which
-// also doubles as the test suite name.  The second parameter is the
-// name of the test within the test suite.
-//
-// A test fixture class must be declared earlier.  The user should put
-// the test code between braces after using this macro.  Example:
-//
-//   class FooTest : public testing::Test {
-//    protected:
-//     void SetUp() override { b_.AddElement(3); }
-//
-//     Foo a_;
-//     Foo b_;
-//   };
-//
-//   TEST_F(FooTest, InitializesCorrectly) {
-//     EXPECT_TRUE(a_.StatusIsOK());
-//   }
-//
-//   TEST_F(FooTest, ReturnsElementCountCorrectly) {
-//     EXPECT_EQ(a_.size(), 0);
-//     EXPECT_EQ(b_.size(), 1);
-//   }
-//
-// GOOGLETEST_CM0011 DO NOT DELETE
-#if !GTEST_DONT_DEFINE_TEST
-#define TEST_F(test_fixture, test_name)\
-  GTEST_TEST_(test_fixture, test_name, test_fixture, \
-              ::testing::internal::GetTypeId<test_fixture>())
-#endif  // !GTEST_DONT_DEFINE_TEST
-
-// Returns a path to temporary directory.
-// Tries to determine an appropriate directory for the platform.
-GTEST_API_ std::string TempDir();
-
-#ifdef _MSC_VER
-#  pragma warning(pop)
-#endif
-
-// Dynamically registers a test with the framework.
-//
-// This is an advanced API only to be used when the `TEST` macros are
-// insufficient. The macros should be preferred when possible, as they avoid
-// most of the complexity of calling this function.
-//
-// The `factory` argument is a factory callable (move-constructible) object or
-// function pointer that creates a new instance of the Test object. It
-// handles ownership to the caller. The signature of the callable is
-// `Fixture*()`, where `Fixture` is the test fixture class for the test. All
-// tests registered with the same `test_suite_name` must return the same
-// fixture type. This is checked at runtime.
-//
-// The framework will infer the fixture class from the factory and will call
-// the `SetUpTestSuite` and `TearDownTestSuite` for it.
-//
-// Must be called before `RUN_ALL_TESTS()` is invoked, otherwise behavior is
-// undefined.
-//
-// Use case example:
-//
-// class MyFixture : public ::testing::Test {
-//  public:
-//   // All of these optional, just like in regular macro usage.
-//   static void SetUpTestSuite() { ... }
-//   static void TearDownTestSuite() { ... }
-//   void SetUp() override { ... }
-//   void TearDown() override { ... }
-// };
-//
-// class MyTest : public MyFixture {
-//  public:
-//   explicit MyTest(int data) : data_(data) {}
-//   void TestBody() override { ... }
-//
-//  private:
-//   int data_;
-// };
-//
-// void RegisterMyTests(const std::vector<int>& values) {
-//   for (int v : values) {
-//     ::testing::RegisterTest(
-//         "MyFixture", ("Test" + std::to_string(v)).c_str(), nullptr,
-//         std::to_string(v).c_str(),
-//         __FILE__, __LINE__,
-//         // Important to use the fixture type as the return type here.
-//         [=]() -> MyFixture* { return new MyTest(v); });
-//   }
-// }
-// ...
-// int main(int argc, char** argv) {
-//   std::vector<int> values_to_test = LoadValuesFromConfig();
-//   RegisterMyTests(values_to_test);
-//   ...
-//   return RUN_ALL_TESTS();
-// }
-//
-template <int&... ExplicitParameterBarrier, typename Factory>
-TestInfo* RegisterTest(const char* test_suite_name, const char* test_name,
-                       const char* type_param, const char* value_param,
-                       const char* file, int line, Factory factory) {
-  using TestT = typename std::remove_pointer<decltype(factory())>::type;
-
-  class FactoryImpl : public internal::TestFactoryBase {
-   public:
-    explicit FactoryImpl(Factory f) : factory_(std::move(f)) {}
-    Test* CreateTest() override { return factory_(); }
-
-   private:
-    Factory factory_;
-  };
-
-  return internal::MakeAndRegisterTestInfo(
-      test_suite_name, test_name, type_param, value_param,
-      internal::CodeLocation(file, line), internal::GetTypeId<TestT>(),
-      internal::SuiteApiResolver<TestT>::GetSetUpCaseOrSuite(file, line),
-      internal::SuiteApiResolver<TestT>::GetTearDownCaseOrSuite(file, line),
-      new FactoryImpl{std::move(factory)});
-}
-
-}  // namespace testing
-
-// Use this function in main() to run all tests.  It returns 0 if all
-// tests are successful, or 1 otherwise.
-//
-// RUN_ALL_TESTS() should be invoked after the command line has been
-// parsed by InitGoogleTest().
-//
-// This function was formerly a macro; thus, it is in the global
-// namespace and has an all-caps name.
-int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
-
-inline int RUN_ALL_TESTS() {
-  return ::testing::UnitTest::GetInstance()->Run();
-}
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251
-
-#endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_H_
diff --git a/third_party/ceres/internal/ceres/householder_vector_test.cc b/third_party/ceres/internal/ceres/householder_vector_test.cc
deleted file mode 100644
index 7d69789..0000000
--- a/third_party/ceres/internal/ceres/householder_vector_test.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://code.google.com/p/ceres-solver/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/internal/householder_vector.h"
-
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-static void HouseholderTestHelper(const Vector& x) {
-  const double kTolerance = 1e-14;
-
-  // Check to ensure that H * x = ||x|| * [0 ... 0 1]'.
-  Vector v(x.rows());
-  double beta;
-
-  // NOTE: The explicit template arguments are needed here because
-  // ComputeHouseholderVector is templated and some versions of MSVC
-  // have trouble deducing the type of v automatically.
-  ComputeHouseholderVector<Vector, double, Eigen::Dynamic>(x, &v, &beta);
-  Vector result = x - beta * v * (v.transpose() * x);
-
-  Vector expected_result(x.rows());
-  expected_result.setZero();
-  expected_result(x.rows() - 1) = 1;
-  expected_result *= x.norm();
-
-  for (int i = 0; i < x.rows(); ++i) {
-    EXPECT_NEAR(expected_result[i], result[i], kTolerance);
-  }
-}
-
-TEST(HouseholderVector, ZeroPositive) {
-  Vector x(3);
-  x << 0.0, 0.0, 0.25;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, ZeroNegative) {
-  Vector x(3);
-  x << 0.0, 0.0, -0.25;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, NearZeroPositive) {
-  Vector x(3);
-  x << 1e-18, 1e-18, 0.25;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, NearZeroNegative) {
-  Vector x(3);
-  x << 1e-18, 1e-18, -0.25;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, NonZeroNegative) {
-  Vector x(3);
-  x << 1.0, 0.0, -3.0;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, NonZeroPositive) {
-  Vector x(3);
-  x << 1.0, 1.0, 1.0;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, NonZeroPositive_Size4) {
-  Vector x(4);
-  x << 1.0, 1.0, 0.0, 2.0;
-
-  HouseholderTestHelper(x);
-}
-
-TEST(HouseholderVector, LastElementZero) {
-  Vector x(4);
-  x << 1.0, 1.0, 0.0, 0.0;
-
-  HouseholderTestHelper(x);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/implicit_schur_complement.cc b/third_party/ceres/internal/ceres/implicit_schur_complement.cc
deleted file mode 100644
index a633529..0000000
--- a/third_party/ceres/internal/ceres/implicit_schur_complement.cc
+++ /dev/null
@@ -1,278 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/implicit_schur_complement.h"
-
-#include "Eigen/Dense"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-ImplicitSchurComplement::ImplicitSchurComplement(
-    const LinearSolver::Options& options)
-    : options_(options) {}
-
-void ImplicitSchurComplement::Init(const BlockSparseMatrix& A,
-                                   const double* D,
-                                   const double* b) {
-  // Since initialization is reasonably heavy, perhaps we can save on
-  // constructing a new object everytime.
-  if (A_ == nullptr) {
-    A_ = PartitionedMatrixViewBase::Create(options_, A);
-  }
-
-  D_ = D;
-  b_ = b;
-
-  compute_ftf_inverse_ =
-      options_.use_spse_initialization ||
-      options_.preconditioner_type == JACOBI ||
-      options_.preconditioner_type == SCHUR_POWER_SERIES_EXPANSION;
-
-  // Initialize temporary storage and compute the block diagonals of
-  // E'E and F'E.
-  if (block_diagonal_EtE_inverse_ == nullptr) {
-    block_diagonal_EtE_inverse_ = A_->CreateBlockDiagonalEtE();
-    if (compute_ftf_inverse_) {
-      block_diagonal_FtF_inverse_ = A_->CreateBlockDiagonalFtF();
-    }
-    rhs_.resize(A_->num_cols_f());
-    rhs_.setZero();
-    tmp_rows_.resize(A_->num_rows());
-    tmp_e_cols_.resize(A_->num_cols_e());
-    tmp_e_cols_2_.resize(A_->num_cols_e());
-    tmp_f_cols_.resize(A_->num_cols_f());
-  } else {
-    A_->UpdateBlockDiagonalEtE(block_diagonal_EtE_inverse_.get());
-    if (compute_ftf_inverse_) {
-      A_->UpdateBlockDiagonalFtF(block_diagonal_FtF_inverse_.get());
-    }
-  }
-
-  // The block diagonals of the augmented linear system contain
-  // contributions from the diagonal D if it is non-null. Add that to
-  // the block diagonals and invert them.
-  AddDiagonalAndInvert(D_, block_diagonal_EtE_inverse_.get());
-  if (compute_ftf_inverse_) {
-    AddDiagonalAndInvert((D_ == nullptr) ? nullptr : D_ + A_->num_cols_e(),
-                         block_diagonal_FtF_inverse_.get());
-  }
-
-  // Compute the RHS of the Schur complement system.
-  UpdateRhs();
-}
-
-// Evaluate the product
-//
-//   Sx = [F'F - F'E (E'E)^-1 E'F]x
-//
-// By breaking it down into individual matrix vector products
-// involving the matrices E and F. This is implemented using a
-// PartitionedMatrixView of the input matrix A.
-void ImplicitSchurComplement::RightMultiplyAndAccumulate(const double* x,
-                                                         double* y) const {
-  // y1 = F x
-  ParallelSetZero(options_.context, options_.num_threads, tmp_rows_);
-  A_->RightMultiplyAndAccumulateF(x, tmp_rows_.data());
-
-  // y2 = E' y1
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_);
-  A_->LeftMultiplyAndAccumulateE(tmp_rows_.data(), tmp_e_cols_.data());
-
-  // y3 = -(E'E)^-1 y2
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_2_);
-  block_diagonal_EtE_inverse_->RightMultiplyAndAccumulate(tmp_e_cols_.data(),
-                                                          tmp_e_cols_2_.data(),
-                                                          options_.context,
-                                                          options_.num_threads);
-
-  ParallelAssign(
-      options_.context, options_.num_threads, tmp_e_cols_2_, -tmp_e_cols_2_);
-
-  // y1 = y1 + E y3
-  A_->RightMultiplyAndAccumulateE(tmp_e_cols_2_.data(), tmp_rows_.data());
-
-  // y5 = D * x
-  if (D_ != nullptr) {
-    ConstVectorRef Dref(D_ + A_->num_cols_e(), num_cols());
-    VectorRef y_cols(y, num_cols());
-    ParallelAssign(
-        options_.context,
-        options_.num_threads,
-        y_cols,
-        (Dref.array().square() * ConstVectorRef(x, num_cols()).array()));
-  } else {
-    ParallelSetZero(options_.context, options_.num_threads, y, num_cols());
-  }
-
-  // y = y5 + F' y1
-  A_->LeftMultiplyAndAccumulateF(tmp_rows_.data(), y);
-}
-
-void ImplicitSchurComplement::InversePowerSeriesOperatorRightMultiplyAccumulate(
-    const double* x, double* y) const {
-  CHECK(compute_ftf_inverse_);
-  // y1 = F x
-  ParallelSetZero(options_.context, options_.num_threads, tmp_rows_);
-  A_->RightMultiplyAndAccumulateF(x, tmp_rows_.data());
-
-  // y2 = E' y1
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_);
-  A_->LeftMultiplyAndAccumulateE(tmp_rows_.data(), tmp_e_cols_.data());
-
-  // y3 = (E'E)^-1 y2
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_2_);
-  block_diagonal_EtE_inverse_->RightMultiplyAndAccumulate(tmp_e_cols_.data(),
-                                                          tmp_e_cols_2_.data(),
-                                                          options_.context,
-                                                          options_.num_threads);
-  // y1 = E y3
-  ParallelSetZero(options_.context, options_.num_threads, tmp_rows_);
-  A_->RightMultiplyAndAccumulateE(tmp_e_cols_2_.data(), tmp_rows_.data());
-
-  // y4 = F' y1
-  ParallelSetZero(options_.context, options_.num_threads, tmp_f_cols_);
-  A_->LeftMultiplyAndAccumulateF(tmp_rows_.data(), tmp_f_cols_.data());
-
-  // y += (F'F)^-1 y4
-  block_diagonal_FtF_inverse_->RightMultiplyAndAccumulate(
-      tmp_f_cols_.data(), y, options_.context, options_.num_threads);
-}
-
-// Given a block diagonal matrix and an optional array of diagonal
-// entries D, add them to the diagonal of the matrix and compute the
-// inverse of each diagonal block.
-void ImplicitSchurComplement::AddDiagonalAndInvert(
-    const double* D, BlockSparseMatrix* block_diagonal) {
-  const CompressedRowBlockStructure* block_diagonal_structure =
-      block_diagonal->block_structure();
-  ParallelFor(options_.context,
-              0,
-              block_diagonal_structure->rows.size(),
-              options_.num_threads,
-              [block_diagonal_structure, D, block_diagonal](int row_block_id) {
-                auto& row = block_diagonal_structure->rows[row_block_id];
-                const int row_block_pos = row.block.position;
-                const int row_block_size = row.block.size;
-                const Cell& cell = row.cells[0];
-                MatrixRef m(block_diagonal->mutable_values() + cell.position,
-                            row_block_size,
-                            row_block_size);
-
-                if (D != nullptr) {
-                  ConstVectorRef d(D + row_block_pos, row_block_size);
-                  m += d.array().square().matrix().asDiagonal();
-                }
-
-                m = m.selfadjointView<Eigen::Upper>().llt().solve(
-                    Matrix::Identity(row_block_size, row_block_size));
-              });
-}
-
-// Similar to RightMultiplyAndAccumulate, use the block structure of the matrix
-// A to compute y = (E'E)^-1 (E'b - E'F x).
-void ImplicitSchurComplement::BackSubstitute(const double* x, double* y) {
-  const int num_cols_e = A_->num_cols_e();
-  const int num_cols_f = A_->num_cols_f();
-  const int num_cols = A_->num_cols();
-  const int num_rows = A_->num_rows();
-
-  // y1 = F x
-  ParallelSetZero(options_.context, options_.num_threads, tmp_rows_);
-  A_->RightMultiplyAndAccumulateF(x, tmp_rows_.data());
-
-  // y2 = b - y1
-  ParallelAssign(options_.context,
-                 options_.num_threads,
-                 tmp_rows_,
-                 ConstVectorRef(b_, num_rows) - tmp_rows_);
-
-  // y3 = E' y2
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_);
-  A_->LeftMultiplyAndAccumulateE(tmp_rows_.data(), tmp_e_cols_.data());
-
-  // y = (E'E)^-1 y3
-  ParallelSetZero(options_.context, options_.num_threads, y, num_cols);
-  block_diagonal_EtE_inverse_->RightMultiplyAndAccumulate(
-      tmp_e_cols_.data(), y, options_.context, options_.num_threads);
-
-  // The full solution vector y has two blocks. The first block of
-  // variables corresponds to the eliminated variables, which we just
-  // computed via back substitution. The second block of variables
-  // corresponds to the Schur complement system, so we just copy those
-  // values from the solution to the Schur complement.
-  VectorRef y_cols_f(y + num_cols_e, num_cols_f);
-  ParallelAssign(options_.context,
-                 options_.num_threads,
-                 y_cols_f,
-                 ConstVectorRef(x, num_cols_f));
-}
-
-// Compute the RHS of the Schur complement system.
-//
-// rhs = F'b - F'E (E'E)^-1 E'b
-//
-// Like BackSubstitute, we use the block structure of A to implement
-// this using a series of matrix vector products.
-void ImplicitSchurComplement::UpdateRhs() {
-  // y1 = E'b
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_);
-  A_->LeftMultiplyAndAccumulateE(b_, tmp_e_cols_.data());
-
-  // y2 = (E'E)^-1 y1
-  ParallelSetZero(options_.context, options_.num_threads, tmp_e_cols_2_);
-  block_diagonal_EtE_inverse_->RightMultiplyAndAccumulate(tmp_e_cols_.data(),
-                                                          tmp_e_cols_2_.data(),
-                                                          options_.context,
-                                                          options_.num_threads);
-
-  // y3 = E y2
-  ParallelSetZero(options_.context, options_.num_threads, tmp_rows_);
-  A_->RightMultiplyAndAccumulateE(tmp_e_cols_2_.data(), tmp_rows_.data());
-
-  // y3 = b - y3
-  ParallelAssign(options_.context,
-                 options_.num_threads,
-                 tmp_rows_,
-                 ConstVectorRef(b_, A_->num_rows()) - tmp_rows_);
-
-  // rhs = F' y3
-  ParallelSetZero(options_.context, options_.num_threads, rhs_);
-  A_->LeftMultiplyAndAccumulateF(tmp_rows_.data(), rhs_.data());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/implicit_schur_complement.h b/third_party/ceres/internal/ceres/implicit_schur_complement.h
deleted file mode 100644
index b4eb0b0..0000000
--- a/third_party/ceres/internal/ceres/implicit_schur_complement.h
+++ /dev/null
@@ -1,176 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// An iterative solver for solving the Schur complement/reduced camera
-// linear system that arise in SfM problems.
-
-#ifndef CERES_INTERNAL_IMPLICIT_SCHUR_COMPLEMENT_H_
-#define CERES_INTERNAL_IMPLICIT_SCHUR_COMPLEMENT_H_
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_operator.h"
-#include "ceres/linear_solver.h"
-#include "ceres/partitioned_matrix_view.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class BlockSparseMatrix;
-
-// This class implements various linear algebraic operations related
-// to the Schur complement without explicitly forming it.
-//
-//
-// Given a reactangular linear system Ax = b, where
-//
-//   A = [E F]
-//
-// The normal equations are given by
-//
-//   A'Ax = A'b
-//
-//  |E'E E'F||y| = |E'b|
-//  |F'E F'F||z|   |F'b|
-//
-// and the Schur complement system is given by
-//
-//  [F'F - F'E (E'E)^-1 E'F] z = F'b - F'E (E'E)^-1 E'b
-//
-// Now if we wish to solve Ax = b in the least squares sense, one way
-// is to form this Schur complement system and solve it using
-// Preconditioned Conjugate Gradients.
-//
-// The key operation in a conjugate gradient solver is the evaluation of the
-// matrix vector product with the Schur complement
-//
-//   S = F'F - F'E (E'E)^-1 E'F
-//
-// It is straightforward to see that matrix vector products with S can
-// be evaluated without storing S in memory. Instead, given (E'E)^-1
-// (which for our purposes is an easily inverted block diagonal
-// matrix), it can be done in terms of matrix vector products with E,
-// F and (E'E)^-1. This class implements this functionality and other
-// auxiliary bits needed to implement a CG solver on the Schur
-// complement using the PartitionedMatrixView object.
-//
-// THREAD SAFETY: This class is not thread safe. In particular, the
-// RightMultiplyAndAccumulate (and the LeftMultiplyAndAccumulate) methods are
-// not thread safe as they depend on mutable arrays used for the temporaries
-// needed to compute the product y += Sx;
-class CERES_NO_EXPORT ImplicitSchurComplement final : public LinearOperator {
- public:
-  // num_eliminate_blocks is the number of E blocks in the matrix
-  // A.
-  //
-  // preconditioner indicates whether the inverse of the matrix F'F
-  // should be computed or not as a preconditioner for the Schur
-  // Complement.
-  //
-  // TODO(sameeragarwal): Get rid of the two bools below and replace
-  // them with enums.
-  explicit ImplicitSchurComplement(const LinearSolver::Options& options);
-
-  // Initialize the Schur complement for a linear least squares
-  // problem of the form
-  //
-  //   |A      | x = |b|
-  //   |diag(D)|     |0|
-  //
-  // If D is null, then it is treated as a zero dimensional matrix. It
-  // is important that the matrix A have a BlockStructure object
-  // associated with it and has a block structure that is compatible
-  // with the SchurComplement solver.
-  void Init(const BlockSparseMatrix& A, const double* D, const double* b);
-
-  // y += Sx, where S is the Schur complement.
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-
-  // The Schur complement is a symmetric positive definite matrix,
-  // thus the left and right multiply operators are the same.
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final {
-    RightMultiplyAndAccumulate(x, y);
-  }
-
-  // Following is useful for approximation of S^-1 via power series expansion.
-  // Z = (F'F)^-1 F'E (E'E)^-1 E'F
-  // y += Zx
-  void InversePowerSeriesOperatorRightMultiplyAccumulate(const double* x,
-                                                         double* y) const;
-
-  // y = (E'E)^-1 (E'b - E'F x). Given an estimate of the solution to
-  // the Schur complement system, this method computes the value of
-  // the e_block variables that were eliminated to form the Schur
-  // complement.
-  void BackSubstitute(const double* x, double* y);
-
-  int num_rows() const final { return A_->num_cols_f(); }
-  int num_cols() const final { return A_->num_cols_f(); }
-  const Vector& rhs() const { return rhs_; }
-
-  const BlockSparseMatrix* block_diagonal_EtE_inverse() const {
-    return block_diagonal_EtE_inverse_.get();
-  }
-
-  const BlockSparseMatrix* block_diagonal_FtF_inverse() const {
-    CHECK(compute_ftf_inverse_);
-    return block_diagonal_FtF_inverse_.get();
-  }
-
- private:
-  void AddDiagonalAndInvert(const double* D, BlockSparseMatrix* matrix);
-  void UpdateRhs();
-
-  const LinearSolver::Options& options_;
-  bool compute_ftf_inverse_ = false;
-  std::unique_ptr<PartitionedMatrixViewBase> A_;
-  const double* D_ = nullptr;
-  const double* b_ = nullptr;
-
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_EtE_inverse_;
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_FtF_inverse_;
-
-  Vector rhs_;
-
-  // Temporary storage vectors used to implement RightMultiplyAndAccumulate.
-  mutable Vector tmp_rows_;
-  mutable Vector tmp_e_cols_;
-  mutable Vector tmp_e_cols_2_;
-  mutable Vector tmp_f_cols_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_IMPLICIT_SCHUR_COMPLEMENT_H_
diff --git a/third_party/ceres/internal/ceres/implicit_schur_complement_test.cc b/third_party/ceres/internal/ceres/implicit_schur_complement_test.cc
deleted file mode 100644
index 35519fc..0000000
--- a/third_party/ceres/internal/ceres/implicit_schur_complement_test.cc
+++ /dev/null
@@ -1,240 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/implicit_schur_complement.h"
-
-#include <cstddef>
-#include <memory>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_dense_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using testing::AssertionResult;
-
-const double kEpsilon = 1e-14;
-
-class ImplicitSchurComplementTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    auto problem = CreateLinearLeastSquaresProblemFromId(2);
-
-    CHECK(problem != nullptr);
-    A_.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-    b_ = std::move(problem->b);
-    D_ = std::move(problem->D);
-
-    num_cols_ = A_->num_cols();
-    num_rows_ = A_->num_rows();
-    num_eliminate_blocks_ = problem->num_eliminate_blocks;
-  }
-
-  void ReducedLinearSystemAndSolution(double* D,
-                                      Matrix* lhs,
-                                      Vector* rhs,
-                                      Vector* solution) {
-    const CompressedRowBlockStructure* bs = A_->block_structure();
-    const int num_col_blocks = bs->cols.size();
-    auto blocks = Tail(bs->cols, num_col_blocks - num_eliminate_blocks_);
-    BlockRandomAccessDenseMatrix blhs(blocks, &context_, 1);
-    const int num_schur_rows = blhs.num_rows();
-
-    LinearSolver::Options options;
-    options.elimination_groups.push_back(num_eliminate_blocks_);
-    options.type = DENSE_SCHUR;
-    ContextImpl context;
-    options.context = &context;
-
-    std::unique_ptr<SchurEliminatorBase> eliminator =
-        SchurEliminatorBase::Create(options);
-    CHECK(eliminator != nullptr);
-    const bool kFullRankETE = true;
-    eliminator->Init(num_eliminate_blocks_, kFullRankETE, bs);
-
-    lhs->resize(num_schur_rows, num_schur_rows);
-    rhs->resize(num_schur_rows);
-
-    eliminator->Eliminate(
-        BlockSparseMatrixData(*A_), b_.get(), D, &blhs, rhs->data());
-
-    MatrixRef lhs_ref(blhs.mutable_values(), num_schur_rows, num_schur_rows);
-
-    // lhs_ref is an upper triangular matrix. Construct a full version
-    // of lhs_ref in lhs by transposing lhs_ref, choosing the strictly
-    // lower triangular part of the matrix and adding it to lhs_ref.
-    *lhs = lhs_ref;
-    lhs->triangularView<Eigen::StrictlyLower>() =
-        lhs_ref.triangularView<Eigen::StrictlyUpper>().transpose();
-
-    solution->resize(num_cols_);
-    solution->setZero();
-    VectorRef schur_solution(solution->data() + num_cols_ - num_schur_rows,
-                             num_schur_rows);
-    schur_solution = lhs->selfadjointView<Eigen::Upper>().llt().solve(*rhs);
-    eliminator->BackSubstitute(BlockSparseMatrixData(*A_),
-                               b_.get(),
-                               D,
-                               schur_solution.data(),
-                               solution->data());
-  }
-
-  AssertionResult TestImplicitSchurComplement(double* D) {
-    Matrix lhs;
-    Vector rhs;
-    Vector reference_solution;
-    ReducedLinearSystemAndSolution(D, &lhs, &rhs, &reference_solution);
-
-    LinearSolver::Options options;
-    options.elimination_groups.push_back(num_eliminate_blocks_);
-    options.preconditioner_type = JACOBI;
-    ContextImpl context;
-    options.context = &context;
-    ImplicitSchurComplement isc(options);
-    isc.Init(*A_, D, b_.get());
-
-    const int num_f_cols = lhs.cols();
-    const int num_e_cols = num_cols_ - num_f_cols;
-
-    Matrix A_dense, E, F, DE, DF;
-    A_->ToDenseMatrix(&A_dense);
-    E = A_dense.leftCols(A_->num_cols() - num_f_cols);
-    F = A_dense.rightCols(num_f_cols);
-    if (D) {
-      DE = VectorRef(D, num_e_cols).asDiagonal();
-      DF = VectorRef(D + num_e_cols, num_f_cols).asDiagonal();
-    } else {
-      DE = Matrix::Zero(num_e_cols, num_e_cols);
-      DF = Matrix::Zero(num_f_cols, num_f_cols);
-    }
-
-    // Z = (block_diagonal(F'F))^-1 F'E (E'E)^-1 E'F
-    // Here, assuming that block_diagonal(F'F) == diagonal(F'F)
-    Matrix Z_reference =
-        (F.transpose() * F + DF).diagonal().asDiagonal().inverse() *
-        F.transpose() * E * (E.transpose() * E + DE).inverse() * E.transpose() *
-        F;
-
-    for (int i = 0; i < num_f_cols; ++i) {
-      Vector x(num_f_cols);
-      x.setZero();
-      x(i) = 1.0;
-
-      Vector y(num_f_cols);
-      y = lhs * x;
-
-      Vector z(num_f_cols);
-      isc.RightMultiplyAndAccumulate(x.data(), z.data());
-
-      // The i^th column of the implicit schur complement is the same as
-      // the explicit schur complement.
-      if ((y - z).norm() > kEpsilon) {
-        return testing::AssertionFailure()
-               << "Explicit and Implicit SchurComplements differ in "
-               << "column " << i << ". explicit: " << y.transpose()
-               << " implicit: " << z.transpose();
-      }
-
-      y.setZero();
-      y = Z_reference * x;
-      z.setZero();
-      isc.InversePowerSeriesOperatorRightMultiplyAccumulate(x.data(), z.data());
-
-      // The i^th column of operator Z stored implicitly is the same as its
-      // explicit version.
-      if ((y - z).norm() > kEpsilon) {
-        return testing::AssertionFailure()
-               << "Explicit and Implicit operators used to approximate the "
-                  "inversion of schur complement via power series expansion "
-                  "differ in column "
-               << i << ". explicit: " << y.transpose()
-               << " implicit: " << z.transpose();
-      }
-    }
-
-    // Compare the rhs of the reduced linear system
-    if ((isc.rhs() - rhs).norm() > kEpsilon) {
-      return testing::AssertionFailure()
-             << "Explicit and Implicit SchurComplements differ in "
-             << "rhs. explicit: " << rhs.transpose()
-             << " implicit: " << isc.rhs().transpose();
-    }
-
-    // Reference solution to the f_block.
-    const Vector reference_f_sol =
-        lhs.selfadjointView<Eigen::Upper>().llt().solve(rhs);
-
-    // Backsubstituted solution from the implicit schur solver using the
-    // reference solution to the f_block.
-    Vector sol(num_cols_);
-    isc.BackSubstitute(reference_f_sol.data(), sol.data());
-    if ((sol - reference_solution).norm() > kEpsilon) {
-      return testing::AssertionFailure()
-             << "Explicit and Implicit SchurComplements solutions differ. "
-             << "explicit: " << reference_solution.transpose()
-             << " implicit: " << sol.transpose();
-    }
-
-    return testing::AssertionSuccess();
-  }
-
-  ContextImpl context_;
-  int num_rows_;
-  int num_cols_;
-  int num_eliminate_blocks_;
-
-  std::unique_ptr<BlockSparseMatrix> A_;
-  std::unique_ptr<double[]> b_;
-  std::unique_ptr<double[]> D_;
-};
-
-// Verify that the Schur Complement matrix implied by the
-// ImplicitSchurComplement class matches the one explicitly computed
-// by the SchurComplement solver.
-//
-// We do this with and without regularization to check that the
-// support for the LM diagonal is correct.
-TEST_F(ImplicitSchurComplementTest, SchurMatrixValuesTest) {
-  EXPECT_TRUE(TestImplicitSchurComplement(nullptr));
-  EXPECT_TRUE(TestImplicitSchurComplement(D_.get()));
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/inner_product_computer.cc b/third_party/ceres/internal/ceres/inner_product_computer.cc
deleted file mode 100644
index 59b5d94..0000000
--- a/third_party/ceres/internal/ceres/inner_product_computer.cc
+++ /dev/null
@@ -1,336 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/inner_product_computer.h"
-
-#include <algorithm>
-#include <memory>
-
-#include "ceres/small_blas.h"
-
-namespace ceres::internal {
-
-// Create the CompressedRowSparseMatrix matrix that will contain the
-// inner product.
-//
-// storage_type controls whether the result matrix contains the upper
-// or the lower triangular part of the product.
-//
-// num_nonzeros is the number of non-zeros in the result matrix.
-std::unique_ptr<CompressedRowSparseMatrix>
-InnerProductComputer::CreateResultMatrix(
-    const CompressedRowSparseMatrix::StorageType storage_type,
-    const int num_nonzeros) {
-  auto matrix = std::make_unique<CompressedRowSparseMatrix>(
-      m_.num_cols(), m_.num_cols(), num_nonzeros);
-  matrix->set_storage_type(storage_type);
-  const CompressedRowBlockStructure* bs = m_.block_structure();
-  *matrix->mutable_row_blocks() = bs->cols;
-  *matrix->mutable_col_blocks() = bs->cols;
-  return matrix;
-}
-
-// Given the set of product terms in the inner product, return the
-// total number of non-zeros in the result and for each row block of
-// the result matrix, compute the number of non-zeros in any one row
-// of the row block.
-int InnerProductComputer::ComputeNonzeros(
-    const std::vector<InnerProductComputer::ProductTerm>& product_terms,
-    std::vector<int>* row_nnz) {
-  const CompressedRowBlockStructure* bs = m_.block_structure();
-  const std::vector<Block>& blocks = bs->cols;
-
-  row_nnz->resize(blocks.size());
-  std::fill(row_nnz->begin(), row_nnz->end(), 0);
-
-  if (product_terms.empty()) {
-    return 0;
-  }
-
-  // First product term.
-  (*row_nnz)[product_terms[0].row] = blocks[product_terms[0].col].size;
-  int num_nonzeros =
-      blocks[product_terms[0].row].size * blocks[product_terms[0].col].size;
-
-  // Remaining product terms.
-  for (int i = 1; i < product_terms.size(); ++i) {
-    const ProductTerm& previous = product_terms[i - 1];
-    const ProductTerm& current = product_terms[i];
-
-    // Each (row, col) block counts only once.
-    // This check depends on product sorted on (row, col).
-    if (current.row != previous.row || current.col != previous.col) {
-      (*row_nnz)[current.row] += blocks[current.col].size;
-      num_nonzeros += blocks[current.row].size * blocks[current.col].size;
-    }
-  }
-
-  return num_nonzeros;
-}
-
-InnerProductComputer::InnerProductComputer(const BlockSparseMatrix& m,
-                                           const int start_row_block,
-                                           const int end_row_block)
-    : m_(m), start_row_block_(start_row_block), end_row_block_(end_row_block) {}
-
-// Compute the sparsity structure of the product m.transpose() * m
-// and create a CompressedRowSparseMatrix corresponding to it.
-//
-// Also compute the "program" vector, which for every term in the
-// block outer product provides the information for the entry in the
-// values array of the result matrix where it should be accumulated.
-//
-// Since the entries of the program are the same for rows with the
-// same sparsity structure, the program only stores the result for one
-// row per row block. The Compute function reuses this information for
-// each row in the row block.
-//
-// product_storage_type controls the form of the output matrix. It
-// can be LOWER_TRIANGULAR or UPPER_TRIANGULAR.
-std::unique_ptr<InnerProductComputer> InnerProductComputer::Create(
-    const BlockSparseMatrix& m,
-    CompressedRowSparseMatrix::StorageType product_storage_type) {
-  return InnerProductComputer::Create(
-      m, 0, m.block_structure()->rows.size(), product_storage_type);
-}
-
-std::unique_ptr<InnerProductComputer> InnerProductComputer::Create(
-    const BlockSparseMatrix& m,
-    const int start_row_block,
-    const int end_row_block,
-    CompressedRowSparseMatrix::StorageType product_storage_type) {
-  CHECK(product_storage_type ==
-            CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR ||
-        product_storage_type ==
-            CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-  CHECK_GT(m.num_nonzeros(), 0)
-      << "Congratulations, you found a bug in Ceres. Please report it.";
-  std::unique_ptr<InnerProductComputer> inner_product_computer(
-      new InnerProductComputer(m, start_row_block, end_row_block));
-  inner_product_computer->Init(product_storage_type);
-  return inner_product_computer;
-}
-
-void InnerProductComputer::Init(
-    const CompressedRowSparseMatrix::StorageType product_storage_type) {
-  std::vector<InnerProductComputer::ProductTerm> product_terms;
-  const CompressedRowBlockStructure* bs = m_.block_structure();
-
-  // Give input matrix m in Block Sparse format
-  //     (row_block, col_block)
-  // represent each block multiplication
-  //     (row_block, col_block1)' X (row_block, col_block2)
-  // by its product term:
-  //     (col_block1, col_block2, index)
-  for (int row_block = start_row_block_; row_block < end_row_block_;
-       ++row_block) {
-    const CompressedRow& row = bs->rows[row_block];
-    for (int c1 = 0; c1 < row.cells.size(); ++c1) {
-      const Cell& cell1 = row.cells[c1];
-      int c2_begin, c2_end;
-      if (product_storage_type ==
-          CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-        c2_begin = 0;
-        c2_end = c1 + 1;
-      } else {
-        c2_begin = c1;
-        c2_end = row.cells.size();
-      }
-
-      for (int c2 = c2_begin; c2 < c2_end; ++c2) {
-        const Cell& cell2 = row.cells[c2];
-        product_terms.emplace_back(
-            cell1.block_id, cell2.block_id, product_terms.size());
-      }
-    }
-  }
-
-  std::sort(product_terms.begin(), product_terms.end());
-  ComputeOffsetsAndCreateResultMatrix(product_storage_type, product_terms);
-}
-
-void InnerProductComputer::ComputeOffsetsAndCreateResultMatrix(
-    const CompressedRowSparseMatrix::StorageType product_storage_type,
-    const std::vector<InnerProductComputer::ProductTerm>& product_terms) {
-  const std::vector<Block>& col_blocks = m_.block_structure()->cols;
-
-  std::vector<int> row_block_nnz;
-  const int num_nonzeros = ComputeNonzeros(product_terms, &row_block_nnz);
-
-  result_ = CreateResultMatrix(product_storage_type, num_nonzeros);
-
-  // Populate the row non-zero counts in the result matrix.
-  int* crsm_rows = result_->mutable_rows();
-  crsm_rows[0] = 0;
-  for (int i = 0; i < col_blocks.size(); ++i) {
-    for (int j = 0; j < col_blocks[i].size; ++j, ++crsm_rows) {
-      *(crsm_rows + 1) = *crsm_rows + row_block_nnz[i];
-    }
-  }
-  result_offsets_.resize(product_terms.size());
-  if (num_nonzeros == 0) {
-    return;
-  }
-
-  // The following macro FILL_CRSM_COL_BLOCK is key to understanding
-  // how this class works.
-  //
-  // It does two things.
-  //
-  // Sets the value for the current term in the result_offsets_ array
-  // and populates the cols array of the result matrix.
-  //
-  // row_block and col_block as the names imply, refer to the row and
-  // column blocks of the current term.
-  //
-  // row_nnz is the number of nonzeros in the result_matrix at the
-  // beginning of the first row of row_block.
-  //
-  // col_nnz is the number of nonzeros in the first row of the row
-  // block that occur before the current column block, i.e. this is
-  // sum of the sizes of all the column blocks in this row block that
-  // came before this column block.
-  //
-  // Given these two numbers and the total number of nonzeros in this
-  // row (nnz_in_row), we can now populate the cols array as follows:
-  //
-  // nnz + j * nnz_in_row is the beginning of the j^th row.
-  //
-  // nnz + j * nnz_in_row + col_nnz is the beginning of the column
-  // block in the j^th row.
-  //
-  // nnz + j * nnz_in_row + col_nnz + k is then the j^th row and the
-  // k^th column of the product block, whose value is
-  //
-  // col_blocks[col_block].position + k, which is the column number of
-  // the k^th column of the current column block.
-#define FILL_CRSM_COL_BLOCK                                \
-  const int row_block = current->row;                      \
-  const int col_block = current->col;                      \
-  const int nnz_in_row = row_block_nnz[row_block];         \
-  int* crsm_cols = result_->mutable_cols();                \
-  result_offsets_[current->index] = nnz + col_nnz;         \
-  for (int j = 0; j < col_blocks[row_block].size; ++j) {   \
-    for (int k = 0; k < col_blocks[col_block].size; ++k) { \
-      crsm_cols[nnz + j * nnz_in_row + col_nnz + k] =      \
-          col_blocks[col_block].position + k;              \
-    }                                                      \
-  }
-
-  int col_nnz = 0;
-  int nnz = 0;
-
-  // Process the first term.
-  const InnerProductComputer::ProductTerm* current = product_terms.data();
-  FILL_CRSM_COL_BLOCK;
-
-  // Process the rest of the terms.
-  for (int i = 1; i < product_terms.size(); ++i) {
-    current = &product_terms[i];
-    const InnerProductComputer::ProductTerm* previous = &product_terms[i - 1];
-
-    // If the current term is the same as the previous term, then it
-    // stores its product at the same location as the previous term.
-    if (previous->row == current->row && previous->col == current->col) {
-      result_offsets_[current->index] = result_offsets_[previous->index];
-      continue;
-    }
-
-    if (previous->row == current->row) {
-      // if the current and previous terms are in the same row block,
-      // then they differ in the column block, in which case advance
-      // col_nnz by the column size of the previous term.
-      col_nnz += col_blocks[previous->col].size;
-    } else {
-      // If we have moved to a new row-block , then col_nnz is zero,
-      // and nnz is set to the beginning of the row block.
-      col_nnz = 0;
-      nnz += row_block_nnz[previous->row] * col_blocks[previous->row].size;
-    }
-
-    FILL_CRSM_COL_BLOCK;
-  }
-}
-
-// Use the results_offsets_ array to numerically compute the product
-// m' * m and store it in result_.
-//
-// TODO(sameeragarwal): Multithreading support.
-void InnerProductComputer::Compute() {
-  const double* m_values = m_.values();
-  const CompressedRowBlockStructure* bs = m_.block_structure();
-
-  const CompressedRowSparseMatrix::StorageType storage_type =
-      result_->storage_type();
-  result_->SetZero();
-  double* values = result_->mutable_values();
-  const int* rows = result_->rows();
-  int cursor = 0;
-
-  // Iterate row blocks.
-  for (int r = start_row_block_; r < end_row_block_; ++r) {
-    const CompressedRow& m_row = bs->rows[r];
-    for (int c1 = 0; c1 < m_row.cells.size(); ++c1) {
-      const Cell& cell1 = m_row.cells[c1];
-      const int c1_size = bs->cols[cell1.block_id].size;
-      const int row_nnz = rows[bs->cols[cell1.block_id].position + 1] -
-                          rows[bs->cols[cell1.block_id].position];
-
-      int c2_begin, c2_end;
-      if (storage_type ==
-          CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-        c2_begin = 0;
-        c2_end = c1 + 1;
-      } else {
-        c2_begin = c1;
-        c2_end = m_row.cells.size();
-      }
-
-      for (int c2 = c2_begin; c2 < c2_end; ++c2, ++cursor) {
-        const Cell& cell2 = m_row.cells[c2];
-        const int c2_size = bs->cols[cell2.block_id].size;
-        // clang-format off
-        MatrixTransposeMatrixMultiply<Eigen::Dynamic, Eigen::Dynamic,
-                                      Eigen::Dynamic, Eigen::Dynamic, 1>(
-                                          m_values + cell1.position,
-                                          m_row.block.size, c1_size,
-                                          m_values + cell2.position,
-                                          m_row.block.size, c2_size,
-                                          values + result_offsets_[cursor],
-                                          0, 0, c1_size, row_nnz);
-        // clang-format on
-      }
-    }
-  }
-
-  CHECK_EQ(cursor, result_offsets_.size());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/inner_product_computer.h b/third_party/ceres/internal/ceres/inner_product_computer.h
deleted file mode 100644
index c1c0a34..0000000
--- a/third_party/ceres/internal/ceres/inner_product_computer.h
+++ /dev/null
@@ -1,159 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_INNER_PRODUCT_COMPUTER_H_
-#define CERES_INTERNAL_INNER_PRODUCT_COMPUTER_H_
-
-#include <memory>
-#include <vector>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// This class is used to repeatedly compute the inner product
-//
-//   result = m' * m
-//
-// where the sparsity structure of m remains constant across calls.
-//
-// Upon creation, the class computes and caches information needed to
-// compute v, and then uses it to efficiently compute the product
-// every time InnerProductComputer::Compute is called.
-//
-// See sparse_normal_cholesky_solver.cc for example usage.
-//
-// Note that the result matrix is a block upper or lower-triangular
-// matrix, i.e., it will contain entries in the upper or lower
-// triangular part of the matrix corresponding to the block that occur
-// along its diagonal.
-//
-// This is not a problem as sparse linear algebra libraries can ignore
-// these entries with ease and the space used is minimal/linear in the
-// size of the matrices.
-class CERES_NO_EXPORT InnerProductComputer {
- public:
-  // Factory
-  //
-  // m is the input matrix
-  //
-  // Since m' * m is a symmetric matrix, we only compute half of the
-  // matrix and the value of storage_type which must be
-  // UPPER_TRIANGULAR or LOWER_TRIANGULAR determines which half is
-  // computed.
-  //
-  // The user must ensure that the matrix m is valid for the life time
-  // of this object.
-  static std::unique_ptr<InnerProductComputer> Create(
-      const BlockSparseMatrix& m,
-      CompressedRowSparseMatrix::StorageType storage_type);
-
-  // This factory method allows the user control over range of row
-  // blocks of m that should be used to compute the inner product.
-  //
-  // a = m(start_row_block : end_row_block, :);
-  // result = a' * a;
-  static std::unique_ptr<InnerProductComputer> Create(
-      const BlockSparseMatrix& m,
-      int start_row_block,
-      int end_row_block,
-      CompressedRowSparseMatrix::StorageType storage_type);
-
-  // Update result_ to be numerically equal to m' * m.
-  void Compute();
-
-  // Accessors for the result containing the inner product.
-  //
-  // Compute must be called before accessing this result for
-  // the first time.
-  const CompressedRowSparseMatrix& result() const { return *result_; }
-  CompressedRowSparseMatrix* mutable_result() const { return result_.get(); }
-
- private:
-  // A ProductTerm is a term in the block inner product of a matrix
-  // with itself.
-  struct ProductTerm {
-    ProductTerm(const int row, const int col, const int index)
-        : row(row), col(col), index(index) {}
-
-    bool operator<(const ProductTerm& right) const {
-      if (row == right.row) {
-        if (col == right.col) {
-          return index < right.index;
-        }
-        return col < right.col;
-      }
-      return row < right.row;
-    }
-
-    int row;
-    int col;
-    int index;
-  };
-
-  InnerProductComputer(const BlockSparseMatrix& m,
-                       int start_row_block,
-                       int end_row_block);
-
-  void Init(CompressedRowSparseMatrix::StorageType storage_type);
-
-  std::unique_ptr<CompressedRowSparseMatrix> CreateResultMatrix(
-      const CompressedRowSparseMatrix::StorageType storage_type,
-      int num_nonzeros);
-
-  int ComputeNonzeros(const std::vector<ProductTerm>& product_terms,
-                      std::vector<int>* row_block_nnz);
-
-  void ComputeOffsetsAndCreateResultMatrix(
-      const CompressedRowSparseMatrix::StorageType storage_type,
-      const std::vector<ProductTerm>& product_terms);
-
-  const BlockSparseMatrix& m_;
-  const int start_row_block_;
-  const int end_row_block_;
-  std::unique_ptr<CompressedRowSparseMatrix> result_;
-
-  // For each term in the inner product, result_offsets_ contains the
-  // location in the values array of the result_ matrix where it
-  // should be stored.
-  //
-  // This is the principal look up table that allows this class to
-  // compute the inner product fast.
-  std::vector<int> result_offsets_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_INNER_PRODUCT_COMPUTER_H_
diff --git a/third_party/ceres/internal/ceres/inner_product_computer_test.cc b/third_party/ceres/internal/ceres/inner_product_computer_test.cc
deleted file mode 100644
index 89fe518..0000000
--- a/third_party/ceres/internal/ceres/inner_product_computer_test.cc
+++ /dev/null
@@ -1,225 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/inner_product_computer.h"
-
-#include <memory>
-#include <numeric>
-#include <random>
-
-#include "Eigen/SparseCore"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-#define COMPUTE_AND_COMPARE                                                   \
-  {                                                                           \
-    inner_product_computer->Compute();                                        \
-    CompressedRowSparseMatrix* actual_product_crsm =                          \
-        inner_product_computer->mutable_result();                             \
-    Matrix actual_inner_product =                                             \
-        Eigen::Map<Eigen::SparseMatrix<double, Eigen::ColMajor>>(             \
-            actual_product_crsm->num_rows(),                                  \
-            actual_product_crsm->num_rows(),                                  \
-            actual_product_crsm->num_nonzeros(),                              \
-            actual_product_crsm->mutable_rows(),                              \
-            actual_product_crsm->mutable_cols(),                              \
-            actual_product_crsm->mutable_values());                           \
-    EXPECT_EQ(actual_inner_product.rows(), actual_inner_product.cols());      \
-    EXPECT_EQ(expected_inner_product.rows(), expected_inner_product.cols());  \
-    EXPECT_EQ(actual_inner_product.rows(), expected_inner_product.rows());    \
-    Matrix expected_t, actual_t;                                              \
-    if (actual_product_crsm->storage_type() ==                                \
-        CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {           \
-      expected_t = expected_inner_product.triangularView<Eigen::Upper>();     \
-      actual_t = actual_inner_product.triangularView<Eigen::Upper>();         \
-    } else {                                                                  \
-      expected_t = expected_inner_product.triangularView<Eigen::Lower>();     \
-      actual_t = actual_inner_product.triangularView<Eigen::Lower>();         \
-    }                                                                         \
-    EXPECT_LE((expected_t - actual_t).norm(),                                 \
-              100 * std::numeric_limits<double>::epsilon() * actual_t.norm()) \
-        << "expected: \n"                                                     \
-        << expected_t << "\nactual: \n"                                       \
-        << actual_t;                                                          \
-  }
-
-TEST(InnerProductComputer, NormalOperation) {
-  const int kMaxNumRowBlocks = 10;
-  const int kMaxNumColBlocks = 10;
-  const int kNumTrials = 10;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(0.01, 1.0);
-
-  // Create a random matrix, compute its outer product using Eigen and
-  // ComputeOuterProduct. Convert both matrices to dense matrices and
-  // compare their upper triangular parts.
-  for (int num_row_blocks = 1; num_row_blocks < kMaxNumRowBlocks;
-       ++num_row_blocks) {
-    for (int num_col_blocks = 1; num_col_blocks < kMaxNumColBlocks;
-         ++num_col_blocks) {
-      for (int trial = 0; trial < kNumTrials; ++trial) {
-        BlockSparseMatrix::RandomMatrixOptions options;
-        options.num_row_blocks = num_row_blocks;
-        options.num_col_blocks = num_col_blocks;
-        options.min_row_block_size = 1;
-        options.max_row_block_size = 5;
-        options.min_col_block_size = 1;
-        options.max_col_block_size = 10;
-        options.block_density = distribution(prng);
-
-        VLOG(2) << "num row blocks: " << options.num_row_blocks;
-        VLOG(2) << "num col blocks: " << options.num_col_blocks;
-        VLOG(2) << "min row block size: " << options.min_row_block_size;
-        VLOG(2) << "max row block size: " << options.max_row_block_size;
-        VLOG(2) << "min col block size: " << options.min_col_block_size;
-        VLOG(2) << "max col block size: " << options.max_col_block_size;
-        VLOG(2) << "block density: " << options.block_density;
-
-        std::unique_ptr<BlockSparseMatrix> random_matrix(
-            BlockSparseMatrix::CreateRandomMatrix(options, prng));
-
-        TripletSparseMatrix tsm(random_matrix->num_rows(),
-                                random_matrix->num_cols(),
-                                random_matrix->num_nonzeros());
-        random_matrix->ToTripletSparseMatrix(&tsm);
-        std::vector<Eigen::Triplet<double>> triplets;
-        for (int i = 0; i < tsm.num_nonzeros(); ++i) {
-          triplets.emplace_back(tsm.rows()[i], tsm.cols()[i], tsm.values()[i]);
-        }
-        Eigen::SparseMatrix<double> eigen_random_matrix(
-            random_matrix->num_rows(), random_matrix->num_cols());
-        eigen_random_matrix.setFromTriplets(triplets.begin(), triplets.end());
-        Matrix expected_inner_product =
-            eigen_random_matrix.transpose() * eigen_random_matrix;
-
-        std::unique_ptr<InnerProductComputer> inner_product_computer;
-
-        inner_product_computer = InnerProductComputer::Create(
-            *random_matrix,
-            CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR);
-        COMPUTE_AND_COMPARE;
-        inner_product_computer = InnerProductComputer::Create(
-            *random_matrix,
-            CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-        COMPUTE_AND_COMPARE;
-      }
-    }
-  }
-}
-
-TEST(InnerProductComputer, SubMatrix) {
-  const int kNumRowBlocks = 10;
-  const int kNumColBlocks = 20;
-  const int kNumTrials = 5;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(0.01, 1.0);
-
-  // Create a random matrix, compute its outer product using Eigen and
-  // ComputeInnerProductComputer. Convert both matrices to dense matrices and
-  // compare their upper triangular parts.
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    BlockSparseMatrix::RandomMatrixOptions options;
-    options.num_row_blocks = kNumRowBlocks;
-    options.num_col_blocks = kNumColBlocks;
-    options.min_row_block_size = 1;
-    options.max_row_block_size = 5;
-    options.min_col_block_size = 1;
-    options.max_col_block_size = 10;
-    options.block_density = distribution(prng);
-
-    VLOG(2) << "num row blocks: " << options.num_row_blocks;
-    VLOG(2) << "num col blocks: " << options.num_col_blocks;
-    VLOG(2) << "min row block size: " << options.min_row_block_size;
-    VLOG(2) << "max row block size: " << options.max_row_block_size;
-    VLOG(2) << "min col block size: " << options.min_col_block_size;
-    VLOG(2) << "max col block size: " << options.max_col_block_size;
-    VLOG(2) << "block density: " << options.block_density;
-
-    std::unique_ptr<BlockSparseMatrix> random_matrix(
-        BlockSparseMatrix::CreateRandomMatrix(options, prng));
-
-    const std::vector<CompressedRow>& row_blocks =
-        random_matrix->block_structure()->rows;
-    const int num_row_blocks = row_blocks.size();
-
-    for (int start_row_block = 0; start_row_block < num_row_blocks - 1;
-         ++start_row_block) {
-      for (int end_row_block = start_row_block + 1;
-           end_row_block < num_row_blocks;
-           ++end_row_block) {
-        const int start_row = row_blocks[start_row_block].block.position;
-        const int end_row = row_blocks[end_row_block].block.position;
-
-        TripletSparseMatrix tsm(random_matrix->num_rows(),
-                                random_matrix->num_cols(),
-                                random_matrix->num_nonzeros());
-        random_matrix->ToTripletSparseMatrix(&tsm);
-        std::vector<Eigen::Triplet<double>> triplets;
-        for (int i = 0; i < tsm.num_nonzeros(); ++i) {
-          if (tsm.rows()[i] >= start_row && tsm.rows()[i] < end_row) {
-            triplets.emplace_back(
-                tsm.rows()[i], tsm.cols()[i], tsm.values()[i]);
-          }
-        }
-
-        Eigen::SparseMatrix<double> eigen_random_matrix(
-            random_matrix->num_rows(), random_matrix->num_cols());
-        eigen_random_matrix.setFromTriplets(triplets.begin(), triplets.end());
-
-        Matrix expected_inner_product =
-            eigen_random_matrix.transpose() * eigen_random_matrix;
-
-        std::unique_ptr<InnerProductComputer> inner_product_computer;
-        inner_product_computer = InnerProductComputer::Create(
-            *random_matrix,
-            start_row_block,
-            end_row_block,
-            CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR);
-        COMPUTE_AND_COMPARE;
-        inner_product_computer = InnerProductComputer::Create(
-            *random_matrix,
-            start_row_block,
-            end_row_block,
-            CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-        COMPUTE_AND_COMPARE;
-      }
-    }
-  }
-}
-
-#undef COMPUTE_AND_COMPARE
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/integer_sequence_algorithm_test.cc b/third_party/ceres/internal/ceres/integer_sequence_algorithm_test.cc
deleted file mode 100644
index 9666375..0000000
--- a/third_party/ceres/internal/ceres/integer_sequence_algorithm_test.cc
+++ /dev/null
@@ -1,138 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: jodebo_beck@gmx.de (Johannes Beck)
-//         sergiu.deitsch@gmail.com (Sergiu Deitsch)
-
-#include "ceres/internal/integer_sequence_algorithm.h"
-
-#include <type_traits>
-#include <utility>
-
-#include "ceres/internal/jet_traits.h"
-
-namespace ceres::internal {
-
-// Unit tests for exclusive scan of integer sequence.
-static_assert(std::is_same<ExclusiveScan<std::integer_sequence<int>>,
-                           std::integer_sequence<int>>::value,
-              "Unit test of calculating the exclusive scan of an integer "
-              "sequence failed.");
-static_assert(std::is_same<ExclusiveScan<std::integer_sequence<int, 2>>,
-                           std::integer_sequence<int, 0>>::value,
-              "Unit test of calculating the exclusive scan of an integer "
-              "sequence failed.");
-static_assert(std::is_same<ExclusiveScan<std::integer_sequence<int, 2, 1>>,
-                           std::integer_sequence<int, 0, 2>>::value,
-              "Unit test of calculating the exclusive scan of an integer "
-              "sequence failed.");
-static_assert(std::is_same<ExclusiveScan<std::integer_sequence<int, 2, 1, 10>>,
-                           std::integer_sequence<int, 0, 2, 3>>::value,
-              "Unit test of calculating the exclusive scan of an integer "
-              "sequence failed.");
-
-using Ranks001 = Ranks_t<Jet<double, 0>, double, Jet<double, 1>>;
-using Ranks1 = Ranks_t<Jet<double, 1>>;
-using Ranks110 = Ranks_t<Jet<double, 1>, Jet<double, 1>, double>;
-using Ranks023 = Ranks_t<double, Jet<double, 2>, Jet<double, 3>>;
-using EmptyRanks = Ranks_t<>;
-
-// Remove zero from the ranks integer sequence
-using NonZeroRanks001 = RemoveValue_t<Ranks001, 0>;
-using NonZeroRanks1 = RemoveValue_t<Ranks1, 0>;
-using NonZeroRanks110 = RemoveValue_t<Ranks110, 0>;
-using NonZeroRanks023 = RemoveValue_t<Ranks023, 0>;
-
-static_assert(std::is_same<RemoveValue_t<EmptyRanks, 0>,
-                           std::integer_sequence<int>>::value,
-              "filtered sequence does not match an empty one");
-static_assert(std::is_same<RemoveValue_t<std::integer_sequence<int, 2, 2>, 2>,
-                           std::integer_sequence<int>>::value,
-              "filtered sequence does not match an empty one");
-static_assert(
-    std::is_same<RemoveValue_t<std::integer_sequence<int, 0, 0, 2>, 2>,
-                 std::integer_sequence<int, 0, 0>>::value,
-    "filtered sequence does not match the expected one");
-static_assert(
-    std::is_same<RemoveValue_t<std::make_integer_sequence<int, 6>, 7>,
-                 std::make_integer_sequence<int, 6>>::value,
-    "sequence not containing the element to remove must not be transformed");
-static_assert(
-    std::is_same<NonZeroRanks001, std::integer_sequence<int, 1>>::value,
-    "sequences do not match");
-static_assert(std::is_same<NonZeroRanks1, std::integer_sequence<int, 1>>::value,
-              "sequences do not match");
-static_assert(
-    std::is_same<NonZeroRanks110, std::integer_sequence<int, 1, 1>>::value,
-    "sequences do not match");
-static_assert(
-    std::is_same<NonZeroRanks023, std::integer_sequence<int, 2, 3>>::value,
-    "sequences do not match");
-static_assert(std::is_same<RemoveValue_t<std::integer_sequence<long>, -1>,
-                           std::integer_sequence<long>>::value,
-              "sequences do not match");
-static_assert(
-    std::is_same<RemoveValue_t<std::integer_sequence<short, -2, -3, -1>, -1>,
-                 std::integer_sequence<short, -2, -3>>::value,
-    "sequences do not match");
-
-using J = Jet<double, 2>;
-template <typename T>
-using J0 = Jet<T, 0>;
-using J0d = J0<double>;
-
-// Ensure all types match
-static_assert(AreAllSame_v<int, int>, "types must be the same");
-static_assert(AreAllSame_v<long, long, long>, "types must be the same");
-static_assert(AreAllSame_v<J0d, J0d, J0d>, "types must be the same");
-static_assert(!AreAllSame_v<double, int>, "types must not be the same");
-static_assert(!AreAllSame_v<int, short, char>, "types must not be the same");
-
-// Ensure all values in the integer sequence match
-static_assert(AreAllEqual_v<int, 1, 1>,
-              "integer sequence must contain same values");
-static_assert(AreAllEqual_v<long, 2>,
-              "integer sequence must contain one value");
-static_assert(!AreAllEqual_v<short, 3, 4>,
-              "integer sequence must not contain the same values");
-static_assert(!AreAllEqual_v<unsigned, 3, 4, 3>,
-              "integer sequence must not contain the same values");
-static_assert(!AreAllEqual_v<int, 4, 4, 3>,
-              "integer sequence must not contain the same values");
-
-static_assert(IsEmptyOrAreAllEqual_v<std::integer_sequence<short>>,
-              "expected empty sequence is not");
-static_assert(IsEmptyOrAreAllEqual_v<std::integer_sequence<unsigned, 7, 7, 7>>,
-              "expected all equal sequence is not");
-static_assert(IsEmptyOrAreAllEqual_v<std::integer_sequence<int, 1>>,
-              "expected all equal sequence is not");
-static_assert(
-    IsEmptyOrAreAllEqual_v<std::integer_sequence<long, 111, 111, 111, 111>>,
-    "expected all equal sequence is not");
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/invert_psd_matrix.h b/third_party/ceres/internal/ceres/invert_psd_matrix.h
deleted file mode 100644
index bc74900..0000000
--- a/third_party/ceres/internal/ceres/invert_psd_matrix.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_INVERT_PSD_MATRIX_H_
-#define CERES_INTERNAL_INVERT_PSD_MATRIX_H_
-
-#include "Eigen/Dense"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Helper routine to compute the inverse or pseudo-inverse of a
-// symmetric positive semi-definite matrix.
-//
-// assume_full_rank controls whether a Cholesky factorization or an
-// Singular Value Decomposition is used to compute the inverse and the
-// pseudo-inverse respectively.
-//
-// The template parameter kSize can either be Eigen::Dynamic or a
-// positive integer equal to the number of rows of m.
-template <int kSize>
-typename EigenTypes<kSize, kSize>::Matrix InvertPSDMatrix(
-    const bool assume_full_rank,
-    const typename EigenTypes<kSize, kSize>::Matrix& m) {
-  using MType = typename EigenTypes<kSize, kSize>::Matrix;
-  const int size = m.rows();
-
-  // If the matrix can be assumed to be full rank, then if it is small
-  // (< 5) and fixed size, use Eigen's optimized inverse()
-  // implementation.
-  //
-  // https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html#title3
-  if (assume_full_rank) {
-    if (kSize > 0 && kSize < 5) {
-      return m.inverse();
-    }
-    return m.template selfadjointView<Eigen::Upper>().llt().solve(
-        MType::Identity(size, size));
-  }
-
-  // For a thin SVD the number of columns of the matrix need to be dynamic.
-  using SVDMType = typename EigenTypes<kSize, Eigen::Dynamic>::Matrix;
-  Eigen::JacobiSVD<SVDMType> svd(m, Eigen::ComputeThinU | Eigen::ComputeThinV);
-  return svd.solve(MType::Identity(size, size));
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_INVERT_PSD_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/invert_psd_matrix_benchmark.cc b/third_party/ceres/internal/ceres/invert_psd_matrix_benchmark.cc
deleted file mode 100644
index 16c3671..0000000
--- a/third_party/ceres/internal/ceres/invert_psd_matrix_benchmark.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/invert_psd_matrix.h"
-
-namespace ceres::internal {
-
-template <int kSize>
-void BenchmarkFixedSizedInvertPSDMatrix(benchmark::State& state) {
-  using MatrixType = typename EigenTypes<kSize, kSize>::Matrix;
-  MatrixType input = MatrixType::Random();
-  input += input.transpose() + MatrixType::Identity();
-
-  MatrixType output;
-  constexpr bool kAssumeFullRank = true;
-  for (auto _ : state) {
-    benchmark::DoNotOptimize(
-        output = InvertPSDMatrix<kSize>(kAssumeFullRank, input));
-  }
-}
-
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 1);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 2);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 3);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 4);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 5);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 6);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 7);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 8);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 9);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 10);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 11);
-BENCHMARK_TEMPLATE(BenchmarkFixedSizedInvertPSDMatrix, 12);
-
-static void BenchmarkDynamicallyInvertPSDMatrix(benchmark::State& state) {
-  using MatrixType =
-      typename EigenTypes<Eigen::Dynamic, Eigen::Dynamic>::Matrix;
-  const int size = static_cast<int>(state.range(0));
-  MatrixType input = MatrixType::Random(size, size);
-  input += input.transpose() + MatrixType::Identity(size, size);
-
-  MatrixType output;
-  constexpr bool kAssumeFullRank = true;
-  for (auto _ : state) {
-    benchmark::DoNotOptimize(
-        output = InvertPSDMatrix<Eigen::Dynamic>(kAssumeFullRank, input));
-  }
-}
-
-BENCHMARK(BenchmarkDynamicallyInvertPSDMatrix)
-    ->Apply([](benchmark::internal::Benchmark* benchmark) {
-      for (int i = 1; i < 13; ++i) {
-        benchmark->Args({i});
-      }
-    });
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/invert_psd_matrix_test.cc b/third_party/ceres/internal/ceres/invert_psd_matrix_test.cc
deleted file mode 100644
index 22ec439..0000000
--- a/third_party/ceres/internal/ceres/invert_psd_matrix_test.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/invert_psd_matrix.h"
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-static constexpr bool kFullRank = true;
-static constexpr bool kRankDeficient = false;
-
-template <int kSize>
-typename EigenTypes<kSize, kSize>::Matrix RandomPSDMatrixWithEigenValues(
-    const typename EigenTypes<kSize>::Vector& eigenvalues) {
-  typename EigenTypes<kSize, kSize>::Matrix m(eigenvalues.rows(),
-                                              eigenvalues.rows());
-  m.setRandom();
-  Eigen::SelfAdjointEigenSolver<typename EigenTypes<kSize, kSize>::Matrix> es(
-      m);
-  return es.eigenvectors() * eigenvalues.asDiagonal() *
-         es.eigenvectors().transpose();
-}
-
-TEST(InvertPSDMatrix, Identity3x3) {
-  const Matrix m = Matrix::Identity(3, 3);
-  const Matrix inverse_m = InvertPSDMatrix<3>(kFullRank, m);
-  EXPECT_NEAR((inverse_m - m).norm() / m.norm(),
-              0.0,
-              std::numeric_limits<double>::epsilon());
-}
-
-TEST(InvertPSDMatrix, FullRank5x5) {
-  EigenTypes<5>::Vector eigenvalues;
-  eigenvalues.setRandom();
-  eigenvalues = eigenvalues.array().abs().matrix();
-  const Matrix m = RandomPSDMatrixWithEigenValues<5>(eigenvalues);
-  const Matrix inverse_m = InvertPSDMatrix<5>(kFullRank, m);
-  EXPECT_NEAR((m * inverse_m - Matrix::Identity(5, 5)).norm() / 5.0,
-              0.0,
-              10 * std::numeric_limits<double>::epsilon());
-}
-
-TEST(InvertPSDMatrix, RankDeficient5x5) {
-  EigenTypes<5>::Vector eigenvalues;
-  eigenvalues.setRandom();
-  eigenvalues = eigenvalues.array().abs().matrix();
-  eigenvalues(3) = 0.0;
-  const Matrix m = RandomPSDMatrixWithEigenValues<5>(eigenvalues);
-  const Matrix inverse_m = InvertPSDMatrix<5>(kRankDeficient, m);
-  Matrix pseudo_identity = Matrix::Identity(5, 5);
-  pseudo_identity(3, 3) = 0.0;
-  EXPECT_NEAR((m * inverse_m * m - m).norm() / m.norm(),
-              0.0,
-              10 * std::numeric_limits<double>::epsilon());
-}
-
-TEST(InvertPSDMatrix, DynamicFullRank5x5) {
-  EigenTypes<Eigen::Dynamic>::Vector eigenvalues(5);
-  eigenvalues.setRandom();
-  eigenvalues = eigenvalues.array().abs().matrix();
-  const Matrix m = RandomPSDMatrixWithEigenValues<Eigen::Dynamic>(eigenvalues);
-  const Matrix inverse_m = InvertPSDMatrix<Eigen::Dynamic>(kFullRank, m);
-  EXPECT_NEAR((m * inverse_m - Matrix::Identity(5, 5)).norm() / 5.0,
-              0.0,
-              10 * std::numeric_limits<double>::epsilon());
-}
-
-TEST(InvertPSDMatrix, DynamicRankDeficient5x5) {
-  EigenTypes<Eigen::Dynamic>::Vector eigenvalues(5);
-  eigenvalues.setRandom();
-  eigenvalues = eigenvalues.array().abs().matrix();
-  eigenvalues(3) = 0.0;
-  const Matrix m = RandomPSDMatrixWithEigenValues<Eigen::Dynamic>(eigenvalues);
-  const Matrix inverse_m = InvertPSDMatrix<Eigen::Dynamic>(kRankDeficient, m);
-  Matrix pseudo_identity = Matrix::Identity(5, 5);
-  pseudo_identity(3, 3) = 0.0;
-  EXPECT_NEAR((m * inverse_m * m - m).norm() / m.norm(),
-              0.0,
-              10 * std::numeric_limits<double>::epsilon());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/is_close.cc b/third_party/ceres/internal/ceres/is_close.cc
deleted file mode 100644
index 575918b..0000000
--- a/third_party/ceres/internal/ceres/is_close.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: keir@google.com (Keir Mierle), dgossow@google.com (David Gossow)
-
-#include "ceres/is_close.h"
-
-#include <algorithm>
-#include <cmath>
-
-namespace ceres::internal {
-bool IsClose(double x,
-             double y,
-             double relative_precision,
-             double* relative_error,
-             double* absolute_error) {
-  double local_absolute_error;
-  double local_relative_error;
-  if (!absolute_error) {
-    absolute_error = &local_absolute_error;
-  }
-  if (!relative_error) {
-    relative_error = &local_relative_error;
-  }
-  *absolute_error = std::fabs(x - y);
-  *relative_error = *absolute_error / std::max(std::fabs(x), std::fabs(y));
-  if (x == 0 || y == 0) {
-    // If x or y is exactly zero, then relative difference doesn't have any
-    // meaning. Take the absolute difference instead.
-    *relative_error = *absolute_error;
-  }
-  return *relative_error < std::fabs(relative_precision);
-}
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/is_close.h b/third_party/ceres/internal/ceres/is_close.h
deleted file mode 100644
index 1f6c82f..0000000
--- a/third_party/ceres/internal/ceres/is_close.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: keir@google.com (Keir Mierle), dgossow@google.com (David Gossow)
-//
-// Utility routine for comparing two values.
-
-#ifndef CERES_INTERNAL_IS_CLOSE_H_
-#define CERES_INTERNAL_IS_CLOSE_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-// Returns true if x and y have a relative (unsigned) difference less than
-// relative_precision and false otherwise. Stores the relative and absolute
-// difference in relative/absolute_error if non-nullptr. If one of the two
-// values is exactly zero, the absolute difference will be compared, and
-// relative_error will be set to the absolute difference.
-CERES_NO_EXPORT bool IsClose(double x,
-                             double y,
-                             double relative_precision,
-                             double* relative_error,
-                             double* absolute_error);
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_IS_CLOSE_H_
diff --git a/third_party/ceres/internal/ceres/is_close_test.cc b/third_party/ceres/internal/ceres/is_close_test.cc
deleted file mode 100644
index 7b071af..0000000
--- a/third_party/ceres/internal/ceres/is_close_test.cc
+++ /dev/null
@@ -1,176 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: dgossow@google.com (David Gossow)
-//
-// This file contains tests for the IsClose function.
-
-#include "ceres/is_close.h"
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-const double kTolerance = 1e-9;
-
-TEST(IsClose, BothParametersPositive) {
-  double relative_error = -1;
-  double absolute_error = -1;
-
-  // Test cases where both values are positive.
-  EXPECT_TRUE(IsClose(9.9, 10.0, 0.011, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(10.0, 9.9, 0.011, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-
-  EXPECT_FALSE(IsClose(9.9, 10.0, 0.009, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(10.0, 9.9, 0.009, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-}
-
-TEST(IsClose, BothParametersNegative) {
-  double relative_error = -1;
-  double absolute_error = -1;
-
-  // Test cases where both values are negative.
-  EXPECT_TRUE(IsClose(-9.9, -10.0, 0.011, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(-10.0, -9.9, 0.011, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-
-  EXPECT_FALSE(IsClose(-9.9, -10.0, 0.009, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(-10.0, -9.9, 0.009, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.01, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.1, kTolerance);
-}
-
-TEST(IsClose, ParametersHaveMixedSigns) {
-  double relative_error = -1;
-  double absolute_error = -1;
-
-  // Test cases with mixed signs.
-  EXPECT_FALSE(IsClose(-0.1, 0.1, 1.99, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 2.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.2, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(-0.1, 0.1, 2.01, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 2.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.2, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(0.1, -0.1, 1.99, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 2.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.2, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(0.1, -0.1, 2.01, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 2.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.2, kTolerance);
-}
-
-TEST(IsClose, OneParameterZero) {
-  double relative_error = -1;
-  double absolute_error = -1;
-
-  // Test cases where one of the values is zero.
-  EXPECT_TRUE(IsClose(0.0, 10.0, 10.1, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(10.0, 0.0, 10.1, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(0.0, -10.0, 10.1, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_TRUE(IsClose(-10.0, 0.0, 10.1, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-
-  EXPECT_FALSE(IsClose(0, 10.0, 9.9, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(10.0, 0.0, 9.9, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(0, -10.0, 9.9, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(-10.0, 0.0, 9.9, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 10.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 10.0, kTolerance);
-}
-
-TEST(IsClose, BothParametersZero) {
-  double relative_error = -1;
-  double absolute_error = -1;
-  EXPECT_TRUE(IsClose(0.0, 0.0, 0.1, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.0, kTolerance);
-  relative_error = -1;
-  absolute_error = -1;
-  EXPECT_FALSE(IsClose(0.0, 0.0, 0.0, &relative_error, &absolute_error));
-  EXPECT_NEAR(relative_error, 0.0, kTolerance);
-  EXPECT_NEAR(absolute_error, 0.0, kTolerance);
-}
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/iteration_callback.cc b/third_party/ceres/internal/ceres/iteration_callback.cc
deleted file mode 100644
index 0cec071..0000000
--- a/third_party/ceres/internal/ceres/iteration_callback.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/iteration_callback.h"
-
-namespace ceres {
-
-IterationCallback::~IterationCallback() = default;
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/iterative_refiner.cc b/third_party/ceres/internal/ceres/iterative_refiner.cc
deleted file mode 100644
index 54d48f3..0000000
--- a/third_party/ceres/internal/ceres/iterative_refiner.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/iterative_refiner.h"
-
-#include <string>
-
-#include "Eigen/Core"
-#include "ceres/dense_cholesky.h"
-#include "ceres/sparse_cholesky.h"
-#include "ceres/sparse_matrix.h"
-
-namespace ceres::internal {
-
-SparseIterativeRefiner::SparseIterativeRefiner(const int max_num_iterations)
-    : max_num_iterations_(max_num_iterations) {}
-
-SparseIterativeRefiner::~SparseIterativeRefiner() = default;
-
-void SparseIterativeRefiner::Allocate(int num_cols) {
-  residual_.resize(num_cols);
-  correction_.resize(num_cols);
-  lhs_x_solution_.resize(num_cols);
-}
-
-void SparseIterativeRefiner::Refine(const SparseMatrix& lhs,
-                                    const double* rhs_ptr,
-                                    SparseCholesky* cholesky,
-                                    double* solution_ptr) {
-  const int num_cols = lhs.num_cols();
-  Allocate(num_cols);
-  ConstVectorRef rhs(rhs_ptr, num_cols);
-  VectorRef solution(solution_ptr, num_cols);
-  std::string ignored_message;
-  for (int i = 0; i < max_num_iterations_; ++i) {
-    // residual = rhs - lhs * solution
-    lhs_x_solution_.setZero();
-    lhs.RightMultiplyAndAccumulate(solution_ptr, lhs_x_solution_.data());
-    residual_ = rhs - lhs_x_solution_;
-    // solution += lhs^-1 residual
-    cholesky->Solve(residual_.data(), correction_.data(), &ignored_message);
-    solution += correction_;
-  }
-};
-
-DenseIterativeRefiner::DenseIterativeRefiner(const int max_num_iterations)
-    : max_num_iterations_(max_num_iterations) {}
-
-DenseIterativeRefiner::~DenseIterativeRefiner() = default;
-
-void DenseIterativeRefiner::Allocate(int num_cols) {
-  residual_.resize(num_cols);
-  correction_.resize(num_cols);
-}
-
-void DenseIterativeRefiner::Refine(const int num_cols,
-                                   const double* lhs_ptr,
-                                   const double* rhs_ptr,
-                                   DenseCholesky* cholesky,
-                                   double* solution_ptr) {
-  Allocate(num_cols);
-  ConstMatrixRef lhs(lhs_ptr, num_cols, num_cols);
-  ConstVectorRef rhs(rhs_ptr, num_cols);
-  VectorRef solution(solution_ptr, num_cols);
-  std::string ignored_message;
-  for (int i = 0; i < max_num_iterations_; ++i) {
-    residual_ = rhs - lhs * solution;
-    // solution += lhs^-1 residual
-    cholesky->Solve(residual_.data(), correction_.data(), &ignored_message);
-    solution += correction_;
-  }
-};
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/iterative_refiner.h b/third_party/ceres/internal/ceres/iterative_refiner.h
deleted file mode 100644
index 6607268..0000000
--- a/third_party/ceres/internal/ceres/iterative_refiner.h
+++ /dev/null
@@ -1,129 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_ITERATIVE_REFINER_H_
-#define CERES_INTERNAL_ITERATIVE_REFINER_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-class DenseCholesky;
-class SparseCholesky;
-class SparseMatrix;
-
-// Iterative refinement
-// (https://en.wikipedia.org/wiki/Iterative_refinement) is the process
-// of improving the solution to a linear system, by using the
-// following iteration.
-//
-// r_i = b - Ax_i
-// Ad_i = r_i
-// x_{i+1} = x_i + d_i
-//
-// IterativeRefiner implements this process for Symmetric Positive
-// Definite linear systems.
-//
-// The above iterative loop is run until max_num_iterations is reached.
-class CERES_NO_EXPORT SparseIterativeRefiner {
- public:
-  // max_num_iterations is the number of refinement iterations to
-  // perform.
-  explicit SparseIterativeRefiner(int max_num_iterations);
-
-  // Needed for mocking.
-  virtual ~SparseIterativeRefiner();
-
-  // Given an initial estimate of the solution of lhs * x = rhs, use
-  // max_num_iterations rounds of iterative refinement to improve it.
-  //
-  // cholesky is assumed to contain an already computed factorization (or
-  // an approximation thereof) of lhs.
-  //
-  // solution is expected to contain a approximation to the solution
-  // to lhs * x = rhs. It can be zero.
-  //
-  // This method is virtual to facilitate mocking.
-  virtual void Refine(const SparseMatrix& lhs,
-                      const double* rhs,
-                      SparseCholesky* cholesky,
-                      double* solution);
-
- private:
-  void Allocate(int num_cols);
-
-  int max_num_iterations_;
-  Vector residual_;
-  Vector correction_;
-  Vector lhs_x_solution_;
-};
-
-class CERES_NO_EXPORT DenseIterativeRefiner {
- public:
-  // max_num_iterations is the number of refinement iterations to
-  // perform.
-  explicit DenseIterativeRefiner(int max_num_iterations);
-
-  // Needed for mocking.
-  virtual ~DenseIterativeRefiner();
-
-  // Given an initial estimate of the solution of lhs * x = rhs, use
-  // max_num_iterations rounds of iterative refinement to improve it.
-  //
-  // cholesky is assumed to contain an already computed factorization (or
-  // an approximation thereof) of lhs.
-  //
-  // solution is expected to contain a approximation to the solution
-  // to lhs * x = rhs. It can be zero.
-  //
-  // This method is virtual to facilitate mocking.
-  virtual void Refine(int num_cols,
-                      const double* lhs,
-                      const double* rhs,
-                      DenseCholesky* cholesky,
-                      double* solution);
-
- private:
-  void Allocate(int num_cols);
-
-  int max_num_iterations_;
-  Vector residual_;
-  Vector correction_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_ITERATIVE_REFINER_H_
diff --git a/third_party/ceres/internal/ceres/iterative_refiner_test.cc b/third_party/ceres/internal/ceres/iterative_refiner_test.cc
deleted file mode 100644
index 3b7bfd2..0000000
--- a/third_party/ceres/internal/ceres/iterative_refiner_test.cc
+++ /dev/null
@@ -1,253 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/iterative_refiner.h"
-
-#include <utility>
-
-#include "Eigen/Dense"
-#include "ceres/dense_cholesky.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/sparse_cholesky.h"
-#include "ceres/sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Macros to help us define virtual methods which we do not expect to
-// use/call in this test.
-#define DO_NOT_CALL \
-  { LOG(FATAL) << "DO NOT CALL"; }
-#define DO_NOT_CALL_WITH_RETURN(x) \
-  {                                \
-    LOG(FATAL) << "DO NOT CALL";   \
-    return x;                      \
-  }
-
-// A fake SparseMatrix, which uses an Eigen matrix to do the real work.
-class FakeSparseMatrix : public SparseMatrix {
- public:
-  explicit FakeSparseMatrix(Matrix m) : m_(std::move(m)) {}
-
-  // y += Ax
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final {
-    VectorRef(y, m_.cols()) += m_ * ConstVectorRef(x, m_.cols());
-  }
-  // y += A'x
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final {
-    // We will assume that this is a symmetric matrix.
-    RightMultiplyAndAccumulate(x, y);
-  }
-
-  double* mutable_values() final { return m_.data(); }
-  const double* values() const final { return m_.data(); }
-  int num_rows() const final { return m_.cols(); }
-  int num_cols() const final { return m_.cols(); }
-  int num_nonzeros() const final { return m_.cols() * m_.cols(); }
-
-  // The following methods are not needed for tests in this file.
-  void SquaredColumnNorm(double* x) const final DO_NOT_CALL;
-  void ScaleColumns(const double* scale) final DO_NOT_CALL;
-  void SetZero() final DO_NOT_CALL;
-  void ToDenseMatrix(Matrix* dense_matrix) const final DO_NOT_CALL;
-  void ToTextFile(FILE* file) const final DO_NOT_CALL;
-
- private:
-  Matrix m_;
-};
-
-// A fake SparseCholesky which uses Eigen's Cholesky factorization to
-// do the real work. The template parameter allows us to work in
-// doubles or floats, even though the source matrix is double.
-template <typename Scalar>
-class FakeSparseCholesky : public SparseCholesky {
- public:
-  explicit FakeSparseCholesky(const Matrix& lhs) { lhs_ = lhs.cast<Scalar>(); }
-
-  LinearSolverTerminationType Solve(const double* rhs_ptr,
-                                    double* solution_ptr,
-                                    std::string* message) final {
-    const int num_cols = lhs_.cols();
-    VectorRef solution(solution_ptr, num_cols);
-    ConstVectorRef rhs(rhs_ptr, num_cols);
-    auto llt = lhs_.llt();
-    CHECK_EQ(llt.info(), Eigen::Success);
-    solution = llt.solve(rhs.cast<Scalar>()).template cast<double>();
-    return LinearSolverTerminationType::SUCCESS;
-  }
-
-  // The following methods are not needed for tests in this file.
-  CompressedRowSparseMatrix::StorageType StorageType() const final
-      DO_NOT_CALL_WITH_RETURN(
-          CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) final
-      DO_NOT_CALL_WITH_RETURN(LinearSolverTerminationType::FAILURE);
-
- private:
-  Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> lhs_;
-};
-
-// A fake DenseCholesky which uses Eigen's Cholesky factorization to
-// do the real work. The template parameter allows us to work in
-// doubles or floats, even though the source matrix is double.
-template <typename Scalar>
-class FakeDenseCholesky : public DenseCholesky {
- public:
-  explicit FakeDenseCholesky(const Matrix& lhs) { lhs_ = lhs.cast<Scalar>(); }
-
-  LinearSolverTerminationType Solve(const double* rhs_ptr,
-                                    double* solution_ptr,
-                                    std::string* message) final {
-    const int num_cols = lhs_.cols();
-    VectorRef solution(solution_ptr, num_cols);
-    ConstVectorRef rhs(rhs_ptr, num_cols);
-    solution = lhs_.llt().solve(rhs.cast<Scalar>()).template cast<double>();
-    return LinearSolverTerminationType::SUCCESS;
-  }
-
-  LinearSolverTerminationType Factorize(int num_cols,
-                                        double* lhs,
-                                        std::string* message) final
-      DO_NOT_CALL_WITH_RETURN(LinearSolverTerminationType::FAILURE);
-
- private:
-  Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> lhs_;
-};
-
-#undef DO_NOT_CALL
-#undef DO_NOT_CALL_WITH_RETURN
-
-class SparseIterativeRefinerTest : public ::testing::Test {
- public:
-  void SetUp() override {
-    num_cols_ = 5;
-    max_num_iterations_ = 30;
-    Matrix m(num_cols_, num_cols_);
-    m.setRandom();
-    lhs_ = m * m.transpose();
-    solution_.resize(num_cols_);
-    solution_.setRandom();
-    rhs_ = lhs_ * solution_;
-  };
-
- protected:
-  int num_cols_;
-  int max_num_iterations_;
-  Matrix lhs_;
-  Vector rhs_, solution_;
-};
-
-TEST_F(SparseIterativeRefinerTest,
-       RandomSolutionWithExactFactorizationConverges) {
-  FakeSparseMatrix lhs(lhs_);
-  FakeSparseCholesky<double> sparse_cholesky(lhs_);
-  SparseIterativeRefiner refiner(max_num_iterations_);
-  Vector refined_solution(num_cols_);
-  refined_solution.setRandom();
-  refiner.Refine(lhs, rhs_.data(), &sparse_cholesky, refined_solution.data());
-  EXPECT_NEAR((lhs_ * refined_solution - rhs_).norm(),
-              0.0,
-              std::numeric_limits<double>::epsilon() * 10);
-}
-
-TEST_F(SparseIterativeRefinerTest,
-       RandomSolutionWithApproximationFactorizationConverges) {
-  FakeSparseMatrix lhs(lhs_);
-  // Use a single precision Cholesky factorization of the double
-  // precision matrix. This will give us an approximate factorization.
-  FakeSparseCholesky<float> sparse_cholesky(lhs_);
-  SparseIterativeRefiner refiner(max_num_iterations_);
-  Vector refined_solution(num_cols_);
-  refined_solution.setRandom();
-  refiner.Refine(lhs, rhs_.data(), &sparse_cholesky, refined_solution.data());
-  EXPECT_NEAR((lhs_ * refined_solution - rhs_).norm(),
-              0.0,
-              std::numeric_limits<double>::epsilon() * 10);
-}
-
-class DenseIterativeRefinerTest : public ::testing::Test {
- public:
-  void SetUp() override {
-    num_cols_ = 5;
-    max_num_iterations_ = 30;
-    Matrix m(num_cols_, num_cols_);
-    m.setRandom();
-    lhs_ = m * m.transpose();
-    solution_.resize(num_cols_);
-    solution_.setRandom();
-    rhs_ = lhs_ * solution_;
-  };
-
- protected:
-  int num_cols_;
-  int max_num_iterations_;
-  Matrix lhs_;
-  Vector rhs_, solution_;
-};
-
-TEST_F(DenseIterativeRefinerTest,
-       RandomSolutionWithExactFactorizationConverges) {
-  Matrix lhs = lhs_;
-  FakeDenseCholesky<double> dense_cholesky(lhs);
-  DenseIterativeRefiner refiner(max_num_iterations_);
-  Vector refined_solution(num_cols_);
-  refined_solution.setRandom();
-  refiner.Refine(lhs.cols(),
-                 lhs.data(),
-                 rhs_.data(),
-                 &dense_cholesky,
-                 refined_solution.data());
-  EXPECT_NEAR((lhs_ * refined_solution - rhs_).norm(),
-              0.0,
-              std::numeric_limits<double>::epsilon() * 10);
-}
-
-TEST_F(DenseIterativeRefinerTest,
-       RandomSolutionWithApproximationFactorizationConverges) {
-  Matrix lhs = lhs_;
-  // Use a single precision Cholesky factorization of the double
-  // precision matrix. This will give us an approximate factorization.
-  FakeDenseCholesky<float> dense_cholesky(lhs_);
-  DenseIterativeRefiner refiner(max_num_iterations_);
-  Vector refined_solution(num_cols_);
-  refined_solution.setRandom();
-  refiner.Refine(lhs.cols(),
-                 lhs.data(),
-                 rhs_.data(),
-                 &dense_cholesky,
-                 refined_solution.data());
-  EXPECT_NEAR((lhs_ * refined_solution - rhs_).norm(),
-              0.0,
-              std::numeric_limits<double>::epsilon() * 10);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc b/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc
deleted file mode 100644
index bcfb6e4..0000000
--- a/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc
+++ /dev/null
@@ -1,200 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/iterative_schur_complement_solver.h"
-
-#include <algorithm>
-#include <cstring>
-#include <utility>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/conjugate_gradients_solver.h"
-#include "ceres/detect_structure.h"
-#include "ceres/implicit_schur_complement.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/power_series_expansion_preconditioner.h"
-#include "ceres/preconditioner.h"
-#include "ceres/schur_jacobi_preconditioner.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "ceres/visibility_based_preconditioner.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-IterativeSchurComplementSolver::IterativeSchurComplementSolver(
-    LinearSolver::Options options)
-    : options_(std::move(options)) {}
-
-IterativeSchurComplementSolver::~IterativeSchurComplementSolver() = default;
-
-LinearSolver::Summary IterativeSchurComplementSolver::SolveImpl(
-    BlockSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("IterativeSchurComplementSolver::Solve");
-
-  CHECK(A->block_structure() != nullptr);
-  CHECK(A->transpose_block_structure() != nullptr);
-
-  const int num_eliminate_blocks = options_.elimination_groups[0];
-  // Initialize a ImplicitSchurComplement object.
-  if (schur_complement_ == nullptr) {
-    DetectStructure(*(A->block_structure()),
-                    num_eliminate_blocks,
-                    &options_.row_block_size,
-                    &options_.e_block_size,
-                    &options_.f_block_size);
-    schur_complement_ = std::make_unique<ImplicitSchurComplement>(options_);
-  }
-  schur_complement_->Init(*A, per_solve_options.D, b);
-
-  const int num_schur_complement_blocks =
-      A->block_structure()->cols.size() - num_eliminate_blocks;
-  if (num_schur_complement_blocks == 0) {
-    VLOG(2) << "No parameter blocks left in the schur complement.";
-    LinearSolver::Summary summary;
-    summary.num_iterations = 0;
-    summary.termination_type = LinearSolverTerminationType::SUCCESS;
-    schur_complement_->BackSubstitute(nullptr, x);
-    return summary;
-  }
-
-  // Initialize the solution to the Schur complement system.
-  reduced_linear_system_solution_.resize(schur_complement_->num_rows());
-  reduced_linear_system_solution_.setZero();
-  if (options_.use_spse_initialization) {
-    Preconditioner::Options preconditioner_options(options_);
-    preconditioner_options.type = SCHUR_POWER_SERIES_EXPANSION;
-    PowerSeriesExpansionPreconditioner pse_solver(
-        schur_complement_.get(),
-        options_.max_num_spse_iterations,
-        options_.spse_tolerance,
-        preconditioner_options);
-    pse_solver.RightMultiplyAndAccumulate(
-        schur_complement_->rhs().data(),
-        reduced_linear_system_solution_.data());
-  }
-
-  CreatePreconditioner(A);
-  if (preconditioner_ != nullptr) {
-    if (!preconditioner_->Update(*A, per_solve_options.D)) {
-      LinearSolver::Summary summary;
-      summary.num_iterations = 0;
-      summary.termination_type = LinearSolverTerminationType::FAILURE;
-      summary.message = "Preconditioner update failed.";
-      return summary;
-    }
-  }
-
-  ConjugateGradientsSolverOptions cg_options;
-  cg_options.min_num_iterations = options_.min_num_iterations;
-  cg_options.max_num_iterations = options_.max_num_iterations;
-  cg_options.residual_reset_period = options_.residual_reset_period;
-  cg_options.q_tolerance = per_solve_options.q_tolerance;
-  cg_options.r_tolerance = per_solve_options.r_tolerance;
-
-  LinearOperatorAdapter lhs(*schur_complement_);
-  LinearOperatorAdapter preconditioner(*preconditioner_);
-
-  Vector scratch[4];
-  for (int i = 0; i < 4; ++i) {
-    scratch[i].resize(schur_complement_->num_cols());
-  }
-  Vector* scratch_ptr[4] = {&scratch[0], &scratch[1], &scratch[2], &scratch[3]};
-
-  event_logger.AddEvent("Setup");
-
-  LinearSolver::Summary summary =
-      ConjugateGradientsSolver(cg_options,
-                               lhs,
-                               schur_complement_->rhs(),
-                               preconditioner,
-                               scratch_ptr,
-                               reduced_linear_system_solution_);
-
-  if (summary.termination_type != LinearSolverTerminationType::FAILURE &&
-      summary.termination_type != LinearSolverTerminationType::FATAL_ERROR) {
-    schur_complement_->BackSubstitute(reduced_linear_system_solution_.data(),
-                                      x);
-  }
-  event_logger.AddEvent("Solve");
-  return summary;
-}
-
-void IterativeSchurComplementSolver::CreatePreconditioner(
-    BlockSparseMatrix* A) {
-  if (preconditioner_ != nullptr) {
-    return;
-  }
-
-  Preconditioner::Options preconditioner_options(options_);
-  CHECK(options_.context != nullptr);
-
-  switch (options_.preconditioner_type) {
-    case IDENTITY:
-      preconditioner_ = std::make_unique<IdentityPreconditioner>(
-          schur_complement_->num_cols());
-      break;
-    case JACOBI:
-      preconditioner_ = std::make_unique<SparseMatrixPreconditionerWrapper>(
-          schur_complement_->block_diagonal_FtF_inverse(),
-          preconditioner_options);
-      break;
-    case SCHUR_POWER_SERIES_EXPANSION:
-      // Ignoring the value of spse_tolerance to ensure preconditioner stays
-      // fixed during the iterations of cg.
-      preconditioner_ = std::make_unique<PowerSeriesExpansionPreconditioner>(
-          schur_complement_.get(),
-          options_.max_num_spse_iterations,
-          0,
-          preconditioner_options);
-      break;
-    case SCHUR_JACOBI:
-      preconditioner_ = std::make_unique<SchurJacobiPreconditioner>(
-          *A->block_structure(), preconditioner_options);
-      break;
-    case CLUSTER_JACOBI:
-    case CLUSTER_TRIDIAGONAL:
-      preconditioner_ = std::make_unique<VisibilityBasedPreconditioner>(
-          *A->block_structure(), preconditioner_options);
-      break;
-    default:
-      LOG(FATAL) << "Unknown Preconditioner Type";
-  }
-};
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/iterative_schur_complement_solver.h b/third_party/ceres/internal/ceres/iterative_schur_complement_solver.h
deleted file mode 100644
index a4b6b53..0000000
--- a/third_party/ceres/internal/ceres/iterative_schur_complement_solver.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_ITERATIVE_SCHUR_COMPLEMENT_SOLVER_H_
-#define CERES_INTERNAL_ITERATIVE_SCHUR_COMPLEMENT_SOLVER_H_
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class BlockSparseMatrix;
-class ImplicitSchurComplement;
-class Preconditioner;
-
-// This class implements an iterative solver for the linear least
-// squares problems that have a bi-partite sparsity structure common
-// to Structure from Motion problems.
-//
-// The algorithm used by this solver was developed in a series of
-// papers - "Agarwal et al, Bundle Adjustment in the Large, ECCV 2010"
-// and "Wu et al, Multicore Bundle Adjustment, submitted to CVPR
-// 2011" at the University of Washington.
-//
-// The key idea is that one can run Conjugate Gradients on the Schur
-// Complement system without explicitly forming the Schur Complement
-// in memory. The heavy lifting for this is done by the
-// ImplicitSchurComplement class. Not forming the Schur complement in
-// memory and factoring it results in substantial savings in time and
-// memory. Further, iterative solvers like this open up the
-// possibility of solving the Newton equations in a non-linear solver
-// only approximately and terminating early, thereby saving even more
-// time.
-//
-// For the curious, running CG on the Schur complement is the same as
-// running CG on the Normal Equations with an SSOR preconditioner. For
-// a proof of this fact and others related to this solver please see
-// the section on Domain Decomposition Methods in Saad's book
-// "Iterative Methods for Sparse Linear Systems".
-class CERES_NO_EXPORT IterativeSchurComplementSolver final
-    : public BlockSparseMatrixSolver {
- public:
-  explicit IterativeSchurComplementSolver(LinearSolver::Options options);
-  IterativeSchurComplementSolver(const IterativeSchurComplementSolver&) =
-      delete;
-  void operator=(const IterativeSchurComplementSolver&) = delete;
-
-  ~IterativeSchurComplementSolver() override;
-
- private:
-  LinearSolver::Summary SolveImpl(BlockSparseMatrix* A,
-                                  const double* b,
-                                  const LinearSolver::PerSolveOptions& options,
-                                  double* x) final;
-
-  void CreatePreconditioner(BlockSparseMatrix* A);
-
-  LinearSolver::Options options_;
-  std::unique_ptr<internal::ImplicitSchurComplement> schur_complement_;
-  std::unique_ptr<Preconditioner> preconditioner_;
-  Vector reduced_linear_system_solution_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_ITERATIVE_SCHUR_COMPLEMENT_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/iterative_schur_complement_solver_test.cc b/third_party/ceres/internal/ceres/iterative_schur_complement_solver_test.cc
deleted file mode 100644
index c5d67de..0000000
--- a/third_party/ceres/internal/ceres/iterative_schur_complement_solver_test.cc
+++ /dev/null
@@ -1,153 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// TODO(sameeragarwal): Add support for larger, more complicated and
-// poorly conditioned problems both for correctness testing as well as
-// benchmarking.
-
-#include "ceres/iterative_schur_complement_solver.h"
-
-#include <cstddef>
-#include <memory>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_dense_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-using testing::AssertionResult;
-
-const double kEpsilon = 1e-14;
-
-class IterativeSchurComplementSolverTest : public ::testing::Test {
- protected:
-  void SetUpProblem(int problem_id) {
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(problem_id);
-
-    CHECK(problem != nullptr);
-    A_.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-    b_ = std::move(problem->b);
-    D_ = std::move(problem->D);
-
-    num_cols_ = A_->num_cols();
-    num_rows_ = A_->num_rows();
-    num_eliminate_blocks_ = problem->num_eliminate_blocks;
-  }
-
-  AssertionResult TestSolver(double* D,
-                             PreconditionerType preconditioner_type,
-                             bool use_spse_initialization) {
-    TripletSparseMatrix triplet_A(
-        A_->num_rows(), A_->num_cols(), A_->num_nonzeros());
-    A_->ToTripletSparseMatrix(&triplet_A);
-
-    DenseSparseMatrix dense_A(triplet_A);
-
-    LinearSolver::Options options;
-    options.type = DENSE_QR;
-    ContextImpl context;
-    options.context = &context;
-    std::unique_ptr<LinearSolver> qr(LinearSolver::Create(options));
-
-    LinearSolver::PerSolveOptions per_solve_options;
-    per_solve_options.D = D;
-    Vector reference_solution(num_cols_);
-    qr->Solve(&dense_A, b_.get(), per_solve_options, reference_solution.data());
-
-    options.elimination_groups.push_back(num_eliminate_blocks_);
-    options.elimination_groups.push_back(0);
-    options.max_num_iterations = num_cols_;
-    options.max_num_spse_iterations = 1;
-    options.use_spse_initialization = use_spse_initialization;
-    options.preconditioner_type = preconditioner_type;
-    IterativeSchurComplementSolver isc(options);
-
-    Vector isc_sol(num_cols_);
-    per_solve_options.r_tolerance = 1e-12;
-    isc.Solve(A_.get(), b_.get(), per_solve_options, isc_sol.data());
-    double diff = (isc_sol - reference_solution).norm();
-    if (diff < kEpsilon) {
-      return testing::AssertionSuccess();
-    } else {
-      return testing::AssertionFailure()
-             << "The reference solution differs from the ITERATIVE_SCHUR"
-             << " solution by " << diff << " which is more than " << kEpsilon;
-    }
-  }
-
-  int num_rows_;
-  int num_cols_;
-  int num_eliminate_blocks_;
-  std::unique_ptr<BlockSparseMatrix> A_;
-  std::unique_ptr<double[]> b_;
-  std::unique_ptr<double[]> D_;
-};
-
-TEST_F(IterativeSchurComplementSolverTest, NormalProblemSchurJacobi) {
-  SetUpProblem(2);
-  EXPECT_TRUE(TestSolver(nullptr, SCHUR_JACOBI, false));
-  EXPECT_TRUE(TestSolver(D_.get(), SCHUR_JACOBI, false));
-}
-
-TEST_F(IterativeSchurComplementSolverTest,
-       NormalProblemSchurJacobiWithPowerSeriesExpansionInitialization) {
-  SetUpProblem(2);
-  EXPECT_TRUE(TestSolver(nullptr, SCHUR_JACOBI, true));
-  EXPECT_TRUE(TestSolver(D_.get(), SCHUR_JACOBI, true));
-}
-
-TEST_F(IterativeSchurComplementSolverTest,
-       NormalProblemPowerSeriesExpansionPreconditioner) {
-  SetUpProblem(5);
-  EXPECT_TRUE(TestSolver(nullptr, SCHUR_POWER_SERIES_EXPANSION, false));
-  EXPECT_TRUE(TestSolver(D_.get(), SCHUR_POWER_SERIES_EXPANSION, false));
-}
-
-TEST_F(IterativeSchurComplementSolverTest, ProblemWithNoFBlocks) {
-  SetUpProblem(3);
-  EXPECT_TRUE(TestSolver(nullptr, SCHUR_JACOBI, false));
-  EXPECT_TRUE(TestSolver(D_.get(), SCHUR_JACOBI, false));
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/jet_operator_benchmark.cc b/third_party/ceres/internal/ceres/jet_operator_benchmark.cc
deleted file mode 100644
index 94b0308..0000000
--- a/third_party/ceres/internal/ceres/jet_operator_benchmark.cc
+++ /dev/null
@@ -1,289 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: alex@karatarakis.com (Alexander Karatarakis)
-
-#include <array>
-
-#include "benchmark/benchmark.h"
-#include "ceres/jet.h"
-
-namespace ceres {
-
-// Cycle the Jets to avoid caching effects in the benchmark.
-template <class JetType>
-class JetInputData {
-  using T = typename JetType::Scalar;
-  static constexpr std::size_t SIZE = 20;
-
- public:
-  JetInputData() {
-    for (int i = 0; i < static_cast<int>(SIZE); i++) {
-      const T ti = static_cast<T>(i + 1);
-
-      a_[i].a = T(1.1) * ti;
-      a_[i].v.setRandom();
-
-      b_[i].a = T(2.2) * ti;
-      b_[i].v.setRandom();
-
-      c_[i].a = T(3.3) * ti;
-      c_[i].v.setRandom();
-
-      d_[i].a = T(4.4) * ti;
-      d_[i].v.setRandom();
-
-      e_[i].a = T(5.5) * ti;
-      e_[i].v.setRandom();
-
-      scalar_a_[i] = T(1.1) * ti;
-      scalar_b_[i] = T(2.2) * ti;
-      scalar_c_[i] = T(3.3) * ti;
-      scalar_d_[i] = T(4.4) * ti;
-      scalar_e_[i] = T(5.5) * ti;
-    }
-  }
-
-  void advance() { index_ = (index_ + 1) % SIZE; }
-
-  const JetType& a() const { return a_[index_]; }
-  const JetType& b() const { return b_[index_]; }
-  const JetType& c() const { return c_[index_]; }
-  const JetType& d() const { return d_[index_]; }
-  const JetType& e() const { return e_[index_]; }
-  T scalar_a() const { return scalar_a_[index_]; }
-  T scalar_b() const { return scalar_b_[index_]; }
-  T scalar_c() const { return scalar_c_[index_]; }
-  T scalar_d() const { return scalar_d_[index_]; }
-  T scalar_e() const { return scalar_e_[index_]; }
-
- private:
-  std::size_t index_{0};
-  std::array<JetType, SIZE> a_{};
-  std::array<JetType, SIZE> b_{};
-  std::array<JetType, SIZE> c_{};
-  std::array<JetType, SIZE> d_{};
-  std::array<JetType, SIZE> e_{};
-  std::array<T, SIZE> scalar_a_;
-  std::array<T, SIZE> scalar_b_;
-  std::array<T, SIZE> scalar_c_;
-  std::array<T, SIZE> scalar_d_;
-  std::array<T, SIZE> scalar_e_;
-};
-
-template <std::size_t JET_SIZE, class Function>
-static void JetBenchmarkHelper(benchmark::State& state, const Function& func) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetInputData<JetType> data{};
-  JetType out{};
-  const int iterations = static_cast<int>(state.range(0));
-  for (auto _ : state) {
-    for (int i = 0; i < iterations; i++) {
-      func(data, out);
-      data.advance();
-    }
-  }
-  benchmark::DoNotOptimize(out);
-}
-
-template <std::size_t JET_SIZE>
-static void Addition(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out += +d.a() + d.b() + d.c() + d.d() + d.e();
-      });
-}
-BENCHMARK_TEMPLATE(Addition, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(Addition, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(Addition, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(Addition, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(Addition, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(Addition, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void AdditionScalar(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out +=
-            d.scalar_a() + d.scalar_b() + d.c() + d.scalar_d() + d.scalar_e();
-      });
-}
-BENCHMARK_TEMPLATE(AdditionScalar, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(AdditionScalar, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(AdditionScalar, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(AdditionScalar, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(AdditionScalar, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(AdditionScalar, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void Subtraction(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out -= -d.a() - d.b() - d.c() - d.d() - d.e();
-      });
-}
-BENCHMARK_TEMPLATE(Subtraction, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(Subtraction, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(Subtraction, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(Subtraction, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(Subtraction, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(Subtraction, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void SubtractionScalar(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out -=
-            -d.scalar_a() - d.scalar_b() - d.c() - d.scalar_d() - d.scalar_e();
-      });
-}
-BENCHMARK_TEMPLATE(SubtractionScalar, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(SubtractionScalar, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(SubtractionScalar, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(SubtractionScalar, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(SubtractionScalar, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(SubtractionScalar, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void Multiplication(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out *= d.a() * d.b() * d.c() * d.d() * d.e();
-      });
-}
-BENCHMARK_TEMPLATE(Multiplication, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(Multiplication, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(Multiplication, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(Multiplication, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(Multiplication, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(Multiplication, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void MultiplicationLeftScalar(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out += d.scalar_a() *
-               (d.scalar_b() * (d.scalar_c() * (d.scalar_d() * d.e())));
-      });
-}
-BENCHMARK_TEMPLATE(MultiplicationLeftScalar, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationLeftScalar, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationLeftScalar, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationLeftScalar, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationLeftScalar, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationLeftScalar, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void MultiplicationRightScalar(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out += (((d.a() * d.scalar_b()) * d.scalar_c()) * d.scalar_d()) *
-               d.scalar_e();
-      });
-}
-BENCHMARK_TEMPLATE(MultiplicationRightScalar, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationRightScalar, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationRightScalar, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationRightScalar, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationRightScalar, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplicationRightScalar, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void Division(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out /= d.a() / d.b() / d.c() / d.d() / d.e();
-      });
-}
-BENCHMARK_TEMPLATE(Division, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(Division, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(Division, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(Division, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(Division, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(Division, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void DivisionLeftScalar(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out += d.scalar_a() /
-               (d.scalar_b() / (d.scalar_c() / (d.scalar_d() / d.e())));
-      });
-}
-BENCHMARK_TEMPLATE(DivisionLeftScalar, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionLeftScalar, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionLeftScalar, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionLeftScalar, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionLeftScalar, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionLeftScalar, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void DivisionRightScalar(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out += (((d.a() / d.scalar_b()) / d.scalar_c()) / d.scalar_d()) /
-               d.scalar_e();
-      });
-}
-BENCHMARK_TEMPLATE(DivisionRightScalar, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionRightScalar, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionRightScalar, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionRightScalar, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionRightScalar, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(DivisionRightScalar, 200)->Arg(160);
-
-template <std::size_t JET_SIZE>
-static void MultiplyAndAdd(benchmark::State& state) {
-  using JetType = Jet<double, JET_SIZE>;
-  JetBenchmarkHelper<JET_SIZE>(
-      state, [](const JetInputData<JetType>& d, JetType& out) {
-        out += d.scalar_a() * d.a() + d.scalar_b() * d.b() +
-               d.scalar_c() * d.c() + d.scalar_d() * d.d() +
-               d.scalar_e() * d.e();
-      });
-}
-BENCHMARK_TEMPLATE(MultiplyAndAdd, 3)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplyAndAdd, 10)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplyAndAdd, 15)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplyAndAdd, 25)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplyAndAdd, 32)->Arg(1000);
-BENCHMARK_TEMPLATE(MultiplyAndAdd, 200)->Arg(160);
-
-}  // namespace ceres
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/jet_test.cc b/third_party/ceres/internal/ceres/jet_test.cc
deleted file mode 100644
index 7f67bd6..0000000
--- a/third_party/ceres/internal/ceres/jet_test.cc
+++ /dev/null
@@ -1,1399 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/jet.h"
-
-#include <Eigen/Dense>
-#include <algorithm>
-#include <cfenv>
-#include <cmath>
-
-#include "ceres/stringprintf.h"
-#include "ceres/test_util.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-// The floating-point environment access and modification is only meaningful
-// with the following pragma.
-#ifdef _MSC_VER
-#pragma float_control(precise, on, push)
-#pragma fenv_access(on)
-#elif !(defined(__ARM_ARCH) && __ARM_ARCH >= 8) && !defined(__MINGW32__)
-// NOTE: FENV_ACCESS cannot be set to ON when targeting arm(v8) and MinGW
-#pragma STDC FENV_ACCESS ON
-#else
-#define CERES_NO_FENV_ACCESS
-#endif
-
-namespace ceres::internal {
-
-namespace {
-
-constexpr double kE = 2.71828182845904523536;
-
-using J = Jet<double, 2>;
-// Don't care about the dual part for scalar part categorization and comparison
-// tests
-template <typename T>
-using J0 = Jet<T, 0>;
-using J0d = J0<double>;
-
-// Convenient shorthand for making a jet.
-J MakeJet(double a, double v0, double v1) {
-  J z;
-  z.a = a;
-  z.v[0] = v0;
-  z.v[1] = v1;
-  return z;
-}
-
-constexpr double kTolerance = 1e-13;
-
-// Stores the floating-point environment containing active floating-point
-// exceptions, rounding mode, etc., and restores it upon destruction.
-//
-// Useful for avoiding side-effects.
-class Fenv {
- public:
-  Fenv() { std::fegetenv(&e); }
-  ~Fenv() { std::fesetenv(&e); }
-
-  Fenv(const Fenv&) = delete;
-  Fenv& operator=(const Fenv&) = delete;
-
- private:
-  std::fenv_t e;
-};
-
-bool AreAlmostEqual(double x, double y, double max_abs_relative_difference) {
-  if (std::isnan(x) && std::isnan(y)) {
-    return true;
-  }
-
-  if (std::isinf(x) && std::isinf(y)) {
-    return (std::signbit(x) == std::signbit(y));
-  }
-
-  Fenv env;  // Do not leak floating-point exceptions to the caller
-  double absolute_difference = std::abs(x - y);
-  double relative_difference =
-      absolute_difference / std::max(std::abs(x), std::abs(y));
-
-  if (std::fpclassify(x) == FP_ZERO || std::fpclassify(y) == FP_ZERO) {
-    // If x or y is exactly zero, then relative difference doesn't have any
-    // meaning. Take the absolute difference instead.
-    relative_difference = absolute_difference;
-  }
-  return std::islessequal(relative_difference, max_abs_relative_difference);
-}
-
-MATCHER_P2(IsAlmostEqualToWithTolerance,
-           y,
-           tolerance,
-           "is almost equal to " + testing::PrintToString(y) +
-               " with tolerance " + testing::PrintToString(tolerance)) {
-  const bool result = (AreAlmostEqual(arg.a, y.a, tolerance) &&
-                       AreAlmostEqual(arg.v[0], y.v[0], tolerance) &&
-                       AreAlmostEqual(arg.v[1], y.v[1], tolerance));
-  if (!result) {
-    *result_listener << "\nexpected - actual : " << y - arg;
-  }
-  return result;
-}
-
-MATCHER_P(IsAlmostEqualTo, y, "") {
-  return ExplainMatchResult(
-      IsAlmostEqualToWithTolerance(y, kTolerance), arg, result_listener);
-}
-
-const double kStep = 1e-8;
-const double kNumericalTolerance = 1e-6;  // Numeric derivation is quite inexact
-
-// Differentiate using Jet and confirm results with numerical derivation.
-template <typename Function>
-void NumericalTest(const char* name, const Function& f, const double x) {
-  const double exact_dx = f(MakeJet(x, 1.0, 0.0)).v[0];
-  const double estimated_dx =
-      (f(J(x + kStep)).a - f(J(x - kStep)).a) / (2.0 * kStep);
-  VLOG(1) << name << "(" << x << "), exact dx: " << exact_dx
-          << ", estimated dx: " << estimated_dx;
-  ExpectClose(exact_dx, estimated_dx, kNumericalTolerance);
-}
-
-// Same as NumericalTest, but given a function taking two arguments.
-template <typename Function>
-void NumericalTest2(const char* name,
-                    const Function& f,
-                    const double x,
-                    const double y) {
-  const J exact_delta = f(MakeJet(x, 1.0, 0.0), MakeJet(y, 0.0, 1.0));
-  const double exact_dx = exact_delta.v[0];
-  const double exact_dy = exact_delta.v[1];
-
-  // Sanity check - these should be equivalent:
-  EXPECT_EQ(exact_dx, f(MakeJet(x, 1.0, 0.0), MakeJet(y, 0.0, 0.0)).v[0]);
-  EXPECT_EQ(exact_dx, f(MakeJet(x, 0.0, 1.0), MakeJet(y, 0.0, 0.0)).v[1]);
-  EXPECT_EQ(exact_dy, f(MakeJet(x, 0.0, 0.0), MakeJet(y, 1.0, 0.0)).v[0]);
-  EXPECT_EQ(exact_dy, f(MakeJet(x, 0.0, 0.0), MakeJet(y, 0.0, 1.0)).v[1]);
-
-  const double estimated_dx =
-      (f(J(x + kStep), J(y)).a - f(J(x - kStep), J(y)).a) / (2.0 * kStep);
-  const double estimated_dy =
-      (f(J(x), J(y + kStep)).a - f(J(x), J(y - kStep)).a) / (2.0 * kStep);
-  VLOG(1) << name << "(" << x << ", " << y << "), exact dx: " << exact_dx
-          << ", estimated dx: " << estimated_dx;
-  ExpectClose(exact_dx, estimated_dx, kNumericalTolerance);
-  VLOG(1) << name << "(" << x << ", " << y << "), exact dy: " << exact_dy
-          << ", estimated dy: " << estimated_dy;
-  ExpectClose(exact_dy, estimated_dy, kNumericalTolerance);
-}
-
-}  // namespace
-
-// Pick arbitrary values for x and y.
-const J x = MakeJet(2.3, -2.7, 1e-3);
-const J y = MakeJet(1.7, 0.5, 1e+2);
-const J z = MakeJet(1e-6, 1e-4, 1e-2);
-
-TEST(Jet, Elementary) {
-  EXPECT_THAT((x * y) / x, IsAlmostEqualTo(y));
-  EXPECT_THAT(sqrt(x * x), IsAlmostEqualTo(x));
-  EXPECT_THAT(sqrt(y) * sqrt(y), IsAlmostEqualTo(y));
-
-  NumericalTest("sqrt", sqrt<double, 2>, 0.00001);
-  NumericalTest("sqrt", sqrt<double, 2>, 1.0);
-
-  EXPECT_THAT(x + 1.0, IsAlmostEqualTo(1.0 + x));
-  {
-    J c = x;
-    c += 1.0;
-    EXPECT_THAT(c, IsAlmostEqualTo(1.0 + x));
-  }
-
-  EXPECT_THAT(-(x - 1.0), IsAlmostEqualTo(1.0 - x));
-  {
-    J c = x;
-    c -= 1.0;
-    EXPECT_THAT(c, IsAlmostEqualTo(x - 1.0));
-  }
-
-  EXPECT_THAT((x * 5.0) / 5.0, IsAlmostEqualTo((x / 5.0) * 5.0));
-  EXPECT_THAT((x * 5.0) / 5.0, IsAlmostEqualTo(x));
-  EXPECT_THAT((x / 5.0) * 5.0, IsAlmostEqualTo(x));
-
-  {
-    J c = x;
-    c /= 5.0;
-    J d = x;
-    d *= 5.0;
-    EXPECT_THAT(c, IsAlmostEqualTo(x / 5.0));
-    EXPECT_THAT(d, IsAlmostEqualTo(5.0 * x));
-  }
-
-  EXPECT_THAT(1.0 / (y / x), IsAlmostEqualTo(x / y));
-}
-
-TEST(Jet, Trigonometric) {
-  EXPECT_THAT(cos(2.0 * x), IsAlmostEqualTo(cos(x) * cos(x) - sin(x) * sin(x)));
-  EXPECT_THAT(sin(2.0 * x), IsAlmostEqualTo(2.0 * sin(x) * cos(x)));
-  EXPECT_THAT(sin(x) * sin(x) + cos(x) * cos(x), IsAlmostEqualTo(J(1.0)));
-
-  {
-    J t = MakeJet(0.7, -0.3, +1.5);
-    J r = MakeJet(2.3, 0.13, -2.4);
-    EXPECT_THAT(atan2(r * sin(t), r * cos(t)), IsAlmostEqualTo(t));
-  }
-
-  EXPECT_THAT(sin(x) / cos(x), IsAlmostEqualTo(tan(x)));
-  EXPECT_THAT(tan(atan(x)), IsAlmostEqualTo(x));
-
-  {
-    J a = MakeJet(0.1, -2.7, 1e-3);
-    EXPECT_THAT(cos(acos(a)), IsAlmostEqualTo(a));
-    EXPECT_THAT(acos(cos(a)), IsAlmostEqualTo(a));
-
-    J b = MakeJet(0.6, 0.5, 1e+2);
-    EXPECT_THAT(cos(acos(b)), IsAlmostEqualTo(b));
-    EXPECT_THAT(acos(cos(b)), IsAlmostEqualTo(b));
-  }
-
-  {
-    J a = MakeJet(0.1, -2.7, 1e-3);
-    EXPECT_THAT(sin(asin(a)), IsAlmostEqualTo(a));
-    EXPECT_THAT(asin(sin(a)), IsAlmostEqualTo(a));
-
-    J b = MakeJet(0.4, 0.5, 1e+2);
-    EXPECT_THAT(sin(asin(b)), IsAlmostEqualTo(b));
-    EXPECT_THAT(asin(sin(b)), IsAlmostEqualTo(b));
-  }
-}
-
-TEST(Jet, Hyperbolic) {
-  // cosh(x)*cosh(x) - sinh(x)*sinh(x) = 1
-  EXPECT_THAT(cosh(x) * cosh(x) - sinh(x) * sinh(x), IsAlmostEqualTo(J(1.0)));
-
-  // tanh(x + y) = (tanh(x) + tanh(y)) / (1 + tanh(x) tanh(y))
-  EXPECT_THAT(
-      tanh(x + y),
-      IsAlmostEqualTo((tanh(x) + tanh(y)) / (J(1.0) + tanh(x) * tanh(y))));
-}
-
-TEST(Jet, Abs) {
-  EXPECT_THAT(abs(-x * x), IsAlmostEqualTo(x * x));
-  EXPECT_THAT(abs(-x), IsAlmostEqualTo(sqrt(x * x)));
-
-  {
-    J a = MakeJet(-std::numeric_limits<double>::quiet_NaN(), 2.0, 4.0);
-    J b = abs(a);
-    EXPECT_TRUE(std::signbit(b.v[0]));
-    EXPECT_TRUE(std::signbit(b.v[1]));
-  }
-}
-
-#if defined(CERES_HAS_POSIX_BESSEL_FUNCTIONS) || \
-    defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-TEST(Jet, Bessel) {
-  J zero = J(0.0);
-  J z = MakeJet(0.1, -2.7, 1e-3);
-
-#ifdef CERES_HAS_POSIX_BESSEL_FUNCTIONS
-  EXPECT_THAT(BesselJ0(zero), IsAlmostEqualTo(J(1.0)));
-  EXPECT_THAT(BesselJ1(zero), IsAlmostEqualTo(zero));
-  EXPECT_THAT(BesselJn(2, zero), IsAlmostEqualTo(zero));
-  EXPECT_THAT(BesselJn(3, zero), IsAlmostEqualTo(zero));
-
-  EXPECT_THAT(BesselJ0(z), IsAlmostEqualTo(BesselJn(0, z)));
-  EXPECT_THAT(BesselJ1(z), IsAlmostEqualTo(BesselJn(1, z)));
-
-  // See formula http://dlmf.nist.gov/10.6.E1
-  EXPECT_THAT(BesselJ0(z) + BesselJn(2, z),
-              IsAlmostEqualTo((2.0 / z) * BesselJ1(z)));
-#endif  // CERES_HAS_POSIX_BESSEL_FUNCTIONS
-
-#ifdef CERES_HAS_CPP17_BESSEL_FUNCTIONS
-  EXPECT_THAT(cyl_bessel_j(0, zero), IsAlmostEqualTo(J(1.0)));
-  EXPECT_THAT(cyl_bessel_j(1, zero), IsAlmostEqualTo(zero));
-  EXPECT_THAT(cyl_bessel_j(2, zero), IsAlmostEqualTo(zero));
-  EXPECT_THAT(cyl_bessel_j(3, zero), IsAlmostEqualTo(zero));
-
-  EXPECT_THAT(cyl_bessel_j(0, z), IsAlmostEqualTo(BesselJn(0, z)));
-  EXPECT_THAT(cyl_bessel_j(1, z), IsAlmostEqualTo(BesselJn(1, z)));
-
-  // MSVC Bessel functions and their derivatives produce errors slightly above
-  // kTolerance. Provide an alternative variant with a relaxed threshold.
-  constexpr double kRelaxedTolerance = 10 * kTolerance;
-
-  // See formula http://dlmf.nist.gov/10.6.E1
-  EXPECT_THAT(cyl_bessel_j(0, z) + cyl_bessel_j(2, z),
-              IsAlmostEqualToWithTolerance((2.0 / z) * cyl_bessel_j(1, z),
-                                           kRelaxedTolerance));
-
-  // MSVC does not throw an exception on invalid first argument
-#ifndef _MSC_VER
-  EXPECT_THROW(cyl_bessel_j(-1, zero), std::domain_error);
-#endif  // defined(_MSC_VER)
-#endif  // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-}
-#endif  // defined(CERES_HAS_POSIX_BESSEL_FUNCTIONS) ||
-        // defined(CERES_HAS_CPP17_BESSEL_FUNCTIONS)
-
-TEST(Jet, Floor) {
-  {  // floor of a positive number works.
-    J a = MakeJet(0.1, -2.7, 1e-3);
-    J b = floor(a);
-    J expected = MakeJet(floor(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-
-  {  // floor of a negative number works.
-    J a = MakeJet(-1.1, -2.7, 1e-3);
-    J b = floor(a);
-    J expected = MakeJet(floor(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-
-  {  // floor of a positive number works.
-    J a = MakeJet(10.123, -2.7, 1e-3);
-    J b = floor(a);
-    J expected = MakeJet(floor(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-}
-
-TEST(Jet, Ceil) {
-  {  // ceil of a positive number works.
-    J a = MakeJet(0.1, -2.7, 1e-3);
-    J b = ceil(a);
-    J expected = MakeJet(ceil(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-
-  {  // ceil of a negative number works.
-    J a = MakeJet(-1.1, -2.7, 1e-3);
-    J b = ceil(a);
-    J expected = MakeJet(ceil(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-
-  {  // ceil of a positive number works.
-    J a = MakeJet(10.123, -2.7, 1e-3);
-    J b = ceil(a);
-    J expected = MakeJet(ceil(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-}
-
-TEST(Jet, Erf) {
-  {  // erf works.
-    J a = MakeJet(10.123, -2.7, 1e-3);
-    J b = erf(a);
-    J expected = MakeJet(erf(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-  NumericalTest("erf", erf<double, 2>, -1.0);
-  NumericalTest("erf", erf<double, 2>, 1e-5);
-  NumericalTest("erf", erf<double, 2>, 0.5);
-  NumericalTest("erf", erf<double, 2>, 100.0);
-}
-
-TEST(Jet, Erfc) {
-  {  // erfc works.
-    J a = MakeJet(10.123, -2.7, 1e-3);
-    J b = erfc(a);
-    J expected = MakeJet(erfc(a.a), 0.0, 0.0);
-    EXPECT_EQ(expected, b);
-  }
-  NumericalTest("erfc", erfc<double, 2>, -1.0);
-  NumericalTest("erfc", erfc<double, 2>, 1e-5);
-  NumericalTest("erfc", erfc<double, 2>, 0.5);
-  NumericalTest("erfc", erfc<double, 2>, 100.0);
-}
-
-TEST(Jet, Cbrt) {
-  EXPECT_THAT(cbrt(x * x * x), IsAlmostEqualTo(x));
-  EXPECT_THAT(cbrt(y) * cbrt(y) * cbrt(y), IsAlmostEqualTo(y));
-  EXPECT_THAT(cbrt(x), IsAlmostEqualTo(pow(x, 1.0 / 3.0)));
-
-  NumericalTest("cbrt", cbrt<double, 2>, -1.0);
-  NumericalTest("cbrt", cbrt<double, 2>, -1e-5);
-  NumericalTest("cbrt", cbrt<double, 2>, 1e-5);
-  NumericalTest("cbrt", cbrt<double, 2>, 1.0);
-}
-
-TEST(Jet, Log1p) {
-  EXPECT_THAT(log1p(expm1(x)), IsAlmostEqualTo(x));
-  EXPECT_THAT(log1p(x), IsAlmostEqualTo(log(J{1} + x)));
-
-  {  // log1p(x) does not loose precision for small x
-    J x = MakeJet(1e-16, 1e-8, 1e-4);
-    EXPECT_THAT(log1p(x),
-                IsAlmostEqualTo(MakeJet(9.9999999999999998e-17, 1e-8, 1e-4)));
-    // log(1 + x) collapses to 0
-    J v = log(J{1} + x);
-    EXPECT_TRUE(v.a == 0);
-  }
-}
-
-TEST(Jet, Expm1) {
-  EXPECT_THAT(expm1(log1p(x)), IsAlmostEqualTo(x));
-  EXPECT_THAT(expm1(x), IsAlmostEqualTo(exp(x) - 1.0));
-
-  {  // expm1(x) does not loose precision for small x
-    J x = MakeJet(9.9999999999999998e-17, 1e-8, 1e-4);
-    EXPECT_THAT(expm1(x), IsAlmostEqualTo(MakeJet(1e-16, 1e-8, 1e-4)));
-    // exp(x) - 1 collapses to 0
-    J v = exp(x) - J{1};
-    EXPECT_TRUE(v.a == 0);
-  }
-}
-
-TEST(Jet, Exp2) {
-  EXPECT_THAT(exp2(x), IsAlmostEqualTo(exp(x * log(2.0))));
-  NumericalTest("exp2", exp2<double, 2>, -1.0);
-  NumericalTest("exp2", exp2<double, 2>, -1e-5);
-  NumericalTest("exp2", exp2<double, 2>, -1e-200);
-  NumericalTest("exp2", exp2<double, 2>, 0.0);
-  NumericalTest("exp2", exp2<double, 2>, 1e-200);
-  NumericalTest("exp2", exp2<double, 2>, 1e-5);
-  NumericalTest("exp2", exp2<double, 2>, 1.0);
-}
-
-TEST(Jet, Log) { EXPECT_THAT(log(exp(x)), IsAlmostEqualTo(x)); }
-
-TEST(Jet, Log10) {
-  EXPECT_THAT(log10(x), IsAlmostEqualTo(log(x) / log(10)));
-  NumericalTest("log10", log10<double, 2>, 1e-5);
-  NumericalTest("log10", log10<double, 2>, 1.0);
-  NumericalTest("log10", log10<double, 2>, 98.76);
-}
-
-TEST(Jet, Log2) {
-  EXPECT_THAT(log2(x), IsAlmostEqualTo(log(x) / log(2)));
-  NumericalTest("log2", log2<double, 2>, 1e-5);
-  NumericalTest("log2", log2<double, 2>, 1.0);
-  NumericalTest("log2", log2<double, 2>, 100.0);
-}
-
-TEST(Jet, Norm) {
-  EXPECT_THAT(norm(x), IsAlmostEqualTo(x * x));
-  EXPECT_THAT(norm(-x), IsAlmostEqualTo(x * x));
-}
-
-TEST(Jet, Pow) {
-  EXPECT_THAT(pow(x, 1.0), IsAlmostEqualTo(x));
-  EXPECT_THAT(pow(x, MakeJet(1.0, 0.0, 0.0)), IsAlmostEqualTo(x));
-  EXPECT_THAT(pow(kE, log(x)), IsAlmostEqualTo(x));
-  EXPECT_THAT(pow(MakeJet(kE, 0., 0.), log(x)), IsAlmostEqualTo(x));
-  EXPECT_THAT(pow(x, y),
-              IsAlmostEqualTo(pow(MakeJet(kE, 0.0, 0.0), y * log(x))));
-
-  // Specially cases
-
-  // pow(0, y) == 0 for y > 1, with both arguments Jets.
-  EXPECT_THAT(pow(MakeJet(0, 1, 2), MakeJet(2, 3, 4)),
-              IsAlmostEqualTo(MakeJet(0, 0, 0)));
-
-  // pow(0, y) == 0 for y == 1, with both arguments Jets.
-  EXPECT_THAT(pow(MakeJet(0, 1, 2), MakeJet(1, 3, 4)),
-              IsAlmostEqualTo(MakeJet(0, 1, 2)));
-
-  // pow(0, <1) is not finite, with both arguments Jets.
-  {
-    for (int i = 1; i < 10; i++) {
-      J a = MakeJet(0, 1, 2);
-      J b = MakeJet(i * 0.1, 3, 4);  // b = 0.1 ... 0.9
-      J c = pow(a, b);
-      EXPECT_EQ(c.a, 0.0) << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[0]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[1]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    }
-
-    for (int i = -10; i < 0; i++) {
-      J a = MakeJet(0, 1, 2);
-      J b = MakeJet(i * 0.1, 3, 4);  // b = -1,-0.9 ... -0.1
-      J c = pow(a, b);
-      EXPECT_FALSE(isfinite(c.a))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[0]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[1]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    }
-
-    // The special case of 0^0 = 1 defined by the C standard.
-    {
-      J a = MakeJet(0, 1, 2);
-      J b = MakeJet(0, 3, 4);
-      J c = pow(a, b);
-      EXPECT_EQ(c.a, 1.0) << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[0]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[1]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    }
-  }
-
-  // pow(<0, b) is correct for integer b.
-  {
-    J a = MakeJet(-1.5, 3, 4);
-
-    // b integer:
-    for (int i = -10; i <= 10; i++) {
-      J b = MakeJet(i, 0, 5);
-      J c = pow(a, b);
-
-      EXPECT_TRUE(AreAlmostEqual(c.a, pow(-1.5, i), kTolerance))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_TRUE(isfinite(c.v[0]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_FALSE(isfinite(c.v[1]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_TRUE(
-          AreAlmostEqual(c.v[0], i * pow(-1.5, i - 1) * 3.0, kTolerance))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    }
-  }
-
-  // pow(<0, b) is correct for noninteger b.
-  {
-    J a = MakeJet(-1.5, 3, 4);
-    J b = MakeJet(-2.5, 0, 5);
-    J c = pow(a, b);
-    EXPECT_FALSE(isfinite(c.a))
-        << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    EXPECT_FALSE(isfinite(c.v[0]))
-        << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    EXPECT_FALSE(isfinite(c.v[1]))
-        << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-  }
-
-  // pow(0,y) == 0 for y == 2, with the second argument a Jet.
-  EXPECT_THAT(pow(0.0, MakeJet(2, 3, 4)), IsAlmostEqualTo(MakeJet(0, 0, 0)));
-
-  // pow(<0,y) is correct for integer y.
-  {
-    double a = -1.5;
-    for (int i = -10; i <= 10; i++) {
-      J b = MakeJet(i, 3, 0);
-      J c = pow(a, b);
-      ExpectClose(c.a, pow(-1.5, i), kTolerance);
-      EXPECT_FALSE(isfinite(c.v[0]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      EXPECT_TRUE(isfinite(c.v[1]))
-          << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-      ExpectClose(c.v[1], 0, kTolerance);
-    }
-  }
-
-  // pow(<0,y) is correct for noninteger y.
-  {
-    double a = -1.5;
-    J b = MakeJet(-3.14, 3, 0);
-    J c = pow(a, b);
-    EXPECT_FALSE(isfinite(c.a))
-        << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    EXPECT_FALSE(isfinite(c.v[0]))
-        << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-    EXPECT_FALSE(isfinite(c.v[1]))
-        << "\na: " << a << "\nb: " << b << "\na^b: " << c;
-  }
-}
-
-TEST(Jet, Hypot2) {
-  // Resolve the ambiguity between two and three argument hypot overloads
-  using Hypot2 = J(const J&, const J&);
-  auto* const hypot2 = static_cast<Hypot2*>(&hypot<double, 2>);
-
-  // clang-format off
-  NumericalTest2("hypot2", hypot2,  0.0,   1e-5);
-  NumericalTest2("hypot2", hypot2, -1e-5,  0.0);
-  NumericalTest2("hypot2", hypot2,  1e-5,  1e-5);
-  NumericalTest2("hypot2", hypot2,  0.0,   1.0);
-  NumericalTest2("hypot2", hypot2,  1e-3,  1.0);
-  NumericalTest2("hypot2", hypot2,  1e-3, -1.0);
-  NumericalTest2("hypot2", hypot2, -1e-3,  1.0);
-  NumericalTest2("hypot2", hypot2, -1e-3, -1.0);
-  NumericalTest2("hypot2", hypot2,  1.0,   2.0);
-  // clang-format on
-
-  J zero = MakeJet(0.0, 2.0, 3.14);
-  EXPECT_THAT(hypot(x, y), IsAlmostEqualTo(sqrt(x * x + y * y)));
-  EXPECT_THAT(hypot(x, x), IsAlmostEqualTo(sqrt(2.0) * abs(x)));
-
-  // The derivative is zero tangentially to the circle:
-  EXPECT_THAT(hypot(MakeJet(2.0, 1.0, 1.0), MakeJet(2.0, 1.0, -1.0)),
-              IsAlmostEqualTo(MakeJet(sqrt(8.0), std::sqrt(2.0), 0.0)));
-
-  EXPECT_THAT(hypot(zero, x), IsAlmostEqualTo(x));
-  EXPECT_THAT(hypot(y, zero), IsAlmostEqualTo(y));
-
-  // hypot(x, 0, 0) == x, even when x * x underflows:
-  EXPECT_EQ(
-      std::numeric_limits<double>::min() * std::numeric_limits<double>::min(),
-      0.0);  // Make sure it underflows
-  J tiny = MakeJet(std::numeric_limits<double>::min(), 2.0, 3.14);
-  EXPECT_THAT(hypot(tiny, J{0}), IsAlmostEqualTo(tiny));
-
-  // hypot(x, 0, 0) == x, even when x * x overflows:
-  EXPECT_EQ(
-      std::numeric_limits<double>::max() * std::numeric_limits<double>::max(),
-      std::numeric_limits<double>::infinity());
-  J huge = MakeJet(std::numeric_limits<double>::max(), 2.0, 3.14);
-  EXPECT_THAT(hypot(huge, J{0}), IsAlmostEqualTo(huge));
-}
-
-TEST(Jet, Hypot3) {
-  J zero = MakeJet(0.0, 2.0, 3.14);
-
-  // hypot(x, y, z) == sqrt(x^2 + y^2 + z^2)
-  EXPECT_THAT(hypot(x, y, z), IsAlmostEqualTo(sqrt(x * x + y * y + z * z)));
-
-  // hypot(x, x) == sqrt(3) * abs(x)
-  EXPECT_THAT(hypot(x, x, x), IsAlmostEqualTo(sqrt(3.0) * abs(x)));
-
-  // The derivative is zero tangentially to the circle:
-  EXPECT_THAT(hypot(MakeJet(2.0, 1.0, 1.0),
-                    MakeJet(2.0, 1.0, -1.0),
-                    MakeJet(2.0, -1.0, 0.0)),
-              IsAlmostEqualTo(MakeJet(sqrt(12.0), 1.0 / std::sqrt(3.0), 0.0)));
-
-  EXPECT_THAT(hypot(x, zero, zero), IsAlmostEqualTo(x));
-  EXPECT_THAT(hypot(zero, y, zero), IsAlmostEqualTo(y));
-  EXPECT_THAT(hypot(zero, zero, z), IsAlmostEqualTo(z));
-  EXPECT_THAT(hypot(x, y, z), IsAlmostEqualTo(hypot(hypot(x, y), z)));
-  EXPECT_THAT(hypot(x, y, z), IsAlmostEqualTo(hypot(x, hypot(y, z))));
-
-  // The following two tests are disabled because the three argument hypot is
-  // broken in the libc++ shipped with CLANG as of January 2022.
-
-#if !defined(_LIBCPP_VERSION)
-  // hypot(x, 0, 0) == x, even when x * x underflows:
-  EXPECT_EQ(
-      std::numeric_limits<double>::min() * std::numeric_limits<double>::min(),
-      0.0);  // Make sure it underflows
-  J tiny = MakeJet(std::numeric_limits<double>::min(), 2.0, 3.14);
-  EXPECT_THAT(hypot(tiny, J{0}, J{0}), IsAlmostEqualTo(tiny));
-
-  // hypot(x, 0, 0) == x, even when x * x overflows:
-  EXPECT_EQ(
-      std::numeric_limits<double>::max() * std::numeric_limits<double>::max(),
-      std::numeric_limits<double>::infinity());
-  J huge = MakeJet(std::numeric_limits<double>::max(), 2.0, 3.14);
-  EXPECT_THAT(hypot(huge, J{0}, J{0}), IsAlmostEqualTo(huge));
-#endif
-}
-
-#ifdef CERES_HAS_CPP20
-
-TEST(Jet, Lerp) {
-  EXPECT_THAT(lerp(x, y, J{0}), IsAlmostEqualTo(x));
-  EXPECT_THAT(lerp(x, y, J{1}), IsAlmostEqualTo(y));
-  EXPECT_THAT(lerp(x, x, J{1}), IsAlmostEqualTo(x));
-  EXPECT_THAT(lerp(y, y, J{0}), IsAlmostEqualTo(y));
-  EXPECT_THAT(lerp(x, y, J{0.5}), IsAlmostEqualTo((x + y) / J{2.0}));
-  EXPECT_THAT(lerp(x, y, J{2}), IsAlmostEqualTo(J{2.0} * y - x));
-  EXPECT_THAT(lerp(x, y, J{-2}), IsAlmostEqualTo(J{3.0} * x - J{2} * y));
-}
-
-TEST(Jet, Midpoint) {
-  EXPECT_THAT(midpoint(x, y), IsAlmostEqualTo((x + y) / J{2}));
-  EXPECT_THAT(midpoint(x, x), IsAlmostEqualTo(x));
-
-  {
-    // midpoint(x, y) = (x + y) / 2 while avoiding overflow
-    J x = MakeJet(std::numeric_limits<double>::min(), 1, 2);
-    J y = MakeJet(std::numeric_limits<double>::max(), 3, 4);
-    EXPECT_THAT(midpoint(x, y), IsAlmostEqualTo(x + (y - x) / J{2}));
-  }
-
-  {
-    // midpoint(x, x) = x while avoiding overflow
-    J x = MakeJet(std::numeric_limits<double>::max(),
-                  std::numeric_limits<double>::max(),
-                  std::numeric_limits<double>::max());
-    EXPECT_THAT(midpoint(x, x), IsAlmostEqualTo(x));
-  }
-
-  {  // midpoint does not overflow for very large values
-    constexpr double a = 0.75 * std::numeric_limits<double>::max();
-    J x = MakeJet(a, a, -a);
-    J y = MakeJet(a, a, a);
-    EXPECT_THAT(midpoint(x, y), IsAlmostEqualTo(MakeJet(a, a, 0)));
-  }
-}
-
-#endif  // defined(CERES_HAS_CPP20)
-
-TEST(Jet, Fma) {
-  J v = fma(x, y, z);
-  J w = x * y + z;
-  EXPECT_THAT(v, IsAlmostEqualTo(w));
-}
-
-TEST(Jet, FmaxJetWithJet) {
-  Fenv env;
-  // Clear all exceptions to ensure none are set by the following function
-  // calls.
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  EXPECT_THAT(fmax(x, y), IsAlmostEqualTo(x));
-  EXPECT_THAT(fmax(y, x), IsAlmostEqualTo(x));
-
-  // Average the Jets on equality (of scalar parts).
-  const J scalar_part_only_equal_to_x = J(x.a, 2 * x.v);
-  const J average = (x + scalar_part_only_equal_to_x) * 0.5;
-  EXPECT_THAT(fmax(x, scalar_part_only_equal_to_x), IsAlmostEqualTo(average));
-  EXPECT_THAT(fmax(scalar_part_only_equal_to_x, x), IsAlmostEqualTo(average));
-
-  // Follow convention of fmax(): treat NANs as missing values.
-  const J nan_scalar_part(std::numeric_limits<double>::quiet_NaN(), 2 * x.v);
-  EXPECT_THAT(fmax(x, nan_scalar_part), IsAlmostEqualTo(x));
-  EXPECT_THAT(fmax(nan_scalar_part, x), IsAlmostEqualTo(x));
-
-#ifndef CERES_NO_FENV_ACCESS
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-#endif
-}
-
-TEST(Jet, FmaxJetWithScalar) {
-  Fenv env;
-  // Clear all exceptions to ensure none are set by the following function
-  // calls.
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  EXPECT_THAT(fmax(x, y.a), IsAlmostEqualTo(x));
-  EXPECT_THAT(fmax(y.a, x), IsAlmostEqualTo(x));
-  EXPECT_THAT(fmax(y, x.a), IsAlmostEqualTo(J{x.a}));
-  EXPECT_THAT(fmax(x.a, y), IsAlmostEqualTo(J{x.a}));
-
-  // Average the Jet and scalar cast to a Jet on equality (of scalar parts).
-  const J average = (x + J{x.a}) * 0.5;
-  EXPECT_THAT(fmax(x, x.a), IsAlmostEqualTo(average));
-  EXPECT_THAT(fmax(x.a, x), IsAlmostEqualTo(average));
-
-  // Follow convention of fmax(): treat NANs as missing values.
-  EXPECT_THAT(fmax(x, std::numeric_limits<double>::quiet_NaN()),
-              IsAlmostEqualTo(x));
-  EXPECT_THAT(fmax(std::numeric_limits<double>::quiet_NaN(), x),
-              IsAlmostEqualTo(x));
-  const J nan_scalar_part(std::numeric_limits<double>::quiet_NaN(), 2 * x.v);
-  EXPECT_THAT(fmax(nan_scalar_part, x.a), IsAlmostEqualTo(J{x.a}));
-  EXPECT_THAT(fmax(x.a, nan_scalar_part), IsAlmostEqualTo(J{x.a}));
-
-#ifndef CERES_NO_FENV_ACCESS
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-#endif
-}
-
-TEST(Jet, FminJetWithJet) {
-  Fenv env;
-  // Clear all exceptions to ensure none are set by the following function
-  // calls.
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  EXPECT_THAT(fmin(x, y), IsAlmostEqualTo(y));
-  EXPECT_THAT(fmin(y, x), IsAlmostEqualTo(y));
-
-  // Average the Jets on equality (of scalar parts).
-  const J scalar_part_only_equal_to_x = J(x.a, 2 * x.v);
-  const J average = (x + scalar_part_only_equal_to_x) * 0.5;
-  EXPECT_THAT(fmin(x, scalar_part_only_equal_to_x), IsAlmostEqualTo(average));
-  EXPECT_THAT(fmin(scalar_part_only_equal_to_x, x), IsAlmostEqualTo(average));
-
-  // Follow convention of fmin(): treat NANs as missing values.
-  const J nan_scalar_part(std::numeric_limits<double>::quiet_NaN(), 2 * x.v);
-  EXPECT_THAT(fmin(x, nan_scalar_part), IsAlmostEqualTo(x));
-  EXPECT_THAT(fmin(nan_scalar_part, x), IsAlmostEqualTo(x));
-
-#ifndef CERES_NO_FENV_ACCESS
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-#endif
-}
-
-TEST(Jet, FminJetWithScalar) {
-  Fenv env;
-  // Clear all exceptions to ensure none are set by the following function
-  // calls.
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  EXPECT_THAT(fmin(x, y.a), IsAlmostEqualTo(J{y.a}));
-  EXPECT_THAT(fmin(y.a, x), IsAlmostEqualTo(J{y.a}));
-  EXPECT_THAT(fmin(y, x.a), IsAlmostEqualTo(y));
-  EXPECT_THAT(fmin(x.a, y), IsAlmostEqualTo(y));
-
-  // Average the Jet and scalar cast to a Jet on equality (of scalar parts).
-  const J average = (x + J{x.a}) * 0.5;
-  EXPECT_THAT(fmin(x, x.a), IsAlmostEqualTo(average));
-  EXPECT_THAT(fmin(x.a, x), IsAlmostEqualTo(average));
-
-  // Follow convention of fmin(): treat NANs as missing values.
-  EXPECT_THAT(fmin(x, std::numeric_limits<double>::quiet_NaN()),
-              IsAlmostEqualTo(x));
-  EXPECT_THAT(fmin(std::numeric_limits<double>::quiet_NaN(), x),
-              IsAlmostEqualTo(x));
-  const J nan_scalar_part(std::numeric_limits<double>::quiet_NaN(), 2 * x.v);
-  EXPECT_THAT(fmin(nan_scalar_part, x.a), IsAlmostEqualTo(J{x.a}));
-  EXPECT_THAT(fmin(x.a, nan_scalar_part), IsAlmostEqualTo(J{x.a}));
-
-#ifndef CERES_NO_FENV_ACCESS
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-#endif
-}
-
-TEST(Jet, Fdim) {
-  Fenv env;
-  // Clear all exceptions to ensure none are set by the following function
-  // calls.
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  const J zero{};
-  const J diff = x - y;
-  const J diffx = x - J{y.a};
-  const J diffy = J{x.a} - y;
-
-  EXPECT_THAT(fdim(x, y), IsAlmostEqualTo(diff));
-  EXPECT_THAT(fdim(y, x), IsAlmostEqualTo(zero));
-  EXPECT_THAT(fdim(x, y.a), IsAlmostEqualTo(diffx));
-  EXPECT_THAT(fdim(y.a, x), IsAlmostEqualTo(J{zero.a}));
-  EXPECT_THAT(fdim(x.a, y), IsAlmostEqualTo(diffy));
-  EXPECT_THAT(fdim(y, x.a), IsAlmostEqualTo(zero));
-  EXPECT_TRUE(isnan(fdim(x, std::numeric_limits<J>::quiet_NaN())));
-  EXPECT_TRUE(isnan(fdim(std::numeric_limits<J>::quiet_NaN(), x)));
-  EXPECT_TRUE(isnan(fdim(x, std::numeric_limits<double>::quiet_NaN())));
-  EXPECT_TRUE(isnan(fdim(std::numeric_limits<double>::quiet_NaN(), x)));
-
-#ifndef CERES_NO_FENV_ACCESS
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-#endif
-}
-
-TEST(Jet, CopySign) {
-  {  // copysign(x, +1)
-    J z = copysign(x, J{+1});
-    EXPECT_THAT(z, IsAlmostEqualTo(x));
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(x, -1)
-    J z = copysign(x, J{-1});
-    EXPECT_THAT(z, IsAlmostEqualTo(-x));
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(-x, +1)
-
-    J z = copysign(-x, J{+1});
-    EXPECT_THAT(z, IsAlmostEqualTo(x));
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(-x, -1)
-    J z = copysign(-x, J{-1});
-    EXPECT_THAT(z, IsAlmostEqualTo(-x));
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(-0, +1)
-    J z = copysign(MakeJet(-0, 1, 2), J{+1});
-    EXPECT_THAT(z, IsAlmostEqualTo(MakeJet(+0, 1, 2)));
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(-0, -1)
-    J z = copysign(MakeJet(-0, 1, 2), J{-1});
-    EXPECT_THAT(z, IsAlmostEqualTo(MakeJet(-0, -1, -2)));
-    EXPECT_TRUE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(+0, -1)
-    J z = copysign(MakeJet(+0, 1, 2), J{-1});
-    EXPECT_THAT(z, IsAlmostEqualTo(MakeJet(-0, -1, -2)));
-    EXPECT_TRUE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(+0, +1)
-    J z = copysign(MakeJet(+0, 1, 2), J{+1});
-    EXPECT_THAT(z, IsAlmostEqualTo(MakeJet(+0, 1, 2)));
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isfinite(z.v[0])) << z;
-    EXPECT_TRUE(isfinite(z.v[1])) << z;
-  }
-  {  // copysign(+0, +0)
-    J z = copysign(MakeJet(+0, 1, 2), J{+0});
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isnan(z.v[0])) << z;
-    EXPECT_TRUE(isnan(z.v[1])) << z;
-  }
-  {  // copysign(+0, -0)
-    J z = copysign(MakeJet(+0, 1, 2), J{-0});
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isnan(z.v[0])) << z;
-    EXPECT_TRUE(isnan(z.v[1])) << z;
-  }
-  {  // copysign(-0, +0)
-    J z = copysign(MakeJet(-0, 1, 2), J{+0});
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isnan(z.v[0])) << z;
-    EXPECT_TRUE(isnan(z.v[1])) << z;
-  }
-  {  // copysign(-0, -0)
-    J z = copysign(MakeJet(-0, 1, 2), J{-0});
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(isnan(z.v[0])) << z;
-    EXPECT_TRUE(isnan(z.v[1])) << z;
-  }
-  {  // copysign(1, -nan)
-    J z = copysign(MakeJet(1, 2, 3),
-                   -J{std::numeric_limits<double>::quiet_NaN()});
-    EXPECT_TRUE(std::signbit(z.a)) << z;
-    EXPECT_TRUE(std::signbit(z.v[0])) << z;
-    EXPECT_TRUE(std::signbit(z.v[1])) << z;
-    EXPECT_FALSE(isnan(z.v[0])) << z;
-    EXPECT_FALSE(isnan(z.v[1])) << z;
-  }
-  {  // copysign(1, +nan)
-    J z = copysign(MakeJet(1, 2, 3),
-                   +J{std::numeric_limits<double>::quiet_NaN()});
-    EXPECT_FALSE(std::signbit(z.a)) << z;
-    EXPECT_FALSE(std::signbit(z.v[0])) << z;
-    EXPECT_FALSE(std::signbit(z.v[1])) << z;
-    EXPECT_FALSE(isnan(z.v[0])) << z;
-    EXPECT_FALSE(isnan(z.v[1])) << z;
-  }
-}
-
-TEST(Jet, JetsInEigenMatrices) {
-  J x = MakeJet(2.3, -2.7, 1e-3);
-  J y = MakeJet(1.7, 0.5, 1e+2);
-  J z = MakeJet(5.3, -4.7, 1e-3);
-  J w = MakeJet(9.7, 1.5, 10.1);
-
-  Eigen::Matrix<J, 2, 2> M;
-  Eigen::Matrix<J, 2, 1> v, r1, r2;
-
-  M << x, y, z, w;
-  v << x, z;
-
-  // M * v == (v^T * M^T)^T
-  r1 = M * v;
-  r2 = (v.transpose() * M.transpose()).transpose();
-
-  EXPECT_THAT(r1(0), IsAlmostEqualTo(r2(0)));
-  EXPECT_THAT(r1(1), IsAlmostEqualTo(r2(1)));
-}
-
-TEST(Jet, ScalarComparison) {
-  Jet<double, 1> zero{0.0};
-  zero.v << std::numeric_limits<double>::infinity();
-
-  Jet<double, 1> one{1.0};
-  one.v << std::numeric_limits<double>::quiet_NaN();
-
-  Jet<double, 1> two{2.0};
-  two.v << std::numeric_limits<double>::min() / 2;
-
-  Jet<double, 1> three{3.0};
-
-  auto inf = std::numeric_limits<Jet<double, 1>>::infinity();
-  auto nan = std::numeric_limits<Jet<double, 1>>::quiet_NaN();
-  inf.v << 1.2;
-  nan.v << 3.4;
-
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  EXPECT_FALSE(islessgreater(zero, zero));
-  EXPECT_FALSE(islessgreater(zero, zero.a));
-  EXPECT_FALSE(islessgreater(zero.a, zero));
-
-  EXPECT_TRUE(isgreaterequal(three, three));
-  EXPECT_TRUE(isgreaterequal(three, three.a));
-  EXPECT_TRUE(isgreaterequal(three.a, three));
-
-  EXPECT_TRUE(isgreater(three, two));
-  EXPECT_TRUE(isgreater(three, two.a));
-  EXPECT_TRUE(isgreater(three.a, two));
-
-  EXPECT_TRUE(islessequal(one, one));
-  EXPECT_TRUE(islessequal(one, one.a));
-  EXPECT_TRUE(islessequal(one.a, one));
-
-  EXPECT_TRUE(isless(one, two));
-  EXPECT_TRUE(isless(one, two.a));
-  EXPECT_TRUE(isless(one.a, two));
-
-  EXPECT_FALSE(isunordered(inf, one));
-  EXPECT_FALSE(isunordered(inf, one.a));
-  EXPECT_FALSE(isunordered(inf.a, one));
-
-  EXPECT_TRUE(isunordered(nan, two));
-  EXPECT_TRUE(isunordered(nan, two.a));
-  EXPECT_TRUE(isunordered(nan.a, two));
-
-  EXPECT_TRUE(isunordered(inf, nan));
-  EXPECT_TRUE(isunordered(inf, nan.a));
-  EXPECT_TRUE(isunordered(inf.a, nan.a));
-
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-}
-
-TEST(Jet, Nested2XScalarComparison) {
-  Jet<J0d, 1> zero{J0d{0.0}};
-  zero.v << std::numeric_limits<J0d>::infinity();
-
-  Jet<J0d, 1> one{J0d{1.0}};
-  one.v << std::numeric_limits<J0d>::quiet_NaN();
-
-  Jet<J0d, 1> two{J0d{2.0}};
-  two.v << std::numeric_limits<J0d>::min() / J0d{2};
-
-  Jet<J0d, 1> three{J0d{3.0}};
-
-  auto inf = std::numeric_limits<Jet<J0d, 1>>::infinity();
-  auto nan = std::numeric_limits<Jet<J0d, 1>>::quiet_NaN();
-  inf.v << J0d{1.2};
-  nan.v << J0d{3.4};
-
-  std::feclearexcept(FE_ALL_EXCEPT);
-
-  EXPECT_FALSE(islessgreater(zero, zero));
-  EXPECT_FALSE(islessgreater(zero, zero.a));
-  EXPECT_FALSE(islessgreater(zero.a, zero));
-  EXPECT_FALSE(islessgreater(zero, zero.a.a));
-  EXPECT_FALSE(islessgreater(zero.a.a, zero));
-
-  EXPECT_TRUE(isgreaterequal(three, three));
-  EXPECT_TRUE(isgreaterequal(three, three.a));
-  EXPECT_TRUE(isgreaterequal(three.a, three));
-  EXPECT_TRUE(isgreaterequal(three, three.a.a));
-  EXPECT_TRUE(isgreaterequal(three.a.a, three));
-
-  EXPECT_TRUE(isgreater(three, two));
-  EXPECT_TRUE(isgreater(three, two.a));
-  EXPECT_TRUE(isgreater(three.a, two));
-  EXPECT_TRUE(isgreater(three, two.a.a));
-  EXPECT_TRUE(isgreater(three.a.a, two));
-
-  EXPECT_TRUE(islessequal(one, one));
-  EXPECT_TRUE(islessequal(one, one.a));
-  EXPECT_TRUE(islessequal(one.a, one));
-  EXPECT_TRUE(islessequal(one, one.a.a));
-  EXPECT_TRUE(islessequal(one.a.a, one));
-
-  EXPECT_TRUE(isless(one, two));
-  EXPECT_TRUE(isless(one, two.a));
-  EXPECT_TRUE(isless(one.a, two));
-  EXPECT_TRUE(isless(one, two.a.a));
-  EXPECT_TRUE(isless(one.a.a, two));
-
-  EXPECT_FALSE(isunordered(inf, one));
-  EXPECT_FALSE(isunordered(inf, one.a));
-  EXPECT_FALSE(isunordered(inf.a, one));
-  EXPECT_FALSE(isunordered(inf, one.a.a));
-  EXPECT_FALSE(isunordered(inf.a.a, one));
-
-  EXPECT_TRUE(isunordered(nan, two));
-  EXPECT_TRUE(isunordered(nan, two.a));
-  EXPECT_TRUE(isunordered(nan.a, two));
-  EXPECT_TRUE(isunordered(nan, two.a.a));
-  EXPECT_TRUE(isunordered(nan.a.a, two));
-
-  EXPECT_TRUE(isunordered(inf, nan));
-  EXPECT_TRUE(isunordered(inf, nan.a));
-  EXPECT_TRUE(isunordered(inf.a, nan));
-  EXPECT_TRUE(isunordered(inf, nan.a.a));
-  EXPECT_TRUE(isunordered(inf.a.a, nan));
-
-  EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
-}
-
-TEST(JetTraitsTest, ClassificationNaN) {
-  Jet<double, 1> a(std::numeric_limits<double>::quiet_NaN());
-  a.v << std::numeric_limits<double>::infinity();
-  EXPECT_EQ(fpclassify(a), FP_NAN);
-  EXPECT_FALSE(isfinite(a));
-  EXPECT_FALSE(isinf(a));
-  EXPECT_FALSE(isnormal(a));
-  EXPECT_FALSE(signbit(a));
-  EXPECT_TRUE(isnan(a));
-}
-
-TEST(JetTraitsTest, ClassificationInf) {
-  Jet<double, 1> a(-std::numeric_limits<double>::infinity());
-  a.v << std::numeric_limits<double>::quiet_NaN();
-  EXPECT_EQ(fpclassify(a), FP_INFINITE);
-  EXPECT_FALSE(isfinite(a));
-  EXPECT_FALSE(isnan(a));
-  EXPECT_FALSE(isnormal(a));
-  EXPECT_TRUE(signbit(a));
-  EXPECT_TRUE(isinf(a));
-}
-
-TEST(JetTraitsTest, ClassificationFinite) {
-  Jet<double, 1> a(-5.5);
-  a.v << std::numeric_limits<double>::quiet_NaN();
-  EXPECT_EQ(fpclassify(a), FP_NORMAL);
-  EXPECT_FALSE(isinf(a));
-  EXPECT_FALSE(isnan(a));
-  EXPECT_TRUE(signbit(a));
-  EXPECT_TRUE(isfinite(a));
-  EXPECT_TRUE(isnormal(a));
-}
-
-TEST(JetTraitsTest, ClassificationScalar) {
-  EXPECT_EQ(fpclassify(J0d{+0.0}), FP_ZERO);
-  EXPECT_EQ(fpclassify(J0d{-0.0}), FP_ZERO);
-  EXPECT_EQ(fpclassify(J0d{1.234}), FP_NORMAL);
-  EXPECT_EQ(fpclassify(J0d{std::numeric_limits<double>::min() / 2}),
-            FP_SUBNORMAL);
-  EXPECT_EQ(fpclassify(J0d{std::numeric_limits<double>::quiet_NaN()}), FP_NAN);
-}
-
-TEST(JetTraitsTest, Nested2XClassificationScalar) {
-  EXPECT_EQ(fpclassify(J0<J0d>{J0d{+0.0}}), FP_ZERO);
-  EXPECT_EQ(fpclassify(J0<J0d>{J0d{-0.0}}), FP_ZERO);
-  EXPECT_EQ(fpclassify(J0<J0d>{J0d{1.234}}), FP_NORMAL);
-  EXPECT_EQ(fpclassify(J0<J0d>{J0d{std::numeric_limits<double>::min() / 2}}),
-            FP_SUBNORMAL);
-  EXPECT_EQ(fpclassify(J0<J0d>{J0d{std::numeric_limits<double>::quiet_NaN()}}),
-            FP_NAN);
-}
-
-// The following test ensures that Jets have all the appropriate Eigen
-// related traits so that they can be used as part of matrix
-// decompositions.
-TEST(Jet, FullRankEigenLLTSolve) {
-  Eigen::Matrix<J, 3, 3> A;
-  Eigen::Matrix<J, 3, 1> b, x;
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      A(i, j) = MakeJet(0.0, i, j * j);
-    }
-    b(i) = MakeJet(i, i, i);
-    x(i) = MakeJet(0.0, 0.0, 0.0);
-    A(i, i) = MakeJet(1.0, i, i * i);
-  }
-  x = A.llt().solve(b);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_EQ(x(i).a, b(i).a);
-  }
-}
-
-TEST(Jet, FullRankEigenLDLTSolve) {
-  Eigen::Matrix<J, 3, 3> A;
-  Eigen::Matrix<J, 3, 1> b, x;
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      A(i, j) = MakeJet(0.0, i, j * j);
-    }
-    b(i) = MakeJet(i, i, i);
-    x(i) = MakeJet(0.0, 0.0, 0.0);
-    A(i, i) = MakeJet(1.0, i, i * i);
-  }
-  x = A.ldlt().solve(b);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_EQ(x(i).a, b(i).a);
-  }
-}
-
-TEST(Jet, FullRankEigenLUSolve) {
-  Eigen::Matrix<J, 3, 3> A;
-  Eigen::Matrix<J, 3, 1> b, x;
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      A(i, j) = MakeJet(0.0, i, j * j);
-    }
-    b(i) = MakeJet(i, i, i);
-    x(i) = MakeJet(0.0, 0.0, 0.0);
-    A(i, i) = MakeJet(1.0, i, i * i);
-  }
-
-  x = A.lu().solve(b);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_EQ(x(i).a, b(i).a);
-  }
-}
-
-// ScalarBinaryOpTraits is only supported on Eigen versions >= 3.3
-TEST(JetTraitsTest, MatrixScalarUnaryOps) {
-  const J x = MakeJet(2.3, -2.7, 1e-3);
-  const J y = MakeJet(1.7, 0.5, 1e+2);
-  Eigen::Matrix<J, 2, 1> a;
-  a << x, y;
-
-  const J sum = a.sum();
-  const J sum2 = a(0) + a(1);
-  EXPECT_THAT(sum, IsAlmostEqualTo(sum2));
-}
-
-TEST(JetTraitsTest, MatrixScalarBinaryOps) {
-  const J x = MakeJet(2.3, -2.7, 1e-3);
-  const J y = MakeJet(1.7, 0.5, 1e+2);
-  const J z = MakeJet(5.3, -4.7, 1e-3);
-  const J w = MakeJet(9.7, 1.5, 10.1);
-
-  Eigen::Matrix<J, 2, 2> M;
-  Eigen::Vector2d v;
-
-  M << x, y, z, w;
-  v << 0.6, -2.1;
-
-  // M * v == M * v.cast<J>().
-  const Eigen::Matrix<J, 2, 1> r1 = M * v;
-  const Eigen::Matrix<J, 2, 1> r2 = M * v.cast<J>();
-
-  EXPECT_THAT(r1(0), IsAlmostEqualTo(r2(0)));
-  EXPECT_THAT(r1(1), IsAlmostEqualTo(r2(1)));
-
-  // M * a == M * T(a).
-  const double a = 3.1;
-  const Eigen::Matrix<J, 2, 2> r3 = M * a;
-  const Eigen::Matrix<J, 2, 2> r4 = M * J(a);
-
-  EXPECT_THAT(r3(0, 0), IsAlmostEqualTo(r4(0, 0)));
-  EXPECT_THAT(r3(0, 1), IsAlmostEqualTo(r4(0, 1)));
-  EXPECT_THAT(r3(1, 0), IsAlmostEqualTo(r4(1, 0)));
-  EXPECT_THAT(r3(1, 1), IsAlmostEqualTo(r4(1, 1)));
-}
-
-TEST(JetTraitsTest, ArrayScalarUnaryOps) {
-  const J x = MakeJet(2.3, -2.7, 1e-3);
-  const J y = MakeJet(1.7, 0.5, 1e+2);
-  Eigen::Array<J, 2, 1> a;
-  a << x, y;
-
-  const J sum = a.sum();
-  const J sum2 = a(0) + a(1);
-  EXPECT_THAT(sum, sum2);
-}
-
-TEST(JetTraitsTest, ArrayScalarBinaryOps) {
-  const J x = MakeJet(2.3, -2.7, 1e-3);
-  const J y = MakeJet(1.7, 0.5, 1e+2);
-
-  Eigen::Array<J, 2, 1> a;
-  Eigen::Array2d b;
-
-  a << x, y;
-  b << 0.6, -2.1;
-
-  // a * b == a * b.cast<T>()
-  const Eigen::Array<J, 2, 1> r1 = a * b;
-  const Eigen::Array<J, 2, 1> r2 = a * b.cast<J>();
-
-  EXPECT_THAT(r1(0), r2(0));
-  EXPECT_THAT(r1(1), r2(1));
-
-  // a * c == a * T(c).
-  const double c = 3.1;
-  const Eigen::Array<J, 2, 1> r3 = a * c;
-  const Eigen::Array<J, 2, 1> r4 = a * J(c);
-
-  EXPECT_THAT(r3(0), r3(0));
-  EXPECT_THAT(r4(1), r4(1));
-}
-
-TEST(Jet, Nested3X) {
-  using JJ = Jet<J, 2>;
-  using JJJ = Jet<JJ, 2>;
-
-  JJJ x;
-  x.a = JJ(J(1, 0), 0);
-  x.v[0] = JJ(J(1));
-
-  JJJ y = x * x * x;
-
-  ExpectClose(y.a.a.a, 1, kTolerance);
-  ExpectClose(y.v[0].a.a, 3., kTolerance);
-  ExpectClose(y.v[0].v[0].a, 6., kTolerance);
-  ExpectClose(y.v[0].v[0].v[0], 6., kTolerance);
-
-  JJJ e = exp(x);
-
-  ExpectClose(e.a.a.a, kE, kTolerance);
-  ExpectClose(e.v[0].a.a, kE, kTolerance);
-  ExpectClose(e.v[0].v[0].a, kE, kTolerance);
-  ExpectClose(e.v[0].v[0].v[0], kE, kTolerance);
-}
-
-#if GTEST_HAS_TYPED_TEST
-
-using Types = testing::Types<std::int16_t,
-                             std::uint16_t,
-                             std::int32_t,
-                             std::uint32_t,
-                             std::int64_t,
-                             std::uint64_t,
-                             float,
-                             double,
-                             long double>;
-
-template <typename T>
-class JetTest : public testing::Test {};
-
-TYPED_TEST_SUITE(JetTest, Types);
-
-TYPED_TEST(JetTest, Comparison) {
-  using Scalar = TypeParam;
-
-  EXPECT_EQ(J0<Scalar>{0}, J0<Scalar>{0});
-  EXPECT_GE(J0<Scalar>{3}, J0<Scalar>{3});
-  EXPECT_GT(J0<Scalar>{3}, J0<Scalar>{2});
-  EXPECT_LE(J0<Scalar>{1}, J0<Scalar>{1});
-  EXPECT_LT(J0<Scalar>{1}, J0<Scalar>{2});
-  EXPECT_NE(J0<Scalar>{1}, J0<Scalar>{2});
-}
-
-TYPED_TEST(JetTest, ScalarComparison) {
-  using Scalar = TypeParam;
-
-  EXPECT_EQ(J0d{0.0}, Scalar{0});
-  EXPECT_GE(J0d{3.0}, Scalar{3});
-  EXPECT_GT(J0d{3.0}, Scalar{2});
-  EXPECT_LE(J0d{1.0}, Scalar{1});
-  EXPECT_LT(J0d{1.0}, Scalar{2});
-  EXPECT_NE(J0d{1.0}, Scalar{2});
-
-  EXPECT_EQ(Scalar{0}, J0d{0.0});
-  EXPECT_GE(Scalar{1}, J0d{1.0});
-  EXPECT_GT(Scalar{2}, J0d{1.0});
-  EXPECT_LE(Scalar{3}, J0d{3.0});
-  EXPECT_LT(Scalar{2}, J0d{3.0});
-  EXPECT_NE(Scalar{2}, J0d{1.0});
-}
-
-TYPED_TEST(JetTest, Nested2XComparison) {
-  using Scalar = TypeParam;
-
-  EXPECT_EQ(J0<J0d>{J0d{0.0}}, Scalar{0});
-  EXPECT_GE(J0<J0d>{J0d{3.0}}, Scalar{3});
-  EXPECT_GT(J0<J0d>{J0d{3.0}}, Scalar{2});
-  EXPECT_LE(J0<J0d>{J0d{1.0}}, Scalar{1});
-  EXPECT_LT(J0<J0d>{J0d{1.0}}, Scalar{2});
-  EXPECT_NE(J0<J0d>{J0d{1.0}}, Scalar{2});
-
-  EXPECT_EQ(Scalar{0}, J0<J0d>{J0d{0.0}});
-  EXPECT_GE(Scalar{1}, J0<J0d>{J0d{1.0}});
-  EXPECT_GT(Scalar{2}, J0<J0d>{J0d{1.0}});
-  EXPECT_LE(Scalar{3}, J0<J0d>{J0d{3.0}});
-  EXPECT_LT(Scalar{2}, J0<J0d>{J0d{3.0}});
-  EXPECT_NE(Scalar{2}, J0<J0d>{J0d{1.0}});
-}
-
-TYPED_TEST(JetTest, Nested3XComparison) {
-  using Scalar = TypeParam;
-
-  EXPECT_EQ(J0<J0<J0d>>{J0<J0d>{J0d{0.0}}}, Scalar{0});
-  EXPECT_GE(J0<J0<J0d>>{J0<J0d>{J0d{3.0}}}, Scalar{3});
-  EXPECT_GT(J0<J0<J0d>>{J0<J0d>{J0d{3.0}}}, Scalar{2});
-  EXPECT_LE(J0<J0<J0d>>{J0<J0d>{J0d{1.0}}}, Scalar{1});
-  EXPECT_LT(J0<J0<J0d>>{J0<J0d>{J0d{1.0}}}, Scalar{2});
-  EXPECT_NE(J0<J0<J0d>>{J0<J0d>{J0d{1.0}}}, Scalar{2});
-
-  EXPECT_EQ(Scalar{0}, J0<J0<J0d>>{J0<J0d>{J0d{0.0}}});
-  EXPECT_GE(Scalar{1}, J0<J0<J0d>>{J0<J0d>{J0d{1.0}}});
-  EXPECT_GT(Scalar{2}, J0<J0<J0d>>{J0<J0d>{J0d{1.0}}});
-  EXPECT_LE(Scalar{3}, J0<J0<J0d>>{J0<J0d>{J0d{3.0}}});
-  EXPECT_LT(Scalar{2}, J0<J0<J0d>>{J0<J0d>{J0d{3.0}}});
-  EXPECT_NE(Scalar{2}, J0<J0<J0d>>{J0<J0d>{J0d{1.0}}});
-}
-
-#endif  // GTEST_HAS_TYPED_TEST
-
-}  // namespace ceres::internal
-
-#ifdef _MSC_VER
-#pragma float_control(pop)
-#endif
diff --git a/third_party/ceres/internal/ceres/jet_traits_test.cc b/third_party/ceres/internal/ceres/jet_traits_test.cc
deleted file mode 100644
index 0631784..0000000
--- a/third_party/ceres/internal/ceres/jet_traits_test.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sergiu.deitsch@gmail.com (Sergiu Deitsch)
-
-#include "ceres/internal/jet_traits.h"
-
-#include <Eigen/Core>
-#include <type_traits>
-#include <utility>
-
-namespace ceres::internal {
-
-using J = Jet<double, 2>;
-// Don't care about the dual part for scalar part categorization and comparison
-// tests
-template <typename T>
-using J0 = Jet<T, 0>;
-using J0d = J0<double>;
-
-// Extract the ranks of given types
-using Ranks001 = Ranks_t<Jet<double, 0>, double, Jet<double, 1>>;
-using Ranks1 = Ranks_t<Jet<double, 1>>;
-using Ranks110 = Ranks_t<Jet<double, 1>, Jet<double, 1>, double>;
-using Ranks023 = Ranks_t<double, Jet<double, 2>, Jet<double, 3>>;
-using EmptyRanks = Ranks_t<>;
-
-// Ensure extracted ranks match the expected integer sequence
-static_assert(
-    std::is_same<Ranks001, std::integer_sequence<int, 0, 0, 1>>::value,
-    "ranks do not match");
-static_assert(std::is_same<Ranks1, std::integer_sequence<int, 1>>::value,
-              "ranks do not match");
-static_assert(
-    std::is_same<Ranks110, std::integer_sequence<int, 1, 1, 0>>::value,
-    "ranks do not match");
-static_assert(
-    std::is_same<Ranks023, std::integer_sequence<int, 0, 2, 3>>::value,
-    "ranks do not match");
-static_assert(std::is_same<EmptyRanks, std::integer_sequence<int>>::value,
-              "ranks sequence is not empty");
-
-// Extract the underlying floating-point type
-static_assert(std::is_same<UnderlyingScalar_t<double>, double>::value,
-              "underlying type is not a double");
-static_assert(std::is_same<UnderlyingScalar_t<J0d>, double>::value,
-              "underlying type is not a double");
-static_assert(std::is_same<UnderlyingScalar_t<J0<J0d>>, double>::value,
-              "underlying type is not a double");
-static_assert(std::is_same<UnderlyingScalar_t<J0<J0<J0d>>>, double>::value,
-              "underlying type is not a double");
-
-static_assert(CompatibleJetOperands_v<Jet<double, 1>, Jet<double, 1>>,
-              "Jets must be compatible");
-static_assert(CompatibleJetOperands_v<Jet<double, 1>, double>,
-              "Jet and scalar must be compatible");
-static_assert(CompatibleJetOperands_v<Jet<double, 2>>,
-              "single Jet must be compatible");
-static_assert(!CompatibleJetOperands_v<Jet<double, 1>, double, Jet<double, 2>>,
-              "Jets and scalar must not be compatible");
-static_assert(!CompatibleJetOperands_v<double, double>,
-              "scalars must not be compatible");
-static_assert(!CompatibleJetOperands_v<double>,
-              "single scalar must not be compatible");
-static_assert(!CompatibleJetOperands_v<>,
-              "empty arguments must not be compatible");
-
-static_assert(!PromotableJetOperands_v<double>,
-              "single scalar must not be Jet promotable");
-static_assert(!PromotableJetOperands_v<double, float, int>,
-              "multiple scalars must not be Jet promotable");
-static_assert(PromotableJetOperands_v<J0d, float, int>,
-              "Jet and several scalars must be promotable");
-static_assert(PromotableJetOperands_v<J0<J0d>, float, int>,
-              "nested Jet and several scalars must be promotable");
-static_assert(!PromotableJetOperands_v<Eigen::Array<double, 2, 3>, float, int>,
-              "Eigen::Array must not be Jet promotable");
-static_assert(!PromotableJetOperands_v<Eigen::Matrix<double, 3, 2>, float, int>,
-              "Eigen::Matrix must not be Jet promotable");
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.cc b/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.cc
deleted file mode 100644
index 37bc6f4..0000000
--- a/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.cc
+++ /dev/null
@@ -1,174 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/levenberg_marquardt_strategy.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "Eigen/Core"
-#include "ceres/array_utils.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/trust_region_strategy.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-LevenbergMarquardtStrategy::LevenbergMarquardtStrategy(
-    const TrustRegionStrategy::Options& options)
-    : linear_solver_(options.linear_solver),
-      radius_(options.initial_radius),
-      max_radius_(options.max_radius),
-      min_diagonal_(options.min_lm_diagonal),
-      max_diagonal_(options.max_lm_diagonal),
-      decrease_factor_(2.0),
-      reuse_diagonal_(false),
-      context_(options.context),
-      num_threads_(options.num_threads) {
-  CHECK(linear_solver_ != nullptr);
-  CHECK_GT(min_diagonal_, 0.0);
-  CHECK_LE(min_diagonal_, max_diagonal_);
-  CHECK_GT(max_radius_, 0.0);
-}
-
-LevenbergMarquardtStrategy::~LevenbergMarquardtStrategy() = default;
-
-TrustRegionStrategy::Summary LevenbergMarquardtStrategy::ComputeStep(
-    const TrustRegionStrategy::PerSolveOptions& per_solve_options,
-    SparseMatrix* jacobian,
-    const double* residuals,
-    double* step) {
-  CHECK(jacobian != nullptr);
-  CHECK(residuals != nullptr);
-  CHECK(step != nullptr);
-
-  const int num_parameters = jacobian->num_cols();
-  if (!reuse_diagonal_) {
-    if (diagonal_.rows() != num_parameters) {
-      diagonal_.resize(num_parameters, 1);
-    }
-
-    jacobian->SquaredColumnNorm(diagonal_.data(), context_, num_threads_);
-    ParallelAssign(context_,
-                   num_threads_,
-                   diagonal_,
-                   diagonal_.array().max(min_diagonal_).min(max_diagonal_));
-  }
-
-  if (lm_diagonal_.size() == 0) {
-    lm_diagonal_.resize(num_parameters);
-  }
-  ParallelAssign(
-      context_, num_threads_, lm_diagonal_, (diagonal_ / radius_).cwiseSqrt());
-
-  LinearSolver::PerSolveOptions solve_options;
-  solve_options.D = lm_diagonal_.data();
-  solve_options.q_tolerance = per_solve_options.eta;
-  // Disable r_tolerance checking. Since we only care about
-  // termination via the q_tolerance. As Nash and Sofer show,
-  // r_tolerance based termination is essentially useless in
-  // Truncated Newton methods.
-  solve_options.r_tolerance = -1.0;
-
-  // Invalidate the output array lm_step, so that we can detect if
-  // the linear solver generated numerical garbage.  This is known
-  // to happen for the DENSE_QR and then DENSE_SCHUR solver when
-  // the Jacobian is severely rank deficient and mu is too small.
-  InvalidateArray(num_parameters, step);
-
-  // Instead of solving Jx = -r, solve Jy = r.
-  // Then x can be found as x = -y, but the inputs jacobian and residuals
-  // do not need to be modified.
-  LinearSolver::Summary linear_solver_summary =
-      linear_solver_->Solve(jacobian, residuals, solve_options, step);
-
-  if (linear_solver_summary.termination_type ==
-      LinearSolverTerminationType::FATAL_ERROR) {
-    LOG(WARNING) << "Linear solver fatal error: "
-                 << linear_solver_summary.message;
-  } else if (linear_solver_summary.termination_type ==
-             LinearSolverTerminationType::FAILURE) {
-    LOG(WARNING) << "Linear solver failure. Failed to compute a step: "
-                 << linear_solver_summary.message;
-  } else if (!IsArrayValid(num_parameters, step)) {
-    LOG(WARNING) << "Linear solver failure. Failed to compute a finite step.";
-    linear_solver_summary.termination_type =
-        LinearSolverTerminationType::FAILURE;
-  } else {
-    VectorRef step_vec(step, num_parameters);
-    ParallelAssign(context_, num_threads_, step_vec, -step_vec);
-  }
-  reuse_diagonal_ = true;
-
-  if (per_solve_options.dump_format_type == CONSOLE ||
-      (per_solve_options.dump_format_type != CONSOLE &&
-       !per_solve_options.dump_filename_base.empty())) {
-    if (!DumpLinearLeastSquaresProblem(per_solve_options.dump_filename_base,
-                                       per_solve_options.dump_format_type,
-                                       jacobian,
-                                       solve_options.D,
-                                       residuals,
-                                       step,
-                                       0)) {
-      LOG(ERROR) << "Unable to dump trust region problem."
-                 << " Filename base: " << per_solve_options.dump_filename_base;
-    }
-  }
-
-  TrustRegionStrategy::Summary summary;
-  summary.residual_norm = linear_solver_summary.residual_norm;
-  summary.num_iterations = linear_solver_summary.num_iterations;
-  summary.termination_type = linear_solver_summary.termination_type;
-  return summary;
-}
-
-void LevenbergMarquardtStrategy::StepAccepted(double step_quality) {
-  CHECK_GT(step_quality, 0.0);
-  radius_ =
-      radius_ / std::max(1.0 / 3.0, 1.0 - pow(2.0 * step_quality - 1.0, 3));
-  radius_ = std::min(max_radius_, radius_);
-  decrease_factor_ = 2.0;
-  reuse_diagonal_ = false;
-}
-
-void LevenbergMarquardtStrategy::StepRejected(double /*step_quality*/) {
-  radius_ = radius_ / decrease_factor_;
-  decrease_factor_ *= 2.0;
-  reuse_diagonal_ = true;
-}
-
-double LevenbergMarquardtStrategy::Radius() const { return radius_; }
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.h b/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.h
deleted file mode 100644
index 1b341c1..0000000
--- a/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_LEVENBERG_MARQUARDT_STRATEGY_H_
-#define CERES_INTERNAL_LEVENBERG_MARQUARDT_STRATEGY_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/trust_region_strategy.h"
-
-namespace ceres::internal {
-
-class ContextImpl;
-
-// Levenberg-Marquardt step computation and trust region sizing
-// strategy based on on "Methods for Nonlinear Least Squares" by
-// K. Madsen, H.B. Nielsen and O. Tingleff. Available to download from
-//
-// http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf
-class CERES_NO_EXPORT LevenbergMarquardtStrategy final
-    : public TrustRegionStrategy {
- public:
-  explicit LevenbergMarquardtStrategy(
-      const TrustRegionStrategy::Options& options);
-  ~LevenbergMarquardtStrategy() override;
-
-  // TrustRegionStrategy interface
-  TrustRegionStrategy::Summary ComputeStep(
-      const TrustRegionStrategy::PerSolveOptions& per_solve_options,
-      SparseMatrix* jacobian,
-      const double* residuals,
-      double* step) final;
-  void StepAccepted(double step_quality) final;
-  void StepRejected(double step_quality) final;
-  void StepIsInvalid() final {
-    // Treat the current step as a rejected step with no increase in
-    // solution quality. Since rejected steps lead to decrease in the
-    // size of the trust region, the next time ComputeStep is called,
-    // this will lead to a better conditioned system.
-    StepRejected(0.0);
-  }
-
-  double Radius() const final;
-
- private:
-  LinearSolver* linear_solver_;
-  double radius_;
-  double max_radius_;
-  const double min_diagonal_;
-  const double max_diagonal_;
-  double decrease_factor_;
-  bool reuse_diagonal_;
-  Vector diagonal_;  // diagonal_ =  diag(J'J)
-  // Scaled copy of diagonal_. Stored here as optimization to prevent
-  // allocations in every iteration and reuse when a step fails and
-  // ComputeStep is called again.
-  Vector lm_diagonal_;  // lm_diagonal_ = sqrt(diagonal_ / radius_);
-  ContextImpl* context_;
-  int num_threads_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_LEVENBERG_MARQUARDT_STRATEGY_H_
diff --git a/third_party/ceres/internal/ceres/levenberg_marquardt_strategy_test.cc b/third_party/ceres/internal/ceres/levenberg_marquardt_strategy_test.cc
deleted file mode 100644
index ca69f28..0000000
--- a/third_party/ceres/internal/ceres/levenberg_marquardt_strategy_test.cc
+++ /dev/null
@@ -1,167 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/levenberg_marquardt_strategy.h"
-
-#include <memory>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/trust_region_strategy.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gmock/mock-log.h"
-#include "gtest/gtest.h"
-
-using testing::_;
-using testing::AllOf;
-using testing::AnyNumber;
-using testing::HasSubstr;
-using testing::ScopedMockLog;
-
-namespace ceres {
-namespace internal {
-
-const double kTolerance = 1e-16;
-
-// Linear solver that takes as input a vector and checks that the
-// caller passes the same vector as LinearSolver::PerSolveOptions.D.
-class RegularizationCheckingLinearSolver : public DenseSparseMatrixSolver {
- public:
-  RegularizationCheckingLinearSolver(const int num_cols, const double* diagonal)
-      : num_cols_(num_cols), diagonal_(diagonal) {}
-
- private:
-  LinearSolver::Summary SolveImpl(
-      DenseSparseMatrix* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x) final {
-    CHECK(per_solve_options.D != nullptr);
-    for (int i = 0; i < num_cols_; ++i) {
-      EXPECT_NEAR(per_solve_options.D[i], diagonal_[i], kTolerance)
-          << i << " " << per_solve_options.D[i] << " " << diagonal_[i];
-    }
-    return {};
-  }
-
-  const int num_cols_;
-  const double* diagonal_;
-};
-
-TEST(LevenbergMarquardtStrategy, AcceptRejectStepRadiusScaling) {
-  TrustRegionStrategy::Options options;
-  options.initial_radius = 2.0;
-  options.max_radius = 20.0;
-  options.min_lm_diagonal = 1e-8;
-  options.max_lm_diagonal = 1e8;
-
-  // We need a non-null pointer here, so anything should do.
-  std::unique_ptr<LinearSolver> linear_solver(
-      new RegularizationCheckingLinearSolver(0, nullptr));
-  options.linear_solver = linear_solver.get();
-
-  LevenbergMarquardtStrategy lms(options);
-  EXPECT_EQ(lms.Radius(), options.initial_radius);
-  lms.StepRejected(0.0);
-  EXPECT_EQ(lms.Radius(), 1.0);
-  lms.StepRejected(-1.0);
-  EXPECT_EQ(lms.Radius(), 0.25);
-  lms.StepAccepted(1.0);
-  EXPECT_EQ(lms.Radius(), 0.25 * 3.0);
-  lms.StepAccepted(1.0);
-  EXPECT_EQ(lms.Radius(), 0.25 * 3.0 * 3.0);
-  lms.StepAccepted(0.25);
-  EXPECT_EQ(lms.Radius(), 0.25 * 3.0 * 3.0 / 1.125);
-  lms.StepAccepted(1.0);
-  EXPECT_EQ(lms.Radius(), 0.25 * 3.0 * 3.0 / 1.125 * 3.0);
-  lms.StepAccepted(1.0);
-  EXPECT_EQ(lms.Radius(), 0.25 * 3.0 * 3.0 / 1.125 * 3.0 * 3.0);
-  lms.StepAccepted(1.0);
-  EXPECT_EQ(lms.Radius(), options.max_radius);
-}
-
-TEST(LevenbergMarquardtStrategy, CorrectDiagonalToLinearSolver) {
-  Matrix jacobian(2, 3);
-  jacobian.setZero();
-  jacobian(0, 0) = 0.0;
-  jacobian(0, 1) = 1.0;
-  jacobian(1, 1) = 1.0;
-  jacobian(0, 2) = 100.0;
-
-  double residual = 1.0;
-  double x[3];
-  DenseSparseMatrix dsm(jacobian);
-
-  TrustRegionStrategy::Options options;
-  options.initial_radius = 2.0;
-  options.max_radius = 20.0;
-  options.min_lm_diagonal = 1e-2;
-  options.max_lm_diagonal = 1e2;
-
-  double diagonal[3];
-  diagonal[0] = options.min_lm_diagonal;
-  diagonal[1] = 2.0;
-  diagonal[2] = options.max_lm_diagonal;
-  for (double& diagonal_entry : diagonal) {
-    diagonal_entry = sqrt(diagonal_entry / options.initial_radius);
-  }
-
-  RegularizationCheckingLinearSolver linear_solver(3, diagonal);
-  options.linear_solver = &linear_solver;
-
-  LevenbergMarquardtStrategy lms(options);
-  TrustRegionStrategy::PerSolveOptions pso;
-
-  {
-    ScopedMockLog log;
-    EXPECT_CALL(log, Log(_, _, _)).Times(AnyNumber());
-    // This using directive is needed get around the fact that there
-    // are versions of glog which are not in the google namespace.
-    using namespace google;
-
-#if defined(GLOG_NO_ABBREVIATED_SEVERITIES)
-    // Use GLOG_WARNING to support MSVC if GLOG_NO_ABBREVIATED_SEVERITIES
-    // is defined.
-    EXPECT_CALL(log,
-                Log(GLOG_WARNING, _, HasSubstr("Failed to compute a step")));
-#else
-    EXPECT_CALL(log,
-                Log(google::WARNING, _, HasSubstr("Failed to compute a step")));
-#endif
-
-    TrustRegionStrategy::Summary summary =
-        lms.ComputeStep(pso, &dsm, &residual, x);
-    EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::FAILURE);
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/line_search.cc b/third_party/ceres/internal/ceres/line_search.cc
deleted file mode 100644
index eb2c7c9..0000000
--- a/third_party/ceres/internal/ceres/line_search.cc
+++ /dev/null
@@ -1,883 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/line_search.h"
-
-#include <algorithm>
-#include <cmath>
-#include <iomanip>
-#include <map>
-#include <memory>
-#include <ostream>  // NOLINT
-#include <string>
-#include <vector>
-
-#include "ceres/evaluator.h"
-#include "ceres/function_sample.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/map_util.h"
-#include "ceres/polynomial.h"
-#include "ceres/stringprintf.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-namespace {
-// Precision used for floating point values in error message output.
-const int kErrorMessageNumericPrecision = 8;
-}  // namespace
-
-std::ostream& operator<<(std::ostream& os, const FunctionSample& sample);
-
-// Convenience stream operator for pushing FunctionSamples into log messages.
-std::ostream& operator<<(std::ostream& os, const FunctionSample& sample) {
-  os << sample.ToDebugString();
-  return os;
-}
-
-LineSearch::~LineSearch() = default;
-
-LineSearch::LineSearch(const LineSearch::Options& options)
-    : options_(options) {}
-
-std::unique_ptr<LineSearch> LineSearch::Create(
-    const LineSearchType line_search_type,
-    const LineSearch::Options& options,
-    std::string* error) {
-  switch (line_search_type) {
-    case ceres::ARMIJO:
-      return std::make_unique<ArmijoLineSearch>(options);
-    case ceres::WOLFE:
-      return std::make_unique<WolfeLineSearch>(options);
-    default:
-      *error = std::string("Invalid line search algorithm type: ") +
-               LineSearchTypeToString(line_search_type) +
-               std::string(", unable to create line search.");
-  }
-  return nullptr;
-}
-
-LineSearchFunction::LineSearchFunction(Evaluator* evaluator)
-    : evaluator_(evaluator),
-      position_(evaluator->NumParameters()),
-      direction_(evaluator->NumEffectiveParameters()),
-      scaled_direction_(evaluator->NumEffectiveParameters()),
-      initial_evaluator_residual_time_in_seconds(0.0),
-      initial_evaluator_jacobian_time_in_seconds(0.0) {}
-
-void LineSearchFunction::Init(const Vector& position, const Vector& direction) {
-  position_ = position;
-  direction_ = direction;
-}
-
-void LineSearchFunction::Evaluate(const double x,
-                                  const bool evaluate_gradient,
-                                  FunctionSample* output) {
-  output->x = x;
-  output->vector_x_is_valid = false;
-  output->value_is_valid = false;
-  output->gradient_is_valid = false;
-  output->vector_gradient_is_valid = false;
-
-  scaled_direction_ = output->x * direction_;
-  output->vector_x.resize(position_.rows(), 1);
-  if (!evaluator_->Plus(position_.data(),
-                        scaled_direction_.data(),
-                        output->vector_x.data())) {
-    return;
-  }
-  output->vector_x_is_valid = true;
-
-  double* gradient = nullptr;
-  if (evaluate_gradient) {
-    output->vector_gradient.resize(direction_.rows(), 1);
-    gradient = output->vector_gradient.data();
-  }
-  const bool eval_status = evaluator_->Evaluate(
-      output->vector_x.data(), &(output->value), nullptr, gradient, nullptr);
-
-  if (!eval_status || !std::isfinite(output->value)) {
-    return;
-  }
-
-  output->value_is_valid = true;
-  if (!evaluate_gradient) {
-    return;
-  }
-
-  output->gradient = direction_.dot(output->vector_gradient);
-  if (!std::isfinite(output->gradient)) {
-    return;
-  }
-
-  output->gradient_is_valid = true;
-  output->vector_gradient_is_valid = true;
-}
-
-double LineSearchFunction::DirectionInfinityNorm() const {
-  return direction_.lpNorm<Eigen::Infinity>();
-}
-
-void LineSearchFunction::ResetTimeStatistics() {
-  const std::map<std::string, CallStatistics> evaluator_statistics =
-      evaluator_->Statistics();
-
-  initial_evaluator_residual_time_in_seconds =
-      FindWithDefault(
-          evaluator_statistics, "Evaluator::Residual", CallStatistics())
-          .time;
-  initial_evaluator_jacobian_time_in_seconds =
-      FindWithDefault(
-          evaluator_statistics, "Evaluator::Jacobian", CallStatistics())
-          .time;
-}
-
-void LineSearchFunction::TimeStatistics(
-    double* cost_evaluation_time_in_seconds,
-    double* gradient_evaluation_time_in_seconds) const {
-  const std::map<std::string, CallStatistics> evaluator_time_statistics =
-      evaluator_->Statistics();
-  *cost_evaluation_time_in_seconds =
-      FindWithDefault(
-          evaluator_time_statistics, "Evaluator::Residual", CallStatistics())
-          .time -
-      initial_evaluator_residual_time_in_seconds;
-  // Strictly speaking this will slightly underestimate the time spent
-  // evaluating the gradient of the line search univariate cost function as it
-  // does not count the time spent performing the dot product with the direction
-  // vector.  However, this will typically be small by comparison, and also
-  // allows direct subtraction of the timing information from the totals for
-  // the evaluator returned in the solver summary.
-  *gradient_evaluation_time_in_seconds =
-      FindWithDefault(
-          evaluator_time_statistics, "Evaluator::Jacobian", CallStatistics())
-          .time -
-      initial_evaluator_jacobian_time_in_seconds;
-}
-
-void LineSearch::Search(double step_size_estimate,
-                        double initial_cost,
-                        double initial_gradient,
-                        Summary* summary) const {
-  const double start_time = WallTimeInSeconds();
-  CHECK(summary != nullptr);
-  *summary = LineSearch::Summary();
-
-  summary->cost_evaluation_time_in_seconds = 0.0;
-  summary->gradient_evaluation_time_in_seconds = 0.0;
-  summary->polynomial_minimization_time_in_seconds = 0.0;
-  options().function->ResetTimeStatistics();
-  this->DoSearch(step_size_estimate, initial_cost, initial_gradient, summary);
-  options().function->TimeStatistics(
-      &summary->cost_evaluation_time_in_seconds,
-      &summary->gradient_evaluation_time_in_seconds);
-
-  summary->total_time_in_seconds = WallTimeInSeconds() - start_time;
-}
-
-// Returns step_size \in [min_step_size, max_step_size] which minimizes the
-// polynomial of degree defined by interpolation_type which interpolates all
-// of the provided samples with valid values.
-double LineSearch::InterpolatingPolynomialMinimizingStepSize(
-    const LineSearchInterpolationType& interpolation_type,
-    const FunctionSample& lowerbound,
-    const FunctionSample& previous,
-    const FunctionSample& current,
-    const double min_step_size,
-    const double max_step_size) const {
-  if (!current.value_is_valid ||
-      (interpolation_type == BISECTION && max_step_size <= current.x)) {
-    // Either: sample is invalid; or we are using BISECTION and contracting
-    // the step size.
-    return std::min(std::max(current.x * 0.5, min_step_size), max_step_size);
-  } else if (interpolation_type == BISECTION) {
-    CHECK_GT(max_step_size, current.x);
-    // We are expanding the search (during a Wolfe bracketing phase) using
-    // BISECTION interpolation.  Using BISECTION when trying to expand is
-    // strictly speaking an oxymoron, but we define this to mean always taking
-    // the maximum step size so that the Armijo & Wolfe implementations are
-    // agnostic to the interpolation type.
-    return max_step_size;
-  }
-  // Only check if lower-bound is valid here, where it is required
-  // to avoid replicating current.value_is_valid == false
-  // behaviour in WolfeLineSearch.
-  CHECK(lowerbound.value_is_valid)
-      << std::scientific << std::setprecision(kErrorMessageNumericPrecision)
-      << "Ceres bug: lower-bound sample for interpolation is invalid, "
-      << "please contact the developers!, interpolation_type: "
-      << LineSearchInterpolationTypeToString(interpolation_type)
-      << ", lowerbound: " << lowerbound << ", previous: " << previous
-      << ", current: " << current;
-
-  // Select step size by interpolating the function and gradient values
-  // and minimizing the corresponding polynomial.
-  std::vector<FunctionSample> samples;
-  samples.push_back(lowerbound);
-
-  if (interpolation_type == QUADRATIC) {
-    // Two point interpolation using function values and the
-    // gradient at the lower bound.
-    samples.emplace_back(current.x, current.value);
-
-    if (previous.value_is_valid) {
-      // Three point interpolation, using function values and the
-      // gradient at the lower bound.
-      samples.emplace_back(previous.x, previous.value);
-    }
-  } else if (interpolation_type == CUBIC) {
-    // Two point interpolation using the function values and the gradients.
-    samples.push_back(current);
-
-    if (previous.value_is_valid) {
-      // Three point interpolation using the function values and
-      // the gradients.
-      samples.push_back(previous);
-    }
-  } else {
-    LOG(FATAL) << "Ceres bug: No handler for interpolation_type: "
-               << LineSearchInterpolationTypeToString(interpolation_type)
-               << ", please contact the developers!";
-  }
-
-  double step_size = 0.0, unused_min_value = 0.0;
-  MinimizeInterpolatingPolynomial(
-      samples, min_step_size, max_step_size, &step_size, &unused_min_value);
-  return step_size;
-}
-
-ArmijoLineSearch::ArmijoLineSearch(const LineSearch::Options& options)
-    : LineSearch(options) {}
-
-void ArmijoLineSearch::DoSearch(const double step_size_estimate,
-                                const double initial_cost,
-                                const double initial_gradient,
-                                Summary* summary) const {
-  CHECK_GE(step_size_estimate, 0.0);
-  CHECK_GT(options().sufficient_decrease, 0.0);
-  CHECK_LT(options().sufficient_decrease, 1.0);
-  CHECK_GT(options().max_num_iterations, 0);
-  LineSearchFunction* function = options().function;
-
-  // Note initial_cost & initial_gradient are evaluated at step_size = 0,
-  // not step_size_estimate, which is our starting guess.
-  FunctionSample initial_position(0.0, initial_cost, initial_gradient);
-  initial_position.vector_x = function->position();
-  initial_position.vector_x_is_valid = true;
-
-  const double descent_direction_max_norm = function->DirectionInfinityNorm();
-  FunctionSample previous;
-  FunctionSample current;
-
-  // As the Armijo line search algorithm always uses the initial point, for
-  // which both the function value and derivative are known, when fitting a
-  // minimizing polynomial, we can fit up to a quadratic without requiring the
-  // gradient at the current query point.
-  const bool kEvaluateGradient = options().interpolation_type == CUBIC;
-
-  ++summary->num_function_evaluations;
-  if (kEvaluateGradient) {
-    ++summary->num_gradient_evaluations;
-  }
-
-  function->Evaluate(step_size_estimate, kEvaluateGradient, &current);
-  while (!current.value_is_valid ||
-         current.value > (initial_cost + options().sufficient_decrease *
-                                             initial_gradient * current.x)) {
-    // If current.value_is_valid is false, we treat it as if the cost at that
-    // point is not large enough to satisfy the sufficient decrease condition.
-    ++summary->num_iterations;
-    if (summary->num_iterations >= options().max_num_iterations) {
-      summary->error = StringPrintf(
-          "Line search failed: Armijo failed to find a point "
-          "satisfying the sufficient decrease condition within "
-          "specified max_num_iterations: %d.",
-          options().max_num_iterations);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      return;
-    }
-
-    const double polynomial_minimization_start_time = WallTimeInSeconds();
-    const double step_size = this->InterpolatingPolynomialMinimizingStepSize(
-        options().interpolation_type,
-        initial_position,
-        previous,
-        current,
-        (options().max_step_contraction * current.x),
-        (options().min_step_contraction * current.x));
-    summary->polynomial_minimization_time_in_seconds +=
-        (WallTimeInSeconds() - polynomial_minimization_start_time);
-
-    if (step_size * descent_direction_max_norm < options().min_step_size) {
-      summary->error = StringPrintf(
-          "Line search failed: step_size too small: %.5e "
-          "with descent_direction_max_norm: %.5e.",
-          step_size,
-          descent_direction_max_norm);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      return;
-    }
-
-    previous = current;
-
-    ++summary->num_function_evaluations;
-    if (kEvaluateGradient) {
-      ++summary->num_gradient_evaluations;
-    }
-
-    function->Evaluate(step_size, kEvaluateGradient, &current);
-  }
-
-  summary->optimal_point = current;
-  summary->success = true;
-}
-
-WolfeLineSearch::WolfeLineSearch(const LineSearch::Options& options)
-    : LineSearch(options) {}
-
-void WolfeLineSearch::DoSearch(const double step_size_estimate,
-                               const double initial_cost,
-                               const double initial_gradient,
-                               Summary* summary) const {
-  // All parameters should have been validated by the Solver, but as
-  // invalid values would produce crazy nonsense, hard check them here.
-  CHECK_GE(step_size_estimate, 0.0);
-  CHECK_GT(options().sufficient_decrease, 0.0);
-  CHECK_GT(options().sufficient_curvature_decrease,
-           options().sufficient_decrease);
-  CHECK_LT(options().sufficient_curvature_decrease, 1.0);
-  CHECK_GT(options().max_step_expansion, 1.0);
-
-  // Note initial_cost & initial_gradient are evaluated at step_size = 0,
-  // not step_size_estimate, which is our starting guess.
-  FunctionSample initial_position(0.0, initial_cost, initial_gradient);
-  initial_position.vector_x = options().function->position();
-  initial_position.vector_x_is_valid = true;
-  bool do_zoom_search = false;
-  // Important: The high/low in bracket_high & bracket_low refer to their
-  // _function_ values, not their step sizes i.e. it is _not_ required that
-  // bracket_low.x < bracket_high.x.
-  FunctionSample solution, bracket_low, bracket_high;
-
-  // Wolfe bracketing phase: Increases step_size until either it finds a point
-  // that satisfies the (strong) Wolfe conditions, or an interval that brackets
-  // step sizes which satisfy the conditions.  From Nocedal & Wright [1] p61 the
-  // interval: (step_size_{k-1}, step_size_{k}) contains step lengths satisfying
-  // the strong Wolfe conditions if one of the following conditions are met:
-  //
-  //   1. step_size_{k} violates the sufficient decrease (Armijo) condition.
-  //   2. f(step_size_{k}) >= f(step_size_{k-1}).
-  //   3. f'(step_size_{k}) >= 0.
-  //
-  // Caveat: If f(step_size_{k}) is invalid, then step_size is reduced, ignoring
-  // this special case, step_size monotonically increases during bracketing.
-  if (!this->BracketingPhase(initial_position,
-                             step_size_estimate,
-                             &bracket_low,
-                             &bracket_high,
-                             &do_zoom_search,
-                             summary)) {
-    // Failed to find either a valid point, a valid bracket satisfying the Wolfe
-    // conditions, or even a step size > minimum tolerance satisfying the Armijo
-    // condition.
-    return;
-  }
-
-  if (!do_zoom_search) {
-    // Either: Bracketing phase already found a point satisfying the strong
-    // Wolfe conditions, thus no Zoom required.
-    //
-    // Or: Bracketing failed to find a valid bracket or a point satisfying the
-    // strong Wolfe conditions within max_num_iterations, or whilst searching
-    // shrank the bracket width until it was below our minimum tolerance.
-    // As these are 'artificial' constraints, and we would otherwise fail to
-    // produce a valid point when ArmijoLineSearch would succeed, we return the
-    // point with the lowest cost found thus far which satisfies the Armijo
-    // condition (but not the Wolfe conditions).
-    summary->optimal_point = bracket_low;
-    summary->success = true;
-    return;
-  }
-
-  VLOG(3) << std::scientific << std::setprecision(kErrorMessageNumericPrecision)
-          << "Starting line search zoom phase with bracket_low: " << bracket_low
-          << ", bracket_high: " << bracket_high
-          << ", bracket width: " << fabs(bracket_low.x - bracket_high.x)
-          << ", bracket abs delta cost: "
-          << fabs(bracket_low.value - bracket_high.value);
-
-  // Wolfe Zoom phase: Called when the Bracketing phase finds an interval of
-  // non-zero, finite width that should bracket step sizes which satisfy the
-  // (strong) Wolfe conditions (before finding a step size that satisfies the
-  // conditions).  Zoom successively decreases the size of the interval until a
-  // step size which satisfies the Wolfe conditions is found.  The interval is
-  // defined by bracket_low & bracket_high, which satisfy:
-  //
-  //   1. The interval bounded by step sizes: bracket_low.x & bracket_high.x
-  //      contains step sizes that satisfy the strong Wolfe conditions.
-  //   2. bracket_low.x is of all the step sizes evaluated *which satisfied the
-  //      Armijo sufficient decrease condition*, the one which generated the
-  //      smallest function value, i.e. bracket_low.value <
-  //      f(all other steps satisfying Armijo).
-  //        - Note that this does _not_ (necessarily) mean that initially
-  //          bracket_low.value < bracket_high.value (although this is typical)
-  //          e.g. when bracket_low = initial_position, and bracket_high is the
-  //          first sample, and which does not satisfy the Armijo condition,
-  //          but still has bracket_high.value < initial_position.value.
-  //   3. bracket_high is chosen after bracket_low, s.t.
-  //      bracket_low.gradient * (bracket_high.x - bracket_low.x) < 0.
-  if (!this->ZoomPhase(
-          initial_position, bracket_low, bracket_high, &solution, summary) &&
-      !solution.value_is_valid) {
-    // Failed to find a valid point (given the specified decrease parameters)
-    // within the specified bracket.
-    return;
-  }
-  // Ensure that if we ran out of iterations whilst zooming the bracket, or
-  // shrank the bracket width to < tolerance and failed to find a point which
-  // satisfies the strong Wolfe curvature condition, that we return the point
-  // amongst those found thus far, which minimizes f() and satisfies the Armijo
-  // condition.
-
-  if (!solution.value_is_valid || solution.value > bracket_low.value) {
-    summary->optimal_point = bracket_low;
-  } else {
-    summary->optimal_point = solution;
-  }
-
-  summary->success = true;
-}
-
-// Returns true if either:
-//
-// A termination condition satisfying the (strong) Wolfe bracketing conditions
-// is found:
-//
-// - A valid point, defined as a bracket of zero width [zoom not required].
-// - A valid bracket (of width > tolerance), [zoom required].
-//
-// Or, searching was stopped due to an 'artificial' constraint, i.e. not
-// a condition imposed / required by the underlying algorithm, but instead an
-// engineering / implementation consideration. But a step which exceeds the
-// minimum step size, and satisfies the Armijo condition was still found,
-// and should thus be used [zoom not required].
-//
-// Returns false if no step size > minimum step size was found which
-// satisfies at least the Armijo condition.
-bool WolfeLineSearch::BracketingPhase(const FunctionSample& initial_position,
-                                      const double step_size_estimate,
-                                      FunctionSample* bracket_low,
-                                      FunctionSample* bracket_high,
-                                      bool* do_zoom_search,
-                                      Summary* summary) const {
-  LineSearchFunction* function = options().function;
-
-  FunctionSample previous = initial_position;
-  FunctionSample current;
-
-  const double descent_direction_max_norm = function->DirectionInfinityNorm();
-
-  *do_zoom_search = false;
-  *bracket_low = initial_position;
-
-  // As we require the gradient to evaluate the Wolfe condition, we always
-  // calculate it together with the value, irrespective of the interpolation
-  // type.  As opposed to only calculating the gradient after the Armijo
-  // condition is satisfied, as the computational saving from this approach
-  // would be slight (perhaps even negative due to the extra call).  Also,
-  // always calculating the value & gradient together protects against us
-  // reporting invalid solutions if the cost function returns slightly different
-  // function values when evaluated with / without gradients (due to numerical
-  // issues).
-  ++summary->num_function_evaluations;
-  ++summary->num_gradient_evaluations;
-  const bool kEvaluateGradient = true;
-  function->Evaluate(step_size_estimate, kEvaluateGradient, &current);
-  while (true) {
-    ++summary->num_iterations;
-
-    if (current.value_is_valid &&
-        (current.value > (initial_position.value +
-                          options().sufficient_decrease *
-                              initial_position.gradient * current.x) ||
-         (previous.value_is_valid && current.value > previous.value))) {
-      // Bracket found: current step size violates Armijo sufficient decrease
-      // condition, or has stepped past an inflection point of f() relative to
-      // previous step size.
-      *do_zoom_search = true;
-      *bracket_low = previous;
-      *bracket_high = current;
-      VLOG(3) << std::scientific
-              << std::setprecision(kErrorMessageNumericPrecision)
-              << "Bracket found: current step (" << current.x
-              << ") violates Armijo sufficient condition, or has passed an "
-              << "inflection point of f() based on value.";
-      break;
-    }
-
-    if (current.value_is_valid &&
-        fabs(current.gradient) <= -options().sufficient_curvature_decrease *
-                                      initial_position.gradient) {
-      // Current step size satisfies the strong Wolfe conditions, and is thus a
-      // valid termination point, therefore a Zoom not required.
-      *bracket_low = current;
-      *bracket_high = current;
-      VLOG(3) << std::scientific
-              << std::setprecision(kErrorMessageNumericPrecision)
-              << "Bracketing phase found step size: " << current.x
-              << ", satisfying strong Wolfe conditions, initial_position: "
-              << initial_position << ", current: " << current;
-      break;
-
-    } else if (current.value_is_valid && current.gradient >= 0) {
-      // Bracket found: current step size has stepped past an inflection point
-      // of f(), but Armijo sufficient decrease is still satisfied and
-      // f(current) is our best minimum thus far.  Remember step size
-      // monotonically increases, thus previous_step_size < current_step_size
-      // even though f(previous) > f(current).
-      *do_zoom_search = true;
-      // Note inverse ordering from first bracket case.
-      *bracket_low = current;
-      *bracket_high = previous;
-      VLOG(3) << "Bracket found: current step (" << current.x
-              << ") satisfies Armijo, but has gradient >= 0, thus have passed "
-              << "an inflection point of f().";
-      break;
-
-    } else if (current.value_is_valid &&
-               fabs(current.x - previous.x) * descent_direction_max_norm <
-                   options().min_step_size) {
-      // We have shrunk the search bracket to a width less than our tolerance,
-      // and still not found either a point satisfying the strong Wolfe
-      // conditions, or a valid bracket containing such a point. Stop searching
-      // and set bracket_low to the size size amongst all those tested which
-      // minimizes f() and satisfies the Armijo condition.
-
-      if (!options().is_silent) {
-        LOG(WARNING) << "Line search failed: Wolfe bracketing phase shrank "
-                     << "bracket width: " << fabs(current.x - previous.x)
-                     << ", to < tolerance: " << options().min_step_size
-                     << ", with descent_direction_max_norm: "
-                     << descent_direction_max_norm << ", and failed to find "
-                     << "a point satisfying the strong Wolfe conditions or a "
-                     << "bracketing containing such a point. Accepting "
-                     << "point found satisfying Armijo condition only, to "
-                     << "allow continuation.";
-      }
-      *bracket_low = current;
-      break;
-
-    } else if (summary->num_iterations >= options().max_num_iterations) {
-      // Check num iterations bound here so that we always evaluate the
-      // max_num_iterations-th iteration against all conditions, and
-      // then perform no additional (unused) evaluations.
-      summary->error = StringPrintf(
-          "Line search failed: Wolfe bracketing phase failed to "
-          "find a point satisfying strong Wolfe conditions, or a "
-          "bracket containing such a point within specified "
-          "max_num_iterations: %d",
-          options().max_num_iterations);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      // Ensure that bracket_low is always set to the step size amongst all
-      // those tested which minimizes f() and satisfies the Armijo condition
-      // when we terminate due to the 'artificial' max_num_iterations condition.
-      *bracket_low =
-          current.value_is_valid && current.value < bracket_low->value
-              ? current
-              : *bracket_low;
-      break;
-    }
-    // Either: f(current) is invalid; or, f(current) is valid, but does not
-    // satisfy the strong Wolfe conditions itself, or the conditions for
-    // being a boundary of a bracket.
-
-    // If f(current) is valid, (but meets no criteria) expand the search by
-    // increasing the step size.  If f(current) is invalid, contract the step
-    // size.
-    //
-    // In Nocedal & Wright [1] (p60), the step-size can only increase in the
-    // bracketing phase: step_size_{k+1} \in [step_size_k, step_size_k *
-    // factor]. However this does not account for the function returning invalid
-    // values which we support, in which case we need to contract the step size
-    // whilst ensuring that we do not invert the bracket, i.e, we require that:
-    // step_size_{k-1} <= step_size_{k+1} < step_size_k.
-    const double min_step_size =
-        current.value_is_valid ? current.x : previous.x;
-    const double max_step_size =
-        current.value_is_valid ? (current.x * options().max_step_expansion)
-                               : current.x;
-
-    // We are performing 2-point interpolation only here, but the API of
-    // InterpolatingPolynomialMinimizingStepSize() allows for up to
-    // 3-point interpolation, so pad call with a sample with an invalid
-    // value that will therefore be ignored.
-    const FunctionSample unused_previous;
-    DCHECK(!unused_previous.value_is_valid);
-    // Contracts step size if f(current) is not valid.
-    const double polynomial_minimization_start_time = WallTimeInSeconds();
-    const double step_size = this->InterpolatingPolynomialMinimizingStepSize(
-        options().interpolation_type,
-        previous,
-        unused_previous,
-        current,
-        min_step_size,
-        max_step_size);
-    summary->polynomial_minimization_time_in_seconds +=
-        (WallTimeInSeconds() - polynomial_minimization_start_time);
-    if (step_size * descent_direction_max_norm < options().min_step_size) {
-      summary->error = StringPrintf(
-          "Line search failed: step_size too small: %.5e "
-          "with descent_direction_max_norm: %.5e",
-          step_size,
-          descent_direction_max_norm);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      return false;
-    }
-
-    // Only advance the lower boundary (in x) of the bracket if f(current)
-    // is valid such that we can support contracting the step size when
-    // f(current) is invalid without risking inverting the bracket in x, i.e.
-    // prevent previous.x > current.x.
-    previous = current.value_is_valid ? current : previous;
-    ++summary->num_function_evaluations;
-    ++summary->num_gradient_evaluations;
-    function->Evaluate(step_size, kEvaluateGradient, &current);
-  }
-
-  // Ensure that even if a valid bracket was found, we will only mark a zoom
-  // as required if the bracket's width is greater than our minimum tolerance.
-  if (*do_zoom_search &&
-      fabs(bracket_high->x - bracket_low->x) * descent_direction_max_norm <
-          options().min_step_size) {
-    *do_zoom_search = false;
-  }
-
-  return true;
-}
-
-// Returns true iff solution satisfies the strong Wolfe conditions. Otherwise,
-// on return false, if we stopped searching due to the 'artificial' condition of
-// reaching max_num_iterations, solution is the step size amongst all those
-// tested, which satisfied the Armijo decrease condition and minimized f().
-bool WolfeLineSearch::ZoomPhase(const FunctionSample& initial_position,
-                                FunctionSample bracket_low,
-                                FunctionSample bracket_high,
-                                FunctionSample* solution,
-                                Summary* summary) const {
-  LineSearchFunction* function = options().function;
-
-  CHECK(bracket_low.value_is_valid && bracket_low.gradient_is_valid)
-      << std::scientific << std::setprecision(kErrorMessageNumericPrecision)
-      << "Ceres bug: f_low input to Wolfe Zoom invalid, please contact "
-      << "the developers!, initial_position: " << initial_position
-      << ", bracket_low: " << bracket_low << ", bracket_high: " << bracket_high;
-  // We do not require bracket_high.gradient_is_valid as the gradient condition
-  // for a valid bracket is only dependent upon bracket_low.gradient, and
-  // in order to minimize jacobian evaluations, bracket_high.gradient may
-  // not have been calculated (if bracket_high.value does not satisfy the
-  // Armijo sufficient decrease condition and interpolation method does not
-  // require it).
-  //
-  // We also do not require that: bracket_low.value < bracket_high.value,
-  // although this is typical. This is to deal with the case when
-  // bracket_low = initial_position, bracket_high is the first sample,
-  // and bracket_high does not satisfy the Armijo condition, but still has
-  // bracket_high.value < initial_position.value.
-  CHECK(bracket_high.value_is_valid)
-      << std::scientific << std::setprecision(kErrorMessageNumericPrecision)
-      << "Ceres bug: f_high input to Wolfe Zoom invalid, please "
-      << "contact the developers!, initial_position: " << initial_position
-      << ", bracket_low: " << bracket_low << ", bracket_high: " << bracket_high;
-
-  if (bracket_low.gradient * (bracket_high.x - bracket_low.x) >= 0) {
-    // The third condition for a valid initial bracket:
-    //
-    //   3. bracket_high is chosen after bracket_low, s.t.
-    //      bracket_low.gradient * (bracket_high.x - bracket_low.x) < 0.
-    //
-    // is not satisfied.  As this can happen when the users' cost function
-    // returns inconsistent gradient values relative to the function values,
-    // we do not CHECK_LT(), but we do stop processing and return an invalid
-    // value.
-    summary->error = StringPrintf(
-        "Line search failed: Wolfe zoom phase passed a bracket "
-        "which does not satisfy: bracket_low.gradient * "
-        "(bracket_high.x - bracket_low.x) < 0 [%.8e !< 0] "
-        "with initial_position: %s, bracket_low: %s, bracket_high:"
-        " %s, the most likely cause of which is the cost function "
-        "returning inconsistent gradient & function values.",
-        bracket_low.gradient * (bracket_high.x - bracket_low.x),
-        initial_position.ToDebugString().c_str(),
-        bracket_low.ToDebugString().c_str(),
-        bracket_high.ToDebugString().c_str());
-    if (!options().is_silent) {
-      LOG(WARNING) << summary->error;
-    }
-    solution->value_is_valid = false;
-    return false;
-  }
-
-  const int num_bracketing_iterations = summary->num_iterations;
-  const double descent_direction_max_norm = function->DirectionInfinityNorm();
-
-  while (true) {
-    // Set solution to bracket_low, as it is our best step size (smallest f())
-    // found thus far and satisfies the Armijo condition, even though it does
-    // not satisfy the Wolfe condition.
-    *solution = bracket_low;
-    if (summary->num_iterations >= options().max_num_iterations) {
-      summary->error = StringPrintf(
-          "Line search failed: Wolfe zoom phase failed to "
-          "find a point satisfying strong Wolfe conditions "
-          "within specified max_num_iterations: %d, "
-          "(num iterations taken for bracketing: %d).",
-          options().max_num_iterations,
-          num_bracketing_iterations);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      return false;
-    }
-    if (fabs(bracket_high.x - bracket_low.x) * descent_direction_max_norm <
-        options().min_step_size) {
-      // Bracket width has been reduced below tolerance, and no point satisfying
-      // the strong Wolfe conditions has been found.
-      summary->error = StringPrintf(
-          "Line search failed: Wolfe zoom bracket width: %.5e "
-          "too small with descent_direction_max_norm: %.5e.",
-          fabs(bracket_high.x - bracket_low.x),
-          descent_direction_max_norm);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      return false;
-    }
-
-    ++summary->num_iterations;
-    // Polynomial interpolation requires inputs ordered according to step size,
-    // not f(step size).
-    const FunctionSample& lower_bound_step =
-        bracket_low.x < bracket_high.x ? bracket_low : bracket_high;
-    const FunctionSample& upper_bound_step =
-        bracket_low.x < bracket_high.x ? bracket_high : bracket_low;
-    // We are performing 2-point interpolation only here, but the API of
-    // InterpolatingPolynomialMinimizingStepSize() allows for up to
-    // 3-point interpolation, so pad call with a sample with an invalid
-    // value that will therefore be ignored.
-    const FunctionSample unused_previous;
-    DCHECK(!unused_previous.value_is_valid);
-    const double polynomial_minimization_start_time = WallTimeInSeconds();
-    const double step_size = this->InterpolatingPolynomialMinimizingStepSize(
-        options().interpolation_type,
-        lower_bound_step,
-        unused_previous,
-        upper_bound_step,
-        lower_bound_step.x,
-        upper_bound_step.x);
-    summary->polynomial_minimization_time_in_seconds +=
-        (WallTimeInSeconds() - polynomial_minimization_start_time);
-    // No check on magnitude of step size being too small here as it is
-    // lower-bounded by the initial bracket start point, which was valid.
-    //
-    // As we require the gradient to evaluate the Wolfe condition, we always
-    // calculate it together with the value, irrespective of the interpolation
-    // type.  As opposed to only calculating the gradient after the Armijo
-    // condition is satisfied, as the computational saving from this approach
-    // would be slight (perhaps even negative due to the extra call).  Also,
-    // always calculating the value & gradient together protects against us
-    // reporting invalid solutions if the cost function returns slightly
-    // different function values when evaluated with / without gradients (due
-    // to numerical issues).
-    ++summary->num_function_evaluations;
-    ++summary->num_gradient_evaluations;
-    const bool kEvaluateGradient = true;
-    function->Evaluate(step_size, kEvaluateGradient, solution);
-    if (!solution->value_is_valid || !solution->gradient_is_valid) {
-      summary->error = StringPrintf(
-          "Line search failed: Wolfe Zoom phase found "
-          "step_size: %.5e, for which function is invalid, "
-          "between low_step: %.5e and high_step: %.5e "
-          "at which function is valid.",
-          solution->x,
-          bracket_low.x,
-          bracket_high.x);
-      if (!options().is_silent) {
-        LOG(WARNING) << summary->error;
-      }
-      return false;
-    }
-
-    VLOG(3) << "Zoom iteration: "
-            << summary->num_iterations - num_bracketing_iterations
-            << ", bracket_low: " << bracket_low
-            << ", bracket_high: " << bracket_high
-            << ", minimizing solution: " << *solution;
-
-    if ((solution->value > (initial_position.value +
-                            options().sufficient_decrease *
-                                initial_position.gradient * solution->x)) ||
-        (solution->value >= bracket_low.value)) {
-      // Armijo sufficient decrease not satisfied, or not better
-      // than current lowest sample, use as new upper bound.
-      bracket_high = *solution;
-      continue;
-    }
-
-    // Armijo sufficient decrease satisfied, check strong Wolfe condition.
-    if (fabs(solution->gradient) <=
-        -options().sufficient_curvature_decrease * initial_position.gradient) {
-      // Found a valid termination point satisfying strong Wolfe conditions.
-      VLOG(3) << std::scientific
-              << std::setprecision(kErrorMessageNumericPrecision)
-              << "Zoom phase found step size: " << solution->x
-              << ", satisfying strong Wolfe conditions.";
-      break;
-
-    } else if (solution->gradient * (bracket_high.x - bracket_low.x) >= 0) {
-      bracket_high = bracket_low;
-    }
-
-    bracket_low = *solution;
-  }
-  // Solution contains a valid point which satisfies the strong Wolfe
-  // conditions.
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/line_search.h b/third_party/ceres/internal/ceres/line_search.h
deleted file mode 100644
index acf85c0..0000000
--- a/third_party/ceres/internal/ceres/line_search.h
+++ /dev/null
@@ -1,306 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Interface for and implementation of various Line search algorithms.
-
-#ifndef CERES_INTERNAL_LINE_SEARCH_H_
-#define CERES_INTERNAL_LINE_SEARCH_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/function_sample.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class Evaluator;
-class LineSearchFunction;
-
-// Line search is another name for a one dimensional optimization
-// algorithm. The name "line search" comes from the fact one
-// dimensional optimization problems that arise as subproblems of
-// general multidimensional optimization problems.
-//
-// While finding the exact minimum of a one dimensional function is
-// hard, instances of LineSearch find a point that satisfies a
-// sufficient decrease condition. Depending on the particular
-// condition used, we get a variety of different line search
-// algorithms, e.g., Armijo, Wolfe etc.
-class CERES_NO_EXPORT LineSearch {
- public:
-  struct Summary;
-
-  struct CERES_NO_EXPORT Options {
-    // Degree of the polynomial used to approximate the objective
-    // function.
-    LineSearchInterpolationType interpolation_type = CUBIC;
-
-    // Armijo and Wolfe line search parameters.
-
-    // Solving the line search problem exactly is computationally
-    // prohibitive. Fortunately, line search based optimization
-    // algorithms can still guarantee convergence if instead of an
-    // exact solution, the line search algorithm returns a solution
-    // which decreases the value of the objective function
-    // sufficiently. More precisely, we are looking for a step_size
-    // s.t.
-    //
-    //  f(step_size) <= f(0) + sufficient_decrease * f'(0) * step_size
-    double sufficient_decrease = 1e-4;
-
-    // In each iteration of the Armijo / Wolfe line search,
-    //
-    // new_step_size >= max_step_contraction * step_size
-    //
-    // Note that by definition, for contraction:
-    //
-    //  0 < max_step_contraction < min_step_contraction < 1
-    //
-    double max_step_contraction = 1e-3;
-
-    // In each iteration of the Armijo / Wolfe line search,
-    //
-    // new_step_size <= min_step_contraction * step_size
-    // Note that by definition, for contraction:
-    //
-    //  0 < max_step_contraction < min_step_contraction < 1
-    //
-    double min_step_contraction = 0.9;
-
-    // If during the line search, the step_size falls below this
-    // value, it is truncated to zero.
-    double min_step_size = 1e-9;
-
-    // Maximum number of trial step size iterations during each line search,
-    // if a step size satisfying the search conditions cannot be found within
-    // this number of trials, the line search will terminate.
-    int max_num_iterations = 20;
-
-    // Wolfe-specific line search parameters.
-
-    // The strong Wolfe conditions consist of the Armijo sufficient
-    // decrease condition, and an additional requirement that the
-    // step-size be chosen s.t. the _magnitude_ ('strong' Wolfe
-    // conditions) of the gradient along the search direction
-    // decreases sufficiently. Precisely, this second condition
-    // is that we seek a step_size s.t.
-    //
-    //   |f'(step_size)| <= sufficient_curvature_decrease * |f'(0)|
-    //
-    // Where f() is the line search objective and f'() is the derivative
-    // of f w.r.t step_size (d f / d step_size).
-    double sufficient_curvature_decrease = 0.9;
-
-    // During the bracketing phase of the Wolfe search, the step size is
-    // increased until either a point satisfying the Wolfe conditions is
-    // found, or an upper bound for a bracket containing a point satisfying
-    // the conditions is found.  Precisely, at each iteration of the
-    // expansion:
-    //
-    //   new_step_size <= max_step_expansion * step_size.
-    //
-    // By definition for expansion, max_step_expansion > 1.0.
-    double max_step_expansion = 10;
-
-    bool is_silent = false;
-
-    // The one dimensional function that the line search algorithm
-    // minimizes.
-    LineSearchFunction* function = nullptr;
-  };
-
-  // Result of the line search.
-  struct Summary {
-    bool success = false;
-    FunctionSample optimal_point;
-    int num_function_evaluations = 0;
-    int num_gradient_evaluations = 0;
-    int num_iterations = 0;
-    // Cumulative time spent evaluating the value of the cost function across
-    // all iterations.
-    double cost_evaluation_time_in_seconds = 0.0;
-    // Cumulative time spent evaluating the gradient of the cost function across
-    // all iterations.
-    double gradient_evaluation_time_in_seconds = 0.0;
-    // Cumulative time spent minimizing the interpolating polynomial to compute
-    // the next candidate step size across all iterations.
-    double polynomial_minimization_time_in_seconds = 0.0;
-    double total_time_in_seconds = 0.0;
-    std::string error;
-  };
-
-  explicit LineSearch(const LineSearch::Options& options);
-  virtual ~LineSearch();
-
-  static std::unique_ptr<LineSearch> Create(
-      const LineSearchType line_search_type,
-      const LineSearch::Options& options,
-      std::string* error);
-
-  // Perform the line search.
-  //
-  // step_size_estimate must be a positive number.
-  //
-  // initial_cost and initial_gradient are the values and gradient of
-  // the function at zero.
-  // summary must not be null and will contain the result of the line
-  // search.
-  //
-  // Summary::success is true if a non-zero step size is found.
-  void Search(double step_size_estimate,
-              double initial_cost,
-              double initial_gradient,
-              Summary* summary) const;
-  double InterpolatingPolynomialMinimizingStepSize(
-      const LineSearchInterpolationType& interpolation_type,
-      const FunctionSample& lowerbound_sample,
-      const FunctionSample& previous_sample,
-      const FunctionSample& current_sample,
-      const double min_step_size,
-      const double max_step_size) const;
-
- protected:
-  const LineSearch::Options& options() const { return options_; }
-
- private:
-  virtual void DoSearch(double step_size_estimate,
-                        double initial_cost,
-                        double initial_gradient,
-                        Summary* summary) const = 0;
-
- private:
-  LineSearch::Options options_;
-};
-
-// An object used by the line search to access the function values
-// and gradient of the one dimensional function being optimized.
-//
-// In practice, this object provides access to the objective
-// function value and the directional derivative of the underlying
-// optimization problem along a specific search direction.
-class CERES_NO_EXPORT LineSearchFunction {
- public:
-  explicit LineSearchFunction(Evaluator* evaluator);
-  void Init(const Vector& position, const Vector& direction);
-
-  // Evaluate the line search objective
-  //
-  //   f(x) = p(position + x * direction)
-  //
-  // Where, p is the objective function of the general optimization
-  // problem.
-  //
-  // evaluate_gradient controls whether the gradient will be evaluated
-  // or not.
-  //
-  // On return output->*_is_valid indicate indicate whether the
-  // corresponding fields have numerically valid values or not.
-  void Evaluate(double x, bool evaluate_gradient, FunctionSample* output);
-
-  double DirectionInfinityNorm() const;
-
-  // Resets to now, the start point for the results from TimeStatistics().
-  void ResetTimeStatistics();
-  void TimeStatistics(double* cost_evaluation_time_in_seconds,
-                      double* gradient_evaluation_time_in_seconds) const;
-  const Vector& position() const { return position_; }
-  const Vector& direction() const { return direction_; }
-
- private:
-  Evaluator* evaluator_;
-  Vector position_;
-  Vector direction_;
-
-  // scaled_direction = x * direction_;
-  Vector scaled_direction_;
-
-  // We may not exclusively own the evaluator (e.g. in the Trust Region
-  // minimizer), hence we need to save the initial evaluation durations for the
-  // value & gradient to accurately determine the duration of the evaluations
-  // we invoked.  These are reset by a call to ResetTimeStatistics().
-  double initial_evaluator_residual_time_in_seconds;
-  double initial_evaluator_jacobian_time_in_seconds;
-};
-
-// Backtracking and interpolation based Armijo line search. This
-// implementation is based on the Armijo line search that ships in the
-// minFunc package by Mark Schmidt.
-//
-// For more details: http://www.di.ens.fr/~mschmidt/Software/minFunc.html
-class CERES_NO_EXPORT ArmijoLineSearch final : public LineSearch {
- public:
-  explicit ArmijoLineSearch(const LineSearch::Options& options);
-
- private:
-  void DoSearch(double step_size_estimate,
-                double initial_cost,
-                double initial_gradient,
-                Summary* summary) const final;
-};
-
-// Bracketing / Zoom Strong Wolfe condition line search.  This implementation
-// is based on the pseudo-code algorithm presented in Nocedal & Wright [1]
-// (p60-61) with inspiration from the WolfeLineSearch which ships with the
-// minFunc package by Mark Schmidt [2].
-//
-// [1] Nocedal J., Wright S., Numerical Optimization, 2nd Ed., Springer, 1999.
-// [2] http://www.di.ens.fr/~mschmidt/Software/minFunc.html.
-class CERES_NO_EXPORT WolfeLineSearch final : public LineSearch {
- public:
-  explicit WolfeLineSearch(const LineSearch::Options& options);
-
-  // Returns true iff either a valid point, or valid bracket are found.
-  bool BracketingPhase(const FunctionSample& initial_position,
-                       const double step_size_estimate,
-                       FunctionSample* bracket_low,
-                       FunctionSample* bracket_high,
-                       bool* perform_zoom_search,
-                       Summary* summary) const;
-  // Returns true iff final_line_sample satisfies strong Wolfe conditions.
-  bool ZoomPhase(const FunctionSample& initial_position,
-                 FunctionSample bracket_low,
-                 FunctionSample bracket_high,
-                 FunctionSample* solution,
-                 Summary* summary) const;
-
- private:
-  void DoSearch(double step_size_estimate,
-                double initial_cost,
-                double initial_gradient,
-                Summary* summary) const final;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_LINE_SEARCH_H_
diff --git a/third_party/ceres/internal/ceres/line_search_direction.cc b/third_party/ceres/internal/ceres/line_search_direction.cc
deleted file mode 100644
index 62fcc81..0000000
--- a/third_party/ceres/internal/ceres/line_search_direction.cc
+++ /dev/null
@@ -1,369 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/line_search_direction.h"
-
-#include <memory>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/line_search_minimizer.h"
-#include "ceres/low_rank_inverse_hessian.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT SteepestDescent final : public LineSearchDirection {
- public:
-  bool NextDirection(const LineSearchMinimizer::State& /*previous*/,
-                     const LineSearchMinimizer::State& current,
-                     Vector* search_direction) override {
-    *search_direction = -current.gradient;
-    return true;
-  }
-};
-
-class CERES_NO_EXPORT NonlinearConjugateGradient final
-    : public LineSearchDirection {
- public:
-  NonlinearConjugateGradient(const NonlinearConjugateGradientType type,
-                             const double function_tolerance)
-      : type_(type), function_tolerance_(function_tolerance) {}
-
-  bool NextDirection(const LineSearchMinimizer::State& previous,
-                     const LineSearchMinimizer::State& current,
-                     Vector* search_direction) override {
-    double beta = 0.0;
-    Vector gradient_change;
-    switch (type_) {
-      case FLETCHER_REEVES:
-        beta = current.gradient_squared_norm / previous.gradient_squared_norm;
-        break;
-      case POLAK_RIBIERE:
-        gradient_change = current.gradient - previous.gradient;
-        beta = (current.gradient.dot(gradient_change) /
-                previous.gradient_squared_norm);
-        break;
-      case HESTENES_STIEFEL:
-        gradient_change = current.gradient - previous.gradient;
-        beta = (current.gradient.dot(gradient_change) /
-                previous.search_direction.dot(gradient_change));
-        break;
-      default:
-        LOG(FATAL) << "Unknown nonlinear conjugate gradient type: " << type_;
-    }
-
-    *search_direction = -current.gradient + beta * previous.search_direction;
-    const double directional_derivative =
-        current.gradient.dot(*search_direction);
-    if (directional_derivative > -function_tolerance_) {
-      LOG(WARNING) << "Restarting non-linear conjugate gradients: "
-                   << directional_derivative;
-      *search_direction = -current.gradient;
-    }
-
-    return true;
-  }
-
- private:
-  const NonlinearConjugateGradientType type_;
-  const double function_tolerance_;
-};
-
-class CERES_NO_EXPORT LBFGS final : public LineSearchDirection {
- public:
-  LBFGS(const int num_parameters,
-        const int max_lbfgs_rank,
-        const bool use_approximate_eigenvalue_bfgs_scaling)
-      : low_rank_inverse_hessian_(num_parameters,
-                                  max_lbfgs_rank,
-                                  use_approximate_eigenvalue_bfgs_scaling),
-        is_positive_definite_(true) {}
-
-  bool NextDirection(const LineSearchMinimizer::State& previous,
-                     const LineSearchMinimizer::State& current,
-                     Vector* search_direction) override {
-    CHECK(is_positive_definite_)
-        << "Ceres bug: NextDirection() called on L-BFGS after inverse Hessian "
-        << "approximation has become indefinite, please contact the "
-        << "developers!";
-
-    low_rank_inverse_hessian_.Update(
-        previous.search_direction * previous.step_size,
-        current.gradient - previous.gradient);
-
-    search_direction->setZero();
-    low_rank_inverse_hessian_.RightMultiplyAndAccumulate(
-        current.gradient.data(), search_direction->data());
-    *search_direction *= -1.0;
-
-    if (search_direction->dot(current.gradient) >= 0.0) {
-      LOG(WARNING) << "Numerical failure in L-BFGS update: inverse Hessian "
-                   << "approximation is not positive definite, and thus "
-                   << "initial gradient for search direction is positive: "
-                   << search_direction->dot(current.gradient);
-      is_positive_definite_ = false;
-      return false;
-    }
-
-    return true;
-  }
-
- private:
-  LowRankInverseHessian low_rank_inverse_hessian_;
-  bool is_positive_definite_;
-};
-
-class CERES_NO_EXPORT BFGS final : public LineSearchDirection {
- public:
-  BFGS(const int num_parameters, const bool use_approximate_eigenvalue_scaling)
-      : num_parameters_(num_parameters),
-        use_approximate_eigenvalue_scaling_(use_approximate_eigenvalue_scaling),
-        initialized_(false),
-        is_positive_definite_(true) {
-    if (num_parameters_ >= 1000) {
-      LOG(WARNING) << "BFGS line search being created with: " << num_parameters_
-                   << " parameters, this will allocate a dense approximate "
-                   << "inverse Hessian of size: " << num_parameters_ << " x "
-                   << num_parameters_
-                   << ", consider using the L-BFGS memory-efficient line "
-                   << "search direction instead.";
-    }
-    // Construct inverse_hessian_ after logging warning about size s.t. if the
-    // allocation crashes us, the log will highlight what the issue likely was.
-    inverse_hessian_ = Matrix::Identity(num_parameters, num_parameters);
-  }
-
-  bool NextDirection(const LineSearchMinimizer::State& previous,
-                     const LineSearchMinimizer::State& current,
-                     Vector* search_direction) override {
-    CHECK(is_positive_definite_)
-        << "Ceres bug: NextDirection() called on BFGS after inverse Hessian "
-        << "approximation has become indefinite, please contact the "
-        << "developers!";
-
-    const Vector delta_x = previous.search_direction * previous.step_size;
-    const Vector delta_gradient = current.gradient - previous.gradient;
-    const double delta_x_dot_delta_gradient = delta_x.dot(delta_gradient);
-
-    // The (L)BFGS algorithm explicitly requires that the secant equation:
-    //
-    //   B_{k+1} * s_k = y_k
-    //
-    // Is satisfied at each iteration, where B_{k+1} is the approximated
-    // Hessian at the k+1-th iteration, s_k = (x_{k+1} - x_{k}) and
-    // y_k = (grad_{k+1} - grad_{k}). As the approximated Hessian must be
-    // positive definite, this is equivalent to the condition:
-    //
-    //   s_k^T * y_k > 0     [s_k^T * B_{k+1} * s_k = s_k^T * y_k > 0]
-    //
-    // This condition would always be satisfied if the function was strictly
-    // convex, alternatively, it is always satisfied provided that a Wolfe line
-    // search is used (even if the function is not strictly convex).  See [1]
-    // (p138) for a proof.
-    //
-    // Although Ceres will always use a Wolfe line search when using (L)BFGS,
-    // practical implementation considerations mean that the line search
-    // may return a point that satisfies only the Armijo condition, and thus
-    // could violate the Secant equation.  As such, we will only use a step
-    // to update the Hessian approximation if:
-    //
-    //   s_k^T * y_k > tolerance
-    //
-    // It is important that tolerance is very small (and >=0), as otherwise we
-    // might skip the update too often and fail to capture important curvature
-    // information in the Hessian.  For example going from 1e-10 -> 1e-14
-    // improves the NIST benchmark score from 43/54 to 53/54.
-    //
-    // [1] Nocedal J, Wright S, Numerical Optimization, 2nd Ed. Springer, 1999.
-    //
-    // TODO(alexs.mac): Consider using Damped BFGS update instead of
-    // skipping update.
-    const double kBFGSSecantConditionHessianUpdateTolerance = 1e-14;
-    if (delta_x_dot_delta_gradient <=
-        kBFGSSecantConditionHessianUpdateTolerance) {
-      VLOG(2) << "Skipping BFGS Update, delta_x_dot_delta_gradient too "
-              << "small: " << delta_x_dot_delta_gradient
-              << ", tolerance: " << kBFGSSecantConditionHessianUpdateTolerance
-              << " (Secant condition).";
-    } else {
-      // Update dense inverse Hessian approximation.
-
-      if (!initialized_ && use_approximate_eigenvalue_scaling_) {
-        // Rescale the initial inverse Hessian approximation (H_0) to be
-        // iteratively updated so that it is of similar 'size' to the true
-        // inverse Hessian at the start point.  As shown in [1]:
-        //
-        //   \gamma = (delta_gradient_{0}' * delta_x_{0}) /
-        //            (delta_gradient_{0}' * delta_gradient_{0})
-        //
-        // Satisfies:
-        //
-        //   (1 / \lambda_m) <= \gamma <= (1 / \lambda_1)
-        //
-        // Where \lambda_1 & \lambda_m are the smallest and largest eigenvalues
-        // of the true initial Hessian (not the inverse) respectively. Thus,
-        // \gamma is an approximate eigenvalue of the true inverse Hessian, and
-        // choosing: H_0 = I * \gamma will yield a starting point that has a
-        // similar scale to the true inverse Hessian.  This technique is widely
-        // reported to often improve convergence, however this is not
-        // universally true, particularly if there are errors in the initial
-        // gradients, or if there are significant differences in the sensitivity
-        // of the problem to the parameters (i.e. the range of the magnitudes of
-        // the components of the gradient is large).
-        //
-        // The original origin of this rescaling trick is somewhat unclear, the
-        // earliest reference appears to be Oren [1], however it is widely
-        // discussed without specific attribution in various texts including
-        // [2] (p143).
-        //
-        // [1] Oren S.S., Self-scaling variable metric (SSVM) algorithms
-        //     Part II: Implementation and experiments, Management Science,
-        //     20(5), 863-874, 1974.
-        // [2] Nocedal J., Wright S., Numerical Optimization, Springer, 1999.
-        const double approximate_eigenvalue_scale =
-            delta_x_dot_delta_gradient / delta_gradient.dot(delta_gradient);
-        inverse_hessian_ *= approximate_eigenvalue_scale;
-
-        VLOG(4) << "Applying approximate_eigenvalue_scale: "
-                << approximate_eigenvalue_scale << " to initial inverse "
-                << "Hessian approximation.";
-      }
-      initialized_ = true;
-
-      // Efficient O(num_parameters^2) BFGS update [2].
-      //
-      // Starting from dense BFGS update detailed in Nocedal [2] p140/177 and
-      // using: y_k = delta_gradient, s_k = delta_x:
-      //
-      //   \rho_k = 1.0 / (s_k' * y_k)
-      //   V_k = I - \rho_k * y_k * s_k'
-      //   H_k = (V_k' * H_{k-1} * V_k) + (\rho_k * s_k * s_k')
-      //
-      // This update involves matrix, matrix products which naively O(N^3),
-      // however we can exploit our knowledge that H_k is positive definite
-      // and thus by defn. symmetric to reduce the cost of the update:
-      //
-      // Expanding the update above yields:
-      //
-      //   H_k = H_{k-1} +
-      //         \rho_k * ( (1.0 + \rho_k * y_k' * H_k * y_k) * s_k * s_k' -
-      //                    (s_k * y_k' * H_k + H_k * y_k * s_k') )
-      //
-      // Using: A = (s_k * y_k' * H_k), and the knowledge that H_k = H_k', the
-      // last term simplifies to (A + A'). Note that although A is not symmetric
-      // (A + A') is symmetric. For ease of construction we also define
-      // B = (1 + \rho_k * y_k' * H_k * y_k) * s_k * s_k', which is by defn
-      // symmetric due to construction from: s_k * s_k'.
-      //
-      // Now we can write the BFGS update as:
-      //
-      //   H_k = H_{k-1} + \rho_k * (B - (A + A'))
-
-      // For efficiency, as H_k is by defn. symmetric, we will only maintain the
-      // *lower* triangle of H_k (and all intermediary terms).
-
-      const double rho_k = 1.0 / delta_x_dot_delta_gradient;
-
-      // Calculate: A = s_k * y_k' * H_k
-      Matrix A = delta_x * (delta_gradient.transpose() *
-                            inverse_hessian_.selfadjointView<Eigen::Lower>());
-
-      // Calculate scalar: (1 + \rho_k * y_k' * H_k * y_k)
-      const double delta_x_times_delta_x_transpose_scale_factor =
-          (1.0 +
-           (rho_k * delta_gradient.transpose() *
-            inverse_hessian_.selfadjointView<Eigen::Lower>() * delta_gradient));
-      // Calculate: B = (1 + \rho_k * y_k' * H_k * y_k) * s_k * s_k'
-      Matrix B = Matrix::Zero(num_parameters_, num_parameters_);
-      B.selfadjointView<Eigen::Lower>().rankUpdate(
-          delta_x, delta_x_times_delta_x_transpose_scale_factor);
-
-      // Finally, update inverse Hessian approximation according to:
-      // H_k = H_{k-1} + \rho_k * (B - (A + A')).  Note that (A + A') is
-      // symmetric, even though A is not.
-      inverse_hessian_.triangularView<Eigen::Lower>() +=
-          rho_k * (B - A - A.transpose());
-    }
-
-    *search_direction = inverse_hessian_.selfadjointView<Eigen::Lower>() *
-                        (-1.0 * current.gradient);
-
-    if (search_direction->dot(current.gradient) >= 0.0) {
-      LOG(WARNING) << "Numerical failure in BFGS update: inverse Hessian "
-                   << "approximation is not positive definite, and thus "
-                   << "initial gradient for search direction is positive: "
-                   << search_direction->dot(current.gradient);
-      is_positive_definite_ = false;
-      return false;
-    }
-
-    return true;
-  }
-
- private:
-  const int num_parameters_;
-  const bool use_approximate_eigenvalue_scaling_;
-  Matrix inverse_hessian_;
-  bool initialized_;
-  bool is_positive_definite_;
-};
-
-LineSearchDirection::~LineSearchDirection() = default;
-
-std::unique_ptr<LineSearchDirection> LineSearchDirection::Create(
-    const LineSearchDirection::Options& options) {
-  if (options.type == STEEPEST_DESCENT) {
-    return std::make_unique<SteepestDescent>();
-  }
-
-  if (options.type == NONLINEAR_CONJUGATE_GRADIENT) {
-    return std::make_unique<NonlinearConjugateGradient>(
-        options.nonlinear_conjugate_gradient_type, options.function_tolerance);
-  }
-
-  if (options.type == ceres::LBFGS) {
-    return std::make_unique<ceres::internal::LBFGS>(
-        options.num_parameters,
-        options.max_lbfgs_rank,
-        options.use_approximate_eigenvalue_bfgs_scaling);
-  }
-
-  if (options.type == ceres::BFGS) {
-    return std::make_unique<ceres::internal::BFGS>(
-        options.num_parameters,
-        options.use_approximate_eigenvalue_bfgs_scaling);
-  }
-
-  LOG(ERROR) << "Unknown line search direction type: " << options.type;
-  return nullptr;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/line_search_direction.h b/third_party/ceres/internal/ceres/line_search_direction.h
deleted file mode 100644
index 6716840..0000000
--- a/third_party/ceres/internal/ceres/line_search_direction.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_LINE_SEARCH_DIRECTION_H_
-#define CERES_INTERNAL_LINE_SEARCH_DIRECTION_H_
-
-#include <memory>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/line_search_minimizer.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT LineSearchDirection {
- public:
-  struct Options {
-    int num_parameters{0};
-    LineSearchDirectionType type{LBFGS};
-    NonlinearConjugateGradientType nonlinear_conjugate_gradient_type{
-        FLETCHER_REEVES};
-    double function_tolerance{1e-12};
-    int max_lbfgs_rank{20};
-    bool use_approximate_eigenvalue_bfgs_scaling{true};
-  };
-
-  static std::unique_ptr<LineSearchDirection> Create(const Options& options);
-
-  virtual ~LineSearchDirection();
-  virtual bool NextDirection(const LineSearchMinimizer::State& previous,
-                             const LineSearchMinimizer::State& current,
-                             Vector* search_direction) = 0;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_LINE_SEARCH_DIRECTION_H_
diff --git a/third_party/ceres/internal/ceres/line_search_minimizer.cc b/third_party/ceres/internal/ceres/line_search_minimizer.cc
deleted file mode 100644
index 58a4bf9..0000000
--- a/third_party/ceres/internal/ceres/line_search_minimizer.cc
+++ /dev/null
@@ -1,475 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Generic loop for line search based optimization algorithms.
-//
-// This is primarily inspired by the minFunc packaged written by Mark
-// Schmidt.
-//
-// http://www.di.ens.fr/~mschmidt/Software/minFunc.html
-//
-// For details on the theory and implementation see "Numerical
-// Optimization" by Nocedal & Wright.
-
-#include "ceres/line_search_minimizer.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstdlib>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/array_utils.h"
-#include "ceres/evaluator.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/line_search.h"
-#include "ceres/line_search_direction.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-namespace {
-
-bool EvaluateGradientNorms(Evaluator* evaluator,
-                           const Vector& x,
-                           LineSearchMinimizer::State* state,
-                           std::string* message) {
-  Vector negative_gradient = -state->gradient;
-  Vector projected_gradient_step(x.size());
-  if (!evaluator->Plus(
-          x.data(), negative_gradient.data(), projected_gradient_step.data())) {
-    *message = "projected_gradient_step = Plus(x, -gradient) failed.";
-    return false;
-  }
-
-  state->gradient_squared_norm = (x - projected_gradient_step).squaredNorm();
-  state->gradient_max_norm =
-      (x - projected_gradient_step).lpNorm<Eigen::Infinity>();
-  return true;
-}
-
-}  // namespace
-
-void LineSearchMinimizer::Minimize(const Minimizer::Options& options,
-                                   double* parameters,
-                                   Solver::Summary* summary) {
-  const bool is_not_silent = !options.is_silent;
-  double start_time = WallTimeInSeconds();
-  double iteration_start_time = start_time;
-
-  CHECK(options.evaluator != nullptr);
-  Evaluator* evaluator = options.evaluator.get();
-  const int num_parameters = evaluator->NumParameters();
-  const int num_effective_parameters = evaluator->NumEffectiveParameters();
-
-  summary->termination_type = NO_CONVERGENCE;
-  summary->num_successful_steps = 0;
-  summary->num_unsuccessful_steps = 0;
-
-  VectorRef x(parameters, num_parameters);
-
-  State current_state(num_parameters, num_effective_parameters);
-  State previous_state(num_parameters, num_effective_parameters);
-
-  IterationSummary iteration_summary;
-  iteration_summary.iteration = 0;
-  iteration_summary.step_is_valid = false;
-  iteration_summary.step_is_successful = false;
-  iteration_summary.cost_change = 0.0;
-  iteration_summary.gradient_max_norm = 0.0;
-  iteration_summary.gradient_norm = 0.0;
-  iteration_summary.step_norm = 0.0;
-  iteration_summary.linear_solver_iterations = 0;
-  iteration_summary.step_solver_time_in_seconds = 0;
-
-  // Do initial cost and gradient evaluation.
-  if (!evaluator->Evaluate(x.data(),
-                           &(current_state.cost),
-                           nullptr,
-                           current_state.gradient.data(),
-                           nullptr)) {
-    summary->termination_type = FAILURE;
-    summary->message = "Initial cost and jacobian evaluation failed.";
-    if (is_not_silent) {
-      LOG(WARNING) << "Terminating: " << summary->message;
-    }
-    return;
-  }
-
-  if (!EvaluateGradientNorms(evaluator, x, &current_state, &summary->message)) {
-    summary->termination_type = FAILURE;
-    summary->message =
-        "Initial cost and jacobian evaluation failed. More details: " +
-        summary->message;
-    if (is_not_silent) {
-      LOG(WARNING) << "Terminating: " << summary->message;
-    }
-    return;
-  }
-
-  summary->initial_cost = current_state.cost + summary->fixed_cost;
-  iteration_summary.cost = current_state.cost + summary->fixed_cost;
-
-  iteration_summary.gradient_norm = sqrt(current_state.gradient_squared_norm);
-  iteration_summary.gradient_max_norm = current_state.gradient_max_norm;
-  if (iteration_summary.gradient_max_norm <= options.gradient_tolerance) {
-    summary->message =
-        StringPrintf("Gradient tolerance reached. Gradient max norm: %e <= %e",
-                     iteration_summary.gradient_max_norm,
-                     options.gradient_tolerance);
-    summary->termination_type = CONVERGENCE;
-    if (is_not_silent) {
-      VLOG(1) << "Terminating: " << summary->message;
-    }
-    return;
-  }
-
-  iteration_summary.iteration_time_in_seconds =
-      WallTimeInSeconds() - iteration_start_time;
-  iteration_summary.cumulative_time_in_seconds =
-      WallTimeInSeconds() - start_time + summary->preprocessor_time_in_seconds;
-  summary->iterations.push_back(iteration_summary);
-
-  LineSearchDirection::Options line_search_direction_options;
-  line_search_direction_options.num_parameters = num_effective_parameters;
-  line_search_direction_options.type = options.line_search_direction_type;
-  line_search_direction_options.nonlinear_conjugate_gradient_type =
-      options.nonlinear_conjugate_gradient_type;
-  line_search_direction_options.max_lbfgs_rank = options.max_lbfgs_rank;
-  line_search_direction_options.use_approximate_eigenvalue_bfgs_scaling =
-      options.use_approximate_eigenvalue_bfgs_scaling;
-  std::unique_ptr<LineSearchDirection> line_search_direction =
-      LineSearchDirection::Create(line_search_direction_options);
-
-  LineSearchFunction line_search_function(evaluator);
-
-  LineSearch::Options line_search_options;
-  line_search_options.interpolation_type =
-      options.line_search_interpolation_type;
-  line_search_options.min_step_size = options.min_line_search_step_size;
-  line_search_options.sufficient_decrease =
-      options.line_search_sufficient_function_decrease;
-  line_search_options.max_step_contraction =
-      options.max_line_search_step_contraction;
-  line_search_options.min_step_contraction =
-      options.min_line_search_step_contraction;
-  line_search_options.max_num_iterations =
-      options.max_num_line_search_step_size_iterations;
-  line_search_options.sufficient_curvature_decrease =
-      options.line_search_sufficient_curvature_decrease;
-  line_search_options.max_step_expansion =
-      options.max_line_search_step_expansion;
-  line_search_options.is_silent = options.is_silent;
-  line_search_options.function = &line_search_function;
-
-  std::unique_ptr<LineSearch> line_search(LineSearch::Create(
-      options.line_search_type, line_search_options, &summary->message));
-  if (line_search.get() == nullptr) {
-    summary->termination_type = FAILURE;
-    if (is_not_silent) {
-      LOG(ERROR) << "Terminating: " << summary->message;
-    }
-    return;
-  }
-
-  LineSearch::Summary line_search_summary;
-  int num_line_search_direction_restarts = 0;
-
-  while (true) {
-    if (!RunCallbacks(options, iteration_summary, summary)) {
-      break;
-    }
-
-    iteration_start_time = WallTimeInSeconds();
-    if (iteration_summary.iteration >= options.max_num_iterations) {
-      summary->message = "Maximum number of iterations reached.";
-      summary->termination_type = NO_CONVERGENCE;
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      break;
-    }
-
-    const double total_solver_time = iteration_start_time - start_time +
-                                     summary->preprocessor_time_in_seconds;
-    if (total_solver_time >= options.max_solver_time_in_seconds) {
-      summary->message = "Maximum solver time reached.";
-      summary->termination_type = NO_CONVERGENCE;
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      break;
-    }
-
-    iteration_summary = IterationSummary();
-    iteration_summary.iteration = summary->iterations.back().iteration + 1;
-    iteration_summary.step_is_valid = false;
-    iteration_summary.step_is_successful = false;
-
-    bool line_search_status = true;
-    if (iteration_summary.iteration == 1) {
-      current_state.search_direction = -current_state.gradient;
-    } else {
-      line_search_status = line_search_direction->NextDirection(
-          previous_state, current_state, &current_state.search_direction);
-    }
-
-    if (!line_search_status &&
-        num_line_search_direction_restarts >=
-            options.max_num_line_search_direction_restarts) {
-      // Line search direction failed to generate a new direction, and we
-      // have already reached our specified maximum number of restarts,
-      // terminate optimization.
-      summary->message = StringPrintf(
-          "Line search direction failure: specified "
-          "max_num_line_search_direction_restarts: %d reached.",
-          options.max_num_line_search_direction_restarts);
-      summary->termination_type = FAILURE;
-      if (is_not_silent) {
-        LOG(WARNING) << "Terminating: " << summary->message;
-      }
-      break;
-    } else if (!line_search_status) {
-      // Restart line search direction with gradient descent on first iteration
-      // as we have not yet reached our maximum number of restarts.
-      CHECK_LT(num_line_search_direction_restarts,
-               options.max_num_line_search_direction_restarts);
-
-      ++num_line_search_direction_restarts;
-      if (is_not_silent) {
-        LOG(WARNING) << "Line search direction algorithm: "
-                     << LineSearchDirectionTypeToString(
-                            options.line_search_direction_type)
-                     << ", failed to produce a valid new direction at "
-                     << "iteration: " << iteration_summary.iteration
-                     << ". Restarting, number of restarts: "
-                     << num_line_search_direction_restarts << " / "
-                     << options.max_num_line_search_direction_restarts
-                     << " [max].";
-      }
-      line_search_direction =
-          LineSearchDirection::Create(line_search_direction_options);
-      current_state.search_direction = -current_state.gradient;
-    }
-
-    line_search_function.Init(x, current_state.search_direction);
-    current_state.directional_derivative =
-        current_state.gradient.dot(current_state.search_direction);
-
-    // TODO(sameeragarwal): Refactor this into its own object and add
-    // explanations for the various choices.
-    //
-    // Note that we use !line_search_status to ensure that we treat cases when
-    // we restarted the line search direction equivalently to the first
-    // iteration.
-    const double initial_step_size =
-        (iteration_summary.iteration == 1 || !line_search_status)
-            ? std::min(1.0, 1.0 / current_state.gradient_max_norm)
-            : std::min(1.0,
-                       2.0 * (current_state.cost - previous_state.cost) /
-                           current_state.directional_derivative);
-    // By definition, we should only ever go forwards along the specified search
-    // direction in a line search, most likely cause for this being violated
-    // would be a numerical failure in the line search direction calculation.
-    if (initial_step_size < 0.0) {
-      summary->message = StringPrintf(
-          "Numerical failure in line search, initial_step_size is "
-          "negative: %.5e, directional_derivative: %.5e, "
-          "(current_cost - previous_cost): %.5e",
-          initial_step_size,
-          current_state.directional_derivative,
-          (current_state.cost - previous_state.cost));
-      summary->termination_type = FAILURE;
-      if (is_not_silent) {
-        LOG(WARNING) << "Terminating: " << summary->message;
-      }
-      break;
-    }
-
-    line_search->Search(initial_step_size,
-                        current_state.cost,
-                        current_state.directional_derivative,
-                        &line_search_summary);
-    if (!line_search_summary.success) {
-      summary->message = StringPrintf(
-          "Numerical failure in line search, failed to find "
-          "a valid step size, (did not run out of iterations) "
-          "using initial_step_size: %.5e, initial_cost: %.5e, "
-          "initial_gradient: %.5e.",
-          initial_step_size,
-          current_state.cost,
-          current_state.directional_derivative);
-      if (is_not_silent) {
-        LOG(WARNING) << "Terminating: " << summary->message;
-      }
-      summary->termination_type = FAILURE;
-      break;
-    }
-
-    const FunctionSample& optimal_point = line_search_summary.optimal_point;
-    CHECK(optimal_point.vector_x_is_valid)
-        << "Congratulations, you found a bug in Ceres. Please report it.";
-    current_state.step_size = optimal_point.x;
-    previous_state = current_state;
-    iteration_summary.step_solver_time_in_seconds =
-        WallTimeInSeconds() - iteration_start_time;
-
-    if (optimal_point.vector_gradient_is_valid) {
-      current_state.cost = optimal_point.value;
-      current_state.gradient = optimal_point.vector_gradient;
-    } else {
-      Evaluator::EvaluateOptions evaluate_options;
-      evaluate_options.new_evaluation_point = false;
-      if (!evaluator->Evaluate(evaluate_options,
-                               optimal_point.vector_x.data(),
-                               &(current_state.cost),
-                               nullptr,
-                               current_state.gradient.data(),
-                               nullptr)) {
-        summary->termination_type = FAILURE;
-        summary->message = "Cost and jacobian evaluation failed.";
-        if (is_not_silent) {
-          LOG(WARNING) << "Terminating: " << summary->message;
-        }
-        return;
-      }
-    }
-
-    if (!EvaluateGradientNorms(evaluator,
-                               optimal_point.vector_x,
-                               &current_state,
-                               &summary->message)) {
-      summary->termination_type = FAILURE;
-      summary->message =
-          "Step failed to evaluate. This should not happen as the step was "
-          "valid when it was selected by the line search. More details: " +
-          summary->message;
-      if (is_not_silent) {
-        LOG(WARNING) << "Terminating: " << summary->message;
-      }
-      break;
-    }
-
-    // Compute the norm of the step in the ambient space.
-    iteration_summary.step_norm = (optimal_point.vector_x - x).norm();
-    const double x_norm = x.norm();
-    x = optimal_point.vector_x;
-
-    iteration_summary.gradient_max_norm = current_state.gradient_max_norm;
-    iteration_summary.gradient_norm = sqrt(current_state.gradient_squared_norm);
-    iteration_summary.cost_change = previous_state.cost - current_state.cost;
-    iteration_summary.cost = current_state.cost + summary->fixed_cost;
-
-    iteration_summary.step_is_valid = true;
-    iteration_summary.step_is_successful = true;
-    iteration_summary.step_size = current_state.step_size;
-    iteration_summary.line_search_function_evaluations =
-        line_search_summary.num_function_evaluations;
-    iteration_summary.line_search_gradient_evaluations =
-        line_search_summary.num_gradient_evaluations;
-    iteration_summary.line_search_iterations =
-        line_search_summary.num_iterations;
-    iteration_summary.iteration_time_in_seconds =
-        WallTimeInSeconds() - iteration_start_time;
-    iteration_summary.cumulative_time_in_seconds =
-        WallTimeInSeconds() - start_time +
-        summary->preprocessor_time_in_seconds;
-    summary->iterations.push_back(iteration_summary);
-
-    // Iterations inside the line search algorithm are considered
-    // 'steps' in the broader context, to distinguish these inner
-    // iterations from from the outer iterations of the line search
-    // minimizer. The number of line search steps is the total number
-    // of inner line search iterations (or steps) across the entire
-    // minimization.
-    summary->num_line_search_steps += line_search_summary.num_iterations;
-    summary->line_search_cost_evaluation_time_in_seconds +=
-        line_search_summary.cost_evaluation_time_in_seconds;
-    summary->line_search_gradient_evaluation_time_in_seconds +=
-        line_search_summary.gradient_evaluation_time_in_seconds;
-    summary->line_search_polynomial_minimization_time_in_seconds +=
-        line_search_summary.polynomial_minimization_time_in_seconds;
-    summary->line_search_total_time_in_seconds +=
-        line_search_summary.total_time_in_seconds;
-    ++summary->num_successful_steps;
-
-    const double step_size_tolerance =
-        options.parameter_tolerance * (x_norm + options.parameter_tolerance);
-    if (iteration_summary.step_norm <= step_size_tolerance) {
-      summary->message = StringPrintf(
-          "Parameter tolerance reached. "
-          "Relative step_norm: %e <= %e.",
-          (iteration_summary.step_norm /
-           (x_norm + options.parameter_tolerance)),
-          options.parameter_tolerance);
-      summary->termination_type = CONVERGENCE;
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      return;
-    }
-
-    if (iteration_summary.gradient_max_norm <= options.gradient_tolerance) {
-      summary->message = StringPrintf(
-          "Gradient tolerance reached. "
-          "Gradient max norm: %e <= %e",
-          iteration_summary.gradient_max_norm,
-          options.gradient_tolerance);
-      summary->termination_type = CONVERGENCE;
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      break;
-    }
-
-    const double absolute_function_tolerance =
-        options.function_tolerance * std::abs(previous_state.cost);
-    if (std::abs(iteration_summary.cost_change) <=
-        absolute_function_tolerance) {
-      summary->message = StringPrintf(
-          "Function tolerance reached. "
-          "|cost_change|/cost: %e <= %e",
-          std::abs(iteration_summary.cost_change) / previous_state.cost,
-          options.function_tolerance);
-      summary->termination_type = CONVERGENCE;
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      break;
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/line_search_minimizer.h b/third_party/ceres/internal/ceres/line_search_minimizer.h
deleted file mode 100644
index f3621d9..0000000
--- a/third_party/ceres/internal/ceres/line_search_minimizer.h
+++ /dev/null
@@ -1,73 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_LINE_SEARCH_MINIMIZER_H_
-#define CERES_INTERNAL_LINE_SEARCH_MINIMIZER_H_
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/minimizer.h"
-#include "ceres/solver.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Generic line search minimization algorithm.
-//
-// For example usage, see SolverImpl::Minimize.
-class CERES_NO_EXPORT LineSearchMinimizer final : public Minimizer {
- public:
-  struct State {
-    State(int /*num_parameters*/, int num_effective_parameters)
-        : cost(0.0),
-          gradient(num_effective_parameters),
-          gradient_squared_norm(0.0),
-          search_direction(num_effective_parameters),
-          directional_derivative(0.0),
-          step_size(0.0) {}
-
-    double cost;
-    Vector gradient;
-    double gradient_squared_norm;
-    double gradient_max_norm;
-    Vector search_direction;
-    double directional_derivative;
-    double step_size;
-  };
-
-  void Minimize(const Minimizer::Options& options,
-                double* parameters,
-                Solver::Summary* summary) final;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_LINE_SEARCH_MINIMIZER_H_
diff --git a/third_party/ceres/internal/ceres/line_search_minimizer_test.cc b/third_party/ceres/internal/ceres/line_search_minimizer_test.cc
deleted file mode 100644
index 3b15ae8..0000000
--- a/third_party/ceres/internal/ceres/line_search_minimizer_test.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <cmath>
-#include <cstdlib>
-
-#include "ceres/ceres.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class QuadraticFirstOrderFunction : public ceres::FirstOrderFunction {
- public:
-  bool Evaluate(const double* parameters,
-                double* cost,
-                double* gradient) const final {
-    cost[0] = parameters[0] * parameters[0];
-    if (gradient != nullptr) {
-      gradient[0] = 2.0 * parameters[0];
-    }
-    return true;
-  }
-
-  int NumParameters() const final { return 1; }
-};
-
-TEST(LineSearchMinimizerTest, FinalCostIsZero) {
-  double parameters[1] = {2.0};
-  ceres::GradientProblem problem(new QuadraticFirstOrderFunction);
-  ceres::GradientProblemSolver::Options options;
-  ceres::GradientProblemSolver::Summary summary;
-  ceres::Solve(options, problem, parameters, &summary);
-  EXPECT_NEAR(summary.final_cost, 0.0, std::numeric_limits<double>::epsilon());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/line_search_preprocessor.cc b/third_party/ceres/internal/ceres/line_search_preprocessor.cc
deleted file mode 100644
index 3109c48..0000000
--- a/third_party/ceres/internal/ceres/line_search_preprocessor.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/line_search_preprocessor.h"
-
-#include <numeric>
-#include <string>
-
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/evaluator.h"
-#include "ceres/minimizer.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-namespace {
-
-bool IsProgramValid(const Program& program, std::string* error) {
-  if (program.IsBoundsConstrained()) {
-    *error = "LINE_SEARCH Minimizer does not support bounds.";
-    return false;
-  }
-  return program.ParameterBlocksAreFinite(error);
-}
-
-bool SetupEvaluator(PreprocessedProblem* pp) {
-  pp->evaluator_options = Evaluator::Options();
-  // This ensures that we get a Block Jacobian Evaluator without any
-  // requirement on orderings.
-  pp->evaluator_options.linear_solver_type = CGNR;
-  pp->evaluator_options.num_eliminate_blocks = 0;
-  pp->evaluator_options.num_threads = pp->options.num_threads;
-  pp->evaluator_options.context = pp->problem->context();
-  pp->evaluator_options.evaluation_callback =
-      pp->reduced_program->mutable_evaluation_callback();
-  pp->evaluator = Evaluator::Create(
-      pp->evaluator_options, pp->reduced_program.get(), &pp->error);
-  return (pp->evaluator.get() != nullptr);
-}
-
-}  // namespace
-
-bool LineSearchPreprocessor::Preprocess(const Solver::Options& options,
-                                        ProblemImpl* problem,
-                                        PreprocessedProblem* pp) {
-  CHECK(pp != nullptr);
-  pp->options = options;
-  ChangeNumThreadsIfNeeded(&pp->options);
-
-  pp->problem = problem;
-  Program* program = problem->mutable_program();
-  if (!IsProgramValid(*program, &pp->error)) {
-    return false;
-  }
-
-  pp->reduced_program = program->CreateReducedProgram(
-      &pp->removed_parameter_blocks, &pp->fixed_cost, &pp->error);
-
-  if (pp->reduced_program.get() == nullptr) {
-    return false;
-  }
-
-  if (pp->reduced_program->NumParameterBlocks() == 0) {
-    return true;
-  }
-
-  if (!SetupEvaluator(pp)) {
-    return false;
-  }
-
-  SetupCommonMinimizerOptions(pp);
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/line_search_preprocessor.h b/third_party/ceres/internal/ceres/line_search_preprocessor.h
deleted file mode 100644
index 0ffdba1..0000000
--- a/third_party/ceres/internal/ceres/line_search_preprocessor.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_LINE_SEARCH_PREPROCESSOR_H_
-#define CERES_INTERNAL_LINE_SEARCH_PREPROCESSOR_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/preprocessor.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT LineSearchPreprocessor final : public Preprocessor {
- public:
-  bool Preprocess(const Solver::Options& options,
-                  ProblemImpl* problem,
-                  PreprocessedProblem* preprocessed_problem) final;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_LINE_SEARCH_PREPROCESSOR_H_
diff --git a/third_party/ceres/internal/ceres/line_search_preprocessor_test.cc b/third_party/ceres/internal/ceres/line_search_preprocessor_test.cc
deleted file mode 100644
index e002a4b..0000000
--- a/third_party/ceres/internal/ceres/line_search_preprocessor_test.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/line_search_preprocessor.h"
-
-#include <map>
-
-#include "ceres/problem_impl.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/solver.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(LineSearchPreprocessor, ZeroProblem) {
-  ProblemImpl problem;
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  LineSearchPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(LineSearchPreprocessor, ProblemWithInvalidParameterBlock) {
-  ProblemImpl problem;
-  double x = std::numeric_limits<double>::quiet_NaN();
-  problem.AddParameterBlock(&x, 1);
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  LineSearchPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(LineSearchPreprocessor, ParameterBlockHasBounds) {
-  ProblemImpl problem;
-  double x = 1.0;
-  problem.AddParameterBlock(&x, 1);
-  problem.SetParameterUpperBound(&x, 0, 1.0);
-  problem.SetParameterLowerBound(&x, 0, 2.0);
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  LineSearchPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-class FailingCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    return false;
-  }
-};
-
-TEST(LineSearchPreprocessor, RemoveParameterBlocksFailed) {
-  ProblemImpl problem;
-  double x = 3.0;
-  problem.AddResidualBlock(new FailingCostFunction, nullptr, &x);
-  problem.SetParameterBlockConstant(&x);
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  LineSearchPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(LineSearchPreprocessor, RemoveParameterBlocksSucceeds) {
-  ProblemImpl problem;
-  double x = 3.0;
-  problem.AddParameterBlock(&x, 1);
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-
-  LineSearchPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-template <int kNumResiduals, int... Ns>
-class DummyCostFunction : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    return true;
-  }
-};
-
-TEST(LineSearchPreprocessor, NormalOperation) {
-  ProblemImpl problem;
-  double x = 1.0;
-  double y = 1.0;
-  double z = 1.0;
-  problem.AddResidualBlock(new DummyCostFunction<1, 1, 1>, nullptr, &x, &y);
-  problem.AddResidualBlock(new DummyCostFunction<1, 1, 1>, nullptr, &y, &z);
-
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-
-  LineSearchPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem, &pp));
-  EXPECT_EQ(pp.evaluator_options.linear_solver_type, CGNR);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/linear_least_squares_problems.cc b/third_party/ceres/internal/ceres/linear_least_squares_problems.cc
deleted file mode 100644
index 36cffec..0000000
--- a/third_party/ceres/internal/ceres/linear_least_squares_problems.cc
+++ /dev/null
@@ -1,1044 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/linear_least_squares_problems.h"
-
-#include <cstdio>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/casts.h"
-#include "ceres/file.h"
-#include "ceres/stringprintf.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<LinearLeastSquaresProblem>
-CreateLinearLeastSquaresProblemFromId(int id) {
-  switch (id) {
-    case 0:
-      return LinearLeastSquaresProblem0();
-    case 1:
-      return LinearLeastSquaresProblem1();
-    case 2:
-      return LinearLeastSquaresProblem2();
-    case 3:
-      return LinearLeastSquaresProblem3();
-    case 4:
-      return LinearLeastSquaresProblem4();
-    case 5:
-      return LinearLeastSquaresProblem5();
-    case 6:
-      return LinearLeastSquaresProblem6();
-    default:
-      LOG(FATAL) << "Unknown problem id requested " << id;
-  }
-  return nullptr;
-}
-
-/*
-A = [1   2]
-    [3   4]
-    [6 -10]
-
-b = [  8
-      18
-     -18]
-
-x = [2
-     3]
-
-D = [1
-     2]
-
-x_D = [1.78448275;
-       2.82327586;]
- */
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem0() {
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-
-  auto A = std::make_unique<TripletSparseMatrix>(3, 2, 6);
-  problem->b = std::make_unique<double[]>(3);
-  problem->D = std::make_unique<double[]>(2);
-
-  problem->x = std::make_unique<double[]>(2);
-  problem->x_D = std::make_unique<double[]>(2);
-
-  int* Ai = A->mutable_rows();
-  int* Aj = A->mutable_cols();
-  double* Ax = A->mutable_values();
-
-  int counter = 0;
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 2; ++j) {
-      Ai[counter] = i;
-      Aj[counter] = j;
-      ++counter;
-    }
-  }
-
-  Ax[0] = 1.;
-  Ax[1] = 2.;
-  Ax[2] = 3.;
-  Ax[3] = 4.;
-  Ax[4] = 6;
-  Ax[5] = -10;
-  A->set_num_nonzeros(6);
-  problem->A = std::move(A);
-
-  problem->b[0] = 8;
-  problem->b[1] = 18;
-  problem->b[2] = -18;
-
-  problem->x[0] = 2.0;
-  problem->x[1] = 3.0;
-
-  problem->D[0] = 1;
-  problem->D[1] = 2;
-
-  problem->x_D[0] = 1.78448275;
-  problem->x_D[1] = 2.82327586;
-  return problem;
-}
-
-/*
-      A = [1 0  | 2 0 0
-           3 0  | 0 4 0
-           0 5  | 0 0 6
-           0 7  | 8 0 0
-           0 9  | 1 0 0
-           0 0  | 1 1 1]
-
-      b = [0
-           1
-           2
-           3
-           4
-           5]
-
-      c = A'* b = [ 3
-                   67
-                   33
-                    9
-                   17]
-
-      A'A = [10    0    2   12   0
-              0  155   65    0  30
-              2   65   70    1   1
-             12    0    1   17   1
-              0   30    1    1  37]
-
-      cond(A'A) = 200.36
-
-      S = [ 42.3419  -1.4000  -11.5806
-            -1.4000   2.6000    1.0000
-           -11.5806   1.0000   31.1935]
-
-      r = [ 4.3032
-            5.4000
-            4.0323]
-
-      S\r = [ 0.2102
-              2.1367
-              0.1388]
-
-      A\b = [-2.3061
-              0.3172
-              0.2102
-              2.1367
-              0.1388]
-*/
-// The following two functions create a TripletSparseMatrix and a
-// BlockSparseMatrix version of this problem.
-
-// TripletSparseMatrix version.
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem1() {
-  int num_rows = 6;
-  int num_cols = 5;
-
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-
-  auto A = std::make_unique<TripletSparseMatrix>(
-      num_rows, num_cols, num_rows * num_cols);
-  problem->b = std::make_unique<double[]>(num_rows);
-  problem->D = std::make_unique<double[]>(num_cols);
-  problem->num_eliminate_blocks = 2;
-
-  problem->x = std::make_unique<double[]>(num_cols);
-  problem->x[0] = -2.3061;
-  problem->x[1] = 0.3172;
-  problem->x[2] = 0.2102;
-  problem->x[3] = 2.1367;
-  problem->x[4] = 0.1388;
-
-  int* rows = A->mutable_rows();
-  int* cols = A->mutable_cols();
-  double* values = A->mutable_values();
-
-  int nnz = 0;
-
-  // Row 1
-  {
-    rows[nnz] = 0;
-    cols[nnz] = 0;
-    values[nnz++] = 1;
-
-    rows[nnz] = 0;
-    cols[nnz] = 2;
-    values[nnz++] = 2;
-  }
-
-  // Row 2
-  {
-    rows[nnz] = 1;
-    cols[nnz] = 0;
-    values[nnz++] = 3;
-
-    rows[nnz] = 1;
-    cols[nnz] = 3;
-    values[nnz++] = 4;
-  }
-
-  // Row 3
-  {
-    rows[nnz] = 2;
-    cols[nnz] = 1;
-    values[nnz++] = 5;
-
-    rows[nnz] = 2;
-    cols[nnz] = 4;
-    values[nnz++] = 6;
-  }
-
-  // Row 4
-  {
-    rows[nnz] = 3;
-    cols[nnz] = 1;
-    values[nnz++] = 7;
-
-    rows[nnz] = 3;
-    cols[nnz] = 2;
-    values[nnz++] = 8;
-  }
-
-  // Row 5
-  {
-    rows[nnz] = 4;
-    cols[nnz] = 1;
-    values[nnz++] = 9;
-
-    rows[nnz] = 4;
-    cols[nnz] = 2;
-    values[nnz++] = 1;
-  }
-
-  // Row 6
-  {
-    rows[nnz] = 5;
-    cols[nnz] = 2;
-    values[nnz++] = 1;
-
-    rows[nnz] = 5;
-    cols[nnz] = 3;
-    values[nnz++] = 1;
-
-    rows[nnz] = 5;
-    cols[nnz] = 4;
-    values[nnz++] = 1;
-  }
-
-  A->set_num_nonzeros(nnz);
-  CHECK(A->IsValid());
-
-  problem->A = std::move(A);
-
-  for (int i = 0; i < num_cols; ++i) {
-    problem->D.get()[i] = 1;
-  }
-
-  for (int i = 0; i < num_rows; ++i) {
-    problem->b.get()[i] = i;
-  }
-
-  return problem;
-}
-
-// BlockSparseMatrix version
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem2() {
-  int num_rows = 6;
-  int num_cols = 5;
-
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-
-  problem->b = std::make_unique<double[]>(num_rows);
-  problem->D = std::make_unique<double[]>(num_cols);
-  problem->num_eliminate_blocks = 2;
-
-  problem->x = std::make_unique<double[]>(num_cols);
-  problem->x[0] = -2.3061;
-  problem->x[1] = 0.3172;
-  problem->x[2] = 0.2102;
-  problem->x[3] = 2.1367;
-  problem->x[4] = 0.1388;
-
-  auto* bs = new CompressedRowBlockStructure;
-  auto values = std::make_unique<double[]>(num_rows * num_cols);
-
-  for (int c = 0; c < num_cols; ++c) {
-    bs->cols.emplace_back();
-    bs->cols.back().size = 1;
-    bs->cols.back().position = c;
-  }
-
-  int nnz = 0;
-
-  // Row 1
-  {
-    values[nnz++] = 1;
-    values[nnz++] = 2;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(2, 1);
-  }
-
-  // Row 2
-  {
-    values[nnz++] = 3;
-    values[nnz++] = 4;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 1;
-    row.cells.emplace_back(0, 2);
-    row.cells.emplace_back(3, 3);
-  }
-
-  // Row 3
-  {
-    values[nnz++] = 5;
-    values[nnz++] = 6;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 2;
-    row.cells.emplace_back(1, 4);
-    row.cells.emplace_back(4, 5);
-  }
-
-  // Row 4
-  {
-    values[nnz++] = 7;
-    values[nnz++] = 8;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 3;
-    row.cells.emplace_back(1, 6);
-    row.cells.emplace_back(2, 7);
-  }
-
-  // Row 5
-  {
-    values[nnz++] = 9;
-    values[nnz++] = 1;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 4;
-    row.cells.emplace_back(1, 8);
-    row.cells.emplace_back(2, 9);
-  }
-
-  // Row 6
-  {
-    values[nnz++] = 1;
-    values[nnz++] = 1;
-    values[nnz++] = 1;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 5;
-    row.cells.emplace_back(2, 10);
-    row.cells.emplace_back(3, 11);
-    row.cells.emplace_back(4, 12);
-  }
-
-  auto A = std::make_unique<BlockSparseMatrix>(bs);
-  memcpy(A->mutable_values(), values.get(), nnz * sizeof(*A->values()));
-
-  for (int i = 0; i < num_cols; ++i) {
-    problem->D.get()[i] = 1;
-  }
-
-  for (int i = 0; i < num_rows; ++i) {
-    problem->b.get()[i] = i;
-  }
-
-  problem->A = std::move(A);
-
-  return problem;
-}
-
-/*
-      A = [1 0
-           3 0
-           0 5
-           0 7
-           0 9
-           0 0]
-
-      b = [0
-           1
-           2
-           3
-           4
-           5]
-*/
-// BlockSparseMatrix version
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem3() {
-  int num_rows = 5;
-  int num_cols = 2;
-
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-
-  problem->b = std::make_unique<double[]>(num_rows);
-  problem->D = std::make_unique<double[]>(num_cols);
-  problem->num_eliminate_blocks = 2;
-
-  auto* bs = new CompressedRowBlockStructure;
-  auto values = std::make_unique<double[]>(num_rows * num_cols);
-
-  for (int c = 0; c < num_cols; ++c) {
-    bs->cols.emplace_back();
-    bs->cols.back().size = 1;
-    bs->cols.back().position = c;
-  }
-
-  int nnz = 0;
-
-  // Row 1
-  {
-    values[nnz++] = 1;
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-  }
-
-  // Row 2
-  {
-    values[nnz++] = 3;
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 1;
-    row.cells.emplace_back(0, 1);
-  }
-
-  // Row 3
-  {
-    values[nnz++] = 5;
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 2;
-    row.cells.emplace_back(1, 2);
-  }
-
-  // Row 4
-  {
-    values[nnz++] = 7;
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 3;
-    row.cells.emplace_back(1, 3);
-  }
-
-  // Row 5
-  {
-    values[nnz++] = 9;
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 4;
-    row.cells.emplace_back(1, 4);
-  }
-
-  auto A = std::make_unique<BlockSparseMatrix>(bs);
-  memcpy(A->mutable_values(), values.get(), nnz * sizeof(*A->values()));
-
-  for (int i = 0; i < num_cols; ++i) {
-    problem->D.get()[i] = 1;
-  }
-
-  for (int i = 0; i < num_rows; ++i) {
-    problem->b.get()[i] = i;
-  }
-
-  problem->A = std::move(A);
-
-  return problem;
-}
-
-/*
-      A = [1 2 0 0 0 1 1
-           1 4 0 0 0 5 6
-           0 0 9 0 0 3 1]
-
-      b = [0
-           1
-           2]
-*/
-// BlockSparseMatrix version
-//
-// This problem has the unique property that it has two different
-// sized f-blocks, but only one of them occurs in the rows involving
-// the one e-block. So performing Schur elimination on this problem
-// tests the Schur Eliminator's ability to handle non-e-block rows
-// correctly when their structure does not conform to the static
-// structure determined by DetectStructure.
-//
-// NOTE: This problem is too small and rank deficient to be solved without
-// the diagonal regularization.
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem4() {
-  int num_rows = 3;
-  int num_cols = 7;
-
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-
-  problem->b = std::make_unique<double[]>(num_rows);
-  problem->D = std::make_unique<double[]>(num_cols);
-  problem->num_eliminate_blocks = 1;
-
-  auto* bs = new CompressedRowBlockStructure;
-  auto values = std::make_unique<double[]>(num_rows * num_cols);
-
-  // Column block structure
-  bs->cols.emplace_back();
-  bs->cols.back().size = 2;
-  bs->cols.back().position = 0;
-
-  bs->cols.emplace_back();
-  bs->cols.back().size = 3;
-  bs->cols.back().position = 2;
-
-  bs->cols.emplace_back();
-  bs->cols.back().size = 2;
-  bs->cols.back().position = 5;
-
-  int nnz = 0;
-
-  // Row 1 & 2
-  {
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-
-    row.cells.emplace_back(0, nnz);
-    values[nnz++] = 1;
-    values[nnz++] = 2;
-    values[nnz++] = 1;
-    values[nnz++] = 4;
-
-    row.cells.emplace_back(2, nnz);
-    values[nnz++] = 1;
-    values[nnz++] = 1;
-    values[nnz++] = 5;
-    values[nnz++] = 6;
-  }
-
-  // Row 3
-  {
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 2;
-
-    row.cells.emplace_back(1, nnz);
-    values[nnz++] = 9;
-    values[nnz++] = 0;
-    values[nnz++] = 0;
-
-    row.cells.emplace_back(2, nnz);
-    values[nnz++] = 3;
-    values[nnz++] = 1;
-  }
-
-  auto A = std::make_unique<BlockSparseMatrix>(bs);
-  memcpy(A->mutable_values(), values.get(), nnz * sizeof(*A->values()));
-
-  for (int i = 0; i < num_cols; ++i) {
-    problem->D.get()[i] = (i + 1) * 100;
-  }
-
-  for (int i = 0; i < num_rows; ++i) {
-    problem->b.get()[i] = i;
-  }
-
-  problem->A = std::move(A);
-  return problem;
-}
-
-/*
-A problem with block-diagonal F'F.
-
-      A = [1  0 | 0 0 2
-           3  0 | 0 0 4
-           0 -1 | 0 1 0
-           0 -3 | 0 1 0
-           0 -1 | 3 0 0
-           0 -2 | 1 0 0]
-
-      b = [0
-           1
-           2
-           3
-           4
-           5]
-
-      c = A'* b = [ 22
-                   -25
-                    17
-                     7
-                     4]
-
-      A'A = [10    0    0    0   10
-              0   15   -5   -4    0
-              0   -5   10    0    0
-              0   -4    0    2    0
-             10    0    0    0   20]
-
-      cond(A'A) = 41.402
-
-      S = [ 8.3333   -1.3333         0
-           -1.3333    0.9333         0
-                 0         0   10.0000]
-
-      r = [ 8.6667
-           -1.6667
-            1.0000]
-
-      S\r = [  0.9778
-              -0.3889
-               0.1000]
-
-      A\b = [  0.2
-              -1.4444
-               0.9777
-              -0.3888
-               0.1]
-*/
-
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem5() {
-  int num_rows = 6;
-  int num_cols = 5;
-
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-  problem->b = std::make_unique<double[]>(num_rows);
-  problem->D = std::make_unique<double[]>(num_cols);
-  problem->num_eliminate_blocks = 2;
-
-  // TODO: add x
-  problem->x = std::make_unique<double[]>(num_cols);
-  problem->x[0] = 0.2;
-  problem->x[1] = -1.4444;
-  problem->x[2] = 0.9777;
-  problem->x[3] = -0.3888;
-  problem->x[4] = 0.1;
-
-  auto* bs = new CompressedRowBlockStructure;
-  auto values = std::make_unique<double[]>(num_rows * num_cols);
-
-  for (int c = 0; c < num_cols; ++c) {
-    bs->cols.emplace_back();
-    bs->cols.back().size = 1;
-    bs->cols.back().position = c;
-  }
-
-  int nnz = 0;
-
-  // Row 1
-  {
-    values[nnz++] = -1;
-    values[nnz++] = 2;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(4, 1);
-  }
-
-  // Row 2
-  {
-    values[nnz++] = 3;
-    values[nnz++] = 4;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 1;
-    row.cells.emplace_back(0, 2);
-    row.cells.emplace_back(4, 3);
-  }
-
-  // Row 3
-  {
-    values[nnz++] = -1;
-    values[nnz++] = 1;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 2;
-    row.cells.emplace_back(1, 4);
-    row.cells.emplace_back(3, 5);
-  }
-
-  // Row 4
-  {
-    values[nnz++] = -3;
-    values[nnz++] = 1;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 3;
-    row.cells.emplace_back(1, 6);
-    row.cells.emplace_back(3, 7);
-  }
-
-  // Row 5
-  {
-    values[nnz++] = -1;
-    values[nnz++] = 3;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 4;
-    row.cells.emplace_back(1, 8);
-    row.cells.emplace_back(2, 9);
-  }
-
-  // Row 6
-  {
-    // values[nnz++] = 2;
-    values[nnz++] = -2;
-    values[nnz++] = 1;
-
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 5;
-    // row.cells.emplace_back(0, 10);
-    row.cells.emplace_back(1, 10);
-    row.cells.emplace_back(2, 11);
-  }
-
-  auto A = std::make_unique<BlockSparseMatrix>(bs);
-  memcpy(A->mutable_values(), values.get(), nnz * sizeof(*A->values()));
-
-  for (int i = 0; i < num_cols; ++i) {
-    problem->D.get()[i] = 1;
-  }
-
-  for (int i = 0; i < num_rows; ++i) {
-    problem->b.get()[i] = i;
-  }
-
-  problem->A = std::move(A);
-
-  return problem;
-}
-
-/*
-      A = [1 2 0 0 0 1 1
-           1 4 0 0 0 5 6
-           3 4 0 0 0 7 8
-           5 6 0 0 0 9 0
-           0 0 9 0 0 3 1]
-
-      b = [0
-           1
-           2
-           3
-           4]
-*/
-// BlockSparseMatrix version
-//
-// This problem has the unique property that it has two different
-// sized f-blocks, but only one of them occurs in the rows involving
-// the one e-block. So performing Schur elimination on this problem
-// tests the Schur Eliminator's ability to handle non-e-block rows
-// correctly when their structure does not conform to the static
-// structure determined by DetectStructure.
-//
-// Additionally, this problem has the first row of the last row block of E being
-// larger than number of row blocks in E
-//
-// NOTE: This problem is too small and rank deficient to be solved without
-// the diagonal regularization.
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem6() {
-  int num_rows = 5;
-  int num_cols = 7;
-
-  auto problem = std::make_unique<LinearLeastSquaresProblem>();
-
-  problem->b = std::make_unique<double[]>(num_rows);
-  problem->D = std::make_unique<double[]>(num_cols);
-  problem->num_eliminate_blocks = 1;
-
-  auto* bs = new CompressedRowBlockStructure;
-  auto values = std::make_unique<double[]>(num_rows * num_cols);
-
-  // Column block structure
-  bs->cols.emplace_back();
-  bs->cols.back().size = 2;
-  bs->cols.back().position = 0;
-
-  bs->cols.emplace_back();
-  bs->cols.back().size = 3;
-  bs->cols.back().position = 2;
-
-  bs->cols.emplace_back();
-  bs->cols.back().size = 2;
-  bs->cols.back().position = 5;
-
-  int nnz = 0;
-
-  // Row 1 & 2
-  {
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-
-    row.cells.emplace_back(0, nnz);
-    values[nnz++] = 1;
-    values[nnz++] = 2;
-    values[nnz++] = 1;
-    values[nnz++] = 4;
-
-    row.cells.emplace_back(2, nnz);
-    values[nnz++] = 1;
-    values[nnz++] = 1;
-    values[nnz++] = 5;
-    values[nnz++] = 6;
-  }
-
-  // Row 3 & 4
-  {
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 2;
-    row.block.position = 2;
-
-    row.cells.emplace_back(0, nnz);
-    values[nnz++] = 3;
-    values[nnz++] = 4;
-    values[nnz++] = 5;
-    values[nnz++] = 6;
-
-    row.cells.emplace_back(2, nnz);
-    values[nnz++] = 7;
-    values[nnz++] = 8;
-    values[nnz++] = 9;
-    values[nnz++] = 0;
-  }
-
-  // Row 5
-  {
-    bs->rows.emplace_back();
-    CompressedRow& row = bs->rows.back();
-    row.block.size = 1;
-    row.block.position = 4;
-
-    row.cells.emplace_back(1, nnz);
-    values[nnz++] = 9;
-    values[nnz++] = 0;
-    values[nnz++] = 0;
-
-    row.cells.emplace_back(2, nnz);
-    values[nnz++] = 3;
-    values[nnz++] = 1;
-  }
-
-  auto A = std::make_unique<BlockSparseMatrix>(bs);
-  memcpy(A->mutable_values(), values.get(), nnz * sizeof(*A->values()));
-
-  for (int i = 0; i < num_cols; ++i) {
-    problem->D.get()[i] = (i + 1) * 100;
-  }
-
-  for (int i = 0; i < num_rows; ++i) {
-    problem->b.get()[i] = i;
-  }
-
-  problem->A = std::move(A);
-  return problem;
-}
-
-namespace {
-bool DumpLinearLeastSquaresProblemToConsole(const SparseMatrix* A,
-                                            const double* D,
-                                            const double* b,
-                                            const double* x,
-                                            int /*num_eliminate_blocks*/) {
-  CHECK(A != nullptr);
-  Matrix AA;
-  A->ToDenseMatrix(&AA);
-  LOG(INFO) << "A^T: \n" << AA.transpose();
-
-  if (D != nullptr) {
-    LOG(INFO) << "A's appended diagonal:\n" << ConstVectorRef(D, A->num_cols());
-  }
-
-  if (b != nullptr) {
-    LOG(INFO) << "b: \n" << ConstVectorRef(b, A->num_rows());
-  }
-
-  if (x != nullptr) {
-    LOG(INFO) << "x: \n" << ConstVectorRef(x, A->num_cols());
-  }
-  return true;
-}
-
-void WriteArrayToFileOrDie(const std::string& filename,
-                           const double* x,
-                           const int size) {
-  CHECK(x != nullptr);
-  VLOG(2) << "Writing array to: " << filename;
-  FILE* fptr = fopen(filename.c_str(), "w");
-  CHECK(fptr != nullptr);
-  for (int i = 0; i < size; ++i) {
-    fprintf(fptr, "%17f\n", x[i]);
-  }
-  fclose(fptr);
-}
-
-bool DumpLinearLeastSquaresProblemToTextFile(const std::string& filename_base,
-                                             const SparseMatrix* A,
-                                             const double* D,
-                                             const double* b,
-                                             const double* x,
-                                             int /*num_eliminate_blocks*/) {
-  CHECK(A != nullptr);
-  LOG(INFO) << "writing to: " << filename_base << "*";
-
-  std::string matlab_script;
-  StringAppendF(&matlab_script,
-                "function lsqp = load_trust_region_problem()\n");
-  StringAppendF(&matlab_script, "lsqp.num_rows = %d;\n", A->num_rows());
-  StringAppendF(&matlab_script, "lsqp.num_cols = %d;\n", A->num_cols());
-
-  {
-    std::string filename = filename_base + "_A.txt";
-    FILE* fptr = fopen(filename.c_str(), "w");
-    CHECK(fptr != nullptr);
-    A->ToTextFile(fptr);
-    fclose(fptr);
-    StringAppendF(
-        &matlab_script, "tmp = load('%s', '-ascii');\n", filename.c_str());
-    StringAppendF(
-        &matlab_script,
-        "lsqp.A = sparse(tmp(:, 1) + 1, tmp(:, 2) + 1, tmp(:, 3), %d, %d);\n",
-        A->num_rows(),
-        A->num_cols());
-  }
-
-  if (D != nullptr) {
-    std::string filename = filename_base + "_D.txt";
-    WriteArrayToFileOrDie(filename, D, A->num_cols());
-    StringAppendF(
-        &matlab_script, "lsqp.D = load('%s', '-ascii');\n", filename.c_str());
-  }
-
-  if (b != nullptr) {
-    std::string filename = filename_base + "_b.txt";
-    WriteArrayToFileOrDie(filename, b, A->num_rows());
-    StringAppendF(
-        &matlab_script, "lsqp.b = load('%s', '-ascii');\n", filename.c_str());
-  }
-
-  if (x != nullptr) {
-    std::string filename = filename_base + "_x.txt";
-    WriteArrayToFileOrDie(filename, x, A->num_cols());
-    StringAppendF(
-        &matlab_script, "lsqp.x = load('%s', '-ascii');\n", filename.c_str());
-  }
-
-  std::string matlab_filename = filename_base + ".m";
-  WriteStringToFileOrDie(matlab_script, matlab_filename);
-  return true;
-}
-}  // namespace
-
-bool DumpLinearLeastSquaresProblem(const std::string& filename_base,
-                                   DumpFormatType dump_format_type,
-                                   const SparseMatrix* A,
-                                   const double* D,
-                                   const double* b,
-                                   const double* x,
-                                   int num_eliminate_blocks) {
-  switch (dump_format_type) {
-    case CONSOLE:
-      return DumpLinearLeastSquaresProblemToConsole(
-          A, D, b, x, num_eliminate_blocks);
-    case TEXTFILE:
-      return DumpLinearLeastSquaresProblemToTextFile(
-          filename_base, A, D, b, x, num_eliminate_blocks);
-    default:
-      LOG(FATAL) << "Unknown DumpFormatType " << dump_format_type;
-  }
-
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/linear_least_squares_problems.h b/third_party/ceres/internal/ceres/linear_least_squares_problems.h
deleted file mode 100644
index 9d01add..0000000
--- a/third_party/ceres/internal/ceres/linear_least_squares_problems.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_LINEAR_LEAST_SQUARES_PROBLEMS_H_
-#define CERES_INTERNAL_LINEAR_LEAST_SQUARES_PROBLEMS_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/sparse_matrix.h"
-
-namespace ceres::internal {
-
-// Structure defining a linear least squares problem and if possible
-// ground truth solutions. To be used by various LinearSolver tests.
-struct CERES_NO_EXPORT LinearLeastSquaresProblem {
-  LinearLeastSquaresProblem() = default;
-
-  std::unique_ptr<SparseMatrix> A;
-  std::unique_ptr<double[]> b;
-  std::unique_ptr<double[]> D;
-  // If using the schur eliminator then how many of the variable
-  // blocks are e_type blocks.
-  int num_eliminate_blocks{0};
-
-  // Solution to min_x |Ax - b|^2
-  std::unique_ptr<double[]> x;
-  // Solution to min_x |Ax - b|^2 + |Dx|^2
-  std::unique_ptr<double[]> x_D;
-};
-
-// Factories for linear least squares problem.
-CERES_NO_EXPORT std::unique_ptr<LinearLeastSquaresProblem>
-CreateLinearLeastSquaresProblemFromId(int id);
-
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem0();
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem1();
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem2();
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem3();
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem4();
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem5();
-CERES_NO_EXPORT
-std::unique_ptr<LinearLeastSquaresProblem> LinearLeastSquaresProblem6();
-
-// Write the linear least squares problem to disk. The exact format
-// depends on dump_format_type.
-CERES_NO_EXPORT
-bool DumpLinearLeastSquaresProblem(const std::string& filename_base,
-                                   DumpFormatType dump_format_type,
-                                   const SparseMatrix* A,
-                                   const double* D,
-                                   const double* b,
-                                   const double* x,
-                                   int num_eliminate_blocks);
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_LINEAR_LEAST_SQUARES_PROBLEMS_H_
diff --git a/third_party/ceres/internal/ceres/linear_operator.cc b/third_party/ceres/internal/ceres/linear_operator.cc
deleted file mode 100644
index f4c2c5e..0000000
--- a/third_party/ceres/internal/ceres/linear_operator.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/linear_operator.h"
-
-#include <glog/logging.h>
-
-namespace ceres::internal {
-
-void LinearOperator::RightMultiplyAndAccumulate(const double* x,
-                                                double* y,
-                                                ContextImpl* context,
-                                                int num_threads) const {
-  (void)context;
-  if (num_threads != 1) {
-    VLOG(3) << "Parallel right product is not supported by linear operator "
-               "implementation";
-  }
-  RightMultiplyAndAccumulate(x, y);
-}
-
-void LinearOperator::LeftMultiplyAndAccumulate(const double* x,
-                                               double* y,
-                                               ContextImpl* context,
-                                               int num_threads) const {
-  (void)context;
-  if (num_threads != 1) {
-    VLOG(3) << "Parallel left product is not supported by linear operator "
-               "implementation";
-  }
-  LeftMultiplyAndAccumulate(x, y);
-}
-
-LinearOperator::~LinearOperator() = default;
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/linear_operator.h b/third_party/ceres/internal/ceres/linear_operator.h
deleted file mode 100644
index aafc584..0000000
--- a/third_party/ceres/internal/ceres/linear_operator.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Base classes for access to an linear operator.
-
-#ifndef CERES_INTERNAL_LINEAR_OPERATOR_H_
-#define CERES_INTERNAL_LINEAR_OPERATOR_H_
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class ContextImpl;
-
-// This is an abstract base class for linear operators. It supports
-// access to size information and left and right multiply operators.
-class CERES_NO_EXPORT LinearOperator {
- public:
-  virtual ~LinearOperator();
-
-  // y = y + Ax;
-  virtual void RightMultiplyAndAccumulate(const double* x, double* y) const = 0;
-  virtual void RightMultiplyAndAccumulate(const double* x,
-                                          double* y,
-                                          ContextImpl* context,
-                                          int num_threads) const;
-  // y = y + A'x;
-  virtual void LeftMultiplyAndAccumulate(const double* x, double* y) const = 0;
-  virtual void LeftMultiplyAndAccumulate(const double* x,
-                                         double* y,
-                                         ContextImpl* context,
-                                         int num_threads) const;
-
-  virtual void RightMultiplyAndAccumulate(const Vector& x, Vector& y) const {
-    RightMultiplyAndAccumulate(x.data(), y.data());
-  }
-
-  virtual void LeftMultiplyAndAccumulate(const Vector& x, Vector& y) const {
-    LeftMultiplyAndAccumulate(x.data(), y.data());
-  }
-
-  virtual void RightMultiplyAndAccumulate(const Vector& x,
-                                          Vector& y,
-                                          ContextImpl* context,
-                                          int num_threads) const {
-    RightMultiplyAndAccumulate(x.data(), y.data(), context, num_threads);
-  }
-
-  virtual void LeftMultiplyAndAccumulate(const Vector& x,
-                                         Vector& y,
-                                         ContextImpl* context,
-                                         int num_threads) const {
-    LeftMultiplyAndAccumulate(x.data(), y.data(), context, num_threads);
-  }
-
-  virtual int num_rows() const = 0;
-  virtual int num_cols() const = 0;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_LINEAR_OPERATOR_H_
diff --git a/third_party/ceres/internal/ceres/linear_solver.cc b/third_party/ceres/internal/ceres/linear_solver.cc
deleted file mode 100644
index 4ba0b75..0000000
--- a/third_party/ceres/internal/ceres/linear_solver.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/linear_solver.h"
-
-#include <memory>
-
-#include "ceres/cgnr_solver.h"
-#include "ceres/dense_normal_cholesky_solver.h"
-#include "ceres/dense_qr_solver.h"
-#include "ceres/dynamic_sparse_normal_cholesky_solver.h"
-#include "ceres/internal/config.h"
-#include "ceres/iterative_schur_complement_solver.h"
-#include "ceres/schur_complement_solver.h"
-#include "ceres/sparse_normal_cholesky_solver.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-LinearSolver::~LinearSolver() = default;
-
-LinearSolverType LinearSolver::LinearSolverForZeroEBlocks(
-    LinearSolverType linear_solver_type) {
-  if (!IsSchurType(linear_solver_type)) {
-    return linear_solver_type;
-  }
-
-  if (linear_solver_type == SPARSE_SCHUR) {
-    return SPARSE_NORMAL_CHOLESKY;
-  }
-
-  if (linear_solver_type == DENSE_SCHUR) {
-    // TODO(sameeragarwal): This is probably not a great choice.
-    // Ideally, we should have a DENSE_NORMAL_CHOLESKY, that can take
-    // a BlockSparseMatrix as input.
-    return DENSE_QR;
-  }
-
-  if (linear_solver_type == ITERATIVE_SCHUR) {
-    return CGNR;
-  }
-
-  return linear_solver_type;
-}
-
-std::unique_ptr<LinearSolver> LinearSolver::Create(
-    const LinearSolver::Options& options) {
-  CHECK(options.context != nullptr);
-
-  switch (options.type) {
-    case CGNR: {
-#ifndef CERES_NO_CUDA
-      if (options.sparse_linear_algebra_library_type == CUDA_SPARSE) {
-        std::string error;
-        return CudaCgnrSolver::Create(options, &error);
-      }
-#endif
-      return std::make_unique<CgnrSolver>(options);
-    } break;
-
-    case SPARSE_NORMAL_CHOLESKY:
-#if defined(CERES_NO_SPARSE)
-      return nullptr;
-#else
-      if (options.dynamic_sparsity) {
-        return std::make_unique<DynamicSparseNormalCholeskySolver>(options);
-      }
-
-      return std::make_unique<SparseNormalCholeskySolver>(options);
-#endif
-
-    case SPARSE_SCHUR:
-#if defined(CERES_NO_SPARSE)
-      return nullptr;
-#else
-      return std::make_unique<SparseSchurComplementSolver>(options);
-#endif
-
-    case DENSE_SCHUR:
-      return std::make_unique<DenseSchurComplementSolver>(options);
-
-    case ITERATIVE_SCHUR:
-      if (options.use_explicit_schur_complement) {
-        return std::make_unique<SparseSchurComplementSolver>(options);
-      } else {
-        return std::make_unique<IterativeSchurComplementSolver>(options);
-      }
-
-    case DENSE_QR:
-      return std::make_unique<DenseQRSolver>(options);
-
-    case DENSE_NORMAL_CHOLESKY:
-      return std::make_unique<DenseNormalCholeskySolver>(options);
-
-    default:
-      LOG(FATAL) << "Unknown linear solver type :" << options.type;
-      return nullptr;  // MSVC doesn't understand that LOG(FATAL) never returns.
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/linear_solver.h b/third_party/ceres/internal/ceres/linear_solver.h
deleted file mode 100644
index 1d5338f..0000000
--- a/third_party/ceres/internal/ceres/linear_solver.h
+++ /dev/null
@@ -1,405 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Abstract interface for objects solving linear systems of various
-// kinds.
-
-#ifndef CERES_INTERNAL_LINEAR_SOLVER_H_
-#define CERES_INTERNAL_LINEAR_SOLVER_H_
-
-#include <cstddef>
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/dense_sparse_matrix.h"
-#include "ceres/execution_summary.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-enum class LinearSolverTerminationType {
-  // Termination criterion was met.
-  SUCCESS,
-
-  // Solver ran for max_num_iterations and terminated before the
-  // termination tolerance could be satisfied.
-  NO_CONVERGENCE,
-
-  // Solver was terminated due to numerical problems, generally due to
-  // the linear system being poorly conditioned.
-  FAILURE,
-
-  // Solver failed with a fatal error that cannot be recovered from,
-  // e.g. CHOLMOD ran out of memory when computing the symbolic or
-  // numeric factorization or an underlying library was called with
-  // the wrong arguments.
-  FATAL_ERROR
-};
-
-inline std::ostream& operator<<(std::ostream& s,
-                                LinearSolverTerminationType type) {
-  switch (type) {
-    case LinearSolverTerminationType::SUCCESS:
-      s << "LINEAR_SOLVER_SUCCESS";
-      break;
-    case LinearSolverTerminationType::NO_CONVERGENCE:
-      s << "LINEAR_SOLVER_NO_CONVERGENCE";
-      break;
-    case LinearSolverTerminationType::FAILURE:
-      s << "LINEAR_SOLVER_FAILURE";
-      break;
-    case LinearSolverTerminationType::FATAL_ERROR:
-      s << "LINEAR_SOLVER_FATAL_ERROR";
-      break;
-    default:
-      s << "UNKNOWN LinearSolverTerminationType";
-  }
-  return s;
-}
-
-// This enum controls the fill-reducing ordering a sparse linear
-// algebra library should use before computing a sparse factorization
-// (usually Cholesky).
-//
-// TODO(sameeragarwal): Add support for nested dissection
-enum class OrderingType {
-  NATURAL,  // Do not re-order the matrix. This is useful when the
-            // matrix has been ordered using a fill-reducing ordering
-            // already.
-
-  AMD,  // Use the Approximate Minimum Degree algorithm to re-order
-        // the matrix.
-
-  NESDIS,  // Use the Nested Dissection algorithm to re-order the matrix.
-};
-
-inline std::ostream& operator<<(std::ostream& s, OrderingType type) {
-  switch (type) {
-    case OrderingType::NATURAL:
-      s << "NATURAL";
-      break;
-    case OrderingType::AMD:
-      s << "AMD";
-      break;
-    case OrderingType::NESDIS:
-      s << "NESDIS";
-      break;
-    default:
-      s << "UNKNOWN OrderingType";
-  }
-  return s;
-}
-
-class LinearOperator;
-
-// Abstract base class for objects that implement algorithms for
-// solving linear systems
-//
-//   Ax = b
-//
-// It is expected that a single instance of a LinearSolver object
-// maybe used multiple times for solving multiple linear systems with
-// the same sparsity structure. This allows them to cache and reuse
-// information across solves. This means that calling Solve on the
-// same LinearSolver instance with two different linear systems will
-// result in undefined behaviour.
-//
-// Subclasses of LinearSolver use two structs to configure themselves.
-// The Options struct configures the LinearSolver object for its
-// lifetime. The PerSolveOptions struct is used to specify options for
-// a particular Solve call.
-class CERES_NO_EXPORT LinearSolver {
- public:
-  struct Options {
-    LinearSolverType type = SPARSE_NORMAL_CHOLESKY;
-    PreconditionerType preconditioner_type = JACOBI;
-    VisibilityClusteringType visibility_clustering_type = CANONICAL_VIEWS;
-    DenseLinearAlgebraLibraryType dense_linear_algebra_library_type = EIGEN;
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type =
-        SUITE_SPARSE;
-    OrderingType ordering_type = OrderingType::NATURAL;
-
-    // See solver.h for information about these flags.
-    bool dynamic_sparsity = false;
-    bool use_explicit_schur_complement = false;
-
-    // Number of internal iterations that the solver uses. This
-    // parameter only makes sense for iterative solvers like CG.
-    int min_num_iterations = 1;
-    int max_num_iterations = 1;
-
-    // Maximum number of iterations performed by SCHUR_POWER_SERIES_EXPANSION.
-    // This value controls the maximum number of iterations whether it is used
-    // as a preconditioner or just to initialize the solution for
-    // ITERATIVE_SCHUR.
-    int max_num_spse_iterations = 5;
-
-    // Use SCHUR_POWER_SERIES_EXPANSION to initialize the solution for
-    // ITERATIVE_SCHUR. This option can be set true regardless of what
-    // preconditioner is being used.
-    bool use_spse_initialization = false;
-
-    // When use_spse_initialization is true, this parameter along with
-    // max_num_spse_iterations controls the number of
-    // SCHUR_POWER_SERIES_EXPANSION iterations performed for initialization. It
-    // is not used to control the preconditioner.
-    double spse_tolerance = 0.1;
-
-    // If possible, how many threads can the solver use.
-    int num_threads = 1;
-
-    // Hints about the order in which the parameter blocks should be
-    // eliminated by the linear solver.
-    //
-    // For example if elimination_groups is a vector of size k, then
-    // the linear solver is informed that it should eliminate the
-    // parameter blocks 0 ... elimination_groups[0] - 1 first, and
-    // then elimination_groups[0] ... elimination_groups[1] - 1 and so
-    // on. Within each elimination group, the linear solver is free to
-    // choose how the parameter blocks are ordered. Different linear
-    // solvers have differing requirements on elimination_groups.
-    //
-    // The most common use is for Schur type solvers, where there
-    // should be at least two elimination groups and the first
-    // elimination group must form an independent set in the normal
-    // equations. The first elimination group corresponds to the
-    // num_eliminate_blocks in the Schur type solvers.
-    std::vector<int> elimination_groups;
-
-    // Iterative solvers, e.g. Preconditioned Conjugate Gradients
-    // maintain a cheap estimate of the residual which may become
-    // inaccurate over time. Thus for non-zero values of this
-    // parameter, the solver can be told to recalculate the value of
-    // the residual using a |b - Ax| evaluation.
-    int residual_reset_period = 10;
-
-    // If the block sizes in a BlockSparseMatrix are fixed, then in
-    // some cases the Schur complement based solvers can detect and
-    // specialize on them.
-    //
-    // It is expected that these parameters are set programmatically
-    // rather than manually.
-    //
-    // Please see schur_complement_solver.h and schur_eliminator.h for
-    // more details.
-    int row_block_size = Eigen::Dynamic;
-    int e_block_size = Eigen::Dynamic;
-    int f_block_size = Eigen::Dynamic;
-
-    bool use_mixed_precision_solves = false;
-    int max_num_refinement_iterations = 0;
-    int subset_preconditioner_start_row_block = -1;
-    ContextImpl* context = nullptr;
-  };
-
-  // Options for the Solve method.
-  struct PerSolveOptions {
-    // This option only makes sense for unsymmetric linear solvers
-    // that can solve rectangular linear systems.
-    //
-    // Given a matrix A, an optional diagonal matrix D as a vector,
-    // and a vector b, the linear solver will solve for
-    //
-    //   | A | x = | b |
-    //   | D |     | 0 |
-    //
-    // If D is null, then it is treated as zero, and the solver returns
-    // the solution to
-    //
-    //   A x = b
-    //
-    // In either case, x is the vector that solves the following
-    // optimization problem.
-    //
-    //   arg min_x ||Ax - b||^2 + ||Dx||^2
-    //
-    // Here A is a matrix of size m x n, with full column rank. If A
-    // does not have full column rank, the results returned by the
-    // solver cannot be relied on. D, if it is not null is an array of
-    // size n.  b is an array of size m and x is an array of size n.
-    double* D = nullptr;
-
-    // This option only makes sense for iterative solvers.
-    //
-    // In general the performance of an iterative linear solver
-    // depends on the condition number of the matrix A. For example
-    // the convergence rate of the conjugate gradients algorithm
-    // is proportional to the square root of the condition number.
-    //
-    // One particularly useful technique for improving the
-    // conditioning of a linear system is to precondition it. In its
-    // simplest form a preconditioner is a matrix M such that instead
-    // of solving Ax = b, we solve the linear system AM^{-1} y = b
-    // instead, where M is such that the condition number k(AM^{-1})
-    // is smaller than the conditioner k(A). Given the solution to
-    // this system, x = M^{-1} y. The iterative solver takes care of
-    // the mechanics of solving the preconditioned system and
-    // returning the corrected solution x. The user only needs to
-    // supply a linear operator.
-    //
-    // A null preconditioner is equivalent to an identity matrix being
-    // used a preconditioner.
-    LinearOperator* preconditioner = nullptr;
-
-    // The following tolerance related options only makes sense for
-    // iterative solvers. Direct solvers ignore them.
-
-    // Solver terminates when
-    //
-    //   |Ax - b| <= r_tolerance * |b|.
-    //
-    // This is the most commonly used termination criterion for
-    // iterative solvers.
-    double r_tolerance = 0.0;
-
-    // For PSD matrices A, let
-    //
-    //   Q(x) = x'Ax - 2b'x
-    //
-    // be the cost of the quadratic function defined by A and b. Then,
-    // the solver terminates at iteration i if
-    //
-    //   i * (Q(x_i) - Q(x_i-1)) / Q(x_i) < q_tolerance.
-    //
-    // This termination criterion is more useful when using CG to
-    // solve the Newton step. This particular convergence test comes
-    // from Stephen Nash's work on truncated Newton
-    // methods. References:
-    //
-    //   1. Stephen G. Nash & Ariela Sofer, Assessing A Search
-    //      Direction Within A Truncated Newton Method, Operation
-    //      Research Letters 9(1990) 219-221.
-    //
-    //   2. Stephen G. Nash, A Survey of Truncated Newton Methods,
-    //      Journal of Computational and Applied Mathematics,
-    //      124(1-2), 45-59, 2000.
-    //
-    double q_tolerance = 0.0;
-  };
-
-  // Summary of a call to the Solve method. We should move away from
-  // the true/false method for determining solver success. We should
-  // let the summary object do the talking.
-  struct Summary {
-    double residual_norm = -1.0;
-    int num_iterations = -1;
-    LinearSolverTerminationType termination_type =
-        LinearSolverTerminationType::FAILURE;
-    std::string message;
-  };
-
-  // If the optimization problem is such that there are no remaining
-  // e-blocks, a Schur type linear solver cannot be used. If the
-  // linear solver is of Schur type, this function implements a policy
-  // to select an alternate nearest linear solver to the one selected
-  // by the user. The input linear_solver_type is returned otherwise.
-  static LinearSolverType LinearSolverForZeroEBlocks(
-      LinearSolverType linear_solver_type);
-
-  virtual ~LinearSolver();
-
-  // Solve Ax = b.
-  virtual Summary Solve(LinearOperator* A,
-                        const double* b,
-                        const PerSolveOptions& per_solve_options,
-                        double* x) = 0;
-
-  // This method returns copies instead of references so that the base
-  // class implementation does not have to worry about life time
-  // issues. Further, this calls are not expected to be frequent or
-  // performance sensitive.
-  virtual std::map<std::string, CallStatistics> Statistics() const {
-    return {};
-  }
-
-  // Factory
-  static std::unique_ptr<LinearSolver> Create(const Options& options);
-};
-
-// This templated subclass of LinearSolver serves as a base class for
-// other linear solvers that depend on the particular matrix layout of
-// the underlying linear operator. For example some linear solvers
-// need low level access to the TripletSparseMatrix implementing the
-// LinearOperator interface. This class hides those implementation
-// details behind a private virtual method, and has the Solve method
-// perform the necessary upcasting.
-template <typename MatrixType>
-class TypedLinearSolver : public LinearSolver {
- public:
-  LinearSolver::Summary Solve(
-      LinearOperator* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x) override {
-    ScopedExecutionTimer total_time("LinearSolver::Solve", &execution_summary_);
-    CHECK(A != nullptr);
-    CHECK(b != nullptr);
-    CHECK(x != nullptr);
-    return SolveImpl(down_cast<MatrixType*>(A), b, per_solve_options, x);
-  }
-
-  std::map<std::string, CallStatistics> Statistics() const override {
-    return execution_summary_.statistics();
-  }
-
- private:
-  virtual LinearSolver::Summary SolveImpl(
-      MatrixType* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x) = 0;
-
-  ExecutionSummary execution_summary_;
-};
-
-// Linear solvers that depend on access to the low level structure of
-// a SparseMatrix.
-// clang-format off
-using BlockSparseMatrixSolver = TypedLinearSolver<BlockSparseMatrix>;                  // NOLINT
-using CompressedRowSparseMatrixSolver = TypedLinearSolver<CompressedRowSparseMatrix>;  // NOLINT
-using DenseSparseMatrixSolver = TypedLinearSolver<DenseSparseMatrix>;                  // NOLINT
-using TripletSparseMatrixSolver = TypedLinearSolver<TripletSparseMatrix>;              // NOLINT
-// clang-format on
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_LINEAR_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/loss_function.cc b/third_party/ceres/internal/ceres/loss_function.cc
deleted file mode 100644
index 82563c8..0000000
--- a/third_party/ceres/internal/ceres/loss_function.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Purpose: See .h file.
-
-#include "ceres/loss_function.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstddef>
-#include <limits>
-
-namespace ceres {
-
-LossFunction::~LossFunction() = default;
-
-void TrivialLoss::Evaluate(double s, double rho[3]) const {
-  rho[0] = s;
-  rho[1] = 1.0;
-  rho[2] = 0.0;
-}
-
-void HuberLoss::Evaluate(double s, double rho[3]) const {
-  if (s > b_) {
-    // Outlier region.
-    // 'r' is always positive.
-    const double r = sqrt(s);
-    rho[0] = 2.0 * a_ * r - b_;
-    rho[1] = std::max(std::numeric_limits<double>::min(), a_ / r);
-    rho[2] = -rho[1] / (2.0 * s);
-  } else {
-    // Inlier region.
-    rho[0] = s;
-    rho[1] = 1.0;
-    rho[2] = 0.0;
-  }
-}
-
-void SoftLOneLoss::Evaluate(double s, double rho[3]) const {
-  const double sum = 1.0 + s * c_;
-  const double tmp = sqrt(sum);
-  // 'sum' and 'tmp' are always positive, assuming that 's' is.
-  rho[0] = 2.0 * b_ * (tmp - 1.0);
-  rho[1] = std::max(std::numeric_limits<double>::min(), 1.0 / tmp);
-  rho[2] = -(c_ * rho[1]) / (2.0 * sum);
-}
-
-void CauchyLoss::Evaluate(double s, double rho[3]) const {
-  const double sum = 1.0 + s * c_;
-  const double inv = 1.0 / sum;
-  // 'sum' and 'inv' are always positive, assuming that 's' is.
-  rho[0] = b_ * log(sum);
-  rho[1] = std::max(std::numeric_limits<double>::min(), inv);
-  rho[2] = -c_ * (inv * inv);
-}
-
-void ArctanLoss::Evaluate(double s, double rho[3]) const {
-  const double sum = 1 + s * s * b_;
-  const double inv = 1 / sum;
-  // 'sum' and 'inv' are always positive.
-  rho[0] = a_ * atan2(s, a_);
-  rho[1] = std::max(std::numeric_limits<double>::min(), inv);
-  rho[2] = -2.0 * s * b_ * (inv * inv);
-}
-
-TolerantLoss::TolerantLoss(double a, double b)
-    : a_(a), b_(b), c_(b * log(1.0 + exp(-a / b))) {
-  CHECK_GE(a, 0.0);
-  CHECK_GT(b, 0.0);
-}
-
-void TolerantLoss::Evaluate(double s, double rho[3]) const {
-  const double x = (s - a_) / b_;
-  // The basic equation is rho[0] = b ln(1 + e^x).  However, if e^x is too
-  // large, it will overflow.  Since numerically 1 + e^x == e^x when the
-  // x is greater than about ln(2^53) for doubles, beyond this threshold
-  // we substitute x for ln(1 + e^x) as a numerically equivalent approximation.
-
-  // ln(MathLimits<double>::kEpsilon).
-  static constexpr double kLog2Pow53 = 36.7;
-  if (x > kLog2Pow53) {
-    rho[0] = s - a_ - c_;
-    rho[1] = 1.0;
-    rho[2] = 0.0;
-  } else {
-    const double e_x = exp(x);
-    rho[0] = b_ * log(1.0 + e_x) - c_;
-    rho[1] = std::max(std::numeric_limits<double>::min(), e_x / (1.0 + e_x));
-    rho[2] = 0.5 / (b_ * (1.0 + cosh(x)));
-  }
-}
-
-void TukeyLoss::Evaluate(double s, double* rho) const {
-  if (s <= a_squared_) {
-    // Inlier region.
-    const double value = 1.0 - s / a_squared_;
-    const double value_sq = value * value;
-    rho[0] = a_squared_ / 3.0 * (1.0 - value_sq * value);
-    rho[1] = value_sq;
-    rho[2] = -2.0 / a_squared_ * value;
-  } else {
-    // Outlier region.
-    rho[0] = a_squared_ / 3.0;
-    rho[1] = 0.0;
-    rho[2] = 0.0;
-  }
-}
-
-ComposedLoss::ComposedLoss(const LossFunction* f,
-                           Ownership ownership_f,
-                           const LossFunction* g,
-                           Ownership ownership_g)
-    : f_(f), g_(g), ownership_f_(ownership_f), ownership_g_(ownership_g) {
-  CHECK(f_ != nullptr);
-  CHECK(g_ != nullptr);
-}
-
-ComposedLoss::~ComposedLoss() {
-  if (ownership_f_ == DO_NOT_TAKE_OWNERSHIP) {
-    f_.release();
-  }
-  if (ownership_g_ == DO_NOT_TAKE_OWNERSHIP) {
-    g_.release();
-  }
-}
-
-void ComposedLoss::Evaluate(double s, double rho[3]) const {
-  double rho_f[3], rho_g[3];
-  g_->Evaluate(s, rho_g);
-  f_->Evaluate(rho_g[0], rho_f);
-  rho[0] = rho_f[0];
-  // f'(g(s)) * g'(s).
-  rho[1] = rho_f[1] * rho_g[1];
-  // f''(g(s)) * g'(s) * g'(s) + f'(g(s)) * g''(s).
-  rho[2] = rho_f[2] * rho_g[1] * rho_g[1] + rho_f[1] * rho_g[2];
-}
-
-void ScaledLoss::Evaluate(double s, double rho[3]) const {
-  if (rho_.get() == nullptr) {
-    rho[0] = a_ * s;
-    rho[1] = a_;
-    rho[2] = 0.0;
-  } else {
-    rho_->Evaluate(s, rho);
-    rho[0] *= a_;
-    rho[1] *= a_;
-    rho[2] *= a_;
-  }
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/loss_function_test.cc b/third_party/ceres/internal/ceres/loss_function_test.cc
deleted file mode 100644
index 1fd492b..0000000
--- a/third_party/ceres/internal/ceres/loss_function_test.cc
+++ /dev/null
@@ -1,287 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/loss_function.h"
-
-#include <cstddef>
-
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-namespace {
-
-// Helper function for testing a LossFunction callback.
-//
-// Compares the values of rho'(s) and rho''(s) computed by the
-// callback with estimates obtained by symmetric finite differencing
-// of rho(s).
-void AssertLossFunctionIsValid(const LossFunction& loss, double s) {
-  CHECK_GT(s, 0);
-
-  // Evaluate rho(s), rho'(s) and rho''(s).
-  double rho[3];
-  loss.Evaluate(s, rho);
-
-  // Use symmetric finite differencing to estimate rho'(s) and
-  // rho''(s).
-  const double kH = 1e-4;
-  // Values at s + kH.
-  double fwd[3];
-  // Values at s - kH.
-  double bwd[3];
-  loss.Evaluate(s + kH, fwd);
-  loss.Evaluate(s - kH, bwd);
-
-  // First derivative.
-  const double fd_1 = (fwd[0] - bwd[0]) / (2 * kH);
-  ASSERT_NEAR(fd_1, rho[1], 1e-6);
-
-  // Second derivative.
-  const double fd_2 = (fwd[0] - 2 * rho[0] + bwd[0]) / (kH * kH);
-  ASSERT_NEAR(fd_2, rho[2], 1e-6);
-}
-}  // namespace
-
-// Try two values of the scaling a = 0.7 and 1.3
-// (where scaling makes sense) and of the squared norm
-// s = 0.357 and 1.792
-//
-// Note that for the Huber loss the test exercises both code paths
-//  (i.e. both small and large values of s).
-
-TEST(LossFunction, TrivialLoss) {
-  AssertLossFunctionIsValid(TrivialLoss(), 0.357);
-  AssertLossFunctionIsValid(TrivialLoss(), 1.792);
-  // Check that at s = 0: rho = [0, 1, 0].
-  double rho[3];
-  TrivialLoss().Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  ASSERT_NEAR(rho[1], 1.0, 1e-6);
-  ASSERT_NEAR(rho[2], 0.0, 1e-6);
-}
-
-TEST(LossFunction, HuberLoss) {
-  AssertLossFunctionIsValid(HuberLoss(0.7), 0.357);
-  AssertLossFunctionIsValid(HuberLoss(0.7), 1.792);
-  AssertLossFunctionIsValid(HuberLoss(1.3), 0.357);
-  AssertLossFunctionIsValid(HuberLoss(1.3), 1.792);
-  // Check that at s = 0: rho = [0, 1, 0].
-  double rho[3];
-  HuberLoss(0.7).Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  ASSERT_NEAR(rho[1], 1.0, 1e-6);
-  ASSERT_NEAR(rho[2], 0.0, 1e-6);
-}
-
-TEST(LossFunction, SoftLOneLoss) {
-  AssertLossFunctionIsValid(SoftLOneLoss(0.7), 0.357);
-  AssertLossFunctionIsValid(SoftLOneLoss(0.7), 1.792);
-  AssertLossFunctionIsValid(SoftLOneLoss(1.3), 0.357);
-  AssertLossFunctionIsValid(SoftLOneLoss(1.3), 1.792);
-  // Check that at s = 0: rho = [0, 1, -1 / (2 * a^2)].
-  double rho[3];
-  SoftLOneLoss(0.7).Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  ASSERT_NEAR(rho[1], 1.0, 1e-6);
-  ASSERT_NEAR(rho[2], -0.5 / (0.7 * 0.7), 1e-6);
-}
-
-TEST(LossFunction, CauchyLoss) {
-  AssertLossFunctionIsValid(CauchyLoss(0.7), 0.357);
-  AssertLossFunctionIsValid(CauchyLoss(0.7), 1.792);
-  AssertLossFunctionIsValid(CauchyLoss(1.3), 0.357);
-  AssertLossFunctionIsValid(CauchyLoss(1.3), 1.792);
-  // Check that at s = 0: rho = [0, 1, -1 / a^2].
-  double rho[3];
-  CauchyLoss(0.7).Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  ASSERT_NEAR(rho[1], 1.0, 1e-6);
-  ASSERT_NEAR(rho[2], -1.0 / (0.7 * 0.7), 1e-6);
-}
-
-TEST(LossFunction, ArctanLoss) {
-  AssertLossFunctionIsValid(ArctanLoss(0.7), 0.357);
-  AssertLossFunctionIsValid(ArctanLoss(0.7), 1.792);
-  AssertLossFunctionIsValid(ArctanLoss(1.3), 0.357);
-  AssertLossFunctionIsValid(ArctanLoss(1.3), 1.792);
-  // Check that at s = 0: rho = [0, 1, 0].
-  double rho[3];
-  ArctanLoss(0.7).Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  ASSERT_NEAR(rho[1], 1.0, 1e-6);
-  ASSERT_NEAR(rho[2], 0.0, 1e-6);
-}
-
-TEST(LossFunction, TolerantLoss) {
-  AssertLossFunctionIsValid(TolerantLoss(0.7, 0.4), 0.357);
-  AssertLossFunctionIsValid(TolerantLoss(0.7, 0.4), 1.792);
-  AssertLossFunctionIsValid(TolerantLoss(0.7, 0.4), 55.5);
-  AssertLossFunctionIsValid(TolerantLoss(1.3, 0.1), 0.357);
-  AssertLossFunctionIsValid(TolerantLoss(1.3, 0.1), 1.792);
-  AssertLossFunctionIsValid(TolerantLoss(1.3, 0.1), 55.5);
-  // Check the value at zero is actually zero.
-  double rho[3];
-  TolerantLoss(0.7, 0.4).Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  // Check that loss before and after the approximation threshold are good.
-  // A threshold of 36.7 is used by the implementation.
-  AssertLossFunctionIsValid(TolerantLoss(20.0, 1.0), 20.0 + 36.6);
-  AssertLossFunctionIsValid(TolerantLoss(20.0, 1.0), 20.0 + 36.7);
-  AssertLossFunctionIsValid(TolerantLoss(20.0, 1.0), 20.0 + 36.8);
-  AssertLossFunctionIsValid(TolerantLoss(20.0, 1.0), 20.0 + 1000.0);
-}
-
-TEST(LossFunction, TukeyLoss) {
-  AssertLossFunctionIsValid(TukeyLoss(0.7), 0.357);
-  AssertLossFunctionIsValid(TukeyLoss(0.7), 1.792);
-  AssertLossFunctionIsValid(TukeyLoss(1.3), 0.357);
-  AssertLossFunctionIsValid(TukeyLoss(1.3), 1.792);
-  // Check that at s = 0: rho = [0, 1, -2 / a^2].
-  double rho[3];
-  TukeyLoss(0.7).Evaluate(0.0, rho);
-  ASSERT_NEAR(rho[0], 0.0, 1e-6);
-  ASSERT_NEAR(rho[1], 1.0, 1e-6);
-  ASSERT_NEAR(rho[2], -2.0 / (0.7 * 0.7), 1e-6);
-}
-
-TEST(LossFunction, ComposedLoss) {
-  {
-    HuberLoss f(0.7);
-    CauchyLoss g(1.3);
-    ComposedLoss c(&f, DO_NOT_TAKE_OWNERSHIP, &g, DO_NOT_TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(c, 0.357);
-    AssertLossFunctionIsValid(c, 1.792);
-  }
-  {
-    CauchyLoss f(0.7);
-    HuberLoss g(1.3);
-    ComposedLoss c(&f, DO_NOT_TAKE_OWNERSHIP, &g, DO_NOT_TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(c, 0.357);
-    AssertLossFunctionIsValid(c, 1.792);
-  }
-}
-
-TEST(LossFunction, ScaledLoss) {
-  // Wrap a few loss functions, and a few scale factors. This can't combine
-  // construction with the call to AssertLossFunctionIsValid() because Apple's
-  // GCC is unable to eliminate the copy of ScaledLoss, which is not copyable.
-  {
-    ScaledLoss scaled_loss(nullptr, 6, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 0.323);
-  }
-  {
-    ScaledLoss scaled_loss(new TrivialLoss(), 10, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 0.357);
-  }
-  {
-    ScaledLoss scaled_loss(new HuberLoss(0.7), 0.1, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 1.792);
-  }
-  {
-    ScaledLoss scaled_loss(new SoftLOneLoss(1.3), 0.1, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 1.792);
-  }
-  {
-    ScaledLoss scaled_loss(new CauchyLoss(1.3), 10, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 1.792);
-  }
-  {
-    ScaledLoss scaled_loss(new ArctanLoss(1.3), 10, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 1.792);
-  }
-  {
-    ScaledLoss scaled_loss(new TolerantLoss(1.3, 0.1), 10, TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 1.792);
-  }
-  {
-    ScaledLoss scaled_loss(new ComposedLoss(new HuberLoss(0.8),
-                                            TAKE_OWNERSHIP,
-                                            new TolerantLoss(1.3, 0.5),
-                                            TAKE_OWNERSHIP),
-                           10,
-                           TAKE_OWNERSHIP);
-    AssertLossFunctionIsValid(scaled_loss, 1.792);
-  }
-}
-
-TEST(LossFunction, LossFunctionWrapper) {
-  // Initialization
-  HuberLoss loss_function1(1.0);
-  LossFunctionWrapper loss_function_wrapper(new HuberLoss(1.0), TAKE_OWNERSHIP);
-
-  double s = 0.862;
-  double rho_gold[3];
-  double rho[3];
-  loss_function1.Evaluate(s, rho_gold);
-  loss_function_wrapper.Evaluate(s, rho);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_NEAR(rho[i], rho_gold[i], 1e-12);
-  }
-
-  // Resetting
-  HuberLoss loss_function2(0.5);
-  loss_function_wrapper.Reset(new HuberLoss(0.5), TAKE_OWNERSHIP);
-  loss_function_wrapper.Evaluate(s, rho);
-  loss_function2.Evaluate(s, rho_gold);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_NEAR(rho[i], rho_gold[i], 1e-12);
-  }
-
-  // Not taking ownership.
-  HuberLoss loss_function3(0.3);
-  loss_function_wrapper.Reset(&loss_function3, DO_NOT_TAKE_OWNERSHIP);
-  loss_function_wrapper.Evaluate(s, rho);
-  loss_function3.Evaluate(s, rho_gold);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_NEAR(rho[i], rho_gold[i], 1e-12);
-  }
-
-  // Set to nullptr
-  TrivialLoss loss_function4;
-  loss_function_wrapper.Reset(nullptr, TAKE_OWNERSHIP);
-  loss_function_wrapper.Evaluate(s, rho);
-  loss_function4.Evaluate(s, rho_gold);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_NEAR(rho[i], rho_gold[i], 1e-12);
-  }
-
-  // Set to nullptr, not taking ownership
-  loss_function_wrapper.Reset(nullptr, DO_NOT_TAKE_OWNERSHIP);
-  loss_function_wrapper.Evaluate(s, rho);
-  loss_function4.Evaluate(s, rho_gold);
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_NEAR(rho[i], rho_gold[i], 1e-12);
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/low_rank_inverse_hessian.cc b/third_party/ceres/internal/ceres/low_rank_inverse_hessian.cc
deleted file mode 100644
index 14559b6..0000000
--- a/third_party/ceres/internal/ceres/low_rank_inverse_hessian.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/low_rank_inverse_hessian.h"
-
-#include <list>
-
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// The (L)BFGS algorithm explicitly requires that the secant equation:
-//
-//   B_{k+1} * s_k = y_k
-//
-// Is satisfied at each iteration, where B_{k+1} is the approximated
-// Hessian at the k+1-th iteration, s_k = (x_{k+1} - x_{k}) and
-// y_k = (grad_{k+1} - grad_{k}). As the approximated Hessian must be
-// positive definite, this is equivalent to the condition:
-//
-//   s_k^T * y_k > 0     [s_k^T * B_{k+1} * s_k = s_k^T * y_k > 0]
-//
-// This condition would always be satisfied if the function was strictly
-// convex, alternatively, it is always satisfied provided that a Wolfe line
-// search is used (even if the function is not strictly convex).  See [1]
-// (p138) for a proof.
-//
-// Although Ceres will always use a Wolfe line search when using (L)BFGS,
-// practical implementation considerations mean that the line search
-// may return a point that satisfies only the Armijo condition, and thus
-// could violate the Secant equation.  As such, we will only use a step
-// to update the Hessian approximation if:
-//
-//   s_k^T * y_k > tolerance
-//
-// It is important that tolerance is very small (and >=0), as otherwise we
-// might skip the update too often and fail to capture important curvature
-// information in the Hessian.  For example going from 1e-10 -> 1e-14 improves
-// the NIST benchmark score from 43/54 to 53/54.
-//
-// [1] Nocedal J., Wright S., Numerical Optimization, 2nd Ed. Springer, 1999.
-//
-// TODO(alexs.mac): Consider using Damped BFGS update instead of
-// skipping update.
-const double kLBFGSSecantConditionHessianUpdateTolerance = 1e-14;
-
-LowRankInverseHessian::LowRankInverseHessian(
-    int num_parameters,
-    int max_num_corrections,
-    bool use_approximate_eigenvalue_scaling)
-    : num_parameters_(num_parameters),
-      max_num_corrections_(max_num_corrections),
-      use_approximate_eigenvalue_scaling_(use_approximate_eigenvalue_scaling),
-      approximate_eigenvalue_scale_(1.0),
-      delta_x_history_(num_parameters, max_num_corrections),
-      delta_gradient_history_(num_parameters, max_num_corrections),
-      delta_x_dot_delta_gradient_(max_num_corrections) {}
-
-bool LowRankInverseHessian::Update(const Vector& delta_x,
-                                   const Vector& delta_gradient) {
-  const double delta_x_dot_delta_gradient = delta_x.dot(delta_gradient);
-  if (delta_x_dot_delta_gradient <=
-      kLBFGSSecantConditionHessianUpdateTolerance) {
-    VLOG(2) << "Skipping L-BFGS Update, delta_x_dot_delta_gradient too "
-            << "small: " << delta_x_dot_delta_gradient
-            << ", tolerance: " << kLBFGSSecantConditionHessianUpdateTolerance
-            << " (Secant condition).";
-    return false;
-  }
-
-  int next = indices_.size();
-  // Once the size of the list reaches max_num_corrections_, simulate
-  // a circular buffer by removing the first element of the list and
-  // making it the next position where the LBFGS history is stored.
-  if (next == max_num_corrections_) {
-    next = indices_.front();
-    indices_.pop_front();
-  }
-
-  indices_.push_back(next);
-  delta_x_history_.col(next) = delta_x;
-  delta_gradient_history_.col(next) = delta_gradient;
-  delta_x_dot_delta_gradient_(next) = delta_x_dot_delta_gradient;
-  approximate_eigenvalue_scale_ =
-      delta_x_dot_delta_gradient / delta_gradient.squaredNorm();
-  return true;
-}
-
-void LowRankInverseHessian::RightMultiplyAndAccumulate(const double* x_ptr,
-                                                       double* y_ptr) const {
-  ConstVectorRef gradient(x_ptr, num_parameters_);
-  VectorRef search_direction(y_ptr, num_parameters_);
-
-  search_direction = gradient;
-
-  const int num_corrections = indices_.size();
-  Vector alpha(num_corrections);
-
-  for (auto it = indices_.rbegin(); it != indices_.rend(); ++it) {
-    const double alpha_i = delta_x_history_.col(*it).dot(search_direction) /
-                           delta_x_dot_delta_gradient_(*it);
-    search_direction -= alpha_i * delta_gradient_history_.col(*it);
-    alpha(*it) = alpha_i;
-  }
-
-  if (use_approximate_eigenvalue_scaling_) {
-    // Rescale the initial inverse Hessian approximation (H_0) to be iteratively
-    // updated so that it is of similar 'size' to the true inverse Hessian along
-    // the most recent search direction.  As shown in [1]:
-    //
-    //   \gamma_k = (delta_gradient_{k-1}' * delta_x_{k-1}) /
-    //              (delta_gradient_{k-1}' * delta_gradient_{k-1})
-    //
-    // Satisfies:
-    //
-    //   (1 / \lambda_m) <= \gamma_k <= (1 / \lambda_1)
-    //
-    // Where \lambda_1 & \lambda_m are the smallest and largest eigenvalues of
-    // the true Hessian (not the inverse) along the most recent search direction
-    // respectively.  Thus \gamma is an approximate eigenvalue of the true
-    // inverse Hessian, and choosing: H_0 = I * \gamma will yield a starting
-    // point that has a similar scale to the true inverse Hessian.  This
-    // technique is widely reported to often improve convergence, however this
-    // is not universally true, particularly if there are errors in the initial
-    // jacobians, or if there are significant differences in the sensitivity
-    // of the problem to the parameters (i.e. the range of the magnitudes of
-    // the components of the gradient is large).
-    //
-    // The original origin of this rescaling trick is somewhat unclear, the
-    // earliest reference appears to be Oren [1], however it is widely discussed
-    // without specific attribution in various texts including [2] (p143/178).
-    //
-    // [1] Oren S.S., Self-scaling variable metric (SSVM) algorithms Part II:
-    //     Implementation and experiments, Management Science,
-    //     20(5), 863-874, 1974.
-    // [2] Nocedal J., Wright S., Numerical Optimization, Springer, 1999.
-    search_direction *= approximate_eigenvalue_scale_;
-
-    VLOG(4) << "Applying approximate_eigenvalue_scale: "
-            << approximate_eigenvalue_scale_ << " to initial inverse Hessian "
-            << "approximation.";
-  }
-
-  for (const int i : indices_) {
-    const double beta = delta_gradient_history_.col(i).dot(search_direction) /
-                        delta_x_dot_delta_gradient_(i);
-    search_direction += delta_x_history_.col(i) * (alpha(i) - beta);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/low_rank_inverse_hessian.h b/third_party/ceres/internal/ceres/low_rank_inverse_hessian.h
deleted file mode 100644
index 72f6f65..0000000
--- a/third_party/ceres/internal/ceres/low_rank_inverse_hessian.h
+++ /dev/null
@@ -1,106 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Limited memory positive definite approximation to the inverse
-// Hessian, using the LBFGS algorithm
-
-#ifndef CERES_INTERNAL_LOW_RANK_INVERSE_HESSIAN_H_
-#define CERES_INTERNAL_LOW_RANK_INVERSE_HESSIAN_H_
-
-#include <list>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_operator.h"
-
-namespace ceres::internal {
-
-// LowRankInverseHessian is a positive definite approximation to the
-// Hessian using the limited memory variant of the
-// Broyden-Fletcher-Goldfarb-Shanno (BFGS)secant formula for
-// approximating the Hessian.
-//
-// Other update rules like the Davidon-Fletcher-Powell (DFP) are
-// possible, but the BFGS rule is considered the best performing one.
-//
-// The limited memory variant was developed by Nocedal and further
-// enhanced with scaling rule by Byrd, Nocedal and Schanbel.
-//
-// Nocedal, J. (1980). "Updating Quasi-Newton Matrices with Limited
-// Storage". Mathematics of Computation 35 (151): 773-782.
-//
-// Byrd, R. H.; Nocedal, J.; Schnabel, R. B. (1994).
-// "Representations of Quasi-Newton Matrices and their use in
-// Limited Memory Methods". Mathematical Programming 63 (4):
-class CERES_NO_EXPORT LowRankInverseHessian final : public LinearOperator {
- public:
-  // num_parameters is the row/column size of the Hessian.
-  // max_num_corrections is the rank of the Hessian approximation.
-  // use_approximate_eigenvalue_scaling controls whether the initial
-  // inverse Hessian used during Right/LeftMultiplyAndAccumulate() is scaled by
-  // the approximate eigenvalue of the true inverse Hessian at the
-  // current operating point.
-  // The approximation uses:
-  // 2 * max_num_corrections * num_parameters + max_num_corrections
-  // doubles.
-  LowRankInverseHessian(int num_parameters,
-                        int max_num_corrections,
-                        bool use_approximate_eigenvalue_scaling);
-
-  // Update the low rank approximation. delta_x is the change in the
-  // domain of Hessian, and delta_gradient is the change in the
-  // gradient.  The update copies the delta_x and delta_gradient
-  // vectors, and gets rid of the oldest delta_x and delta_gradient
-  // vectors if the number of corrections is already equal to
-  // max_num_corrections.
-  bool Update(const Vector& delta_x, const Vector& delta_gradient);
-
-  // LinearOperator interface
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final {
-    RightMultiplyAndAccumulate(x, y);
-  }
-  int num_rows() const final { return num_parameters_; }
-  int num_cols() const final { return num_parameters_; }
-
- private:
-  const int num_parameters_;
-  const int max_num_corrections_;
-  const bool use_approximate_eigenvalue_scaling_;
-  double approximate_eigenvalue_scale_;
-  ColMajorMatrix delta_x_history_;
-  ColMajorMatrix delta_gradient_history_;
-  Vector delta_x_dot_delta_gradient_;
-  std::list<int> indices_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_LOW_RANK_INVERSE_HESSIAN_H_
diff --git a/third_party/ceres/internal/ceres/manifold.cc b/third_party/ceres/internal/ceres/manifold.cc
deleted file mode 100644
index c4895fd..0000000
--- a/third_party/ceres/internal/ceres/manifold.cc
+++ /dev/null
@@ -1,316 +0,0 @@
-#include "ceres/manifold.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "glog/logging.h"
-
-namespace ceres {
-namespace {
-
-struct CeresQuaternionOrder {
-  static constexpr int kW = 0;
-  static constexpr int kX = 1;
-  static constexpr int kY = 2;
-  static constexpr int kZ = 3;
-};
-
-struct EigenQuaternionOrder {
-  static constexpr int kW = 3;
-  static constexpr int kX = 0;
-  static constexpr int kY = 1;
-  static constexpr int kZ = 2;
-};
-
-template <typename Order>
-inline void QuaternionPlusImpl(const double* x,
-                               const double* delta,
-                               double* x_plus_delta) {
-  // x_plus_delta = QuaternionProduct(q_delta, x), where q_delta is the
-  // quaternion constructed from delta.
-  const double norm_delta = std::hypot(delta[0], delta[1], delta[2]);
-
-  if (std::fpclassify(norm_delta) == FP_ZERO) {
-    // No change in rotation: return the quaternion as is.
-    std::copy_n(x, 4, x_plus_delta);
-    return;
-  }
-
-  const double sin_delta_by_delta = (std::sin(norm_delta) / norm_delta);
-  double q_delta[4];
-  q_delta[Order::kW] = std::cos(norm_delta);
-  q_delta[Order::kX] = sin_delta_by_delta * delta[0];
-  q_delta[Order::kY] = sin_delta_by_delta * delta[1];
-  q_delta[Order::kZ] = sin_delta_by_delta * delta[2];
-
-  x_plus_delta[Order::kW] =
-      q_delta[Order::kW] * x[Order::kW] - q_delta[Order::kX] * x[Order::kX] -
-      q_delta[Order::kY] * x[Order::kY] - q_delta[Order::kZ] * x[Order::kZ];
-  x_plus_delta[Order::kX] =
-      q_delta[Order::kW] * x[Order::kX] + q_delta[Order::kX] * x[Order::kW] +
-      q_delta[Order::kY] * x[Order::kZ] - q_delta[Order::kZ] * x[Order::kY];
-  x_plus_delta[Order::kY] =
-      q_delta[Order::kW] * x[Order::kY] - q_delta[Order::kX] * x[Order::kZ] +
-      q_delta[Order::kY] * x[Order::kW] + q_delta[Order::kZ] * x[Order::kX];
-  x_plus_delta[Order::kZ] =
-      q_delta[Order::kW] * x[Order::kZ] + q_delta[Order::kX] * x[Order::kY] -
-      q_delta[Order::kY] * x[Order::kX] + q_delta[Order::kZ] * x[Order::kW];
-}
-
-template <typename Order>
-inline void QuaternionPlusJacobianImpl(const double* x, double* jacobian_ptr) {
-  Eigen::Map<Eigen::Matrix<double, 4, 3, Eigen::RowMajor>> jacobian(
-      jacobian_ptr);
-
-  jacobian(Order::kW, 0) = -x[Order::kX];
-  jacobian(Order::kW, 1) = -x[Order::kY];
-  jacobian(Order::kW, 2) = -x[Order::kZ];
-  jacobian(Order::kX, 0) = x[Order::kW];
-  jacobian(Order::kX, 1) = x[Order::kZ];
-  jacobian(Order::kX, 2) = -x[Order::kY];
-  jacobian(Order::kY, 0) = -x[Order::kZ];
-  jacobian(Order::kY, 1) = x[Order::kW];
-  jacobian(Order::kY, 2) = x[Order::kX];
-  jacobian(Order::kZ, 0) = x[Order::kY];
-  jacobian(Order::kZ, 1) = -x[Order::kX];
-  jacobian(Order::kZ, 2) = x[Order::kW];
-}
-
-template <typename Order>
-inline void QuaternionMinusImpl(const double* y,
-                                const double* x,
-                                double* y_minus_x) {
-  // ambient_y_minus_x = QuaternionProduct(y, -x) where -x is the conjugate of
-  // x.
-  double ambient_y_minus_x[4];
-  ambient_y_minus_x[Order::kW] =
-      y[Order::kW] * x[Order::kW] + y[Order::kX] * x[Order::kX] +
-      y[Order::kY] * x[Order::kY] + y[Order::kZ] * x[Order::kZ];
-  ambient_y_minus_x[Order::kX] =
-      -y[Order::kW] * x[Order::kX] + y[Order::kX] * x[Order::kW] -
-      y[Order::kY] * x[Order::kZ] + y[Order::kZ] * x[Order::kY];
-  ambient_y_minus_x[Order::kY] =
-      -y[Order::kW] * x[Order::kY] + y[Order::kX] * x[Order::kZ] +
-      y[Order::kY] * x[Order::kW] - y[Order::kZ] * x[Order::kX];
-  ambient_y_minus_x[Order::kZ] =
-      -y[Order::kW] * x[Order::kZ] - y[Order::kX] * x[Order::kY] +
-      y[Order::kY] * x[Order::kX] + y[Order::kZ] * x[Order::kW];
-
-  const double u_norm = std::hypot(ambient_y_minus_x[Order::kX],
-                                   ambient_y_minus_x[Order::kY],
-                                   ambient_y_minus_x[Order::kZ]);
-  if (std::fpclassify(u_norm) != FP_ZERO) {
-    const double theta = std::atan2(u_norm, ambient_y_minus_x[Order::kW]);
-    y_minus_x[0] = theta * ambient_y_minus_x[Order::kX] / u_norm;
-    y_minus_x[1] = theta * ambient_y_minus_x[Order::kY] / u_norm;
-    y_minus_x[2] = theta * ambient_y_minus_x[Order::kZ] / u_norm;
-  } else {
-    std::fill_n(y_minus_x, 3, 0.0);
-  }
-}
-
-template <typename Order>
-inline void QuaternionMinusJacobianImpl(const double* x, double* jacobian_ptr) {
-  Eigen::Map<Eigen::Matrix<double, 3, 4, Eigen::RowMajor>> jacobian(
-      jacobian_ptr);
-
-  jacobian(0, Order::kW) = -x[Order::kX];
-  jacobian(0, Order::kX) = x[Order::kW];
-  jacobian(0, Order::kY) = -x[Order::kZ];
-  jacobian(0, Order::kZ) = x[Order::kY];
-  jacobian(1, Order::kW) = -x[Order::kY];
-  jacobian(1, Order::kX) = x[Order::kZ];
-  jacobian(1, Order::kY) = x[Order::kW];
-  jacobian(1, Order::kZ) = -x[Order::kX];
-  jacobian(2, Order::kW) = -x[Order::kZ];
-  jacobian(2, Order::kX) = -x[Order::kY];
-  jacobian(2, Order::kY) = x[Order::kX];
-  jacobian(2, Order::kZ) = x[Order::kW];
-}
-
-}  // namespace
-
-Manifold::~Manifold() = default;
-
-bool Manifold::RightMultiplyByPlusJacobian(const double* x,
-                                           const int num_rows,
-                                           const double* ambient_matrix,
-                                           double* tangent_matrix) const {
-  const int tangent_size = TangentSize();
-  if (tangent_size == 0) {
-    return true;
-  }
-
-  const int ambient_size = AmbientSize();
-  Matrix plus_jacobian(ambient_size, tangent_size);
-  if (!PlusJacobian(x, plus_jacobian.data())) {
-    return false;
-  }
-
-  MatrixRef(tangent_matrix, num_rows, tangent_size) =
-      ConstMatrixRef(ambient_matrix, num_rows, ambient_size) * plus_jacobian;
-  return true;
-}
-
-SubsetManifold::SubsetManifold(const int size,
-                               const std::vector<int>& constant_parameters)
-
-    : tangent_size_(size - constant_parameters.size()),
-      constancy_mask_(size, false) {
-  if (constant_parameters.empty()) {
-    return;
-  }
-
-  std::vector<int> constant = constant_parameters;
-  std::sort(constant.begin(), constant.end());
-  CHECK_GE(constant.front(), 0) << "Indices indicating constant parameter must "
-                                   "be greater than equal to zero.";
-  CHECK_LT(constant.back(), size)
-      << "Indices indicating constant parameter must be less than the size "
-      << "of the parameter block.";
-  CHECK(std::adjacent_find(constant.begin(), constant.end()) == constant.end())
-      << "The set of constant parameters cannot contain duplicates";
-
-  for (auto index : constant_parameters) {
-    constancy_mask_[index] = true;
-  }
-}
-
-int SubsetManifold::AmbientSize() const { return constancy_mask_.size(); }
-
-int SubsetManifold::TangentSize() const { return tangent_size_; }
-
-bool SubsetManifold::Plus(const double* x,
-                          const double* delta,
-                          double* x_plus_delta) const {
-  const int ambient_size = AmbientSize();
-  for (int i = 0, j = 0; i < ambient_size; ++i) {
-    if (constancy_mask_[i]) {
-      x_plus_delta[i] = x[i];
-    } else {
-      x_plus_delta[i] = x[i] + delta[j++];
-    }
-  }
-  return true;
-}
-
-bool SubsetManifold::PlusJacobian(const double* /*x*/,
-                                  double* plus_jacobian) const {
-  if (tangent_size_ == 0) {
-    return true;
-  }
-
-  const int ambient_size = AmbientSize();
-  MatrixRef m(plus_jacobian, ambient_size, tangent_size_);
-  m.setZero();
-  for (int r = 0, c = 0; r < ambient_size; ++r) {
-    if (!constancy_mask_[r]) {
-      m(r, c++) = 1.0;
-    }
-  }
-  return true;
-}
-
-bool SubsetManifold::RightMultiplyByPlusJacobian(const double* /*x*/,
-                                                 const int num_rows,
-                                                 const double* ambient_matrix,
-                                                 double* tangent_matrix) const {
-  if (tangent_size_ == 0) {
-    return true;
-  }
-
-  const int ambient_size = AmbientSize();
-  for (int r = 0; r < num_rows; ++r) {
-    for (int idx = 0, c = 0; idx < ambient_size; ++idx) {
-      if (!constancy_mask_[idx]) {
-        tangent_matrix[r * tangent_size_ + c++] =
-            ambient_matrix[r * ambient_size + idx];
-      }
-    }
-  }
-  return true;
-}
-
-bool SubsetManifold::Minus(const double* y,
-                           const double* x,
-                           double* y_minus_x) const {
-  if (tangent_size_ == 0) {
-    return true;
-  }
-
-  const int ambient_size = AmbientSize();
-  for (int i = 0, j = 0; i < ambient_size; ++i) {
-    if (!constancy_mask_[i]) {
-      y_minus_x[j++] = y[i] - x[i];
-    }
-  }
-  return true;
-}
-
-bool SubsetManifold::MinusJacobian(const double* /*x*/,
-                                   double* minus_jacobian) const {
-  const int ambient_size = AmbientSize();
-  MatrixRef m(minus_jacobian, tangent_size_, ambient_size);
-  m.setZero();
-  for (int c = 0, r = 0; c < ambient_size; ++c) {
-    if (!constancy_mask_[c]) {
-      m(r++, c) = 1.0;
-    }
-  }
-  return true;
-}
-
-bool QuaternionManifold::Plus(const double* x,
-                              const double* delta,
-                              double* x_plus_delta) const {
-  QuaternionPlusImpl<CeresQuaternionOrder>(x, delta, x_plus_delta);
-  return true;
-}
-
-bool QuaternionManifold::PlusJacobian(const double* x, double* jacobian) const {
-  QuaternionPlusJacobianImpl<CeresQuaternionOrder>(x, jacobian);
-  return true;
-}
-
-bool QuaternionManifold::Minus(const double* y,
-                               const double* x,
-                               double* y_minus_x) const {
-  QuaternionMinusImpl<CeresQuaternionOrder>(y, x, y_minus_x);
-  return true;
-}
-
-bool QuaternionManifold::MinusJacobian(const double* x,
-                                       double* jacobian) const {
-  QuaternionMinusJacobianImpl<CeresQuaternionOrder>(x, jacobian);
-  return true;
-}
-
-bool EigenQuaternionManifold::Plus(const double* x,
-                                   const double* delta,
-                                   double* x_plus_delta) const {
-  QuaternionPlusImpl<EigenQuaternionOrder>(x, delta, x_plus_delta);
-  return true;
-}
-
-bool EigenQuaternionManifold::PlusJacobian(const double* x,
-                                           double* jacobian) const {
-  QuaternionPlusJacobianImpl<EigenQuaternionOrder>(x, jacobian);
-  return true;
-}
-
-bool EigenQuaternionManifold::Minus(const double* y,
-                                    const double* x,
-                                    double* y_minus_x) const {
-  QuaternionMinusImpl<EigenQuaternionOrder>(y, x, y_minus_x);
-  return true;
-}
-
-bool EigenQuaternionManifold::MinusJacobian(const double* x,
-                                            double* jacobian) const {
-  QuaternionMinusJacobianImpl<EigenQuaternionOrder>(x, jacobian);
-  return true;
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/manifold_test.cc b/third_party/ceres/internal/ceres/manifold_test.cc
deleted file mode 100644
index 788e865..0000000
--- a/third_party/ceres/internal/ceres/manifold_test.cc
+++ /dev/null
@@ -1,1055 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/manifold.h"
-
-#include <cmath>
-#include <limits>
-#include <memory>
-#include <utility>
-
-#include "Eigen/Geometry"
-#include "ceres/constants.h"
-#include "ceres/dynamic_numeric_diff_cost_function.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/port.h"
-#include "ceres/line_manifold.h"
-#include "ceres/manifold_test_utils.h"
-#include "ceres/numeric_diff_options.h"
-#include "ceres/product_manifold.h"
-#include "ceres/rotation.h"
-#include "ceres/sphere_manifold.h"
-#include "ceres/types.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-constexpr int kNumTrials = 1000;
-constexpr double kTolerance = 1e-9;
-
-TEST(EuclideanManifold, StaticNormalFunctionTest) {
-  EuclideanManifold<3> manifold;
-  EXPECT_EQ(manifold.AmbientSize(), 3);
-  EXPECT_EQ(manifold.TangentSize(), 3);
-
-  Vector zero_tangent = Vector::Zero(manifold.TangentSize());
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    const Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-    Vector x_plus_delta = Vector::Zero(manifold.AmbientSize());
-
-    manifold.Plus(x.data(), delta.data(), x_plus_delta.data());
-    EXPECT_NEAR((x_plus_delta - x - delta).norm() / (x + delta).norm(),
-                0.0,
-                kTolerance);
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(EuclideanManifold, DynamicNormalFunctionTest) {
-  EuclideanManifold<DYNAMIC> manifold(3);
-  EXPECT_EQ(manifold.AmbientSize(), 3);
-  EXPECT_EQ(manifold.TangentSize(), 3);
-
-  Vector zero_tangent = Vector::Zero(manifold.TangentSize());
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    const Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-    Vector x_plus_delta = Vector::Zero(manifold.AmbientSize());
-
-    manifold.Plus(x.data(), delta.data(), x_plus_delta.data());
-    EXPECT_NEAR((x_plus_delta - x - delta).norm() / (x + delta).norm(),
-                0.0,
-                kTolerance);
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(SubsetManifold, EmptyConstantParameters) {
-  SubsetManifold manifold(3, {});
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(3);
-    const Vector y = Vector::Random(3);
-    Vector delta = Vector::Random(3);
-    Vector x_plus_delta = Vector::Zero(3);
-
-    manifold.Plus(x.data(), delta.data(), x_plus_delta.data());
-    EXPECT_NEAR((x_plus_delta - x - delta).norm() / (x + delta).norm(),
-                0.0,
-                kTolerance);
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(SubsetManifold, NegativeParameterIndexDeathTest) {
-  EXPECT_DEATH_IF_SUPPORTED(SubsetManifold manifold(2, {-1}),
-                            "greater than equal to zero");
-}
-
-TEST(SubsetManifold, GreaterThanSizeParameterIndexDeathTest) {
-  EXPECT_DEATH_IF_SUPPORTED(SubsetManifold manifold(2, {2}),
-                            "less than the size");
-}
-
-TEST(SubsetManifold, DuplicateParametersDeathTest) {
-  EXPECT_DEATH_IF_SUPPORTED(SubsetManifold manifold(2, {1, 1}), "duplicates");
-}
-
-TEST(SubsetManifold, NormalFunctionTest) {
-  const int kAmbientSize = 4;
-  const int kTangentSize = 3;
-
-  for (int i = 0; i < kAmbientSize; ++i) {
-    SubsetManifold manifold_with_ith_parameter_constant(kAmbientSize, {i});
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      const Vector x = Vector::Random(kAmbientSize);
-      Vector y = Vector::Random(kAmbientSize);
-      // x and y must have the same i^th coordinate to be on the manifold.
-      y[i] = x[i];
-      Vector delta = Vector::Random(kTangentSize);
-      Vector x_plus_delta = Vector::Zero(kAmbientSize);
-
-      x_plus_delta.setZero();
-      manifold_with_ith_parameter_constant.Plus(
-          x.data(), delta.data(), x_plus_delta.data());
-      int k = 0;
-      for (int j = 0; j < kAmbientSize; ++j) {
-        if (j == i) {
-          EXPECT_EQ(x_plus_delta[j], x[j]);
-        } else {
-          EXPECT_EQ(x_plus_delta[j], x[j] + delta[k++]);
-        }
-      }
-
-      EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(
-          manifold_with_ith_parameter_constant, x, delta, y, kTolerance);
-    }
-  }
-}
-
-TEST(ProductManifold, Size2) {
-  SubsetManifold manifold1(5, {2});
-  SubsetManifold manifold2(3, {0, 1});
-  ProductManifold<SubsetManifold, SubsetManifold> manifold(manifold1,
-                                                           manifold2);
-
-  EXPECT_EQ(manifold.AmbientSize(),
-            manifold1.AmbientSize() + manifold2.AmbientSize());
-  EXPECT_EQ(manifold.TangentSize(),
-            manifold1.TangentSize() + manifold2.TangentSize());
-}
-
-TEST(ProductManifold, Size3) {
-  SubsetManifold manifold1(5, {2});
-  SubsetManifold manifold2(3, {0, 1});
-  SubsetManifold manifold3(4, {1});
-
-  ProductManifold<SubsetManifold, SubsetManifold, SubsetManifold> manifold(
-      manifold1, manifold2, manifold3);
-
-  EXPECT_EQ(manifold.AmbientSize(),
-            manifold1.AmbientSize() + manifold2.AmbientSize() +
-                manifold3.AmbientSize());
-  EXPECT_EQ(manifold.TangentSize(),
-            manifold1.TangentSize() + manifold2.TangentSize() +
-                manifold3.TangentSize());
-}
-
-TEST(ProductManifold, Size4) {
-  SubsetManifold manifold1(5, {2});
-  SubsetManifold manifold2(3, {0, 1});
-  SubsetManifold manifold3(4, {1});
-  SubsetManifold manifold4(2, {0});
-
-  ProductManifold<SubsetManifold,
-                  SubsetManifold,
-                  SubsetManifold,
-                  SubsetManifold>
-      manifold(manifold1, manifold2, manifold3, manifold4);
-
-  EXPECT_EQ(manifold.AmbientSize(),
-            manifold1.AmbientSize() + manifold2.AmbientSize() +
-                manifold3.AmbientSize() + manifold4.AmbientSize());
-  EXPECT_EQ(manifold.TangentSize(),
-            manifold1.TangentSize() + manifold2.TangentSize() +
-                manifold3.TangentSize() + manifold4.TangentSize());
-}
-
-TEST(ProductManifold, NormalFunctionTest) {
-  SubsetManifold manifold1(5, {2});
-  SubsetManifold manifold2(3, {0, 1});
-  SubsetManifold manifold3(4, {1});
-  SubsetManifold manifold4(2, {0});
-
-  ProductManifold<SubsetManifold,
-                  SubsetManifold,
-                  SubsetManifold,
-                  SubsetManifold>
-      manifold(manifold1, manifold2, manifold3, manifold4);
-
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-    Vector x_plus_delta = Vector::Zero(manifold.AmbientSize());
-    Vector x_plus_delta_expected = Vector::Zero(manifold.AmbientSize());
-
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), x_plus_delta.data()));
-
-    int ambient_cursor = 0;
-    int tangent_cursor = 0;
-
-    EXPECT_TRUE(manifold1.Plus(&x[ambient_cursor],
-                               &delta[tangent_cursor],
-                               &x_plus_delta_expected[ambient_cursor]));
-    ambient_cursor += manifold1.AmbientSize();
-    tangent_cursor += manifold1.TangentSize();
-
-    EXPECT_TRUE(manifold2.Plus(&x[ambient_cursor],
-                               &delta[tangent_cursor],
-                               &x_plus_delta_expected[ambient_cursor]));
-    ambient_cursor += manifold2.AmbientSize();
-    tangent_cursor += manifold2.TangentSize();
-
-    EXPECT_TRUE(manifold3.Plus(&x[ambient_cursor],
-                               &delta[tangent_cursor],
-                               &x_plus_delta_expected[ambient_cursor]));
-    ambient_cursor += manifold3.AmbientSize();
-    tangent_cursor += manifold3.TangentSize();
-
-    EXPECT_TRUE(manifold4.Plus(&x[ambient_cursor],
-                               &delta[tangent_cursor],
-                               &x_plus_delta_expected[ambient_cursor]));
-    ambient_cursor += manifold4.AmbientSize();
-    tangent_cursor += manifold4.TangentSize();
-
-    for (int i = 0; i < x.size(); ++i) {
-      EXPECT_EQ(x_plus_delta[i], x_plus_delta_expected[i]);
-    }
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(
-        manifold, x, delta, x_plus_delta, kTolerance);
-  }
-}
-
-TEST(ProductManifold, ZeroTangentSizeAndEuclidean) {
-  SubsetManifold subset_manifold(1, {0});
-  EuclideanManifold<2> euclidean_manifold;
-  ProductManifold<SubsetManifold, EuclideanManifold<2>> manifold(
-      subset_manifold, euclidean_manifold);
-  EXPECT_EQ(manifold.AmbientSize(), 3);
-  EXPECT_EQ(manifold.TangentSize(), 2);
-
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(3);
-    Vector y = Vector::Random(3);
-    y[0] = x[0];
-    Vector delta = Vector::Random(2);
-    Vector x_plus_delta = Vector::Zero(3);
-
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), x_plus_delta.data()));
-
-    EXPECT_EQ(x_plus_delta[0], x[0]);
-    EXPECT_EQ(x_plus_delta[1], x[1] + delta[0]);
-    EXPECT_EQ(x_plus_delta[2], x[2] + delta[1]);
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(ProductManifold, EuclideanAndZeroTangentSize) {
-  SubsetManifold subset_manifold(1, {0});
-  EuclideanManifold<2> euclidean_manifold;
-  ProductManifold<EuclideanManifold<2>, SubsetManifold> manifold(
-      euclidean_manifold, subset_manifold);
-  EXPECT_EQ(manifold.AmbientSize(), 3);
-  EXPECT_EQ(manifold.TangentSize(), 2);
-
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(3);
-    Vector y = Vector::Random(3);
-    y[2] = x[2];
-    Vector delta = Vector::Random(2);
-    Vector x_plus_delta = Vector::Zero(3);
-
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), x_plus_delta.data()));
-    EXPECT_EQ(x_plus_delta[0], x[0] + delta[0]);
-    EXPECT_EQ(x_plus_delta[1], x[1] + delta[1]);
-    EXPECT_EQ(x_plus_delta[2], x[2]);
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-struct CopyableManifold : ceres::Manifold {
-  CopyableManifold() = default;
-  CopyableManifold(const CopyableManifold&) = default;
-  // Do not care about copy-assignment
-  CopyableManifold& operator=(const CopyableManifold&) = delete;
-  // Not moveable
-  CopyableManifold(CopyableManifold&&) = delete;
-  CopyableManifold& operator=(CopyableManifold&&) = delete;
-
-  int AmbientSize() const override { return 3; }
-  int TangentSize() const override { return 2; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override {
-    return true;
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const override {
-    return true;
-  }
-
-  bool RightMultiplyByPlusJacobian(const double* x,
-                                   const int num_rows,
-                                   const double* ambient_matrix,
-                                   double* tangent_matrix) const override {
-    return true;
-  }
-
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override {
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const override {
-    return true;
-  }
-};
-
-struct MoveableManifold : ceres::Manifold {
-  MoveableManifold() = default;
-  MoveableManifold(MoveableManifold&&) = default;
-  // Do not care about move-assignment
-  MoveableManifold& operator=(MoveableManifold&&) = delete;
-  // Not copyable
-  MoveableManifold(const MoveableManifold&) = delete;
-  MoveableManifold& operator=(const MoveableManifold&) = delete;
-
-  int AmbientSize() const override { return 3; }
-  int TangentSize() const override { return 2; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override {
-    return true;
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const override {
-    return true;
-  }
-
-  bool RightMultiplyByPlusJacobian(const double* x,
-                                   const int num_rows,
-                                   const double* ambient_matrix,
-                                   double* tangent_matrix) const override {
-    return true;
-  }
-
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override {
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const override {
-    return true;
-  }
-};
-
-TEST(ProductManifold, CopyableOnly) {
-  ProductManifold<CopyableManifold, EuclideanManifold<3>> manifold1{
-      CopyableManifold{}, EuclideanManifold<3>{}};
-
-  CopyableManifold inner2;
-  ProductManifold<CopyableManifold, EuclideanManifold<3>> manifold2{
-      inner2, EuclideanManifold<3>{}};
-
-  EXPECT_EQ(manifold1.AmbientSize(), manifold2.AmbientSize());
-  EXPECT_EQ(manifold1.TangentSize(), manifold2.TangentSize());
-}
-
-TEST(ProductManifold, MoveableOnly) {
-  ProductManifold<MoveableManifold, EuclideanManifold<3>> manifold1{
-      MoveableManifold{}, EuclideanManifold<3>{}};
-
-  MoveableManifold inner2;
-  ProductManifold<MoveableManifold, EuclideanManifold<3>> manifold2{
-      std::move(inner2), EuclideanManifold<3>{}};
-
-  EXPECT_EQ(manifold1.AmbientSize(), manifold2.AmbientSize());
-  EXPECT_EQ(manifold1.TangentSize(), manifold2.TangentSize());
-}
-
-TEST(ProductManifold, CopyableOrMoveable) {
-  const CopyableManifold inner12{};
-  ProductManifold<MoveableManifold, CopyableManifold> manifold1{
-      MoveableManifold{}, inner12};
-
-  MoveableManifold inner21;
-  CopyableManifold inner22;
-  ProductManifold<MoveableManifold, CopyableManifold> manifold2{
-      std::move(inner21), inner22};
-
-  EXPECT_EQ(manifold1.AmbientSize(), manifold2.AmbientSize());
-  EXPECT_EQ(manifold1.TangentSize(), manifold2.TangentSize());
-}
-
-struct NonDefaultConstructibleManifold : ceres::Manifold {
-  NonDefaultConstructibleManifold(int, int) {}
-  int AmbientSize() const override { return 4; }
-  int TangentSize() const override { return 3; }
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const override {
-    return true;
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const override {
-    return true;
-  }
-
-  bool RightMultiplyByPlusJacobian(const double* x,
-                                   const int num_rows,
-                                   const double* ambient_matrix,
-                                   double* tangent_matrix) const override {
-    return true;
-  }
-
-  bool Minus(const double* y,
-             const double* x,
-             double* y_minus_x) const override {
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const override {
-    return true;
-  }
-};
-
-TEST(ProductManifold, NonDefaultConstructible) {
-  ProductManifold<NonDefaultConstructibleManifold, QuaternionManifold>
-      manifold1{NonDefaultConstructibleManifold{1, 2}, QuaternionManifold{}};
-  ProductManifold<QuaternionManifold, NonDefaultConstructibleManifold>
-      manifold2{QuaternionManifold{}, NonDefaultConstructibleManifold{1, 2}};
-
-  EXPECT_EQ(manifold1.AmbientSize(), manifold2.AmbientSize());
-  EXPECT_EQ(manifold1.TangentSize(), manifold2.TangentSize());
-}
-
-TEST(ProductManifold, DefaultConstructible) {
-  ProductManifold<EuclideanManifold<3>, SphereManifold<4>> manifold1;
-  ProductManifold<SphereManifold<4>, EuclideanManifold<3>> manifold2;
-
-  EXPECT_EQ(manifold1.AmbientSize(), manifold2.AmbientSize());
-  EXPECT_EQ(manifold1.TangentSize(), manifold2.TangentSize());
-}
-
-TEST(ProductManifold, Pointers) {
-  auto p = std::make_unique<QuaternionManifold>();
-  auto q = std::make_shared<EuclideanManifold<3>>();
-
-  ProductManifold<std::unique_ptr<Manifold>,
-                  EuclideanManifold<3>,
-                  std::shared_ptr<EuclideanManifold<3>>>
-      manifold1{
-          std::make_unique<QuaternionManifold>(), EuclideanManifold<3>{}, q};
-  ProductManifold<QuaternionManifold*,
-                  EuclideanManifold<3>,
-                  std::shared_ptr<EuclideanManifold<3>>>
-      manifold2{p.get(), EuclideanManifold<3>{}, q};
-
-  EXPECT_EQ(manifold1.AmbientSize(), manifold2.AmbientSize());
-  EXPECT_EQ(manifold1.TangentSize(), manifold2.TangentSize());
-}
-
-TEST(QuaternionManifold, PlusPiBy2) {
-  QuaternionManifold manifold;
-  Vector x = Vector::Zero(4);
-  x[0] = 1.0;
-
-  for (int i = 0; i < 3; ++i) {
-    Vector delta = Vector::Zero(3);
-    delta[i] = constants::pi / 2;
-    Vector x_plus_delta = Vector::Zero(4);
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), x_plus_delta.data()));
-
-    // Expect that the element corresponding to pi/2 is +/- 1. All other
-    // elements should be zero.
-    for (int j = 0; j < 4; ++j) {
-      if (i == (j - 1)) {
-        EXPECT_LT(std::abs(x_plus_delta[j]) - 1,
-                  std::numeric_limits<double>::epsilon())
-            << "\ndelta = " << delta.transpose()
-            << "\nx_plus_delta = " << x_plus_delta.transpose()
-            << "\n expected the " << j
-            << "th element of x_plus_delta to be +/- 1.";
-      } else {
-        EXPECT_LT(std::abs(x_plus_delta[j]),
-                  std::numeric_limits<double>::epsilon())
-            << "\ndelta = " << delta.transpose()
-            << "\nx_plus_delta = " << x_plus_delta.transpose()
-            << "\n expected the " << j << "th element of x_plus_delta to be 0.";
-      }
-    }
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(
-        manifold, x, delta, x_plus_delta, kTolerance);
-  }
-}
-
-// Compute the expected value of QuaternionManifold::Plus via functions in
-// rotation.h and compares it to the one computed by QuaternionManifold::Plus.
-MATCHER_P2(QuaternionManifoldPlusIsCorrectAt, x, delta, "") {
-  // This multiplication by 2 is needed because AngleAxisToQuaternion uses
-  // |delta|/2 as the angle of rotation where as in the implementation of
-  // QuaternionManifold for historical reasons we use |delta|.
-  const Vector two_delta = delta * 2;
-  Vector delta_q(4);
-  AngleAxisToQuaternion(two_delta.data(), delta_q.data());
-
-  Vector expected(4);
-  QuaternionProduct(delta_q.data(), x.data(), expected.data());
-  Vector actual(4);
-  EXPECT_TRUE(arg.Plus(x.data(), delta.data(), actual.data()));
-
-  const double n = (actual - expected).norm();
-  const double d = expected.norm();
-  const double diffnorm = n / d;
-  if (diffnorm > kTolerance) {
-    *result_listener << "\nx: " << x.transpose()
-                     << "\ndelta: " << delta.transpose()
-                     << "\nexpected: " << expected.transpose()
-                     << "\nactual: " << actual.transpose()
-                     << "\ndiff: " << (expected - actual).transpose()
-                     << "\ndiffnorm : " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-static Vector RandomQuaternion() {
-  Vector x = Vector::Random(4);
-  x.normalize();
-  return x;
-}
-
-TEST(QuaternionManifold, GenericDelta) {
-  QuaternionManifold manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    EXPECT_THAT(manifold, QuaternionManifoldPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(QuaternionManifold, SmallDelta) {
-  QuaternionManifold manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    delta.normalize();
-    delta *= 1e-6;
-    EXPECT_THAT(manifold, QuaternionManifoldPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(QuaternionManifold, DeltaJustBelowPi) {
-  QuaternionManifold manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    delta.normalize();
-    delta *= (constants::pi - 1e-6);
-    EXPECT_THAT(manifold, QuaternionManifoldPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-// Compute the expected value of EigenQuaternionManifold::Plus using Eigen and
-// compares it to the one computed by QuaternionManifold::Plus.
-MATCHER_P2(EigenQuaternionManifoldPlusIsCorrectAt, x, delta, "") {
-  // This multiplication by 2 is needed because AngleAxisToQuaternion uses
-  // |delta|/2 as the angle of rotation where as in the implementation of
-  // Quaternion for historical reasons we use |delta|.
-  const Vector two_delta = delta * 2;
-  Vector delta_q(4);
-  AngleAxisToQuaternion(two_delta.data(), delta_q.data());
-  Eigen::Quaterniond delta_eigen_q(
-      delta_q[0], delta_q[1], delta_q[2], delta_q[3]);
-
-  Eigen::Map<const Eigen::Quaterniond> x_eigen_q(x.data());
-
-  Eigen::Quaterniond expected = delta_eigen_q * x_eigen_q;
-  double actual[4];
-  EXPECT_TRUE(arg.Plus(x.data(), delta.data(), actual));
-  Eigen::Map<Eigen::Quaterniond> actual_eigen_q(actual);
-
-  const double n = (actual_eigen_q.coeffs() - expected.coeffs()).norm();
-  const double d = expected.norm();
-  const double diffnorm = n / d;
-  if (diffnorm > kTolerance) {
-    *result_listener
-        << "\nx: " << x.transpose() << "\ndelta: " << delta.transpose()
-        << "\nexpected: " << expected.coeffs().transpose()
-        << "\nactual: " << actual_eigen_q.coeffs().transpose() << "\ndiff: "
-        << (expected.coeffs() - actual_eigen_q.coeffs()).transpose()
-        << "\ndiffnorm : " << diffnorm;
-    return false;
-  }
-  return true;
-}
-
-TEST(EigenQuaternionManifold, GenericDelta) {
-  EigenQuaternionManifold manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    EXPECT_THAT(manifold, EigenQuaternionManifoldPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(EigenQuaternionManifold, SmallDelta) {
-  EigenQuaternionManifold manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    delta.normalize();
-    delta *= 1e-6;
-    EXPECT_THAT(manifold, EigenQuaternionManifoldPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(EigenQuaternionManifold, DeltaJustBelowPi) {
-  EigenQuaternionManifold manifold;
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = RandomQuaternion();
-    const Vector y = RandomQuaternion();
-    Vector delta = Vector::Random(3);
-    delta.normalize();
-    delta *= (constants::pi - 1e-6);
-    EXPECT_THAT(manifold, EigenQuaternionManifoldPlusIsCorrectAt(x, delta));
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-using Eigen::Vector2d;
-using Eigen::Vector3d;
-using Vector6d = Eigen::Matrix<double, 6, 1>;
-using Eigen::Vector4d;
-using Vector8d = Eigen::Matrix<double, 8, 1>;
-
-TEST(SphereManifold, ZeroTest) {
-  Vector4d x{0.0, 0.0, 0.0, 1.0};
-  Vector3d delta = Vector3d::Zero();
-  Vector4d y = Vector4d::Zero();
-
-  SphereManifold<4> manifold;
-  manifold.Plus(x.data(), delta.data(), y.data());
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(SphereManifold, NearZeroTest1) {
-  Vector4d x{1e-5, 1e-5, 1e-5, 1.0};
-  x.normalize();
-  Vector3d delta{0.0, 1.0, 0.0};
-  Vector4d y = Vector4d::Zero();
-
-  SphereManifold<4> manifold;
-  manifold.Plus(x.data(), delta.data(), y.data());
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(SphereManifold, NearZeroTest2) {
-  Vector4d x{0.01, 0.0, 0.0, 0.0};
-  Vector3d delta{0.0, 1.0, 0.0};
-  Vector4d y = Vector4d::Zero();
-  SphereManifold<4> manifold;
-  manifold.Plus(x.data(), delta.data(), y.data());
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(SphereManifold, Plus2DTest) {
-  Eigen::Vector2d x{0.0, 1.0};
-  SphereManifold<2> manifold;
-
-  {
-    double delta[1]{constants::pi / 4};
-    Eigen::Vector2d y = Eigen::Vector2d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta, y.data()));
-    const Eigen::Vector2d gtY(std::sqrt(2.0) / 2.0, std::sqrt(2.0) / 2.0);
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    double delta[1]{constants::pi / 2};
-    Eigen::Vector2d y = Eigen::Vector2d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta, y.data()));
-    const Eigen::Vector2d gtY = Eigen::Vector2d::UnitX();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    double delta[1]{constants::pi};
-    Eigen::Vector2d y = Eigen::Vector2d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta, y.data()));
-    const Eigen::Vector2d gtY = -Eigen::Vector2d::UnitY();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    double delta[1]{2.0 * constants::pi};
-    Eigen::Vector2d y = Eigen::Vector2d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta, y.data()));
-    const Eigen::Vector2d gtY = Eigen::Vector2d::UnitY();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-}
-
-TEST(SphereManifold, Plus3DTest) {
-  Eigen::Vector3d x{0.0, 0.0, 1.0};
-  SphereManifold<3> manifold;
-
-  {
-    Eigen::Vector2d delta{constants::pi / 2, 0.0};
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = Eigen::Vector3d::UnitX();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta{constants::pi, 0.0};
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = -Eigen::Vector3d::UnitZ();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta{2.0 * constants::pi, 0.0};
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = Eigen::Vector3d::UnitZ();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta{0.0, constants::pi / 2};
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = Eigen::Vector3d::UnitY();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta{0.0, constants::pi};
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = -Eigen::Vector3d::UnitZ();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta{0.0, 2.0 * constants::pi};
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = Eigen::Vector3d::UnitZ();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta =
-        Eigen::Vector2d(1, 1).normalized() * constants::pi / 2;
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY(std::sqrt(2.0) / 2.0, std::sqrt(2.0) / 2.0, 0.0);
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta = Eigen::Vector2d(1, 1).normalized() * constants::pi;
-    Eigen::Vector3d y = Eigen::Vector3d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    const Eigen::Vector3d gtY = -Eigen::Vector3d::UnitZ();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-}
-
-TEST(SphereManifold, Minus2DTest) {
-  Eigen::Vector2d x{1.0, 0.0};
-  SphereManifold<2> manifold;
-
-  {
-    double delta[1];
-    const Eigen::Vector2d y(std::sqrt(2.0) / 2.0, std::sqrt(2.0) / 2.0);
-    const double gtDelta{constants::pi / 4};
-    EXPECT_TRUE(manifold.Minus(y.data(), x.data(), delta));
-    EXPECT_LT(std::abs(delta[0] - gtDelta), kTolerance);
-  }
-
-  {
-    double delta[1];
-    const Eigen::Vector2d y(-1, 0);
-    const double gtDelta{constants::pi};
-    EXPECT_TRUE(manifold.Minus(y.data(), x.data(), delta));
-    EXPECT_LT(std::abs(delta[0] - gtDelta), kTolerance);
-  }
-}
-
-TEST(SphereManifold, Minus3DTest) {
-  Eigen::Vector3d x{1.0, 0.0, 0.0};
-  SphereManifold<3> manifold;
-
-  {
-    Eigen::Vector2d delta;
-    const Eigen::Vector3d y(std::sqrt(2.0) / 2.0, 0.0, std::sqrt(2.0) / 2.0);
-    const Eigen::Vector2d gtDelta(constants::pi / 4, 0.0);
-    EXPECT_TRUE(manifold.Minus(y.data(), x.data(), delta.data()));
-    EXPECT_LT((delta - gtDelta).norm(), kTolerance);
-  }
-
-  {
-    Eigen::Vector2d delta;
-    const Eigen::Vector3d y(-1, 0, 0);
-    const Eigen::Vector2d gtDelta(0.0, constants::pi);
-    EXPECT_TRUE(manifold.Minus(y.data(), x.data(), delta.data()));
-    EXPECT_LT((delta - gtDelta).norm(), kTolerance);
-  }
-}
-
-TEST(SphereManifold, DeathTests) {
-  EXPECT_DEATH_IF_SUPPORTED(SphereManifold<Eigen::Dynamic> x(1), "size");
-}
-
-TEST(SphereManifold, NormalFunctionTest) {
-  SphereManifold<4> manifold;
-  EXPECT_EQ(manifold.AmbientSize(), 4);
-  EXPECT_EQ(manifold.TangentSize(), 3);
-
-  Vector zero_tangent = Vector::Zero(manifold.TangentSize());
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-
-    if (x.norm() == 0.0 || y.norm() == 0.0) {
-      continue;
-    }
-
-    // X and y need to have the same length.
-    y *= x.norm() / y.norm();
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(SphereManifold, NormalFunctionTestDynamic) {
-  SphereManifold<ceres::DYNAMIC> manifold(5);
-  EXPECT_EQ(manifold.AmbientSize(), 5);
-  EXPECT_EQ(manifold.TangentSize(), 4);
-
-  Vector zero_tangent = Vector::Zero(manifold.TangentSize());
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    const Vector x = Vector::Random(manifold.AmbientSize());
-    Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-
-    if (x.norm() == 0.0 || y.norm() == 0.0) {
-      continue;
-    }
-
-    // X and y need to have the same length.
-    y *= x.norm() / y.norm();
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(LineManifold, ZeroTest3D) {
-  const Vector6d x = Vector6d::Unit(5);
-  const Vector4d delta = Vector4d::Zero();
-  Vector6d y = Vector6d::Zero();
-
-  LineManifold<3> manifold;
-  EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(LineManifold, ZeroTest4D) {
-  const Vector8d x = Vector8d::Unit(7);
-  const Vector6d delta = Vector6d::Zero();
-  Vector8d y = Vector8d::Zero();
-
-  LineManifold<4> manifold;
-  EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(LineManifold, ZeroOriginPointTest3D) {
-  const Vector6d x = Vector6d::Unit(5);
-  Vector4d delta;
-  delta << 0.0, 0.0, 1.0, 2.0;
-  Vector6d y = Vector6d::Zero();
-
-  LineManifold<3> manifold;
-  EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(LineManifold, ZeroOriginPointTest4D) {
-  const Vector8d x = Vector8d::Unit(7);
-  Vector6d delta;
-  delta << 0.0, 0.0, 0.0, 0.5, 1.0, 1.5;
-  Vector8d y = Vector8d::Zero();
-
-  LineManifold<4> manifold;
-  EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(LineManifold, ZeroDirTest3D) {
-  Vector6d x = Vector6d::Unit(5);
-  Vector4d delta;
-  delta << 3.0, 2.0, 0.0, 0.0;
-  Vector6d y = Vector6d::Zero();
-
-  LineManifold<3> manifold;
-  EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(LineManifold, ZeroDirTest4D) {
-  Vector8d x = Vector8d::Unit(7);
-  Vector6d delta;
-  delta << 3.0, 2.0, 1.0, 0.0, 0.0, 0.0;
-  Vector8d y = Vector8d::Zero();
-
-  LineManifold<4> manifold;
-  EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-  EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-}
-
-TEST(LineManifold, Plus) {
-  Vector6d x = Vector6d::Unit(5);
-  LineManifold<3> manifold;
-
-  {
-    Vector4d delta{0.0, 2.0, constants::pi / 2, 0.0};
-    Vector6d y = Vector6d::Random();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    Vector6d gtY;
-    gtY << 2.0 * Vector3d::UnitY(), Vector3d::UnitX();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Vector4d delta{3.0, 0.0, 0.0, constants::pi / 2};
-    Vector6d y = Vector6d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    Vector6d gtY;
-    gtY << 3.0 * Vector3d::UnitX(), Vector3d::UnitY();
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-
-  {
-    Vector4d delta;
-    delta << Vector2d(1.0, 2.0),
-        Vector2d(1, 1).normalized() * constants::pi / 2;
-    Vector6d y = Vector6d::Zero();
-    EXPECT_TRUE(manifold.Plus(x.data(), delta.data(), y.data()));
-    Vector6d gtY;
-    gtY << Vector3d(1.0, 2.0, 0.0),
-        Vector3d(std::sqrt(2.0) / 2.0, std::sqrt(2.0) / 2.0, 0.0);
-    EXPECT_LT((y - gtY).norm(), kTolerance);
-  }
-}
-
-TEST(LineManifold, NormalFunctionTest) {
-  LineManifold<3> manifold;
-  EXPECT_EQ(manifold.AmbientSize(), 6);
-  EXPECT_EQ(manifold.TangentSize(), 4);
-
-  Vector zero_tangent = Vector::Zero(manifold.TangentSize());
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    Vector x = Vector::Random(manifold.AmbientSize());
-    Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-
-    if (x.tail<3>().norm() == 0.0) {
-      continue;
-    }
-
-    x.tail<3>().normalize();
-    manifold.Plus(x.data(), delta.data(), y.data());
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-TEST(LineManifold, NormalFunctionTestDynamic) {
-  LineManifold<ceres::DYNAMIC> manifold(3);
-  EXPECT_EQ(manifold.AmbientSize(), 6);
-  EXPECT_EQ(manifold.TangentSize(), 4);
-
-  Vector zero_tangent = Vector::Zero(manifold.TangentSize());
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    Vector x = Vector::Random(manifold.AmbientSize());
-    Vector y = Vector::Random(manifold.AmbientSize());
-    Vector delta = Vector::Random(manifold.TangentSize());
-
-    if (x.tail<3>().norm() == 0.0) {
-      continue;
-    }
-
-    x.tail<3>().normalize();
-    manifold.Plus(x.data(), delta.data(), y.data());
-
-    EXPECT_THAT_MANIFOLD_INVARIANTS_HOLD(manifold, x, delta, y, kTolerance);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/map_util.h b/third_party/ceres/internal/ceres/map_util.h
deleted file mode 100644
index aee2bf5..0000000
--- a/third_party/ceres/internal/ceres/map_util.h
+++ /dev/null
@@ -1,131 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Originally by Anton Carver
-
-#ifndef CERES_INTERNAL_MAP_UTIL_H_
-#define CERES_INTERNAL_MAP_UTIL_H_
-
-#include <utility>
-
-#include "ceres/internal/export.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// Perform a lookup in a map or hash_map, assuming that the key exists.
-// Crash if it does not.
-//
-// This is intended as a replacement for operator[] as an rvalue (for reading)
-// when the key is guaranteed to exist.
-//
-// operator[] is discouraged for several reasons:
-//  * It has a side-effect of inserting missing keys
-//  * It is not thread-safe (even when it is not inserting, it can still
-//      choose to resize the underlying storage)
-//  * It invalidates iterators (when it chooses to resize)
-//  * It default constructs a value object even if it doesn't need to
-//
-// This version assumes the key is printable, and includes it in the fatal log
-// message.
-template <class Collection>
-const typename Collection::value_type::second_type& FindOrDie(
-    const Collection& collection,
-    const typename Collection::value_type::first_type& key) {
-  typename Collection::const_iterator it = collection.find(key);
-  CHECK(it != collection.end()) << "Map key not found: " << key;
-  return it->second;
-}
-
-// Perform a lookup in a map or hash_map.
-// If the key is present in the map then the value associated with that
-// key is returned, otherwise the value passed as a default is returned.
-template <class Collection>
-const typename Collection::value_type::second_type FindWithDefault(
-    const Collection& collection,
-    const typename Collection::value_type::first_type& key,
-    const typename Collection::value_type::second_type& value) {
-  typename Collection::const_iterator it = collection.find(key);
-  if (it == collection.end()) {
-    return value;
-  }
-  return it->second;
-}
-
-// Insert a new key and value into a map or hash_map.
-// If the key is not present in the map the key and value are
-// inserted, otherwise nothing happens. True indicates that an insert
-// took place, false indicates the key was already present.
-template <class Collection>
-bool InsertIfNotPresent(
-    Collection* const collection,
-    const typename Collection::value_type::first_type& key,
-    const typename Collection::value_type::second_type& value) {
-  std::pair<typename Collection::iterator, bool> ret =
-      collection->insert(typename Collection::value_type(key, value));
-  return ret.second;
-}
-
-// Perform a lookup in a map or hash_map.
-// Same as above but the returned pointer is not const and can be used to change
-// the stored value.
-template <class Collection>
-typename Collection::value_type::second_type* FindOrNull(
-    Collection& collection,  // NOLINT
-    const typename Collection::value_type::first_type& key) {
-  typename Collection::iterator it = collection.find(key);
-  if (it == collection.end()) {
-    return 0;
-  }
-  return &it->second;
-}
-
-// Test to see if a set, map, hash_set or hash_map contains a particular key.
-// Returns true if the key is in the collection.
-template <class Collection, class Key>
-bool ContainsKey(const Collection& collection, const Key& key) {
-  typename Collection::const_iterator it = collection.find(key);
-  return it != collection.end();
-}
-
-// Inserts a new key/value into a map or hash_map.
-// Dies if the key is already present.
-template <class Collection>
-void InsertOrDie(Collection* const collection,
-                 const typename Collection::value_type::first_type& key,
-                 const typename Collection::value_type::second_type& data) {
-  using value_type = typename Collection::value_type;
-  CHECK(collection->insert(value_type(key, data)).second)
-      << "duplicate key: " << key;
-}
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_MAP_UTIL_H_
diff --git a/third_party/ceres/internal/ceres/miniglog/glog/logging.cc b/third_party/ceres/internal/ceres/miniglog/glog/logging.cc
deleted file mode 100644
index 0863f61..0000000
--- a/third_party/ceres/internal/ceres/miniglog/glog/logging.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2015 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "glog/logging.h"
-
-namespace google {
-
-// This is the set of log sinks. This must be in a separate library to ensure
-// that there is only one instance of this across the entire program.
-std::set<google::LogSink*> log_sinks_global;
-
-}  // namespace google
diff --git a/third_party/ceres/internal/ceres/miniglog/glog/logging.h b/third_party/ceres/internal/ceres/miniglog/glog/logging.h
deleted file mode 100644
index 5604bd4..0000000
--- a/third_party/ceres/internal/ceres/miniglog/glog/logging.h
+++ /dev/null
@@ -1,438 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2015 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: settinger@google.com (Scott Ettinger)
-//         mierle@gmail.com (Keir Mierle)
-//
-// Simplified Glog style logging with Android support. Supported macros in
-// decreasing severity level per line:
-//
-//   VLOG(2), VLOG(N)
-//   VLOG(1),
-//   LOG(INFO), VLOG(0), LG
-//   LOG(WARNING),
-//   LOG(ERROR),
-//   LOG(FATAL),
-//
-// With VLOG(n), the output is directed to one of the 5 Android log levels:
-//
-//   2 - Verbose
-//   1 - Debug
-//   0 - Info
-//  -1 - Warning
-//  -2 - Error
-//  -3 - Fatal
-//
-// Any logging of level 2 and above is directed to the Verbose level. All
-// Android log output is tagged with the string "native".
-//
-// If the symbol ANDROID is not defined, all output goes to std::cerr.
-// This allows code to be built on a different system for debug.
-//
-// Portions of this code are taken from the GLOG package.  This code is only a
-// small subset of the GLOG functionality. Notable differences from GLOG
-// behavior include lack of support for displaying unprintable characters and
-// lack of stack trace information upon failure of the CHECK macros.  On
-// non-Android systems, log output goes to std::cerr and is not written to a
-// file.
-//
-// CHECK macros are defined to test for conditions within code.  Any CHECK that
-// fails will log the failure and terminate the application.
-// e.g. CHECK_GE(3, 2) will pass while CHECK_GE(3, 4) will fail after logging
-//      "Check failed 3 >= 4".
-//
-// The following CHECK macros are defined:
-//
-//   CHECK(condition)        - fails if condition is false and logs condition.
-//   CHECK_NOTNULL(variable) - fails if the variable is nullptr.
-//
-// The following binary check macros are also defined :
-//
-//   Macro                     Operator equivalent
-//   --------------------      -------------------
-//   CHECK_EQ(val1, val2)      val1 == val2
-//   CHECK_NE(val1, val2)      val1 != val2
-//   CHECK_GT(val1, val2)      val1 > val2
-//   CHECK_GE(val1, val2)      val1 >= val2
-//   CHECK_LT(val1, val2)      val1 < val2
-//   CHECK_LE(val1, val2)      val1 <= val2
-//
-// Debug only versions of all of the check macros are also defined.  These
-// macros generate no code in a release build, but avoid unused variable
-// warnings / errors.
-//
-// To use the debug only versions, prepend a D to the normal check macros, e.g.
-// DCHECK_EQ(a, b).
-
-#ifndef CERCES_INTERNAL_MINIGLOG_GLOG_LOGGING_H_
-#define CERCES_INTERNAL_MINIGLOG_GLOG_LOGGING_H_
-
-#ifdef ANDROID
-#include <android/log.h>
-#endif  // ANDROID
-
-#include <algorithm>
-#include <ctime>
-#include <fstream>
-#include <iostream>
-#include <set>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-// Log severity level constants.
-// clang-format off
-const int FATAL   = -3;
-const int ERROR   = -2;
-const int WARNING = -1;
-const int INFO    =  0;
-// clang-format on
-
-// ------------------------- Glog compatibility ------------------------------
-
-namespace google {
-
-using LogSeverity = int;
-// clang-format off
-const int INFO    = ::INFO;
-const int WARNING = ::WARNING;
-const int ERROR   = ::ERROR;
-const int FATAL   = ::FATAL;
-// clang-format on
-
-// Sink class used for integration with mock and test functions. If sinks are
-// added, all log output is also sent to each sink through the send function.
-// In this implementation, WaitTillSent() is called immediately after the send.
-// This implementation is not thread safe.
-class CERES_EXPORT LogSink {
- public:
-  virtual ~LogSink() = default;
-  virtual void send(LogSeverity severity,
-                    const char* full_filename,
-                    const char* base_filename,
-                    int line,
-                    const struct tm* tm_time,
-                    const char* message,
-                    size_t message_len) = 0;
-  virtual void WaitTillSent() = 0;
-};
-
-// Global set of log sinks. The actual object is defined in logging.cc.
-extern CERES_EXPORT std::set<LogSink*> log_sinks_global;
-
-inline void InitGoogleLogging(const char* /* argv */) {
-  // Do nothing; this is ignored.
-}
-
-// Note: the Log sink functions are not thread safe.
-inline void AddLogSink(LogSink* sink) {
-  // TODO(settinger): Add locks for thread safety.
-  log_sinks_global.insert(sink);
-}
-inline void RemoveLogSink(LogSink* sink) { log_sinks_global.erase(sink); }
-
-}  // namespace google
-
-// ---------------------------- Logger Class --------------------------------
-
-// Class created for each use of the logging macros.
-// The logger acts as a stream and routes the final stream contents to the
-// Android logcat output at the proper filter level.  If ANDROID is not
-// defined, output is directed to std::cerr.  This class should not
-// be directly instantiated in code, rather it should be invoked through the
-// use of the log macros LG, LOG, or VLOG.
-class CERES_EXPORT MessageLogger {
- public:
-  MessageLogger(const char* file, int line, const char* tag, int severity)
-      : file_(file), line_(line), tag_(tag), severity_(severity) {
-    // Pre-pend the stream with the file and line number.
-    StripBasename(std::string(file), &filename_only_);
-    stream_ << filename_only_ << ":" << line << " ";
-  }
-
-  // Output the contents of the stream to the proper channel on destruction.
-  ~MessageLogger() {
-    stream_ << "\n";
-
-#ifdef ANDROID
-    static const int android_log_levels[] = {
-        ANDROID_LOG_FATAL,    // LOG(FATAL)
-        ANDROID_LOG_ERROR,    // LOG(ERROR)
-        ANDROID_LOG_WARN,     // LOG(WARNING)
-        ANDROID_LOG_INFO,     // LOG(INFO), LG, VLOG(0)
-        ANDROID_LOG_DEBUG,    // VLOG(1)
-        ANDROID_LOG_VERBOSE,  // VLOG(2) .. VLOG(N)
-    };
-
-    // Bound the logging level.
-    const int kMaxVerboseLevel = 2;
-    int android_level_index =
-        std::min(std::max(FATAL, severity_), kMaxVerboseLevel) - FATAL;
-    int android_log_level = android_log_levels[android_level_index];
-
-    // Output the log string the Android log at the appropriate level.
-    __android_log_write(android_log_level, tag_.c_str(), stream_.str().c_str());
-
-    // Indicate termination if needed.
-    if (severity_ == FATAL) {
-      __android_log_write(ANDROID_LOG_FATAL, tag_.c_str(), "terminating.\n");
-    }
-#else
-    // If not building on Android, log all output to std::cerr.
-    std::cerr << stream_.str();
-#endif  // ANDROID
-
-    LogToSinks(severity_);
-    WaitForSinks();
-
-    // Android logging at level FATAL does not terminate execution, so abort()
-    // is still required to stop the program.
-    if (severity_ == FATAL) {
-      abort();
-    }
-  }
-
-  // Return the stream associated with the logger object.
-  std::stringstream& stream() { return stream_; }
-
- private:
-  void LogToSinks(int severity) {
-    time_t rawtime;
-    time(&rawtime);
-
-    struct tm timeinfo;
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
-    // On Windows, use secure localtime_s not localtime.
-    localtime_s(&timeinfo, &rawtime);
-#else
-    // On non-Windows systems, use threadsafe localtime_r not localtime.
-    localtime_r(&rawtime, &timeinfo);
-#endif
-
-    std::set<google::LogSink*>::iterator iter;
-    // Send the log message to all sinks.
-    for (iter = google::log_sinks_global.begin();
-         iter != google::log_sinks_global.end();
-         ++iter) {
-      (*iter)->send(severity,
-                    file_.c_str(),
-                    filename_only_.c_str(),
-                    line_,
-                    &timeinfo,
-                    stream_.str().c_str(),
-                    stream_.str().size());
-    }
-  }
-
-  void WaitForSinks() {
-    // TODO(settinger): Add locks for thread safety.
-    std::set<google::LogSink*>::iterator iter;
-
-    // Call WaitTillSent() for all sinks.
-    for (iter = google::log_sinks_global.begin();
-         iter != google::log_sinks_global.end();
-         ++iter) {
-      (*iter)->WaitTillSent();
-    }
-  }
-
-  void StripBasename(const std::string& full_path, std::string* filename) {
-    // TODO(settinger): Add support for OSs with different path separators.
-    const char kSeparator = '/';
-    size_t pos = full_path.rfind(kSeparator);
-    if (pos != std::string::npos) {
-      *filename = full_path.substr(pos + 1, std::string::npos);
-    } else {
-      *filename = full_path;
-    }
-  }
-
-  std::string file_;
-  std::string filename_only_;
-  int line_;
-  std::string tag_;
-  std::stringstream stream_;
-  int severity_;
-};
-
-// ---------------------- Logging Macro definitions --------------------------
-
-// This class is used to explicitly ignore values in the conditional
-// logging macros.  This avoids compiler warnings like "value computed
-// is not used" and "statement has no effect".
-class CERES_EXPORT LoggerVoidify {
- public:
-  // This has to be an operator with a precedence lower than << but
-  // higher than ?:
-  void operator&(const std::ostream& s) {}
-};
-
-// Log only if condition is met.  Otherwise evaluates to void.
-// clang-format off
-#define LOG_IF(severity, condition) \
-    !(condition) ? (void) 0 : LoggerVoidify() & \
-      MessageLogger((char *)__FILE__, __LINE__, "native", severity).stream()
-// clang-format on
-
-// Log only if condition is NOT met.  Otherwise evaluates to void.
-#define LOG_IF_FALSE(severity, condition) LOG_IF(severity, !(condition))
-
-// LG is a convenient shortcut for LOG(INFO). Its use is in new
-// google3 code is discouraged and the following shortcut exists for
-// backward compatibility with existing code.
-// clang-format off
-#ifdef MAX_LOG_LEVEL
-#  define LOG(n)  LOG_IF(n, n <= MAX_LOG_LEVEL)
-#  define VLOG(n) LOG_IF(n, n <= MAX_LOG_LEVEL)
-#  define LG      LOG_IF(INFO, INFO <= MAX_LOG_LEVEL)
-#  define VLOG_IF(n, condition) LOG_IF(n, (n <= MAX_LOG_LEVEL) && condition)
-#else
-#  define LOG(n)  MessageLogger((char *)__FILE__, __LINE__, "native", n).stream()    // NOLINT
-#  define VLOG(n) MessageLogger((char *)__FILE__, __LINE__, "native", n).stream()    // NOLINT
-#  define LG      MessageLogger((char *)__FILE__, __LINE__, "native", INFO).stream() // NOLINT
-#  define VLOG_IF(n, condition) LOG_IF(n, condition)
-#endif
-
-// Currently, VLOG is always on for levels below MAX_LOG_LEVEL.
-#ifndef MAX_LOG_LEVEL
-#  define VLOG_IS_ON(x) (1)
-#else
-#  define VLOG_IS_ON(x) (x <= MAX_LOG_LEVEL)
-#endif
-
-#ifndef NDEBUG
-#  define DLOG LOG
-#else
-#  define DLOG(severity) true ? (void) 0 : LoggerVoidify() & \
-      MessageLogger((char *)__FILE__, __LINE__, "native", severity).stream()
-#endif
-// clang-format on
-
-// Log a message and terminate.
-template <class T>
-void LogMessageFatal(const char* file, int line, const T& message) {
-  MessageLogger((char*)__FILE__, __LINE__, "native", FATAL).stream() << message;
-}
-
-// ---------------------------- CHECK macros ---------------------------------
-
-// Check for a given boolean condition.
-#define CHECK(condition) \
-  LOG_IF_FALSE(FATAL, condition) << "Check failed: " #condition " "
-
-#ifndef NDEBUG
-// Debug only version of CHECK
-#define DCHECK(condition) \
-  LOG_IF_FALSE(FATAL, condition) << "Check failed: " #condition " "
-#else
-// Optimized version - generates no code.
-#define DCHECK(condition) \
-  if (false) LOG_IF_FALSE(FATAL, condition) << "Check failed: " #condition " "
-#endif  // NDEBUG
-
-// ------------------------- CHECK_OP macros ---------------------------------
-
-// Generic binary operator check macro. This should not be directly invoked,
-// instead use the binary comparison macros defined below.
-#define CHECK_OP(val1, val2, op)        \
-  LOG_IF_FALSE(FATAL, ((val1)op(val2))) \
-      << "Check failed: " #val1 " " #op " " #val2 " "
-
-// clang-format off
-
-// Check_op macro definitions
-#define CHECK_EQ(val1, val2) CHECK_OP(val1, val2, ==)
-#define CHECK_NE(val1, val2) CHECK_OP(val1, val2, !=)
-#define CHECK_LE(val1, val2) CHECK_OP(val1, val2, <=)
-#define CHECK_LT(val1, val2) CHECK_OP(val1, val2, <)
-#define CHECK_GE(val1, val2) CHECK_OP(val1, val2, >=)
-#define CHECK_GT(val1, val2) CHECK_OP(val1, val2, >)
-
-#ifndef NDEBUG
-// Debug only versions of CHECK_OP macros.
-#  define DCHECK_EQ(val1, val2) CHECK_OP(val1, val2, ==)
-#  define DCHECK_NE(val1, val2) CHECK_OP(val1, val2, !=)
-#  define DCHECK_LE(val1, val2) CHECK_OP(val1, val2, <=)
-#  define DCHECK_LT(val1, val2) CHECK_OP(val1, val2, <)
-#  define DCHECK_GE(val1, val2) CHECK_OP(val1, val2, >=)
-#  define DCHECK_GT(val1, val2) CHECK_OP(val1, val2, >)
-#else
-// These versions generate no code in optimized mode.
-#  define DCHECK_EQ(val1, val2) if (false) CHECK_OP(val1, val2, ==)
-#  define DCHECK_NE(val1, val2) if (false) CHECK_OP(val1, val2, !=)
-#  define DCHECK_LE(val1, val2) if (false) CHECK_OP(val1, val2, <=)
-#  define DCHECK_LT(val1, val2) if (false) CHECK_OP(val1, val2, <)
-#  define DCHECK_GE(val1, val2) if (false) CHECK_OP(val1, val2, >=)
-#  define DCHECK_GT(val1, val2) if (false) CHECK_OP(val1, val2, >)
-#endif  // NDEBUG
-
-// clang-format on
-
-// ---------------------------CHECK_NOTNULL macros ---------------------------
-
-// Helpers for CHECK_NOTNULL(). Two are necessary to support both raw pointers
-// and smart pointers.
-template <typename T>
-T& CheckNotNullCommon(const char* file, int line, const char* names, T& t) {
-  if (t == nullptr) {
-    LogMessageFatal(file, line, std::string(names));
-  }
-  return t;
-}
-
-template <typename T>
-T* CheckNotNull(const char* file, int line, const char* names, T* t) {
-  return CheckNotNullCommon(file, line, names, t);
-}
-
-template <typename T>
-T& CheckNotNull(const char* file, int line, const char* names, T& t) {
-  return CheckNotNullCommon(file, line, names, t);
-}
-
-// Check that a pointer is not null.
-#define CHECK_NOTNULL(val) \
-  CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non nullptr", (val))
-
-#ifndef NDEBUG
-// Debug only version of CHECK_NOTNULL
-#define DCHECK_NOTNULL(val) \
-  CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non nullptr", (val))
-#else
-// Optimized version - generates no code.
-#define DCHECK_NOTNULL(val) \
-  if (false)                \
-  CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non nullptr", (val))
-#endif  // NDEBUG
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERCES_INTERNAL_MINIGLOG_GLOG_LOGGING_H_
diff --git a/third_party/ceres/internal/ceres/minimizer.cc b/third_party/ceres/internal/ceres/minimizer.cc
deleted file mode 100644
index 5317388..0000000
--- a/third_party/ceres/internal/ceres/minimizer.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/minimizer.h"
-
-#include <memory>
-
-#include "ceres/line_search_minimizer.h"
-#include "ceres/trust_region_minimizer.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<Minimizer> Minimizer::Create(MinimizerType minimizer_type) {
-  if (minimizer_type == TRUST_REGION) {
-    return std::make_unique<TrustRegionMinimizer>();
-  }
-
-  if (minimizer_type == LINE_SEARCH) {
-    return std::make_unique<LineSearchMinimizer>();
-  }
-
-  LOG(FATAL) << "Unknown minimizer_type: " << minimizer_type;
-  return nullptr;
-}
-
-Minimizer::~Minimizer() = default;
-
-bool Minimizer::RunCallbacks(const Minimizer::Options& options,
-                             const IterationSummary& iteration_summary,
-                             Solver::Summary* summary) {
-  const bool is_not_silent = !options.is_silent;
-  CallbackReturnType status = SOLVER_CONTINUE;
-  int i = 0;
-  while (status == SOLVER_CONTINUE && i < options.callbacks.size()) {
-    status = (*options.callbacks[i])(iteration_summary);
-    ++i;
-  }
-  switch (status) {
-    case SOLVER_CONTINUE:
-      return true;
-    case SOLVER_TERMINATE_SUCCESSFULLY:
-      summary->termination_type = USER_SUCCESS;
-      summary->message =
-          "User callback returned SOLVER_TERMINATE_SUCCESSFULLY.";
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      return false;
-    case SOLVER_ABORT:
-      summary->termination_type = USER_FAILURE;
-      summary->message = "User callback returned SOLVER_ABORT.";
-      if (is_not_silent) {
-        VLOG(1) << "Terminating: " << summary->message;
-      }
-      return false;
-    default:
-      LOG(FATAL) << "Unknown type of user callback status";
-  }
-  return false;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/minimizer.h b/third_party/ceres/internal/ceres/minimizer.h
deleted file mode 100644
index be7290e..0000000
--- a/third_party/ceres/internal/ceres/minimizer.h
+++ /dev/null
@@ -1,201 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_MINIMIZER_H_
-#define CERES_INTERNAL_MINIMIZER_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/solver.h"
-
-namespace ceres::internal {
-
-class Evaluator;
-class SparseMatrix;
-class TrustRegionStrategy;
-class CoordinateDescentMinimizer;
-class LinearSolver;
-class ContextImpl;
-
-// Interface for non-linear least squares solvers.
-class CERES_NO_EXPORT Minimizer {
- public:
-  // Options struct to control the behaviour of the Minimizer. Please
-  // see solver.h for detailed information about the meaning and
-  // default values of each of these parameters.
-  struct Options {
-    Options() { Init(Solver::Options()); }
-
-    explicit Options(const Solver::Options& options) { Init(options); }
-
-    void Init(const Solver::Options& options) {
-      num_threads = options.num_threads;
-      max_num_iterations = options.max_num_iterations;
-      max_solver_time_in_seconds = options.max_solver_time_in_seconds;
-      max_step_solver_retries = 5;
-      gradient_tolerance = options.gradient_tolerance;
-      parameter_tolerance = options.parameter_tolerance;
-      function_tolerance = options.function_tolerance;
-      min_relative_decrease = options.min_relative_decrease;
-      eta = options.eta;
-      jacobi_scaling = options.jacobi_scaling;
-      use_nonmonotonic_steps = options.use_nonmonotonic_steps;
-      max_consecutive_nonmonotonic_steps =
-          options.max_consecutive_nonmonotonic_steps;
-      trust_region_problem_dump_directory =
-          options.trust_region_problem_dump_directory;
-      trust_region_minimizer_iterations_to_dump =
-          options.trust_region_minimizer_iterations_to_dump;
-      trust_region_problem_dump_format_type =
-          options.trust_region_problem_dump_format_type;
-      max_num_consecutive_invalid_steps =
-          options.max_num_consecutive_invalid_steps;
-      min_trust_region_radius = options.min_trust_region_radius;
-      line_search_direction_type = options.line_search_direction_type;
-      line_search_type = options.line_search_type;
-      nonlinear_conjugate_gradient_type =
-          options.nonlinear_conjugate_gradient_type;
-      max_lbfgs_rank = options.max_lbfgs_rank;
-      use_approximate_eigenvalue_bfgs_scaling =
-          options.use_approximate_eigenvalue_bfgs_scaling;
-      line_search_interpolation_type = options.line_search_interpolation_type;
-      min_line_search_step_size = options.min_line_search_step_size;
-      line_search_sufficient_function_decrease =
-          options.line_search_sufficient_function_decrease;
-      max_line_search_step_contraction =
-          options.max_line_search_step_contraction;
-      min_line_search_step_contraction =
-          options.min_line_search_step_contraction;
-      max_num_line_search_step_size_iterations =
-          options.max_num_line_search_step_size_iterations;
-      max_num_line_search_direction_restarts =
-          options.max_num_line_search_direction_restarts;
-      line_search_sufficient_curvature_decrease =
-          options.line_search_sufficient_curvature_decrease;
-      max_line_search_step_expansion = options.max_line_search_step_expansion;
-      inner_iteration_tolerance = options.inner_iteration_tolerance;
-      is_silent = (options.logging_type == SILENT);
-      is_constrained = false;
-      callbacks = options.callbacks;
-    }
-
-    int max_num_iterations;
-    double max_solver_time_in_seconds;
-    int num_threads;
-    ContextImpl* context = nullptr;
-
-    // Number of times the linear solver should be retried in case of
-    // numerical failure. The retries are done by exponentially scaling up
-    // mu at each retry. This leads to stronger and stronger
-    // regularization making the linear least squares problem better
-    // conditioned at each retry.
-    int max_step_solver_retries;
-    double gradient_tolerance;
-    double parameter_tolerance;
-    double function_tolerance;
-    double min_relative_decrease;
-    double eta;
-    bool jacobi_scaling;
-    bool use_nonmonotonic_steps;
-    int max_consecutive_nonmonotonic_steps;
-    std::vector<int> trust_region_minimizer_iterations_to_dump;
-    DumpFormatType trust_region_problem_dump_format_type;
-    std::string trust_region_problem_dump_directory;
-    int max_num_consecutive_invalid_steps;
-    double min_trust_region_radius;
-    LineSearchDirectionType line_search_direction_type;
-    LineSearchType line_search_type;
-    NonlinearConjugateGradientType nonlinear_conjugate_gradient_type;
-    int max_lbfgs_rank;
-    bool use_approximate_eigenvalue_bfgs_scaling;
-    LineSearchInterpolationType line_search_interpolation_type;
-    double min_line_search_step_size;
-    double line_search_sufficient_function_decrease;
-    double max_line_search_step_contraction;
-    double min_line_search_step_contraction;
-    int max_num_line_search_step_size_iterations;
-    int max_num_line_search_direction_restarts;
-    double line_search_sufficient_curvature_decrease;
-    double max_line_search_step_expansion;
-    double inner_iteration_tolerance;
-
-    // If true, then all logging is disabled.
-    bool is_silent;
-
-    // Use a bounds constrained optimization algorithm.
-    bool is_constrained;
-
-    // List of callbacks that are executed by the Minimizer at the end
-    // of each iteration.
-    //
-    // The Options struct does not own these pointers.
-    std::vector<IterationCallback*> callbacks;
-
-    // Object responsible for evaluating the cost, residuals and
-    // Jacobian matrix.
-    std::shared_ptr<Evaluator> evaluator;
-
-    // Object responsible for actually computing the trust region
-    // step, and sizing the trust region radius.
-    std::shared_ptr<TrustRegionStrategy> trust_region_strategy;
-
-    // Object holding the Jacobian matrix. It is assumed that the
-    // sparsity structure of the matrix has already been initialized
-    // and will remain constant for the life time of the
-    // optimization.
-    std::shared_ptr<SparseMatrix> jacobian;
-
-    std::shared_ptr<CoordinateDescentMinimizer> inner_iteration_minimizer;
-  };
-
-  static std::unique_ptr<Minimizer> Create(MinimizerType minimizer_type);
-  static bool RunCallbacks(const Options& options,
-                           const IterationSummary& iteration_summary,
-                           Solver::Summary* summary);
-
-  virtual ~Minimizer();
-  // Note: The minimizer is expected to update the state of the
-  // parameters array every iteration. This is required for the
-  // StateUpdatingCallback to work.
-  virtual void Minimize(const Options& options,
-                        double* parameters,
-                        Solver::Summary* summary) = 0;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_MINIMIZER_H_
diff --git a/third_party/ceres/internal/ceres/minimizer_test.cc b/third_party/ceres/internal/ceres/minimizer_test.cc
deleted file mode 100644
index 10fb9e5..0000000
--- a/third_party/ceres/internal/ceres/minimizer_test.cc
+++ /dev/null
@@ -1,96 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/minimizer.h"
-
-#include "ceres/iteration_callback.h"
-#include "ceres/solver.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class FakeIterationCallback : public IterationCallback {
- public:
-  CallbackReturnType operator()(const IterationSummary& summary) final {
-    return SOLVER_CONTINUE;
-  }
-};
-
-TEST(Minimizer, InitializationCopiesCallbacks) {
-  FakeIterationCallback callback0;
-  FakeIterationCallback callback1;
-
-  Solver::Options solver_options;
-  solver_options.callbacks.push_back(&callback0);
-  solver_options.callbacks.push_back(&callback1);
-
-  Minimizer::Options minimizer_options(solver_options);
-  ASSERT_EQ(2, minimizer_options.callbacks.size());
-
-  EXPECT_EQ(minimizer_options.callbacks[0], &callback0);
-  EXPECT_EQ(minimizer_options.callbacks[1], &callback1);
-}
-
-class AbortingIterationCallback : public IterationCallback {
- public:
-  CallbackReturnType operator()(const IterationSummary& summary) final {
-    return SOLVER_ABORT;
-  }
-};
-
-TEST(Minimizer, UserAbortUpdatesSummaryMessage) {
-  AbortingIterationCallback callback;
-  Solver::Options solver_options;
-  solver_options.callbacks.push_back(&callback);
-  Minimizer::Options minimizer_options(solver_options);
-  Solver::Summary summary;
-  Minimizer::RunCallbacks(minimizer_options, IterationSummary(), &summary);
-  EXPECT_EQ(summary.message, "User callback returned SOLVER_ABORT.");
-}
-
-class SucceedingIterationCallback : public IterationCallback {
- public:
-  CallbackReturnType operator()(const IterationSummary& summary) final {
-    return SOLVER_TERMINATE_SUCCESSFULLY;
-  }
-};
-
-TEST(Minimizer, UserSuccessUpdatesSummaryMessage) {
-  SucceedingIterationCallback callback;
-  Solver::Options solver_options;
-  solver_options.callbacks.push_back(&callback);
-  Minimizer::Options minimizer_options(solver_options);
-  Solver::Summary summary;
-  Minimizer::RunCallbacks(minimizer_options, IterationSummary(), &summary);
-  EXPECT_EQ(summary.message,
-            "User callback returned SOLVER_TERMINATE_SUCCESSFULLY.");
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/normal_prior.cc b/third_party/ceres/internal/ceres/normal_prior.cc
deleted file mode 100644
index c8a7a27..0000000
--- a/third_party/ceres/internal/ceres/normal_prior.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/normal_prior.h"
-
-#include <cstddef>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-NormalPrior::NormalPrior(const Matrix& A, Vector b) : A_(A), b_(std::move(b)) {
-  CHECK_GT(b_.rows(), 0);
-  CHECK_GT(A_.rows(), 0);
-  CHECK_EQ(b_.rows(), A.cols());
-  set_num_residuals(A_.rows());
-  mutable_parameter_block_sizes()->push_back(b_.rows());
-}
-
-bool NormalPrior::Evaluate(double const* const* parameters,
-                           double* residuals,
-                           double** jacobians) const {
-  ConstVectorRef p(parameters[0], parameter_block_sizes()[0]);
-  VectorRef r(residuals, num_residuals());
-  // The following line should read
-  // r = A_ * (p - b_);
-  // The extra eval is to get around a bug in the Eigen library.
-  r = A_ * (p - b_).eval();
-  if ((jacobians != nullptr) && (jacobians[0] != nullptr)) {
-    MatrixRef(jacobians[0], num_residuals(), parameter_block_sizes()[0]) = A_;
-  }
-  return true;
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/normal_prior_test.cc b/third_party/ceres/internal/ceres/normal_prior_test.cc
deleted file mode 100644
index 369ff27..0000000
--- a/third_party/ceres/internal/ceres/normal_prior_test.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/normal_prior.h"
-
-#include <algorithm>
-#include <cstddef>
-#include <random>
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-TEST(NormalPriorTest, ResidualAtRandomPosition) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(-1.0, 1.0);
-  auto randu = [&distribution, &prng] { return distribution(prng); };
-  for (int num_rows = 1; num_rows < 5; ++num_rows) {
-    for (int num_cols = 1; num_cols < 5; ++num_cols) {
-      Vector b(num_cols);
-      b.setRandom();
-      Matrix A(num_rows, num_cols);
-      A.setRandom();
-
-      auto* x = new double[num_cols];
-      std::generate_n(x, num_cols, randu);
-
-      auto* jacobian = new double[num_rows * num_cols];
-      Vector residuals(num_rows);
-
-      NormalPrior prior(A, b);
-      prior.Evaluate(&x, residuals.data(), &jacobian);
-
-      // Compare the norm of the residual
-      double residual_diff_norm =
-          (residuals - A * (VectorRef(x, num_cols) - b)).squaredNorm();
-      EXPECT_NEAR(residual_diff_norm, 0, 1e-10);
-
-      // Compare the jacobians
-      MatrixRef J(jacobian, num_rows, num_cols);
-      double jacobian_diff_norm = (J - A).norm();
-      EXPECT_NEAR(jacobian_diff_norm, 0.0, 1e-10);
-
-      delete[] x;
-      delete[] jacobian;
-    }
-  }
-}
-
-TEST(NormalPriorTest, ResidualAtRandomPositionNullJacobians) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(-1.0, 1.0);
-  auto randu = [&distribution, &prng] { return distribution(prng); };
-  for (int num_rows = 1; num_rows < 5; ++num_rows) {
-    for (int num_cols = 1; num_cols < 5; ++num_cols) {
-      Vector b(num_cols);
-      b.setRandom();
-      Matrix A(num_rows, num_cols);
-      A.setRandom();
-
-      auto* x = new double[num_cols];
-      std::generate_n(x, num_cols, randu);
-
-      double* jacobians[1];
-      jacobians[0] = nullptr;
-
-      Vector residuals(num_rows);
-
-      NormalPrior prior(A, b);
-      prior.Evaluate(&x, residuals.data(), jacobians);
-
-      // Compare the norm of the residual
-      double residual_diff_norm =
-          (residuals - A * (VectorRef(x, num_cols) - b)).squaredNorm();
-      EXPECT_NEAR(residual_diff_norm, 0, 1e-10);
-
-      prior.Evaluate(&x, residuals.data(), nullptr);
-      // Compare the norm of the residual
-      residual_diff_norm =
-          (residuals - A * (VectorRef(x, num_cols) - b)).squaredNorm();
-      EXPECT_NEAR(residual_diff_norm, 0, 1e-10);
-
-      delete[] x;
-    }
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/numeric_diff_cost_function_test.cc b/third_party/ceres/internal/ceres/numeric_diff_cost_function_test.cc
deleted file mode 100644
index 0c9074a..0000000
--- a/third_party/ceres/internal/ceres/numeric_diff_cost_function_test.cc
+++ /dev/null
@@ -1,464 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2024 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         tbennun@gmail.com (Tal Ben-Nun)
-
-#include "ceres/numeric_diff_cost_function.h"
-
-#include <algorithm>
-#include <array>
-#include <cmath>
-#include <memory>
-#include <random>
-#include <string>
-#include <vector>
-
-#include "ceres/array_utils.h"
-#include "ceres/numeric_diff_test_utils.h"
-#include "ceres/test_util.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(NumericDiffCostFunction, EasyCaseFunctorCentralDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyFunctor,
-                                               CENTRAL,
-                                               3,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new EasyFunctor);
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, CENTRAL);
-}
-
-TEST(NumericDiffCostFunction, EasyCaseFunctorForwardDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyFunctor,
-                                               FORWARD,
-                                               3,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new EasyFunctor);
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, FORWARD);
-}
-
-TEST(NumericDiffCostFunction, EasyCaseFunctorRidders) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyFunctor,
-                                               RIDDERS,
-                                               3,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new EasyFunctor);
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, RIDDERS);
-}
-
-TEST(NumericDiffCostFunction, EasyCaseCostFunctionCentralDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyCostFunction,
-                                               CENTRAL,
-                                               3,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new EasyCostFunction,
-                                                  TAKE_OWNERSHIP);
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, CENTRAL);
-}
-
-TEST(NumericDiffCostFunction, EasyCaseCostFunctionForwardDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyCostFunction,
-                                               FORWARD,
-                                               3,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new EasyCostFunction,
-                                                  TAKE_OWNERSHIP);
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, FORWARD);
-}
-
-TEST(NumericDiffCostFunction, EasyCaseCostFunctionRidders) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyCostFunction,
-                                               RIDDERS,
-                                               3,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new EasyCostFunction,
-                                                  TAKE_OWNERSHIP);
-
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, RIDDERS);
-}
-
-TEST(NumericDiffCostFunction, TranscendentalCaseFunctorCentralDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<TranscendentalFunctor,
-                                               CENTRAL,
-                                               2,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new TranscendentalFunctor);
-  TranscendentalFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, CENTRAL);
-}
-
-TEST(NumericDiffCostFunction, TranscendentalCaseFunctorForwardDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<TranscendentalFunctor,
-                                               FORWARD,
-                                               2,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(new TranscendentalFunctor);
-
-  TranscendentalFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, FORWARD);
-}
-
-TEST(NumericDiffCostFunction, TranscendentalCaseFunctorRidders) {
-  NumericDiffOptions options;
-
-  // Using a smaller initial step size to overcome oscillatory function
-  // behavior.
-  options.ridders_relative_initial_step_size = 1e-3;
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<TranscendentalFunctor,
-                                               RIDDERS,
-                                               2,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(
-          new TranscendentalFunctor, TAKE_OWNERSHIP, 2, options);
-
-  TranscendentalFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, RIDDERS);
-}
-
-TEST(NumericDiffCostFunction,
-     TranscendentalCaseCostFunctionCentralDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<TranscendentalCostFunction,
-                                               CENTRAL,
-                                               2,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(
-          new TranscendentalCostFunction, TAKE_OWNERSHIP);
-  TranscendentalFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, CENTRAL);
-}
-
-TEST(NumericDiffCostFunction,
-     TranscendentalCaseCostFunctionForwardDifferences) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<TranscendentalCostFunction,
-                                               FORWARD,
-                                               2,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(
-          new TranscendentalCostFunction, TAKE_OWNERSHIP);
-  TranscendentalFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, FORWARD);
-}
-
-TEST(NumericDiffCostFunction, TranscendentalCaseCostFunctionRidders) {
-  NumericDiffOptions options;
-
-  // Using a smaller initial step size to overcome oscillatory function
-  // behavior.
-  options.ridders_relative_initial_step_size = 1e-3;
-
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<TranscendentalCostFunction,
-                                               RIDDERS,
-                                               2,  // number of residuals
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(
-          new TranscendentalCostFunction, TAKE_OWNERSHIP, 2, options);
-  TranscendentalFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, RIDDERS);
-}
-
-template <int num_rows, int num_cols>
-class SizeTestingCostFunction : public SizedCostFunction<num_rows, num_cols> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    return true;
-  }
-};
-
-// As described in
-// http://forum.kde.org/viewtopic.php?f=74&t=98536#p210774
-// Eigen3 has restrictions on the Row/Column major storage of vectors,
-// depending on their dimensions. This test ensures that the correct
-// templates are instantiated for various shapes of the Jacobian
-// matrix.
-TEST(NumericDiffCostFunction, EigenRowMajorColMajorTest) {
-  std::unique_ptr<CostFunction> cost_function = std::make_unique<
-      NumericDiffCostFunction<SizeTestingCostFunction<1, 1>, CENTRAL, 1, 1>>(
-      new SizeTestingCostFunction<1, 1>, ceres::TAKE_OWNERSHIP);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<SizeTestingCostFunction<2, 1>, CENTRAL, 2, 1>>(
-      new SizeTestingCostFunction<2, 1>, ceres::TAKE_OWNERSHIP);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<SizeTestingCostFunction<1, 2>, CENTRAL, 1, 2>>(
-      new SizeTestingCostFunction<1, 2>, ceres::TAKE_OWNERSHIP);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<SizeTestingCostFunction<2, 2>, CENTRAL, 2, 2>>(
-      new SizeTestingCostFunction<2, 2>, ceres::TAKE_OWNERSHIP);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, ceres::DYNAMIC, 1, 1>>(
-      new EasyFunctor, TAKE_OWNERSHIP, 1);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, ceres::DYNAMIC, 1, 1>>(
-      new EasyFunctor, TAKE_OWNERSHIP, 2);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, ceres::DYNAMIC, 1, 2>>(
-      new EasyFunctor, TAKE_OWNERSHIP, 1);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, ceres::DYNAMIC, 1, 2>>(
-      new EasyFunctor, TAKE_OWNERSHIP, 2);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, ceres::DYNAMIC, 2, 1>>(
-      new EasyFunctor, TAKE_OWNERSHIP, 1);
-
-  cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, ceres::DYNAMIC, 2, 1>>(
-      new EasyFunctor, TAKE_OWNERSHIP, 2);
-}
-
-TEST(NumericDiffCostFunction,
-     EasyCaseFunctorCentralDifferencesAndDynamicNumResiduals) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<EasyFunctor,
-                                               CENTRAL,
-                                               ceres::DYNAMIC,
-                                               5,  // size of x1
-                                               5   // size of x2
-                                               >>(
-          new EasyFunctor, TAKE_OWNERSHIP, 3);
-  EasyFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function, CENTRAL);
-}
-
-TEST(NumericDiffCostFunction, ExponentialFunctorRidders) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<ExponentialFunctor,
-                                               RIDDERS,
-                                               1,  // number of residuals
-                                               1   // size of x1
-                                               >>(new ExponentialFunctor);
-  ExponentialFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function);
-}
-
-TEST(NumericDiffCostFunction, ExponentialCostFunctionRidders) {
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<ExponentialCostFunction,
-                                               RIDDERS,
-                                               1,  // number of residuals
-                                               1   // size of x1
-                                               >>(new ExponentialCostFunction);
-  ExponentialFunctor functor;
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function);
-}
-
-TEST(NumericDiffCostFunction, RandomizedFunctorRidders) {
-  std::mt19937 prng;
-  NumericDiffOptions options;
-  // Larger initial step size is chosen to produce robust results in the
-  // presence of random noise.
-  options.ridders_relative_initial_step_size = 10.0;
-
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<RandomizedFunctor,
-                                               RIDDERS,
-                                               1,  // number of residuals
-                                               1   // size of x1
-                                               >>(
-          new RandomizedFunctor(kNoiseFactor, prng),
-          TAKE_OWNERSHIP,
-          1,
-          options);
-  RandomizedFunctor functor(kNoiseFactor, prng);
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function);
-}
-
-TEST(NumericDiffCostFunction, RandomizedCostFunctionRidders) {
-  std::mt19937 prng;
-  NumericDiffOptions options;
-  // Larger initial step size is chosen to produce robust results in the
-  // presence of random noise.
-  options.ridders_relative_initial_step_size = 10.0;
-
-  auto cost_function =
-      std::make_unique<NumericDiffCostFunction<RandomizedCostFunction,
-                                               RIDDERS,
-                                               1,  // number of residuals
-                                               1   // size of x1
-                                               >>(
-          new RandomizedCostFunction(kNoiseFactor, prng),
-          TAKE_OWNERSHIP,
-          1,
-          options);
-
-  RandomizedFunctor functor(kNoiseFactor, prng);
-  functor.ExpectCostFunctionEvaluationIsNearlyCorrect(*cost_function);
-}
-
-struct OnlyFillsOneOutputFunctor {
-  bool operator()(const double* x, double* output) const {
-    output[0] = x[0];
-    return true;
-  }
-};
-
-TEST(NumericDiffCostFunction, PartiallyFilledResidualShouldFailEvaluation) {
-  double parameter = 1.0;
-  double jacobian[2];
-  double residuals[2];
-  double* parameters[] = {&parameter};
-  double* jacobians[] = {jacobian};
-
-  auto cost_function = std::make_unique<
-      NumericDiffCostFunction<OnlyFillsOneOutputFunctor, CENTRAL, 2, 1>>(
-      new OnlyFillsOneOutputFunctor);
-  InvalidateArray(2, jacobian);
-  InvalidateArray(2, residuals);
-  EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, jacobians));
-  EXPECT_FALSE(IsArrayValid(2, residuals));
-  InvalidateArray(2, residuals);
-  EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr));
-  // We are only testing residuals here, because the Jacobians are
-  // computed using finite differencing from the residuals, so unless
-  // we introduce a validation step after every evaluation of
-  // residuals inside NumericDiffCostFunction, there is no way of
-  // ensuring that the Jacobian array is invalid.
-  EXPECT_FALSE(IsArrayValid(2, residuals));
-}
-
-TEST(NumericDiffCostFunction, ParameterBlockConstant) {
-  constexpr int kNumResiduals = 3;
-  constexpr int kX1 = 5;
-  constexpr int kX2 = 5;
-
-  auto cost_function = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, kNumResiduals, kX1, kX2>>(
-      new EasyFunctor);
-
-  // Prepare the parameters and residuals.
-  std::array<double, kX1> x1{1e-64, 2.0, 3.0, 4.0, 5.0};
-  std::array<double, kX2> x2{9.0, 9.0, 5.0, 5.0, 1.0};
-  std::array<double*, 2> parameter_blocks{x1.data(), x2.data()};
-
-  std::vector<double> residuals(kNumResiduals, -100000);
-
-  // Evaluate the full jacobian.
-  std::vector<std::vector<double>> jacobian_full_vect(2);
-  jacobian_full_vect[0].resize(kNumResiduals * kX1, -100000);
-  jacobian_full_vect[1].resize(kNumResiduals * kX2, -100000);
-  {
-    std::array<double*, 2> jacobian{jacobian_full_vect[0].data(),
-                                    jacobian_full_vect[1].data()};
-    ASSERT_TRUE(cost_function->Evaluate(
-        parameter_blocks.data(), residuals.data(), jacobian.data()));
-  }
-
-  // Evaluate and check jacobian when first parameter block is constant.
-  {
-    std::vector<double> jacobian_vect(kNumResiduals * kX2, -100000);
-    std::array<double*, 2> jacobian{nullptr, jacobian_vect.data()};
-
-    ASSERT_TRUE(cost_function->Evaluate(
-        parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-    for (int i = 0; i < kNumResiduals * kX2; ++i) {
-      EXPECT_DOUBLE_EQ(jacobian_full_vect[1][i], jacobian_vect[i]);
-    }
-  }
-
-  // Evaluate and check jacobian when second parameter block is constant.
-  {
-    std::vector<double> jacobian_vect(kNumResiduals * kX1, -100000);
-    std::array<double*, 2> jacobian{jacobian_vect.data(), nullptr};
-
-    ASSERT_TRUE(cost_function->Evaluate(
-        parameter_blocks.data(), residuals.data(), jacobian.data()));
-
-    for (int i = 0; i < kNumResiduals * kX1; ++i) {
-      EXPECT_DOUBLE_EQ(jacobian_full_vect[0][i], jacobian_vect[i]);
-    }
-  }
-}
-
-struct MultiArgFunctor {
-  explicit MultiArgFunctor(int a, double c) {}
-  template <class T>
-  bool operator()(const T* params, T* residuals) const noexcept {
-    return false;
-  }
-};
-
-TEST(NumericDiffCostFunction, ArgumentForwarding) {
-  auto cost_function1 = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, 3, 5, 5>>();
-  auto cost_function2 =
-      std::make_unique<NumericDiffCostFunction<MultiArgFunctor, CENTRAL, 1, 1>>(
-          1, 2);
-}
-
-TEST(NumericDiffCostFunction, UniquePtrCtor) {
-  auto cost_function1 =
-      std::make_unique<NumericDiffCostFunction<EasyFunctor, CENTRAL, 3, 5, 5>>(
-          std::make_unique<EasyFunctor>());
-  auto cost_function2 = std::make_unique<
-      NumericDiffCostFunction<EasyFunctor, CENTRAL, 3, 5, 5>>();
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/numeric_diff_first_order_function_test.cc b/third_party/ceres/internal/ceres/numeric_diff_first_order_function_test.cc
deleted file mode 100644
index ff57e2d..0000000
--- a/third_party/ceres/internal/ceres/numeric_diff_first_order_function_test.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/numeric_diff_first_order_function.h"
-
-#include <memory>
-
-#include "ceres/array_utils.h"
-#include "ceres/first_order_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class QuadraticCostFunctor {
- public:
-  explicit QuadraticCostFunctor(double a) : a_(a) {}
-  bool operator()(const double* const x, double* cost) const {
-    cost[0] = x[0] * x[1] + x[2] * x[3] - a_;
-    return true;
-  }
-
- private:
-  double a_;
-};
-
-TEST(NumericDiffFirstOrderFunction, BilinearDifferentiationTestStatic) {
-  auto function = std::make_unique<
-      NumericDiffFirstOrderFunction<QuadraticCostFunctor, CENTRAL, 4>>(
-      new QuadraticCostFunctor(1.0));
-
-  double parameters[4] = {1.0, 2.0, 3.0, 4.0};
-  double gradient[4];
-  double cost;
-
-  function->Evaluate(parameters, &cost, nullptr);
-  EXPECT_EQ(cost, 13.0);
-
-  cost = -1.0;
-  function->Evaluate(parameters, &cost, gradient);
-
-  EXPECT_EQ(cost, 13.0);
-
-  const double kTolerance = 1e-9;
-  EXPECT_NEAR(gradient[0], parameters[1], kTolerance);
-  EXPECT_NEAR(gradient[1], parameters[0], kTolerance);
-  EXPECT_NEAR(gradient[2], parameters[3], kTolerance);
-  EXPECT_NEAR(gradient[3], parameters[2], kTolerance);
-}
-
-TEST(NumericDiffFirstOrderFunction, BilinearDifferentiationTestDynamic) {
-  auto function = std::make_unique<
-      NumericDiffFirstOrderFunction<QuadraticCostFunctor, CENTRAL>>(
-      new QuadraticCostFunctor(1.0), 4);
-
-  double parameters[4] = {1.0, 2.0, 3.0, 4.0};
-  double gradient[4];
-  double cost;
-
-  function->Evaluate(parameters, &cost, nullptr);
-  EXPECT_EQ(cost, 13.0);
-
-  cost = -1.0;
-  function->Evaluate(parameters, &cost, gradient);
-
-  EXPECT_EQ(cost, 13.0);
-
-  const double kTolerance = 1e-9;
-  EXPECT_NEAR(gradient[0], parameters[1], kTolerance);
-  EXPECT_NEAR(gradient[1], parameters[0], kTolerance);
-  EXPECT_NEAR(gradient[2], parameters[3], kTolerance);
-  EXPECT_NEAR(gradient[3], parameters[2], kTolerance);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/numeric_diff_test_utils.cc b/third_party/ceres/internal/ceres/numeric_diff_test_utils.cc
deleted file mode 100644
index 0aa1778..0000000
--- a/third_party/ceres/internal/ceres/numeric_diff_test_utils.cc
+++ /dev/null
@@ -1,257 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         tbennun@gmail.com (Tal Ben-Nun)
-
-#include "ceres/numeric_diff_test_utils.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "ceres/cost_function.h"
-#include "ceres/test_util.h"
-#include "ceres/types.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-bool EasyFunctor::operator()(const double* x1,
-                             const double* x2,
-                             double* residuals) const {
-  residuals[0] = residuals[1] = residuals[2] = 0;
-  for (int i = 0; i < 5; ++i) {
-    residuals[0] += x1[i] * x2[i];
-    residuals[2] += x2[i] * x2[i];
-  }
-  residuals[1] = residuals[0] * residuals[0];
-  return true;
-}
-
-void EasyFunctor::ExpectCostFunctionEvaluationIsNearlyCorrect(
-    const CostFunction& cost_function, NumericDiffMethodType method) const {
-  // The x1[0] is made deliberately small to test the performance near zero.
-  // clang-format off
-  double x1[] = { 1e-64, 2.0, 3.0, 4.0, 5.0 };
-  double x2[] = { 9.0, 9.0, 5.0, 5.0, 1.0 };
-  double *parameters[] = { &x1[0], &x2[0] };
-  // clang-format on
-
-  double dydx1[15];  // 3 x 5, row major.
-  double dydx2[15];  // 3 x 5, row major.
-  double* jacobians[2] = {&dydx1[0], &dydx2[0]};
-
-  double residuals[3] = {-1e-100, -2e-100, -3e-100};
-
-  ASSERT_TRUE(
-      cost_function.Evaluate(&parameters[0], &residuals[0], &jacobians[0]));
-
-  double expected_residuals[3];
-  EasyFunctor functor;
-  functor(x1, x2, expected_residuals);
-  EXPECT_EQ(expected_residuals[0], residuals[0]);
-  EXPECT_EQ(expected_residuals[1], residuals[1]);
-  EXPECT_EQ(expected_residuals[2], residuals[2]);
-
-  double tolerance = 0.0;
-  switch (method) {
-    default:
-    case CENTRAL:
-      tolerance = 3e-9;
-      break;
-
-    case FORWARD:
-      tolerance = 2e-5;
-      break;
-
-    case RIDDERS:
-      tolerance = 1e-13;
-      break;
-  }
-
-  for (int i = 0; i < 5; ++i) {
-    // clang-format off
-    ExpectClose(x2[i],                    dydx1[5 * 0 + i], tolerance);  // y1
-    ExpectClose(x1[i],                    dydx2[5 * 0 + i], tolerance);
-    ExpectClose(2 * x2[i] * residuals[0], dydx1[5 * 1 + i], tolerance);  // y2
-    ExpectClose(2 * x1[i] * residuals[0], dydx2[5 * 1 + i], tolerance);
-    ExpectClose(0.0,                      dydx1[5 * 2 + i], tolerance);  // y3
-    ExpectClose(2 * x2[i],                dydx2[5 * 2 + i], tolerance);
-    // clang-format on
-  }
-}
-
-bool TranscendentalFunctor::operator()(const double* x1,
-                                       const double* x2,
-                                       double* residuals) const {
-  double x1x2 = 0;
-  for (int i = 0; i < 5; ++i) {
-    x1x2 += x1[i] * x2[i];
-  }
-  residuals[0] = sin(x1x2);
-  residuals[1] = exp(-x1x2 / 10);
-  return true;
-}
-
-void TranscendentalFunctor::ExpectCostFunctionEvaluationIsNearlyCorrect(
-    const CostFunction& cost_function, NumericDiffMethodType method) const {
-  struct TestParameterBlocks {
-    double x1[5];
-    double x2[5];
-  };
-
-  // clang-format off
-  std::vector<TestParameterBlocks> kTests =  {
-    { { 1.0, 2.0, 3.0, 4.0, 5.0 },  // No zeros.
-      { 9.0, 9.0, 5.0, 5.0, 1.0 },
-    },
-    { { 0.0, 2.0, 3.0, 0.0, 5.0 },  // Some zeros x1.
-      { 9.0, 9.0, 5.0, 5.0, 1.0 },
-    },
-    { { 1.0, 2.0, 3.0, 1.0, 5.0 },  // Some zeros x2.
-      { 0.0, 9.0, 0.0, 5.0, 0.0 },
-    },
-    { { 0.0, 0.0, 0.0, 0.0, 0.0 },  // All zeros x1.
-      { 9.0, 9.0, 5.0, 5.0, 1.0 },
-    },
-    { { 1.0, 2.0, 3.0, 4.0, 5.0 },  // All zeros x2.
-      { 0.0, 0.0, 0.0, 0.0, 0.0 },
-    },
-    { { 0.0, 0.0, 0.0, 0.0, 0.0 },  // All zeros.
-      { 0.0, 0.0, 0.0, 0.0, 0.0 },
-    },
-  };
-  // clang-format on
-
-  for (auto& test : kTests) {
-    double* x1 = &(test.x1[0]);
-    double* x2 = &(test.x2[0]);
-    double* parameters[] = {x1, x2};
-
-    double dydx1[10];
-    double dydx2[10];
-    double* jacobians[2] = {&dydx1[0], &dydx2[0]};
-
-    double residuals[2];
-
-    ASSERT_TRUE(
-        cost_function.Evaluate(&parameters[0], &residuals[0], &jacobians[0]));
-    double x1x2 = 0;
-    for (int i = 0; i < 5; ++i) {
-      x1x2 += x1[i] * x2[i];
-    }
-
-    double tolerance = 0.0;
-    switch (method) {
-      default:
-      case CENTRAL:
-        tolerance = 2e-7;
-        break;
-
-      case FORWARD:
-        tolerance = 2e-5;
-        break;
-
-      case RIDDERS:
-        tolerance = 3e-12;
-        break;
-    }
-
-    for (int i = 0; i < 5; ++i) {
-      // clang-format off
-      ExpectClose( x2[i] * cos(x1x2),              dydx1[5 * 0 + i], tolerance);
-      ExpectClose( x1[i] * cos(x1x2),              dydx2[5 * 0 + i], tolerance);
-      ExpectClose(-x2[i] * exp(-x1x2 / 10.) / 10., dydx1[5 * 1 + i], tolerance);
-      ExpectClose(-x1[i] * exp(-x1x2 / 10.) / 10., dydx2[5 * 1 + i], tolerance);
-      // clang-format on
-    }
-  }
-}
-
-bool ExponentialFunctor::operator()(const double* x1, double* residuals) const {
-  residuals[0] = exp(x1[0]);
-  return true;
-}
-
-void ExponentialFunctor::ExpectCostFunctionEvaluationIsNearlyCorrect(
-    const CostFunction& cost_function) const {
-  // Evaluating the functor at specific points for testing.
-  std::vector<double> kTests = {1.0, 2.0, 3.0, 4.0, 5.0};
-
-  // Minimal tolerance w.r.t. the cost function and the tests.
-  const double kTolerance = 2e-14;
-
-  for (double& test : kTests) {
-    double* parameters[] = {&test};
-    double dydx;
-    double* jacobians[1] = {&dydx};
-    double residual;
-
-    ASSERT_TRUE(
-        cost_function.Evaluate(&parameters[0], &residual, &jacobians[0]));
-
-    double expected_result = exp(test);
-
-    // Expect residual to be close to exp(x).
-    ExpectClose(residual, expected_result, kTolerance);
-
-    // Check evaluated differences. dydx should also be close to exp(x).
-    ExpectClose(dydx, expected_result, kTolerance);
-  }
-}
-
-bool RandomizedFunctor::operator()(const double* x1, double* residuals) const {
-  double random_value = uniform_distribution_(*prng_);
-  residuals[0] = x1[0] * x1[0] + random_value;
-  return true;
-}
-
-void RandomizedFunctor::ExpectCostFunctionEvaluationIsNearlyCorrect(
-    const CostFunction& cost_function) const {
-  std::vector<double> kTests = {0.0, 1.0, 3.0, 4.0, 50.0};
-
-  const double kTolerance = 2e-4;
-
-  for (double& test : kTests) {
-    double* parameters[] = {&test};
-    double dydx;
-    double* jacobians[1] = {&dydx};
-    double residual;
-
-    ASSERT_TRUE(
-        cost_function.Evaluate(&parameters[0], &residual, &jacobians[0]));
-
-    // Expect residual to be close to x^2 w.r.t. noise factor.
-    ExpectClose(residual, test * test, noise_factor_);
-
-    // Check evaluated differences. (dy/dx = ~2x)
-    ExpectClose(dydx, 2 * test, kTolerance);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/numeric_diff_test_utils.h b/third_party/ceres/internal/ceres/numeric_diff_test_utils.h
deleted file mode 100644
index e258ceb..0000000
--- a/third_party/ceres/internal/ceres/numeric_diff_test_utils.h
+++ /dev/null
@@ -1,155 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_NUMERIC_DIFF_TEST_UTILS_H_
-#define CERES_INTERNAL_NUMERIC_DIFF_TEST_UTILS_H_
-
-#include <random>
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/export.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-// Noise factor for randomized cost function.
-static constexpr double kNoiseFactor = 0.01;
-
-// Default random seed for randomized cost function.
-static constexpr unsigned int kRandomSeed = 1234;
-
-// y1 = x1'x2      -> dy1/dx1 = x2,               dy1/dx2 = x1
-// y2 = (x1'x2)^2  -> dy2/dx1 = 2 * x2 * (x1'x2), dy2/dx2 = 2 * x1 * (x1'x2)
-// y3 = x2'x2      -> dy3/dx1 = 0,                dy3/dx2 = 2 * x2
-class CERES_NO_EXPORT EasyFunctor {
- public:
-  bool operator()(const double* x1, const double* x2, double* residuals) const;
-  void ExpectCostFunctionEvaluationIsNearlyCorrect(
-      const CostFunction& cost_function, NumericDiffMethodType method) const;
-};
-
-class EasyCostFunction : public SizedCostFunction<3, 5, 5> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** /* not used */) const final {
-    return functor_(parameters[0], parameters[1], residuals);
-  }
-
- private:
-  EasyFunctor functor_;
-};
-
-// y1 = sin(x1'x2)
-// y2 = exp(-x1'x2 / 10)
-//
-// dy1/dx1 =  x2 * cos(x1'x2),            dy1/dx2 =  x1 * cos(x1'x2)
-// dy2/dx1 = -x2 * exp(-x1'x2 / 10) / 10, dy2/dx2 = -x2 * exp(-x1'x2 / 10) / 10
-class CERES_NO_EXPORT TranscendentalFunctor {
- public:
-  bool operator()(const double* x1, const double* x2, double* residuals) const;
-  void ExpectCostFunctionEvaluationIsNearlyCorrect(
-      const CostFunction& cost_function, NumericDiffMethodType method) const;
-};
-
-class CERES_NO_EXPORT TranscendentalCostFunction
-    : public SizedCostFunction<2, 5, 5> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** /* not used */) const final {
-    return functor_(parameters[0], parameters[1], residuals);
-  }
-
- private:
-  TranscendentalFunctor functor_;
-};
-
-// y = exp(x), dy/dx = exp(x)
-class CERES_NO_EXPORT ExponentialFunctor {
- public:
-  bool operator()(const double* x1, double* residuals) const;
-  void ExpectCostFunctionEvaluationIsNearlyCorrect(
-      const CostFunction& cost_function) const;
-};
-
-class ExponentialCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** /* not used */) const final {
-    return functor_(parameters[0], residuals);
-  }
-
- private:
-  ExponentialFunctor functor_;
-};
-
-// Test adaptive numeric differentiation by synthetically adding random noise
-// to a functor.
-// y = x^2 + [random noise], dy/dx ~ 2x
-class CERES_NO_EXPORT RandomizedFunctor {
- public:
-  RandomizedFunctor(double noise_factor, std::mt19937& prng)
-      : noise_factor_(noise_factor),
-        prng_(&prng),
-        uniform_distribution_{-noise_factor, noise_factor} {}
-
-  bool operator()(const double* x1, double* residuals) const;
-  void ExpectCostFunctionEvaluationIsNearlyCorrect(
-      const CostFunction& cost_function) const;
-
- private:
-  double noise_factor_;
-  // Store the generator as a pointer to be able to modify the instance the
-  // pointer is pointing to.
-  std::mt19937* prng_;
-  mutable std::uniform_real_distribution<> uniform_distribution_;
-};
-
-class CERES_NO_EXPORT RandomizedCostFunction : public SizedCostFunction<1, 1> {
- public:
-  RandomizedCostFunction(double noise_factor, std::mt19937& prng)
-      : functor_(noise_factor, prng) {}
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** /* not used */) const final {
-    return functor_(parameters[0], residuals);
-  }
-
- private:
-  RandomizedFunctor functor_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_NUMERIC_DIFF_TEST_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/ordered_groups_test.cc b/third_party/ceres/internal/ceres/ordered_groups_test.cc
deleted file mode 100644
index d376b4d..0000000
--- a/third_party/ceres/internal/ceres/ordered_groups_test.cc
+++ /dev/null
@@ -1,231 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/ordered_groups.h"
-
-#include <cstddef>
-#include <vector>
-
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(OrderedGroups, EmptyOrderedGroupBehavesCorrectly) {
-  ParameterBlockOrdering ordering;
-  EXPECT_EQ(ordering.NumGroups(), 0);
-  EXPECT_EQ(ordering.NumElements(), 0);
-  EXPECT_EQ(ordering.GroupSize(1), 0);
-  double x;
-  EXPECT_EQ(ordering.GroupId(&x), -1);
-  EXPECT_FALSE(ordering.Remove(&x));
-}
-
-TEST(OrderedGroups, EverythingInOneGroup) {
-  ParameterBlockOrdering ordering;
-  double x[3];
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 1);
-  ordering.AddElementToGroup(x + 2, 1);
-  ordering.AddElementToGroup(x, 1);
-
-  EXPECT_EQ(ordering.NumGroups(), 1);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(1), 3);
-  EXPECT_EQ(ordering.GroupSize(0), 0);
-  EXPECT_EQ(ordering.GroupId(x), 1);
-  EXPECT_EQ(ordering.GroupId(x + 1), 1);
-  EXPECT_EQ(ordering.GroupId(x + 2), 1);
-
-  ordering.Remove(x);
-  EXPECT_EQ(ordering.NumGroups(), 1);
-  EXPECT_EQ(ordering.NumElements(), 2);
-  EXPECT_EQ(ordering.GroupSize(1), 2);
-  EXPECT_EQ(ordering.GroupSize(0), 0);
-
-  EXPECT_EQ(ordering.GroupId(x), -1);
-  EXPECT_EQ(ordering.GroupId(x + 1), 1);
-  EXPECT_EQ(ordering.GroupId(x + 2), 1);
-}
-
-TEST(OrderedGroups, StartInOneGroupAndThenSplit) {
-  ParameterBlockOrdering ordering;
-  double x[3];
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 1);
-  ordering.AddElementToGroup(x + 2, 1);
-  ordering.AddElementToGroup(x, 1);
-
-  EXPECT_EQ(ordering.NumGroups(), 1);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(1), 3);
-  EXPECT_EQ(ordering.GroupSize(0), 0);
-  EXPECT_EQ(ordering.GroupId(x), 1);
-  EXPECT_EQ(ordering.GroupId(x + 1), 1);
-  EXPECT_EQ(ordering.GroupId(x + 2), 1);
-
-  ordering.AddElementToGroup(x, 5);
-  EXPECT_EQ(ordering.NumGroups(), 2);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(1), 2);
-  EXPECT_EQ(ordering.GroupSize(5), 1);
-  EXPECT_EQ(ordering.GroupSize(0), 0);
-
-  EXPECT_EQ(ordering.GroupId(x), 5);
-  EXPECT_EQ(ordering.GroupId(x + 1), 1);
-  EXPECT_EQ(ordering.GroupId(x + 2), 1);
-}
-
-TEST(OrderedGroups, AddAndRemoveEveryThingFromOneGroup) {
-  ParameterBlockOrdering ordering;
-  double x[3];
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 1);
-  ordering.AddElementToGroup(x + 2, 1);
-  ordering.AddElementToGroup(x, 1);
-
-  EXPECT_EQ(ordering.NumGroups(), 1);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(1), 3);
-  EXPECT_EQ(ordering.GroupSize(0), 0);
-  EXPECT_EQ(ordering.GroupId(x), 1);
-  EXPECT_EQ(ordering.GroupId(x + 1), 1);
-  EXPECT_EQ(ordering.GroupId(x + 2), 1);
-
-  ordering.AddElementToGroup(x, 5);
-  ordering.AddElementToGroup(x + 1, 5);
-  ordering.AddElementToGroup(x + 2, 5);
-  EXPECT_EQ(ordering.NumGroups(), 1);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(1), 0);
-  EXPECT_EQ(ordering.GroupSize(5), 3);
-  EXPECT_EQ(ordering.GroupSize(0), 0);
-
-  EXPECT_EQ(ordering.GroupId(x), 5);
-  EXPECT_EQ(ordering.GroupId(x + 1), 5);
-  EXPECT_EQ(ordering.GroupId(x + 2), 5);
-}
-
-TEST(OrderedGroups, ReverseOrdering) {
-  ParameterBlockOrdering ordering;
-  double x[3];
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 2);
-  ordering.AddElementToGroup(x + 2, 2);
-
-  EXPECT_EQ(ordering.NumGroups(), 2);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(1), 1);
-  EXPECT_EQ(ordering.GroupSize(2), 2);
-  EXPECT_EQ(ordering.GroupId(x), 1);
-  EXPECT_EQ(ordering.GroupId(x + 1), 2);
-  EXPECT_EQ(ordering.GroupId(x + 2), 2);
-
-  ordering.Reverse();
-
-  EXPECT_EQ(ordering.NumGroups(), 2);
-  EXPECT_EQ(ordering.NumElements(), 3);
-  EXPECT_EQ(ordering.GroupSize(3), 1);
-  EXPECT_EQ(ordering.GroupSize(2), 2);
-  EXPECT_EQ(ordering.GroupId(x), 3);
-  EXPECT_EQ(ordering.GroupId(x + 1), 2);
-  EXPECT_EQ(ordering.GroupId(x + 2), 2);
-}
-
-TEST(OrderedGroups, ReverseOrderingWithEmptyOrderedGroups) {
-  ParameterBlockOrdering ordering;
-  // This should be a no-op.
-  ordering.Reverse();
-
-  // Ensure the properties of an empty OrderedGroups still hold after Reverse().
-  EXPECT_EQ(ordering.NumGroups(), 0);
-  EXPECT_EQ(ordering.NumElements(), 0);
-  EXPECT_EQ(ordering.GroupSize(1), 0);
-  double x;
-  EXPECT_EQ(ordering.GroupId(&x), -1);
-  EXPECT_FALSE(ordering.Remove(&x));
-}
-
-TEST(OrderedGroups, BulkRemove) {
-  ParameterBlockOrdering ordering;
-  double x[3];
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 2);
-  ordering.AddElementToGroup(x + 2, 2);
-
-  std::vector<double*> elements_to_remove;
-  elements_to_remove.push_back(x);
-  elements_to_remove.push_back(x + 2);
-
-  EXPECT_EQ(ordering.Remove(elements_to_remove), 2);
-  EXPECT_EQ(ordering.NumElements(), 1);
-  EXPECT_EQ(ordering.GroupId(x), -1);
-  EXPECT_EQ(ordering.GroupId(x + 1), 2);
-  EXPECT_EQ(ordering.GroupId(x + 2), -1);
-}
-
-TEST(OrderedGroups, BulkRemoveWithNoElements) {
-  ParameterBlockOrdering ordering;
-
-  double x[3];
-  std::vector<double*> elements_to_remove;
-  elements_to_remove.push_back(x);
-  elements_to_remove.push_back(x + 2);
-
-  EXPECT_EQ(ordering.Remove(elements_to_remove), 0);
-
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 2);
-  ordering.AddElementToGroup(x + 2, 2);
-
-  elements_to_remove.clear();
-  EXPECT_EQ(ordering.Remove(elements_to_remove), 0);
-}
-
-TEST(OrderedGroups, MinNonZeroGroup) {
-  ParameterBlockOrdering ordering;
-  double x[3];
-
-  ordering.AddElementToGroup(x, 1);
-  ordering.AddElementToGroup(x + 1, 1);
-  ordering.AddElementToGroup(x + 2, 2);
-
-  EXPECT_EQ(ordering.MinNonZeroGroup(), 1);
-  ordering.Remove(x);
-
-  EXPECT_EQ(ordering.MinNonZeroGroup(), 1);
-  ordering.Remove(x + 1);
-
-  EXPECT_EQ(ordering.MinNonZeroGroup(), 2);
-  ordering.Remove(x + 2);
-
-  // No non-zero groups left.
-  EXPECT_DEATH_IF_SUPPORTED(ordering.MinNonZeroGroup(), "NumGroups");
-}
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/pair_hash.h b/third_party/ceres/internal/ceres/pair_hash.h
deleted file mode 100644
index 64882cd..0000000
--- a/third_party/ceres/internal/ceres/pair_hash.h
+++ /dev/null
@@ -1,116 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A hasher for std::pair<T, T>.
-
-#ifndef CERES_INTERNAL_PAIR_HASH_H_
-#define CERES_INTERNAL_PAIR_HASH_H_
-
-#include <cstddef>
-#include <cstdint>
-#include <functional>
-#include <utility>
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-#if defined(_WIN32) && !defined(__MINGW64__) && !defined(__MINGW32__)
-#define GG_LONGLONG(x) x##I64
-#define GG_ULONGLONG(x) x##UI64
-#else
-#define GG_LONGLONG(x) x##LL
-#define GG_ULONGLONG(x) x##ULL
-#endif
-
-// The hash function is due to Bob Jenkins (see
-// http://burtleburtle.net/bob/hash/index.html). Each mix takes 36 instructions,
-// in 18 cycles if you're lucky. On x86 architectures, this requires 45
-// instructions in 27 cycles, if you're lucky.
-//
-// clang-format off
-//
-// 32bit version
-inline void hash_mix(uint32_t& a, uint32_t& b, uint32_t& c) {
-  a -= b; a -= c; a ^= (c>>13);
-  b -= c; b -= a; b ^= (a<<8);
-  c -= a; c -= b; c ^= (b>>13);
-  a -= b; a -= c; a ^= (c>>12);
-  b -= c; b -= a; b ^= (a<<16);
-  c -= a; c -= b; c ^= (b>>5);
-  a -= b; a -= c; a ^= (c>>3);
-  b -= c; b -= a; b ^= (a<<10);
-  c -= a; c -= b; c ^= (b>>15);
-}
-
-// 64bit version
-inline void hash_mix(uint64_t& a, uint64_t& b, uint64_t& c) {
-  a -= b; a -= c; a ^= (c>>43);
-  b -= c; b -= a; b ^= (a<<9);
-  c -= a; c -= b; c ^= (b>>8);
-  a -= b; a -= c; a ^= (c>>38);
-  b -= c; b -= a; b ^= (a<<23);
-  c -= a; c -= b; c ^= (b>>5);
-  a -= b; a -= c; a ^= (c>>35);
-  b -= c; b -= a; b ^= (a<<49);
-  c -= a; c -= b; c ^= (b>>11);
-}
-// clang-format on
-
-inline uint32_t Hash32NumWithSeed(uint32_t num, uint32_t c) {
-  // The golden ratio; an arbitrary value.
-  uint32_t b = 0x9e3779b9UL;
-  hash_mix(num, b, c);
-  return c;
-}
-
-inline uint64_t Hash64NumWithSeed(uint64_t num, uint64_t c) {
-  // More of the golden ratio.
-  uint64_t b = GG_ULONGLONG(0xe08c1d668b756f82);
-  hash_mix(num, b, c);
-  return c;
-}
-
-// Hasher for STL pairs. Requires hashers for both members to be defined.
-struct pair_hash {
- public:
-  template <typename T>
-  std::size_t operator()(const std::pair<T, T>& p) const {
-    const std::size_t h1 = std::hash<T>()(p.first);
-    const std::size_t h2 = std::hash<T>()(p.second);
-    // The decision below is at compile time
-    return (sizeof(h1) <= sizeof(uint32_t)) ? Hash32NumWithSeed(h1, h2)
-                                            : Hash64NumWithSeed(h1, h2);
-  }
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_PAIR_HASH_H_
diff --git a/third_party/ceres/internal/ceres/parallel_for.h b/third_party/ceres/internal/ceres/parallel_for.h
deleted file mode 100644
index 11db1fb..0000000
--- a/third_party/ceres/internal/ceres/parallel_for.h
+++ /dev/null
@@ -1,186 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: vitus@google.com (Michael Vitus),
-//          dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_PARALLEL_FOR_H_
-#define CERES_INTERNAL_PARALLEL_FOR_H_
-
-#include <mutex>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/parallel_invoke.h"
-#include "ceres/partition_range_for_parallel_for.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Use a dummy mutex if num_threads = 1.
-inline decltype(auto) MakeConditionalLock(const int num_threads,
-                                          std::mutex& m) {
-  return (num_threads == 1) ? std::unique_lock<std::mutex>{}
-                            : std::unique_lock<std::mutex>{m};
-}
-
-// Execute the function for every element in the range [start, end) with at most
-// num_threads. It will execute all the work on the calling thread if
-// num_threads or (end - start) is equal to 1.
-// Depending on function signature, it will be supplied with either loop index
-// or a range of loop indicies; function can also be supplied with thread_id.
-// The following function signatures are supported:
-//  - Functions accepting a single loop index:
-//     - [](int index) { ... }
-//     - [](int thread_id, int index) { ... }
-//  - Functions accepting a range of loop index:
-//     - [](std::tuple<int, int> index) { ... }
-//     - [](int thread_id, std::tuple<int, int> index) { ... }
-//
-// When distributing workload between threads, it is assumed that each loop
-// iteration takes approximately equal time to complete.
-template <typename F>
-void ParallelFor(ContextImpl* context,
-                 int start,
-                 int end,
-                 int num_threads,
-                 F&& function,
-                 int min_block_size = 1) {
-  CHECK_GT(num_threads, 0);
-  if (start >= end) {
-    return;
-  }
-
-  if (num_threads == 1 || end - start < min_block_size * 2) {
-    InvokeOnSegment(0, std::make_tuple(start, end), std::forward<F>(function));
-    return;
-  }
-
-  CHECK(context != nullptr);
-  ParallelInvoke(context,
-                 start,
-                 end,
-                 num_threads,
-                 std::forward<F>(function),
-                 min_block_size);
-}
-
-// Execute function for every element in the range [start, end) with at most
-// num_threads, using user-provided partitions array.
-// When distributing workload between threads, it is assumed that each segment
-// bounded by adjacent elements of partitions array takes approximately equal
-// time to process.
-template <typename F>
-void ParallelFor(ContextImpl* context,
-                 int start,
-                 int end,
-                 int num_threads,
-                 F&& function,
-                 const std::vector<int>& partitions) {
-  CHECK_GT(num_threads, 0);
-  if (start >= end) {
-    return;
-  }
-  CHECK_EQ(partitions.front(), start);
-  CHECK_EQ(partitions.back(), end);
-  if (num_threads == 1 || end - start <= num_threads) {
-    ParallelFor(context, start, end, num_threads, std::forward<F>(function));
-    return;
-  }
-  CHECK_GT(partitions.size(), 1);
-  const int num_partitions = partitions.size() - 1;
-  ParallelFor(context,
-              0,
-              num_partitions,
-              num_threads,
-              [&function, &partitions](int thread_id,
-                                       std::tuple<int, int> partition_ids) {
-                // partition_ids is a range of partition indices
-                const auto [partition_start, partition_end] = partition_ids;
-                // Execution over several adjacent segments is equivalent
-                // to execution over union of those segments (which is also a
-                // contiguous segment)
-                const int range_start = partitions[partition_start];
-                const int range_end = partitions[partition_end];
-                // Range of original loop indices
-                const auto range = std::make_tuple(range_start, range_end);
-                InvokeOnSegment(thread_id, range, function);
-              });
-}
-
-// Execute function for every element in the range [start, end) with at most
-// num_threads, taking into account user-provided integer cumulative costs of
-// iterations. Cumulative costs of iteration for indices in range [0, end) are
-// stored in objects from cumulative_cost_data. User-provided
-// cumulative_cost_fun returns non-decreasing integer values corresponding to
-// inclusive cumulative cost of loop iterations, provided with a reference to
-// user-defined object. Only indices from [start, end) will be referenced. This
-// routine assumes that cumulative_cost_fun is non-decreasing (in other words,
-// all costs are non-negative);
-// When distributing workload between threads, input range of loop indices will
-// be partitioned into disjoint contiguous intervals, with the maximal cost
-// being minimized.
-// For example, with iteration costs of [1, 1, 5, 3, 1, 4] cumulative_cost_fun
-// should return [1, 2, 7, 10, 11, 15], and with num_threads = 4 this range
-// will be split into segments [0, 2) [2, 3) [3, 5) [5, 6) with costs
-// [2, 5, 4, 4].
-template <typename F, typename CumulativeCostData, typename CumulativeCostFun>
-void ParallelFor(ContextImpl* context,
-                 int start,
-                 int end,
-                 int num_threads,
-                 F&& function,
-                 const CumulativeCostData* cumulative_cost_data,
-                 CumulativeCostFun&& cumulative_cost_fun) {
-  CHECK_GT(num_threads, 0);
-  if (start >= end) {
-    return;
-  }
-  if (num_threads == 1 || end - start <= num_threads) {
-    ParallelFor(context, start, end, num_threads, std::forward<F>(function));
-    return;
-  }
-  // Creating several partitions allows us to tolerate imperfections of
-  // partitioning and user-supplied iteration costs up to a certain extent
-  constexpr int kNumPartitionsPerThread = 4;
-  const int kMaxPartitions = num_threads * kNumPartitionsPerThread;
-  const auto& partitions = PartitionRangeForParallelFor(
-      start,
-      end,
-      kMaxPartitions,
-      cumulative_cost_data,
-      std::forward<CumulativeCostFun>(cumulative_cost_fun));
-  CHECK_GT(partitions.size(), 1);
-  ParallelFor(
-      context, start, end, num_threads, std::forward<F>(function), partitions);
-}
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_PARALLEL_FOR_H_
diff --git a/third_party/ceres/internal/ceres/parallel_for_benchmark.cc b/third_party/ceres/internal/ceres/parallel_for_benchmark.cc
deleted file mode 100644
index 3bfdb87..0000000
--- a/third_party/ceres/internal/ceres/parallel_for_benchmark.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-#include "benchmark/benchmark.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/parallel_for.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Parallel for with very small amount of work per iteration and small amount of
-// iterations benchmarks performance of task scheduling
-static void SchedulerBenchmark(benchmark::State& state) {
-  const int vector_size = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x = Vector::Random(vector_size);
-  for (auto _ : state) {
-    ParallelFor(
-        &context, 0, vector_size, num_threads, [&x](int id) { x[id] = 0.; });
-  }
-  CHECK_EQ(x.squaredNorm(), 0.);
-}
-BENCHMARK(SchedulerBenchmark)
-    ->Args({128, 1})
-    ->Args({128, 2})
-    ->Args({128, 4})
-    ->Args({128, 8})
-    ->Args({128, 16})
-    ->Args({256, 1})
-    ->Args({256, 2})
-    ->Args({256, 4})
-    ->Args({256, 8})
-    ->Args({256, 16})
-    ->Args({1024, 1})
-    ->Args({1024, 2})
-    ->Args({1024, 4})
-    ->Args({1024, 8})
-    ->Args({1024, 16})
-    ->Args({4096, 1})
-    ->Args({4096, 2})
-    ->Args({4096, 4})
-    ->Args({4096, 8})
-    ->Args({4096, 16});
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/parallel_for_test.cc b/third_party/ceres/internal/ceres/parallel_for_test.cc
deleted file mode 100644
index 46f5a0f..0000000
--- a/third_party/ceres/internal/ceres/parallel_for_test.cc
+++ /dev/null
@@ -1,496 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/parallel_for.h"
-
-#include <atomic>
-#include <cmath>
-#include <condition_variable>
-#include <mutex>
-#include <numeric>
-#include <random>
-#include <thread>
-#include <tuple>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/config.h"
-#include "ceres/parallel_vector_ops.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using testing::ElementsAreArray;
-using testing::UnorderedElementsAreArray;
-
-// Tests the parallel for loop computes the correct result for various number of
-// threads.
-TEST(ParallelFor, NumThreads) {
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-
-  const int size = 16;
-  std::vector<int> expected_results(size, 0);
-  for (int i = 0; i < size; ++i) {
-    expected_results[i] = std::sqrt(i);
-  }
-
-  for (int num_threads = 1; num_threads <= 8; ++num_threads) {
-    std::vector<int> values(size, 0);
-    ParallelFor(&context, 0, size, num_threads, [&values](int i) {
-      values[i] = std::sqrt(i);
-    });
-    EXPECT_THAT(values, ElementsAreArray(expected_results));
-  }
-}
-
-// Tests parallel for loop with ranges
-TEST(ParallelForWithRange, NumThreads) {
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-
-  const int size = 16;
-  std::vector<int> expected_results(size, 0);
-  for (int i = 0; i < size; ++i) {
-    expected_results[i] = std::sqrt(i);
-  }
-
-  for (int num_threads = 1; num_threads <= 8; ++num_threads) {
-    std::vector<int> values(size, 0);
-    ParallelFor(
-        &context, 0, size, num_threads, [&values](std::tuple<int, int> range) {
-          auto [start, end] = range;
-          for (int i = start; i < end; ++i) values[i] = std::sqrt(i);
-        });
-    EXPECT_THAT(values, ElementsAreArray(expected_results));
-  }
-}
-
-// Tests parallel for loop with ranges and lower bound on minimal range size
-TEST(ParallelForWithRange, MinimalSize) {
-  ContextImpl context;
-  constexpr int kNumThreads = 4;
-  constexpr int kMinBlockSize = 5;
-  context.EnsureMinimumThreads(kNumThreads);
-
-  for (int size = kMinBlockSize; size <= 25; ++size) {
-    std::atomic<bool> failed(false);
-    ParallelFor(
-        &context,
-        0,
-        size,
-        kNumThreads,
-        [&failed, kMinBlockSize](std::tuple<int, int> range) {
-          auto [start, end] = range;
-          if (end - start < kMinBlockSize) failed = true;
-        },
-        kMinBlockSize);
-    EXPECT_EQ(failed, false);
-  }
-}
-
-// Tests the parallel for loop with the thread ID interface computes the correct
-// result for various number of threads.
-TEST(ParallelForWithThreadId, NumThreads) {
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-
-  const int size = 16;
-  std::vector<int> expected_results(size, 0);
-  for (int i = 0; i < size; ++i) {
-    expected_results[i] = std::sqrt(i);
-  }
-
-  for (int num_threads = 1; num_threads <= 8; ++num_threads) {
-    std::vector<int> values(size, 0);
-    ParallelFor(
-        &context, 0, size, num_threads, [&values](int thread_id, int i) {
-          values[i] = std::sqrt(i);
-        });
-    EXPECT_THAT(values, ElementsAreArray(expected_results));
-  }
-}
-
-// Tests nested for loops do not result in a deadlock.
-TEST(ParallelFor, NestedParallelForDeadlock) {
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-
-  // Increment each element in the 2D matrix.
-  std::vector<std::vector<int>> x(3, {1, 2, 3});
-  ParallelFor(&context, 0, 3, 2, [&x, &context](int i) {
-    std::vector<int>& y = x.at(i);
-    ParallelFor(&context, 0, 3, 2, [&y](int j) { ++y.at(j); });
-  });
-
-  const std::vector<int> results = {2, 3, 4};
-  for (const std::vector<int>& value : x) {
-    EXPECT_THAT(value, ElementsAreArray(results));
-  }
-}
-
-// Tests nested for loops do not result in a deadlock for the parallel for with
-// thread ID interface.
-TEST(ParallelForWithThreadId, NestedParallelForDeadlock) {
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-
-  // Increment each element in the 2D matrix.
-  std::vector<std::vector<int>> x(3, {1, 2, 3});
-  ParallelFor(&context, 0, 3, 2, [&x, &context](int thread_id, int i) {
-    std::vector<int>& y = x.at(i);
-    ParallelFor(&context, 0, 3, 2, [&y](int thread_id, int j) { ++y.at(j); });
-  });
-
-  const std::vector<int> results = {2, 3, 4};
-  for (const std::vector<int>& value : x) {
-    EXPECT_THAT(value, ElementsAreArray(results));
-  }
-}
-
-TEST(ParallelForWithThreadId, UniqueThreadIds) {
-  // Ensure the hardware supports more than 1 thread to ensure the test will
-  // pass.
-  const int num_hardware_threads = std::thread::hardware_concurrency();
-  if (num_hardware_threads <= 1) {
-    LOG(ERROR)
-        << "Test not supported, the hardware does not support threading.";
-    return;
-  }
-
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-  // Increment each element in the 2D matrix.
-  std::vector<int> x(2, -1);
-  std::mutex mutex;
-  std::condition_variable condition;
-  int count = 0;
-  ParallelFor(&context,
-              0,
-              2,
-              2,
-              [&x, &mutex, &condition, &count](int thread_id, int i) {
-                std::unique_lock<std::mutex> lock(mutex);
-                x[i] = thread_id;
-                ++count;
-                condition.notify_all();
-                condition.wait(lock, [&]() { return count == 2; });
-              });
-
-  EXPECT_THAT(x, UnorderedElementsAreArray({0, 1}));
-}
-
-// Helper function for partition tests
-bool BruteForcePartition(
-    int* costs, int start, int end, int max_partitions, int max_cost);
-// Basic test if MaxPartitionCostIsFeasible and BruteForcePartition agree on
-// simple test-cases
-TEST(GuidedParallelFor, MaxPartitionCostIsFeasible) {
-  std::vector<int> costs, cumulative_costs, partition;
-  costs = {1, 2, 3, 5, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0};
-  cumulative_costs.resize(costs.size());
-  std::partial_sum(costs.begin(), costs.end(), cumulative_costs.begin());
-  const auto dummy_getter = [](const int v) { return v; };
-
-  // [1, 2, 3] [5], [0 ... 0, 7, 0, ... 0]
-  EXPECT_TRUE(MaxPartitionCostIsFeasible(0,
-                                         costs.size(),
-                                         3,
-                                         7,
-                                         0,
-                                         cumulative_costs.data(),
-                                         dummy_getter,
-                                         &partition));
-  EXPECT_TRUE(BruteForcePartition(costs.data(), 0, costs.size(), 3, 7));
-  // [1, 2, 3, 5, 0 ... 0, 7, 0, ... 0]
-  EXPECT_TRUE(MaxPartitionCostIsFeasible(0,
-                                         costs.size(),
-                                         3,
-                                         18,
-                                         0,
-                                         cumulative_costs.data(),
-                                         dummy_getter,
-                                         &partition));
-  EXPECT_TRUE(BruteForcePartition(costs.data(), 0, costs.size(), 3, 18));
-  // Impossible since there is item of cost 7
-  EXPECT_FALSE(MaxPartitionCostIsFeasible(0,
-                                          costs.size(),
-                                          3,
-                                          6,
-                                          0,
-                                          cumulative_costs.data(),
-                                          dummy_getter,
-                                          &partition));
-  EXPECT_FALSE(BruteForcePartition(costs.data(), 0, costs.size(), 3, 6));
-  // Impossible
-  EXPECT_FALSE(MaxPartitionCostIsFeasible(0,
-                                          costs.size(),
-                                          2,
-                                          10,
-                                          0,
-                                          cumulative_costs.data(),
-                                          dummy_getter,
-                                          &partition));
-  EXPECT_FALSE(BruteForcePartition(costs.data(), 0, costs.size(), 2, 10));
-}
-
-// Randomized tests for MaxPartitionCostIsFeasible
-TEST(GuidedParallelFor, MaxPartitionCostIsFeasibleRandomized) {
-  std::vector<int> costs, cumulative_costs, partition;
-  const auto dummy_getter = [](const int v) { return v; };
-
-  // Random tests
-  const int kNumTests = 1000;
-  const int kMaxElements = 32;
-  const int kMaxPartitions = 16;
-  const int kMaxElCost = 8;
-  std::mt19937 rng;
-  std::uniform_int_distribution<int> rng_N(1, kMaxElements);
-  std::uniform_int_distribution<int> rng_M(1, kMaxPartitions);
-  std::uniform_int_distribution<int> rng_e(0, kMaxElCost);
-  for (int t = 0; t < kNumTests; ++t) {
-    const int N = rng_N(rng);
-    const int M = rng_M(rng);
-    int total = 0;
-    costs.clear();
-    for (int i = 0; i < N; ++i) {
-      costs.push_back(rng_e(rng));
-      total += costs.back();
-    }
-
-    cumulative_costs.resize(N);
-    std::partial_sum(costs.begin(), costs.end(), cumulative_costs.begin());
-
-    std::uniform_int_distribution<int> rng_seg(0, N - 1);
-    int start = rng_seg(rng);
-    int end = rng_seg(rng);
-    if (start > end) std::swap(start, end);
-    ++end;
-
-    int first_admissible = 0;
-    for (int threshold = 1; threshold <= total; ++threshold) {
-      const bool bruteforce =
-          BruteForcePartition(costs.data(), start, end, M, threshold);
-      if (bruteforce && !first_admissible) {
-        first_admissible = threshold;
-      }
-      const bool binary_search =
-          MaxPartitionCostIsFeasible(start,
-                                     end,
-                                     M,
-                                     threshold,
-                                     start ? cumulative_costs[start - 1] : 0,
-                                     cumulative_costs.data(),
-                                     dummy_getter,
-                                     &partition);
-      EXPECT_EQ(bruteforce, binary_search);
-      EXPECT_LE(partition.size(), M + 1);
-      // check partition itself
-      if (binary_search) {
-        ASSERT_GT(partition.size(), 1);
-        EXPECT_EQ(partition.front(), start);
-        EXPECT_EQ(partition.back(), end);
-
-        const int num_partitions = partition.size() - 1;
-        EXPECT_LE(num_partitions, M);
-        for (int j = 0; j < num_partitions; ++j) {
-          int total = 0;
-          for (int k = partition[j]; k < partition[j + 1]; ++k) {
-            EXPECT_LT(k, end);
-            EXPECT_GE(k, start);
-            total += costs[k];
-          }
-          EXPECT_LE(total, threshold);
-        }
-      }
-    }
-  }
-}
-
-TEST(GuidedParallelFor, PartitionRangeForParallelFor) {
-  std::vector<int> costs, cumulative_costs, partition;
-  const auto dummy_getter = [](const int v) { return v; };
-
-  // Random tests
-  const int kNumTests = 1000;
-  const int kMaxElements = 32;
-  const int kMaxPartitions = 16;
-  const int kMaxElCost = 8;
-  std::mt19937 rng;
-  std::uniform_int_distribution<int> rng_N(1, kMaxElements);
-  std::uniform_int_distribution<int> rng_M(1, kMaxPartitions);
-  std::uniform_int_distribution<int> rng_e(0, kMaxElCost);
-  for (int t = 0; t < kNumTests; ++t) {
-    const int N = rng_N(rng);
-    const int M = rng_M(rng);
-    int total = 0;
-    costs.clear();
-    for (int i = 0; i < N; ++i) {
-      costs.push_back(rng_e(rng));
-      total += costs.back();
-    }
-
-    cumulative_costs.resize(N);
-    std::partial_sum(costs.begin(), costs.end(), cumulative_costs.begin());
-
-    std::uniform_int_distribution<int> rng_seg(0, N - 1);
-    int start = rng_seg(rng);
-    int end = rng_seg(rng);
-    if (start > end) std::swap(start, end);
-    ++end;
-
-    int first_admissible = 0;
-    for (int threshold = 1; threshold <= total; ++threshold) {
-      const bool bruteforce =
-          BruteForcePartition(costs.data(), start, end, M, threshold);
-      if (bruteforce) {
-        first_admissible = threshold;
-        break;
-      }
-    }
-    EXPECT_TRUE(first_admissible != 0 || total == 0);
-    partition = PartitionRangeForParallelFor(
-        start, end, M, cumulative_costs.data(), dummy_getter);
-    ASSERT_GT(partition.size(), 1);
-    EXPECT_EQ(partition.front(), start);
-    EXPECT_EQ(partition.back(), end);
-
-    const int num_partitions = partition.size() - 1;
-    EXPECT_LE(num_partitions, M);
-    for (int j = 0; j < num_partitions; ++j) {
-      int total = 0;
-      for (int k = partition[j]; k < partition[j + 1]; ++k) {
-        EXPECT_LT(k, end);
-        EXPECT_GE(k, start);
-        total += costs[k];
-      }
-      EXPECT_LE(total, first_admissible);
-    }
-  }
-}
-
-// Recursively try to partition range into segements of total cost
-// less than max_cost
-bool BruteForcePartition(
-    int* costs, int start, int end, int max_partitions, int max_cost) {
-  if (start == end) return true;
-  if (start < end && max_partitions == 0) return false;
-  int total_cost = 0;
-  for (int last_curr = start + 1; last_curr <= end; ++last_curr) {
-    total_cost += costs[last_curr - 1];
-    if (total_cost > max_cost) break;
-    if (BruteForcePartition(
-            costs, last_curr, end, max_partitions - 1, max_cost))
-      return true;
-  }
-  return false;
-}
-
-// Tests if guided parallel for loop computes the correct result for various
-// number of threads.
-TEST(GuidedParallelFor, NumThreads) {
-  ContextImpl context;
-  context.EnsureMinimumThreads(/*num_threads=*/2);
-
-  const int size = 16;
-  std::vector<int> expected_results(size, 0);
-  for (int i = 0; i < size; ++i) {
-    expected_results[i] = std::sqrt(i);
-  }
-
-  std::vector<int> costs, cumulative_costs;
-  for (int i = 1; i <= size; ++i) {
-    int cost = i * i;
-    costs.push_back(cost);
-    if (i == 1) {
-      cumulative_costs.push_back(cost);
-    } else {
-      cumulative_costs.push_back(cost + cumulative_costs.back());
-    }
-  }
-
-  for (int num_threads = 1; num_threads <= 8; ++num_threads) {
-    std::vector<int> values(size, 0);
-    ParallelFor(
-        &context,
-        0,
-        size,
-        num_threads,
-        [&values](int i) { values[i] = std::sqrt(i); },
-        cumulative_costs.data(),
-        [](const int v) { return v; });
-    EXPECT_THAT(values, ElementsAreArray(expected_results));
-  }
-}
-
-TEST(ParallelAssign, D2MulX) {
-  const int kVectorSize = 1024 * 1024;
-  const int kMaxNumThreads = 8;
-  const double kEpsilon = 1e-16;
-
-  const Vector D_full = Vector::Random(kVectorSize * 2);
-  const ConstVectorRef D(D_full.data() + kVectorSize, kVectorSize);
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector y_expected = D.array().square() * x.array();
-  ContextImpl context;
-  context.EnsureMinimumThreads(kMaxNumThreads);
-
-  for (int num_threads = 1; num_threads <= kMaxNumThreads; ++num_threads) {
-    Vector y_observed(kVectorSize);
-    ParallelAssign(
-        &context, num_threads, y_observed, D.array().square() * x.array());
-
-    // We might get non-bit-exact result due to different precision in scalar
-    // and vector code. For example, in x86 mode mingw might emit x87
-    // instructions for scalar code, thus making bit-exact check fail
-    EXPECT_NEAR((y_expected - y_observed).squaredNorm(),
-                0.,
-                kEpsilon * y_expected.squaredNorm());
-  }
-}
-
-TEST(ParallelAssign, SetZero) {
-  const int kVectorSize = 1024 * 1024;
-  const int kMaxNumThreads = 8;
-
-  ContextImpl context;
-  context.EnsureMinimumThreads(kMaxNumThreads);
-
-  for (int num_threads = 1; num_threads <= kMaxNumThreads; ++num_threads) {
-    Vector x = Vector::Random(kVectorSize);
-    ParallelSetZero(&context, num_threads, x);
-
-    CHECK_EQ(x.squaredNorm(), 0.);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parallel_invoke.cc b/third_party/ceres/internal/ceres/parallel_invoke.cc
deleted file mode 100644
index 0e387c5..0000000
--- a/third_party/ceres/internal/ceres/parallel_invoke.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include <algorithm>
-#include <atomic>
-#include <cmath>
-#include <condition_variable>
-#include <memory>
-#include <mutex>
-#include <tuple>
-
-#include "ceres/internal/config.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_vector_ops.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-BlockUntilFinished::BlockUntilFinished(int num_total_jobs)
-    : num_total_jobs_finished_(0), num_total_jobs_(num_total_jobs) {}
-
-void BlockUntilFinished::Finished(int num_jobs_finished) {
-  if (num_jobs_finished == 0) return;
-  std::lock_guard<std::mutex> lock(mutex_);
-  num_total_jobs_finished_ += num_jobs_finished;
-  CHECK_LE(num_total_jobs_finished_, num_total_jobs_);
-  if (num_total_jobs_finished_ == num_total_jobs_) {
-    condition_.notify_one();
-  }
-}
-
-void BlockUntilFinished::Block() {
-  std::unique_lock<std::mutex> lock(mutex_);
-  condition_.wait(
-      lock, [this]() { return num_total_jobs_finished_ == num_total_jobs_; });
-}
-
-ParallelInvokeState::ParallelInvokeState(int start,
-                                         int end,
-                                         int num_work_blocks)
-    : start(start),
-      end(end),
-      num_work_blocks(num_work_blocks),
-      base_block_size((end - start) / num_work_blocks),
-      num_base_p1_sized_blocks((end - start) % num_work_blocks),
-      block_id(0),
-      thread_id(0),
-      block_until_finished(num_work_blocks) {}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parallel_invoke.h b/third_party/ceres/internal/ceres/parallel_invoke.h
deleted file mode 100644
index 398f8f2..0000000
--- a/third_party/ceres/internal/ceres/parallel_invoke.h
+++ /dev/null
@@ -1,272 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: vitus@google.com (Michael Vitus),
-//          dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_PARALLEL_INVOKE_H_
-#define CERES_INTERNAL_PARALLEL_INVOKE_H_
-
-#include <atomic>
-#include <condition_variable>
-#include <memory>
-#include <mutex>
-#include <tuple>
-#include <type_traits>
-
-namespace ceres::internal {
-
-// InvokeWithThreadId handles passing thread_id to the function
-template <typename F, typename... Args>
-void InvokeWithThreadId(int thread_id, F&& function, Args&&... args) {
-  constexpr bool kPassThreadId = std::is_invocable_v<F, int, Args...>;
-
-  if constexpr (kPassThreadId) {
-    function(thread_id, std::forward<Args>(args)...);
-  } else {
-    function(std::forward<Args>(args)...);
-  }
-}
-
-// InvokeOnSegment either runs a loop over segment indices or passes it to the
-// function
-template <typename F>
-void InvokeOnSegment(int thread_id, std::tuple<int, int> range, F&& function) {
-  constexpr bool kExplicitLoop =
-      std::is_invocable_v<F, int> || std::is_invocable_v<F, int, int>;
-
-  if constexpr (kExplicitLoop) {
-    const auto [start, end] = range;
-    for (int i = start; i != end; ++i) {
-      InvokeWithThreadId(thread_id, std::forward<F>(function), i);
-    }
-  } else {
-    InvokeWithThreadId(thread_id, std::forward<F>(function), range);
-  }
-}
-
-// This class creates a thread safe barrier which will block until a
-// pre-specified number of threads call Finished.  This allows us to block the
-// main thread until all the parallel threads are finished processing all the
-// work.
-class BlockUntilFinished {
- public:
-  explicit BlockUntilFinished(int num_total_jobs);
-
-  // Increment the number of jobs that have been processed by the number of
-  // jobs processed by caller and signal the blocking thread if all jobs
-  // have finished.
-  void Finished(int num_jobs_finished);
-
-  // Block until receiving confirmation of all jobs being finished.
-  void Block();
-
- private:
-  std::mutex mutex_;
-  std::condition_variable condition_;
-  int num_total_jobs_finished_;
-  const int num_total_jobs_;
-};
-
-// Shared state between the parallel tasks. Each thread will use this
-// information to get the next block of work to be performed.
-struct ParallelInvokeState {
-  // The entire range [start, end) is split into num_work_blocks contiguous
-  // disjoint intervals (blocks), which are as equal as possible given
-  // total index count and requested number of  blocks.
-  //
-  // Those num_work_blocks blocks are then processed in parallel.
-  //
-  // Total number of integer indices in interval [start, end) is
-  // end - start, and when splitting them into num_work_blocks blocks
-  // we can either
-  //  - Split into equal blocks when (end - start) is divisible by
-  //    num_work_blocks
-  //  - Split into blocks with size difference at most 1:
-  //     - Size of the smallest block(s) is (end - start) / num_work_blocks
-  //     - (end - start) % num_work_blocks will need to be 1 index larger
-  //
-  // Note that this splitting is optimal in the sense of maximal difference
-  // between block sizes, since splitting into equal blocks is possible
-  // if and only if number of indices is divisible by number of blocks.
-  ParallelInvokeState(int start, int end, int num_work_blocks);
-
-  // The start and end index of the for loop.
-  const int start;
-  const int end;
-  // The number of blocks that need to be processed.
-  const int num_work_blocks;
-  // Size of the smallest block
-  const int base_block_size;
-  // Number of blocks of size base_block_size + 1
-  const int num_base_p1_sized_blocks;
-
-  // The next block of work to be assigned to a worker.  The parallel for loop
-  // range is split into num_work_blocks blocks of work, with a single block of
-  // work being of size
-  //  - base_block_size + 1 for the first num_base_p1_sized_blocks blocks
-  //  - base_block_size for the rest of the blocks
-  //  blocks of indices are contiguous and disjoint
-  std::atomic<int> block_id;
-
-  // Provides a unique thread ID among all active threads
-  // We do not schedule more than num_threads threads via thread pool
-  // and caller thread might steal one ID
-  std::atomic<int> thread_id;
-
-  // Used to signal when all the work has been completed.  Thread safe.
-  BlockUntilFinished block_until_finished;
-};
-
-// This implementation uses a fixed size max worker pool with a shared task
-// queue. The problem of executing the function for the interval of [start, end)
-// is broken up into at most num_threads * kWorkBlocksPerThread blocks (each of
-// size at least min_block_size) and added to the thread pool. To avoid
-// deadlocks, the calling thread is allowed to steal work from the worker pool.
-// This is implemented via a shared state between the tasks. In order for
-// the calling thread or thread pool to get a block of work, it will query the
-// shared state for the next block of work to be done. If there is nothing left,
-// it will return. We will exit the ParallelFor call when all of the work has
-// been done, not when all of the tasks have been popped off the task queue.
-//
-// A unique thread ID among all active tasks will be acquired once for each
-// block of work.  This avoids the significant performance penalty for acquiring
-// it on every iteration of the for loop. The thread ID is guaranteed to be in
-// [0, num_threads).
-//
-// A performance analysis has shown this implementation is on par with OpenMP
-// and TBB.
-template <typename F>
-void ParallelInvoke(ContextImpl* context,
-                    int start,
-                    int end,
-                    int num_threads,
-                    F&& function,
-                    int min_block_size) {
-  CHECK(context != nullptr);
-
-  // Maximal number of work items scheduled for a single thread
-  //  - Lower number of work items results in larger runtimes on unequal tasks
-  //  - Higher number of work items results in larger losses for synchronization
-  constexpr int kWorkBlocksPerThread = 4;
-
-  // Interval [start, end) is being split into
-  // num_threads * kWorkBlocksPerThread contiguous disjoint blocks.
-  //
-  // In order to avoid creating empty blocks of work, we need to limit
-  // number of work blocks by a total number of indices.
-  const int num_work_blocks = std::min((end - start) / min_block_size,
-                                       num_threads * kWorkBlocksPerThread);
-
-  // We use a std::shared_ptr because the main thread can finish all
-  // the work before the tasks have been popped off the queue.  So the
-  // shared state needs to exist for the duration of all the tasks.
-  auto shared_state =
-      std::make_shared<ParallelInvokeState>(start, end, num_work_blocks);
-
-  // A function which tries to schedule another task in the thread pool and
-  // perform several chunks of work. Function expects itself as the argument in
-  // order to schedule next task in the thread pool.
-  auto task = [context, shared_state, num_threads, &function](auto& task_copy) {
-    int num_jobs_finished = 0;
-    const int thread_id = shared_state->thread_id.fetch_add(1);
-    // In order to avoid dead-locks in nested parallel for loops, task() will be
-    // invoked num_threads + 1 times:
-    //  - num_threads times via enqueueing task into thread pool
-    //  - one more time in the main thread
-    //  Tasks enqueued to thread pool might take some time before execution, and
-    //  the last task being executed will be terminated here in order to avoid
-    //  having more than num_threads active threads
-    if (thread_id >= num_threads) return;
-    const int num_work_blocks = shared_state->num_work_blocks;
-    if (thread_id + 1 < num_threads &&
-        shared_state->block_id < num_work_blocks) {
-      // Add another thread to the thread pool.
-      // Note we are taking the task as value so the copy of shared_state shared
-      // pointer (captured by value at declaration of task lambda-function) is
-      // copied and the ref count is increased. This is to prevent it from being
-      // deleted when the main thread finishes all the work and exits before the
-      // threads finish.
-      context->thread_pool.AddTask([task_copy]() { task_copy(task_copy); });
-    }
-
-    const int start = shared_state->start;
-    const int base_block_size = shared_state->base_block_size;
-    const int num_base_p1_sized_blocks = shared_state->num_base_p1_sized_blocks;
-
-    while (true) {
-      // Get the next available chunk of work to be performed. If there is no
-      // work, return.
-      int block_id = shared_state->block_id.fetch_add(1);
-      if (block_id >= num_work_blocks) {
-        break;
-      }
-      ++num_jobs_finished;
-
-      // For-loop interval [start, end) was split into num_work_blocks,
-      // with num_base_p1_sized_blocks of size base_block_size + 1 and remaining
-      // num_work_blocks - num_base_p1_sized_blocks of size base_block_size
-      //
-      // Then, start index of the block #block_id is given by a total
-      // length of preceeding blocks:
-      //  * Total length of preceeding blocks of size base_block_size + 1:
-      //     min(block_id, num_base_p1_sized_blocks) * (base_block_size + 1)
-      //
-      //  * Total length of preceeding blocks of size base_block_size:
-      //     (block_id - min(block_id, num_base_p1_sized_blocks)) *
-      //     base_block_size
-      //
-      // Simplifying sum of those quantities yields a following
-      // expression for start index of the block #block_id
-      const int curr_start = start + block_id * base_block_size +
-                             std::min(block_id, num_base_p1_sized_blocks);
-      // First num_base_p1_sized_blocks have size base_block_size + 1
-      //
-      // Note that it is guaranteed that all blocks are within
-      // [start, end) interval
-      const int curr_end = curr_start + base_block_size +
-                           (block_id < num_base_p1_sized_blocks ? 1 : 0);
-      // Perform each task in current block
-      const auto range = std::make_tuple(curr_start, curr_end);
-      InvokeOnSegment(thread_id, range, function);
-    }
-    shared_state->block_until_finished.Finished(num_jobs_finished);
-  };
-
-  // Start scheduling threads and doing work. We might end up with less threads
-  // scheduled than expected, if scheduling overhead is larger than the amount
-  // of work to be done.
-  task(task);
-
-  // Wait until all tasks have finished.
-  shared_state->block_until_finished.Block();
-}
-
-}  // namespace ceres::internal
-
-#endif
diff --git a/third_party/ceres/internal/ceres/parallel_utils.cc b/third_party/ceres/internal/ceres/parallel_utils.cc
deleted file mode 100644
index 2e6ee13..0000000
--- a/third_party/ceres/internal/ceres/parallel_utils.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-
-#include "ceres/parallel_utils.h"
-
-namespace ceres::internal {
-
-void LinearIndexToUpperTriangularIndex(int k, int n, int* i, int* j) {
-  // This works by unfolding a rectangle into a triangle.
-  // Say n is even. 4 is a nice even number. The 10 i,j pairs that we
-  // want to produce are:
-  // 0,0 0,1 0,2 0,3
-  //     1,1 1,2 1,3
-  //         2,2 2,3
-  //             3,3
-  // This triangle can be folded into a 5x2 rectangle:
-  // 3,3 0,0 0,1 0,2 0,3
-  // 2,2 2,3 1,1 1,2 1,3
-
-  // If N is odd, say 5, then the 15 i,j pairs are:
-  // 0,0 0,1 0,2 0,3 0,4
-  //     1,1 1,2 1,3 1,4
-  //         2,2 2,3 2,3
-  //             3,3 3,4
-  //                 4,4
-  // which folds to a 5x3 rectangle:
-  // 0,0 0,1 0,2 0,3 0,4
-  // 4,4 1,1 1,2 1,3 1,4
-  // 3,3 3,4 2,2 2,3 2,4
-
-  // All this function does is map the linear iteration position to a
-  // location in the rectangle and work out the appropriate (i, j) for that
-  // location.
-  if (n & 1) {
-    // Odd n. The tip of the triangle is on row 1.
-    int w = n;  // Width of the rectangle to unfold
-    int i0 = k / w;
-    int j0 = k % w;
-    if (j0 >= i0) {
-      *i = i0;
-      *j = j0;
-    } else {
-      *i = n - i0;
-      *j = *i + j0;
-    }
-  } else {
-    // Even n. The tip of the triangle is on row 0, making it one wider.
-    int w = n + 1;
-    int i0 = k / w;
-    int j0 = k % w;
-    if (j0 > i0) {
-      *i = i0;
-      *j = j0 - 1;
-    } else {
-      *i = n - 1 - i0;
-      *j = *i + j0;
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parallel_utils.h b/third_party/ceres/internal/ceres/parallel_utils.h
deleted file mode 100644
index 2a7925f..0000000
--- a/third_party/ceres/internal/ceres/parallel_utils.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-
-#ifndef CERES_INTERNAL_PARALLEL_UTILS_H_
-#define CERES_INTERNAL_PARALLEL_UTILS_H_
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Converts a linear iteration order into a triangular iteration order.
-// Suppose you have nested loops that look like
-// for (int i = 0; i < n; i++) {
-//   for (int j = i; j < n; j++) {
-//     ... use i and j
-//   }
-// }
-// Naively using ParallelFor to parallelise those loops might look like
-// ParallelFor(..., 0, n * n, num_threads,
-//   [](int thread_id, int k) {
-//     int i = k / n, j = k % n;
-//     if (j < i) return;
-//     ...
-//    });
-// but these empty work items can lead to very unbalanced threading. Instead,
-// do this:
-// int actual_work_items = (n * (n + 1)) / 2;
-// ParallelFor(..., 0, actual_work_items, num_threads,
-//   [](int thread_id, int k) {
-//     int i, j;
-//     UnfoldIteration(k, n, &i, &j);
-//     ...
-//    });
-// which in each iteration will produce i and j satisfying
-// 0 <= i <= j < n
-CERES_NO_EXPORT void LinearIndexToUpperTriangularIndex(int k,
-                                                       int n,
-                                                       int* i,
-                                                       int* j);
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_PARALLEL_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/parallel_utils_test.cc b/third_party/ceres/internal/ceres/parallel_utils_test.cc
deleted file mode 100644
index bea6f0d..0000000
--- a/third_party/ceres/internal/ceres/parallel_utils_test.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wjr@google.com (William Rucklidge)
-
-#include "ceres/parallel_utils.h"
-
-#include "ceres/internal/config.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Tests that unfolding linear iterations to triangular iterations produces
-// indices that are in-range and unique.
-TEST(LinearIndexToUpperTriangularIndexTest, UniqueAndValid) {
-  for (int n = 0; n < 100; n++) {
-    std::set<std::pair<int, int>> seen_pairs;
-    int actual_work_items = (n * (n + 1)) / 2;
-    for (int k = 0; k < actual_work_items; k++) {
-      int i, j;
-      LinearIndexToUpperTriangularIndex(k, n, &i, &j);
-      EXPECT_GE(i, 0);
-      EXPECT_LT(i, n);
-      EXPECT_GE(j, i);
-      EXPECT_LT(j, n);
-      seen_pairs.insert(std::make_pair(i, j));
-    }
-    EXPECT_EQ(actual_work_items, seen_pairs.size());
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parallel_vector_operations_benchmark.cc b/third_party/ceres/internal/ceres/parallel_vector_operations_benchmark.cc
deleted file mode 100644
index 8b55def..0000000
--- a/third_party/ceres/internal/ceres/parallel_vector_operations_benchmark.cc
+++ /dev/null
@@ -1,326 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-#include <algorithm>
-
-#include "benchmark/benchmark.h"
-#include "ceres/eigen_vector_ops.h"
-#include "ceres/parallel_for.h"
-
-namespace ceres::internal {
-// Older versions of benchmark library (for example, one shipped with
-// ubuntu 20.04) do not support range generation and range products
-#define VECTOR_SIZES(num_threads)    \
-      Args({1 << 7, num_threads})    \
-      ->Args({1 << 8, num_threads})  \
-      ->Args({1 << 9, num_threads})  \
-      ->Args({1 << 10, num_threads}) \
-      ->Args({1 << 11, num_threads}) \
-      ->Args({1 << 12, num_threads}) \
-      ->Args({1 << 13, num_threads}) \
-      ->Args({1 << 14, num_threads}) \
-      ->Args({1 << 15, num_threads}) \
-      ->Args({1 << 16, num_threads}) \
-      ->Args({1 << 17, num_threads}) \
-      ->Args({1 << 18, num_threads}) \
-      ->Args({1 << 19, num_threads}) \
-      ->Args({1 << 20, num_threads}) \
-      ->Args({1 << 21, num_threads}) \
-      ->Args({1 << 22, num_threads}) \
-      ->Args({1 << 23, num_threads})
-
-#define VECTOR_SIZE_THREADS \
-  VECTOR_SIZES(1)           \
-      ->VECTOR_SIZES(2)     \
-      ->VECTOR_SIZES(4)     \
-      ->VECTOR_SIZES(8)     \
-      ->VECTOR_SIZES(16)
-
-static void SetZero(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  Vector x = Vector::Random(kVectorSize);
-  for (auto _ : state) {
-    x.setZero();
-  }
-  CHECK_EQ(x.squaredNorm(), 0.);
-}
-BENCHMARK(SetZero)->VECTOR_SIZES(1);
-
-static void SetZeroParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x = Vector::Random(kVectorSize);
-  for (auto _ : state) {
-    ParallelSetZero(&context, num_threads, x);
-  }
-  CHECK_EQ(x.squaredNorm(), 0.);
-}
-BENCHMARK(SetZeroParallel)->VECTOR_SIZE_THREADS;
-
-static void Negate(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  Vector x = Vector::Random(kVectorSize).normalized();
-  const Vector x_init = x;
-
-  for (auto _ : state) {
-    x = -x;
-  }
-  CHECK((x - x_init).squaredNorm() == 0. || (x + x_init).squaredNorm() == 0);
-}
-BENCHMARK(Negate)->VECTOR_SIZES(1);
-
-static void NegateParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x = Vector::Random(kVectorSize).normalized();
-  const Vector x_init = x;
-
-  for (auto _ : state) {
-    ParallelAssign(&context, num_threads, x, -x);
-  }
-  CHECK((x - x_init).squaredNorm() == 0. || (x + x_init).squaredNorm() == 0);
-}
-BENCHMARK(NegateParallel)->VECTOR_SIZE_THREADS;
-
-static void Assign(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  Vector x = Vector::Random(kVectorSize);
-  Vector y = Vector(kVectorSize);
-  for (auto _ : state) {
-    y.block(0, 0, kVectorSize, 1) = x.block(0, 0, kVectorSize, 1);
-  }
-  CHECK_EQ((y - x).squaredNorm(), 0.);
-}
-BENCHMARK(Assign)->VECTOR_SIZES(1);
-
-static void AssignParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x = Vector::Random(kVectorSize);
-  Vector y = Vector(kVectorSize);
-
-  for (auto _ : state) {
-    ParallelAssign(&context, num_threads, y, x);
-  }
-  CHECK_EQ((y - x).squaredNorm(), 0.);
-}
-BENCHMARK(AssignParallel)->VECTOR_SIZE_THREADS;
-
-static void D2X(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector D = Vector::Random(kVectorSize);
-  Vector y = Vector::Zero(kVectorSize);
-  for (auto _ : state) {
-    y = D.array().square() * x.array();
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-BENCHMARK(D2X)->VECTOR_SIZES(1);
-
-static void D2XParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector D = Vector::Random(kVectorSize);
-  Vector y = Vector(kVectorSize);
-
-  for (auto _ : state) {
-    ParallelAssign(&context, num_threads, y, D.array().square() * x.array());
-  }
-  CHECK_GT(y.squaredNorm(), 0.);
-}
-BENCHMARK(D2XParallel)->VECTOR_SIZE_THREADS;
-
-static void DivideSqrt(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  Vector diagonal = Vector::Random(kVectorSize).array().abs();
-  const double radius = 0.5;
-  for (auto _ : state) {
-    diagonal = (diagonal / radius).array().sqrt();
-  }
-  CHECK_GT(diagonal.squaredNorm(), 0.);
-}
-BENCHMARK(DivideSqrt)->VECTOR_SIZES(1);
-
-static void DivideSqrtParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector diagonal = Vector::Random(kVectorSize).array().abs();
-  const double radius = 0.5;
-  for (auto _ : state) {
-    ParallelAssign(
-        &context, num_threads, diagonal, (diagonal / radius).cwiseSqrt());
-  }
-  CHECK_GT(diagonal.squaredNorm(), 0.);
-}
-BENCHMARK(DivideSqrtParallel)->VECTOR_SIZE_THREADS;
-
-static void Clamp(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  Vector diagonal = Vector::Random(kVectorSize);
-  const double min = -0.5;
-  const double max = 0.5;
-  for (auto _ : state) {
-    for (int i = 0; i < kVectorSize; ++i) {
-      diagonal[i] = std::min(std::max(diagonal[i], min), max);
-    }
-  }
-  CHECK_LE(diagonal.maxCoeff(), 0.5);
-  CHECK_GE(diagonal.minCoeff(), -0.5);
-}
-BENCHMARK(Clamp)->VECTOR_SIZES(1);
-
-static void ClampParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector diagonal = Vector::Random(kVectorSize);
-  const double min = -0.5;
-  const double max = 0.5;
-  for (auto _ : state) {
-    ParallelAssign(
-        &context, num_threads, diagonal, diagonal.array().max(min).min(max));
-  }
-  CHECK_LE(diagonal.maxCoeff(), 0.5);
-  CHECK_GE(diagonal.minCoeff(), -0.5);
-}
-BENCHMARK(ClampParallel)->VECTOR_SIZE_THREADS;
-
-static void Norm(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const Vector x = Vector::Random(kVectorSize);
-
-  double total = 0.;
-  for (auto _ : state) {
-    total += x.norm();
-  }
-  CHECK_GT(total, 0.);
-}
-BENCHMARK(Norm)->VECTOR_SIZES(1);
-
-static void NormParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  const Vector x = Vector::Random(kVectorSize);
-
-  double total = 0.;
-  for (auto _ : state) {
-    total += Norm(x, &context, num_threads);
-  }
-  CHECK_GT(total, 0.);
-}
-BENCHMARK(NormParallel)->VECTOR_SIZE_THREADS;
-
-static void Dot(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector y = Vector::Random(kVectorSize);
-
-  double total = 0.;
-  for (auto _ : state) {
-    total += x.dot(y);
-  }
-  CHECK_NE(total, 0.);
-}
-BENCHMARK(Dot)->VECTOR_SIZES(1);
-
-static void DotParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector y = Vector::Random(kVectorSize);
-
-  double total = 0.;
-  for (auto _ : state) {
-    total += Dot(x, y, &context, num_threads);
-  }
-  CHECK_NE(total, 0.);
-}
-BENCHMARK(DotParallel)->VECTOR_SIZE_THREADS;
-
-static void Axpby(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector y = Vector::Random(kVectorSize);
-  Vector z = Vector::Zero(kVectorSize);
-  const double a = 3.1415;
-  const double b = 1.2345;
-
-  for (auto _ : state) {
-    z = a * x + b * y;
-  }
-  CHECK_GT(z.squaredNorm(), 0.);
-}
-BENCHMARK(Axpby)->VECTOR_SIZES(1);
-
-static void AxpbyParallel(benchmark::State& state) {
-  const int kVectorSize = static_cast<int>(state.range(0));
-  const int num_threads = static_cast<int>(state.range(1));
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  const Vector x = Vector::Random(kVectorSize);
-  const Vector y = Vector::Random(kVectorSize);
-  Vector z = Vector::Zero(kVectorSize);
-  const double a = 3.1415;
-  const double b = 1.2345;
-
-  for (auto _ : state) {
-    Axpby(a, x, b, y, z, &context, num_threads);
-  }
-  CHECK_GT(z.squaredNorm(), 0.);
-}
-BENCHMARK(AxpbyParallel)->VECTOR_SIZE_THREADS;
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/parallel_vector_ops.cc b/third_party/ceres/internal/ceres/parallel_vector_ops.cc
deleted file mode 100644
index 9ebce29..0000000
--- a/third_party/ceres/internal/ceres/parallel_vector_ops.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-#include "ceres/parallel_vector_ops.h"
-
-#include <algorithm>
-#include <tuple>
-
-#include "ceres/context_impl.h"
-#include "ceres/parallel_for.h"
-
-namespace ceres::internal {
-void ParallelSetZero(ContextImpl* context,
-                     int num_threads,
-                     double* values,
-                     int num_values) {
-  ParallelFor(
-      context,
-      0,
-      num_values,
-      num_threads,
-      [values](std::tuple<int, int> range) {
-        auto [start, end] = range;
-        std::fill(values + start, values + end, 0.);
-      },
-      kMinBlockSizeParallelVectorOps);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parallel_vector_ops.h b/third_party/ceres/internal/ceres/parallel_vector_ops.h
deleted file mode 100644
index 812950a..0000000
--- a/third_party/ceres/internal/ceres/parallel_vector_ops.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: vitus@google.com (Michael Vitus),
-//          dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_PARALLEL_VECTOR_OPS_H_
-#define CERES_INTERNAL_PARALLEL_VECTOR_OPS_H_
-
-#include <mutex>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/parallel_for.h"
-
-namespace ceres::internal {
-
-// Lower bound on block size for parallel vector operations.
-// Operations with vectors of less than kMinBlockSizeParallelVectorOps elements
-// will be executed in a single thread.
-constexpr int kMinBlockSizeParallelVectorOps = 1 << 16;
-// Evaluate vector expression in parallel
-// Assuming LhsExpression and RhsExpression are some sort of column-vector
-// expression, assignment lhs = rhs is eavluated over a set of contiguous blocks
-// in parallel. This is expected to work well in the case of vector-based
-// expressions (since they typically do not result into temporaries). This
-// method expects lhs to be size-compatible with rhs
-template <typename LhsExpression, typename RhsExpression>
-void ParallelAssign(ContextImpl* context,
-                    int num_threads,
-                    LhsExpression& lhs,
-                    const RhsExpression& rhs) {
-  static_assert(LhsExpression::ColsAtCompileTime == 1);
-  static_assert(RhsExpression::ColsAtCompileTime == 1);
-  CHECK_EQ(lhs.rows(), rhs.rows());
-  const int num_rows = lhs.rows();
-  ParallelFor(
-      context,
-      0,
-      num_rows,
-      num_threads,
-      [&lhs, &rhs](const std::tuple<int, int>& range) {
-        auto [start, end] = range;
-        lhs.segment(start, end - start) = rhs.segment(start, end - start);
-      },
-      kMinBlockSizeParallelVectorOps);
-}
-
-// Set vector to zero using num_threads
-template <typename VectorType>
-void ParallelSetZero(ContextImpl* context,
-                     int num_threads,
-                     VectorType& vector) {
-  ParallelSetZero(context, num_threads, vector.data(), vector.rows());
-}
-void ParallelSetZero(ContextImpl* context,
-                     int num_threads,
-                     double* values,
-                     int num_values);
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_PARALLEL_FOR_H_
diff --git a/third_party/ceres/internal/ceres/parameter_block.h b/third_party/ceres/internal/ceres/parameter_block.h
deleted file mode 100644
index 925d1c4..0000000
--- a/third_party/ceres/internal/ceres/parameter_block.h
+++ /dev/null
@@ -1,388 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_PARAMETER_BLOCK_H_
-#define CERES_INTERNAL_PARAMETER_BLOCK_H_
-
-#include <algorithm>
-#include <cstdint>
-#include <cstdlib>
-#include <limits>
-#include <memory>
-#include <string>
-#include <unordered_set>
-
-#include "ceres/array_utils.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/manifold.h"
-#include "ceres/stringprintf.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-class ProblemImpl;
-class ResidualBlock;
-
-// The parameter block encodes the location of the user's original value, and
-// also the "current state" of the parameter. The evaluator uses whatever is in
-// the current state of the parameter when evaluating. This is inlined since the
-// methods are performance sensitive.
-//
-// The class is not thread-safe, unless only const methods are called. The
-// parameter block may also hold a pointer to a manifold; the parameter block
-// does not take ownership of this pointer, so the user is responsible for the
-// proper disposal of the manifold.
-class CERES_NO_EXPORT ParameterBlock {
- public:
-  using ResidualBlockSet = std::unordered_set<ResidualBlock*>;
-
-  // Create a parameter block with the user state, size, and index specified.
-  // The size is the size of the parameter block and the index is the position
-  // of the parameter block inside a Program (if any).
-  ParameterBlock(double* user_state, int size, int index)
-      : user_state_(user_state),
-        size_(size),
-        state_(user_state),
-        index_(index) {}
-
-  ParameterBlock(double* user_state, int size, int index, Manifold* manifold)
-      : user_state_(user_state),
-        size_(size),
-        state_(user_state),
-        index_(index) {
-    if (manifold != nullptr) {
-      SetManifold(manifold);
-    }
-  }
-
-  // The size of the parameter block.
-  int Size() const { return size_; }
-
-  // Manipulate the parameter state.
-  bool SetState(const double* x) {
-    CHECK(x != nullptr) << "Tried to set the state of constant parameter "
-                        << "with user location " << user_state_;
-    CHECK(!IsConstant()) << "Tried to set the state of constant parameter "
-                         << "with user location " << user_state_;
-
-    state_ = x;
-    return UpdatePlusJacobian();
-  }
-
-  // Copy the current parameter state out to x. This is "GetState()" rather than
-  // simply "state()" since it is actively copying the data into the passed
-  // pointer.
-  void GetState(double* x) const {
-    if (x != state_) {
-      std::copy(state_, state_ + size_, x);
-    }
-  }
-
-  // Direct pointers to the current state.
-  const double* state() const { return state_; }
-  const double* user_state() const { return user_state_; }
-  double* mutable_user_state() { return user_state_; }
-  const Manifold* manifold() const { return manifold_; }
-  Manifold* mutable_manifold() { return manifold_; }
-
-  // Set this parameter block to vary or not.
-  void SetConstant() { is_set_constant_ = true; }
-  void SetVarying() { is_set_constant_ = false; }
-  bool IsConstant() const { return (is_set_constant_ || TangentSize() == 0); }
-
-  double UpperBound(int index) const {
-    return (upper_bounds_ ? upper_bounds_[index]
-                          : std::numeric_limits<double>::max());
-  }
-
-  double LowerBound(int index) const {
-    return (lower_bounds_ ? lower_bounds_[index]
-                          : -std::numeric_limits<double>::max());
-  }
-
-  bool IsUpperBounded() const { return (upper_bounds_ == nullptr); }
-  bool IsLowerBounded() const { return (lower_bounds_ == nullptr); }
-
-  // This parameter block's index in an array.
-  int index() const { return index_; }
-  void set_index(int index) { index_ = index; }
-
-  // This parameter offset inside a larger state vector.
-  int state_offset() const { return state_offset_; }
-  void set_state_offset(int state_offset) { state_offset_ = state_offset; }
-
-  // This parameter offset inside a larger delta vector.
-  int delta_offset() const { return delta_offset_; }
-  void set_delta_offset(int delta_offset) { delta_offset_ = delta_offset; }
-
-  // Methods relating to the parameter block's manifold.
-
-  // The local to global jacobian. Returns nullptr if there is no manifold for
-  // this parameter block. The returned matrix is row-major and has Size() rows
-  // and TangentSize() columns.
-  const double* PlusJacobian() const { return plus_jacobian_.get(); }
-
-  int TangentSize() const {
-    return (manifold_ == nullptr) ? size_ : manifold_->TangentSize();
-  }
-
-  // Set the manifold. The parameter block does not take ownership of
-  // the manifold.
-  void SetManifold(Manifold* new_manifold) {
-    // Nothing to do if the new manifold is the same as the old
-    // manifold.
-    if (new_manifold == manifold_) {
-      return;
-    }
-
-    if (new_manifold == nullptr) {
-      manifold_ = nullptr;
-      plus_jacobian_ = nullptr;
-      return;
-    }
-
-    CHECK_EQ(new_manifold->AmbientSize(), size_)
-        << "The parameter block has size = " << size_
-        << " while the manifold has ambient size = "
-        << new_manifold->AmbientSize();
-
-    CHECK_GE(new_manifold->TangentSize(), 0)
-        << "Invalid Manifold. Manifolds must have a "
-        << "non-negative dimensional tangent space.";
-
-    manifold_ = new_manifold;
-    plus_jacobian_ = std::make_unique<double[]>(manifold_->AmbientSize() *
-                                                manifold_->TangentSize());
-    CHECK(UpdatePlusJacobian())
-        << "Manifold::PlusJacobian computation failed for x: "
-        << ConstVectorRef(state_, Size()).transpose();
-  }
-
-  void SetUpperBound(int index, double upper_bound) {
-    CHECK_LT(index, size_);
-
-    if (upper_bound >= std::numeric_limits<double>::max() && !upper_bounds_) {
-      return;
-    }
-
-    if (!upper_bounds_) {
-      upper_bounds_ = std::make_unique<double[]>(size_);
-      std::fill(upper_bounds_.get(),
-                upper_bounds_.get() + size_,
-                std::numeric_limits<double>::max());
-    }
-
-    upper_bounds_[index] = upper_bound;
-  }
-
-  void SetLowerBound(int index, double lower_bound) {
-    CHECK_LT(index, size_);
-
-    if (lower_bound <= -std::numeric_limits<double>::max() && !lower_bounds_) {
-      return;
-    }
-
-    if (!lower_bounds_) {
-      lower_bounds_ = std::make_unique<double[]>(size_);
-      std::fill(lower_bounds_.get(),
-                lower_bounds_.get() + size_,
-                -std::numeric_limits<double>::max());
-    }
-
-    lower_bounds_[index] = lower_bound;
-  }
-
-  // Generalization of the addition operation. This is the same as
-  // Manifold::Plus() followed by projection onto the
-  // hyper cube implied by the bounds constraints.
-  bool Plus(const double* x, const double* delta, double* x_plus_delta) {
-    if (manifold_ != nullptr) {
-      if (!manifold_->Plus(x, delta, x_plus_delta)) {
-        return false;
-      }
-    } else {
-      VectorRef(x_plus_delta, size_) =
-          ConstVectorRef(x, size_) + ConstVectorRef(delta, size_);
-    }
-
-    // Project onto the box constraints.
-    if (lower_bounds_.get() != nullptr) {
-      for (int i = 0; i < size_; ++i) {
-        x_plus_delta[i] = std::max(x_plus_delta[i], lower_bounds_[i]);
-      }
-    }
-
-    if (upper_bounds_.get() != nullptr) {
-      for (int i = 0; i < size_; ++i) {
-        x_plus_delta[i] = std::min(x_plus_delta[i], upper_bounds_[i]);
-      }
-    }
-
-    return true;
-  }
-
-  std::string ToString() const {
-    return StringPrintf(
-        "{ this=%p, user_state=%p, state=%p, size=%d, "
-        "constant=%d, index=%d, state_offset=%d, "
-        "delta_offset=%d }",
-        this,
-        user_state_,
-        state_,
-        size_,
-        is_set_constant_,
-        index_,
-        state_offset_,
-        delta_offset_);
-  }
-
-  void EnableResidualBlockDependencies() {
-    CHECK(residual_blocks_.get() == nullptr)
-        << "Ceres bug: There is already a residual block collection "
-        << "for parameter block: " << ToString();
-    residual_blocks_ = std::make_unique<ResidualBlockSet>();
-  }
-
-  void AddResidualBlock(ResidualBlock* residual_block) {
-    CHECK(residual_blocks_.get() != nullptr)
-        << "Ceres bug: The residual block collection is null for parameter "
-        << "block: " << ToString();
-    residual_blocks_->insert(residual_block);
-  }
-
-  void RemoveResidualBlock(ResidualBlock* residual_block) {
-    CHECK(residual_blocks_.get() != nullptr)
-        << "Ceres bug: The residual block collection is null for parameter "
-        << "block: " << ToString();
-    CHECK(residual_blocks_->find(residual_block) != residual_blocks_->end())
-        << "Ceres bug: Missing residual for parameter block: " << ToString();
-    residual_blocks_->erase(residual_block);
-  }
-
-  // This is only intended for iterating; perhaps this should only expose
-  // .begin() and .end().
-  ResidualBlockSet* mutable_residual_blocks() { return residual_blocks_.get(); }
-
-  double LowerBoundForParameter(int index) const {
-    if (lower_bounds_.get() == nullptr) {
-      return -std::numeric_limits<double>::max();
-    } else {
-      return lower_bounds_[index];
-    }
-  }
-
-  double UpperBoundForParameter(int index) const {
-    if (upper_bounds_.get() == nullptr) {
-      return std::numeric_limits<double>::max();
-    } else {
-      return upper_bounds_[index];
-    }
-  }
-
- private:
-  bool UpdatePlusJacobian() {
-    if (manifold_ == nullptr) {
-      return true;
-    }
-
-    // Update the Plus Jacobian. In some cases this is
-    // wasted effort; if this is a bottleneck, we will find a solution
-    // at that time.
-    const int jacobian_size = Size() * TangentSize();
-    InvalidateArray(jacobian_size, plus_jacobian_.get());
-    if (!manifold_->PlusJacobian(state_, plus_jacobian_.get())) {
-      LOG(WARNING) << "Manifold::PlusJacobian computation failed"
-                      "for x: "
-                   << ConstVectorRef(state_, Size()).transpose();
-      return false;
-    }
-
-    if (!IsArrayValid(jacobian_size, plus_jacobian_.get())) {
-      LOG(WARNING) << "Manifold::PlusJacobian computation returned "
-                   << "an invalid matrix for x: "
-                   << ConstVectorRef(state_, Size()).transpose()
-                   << "\n Jacobian matrix : "
-                   << ConstMatrixRef(
-                          plus_jacobian_.get(), Size(), TangentSize());
-      return false;
-    }
-    return true;
-  }
-
-  double* user_state_ = nullptr;
-  int size_ = -1;
-  bool is_set_constant_ = false;
-  Manifold* manifold_ = nullptr;
-
-  // The "state" of the parameter. These fields are only needed while the
-  // solver is running. While at first glance using mutable is a bad idea, this
-  // ends up simplifying the internals of Ceres enough to justify the potential
-  // pitfalls of using "mutable."
-  mutable const double* state_ = nullptr;
-  mutable std::unique_ptr<double[]> plus_jacobian_;
-
-  // The index of the parameter. This is used by various other parts of Ceres to
-  // permit switching from a ParameterBlock* to an index in another array.
-  int index_ = -1;
-
-  // The offset of this parameter block inside a larger state vector.
-  int state_offset_ = -1;
-
-  // The offset of this parameter block inside a larger delta vector.
-  int delta_offset_ = -1;
-
-  // If non-null, contains the residual blocks this parameter block is in.
-  std::unique_ptr<ResidualBlockSet> residual_blocks_;
-
-  // Upper and lower bounds for the parameter block.  SetUpperBound
-  // and SetLowerBound lazily initialize the upper_bounds_ and
-  // lower_bounds_ arrays. If they are never called, then memory for
-  // these arrays is never allocated. Thus for problems where there
-  // are no bounds, or only one sided bounds we do not pay the cost of
-  // allocating memory for the inactive bounds constraints.
-  //
-  // Upon initialization these arrays are initialized to
-  // std::numeric_limits<double>::max() and
-  // -std::numeric_limits<double>::max() respectively which correspond
-  // to the parameter block being unconstrained.
-  std::unique_ptr<double[]> upper_bounds_;
-  std::unique_ptr<double[]> lower_bounds_;
-
-  // Necessary so ProblemImpl can clean up the manifolds.
-  friend class ProblemImpl;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_PARAMETER_BLOCK_H_
diff --git a/third_party/ceres/internal/ceres/parameter_block_ordering.cc b/third_party/ceres/internal/ceres/parameter_block_ordering.cc
deleted file mode 100644
index 2b8bf6e..0000000
--- a/third_party/ceres/internal/ceres/parameter_block_ordering.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/parameter_block_ordering.h"
-
-#include <map>
-#include <memory>
-#include <set>
-#include <unordered_set>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/graph_algorithms.h"
-#include "ceres/map_util.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-int ComputeStableSchurOrdering(const Program& program,
-                               std::vector<ParameterBlock*>* ordering) {
-  CHECK(ordering != nullptr);
-  ordering->clear();
-  EventLogger event_logger("ComputeStableSchurOrdering");
-  auto graph = CreateHessianGraph(program);
-  event_logger.AddEvent("CreateHessianGraph");
-
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-  const std::unordered_set<ParameterBlock*>& vertices = graph->vertices();
-  for (auto* parameter_block : parameter_blocks) {
-    if (vertices.count(parameter_block) > 0) {
-      ordering->push_back(parameter_block);
-    }
-  }
-  event_logger.AddEvent("Preordering");
-
-  int independent_set_size = StableIndependentSetOrdering(*graph, ordering);
-  event_logger.AddEvent("StableIndependentSet");
-
-  // Add the excluded blocks to back of the ordering vector.
-  for (auto* parameter_block : parameter_blocks) {
-    if (parameter_block->IsConstant()) {
-      ordering->push_back(parameter_block);
-    }
-  }
-  event_logger.AddEvent("ConstantParameterBlocks");
-
-  return independent_set_size;
-}
-
-int ComputeSchurOrdering(const Program& program,
-                         std::vector<ParameterBlock*>* ordering) {
-  CHECK(ordering != nullptr);
-  ordering->clear();
-
-  auto graph = CreateHessianGraph(program);
-  int independent_set_size = IndependentSetOrdering(*graph, ordering);
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-
-  // Add the excluded blocks to back of the ordering vector.
-  for (auto* parameter_block : parameter_blocks) {
-    if (parameter_block->IsConstant()) {
-      ordering->push_back(parameter_block);
-    }
-  }
-
-  return independent_set_size;
-}
-
-void ComputeRecursiveIndependentSetOrdering(const Program& program,
-                                            ParameterBlockOrdering* ordering) {
-  CHECK(ordering != nullptr);
-  ordering->Clear();
-  const std::vector<ParameterBlock*> parameter_blocks =
-      program.parameter_blocks();
-  auto graph = CreateHessianGraph(program);
-
-  int num_covered = 0;
-  int round = 0;
-  while (num_covered < parameter_blocks.size()) {
-    std::vector<ParameterBlock*> independent_set_ordering;
-    const int independent_set_size =
-        IndependentSetOrdering(*graph, &independent_set_ordering);
-    for (int i = 0; i < independent_set_size; ++i) {
-      ParameterBlock* parameter_block = independent_set_ordering[i];
-      ordering->AddElementToGroup(parameter_block->mutable_user_state(), round);
-      graph->RemoveVertex(parameter_block);
-    }
-    num_covered += independent_set_size;
-    ++round;
-  }
-}
-
-std::unique_ptr<Graph<ParameterBlock*>> CreateHessianGraph(
-    const Program& program) {
-  auto graph = std::make_unique<Graph<ParameterBlock*>>();
-  CHECK(graph != nullptr);
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-  for (auto* parameter_block : parameter_blocks) {
-    if (!parameter_block->IsConstant()) {
-      graph->AddVertex(parameter_block);
-    }
-  }
-
-  const std::vector<ResidualBlock*>& residual_blocks =
-      program.residual_blocks();
-  for (auto* residual_block : residual_blocks) {
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    ParameterBlock* const* parameter_blocks =
-        residual_block->parameter_blocks();
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      if (parameter_blocks[j]->IsConstant()) {
-        continue;
-      }
-
-      for (int k = j + 1; k < num_parameter_blocks; ++k) {
-        if (parameter_blocks[k]->IsConstant()) {
-          continue;
-        }
-
-        graph->AddEdge(parameter_blocks[j], parameter_blocks[k]);
-      }
-    }
-  }
-
-  return graph;
-}
-
-void OrderingToGroupSizes(const ParameterBlockOrdering* ordering,
-                          std::vector<int>* group_sizes) {
-  CHECK(group_sizes != nullptr);
-  group_sizes->clear();
-  if (ordering == nullptr) {
-    return;
-  }
-
-  // TODO(sameeragarwal): Investigate if this should be a set or an
-  // unordered_set.
-  const std::map<int, std::set<double*>>& group_to_elements =
-      ordering->group_to_elements();
-  for (const auto& g_t_e : group_to_elements) {
-    group_sizes->push_back(g_t_e.second.size());
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parameter_block_ordering.h b/third_party/ceres/internal/ceres/parameter_block_ordering.h
deleted file mode 100644
index 2ec3db7..0000000
--- a/third_party/ceres/internal/ceres/parameter_block_ordering.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_PARAMETER_BLOCK_ORDERING_H_
-#define CERES_INTERNAL_PARAMETER_BLOCK_ORDERING_H_
-
-#include <memory>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/ordered_groups.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class Program;
-class ParameterBlock;
-
-// Uses an approximate independent set ordering to order the parameter
-// blocks of a problem so that it is suitable for use with Schur-
-// complement-based solvers. The output variable ordering contains an
-// ordering of the parameter blocks and the return value is size of
-// the independent set or the number of e_blocks (see
-// schur_complement_solver.h for an explanation). Constant parameters
-// are added to the end.
-//
-// The ordering vector has the structure
-//
-// ordering = [independent set,
-//             complement of the independent set,
-//             fixed blocks]
-CERES_NO_EXPORT int ComputeSchurOrdering(
-    const Program& program, std::vector<ParameterBlock*>* ordering);
-
-// Same as above, except that ties while computing the independent set
-// ordering are resolved in favour of the order in which the parameter
-// blocks occur in the program.
-CERES_NO_EXPORT int ComputeStableSchurOrdering(
-    const Program& program, std::vector<ParameterBlock*>* ordering);
-
-// Use an approximate independent set ordering to decompose the
-// parameter blocks of a problem in a sequence of independent
-// sets. The ordering covers all the non-constant parameter blocks in
-// the program.
-CERES_NO_EXPORT void ComputeRecursiveIndependentSetOrdering(
-    const Program& program, ParameterBlockOrdering* ordering);
-
-// Builds a graph on the parameter blocks of a Problem, whose
-// structure reflects the sparsity structure of the Hessian. Each
-// vertex corresponds to a parameter block in the Problem except for
-// parameter blocks that are marked constant. An edge connects two
-// parameter blocks, if they co-occur in a residual block.
-CERES_NO_EXPORT std::unique_ptr<Graph<ParameterBlock*>> CreateHessianGraph(
-    const Program& program);
-
-// Iterate over each of the groups in order of their priority and fill
-// summary with their sizes.
-CERES_NO_EXPORT void OrderingToGroupSizes(
-    const ParameterBlockOrdering* ordering, std::vector<int>* group_sizes);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_PARAMETER_BLOCK_ORDERING_H_
diff --git a/third_party/ceres/internal/ceres/parameter_block_ordering_test.cc b/third_party/ceres/internal/ceres/parameter_block_ordering_test.cc
deleted file mode 100644
index 459a055..0000000
--- a/third_party/ceres/internal/ceres/parameter_block_ordering_test.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/parameter_block_ordering.h"
-
-#include <cstddef>
-#include <memory>
-#include <unordered_set>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/graph.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/stl_util.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-using VertexSet = std::unordered_set<ParameterBlock*>;
-
-template <int M, int... Ns>
-class DummyCostFunction : public SizedCostFunction<M, Ns...> {
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    return true;
-  }
-};
-
-class SchurOrderingTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    // The explicit calls to AddParameterBlock are necessary because
-    // the below tests depend on the specific numbering of the
-    // parameter blocks.
-    problem_.AddParameterBlock(x_, 3);
-    problem_.AddParameterBlock(y_, 4);
-    problem_.AddParameterBlock(z_, 5);
-    problem_.AddParameterBlock(w_, 6);
-
-    problem_.AddResidualBlock(new DummyCostFunction<2, 3>, nullptr, x_);
-    problem_.AddResidualBlock(new DummyCostFunction<6, 5, 4>, nullptr, z_, y_);
-    problem_.AddResidualBlock(new DummyCostFunction<3, 3, 5>, nullptr, x_, z_);
-    problem_.AddResidualBlock(new DummyCostFunction<7, 5, 3>, nullptr, z_, x_);
-    problem_.AddResidualBlock(
-        new DummyCostFunction<1, 5, 3, 6>, nullptr, z_, x_, w_);
-  }
-
-  ProblemImpl problem_;
-  double x_[3], y_[4], z_[5], w_[6];
-};
-
-TEST_F(SchurOrderingTest, NoFixed) {
-  const Program& program = problem_.program();
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-  auto graph = CreateHessianGraph(program);
-
-  const VertexSet& vertices = graph->vertices();
-  EXPECT_EQ(vertices.size(), 4);
-
-  for (int i = 0; i < 4; ++i) {
-    EXPECT_TRUE(vertices.find(parameter_blocks[i]) != vertices.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[0]);
-    EXPECT_EQ(neighbors.size(), 2);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[2]) != neighbors.end());
-    EXPECT_TRUE(neighbors.find(parameter_blocks[3]) != neighbors.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[1]);
-    EXPECT_EQ(neighbors.size(), 1);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[2]) != neighbors.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[2]);
-    EXPECT_EQ(neighbors.size(), 3);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[0]) != neighbors.end());
-    EXPECT_TRUE(neighbors.find(parameter_blocks[1]) != neighbors.end());
-    EXPECT_TRUE(neighbors.find(parameter_blocks[3]) != neighbors.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[3]);
-    EXPECT_EQ(neighbors.size(), 2);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[0]) != neighbors.end());
-    EXPECT_TRUE(neighbors.find(parameter_blocks[2]) != neighbors.end());
-  }
-}
-
-TEST_F(SchurOrderingTest, AllFixed) {
-  problem_.SetParameterBlockConstant(x_);
-  problem_.SetParameterBlockConstant(y_);
-  problem_.SetParameterBlockConstant(z_);
-  problem_.SetParameterBlockConstant(w_);
-
-  const Program& program = problem_.program();
-  auto graph = CreateHessianGraph(program);
-  EXPECT_EQ(graph->vertices().size(), 0);
-}
-
-TEST_F(SchurOrderingTest, OneFixed) {
-  problem_.SetParameterBlockConstant(x_);
-
-  const Program& program = problem_.program();
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-  auto graph = CreateHessianGraph(program);
-
-  const VertexSet& vertices = graph->vertices();
-
-  EXPECT_EQ(vertices.size(), 3);
-  EXPECT_TRUE(vertices.find(parameter_blocks[0]) == vertices.end());
-
-  for (int i = 1; i < 3; ++i) {
-    EXPECT_TRUE(vertices.find(parameter_blocks[i]) != vertices.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[1]);
-    EXPECT_EQ(neighbors.size(), 1);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[2]) != neighbors.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[2]);
-    EXPECT_EQ(neighbors.size(), 2);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[1]) != neighbors.end());
-    EXPECT_TRUE(neighbors.find(parameter_blocks[3]) != neighbors.end());
-  }
-
-  {
-    const VertexSet& neighbors = graph->Neighbors(parameter_blocks[3]);
-    EXPECT_EQ(neighbors.size(), 1);
-    EXPECT_TRUE(neighbors.find(parameter_blocks[2]) != neighbors.end());
-  }
-
-  // The constant parameter block is at the end.
-  std::vector<ParameterBlock*> ordering;
-  ComputeSchurOrdering(program, &ordering);
-  EXPECT_EQ(ordering.back(), parameter_blocks[0]);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/parameter_block_test.cc b/third_party/ceres/internal/ceres/parameter_block_test.cc
deleted file mode 100644
index 0bb9b40..0000000
--- a/third_party/ceres/internal/ceres/parameter_block_test.cc
+++ /dev/null
@@ -1,284 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/parameter_block.h"
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-TEST(ParameterBlock, SetManifoldDiesOnSizeMismatch) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset_wrong_size(4, indices);
-  EXPECT_DEATH_IF_SUPPORTED(parameter_block.SetManifold(&subset_wrong_size),
-                            "ambient");
-}
-
-TEST(ParameterBlock, SetManifoldWithSameExistingManifold) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset(3, indices);
-  parameter_block.SetManifold(&subset);
-  parameter_block.SetManifold(&subset);
-}
-
-TEST(ParameterBlock, SetManifoldAllowsResettingToNull) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset(3, indices);
-  parameter_block.SetManifold(&subset);
-  EXPECT_EQ(parameter_block.manifold(), &subset);
-  parameter_block.SetManifold(nullptr);
-  EXPECT_EQ(parameter_block.manifold(), nullptr);
-  EXPECT_EQ(parameter_block.PlusJacobian(), nullptr);
-}
-
-TEST(ParameterBlock, SetManifoldAllowsResettingToDifferentManifold) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset(3, indices);
-  parameter_block.SetManifold(&subset);
-  EXPECT_EQ(parameter_block.manifold(), &subset);
-
-  SubsetManifold subset_different(3, indices);
-  parameter_block.SetManifold(&subset_different);
-  EXPECT_EQ(parameter_block.manifold(), &subset_different);
-}
-
-TEST(ParameterBlock, SetManifoldAndNormalOperation) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset(3, indices);
-  parameter_block.SetManifold(&subset);
-
-  // Ensure the manifold plus jacobian result is correctly computed.
-  ConstMatrixRef manifold_jacobian(parameter_block.PlusJacobian(), 3, 2);
-  ASSERT_EQ(1.0, manifold_jacobian(0, 0));
-  ASSERT_EQ(0.0, manifold_jacobian(0, 1));
-  ASSERT_EQ(0.0, manifold_jacobian(1, 0));
-  ASSERT_EQ(0.0, manifold_jacobian(1, 1));
-  ASSERT_EQ(0.0, manifold_jacobian(2, 0));
-  ASSERT_EQ(1.0, manifold_jacobian(2, 1));
-
-  // Check that updating works as expected.
-  double x_plus_delta[3];
-  double delta[2] = {0.5, 0.3};
-  parameter_block.Plus(x, delta, x_plus_delta);
-  ASSERT_EQ(1.5, x_plus_delta[0]);
-  ASSERT_EQ(2.0, x_plus_delta[1]);
-  ASSERT_EQ(3.3, x_plus_delta[2]);
-}
-
-struct TestManifold : public Manifold {
- public:
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const final {
-    LOG(FATAL) << "Shouldn't get called.";
-    return true;
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const final {
-    jacobian[0] = *x * 2;
-    return true;
-  }
-
-  bool Minus(const double* y, const double* x, double* y_minus_x) const final {
-    LOG(FATAL) << "Shouldn't get called";
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const final {
-    jacobian[0] = *x * 2;
-    return true;
-  }
-
-  int AmbientSize() const final { return 1; }
-  int TangentSize() const final { return 1; }
-};
-
-TEST(ParameterBlock, SetStateUpdatesPlusJacobian) {
-  TestManifold test_manifold;
-  double x[1] = {1.0};
-  ParameterBlock parameter_block(x, 1, -1, &test_manifold);
-
-  EXPECT_EQ(2.0, *parameter_block.PlusJacobian());
-
-  x[0] = 5.5;
-  parameter_block.SetState(x);
-  EXPECT_EQ(11.0, *parameter_block.PlusJacobian());
-}
-
-TEST(ParameterBlock, PlusWithNoManifold) {
-  double x[2] = {1.0, 2.0};
-  ParameterBlock parameter_block(x, 2, -1);
-
-  double delta[2] = {0.2, 0.3};
-  double x_plus_delta[2];
-  parameter_block.Plus(x, delta, x_plus_delta);
-  EXPECT_EQ(1.2, x_plus_delta[0]);
-  EXPECT_EQ(2.3, x_plus_delta[1]);
-}
-
-// Stops computing the plus_jacobian after the first time.
-class BadManifold : public Manifold {
- public:
-  BadManifold() = default;
-
-  bool Plus(const double* x,
-            const double* delta,
-            double* x_plus_delta) const final {
-    *x_plus_delta = *x + *delta;
-    return true;
-  }
-
-  bool PlusJacobian(const double* x, double* jacobian) const final {
-    if (calls_ == 0) {
-      jacobian[0] = 0;
-    }
-    ++calls_;
-    return true;
-  }
-
-  bool Minus(const double* y, const double* x, double* y_minus_x) const final {
-    LOG(FATAL) << "Shouldn't get called";
-    return true;
-  }
-
-  bool MinusJacobian(const double* x, double* jacobian) const final {
-    jacobian[0] = *x * 2;
-    return true;
-  }
-
-  int AmbientSize() const final { return 1; }
-  int TangentSize() const final { return 1; }
-
- private:
-  mutable int calls_{0};
-};
-
-TEST(ParameterBlock, DetectBadManifold) {
-  double x = 1;
-  BadManifold bad_manifold;
-  ParameterBlock parameter_block(&x, 1, -1, &bad_manifold);
-  double y = 2;
-  EXPECT_FALSE(parameter_block.SetState(&y));
-}
-
-TEST(ParameterBlock, DefaultBounds) {
-  double x[2];
-  ParameterBlock parameter_block(x, 2, -1, nullptr);
-  EXPECT_EQ(parameter_block.UpperBoundForParameter(0),
-            std::numeric_limits<double>::max());
-  EXPECT_EQ(parameter_block.UpperBoundForParameter(1),
-            std::numeric_limits<double>::max());
-  EXPECT_EQ(parameter_block.LowerBoundForParameter(0),
-            -std::numeric_limits<double>::max());
-  EXPECT_EQ(parameter_block.LowerBoundForParameter(1),
-            -std::numeric_limits<double>::max());
-}
-
-TEST(ParameterBlock, SetBounds) {
-  double x[2];
-  ParameterBlock parameter_block(x, 2, -1, nullptr);
-  parameter_block.SetLowerBound(0, 1);
-  parameter_block.SetUpperBound(1, 1);
-
-  EXPECT_EQ(parameter_block.LowerBoundForParameter(0), 1.0);
-  EXPECT_EQ(parameter_block.LowerBoundForParameter(1),
-            -std::numeric_limits<double>::max());
-
-  EXPECT_EQ(parameter_block.UpperBoundForParameter(0),
-            std::numeric_limits<double>::max());
-  EXPECT_EQ(parameter_block.UpperBoundForParameter(1), 1.0);
-}
-
-TEST(ParameterBlock, PlusWithBoundsConstraints) {
-  double x[] = {1.0, 0.0};
-  double delta[] = {2.0, -10.0};
-  ParameterBlock parameter_block(x, 2, -1, nullptr);
-  parameter_block.SetUpperBound(0, 2.0);
-  parameter_block.SetLowerBound(1, -1.0);
-  double x_plus_delta[2];
-  parameter_block.Plus(x, delta, x_plus_delta);
-  EXPECT_EQ(x_plus_delta[0], 2.0);
-  EXPECT_EQ(x_plus_delta[1], -1.0);
-}
-
-TEST(ParameterBlock, ResetManifoldToNull) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset(3, indices);
-  parameter_block.SetManifold(&subset);
-  EXPECT_EQ(parameter_block.manifold(), &subset);
-  parameter_block.SetManifold(nullptr);
-  EXPECT_EQ(parameter_block.manifold(), nullptr);
-}
-
-TEST(ParameterBlock, ResetManifoldToNotNull) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  std::vector<int> indices;
-  indices.push_back(1);
-  SubsetManifold subset(3, indices);
-  parameter_block.SetManifold(&subset);
-  EXPECT_EQ(parameter_block.manifold(), &subset);
-
-  SubsetManifold subset_different(3, indices);
-  parameter_block.SetManifold(&subset_different);
-  EXPECT_EQ(parameter_block.manifold(), &subset_different);
-}
-
-TEST(ParameterBlock, SetNullManifold) {
-  double x[3] = {1.0, 2.0, 3.0};
-  ParameterBlock parameter_block(x, 3, -1);
-  EXPECT_EQ(parameter_block.manifold(), nullptr);
-
-  parameter_block.SetManifold(nullptr);
-  EXPECT_EQ(parameter_block.manifold(), nullptr);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/parameter_dims_test.cc b/third_party/ceres/internal/ceres/parameter_dims_test.cc
deleted file mode 100644
index 58d2500..0000000
--- a/third_party/ceres/internal/ceres/parameter_dims_test.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: jodebo_beck@gmx.de (Johannes Beck)
-
-#include "ceres/internal/parameter_dims.h"
-
-#include <gtest/gtest.h>
-
-#include <type_traits>
-#include <utility>
-
-namespace ceres {
-namespace internal {
-
-// Static parameter dims unit test
-static_assert(
-    std::is_same<StaticParameterDims<4, 2, 1>::Parameters,
-                 std::integer_sequence<int, 4, 2, 1>>::value == true,
-    "Unit test of type 'parameters' for static parameter dims failed.");
-
-static_assert(StaticParameterDims<4, 2, 1>::kIsValid == true,
-              "Unit test of is valid for static parameter dims failed.");
-static_assert(StaticParameterDims<4, 2, 1>::kIsDynamic == false,
-              "Unit test of is dynamic for static parameter dims failed.");
-static_assert(StaticParameterDims<4, 2, 1>::kNumParameterBlocks == 3,
-              "Unit test of number of parameter blocks for static parameter "
-              "dims failed.");
-static_assert(
-    StaticParameterDims<4, 2, 1>::kNumParameters == 7,
-    "Unit test of number of parameters for static parameter dims failed.");
-
-// Dynamic parameter dims unit test
-static_assert(DynamicParameterDims::kIsValid == true,
-              "Unit test of is valid for dynamic parameter dims failed.");
-static_assert(DynamicParameterDims::kIsDynamic == true,
-              "Unit test of is dynamic for dynamic parameter dims failed.");
-static_assert(DynamicParameterDims::kNumParameterBlocks == 0,
-              "Unit test of number if parameter blocks for dynamic parameter "
-              "dims failed.");
-static_assert(
-    DynamicParameterDims::kNumParameters == 0,
-    "Unit test of number of parameters for dynamic parameter dims failed.");
-
-TEST(ParameterDims, GetDims) {
-  constexpr int N0 = 3;
-  constexpr int N1 = 4;
-  constexpr int N2 = 2;
-
-  StaticParameterDims<N0, N1, N2> params;
-  EXPECT_EQ(N0, params.GetDim(0));
-  EXPECT_EQ(N1, params.GetDim(1));
-  EXPECT_EQ(N2, params.GetDim(2));
-}
-
-TEST(ParameterDims, GetUnpackedParameters) {
-  constexpr int N0 = 3;
-  constexpr int N1 = 4;
-  constexpr int N2 = 2;
-
-  using ParameterDims = StaticParameterDims<N0, N1, N2>;
-
-  std::array<double, ParameterDims::kNumParameters> packed_parameters{};
-  std::array<double*, 3> unpacked_parameters =
-      ParameterDims::GetUnpackedParameters(packed_parameters.data());
-
-  EXPECT_EQ(packed_parameters.data(), unpacked_parameters[0]);
-  EXPECT_EQ(packed_parameters.data() + N0, unpacked_parameters[1]);
-  EXPECT_EQ(packed_parameters.data() + N0 + N1, unpacked_parameters[2]);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/partition_range_for_parallel_for.h b/third_party/ceres/internal/ceres/partition_range_for_parallel_for.h
deleted file mode 100644
index 309d7a8..0000000
--- a/third_party/ceres/internal/ceres/partition_range_for_parallel_for.h
+++ /dev/null
@@ -1,150 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: vitus@google.com (Michael Vitus),
-//          dmitriy.korchemkin@gmail.com (Dmitriy Korchemkin)
-
-#ifndef CERES_INTERNAL_PARTITION_RANGE_FOR_PARALLEL_FOR_H_
-#define CERES_INTERNAL_PARTITION_RANGE_FOR_PARALLEL_FOR_H_
-
-#include <algorithm>
-#include <vector>
-
-namespace ceres::internal {
-// Check if it is possible to split range [start; end) into at most
-// max_num_partitions  contiguous partitions of cost not greater than
-// max_partition_cost. Inclusive integer cumulative costs are provided by
-// cumulative_cost_data objects, with cumulative_cost_offset being a total cost
-// of all indices (starting from zero) preceding start element. Cumulative costs
-// are returned by cumulative_cost_fun called with a reference to
-// cumulative_cost_data element with index from range[start; end), and should be
-// non-decreasing. Partition of the range is returned via partition argument
-template <typename CumulativeCostData, typename CumulativeCostFun>
-bool MaxPartitionCostIsFeasible(int start,
-                                int end,
-                                int max_num_partitions,
-                                int max_partition_cost,
-                                int cumulative_cost_offset,
-                                const CumulativeCostData* cumulative_cost_data,
-                                CumulativeCostFun&& cumulative_cost_fun,
-                                std::vector<int>* partition) {
-  partition->clear();
-  partition->push_back(start);
-  int partition_start = start;
-  int cost_offset = cumulative_cost_offset;
-
-  while (partition_start < end) {
-    // Already have max_num_partitions
-    if (partition->size() > max_num_partitions) {
-      return false;
-    }
-    const int target = max_partition_cost + cost_offset;
-    const int partition_end =
-        std::partition_point(
-            cumulative_cost_data + partition_start,
-            cumulative_cost_data + end,
-            [&cumulative_cost_fun, target](const CumulativeCostData& item) {
-              return cumulative_cost_fun(item) <= target;
-            }) -
-        cumulative_cost_data;
-    // Unable to make a partition from a single element
-    if (partition_end == partition_start) {
-      return false;
-    }
-
-    const int cost_last =
-        cumulative_cost_fun(cumulative_cost_data[partition_end - 1]);
-    partition->push_back(partition_end);
-    partition_start = partition_end;
-    cost_offset = cost_last;
-  }
-  return true;
-}
-
-// Split integer interval [start, end) into at most max_num_partitions
-// contiguous intervals, minimizing maximal total cost of a single interval.
-// Inclusive integer cumulative costs for each (zero-based) index are provided
-// by cumulative_cost_data objects, and are returned by cumulative_cost_fun call
-// with a reference to one of the objects from range [start, end)
-template <typename CumulativeCostData, typename CumulativeCostFun>
-std::vector<int> PartitionRangeForParallelFor(
-    int start,
-    int end,
-    int max_num_partitions,
-    const CumulativeCostData* cumulative_cost_data,
-    CumulativeCostFun&& cumulative_cost_fun) {
-  // Given maximal partition cost, it is possible to verify if it is admissible
-  // and obtain corresponding partition using MaxPartitionCostIsFeasible
-  // function. In order to find the lowest admissible value, a binary search
-  // over all potentially optimal cost values is being performed
-  const int cumulative_cost_last =
-      cumulative_cost_fun(cumulative_cost_data[end - 1]);
-  const int cumulative_cost_offset =
-      start ? cumulative_cost_fun(cumulative_cost_data[start - 1]) : 0;
-  const int total_cost = cumulative_cost_last - cumulative_cost_offset;
-
-  // Minimal maximal partition cost is not smaller than the average
-  // We will use non-inclusive lower bound
-  int partition_cost_lower_bound = total_cost / max_num_partitions - 1;
-  // Minimal maximal partition cost is not larger than the total cost
-  // Upper bound is inclusive
-  int partition_cost_upper_bound = total_cost;
-
-  std::vector<int> partition;
-  // Range partition corresponding to the latest evaluated upper bound.
-  // A single segment covering the whole input interval [start, end) corresponds
-  // to minimal maximal partition cost of total_cost.
-  std::vector<int> partition_upper_bound = {start, end};
-  // Binary search over partition cost, returning the lowest admissible cost
-  while (partition_cost_upper_bound - partition_cost_lower_bound > 1) {
-    partition.reserve(max_num_partitions + 1);
-    const int partition_cost =
-        partition_cost_lower_bound +
-        (partition_cost_upper_bound - partition_cost_lower_bound) / 2;
-    bool admissible = MaxPartitionCostIsFeasible(
-        start,
-        end,
-        max_num_partitions,
-        partition_cost,
-        cumulative_cost_offset,
-        cumulative_cost_data,
-        std::forward<CumulativeCostFun>(cumulative_cost_fun),
-        &partition);
-    if (admissible) {
-      partition_cost_upper_bound = partition_cost;
-      std::swap(partition, partition_upper_bound);
-    } else {
-      partition_cost_lower_bound = partition_cost;
-    }
-  }
-
-  return partition_upper_bound;
-}
-}  // namespace ceres::internal
-
-#endif
diff --git a/third_party/ceres/internal/ceres/partitioned_matrix_view.cc b/third_party/ceres/internal/ceres/partitioned_matrix_view.cc
deleted file mode 100644
index cffdbc5..0000000
--- a/third_party/ceres/internal/ceres/partitioned_matrix_view.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-#include <memory>
-
-#include "ceres/linear_solver.h"
-#include "ceres/partitioned_matrix_view.h"
-
-namespace ceres::internal {
-
-PartitionedMatrixViewBase::~PartitionedMatrixViewBase() = default;
-
-std::unique_ptr<PartitionedMatrixViewBase> PartitionedMatrixViewBase::Create(
-    const LinearSolver::Options& options, const BlockSparseMatrix& matrix) {
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 2)) {
-    return std::make_unique<PartitionedMatrixView<2,2, 2>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<PartitionedMatrixView<2,2, 3>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<PartitionedMatrixView<2,2, 4>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2)) {
-    return std::make_unique<PartitionedMatrixView<2,2, Eigen::Dynamic>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<PartitionedMatrixView<2,3, 3>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<PartitionedMatrixView<2,3, 4>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 6)) {
-    return std::make_unique<PartitionedMatrixView<2,3, 6>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 9)) {
-    return std::make_unique<PartitionedMatrixView<2,3, 9>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3)) {
-    return std::make_unique<PartitionedMatrixView<2,3, Eigen::Dynamic>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<PartitionedMatrixView<2,4, 3>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<PartitionedMatrixView<2,4, 4>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 6)) {
-    return std::make_unique<PartitionedMatrixView<2,4, 6>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 8)) {
-    return std::make_unique<PartitionedMatrixView<2,4, 8>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 9)) {
-    return std::make_unique<PartitionedMatrixView<2,4, 9>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4)) {
-    return std::make_unique<PartitionedMatrixView<2,4, Eigen::Dynamic>>(
-                   options, matrix);
-  }
-  if (options.row_block_size == 2) {
-    return std::make_unique<PartitionedMatrixView<2,Eigen::Dynamic, Eigen::Dynamic>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 3) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<PartitionedMatrixView<3,3, 3>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 2)) {
-    return std::make_unique<PartitionedMatrixView<4,4, 2>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<PartitionedMatrixView<4,4, 3>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<PartitionedMatrixView<4,4, 4>>(
-                   options, matrix);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4)) {
-    return std::make_unique<PartitionedMatrixView<4,4, Eigen::Dynamic>>(
-                   options, matrix);
-  }
-
-#endif
-  VLOG(1) << "Template specializations not found for <"
-          << options.row_block_size << "," << options.e_block_size << ","
-          << options.f_block_size << ">";
-  return std::make_unique<PartitionedMatrixView<Eigen::Dynamic,
-                                                Eigen::Dynamic,
-                                                Eigen::Dynamic>>(
-      options, matrix);
-};
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/partitioned_matrix_view.h b/third_party/ceres/internal/ceres/partitioned_matrix_view.h
deleted file mode 100644
index 8589a3b..0000000
--- a/third_party/ceres/internal/ceres/partitioned_matrix_view.h
+++ /dev/null
@@ -1,212 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// For generalized bi-partite Jacobian matrices that arise in
-// Structure from Motion related problems, it is sometimes useful to
-// have access to the two parts of the matrix as linear operators
-// themselves. This class provides that functionality.
-
-#ifndef CERES_INTERNAL_PARTITIONED_MATRIX_VIEW_H_
-#define CERES_INTERNAL_PARTITIONED_MATRIX_VIEW_H_
-
-#include <algorithm>
-#include <cstring>
-#include <memory>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/small_blas.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-class ContextImpl;
-
-// Given generalized bi-partite matrix A = [E F], with the same block
-// structure as required by the Schur complement based solver, found
-// in schur_complement_solver.h, provide access to the
-// matrices E and F and their outer products E'E and F'F with
-// themselves.
-//
-// Lack of BlockStructure object will result in a crash and if the
-// block structure of the matrix does not satisfy the requirements of
-// the Schur complement solver it will result in unpredictable and
-// wrong output.
-class CERES_NO_EXPORT PartitionedMatrixViewBase {
- public:
-  virtual ~PartitionedMatrixViewBase();
-
-  // y += E'x
-  virtual void LeftMultiplyAndAccumulateE(const double* x, double* y) const = 0;
-  virtual void LeftMultiplyAndAccumulateESingleThreaded(const double* x,
-                                                        double* y) const = 0;
-  virtual void LeftMultiplyAndAccumulateEMultiThreaded(const double* x,
-                                                       double* y) const = 0;
-
-  // y += F'x
-  virtual void LeftMultiplyAndAccumulateF(const double* x, double* y) const = 0;
-  virtual void LeftMultiplyAndAccumulateFSingleThreaded(const double* x,
-                                                        double* y) const = 0;
-  virtual void LeftMultiplyAndAccumulateFMultiThreaded(const double* x,
-                                                       double* y) const = 0;
-
-  // y += Ex
-  virtual void RightMultiplyAndAccumulateE(const double* x,
-                                           double* y) const = 0;
-
-  // y += Fx
-  virtual void RightMultiplyAndAccumulateF(const double* x,
-                                           double* y) const = 0;
-
-  // Create and return the block diagonal of the matrix E'E.
-  virtual std::unique_ptr<BlockSparseMatrix> CreateBlockDiagonalEtE() const = 0;
-
-  // Create and return the block diagonal of the matrix F'F. Caller
-  // owns the result.
-  virtual std::unique_ptr<BlockSparseMatrix> CreateBlockDiagonalFtF() const = 0;
-
-  // Compute the block diagonal of the matrix E'E and store it in
-  // block_diagonal. The matrix block_diagonal is expected to have a
-  // BlockStructure (preferably created using
-  // CreateBlockDiagonalMatrixEtE) which is has the same structure as
-  // the block diagonal of E'E.
-  virtual void UpdateBlockDiagonalEtE(
-      BlockSparseMatrix* block_diagonal) const = 0;
-
-  // Compute the block diagonal of the matrix F'F and store it in
-  // block_diagonal. The matrix block_diagonal is expected to have a
-  // BlockStructure (preferably created using
-  // CreateBlockDiagonalMatrixFtF) which is has the same structure as
-  // the block diagonal of F'F.
-  virtual void UpdateBlockDiagonalFtF(
-      BlockSparseMatrix* block_diagonal) const = 0;
-
-  // clang-format off
-  virtual int num_col_blocks_e() const = 0;
-  virtual int num_col_blocks_f() const = 0;
-  virtual int num_cols_e()       const = 0;
-  virtual int num_cols_f()       const = 0;
-  virtual int num_rows()         const = 0;
-  virtual int num_cols()         const = 0;
-  virtual const std::vector<int>& e_cols_partition() const = 0;
-  virtual const std::vector<int>& f_cols_partition() const = 0;
-  // clang-format on
-
-  static std::unique_ptr<PartitionedMatrixViewBase> Create(
-      const LinearSolver::Options& options, const BlockSparseMatrix& matrix);
-};
-
-template <int kRowBlockSize = Eigen::Dynamic,
-          int kEBlockSize = Eigen::Dynamic,
-          int kFBlockSize = Eigen::Dynamic>
-class CERES_NO_EXPORT PartitionedMatrixView final
-    : public PartitionedMatrixViewBase {
- public:
-  // matrix = [E F], where the matrix E contains the first
-  // options.elimination_groups[0] column blocks.
-  PartitionedMatrixView(const LinearSolver::Options& options,
-                        const BlockSparseMatrix& matrix);
-
-  // y += E'x
-  virtual void LeftMultiplyAndAccumulateE(const double* x,
-                                          double* y) const final;
-  virtual void LeftMultiplyAndAccumulateESingleThreaded(const double* x,
-                                                        double* y) const final;
-  virtual void LeftMultiplyAndAccumulateEMultiThreaded(const double* x,
-                                                       double* y) const final;
-
-  // y += F'x
-  virtual void LeftMultiplyAndAccumulateF(const double* x,
-                                          double* y) const final;
-  virtual void LeftMultiplyAndAccumulateFSingleThreaded(const double* x,
-                                                        double* y) const final;
-  virtual void LeftMultiplyAndAccumulateFMultiThreaded(const double* x,
-                                                       double* y) const final;
-
-  // y += Ex
-  virtual void RightMultiplyAndAccumulateE(const double* x,
-                                           double* y) const final;
-
-  // y += Fx
-  virtual void RightMultiplyAndAccumulateF(const double* x,
-                                           double* y) const final;
-
-  std::unique_ptr<BlockSparseMatrix> CreateBlockDiagonalEtE() const final;
-  std::unique_ptr<BlockSparseMatrix> CreateBlockDiagonalFtF() const final;
-  void UpdateBlockDiagonalEtE(BlockSparseMatrix* block_diagonal) const final;
-  void UpdateBlockDiagonalEtESingleThreaded(
-      BlockSparseMatrix* block_diagonal) const;
-  void UpdateBlockDiagonalEtEMultiThreaded(
-      BlockSparseMatrix* block_diagonal) const;
-  void UpdateBlockDiagonalFtF(BlockSparseMatrix* block_diagonal) const final;
-  void UpdateBlockDiagonalFtFSingleThreaded(
-      BlockSparseMatrix* block_diagonal) const;
-  void UpdateBlockDiagonalFtFMultiThreaded(
-      BlockSparseMatrix* block_diagonal) const;
-  // clang-format off
-  int num_col_blocks_e() const final { return num_col_blocks_e_;  }
-  int num_col_blocks_f() const final { return num_col_blocks_f_;  }
-  int num_cols_e()       const final { return num_cols_e_;        }
-  int num_cols_f()       const final { return num_cols_f_;        }
-  int num_rows()         const final { return matrix_.num_rows(); }
-  int num_cols()         const final { return matrix_.num_cols(); }
-  // clang-format on
-  const std::vector<int>& e_cols_partition() const final {
-    return e_cols_partition_;
-  }
-  const std::vector<int>& f_cols_partition() const final {
-    return f_cols_partition_;
-  }
-
- private:
-  std::unique_ptr<BlockSparseMatrix> CreateBlockDiagonalMatrixLayout(
-      int start_col_block, int end_col_block) const;
-
-  const LinearSolver::Options options_;
-  const BlockSparseMatrix& matrix_;
-  int num_row_blocks_e_;
-  int num_col_blocks_e_;
-  int num_col_blocks_f_;
-  int num_cols_e_;
-  int num_cols_f_;
-  std::vector<int> e_cols_partition_;
-  std::vector<int> f_cols_partition_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_PARTITIONED_MATRIX_VIEW_H_
diff --git a/third_party/ceres/internal/ceres/partitioned_matrix_view_impl.h b/third_party/ceres/internal/ceres/partitioned_matrix_view_impl.h
deleted file mode 100644
index bd02439..0000000
--- a/third_party/ceres/internal/ceres/partitioned_matrix_view_impl.h
+++ /dev/null
@@ -1,660 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <algorithm>
-#include <cstring>
-#include <memory>
-#include <vector>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/parallel_for.h"
-#include "ceres/partition_range_for_parallel_for.h"
-#include "ceres/partitioned_matrix_view.h"
-#include "ceres/small_blas.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    PartitionedMatrixView(const LinearSolver::Options& options,
-                          const BlockSparseMatrix& matrix)
-
-    : options_(options), matrix_(matrix) {
-  const CompressedRowBlockStructure* bs = matrix_.block_structure();
-  CHECK(bs != nullptr);
-
-  num_col_blocks_e_ = options_.elimination_groups[0];
-  num_col_blocks_f_ = bs->cols.size() - num_col_blocks_e_;
-
-  // Compute the number of row blocks in E. The number of row blocks
-  // in E maybe less than the number of row blocks in the input matrix
-  // as some of the row blocks at the bottom may not have any
-  // e_blocks. For a definition of what an e_block is, please see
-  // schur_complement_solver.h
-  num_row_blocks_e_ = 0;
-  for (const auto& row : bs->rows) {
-    const std::vector<Cell>& cells = row.cells;
-    if (cells[0].block_id < num_col_blocks_e_) {
-      ++num_row_blocks_e_;
-    }
-  }
-
-  // Compute the number of columns in E and F.
-  num_cols_e_ = 0;
-  num_cols_f_ = 0;
-
-  for (int c = 0; c < bs->cols.size(); ++c) {
-    const Block& block = bs->cols[c];
-    if (c < num_col_blocks_e_) {
-      num_cols_e_ += block.size;
-    } else {
-      num_cols_f_ += block.size;
-    }
-  }
-
-  CHECK_EQ(num_cols_e_ + num_cols_f_, matrix_.num_cols());
-
-  auto transpose_bs = matrix_.transpose_block_structure();
-  const int num_threads = options_.num_threads;
-  if (transpose_bs != nullptr && num_threads > 1) {
-    int kMaxPartitions = num_threads * 4;
-    e_cols_partition_ = PartitionRangeForParallelFor(
-        0,
-        num_col_blocks_e_,
-        kMaxPartitions,
-        transpose_bs->rows.data(),
-        [](const CompressedRow& row) { return row.cumulative_nnz; });
-
-    f_cols_partition_ = PartitionRangeForParallelFor(
-        num_col_blocks_e_,
-        num_col_blocks_e_ + num_col_blocks_f_,
-        kMaxPartitions,
-        transpose_bs->rows.data(),
-        [](const CompressedRow& row) { return row.cumulative_nnz; });
-  }
-}
-
-// The next four methods don't seem to be particularly cache
-// friendly. This is an artifact of how the BlockStructure of the
-// input matrix is constructed. These methods will benefit from
-// multithreading as well as improved data layout.
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    RightMultiplyAndAccumulateE(const double* x, double* y) const {
-  // Iterate over the first num_row_blocks_e_ row blocks, and multiply
-  // by the first cell in each row block.
-  auto bs = matrix_.block_structure();
-  const double* values = matrix_.values();
-  ParallelFor(options_.context,
-              0,
-              num_row_blocks_e_,
-              options_.num_threads,
-              [values, bs, x, y](int row_block_id) {
-                const Cell& cell = bs->rows[row_block_id].cells[0];
-                const int row_block_pos = bs->rows[row_block_id].block.position;
-                const int row_block_size = bs->rows[row_block_id].block.size;
-                const int col_block_id = cell.block_id;
-                const int col_block_pos = bs->cols[col_block_id].position;
-                const int col_block_size = bs->cols[col_block_id].size;
-                // clang-format off
-                MatrixVectorMultiply<kRowBlockSize, kEBlockSize, 1>(
-                    values + cell.position, row_block_size, col_block_size,
-                    x + col_block_pos,
-                    y + row_block_pos);
-                // clang-format on
-              });
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    RightMultiplyAndAccumulateF(const double* x, double* y) const {
-  // Iterate over row blocks, and if the row block is in E, then
-  // multiply by all the cells except the first one which is of type
-  // E. If the row block is not in E (i.e its in the bottom
-  // num_row_blocks - num_row_blocks_e row blocks), then all the cells
-  // are of type F and multiply by them all.
-  const CompressedRowBlockStructure* bs = matrix_.block_structure();
-  const int num_row_blocks = bs->rows.size();
-  const int num_cols_e = num_cols_e_;
-  const double* values = matrix_.values();
-  ParallelFor(options_.context,
-              0,
-              num_row_blocks_e_,
-              options_.num_threads,
-              [values, bs, num_cols_e, x, y](int row_block_id) {
-                const int row_block_pos = bs->rows[row_block_id].block.position;
-                const int row_block_size = bs->rows[row_block_id].block.size;
-                const auto& cells = bs->rows[row_block_id].cells;
-                for (int c = 1; c < cells.size(); ++c) {
-                  const int col_block_id = cells[c].block_id;
-                  const int col_block_pos = bs->cols[col_block_id].position;
-                  const int col_block_size = bs->cols[col_block_id].size;
-                  // clang-format off
-                  MatrixVectorMultiply<kRowBlockSize, kFBlockSize, 1>(
-                      values + cells[c].position, row_block_size, col_block_size,
-                      x + col_block_pos - num_cols_e,
-                      y + row_block_pos);
-                  // clang-format on
-                }
-              });
-  ParallelFor(options_.context,
-              num_row_blocks_e_,
-              num_row_blocks,
-              options_.num_threads,
-              [values, bs, num_cols_e, x, y](int row_block_id) {
-                const int row_block_pos = bs->rows[row_block_id].block.position;
-                const int row_block_size = bs->rows[row_block_id].block.size;
-                const auto& cells = bs->rows[row_block_id].cells;
-                for (const auto& cell : cells) {
-                  const int col_block_id = cell.block_id;
-                  const int col_block_pos = bs->cols[col_block_id].position;
-                  const int col_block_size = bs->cols[col_block_id].size;
-                  // clang-format off
-                  MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-                      values + cell.position, row_block_size, col_block_size,
-                      x + col_block_pos - num_cols_e,
-                      y + row_block_pos);
-                  // clang-format on
-                }
-              });
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    LeftMultiplyAndAccumulateE(const double* x, double* y) const {
-  if (!num_col_blocks_e_) return;
-  if (!num_row_blocks_e_) return;
-  if (options_.num_threads == 1) {
-    LeftMultiplyAndAccumulateESingleThreaded(x, y);
-  } else {
-    CHECK(options_.context != nullptr);
-    LeftMultiplyAndAccumulateEMultiThreaded(x, y);
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    LeftMultiplyAndAccumulateESingleThreaded(const double* x, double* y) const {
-  const CompressedRowBlockStructure* bs = matrix_.block_structure();
-
-  // Iterate over the first num_row_blocks_e_ row blocks, and multiply
-  // by the first cell in each row block.
-  const double* values = matrix_.values();
-  for (int r = 0; r < num_row_blocks_e_; ++r) {
-    const Cell& cell = bs->rows[r].cells[0];
-    const int row_block_pos = bs->rows[r].block.position;
-    const int row_block_size = bs->rows[r].block.size;
-    const int col_block_id = cell.block_id;
-    const int col_block_pos = bs->cols[col_block_id].position;
-    const int col_block_size = bs->cols[col_block_id].size;
-    // clang-format off
-    MatrixTransposeVectorMultiply<kRowBlockSize, kEBlockSize, 1>(
-        values + cell.position, row_block_size, col_block_size,
-        x + row_block_pos,
-        y + col_block_pos);
-    // clang-format on
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    LeftMultiplyAndAccumulateEMultiThreaded(const double* x, double* y) const {
-  auto transpose_bs = matrix_.transpose_block_structure();
-  CHECK(transpose_bs != nullptr);
-
-  // Local copies of class members in order to avoid capturing pointer to the
-  // whole object in lambda function
-  auto values = matrix_.values();
-  const int num_row_blocks_e = num_row_blocks_e_;
-  ParallelFor(
-      options_.context,
-      0,
-      num_col_blocks_e_,
-      options_.num_threads,
-      [values, transpose_bs, num_row_blocks_e, x, y](int row_block_id) {
-        int row_block_pos = transpose_bs->rows[row_block_id].block.position;
-        int row_block_size = transpose_bs->rows[row_block_id].block.size;
-        auto& cells = transpose_bs->rows[row_block_id].cells;
-
-        for (auto& cell : cells) {
-          const int col_block_id = cell.block_id;
-          const int col_block_size = transpose_bs->cols[col_block_id].size;
-          const int col_block_pos = transpose_bs->cols[col_block_id].position;
-          if (col_block_id >= num_row_blocks_e) break;
-          MatrixTransposeVectorMultiply<kRowBlockSize, kEBlockSize, 1>(
-              values + cell.position,
-              col_block_size,
-              row_block_size,
-              x + col_block_pos,
-              y + row_block_pos);
-        }
-      },
-      e_cols_partition());
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    LeftMultiplyAndAccumulateF(const double* x, double* y) const {
-  if (!num_col_blocks_f_) return;
-  if (options_.num_threads == 1) {
-    LeftMultiplyAndAccumulateFSingleThreaded(x, y);
-  } else {
-    CHECK(options_.context != nullptr);
-    LeftMultiplyAndAccumulateFMultiThreaded(x, y);
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    LeftMultiplyAndAccumulateFSingleThreaded(const double* x, double* y) const {
-  const CompressedRowBlockStructure* bs = matrix_.block_structure();
-
-  // Iterate over row blocks, and if the row block is in E, then
-  // multiply by all the cells except the first one which is of type
-  // E. If the row block is not in E (i.e its in the bottom
-  // num_row_blocks - num_row_blocks_e row blocks), then all the cells
-  // are of type F and multiply by them all.
-  const double* values = matrix_.values();
-  for (int r = 0; r < num_row_blocks_e_; ++r) {
-    const int row_block_pos = bs->rows[r].block.position;
-    const int row_block_size = bs->rows[r].block.size;
-    const std::vector<Cell>& cells = bs->rows[r].cells;
-    for (int c = 1; c < cells.size(); ++c) {
-      const int col_block_id = cells[c].block_id;
-      const int col_block_pos = bs->cols[col_block_id].position;
-      const int col_block_size = bs->cols[col_block_id].size;
-      // clang-format off
-      MatrixTransposeVectorMultiply<kRowBlockSize, kFBlockSize, 1>(
-        values + cells[c].position, row_block_size, col_block_size,
-        x + row_block_pos,
-        y + col_block_pos - num_cols_e_);
-      // clang-format on
-    }
-  }
-
-  for (int r = num_row_blocks_e_; r < bs->rows.size(); ++r) {
-    const int row_block_pos = bs->rows[r].block.position;
-    const int row_block_size = bs->rows[r].block.size;
-    const std::vector<Cell>& cells = bs->rows[r].cells;
-    for (const auto& cell : cells) {
-      const int col_block_id = cell.block_id;
-      const int col_block_pos = bs->cols[col_block_id].position;
-      const int col_block_size = bs->cols[col_block_id].size;
-      // clang-format off
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-        values + cell.position, row_block_size, col_block_size,
-        x + row_block_pos,
-        y + col_block_pos - num_cols_e_);
-      // clang-format on
-    }
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    LeftMultiplyAndAccumulateFMultiThreaded(const double* x, double* y) const {
-  auto transpose_bs = matrix_.transpose_block_structure();
-  CHECK(transpose_bs != nullptr);
-  // Local copies of class members  in order to avoid capturing pointer to the
-  // whole object in lambda function
-  auto values = matrix_.values();
-  const int num_row_blocks_e = num_row_blocks_e_;
-  const int num_cols_e = num_cols_e_;
-  ParallelFor(
-      options_.context,
-      num_col_blocks_e_,
-      num_col_blocks_e_ + num_col_blocks_f_,
-      options_.num_threads,
-      [values, transpose_bs, num_row_blocks_e, num_cols_e, x, y](
-          int row_block_id) {
-        int row_block_pos = transpose_bs->rows[row_block_id].block.position;
-        int row_block_size = transpose_bs->rows[row_block_id].block.size;
-        auto& cells = transpose_bs->rows[row_block_id].cells;
-
-        const int num_cells = cells.size();
-        int cell_idx = 0;
-        for (; cell_idx < num_cells; ++cell_idx) {
-          auto& cell = cells[cell_idx];
-          const int col_block_id = cell.block_id;
-          const int col_block_size = transpose_bs->cols[col_block_id].size;
-          const int col_block_pos = transpose_bs->cols[col_block_id].position;
-          if (col_block_id >= num_row_blocks_e) break;
-
-          MatrixTransposeVectorMultiply<kRowBlockSize, kFBlockSize, 1>(
-              values + cell.position,
-              col_block_size,
-              row_block_size,
-              x + col_block_pos,
-              y + row_block_pos - num_cols_e);
-        }
-        for (; cell_idx < num_cells; ++cell_idx) {
-          auto& cell = cells[cell_idx];
-          const int col_block_id = cell.block_id;
-          const int col_block_size = transpose_bs->cols[col_block_id].size;
-          const int col_block_pos = transpose_bs->cols[col_block_id].position;
-          MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-              values + cell.position,
-              col_block_size,
-              row_block_size,
-              x + col_block_pos,
-              y + row_block_pos - num_cols_e);
-        }
-      },
-      f_cols_partition());
-}
-
-// Given a range of columns blocks of a matrix m, compute the block
-// structure of the block diagonal of the matrix m(:,
-// start_col_block:end_col_block)'m(:, start_col_block:end_col_block)
-// and return a BlockSparseMatrix with this block structure. The
-// caller owns the result.
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-std::unique_ptr<BlockSparseMatrix>
-PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    CreateBlockDiagonalMatrixLayout(int start_col_block,
-                                    int end_col_block) const {
-  const CompressedRowBlockStructure* bs = matrix_.block_structure();
-  auto* block_diagonal_structure = new CompressedRowBlockStructure;
-
-  int block_position = 0;
-  int diagonal_cell_position = 0;
-
-  // Iterate over the column blocks, creating a new diagonal block for
-  // each column block.
-  for (int c = start_col_block; c < end_col_block; ++c) {
-    const Block& block = bs->cols[c];
-    block_diagonal_structure->cols.emplace_back();
-    Block& diagonal_block = block_diagonal_structure->cols.back();
-    diagonal_block.size = block.size;
-    diagonal_block.position = block_position;
-
-    block_diagonal_structure->rows.emplace_back();
-    CompressedRow& row = block_diagonal_structure->rows.back();
-    row.block = diagonal_block;
-
-    row.cells.emplace_back();
-    Cell& cell = row.cells.back();
-    cell.block_id = c - start_col_block;
-    cell.position = diagonal_cell_position;
-
-    block_position += block.size;
-    diagonal_cell_position += block.size * block.size;
-  }
-
-  // Build a BlockSparseMatrix with the just computed block
-  // structure.
-  return std::make_unique<BlockSparseMatrix>(block_diagonal_structure);
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-std::unique_ptr<BlockSparseMatrix>
-PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    CreateBlockDiagonalEtE() const {
-  std::unique_ptr<BlockSparseMatrix> block_diagonal =
-      CreateBlockDiagonalMatrixLayout(0, num_col_blocks_e_);
-  UpdateBlockDiagonalEtE(block_diagonal.get());
-  return block_diagonal;
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-std::unique_ptr<BlockSparseMatrix>
-PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    CreateBlockDiagonalFtF() const {
-  std::unique_ptr<BlockSparseMatrix> block_diagonal =
-      CreateBlockDiagonalMatrixLayout(num_col_blocks_e_,
-                                      num_col_blocks_e_ + num_col_blocks_f_);
-  UpdateBlockDiagonalFtF(block_diagonal.get());
-  return block_diagonal;
-}
-
-// Similar to the code in RightMultiplyAndAccumulateE, except instead of the
-// matrix vector multiply its an outer product.
-//
-//    block_diagonal = block_diagonal(E'E)
-//
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    UpdateBlockDiagonalEtESingleThreaded(
-        BlockSparseMatrix* block_diagonal) const {
-  auto bs = matrix_.block_structure();
-  auto block_diagonal_structure = block_diagonal->block_structure();
-
-  block_diagonal->SetZero();
-  const double* values = matrix_.values();
-  for (int r = 0; r < num_row_blocks_e_; ++r) {
-    const Cell& cell = bs->rows[r].cells[0];
-    const int row_block_size = bs->rows[r].block.size;
-    const int block_id = cell.block_id;
-    const int col_block_size = bs->cols[block_id].size;
-    const int cell_position =
-        block_diagonal_structure->rows[block_id].cells[0].position;
-
-    // clang-format off
-    MatrixTransposeMatrixMultiply
-        <kRowBlockSize, kEBlockSize, kRowBlockSize, kEBlockSize, 1>(
-            values + cell.position, row_block_size, col_block_size,
-            values + cell.position, row_block_size, col_block_size,
-            block_diagonal->mutable_values() + cell_position,
-            0, 0, col_block_size, col_block_size);
-    // clang-format on
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    UpdateBlockDiagonalEtEMultiThreaded(
-        BlockSparseMatrix* block_diagonal) const {
-  auto transpose_block_structure = matrix_.transpose_block_structure();
-  CHECK(transpose_block_structure != nullptr);
-  auto block_diagonal_structure = block_diagonal->block_structure();
-
-  const double* values = matrix_.values();
-  double* values_diagonal = block_diagonal->mutable_values();
-  ParallelFor(
-      options_.context,
-      0,
-      num_col_blocks_e_,
-      options_.num_threads,
-      [values,
-       transpose_block_structure,
-       values_diagonal,
-       block_diagonal_structure](int col_block_id) {
-        int cell_position =
-            block_diagonal_structure->rows[col_block_id].cells[0].position;
-        double* cell_values = values_diagonal + cell_position;
-        int col_block_size =
-            transpose_block_structure->rows[col_block_id].block.size;
-        auto& cells = transpose_block_structure->rows[col_block_id].cells;
-        MatrixRef(cell_values, col_block_size, col_block_size).setZero();
-
-        for (auto& c : cells) {
-          int row_block_size = transpose_block_structure->cols[c.block_id].size;
-          // clang-format off
-          MatrixTransposeMatrixMultiply<kRowBlockSize, kEBlockSize, kRowBlockSize, kEBlockSize, 1>(
-            values + c.position, row_block_size, col_block_size,
-            values + c.position, row_block_size, col_block_size,
-            cell_values, 0, 0, col_block_size, col_block_size);
-          // clang-format on
-        }
-      },
-      e_cols_partition_);
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    UpdateBlockDiagonalEtE(BlockSparseMatrix* block_diagonal) const {
-  if (options_.num_threads == 1) {
-    UpdateBlockDiagonalEtESingleThreaded(block_diagonal);
-  } else {
-    CHECK(options_.context != nullptr);
-    UpdateBlockDiagonalEtEMultiThreaded(block_diagonal);
-  }
-}
-
-// Similar to the code in RightMultiplyAndAccumulateF, except instead of the
-// matrix vector multiply its an outer product.
-//
-//   block_diagonal = block_diagonal(F'F)
-//
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    UpdateBlockDiagonalFtFSingleThreaded(
-        BlockSparseMatrix* block_diagonal) const {
-  auto bs = matrix_.block_structure();
-  auto block_diagonal_structure = block_diagonal->block_structure();
-
-  block_diagonal->SetZero();
-  const double* values = matrix_.values();
-  for (int r = 0; r < num_row_blocks_e_; ++r) {
-    const int row_block_size = bs->rows[r].block.size;
-    const std::vector<Cell>& cells = bs->rows[r].cells;
-    for (int c = 1; c < cells.size(); ++c) {
-      const int col_block_id = cells[c].block_id;
-      const int col_block_size = bs->cols[col_block_id].size;
-      const int diagonal_block_id = col_block_id - num_col_blocks_e_;
-      const int cell_position =
-          block_diagonal_structure->rows[diagonal_block_id].cells[0].position;
-
-      // clang-format off
-      MatrixTransposeMatrixMultiply
-          <kRowBlockSize, kFBlockSize, kRowBlockSize, kFBlockSize, 1>(
-              values + cells[c].position, row_block_size, col_block_size,
-              values + cells[c].position, row_block_size, col_block_size,
-              block_diagonal->mutable_values() + cell_position,
-              0, 0, col_block_size, col_block_size);
-      // clang-format on
-    }
-  }
-
-  for (int r = num_row_blocks_e_; r < bs->rows.size(); ++r) {
-    const int row_block_size = bs->rows[r].block.size;
-    const std::vector<Cell>& cells = bs->rows[r].cells;
-    for (const auto& cell : cells) {
-      const int col_block_id = cell.block_id;
-      const int col_block_size = bs->cols[col_block_id].size;
-      const int diagonal_block_id = col_block_id - num_col_blocks_e_;
-      const int cell_position =
-          block_diagonal_structure->rows[diagonal_block_id].cells[0].position;
-
-      // clang-format off
-      MatrixTransposeMatrixMultiply
-          <Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, 1>(
-              values + cell.position, row_block_size, col_block_size,
-              values + cell.position, row_block_size, col_block_size,
-              block_diagonal->mutable_values() + cell_position,
-              0, 0, col_block_size, col_block_size);
-      // clang-format on
-    }
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    UpdateBlockDiagonalFtFMultiThreaded(
-        BlockSparseMatrix* block_diagonal) const {
-  auto transpose_block_structure = matrix_.transpose_block_structure();
-  CHECK(transpose_block_structure != nullptr);
-  auto block_diagonal_structure = block_diagonal->block_structure();
-
-  const double* values = matrix_.values();
-  double* values_diagonal = block_diagonal->mutable_values();
-
-  const int num_col_blocks_e = num_col_blocks_e_;
-  const int num_row_blocks_e = num_row_blocks_e_;
-  ParallelFor(
-      options_.context,
-      num_col_blocks_e_,
-      num_col_blocks_e + num_col_blocks_f_,
-      options_.num_threads,
-      [transpose_block_structure,
-       block_diagonal_structure,
-       num_col_blocks_e,
-       num_row_blocks_e,
-       values,
-       values_diagonal](int col_block_id) {
-        const int col_block_size =
-            transpose_block_structure->rows[col_block_id].block.size;
-        const int diagonal_block_id = col_block_id - num_col_blocks_e;
-        const int cell_position =
-            block_diagonal_structure->rows[diagonal_block_id].cells[0].position;
-        double* cell_values = values_diagonal + cell_position;
-
-        MatrixRef(cell_values, col_block_size, col_block_size).setZero();
-
-        auto& cells = transpose_block_structure->rows[col_block_id].cells;
-        const int num_cells = cells.size();
-        int i = 0;
-        for (; i < num_cells; ++i) {
-          auto& cell = cells[i];
-          const int row_block_id = cell.block_id;
-          if (row_block_id >= num_row_blocks_e) break;
-          const int row_block_size =
-              transpose_block_structure->cols[row_block_id].size;
-          // clang-format off
-          MatrixTransposeMatrixMultiply
-              <kRowBlockSize, kFBlockSize, kRowBlockSize, kFBlockSize, 1>(
-                  values + cell.position, row_block_size, col_block_size,
-                  values + cell.position, row_block_size, col_block_size,
-                  cell_values, 0, 0, col_block_size, col_block_size);
-          // clang-format on
-        }
-        for (; i < num_cells; ++i) {
-          auto& cell = cells[i];
-          const int row_block_id = cell.block_id;
-          const int row_block_size =
-              transpose_block_structure->cols[row_block_id].size;
-          // clang-format off
-          MatrixTransposeMatrixMultiply
-              <Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, 1>(
-                  values + cell.position, row_block_size, col_block_size,
-                  values + cell.position, row_block_size, col_block_size,
-                  cell_values, 0, 0, col_block_size, col_block_size);
-          // clang-format on
-        }
-      },
-      f_cols_partition_);
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void PartitionedMatrixView<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    UpdateBlockDiagonalFtF(BlockSparseMatrix* block_diagonal) const {
-  if (options_.num_threads == 1) {
-    UpdateBlockDiagonalFtFSingleThreaded(block_diagonal);
-  } else {
-    CHECK(options_.context != nullptr);
-    UpdateBlockDiagonalFtFMultiThreaded(block_diagonal);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/partitioned_matrix_view_template.py b/third_party/ceres/internal/ceres/partitioned_matrix_view_template.py
deleted file mode 100644
index 9af4c0e..0000000
--- a/third_party/ceres/internal/ceres/partitioned_matrix_view_template.py
+++ /dev/null
@@ -1,149 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: sameeragarwal@google.com (Sameer Agarwal)
-#
-# Script for explicitly generating template specialization of the
-# PartitionedMatrixView class. Explicitly generating these
-# instantiations in separate .cc files breaks the compilation into
-# separate compilation unit rather than one large cc file.
-#
-# This script creates two sets of files.
-#
-# 1. partitioned_matrix_view_x_x_x.cc
-# where the x indicates the template parameters and
-#
-# 2. partitioned_matrix_view.cc
-#
-# that contains a factory function for instantiating these classes
-# based on runtime parameters.
-#
-# The list of tuples, specializations indicates the set of
-# specializations that is generated.
-
-HEADER = """// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of PartitionedMatrixView.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-"""
-
-DYNAMIC_FILE = """
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<%s,
-                                     %s,
-                                     %s>;
-
-}  // namespace ceres::internal
-"""
-
-SPECIALIZATION_FILE = """
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/partitioned_matrix_view_impl.h"
-
-namespace ceres::internal {
-
-template class PartitionedMatrixView<%s, %s, %s>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
-"""
-
-FACTORY_FILE_HEADER = """
-#include <memory>
-
-#include "ceres/linear_solver.h"
-#include "ceres/partitioned_matrix_view.h"
-
-namespace ceres::internal {
-
-PartitionedMatrixViewBase::~PartitionedMatrixViewBase() = default;
-
-std::unique_ptr<PartitionedMatrixViewBase> PartitionedMatrixViewBase::Create(
-    const LinearSolver::Options& options, const BlockSparseMatrix& matrix) {
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-"""
-FACTORY = """  return std::make_unique<PartitionedMatrixView<%s,%s, %s>>(
-                   options, matrix);"""
-
-FACTORY_FOOTER = """
-#endif
-  VLOG(1) << "Template specializations not found for <"
-          << options.row_block_size << "," << options.e_block_size << ","
-          << options.f_block_size << ">";
-  return std::make_unique<PartitionedMatrixView<Eigen::Dynamic,
-                                                Eigen::Dynamic,
-                                                Eigen::Dynamic>>(
-      options, matrix);
-};
-
-}  // namespace ceres::internal
-"""
diff --git a/third_party/ceres/internal/ceres/partitioned_matrix_view_test.cc b/third_party/ceres/internal/ceres/partitioned_matrix_view_test.cc
deleted file mode 100644
index 3addba6..0000000
--- a/third_party/ceres/internal/ceres/partitioned_matrix_view_test.cc
+++ /dev/null
@@ -1,272 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/partitioned_matrix_view.h"
-
-#include <memory>
-#include <random>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/sparse_matrix.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-const double kEpsilon = 1e-14;
-
-// Param = <problem_id, num_threads>
-using Param = ::testing::tuple<int, int>;
-
-static std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  Param param = info.param;
-  std::stringstream ss;
-  ss << ::testing::get<0>(param) << "_" << ::testing::get<1>(param);
-  return ss.str();
-}
-
-class PartitionedMatrixViewTest : public ::testing::TestWithParam<Param> {
- protected:
-  void SetUp() final {
-    const int problem_id = ::testing::get<0>(GetParam());
-    const int num_threads = ::testing::get<1>(GetParam());
-    auto problem = CreateLinearLeastSquaresProblemFromId(problem_id);
-    CHECK(problem != nullptr);
-    A_ = std::move(problem->A);
-    auto block_sparse = down_cast<BlockSparseMatrix*>(A_.get());
-
-    options_.num_threads = num_threads;
-    options_.context = &context_;
-    options_.elimination_groups.push_back(problem->num_eliminate_blocks);
-    pmv_ = PartitionedMatrixViewBase::Create(options_, *block_sparse);
-
-    LinearSolver::Options options_single_threaded = options_;
-    options_single_threaded.num_threads = 1;
-    pmv_single_threaded_ =
-        PartitionedMatrixViewBase::Create(options_, *block_sparse);
-
-    EXPECT_EQ(pmv_->num_col_blocks_e(), problem->num_eliminate_blocks);
-    EXPECT_EQ(pmv_->num_col_blocks_f(),
-              block_sparse->block_structure()->cols.size() -
-                  problem->num_eliminate_blocks);
-    EXPECT_EQ(pmv_->num_cols(), A_->num_cols());
-    EXPECT_EQ(pmv_->num_rows(), A_->num_rows());
-  }
-
-  double RandDouble() { return distribution_(prng_); }
-
-  LinearSolver::Options options_;
-  ContextImpl context_;
-  std::unique_ptr<LinearLeastSquaresProblem> problem_;
-  std::unique_ptr<SparseMatrix> A_;
-  std::unique_ptr<PartitionedMatrixViewBase> pmv_;
-  std::unique_ptr<PartitionedMatrixViewBase> pmv_single_threaded_;
-  std::mt19937 prng_;
-  std::uniform_real_distribution<double> distribution_ =
-      std::uniform_real_distribution<double>(0.0, 1.0);
-};
-
-TEST_P(PartitionedMatrixViewTest, RightMultiplyAndAccumulateE) {
-  Vector x1(pmv_->num_cols_e());
-  Vector x2(pmv_->num_cols());
-  x2.setZero();
-
-  for (int i = 0; i < pmv_->num_cols_e(); ++i) {
-    x1(i) = x2(i) = RandDouble();
-  }
-
-  Vector expected = Vector::Zero(pmv_->num_rows());
-  A_->RightMultiplyAndAccumulate(x2.data(), expected.data());
-
-  Vector actual = Vector::Zero(pmv_->num_rows());
-  pmv_->RightMultiplyAndAccumulateE(x1.data(), actual.data());
-
-  for (int i = 0; i < pmv_->num_rows(); ++i) {
-    EXPECT_NEAR(actual(i), expected(i), kEpsilon);
-  }
-}
-
-TEST_P(PartitionedMatrixViewTest, RightMultiplyAndAccumulateF) {
-  Vector x1(pmv_->num_cols_f());
-  Vector x2(pmv_->num_cols());
-  x2.setZero();
-
-  for (int i = 0; i < pmv_->num_cols_f(); ++i) {
-    x1(i) = x2(i + pmv_->num_cols_e()) = RandDouble();
-  }
-
-  Vector actual = Vector::Zero(pmv_->num_rows());
-  pmv_->RightMultiplyAndAccumulateF(x1.data(), actual.data());
-
-  Vector expected = Vector::Zero(pmv_->num_rows());
-  A_->RightMultiplyAndAccumulate(x2.data(), expected.data());
-
-  for (int i = 0; i < pmv_->num_rows(); ++i) {
-    EXPECT_NEAR(actual(i), expected(i), kEpsilon);
-  }
-}
-
-TEST_P(PartitionedMatrixViewTest, LeftMultiplyAndAccumulate) {
-  Vector x = Vector::Zero(pmv_->num_rows());
-  for (int i = 0; i < pmv_->num_rows(); ++i) {
-    x(i) = RandDouble();
-  }
-  Vector x_pre = x;
-
-  Vector expected = Vector::Zero(pmv_->num_cols());
-  Vector e_actual = Vector::Zero(pmv_->num_cols_e());
-  Vector f_actual = Vector::Zero(pmv_->num_cols_f());
-
-  A_->LeftMultiplyAndAccumulate(x.data(), expected.data());
-  pmv_->LeftMultiplyAndAccumulateE(x.data(), e_actual.data());
-  pmv_->LeftMultiplyAndAccumulateF(x.data(), f_actual.data());
-
-  for (int i = 0; i < pmv_->num_cols(); ++i) {
-    EXPECT_NEAR(expected(i),
-                (i < pmv_->num_cols_e()) ? e_actual(i)
-                                         : f_actual(i - pmv_->num_cols_e()),
-                kEpsilon);
-  }
-}
-
-TEST_P(PartitionedMatrixViewTest, BlockDiagonalFtF) {
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_ff(
-      pmv_->CreateBlockDiagonalFtF());
-  const auto bs_diagonal = block_diagonal_ff->block_structure();
-  const int num_rows = pmv_->num_rows();
-  const int num_cols_f = pmv_->num_cols_f();
-  const int num_cols_e = pmv_->num_cols_e();
-  const int num_col_blocks_f = pmv_->num_col_blocks_f();
-  const int num_col_blocks_e = pmv_->num_col_blocks_e();
-
-  CHECK_EQ(block_diagonal_ff->num_rows(), num_cols_f);
-  CHECK_EQ(block_diagonal_ff->num_cols(), num_cols_f);
-
-  EXPECT_EQ(bs_diagonal->cols.size(), num_col_blocks_f);
-  EXPECT_EQ(bs_diagonal->rows.size(), num_col_blocks_f);
-
-  Matrix EF;
-  A_->ToDenseMatrix(&EF);
-  const auto F = EF.topRightCorner(num_rows, num_cols_f);
-
-  Matrix expected_FtF = F.transpose() * F;
-  Matrix actual_FtF;
-  block_diagonal_ff->ToDenseMatrix(&actual_FtF);
-
-  // FtF might be not block-diagonal
-  auto bs = down_cast<BlockSparseMatrix*>(A_.get())->block_structure();
-  for (int i = 0; i < num_col_blocks_f; ++i) {
-    const auto col_block_f = bs->cols[num_col_blocks_e + i];
-    const int block_size = col_block_f.size;
-    const int block_pos = col_block_f.position - num_cols_e;
-    const auto cell_expected =
-        expected_FtF.block(block_pos, block_pos, block_size, block_size);
-    auto cell_actual =
-        actual_FtF.block(block_pos, block_pos, block_size, block_size);
-    cell_actual -= cell_expected;
-    EXPECT_NEAR(cell_actual.norm(), 0., kEpsilon);
-  }
-  // There should be nothing remaining outside block-diagonal
-  EXPECT_NEAR(actual_FtF.norm(), 0., kEpsilon);
-}
-
-TEST_P(PartitionedMatrixViewTest, BlockDiagonalEtE) {
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_ee(
-      pmv_->CreateBlockDiagonalEtE());
-  const CompressedRowBlockStructure* bs = block_diagonal_ee->block_structure();
-  const int num_rows = pmv_->num_rows();
-  const int num_cols_e = pmv_->num_cols_e();
-  const int num_col_blocks_e = pmv_->num_col_blocks_e();
-
-  CHECK_EQ(block_diagonal_ee->num_rows(), num_cols_e);
-  CHECK_EQ(block_diagonal_ee->num_cols(), num_cols_e);
-
-  EXPECT_EQ(bs->cols.size(), num_col_blocks_e);
-  EXPECT_EQ(bs->rows.size(), num_col_blocks_e);
-
-  Matrix EF;
-  A_->ToDenseMatrix(&EF);
-  const auto E = EF.topLeftCorner(num_rows, num_cols_e);
-
-  Matrix expected_EtE = E.transpose() * E;
-  Matrix actual_EtE;
-  block_diagonal_ee->ToDenseMatrix(&actual_EtE);
-
-  EXPECT_NEAR((expected_EtE - actual_EtE).norm(), 0., kEpsilon);
-}
-
-TEST_P(PartitionedMatrixViewTest, UpdateBlockDiagonalEtE) {
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_ete(
-      pmv_->CreateBlockDiagonalEtE());
-  const int num_cols = pmv_->num_cols_e();
-
-  Matrix multi_threaded(num_cols, num_cols);
-  pmv_->UpdateBlockDiagonalEtE(block_diagonal_ete.get());
-  block_diagonal_ete->ToDenseMatrix(&multi_threaded);
-
-  Matrix single_threaded(num_cols, num_cols);
-  pmv_single_threaded_->UpdateBlockDiagonalEtE(block_diagonal_ete.get());
-  block_diagonal_ete->ToDenseMatrix(&single_threaded);
-
-  EXPECT_NEAR((multi_threaded - single_threaded).norm(), 0., kEpsilon);
-}
-
-TEST_P(PartitionedMatrixViewTest, UpdateBlockDiagonalFtF) {
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_ftf(
-      pmv_->CreateBlockDiagonalFtF());
-  const int num_cols = pmv_->num_cols_f();
-
-  Matrix multi_threaded(num_cols, num_cols);
-  pmv_->UpdateBlockDiagonalFtF(block_diagonal_ftf.get());
-  block_diagonal_ftf->ToDenseMatrix(&multi_threaded);
-
-  Matrix single_threaded(num_cols, num_cols);
-  pmv_single_threaded_->UpdateBlockDiagonalFtF(block_diagonal_ftf.get());
-  block_diagonal_ftf->ToDenseMatrix(&single_threaded);
-
-  EXPECT_NEAR((multi_threaded - single_threaded).norm(), 0., kEpsilon);
-}
-
-INSTANTIATE_TEST_SUITE_P(
-    ParallelProducts,
-    PartitionedMatrixViewTest,
-    ::testing::Combine(::testing::Values(2, 4, 6),
-                       ::testing::Values(1, 2, 3, 4, 5, 6, 7, 8)),
-    ParamInfoToString);
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/polynomial.cc b/third_party/ceres/internal/ceres/polynomial.cc
deleted file mode 100644
index 8e99e34..0000000
--- a/third_party/ceres/internal/ceres/polynomial.cc
+++ /dev/null
@@ -1,389 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: moll.markus@arcor.de (Markus Moll)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/polynomial.h"
-
-#include <cmath>
-#include <cstddef>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/function_sample.h"
-#include "ceres/internal/export.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-namespace {
-
-// Balancing function as described by B. N. Parlett and C. Reinsch,
-// "Balancing a Matrix for Calculation of Eigenvalues and Eigenvectors".
-// In: Numerische Mathematik, Volume 13, Number 4 (1969), 293-304,
-// Springer Berlin / Heidelberg. DOI: 10.1007/BF02165404
-void BalanceCompanionMatrix(Matrix* companion_matrix_ptr) {
-  CHECK(companion_matrix_ptr != nullptr);
-  Matrix& companion_matrix = *companion_matrix_ptr;
-  Matrix companion_matrix_offdiagonal = companion_matrix;
-  companion_matrix_offdiagonal.diagonal().setZero();
-
-  const int degree = companion_matrix.rows();
-
-  // gamma <= 1 controls how much a change in the scaling has to
-  // lower the 1-norm of the companion matrix to be accepted.
-  //
-  // gamma = 1 seems to lead to cycles (numerical issues?), so
-  // we set it slightly lower.
-  const double gamma = 0.9;
-
-  // Greedily scale row/column pairs until there is no change.
-  bool scaling_has_changed;
-  do {
-    scaling_has_changed = false;
-
-    for (int i = 0; i < degree; ++i) {
-      const double row_norm = companion_matrix_offdiagonal.row(i).lpNorm<1>();
-      const double col_norm = companion_matrix_offdiagonal.col(i).lpNorm<1>();
-
-      // Decompose row_norm/col_norm into mantissa * 2^exponent,
-      // where 0.5 <= mantissa < 1. Discard mantissa (return value
-      // of frexp), as only the exponent is needed.
-      int exponent = 0;
-      std::frexp(row_norm / col_norm, &exponent);
-      exponent /= 2;
-
-      if (exponent != 0) {
-        const double scaled_col_norm = std::ldexp(col_norm, exponent);
-        const double scaled_row_norm = std::ldexp(row_norm, -exponent);
-        if (scaled_col_norm + scaled_row_norm < gamma * (col_norm + row_norm)) {
-          // Accept the new scaling. (Multiplication by powers of 2 should not
-          // introduce rounding errors (ignoring non-normalized numbers and
-          // over- or underflow))
-          scaling_has_changed = true;
-          companion_matrix_offdiagonal.row(i) *= std::ldexp(1.0, -exponent);
-          companion_matrix_offdiagonal.col(i) *= std::ldexp(1.0, exponent);
-        }
-      }
-    }
-  } while (scaling_has_changed);
-
-  companion_matrix_offdiagonal.diagonal() = companion_matrix.diagonal();
-  companion_matrix = companion_matrix_offdiagonal;
-  VLOG(3) << "Balanced companion matrix is\n" << companion_matrix;
-}
-
-void BuildCompanionMatrix(const Vector& polynomial,
-                          Matrix* companion_matrix_ptr) {
-  CHECK(companion_matrix_ptr != nullptr);
-  Matrix& companion_matrix = *companion_matrix_ptr;
-
-  const int degree = polynomial.size() - 1;
-
-  companion_matrix.resize(degree, degree);
-  companion_matrix.setZero();
-  companion_matrix.diagonal(-1).setOnes();
-  companion_matrix.col(degree - 1) = -polynomial.reverse().head(degree);
-}
-
-// Remove leading terms with zero coefficients.
-Vector RemoveLeadingZeros(const Vector& polynomial_in) {
-  int i = 0;
-  while (i < (polynomial_in.size() - 1) && polynomial_in(i) == 0.0) {
-    ++i;
-  }
-  return polynomial_in.tail(polynomial_in.size() - i);
-}
-
-void FindLinearPolynomialRoots(const Vector& polynomial,
-                               Vector* real,
-                               Vector* imaginary) {
-  CHECK_EQ(polynomial.size(), 2);
-  if (real != nullptr) {
-    real->resize(1);
-    (*real)(0) = -polynomial(1) / polynomial(0);
-  }
-
-  if (imaginary != nullptr) {
-    imaginary->setZero(1);
-  }
-}
-
-void FindQuadraticPolynomialRoots(const Vector& polynomial,
-                                  Vector* real,
-                                  Vector* imaginary) {
-  CHECK_EQ(polynomial.size(), 3);
-  const double a = polynomial(0);
-  const double b = polynomial(1);
-  const double c = polynomial(2);
-  const double D = b * b - 4 * a * c;
-  const double sqrt_D = sqrt(fabs(D));
-  if (real != nullptr) {
-    real->setZero(2);
-  }
-  if (imaginary != nullptr) {
-    imaginary->setZero(2);
-  }
-
-  // Real roots.
-  if (D >= 0) {
-    if (real != nullptr) {
-      // Stable quadratic roots according to BKP Horn.
-      // http://people.csail.mit.edu/bkph/articles/Quadratics.pdf
-      if (b >= 0) {
-        (*real)(0) = (-b - sqrt_D) / (2.0 * a);
-        (*real)(1) = (2.0 * c) / (-b - sqrt_D);
-      } else {
-        (*real)(0) = (2.0 * c) / (-b + sqrt_D);
-        (*real)(1) = (-b + sqrt_D) / (2.0 * a);
-      }
-    }
-    return;
-  }
-
-  // Use the normal quadratic formula for the complex case.
-  if (real != nullptr) {
-    (*real)(0) = -b / (2.0 * a);
-    (*real)(1) = -b / (2.0 * a);
-  }
-  if (imaginary != nullptr) {
-    (*imaginary)(0) = sqrt_D / (2.0 * a);
-    (*imaginary)(1) = -sqrt_D / (2.0 * a);
-  }
-}
-}  // namespace
-
-bool FindPolynomialRoots(const Vector& polynomial_in,
-                         Vector* real,
-                         Vector* imaginary) {
-  if (polynomial_in.size() == 0) {
-    LOG(ERROR) << "Invalid polynomial of size 0 passed to FindPolynomialRoots";
-    return false;
-  }
-
-  Vector polynomial = RemoveLeadingZeros(polynomial_in);
-  const int degree = polynomial.size() - 1;
-
-  VLOG(3) << "Input polynomial: " << polynomial_in.transpose();
-  if (polynomial.size() != polynomial_in.size()) {
-    VLOG(3) << "Trimmed polynomial: " << polynomial.transpose();
-  }
-
-  // Is the polynomial constant?
-  if (degree == 0) {
-    LOG(WARNING) << "Trying to extract roots from a constant "
-                 << "polynomial in FindPolynomialRoots";
-    // We return true with no roots, not false, as if the polynomial is constant
-    // it is correct that there are no roots. It is not the case that they were
-    // there, but that we have failed to extract them.
-    return true;
-  }
-
-  // Linear
-  if (degree == 1) {
-    FindLinearPolynomialRoots(polynomial, real, imaginary);
-    return true;
-  }
-
-  // Quadratic
-  if (degree == 2) {
-    FindQuadraticPolynomialRoots(polynomial, real, imaginary);
-    return true;
-  }
-
-  // The degree is now known to be at least 3. For cubic or higher
-  // roots we use the method of companion matrices.
-
-  // Divide by leading term
-  const double leading_term = polynomial(0);
-  polynomial /= leading_term;
-
-  // Build and balance the companion matrix to the polynomial.
-  Matrix companion_matrix(degree, degree);
-  BuildCompanionMatrix(polynomial, &companion_matrix);
-  BalanceCompanionMatrix(&companion_matrix);
-
-  // Find its (complex) eigenvalues.
-  Eigen::EigenSolver<Matrix> solver(companion_matrix, false);
-  if (solver.info() != Eigen::Success) {
-    LOG(ERROR) << "Failed to extract eigenvalues from companion matrix.";
-    return false;
-  }
-
-  // Output roots
-  if (real != nullptr) {
-    *real = solver.eigenvalues().real();
-  } else {
-    LOG(WARNING) << "nullptr pointer passed as real argument to "
-                 << "FindPolynomialRoots. Real parts of the roots will not "
-                 << "be returned.";
-  }
-  if (imaginary != nullptr) {
-    *imaginary = solver.eigenvalues().imag();
-  }
-  return true;
-}
-
-Vector DifferentiatePolynomial(const Vector& polynomial) {
-  const int degree = polynomial.rows() - 1;
-  CHECK_GE(degree, 0);
-
-  // Degree zero polynomials are constants, and their derivative does
-  // not result in a smaller degree polynomial, just a degree zero
-  // polynomial with value zero.
-  if (degree == 0) {
-    return Eigen::VectorXd::Zero(1);
-  }
-
-  Vector derivative(degree);
-  for (int i = 0; i < degree; ++i) {
-    derivative(i) = (degree - i) * polynomial(i);
-  }
-
-  return derivative;
-}
-
-void MinimizePolynomial(const Vector& polynomial,
-                        const double x_min,
-                        const double x_max,
-                        double* optimal_x,
-                        double* optimal_value) {
-  // Find the minimum of the polynomial at the two ends.
-  //
-  // We start by inspecting the middle of the interval. Technically
-  // this is not needed, but we do this to make this code as close to
-  // the minFunc package as possible.
-  *optimal_x = (x_min + x_max) / 2.0;
-  *optimal_value = EvaluatePolynomial(polynomial, *optimal_x);
-
-  const double x_min_value = EvaluatePolynomial(polynomial, x_min);
-  if (x_min_value < *optimal_value) {
-    *optimal_value = x_min_value;
-    *optimal_x = x_min;
-  }
-
-  const double x_max_value = EvaluatePolynomial(polynomial, x_max);
-  if (x_max_value < *optimal_value) {
-    *optimal_value = x_max_value;
-    *optimal_x = x_max;
-  }
-
-  // If the polynomial is linear or constant, we are done.
-  if (polynomial.rows() <= 2) {
-    return;
-  }
-
-  const Vector derivative = DifferentiatePolynomial(polynomial);
-  Vector roots_real;
-  if (!FindPolynomialRoots(derivative, &roots_real, nullptr)) {
-    LOG(WARNING) << "Unable to find the critical points of "
-                 << "the interpolating polynomial.";
-    return;
-  }
-
-  // This is a bit of an overkill, as some of the roots may actually
-  // have a complex part, but its simpler to just check these values.
-  for (int i = 0; i < roots_real.rows(); ++i) {
-    const double root = roots_real(i);
-    if ((root < x_min) || (root > x_max)) {
-      continue;
-    }
-
-    const double value = EvaluatePolynomial(polynomial, root);
-    if (value < *optimal_value) {
-      *optimal_value = value;
-      *optimal_x = root;
-    }
-  }
-}
-
-Vector FindInterpolatingPolynomial(const std::vector<FunctionSample>& samples) {
-  const int num_samples = samples.size();
-  int num_constraints = 0;
-  for (int i = 0; i < num_samples; ++i) {
-    if (samples[i].value_is_valid) {
-      ++num_constraints;
-    }
-    if (samples[i].gradient_is_valid) {
-      ++num_constraints;
-    }
-  }
-
-  const int degree = num_constraints - 1;
-
-  Matrix lhs = Matrix::Zero(num_constraints, num_constraints);
-  Vector rhs = Vector::Zero(num_constraints);
-
-  int row = 0;
-  for (int i = 0; i < num_samples; ++i) {
-    const FunctionSample& sample = samples[i];
-    if (sample.value_is_valid) {
-      for (int j = 0; j <= degree; ++j) {
-        lhs(row, j) = pow(sample.x, degree - j);
-      }
-      rhs(row) = sample.value;
-      ++row;
-    }
-
-    if (sample.gradient_is_valid) {
-      for (int j = 0; j < degree; ++j) {
-        lhs(row, j) = (degree - j) * pow(sample.x, degree - j - 1);
-      }
-      rhs(row) = sample.gradient;
-      ++row;
-    }
-  }
-
-  // TODO(sameeragarwal): This is a hack.
-  // https://github.com/ceres-solver/ceres-solver/issues/248
-  Eigen::FullPivLU<Matrix> lu(lhs);
-  return lu.setThreshold(0.0).solve(rhs);
-}
-
-void MinimizeInterpolatingPolynomial(const std::vector<FunctionSample>& samples,
-                                     double x_min,
-                                     double x_max,
-                                     double* optimal_x,
-                                     double* optimal_value) {
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  MinimizePolynomial(polynomial, x_min, x_max, optimal_x, optimal_value);
-  for (const auto& sample : samples) {
-    if ((sample.x < x_min) || (sample.x > x_max)) {
-      continue;
-    }
-
-    const double value = EvaluatePolynomial(polynomial, sample.x);
-    if (value < *optimal_value) {
-      *optimal_x = sample.x;
-      *optimal_value = value;
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/polynomial.h b/third_party/ceres/internal/ceres/polynomial.h
deleted file mode 100644
index 8c40628..0000000
--- a/third_party/ceres/internal/ceres/polynomial.h
+++ /dev/null
@@ -1,122 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: moll.markus@arcor.de (Markus Moll)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_POLYNOMIAL_SOLVER_H_
-#define CERES_INTERNAL_POLYNOMIAL_SOLVER_H_
-
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-struct FunctionSample;
-
-// All polynomials are assumed to be the form
-//
-//   sum_{i=0}^N polynomial(i) x^{N-i}.
-//
-// and are given by a vector of coefficients of size N + 1.
-
-// Evaluate the polynomial at x using the Horner scheme.
-CERES_NO_EXPORT
-inline double EvaluatePolynomial(const Vector& polynomial, double x) {
-  double v = 0.0;
-  for (int i = 0; i < polynomial.size(); ++i) {
-    v = v * x + polynomial(i);
-  }
-  return v;
-}
-
-// Use the companion matrix eigenvalues to determine the roots of the
-// polynomial.
-//
-// This function returns true on success, false otherwise.
-// Failure indicates that the polynomial is invalid (of size 0) or
-// that the eigenvalues of the companion matrix could not be computed.
-// On failure, a more detailed message will be written to LOG(ERROR).
-// If real is not nullptr, the real parts of the roots will be returned in it.
-// Likewise, if imaginary is not nullptr, imaginary parts will be returned in
-// it.
-CERES_NO_EXPORT bool FindPolynomialRoots(const Vector& polynomial,
-                                         Vector* real,
-                                         Vector* imaginary);
-
-// Return the derivative of the given polynomial. It is assumed that
-// the input polynomial is at least of degree zero.
-CERES_NO_EXPORT Vector DifferentiatePolynomial(const Vector& polynomial);
-
-// Find the minimum value of the polynomial in the interval [x_min,
-// x_max]. The minimum is obtained by computing all the roots of the
-// derivative of the input polynomial. All real roots within the
-// interval [x_min, x_max] are considered as well as the end points
-// x_min and x_max. Since polynomials are differentiable functions,
-// this ensures that the true minimum is found.
-CERES_NO_EXPORT void MinimizePolynomial(const Vector& polynomial,
-                                        double x_min,
-                                        double x_max,
-                                        double* optimal_x,
-                                        double* optimal_value);
-
-// Given a set of function value and/or gradient samples, find a
-// polynomial whose value and gradients are exactly equal to the ones
-// in samples.
-//
-// Generally speaking,
-//
-// degree = # values + # gradients - 1
-//
-// Of course its possible to sample a polynomial any number of times,
-// in which case, generally speaking the spurious higher order
-// coefficients will be zero.
-CERES_NO_EXPORT Vector
-FindInterpolatingPolynomial(const std::vector<FunctionSample>& samples);
-
-// Interpolate the function described by samples with a polynomial,
-// and minimize it on the interval [x_min, x_max]. Depending on the
-// input samples, it is possible that the interpolation or the root
-// finding algorithms may fail due to numerical difficulties. But the
-// function is guaranteed to return its best guess of an answer, by
-// considering the samples and the end points as possible solutions.
-CERES_NO_EXPORT void MinimizeInterpolatingPolynomial(
-    const std::vector<FunctionSample>& samples,
-    double x_min,
-    double x_max,
-    double* optimal_x,
-    double* optimal_value);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_POLYNOMIAL_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/polynomial_test.cc b/third_party/ceres/internal/ceres/polynomial_test.cc
deleted file mode 100644
index a87ea46..0000000
--- a/third_party/ceres/internal/ceres/polynomial_test.cc
+++ /dev/null
@@ -1,513 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: moll.markus@arcor.de (Markus Moll)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/polynomial.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstddef>
-#include <limits>
-#include <vector>
-
-#include "ceres/function_sample.h"
-#include "ceres/test_util.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-namespace {
-
-// For IEEE-754 doubles, machine precision is about 2e-16.
-const double kEpsilon = 1e-13;
-const double kEpsilonLoose = 1e-9;
-
-// Return the constant polynomial p(x) = 1.23.
-Vector ConstantPolynomial(double value) {
-  Vector poly(1);
-  poly(0) = value;
-  return poly;
-}
-
-// Return the polynomial p(x) = poly(x) * (x - root).
-Vector AddRealRoot(const Vector& poly, double root) {
-  Vector poly2(poly.size() + 1);
-  poly2.setZero();
-  poly2.head(poly.size()) += poly;
-  poly2.tail(poly.size()) -= root * poly;
-  return poly2;
-}
-
-// Return the polynomial
-// p(x) = poly(x) * (x - real - imag*i) * (x - real + imag*i).
-Vector AddComplexRootPair(const Vector& poly, double real, double imag) {
-  Vector poly2(poly.size() + 2);
-  poly2.setZero();
-  // Multiply poly by x^2 - 2real + abs(real,imag)^2
-  poly2.head(poly.size()) += poly;
-  poly2.segment(1, poly.size()) -= 2 * real * poly;
-  poly2.tail(poly.size()) += (real * real + imag * imag) * poly;
-  return poly2;
-}
-
-// Sort the entries in a vector.
-// Needed because the roots are not returned in sorted order.
-Vector SortVector(const Vector& in) {
-  Vector out(in);
-  std::sort(out.data(), out.data() + out.size());
-  return out;
-}
-
-// Run a test with the polynomial defined by the N real roots in roots_real.
-// If use_real is false, nullptr is passed as the real argument to
-// FindPolynomialRoots. If use_imaginary is false, nullptr is passed as the
-// imaginary argument to FindPolynomialRoots.
-template <int N>
-void RunPolynomialTestRealRoots(const double (&real_roots)[N],
-                                bool use_real,
-                                bool use_imaginary,
-                                double epsilon) {
-  Vector real;
-  Vector imaginary;
-  Vector poly = ConstantPolynomial(1.23);
-  for (int i = 0; i < N; ++i) {
-    poly = AddRealRoot(poly, real_roots[i]);
-  }
-  Vector* const real_ptr = use_real ? &real : nullptr;
-  Vector* const imaginary_ptr = use_imaginary ? &imaginary : nullptr;
-  bool success = FindPolynomialRoots(poly, real_ptr, imaginary_ptr);
-
-  EXPECT_EQ(success, true);
-  if (use_real) {
-    EXPECT_EQ(real.size(), N);
-    real = SortVector(real);
-    ExpectArraysClose(N, real.data(), real_roots, epsilon);
-  }
-  if (use_imaginary) {
-    EXPECT_EQ(imaginary.size(), N);
-    const Vector zeros = Vector::Zero(N);
-    ExpectArraysClose(N, imaginary.data(), zeros.data(), epsilon);
-  }
-}
-}  // namespace
-
-TEST(Polynomial, InvalidPolynomialOfZeroLengthIsRejected) {
-  // Vector poly(0) is an ambiguous constructor call, so
-  // use the constructor with explicit column count.
-  Vector poly(0, 1);
-  Vector real;
-  Vector imag;
-  bool success = FindPolynomialRoots(poly, &real, &imag);
-
-  EXPECT_EQ(success, false);
-}
-
-TEST(Polynomial, ConstantPolynomialReturnsNoRoots) {
-  Vector poly = ConstantPolynomial(1.23);
-  Vector real;
-  Vector imag;
-  bool success = FindPolynomialRoots(poly, &real, &imag);
-
-  EXPECT_EQ(success, true);
-  EXPECT_EQ(real.size(), 0);
-  EXPECT_EQ(imag.size(), 0);
-}
-
-TEST(Polynomial, LinearPolynomialWithPositiveRootWorks) {
-  const double roots[1] = {42.42};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, LinearPolynomialWithNegativeRootWorks) {
-  const double roots[1] = {-42.42};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, QuadraticPolynomialWithPositiveRootsWorks) {
-  const double roots[2] = {1.0, 42.42};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, QuadraticPolynomialWithOneNegativeRootWorks) {
-  const double roots[2] = {-42.42, 1.0};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, QuadraticPolynomialWithTwoNegativeRootsWorks) {
-  const double roots[2] = {-42.42, -1.0};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, QuadraticPolynomialWithCloseRootsWorks) {
-  const double roots[2] = {42.42, 42.43};
-  RunPolynomialTestRealRoots(roots, true, false, kEpsilonLoose);
-}
-
-TEST(Polynomial, QuadraticPolynomialWithComplexRootsWorks) {
-  Vector real;
-  Vector imag;
-
-  Vector poly = ConstantPolynomial(1.23);
-  poly = AddComplexRootPair(poly, 42.42, 4.2);
-  bool success = FindPolynomialRoots(poly, &real, &imag);
-
-  EXPECT_EQ(success, true);
-  EXPECT_EQ(real.size(), 2);
-  EXPECT_EQ(imag.size(), 2);
-  ExpectClose(real(0), 42.42, kEpsilon);
-  ExpectClose(real(1), 42.42, kEpsilon);
-  ExpectClose(std::abs(imag(0)), 4.2, kEpsilon);
-  ExpectClose(std::abs(imag(1)), 4.2, kEpsilon);
-  ExpectClose(std::abs(imag(0) + imag(1)), 0.0, kEpsilon);
-}
-
-TEST(Polynomial, QuarticPolynomialWorks) {
-  const double roots[4] = {1.23e-4, 1.23e-1, 1.23e+2, 1.23e+5};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, QuarticPolynomialWithTwoClustersOfCloseRootsWorks) {
-  const double roots[4] = {1.23e-1, 2.46e-1, 1.23e+5, 2.46e+5};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilonLoose);
-}
-
-TEST(Polynomial, QuarticPolynomialWithTwoZeroRootsWorks) {
-  const double roots[4] = {-42.42, 0.0, 0.0, 42.42};
-  RunPolynomialTestRealRoots(roots, true, true, 2 * kEpsilonLoose);
-}
-
-TEST(Polynomial, QuarticMonomialWorks) {
-  const double roots[4] = {0.0, 0.0, 0.0, 0.0};
-  RunPolynomialTestRealRoots(roots, true, true, kEpsilon);
-}
-
-TEST(Polynomial, NullPointerAsImaginaryPartWorks) {
-  const double roots[4] = {1.23e-4, 1.23e-1, 1.23e+2, 1.23e+5};
-  RunPolynomialTestRealRoots(roots, true, false, kEpsilon);
-}
-
-TEST(Polynomial, NullPointerAsRealPartWorks) {
-  const double roots[4] = {1.23e-4, 1.23e-1, 1.23e+2, 1.23e+5};
-  RunPolynomialTestRealRoots(roots, false, true, kEpsilon);
-}
-
-TEST(Polynomial, BothOutputArgumentsNullWorks) {
-  const double roots[4] = {1.23e-4, 1.23e-1, 1.23e+2, 1.23e+5};
-  RunPolynomialTestRealRoots(roots, false, false, kEpsilon);
-}
-
-TEST(Polynomial, DifferentiateConstantPolynomial) {
-  // p(x) = 1;
-  Vector polynomial(1);
-  polynomial(0) = 1.0;
-  const Vector derivative = DifferentiatePolynomial(polynomial);
-  EXPECT_EQ(derivative.rows(), 1);
-  EXPECT_EQ(derivative(0), 0);
-}
-
-TEST(Polynomial, DifferentiateQuadraticPolynomial) {
-  // p(x) = x^2 + 2x + 3;
-  Vector polynomial(3);
-  polynomial(0) = 1.0;
-  polynomial(1) = 2.0;
-  polynomial(2) = 3.0;
-
-  const Vector derivative = DifferentiatePolynomial(polynomial);
-  EXPECT_EQ(derivative.rows(), 2);
-  EXPECT_EQ(derivative(0), 2.0);
-  EXPECT_EQ(derivative(1), 2.0);
-}
-
-TEST(Polynomial, MinimizeConstantPolynomial) {
-  // p(x) = 1;
-  Vector polynomial(1);
-  polynomial(0) = 1.0;
-
-  double optimal_x = 0.0;
-  double optimal_value = 0.0;
-  double min_x = 0.0;
-  double max_x = 1.0;
-  MinimizePolynomial(polynomial, min_x, max_x, &optimal_x, &optimal_value);
-
-  EXPECT_EQ(optimal_value, 1.0);
-  EXPECT_LE(optimal_x, max_x);
-  EXPECT_GE(optimal_x, min_x);
-}
-
-TEST(Polynomial, MinimizeLinearPolynomial) {
-  // p(x) = x - 2
-  Vector polynomial(2);
-
-  polynomial(0) = 1.0;
-  polynomial(1) = 2.0;
-
-  double optimal_x = 0.0;
-  double optimal_value = 0.0;
-  double min_x = 0.0;
-  double max_x = 1.0;
-  MinimizePolynomial(polynomial, min_x, max_x, &optimal_x, &optimal_value);
-
-  EXPECT_EQ(optimal_x, 0.0);
-  EXPECT_EQ(optimal_value, 2.0);
-}
-
-TEST(Polynomial, MinimizeQuadraticPolynomial) {
-  // p(x) = x^2 - 3 x + 2
-  // min_x = 3/2
-  // min_value = -1/4;
-  Vector polynomial(3);
-  polynomial(0) = 1.0;
-  polynomial(1) = -3.0;
-  polynomial(2) = 2.0;
-
-  double optimal_x = 0.0;
-  double optimal_value = 0.0;
-  double min_x = -2.0;
-  double max_x = 2.0;
-  MinimizePolynomial(polynomial, min_x, max_x, &optimal_x, &optimal_value);
-  EXPECT_EQ(optimal_x, 3.0 / 2.0);
-  EXPECT_EQ(optimal_value, -1.0 / 4.0);
-
-  min_x = -2.0;
-  max_x = 1.0;
-  MinimizePolynomial(polynomial, min_x, max_x, &optimal_x, &optimal_value);
-  EXPECT_EQ(optimal_x, 1.0);
-  EXPECT_EQ(optimal_value, 0.0);
-
-  min_x = 2.0;
-  max_x = 3.0;
-  MinimizePolynomial(polynomial, min_x, max_x, &optimal_x, &optimal_value);
-  EXPECT_EQ(optimal_x, 2.0);
-  EXPECT_EQ(optimal_value, 0.0);
-}
-
-TEST(Polymomial, ConstantInterpolatingPolynomial) {
-  // p(x) = 1.0
-  Vector true_polynomial(1);
-  true_polynomial << 1.0;
-
-  std::vector<FunctionSample> samples;
-  FunctionSample sample;
-  sample.x = 1.0;
-  sample.value = 1.0;
-  sample.value_is_valid = true;
-  samples.push_back(sample);
-
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-15);
-}
-
-TEST(Polynomial, LinearInterpolatingPolynomial) {
-  // p(x) = 2x - 1
-  Vector true_polynomial(2);
-  true_polynomial << 2.0, -1.0;
-
-  std::vector<FunctionSample> samples;
-  FunctionSample sample;
-  sample.x = 1.0;
-  sample.value = 1.0;
-  sample.value_is_valid = true;
-  sample.gradient = 2.0;
-  sample.gradient_is_valid = true;
-  samples.push_back(sample);
-
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-15);
-}
-
-TEST(Polynomial, QuadraticInterpolatingPolynomial) {
-  // p(x) = 2x^2 + 3x + 2
-  Vector true_polynomial(3);
-  true_polynomial << 2.0, 3.0, 2.0;
-
-  std::vector<FunctionSample> samples;
-  {
-    FunctionSample sample;
-    sample.x = 1.0;
-    sample.value = 7.0;
-    sample.value_is_valid = true;
-    sample.gradient = 7.0;
-    sample.gradient_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = -3.0;
-    sample.value = 11.0;
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-15);
-}
-
-TEST(Polynomial, DeficientCubicInterpolatingPolynomial) {
-  // p(x) = 2x^2 + 3x + 2
-  Vector true_polynomial(4);
-  true_polynomial << 0.0, 2.0, 3.0, 2.0;
-
-  std::vector<FunctionSample> samples;
-  {
-    FunctionSample sample;
-    sample.x = 1.0;
-    sample.value = 7.0;
-    sample.value_is_valid = true;
-    sample.gradient = 7.0;
-    sample.gradient_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = -3.0;
-    sample.value = 11.0;
-    sample.value_is_valid = true;
-    sample.gradient = -9;
-    sample.gradient_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-14);
-}
-
-TEST(Polynomial, CubicInterpolatingPolynomialFromValues) {
-  // p(x) = x^3 + 2x^2 + 3x + 2
-  Vector true_polynomial(4);
-  true_polynomial << 1.0, 2.0, 3.0, 2.0;
-
-  std::vector<FunctionSample> samples;
-  {
-    FunctionSample sample;
-    sample.x = 1.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = -3.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = 2.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = 0.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-14);
-}
-
-TEST(Polynomial, CubicInterpolatingPolynomialFromValuesAndOneGradient) {
-  // p(x) = x^3 + 2x^2 + 3x + 2
-  Vector true_polynomial(4);
-  true_polynomial << 1.0, 2.0, 3.0, 2.0;
-  Vector true_gradient_polynomial = DifferentiatePolynomial(true_polynomial);
-
-  std::vector<FunctionSample> samples;
-  {
-    FunctionSample sample;
-    sample.x = 1.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = -3.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = 2.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    sample.gradient = EvaluatePolynomial(true_gradient_polynomial, sample.x);
-    sample.gradient_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-14);
-}
-
-TEST(Polynomial, CubicInterpolatingPolynomialFromValuesAndGradients) {
-  // p(x) = x^3 + 2x^2 + 3x + 2
-  Vector true_polynomial(4);
-  true_polynomial << 1.0, 2.0, 3.0, 2.0;
-  Vector true_gradient_polynomial = DifferentiatePolynomial(true_polynomial);
-
-  std::vector<FunctionSample> samples;
-  {
-    FunctionSample sample;
-    sample.x = -3.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    sample.gradient = EvaluatePolynomial(true_gradient_polynomial, sample.x);
-    sample.gradient_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  {
-    FunctionSample sample;
-    sample.x = 2.0;
-    sample.value = EvaluatePolynomial(true_polynomial, sample.x);
-    sample.value_is_valid = true;
-    sample.gradient = EvaluatePolynomial(true_gradient_polynomial, sample.x);
-    sample.gradient_is_valid = true;
-    samples.push_back(sample);
-  }
-
-  const Vector polynomial = FindInterpolatingPolynomial(samples);
-  EXPECT_NEAR((true_polynomial - polynomial).norm(), 0.0, 1e-14);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/power_series_expansion_preconditioner.cc b/third_party/ceres/internal/ceres/power_series_expansion_preconditioner.cc
deleted file mode 100644
index af98646..0000000
--- a/third_party/ceres/internal/ceres/power_series_expansion_preconditioner.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: markshachkov@gmail.com (Mark Shachkov)
-
-#include "ceres/power_series_expansion_preconditioner.h"
-
-#include "ceres/eigen_vector_ops.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/preconditioner.h"
-
-namespace ceres::internal {
-
-PowerSeriesExpansionPreconditioner::PowerSeriesExpansionPreconditioner(
-    const ImplicitSchurComplement* isc,
-    const int max_num_spse_iterations,
-    const double spse_tolerance,
-    const Preconditioner::Options& options)
-    : isc_(isc),
-      max_num_spse_iterations_(max_num_spse_iterations),
-      spse_tolerance_(spse_tolerance),
-      options_(options) {}
-
-PowerSeriesExpansionPreconditioner::~PowerSeriesExpansionPreconditioner() =
-    default;
-
-bool PowerSeriesExpansionPreconditioner::Update(const LinearOperator& /*A*/,
-                                                const double* /*D*/) {
-  return true;
-}
-
-void PowerSeriesExpansionPreconditioner::RightMultiplyAndAccumulate(
-    const double* x, double* y) const {
-  VectorRef yref(y, num_rows());
-  Vector series_term(num_rows());
-  Vector previous_series_term(num_rows());
-  ParallelSetZero(options_.context, options_.num_threads, yref);
-  isc_->block_diagonal_FtF_inverse()->RightMultiplyAndAccumulate(
-      x, y, options_.context, options_.num_threads);
-  ParallelAssign(
-      options_.context, options_.num_threads, previous_series_term, yref);
-
-  const double norm_threshold =
-      spse_tolerance_ * Norm(yref, options_.context, options_.num_threads);
-
-  for (int i = 1;; i++) {
-    ParallelSetZero(options_.context, options_.num_threads, series_term);
-    isc_->InversePowerSeriesOperatorRightMultiplyAccumulate(
-        previous_series_term.data(), series_term.data());
-    ParallelAssign(
-        options_.context, options_.num_threads, yref, yref + series_term);
-    if (i >= max_num_spse_iterations_ || series_term.norm() < norm_threshold) {
-      break;
-    }
-    std::swap(previous_series_term, series_term);
-  }
-}
-
-int PowerSeriesExpansionPreconditioner::num_rows() const {
-  return isc_->num_rows();
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/power_series_expansion_preconditioner.h b/third_party/ceres/internal/ceres/power_series_expansion_preconditioner.h
deleted file mode 100644
index 9a993cf..0000000
--- a/third_party/ceres/internal/ceres/power_series_expansion_preconditioner.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: markshachkov@gmail.com (Mark Shachkov)
-
-#ifndef CERES_INTERNAL_POWER_SERIES_EXPANSION_PRECONDITIONER_H_
-#define CERES_INTERNAL_POWER_SERIES_EXPANSION_PRECONDITIONER_H_
-
-#include "ceres/implicit_schur_complement.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/preconditioner.h"
-
-namespace ceres::internal {
-
-// This is a preconditioner via power series expansion of Schur
-// complement inverse based on "Weber et al, Power Bundle Adjustment for
-// Large-Scale 3D Reconstruction".
-class CERES_NO_EXPORT PowerSeriesExpansionPreconditioner
-    : public Preconditioner {
- public:
-  // TODO: Consider moving max_num_spse_iterations and spse_tolerance to
-  // Preconditioner::Options
-  PowerSeriesExpansionPreconditioner(const ImplicitSchurComplement* isc,
-                                     const int max_num_spse_iterations,
-                                     const double spse_tolerance,
-                                     const Preconditioner::Options& options);
-  PowerSeriesExpansionPreconditioner(
-      const PowerSeriesExpansionPreconditioner&) = delete;
-  void operator=(const PowerSeriesExpansionPreconditioner&) = delete;
-  ~PowerSeriesExpansionPreconditioner() override;
-
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  bool Update(const LinearOperator& A, const double* D) final;
-  int num_rows() const final;
-
- private:
-  const ImplicitSchurComplement* isc_;
-  const int max_num_spse_iterations_;
-  const double spse_tolerance_;
-  const Preconditioner::Options options_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_POWER_SERIES_EXPANSION_PRECONDITIONER_H_
diff --git a/third_party/ceres/internal/ceres/power_series_expansion_preconditioner_test.cc b/third_party/ceres/internal/ceres/power_series_expansion_preconditioner_test.cc
deleted file mode 100644
index 1c04162..0000000
--- a/third_party/ceres/internal/ceres/power_series_expansion_preconditioner_test.cc
+++ /dev/null
@@ -1,175 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: markshachkov@gmail.com (Mark Shachkov)
-
-#include "ceres/power_series_expansion_preconditioner.h"
-
-#include <memory>
-
-#include "Eigen/Dense"
-#include "ceres/linear_least_squares_problems.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-const double kEpsilon = 1e-14;
-
-class PowerSeriesExpansionPreconditionerTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    problem_ = CreateLinearLeastSquaresProblemFromId(5);
-    const auto A = down_cast<BlockSparseMatrix*>(problem_->A.get());
-    const auto D = problem_->D.get();
-
-    options_.elimination_groups.push_back(problem_->num_eliminate_blocks);
-    options_.preconditioner_type = SCHUR_POWER_SERIES_EXPANSION;
-    preconditioner_options_ = Preconditioner::Options(options_);
-    isc_ = std::make_unique<ImplicitSchurComplement>(options_);
-    isc_->Init(*A, D, problem_->b.get());
-    num_f_cols_ = isc_->rhs().rows();
-    const int num_rows = A->num_rows(), num_cols = A->num_cols(),
-              num_e_cols = num_cols - num_f_cols_;
-
-    // Using predefined linear operator with schur structure and block-diagonal
-    // F'F to explicitly construct schur complement and to calculate its inverse
-    // to be used as a reference.
-    Matrix A_dense, E, F, DE, DF;
-    problem_->A->ToDenseMatrix(&A_dense);
-    E = A_dense.leftCols(num_e_cols);
-    F = A_dense.rightCols(num_f_cols_);
-    DE = VectorRef(D, num_e_cols).asDiagonal();
-    DF = VectorRef(D + num_e_cols, num_f_cols_).asDiagonal();
-
-    sc_inverse_expected_ =
-        (F.transpose() *
-             (Matrix::Identity(num_rows, num_rows) -
-              E * (E.transpose() * E + DE).inverse() * E.transpose()) *
-             F +
-         DF)
-            .inverse();
-  }
-  std::unique_ptr<LinearLeastSquaresProblem> problem_;
-  std::unique_ptr<ImplicitSchurComplement> isc_;
-  int num_f_cols_;
-  Matrix sc_inverse_expected_;
-  LinearSolver::Options options_;
-  Preconditioner::Options preconditioner_options_;
-};
-
-TEST_F(PowerSeriesExpansionPreconditionerTest,
-       InverseValidPreconditionerToleranceReached) {
-  const double spse_tolerance = kEpsilon;
-  const int max_num_iterations = 50;
-  PowerSeriesExpansionPreconditioner preconditioner(
-      isc_.get(), max_num_iterations, spse_tolerance, preconditioner_options_);
-
-  Vector x(num_f_cols_), y(num_f_cols_);
-  for (int i = 0; i < num_f_cols_; i++) {
-    x.setZero();
-    x(i) = 1.0;
-
-    y.setZero();
-    preconditioner.RightMultiplyAndAccumulate(x.data(), y.data());
-    EXPECT_LT((y - sc_inverse_expected_.col(i)).norm(), kEpsilon)
-        << "Reference Schur complement inverse and its estimate via "
-           "PowerSeriesExpansionPreconditioner differs in "
-        << i
-        << " column.\nreference : " << sc_inverse_expected_.col(i).transpose()
-        << "\nestimated: " << y.transpose();
-  }
-}
-
-TEST_F(PowerSeriesExpansionPreconditionerTest,
-       InverseValidPreconditionerMaxIterations) {
-  const double spse_tolerance = 0;
-  const int max_num_iterations = 50;
-  PowerSeriesExpansionPreconditioner preconditioner_fixed_n_iterations(
-      isc_.get(), max_num_iterations, spse_tolerance, preconditioner_options_);
-
-  Vector x(num_f_cols_), y(num_f_cols_);
-  for (int i = 0; i < num_f_cols_; i++) {
-    x.setZero();
-    x(i) = 1.0;
-
-    y.setZero();
-    preconditioner_fixed_n_iterations.RightMultiplyAndAccumulate(x.data(),
-                                                                 y.data());
-    EXPECT_LT((y - sc_inverse_expected_.col(i)).norm(), kEpsilon)
-        << "Reference Schur complement inverse and its estimate via "
-           "PowerSeriesExpansionPreconditioner differs in "
-        << i
-        << " column.\nreference : " << sc_inverse_expected_.col(i).transpose()
-        << "\nestimated: " << y.transpose();
-  }
-}
-
-TEST_F(PowerSeriesExpansionPreconditionerTest,
-       InverseInvalidBadPreconditionerTolerance) {
-  const double spse_tolerance = 1 / kEpsilon;
-  const int max_num_iterations = 50;
-  PowerSeriesExpansionPreconditioner preconditioner_bad_tolerance(
-      isc_.get(), max_num_iterations, spse_tolerance, preconditioner_options_);
-
-  Vector x(num_f_cols_), y(num_f_cols_);
-  for (int i = 0; i < num_f_cols_; i++) {
-    x.setZero();
-    x(i) = 1.0;
-
-    y.setZero();
-    preconditioner_bad_tolerance.RightMultiplyAndAccumulate(x.data(), y.data());
-    EXPECT_GT((y - sc_inverse_expected_.col(i)).norm(), kEpsilon)
-        << "Reference Schur complement inverse and its estimate via "
-           "PowerSeriesExpansionPreconditioner are too similar, tolerance "
-           "stopping criteria failed.";
-  }
-}
-
-TEST_F(PowerSeriesExpansionPreconditionerTest,
-       InverseInvalidBadPreconditionerMaxIterations) {
-  const double spse_tolerance = kEpsilon;
-  const int max_num_iterations = 1;
-  PowerSeriesExpansionPreconditioner preconditioner_bad_iterations_limit(
-      isc_.get(), max_num_iterations, spse_tolerance, preconditioner_options_);
-
-  Vector x(num_f_cols_), y(num_f_cols_);
-  for (int i = 0; i < num_f_cols_; i++) {
-    x.setZero();
-    x(i) = 1.0;
-
-    y.setZero();
-    preconditioner_bad_iterations_limit.RightMultiplyAndAccumulate(x.data(),
-                                                                   y.data());
-    EXPECT_GT((y - sc_inverse_expected_.col(i)).norm(), kEpsilon)
-        << "Reference Schur complement inverse and its estimate via "
-           "PowerSeriesExpansionPreconditioner are too similar, maximum "
-           "iterations stopping criteria failed.";
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/preconditioner.cc b/third_party/ceres/internal/ceres/preconditioner.cc
deleted file mode 100644
index 0b9ce96..0000000
--- a/third_party/ceres/internal/ceres/preconditioner.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/preconditioner.h"
-
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-Preconditioner::~Preconditioner() = default;
-
-PreconditionerType Preconditioner::PreconditionerForZeroEBlocks(
-    PreconditionerType preconditioner_type) {
-  if (preconditioner_type == SCHUR_JACOBI ||
-      preconditioner_type == CLUSTER_JACOBI ||
-      preconditioner_type == CLUSTER_TRIDIAGONAL) {
-    return JACOBI;
-  }
-  return preconditioner_type;
-}
-
-SparseMatrixPreconditionerWrapper::SparseMatrixPreconditionerWrapper(
-    const SparseMatrix* matrix, const Preconditioner::Options& options)
-    : matrix_(matrix), options_(options) {
-  CHECK(matrix != nullptr);
-}
-
-SparseMatrixPreconditionerWrapper::~SparseMatrixPreconditionerWrapper() =
-    default;
-
-bool SparseMatrixPreconditionerWrapper::UpdateImpl(const SparseMatrix& /*A*/,
-                                                   const double* /*D*/) {
-  return true;
-}
-
-void SparseMatrixPreconditionerWrapper::RightMultiplyAndAccumulate(
-    const double* x, double* y) const {
-  matrix_->RightMultiplyAndAccumulate(
-      x, y, options_.context, options_.num_threads);
-}
-
-int SparseMatrixPreconditionerWrapper::num_rows() const {
-  return matrix_->num_rows();
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/preconditioner.h b/third_party/ceres/internal/ceres/preconditioner.h
deleted file mode 100644
index 42dc6cc..0000000
--- a/third_party/ceres/internal/ceres/preconditioner.h
+++ /dev/null
@@ -1,223 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_PRECONDITIONER_H_
-#define CERES_INTERNAL_PRECONDITIONER_H_
-
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_operator.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class BlockSparseMatrix;
-class SparseMatrix;
-
-class CERES_NO_EXPORT Preconditioner : public LinearOperator {
- public:
-  struct Options {
-    Options() = default;
-    Options(const LinearSolver::Options& linear_solver_options)
-        : type(linear_solver_options.preconditioner_type),
-          visibility_clustering_type(
-              linear_solver_options.visibility_clustering_type),
-          sparse_linear_algebra_library_type(
-              linear_solver_options.sparse_linear_algebra_library_type),
-          num_threads(linear_solver_options.num_threads),
-          elimination_groups(linear_solver_options.elimination_groups),
-          row_block_size(linear_solver_options.row_block_size),
-          e_block_size(linear_solver_options.e_block_size),
-          f_block_size(linear_solver_options.f_block_size),
-          context(linear_solver_options.context) {}
-
-    PreconditionerType type = JACOBI;
-    VisibilityClusteringType visibility_clustering_type = CANONICAL_VIEWS;
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type =
-        SUITE_SPARSE;
-    OrderingType ordering_type = OrderingType::NATURAL;
-
-    // When using the subset preconditioner, all row blocks starting
-    // from this row block are used to construct the preconditioner.
-    //
-    // i.e., the Jacobian matrix A is horizontally partitioned as
-    //
-    // A = [P]
-    //     [Q]
-    //
-    // where P has subset_preconditioner_start_row_block row blocks,
-    // and the preconditioner is the inverse of the matrix Q'Q.
-    int subset_preconditioner_start_row_block = -1;
-
-    // If possible, how many threads the preconditioner can use.
-    int num_threads = 1;
-
-    // Hints about the order in which the parameter blocks should be
-    // eliminated by the linear solver.
-    //
-    // For example if elimination_groups is a vector of size k, then
-    // the linear solver is informed that it should eliminate the
-    // parameter blocks 0 ... elimination_groups[0] - 1 first, and
-    // then elimination_groups[0] ... elimination_groups[1] - 1 and so
-    // on. Within each elimination group, the linear solver is free to
-    // choose how the parameter blocks are ordered. Different linear
-    // solvers have differing requirements on elimination_groups.
-    //
-    // The most common use is for Schur type solvers, where there
-    // should be at least two elimination groups and the first
-    // elimination group must form an independent set in the normal
-    // equations. The first elimination group corresponds to the
-    // num_eliminate_blocks in the Schur type solvers.
-    std::vector<int> elimination_groups;
-
-    // If the block sizes in a BlockSparseMatrix are fixed, then in
-    // some cases the Schur complement based solvers can detect and
-    // specialize on them.
-    //
-    // It is expected that these parameters are set programmatically
-    // rather than manually.
-    //
-    // Please see schur_complement_solver.h and schur_eliminator.h for
-    // more details.
-    int row_block_size = Eigen::Dynamic;
-    int e_block_size = Eigen::Dynamic;
-    int f_block_size = Eigen::Dynamic;
-
-    ContextImpl* context = nullptr;
-  };
-
-  // If the optimization problem is such that there are no remaining
-  // e-blocks, ITERATIVE_SCHUR with a Schur type preconditioner cannot
-  // be used. This function returns JACOBI if a preconditioner for
-  // ITERATIVE_SCHUR is used. The input preconditioner_type is
-  // returned otherwise.
-  static PreconditionerType PreconditionerForZeroEBlocks(
-      PreconditionerType preconditioner_type);
-
-  ~Preconditioner() override;
-
-  // Update the numerical value of the preconditioner for the linear
-  // system:
-  //
-  //  |   A   | x = |b|
-  //  |diag(D)|     |0|
-  //
-  // for some vector b. It is important that the matrix A have the
-  // same block structure as the one used to construct this object.
-  //
-  // D can be nullptr, in which case its interpreted as a diagonal matrix
-  // of size zero.
-  virtual bool Update(const LinearOperator& A, const double* D) = 0;
-
-  // LinearOperator interface. Since the operator is symmetric,
-  // LeftMultiplyAndAccumulate and num_cols are just calls to
-  // RightMultiplyAndAccumulate and num_rows respectively. Update() must be
-  // called before RightMultiplyAndAccumulate can be called.
-  void RightMultiplyAndAccumulate(const double* x,
-                                  double* y) const override = 0;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const override {
-    return RightMultiplyAndAccumulate(x, y);
-  }
-
-  int num_rows() const override = 0;
-  int num_cols() const override { return num_rows(); }
-};
-
-class CERES_NO_EXPORT IdentityPreconditioner : public Preconditioner {
- public:
-  IdentityPreconditioner(int num_rows) : num_rows_(num_rows) {}
-
-  bool Update(const LinearOperator& /*A*/, const double* /*D*/) final {
-    return true;
-  }
-
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final {
-    VectorRef(y, num_rows_) += ConstVectorRef(x, num_rows_);
-  }
-
-  int num_rows() const final { return num_rows_; }
-
- private:
-  int num_rows_ = -1;
-};
-
-// This templated subclass of Preconditioner serves as a base class for
-// other preconditioners that depend on the particular matrix layout of
-// the underlying linear operator.
-template <typename MatrixType>
-class CERES_NO_EXPORT TypedPreconditioner : public Preconditioner {
- public:
-  bool Update(const LinearOperator& A, const double* D) final {
-    return UpdateImpl(*down_cast<const MatrixType*>(&A), D);
-  }
-
- private:
-  virtual bool UpdateImpl(const MatrixType& A, const double* D) = 0;
-};
-
-// Preconditioners that depend on access to the low level structure
-// of a SparseMatrix.
-// clang-format off
-using SparseMatrixPreconditioner = TypedPreconditioner<SparseMatrix>;
-using BlockSparseMatrixPreconditioner = TypedPreconditioner<BlockSparseMatrix>;
-using CompressedRowSparseMatrixPreconditioner = TypedPreconditioner<CompressedRowSparseMatrix>;
-// clang-format on
-
-// Wrap a SparseMatrix object as a preconditioner.
-class CERES_NO_EXPORT SparseMatrixPreconditionerWrapper final
-    : public SparseMatrixPreconditioner {
- public:
-  // Wrapper does NOT take ownership of the matrix pointer.
-  explicit SparseMatrixPreconditionerWrapper(
-      const SparseMatrix* matrix, const Preconditioner::Options& options);
-  ~SparseMatrixPreconditionerWrapper() override;
-
-  // Preconditioner interface
-  void RightMultiplyAndAccumulate(const double* x, double* y) const override;
-  int num_rows() const override;
-
- private:
-  bool UpdateImpl(const SparseMatrix& A, const double* D) override;
-  const SparseMatrix* matrix_;
-  const Preconditioner::Options options_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_PRECONDITIONER_H_
diff --git a/third_party/ceres/internal/ceres/preprocessor.cc b/third_party/ceres/internal/ceres/preprocessor.cc
deleted file mode 100644
index 83c05d4..0000000
--- a/third_party/ceres/internal/ceres/preprocessor.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/preprocessor.h"
-
-#include <memory>
-
-#include "ceres/callbacks.h"
-#include "ceres/gradient_checking_cost_function.h"
-#include "ceres/line_search_preprocessor.h"
-#include "ceres/problem_impl.h"
-#include "ceres/solver.h"
-#include "ceres/thread_pool.h"
-#include "ceres/trust_region_preprocessor.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<Preprocessor> Preprocessor::Create(
-    MinimizerType minimizer_type) {
-  if (minimizer_type == TRUST_REGION) {
-    return std::make_unique<TrustRegionPreprocessor>();
-  }
-
-  if (minimizer_type == LINE_SEARCH) {
-    return std::make_unique<LineSearchPreprocessor>();
-  }
-
-  LOG(FATAL) << "Unknown minimizer_type: " << minimizer_type;
-  return nullptr;
-}
-
-Preprocessor::~Preprocessor() = default;
-
-void ChangeNumThreadsIfNeeded(Solver::Options* options) {
-  if (options->num_threads == 1) {
-    return;
-  }
-  const int num_threads_available = ThreadPool::MaxNumThreadsAvailable();
-  if (options->num_threads > num_threads_available) {
-    LOG(WARNING) << "Specified options.num_threads: " << options->num_threads
-                 << " exceeds maximum available from the threading model Ceres "
-                 << "was compiled with: " << num_threads_available
-                 << ".  Bounding to maximum number available.";
-    options->num_threads = num_threads_available;
-  }
-}
-
-void SetupCommonMinimizerOptions(PreprocessedProblem* pp) {
-  const Solver::Options& options = pp->options;
-  Program* program = pp->reduced_program.get();
-
-  // Assuming that the parameter blocks in the program have been
-  // reordered as needed, extract them into a contiguous vector.
-  pp->reduced_parameters.resize(program->NumParameters());
-  double* reduced_parameters = pp->reduced_parameters.data();
-  program->ParameterBlocksToStateVector(reduced_parameters);
-
-  auto context = pp->problem->context();
-  Minimizer::Options& minimizer_options = pp->minimizer_options;
-  minimizer_options = Minimizer::Options(options);
-  minimizer_options.evaluator = pp->evaluator;
-  minimizer_options.context = context;
-
-  if (options.logging_type != SILENT) {
-    pp->logging_callback = std::make_unique<LoggingCallback>(
-        options.minimizer_type, options.minimizer_progress_to_stdout);
-    minimizer_options.callbacks.insert(minimizer_options.callbacks.begin(),
-                                       pp->logging_callback.get());
-  }
-
-  if (options.update_state_every_iteration) {
-    pp->state_updating_callback =
-        std::make_unique<StateUpdatingCallback>(program, reduced_parameters);
-    // This must get pushed to the front of the callbacks so that it
-    // is run before any of the user callbacks.
-    minimizer_options.callbacks.insert(minimizer_options.callbacks.begin(),
-                                       pp->state_updating_callback.get());
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/preprocessor.h b/third_party/ceres/internal/ceres/preprocessor.h
deleted file mode 100644
index ed031f6..0000000
--- a/third_party/ceres/internal/ceres/preprocessor.h
+++ /dev/null
@@ -1,124 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_PREPROCESSOR_H_
-#define CERES_INTERNAL_PREPROCESSOR_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/coordinate_descent_minimizer.h"
-#include "ceres/evaluator.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/linear_solver.h"
-#include "ceres/minimizer.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/solver.h"
-
-namespace ceres::internal {
-
-struct PreprocessedProblem;
-
-// Given a Problem object and a Solver::Options object indicating the
-// configuration of the solver, the job of the Preprocessor is to
-// analyze the Problem and perform the setup needed to solve it using
-// the desired Minimization algorithm. The setup involves removing
-// redundancies in the input problem (inactive parameter and residual
-// blocks), finding fill reducing orderings as needed, configuring and
-// creating various objects needed by the Minimizer to solve the
-// problem such as an evaluator, a linear solver etc.
-//
-// Each Minimizer (LineSearchMinimizer and TrustRegionMinimizer) comes
-// with a corresponding Preprocessor (LineSearchPreprocessor and
-// TrustRegionPreprocessor) that knows about its needs and performs
-// the preprocessing needed.
-//
-// The output of the Preprocessor is stored in a PreprocessedProblem
-// object.
-class CERES_NO_EXPORT Preprocessor {
- public:
-  // Factory.
-  static std::unique_ptr<Preprocessor> Create(MinimizerType minimizer_type);
-  virtual ~Preprocessor();
-  virtual bool Preprocess(const Solver::Options& options,
-                          ProblemImpl* problem,
-                          PreprocessedProblem* pp) = 0;
-};
-
-// A PreprocessedProblem is the result of running the Preprocessor on
-// a Problem and Solver::Options object.
-struct CERES_NO_EXPORT PreprocessedProblem {
-  PreprocessedProblem() = default;
-
-  std::string error;
-  Solver::Options options;
-  LinearSolver::Options linear_solver_options;
-  Evaluator::Options evaluator_options;
-  Minimizer::Options minimizer_options;
-
-  ProblemImpl* problem;
-  std::unique_ptr<ProblemImpl> gradient_checking_problem;
-  std::unique_ptr<Program> reduced_program;
-  std::unique_ptr<LinearSolver> linear_solver;
-  std::unique_ptr<IterationCallback> logging_callback;
-  std::unique_ptr<IterationCallback> state_updating_callback;
-
-  std::shared_ptr<Evaluator> evaluator;
-  std::shared_ptr<CoordinateDescentMinimizer> inner_iteration_minimizer;
-
-  std::vector<double*> removed_parameter_blocks;
-  Vector reduced_parameters;
-  double fixed_cost{0.0};
-};
-
-// Common functions used by various preprocessors.
-
-// If the user has specified a num_threads > the maximum number of threads
-// available from the compiled threading model, bound the number of threads
-// to the maximum.
-CERES_NO_EXPORT
-void ChangeNumThreadsIfNeeded(Solver::Options* options);
-
-// Extract the effective parameter vector from the preprocessed
-// problem and setup bits of the Minimizer::Options object that are
-// common to all Preprocessors.
-CERES_NO_EXPORT
-void SetupCommonMinimizerOptions(PreprocessedProblem* pp);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_PREPROCESSOR_H_
diff --git a/third_party/ceres/internal/ceres/problem.cc b/third_party/ceres/internal/ceres/problem.cc
deleted file mode 100644
index 00c1786..0000000
--- a/third_party/ceres/internal/ceres/problem.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.com (Keir Mierle)
-
-#include "ceres/problem.h"
-
-#include <memory>
-#include <vector>
-
-#include "ceres/crs_matrix.h"
-#include "ceres/problem_impl.h"
-
-namespace ceres {
-
-Problem::Problem() : impl_(new internal::ProblemImpl) {}
-Problem::Problem(const Problem::Options& options)
-    : impl_(new internal::ProblemImpl(options)) {}
-// Not inline defaulted in declaration due to use of std::unique_ptr.
-Problem::Problem(Problem&&) = default;
-Problem& Problem::operator=(Problem&&) = default;
-Problem::~Problem() = default;
-
-ResidualBlockId Problem::AddResidualBlock(
-    CostFunction* cost_function,
-    LossFunction* loss_function,
-    const std::vector<double*>& parameter_blocks) {
-  return impl_->AddResidualBlock(cost_function,
-                                 loss_function,
-                                 parameter_blocks.data(),
-                                 static_cast<int>(parameter_blocks.size()));
-}
-
-ResidualBlockId Problem::AddResidualBlock(CostFunction* cost_function,
-                                          LossFunction* loss_function,
-                                          double* const* const parameter_blocks,
-                                          int num_parameter_blocks) {
-  return impl_->AddResidualBlock(
-      cost_function, loss_function, parameter_blocks, num_parameter_blocks);
-}
-
-void Problem::AddParameterBlock(double* values, int size) {
-  impl_->AddParameterBlock(values, size);
-}
-
-void Problem::AddParameterBlock(double* values, int size, Manifold* manifold) {
-  impl_->AddParameterBlock(values, size, manifold);
-}
-
-void Problem::RemoveResidualBlock(ResidualBlockId residual_block) {
-  impl_->RemoveResidualBlock(residual_block);
-}
-
-void Problem::RemoveParameterBlock(const double* values) {
-  impl_->RemoveParameterBlock(values);
-}
-
-void Problem::SetParameterBlockConstant(const double* values) {
-  impl_->SetParameterBlockConstant(values);
-}
-
-void Problem::SetParameterBlockVariable(double* values) {
-  impl_->SetParameterBlockVariable(values);
-}
-
-bool Problem::IsParameterBlockConstant(const double* values) const {
-  return impl_->IsParameterBlockConstant(values);
-}
-
-void Problem::SetManifold(double* values, Manifold* manifold) {
-  impl_->SetManifold(values, manifold);
-}
-
-const Manifold* Problem::GetManifold(const double* values) const {
-  return impl_->GetManifold(values);
-}
-
-bool Problem::HasManifold(const double* values) const {
-  return impl_->HasManifold(values);
-}
-
-void Problem::SetParameterLowerBound(double* values,
-                                     int index,
-                                     double lower_bound) {
-  impl_->SetParameterLowerBound(values, index, lower_bound);
-}
-
-void Problem::SetParameterUpperBound(double* values,
-                                     int index,
-                                     double upper_bound) {
-  impl_->SetParameterUpperBound(values, index, upper_bound);
-}
-
-double Problem::GetParameterUpperBound(const double* values, int index) const {
-  return impl_->GetParameterUpperBound(values, index);
-}
-
-double Problem::GetParameterLowerBound(const double* values, int index) const {
-  return impl_->GetParameterLowerBound(values, index);
-}
-
-bool Problem::Evaluate(const EvaluateOptions& evaluate_options,
-                       double* cost,
-                       std::vector<double>* residuals,
-                       std::vector<double>* gradient,
-                       CRSMatrix* jacobian) {
-  return impl_->Evaluate(evaluate_options, cost, residuals, gradient, jacobian);
-}
-
-bool Problem::EvaluateResidualBlock(ResidualBlockId residual_block_id,
-                                    bool apply_loss_function,
-                                    double* cost,
-                                    double* residuals,
-                                    double** jacobians) const {
-  return impl_->EvaluateResidualBlock(residual_block_id,
-                                      apply_loss_function,
-                                      /* new_point = */ true,
-                                      cost,
-                                      residuals,
-                                      jacobians);
-}
-
-bool Problem::EvaluateResidualBlockAssumingParametersUnchanged(
-    ResidualBlockId residual_block_id,
-    bool apply_loss_function,
-    double* cost,
-    double* residuals,
-    double** jacobians) const {
-  return impl_->EvaluateResidualBlock(residual_block_id,
-                                      apply_loss_function,
-                                      /* new_point = */ false,
-                                      cost,
-                                      residuals,
-                                      jacobians);
-}
-
-int Problem::NumParameterBlocks() const { return impl_->NumParameterBlocks(); }
-
-int Problem::NumParameters() const { return impl_->NumParameters(); }
-
-int Problem::NumResidualBlocks() const { return impl_->NumResidualBlocks(); }
-
-int Problem::NumResiduals() const { return impl_->NumResiduals(); }
-
-int Problem::ParameterBlockSize(const double* values) const {
-  return impl_->ParameterBlockSize(values);
-}
-
-int Problem::ParameterBlockTangentSize(const double* values) const {
-  return impl_->ParameterBlockTangentSize(values);
-}
-
-bool Problem::HasParameterBlock(const double* values) const {
-  return impl_->HasParameterBlock(values);
-}
-
-void Problem::GetParameterBlocks(std::vector<double*>* parameter_blocks) const {
-  impl_->GetParameterBlocks(parameter_blocks);
-}
-
-void Problem::GetResidualBlocks(
-    std::vector<ResidualBlockId>* residual_blocks) const {
-  impl_->GetResidualBlocks(residual_blocks);
-}
-
-void Problem::GetParameterBlocksForResidualBlock(
-    const ResidualBlockId residual_block,
-    std::vector<double*>* parameter_blocks) const {
-  impl_->GetParameterBlocksForResidualBlock(residual_block, parameter_blocks);
-}
-
-const CostFunction* Problem::GetCostFunctionForResidualBlock(
-    const ResidualBlockId residual_block) const {
-  return impl_->GetCostFunctionForResidualBlock(residual_block);
-}
-
-const LossFunction* Problem::GetLossFunctionForResidualBlock(
-    const ResidualBlockId residual_block) const {
-  return impl_->GetLossFunctionForResidualBlock(residual_block);
-}
-
-void Problem::GetResidualBlocksForParameterBlock(
-    const double* values, std::vector<ResidualBlockId>* residual_blocks) const {
-  impl_->GetResidualBlocksForParameterBlock(values, residual_blocks);
-}
-
-const Problem::Options& Problem::options() const { return impl_->options(); }
-
-internal::ProblemImpl* Problem::mutable_impl() { return impl_.get(); }
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/problem_impl.cc b/third_party/ceres/internal/ceres/problem_impl.cc
deleted file mode 100644
index 52575ee..0000000
--- a/third_party/ceres/internal/ceres/problem_impl.cc
+++ /dev/null
@@ -1,904 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         mierle@gmail.com (Keir Mierle)
-
-#include "ceres/problem_impl.h"
-
-#include <algorithm>
-#include <cstddef>
-#include <cstdint>
-#include <iterator>
-#include <memory>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/compressed_row_jacobian_writer.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/cost_function.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/evaluation_callback.h"
-#include "ceres/evaluator.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/loss_function.h"
-#include "ceres/manifold.h"
-#include "ceres/map_util.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/program_evaluator.h"
-#include "ceres/residual_block.h"
-#include "ceres/scratch_evaluate_preparer.h"
-#include "ceres/stl_util.h"
-#include "ceres/stringprintf.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-namespace {
-// Returns true if two regions of memory, a and b, with sizes size_a and size_b
-// respectively, overlap.
-bool RegionsAlias(const double* a, int size_a, const double* b, int size_b) {
-  return (a < b) ? b < (a + size_a) : a < (b + size_b);
-}
-
-void CheckForNoAliasing(double* existing_block,
-                        int existing_block_size,
-                        double* new_block,
-                        int new_block_size) {
-  CHECK(!RegionsAlias(
-      existing_block, existing_block_size, new_block, new_block_size))
-      << "Aliasing detected between existing parameter block at memory "
-      << "location " << existing_block << " and has size "
-      << existing_block_size << " with new parameter "
-      << "block that has memory address " << new_block << " and would have "
-      << "size " << new_block_size << ".";
-}
-
-template <typename KeyType>
-void DecrementValueOrDeleteKey(const KeyType key,
-                               std::map<KeyType, int>* container) {
-  auto it = container->find(key);
-  if (it->second == 1) {
-    delete key;
-    container->erase(it);
-  } else {
-    --it->second;
-  }
-}
-
-template <typename ForwardIterator>
-void STLDeleteContainerPairFirstPointers(ForwardIterator begin,
-                                         ForwardIterator end) {
-  while (begin != end) {
-    delete begin->first;
-    ++begin;
-  }
-}
-
-void InitializeContext(Context* context,
-                       ContextImpl** context_impl,
-                       bool* context_impl_owned) {
-  if (context == nullptr) {
-    *context_impl_owned = true;
-    *context_impl = new ContextImpl;
-  } else {
-    *context_impl_owned = false;
-    *context_impl = down_cast<ContextImpl*>(context);
-  }
-}
-
-}  // namespace
-
-ParameterBlock* ProblemImpl::InternalAddParameterBlock(double* values,
-                                                       int size) {
-  CHECK(values != nullptr) << "Null pointer passed to AddParameterBlock "
-                           << "for a parameter with size " << size;
-
-  // Ignore the request if there is a block for the given pointer already.
-  auto it = parameter_block_map_.find(values);
-  if (it != parameter_block_map_.end()) {
-    if (!options_.disable_all_safety_checks) {
-      int existing_size = it->second->Size();
-      CHECK(size == existing_size)
-          << "Tried adding a parameter block with the same double pointer, "
-          << values << ", twice, but with different block sizes. Original "
-          << "size was " << existing_size << " but new size is " << size;
-    }
-    return it->second;
-  }
-
-  if (!options_.disable_all_safety_checks) {
-    // Before adding the parameter block, also check that it doesn't alias any
-    // other parameter blocks.
-    if (!parameter_block_map_.empty()) {
-      auto lb = parameter_block_map_.lower_bound(values);
-
-      // If lb is not the first block, check the previous block for aliasing.
-      if (lb != parameter_block_map_.begin()) {
-        auto previous = lb;
-        --previous;
-        CheckForNoAliasing(
-            previous->first, previous->second->Size(), values, size);
-      }
-
-      // If lb is not off the end, check lb for aliasing.
-      if (lb != parameter_block_map_.end()) {
-        CheckForNoAliasing(lb->first, lb->second->Size(), values, size);
-      }
-    }
-  }
-
-  // Pass the index of the new parameter block as well to keep the index in
-  // sync with the position of the parameter in the program's parameter vector.
-  auto* new_parameter_block =
-      new ParameterBlock(values, size, program_->parameter_blocks_.size());
-
-  // For dynamic problems, add the list of dependent residual blocks, which is
-  // empty to start.
-  if (options_.enable_fast_removal) {
-    new_parameter_block->EnableResidualBlockDependencies();
-  }
-  parameter_block_map_[values] = new_parameter_block;
-  program_->parameter_blocks_.push_back(new_parameter_block);
-  return new_parameter_block;
-}
-
-void ProblemImpl::InternalRemoveResidualBlock(ResidualBlock* residual_block) {
-  CHECK(residual_block != nullptr);
-  // Perform no check on the validity of residual_block, that is handled in
-  // the public method: RemoveResidualBlock().
-
-  // If needed, remove the parameter dependencies on this residual block.
-  if (options_.enable_fast_removal) {
-    const int num_parameter_blocks_for_residual =
-        residual_block->NumParameterBlocks();
-    for (int i = 0; i < num_parameter_blocks_for_residual; ++i) {
-      residual_block->parameter_blocks()[i]->RemoveResidualBlock(
-          residual_block);
-    }
-
-    auto it = residual_block_set_.find(residual_block);
-    residual_block_set_.erase(it);
-  }
-  DeleteBlockInVector(program_->mutable_residual_blocks(), residual_block);
-}
-
-// Deletes the residual block in question, assuming there are no other
-// references to it inside the problem (e.g. by another parameter). Referenced
-// cost and loss functions are tucked away for future deletion, since it is not
-// possible to know whether other parts of the problem depend on them without
-// doing a full scan.
-void ProblemImpl::DeleteBlock(ResidualBlock* residual_block) {
-  // The const casts here are legit, since ResidualBlock holds these
-  // pointers as const pointers but we have ownership of them and
-  // have the right to destroy them when the destructor is called.
-  auto* cost_function =
-      const_cast<CostFunction*>(residual_block->cost_function());
-  if (options_.cost_function_ownership == TAKE_OWNERSHIP) {
-    DecrementValueOrDeleteKey(cost_function, &cost_function_ref_count_);
-  }
-
-  auto* loss_function =
-      const_cast<LossFunction*>(residual_block->loss_function());
-  if (options_.loss_function_ownership == TAKE_OWNERSHIP &&
-      loss_function != nullptr) {
-    DecrementValueOrDeleteKey(loss_function, &loss_function_ref_count_);
-  }
-
-  delete residual_block;
-}
-
-// Deletes the parameter block in question, assuming there are no other
-// references to it inside the problem (e.g. by any residual blocks).
-void ProblemImpl::DeleteBlock(ParameterBlock* parameter_block) {
-  parameter_block_map_.erase(parameter_block->mutable_user_state());
-  delete parameter_block;
-}
-
-ProblemImpl::ProblemImpl()
-    : options_(Problem::Options()), program_(new internal::Program) {
-  InitializeContext(options_.context, &context_impl_, &context_impl_owned_);
-}
-
-ProblemImpl::ProblemImpl(const Problem::Options& options)
-    : options_(options), program_(new internal::Program) {
-  program_->evaluation_callback_ = options.evaluation_callback;
-  InitializeContext(options_.context, &context_impl_, &context_impl_owned_);
-}
-
-ProblemImpl::~ProblemImpl() {
-  STLDeleteContainerPointers(program_->residual_blocks_.begin(),
-                             program_->residual_blocks_.end());
-
-  if (options_.cost_function_ownership == TAKE_OWNERSHIP) {
-    STLDeleteContainerPairFirstPointers(cost_function_ref_count_.begin(),
-                                        cost_function_ref_count_.end());
-  }
-
-  if (options_.loss_function_ownership == TAKE_OWNERSHIP) {
-    STLDeleteContainerPairFirstPointers(loss_function_ref_count_.begin(),
-                                        loss_function_ref_count_.end());
-  }
-
-  // Collect the unique parameterizations and delete the parameters.
-  for (auto* parameter_block : program_->parameter_blocks_) {
-    DeleteBlock(parameter_block);
-  }
-
-  // Delete the owned manifolds.
-  STLDeleteUniqueContainerPointers(manifolds_to_delete_.begin(),
-                                   manifolds_to_delete_.end());
-
-  if (context_impl_owned_) {
-    delete context_impl_;
-  }
-}
-
-ResidualBlockId ProblemImpl::AddResidualBlock(
-    CostFunction* cost_function,
-    LossFunction* loss_function,
-    double* const* const parameter_blocks,
-    int num_parameter_blocks) {
-  CHECK(cost_function != nullptr);
-  CHECK_EQ(num_parameter_blocks, cost_function->parameter_block_sizes().size());
-
-  // Check the sizes match.
-  const std::vector<int32_t>& parameter_block_sizes =
-      cost_function->parameter_block_sizes();
-
-  if (!options_.disable_all_safety_checks) {
-    CHECK_EQ(parameter_block_sizes.size(), num_parameter_blocks)
-        << "Number of blocks input is different than the number of blocks "
-        << "that the cost function expects.";
-
-    // Check for duplicate parameter blocks.
-    std::vector<double*> sorted_parameter_blocks(
-        parameter_blocks, parameter_blocks + num_parameter_blocks);
-    std::sort(sorted_parameter_blocks.begin(), sorted_parameter_blocks.end());
-    const bool has_duplicate_items =
-        (std::adjacent_find(sorted_parameter_blocks.begin(),
-                            sorted_parameter_blocks.end()) !=
-         sorted_parameter_blocks.end());
-    if (has_duplicate_items) {
-      std::string blocks;
-      for (int i = 0; i < num_parameter_blocks; ++i) {
-        blocks += StringPrintf(" %p ", parameter_blocks[i]);
-      }
-
-      LOG(FATAL) << "Duplicate parameter blocks in a residual parameter "
-                 << "are not allowed. Parameter block pointers: [" << blocks
-                 << "]";
-    }
-  }
-
-  // Add parameter blocks and convert the double*'s to parameter blocks.
-  std::vector<ParameterBlock*> parameter_block_ptrs(num_parameter_blocks);
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    parameter_block_ptrs[i] = InternalAddParameterBlock(
-        parameter_blocks[i], parameter_block_sizes[i]);
-  }
-
-  if (!options_.disable_all_safety_checks) {
-    // Check that the block sizes match the block sizes expected by the
-    // cost_function.
-    for (int i = 0; i < parameter_block_ptrs.size(); ++i) {
-      CHECK_EQ(cost_function->parameter_block_sizes()[i],
-               parameter_block_ptrs[i]->Size())
-          << "The cost function expects parameter block " << i << " of size "
-          << cost_function->parameter_block_sizes()[i]
-          << " but was given a block of size "
-          << parameter_block_ptrs[i]->Size();
-    }
-  }
-
-  auto* new_residual_block =
-      new ResidualBlock(cost_function,
-                        loss_function,
-                        parameter_block_ptrs,
-                        program_->residual_blocks_.size());
-
-  // Add dependencies on the residual to the parameter blocks.
-  if (options_.enable_fast_removal) {
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      parameter_block_ptrs[i]->AddResidualBlock(new_residual_block);
-    }
-  }
-
-  program_->residual_blocks_.push_back(new_residual_block);
-
-  if (options_.enable_fast_removal) {
-    residual_block_set_.insert(new_residual_block);
-  }
-
-  if (options_.cost_function_ownership == TAKE_OWNERSHIP) {
-    // Increment the reference count, creating an entry in the table if
-    // needed. Note: C++ maps guarantee that new entries have default
-    // constructed values; this implies integers are zero initialized.
-    ++cost_function_ref_count_[cost_function];
-  }
-
-  if (options_.loss_function_ownership == TAKE_OWNERSHIP &&
-      loss_function != nullptr) {
-    ++loss_function_ref_count_[loss_function];
-  }
-
-  return new_residual_block;
-}
-
-void ProblemImpl::AddParameterBlock(double* values, int size) {
-  InternalAddParameterBlock(values, size);
-}
-
-void ProblemImpl::InternalSetManifold(double* /*values*/,
-                                      ParameterBlock* parameter_block,
-                                      Manifold* manifold) {
-  if (manifold != nullptr && options_.manifold_ownership == TAKE_OWNERSHIP) {
-    manifolds_to_delete_.push_back(manifold);
-  }
-  parameter_block->SetManifold(manifold);
-}
-
-void ProblemImpl::AddParameterBlock(double* values,
-                                    int size,
-                                    Manifold* manifold) {
-  ParameterBlock* parameter_block = InternalAddParameterBlock(values, size);
-  InternalSetManifold(values, parameter_block, manifold);
-}
-
-// Delete a block from a vector of blocks, maintaining the indexing invariant.
-// This is done in constant time by moving an element from the end of the
-// vector over the element to remove, then popping the last element. It
-// destroys the ordering in the interest of speed.
-template <typename Block>
-void ProblemImpl::DeleteBlockInVector(std::vector<Block*>* mutable_blocks,
-                                      Block* block_to_remove) {
-  CHECK_EQ((*mutable_blocks)[block_to_remove->index()], block_to_remove)
-      << "You found a Ceres bug! \n"
-      << "Block requested: " << block_to_remove->ToString() << "\n"
-      << "Block present: "
-      << (*mutable_blocks)[block_to_remove->index()]->ToString();
-
-  // Prepare the to-be-moved block for the new, lower-in-index position by
-  // setting the index to the blocks final location.
-  Block* tmp = mutable_blocks->back();
-  tmp->set_index(block_to_remove->index());
-
-  // Overwrite the to-be-deleted residual block with the one at the end.
-  (*mutable_blocks)[block_to_remove->index()] = tmp;
-
-  DeleteBlock(block_to_remove);
-
-  // The block is gone so shrink the vector of blocks accordingly.
-  mutable_blocks->pop_back();
-}
-
-void ProblemImpl::RemoveResidualBlock(ResidualBlock* residual_block) {
-  CHECK(residual_block != nullptr);
-
-  // Verify that residual_block identifies a residual in the current problem.
-  const std::string residual_not_found_message = StringPrintf(
-      "Residual block to remove: %p not found. This usually means "
-      "one of three things have happened:\n"
-      " 1) residual_block is uninitialised and points to a random "
-      "area in memory.\n"
-      " 2) residual_block represented a residual that was added to"
-      " the problem, but referred to a parameter block which has "
-      "since been removed, which removes all residuals which "
-      "depend on that parameter block, and was thus removed.\n"
-      " 3) residual_block referred to a residual that has already "
-      "been removed from the problem (by the user).",
-      residual_block);
-  if (options_.enable_fast_removal) {
-    CHECK(residual_block_set_.find(residual_block) != residual_block_set_.end())
-        << residual_not_found_message;
-  } else {
-    // Perform a full search over all current residuals.
-    CHECK(std::find(program_->residual_blocks().begin(),
-                    program_->residual_blocks().end(),
-                    residual_block) != program_->residual_blocks().end())
-        << residual_not_found_message;
-  }
-
-  InternalRemoveResidualBlock(residual_block);
-}
-
-void ProblemImpl::RemoveParameterBlock(const double* values) {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "it can be removed.";
-  }
-
-  if (options_.enable_fast_removal) {
-    // Copy the dependent residuals from the parameter block because the set of
-    // dependents will change after each call to RemoveResidualBlock().
-    std::vector<ResidualBlock*> residual_blocks_to_remove(
-        parameter_block->mutable_residual_blocks()->begin(),
-        parameter_block->mutable_residual_blocks()->end());
-    for (auto* residual_block : residual_blocks_to_remove) {
-      InternalRemoveResidualBlock(residual_block);
-    }
-  } else {
-    // Scan all the residual blocks to remove ones that depend on the parameter
-    // block. Do the scan backwards since the vector changes while iterating.
-    const int num_residual_blocks = NumResidualBlocks();
-    for (int i = num_residual_blocks - 1; i >= 0; --i) {
-      ResidualBlock* residual_block =
-          (*(program_->mutable_residual_blocks()))[i];
-      const int num_parameter_blocks = residual_block->NumParameterBlocks();
-      for (int j = 0; j < num_parameter_blocks; ++j) {
-        if (residual_block->parameter_blocks()[j] == parameter_block) {
-          InternalRemoveResidualBlock(residual_block);
-          // The parameter blocks are guaranteed unique.
-          break;
-        }
-      }
-    }
-  }
-  DeleteBlockInVector(program_->mutable_parameter_blocks(), parameter_block);
-}
-
-void ProblemImpl::SetParameterBlockConstant(const double* values) {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "it can be set constant.";
-  }
-
-  parameter_block->SetConstant();
-}
-
-bool ProblemImpl::IsParameterBlockConstant(const double* values) const {
-  const ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  CHECK(parameter_block != nullptr)
-      << "Parameter block not found: " << values << ". You must add the "
-      << "parameter block to the problem before it can be queried.";
-  return parameter_block->IsConstant();
-}
-
-void ProblemImpl::SetParameterBlockVariable(double* values) {
-  ParameterBlock* parameter_block =
-      FindWithDefault(parameter_block_map_, values, nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "it can be set varying.";
-  }
-
-  parameter_block->SetVarying();
-}
-
-void ProblemImpl::SetManifold(double* values, Manifold* manifold) {
-  ParameterBlock* parameter_block =
-      FindWithDefault(parameter_block_map_, values, nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can set its manifold.";
-  }
-
-  InternalSetManifold(values, parameter_block, manifold);
-}
-
-const Manifold* ProblemImpl::GetManifold(const double* values) const {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can get its manifold.";
-  }
-
-  return parameter_block->manifold();
-}
-
-bool ProblemImpl::HasManifold(const double* values) const {
-  return GetManifold(values) != nullptr;
-}
-
-void ProblemImpl::SetParameterLowerBound(double* values,
-                                         int index,
-                                         double lower_bound) {
-  ParameterBlock* parameter_block =
-      FindWithDefault(parameter_block_map_, values, nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can set a lower bound on one of its components.";
-  }
-
-  parameter_block->SetLowerBound(index, lower_bound);
-}
-
-void ProblemImpl::SetParameterUpperBound(double* values,
-                                         int index,
-                                         double upper_bound) {
-  ParameterBlock* parameter_block =
-      FindWithDefault(parameter_block_map_, values, nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can set an upper bound on one of its components.";
-  }
-  parameter_block->SetUpperBound(index, upper_bound);
-}
-
-double ProblemImpl::GetParameterLowerBound(const double* values,
-                                           int index) const {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can get the lower bound on one of its components.";
-  }
-  return parameter_block->LowerBound(index);
-}
-
-double ProblemImpl::GetParameterUpperBound(const double* values,
-                                           int index) const {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can set an upper bound on one of its components.";
-  }
-  return parameter_block->UpperBound(index);
-}
-
-bool ProblemImpl::Evaluate(const Problem::EvaluateOptions& evaluate_options,
-                           double* cost,
-                           std::vector<double>* residuals,
-                           std::vector<double>* gradient,
-                           CRSMatrix* jacobian) {
-  if (cost == nullptr && residuals == nullptr && gradient == nullptr &&
-      jacobian == nullptr) {
-    return true;
-  }
-
-  // If the user supplied residual blocks, then use them, otherwise
-  // take the residual blocks from the underlying program.
-  Program program;
-  *program.mutable_residual_blocks() =
-      ((evaluate_options.residual_blocks.size() > 0)
-           ? evaluate_options.residual_blocks
-           : program_->residual_blocks());
-
-  const std::vector<double*>& parameter_block_ptrs =
-      evaluate_options.parameter_blocks;
-
-  std::vector<ParameterBlock*> variable_parameter_blocks;
-  std::vector<ParameterBlock*>& parameter_blocks =
-      *program.mutable_parameter_blocks();
-
-  if (parameter_block_ptrs.size() == 0) {
-    // The user did not provide any parameter blocks, so default to
-    // using all the parameter blocks in the order that they are in
-    // the underlying program object.
-    parameter_blocks = program_->parameter_blocks();
-  } else {
-    // The user supplied a vector of parameter blocks. Using this list
-    // requires a number of steps.
-
-    // 1. Convert double* into ParameterBlock*
-    parameter_blocks.resize(parameter_block_ptrs.size());
-    for (int i = 0; i < parameter_block_ptrs.size(); ++i) {
-      parameter_blocks[i] = FindWithDefault(
-          parameter_block_map_, parameter_block_ptrs[i], nullptr);
-      if (parameter_blocks[i] == nullptr) {
-        LOG(FATAL) << "No known parameter block for "
-                   << "Problem::Evaluate::Options.parameter_blocks[" << i << "]"
-                   << " = " << parameter_block_ptrs[i];
-      }
-    }
-
-    // 2. The user may have only supplied a subset of parameter
-    // blocks, so identify the ones that are not supplied by the user
-    // and are NOT constant. These parameter blocks are stored in
-    // variable_parameter_blocks.
-    //
-    // To ensure that the parameter blocks are not included in the
-    // columns of the jacobian, we need to make sure that they are
-    // constant during evaluation and then make them variable again
-    // after we are done.
-    std::vector<ParameterBlock*> all_parameter_blocks(
-        program_->parameter_blocks());
-    std::vector<ParameterBlock*> included_parameter_blocks(
-        program.parameter_blocks());
-
-    std::vector<ParameterBlock*> excluded_parameter_blocks;
-    std::sort(all_parameter_blocks.begin(), all_parameter_blocks.end());
-    std::sort(included_parameter_blocks.begin(),
-              included_parameter_blocks.end());
-    set_difference(all_parameter_blocks.begin(),
-                   all_parameter_blocks.end(),
-                   included_parameter_blocks.begin(),
-                   included_parameter_blocks.end(),
-                   back_inserter(excluded_parameter_blocks));
-
-    variable_parameter_blocks.reserve(excluded_parameter_blocks.size());
-    for (auto* parameter_block : excluded_parameter_blocks) {
-      if (!parameter_block->IsConstant()) {
-        variable_parameter_blocks.push_back(parameter_block);
-        parameter_block->SetConstant();
-      }
-    }
-  }
-
-  // Setup the Parameter indices and offsets before an evaluator can
-  // be constructed and used.
-  program.SetParameterOffsetsAndIndex();
-
-  Evaluator::Options evaluator_options;
-
-  // Even though using SPARSE_NORMAL_CHOLESKY requires a sparse linear algebra
-  // library here it just being used for telling the evaluator to use a
-  // SparseRowCompressedMatrix for the jacobian. This is because the Evaluator
-  // decides the storage for the Jacobian based on the type of linear solver
-  // being used.
-  evaluator_options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  evaluator_options.num_threads = evaluate_options.num_threads;
-
-  // The main thread also does work so we only need to launch num_threads - 1.
-  context_impl_->EnsureMinimumThreads(evaluator_options.num_threads - 1);
-  evaluator_options.context = context_impl_;
-  evaluator_options.evaluation_callback =
-      program_->mutable_evaluation_callback();
-  std::unique_ptr<Evaluator> evaluator(
-      new ProgramEvaluator<ScratchEvaluatePreparer,
-                           CompressedRowJacobianWriter>(evaluator_options,
-                                                        &program));
-
-  if (residuals != nullptr) {
-    residuals->resize(evaluator->NumResiduals());
-  }
-
-  if (gradient != nullptr) {
-    gradient->resize(evaluator->NumEffectiveParameters());
-  }
-
-  std::unique_ptr<CompressedRowSparseMatrix> tmp_jacobian;
-  if (jacobian != nullptr) {
-    tmp_jacobian.reset(down_cast<CompressedRowSparseMatrix*>(
-        evaluator->CreateJacobian().release()));
-  }
-
-  // Point the state pointers to the user state pointers. This is
-  // needed so that we can extract a parameter vector which is then
-  // passed to Evaluator::Evaluate.
-  program.SetParameterBlockStatePtrsToUserStatePtrs();
-
-  // Copy the value of the parameter blocks into a vector, since the
-  // Evaluate::Evaluate method needs its input as such. The previous
-  // call to SetParameterBlockStatePtrsToUserStatePtrs ensures that
-  // these values are the ones corresponding to the actual state of
-  // the parameter blocks, rather than the temporary state pointer
-  // used for evaluation.
-  Vector parameters(program.NumParameters());
-  program.ParameterBlocksToStateVector(parameters.data());
-
-  double tmp_cost = 0;
-
-  Evaluator::EvaluateOptions evaluator_evaluate_options;
-  evaluator_evaluate_options.apply_loss_function =
-      evaluate_options.apply_loss_function;
-  bool status =
-      evaluator->Evaluate(evaluator_evaluate_options,
-                          parameters.data(),
-                          &tmp_cost,
-                          residuals != nullptr ? &(*residuals)[0] : nullptr,
-                          gradient != nullptr ? &(*gradient)[0] : nullptr,
-                          tmp_jacobian.get());
-
-  // Make the parameter blocks that were temporarily marked constant,
-  // variable again.
-  for (auto* parameter_block : variable_parameter_blocks) {
-    parameter_block->SetVarying();
-  }
-
-  if (status) {
-    if (cost != nullptr) {
-      *cost = tmp_cost;
-    }
-    if (jacobian != nullptr) {
-      tmp_jacobian->ToCRSMatrix(jacobian);
-    }
-  }
-
-  program_->SetParameterBlockStatePtrsToUserStatePtrs();
-  program_->SetParameterOffsetsAndIndex();
-  return status;
-}
-
-bool ProblemImpl::EvaluateResidualBlock(ResidualBlock* residual_block,
-                                        bool apply_loss_function,
-                                        bool new_point,
-                                        double* cost,
-                                        double* residuals,
-                                        double** jacobians) const {
-  auto evaluation_callback = program_->mutable_evaluation_callback();
-  if (evaluation_callback) {
-    evaluation_callback->PrepareForEvaluation(jacobians != nullptr, new_point);
-  }
-
-  ParameterBlock* const* parameter_blocks = residual_block->parameter_blocks();
-  const int num_parameter_blocks = residual_block->NumParameterBlocks();
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    ParameterBlock* parameter_block = parameter_blocks[i];
-    if (parameter_block->IsConstant()) {
-      if (jacobians != nullptr && jacobians[i] != nullptr) {
-        LOG(ERROR) << "Jacobian requested for parameter block : " << i
-                   << ". But the parameter block is marked constant.";
-        return false;
-      }
-    } else {
-      CHECK(parameter_block->SetState(parameter_block->user_state()))
-          << "Congratulations, you found a Ceres bug! Please report this error "
-          << "to the developers.";
-    }
-  }
-
-  double dummy_cost = 0.0;
-  FixedArray<double, 32> scratch(
-      residual_block->NumScratchDoublesForEvaluate());
-  return residual_block->Evaluate(apply_loss_function,
-                                  cost ? cost : &dummy_cost,
-                                  residuals,
-                                  jacobians,
-                                  scratch.data());
-}
-
-int ProblemImpl::NumParameterBlocks() const {
-  return program_->NumParameterBlocks();
-}
-
-int ProblemImpl::NumParameters() const { return program_->NumParameters(); }
-
-int ProblemImpl::NumResidualBlocks() const {
-  return program_->NumResidualBlocks();
-}
-
-int ProblemImpl::NumResiduals() const { return program_->NumResiduals(); }
-
-int ProblemImpl::ParameterBlockSize(const double* values) const {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can get its size.";
-  }
-
-  return parameter_block->Size();
-}
-
-int ProblemImpl::ParameterBlockTangentSize(const double* values) const {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can get its tangent size.";
-  }
-
-  return parameter_block->TangentSize();
-}
-
-bool ProblemImpl::HasParameterBlock(const double* values) const {
-  return (parameter_block_map_.find(const_cast<double*>(values)) !=
-          parameter_block_map_.end());
-}
-
-void ProblemImpl::GetParameterBlocks(
-    std::vector<double*>* parameter_blocks) const {
-  CHECK(parameter_blocks != nullptr);
-  parameter_blocks->resize(0);
-  parameter_blocks->reserve(parameter_block_map_.size());
-  for (const auto& entry : parameter_block_map_) {
-    parameter_blocks->push_back(entry.first);
-  }
-}
-
-void ProblemImpl::GetResidualBlocks(
-    std::vector<ResidualBlockId>* residual_blocks) const {
-  CHECK(residual_blocks != nullptr);
-  *residual_blocks = program().residual_blocks();
-}
-
-void ProblemImpl::GetParameterBlocksForResidualBlock(
-    const ResidualBlockId residual_block,
-    std::vector<double*>* parameter_blocks) const {
-  int num_parameter_blocks = residual_block->NumParameterBlocks();
-  CHECK(parameter_blocks != nullptr);
-  parameter_blocks->resize(num_parameter_blocks);
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    (*parameter_blocks)[i] =
-        residual_block->parameter_blocks()[i]->mutable_user_state();
-  }
-}
-
-const CostFunction* ProblemImpl::GetCostFunctionForResidualBlock(
-    const ResidualBlockId residual_block) const {
-  return residual_block->cost_function();
-}
-
-const LossFunction* ProblemImpl::GetLossFunctionForResidualBlock(
-    const ResidualBlockId residual_block) const {
-  return residual_block->loss_function();
-}
-
-void ProblemImpl::GetResidualBlocksForParameterBlock(
-    const double* values, std::vector<ResidualBlockId>* residual_blocks) const {
-  ParameterBlock* parameter_block = FindWithDefault(
-      parameter_block_map_, const_cast<double*>(values), nullptr);
-  if (parameter_block == nullptr) {
-    LOG(FATAL) << "Parameter block not found: " << values
-               << ". You must add the parameter block to the problem before "
-               << "you can get the residual blocks that depend on it.";
-  }
-
-  if (options_.enable_fast_removal) {
-    // In this case the residual blocks that depend on the parameter block are
-    // stored in the parameter block already, so just copy them out.
-    CHECK(residual_blocks != nullptr);
-    residual_blocks->resize(parameter_block->mutable_residual_blocks()->size());
-    std::copy(parameter_block->mutable_residual_blocks()->begin(),
-              parameter_block->mutable_residual_blocks()->end(),
-              residual_blocks->begin());
-    return;
-  }
-
-  // Find residual blocks that depend on the parameter block.
-  CHECK(residual_blocks != nullptr);
-  residual_blocks->clear();
-  const int num_residual_blocks = NumResidualBlocks();
-  for (int i = 0; i < num_residual_blocks; ++i) {
-    ResidualBlock* residual_block = (*(program_->mutable_residual_blocks()))[i];
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      if (residual_block->parameter_blocks()[j] == parameter_block) {
-        residual_blocks->push_back(residual_block);
-        // The parameter blocks are guaranteed unique.
-        break;
-      }
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/problem_impl.h b/third_party/ceres/internal/ceres/problem_impl.h
deleted file mode 100644
index 733f26e..0000000
--- a/third_party/ceres/internal/ceres/problem_impl.h
+++ /dev/null
@@ -1,227 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// This is the implementation of the public Problem API. The pointer to
-// implementation (PIMPL) idiom makes it possible for Ceres internal code to
-// refer to the private data members without needing to exposing it to the
-// world. An alternative to PIMPL is to have a factory which returns instances
-// of a virtual base class; while that approach would work, it requires clients
-// to always put a Problem object into a scoped pointer; this needlessly muddies
-// client code for little benefit. Therefore, the PIMPL comprise was chosen.
-
-#ifndef CERES_PUBLIC_PROBLEM_IMPL_H_
-#define CERES_PUBLIC_PROBLEM_IMPL_H_
-
-#include <array>
-#include <map>
-#include <memory>
-#include <unordered_map>
-#include <unordered_set>
-#include <vector>
-
-#include "ceres/context_impl.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/internal/port.h"
-#include "ceres/manifold.h"
-#include "ceres/problem.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-class CostFunction;
-class EvaluationCallback;
-class LossFunction;
-struct CRSMatrix;
-
-namespace internal {
-
-class Program;
-class ResidualBlock;
-
-class CERES_NO_EXPORT ProblemImpl {
- public:
-  using ParameterMap = std::map<double*, ParameterBlock*>;
-  using ResidualBlockSet = std::unordered_set<ResidualBlock*>;
-  using CostFunctionRefCount = std::map<CostFunction*, int>;
-  using LossFunctionRefCount = std::map<LossFunction*, int>;
-
-  ProblemImpl();
-  explicit ProblemImpl(const Problem::Options& options);
-  ProblemImpl(const ProblemImpl&) = delete;
-  void operator=(const ProblemImpl&) = delete;
-
-  ~ProblemImpl();
-
-  // See the public problem.h file for description of these methods.
-  ResidualBlockId AddResidualBlock(CostFunction* cost_function,
-                                   LossFunction* loss_function,
-                                   double* const* const parameter_blocks,
-                                   int num_parameter_blocks);
-
-  template <typename... Ts>
-  ResidualBlockId AddResidualBlock(CostFunction* cost_function,
-                                   LossFunction* loss_function,
-                                   double* x0,
-                                   Ts*... xs) {
-    const std::array<double*, sizeof...(Ts) + 1> parameter_blocks{{x0, xs...}};
-    return AddResidualBlock(cost_function,
-                            loss_function,
-                            parameter_blocks.data(),
-                            static_cast<int>(parameter_blocks.size()));
-  }
-
-  void AddParameterBlock(double* values, int size);
-  void AddParameterBlock(double* values, int size, Manifold* manifold);
-
-  void RemoveResidualBlock(ResidualBlock* residual_block);
-  void RemoveParameterBlock(const double* values);
-
-  void SetParameterBlockConstant(const double* values);
-  void SetParameterBlockVariable(double* values);
-  bool IsParameterBlockConstant(const double* values) const;
-
-  void SetManifold(double* values, Manifold* manifold);
-  const Manifold* GetManifold(const double* values) const;
-  bool HasManifold(const double* values) const;
-
-  void SetParameterLowerBound(double* values, int index, double lower_bound);
-  void SetParameterUpperBound(double* values, int index, double upper_bound);
-  double GetParameterLowerBound(const double* values, int index) const;
-  double GetParameterUpperBound(const double* values, int index) const;
-
-  bool Evaluate(const Problem::EvaluateOptions& options,
-                double* cost,
-                std::vector<double>* residuals,
-                std::vector<double>* gradient,
-                CRSMatrix* jacobian);
-
-  bool EvaluateResidualBlock(ResidualBlock* residual_block,
-                             bool apply_loss_function,
-                             bool new_point,
-                             double* cost,
-                             double* residuals,
-                             double** jacobians) const;
-
-  int NumParameterBlocks() const;
-  int NumParameters() const;
-  int NumResidualBlocks() const;
-  int NumResiduals() const;
-
-  int ParameterBlockSize(const double* values) const;
-  int ParameterBlockTangentSize(const double* values) const;
-
-  bool HasParameterBlock(const double* values) const;
-
-  void GetParameterBlocks(std::vector<double*>* parameter_blocks) const;
-  void GetResidualBlocks(std::vector<ResidualBlockId>* residual_blocks) const;
-
-  void GetParameterBlocksForResidualBlock(
-      const ResidualBlockId residual_block,
-      std::vector<double*>* parameter_blocks) const;
-
-  const CostFunction* GetCostFunctionForResidualBlock(
-      const ResidualBlockId residual_block) const;
-  const LossFunction* GetLossFunctionForResidualBlock(
-      const ResidualBlockId residual_block) const;
-
-  void GetResidualBlocksForParameterBlock(
-      const double* values,
-      std::vector<ResidualBlockId>* residual_blocks) const;
-
-  const Program& program() const { return *program_; }
-  Program* mutable_program() { return program_.get(); }
-
-  const ParameterMap& parameter_map() const { return parameter_block_map_; }
-  const ResidualBlockSet& residual_block_set() const {
-    CHECK(options_.enable_fast_removal)
-        << "Fast removal not enabled, residual_block_set is not maintained.";
-    return residual_block_set_;
-  }
-
-  const Problem::Options& options() const { return options_; }
-
-  ContextImpl* context() { return context_impl_; }
-
- private:
-  ParameterBlock* InternalAddParameterBlock(double* values, int size);
-  void InternalSetManifold(double* values,
-                           ParameterBlock* parameter_block,
-                           Manifold* manifold);
-
-  void InternalRemoveResidualBlock(ResidualBlock* residual_block);
-
-  // Delete the arguments in question. These differ from the Remove* functions
-  // in that they do not clean up references to the block to delete; they
-  // merely delete them.
-  template <typename Block>
-  void DeleteBlockInVector(std::vector<Block*>* mutable_blocks,
-                           Block* block_to_remove);
-  void DeleteBlock(ResidualBlock* residual_block);
-  void DeleteBlock(ParameterBlock* parameter_block);
-
-  const Problem::Options options_;
-
-  bool context_impl_owned_;
-  ContextImpl* context_impl_;
-
-  // The mapping from user pointers to parameter blocks.
-  ParameterMap parameter_block_map_;
-
-  // Iff enable_fast_removal is enabled, contains the current residual blocks.
-  ResidualBlockSet residual_block_set_;
-
-  // The actual parameter and residual blocks.
-  std::unique_ptr<internal::Program> program_;
-
-  // TODO(sameeragarwal): Unify the shared object handling across object types.
-  // Right now we are using vectors for Manifold objects and reference counting
-  // for CostFunctions and LossFunctions. Ideally this should be done uniformly.
-
-  // When removing parameter blocks, manifolds have ambiguous
-  // ownership. Instead of scanning the entire problem to see if the
-  // manifold is shared with other parameter blocks, buffer
-  // them until destruction.
-  std::vector<Manifold*> manifolds_to_delete_;
-
-  // For each cost function and loss function in the problem, a count
-  // of the number of residual blocks that refer to them. When the
-  // count goes to zero and the problem owns these objects, they are
-  // destroyed.
-  CostFunctionRefCount cost_function_ref_count_;
-  LossFunctionRefCount loss_function_ref_count_;
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_PUBLIC_PROBLEM_IMPL_H_
diff --git a/third_party/ceres/internal/ceres/problem_test.cc b/third_party/ceres/internal/ceres/problem_test.cc
deleted file mode 100644
index ebf15cd..0000000
--- a/third_party/ceres/internal/ceres/problem_test.cc
+++ /dev/null
@@ -1,2312 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.com (Keir Mierle)
-
-#include "ceres/problem.h"
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/casts.h"
-#include "ceres/cost_function.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/evaluator_test_utils.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/loss_function.h"
-#include "ceres/map_util.h"
-#include "ceres/parameter_block.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/types.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// The following three classes are for the purposes of defining
-// function signatures. They have dummy Evaluate functions.
-
-// Trivial cost function that accepts a single argument.
-class UnaryCostFunction : public CostFunction {
- public:
-  UnaryCostFunction(int num_residuals, int32_t parameter_block_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 1;
-    }
-    return true;
-  }
-};
-
-// Trivial cost function that accepts two arguments.
-class BinaryCostFunction : public CostFunction {
- public:
-  BinaryCostFunction(int num_residuals,
-                     int32_t parameter_block1_size,
-                     int32_t parameter_block2_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block1_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block2_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 2;
-    }
-    return true;
-  }
-};
-
-// Trivial cost function that accepts three arguments.
-class TernaryCostFunction : public CostFunction {
- public:
-  TernaryCostFunction(int num_residuals,
-                      int32_t parameter_block1_size,
-                      int32_t parameter_block2_size,
-                      int32_t parameter_block3_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block1_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block2_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block3_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = 3;
-    }
-    return true;
-  }
-};
-
-TEST(Problem, MoveConstructor) {
-  Problem src;
-  double x;
-  src.AddParameterBlock(&x, 1);
-  Problem dst(std::move(src));
-  EXPECT_TRUE(dst.HasParameterBlock(&x));
-}
-
-TEST(Problem, MoveAssignment) {
-  Problem src;
-  double x;
-  src.AddParameterBlock(&x, 1);
-  Problem dst;
-  dst = std::move(src);
-  EXPECT_TRUE(dst.HasParameterBlock(&x));
-}
-
-TEST(Problem, AddResidualWithNullCostFunctionDies) {
-  double x[3], y[4], z[5];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-  problem.AddParameterBlock(z, 5);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddResidualBlock(nullptr, nullptr, x),
-                            "cost_function != nullptr");
-}
-
-TEST(Problem, AddResidualWithIncorrectNumberOfParameterBlocksDies) {
-  double x[3], y[4], z[5];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-  problem.AddParameterBlock(z, 5);
-
-  // UnaryCostFunction takes only one parameter, but two are passed.
-  EXPECT_DEATH_IF_SUPPORTED(
-      problem.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x, y),
-      "num_parameter_blocks");
-}
-
-TEST(Problem, AddResidualWithDifferentSizesOnTheSameVariableDies) {
-  double x[3];
-
-  Problem problem;
-  problem.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x);
-  EXPECT_DEATH_IF_SUPPORTED(
-      problem.AddResidualBlock(
-          new UnaryCostFunction(2, 4 /* 4 != 3 */), nullptr, x),
-      "different block sizes");
-}
-
-TEST(Problem, AddResidualWithDuplicateParametersDies) {
-  double x[3], z[5];
-
-  Problem problem;
-  EXPECT_DEATH_IF_SUPPORTED(
-      problem.AddResidualBlock(new BinaryCostFunction(2, 3, 3), nullptr, x, x),
-      "Duplicate parameter blocks");
-  EXPECT_DEATH_IF_SUPPORTED(
-      problem.AddResidualBlock(
-          new TernaryCostFunction(1, 5, 3, 5), nullptr, z, x, z),
-      "Duplicate parameter blocks");
-}
-
-TEST(Problem, AddResidualWithIncorrectSizesOfParameterBlockDies) {
-  double x[3], y[4], z[5];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-  problem.AddParameterBlock(z, 5);
-
-  // The cost function expects the size of the second parameter, z, to be 4
-  // instead of 5 as declared above. This is fatal.
-  EXPECT_DEATH_IF_SUPPORTED(
-      problem.AddResidualBlock(new BinaryCostFunction(2, 3, 4), nullptr, x, z),
-      "different block sizes");
-}
-
-TEST(Problem, AddResidualAddsDuplicatedParametersOnlyOnce) {
-  double x[3], y[4], z[5];
-
-  Problem problem;
-  problem.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x);
-  problem.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x);
-  problem.AddResidualBlock(new UnaryCostFunction(2, 4), nullptr, y);
-  problem.AddResidualBlock(new UnaryCostFunction(2, 5), nullptr, z);
-
-  EXPECT_EQ(3, problem.NumParameterBlocks());
-  EXPECT_EQ(12, problem.NumParameters());
-}
-
-TEST(Problem, AddParameterWithDifferentSizesOnTheSameVariableDies) {
-  double x[3], y[4];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(x, 4),
-                            "different block sizes");
-}
-
-static double* IntToPtr(int i) {
-  return reinterpret_cast<double*>(sizeof(double) * i);  // NOLINT
-}
-
-TEST(Problem, AddParameterWithAliasedParametersDies) {
-  // Layout is
-  //
-  //   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17
-  //                 [x] x  x  x  x          [y] y  y
-  //         o==o==o                 o==o==o           o==o
-  //               o--o--o     o--o--o     o--o  o--o--o
-  //
-  // Parameter block additions are tested as listed above; expected successful
-  // ones marked with o==o and aliasing ones marked with o--o.
-
-  Problem problem;
-  problem.AddParameterBlock(IntToPtr(5), 5);   // x
-  problem.AddParameterBlock(IntToPtr(13), 3);  // y
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(IntToPtr(4), 2),
-                            "Aliasing detected");
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(IntToPtr(4), 3),
-                            "Aliasing detected");
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(IntToPtr(4), 9),
-                            "Aliasing detected");
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(IntToPtr(8), 3),
-                            "Aliasing detected");
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(IntToPtr(12), 2),
-                            "Aliasing detected");
-  EXPECT_DEATH_IF_SUPPORTED(problem.AddParameterBlock(IntToPtr(14), 3),
-                            "Aliasing detected");
-
-  // These ones should work.
-  problem.AddParameterBlock(IntToPtr(2), 3);
-  problem.AddParameterBlock(IntToPtr(10), 3);
-  problem.AddParameterBlock(IntToPtr(16), 2);
-
-  ASSERT_EQ(5, problem.NumParameterBlocks());
-}
-
-TEST(Problem, AddParameterIgnoresDuplicateCalls) {
-  double x[3], y[4];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-
-  // Creating parameter blocks multiple times is ignored.
-  problem.AddParameterBlock(x, 3);
-  problem.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x);
-
-  // ... even repeatedly.
-  problem.AddParameterBlock(x, 3);
-  problem.AddResidualBlock(new UnaryCostFunction(2, 3), nullptr, x);
-
-  // More parameters are fine.
-  problem.AddParameterBlock(y, 4);
-  problem.AddResidualBlock(new UnaryCostFunction(2, 4), nullptr, y);
-
-  EXPECT_EQ(2, problem.NumParameterBlocks());
-  EXPECT_EQ(7, problem.NumParameters());
-}
-
-class DestructorCountingCostFunction : public SizedCostFunction<3, 4, 5> {
- public:
-  explicit DestructorCountingCostFunction(int* num_destructions)
-      : num_destructions_(num_destructions) {}
-
-  ~DestructorCountingCostFunction() override { *num_destructions_ += 1; }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    return true;
-  }
-
- private:
-  int* num_destructions_;
-};
-
-TEST(Problem, ReusedCostFunctionsAreOnlyDeletedOnce) {
-  double y[4], z[5];
-  int num_destructions = 0;
-
-  // Add a cost function multiple times and check to make sure that
-  // the destructor on the cost function is only called once.
-  {
-    Problem problem;
-    problem.AddParameterBlock(y, 4);
-    problem.AddParameterBlock(z, 5);
-
-    CostFunction* cost = new DestructorCountingCostFunction(&num_destructions);
-    problem.AddResidualBlock(cost, nullptr, y, z);
-    problem.AddResidualBlock(cost, nullptr, y, z);
-    problem.AddResidualBlock(cost, nullptr, y, z);
-    EXPECT_EQ(3, problem.NumResidualBlocks());
-  }
-
-  // Check that the destructor was called only once.
-  CHECK_EQ(num_destructions, 1);
-}
-
-TEST(Problem, GetCostFunctionForResidualBlock) {
-  double x[3];
-  Problem problem;
-  CostFunction* cost_function = new UnaryCostFunction(2, 3);
-  const ResidualBlockId residual_block =
-      problem.AddResidualBlock(cost_function, nullptr, x);
-  EXPECT_EQ(problem.GetCostFunctionForResidualBlock(residual_block),
-            cost_function);
-  EXPECT_TRUE(problem.GetLossFunctionForResidualBlock(residual_block) ==
-              nullptr);
-}
-
-TEST(Problem, GetLossFunctionForResidualBlock) {
-  double x[3];
-  Problem problem;
-  CostFunction* cost_function = new UnaryCostFunction(2, 3);
-  LossFunction* loss_function = new TrivialLoss();
-  const ResidualBlockId residual_block =
-      problem.AddResidualBlock(cost_function, loss_function, x);
-  EXPECT_EQ(problem.GetCostFunctionForResidualBlock(residual_block),
-            cost_function);
-  EXPECT_EQ(problem.GetLossFunctionForResidualBlock(residual_block),
-            loss_function);
-}
-
-TEST(Problem, CostFunctionsAreDeletedEvenWithRemovals) {
-  double y[4], z[5], w[4];
-  int num_destructions = 0;
-  {
-    Problem problem;
-    problem.AddParameterBlock(y, 4);
-    problem.AddParameterBlock(z, 5);
-
-    CostFunction* cost_yz =
-        new DestructorCountingCostFunction(&num_destructions);
-    CostFunction* cost_wz =
-        new DestructorCountingCostFunction(&num_destructions);
-    ResidualBlock* r_yz = problem.AddResidualBlock(cost_yz, nullptr, y, z);
-    ResidualBlock* r_wz = problem.AddResidualBlock(cost_wz, nullptr, w, z);
-    EXPECT_EQ(2, problem.NumResidualBlocks());
-
-    problem.RemoveResidualBlock(r_yz);
-    CHECK_EQ(num_destructions, 1);
-    problem.RemoveResidualBlock(r_wz);
-    CHECK_EQ(num_destructions, 2);
-
-    EXPECT_EQ(0, problem.NumResidualBlocks());
-  }
-  CHECK_EQ(num_destructions, 2);
-}
-
-// Make the dynamic problem tests (e.g. for removing residual blocks)
-// parameterized on whether the low-latency mode is enabled or not.
-//
-// This tests against ProblemImpl instead of Problem in order to inspect the
-// state of the resulting Program; this is difficult with only the thin Problem
-// interface.
-struct DynamicProblem : public ::testing::TestWithParam<bool> {
-  DynamicProblem() {
-    Problem::Options options;
-    options.enable_fast_removal = GetParam();
-    problem = std::make_unique<ProblemImpl>(options);
-  }
-
-  ParameterBlock* GetParameterBlock(int block) {
-    return problem->program().parameter_blocks()[block];
-  }
-  ResidualBlock* GetResidualBlock(int block) {
-    return problem->program().residual_blocks()[block];
-  }
-
-  bool HasResidualBlock(ResidualBlock* residual_block) {
-    bool have_residual_block = true;
-    if (GetParam()) {
-      have_residual_block &=
-          (problem->residual_block_set().find(residual_block) !=
-           problem->residual_block_set().end());
-    }
-    have_residual_block &=
-        find(problem->program().residual_blocks().begin(),
-             problem->program().residual_blocks().end(),
-             residual_block) != problem->program().residual_blocks().end();
-    return have_residual_block;
-  }
-
-  int NumResidualBlocks() {
-    // Verify that the hash set of residuals is maintained consistently.
-    if (GetParam()) {
-      EXPECT_EQ(problem->residual_block_set().size(),
-                problem->NumResidualBlocks());
-    }
-    return problem->NumResidualBlocks();
-  }
-
-  // The next block of functions until the end are only for testing the
-  // residual block removals.
-  void ExpectParameterBlockContainsResidualBlock(
-      double* values, ResidualBlock* residual_block) {
-    ParameterBlock* parameter_block =
-        FindOrDie(problem->parameter_map(), values);
-    EXPECT_TRUE(ContainsKey(*(parameter_block->mutable_residual_blocks()),
-                            residual_block));
-  }
-
-  void ExpectSize(double* values, int size) {
-    ParameterBlock* parameter_block =
-        FindOrDie(problem->parameter_map(), values);
-    EXPECT_EQ(size, parameter_block->mutable_residual_blocks()->size());
-  }
-
-  // Degenerate case.
-  void ExpectParameterBlockContains(double* values) { ExpectSize(values, 0); }
-
-  void ExpectParameterBlockContains(double* values, ResidualBlock* r1) {
-    ExpectSize(values, 1);
-    ExpectParameterBlockContainsResidualBlock(values, r1);
-  }
-
-  void ExpectParameterBlockContains(double* values,
-                                    ResidualBlock* r1,
-                                    ResidualBlock* r2) {
-    ExpectSize(values, 2);
-    ExpectParameterBlockContainsResidualBlock(values, r1);
-    ExpectParameterBlockContainsResidualBlock(values, r2);
-  }
-
-  void ExpectParameterBlockContains(double* values,
-                                    ResidualBlock* r1,
-                                    ResidualBlock* r2,
-                                    ResidualBlock* r3) {
-    ExpectSize(values, 3);
-    ExpectParameterBlockContainsResidualBlock(values, r1);
-    ExpectParameterBlockContainsResidualBlock(values, r2);
-    ExpectParameterBlockContainsResidualBlock(values, r3);
-  }
-
-  void ExpectParameterBlockContains(double* values,
-                                    ResidualBlock* r1,
-                                    ResidualBlock* r2,
-                                    ResidualBlock* r3,
-                                    ResidualBlock* r4) {
-    ExpectSize(values, 4);
-    ExpectParameterBlockContainsResidualBlock(values, r1);
-    ExpectParameterBlockContainsResidualBlock(values, r2);
-    ExpectParameterBlockContainsResidualBlock(values, r3);
-    ExpectParameterBlockContainsResidualBlock(values, r4);
-  }
-
-  std::unique_ptr<ProblemImpl> problem;
-  double y[4], z[5], w[3];
-};
-
-TEST(Problem, SetParameterBlockConstantWithUnknownPtrDies) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.SetParameterBlockConstant(y),
-                            "Parameter block not found:");
-}
-
-TEST(Problem, SetParameterBlockVariableWithUnknownPtrDies) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.SetParameterBlockVariable(y),
-                            "Parameter block not found:");
-}
-
-TEST(Problem, IsParameterBlockConstant) {
-  double x1[3];
-  double x2[3];
-
-  Problem problem;
-  problem.AddParameterBlock(x1, 3);
-  problem.AddParameterBlock(x2, 3);
-
-  EXPECT_FALSE(problem.IsParameterBlockConstant(x1));
-  EXPECT_FALSE(problem.IsParameterBlockConstant(x2));
-
-  problem.SetParameterBlockConstant(x1);
-  EXPECT_TRUE(problem.IsParameterBlockConstant(x1));
-  EXPECT_FALSE(problem.IsParameterBlockConstant(x2));
-
-  problem.SetParameterBlockConstant(x2);
-  EXPECT_TRUE(problem.IsParameterBlockConstant(x1));
-  EXPECT_TRUE(problem.IsParameterBlockConstant(x2));
-
-  problem.SetParameterBlockVariable(x1);
-  EXPECT_FALSE(problem.IsParameterBlockConstant(x1));
-  EXPECT_TRUE(problem.IsParameterBlockConstant(x2));
-}
-
-TEST(Problem, IsParameterBlockConstantWithUnknownPtrDies) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.IsParameterBlockConstant(y),
-                            "Parameter block not found:");
-}
-
-TEST(Problem, SetManifoldWithUnknownPtrDies) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.SetManifold(y, new EuclideanManifold<3>),
-                            "Parameter block not found:");
-}
-
-TEST(Problem, RemoveParameterBlockWithUnknownPtrDies) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-
-  EXPECT_DEATH_IF_SUPPORTED(problem.RemoveParameterBlock(y),
-                            "Parameter block not found:");
-}
-
-TEST(Problem, GetManifold) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 2);
-
-  Manifold* manifold = new EuclideanManifold<3>;
-  problem.SetManifold(x, manifold);
-  EXPECT_EQ(problem.GetManifold(x), manifold);
-  EXPECT_TRUE(problem.GetManifold(y) == nullptr);
-}
-
-TEST(Problem, HasManifold) {
-  double x[3];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 2);
-
-  Manifold* manifold = new EuclideanManifold<3>;
-  problem.SetManifold(x, manifold);
-  EXPECT_TRUE(problem.HasManifold(x));
-  EXPECT_FALSE(problem.HasManifold(y));
-}
-
-TEST(Problem, RepeatedAddParameterBlockResetsManifold) {
-  double x[4];
-  double y[2];
-
-  Problem problem;
-  problem.AddParameterBlock(x, 4, new SubsetManifold(4, {0, 1}));
-  problem.AddParameterBlock(y, 2);
-
-  EXPECT_FALSE(problem.HasManifold(y));
-
-  EXPECT_TRUE(problem.HasManifold(x));
-  EXPECT_EQ(problem.ParameterBlockSize(x), 4);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(x), 2);
-  EXPECT_EQ(problem.GetManifold(x)->AmbientSize(), 4);
-  EXPECT_EQ(problem.GetManifold(x)->TangentSize(), 2);
-
-  problem.AddParameterBlock(x, 4, static_cast<Manifold*>(nullptr));
-  EXPECT_FALSE(problem.HasManifold(x));
-  EXPECT_EQ(problem.ParameterBlockSize(x), 4);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(x), 4);
-  EXPECT_EQ(problem.GetManifold(x), nullptr);
-
-  problem.AddParameterBlock(x, 4, new SubsetManifold(4, {0, 1, 2}));
-  problem.AddParameterBlock(y, 2);
-  EXPECT_TRUE(problem.HasManifold(x));
-  EXPECT_EQ(problem.ParameterBlockSize(x), 4);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(x), 1);
-  EXPECT_EQ(problem.GetManifold(x)->AmbientSize(), 4);
-  EXPECT_EQ(problem.GetManifold(x)->TangentSize(), 1);
-}
-
-TEST(Problem, ParameterBlockQueryTestUsingManifold) {
-  double x[3];
-  double y[4];
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-
-  std::vector<int> constant_parameters;
-  constant_parameters.push_back(0);
-  problem.SetManifold(x, new SubsetManifold(3, constant_parameters));
-  EXPECT_EQ(problem.ParameterBlockSize(x), 3);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(x), 2);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(y), 4);
-
-  std::vector<double*> parameter_blocks;
-  problem.GetParameterBlocks(&parameter_blocks);
-  EXPECT_EQ(parameter_blocks.size(), 2);
-  EXPECT_NE(parameter_blocks[0], parameter_blocks[1]);
-  EXPECT_TRUE(parameter_blocks[0] == x || parameter_blocks[0] == y);
-  EXPECT_TRUE(parameter_blocks[1] == x || parameter_blocks[1] == y);
-
-  EXPECT_TRUE(problem.HasParameterBlock(x));
-  problem.RemoveParameterBlock(x);
-  EXPECT_FALSE(problem.HasParameterBlock(x));
-  problem.GetParameterBlocks(&parameter_blocks);
-  EXPECT_EQ(parameter_blocks.size(), 1);
-  EXPECT_TRUE(parameter_blocks[0] == y);
-}
-
-TEST(Problem, ParameterBlockQueryTest) {
-  double x[3];
-  double y[4];
-  Problem problem;
-  problem.AddParameterBlock(x, 3);
-  problem.AddParameterBlock(y, 4);
-
-  std::vector<int> constant_parameters;
-  constant_parameters.push_back(0);
-  problem.SetManifold(x, new SubsetManifold(3, constant_parameters));
-  EXPECT_EQ(problem.ParameterBlockSize(x), 3);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(x), 2);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(y), 4);
-
-  std::vector<double*> parameter_blocks;
-  problem.GetParameterBlocks(&parameter_blocks);
-  EXPECT_EQ(parameter_blocks.size(), 2);
-  EXPECT_NE(parameter_blocks[0], parameter_blocks[1]);
-  EXPECT_TRUE(parameter_blocks[0] == x || parameter_blocks[0] == y);
-  EXPECT_TRUE(parameter_blocks[1] == x || parameter_blocks[1] == y);
-
-  EXPECT_TRUE(problem.HasParameterBlock(x));
-  problem.RemoveParameterBlock(x);
-  EXPECT_FALSE(problem.HasParameterBlock(x));
-  problem.GetParameterBlocks(&parameter_blocks);
-  EXPECT_EQ(parameter_blocks.size(), 1);
-  EXPECT_TRUE(parameter_blocks[0] == y);
-}
-
-TEST_P(DynamicProblem, RemoveParameterBlockWithNoResiduals) {
-  problem->AddParameterBlock(y, 4);
-  problem->AddParameterBlock(z, 5);
-  problem->AddParameterBlock(w, 3);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(y, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(z, GetParameterBlock(1)->user_state());
-  EXPECT_EQ(w, GetParameterBlock(2)->user_state());
-
-  // w is at the end, which might break the swapping logic so try adding and
-  // removing it.
-  problem->RemoveParameterBlock(w);
-  ASSERT_EQ(2, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(y, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(z, GetParameterBlock(1)->user_state());
-  problem->AddParameterBlock(w, 3);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(y, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(z, GetParameterBlock(1)->user_state());
-  EXPECT_EQ(w, GetParameterBlock(2)->user_state());
-
-  // Now remove z, which is in the middle, and add it back.
-  problem->RemoveParameterBlock(z);
-  ASSERT_EQ(2, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(y, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(w, GetParameterBlock(1)->user_state());
-  problem->AddParameterBlock(z, 5);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(y, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(w, GetParameterBlock(1)->user_state());
-  EXPECT_EQ(z, GetParameterBlock(2)->user_state());
-
-  // Now remove everything.
-  // y
-  problem->RemoveParameterBlock(y);
-  ASSERT_EQ(2, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(z, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(w, GetParameterBlock(1)->user_state());
-
-  // z
-  problem->RemoveParameterBlock(z);
-  ASSERT_EQ(1, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(w, GetParameterBlock(0)->user_state());
-
-  // w
-  problem->RemoveParameterBlock(w);
-  EXPECT_EQ(0, problem->NumParameterBlocks());
-  EXPECT_EQ(0, NumResidualBlocks());
-}
-
-TEST_P(DynamicProblem, RemoveParameterBlockWithResiduals) {
-  problem->AddParameterBlock(y, 4);
-  problem->AddParameterBlock(z, 5);
-  problem->AddParameterBlock(w, 3);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  EXPECT_EQ(y, GetParameterBlock(0)->user_state());
-  EXPECT_EQ(z, GetParameterBlock(1)->user_state());
-  EXPECT_EQ(w, GetParameterBlock(2)->user_state());
-
-  // clang-format off
-
-  // Add all combinations of cost functions.
-  CostFunction* cost_yzw = new TernaryCostFunction(1, 4, 5, 3);
-  CostFunction* cost_yz  = new BinaryCostFunction (1, 4, 5);
-  CostFunction* cost_yw  = new BinaryCostFunction (1, 4, 3);
-  CostFunction* cost_zw  = new BinaryCostFunction (1, 5, 3);
-  CostFunction* cost_y   = new UnaryCostFunction  (1, 4);
-  CostFunction* cost_z   = new UnaryCostFunction  (1, 5);
-  CostFunction* cost_w   = new UnaryCostFunction  (1, 3);
-
-  ResidualBlock* r_yzw = problem->AddResidualBlock(cost_yzw, nullptr, y, z, w);
-  ResidualBlock* r_yz  = problem->AddResidualBlock(cost_yz,  nullptr, y, z);
-  ResidualBlock* r_yw  = problem->AddResidualBlock(cost_yw,  nullptr, y, w);
-  ResidualBlock* r_zw  = problem->AddResidualBlock(cost_zw,  nullptr, z, w);
-  ResidualBlock* r_y   = problem->AddResidualBlock(cost_y,   nullptr, y);
-  ResidualBlock* r_z   = problem->AddResidualBlock(cost_z,   nullptr, z);
-  ResidualBlock* r_w   = problem->AddResidualBlock(cost_w,   nullptr, w);
-
-  EXPECT_EQ(3, problem->NumParameterBlocks());
-  EXPECT_EQ(7, NumResidualBlocks());
-
-  // Remove w, which should remove r_yzw, r_yw, r_zw, r_w.
-  problem->RemoveParameterBlock(w);
-  ASSERT_EQ(2, problem->NumParameterBlocks());
-  ASSERT_EQ(3, NumResidualBlocks());
-
-  ASSERT_FALSE(HasResidualBlock(r_yzw));
-  ASSERT_TRUE (HasResidualBlock(r_yz ));
-  ASSERT_FALSE(HasResidualBlock(r_yw ));
-  ASSERT_FALSE(HasResidualBlock(r_zw ));
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_TRUE (HasResidualBlock(r_z  ));
-  ASSERT_FALSE(HasResidualBlock(r_w  ));
-
-  // Remove z, which will remove almost everything else.
-  problem->RemoveParameterBlock(z);
-  ASSERT_EQ(1, problem->NumParameterBlocks());
-  ASSERT_EQ(1, NumResidualBlocks());
-
-  ASSERT_FALSE(HasResidualBlock(r_yzw));
-  ASSERT_FALSE(HasResidualBlock(r_yz ));
-  ASSERT_FALSE(HasResidualBlock(r_yw ));
-  ASSERT_FALSE(HasResidualBlock(r_zw ));
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_FALSE(HasResidualBlock(r_z  ));
-  ASSERT_FALSE(HasResidualBlock(r_w  ));
-
-  // Remove y; all gone.
-  problem->RemoveParameterBlock(y);
-  EXPECT_EQ(0, problem->NumParameterBlocks());
-  EXPECT_EQ(0, NumResidualBlocks());
-
-  // clang-format on
-}
-
-TEST_P(DynamicProblem, RemoveResidualBlock) {
-  problem->AddParameterBlock(y, 4);
-  problem->AddParameterBlock(z, 5);
-  problem->AddParameterBlock(w, 3);
-
-  // clang-format off
-
-  // Add all combinations of cost functions.
-  CostFunction* cost_yzw = new TernaryCostFunction(1, 4, 5, 3);
-  CostFunction* cost_yz  = new BinaryCostFunction (1, 4, 5);
-  CostFunction* cost_yw  = new BinaryCostFunction (1, 4, 3);
-  CostFunction* cost_zw  = new BinaryCostFunction (1, 5, 3);
-  CostFunction* cost_y   = new UnaryCostFunction  (1, 4);
-  CostFunction* cost_z   = new UnaryCostFunction  (1, 5);
-  CostFunction* cost_w   = new UnaryCostFunction  (1, 3);
-
-  ResidualBlock* r_yzw = problem->AddResidualBlock(cost_yzw, nullptr, y, z, w);
-  ResidualBlock* r_yz  = problem->AddResidualBlock(cost_yz,  nullptr, y, z);
-  ResidualBlock* r_yw  = problem->AddResidualBlock(cost_yw,  nullptr, y, w);
-  ResidualBlock* r_zw  = problem->AddResidualBlock(cost_zw,  nullptr, z, w);
-  ResidualBlock* r_y   = problem->AddResidualBlock(cost_y,   nullptr, y);
-  ResidualBlock* r_z   = problem->AddResidualBlock(cost_z,   nullptr, z);
-  ResidualBlock* r_w   = problem->AddResidualBlock(cost_w,   nullptr, w);
-
-  if (GetParam()) {
-    // In this test parameterization, there should be back-pointers from the
-    // parameter blocks to the residual blocks.
-    ExpectParameterBlockContains(y, r_yzw, r_yz, r_yw, r_y);
-    ExpectParameterBlockContains(z, r_yzw, r_yz, r_zw, r_z);
-    ExpectParameterBlockContains(w, r_yzw, r_yw, r_zw, r_w);
-  } else {
-    // Otherwise, nothing.
-    EXPECT_TRUE(GetParameterBlock(0)->mutable_residual_blocks() == nullptr);
-    EXPECT_TRUE(GetParameterBlock(1)->mutable_residual_blocks() == nullptr);
-    EXPECT_TRUE(GetParameterBlock(2)->mutable_residual_blocks() == nullptr);
-  }
-  EXPECT_EQ(3, problem->NumParameterBlocks());
-  EXPECT_EQ(7, NumResidualBlocks());
-
-  // Remove each residual and check the state after each removal.
-
-  // Remove r_yzw.
-  problem->RemoveResidualBlock(r_yzw);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(6, NumResidualBlocks());
-  if (GetParam()) {
-    ExpectParameterBlockContains(y, r_yz, r_yw, r_y);
-    ExpectParameterBlockContains(z, r_yz, r_zw, r_z);
-    ExpectParameterBlockContains(w, r_yw, r_zw, r_w);
-  }
-  ASSERT_TRUE (HasResidualBlock(r_yz ));
-  ASSERT_TRUE (HasResidualBlock(r_yw ));
-  ASSERT_TRUE (HasResidualBlock(r_zw ));
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_TRUE (HasResidualBlock(r_z  ));
-  ASSERT_TRUE (HasResidualBlock(r_w  ));
-
-  // Remove r_yw.
-  problem->RemoveResidualBlock(r_yw);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(5, NumResidualBlocks());
-  if (GetParam()) {
-    ExpectParameterBlockContains(y, r_yz, r_y);
-    ExpectParameterBlockContains(z, r_yz, r_zw, r_z);
-    ExpectParameterBlockContains(w, r_zw, r_w);
-  }
-  ASSERT_TRUE (HasResidualBlock(r_yz ));
-  ASSERT_TRUE (HasResidualBlock(r_zw ));
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_TRUE (HasResidualBlock(r_z  ));
-  ASSERT_TRUE (HasResidualBlock(r_w  ));
-
-  // Remove r_zw.
-  problem->RemoveResidualBlock(r_zw);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(4, NumResidualBlocks());
-  if (GetParam()) {
-    ExpectParameterBlockContains(y, r_yz, r_y);
-    ExpectParameterBlockContains(z, r_yz, r_z);
-    ExpectParameterBlockContains(w, r_w);
-  }
-  ASSERT_TRUE (HasResidualBlock(r_yz ));
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_TRUE (HasResidualBlock(r_z  ));
-  ASSERT_TRUE (HasResidualBlock(r_w  ));
-
-  // Remove r_w.
-  problem->RemoveResidualBlock(r_w);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(3, NumResidualBlocks());
-  if (GetParam()) {
-    ExpectParameterBlockContains(y, r_yz, r_y);
-    ExpectParameterBlockContains(z, r_yz, r_z);
-    ExpectParameterBlockContains(w);
-  }
-  ASSERT_TRUE (HasResidualBlock(r_yz ));
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_TRUE (HasResidualBlock(r_z  ));
-
-  // Remove r_yz.
-  problem->RemoveResidualBlock(r_yz);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(2, NumResidualBlocks());
-  if (GetParam()) {
-    ExpectParameterBlockContains(y, r_y);
-    ExpectParameterBlockContains(z, r_z);
-    ExpectParameterBlockContains(w);
-  }
-  ASSERT_TRUE (HasResidualBlock(r_y  ));
-  ASSERT_TRUE (HasResidualBlock(r_z  ));
-
-  // Remove the last two.
-  problem->RemoveResidualBlock(r_z);
-  problem->RemoveResidualBlock(r_y);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(0, NumResidualBlocks());
-  if (GetParam()) {
-    ExpectParameterBlockContains(y);
-    ExpectParameterBlockContains(z);
-    ExpectParameterBlockContains(w);
-  }
-
-  // clang-format on
-}
-
-TEST_P(DynamicProblem, RemoveInvalidResidualBlockDies) {
-  problem->AddParameterBlock(y, 4);
-  problem->AddParameterBlock(z, 5);
-  problem->AddParameterBlock(w, 3);
-
-  // clang-format off
-
-  // Add all combinations of cost functions.
-  CostFunction* cost_yzw = new TernaryCostFunction(1, 4, 5, 3);
-  CostFunction* cost_yz  = new BinaryCostFunction (1, 4, 5);
-  CostFunction* cost_yw  = new BinaryCostFunction (1, 4, 3);
-  CostFunction* cost_zw  = new BinaryCostFunction (1, 5, 3);
-  CostFunction* cost_y   = new UnaryCostFunction  (1, 4);
-  CostFunction* cost_z   = new UnaryCostFunction  (1, 5);
-  CostFunction* cost_w   = new UnaryCostFunction  (1, 3);
-
-  ResidualBlock* r_yzw = problem->AddResidualBlock(cost_yzw, nullptr, y, z, w);
-  ResidualBlock* r_yz  = problem->AddResidualBlock(cost_yz,  nullptr, y, z);
-  ResidualBlock* r_yw  = problem->AddResidualBlock(cost_yw,  nullptr, y, w);
-  ResidualBlock* r_zw  = problem->AddResidualBlock(cost_zw,  nullptr, z, w);
-  ResidualBlock* r_y   = problem->AddResidualBlock(cost_y,   nullptr, y);
-  ResidualBlock* r_z   = problem->AddResidualBlock(cost_z,   nullptr, z);
-  ResidualBlock* r_w   = problem->AddResidualBlock(cost_w,   nullptr, w);
-
-  // clang-format on
-
-  // Remove r_yzw.
-  problem->RemoveResidualBlock(r_yzw);
-  ASSERT_EQ(3, problem->NumParameterBlocks());
-  ASSERT_EQ(6, NumResidualBlocks());
-  // Attempt to remove r_yzw again.
-  EXPECT_DEATH_IF_SUPPORTED(problem->RemoveResidualBlock(r_yzw), "not found");
-
-  // Attempt to remove a cast pointer never added as a residual.
-  int trash_memory = 1234;
-  auto* invalid_residual = reinterpret_cast<ResidualBlock*>(&trash_memory);
-  EXPECT_DEATH_IF_SUPPORTED(problem->RemoveResidualBlock(invalid_residual),
-                            "not found");
-
-  // Remove a parameter block, which in turn removes the dependent residuals
-  // then attempt to remove them directly.
-  problem->RemoveParameterBlock(z);
-  ASSERT_EQ(2, problem->NumParameterBlocks());
-  ASSERT_EQ(3, NumResidualBlocks());
-  EXPECT_DEATH_IF_SUPPORTED(problem->RemoveResidualBlock(r_yz), "not found");
-  EXPECT_DEATH_IF_SUPPORTED(problem->RemoveResidualBlock(r_zw), "not found");
-  EXPECT_DEATH_IF_SUPPORTED(problem->RemoveResidualBlock(r_z), "not found");
-
-  problem->RemoveResidualBlock(r_yw);
-  problem->RemoveResidualBlock(r_w);
-  problem->RemoveResidualBlock(r_y);
-}
-
-// Check that a null-terminated array, a, has the same elements as b.
-template <typename T>
-void ExpectVectorContainsUnordered(const T* a, const std::vector<T>& b) {
-  // Compute the size of a.
-  int size = 0;
-  while (a[size]) {
-    ++size;
-  }
-  ASSERT_EQ(size, b.size());
-
-  // Sort a.
-  std::vector<T> a_sorted(size);
-  copy(a, a + size, a_sorted.begin());
-  sort(a_sorted.begin(), a_sorted.end());
-
-  // Sort b.
-  std::vector<T> b_sorted(b);
-  sort(b_sorted.begin(), b_sorted.end());
-
-  // Compare.
-  for (int i = 0; i < size; ++i) {
-    EXPECT_EQ(a_sorted[i], b_sorted[i]);
-  }
-}
-
-static void ExpectProblemHasResidualBlocks(
-    const ProblemImpl& problem,
-    const ResidualBlockId* expected_residual_blocks) {
-  std::vector<ResidualBlockId> residual_blocks;
-  problem.GetResidualBlocks(&residual_blocks);
-  ExpectVectorContainsUnordered(expected_residual_blocks, residual_blocks);
-}
-
-TEST_P(DynamicProblem, GetXXXBlocksForYYYBlock) {
-  problem->AddParameterBlock(y, 4);
-  problem->AddParameterBlock(z, 5);
-  problem->AddParameterBlock(w, 3);
-
-  // clang-format off
-
-  // Add all combinations of cost functions.
-  CostFunction* cost_yzw = new TernaryCostFunction(1, 4, 5, 3);
-  CostFunction* cost_yz  = new BinaryCostFunction (1, 4, 5);
-  CostFunction* cost_yw  = new BinaryCostFunction (1, 4, 3);
-  CostFunction* cost_zw  = new BinaryCostFunction (1, 5, 3);
-  CostFunction* cost_y   = new UnaryCostFunction  (1, 4);
-  CostFunction* cost_z   = new UnaryCostFunction  (1, 5);
-  CostFunction* cost_w   = new UnaryCostFunction  (1, 3);
-
-  ResidualBlock* r_yzw = problem->AddResidualBlock(cost_yzw, nullptr, y, z, w);
-  {
-    ResidualBlockId expected_residuals[] = {r_yzw, nullptr};
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-  ResidualBlock* r_yz  = problem->AddResidualBlock(cost_yz,  nullptr, y, z);
-  {
-    ResidualBlockId expected_residuals[] = {r_yzw, r_yz, nullptr};
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-  ResidualBlock* r_yw  = problem->AddResidualBlock(cost_yw,  nullptr, y, w);
-  {
-    ResidualBlock *expected_residuals[] = {r_yzw, r_yz, r_yw, nullptr};
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-  ResidualBlock* r_zw  = problem->AddResidualBlock(cost_zw,  nullptr, z, w);
-  {
-    ResidualBlock *expected_residuals[] = {r_yzw, r_yz, r_yw, r_zw, nullptr};
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-  ResidualBlock* r_y   = problem->AddResidualBlock(cost_y,   nullptr, y);
-  {
-    ResidualBlock *expected_residuals[] = {r_yzw, r_yz, r_yw, r_zw, r_y, nullptr};
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-  ResidualBlock* r_z   = problem->AddResidualBlock(cost_z,   nullptr, z);
-  {
-    ResidualBlock *expected_residuals[] = {
-      r_yzw, r_yz, r_yw, r_zw, r_y, r_z, nullptr
-    };
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-  ResidualBlock* r_w   = problem->AddResidualBlock(cost_w,   nullptr, w);
-  {
-    ResidualBlock *expected_residuals[] = {
-      r_yzw, r_yz, r_yw, r_zw, r_y, r_z, r_w, nullptr
-    };
-    ExpectProblemHasResidualBlocks(*problem, expected_residuals);
-  }
-
-  std::vector<double*> parameter_blocks;
-  std::vector<ResidualBlockId> residual_blocks;
-
-  // Check GetResidualBlocksForParameterBlock() for all parameter blocks.
-  struct GetResidualBlocksForParameterBlockTestCase {
-    double* parameter_block;
-    ResidualBlockId expected_residual_blocks[10];
-  };
-  GetResidualBlocksForParameterBlockTestCase get_residual_blocks_cases[] = {
-    { y, { r_yzw, r_yz, r_yw, r_y, nullptr} },
-    { z, { r_yzw, r_yz, r_zw, r_z, nullptr} },
-    { w, { r_yzw, r_yw, r_zw, r_w, nullptr} },
-    { nullptr, { nullptr } }
-  };
-  for (int i = 0; get_residual_blocks_cases[i].parameter_block; ++i) {
-    problem->GetResidualBlocksForParameterBlock(
-        get_residual_blocks_cases[i].parameter_block,
-        &residual_blocks);
-    ExpectVectorContainsUnordered(
-        get_residual_blocks_cases[i].expected_residual_blocks,
-        residual_blocks);
-  }
-
-  // Check GetParameterBlocksForResidualBlock() for all residual blocks.
-  struct GetParameterBlocksForResidualBlockTestCase {
-    ResidualBlockId residual_block;
-    double* expected_parameter_blocks[10];
-  };
-  GetParameterBlocksForResidualBlockTestCase get_parameter_blocks_cases[] = {
-    { r_yzw, { y, z, w, nullptr } },
-    { r_yz , { y, z, nullptr } },
-    { r_yw , { y, w, nullptr } },
-    { r_zw , { z, w, nullptr } },
-    { r_y  , { y, nullptr } },
-    { r_z  , { z, nullptr } },
-    { r_w  , { w, nullptr } },
-    { nullptr, { nullptr } }
-  };
-  for (int i = 0; get_parameter_blocks_cases[i].residual_block; ++i) {
-    problem->GetParameterBlocksForResidualBlock(
-        get_parameter_blocks_cases[i].residual_block,
-        &parameter_blocks);
-    ExpectVectorContainsUnordered(
-        get_parameter_blocks_cases[i].expected_parameter_blocks,
-        parameter_blocks);
-  }
-
-  // clang-format on
-}
-
-INSTANTIATE_TEST_SUITE_P(OptionsInstantiation,
-                         DynamicProblem,
-                         ::testing::Values(true, false));
-
-// Test for Problem::Evaluate
-
-// r_i = i - (j + 1) * x_ij^2
-template <int kNumResiduals, int kNumParameterBlocks>
-class QuadraticCostFunction : public CostFunction {
- public:
-  QuadraticCostFunction() {
-    CHECK_GT(kNumResiduals, 0);
-    CHECK_GT(kNumParameterBlocks, 0);
-    set_num_residuals(kNumResiduals);
-    for (int i = 0; i < kNumParameterBlocks; ++i) {
-      mutable_parameter_block_sizes()->push_back(kNumResiduals);
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < kNumResiduals; ++i) {
-      residuals[i] = i;
-      for (int j = 0; j < kNumParameterBlocks; ++j) {
-        residuals[i] -= (j + 1.0) * parameters[j][i] * parameters[j][i];
-      }
-    }
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    for (int j = 0; j < kNumParameterBlocks; ++j) {
-      if (jacobians[j] != nullptr) {
-        MatrixRef(jacobians[j], kNumResiduals, kNumResiduals) =
-            (-2.0 * (j + 1.0) * ConstVectorRef(parameters[j], kNumResiduals))
-                .asDiagonal();
-      }
-    }
-
-    return true;
-  }
-};
-
-// Convert a CRSMatrix to a dense Eigen matrix.
-static void CRSToDenseMatrix(const CRSMatrix& input, Matrix* output) {
-  CHECK(output != nullptr);
-  Matrix& m = *output;
-  m.resize(input.num_rows, input.num_cols);
-  m.setZero();
-  for (int row = 0; row < input.num_rows; ++row) {
-    for (int j = input.rows[row]; j < input.rows[row + 1]; ++j) {
-      const int col = input.cols[j];
-      m(row, col) = input.values[j];
-    }
-  }
-}
-
-class ProblemEvaluateTest : public ::testing::Test {
- protected:
-  void SetUp() override {
-    for (int i = 0; i < 6; ++i) {
-      parameters_[i] = static_cast<double>(i + 1);
-    }
-
-    parameter_blocks_.push_back(parameters_);
-    parameter_blocks_.push_back(parameters_ + 2);
-    parameter_blocks_.push_back(parameters_ + 4);
-
-    CostFunction* cost_function = new QuadraticCostFunction<2, 2>;
-
-    // f(x, y)
-    residual_blocks_.push_back(problem_.AddResidualBlock(
-        cost_function, nullptr, parameters_, parameters_ + 2));
-    // g(y, z)
-    residual_blocks_.push_back(problem_.AddResidualBlock(
-        cost_function, nullptr, parameters_ + 2, parameters_ + 4));
-    // h(z, x)
-    residual_blocks_.push_back(problem_.AddResidualBlock(
-        cost_function, nullptr, parameters_ + 4, parameters_));
-  }
-
-  void TearDown() override { EXPECT_TRUE(problem_.program().IsValid()); }
-
-  void EvaluateAndCompare(const Problem::EvaluateOptions& options,
-                          const int expected_num_rows,
-                          const int expected_num_cols,
-                          const double expected_cost,
-                          const double* expected_residuals,
-                          const double* expected_gradient,
-                          const double* expected_jacobian) {
-    double cost;
-    std::vector<double> residuals;
-    std::vector<double> gradient;
-    CRSMatrix jacobian;
-
-    EXPECT_TRUE(
-        problem_.Evaluate(options,
-                          &cost,
-                          expected_residuals != nullptr ? &residuals : nullptr,
-                          expected_gradient != nullptr ? &gradient : nullptr,
-                          expected_jacobian != nullptr ? &jacobian : nullptr));
-
-    if (expected_residuals != nullptr) {
-      EXPECT_EQ(residuals.size(), expected_num_rows);
-    }
-
-    if (expected_gradient != nullptr) {
-      EXPECT_EQ(gradient.size(), expected_num_cols);
-    }
-
-    if (expected_jacobian != nullptr) {
-      EXPECT_EQ(jacobian.num_rows, expected_num_rows);
-      EXPECT_EQ(jacobian.num_cols, expected_num_cols);
-    }
-
-    Matrix dense_jacobian;
-    if (expected_jacobian != nullptr) {
-      CRSToDenseMatrix(jacobian, &dense_jacobian);
-    }
-
-    CompareEvaluations(expected_num_rows,
-                       expected_num_cols,
-                       expected_cost,
-                       expected_residuals,
-                       expected_gradient,
-                       expected_jacobian,
-                       cost,
-                       !residuals.empty() ? &residuals[0] : nullptr,
-                       !gradient.empty() ? &gradient[0] : nullptr,
-                       dense_jacobian.data());
-  }
-
-  void CheckAllEvaluationCombinations(const Problem::EvaluateOptions& options,
-                                      const ExpectedEvaluation& expected) {
-    for (int i = 0; i < 8; ++i) {
-      EvaluateAndCompare(options,
-                         expected.num_rows,
-                         expected.num_cols,
-                         expected.cost,
-                         (i & 1) ? expected.residuals : nullptr,
-                         (i & 2) ? expected.gradient : nullptr,
-                         (i & 4) ? expected.jacobian : nullptr);
-    }
-  }
-
-  ProblemImpl problem_;
-  double parameters_[6];
-  std::vector<double*> parameter_blocks_;
-  std::vector<ResidualBlockId> residual_blocks_;
-};
-
-TEST_F(ProblemEvaluateTest, MultipleParameterAndResidualBlocks) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 6,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -59.0, -87.0,  // g
-      -27.0, -43.0   // h
-    },
-    // Gradient
-    {  146.0,  484.0,   // x
-       582.0, 1256.0,   // y
-      1450.0, 2604.0,   // z
-    },
-    // Jacobian
-    //                       x             y             z
-    { /* f(x, y) */ -2.0,  0.0, -12.0,   0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0, -16.0,   0.0,   0.0,
-      /* g(y, z) */  0.0,  0.0,  -6.0,   0.0, -20.0,   0.0,
-                     0.0,  0.0,   0.0,  -8.0,   0.0, -24.0,
-      /* h(z, x) */ -4.0,  0.0,   0.0,   0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0,   0.0,   0.0, -12.0
-    }
-  };
-  // clang-format on
-
-  CheckAllEvaluationCombinations(Problem::EvaluateOptions(), expected);
-}
-
-TEST_F(ProblemEvaluateTest, ParameterAndResidualBlocksPassedInOptions) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 6,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -59.0, -87.0,  // g
-      -27.0, -43.0   // h
-    },
-    // Gradient
-    {  146.0,  484.0,   // x
-       582.0, 1256.0,   // y
-      1450.0, 2604.0,   // z
-    },
-    // Jacobian
-    //                       x             y             z
-    { /* f(x, y) */ -2.0,  0.0, -12.0,   0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0, -16.0,   0.0,   0.0,
-      /* g(y, z) */  0.0,  0.0,  -6.0,   0.0, -20.0,   0.0,
-                     0.0,  0.0,   0.0,  -8.0,   0.0, -24.0,
-      /* h(z, x) */ -4.0,  0.0,   0.0,   0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0,   0.0,   0.0, -12.0
-    }
-  };
-  // clang-format on
-
-  Problem::EvaluateOptions evaluate_options;
-  evaluate_options.parameter_blocks = parameter_blocks_;
-  evaluate_options.residual_blocks = residual_blocks_;
-  CheckAllEvaluationCombinations(evaluate_options, expected);
-}
-
-TEST_F(ProblemEvaluateTest, ReorderedResidualBlocks) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 6,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -27.0, -43.0,  // h
-      -59.0, -87.0   // g
-    },
-    // Gradient
-    {  146.0,  484.0,   // x
-       582.0, 1256.0,   // y
-      1450.0, 2604.0,   // z
-    },
-    // Jacobian
-    //                       x             y             z
-    { /* f(x, y) */ -2.0,  0.0, -12.0,   0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0, -16.0,   0.0,   0.0,
-      /* h(z, x) */ -4.0,  0.0,   0.0,   0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0,   0.0,   0.0, -12.0,
-      /* g(y, z) */  0.0,  0.0,  -6.0,   0.0, -20.0,   0.0,
-                     0.0,  0.0,   0.0,  -8.0,   0.0, -24.0
-    }
-  };
-  // clang-format on
-
-  Problem::EvaluateOptions evaluate_options;
-  evaluate_options.parameter_blocks = parameter_blocks_;
-
-  // f, h, g
-  evaluate_options.residual_blocks.push_back(residual_blocks_[0]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[2]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[1]);
-
-  CheckAllEvaluationCombinations(evaluate_options, expected);
-}
-
-TEST_F(ProblemEvaluateTest,
-       ReorderedResidualBlocksAndReorderedParameterBlocks) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 6,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -27.0, -43.0,  // h
-      -59.0, -87.0   // g
-    },
-    // Gradient
-    {  1450.0, 2604.0,   // z
-        582.0, 1256.0,   // y
-        146.0,  484.0,   // x
-    },
-     // Jacobian
-    //                       z             y             x
-    { /* f(x, y) */   0.0,   0.0, -12.0,   0.0,  -2.0,   0.0,
-                      0.0,   0.0,   0.0, -16.0,   0.0,  -4.0,
-      /* h(z, x) */ -10.0,   0.0,   0.0,   0.0,  -4.0,   0.0,
-                      0.0, -12.0,   0.0,   0.0,   0.0,  -8.0,
-      /* g(y, z) */ -20.0,   0.0,  -6.0,   0.0,   0.0,   0.0,
-                      0.0, -24.0,   0.0,  -8.0,   0.0,   0.0
-    }
-  };
-  // clang-format on
-
-  Problem::EvaluateOptions evaluate_options;
-  // z, y, x
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[2]);
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[1]);
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[0]);
-
-  // f, h, g
-  evaluate_options.residual_blocks.push_back(residual_blocks_[0]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[2]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[1]);
-
-  CheckAllEvaluationCombinations(evaluate_options, expected);
-}
-
-TEST_F(ProblemEvaluateTest, ConstantParameterBlock) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 6,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -59.0, -87.0,  // g
-      -27.0, -43.0   // h
-    },
-
-    // Gradient
-    {  146.0,  484.0,  // x
-         0.0,    0.0,  // y
-      1450.0, 2604.0,  // z
-    },
-
-    // Jacobian
-    //                       x             y             z
-    { /* f(x, y) */ -2.0,  0.0,   0.0,   0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0,   0.0,   0.0,   0.0,
-      /* g(y, z) */  0.0,  0.0,   0.0,   0.0, -20.0,   0.0,
-                     0.0,  0.0,   0.0,   0.0,   0.0, -24.0,
-      /* h(z, x) */ -4.0,  0.0,   0.0,   0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0,   0.0,   0.0, -12.0
-    }
-  };
-  // clang-format on
-
-  problem_.SetParameterBlockConstant(parameters_ + 2);
-  CheckAllEvaluationCombinations(Problem::EvaluateOptions(), expected);
-}
-
-TEST_F(ProblemEvaluateTest, ExcludedAResidualBlock) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    4, 6,
-    // Cost
-    2082.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -27.0, -43.0   // h
-    },
-    // Gradient
-    {  146.0,  484.0,   // x
-       228.0,  560.0,   // y
-       270.0,  516.0,   // z
-    },
-    // Jacobian
-    //                       x             y             z
-    { /* f(x, y) */ -2.0,  0.0, -12.0,   0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0, -16.0,   0.0,   0.0,
-      /* h(z, x) */ -4.0,  0.0,   0.0,   0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0,   0.0,   0.0, -12.0
-    }
-  };
-  // clang-format on
-
-  Problem::EvaluateOptions evaluate_options;
-  evaluate_options.residual_blocks.push_back(residual_blocks_[0]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[2]);
-
-  CheckAllEvaluationCombinations(evaluate_options, expected);
-}
-
-TEST_F(ProblemEvaluateTest, ExcludedParameterBlock) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 4,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -59.0, -87.0,  // g
-      -27.0, -43.0   // h
-    },
-
-    // Gradient
-    {  146.0,  484.0,  // x
-      1450.0, 2604.0,  // z
-    },
-
-    // Jacobian
-    //                       x             z
-    { /* f(x, y) */ -2.0,  0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0,   0.0,
-      /* g(y, z) */  0.0,  0.0, -20.0,   0.0,
-                     0.0,  0.0,   0.0, -24.0,
-      /* h(z, x) */ -4.0,  0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0, -12.0
-    }
-  };
-  // clang-format on
-
-  Problem::EvaluateOptions evaluate_options;
-  // x, z
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[0]);
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[2]);
-  evaluate_options.residual_blocks = residual_blocks_;
-  CheckAllEvaluationCombinations(evaluate_options, expected);
-}
-
-TEST_F(ProblemEvaluateTest, ExcludedParameterBlockAndExcludedResidualBlock) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    4, 4,
-    // Cost
-    6318.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -59.0, -87.0,  // g
-    },
-
-    // Gradient
-    {   38.0,  140.0,  // x
-      1180.0, 2088.0,  // z
-    },
-
-    // Jacobian
-    //                       x             z
-    { /* f(x, y) */ -2.0,  0.0,   0.0,   0.0,
-                     0.0, -4.0,   0.0,   0.0,
-      /* g(y, z) */  0.0,  0.0, -20.0,   0.0,
-                     0.0,  0.0,   0.0, -24.0,
-    }
-  };
-  // clang-format on
-
-  Problem::EvaluateOptions evaluate_options;
-  // x, z
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[0]);
-  evaluate_options.parameter_blocks.push_back(parameter_blocks_[2]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[0]);
-  evaluate_options.residual_blocks.push_back(residual_blocks_[1]);
-
-  CheckAllEvaluationCombinations(evaluate_options, expected);
-}
-
-TEST_F(ProblemEvaluateTest, Manifold) {
-  // clang-format off
-  ExpectedEvaluation expected = {
-    // Rows/columns
-    6, 5,
-    // Cost
-    7607.0,
-    // Residuals
-    { -19.0, -35.0,  // f
-      -59.0, -87.0,  // g
-      -27.0, -43.0   // h
-    },
-    // Gradient
-    {  146.0,  484.0,  // x
-      1256.0,          // y with SubsetManifold
-      1450.0, 2604.0,  // z
-    },
-    // Jacobian
-    //                       x      y             z
-    { /* f(x, y) */ -2.0,  0.0,   0.0,   0.0,   0.0,
-                     0.0, -4.0, -16.0,   0.0,   0.0,
-      /* g(y, z) */  0.0,  0.0,   0.0, -20.0,   0.0,
-                     0.0,  0.0,  -8.0,   0.0, -24.0,
-      /* h(z, x) */ -4.0,  0.0,   0.0, -10.0,   0.0,
-                     0.0, -8.0,   0.0,   0.0, -12.0
-    }
-  };
-  // clang-format on
-
-  std::vector<int> constant_parameters;
-  constant_parameters.push_back(0);
-  problem_.SetManifold(parameters_ + 2,
-                       new SubsetManifold(2, constant_parameters));
-
-  CheckAllEvaluationCombinations(Problem::EvaluateOptions(), expected);
-}
-
-struct IdentityFunctor {
-  template <typename T>
-  bool operator()(const T* x, const T* y, T* residuals) const {
-    residuals[0] = x[0];
-    residuals[1] = x[1];
-    residuals[2] = y[0];
-    residuals[3] = y[1];
-    residuals[4] = y[2];
-    return true;
-  }
-
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<IdentityFunctor, 5, 2, 3>(
-        new IdentityFunctor);
-  }
-};
-
-class ProblemEvaluateResidualBlockTest : public ::testing::Test {
- public:
-  static constexpr bool kApplyLossFunction = true;
-  static constexpr bool kDoNotApplyLossFunction = false;
-  static constexpr bool kNewPoint = true;
-  static constexpr bool kNotNewPoint = false;
-  static double loss_function_scale_;
-
- protected:
-  ProblemImpl problem_;
-  double x_[2] = {1, 2};
-  double y_[3] = {1, 2, 3};
-};
-
-double ProblemEvaluateResidualBlockTest::loss_function_scale_ = 2.0;
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockNoLossFunctionFullEval) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Matrix expected_dfdx = Matrix::Zero(5, 2);
-  expected_dfdx.block(0, 0, 2, 2) = Matrix::Identity(2, 2);
-  Matrix expected_dfdy = Matrix::Zero(5, 3);
-  expected_dfdy.block(2, 0, 3, 3) = Matrix::Identity(3, 3);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdx - actual_dfdx).norm() / actual_dfdx.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdx;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockNoLossFunctionNullEval) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             nullptr,
-                                             nullptr,
-                                             nullptr));
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest, OneResidualBlockNoLossFunctionCost) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             nullptr,
-                                             nullptr));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockNoLossFunctionCostAndResidual) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             nullptr));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockNoLossFunctionCostResidualAndOneJacobian) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Matrix expected_dfdx = Matrix::Zero(5, 2);
-  expected_dfdx.block(0, 0, 2, 2) = Matrix::Identity(2, 2);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  double* jacobians[2] = {actual_dfdx.data(), nullptr};
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdx - actual_dfdx).norm() / actual_dfdx.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdx;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockNoLossFunctionResidual) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Vector actual_f(5);
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             nullptr,
-                                             actual_f.data(),
-                                             nullptr));
-
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest, OneResidualBlockWithLossFunction) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(),
-                                new ScaledLoss(nullptr, 2.0, TAKE_OWNERSHIP),
-                                x_,
-                                y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  expected_f *= std::sqrt(loss_function_scale_);
-  Matrix expected_dfdx = Matrix::Zero(5, 2);
-  expected_dfdx.block(0, 0, 2, 2) = Matrix::Identity(2, 2);
-  expected_dfdx *= std::sqrt(loss_function_scale_);
-  Matrix expected_dfdy = Matrix::Zero(5, 3);
-  expected_dfdy.block(2, 0, 3, 3) = Matrix::Identity(3, 3);
-  expected_dfdy *= std::sqrt(loss_function_scale_);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdx - actual_dfdx).norm() / actual_dfdx.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdx;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockWithLossFunctionDisabled) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(),
-                                new ScaledLoss(nullptr, 2.0, TAKE_OWNERSHIP),
-                                x_,
-                                y_);
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Matrix expected_dfdx = Matrix::Zero(5, 2);
-  expected_dfdx.block(0, 0, 2, 2) = Matrix::Identity(2, 2);
-  Matrix expected_dfdy = Matrix::Zero(5, 3);
-  expected_dfdy.block(2, 0, 3, 3) = Matrix::Identity(3, 3);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kDoNotApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdx - actual_dfdx).norm() / actual_dfdx.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdx;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest, OneResidualBlockWithOneManifold) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  problem_.SetManifold(x_, new SubsetManifold(2, {1}));
-
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Matrix expected_dfdx = Matrix::Zero(5, 1);
-  expected_dfdx.block(0, 0, 1, 1) = Matrix::Identity(1, 1);
-  Matrix expected_dfdy = Matrix::Zero(5, 3);
-  expected_dfdy.block(2, 0, 3, 3) = Matrix::Identity(3, 3);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 1);
-  Matrix actual_dfdy(5, 3);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdx - actual_dfdx).norm() / actual_dfdx.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdx;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest, OneResidualBlockWithTwoManifolds) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  problem_.SetManifold(x_, new SubsetManifold(2, {1}));
-  problem_.SetManifold(y_, new SubsetManifold(3, {2}));
-
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Matrix expected_dfdx = Matrix::Zero(5, 1);
-  expected_dfdx.block(0, 0, 1, 1) = Matrix::Identity(1, 1);
-  Matrix expected_dfdy = Matrix::Zero(5, 2);
-  expected_dfdy.block(2, 0, 2, 2) = Matrix::Identity(2, 2);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 1);
-  Matrix actual_dfdy(5, 2);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdx - actual_dfdx).norm() / actual_dfdx.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdx;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockWithOneConstantParameterBlock) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  problem_.SetParameterBlockConstant(x_);
-
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  Matrix expected_dfdy = Matrix::Zero(5, 3);
-  expected_dfdy.block(2, 0, 3, 3) = Matrix::Identity(3, 3);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-
-  // Try evaluating both Jacobians, this should fail.
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_FALSE(problem_.EvaluateResidualBlock(residual_block_id,
-                                              kApplyLossFunction,
-                                              kNewPoint,
-                                              &actual_cost,
-                                              actual_f.data(),
-                                              jacobians));
-
-  jacobians[0] = nullptr;
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockWithAllConstantParameterBlocks) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  problem_.SetParameterBlockConstant(x_);
-  problem_.SetParameterBlockConstant(y_);
-
-  Vector expected_f(5);
-  expected_f << 1, 2, 1, 2, 3;
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-
-  // Try evaluating with one or more Jacobians, this should fail.
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_FALSE(problem_.EvaluateResidualBlock(residual_block_id,
-                                              kApplyLossFunction,
-                                              kNewPoint,
-                                              &actual_cost,
-                                              actual_f.data(),
-                                              jacobians));
-
-  jacobians[0] = nullptr;
-  EXPECT_FALSE(problem_.EvaluateResidualBlock(residual_block_id,
-                                              kApplyLossFunction,
-                                              kNewPoint,
-                                              &actual_cost,
-                                              actual_f.data(),
-                                              jacobians));
-  jacobians[1] = nullptr;
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-}
-
-TEST_F(ProblemEvaluateResidualBlockTest,
-       OneResidualBlockWithOneParameterBlockConstantAndParameterBlockChanged) {
-  ResidualBlockId residual_block_id =
-      problem_.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-  problem_.SetParameterBlockConstant(x_);
-
-  x_[0] = 2;
-  y_[2] = 1;
-  Vector expected_f(5);
-  expected_f << 2, 2, 1, 2, 1;
-  Matrix expected_dfdy = Matrix::Zero(5, 3);
-  expected_dfdy.block(2, 0, 3, 3) = Matrix::Identity(3, 3);
-  double expected_cost = expected_f.squaredNorm() / 2.0;
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-
-  // Try evaluating with one or more Jacobians, this should fail.
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_FALSE(problem_.EvaluateResidualBlock(residual_block_id,
-                                              kApplyLossFunction,
-                                              kNewPoint,
-                                              &actual_cost,
-                                              actual_f.data(),
-                                              jacobians));
-
-  jacobians[0] = nullptr;
-  EXPECT_TRUE(problem_.EvaluateResidualBlock(residual_block_id,
-                                             kApplyLossFunction,
-                                             kNewPoint,
-                                             &actual_cost,
-                                             actual_f.data(),
-                                             jacobians));
-  EXPECT_NEAR(std::abs(expected_cost - actual_cost) / actual_cost,
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_cost;
-  EXPECT_NEAR((expected_f - actual_f).norm() / actual_f.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_f;
-  EXPECT_NEAR((expected_dfdy - actual_dfdy).norm() / actual_dfdy.norm(),
-              0,
-              std::numeric_limits<double>::epsilon())
-      << actual_dfdy;
-}
-
-TEST(Problem, SetAndGetParameterLowerBound) {
-  Problem problem;
-  double x[] = {1.0, 2.0};
-  problem.AddParameterBlock(x, 2);
-
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 0),
-            -std::numeric_limits<double>::max());
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 1),
-            -std::numeric_limits<double>::max());
-
-  problem.SetParameterLowerBound(x, 0, -1.0);
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 0), -1.0);
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 1),
-            -std::numeric_limits<double>::max());
-
-  problem.SetParameterLowerBound(x, 0, -2.0);
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 0), -2.0);
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 1),
-            -std::numeric_limits<double>::max());
-
-  problem.SetParameterLowerBound(x, 0, -std::numeric_limits<double>::max());
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 0),
-            -std::numeric_limits<double>::max());
-  EXPECT_EQ(problem.GetParameterLowerBound(x, 1),
-            -std::numeric_limits<double>::max());
-}
-
-TEST(Problem, SetAndGetParameterUpperBound) {
-  Problem problem;
-  double x[] = {1.0, 2.0};
-  problem.AddParameterBlock(x, 2);
-
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 0),
-            std::numeric_limits<double>::max());
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 1),
-            std::numeric_limits<double>::max());
-
-  problem.SetParameterUpperBound(x, 0, -1.0);
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 0), -1.0);
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 1),
-            std::numeric_limits<double>::max());
-
-  problem.SetParameterUpperBound(x, 0, -2.0);
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 0), -2.0);
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 1),
-            std::numeric_limits<double>::max());
-
-  problem.SetParameterUpperBound(x, 0, std::numeric_limits<double>::max());
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 0),
-            std::numeric_limits<double>::max());
-  EXPECT_EQ(problem.GetParameterUpperBound(x, 1),
-            std::numeric_limits<double>::max());
-}
-
-TEST(Problem, SetManifoldTwice) {
-  Problem problem;
-  double x[] = {1.0, 2.0, 3.0};
-  problem.AddParameterBlock(x, 3);
-  problem.SetManifold(x, new SubsetManifold(3, {1}));
-  EXPECT_EQ(problem.GetManifold(x)->AmbientSize(), 3);
-  EXPECT_EQ(problem.GetManifold(x)->TangentSize(), 2);
-
-  problem.SetManifold(x, new SubsetManifold(3, {0, 1}));
-  EXPECT_EQ(problem.GetManifold(x)->AmbientSize(), 3);
-  EXPECT_EQ(problem.GetManifold(x)->TangentSize(), 1);
-}
-
-TEST(Problem, SetManifoldAndThenClearItWithNull) {
-  Problem problem;
-  double x[] = {1.0, 2.0, 3.0};
-  problem.AddParameterBlock(x, 3);
-  problem.SetManifold(x, new SubsetManifold(3, {1}));
-  EXPECT_EQ(problem.GetManifold(x)->AmbientSize(), 3);
-  EXPECT_EQ(problem.GetManifold(x)->TangentSize(), 2);
-
-  problem.SetManifold(x, nullptr);
-  EXPECT_EQ(problem.GetManifold(x), nullptr);
-  EXPECT_EQ(problem.ParameterBlockTangentSize(x), 3);
-  EXPECT_EQ(problem.ParameterBlockSize(x), 3);
-}
-
-TEST(Solver, ZeroTangentSizedManifoldMeansParameterBlockIsConstant) {
-  double x = 0.0;
-  double y = 1.0;
-  Problem problem;
-  problem.AddResidualBlock(new BinaryCostFunction(1, 1, 1), nullptr, &x, &y);
-  problem.SetManifold(&y, new SubsetManifold(1, {0}));
-  EXPECT_TRUE(problem.IsParameterBlockConstant(&y));
-}
-
-class MockEvaluationCallback : public EvaluationCallback {
- public:
-  MOCK_METHOD2(PrepareForEvaluation, void(bool, bool));
-};
-
-TEST(ProblemEvaluate, CallsEvaluationCallbackWithoutJacobian) {
-  constexpr bool kDoNotComputeJacobians = false;
-  constexpr bool kNewPoint = true;
-
-  MockEvaluationCallback evaluation_callback;
-  EXPECT_CALL(evaluation_callback,
-              PrepareForEvaluation(kDoNotComputeJacobians, kNewPoint))
-      .Times(1);
-
-  Problem::Options options;
-  options.evaluation_callback = &evaluation_callback;
-  ProblemImpl problem(options);
-  double x_[2] = {1, 2};
-  double y_[3] = {1, 2, 3};
-  problem.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-
-  double actual_cost;
-  EXPECT_TRUE(problem.Evaluate(
-      Problem::EvaluateOptions(), &actual_cost, nullptr, nullptr, nullptr));
-}
-
-TEST(ProblemEvaluate, CallsEvaluationCallbackWithJacobian) {
-  constexpr bool kComputeJacobians = true;
-  constexpr bool kNewPoint = true;
-
-  MockEvaluationCallback evaluation_callback;
-  EXPECT_CALL(evaluation_callback,
-              PrepareForEvaluation(kComputeJacobians, kNewPoint))
-      .Times(1);
-
-  Problem::Options options;
-  options.evaluation_callback = &evaluation_callback;
-  ProblemImpl problem(options);
-  double x_[2] = {1, 2};
-  double y_[3] = {1, 2, 3};
-  problem.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-
-  double actual_cost;
-  ceres::CRSMatrix jacobian;
-  EXPECT_TRUE(problem.Evaluate(
-      Problem::EvaluateOptions(), &actual_cost, nullptr, nullptr, &jacobian));
-}
-
-TEST(ProblemEvaluateResidualBlock, NewPointCallsEvaluationCallback) {
-  constexpr bool kComputeJacobians = true;
-  constexpr bool kNewPoint = true;
-
-  MockEvaluationCallback evaluation_callback;
-  EXPECT_CALL(evaluation_callback,
-              PrepareForEvaluation(kComputeJacobians, kNewPoint))
-      .Times(1);
-
-  Problem::Options options;
-  options.evaluation_callback = &evaluation_callback;
-  ProblemImpl problem(options);
-  double x_[2] = {1, 2};
-  double y_[3] = {1, 2, 3};
-  ResidualBlockId residual_block_id =
-      problem.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem.EvaluateResidualBlock(
-      residual_block_id, true, true, &actual_cost, actual_f.data(), jacobians));
-}
-
-TEST(ProblemEvaluateResidualBlock, OldPointCallsEvaluationCallback) {
-  constexpr bool kComputeJacobians = true;
-  constexpr bool kOldPoint = false;
-
-  MockEvaluationCallback evaluation_callback;
-  EXPECT_CALL(evaluation_callback,
-              PrepareForEvaluation(kComputeJacobians, kOldPoint))
-      .Times(1);
-
-  Problem::Options options;
-  options.evaluation_callback = &evaluation_callback;
-  ProblemImpl problem(options);
-  double x_[2] = {1, 2};
-  double y_[3] = {1, 2, 3};
-  ResidualBlockId residual_block_id =
-      problem.AddResidualBlock(IdentityFunctor::Create(), nullptr, x_, y_);
-
-  double actual_cost;
-  Vector actual_f(5);
-  Matrix actual_dfdx(5, 2);
-  Matrix actual_dfdy(5, 3);
-  double* jacobians[2] = {actual_dfdx.data(), actual_dfdy.data()};
-  EXPECT_TRUE(problem.EvaluateResidualBlock(residual_block_id,
-                                            true,
-                                            false,
-                                            &actual_cost,
-                                            actual_f.data(),
-                                            jacobians));
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/program.cc b/third_party/ceres/internal/ceres/program.cc
deleted file mode 100644
index a5a243d..0000000
--- a/third_party/ceres/internal/ceres/program.cc
+++ /dev/null
@@ -1,564 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/program.h"
-
-#include <algorithm>
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/array_utils.h"
-#include "ceres/casts.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/cost_function.h"
-#include "ceres/evaluator.h"
-#include "ceres/internal/export.h"
-#include "ceres/loss_function.h"
-#include "ceres/manifold.h"
-#include "ceres/map_util.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parameter_block.h"
-#include "ceres/problem.h"
-#include "ceres/residual_block.h"
-#include "ceres/stl_util.h"
-#include "ceres/triplet_sparse_matrix.h"
-
-namespace ceres::internal {
-
-const std::vector<ParameterBlock*>& Program::parameter_blocks() const {
-  return parameter_blocks_;
-}
-
-const std::vector<ResidualBlock*>& Program::residual_blocks() const {
-  return residual_blocks_;
-}
-
-std::vector<ParameterBlock*>* Program::mutable_parameter_blocks() {
-  return &parameter_blocks_;
-}
-
-std::vector<ResidualBlock*>* Program::mutable_residual_blocks() {
-  return &residual_blocks_;
-}
-
-EvaluationCallback* Program::mutable_evaluation_callback() {
-  return evaluation_callback_;
-}
-
-bool Program::StateVectorToParameterBlocks(const double* state) {
-  for (auto* parameter_block : parameter_blocks_) {
-    if (!parameter_block->IsConstant() && !parameter_block->SetState(state)) {
-      return false;
-    }
-    state += parameter_block->Size();
-  }
-  return true;
-}
-
-void Program::ParameterBlocksToStateVector(double* state) const {
-  for (auto* parameter_block : parameter_blocks_) {
-    parameter_block->GetState(state);
-    state += parameter_block->Size();
-  }
-}
-
-void Program::CopyParameterBlockStateToUserState() {
-  for (auto* parameter_block : parameter_blocks_) {
-    parameter_block->GetState(parameter_block->mutable_user_state());
-  }
-}
-
-bool Program::SetParameterBlockStatePtrsToUserStatePtrs() {
-  for (auto* parameter_block : parameter_blocks_) {
-    if (!parameter_block->IsConstant() &&
-        !parameter_block->SetState(parameter_block->user_state())) {
-      return false;
-    }
-  }
-  return true;
-}
-
-bool Program::Plus(const double* state,
-                   const double* delta,
-                   double* state_plus_delta,
-                   ContextImpl* context,
-                   int num_threads) const {
-  std::atomic<bool> abort(false);
-  auto* parameter_blocks = parameter_blocks_.data();
-  ParallelFor(
-      context,
-      0,
-      parameter_blocks_.size(),
-      num_threads,
-      [&abort, state, delta, state_plus_delta, parameter_blocks](int block_id) {
-        if (abort) {
-          return;
-        }
-        auto parameter_block = parameter_blocks[block_id];
-
-        auto block_state = state + parameter_block->state_offset();
-        auto block_delta = delta + parameter_block->delta_offset();
-        auto block_state_plus_delta =
-            state_plus_delta + parameter_block->state_offset();
-        if (!parameter_block->Plus(
-                block_state, block_delta, block_state_plus_delta)) {
-          abort = true;
-        }
-      });
-  return abort == false;
-}
-
-void Program::SetParameterOffsetsAndIndex() {
-  // Set positions for all parameters appearing as arguments to residuals to one
-  // past the end of the parameter block array.
-  for (auto* residual_block : residual_blocks_) {
-    for (int j = 0; j < residual_block->NumParameterBlocks(); ++j) {
-      residual_block->parameter_blocks()[j]->set_index(-1);
-    }
-  }
-  // For parameters that appear in the program, set their position and offset.
-  int state_offset = 0;
-  int delta_offset = 0;
-  for (int i = 0; i < parameter_blocks_.size(); ++i) {
-    parameter_blocks_[i]->set_index(i);
-    parameter_blocks_[i]->set_state_offset(state_offset);
-    parameter_blocks_[i]->set_delta_offset(delta_offset);
-    state_offset += parameter_blocks_[i]->Size();
-    delta_offset += parameter_blocks_[i]->TangentSize();
-  }
-}
-
-bool Program::IsValid() const {
-  for (int i = 0; i < residual_blocks_.size(); ++i) {
-    const ResidualBlock* residual_block = residual_blocks_[i];
-    if (residual_block->index() != i) {
-      LOG(WARNING) << "Residual block: " << i
-                   << " has incorrect index: " << residual_block->index();
-      return false;
-    }
-  }
-
-  int state_offset = 0;
-  int delta_offset = 0;
-  for (int i = 0; i < parameter_blocks_.size(); ++i) {
-    const ParameterBlock* parameter_block = parameter_blocks_[i];
-    if (parameter_block->index() != i ||
-        parameter_block->state_offset() != state_offset ||
-        parameter_block->delta_offset() != delta_offset) {
-      LOG(WARNING) << "Parameter block: " << i
-                   << "has incorrect indexing information: "
-                   << parameter_block->ToString();
-      return false;
-    }
-
-    state_offset += parameter_blocks_[i]->Size();
-    delta_offset += parameter_blocks_[i]->TangentSize();
-  }
-
-  return true;
-}
-
-bool Program::ParameterBlocksAreFinite(std::string* message) const {
-  CHECK(message != nullptr);
-  for (auto* parameter_block : parameter_blocks_) {
-    const double* array = parameter_block->user_state();
-    const int size = parameter_block->Size();
-    const int invalid_index = FindInvalidValue(size, array);
-    if (invalid_index != size) {
-      *message = StringPrintf(
-          "ParameterBlock: %p with size %d has at least one invalid value.\n"
-          "First invalid value is at index: %d.\n"
-          "Parameter block values: ",
-          array,
-          size,
-          invalid_index);
-      AppendArrayToString(size, array, message);
-      return false;
-    }
-  }
-  return true;
-}
-
-bool Program::IsBoundsConstrained() const {
-  for (auto* parameter_block : parameter_blocks_) {
-    if (parameter_block->IsConstant()) {
-      continue;
-    }
-    const int size = parameter_block->Size();
-    for (int j = 0; j < size; ++j) {
-      const double lower_bound = parameter_block->LowerBoundForParameter(j);
-      const double upper_bound = parameter_block->UpperBoundForParameter(j);
-      if (lower_bound > -std::numeric_limits<double>::max() ||
-          upper_bound < std::numeric_limits<double>::max()) {
-        return true;
-      }
-    }
-  }
-  return false;
-}
-
-bool Program::IsFeasible(std::string* message) const {
-  CHECK(message != nullptr);
-  for (auto* parameter_block : parameter_blocks_) {
-    const double* parameters = parameter_block->user_state();
-    const int size = parameter_block->Size();
-    if (parameter_block->IsConstant()) {
-      // Constant parameter blocks must start in the feasible region
-      // to ultimately produce a feasible solution, since Ceres cannot
-      // change them.
-      for (int j = 0; j < size; ++j) {
-        const double lower_bound = parameter_block->LowerBoundForParameter(j);
-        const double upper_bound = parameter_block->UpperBoundForParameter(j);
-        if (parameters[j] < lower_bound || parameters[j] > upper_bound) {
-          *message = StringPrintf(
-              "ParameterBlock: %p with size %d has at least one infeasible "
-              "value."
-              "\nFirst infeasible value is at index: %d."
-              "\nLower bound: %e, value: %e, upper bound: %e"
-              "\nParameter block values: ",
-              parameters,
-              size,
-              j,
-              lower_bound,
-              parameters[j],
-              upper_bound);
-          AppendArrayToString(size, parameters, message);
-          return false;
-        }
-      }
-    } else {
-      // Variable parameter blocks must have non-empty feasible
-      // regions, otherwise there is no way to produce a feasible
-      // solution.
-      for (int j = 0; j < size; ++j) {
-        const double lower_bound = parameter_block->LowerBoundForParameter(j);
-        const double upper_bound = parameter_block->UpperBoundForParameter(j);
-        if (lower_bound >= upper_bound) {
-          *message = StringPrintf(
-              "ParameterBlock: %p with size %d has at least one infeasible "
-              "bound."
-              "\nFirst infeasible bound is at index: %d."
-              "\nLower bound: %e, upper bound: %e"
-              "\nParameter block values: ",
-              parameters,
-              size,
-              j,
-              lower_bound,
-              upper_bound);
-          AppendArrayToString(size, parameters, message);
-          return false;
-        }
-      }
-    }
-  }
-
-  return true;
-}
-
-std::unique_ptr<Program> Program::CreateReducedProgram(
-    std::vector<double*>* removed_parameter_blocks,
-    double* fixed_cost,
-    std::string* error) const {
-  CHECK(removed_parameter_blocks != nullptr);
-  CHECK(fixed_cost != nullptr);
-  CHECK(error != nullptr);
-
-  std::unique_ptr<Program> reduced_program = std::make_unique<Program>(*this);
-  if (!reduced_program->RemoveFixedBlocks(
-          removed_parameter_blocks, fixed_cost, error)) {
-    return nullptr;
-  }
-
-  reduced_program->SetParameterOffsetsAndIndex();
-  return reduced_program;
-}
-
-bool Program::RemoveFixedBlocks(std::vector<double*>* removed_parameter_blocks,
-                                double* fixed_cost,
-                                std::string* error) {
-  CHECK(removed_parameter_blocks != nullptr);
-  CHECK(fixed_cost != nullptr);
-  CHECK(error != nullptr);
-
-  std::unique_ptr<double[]> residual_block_evaluate_scratch;
-  residual_block_evaluate_scratch =
-      std::make_unique<double[]>(MaxScratchDoublesNeededForEvaluate());
-  *fixed_cost = 0.0;
-
-  bool need_to_call_prepare_for_evaluation = evaluation_callback_ != nullptr;
-
-  // Mark all the parameters as unused. Abuse the index member of the
-  // parameter blocks for the marking.
-  for (auto* parameter_block : parameter_blocks_) {
-    parameter_block->set_index(-1);
-  }
-
-  // Filter out residual that have all-constant parameters, and mark
-  // all the parameter blocks that appear in residuals.
-  int num_active_residual_blocks = 0;
-  for (int i = 0; i < residual_blocks_.size(); ++i) {
-    ResidualBlock* residual_block = residual_blocks_[i];
-    int num_parameter_blocks = residual_block->NumParameterBlocks();
-
-    // Determine if the residual block is fixed, and also mark varying
-    // parameters that appear in the residual block.
-    bool all_constant = true;
-    for (int k = 0; k < num_parameter_blocks; k++) {
-      ParameterBlock* parameter_block = residual_block->parameter_blocks()[k];
-      if (!parameter_block->IsConstant()) {
-        all_constant = false;
-        parameter_block->set_index(1);
-      }
-    }
-
-    if (!all_constant) {
-      residual_blocks_[num_active_residual_blocks++] = residual_block;
-      continue;
-    }
-
-    // This is an exceedingly rare case, where the user has residual
-    // blocks which are effectively constant but they are also
-    // performance sensitive enough to add an EvaluationCallback.
-    //
-    // In this case before we evaluate the cost of the constant
-    // residual blocks, we must call
-    // EvaluationCallback::PrepareForEvaluation(). Because this call
-    // can be costly, we only call this if we actually encounter a
-    // residual block with all constant parameter blocks.
-    //
-    // It is worth nothing that there is a minor inefficiency here,
-    // that the iteration 0 of TrustRegionMinimizer will also cause
-    // PrepareForEvaluation to be called on the same point, but with
-    // evaluate_jacobians = true. We could try and optimize this here,
-    // but given the rarity of this case, the additional complexity
-    // and long range dependency is not worth it.
-    if (need_to_call_prepare_for_evaluation) {
-      constexpr bool kNewPoint = true;
-      constexpr bool kDoNotEvaluateJacobians = false;
-      evaluation_callback_->PrepareForEvaluation(kDoNotEvaluateJacobians,
-                                                 kNewPoint);
-      need_to_call_prepare_for_evaluation = false;
-    }
-
-    // The residual is constant and will be removed, so its cost is
-    // added to the variable fixed_cost.
-    double cost = 0.0;
-    if (!residual_block->Evaluate(true,
-                                  &cost,
-                                  nullptr,
-                                  nullptr,
-                                  residual_block_evaluate_scratch.get())) {
-      *error = StringPrintf(
-          "Evaluation of the residual %d failed during "
-          "removal of fixed residual blocks.",
-          i);
-      return false;
-    }
-
-    *fixed_cost += cost;
-  }
-  residual_blocks_.resize(num_active_residual_blocks);
-
-  // Filter out unused or fixed parameter blocks.
-  int num_active_parameter_blocks = 0;
-  removed_parameter_blocks->clear();
-  for (auto* parameter_block : parameter_blocks_) {
-    if (parameter_block->index() == -1) {
-      removed_parameter_blocks->push_back(
-          parameter_block->mutable_user_state());
-    } else {
-      parameter_blocks_[num_active_parameter_blocks++] = parameter_block;
-    }
-  }
-  parameter_blocks_.resize(num_active_parameter_blocks);
-
-  if (!(((NumResidualBlocks() == 0) && (NumParameterBlocks() == 0)) ||
-        ((NumResidualBlocks() != 0) && (NumParameterBlocks() != 0)))) {
-    *error = "Congratulations, you found a bug in Ceres. Please report it.";
-    return false;
-  }
-
-  return true;
-}
-
-bool Program::IsParameterBlockSetIndependent(
-    const std::set<double*>& independent_set) const {
-  // Loop over each residual block and ensure that no two parameter
-  // blocks in the same residual block are part of
-  // parameter_block_ptrs as that would violate the assumption that it
-  // is an independent set in the Hessian matrix.
-  for (const ResidualBlock* residual_block : residual_blocks_) {
-    ParameterBlock* const* parameter_blocks =
-        residual_block->parameter_blocks();
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    int count = 0;
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      count += independent_set.count(parameter_blocks[i]->mutable_user_state());
-    }
-    if (count > 1) {
-      return false;
-    }
-  }
-  return true;
-}
-
-std::unique_ptr<TripletSparseMatrix>
-Program::CreateJacobianBlockSparsityTranspose(int start_residual_block) const {
-  // Matrix to store the block sparsity structure of the Jacobian.
-  const int num_rows = NumParameterBlocks();
-  const int num_cols = NumResidualBlocks() - start_residual_block;
-
-  std::unique_ptr<TripletSparseMatrix> tsm(
-      new TripletSparseMatrix(num_rows, num_cols, 10 * num_cols));
-  int num_nonzeros = 0;
-  int* rows = tsm->mutable_rows();
-  int* cols = tsm->mutable_cols();
-  double* values = tsm->mutable_values();
-
-  for (int c = start_residual_block; c < residual_blocks_.size(); ++c) {
-    const ResidualBlock* residual_block = residual_blocks_[c];
-    const int num_parameter_blocks = residual_block->NumParameterBlocks();
-    ParameterBlock* const* parameter_blocks =
-        residual_block->parameter_blocks();
-
-    for (int j = 0; j < num_parameter_blocks; ++j) {
-      if (parameter_blocks[j]->IsConstant()) {
-        continue;
-      }
-
-      // Re-size the matrix if needed.
-      if (num_nonzeros >= tsm->max_num_nonzeros()) {
-        tsm->set_num_nonzeros(num_nonzeros);
-        tsm->Reserve(2 * num_nonzeros);
-        rows = tsm->mutable_rows();
-        cols = tsm->mutable_cols();
-        values = tsm->mutable_values();
-      }
-
-      const int r = parameter_blocks[j]->index();
-      rows[num_nonzeros] = r;
-      cols[num_nonzeros] = c - start_residual_block;
-      values[num_nonzeros] = 1.0;
-      ++num_nonzeros;
-    }
-  }
-
-  tsm->set_num_nonzeros(num_nonzeros);
-  return tsm;
-}
-
-int Program::NumResidualBlocks() const { return residual_blocks_.size(); }
-
-int Program::NumParameterBlocks() const { return parameter_blocks_.size(); }
-
-int Program::NumResiduals() const {
-  int num_residuals = 0;
-  for (auto* residual_block : residual_blocks_) {
-    num_residuals += residual_block->NumResiduals();
-  }
-  return num_residuals;
-}
-
-int Program::NumParameters() const {
-  int num_parameters = 0;
-  for (auto* parameter_block : parameter_blocks_) {
-    num_parameters += parameter_block->Size();
-  }
-  return num_parameters;
-}
-
-int Program::NumEffectiveParameters() const {
-  int num_parameters = 0;
-  for (auto* parameter_block : parameter_blocks_) {
-    num_parameters += parameter_block->TangentSize();
-  }
-  return num_parameters;
-}
-
-// TODO(sameeragarwal): The following methods should just be updated
-// incrementally and the values cached, rather than the linear
-// complexity we have right now on every call.
-int Program::MaxScratchDoublesNeededForEvaluate() const {
-  // Compute the scratch space needed for evaluate.
-  int max_scratch_bytes_for_evaluate = 0;
-  for (auto* residual_block : residual_blocks_) {
-    max_scratch_bytes_for_evaluate =
-        std::max(max_scratch_bytes_for_evaluate,
-                 residual_block->NumScratchDoublesForEvaluate());
-  }
-  return max_scratch_bytes_for_evaluate;
-}
-
-int Program::MaxDerivativesPerResidualBlock() const {
-  int max_derivatives = 0;
-  for (auto* residual_block : residual_blocks_) {
-    int derivatives = 0;
-    int num_parameters = residual_block->NumParameterBlocks();
-    for (int j = 0; j < num_parameters; ++j) {
-      derivatives += residual_block->NumResiduals() *
-                     residual_block->parameter_blocks()[j]->TangentSize();
-    }
-    max_derivatives = std::max(max_derivatives, derivatives);
-  }
-  return max_derivatives;
-}
-
-int Program::MaxParametersPerResidualBlock() const {
-  int max_parameters = 0;
-  for (auto* residual_block : residual_blocks_) {
-    max_parameters =
-        std::max(max_parameters, residual_block->NumParameterBlocks());
-  }
-  return max_parameters;
-}
-
-int Program::MaxResidualsPerResidualBlock() const {
-  int max_residuals = 0;
-  for (auto* residual_block : residual_blocks_) {
-    max_residuals = std::max(max_residuals, residual_block->NumResiduals());
-  }
-  return max_residuals;
-}
-
-std::string Program::ToString() const {
-  std::string ret = "Program dump\n";
-  ret += StringPrintf("Number of parameter blocks: %d\n", NumParameterBlocks());
-  ret += StringPrintf("Number of parameters: %d\n", NumParameters());
-  ret += "Parameters:\n";
-  for (int i = 0; i < parameter_blocks_.size(); ++i) {
-    ret +=
-        StringPrintf("%d: %s\n", i, parameter_blocks_[i]->ToString().c_str());
-  }
-  return ret;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/program.h b/third_party/ceres/internal/ceres/program.h
deleted file mode 100644
index e2b9bd7..0000000
--- a/third_party/ceres/internal/ceres/program.h
+++ /dev/null
@@ -1,201 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_PROGRAM_H_
-#define CERES_INTERNAL_PROGRAM_H_
-
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "ceres/evaluation_callback.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-class ParameterBlock;
-class ProblemImpl;
-class ResidualBlock;
-class TripletSparseMatrix;
-class ContextImpl;
-
-// A nonlinear least squares optimization problem. This is different from the
-// similarly-named "Problem" object, which offers a mutation interface for
-// adding and modifying parameters and residuals. The Program contains the core
-// part of the Problem, which is the parameters and the residuals, stored in a
-// particular ordering. The ordering is critical, since it defines the mapping
-// between (residual, parameter) pairs and a position in the jacobian of the
-// objective function. Various parts of Ceres transform one Program into
-// another; for example, the first stage of solving involves stripping all
-// constant parameters and residuals. This is in contrast with Problem, which is
-// not built for transformation.
-class CERES_NO_EXPORT Program {
- public:
-  // The ordered parameter and residual blocks for the program.
-  const std::vector<ParameterBlock*>& parameter_blocks() const;
-  const std::vector<ResidualBlock*>& residual_blocks() const;
-  std::vector<ParameterBlock*>* mutable_parameter_blocks();
-  std::vector<ResidualBlock*>* mutable_residual_blocks();
-  EvaluationCallback* mutable_evaluation_callback();
-
-  // Serialize to/from the program and update states.
-  //
-  // NOTE: Setting the state of a parameter block can trigger the
-  // computation of the Jacobian of its manifold. If this computation fails for
-  // some reason, then this method returns false and the state of the parameter
-  // blocks cannot be trusted.
-  bool StateVectorToParameterBlocks(const double* state);
-  void ParameterBlocksToStateVector(double* state) const;
-
-  // Copy internal state to the user's parameters.
-  void CopyParameterBlockStateToUserState();
-
-  // Set the parameter block pointers to the user pointers. Since this
-  // runs parameter block set state internally, which may call manifold, this
-  // can fail. False is returned on failure.
-  bool SetParameterBlockStatePtrsToUserStatePtrs();
-
-  // Update a state vector for the program given a delta.
-  bool Plus(const double* state,
-            const double* delta,
-            double* state_plus_delta,
-            ContextImpl* context,
-            int num_threads) const;
-
-  // Set the parameter indices and offsets. This permits mapping backward
-  // from a ParameterBlock* to an index in the parameter_blocks() vector. For
-  // any parameter block p, after calling SetParameterOffsetsAndIndex(), it
-  // is true that
-  //
-  //   parameter_blocks()[p->index()] == p
-  //
-  // If a parameter appears in a residual but not in the parameter block, then
-  // it will have an index of -1.
-  //
-  // This also updates p->state_offset() and p->delta_offset(), which are the
-  // position of the parameter in the state and delta vector respectively.
-  void SetParameterOffsetsAndIndex();
-
-  // Check if the internal state of the program (the indexing and the
-  // offsets) are correct.
-  bool IsValid() const;
-
-  bool ParameterBlocksAreFinite(std::string* message) const;
-
-  // Returns true if the program has any non-constant parameter blocks
-  // which have non-trivial bounds constraints.
-  bool IsBoundsConstrained() const;
-
-  // Returns false, if the program has any constant parameter blocks
-  // which are not feasible, or any variable parameter blocks which
-  // have a lower bound greater than or equal to the upper bound.
-  bool IsFeasible(std::string* message) const;
-
-  // Loop over each residual block and ensure that no two parameter
-  // blocks in the same residual block are part of
-  // parameter_blocks as that would violate the assumption that it
-  // is an independent set in the Hessian matrix.
-  bool IsParameterBlockSetIndependent(
-      const std::set<double*>& independent_set) const;
-
-  // Create a TripletSparseMatrix which contains the zero-one
-  // structure corresponding to the block sparsity of the transpose of
-  // the Jacobian matrix.
-  //
-  // start_residual_block which allows the user to ignore the first
-  // start_residual_block residuals.
-  std::unique_ptr<TripletSparseMatrix> CreateJacobianBlockSparsityTranspose(
-      int start_residual_block = 0) const;
-
-  // Create a copy of this program and removes constant parameter
-  // blocks and residual blocks with no varying parameter blocks while
-  // preserving their relative order.
-  //
-  // removed_parameter_blocks on exit will contain the list of
-  // parameter blocks that were removed.
-  //
-  // fixed_cost will be equal to the sum of the costs of the residual
-  // blocks that were removed.
-  //
-  // If there was a problem, then the function will return a nullptr
-  // pointer and error will contain a human readable description of
-  // the problem.
-  std::unique_ptr<Program> CreateReducedProgram(
-      std::vector<double*>* removed_parameter_blocks,
-      double* fixed_cost,
-      std::string* error) const;
-
-  // See problem.h for what these do.
-  int NumParameterBlocks() const;
-  int NumParameters() const;
-  int NumEffectiveParameters() const;
-  int NumResidualBlocks() const;
-  int NumResiduals() const;
-
-  int MaxScratchDoublesNeededForEvaluate() const;
-  int MaxDerivativesPerResidualBlock() const;
-  int MaxParametersPerResidualBlock() const;
-  int MaxResidualsPerResidualBlock() const;
-
-  // A human-readable dump of the parameter blocks for debugging.
-  // TODO(keir): If necessary, also dump the residual blocks.
-  std::string ToString() const;
-
- private:
-  // Remove constant parameter blocks and residual blocks with no
-  // varying parameter blocks while preserving their relative order.
-  //
-  // removed_parameter_blocks on exit will contain the list of
-  // parameter blocks that were removed.
-  //
-  // fixed_cost will be equal to the sum of the costs of the residual
-  // blocks that were removed.
-  //
-  // If there was a problem, then the function will return false and
-  // error will contain a human readable description of the problem.
-  bool RemoveFixedBlocks(std::vector<double*>* removed_parameter_blocks,
-                         double* fixed_cost,
-                         std::string* message);
-
-  // The Program does not own the ParameterBlock or ResidualBlock objects.
-  std::vector<ParameterBlock*> parameter_blocks_;
-  std::vector<ResidualBlock*> residual_blocks_;
-  EvaluationCallback* evaluation_callback_ = nullptr;
-
-  friend class ProblemImpl;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_PROGRAM_H_
diff --git a/third_party/ceres/internal/ceres/program_evaluator.h b/third_party/ceres/internal/ceres/program_evaluator.h
deleted file mode 100644
index 5d549a7..0000000
--- a/third_party/ceres/internal/ceres/program_evaluator.h
+++ /dev/null
@@ -1,394 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// The ProgramEvaluator runs the cost functions contained in each residual block
-// and stores the result into a jacobian. The particular type of jacobian is
-// abstracted out using two template parameters:
-//
-//   - An "EvaluatePreparer" that is responsible for creating the array with
-//     pointers to the jacobian blocks where the cost function evaluates to.
-//   - A "JacobianWriter" that is responsible for storing the resulting
-//     jacobian blocks in the passed sparse matrix.
-//
-// This abstraction affords an efficient evaluator implementation while still
-// supporting writing to multiple sparse matrix formats. For example, when the
-// ProgramEvaluator is parameterized for writing to block sparse matrices, the
-// residual jacobians are written directly into their final position in the
-// block sparse matrix by the user's CostFunction; there is no copying.
-//
-// The evaluation is threaded with C++ threads.
-//
-// The EvaluatePreparer and JacobianWriter interfaces are as follows:
-//
-//   class EvaluatePreparer {
-//     // Prepare the jacobians array for use as the destination of a call to
-//     // a cost function's evaluate method.
-//     void Prepare(const ResidualBlock* residual_block,
-//                  int residual_block_index,
-//                  SparseMatrix* jacobian,
-//                  double** jacobians);
-//   }
-//
-//   class JacobianWriter {
-//     // Create a jacobian that this writer can write. Same as
-//     // Evaluator::CreateJacobian.
-//     std::unique_ptr<SparseMatrix> CreateJacobian() const;
-//
-//     // Create num_threads evaluate preparers.Resulting preparers are valid
-//     // while *this is.
-//
-//     std::unique_ptr<EvaluatePreparer[]> CreateEvaluatePreparers(
-//                                           int num_threads);
-//
-//     // Write the block jacobians from a residual block evaluation to the
-//     // larger sparse jacobian.
-//     void Write(int residual_id,
-//                int residual_offset,
-//                double** jacobians,
-//                SparseMatrix* jacobian);
-//   }
-//
-// Note: The ProgramEvaluator is not thread safe, since internally it maintains
-// some per-thread scratch space.
-
-#ifndef CERES_INTERNAL_PROGRAM_EVALUATOR_H_
-#define CERES_INTERNAL_PROGRAM_EVALUATOR_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <atomic>
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/evaluation_callback.h"
-#include "ceres/execution_summary.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/parallel_for.h"
-#include "ceres/parallel_vector_ops.h"
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/small_blas.h"
-
-namespace ceres {
-namespace internal {
-
-struct NullJacobianFinalizer {
-  void operator()(SparseMatrix* /*jacobian*/, int /*num_parameters*/) {}
-};
-
-template <typename EvaluatePreparer,
-          typename JacobianWriter,
-          typename JacobianFinalizer = NullJacobianFinalizer>
-class ProgramEvaluator final : public Evaluator {
- public:
-  ProgramEvaluator(const Evaluator::Options& options, Program* program)
-      : options_(options),
-        program_(program),
-        jacobian_writer_(options, program),
-        evaluate_preparers_(std::move(
-            jacobian_writer_.CreateEvaluatePreparers(options.num_threads))),
-        num_parameters_(program->NumEffectiveParameters()) {
-    BuildResidualLayout(*program, &residual_layout_);
-    evaluate_scratch_ = std::move(CreateEvaluatorScratch(
-        *program, static_cast<unsigned>(options.num_threads)));
-  }
-
-  // Implementation of Evaluator interface.
-  std::unique_ptr<SparseMatrix> CreateJacobian() const final {
-    return jacobian_writer_.CreateJacobian();
-  }
-
-  bool Evaluate(const Evaluator::EvaluateOptions& evaluate_options,
-                const double* state,
-                double* cost,
-                double* residuals,
-                double* gradient,
-                SparseMatrix* jacobian) final {
-    ScopedExecutionTimer total_timer("Evaluator::Total", &execution_summary_);
-    ScopedExecutionTimer call_type_timer(
-        gradient == nullptr && jacobian == nullptr ? "Evaluator::Residual"
-                                                   : "Evaluator::Jacobian",
-        &execution_summary_);
-
-    // The parameters are stateful, so set the state before evaluating.
-    if (!program_->StateVectorToParameterBlocks(state)) {
-      return false;
-    }
-
-    // Notify the user about a new evaluation point if they are interested.
-    if (options_.evaluation_callback != nullptr) {
-      program_->CopyParameterBlockStateToUserState();
-      options_.evaluation_callback->PrepareForEvaluation(
-          /*jacobians=*/(gradient != nullptr || jacobian != nullptr),
-          evaluate_options.new_evaluation_point);
-    }
-
-    if (residuals != nullptr) {
-      ParallelSetZero(options_.context,
-                      options_.num_threads,
-                      residuals,
-                      program_->NumResiduals());
-    }
-
-    if (jacobian != nullptr) {
-      jacobian->SetZero(options_.context, options_.num_threads);
-    }
-
-    // Each thread gets it's own cost and evaluate scratch space.
-    for (int i = 0; i < options_.num_threads; ++i) {
-      evaluate_scratch_[i].cost = 0.0;
-      if (gradient != nullptr) {
-        ParallelSetZero(options_.context,
-                        options_.num_threads,
-                        evaluate_scratch_[i].gradient.get(),
-                        num_parameters_);
-      }
-    }
-
-    const int num_residual_blocks = program_->NumResidualBlocks();
-    // This bool is used to disable the loop if an error is encountered without
-    // breaking out of it. The remaining loop iterations are still run, but with
-    // an empty body, and so will finish quickly.
-    std::atomic_bool abort(false);
-    ParallelFor(
-        options_.context,
-        0,
-        num_residual_blocks,
-        options_.num_threads,
-        [&](int thread_id, int i) {
-          if (abort) {
-            return;
-          }
-
-          EvaluatePreparer* preparer = &evaluate_preparers_[thread_id];
-          EvaluateScratch* scratch = &evaluate_scratch_[thread_id];
-
-          // Prepare block residuals if requested.
-          const ResidualBlock* residual_block = program_->residual_blocks()[i];
-          double* block_residuals = nullptr;
-          if (residuals != nullptr) {
-            block_residuals = residuals + residual_layout_[i];
-          } else if (gradient != nullptr) {
-            block_residuals = scratch->residual_block_residuals.get();
-          }
-
-          // Prepare block jacobians if requested.
-          double** block_jacobians = nullptr;
-          if (jacobian != nullptr || gradient != nullptr) {
-            preparer->Prepare(residual_block,
-                              i,
-                              jacobian,
-                              scratch->jacobian_block_ptrs.get());
-            block_jacobians = scratch->jacobian_block_ptrs.get();
-          }
-
-          // Evaluate the cost, residuals, and jacobians.
-          double block_cost;
-          if (!residual_block->Evaluate(
-                  evaluate_options.apply_loss_function,
-                  &block_cost,
-                  block_residuals,
-                  block_jacobians,
-                  scratch->residual_block_evaluate_scratch.get())) {
-            abort = true;
-            return;
-          }
-
-          scratch->cost += block_cost;
-
-          // Store the jacobians, if they were requested.
-          if (jacobian != nullptr) {
-            jacobian_writer_.Write(
-                i, residual_layout_[i], block_jacobians, jacobian);
-          }
-
-          // Compute and store the gradient, if it was requested.
-          if (gradient != nullptr) {
-            int num_residuals = residual_block->NumResiduals();
-            int num_parameter_blocks = residual_block->NumParameterBlocks();
-            for (int j = 0; j < num_parameter_blocks; ++j) {
-              const ParameterBlock* parameter_block =
-                  residual_block->parameter_blocks()[j];
-              if (parameter_block->IsConstant()) {
-                continue;
-              }
-
-              MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-                  block_jacobians[j],
-                  num_residuals,
-                  parameter_block->TangentSize(),
-                  block_residuals,
-                  scratch->gradient.get() + parameter_block->delta_offset());
-            }
-          }
-        });
-
-    if (abort) {
-      return false;
-    }
-
-    // Sum the cost and gradient (if requested) from each thread.
-    (*cost) = 0.0;
-    if (gradient != nullptr) {
-      auto gradient_vector = VectorRef(gradient, num_parameters_);
-      ParallelSetZero(options_.context, options_.num_threads, gradient_vector);
-    }
-
-    for (int i = 0; i < options_.num_threads; ++i) {
-      (*cost) += evaluate_scratch_[i].cost;
-      if (gradient != nullptr) {
-        auto gradient_vector = VectorRef(gradient, num_parameters_);
-        ParallelAssign(
-            options_.context,
-            options_.num_threads,
-            gradient_vector,
-            gradient_vector + VectorRef(evaluate_scratch_[i].gradient.get(),
-                                        num_parameters_));
-      }
-    }
-
-    // It is possible that after accumulation that the cost has become infinite
-    // or a nan.
-    if (!std::isfinite(*cost)) {
-      LOG(ERROR) << "Accumulated cost = " << *cost
-                 << " is not a finite number. Evaluation failed.";
-      return false;
-    }
-
-    // Finalize the Jacobian if it is available.
-    // `num_parameters` is passed to the finalizer so that additional
-    // storage can be reserved for additional diagonal elements if
-    // necessary.
-    if (jacobian != nullptr) {
-      JacobianFinalizer f;
-      f(jacobian, num_parameters_);
-    }
-
-    return true;
-  }
-
-  bool Plus(const double* state,
-            const double* delta,
-            double* state_plus_delta) const final {
-    return program_->Plus(
-        state, delta, state_plus_delta, options_.context, options_.num_threads);
-  }
-
-  int NumParameters() const final { return program_->NumParameters(); }
-  int NumEffectiveParameters() const final {
-    return program_->NumEffectiveParameters();
-  }
-
-  int NumResiduals() const final { return program_->NumResiduals(); }
-
-  std::map<std::string, CallStatistics> Statistics() const final {
-    return execution_summary_.statistics();
-  }
-
- private:
-  // Per-thread scratch space needed to evaluate and store each residual block.
-  struct EvaluateScratch {
-    void Init(int max_parameters_per_residual_block,
-              int max_scratch_doubles_needed_for_evaluate,
-              int max_residuals_per_residual_block,
-              int num_parameters) {
-      residual_block_evaluate_scratch =
-          std::make_unique<double[]>(max_scratch_doubles_needed_for_evaluate);
-      gradient = std::make_unique<double[]>(num_parameters);
-      VectorRef(gradient.get(), num_parameters).setZero();
-      residual_block_residuals =
-          std::make_unique<double[]>(max_residuals_per_residual_block);
-      jacobian_block_ptrs =
-          std::make_unique<double*[]>(max_parameters_per_residual_block);
-    }
-
-    double cost;
-    std::unique_ptr<double[]> residual_block_evaluate_scratch;
-    // The gradient on the manifold.
-    std::unique_ptr<double[]> gradient;
-    // Enough space to store the residual for the largest residual block.
-    std::unique_ptr<double[]> residual_block_residuals;
-    std::unique_ptr<double*[]> jacobian_block_ptrs;
-  };
-
-  static void BuildResidualLayout(const Program& program,
-                                  std::vector<int>* residual_layout) {
-    const std::vector<ResidualBlock*>& residual_blocks =
-        program.residual_blocks();
-    residual_layout->resize(program.NumResidualBlocks());
-    int residual_pos = 0;
-    for (int i = 0; i < residual_blocks.size(); ++i) {
-      const int num_residuals = residual_blocks[i]->NumResiduals();
-      (*residual_layout)[i] = residual_pos;
-      residual_pos += num_residuals;
-    }
-  }
-
-  // Create scratch space for each thread evaluating the program.
-  static std::unique_ptr<EvaluateScratch[]> CreateEvaluatorScratch(
-      const Program& program, unsigned num_threads) {
-    int max_parameters_per_residual_block =
-        program.MaxParametersPerResidualBlock();
-    int max_scratch_doubles_needed_for_evaluate =
-        program.MaxScratchDoublesNeededForEvaluate();
-    int max_residuals_per_residual_block =
-        program.MaxResidualsPerResidualBlock();
-    int num_parameters = program.NumEffectiveParameters();
-
-    auto evaluate_scratch = std::make_unique<EvaluateScratch[]>(num_threads);
-    for (int i = 0; i < num_threads; i++) {
-      evaluate_scratch[i].Init(max_parameters_per_residual_block,
-                               max_scratch_doubles_needed_for_evaluate,
-                               max_residuals_per_residual_block,
-                               num_parameters);
-    }
-    return evaluate_scratch;
-  }
-
-  Evaluator::Options options_;
-  Program* program_;
-  JacobianWriter jacobian_writer_;
-  std::unique_ptr<EvaluatePreparer[]> evaluate_preparers_;
-  std::unique_ptr<EvaluateScratch[]> evaluate_scratch_;
-  std::vector<int> residual_layout_;
-  int num_parameters_;
-  ::ceres::internal::ExecutionSummary execution_summary_;
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_PROGRAM_EVALUATOR_H_
diff --git a/third_party/ceres/internal/ceres/program_test.cc b/third_party/ceres/internal/ceres/program_test.cc
deleted file mode 100644
index 9c51ff9..0000000
--- a/third_party/ceres/internal/ceres/program_test.cc
+++ /dev/null
@@ -1,423 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/program.h"
-
-#include <cmath>
-#include <limits>
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/integer_sequence_algorithm.h"
-#include "ceres/problem_impl.h"
-#include "ceres/residual_block.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// A cost function that simply returns its argument.
-class UnaryIdentityCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = parameters[0][0];
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = 1.0;
-    }
-    return true;
-  }
-};
-
-// Templated base class for the CostFunction signatures.
-template <int kNumResiduals, int... Ns>
-class MockCostFunctionBase : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    constexpr int kNumParameters = (Ns + ... + 0);
-
-    for (int i = 0; i < kNumResiduals; ++i) {
-      residuals[i] = kNumResiduals + kNumParameters;
-    }
-    return true;
-  }
-};
-
-class UnaryCostFunction : public MockCostFunctionBase<2, 1> {};
-class BinaryCostFunction : public MockCostFunctionBase<2, 1, 1> {};
-class TernaryCostFunction : public MockCostFunctionBase<2, 1, 1, 1> {};
-
-TEST(Program, RemoveFixedBlocksNothingConstant) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &x);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &x, &y);
-  problem.AddResidualBlock(new TernaryCostFunction(), nullptr, &x, &y, &z);
-
-  std::vector<double*> removed_parameter_blocks;
-  double fixed_cost = 0.0;
-  std::string message;
-  std::unique_ptr<Program> reduced_program(
-      problem.program().CreateReducedProgram(
-          &removed_parameter_blocks, &fixed_cost, &message));
-
-  EXPECT_EQ(reduced_program->NumParameterBlocks(), 3);
-  EXPECT_EQ(reduced_program->NumResidualBlocks(), 3);
-  EXPECT_EQ(removed_parameter_blocks.size(), 0);
-  EXPECT_EQ(fixed_cost, 0.0);
-}
-
-TEST(Program, RemoveFixedBlocksAllParameterBlocksConstant) {
-  ProblemImpl problem;
-  double x = 1.0;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &x);
-  problem.SetParameterBlockConstant(&x);
-
-  std::vector<double*> removed_parameter_blocks;
-  double fixed_cost = 0.0;
-  std::string message;
-  std::unique_ptr<Program> reduced_program(
-      problem.program().CreateReducedProgram(
-          &removed_parameter_blocks, &fixed_cost, &message));
-
-  EXPECT_EQ(reduced_program->NumParameterBlocks(), 0);
-  EXPECT_EQ(reduced_program->NumResidualBlocks(), 0);
-  EXPECT_EQ(removed_parameter_blocks.size(), 1);
-  EXPECT_EQ(removed_parameter_blocks[0], &x);
-  EXPECT_EQ(fixed_cost, 9.0);
-}
-
-TEST(Program, RemoveFixedBlocksNoResidualBlocks) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-
-  std::vector<double*> removed_parameter_blocks;
-  double fixed_cost = 0.0;
-  std::string message;
-  std::unique_ptr<Program> reduced_program(
-      problem.program().CreateReducedProgram(
-          &removed_parameter_blocks, &fixed_cost, &message));
-  EXPECT_EQ(reduced_program->NumParameterBlocks(), 0);
-  EXPECT_EQ(reduced_program->NumResidualBlocks(), 0);
-  EXPECT_EQ(removed_parameter_blocks.size(), 3);
-  EXPECT_EQ(fixed_cost, 0.0);
-}
-
-TEST(Program, RemoveFixedBlocksOneParameterBlockConstant) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &x);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &x, &y);
-  problem.SetParameterBlockConstant(&x);
-
-  std::vector<double*> removed_parameter_blocks;
-  double fixed_cost = 0.0;
-  std::string message;
-  std::unique_ptr<Program> reduced_program(
-      problem.program().CreateReducedProgram(
-          &removed_parameter_blocks, &fixed_cost, &message));
-  EXPECT_EQ(reduced_program->NumParameterBlocks(), 1);
-  EXPECT_EQ(reduced_program->NumResidualBlocks(), 1);
-}
-
-TEST(Program, RemoveFixedBlocksNumEliminateBlocks) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &x);
-  problem.AddResidualBlock(new TernaryCostFunction(), nullptr, &x, &y, &z);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &x, &y);
-  problem.SetParameterBlockConstant(&x);
-
-  std::vector<double*> removed_parameter_blocks;
-  double fixed_cost = 0.0;
-  std::string message;
-  std::unique_ptr<Program> reduced_program(
-      problem.program().CreateReducedProgram(
-          &removed_parameter_blocks, &fixed_cost, &message));
-  EXPECT_EQ(reduced_program->NumParameterBlocks(), 2);
-  EXPECT_EQ(reduced_program->NumResidualBlocks(), 2);
-}
-
-TEST(Program, RemoveFixedBlocksFixedCost) {
-  ProblemImpl problem;
-  double x = 1.23;
-  double y = 4.56;
-  double z = 7.89;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-  problem.AddResidualBlock(new UnaryIdentityCostFunction(), nullptr, &x);
-  problem.AddResidualBlock(new TernaryCostFunction(), nullptr, &x, &y, &z);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &x, &y);
-  problem.SetParameterBlockConstant(&x);
-
-  ResidualBlock* expected_removed_block =
-      problem.program().residual_blocks()[0];
-  std::unique_ptr<double[]> scratch(
-      new double[expected_removed_block->NumScratchDoublesForEvaluate()]);
-  double expected_fixed_cost;
-  expected_removed_block->Evaluate(
-      true, &expected_fixed_cost, nullptr, nullptr, scratch.get());
-
-  std::vector<double*> removed_parameter_blocks;
-  double fixed_cost = 0.0;
-  std::string message;
-  std::unique_ptr<Program> reduced_program(
-      problem.program().CreateReducedProgram(
-          &removed_parameter_blocks, &fixed_cost, &message));
-
-  EXPECT_EQ(reduced_program->NumParameterBlocks(), 2);
-  EXPECT_EQ(reduced_program->NumResidualBlocks(), 2);
-  EXPECT_DOUBLE_EQ(fixed_cost, expected_fixed_cost);
-}
-
-class BlockJacobianTest : public ::testing::TestWithParam<int> {};
-
-TEST_P(BlockJacobianTest, CreateJacobianBlockSparsityTranspose) {
-  ProblemImpl problem;
-  double x[2];
-  double y[3];
-  double z;
-
-  problem.AddParameterBlock(x, 2);
-  problem.AddParameterBlock(y, 3);
-  problem.AddParameterBlock(&z, 1);
-
-  problem.AddResidualBlock(new MockCostFunctionBase<2, 2>(), nullptr, x);
-  problem.AddResidualBlock(new MockCostFunctionBase<3, 1, 2>(), nullptr, &z, x);
-  problem.AddResidualBlock(new MockCostFunctionBase<4, 1, 3>(), nullptr, &z, y);
-  problem.AddResidualBlock(new MockCostFunctionBase<5, 1, 3>(), nullptr, &z, y);
-  problem.AddResidualBlock(new MockCostFunctionBase<1, 2, 1>(), nullptr, x, &z);
-  problem.AddResidualBlock(new MockCostFunctionBase<2, 1, 3>(), nullptr, &z, y);
-  problem.AddResidualBlock(new MockCostFunctionBase<2, 2, 1>(), nullptr, x, &z);
-  problem.AddResidualBlock(new MockCostFunctionBase<1, 3>(), nullptr, y);
-
-  TripletSparseMatrix expected_block_sparse_jacobian(3, 8, 14);
-  {
-    int* rows = expected_block_sparse_jacobian.mutable_rows();
-    int* cols = expected_block_sparse_jacobian.mutable_cols();
-    double* values = expected_block_sparse_jacobian.mutable_values();
-    rows[0] = 0;
-    cols[0] = 0;
-
-    rows[1] = 2;
-    cols[1] = 1;
-    rows[2] = 0;
-    cols[2] = 1;
-
-    rows[3] = 2;
-    cols[3] = 2;
-    rows[4] = 1;
-    cols[4] = 2;
-
-    rows[5] = 2;
-    cols[5] = 3;
-    rows[6] = 1;
-    cols[6] = 3;
-
-    rows[7] = 0;
-    cols[7] = 4;
-    rows[8] = 2;
-    cols[8] = 4;
-
-    rows[9] = 2;
-    cols[9] = 5;
-    rows[10] = 1;
-    cols[10] = 5;
-
-    rows[11] = 0;
-    cols[11] = 6;
-    rows[12] = 2;
-    cols[12] = 6;
-
-    rows[13] = 1;
-    cols[13] = 7;
-    std::fill(values, values + 14, 1.0);
-    expected_block_sparse_jacobian.set_num_nonzeros(14);
-  }
-
-  Program* program = problem.mutable_program();
-  program->SetParameterOffsetsAndIndex();
-
-  const int start_row_block = GetParam();
-  std::unique_ptr<TripletSparseMatrix> actual_block_sparse_jacobian(
-      program->CreateJacobianBlockSparsityTranspose(start_row_block));
-
-  Matrix expected_full_dense_jacobian;
-  expected_block_sparse_jacobian.ToDenseMatrix(&expected_full_dense_jacobian);
-  Matrix expected_dense_jacobian =
-      expected_full_dense_jacobian.rightCols(8 - start_row_block);
-
-  Matrix actual_dense_jacobian;
-  actual_block_sparse_jacobian->ToDenseMatrix(&actual_dense_jacobian);
-  EXPECT_EQ(expected_dense_jacobian.rows(), actual_dense_jacobian.rows());
-  EXPECT_EQ(expected_dense_jacobian.cols(), actual_dense_jacobian.cols());
-  EXPECT_EQ((expected_dense_jacobian - actual_dense_jacobian).norm(), 0.0);
-}
-
-INSTANTIATE_TEST_SUITE_P(AllColumns, BlockJacobianTest, ::testing::Range(0, 7));
-
-template <int kNumResiduals, int kNumParameterBlocks>
-class NumParameterBlocksCostFunction : public CostFunction {
- public:
-  NumParameterBlocksCostFunction() {
-    set_num_residuals(kNumResiduals);
-    for (int i = 0; i < kNumParameterBlocks; ++i) {
-      mutable_parameter_block_sizes()->push_back(1);
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    return true;
-  }
-};
-
-TEST(Program, ReallocationInCreateJacobianBlockSparsityTranspose) {
-  // CreateJacobianBlockSparsityTranspose starts with a conservative
-  // estimate of the size of the sparsity pattern. This test ensures
-  // that when those estimates are violated, the reallocation/resizing
-  // logic works correctly.
-
-  ProblemImpl problem;
-  double x[20];
-
-  std::vector<double*> parameter_blocks;
-  for (int i = 0; i < 20; ++i) {
-    problem.AddParameterBlock(x + i, 1);
-    parameter_blocks.push_back(x + i);
-  }
-
-  problem.AddResidualBlock(new NumParameterBlocksCostFunction<1, 20>(),
-                           nullptr,
-                           parameter_blocks.data(),
-                           static_cast<int>(parameter_blocks.size()));
-
-  TripletSparseMatrix expected_block_sparse_jacobian(20, 1, 20);
-  {
-    int* rows = expected_block_sparse_jacobian.mutable_rows();
-    int* cols = expected_block_sparse_jacobian.mutable_cols();
-    for (int i = 0; i < 20; ++i) {
-      rows[i] = i;
-      cols[i] = 0;
-    }
-
-    double* values = expected_block_sparse_jacobian.mutable_values();
-    std::fill(values, values + 20, 1.0);
-    expected_block_sparse_jacobian.set_num_nonzeros(20);
-  }
-
-  Program* program = problem.mutable_program();
-  program->SetParameterOffsetsAndIndex();
-
-  std::unique_ptr<TripletSparseMatrix> actual_block_sparse_jacobian(
-      program->CreateJacobianBlockSparsityTranspose());
-
-  Matrix expected_dense_jacobian;
-  expected_block_sparse_jacobian.ToDenseMatrix(&expected_dense_jacobian);
-
-  Matrix actual_dense_jacobian;
-  actual_block_sparse_jacobian->ToDenseMatrix(&actual_dense_jacobian);
-  EXPECT_EQ((expected_dense_jacobian - actual_dense_jacobian).norm(), 0.0);
-}
-
-TEST(Program, ProblemHasNanParameterBlocks) {
-  ProblemImpl problem;
-  double x[2];
-  x[0] = 1.0;
-  x[1] = std::numeric_limits<double>::quiet_NaN();
-  problem.AddResidualBlock(new MockCostFunctionBase<1, 2>(), nullptr, x);
-  std::string error;
-  EXPECT_FALSE(problem.program().ParameterBlocksAreFinite(&error));
-  EXPECT_NE(error.find("has at least one invalid value"), std::string::npos)
-      << error;
-}
-
-TEST(Program, InfeasibleParameterBlock) {
-  ProblemImpl problem;
-  double x[] = {0.0, 0.0};
-  problem.AddResidualBlock(new MockCostFunctionBase<1, 2>(), nullptr, x);
-  problem.SetParameterLowerBound(x, 0, 2.0);
-  problem.SetParameterUpperBound(x, 0, 1.0);
-  std::string error;
-  EXPECT_FALSE(problem.program().IsFeasible(&error));
-  EXPECT_NE(error.find("infeasible bound"), std::string::npos) << error;
-}
-
-TEST(Program, InfeasibleConstantParameterBlock) {
-  ProblemImpl problem;
-  double x[] = {0.0, 0.0};
-  problem.AddResidualBlock(new MockCostFunctionBase<1, 2>(), nullptr, x);
-  problem.SetParameterLowerBound(x, 0, 1.0);
-  problem.SetParameterUpperBound(x, 0, 2.0);
-  problem.SetParameterBlockConstant(x);
-  std::string error;
-  EXPECT_FALSE(problem.program().IsFeasible(&error));
-  EXPECT_NE(error.find("infeasible value"), std::string::npos) << error;
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/reorder_program.cc b/third_party/ceres/internal/ceres/reorder_program.cc
deleted file mode 100644
index 44c4e46..0000000
--- a/third_party/ceres/internal/ceres/reorder_program.cc
+++ /dev/null
@@ -1,644 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/reorder_program.h"
-
-#include <algorithm>
-#include <map>
-#include <memory>
-#include <numeric>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "Eigen/SparseCore"
-#include "ceres/internal/config.h"
-#include "ceres/internal/export.h"
-#include "ceres/ordered_groups.h"
-#include "ceres/parameter_block.h"
-#include "ceres/parameter_block_ordering.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-#include "ceres/solver.h"
-#include "ceres/suitesparse.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-
-#ifndef CERES_NO_EIGEN_METIS
-#include <iostream>  // Need this because MetisSupport refers to std::cerr.
-
-#include "Eigen/MetisSupport"
-#endif
-
-#include "Eigen/OrderingMethods"
-#endif
-
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-namespace {
-
-// Find the minimum index of any parameter block to the given
-// residual.  Parameter blocks that have indices greater than
-// size_of_first_elimination_group are considered to have an index
-// equal to size_of_first_elimination_group.
-static int MinParameterBlock(const ResidualBlock* residual_block,
-                             int size_of_first_elimination_group) {
-  int min_parameter_block_position = size_of_first_elimination_group;
-  for (int i = 0; i < residual_block->NumParameterBlocks(); ++i) {
-    ParameterBlock* parameter_block = residual_block->parameter_blocks()[i];
-    if (!parameter_block->IsConstant()) {
-      CHECK_NE(parameter_block->index(), -1)
-          << "Did you forget to call Program::SetParameterOffsetsAndIndex()? "
-          << "This is a Ceres bug; please contact the developers!";
-      min_parameter_block_position =
-          std::min(parameter_block->index(), min_parameter_block_position);
-    }
-  }
-  return min_parameter_block_position;
-}
-
-Eigen::SparseMatrix<int> CreateBlockJacobian(
-    const TripletSparseMatrix& block_jacobian_transpose) {
-  using SparseMatrix = Eigen::SparseMatrix<int>;
-  using Triplet = Eigen::Triplet<int>;
-
-  const int* rows = block_jacobian_transpose.rows();
-  const int* cols = block_jacobian_transpose.cols();
-  int num_nonzeros = block_jacobian_transpose.num_nonzeros();
-  std::vector<Triplet> triplets;
-  triplets.reserve(num_nonzeros);
-  for (int i = 0; i < num_nonzeros; ++i) {
-    triplets.emplace_back(cols[i], rows[i], 1);
-  }
-
-  SparseMatrix block_jacobian(block_jacobian_transpose.num_cols(),
-                              block_jacobian_transpose.num_rows());
-  block_jacobian.setFromTriplets(triplets.begin(), triplets.end());
-  return block_jacobian;
-}
-
-void OrderingForSparseNormalCholeskyUsingSuiteSparse(
-    const LinearSolverOrderingType linear_solver_ordering_type,
-    const TripletSparseMatrix& tsm_block_jacobian_transpose,
-    const std::vector<ParameterBlock*>& parameter_blocks,
-    const ParameterBlockOrdering& parameter_block_ordering,
-    int* ordering) {
-#ifdef CERES_NO_SUITESPARSE
-  // "Void"ing values to avoid compiler warnings about unused parameters
-  (void)linear_solver_ordering_type;
-  (void)tsm_block_jacobian_transpose;
-  (void)parameter_blocks;
-  (void)parameter_block_ordering;
-  (void)ordering;
-  LOG(FATAL) << "Congratulations, you found a Ceres bug! "
-             << "Please report this error to the developers.";
-#else
-  SuiteSparse ss;
-  cholmod_sparse* block_jacobian_transpose = ss.CreateSparseMatrix(
-      const_cast<TripletSparseMatrix*>(&tsm_block_jacobian_transpose));
-
-  if (linear_solver_ordering_type == ceres::AMD) {
-    if (parameter_block_ordering.NumGroups() <= 1) {
-      // The user did not supply a useful ordering so just go ahead
-      // and use AMD.
-      ss.Ordering(block_jacobian_transpose, OrderingType::AMD, ordering);
-    } else {
-      // The user supplied an ordering, so use CAMD.
-      std::vector<int> constraints;
-      constraints.reserve(parameter_blocks.size());
-      for (auto* parameter_block : parameter_blocks) {
-        constraints.push_back(parameter_block_ordering.GroupId(
-            parameter_block->mutable_user_state()));
-      }
-
-      // Renumber the entries of constraints to be contiguous integers
-      // as CAMD requires that the group ids be in the range [0,
-      // parameter_blocks.size() - 1].
-      MapValuesToContiguousRange(constraints.size(), constraints.data());
-      ss.ConstrainedApproximateMinimumDegreeOrdering(
-          block_jacobian_transpose, constraints.data(), ordering);
-    }
-  } else if (linear_solver_ordering_type == ceres::NESDIS) {
-    // If nested dissection is chosen as an ordering algorithm, then
-    // ignore any user provided linear_solver_ordering.
-    CHECK(SuiteSparse::IsNestedDissectionAvailable())
-        << "Congratulations, you found a Ceres bug! "
-        << "Please report this error to the developers.";
-    ss.Ordering(block_jacobian_transpose, OrderingType::NESDIS, ordering);
-  } else {
-    LOG(FATAL) << "Congratulations, you found a Ceres bug! "
-               << "Please report this error to the developers.";
-  }
-
-  ss.Free(block_jacobian_transpose);
-#endif  // CERES_NO_SUITESPARSE
-}
-
-void OrderingForSparseNormalCholeskyUsingEigenSparse(
-    const LinearSolverOrderingType linear_solver_ordering_type,
-    const TripletSparseMatrix& tsm_block_jacobian_transpose,
-    int* ordering) {
-#ifndef CERES_USE_EIGEN_SPARSE
-  LOG(FATAL) << "SPARSE_NORMAL_CHOLESKY cannot be used with EIGEN_SPARSE "
-                "because Ceres was not built with support for "
-                "Eigen's SimplicialLDLT decomposition. "
-                "This requires enabling building with -DEIGENSPARSE=ON.";
-#else
-
-  // TODO(sameeragarwal): This conversion from a TripletSparseMatrix
-  // to a Eigen::Triplet matrix is unfortunate, but unavoidable for
-  // now. It is not a significant performance penalty in the grand
-  // scheme of things. The right thing to do here would be to get a
-  // compressed row sparse matrix representation of the jacobian and
-  // go from there. But that is a project for another day.
-  using SparseMatrix = Eigen::SparseMatrix<int>;
-
-  const SparseMatrix block_jacobian =
-      CreateBlockJacobian(tsm_block_jacobian_transpose);
-  const SparseMatrix block_hessian =
-      block_jacobian.transpose() * block_jacobian;
-
-  Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, int> perm;
-  if (linear_solver_ordering_type == ceres::AMD) {
-    Eigen::AMDOrdering<int> amd_ordering;
-    amd_ordering(block_hessian, perm);
-  } else {
-#ifndef CERES_NO_EIGEN_METIS
-    Eigen::MetisOrdering<int> metis_ordering;
-    metis_ordering(block_hessian, perm);
-#else
-    perm.setIdentity(block_hessian.rows());
-#endif
-  }
-
-  for (int i = 0; i < block_hessian.rows(); ++i) {
-    ordering[i] = perm.indices()[i];
-  }
-#endif  // CERES_USE_EIGEN_SPARSE
-}
-
-}  // namespace
-
-bool ApplyOrdering(const ProblemImpl::ParameterMap& parameter_map,
-                   const ParameterBlockOrdering& ordering,
-                   Program* program,
-                   std::string* error) {
-  const int num_parameter_blocks = program->NumParameterBlocks();
-  if (ordering.NumElements() != num_parameter_blocks) {
-    *error = StringPrintf(
-        "User specified ordering does not have the same "
-        "number of parameters as the problem. The problem"
-        "has %d blocks while the ordering has %d blocks.",
-        num_parameter_blocks,
-        ordering.NumElements());
-    return false;
-  }
-
-  std::vector<ParameterBlock*>* parameter_blocks =
-      program->mutable_parameter_blocks();
-  parameter_blocks->clear();
-
-  // TODO(sameeragarwal): Investigate whether this should be a set or an
-  // unordered_set.
-  const std::map<int, std::set<double*>>& groups = ordering.group_to_elements();
-  for (const auto& p : groups) {
-    const std::set<double*>& group = p.second;
-    for (double* parameter_block_ptr : group) {
-      auto it = parameter_map.find(parameter_block_ptr);
-      if (it == parameter_map.end()) {
-        *error = StringPrintf(
-            "User specified ordering contains a pointer "
-            "to a double that is not a parameter block in "
-            "the problem. The invalid double is in group: %d",
-            p.first);
-        return false;
-      }
-      parameter_blocks->push_back(it->second);
-    }
-  }
-  return true;
-}
-
-bool LexicographicallyOrderResidualBlocks(
-    const int size_of_first_elimination_group,
-    Program* program,
-    std::string* /*error*/) {
-  CHECK_GE(size_of_first_elimination_group, 1)
-      << "Congratulations, you found a Ceres bug! Please report this error "
-      << "to the developers.";
-
-  // Create a histogram of the number of residuals for each E block. There is an
-  // extra bucket at the end to catch all non-eliminated F blocks.
-  std::vector<int> residual_blocks_per_e_block(size_of_first_elimination_group +
-                                               1);
-  std::vector<ResidualBlock*>* residual_blocks =
-      program->mutable_residual_blocks();
-  std::vector<int> min_position_per_residual(residual_blocks->size());
-  for (int i = 0; i < residual_blocks->size(); ++i) {
-    ResidualBlock* residual_block = (*residual_blocks)[i];
-    int position =
-        MinParameterBlock(residual_block, size_of_first_elimination_group);
-    min_position_per_residual[i] = position;
-    DCHECK_LE(position, size_of_first_elimination_group);
-    residual_blocks_per_e_block[position]++;
-  }
-
-  // Run a cumulative sum on the histogram, to obtain offsets to the start of
-  // each histogram bucket (where each bucket is for the residuals for that
-  // E-block).
-  std::vector<int> offsets(size_of_first_elimination_group + 1);
-  std::partial_sum(residual_blocks_per_e_block.begin(),
-                   residual_blocks_per_e_block.end(),
-                   offsets.begin());
-  CHECK_EQ(offsets.back(), residual_blocks->size())
-      << "Congratulations, you found a Ceres bug! Please report this error "
-      << "to the developers.";
-
-  CHECK(std::find(residual_blocks_per_e_block.begin(),
-                  residual_blocks_per_e_block.end() - 1,
-                  0) == residual_blocks_per_e_block.end() - 1)
-      << "Congratulations, you found a Ceres bug! Please report this error "
-      << "to the developers.";
-
-  // Fill in each bucket with the residual blocks for its corresponding E block.
-  // Each bucket is individually filled from the back of the bucket to the front
-  // of the bucket. The filling order among the buckets is dictated by the
-  // residual blocks. This loop uses the offsets as counters; subtracting one
-  // from each offset as a residual block is placed in the bucket. When the
-  // filling is finished, the offset pointers should have shifted down one
-  // entry (this is verified below).
-  std::vector<ResidualBlock*> reordered_residual_blocks(
-      (*residual_blocks).size(), static_cast<ResidualBlock*>(nullptr));
-  for (int i = 0; i < residual_blocks->size(); ++i) {
-    int bucket = min_position_per_residual[i];
-
-    // Decrement the cursor, which should now point at the next empty position.
-    offsets[bucket]--;
-
-    // Sanity.
-    CHECK(reordered_residual_blocks[offsets[bucket]] == nullptr)
-        << "Congratulations, you found a Ceres bug! Please report this error "
-        << "to the developers.";
-
-    reordered_residual_blocks[offsets[bucket]] = (*residual_blocks)[i];
-  }
-
-  // Sanity check #1: The difference in bucket offsets should match the
-  // histogram sizes.
-  for (int i = 0; i < size_of_first_elimination_group; ++i) {
-    CHECK_EQ(residual_blocks_per_e_block[i], offsets[i + 1] - offsets[i])
-        << "Congratulations, you found a Ceres bug! Please report this error "
-        << "to the developers.";
-  }
-  // Sanity check #2: No nullptr's left behind.
-  for (auto* residual_block : reordered_residual_blocks) {
-    CHECK(residual_block != nullptr)
-        << "Congratulations, you found a Ceres bug! Please report this error "
-        << "to the developers.";
-  }
-
-  // Now that the residuals are collected by E block, swap them in place.
-  swap(*program->mutable_residual_blocks(), reordered_residual_blocks);
-  return true;
-}
-
-// Pre-order the columns corresponding to the Schur complement if
-// possible.
-static void ReorderSchurComplementColumnsUsingSuiteSparse(
-    const ParameterBlockOrdering& parameter_block_ordering, Program* program) {
-#ifdef CERES_NO_SUITESPARSE
-  // "Void"ing values to avoid compiler warnings about unused parameters
-  (void)parameter_block_ordering;
-  (void)program;
-#else
-  SuiteSparse ss;
-  std::vector<int> constraints;
-  std::vector<ParameterBlock*>& parameter_blocks =
-      *(program->mutable_parameter_blocks());
-
-  for (auto* parameter_block : parameter_blocks) {
-    constraints.push_back(parameter_block_ordering.GroupId(
-        parameter_block->mutable_user_state()));
-  }
-
-  // Renumber the entries of constraints to be contiguous integers as
-  // CAMD requires that the group ids be in the range [0,
-  // parameter_blocks.size() - 1].
-  MapValuesToContiguousRange(constraints.size(), constraints.data());
-
-  // Compute a block sparse presentation of J'.
-  std::unique_ptr<TripletSparseMatrix> tsm_block_jacobian_transpose(
-      program->CreateJacobianBlockSparsityTranspose());
-
-  cholmod_sparse* block_jacobian_transpose =
-      ss.CreateSparseMatrix(tsm_block_jacobian_transpose.get());
-
-  std::vector<int> ordering(parameter_blocks.size(), 0);
-  ss.ConstrainedApproximateMinimumDegreeOrdering(
-      block_jacobian_transpose, constraints.data(), ordering.data());
-  ss.Free(block_jacobian_transpose);
-
-  const std::vector<ParameterBlock*> parameter_blocks_copy(parameter_blocks);
-  for (int i = 0; i < program->NumParameterBlocks(); ++i) {
-    parameter_blocks[i] = parameter_blocks_copy[ordering[i]];
-  }
-
-  program->SetParameterOffsetsAndIndex();
-#endif
-}
-
-static void ReorderSchurComplementColumnsUsingEigen(
-    LinearSolverOrderingType ordering_type,
-    const int size_of_first_elimination_group,
-    const ProblemImpl::ParameterMap& /*parameter_map*/,
-    Program* program) {
-#if defined(CERES_USE_EIGEN_SPARSE)
-  std::unique_ptr<TripletSparseMatrix> tsm_block_jacobian_transpose(
-      program->CreateJacobianBlockSparsityTranspose());
-  using SparseMatrix = Eigen::SparseMatrix<int>;
-  const SparseMatrix block_jacobian =
-      CreateBlockJacobian(*tsm_block_jacobian_transpose);
-  const int num_rows = block_jacobian.rows();
-  const int num_cols = block_jacobian.cols();
-
-  // Vertically partition the jacobian in parameter blocks of type E
-  // and F.
-  const SparseMatrix E =
-      block_jacobian.block(0, 0, num_rows, size_of_first_elimination_group);
-  const SparseMatrix F =
-      block_jacobian.block(0,
-                           size_of_first_elimination_group,
-                           num_rows,
-                           num_cols - size_of_first_elimination_group);
-
-  // Block sparsity pattern of the schur complement.
-  const SparseMatrix block_schur_complement =
-      F.transpose() * F - F.transpose() * E * E.transpose() * F;
-
-  Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, int> perm;
-  if (ordering_type == ceres::AMD) {
-    Eigen::AMDOrdering<int> amd_ordering;
-    amd_ordering(block_schur_complement, perm);
-  } else {
-#ifndef CERES_NO_EIGEN_METIS
-    Eigen::MetisOrdering<int> metis_ordering;
-    metis_ordering(block_schur_complement, perm);
-#else
-    perm.setIdentity(block_schur_complement.rows());
-#endif
-  }
-
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program->parameter_blocks();
-  std::vector<ParameterBlock*> ordering(num_cols);
-
-  // The ordering of the first size_of_first_elimination_group does
-  // not matter, so we preserve the existing ordering.
-  for (int i = 0; i < size_of_first_elimination_group; ++i) {
-    ordering[i] = parameter_blocks[i];
-  }
-
-  // For the rest of the blocks, use the ordering computed using AMD.
-  for (int i = 0; i < block_schur_complement.cols(); ++i) {
-    ordering[size_of_first_elimination_group + i] =
-        parameter_blocks[size_of_first_elimination_group + perm.indices()[i]];
-  }
-
-  swap(*program->mutable_parameter_blocks(), ordering);
-  program->SetParameterOffsetsAndIndex();
-#endif
-}
-
-bool ReorderProgramForSchurTypeLinearSolver(
-    const LinearSolverType linear_solver_type,
-    const SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    const LinearSolverOrderingType linear_solver_ordering_type,
-    const ProblemImpl::ParameterMap& parameter_map,
-    ParameterBlockOrdering* parameter_block_ordering,
-    Program* program,
-    std::string* error) {
-  if (parameter_block_ordering->NumElements() !=
-      program->NumParameterBlocks()) {
-    *error = StringPrintf(
-        "The program has %d parameter blocks, but the parameter block "
-        "ordering has %d parameter blocks.",
-        program->NumParameterBlocks(),
-        parameter_block_ordering->NumElements());
-    return false;
-  }
-
-  if (parameter_block_ordering->NumGroups() == 1) {
-    // If the user supplied an parameter_block_ordering with just one
-    // group, it is equivalent to the user supplying nullptr as an
-    // parameter_block_ordering. Ceres is completely free to choose the
-    // parameter block ordering as it sees fit. For Schur type solvers,
-    // this means that the user wishes for Ceres to identify the
-    // e_blocks, which we do by computing a maximal independent set.
-    std::vector<ParameterBlock*> schur_ordering;
-    const int size_of_first_elimination_group =
-        ComputeStableSchurOrdering(*program, &schur_ordering);
-
-    CHECK_EQ(schur_ordering.size(), program->NumParameterBlocks())
-        << "Congratulations, you found a Ceres bug! Please report this error "
-        << "to the developers.";
-
-    // Update the parameter_block_ordering object.
-    for (int i = 0; i < schur_ordering.size(); ++i) {
-      double* parameter_block = schur_ordering[i]->mutable_user_state();
-      const int group_id = (i < size_of_first_elimination_group) ? 0 : 1;
-      parameter_block_ordering->AddElementToGroup(parameter_block, group_id);
-    }
-
-    // We could call ApplyOrdering but this is cheaper and
-    // simpler.
-    swap(*program->mutable_parameter_blocks(), schur_ordering);
-  } else {
-    // The user provided an ordering with more than one elimination
-    // group.
-
-    // Verify that the first elimination group is an independent set.
-
-    // TODO(sameeragarwal): Investigate if this should be a set or an
-    // unordered_set.
-    const std::set<double*>& first_elimination_group =
-        parameter_block_ordering->group_to_elements().begin()->second;
-    if (!program->IsParameterBlockSetIndependent(first_elimination_group)) {
-      *error = StringPrintf(
-          "The first elimination group in the parameter block "
-          "ordering of size %zd is not an independent set",
-          first_elimination_group.size());
-      return false;
-    }
-
-    if (!ApplyOrdering(
-            parameter_map, *parameter_block_ordering, program, error)) {
-      return false;
-    }
-  }
-
-  program->SetParameterOffsetsAndIndex();
-
-  const int size_of_first_elimination_group =
-      parameter_block_ordering->group_to_elements().begin()->second.size();
-
-  if (linear_solver_type == SPARSE_SCHUR) {
-    if (sparse_linear_algebra_library_type == SUITE_SPARSE &&
-        linear_solver_ordering_type == ceres::AMD) {
-      // Preordering support for schur complement only works with AMD
-      // for now, since we are using CAMD.
-      //
-      // TODO(sameeragarwal): It maybe worth adding pre-ordering support for
-      // nested dissection too.
-      ReorderSchurComplementColumnsUsingSuiteSparse(*parameter_block_ordering,
-                                                    program);
-    } else if (sparse_linear_algebra_library_type == EIGEN_SPARSE) {
-      ReorderSchurComplementColumnsUsingEigen(linear_solver_ordering_type,
-                                              size_of_first_elimination_group,
-                                              parameter_map,
-                                              program);
-    }
-  }
-
-  // Schur type solvers also require that their residual blocks be
-  // lexicographically ordered.
-  return LexicographicallyOrderResidualBlocks(
-      size_of_first_elimination_group, program, error);
-}
-
-bool ReorderProgramForSparseCholesky(
-    const SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    const LinearSolverOrderingType linear_solver_ordering_type,
-    const ParameterBlockOrdering& parameter_block_ordering,
-    int start_row_block,
-    Program* program,
-    std::string* error) {
-  if (parameter_block_ordering.NumElements() != program->NumParameterBlocks()) {
-    *error = StringPrintf(
-        "The program has %d parameter blocks, but the parameter block "
-        "ordering has %d parameter blocks.",
-        program->NumParameterBlocks(),
-        parameter_block_ordering.NumElements());
-    return false;
-  }
-
-  // Compute a block sparse presentation of J'.
-  std::unique_ptr<TripletSparseMatrix> tsm_block_jacobian_transpose(
-      program->CreateJacobianBlockSparsityTranspose(start_row_block));
-
-  std::vector<int> ordering(program->NumParameterBlocks(), 0);
-  std::vector<ParameterBlock*>& parameter_blocks =
-      *(program->mutable_parameter_blocks());
-
-  if (sparse_linear_algebra_library_type == SUITE_SPARSE) {
-    OrderingForSparseNormalCholeskyUsingSuiteSparse(
-        linear_solver_ordering_type,
-        *tsm_block_jacobian_transpose,
-        parameter_blocks,
-        parameter_block_ordering,
-        ordering.data());
-  } else if (sparse_linear_algebra_library_type == ACCELERATE_SPARSE) {
-    // Accelerate does not provide a function to perform reordering without
-    // performing a full symbolic factorisation.  As such, we have nothing
-    // to gain from trying to reorder the problem here, as it will happen
-    // in AppleAccelerateCholesky::Factorize() (once) and reordering here
-    // would involve performing two symbolic factorisations instead of one
-    // which would have a negative overall impact on performance.
-    return true;
-
-  } else if (sparse_linear_algebra_library_type == EIGEN_SPARSE) {
-    OrderingForSparseNormalCholeskyUsingEigenSparse(
-        linear_solver_ordering_type,
-        *tsm_block_jacobian_transpose,
-        ordering.data());
-  }
-
-  // Apply ordering.
-  const std::vector<ParameterBlock*> parameter_blocks_copy(parameter_blocks);
-  for (int i = 0; i < program->NumParameterBlocks(); ++i) {
-    parameter_blocks[i] = parameter_blocks_copy[ordering[i]];
-  }
-
-  program->SetParameterOffsetsAndIndex();
-  return true;
-}
-
-int ReorderResidualBlocksByPartition(
-    const std::unordered_set<ResidualBlockId>& bottom_residual_blocks,
-    Program* program) {
-  auto residual_blocks = program->mutable_residual_blocks();
-  auto it = std::partition(residual_blocks->begin(),
-                           residual_blocks->end(),
-                           [&bottom_residual_blocks](ResidualBlock* r) {
-                             return bottom_residual_blocks.count(r) == 0;
-                           });
-  return it - residual_blocks->begin();
-}
-
-bool AreJacobianColumnsOrdered(
-    const LinearSolverType linear_solver_type,
-    const PreconditionerType preconditioner_type,
-    const SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    const LinearSolverOrderingType linear_solver_ordering_type) {
-  if (sparse_linear_algebra_library_type == SUITE_SPARSE) {
-    if (linear_solver_type == SPARSE_NORMAL_CHOLESKY ||
-        (linear_solver_type == CGNR && preconditioner_type == SUBSET)) {
-      return true;
-    }
-    if (linear_solver_type == SPARSE_SCHUR &&
-        linear_solver_ordering_type == ceres::AMD) {
-      return true;
-    }
-    return false;
-  }
-
-  if (sparse_linear_algebra_library_type == ceres::EIGEN_SPARSE) {
-    if (linear_solver_type == SPARSE_NORMAL_CHOLESKY ||
-        linear_solver_type == SPARSE_SCHUR ||
-        (linear_solver_type == CGNR && preconditioner_type == SUBSET)) {
-      return true;
-    }
-    return false;
-  }
-
-  if (sparse_linear_algebra_library_type == ceres::ACCELERATE_SPARSE) {
-    // Apple's accelerate framework does not allow direct access to
-    // ordering algorithms, so jacobian columns are never pre-ordered.
-    return false;
-  }
-
-  return false;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/reorder_program.h b/third_party/ceres/internal/ceres/reorder_program.h
deleted file mode 100644
index 368a6ed..0000000
--- a/third_party/ceres/internal/ceres/reorder_program.h
+++ /dev/null
@@ -1,129 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_REORDER_PROGRAM_H_
-#define CERES_INTERNAL_REORDER_PROGRAM_H_
-
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/parameter_block_ordering.h"
-#include "ceres/problem_impl.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-class Program;
-
-// Reorder the parameter blocks in program using the ordering
-CERES_NO_EXPORT bool ApplyOrdering(
-    const ProblemImpl::ParameterMap& parameter_map,
-    const ParameterBlockOrdering& ordering,
-    Program* program,
-    std::string* error);
-
-// Reorder the residuals for program, if necessary, so that the residuals
-// involving each E block occur together. This is a necessary condition for the
-// Schur eliminator, which works on these "row blocks" in the jacobian.
-CERES_NO_EXPORT bool LexicographicallyOrderResidualBlocks(
-    int size_of_first_elimination_group, Program* program, std::string* error);
-
-// Schur type solvers require that all parameter blocks eliminated
-// by the Schur eliminator occur before others and the residuals be
-// sorted in lexicographic order of their parameter blocks.
-//
-// If the parameter_block_ordering only contains one elimination
-// group then a maximal independent set is computed and used as the
-// first elimination group, otherwise the user's ordering is used.
-//
-// If the linear solver type is SPARSE_SCHUR and support for
-// constrained fill-reducing ordering is available in the sparse
-// linear algebra library (SuiteSparse version >= 4.2.0) then
-// columns of the schur complement matrix are ordered to reduce the
-// fill-in the Cholesky factorization.
-//
-// Upon return, ordering contains the parameter block ordering that
-// was used to order the program.
-CERES_NO_EXPORT bool ReorderProgramForSchurTypeLinearSolver(
-    LinearSolverType linear_solver_type,
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    LinearSolverOrderingType linear_solver_ordering_type,
-    const ProblemImpl::ParameterMap& parameter_map,
-    ParameterBlockOrdering* parameter_block_ordering,
-    Program* program,
-    std::string* error);
-
-// Sparse cholesky factorization routines when doing the sparse
-// cholesky factorization of the Jacobian matrix, reorders its
-// columns to reduce the fill-in. Compute this permutation and
-// re-order the parameter blocks.
-//
-// When using SuiteSparse, if the parameter_block_ordering contains
-// more than one elimination group and support for constrained
-// fill-reducing ordering is available in the sparse linear algebra
-// library (SuiteSparse version >= 4.2.0) then the fill reducing
-// ordering will take it into account, otherwise it will be ignored.
-CERES_NO_EXPORT bool ReorderProgramForSparseCholesky(
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    LinearSolverOrderingType linear_solver_ordering_type,
-    const ParameterBlockOrdering& parameter_block_ordering,
-    int start_row_block,
-    Program* program,
-    std::string* error);
-
-// Reorder the residual blocks in the program so that all the residual
-// blocks in bottom_residual_blocks are at the bottom. The return
-// value is the number of residual blocks in the program in "top" part
-// of the Program, i.e., the ones not included in
-// bottom_residual_blocks.
-//
-// This number can be different from program->NumResidualBlocks() -
-// bottom_residual_blocks.size() because we allow
-// bottom_residual_blocks to contain residual blocks not present in
-// the Program.
-CERES_NO_EXPORT int ReorderResidualBlocksByPartition(
-    const std::unordered_set<ResidualBlockId>& bottom_residual_blocks,
-    Program* program);
-
-// The return value of this function indicates whether the columns of
-// the Jacobian can be reordered using a fill reducing ordering.
-CERES_NO_EXPORT bool AreJacobianColumnsOrdered(
-    LinearSolverType linear_solver_type,
-    PreconditionerType preconditioner_type,
-    SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    LinearSolverOrderingType linear_solver_ordering_type);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_REORDER_PROGRAM_H_
diff --git a/third_party/ceres/internal/ceres/reorder_program_test.cc b/third_party/ceres/internal/ceres/reorder_program_test.cc
deleted file mode 100644
index a8db314..0000000
--- a/third_party/ceres/internal/ceres/reorder_program_test.cc
+++ /dev/null
@@ -1,288 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/reorder_program.h"
-
-#include <random>
-#include <vector>
-
-#include "ceres/internal/config.h"
-#include "ceres/parameter_block.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/solver.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// Templated base class for the CostFunction signatures.
-template <int kNumResiduals, int... Ns>
-class MockCostFunctionBase : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    // Do nothing. This is never called.
-    return true;
-  }
-};
-
-class UnaryCostFunction : public MockCostFunctionBase<2, 1> {};
-class BinaryCostFunction : public MockCostFunctionBase<2, 1, 1> {};
-class TernaryCostFunction : public MockCostFunctionBase<2, 1, 1, 1> {};
-
-TEST(_, ReorderResidualBlockNormalFunction) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &x);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &z, &x);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &z, &y);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &z);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &x, &y);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &y);
-
-  auto linear_solver_ordering = std::make_shared<ParameterBlockOrdering>();
-  linear_solver_ordering->AddElementToGroup(&x, 0);
-  linear_solver_ordering->AddElementToGroup(&y, 0);
-  linear_solver_ordering->AddElementToGroup(&z, 1);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_SCHUR;
-  options.linear_solver_ordering = linear_solver_ordering;
-
-  const std::vector<ResidualBlock*>& residual_blocks =
-      problem.program().residual_blocks();
-
-  std::vector<ResidualBlock*> expected_residual_blocks;
-
-  // This is a bit fragile, but it serves the purpose. We know the
-  // bucketing algorithm that the reordering function uses, so we
-  // expect the order for residual blocks for each e_block to be
-  // filled in reverse.
-  expected_residual_blocks.push_back(residual_blocks[4]);
-  expected_residual_blocks.push_back(residual_blocks[1]);
-  expected_residual_blocks.push_back(residual_blocks[0]);
-  expected_residual_blocks.push_back(residual_blocks[5]);
-  expected_residual_blocks.push_back(residual_blocks[2]);
-  expected_residual_blocks.push_back(residual_blocks[3]);
-
-  Program* program = problem.mutable_program();
-  program->SetParameterOffsetsAndIndex();
-
-  std::string message;
-  EXPECT_TRUE(LexicographicallyOrderResidualBlocks(
-      2, problem.mutable_program(), &message));
-  EXPECT_EQ(residual_blocks.size(), expected_residual_blocks.size());
-  for (int i = 0; i < expected_residual_blocks.size(); ++i) {
-    EXPECT_EQ(residual_blocks[i], expected_residual_blocks[i]);
-  }
-}
-
-TEST(_, ApplyOrderingOrderingTooSmall) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-
-  ParameterBlockOrdering linear_solver_ordering;
-  linear_solver_ordering.AddElementToGroup(&x, 0);
-  linear_solver_ordering.AddElementToGroup(&y, 1);
-
-  Program program(problem.program());
-  std::string message;
-  EXPECT_FALSE(ApplyOrdering(
-      problem.parameter_map(), linear_solver_ordering, &program, &message));
-}
-
-TEST(_, ApplyOrderingNormal) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-
-  ParameterBlockOrdering linear_solver_ordering;
-  linear_solver_ordering.AddElementToGroup(&x, 0);
-  linear_solver_ordering.AddElementToGroup(&y, 2);
-  linear_solver_ordering.AddElementToGroup(&z, 1);
-
-  Program* program = problem.mutable_program();
-  std::string message;
-
-  EXPECT_TRUE(ApplyOrdering(
-      problem.parameter_map(), linear_solver_ordering, program, &message));
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program->parameter_blocks();
-
-  EXPECT_EQ(parameter_blocks.size(), 3);
-  EXPECT_EQ(parameter_blocks[0]->user_state(), &x);
-  EXPECT_EQ(parameter_blocks[1]->user_state(), &z);
-  EXPECT_EQ(parameter_blocks[2]->user_state(), &y);
-}
-
-#ifndef CERES_NO_SUITESPARSE
-class ReorderProgramForSparseCholeskyUsingSuiteSparseTest
-    : public ::testing::Test {
- protected:
-  void SetUp() override {
-    problem_.AddResidualBlock(new UnaryCostFunction(), nullptr, &x_);
-    problem_.AddResidualBlock(new BinaryCostFunction(), nullptr, &z_, &x_);
-    problem_.AddResidualBlock(new BinaryCostFunction(), nullptr, &z_, &y_);
-    problem_.AddResidualBlock(new UnaryCostFunction(), nullptr, &z_);
-    problem_.AddResidualBlock(new BinaryCostFunction(), nullptr, &x_, &y_);
-    problem_.AddResidualBlock(new UnaryCostFunction(), nullptr, &y_);
-  }
-
-  void ComputeAndValidateOrdering(
-      const ParameterBlockOrdering& linear_solver_ordering) {
-    Program* program = problem_.mutable_program();
-    std::vector<ParameterBlock*> unordered_parameter_blocks =
-        program->parameter_blocks();
-
-    std::string error;
-    EXPECT_TRUE(ReorderProgramForSparseCholesky(ceres::SUITE_SPARSE,
-                                                ceres::AMD,
-                                                linear_solver_ordering,
-                                                0, /* use all rows */
-                                                program,
-                                                &error));
-    const std::vector<ParameterBlock*>& ordered_parameter_blocks =
-        program->parameter_blocks();
-    EXPECT_EQ(ordered_parameter_blocks.size(),
-              unordered_parameter_blocks.size());
-
-    EXPECT_THAT(unordered_parameter_blocks,
-                ::testing::UnorderedElementsAreArray(ordered_parameter_blocks));
-  }
-
-  ProblemImpl problem_;
-  double x_;
-  double y_;
-  double z_;
-};
-
-TEST_F(ReorderProgramForSparseCholeskyUsingSuiteSparseTest,
-       EverythingInGroupZero) {
-  ParameterBlockOrdering linear_solver_ordering;
-  linear_solver_ordering.AddElementToGroup(&x_, 0);
-  linear_solver_ordering.AddElementToGroup(&y_, 0);
-  linear_solver_ordering.AddElementToGroup(&z_, 0);
-
-  ComputeAndValidateOrdering(linear_solver_ordering);
-}
-
-TEST_F(ReorderProgramForSparseCholeskyUsingSuiteSparseTest, ContiguousGroups) {
-  ParameterBlockOrdering linear_solver_ordering;
-  linear_solver_ordering.AddElementToGroup(&x_, 0);
-  linear_solver_ordering.AddElementToGroup(&y_, 1);
-  linear_solver_ordering.AddElementToGroup(&z_, 2);
-
-  ComputeAndValidateOrdering(linear_solver_ordering);
-}
-
-TEST_F(ReorderProgramForSparseCholeskyUsingSuiteSparseTest, GroupsWithGaps) {
-  ParameterBlockOrdering linear_solver_ordering;
-  linear_solver_ordering.AddElementToGroup(&x_, 0);
-  linear_solver_ordering.AddElementToGroup(&y_, 2);
-  linear_solver_ordering.AddElementToGroup(&z_, 2);
-
-  ComputeAndValidateOrdering(linear_solver_ordering);
-}
-
-TEST_F(ReorderProgramForSparseCholeskyUsingSuiteSparseTest,
-       NonContiguousStartingAtTwo) {
-  ParameterBlockOrdering linear_solver_ordering;
-  linear_solver_ordering.AddElementToGroup(&x_, 2);
-  linear_solver_ordering.AddElementToGroup(&y_, 4);
-  linear_solver_ordering.AddElementToGroup(&z_, 4);
-
-  ComputeAndValidateOrdering(linear_solver_ordering);
-}
-#endif  // CERES_NO_SUITESPARSE
-
-TEST(_, ReorderResidualBlocksbyPartition) {
-  ProblemImpl problem;
-  double x;
-  double y;
-  double z;
-
-  problem.AddParameterBlock(&x, 1);
-  problem.AddParameterBlock(&y, 1);
-  problem.AddParameterBlock(&z, 1);
-
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &x);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &z, &x);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &z, &y);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &z);
-  problem.AddResidualBlock(new BinaryCostFunction(), nullptr, &x, &y);
-  problem.AddResidualBlock(new UnaryCostFunction(), nullptr, &y);
-
-  std::vector<ResidualBlockId> residual_block_ids;
-  problem.GetResidualBlocks(&residual_block_ids);
-  std::vector<ResidualBlock*> residual_blocks =
-      problem.program().residual_blocks();
-  auto rng = std::mt19937{};
-  for (int i = 1; i < 6; ++i) {
-    std::shuffle(
-        std::begin(residual_block_ids), std::end(residual_block_ids), rng);
-    std::unordered_set<ResidualBlockId> bottom(residual_block_ids.begin(),
-                                               residual_block_ids.begin() + i);
-    const int start_bottom =
-        ReorderResidualBlocksByPartition(bottom, problem.mutable_program());
-    std::vector<ResidualBlock*> actual_residual_blocks =
-        problem.program().residual_blocks();
-    EXPECT_THAT(actual_residual_blocks,
-                testing::UnorderedElementsAreArray(residual_blocks));
-    EXPECT_EQ(start_bottom, residual_blocks.size() - i);
-    for (int j = start_bottom; j < residual_blocks.size(); ++j) {
-      EXPECT_THAT(bottom, ::testing::Contains(actual_residual_blocks[j]));
-    }
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/residual_block.cc b/third_party/ceres/internal/ceres/residual_block.cc
deleted file mode 100644
index f5ad125..0000000
--- a/third_party/ceres/internal/ceres/residual_block.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/residual_block.h"
-
-#include <algorithm>
-#include <cstddef>
-#include <vector>
-
-#include "ceres/corrector.h"
-#include "ceres/cost_function.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/loss_function.h"
-#include "ceres/manifold.h"
-#include "ceres/parameter_block.h"
-#include "ceres/residual_block_utils.h"
-#include "ceres/small_blas.h"
-
-using Eigen::Dynamic;
-
-namespace ceres::internal {
-
-ResidualBlock::ResidualBlock(
-    const CostFunction* cost_function,
-    const LossFunction* loss_function,
-    const std::vector<ParameterBlock*>& parameter_blocks,
-    int index)
-    : cost_function_(cost_function),
-      loss_function_(loss_function),
-      parameter_blocks_(
-          new ParameterBlock*[cost_function->parameter_block_sizes().size()]),
-      index_(index) {
-  CHECK(cost_function_ != nullptr);
-  std::copy(parameter_blocks.begin(),
-            parameter_blocks.end(),
-            parameter_blocks_.get());
-}
-
-bool ResidualBlock::Evaluate(const bool apply_loss_function,
-                             double* cost,
-                             double* residuals,
-                             double** jacobians,
-                             double* scratch) const {
-  const int num_parameter_blocks = NumParameterBlocks();
-  const int num_residuals = cost_function_->num_residuals();
-
-  // Collect the parameters from their blocks. This will rarely allocate, since
-  // residuals taking more than 8 parameter block arguments are rare.
-  FixedArray<const double*, 8> parameters(num_parameter_blocks);
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    parameters[i] = parameter_blocks_[i]->state();
-  }
-
-  // Put pointers into the scratch space into global_jacobians as appropriate.
-  FixedArray<double*, 8> global_jacobians(num_parameter_blocks);
-  if (jacobians != nullptr) {
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      const ParameterBlock* parameter_block = parameter_blocks_[i];
-      if (jacobians[i] != nullptr &&
-          parameter_block->PlusJacobian() != nullptr) {
-        global_jacobians[i] = scratch;
-        scratch += num_residuals * parameter_block->Size();
-      } else {
-        global_jacobians[i] = jacobians[i];
-      }
-    }
-  }
-
-  // If the caller didn't request residuals, use the scratch space for them.
-  bool outputting_residuals = (residuals != nullptr);
-  if (!outputting_residuals) {
-    residuals = scratch;
-  }
-
-  // Invalidate the evaluation buffers so that we can check them after
-  // the CostFunction::Evaluate call, to see if all the return values
-  // that were required were written to and that they are finite.
-  double** eval_jacobians =
-      (jacobians != nullptr) ? global_jacobians.data() : nullptr;
-
-  InvalidateEvaluation(*this, cost, residuals, eval_jacobians);
-
-  if (!cost_function_->Evaluate(parameters.data(), residuals, eval_jacobians)) {
-    return false;
-  }
-
-  if (!IsEvaluationValid(*this, parameters.data(), residuals, eval_jacobians)) {
-    // clang-format off
-    std::string message =
-        "\n\n"
-        "Error in evaluating the ResidualBlock.\n\n"
-        "There are two possible reasons. Either the CostFunction did not evaluate and fill all    \n"  // NOLINT
-        "residual and jacobians that were requested or there was a non-finite value (nan/infinite)\n"  // NOLINT
-        "generated during the or jacobian computation. \n\n" +
-        EvaluationToString(
-            *this, parameters.data(), cost, residuals, eval_jacobians);
-    // clang-format on
-    LOG(WARNING) << message;
-    return false;
-  }
-
-  double squared_norm = VectorRef(residuals, num_residuals).squaredNorm();
-
-  // Update the plus_jacobian for the manifolds.
-  if (jacobians != nullptr) {
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      if (jacobians[i] != nullptr) {
-        const ParameterBlock* parameter_block = parameter_blocks_[i];
-
-        // Apply the Manifold::PlusJacobian to the ambient jacobians.
-        if (parameter_block->PlusJacobian() != nullptr) {
-          // jacobians[i] = global_jacobians[i] * global_to_local_jacobian.
-          MatrixMatrixMultiply<Dynamic, Dynamic, Dynamic, Dynamic, 0>(
-              global_jacobians[i],
-              num_residuals,
-              parameter_block->Size(),
-              parameter_block->PlusJacobian(),
-              parameter_block->Size(),
-              parameter_block->TangentSize(),
-              jacobians[i],
-              0,
-              0,
-              num_residuals,
-              parameter_block->TangentSize());
-        }
-      }
-    }
-  }
-
-  if (loss_function_ == nullptr || !apply_loss_function) {
-    *cost = 0.5 * squared_norm;
-    return true;
-  }
-
-  double rho[3];
-  loss_function_->Evaluate(squared_norm, rho);
-  *cost = 0.5 * rho[0];
-
-  // No jacobians and not outputting residuals? All done. Doing an early exit
-  // here avoids constructing the "Corrector" object below in a common case.
-  if (jacobians == nullptr && !outputting_residuals) {
-    return true;
-  }
-
-  // Correct for the effects of the loss function. The jacobians need to be
-  // corrected before the residuals, since they use the uncorrected residuals.
-  Corrector correct(squared_norm, rho);
-  if (jacobians != nullptr) {
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      if (jacobians[i] != nullptr) {
-        const ParameterBlock* parameter_block = parameter_blocks_[i];
-
-        // Correct the jacobians for the loss function.
-        correct.CorrectJacobian(num_residuals,
-                                parameter_block->TangentSize(),
-                                residuals,
-                                jacobians[i]);
-      }
-    }
-  }
-
-  // Correct the residuals with the loss function.
-  if (outputting_residuals) {
-    correct.CorrectResiduals(num_residuals, residuals);
-  }
-  return true;
-}
-
-int ResidualBlock::NumScratchDoublesForEvaluate() const {
-  // Compute the amount of scratch space needed to store the full-sized
-  // jacobians. For parameters that have no manifold no storage is needed and
-  // the passed-in jacobian array is used directly. Also include space to store
-  // the residuals, which is needed for cost-only evaluations.  This is slightly
-  // pessimistic, since both won't be needed all the time, but the amount of
-  // excess should not cause problems for the caller.
-  int num_parameters = NumParameterBlocks();
-  int scratch_doubles = 1;
-  for (int i = 0; i < num_parameters; ++i) {
-    const ParameterBlock* parameter_block = parameter_blocks_[i];
-    if (parameter_block->PlusJacobian() != nullptr) {
-      scratch_doubles += parameter_block->Size();
-    }
-  }
-  scratch_doubles *= NumResiduals();
-  return scratch_doubles;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/residual_block.h b/third_party/ceres/internal/ceres/residual_block.h
deleted file mode 100644
index 62460c7..0000000
--- a/third_party/ceres/internal/ceres/residual_block.h
+++ /dev/null
@@ -1,153 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.com (Keir Mierle)
-//
-// Purpose : Class and struct definitions for parameter and residual blocks.
-
-#ifndef CERES_INTERNAL_RESIDUAL_BLOCK_H_
-#define CERES_INTERNAL_RESIDUAL_BLOCK_H_
-
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/cost_function.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-
-namespace ceres {
-
-class LossFunction;
-
-namespace internal {
-
-class ParameterBlock;
-
-// A term in the least squares problem. The mathematical form of each term in
-// the overall least-squares cost function is:
-//
-//    1
-//   --- loss_function( || cost_function(block1, block2, ...) ||^2  ),
-//    2
-//
-// Storing the cost function and the loss function separately permits optimizing
-// the problem with standard non-linear least techniques, without requiring a
-// more general non-linear solver.
-//
-// The residual block stores pointers to but does not own the cost functions,
-// loss functions, and parameter blocks.
-class CERES_NO_EXPORT ResidualBlock {
- public:
-  // Construct the residual block with the given cost/loss functions. Loss may
-  // be null. The index is the index of the residual block in the Program's
-  // residual_blocks array.
-  ResidualBlock(const CostFunction* cost_function,
-                const LossFunction* loss_function,
-                const std::vector<ParameterBlock*>& parameter_blocks,
-                int index);
-
-  // Evaluates the residual term, storing the scalar cost in *cost, the residual
-  // components in *residuals, and the jacobians between the parameters and
-  // residuals in jacobians[i], in row-major order. If residuals is nullptr, the
-  // residuals are not computed. If jacobians is nullptr, no jacobians are
-  // computed. If jacobians[i] is nullptr, then the jacobian for that parameter
-  // is not computed.
-  //
-  // cost must not be null.
-  //
-  // Evaluate needs scratch space which must be supplied by the caller via
-  // scratch. The array should have at least NumScratchDoublesForEvaluate()
-  // space available.
-  //
-  // The return value indicates the success or failure. If the function returns
-  // false, the caller should expect the output memory locations to have
-  // been modified.
-  //
-  // The returned cost and jacobians have had robustification and manifold
-  // projection applied already; for example, the jacobian for a 4-dimensional
-  // quaternion parameter using the "Quaternion" manifold is num_residuals by 3
-  // instead of num_residuals by 4.
-  //
-  // apply_loss_function as the name implies allows the user to switch
-  // the application of the loss function on and off.
-  bool Evaluate(bool apply_loss_function,
-                double* cost,
-                double* residuals,
-                double** jacobians,
-                double* scratch) const;
-
-  const CostFunction* cost_function() const { return cost_function_; }
-  const LossFunction* loss_function() const { return loss_function_; }
-
-  // Access the parameter blocks for this residual. The array has size
-  // NumParameterBlocks().
-  ParameterBlock* const* parameter_blocks() const {
-    return parameter_blocks_.get();
-  }
-
-  // Number of variable blocks that this residual term depends on.
-  int NumParameterBlocks() const {
-    return cost_function_->parameter_block_sizes().size();
-  }
-
-  // The size of the residual vector returned by this residual function.
-  int NumResiduals() const { return cost_function_->num_residuals(); }
-
-  // The minimum amount of scratch space needed to pass to Evaluate().
-  int NumScratchDoublesForEvaluate() const;
-
-  // This residual block's index in an array.
-  int index() const { return index_; }
-  void set_index(int index) { index_ = index; }
-
-  std::string ToString() const {
-    return StringPrintf("{residual block; index=%d}", index_);
-  }
-
- private:
-  const CostFunction* cost_function_;
-  const LossFunction* loss_function_;
-  std::unique_ptr<ParameterBlock*[]> parameter_blocks_;
-
-  // The index of the residual, typically in a Program. This is only to permit
-  // switching from a ResidualBlock* to an index in the Program's array, needed
-  // to do efficient removals.
-  int32_t index_;
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_RESIDUAL_BLOCK_H_
diff --git a/third_party/ceres/internal/ceres/residual_block_test.cc b/third_party/ceres/internal/ceres/residual_block_test.cc
deleted file mode 100644
index 8040136..0000000
--- a/third_party/ceres/internal/ceres/residual_block_test.cc
+++ /dev/null
@@ -1,326 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/residual_block.h"
-
-#include <cstdint>
-#include <string>
-#include <vector>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/manifold.h"
-#include "ceres/parameter_block.h"
-#include "ceres/sized_cost_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Trivial cost function that accepts three arguments.
-class TernaryCostFunction : public CostFunction {
- public:
-  TernaryCostFunction(int num_residuals,
-                      int32_t parameter_block1_size,
-                      int32_t parameter_block2_size,
-                      int32_t parameter_block3_size) {
-    set_num_residuals(num_residuals);
-    mutable_parameter_block_sizes()->push_back(parameter_block1_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block2_size);
-    mutable_parameter_block_sizes()->push_back(parameter_block3_size);
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = i;
-    }
-    if (jacobians) {
-      for (int k = 0; k < 3; ++k) {
-        if (jacobians[k] != nullptr) {
-          MatrixRef jacobian(
-              jacobians[k], num_residuals(), parameter_block_sizes()[k]);
-          jacobian.setConstant(k);
-        }
-      }
-    }
-    return true;
-  }
-};
-
-TEST(ResidualBlock, EvaluateWithNoLossFunctionOrManifolds) {
-  double scratch[64];
-
-  // Prepare the parameter blocks.
-  double values_x[2];
-  ParameterBlock x(values_x, 2, -1);
-
-  double values_y[3];
-  ParameterBlock y(values_y, 3, -1);
-
-  double values_z[4];
-  ParameterBlock z(values_z, 4, -1);
-
-  std::vector<ParameterBlock*> parameters;
-  parameters.push_back(&x);
-  parameters.push_back(&y);
-  parameters.push_back(&z);
-
-  TernaryCostFunction cost_function(3, 2, 3, 4);
-
-  // Create the object under tests.
-  ResidualBlock residual_block(&cost_function, nullptr, parameters, -1);
-
-  // Verify getters.
-  EXPECT_EQ(&cost_function, residual_block.cost_function());
-  EXPECT_EQ(nullptr, residual_block.loss_function());
-  EXPECT_EQ(parameters[0], residual_block.parameter_blocks()[0]);
-  EXPECT_EQ(parameters[1], residual_block.parameter_blocks()[1]);
-  EXPECT_EQ(parameters[2], residual_block.parameter_blocks()[2]);
-  EXPECT_EQ(3, residual_block.NumScratchDoublesForEvaluate());
-
-  // Verify cost-only evaluation.
-  double cost;
-  residual_block.Evaluate(true, &cost, nullptr, nullptr, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-
-  // Verify cost and residual evaluation.
-  double residuals[3];
-  residual_block.Evaluate(true, &cost, residuals, nullptr, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-  EXPECT_EQ(0.0, residuals[0]);
-  EXPECT_EQ(1.0, residuals[1]);
-  EXPECT_EQ(2.0, residuals[2]);
-
-  // Verify cost, residual, and jacobian evaluation.
-  cost = 0.0;
-  VectorRef(residuals, 3).setConstant(0.0);
-
-  Matrix jacobian_rx(3, 2);
-  Matrix jacobian_ry(3, 3);
-  Matrix jacobian_rz(3, 4);
-
-  jacobian_rx.setConstant(-1.0);
-  jacobian_ry.setConstant(-1.0);
-  jacobian_rz.setConstant(-1.0);
-
-  double* jacobian_ptrs[3] = {
-      jacobian_rx.data(), jacobian_ry.data(), jacobian_rz.data()};
-
-  residual_block.Evaluate(true, &cost, residuals, jacobian_ptrs, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-  EXPECT_EQ(0.0, residuals[0]);
-  EXPECT_EQ(1.0, residuals[1]);
-  EXPECT_EQ(2.0, residuals[2]);
-
-  EXPECT_TRUE((jacobian_rx.array() == 0.0).all()) << "\n" << jacobian_rx;
-  EXPECT_TRUE((jacobian_ry.array() == 1.0).all()) << "\n" << jacobian_ry;
-  EXPECT_TRUE((jacobian_rz.array() == 2.0).all()) << "\n" << jacobian_rz;
-
-  // Verify cost, residual, and partial jacobian evaluation.
-  cost = 0.0;
-  VectorRef(residuals, 3).setConstant(0.0);
-  jacobian_rx.setConstant(-1.0);
-  jacobian_ry.setConstant(-1.0);
-  jacobian_rz.setConstant(-1.0);
-
-  jacobian_ptrs[1] = nullptr;  // Don't compute the jacobian for y.
-
-  residual_block.Evaluate(true, &cost, residuals, jacobian_ptrs, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-  EXPECT_EQ(0.0, residuals[0]);
-  EXPECT_EQ(1.0, residuals[1]);
-  EXPECT_EQ(2.0, residuals[2]);
-
-  // clang-format off
-  EXPECT_TRUE((jacobian_rx.array() ==  0.0).all()) << "\n" << jacobian_rx;
-  EXPECT_TRUE((jacobian_ry.array() == -1.0).all()) << "\n" << jacobian_ry;
-  EXPECT_TRUE((jacobian_rz.array() ==  2.0).all()) << "\n" << jacobian_rz;
-  // clang-format on
-}
-
-// Trivial cost function that accepts three arguments.
-class LocallyParameterizedCostFunction : public SizedCostFunction<3, 2, 3, 4> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    for (int i = 0; i < num_residuals(); ++i) {
-      residuals[i] = i;
-    }
-    if (jacobians) {
-      for (int k = 0; k < 3; ++k) {
-        // The jacobians here are full sized, but they are transformed in the
-        // evaluator into the "local" jacobian. In the tests, the
-        // "SubsetManifold" is used, which should pick out columns from these
-        // jacobians. Put values in the jacobian that make this obvious; in
-        // particular, make the jacobians like this:
-        //
-        //   0 1 2 3 4 ...
-        //   0 1 2 3 4 ...
-        //   0 1 2 3 4 ...
-        //
-        if (jacobians[k] != nullptr) {
-          MatrixRef jacobian(
-              jacobians[k], num_residuals(), parameter_block_sizes()[k]);
-          for (int j = 0; j < k + 2; ++j) {
-            jacobian.col(j).setConstant(j);
-          }
-        }
-      }
-    }
-    return true;
-  }
-};
-
-TEST(ResidualBlock, EvaluateWithManifolds) {
-  double scratch[64];
-
-  // Prepare the parameter blocks.
-  double values_x[2];
-  ParameterBlock x(values_x, 2, -1);
-
-  double values_y[3];
-  ParameterBlock y(values_y, 3, -1);
-
-  double values_z[4];
-  ParameterBlock z(values_z, 4, -1);
-
-  std::vector<ParameterBlock*> parameters;
-  parameters.push_back(&x);
-  parameters.push_back(&y);
-  parameters.push_back(&z);
-
-  // Make x have the first component fixed.
-  std::vector<int> x_fixed;
-  x_fixed.push_back(0);
-  SubsetManifold x_manifold(2, x_fixed);
-  x.SetManifold(&x_manifold);
-
-  // Make z have the last and last component fixed.
-  std::vector<int> z_fixed;
-  z_fixed.push_back(2);
-  SubsetManifold z_manifold(4, z_fixed);
-  z.SetManifold(&z_manifold);
-
-  LocallyParameterizedCostFunction cost_function;
-
-  // Create the object under tests.
-  ResidualBlock residual_block(&cost_function, nullptr, parameters, -1);
-
-  // Verify getters.
-  EXPECT_EQ(&cost_function, residual_block.cost_function());
-  EXPECT_EQ(nullptr, residual_block.loss_function());
-  EXPECT_EQ(parameters[0], residual_block.parameter_blocks()[0]);
-  EXPECT_EQ(parameters[1], residual_block.parameter_blocks()[1]);
-  EXPECT_EQ(parameters[2], residual_block.parameter_blocks()[2]);
-  EXPECT_EQ(3 * (2 + 4) + 3, residual_block.NumScratchDoublesForEvaluate());
-
-  // Verify cost-only evaluation.
-  double cost;
-  residual_block.Evaluate(true, &cost, nullptr, nullptr, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-
-  // Verify cost and residual evaluation.
-  double residuals[3];
-  residual_block.Evaluate(true, &cost, residuals, nullptr, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-  EXPECT_EQ(0.0, residuals[0]);
-  EXPECT_EQ(1.0, residuals[1]);
-  EXPECT_EQ(2.0, residuals[2]);
-
-  // Verify cost, residual, and jacobian evaluation.
-  cost = 0.0;
-  VectorRef(residuals, 3).setConstant(0.0);
-
-  Matrix jacobian_rx(3, 1);  // Since the first element is fixed.
-  Matrix jacobian_ry(3, 3);
-  Matrix jacobian_rz(3, 3);  // Since the third element is fixed.
-
-  jacobian_rx.setConstant(-1.0);
-  jacobian_ry.setConstant(-1.0);
-  jacobian_rz.setConstant(-1.0);
-
-  double* jacobian_ptrs[3] = {
-      jacobian_rx.data(), jacobian_ry.data(), jacobian_rz.data()};
-
-  residual_block.Evaluate(true, &cost, residuals, jacobian_ptrs, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-  EXPECT_EQ(0.0, residuals[0]);
-  EXPECT_EQ(1.0, residuals[1]);
-  EXPECT_EQ(2.0, residuals[2]);
-
-  // clang-format off
-
-  Matrix expected_jacobian_rx(3, 1);
-  expected_jacobian_rx << 1.0, 1.0, 1.0;
-
-  Matrix expected_jacobian_ry(3, 3);
-  expected_jacobian_ry << 0.0, 1.0, 2.0,
-                          0.0, 1.0, 2.0,
-                          0.0, 1.0, 2.0;
-
-  Matrix expected_jacobian_rz(3, 3);
-  expected_jacobian_rz << 0.0, 1.0, /* 2.0, */ 3.0,  // 3rd parameter constant.
-                          0.0, 1.0, /* 2.0, */ 3.0,
-                          0.0, 1.0, /* 2.0, */ 3.0;
-
-  EXPECT_EQ(expected_jacobian_rx, jacobian_rx)
-      << "\nExpected:\n" << expected_jacobian_rx
-      << "\nActual:\n"   << jacobian_rx;
-  EXPECT_EQ(expected_jacobian_ry, jacobian_ry)
-      << "\nExpected:\n" << expected_jacobian_ry
-      << "\nActual:\n"   << jacobian_ry;
-  EXPECT_EQ(expected_jacobian_rz, jacobian_rz)
-      << "\nExpected:\n " << expected_jacobian_rz
-      << "\nActual:\n"   << jacobian_rz;
-
-  // clang-format on
-
-  // Verify cost, residual, and partial jacobian evaluation.
-  cost = 0.0;
-  VectorRef(residuals, 3).setConstant(0.0);
-  jacobian_rx.setConstant(-1.0);
-  jacobian_ry.setConstant(-1.0);
-  jacobian_rz.setConstant(-1.0);
-
-  jacobian_ptrs[1] = nullptr;  // Don't compute the jacobian for y.
-
-  residual_block.Evaluate(true, &cost, residuals, jacobian_ptrs, scratch);
-  EXPECT_EQ(0.5 * (0 * 0 + 1 * 1 + 2 * 2), cost);
-  EXPECT_EQ(0.0, residuals[0]);
-  EXPECT_EQ(1.0, residuals[1]);
-  EXPECT_EQ(2.0, residuals[2]);
-
-  EXPECT_EQ(expected_jacobian_rx, jacobian_rx);
-  EXPECT_TRUE((jacobian_ry.array() == -1.0).all()) << "\n" << jacobian_ry;
-  EXPECT_EQ(expected_jacobian_rz, jacobian_rz);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/residual_block_utils.cc b/third_party/ceres/internal/ceres/residual_block_utils.cc
deleted file mode 100644
index 91370d8..0000000
--- a/third_party/ceres/internal/ceres/residual_block_utils.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/residual_block_utils.h"
-
-#include <cmath>
-#include <cstddef>
-#include <limits>
-#include <string>
-
-#include "ceres/array_utils.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/parameter_block.h"
-#include "ceres/residual_block.h"
-#include "ceres/stringprintf.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-void InvalidateEvaluation(const ResidualBlock& block,
-                          double* cost,
-                          double* residuals,
-                          double** jacobians) {
-  const int num_parameter_blocks = block.NumParameterBlocks();
-  const int num_residuals = block.NumResiduals();
-
-  InvalidateArray(1, cost);
-  InvalidateArray(num_residuals, residuals);
-  if (jacobians != nullptr) {
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      const int parameter_block_size = block.parameter_blocks()[i]->Size();
-      InvalidateArray(num_residuals * parameter_block_size, jacobians[i]);
-    }
-  }
-}
-
-std::string EvaluationToString(const ResidualBlock& block,
-                               double const* const* parameters,
-                               double* cost,
-                               double* residuals,
-                               double** jacobians) {
-  CHECK(cost != nullptr);
-  CHECK(residuals != nullptr);
-
-  const int num_parameter_blocks = block.NumParameterBlocks();
-  const int num_residuals = block.NumResiduals();
-  std::string result = "";
-
-  // clang-format off
-  StringAppendF(&result,
-                "Residual Block size: %d parameter blocks x %d residuals\n\n",
-                num_parameter_blocks, num_residuals);
-  result +=
-      "For each parameter block, the value of the parameters are printed in the first column   \n"  // NOLINT
-      "and the value of the jacobian under the corresponding residual. If a ParameterBlock was \n"  // NOLINT
-      "held constant then the corresponding jacobian is printed as 'Not Computed'. If an entry \n"  // NOLINT
-      "of the Jacobian/residual array was requested but was not written to by user code, it is \n"  // NOLINT
-      "indicated by 'Uninitialized'. This is an error. Residuals or Jacobian values evaluating \n"  // NOLINT
-      "to Inf or NaN is also an error.  \n\n"; // NOLINT
-  // clang-format on
-
-  std::string space = "Residuals:     ";
-  result += space;
-  AppendArrayToString(num_residuals, residuals, &result);
-  StringAppendF(&result, "\n\n");
-
-  for (int i = 0; i < num_parameter_blocks; ++i) {
-    const int parameter_block_size = block.parameter_blocks()[i]->Size();
-    StringAppendF(
-        &result, "Parameter Block %d, size: %d\n", i, parameter_block_size);
-    StringAppendF(&result, "\n");
-    for (int j = 0; j < parameter_block_size; ++j) {
-      AppendArrayToString(1, parameters[i] + j, &result);
-      StringAppendF(&result, "| ");
-      for (int k = 0; k < num_residuals; ++k) {
-        AppendArrayToString(1,
-                            (jacobians != nullptr && jacobians[i] != nullptr)
-                                ? jacobians[i] + k * parameter_block_size + j
-                                : nullptr,
-                            &result);
-      }
-      StringAppendF(&result, "\n");
-    }
-    StringAppendF(&result, "\n");
-  }
-  StringAppendF(&result, "\n");
-  return result;
-}
-
-// TODO(sameeragarwal) Check cost value validness here
-// Cost value is a part of evaluation but not checked here since according to
-// residual_block.cc cost is not valid at the time this method is called
-bool IsEvaluationValid(const ResidualBlock& block,
-                       double const* const* /*parameters*/,
-                       double* residuals,
-                       double** jacobians) {
-  const int num_parameter_blocks = block.NumParameterBlocks();
-  const int num_residuals = block.NumResiduals();
-
-  if (!IsArrayValid(num_residuals, residuals)) {
-    return false;
-  }
-
-  if (jacobians != nullptr) {
-    for (int i = 0; i < num_parameter_blocks; ++i) {
-      const int parameter_block_size = block.parameter_blocks()[i]->Size();
-      if (!IsArrayValid(num_residuals * parameter_block_size, jacobians[i])) {
-        return false;
-      }
-    }
-  }
-
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/residual_block_utils.h b/third_party/ceres/internal/ceres/residual_block_utils.h
deleted file mode 100644
index 1bf1ca1..0000000
--- a/third_party/ceres/internal/ceres/residual_block_utils.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Utility routines for ResidualBlock evaluation.
-//
-// These are useful for detecting two common class of errors.
-//
-// 1. Uninitialized memory - where the user for some reason did not
-// compute part of a cost/residual/jacobian.
-//
-// 2. Numerical failure while computing the cost/residual/jacobian,
-// e.g. NaN, infinities etc. This is particularly useful since the
-// automatic differentiation code does computations that are not
-// evident to the user and can silently generate hard to debug errors.
-
-#ifndef CERES_INTERNAL_RESIDUAL_BLOCK_UTILS_H_
-#define CERES_INTERNAL_RESIDUAL_BLOCK_UTILS_H_
-
-#include <string>
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-class ResidualBlock;
-
-// Invalidate cost, resdual and jacobian arrays (if not nullptr).
-CERES_NO_EXPORT
-void InvalidateEvaluation(const ResidualBlock& block,
-                          double* cost,
-                          double* residuals,
-                          double** jacobians);
-
-// Check if any of the arrays cost, residuals or jacobians contains an
-// NaN, return true if it does.
-CERES_NO_EXPORT
-bool IsEvaluationValid(const ResidualBlock& block,
-                       double const* const* parameters,
-                       double* residuals,
-                       double** jacobians);
-
-// Create a string representation of the Residual block containing the
-// value of the parameters, residuals and jacobians if present.
-// Useful for debugging output.
-CERES_NO_EXPORT
-std::string EvaluationToString(const ResidualBlock& block,
-                               double const* const* parameters,
-                               double* cost,
-                               double* residuals,
-                               double** jacobians);
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_RESIDUAL_BLOCK_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/residual_block_utils_test.cc b/third_party/ceres/internal/ceres/residual_block_utils_test.cc
deleted file mode 100644
index 6fc8aa0..0000000
--- a/third_party/ceres/internal/ceres/residual_block_utils_test.cc
+++ /dev/null
@@ -1,164 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/residual_block_utils.h"
-
-#include <cmath>
-#include <limits>
-#include <memory>
-
-#include "ceres/cost_function.h"
-#include "ceres/parameter_block.h"
-#include "ceres/residual_block.h"
-#include "ceres/sized_cost_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// Routine to check if ResidualBlock::Evaluate for unary CostFunction
-// with one residual succeeds with true or dies.
-static void CheckEvaluation(const CostFunction& cost_function, bool is_good) {
-  double x = 1.0;
-  ParameterBlock parameter_block(&x, 1, -1);
-  std::vector<ParameterBlock*> parameter_blocks;
-  parameter_blocks.push_back(&parameter_block);
-
-  ResidualBlock residual_block(&cost_function, nullptr, parameter_blocks, -1);
-
-  std::unique_ptr<double[]> scratch(
-      new double[residual_block.NumScratchDoublesForEvaluate()]);
-
-  double cost;
-  double residuals;
-  double jacobian;
-  double* jacobians[] = {&jacobian};
-
-  EXPECT_EQ(residual_block.Evaluate(
-                true, &cost, &residuals, jacobians, scratch.get()),
-            is_good);
-}
-
-// A CostFunction that behaves normally, i.e., it computes numerically
-// valid residuals and jacobians.
-class GoodCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = 1;
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = 0.0;
-    }
-    return true;
-  }
-};
-
-// The following four CostFunctions simulate the different ways in
-// which user code can cause ResidualBlock::Evaluate to fail.
-class NoResidualUpdateCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    // Forget to update the residuals.
-    // residuals[0] = 1;
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = 0.0;
-    }
-    return true;
-  }
-};
-
-class NoJacobianUpdateCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = 1;
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      // Forget to update the jacobians.
-      // jacobians[0][0] = 0.0;
-    }
-    return true;
-  }
-};
-
-class BadResidualCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = std::numeric_limits<double>::infinity();
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = 0.0;
-    }
-    return true;
-  }
-};
-
-class BadJacobianCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = 1.0;
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = std::numeric_limits<double>::quiet_NaN();
-    }
-    return true;
-  }
-};
-
-// Note: It is preferable to write the below test as:
-//
-//  CheckEvaluation(GoodCostFunction(), true);
-//  CheckEvaluation(NoResidualUpdateCostFunction(), false);
-//  CheckEvaluation(NoJacobianUpdateCostFunction(), false);
-//  ...
-//
-// however, there is a bug in the version of GCC on Mac OS X we tested, which
-// requires the objects get put into local variables instead of getting
-// instantiated on the stack.
-TEST(ResidualBlockUtils, CheckAllCombinationsOfBadness) {
-  GoodCostFunction good_fun;
-  CheckEvaluation(good_fun, true);
-  NoResidualUpdateCostFunction no_residual;
-  CheckEvaluation(no_residual, false);
-  NoJacobianUpdateCostFunction no_jacobian;
-  CheckEvaluation(no_jacobian, false);
-  BadResidualCostFunction bad_residual;
-  CheckEvaluation(bad_residual, false);
-  BadJacobianCostFunction bad_jacobian;
-  CheckEvaluation(bad_jacobian, false);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/rotation_test.cc b/third_party/ceres/internal/ceres/rotation_test.cc
deleted file mode 100644
index f1ea071..0000000
--- a/third_party/ceres/internal/ceres/rotation_test.cc
+++ /dev/null
@@ -1,1927 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/rotation.h"
-
-#include <algorithm>
-#include <array>
-#include <cmath>
-#include <limits>
-#include <random>
-#include <string>
-#include <utility>
-
-#include "ceres/constants.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/euler_angles.h"
-#include "ceres/internal/export.h"
-#include "ceres/is_close.h"
-#include "ceres/jet.h"
-#include "ceres/stringprintf.h"
-#include "ceres/test_util.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-inline constexpr double kPi = constants::pi;
-const double kHalfSqrt2 = 0.707106781186547524401;
-
-// A tolerance value for floating-point comparisons.
-static double const kTolerance = std::numeric_limits<double>::epsilon() * 10;
-
-// Looser tolerance used for numerically unstable conversions.
-static double const kLooseTolerance = 1e-9;
-
-// Use as:
-// double quaternion[4];
-// EXPECT_THAT(quaternion, IsNormalizedQuaternion());
-MATCHER(IsNormalizedQuaternion, "") {
-  double norm2 =
-      arg[0] * arg[0] + arg[1] * arg[1] + arg[2] * arg[2] + arg[3] * arg[3];
-  if (fabs(norm2 - 1.0) > kTolerance) {
-    *result_listener << "squared norm is " << norm2;
-    return false;
-  }
-
-  return true;
-}
-
-// Use as:
-// double expected_quaternion[4];
-// double actual_quaternion[4];
-// EXPECT_THAT(actual_quaternion, IsNearQuaternion(expected_quaternion));
-MATCHER_P(IsNearQuaternion, expected, "") {
-  // Quaternions are equivalent upto a sign change. So we will compare
-  // both signs before declaring failure.
-  bool is_near = true;
-  // NOTE: near (and far) can be defined as macros on the Windows platform (for
-  // ancient pascal calling convention). Do not use these identifiers.
-  for (int i = 0; i < 4; i++) {
-    if (fabs(arg[i] - expected[i]) > kTolerance) {
-      is_near = false;
-      break;
-    }
-  }
-
-  if (is_near) {
-    return true;
-  }
-
-  is_near = true;
-  for (int i = 0; i < 4; i++) {
-    if (fabs(arg[i] + expected[i]) > kTolerance) {
-      is_near = false;
-      break;
-    }
-  }
-
-  if (is_near) {
-    return true;
-  }
-
-  // clang-format off
-  *result_listener << "expected : "
-                   << expected[0] << " "
-                   << expected[1] << " "
-                   << expected[2] << " "
-                   << expected[3] << " "
-                   << "actual : "
-                   << arg[0] << " "
-                   << arg[1] << " "
-                   << arg[2] << " "
-                   << arg[3];
-  // clang-format on
-  return false;
-}
-
-// Use as:
-// double expected_axis_angle[3];
-// double actual_axis_angle[3];
-// EXPECT_THAT(actual_axis_angle, IsNearAngleAxis(expected_axis_angle));
-MATCHER_P(IsNearAngleAxis, expected, "") {
-  Eigen::Vector3d a(arg[0], arg[1], arg[2]);
-  Eigen::Vector3d e(expected[0], expected[1], expected[2]);
-  const double e_norm = e.norm();
-
-  double delta_norm = std::numeric_limits<double>::max();
-  if (e_norm > 0) {
-    // Deal with the sign ambiguity near PI. Since the sign can flip,
-    // we take the smaller of the two differences.
-    if (fabs(e_norm - kPi) < kLooseTolerance) {
-      delta_norm = std::min((a - e).norm(), (a + e).norm()) / e_norm;
-    } else {
-      delta_norm = (a - e).norm() / e_norm;
-    }
-  } else {
-    delta_norm = a.norm();
-  }
-
-  if (delta_norm <= kLooseTolerance) {
-    return true;
-  }
-
-  // clang-format off
-  *result_listener << " arg:"
-                   << " " << arg[0]
-                   << " " << arg[1]
-                   << " " << arg[2]
-                   << " was expected to be:"
-                   << " " << expected[0]
-                   << " " << expected[1]
-                   << " " << expected[2];
-  // clang-format on
-  return false;
-}
-
-// Use as:
-// double matrix[9];
-// EXPECT_THAT(matrix, IsOrthonormal());
-MATCHER(IsOrthonormal, "") {
-  for (int c1 = 0; c1 < 3; c1++) {
-    for (int c2 = 0; c2 < 3; c2++) {
-      double v = 0;
-      for (int i = 0; i < 3; i++) {
-        v += arg[i + 3 * c1] * arg[i + 3 * c2];
-      }
-      double expected = (c1 == c2) ? 1 : 0;
-      if (fabs(expected - v) > kTolerance) {
-        *result_listener << "Columns " << c1 << " and " << c2
-                         << " should have dot product " << expected
-                         << " but have " << v;
-        return false;
-      }
-    }
-  }
-
-  return true;
-}
-
-// Use as:
-// double matrix1[9];
-// double matrix2[9];
-// EXPECT_THAT(matrix1, IsNear3x3Matrix(matrix2));
-MATCHER_P(IsNear3x3Matrix, expected, "") {
-  for (int i = 0; i < 9; i++) {
-    if (fabs(arg[i] - expected[i]) > kTolerance) {
-      *result_listener << "component " << i << " should be " << expected[i];
-      return false;
-    }
-  }
-
-  return true;
-}
-
-// Transforms a zero axis/angle to a quaternion.
-TEST(Rotation, ZeroAngleAxisToQuaternion) {
-  double axis_angle[3] = {0, 0, 0};
-  double quaternion[4];
-  double expected[4] = {1, 0, 0, 0};
-  AngleAxisToQuaternion(axis_angle, quaternion);
-  EXPECT_THAT(quaternion, IsNormalizedQuaternion());
-  EXPECT_THAT(quaternion, IsNearQuaternion(expected));
-}
-
-// Test that exact conversion works for small angles.
-TEST(Rotation, SmallAngleAxisToQuaternion) {
-  // Small, finite value to test.
-  double theta = 1.0e-2;
-  double axis_angle[3] = {theta, 0, 0};
-  double quaternion[4];
-  double expected[4] = {cos(theta / 2), sin(theta / 2.0), 0, 0};
-  AngleAxisToQuaternion(axis_angle, quaternion);
-  EXPECT_THAT(quaternion, IsNormalizedQuaternion());
-  EXPECT_THAT(quaternion, IsNearQuaternion(expected));
-}
-
-// Test that approximate conversion works for very small angles.
-TEST(Rotation, TinyAngleAxisToQuaternion) {
-  // Very small value that could potentially cause underflow.
-  double theta = pow(std::numeric_limits<double>::min(), 0.75);
-  double axis_angle[3] = {theta, 0, 0};
-  double quaternion[4];
-  double expected[4] = {cos(theta / 2), sin(theta / 2.0), 0, 0};
-  AngleAxisToQuaternion(axis_angle, quaternion);
-  EXPECT_THAT(quaternion, IsNormalizedQuaternion());
-  EXPECT_THAT(quaternion, IsNearQuaternion(expected));
-}
-
-// Transforms a rotation by pi/2 around X to a quaternion.
-TEST(Rotation, XRotationToQuaternion) {
-  double axis_angle[3] = {kPi / 2, 0, 0};
-  double quaternion[4];
-  double expected[4] = {kHalfSqrt2, kHalfSqrt2, 0, 0};
-  AngleAxisToQuaternion(axis_angle, quaternion);
-  EXPECT_THAT(quaternion, IsNormalizedQuaternion());
-  EXPECT_THAT(quaternion, IsNearQuaternion(expected));
-}
-
-// Transforms a unit quaternion to an axis angle.
-TEST(Rotation, UnitQuaternionToAngleAxis) {
-  double quaternion[4] = {1, 0, 0, 0};
-  double axis_angle[3];
-  double expected[3] = {0, 0, 0};
-  QuaternionToAngleAxis(quaternion, axis_angle);
-  EXPECT_THAT(axis_angle, IsNearAngleAxis(expected));
-}
-
-// Transforms a quaternion that rotates by pi about the Y axis to an axis angle.
-TEST(Rotation, YRotationQuaternionToAngleAxis) {
-  double quaternion[4] = {0, 0, 1, 0};
-  double axis_angle[3];
-  double expected[3] = {0, kPi, 0};
-  QuaternionToAngleAxis(quaternion, axis_angle);
-  EXPECT_THAT(axis_angle, IsNearAngleAxis(expected));
-}
-
-// Transforms a quaternion that rotates by pi/3 about the Z axis to an axis
-// angle.
-TEST(Rotation, ZRotationQuaternionToAngleAxis) {
-  double quaternion[4] = {sqrt(3) / 2, 0, 0, 0.5};
-  double axis_angle[3];
-  double expected[3] = {0, 0, kPi / 3};
-  QuaternionToAngleAxis(quaternion, axis_angle);
-  EXPECT_THAT(axis_angle, IsNearAngleAxis(expected));
-}
-
-// Test that exact conversion works for small angles.
-TEST(Rotation, SmallQuaternionToAngleAxis) {
-  // Small, finite value to test.
-  double theta = 1.0e-2;
-  double quaternion[4] = {cos(theta / 2), sin(theta / 2.0), 0, 0};
-  double axis_angle[3];
-  double expected[3] = {theta, 0, 0};
-  QuaternionToAngleAxis(quaternion, axis_angle);
-  EXPECT_THAT(axis_angle, IsNearAngleAxis(expected));
-}
-
-// Test that approximate conversion works for very small angles.
-TEST(Rotation, TinyQuaternionToAngleAxis) {
-  // Very small value that could potentially cause underflow.
-  double theta = pow(std::numeric_limits<double>::min(), 0.75);
-  double quaternion[4] = {cos(theta / 2), sin(theta / 2.0), 0, 0};
-  double axis_angle[3];
-  double expected[3] = {theta, 0, 0};
-  QuaternionToAngleAxis(quaternion, axis_angle);
-  EXPECT_THAT(axis_angle, IsNearAngleAxis(expected));
-}
-
-TEST(Rotation, QuaternionToAngleAxisAngleIsLessThanPi) {
-  double quaternion[4];
-  double angle_axis[3];
-
-  const double half_theta = 0.75 * kPi;
-
-  quaternion[0] = cos(half_theta);
-  quaternion[1] = 1.0 * sin(half_theta);
-  quaternion[2] = 0.0;
-  quaternion[3] = 0.0;
-  QuaternionToAngleAxis(quaternion, angle_axis);
-  const double angle = std::hypot(angle_axis[0], angle_axis[1], angle_axis[2]);
-  EXPECT_LE(angle, kPi);
-}
-
-static constexpr int kNumTrials = 10000;
-
-// Takes a bunch of random axis/angle values, converts them to quaternions,
-// and back again.
-TEST(Rotation, AngleAxisToQuaterionAndBack) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  for (int i = 0; i < kNumTrials; i++) {
-    double axis_angle[3];
-    // Make an axis by choosing three random numbers in [-1, 1) and
-    // normalizing.
-    double norm = 0;
-    for (double& coeff : axis_angle) {
-      coeff = uniform_distribution(prng);
-      norm += coeff * coeff;
-    }
-    norm = sqrt(norm);
-
-    // Angle in [-pi, pi).
-    double theta = uniform_distribution(
-        prng, std::uniform_real_distribution<double>::param_type{-kPi, kPi});
-    for (double& coeff : axis_angle) {
-      coeff = coeff * theta / norm;
-    }
-
-    double quaternion[4];
-    double round_trip[3];
-    // We use ASSERTs here because if there's one failure, there are
-    // probably many and spewing a million failures doesn't make anyone's
-    // day.
-    AngleAxisToQuaternion(axis_angle, quaternion);
-    ASSERT_THAT(quaternion, IsNormalizedQuaternion());
-    QuaternionToAngleAxis(quaternion, round_trip);
-    ASSERT_THAT(round_trip, IsNearAngleAxis(axis_angle));
-  }
-}
-
-// Takes a bunch of random quaternions, converts them to axis/angle,
-// and back again.
-TEST(Rotation, QuaterionToAngleAxisAndBack) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  for (int i = 0; i < kNumTrials; i++) {
-    double quaternion[4];
-    // Choose four random numbers in [-1, 1) and normalize.
-    double norm = 0;
-    for (double& coeff : quaternion) {
-      coeff = uniform_distribution(prng);
-      norm += coeff * coeff;
-    }
-    norm = sqrt(norm);
-
-    for (double& coeff : quaternion) {
-      coeff = coeff / norm;
-    }
-
-    double axis_angle[3];
-    double round_trip[4];
-    QuaternionToAngleAxis(quaternion, axis_angle);
-    AngleAxisToQuaternion(axis_angle, round_trip);
-    ASSERT_THAT(round_trip, IsNormalizedQuaternion());
-    ASSERT_THAT(round_trip, IsNearQuaternion(quaternion));
-  }
-}
-
-// Transforms a zero axis/angle to a rotation matrix.
-TEST(Rotation, ZeroAngleAxisToRotationMatrix) {
-  double axis_angle[3] = {0, 0, 0};
-  double matrix[9];
-  double expected[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1};
-  AngleAxisToRotationMatrix(axis_angle, matrix);
-  EXPECT_THAT(matrix, IsOrthonormal());
-  EXPECT_THAT(matrix, IsNear3x3Matrix(expected));
-}
-
-TEST(Rotation, NearZeroAngleAxisToRotationMatrix) {
-  double axis_angle[3] = {1e-24, 2e-24, 3e-24};
-  double matrix[9];
-  double expected[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1};
-  AngleAxisToRotationMatrix(axis_angle, matrix);
-  EXPECT_THAT(matrix, IsOrthonormal());
-  EXPECT_THAT(matrix, IsNear3x3Matrix(expected));
-}
-
-// Transforms a rotation by pi/2 around X to a rotation matrix and back.
-TEST(Rotation, XRotationToRotationMatrix) {
-  double axis_angle[3] = {kPi / 2, 0, 0};
-  double matrix[9];
-  // The rotation matrices are stored column-major.
-  double expected[9] = {1, 0, 0, 0, 0, 1, 0, -1, 0};
-  AngleAxisToRotationMatrix(axis_angle, matrix);
-  EXPECT_THAT(matrix, IsOrthonormal());
-  EXPECT_THAT(matrix, IsNear3x3Matrix(expected));
-  double round_trip[3];
-  RotationMatrixToAngleAxis(matrix, round_trip);
-  EXPECT_THAT(round_trip, IsNearAngleAxis(axis_angle));
-}
-
-// Transforms an axis angle that rotates by pi about the Y axis to a
-// rotation matrix and back.
-TEST(Rotation, YRotationToRotationMatrix) {
-  double axis_angle[3] = {0, kPi, 0};
-  double matrix[9];
-  double expected[9] = {-1, 0, 0, 0, 1, 0, 0, 0, -1};
-  AngleAxisToRotationMatrix(axis_angle, matrix);
-  EXPECT_THAT(matrix, IsOrthonormal());
-  EXPECT_THAT(matrix, IsNear3x3Matrix(expected));
-
-  double round_trip[3];
-  RotationMatrixToAngleAxis(matrix, round_trip);
-  EXPECT_THAT(round_trip, IsNearAngleAxis(axis_angle));
-}
-
-TEST(Rotation, NearPiAngleAxisRoundTrip) {
-  double in_axis_angle[3];
-  double matrix[9];
-  double out_axis_angle[3];
-
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  for (int i = 0; i < kNumTrials; i++) {
-    // Make an axis by choosing three random numbers in [-1, 1) and
-    // normalizing.
-    double norm = 0;
-    for (double& coeff : in_axis_angle) {
-      coeff = uniform_distribution(prng);
-      norm += coeff * coeff;
-    }
-    norm = sqrt(norm);
-
-    // Angle in [pi - kMaxSmallAngle, pi).
-    constexpr double kMaxSmallAngle = 1e-8;
-    double theta =
-        uniform_distribution(prng,
-                             std::uniform_real_distribution<double>::param_type{
-                                 kPi - kMaxSmallAngle, kPi});
-
-    for (double& coeff : in_axis_angle) {
-      coeff *= (theta / norm);
-    }
-    AngleAxisToRotationMatrix(in_axis_angle, matrix);
-    RotationMatrixToAngleAxis(matrix, out_axis_angle);
-    EXPECT_THAT(in_axis_angle, IsNearAngleAxis(out_axis_angle));
-  }
-}
-
-TEST(Rotation, AtPiAngleAxisRoundTrip) {
-  // A rotation of kPi about the X axis;
-  // clang-format off
-  static constexpr double kMatrix[3][3] = {
-    {1.0,  0.0,  0.0},
-    {0.0,  -1.0,  0.0},
-    {0.0,  0.0,  -1.0}
-  };
-  // clang-format on
-
-  double in_matrix[9];
-  // Fill it from kMatrix in col-major order.
-  for (int j = 0, k = 0; j < 3; ++j) {
-    for (int i = 0; i < 3; ++i, ++k) {
-      in_matrix[k] = kMatrix[i][j];
-    }
-  }
-
-  const double expected_axis_angle[3] = {kPi, 0, 0};
-
-  double out_matrix[9];
-  double axis_angle[3];
-  RotationMatrixToAngleAxis(in_matrix, axis_angle);
-  AngleAxisToRotationMatrix(axis_angle, out_matrix);
-
-  LOG(INFO) << "AngleAxis = " << axis_angle[0] << " " << axis_angle[1] << " "
-            << axis_angle[2];
-  LOG(INFO) << "Expected AngleAxis = " << kPi << " 0 0";
-  double out_rowmajor[3][3];
-  for (int j = 0, k = 0; j < 3; ++j) {
-    for (int i = 0; i < 3; ++i, ++k) {
-      out_rowmajor[i][j] = out_matrix[k];
-    }
-  }
-  LOG(INFO) << "Rotation:";
-  LOG(INFO) << "EXPECTED        |        ACTUAL";
-  for (int i = 0; i < 3; ++i) {
-    std::string line;
-    for (int j = 0; j < 3; ++j) {
-      StringAppendF(&line, "%g ", kMatrix[i][j]);
-    }
-    line += "         |        ";
-    for (int j = 0; j < 3; ++j) {
-      StringAppendF(&line, "%g ", out_rowmajor[i][j]);
-    }
-    LOG(INFO) << line;
-  }
-
-  EXPECT_THAT(axis_angle, IsNearAngleAxis(expected_axis_angle));
-  EXPECT_THAT(out_matrix, IsNear3x3Matrix(in_matrix));
-}
-
-// Transforms an axis angle that rotates by pi/3 about the Z axis to a
-// rotation matrix.
-TEST(Rotation, ZRotationToRotationMatrix) {
-  double axis_angle[3] = {0, 0, kPi / 3};
-  double matrix[9];
-  // This is laid-out row-major on the screen but is actually stored
-  // column-major.
-  // clang-format off
-  double expected[9] = { 0.5, sqrt(3) / 2, 0,   // Column 1
-                         -sqrt(3) / 2, 0.5, 0,  // Column 2
-                         0, 0, 1 };             // Column 3
-  // clang-format on
-  AngleAxisToRotationMatrix(axis_angle, matrix);
-  EXPECT_THAT(matrix, IsOrthonormal());
-  EXPECT_THAT(matrix, IsNear3x3Matrix(expected));
-  double round_trip[3];
-  RotationMatrixToAngleAxis(matrix, round_trip);
-  EXPECT_THAT(round_trip, IsNearAngleAxis(axis_angle));
-}
-
-// Takes a bunch of random axis/angle values, converts them to rotation
-// matrices, and back again.
-TEST(Rotation, AngleAxisToRotationMatrixAndBack) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  for (int i = 0; i < kNumTrials; i++) {
-    double axis_angle[3];
-    // Make an axis by choosing three random numbers in [-1, 1) and
-    // normalizing.
-    double norm = 0;
-    for (double& i : axis_angle) {
-      i = uniform_distribution(prng);
-      norm += i * i;
-    }
-    norm = sqrt(norm);
-
-    // Angle in [-pi, pi).
-    double theta = uniform_distribution(
-        prng, std::uniform_real_distribution<double>::param_type{-kPi, kPi});
-    for (double& i : axis_angle) {
-      i = i * theta / norm;
-    }
-
-    double matrix[9];
-    double round_trip[3];
-    AngleAxisToRotationMatrix(axis_angle, matrix);
-    ASSERT_THAT(matrix, IsOrthonormal());
-    RotationMatrixToAngleAxis(matrix, round_trip);
-
-    for (int i = 0; i < 3; ++i) {
-      EXPECT_NEAR(round_trip[i], axis_angle[i], kLooseTolerance);
-    }
-  }
-}
-
-// Takes a bunch of random axis/angle values near zero, converts them
-// to rotation matrices, and back again.
-TEST(Rotation, AngleAxisToRotationMatrixAndBackNearZero) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  for (int i = 0; i < kNumTrials; i++) {
-    double axis_angle[3];
-    // Make an axis by choosing three random numbers in [-1, 1) and
-    // normalizing.
-    double norm = 0;
-    for (double& i : axis_angle) {
-      i = uniform_distribution(prng);
-      norm += i * i;
-    }
-    norm = sqrt(norm);
-
-    // Tiny theta.
-    constexpr double kScale = 1e-16;
-    double theta =
-        uniform_distribution(prng,
-                             std::uniform_real_distribution<double>::param_type{
-                                 -kScale * kPi, kScale * kPi});
-    for (double& i : axis_angle) {
-      i = i * theta / norm;
-    }
-
-    double matrix[9];
-    double round_trip[3];
-    AngleAxisToRotationMatrix(axis_angle, matrix);
-    ASSERT_THAT(matrix, IsOrthonormal());
-    RotationMatrixToAngleAxis(matrix, round_trip);
-
-    for (int i = 0; i < 3; ++i) {
-      EXPECT_NEAR(
-          round_trip[i], axis_angle[i], std::numeric_limits<double>::epsilon());
-    }
-  }
-}
-
-// Transposes a 3x3 matrix.
-static void Transpose3x3(double m[9]) {
-  std::swap(m[1], m[3]);
-  std::swap(m[2], m[6]);
-  std::swap(m[5], m[7]);
-}
-
-// Convert Euler angles from radians to degrees.
-static void ToDegrees(double euler_angles[3]) {
-  for (int i = 0; i < 3; ++i) {
-    euler_angles[i] *= 180.0 / kPi;
-  }
-}
-
-// Compare the 3x3 rotation matrices produced by the axis-angle
-// rotation 'aa' and the Euler angle rotation 'ea' (in radians).
-static void CompareEulerToAngleAxis(double aa[3], double ea[3]) {
-  double aa_matrix[9];
-  AngleAxisToRotationMatrix(aa, aa_matrix);
-  Transpose3x3(aa_matrix);  // Column to row major order.
-
-  double ea_matrix[9];
-  ToDegrees(ea);  // Radians to degrees.
-  const int kRowStride = 3;
-  EulerAnglesToRotationMatrix(ea, kRowStride, ea_matrix);
-
-  EXPECT_THAT(aa_matrix, IsOrthonormal());
-  EXPECT_THAT(ea_matrix, IsOrthonormal());
-  EXPECT_THAT(ea_matrix, IsNear3x3Matrix(aa_matrix));
-}
-
-// Test with rotation axis along the x/y/z axes.
-// Also test zero rotation.
-TEST(EulerAnglesToRotationMatrix, OnAxis) {
-  int n_tests = 0;
-  for (double x = -1.0; x <= 1.0; x += 1.0) {
-    for (double y = -1.0; y <= 1.0; y += 1.0) {
-      for (double z = -1.0; z <= 1.0; z += 1.0) {
-        if ((x != 0) + (y != 0) + (z != 0) > 1) continue;
-        double axis_angle[3] = {x, y, z};
-        double euler_angles[3] = {x, y, z};
-        CompareEulerToAngleAxis(axis_angle, euler_angles);
-        ++n_tests;
-      }
-    }
-  }
-  CHECK_EQ(7, n_tests);
-}
-
-// Test that a random rotation produces an orthonormal rotation
-// matrix.
-TEST(EulerAnglesToRotationMatrix, IsOrthonormal) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-180.0, 180.0};
-  for (int trial = 0; trial < kNumTrials; ++trial) {
-    double euler_angles_degrees[3];
-    for (double& euler_angles_degree : euler_angles_degrees) {
-      euler_angles_degree = uniform_distribution(prng);
-    }
-    double rotation_matrix[9];
-    EulerAnglesToRotationMatrix(euler_angles_degrees, 3, rotation_matrix);
-    EXPECT_THAT(rotation_matrix, IsOrthonormal());
-  }
-}
-
-static double sample_euler[][3] = {{0.5235988, 1.047198, 0.7853982},
-                                   {0.5235988, 1.047198, 0.5235988},
-                                   {0.7853982, 0.5235988, 1.047198}};
-
-// ZXY Intrinsic Euler Angle to rotation matrix conversion test from
-// scipy/spatial/transform/test/test_rotation.py
-TEST(EulerAngles, IntrinsicEulerSequence312ToRotationMatrixCanned) {
-  // clang-format off
-  double const expected[][9] =
-      {{0.306186083320088, -0.249999816228639,  0.918558748402491,
-        0.883883627842492,  0.433012359189203, -0.176776777947208,
-       -0.353553128699351,  0.866025628186053,  0.353553102817459},
-      { 0.533493553519713, -0.249999816228639,  0.808012821828067,
-        0.808012821828067,  0.433012359189203, -0.399519181705765,
-       -0.249999816228639,  0.866025628186053,  0.433012359189203},
-      { 0.047366781483451, -0.612372449482883,  0.789149143778432,
-        0.659739427618959,  0.612372404654096,  0.435596057905909,
-       -0.750000183771249,  0.500000021132493,  0.433012359189203}};
-  // clang-format on
-
-  for (int i = 0; i < 3; ++i) {
-    double results[9];
-    EulerAnglesToRotation<IntrinsicZXY>(sample_euler[i], results);
-    ASSERT_THAT(results, IsNear3x3Matrix(expected[i]));
-  }
-}
-
-// ZXY Extrinsic Euler Angle to rotation matrix conversion test from
-// scipy/spatial/transform/test/test_rotation.py
-TEST(EulerAngles, ExtrinsicEulerSequence312ToRotationMatrix) {
-  // clang-format off
-  double const expected[][9] =
-      {{0.918558725988105,  0.176776842651999,  0.353553128699352,
-        0.249999816228639,  0.433012359189203, -0.866025628186053,
-       -0.306186150563275,  0.883883614901527,  0.353553102817459},
-      { 0.966506404215301, -0.058012606358071,  0.249999816228639,
-        0.249999816228639,  0.433012359189203, -0.866025628186053,
-       -0.058012606358071,  0.899519223970752,  0.433012359189203},
-      { 0.659739424151467, -0.047366829779744,  0.750000183771249,
-        0.612372449482883,  0.612372404654096, -0.500000021132493,
-       -0.435596000136163,  0.789149175666285,  0.433012359189203}};
-  // clang-format on
-
-  for (int i = 0; i < 3; ++i) {
-    double results[9];
-    EulerAnglesToRotation<ExtrinsicZXY>(sample_euler[i], results);
-    ASSERT_THAT(results, IsNear3x3Matrix(expected[i]));
-  }
-}
-
-// ZXZ Intrinsic Euler Angle to rotation matrix conversion test from
-// scipy/spatial/transform/test/test_rotation.py
-TEST(EulerAngles, IntrinsicEulerSequence313ToRotationMatrix) {
-  // clang-format off
-  double expected[][9] =
-      {{0.435595832832961, -0.789149008363071,  0.433012832394307,
-        0.659739379322704, -0.047367454164077, -0.750000183771249,
-        0.612372616786097,  0.612372571957297,  0.499999611324802},
-      { 0.625000065470068, -0.649518902838302,  0.433012832394307,
-        0.649518902838302,  0.124999676794869, -0.750000183771249,
-        0.433012832394307,  0.750000183771249,  0.499999611324802},
-      {-0.176777132429787, -0.918558558684756,  0.353553418477159,
-        0.883883325123719, -0.306186652473014, -0.353553392595246,
-        0.433012832394307,  0.249999816228639,  0.866025391583588}};
-  // clang-format on
-  for (int i = 0; i < 3; ++i) {
-    double results[9];
-    EulerAnglesToRotation<IntrinsicZXZ>(sample_euler[i], results);
-    ASSERT_THAT(results, IsNear3x3Matrix(expected[i]));
-  }
-}
-
-// ZXZ Extrinsic Euler Angle to rotation matrix conversion test from
-// scipy/spatial/transform/test/test_rotation.py
-TEST(EulerAngles, ExtrinsicEulerSequence313ToRotationMatrix) {
-  // clang-format off
-  double expected[][9] =
-      {{0.435595832832961, -0.659739379322704,  0.612372616786097,
-        0.789149008363071, -0.047367454164077, -0.612372571957297,
-        0.433012832394307,  0.750000183771249,  0.499999611324802},
-      { 0.625000065470068, -0.649518902838302,  0.433012832394307,
-        0.649518902838302,  0.124999676794869, -0.750000183771249,
-        0.433012832394307,  0.750000183771249,  0.499999611324802},
-      {-0.176777132429787, -0.883883325123719,  0.433012832394307,
-        0.918558558684756, -0.306186652473014, -0.249999816228639,
-        0.353553418477159,  0.353553392595246,  0.866025391583588}};
-  // clang-format on
-  for (int i = 0; i < 3; ++i) {
-    double results[9];
-    EulerAnglesToRotation<ExtrinsicZXZ>(sample_euler[i], results);
-    ASSERT_THAT(results, IsNear3x3Matrix(expected[i]));
-  }
-}
-
-template <typename T>
-struct GeneralEulerAngles : public ::testing::Test {
- public:
-  static constexpr bool kIsParityOdd = T::kIsParityOdd;
-  static constexpr bool kIsProperEuler = T::kIsProperEuler;
-  static constexpr bool kIsIntrinsic = T::kIsIntrinsic;
-
-  template <typename URBG>
-  static void RandomEulerAngles(double* euler, URBG& prng) {
-    using ParamType = std::uniform_real_distribution<double>::param_type;
-    std::uniform_real_distribution<double> uniform_distribution{-kPi, kPi};
-    // Euler angles should be in
-    //   [-pi,pi) x [0,pi) x [-pi,pi])
-    // if the outer axes are repeated and
-    //   [-pi,pi) x [-pi/2,pi/2) x [-pi,pi])
-    // otherwise
-    euler[0] = uniform_distribution(prng);
-    euler[2] = uniform_distribution(prng);
-    if constexpr (kIsProperEuler) {
-      euler[1] = uniform_distribution(prng, ParamType{0, kPi});
-    } else {
-      euler[1] = uniform_distribution(prng, ParamType{-kPi / 2, kPi / 2});
-    }
-  }
-
-  static void CheckPrincipalRotationMatrixProduct(double angles[3]) {
-    // Convert Shoemake's Euler angle convention into 'apparent' rotation axes
-    // sequences, i.e. the alphabetic code (ZYX, ZYZ, etc.) indicates in what
-    // sequence rotations about different axes are applied
-    constexpr int i = T::kAxes[0];
-    constexpr int j = (3 + (kIsParityOdd ? (i - 1) % 3 : (i + 1) % 3)) % 3;
-    constexpr int k = kIsProperEuler ? i : 3 ^ i ^ j;
-    constexpr auto kSeq =
-        kIsIntrinsic ? std::array{k, j, i} : std::array{i, j, k};
-
-    double aa_matrix[9];
-    Eigen::Map<Eigen::Matrix3d, 0, Eigen::Stride<1, 3>> aa(aa_matrix);
-    aa.setIdentity();
-    for (int i = 0; i < 3; ++i) {
-      Eigen::Vector3d angle_axis;
-      if constexpr (kIsIntrinsic) {
-        angle_axis = -angles[i] * Eigen::Vector3d::Unit(kSeq[i]);
-      } else {
-        angle_axis = angles[i] * Eigen::Vector3d::Unit(kSeq[i]);
-      }
-      Eigen::Matrix3d m;
-      AngleAxisToRotationMatrix(angle_axis.data(), m.data());
-      aa = m * aa;
-    }
-    if constexpr (kIsIntrinsic) {
-      aa.transposeInPlace();
-    }
-
-    double ea_matrix[9];
-    EulerAnglesToRotation<T>(angles, ea_matrix);
-
-    EXPECT_THAT(aa_matrix, IsOrthonormal());
-    EXPECT_THAT(ea_matrix, IsOrthonormal());
-    EXPECT_THAT(ea_matrix, IsNear3x3Matrix(aa_matrix));
-  }
-};
-
-using EulerSystemList = ::testing::Types<ExtrinsicXYZ,
-                                         ExtrinsicXYX,
-                                         ExtrinsicXZY,
-                                         ExtrinsicXZX,
-                                         ExtrinsicYZX,
-                                         ExtrinsicYZY,
-                                         ExtrinsicYXZ,
-                                         ExtrinsicYXY,
-                                         ExtrinsicZXY,
-                                         ExtrinsicZXZ,
-                                         ExtrinsicZYX,
-                                         ExtrinsicZYZ,
-                                         IntrinsicZYX,
-                                         IntrinsicXYX,
-                                         IntrinsicYZX,
-                                         IntrinsicXZX,
-                                         IntrinsicXZY,
-                                         IntrinsicYZY,
-                                         IntrinsicZXY,
-                                         IntrinsicYXY,
-                                         IntrinsicYXZ,
-                                         IntrinsicZXZ,
-                                         IntrinsicXYZ,
-                                         IntrinsicZYZ>;
-TYPED_TEST_SUITE(GeneralEulerAngles, EulerSystemList);
-
-TYPED_TEST(GeneralEulerAngles, EulerAnglesToRotationMatrixAndBack) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  for (int i = 0; i < kNumTrials; ++i) {
-    double euler[3];
-    TestFixture::RandomEulerAngles(euler, prng);
-
-    double matrix[9];
-    double round_trip[3];
-    EulerAnglesToRotation<TypeParam>(euler, matrix);
-    ASSERT_THAT(matrix, IsOrthonormal());
-    RotationMatrixToEulerAngles<TypeParam>(matrix, round_trip);
-    for (int j = 0; j < 3; ++j)
-      ASSERT_NEAR(euler[j], round_trip[j], 128.0 * kLooseTolerance);
-  }
-}
-
-// Check that the rotation matrix converted from euler angles is equivalent to
-// product of three principal axis rotation matrices
-//     R_euler = R_a2(euler_2) * R_a1(euler_1) * R_a0(euler_0)
-TYPED_TEST(GeneralEulerAngles, PrincipalRotationMatrixProduct) {
-  std::mt19937 prng;
-  double euler[3];
-  for (int i = 0; i < kNumTrials; ++i) {
-    TestFixture::RandomEulerAngles(euler, prng);
-    TestFixture::CheckPrincipalRotationMatrixProduct(euler);
-  }
-}
-
-// Gimbal lock (euler[1] == +/-pi) handling test. If a rotation matrix
-// represents a gimbal-locked configuration, then converting this rotation
-// matrix to euler angles and back must produce the same rotation matrix.
-//
-// From scipy/spatial/transform/test/test_rotation.py, but additionally covers
-// gimbal lock handling for proper euler angles, which scipy appears to fail to
-// do properly.
-TYPED_TEST(GeneralEulerAngles, GimbalLocked) {
-  constexpr auto kBoundaryAngles = TestFixture::kIsProperEuler
-                                       ? std::array{0.0, kPi}
-                                       : std::array{-kPi / 2, kPi / 2};
-  constexpr double gimbal_locked_configurations[4][3] = {
-      {0.78539816, kBoundaryAngles[1], 0.61086524},
-      {0.61086524, kBoundaryAngles[0], 0.34906585},
-      {0.61086524, kBoundaryAngles[1], 0.43633231},
-      {0.43633231, kBoundaryAngles[0], 0.26179939}};
-  double angle_estimates[3];
-  double mat_expected[9];
-  double mat_estimated[9];
-  for (const auto& euler_angles : gimbal_locked_configurations) {
-    EulerAnglesToRotation<TypeParam>(euler_angles, mat_expected);
-    RotationMatrixToEulerAngles<TypeParam>(mat_expected, angle_estimates);
-    EulerAnglesToRotation<TypeParam>(angle_estimates, mat_estimated);
-    ASSERT_THAT(mat_expected, IsNear3x3Matrix(mat_estimated));
-  }
-}
-
-// Tests using Jets for specific behavior involving auto differentiation
-// near singularity points.
-
-using J3 = Jet<double, 3>;
-using J4 = Jet<double, 4>;
-
-namespace {
-
-// Converts an array of N real numbers (doubles) to an array of jets
-template <int N>
-void ArrayToArrayOfJets(double const* const src, Jet<double, N>* dst) {
-  for (int i = 0; i < N; ++i) {
-    dst[i] = Jet<double, N>(src[i], i);
-  }
-}
-
-// Generically initializes a Jet with type T and a N-dimensional dual part
-// N is explicitly given (instead of inferred from sizeof...(Ts)) so that the
-// dual part can be initialized from Eigen expressions
-template <int N, typename T, typename... Ts>
-Jet<T, N> MakeJet(T a, const T& v0, Ts&&... v) {
-  Jet<T, N> j;
-  j.a = a;                                  // Real part
-  ((j.v << v0), ..., std::forward<Ts>(v));  // Fill dual part with N components
-  return j;
-}
-
-J3 MakeJ3(double a, double v0, double v1, double v2) {
-  J3 j;
-  j.a = a;
-  j.v[0] = v0;
-  j.v[1] = v1;
-  j.v[2] = v2;
-  return j;
-}
-
-J4 MakeJ4(double a, double v0, double v1, double v2, double v3) {
-  J4 j;
-  j.a = a;
-  j.v[0] = v0;
-  j.v[1] = v1;
-  j.v[2] = v2;
-  j.v[3] = v3;
-  return j;
-}
-
-}  // namespace
-
-// Use EXPECT_THAT(x, testing::PointWise(JetClose(prec), y); to achieve Jet
-// array comparison
-MATCHER_P(JetClose, relative_precision, "") {
-  using internal::IsClose;
-  using LHSJetType = std::remove_reference_t<std::tuple_element_t<0, arg_type>>;
-  using RHSJetType = std::remove_reference_t<std::tuple_element_t<1, arg_type>>;
-
-  constexpr int kDualPartDimension = LHSJetType::DIMENSION;
-  static_assert(
-      kDualPartDimension == RHSJetType::DIMENSION,
-      "Can only compare Jets with dual parts having equal dimensions");
-  auto&& [x, y] = arg;
-  double relative_error;
-  double absolute_error;
-  if (!IsClose(
-          x.a, y.a, relative_precision, &relative_error, &absolute_error)) {
-    *result_listener << "Real part mismatch: x.a = " << x.a
-                     << " and y.a = " << y.a
-                     << " where the relative error between them is "
-                     << relative_error
-                     << " and the absolute error between them is "
-                     << absolute_error;
-    return false;
-  }
-  for (int i = 0; i < kDualPartDimension; i++) {
-    if (!IsClose(x.v[i],
-                 y.v[i],
-                 relative_precision,
-                 &relative_error,
-                 &absolute_error)) {
-      *result_listener << "Dual part mismatch: x.v[" << i << "] = " << x.v[i]
-                       << " and y.v[" << i << "] = " << y.v[i]
-                       << " where the relative error between them is "
-                       << relative_error
-                       << " and the absolute error between them is "
-                       << absolute_error;
-      return false;
-    }
-  }
-  return true;
-}
-
-// Log-10 of a value well below machine precision.
-static const int kSmallTinyCutoff = static_cast<int>(
-    2 * log(std::numeric_limits<double>::epsilon()) / log(10.0));
-
-// Log-10 of a value just below values representable by double.
-static const int kTinyZeroLimit =
-    static_cast<int>(1 + log(std::numeric_limits<double>::min()) / log(10.0));
-
-// Test that exact conversion works for small angles when jets are used.
-TEST(Rotation, SmallAngleAxisToQuaternionForJets) {
-  // Examine small x rotations that are still large enough
-  // to be well within the range represented by doubles.
-  for (int i = -2; i >= kSmallTinyCutoff; i--) {
-    double theta = pow(10.0, i);
-    J3 axis_angle[3] = {J3(theta, 0), J3(0, 1), J3(0, 2)};
-    J3 quaternion[4];
-    J3 expected[4] = {
-        MakeJ3(cos(theta / 2), -sin(theta / 2) / 2, 0, 0),
-        MakeJ3(sin(theta / 2), cos(theta / 2) / 2, 0, 0),
-        MakeJ3(0, 0, sin(theta / 2) / theta, 0),
-        MakeJ3(0, 0, 0, sin(theta / 2) / theta),
-    };
-    AngleAxisToQuaternion(axis_angle, quaternion);
-    EXPECT_THAT(quaternion, testing::Pointwise(JetClose(kTolerance), expected));
-  }
-}
-
-// Test that conversion works for very small angles when jets are used.
-TEST(Rotation, TinyAngleAxisToQuaternionForJets) {
-  // Examine tiny x rotations that extend all the way to where
-  // underflow occurs.
-  for (int i = kSmallTinyCutoff; i >= kTinyZeroLimit; i--) {
-    double theta = pow(10.0, i);
-    J3 axis_angle[3] = {J3(theta, 0), J3(0, 1), J3(0, 2)};
-    J3 quaternion[4];
-    // To avoid loss of precision in the test itself,
-    // a finite expansion is used here, which will
-    // be exact up to machine precision for the test values used.
-    J3 expected[4] = {
-        MakeJ3(1.0, 0, 0, 0),
-        MakeJ3(0, 0.5, 0, 0),
-        MakeJ3(0, 0, 0.5, 0),
-        MakeJ3(0, 0, 0, 0.5),
-    };
-    AngleAxisToQuaternion(axis_angle, quaternion);
-    EXPECT_THAT(quaternion, testing::Pointwise(JetClose(kTolerance), expected));
-  }
-}
-
-// Test that derivatives are correct for zero rotation.
-TEST(Rotation, ZeroAngleAxisToQuaternionForJets) {
-  J3 axis_angle[3] = {J3(0, 0), J3(0, 1), J3(0, 2)};
-  J3 quaternion[4];
-  J3 expected[4] = {
-      MakeJ3(1.0, 0, 0, 0),
-      MakeJ3(0, 0.5, 0, 0),
-      MakeJ3(0, 0, 0.5, 0),
-      MakeJ3(0, 0, 0, 0.5),
-  };
-  AngleAxisToQuaternion(axis_angle, quaternion);
-  EXPECT_THAT(quaternion, testing::Pointwise(JetClose(kTolerance), expected));
-}
-
-// Test that exact conversion works for small angles.
-TEST(Rotation, SmallQuaternionToAngleAxisForJets) {
-  // Examine small x rotations that are still large enough
-  // to be well within the range represented by doubles.
-  for (int i = -2; i >= kSmallTinyCutoff; i--) {
-    double theta = pow(10.0, i);
-    double s = sin(theta);
-    double c = cos(theta);
-    J4 quaternion[4] = {J4(c, 0), J4(s, 1), J4(0, 2), J4(0, 3)};
-    J4 axis_angle[3];
-    // clang-format off
-    J4 expected[3] = {
-        MakeJ4(2*theta, -2*s, 2*c,  0,         0),
-        MakeJ4(0,        0,   0,    2*theta/s, 0),
-        MakeJ4(0,        0,   0,    0,         2*theta/s),
-    };
-    // clang-format on
-    QuaternionToAngleAxis(quaternion, axis_angle);
-    EXPECT_THAT(axis_angle, testing::Pointwise(JetClose(kTolerance), expected));
-  }
-}
-
-// Test that conversion works for very small angles.
-TEST(Rotation, TinyQuaternionToAngleAxisForJets) {
-  // Examine tiny x rotations that extend all the way to where
-  // underflow occurs.
-  for (int i = kSmallTinyCutoff; i >= kTinyZeroLimit; i--) {
-    double theta = pow(10.0, i);
-    double s = sin(theta);
-    double c = cos(theta);
-    J4 quaternion[4] = {J4(c, 0), J4(s, 1), J4(0, 2), J4(0, 3)};
-    J4 axis_angle[3];
-    // To avoid loss of precision in the test itself,
-    // a finite expansion is used here, which will
-    // be exact up to machine precision for the test values used.
-    // clang-format off
-    J4 expected[3] = {
-        MakeJ4(2*theta, -2*s, 2.0, 0,   0),
-        MakeJ4(0,        0,   0,   2.0, 0),
-        MakeJ4(0,        0,   0,   0,   2.0),
-    };
-    // clang-format on
-    QuaternionToAngleAxis(quaternion, axis_angle);
-    EXPECT_THAT(axis_angle, testing::Pointwise(JetClose(kTolerance), expected));
-  }
-}
-
-// Test that conversion works for no rotation.
-TEST(Rotation, ZeroQuaternionToAngleAxisForJets) {
-  J4 quaternion[4] = {J4(1, 0), J4(0, 1), J4(0, 2), J4(0, 3)};
-  J4 axis_angle[3];
-  J4 expected[3] = {
-      MakeJ4(0, 0, 2.0, 0, 0),
-      MakeJ4(0, 0, 0, 2.0, 0),
-      MakeJ4(0, 0, 0, 0, 2.0),
-  };
-  QuaternionToAngleAxis(quaternion, axis_angle);
-  EXPECT_THAT(axis_angle, testing::Pointwise(JetClose(kTolerance), expected));
-}
-
-// The following 4 test cases cover the conversion of Euler Angles to rotation
-// matrices for Jets
-//
-// The dual parts (with dimension 3) of the resultant matrix of Jets contain the
-// derivative of each matrix element w.r.t. the input Euler Angles. In other
-// words, for each element in R = EulerAnglesToRotationMatrix(angles), we have
-// R_ij.v = jacobian(R_ij, angles)
-//
-// The test data (dual parts of the Jets) is generated by analytically
-// differentiating the formulas for Euler Angle to Rotation Matrix conversion
-
-// Test ZXY/312 Intrinsic Euler Angles to rotation matrix conversion using Jets
-// The two ZXY test cases specifically cover handling of Tait-Bryan angles
-// i.e. last axis of rotation is different from the first
-TEST(EulerAngles, Intrinsic312EulerSequenceToRotationMatrixForJets) {
-  J3 euler_angles[3];
-  J3 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_euler[0], euler_angles);
-  EulerAnglesToRotation<IntrinsicZXY>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.306186083320, -0.883883627842, -0.176776571821, -0.918558748402),  // NOLINT
-      MakeJ3(-0.249999816229, -0.433012359189,  0.433012832394,  0.000000000000),  // NOLINT
-      MakeJ3( 0.918558748402,  0.176776777947,  0.176776558880,  0.306186083320),  // NOLINT
-      MakeJ3( 0.883883627842,  0.306186083320,  0.306185986727,  0.176776777947),  // NOLINT
-      MakeJ3( 0.433012359189, -0.249999816229, -0.750000183771,  0.000000000000),  // NOLINT
-      MakeJ3(-0.176776777947,  0.918558748402, -0.306185964313,  0.883883627842),  // NOLINT
-      MakeJ3(-0.353553128699,  0.000000000000,  0.612372616786, -0.353553102817),  // NOLINT
-      MakeJ3( 0.866025628186,  0.000000000000,  0.499999611325,  0.000000000000),  // NOLINT
-      MakeJ3( 0.353553102817,  0.000000000000, -0.612372571957, -0.353553128699)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[1], euler_angles);
-  EulerAnglesToRotation<IntrinsicZXY>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.533493553520, -0.808012821828, -0.124999913397, -0.808012821828),  // NOLINT
-      MakeJ3(-0.249999816229, -0.433012359189,  0.433012832394,  0.000000000000),  // NOLINT
-      MakeJ3( 0.808012821828,  0.399519181706,  0.216506188745,  0.533493553520),  // NOLINT
-      MakeJ3( 0.808012821828,  0.533493553520,  0.216506188745,  0.399519181706),  // NOLINT
-      MakeJ3( 0.433012359189, -0.249999816229, -0.750000183771,  0.000000000000),  // NOLINT
-      MakeJ3(-0.399519181706,  0.808012821828, -0.374999697927,  0.808012821828),  // NOLINT
-      MakeJ3(-0.249999816229,  0.000000000000,  0.433012832394, -0.433012359189),  // NOLINT
-      MakeJ3( 0.866025628186,  0.000000000000,  0.499999611325,  0.000000000000),  // NOLINT
-      MakeJ3( 0.433012359189,  0.000000000000, -0.750000183771, -0.249999816229)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[2], euler_angles);
-  EulerAnglesToRotation<IntrinsicZXY>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.047366781483, -0.659739427619, -0.530330235247, -0.789149143778),  // NOLINT
-      MakeJ3(-0.612372449483, -0.612372404654,  0.353553418477,  0.000000000000),  // NOLINT
-      MakeJ3( 0.789149143778, -0.435596057906,  0.306185986727,  0.047366781483),  // NOLINT
-      MakeJ3( 0.659739427619,  0.047366781483,  0.530330196424, -0.435596057906),  // NOLINT
-      MakeJ3( 0.612372404654, -0.612372449483, -0.353553392595,  0.000000000000),  // NOLINT
-      MakeJ3( 0.435596057906,  0.789149143778, -0.306185964313,  0.659739427619),  // NOLINT
-      MakeJ3(-0.750000183771,  0.000000000000,  0.433012832394, -0.433012359189),  // NOLINT
-      MakeJ3( 0.500000021132,  0.000000000000,  0.866025391584,  0.000000000000),  // NOLINT
-      MakeJ3( 0.433012359189,  0.000000000000, -0.249999816229, -0.750000183771)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-// Test ZXY/312 Extrinsic Euler Angles to rotation matrix conversion using Jets
-TEST(EulerAngles, Extrinsic312EulerSequenceToRotationMatrixForJets) {
-  J3 euler_angles[3];
-  J3 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_euler[0], euler_angles);
-  EulerAnglesToRotation<ExtrinsicZXY>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.918558725988,  0.176776842652,  0.176776571821, -0.306186150563),  // NOLINT
-      MakeJ3( 0.176776842652, -0.918558725988,  0.306185986727,  0.883883614902),  // NOLINT
-      MakeJ3( 0.353553128699,  0.000000000000, -0.612372616786,  0.353553102817),  // NOLINT
-      MakeJ3( 0.249999816229,  0.433012359189, -0.433012832394,  0.000000000000),  // NOLINT
-      MakeJ3( 0.433012359189, -0.249999816229, -0.750000183771,  0.000000000000),  // NOLINT
-      MakeJ3(-0.866025628186,  0.000000000000, -0.499999611325,  0.000000000000),  // NOLINT
-      MakeJ3(-0.306186150563,  0.883883614902,  0.176776558880, -0.918558725988),  // NOLINT
-      MakeJ3( 0.883883614902,  0.306186150563,  0.306185964313, -0.176776842652),  // NOLINT
-      MakeJ3( 0.353553102817,  0.000000000000, -0.612372571957, -0.353553128699)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[1], euler_angles);
-  EulerAnglesToRotation<ExtrinsicZXY>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.966506404215, -0.058012606358,  0.124999913397, -0.058012606358),  // NOLINT
-      MakeJ3(-0.058012606358, -0.966506404215,  0.216506188745,  0.899519223971),  // NOLINT
-      MakeJ3( 0.249999816229,  0.000000000000, -0.433012832394,  0.433012359189),  // NOLINT
-      MakeJ3( 0.249999816229,  0.433012359189, -0.433012832394,  0.000000000000),  // NOLINT
-      MakeJ3( 0.433012359189, -0.249999816229, -0.750000183771,  0.000000000000),  // NOLINT
-      MakeJ3(-0.866025628186,  0.000000000000, -0.499999611325,  0.000000000000),  // NOLINT
-      MakeJ3(-0.058012606358,  0.899519223971,  0.216506188745, -0.966506404215),  // NOLINT
-      MakeJ3( 0.899519223971,  0.058012606358,  0.374999697927,  0.058012606358),  // NOLINT
-      MakeJ3( 0.433012359189,  0.000000000000, -0.750000183771, -0.249999816229)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[2], euler_angles);
-  EulerAnglesToRotation<ExtrinsicZXY>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.659739424151, -0.047366829780,  0.530330235247, -0.435596000136),  // NOLINT
-      MakeJ3(-0.047366829780, -0.659739424151,  0.530330196424,  0.789149175666),  // NOLINT
-      MakeJ3( 0.750000183771,  0.000000000000, -0.433012832394,  0.433012359189),  // NOLINT
-      MakeJ3( 0.612372449483,  0.612372404654, -0.353553418477,  0.000000000000),  // NOLINT
-      MakeJ3( 0.612372404654, -0.612372449483, -0.353553392595,  0.000000000000),  // NOLINT
-      MakeJ3(-0.500000021132,  0.000000000000, -0.866025391584,  0.000000000000),  // NOLINT
-      MakeJ3(-0.435596000136,  0.789149175666,  0.306185986727, -0.659739424151),  // NOLINT
-      MakeJ3( 0.789149175666,  0.435596000136,  0.306185964313,  0.047366829780),  // NOLINT
-      MakeJ3( 0.433012359189,  0.000000000000, -0.249999816229, -0.750000183771)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-// Test ZXZ/313 Intrinsic Euler Angles to rotation matrix conversion using Jets
-// The two ZXZ test cases specifically cover handling of proper Euler Sequences
-// i.e. last axis of rotation is same as the first
-TEST(EulerAngles, Intrinsic313EulerSequenceToRotationMatrixForJets) {
-  J3 euler_angles[3];
-  J3 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_euler[0], euler_angles);
-  EulerAnglesToRotation<IntrinsicZXZ>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.435595832833, -0.659739379323,  0.306186321334, -0.789149008363),  // NOLINT
-      MakeJ3(-0.789149008363,  0.047367454164,  0.306186298920, -0.435595832833),  // NOLINT
-      MakeJ3( 0.433012832394,  0.750000183771,  0.249999816229,  0.000000000000),  // NOLINT
-      MakeJ3( 0.659739379323,  0.435595832833, -0.530330235247, -0.047367454164),  // NOLINT
-      MakeJ3(-0.047367454164, -0.789149008363, -0.530330196424, -0.659739379323),  // NOLINT
-      MakeJ3(-0.750000183771,  0.433012832394, -0.433012359189,  0.000000000000),  // NOLINT
-      MakeJ3( 0.612372616786,  0.000000000000,  0.353553128699,  0.612372571957),  // NOLINT
-      MakeJ3( 0.612372571957,  0.000000000000,  0.353553102817, -0.612372616786),  // NOLINT
-      MakeJ3( 0.499999611325,  0.000000000000, -0.866025628186,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[1], euler_angles);
-  EulerAnglesToRotation<IntrinsicZXZ>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.625000065470, -0.649518902838,  0.216506425348, -0.649518902838),  // NOLINT
-      MakeJ3(-0.649518902838, -0.124999676795,  0.375000107735, -0.625000065470),  // NOLINT
-      MakeJ3( 0.433012832394,  0.750000183771,  0.249999816229,  0.000000000000),  // NOLINT
-      MakeJ3( 0.649518902838,  0.625000065470, -0.375000107735,  0.124999676795),  // NOLINT
-      MakeJ3( 0.124999676795, -0.649518902838, -0.649519202838, -0.649518902838),  // NOLINT
-      MakeJ3(-0.750000183771,  0.433012832394, -0.433012359189,  0.000000000000),  // NOLINT
-      MakeJ3( 0.433012832394,  0.000000000000,  0.249999816229,  0.750000183771),  // NOLINT
-      MakeJ3( 0.750000183771,  0.000000000000,  0.433012359189, -0.433012832394),  // NOLINT
-      MakeJ3( 0.499999611325,  0.000000000000, -0.866025628186,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[2], euler_angles);
-  EulerAnglesToRotation<IntrinsicZXZ>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3(-0.176777132430, -0.883883325124,  0.306186321334, -0.918558558685),  // NOLINT
-      MakeJ3(-0.918558558685,  0.306186652473,  0.176776571821,  0.176777132430),  // NOLINT
-      MakeJ3( 0.353553418477,  0.353553392595,  0.612372449483,  0.000000000000),  // NOLINT
-      MakeJ3( 0.883883325124, -0.176777132430, -0.306186298920, -0.306186652473),  // NOLINT
-      MakeJ3(-0.306186652473, -0.918558558685, -0.176776558880, -0.883883325124),  // NOLINT
-      MakeJ3(-0.353553392595,  0.353553418477, -0.612372404654,  0.000000000000),  // NOLINT
-      MakeJ3( 0.433012832394,  0.000000000000,  0.750000183771,  0.249999816229),  // NOLINT
-      MakeJ3( 0.249999816229,  0.000000000000,  0.433012359189, -0.433012832394),  // NOLINT
-      MakeJ3( 0.866025391584,  0.000000000000, -0.500000021132,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-// Test ZXZ/313 Extrinsic Euler Angles to rotation matrix conversion using Jets
-TEST(EulerAngles, Extrinsic313EulerSequenceToRotationMatrixForJets) {
-  J3 euler_angles[3];
-  J3 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_euler[0], euler_angles);
-  EulerAnglesToRotation<ExtrinsicZXZ>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.435595832833, -0.659739379323,  0.306186321334, -0.789149008363),  // NOLINT
-      MakeJ3(-0.659739379323, -0.435595832833,  0.530330235247,  0.047367454164),  // NOLINT
-      MakeJ3( 0.612372616786,  0.000000000000,  0.353553128699,  0.612372571957),  // NOLINT
-      MakeJ3( 0.789149008363, -0.047367454164, -0.306186298920,  0.435595832833),  // NOLINT
-      MakeJ3(-0.047367454164, -0.789149008363, -0.530330196424, -0.659739379323),  // NOLINT
-      MakeJ3(-0.612372571957,  0.000000000000, -0.353553102817,  0.612372616786),  // NOLINT
-      MakeJ3( 0.433012832394,  0.750000183771,  0.249999816229,  0.000000000000),  // NOLINT
-      MakeJ3( 0.750000183771, -0.433012832394,  0.433012359189,  0.000000000000),  // NOLINT
-      MakeJ3( 0.499999611325,  0.000000000000, -0.866025628186,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[1], euler_angles);
-  EulerAnglesToRotation<ExtrinsicZXZ>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3( 0.625000065470, -0.649518902838,  0.216506425348, -0.649518902838),  // NOLINT
-      MakeJ3(-0.649518902838, -0.625000065470,  0.375000107735, -0.124999676795),  // NOLINT
-      MakeJ3( 0.433012832394,  0.000000000000,  0.249999816229,  0.750000183771),  // NOLINT
-      MakeJ3( 0.649518902838,  0.124999676795, -0.375000107735,  0.625000065470),  // NOLINT
-      MakeJ3( 0.124999676795, -0.649518902838, -0.649519202838, -0.649518902838),  // NOLINT
-      MakeJ3(-0.750000183771,  0.000000000000, -0.433012359189,  0.433012832394),  // NOLINT
-      MakeJ3( 0.433012832394,  0.750000183771,  0.249999816229,  0.000000000000),  // NOLINT
-      MakeJ3( 0.750000183771, -0.433012832394,  0.433012359189,  0.000000000000),  // NOLINT
-      MakeJ3( 0.499999611325,  0.000000000000, -0.866025628186,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_euler[2], euler_angles);
-  EulerAnglesToRotation<ExtrinsicZXZ>(euler_angles, rotation_matrix);
-  {
-    // clang-format off
-    const J3 expected[] = {
-      MakeJ3(-0.176777132430, -0.883883325124,  0.306186321334, -0.918558558685),  // NOLINT
-      MakeJ3(-0.883883325124,  0.176777132430,  0.306186298920,  0.306186652473),  // NOLINT
-      MakeJ3( 0.433012832394,  0.000000000000,  0.750000183771,  0.249999816229),  // NOLINT
-      MakeJ3( 0.918558558685, -0.306186652473, -0.176776571821, -0.176777132430),  // NOLINT
-      MakeJ3(-0.306186652473, -0.918558558685, -0.176776558880, -0.883883325124),  // NOLINT
-      MakeJ3(-0.249999816229,  0.000000000000, -0.433012359189,  0.433012832394),  // NOLINT
-      MakeJ3( 0.353553418477,  0.353553392595,  0.612372449483,  0.000000000000),  // NOLINT
-      MakeJ3( 0.353553392595, -0.353553418477,  0.612372404654,  0.000000000000),  // NOLINT
-      MakeJ3( 0.866025391584,  0.000000000000, -0.500000021132,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(rotation_matrix,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-using J9 = Jet<double, 9>;
-
-// The following 4 tests Tests the conversion of rotation matrices to Euler
-// Angles for Jets.
-//
-// The dual parts (with dimension 9) of the resultant array of Jets contain the
-// derivative of each Euler angle w.r.t. each of the 9 elements of the rotation
-// matrix, or a 9-by-1 array formed from flattening the rotation matrix. In
-// other words, for each element in angles = RotationMatrixToEulerAngles(R), we
-// have angles.v = jacobian(angles, [R11 R12 R13 R21 ... R32 R33]);
-//
-// Note: the order of elements in v depend on row/column-wise flattening of
-// the rotation matrix
-//
-// The test data (dual parts of the Jets) is generated by analytically
-// differentiating the formulas for Rotation Matrix to Euler Angle conversion
-
-// clang-format off
-static double sample_matrices[][9] = {
-  { 0.433012359189,  0.176776842652,  0.883883614902,  0.249999816229,  0.918558725988, -0.306186150563, -0.866025628186,  0.353553128699,  0.353553102817},  // NOLINT
-  { 0.433012359189, -0.058012606358,  0.899519223971,  0.249999816229,  0.966506404215, -0.058012606358, -0.866025628186,  0.249999816229,  0.433012359189},  // NOLINT
-  { 0.612372404654, -0.047366829780,  0.789149175666,  0.612372449483,  0.659739424151, -0.435596000136, -0.500000021132,  0.750000183771,  0.433012359189}   // NOLINT
-};
-// clang-format on
-
-// Test rotation matrix to ZXY/312 Intrinsic Euler Angles conversion using Jets
-// The two ZXY test cases specifically cover handling of Tait-Bryan angles
-// i.e. last axis of rotation is different from the first
-TEST(EulerAngles, RotationMatrixToIntrinsic312EulerSequenceForJets) {
-  J9 euler_angles[3];
-  J9 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_matrices[0], rotation_matrix);
-  RotationMatrixToEulerAngles<IntrinsicZXY>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>(-0.190125743401,  0.000000000000, -1.049781178951,  0.000000000000,  0.000000000000,  0.202030634558,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.361366843930,  0.000000000000, -0.066815309609,  0.000000000000,  0.000000000000, -0.347182270882,  0.000000000000,  0.000000000000,  0.935414445680,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.183200015636,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.404060603418,  0.000000000000, -0.989743365598)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[1], rotation_matrix);
-  RotationMatrixToEulerAngles<IntrinsicZXY>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 0.059951064811,  0.000000000000, -1.030940063452,  0.000000000000,  0.000000000000, -0.061880107384,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.252680065344,  0.000000000000,  0.014978778808,  0.000000000000,  0.000000000000, -0.249550684831,  0.000000000000,  0.000000000000,  0.968245884001,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.107149138016,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.461879804532,  0.000000000000, -0.923760579526)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[2], rotation_matrix);
-  RotationMatrixToEulerAngles<IntrinsicZXY>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 0.071673287221,  0.000000000000, -1.507976776767,  0.000000000000,  0.000000000000, -0.108267107713,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.848062356818,  0.000000000000,  0.053708966648,  0.000000000000,  0.000000000000, -0.748074610289,  0.000000000000,  0.000000000000,  0.661437619389,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.857072360427,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.989743158900,  0.000000000000, -1.142857911244)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-// Test rotation matrix to ZXY/312 Extrinsic Euler Angles conversion using Jets
-TEST(EulerAngles, RotationMatrixToExtrinsic312EulerSequenceForJets) {
-  J9 euler_angles[3];
-  J9 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_matrices[0], rotation_matrix);
-  RotationMatrixToEulerAngles<ExtrinsicZXY>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 0.265728912717,  0.000000000000,  0.000000000000,  0.000000000000,  1.013581996386, -0.275861853641,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.311184173598,  0.000000000000,  0.000000000000, -0.284286741927,  0.000000000000,  0.000000000000, -0.951971659874,  0.000000000000,  0.000000000000, -0.113714586405),  // NOLINT
-      MakeJet<9>( 1.190290284357,  0.000000000000,  0.000000000000,  0.390127543992,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.975319806582)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[1], rotation_matrix);
-  RotationMatrixToEulerAngles<ExtrinsicZXY>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 0.253115668605,  0.000000000000,  0.000000000000,  0.000000000000,  0.969770129215, -0.250844022378,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.058045195612,  0.000000000000,  0.000000000000, -0.052271487648,  0.000000000000,  0.000000000000, -0.998315850572,  0.000000000000,  0.000000000000, -0.025162553041),  // NOLINT
-      MakeJet<9>( 1.122153748896,  0.000000000000,  0.000000000000,  0.434474567050,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.902556744846)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[2], rotation_matrix);
-  RotationMatrixToEulerAngles<ExtrinsicZXY>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 0.748180444286,  0.000000000000,  0.000000000000,  0.000000000000,  0.814235652244, -0.755776390750,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 0.450700288478,  0.000000000000,  0.000000000000, -0.381884322045,  0.000000000000,  0.000000000000, -0.900142280234,  0.000000000000,  0.000000000000, -0.209542930950),  // NOLINT
-      MakeJet<9>( 1.068945699497,  0.000000000000,  0.000000000000,  0.534414175972,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.973950275281)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-// Test rotation matrix to ZXZ/313 Intrinsic Euler Angles conversion using Jets
-//// The two ZXZ test cases specifically cover handling of proper Euler
-/// Sequences
-// i.e. last axis of rotation is same as the first
-TEST(EulerAngles, RotationMatrixToIntrinsic313EulerSequenceForJets) {
-  J9 euler_angles[3];
-  J9 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_matrices[0], rotation_matrix);
-  RotationMatrixToEulerAngles<IntrinsicZXZ>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 1.237323270947,  0.000000000000,  0.000000000000,  0.349926947837,  0.000000000000,  0.000000000000,  1.010152467826,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.209429510533,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.327326615680,  0.133630397662, -0.935414455462),  // NOLINT
-      MakeJet<9>(-1.183199990019,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.404060624546,  0.989743344897,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[1], rotation_matrix);
-  RotationMatrixToEulerAngles<IntrinsicZXZ>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 1.506392616830,  0.000000000000,  0.000000000000,  0.071400104821,  0.000000000000,  0.000000000000,  1.107100178948,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.122964310061,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.416024849727,  0.120095910090, -0.901387983495),  // NOLINT
-      MakeJet<9>(-1.289761690216,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.307691969119,  1.065877306886,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[2], rotation_matrix);
-  RotationMatrixToEulerAngles<IntrinsicZXZ>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>( 1.066432836578,  0.000000000000,  0.000000000000,  0.536117958181,  0.000000000000,  0.000000000000,  0.971260169116,  0.000000000000,  0.000000000000,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.122964310061,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.240192006893,  0.360288083393, -0.901387983495),  // NOLINT
-      MakeJet<9>(-0.588002509965,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.923076812076,  0.615384416607,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-// Test rotation matrix to ZXZ/313 Extrinsic Euler Angles conversion using Jets
-TEST(EulerAngles, RotationMatrixToExtrinsic313EulerSequenceForJets) {
-  J9 euler_angles[3];
-  J9 rotation_matrix[9];
-
-  ArrayToArrayOfJets(sample_matrices[0], rotation_matrix);
-  RotationMatrixToEulerAngles<ExtrinsicZXZ>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>(-1.183199990019,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.404060624546,  0.989743344897,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.209429510533,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.327326615680,  0.133630397662, -0.935414455462),  // NOLINT
-      MakeJet<9>( 1.237323270947,  0.000000000000,  0.000000000000,  0.349926947837,  0.000000000000,  0.000000000000,  1.010152467826,  0.000000000000,  0.000000000000,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[1], rotation_matrix);
-  RotationMatrixToEulerAngles<ExtrinsicZXZ>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>(-1.289761690216,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.307691969119,  1.065877306886,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.122964310061,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.416024849727,  0.120095910090, -0.901387983495),  // NOLINT
-      MakeJet<9>( 1.506392616830,  0.000000000000,  0.000000000000,  0.071400104821,  0.000000000000,  0.000000000000,  1.107100178948,  0.000000000000,  0.000000000000,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-
-  ArrayToArrayOfJets(sample_matrices[2], rotation_matrix);
-  RotationMatrixToEulerAngles<ExtrinsicZXZ>(rotation_matrix, euler_angles);
-  {
-    // clang-format off
-    const J9 expected[] = {
-      MakeJet<9>(-0.588002509965,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.923076812076,  0.615384416607,  0.000000000000),  // NOLINT
-      MakeJet<9>( 1.122964310061,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000,  0.000000000000, -0.240192006893,  0.360288083393, -0.901387983495),  // NOLINT
-      MakeJet<9>( 1.066432836578,  0.000000000000,  0.000000000000,  0.536117958181,  0.000000000000,  0.000000000000,  0.971260169116,  0.000000000000,  0.000000000000,  0.000000000000)   // NOLINT
-    };
-    // clang-format on
-    EXPECT_THAT(euler_angles,
-                testing::Pointwise(JetClose(kLooseTolerance), expected));
-  }
-}
-
-TEST(Quaternion, RotatePointGivesSameAnswerAsRotationByMatrixCanned) {
-  // Canned data generated in octave.
-  double const q[4] = {
-      +0.1956830471754074,
-      -0.0150618562474847,
-      +0.7634572982788086,
-      -0.3019454777240753,
-  };
-  double const Q[3][3] = {
-      // Scaled rotation matrix.
-      {-0.6355194033477252, +0.0951730541682254, +0.3078870197911186},
-      {-0.1411693904792992, +0.5297609702153905, -0.4551502574482019},
-      {-0.2896955822708862, -0.4669396571547050, -0.4536309793389248},
-  };
-  double const R[3][3] = {
-      // With unit rows and columns.
-      {-0.8918859164053080, +0.1335655625725649, +0.4320876677394745},
-      {-0.1981166751680096, +0.7434648665444399, -0.6387564287225856},
-      {-0.4065578619806013, -0.6553016349046693, -0.6366242786393164},
-  };
-
-  // Compute R from q and compare to known answer.
-  double Rq[3][3];
-  QuaternionToScaledRotation<double>(q, Rq[0]);
-  ExpectArraysClose(9, Q[0], Rq[0], kTolerance);
-
-  // Now do the same but compute R with normalization.
-  QuaternionToRotation<double>(q, Rq[0]);
-  ExpectArraysClose(9, R[0], Rq[0], kTolerance);
-}
-
-TEST(Quaternion, RotatePointGivesSameAnswerAsRotationByMatrix) {
-  // Rotation defined by a unit quaternion.
-  double const q[4] = {
-      +0.2318160216097109,
-      -0.0178430356832060,
-      +0.9044300776717159,
-      -0.3576998641394597,
-  };
-  double const p[3] = {
-      +0.11,
-      -13.15,
-      1.17,
-  };
-
-  double R[3 * 3];
-  QuaternionToRotation(q, R);
-
-  double result1[3];
-  UnitQuaternionRotatePoint(q, p, result1);
-
-  double result2[3];
-  VectorRef(result2, 3) = ConstMatrixRef(R, 3, 3) * ConstVectorRef(p, 3);
-  ExpectArraysClose(3, result1, result2, kTolerance);
-}
-
-// Verify that (a * b) * c == a * (b * c).
-TEST(Quaternion, MultiplicationIsAssociative) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  double a[4];
-  double b[4];
-  double c[4];
-  for (int i = 0; i < 4; ++i) {
-    a[i] = uniform_distribution(prng);
-    b[i] = uniform_distribution(prng);
-    c[i] = uniform_distribution(prng);
-  }
-
-  double ab[4];
-  double ab_c[4];
-  QuaternionProduct(a, b, ab);
-  QuaternionProduct(ab, c, ab_c);
-
-  double bc[4];
-  double a_bc[4];
-  QuaternionProduct(b, c, bc);
-  QuaternionProduct(a, bc, a_bc);
-
-  ASSERT_NEAR(ab_c[0], a_bc[0], kTolerance);
-  ASSERT_NEAR(ab_c[1], a_bc[1], kTolerance);
-  ASSERT_NEAR(ab_c[2], a_bc[2], kTolerance);
-  ASSERT_NEAR(ab_c[3], a_bc[3], kTolerance);
-}
-
-TEST(AngleAxis, RotatePointGivesSameAnswerAsRotationMatrix) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  double angle_axis[3];
-  double R[9];
-  double p[3];
-  double angle_axis_rotated_p[3];
-  double rotation_matrix_rotated_p[3];
-
-  for (int i = 0; i < 10000; ++i) {
-    double theta = (2.0 * i * 0.0011 - 1.0) * kPi;
-    for (int j = 0; j < 50; ++j) {
-      for (int k = 0; k < 3; ++k) {
-        angle_axis[k] = uniform_distribution(prng);
-        p[k] = uniform_distribution(prng);
-      }
-
-      const double inv_norm =
-          theta / std::hypot(angle_axis[0], angle_axis[1], angle_axis[2]);
-      for (double& angle_axi : angle_axis) {
-        angle_axi *= inv_norm;
-      }
-
-      AngleAxisToRotationMatrix(angle_axis, R);
-      rotation_matrix_rotated_p[0] = R[0] * p[0] + R[3] * p[1] + R[6] * p[2];
-      rotation_matrix_rotated_p[1] = R[1] * p[0] + R[4] * p[1] + R[7] * p[2];
-      rotation_matrix_rotated_p[2] = R[2] * p[0] + R[5] * p[1] + R[8] * p[2];
-
-      AngleAxisRotatePoint(angle_axis, p, angle_axis_rotated_p);
-      for (int k = 0; k < 3; ++k) {
-        // clang-format off
-        EXPECT_NEAR(rotation_matrix_rotated_p[k],
-                    angle_axis_rotated_p[k],
-                    kTolerance) << "p: " << p[0]
-                                << " " << p[1]
-                                << " " << p[2]
-                                << " angle_axis: " << angle_axis[0]
-                                << " " << angle_axis[1]
-                                << " " << angle_axis[2];
-        // clang-format on
-      }
-    }
-  }
-}
-
-TEST(Quaternion, UnitQuaternion) {
-  using Jet = ceres::Jet<double, 4>;
-  std::array<Jet, 4> quaternion = {
-      Jet(1.0, 0), Jet(0.0, 1), Jet(0.0, 2), Jet(0.0, 3)};
-  std::array<Jet, 3> point = {Jet(0.0), Jet(0.0), Jet(0.0)};
-  std::array<Jet, 3> rotated_point;
-  QuaternionRotatePoint(quaternion.data(), point.data(), rotated_point.data());
-  for (int i = 0; i < 3; ++i) {
-    EXPECT_EQ(rotated_point[i], point[i]);
-    EXPECT_FALSE(rotated_point[i].v.array().isNaN().any());
-  }
-}
-
-TEST(AngleAxis, NearZeroRotatePointGivesSameAnswerAsRotationMatrix) {
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution{-1.0, 1.0};
-  double angle_axis[3];
-  double R[9];
-  double p[3];
-  double angle_axis_rotated_p[3];
-  double rotation_matrix_rotated_p[3];
-
-  for (int i = 0; i < 10000; ++i) {
-    double norm2 = 0.0;
-    for (int k = 0; k < 3; ++k) {
-      angle_axis[k] = uniform_distribution(prng);
-      p[k] = uniform_distribution(prng);
-      norm2 = angle_axis[k] * angle_axis[k];
-    }
-
-    double theta = (2.0 * i * 0.0001 - 1.0) * 1e-16;
-    const double inv_norm = theta / sqrt(norm2);
-    for (double& angle_axi : angle_axis) {
-      angle_axi *= inv_norm;
-    }
-
-    AngleAxisToRotationMatrix(angle_axis, R);
-    rotation_matrix_rotated_p[0] = R[0] * p[0] + R[3] * p[1] + R[6] * p[2];
-    rotation_matrix_rotated_p[1] = R[1] * p[0] + R[4] * p[1] + R[7] * p[2];
-    rotation_matrix_rotated_p[2] = R[2] * p[0] + R[5] * p[1] + R[8] * p[2];
-
-    AngleAxisRotatePoint(angle_axis, p, angle_axis_rotated_p);
-    for (int k = 0; k < 3; ++k) {
-      // clang-format off
-      EXPECT_NEAR(rotation_matrix_rotated_p[k],
-                  angle_axis_rotated_p[k],
-                  kTolerance) << "p: " << p[0]
-                              << " " << p[1]
-                              << " " << p[2]
-                              << " angle_axis: " << angle_axis[0]
-                              << " " << angle_axis[1]
-                              << " " << angle_axis[2];
-      // clang-format on
-    }
-  }
-}
-
-TEST(MatrixAdapter, RowMajor3x3ReturnTypeAndAccessIsCorrect) {
-  double array[9] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
-  const float const_array[9] = {
-      1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
-  MatrixAdapter<double, 3, 1> A = RowMajorAdapter3x3(array);
-  MatrixAdapter<const float, 3, 1> B = RowMajorAdapter3x3(const_array);
-
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      // The values are integers from 1 to 9, so equality tests are appropriate
-      // even for float and double values.
-      EXPECT_EQ(A(i, j), array[3 * i + j]);
-      EXPECT_EQ(B(i, j), const_array[3 * i + j]);
-    }
-  }
-}
-
-TEST(MatrixAdapter, ColumnMajor3x3ReturnTypeAndAccessIsCorrect) {
-  double array[9] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
-  const float const_array[9] = {
-      1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f};
-  MatrixAdapter<double, 1, 3> A = ColumnMajorAdapter3x3(array);
-  MatrixAdapter<const float, 1, 3> B = ColumnMajorAdapter3x3(const_array);
-
-  for (int i = 0; i < 3; ++i) {
-    for (int j = 0; j < 3; ++j) {
-      // The values are integers from 1 to 9, so equality tests are
-      // appropriate even for float and double values.
-      EXPECT_EQ(A(i, j), array[3 * j + i]);
-      EXPECT_EQ(B(i, j), const_array[3 * j + i]);
-    }
-  }
-}
-
-TEST(MatrixAdapter, RowMajor2x4IsCorrect) {
-  const int expected[8] = {1, 2, 3, 4, 5, 6, 7, 8};
-  int array[8];
-  MatrixAdapter<int, 4, 1> M(array);
-  // clang-format off
-  M(0, 0) = 1; M(0, 1) = 2; M(0, 2) = 3; M(0, 3) = 4;
-  M(1, 0) = 5; M(1, 1) = 6; M(1, 2) = 7; M(1, 3) = 8;
-  // clang-format on
-  for (int k = 0; k < 8; ++k) {
-    EXPECT_EQ(array[k], expected[k]);
-  }
-}
-
-TEST(MatrixAdapter, ColumnMajor2x4IsCorrect) {
-  const int expected[8] = {1, 5, 2, 6, 3, 7, 4, 8};
-  int array[8];
-  MatrixAdapter<int, 1, 2> M(array);
-  // clang-format off
-  M(0, 0) = 1; M(0, 1) = 2; M(0, 2) = 3; M(0, 3) = 4;
-  M(1, 0) = 5; M(1, 1) = 6; M(1, 2) = 7; M(1, 3) = 8;
-  // clang-format on
-  for (int k = 0; k < 8; ++k) {
-    EXPECT_EQ(array[k], expected[k]);
-  }
-}
-
-TEST(RotationMatrixToAngleAxis, NearPiExampleOneFromTobiasStrauss) {
-  // Example from Tobias Strauss
-  // clang-format off
-  const double rotation_matrix[] = {
-    -0.999807135425239,    -0.0128154391194470,   -0.0148814136745799,
-    -0.0128154391194470,   -0.148441438622958,     0.988838158557669,
-    -0.0148814136745799,    0.988838158557669,     0.148248574048196
-  };
-  // clang-format on
-
-  double angle_axis[3];
-  RotationMatrixToAngleAxis(RowMajorAdapter3x3(rotation_matrix), angle_axis);
-  double round_trip[9];
-  AngleAxisToRotationMatrix(angle_axis, RowMajorAdapter3x3(round_trip));
-  EXPECT_THAT(rotation_matrix, IsNear3x3Matrix(round_trip));
-}
-
-static void CheckRotationMatrixToAngleAxisRoundTrip(const double theta,
-                                                    const double phi,
-                                                    const double angle) {
-  double angle_axis[3];
-  angle_axis[0] = angle * sin(phi) * cos(theta);
-  angle_axis[1] = angle * sin(phi) * sin(theta);
-  angle_axis[2] = angle * cos(phi);
-
-  double rotation_matrix[9];
-  AngleAxisToRotationMatrix(angle_axis, rotation_matrix);
-
-  double angle_axis_round_trip[3];
-  RotationMatrixToAngleAxis(rotation_matrix, angle_axis_round_trip);
-  EXPECT_THAT(angle_axis_round_trip, IsNearAngleAxis(angle_axis));
-}
-
-TEST(RotationMatrixToAngleAxis, ExhaustiveRoundTrip) {
-  constexpr double kMaxSmallAngle = 1e-8;
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> uniform_distribution1{
-      kPi - kMaxSmallAngle, kPi};
-  std::uniform_real_distribution<double> uniform_distribution2{
-      -1.0, 2.0 * kMaxSmallAngle - 1.0};
-  const int kNumSteps = 1000;
-  for (int i = 0; i < kNumSteps; ++i) {
-    const double theta = static_cast<double>(i) / kNumSteps * 2.0 * kPi;
-    for (int j = 0; j < kNumSteps; ++j) {
-      const double phi = static_cast<double>(j) / kNumSteps * kPi;
-      // Rotations of angle Pi.
-      CheckRotationMatrixToAngleAxisRoundTrip(theta, phi, kPi);
-      // Rotation of angle approximately Pi.
-      CheckRotationMatrixToAngleAxisRoundTrip(
-          theta, phi, uniform_distribution1(prng));
-      // Rotations of angle approximately zero.
-      CheckRotationMatrixToAngleAxisRoundTrip(
-          theta, phi, uniform_distribution2(prng));
-    }
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/schur_complement_solver.cc b/third_party/ceres/internal/ceres/schur_complement_solver.cc
deleted file mode 100644
index e113040..0000000
--- a/third_party/ceres/internal/ceres/schur_complement_solver.cc
+++ /dev/null
@@ -1,409 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/schur_complement_solver.h"
-
-#include <algorithm>
-#include <ctime>
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "Eigen/SparseCore"
-#include "ceres/block_random_access_dense_matrix.h"
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_random_access_sparse_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/conjugate_gradients_solver.h"
-#include "ceres/detect_structure.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_cholesky.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-namespace {
-
-class BlockRandomAccessSparseMatrixAdapter final
-    : public ConjugateGradientsLinearOperator<Vector> {
- public:
-  explicit BlockRandomAccessSparseMatrixAdapter(
-      const BlockRandomAccessSparseMatrix& m)
-      : m_(m) {}
-
-  void RightMultiplyAndAccumulate(const Vector& x, Vector& y) final {
-    m_.SymmetricRightMultiplyAndAccumulate(x.data(), y.data());
-  }
-
- private:
-  const BlockRandomAccessSparseMatrix& m_;
-};
-
-class BlockRandomAccessDiagonalMatrixAdapter final
-    : public ConjugateGradientsLinearOperator<Vector> {
- public:
-  explicit BlockRandomAccessDiagonalMatrixAdapter(
-      const BlockRandomAccessDiagonalMatrix& m)
-      : m_(m) {}
-
-  // y = y + Ax;
-  void RightMultiplyAndAccumulate(const Vector& x, Vector& y) final {
-    m_.RightMultiplyAndAccumulate(x.data(), y.data());
-  }
-
- private:
-  const BlockRandomAccessDiagonalMatrix& m_;
-};
-
-}  // namespace
-
-SchurComplementSolver::SchurComplementSolver(
-    const LinearSolver::Options& options)
-    : options_(options) {
-  CHECK_GT(options.elimination_groups.size(), 1);
-  CHECK_GT(options.elimination_groups[0], 0);
-  CHECK(options.context != nullptr);
-}
-
-LinearSolver::Summary SchurComplementSolver::SolveImpl(
-    BlockSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("SchurComplementSolver::Solve");
-
-  const CompressedRowBlockStructure* bs = A->block_structure();
-  if (eliminator_ == nullptr) {
-    const int num_eliminate_blocks = options_.elimination_groups[0];
-    const int num_f_blocks = bs->cols.size() - num_eliminate_blocks;
-
-    InitStorage(bs);
-    DetectStructure(*bs,
-                    num_eliminate_blocks,
-                    &options_.row_block_size,
-                    &options_.e_block_size,
-                    &options_.f_block_size);
-
-    // For the special case of the static structure <2,3,6> with
-    // exactly one f block use the SchurEliminatorForOneFBlock.
-    //
-    // TODO(sameeragarwal): A more scalable template specialization
-    // mechanism that does not cause binary bloat.
-    if (options_.row_block_size == 2 && options_.e_block_size == 3 &&
-        options_.f_block_size == 6 && num_f_blocks == 1) {
-      eliminator_ = std::make_unique<SchurEliminatorForOneFBlock<2, 3, 6>>();
-    } else {
-      eliminator_ = SchurEliminatorBase::Create(options_);
-    }
-
-    CHECK(eliminator_);
-    const bool kFullRankETE = true;
-    eliminator_->Init(num_eliminate_blocks, kFullRankETE, bs);
-  }
-
-  std::fill(x, x + A->num_cols(), 0.0);
-  event_logger.AddEvent("Setup");
-
-  eliminator_->Eliminate(BlockSparseMatrixData(*A),
-                         b,
-                         per_solve_options.D,
-                         lhs_.get(),
-                         rhs_.data());
-  event_logger.AddEvent("Eliminate");
-
-  double* reduced_solution = x + A->num_cols() - lhs_->num_cols();
-  const LinearSolver::Summary summary =
-      SolveReducedLinearSystem(per_solve_options, reduced_solution);
-  event_logger.AddEvent("ReducedSolve");
-
-  if (summary.termination_type == LinearSolverTerminationType::SUCCESS) {
-    eliminator_->BackSubstitute(
-        BlockSparseMatrixData(*A), b, per_solve_options.D, reduced_solution, x);
-    event_logger.AddEvent("BackSubstitute");
-  }
-
-  return summary;
-}
-DenseSchurComplementSolver::DenseSchurComplementSolver(
-    const LinearSolver::Options& options)
-    : SchurComplementSolver(options),
-      cholesky_(DenseCholesky::Create(options)) {}
-
-DenseSchurComplementSolver::~DenseSchurComplementSolver() = default;
-
-// Initialize a BlockRandomAccessDenseMatrix to store the Schur
-// complement.
-void DenseSchurComplementSolver::InitStorage(
-    const CompressedRowBlockStructure* bs) {
-  const int num_eliminate_blocks = options().elimination_groups[0];
-  const int num_col_blocks = bs->cols.size();
-  auto blocks = Tail(bs->cols, num_col_blocks - num_eliminate_blocks);
-  set_lhs(std::make_unique<BlockRandomAccessDenseMatrix>(
-      blocks, options().context, options().num_threads));
-  ResizeRhs(lhs()->num_rows());
-}
-
-// Solve the system Sx = r, assuming that the matrix S is stored in a
-// BlockRandomAccessDenseMatrix. The linear system is solved using
-// Eigen's Cholesky factorization.
-LinearSolver::Summary DenseSchurComplementSolver::SolveReducedLinearSystem(
-    const LinearSolver::PerSolveOptions& /*per_solve_options*/,
-    double* solution) {
-  LinearSolver::Summary summary;
-  summary.num_iterations = 0;
-  summary.termination_type = LinearSolverTerminationType::SUCCESS;
-  summary.message = "Success.";
-
-  auto* m = down_cast<BlockRandomAccessDenseMatrix*>(mutable_lhs());
-  const int num_rows = m->num_rows();
-
-  // The case where there are no f blocks, and the system is block
-  // diagonal.
-  if (num_rows == 0) {
-    return summary;
-  }
-
-  summary.num_iterations = 1;
-  summary.termination_type = cholesky_->FactorAndSolve(
-      num_rows, m->mutable_values(), rhs().data(), solution, &summary.message);
-  return summary;
-}
-
-SparseSchurComplementSolver::SparseSchurComplementSolver(
-    const LinearSolver::Options& options)
-    : SchurComplementSolver(options) {
-  if (options.type != ITERATIVE_SCHUR) {
-    sparse_cholesky_ = SparseCholesky::Create(options);
-  }
-}
-
-SparseSchurComplementSolver::~SparseSchurComplementSolver() {
-  for (int i = 0; i < 4; ++i) {
-    if (scratch_[i]) {
-      delete scratch_[i];
-      scratch_[i] = nullptr;
-    }
-  }
-}
-
-// Determine the non-zero blocks in the Schur Complement matrix, and
-// initialize a BlockRandomAccessSparseMatrix object.
-void SparseSchurComplementSolver::InitStorage(
-    const CompressedRowBlockStructure* bs) {
-  const int num_eliminate_blocks = options().elimination_groups[0];
-  const int num_col_blocks = bs->cols.size();
-  const int num_row_blocks = bs->rows.size();
-
-  blocks_ = Tail(bs->cols, num_col_blocks - num_eliminate_blocks);
-
-  std::set<std::pair<int, int>> block_pairs;
-  for (int i = 0; i < blocks_.size(); ++i) {
-    block_pairs.emplace(i, i);
-  }
-
-  int r = 0;
-  while (r < num_row_blocks) {
-    int e_block_id = bs->rows[r].cells.front().block_id;
-    if (e_block_id >= num_eliminate_blocks) {
-      break;
-    }
-    std::vector<int> f_blocks;
-
-    // Add to the chunk until the first block in the row is
-    // different than the one in the first row for the chunk.
-    for (; r < num_row_blocks; ++r) {
-      const CompressedRow& row = bs->rows[r];
-      if (row.cells.front().block_id != e_block_id) {
-        break;
-      }
-
-      // Iterate over the blocks in the row, ignoring the first
-      // block since it is the one to be eliminated.
-      for (int c = 1; c < row.cells.size(); ++c) {
-        const Cell& cell = row.cells[c];
-        f_blocks.push_back(cell.block_id - num_eliminate_blocks);
-      }
-    }
-
-    std::sort(f_blocks.begin(), f_blocks.end());
-    f_blocks.erase(std::unique(f_blocks.begin(), f_blocks.end()),
-                   f_blocks.end());
-    for (int i = 0; i < f_blocks.size(); ++i) {
-      for (int j = i + 1; j < f_blocks.size(); ++j) {
-        block_pairs.emplace(f_blocks[i], f_blocks[j]);
-      }
-    }
-  }
-
-  // Remaining rows do not contribute to the chunks and directly go
-  // into the schur complement via an outer product.
-  for (; r < num_row_blocks; ++r) {
-    const CompressedRow& row = bs->rows[r];
-    CHECK_GE(row.cells.front().block_id, num_eliminate_blocks);
-    for (int i = 0; i < row.cells.size(); ++i) {
-      int r_block1_id = row.cells[i].block_id - num_eliminate_blocks;
-      for (const auto& cell : row.cells) {
-        int r_block2_id = cell.block_id - num_eliminate_blocks;
-        if (r_block1_id <= r_block2_id) {
-          block_pairs.emplace(r_block1_id, r_block2_id);
-        }
-      }
-    }
-  }
-
-  set_lhs(std::make_unique<BlockRandomAccessSparseMatrix>(
-      blocks_, block_pairs, options().context, options().num_threads));
-  ResizeRhs(lhs()->num_rows());
-}
-
-LinearSolver::Summary SparseSchurComplementSolver::SolveReducedLinearSystem(
-    const LinearSolver::PerSolveOptions& per_solve_options, double* solution) {
-  if (options().type == ITERATIVE_SCHUR) {
-    return SolveReducedLinearSystemUsingConjugateGradients(per_solve_options,
-                                                           solution);
-  }
-
-  LinearSolver::Summary summary;
-  summary.num_iterations = 0;
-  summary.termination_type = LinearSolverTerminationType::SUCCESS;
-  summary.message = "Success.";
-
-  const BlockSparseMatrix* bsm =
-      down_cast<const BlockRandomAccessSparseMatrix*>(lhs())->matrix();
-  if (bsm->num_rows() == 0) {
-    return summary;
-  }
-
-  const CompressedRowSparseMatrix::StorageType storage_type =
-      sparse_cholesky_->StorageType();
-  if (storage_type ==
-      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-    if (!crs_lhs_) {
-      crs_lhs_ = bsm->ToCompressedRowSparseMatrix();
-      crs_lhs_->set_storage_type(
-          CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-    } else {
-      bsm->UpdateCompressedRowSparseMatrix(crs_lhs_.get());
-    }
-  } else {
-    if (!crs_lhs_) {
-      crs_lhs_ = bsm->ToCompressedRowSparseMatrixTranspose();
-      crs_lhs_->set_storage_type(
-          CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR);
-    } else {
-      bsm->UpdateCompressedRowSparseMatrixTranspose(crs_lhs_.get());
-    }
-  }
-
-  summary.num_iterations = 1;
-  summary.termination_type = sparse_cholesky_->FactorAndSolve(
-      crs_lhs_.get(), rhs().data(), solution, &summary.message);
-  return summary;
-}
-
-LinearSolver::Summary
-SparseSchurComplementSolver::SolveReducedLinearSystemUsingConjugateGradients(
-    const LinearSolver::PerSolveOptions& per_solve_options, double* solution) {
-  CHECK(options().use_explicit_schur_complement);
-  const int num_rows = lhs()->num_rows();
-  // The case where there are no f blocks, and the system is block
-  // diagonal.
-  if (num_rows == 0) {
-    LinearSolver::Summary summary;
-    summary.num_iterations = 0;
-    summary.termination_type = LinearSolverTerminationType::SUCCESS;
-    summary.message = "Success.";
-    return summary;
-  }
-
-  // Only SCHUR_JACOBI is supported over here right now.
-  CHECK_EQ(options().preconditioner_type, SCHUR_JACOBI);
-
-  if (preconditioner_ == nullptr) {
-    preconditioner_ = std::make_unique<BlockRandomAccessDiagonalMatrix>(
-        blocks_, options().context, options().num_threads);
-  }
-
-  auto* sc = down_cast<BlockRandomAccessSparseMatrix*>(mutable_lhs());
-
-  // Extract block diagonal from the Schur complement to construct the
-  // schur_jacobi preconditioner.
-  for (int i = 0; i < blocks_.size(); ++i) {
-    const int block_size = blocks_[i].size;
-
-    int sc_r, sc_c, sc_row_stride, sc_col_stride;
-    CellInfo* sc_cell_info =
-        sc->GetCell(i, i, &sc_r, &sc_c, &sc_row_stride, &sc_col_stride);
-    CHECK(sc_cell_info != nullptr);
-    MatrixRef sc_m(sc_cell_info->values, sc_row_stride, sc_col_stride);
-
-    int pre_r, pre_c, pre_row_stride, pre_col_stride;
-    CellInfo* pre_cell_info = preconditioner_->GetCell(
-        i, i, &pre_r, &pre_c, &pre_row_stride, &pre_col_stride);
-    CHECK(pre_cell_info != nullptr);
-    MatrixRef pre_m(pre_cell_info->values, pre_row_stride, pre_col_stride);
-
-    pre_m.block(pre_r, pre_c, block_size, block_size) =
-        sc_m.block(sc_r, sc_c, block_size, block_size);
-  }
-  preconditioner_->Invert();
-
-  VectorRef(solution, num_rows).setZero();
-
-  auto lhs = std::make_unique<BlockRandomAccessSparseMatrixAdapter>(*sc);
-  auto preconditioner =
-      std::make_unique<BlockRandomAccessDiagonalMatrixAdapter>(
-          *preconditioner_);
-
-  ConjugateGradientsSolverOptions cg_options;
-  cg_options.min_num_iterations = options().min_num_iterations;
-  cg_options.max_num_iterations = options().max_num_iterations;
-  cg_options.residual_reset_period = options().residual_reset_period;
-  cg_options.q_tolerance = per_solve_options.q_tolerance;
-  cg_options.r_tolerance = per_solve_options.r_tolerance;
-
-  cg_solution_ = Vector::Zero(sc->num_rows());
-  for (int i = 0; i < 4; ++i) {
-    if (scratch_[i] == nullptr) {
-      scratch_[i] = new Vector(sc->num_rows());
-    }
-  }
-  auto summary = ConjugateGradientsSolver<Vector>(
-      cg_options, *lhs, rhs(), *preconditioner, scratch_, cg_solution_);
-  VectorRef(solution, sc->num_rows()) = cg_solution_;
-  return summary;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/schur_complement_solver.h b/third_party/ceres/internal/ceres/schur_complement_solver.h
deleted file mode 100644
index 5e11b94..0000000
--- a/third_party/ceres/internal/ceres/schur_complement_solver.h
+++ /dev/null
@@ -1,198 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_SCHUR_COMPLEMENT_SOLVER_H_
-#define CERES_INTERNAL_SCHUR_COMPLEMENT_SOLVER_H_
-
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "ceres/block_random_access_diagonal_matrix.h"
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/dense_cholesky.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-#include "ceres/types.h"
-
-#ifdef CERES_USE_EIGEN_SPARSE
-#include "Eigen/OrderingMethods"
-#include "Eigen/SparseCholesky"
-#endif
-
-#include "ceres/internal/disable_warnings.h"
-
-namespace ceres::internal {
-
-class BlockSparseMatrix;
-class SparseCholesky;
-
-// Base class for Schur complement based linear least squares
-// solvers. It assumes that the input linear system Ax = b can be
-// partitioned into
-//
-//  E y + F z = b
-//
-// Where x = [y;z] is a partition of the variables.  The partitioning
-// of the variables is such that, E'E is a block diagonal
-// matrix. Further, the rows of A are ordered so that for every
-// variable block in y, all the rows containing that variable block
-// occur as a vertically contiguous block. i.e the matrix A looks like
-//
-//              E                 F
-//  A = [ y1   0   0   0 |  z1    0    0   0    z5]
-//      [ y1   0   0   0 |  z1   z2    0   0     0]
-//      [  0  y2   0   0 |   0    0   z3   0     0]
-//      [  0   0  y3   0 |  z1   z2   z3  z4    z5]
-//      [  0   0  y3   0 |  z1    0    0   0    z5]
-//      [  0   0   0  y4 |   0    0    0   0    z5]
-//      [  0   0   0  y4 |   0   z2    0   0     0]
-//      [  0   0   0  y4 |   0    0    0   0     0]
-//      [  0   0   0   0 |  z1    0    0   0     0]
-//      [  0   0   0   0 |   0    0   z3  z4    z5]
-//
-// This structure should be reflected in the corresponding
-// CompressedRowBlockStructure object associated with A. The linear
-// system Ax = b should either be well posed or the array D below
-// should be non-null and the diagonal matrix corresponding to it
-// should be non-singular.
-//
-// SchurComplementSolver has two sub-classes.
-//
-// DenseSchurComplementSolver: For problems where the Schur complement
-// matrix is small and dense, or if CHOLMOD/SuiteSparse is not
-// installed. For structure from motion problems, this is solver can
-// be used for problems with upto a few hundred cameras.
-//
-// SparseSchurComplementSolver: For problems where the Schur
-// complement matrix is large and sparse. It requires that Ceres be
-// build with at least one sparse linear algebra library, as it
-// computes a sparse Cholesky factorization of the Schur complement.
-//
-// This solver can be used for solving structure from motion problems
-// with tens of thousands of cameras, though depending on the exact
-// sparsity structure, it maybe better to use an iterative solver.
-//
-// The two solvers can be instantiated by calling
-// LinearSolver::CreateLinearSolver with LinearSolver::Options::type
-// set to DENSE_SCHUR and SPARSE_SCHUR
-// respectively. LinearSolver::Options::elimination_groups[0] should
-// be at least 1.
-class CERES_NO_EXPORT SchurComplementSolver : public BlockSparseMatrixSolver {
- public:
-  explicit SchurComplementSolver(const LinearSolver::Options& options);
-  SchurComplementSolver(const SchurComplementSolver&) = delete;
-  void operator=(const SchurComplementSolver&) = delete;
-
-  LinearSolver::Summary SolveImpl(
-      BlockSparseMatrix* A,
-      const double* b,
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* x) override;
-
- protected:
-  const LinearSolver::Options& options() const { return options_; }
-
-  void set_lhs(std::unique_ptr<BlockRandomAccessMatrix> lhs) {
-    lhs_ = std::move(lhs);
-  }
-  const BlockRandomAccessMatrix* lhs() const { return lhs_.get(); }
-  BlockRandomAccessMatrix* mutable_lhs() { return lhs_.get(); }
-  void ResizeRhs(int n) { rhs_.resize(n); }
-  const Vector& rhs() const { return rhs_; }
-
- private:
-  virtual void InitStorage(const CompressedRowBlockStructure* bs) = 0;
-  virtual LinearSolver::Summary SolveReducedLinearSystem(
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* solution) = 0;
-
-  LinearSolver::Options options_;
-
-  std::unique_ptr<SchurEliminatorBase> eliminator_;
-  std::unique_ptr<BlockRandomAccessMatrix> lhs_;
-  Vector rhs_;
-};
-
-// Dense Cholesky factorization based solver.
-class CERES_NO_EXPORT DenseSchurComplementSolver final
-    : public SchurComplementSolver {
- public:
-  explicit DenseSchurComplementSolver(const LinearSolver::Options& options);
-  DenseSchurComplementSolver(const DenseSchurComplementSolver&) = delete;
-  void operator=(const DenseSchurComplementSolver&) = delete;
-
-  ~DenseSchurComplementSolver() override;
-
- private:
-  void InitStorage(const CompressedRowBlockStructure* bs) final;
-  LinearSolver::Summary SolveReducedLinearSystem(
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* solution) final;
-
-  std::unique_ptr<DenseCholesky> cholesky_;
-};
-
-// Sparse Cholesky factorization based solver.
-class CERES_NO_EXPORT SparseSchurComplementSolver final
-    : public SchurComplementSolver {
- public:
-  explicit SparseSchurComplementSolver(const LinearSolver::Options& options);
-  SparseSchurComplementSolver(const SparseSchurComplementSolver&) = delete;
-  void operator=(const SparseSchurComplementSolver&) = delete;
-
-  ~SparseSchurComplementSolver() override;
-
- private:
-  void InitStorage(const CompressedRowBlockStructure* bs) final;
-  LinearSolver::Summary SolveReducedLinearSystem(
-      const LinearSolver::PerSolveOptions& per_solve_options,
-      double* solution) final;
-  LinearSolver::Summary SolveReducedLinearSystemUsingConjugateGradients(
-      const LinearSolver::PerSolveOptions& per_solve_options, double* solution);
-
-  std::vector<Block> blocks_;
-  std::unique_ptr<SparseCholesky> sparse_cholesky_;
-  std::unique_ptr<BlockRandomAccessDiagonalMatrix> preconditioner_;
-  std::unique_ptr<CompressedRowSparseMatrix> crs_lhs_;
-  Vector cg_solution_;
-  Vector* scratch_[4] = {nullptr, nullptr, nullptr, nullptr};
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SCHUR_COMPLEMENT_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/schur_complement_solver_test.cc b/third_party/ceres/internal/ceres/schur_complement_solver_test.cc
deleted file mode 100644
index 7c5ce28..0000000
--- a/third_party/ceres/internal/ceres/schur_complement_solver_test.cc
+++ /dev/null
@@ -1,322 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/schur_complement_solver.h"
-
-#include <cstddef>
-#include <memory>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/detect_structure.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class SchurComplementSolverTest : public ::testing::Test {
- protected:
-  void SetUpFromProblemId(int problem_id) {
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(problem_id);
-
-    CHECK(problem != nullptr);
-    A.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-    b = std::move(problem->b);
-    D = std::move(problem->D);
-
-    num_cols = A->num_cols();
-    num_rows = A->num_rows();
-    num_eliminate_blocks = problem->num_eliminate_blocks;
-
-    x.resize(num_cols);
-    sol.resize(num_cols);
-    sol_d.resize(num_cols);
-
-    LinearSolver::Options options;
-    options.type = DENSE_QR;
-    ContextImpl context;
-    options.context = &context;
-
-    std::unique_ptr<LinearSolver> qr(LinearSolver::Create(options));
-
-    TripletSparseMatrix triplet_A(
-        A->num_rows(), A->num_cols(), A->num_nonzeros());
-    A->ToTripletSparseMatrix(&triplet_A);
-
-    // Gold standard solutions using dense QR factorization.
-    DenseSparseMatrix dense_A(triplet_A);
-    qr->Solve(&dense_A, b.get(), LinearSolver::PerSolveOptions(), sol.data());
-
-    // Gold standard solution with appended diagonal.
-    LinearSolver::PerSolveOptions per_solve_options;
-    per_solve_options.D = D.get();
-    qr->Solve(&dense_A, b.get(), per_solve_options, sol_d.data());
-  }
-
-  void ComputeAndCompareSolutions(
-      int problem_id,
-      bool regularization,
-      ceres::LinearSolverType linear_solver_type,
-      ceres::DenseLinearAlgebraLibraryType dense_linear_algebra_library_type,
-      ceres::SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-      ceres::internal::OrderingType ordering_type) {
-    SetUpFromProblemId(problem_id);
-    LinearSolver::Options options;
-    options.elimination_groups.push_back(num_eliminate_blocks);
-    options.elimination_groups.push_back(A->block_structure()->cols.size() -
-                                         num_eliminate_blocks);
-    options.type = linear_solver_type;
-    options.dense_linear_algebra_library_type =
-        dense_linear_algebra_library_type;
-    options.sparse_linear_algebra_library_type =
-        sparse_linear_algebra_library_type;
-    options.ordering_type = ordering_type;
-    ContextImpl context;
-    options.context = &context;
-    DetectStructure(*A->block_structure(),
-                    num_eliminate_blocks,
-                    &options.row_block_size,
-                    &options.e_block_size,
-                    &options.f_block_size);
-
-    std::unique_ptr<LinearSolver> solver(LinearSolver::Create(options));
-
-    LinearSolver::PerSolveOptions per_solve_options;
-    LinearSolver::Summary summary;
-    if (regularization) {
-      per_solve_options.D = D.get();
-    }
-
-    summary = solver->Solve(A.get(), b.get(), per_solve_options, x.data());
-    EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-
-    if (regularization) {
-      ASSERT_NEAR((sol_d - x).norm() / num_cols, 0, 1e-10)
-          << "Regularized Expected solution: " << sol_d.transpose()
-          << " Actual solution: " << x.transpose();
-    } else {
-      ASSERT_NEAR((sol - x).norm() / num_cols, 0, 1e-10)
-          << "Unregularized Expected solution: " << sol.transpose()
-          << " Actual solution: " << x.transpose();
-    }
-  }
-
-  int num_rows;
-  int num_cols;
-  int num_eliminate_blocks;
-
-  std::unique_ptr<BlockSparseMatrix> A;
-  std::unique_ptr<double[]> b;
-  std::unique_ptr<double[]> D;
-  Vector x;
-  Vector sol;
-  Vector sol_d;
-};
-
-// TODO(sameeragarwal): Refactor these using value parameterized tests.
-// TODO(sameeragarwal): More extensive tests using random matrices.
-TEST_F(SchurComplementSolverTest, DenseSchurWithEigenSmallProblem) {
-  ComputeAndCompareSolutions(
-      2, false, DENSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      2, true, DENSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-}
-
-TEST_F(SchurComplementSolverTest, DenseSchurWithEigenLargeProblem) {
-  ComputeAndCompareSolutions(
-      3, false, DENSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      3, true, DENSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-}
-
-TEST_F(SchurComplementSolverTest, DenseSchurWithEigenVaryingFBlockSize) {
-  ComputeAndCompareSolutions(
-      4, true, DENSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-}
-
-#ifndef CERES_NO_LAPACK
-TEST_F(SchurComplementSolverTest, DenseSchurWithLAPACKSmallProblem) {
-  ComputeAndCompareSolutions(
-      2, false, DENSE_SCHUR, LAPACK, SUITE_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      2, true, DENSE_SCHUR, LAPACK, SUITE_SPARSE, OrderingType::NATURAL);
-}
-
-TEST_F(SchurComplementSolverTest, DenseSchurWithLAPACKLargeProblem) {
-  ComputeAndCompareSolutions(
-      3, false, DENSE_SCHUR, LAPACK, SUITE_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      3, true, DENSE_SCHUR, LAPACK, SUITE_SPARSE, OrderingType::NATURAL);
-}
-#endif
-
-#ifndef CERES_NO_SUITESPARSE
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithSuiteSparseSmallProblemNATURAL) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-}
-
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithSuiteSparseLargeProblemNATURAL) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NATURAL);
-}
-
-TEST_F(SchurComplementSolverTest, SparseSchurWithSuiteSparseSmallProblemAMD) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::AMD);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::AMD);
-}
-
-TEST_F(SchurComplementSolverTest, SparseSchurWithSuiteSparseLargeProblemAMD) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::AMD);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::AMD);
-}
-
-#ifndef CERES_NO_EIGEN_METIS
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithSuiteSparseSmallProblemNESDIS) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NESDIS);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NESDIS);
-}
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithSuiteSparseLargeProblemNESDIS) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NESDIS);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, SUITE_SPARSE, OrderingType::NESDIS);
-}
-#endif  // CERES_NO_EIGEN_METIS
-#endif  // CERES_NO_SUITESPARSE
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithAccelerateSparseSmallProblemAMD) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::AMD);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::AMD);
-}
-
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithAccelerateSparseSmallProblemNESDIS) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::NESDIS);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::NESDIS);
-}
-
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithAccelerateSparseLargeProblemAMD) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::AMD);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::AMD);
-}
-
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithAccelerateSparseLargeProblemNESDIS) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::NESDIS);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, ACCELERATE_SPARSE, OrderingType::NESDIS);
-}
-#endif  // CERES_NO_ACCELERATE_SPARSE
-
-#ifdef CERES_USE_EIGEN_SPARSE
-TEST_F(SchurComplementSolverTest, SparseSchurWithEigenSparseSmallProblemAMD) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::AMD);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::AMD);
-}
-
-#ifndef CERES_NO_EIGEN_METIS
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithEigenSparseSmallProblemNESDIS) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NESDIS);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NESDIS);
-}
-#endif
-
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithEigenSparseSmallProblemNATURAL) {
-  ComputeAndCompareSolutions(
-      2, false, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      2, true, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NATURAL);
-}
-
-TEST_F(SchurComplementSolverTest, SparseSchurWithEigenSparseLargeProblemAMD) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::AMD);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::AMD);
-}
-
-#ifndef CERES_NO_EIGEN_METIS
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithEigenSparseLargeProblemNESDIS) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NESDIS);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NESDIS);
-}
-#endif
-
-TEST_F(SchurComplementSolverTest,
-       SparseSchurWithEigenSparseLargeProblemNATURAL) {
-  ComputeAndCompareSolutions(
-      3, false, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NATURAL);
-  ComputeAndCompareSolutions(
-      3, true, SPARSE_SCHUR, EIGEN, EIGEN_SPARSE, OrderingType::NATURAL);
-}
-#endif  // CERES_USE_EIGEN_SPARSE
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/schur_eliminator.cc b/third_party/ceres/internal/ceres/schur_eliminator.cc
deleted file mode 100644
index cb079b5..0000000
--- a/third_party/ceres/internal/ceres/schur_eliminator.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-#include <memory>
-
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-
-namespace ceres::internal {
-
-SchurEliminatorBase::~SchurEliminatorBase() = default;
-
-std::unique_ptr<SchurEliminatorBase> SchurEliminatorBase::Create(
-    const LinearSolver::Options& options) {
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 2)) {
-    return std::make_unique<SchurEliminator<2, 2, 2>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<SchurEliminator<2, 2, 3>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<SchurEliminator<2, 2, 4>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2)) {
-    return std::make_unique<SchurEliminator<2, 2, Eigen::Dynamic>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<SchurEliminator<2, 3, 3>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<SchurEliminator<2, 3, 4>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 6)) {
-    return std::make_unique<SchurEliminator<2, 3, 6>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 9)) {
-    return std::make_unique<SchurEliminator<2, 3, 9>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3)) {
-    return std::make_unique<SchurEliminator<2, 3, Eigen::Dynamic>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<SchurEliminator<2, 4, 3>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<SchurEliminator<2, 4, 4>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 6)) {
-    return std::make_unique<SchurEliminator<2, 4, 6>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 8)) {
-    return std::make_unique<SchurEliminator<2, 4, 8>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 9)) {
-    return std::make_unique<SchurEliminator<2, 4, 9>>(options);
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4)) {
-    return std::make_unique<SchurEliminator<2, 4, Eigen::Dynamic>>(options);
-  }
-  if (options.row_block_size == 2) {
-    return std::make_unique<SchurEliminator<2, Eigen::Dynamic, Eigen::Dynamic>>(options);
-  }
-  if ((options.row_block_size == 3) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<SchurEliminator<3, 3, 3>>(options);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 2)) {
-    return std::make_unique<SchurEliminator<4, 4, 2>>(options);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 3)) {
-    return std::make_unique<SchurEliminator<4, 4, 3>>(options);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 4)) {
-    return std::make_unique<SchurEliminator<4, 4, 4>>(options);
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4)) {
-    return std::make_unique<SchurEliminator<4, 4, Eigen::Dynamic>>(options);
-  }
-
-#endif
-  VLOG(1) << "Template specializations not found for <"
-          << options.row_block_size << "," << options.e_block_size << ","
-          << options.f_block_size << ">";
-  return std::make_unique<SchurEliminator<Eigen::Dynamic,
-                                          Eigen::Dynamic,
-                                          Eigen::Dynamic>>(options);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/schur_eliminator.h b/third_party/ceres/internal/ceres/schur_eliminator.h
deleted file mode 100644
index 3832fe6..0000000
--- a/third_party/ceres/internal/ceres/schur_eliminator.h
+++ /dev/null
@@ -1,630 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_SCHUR_ELIMINATOR_H_
-#define CERES_INTERNAL_SCHUR_ELIMINATOR_H_
-
-#include <map>
-#include <memory>
-#include <mutex>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-// Classes implementing the SchurEliminatorBase interface implement
-// variable elimination for linear least squares problems. Assuming
-// that the input linear system Ax = b can be partitioned into
-//
-//  E y + F z = b
-//
-// Where x = [y;z] is a partition of the variables.  The partitioning
-// of the variables is such that, E'E is a block diagonal matrix. Or
-// in other words, the parameter blocks in E form an independent set
-// of the graph implied by the block matrix A'A. Then, this class
-// provides the functionality to compute the Schur complement system
-//
-//   S z = r
-//
-// where
-//
-//   S = F'F - F'E (E'E)^{-1} E'F and r = F'b - F'E(E'E)^(-1) E'b
-//
-// This is the Eliminate operation, i.e., construct the linear system
-// obtained by eliminating the variables in E.
-//
-// The eliminator also provides the reverse functionality, i.e. given
-// values for z it can back substitute for the values of y, by solving the
-// linear system
-//
-//  Ey = b - F z
-//
-// which is done by observing that
-//
-//  y = (E'E)^(-1) [E'b - E'F z]
-//
-// The eliminator has a number of requirements.
-//
-// The rows of A are ordered so that for every variable block in y,
-// all the rows containing that variable block occur as a vertically
-// contiguous block. i.e the matrix A looks like
-//
-//              E                 F                   chunk
-//  A = [ y1   0   0   0 |  z1    0    0   0    z5]     1
-//      [ y1   0   0   0 |  z1   z2    0   0     0]     1
-//      [  0  y2   0   0 |   0    0   z3   0     0]     2
-//      [  0   0  y3   0 |  z1   z2   z3  z4    z5]     3
-//      [  0   0  y3   0 |  z1    0    0   0    z5]     3
-//      [  0   0   0  y4 |   0    0    0   0    z5]     4
-//      [  0   0   0  y4 |   0   z2    0   0     0]     4
-//      [  0   0   0  y4 |   0    0    0   0     0]     4
-//      [  0   0   0   0 |  z1    0    0   0     0] non chunk blocks
-//      [  0   0   0   0 |   0    0   z3  z4    z5] non chunk blocks
-//
-// This structure should be reflected in the corresponding
-// CompressedRowBlockStructure object associated with A. The linear
-// system Ax = b should either be well posed or the array D below
-// should be non-null and the diagonal matrix corresponding to it
-// should be non-singular. For simplicity of exposition only the case
-// with a null D is described.
-//
-// The usual way to do the elimination is as follows. Starting with
-//
-//  E y + F z = b
-//
-// we can form the normal equations,
-//
-//  E'E y + E'F z = E'b
-//  F'E y + F'F z = F'b
-//
-// multiplying both sides of the first equation by (E'E)^(-1) and then
-// by F'E we get
-//
-//  F'E y + F'E (E'E)^(-1) E'F z =  F'E (E'E)^(-1) E'b
-//  F'E y +                F'F z =  F'b
-//
-// now subtracting the two equations we get
-//
-// [FF' - F'E (E'E)^(-1) E'F] z = F'b - F'E(E'E)^(-1) E'b
-//
-// Instead of forming the normal equations and operating on them as
-// general sparse matrices, the algorithm here deals with one
-// parameter block in y at a time. The rows corresponding to a single
-// parameter block yi are known as a chunk, and the algorithm operates
-// on one chunk at a time. The mathematics remains the same since the
-// reduced linear system can be shown to be the sum of the reduced
-// linear systems for each chunk. This can be seen by observing two
-// things.
-//
-//  1. E'E is a block diagonal matrix.
-//
-//  2. When E'F is computed, only the terms within a single chunk
-//  interact, i.e for y1 column blocks when transposed and multiplied
-//  with F, the only non-zero contribution comes from the blocks in
-//  chunk1.
-//
-// Thus, the reduced linear system
-//
-//  FF' - F'E (E'E)^(-1) E'F
-//
-// can be re-written as
-//
-//  sum_k F_k F_k' - F_k'E_k (E_k'E_k)^(-1) E_k' F_k
-//
-// Where the sum is over chunks and E_k'E_k is dense matrix of size y1
-// x y1.
-//
-// Advanced usage. Until now it has been assumed that the user would
-// be interested in all of the Schur Complement S. However, it is also
-// possible to use this eliminator to obtain an arbitrary submatrix of
-// the full Schur complement. When the eliminator is generating the
-// blocks of S, it asks the RandomAccessBlockMatrix instance passed to
-// it if it has storage for that block. If it does, the eliminator
-// computes/updates it, if not it is skipped. This is useful when one
-// is interested in constructing a preconditioner based on the Schur
-// Complement, e.g., computing the block diagonal of S so that it can
-// be used as a preconditioner for an Iterative Substructuring based
-// solver [See Agarwal et al, Bundle Adjustment in the Large, ECCV
-// 2008 for an example of such use].
-//
-// Example usage: Please see schur_complement_solver.cc
-class CERES_NO_EXPORT SchurEliminatorBase {
- public:
-  virtual ~SchurEliminatorBase();
-
-  // Initialize the eliminator. It is the user's responsibility to call
-  // this function before calling Eliminate or BackSubstitute. It is
-  // also the caller's responsibility to ensure that the
-  // CompressedRowBlockStructure object passed to this method is the
-  // same one (or is equivalent to) the one associated with the
-  // BlockSparseMatrix objects below.
-  //
-  // assume_full_rank_ete controls how the eliminator inverts with the
-  // diagonal blocks corresponding to e blocks in A'A. If
-  // assume_full_rank_ete is true, then a Cholesky factorization is
-  // used to compute the inverse, otherwise a singular value
-  // decomposition is used to compute the pseudo inverse.
-  virtual void Init(int num_eliminate_blocks,
-                    bool assume_full_rank_ete,
-                    const CompressedRowBlockStructure* bs) = 0;
-
-  // Compute the Schur complement system from the augmented linear
-  // least squares problem [A;D] x = [b;0]. The left hand side and the
-  // right hand side of the reduced linear system are returned in lhs
-  // and rhs respectively.
-  //
-  // It is the caller's responsibility to construct and initialize
-  // lhs. Depending upon the structure of the lhs object passed here,
-  // the full or a submatrix of the Schur complement will be computed.
-  //
-  // Since the Schur complement is a symmetric matrix, only the upper
-  // triangular part of the Schur complement is computed.
-  virtual void Eliminate(const BlockSparseMatrixData& A,
-                         const double* b,
-                         const double* D,
-                         BlockRandomAccessMatrix* lhs,
-                         double* rhs) = 0;
-
-  // Given values for the variables z in the F block of A, solve for
-  // the optimal values of the variables y corresponding to the E
-  // block in A.
-  virtual void BackSubstitute(const BlockSparseMatrixData& A,
-                              const double* b,
-                              const double* D,
-                              const double* z,
-                              double* y) = 0;
-  // Factory
-  static std::unique_ptr<SchurEliminatorBase> Create(
-      const LinearSolver::Options& options);
-};
-
-// Templated implementation of the SchurEliminatorBase interface. The
-// templating is on the sizes of the row, e and f blocks sizes in the
-// input matrix. In many problems, the sizes of one or more of these
-// blocks are constant, in that case, its worth passing these
-// parameters as template arguments so that they are visible to the
-// compiler and can be used for compile time optimization of the low
-// level linear algebra routines.
-template <int kRowBlockSize = Eigen::Dynamic,
-          int kEBlockSize = Eigen::Dynamic,
-          int kFBlockSize = Eigen::Dynamic>
-class CERES_NO_EXPORT SchurEliminator final : public SchurEliminatorBase {
- public:
-  explicit SchurEliminator(const LinearSolver::Options& options)
-      : num_threads_(options.num_threads), context_(options.context) {
-    CHECK(context_ != nullptr);
-  }
-
-  // SchurEliminatorBase Interface
-  ~SchurEliminator() override;
-  void Init(int num_eliminate_blocks,
-            bool assume_full_rank_ete,
-            const CompressedRowBlockStructure* bs) final;
-  void Eliminate(const BlockSparseMatrixData& A,
-                 const double* b,
-                 const double* D,
-                 BlockRandomAccessMatrix* lhs,
-                 double* rhs) final;
-  void BackSubstitute(const BlockSparseMatrixData& A,
-                      const double* b,
-                      const double* D,
-                      const double* z,
-                      double* y) final;
-
- private:
-  // Chunk objects store combinatorial information needed to
-  // efficiently eliminate a whole chunk out of the least squares
-  // problem. Consider the first chunk in the example matrix above.
-  //
-  //      [ y1   0   0   0 |  z1    0    0   0    z5]
-  //      [ y1   0   0   0 |  z1   z2    0   0     0]
-  //
-  // One of the intermediate quantities that needs to be calculated is
-  // for each row the product of the y block transposed with the
-  // non-zero z block, and the sum of these blocks across rows. A
-  // temporary array "buffer_" is used for computing and storing them
-  // and the buffer_layout maps the indices of the z-blocks to
-  // position in the buffer_ array.  The size of the chunk is the
-  // number of row blocks/residual blocks for the particular y block
-  // being considered.
-  //
-  // For the example chunk shown above,
-  //
-  // size = 2
-  //
-  // The entries of buffer_layout will be filled in the following order.
-  //
-  // buffer_layout[z1] = 0
-  // buffer_layout[z5] = y1 * z1
-  // buffer_layout[z2] = y1 * z1 + y1 * z5
-  using BufferLayoutType = std::map<int, int>;
-  struct Chunk {
-    explicit Chunk(int start) : size(0), start(start) {}
-    int size;
-    int start;
-    BufferLayoutType buffer_layout;
-  };
-
-  void ChunkDiagonalBlockAndGradient(
-      const Chunk& chunk,
-      const BlockSparseMatrixData& A,
-      const double* b,
-      int row_block_counter,
-      typename EigenTypes<kEBlockSize, kEBlockSize>::Matrix* eet,
-      double* g,
-      double* buffer,
-      BlockRandomAccessMatrix* lhs);
-
-  void UpdateRhs(const Chunk& chunk,
-                 const BlockSparseMatrixData& A,
-                 const double* b,
-                 int row_block_counter,
-                 const double* inverse_ete_g,
-                 double* rhs);
-
-  void ChunkOuterProduct(int thread_id,
-                         const CompressedRowBlockStructure* bs,
-                         const Matrix& inverse_eet,
-                         const double* buffer,
-                         const BufferLayoutType& buffer_layout,
-                         BlockRandomAccessMatrix* lhs);
-  void EBlockRowOuterProduct(const BlockSparseMatrixData& A,
-                             int row_block_index,
-                             BlockRandomAccessMatrix* lhs);
-
-  void NoEBlockRowsUpdate(const BlockSparseMatrixData& A,
-                          const double* b,
-                          int row_block_counter,
-                          BlockRandomAccessMatrix* lhs,
-                          double* rhs);
-
-  void NoEBlockRowOuterProduct(const BlockSparseMatrixData& A,
-                               int row_block_index,
-                               BlockRandomAccessMatrix* lhs);
-
-  int num_threads_;
-  ContextImpl* context_;
-  int num_eliminate_blocks_;
-  bool assume_full_rank_ete_;
-
-  // Block layout of the columns of the reduced linear system. Since
-  // the f blocks can be of varying size, this vector stores the
-  // position of each f block in the row/col of the reduced linear
-  // system. Thus lhs_row_layout_[i] is the row/col position of the
-  // i^th f block.
-  std::vector<int> lhs_row_layout_;
-
-  // Combinatorial structure of the chunks in A. For more information
-  // see the documentation of the Chunk object above.
-  std::vector<Chunk> chunks_;
-
-  // TODO(sameeragarwal): The following two arrays contain per-thread
-  // storage. They should be refactored into a per thread struct.
-
-  // Buffer to store the products of the y and z blocks generated
-  // during the elimination phase. buffer_ is of size num_threads *
-  // buffer_size_. Each thread accesses the chunk
-  //
-  //   [thread_id * buffer_size_ , (thread_id + 1) * buffer_size_]
-  //
-  std::unique_ptr<double[]> buffer_;
-
-  // Buffer to store per thread matrix matrix products used by
-  // ChunkOuterProduct. Like buffer_ it is of size num_threads *
-  // buffer_size_. Each thread accesses the chunk
-  //
-  //   [thread_id * buffer_size_ , (thread_id + 1) * buffer_size_ -1]
-  //
-  std::unique_ptr<double[]> chunk_outer_product_buffer_;
-
-  int buffer_size_;
-  int uneliminated_row_begins_;
-
-  // Locks for the blocks in the right hand side of the reduced linear
-  // system.
-  std::vector<std::mutex*> rhs_locks_;
-};
-
-// SchurEliminatorForOneFBlock specializes the SchurEliminatorBase interface for
-// the case where there is exactly one f-block and all three parameters
-// kRowBlockSize, kEBlockSize and KFBlockSize are known at compile time. This is
-// the case for some two view bundle adjustment problems which have very
-// stringent latency requirements.
-//
-// Under these assumptions, we can simplify the more general algorithm
-// implemented by SchurEliminatorImpl significantly. Two of the major
-// contributors to the increased performance are:
-//
-// 1. Simpler loop structure and less use of dynamic memory. Almost everything
-//    is on the stack and benefits from aligned memory as well as fixed sized
-//    vectorization. We are also able to reason about temporaries and control
-//    their lifetimes better.
-// 2. Use of inverse() over llt().solve(Identity).
-template <int kRowBlockSize = Eigen::Dynamic,
-          int kEBlockSize = Eigen::Dynamic,
-          int kFBlockSize = Eigen::Dynamic>
-class CERES_NO_EXPORT SchurEliminatorForOneFBlock final
-    : public SchurEliminatorBase {
- public:
-  // TODO(sameeragarwal) Find out why "assume_full_rank_ete" is not used here
-  void Init(int num_eliminate_blocks,
-            bool /*assume_full_rank_ete*/,
-            const CompressedRowBlockStructure* bs) override {
-    CHECK_GT(num_eliminate_blocks, 0)
-        << "SchurComplementSolver cannot be initialized with "
-        << "num_eliminate_blocks = 0.";
-    CHECK_EQ(bs->cols.size() - num_eliminate_blocks, 1);
-
-    num_eliminate_blocks_ = num_eliminate_blocks;
-    const int num_row_blocks = bs->rows.size();
-    chunks_.clear();
-    int r = 0;
-    // Iterate over the row blocks of A, and detect the chunks. The
-    // matrix should already have been ordered so that all rows
-    // containing the same y block are vertically contiguous.
-    while (r < num_row_blocks) {
-      const int e_block_id = bs->rows[r].cells.front().block_id;
-      if (e_block_id >= num_eliminate_blocks_) {
-        break;
-      }
-
-      chunks_.push_back(Chunk());
-      Chunk& chunk = chunks_.back();
-      chunk.num_rows = 0;
-      chunk.start = r;
-      // Add to the chunk until the first block in the row is
-      // different than the one in the first row for the chunk.
-      while (r + chunk.num_rows < num_row_blocks) {
-        const CompressedRow& row = bs->rows[r + chunk.num_rows];
-        if (row.cells.front().block_id != e_block_id) {
-          break;
-        }
-        ++chunk.num_rows;
-      }
-      r += chunk.num_rows;
-    }
-
-    const Chunk& last_chunk = chunks_.back();
-    uneliminated_row_begins_ = last_chunk.start + last_chunk.num_rows;
-    e_t_e_inverse_matrices_.resize(kEBlockSize * kEBlockSize * chunks_.size());
-    std::fill(
-        e_t_e_inverse_matrices_.begin(), e_t_e_inverse_matrices_.end(), 0.0);
-  }
-
-  void Eliminate(const BlockSparseMatrixData& A,
-                 const double* b,
-                 const double* D,
-                 BlockRandomAccessMatrix* lhs_bram,
-                 double* rhs_ptr) override {
-    // Since there is only one f-block, we can call GetCell once, and cache its
-    // output.
-    int r, c, row_stride, col_stride;
-    CellInfo* cell_info =
-        lhs_bram->GetCell(0, 0, &r, &c, &row_stride, &col_stride);
-    typename EigenTypes<kFBlockSize, kFBlockSize>::MatrixRef lhs(
-        cell_info->values, kFBlockSize, kFBlockSize);
-    typename EigenTypes<kFBlockSize>::VectorRef rhs(rhs_ptr, kFBlockSize);
-
-    lhs.setZero();
-    rhs.setZero();
-
-    const CompressedRowBlockStructure* bs = A.block_structure();
-    const double* values = A.values();
-
-    // Add the diagonal to the Schur complement.
-    if (D != nullptr) {
-      typename EigenTypes<kFBlockSize>::ConstVectorRef diag(
-          D + bs->cols[num_eliminate_blocks_].position, kFBlockSize);
-      lhs.diagonal() = diag.array().square().matrix();
-    }
-
-    Eigen::Matrix<double, kEBlockSize, kFBlockSize> tmp;
-    Eigen::Matrix<double, kEBlockSize, 1> tmp2;
-
-    // The following loop works on a block matrix which looks as follows
-    // (number of rows can be anything):
-    //
-    // [e_1 | f_1] = [b1]
-    // [e_2 | f_2] = [b2]
-    // [e_3 | f_3] = [b3]
-    // [e_4 | f_4] = [b4]
-    //
-    // and computes the following
-    //
-    // e_t_e = sum_i e_i^T * e_i
-    // e_t_e_inverse = inverse(e_t_e)
-    // e_t_f = sum_i e_i^T f_i
-    // e_t_b = sum_i e_i^T b_i
-    // f_t_b = sum_i f_i^T b_i
-    //
-    // lhs += sum_i f_i^T * f_i - e_t_f^T * e_t_e_inverse * e_t_f
-    // rhs += f_t_b - e_t_f^T * e_t_e_inverse * e_t_b
-    for (int i = 0; i < chunks_.size(); ++i) {
-      const Chunk& chunk = chunks_[i];
-      const int e_block_id = bs->rows[chunk.start].cells.front().block_id;
-
-      // Naming convention, e_t_e = e_block.transpose() * e_block;
-      Eigen::Matrix<double, kEBlockSize, kEBlockSize> e_t_e;
-      Eigen::Matrix<double, kEBlockSize, kFBlockSize> e_t_f;
-      Eigen::Matrix<double, kEBlockSize, 1> e_t_b;
-      Eigen::Matrix<double, kFBlockSize, 1> f_t_b;
-
-      // Add the square of the diagonal to e_t_e.
-      if (D != nullptr) {
-        const typename EigenTypes<kEBlockSize>::ConstVectorRef diag(
-            D + bs->cols[e_block_id].position, kEBlockSize);
-        e_t_e = diag.array().square().matrix().asDiagonal();
-      } else {
-        e_t_e.setZero();
-      }
-      e_t_f.setZero();
-      e_t_b.setZero();
-      f_t_b.setZero();
-
-      for (int j = 0; j < chunk.num_rows; ++j) {
-        const int row_id = chunk.start + j;
-        const auto& row = bs->rows[row_id];
-        const typename EigenTypes<kRowBlockSize, kEBlockSize>::ConstMatrixRef
-            e_block(values + row.cells[0].position, kRowBlockSize, kEBlockSize);
-        const typename EigenTypes<kRowBlockSize>::ConstVectorRef b_block(
-            b + row.block.position, kRowBlockSize);
-
-        e_t_e.noalias() += e_block.transpose() * e_block;
-        e_t_b.noalias() += e_block.transpose() * b_block;
-
-        if (row.cells.size() == 1) {
-          // There is no f block, so there is nothing more to do.
-          continue;
-        }
-
-        const typename EigenTypes<kRowBlockSize, kFBlockSize>::ConstMatrixRef
-            f_block(values + row.cells[1].position, kRowBlockSize, kFBlockSize);
-        e_t_f.noalias() += e_block.transpose() * f_block;
-        lhs.noalias() += f_block.transpose() * f_block;
-        f_t_b.noalias() += f_block.transpose() * b_block;
-      }
-
-      // BackSubstitute computes the same inverse, and this is the key workload
-      // there, so caching these inverses makes BackSubstitute essentially free.
-      typename EigenTypes<kEBlockSize, kEBlockSize>::MatrixRef e_t_e_inverse(
-          &e_t_e_inverse_matrices_[kEBlockSize * kEBlockSize * i],
-          kEBlockSize,
-          kEBlockSize);
-
-      // e_t_e is a symmetric positive definite matrix, so the standard way to
-      // compute its inverse is via the Cholesky factorization by calling
-      // e_t_e.llt().solve(Identity()). However, the inverse() method even
-      // though it is not optimized for symmetric matrices is significantly
-      // faster for small fixed size (up to 4x4) matrices.
-      //
-      // https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html#title3
-      e_t_e_inverse.noalias() = e_t_e.inverse();
-
-      // The use of these two pre-allocated tmp vectors saves temporaries in the
-      // expressions for lhs and rhs updates below and has a significant impact
-      // on the performance of this method.
-      tmp.noalias() = e_t_e_inverse * e_t_f;
-      tmp2.noalias() = e_t_e_inverse * e_t_b;
-
-      lhs.noalias() -= e_t_f.transpose() * tmp;
-      rhs.noalias() += f_t_b - e_t_f.transpose() * tmp2;
-    }
-
-    // The rows without any e-blocks can have arbitrary size but only contain
-    // the f-block.
-    //
-    // lhs += f_i^T f_i
-    // rhs += f_i^T b_i
-    for (int row_id = uneliminated_row_begins_; row_id < bs->rows.size();
-         ++row_id) {
-      const auto& row = bs->rows[row_id];
-      const auto& cell = row.cells[0];
-      const typename EigenTypes<Eigen::Dynamic, kFBlockSize>::ConstMatrixRef
-          f_block(values + cell.position, row.block.size, kFBlockSize);
-      const typename EigenTypes<Eigen::Dynamic>::ConstVectorRef b_block(
-          b + row.block.position, row.block.size);
-      lhs.noalias() += f_block.transpose() * f_block;
-      rhs.noalias() += f_block.transpose() * b_block;
-    }
-  }
-
-  // This implementation of BackSubstitute depends on Eliminate being called
-  // before this. SchurComplementSolver always does this.
-  //
-  // y_i = e_t_e_inverse * sum_i e_i^T * (b_i - f_i * z);
-  void BackSubstitute(const BlockSparseMatrixData& A,
-                      const double* b,
-                      const double* /*D*/,
-                      const double* z_ptr,
-                      double* y) override {
-    typename EigenTypes<kFBlockSize>::ConstVectorRef z(z_ptr, kFBlockSize);
-    const CompressedRowBlockStructure* bs = A.block_structure();
-    const double* values = A.values();
-    Eigen::Matrix<double, kEBlockSize, 1> tmp;
-    for (int i = 0; i < chunks_.size(); ++i) {
-      const Chunk& chunk = chunks_[i];
-      const int e_block_id = bs->rows[chunk.start].cells.front().block_id;
-      tmp.setZero();
-      for (int j = 0; j < chunk.num_rows; ++j) {
-        const int row_id = chunk.start + j;
-        const auto& row = bs->rows[row_id];
-        const typename EigenTypes<kRowBlockSize, kEBlockSize>::ConstMatrixRef
-            e_block(values + row.cells[0].position, kRowBlockSize, kEBlockSize);
-        const typename EigenTypes<kRowBlockSize>::ConstVectorRef b_block(
-            b + row.block.position, kRowBlockSize);
-
-        if (row.cells.size() == 1) {
-          // There is no f block.
-          tmp += e_block.transpose() * b_block;
-        } else {
-          typename EigenTypes<kRowBlockSize, kFBlockSize>::ConstMatrixRef
-              f_block(
-                  values + row.cells[1].position, kRowBlockSize, kFBlockSize);
-          tmp += e_block.transpose() * (b_block - f_block * z);
-        }
-      }
-
-      typename EigenTypes<kEBlockSize, kEBlockSize>::MatrixRef e_t_e_inverse(
-          &e_t_e_inverse_matrices_[kEBlockSize * kEBlockSize * i],
-          kEBlockSize,
-          kEBlockSize);
-
-      typename EigenTypes<kEBlockSize>::VectorRef y_block(
-          y + bs->cols[e_block_id].position, kEBlockSize);
-      y_block.noalias() = e_t_e_inverse * tmp;
-    }
-  }
-
- private:
-  struct Chunk {
-    int start = 0;
-    int num_rows = 0;
-  };
-
-  std::vector<Chunk> chunks_;
-  int num_eliminate_blocks_;
-  int uneliminated_row_begins_;
-  std::vector<double> e_t_e_inverse_matrices_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SCHUR_ELIMINATOR_H_
diff --git a/third_party/ceres/internal/ceres/schur_eliminator_benchmark.cc b/third_party/ceres/internal/ceres/schur_eliminator_benchmark.cc
deleted file mode 100644
index 78aa580..0000000
--- a/third_party/ceres/internal/ceres/schur_eliminator_benchmark.cc
+++ /dev/null
@@ -1,230 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <algorithm>
-#include <memory>
-#include <random>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/block_random_access_dense_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/schur_eliminator.h"
-
-namespace ceres::internal {
-
-constexpr int kRowBlockSize = 2;
-constexpr int kEBlockSize = 3;
-constexpr int kFBlockSize = 6;
-
-class BenchmarkData {
- public:
-  explicit BenchmarkData(const int num_e_blocks) {
-    auto* bs = new CompressedRowBlockStructure;
-    bs->cols.resize(num_e_blocks + 1);
-    int col_pos = 0;
-    for (int i = 0; i < num_e_blocks; ++i) {
-      bs->cols[i].position = col_pos;
-      bs->cols[i].size = kEBlockSize;
-      col_pos += kEBlockSize;
-    }
-    bs->cols.back().position = col_pos;
-    bs->cols.back().size = kFBlockSize;
-
-    bs->rows.resize(2 * num_e_blocks);
-    int row_pos = 0;
-    int cell_pos = 0;
-    for (int i = 0; i < num_e_blocks; ++i) {
-      {
-        auto& row = bs->rows[2 * i];
-        row.block.position = row_pos;
-        row.block.size = kRowBlockSize;
-        row_pos += kRowBlockSize;
-        auto& cells = row.cells;
-        cells.resize(2);
-        cells[0].block_id = i;
-        cells[0].position = cell_pos;
-        cell_pos += kRowBlockSize * kEBlockSize;
-        cells[1].block_id = num_e_blocks;
-        cells[1].position = cell_pos;
-        cell_pos += kRowBlockSize * kFBlockSize;
-      }
-      {
-        auto& row = bs->rows[2 * i + 1];
-        row.block.position = row_pos;
-        row.block.size = kRowBlockSize;
-        row_pos += kRowBlockSize;
-        auto& cells = row.cells;
-        cells.resize(1);
-        cells[0].block_id = i;
-        cells[0].position = cell_pos;
-        cell_pos += kRowBlockSize * kEBlockSize;
-      }
-    }
-
-    matrix_ = std::make_unique<BlockSparseMatrix>(bs);
-    double* values = matrix_->mutable_values();
-    std::generate_n(values, matrix_->num_nonzeros(), [this] {
-      return standard_normal_(prng_);
-    });
-
-    b_.resize(matrix_->num_rows());
-    b_.setRandom();
-
-    std::vector<Block> blocks;
-    blocks.emplace_back(kFBlockSize, 0);
-    lhs_ = std::make_unique<BlockRandomAccessDenseMatrix>(blocks, &context_, 1);
-    diagonal_.resize(matrix_->num_cols());
-    diagonal_.setOnes();
-    rhs_.resize(kFBlockSize);
-
-    y_.resize(num_e_blocks * kEBlockSize);
-    y_.setZero();
-    z_.resize(kFBlockSize);
-    z_.setOnes();
-  }
-
-  const BlockSparseMatrix& matrix() const { return *matrix_; }
-  const Vector& b() const { return b_; }
-  const Vector& diagonal() const { return diagonal_; }
-  BlockRandomAccessDenseMatrix* mutable_lhs() { return lhs_.get(); }
-  Vector* mutable_rhs() { return &rhs_; }
-  Vector* mutable_y() { return &y_; }
-  Vector* mutable_z() { return &z_; }
-
-  ContextImpl* context() { return &context_; }
-
- private:
-  ContextImpl context_;
-
-  std::unique_ptr<BlockSparseMatrix> matrix_;
-  Vector b_;
-  std::unique_ptr<BlockRandomAccessDenseMatrix> lhs_;
-  Vector rhs_;
-  Vector diagonal_;
-  Vector z_;
-  Vector y_;
-  std::mt19937 prng_;
-  std::normal_distribution<> standard_normal_;
-};
-
-static void BM_SchurEliminatorEliminate(benchmark::State& state) {
-  const int num_e_blocks = state.range(0);
-  BenchmarkData data(num_e_blocks);
-
-  LinearSolver::Options linear_solver_options;
-  linear_solver_options.e_block_size = kEBlockSize;
-  linear_solver_options.row_block_size = kRowBlockSize;
-  linear_solver_options.f_block_size = kFBlockSize;
-  linear_solver_options.context = data.context();
-  std::unique_ptr<SchurEliminatorBase> eliminator(
-      SchurEliminatorBase::Create(linear_solver_options));
-
-  eliminator->Init(num_e_blocks, true, data.matrix().block_structure());
-  for (auto _ : state) {
-    eliminator->Eliminate(BlockSparseMatrixData(data.matrix()),
-                          data.b().data(),
-                          data.diagonal().data(),
-                          data.mutable_lhs(),
-                          data.mutable_rhs()->data());
-  }
-}
-
-static void BM_SchurEliminatorBackSubstitute(benchmark::State& state) {
-  const int num_e_blocks = state.range(0);
-  BenchmarkData data(num_e_blocks);
-
-  LinearSolver::Options linear_solver_options;
-  linear_solver_options.e_block_size = kEBlockSize;
-  linear_solver_options.row_block_size = kRowBlockSize;
-  linear_solver_options.f_block_size = kFBlockSize;
-  linear_solver_options.context = data.context();
-  std::unique_ptr<SchurEliminatorBase> eliminator(
-      SchurEliminatorBase::Create(linear_solver_options));
-
-  eliminator->Init(num_e_blocks, true, data.matrix().block_structure());
-  eliminator->Eliminate(BlockSparseMatrixData(data.matrix()),
-                        data.b().data(),
-                        data.diagonal().data(),
-                        data.mutable_lhs(),
-                        data.mutable_rhs()->data());
-  for (auto _ : state) {
-    eliminator->BackSubstitute(BlockSparseMatrixData(data.matrix()),
-                               data.b().data(),
-                               data.diagonal().data(),
-                               data.mutable_z()->data(),
-                               data.mutable_y()->data());
-  }
-}
-
-static void BM_SchurEliminatorForOneFBlockEliminate(benchmark::State& state) {
-  const int num_e_blocks = state.range(0);
-  BenchmarkData data(num_e_blocks);
-  SchurEliminatorForOneFBlock<2, 3, 6> eliminator;
-  eliminator.Init(num_e_blocks, true, data.matrix().block_structure());
-  for (auto _ : state) {
-    eliminator.Eliminate(BlockSparseMatrixData(data.matrix()),
-                         data.b().data(),
-                         data.diagonal().data(),
-                         data.mutable_lhs(),
-                         data.mutable_rhs()->data());
-  }
-}
-
-static void BM_SchurEliminatorForOneFBlockBackSubstitute(
-    benchmark::State& state) {
-  const int num_e_blocks = state.range(0);
-  BenchmarkData data(num_e_blocks);
-  SchurEliminatorForOneFBlock<2, 3, 6> eliminator;
-  eliminator.Init(num_e_blocks, true, data.matrix().block_structure());
-  eliminator.Eliminate(BlockSparseMatrixData(data.matrix()),
-                       data.b().data(),
-                       data.diagonal().data(),
-                       data.mutable_lhs(),
-                       data.mutable_rhs()->data());
-  for (auto _ : state) {
-    eliminator.BackSubstitute(BlockSparseMatrixData(data.matrix()),
-                              data.b().data(),
-                              data.diagonal().data(),
-                              data.mutable_z()->data(),
-                              data.mutable_y()->data());
-  }
-}
-
-BENCHMARK(BM_SchurEliminatorEliminate)->Range(10, 10000);
-BENCHMARK(BM_SchurEliminatorForOneFBlockEliminate)->Range(10, 10000);
-BENCHMARK(BM_SchurEliminatorBackSubstitute)->Range(10, 10000);
-BENCHMARK(BM_SchurEliminatorForOneFBlockBackSubstitute)->Range(10, 10000);
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/schur_eliminator_impl.h b/third_party/ceres/internal/ceres/schur_eliminator_impl.h
deleted file mode 100644
index ef5ce66..0000000
--- a/third_party/ceres/internal/ceres/schur_eliminator_impl.h
+++ /dev/null
@@ -1,718 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// TODO(sameeragarwal): row_block_counter can perhaps be replaced by
-// Chunk::start ?
-
-#ifndef CERES_INTERNAL_SCHUR_ELIMINATOR_IMPL_H_
-#define CERES_INTERNAL_SCHUR_ELIMINATOR_IMPL_H_
-
-// Eigen has an internal threshold switching between different matrix
-// multiplication algorithms. In particular for matrices larger than
-// EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD it uses a cache friendly
-// matrix matrix product algorithm that has a higher setup cost. For
-// matrix sizes close to this threshold, especially when the matrices
-// are thin and long, the default choice may not be optimal. This is
-// the case for us, as the default choice causes a 30% performance
-// regression when we moved from Eigen2 to Eigen3.
-
-#define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 10
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <algorithm>
-#include <map>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/fixed_array.h"
-#include "ceres/invert_psd_matrix.h"
-#include "ceres/map_util.h"
-#include "ceres/parallel_for.h"
-#include "ceres/schur_eliminator.h"
-#include "ceres/scoped_thread_token.h"
-#include "ceres/small_blas.h"
-#include "ceres/stl_util.h"
-#include "ceres/thread_token_provider.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::~SchurEliminator() {
-  STLDeleteElements(&rhs_locks_);
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::Init(
-    int num_eliminate_blocks,
-    bool assume_full_rank_ete,
-    const CompressedRowBlockStructure* bs) {
-  CHECK_GT(num_eliminate_blocks, 0)
-      << "SchurComplementSolver cannot be initialized with "
-      << "num_eliminate_blocks = 0.";
-
-  num_eliminate_blocks_ = num_eliminate_blocks;
-  assume_full_rank_ete_ = assume_full_rank_ete;
-
-  const int num_col_blocks = bs->cols.size();
-  const int num_row_blocks = bs->rows.size();
-
-  buffer_size_ = 1;
-  chunks_.clear();
-  lhs_row_layout_.clear();
-
-  int lhs_num_rows = 0;
-  // Add a map object for each block in the reduced linear system
-  // and build the row/column block structure of the reduced linear
-  // system.
-  lhs_row_layout_.resize(num_col_blocks - num_eliminate_blocks_);
-  for (int i = num_eliminate_blocks_; i < num_col_blocks; ++i) {
-    lhs_row_layout_[i - num_eliminate_blocks_] = lhs_num_rows;
-    lhs_num_rows += bs->cols[i].size;
-  }
-
-  // TODO(sameeragarwal): Now that we may have subset block structure,
-  // we need to make sure that we account for the fact that some
-  // point blocks only have a "diagonal" row and nothing more.
-  //
-  // This likely requires a slightly different algorithm, which works
-  // off of the number of elimination blocks.
-
-  int r = 0;
-  // Iterate over the row blocks of A, and detect the chunks. The
-  // matrix should already have been ordered so that all rows
-  // containing the same y block are vertically contiguous. Along
-  // the way also compute the amount of space each chunk will need
-  // to perform the elimination.
-  while (r < num_row_blocks) {
-    const int chunk_block_id = bs->rows[r].cells.front().block_id;
-    if (chunk_block_id >= num_eliminate_blocks_) {
-      break;
-    }
-
-    chunks_.push_back(Chunk(r));
-    Chunk& chunk = chunks_.back();
-    int buffer_size = 0;
-    const int e_block_size = bs->cols[chunk_block_id].size;
-
-    // Add to the chunk until the first block in the row is
-    // different than the one in the first row for the chunk.
-    while (r + chunk.size < num_row_blocks) {
-      const CompressedRow& row = bs->rows[r + chunk.size];
-      if (row.cells.front().block_id != chunk_block_id) {
-        break;
-      }
-
-      // Iterate over the blocks in the row, ignoring the first
-      // block since it is the one to be eliminated.
-      for (int c = 1; c < row.cells.size(); ++c) {
-        const Cell& cell = row.cells[c];
-        if (InsertIfNotPresent(
-                &(chunk.buffer_layout), cell.block_id, buffer_size)) {
-          buffer_size += e_block_size * bs->cols[cell.block_id].size;
-        }
-      }
-
-      buffer_size_ = std::max(buffer_size, buffer_size_);
-      ++chunk.size;
-    }
-
-    CHECK_GT(chunk.size, 0);  // This check will need to be resolved.
-    r += chunk.size;
-  }
-  const Chunk& chunk = chunks_.back();
-
-  uneliminated_row_begins_ = chunk.start + chunk.size;
-
-  buffer_ = std::make_unique<double[]>(buffer_size_ * num_threads_);
-
-  // chunk_outer_product_buffer_ only needs to store e_block_size *
-  // f_block_size, which is always less than buffer_size_, so we just
-  // allocate buffer_size_ per thread.
-  chunk_outer_product_buffer_ =
-      std::make_unique<double[]>(buffer_size_ * num_threads_);
-
-  STLDeleteElements(&rhs_locks_);
-  rhs_locks_.resize(num_col_blocks - num_eliminate_blocks_);
-  for (int i = 0; i < num_col_blocks - num_eliminate_blocks_; ++i) {
-    rhs_locks_[i] = new std::mutex;
-  }
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::Eliminate(
-    const BlockSparseMatrixData& A,
-    const double* b,
-    const double* D,
-    BlockRandomAccessMatrix* lhs,
-    double* rhs) {
-  if (lhs->num_rows() > 0) {
-    lhs->SetZero();
-    if (rhs) {
-      VectorRef(rhs, lhs->num_rows()).setZero();
-    }
-  }
-
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const int num_col_blocks = bs->cols.size();
-
-  // Add the diagonal to the schur complement.
-  if (D != nullptr) {
-    ParallelFor(context_,
-                num_eliminate_blocks_,
-                num_col_blocks,
-                num_threads_,
-                [&](int i) {
-                  const int block_id = i - num_eliminate_blocks_;
-                  int r, c, row_stride, col_stride;
-                  CellInfo* cell_info = lhs->GetCell(
-                      block_id, block_id, &r, &c, &row_stride, &col_stride);
-                  if (cell_info != nullptr) {
-                    const int block_size = bs->cols[i].size;
-                    typename EigenTypes<Eigen::Dynamic>::ConstVectorRef diag(
-                        D + bs->cols[i].position, block_size);
-                    MatrixRef m(cell_info->values, row_stride, col_stride);
-                    m.block(r, c, block_size, block_size).diagonal() +=
-                        diag.array().square().matrix();
-                  }
-                });
-  }
-
-  // Eliminate y blocks one chunk at a time.  For each chunk, compute
-  // the entries of the normal equations and the gradient vector block
-  // corresponding to the y block and then apply Gaussian elimination
-  // to them. The matrix ete stores the normal matrix corresponding to
-  // the block being eliminated and array buffer_ contains the
-  // non-zero blocks in the row corresponding to this y block in the
-  // normal equations. This computation is done in
-  // ChunkDiagonalBlockAndGradient. UpdateRhs then applies gaussian
-  // elimination to the rhs of the normal equations, updating the rhs
-  // of the reduced linear system by modifying rhs blocks for all the
-  // z blocks that share a row block/residual term with the y
-  // block. EliminateRowOuterProduct does the corresponding operation
-  // for the lhs of the reduced linear system.
-  ParallelFor(
-      context_,
-      0,
-      int(chunks_.size()),
-      num_threads_,
-      [&](int thread_id, int i) {
-        double* buffer = buffer_.get() + thread_id * buffer_size_;
-        const Chunk& chunk = chunks_[i];
-        const int e_block_id = bs->rows[chunk.start].cells.front().block_id;
-        const int e_block_size = bs->cols[e_block_id].size;
-
-        VectorRef(buffer, buffer_size_).setZero();
-
-        typename EigenTypes<kEBlockSize, kEBlockSize>::Matrix ete(e_block_size,
-                                                                  e_block_size);
-
-        if (D != nullptr) {
-          const typename EigenTypes<kEBlockSize>::ConstVectorRef diag(
-              D + bs->cols[e_block_id].position, e_block_size);
-          ete = diag.array().square().matrix().asDiagonal();
-        } else {
-          ete.setZero();
-        }
-
-        FixedArray<double, 8> g(e_block_size);
-        typename EigenTypes<kEBlockSize>::VectorRef gref(g.data(),
-                                                         e_block_size);
-        gref.setZero();
-
-        // We are going to be computing
-        //
-        //   S += F'F - F'E(E'E)^{-1}E'F
-        //
-        // for each Chunk. The computation is broken down into a number of
-        // function calls as below.
-
-        // Compute the outer product of the e_blocks with themselves (ete
-        // = E'E). Compute the product of the e_blocks with the
-        // corresponding f_blocks (buffer = E'F), the gradient of the terms
-        // in this chunk (g) and add the outer product of the f_blocks to
-        // Schur complement (S += F'F).
-        ChunkDiagonalBlockAndGradient(
-            chunk, A, b, chunk.start, &ete, g.data(), buffer, lhs);
-
-        // Normally one wouldn't compute the inverse explicitly, but
-        // e_block_size will typically be a small number like 3, in
-        // which case its much faster to compute the inverse once and
-        // use it to multiply other matrices/vectors instead of doing a
-        // Solve call over and over again.
-        typename EigenTypes<kEBlockSize, kEBlockSize>::Matrix inverse_ete =
-            InvertPSDMatrix<kEBlockSize>(assume_full_rank_ete_, ete);
-
-        // For the current chunk compute and update the rhs of the reduced
-        // linear system.
-        //
-        //   rhs = F'b - F'E(E'E)^(-1) E'b
-
-        if (rhs) {
-          FixedArray<double, 8> inverse_ete_g(e_block_size);
-          MatrixVectorMultiply<kEBlockSize, kEBlockSize, 0>(
-              inverse_ete.data(),
-              e_block_size,
-              e_block_size,
-              g.data(),
-              inverse_ete_g.data());
-          UpdateRhs(chunk, A, b, chunk.start, inverse_ete_g.data(), rhs);
-        }
-
-        // S -= F'E(E'E)^{-1}E'F
-        ChunkOuterProduct(
-            thread_id, bs, inverse_ete, buffer, chunk.buffer_layout, lhs);
-      });
-
-  // For rows with no e_blocks, the Schur complement update reduces to
-  // S += F'F.
-  NoEBlockRowsUpdate(A, b, uneliminated_row_begins_, lhs, rhs);
-}
-
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::BackSubstitute(
-    const BlockSparseMatrixData& A,
-    const double* b,
-    const double* D,
-    const double* z,
-    double* y) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-
-  ParallelFor(context_, 0, int(chunks_.size()), num_threads_, [&](int i) {
-    const Chunk& chunk = chunks_[i];
-    const int e_block_id = bs->rows[chunk.start].cells.front().block_id;
-    const int e_block_size = bs->cols[e_block_id].size;
-
-    double* y_ptr = y + bs->cols[e_block_id].position;
-    typename EigenTypes<kEBlockSize>::VectorRef y_block(y_ptr, e_block_size);
-
-    typename EigenTypes<kEBlockSize, kEBlockSize>::Matrix ete(e_block_size,
-                                                              e_block_size);
-    if (D != nullptr) {
-      const typename EigenTypes<kEBlockSize>::ConstVectorRef diag(
-          D + bs->cols[e_block_id].position, e_block_size);
-      ete = diag.array().square().matrix().asDiagonal();
-    } else {
-      ete.setZero();
-    }
-
-    for (int j = 0; j < chunk.size; ++j) {
-      const CompressedRow& row = bs->rows[chunk.start + j];
-      const Cell& e_cell = row.cells.front();
-      DCHECK_EQ(e_block_id, e_cell.block_id);
-
-      FixedArray<double, 8> sj(row.block.size);
-
-      typename EigenTypes<kRowBlockSize>::VectorRef(sj.data(), row.block.size) =
-          typename EigenTypes<kRowBlockSize>::ConstVectorRef(
-              b + bs->rows[chunk.start + j].block.position, row.block.size);
-
-      for (int c = 1; c < row.cells.size(); ++c) {
-        const int f_block_id = row.cells[c].block_id;
-        const int f_block_size = bs->cols[f_block_id].size;
-        const int r_block = f_block_id - num_eliminate_blocks_;
-
-        // clang-format off
-        MatrixVectorMultiply<kRowBlockSize, kFBlockSize, -1>(
-            values + row.cells[c].position, row.block.size, f_block_size,
-            z + lhs_row_layout_[r_block],
-            sj.data());
-      }
-
-      MatrixTransposeVectorMultiply<kRowBlockSize, kEBlockSize, 1>(
-          values + e_cell.position, row.block.size, e_block_size,
-          sj.data(),
-          y_ptr);
-
-      MatrixTransposeMatrixMultiply
-          <kRowBlockSize, kEBlockSize, kRowBlockSize, kEBlockSize, 1>(
-          values + e_cell.position, row.block.size, e_block_size,
-          values + e_cell.position, row.block.size, e_block_size,
-          ete.data(), 0, 0, e_block_size, e_block_size);
-      // clang-format on
-    }
-
-    y_block =
-        InvertPSDMatrix<kEBlockSize>(assume_full_rank_ete_, ete) * y_block;
-  });
-}
-
-// Update the rhs of the reduced linear system. Compute
-//
-//   F'b - F'E(E'E)^(-1) E'b
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::UpdateRhs(
-    const Chunk& chunk,
-    const BlockSparseMatrixData& A,
-    const double* b,
-    int row_block_counter,
-    const double* inverse_ete_g,
-    double* rhs) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-
-  const int e_block_id = bs->rows[chunk.start].cells.front().block_id;
-  const int e_block_size = bs->cols[e_block_id].size;
-  int b_pos = bs->rows[row_block_counter].block.position;
-  for (int j = 0; j < chunk.size; ++j) {
-    const CompressedRow& row = bs->rows[row_block_counter + j];
-    const Cell& e_cell = row.cells.front();
-
-    typename EigenTypes<kRowBlockSize>::Vector sj =
-        typename EigenTypes<kRowBlockSize>::ConstVectorRef(b + b_pos,
-                                                           row.block.size);
-
-    // clang-format off
-    MatrixVectorMultiply<kRowBlockSize, kEBlockSize, -1>(
-        values + e_cell.position, row.block.size, e_block_size,
-        inverse_ete_g, sj.data());
-    // clang-format on
-
-    for (int c = 1; c < row.cells.size(); ++c) {
-      const int block_id = row.cells[c].block_id;
-      const int block_size = bs->cols[block_id].size;
-      const int block = block_id - num_eliminate_blocks_;
-      auto lock = MakeConditionalLock(num_threads_, *rhs_locks_[block]);
-      // clang-format off
-      MatrixTransposeVectorMultiply<kRowBlockSize, kFBlockSize, 1>(
-          values + row.cells[c].position,
-          row.block.size, block_size,
-          sj.data(), rhs + lhs_row_layout_[block]);
-      // clang-format on
-    }
-    b_pos += row.block.size;
-  }
-}
-
-// Given a Chunk - set of rows with the same e_block, e.g. in the
-// following Chunk with two rows.
-//
-//                E                   F
-//      [ y11   0   0   0 |  z11     0    0   0    z51]
-//      [ y12   0   0   0 |  z12   z22    0   0      0]
-//
-// this function computes twp matrices. The diagonal block matrix
-//
-//   ete = y11 * y11' + y12 * y12'
-//
-// and the off diagonal blocks in the Gauss Newton Hessian.
-//
-//   buffer = [y11'(z11 + z12), y12' * z22, y11' * z51]
-//
-// which are zero compressed versions of the block sparse matrices E'E
-// and E'F.
-//
-// and the gradient of the e_block, E'b.
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    ChunkDiagonalBlockAndGradient(
-        const Chunk& chunk,
-        const BlockSparseMatrixData& A,
-        const double* b,
-        int row_block_counter,
-        typename EigenTypes<kEBlockSize, kEBlockSize>::Matrix* ete,
-        double* g,
-        double* buffer,
-        BlockRandomAccessMatrix* lhs) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-
-  int b_pos = bs->rows[row_block_counter].block.position;
-  const int e_block_size = ete->rows();
-
-  // Iterate over the rows in this chunk, for each row, compute the
-  // contribution of its F blocks to the Schur complement, the
-  // contribution of its E block to the matrix EE' (ete), and the
-  // corresponding block in the gradient vector.
-  for (int j = 0; j < chunk.size; ++j) {
-    const CompressedRow& row = bs->rows[row_block_counter + j];
-
-    if (row.cells.size() > 1) {
-      EBlockRowOuterProduct(A, row_block_counter + j, lhs);
-    }
-
-    // Extract the e_block, ETE += E_i' E_i
-    const Cell& e_cell = row.cells.front();
-    // clang-format off
-    MatrixTransposeMatrixMultiply
-        <kRowBlockSize, kEBlockSize, kRowBlockSize, kEBlockSize, 1>(
-            values + e_cell.position, row.block.size, e_block_size,
-            values + e_cell.position, row.block.size, e_block_size,
-            ete->data(), 0, 0, e_block_size, e_block_size);
-    // clang-format on
-
-    if (b) {
-      // g += E_i' b_i
-      // clang-format off
-      MatrixTransposeVectorMultiply<kRowBlockSize, kEBlockSize, 1>(
-          values + e_cell.position, row.block.size, e_block_size,
-          b + b_pos,
-          g);
-      // clang-format on
-    }
-
-    // buffer = E'F. This computation is done by iterating over the
-    // f_blocks for each row in the chunk.
-    for (int c = 1; c < row.cells.size(); ++c) {
-      const int f_block_id = row.cells[c].block_id;
-      const int f_block_size = bs->cols[f_block_id].size;
-      double* buffer_ptr = buffer + FindOrDie(chunk.buffer_layout, f_block_id);
-      // clang-format off
-      MatrixTransposeMatrixMultiply
-          <kRowBlockSize, kEBlockSize, kRowBlockSize, kFBlockSize, 1>(
-          values + e_cell.position, row.block.size, e_block_size,
-          values + row.cells[c].position, row.block.size, f_block_size,
-          buffer_ptr, 0, 0, e_block_size, f_block_size);
-      // clang-format on
-    }
-    b_pos += row.block.size;
-  }
-}
-
-// Compute the outer product F'E(E'E)^{-1}E'F and subtract it from the
-// Schur complement matrix, i.e
-//
-//  S -= F'E(E'E)^{-1}E'F.
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    ChunkOuterProduct(int thread_id,
-                      const CompressedRowBlockStructure* bs,
-                      const Matrix& inverse_ete,
-                      const double* buffer,
-                      const BufferLayoutType& buffer_layout,
-                      BlockRandomAccessMatrix* lhs) {
-  // This is the most computationally expensive part of this
-  // code. Profiling experiments reveal that the bottleneck is not the
-  // computation of the right-hand matrix product, but memory
-  // references to the left hand side.
-  const int e_block_size = inverse_ete.rows();
-  auto it1 = buffer_layout.begin();
-
-  double* b1_transpose_inverse_ete =
-      chunk_outer_product_buffer_.get() + thread_id * buffer_size_;
-
-  // S(i,j) -= bi' * ete^{-1} b_j
-  for (; it1 != buffer_layout.end(); ++it1) {
-    const int block1 = it1->first - num_eliminate_blocks_;
-    const int block1_size = bs->cols[it1->first].size;
-    // clang-format off
-    MatrixTransposeMatrixMultiply
-        <kEBlockSize, kFBlockSize, kEBlockSize, kEBlockSize, 0>(
-        buffer + it1->second, e_block_size, block1_size,
-        inverse_ete.data(), e_block_size, e_block_size,
-        b1_transpose_inverse_ete, 0, 0, block1_size, e_block_size);
-    // clang-format on
-
-    auto it2 = it1;
-    for (; it2 != buffer_layout.end(); ++it2) {
-      const int block2 = it2->first - num_eliminate_blocks_;
-
-      int r, c, row_stride, col_stride;
-      CellInfo* cell_info =
-          lhs->GetCell(block1, block2, &r, &c, &row_stride, &col_stride);
-      if (cell_info != nullptr) {
-        const int block2_size = bs->cols[it2->first].size;
-        auto lock = MakeConditionalLock(num_threads_, cell_info->m);
-        // clang-format off
-        MatrixMatrixMultiply
-            <kFBlockSize, kEBlockSize, kEBlockSize, kFBlockSize, -1>(
-                b1_transpose_inverse_ete, block1_size, e_block_size,
-                buffer  + it2->second, e_block_size, block2_size,
-                cell_info->values, r, c, row_stride, col_stride);
-        // clang-format on
-      }
-    }
-  }
-}
-
-// For rows with no e_blocks, the Schur complement update reduces to S
-// += F'F. This function iterates over the rows of A with no e_block,
-// and calls NoEBlockRowOuterProduct on each row.
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    NoEBlockRowsUpdate(const BlockSparseMatrixData& A,
-                       const double* b,
-                       int row_block_counter,
-                       BlockRandomAccessMatrix* lhs,
-                       double* rhs) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-  for (; row_block_counter < bs->rows.size(); ++row_block_counter) {
-    NoEBlockRowOuterProduct(A, row_block_counter, lhs);
-    if (!rhs) {
-      continue;
-    }
-    const CompressedRow& row = bs->rows[row_block_counter];
-    for (int c = 0; c < row.cells.size(); ++c) {
-      const int block_id = row.cells[c].block_id;
-      const int block_size = bs->cols[block_id].size;
-      const int block = block_id - num_eliminate_blocks_;
-      // clang-format off
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-          values + row.cells[c].position, row.block.size, block_size,
-          b + row.block.position,
-          rhs + lhs_row_layout_[block]);
-      // clang-format on
-    }
-  }
-}
-
-// A row r of A, which has no e_blocks gets added to the Schur
-// complement as S += r r'. This function is responsible for computing
-// the contribution of a single row r to the Schur complement. It is
-// very similar in structure to EBlockRowOuterProduct except for
-// one difference. It does not use any of the template
-// parameters. This is because the algorithm used for detecting the
-// static structure of the matrix A only pays attention to rows with
-// e_blocks. This is because rows without e_blocks are rare and
-// typically arise from regularization terms in the original
-// optimization problem, and have a very different structure than the
-// rows with e_blocks. Including them in the static structure
-// detection will lead to most template parameters being set to
-// dynamic. Since the number of rows without e_blocks is small, the
-// lack of templating is not an issue.
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    NoEBlockRowOuterProduct(const BlockSparseMatrixData& A,
-                            int row_block_index,
-                            BlockRandomAccessMatrix* lhs) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-
-  const CompressedRow& row = bs->rows[row_block_index];
-  for (int i = 0; i < row.cells.size(); ++i) {
-    const int block1 = row.cells[i].block_id - num_eliminate_blocks_;
-    DCHECK_GE(block1, 0);
-
-    const int block1_size = bs->cols[row.cells[i].block_id].size;
-    int r, c, row_stride, col_stride;
-    CellInfo* cell_info =
-        lhs->GetCell(block1, block1, &r, &c, &row_stride, &col_stride);
-    if (cell_info != nullptr) {
-      auto lock = MakeConditionalLock(num_threads_, cell_info->m);
-      // This multiply currently ignores the fact that this is a
-      // symmetric outer product.
-      // clang-format off
-      MatrixTransposeMatrixMultiply
-          <Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, 1>(
-              values + row.cells[i].position, row.block.size, block1_size,
-              values + row.cells[i].position, row.block.size, block1_size,
-              cell_info->values, r, c, row_stride, col_stride);
-      // clang-format on
-    }
-
-    for (int j = i + 1; j < row.cells.size(); ++j) {
-      const int block2 = row.cells[j].block_id - num_eliminate_blocks_;
-      DCHECK_GE(block2, 0);
-      DCHECK_LT(block1, block2);
-      int r, c, row_stride, col_stride;
-      CellInfo* cell_info =
-          lhs->GetCell(block1, block2, &r, &c, &row_stride, &col_stride);
-      if (cell_info != nullptr) {
-        const int block2_size = bs->cols[row.cells[j].block_id].size;
-        auto lock = MakeConditionalLock(num_threads_, cell_info->m);
-        // clang-format off
-        MatrixTransposeMatrixMultiply
-            <Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic, 1>(
-                values + row.cells[i].position, row.block.size, block1_size,
-                values + row.cells[j].position, row.block.size, block2_size,
-                cell_info->values, r, c, row_stride, col_stride);
-        // clang-format on
-      }
-    }
-  }
-}
-
-// For a row with an e_block, compute the contribution S += F'F. This
-// function has the same structure as NoEBlockRowOuterProduct, except
-// that this function uses the template parameters.
-template <int kRowBlockSize, int kEBlockSize, int kFBlockSize>
-void SchurEliminator<kRowBlockSize, kEBlockSize, kFBlockSize>::
-    EBlockRowOuterProduct(const BlockSparseMatrixData& A,
-                          int row_block_index,
-                          BlockRandomAccessMatrix* lhs) {
-  const CompressedRowBlockStructure* bs = A.block_structure();
-  const double* values = A.values();
-
-  const CompressedRow& row = bs->rows[row_block_index];
-  for (int i = 1; i < row.cells.size(); ++i) {
-    const int block1 = row.cells[i].block_id - num_eliminate_blocks_;
-    DCHECK_GE(block1, 0);
-
-    const int block1_size = bs->cols[row.cells[i].block_id].size;
-    int r, c, row_stride, col_stride;
-    CellInfo* cell_info =
-        lhs->GetCell(block1, block1, &r, &c, &row_stride, &col_stride);
-    if (cell_info != nullptr) {
-      auto lock = MakeConditionalLock(num_threads_, cell_info->m);
-      // block += b1.transpose() * b1;
-      // clang-format off
-      MatrixTransposeMatrixMultiply
-          <kRowBlockSize, kFBlockSize, kRowBlockSize, kFBlockSize, 1>(
-          values + row.cells[i].position, row.block.size, block1_size,
-          values + row.cells[i].position, row.block.size, block1_size,
-          cell_info->values, r, c, row_stride, col_stride);
-      // clang-format on
-    }
-
-    for (int j = i + 1; j < row.cells.size(); ++j) {
-      const int block2 = row.cells[j].block_id - num_eliminate_blocks_;
-      DCHECK_GE(block2, 0);
-      DCHECK_LT(block1, block2);
-      const int block2_size = bs->cols[row.cells[j].block_id].size;
-      int r, c, row_stride, col_stride;
-      CellInfo* cell_info =
-          lhs->GetCell(block1, block2, &r, &c, &row_stride, &col_stride);
-      if (cell_info != nullptr) {
-        // block += b1.transpose() * b2;
-        auto lock = MakeConditionalLock(num_threads_, cell_info->m);
-        // clang-format off
-        MatrixTransposeMatrixMultiply
-            <kRowBlockSize, kFBlockSize, kRowBlockSize, kFBlockSize, 1>(
-                values + row.cells[i].position, row.block.size, block1_size,
-                values + row.cells[j].position, row.block.size, block2_size,
-                cell_info->values, r, c, row_stride, col_stride);
-        // clang-format on
-      }
-    }
-  }
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SCHUR_ELIMINATOR_IMPL_H_
diff --git a/third_party/ceres/internal/ceres/schur_eliminator_template.py b/third_party/ceres/internal/ceres/schur_eliminator_template.py
deleted file mode 100644
index 99e6f3e..0000000
--- a/third_party/ceres/internal/ceres/schur_eliminator_template.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: sameeragarwal@google.com (Sameer Agarwal)
-#
-# Script for explicitly generating template specialization of the
-# SchurEliminator class. It is a rather large class
-# and the number of explicit instantiations is also large. Explicitly
-# generating these instantiations in separate .cc files breaks the
-# compilation into separate compilation unit rather than one large cc
-# file which takes 2+GB of RAM to compile.
-#
-# This script creates two sets of files.
-#
-# 1. schur_eliminator_x_x_x.cc
-# where, the x indicates the template parameters and
-#
-# 2. schur_eliminator.cc
-#
-# that contains a factory function for instantiating these classes
-# based on runtime parameters.
-#
-# The list of tuples, specializations indicates the set of
-# specializations that is generated.
-
-# Set of template specializations to generate
-
-HEADER = """// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Template specialization of SchurEliminator.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-"""
-
-DYNAMIC_FILE = """
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<%s, %s, %s>;
-
-}  // namespace ceres::internal
-"""
-
-SPECIALIZATION_FILE = """
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-
-#include "ceres/schur_eliminator_impl.h"
-
-namespace ceres::internal {
-
-template class SchurEliminator<%s, %s, %s>;
-
-}  // namespace ceres::internal
-
-#endif  // CERES_RESTRICT_SCHUR_SPECIALIZATION
-"""
-
-FACTORY_FILE_HEADER = """
-#include <memory>
-
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-
-namespace ceres::internal {
-
-SchurEliminatorBase::~SchurEliminatorBase() = default;
-
-std::unique_ptr<SchurEliminatorBase> SchurEliminatorBase::Create(
-    const LinearSolver::Options& options) {
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-"""
-
-FACTORY = """  return std::make_unique<SchurEliminator<%s, %s, %s>>(options);"""
-
-FACTORY_FOOTER = """
-#endif
-  VLOG(1) << "Template specializations not found for <"
-          << options.row_block_size << "," << options.e_block_size << ","
-          << options.f_block_size << ">";
-  return std::make_unique<SchurEliminator<Eigen::Dynamic,
-                                          Eigen::Dynamic,
-                                          Eigen::Dynamic>>(options);
-}
-
-}  // namespace ceres::internal
-"""
diff --git a/third_party/ceres/internal/ceres/schur_eliminator_test.cc b/third_party/ceres/internal/ceres/schur_eliminator_test.cc
deleted file mode 100644
index bdf8b8c..0000000
--- a/third_party/ceres/internal/ceres/schur_eliminator_test.cc
+++ /dev/null
@@ -1,373 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/schur_eliminator.h"
-
-#include <algorithm>
-#include <memory>
-#include <random>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_dense_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/block_structure.h"
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/detect_structure.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/test_util.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-// TODO(sameeragarwal): Reduce the size of these tests and redo the
-// parameterization to be more efficient.
-
-namespace ceres::internal {
-
-class SchurEliminatorTest : public ::testing::Test {
- protected:
-  void SetUpFromId(int id) {
-    auto problem = CreateLinearLeastSquaresProblemFromId(id);
-    CHECK(problem != nullptr);
-    SetupHelper(problem.get());
-  }
-
-  void SetupHelper(LinearLeastSquaresProblem* problem) {
-    A.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-    b = std::move(problem->b);
-    D = std::move(problem->D);
-
-    num_eliminate_blocks = problem->num_eliminate_blocks;
-    num_eliminate_cols = 0;
-    const CompressedRowBlockStructure* bs = A->block_structure();
-
-    for (int i = 0; i < num_eliminate_blocks; ++i) {
-      num_eliminate_cols += bs->cols[i].size;
-    }
-  }
-
-  // Compute the golden values for the reduced linear system and the
-  // solution to the linear least squares problem using dense linear
-  // algebra.
-  void ComputeReferenceSolution(const Vector& D) {
-    Matrix J;
-    A->ToDenseMatrix(&J);
-    VectorRef f(b.get(), J.rows());
-
-    Matrix H = (D.cwiseProduct(D)).asDiagonal();
-    H.noalias() += J.transpose() * J;
-
-    const Vector g = J.transpose() * f;
-    const int schur_size = J.cols() - num_eliminate_cols;
-
-    lhs_expected.resize(schur_size, schur_size);
-    lhs_expected.setZero();
-
-    rhs_expected.resize(schur_size);
-    rhs_expected.setZero();
-
-    sol_expected.resize(J.cols());
-    sol_expected.setZero();
-
-    Matrix P = H.block(0, 0, num_eliminate_cols, num_eliminate_cols);
-    Matrix Q = H.block(0, num_eliminate_cols, num_eliminate_cols, schur_size);
-    Matrix R =
-        H.block(num_eliminate_cols, num_eliminate_cols, schur_size, schur_size);
-    int row = 0;
-    const CompressedRowBlockStructure* bs = A->block_structure();
-    for (int i = 0; i < num_eliminate_blocks; ++i) {
-      const int block_size = bs->cols[i].size;
-      P.block(row, row, block_size, block_size) =
-          P.block(row, row, block_size, block_size)
-              .llt()
-              .solve(Matrix::Identity(block_size, block_size));
-      row += block_size;
-    }
-
-    lhs_expected.triangularView<Eigen::Upper>() = R - Q.transpose() * P * Q;
-    rhs_expected =
-        g.tail(schur_size) - Q.transpose() * P * g.head(num_eliminate_cols);
-    sol_expected = H.llt().solve(g);
-  }
-
-  void EliminateSolveAndCompare(const VectorRef& diagonal,
-                                bool use_static_structure,
-                                const double relative_tolerance) {
-    const CompressedRowBlockStructure* bs = A->block_structure();
-    const int num_col_blocks = bs->cols.size();
-    auto blocks = Tail(bs->cols, num_col_blocks - num_eliminate_blocks);
-    BlockRandomAccessDenseMatrix lhs(blocks, &context_, 1);
-
-    const int num_cols = A->num_cols();
-    const int schur_size = lhs.num_rows();
-
-    Vector rhs(schur_size);
-
-    LinearSolver::Options options;
-    options.context = &context_;
-    options.elimination_groups.push_back(num_eliminate_blocks);
-    if (use_static_structure) {
-      DetectStructure(*bs,
-                      num_eliminate_blocks,
-                      &options.row_block_size,
-                      &options.e_block_size,
-                      &options.f_block_size);
-    }
-
-    std::unique_ptr<SchurEliminatorBase> eliminator =
-        SchurEliminatorBase::Create(options);
-    const bool kFullRankETE = true;
-    eliminator->Init(num_eliminate_blocks, kFullRankETE, A->block_structure());
-    eliminator->Eliminate(
-        BlockSparseMatrixData(*A), b.get(), diagonal.data(), &lhs, rhs.data());
-
-    MatrixRef lhs_ref(lhs.mutable_values(), lhs.num_rows(), lhs.num_cols());
-    Vector reduced_sol =
-        lhs_ref.selfadjointView<Eigen::Upper>().llt().solve(rhs);
-
-    // Solution to the linear least squares problem.
-    Vector sol(num_cols);
-    sol.setZero();
-    sol.tail(schur_size) = reduced_sol;
-    eliminator->BackSubstitute(BlockSparseMatrixData(*A),
-                               b.get(),
-                               diagonal.data(),
-                               reduced_sol.data(),
-                               sol.data());
-
-    Matrix delta = (lhs_ref - lhs_expected).selfadjointView<Eigen::Upper>();
-    double diff = delta.norm();
-    EXPECT_NEAR(diff / lhs_expected.norm(), 0.0, relative_tolerance);
-    EXPECT_NEAR((rhs - rhs_expected).norm() / rhs_expected.norm(),
-                0.0,
-                relative_tolerance);
-    EXPECT_NEAR((sol - sol_expected).norm() / sol_expected.norm(),
-                0.0,
-                relative_tolerance);
-  }
-
-  ContextImpl context_;
-
-  std::unique_ptr<BlockSparseMatrix> A;
-  std::unique_ptr<double[]> b;
-  std::unique_ptr<double[]> D;
-  int num_eliminate_blocks;
-  int num_eliminate_cols;
-
-  Matrix lhs_expected;
-  Vector rhs_expected;
-  Vector sol_expected;
-};
-
-TEST_F(SchurEliminatorTest, ScalarProblemNoRegularization) {
-  SetUpFromId(2);
-  Vector zero(A->num_cols());
-  zero.setZero();
-
-  ComputeReferenceSolution(VectorRef(zero.data(), A->num_cols()));
-  EliminateSolveAndCompare(VectorRef(zero.data(), A->num_cols()), true, 1e-14);
-  EliminateSolveAndCompare(VectorRef(zero.data(), A->num_cols()), false, 1e-14);
-}
-
-TEST_F(SchurEliminatorTest, ScalarProblemWithRegularization) {
-  SetUpFromId(2);
-  ComputeReferenceSolution(VectorRef(D.get(), A->num_cols()));
-  EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), true, 1e-14);
-  EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), false, 1e-14);
-}
-
-TEST_F(SchurEliminatorTest, VaryingFBlockSizeWithStaticStructure) {
-  SetUpFromId(4);
-  ComputeReferenceSolution(VectorRef(D.get(), A->num_cols()));
-  EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), true, 1e-14);
-}
-
-TEST_F(SchurEliminatorTest, VaryingFBlockSizeWithoutStaticStructure) {
-  SetUpFromId(4);
-  ComputeReferenceSolution(VectorRef(D.get(), A->num_cols()));
-  EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), false, 1e-14);
-}
-
-TEST(SchurEliminatorForOneFBlock, MatchesSchurEliminator) {
-  constexpr int kRowBlockSize = 2;
-  constexpr int kEBlockSize = 3;
-  constexpr int kFBlockSize = 6;
-  constexpr int num_e_blocks = 5;
-
-  ContextImpl context;
-
-  auto* bs = new CompressedRowBlockStructure;
-  bs->cols.resize(num_e_blocks + 1);
-  int col_pos = 0;
-  for (int i = 0; i < num_e_blocks; ++i) {
-    bs->cols[i].position = col_pos;
-    bs->cols[i].size = kEBlockSize;
-    col_pos += kEBlockSize;
-  }
-  bs->cols.back().position = col_pos;
-  bs->cols.back().size = kFBlockSize;
-
-  bs->rows.resize(2 * num_e_blocks + 1);
-  int row_pos = 0;
-  int cell_pos = 0;
-  for (int i = 0; i < num_e_blocks; ++i) {
-    {
-      auto& row = bs->rows[2 * i];
-      row.block.position = row_pos;
-      row.block.size = kRowBlockSize;
-      row_pos += kRowBlockSize;
-      auto& cells = row.cells;
-      cells.resize(2);
-      cells[0].block_id = i;
-      cells[0].position = cell_pos;
-      cell_pos += kRowBlockSize * kEBlockSize;
-      cells[1].block_id = num_e_blocks;
-      cells[1].position = cell_pos;
-      cell_pos += kRowBlockSize * kFBlockSize;
-    }
-    {
-      auto& row = bs->rows[2 * i + 1];
-      row.block.position = row_pos;
-      row.block.size = kRowBlockSize;
-      row_pos += kRowBlockSize;
-      auto& cells = row.cells;
-      cells.resize(1);
-      cells[0].block_id = i;
-      cells[0].position = cell_pos;
-      cell_pos += kRowBlockSize * kEBlockSize;
-    }
-  }
-
-  {
-    auto& row = bs->rows.back();
-    row.block.position = row_pos;
-    row.block.size = kEBlockSize;
-    row_pos += kRowBlockSize;
-    auto& cells = row.cells;
-    cells.resize(1);
-    cells[0].block_id = num_e_blocks;
-    cells[0].position = cell_pos;
-    cell_pos += kEBlockSize * kEBlockSize;
-  }
-
-  BlockSparseMatrix matrix(bs);
-  double* values = matrix.mutable_values();
-  std::mt19937 prng;
-  std::normal_distribution<> standard_normal;
-  std::generate_n(values, matrix.num_nonzeros(), [&prng, &standard_normal] {
-    return standard_normal(prng);
-  });
-
-  Vector b(matrix.num_rows());
-  b.setRandom();
-
-  Vector diagonal(matrix.num_cols());
-  diagonal.setOnes();
-
-  std::vector<Block> blocks;
-  blocks.emplace_back(kFBlockSize, 0);
-  BlockRandomAccessDenseMatrix actual_lhs(blocks, &context, 1);
-  BlockRandomAccessDenseMatrix expected_lhs(blocks, &context, 1);
-  Vector actual_rhs(kFBlockSize);
-  Vector expected_rhs(kFBlockSize);
-
-  Vector f_sol(kFBlockSize);
-  f_sol.setRandom();
-  Vector actual_e_sol(num_e_blocks * kEBlockSize);
-  actual_e_sol.setZero();
-  Vector expected_e_sol(num_e_blocks * kEBlockSize);
-  expected_e_sol.setZero();
-
-  {
-    LinearSolver::Options linear_solver_options;
-    linear_solver_options.e_block_size = kEBlockSize;
-    linear_solver_options.row_block_size = kRowBlockSize;
-    linear_solver_options.f_block_size = kFBlockSize;
-    linear_solver_options.context = &context;
-    std::unique_ptr<SchurEliminatorBase> eliminator(
-        SchurEliminatorBase::Create(linear_solver_options));
-    eliminator->Init(num_e_blocks, true, matrix.block_structure());
-    eliminator->Eliminate(BlockSparseMatrixData(matrix),
-                          b.data(),
-                          diagonal.data(),
-                          &expected_lhs,
-                          expected_rhs.data());
-    eliminator->BackSubstitute(BlockSparseMatrixData(matrix),
-                               b.data(),
-                               diagonal.data(),
-                               f_sol.data(),
-                               actual_e_sol.data());
-  }
-
-  {
-    SchurEliminatorForOneFBlock<2, 3, 6> eliminator;
-    eliminator.Init(num_e_blocks, true, matrix.block_structure());
-    eliminator.Eliminate(BlockSparseMatrixData(matrix),
-                         b.data(),
-                         diagonal.data(),
-                         &actual_lhs,
-                         actual_rhs.data());
-    eliminator.BackSubstitute(BlockSparseMatrixData(matrix),
-                              b.data(),
-                              diagonal.data(),
-                              f_sol.data(),
-                              expected_e_sol.data());
-  }
-  ConstMatrixRef actual_lhsref(
-      actual_lhs.values(), actual_lhs.num_cols(), actual_lhs.num_cols());
-  ConstMatrixRef expected_lhsref(
-      expected_lhs.values(), actual_lhs.num_cols(), actual_lhs.num_cols());
-
-  EXPECT_NEAR((actual_lhsref - expected_lhsref).norm() / expected_lhsref.norm(),
-              0.0,
-              1e-12)
-      << "expected: \n"
-      << expected_lhsref << "\nactual: \n"
-      << actual_lhsref;
-
-  EXPECT_NEAR(
-      (actual_rhs - expected_rhs).norm() / expected_rhs.norm(), 0.0, 1e-12)
-      << "expected: \n"
-      << expected_rhs << "\nactual: \n"
-      << actual_rhs;
-
-  EXPECT_NEAR((actual_e_sol - expected_e_sol).norm() / expected_e_sol.norm(),
-              0.0,
-              1e-12)
-      << "expected: \n"
-      << expected_e_sol << "\nactual: \n"
-      << actual_e_sol;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.cc b/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.cc
deleted file mode 100644
index fbe258d..0000000
--- a/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/schur_jacobi_preconditioner.h"
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "ceres/block_random_access_diagonal_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-SchurJacobiPreconditioner::SchurJacobiPreconditioner(
-    const CompressedRowBlockStructure& bs, Preconditioner::Options options)
-    : options_(std::move(options)) {
-  CHECK_GT(options_.elimination_groups.size(), 1);
-  CHECK_GT(options_.elimination_groups[0], 0);
-  const int num_blocks = bs.cols.size() - options_.elimination_groups[0];
-  CHECK_GT(num_blocks, 0) << "Jacobian should have at least 1 f_block for "
-                          << "SCHUR_JACOBI preconditioner.";
-  CHECK(options_.context != nullptr);
-
-  std::vector<Block> blocks(num_blocks);
-  int position = 0;
-  for (int i = 0; i < num_blocks; ++i) {
-    blocks[i] =
-        Block(bs.cols[i + options_.elimination_groups[0]].size, position);
-    position += blocks[i].size;
-  }
-
-  m_ = std::make_unique<BlockRandomAccessDiagonalMatrix>(
-      blocks, options_.context, options_.num_threads);
-  InitEliminator(bs);
-}
-
-SchurJacobiPreconditioner::~SchurJacobiPreconditioner() = default;
-
-// Initialize the SchurEliminator.
-void SchurJacobiPreconditioner::InitEliminator(
-    const CompressedRowBlockStructure& bs) {
-  LinearSolver::Options eliminator_options;
-  eliminator_options.elimination_groups = options_.elimination_groups;
-  eliminator_options.num_threads = options_.num_threads;
-  eliminator_options.e_block_size = options_.e_block_size;
-  eliminator_options.f_block_size = options_.f_block_size;
-  eliminator_options.row_block_size = options_.row_block_size;
-  eliminator_options.context = options_.context;
-  eliminator_ = SchurEliminatorBase::Create(eliminator_options);
-  const bool kFullRankETE = true;
-  eliminator_->Init(
-      eliminator_options.elimination_groups[0], kFullRankETE, &bs);
-}
-
-// Update the values of the preconditioner matrix and factorize it.
-bool SchurJacobiPreconditioner::UpdateImpl(const BlockSparseMatrix& A,
-                                           const double* D) {
-  const int num_rows = m_->num_rows();
-  CHECK_GT(num_rows, 0);
-
-  // Compute a subset of the entries of the Schur complement.
-  eliminator_->Eliminate(
-      BlockSparseMatrixData(A), nullptr, D, m_.get(), nullptr);
-  m_->Invert();
-  return true;
-}
-
-void SchurJacobiPreconditioner::RightMultiplyAndAccumulate(const double* x,
-                                                           double* y) const {
-  m_->RightMultiplyAndAccumulate(x, y);
-}
-
-int SchurJacobiPreconditioner::num_rows() const { return m_->num_rows(); }
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.h b/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.h
deleted file mode 100644
index b540bc0..0000000
--- a/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.h
+++ /dev/null
@@ -1,112 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Detailed descriptions of these preconditions beyond what is
-// documented here can be found in
-//
-// Bundle Adjustment in the Large
-// S. Agarwal, N. Snavely, S. Seitz & R. Szeliski, ECCV 2010
-// http://www.cs.washington.edu/homes/sagarwal/bal.pdf
-
-#ifndef CERES_INTERNAL_SCHUR_JACOBI_PRECONDITIONER_H_
-#define CERES_INTERNAL_SCHUR_JACOBI_PRECONDITIONER_H_
-
-#include <memory>
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/preconditioner.h"
-
-namespace ceres::internal {
-
-class BlockRandomAccessDiagonalMatrix;
-class BlockSparseMatrix;
-struct CompressedRowBlockStructure;
-class SchurEliminatorBase;
-
-// This class implements the SCHUR_JACOBI preconditioner for Structure
-// from Motion/Bundle Adjustment problems. Full mathematical details
-// can be found in
-//
-// Bundle Adjustment in the Large
-// S. Agarwal, N. Snavely, S. Seitz & R. Szeliski, ECCV 2010
-// http://www.cs.washington.edu/homes/sagarwal/bal.pdf
-//
-// Example usage:
-//
-//   Preconditioner::Options options;
-//   options.preconditioner_type = SCHUR_JACOBI;
-//   options.elimination_groups.push_back(num_points);
-//   options.elimination_groups.push_back(num_cameras);
-//   SchurJacobiPreconditioner preconditioner(
-//      *A.block_structure(), options);
-//   preconditioner.Update(A, nullptr);
-//   preconditioner.RightMultiplyAndAccumulate(x, y);
-//
-// TODO(https://github.com/ceres-solver/ceres-solver/issues/935):
-// SchurJacobiPreconditioner::RightMultiply will benefit from multithreading
-class CERES_NO_EXPORT SchurJacobiPreconditioner
-    : public BlockSparseMatrixPreconditioner {
- public:
-  // Initialize the symbolic structure of the preconditioner. bs is
-  // the block structure of the linear system to be solved. It is used
-  // to determine the sparsity structure of the preconditioner matrix.
-  //
-  // It has the same structural requirement as other Schur complement
-  // based solvers. Please see schur_eliminator.h for more details.
-  SchurJacobiPreconditioner(const CompressedRowBlockStructure& bs,
-                            Preconditioner::Options options);
-  SchurJacobiPreconditioner(const SchurJacobiPreconditioner&) = delete;
-  void operator=(const SchurJacobiPreconditioner&) = delete;
-
-  ~SchurJacobiPreconditioner() override;
-
-  // Preconditioner interface.
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  int num_rows() const final;
-
- private:
-  void InitEliminator(const CompressedRowBlockStructure& bs);
-  bool UpdateImpl(const BlockSparseMatrix& A, const double* D) final;
-
-  Preconditioner::Options options_;
-  std::unique_ptr<SchurEliminatorBase> eliminator_;
-  // Preconditioner matrix.
-  std::unique_ptr<BlockRandomAccessDiagonalMatrix> m_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SCHUR_JACOBI_PRECONDITIONER_H_
diff --git a/third_party/ceres/internal/ceres/schur_templates.cc b/third_party/ceres/internal/ceres/schur_templates.cc
deleted file mode 100644
index 95df671..0000000
--- a/third_party/ceres/internal/ceres/schur_templates.cc
+++ /dev/null
@@ -1,227 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// What template specializations are available.
-//
-// ========================================
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-//=========================================
-//
-// This file is generated using generate_template_specializations.py.
-
-#include "ceres/internal/eigen.h"
-#include "ceres/schur_templates.h"
-
-namespace ceres {
-namespace internal {
-
-void GetBestSchurTemplateSpecialization(int* row_block_size,
-                                        int* e_block_size,
-                                        int* f_block_size) {
-  LinearSolver::Options options;
-  options.row_block_size = *row_block_size;
-  options.e_block_size = *e_block_size;
-  options.f_block_size = *f_block_size;
-  *row_block_size = Eigen::Dynamic;
-  *e_block_size = Eigen::Dynamic;
-  *f_block_size = Eigen::Dynamic;
-#ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 2)) {
-    *row_block_size = 2;
-    *e_block_size = 2;
-    *f_block_size = 2;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 3)) {
-    *row_block_size = 2;
-    *e_block_size = 2;
-    *f_block_size = 3;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2) &&
-     (options.f_block_size == 4)) {
-    *row_block_size = 2;
-    *e_block_size = 2;
-    *f_block_size = 4;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 2)) {
-    *row_block_size = 2;
-    *e_block_size = 2;
-    *f_block_size = Eigen::Dynamic;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 3)) {
-    *row_block_size = 2;
-    *e_block_size = 3;
-    *f_block_size = 3;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 4)) {
-    *row_block_size = 2;
-    *e_block_size = 3;
-    *f_block_size = 4;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 6)) {
-    *row_block_size = 2;
-    *e_block_size = 3;
-    *f_block_size = 6;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 9)) {
-    *row_block_size = 2;
-    *e_block_size = 3;
-    *f_block_size = 9;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 3)) {
-    *row_block_size = 2;
-    *e_block_size = 3;
-    *f_block_size = Eigen::Dynamic;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 3)) {
-    *row_block_size = 2;
-    *e_block_size = 4;
-    *f_block_size = 3;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 4)) {
-    *row_block_size = 2;
-    *e_block_size = 4;
-    *f_block_size = 4;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 6)) {
-    *row_block_size = 2;
-    *e_block_size = 4;
-    *f_block_size = 6;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 8)) {
-    *row_block_size = 2;
-    *e_block_size = 4;
-    *f_block_size = 8;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 9)) {
-    *row_block_size = 2;
-    *e_block_size = 4;
-    *f_block_size = 9;
-    return;
-  }
-  if ((options.row_block_size == 2) &&
-     (options.e_block_size == 4)) {
-    *row_block_size = 2;
-    *e_block_size = 4;
-    *f_block_size = Eigen::Dynamic;
-    return;
-  }
-  if (options.row_block_size == 2) {
-    *row_block_size = 2;
-    *e_block_size = Eigen::Dynamic;
-    *f_block_size = Eigen::Dynamic;
-    return;
-  }
-  if ((options.row_block_size == 3) &&
-     (options.e_block_size == 3) &&
-     (options.f_block_size == 3)) {
-    *row_block_size = 3;
-    *e_block_size = 3;
-    *f_block_size = 3;
-    return;
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 2)) {
-    *row_block_size = 4;
-    *e_block_size = 4;
-    *f_block_size = 2;
-    return;
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 3)) {
-    *row_block_size = 4;
-    *e_block_size = 4;
-    *f_block_size = 3;
-    return;
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4) &&
-     (options.f_block_size == 4)) {
-    *row_block_size = 4;
-    *e_block_size = 4;
-    *f_block_size = 4;
-    return;
-  }
-  if ((options.row_block_size == 4) &&
-     (options.e_block_size == 4)) {
-    *row_block_size = 4;
-    *e_block_size = 4;
-    *f_block_size = Eigen::Dynamic;
-    return;
-  }
-
-#endif
-  return;
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/schur_templates.h b/third_party/ceres/internal/ceres/schur_templates.h
deleted file mode 100644
index 218fb51..0000000
--- a/third_party/ceres/internal/ceres/schur_templates.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-
-#ifndef CERES_INTERNAL_SCHUR_TEMPLATES_H_
-#define CERES_INTERNAL_SCHUR_TEMPLATES_H_
-
-#include "ceres/internal/config.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-CERES_NO_EXPORT
-void GetBestSchurTemplateSpecialization(int* row_block_size,
-                                        int* e_block_size,
-                                        int* f_block_size);
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SCHUR_TEMPLATES_H_
diff --git a/third_party/ceres/internal/ceres/scoped_thread_token.h b/third_party/ceres/internal/ceres/scoped_thread_token.h
deleted file mode 100644
index 76da95b..0000000
--- a/third_party/ceres/internal/ceres/scoped_thread_token.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: yp@photonscore.de (Yury Prokazov)
-
-#ifndef CERES_INTERNAL_SCOPED_THREAD_TOKEN_H_
-#define CERES_INTERNAL_SCOPED_THREAD_TOKEN_H_
-
-#include "ceres/internal/export.h"
-#include "ceres/thread_token_provider.h"
-
-namespace ceres::internal {
-
-// Helper class for ThreadTokenProvider. This object acquires a token in its
-// constructor and puts that token back with destruction.
-class CERES_NO_EXPORT ScopedThreadToken {
- public:
-  explicit ScopedThreadToken(ThreadTokenProvider* provider)
-      : provider_(provider), token_(provider->Acquire()) {}
-
-  ~ScopedThreadToken() { provider_->Release(token_); }
-  ScopedThreadToken(ScopedThreadToken&) = delete;
-  ScopedThreadToken& operator=(ScopedThreadToken&) = delete;
-
-  int token() const { return token_; }
-
- private:
-  ThreadTokenProvider* provider_;
-  int token_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SCOPED_THREAD_TOKEN_H_
diff --git a/third_party/ceres/internal/ceres/scratch_evaluate_preparer.cc b/third_party/ceres/internal/ceres/scratch_evaluate_preparer.cc
deleted file mode 100644
index 86cad93..0000000
--- a/third_party/ceres/internal/ceres/scratch_evaluate_preparer.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/scratch_evaluate_preparer.h"
-
-#include <memory>
-
-#include "ceres/parameter_block.h"
-#include "ceres/program.h"
-#include "ceres/residual_block.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<ScratchEvaluatePreparer[]> ScratchEvaluatePreparer::Create(
-    const Program& program, unsigned num_threads) {
-  auto preparers = std::make_unique<ScratchEvaluatePreparer[]>(num_threads);
-  int max_derivatives_per_residual_block =
-      program.MaxDerivativesPerResidualBlock();
-  for (unsigned i = 0; i < num_threads; i++) {
-    preparers[i].Init(max_derivatives_per_residual_block);
-  }
-  return preparers;
-}
-
-void ScratchEvaluatePreparer::Init(int max_derivatives_per_residual_block) {
-  jacobian_scratch_ = std::make_unique<double[]>(
-      static_cast<std::size_t>(max_derivatives_per_residual_block));
-}
-
-// Point the jacobian blocks into the scratch area of this evaluate preparer.
-void ScratchEvaluatePreparer::Prepare(const ResidualBlock* residual_block,
-                                      int /* residual_block_index */,
-                                      SparseMatrix* /* jacobian */,
-                                      double** jacobians) {
-  double* jacobian_block_cursor = jacobian_scratch_.get();
-  int num_residuals = residual_block->NumResiduals();
-  int num_parameter_blocks = residual_block->NumParameterBlocks();
-  for (int j = 0; j < num_parameter_blocks; ++j) {
-    const ParameterBlock* parameter_block =
-        residual_block->parameter_blocks()[j];
-    if (parameter_block->IsConstant()) {
-      jacobians[j] = nullptr;
-    } else {
-      jacobians[j] = jacobian_block_cursor;
-      jacobian_block_cursor += num_residuals * parameter_block->TangentSize();
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/scratch_evaluate_preparer.h b/third_party/ceres/internal/ceres/scratch_evaluate_preparer.h
deleted file mode 100644
index a7fd8a8..0000000
--- a/third_party/ceres/internal/ceres/scratch_evaluate_preparer.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// A scratch evaluate preparer provides temporary storage for the jacobians that
-// are created when running user-provided cost functions. The evaluator takes
-// care to avoid evaluating the jacobian for fixed parameters.
-
-#ifndef CERES_INTERNAL_SCRATCH_EVALUATE_PREPARER_H_
-#define CERES_INTERNAL_SCRATCH_EVALUATE_PREPARER_H_
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-class Program;
-class ResidualBlock;
-class SparseMatrix;
-
-class CERES_NO_EXPORT ScratchEvaluatePreparer {
- public:
-  // Create num_threads ScratchEvaluatePreparers.
-  static std::unique_ptr<ScratchEvaluatePreparer[]> Create(
-      const Program& program, unsigned num_threads);
-
-  // EvaluatePreparer interface
-  void Init(int max_derivatives_per_residual_block);
-  void Prepare(const ResidualBlock* residual_block,
-               int residual_block_index,
-               SparseMatrix* jacobian,
-               double** jacobians);
-
- private:
-  // Scratch space for the jacobians; each jacobian is packed one after another.
-  // There is enough scratch to hold all the jacobians for the largest residual.
-  std::unique_ptr<double[]> jacobian_scratch_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SCRATCH_EVALUATE_PREPARER_H_
diff --git a/third_party/ceres/internal/ceres/single_linkage_clustering.cc b/third_party/ceres/internal/ceres/single_linkage_clustering.cc
deleted file mode 100644
index 06e76df..0000000
--- a/third_party/ceres/internal/ceres/single_linkage_clustering.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/single_linkage_clustering.h"
-
-#include <unordered_map>
-#include <unordered_set>
-
-#include "ceres/graph.h"
-#include "ceres/graph_algorithms.h"
-
-namespace ceres::internal {
-
-int ComputeSingleLinkageClustering(
-    const SingleLinkageClusteringOptions& options,
-    const WeightedGraph<int>& graph,
-    std::unordered_map<int, int>* membership) {
-  CHECK(membership != nullptr);
-  membership->clear();
-
-  // Initially each vertex is in its own cluster.
-  const std::unordered_set<int>& vertices = graph.vertices();
-  for (const int v : vertices) {
-    (*membership)[v] = v;
-  }
-
-  for (const int vertex1 : vertices) {
-    const std::unordered_set<int>& neighbors = graph.Neighbors(vertex1);
-    for (const int vertex2 : neighbors) {
-      // Since the graph is undirected, only pay attention to one side
-      // of the edge and ignore weak edges.
-      if ((vertex1 > vertex2) ||
-          (graph.EdgeWeight(vertex1, vertex2) < options.min_similarity)) {
-        continue;
-      }
-
-      // Use a union-find algorithm to keep track of the clusters.
-      const int c1 = FindConnectedComponent(vertex1, membership);
-      const int c2 = FindConnectedComponent(vertex2, membership);
-
-      if (c1 == c2) {
-        continue;
-      }
-
-      if (c1 < c2) {
-        (*membership)[c2] = c1;
-      } else {
-        (*membership)[c1] = c2;
-      }
-    }
-  }
-
-  // Make sure that every vertex is connected directly to the vertex
-  // identifying the cluster.
-  int num_clusters = 0;
-  for (auto& m : *membership) {
-    m.second = FindConnectedComponent(m.first, membership);
-    if (m.first == m.second) {
-      ++num_clusters;
-    }
-  }
-
-  return num_clusters;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/single_linkage_clustering.h b/third_party/ceres/internal/ceres/single_linkage_clustering.h
deleted file mode 100644
index 3f49540..0000000
--- a/third_party/ceres/internal/ceres/single_linkage_clustering.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_SINGLE_LINKAGE_CLUSTERING_H_
-#define CERES_INTERNAL_SINGLE_LINKAGE_CLUSTERING_H_
-
-#include <unordered_map>
-
-#include "ceres/graph.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-struct SingleLinkageClusteringOptions {
-  // Graph edges with edge weight less than min_similarity are ignored
-  // during the clustering process.
-  double min_similarity = 0.99;
-};
-
-// Compute a partitioning of the vertices of the graph using the
-// single linkage clustering algorithm. Edges with weight less than
-// SingleLinkageClusteringOptions::min_similarity will be ignored.
-//
-// membership upon return will contain a mapping from the vertices of
-// the graph to an integer indicating the identity of the cluster that
-// it belongs to.
-//
-// The return value of this function is the number of clusters
-// identified by the algorithm.
-CERES_NO_EXPORT int ComputeSingleLinkageClustering(
-    const SingleLinkageClusteringOptions& options,
-    const WeightedGraph<int>& graph,
-    std::unordered_map<int, int>* membership);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SINGLE_LINKAGE_CLUSTERING_H_
diff --git a/third_party/ceres/internal/ceres/single_linkage_clustering_test.cc b/third_party/ceres/internal/ceres/single_linkage_clustering_test.cc
deleted file mode 100644
index cc16cb4..0000000
--- a/third_party/ceres/internal/ceres/single_linkage_clustering_test.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: Sameer Agarwal (sameeragarwal@google.com)
-
-#include "ceres/single_linkage_clustering.h"
-
-#include <unordered_map>
-
-#include "ceres/graph.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(SingleLinkageClustering, GraphHasTwoComponents) {
-  WeightedGraph<int> graph;
-  const int kNumVertices = 6;
-  for (int i = 0; i < kNumVertices; ++i) {
-    graph.AddVertex(i);
-  }
-  // Graph structure:
-  //
-  //  0-1-2-3 4-5
-  graph.AddEdge(0, 1, 1.0);
-  graph.AddEdge(1, 2, 1.0);
-  graph.AddEdge(2, 3, 1.0);
-  graph.AddEdge(4, 5, 1.0);
-
-  SingleLinkageClusteringOptions options;
-  std::unordered_map<int, int> membership;
-  ComputeSingleLinkageClustering(options, graph, &membership);
-  EXPECT_EQ(membership.size(), kNumVertices);
-
-  EXPECT_EQ(membership[1], membership[0]);
-  EXPECT_EQ(membership[2], membership[0]);
-  EXPECT_EQ(membership[3], membership[0]);
-  EXPECT_NE(membership[4], membership[0]);
-  EXPECT_NE(membership[5], membership[0]);
-  EXPECT_EQ(membership[4], membership[5]);
-}
-
-TEST(SingleLinkageClustering, ComponentWithWeakLink) {
-  WeightedGraph<int> graph;
-  const int kNumVertices = 6;
-  for (int i = 0; i < kNumVertices; ++i) {
-    graph.AddVertex(i);
-  }
-  // Graph structure:
-  //
-  //  0-1-2-3 4-5
-  graph.AddEdge(0, 1, 1.0);
-  graph.AddEdge(1, 2, 1.0);
-  graph.AddEdge(2, 3, 1.0);
-
-  // This component should break up into two.
-  graph.AddEdge(4, 5, 0.5);
-
-  SingleLinkageClusteringOptions options;
-  std::unordered_map<int, int> membership;
-  ComputeSingleLinkageClustering(options, graph, &membership);
-  EXPECT_EQ(membership.size(), kNumVertices);
-
-  EXPECT_EQ(membership[1], membership[0]);
-  EXPECT_EQ(membership[2], membership[0]);
-  EXPECT_EQ(membership[3], membership[0]);
-  EXPECT_NE(membership[4], membership[0]);
-  EXPECT_NE(membership[5], membership[0]);
-  EXPECT_NE(membership[4], membership[5]);
-}
-
-TEST(SingleLinkageClustering, ComponentWithWeakLinkAndStrongLink) {
-  WeightedGraph<int> graph;
-  const int kNumVertices = 6;
-  for (int i = 0; i < kNumVertices; ++i) {
-    graph.AddVertex(i);
-  }
-  // Graph structure:
-  //
-  //  0-1-2-3 4-5
-  graph.AddEdge(0, 1, 1.0);
-  graph.AddEdge(1, 2, 1.0);
-  graph.AddEdge(2, 3, 0.5);  // Weak link
-  graph.AddEdge(0, 3, 1.0);
-
-  // This component should break up into two.
-  graph.AddEdge(4, 5, 1.0);
-
-  SingleLinkageClusteringOptions options;
-  std::unordered_map<int, int> membership;
-  ComputeSingleLinkageClustering(options, graph, &membership);
-  EXPECT_EQ(membership.size(), kNumVertices);
-
-  EXPECT_EQ(membership[1], membership[0]);
-  EXPECT_EQ(membership[2], membership[0]);
-  EXPECT_EQ(membership[3], membership[0]);
-  EXPECT_EQ(membership[4], membership[5]);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/small_blas.h b/third_party/ceres/internal/ceres/small_blas.h
deleted file mode 100644
index fb8d7fa..0000000
--- a/third_party/ceres/internal/ceres/small_blas.h
+++ /dev/null
@@ -1,565 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Simple blas functions for use in the Schur Eliminator. These are
-// fairly basic implementations which already yield a significant
-// speedup in the eliminator performance.
-
-#ifndef CERES_INTERNAL_SMALL_BLAS_H_
-#define CERES_INTERNAL_SMALL_BLAS_H_
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "glog/logging.h"
-#include "small_blas_generic.h"
-
-namespace ceres::internal {
-
-// The following three macros are used to share code and reduce
-// template junk across the various GEMM variants.
-#define CERES_GEMM_BEGIN(name)                                          \
-  template <int kRowA, int kColA, int kRowB, int kColB, int kOperation> \
-  inline void name(const double* A,                                     \
-                   const int num_row_a,                                 \
-                   const int num_col_a,                                 \
-                   const double* B,                                     \
-                   const int num_row_b,                                 \
-                   const int num_col_b,                                 \
-                   double* C,                                           \
-                   const int start_row_c,                               \
-                   const int start_col_c,                               \
-                   const int row_stride_c,                              \
-                   const int col_stride_c)
-
-#define CERES_GEMM_NAIVE_HEADER                                        \
-  DCHECK_GT(num_row_a, 0);                                             \
-  DCHECK_GT(num_col_a, 0);                                             \
-  DCHECK_GT(num_row_b, 0);                                             \
-  DCHECK_GT(num_col_b, 0);                                             \
-  DCHECK_GE(start_row_c, 0);                                           \
-  DCHECK_GE(start_col_c, 0);                                           \
-  DCHECK_GT(row_stride_c, 0);                                          \
-  DCHECK_GT(col_stride_c, 0);                                          \
-  DCHECK((kRowA == Eigen::Dynamic) || (kRowA == num_row_a));           \
-  DCHECK((kColA == Eigen::Dynamic) || (kColA == num_col_a));           \
-  DCHECK((kRowB == Eigen::Dynamic) || (kRowB == num_row_b));           \
-  DCHECK((kColB == Eigen::Dynamic) || (kColB == num_col_b));           \
-  const int NUM_ROW_A = (kRowA != Eigen::Dynamic ? kRowA : num_row_a); \
-  const int NUM_COL_A = (kColA != Eigen::Dynamic ? kColA : num_col_a); \
-  const int NUM_ROW_B = (kRowB != Eigen::Dynamic ? kRowB : num_row_b); \
-  const int NUM_COL_B = (kColB != Eigen::Dynamic ? kColB : num_col_b);
-
-#define CERES_GEMM_EIGEN_HEADER                                 \
-  const typename EigenTypes<kRowA, kColA>::ConstMatrixRef Aref( \
-      A, num_row_a, num_col_a);                                 \
-  const typename EigenTypes<kRowB, kColB>::ConstMatrixRef Bref( \
-      B, num_row_b, num_col_b);                                 \
-  MatrixRef Cref(C, row_stride_c, col_stride_c);
-
-// clang-format off
-#define CERES_CALL_GEMM(name)                                           \
-  name<kRowA, kColA, kRowB, kColB, kOperation>(                         \
-      A, num_row_a, num_col_a,                                          \
-      B, num_row_b, num_col_b,                                          \
-      C, start_row_c, start_col_c, row_stride_c, col_stride_c);
-// clang-format on
-
-#define CERES_GEMM_STORE_SINGLE(p, index, value) \
-  if (kOperation > 0) {                          \
-    p[index] += value;                           \
-  } else if (kOperation < 0) {                   \
-    p[index] -= value;                           \
-  } else {                                       \
-    p[index] = value;                            \
-  }
-
-#define CERES_GEMM_STORE_PAIR(p, index, v1, v2) \
-  if (kOperation > 0) {                         \
-    p[index] += v1;                             \
-    p[index + 1] += v2;                         \
-  } else if (kOperation < 0) {                  \
-    p[index] -= v1;                             \
-    p[index + 1] -= v2;                         \
-  } else {                                      \
-    p[index] = v1;                              \
-    p[index + 1] = v2;                          \
-  }
-
-// For the matrix-matrix functions below, there are three variants for
-// each functionality. Foo, FooNaive and FooEigen. Foo is the one to
-// be called by the user. FooNaive is a basic loop based
-// implementation and FooEigen uses Eigen's implementation. Foo
-// chooses between FooNaive and FooEigen depending on how many of the
-// template arguments are fixed at compile time. Currently, FooEigen
-// is called if all matrix dimensions are compile time
-// constants. FooNaive is called otherwise. This leads to the best
-// performance currently.
-//
-// The MatrixMatrixMultiply variants compute:
-//
-//   C op A * B;
-//
-// The MatrixTransposeMatrixMultiply variants compute:
-//
-//   C op A' * B
-//
-// where op can be +=, -=, or =.
-//
-// The template parameters (kRowA, kColA, kRowB, kColB) allow
-// specialization of the loop at compile time. If this information is
-// not available, then Eigen::Dynamic should be used as the template
-// argument.
-//
-//   kOperation =  1  -> C += A * B
-//   kOperation = -1  -> C -= A * B
-//   kOperation =  0  -> C  = A * B
-//
-// The functions can write into matrices C which are larger than the
-// matrix A * B. This is done by specifying the true size of C via
-// row_stride_c and col_stride_c, and then indicating where A * B
-// should be written into by start_row_c and start_col_c.
-//
-// Graphically if row_stride_c = 10, col_stride_c = 12, start_row_c =
-// 4 and start_col_c = 5, then if A = 3x2 and B = 2x4, we get
-//
-//   ------------
-//   ------------
-//   ------------
-//   ------------
-//   -----xxxx---
-//   -----xxxx---
-//   -----xxxx---
-//   ------------
-//   ------------
-//   ------------
-//
-CERES_GEMM_BEGIN(MatrixMatrixMultiplyEigen) {
-  CERES_GEMM_EIGEN_HEADER
-  Eigen::Block<MatrixRef, kRowA, kColB> block(
-      Cref, start_row_c, start_col_c, num_row_a, num_col_b);
-
-  if (kOperation > 0) {
-    block.noalias() += Aref * Bref;
-  } else if (kOperation < 0) {
-    block.noalias() -= Aref * Bref;
-  } else {
-    block.noalias() = Aref * Bref;
-  }
-}
-
-CERES_GEMM_BEGIN(MatrixMatrixMultiplyNaive) {
-  CERES_GEMM_NAIVE_HEADER
-  DCHECK_EQ(NUM_COL_A, NUM_ROW_B);
-
-  const int NUM_ROW_C = NUM_ROW_A;
-  const int NUM_COL_C = NUM_COL_B;
-  DCHECK_LE(start_row_c + NUM_ROW_C, row_stride_c);
-  DCHECK_LE(start_col_c + NUM_COL_C, col_stride_c);
-  const int span = 4;
-
-  // Calculate the remainder part first.
-
-  // Process the last odd column if present.
-  if (NUM_COL_C & 1) {
-    int col = NUM_COL_C - 1;
-    const double* pa = &A[0];
-    for (int row = 0; row < NUM_ROW_C; ++row, pa += NUM_COL_A) {
-      const double* pb = &B[col];
-      double tmp = 0.0;
-      for (int k = 0; k < NUM_COL_A; ++k, pb += NUM_COL_B) {
-        tmp += pa[k] * pb[0];
-      }
-
-      const int index = (row + start_row_c) * col_stride_c + start_col_c + col;
-      CERES_GEMM_STORE_SINGLE(C, index, tmp);
-    }
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_COL_C == 1) {
-      return;
-    }
-  }
-
-  // Process the couple columns in remainder if present.
-  if (NUM_COL_C & 2) {
-    int col = NUM_COL_C & (~(span - 1));
-    const double* pa = &A[0];
-    for (int row = 0; row < NUM_ROW_C; ++row, pa += NUM_COL_A) {
-      const double* pb = &B[col];
-      double tmp1 = 0.0, tmp2 = 0.0;
-      for (int k = 0; k < NUM_COL_A; ++k, pb += NUM_COL_B) {
-        double av = pa[k];
-        tmp1 += av * pb[0];
-        tmp2 += av * pb[1];
-      }
-
-      const int index = (row + start_row_c) * col_stride_c + start_col_c + col;
-      CERES_GEMM_STORE_PAIR(C, index, tmp1, tmp2);
-    }
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_COL_C < span) {
-      return;
-    }
-  }
-
-  // Calculate the main part with multiples of 4.
-  int col_m = NUM_COL_C & (~(span - 1));
-  for (int col = 0; col < col_m; col += span) {
-    for (int row = 0; row < NUM_ROW_C; ++row) {
-      const int index = (row + start_row_c) * col_stride_c + start_col_c + col;
-      // clang-format off
-      MMM_mat1x4(NUM_COL_A, &A[row * NUM_COL_A],
-                 &B[col], NUM_COL_B, &C[index], kOperation);
-      // clang-format on
-    }
-  }
-}
-
-CERES_GEMM_BEGIN(MatrixMatrixMultiply) {
-#ifdef CERES_NO_CUSTOM_BLAS
-
-  CERES_CALL_GEMM(MatrixMatrixMultiplyEigen)
-  return;
-
-#else
-
-  if (kRowA != Eigen::Dynamic && kColA != Eigen::Dynamic &&
-      kRowB != Eigen::Dynamic && kColB != Eigen::Dynamic) {
-    CERES_CALL_GEMM(MatrixMatrixMultiplyEigen)
-  } else {
-    CERES_CALL_GEMM(MatrixMatrixMultiplyNaive)
-  }
-
-#endif
-}
-
-CERES_GEMM_BEGIN(MatrixTransposeMatrixMultiplyEigen) {
-  CERES_GEMM_EIGEN_HEADER
-  // clang-format off
-  Eigen::Block<MatrixRef, kColA, kColB> block(Cref,
-                                              start_row_c, start_col_c,
-                                              num_col_a, num_col_b);
-  // clang-format on
-  if (kOperation > 0) {
-    block.noalias() += Aref.transpose() * Bref;
-  } else if (kOperation < 0) {
-    block.noalias() -= Aref.transpose() * Bref;
-  } else {
-    block.noalias() = Aref.transpose() * Bref;
-  }
-}
-
-CERES_GEMM_BEGIN(MatrixTransposeMatrixMultiplyNaive) {
-  CERES_GEMM_NAIVE_HEADER
-  DCHECK_EQ(NUM_ROW_A, NUM_ROW_B);
-
-  const int NUM_ROW_C = NUM_COL_A;
-  const int NUM_COL_C = NUM_COL_B;
-  DCHECK_LE(start_row_c + NUM_ROW_C, row_stride_c);
-  DCHECK_LE(start_col_c + NUM_COL_C, col_stride_c);
-  const int span = 4;
-
-  // Process the remainder part first.
-
-  // Process the last odd column if present.
-  if (NUM_COL_C & 1) {
-    int col = NUM_COL_C - 1;
-    for (int row = 0; row < NUM_ROW_C; ++row) {
-      const double* pa = &A[row];
-      const double* pb = &B[col];
-      double tmp = 0.0;
-      for (int k = 0; k < NUM_ROW_A; ++k) {
-        tmp += pa[0] * pb[0];
-        pa += NUM_COL_A;
-        pb += NUM_COL_B;
-      }
-
-      const int index = (row + start_row_c) * col_stride_c + start_col_c + col;
-      CERES_GEMM_STORE_SINGLE(C, index, tmp);
-    }
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_COL_C == 1) {
-      return;
-    }
-  }
-
-  // Process the couple columns in remainder if present.
-  if (NUM_COL_C & 2) {
-    int col = NUM_COL_C & (~(span - 1));
-    for (int row = 0; row < NUM_ROW_C; ++row) {
-      const double* pa = &A[row];
-      const double* pb = &B[col];
-      double tmp1 = 0.0, tmp2 = 0.0;
-      for (int k = 0; k < NUM_ROW_A; ++k) {
-        double av = *pa;
-        tmp1 += av * pb[0];
-        tmp2 += av * pb[1];
-        pa += NUM_COL_A;
-        pb += NUM_COL_B;
-      }
-
-      const int index = (row + start_row_c) * col_stride_c + start_col_c + col;
-      CERES_GEMM_STORE_PAIR(C, index, tmp1, tmp2);
-    }
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_COL_C < span) {
-      return;
-    }
-  }
-
-  // Process the main part with multiples of 4.
-  int col_m = NUM_COL_C & (~(span - 1));
-  for (int col = 0; col < col_m; col += span) {
-    for (int row = 0; row < NUM_ROW_C; ++row) {
-      const int index = (row + start_row_c) * col_stride_c + start_col_c + col;
-      // clang-format off
-      MTM_mat1x4(NUM_ROW_A, &A[row], NUM_COL_A,
-                 &B[col], NUM_COL_B, &C[index], kOperation);
-      // clang-format on
-    }
-  }
-}
-
-CERES_GEMM_BEGIN(MatrixTransposeMatrixMultiply) {
-#ifdef CERES_NO_CUSTOM_BLAS
-
-  CERES_CALL_GEMM(MatrixTransposeMatrixMultiplyEigen)
-  return;
-
-#else
-
-  if (kRowA != Eigen::Dynamic && kColA != Eigen::Dynamic &&
-      kRowB != Eigen::Dynamic && kColB != Eigen::Dynamic) {
-    CERES_CALL_GEMM(MatrixTransposeMatrixMultiplyEigen)
-  } else {
-    CERES_CALL_GEMM(MatrixTransposeMatrixMultiplyNaive)
-  }
-
-#endif
-}
-
-// Matrix-Vector multiplication
-//
-// c op A * b;
-//
-// where op can be +=, -=, or =.
-//
-// The template parameters (kRowA, kColA) allow specialization of the
-// loop at compile time. If this information is not available, then
-// Eigen::Dynamic should be used as the template argument.
-//
-// kOperation =  1  -> c += A' * b
-// kOperation = -1  -> c -= A' * b
-// kOperation =  0  -> c  = A' * b
-template <int kRowA, int kColA, int kOperation>
-inline void MatrixVectorMultiply(const double* A,
-                                 const int num_row_a,
-                                 const int num_col_a,
-                                 const double* b,
-                                 double* c) {
-#ifdef CERES_NO_CUSTOM_BLAS
-  const typename EigenTypes<kRowA, kColA>::ConstMatrixRef Aref(
-      A, num_row_a, num_col_a);
-  const typename EigenTypes<kColA>::ConstVectorRef bref(b, num_col_a);
-  typename EigenTypes<kRowA>::VectorRef cref(c, num_row_a);
-
-  // lazyProduct works better than .noalias() for matrix-vector
-  // products.
-  if (kOperation > 0) {
-    cref += Aref.lazyProduct(bref);
-  } else if (kOperation < 0) {
-    cref -= Aref.lazyProduct(bref);
-  } else {
-    cref = Aref.lazyProduct(bref);
-  }
-#else
-
-  DCHECK_GT(num_row_a, 0);
-  DCHECK_GT(num_col_a, 0);
-  DCHECK((kRowA == Eigen::Dynamic) || (kRowA == num_row_a));
-  DCHECK((kColA == Eigen::Dynamic) || (kColA == num_col_a));
-
-  const int NUM_ROW_A = (kRowA != Eigen::Dynamic ? kRowA : num_row_a);
-  const int NUM_COL_A = (kColA != Eigen::Dynamic ? kColA : num_col_a);
-  const int span = 4;
-
-  // Calculate the remainder part first.
-
-  // Process the last odd row if present.
-  if (NUM_ROW_A & 1) {
-    int row = NUM_ROW_A - 1;
-    const double* pa = &A[row * NUM_COL_A];
-    const double* pb = &b[0];
-    double tmp = 0.0;
-    for (int col = 0; col < NUM_COL_A; ++col) {
-      tmp += (*pa++) * (*pb++);
-    }
-    CERES_GEMM_STORE_SINGLE(c, row, tmp);
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_ROW_A == 1) {
-      return;
-    }
-  }
-
-  // Process the couple rows in remainder if present.
-  if (NUM_ROW_A & 2) {
-    int row = NUM_ROW_A & (~(span - 1));
-    const double* pa1 = &A[row * NUM_COL_A];
-    const double* pa2 = pa1 + NUM_COL_A;
-    const double* pb = &b[0];
-    double tmp1 = 0.0, tmp2 = 0.0;
-    for (int col = 0; col < NUM_COL_A; ++col) {
-      double bv = *pb++;
-      tmp1 += *(pa1++) * bv;
-      tmp2 += *(pa2++) * bv;
-    }
-    CERES_GEMM_STORE_PAIR(c, row, tmp1, tmp2);
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_ROW_A < span) {
-      return;
-    }
-  }
-
-  // Calculate the main part with multiples of 4.
-  int row_m = NUM_ROW_A & (~(span - 1));
-  for (int row = 0; row < row_m; row += span) {
-    // clang-format off
-    MVM_mat4x1(NUM_COL_A, &A[row * NUM_COL_A], NUM_COL_A,
-               &b[0], &c[row], kOperation);
-    // clang-format on
-  }
-
-#endif  // CERES_NO_CUSTOM_BLAS
-}
-
-// Similar to MatrixVectorMultiply, except that A is transposed, i.e.,
-//
-// c op A' * b;
-template <int kRowA, int kColA, int kOperation>
-inline void MatrixTransposeVectorMultiply(const double* A,
-                                          const int num_row_a,
-                                          const int num_col_a,
-                                          const double* b,
-                                          double* c) {
-#ifdef CERES_NO_CUSTOM_BLAS
-  const typename EigenTypes<kRowA, kColA>::ConstMatrixRef Aref(
-      A, num_row_a, num_col_a);
-  const typename EigenTypes<kRowA>::ConstVectorRef bref(b, num_row_a);
-  typename EigenTypes<kColA>::VectorRef cref(c, num_col_a);
-
-  // lazyProduct works better than .noalias() for matrix-vector
-  // products.
-  if (kOperation > 0) {
-    cref += Aref.transpose().lazyProduct(bref);
-  } else if (kOperation < 0) {
-    cref -= Aref.transpose().lazyProduct(bref);
-  } else {
-    cref = Aref.transpose().lazyProduct(bref);
-  }
-#else
-
-  DCHECK_GT(num_row_a, 0);
-  DCHECK_GT(num_col_a, 0);
-  DCHECK((kRowA == Eigen::Dynamic) || (kRowA == num_row_a));
-  DCHECK((kColA == Eigen::Dynamic) || (kColA == num_col_a));
-
-  const int NUM_ROW_A = (kRowA != Eigen::Dynamic ? kRowA : num_row_a);
-  const int NUM_COL_A = (kColA != Eigen::Dynamic ? kColA : num_col_a);
-  const int span = 4;
-
-  // Calculate the remainder part first.
-
-  // Process the last odd column if present.
-  if (NUM_COL_A & 1) {
-    int row = NUM_COL_A - 1;
-    const double* pa = &A[row];
-    const double* pb = &b[0];
-    double tmp = 0.0;
-    for (int col = 0; col < NUM_ROW_A; ++col) {
-      tmp += *pa * (*pb++);
-      pa += NUM_COL_A;
-    }
-    CERES_GEMM_STORE_SINGLE(c, row, tmp);
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_COL_A == 1) {
-      return;
-    }
-  }
-
-  // Process the couple columns in remainder if present.
-  if (NUM_COL_A & 2) {
-    int row = NUM_COL_A & (~(span - 1));
-    const double* pa = &A[row];
-    const double* pb = &b[0];
-    double tmp1 = 0.0, tmp2 = 0.0;
-    for (int col = 0; col < NUM_ROW_A; ++col) {
-      // clang-format off
-      double bv = *pb++;
-      tmp1 += *(pa    ) * bv;
-      tmp2 += *(pa + 1) * bv;
-      pa += NUM_COL_A;
-      // clang-format on
-    }
-    CERES_GEMM_STORE_PAIR(c, row, tmp1, tmp2);
-
-    // Return directly for efficiency of extremely small matrix multiply.
-    if (NUM_COL_A < span) {
-      return;
-    }
-  }
-
-  // Calculate the main part with multiples of 4.
-  int row_m = NUM_COL_A & (~(span - 1));
-  for (int row = 0; row < row_m; row += span) {
-    // clang-format off
-    MTV_mat4x1(NUM_ROW_A, &A[row], NUM_COL_A,
-               &b[0], &c[row], kOperation);
-    // clang-format on
-  }
-
-#endif  // CERES_NO_CUSTOM_BLAS
-}
-
-#undef CERES_GEMM_BEGIN
-#undef CERES_GEMM_EIGEN_HEADER
-#undef CERES_GEMM_NAIVE_HEADER
-#undef CERES_CALL_GEMM
-#undef CERES_GEMM_STORE_SINGLE
-#undef CERES_GEMM_STORE_PAIR
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SMALL_BLAS_H_
diff --git a/third_party/ceres/internal/ceres/small_blas_gemm_benchmark.cc b/third_party/ceres/internal/ceres/small_blas_gemm_benchmark.cc
deleted file mode 100644
index ea0ecdf..0000000
--- a/third_party/ceres/internal/ceres/small_blas_gemm_benchmark.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <iostream>
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/small_blas.h"
-
-namespace ceres::internal {
-
-// Benchmarking matrix-matrix multiply routines and optimizing memory
-// access requires that we make sure that they are not just sitting in
-// the cache. So, as the benchmarking routine iterates, we need to
-// multiply new/different matrice. Allocating/creating these objects
-// in the benchmarking loop is too heavy duty, so we create them
-// before hand and cycle through them in the benchmark. This class,
-// given the size of the matrices creates such objects for use in the
-// benchmark.
-class MatrixMatrixMultiplyData {
- public:
-  MatrixMatrixMultiplyData(
-      int a_rows, int a_cols, int b_rows, int b_cols, int c_rows, int c_cols)
-      : num_elements_(1000),
-        a_size_(num_elements_ * a_rows * a_cols),
-        b_size_(b_rows * b_cols),
-        c_size_(c_rows * c_cols),
-        a_(num_elements_ * a_size_, 1.00001),
-        b_(num_elements_ * b_size_, 0.5),
-        c_(num_elements_ * c_size_, -1.1) {}
-
-  int num_elements() const { return num_elements_; }
-  double* GetA(int i) { return &a_[i * a_size_]; }
-  double* GetB(int i) { return &b_[i * b_size_]; }
-  double* GetC(int i) { return &c_[i * c_size_]; }
-
- private:
-  int num_elements_;
-  int a_size_;
-  int b_size_;
-  int c_size_;
-  std::vector<double> a_;
-  std::vector<double> b_;
-  std::vector<double> c_;
-};
-
-#define GEMM_KIND_EQ 0
-#define GEMM_KIND_ADD 1
-#define GEMM_KIND_SUB -1
-
-#define BENCHMARK_MM_FN(FN, M, N, K, NAME, MT, NT, KT)                      \
-  void static BM_##FN##_##NAME##_##M##x##N##x##K(benchmark::State& state) { \
-    const int b_rows = M;                                                   \
-    const int b_cols = N;                                                   \
-    const int c_rows = b_cols;                                              \
-    const int c_cols = K;                                                   \
-    const int a_rows = b_rows;                                              \
-    const int a_cols = c_cols;                                              \
-    MatrixMatrixMultiplyData data(                                          \
-        a_rows, a_cols, b_rows, b_cols, c_rows, c_cols);                    \
-    const int num_elements = data.num_elements();                           \
-    int iter = 0;                                                           \
-    for (auto _ : state) {                                                  \
-      FN<MT, KT, KT, NT, GEMM_KIND_ADD>(data.GetB(iter),                    \
-                                        b_rows,                             \
-                                        b_cols,                             \
-                                        data.GetC(iter),                    \
-                                        c_rows,                             \
-                                        c_cols,                             \
-                                        data.GetA(iter),                    \
-                                        512,                                \
-                                        512,                                \
-                                        a_rows,                             \
-                                        a_cols);                            \
-      iter = (iter + 1) % num_elements;                                     \
-    }                                                                       \
-  }                                                                         \
-  BENCHMARK(BM_##FN##_##NAME##_##M##x##N##x##K);
-
-#define BENCHMARK_STATIC_MM_FN(FN, M, N, K) \
-  BENCHMARK_MM_FN(FN, M, N, K, Static, M, N, K)
-#define BENCHMARK_DYNAMIC_MM_FN(FN, M, N, K) \
-  BENCHMARK_MM_FN(                           \
-      FN, M, N, K, Dynamic, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic)
-
-#define BENCHMARK_MTM_FN(FN, M, N, K, NAME, MT, NT, KT)                     \
-  void static BM_##FN##_##NAME##_##M##x##N##x##K(benchmark::State& state) { \
-    const int b_rows = M;                                                   \
-    const int b_cols = N;                                                   \
-    const int c_rows = b_rows;                                              \
-    const int c_cols = K;                                                   \
-    const int a_rows = b_cols;                                              \
-    const int a_cols = c_cols;                                              \
-    MatrixMatrixMultiplyData data(                                          \
-        a_rows, a_cols, b_rows, b_cols, c_rows, c_cols);                    \
-    const int num_elements = data.num_elements();                           \
-    int iter = 0;                                                           \
-    for (auto _ : state) {                                                  \
-      FN<KT, MT, KT, NT, GEMM_KIND_ADD>(data.GetB(iter),                    \
-                                        b_rows,                             \
-                                        b_cols,                             \
-                                        data.GetC(iter),                    \
-                                        c_rows,                             \
-                                        c_cols,                             \
-                                        data.GetA(iter),                    \
-                                        0,                                  \
-                                        0,                                  \
-                                        a_rows,                             \
-                                        a_cols);                            \
-      iter = (iter + 1) % num_elements;                                     \
-    }                                                                       \
-  }                                                                         \
-  BENCHMARK(BM_##FN##_##NAME##_##M##x##N##x##K);
-
-#define BENCHMARK_STATIC_MMT_FN(FN, M, N, K) \
-  BENCHMARK_MTM_FN(FN, M, N, K, Static, M, N, K)
-#define BENCHMARK_DYNAMIC_MMT_FN(FN, M, N, K) \
-  BENCHMARK_MTM_FN(                           \
-      FN, M, N, K, Dynamic, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic)
-
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 2, 3, 4)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 3, 3, 3)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 4, 4, 4)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 8, 8, 8)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 9, 9, 3)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 9, 3, 3)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyEigen, 3, 9, 9)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 2, 3, 4)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 3, 3, 3)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 4, 4, 4)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 8, 8, 8)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 9, 9, 3)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 9, 3, 3)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyEigen, 3, 9, 9)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 2, 3, 4)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 3, 3, 3)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 4, 4, 4)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 8, 8, 8)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 9, 9, 3)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 9, 3, 3)
-BENCHMARK_STATIC_MM_FN(MatrixMatrixMultiplyNaive, 3, 9, 9)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 2, 3, 4)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 3, 3, 3)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 4, 4, 4)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 8, 8, 8)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 9, 9, 3)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 9, 3, 3)
-BENCHMARK_DYNAMIC_MM_FN(MatrixMatrixMultiplyNaive, 3, 9, 9)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 2, 3, 4)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 3, 3, 3)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 4, 4, 4)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 8, 8, 8)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 9, 9, 3)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 9, 3, 3)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 3, 9, 9)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 2, 3, 4)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 3, 3, 3)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 4, 4, 4)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 8, 8, 8)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 9, 9, 3)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 9, 3, 3)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyEigen, 3, 9, 9)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 2, 3, 4)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 3, 3, 3)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 4, 4, 4)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 8, 8, 8)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 9, 9, 3)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 9, 3, 3)
-BENCHMARK_STATIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 3, 9, 9)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 2, 3, 4)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 3, 3, 3)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 4, 4, 4)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 8, 8, 8)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 9, 9, 3)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 9, 3, 3)
-BENCHMARK_DYNAMIC_MMT_FN(MatrixTransposeMatrixMultiplyNaive, 3, 9, 9)
-
-#undef GEMM_KIND_EQ
-#undef GEMM_KIND_ADD
-#undef GEMM_KIND_SUB
-#undef BENCHMARK_MM_FN
-#undef BENCHMARK_STATIC_MM_FN
-#undef BENCHMARK_DYNAMIC_MM_FN
-#undef BENCHMARK_MTM_FN
-#undef BENCHMARK_DYNAMIC_MMT_FN
-#undef BENCHMARK_STATIC_MMT_FN
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/small_blas_gemv_benchmark.cc b/third_party/ceres/internal/ceres/small_blas_gemv_benchmark.cc
deleted file mode 100644
index 6bf584d..0000000
--- a/third_party/ceres/internal/ceres/small_blas_gemv_benchmark.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/small_blas.h"
-
-namespace ceres {
-
-// Benchmarking matrix-vector multiply routines and optimizing memory
-// access requires that we make sure that they are not just sitting in
-// the cache. So, as the benchmarking routine iterates, we need to
-// multiply new/different matrice and vectors. Allocating/creating
-// these objects in the benchmarking loop is too heavy duty, so we
-// create them before hand and cycle through them in the
-// benchmark. This class, given the size of the matrix creates such
-// matrix and vector objects for use in the benchmark.
-class MatrixVectorMultiplyData {
- public:
-  MatrixVectorMultiplyData(int rows, int cols)
-      : num_elements_(1000),
-        rows_(rows),
-        cols_(cols),
-        a_(num_elements_ * rows, 1.001),
-        b_(num_elements_ * rows * cols, 1.5),
-        c_(num_elements_ * cols, 1.00003) {}
-
-  int num_elements() const { return num_elements_; }
-  double* GetA(int i) { return &a_[i * rows_]; }
-  double* GetB(int i) { return &b_[i * rows_ * cols_]; }
-  double* GetC(int i) { return &c_[i * cols_]; }
-
- private:
-  const int num_elements_;
-  const int rows_;
-  const int cols_;
-  std::vector<double> a_;
-  std::vector<double> b_;
-  std::vector<double> c_;
-};
-
-// Helper function to generate the various matrix sizes for which we
-// run the benchmark.
-static void MatrixSizeArguments(benchmark::internal::Benchmark* benchmark) {
-  std::vector<int> rows = {1, 2, 3, 4, 6, 8};
-  std::vector<int> cols = {1, 2, 3, 4, 8, 12, 15};
-  for (int r : rows) {
-    for (int c : cols) {
-      benchmark->Args({r, c});
-    }
-  }
-}
-
-static void BM_MatrixVectorMultiply(benchmark::State& state) {
-  const int rows = state.range(0);
-  const int cols = state.range(1);
-  MatrixVectorMultiplyData data(rows, cols);
-  const int num_elements = data.num_elements();
-  int iter = 0;
-  for (auto _ : state) {
-    // A += B * C;
-    internal::MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-        data.GetB(iter), rows, cols, data.GetC(iter), data.GetA(iter));
-    iter = (iter + 1) % num_elements;
-  }
-}
-
-BENCHMARK(BM_MatrixVectorMultiply)->Apply(MatrixSizeArguments);
-
-static void BM_MatrixTransposeVectorMultiply(benchmark::State& state) {
-  const int rows = state.range(0);
-  const int cols = state.range(1);
-  MatrixVectorMultiplyData data(cols, rows);
-  const int num_elements = data.num_elements();
-  int iter = 0;
-  for (auto _ : state) {
-    internal::MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-        data.GetB(iter), rows, cols, data.GetC(iter), data.GetA(iter));
-    iter = (iter + 1) % num_elements;
-  }
-}
-
-BENCHMARK(BM_MatrixTransposeVectorMultiply)->Apply(MatrixSizeArguments);
-
-}  // namespace ceres
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/small_blas_generic.h b/third_party/ceres/internal/ceres/small_blas_generic.h
deleted file mode 100644
index 93ee338..0000000
--- a/third_party/ceres/internal/ceres/small_blas_generic.h
+++ /dev/null
@@ -1,315 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: yangfan34@lenovo.com (Lenovo Research Device+ Lab - Shanghai)
-//
-// Optimization for simple blas functions used in the Schur Eliminator.
-// These are fairly basic implementations which already yield a significant
-// speedup in the eliminator performance.
-
-#ifndef CERES_INTERNAL_SMALL_BLAS_GENERIC_H_
-#define CERES_INTERNAL_SMALL_BLAS_GENERIC_H_
-
-namespace ceres::internal {
-
-// The following macros are used to share code
-#define CERES_GEMM_OPT_NAIVE_HEADER       \
-  double cvec4[4] = {0.0, 0.0, 0.0, 0.0}; \
-  const double* pa = a;                   \
-  const double* pb = b;                   \
-  const int span = 4;                     \
-  int col_r = col_a & (span - 1);         \
-  int col_m = col_a - col_r;
-
-#define CERES_GEMM_OPT_STORE_MAT1X4 \
-  if (kOperation > 0) {             \
-    c[0] += cvec4[0];               \
-    c[1] += cvec4[1];               \
-    c[2] += cvec4[2];               \
-    c[3] += cvec4[3];               \
-  } else if (kOperation < 0) {      \
-    c[0] -= cvec4[0];               \
-    c[1] -= cvec4[1];               \
-    c[2] -= cvec4[2];               \
-    c[3] -= cvec4[3];               \
-  } else {                          \
-    c[0] = cvec4[0];                \
-    c[1] = cvec4[1];                \
-    c[2] = cvec4[2];                \
-    c[3] = cvec4[3];                \
-  }                                 \
-  c += 4;
-
-// Matrix-Matrix Multiplication
-// Figure out 1x4 of Matrix C in one batch
-//
-// c op a * B;
-// where op can be +=, -=, or =, indicated by kOperation.
-//
-//  Matrix C              Matrix A                   Matrix B
-//
-//  C0, C1, C2, C3   op   A0, A1, A2, A3, ...    *   B0, B1, B2, B3
-//                                                   B4, B5, B6, B7
-//                                                   B8, B9, Ba, Bb
-//                                                   Bc, Bd, Be, Bf
-//                                                   . , . , . , .
-//                                                   . , . , . , .
-//                                                   . , . , . , .
-//
-// unroll for loops
-// utilize the data resided in cache
-// NOTE: col_a means the columns of A
-static inline void MMM_mat1x4(const int col_a,
-                              const double* a,
-                              const double* b,
-                              const int col_stride_b,
-                              double* c,
-                              const int kOperation) {
-  CERES_GEMM_OPT_NAIVE_HEADER
-  double av = 0.0;
-  int bi = 0;
-
-#define CERES_GEMM_OPT_MMM_MAT1X4_MUL \
-  av = pa[k];                         \
-  pb = b + bi;                        \
-  cvec4[0] += av * pb[0];             \
-  cvec4[1] += av * pb[1];             \
-  cvec4[2] += av * pb[2];             \
-  cvec4[3] += av * pb[3];             \
-  pb += 4;                            \
-  bi += col_stride_b;                 \
-  k++;
-
-  for (int k = 0; k < col_m;) {
-    CERES_GEMM_OPT_MMM_MAT1X4_MUL
-    CERES_GEMM_OPT_MMM_MAT1X4_MUL
-    CERES_GEMM_OPT_MMM_MAT1X4_MUL
-    CERES_GEMM_OPT_MMM_MAT1X4_MUL
-  }
-
-  for (int k = col_m; k < col_a;) {
-    CERES_GEMM_OPT_MMM_MAT1X4_MUL
-  }
-
-  CERES_GEMM_OPT_STORE_MAT1X4
-
-#undef CERES_GEMM_OPT_MMM_MAT1X4_MUL
-}
-
-// Matrix Transpose-Matrix multiplication
-// Figure out 1x4 of Matrix C in one batch
-//
-// c op a' * B;
-// where op can be +=, -=, or = indicated by kOperation.
-//
-//                        Matrix A
-//
-//                        A0
-//                        A1
-//                        A2
-//                        A3
-//                        .
-//                        .
-//                        .
-//
-//  Matrix C              Matrix A'                  Matrix B
-//
-//  C0, C1, C2, C3   op   A0, A1, A2, A3, ...    *   B0, B1, B2, B3
-//                                                   B4, B5, B6, B7
-//                                                   B8, B9, Ba, Bb
-//                                                   Bc, Bd, Be, Bf
-//                                                   . , . , . , .
-//                                                   . , . , . , .
-//                                                   . , . , . , .
-//
-// unroll for loops
-// utilize the data resided in cache
-// NOTE: col_a means the columns of A'
-static inline void MTM_mat1x4(const int col_a,
-                              const double* a,
-                              const int col_stride_a,
-                              const double* b,
-                              const int col_stride_b,
-                              double* c,
-                              const int kOperation) {
-  CERES_GEMM_OPT_NAIVE_HEADER
-  double av = 0.0;
-  int ai = 0;
-  int bi = 0;
-
-#define CERES_GEMM_OPT_MTM_MAT1X4_MUL \
-  av = pa[ai];                        \
-  pb = b + bi;                        \
-  cvec4[0] += av * pb[0];             \
-  cvec4[1] += av * pb[1];             \
-  cvec4[2] += av * pb[2];             \
-  cvec4[3] += av * pb[3];             \
-  pb += 4;                            \
-  ai += col_stride_a;                 \
-  bi += col_stride_b;
-
-  for (int k = 0; k < col_m; k += span) {
-    CERES_GEMM_OPT_MTM_MAT1X4_MUL
-    CERES_GEMM_OPT_MTM_MAT1X4_MUL
-    CERES_GEMM_OPT_MTM_MAT1X4_MUL
-    CERES_GEMM_OPT_MTM_MAT1X4_MUL
-  }
-
-  for (int k = col_m; k < col_a; k++) {
-    CERES_GEMM_OPT_MTM_MAT1X4_MUL
-  }
-
-  CERES_GEMM_OPT_STORE_MAT1X4
-
-#undef CERES_GEMM_OPT_MTM_MAT1X4_MUL
-}
-
-// Matrix-Vector Multiplication
-// Figure out 4x1 of vector c in one batch
-//
-// c op A * b;
-// where op can be +=, -=, or =, indicated by kOperation.
-//
-//  Vector c              Matrix A                   Vector b
-//
-//  C0               op   A0, A1, A2, A3, ...    *   B0
-//  C1                    A4, A5, A6, A7, ...        B1
-//  C2                    A8, A9, Aa, Ab, ...        B2
-//  C3                    Ac, Ad, Ae, Af, ...        B3
-//                                                   .
-//                                                   .
-//                                                   .
-//
-// unroll for loops
-// utilize the data resided in cache
-// NOTE: col_a means the columns of A
-static inline void MVM_mat4x1(const int col_a,
-                              const double* a,
-                              const int col_stride_a,
-                              const double* b,
-                              double* c,
-                              const int kOperation) {
-  CERES_GEMM_OPT_NAIVE_HEADER
-  double bv = 0.0;
-
-  // clang-format off
-#define CERES_GEMM_OPT_MVM_MAT4X1_MUL       \
-  bv = *pb;                                 \
-  cvec4[0] += *(pa                   ) * bv; \
-  cvec4[1] += *(pa + col_stride_a    ) * bv; \
-  cvec4[2] += *(pa + col_stride_a * 2) * bv; \
-  cvec4[3] += *(pa + col_stride_a * 3) * bv; \
-  pa++;                                     \
-  pb++;
-  // clang-format on
-
-  for (int k = 0; k < col_m; k += span) {
-    CERES_GEMM_OPT_MVM_MAT4X1_MUL
-    CERES_GEMM_OPT_MVM_MAT4X1_MUL
-    CERES_GEMM_OPT_MVM_MAT4X1_MUL
-    CERES_GEMM_OPT_MVM_MAT4X1_MUL
-  }
-
-  for (int k = col_m; k < col_a; k++) {
-    CERES_GEMM_OPT_MVM_MAT4X1_MUL
-  }
-
-  CERES_GEMM_OPT_STORE_MAT1X4
-
-#undef CERES_GEMM_OPT_MVM_MAT4X1_MUL
-}
-
-// Matrix Transpose-Vector multiplication
-// Figure out 4x1 of vector c in one batch
-//
-// c op A' * b;
-// where op can be +=, -=, or =, indicated by kOperation.
-//
-//                        Matrix A
-//
-//                        A0, A4, A8, Ac
-//                        A1, A5, A9, Ad
-//                        A2, A6, Aa, Ae
-//                        A3, A7, Ab, Af
-//                        . , . , . , .
-//                        . , . , . , .
-//                        . , . , . , .
-//
-//  Vector c              Matrix A'                  Vector b
-//
-//  C0               op   A0, A1, A2, A3, ...    *   B0
-//  C1                    A4, A5, A6, A7, ...        B1
-//  C2                    A8, A9, Aa, Ab, ...        B2
-//  C3                    Ac, Ad, Ae, Af, ...        B3
-//                                                   .
-//                                                   .
-//                                                   .
-//
-// unroll for loops
-// utilize the data resided in cache
-// NOTE: col_a means the columns of A'
-static inline void MTV_mat4x1(const int col_a,
-                              const double* a,
-                              const int col_stride_a,
-                              const double* b,
-                              double* c,
-                              const int kOperation) {
-  CERES_GEMM_OPT_NAIVE_HEADER
-  double bv = 0.0;
-
-#define CERES_GEMM_OPT_MTV_MAT4X1_MUL \
-  bv = *pb;                           \
-  cvec4[0] += pa[0] * bv;             \
-  cvec4[1] += pa[1] * bv;             \
-  cvec4[2] += pa[2] * bv;             \
-  cvec4[3] += pa[3] * bv;             \
-  pa += col_stride_a;                 \
-  pb++;
-
-  for (int k = 0; k < col_m; k += span) {
-    CERES_GEMM_OPT_MTV_MAT4X1_MUL
-    CERES_GEMM_OPT_MTV_MAT4X1_MUL
-    CERES_GEMM_OPT_MTV_MAT4X1_MUL
-    CERES_GEMM_OPT_MTV_MAT4X1_MUL
-  }
-
-  for (int k = col_m; k < col_a; k++) {
-    CERES_GEMM_OPT_MTV_MAT4X1_MUL
-  }
-
-  CERES_GEMM_OPT_STORE_MAT1X4
-
-#undef CERES_GEMM_OPT_MTV_MAT4X1_MUL
-}
-
-#undef CERES_GEMM_OPT_NAIVE_HEADER
-#undef CERES_GEMM_OPT_STORE_MAT1X4
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SMALL_BLAS_GENERIC_H_
diff --git a/third_party/ceres/internal/ceres/small_blas_test.cc b/third_party/ceres/internal/ceres/small_blas_test.cc
deleted file mode 100644
index 97922aa..0000000
--- a/third_party/ceres/internal/ceres/small_blas_test.cc
+++ /dev/null
@@ -1,622 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#include "ceres/small_blas.h"
-
-#include <limits>
-#include <string>
-
-#include "ceres/internal/eigen.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-const double kTolerance = 5.0 * std::numeric_limits<double>::epsilon();
-
-// Static or dynamic problem types.
-enum class DimType { Static, Dynamic };
-
-// Constructs matrix functor type.
-#define MATRIX_FUN_TY(FN)                                         \
-  template <int kRowA,                                            \
-            int kColA,                                            \
-            int kRowB,                                            \
-            int kColB,                                            \
-            int kOperation,                                       \
-            DimType kDimType>                                     \
-  struct FN##Ty {                                                 \
-    void operator()(const double* A,                              \
-                    const int num_row_a,                          \
-                    const int num_col_a,                          \
-                    const double* B,                              \
-                    const int num_row_b,                          \
-                    const int num_col_b,                          \
-                    double* C,                                    \
-                    const int start_row_c,                        \
-                    const int start_col_c,                        \
-                    const int row_stride_c,                       \
-                    const int col_stride_c) {                     \
-      if (kDimType == DimType::Static) {                          \
-        FN<kRowA, kColA, kRowB, kColB, kOperation>(A,             \
-                                                   num_row_a,     \
-                                                   num_col_a,     \
-                                                   B,             \
-                                                   num_row_b,     \
-                                                   num_col_b,     \
-                                                   C,             \
-                                                   start_row_c,   \
-                                                   start_col_c,   \
-                                                   row_stride_c,  \
-                                                   col_stride_c); \
-      } else {                                                    \
-        FN<Eigen::Dynamic,                                        \
-           Eigen::Dynamic,                                        \
-           Eigen::Dynamic,                                        \
-           Eigen::Dynamic,                                        \
-           kOperation>(A,                                         \
-                       num_row_a,                                 \
-                       num_col_a,                                 \
-                       B,                                         \
-                       num_row_b,                                 \
-                       num_col_b,                                 \
-                       C,                                         \
-                       start_row_c,                               \
-                       start_col_c,                               \
-                       row_stride_c,                              \
-                       col_stride_c);                             \
-      }                                                           \
-    }                                                             \
-  };
-
-MATRIX_FUN_TY(MatrixMatrixMultiply)
-MATRIX_FUN_TY(MatrixMatrixMultiplyNaive)
-MATRIX_FUN_TY(MatrixTransposeMatrixMultiply)
-MATRIX_FUN_TY(MatrixTransposeMatrixMultiplyNaive)
-
-#undef MATRIX_FUN_TY
-
-// Initializes matrix entries.
-static void initMatrix(Matrix& mat) {
-  for (int i = 0; i < mat.rows(); ++i) {
-    for (int j = 0; j < mat.cols(); ++j) {
-      mat(i, j) = i + j + 1;
-    }
-  }
-}
-
-template <int kRowA,
-          int kColA,
-          int kColB,
-          DimType kDimType,
-          template <int, int, int, int, int, DimType>
-          class FunctorTy>
-struct TestMatrixFunctions {
-  void operator()() {
-    Matrix A(kRowA, kColA);
-    initMatrix(A);
-    const int kRowB = kColA;
-    Matrix B(kRowB, kColB);
-    initMatrix(B);
-
-    for (int row_stride_c = kRowA; row_stride_c < 3 * kRowA; ++row_stride_c) {
-      for (int col_stride_c = kColB; col_stride_c < 3 * kColB; ++col_stride_c) {
-        Matrix C(row_stride_c, col_stride_c);
-        C.setOnes();
-
-        Matrix C_plus = C;
-        Matrix C_minus = C;
-        Matrix C_assign = C;
-
-        Matrix C_plus_ref = C;
-        Matrix C_minus_ref = C;
-        Matrix C_assign_ref = C;
-
-        for (int start_row_c = 0; start_row_c + kRowA < row_stride_c;
-             ++start_row_c) {
-          for (int start_col_c = 0; start_col_c + kColB < col_stride_c;
-               ++start_col_c) {
-            C_plus_ref.block(start_row_c, start_col_c, kRowA, kColB) += A * B;
-            FunctorTy<kRowA, kColA, kRowB, kColB, 1, kDimType>()(A.data(),
-                                                                 kRowA,
-                                                                 kColA,
-                                                                 B.data(),
-                                                                 kRowB,
-                                                                 kColB,
-                                                                 C_plus.data(),
-                                                                 start_row_c,
-                                                                 start_col_c,
-                                                                 row_stride_c,
-                                                                 col_stride_c);
-
-            EXPECT_NEAR((C_plus_ref - C_plus).norm(), 0.0, kTolerance)
-                << "C += A * B \n"
-                << "row_stride_c : " << row_stride_c << "\n"
-                << "col_stride_c : " << col_stride_c << "\n"
-                << "start_row_c  : " << start_row_c << "\n"
-                << "start_col_c  : " << start_col_c << "\n"
-                << "Cref : \n"
-                << C_plus_ref << "\n"
-                << "C: \n"
-                << C_plus;
-
-            C_minus_ref.block(start_row_c, start_col_c, kRowA, kColB) -= A * B;
-            FunctorTy<kRowA, kColA, kRowB, kColB, -1, kDimType>()(
-                A.data(),
-                kRowA,
-                kColA,
-                B.data(),
-                kRowB,
-                kColB,
-                C_minus.data(),
-                start_row_c,
-                start_col_c,
-                row_stride_c,
-                col_stride_c);
-
-            EXPECT_NEAR((C_minus_ref - C_minus).norm(), 0.0, kTolerance)
-                << "C -= A * B \n"
-                << "row_stride_c : " << row_stride_c << "\n"
-                << "col_stride_c : " << col_stride_c << "\n"
-                << "start_row_c  : " << start_row_c << "\n"
-                << "start_col_c  : " << start_col_c << "\n"
-                << "Cref : \n"
-                << C_minus_ref << "\n"
-                << "C: \n"
-                << C_minus;
-
-            C_assign_ref.block(start_row_c, start_col_c, kRowA, kColB) = A * B;
-
-            FunctorTy<kRowA, kColA, kRowB, kColB, 0, kDimType>()(
-                A.data(),
-                kRowA,
-                kColA,
-                B.data(),
-                kRowB,
-                kColB,
-                C_assign.data(),
-                start_row_c,
-                start_col_c,
-                row_stride_c,
-                col_stride_c);
-
-            EXPECT_NEAR((C_assign_ref - C_assign).norm(), 0.0, kTolerance)
-                << "C = A * B \n"
-                << "row_stride_c : " << row_stride_c << "\n"
-                << "col_stride_c : " << col_stride_c << "\n"
-                << "start_row_c  : " << start_row_c << "\n"
-                << "start_col_c  : " << start_col_c << "\n"
-                << "Cref : \n"
-                << C_assign_ref << "\n"
-                << "C: \n"
-                << C_assign;
-          }
-        }
-      }
-    }
-  }
-};
-
-template <int kRowA,
-          int kColA,
-          int kColB,
-          DimType kDimType,
-          template <int, int, int, int, int, DimType>
-          class FunctorTy>
-struct TestMatrixTransposeFunctions {
-  void operator()() {
-    Matrix A(kRowA, kColA);
-    initMatrix(A);
-    const int kRowB = kRowA;
-    Matrix B(kRowB, kColB);
-    initMatrix(B);
-
-    for (int row_stride_c = kColA; row_stride_c < 3 * kColA; ++row_stride_c) {
-      for (int col_stride_c = kColB; col_stride_c < 3 * kColB; ++col_stride_c) {
-        Matrix C(row_stride_c, col_stride_c);
-        C.setOnes();
-
-        Matrix C_plus = C;
-        Matrix C_minus = C;
-        Matrix C_assign = C;
-
-        Matrix C_plus_ref = C;
-        Matrix C_minus_ref = C;
-        Matrix C_assign_ref = C;
-        for (int start_row_c = 0; start_row_c + kColA < row_stride_c;
-             ++start_row_c) {
-          for (int start_col_c = 0; start_col_c + kColB < col_stride_c;
-               ++start_col_c) {
-            C_plus_ref.block(start_row_c, start_col_c, kColA, kColB) +=
-                A.transpose() * B;
-
-            FunctorTy<kRowA, kColA, kRowB, kColB, 1, kDimType>()(A.data(),
-                                                                 kRowA,
-                                                                 kColA,
-                                                                 B.data(),
-                                                                 kRowB,
-                                                                 kColB,
-                                                                 C_plus.data(),
-                                                                 start_row_c,
-                                                                 start_col_c,
-                                                                 row_stride_c,
-                                                                 col_stride_c);
-
-            EXPECT_NEAR((C_plus_ref - C_plus).norm(), 0.0, kTolerance)
-                << "C += A' * B \n"
-                << "row_stride_c : " << row_stride_c << "\n"
-                << "col_stride_c : " << col_stride_c << "\n"
-                << "start_row_c  : " << start_row_c << "\n"
-                << "start_col_c  : " << start_col_c << "\n"
-                << "Cref : \n"
-                << C_plus_ref << "\n"
-                << "C: \n"
-                << C_plus;
-
-            C_minus_ref.block(start_row_c, start_col_c, kColA, kColB) -=
-                A.transpose() * B;
-
-            FunctorTy<kRowA, kColA, kRowB, kColB, -1, kDimType>()(
-                A.data(),
-                kRowA,
-                kColA,
-                B.data(),
-                kRowB,
-                kColB,
-                C_minus.data(),
-                start_row_c,
-                start_col_c,
-                row_stride_c,
-                col_stride_c);
-
-            EXPECT_NEAR((C_minus_ref - C_minus).norm(), 0.0, kTolerance)
-                << "C -= A' * B \n"
-                << "row_stride_c : " << row_stride_c << "\n"
-                << "col_stride_c : " << col_stride_c << "\n"
-                << "start_row_c  : " << start_row_c << "\n"
-                << "start_col_c  : " << start_col_c << "\n"
-                << "Cref : \n"
-                << C_minus_ref << "\n"
-                << "C: \n"
-                << C_minus;
-
-            C_assign_ref.block(start_row_c, start_col_c, kColA, kColB) =
-                A.transpose() * B;
-
-            FunctorTy<kRowA, kColA, kRowB, kColB, 0, kDimType>()(
-                A.data(),
-                kRowA,
-                kColA,
-                B.data(),
-                kRowB,
-                kColB,
-                C_assign.data(),
-                start_row_c,
-                start_col_c,
-                row_stride_c,
-                col_stride_c);
-
-            EXPECT_NEAR((C_assign_ref - C_assign).norm(), 0.0, kTolerance)
-                << "C = A' * B \n"
-                << "row_stride_c : " << row_stride_c << "\n"
-                << "col_stride_c : " << col_stride_c << "\n"
-                << "start_row_c  : " << start_row_c << "\n"
-                << "start_col_c  : " << start_col_c << "\n"
-                << "Cref : \n"
-                << C_assign_ref << "\n"
-                << "C: \n"
-                << C_assign;
-          }
-        }
-      }
-    }
-  }
-};
-
-TEST(BLAS, MatrixMatrixMultiply_5_3_7) {
-  TestMatrixFunctions<5, 3, 7, DimType::Static, MatrixMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiply_5_3_7_Dynamic) {
-  TestMatrixFunctions<5, 3, 7, DimType::Dynamic, MatrixMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiply_1_1_1) {
-  TestMatrixFunctions<1, 1, 1, DimType::Static, MatrixMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiply_1_1_1_Dynamic) {
-  TestMatrixFunctions<1, 1, 1, DimType::Dynamic, MatrixMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiply_9_9_9) {
-  TestMatrixFunctions<9, 9, 9, DimType::Static, MatrixMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiply_9_9_9_Dynamic) {
-  TestMatrixFunctions<9, 9, 9, DimType::Dynamic, MatrixMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiplyNaive_5_3_7) {
-  TestMatrixFunctions<5,
-                      3,
-                      7,
-                      DimType::Static,
-                      MatrixMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiplyNaive_5_3_7_Dynamic) {
-  TestMatrixFunctions<5,
-                      3,
-                      7,
-                      DimType::Dynamic,
-                      MatrixMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiplyNaive_1_1_1) {
-  TestMatrixFunctions<1,
-                      1,
-                      1,
-                      DimType::Static,
-                      MatrixMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiplyNaive_1_1_1_Dynamic) {
-  TestMatrixFunctions<1,
-                      1,
-                      1,
-                      DimType::Dynamic,
-                      MatrixMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiplyNaive_9_9_9) {
-  TestMatrixFunctions<9,
-                      9,
-                      9,
-                      DimType::Static,
-                      MatrixMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixMatrixMultiplyNaive_9_9_9_Dynamic) {
-  TestMatrixFunctions<9,
-                      9,
-                      9,
-                      DimType::Dynamic,
-                      MatrixMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiply_5_3_7) {
-  TestMatrixTransposeFunctions<5,
-                               3,
-                               7,
-                               DimType::Static,
-                               MatrixTransposeMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiply_5_3_7_Dynamic) {
-  TestMatrixTransposeFunctions<5,
-                               3,
-                               7,
-                               DimType::Dynamic,
-                               MatrixTransposeMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiply_1_1_1) {
-  TestMatrixTransposeFunctions<1,
-                               1,
-                               1,
-                               DimType::Static,
-                               MatrixTransposeMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiply_1_1_1_Dynamic) {
-  TestMatrixTransposeFunctions<1,
-                               1,
-                               1,
-                               DimType::Dynamic,
-                               MatrixTransposeMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiply_9_9_9) {
-  TestMatrixTransposeFunctions<9,
-                               9,
-                               9,
-                               DimType::Static,
-                               MatrixTransposeMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiply_9_9_9_Dynamic) {
-  TestMatrixTransposeFunctions<9,
-                               9,
-                               9,
-                               DimType::Dynamic,
-                               MatrixTransposeMatrixMultiplyTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiplyNaive_5_3_7) {
-  TestMatrixTransposeFunctions<5,
-                               3,
-                               7,
-                               DimType::Static,
-                               MatrixTransposeMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiplyNaive_5_3_7_Dynamic) {
-  TestMatrixTransposeFunctions<5,
-                               3,
-                               7,
-                               DimType::Dynamic,
-                               MatrixTransposeMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiplyNaive_1_1_1) {
-  TestMatrixTransposeFunctions<1,
-                               1,
-                               1,
-                               DimType::Static,
-                               MatrixTransposeMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiplyNaive_1_1_1_Dynamic) {
-  TestMatrixTransposeFunctions<1,
-                               1,
-                               1,
-                               DimType::Dynamic,
-                               MatrixTransposeMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiplyNaive_9_9_9) {
-  TestMatrixTransposeFunctions<9,
-                               9,
-                               9,
-                               DimType::Static,
-                               MatrixTransposeMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixTransposeMatrixMultiplyNaive_9_9_9_Dynamic) {
-  TestMatrixTransposeFunctions<9,
-                               9,
-                               9,
-                               DimType::Dynamic,
-                               MatrixTransposeMatrixMultiplyNaiveTy>()();
-}
-
-TEST(BLAS, MatrixVectorMultiply) {
-  for (int num_rows_a = 1; num_rows_a < 10; ++num_rows_a) {
-    for (int num_cols_a = 1; num_cols_a < 10; ++num_cols_a) {
-      Matrix A(num_rows_a, num_cols_a);
-      A.setOnes();
-
-      Vector b(num_cols_a);
-      b.setOnes();
-
-      Vector c(num_rows_a);
-      c.setOnes();
-
-      Vector c_plus = c;
-      Vector c_minus = c;
-      Vector c_assign = c;
-
-      Vector c_plus_ref = c;
-      Vector c_minus_ref = c;
-      Vector c_assign_ref = c;
-
-      // clang-format off
-      c_plus_ref += A * b;
-      MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-          A.data(), num_rows_a, num_cols_a,
-          b.data(),
-          c_plus.data());
-      EXPECT_NEAR((c_plus_ref - c_plus).norm(), 0.0, kTolerance)
-          << "c += A * b \n"
-          << "c_ref : \n" << c_plus_ref << "\n"
-          << "c: \n" << c_plus;
-
-      c_minus_ref -= A * b;
-      MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, -1>(
-          A.data(), num_rows_a, num_cols_a,
-          b.data(),
-          c_minus.data());
-      EXPECT_NEAR((c_minus_ref - c_minus).norm(), 0.0, kTolerance)
-          << "c -= A * b \n"
-          << "c_ref : \n" << c_minus_ref << "\n"
-          << "c: \n" << c_minus;
-
-      c_assign_ref = A * b;
-      MatrixVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 0>(
-          A.data(), num_rows_a, num_cols_a,
-          b.data(),
-          c_assign.data());
-      EXPECT_NEAR((c_assign_ref - c_assign).norm(), 0.0, kTolerance)
-          << "c = A * b \n"
-          << "c_ref : \n" << c_assign_ref << "\n"
-          << "c: \n" << c_assign;
-      // clang-format on
-    }
-  }
-}
-
-TEST(BLAS, MatrixTransposeVectorMultiply) {
-  for (int num_rows_a = 1; num_rows_a < 10; ++num_rows_a) {
-    for (int num_cols_a = 1; num_cols_a < 10; ++num_cols_a) {
-      Matrix A(num_rows_a, num_cols_a);
-      A.setRandom();
-
-      Vector b(num_rows_a);
-      b.setRandom();
-
-      Vector c(num_cols_a);
-      c.setOnes();
-
-      Vector c_plus = c;
-      Vector c_minus = c;
-      Vector c_assign = c;
-
-      Vector c_plus_ref = c;
-      Vector c_minus_ref = c;
-      Vector c_assign_ref = c;
-
-      // clang-format off
-      c_plus_ref += A.transpose() * b;
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 1>(
-          A.data(), num_rows_a, num_cols_a,
-          b.data(),
-          c_plus.data());
-      EXPECT_NEAR((c_plus_ref - c_plus).norm(), 0.0, kTolerance)
-          << "c += A' * b \n"
-          << "c_ref : \n" << c_plus_ref << "\n"
-          << "c: \n" << c_plus;
-
-      c_minus_ref -= A.transpose() * b;
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, -1>(
-          A.data(), num_rows_a, num_cols_a,
-          b.data(),
-          c_minus.data());
-      EXPECT_NEAR((c_minus_ref - c_minus).norm(), 0.0, kTolerance)
-          << "c -= A' * b \n"
-          << "c_ref : \n" << c_minus_ref << "\n"
-          << "c: \n" << c_minus;
-
-      c_assign_ref = A.transpose() * b;
-      MatrixTransposeVectorMultiply<Eigen::Dynamic, Eigen::Dynamic, 0>(
-          A.data(), num_rows_a, num_cols_a,
-          b.data(),
-          c_assign.data());
-      EXPECT_NEAR((c_assign_ref - c_assign).norm(), 0.0, kTolerance)
-          << "c = A' * b \n"
-          << "c_ref : \n" << c_assign_ref << "\n"
-          << "c: \n" << c_assign;
-      // clang-format on
-    }
-  }
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/solver.cc b/third_party/ceres/internal/ceres/solver.cc
deleted file mode 100644
index 611e465..0000000
--- a/third_party/ceres/internal/ceres/solver.cc
+++ /dev/null
@@ -1,1140 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/solver.h"
-
-#include <algorithm>
-#include <map>
-#include <memory>
-#include <sstream>  // NOLINT
-#include <string>
-#include <vector>
-
-#include "ceres/casts.h"
-#include "ceres/context.h"
-#include "ceres/context_impl.h"
-#include "ceres/detect_structure.h"
-#include "ceres/eigensparse.h"
-#include "ceres/gradient_checking_cost_function.h"
-#include "ceres/internal/export.h"
-#include "ceres/parameter_block_ordering.h"
-#include "ceres/preprocessor.h"
-#include "ceres/problem.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/schur_templates.h"
-#include "ceres/solver_utils.h"
-#include "ceres/stringprintf.h"
-#include "ceres/suitesparse.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-namespace ceres {
-namespace {
-
-using internal::StringAppendF;
-using internal::StringPrintf;
-
-#define OPTION_OP(x, y, OP)                                               \
-  if (!(options.x OP y)) {                                                \
-    std::stringstream ss;                                                 \
-    ss << "Invalid configuration. ";                                      \
-    ss << std::string("Solver::Options::" #x " = ") << options.x << ". "; \
-    ss << "Violated constraint: ";                                        \
-    ss << std::string("Solver::Options::" #x " " #OP " " #y);             \
-    *error = ss.str();                                                    \
-    return false;                                                         \
-  }
-
-#define OPTION_OP_OPTION(x, y, OP)                                        \
-  if (!(options.x OP options.y)) {                                        \
-    std::stringstream ss;                                                 \
-    ss << "Invalid configuration. ";                                      \
-    ss << std::string("Solver::Options::" #x " = ") << options.x << ". "; \
-    ss << std::string("Solver::Options::" #y " = ") << options.y << ". "; \
-    ss << "Violated constraint: ";                                        \
-    ss << std::string("Solver::Options::" #x);                            \
-    ss << std::string(#OP " Solver::Options::" #y ".");                   \
-    *error = ss.str();                                                    \
-    return false;                                                         \
-  }
-
-#define OPTION_GE(x, y) OPTION_OP(x, y, >=);
-#define OPTION_GT(x, y) OPTION_OP(x, y, >);
-#define OPTION_LE(x, y) OPTION_OP(x, y, <=);
-#define OPTION_LT(x, y) OPTION_OP(x, y, <);
-#define OPTION_LE_OPTION(x, y) OPTION_OP_OPTION(x, y, <=)
-#define OPTION_LT_OPTION(x, y) OPTION_OP_OPTION(x, y, <)
-
-bool CommonOptionsAreValid(const Solver::Options& options, std::string* error) {
-  OPTION_GE(max_num_iterations, 0);
-  OPTION_GE(max_solver_time_in_seconds, 0.0);
-  OPTION_GE(function_tolerance, 0.0);
-  OPTION_GE(gradient_tolerance, 0.0);
-  OPTION_GE(parameter_tolerance, 0.0);
-  OPTION_GT(num_threads, 0);
-  if (options.check_gradients) {
-    OPTION_GT(gradient_check_relative_precision, 0.0);
-    OPTION_GT(gradient_check_numeric_derivative_relative_step_size, 0.0);
-  }
-  return true;
-}
-
-bool IsNestedDissectionAvailable(SparseLinearAlgebraLibraryType type) {
-  return (((type == SUITE_SPARSE) &&
-           internal::SuiteSparse::IsNestedDissectionAvailable()) ||
-          (type == ACCELERATE_SPARSE) ||
-          ((type == EIGEN_SPARSE) &&
-           internal::EigenSparse::IsNestedDissectionAvailable()));
-}
-
-bool IsIterativeSolver(LinearSolverType type) {
-  return (type == CGNR || type == ITERATIVE_SCHUR);
-}
-
-bool OptionsAreValidForDenseSolver(const Solver::Options& options,
-                                   std::string* error) {
-  const char* library_name = DenseLinearAlgebraLibraryTypeToString(
-      options.dense_linear_algebra_library_type);
-  const char* solver_name =
-      LinearSolverTypeToString(options.linear_solver_type);
-  constexpr char kFormat[] =
-      "Can't use %s with dense_linear_algebra_library_type = %s "
-      "because support not enabled when Ceres was built.";
-
-  if (!IsDenseLinearAlgebraLibraryTypeAvailable(
-          options.dense_linear_algebra_library_type)) {
-    *error = StringPrintf(kFormat, solver_name, library_name);
-    return false;
-  }
-  return true;
-}
-
-bool OptionsAreValidForSparseCholeskyBasedSolver(const Solver::Options& options,
-                                                 std::string* error) {
-  const char* library_name = SparseLinearAlgebraLibraryTypeToString(
-      options.sparse_linear_algebra_library_type);
-  // Sparse factorization based solvers and some preconditioners require a
-  // sparse Cholesky factorization.
-  const char* solver_name =
-      IsIterativeSolver(options.linear_solver_type)
-          ? PreconditionerTypeToString(options.preconditioner_type)
-          : LinearSolverTypeToString(options.linear_solver_type);
-
-  constexpr char kNoSparseFormat[] =
-      "Can't use %s with sparse_linear_algebra_library_type = %s.";
-  constexpr char kNoLibraryFormat[] =
-      "Can't use %s sparse_linear_algebra_library_type = %s, because support "
-      "was not enabled when Ceres Solver was built.";
-  constexpr char kNoNesdisFormat[] =
-      "NESDIS is not available with sparse_linear_algebra_library_type = %s.";
-  constexpr char kMixedFormat[] =
-      "use_mixed_precision_solves with %s is not supported with "
-      "sparse_linear_algebra_library_type = %s";
-  constexpr char kDynamicSparsityFormat[] =
-      "dynamic sparsity is not supported with "
-      "sparse_linear_algebra_library_type = %s";
-
-  if (options.sparse_linear_algebra_library_type == NO_SPARSE) {
-    *error = StringPrintf(kNoSparseFormat, solver_name, library_name);
-    return false;
-  }
-
-  if (!IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    *error = StringPrintf(kNoLibraryFormat, solver_name, library_name);
-    return false;
-  }
-
-  if (options.linear_solver_ordering_type == ceres::NESDIS &&
-      !IsNestedDissectionAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    *error = StringPrintf(kNoNesdisFormat, library_name);
-    return false;
-  }
-
-  if (options.use_mixed_precision_solves &&
-      options.sparse_linear_algebra_library_type == SUITE_SPARSE) {
-    *error = StringPrintf(kMixedFormat, solver_name, library_name);
-    return false;
-  }
-
-  if (options.dynamic_sparsity &&
-      options.sparse_linear_algebra_library_type == ACCELERATE_SPARSE) {
-    *error = StringPrintf(kDynamicSparsityFormat, library_name);
-    return false;
-  }
-
-  return true;
-}
-
-bool OptionsAreValidForDenseNormalCholesky(const Solver::Options& options,
-                                           std::string* error) {
-  CHECK_EQ(options.linear_solver_type, DENSE_NORMAL_CHOLESKY);
-  return OptionsAreValidForDenseSolver(options, error);
-}
-
-bool OptionsAreValidForDenseQr(const Solver::Options& options,
-                               std::string* error) {
-  CHECK_EQ(options.linear_solver_type, DENSE_QR);
-
-  if (!OptionsAreValidForDenseSolver(options, error)) {
-    return false;
-  }
-
-  if (options.use_mixed_precision_solves) {
-    *error = "Can't use use_mixed_precision_solves with DENSE_QR.";
-    return false;
-  }
-
-  return true;
-}
-
-bool OptionsAreValidForSparseNormalCholesky(const Solver::Options& options,
-                                            std::string* error) {
-  CHECK_EQ(options.linear_solver_type, SPARSE_NORMAL_CHOLESKY);
-  return OptionsAreValidForSparseCholeskyBasedSolver(options, error);
-}
-
-bool OptionsAreValidForDenseSchur(const Solver::Options& options,
-                                  std::string* error) {
-  CHECK_EQ(options.linear_solver_type, DENSE_SCHUR);
-
-  if (options.dynamic_sparsity) {
-    *error = "dynamic sparsity is only supported with SPARSE_NORMAL_CHOLESKY";
-    return false;
-  }
-
-  if (!OptionsAreValidForDenseSolver(options, error)) {
-    return false;
-  }
-
-  return true;
-}
-
-bool OptionsAreValidForSparseSchur(const Solver::Options& options,
-                                   std::string* error) {
-  CHECK_EQ(options.linear_solver_type, SPARSE_SCHUR);
-  if (options.dynamic_sparsity) {
-    *error = "Dynamic sparsity is only supported with SPARSE_NORMAL_CHOLESKY.";
-    return false;
-  }
-  return OptionsAreValidForSparseCholeskyBasedSolver(options, error);
-}
-
-bool OptionsAreValidForIterativeSchur(const Solver::Options& options,
-                                      std::string* error) {
-  CHECK_EQ(options.linear_solver_type, ITERATIVE_SCHUR);
-  if (options.dynamic_sparsity) {
-    *error = "Dynamic sparsity is only supported with SPARSE_NORMAL_CHOLESKY.";
-    return false;
-  }
-
-  if (options.use_explicit_schur_complement) {
-    if (options.preconditioner_type != SCHUR_JACOBI) {
-      *error =
-          "use_explicit_schur_complement only supports "
-          "SCHUR_JACOBI as the preconditioner.";
-      return false;
-    }
-    if (options.use_spse_initialization) {
-      *error =
-          "use_explicit_schur_complement does not support "
-          "use_spse_initialization.";
-      return false;
-    }
-  }
-
-  if (options.use_spse_initialization ||
-      options.preconditioner_type == SCHUR_POWER_SERIES_EXPANSION) {
-    OPTION_GE(max_num_spse_iterations, 1)
-    OPTION_GE(spse_tolerance, 0.0)
-  }
-
-  if (options.use_mixed_precision_solves) {
-    *error = "Can't use use_mixed_precision_solves with ITERATIVE_SCHUR";
-    return false;
-  }
-
-  if (options.dynamic_sparsity) {
-    *error = "Dynamic sparsity is only supported with SPARSE_NORMAL_CHOLESKY.";
-    return false;
-  }
-
-  if (options.preconditioner_type == SUBSET) {
-    *error = "Can't use SUBSET preconditioner with ITERATIVE_SCHUR";
-    return false;
-  }
-
-  // CLUSTER_JACOBI and CLUSTER_TRIDIAGONAL require sparse Cholesky
-  // factorization.
-  if (options.preconditioner_type == CLUSTER_JACOBI ||
-      options.preconditioner_type == CLUSTER_TRIDIAGONAL) {
-    return OptionsAreValidForSparseCholeskyBasedSolver(options, error);
-  }
-
-  return true;
-}
-
-bool OptionsAreValidForCgnr(const Solver::Options& options,
-                            std::string* error) {
-  CHECK_EQ(options.linear_solver_type, CGNR);
-
-  if (options.preconditioner_type != IDENTITY &&
-      options.preconditioner_type != JACOBI &&
-      options.preconditioner_type != SUBSET) {
-    *error =
-        StringPrintf("Can't use CGNR with preconditioner_type = %s.",
-                     PreconditionerTypeToString(options.preconditioner_type));
-    return false;
-  }
-
-  if (options.use_mixed_precision_solves) {
-    *error = "use_mixed_precision_solves cannot be used with CGNR";
-    return false;
-  }
-
-  if (options.dynamic_sparsity) {
-    *error = "Dynamic sparsity is only supported with SPARSE_NORMAL_CHOLESKY.";
-    return false;
-  }
-
-  if (options.preconditioner_type == SUBSET) {
-    if (options.sparse_linear_algebra_library_type == CUDA_SPARSE) {
-      *error =
-          "Can't use CGNR with preconditioner_type = SUBSET when "
-          "sparse_linear_algebra_library_type = CUDA_SPARSE.";
-      return false;
-    }
-
-    if (options.residual_blocks_for_subset_preconditioner.empty()) {
-      *error =
-          "When using SUBSET preconditioner, "
-          "residual_blocks_for_subset_preconditioner cannot be empty";
-      return false;
-    }
-
-    // SUBSET preconditioner requires sparse Cholesky factorization.
-    if (!OptionsAreValidForSparseCholeskyBasedSolver(options, error)) {
-      return false;
-    }
-  }
-
-  // Check options for CGNR with CUDA_SPARSE.
-  if (options.sparse_linear_algebra_library_type == CUDA_SPARSE) {
-    if (!IsSparseLinearAlgebraLibraryTypeAvailable(CUDA_SPARSE)) {
-      *error =
-          "Can't use CGNR with sparse_linear_algebra_library_type = "
-          "CUDA_SPARSE because support was not enabled when Ceres was built.";
-      return false;
-    }
-  }
-  return true;
-}
-
-bool OptionsAreValidForLinearSolver(const Solver::Options& options,
-                                    std::string* error) {
-  switch (options.linear_solver_type) {
-    case DENSE_NORMAL_CHOLESKY:
-      return OptionsAreValidForDenseNormalCholesky(options, error);
-    case DENSE_QR:
-      return OptionsAreValidForDenseQr(options, error);
-    case SPARSE_NORMAL_CHOLESKY:
-      return OptionsAreValidForSparseNormalCholesky(options, error);
-    case DENSE_SCHUR:
-      return OptionsAreValidForDenseSchur(options, error);
-    case SPARSE_SCHUR:
-      return OptionsAreValidForSparseSchur(options, error);
-    case ITERATIVE_SCHUR:
-      return OptionsAreValidForIterativeSchur(options, error);
-    case CGNR:
-      return OptionsAreValidForCgnr(options, error);
-    default:
-      LOG(FATAL) << "Congratulations you have found a bug. Please report "
-                    "this to the "
-                    "Ceres Solver developers. Unknown linear solver type: "
-                 << LinearSolverTypeToString(options.linear_solver_type);
-  }
-  return false;
-}
-
-bool TrustRegionOptionsAreValid(const Solver::Options& options,
-                                std::string* error) {
-  OPTION_GT(initial_trust_region_radius, 0.0);
-  OPTION_GT(min_trust_region_radius, 0.0);
-  OPTION_GT(max_trust_region_radius, 0.0);
-  OPTION_LE_OPTION(min_trust_region_radius, max_trust_region_radius);
-  OPTION_LE_OPTION(min_trust_region_radius, initial_trust_region_radius);
-  OPTION_LE_OPTION(initial_trust_region_radius, max_trust_region_radius);
-  OPTION_GE(min_relative_decrease, 0.0);
-  OPTION_GE(min_lm_diagonal, 0.0);
-  OPTION_GE(max_lm_diagonal, 0.0);
-  OPTION_LE_OPTION(min_lm_diagonal, max_lm_diagonal);
-  OPTION_GE(max_num_consecutive_invalid_steps, 0);
-  OPTION_GT(eta, 0.0);
-  OPTION_GE(min_linear_solver_iterations, 0);
-  OPTION_GE(max_linear_solver_iterations, 0);
-  OPTION_LE_OPTION(min_linear_solver_iterations, max_linear_solver_iterations);
-
-  if (options.use_inner_iterations) {
-    OPTION_GE(inner_iteration_tolerance, 0.0);
-  }
-
-  if (options.use_nonmonotonic_steps) {
-    OPTION_GT(max_consecutive_nonmonotonic_steps, 0);
-  }
-
-  if ((options.trust_region_strategy_type == DOGLEG) &&
-      IsIterativeSolver(options.linear_solver_type)) {
-    *error =
-        "DOGLEG only supports exact factorization based linear "
-        "solvers. If you want to use an iterative solver please "
-        "use LEVENBERG_MARQUARDT as the trust_region_strategy_type";
-    return false;
-  }
-
-  if (!OptionsAreValidForLinearSolver(options, error)) {
-    return false;
-  }
-
-  if (!options.trust_region_minimizer_iterations_to_dump.empty() &&
-      options.trust_region_problem_dump_format_type != CONSOLE &&
-      options.trust_region_problem_dump_directory.empty()) {
-    *error = "Solver::Options::trust_region_problem_dump_directory is empty.";
-    return false;
-  }
-
-  return true;
-}
-
-bool LineSearchOptionsAreValid(const Solver::Options& options,
-                               std::string* error) {
-  OPTION_GT(max_lbfgs_rank, 0);
-  OPTION_GT(min_line_search_step_size, 0.0);
-  OPTION_GT(max_line_search_step_contraction, 0.0);
-  OPTION_LT(max_line_search_step_contraction, 1.0);
-  OPTION_LT_OPTION(max_line_search_step_contraction,
-                   min_line_search_step_contraction);
-  OPTION_LE(min_line_search_step_contraction, 1.0);
-  OPTION_GE(max_num_line_search_step_size_iterations,
-            (options.minimizer_type == ceres::TRUST_REGION ? 0 : 1));
-  OPTION_GT(line_search_sufficient_function_decrease, 0.0);
-  OPTION_LT_OPTION(line_search_sufficient_function_decrease,
-                   line_search_sufficient_curvature_decrease);
-  OPTION_LT(line_search_sufficient_curvature_decrease, 1.0);
-  OPTION_GT(max_line_search_step_expansion, 1.0);
-
-  if ((options.line_search_direction_type == ceres::BFGS ||
-       options.line_search_direction_type == ceres::LBFGS) &&
-      options.line_search_type != ceres::WOLFE) {
-    *error =
-        std::string(
-            "Invalid configuration: Solver::Options::line_search_type = ") +
-        std::string(LineSearchTypeToString(options.line_search_type)) +
-        std::string(
-            ". When using (L)BFGS, "
-            "Solver::Options::line_search_type must be set to WOLFE.");
-    return false;
-  }
-
-  // Warn user if they have requested BISECTION interpolation, but constraints
-  // on max/min step size change during line search prevent bisection scaling
-  // from occurring. Warn only, as this is likely a user mistake, but one
-  // which does not prevent us from continuing.
-  if (options.line_search_interpolation_type == ceres::BISECTION &&
-      (options.max_line_search_step_contraction > 0.5 ||
-       options.min_line_search_step_contraction < 0.5)) {
-    LOG(WARNING)
-        << "Line search interpolation type is BISECTION, but specified "
-        << "max_line_search_step_contraction: "
-        << options.max_line_search_step_contraction << ", and "
-        << "min_line_search_step_contraction: "
-        << options.min_line_search_step_contraction
-        << ", prevent bisection (0.5) scaling, continuing with solve "
-           "regardless.";
-  }
-  return true;
-}
-
-#undef OPTION_OP
-#undef OPTION_OP_OPTION
-#undef OPTION_GT
-#undef OPTION_GE
-#undef OPTION_LE
-#undef OPTION_LT
-#undef OPTION_LE_OPTION
-#undef OPTION_LT_OPTION
-
-void StringifyOrdering(const std::vector<int>& ordering, std::string* report) {
-  if (ordering.empty()) {
-    internal::StringAppendF(report, "AUTOMATIC");
-    return;
-  }
-
-  for (int i = 0; i < ordering.size() - 1; ++i) {
-    internal::StringAppendF(report, "%d,", ordering[i]);
-  }
-  internal::StringAppendF(report, "%d", ordering.back());
-}
-
-void SummarizeGivenProgram(const internal::Program& program,
-                           Solver::Summary* summary) {
-  // clang-format off
-  summary->num_parameter_blocks     = program.NumParameterBlocks();
-  summary->num_parameters           = program.NumParameters();
-  summary->num_effective_parameters = program.NumEffectiveParameters();
-  summary->num_residual_blocks      = program.NumResidualBlocks();
-  summary->num_residuals            = program.NumResiduals();
-  // clang-format on
-}
-
-void SummarizeReducedProgram(const internal::Program& program,
-                             Solver::Summary* summary) {
-  // clang-format off
-  summary->num_parameter_blocks_reduced     = program.NumParameterBlocks();
-  summary->num_parameters_reduced           = program.NumParameters();
-  summary->num_effective_parameters_reduced = program.NumEffectiveParameters();
-  summary->num_residual_blocks_reduced      = program.NumResidualBlocks();
-  summary->num_residuals_reduced            = program.NumResiduals();
-  // clang-format on
-}
-
-void PreSolveSummarize(const Solver::Options& options,
-                       const internal::ProblemImpl* problem,
-                       Solver::Summary* summary) {
-  SummarizeGivenProgram(problem->program(), summary);
-  internal::OrderingToGroupSizes(options.linear_solver_ordering.get(),
-                                 &(summary->linear_solver_ordering_given));
-  internal::OrderingToGroupSizes(options.inner_iteration_ordering.get(),
-                                 &(summary->inner_iteration_ordering_given));
-
-  // clang-format off
-  summary->dense_linear_algebra_library_type  = options.dense_linear_algebra_library_type;
-  summary->dogleg_type                        = options.dogleg_type;
-  summary->inner_iteration_time_in_seconds    = 0.0;
-  summary->num_line_search_steps              = 0;
-  summary->line_search_cost_evaluation_time_in_seconds = 0.0;
-  summary->line_search_gradient_evaluation_time_in_seconds = 0.0;
-  summary->line_search_polynomial_minimization_time_in_seconds = 0.0;
-  summary->line_search_total_time_in_seconds  = 0.0;
-  summary->inner_iterations_given             = options.use_inner_iterations;
-  summary->line_search_direction_type         = options.line_search_direction_type;
-  summary->line_search_interpolation_type     = options.line_search_interpolation_type;
-  summary->line_search_type                   = options.line_search_type;
-  summary->linear_solver_type_given           = options.linear_solver_type;
-  summary->max_lbfgs_rank                     = options.max_lbfgs_rank;
-  summary->minimizer_type                     = options.minimizer_type;
-  summary->nonlinear_conjugate_gradient_type  = options.nonlinear_conjugate_gradient_type;
-  summary->num_threads_given                  = options.num_threads;
-  summary->preconditioner_type_given          = options.preconditioner_type;
-  summary->sparse_linear_algebra_library_type = options.sparse_linear_algebra_library_type;
-  summary->linear_solver_ordering_type        = options.linear_solver_ordering_type;
-  summary->trust_region_strategy_type         = options.trust_region_strategy_type;
-  summary->visibility_clustering_type         = options.visibility_clustering_type;
-  // clang-format on
-}
-
-void PostSolveSummarize(const internal::PreprocessedProblem& pp,
-                        Solver::Summary* summary) {
-  internal::OrderingToGroupSizes(pp.options.linear_solver_ordering.get(),
-                                 &(summary->linear_solver_ordering_used));
-  // TODO(sameeragarwal): Update the preprocessor to collapse the
-  // second and higher groups into one group when nested dissection is
-  // used.
-  internal::OrderingToGroupSizes(pp.options.inner_iteration_ordering.get(),
-                                 &(summary->inner_iteration_ordering_used));
-
-  // clang-format off
-  summary->inner_iterations_used          = pp.inner_iteration_minimizer != nullptr;
-  summary->linear_solver_type_used        = pp.linear_solver_options.type;
-  summary->mixed_precision_solves_used    = pp.options.use_mixed_precision_solves;
-  summary->num_threads_used               = pp.options.num_threads;
-  summary->preconditioner_type_used       = pp.options.preconditioner_type;
-  // clang-format on
-
-  internal::SetSummaryFinalCost(summary);
-
-  if (pp.reduced_program != nullptr) {
-    SummarizeReducedProgram(*pp.reduced_program, summary);
-  }
-
-  using internal::CallStatistics;
-
-  // It is possible that no evaluator was created. This would be the
-  // case if the preprocessor failed, or if the reduced problem did
-  // not contain any parameter blocks. Thus, only extract the
-  // evaluator statistics if one exists.
-  if (pp.evaluator != nullptr) {
-    const std::map<std::string, CallStatistics>& evaluator_statistics =
-        pp.evaluator->Statistics();
-    {
-      const CallStatistics& call_stats = FindWithDefault(
-          evaluator_statistics, "Evaluator::Residual", CallStatistics());
-
-      summary->residual_evaluation_time_in_seconds = call_stats.time;
-      summary->num_residual_evaluations = call_stats.calls;
-    }
-    {
-      const CallStatistics& call_stats = FindWithDefault(
-          evaluator_statistics, "Evaluator::Jacobian", CallStatistics());
-
-      summary->jacobian_evaluation_time_in_seconds = call_stats.time;
-      summary->num_jacobian_evaluations = call_stats.calls;
-    }
-  }
-
-  // Again, like the evaluator, there may or may not be a linear
-  // solver from which we can extract run time statistics. In
-  // particular the line search solver does not use a linear solver.
-  if (pp.linear_solver != nullptr) {
-    const std::map<std::string, CallStatistics>& linear_solver_statistics =
-        pp.linear_solver->Statistics();
-    const CallStatistics& call_stats = FindWithDefault(
-        linear_solver_statistics, "LinearSolver::Solve", CallStatistics());
-    summary->num_linear_solves = call_stats.calls;
-    summary->linear_solver_time_in_seconds = call_stats.time;
-  }
-}
-
-void Minimize(internal::PreprocessedProblem* pp, Solver::Summary* summary) {
-  using internal::Minimizer;
-  using internal::Program;
-
-  Program* program = pp->reduced_program.get();
-  if (pp->reduced_program->NumParameterBlocks() == 0) {
-    summary->message =
-        "Function tolerance reached. "
-        "No non-constant parameter blocks found.";
-    summary->termination_type = CONVERGENCE;
-    if (pp->options.logging_type != SILENT) {
-      VLOG(1) << summary->message;
-    }
-    summary->initial_cost = summary->fixed_cost;
-    summary->final_cost = summary->fixed_cost;
-    return;
-  }
-
-  const Vector original_reduced_parameters = pp->reduced_parameters;
-  auto minimizer = Minimizer::Create(pp->options.minimizer_type);
-  minimizer->Minimize(
-      pp->minimizer_options, pp->reduced_parameters.data(), summary);
-
-  program->StateVectorToParameterBlocks(
-      summary->IsSolutionUsable() ? pp->reduced_parameters.data()
-                                  : original_reduced_parameters.data());
-  program->CopyParameterBlockStateToUserState();
-}
-
-std::string SchurStructureToString(const int row_block_size,
-                                   const int e_block_size,
-                                   const int f_block_size) {
-  const std::string row = (row_block_size == Eigen::Dynamic)
-                              ? "d"
-                              : internal::StringPrintf("%d", row_block_size);
-
-  const std::string e = (e_block_size == Eigen::Dynamic)
-                            ? "d"
-                            : internal::StringPrintf("%d", e_block_size);
-
-  const std::string f = (f_block_size == Eigen::Dynamic)
-                            ? "d"
-                            : internal::StringPrintf("%d", f_block_size);
-
-  return internal::StringPrintf("%s,%s,%s", row.c_str(), e.c_str(), f.c_str());
-}
-
-#ifndef CERES_NO_CUDA
-bool IsCudaRequired(const Solver::Options& options) {
-  if (options.linear_solver_type == DENSE_NORMAL_CHOLESKY ||
-      options.linear_solver_type == DENSE_SCHUR ||
-      options.linear_solver_type == DENSE_QR) {
-    return (options.dense_linear_algebra_library_type == CUDA);
-  }
-  if (options.linear_solver_type == CGNR) {
-    return (options.sparse_linear_algebra_library_type == CUDA_SPARSE);
-  }
-  return false;
-}
-#endif
-
-}  // namespace
-
-bool Solver::Options::IsValid(std::string* error) const {
-  if (!CommonOptionsAreValid(*this, error)) {
-    return false;
-  }
-
-  if (minimizer_type == TRUST_REGION &&
-      !TrustRegionOptionsAreValid(*this, error)) {
-    return false;
-  }
-
-  // We do not know if the problem is bounds constrained or not, if it
-  // is then the trust region solver will also use the line search
-  // solver to do a projection onto the box constraints, so make sure
-  // that the line search options are checked independent of what
-  // minimizer algorithm is being used.
-  return LineSearchOptionsAreValid(*this, error);
-}
-
-Solver::~Solver() = default;
-
-void Solver::Solve(const Solver::Options& options,
-                   Problem* problem,
-                   Solver::Summary* summary) {
-  using internal::PreprocessedProblem;
-  using internal::Preprocessor;
-  using internal::ProblemImpl;
-  using internal::Program;
-  using internal::WallTimeInSeconds;
-
-  CHECK(problem != nullptr);
-  CHECK(summary != nullptr);
-
-  double start_time = WallTimeInSeconds();
-  *summary = Summary();
-  if (!options.IsValid(&summary->message)) {
-    LOG(ERROR) << "Terminating: " << summary->message;
-    return;
-  }
-
-  ProblemImpl* problem_impl = problem->mutable_impl();
-  Program* program = problem_impl->mutable_program();
-  PreSolveSummarize(options, problem_impl, summary);
-
-#ifndef CERES_NO_CUDA
-  if (IsCudaRequired(options)) {
-    if (!problem_impl->context()->InitCuda(&summary->message)) {
-      LOG(ERROR) << "Terminating: " << summary->message;
-      return;
-    }
-  }
-#endif  // CERES_NO_CUDA
-
-  // If gradient_checking is enabled, wrap all cost functions in a
-  // gradient checker and install a callback that terminates if any gradient
-  // error is detected.
-  std::unique_ptr<internal::ProblemImpl> gradient_checking_problem;
-  internal::GradientCheckingIterationCallback gradient_checking_callback;
-  Solver::Options modified_options = options;
-  if (options.check_gradients) {
-    modified_options.callbacks.push_back(&gradient_checking_callback);
-    gradient_checking_problem = CreateGradientCheckingProblemImpl(
-        problem_impl,
-        options.gradient_check_numeric_derivative_relative_step_size,
-        options.gradient_check_relative_precision,
-        &gradient_checking_callback);
-    problem_impl = gradient_checking_problem.get();
-    program = problem_impl->mutable_program();
-  }
-
-  // Make sure that all the parameter blocks states are set to the
-  // values provided by the user.
-  program->SetParameterBlockStatePtrsToUserStatePtrs();
-
-  // The main thread also does work so we only need to launch num_threads - 1.
-  problem_impl->context()->EnsureMinimumThreads(options.num_threads - 1);
-
-  auto preprocessor = Preprocessor::Create(modified_options.minimizer_type);
-  PreprocessedProblem pp;
-
-  const bool status =
-      preprocessor->Preprocess(modified_options, problem_impl, &pp);
-
-  // We check the linear_solver_options.type rather than
-  // modified_options.linear_solver_type because, depending on the
-  // lack of a Schur structure, the preprocessor may change the linear
-  // solver type.
-  if (status && IsSchurType(pp.linear_solver_options.type)) {
-    // TODO(sameeragarwal): We can likely eliminate the duplicate call
-    // to DetectStructure here and inside the linear solver, by
-    // calling this in the preprocessor.
-    int row_block_size;
-    int e_block_size;
-    int f_block_size;
-    DetectStructure(*static_cast<internal::BlockSparseMatrix*>(
-                         pp.minimizer_options.jacobian.get())
-                         ->block_structure(),
-                    pp.linear_solver_options.elimination_groups[0],
-                    &row_block_size,
-                    &e_block_size,
-                    &f_block_size);
-    summary->schur_structure_given =
-        SchurStructureToString(row_block_size, e_block_size, f_block_size);
-    internal::GetBestSchurTemplateSpecialization(
-        &row_block_size, &e_block_size, &f_block_size);
-    summary->schur_structure_used =
-        SchurStructureToString(row_block_size, e_block_size, f_block_size);
-  }
-
-  summary->fixed_cost = pp.fixed_cost;
-  summary->preprocessor_time_in_seconds = WallTimeInSeconds() - start_time;
-
-  if (status) {
-    const double minimizer_start_time = WallTimeInSeconds();
-    Minimize(&pp, summary);
-    summary->minimizer_time_in_seconds =
-        WallTimeInSeconds() - minimizer_start_time;
-  } else {
-    summary->message = pp.error;
-  }
-
-  const double postprocessor_start_time = WallTimeInSeconds();
-  problem_impl = problem->mutable_impl();
-  program = problem_impl->mutable_program();
-  // On exit, ensure that the parameter blocks again point at the user
-  // provided values and the parameter blocks are numbered according
-  // to their position in the original user provided program.
-  program->SetParameterBlockStatePtrsToUserStatePtrs();
-  program->SetParameterOffsetsAndIndex();
-  PostSolveSummarize(pp, summary);
-  summary->postprocessor_time_in_seconds =
-      WallTimeInSeconds() - postprocessor_start_time;
-
-  // If the gradient checker reported an error, we want to report FAILURE
-  // instead of USER_FAILURE and provide the error log.
-  if (gradient_checking_callback.gradient_error_detected()) {
-    summary->termination_type = FAILURE;
-    summary->message = gradient_checking_callback.error_log();
-  }
-
-  summary->total_time_in_seconds = WallTimeInSeconds() - start_time;
-}
-
-void Solve(const Solver::Options& options,
-           Problem* problem,
-           Solver::Summary* summary) {
-  Solver solver;
-  solver.Solve(options, problem, summary);
-}
-
-std::string Solver::Summary::BriefReport() const {
-  return StringPrintf(
-      "Ceres Solver Report: "
-      "Iterations: %d, "
-      "Initial cost: %e, "
-      "Final cost: %e, "
-      "Termination: %s",
-      num_successful_steps + num_unsuccessful_steps,
-      initial_cost,
-      final_cost,
-      TerminationTypeToString(termination_type));
-}
-
-std::string Solver::Summary::FullReport() const {
-  using internal::VersionString;
-
-  // NOTE operator+ is not usable for concatenating a string and a string_view.
-  std::string report =
-      std::string{"\nSolver Summary (v "}.append(VersionString()) + ")\n\n";
-
-  StringAppendF(&report, "%45s    %21s\n", "Original", "Reduced");
-  StringAppendF(&report,
-                "Parameter blocks    % 25d% 25d\n",
-                num_parameter_blocks,
-                num_parameter_blocks_reduced);
-  StringAppendF(&report,
-                "Parameters          % 25d% 25d\n",
-                num_parameters,
-                num_parameters_reduced);
-  if (num_effective_parameters_reduced != num_parameters_reduced) {
-    StringAppendF(&report,
-                  "Effective parameters% 25d% 25d\n",
-                  num_effective_parameters,
-                  num_effective_parameters_reduced);
-  }
-  StringAppendF(&report,
-                "Residual blocks     % 25d% 25d\n",
-                num_residual_blocks,
-                num_residual_blocks_reduced);
-  StringAppendF(&report,
-                "Residuals           % 25d% 25d\n",
-                num_residuals,
-                num_residuals_reduced);
-
-  if (minimizer_type == TRUST_REGION) {
-    // TRUST_SEARCH HEADER
-    StringAppendF(
-        &report, "\nMinimizer                 %19s\n", "TRUST_REGION");
-
-    if (linear_solver_type_used == DENSE_NORMAL_CHOLESKY ||
-        linear_solver_type_used == DENSE_SCHUR ||
-        linear_solver_type_used == DENSE_QR) {
-      const char* mixed_precision_suffix =
-          (mixed_precision_solves_used ? "(Mixed Precision)" : "");
-      StringAppendF(&report,
-                    "\nDense linear algebra library  %15s %s\n",
-                    DenseLinearAlgebraLibraryTypeToString(
-                        dense_linear_algebra_library_type),
-                    mixed_precision_suffix);
-    }
-
-    StringAppendF(&report,
-                  "Trust region strategy     %19s",
-                  TrustRegionStrategyTypeToString(trust_region_strategy_type));
-    if (trust_region_strategy_type == DOGLEG) {
-      if (dogleg_type == TRADITIONAL_DOGLEG) {
-        StringAppendF(&report, " (TRADITIONAL)");
-      } else {
-        StringAppendF(&report, " (SUBSPACE)");
-      }
-    }
-
-    const bool used_sparse_linear_algebra_library =
-        linear_solver_type_used == SPARSE_NORMAL_CHOLESKY ||
-        linear_solver_type_used == SPARSE_SCHUR ||
-        linear_solver_type_used == CGNR ||
-        (linear_solver_type_used == ITERATIVE_SCHUR &&
-         (preconditioner_type_used == CLUSTER_JACOBI ||
-          preconditioner_type_used == CLUSTER_TRIDIAGONAL));
-
-    const bool linear_solver_ordering_required =
-        linear_solver_type_used == SPARSE_SCHUR ||
-        (linear_solver_type_used == ITERATIVE_SCHUR &&
-         (preconditioner_type_used == CLUSTER_JACOBI ||
-          preconditioner_type_used == CLUSTER_TRIDIAGONAL)) ||
-        (linear_solver_type_used == CGNR && preconditioner_type_used == SUBSET);
-
-    if (used_sparse_linear_algebra_library) {
-      const char* mixed_precision_suffix =
-          (mixed_precision_solves_used ? "(Mixed Precision)" : "");
-      if (linear_solver_ordering_required) {
-        StringAppendF(
-            &report,
-            "\nSparse linear algebra library %15s + %s %s\n",
-            SparseLinearAlgebraLibraryTypeToString(
-                sparse_linear_algebra_library_type),
-            LinearSolverOrderingTypeToString(linear_solver_ordering_type),
-            mixed_precision_suffix);
-      } else {
-        StringAppendF(&report,
-                      "\nSparse linear algebra library %15s %s\n",
-                      SparseLinearAlgebraLibraryTypeToString(
-                          sparse_linear_algebra_library_type),
-                      mixed_precision_suffix);
-      }
-    }
-
-    StringAppendF(&report, "\n");
-    StringAppendF(&report, "%45s    %21s\n", "Given", "Used");
-    StringAppendF(&report,
-                  "Linear solver       %25s%25s\n",
-                  LinearSolverTypeToString(linear_solver_type_given),
-                  LinearSolverTypeToString(linear_solver_type_used));
-
-    if (IsIterativeSolver(linear_solver_type_given)) {
-      StringAppendF(&report,
-                    "Preconditioner      %25s%25s\n",
-                    PreconditionerTypeToString(preconditioner_type_given),
-                    PreconditionerTypeToString(preconditioner_type_used));
-    }
-
-    if (preconditioner_type_used == CLUSTER_JACOBI ||
-        preconditioner_type_used == CLUSTER_TRIDIAGONAL) {
-      StringAppendF(
-          &report,
-          "Visibility clustering%24s%25s\n",
-          VisibilityClusteringTypeToString(visibility_clustering_type),
-          VisibilityClusteringTypeToString(visibility_clustering_type));
-    }
-    StringAppendF(&report,
-                  "Threads             % 25d% 25d\n",
-                  num_threads_given,
-                  num_threads_used);
-
-    std::string given;
-    StringifyOrdering(linear_solver_ordering_given, &given);
-    std::string used;
-    StringifyOrdering(linear_solver_ordering_used, &used);
-    StringAppendF(&report,
-                  "Linear solver ordering %22s %24s\n",
-                  given.c_str(),
-                  used.c_str());
-    if (IsSchurType(linear_solver_type_used)) {
-      StringAppendF(&report,
-                    "Schur structure        %22s %24s\n",
-                    schur_structure_given.c_str(),
-                    schur_structure_used.c_str());
-    }
-
-    if (inner_iterations_given) {
-      StringAppendF(&report,
-                    "Use inner iterations     %20s     %20s\n",
-                    inner_iterations_given ? "True" : "False",
-                    inner_iterations_used ? "True" : "False");
-    }
-
-    if (inner_iterations_used) {
-      std::string given;
-      StringifyOrdering(inner_iteration_ordering_given, &given);
-      std::string used;
-      StringifyOrdering(inner_iteration_ordering_used, &used);
-      StringAppendF(&report,
-                    "Inner iteration ordering %20s %24s\n",
-                    given.c_str(),
-                    used.c_str());
-    }
-  } else {
-    // LINE_SEARCH HEADER
-    StringAppendF(&report, "\nMinimizer                 %19s\n", "LINE_SEARCH");
-
-    std::string line_search_direction_string;
-    if (line_search_direction_type == LBFGS) {
-      line_search_direction_string = StringPrintf("LBFGS (%d)", max_lbfgs_rank);
-    } else if (line_search_direction_type == NONLINEAR_CONJUGATE_GRADIENT) {
-      line_search_direction_string = NonlinearConjugateGradientTypeToString(
-          nonlinear_conjugate_gradient_type);
-    } else {
-      line_search_direction_string =
-          LineSearchDirectionTypeToString(line_search_direction_type);
-    }
-
-    StringAppendF(&report,
-                  "Line search direction     %19s\n",
-                  line_search_direction_string.c_str());
-
-    const std::string line_search_type_string = StringPrintf(
-        "%s %s",
-        LineSearchInterpolationTypeToString(line_search_interpolation_type),
-        LineSearchTypeToString(line_search_type));
-    StringAppendF(&report,
-                  "Line search type          %19s\n",
-                  line_search_type_string.c_str());
-    StringAppendF(&report, "\n");
-
-    StringAppendF(&report, "%45s    %21s\n", "Given", "Used");
-    StringAppendF(&report,
-                  "Threads             % 25d% 25d\n",
-                  num_threads_given,
-                  num_threads_used);
-  }
-
-  StringAppendF(&report, "\nCost:\n");
-  StringAppendF(&report, "Initial        % 30e\n", initial_cost);
-  if (termination_type != FAILURE && termination_type != USER_FAILURE) {
-    StringAppendF(&report, "Final          % 30e\n", final_cost);
-    StringAppendF(&report, "Change         % 30e\n", initial_cost - final_cost);
-  }
-
-  StringAppendF(&report,
-                "\nMinimizer iterations         % 16d\n",
-                num_successful_steps + num_unsuccessful_steps);
-
-  // Successful/Unsuccessful steps only matter in the case of the
-  // trust region solver. Line search terminates when it encounters
-  // the first unsuccessful step.
-  if (minimizer_type == TRUST_REGION) {
-    StringAppendF(&report,
-                  "Successful steps               % 14d\n",
-                  num_successful_steps);
-    StringAppendF(&report,
-                  "Unsuccessful steps             % 14d\n",
-                  num_unsuccessful_steps);
-  }
-  if (inner_iterations_used) {
-    StringAppendF(&report,
-                  "Steps with inner iterations    % 14d\n",
-                  num_inner_iteration_steps);
-  }
-
-  const bool line_search_used =
-      (minimizer_type == LINE_SEARCH ||
-       (minimizer_type == TRUST_REGION && is_constrained));
-
-  if (line_search_used) {
-    StringAppendF(&report,
-                  "Line search steps              % 14d\n",
-                  num_line_search_steps);
-  }
-
-  StringAppendF(&report, "\nTime (in seconds):\n");
-  StringAppendF(
-      &report, "Preprocessor        %25.6f\n", preprocessor_time_in_seconds);
-
-  StringAppendF(&report,
-                "\n  Residual only evaluation %18.6f (%d)\n",
-                residual_evaluation_time_in_seconds,
-                num_residual_evaluations);
-  if (line_search_used) {
-    StringAppendF(&report,
-                  "    Line search cost evaluation    %10.6f\n",
-                  line_search_cost_evaluation_time_in_seconds);
-  }
-  StringAppendF(&report,
-                "  Jacobian & residual evaluation %12.6f (%d)\n",
-                jacobian_evaluation_time_in_seconds,
-                num_jacobian_evaluations);
-  if (line_search_used) {
-    StringAppendF(&report,
-                  "    Line search gradient evaluation   %6.6f\n",
-                  line_search_gradient_evaluation_time_in_seconds);
-  }
-
-  if (minimizer_type == TRUST_REGION) {
-    StringAppendF(&report,
-                  "  Linear solver       %23.6f (%d)\n",
-                  linear_solver_time_in_seconds,
-                  num_linear_solves);
-  }
-
-  if (inner_iterations_used) {
-    StringAppendF(&report,
-                  "  Inner iterations    %23.6f\n",
-                  inner_iteration_time_in_seconds);
-  }
-
-  if (line_search_used) {
-    StringAppendF(&report,
-                  "  Line search polynomial minimization  %.6f\n",
-                  line_search_polynomial_minimization_time_in_seconds);
-  }
-
-  StringAppendF(
-      &report, "Minimizer           %25.6f\n\n", minimizer_time_in_seconds);
-
-  StringAppendF(
-      &report, "Postprocessor        %24.6f\n", postprocessor_time_in_seconds);
-
-  StringAppendF(
-      &report, "Total               %25.6f\n\n", total_time_in_seconds);
-
-  StringAppendF(&report,
-                "Termination:        %25s (%s)\n",
-                TerminationTypeToString(termination_type),
-                message.c_str());
-  return report;
-}
-
-bool Solver::Summary::IsSolutionUsable() const {
-  return internal::IsSolutionUsable(*this);
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/solver_test.cc b/third_party/ceres/internal/ceres/solver_test.cc
deleted file mode 100644
index 52bd594..0000000
--- a/third_party/ceres/internal/ceres/solver_test.cc
+++ /dev/null
@@ -1,1229 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/solver.h"
-
-#include <cmath>
-#include <limits>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/evaluation_callback.h"
-#include "ceres/manifold.h"
-#include "ceres/problem.h"
-#include "ceres/problem_impl.h"
-#include "ceres/sized_cost_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(SolverOptions, DefaultTrustRegionOptionsAreValid) {
-  Solver::Options options;
-  options.minimizer_type = TRUST_REGION;
-  std::string error;
-  EXPECT_TRUE(options.IsValid(&error)) << error;
-}
-
-TEST(SolverOptions, DefaultLineSearchOptionsAreValid) {
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  std::string error;
-  EXPECT_TRUE(options.IsValid(&error)) << error;
-}
-
-struct QuadraticCostFunctor {
-  template <typename T>
-  bool operator()(const T* const x, T* residual) const {
-    residual[0] = T(5.0) - *x;
-    return true;
-  }
-
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<QuadraticCostFunctor, 1, 1>(
-        new QuadraticCostFunctor);
-  }
-};
-
-struct RememberingCallback : public IterationCallback {
-  explicit RememberingCallback(double* x) : calls(0), x(x) {}
-  CallbackReturnType operator()(const IterationSummary& summary) final {
-    x_values.push_back(*x);
-    return SOLVER_CONTINUE;
-  }
-  int calls;
-  double* x;
-  std::vector<double> x_values;
-};
-
-struct NoOpEvaluationCallback : EvaluationCallback {
-  void PrepareForEvaluation(bool evaluate_jacobians,
-                            bool new_evaluation_point) final {
-    (void)evaluate_jacobians;
-    (void)new_evaluation_point;
-  }
-};
-
-TEST(Solver, UpdateStateEveryIterationOptionNoEvaluationCallback) {
-  double x = 50.0;
-  const double original_x = x;
-
-  Problem::Options problem_options;
-  Problem problem(problem_options);
-  problem.AddResidualBlock(QuadraticCostFunctor::Create(), nullptr, &x);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_QR;
-
-  RememberingCallback callback(&x);
-  options.callbacks.push_back(&callback);
-
-  Solver::Summary summary;
-
-  int num_iterations;
-
-  // First: update_state_every_iteration=false, evaluation_callback=nullptr.
-  Solve(options, &problem, &summary);
-  num_iterations =
-      summary.num_successful_steps + summary.num_unsuccessful_steps;
-  EXPECT_GT(num_iterations, 1);
-  for (double value : callback.x_values) {
-    EXPECT_EQ(50.0, value);
-  }
-
-  // Second: update_state_every_iteration=true, evaluation_callback=nullptr.
-  x = 50.0;
-  options.update_state_every_iteration = true;
-  callback.x_values.clear();
-  Solve(options, &problem, &summary);
-  num_iterations =
-      summary.num_successful_steps + summary.num_unsuccessful_steps;
-  EXPECT_GT(num_iterations, 1);
-  EXPECT_EQ(original_x, callback.x_values[0]);
-  EXPECT_NE(original_x, callback.x_values[1]);
-}
-
-TEST(Solver, UpdateStateEveryIterationOptionWithEvaluationCallback) {
-  double x = 50.0;
-  const double original_x = x;
-
-  Problem::Options problem_options;
-  NoOpEvaluationCallback evaluation_callback;
-  problem_options.evaluation_callback = &evaluation_callback;
-
-  Problem problem(problem_options);
-  problem.AddResidualBlock(QuadraticCostFunctor::Create(), nullptr, &x);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_QR;
-  RememberingCallback callback(&x);
-  options.callbacks.push_back(&callback);
-
-  Solver::Summary summary;
-
-  int num_iterations;
-
-  // First: update_state_every_iteration=true, evaluation_callback=!nullptr.
-  x = 50.0;
-  options.update_state_every_iteration = true;
-  callback.x_values.clear();
-  Solve(options, &problem, &summary);
-  num_iterations =
-      summary.num_successful_steps + summary.num_unsuccessful_steps;
-  EXPECT_GT(num_iterations, 1);
-  EXPECT_EQ(original_x, callback.x_values[0]);
-  EXPECT_NE(original_x, callback.x_values[1]);
-
-  // Second: update_state_every_iteration=false, evaluation_callback=!nullptr.
-  x = 50.0;
-  options.update_state_every_iteration = false;
-  callback.x_values.clear();
-  Solve(options, &problem, &summary);
-  num_iterations =
-      summary.num_successful_steps + summary.num_unsuccessful_steps;
-  EXPECT_GT(num_iterations, 1);
-  EXPECT_EQ(original_x, callback.x_values[0]);
-  EXPECT_NE(original_x, callback.x_values[1]);
-}
-
-TEST(Solver, CantMixEvaluationCallbackWithInnerIterations) {
-  double x = 50.0;
-  double y = 60.0;
-
-  Problem::Options problem_options;
-  NoOpEvaluationCallback evaluation_callback;
-  problem_options.evaluation_callback = &evaluation_callback;
-
-  Problem problem(problem_options);
-  problem.AddResidualBlock(QuadraticCostFunctor::Create(), nullptr, &x);
-  problem.AddResidualBlock(QuadraticCostFunctor::Create(), nullptr, &y);
-
-  Solver::Options options;
-  options.use_inner_iterations = true;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, FAILURE);
-
-  options.use_inner_iterations = false;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-}
-
-// The parameters must be in separate blocks so that they can be individually
-// set constant or not.
-struct Quadratic4DCostFunction {
-  template <typename T>
-  bool operator()(const T* const x,
-                  const T* const y,
-                  const T* const z,
-                  const T* const w,
-                  T* residual) const {
-    // A 4-dimension axis-aligned quadratic.
-    residual[0] = T(10.0) - *x + T(20.0) - *y + T(30.0) - *z + T(40.0) - *w;
-    return true;
-  }
-
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<Quadratic4DCostFunction, 1, 1, 1, 1, 1>(
-        new Quadratic4DCostFunction);
-  }
-};
-
-// A cost function that simply returns its argument.
-class UnaryIdentityCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    residuals[0] = parameters[0][0];
-    if (jacobians != nullptr && jacobians[0] != nullptr) {
-      jacobians[0][0] = 1.0;
-    }
-    return true;
-  }
-};
-
-TEST(Solver, TrustRegionProblemHasNoParameterBlocks) {
-  Problem problem;
-  Solver::Options options;
-  options.minimizer_type = TRUST_REGION;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_EQ(summary.message,
-            "Function tolerance reached. "
-            "No non-constant parameter blocks found.");
-}
-
-TEST(Solver, LineSearchProblemHasNoParameterBlocks) {
-  Problem problem;
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_EQ(summary.message,
-            "Function tolerance reached. "
-            "No non-constant parameter blocks found.");
-}
-
-TEST(Solver, TrustRegionProblemHasZeroResiduals) {
-  Problem problem;
-  double x = 1;
-  problem.AddParameterBlock(&x, 1);
-  Solver::Options options;
-  options.minimizer_type = TRUST_REGION;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_EQ(summary.message,
-            "Function tolerance reached. "
-            "No non-constant parameter blocks found.");
-}
-
-TEST(Solver, LineSearchProblemHasZeroResiduals) {
-  Problem problem;
-  double x = 1;
-  problem.AddParameterBlock(&x, 1);
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_EQ(summary.message,
-            "Function tolerance reached. "
-            "No non-constant parameter blocks found.");
-}
-
-TEST(Solver, TrustRegionProblemIsConstant) {
-  Problem problem;
-  double x = 1;
-  problem.AddResidualBlock(new UnaryIdentityCostFunction, nullptr, &x);
-  problem.SetParameterBlockConstant(&x);
-  Solver::Options options;
-  options.minimizer_type = TRUST_REGION;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_EQ(summary.initial_cost, 1.0 / 2.0);
-  EXPECT_EQ(summary.final_cost, 1.0 / 2.0);
-}
-
-TEST(Solver, LineSearchProblemIsConstant) {
-  Problem problem;
-  double x = 1;
-  problem.AddResidualBlock(new UnaryIdentityCostFunction, nullptr, &x);
-  problem.SetParameterBlockConstant(&x);
-  Solver::Options options;
-  options.minimizer_type = LINE_SEARCH;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_EQ(summary.initial_cost, 1.0 / 2.0);
-  EXPECT_EQ(summary.final_cost, 1.0 / 2.0);
-}
-
-template <int kNumResiduals, int... Ns>
-class DummyCostFunction : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    for (int i = 0; i < kNumResiduals; ++i) {
-      residuals[i] = kNumResiduals * kNumResiduals + i;
-    }
-
-    return true;
-  }
-};
-
-TEST(Solver, FixedCostForConstantProblem) {
-  double x = 1.0;
-  Problem problem;
-  problem.AddResidualBlock(new DummyCostFunction<2, 1>(), nullptr, &x);
-  problem.SetParameterBlockConstant(&x);
-  const double expected_cost = 41.0 / 2.0;  // 1/2 * ((4 + 0)^2 + (4 + 1)^2)
-  Solver::Options options;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_TRUE(summary.IsSolutionUsable());
-  EXPECT_EQ(summary.fixed_cost, expected_cost);
-  EXPECT_EQ(summary.initial_cost, expected_cost);
-  EXPECT_EQ(summary.final_cost, expected_cost);
-  EXPECT_EQ(summary.iterations.size(), 0);
-}
-
-struct LinearCostFunction {
-  template <typename T>
-  bool operator()(const T* x, const T* y, T* residual) const {
-    residual[0] = T(10.0) - *x;
-    residual[1] = T(5.0) - *y;
-    return true;
-  }
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<LinearCostFunction, 2, 1, 1>(
-        new LinearCostFunction);
-  }
-};
-
-TEST(Solver, ZeroSizedManifoldHoldsParameterBlockConstant) {
-  double x = 0.0;
-  double y = 1.0;
-  Problem problem;
-  problem.AddResidualBlock(LinearCostFunction::Create(), nullptr, &x, &y);
-  problem.SetManifold(&y, new SubsetManifold(1, {0}));
-  EXPECT_TRUE(problem.IsParameterBlockConstant(&y));
-
-  Solver::Options options;
-  options.function_tolerance = 0.0;
-  options.gradient_tolerance = 0.0;
-  options.parameter_tolerance = 0.0;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-
-  EXPECT_EQ(summary.termination_type, CONVERGENCE);
-  EXPECT_NEAR(x, 10.0, 1e-7);
-  EXPECT_EQ(y, 1.0);
-}
-
-TEST(Solver, DenseNormalCholeskyOptions) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = DENSE_NORMAL_CHOLESKY;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dense_linear_algebra_library_type = EIGEN;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.use_mixed_precision_solves = true;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  if (IsDenseLinearAlgebraLibraryTypeAvailable(LAPACK)) {
-    options.use_mixed_precision_solves = false;
-    options.dense_linear_algebra_library_type = LAPACK;
-
-    EXPECT_TRUE(options.IsValid(&message));
-    options.use_mixed_precision_solves = true;
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    options.use_mixed_precision_solves = false;
-    options.dense_linear_algebra_library_type = LAPACK;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-}
-
-TEST(Solver, DenseQrOptions) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = DENSE_QR;
-
-  options.use_mixed_precision_solves = false;
-  options.dense_linear_algebra_library_type = EIGEN;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  if (IsDenseLinearAlgebraLibraryTypeAvailable(LAPACK)) {
-    options.use_mixed_precision_solves = false;
-    options.dense_linear_algebra_library_type = LAPACK;
-    EXPECT_TRUE(options.IsValid(&message));
-    options.use_mixed_precision_solves = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  } else {
-    options.use_mixed_precision_solves = false;
-    options.dense_linear_algebra_library_type = LAPACK;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-}
-
-TEST(Solver, SparseNormalCholeskyOptionsNoSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, SparseNormalCholeskyOptionsEigenSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options.linear_solver_ordering_type = AMD;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_TRUE(options.IsValid(&message));
-  }
-
-#ifndef CERES_NO_EIGEN_METIS
-  options.linear_solver_ordering_type = NESDIS;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_TRUE(options.IsValid(&message));
-  }
-#else
-  options.linear_solver_ordering_type = NESDIS;
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  EXPECT_FALSE(options.IsValid(&message));
-#endif
-}
-
-TEST(Solver, SparseNormalCholeskyOptionsSuiteSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options.linear_solver_ordering_type = AMD;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-#ifndef CERES_NO_CHOLMOD_PARTITION
-  options.linear_solver_ordering_type = NESDIS;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-#else
-  options.linear_solver_ordering_type = NESDIS;
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  EXPECT_FALSE(options.IsValid(&message));
-#endif
-}
-
-TEST(Solver, SparseNormalCholeskyOptionsAccelerateSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options.linear_solver_ordering_type = AMD;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  options.linear_solver_ordering_type = NESDIS;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-}
-
-TEST(Solver, DenseSchurOptions) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = DENSE_SCHUR;
-  options.dense_linear_algebra_library_type = EIGEN;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.use_mixed_precision_solves = true;
-  options.dynamic_sparsity = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.use_mixed_precision_solves = true;
-  options.dynamic_sparsity = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dense_linear_algebra_library_type = LAPACK;
-  if (IsDenseLinearAlgebraLibraryTypeAvailable(
-          options.dense_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-}
-
-TEST(Solver, SparseSchurOptionsNoSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_SCHUR;
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, SparseSchurOptionsEigenSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_SCHUR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options.linear_solver_ordering_type = AMD;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-#ifndef CERES_NO_EIGEN_METIS
-  options.linear_solver_ordering_type = NESDIS;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(EIGEN_SPARSE)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-#else
-  options.linear_solver_ordering_type = NESDIS;
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  EXPECT_FALSE(options.IsValid(&message));
-#endif
-}
-
-TEST(Solver, SparseSchurOptionsSuiteSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_SCHUR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options.linear_solver_ordering_type = AMD;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-#ifndef CERES_NO_CHOLMOD_PARTITION
-  options.linear_solver_ordering_type = NESDIS;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-#else
-  options.linear_solver_ordering_type = NESDIS;
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  EXPECT_FALSE(options.IsValid(&message));
-#endif
-}
-
-TEST(Solver, SparseSchurOptionsAccelerateSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = SPARSE_SCHUR;
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options.linear_solver_ordering_type = AMD;
-
-  options.use_mixed_precision_solves = false;
-  options.dynamic_sparsity = false;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    EXPECT_TRUE(options.IsValid(&message));
-  } else {
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  options.linear_solver_ordering_type = NESDIS;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = false;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.use_mixed_precision_solves = true;
-    options.dynamic_sparsity = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-}
-
-TEST(Solver, CgnrOptionsIdentityPreconditioner) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = CGNR;
-  options.preconditioner_type = IDENTITY;
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = CUDA_SPARSE;
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(CUDA_SPARSE));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, CgnrOptionsJacobiPreconditioner) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = CGNR;
-  options.preconditioner_type = JACOBI;
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_TRUE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = CUDA_SPARSE;
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(CUDA_SPARSE));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, CgnrOptionsSubsetPreconditioner) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = CGNR;
-  options.preconditioner_type = SUBSET;
-
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.residual_blocks_for_subset_preconditioner.insert(nullptr);
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.dynamic_sparsity = false;
-    options.use_mixed_precision_solves = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.dynamic_sparsity = true;
-    options.use_mixed_precision_solves = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.dynamic_sparsity = false;
-    options.use_mixed_precision_solves = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.dynamic_sparsity = false;
-    options.use_mixed_precision_solves = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.dynamic_sparsity = true;
-    options.use_mixed_precision_solves = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.dynamic_sparsity = false;
-    options.use_mixed_precision_solves = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  if (IsSparseLinearAlgebraLibraryTypeAvailable(
-          options.sparse_linear_algebra_library_type)) {
-    options.dynamic_sparsity = false;
-    options.use_mixed_precision_solves = false;
-    EXPECT_TRUE(options.IsValid(&message));
-
-    options.dynamic_sparsity = true;
-    options.use_mixed_precision_solves = false;
-    EXPECT_FALSE(options.IsValid(&message));
-
-    options.dynamic_sparsity = false;
-    options.use_mixed_precision_solves = true;
-    EXPECT_FALSE(options.IsValid(&message));
-  }
-
-  options.sparse_linear_algebra_library_type = CUDA_SPARSE;
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = true;
-  options.use_mixed_precision_solves = false;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.dynamic_sparsity = false;
-  options.use_mixed_precision_solves = true;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, CgnrOptionsSchurPreconditioners) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = CGNR;
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, IterativeSchurOptionsNoSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = ITERATIVE_SCHUR;
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = SUBSET;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.use_explicit_schur_complement = true;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, IterativeSchurOptionsEigenSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = ITERATIVE_SCHUR;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(
-                options.sparse_linear_algebra_library_type));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(
-                options.sparse_linear_algebra_library_type));
-  options.preconditioner_type = SUBSET;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.use_explicit_schur_complement = true;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, IterativeSchurOptionsSuiteSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = ITERATIVE_SCHUR;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(
-                options.sparse_linear_algebra_library_type));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(
-                options.sparse_linear_algebra_library_type));
-  options.preconditioner_type = SUBSET;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.use_explicit_schur_complement = true;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-TEST(Solver, IterativeSchurOptionsAccelerateSparse) {
-  std::string message;
-  Solver::Options options;
-  options.linear_solver_type = ITERATIVE_SCHUR;
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(
-                options.sparse_linear_algebra_library_type));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_EQ(options.IsValid(&message),
-            IsSparseLinearAlgebraLibraryTypeAvailable(
-                options.sparse_linear_algebra_library_type));
-  options.preconditioner_type = SUBSET;
-  EXPECT_FALSE(options.IsValid(&message));
-
-  options.use_explicit_schur_complement = true;
-  options.preconditioner_type = IDENTITY;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = SCHUR_JACOBI;
-  EXPECT_TRUE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_JACOBI;
-  EXPECT_FALSE(options.IsValid(&message));
-  options.preconditioner_type = CLUSTER_TRIDIAGONAL;
-  EXPECT_FALSE(options.IsValid(&message));
-}
-
-class LargeCostCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    residuals[0] = 1e300;
-    if (jacobians && jacobians[0]) {
-      jacobians[0][0] = 1.0;
-    }
-    return true;
-  }
-};
-
-TEST(Solver, LargeCostProblem) {
-  double x = 1;
-  Problem problem;
-  problem.AddResidualBlock(new LargeCostCostFunction, nullptr, &x);
-  Solver::Options options;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  LOG(INFO) << summary.FullReport();
-  EXPECT_EQ(summary.termination_type, FAILURE);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/solver_utils.cc b/third_party/ceres/internal/ceres/solver_utils.cc
deleted file mode 100644
index f5fbf05..0000000
--- a/third_party/ceres/internal/ceres/solver_utils.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/solver_utils.h"
-
-#include "Eigen/Core"
-#include "ceres/internal/config.h"
-#include "ceres/internal/export.h"
-#include "ceres/version.h"
-#ifndef CERES_NO_CUDA
-#include "cuda_runtime.h"
-#endif  // CERES_NO_CUDA
-
-namespace ceres::internal {
-
-constexpr char kVersion[] =
-    // clang-format off
-  CERES_VERSION_STRING "-eigen-("
-  CERES_SEMVER_VERSION(EIGEN_WORLD_VERSION,
-                       EIGEN_MAJOR_VERSION,
-                       EIGEN_MINOR_VERSION) ")"
-
-#ifdef CERES_NO_LAPACK
-  "-no_lapack"
-#else
-  "-lapack"
-#endif
-
-#ifndef CERES_NO_SUITESPARSE
-  "-suitesparse-(" CERES_SUITESPARSE_VERSION ")"
-#endif
-
-#if !defined(CERES_NO_EIGEN_METIS) || !defined(CERES_NO_CHOLMOD_PARTITION)
-  "-metis-(" CERES_METIS_VERSION ")"
-#endif
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-  "-acceleratesparse"
-#endif
-
-#ifdef CERES_USE_EIGEN_SPARSE
-  "-eigensparse"
-#endif
-
-#ifdef CERES_RESTRUCT_SCHUR_SPECIALIZATIONS
-  "-no_schur_specializations"
-#endif
-
-#ifdef CERES_NO_CUSTOM_BLAS
-  "-no_custom_blas"
-#endif
-
-#ifndef CERES_NO_CUDA
-  "-cuda-(" CERES_TO_STRING(CUDART_VERSION) ")"
-#endif
-  ;
-// clang-format on
-
-std::string_view VersionString() noexcept { return kVersion; }
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/solver_utils.h b/third_party/ceres/internal/ceres/solver_utils.h
deleted file mode 100644
index ff5e280..0000000
--- a/third_party/ceres/internal/ceres/solver_utils.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_SOLVER_UTILS_H_
-#define CERES_INTERNAL_SOLVER_UTILS_H_
-
-#include <algorithm>
-#include <string_view>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/iteration_callback.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-template <typename SummaryType>
-bool IsSolutionUsable(const SummaryType& summary) {
-  return (summary.termination_type == CONVERGENCE ||
-          summary.termination_type == NO_CONVERGENCE ||
-          summary.termination_type == USER_SUCCESS);
-}
-
-template <typename SummaryType>
-void SetSummaryFinalCost(SummaryType* summary) {
-  summary->final_cost = summary->initial_cost;
-  // We need the loop here, instead of just looking at the last
-  // iteration because the minimizer maybe making non-monotonic steps.
-  for (int i = 0; i < summary->iterations.size(); ++i) {
-    const IterationSummary& iteration_summary = summary->iterations[i];
-    summary->final_cost = std::min(iteration_summary.cost, summary->final_cost);
-  }
-}
-
-CERES_NO_EXPORT
-std::string_view VersionString() noexcept;
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SOLVER_UTILS_H_
diff --git a/third_party/ceres/internal/ceres/sparse_cholesky.cc b/third_party/ceres/internal/ceres/sparse_cholesky.cc
deleted file mode 100644
index 4f1bf87..0000000
--- a/third_party/ceres/internal/ceres/sparse_cholesky.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/sparse_cholesky.h"
-
-#include <memory>
-#include <utility>
-
-#include "ceres/accelerate_sparse.h"
-#include "ceres/eigensparse.h"
-#include "ceres/float_suitesparse.h"
-#include "ceres/iterative_refiner.h"
-#include "ceres/suitesparse.h"
-
-namespace ceres::internal {
-
-std::unique_ptr<SparseCholesky> SparseCholesky::Create(
-    const LinearSolver::Options& options) {
-  std::unique_ptr<SparseCholesky> sparse_cholesky;
-
-  switch (options.sparse_linear_algebra_library_type) {
-    case SUITE_SPARSE:
-#ifndef CERES_NO_SUITESPARSE
-      if (options.use_mixed_precision_solves) {
-        sparse_cholesky =
-            FloatSuiteSparseCholesky::Create(options.ordering_type);
-      } else {
-        sparse_cholesky = SuiteSparseCholesky::Create(options.ordering_type);
-      }
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for SuiteSparse.";
-#endif
-
-    case EIGEN_SPARSE:
-#ifdef CERES_USE_EIGEN_SPARSE
-      if (options.use_mixed_precision_solves) {
-        sparse_cholesky =
-            FloatEigenSparseCholesky::Create(options.ordering_type);
-      } else {
-        sparse_cholesky = EigenSparseCholesky::Create(options.ordering_type);
-      }
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for "
-                 << "Eigen's sparse Cholesky factorization routines.";
-#endif
-
-    case ACCELERATE_SPARSE:
-#ifndef CERES_NO_ACCELERATE_SPARSE
-      if (options.use_mixed_precision_solves) {
-        sparse_cholesky =
-            AppleAccelerateCholesky<float>::Create(options.ordering_type);
-      } else {
-        sparse_cholesky =
-            AppleAccelerateCholesky<double>::Create(options.ordering_type);
-      }
-      break;
-#else
-      LOG(FATAL) << "Ceres was compiled without support for Apple's Accelerate "
-                 << "framework solvers.";
-#endif
-
-    default:
-      LOG(FATAL) << "Unknown sparse linear algebra library type : "
-                 << SparseLinearAlgebraLibraryTypeToString(
-                        options.sparse_linear_algebra_library_type);
-  }
-
-  if (options.max_num_refinement_iterations > 0) {
-    auto refiner = std::make_unique<SparseIterativeRefiner>(
-        options.max_num_refinement_iterations);
-    sparse_cholesky = std::make_unique<RefinedSparseCholesky>(
-        std::move(sparse_cholesky), std::move(refiner));
-  }
-  return sparse_cholesky;
-}
-
-SparseCholesky::~SparseCholesky() = default;
-
-LinearSolverTerminationType SparseCholesky::FactorAndSolve(
-    CompressedRowSparseMatrix* lhs,
-    const double* rhs,
-    double* solution,
-    std::string* message) {
-  LinearSolverTerminationType termination_type = Factorize(lhs, message);
-  if (termination_type == LinearSolverTerminationType::SUCCESS) {
-    termination_type = Solve(rhs, solution, message);
-  }
-  return termination_type;
-}
-
-RefinedSparseCholesky::RefinedSparseCholesky(
-    std::unique_ptr<SparseCholesky> sparse_cholesky,
-    std::unique_ptr<SparseIterativeRefiner> iterative_refiner)
-    : sparse_cholesky_(std::move(sparse_cholesky)),
-      iterative_refiner_(std::move(iterative_refiner)) {}
-
-RefinedSparseCholesky::~RefinedSparseCholesky() = default;
-
-CompressedRowSparseMatrix::StorageType RefinedSparseCholesky::StorageType()
-    const {
-  return sparse_cholesky_->StorageType();
-}
-
-LinearSolverTerminationType RefinedSparseCholesky::Factorize(
-    CompressedRowSparseMatrix* lhs, std::string* message) {
-  lhs_ = lhs;
-  return sparse_cholesky_->Factorize(lhs, message);
-}
-
-LinearSolverTerminationType RefinedSparseCholesky::Solve(const double* rhs,
-                                                         double* solution,
-                                                         std::string* message) {
-  CHECK(lhs_ != nullptr);
-  auto termination_type = sparse_cholesky_->Solve(rhs, solution, message);
-  if (termination_type != LinearSolverTerminationType::SUCCESS) {
-    return termination_type;
-  }
-
-  iterative_refiner_->Refine(*lhs_, rhs, sparse_cholesky_.get(), solution);
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/sparse_cholesky.h b/third_party/ceres/internal/ceres/sparse_cholesky.h
deleted file mode 100644
index 53f475a..0000000
--- a/third_party/ceres/internal/ceres/sparse_cholesky.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_SPARSE_CHOLESKY_H_
-#define CERES_INTERNAL_SPARSE_CHOLESKY_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// An interface that abstracts away the internal details of various
-// sparse linear algebra libraries and offers a simple API for solving
-// symmetric positive definite linear systems using a sparse Cholesky
-// factorization.
-//
-// Instances of SparseCholesky are expected to cache the symbolic
-// factorization of the linear system. They do this on the first call
-// to Factorize or FactorAndSolve. Subsequent calls to Factorize and
-// FactorAndSolve are expected to have the same sparsity structure.
-//
-// Example usage:
-//
-//  std::unique_ptr<SparseCholesky>
-//  sparse_cholesky(SparseCholesky::Create(SUITE_SPARSE, AMD));
-//
-//  CompressedRowSparseMatrix lhs = ...;
-//  std::string message;
-//  CHECK_EQ(sparse_cholesky->Factorize(&lhs, &message),
-//           LinearSolverTerminationType::SUCCESS);
-//  Vector rhs = ...;
-//  Vector solution = ...;
-//  CHECK_EQ(sparse_cholesky->Solve(rhs.data(), solution.data(), &message),
-//           LinearSolverTerminationType::SUCCESS);
-
-class CERES_NO_EXPORT SparseCholesky {
- public:
-  static std::unique_ptr<SparseCholesky> Create(
-      const LinearSolver::Options& options);
-
-  virtual ~SparseCholesky();
-
-  // Due to the symmetry of the linear system, sparse linear algebra
-  // libraries only use one half of the input matrix. Whether it is
-  // the upper or the lower triangular part of the matrix depends on
-  // the library and the re-ordering strategy being used. This
-  // function tells the user the storage type expected of the input
-  // matrix for the sparse linear algebra library and reordering
-  // strategy used.
-  virtual CompressedRowSparseMatrix::StorageType StorageType() const = 0;
-
-  // Computes the numeric factorization of the given matrix.  If this
-  // is the first call to Factorize, first the symbolic factorization
-  // will be computed and cached and the numeric factorization will be
-  // computed based on that.
-  //
-  // Subsequent calls to Factorize will use that symbolic
-  // factorization assuming that the sparsity of the matrix has
-  // remained constant.
-  virtual LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                                std::string* message) = 0;
-
-  // Computes the solution to the equation
-  //
-  // lhs * solution = rhs
-  virtual LinearSolverTerminationType Solve(const double* rhs,
-                                            double* solution,
-                                            std::string* message) = 0;
-
-  // Convenience method which combines a call to Factorize and
-  // Solve. Solve is only called if Factorize returns
-  // LinearSolverTerminationType::SUCCESS.
-  LinearSolverTerminationType FactorAndSolve(CompressedRowSparseMatrix* lhs,
-                                             const double* rhs,
-                                             double* solution,
-                                             std::string* message);
-};
-
-class SparseIterativeRefiner;
-
-// Computes an initial solution using the given instance of
-// SparseCholesky, and then refines it using the SparseIterativeRefiner.
-class CERES_NO_EXPORT RefinedSparseCholesky final : public SparseCholesky {
- public:
-  RefinedSparseCholesky(
-      std::unique_ptr<SparseCholesky> sparse_cholesky,
-      std::unique_ptr<SparseIterativeRefiner> iterative_refiner);
-  ~RefinedSparseCholesky() override;
-
-  CompressedRowSparseMatrix::StorageType StorageType() const override;
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) override;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) override;
-
- private:
-  std::unique_ptr<SparseCholesky> sparse_cholesky_;
-  std::unique_ptr<SparseIterativeRefiner> iterative_refiner_;
-  CompressedRowSparseMatrix* lhs_ = nullptr;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SPARSE_CHOLESKY_H_
diff --git a/third_party/ceres/internal/ceres/sparse_cholesky_test.cc b/third_party/ceres/internal/ceres/sparse_cholesky_test.cc
deleted file mode 100644
index d0d962e..0000000
--- a/third_party/ceres/internal/ceres/sparse_cholesky_test.cc
+++ /dev/null
@@ -1,388 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/sparse_cholesky.h"
-
-#include <memory>
-#include <numeric>
-#include <random>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "Eigen/SparseCore"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/inner_product_computer.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/iterative_refiner.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-namespace {
-
-std::unique_ptr<BlockSparseMatrix> CreateRandomFullRankMatrix(
-    const int num_col_blocks,
-    const int min_col_block_size,
-    const int max_col_block_size,
-    const double block_density,
-    std::mt19937& prng) {
-  // Create a random matrix
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_col_blocks = num_col_blocks;
-  options.min_col_block_size = min_col_block_size;
-  options.max_col_block_size = max_col_block_size;
-
-  options.num_row_blocks = 2 * num_col_blocks;
-  options.min_row_block_size = 1;
-  options.max_row_block_size = max_col_block_size;
-  options.block_density = block_density;
-  auto random_matrix = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-
-  // Add a diagonal block sparse matrix to make it full rank.
-  Vector diagonal = Vector::Ones(random_matrix->num_cols());
-  auto block_diagonal = BlockSparseMatrix::CreateDiagonalMatrix(
-      diagonal.data(), random_matrix->block_structure()->cols);
-  random_matrix->AppendRows(*block_diagonal);
-  return random_matrix;
-}
-
-bool ComputeExpectedSolution(const CompressedRowSparseMatrix& lhs,
-                             const Vector& rhs,
-                             Vector* solution) {
-  Matrix eigen_lhs;
-  lhs.ToDenseMatrix(&eigen_lhs);
-  if (lhs.storage_type() ==
-      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-    Matrix full_lhs = eigen_lhs.selfadjointView<Eigen::Upper>();
-    Eigen::LLT<Matrix, Eigen::Upper> llt =
-        eigen_lhs.selfadjointView<Eigen::Upper>().llt();
-    if (llt.info() != Eigen::Success) {
-      return false;
-    }
-    *solution = llt.solve(rhs);
-    return (llt.info() == Eigen::Success);
-  }
-
-  Matrix full_lhs = eigen_lhs.selfadjointView<Eigen::Lower>();
-  Eigen::LLT<Matrix, Eigen::Lower> llt =
-      eigen_lhs.selfadjointView<Eigen::Lower>().llt();
-  if (llt.info() != Eigen::Success) {
-    return false;
-  }
-  *solution = llt.solve(rhs);
-  return (llt.info() == Eigen::Success);
-}
-
-void SparseCholeskySolverUnitTest(
-    const SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type,
-    const OrderingType ordering_type,
-    const bool use_block_structure,
-    const int num_blocks,
-    const int min_block_size,
-    const int max_block_size,
-    const double block_density,
-    std::mt19937& prng) {
-  LinearSolver::Options sparse_cholesky_options;
-  sparse_cholesky_options.sparse_linear_algebra_library_type =
-      sparse_linear_algebra_library_type;
-  sparse_cholesky_options.ordering_type = ordering_type;
-  auto sparse_cholesky = SparseCholesky::Create(sparse_cholesky_options);
-  const CompressedRowSparseMatrix::StorageType storage_type =
-      sparse_cholesky->StorageType();
-
-  auto m = CreateRandomFullRankMatrix(
-      num_blocks, min_block_size, max_block_size, block_density, prng);
-  auto inner_product_computer = InnerProductComputer::Create(*m, storage_type);
-  inner_product_computer->Compute();
-  CompressedRowSparseMatrix* lhs = inner_product_computer->mutable_result();
-
-  if (!use_block_structure) {
-    lhs->mutable_row_blocks()->clear();
-    lhs->mutable_col_blocks()->clear();
-  }
-
-  Vector rhs = Vector::Random(lhs->num_rows());
-  Vector expected(lhs->num_rows());
-  Vector actual(lhs->num_rows());
-
-  EXPECT_TRUE(ComputeExpectedSolution(*lhs, rhs, &expected));
-  std::string message;
-  EXPECT_EQ(
-      sparse_cholesky->FactorAndSolve(lhs, rhs.data(), actual.data(), &message),
-      LinearSolverTerminationType::SUCCESS);
-  Matrix eigen_lhs;
-  lhs->ToDenseMatrix(&eigen_lhs);
-  EXPECT_NEAR((actual - expected).norm() / actual.norm(),
-              0.0,
-              std::numeric_limits<double>::epsilon() * 20)
-      << "\n"
-      << eigen_lhs;
-}
-
-using Param =
-    ::testing::tuple<SparseLinearAlgebraLibraryType, OrderingType, bool>;
-
-std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  Param param = info.param;
-  std::stringstream ss;
-  ss << SparseLinearAlgebraLibraryTypeToString(::testing::get<0>(param)) << "_"
-     << ::testing::get<1>(param) << "_"
-     << (::testing::get<2>(param) ? "UseBlockStructure" : "NoBlockStructure");
-  return ss.str();
-}
-
-}  // namespace
-
-class SparseCholeskyTest : public ::testing::TestWithParam<Param> {};
-
-TEST_P(SparseCholeskyTest, FactorAndSolve) {
-  constexpr int kMinNumBlocks = 1;
-  constexpr int kMaxNumBlocks = 10;
-  constexpr int kNumTrials = 10;
-  constexpr int kMinBlockSize = 1;
-  constexpr int kMaxBlockSize = 5;
-
-  Param param = GetParam();
-
-  std::mt19937 prng;
-  std::uniform_real_distribution<double> distribution(0.1, 1.0);
-
-  for (int num_blocks = kMinNumBlocks; num_blocks < kMaxNumBlocks;
-       ++num_blocks) {
-    for (int trial = 0; trial < kNumTrials; ++trial) {
-      const double block_density = distribution(prng);
-      SparseCholeskySolverUnitTest(::testing::get<0>(param),
-                                   ::testing::get<1>(param),
-                                   ::testing::get<2>(param),
-                                   num_blocks,
-                                   kMinBlockSize,
-                                   kMaxBlockSize,
-                                   block_density,
-                                   prng);
-    }
-  }
-}
-
-namespace {
-
-#ifndef CERES_NO_SUITESPARSE
-INSTANTIATE_TEST_SUITE_P(
-    SuiteSparseCholesky,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(SUITE_SPARSE),
-                       ::testing::Values(OrderingType::AMD,
-                                         OrderingType::NATURAL),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-#endif
-
-#if !defined(CERES_NO_SUITESPARSE) && !defined(CERES_NO_CHOLMOD_PARTITION)
-INSTANTIATE_TEST_SUITE_P(
-    SuiteSparseCholeskyMETIS,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(SUITE_SPARSE),
-                       ::testing::Values(OrderingType::NESDIS),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-#endif  // !defined(CERES_NO_SUITESPARSE) &&
-        // !defined(CERES_NO_CHOLMOD_PARTITION)
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-INSTANTIATE_TEST_SUITE_P(
-    AccelerateSparseCholesky,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(ACCELERATE_SPARSE),
-                       ::testing::Values(OrderingType::AMD,
-                                         OrderingType::NESDIS,
-                                         OrderingType::NATURAL),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-
-INSTANTIATE_TEST_SUITE_P(
-    AccelerateSparseCholeskySingle,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(ACCELERATE_SPARSE),
-                       ::testing::Values(OrderingType::AMD,
-                                         OrderingType::NESDIS,
-                                         OrderingType::NATURAL),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-#endif
-
-#ifdef CERES_USE_EIGEN_SPARSE
-INSTANTIATE_TEST_SUITE_P(
-    EigenSparseCholesky,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(EIGEN_SPARSE),
-                       ::testing::Values(OrderingType::AMD,
-                                         OrderingType::NATURAL),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-
-INSTANTIATE_TEST_SUITE_P(
-    EigenSparseCholeskySingle,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(EIGEN_SPARSE),
-                       ::testing::Values(OrderingType::AMD,
-                                         OrderingType::NATURAL),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-#endif  // CERES_USE_EIGEN_SPARSE
-
-#if defined(CERES_USE_EIGEN_SPARSE) && !defined(CERES_NO_EIGEN_METIS)
-INSTANTIATE_TEST_SUITE_P(
-    EigenSparseCholeskyMETIS,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(EIGEN_SPARSE),
-                       ::testing::Values(OrderingType::NESDIS),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-
-INSTANTIATE_TEST_SUITE_P(
-    EigenSparseCholeskySingleMETIS,
-    SparseCholeskyTest,
-    ::testing::Combine(::testing::Values(EIGEN_SPARSE),
-                       ::testing::Values(OrderingType::NESDIS),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-#endif  // defined(CERES_USE_EIGEN_SPARSE) && !defined(CERES_NO_EIGEN_METIS)
-
-class MockSparseCholesky : public SparseCholesky {
- public:
-  MOCK_CONST_METHOD0(StorageType, CompressedRowSparseMatrix::StorageType());
-  MOCK_METHOD2(Factorize,
-               LinearSolverTerminationType(CompressedRowSparseMatrix* lhs,
-                                           std::string* message));
-  MOCK_METHOD3(Solve,
-               LinearSolverTerminationType(const double* rhs,
-                                           double* solution,
-                                           std::string* message));
-};
-
-class MockSparseIterativeRefiner : public SparseIterativeRefiner {
- public:
-  MockSparseIterativeRefiner() : SparseIterativeRefiner(1) {}
-  MOCK_METHOD4(Refine,
-               void(const SparseMatrix& lhs,
-                    const double* rhs,
-                    SparseCholesky* sparse_cholesky,
-                    double* solution));
-};
-
-using testing::_;
-using testing::Return;
-
-TEST(RefinedSparseCholesky, StorageType) {
-  auto sparse_cholesky = std::make_unique<MockSparseCholesky>();
-  auto iterative_refiner = std::make_unique<MockSparseIterativeRefiner>();
-  EXPECT_CALL(*sparse_cholesky, StorageType())
-      .Times(1)
-      .WillRepeatedly(
-          Return(CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR));
-  EXPECT_CALL(*iterative_refiner, Refine(_, _, _, _)).Times(0);
-  RefinedSparseCholesky refined_sparse_cholesky(std::move(sparse_cholesky),
-                                                std::move(iterative_refiner));
-  EXPECT_EQ(refined_sparse_cholesky.StorageType(),
-            CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-};
-
-TEST(RefinedSparseCholesky, Factorize) {
-  auto* mock_sparse_cholesky = new MockSparseCholesky;
-  auto* mock_iterative_refiner = new MockSparseIterativeRefiner;
-  EXPECT_CALL(*mock_sparse_cholesky, Factorize(_, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::SUCCESS));
-  EXPECT_CALL(*mock_iterative_refiner, Refine(_, _, _, _)).Times(0);
-  std::unique_ptr<SparseCholesky> sparse_cholesky(mock_sparse_cholesky);
-  std::unique_ptr<SparseIterativeRefiner> iterative_refiner(
-      mock_iterative_refiner);
-  RefinedSparseCholesky refined_sparse_cholesky(std::move(sparse_cholesky),
-                                                std::move(iterative_refiner));
-  CompressedRowSparseMatrix m(1, 1, 1);
-  std::string message;
-  EXPECT_EQ(refined_sparse_cholesky.Factorize(&m, &message),
-            LinearSolverTerminationType::SUCCESS);
-};
-
-TEST(RefinedSparseCholesky, FactorAndSolveWithUnsuccessfulFactorization) {
-  auto* mock_sparse_cholesky = new MockSparseCholesky;
-  auto* mock_iterative_refiner = new MockSparseIterativeRefiner;
-  EXPECT_CALL(*mock_sparse_cholesky, Factorize(_, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::FAILURE));
-  EXPECT_CALL(*mock_sparse_cholesky, Solve(_, _, _)).Times(0);
-  EXPECT_CALL(*mock_iterative_refiner, Refine(_, _, _, _)).Times(0);
-  std::unique_ptr<SparseCholesky> sparse_cholesky(mock_sparse_cholesky);
-  std::unique_ptr<SparseIterativeRefiner> iterative_refiner(
-      mock_iterative_refiner);
-  RefinedSparseCholesky refined_sparse_cholesky(std::move(sparse_cholesky),
-                                                std::move(iterative_refiner));
-  CompressedRowSparseMatrix m(1, 1, 1);
-  std::string message;
-  double rhs;
-  double solution;
-  EXPECT_EQ(
-      refined_sparse_cholesky.FactorAndSolve(&m, &rhs, &solution, &message),
-      LinearSolverTerminationType::FAILURE);
-};
-
-TEST(RefinedSparseCholesky, FactorAndSolveWithSuccess) {
-  auto* mock_sparse_cholesky = new MockSparseCholesky;
-  std::unique_ptr<MockSparseIterativeRefiner> mock_iterative_refiner(
-      new MockSparseIterativeRefiner);
-  EXPECT_CALL(*mock_sparse_cholesky, Factorize(_, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::SUCCESS));
-  EXPECT_CALL(*mock_sparse_cholesky, Solve(_, _, _))
-      .Times(1)
-      .WillRepeatedly(Return(LinearSolverTerminationType::SUCCESS));
-  EXPECT_CALL(*mock_iterative_refiner, Refine(_, _, _, _)).Times(1);
-
-  std::unique_ptr<SparseCholesky> sparse_cholesky(mock_sparse_cholesky);
-  std::unique_ptr<SparseIterativeRefiner> iterative_refiner(
-      std::move(mock_iterative_refiner));
-  RefinedSparseCholesky refined_sparse_cholesky(std::move(sparse_cholesky),
-                                                std::move(iterative_refiner));
-  CompressedRowSparseMatrix m(1, 1, 1);
-  std::string message;
-  double rhs;
-  double solution;
-  EXPECT_EQ(
-      refined_sparse_cholesky.FactorAndSolve(&m, &rhs, &solution, &message),
-      LinearSolverTerminationType::SUCCESS);
-};
-
-}  // namespace
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/sparse_matrix.cc b/third_party/ceres/internal/ceres/sparse_matrix.cc
deleted file mode 100644
index cdc77fc..0000000
--- a/third_party/ceres/internal/ceres/sparse_matrix.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/sparse_matrix.h"
-
-namespace ceres::internal {
-
-SparseMatrix::~SparseMatrix() = default;
-
-void SparseMatrix::SquaredColumnNorm(double* x,
-                                     ContextImpl* context,
-                                     int num_threads) const {
-  (void)context;
-  (void)num_threads;
-  SquaredColumnNorm(x);
-}
-
-void SparseMatrix::ScaleColumns(const double* scale,
-                                ContextImpl* context,
-                                int num_threads) {
-  (void)context;
-  (void)num_threads;
-  ScaleColumns(scale);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/sparse_matrix.h b/third_party/ceres/internal/ceres/sparse_matrix.h
deleted file mode 100644
index 9c79417..0000000
--- a/third_party/ceres/internal/ceres/sparse_matrix.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Interface definition for sparse matrices.
-
-#ifndef CERES_INTERNAL_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_SPARSE_MATRIX_H_
-
-#include <cstdio>
-
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_operator.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-class ContextImpl;
-
-// This class defines the interface for storing and manipulating
-// sparse matrices. The key property that differentiates different
-// sparse matrices is how they are organized in memory and how the
-// information about the sparsity structure of the matrix is
-// stored. This has significant implications for linear solvers
-// operating on these matrices.
-//
-// To deal with the different kinds of layouts, we will assume that a
-// sparse matrix will have a two part representation. A values array
-// that will be used to store the entries of the sparse matrix and
-// some sort of a layout object that tells the user the sparsity
-// structure and layout of the values array. For example in case of
-// the TripletSparseMatrix, this information is carried in the rows
-// and cols arrays and for the BlockSparseMatrix, this information is
-// carried in the CompressedRowBlockStructure object.
-//
-// This interface deliberately does not contain any information about
-// the structure of the sparse matrix as that seems to be highly
-// matrix type dependent and we are at this stage unable to come up
-// with an efficient high level interface that spans multiple sparse
-// matrix types.
-class CERES_NO_EXPORT SparseMatrix : public LinearOperator {
- public:
-  ~SparseMatrix() override;
-
-  // y += Ax;
-  using LinearOperator::RightMultiplyAndAccumulate;
-  void RightMultiplyAndAccumulate(const double* x,
-                                  double* y) const override = 0;
-
-  // y += A'x;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const override = 0;
-
-  // In MATLAB notation sum(A.*A, 1)
-  virtual void SquaredColumnNorm(double* x) const = 0;
-  virtual void SquaredColumnNorm(double* x,
-                                 ContextImpl* context,
-                                 int num_threads) const;
-  // A = A * diag(scale)
-  virtual void ScaleColumns(const double* scale) = 0;
-  virtual void ScaleColumns(const double* scale,
-                            ContextImpl* context,
-                            int num_threads);
-
-  // A = 0. A->num_nonzeros() == 0 is true after this call. The
-  // sparsity pattern is preserved.
-  virtual void SetZero() = 0;
-  virtual void SetZero(ContextImpl* /*context*/, int /*num_threads*/) {
-    SetZero();
-  }
-
-  // Resize and populate dense_matrix with a dense version of the
-  // sparse matrix.
-  virtual void ToDenseMatrix(Matrix* dense_matrix) const = 0;
-
-  // Write out the matrix as a sequence of (i,j,s) triplets. This
-  // format is useful for loading the matrix into MATLAB/octave as a
-  // sparse matrix.
-  virtual void ToTextFile(FILE* file) const = 0;
-
-  // Accessors for the values array that stores the entries of the
-  // sparse matrix. The exact interpretation of the values of this
-  // array depends on the particular kind of SparseMatrix being
-  // accessed.
-  virtual double* mutable_values() = 0;
-  virtual const double* values() const = 0;
-
-  int num_rows() const override = 0;
-  int num_cols() const override = 0;
-  virtual int num_nonzeros() const = 0;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SPARSE_MATRIX_H_
diff --git a/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc b/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc
deleted file mode 100644
index 5746509..0000000
--- a/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc
+++ /dev/null
@@ -1,112 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/sparse_normal_cholesky_solver.h"
-
-#include <algorithm>
-#include <cstring>
-#include <ctime>
-#include <memory>
-
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/inner_product_computer.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/iterative_refiner.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_cholesky.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-
-SparseNormalCholeskySolver::SparseNormalCholeskySolver(
-    const LinearSolver::Options& options)
-    : options_(options) {
-  sparse_cholesky_ = SparseCholesky::Create(options);
-}
-
-SparseNormalCholeskySolver::~SparseNormalCholeskySolver() = default;
-
-LinearSolver::Summary SparseNormalCholeskySolver::SolveImpl(
-    BlockSparseMatrix* A,
-    const double* b,
-    const LinearSolver::PerSolveOptions& per_solve_options,
-    double* x) {
-  EventLogger event_logger("SparseNormalCholeskySolver::Solve");
-  LinearSolver::Summary summary;
-  summary.num_iterations = 1;
-  summary.termination_type = LinearSolverTerminationType::SUCCESS;
-  summary.message = "Success.";
-
-  const int num_cols = A->num_cols();
-  VectorRef xref(x, num_cols);
-  xref.setZero();
-  rhs_.resize(num_cols);
-  rhs_.setZero();
-  A->LeftMultiplyAndAccumulate(b, rhs_.data());
-  event_logger.AddEvent("Compute RHS");
-
-  if (per_solve_options.D != nullptr) {
-    // Temporarily append a diagonal block to the A matrix, but undo
-    // it before returning the matrix to the user.
-    std::unique_ptr<BlockSparseMatrix> regularizer =
-        BlockSparseMatrix::CreateDiagonalMatrix(per_solve_options.D,
-                                                A->block_structure()->cols);
-    event_logger.AddEvent("Diagonal");
-    A->AppendRows(*regularizer);
-    event_logger.AddEvent("Append");
-  }
-  event_logger.AddEvent("Append Rows");
-
-  if (inner_product_computer_.get() == nullptr) {
-    inner_product_computer_ =
-        InnerProductComputer::Create(*A, sparse_cholesky_->StorageType());
-
-    event_logger.AddEvent("InnerProductComputer::Create");
-  }
-
-  inner_product_computer_->Compute();
-  event_logger.AddEvent("InnerProductComputer::Compute");
-
-  if (per_solve_options.D != nullptr) {
-    A->DeleteRowBlocks(A->block_structure()->cols.size());
-  }
-
-  summary.termination_type = sparse_cholesky_->FactorAndSolve(
-      inner_product_computer_->mutable_result(),
-      rhs_.data(),
-      x,
-      &summary.message);
-  event_logger.AddEvent("SparseCholesky::FactorAndSolve");
-  return summary;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.h b/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.h
deleted file mode 100644
index 585d1c1..0000000
--- a/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// A solver for sparse linear least squares problem based on solving
-// the normal equations via a sparse cholesky factorization.
-
-#ifndef CERES_INTERNAL_SPARSE_NORMAL_CHOLESKY_SOLVER_H_
-#define CERES_INTERNAL_SPARSE_NORMAL_CHOLESKY_SOLVER_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-// clang-format off
-#include "ceres/internal/config.h"
-// clang-format on
-
-#include <memory>
-#include <vector>
-
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-class CompressedRowSparseMatrix;
-class InnerProductComputer;
-class SparseCholesky;
-
-// Solves the normal equations (A'A + D'D) x = A'b, using the sparse
-// linear algebra library of the user's choice.
-class CERES_NO_EXPORT SparseNormalCholeskySolver
-    : public BlockSparseMatrixSolver {
- public:
-  explicit SparseNormalCholeskySolver(const LinearSolver::Options& options);
-  SparseNormalCholeskySolver(const SparseNormalCholeskySolver&) = delete;
-  void operator=(const SparseNormalCholeskySolver&) = delete;
-
-  ~SparseNormalCholeskySolver() override;
-
- private:
-  LinearSolver::Summary SolveImpl(BlockSparseMatrix* A,
-                                  const double* b,
-                                  const LinearSolver::PerSolveOptions& options,
-                                  double* x) final;
-
-  const LinearSolver::Options options_;
-  Vector rhs_;
-  std::unique_ptr<SparseCholesky> sparse_cholesky_;
-  std::unique_ptr<InnerProductComputer> inner_product_computer_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_SPARSE_NORMAL_CHOLESKY_SOLVER_H_
diff --git a/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver_test.cc b/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver_test.cc
deleted file mode 100644
index 3396e34..0000000
--- a/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver_test.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include <memory>
-
-#include "Eigen/Cholesky"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/context_impl.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/linear_solver.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// TODO(sameeragarwal): These tests needs to be re-written, since
-// SparseNormalCholeskySolver is a composition of two classes now,
-// InnerProductComputer and SparseCholesky.
-//
-// So the test should exercise the composition, rather than the
-// numerics of the solver, which are well covered by tests for those
-// classes.
-class SparseNormalCholeskySolverTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    std::unique_ptr<LinearLeastSquaresProblem> problem =
-        CreateLinearLeastSquaresProblemFromId(2);
-
-    CHECK(problem != nullptr);
-    A_.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-    b_ = std::move(problem->b);
-    D_ = std::move(problem->D);
-  }
-
-  void TestSolver(const LinearSolver::Options& options, double* D) {
-    Matrix dense_A;
-    A_->ToDenseMatrix(&dense_A);
-    Matrix lhs = dense_A.transpose() * dense_A;
-    if (D != nullptr) {
-      lhs += (ConstVectorRef(D, A_->num_cols()).array() *
-              ConstVectorRef(D, A_->num_cols()).array())
-                 .matrix()
-                 .asDiagonal();
-    }
-
-    Vector rhs(A_->num_cols());
-    rhs.setZero();
-    A_->LeftMultiplyAndAccumulate(b_.get(), rhs.data());
-    Vector expected_solution = lhs.llt().solve(rhs);
-
-    std::unique_ptr<LinearSolver> solver(LinearSolver::Create(options));
-    LinearSolver::PerSolveOptions per_solve_options;
-    per_solve_options.D = D;
-    Vector actual_solution(A_->num_cols());
-    LinearSolver::Summary summary;
-    summary = solver->Solve(
-        A_.get(), b_.get(), per_solve_options, actual_solution.data());
-
-    EXPECT_EQ(summary.termination_type, LinearSolverTerminationType::SUCCESS);
-
-    for (int i = 0; i < A_->num_cols(); ++i) {
-      EXPECT_NEAR(expected_solution(i), actual_solution(i), 1e-8)
-          << "\nExpected: " << expected_solution.transpose()
-          << "\nActual: " << actual_solution.transpose();
-    }
-  }
-
-  void TestSolver(const LinearSolver::Options& options) {
-    TestSolver(options, nullptr);
-    TestSolver(options, D_.get());
-  }
-
-  std::unique_ptr<BlockSparseMatrix> A_;
-  std::unique_ptr<double[]> b_;
-  std::unique_ptr<double[]> D_;
-};
-
-#ifndef CERES_NO_SUITESPARSE
-TEST_F(SparseNormalCholeskySolverTest,
-       SparseNormalCholeskyUsingSuiteSparsePreOrdering) {
-  LinearSolver::Options options;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options.type = SPARSE_NORMAL_CHOLESKY;
-  options.ordering_type = OrderingType::NATURAL;
-  ContextImpl context;
-  options.context = &context;
-  TestSolver(options);
-}
-
-TEST_F(SparseNormalCholeskySolverTest,
-       SparseNormalCholeskyUsingSuiteSparsePostOrdering) {
-  LinearSolver::Options options;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  options.type = SPARSE_NORMAL_CHOLESKY;
-  options.ordering_type = OrderingType::AMD;
-  ContextImpl context;
-  options.context = &context;
-  TestSolver(options);
-}
-#endif
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-TEST_F(SparseNormalCholeskySolverTest,
-       SparseNormalCholeskyUsingAccelerateSparsePreOrdering) {
-  LinearSolver::Options options;
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options.type = SPARSE_NORMAL_CHOLESKY;
-  options.ordering_type = OrderingType::NATURAL;
-  ContextImpl context;
-  options.context = &context;
-  TestSolver(options);
-}
-
-TEST_F(SparseNormalCholeskySolverTest,
-       SparseNormalCholeskyUsingAcceleratePostOrdering) {
-  LinearSolver::Options options;
-  options.sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  options.type = SPARSE_NORMAL_CHOLESKY;
-  options.ordering_type = OrderingType::AMD;
-  ContextImpl context;
-  options.context = &context;
-  TestSolver(options);
-}
-#endif
-
-#ifdef CERES_USE_EIGEN_SPARSE
-TEST_F(SparseNormalCholeskySolverTest,
-       SparseNormalCholeskyUsingEigenPreOrdering) {
-  LinearSolver::Options options;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options.type = SPARSE_NORMAL_CHOLESKY;
-  options.ordering_type = OrderingType::NATURAL;
-  ContextImpl context;
-  options.context = &context;
-  TestSolver(options);
-}
-
-TEST_F(SparseNormalCholeskySolverTest,
-       SparseNormalCholeskyUsingEigenPostOrdering) {
-  LinearSolver::Options options;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  options.type = SPARSE_NORMAL_CHOLESKY;
-  options.ordering_type = OrderingType::AMD;
-  ContextImpl context;
-  options.context = &context;
-  TestSolver(options);
-}
-#endif  // CERES_USE_EIGEN_SPARSE
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/spmv_benchmark.cc b/third_party/ceres/internal/ceres/spmv_benchmark.cc
deleted file mode 100644
index 6a4efa7..0000000
--- a/third_party/ceres/internal/ceres/spmv_benchmark.cc
+++ /dev/null
@@ -1,445 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: joydeepb@cs.utexas.edu (Joydeep Biswas)
-
-#include <memory>
-#include <random>
-#include <string>
-
-#include "Eigen/Dense"
-#include "benchmark/benchmark.h"
-#include "ceres/block_jacobi_preconditioner.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/context_impl.h"
-#include "ceres/cuda_sparse_matrix.h"
-#include "ceres/cuda_vector.h"
-#include "ceres/fake_bundle_adjustment_jacobian.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_solver.h"
-
-#ifndef CERES_NO_CUDA
-#include "cuda_runtime.h"
-#endif
-
-namespace ceres::internal {
-
-constexpr int kNumCameras = 1000;
-constexpr int kNumPoints = 10000;
-constexpr int kCameraSize = 6;
-constexpr int kPointSize = 3;
-constexpr double kVisibility = 0.1;
-
-constexpr int kNumRowBlocks = 100000;
-constexpr int kNumColBlocks = 10000;
-constexpr int kMinRowBlockSize = 1;
-constexpr int kMaxRowBlockSize = 5;
-constexpr int kMinColBlockSize = 1;
-constexpr int kMaxColBlockSize = 15;
-constexpr double kBlockDensity = 5.0 / kNumColBlocks;
-
-static void BM_BlockSparseRightMultiplyAndAccumulateBA(
-    benchmark::State& state) {
-  const int num_threads = static_cast<int>(state.range(0));
-  std::mt19937 prng;
-  auto jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x(jacobian->num_cols());
-  Vector y(jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(
-        x.data(), y.data(), &context, num_threads);
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_BlockSparseRightMultiplyAndAccumulateBA)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_BlockSparseRightMultiplyAndAccumulateUnstructured(
-    benchmark::State& state) {
-  const int num_threads = static_cast<int>(state.range(0));
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x(jacobian->num_cols());
-  Vector y(jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(
-        x.data(), y.data(), &context, num_threads);
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_BlockSparseRightMultiplyAndAccumulateUnstructured)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_BlockSparseLeftMultiplyAndAccumulateBA(benchmark::State& state) {
-  std::mt19937 prng;
-  auto jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-  Vector x(jacobian->num_rows());
-  Vector y(jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    jacobian->LeftMultiplyAndAccumulate(x.data(), y.data());
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_BlockSparseLeftMultiplyAndAccumulateBA);
-
-static void BM_BlockSparseLeftMultiplyAndAccumulateUnstructured(
-    benchmark::State& state) {
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = 100000;
-  options.num_col_blocks = 10000;
-  options.min_row_block_size = 1;
-  options.min_col_block_size = 1;
-  options.max_row_block_size = 10;
-  options.max_col_block_size = 15;
-  options.block_density = 5.0 / options.num_col_blocks;
-  std::mt19937 prng;
-
-  auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  Vector x(jacobian->num_rows());
-  Vector y(jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    jacobian->LeftMultiplyAndAccumulate(x.data(), y.data());
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_BlockSparseLeftMultiplyAndAccumulateUnstructured);
-
-static void BM_CRSRightMultiplyAndAccumulateBA(benchmark::State& state) {
-  const int num_threads = static_cast<int>(state.range(0));
-  std::mt19937 prng;
-  auto bsm_jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-
-  auto jacobian = bsm_jacobian->ToCompressedRowSparseMatrix();
-
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x(jacobian->num_cols());
-  Vector y(jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(
-        x.data(), y.data(), &context, num_threads);
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CRSRightMultiplyAndAccumulateBA)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_CRSRightMultiplyAndAccumulateUnstructured(
-    benchmark::State& state) {
-  const int num_threads = static_cast<int>(state.range(0));
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto bsm_jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  auto jacobian = bsm_jacobian->ToCompressedRowSparseMatrix();
-
-  ContextImpl context;
-  context.EnsureMinimumThreads(num_threads);
-
-  Vector x(jacobian->num_cols());
-  Vector y(jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    jacobian->RightMultiplyAndAccumulate(
-        x.data(), y.data(), &context, num_threads);
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CRSRightMultiplyAndAccumulateUnstructured)
-    ->Arg(1)
-    ->Arg(2)
-    ->Arg(4)
-    ->Arg(8)
-    ->Arg(16);
-
-static void BM_CRSLeftMultiplyAndAccumulateBA(benchmark::State& state) {
-  std::mt19937 prng;
-  // Perform setup here
-  auto bsm_jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-  auto jacobian = bsm_jacobian->ToCompressedRowSparseMatrix();
-
-  Vector x(jacobian->num_rows());
-  Vector y(jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    // This code gets timed
-    jacobian->LeftMultiplyAndAccumulate(x.data(), y.data());
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CRSLeftMultiplyAndAccumulateBA);
-
-static void BM_CRSLeftMultiplyAndAccumulateUnstructured(
-    benchmark::State& state) {
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto bsm_jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  auto jacobian = bsm_jacobian->ToCompressedRowSparseMatrix();
-
-  Vector x(jacobian->num_rows());
-  Vector y(jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-  double sum = 0;
-  for (auto _ : state) {
-    // This code gets timed
-    jacobian->LeftMultiplyAndAccumulate(x.data(), y.data());
-    sum += y.norm();
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CRSLeftMultiplyAndAccumulateUnstructured);
-
-#ifndef CERES_NO_CUDA
-static void BM_CudaRightMultiplyAndAccumulateBA(benchmark::State& state) {
-  std::mt19937 prng;
-  auto jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-  ContextImpl context;
-  std::string message;
-  context.InitCuda(&message);
-  auto jacobian_crs = jacobian->ToCompressedRowSparseMatrix();
-  CudaSparseMatrix cuda_jacobian(&context, *jacobian_crs);
-  CudaVector cuda_x(&context, 0);
-  CudaVector cuda_y(&context, 0);
-
-  Vector x(jacobian->num_cols());
-  Vector y(jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.CopyFromCpu(y);
-  double sum = 0;
-  for (auto _ : state) {
-    cuda_jacobian.RightMultiplyAndAccumulate(cuda_x, &cuda_y);
-    sum += cuda_y.Norm();
-    CHECK_EQ(cudaDeviceSynchronize(), cudaSuccess);
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CudaRightMultiplyAndAccumulateBA);
-
-static void BM_CudaRightMultiplyAndAccumulateUnstructured(
-    benchmark::State& state) {
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  ContextImpl context;
-  std::string message;
-  context.InitCuda(&message);
-  auto jacobian_crs = jacobian->ToCompressedRowSparseMatrix();
-  CudaSparseMatrix cuda_jacobian(&context, *jacobian_crs);
-  CudaVector cuda_x(&context, 0);
-  CudaVector cuda_y(&context, 0);
-
-  Vector x(jacobian->num_cols());
-  Vector y(jacobian->num_rows());
-  x.setRandom();
-  y.setRandom();
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.CopyFromCpu(y);
-  double sum = 0;
-  for (auto _ : state) {
-    cuda_jacobian.RightMultiplyAndAccumulate(cuda_x, &cuda_y);
-    sum += cuda_y.Norm();
-    CHECK_EQ(cudaDeviceSynchronize(), cudaSuccess);
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CudaRightMultiplyAndAccumulateUnstructured);
-
-static void BM_CudaLeftMultiplyAndAccumulateBA(benchmark::State& state) {
-  std::mt19937 prng;
-  auto jacobian = CreateFakeBundleAdjustmentJacobian(
-      kNumCameras, kNumPoints, kCameraSize, kPointSize, kVisibility, prng);
-  ContextImpl context;
-  std::string message;
-  context.InitCuda(&message);
-  auto jacobian_crs = jacobian->ToCompressedRowSparseMatrix();
-  CudaSparseMatrix cuda_jacobian(&context, *jacobian_crs);
-  CudaVector cuda_x(&context, 0);
-  CudaVector cuda_y(&context, 0);
-
-  Vector x(jacobian->num_rows());
-  Vector y(jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.CopyFromCpu(y);
-  double sum = 0;
-  for (auto _ : state) {
-    cuda_jacobian.LeftMultiplyAndAccumulate(cuda_x, &cuda_y);
-    sum += cuda_y.Norm();
-    CHECK_EQ(cudaDeviceSynchronize(), cudaSuccess);
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CudaLeftMultiplyAndAccumulateBA);
-
-static void BM_CudaLeftMultiplyAndAccumulateUnstructured(
-    benchmark::State& state) {
-  BlockSparseMatrix::RandomMatrixOptions options;
-  options.num_row_blocks = kNumRowBlocks;
-  options.num_col_blocks = kNumColBlocks;
-  options.min_row_block_size = kMinRowBlockSize;
-  options.min_col_block_size = kMinColBlockSize;
-  options.max_row_block_size = kMaxRowBlockSize;
-  options.max_col_block_size = kMaxColBlockSize;
-  options.block_density = kBlockDensity;
-  std::mt19937 prng;
-
-  auto jacobian = BlockSparseMatrix::CreateRandomMatrix(options, prng);
-  ContextImpl context;
-  std::string message;
-  context.InitCuda(&message);
-  auto jacobian_crs = jacobian->ToCompressedRowSparseMatrix();
-  CudaSparseMatrix cuda_jacobian(&context, *jacobian_crs);
-  CudaVector cuda_x(&context, 0);
-  CudaVector cuda_y(&context, 0);
-
-  Vector x(jacobian->num_rows());
-  Vector y(jacobian->num_cols());
-  x.setRandom();
-  y.setRandom();
-
-  cuda_x.CopyFromCpu(x);
-  cuda_y.CopyFromCpu(y);
-  double sum = 0;
-  for (auto _ : state) {
-    cuda_jacobian.LeftMultiplyAndAccumulate(cuda_x, &cuda_y);
-    sum += cuda_y.Norm();
-    CHECK_EQ(cudaDeviceSynchronize(), cudaSuccess);
-  }
-  CHECK_NE(sum, 0.0);
-}
-
-BENCHMARK(BM_CudaLeftMultiplyAndAccumulateUnstructured);
-
-#endif
-
-}  // namespace ceres::internal
-
-BENCHMARK_MAIN();
diff --git a/third_party/ceres/internal/ceres/stl_util.h b/third_party/ceres/internal/ceres/stl_util.h
deleted file mode 100644
index d206279..0000000
--- a/third_party/ceres/internal/ceres/stl_util.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_STL_UTIL_H_
-#define CERES_INTERNAL_STL_UTIL_H_
-
-#include <algorithm>
-
-namespace ceres {
-
-// STLDeleteContainerPointers()
-//  For a range within a container of pointers, calls delete
-//  (non-array version) on these pointers.
-// NOTE: for these three functions, we could just implement a DeleteObject
-// functor and then call for_each() on the range and functor, but this
-// requires us to pull in all of algorithm.h, which seems expensive.
-// For hash_[multi]set, it is important that this deletes behind the iterator
-// because the hash_set may call the hash function on the iterator when it is
-// advanced, which could result in the hash function trying to deference a
-// stale pointer.
-template <class ForwardIterator>
-void STLDeleteContainerPointers(ForwardIterator begin, ForwardIterator end) {
-  while (begin != end) {
-    ForwardIterator temp = begin;
-    ++begin;
-    delete *temp;
-  }
-}
-
-// Variant of STLDeleteContainerPointers which allows the container to
-// contain duplicates.
-template <class ForwardIterator>
-void STLDeleteUniqueContainerPointers(ForwardIterator begin,
-                                      ForwardIterator end) {
-  std::sort(begin, end);
-  ForwardIterator new_end = std::unique(begin, end);
-  while (begin != new_end) {
-    ForwardIterator temp = begin;
-    ++begin;
-    delete *temp;
-  }
-}
-
-// STLDeleteElements() deletes all the elements in an STL container and clears
-// the container.  This function is suitable for use with a vector, set,
-// hash_set, or any other STL container which defines sensible begin(), end(),
-// and clear() methods.
-//
-// If container is nullptr, this function is a no-op.
-//
-// As an alternative to calling STLDeleteElements() directly, consider
-// ElementDeleter (defined below), which ensures that your container's elements
-// are deleted when the ElementDeleter goes out of scope.
-template <class T>
-void STLDeleteElements(T* container) {
-  if (!container) return;
-  STLDeleteContainerPointers(container->begin(), container->end());
-  container->clear();
-}
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_STL_UTIL_H_
diff --git a/third_party/ceres/internal/ceres/stringprintf.cc b/third_party/ceres/internal/ceres/stringprintf.cc
deleted file mode 100644
index 100bbff..0000000
--- a/third_party/ceres/internal/ceres/stringprintf.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: Sanjay Ghemawat
-
-#include "ceres/stringprintf.h"
-
-#include <cerrno>
-#include <cstdarg>  // For va_list and related operations
-#include <cstdio>   // MSVC requires this for _vsnprintf
-#include <string>
-#include <vector>
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-void StringAppendV(std::string* dst, const char* format, va_list ap) {
-  // First try with a small fixed size buffer
-  char space[1024];
-
-  // It's possible for methods that use a va_list to invalidate
-  // the data in it upon use.  The fix is to make a copy
-  // of the structure before using it and use that copy instead.
-  va_list backup_ap;
-  va_copy(backup_ap, ap);
-  int result = vsnprintf(space, sizeof(space), format, backup_ap);
-  va_end(backup_ap);
-
-  if (result < sizeof(space)) {
-    if (result >= 0) {
-      // Normal case -- everything fit.
-      dst->append(space, result);
-      return;
-    }
-
-#if defined(_MSC_VER)
-    // Error or MSVC running out of space.  MSVC 8.0 and higher
-    // can be asked about space needed with the special idiom below:
-    va_copy(backup_ap, ap);
-    result = vsnprintf(nullptr, 0, format, backup_ap);
-    va_end(backup_ap);
-#endif
-
-    if (result < 0) {
-      // Just an error.
-      return;
-    }
-  }
-
-  // Increase the buffer size to the size requested by vsnprintf,
-  // plus one for the closing \0.
-  int length = result + 1;
-  char* buf = new char[length];
-
-  // Restore the va_list before we use it again
-  va_copy(backup_ap, ap);
-  result = vsnprintf(buf, length, format, backup_ap);
-  va_end(backup_ap);
-
-  if (result >= 0 && result < length) {
-    // It fit
-    dst->append(buf, result);
-  }
-  delete[] buf;
-}
-
-std::string StringPrintf(const char* format, ...) {
-  va_list ap;
-  va_start(ap, format);
-  std::string result;
-  StringAppendV(&result, format, ap);
-  va_end(ap);
-  return result;
-}
-
-const std::string& SStringPrintf(std::string* dst, const char* format, ...) {
-  va_list ap;
-  va_start(ap, format);
-  dst->clear();
-  StringAppendV(dst, format, ap);
-  va_end(ap);
-  return *dst;
-}
-
-void StringAppendF(std::string* dst, const char* format, ...) {
-  va_list ap;
-  va_start(ap, format);
-  StringAppendV(dst, format, ap);
-  va_end(ap);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/stringprintf.h b/third_party/ceres/internal/ceres/stringprintf.h
deleted file mode 100644
index f761770..0000000
--- a/third_party/ceres/internal/ceres/stringprintf.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: Sanjay Ghemawat
-//
-// Printf variants that place their output in a C++ string.
-//
-// Usage:
-//      string result = StringPrintf("%d %s\n", 10, "hello");
-//      SStringPrintf(&result, "%d %s\n", 10, "hello");
-//      StringAppendF(&result, "%d %s\n", 20, "there");
-
-#ifndef CERES_INTERNAL_STRINGPRINTF_H_
-#define CERES_INTERNAL_STRINGPRINTF_H_
-
-#include <cstdarg>
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-#if (defined(__GNUC__) || defined(__clang__))
-// Tell the compiler to do printf format string checking if the compiler
-// supports it; see the 'format' attribute in
-// <http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html>.
-//
-// N.B.: As the GCC manual states, "[s]ince non-static C++ methods
-// have an implicit 'this' argument, the arguments of such methods
-// should be counted from two, not one."
-#define CERES_PRINTF_ATTRIBUTE(string_index, first_to_check) \
-  __attribute__((__format__(__printf__, string_index, first_to_check)))
-#define CERES_SCANF_ATTRIBUTE(string_index, first_to_check) \
-  __attribute__((__format__(__scanf__, string_index, first_to_check)))
-#else
-#define CERES_PRINTF_ATTRIBUTE(string_index, first_to_check)
-#endif
-
-// Return a C++ string.
-CERES_NO_EXPORT extern std::string StringPrintf(const char* format, ...)
-    // Tell the compiler to do printf format string checking.
-    CERES_PRINTF_ATTRIBUTE(1, 2);
-
-// Store result into a supplied string and return it.
-CERES_NO_EXPORT extern const std::string& SStringPrintf(std::string* dst,
-                                                        const char* format,
-                                                        ...)
-    // Tell the compiler to do printf format string checking.
-    CERES_PRINTF_ATTRIBUTE(2, 3);
-
-// Append result to a supplied string.
-CERES_NO_EXPORT extern void StringAppendF(std::string* dst,
-                                          const char* format,
-                                          ...)
-    // Tell the compiler to do printf format string checking.
-    CERES_PRINTF_ATTRIBUTE(2, 3);
-
-// Lower-level routine that takes a va_list and appends to a specified string.
-// All other routines are just convenience wrappers around it.
-CERES_NO_EXPORT extern void StringAppendV(std::string* dst,
-                                          const char* format,
-                                          va_list ap);
-
-#undef CERES_PRINTF_ATTRIBUTE
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_STRINGPRINTF_H_
diff --git a/third_party/ceres/internal/ceres/subset_preconditioner.cc b/third_party/ceres/internal/ceres/subset_preconditioner.cc
deleted file mode 100644
index 068f6ce..0000000
--- a/third_party/ceres/internal/ceres/subset_preconditioner.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/subset_preconditioner.h"
-
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/inner_product_computer.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_cholesky.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-SubsetPreconditioner::SubsetPreconditioner(Preconditioner::Options options,
-                                           const BlockSparseMatrix& A)
-    : options_(std::move(options)), num_cols_(A.num_cols()) {
-  CHECK_GE(options_.subset_preconditioner_start_row_block, 0)
-      << "Congratulations, you found a bug in Ceres. Please report it.";
-
-  LinearSolver::Options sparse_cholesky_options;
-  sparse_cholesky_options.sparse_linear_algebra_library_type =
-      options_.sparse_linear_algebra_library_type;
-  sparse_cholesky_options.ordering_type = options_.ordering_type;
-  sparse_cholesky_ = SparseCholesky::Create(sparse_cholesky_options);
-}
-
-SubsetPreconditioner::~SubsetPreconditioner() = default;
-
-void SubsetPreconditioner::RightMultiplyAndAccumulate(const double* x,
-                                                      double* y) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-  std::string message;
-  sparse_cholesky_->Solve(x, y, &message);
-}
-
-bool SubsetPreconditioner::UpdateImpl(const BlockSparseMatrix& A,
-                                      const double* D) {
-  auto* m = const_cast<BlockSparseMatrix*>(&A);
-  const CompressedRowBlockStructure* bs = m->block_structure();
-
-  // A = [P]
-  //     [Q]
-
-  // Now add D to A if needed.
-  if (D != nullptr) {
-    // A = [P]
-    //     [Q]
-    //     [D]
-    std::unique_ptr<BlockSparseMatrix> regularizer(
-        BlockSparseMatrix::CreateDiagonalMatrix(D, bs->cols));
-    m->AppendRows(*regularizer);
-  }
-
-  if (inner_product_computer_ == nullptr) {
-    inner_product_computer_ = InnerProductComputer::Create(
-        *m,
-        options_.subset_preconditioner_start_row_block,
-        bs->rows.size(),
-        sparse_cholesky_->StorageType());
-  }
-
-  // Compute inner_product = [Q'*Q + D'*D]
-  inner_product_computer_->Compute();
-
-  // Unappend D if needed.
-  if (D != nullptr) {
-    // A = [P]
-    //     [Q]
-    m->DeleteRowBlocks(bs->cols.size());
-  }
-
-  std::string message;
-  // Compute L. s.t., LL' = Q'*Q + D'*D
-  const LinearSolverTerminationType termination_type =
-      sparse_cholesky_->Factorize(inner_product_computer_->mutable_result(),
-                                  &message);
-  if (termination_type != LinearSolverTerminationType::SUCCESS) {
-    LOG(ERROR) << "Preconditioner factorization failed: " << message;
-    return false;
-  }
-
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/subset_preconditioner.h b/third_party/ceres/internal/ceres/subset_preconditioner.h
deleted file mode 100644
index e179e99..0000000
--- a/third_party/ceres/internal/ceres/subset_preconditioner.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_SUBSET_PRECONDITIONER_H_
-#define CERES_INTERNAL_SUBSET_PRECONDITIONER_H_
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/preconditioner.h"
-
-namespace ceres::internal {
-
-class BlockSparseMatrix;
-class SparseCholesky;
-class InnerProductComputer;
-
-// Subset preconditioning, uses a subset of the rows of the Jacobian
-// to construct a preconditioner for the normal equations.
-//
-// To keep the interface simple, we assume that the matrix A has
-// already been re-ordered that the user wishes to some subset of the
-// bottom row blocks of the matrix as the preconditioner. This is
-// controlled by
-// Preconditioner::Options::subset_preconditioner_start_row_block.
-//
-// When using the subset preconditioner, all row blocks starting
-// from this row block are used to construct the preconditioner.
-//
-// More precisely the matrix A is horizontally partitioned as
-//
-// A = [P]
-//     [Q]
-//
-// where P has subset_preconditioner_start_row_block row blocks,
-// and the preconditioner is the inverse of the matrix Q'Q.
-//
-// Obviously, the smaller this number, the more accurate and
-// computationally expensive this preconditioner will be.
-//
-// See the tests for example usage.
-class CERES_NO_EXPORT SubsetPreconditioner
-    : public BlockSparseMatrixPreconditioner {
- public:
-  SubsetPreconditioner(Preconditioner::Options options,
-                       const BlockSparseMatrix& A);
-  ~SubsetPreconditioner() override;
-
-  // Preconditioner interface
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  int num_rows() const final { return num_cols_; }
-  int num_cols() const final { return num_cols_; }
-
- private:
-  bool UpdateImpl(const BlockSparseMatrix& A, const double* D) final;
-
-  const Preconditioner::Options options_;
-  const int num_cols_;
-  std::unique_ptr<SparseCholesky> sparse_cholesky_;
-  std::unique_ptr<InnerProductComputer> inner_product_computer_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_SUBSET_PRECONDITIONER_H_
diff --git a/third_party/ceres/internal/ceres/subset_preconditioner_test.cc b/third_party/ceres/internal/ceres/subset_preconditioner_test.cc
deleted file mode 100644
index b73274c..0000000
--- a/third_party/ceres/internal/ceres/subset_preconditioner_test.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/subset_preconditioner.h"
-
-#include <memory>
-#include <random>
-
-#include "Eigen/Dense"
-#include "Eigen/SparseCore"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/inner_product_computer.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-namespace {
-
-// TODO(sameeragarwal): Refactor the following two functions out of
-// here and sparse_cholesky_test.cc into a more suitable place.
-template <int UpLoType>
-bool SolveLinearSystemUsingEigen(const Matrix& lhs,
-                                 const Vector rhs,
-                                 Vector* solution) {
-  Eigen::LLT<Matrix, UpLoType> llt = lhs.selfadjointView<UpLoType>().llt();
-  if (llt.info() != Eigen::Success) {
-    return false;
-  }
-  *solution = llt.solve(rhs);
-  return (llt.info() == Eigen::Success);
-}
-
-// Use Eigen's Dense Cholesky solver to compute the solution to a
-// sparse linear system.
-bool ComputeExpectedSolution(const CompressedRowSparseMatrix& lhs,
-                             const Vector& rhs,
-                             Vector* solution) {
-  Matrix dense_triangular_lhs;
-  lhs.ToDenseMatrix(&dense_triangular_lhs);
-  if (lhs.storage_type() ==
-      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-    Matrix full_lhs = dense_triangular_lhs.selfadjointView<Eigen::Upper>();
-    return SolveLinearSystemUsingEigen<Eigen::Upper>(full_lhs, rhs, solution);
-  }
-  return SolveLinearSystemUsingEigen<Eigen::Lower>(
-      dense_triangular_lhs, rhs, solution);
-}
-
-using Param = ::testing::tuple<SparseLinearAlgebraLibraryType, bool>;
-
-std::string ParamInfoToString(testing::TestParamInfo<Param> info) {
-  Param param = info.param;
-  std::stringstream ss;
-  ss << SparseLinearAlgebraLibraryTypeToString(::testing::get<0>(param)) << "_"
-     << (::testing::get<1>(param) ? "Diagonal" : "NoDiagonal");
-  return ss.str();
-}
-
-}  // namespace
-
-class SubsetPreconditionerTest : public ::testing::TestWithParam<Param> {
- protected:
-  void SetUp() final {
-    BlockSparseMatrix::RandomMatrixOptions options;
-    options.num_col_blocks = 4;
-    options.min_col_block_size = 1;
-    options.max_col_block_size = 4;
-    options.num_row_blocks = 8;
-    options.min_row_block_size = 1;
-    options.max_row_block_size = 4;
-    options.block_density = 0.9;
-
-    m_ = BlockSparseMatrix::CreateRandomMatrix(options, prng_);
-    start_row_block_ = m_->block_structure()->rows.size();
-
-    // Ensure that the bottom part of the matrix has the same column
-    // block structure.
-    options.col_blocks = m_->block_structure()->cols;
-    b_ = BlockSparseMatrix::CreateRandomMatrix(options, prng_);
-    m_->AppendRows(*b_);
-
-    // Create a Identity block diagonal matrix with the same column
-    // block structure.
-    diagonal_ = Vector::Ones(m_->num_cols());
-    block_diagonal_ = BlockSparseMatrix::CreateDiagonalMatrix(
-        diagonal_.data(), b_->block_structure()->cols);
-
-    // Unconditionally add the block diagonal to the matrix b_,
-    // because either it is either part of b_ to make it full rank, or
-    // we pass the same diagonal matrix later as the parameter D. In
-    // either case the preconditioner matrix is b_' b + D'D.
-    b_->AppendRows(*block_diagonal_);
-    inner_product_computer_ = InnerProductComputer::Create(
-        *b_, CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-    inner_product_computer_->Compute();
-  }
-
-  std::unique_ptr<BlockSparseMatrix> m_;
-  std::unique_ptr<BlockSparseMatrix> b_;
-  std::unique_ptr<BlockSparseMatrix> block_diagonal_;
-  std::unique_ptr<InnerProductComputer> inner_product_computer_;
-  std::unique_ptr<Preconditioner> preconditioner_;
-  Vector diagonal_;
-  int start_row_block_;
-  std::mt19937 prng_;
-};
-
-TEST_P(SubsetPreconditionerTest, foo) {
-  Param param = GetParam();
-  Preconditioner::Options options;
-  options.subset_preconditioner_start_row_block = start_row_block_;
-  options.sparse_linear_algebra_library_type = ::testing::get<0>(param);
-  preconditioner_ = std::make_unique<SubsetPreconditioner>(options, *m_);
-
-  const bool with_diagonal = ::testing::get<1>(param);
-  if (!with_diagonal) {
-    m_->AppendRows(*block_diagonal_);
-  }
-
-  EXPECT_TRUE(
-      preconditioner_->Update(*m_, with_diagonal ? diagonal_.data() : nullptr));
-
-  // Repeatedly apply the preconditioner to random vectors and check
-  // that the preconditioned value is the same as one obtained by
-  // solving the linear system directly.
-  for (int i = 0; i < 5; ++i) {
-    CompressedRowSparseMatrix* lhs = inner_product_computer_->mutable_result();
-    Vector rhs = Vector::Random(lhs->num_rows());
-    Vector expected(lhs->num_rows());
-    EXPECT_TRUE(ComputeExpectedSolution(*lhs, rhs, &expected));
-
-    Vector actual(lhs->num_rows());
-    preconditioner_->RightMultiplyAndAccumulate(rhs.data(), actual.data());
-
-    Matrix eigen_lhs;
-    lhs->ToDenseMatrix(&eigen_lhs);
-    EXPECT_NEAR((actual - expected).norm() / actual.norm(),
-                0.0,
-                std::numeric_limits<double>::epsilon() * 10)
-        << "\n"
-        << eigen_lhs << "\n"
-        << expected.transpose() << "\n"
-        << actual.transpose();
-  }
-}
-
-#ifndef CERES_NO_SUITESPARSE
-INSTANTIATE_TEST_SUITE_P(SubsetPreconditionerWithSuiteSparse,
-                         SubsetPreconditionerTest,
-                         ::testing::Combine(::testing::Values(SUITE_SPARSE),
-                                            ::testing::Values(true, false)),
-                         ParamInfoToString);
-#endif
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-INSTANTIATE_TEST_SUITE_P(
-    SubsetPreconditionerWithAccelerateSparse,
-    SubsetPreconditionerTest,
-    ::testing::Combine(::testing::Values(ACCELERATE_SPARSE),
-                       ::testing::Values(true, false)),
-    ParamInfoToString);
-#endif
-
-#ifdef CERES_USE_EIGEN_SPARSE
-INSTANTIATE_TEST_SUITE_P(SubsetPreconditionerWithEigenSparse,
-                         SubsetPreconditionerTest,
-                         ::testing::Combine(::testing::Values(EIGEN_SPARSE),
-                                            ::testing::Values(true, false)),
-                         ParamInfoToString);
-#endif
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/suitesparse.cc b/third_party/ceres/internal/ceres/suitesparse.cc
deleted file mode 100644
index d93dd8d..0000000
--- a/third_party/ceres/internal/ceres/suitesparse.cc
+++ /dev/null
@@ -1,467 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ceres/compressed_col_sparse_matrix_utils.h"
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/linear_solver.h"
-#include "ceres/suitesparse.h"
-#include "ceres/triplet_sparse_matrix.h"
-#include "cholmod.h"
-
-namespace ceres::internal {
-namespace {
-int OrderingTypeToCHOLMODEnum(OrderingType ordering_type) {
-  if (ordering_type == OrderingType::AMD) {
-    return CHOLMOD_AMD;
-  }
-  if (ordering_type == OrderingType::NESDIS) {
-    return CHOLMOD_NESDIS;
-  }
-
-  if (ordering_type == OrderingType::NATURAL) {
-    return CHOLMOD_NATURAL;
-  }
-  LOG(FATAL) << "Congratulations you have discovered a bug in Ceres Solver."
-             << "Please report it to the developers. " << ordering_type;
-  return -1;
-}
-}  // namespace
-
-SuiteSparse::SuiteSparse() { cholmod_start(&cc_); }
-
-SuiteSparse::~SuiteSparse() { cholmod_finish(&cc_); }
-
-cholmod_sparse* SuiteSparse::CreateSparseMatrix(TripletSparseMatrix* A) {
-  cholmod_triplet triplet;
-
-  triplet.nrow = A->num_rows();
-  triplet.ncol = A->num_cols();
-  triplet.nzmax = A->max_num_nonzeros();
-  triplet.nnz = A->num_nonzeros();
-  triplet.i = reinterpret_cast<void*>(A->mutable_rows());
-  triplet.j = reinterpret_cast<void*>(A->mutable_cols());
-  triplet.x = reinterpret_cast<void*>(A->mutable_values());
-  triplet.stype = 0;  // Matrix is not symmetric.
-  triplet.itype = CHOLMOD_INT;
-  triplet.xtype = CHOLMOD_REAL;
-  triplet.dtype = CHOLMOD_DOUBLE;
-
-  return cholmod_triplet_to_sparse(&triplet, triplet.nnz, &cc_);
-}
-
-cholmod_sparse* SuiteSparse::CreateSparseMatrixTranspose(
-    TripletSparseMatrix* A) {
-  cholmod_triplet triplet;
-
-  triplet.ncol = A->num_rows();  // swap row and columns
-  triplet.nrow = A->num_cols();
-  triplet.nzmax = A->max_num_nonzeros();
-  triplet.nnz = A->num_nonzeros();
-
-  // swap rows and columns
-  triplet.j = reinterpret_cast<void*>(A->mutable_rows());
-  triplet.i = reinterpret_cast<void*>(A->mutable_cols());
-  triplet.x = reinterpret_cast<void*>(A->mutable_values());
-  triplet.stype = 0;  // Matrix is not symmetric.
-  triplet.itype = CHOLMOD_INT;
-  triplet.xtype = CHOLMOD_REAL;
-  triplet.dtype = CHOLMOD_DOUBLE;
-
-  return cholmod_triplet_to_sparse(&triplet, triplet.nnz, &cc_);
-}
-
-cholmod_sparse SuiteSparse::CreateSparseMatrixTransposeView(
-    CompressedRowSparseMatrix* A) {
-  cholmod_sparse m;
-  m.nrow = A->num_cols();
-  m.ncol = A->num_rows();
-  m.nzmax = A->num_nonzeros();
-  m.nz = nullptr;
-  m.p = reinterpret_cast<void*>(A->mutable_rows());
-  m.i = reinterpret_cast<void*>(A->mutable_cols());
-  m.x = reinterpret_cast<void*>(A->mutable_values());
-  m.z = nullptr;
-
-  if (A->storage_type() ==
-      CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR) {
-    m.stype = 1;
-  } else if (A->storage_type() ==
-             CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-    m.stype = -1;
-  } else {
-    m.stype = 0;
-  }
-
-  m.itype = CHOLMOD_INT;
-  m.xtype = CHOLMOD_REAL;
-  m.dtype = CHOLMOD_DOUBLE;
-  m.sorted = 1;
-  m.packed = 1;
-
-  return m;
-}
-
-cholmod_dense SuiteSparse::CreateDenseVectorView(const double* x, int size) {
-  cholmod_dense v;
-  v.nrow = size;
-  v.ncol = 1;
-  v.nzmax = size;
-  v.d = size;
-  v.x = const_cast<void*>(reinterpret_cast<const void*>(x));
-  v.xtype = CHOLMOD_REAL;
-  v.dtype = CHOLMOD_DOUBLE;
-  return v;
-}
-
-cholmod_dense* SuiteSparse::CreateDenseVector(const double* x,
-                                              int in_size,
-                                              int out_size) {
-  CHECK_LE(in_size, out_size);
-  cholmod_dense* v = cholmod_zeros(out_size, 1, CHOLMOD_REAL, &cc_);
-  if (x != nullptr) {
-    memcpy(v->x, x, in_size * sizeof(*x));
-  }
-  return v;
-}
-
-cholmod_factor* SuiteSparse::AnalyzeCholesky(cholmod_sparse* A,
-                                             OrderingType ordering_type,
-                                             std::string* message) {
-  cc_.nmethods = 1;
-  cc_.method[0].ordering = OrderingTypeToCHOLMODEnum(ordering_type);
-
-  // postordering with a NATURAL ordering leads to a significant regression in
-  // performance. See https://github.com/ceres-solver/ceres-solver/issues/905
-  if (ordering_type == OrderingType::NATURAL) {
-    cc_.postorder = 0;
-  }
-
-  cholmod_factor* factor = cholmod_analyze(A, &cc_);
-
-  if (cc_.status != CHOLMOD_OK) {
-    *message =
-        StringPrintf("cholmod_analyze failed. error code: %d", cc_.status);
-    return nullptr;
-  }
-
-  CHECK(factor != nullptr);
-  if (VLOG_IS_ON(2)) {
-    cholmod_print_common(const_cast<char*>("Symbolic Analysis"), &cc_);
-  }
-
-  return factor;
-}
-
-cholmod_factor* SuiteSparse::AnalyzeCholeskyWithGivenOrdering(
-    cholmod_sparse* A, const std::vector<int>& ordering, std::string* message) {
-  CHECK_EQ(ordering.size(), A->nrow);
-
-  cc_.nmethods = 1;
-  cc_.method[0].ordering = CHOLMOD_GIVEN;
-  cholmod_factor* factor =
-      cholmod_analyze_p(A, const_cast<int*>(ordering.data()), nullptr, 0, &cc_);
-
-  if (cc_.status != CHOLMOD_OK) {
-    *message =
-        StringPrintf("cholmod_analyze failed. error code: %d", cc_.status);
-    return nullptr;
-  }
-
-  CHECK(factor != nullptr);
-  if (VLOG_IS_ON(2)) {
-    cholmod_print_common(const_cast<char*>("Symbolic Analysis"), &cc_);
-  }
-
-  return factor;
-}
-
-bool SuiteSparse::BlockOrdering(const cholmod_sparse* A,
-                                OrderingType ordering_type,
-                                const std::vector<Block>& row_blocks,
-                                const std::vector<Block>& col_blocks,
-                                std::vector<int>* ordering) {
-  if (ordering_type == OrderingType::NATURAL) {
-    ordering->resize(A->nrow);
-    for (int i = 0; i < A->nrow; ++i) {
-      (*ordering)[i] = i;
-    }
-    return true;
-  }
-
-  const int num_row_blocks = row_blocks.size();
-  const int num_col_blocks = col_blocks.size();
-
-  // Arrays storing the compressed column structure of the matrix
-  // encoding the block sparsity of A.
-  std::vector<int> block_cols;
-  std::vector<int> block_rows;
-
-  CompressedColumnScalarMatrixToBlockMatrix(reinterpret_cast<const int*>(A->i),
-                                            reinterpret_cast<const int*>(A->p),
-                                            row_blocks,
-                                            col_blocks,
-                                            &block_rows,
-                                            &block_cols);
-  cholmod_sparse_struct block_matrix;
-  block_matrix.nrow = num_row_blocks;
-  block_matrix.ncol = num_col_blocks;
-  block_matrix.nzmax = block_rows.size();
-  block_matrix.p = reinterpret_cast<void*>(block_cols.data());
-  block_matrix.i = reinterpret_cast<void*>(block_rows.data());
-  block_matrix.x = nullptr;
-  block_matrix.stype = A->stype;
-  block_matrix.itype = CHOLMOD_INT;
-  block_matrix.xtype = CHOLMOD_PATTERN;
-  block_matrix.dtype = CHOLMOD_DOUBLE;
-  block_matrix.sorted = 1;
-  block_matrix.packed = 1;
-
-  std::vector<int> block_ordering(num_row_blocks);
-  if (!Ordering(&block_matrix, ordering_type, block_ordering.data())) {
-    return false;
-  }
-
-  BlockOrderingToScalarOrdering(row_blocks, block_ordering, ordering);
-  return true;
-}
-
-cholmod_factor* SuiteSparse::BlockAnalyzeCholesky(
-    cholmod_sparse* A,
-    OrderingType ordering_type,
-    const std::vector<Block>& row_blocks,
-    const std::vector<Block>& col_blocks,
-    std::string* message) {
-  std::vector<int> ordering;
-  if (!BlockOrdering(A, ordering_type, row_blocks, col_blocks, &ordering)) {
-    return nullptr;
-  }
-  return AnalyzeCholeskyWithGivenOrdering(A, ordering, message);
-}
-
-LinearSolverTerminationType SuiteSparse::Cholesky(cholmod_sparse* A,
-                                                  cholmod_factor* L,
-                                                  std::string* message) {
-  CHECK(A != nullptr);
-  CHECK(L != nullptr);
-
-  // Save the current print level and silence CHOLMOD, otherwise
-  // CHOLMOD is prone to dumping stuff to stderr, which can be
-  // distracting when the error (matrix is indefinite) is not a fatal
-  // failure.
-  const int old_print_level = cc_.print;
-  cc_.print = 0;
-
-  cc_.quick_return_if_not_posdef = 1;
-  int cholmod_status = cholmod_factorize(A, L, &cc_);
-  cc_.print = old_print_level;
-
-  switch (cc_.status) {
-    case CHOLMOD_NOT_INSTALLED:
-      *message = "CHOLMOD failure: Method not installed.";
-      return LinearSolverTerminationType::FATAL_ERROR;
-    case CHOLMOD_OUT_OF_MEMORY:
-      *message = "CHOLMOD failure: Out of memory.";
-      return LinearSolverTerminationType::FATAL_ERROR;
-    case CHOLMOD_TOO_LARGE:
-      *message = "CHOLMOD failure: Integer overflow occurred.";
-      return LinearSolverTerminationType::FATAL_ERROR;
-    case CHOLMOD_INVALID:
-      *message = "CHOLMOD failure: Invalid input.";
-      return LinearSolverTerminationType::FATAL_ERROR;
-    case CHOLMOD_NOT_POSDEF:
-      *message = "CHOLMOD warning: Matrix not positive definite.";
-      return LinearSolverTerminationType::FAILURE;
-    case CHOLMOD_DSMALL:
-      *message =
-          "CHOLMOD warning: D for LDL' or diag(L) or "
-          "LL' has tiny absolute value.";
-      return LinearSolverTerminationType::FAILURE;
-    case CHOLMOD_OK:
-      if (cholmod_status != 0) {
-        return LinearSolverTerminationType::SUCCESS;
-      }
-
-      *message =
-          "CHOLMOD failure: cholmod_factorize returned false "
-          "but cholmod_common::status is CHOLMOD_OK."
-          "Please report this to ceres-solver@googlegroups.com.";
-      return LinearSolverTerminationType::FATAL_ERROR;
-    default:
-      *message = StringPrintf(
-          "Unknown cholmod return code: %d. "
-          "Please report this to ceres-solver@googlegroups.com.",
-          cc_.status);
-      return LinearSolverTerminationType::FATAL_ERROR;
-  }
-
-  return LinearSolverTerminationType::FATAL_ERROR;
-}
-
-cholmod_dense* SuiteSparse::Solve(cholmod_factor* L,
-                                  cholmod_dense* b,
-                                  std::string* message) {
-  if (cc_.status != CHOLMOD_OK) {
-    *message = "cholmod_solve failed. CHOLMOD status is not CHOLMOD_OK";
-    return nullptr;
-  }
-
-  return cholmod_solve(CHOLMOD_A, L, b, &cc_);
-}
-
-bool SuiteSparse::Ordering(cholmod_sparse* matrix,
-                           OrderingType ordering_type,
-                           int* ordering) {
-  CHECK_NE(ordering_type, OrderingType::NATURAL);
-  if (ordering_type == OrderingType::AMD) {
-    return cholmod_amd(matrix, nullptr, 0, ordering, &cc_);
-  }
-
-#ifdef CERES_NO_CHOLMOD_PARTITION
-  return false;
-#else
-  std::vector<int> CParent(matrix->nrow, 0);
-  std::vector<int> CMember(matrix->nrow, 0);
-  return cholmod_nested_dissection(
-      matrix, nullptr, 0, ordering, CParent.data(), CMember.data(), &cc_);
-#endif
-}
-
-bool SuiteSparse::ConstrainedApproximateMinimumDegreeOrdering(
-    cholmod_sparse* matrix, int* constraints, int* ordering) {
-  return cholmod_camd(matrix, nullptr, 0, constraints, ordering, &cc_);
-}
-
-bool SuiteSparse::IsNestedDissectionAvailable() {
-#ifdef CERES_NO_CHOLMOD_PARTITION
-  return false;
-#else
-  return true;
-#endif
-}
-
-std::unique_ptr<SparseCholesky> SuiteSparseCholesky::Create(
-    const OrderingType ordering_type) {
-  return std::unique_ptr<SparseCholesky>(
-      new SuiteSparseCholesky(ordering_type));
-}
-
-SuiteSparseCholesky::SuiteSparseCholesky(const OrderingType ordering_type)
-    : ordering_type_(ordering_type), factor_(nullptr) {}
-
-SuiteSparseCholesky::~SuiteSparseCholesky() {
-  if (factor_ != nullptr) {
-    ss_.Free(factor_);
-  }
-}
-
-LinearSolverTerminationType SuiteSparseCholesky::Factorize(
-    CompressedRowSparseMatrix* lhs, std::string* message) {
-  if (lhs == nullptr) {
-    *message = "Failure: Input lhs is nullptr.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-
-  cholmod_sparse cholmod_lhs = ss_.CreateSparseMatrixTransposeView(lhs);
-
-  // If a factorization does not exist, compute the symbolic
-  // factorization first.
-  //
-  // If the ordering type is NATURAL, then there is no fill reducing
-  // ordering to be computed, regardless of block structure, so we can
-  // just call the scalar version of symbolic factorization. For
-  // SuiteSparse this is the common case since we have already
-  // pre-ordered the columns of the Jacobian.
-  //
-  // Similarly regardless of ordering type, if there is no block
-  // structure in the matrix we call the scalar version of symbolic
-  // factorization.
-  if (factor_ == nullptr) {
-    if (ordering_type_ == OrderingType::NATURAL ||
-        (lhs->col_blocks().empty() || lhs->row_blocks().empty())) {
-      factor_ = ss_.AnalyzeCholesky(&cholmod_lhs, ordering_type_, message);
-    } else {
-      factor_ = ss_.BlockAnalyzeCholesky(&cholmod_lhs,
-                                         ordering_type_,
-                                         lhs->col_blocks(),
-                                         lhs->row_blocks(),
-                                         message);
-    }
-  }
-
-  if (factor_ == nullptr) {
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-
-  // Compute and return the numeric factorization.
-  return ss_.Cholesky(&cholmod_lhs, factor_, message);
-}
-
-CompressedRowSparseMatrix::StorageType SuiteSparseCholesky::StorageType()
-    const {
-  return ((ordering_type_ == OrderingType::NATURAL)
-              ? CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR
-              : CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR);
-}
-
-LinearSolverTerminationType SuiteSparseCholesky::Solve(const double* rhs,
-                                                       double* solution,
-                                                       std::string* message) {
-  // Error checking
-  if (factor_ == nullptr) {
-    *message = "Solve called without a call to Factorize first.";
-    return LinearSolverTerminationType::FATAL_ERROR;
-  }
-
-  const int num_cols = factor_->n;
-  cholmod_dense cholmod_rhs = ss_.CreateDenseVectorView(rhs, num_cols);
-  cholmod_dense* cholmod_dense_solution =
-      ss_.Solve(factor_, &cholmod_rhs, message);
-
-  if (cholmod_dense_solution == nullptr) {
-    return LinearSolverTerminationType::FAILURE;
-  }
-
-  memcpy(solution, cholmod_dense_solution->x, num_cols * sizeof(*solution));
-  ss_.Free(cholmod_dense_solution);
-  return LinearSolverTerminationType::SUCCESS;
-}
-
-}  // namespace ceres::internal
-
-#endif  // CERES_NO_SUITESPARSE
diff --git a/third_party/ceres/internal/ceres/suitesparse.h b/third_party/ceres/internal/ceres/suitesparse.h
deleted file mode 100644
index 703ee87..0000000
--- a/third_party/ceres/internal/ceres/suitesparse.h
+++ /dev/null
@@ -1,299 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// A simple C++ interface to the SuiteSparse and CHOLMOD libraries.
-
-#ifndef CERES_INTERNAL_SUITESPARSE_H_
-#define CERES_INTERNAL_SUITESPARSE_H_
-
-// This include must come before any #ifndef check on Ceres compile options.
-#include "ceres/internal/config.h"
-
-#ifndef CERES_NO_SUITESPARSE
-
-#include <cstring>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "SuiteSparseQR.hpp"
-#include "ceres/block_structure.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/linear_solver.h"
-#include "ceres/sparse_cholesky.h"
-#include "cholmod.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-class CompressedRowSparseMatrix;
-class TripletSparseMatrix;
-
-// The raw CHOLMOD and SuiteSparseQR libraries have a slightly
-// cumbersome c like calling format. This object abstracts it away and
-// provides the user with a simpler interface. The methods here cannot
-// be static as a cholmod_common object serves as a global variable
-// for all cholmod function calls.
-class CERES_NO_EXPORT SuiteSparse {
- public:
-  SuiteSparse();
-  ~SuiteSparse();
-
-  // Functions for building cholmod_sparse objects from sparse
-  // matrices stored in triplet form. The matrix A is not
-  // modified. Called owns the result.
-  cholmod_sparse* CreateSparseMatrix(TripletSparseMatrix* A);
-
-  // This function works like CreateSparseMatrix, except that the
-  // return value corresponds to A' rather than A.
-  cholmod_sparse* CreateSparseMatrixTranspose(TripletSparseMatrix* A);
-
-  // Create a cholmod_sparse wrapper around the contents of A. This is
-  // a shallow object, which refers to the contents of A and does not
-  // use the SuiteSparse machinery to allocate memory.
-  cholmod_sparse CreateSparseMatrixTransposeView(CompressedRowSparseMatrix* A);
-
-  // Create a cholmod_dense vector around the contents of the array x.
-  // This is a shallow object, which refers to the contents of x and
-  // does not use the SuiteSparse machinery to allocate memory.
-  cholmod_dense CreateDenseVectorView(const double* x, int size);
-
-  // Given a vector x, build a cholmod_dense vector of size out_size
-  // with the first in_size entries copied from x. If x is nullptr, then
-  // an all zeros vector is returned. Caller owns the result.
-  cholmod_dense* CreateDenseVector(const double* x, int in_size, int out_size);
-
-  // The matrix A is scaled using the matrix whose diagonal is the
-  // vector scale. mode describes how scaling is applied. Possible
-  // values are CHOLMOD_ROW for row scaling - diag(scale) * A,
-  // CHOLMOD_COL for column scaling - A * diag(scale) and CHOLMOD_SYM
-  // for symmetric scaling which scales both the rows and the columns
-  // - diag(scale) * A * diag(scale).
-  void Scale(cholmod_dense* scale, int mode, cholmod_sparse* A) {
-    cholmod_scale(scale, mode, A, &cc_);
-  }
-
-  // Create and return a matrix m = A * A'. Caller owns the
-  // result. The matrix A is not modified.
-  cholmod_sparse* AATranspose(cholmod_sparse* A) {
-    cholmod_sparse* m = cholmod_aat(A, nullptr, A->nrow, 1, &cc_);
-    m->stype = 1;  // Pay attention to the upper triangular part.
-    return m;
-  }
-
-  // y = alpha * A * x + beta * y. Only y is modified.
-  void SparseDenseMultiply(cholmod_sparse* A,
-                           double alpha,
-                           double beta,
-                           cholmod_dense* x,
-                           cholmod_dense* y) {
-    double alpha_[2] = {alpha, 0};
-    double beta_[2] = {beta, 0};
-    cholmod_sdmult(A, 0, alpha_, beta_, x, y, &cc_);
-  }
-
-  // Compute a symbolic factorization for A or AA' (if A is
-  // unsymmetric). If ordering_type is NATURAL, then no fill reducing
-  // ordering is computed, otherwise depending on the value of
-  // ordering_type AMD or Nested Dissection is used to compute a fill
-  // reducing ordering before the symbolic factorization is computed.
-  //
-  // A is not modified, only the pattern of non-zeros of A is used,
-  // the actual numerical values in A are of no consequence.
-  //
-  // message contains an explanation of the failures if any.
-  //
-  // Caller owns the result.
-  cholmod_factor* AnalyzeCholesky(cholmod_sparse* A,
-                                  OrderingType ordering_type,
-                                  std::string* message);
-
-  // Block oriented version of AnalyzeCholesky.
-  cholmod_factor* BlockAnalyzeCholesky(cholmod_sparse* A,
-                                       OrderingType ordering_type,
-                                       const std::vector<Block>& row_blocks,
-                                       const std::vector<Block>& col_blocks,
-                                       std::string* message);
-
-  // If A is symmetric, then compute the symbolic Cholesky
-  // factorization of A(ordering, ordering). If A is unsymmetric, then
-  // compute the symbolic factorization of
-  // A(ordering,:) A(ordering,:)'.
-  //
-  // A is not modified, only the pattern of non-zeros of A is used,
-  // the actual numerical values in A are of no consequence.
-  //
-  // message contains an explanation of the failures if any.
-  //
-  // Caller owns the result.
-  cholmod_factor* AnalyzeCholeskyWithGivenOrdering(
-      cholmod_sparse* A,
-      const std::vector<int>& ordering,
-      std::string* message);
-
-  // Use the symbolic factorization in L, to find the numerical
-  // factorization for the matrix A or AA^T. Return true if
-  // successful, false otherwise. L contains the numeric factorization
-  // on return.
-  //
-  // message contains an explanation of the failures if any.
-  LinearSolverTerminationType Cholesky(cholmod_sparse* A,
-                                       cholmod_factor* L,
-                                       std::string* message);
-
-  // Given a Cholesky factorization of a matrix A = LL^T, solve the
-  // linear system Ax = b, and return the result. If the Solve fails
-  // nullptr is returned. Caller owns the result.
-  //
-  // message contains an explanation of the failures if any.
-  cholmod_dense* Solve(cholmod_factor* L,
-                       cholmod_dense* b,
-                       std::string* message);
-
-  // Find a fill reducing ordering. ordering is expected to be large
-  // enough to hold the ordering. ordering_type must be AMD or NESDIS.
-  bool Ordering(cholmod_sparse* matrix,
-                OrderingType ordering_type,
-                int* ordering);
-
-  // Find the block oriented fill reducing ordering of a matrix A,
-  // whose row and column blocks are given by row_blocks, and
-  // col_blocks respectively. The matrix may or may not be
-  // symmetric. The entries of col_blocks do not need to sum to the
-  // number of columns in A. If this is the case, only the first
-  // sum(col_blocks) are used to compute the ordering.
-  //
-  // By virtue of the modeling layer in Ceres being block oriented,
-  // all the matrices used by Ceres are also block oriented. When
-  // doing sparse direct factorization of these matrices the
-  // fill-reducing ordering algorithms can either be run on the block
-  // or the scalar form of these matrices. But since the underlying
-  // matrices are block oriented, it is worth running the fill
-  // reducing ordering on just the block structure of these matrices
-  // and then lifting these block orderings to a full scalar
-  // ordering. This preserves the block structure of the permuted
-  // matrix, and exposes more of the super-nodal structure of the
-  // matrix to the numerical factorization routines.
-  bool BlockOrdering(const cholmod_sparse* A,
-                     OrderingType ordering_type,
-                     const std::vector<Block>& row_blocks,
-                     const std::vector<Block>& col_blocks,
-                     std::vector<int>* ordering);
-
-  // Nested dissection is only available if SuiteSparse is compiled
-  // with Metis support.
-  static bool IsNestedDissectionAvailable();
-
-  // Find a fill reducing approximate minimum degree
-  // ordering. constraints is an array which associates with each
-  // column of the matrix an elimination group. i.e., all columns in
-  // group 0 are eliminated first, all columns in group 1 are
-  // eliminated next etc. This function finds a fill reducing ordering
-  // that obeys these constraints.
-  //
-  // Calling ApproximateMinimumDegreeOrdering is equivalent to calling
-  // ConstrainedApproximateMinimumDegreeOrdering with a constraint
-  // array that puts all columns in the same elimination group.
-  bool ConstrainedApproximateMinimumDegreeOrdering(cholmod_sparse* matrix,
-                                                   int* constraints,
-                                                   int* ordering);
-
-  void Free(cholmod_sparse* m) { cholmod_free_sparse(&m, &cc_); }
-  void Free(cholmod_dense* m) { cholmod_free_dense(&m, &cc_); }
-  void Free(cholmod_factor* m) { cholmod_free_factor(&m, &cc_); }
-
-  void Print(cholmod_sparse* m, const std::string& name) {
-    cholmod_print_sparse(m, const_cast<char*>(name.c_str()), &cc_);
-  }
-
-  void Print(cholmod_dense* m, const std::string& name) {
-    cholmod_print_dense(m, const_cast<char*>(name.c_str()), &cc_);
-  }
-
-  void Print(cholmod_triplet* m, const std::string& name) {
-    cholmod_print_triplet(m, const_cast<char*>(name.c_str()), &cc_);
-  }
-
-  cholmod_common* mutable_cc() { return &cc_; }
-
- private:
-  cholmod_common cc_;
-};
-
-class CERES_NO_EXPORT SuiteSparseCholesky final : public SparseCholesky {
- public:
-  static std::unique_ptr<SparseCholesky> Create(OrderingType ordering_type);
-
-  // SparseCholesky interface.
-  ~SuiteSparseCholesky() override;
-  CompressedRowSparseMatrix::StorageType StorageType() const final;
-  LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
-                                        std::string* message) final;
-  LinearSolverTerminationType Solve(const double* rhs,
-                                    double* solution,
-                                    std::string* message) final;
-
- private:
-  explicit SuiteSparseCholesky(const OrderingType ordering_type);
-
-  const OrderingType ordering_type_;
-  SuiteSparse ss_;
-  cholmod_factor* factor_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#else  // CERES_NO_SUITESPARSE
-
-using cholmod_factor = void;
-
-#include "ceres/internal/disable_warnings.h"
-
-namespace ceres {
-namespace internal {
-
-class CERES_NO_EXPORT SuiteSparse {
- public:
-  // Nested dissection is only available if SuiteSparse is compiled
-  // with Metis support.
-  static bool IsNestedDissectionAvailable() { return false; }
-  void Free(void* /*arg*/) {}
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_NO_SUITESPARSE
-
-#endif  // CERES_INTERNAL_SUITESPARSE_H_
diff --git a/third_party/ceres/internal/ceres/system_test.cc b/third_party/ceres/internal/ceres/system_test.cc
deleted file mode 100644
index 6134995..0000000
--- a/third_party/ceres/internal/ceres/system_test.cc
+++ /dev/null
@@ -1,211 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// End-to-end tests for Ceres using Powell's function.
-
-#include <cmath>
-#include <cstdlib>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/internal/config.h"
-#include "ceres/problem.h"
-#include "ceres/solver.h"
-#include "ceres/test_util.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// This class implements the SystemTestProblem interface and provides
-// access to an implementation of Powell's singular function.
-//
-//   F = 1/2 (f1^2 + f2^2 + f3^2 + f4^2)
-//
-//   f1 = x1 + 10*x2;
-//   f2 = sqrt(5) * (x3 - x4)
-//   f3 = (x2 - 2*x3)^2
-//   f4 = sqrt(10) * (x1 - x4)^2
-//
-// The starting values are x1 = 3, x2 = -1, x3 = 0, x4 = 1.
-// The minimum is 0 at (x1, x2, x3, x4) = 0.
-//
-// From: Testing Unconstrained Optimization Software by Jorge J. More, Burton S.
-// Garbow and Kenneth E. Hillstrom in ACM Transactions on Mathematical Software,
-// Vol 7(1), March 1981.
-class PowellsFunction {
- public:
-  PowellsFunction() {
-    x_[0] = 3.0;
-    x_[1] = -1.0;
-    x_[2] = 0.0;
-    x_[3] = 1.0;
-
-    problem_.AddResidualBlock(
-        new AutoDiffCostFunction<F1, 1, 1, 1>(new F1), nullptr, &x_[0], &x_[1]);
-    problem_.AddResidualBlock(
-        new AutoDiffCostFunction<F2, 1, 1, 1>(new F2), nullptr, &x_[2], &x_[3]);
-    problem_.AddResidualBlock(
-        new AutoDiffCostFunction<F3, 1, 1, 1>(new F3), nullptr, &x_[1], &x_[2]);
-    problem_.AddResidualBlock(
-        new AutoDiffCostFunction<F4, 1, 1, 1>(new F4), nullptr, &x_[0], &x_[3]);
-
-    // Settings for the reference solution.
-    options_.linear_solver_type = ceres::DENSE_QR;
-    options_.max_num_iterations = 10;
-    options_.num_threads = 1;
-  }
-
-  Problem* mutable_problem() { return &problem_; }
-  Solver::Options* mutable_solver_options() { return &options_; }
-
-  static double kResidualTolerance;
-
- private:
-  // Templated functions used for automatically differentiated cost
-  // functions.
-  class F1 {
-   public:
-    template <typename T>
-    bool operator()(const T* const x1, const T* const x2, T* residual) const {
-      // f1 = x1 + 10 * x2;
-      *residual = x1[0] + 10.0 * x2[0];
-      return true;
-    }
-  };
-
-  class F2 {
-   public:
-    template <typename T>
-    bool operator()(const T* const x3, const T* const x4, T* residual) const {
-      // f2 = sqrt(5) (x3 - x4)
-      *residual = sqrt(5.0) * (x3[0] - x4[0]);
-      return true;
-    }
-  };
-
-  class F3 {
-   public:
-    template <typename T>
-    bool operator()(const T* const x2, const T* const x3, T* residual) const {
-      // f3 = (x2 - 2 x3)^2
-      residual[0] = (x2[0] - 2.0 * x3[0]) * (x2[0] - 2.0 * x3[0]);
-      return true;
-    }
-  };
-
-  class F4 {
-   public:
-    template <typename T>
-    bool operator()(const T* const x1, const T* const x4, T* residual) const {
-      // f4 = sqrt(10) (x1 - x4)^2
-      residual[0] = sqrt(10.0) * (x1[0] - x4[0]) * (x1[0] - x4[0]);
-      return true;
-    }
-  };
-
-  double x_[4];
-  Problem problem_;
-  Solver::Options options_;
-};
-
-double PowellsFunction::kResidualTolerance = 1e-8;
-
-using PowellTest = SystemTest<PowellsFunction>;
-
-TEST_F(PowellTest, DenseQR) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = DENSE_QR;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-
-TEST_F(PowellTest, DenseNormalCholesky) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = DENSE_NORMAL_CHOLESKY;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-
-TEST_F(PowellTest, DenseSchur) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = DENSE_SCHUR;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-
-TEST_F(PowellTest, IterativeSchurWithJacobi) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = ITERATIVE_SCHUR;
-  options->sparse_linear_algebra_library_type = NO_SPARSE;
-  options->preconditioner_type = JACOBI;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-
-#ifndef CERES_NO_SUITESPARSE
-TEST_F(PowellTest, SparseNormalCholeskyUsingSuiteSparse) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-#endif  // CERES_NO_SUITESPARSE
-
-#ifndef CERES_NO_ACCELERATE_SPARSE
-TEST_F(PowellTest, SparseNormalCholeskyUsingAccelerateSparse) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->sparse_linear_algebra_library_type = ACCELERATE_SPARSE;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-#endif  // CERES_NO_ACCELERATE_SPARSE
-
-#ifdef CERES_USE_EIGEN_SPARSE
-TEST_F(PowellTest, SparseNormalCholeskyUsingEigenSparse) {
-  PowellsFunction powells_function;
-  Solver::Options* options = powells_function.mutable_solver_options();
-  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  RunSolverForConfigAndExpectResidualsMatch(*options,
-                                            powells_function.mutable_problem());
-}
-#endif  // CERES_USE_EIGEN_SPARSE
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/test_util.cc b/third_party/ceres/internal/ceres/test_util.cc
deleted file mode 100644
index 25888a9..0000000
--- a/third_party/ceres/internal/ceres/test_util.cc
+++ /dev/null
@@ -1,153 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Utility functions useful for testing.
-
-#include "ceres/test_util.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "ceres/file.h"
-#include "ceres/internal/port.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-DECLARE_string(test_srcdir);
-
-// This macro is used to inject additional path information specific
-// to the build system.
-
-#ifndef CERES_TEST_SRCDIR_SUFFIX
-#define CERES_TEST_SRCDIR_SUFFIX ""
-#endif
-
-namespace ceres {
-namespace internal {
-
-bool ExpectClose(double x, double y, double max_abs_relative_difference) {
-  if (std::isinf(x) && std::isinf(y)) {
-    EXPECT_EQ(std::signbit(x), std::signbit(y));
-    return true;
-  }
-
-  if (std::isnan(x) && std::isnan(y)) {
-    return true;
-  }
-
-  double absolute_difference = fabs(x - y);
-  double relative_difference = absolute_difference / std::max(fabs(x), fabs(y));
-  if (x == 0 || y == 0) {
-    // If x or y is exactly zero, then relative difference doesn't have any
-    // meaning. Take the absolute difference instead.
-    relative_difference = absolute_difference;
-  }
-  if (relative_difference > max_abs_relative_difference) {
-    VLOG(1) << StringPrintf("x=%17g y=%17g abs=%17g rel=%17g",
-                            x,
-                            y,
-                            absolute_difference,
-                            relative_difference);
-  }
-
-  EXPECT_NEAR(relative_difference, 0.0, max_abs_relative_difference);
-  return relative_difference <= max_abs_relative_difference;
-}
-
-void ExpectArraysCloseUptoScale(int n,
-                                const double* p,
-                                const double* q,
-                                double tol) {
-  CHECK_GT(n, 0);
-  CHECK(p);
-  CHECK(q);
-
-  double p_max = 0;
-  double q_max = 0;
-  int p_i = 0;
-  int q_i = 0;
-
-  for (int i = 0; i < n; ++i) {
-    if (std::abs(p[i]) > p_max) {
-      p_max = std::abs(p[i]);
-      p_i = i;
-    }
-    if (std::abs(q[i]) > q_max) {
-      q_max = std::abs(q[i]);
-      q_i = i;
-    }
-  }
-
-  // If both arrays are all zeros, they are equal up to scale, but
-  // for testing purposes, that's more likely to be an error than
-  // a desired result.
-  CHECK_NE(p_max, 0.0);
-  CHECK_NE(q_max, 0.0);
-
-  for (int i = 0; i < n; ++i) {
-    double p_norm = p[i] / p[p_i];
-    double q_norm = q[i] / q[q_i];
-
-    EXPECT_NEAR(p_norm, q_norm, tol) << "i=" << i;
-  }
-}
-
-void ExpectArraysClose(int n, const double* p, const double* q, double tol) {
-  CHECK_GT(n, 0);
-  CHECK(p);
-  CHECK(q);
-
-  for (int i = 0; i < n; ++i) {
-    EXPECT_TRUE(ExpectClose(p[i], q[i], tol)) << "p[" << i << "]" << p[i] << " "
-                                              << "q[" << i << "]" << q[i] << " "
-                                              << "tol: " << tol;
-  }
-}
-
-std::string TestFileAbsolutePath(const std::string& filename) {
-  return JoinPath(CERES_GET_FLAG(FLAGS_test_srcdir) + CERES_TEST_SRCDIR_SUFFIX,
-                  filename);
-}
-
-std::string ToString(const Solver::Options& options) {
-  return StringPrintf("(%s, %s, %s, %s, %d)",
-                      LinearSolverTypeToString(options.linear_solver_type),
-                      SparseLinearAlgebraLibraryTypeToString(
-                          options.sparse_linear_algebra_library_type),
-                      options.linear_solver_ordering ? "USER" : "AUTOMATIC",
-                      PreconditionerTypeToString(options.preconditioner_type),
-                      options.num_threads);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/test_util.h b/third_party/ceres/internal/ceres/test_util.h
deleted file mode 100644
index 95aaa55..0000000
--- a/third_party/ceres/internal/ceres/test_util.h
+++ /dev/null
@@ -1,134 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_TEST_UTIL_H_
-#define CERES_INTERNAL_TEST_UTIL_H_
-
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/problem.h"
-#include "ceres/solver.h"
-#include "ceres/stringprintf.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-// Expects that x and y have a relative difference of no more than
-// max_abs_relative_difference. If either x or y is zero, then the relative
-// difference is interpreted as an absolute difference.
-// If x and y have the same non-finite value (inf or nan) we treat them as being
-// close. In such a case no error is thrown and true is returned.
-CERES_NO_EXPORT bool ExpectClose(double x,
-                                 double y,
-                                 double max_abs_relative_difference);
-
-// Expects that for all i = 1,.., n - 1
-//
-//   |p[i] - q[i]| / max(|p[i]|, |q[i]|) < tolerance
-CERES_NO_EXPORT void ExpectArraysClose(int n,
-                                       const double* p,
-                                       const double* q,
-                                       double tolerance);
-
-// Expects that for all i = 1,.., n - 1
-//
-//   |p[i] / max_norm_p - q[i] / max_norm_q| < tolerance
-//
-// where max_norm_p and max_norm_q are the max norms of the arrays p
-// and q respectively.
-CERES_NO_EXPORT void ExpectArraysCloseUptoScale(int n,
-                                                const double* p,
-                                                const double* q,
-                                                double tolerance);
-
-// Construct a fully qualified path for the test file depending on the
-// local build/testing environment.
-CERES_NO_EXPORT std::string TestFileAbsolutePath(const std::string& filename);
-
-CERES_NO_EXPORT std::string ToString(const Solver::Options& options);
-
-// A templated test fixture, that is used for testing Ceres end to end
-// by computing a solution to the problem for a given solver
-// configuration and comparing it to a reference solver configuration.
-//
-// It is assumed that the SystemTestProblem has an Solver::Options
-// struct that contains the reference Solver configuration.
-template <typename SystemTestProblem>
-class CERES_NO_EXPORT SystemTest : public ::testing::Test {
- protected:
-  void SetUp() final {
-    SystemTestProblem system_test_problem;
-    SolveAndEvaluateFinalResiduals(
-        *system_test_problem.mutable_solver_options(),
-        system_test_problem.mutable_problem(),
-        &expected_final_residuals_);
-  }
-
-  void RunSolverForConfigAndExpectResidualsMatch(const Solver::Options& options,
-                                                 Problem* problem) {
-    std::vector<double> final_residuals;
-    SolveAndEvaluateFinalResiduals(options, problem, &final_residuals);
-
-    // We compare solutions by comparing their residual vectors. We do
-    // not compare parameter vectors because it is much more brittle
-    // and error prone to do so, since the same problem can have
-    // nearly the same residuals at two completely different positions
-    // in parameter space.
-    CHECK_EQ(expected_final_residuals_.size(), final_residuals.size());
-    for (int i = 0; i < final_residuals.size(); ++i) {
-      EXPECT_NEAR(final_residuals[i],
-                  expected_final_residuals_[i],
-                  SystemTestProblem::kResidualTolerance)
-          << "Not close enough residual:" << i;
-    }
-  }
-
-  void SolveAndEvaluateFinalResiduals(const Solver::Options& options,
-                                      Problem* problem,
-                                      std::vector<double>* final_residuals) {
-    Solver::Summary summary;
-    Solve(options, problem, &summary);
-    CHECK_NE(summary.termination_type, ceres::FAILURE);
-    problem->Evaluate(
-        Problem::EvaluateOptions(), nullptr, final_residuals, nullptr, nullptr);
-  }
-
-  std::vector<double> expected_final_residuals_;
-};
-
-}  // namespace internal
-}  // namespace ceres
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_TEST_UTIL_H_
diff --git a/third_party/ceres/internal/ceres/thread_pool.cc b/third_party/ceres/internal/ceres/thread_pool.cc
deleted file mode 100644
index 1ce9ac8..0000000
--- a/third_party/ceres/internal/ceres/thread_pool.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/thread_pool.h"
-
-#include <cmath>
-#include <limits>
-
-#include "ceres/internal/config.h"
-
-namespace ceres::internal {
-namespace {
-
-// Constrain the total number of threads to the amount the hardware can support.
-int GetNumAllowedThreads(int requested_num_threads) {
-  return std::min(requested_num_threads, ThreadPool::MaxNumThreadsAvailable());
-}
-
-}  // namespace
-
-int ThreadPool::MaxNumThreadsAvailable() {
-  const int num_hardware_threads = std::thread::hardware_concurrency();
-  // hardware_concurrency() can return 0 if the value is not well defined or not
-  // computable.
-  return num_hardware_threads == 0 ? std::numeric_limits<int>::max()
-                                   : num_hardware_threads;
-}
-
-ThreadPool::ThreadPool() = default;
-
-ThreadPool::ThreadPool(int num_threads) { Resize(num_threads); }
-
-ThreadPool::~ThreadPool() {
-  std::lock_guard<std::mutex> lock(thread_pool_mutex_);
-  // Signal the thread workers to stop and wait for them to finish all scheduled
-  // tasks.
-  Stop();
-  for (std::thread& thread : thread_pool_) {
-    thread.join();
-  }
-}
-
-void ThreadPool::Resize(int num_threads) {
-  std::lock_guard<std::mutex> lock(thread_pool_mutex_);
-
-  const int num_current_threads = thread_pool_.size();
-  if (num_current_threads >= num_threads) {
-    return;
-  }
-
-  const int create_num_threads =
-      GetNumAllowedThreads(num_threads) - num_current_threads;
-
-  for (int i = 0; i < create_num_threads; ++i) {
-    thread_pool_.emplace_back(&ThreadPool::ThreadMainLoop, this);
-  }
-}
-
-void ThreadPool::AddTask(const std::function<void()>& func) {
-  task_queue_.Push(func);
-}
-
-int ThreadPool::Size() {
-  std::lock_guard<std::mutex> lock(thread_pool_mutex_);
-  return thread_pool_.size();
-}
-
-void ThreadPool::ThreadMainLoop() {
-  std::function<void()> task;
-  while (task_queue_.Wait(&task)) {
-    task();
-  }
-}
-
-void ThreadPool::Stop() { task_queue_.StopWaiters(); }
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/thread_pool.h b/third_party/ceres/internal/ceres/thread_pool.h
deleted file mode 100644
index 8c8f06f..0000000
--- a/third_party/ceres/internal/ceres/thread_pool.h
+++ /dev/null
@@ -1,119 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#ifndef CERES_INTERNAL_THREAD_POOL_H_
-#define CERES_INTERNAL_THREAD_POOL_H_
-
-#include <functional>
-#include <mutex>
-#include <thread>
-#include <vector>
-
-#include "ceres/concurrent_queue.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// A thread-safe thread pool with an unbounded task queue and a resizable number
-// of workers.  The size of the thread pool can be increased but never decreased
-// in order to support the largest number of threads requested.  The ThreadPool
-// has three states:
-//
-//  (1) The thread pool size is zero.  Tasks may be added to the thread pool via
-//  AddTask but they will not be executed until the thread pool is resized.
-//
-//  (2) The thread pool size is greater than zero.  Tasks may be added to the
-//  thread pool and will be executed as soon as a worker is available.  The
-//  thread pool may be resized while the thread pool is running.
-//
-//  (3) The thread pool is destructing.  The thread pool will signal all the
-//  workers to stop.  The workers will finish all of the tasks that have already
-//  been added to the thread pool.
-//
-class CERES_NO_EXPORT ThreadPool {
- public:
-  // Returns the maximum number of hardware threads.
-  static int MaxNumThreadsAvailable();
-
-  // Default constructor with no active threads.  We allow instantiating a
-  // thread pool with no threads to support the use case of single threaded
-  // Ceres where everything will be executed on the main thread. For single
-  // threaded execution this has two benefits: avoid any overhead as threads
-  // are expensive to create, and no unused threads shown in the debugger.
-  ThreadPool();
-
-  // Instantiates a thread pool with min(MaxNumThreadsAvailable, num_threads)
-  // number of threads.
-  explicit ThreadPool(int num_threads);
-
-  // Signals the workers to stop and waits for them to finish any tasks that
-  // have been scheduled.
-  ~ThreadPool();
-
-  // Resizes the thread pool if it is currently less than the requested number
-  // of threads.  The thread pool will be resized to min(MaxNumThreadsAvailable,
-  // num_threads) number of threads.  Resize does not support reducing the
-  // thread pool size.  If a smaller number of threads is requested, the thread
-  // pool remains the same size.  The thread pool is reused within Ceres with
-  // different number of threads, and we need to ensure we can support the
-  // largest number of threads requested.  It is safe to resize the thread pool
-  // while the workers are executing tasks, and the resizing is guaranteed to
-  // complete upon return.
-  void Resize(int num_threads);
-
-  // Adds a task to the queue and wakes up a blocked thread.  If the thread pool
-  // size is greater than zero, then the task will be executed by a currently
-  // idle thread or when a thread becomes available.  If the thread pool has no
-  // threads, then the task will never be executed and the user should use
-  // Resize() to create a non-empty thread pool.
-  void AddTask(const std::function<void()>& func);
-
-  // Returns the current size of the thread pool.
-  int Size();
-
- private:
-  // Main loop for the threads which blocks on the task queue until work becomes
-  // available.  It will return if and only if Stop has been called.
-  void ThreadMainLoop();
-
-  // Signal all the threads to stop.  It does not block until the threads are
-  // finished.
-  void Stop();
-
-  // The queue that stores the units of work available for the thread pool.  The
-  // task queue maintains its own thread safety.
-  ConcurrentQueue<std::function<void()>> task_queue_;
-  std::vector<std::thread> thread_pool_;
-  std::mutex thread_pool_mutex_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_THREAD_POOL_H_
diff --git a/third_party/ceres/internal/ceres/thread_pool_test.cc b/third_party/ceres/internal/ceres/thread_pool_test.cc
deleted file mode 100644
index fa321b0..0000000
--- a/third_party/ceres/internal/ceres/thread_pool_test.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vitus@google.com (Michael Vitus)
-
-#include "ceres/thread_pool.h"
-
-#include <chrono>
-#include <condition_variable>
-#include <mutex>
-#include <thread>
-
-#include "ceres/internal/config.h"
-#include "glog/logging.h"
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Adds a number of tasks to the thread pool and ensures they all run.
-TEST(ThreadPool, AddTask) {
-  int value = 0;
-  const int num_tasks = 100;
-  {
-    ThreadPool thread_pool(2);
-
-    std::condition_variable condition;
-    std::mutex mutex;
-
-    for (int i = 0; i < num_tasks; ++i) {
-      thread_pool.AddTask([&]() {
-        std::lock_guard<std::mutex> lock(mutex);
-        ++value;
-        condition.notify_all();
-      });
-    }
-
-    std::unique_lock<std::mutex> lock(mutex);
-    condition.wait(lock, [&]() { return value == num_tasks; });
-  }
-
-  EXPECT_EQ(num_tasks, value);
-}
-
-// Adds a number of tasks to the queue and resizes the thread pool while the
-// threads are executing their work.
-TEST(ThreadPool, ResizingDuringExecution) {
-  int value = 0;
-
-  const int num_tasks = 100;
-
-  // Run this test in a scope to delete the thread pool and all of the threads
-  // are stopped.
-  {
-    ThreadPool thread_pool(/*num_threads=*/2);
-
-    std::condition_variable condition;
-    std::mutex mutex;
-
-    // Acquire a lock on the mutex to prevent the threads from finishing their
-    // execution so we can test resizing the thread pool while the workers are
-    // executing a task.
-    std::unique_lock<std::mutex> lock(mutex);
-
-    // The same task for all of the workers to execute.
-    auto task = [&]() {
-      // This will block until the mutex is released inside the condition
-      // variable.
-      std::lock_guard<std::mutex> lock(mutex);
-      ++value;
-      condition.notify_all();
-    };
-
-    // Add the initial set of tasks to run.
-    for (int i = 0; i < num_tasks / 2; ++i) {
-      thread_pool.AddTask(task);
-    }
-
-    // Resize the thread pool while tasks are executing.
-    thread_pool.Resize(/*num_threads=*/3);
-
-    // Add more tasks to the thread pool to guarantee these are also completed.
-    for (int i = 0; i < num_tasks / 2; ++i) {
-      thread_pool.AddTask(task);
-    }
-
-    // Unlock the mutex to unblock all of the threads and wait until all of the
-    // tasks are completed.
-    condition.wait(lock, [&]() { return value == num_tasks; });
-  }
-
-  EXPECT_EQ(num_tasks, value);
-}
-
-// Tests the destructor will wait until all running tasks are finished before
-// destructing the thread pool.
-TEST(ThreadPool, Destructor) {
-  // Ensure the hardware supports more than 1 thread to ensure the test will
-  // pass.
-  const int num_hardware_threads = std::thread::hardware_concurrency();
-  if (num_hardware_threads <= 1) {
-    LOG(ERROR)
-        << "Test not supported, the hardware does not support threading.";
-    return;
-  }
-
-  std::condition_variable condition;
-  std::mutex mutex;
-  // Lock the mutex to ensure the tasks are blocked.
-  std::unique_lock<std::mutex> master_lock(mutex);
-  int value = 0;
-
-  // Create a thread that will instantiate and delete the thread pool.  This is
-  // required because we need to block on the thread pool being deleted and
-  // signal the tasks to finish.
-  std::thread thread([&]() {
-    ThreadPool thread_pool(/*num_threads=*/2);
-
-    for (int i = 0; i < 100; ++i) {
-      thread_pool.AddTask([&]() {
-        // This will block until the mutex is released inside the condition
-        // variable.
-        std::lock_guard<std::mutex> lock(mutex);
-        ++value;
-        condition.notify_all();
-      });
-    }
-    // The thread pool should be deleted.
-  });
-
-  // Give the thread pool time to start, add all the tasks, and then delete
-  // itself.
-  std::this_thread::sleep_for(std::chrono::milliseconds(500));
-
-  // Unlock the tasks.
-  master_lock.unlock();
-
-  // Wait for the thread to complete.
-  thread.join();
-
-  EXPECT_EQ(100, value);
-}
-
-TEST(ThreadPool, Resize) {
-  // Ensure the hardware supports more than 1 thread to ensure the test will
-  // pass.
-  const int num_hardware_threads = std::thread::hardware_concurrency();
-  if (num_hardware_threads <= 1) {
-    LOG(ERROR)
-        << "Test not supported, the hardware does not support threading.";
-    return;
-  }
-
-  ThreadPool thread_pool(1);
-
-  EXPECT_EQ(1, thread_pool.Size());
-
-  thread_pool.Resize(2);
-
-  EXPECT_EQ(2, thread_pool.Size());
-
-  // Try reducing the thread pool size and verify it stays the same size.
-  thread_pool.Resize(1);
-  EXPECT_EQ(2, thread_pool.Size());
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/thread_token_provider.cc b/third_party/ceres/internal/ceres/thread_token_provider.cc
deleted file mode 100644
index 6217e2b..0000000
--- a/third_party/ceres/internal/ceres/thread_token_provider.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: yp@photonscore.de (Yury Prokazov)
-
-#include "ceres/thread_token_provider.h"
-
-namespace ceres::internal {
-
-ThreadTokenProvider::ThreadTokenProvider(int num_threads) {
-  for (int i = 0; i < num_threads; i++) {
-    pool_.Push(i);
-  }
-}
-
-int ThreadTokenProvider::Acquire() {
-  int thread_id;
-  CHECK(pool_.Wait(&thread_id));
-  return thread_id;
-}
-
-void ThreadTokenProvider::Release(int thread_id) { pool_.Push(thread_id); }
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/thread_token_provider.h b/third_party/ceres/internal/ceres/thread_token_provider.h
deleted file mode 100644
index 5d375d1..0000000
--- a/third_party/ceres/internal/ceres/thread_token_provider.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: yp@photonscore.de (Yury Prokazov)
-
-#ifndef CERES_INTERNAL_THREAD_TOKEN_PROVIDER_H_
-#define CERES_INTERNAL_THREAD_TOKEN_PROVIDER_H_
-
-#include "ceres/concurrent_queue.h"
-#include "ceres/internal/config.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// Helper for C++ thread number identification that is similar to
-// omp_get_thread_num() behaviour. This is necessary to support C++
-// threading with a sequential thread id. This is used to access preallocated
-// resources in the parallelized code parts.  The sequence of tokens varies from
-// 0 to num_threads - 1 that can be acquired to identify the thread in a thread
-// pool.
-//
-//
-// Example usage pseudocode:
-//
-// ThreadTokenProvider ttp(N); // allocate N tokens
-// Spawn N threads {
-//    int token = ttp.Acquire(); // get unique token
-//    ...
-//    ... use token to access resources bound to the thread
-//    ...
-//    ttp.Release(token); // return token to the pool
-//  }
-//
-class CERES_NO_EXPORT ThreadTokenProvider {
- public:
-  explicit ThreadTokenProvider(int num_threads);
-
-  // Returns the first token from the queue. The acquired value must be
-  // given back by Release().
-  int Acquire();
-
-  // Makes previously acquired token available for other threads.
-  void Release(int thread_id);
-
- private:
-  // This queue initially holds a sequence from 0..num_threads-1. Every
-  // Acquire() call the first number is removed from here. When the token is not
-  // needed anymore it shall be given back with corresponding Release()
-  // call. This concurrent queue is more expensive than TBB's version, so you
-  // should not acquire the thread ID on every for loop iteration.
-  ConcurrentQueue<int> pool_;
-  ThreadTokenProvider(ThreadTokenProvider&) = delete;
-  ThreadTokenProvider& operator=(ThreadTokenProvider&) = delete;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_THREAD_TOKEN_PROVIDER_H_
diff --git a/third_party/ceres/internal/ceres/tiny_solver_autodiff_function_test.cc b/third_party/ceres/internal/ceres/tiny_solver_autodiff_function_test.cc
deleted file mode 100644
index c192cf3..0000000
--- a/third_party/ceres/internal/ceres/tiny_solver_autodiff_function_test.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#include "ceres/tiny_solver_autodiff_function.h"
-
-#include <algorithm>
-#include <cmath>
-#include <limits>
-
-#include "ceres/tiny_solver.h"
-#include "ceres/tiny_solver_test_util.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-
-struct AutoDiffTestFunctor {
-  template <typename T>
-  bool operator()(const T* const parameters, T* residuals) const {
-    // Shift the parameters so the solution is not at the origin, to prevent
-    // accidentally showing "PASS".
-    const T& a = parameters[0] - T(1.0);
-    const T& b = parameters[1] - T(2.0);
-    const T& c = parameters[2] - T(3.0);
-    residuals[0] = 2. * a + 0. * b + 1. * c;
-    residuals[1] = 0. * a + 4. * b + 6. * c;
-    return true;
-  }
-};
-
-// Leave a factor of 10 slop since these tests tend to mysteriously break on
-// other compilers or architectures if the tolerance is too tight.
-static double const kTolerance = std::numeric_limits<double>::epsilon() * 10;
-
-TEST(TinySolverAutoDiffFunction, SimpleFunction) {
-  using AutoDiffTestFunction =
-      TinySolverAutoDiffFunction<AutoDiffTestFunctor, 2, 3>;
-  AutoDiffTestFunctor autodiff_test_functor;
-  AutoDiffTestFunction f(autodiff_test_functor);
-
-  Eigen::Vector3d x(2.0, 1.0, 4.0);
-  Eigen::Vector2d residuals;
-
-  // Check the case with cost-only evaluation.
-  residuals.setConstant(555);  // Arbitrary.
-  EXPECT_TRUE(f(&x(0), &residuals(0), nullptr));
-  EXPECT_NEAR(3.0, residuals(0), kTolerance);
-  EXPECT_NEAR(2.0, residuals(1), kTolerance);
-
-  // Check the case with cost and Jacobian evaluation.
-  Eigen::Matrix<double, 2, 3> jacobian;
-  residuals.setConstant(555);  // Arbitrary.
-  jacobian.setConstant(555);
-  EXPECT_TRUE(f(&x(0), &residuals(0), &jacobian(0, 0)));
-
-  // Verify cost.
-  EXPECT_NEAR(3.0, residuals(0), kTolerance);
-  EXPECT_NEAR(2.0, residuals(1), kTolerance);
-
-  // Verify Jacobian Row 1.
-  EXPECT_NEAR(2.0, jacobian(0, 0), kTolerance);
-  EXPECT_NEAR(0.0, jacobian(0, 1), kTolerance);
-  EXPECT_NEAR(1.0, jacobian(0, 2), kTolerance);
-
-  // Verify Jacobian row 2.
-  EXPECT_NEAR(0.0, jacobian(1, 0), kTolerance);
-  EXPECT_NEAR(4.0, jacobian(1, 1), kTolerance);
-  EXPECT_NEAR(6.0, jacobian(1, 2), kTolerance);
-}
-
-class DynamicResidualsFunctor {
- public:
-  using Scalar = double;
-  enum {
-    NUM_RESIDUALS = Eigen::Dynamic,
-    NUM_PARAMETERS = 3,
-  };
-
-  int NumResiduals() const { return 2; }
-
-  template <typename T>
-  bool operator()(const T* parameters, T* residuals) const {
-    // Jacobian is not evaluated by cost function, but by autodiff.
-    T* jacobian = nullptr;
-    return EvaluateResidualsAndJacobians(parameters, residuals, jacobian);
-  }
-};
-
-template <typename Function, typename Vector>
-void TestHelper(const Function& f, const Vector& x0) {
-  Vector x = x0;
-  Eigen::Vector2d residuals;
-  f(x.data(), residuals.data(), nullptr);
-  EXPECT_GT(residuals.squaredNorm() / 2.0, 1e-10);
-
-  TinySolver<Function> solver;
-  solver.Solve(f, &x);
-  EXPECT_NEAR(0.0, solver.summary.final_cost, 1e-10);
-}
-
-// A test case for when the number of residuals is
-// dynamically sized and we use autodiff
-TEST(TinySolverAutoDiffFunction, ResidualsDynamicAutoDiff) {
-  Eigen::Vector3d x0(0.76026643, -30.01799744, 0.55192142);
-
-  DynamicResidualsFunctor f;
-  using AutoDiffCostFunctor = ceres::
-      TinySolverAutoDiffFunction<DynamicResidualsFunctor, Eigen::Dynamic, 3>;
-  AutoDiffCostFunctor f_autodiff(f);
-
-  Eigen::Vector2d residuals;
-  f_autodiff(x0.data(), residuals.data(), nullptr);
-  EXPECT_GT(residuals.squaredNorm() / 2.0, 1e-10);
-
-  TinySolver<AutoDiffCostFunctor> solver;
-  solver.Solve(f_autodiff, &x0);
-  EXPECT_NEAR(0.0, solver.summary.final_cost, 1e-10);
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/tiny_solver_cost_function_adapter_test.cc b/third_party/ceres/internal/ceres/tiny_solver_cost_function_adapter_test.cc
deleted file mode 100644
index 638d873..0000000
--- a/third_party/ceres/internal/ceres/tiny_solver_cost_function_adapter_test.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/tiny_solver_cost_function_adapter.h"
-
-#include <algorithm>
-#include <cmath>
-#include <memory>
-
-#include "ceres/cost_function.h"
-#include "ceres/sized_cost_function.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-
-class CostFunction2x3 : public SizedCostFunction<2, 3> {
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const final {
-    double x = parameters[0][0];
-    double y = parameters[0][1];
-    double z = parameters[0][2];
-
-    residuals[0] = x + 2 * y + 4 * z;
-    residuals[1] = y * z;
-
-    if (jacobians && jacobians[0]) {
-      jacobians[0][0] = 1;
-      jacobians[0][1] = 2;
-      jacobians[0][2] = 4;
-
-      jacobians[0][3 + 0] = 0;
-      jacobians[0][3 + 1] = z;
-      jacobians[0][3 + 2] = y;
-    }
-
-    return true;
-  }
-};
-
-template <int kNumResiduals, int kNumParameters>
-void TestHelper() {
-  std::unique_ptr<CostFunction> cost_function(new CostFunction2x3);
-  using CostFunctionAdapter =
-      TinySolverCostFunctionAdapter<kNumResiduals, kNumParameters>;
-  CostFunctionAdapter cfa(*cost_function);
-  EXPECT_EQ(CostFunctionAdapter::NUM_RESIDUALS, kNumResiduals);
-  EXPECT_EQ(CostFunctionAdapter::NUM_PARAMETERS, kNumParameters);
-
-  EXPECT_EQ(cfa.NumResiduals(), 2);
-  EXPECT_EQ(cfa.NumParameters(), 3);
-
-  Eigen::Matrix<double, 2, 1> actual_residuals, expected_residuals;
-  Eigen::Matrix<double, 2, 3, Eigen::ColMajor> actual_jacobian;
-  Eigen::Matrix<double, 2, 3, Eigen::RowMajor> expected_jacobian;
-
-  double xyz[3] = {1.0, -1.0, 2.0};
-  double* parameters[1] = {xyz};
-
-  // Check that residual only evaluation works.
-  cost_function->Evaluate(parameters, expected_residuals.data(), nullptr);
-  cfa(xyz, actual_residuals.data(), nullptr);
-  EXPECT_NEAR(
-      (expected_residuals - actual_residuals).norm() / actual_residuals.norm(),
-      0.0,
-      std::numeric_limits<double>::epsilon())
-      << "\nExpected residuals: " << expected_residuals.transpose()
-      << "\nActual residuals: " << actual_residuals.transpose();
-
-  // Check that residual and jacobian evaluation works.
-  double* jacobians[1] = {expected_jacobian.data()};
-  cost_function->Evaluate(parameters, expected_residuals.data(), jacobians);
-  cfa(xyz, actual_residuals.data(), actual_jacobian.data());
-
-  EXPECT_NEAR(
-      (expected_residuals - actual_residuals).norm() / actual_residuals.norm(),
-      0.0,
-      std::numeric_limits<double>::epsilon())
-      << "\nExpected residuals: " << expected_residuals.transpose()
-      << "\nActual residuals: " << actual_residuals.transpose();
-
-  EXPECT_NEAR(
-      (expected_jacobian - actual_jacobian).norm() / actual_jacobian.norm(),
-      0.0,
-      std::numeric_limits<double>::epsilon())
-      << "\nExpected jacobian: " << expected_jacobian.transpose()
-      << "\nActual jacobian: " << actual_jacobian.transpose();
-}
-
-TEST(TinySolverCostFunctionAdapter, StaticResidualsStaticParameterBlock) {
-  TestHelper<2, 3>();
-}
-
-TEST(TinySolverCostFunctionAdapter, DynamicResidualsStaticParameterBlock) {
-  TestHelper<Eigen::Dynamic, 3>();
-}
-
-TEST(TinySolverCostFunctionAdapter, StaticResidualsDynamicParameterBlock) {
-  TestHelper<2, Eigen::Dynamic>();
-}
-
-TEST(TinySolverCostFunctionAdapter, DynamicResidualsDynamicParameterBlock) {
-  TestHelper<Eigen::Dynamic, Eigen::Dynamic>();
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/tiny_solver_test.cc b/third_party/ceres/internal/ceres/tiny_solver_test.cc
deleted file mode 100644
index 645ddc5..0000000
--- a/third_party/ceres/internal/ceres/tiny_solver_test.cc
+++ /dev/null
@@ -1,164 +0,0 @@
-
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#include "ceres/tiny_solver.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "ceres/tiny_solver_test_util.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-
-using Vec2 = Eigen::Matrix<double, 2, 1>;
-using Vec3 = Eigen::Matrix<double, 3, 1>;
-using VecX = Eigen::VectorXd;
-
-class ExampleStatic {
- public:
-  using Scalar = double;
-  enum {
-    // Can also be Eigen::Dynamic.
-    NUM_RESIDUALS = 2,
-    NUM_PARAMETERS = 3,
-  };
-  bool operator()(const double* parameters,
-                  double* residuals,
-                  double* jacobian) const {
-    return EvaluateResidualsAndJacobians(parameters, residuals, jacobian);
-  }
-};
-
-class ExampleParametersDynamic {
- public:
-  using Scalar = double;
-  enum {
-    NUM_RESIDUALS = 2,
-    NUM_PARAMETERS = Eigen::Dynamic,
-  };
-
-  int NumParameters() const { return 3; }
-
-  bool operator()(const double* parameters,
-                  double* residuals,
-                  double* jacobian) const {
-    return EvaluateResidualsAndJacobians(parameters, residuals, jacobian);
-  }
-};
-
-class ExampleResidualsDynamic {
- public:
-  using Scalar = double;
-  enum {
-    NUM_RESIDUALS = Eigen::Dynamic,
-    NUM_PARAMETERS = 3,
-  };
-
-  int NumResiduals() const { return 2; }
-
-  bool operator()(const double* parameters,
-                  double* residuals,
-                  double* jacobian) const {
-    return EvaluateResidualsAndJacobians(parameters, residuals, jacobian);
-  }
-};
-
-class ExampleAllDynamic {
- public:
-  using Scalar = double;
-  enum {
-    NUM_RESIDUALS = Eigen::Dynamic,
-    NUM_PARAMETERS = Eigen::Dynamic,
-  };
-
-  int NumResiduals() const { return 2; }
-
-  int NumParameters() const { return 3; }
-
-  bool operator()(const double* parameters,
-                  double* residuals,
-                  double* jacobian) const {
-    return EvaluateResidualsAndJacobians(parameters, residuals, jacobian);
-  }
-};
-
-template <typename Function, typename Vector>
-void TestHelper(const Function& f, const Vector& x0) {
-  Vector x = x0;
-  Vec2 residuals;
-  f(x.data(), residuals.data(), nullptr);
-  EXPECT_GT(residuals.squaredNorm() / 2.0, 1e-10);
-
-  TinySolver<Function> solver;
-  solver.Solve(f, &x);
-  EXPECT_NEAR(0.0, solver.summary.final_cost, 1e-10);
-}
-
-// A test case for when the cost function is statically sized.
-TEST(TinySolver, SimpleExample) {
-  Vec3 x0(0.76026643, -30.01799744, 0.55192142);
-  ExampleStatic f;
-
-  TestHelper(f, x0);
-}
-
-// A test case for when the number of parameters is dynamically sized.
-TEST(TinySolver, ParametersDynamic) {
-  VecX x0(3);
-  x0 << 0.76026643, -30.01799744, 0.55192142;
-
-  ExampleParametersDynamic f;
-
-  TestHelper(f, x0);
-}
-
-// A test case for when the number of residuals is dynamically sized.
-TEST(TinySolver, ResidualsDynamic) {
-  Vec3 x0(0.76026643, -30.01799744, 0.55192142);
-
-  ExampleResidualsDynamic f;
-
-  TestHelper(f, x0);
-}
-
-// A test case for when the number of parameters and residuals is
-// dynamically sized.
-TEST(TinySolver, ParametersAndResidualsDynamic) {
-  VecX x0(3);
-  x0 << 0.76026643, -30.01799744, 0.55192142;
-
-  ExampleAllDynamic f;
-
-  TestHelper(f, x0);
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/tiny_solver_test_util.h b/third_party/ceres/internal/ceres/tiny_solver_test_util.h
deleted file mode 100644
index 003df2f..0000000
--- a/third_party/ceres/internal/ceres/tiny_solver_test_util.h
+++ /dev/null
@@ -1,63 +0,0 @@
-
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#ifndef CERES_INTERNAL_TINY_SOLVER_TEST_UTIL_H_
-#define CERES_INTERNAL_TINY_SOLVER_TEST_UTIL_H_
-
-namespace ceres {
-
-template <typename T>
-bool EvaluateResidualsAndJacobians(const T* parameters,
-                                   T* residuals,
-                                   T* jacobian) {
-  T x = parameters[0];
-  T y = parameters[1];
-  T z = parameters[2];
-
-  residuals[0] = x + static_cast<T>(2) * y + static_cast<T>(4) * z;
-  residuals[1] = y * z;
-
-  if (jacobian) {
-    jacobian[0 * 2 + 0] = static_cast<T>(1);
-    jacobian[0 * 2 + 1] = static_cast<T>(0);
-
-    jacobian[1 * 2 + 0] = static_cast<T>(2);
-    jacobian[1 * 2 + 1] = z;
-
-    jacobian[2 * 2 + 0] = static_cast<T>(4);
-    jacobian[2 * 2 + 1] = y;
-  }
-  return true;
-}
-
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_TINY_SOLVER_TEST_UTIL_H_
diff --git a/third_party/ceres/internal/ceres/triplet_sparse_matrix.cc b/third_party/ceres/internal/ceres/triplet_sparse_matrix.cc
deleted file mode 100644
index 4bb6685..0000000
--- a/third_party/ceres/internal/ceres/triplet_sparse_matrix.cc
+++ /dev/null
@@ -1,344 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/triplet_sparse_matrix.h"
-
-#include <algorithm>
-#include <memory>
-#include <random>
-
-#include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-TripletSparseMatrix::TripletSparseMatrix()
-    : num_rows_(0), num_cols_(0), max_num_nonzeros_(0), num_nonzeros_(0) {}
-
-TripletSparseMatrix::~TripletSparseMatrix() = default;
-
-TripletSparseMatrix::TripletSparseMatrix(int num_rows,
-                                         int num_cols,
-                                         int max_num_nonzeros)
-    : num_rows_(num_rows),
-      num_cols_(num_cols),
-      max_num_nonzeros_(max_num_nonzeros),
-      num_nonzeros_(0) {
-  // All the sizes should at least be zero
-  CHECK_GE(num_rows, 0);
-  CHECK_GE(num_cols, 0);
-  CHECK_GE(max_num_nonzeros, 0);
-  AllocateMemory();
-}
-
-TripletSparseMatrix::TripletSparseMatrix(const int num_rows,
-                                         const int num_cols,
-                                         const std::vector<int>& rows,
-                                         const std::vector<int>& cols,
-                                         const std::vector<double>& values)
-    : num_rows_(num_rows),
-      num_cols_(num_cols),
-      max_num_nonzeros_(values.size()),
-      num_nonzeros_(values.size()) {
-  // All the sizes should at least be zero
-  CHECK_GE(num_rows, 0);
-  CHECK_GE(num_cols, 0);
-  CHECK_EQ(rows.size(), cols.size());
-  CHECK_EQ(rows.size(), values.size());
-  AllocateMemory();
-  std::copy(rows.begin(), rows.end(), rows_.get());
-  std::copy(cols.begin(), cols.end(), cols_.get());
-  std::copy(values.begin(), values.end(), values_.get());
-}
-
-TripletSparseMatrix::TripletSparseMatrix(const TripletSparseMatrix& orig)
-    : SparseMatrix(),
-      num_rows_(orig.num_rows_),
-      num_cols_(orig.num_cols_),
-      max_num_nonzeros_(orig.max_num_nonzeros_),
-      num_nonzeros_(orig.num_nonzeros_) {
-  AllocateMemory();
-  CopyData(orig);
-}
-
-TripletSparseMatrix& TripletSparseMatrix::operator=(
-    const TripletSparseMatrix& rhs) {
-  if (this == &rhs) {
-    return *this;
-  }
-  num_rows_ = rhs.num_rows_;
-  num_cols_ = rhs.num_cols_;
-  num_nonzeros_ = rhs.num_nonzeros_;
-  max_num_nonzeros_ = rhs.max_num_nonzeros_;
-  AllocateMemory();
-  CopyData(rhs);
-  return *this;
-}
-
-bool TripletSparseMatrix::AllTripletsWithinBounds() const {
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    // clang-format off
-    if ((rows_[i] < 0) || (rows_[i] >= num_rows_) ||
-        (cols_[i] < 0) || (cols_[i] >= num_cols_)) {
-      return false;
-    }
-    // clang-format on
-  }
-  return true;
-}
-
-void TripletSparseMatrix::Reserve(int new_max_num_nonzeros) {
-  CHECK_LE(num_nonzeros_, new_max_num_nonzeros)
-      << "Reallocation will cause data loss";
-
-  // Nothing to do if we have enough space already.
-  if (new_max_num_nonzeros <= max_num_nonzeros_) return;
-
-  std::unique_ptr<int[]> new_rows =
-      std::make_unique<int[]>(new_max_num_nonzeros);
-  std::unique_ptr<int[]> new_cols =
-      std::make_unique<int[]>(new_max_num_nonzeros);
-  std::unique_ptr<double[]> new_values =
-      std::make_unique<double[]>(new_max_num_nonzeros);
-
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    new_rows[i] = rows_[i];
-    new_cols[i] = cols_[i];
-    new_values[i] = values_[i];
-  }
-
-  rows_ = std::move(new_rows);
-  cols_ = std::move(new_cols);
-  values_ = std::move(new_values);
-  max_num_nonzeros_ = new_max_num_nonzeros;
-}
-
-void TripletSparseMatrix::SetZero() {
-  std::fill(values_.get(), values_.get() + max_num_nonzeros_, 0.0);
-  num_nonzeros_ = 0;
-}
-
-void TripletSparseMatrix::set_num_nonzeros(int num_nonzeros) {
-  CHECK_GE(num_nonzeros, 0);
-  CHECK_LE(num_nonzeros, max_num_nonzeros_);
-  num_nonzeros_ = num_nonzeros;
-}
-
-void TripletSparseMatrix::AllocateMemory() {
-  rows_ = std::make_unique<int[]>(max_num_nonzeros_);
-  cols_ = std::make_unique<int[]>(max_num_nonzeros_);
-  values_ = std::make_unique<double[]>(max_num_nonzeros_);
-}
-
-void TripletSparseMatrix::CopyData(const TripletSparseMatrix& orig) {
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    rows_[i] = orig.rows_[i];
-    cols_[i] = orig.cols_[i];
-    values_[i] = orig.values_[i];
-  }
-}
-
-void TripletSparseMatrix::RightMultiplyAndAccumulate(const double* x,
-                                                     double* y) const {
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    y[rows_[i]] += values_[i] * x[cols_[i]];
-  }
-}
-
-void TripletSparseMatrix::LeftMultiplyAndAccumulate(const double* x,
-                                                    double* y) const {
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    y[cols_[i]] += values_[i] * x[rows_[i]];
-  }
-}
-
-void TripletSparseMatrix::SquaredColumnNorm(double* x) const {
-  CHECK(x != nullptr);
-  VectorRef(x, num_cols_).setZero();
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    x[cols_[i]] += values_[i] * values_[i];
-  }
-}
-
-void TripletSparseMatrix::ScaleColumns(const double* scale) {
-  CHECK(scale != nullptr);
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    values_[i] = values_[i] * scale[cols_[i]];
-  }
-}
-
-void TripletSparseMatrix::ToCRSMatrix(CRSMatrix* crs_matrix) const {
-  CompressedRowSparseMatrix::FromTripletSparseMatrix(*this)->ToCRSMatrix(
-      crs_matrix);
-}
-
-void TripletSparseMatrix::ToDenseMatrix(Matrix* dense_matrix) const {
-  dense_matrix->resize(num_rows_, num_cols_);
-  dense_matrix->setZero();
-  Matrix& m = *dense_matrix;
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    m(rows_[i], cols_[i]) += values_[i];
-  }
-}
-
-void TripletSparseMatrix::AppendRows(const TripletSparseMatrix& B) {
-  CHECK_EQ(B.num_cols(), num_cols_);
-  Reserve(num_nonzeros_ + B.num_nonzeros_);
-  for (int i = 0; i < B.num_nonzeros_; ++i) {
-    rows_.get()[num_nonzeros_] = B.rows()[i] + num_rows_;
-    cols_.get()[num_nonzeros_] = B.cols()[i];
-    values_.get()[num_nonzeros_++] = B.values()[i];
-  }
-  num_rows_ = num_rows_ + B.num_rows();
-}
-
-void TripletSparseMatrix::AppendCols(const TripletSparseMatrix& B) {
-  CHECK_EQ(B.num_rows(), num_rows_);
-  Reserve(num_nonzeros_ + B.num_nonzeros_);
-  for (int i = 0; i < B.num_nonzeros_; ++i, ++num_nonzeros_) {
-    rows_.get()[num_nonzeros_] = B.rows()[i];
-    cols_.get()[num_nonzeros_] = B.cols()[i] + num_cols_;
-    values_.get()[num_nonzeros_] = B.values()[i];
-  }
-  num_cols_ = num_cols_ + B.num_cols();
-}
-
-void TripletSparseMatrix::Resize(int new_num_rows, int new_num_cols) {
-  if ((new_num_rows >= num_rows_) && (new_num_cols >= num_cols_)) {
-    num_rows_ = new_num_rows;
-    num_cols_ = new_num_cols;
-    return;
-  }
-
-  num_rows_ = new_num_rows;
-  num_cols_ = new_num_cols;
-
-  int* r_ptr = rows_.get();
-  int* c_ptr = cols_.get();
-  double* v_ptr = values_.get();
-
-  int dropped_terms = 0;
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    if ((r_ptr[i] < num_rows_) && (c_ptr[i] < num_cols_)) {
-      if (dropped_terms) {
-        r_ptr[i - dropped_terms] = r_ptr[i];
-        c_ptr[i - dropped_terms] = c_ptr[i];
-        v_ptr[i - dropped_terms] = v_ptr[i];
-      }
-    } else {
-      ++dropped_terms;
-    }
-  }
-  num_nonzeros_ -= dropped_terms;
-}
-
-std::unique_ptr<TripletSparseMatrix>
-TripletSparseMatrix::CreateSparseDiagonalMatrix(const double* values,
-                                                int num_rows) {
-  std::unique_ptr<TripletSparseMatrix> m =
-      std::make_unique<TripletSparseMatrix>(num_rows, num_rows, num_rows);
-  for (int i = 0; i < num_rows; ++i) {
-    m->mutable_rows()[i] = i;
-    m->mutable_cols()[i] = i;
-    m->mutable_values()[i] = values[i];
-  }
-  m->set_num_nonzeros(num_rows);
-  return m;
-}
-
-void TripletSparseMatrix::ToTextFile(FILE* file) const {
-  CHECK(file != nullptr);
-  for (int i = 0; i < num_nonzeros_; ++i) {
-    fprintf(file, "% 10d % 10d %17f\n", rows_[i], cols_[i], values_[i]);
-  }
-}
-
-std::unique_ptr<TripletSparseMatrix> TripletSparseMatrix::CreateFromTextFile(
-    FILE* file) {
-  CHECK(file != nullptr);
-  int num_rows = 0;
-  int num_cols = 0;
-  std::vector<int> rows;
-  std::vector<int> cols;
-  std::vector<double> values;
-  while (true) {
-    int row, col;
-    double value;
-    if (fscanf(file, "%d %d %lf", &row, &col, &value) != 3) {
-      break;
-    }
-    rows.push_back(row);
-    cols.push_back(col);
-    values.push_back(value);
-    num_rows = std::max(num_rows, row + 1);
-    num_cols = std::max(num_cols, col + 1);
-  }
-  VLOG(1) << "Read " << rows.size() << " nonzeros from file.";
-  return std::make_unique<TripletSparseMatrix>(
-      num_rows, num_cols, rows, cols, values);
-}
-
-std::unique_ptr<TripletSparseMatrix> TripletSparseMatrix::CreateRandomMatrix(
-    const TripletSparseMatrix::RandomMatrixOptions& options,
-    std::mt19937& prng) {
-  CHECK_GT(options.num_rows, 0);
-  CHECK_GT(options.num_cols, 0);
-  CHECK_GT(options.density, 0.0);
-  CHECK_LE(options.density, 1.0);
-
-  std::vector<int> rows;
-  std::vector<int> cols;
-  std::vector<double> values;
-  std::uniform_real_distribution<double> uniform01(0.0, 1.0);
-  std::normal_distribution<double> standard_normal;
-  while (rows.empty()) {
-    rows.clear();
-    cols.clear();
-    values.clear();
-    for (int r = 0; r < options.num_rows; ++r) {
-      for (int c = 0; c < options.num_cols; ++c) {
-        if (uniform01(prng) <= options.density) {
-          rows.push_back(r);
-          cols.push_back(c);
-          values.push_back(standard_normal(prng));
-        }
-      }
-    }
-  }
-
-  return std::make_unique<TripletSparseMatrix>(
-      options.num_rows, options.num_cols, rows, cols, values);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/triplet_sparse_matrix.h b/third_party/ceres/internal/ceres/triplet_sparse_matrix.h
deleted file mode 100644
index bcb3d2b..0000000
--- a/third_party/ceres/internal/ceres/triplet_sparse_matrix.h
+++ /dev/null
@@ -1,167 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_TRIPLET_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_TRIPLET_SPARSE_MATRIX_H_
-
-#include <memory>
-#include <random>
-#include <vector>
-
-#include "ceres/crs_matrix.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-// An implementation of the SparseMatrix interface to store and
-// manipulate sparse matrices in triplet (i,j,s) form.  This object is
-// inspired by the design of the cholmod_triplet struct used in the
-// SuiteSparse package and is memory layout compatible with it.
-class CERES_NO_EXPORT TripletSparseMatrix final : public SparseMatrix {
- public:
-  TripletSparseMatrix();
-  TripletSparseMatrix(int num_rows, int num_cols, int max_num_nonzeros);
-  TripletSparseMatrix(int num_rows,
-                      int num_cols,
-                      const std::vector<int>& rows,
-                      const std::vector<int>& cols,
-                      const std::vector<double>& values);
-
-  TripletSparseMatrix(const TripletSparseMatrix& orig);
-
-  TripletSparseMatrix& operator=(const TripletSparseMatrix& rhs);
-
-  ~TripletSparseMatrix() override;
-
-  // Implementation of the SparseMatrix interface.
-  void SetZero() final;
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  void LeftMultiplyAndAccumulate(const double* x, double* y) const final;
-  void SquaredColumnNorm(double* x) const final;
-  void ScaleColumns(const double* scale) final;
-  void ToCRSMatrix(CRSMatrix* matrix) const;
-  void ToDenseMatrix(Matrix* dense_matrix) const final;
-  void ToTextFile(FILE* file) const final;
-  // clang-format off
-  int num_rows()        const final   { return num_rows_;     }
-  int num_cols()        const final   { return num_cols_;     }
-  int num_nonzeros()    const final   { return num_nonzeros_; }
-  const double* values()  const final { return values_.get(); }
-  double* mutable_values() final      { return values_.get(); }
-  // clang-format on
-  void set_num_nonzeros(int num_nonzeros);
-
-  // Increase max_num_nonzeros and correspondingly increase the size
-  // of rows_, cols_ and values_. If new_max_num_nonzeros is smaller
-  // than max_num_nonzeros_, then num_non_zeros should be less than or
-  // equal to new_max_num_nonzeros, otherwise data loss is possible
-  // and the method crashes.
-  void Reserve(int new_max_num_nonzeros);
-
-  // Append the matrix B at the bottom of this matrix. B should have
-  // the same number of columns as num_cols_.
-  void AppendRows(const TripletSparseMatrix& B);
-
-  // Append the matrix B at the right of this matrix. B should have
-  // the same number of rows as num_rows_;
-  void AppendCols(const TripletSparseMatrix& B);
-
-  // Resize the matrix. Entries which fall outside the new matrix
-  // bounds are dropped and the num_non_zeros changed accordingly.
-  void Resize(int new_num_rows, int new_num_cols);
-
-  // clang-format off
-  int max_num_nonzeros() const { return max_num_nonzeros_; }
-  const int* rows()      const { return rows_.get();       }
-  const int* cols()      const { return cols_.get();       }
-  int* mutable_rows()          { return rows_.get();       }
-  int* mutable_cols()          { return cols_.get();       }
-  // clang-format on
-
-  // Returns true if the entries of the matrix obey the row, column,
-  // and column size bounds and false otherwise.
-  bool AllTripletsWithinBounds() const;
-
-  bool IsValid() const { return AllTripletsWithinBounds(); }
-
-  // Build a sparse diagonal matrix of size num_rows x num_rows from
-  // the array values. Entries of the values array are copied into the
-  // sparse matrix.
-  static std::unique_ptr<TripletSparseMatrix> CreateSparseDiagonalMatrix(
-      const double* values, int num_rows);
-
-  // Options struct to control the generation of random
-  // TripletSparseMatrix objects.
-  struct RandomMatrixOptions {
-    int num_rows;
-    int num_cols;
-    // 0 < density <= 1 is the probability of an entry being
-    // structurally non-zero. A given random matrix will not have
-    // precisely this density.
-    double density;
-  };
-
-  // Create a random CompressedRowSparseMatrix whose entries are
-  // normally distributed and whose structure is determined by
-  // RandomMatrixOptions.
-  static std::unique_ptr<TripletSparseMatrix> CreateRandomMatrix(
-      const TripletSparseMatrix::RandomMatrixOptions& options,
-      std::mt19937& prng);
-
-  // Load a triplet sparse matrix from a text file.
-  static std::unique_ptr<TripletSparseMatrix> CreateFromTextFile(FILE* file);
-
- private:
-  void AllocateMemory();
-  void CopyData(const TripletSparseMatrix& orig);
-
-  int num_rows_;
-  int num_cols_;
-  int max_num_nonzeros_;
-  int num_nonzeros_;
-
-  // The data is stored as three arrays. For each i, values_[i] is
-  // stored at the location (rows_[i], cols_[i]). If the there are
-  // multiple entries with the same (rows_[i], cols_[i]), the values_
-  // entries corresponding to them are summed up.
-  std::unique_ptr<int[]> rows_;
-  std::unique_ptr<int[]> cols_;
-  std::unique_ptr<double[]> values_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_TRIPLET_SPARSE_MATRIX_H__
diff --git a/third_party/ceres/internal/ceres/triplet_sparse_matrix_test.cc b/third_party/ceres/internal/ceres/triplet_sparse_matrix_test.cc
deleted file mode 100644
index bde9a6e..0000000
--- a/third_party/ceres/internal/ceres/triplet_sparse_matrix_test.cc
+++ /dev/null
@@ -1,392 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/triplet_sparse_matrix.h"
-
-#include <memory>
-
-#include "ceres/crs_matrix.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-TEST(TripletSparseMatrix, DefaultConstructorReturnsEmptyObject) {
-  TripletSparseMatrix m;
-  EXPECT_EQ(m.num_rows(), 0);
-  EXPECT_EQ(m.num_cols(), 0);
-  EXPECT_EQ(m.num_nonzeros(), 0);
-  EXPECT_EQ(m.max_num_nonzeros(), 0);
-}
-
-TEST(TripletSparseMatrix, SimpleConstructorAndBasicOperations) {
-  // Build a matrix
-  TripletSparseMatrix m(2, 5, 4);
-  EXPECT_EQ(m.num_rows(), 2);
-  EXPECT_EQ(m.num_cols(), 5);
-  EXPECT_EQ(m.num_nonzeros(), 0);
-  EXPECT_EQ(m.max_num_nonzeros(), 4);
-
-  m.mutable_rows()[0] = 0;
-  m.mutable_cols()[0] = 1;
-  m.mutable_values()[0] = 2.5;
-
-  m.mutable_rows()[1] = 1;
-  m.mutable_cols()[1] = 4;
-  m.mutable_values()[1] = 5.2;
-  m.set_num_nonzeros(2);
-
-  EXPECT_EQ(m.num_nonzeros(), 2);
-
-  ASSERT_TRUE(m.AllTripletsWithinBounds());
-
-  // We should never be able resize and lose data
-  EXPECT_DEATH_IF_SUPPORTED(m.Reserve(1), "Reallocation will cause data loss");
-
-  // We should be able to resize while preserving data
-  m.Reserve(50);
-  EXPECT_EQ(m.max_num_nonzeros(), 50);
-
-  m.Reserve(3);
-  EXPECT_EQ(m.max_num_nonzeros(), 50);  // The space is already reserved.
-
-  EXPECT_EQ(m.rows()[0], 0);
-  EXPECT_EQ(m.rows()[1], 1);
-
-  EXPECT_EQ(m.cols()[0], 1);
-  EXPECT_EQ(m.cols()[1], 4);
-
-  EXPECT_DOUBLE_EQ(m.values()[0], 2.5);
-  EXPECT_DOUBLE_EQ(m.values()[1], 5.2);
-
-  // Bounds check should fail
-  m.mutable_rows()[0] = 10;
-  EXPECT_FALSE(m.AllTripletsWithinBounds());
-
-  m.mutable_rows()[0] = 1;
-  m.mutable_cols()[0] = 100;
-  EXPECT_FALSE(m.AllTripletsWithinBounds());
-
-  // Remove all data and then resize the data store
-  m.SetZero();
-  EXPECT_EQ(m.num_nonzeros(), 0);
-  m.Reserve(1);
-}
-
-TEST(TripletSparseMatrix, CopyConstructor) {
-  TripletSparseMatrix orig(2, 5, 4);
-  orig.mutable_rows()[0] = 0;
-  orig.mutable_cols()[0] = 1;
-  orig.mutable_values()[0] = 2.5;
-
-  orig.mutable_rows()[1] = 1;
-  orig.mutable_cols()[1] = 4;
-  orig.mutable_values()[1] = 5.2;
-  orig.set_num_nonzeros(2);
-
-  TripletSparseMatrix cpy(orig);
-
-  EXPECT_EQ(cpy.num_rows(), 2);
-  EXPECT_EQ(cpy.num_cols(), 5);
-  ASSERT_EQ(cpy.num_nonzeros(), 2);
-  EXPECT_EQ(cpy.max_num_nonzeros(), 4);
-
-  EXPECT_EQ(cpy.rows()[0], 0);
-  EXPECT_EQ(cpy.rows()[1], 1);
-
-  EXPECT_EQ(cpy.cols()[0], 1);
-  EXPECT_EQ(cpy.cols()[1], 4);
-
-  EXPECT_DOUBLE_EQ(cpy.values()[0], 2.5);
-  EXPECT_DOUBLE_EQ(cpy.values()[1], 5.2);
-}
-
-TEST(TripletSparseMatrix, AssignmentOperator) {
-  TripletSparseMatrix orig(2, 5, 4);
-  orig.mutable_rows()[0] = 0;
-  orig.mutable_cols()[0] = 1;
-  orig.mutable_values()[0] = 2.5;
-
-  orig.mutable_rows()[1] = 1;
-  orig.mutable_cols()[1] = 4;
-  orig.mutable_values()[1] = 5.2;
-  orig.set_num_nonzeros(2);
-
-  TripletSparseMatrix cpy(3, 50, 40);
-  cpy.mutable_rows()[0] = 0;
-  cpy.mutable_cols()[0] = 10;
-  cpy.mutable_values()[0] = 10.22;
-
-  cpy.mutable_rows()[1] = 2;
-  cpy.mutable_cols()[1] = 23;
-  cpy.mutable_values()[1] = 34.45;
-
-  cpy.mutable_rows()[0] = 0;
-  cpy.mutable_cols()[0] = 10;
-  cpy.mutable_values()[0] = 10.22;
-
-  cpy.mutable_rows()[1] = 0;
-  cpy.mutable_cols()[1] = 3;
-  cpy.mutable_values()[1] = 4.4;
-  cpy.set_num_nonzeros(3);
-
-  cpy = orig;
-
-  EXPECT_EQ(cpy.num_rows(), 2);
-  EXPECT_EQ(cpy.num_cols(), 5);
-  ASSERT_EQ(cpy.num_nonzeros(), 2);
-  EXPECT_EQ(cpy.max_num_nonzeros(), 4);
-
-  EXPECT_EQ(cpy.rows()[0], 0);
-  EXPECT_EQ(cpy.rows()[1], 1);
-
-  EXPECT_EQ(cpy.cols()[0], 1);
-  EXPECT_EQ(cpy.cols()[1], 4);
-
-  EXPECT_DOUBLE_EQ(cpy.values()[0], 2.5);
-  EXPECT_DOUBLE_EQ(cpy.values()[1], 5.2);
-}
-
-TEST(TripletSparseMatrix, AssignmentOperatorSelfAssignment) {
-  TripletSparseMatrix orig(2, 5, 4);
-  orig.mutable_rows()[0] = 0;
-  orig.mutable_cols()[0] = 1;
-  orig.mutable_values()[0] = 2.5;
-
-  orig.mutable_rows()[1] = 1;
-  orig.mutable_cols()[1] = 4;
-  orig.mutable_values()[1] = 5.2;
-  orig.set_num_nonzeros(2);
-
-#ifdef __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wself-assign-overloaded"
-#endif
-  // Who's on earth gonna do this?
-  orig = orig;
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
-
-  EXPECT_EQ(orig.num_rows(), 2);
-  EXPECT_EQ(orig.num_cols(), 5);
-  ASSERT_EQ(orig.num_nonzeros(), 2);
-  EXPECT_EQ(orig.max_num_nonzeros(), 4);
-
-  EXPECT_EQ(orig.rows()[0], 0);
-  EXPECT_EQ(orig.rows()[1], 1);
-
-  EXPECT_EQ(orig.cols()[0], 1);
-  EXPECT_EQ(orig.cols()[1], 4);
-
-  EXPECT_DOUBLE_EQ(orig.values()[0], 2.5);
-  EXPECT_DOUBLE_EQ(orig.values()[1], 5.2);
-}
-
-TEST(TripletSparseMatrix, AppendRows) {
-  // Build one matrix.
-  TripletSparseMatrix m(2, 5, 4);
-  m.mutable_rows()[0] = 0;
-  m.mutable_cols()[0] = 1;
-  m.mutable_values()[0] = 2.5;
-
-  m.mutable_rows()[1] = 1;
-  m.mutable_cols()[1] = 4;
-  m.mutable_values()[1] = 5.2;
-  m.set_num_nonzeros(2);
-
-  // Build another matrix.
-  TripletSparseMatrix a(10, 5, 4);
-  a.mutable_rows()[0] = 0;
-  a.mutable_cols()[0] = 1;
-  a.mutable_values()[0] = 3.5;
-
-  a.mutable_rows()[1] = 1;
-  a.mutable_cols()[1] = 4;
-  a.mutable_values()[1] = 6.2;
-
-  a.mutable_rows()[2] = 9;
-  a.mutable_cols()[2] = 5;
-  a.mutable_values()[2] = 1;
-  a.set_num_nonzeros(3);
-
-  // Glue the second matrix to the bottom of the first.
-  m.AppendRows(a);
-
-  EXPECT_EQ(m.num_rows(), 12);
-  EXPECT_EQ(m.num_cols(), 5);
-  ASSERT_EQ(m.num_nonzeros(), 5);
-
-  EXPECT_EQ(m.values()[0], 2.5);
-  EXPECT_EQ(m.values()[1], 5.2);
-  EXPECT_EQ(m.values()[2], 3.5);
-  EXPECT_EQ(m.values()[3], 6.2);
-  EXPECT_EQ(m.values()[4], 1);
-
-  EXPECT_EQ(m.rows()[0], 0);
-  EXPECT_EQ(m.rows()[1], 1);
-  EXPECT_EQ(m.rows()[2], 2);
-  EXPECT_EQ(m.rows()[3], 3);
-  EXPECT_EQ(m.rows()[4], 11);
-
-  EXPECT_EQ(m.cols()[0], 1);
-  EXPECT_EQ(m.cols()[1], 4);
-  EXPECT_EQ(m.cols()[2], 1);
-  EXPECT_EQ(m.cols()[3], 4);
-  EXPECT_EQ(m.cols()[4], 5);
-}
-
-TEST(TripletSparseMatrix, AppendCols) {
-  // Build one matrix.
-  TripletSparseMatrix m(2, 5, 4);
-  m.mutable_rows()[0] = 0;
-  m.mutable_cols()[0] = 1;
-  m.mutable_values()[0] = 2.5;
-
-  m.mutable_rows()[1] = 1;
-  m.mutable_cols()[1] = 4;
-  m.mutable_values()[1] = 5.2;
-  m.set_num_nonzeros(2);
-
-  // Build another matrix.
-  TripletSparseMatrix a(2, 15, 4);
-  a.mutable_rows()[0] = 0;
-  a.mutable_cols()[0] = 1;
-  a.mutable_values()[0] = 3.5;
-
-  a.mutable_rows()[1] = 1;
-  a.mutable_cols()[1] = 4;
-  a.mutable_values()[1] = 6.2;
-
-  a.mutable_rows()[2] = 0;
-  a.mutable_cols()[2] = 10;
-  a.mutable_values()[2] = 1;
-  a.set_num_nonzeros(3);
-
-  // Glue the second matrix to the left of the first.
-  m.AppendCols(a);
-
-  EXPECT_EQ(m.num_rows(), 2);
-  EXPECT_EQ(m.num_cols(), 20);
-  ASSERT_EQ(m.num_nonzeros(), 5);
-
-  EXPECT_EQ(m.values()[0], 2.5);
-  EXPECT_EQ(m.values()[1], 5.2);
-  EXPECT_EQ(m.values()[2], 3.5);
-  EXPECT_EQ(m.values()[3], 6.2);
-  EXPECT_EQ(m.values()[4], 1);
-
-  EXPECT_EQ(m.rows()[0], 0);
-  EXPECT_EQ(m.rows()[1], 1);
-  EXPECT_EQ(m.rows()[2], 0);
-  EXPECT_EQ(m.rows()[3], 1);
-  EXPECT_EQ(m.rows()[4], 0);
-
-  EXPECT_EQ(m.cols()[0], 1);
-  EXPECT_EQ(m.cols()[1], 4);
-  EXPECT_EQ(m.cols()[2], 6);
-  EXPECT_EQ(m.cols()[3], 9);
-  EXPECT_EQ(m.cols()[4], 15);
-}
-
-TEST(TripletSparseMatrix, CreateDiagonalMatrix) {
-  std::unique_ptr<double[]> values(new double[10]);
-  for (int i = 0; i < 10; ++i) values[i] = i;
-
-  std::unique_ptr<TripletSparseMatrix> m(
-      TripletSparseMatrix::CreateSparseDiagonalMatrix(values.get(), 10));
-  EXPECT_EQ(m->num_rows(), 10);
-  EXPECT_EQ(m->num_cols(), 10);
-  ASSERT_EQ(m->num_nonzeros(), 10);
-  for (int i = 0; i < 10; ++i) {
-    EXPECT_EQ(m->rows()[i], i);
-    EXPECT_EQ(m->cols()[i], i);
-    EXPECT_EQ(m->values()[i], i);
-  }
-}
-
-TEST(TripletSparseMatrix, Resize) {
-  TripletSparseMatrix m(10, 20, 200);
-  int nnz = 0;
-  for (int i = 0; i < 10; ++i) {
-    for (int j = 0; j < 20; ++j) {
-      m.mutable_rows()[nnz] = i;
-      m.mutable_cols()[nnz] = j;
-      m.mutable_values()[nnz++] = i + j;
-    }
-  }
-  m.set_num_nonzeros(nnz);
-  m.Resize(5, 6);
-  EXPECT_EQ(m.num_rows(), 5);
-  EXPECT_EQ(m.num_cols(), 6);
-  ASSERT_EQ(m.num_nonzeros(), 30);
-  for (int i = 0; i < 30; ++i) {
-    EXPECT_EQ(m.values()[i], m.rows()[i] + m.cols()[i]);
-  }
-}
-
-TEST(TripletSparseMatrix, ToCRSMatrix) {
-  // Test matrix:
-  // [1, 2, 0, 5, 6, 0,
-  //  3, 4, 0, 7, 8, 0,
-  //  0, 0, 9, 0, 0, 0]
-  TripletSparseMatrix m(3,
-                        6,
-                        {0, 0, 0, 0, 1, 1, 1, 1, 2},
-                        {0, 1, 3, 4, 0, 1, 3, 4, 2},
-                        {1, 2, 3, 4, 5, 6, 7, 8, 9});
-  CRSMatrix m_crs;
-  m.ToCRSMatrix(&m_crs);
-  EXPECT_EQ(m_crs.num_rows, 3);
-  EXPECT_EQ(m_crs.num_cols, 6);
-
-  EXPECT_EQ(m_crs.rows.size(), 4);
-  EXPECT_EQ(m_crs.rows[0], 0);
-  EXPECT_EQ(m_crs.rows[1], 4);
-  EXPECT_EQ(m_crs.rows[2], 8);
-  EXPECT_EQ(m_crs.rows[3], 9);
-
-  EXPECT_EQ(m_crs.cols.size(), 9);
-  EXPECT_EQ(m_crs.cols[0], 0);
-  EXPECT_EQ(m_crs.cols[1], 1);
-  EXPECT_EQ(m_crs.cols[2], 3);
-  EXPECT_EQ(m_crs.cols[3], 4);
-  EXPECT_EQ(m_crs.cols[4], 0);
-  EXPECT_EQ(m_crs.cols[5], 1);
-  EXPECT_EQ(m_crs.cols[6], 3);
-  EXPECT_EQ(m_crs.cols[7], 4);
-  EXPECT_EQ(m_crs.cols[8], 2);
-
-  EXPECT_EQ(m_crs.values.size(), 9);
-  for (int i = 0; i < 9; ++i) {
-    EXPECT_EQ(m_crs.values[i], i + 1);
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/trust_region_minimizer.cc b/third_party/ceres/internal/ceres/trust_region_minimizer.cc
deleted file mode 100644
index d76f677..0000000
--- a/third_party/ceres/internal/ceres/trust_region_minimizer.cc
+++ /dev/null
@@ -1,838 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/trust_region_minimizer.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstdlib>
-#include <cstring>
-#include <limits>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "Eigen/Core"
-#include "ceres/array_utils.h"
-#include "ceres/coordinate_descent_minimizer.h"
-#include "ceres/eigen_vector_ops.h"
-#include "ceres/evaluator.h"
-#include "ceres/file.h"
-#include "ceres/line_search.h"
-#include "ceres/parallel_for.h"
-#include "ceres/stringprintf.h"
-#include "ceres/types.h"
-#include "ceres/wall_time.h"
-#include "glog/logging.h"
-
-// Helper macro to simplify some of the control flow.
-#define RETURN_IF_ERROR_AND_LOG(expr)                            \
-  do {                                                           \
-    if (!(expr)) {                                               \
-      LOG(ERROR) << "Terminating: " << solver_summary_->message; \
-      return;                                                    \
-    }                                                            \
-  } while (0)
-
-namespace ceres::internal {
-
-void TrustRegionMinimizer::Minimize(const Minimizer::Options& options,
-                                    double* parameters,
-                                    Solver::Summary* solver_summary) {
-  start_time_in_secs_ = WallTimeInSeconds();
-  iteration_start_time_in_secs_ = start_time_in_secs_;
-  Init(options, parameters, solver_summary);
-  RETURN_IF_ERROR_AND_LOG(IterationZero());
-
-  // Create the TrustRegionStepEvaluator. The construction needs to be
-  // delayed to this point because we need the cost for the starting
-  // point to initialize the step evaluator.
-  step_evaluator_ = std::make_unique<TrustRegionStepEvaluator>(
-      x_cost_,
-      options_.use_nonmonotonic_steps
-          ? options_.max_consecutive_nonmonotonic_steps
-          : 0);
-
-  bool atleast_one_successful_step = false;
-  while (FinalizeIterationAndCheckIfMinimizerCanContinue()) {
-    iteration_start_time_in_secs_ = WallTimeInSeconds();
-
-    const double previous_gradient_norm = iteration_summary_.gradient_norm;
-    const double previous_gradient_max_norm =
-        iteration_summary_.gradient_max_norm;
-
-    iteration_summary_ = IterationSummary();
-    iteration_summary_.iteration =
-        solver_summary->iterations.back().iteration + 1;
-
-    RETURN_IF_ERROR_AND_LOG(ComputeTrustRegionStep());
-    if (!iteration_summary_.step_is_valid) {
-      RETURN_IF_ERROR_AND_LOG(HandleInvalidStep());
-      continue;
-    }
-
-    if (options_.is_constrained &&
-        options_.max_num_line_search_step_size_iterations > 0) {
-      // Use a projected line search to enforce the bounds constraints
-      // and improve the quality of the step.
-      DoLineSearch(x_, gradient_, x_cost_, &delta_);
-    }
-
-    ComputeCandidatePointAndEvaluateCost();
-    DoInnerIterationsIfNeeded();
-
-    if (atleast_one_successful_step && ParameterToleranceReached()) {
-      return;
-    }
-
-    if (FunctionToleranceReached()) {
-      return;
-    }
-
-    if (IsStepSuccessful()) {
-      atleast_one_successful_step = true;
-      RETURN_IF_ERROR_AND_LOG(HandleSuccessfulStep());
-    } else {
-      // Declare the step unsuccessful and inform the trust region strategy.
-      iteration_summary_.step_is_successful = false;
-      iteration_summary_.cost = candidate_cost_ + solver_summary_->fixed_cost;
-
-      // When the step is unsuccessful, we do not compute the gradient
-      // (or update x), so we preserve its value from the last
-      // successful iteration.
-      iteration_summary_.gradient_norm = previous_gradient_norm;
-      iteration_summary_.gradient_max_norm = previous_gradient_max_norm;
-      strategy_->StepRejected(iteration_summary_.relative_decrease);
-    }
-  }
-}
-
-// Initialize the minimizer, allocate working space and set some of
-// the fields in the solver_summary.
-void TrustRegionMinimizer::Init(const Minimizer::Options& options,
-                                double* parameters,
-                                Solver::Summary* solver_summary) {
-  options_ = options;
-  std::sort(options_.trust_region_minimizer_iterations_to_dump.begin(),
-            options_.trust_region_minimizer_iterations_to_dump.end());
-
-  parameters_ = parameters;
-
-  solver_summary_ = solver_summary;
-  solver_summary_->termination_type = NO_CONVERGENCE;
-  solver_summary_->num_successful_steps = 0;
-  solver_summary_->num_unsuccessful_steps = 0;
-  solver_summary_->is_constrained = options.is_constrained;
-
-  CHECK(options_.evaluator != nullptr);
-  CHECK(options_.jacobian != nullptr);
-  CHECK(options_.trust_region_strategy != nullptr);
-  evaluator_ = options_.evaluator.get();
-  jacobian_ = options_.jacobian.get();
-  strategy_ = options_.trust_region_strategy.get();
-
-  is_not_silent_ = !options.is_silent;
-  inner_iterations_are_enabled_ =
-      options.inner_iteration_minimizer.get() != nullptr;
-  inner_iterations_were_useful_ = false;
-
-  num_parameters_ = evaluator_->NumParameters();
-  num_effective_parameters_ = evaluator_->NumEffectiveParameters();
-  num_residuals_ = evaluator_->NumResiduals();
-  num_consecutive_invalid_steps_ = 0;
-
-  x_ = ConstVectorRef(parameters_, num_parameters_);
-  residuals_.resize(num_residuals_);
-  trust_region_step_.resize(num_effective_parameters_);
-  delta_.resize(num_effective_parameters_);
-  candidate_x_.resize(num_parameters_);
-  gradient_.resize(num_effective_parameters_);
-  model_residuals_.resize(num_residuals_);
-  negative_gradient_.resize(num_effective_parameters_);
-  projected_gradient_step_.resize(num_parameters_);
-
-  // By default scaling is one, if the user requests Jacobi scaling of
-  // the Jacobian, we will compute and overwrite this vector.
-  jacobian_scaling_ = Vector::Ones(num_effective_parameters_);
-
-  x_cost_ = std::numeric_limits<double>::max();
-  minimum_cost_ = x_cost_;
-  model_cost_change_ = 0.0;
-}
-
-// 1. Project the initial solution onto the feasible set if needed.
-// 2. Compute the initial cost, jacobian & gradient.
-//
-// Return true if all computations can be performed successfully.
-bool TrustRegionMinimizer::IterationZero() {
-  iteration_summary_ = IterationSummary();
-  iteration_summary_.iteration = 0;
-  iteration_summary_.step_is_valid = false;
-  iteration_summary_.step_is_successful = false;
-  iteration_summary_.cost_change = 0.0;
-  iteration_summary_.gradient_max_norm = 0.0;
-  iteration_summary_.gradient_norm = 0.0;
-  iteration_summary_.step_norm = 0.0;
-  iteration_summary_.relative_decrease = 0.0;
-  iteration_summary_.eta = options_.eta;
-  iteration_summary_.linear_solver_iterations = 0;
-  iteration_summary_.step_solver_time_in_seconds = 0;
-
-  if (options_.is_constrained) {
-    delta_.setZero();
-    if (!evaluator_->Plus(x_.data(), delta_.data(), candidate_x_.data())) {
-      solver_summary_->message =
-          "Unable to project initial point onto the feasible set.";
-      solver_summary_->termination_type = FAILURE;
-      return false;
-    }
-
-    x_ = candidate_x_;
-  }
-
-  if (!EvaluateGradientAndJacobian(/*new_evaluation_point=*/true)) {
-    solver_summary_->message =
-        "Initial residual and Jacobian evaluation failed.";
-    return false;
-  }
-
-  solver_summary_->initial_cost = x_cost_ + solver_summary_->fixed_cost;
-  iteration_summary_.step_is_valid = true;
-  iteration_summary_.step_is_successful = true;
-  return true;
-}
-
-// For the current x_, compute
-//
-//  1. Cost
-//  2. Jacobian
-//  3. Gradient
-//  4. Scale the Jacobian if needed (and compute the scaling if we are
-//     in iteration zero).
-//  5. Compute the 2 and max norm of the gradient.
-//
-// Returns true if all computations could be performed
-// successfully. Any failures are considered fatal and the
-// Solver::Summary is updated to indicate this.
-bool TrustRegionMinimizer::EvaluateGradientAndJacobian(
-    bool new_evaluation_point) {
-  Evaluator::EvaluateOptions evaluate_options;
-  evaluate_options.new_evaluation_point = new_evaluation_point;
-  if (!evaluator_->Evaluate(evaluate_options,
-                            x_.data(),
-                            &x_cost_,
-                            residuals_.data(),
-                            gradient_.data(),
-                            jacobian_)) {
-    solver_summary_->message = "Residual and Jacobian evaluation failed.";
-    solver_summary_->termination_type = FAILURE;
-    return false;
-  }
-
-  iteration_summary_.cost = x_cost_ + solver_summary_->fixed_cost;
-
-  if (options_.jacobi_scaling) {
-    if (iteration_summary_.iteration == 0) {
-      // Compute a scaling vector that is used to improve the
-      // conditioning of the Jacobian.
-      //
-      // jacobian_scaling_ = diag(J'J)^{-1}
-      jacobian_->SquaredColumnNorm(jacobian_scaling_.data());
-      for (int i = 0; i < jacobian_->num_cols(); ++i) {
-        // Add one to the denominator to prevent division by zero.
-        jacobian_scaling_[i] = 1.0 / (1.0 + sqrt(jacobian_scaling_[i]));
-      }
-    }
-
-    // jacobian = jacobian * diag(J'J) ^{-1}
-    jacobian_->ScaleColumns(
-        jacobian_scaling_.data(), options_.context, options_.num_threads);
-  }
-
-  // The gradient exists in the local tangent space. To account for
-  // the bounds constraints correctly, instead of just computing the
-  // norm of the gradient vector, we compute
-  //
-  // |Plus(x, -gradient) - x|
-  //
-  // Where the Plus operator lifts the negative gradient to the
-  // ambient space, adds it to x and projects it on the hypercube
-  // defined by the bounds.
-  negative_gradient_ = -gradient_;
-  if (!evaluator_->Plus(x_.data(),
-                        negative_gradient_.data(),
-                        projected_gradient_step_.data())) {
-    solver_summary_->message =
-        "projected_gradient_step = Plus(x, -gradient) failed.";
-    solver_summary_->termination_type = FAILURE;
-    return false;
-  }
-
-  iteration_summary_.gradient_max_norm =
-      (x_ - projected_gradient_step_).lpNorm<Eigen::Infinity>();
-  iteration_summary_.gradient_norm = (x_ - projected_gradient_step_).norm();
-  return true;
-}
-
-// 1. Add the final timing information to the iteration summary.
-// 2. Run the callbacks
-// 3. Check for termination based on
-//    a. Run time
-//    b. Iteration count
-//    c. Max norm of the gradient
-//    d. Size of the trust region radius.
-//
-// Returns true if user did not terminate the solver and none of these
-// termination criterion are met.
-bool TrustRegionMinimizer::FinalizeIterationAndCheckIfMinimizerCanContinue() {
-  if (iteration_summary_.step_is_successful) {
-    ++solver_summary_->num_successful_steps;
-    if (x_cost_ < minimum_cost_) {
-      minimum_cost_ = x_cost_;
-      VectorRef(parameters_, num_parameters_) = x_;
-      iteration_summary_.step_is_nonmonotonic = false;
-    } else {
-      iteration_summary_.step_is_nonmonotonic = true;
-    }
-  } else {
-    ++solver_summary_->num_unsuccessful_steps;
-  }
-
-  iteration_summary_.trust_region_radius = strategy_->Radius();
-  iteration_summary_.iteration_time_in_seconds =
-      WallTimeInSeconds() - iteration_start_time_in_secs_;
-  iteration_summary_.cumulative_time_in_seconds =
-      WallTimeInSeconds() - start_time_in_secs_ +
-      solver_summary_->preprocessor_time_in_seconds;
-
-  solver_summary_->iterations.push_back(iteration_summary_);
-
-  if (!RunCallbacks(options_, iteration_summary_, solver_summary_)) {
-    return false;
-  }
-
-  if (MaxSolverTimeReached()) {
-    return false;
-  }
-
-  if (MaxSolverIterationsReached()) {
-    return false;
-  }
-
-  if (GradientToleranceReached()) {
-    return false;
-  }
-
-  if (MinTrustRegionRadiusReached()) {
-    return false;
-  }
-
-  return true;
-}
-
-// Compute the trust region step using the TrustRegionStrategy chosen
-// by the user.
-//
-// If the strategy returns with LinearSolverTerminationType::FATAL_ERROR, which
-// indicates an unrecoverable error, return false. This is the only
-// condition that returns false.
-//
-// If the strategy returns with LinearSolverTerminationType::FAILURE, which
-// indicates a numerical failure that could be recovered from by retrying (e.g.
-// by increasing the strength of the regularization), we set
-// iteration_summary_.step_is_valid to false and return true.
-//
-// In all other cases, we compute the decrease in the trust region
-// model problem. In exact arithmetic, this should always be
-// positive, but due to numerical problems in the TrustRegionStrategy
-// or round off error when computing the decrease it may be
-// negative. In which case again, we set
-// iteration_summary_.step_is_valid to false.
-bool TrustRegionMinimizer::ComputeTrustRegionStep() {
-  const double strategy_start_time = WallTimeInSeconds();
-  iteration_summary_.step_is_valid = false;
-  TrustRegionStrategy::PerSolveOptions per_solve_options;
-  per_solve_options.eta = options_.eta;
-  if (std::find(options_.trust_region_minimizer_iterations_to_dump.begin(),
-                options_.trust_region_minimizer_iterations_to_dump.end(),
-                iteration_summary_.iteration) !=
-      options_.trust_region_minimizer_iterations_to_dump.end()) {
-    per_solve_options.dump_format_type =
-        options_.trust_region_problem_dump_format_type;
-    per_solve_options.dump_filename_base =
-        JoinPath(options_.trust_region_problem_dump_directory,
-                 StringPrintf("ceres_solver_iteration_%03d",
-                              iteration_summary_.iteration));
-  }
-
-  TrustRegionStrategy::Summary strategy_summary =
-      strategy_->ComputeStep(per_solve_options,
-                             jacobian_,
-                             residuals_.data(),
-                             trust_region_step_.data());
-
-  if (strategy_summary.termination_type ==
-      LinearSolverTerminationType::FATAL_ERROR) {
-    solver_summary_->message =
-        "Linear solver failed due to unrecoverable "
-        "non-numeric causes. Please see the error log for clues. ";
-    solver_summary_->termination_type = FAILURE;
-    return false;
-  }
-
-  iteration_summary_.step_solver_time_in_seconds =
-      WallTimeInSeconds() - strategy_start_time;
-  iteration_summary_.linear_solver_iterations = strategy_summary.num_iterations;
-
-  if (strategy_summary.termination_type ==
-      LinearSolverTerminationType::FAILURE) {
-    return true;
-  }
-
-  // new_model_cost
-  //  = 1/2 [f + J * step]^2
-  //  = 1/2 [ f'f + 2f'J * step + step' * J' * J * step ]
-  // model_cost_change
-  //  = cost - new_model_cost
-  //  = f'f/2  - 1/2 [ f'f + 2f'J * step + step' * J' * J * step]
-  //  = -f'J * step - step' * J' * J * step / 2
-  //  = -(J * step)'(f + J * step / 2)
-  ParallelSetZero(options_.context, options_.num_threads, model_residuals_);
-  jacobian_->RightMultiplyAndAccumulate(trust_region_step_.data(),
-                                        model_residuals_.data(),
-                                        options_.context,
-                                        options_.num_threads);
-  model_cost_change_ = -Dot(model_residuals_,
-                            residuals_ + model_residuals_ / 2.0,
-                            options_.context,
-                            options_.num_threads);
-
-  // TODO(sameeragarwal)
-  //
-  //  1. What happens if model_cost_change_ = 0
-  //  2. What happens if -epsilon <= model_cost_change_ < 0 for some
-  //     small epsilon due to round off error.
-  iteration_summary_.step_is_valid = (model_cost_change_ > 0.0);
-  if (iteration_summary_.step_is_valid) {
-    // Undo the Jacobian column scaling.
-    ParallelAssign(options_.context,
-                   options_.num_threads,
-                   delta_,
-                   (trust_region_step_.array() * jacobian_scaling_.array()));
-    num_consecutive_invalid_steps_ = 0;
-  }
-
-  if (is_not_silent_ && !iteration_summary_.step_is_valid) {
-    VLOG(1) << "Invalid step: current_cost: " << x_cost_
-            << " absolute model cost change: " << model_cost_change_
-            << " relative model cost change: "
-            << (model_cost_change_ / x_cost_);
-  }
-  return true;
-}
-
-// Invalid steps can happen due to a number of reasons, and we allow a
-// limited number of consecutive failures, and return false if this
-// limit is exceeded.
-bool TrustRegionMinimizer::HandleInvalidStep() {
-  // TODO(sameeragarwal): Should we be returning FAILURE or
-  // NO_CONVERGENCE? The solution value is still usable in many cases,
-  // it is not clear if we should declare the solver a failure
-  // entirely. For example the case where model_cost_change ~ 0.0, but
-  // just slightly negative.
-  if (++num_consecutive_invalid_steps_ >=
-      options_.max_num_consecutive_invalid_steps) {
-    solver_summary_->message = StringPrintf(
-        "Number of consecutive invalid steps more "
-        "than Solver::Options::max_num_consecutive_invalid_steps: %d",
-        options_.max_num_consecutive_invalid_steps);
-    solver_summary_->termination_type = FAILURE;
-    return false;
-  }
-
-  strategy_->StepIsInvalid();
-
-  // We are going to try and reduce the trust region radius and
-  // solve again. To do this, we are going to treat this iteration
-  // as an unsuccessful iteration. Since the various callbacks are
-  // still executed, we are going to fill the iteration summary
-  // with data that assumes a step of length zero and no progress.
-  iteration_summary_.cost = x_cost_ + solver_summary_->fixed_cost;
-  iteration_summary_.cost_change = 0.0;
-  iteration_summary_.gradient_max_norm =
-      solver_summary_->iterations.back().gradient_max_norm;
-  iteration_summary_.gradient_norm =
-      solver_summary_->iterations.back().gradient_norm;
-  iteration_summary_.step_norm = 0.0;
-  iteration_summary_.relative_decrease = 0.0;
-  iteration_summary_.eta = options_.eta;
-  return true;
-}
-
-// Use the supplied coordinate descent minimizer to perform inner
-// iterations and compute the improvement due to it. Returns the cost
-// after performing the inner iterations.
-//
-// The optimization is performed with candidate_x_ as the starting
-// point, and if the optimization is successful, candidate_x_ will be
-// updated with the optimized parameters.
-void TrustRegionMinimizer::DoInnerIterationsIfNeeded() {
-  inner_iterations_were_useful_ = false;
-  if (!inner_iterations_are_enabled_ ||
-      candidate_cost_ >= std::numeric_limits<double>::max()) {
-    return;
-  }
-
-  double inner_iteration_start_time = WallTimeInSeconds();
-  ++solver_summary_->num_inner_iteration_steps;
-  inner_iteration_x_ = candidate_x_;
-  Solver::Summary inner_iteration_summary;
-  options_.inner_iteration_minimizer->Minimize(
-      options_, inner_iteration_x_.data(), &inner_iteration_summary);
-  double inner_iteration_cost;
-  if (!evaluator_->Evaluate(inner_iteration_x_.data(),
-                            &inner_iteration_cost,
-                            nullptr,
-                            nullptr,
-                            nullptr)) {
-    if (is_not_silent_) {
-      VLOG(2) << "Inner iteration failed.";
-    }
-    return;
-  }
-
-  if (is_not_silent_) {
-    VLOG(2) << "Inner iteration succeeded; Current cost: " << x_cost_
-            << " Trust region step cost: " << candidate_cost_
-            << " Inner iteration cost: " << inner_iteration_cost;
-  }
-  candidate_x_ = inner_iteration_x_;
-
-  // Normally, the quality of a trust region step is measured by
-  // the ratio
-  //
-  //              cost_change
-  //    r =    -----------------
-  //           model_cost_change
-  //
-  // All the change in the nonlinear objective is due to the trust
-  // region step so this ratio is a good measure of the quality of
-  // the trust region radius. However, when inner iterations are
-  // being used, cost_change includes the contribution of the
-  // inner iterations and its not fair to credit it all to the
-  // trust region algorithm. So we change the ratio to be
-  //
-  //                              cost_change
-  //    r =    ------------------------------------------------
-  //           (model_cost_change + inner_iteration_cost_change)
-  //
-  // Practically we do this by increasing model_cost_change by
-  // inner_iteration_cost_change.
-
-  const double inner_iteration_cost_change =
-      candidate_cost_ - inner_iteration_cost;
-  model_cost_change_ += inner_iteration_cost_change;
-  inner_iterations_were_useful_ = inner_iteration_cost < x_cost_;
-  const double inner_iteration_relative_progress =
-      1.0 - inner_iteration_cost / candidate_cost_;
-
-  // Disable inner iterations once the relative improvement
-  // drops below tolerance.
-  inner_iterations_are_enabled_ =
-      (inner_iteration_relative_progress > options_.inner_iteration_tolerance);
-  if (is_not_silent_ && !inner_iterations_are_enabled_) {
-    VLOG(2) << "Disabling inner iterations. Progress : "
-            << inner_iteration_relative_progress;
-  }
-  candidate_cost_ = inner_iteration_cost;
-
-  solver_summary_->inner_iteration_time_in_seconds +=
-      WallTimeInSeconds() - inner_iteration_start_time;
-}
-
-// Perform a projected line search to improve the objective function
-// value along delta.
-//
-// TODO(sameeragarwal): The current implementation does not do
-// anything illegal but is incorrect and not terribly effective.
-//
-// https://github.com/ceres-solver/ceres-solver/issues/187
-void TrustRegionMinimizer::DoLineSearch(const Vector& x,
-                                        const Vector& gradient,
-                                        const double cost,
-                                        Vector* delta) {
-  LineSearchFunction line_search_function(evaluator_);
-
-  LineSearch::Options line_search_options;
-  line_search_options.is_silent = true;
-  line_search_options.interpolation_type =
-      options_.line_search_interpolation_type;
-  line_search_options.min_step_size = options_.min_line_search_step_size;
-  line_search_options.sufficient_decrease =
-      options_.line_search_sufficient_function_decrease;
-  line_search_options.max_step_contraction =
-      options_.max_line_search_step_contraction;
-  line_search_options.min_step_contraction =
-      options_.min_line_search_step_contraction;
-  line_search_options.max_num_iterations =
-      options_.max_num_line_search_step_size_iterations;
-  line_search_options.sufficient_curvature_decrease =
-      options_.line_search_sufficient_curvature_decrease;
-  line_search_options.max_step_expansion =
-      options_.max_line_search_step_expansion;
-  line_search_options.function = &line_search_function;
-
-  std::string message;
-  std::unique_ptr<LineSearch> line_search(
-      LineSearch::Create(ceres::ARMIJO, line_search_options, &message));
-  LineSearch::Summary line_search_summary;
-  line_search_function.Init(x, *delta);
-  line_search->Search(1.0, cost, gradient.dot(*delta), &line_search_summary);
-
-  solver_summary_->num_line_search_steps += line_search_summary.num_iterations;
-  solver_summary_->line_search_cost_evaluation_time_in_seconds +=
-      line_search_summary.cost_evaluation_time_in_seconds;
-  solver_summary_->line_search_gradient_evaluation_time_in_seconds +=
-      line_search_summary.gradient_evaluation_time_in_seconds;
-  solver_summary_->line_search_polynomial_minimization_time_in_seconds +=
-      line_search_summary.polynomial_minimization_time_in_seconds;
-  solver_summary_->line_search_total_time_in_seconds +=
-      line_search_summary.total_time_in_seconds;
-
-  if (line_search_summary.success) {
-    *delta *= line_search_summary.optimal_point.x;
-  }
-}
-
-// Check if the maximum amount of time allowed by the user for the
-// solver has been exceeded, and if so return false after updating
-// Solver::Summary::message.
-bool TrustRegionMinimizer::MaxSolverTimeReached() {
-  const double total_solver_time =
-      WallTimeInSeconds() - start_time_in_secs_ +
-      solver_summary_->preprocessor_time_in_seconds;
-  if (total_solver_time < options_.max_solver_time_in_seconds) {
-    return false;
-  }
-
-  solver_summary_->message = StringPrintf(
-      "Maximum solver time reached. "
-      "Total solver time: %e >= %e.",
-      total_solver_time,
-      options_.max_solver_time_in_seconds);
-  solver_summary_->termination_type = NO_CONVERGENCE;
-  if (is_not_silent_) {
-    VLOG(1) << "Terminating: " << solver_summary_->message;
-  }
-  return true;
-}
-
-// Check if the maximum number of iterations allowed by the user for
-// the solver has been exceeded, and if so return false after updating
-// Solver::Summary::message.
-bool TrustRegionMinimizer::MaxSolverIterationsReached() {
-  if (iteration_summary_.iteration < options_.max_num_iterations) {
-    return false;
-  }
-
-  solver_summary_->message = StringPrintf(
-      "Maximum number of iterations reached. "
-      "Number of iterations: %d.",
-      iteration_summary_.iteration);
-
-  solver_summary_->termination_type = NO_CONVERGENCE;
-  if (is_not_silent_) {
-    VLOG(1) << "Terminating: " << solver_summary_->message;
-  }
-  return true;
-}
-
-// Check convergence based on the max norm of the gradient (only for
-// iterations where the step was declared successful).
-bool TrustRegionMinimizer::GradientToleranceReached() {
-  if (!iteration_summary_.step_is_successful ||
-      iteration_summary_.gradient_max_norm > options_.gradient_tolerance) {
-    return false;
-  }
-
-  solver_summary_->message = StringPrintf(
-      "Gradient tolerance reached. "
-      "Gradient max norm: %e <= %e",
-      iteration_summary_.gradient_max_norm,
-      options_.gradient_tolerance);
-  solver_summary_->termination_type = CONVERGENCE;
-  if (is_not_silent_) {
-    VLOG(1) << "Terminating: " << solver_summary_->message;
-  }
-  return true;
-}
-
-// Check convergence based the size of the trust region radius.
-bool TrustRegionMinimizer::MinTrustRegionRadiusReached() {
-  if (iteration_summary_.trust_region_radius >
-      options_.min_trust_region_radius) {
-    return false;
-  }
-
-  solver_summary_->message = StringPrintf(
-      "Minimum trust region radius reached. "
-      "Trust region radius: %e <= %e",
-      iteration_summary_.trust_region_radius,
-      options_.min_trust_region_radius);
-  solver_summary_->termination_type = CONVERGENCE;
-  if (is_not_silent_) {
-    VLOG(1) << "Terminating: " << solver_summary_->message;
-  }
-  return true;
-}
-
-// Solver::Options::parameter_tolerance based convergence check.
-bool TrustRegionMinimizer::ParameterToleranceReached() {
-  const double x_norm = x_.norm();
-
-  // Compute the norm of the step in the ambient space.
-  iteration_summary_.step_norm = (x_ - candidate_x_).norm();
-  const double step_size_tolerance =
-      options_.parameter_tolerance * (x_norm + options_.parameter_tolerance);
-
-  if (iteration_summary_.step_norm > step_size_tolerance) {
-    return false;
-  }
-
-  solver_summary_->message = StringPrintf(
-      "Parameter tolerance reached. "
-      "Relative step_norm: %e <= %e.",
-      (iteration_summary_.step_norm / (x_norm + options_.parameter_tolerance)),
-      options_.parameter_tolerance);
-  solver_summary_->termination_type = CONVERGENCE;
-  if (is_not_silent_) {
-    VLOG(1) << "Terminating: " << solver_summary_->message;
-  }
-  return true;
-}
-
-// Solver::Options::function_tolerance based convergence check.
-bool TrustRegionMinimizer::FunctionToleranceReached() {
-  iteration_summary_.cost_change = x_cost_ - candidate_cost_;
-  const double absolute_function_tolerance =
-      options_.function_tolerance * x_cost_;
-
-  if (fabs(iteration_summary_.cost_change) > absolute_function_tolerance) {
-    return false;
-  }
-
-  solver_summary_->message = StringPrintf(
-      "Function tolerance reached. "
-      "|cost_change|/cost: %e <= %e",
-      fabs(iteration_summary_.cost_change) / x_cost_,
-      options_.function_tolerance);
-  solver_summary_->termination_type = CONVERGENCE;
-  if (is_not_silent_) {
-    VLOG(1) << "Terminating: " << solver_summary_->message;
-  }
-  return true;
-}
-
-// Compute candidate_x_ = Plus(x_, delta_)
-// Evaluate the cost of candidate_x_ as candidate_cost_.
-//
-// Failure to compute the step or the cost mean that candidate_cost_ is set to
-// std::numeric_limits<double>::max(). Unlike EvaluateGradientAndJacobian,
-// failure in this function is not fatal as we are only computing and evaluating
-// a candidate point, and if for some reason we are unable to evaluate it, we
-// consider it to be a point with very high cost. This allows the user to deal
-// with edge cases/constraints as part of the Manifold and CostFunction objects.
-void TrustRegionMinimizer::ComputeCandidatePointAndEvaluateCost() {
-  if (!evaluator_->Plus(x_.data(), delta_.data(), candidate_x_.data())) {
-    if (is_not_silent_) {
-      LOG(WARNING) << "x_plus_delta = Plus(x, delta) failed. "
-                   << "Treating it as a step with infinite cost";
-    }
-    candidate_cost_ = std::numeric_limits<double>::max();
-    return;
-  }
-
-  if (!evaluator_->Evaluate(
-          candidate_x_.data(), &candidate_cost_, nullptr, nullptr, nullptr)) {
-    if (is_not_silent_) {
-      LOG(WARNING) << "Step failed to evaluate. "
-                   << "Treating it as a step with infinite cost";
-    }
-    candidate_cost_ = std::numeric_limits<double>::max();
-  }
-}
-
-bool TrustRegionMinimizer::IsStepSuccessful() {
-  iteration_summary_.relative_decrease =
-      step_evaluator_->StepQuality(candidate_cost_, model_cost_change_);
-
-  // In most cases, boosting the model_cost_change by the
-  // improvement caused by the inner iterations is fine, but it can
-  // be the case that the original trust region step was so bad that
-  // the resulting improvement in the cost was negative, and the
-  // change caused by the inner iterations was large enough to
-  // improve the step, but also to make relative decrease quite
-  // small.
-  //
-  // This can cause the trust region loop to reject this step. To
-  // get around this, we explicitly check if the inner iterations
-  // led to a net decrease in the objective function value. If
-  // they did, we accept the step even if the trust region ratio
-  // is small.
-  //
-  // Notice that we do not just check that cost_change is positive
-  // which is a weaker condition and would render the
-  // min_relative_decrease threshold useless. Instead, we keep
-  // track of inner_iterations_were_useful, which is true only
-  // when inner iterations lead to a net decrease in the cost.
-  return (inner_iterations_were_useful_ ||
-          iteration_summary_.relative_decrease >
-              options_.min_relative_decrease);
-}
-
-// Declare the step successful, move to candidate_x, update the
-// derivatives and let the trust region strategy and the step
-// evaluator know that the step has been accepted.
-bool TrustRegionMinimizer::HandleSuccessfulStep() {
-  x_ = candidate_x_;
-
-  // Since the step was successful, this point has already had the residual
-  // evaluated (but not the jacobian). So indicate that to the evaluator.
-  if (!EvaluateGradientAndJacobian(/*new_evaluation_point=*/false)) {
-    return false;
-  }
-
-  iteration_summary_.step_is_successful = true;
-  strategy_->StepAccepted(iteration_summary_.relative_decrease);
-  step_evaluator_->StepAccepted(candidate_cost_, model_cost_change_);
-  return true;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/trust_region_minimizer.h b/third_party/ceres/internal/ceres/trust_region_minimizer.h
deleted file mode 100644
index c9cdac7..0000000
--- a/third_party/ceres/internal/ceres/trust_region_minimizer.h
+++ /dev/null
@@ -1,164 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_TRUST_REGION_MINIMIZER_H_
-#define CERES_INTERNAL_TRUST_REGION_MINIMIZER_H_
-
-#include <memory>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/internal/export.h"
-#include "ceres/minimizer.h"
-#include "ceres/solver.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/trust_region_step_evaluator.h"
-#include "ceres/trust_region_strategy.h"
-#include "ceres/types.h"
-
-namespace ceres::internal {
-
-// Generic trust region minimization algorithm.
-//
-// For example usage, see SolverImpl::Minimize.
-class CERES_NO_EXPORT TrustRegionMinimizer final : public Minimizer {
- public:
-  // This method is not thread safe.
-  void Minimize(const Minimizer::Options& options,
-                double* parameters,
-                Solver::Summary* solver_summary) override;
-
- private:
-  void Init(const Minimizer::Options& options,
-            double* parameters,
-            Solver::Summary* solver_summary);
-  bool IterationZero();
-  bool FinalizeIterationAndCheckIfMinimizerCanContinue();
-  bool ComputeTrustRegionStep();
-
-  bool EvaluateGradientAndJacobian(bool new_evaluation_point);
-  void ComputeCandidatePointAndEvaluateCost();
-
-  void DoLineSearch(const Vector& x,
-                    const Vector& gradient,
-                    const double cost,
-                    Vector* delta);
-  void DoInnerIterationsIfNeeded();
-
-  bool ParameterToleranceReached();
-  bool FunctionToleranceReached();
-  bool GradientToleranceReached();
-  bool MaxSolverTimeReached();
-  bool MaxSolverIterationsReached();
-  bool MinTrustRegionRadiusReached();
-
-  bool IsStepSuccessful();
-  bool HandleSuccessfulStep();
-  bool HandleInvalidStep();
-
-  Minimizer::Options options_;
-
-  // These pointers are shortcuts to objects passed to the
-  // TrustRegionMinimizer. The TrustRegionMinimizer does not own them.
-  double* parameters_;
-  Solver::Summary* solver_summary_;
-  Evaluator* evaluator_;
-  SparseMatrix* jacobian_;
-  TrustRegionStrategy* strategy_;
-
-  std::unique_ptr<TrustRegionStepEvaluator> step_evaluator_;
-
-  bool is_not_silent_;
-  bool inner_iterations_are_enabled_;
-  bool inner_iterations_were_useful_;
-
-  // Summary of the current iteration.
-  IterationSummary iteration_summary_;
-
-  // Dimensionality of the problem in the ambient space.
-  int num_parameters_;
-  // Dimensionality of the problem in the tangent space. This is the
-  // number of columns in the Jacobian.
-  int num_effective_parameters_;
-  // Length of the residual vector, also the number of rows in the Jacobian.
-  int num_residuals_;
-
-  // Current point.
-  Vector x_;
-  // Residuals at x_;
-  Vector residuals_;
-  // Gradient at x_.
-  Vector gradient_;
-  // Solution computed by the inner iterations.
-  Vector inner_iteration_x_;
-  // model_residuals = J * trust_region_step
-  Vector model_residuals_;
-  Vector negative_gradient_;
-  // projected_gradient_step = Plus(x, -gradient), an intermediate
-  // quantity used to compute the projected gradient norm.
-  Vector projected_gradient_step_;
-  // The step computed by the trust region strategy. If Jacobi scaling
-  // is enabled, this is a vector in the scaled space.
-  Vector trust_region_step_;
-  // The current proposal for how far the trust region algorithm
-  // thinks we should move. In the most basic case, it is just the
-  // trust_region_step_ with the Jacobi scaling undone. If bounds
-  // constraints are present, then it is the result of the projected
-  // line search.
-  Vector delta_;
-  // candidate_x  = Plus(x, delta)
-  Vector candidate_x_;
-  // Scaling vector to scale the columns of the Jacobian.
-  Vector jacobian_scaling_;
-
-  // Cost at x_.
-  double x_cost_;
-  // Minimum cost encountered up till now.
-  double minimum_cost_;
-  // How much did the trust region strategy reduce the cost of the
-  // linearized Gauss-Newton model.
-  double model_cost_change_;
-  // Cost at candidate_x_.
-  double candidate_cost_;
-
-  // Time at which the minimizer was started.
-  double start_time_in_secs_;
-  // Time at which the current iteration was started.
-  double iteration_start_time_in_secs_;
-  // Number of consecutive steps where the minimizer loop computed a
-  // numerically invalid step.
-  int num_consecutive_invalid_steps_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_TRUST_REGION_MINIMIZER_H_
diff --git a/third_party/ceres/internal/ceres/trust_region_minimizer_test.cc b/third_party/ceres/internal/ceres/trust_region_minimizer_test.cc
deleted file mode 100644
index 94c7162..0000000
--- a/third_party/ceres/internal/ceres/trust_region_minimizer_test.cc
+++ /dev/null
@@ -1,435 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// This tests the TrustRegionMinimizer loop using a direct Evaluator
-// implementation, rather than having a test that goes through all the
-// Program and Problem machinery.
-
-#include "ceres/trust_region_minimizer.h"
-
-#include <cmath>
-#include <memory>
-
-#include "ceres/autodiff_cost_function.h"
-#include "ceres/cost_function.h"
-#include "ceres/dense_qr_solver.h"
-#include "ceres/dense_sparse_matrix.h"
-#include "ceres/evaluator.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-#include "ceres/minimizer.h"
-#include "ceres/problem.h"
-#include "ceres/trust_region_strategy.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// Templated Evaluator for Powell's function. The template parameters
-// indicate which of the four variables/columns of the jacobian are
-// active. This is equivalent to constructing a problem and using the
-// SubsetManifold. This allows us to test the support for
-// the Evaluator::Plus operation besides checking for the basic
-// performance of the trust region algorithm.
-template <bool col1, bool col2, bool col3, bool col4>
-class PowellEvaluator2 : public Evaluator {
- public:
-  // clang-format off
-  PowellEvaluator2()
-      : num_active_cols_(
-          (col1 ? 1 : 0) +
-          (col2 ? 1 : 0) +
-          (col3 ? 1 : 0) +
-          (col4 ? 1 : 0)) {
-    VLOG(1) << "Columns: "
-            << col1 << " "
-            << col2 << " "
-            << col3 << " "
-            << col4;
-  }
-  // clang-format on
-
-  // Implementation of Evaluator interface.
-  std::unique_ptr<SparseMatrix> CreateJacobian() const final {
-    CHECK(col1 || col2 || col3 || col4);
-    auto dense_jacobian = std::make_unique<DenseSparseMatrix>(
-        NumResiduals(), NumEffectiveParameters());
-    dense_jacobian->SetZero();
-    return dense_jacobian;
-  }
-
-  bool Evaluate(const Evaluator::EvaluateOptions& evaluate_options,
-                const double* state,
-                double* cost,
-                double* residuals,
-                double* gradient,
-                SparseMatrix* jacobian) final {
-    const double x1 = state[0];
-    const double x2 = state[1];
-    const double x3 = state[2];
-    const double x4 = state[3];
-
-    VLOG(1) << "State: "
-            << "x1=" << x1 << ", "
-            << "x2=" << x2 << ", "
-            << "x3=" << x3 << ", "
-            << "x4=" << x4 << ".";
-
-    const double f1 = x1 + 10.0 * x2;
-    const double f2 = sqrt(5.0) * (x3 - x4);
-    const double f3 = pow(x2 - 2.0 * x3, 2.0);
-    const double f4 = sqrt(10.0) * pow(x1 - x4, 2.0);
-
-    VLOG(1) << "Function: "
-            << "f1=" << f1 << ", "
-            << "f2=" << f2 << ", "
-            << "f3=" << f3 << ", "
-            << "f4=" << f4 << ".";
-
-    *cost = (f1 * f1 + f2 * f2 + f3 * f3 + f4 * f4) / 2.0;
-
-    VLOG(1) << "Cost: " << *cost;
-
-    if (residuals != nullptr) {
-      residuals[0] = f1;
-      residuals[1] = f2;
-      residuals[2] = f3;
-      residuals[3] = f4;
-    }
-
-    if (jacobian != nullptr) {
-      DenseSparseMatrix* dense_jacobian;
-      dense_jacobian = down_cast<DenseSparseMatrix*>(jacobian);
-      dense_jacobian->SetZero();
-
-      Matrix& jacobian_matrix = *(dense_jacobian->mutable_matrix());
-      CHECK_EQ(jacobian_matrix.cols(), num_active_cols_);
-
-      int column_index = 0;
-      if (col1) {
-        // clang-format off
-        jacobian_matrix.col(column_index++) <<
-            1.0,
-            0.0,
-            0.0,
-            sqrt(10.0) * 2.0 * (x1 - x4);
-        // clang-format on
-      }
-      if (col2) {
-        // clang-format off
-        jacobian_matrix.col(column_index++) <<
-            10.0,
-            0.0,
-            2.0*(x2 - 2.0*x3),
-            0.0;
-        // clang-format on
-      }
-
-      if (col3) {
-        // clang-format off
-        jacobian_matrix.col(column_index++) <<
-            0.0,
-            sqrt(5.0),
-            4.0*(2.0*x3 - x2),
-            0.0;
-        // clang-format on
-      }
-
-      if (col4) {
-        // clang-format off
-        jacobian_matrix.col(column_index++) <<
-            0.0,
-            -sqrt(5.0),
-            0.0,
-            sqrt(10.0) * 2.0 * (x4 - x1);
-        // clang-format on
-      }
-      VLOG(1) << "\n" << jacobian_matrix;
-    }
-
-    if (gradient != nullptr) {
-      int column_index = 0;
-      if (col1) {
-        gradient[column_index++] = f1 + f4 * sqrt(10.0) * 2.0 * (x1 - x4);
-      }
-
-      if (col2) {
-        gradient[column_index++] = f1 * 10.0 + f3 * 2.0 * (x2 - 2.0 * x3);
-      }
-
-      if (col3) {
-        gradient[column_index++] =
-            f2 * sqrt(5.0) + f3 * (4.0 * (2.0 * x3 - x2));
-      }
-
-      if (col4) {
-        gradient[column_index++] =
-            -f2 * sqrt(5.0) + f4 * sqrt(10.0) * 2.0 * (x4 - x1);
-      }
-    }
-
-    return true;
-  }
-
-  bool Plus(const double* state,
-            const double* delta,
-            double* state_plus_delta) const final {
-    int delta_index = 0;
-    state_plus_delta[0] = (col1 ? state[0] + delta[delta_index++] : state[0]);
-    state_plus_delta[1] = (col2 ? state[1] + delta[delta_index++] : state[1]);
-    state_plus_delta[2] = (col3 ? state[2] + delta[delta_index++] : state[2]);
-    state_plus_delta[3] = (col4 ? state[3] + delta[delta_index++] : state[3]);
-    return true;
-  }
-
-  int NumEffectiveParameters() const final { return num_active_cols_; }
-  int NumParameters() const final { return 4; }
-  int NumResiduals() const final { return 4; }
-
- private:
-  const int num_active_cols_;
-};
-
-// Templated function to hold a subset of the columns fixed and check
-// if the solver converges to the optimal values or not.
-template <bool col1, bool col2, bool col3, bool col4>
-void IsTrustRegionSolveSuccessful(TrustRegionStrategyType strategy_type) {
-  Solver::Options solver_options;
-  LinearSolver::Options linear_solver_options;
-  DenseQRSolver linear_solver(linear_solver_options);
-
-  double parameters[4] = {3, -1, 0, 1.0};
-
-  // If the column is inactive, then set its value to the optimal
-  // value.
-  parameters[0] = (col1 ? parameters[0] : 0.0);
-  parameters[1] = (col2 ? parameters[1] : 0.0);
-  parameters[2] = (col3 ? parameters[2] : 0.0);
-  parameters[3] = (col4 ? parameters[3] : 0.0);
-
-  Minimizer::Options minimizer_options(solver_options);
-  minimizer_options.gradient_tolerance = 1e-26;
-  minimizer_options.function_tolerance = 1e-26;
-  minimizer_options.parameter_tolerance = 1e-26;
-  minimizer_options.evaluator =
-      std::make_unique<PowellEvaluator2<col1, col2, col3, col4>>();
-  minimizer_options.jacobian = minimizer_options.evaluator->CreateJacobian();
-
-  TrustRegionStrategy::Options trust_region_strategy_options;
-  trust_region_strategy_options.trust_region_strategy_type = strategy_type;
-  trust_region_strategy_options.linear_solver = &linear_solver;
-  trust_region_strategy_options.initial_radius = 1e4;
-  trust_region_strategy_options.max_radius = 1e20;
-  trust_region_strategy_options.min_lm_diagonal = 1e-6;
-  trust_region_strategy_options.max_lm_diagonal = 1e32;
-  minimizer_options.trust_region_strategy =
-      TrustRegionStrategy::Create(trust_region_strategy_options);
-
-  TrustRegionMinimizer minimizer;
-  Solver::Summary summary;
-  minimizer.Minimize(minimizer_options, parameters, &summary);
-
-  // The minimum is at x1 = x2 = x3 = x4 = 0.
-  EXPECT_NEAR(0.0, parameters[0], 0.001);
-  EXPECT_NEAR(0.0, parameters[1], 0.001);
-  EXPECT_NEAR(0.0, parameters[2], 0.001);
-  EXPECT_NEAR(0.0, parameters[3], 0.001);
-}
-
-TEST(TrustRegionMinimizer, PowellsSingularFunctionUsingLevenbergMarquardt) {
-  // This case is excluded because this has a local minimum and does
-  // not find the optimum. This should not affect the correctness of
-  // this test since we are testing all the other 14 combinations of
-  // column activations.
-  //
-  //   IsSolveSuccessful<true, true, false, true>();
-
-  const TrustRegionStrategyType kStrategy = LEVENBERG_MARQUARDT;
-  // clang-format off
-  IsTrustRegionSolveSuccessful<true,  true,  true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  true,  true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  true,  false, false>(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, false, true >(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  false, true >(kStrategy);
-  IsTrustRegionSolveSuccessful<false, false, true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, false, false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  false, false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, false, true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, false, false, true >(kStrategy);
-  // clang-format on
-}
-
-TEST(TrustRegionMinimizer, PowellsSingularFunctionUsingDogleg) {
-  // The following two cases are excluded because they encounter a
-  // local minimum.
-  //
-  //  IsTrustRegionSolveSuccessful<true, true, false, true >(kStrategy);
-  //  IsTrustRegionSolveSuccessful<true,  true,  true,  true >(kStrategy);
-
-  const TrustRegionStrategyType kStrategy = DOGLEG;
-  // clang-format off
-  IsTrustRegionSolveSuccessful<true,  true,  true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  true,  false, false>(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, false, true >(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  false, true >(kStrategy);
-  IsTrustRegionSolveSuccessful<false, false, true,  true >(kStrategy);
-  IsTrustRegionSolveSuccessful<true,  false, false, false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, true,  false, false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, false, true,  false>(kStrategy);
-  IsTrustRegionSolveSuccessful<false, false, false, true >(kStrategy);
-  // clang-format on
-}
-
-class CurveCostFunction : public CostFunction {
- public:
-  CurveCostFunction(int num_vertices, double target_length)
-      : num_vertices_(num_vertices), target_length_(target_length) {
-    set_num_residuals(1);
-    for (int i = 0; i < num_vertices_; ++i) {
-      mutable_parameter_block_sizes()->push_back(2);
-    }
-  }
-
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    residuals[0] = target_length_;
-
-    for (int i = 0; i < num_vertices_; ++i) {
-      int prev = (num_vertices_ + i - 1) % num_vertices_;
-      double length = 0.0;
-      for (int dim = 0; dim < 2; dim++) {
-        const double diff = parameters[prev][dim] - parameters[i][dim];
-        length += diff * diff;
-      }
-      residuals[0] -= sqrt(length);
-    }
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    for (int i = 0; i < num_vertices_; ++i) {
-      if (jacobians[i] != nullptr) {
-        int prev = (num_vertices_ + i - 1) % num_vertices_;
-        int next = (i + 1) % num_vertices_;
-
-        double u[2], v[2];
-        double norm_u = 0., norm_v = 0.;
-        for (int dim = 0; dim < 2; dim++) {
-          u[dim] = parameters[i][dim] - parameters[prev][dim];
-          norm_u += u[dim] * u[dim];
-          v[dim] = parameters[next][dim] - parameters[i][dim];
-          norm_v += v[dim] * v[dim];
-        }
-
-        norm_u = sqrt(norm_u);
-        norm_v = sqrt(norm_v);
-
-        for (int dim = 0; dim < 2; dim++) {
-          jacobians[i][dim] = 0.;
-
-          if (norm_u > std::numeric_limits<double>::min()) {
-            jacobians[i][dim] -= u[dim] / norm_u;
-          }
-
-          if (norm_v > std::numeric_limits<double>::min()) {
-            jacobians[i][dim] += v[dim] / norm_v;
-          }
-        }
-      }
-    }
-
-    return true;
-  }
-
- private:
-  int num_vertices_;
-  double target_length_;
-};
-
-TEST(TrustRegionMinimizer, JacobiScalingTest) {
-  int N = 6;
-  std::vector<double*> y(N);
-  const double pi = 3.1415926535897932384626433;
-  for (int i = 0; i < N; i++) {
-    double theta = i * 2. * pi / static_cast<double>(N);
-    y[i] = new double[2];
-    y[i][0] = cos(theta);
-    y[i][1] = sin(theta);
-  }
-
-  Problem problem;
-  problem.AddResidualBlock(new CurveCostFunction(N, 10.), nullptr, y);
-  Solver::Options options;
-  options.linear_solver_type = ceres::DENSE_QR;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_LE(summary.final_cost, 1e-10);
-
-  for (int i = 0; i < N; i++) {
-    delete[] y[i];
-  }
-}
-
-struct ExpCostFunctor {
-  template <typename T>
-  bool operator()(const T* const x, T* residual) const {
-    residual[0] = T(10.0) - exp(x[0]);
-    return true;
-  }
-
-  static CostFunction* Create() {
-    return new AutoDiffCostFunction<ExpCostFunctor, 1, 1>(new ExpCostFunctor);
-  }
-};
-
-TEST(TrustRegionMinimizer, GradientToleranceConvergenceUpdatesStep) {
-  double x = 5;
-  Problem problem;
-  problem.AddResidualBlock(ExpCostFunctor::Create(), nullptr, &x);
-  problem.SetParameterLowerBound(&x, 0, 3.0);
-  Solver::Options options;
-  Solver::Summary summary;
-  Solve(options, &problem, &summary);
-  EXPECT_NEAR(3.0, x, 1e-12);
-  const double expected_final_cost = 0.5 * pow(10.0 - exp(3.0), 2);
-  EXPECT_NEAR(expected_final_cost, summary.final_cost, 1e-12);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/trust_region_preprocessor.cc b/third_party/ceres/internal/ceres/trust_region_preprocessor.cc
deleted file mode 100644
index e07e369..0000000
--- a/third_party/ceres/internal/ceres/trust_region_preprocessor.cc
+++ /dev/null
@@ -1,408 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/trust_region_preprocessor.h"
-
-#include <numeric>
-#include <string>
-#include <vector>
-
-#include "ceres/callbacks.h"
-#include "ceres/context_impl.h"
-#include "ceres/evaluator.h"
-#include "ceres/linear_solver.h"
-#include "ceres/minimizer.h"
-#include "ceres/parameter_block.h"
-#include "ceres/preconditioner.h"
-#include "ceres/preprocessor.h"
-#include "ceres/problem_impl.h"
-#include "ceres/program.h"
-#include "ceres/reorder_program.h"
-#include "ceres/suitesparse.h"
-#include "ceres/trust_region_strategy.h"
-#include "ceres/wall_time.h"
-
-namespace ceres::internal {
-
-namespace {
-
-std::shared_ptr<ParameterBlockOrdering> CreateDefaultLinearSolverOrdering(
-    const Program& program) {
-  std::shared_ptr<ParameterBlockOrdering> ordering =
-      std::make_shared<ParameterBlockOrdering>();
-  const std::vector<ParameterBlock*>& parameter_blocks =
-      program.parameter_blocks();
-  for (auto* parameter_block : parameter_blocks) {
-    ordering->AddElementToGroup(
-        const_cast<double*>(parameter_block->user_state()), 0);
-  }
-  return ordering;
-}
-
-// Check if all the user supplied values in the parameter blocks are
-// sane or not, and if the program is feasible or not.
-bool IsProgramValid(const Program& program, std::string* error) {
-  return (program.ParameterBlocksAreFinite(error) && program.IsFeasible(error));
-}
-
-void AlternateLinearSolverAndPreconditionerForSchurTypeLinearSolver(
-    Solver::Options* options) {
-  if (!IsSchurType(options->linear_solver_type)) {
-    return;
-  }
-
-  const LinearSolverType linear_solver_type_given = options->linear_solver_type;
-  const PreconditionerType preconditioner_type_given =
-      options->preconditioner_type;
-  options->linear_solver_type =
-      LinearSolver::LinearSolverForZeroEBlocks(linear_solver_type_given);
-
-  std::string message;
-  if (linear_solver_type_given == ITERATIVE_SCHUR) {
-    options->preconditioner_type =
-        Preconditioner::PreconditionerForZeroEBlocks(preconditioner_type_given);
-
-    message =
-        StringPrintf("No E blocks. Switching from %s(%s) to %s(%s).",
-                     LinearSolverTypeToString(linear_solver_type_given),
-                     PreconditionerTypeToString(preconditioner_type_given),
-                     LinearSolverTypeToString(options->linear_solver_type),
-                     PreconditionerTypeToString(options->preconditioner_type));
-  } else {
-    message =
-        StringPrintf("No E blocks. Switching from %s to %s.",
-                     LinearSolverTypeToString(linear_solver_type_given),
-                     LinearSolverTypeToString(options->linear_solver_type));
-  }
-  if (options->logging_type != SILENT) {
-    VLOG(1) << message;
-  }
-}
-
-// Reorder the program to reduce fill-in and increase cache coherency.
-bool ReorderProgram(PreprocessedProblem* pp) {
-  const Solver::Options& options = pp->options;
-  if (IsSchurType(options.linear_solver_type)) {
-    return ReorderProgramForSchurTypeLinearSolver(
-        options.linear_solver_type,
-        options.sparse_linear_algebra_library_type,
-        options.linear_solver_ordering_type,
-        pp->problem->parameter_map(),
-        options.linear_solver_ordering.get(),
-        pp->reduced_program.get(),
-        &pp->error);
-  }
-
-  if (options.linear_solver_type == SPARSE_NORMAL_CHOLESKY &&
-      !options.dynamic_sparsity) {
-    return ReorderProgramForSparseCholesky(
-        options.sparse_linear_algebra_library_type,
-        options.linear_solver_ordering_type,
-        *options.linear_solver_ordering,
-        0, /* use all the rows of the jacobian */
-        pp->reduced_program.get(),
-        &pp->error);
-  }
-
-  if (options.linear_solver_type == CGNR &&
-      options.preconditioner_type == SUBSET) {
-    pp->linear_solver_options.subset_preconditioner_start_row_block =
-        ReorderResidualBlocksByPartition(
-            options.residual_blocks_for_subset_preconditioner,
-            pp->reduced_program.get());
-
-    return ReorderProgramForSparseCholesky(
-        options.sparse_linear_algebra_library_type,
-        options.linear_solver_ordering_type,
-        *options.linear_solver_ordering,
-        pp->linear_solver_options.subset_preconditioner_start_row_block,
-        pp->reduced_program.get(),
-        &pp->error);
-  }
-
-  return true;
-}
-
-// Configure and create a linear solver object. In doing so, if a
-// sparse direct factorization based linear solver is being used, then
-// find a fill reducing ordering and reorder the program as needed
-// too.
-bool SetupLinearSolver(PreprocessedProblem* pp) {
-  Solver::Options& options = pp->options;
-  pp->linear_solver_options = LinearSolver::Options();
-
-  if (!options.linear_solver_ordering) {
-    // If the user has not supplied a linear solver ordering, then we
-    // assume that they are giving all the freedom to us in choosing
-    // the best possible ordering. This intent can be indicated by
-    // putting all the parameter blocks in the same elimination group.
-    options.linear_solver_ordering =
-        CreateDefaultLinearSolverOrdering(*pp->reduced_program);
-  } else {
-    // If the user supplied an ordering, then check if the first
-    // elimination group is still non-empty after the reduced problem
-    // has been constructed.
-    //
-    // This is important for Schur type linear solvers, where the
-    // first elimination group is special -- it needs to be an
-    // independent set.
-    //
-    // If the first elimination group is empty, then we cannot use the
-    // user's requested linear solver (and a preconditioner as the
-    // case may be) so we must use a different one.
-    ParameterBlockOrdering* ordering = options.linear_solver_ordering.get();
-    const int min_group_id = ordering->MinNonZeroGroup();
-    ordering->Remove(pp->removed_parameter_blocks);
-    if (IsSchurType(options.linear_solver_type) &&
-        min_group_id != ordering->MinNonZeroGroup()) {
-      AlternateLinearSolverAndPreconditionerForSchurTypeLinearSolver(&options);
-    }
-  }
-
-  // Reorder the program to reduce fill in and improve cache coherency
-  // of the Jacobian.
-  if (!ReorderProgram(pp)) {
-    return false;
-  }
-
-  // Configure the linear solver.
-  pp->linear_solver_options.min_num_iterations =
-      options.min_linear_solver_iterations;
-  pp->linear_solver_options.max_num_iterations =
-      options.max_linear_solver_iterations;
-  pp->linear_solver_options.type = options.linear_solver_type;
-  pp->linear_solver_options.preconditioner_type = options.preconditioner_type;
-  pp->linear_solver_options.use_spse_initialization =
-      options.use_spse_initialization;
-  pp->linear_solver_options.spse_tolerance = options.spse_tolerance;
-  pp->linear_solver_options.max_num_spse_iterations =
-      options.max_num_spse_iterations;
-  pp->linear_solver_options.visibility_clustering_type =
-      options.visibility_clustering_type;
-  pp->linear_solver_options.sparse_linear_algebra_library_type =
-      options.sparse_linear_algebra_library_type;
-
-  pp->linear_solver_options.dense_linear_algebra_library_type =
-      options.dense_linear_algebra_library_type;
-  pp->linear_solver_options.use_explicit_schur_complement =
-      options.use_explicit_schur_complement;
-  pp->linear_solver_options.dynamic_sparsity = options.dynamic_sparsity;
-  pp->linear_solver_options.use_mixed_precision_solves =
-      options.use_mixed_precision_solves;
-  pp->linear_solver_options.max_num_refinement_iterations =
-      options.max_num_refinement_iterations;
-  pp->linear_solver_options.num_threads = options.num_threads;
-  pp->linear_solver_options.context = pp->problem->context();
-
-  if (IsSchurType(pp->linear_solver_options.type)) {
-    OrderingToGroupSizes(options.linear_solver_ordering.get(),
-                         &pp->linear_solver_options.elimination_groups);
-
-    // Schur type solvers expect at least two elimination groups. If
-    // there is only one elimination group, then it is guaranteed that
-    // this group only contains e_blocks. Thus we add a dummy
-    // elimination group with zero blocks in it.
-    if (pp->linear_solver_options.elimination_groups.size() == 1) {
-      pp->linear_solver_options.elimination_groups.push_back(0);
-    }
-  }
-
-  if (!options.dynamic_sparsity &&
-      AreJacobianColumnsOrdered(options.linear_solver_type,
-                                options.preconditioner_type,
-                                options.sparse_linear_algebra_library_type,
-                                options.linear_solver_ordering_type)) {
-    pp->linear_solver_options.ordering_type = OrderingType::NATURAL;
-  } else {
-    if (options.linear_solver_ordering_type == ceres::AMD) {
-      pp->linear_solver_options.ordering_type = OrderingType::AMD;
-    } else if (options.linear_solver_ordering_type == ceres::NESDIS) {
-      pp->linear_solver_options.ordering_type = OrderingType::NESDIS;
-    } else {
-      LOG(FATAL) << "Congratulations you have found a bug in Ceres Solver."
-                 << " Please report this to the maintainers. : "
-                 << options.linear_solver_ordering_type;
-    }
-  }
-
-  pp->linear_solver = LinearSolver::Create(pp->linear_solver_options);
-  return (pp->linear_solver != nullptr);
-}
-
-// Configure and create the evaluator.
-bool SetupEvaluator(PreprocessedProblem* pp) {
-  const Solver::Options& options = pp->options;
-  pp->evaluator_options = Evaluator::Options();
-  pp->evaluator_options.linear_solver_type = options.linear_solver_type;
-  pp->evaluator_options.sparse_linear_algebra_library_type =
-      options.sparse_linear_algebra_library_type;
-  pp->evaluator_options.num_eliminate_blocks = 0;
-  if (IsSchurType(options.linear_solver_type)) {
-    pp->evaluator_options.num_eliminate_blocks =
-        options.linear_solver_ordering->group_to_elements()
-            .begin()
-            ->second.size();
-  }
-
-  pp->evaluator_options.num_threads = options.num_threads;
-  pp->evaluator_options.dynamic_sparsity = options.dynamic_sparsity;
-  pp->evaluator_options.context = pp->problem->context();
-  pp->evaluator_options.evaluation_callback =
-      pp->reduced_program->mutable_evaluation_callback();
-  pp->evaluator = Evaluator::Create(
-      pp->evaluator_options, pp->reduced_program.get(), &pp->error);
-
-  return (pp->evaluator != nullptr);
-}
-
-// If the user requested inner iterations, then find an inner
-// iteration ordering as needed and configure and create a
-// CoordinateDescentMinimizer object to perform the inner iterations.
-bool SetupInnerIterationMinimizer(PreprocessedProblem* pp) {
-  Solver::Options& options = pp->options;
-  if (!options.use_inner_iterations) {
-    return true;
-  }
-
-  if (pp->reduced_program->mutable_evaluation_callback()) {
-    pp->error = "Inner iterations cannot be used with EvaluationCallbacks";
-    return false;
-  }
-
-  // With just one parameter block, the outer iteration of the trust
-  // region method and inner iterations are doing exactly the same
-  // thing, and thus inner iterations are not needed.
-  if (pp->reduced_program->NumParameterBlocks() == 1) {
-    LOG(WARNING) << "Reduced problem only contains one parameter block."
-                 << "Disabling inner iterations.";
-    return true;
-  }
-
-  if (options.inner_iteration_ordering != nullptr) {
-    // If the user supplied an ordering, then remove the set of
-    // inactive parameter blocks from it
-    options.inner_iteration_ordering->Remove(pp->removed_parameter_blocks);
-    if (options.inner_iteration_ordering->NumElements() == 0) {
-      LOG(WARNING) << "No remaining elements in the inner iteration ordering.";
-      return true;
-    }
-
-    // Validate the reduced ordering.
-    if (!CoordinateDescentMinimizer::IsOrderingValid(
-            *pp->reduced_program,
-            *options.inner_iteration_ordering,
-            &pp->error)) {
-      return false;
-    }
-  } else {
-    // The user did not supply an ordering, so create one.
-    options.inner_iteration_ordering =
-        CoordinateDescentMinimizer::CreateOrdering(*pp->reduced_program);
-  }
-
-  pp->inner_iteration_minimizer =
-      std::make_unique<CoordinateDescentMinimizer>(pp->problem->context());
-  return pp->inner_iteration_minimizer->Init(*pp->reduced_program,
-                                             pp->problem->parameter_map(),
-                                             *options.inner_iteration_ordering,
-                                             &pp->error);
-}
-
-// Configure and create a TrustRegionMinimizer object.
-bool SetupMinimizerOptions(PreprocessedProblem* pp) {
-  const Solver::Options& options = pp->options;
-
-  SetupCommonMinimizerOptions(pp);
-  pp->minimizer_options.is_constrained =
-      pp->reduced_program->IsBoundsConstrained();
-  pp->minimizer_options.jacobian = pp->evaluator->CreateJacobian();
-  if (pp->minimizer_options.jacobian == nullptr) {
-    pp->error =
-        "Unable to create Jacobian matrix. Likely because it is too large.";
-    return false;
-  }
-
-  pp->minimizer_options.inner_iteration_minimizer =
-      pp->inner_iteration_minimizer;
-
-  TrustRegionStrategy::Options strategy_options;
-  strategy_options.linear_solver = pp->linear_solver.get();
-  strategy_options.initial_radius = options.initial_trust_region_radius;
-  strategy_options.max_radius = options.max_trust_region_radius;
-  strategy_options.min_lm_diagonal = options.min_lm_diagonal;
-  strategy_options.max_lm_diagonal = options.max_lm_diagonal;
-  strategy_options.trust_region_strategy_type =
-      options.trust_region_strategy_type;
-  strategy_options.dogleg_type = options.dogleg_type;
-  strategy_options.context = pp->problem->context();
-  strategy_options.num_threads = options.num_threads;
-  pp->minimizer_options.trust_region_strategy =
-      TrustRegionStrategy::Create(strategy_options);
-  CHECK(pp->minimizer_options.trust_region_strategy != nullptr);
-  return true;
-}
-
-}  // namespace
-
-bool TrustRegionPreprocessor::Preprocess(const Solver::Options& options,
-                                         ProblemImpl* problem,
-                                         PreprocessedProblem* pp) {
-  CHECK(pp != nullptr);
-  pp->options = options;
-  ChangeNumThreadsIfNeeded(&pp->options);
-
-  pp->problem = problem;
-  Program* program = problem->mutable_program();
-  if (!IsProgramValid(*program, &pp->error)) {
-    return false;
-  }
-
-  pp->reduced_program = program->CreateReducedProgram(
-      &pp->removed_parameter_blocks, &pp->fixed_cost, &pp->error);
-
-  if (pp->reduced_program.get() == nullptr) {
-    return false;
-  }
-
-  if (pp->reduced_program->NumParameterBlocks() == 0) {
-    // The reduced problem has no parameter or residual blocks. There
-    // is nothing more to do.
-    return true;
-  }
-
-  if (!SetupLinearSolver(pp) || !SetupEvaluator(pp) ||
-      !SetupInnerIterationMinimizer(pp)) {
-    return false;
-  }
-
-  return SetupMinimizerOptions(pp);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/trust_region_preprocessor.h b/third_party/ceres/internal/ceres/trust_region_preprocessor.h
deleted file mode 100644
index 14febda..0000000
--- a/third_party/ceres/internal/ceres/trust_region_preprocessor.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_TRUST_REGION_PREPROCESSOR_H_
-#define CERES_INTERNAL_TRUST_REGION_PREPROCESSOR_H_
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/preprocessor.h"
-
-namespace ceres::internal {
-
-class CERES_NO_EXPORT TrustRegionPreprocessor final : public Preprocessor {
- public:
-  bool Preprocess(const Solver::Options& options,
-                  ProblemImpl* problem,
-                  PreprocessedProblem* preprocessed_problem) override;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_TRUST_REGION_PREPROCESSOR_H_
diff --git a/third_party/ceres/internal/ceres/trust_region_preprocessor_test.cc b/third_party/ceres/internal/ceres/trust_region_preprocessor_test.cc
deleted file mode 100644
index 2579361..0000000
--- a/third_party/ceres/internal/ceres/trust_region_preprocessor_test.cc
+++ /dev/null
@@ -1,359 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/trust_region_preprocessor.h"
-
-#include <array>
-#include <map>
-
-#include "ceres/internal/config.h"
-#include "ceres/ordered_groups.h"
-#include "ceres/problem_impl.h"
-#include "ceres/sized_cost_function.h"
-#include "ceres/solver.h"
-#include "gtest/gtest.h"
-
-namespace ceres {
-namespace internal {
-
-TEST(TrustRegionPreprocessor, ZeroProblem) {
-  ProblemImpl problem;
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(TrustRegionPreprocessor, ProblemWithInvalidParameterBlock) {
-  ProblemImpl problem;
-  double x = std::numeric_limits<double>::quiet_NaN();
-  problem.AddParameterBlock(&x, 1);
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(TrustRegionPreprocessor, ParameterBlockBoundsAreInvalid) {
-  ProblemImpl problem;
-  double x = 1.0;
-  problem.AddParameterBlock(&x, 1);
-  problem.SetParameterUpperBound(&x, 0, 1.0);
-  problem.SetParameterLowerBound(&x, 0, 2.0);
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(TrustRegionPreprocessor, ParameterBlockIsInfeasible) {
-  ProblemImpl problem;
-  double x = 3.0;
-  problem.AddParameterBlock(&x, 1);
-  problem.SetParameterUpperBound(&x, 0, 1.0);
-  problem.SetParameterLowerBound(&x, 0, 2.0);
-  problem.SetParameterBlockConstant(&x);
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-class FailingCostFunction : public SizedCostFunction<1, 1> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    return false;
-  }
-};
-
-TEST(TrustRegionPreprocessor, RemoveParameterBlocksFailed) {
-  ProblemImpl problem;
-  double x = 3.0;
-  problem.AddResidualBlock(new FailingCostFunction, nullptr, &x);
-  problem.SetParameterBlockConstant(&x);
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-TEST(TrustRegionPreprocessor, RemoveParameterBlocksSucceeds) {
-  ProblemImpl problem;
-  double x = 3.0;
-  problem.AddParameterBlock(&x, 1);
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem, &pp));
-}
-
-template <int kNumResiduals, int... Ns>
-class DummyCostFunction : public SizedCostFunction<kNumResiduals, Ns...> {
- public:
-  bool Evaluate(double const* const* parameters,
-                double* residuals,
-                double** jacobians) const override {
-    for (int i = 0; i < kNumResiduals; ++i) {
-      residuals[i] = kNumResiduals * kNumResiduals + i;
-    }
-
-    if (jacobians == nullptr) {
-      return true;
-    }
-
-    std::array<int, sizeof...(Ns)> N{Ns...};
-    for (size_t i = 0; i < N.size(); ++i) {
-      if (jacobians[i] != nullptr) {
-        MatrixRef j(jacobians[i], kNumResiduals, N[i]);
-        j.setOnes();
-        j *= kNumResiduals * N[i];
-      }
-    }
-
-    return true;
-  }
-};
-
-class LinearSolverAndEvaluatorCreationTest : public ::testing::Test {
- public:
-  void SetUp() final {
-    x_ = 1.0;
-    y_ = 1.0;
-    z_ = 1.0;
-    problem_.AddResidualBlock(
-        new DummyCostFunction<1, 1, 1>, nullptr, &x_, &y_);
-    problem_.AddResidualBlock(
-        new DummyCostFunction<1, 1, 1>, nullptr, &y_, &z_);
-  }
-
-  void PreprocessForGivenLinearSolverAndVerify(
-      const LinearSolverType linear_solver_type) {
-    Solver::Options options;
-    options.linear_solver_type = linear_solver_type;
-    TrustRegionPreprocessor preprocessor;
-    PreprocessedProblem pp;
-    EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-    EXPECT_EQ(pp.options.linear_solver_type, linear_solver_type);
-    EXPECT_EQ(pp.linear_solver_options.type, linear_solver_type);
-    EXPECT_EQ(pp.evaluator_options.linear_solver_type, linear_solver_type);
-    EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-    EXPECT_TRUE(pp.evaluator.get() != nullptr);
-  }
-
- protected:
-  ProblemImpl problem_;
-  double x_;
-  double y_;
-  double z_;
-};
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, DenseQR) {
-  PreprocessForGivenLinearSolverAndVerify(DENSE_QR);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, DenseNormalCholesky) {
-  PreprocessForGivenLinearSolverAndVerify(DENSE_NORMAL_CHOLESKY);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, DenseSchur) {
-  PreprocessForGivenLinearSolverAndVerify(DENSE_SCHUR);
-}
-
-#if !defined(CERES_NO_SPARSE)
-TEST_F(LinearSolverAndEvaluatorCreationTest, SparseNormalCholesky) {
-  PreprocessForGivenLinearSolverAndVerify(SPARSE_NORMAL_CHOLESKY);
-}
-#endif
-
-#if !defined(CERES_NO_SPARSE)
-TEST_F(LinearSolverAndEvaluatorCreationTest, SparseSchur) {
-  PreprocessForGivenLinearSolverAndVerify(SPARSE_SCHUR);
-}
-#endif
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, CGNR) {
-  PreprocessForGivenLinearSolverAndVerify(CGNR);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, IterativeSchur) {
-  PreprocessForGivenLinearSolverAndVerify(ITERATIVE_SCHUR);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, MinimizerIsAwareOfBounds) {
-  problem_.SetParameterLowerBound(&x_, 0, 0.0);
-  Solver::Options options;
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-  EXPECT_EQ(pp.options.linear_solver_type, options.linear_solver_type);
-  EXPECT_EQ(pp.linear_solver_options.type, options.linear_solver_type);
-  EXPECT_EQ(pp.evaluator_options.linear_solver_type,
-            options.linear_solver_type);
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-  EXPECT_TRUE(pp.minimizer_options.is_constrained);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, SchurTypeSolverWithBadOrdering) {
-  Solver::Options options;
-  options.linear_solver_type = DENSE_SCHUR;
-  options.linear_solver_ordering = std::make_shared<ParameterBlockOrdering>();
-  options.linear_solver_ordering->AddElementToGroup(&x_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&y_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&z_, 1);
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem_, &pp));
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, SchurTypeSolverWithGoodOrdering) {
-  Solver::Options options;
-  options.linear_solver_type = DENSE_SCHUR;
-  options.linear_solver_ordering = std::make_shared<ParameterBlockOrdering>();
-  options.linear_solver_ordering->AddElementToGroup(&x_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&z_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&y_, 1);
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-  EXPECT_EQ(pp.options.linear_solver_type, DENSE_SCHUR);
-  EXPECT_EQ(pp.linear_solver_options.type, DENSE_SCHUR);
-  EXPECT_EQ(pp.evaluator_options.linear_solver_type, DENSE_SCHUR);
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest,
-       SchurTypeSolverWithEmptyFirstEliminationGroup) {
-  problem_.SetParameterBlockConstant(&x_);
-  problem_.SetParameterBlockConstant(&z_);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_SCHUR;
-  options.linear_solver_ordering = std::make_shared<ParameterBlockOrdering>();
-  options.linear_solver_ordering->AddElementToGroup(&x_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&z_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&y_, 1);
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-  EXPECT_EQ(pp.options.linear_solver_type, DENSE_QR);
-  EXPECT_EQ(pp.linear_solver_options.type, DENSE_QR);
-  EXPECT_EQ(pp.evaluator_options.linear_solver_type, DENSE_QR);
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest,
-       SchurTypeSolverWithEmptySecondEliminationGroup) {
-  problem_.SetParameterBlockConstant(&y_);
-
-  Solver::Options options;
-  options.linear_solver_type = DENSE_SCHUR;
-  options.linear_solver_ordering = std::make_shared<ParameterBlockOrdering>();
-  options.linear_solver_ordering->AddElementToGroup(&x_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&z_, 0);
-  options.linear_solver_ordering->AddElementToGroup(&y_, 1);
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-  EXPECT_EQ(pp.options.linear_solver_type, DENSE_SCHUR);
-  EXPECT_EQ(pp.linear_solver_options.type, DENSE_SCHUR);
-  EXPECT_EQ(pp.evaluator_options.linear_solver_type, DENSE_SCHUR);
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-}
-
-TEST(TrustRegionPreprocessorTest, InnerIterationsWithOneParameterBlock) {
-  ProblemImpl problem;
-  double x = 1.0;
-  problem.AddResidualBlock(new DummyCostFunction<1, 1>, nullptr, &x);
-
-  Solver::Options options;
-  options.use_inner_iterations = true;
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem, &pp));
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-  EXPECT_TRUE(pp.inner_iteration_minimizer.get() == nullptr);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest,
-       InnerIterationsWithTwoParameterBlocks) {
-  Solver::Options options;
-  options.use_inner_iterations = true;
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-  EXPECT_TRUE(pp.inner_iteration_minimizer.get() != nullptr);
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, InvalidInnerIterationsOrdering) {
-  Solver::Options options;
-  options.use_inner_iterations = true;
-  options.inner_iteration_ordering = std::make_shared<ParameterBlockOrdering>();
-  options.inner_iteration_ordering->AddElementToGroup(&x_, 0);
-  options.inner_iteration_ordering->AddElementToGroup(&z_, 0);
-  options.inner_iteration_ordering->AddElementToGroup(&y_, 0);
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_FALSE(preprocessor.Preprocess(options, &problem_, &pp));
-}
-
-TEST_F(LinearSolverAndEvaluatorCreationTest, ValidInnerIterationsOrdering) {
-  Solver::Options options;
-  options.use_inner_iterations = true;
-  options.inner_iteration_ordering = std::make_shared<ParameterBlockOrdering>();
-  options.inner_iteration_ordering->AddElementToGroup(&x_, 0);
-  options.inner_iteration_ordering->AddElementToGroup(&z_, 0);
-  options.inner_iteration_ordering->AddElementToGroup(&y_, 1);
-
-  TrustRegionPreprocessor preprocessor;
-  PreprocessedProblem pp;
-  EXPECT_TRUE(preprocessor.Preprocess(options, &problem_, &pp));
-  EXPECT_TRUE(pp.linear_solver.get() != nullptr);
-  EXPECT_TRUE(pp.evaluator.get() != nullptr);
-  EXPECT_TRUE(pp.inner_iteration_minimizer.get() != nullptr);
-}
-
-}  // namespace internal
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/trust_region_step_evaluator.cc b/third_party/ceres/internal/ceres/trust_region_step_evaluator.cc
deleted file mode 100644
index a2333a0..0000000
--- a/third_party/ceres/internal/ceres/trust_region_step_evaluator.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/trust_region_step_evaluator.h"
-
-#include <algorithm>
-#include <limits>
-
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-TrustRegionStepEvaluator::TrustRegionStepEvaluator(
-    const double initial_cost, const int max_consecutive_nonmonotonic_steps)
-    : max_consecutive_nonmonotonic_steps_(max_consecutive_nonmonotonic_steps),
-      minimum_cost_(initial_cost),
-      current_cost_(initial_cost),
-      reference_cost_(initial_cost),
-      candidate_cost_(initial_cost),
-      accumulated_reference_model_cost_change_(0.0),
-      accumulated_candidate_model_cost_change_(0.0),
-      num_consecutive_nonmonotonic_steps_(0) {}
-
-double TrustRegionStepEvaluator::StepQuality(
-    const double cost, const double model_cost_change) const {
-  // If the function evaluation for this step was a failure, in which
-  // case the TrustRegionMinimizer would have set the cost to
-  // std::numeric_limits<double>::max(). In this case, the division by
-  // model_cost_change can result in an overflow. To prevent that from
-  // happening, we will deal with this case explicitly.
-  if (cost >= std::numeric_limits<double>::max()) {
-    return std::numeric_limits<double>::lowest();
-  }
-
-  const double relative_decrease = (current_cost_ - cost) / model_cost_change;
-  const double historical_relative_decrease =
-      (reference_cost_ - cost) /
-      (accumulated_reference_model_cost_change_ + model_cost_change);
-  return std::max(relative_decrease, historical_relative_decrease);
-}
-
-void TrustRegionStepEvaluator::StepAccepted(const double cost,
-                                            const double model_cost_change) {
-  // Algorithm 10.1.2 from Trust Region Methods by Conn, Gould &
-  // Toint.
-  //
-  // Step 3a
-  current_cost_ = cost;
-  accumulated_candidate_model_cost_change_ += model_cost_change;
-  accumulated_reference_model_cost_change_ += model_cost_change;
-
-  // Step 3b.
-  if (current_cost_ < minimum_cost_) {
-    minimum_cost_ = current_cost_;
-    num_consecutive_nonmonotonic_steps_ = 0;
-    candidate_cost_ = current_cost_;
-    accumulated_candidate_model_cost_change_ = 0.0;
-  } else {
-    // Step 3c.
-    ++num_consecutive_nonmonotonic_steps_;
-    if (current_cost_ > candidate_cost_) {
-      candidate_cost_ = current_cost_;
-      accumulated_candidate_model_cost_change_ = 0.0;
-    }
-  }
-
-  // Step 3d.
-  //
-  // At this point we have made too many non-monotonic steps and
-  // we are going to reset the value of the reference iterate so
-  // as to force the algorithm to descend.
-  //
-  // Note: In the original algorithm by Toint, this step was only
-  // executed if the step was non-monotonic, but that would not handle
-  // the case of max_consecutive_nonmonotonic_steps = 0. The small
-  // modification of doing this always handles that corner case
-  // correctly.
-  if (num_consecutive_nonmonotonic_steps_ ==
-      max_consecutive_nonmonotonic_steps_) {
-    reference_cost_ = candidate_cost_;
-    accumulated_reference_model_cost_change_ =
-        accumulated_candidate_model_cost_change_;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/trust_region_step_evaluator.h b/third_party/ceres/internal/ceres/trust_region_step_evaluator.h
deleted file mode 100644
index 6df0427..0000000
--- a/third_party/ceres/internal/ceres/trust_region_step_evaluator.h
+++ /dev/null
@@ -1,122 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_TRUST_REGION_STEP_EVALUATOR_H_
-#define CERES_INTERNAL_TRUST_REGION_STEP_EVALUATOR_H_
-
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-// The job of the TrustRegionStepEvaluator is to evaluate the quality
-// of a step, i.e., how the cost of a step compares with the reduction
-// in the objective of the trust region problem.
-//
-// Classic trust region methods are descent methods, in that they only
-// accept a point if it strictly reduces the value of the objective
-// function. They do this by measuring the quality of a step as
-//
-//   cost_change / model_cost_change.
-//
-// Relaxing the monotonic descent requirement allows the algorithm to
-// be more efficient in the long term at the cost of some local
-// increase in the value of the objective function.
-//
-// This is because allowing for non-decreasing objective function
-// values in a principled manner allows the algorithm to "jump over
-// boulders" as the method is not restricted to move into narrow
-// valleys while preserving its convergence properties.
-//
-// The parameter max_consecutive_nonmonotonic_steps controls the
-// window size used by the step selection algorithm to accept
-// non-monotonic steps. Setting this parameter to zero, recovers the
-// classic monotonic descent algorithm.
-//
-// Based on algorithm 10.1.2 (page 357) of "Trust Region
-// Methods" by Conn Gould & Toint, or equations 33-40 of
-// "Non-monotone trust-region algorithms for nonlinear
-// optimization subject to convex constraints" by Phil Toint,
-// Mathematical Programming, 77, 1997.
-//
-// Example usage:
-//
-// TrustRegionStepEvaluator* step_evaluator = ...
-//
-// cost = ... // Compute the non-linear objective function value.
-// model_cost_change = ... // Change in the value of the trust region objective.
-// if (step_evaluator->StepQuality(cost, model_cost_change) > threshold) {
-//   x = x + delta;
-//   step_evaluator->StepAccepted(cost, model_cost_change);
-// }
-class CERES_NO_EXPORT TrustRegionStepEvaluator {
- public:
-  // initial_cost is as the name implies the cost of the starting
-  // state of the trust region minimizer.
-  //
-  // max_consecutive_nonmonotonic_steps controls the window size used
-  // by the step selection algorithm to accept non-monotonic
-  // steps. Setting this parameter to zero, recovers the classic
-  // monotonic descent algorithm.
-  TrustRegionStepEvaluator(double initial_cost,
-                           int max_consecutive_nonmonotonic_steps);
-
-  // Return the quality of the step given its cost and the decrease in
-  // the cost of the model. model_cost_change has to be positive.
-  double StepQuality(double cost, double model_cost_change) const;
-
-  // Inform the step evaluator that a step with the given cost and
-  // model_cost_change has been accepted by the trust region
-  // minimizer.
-  void StepAccepted(double cost, double model_cost_change);
-
- private:
-  const int max_consecutive_nonmonotonic_steps_;
-  // The minimum cost encountered up till now.
-  double minimum_cost_;
-  // The current cost of the trust region minimizer as informed by the
-  // last call to StepAccepted.
-  double current_cost_;
-  double reference_cost_;
-  double candidate_cost_;
-  // Accumulated model cost since the last time the reference model
-  // cost was updated, i.e., when a step with cost less than the
-  // current known minimum cost is accepted.
-  double accumulated_reference_model_cost_change_;
-  // Accumulated model cost since the last time the candidate model
-  // cost was updated, i.e., a non-monotonic step was taken with a
-  // cost that was greater than the current candidate cost.
-  double accumulated_candidate_model_cost_change_;
-  // Number of steps taken since the last time minimum_cost was updated.
-  int num_consecutive_nonmonotonic_steps_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_TRUST_REGION_STEP_EVALUATOR_H_
diff --git a/third_party/ceres/internal/ceres/trust_region_strategy.cc b/third_party/ceres/internal/ceres/trust_region_strategy.cc
deleted file mode 100644
index da5a337..0000000
--- a/third_party/ceres/internal/ceres/trust_region_strategy.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//         keir@google.com (Keir Mierle)
-
-#include "ceres/trust_region_strategy.h"
-
-#include <memory>
-
-#include "ceres/dogleg_strategy.h"
-#include "ceres/levenberg_marquardt_strategy.h"
-
-namespace ceres::internal {
-
-TrustRegionStrategy::~TrustRegionStrategy() = default;
-
-std::unique_ptr<TrustRegionStrategy> TrustRegionStrategy::Create(
-    const Options& options) {
-  switch (options.trust_region_strategy_type) {
-    case LEVENBERG_MARQUARDT:
-      return std::make_unique<LevenbergMarquardtStrategy>(options);
-    case DOGLEG:
-      return std::make_unique<DoglegStrategy>(options);
-    default:
-      LOG(FATAL) << "Unknown trust region strategy: "
-                 << options.trust_region_strategy_type;
-  }
-
-  LOG(FATAL) << "Unknown trust region strategy: "
-             << options.trust_region_strategy_type;
-  return nullptr;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/trust_region_strategy.h b/third_party/ceres/internal/ceres/trust_region_strategy.h
deleted file mode 100644
index 0e0a301..0000000
--- a/third_party/ceres/internal/ceres/trust_region_strategy.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_TRUST_REGION_STRATEGY_H_
-#define CERES_INTERNAL_TRUST_REGION_STRATEGY_H_
-
-#include <memory>
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/linear_solver.h"
-
-namespace ceres::internal {
-
-class LinearSolver;
-class SparseMatrix;
-
-// Interface for classes implementing various trust region strategies
-// for nonlinear least squares problems.
-//
-// The object is expected to maintain and update a trust region
-// radius, which it then uses to solve for the trust region step using
-// the jacobian matrix and residual vector.
-//
-// Here the term trust region radius is used loosely, as the strategy
-// is free to treat it as guidance and violate it as need be. e.g.,
-// the LevenbergMarquardtStrategy uses the inverse of the trust region
-// radius to scale the damping term, which controls the step size, but
-// does not set a hard limit on its size.
-class CERES_NO_EXPORT TrustRegionStrategy {
- public:
-  struct Options {
-    TrustRegionStrategyType trust_region_strategy_type = LEVENBERG_MARQUARDT;
-    // Linear solver used for actually solving the trust region step.
-    LinearSolver* linear_solver = nullptr;
-    double initial_radius = 1e4;
-    double max_radius = 1e32;
-
-    // Minimum and maximum values of the diagonal damping matrix used
-    // by LevenbergMarquardtStrategy. The DoglegStrategy also uses
-    // these bounds to construct a regularizing diagonal to ensure
-    // that the Gauss-Newton step computation is of full rank.
-    double min_lm_diagonal = 1e-6;
-    double max_lm_diagonal = 1e32;
-
-    // Further specify which dogleg method to use
-    DoglegType dogleg_type = TRADITIONAL_DOGLEG;
-
-    ContextImpl* context = nullptr;
-    int num_threads = 1;
-  };
-
-  // Factory.
-  static std::unique_ptr<TrustRegionStrategy> Create(const Options& options);
-
-  virtual ~TrustRegionStrategy();
-
-  // Per solve options.
-  struct PerSolveOptions {
-    // Forcing sequence for inexact solves.
-    double eta = 1e-1;
-
-    DumpFormatType dump_format_type = TEXTFILE;
-
-    // If non-empty and dump_format_type is not CONSOLE, the trust
-    // regions strategy will write the linear system to file(s) with
-    // name starting with dump_filename_base.  If dump_format_type is
-    // CONSOLE then dump_filename_base will be ignored and the linear
-    // system will be written to the standard error.
-    std::string dump_filename_base;
-  };
-
-  struct Summary {
-    // If the trust region problem is,
-    //
-    //   1/2 x'Ax + b'x + c,
-    //
-    // then
-    //
-    //   residual_norm = |Ax -b|
-    double residual_norm = -1;
-
-    // Number of iterations used by the linear solver. If a linear
-    // solver was not called (e.g., DogLegStrategy after an
-    // unsuccessful step), then this would be zero.
-    int num_iterations = -1;
-
-    // Status of the linear solver used to solve the Newton system.
-    LinearSolverTerminationType termination_type =
-        LinearSolverTerminationType::FAILURE;
-  };
-
-  // Use the current radius to solve for the trust region step.
-  virtual Summary ComputeStep(const PerSolveOptions& per_solve_options,
-                              SparseMatrix* jacobian,
-                              const double* residuals,
-                              double* step) = 0;
-
-  // Inform the strategy that the current step has been accepted, and
-  // that the ratio of the decrease in the non-linear objective to the
-  // decrease in the trust region model is step_quality.
-  virtual void StepAccepted(double step_quality) = 0;
-
-  // Inform the strategy that the current step has been rejected, and
-  // that the ratio of the decrease in the non-linear objective to the
-  // decrease in the trust region model is step_quality.
-  virtual void StepRejected(double step_quality) = 0;
-
-  // Inform the strategy that the current step has been rejected
-  // because it was found to be numerically invalid.
-  // StepRejected/StepAccepted will not be called for this step, and
-  // the strategy is free to do what it wants with this information.
-  virtual void StepIsInvalid() = 0;
-
-  // Current trust region radius.
-  virtual double Radius() const = 0;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_TRUST_REGION_STRATEGY_H_
diff --git a/third_party/ceres/internal/ceres/types.cc b/third_party/ceres/internal/ceres/types.cc
deleted file mode 100644
index e000560..0000000
--- a/third_party/ceres/internal/ceres/types.cc
+++ /dev/null
@@ -1,466 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/types.h"
-
-#include <algorithm>
-#include <cctype>
-#include <string>
-
-#include "ceres/internal/config.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-// clang-format off
-#define CASESTR(x) case x: return #x
-#define STRENUM(x) if (value == #x) { *type = x; return true; }
-// clang-format on
-
-static void UpperCase(std::string* input) {
-  std::transform(input->begin(), input->end(), input->begin(), ::toupper);
-}
-
-const char* LinearSolverTypeToString(LinearSolverType type) {
-  switch (type) {
-    CASESTR(DENSE_NORMAL_CHOLESKY);
-    CASESTR(DENSE_QR);
-    CASESTR(SPARSE_NORMAL_CHOLESKY);
-    CASESTR(DENSE_SCHUR);
-    CASESTR(SPARSE_SCHUR);
-    CASESTR(ITERATIVE_SCHUR);
-    CASESTR(CGNR);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToLinearSolverType(std::string value, LinearSolverType* type) {
-  UpperCase(&value);
-  STRENUM(DENSE_NORMAL_CHOLESKY);
-  STRENUM(DENSE_QR);
-  STRENUM(SPARSE_NORMAL_CHOLESKY);
-  STRENUM(DENSE_SCHUR);
-  STRENUM(SPARSE_SCHUR);
-  STRENUM(ITERATIVE_SCHUR);
-  STRENUM(CGNR);
-  return false;
-}
-
-const char* PreconditionerTypeToString(PreconditionerType type) {
-  switch (type) {
-    CASESTR(IDENTITY);
-    CASESTR(JACOBI);
-    CASESTR(SCHUR_JACOBI);
-    CASESTR(SCHUR_POWER_SERIES_EXPANSION);
-    CASESTR(CLUSTER_JACOBI);
-    CASESTR(CLUSTER_TRIDIAGONAL);
-    CASESTR(SUBSET);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToPreconditionerType(std::string value, PreconditionerType* type) {
-  UpperCase(&value);
-  STRENUM(IDENTITY);
-  STRENUM(JACOBI);
-  STRENUM(SCHUR_JACOBI);
-  STRENUM(SCHUR_POWER_SERIES_EXPANSION);
-  STRENUM(CLUSTER_JACOBI);
-  STRENUM(CLUSTER_TRIDIAGONAL);
-  STRENUM(SUBSET);
-  return false;
-}
-
-const char* SparseLinearAlgebraLibraryTypeToString(
-    SparseLinearAlgebraLibraryType type) {
-  switch (type) {
-    CASESTR(SUITE_SPARSE);
-    CASESTR(EIGEN_SPARSE);
-    CASESTR(ACCELERATE_SPARSE);
-    CASESTR(CUDA_SPARSE);
-    CASESTR(NO_SPARSE);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToSparseLinearAlgebraLibraryType(
-    std::string value, SparseLinearAlgebraLibraryType* type) {
-  UpperCase(&value);
-  STRENUM(SUITE_SPARSE);
-  STRENUM(EIGEN_SPARSE);
-  STRENUM(ACCELERATE_SPARSE);
-  STRENUM(CUDA_SPARSE);
-  STRENUM(NO_SPARSE);
-  return false;
-}
-
-const char* LinearSolverOrderingTypeToString(LinearSolverOrderingType type) {
-  switch (type) {
-    CASESTR(AMD);
-    CASESTR(NESDIS);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToLinearSolverOrderingType(std::string value,
-                                      LinearSolverOrderingType* type) {
-  UpperCase(&value);
-  STRENUM(AMD);
-  STRENUM(NESDIS);
-  return false;
-}
-
-const char* DenseLinearAlgebraLibraryTypeToString(
-    DenseLinearAlgebraLibraryType type) {
-  switch (type) {
-    CASESTR(EIGEN);
-    CASESTR(LAPACK);
-    CASESTR(CUDA);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToDenseLinearAlgebraLibraryType(
-    std::string value, DenseLinearAlgebraLibraryType* type) {
-  UpperCase(&value);
-  STRENUM(EIGEN);
-  STRENUM(LAPACK);
-  STRENUM(CUDA);
-  return false;
-}
-
-const char* TrustRegionStrategyTypeToString(TrustRegionStrategyType type) {
-  switch (type) {
-    CASESTR(LEVENBERG_MARQUARDT);
-    CASESTR(DOGLEG);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToTrustRegionStrategyType(std::string value,
-                                     TrustRegionStrategyType* type) {
-  UpperCase(&value);
-  STRENUM(LEVENBERG_MARQUARDT);
-  STRENUM(DOGLEG);
-  return false;
-}
-
-const char* DoglegTypeToString(DoglegType type) {
-  switch (type) {
-    CASESTR(TRADITIONAL_DOGLEG);
-    CASESTR(SUBSPACE_DOGLEG);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToDoglegType(std::string value, DoglegType* type) {
-  UpperCase(&value);
-  STRENUM(TRADITIONAL_DOGLEG);
-  STRENUM(SUBSPACE_DOGLEG);
-  return false;
-}
-
-const char* MinimizerTypeToString(MinimizerType type) {
-  switch (type) {
-    CASESTR(TRUST_REGION);
-    CASESTR(LINE_SEARCH);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToMinimizerType(std::string value, MinimizerType* type) {
-  UpperCase(&value);
-  STRENUM(TRUST_REGION);
-  STRENUM(LINE_SEARCH);
-  return false;
-}
-
-const char* LineSearchDirectionTypeToString(LineSearchDirectionType type) {
-  switch (type) {
-    CASESTR(STEEPEST_DESCENT);
-    CASESTR(NONLINEAR_CONJUGATE_GRADIENT);
-    CASESTR(LBFGS);
-    CASESTR(BFGS);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToLineSearchDirectionType(std::string value,
-                                     LineSearchDirectionType* type) {
-  UpperCase(&value);
-  STRENUM(STEEPEST_DESCENT);
-  STRENUM(NONLINEAR_CONJUGATE_GRADIENT);
-  STRENUM(LBFGS);
-  STRENUM(BFGS);
-  return false;
-}
-
-const char* LineSearchTypeToString(LineSearchType type) {
-  switch (type) {
-    CASESTR(ARMIJO);
-    CASESTR(WOLFE);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToLineSearchType(std::string value, LineSearchType* type) {
-  UpperCase(&value);
-  STRENUM(ARMIJO);
-  STRENUM(WOLFE);
-  return false;
-}
-
-const char* LineSearchInterpolationTypeToString(
-    LineSearchInterpolationType type) {
-  switch (type) {
-    CASESTR(BISECTION);
-    CASESTR(QUADRATIC);
-    CASESTR(CUBIC);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToLineSearchInterpolationType(std::string value,
-                                         LineSearchInterpolationType* type) {
-  UpperCase(&value);
-  STRENUM(BISECTION);
-  STRENUM(QUADRATIC);
-  STRENUM(CUBIC);
-  return false;
-}
-
-const char* NonlinearConjugateGradientTypeToString(
-    NonlinearConjugateGradientType type) {
-  switch (type) {
-    CASESTR(FLETCHER_REEVES);
-    CASESTR(POLAK_RIBIERE);
-    CASESTR(HESTENES_STIEFEL);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToNonlinearConjugateGradientType(
-    std::string value, NonlinearConjugateGradientType* type) {
-  UpperCase(&value);
-  STRENUM(FLETCHER_REEVES);
-  STRENUM(POLAK_RIBIERE);
-  STRENUM(HESTENES_STIEFEL);
-  return false;
-}
-
-const char* CovarianceAlgorithmTypeToString(CovarianceAlgorithmType type) {
-  switch (type) {
-    CASESTR(DENSE_SVD);
-    CASESTR(SPARSE_QR);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToCovarianceAlgorithmType(std::string value,
-                                     CovarianceAlgorithmType* type) {
-  UpperCase(&value);
-  STRENUM(DENSE_SVD);
-  STRENUM(SPARSE_QR);
-  return false;
-}
-
-const char* NumericDiffMethodTypeToString(NumericDiffMethodType type) {
-  switch (type) {
-    CASESTR(CENTRAL);
-    CASESTR(FORWARD);
-    CASESTR(RIDDERS);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToNumericDiffMethodType(std::string value,
-                                   NumericDiffMethodType* type) {
-  UpperCase(&value);
-  STRENUM(CENTRAL);
-  STRENUM(FORWARD);
-  STRENUM(RIDDERS);
-  return false;
-}
-
-const char* VisibilityClusteringTypeToString(VisibilityClusteringType type) {
-  switch (type) {
-    CASESTR(CANONICAL_VIEWS);
-    CASESTR(SINGLE_LINKAGE);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringToVisibilityClusteringType(std::string value,
-                                      VisibilityClusteringType* type) {
-  UpperCase(&value);
-  STRENUM(CANONICAL_VIEWS);
-  STRENUM(SINGLE_LINKAGE);
-  return false;
-}
-
-const char* TerminationTypeToString(TerminationType type) {
-  switch (type) {
-    CASESTR(CONVERGENCE);
-    CASESTR(NO_CONVERGENCE);
-    CASESTR(FAILURE);
-    CASESTR(USER_SUCCESS);
-    CASESTR(USER_FAILURE);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-const char* LoggingTypeToString(LoggingType type) {
-  switch (type) {
-    CASESTR(SILENT);
-    CASESTR(PER_MINIMIZER_ITERATION);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringtoLoggingType(std::string value, LoggingType* type) {
-  UpperCase(&value);
-  STRENUM(SILENT);
-  STRENUM(PER_MINIMIZER_ITERATION);
-  return false;
-}
-
-const char* DumpFormatTypeToString(DumpFormatType type) {
-  switch (type) {
-    CASESTR(CONSOLE);
-    CASESTR(TEXTFILE);
-    default:
-      return "UNKNOWN";
-  }
-}
-
-bool StringtoDumpFormatType(std::string value, DumpFormatType* type) {
-  UpperCase(&value);
-  STRENUM(CONSOLE);
-  STRENUM(TEXTFILE);
-  return false;
-}
-
-#undef CASESTR
-#undef STRENUM
-
-bool IsSchurType(LinearSolverType type) {
-  // clang-format off
-  return ((type == SPARSE_SCHUR) ||
-          (type == DENSE_SCHUR)  ||
-          (type == ITERATIVE_SCHUR));
-  // clang-format on
-}
-
-bool IsSparseLinearAlgebraLibraryTypeAvailable(
-    SparseLinearAlgebraLibraryType type) {
-  if (type == SUITE_SPARSE) {
-#ifdef CERES_NO_SUITESPARSE
-    return false;
-#else
-    return true;
-#endif
-  }
-
-  if (type == ACCELERATE_SPARSE) {
-#ifdef CERES_NO_ACCELERATE_SPARSE
-    return false;
-#else
-    return true;
-#endif
-  }
-
-  if (type == EIGEN_SPARSE) {
-#ifdef CERES_USE_EIGEN_SPARSE
-    return true;
-#else
-    return false;
-#endif
-  }
-
-  if (type == CUDA_SPARSE) {
-#ifdef CERES_NO_CUDA
-    return false;
-#else
-    return true;
-#endif
-  }
-
-  if (type == NO_SPARSE) {
-    return true;
-  }
-
-  LOG(WARNING) << "Unknown sparse linear algebra library " << type;
-  return false;
-}
-
-bool IsDenseLinearAlgebraLibraryTypeAvailable(
-    DenseLinearAlgebraLibraryType type) {
-  if (type == EIGEN) {
-    return true;
-  }
-
-  if (type == LAPACK) {
-#ifdef CERES_NO_LAPACK
-    return false;
-#else
-    return true;
-#endif
-  }
-
-  if (type == CUDA) {
-#ifdef CERES_NO_CUDA
-    return false;
-#else
-    return true;
-#endif
-  }
-
-  LOG(WARNING) << "Unknown dense linear algebra library " << type;
-  return false;
-}
-
-}  // namespace ceres
diff --git a/third_party/ceres/internal/ceres/visibility.cc b/third_party/ceres/internal/ceres/visibility.cc
deleted file mode 100644
index 6c10fb2..0000000
--- a/third_party/ceres/internal/ceres/visibility.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: kushalav@google.com (Avanish Kushal)
-
-#include "ceres/visibility.h"
-
-#include <algorithm>
-#include <cmath>
-#include <ctime>
-#include <memory>
-#include <set>
-#include <unordered_map>
-#include <utility>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/graph.h"
-#include "ceres/pair_hash.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-void ComputeVisibility(const CompressedRowBlockStructure& block_structure,
-                       const int num_eliminate_blocks,
-                       std::vector<std::set<int>>* visibility) {
-  CHECK(visibility != nullptr);
-
-  // Clear the visibility vector and resize it to hold a
-  // vector for each camera.
-  visibility->resize(0);
-  visibility->resize(block_structure.cols.size() - num_eliminate_blocks);
-
-  for (const auto& row : block_structure.rows) {
-    const std::vector<Cell>& cells = row.cells;
-    int block_id = cells[0].block_id;
-    // If the first block is not an e_block, then skip this row block.
-    if (block_id >= num_eliminate_blocks) {
-      continue;
-    }
-
-    for (int j = 1; j < cells.size(); ++j) {
-      int camera_block_id = cells[j].block_id - num_eliminate_blocks;
-      DCHECK_GE(camera_block_id, 0);
-      DCHECK_LT(camera_block_id, visibility->size());
-      (*visibility)[camera_block_id].insert(block_id);
-    }
-  }
-}
-
-std::unique_ptr<WeightedGraph<int>> CreateSchurComplementGraph(
-    const std::vector<std::set<int>>& visibility) {
-  const time_t start_time = time(nullptr);
-  // Compute the number of e_blocks/point blocks. Since the visibility
-  // set for each e_block/camera contains the set of e_blocks/points
-  // visible to it, we find the maximum across all visibility sets.
-  int num_points = 0;
-  for (const auto& visible : visibility) {
-    if (!visible.empty()) {
-      num_points = std::max(num_points, (*visible.rbegin()) + 1);
-    }
-  }
-
-  // Invert the visibility. The input is a camera->point mapping,
-  // which tells us which points are visible in which
-  // cameras. However, to compute the sparsity structure of the Schur
-  // Complement efficiently, its better to have the point->camera
-  // mapping.
-  std::vector<std::set<int>> inverse_visibility(num_points);
-  for (int i = 0; i < visibility.size(); i++) {
-    const std::set<int>& visibility_set = visibility[i];
-    for (int v : visibility_set) {
-      inverse_visibility[v].insert(i);
-    }
-  }
-
-  // Map from camera pairs to number of points visible to both cameras
-  // in the pair.
-  std::unordered_map<std::pair<int, int>, int, pair_hash> camera_pairs;
-
-  // Count the number of points visible to each camera/f_block pair.
-  for (const auto& inverse_visibility_set : inverse_visibility) {
-    for (auto camera1 = inverse_visibility_set.begin();
-         camera1 != inverse_visibility_set.end();
-         ++camera1) {
-      auto camera2 = camera1;
-      for (++camera2; camera2 != inverse_visibility_set.end(); ++camera2) {
-        ++(camera_pairs[std::make_pair(*camera1, *camera2)]);
-      }
-    }
-  }
-
-  auto graph = std::make_unique<WeightedGraph<int>>();
-
-  // Add vertices and initialize the pairs for self edges so that self
-  // edges are guaranteed. This is needed for the Canonical views
-  // algorithm to work correctly.
-  static constexpr double kSelfEdgeWeight = 1.0;
-  for (int i = 0; i < visibility.size(); ++i) {
-    graph->AddVertex(i);
-    graph->AddEdge(i, i, kSelfEdgeWeight);
-  }
-
-  // Add an edge for each camera pair.
-  for (const auto& camera_pair_count : camera_pairs) {
-    const int camera1 = camera_pair_count.first.first;
-    const int camera2 = camera_pair_count.first.second;
-    const int count = camera_pair_count.second;
-    DCHECK_NE(camera1, camera2);
-    // Static cast necessary for Windows.
-    const double weight =
-        static_cast<double>(count) /
-        (sqrt(static_cast<double>(visibility[camera1].size() *
-                                  visibility[camera2].size())));
-    graph->AddEdge(camera1, camera2, weight);
-  }
-
-  VLOG(2) << "Schur complement graph time: " << (time(nullptr) - start_time);
-  return graph;
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/visibility.h b/third_party/ceres/internal/ceres/visibility.h
deleted file mode 100644
index 2e5f4fc..0000000
--- a/third_party/ceres/internal/ceres/visibility.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: kushalav@google.com (Avanish Kushal)
-//         sameeragarwal@google.com (Sameer Agarwal)
-//
-// Functions to manipulate visibility information from the block
-// structure of sparse matrices.
-
-#ifndef CERES_INTERNAL_VISIBILITY_H_
-#define CERES_INTERNAL_VISIBILITY_H_
-
-#include <memory>
-#include <set>
-#include <vector>
-
-#include "ceres/graph.h"
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-
-namespace ceres::internal {
-
-struct CompressedRowBlockStructure;
-
-// Given a compressed row block structure, computes the set of
-// e_blocks "visible" to each f_block. If an e_block co-occurs with an
-// f_block in a residual block, it is visible to the f_block. The
-// first num_eliminate_blocks columns blocks are e_blocks and the rest
-// f_blocks.
-//
-// In a structure from motion problem, e_blocks correspond to 3D
-// points and f_blocks correspond to cameras.
-CERES_NO_EXPORT void ComputeVisibility(
-    const CompressedRowBlockStructure& block_structure,
-    int num_eliminate_blocks,
-    std::vector<std::set<int>>* visibility);
-
-// Given f_block visibility as computed by the ComputeVisibility
-// function above, construct and return a graph whose vertices are
-// f_blocks and an edge connects two vertices if they have at least one
-// e_block in common. The weight of this edge is normalized dot
-// product between the visibility vectors of the two
-// vertices/f_blocks.
-//
-// This graph reflects the sparsity structure of reduced camera
-// matrix/Schur complement matrix obtained by eliminating the e_blocks
-// from the normal equations.
-//
-// Caller acquires ownership of the returned WeightedGraph pointer
-// (heap-allocated).
-CERES_NO_EXPORT std::unique_ptr<WeightedGraph<int>> CreateSchurComplementGraph(
-    const std::vector<std::set<int>>& visibility);
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_VISIBILITY_H_
diff --git a/third_party/ceres/internal/ceres/visibility_based_preconditioner.cc b/third_party/ceres/internal/ceres/visibility_based_preconditioner.cc
deleted file mode 100644
index 42e8a6e..0000000
--- a/third_party/ceres/internal/ceres/visibility_based_preconditioner.cc
+++ /dev/null
@@ -1,574 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/visibility_based_preconditioner.h"
-
-#include <algorithm>
-#include <functional>
-#include <iterator>
-#include <memory>
-#include <set>
-#include <string>
-#include <unordered_set>
-#include <utility>
-#include <vector>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_sparse_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/canonical_views_clustering.h"
-#include "ceres/graph.h"
-#include "ceres/graph_algorithms.h"
-#include "ceres/linear_solver.h"
-#include "ceres/schur_eliminator.h"
-#include "ceres/single_linkage_clustering.h"
-#include "ceres/visibility.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// TODO(sameeragarwal): Currently these are magic weights for the
-// preconditioner construction. Move these higher up into the Options
-// struct and provide some guidelines for choosing them.
-//
-// This will require some more work on the clustering algorithm and
-// possibly some more refactoring of the code.
-static constexpr double kCanonicalViewsSizePenaltyWeight = 3.0;
-static constexpr double kCanonicalViewsSimilarityPenaltyWeight = 0.0;
-static constexpr double kSingleLinkageMinSimilarity = 0.9;
-
-VisibilityBasedPreconditioner::VisibilityBasedPreconditioner(
-    const CompressedRowBlockStructure& bs, Preconditioner::Options options)
-    : options_(std::move(options)), num_blocks_(0), num_clusters_(0) {
-  CHECK_GT(options_.elimination_groups.size(), 1);
-  CHECK_GT(options_.elimination_groups[0], 0);
-  CHECK(options_.type == CLUSTER_JACOBI || options_.type == CLUSTER_TRIDIAGONAL)
-      << "Unknown preconditioner type: " << options_.type;
-  num_blocks_ = bs.cols.size() - options_.elimination_groups[0];
-  CHECK_GT(num_blocks_, 0) << "Jacobian should have at least 1 f_block for "
-                           << "visibility based preconditioning.";
-  CHECK(options_.context != nullptr);
-
-  // Vector of camera block sizes
-  blocks_ = Tail(bs.cols, bs.cols.size() - options_.elimination_groups[0]);
-
-  const time_t start_time = time(nullptr);
-  switch (options_.type) {
-    case CLUSTER_JACOBI:
-      ComputeClusterJacobiSparsity(bs);
-      break;
-    case CLUSTER_TRIDIAGONAL:
-      ComputeClusterTridiagonalSparsity(bs);
-      break;
-    default:
-      LOG(FATAL) << "Unknown preconditioner type";
-  }
-  const time_t structure_time = time(nullptr);
-  InitStorage(bs);
-  const time_t storage_time = time(nullptr);
-  InitEliminator(bs);
-  const time_t eliminator_time = time(nullptr);
-
-  LinearSolver::Options sparse_cholesky_options;
-  sparse_cholesky_options.sparse_linear_algebra_library_type =
-      options_.sparse_linear_algebra_library_type;
-  sparse_cholesky_options.ordering_type = options_.ordering_type;
-  sparse_cholesky_ = SparseCholesky::Create(sparse_cholesky_options);
-
-  const time_t init_time = time(nullptr);
-  VLOG(2) << "init time: " << init_time - start_time
-          << " structure time: " << structure_time - start_time
-          << " storage time:" << storage_time - structure_time
-          << " eliminator time: " << eliminator_time - storage_time;
-}
-
-VisibilityBasedPreconditioner::~VisibilityBasedPreconditioner() = default;
-
-// Determine the sparsity structure of the CLUSTER_JACOBI
-// preconditioner. It clusters cameras using their scene
-// visibility. The clusters form the diagonal blocks of the
-// preconditioner matrix.
-void VisibilityBasedPreconditioner::ComputeClusterJacobiSparsity(
-    const CompressedRowBlockStructure& bs) {
-  std::vector<std::set<int>> visibility;
-  ComputeVisibility(bs, options_.elimination_groups[0], &visibility);
-  CHECK_EQ(num_blocks_, visibility.size());
-  ClusterCameras(visibility);
-  cluster_pairs_.clear();
-  for (int i = 0; i < num_clusters_; ++i) {
-    cluster_pairs_.insert(std::make_pair(i, i));
-  }
-}
-
-// Determine the sparsity structure of the CLUSTER_TRIDIAGONAL
-// preconditioner. It clusters cameras using the scene visibility and
-// then finds the strongly interacting pairs of clusters by
-// constructing another graph with the clusters as vertices and
-// approximating it with a degree-2 maximum spanning forest. The set
-// of edges in this forest are the cluster pairs.
-void VisibilityBasedPreconditioner::ComputeClusterTridiagonalSparsity(
-    const CompressedRowBlockStructure& bs) {
-  std::vector<std::set<int>> visibility;
-  ComputeVisibility(bs, options_.elimination_groups[0], &visibility);
-  CHECK_EQ(num_blocks_, visibility.size());
-  ClusterCameras(visibility);
-
-  // Construct a weighted graph on the set of clusters, where the
-  // edges are the number of 3D points/e_blocks visible in both the
-  // clusters at the ends of the edge. Return an approximate degree-2
-  // maximum spanning forest of this graph.
-  std::vector<std::set<int>> cluster_visibility;
-  ComputeClusterVisibility(visibility, &cluster_visibility);
-  auto cluster_graph = CreateClusterGraph(cluster_visibility);
-  CHECK(cluster_graph != nullptr);
-  auto forest = Degree2MaximumSpanningForest(*cluster_graph);
-  CHECK(forest != nullptr);
-  ForestToClusterPairs(*forest, &cluster_pairs_);
-}
-
-// Allocate storage for the preconditioner matrix.
-void VisibilityBasedPreconditioner::InitStorage(
-    const CompressedRowBlockStructure& bs) {
-  ComputeBlockPairsInPreconditioner(bs);
-  m_ = std::make_unique<BlockRandomAccessSparseMatrix>(
-      blocks_, block_pairs_, options_.context, options_.num_threads);
-}
-
-// Call the canonical views algorithm and cluster the cameras based on
-// their visibility sets. The visibility set of a camera is the set of
-// e_blocks/3D points in the scene that are seen by it.
-//
-// The cluster_membership_ vector is updated to indicate cluster
-// memberships for each camera block.
-void VisibilityBasedPreconditioner::ClusterCameras(
-    const std::vector<std::set<int>>& visibility) {
-  auto schur_complement_graph = CreateSchurComplementGraph(visibility);
-  CHECK(schur_complement_graph != nullptr);
-
-  std::unordered_map<int, int> membership;
-
-  if (options_.visibility_clustering_type == CANONICAL_VIEWS) {
-    std::vector<int> centers;
-    CanonicalViewsClusteringOptions clustering_options;
-    clustering_options.size_penalty_weight = kCanonicalViewsSizePenaltyWeight;
-    clustering_options.similarity_penalty_weight =
-        kCanonicalViewsSimilarityPenaltyWeight;
-    ComputeCanonicalViewsClustering(
-        clustering_options, *schur_complement_graph, &centers, &membership);
-    num_clusters_ = centers.size();
-  } else if (options_.visibility_clustering_type == SINGLE_LINKAGE) {
-    SingleLinkageClusteringOptions clustering_options;
-    clustering_options.min_similarity = kSingleLinkageMinSimilarity;
-    num_clusters_ = ComputeSingleLinkageClustering(
-        clustering_options, *schur_complement_graph, &membership);
-  } else {
-    LOG(FATAL) << "Unknown visibility clustering algorithm.";
-  }
-
-  CHECK_GT(num_clusters_, 0);
-  VLOG(2) << "num_clusters: " << num_clusters_;
-  FlattenMembershipMap(membership, &cluster_membership_);
-}
-
-// Compute the block sparsity structure of the Schur complement
-// matrix. For each pair of cameras contributing a non-zero cell to
-// the schur complement, determine if that cell is present in the
-// preconditioner or not.
-//
-// A pair of cameras contribute a cell to the preconditioner if they
-// are part of the same cluster or if the two clusters that they
-// belong have an edge connecting them in the degree-2 maximum
-// spanning forest.
-//
-// For example, a camera pair (i,j) where i belongs to cluster1 and
-// j belongs to cluster2 (assume that cluster1 < cluster2).
-//
-// The cell corresponding to (i,j) is present in the preconditioner
-// if cluster1 == cluster2 or the pair (cluster1, cluster2) were
-// connected by an edge in the degree-2 maximum spanning forest.
-//
-// Since we have already expanded the forest into a set of camera
-// pairs/edges, including self edges, the check can be reduced to
-// checking membership of (cluster1, cluster2) in cluster_pairs_.
-void VisibilityBasedPreconditioner::ComputeBlockPairsInPreconditioner(
-    const CompressedRowBlockStructure& bs) {
-  block_pairs_.clear();
-  for (int i = 0; i < num_blocks_; ++i) {
-    block_pairs_.insert(std::make_pair(i, i));
-  }
-
-  int r = 0;
-  const int num_row_blocks = bs.rows.size();
-  const int num_eliminate_blocks = options_.elimination_groups[0];
-
-  // Iterate over each row of the matrix. The block structure of the
-  // matrix is assumed to be sorted in order of the e_blocks/point
-  // blocks. Thus all row blocks containing an e_block/point occur
-  // contiguously. Further, if present, an e_block is always the first
-  // parameter block in each row block.  These structural assumptions
-  // are common to all Schur complement based solvers in Ceres.
-  //
-  // For each e_block/point block we identify the set of cameras
-  // seeing it. The cross product of this set with itself is the set
-  // of non-zero cells contributed by this e_block.
-  //
-  // The time complexity of this is O(nm^2) where, n is the number of
-  // 3d points and m is the maximum number of cameras seeing any
-  // point, which for most scenes is a fairly small number.
-  while (r < num_row_blocks) {
-    int e_block_id = bs.rows[r].cells.front().block_id;
-    if (e_block_id >= num_eliminate_blocks) {
-      // Skip the rows whose first block is an f_block.
-      break;
-    }
-
-    std::set<int> f_blocks;
-    for (; r < num_row_blocks; ++r) {
-      const CompressedRow& row = bs.rows[r];
-      if (row.cells.front().block_id != e_block_id) {
-        break;
-      }
-
-      // Iterate over the blocks in the row, ignoring the first block
-      // since it is the one to be eliminated and adding the rest to
-      // the list of f_blocks associated with this e_block.
-      for (int c = 1; c < row.cells.size(); ++c) {
-        const Cell& cell = row.cells[c];
-        const int f_block_id = cell.block_id - num_eliminate_blocks;
-        CHECK_GE(f_block_id, 0);
-        f_blocks.insert(f_block_id);
-      }
-    }
-
-    for (auto block1 = f_blocks.begin(); block1 != f_blocks.end(); ++block1) {
-      auto block2 = block1;
-      ++block2;
-      for (; block2 != f_blocks.end(); ++block2) {
-        if (IsBlockPairInPreconditioner(*block1, *block2)) {
-          block_pairs_.emplace(*block1, *block2);
-        }
-      }
-    }
-  }
-
-  // The remaining rows which do not contain any e_blocks.
-  for (; r < num_row_blocks; ++r) {
-    const CompressedRow& row = bs.rows[r];
-    CHECK_GE(row.cells.front().block_id, num_eliminate_blocks);
-    for (int i = 0; i < row.cells.size(); ++i) {
-      const int block1 = row.cells[i].block_id - num_eliminate_blocks;
-      for (const auto& cell : row.cells) {
-        const int block2 = cell.block_id - num_eliminate_blocks;
-        if (block1 <= block2) {
-          if (IsBlockPairInPreconditioner(block1, block2)) {
-            block_pairs_.insert(std::make_pair(block1, block2));
-          }
-        }
-      }
-    }
-  }
-
-  VLOG(1) << "Block pair stats: " << block_pairs_.size();
-}
-
-// Initialize the SchurEliminator.
-void VisibilityBasedPreconditioner::InitEliminator(
-    const CompressedRowBlockStructure& bs) {
-  LinearSolver::Options eliminator_options;
-  eliminator_options.elimination_groups = options_.elimination_groups;
-  eliminator_options.num_threads = options_.num_threads;
-  eliminator_options.e_block_size = options_.e_block_size;
-  eliminator_options.f_block_size = options_.f_block_size;
-  eliminator_options.row_block_size = options_.row_block_size;
-  eliminator_options.context = options_.context;
-  eliminator_ = SchurEliminatorBase::Create(eliminator_options);
-  const bool kFullRankETE = true;
-  eliminator_->Init(
-      eliminator_options.elimination_groups[0], kFullRankETE, &bs);
-}
-
-// Update the values of the preconditioner matrix and factorize it.
-bool VisibilityBasedPreconditioner::UpdateImpl(const BlockSparseMatrix& A,
-                                               const double* D) {
-  const time_t start_time = time(nullptr);
-  const int num_rows = m_->num_rows();
-  CHECK_GT(num_rows, 0);
-
-  // Compute a subset of the entries of the Schur complement.
-  eliminator_->Eliminate(
-      BlockSparseMatrixData(A), nullptr, D, m_.get(), nullptr);
-
-  // Try factorizing the matrix. For CLUSTER_JACOBI, this should
-  // always succeed modulo some numerical/conditioning problems. For
-  // CLUSTER_TRIDIAGONAL, in general the preconditioner matrix as
-  // constructed is not positive definite. However, we will go ahead
-  // and try factorizing it. If it works, great, otherwise we scale
-  // all the cells in the preconditioner corresponding to the edges in
-  // the degree-2 forest and that guarantees positive
-  // definiteness. The proof of this fact can be found in Lemma 1 in
-  // "Visibility Based Preconditioning for Bundle Adjustment".
-  //
-  // Doing the factorization like this saves us matrix mass when
-  // scaling is not needed, which is quite often in our experience.
-  LinearSolverTerminationType status = Factorize();
-
-  if (status == LinearSolverTerminationType::FATAL_ERROR) {
-    return false;
-  }
-
-  // The scaling only affects the tri-diagonal case, since
-  // ScaleOffDiagonalBlocks only pays attention to the cells that
-  // belong to the edges of the degree-2 forest. In the CLUSTER_JACOBI
-  // case, the preconditioner is guaranteed to be positive
-  // semidefinite.
-  if (status == LinearSolverTerminationType::FAILURE &&
-      options_.type == CLUSTER_TRIDIAGONAL) {
-    VLOG(1) << "Unscaled factorization failed. Retrying with off-diagonal "
-            << "scaling";
-    ScaleOffDiagonalCells();
-    status = Factorize();
-  }
-
-  VLOG(2) << "Compute time: " << time(nullptr) - start_time;
-  return (status == LinearSolverTerminationType::SUCCESS);
-}
-
-// Consider the preconditioner matrix as meta-block matrix, whose
-// blocks correspond to the clusters. Then cluster pairs corresponding
-// to edges in the degree-2 forest are off diagonal entries of this
-// matrix. Scaling these off-diagonal entries by 1/2 forces this
-// matrix to be positive definite.
-void VisibilityBasedPreconditioner::ScaleOffDiagonalCells() {
-  for (const auto& block_pair : block_pairs_) {
-    const int block1 = block_pair.first;
-    const int block2 = block_pair.second;
-    if (!IsBlockPairOffDiagonal(block1, block2)) {
-      continue;
-    }
-
-    int r, c, row_stride, col_stride;
-    CellInfo* cell_info =
-        m_->GetCell(block1, block2, &r, &c, &row_stride, &col_stride);
-    CHECK(cell_info != nullptr)
-        << "Cell missing for block pair (" << block1 << "," << block2 << ")"
-        << " cluster pair (" << cluster_membership_[block1] << " "
-        << cluster_membership_[block2] << ")";
-
-    // Ah the magic of tri-diagonal matrices and diagonal
-    // dominance. See Lemma 1 in "Visibility Based Preconditioning
-    // For Bundle Adjustment".
-    MatrixRef m(cell_info->values, row_stride, col_stride);
-    m.block(r, c, blocks_[block1].size, blocks_[block2].size) *= 0.5;
-  }
-}
-
-// Compute the sparse Cholesky factorization of the preconditioner
-// matrix.
-LinearSolverTerminationType VisibilityBasedPreconditioner::Factorize() {
-  // Extract the BlockSparseMatrix that is used for actually storing
-  // S and convert it into a CompressedRowSparseMatrix.
-  const BlockSparseMatrix* bsm =
-      down_cast<BlockRandomAccessSparseMatrix*>(m_.get())->matrix();
-  const CompressedRowSparseMatrix::StorageType storage_type =
-      sparse_cholesky_->StorageType();
-  if (storage_type ==
-      CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR) {
-    if (!m_crs_) {
-      m_crs_ = bsm->ToCompressedRowSparseMatrix();
-      m_crs_->set_storage_type(
-          CompressedRowSparseMatrix::StorageType::UPPER_TRIANGULAR);
-    } else {
-      bsm->UpdateCompressedRowSparseMatrix(m_crs_.get());
-    }
-  } else {
-    if (!m_crs_) {
-      m_crs_ = bsm->ToCompressedRowSparseMatrixTranspose();
-      m_crs_->set_storage_type(
-          CompressedRowSparseMatrix::StorageType::LOWER_TRIANGULAR);
-    } else {
-      bsm->UpdateCompressedRowSparseMatrixTranspose(m_crs_.get());
-    }
-  }
-
-  std::string message;
-  return sparse_cholesky_->Factorize(m_crs_.get(), &message);
-}
-
-void VisibilityBasedPreconditioner::RightMultiplyAndAccumulate(
-    const double* x, double* y) const {
-  CHECK(x != nullptr);
-  CHECK(y != nullptr);
-  CHECK(sparse_cholesky_ != nullptr);
-  std::string message;
-  sparse_cholesky_->Solve(x, y, &message);
-}
-
-int VisibilityBasedPreconditioner::num_rows() const { return m_->num_rows(); }
-
-// Classify camera/f_block pairs as in and out of the preconditioner,
-// based on whether the cluster pair that they belong to is in the
-// preconditioner or not.
-bool VisibilityBasedPreconditioner::IsBlockPairInPreconditioner(
-    const int block1, const int block2) const {
-  int cluster1 = cluster_membership_[block1];
-  int cluster2 = cluster_membership_[block2];
-  if (cluster1 > cluster2) {
-    std::swap(cluster1, cluster2);
-  }
-  return (cluster_pairs_.count(std::make_pair(cluster1, cluster2)) > 0);
-}
-
-bool VisibilityBasedPreconditioner::IsBlockPairOffDiagonal(
-    const int block1, const int block2) const {
-  return (cluster_membership_[block1] != cluster_membership_[block2]);
-}
-
-// Convert a graph into a list of edges that includes self edges for
-// each vertex.
-void VisibilityBasedPreconditioner::ForestToClusterPairs(
-    const WeightedGraph<int>& forest,
-    std::unordered_set<std::pair<int, int>, pair_hash>* cluster_pairs) const {
-  CHECK(cluster_pairs != nullptr);
-  cluster_pairs->clear();
-  const std::unordered_set<int>& vertices = forest.vertices();
-  CHECK_EQ(vertices.size(), num_clusters_);
-
-  // Add all the cluster pairs corresponding to the edges in the
-  // forest.
-  for (const int cluster1 : vertices) {
-    cluster_pairs->insert(std::make_pair(cluster1, cluster1));
-    const std::unordered_set<int>& neighbors = forest.Neighbors(cluster1);
-    for (const int cluster2 : neighbors) {
-      if (cluster1 < cluster2) {
-        cluster_pairs->insert(std::make_pair(cluster1, cluster2));
-      }
-    }
-  }
-}
-
-// The visibility set of a cluster is the union of the visibility sets
-// of all its cameras. In other words, the set of points visible to
-// any camera in the cluster.
-void VisibilityBasedPreconditioner::ComputeClusterVisibility(
-    const std::vector<std::set<int>>& visibility,
-    std::vector<std::set<int>>* cluster_visibility) const {
-  CHECK(cluster_visibility != nullptr);
-  cluster_visibility->resize(0);
-  cluster_visibility->resize(num_clusters_);
-  for (int i = 0; i < num_blocks_; ++i) {
-    const int cluster_id = cluster_membership_[i];
-    (*cluster_visibility)[cluster_id].insert(visibility[i].begin(),
-                                             visibility[i].end());
-  }
-}
-
-// Construct a graph whose vertices are the clusters, and the edge
-// weights are the number of 3D points visible to cameras in both the
-// vertices.
-std::unique_ptr<WeightedGraph<int>>
-VisibilityBasedPreconditioner::CreateClusterGraph(
-    const std::vector<std::set<int>>& cluster_visibility) const {
-  auto cluster_graph = std::make_unique<WeightedGraph<int>>();
-
-  for (int i = 0; i < num_clusters_; ++i) {
-    cluster_graph->AddVertex(i);
-  }
-
-  for (int i = 0; i < num_clusters_; ++i) {
-    const std::set<int>& cluster_i = cluster_visibility[i];
-    for (int j = i + 1; j < num_clusters_; ++j) {
-      std::vector<int> intersection;
-      const std::set<int>& cluster_j = cluster_visibility[j];
-      std::set_intersection(cluster_i.begin(),
-                            cluster_i.end(),
-                            cluster_j.begin(),
-                            cluster_j.end(),
-                            std::back_inserter(intersection));
-
-      if (intersection.size() > 0) {
-        // Clusters interact strongly when they share a large number
-        // of 3D points. The degree-2 maximum spanning forest
-        // algorithm, iterates on the edges in decreasing order of
-        // their weight, which is the number of points shared by the
-        // two cameras that it connects.
-        cluster_graph->AddEdge(i, j, intersection.size());
-      }
-    }
-  }
-  return cluster_graph;
-}
-
-// Canonical views clustering returns a std::unordered_map from vertices to
-// cluster ids. Convert this into a flat array for quick lookup. It is
-// possible that some of the vertices may not be associated with any
-// cluster. In that case, randomly assign them to one of the clusters.
-//
-// The cluster ids can be non-contiguous integers. So as we flatten
-// the membership_map, we also map the cluster ids to a contiguous set
-// of integers so that the cluster ids are in [0, num_clusters_).
-void VisibilityBasedPreconditioner::FlattenMembershipMap(
-    const std::unordered_map<int, int>& membership_map,
-    std::vector<int>* membership_vector) const {
-  CHECK(membership_vector != nullptr);
-  membership_vector->resize(0);
-  membership_vector->resize(num_blocks_, -1);
-
-  std::unordered_map<int, int> cluster_id_to_index;
-  // Iterate over the cluster membership map and update the
-  // cluster_membership_ vector assigning arbitrary cluster ids to
-  // the few cameras that have not been clustered.
-  for (const auto& m : membership_map) {
-    const int camera_id = m.first;
-    int cluster_id = m.second;
-
-    // If the view was not clustered, randomly assign it to one of the
-    // clusters. This preserves the mathematical correctness of the
-    // preconditioner. If there are too many views which are not
-    // clustered, it may lead to some quality degradation though.
-    //
-    // TODO(sameeragarwal): Check if a large number of views have not
-    // been clustered and deal with it?
-    if (cluster_id == -1) {
-      cluster_id = camera_id % num_clusters_;
-    }
-
-    const int index = FindWithDefault(
-        cluster_id_to_index, cluster_id, cluster_id_to_index.size());
-
-    if (index == cluster_id_to_index.size()) {
-      cluster_id_to_index[cluster_id] = index;
-    }
-
-    CHECK_LT(index, num_clusters_);
-    membership_vector->at(camera_id) = index;
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/visibility_based_preconditioner.h b/third_party/ceres/internal/ceres/visibility_based_preconditioner.h
deleted file mode 100644
index d2d4aad..0000000
--- a/third_party/ceres/internal/ceres/visibility_based_preconditioner.h
+++ /dev/null
@@ -1,203 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-//
-// Preconditioners for linear systems that arise in Structure from
-// Motion problems. VisibilityBasedPreconditioner implements:
-//
-//  CLUSTER_JACOBI
-//  CLUSTER_TRIDIAGONAL
-//
-// Detailed descriptions of these preconditions beyond what is
-// documented here can be found in
-//
-// Visibility Based Preconditioning for Bundle Adjustment
-// A. Kushal & S. Agarwal, CVPR 2012.
-//
-// http://www.cs.washington.edu/homes/sagarwal/vbp.pdf
-//
-// The two preconditioners share enough code that its most efficient
-// to implement them as part of the same code base.
-
-#ifndef CERES_INTERNAL_VISIBILITY_BASED_PRECONDITIONER_H_
-#define CERES_INTERNAL_VISIBILITY_BASED_PRECONDITIONER_H_
-
-#include <memory>
-#include <set>
-#include <unordered_map>
-#include <unordered_set>
-#include <utility>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/graph.h"
-#include "ceres/linear_solver.h"
-#include "ceres/pair_hash.h"
-#include "ceres/preconditioner.h"
-#include "ceres/sparse_cholesky.h"
-
-namespace ceres::internal {
-
-class BlockRandomAccessSparseMatrix;
-class BlockSparseMatrix;
-struct CompressedRowBlockStructure;
-class SchurEliminatorBase;
-
-// This class implements visibility based preconditioners for
-// Structure from Motion/Bundle Adjustment problems. The name
-// VisibilityBasedPreconditioner comes from the fact that the sparsity
-// structure of the preconditioner matrix is determined by analyzing
-// the visibility structure of the scene, i.e. which cameras see which
-// points.
-//
-// The key idea of visibility based preconditioning is to identify
-// cameras that we expect have strong interactions, and then using the
-// entries in the Schur complement matrix corresponding to these
-// camera pairs as an approximation to the full Schur complement.
-//
-// CLUSTER_JACOBI identifies these camera pairs by clustering cameras,
-// and considering all non-zero camera pairs within each cluster. The
-// clustering in the current implementation is done using the
-// Canonical Views algorithm of Simon et al. (see
-// canonical_views_clustering.h). For the purposes of clustering, the
-// similarity or the degree of interaction between a pair of cameras
-// is measured by counting the number of points visible in both the
-// cameras. Thus the name VisibilityBasedPreconditioner. Further, if we
-// were to permute the parameter blocks such that all the cameras in
-// the same cluster occur contiguously, the preconditioner matrix will
-// be a block diagonal matrix with blocks corresponding to the
-// clusters. Thus in analogy with the Jacobi preconditioner we refer
-// to this as the CLUSTER_JACOBI preconditioner.
-//
-// CLUSTER_TRIDIAGONAL adds more mass to the CLUSTER_JACOBI
-// preconditioner by considering the interaction between clusters and
-// identifying strong interactions between cluster pairs. This is done
-// by constructing a weighted graph on the clusters, with the weight
-// on the edges connecting two clusters proportional to the number of
-// 3D points visible to cameras in both the clusters. A degree-2
-// maximum spanning forest is identified in this graph and the camera
-// pairs contained in the edges of this forest are added to the
-// preconditioner. The detailed reasoning for this construction is
-// explained in the paper mentioned above.
-//
-// Degree-2 spanning trees and forests have the property that they
-// correspond to tri-diagonal matrices. Thus there exist a permutation
-// of the camera blocks under which the CLUSTER_TRIDIAGONAL
-// preconditioner matrix is a block tridiagonal matrix, and thus the
-// name for the preconditioner.
-//
-// Thread Safety: This class is NOT thread safe.
-//
-// Example usage:
-//
-//   LinearSolver::Options options;
-//   options.preconditioner_type = CLUSTER_JACOBI;
-//   options.elimination_groups.push_back(num_points);
-//   options.elimination_groups.push_back(num_cameras);
-//   VisibilityBasedPreconditioner preconditioner(
-//      *A.block_structure(), options);
-//   preconditioner.Update(A, nullptr);
-//   preconditioner.RightMultiplyAndAccumulate(x, y);
-class CERES_NO_EXPORT VisibilityBasedPreconditioner
-    : public BlockSparseMatrixPreconditioner {
- public:
-  // Initialize the symbolic structure of the preconditioner. bs is
-  // the block structure of the linear system to be solved. It is used
-  // to determine the sparsity structure of the preconditioner matrix.
-  //
-  // It has the same structural requirement as other Schur complement
-  // based solvers. Please see schur_eliminator.h for more details.
-  VisibilityBasedPreconditioner(const CompressedRowBlockStructure& bs,
-                                Preconditioner::Options options);
-  VisibilityBasedPreconditioner(const VisibilityBasedPreconditioner&) = delete;
-  void operator=(const VisibilityBasedPreconditioner&) = delete;
-
-  ~VisibilityBasedPreconditioner() override;
-
-  // Preconditioner interface
-  void RightMultiplyAndAccumulate(const double* x, double* y) const final;
-  int num_rows() const final;
-
-  friend class VisibilityBasedPreconditionerTest;
-
- private:
-  bool UpdateImpl(const BlockSparseMatrix& A, const double* D) final;
-  void ComputeClusterJacobiSparsity(const CompressedRowBlockStructure& bs);
-  void ComputeClusterTridiagonalSparsity(const CompressedRowBlockStructure& bs);
-  void InitStorage(const CompressedRowBlockStructure& bs);
-  void InitEliminator(const CompressedRowBlockStructure& bs);
-  LinearSolverTerminationType Factorize();
-  void ScaleOffDiagonalCells();
-
-  void ClusterCameras(const std::vector<std::set<int>>& visibility);
-  void FlattenMembershipMap(const std::unordered_map<int, int>& membership_map,
-                            std::vector<int>* membership_vector) const;
-  void ComputeClusterVisibility(
-      const std::vector<std::set<int>>& visibility,
-      std::vector<std::set<int>>* cluster_visibility) const;
-  std::unique_ptr<WeightedGraph<int>> CreateClusterGraph(
-      const std::vector<std::set<int>>& visibility) const;
-  void ForestToClusterPairs(
-      const WeightedGraph<int>& forest,
-      std::unordered_set<std::pair<int, int>, pair_hash>* cluster_pairs) const;
-  void ComputeBlockPairsInPreconditioner(const CompressedRowBlockStructure& bs);
-  bool IsBlockPairInPreconditioner(int block1, int block2) const;
-  bool IsBlockPairOffDiagonal(int block1, int block2) const;
-
-  Preconditioner::Options options_;
-
-  // Number of parameter blocks in the schur complement.
-  int num_blocks_;
-  int num_clusters_;
-
-  // Sizes of the blocks in the schur complement.
-  std::vector<Block> blocks_;
-
-  // Mapping from cameras to clusters.
-  std::vector<int> cluster_membership_;
-
-  // Non-zero camera pairs from the schur complement matrix that are
-  // present in the preconditioner, sorted by row (first element of
-  // each pair), then column (second).
-  std::set<std::pair<int, int>> block_pairs_;
-
-  // Set of cluster pairs (including self pairs (i,i)) in the
-  // preconditioner.
-  std::unordered_set<std::pair<int, int>, pair_hash> cluster_pairs_;
-  std::unique_ptr<SchurEliminatorBase> eliminator_;
-
-  // Preconditioner matrix.
-  std::unique_ptr<BlockRandomAccessSparseMatrix> m_;
-  std::unique_ptr<CompressedRowSparseMatrix> m_crs_;
-  std::unique_ptr<SparseCholesky> sparse_cholesky_;
-};
-
-}  // namespace ceres::internal
-
-#endif  // CERES_INTERNAL_VISIBILITY_BASED_PRECONDITIONER_H_
diff --git a/third_party/ceres/internal/ceres/visibility_based_preconditioner_test.cc b/third_party/ceres/internal/ceres/visibility_based_preconditioner_test.cc
deleted file mode 100644
index 4d52753..0000000
--- a/third_party/ceres/internal/ceres/visibility_based_preconditioner_test.cc
+++ /dev/null
@@ -1,342 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/visibility_based_preconditioner.h"
-
-#include <memory>
-
-#include "Eigen/Dense"
-#include "ceres/block_random_access_dense_matrix.h"
-#include "ceres/block_random_access_sparse_matrix.h"
-#include "ceres/block_sparse_matrix.h"
-#include "ceres/casts.h"
-#include "ceres/file.h"
-#include "ceres/internal/eigen.h"
-#include "ceres/linear_least_squares_problems.h"
-#include "ceres/schur_eliminator.h"
-#include "ceres/stringprintf.h"
-#include "ceres/test_util.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-// TODO(sameeragarwal): Re-enable this test once serialization is
-// working again.
-
-// using testing::AssertionResult;
-// using testing::AssertionSuccess;
-// using testing::AssertionFailure;
-
-// static const double kTolerance = 1e-12;
-
-// class VisibilityBasedPreconditionerTest : public ::testing::Test {
-//  public:
-//   static const int kCameraSize = 9;
-
-//  protected:
-//   void SetUp() {
-//     string input_file = TestFileAbsolutePath("problem-6-1384-000.lsqp");
-
-//     std::unique_ptr<LinearLeastSquaresProblem> problem =
-//     CreateLinearLeastSquaresProblemFromFile(input_file));
-//     A_.reset(down_cast<BlockSparseMatrix*>(problem->A.release()));
-//     b_.reset(problem->b.release());
-//     D_.reset(problem->D.release());
-
-//     const CompressedRowBlockStructure* bs =
-//         CHECK_NOTNULL(A_->block_structure());
-//     const int num_col_blocks = bs->cols.size();
-
-//     num_cols_ = A_->num_cols();
-//     num_rows_ = A_->num_rows();
-//     num_eliminate_blocks_ = problem->num_eliminate_blocks;
-//     num_camera_blocks_ = num_col_blocks - num_eliminate_blocks_;
-//     options_.elimination_groups.push_back(num_eliminate_blocks_);
-//     options_.elimination_groups.push_back(
-//         A_->block_structure()->cols.size() - num_eliminate_blocks_);
-
-//     vector<int> blocks(num_col_blocks - num_eliminate_blocks_, 0);
-//     for (int i = num_eliminate_blocks_; i < num_col_blocks; ++i) {
-//       blocks[i - num_eliminate_blocks_] = bs->cols[i].size;
-//     }
-
-//     // The input matrix is a real jacobian and fairly poorly
-//     // conditioned. Setting D to a large constant makes the normal
-//     // equations better conditioned and makes the tests below better
-//     // conditioned.
-//     VectorRef(D_.get(), num_cols_).setConstant(10.0);
-
-//     schur_complement_ =
-//     std::make_unique<BlockRandomAccessDenseMatrix>(blocks);
-//     Vector rhs(schur_complement_->num_rows());
-
-//     std::unique_ptr<SchurEliminatorBase> eliminator;
-//     LinearSolver::Options eliminator_options;
-//     eliminator_options.elimination_groups = options_.elimination_groups;
-//     eliminator_options.num_threads = options_.num_threads;
-
-//     eliminator = SchurEliminatorBase::Create(eliminator_options);
-//     eliminator->Init(num_eliminate_blocks_, bs);
-//     eliminator->Eliminate(A_.get(), b_.get(), D_.get(),
-//                           schur_complement_.get(), rhs.data());
-//   }
-
-//   AssertionResult IsSparsityStructureValid() {
-//     preconditioner_->InitStorage(*A_->block_structure());
-//     const std::unordered_set<pair<int, int>, pair_hash>& cluster_pairs =
-//     get_cluster_pairs(); const vector<int>& cluster_membership =
-//     get_cluster_membership();
-
-//     for (int i = 0; i < num_camera_blocks_; ++i) {
-//       for (int j = i; j < num_camera_blocks_; ++j) {
-//         if (cluster_pairs.count(make_pair(cluster_membership[i],
-//                                           cluster_membership[j]))) {
-//           if (!IsBlockPairInPreconditioner(i, j)) {
-//             return AssertionFailure()
-//                 << "block pair (" << i << "," << j << "missing";
-//           }
-//         } else {
-//           if (IsBlockPairInPreconditioner(i, j)) {
-//             return AssertionFailure()
-//                << "block pair (" << i << "," << j << "should not be present";
-//           }
-//         }
-//       }
-//     }
-//     return AssertionSuccess();
-//   }
-
-//   AssertionResult PreconditionerValuesMatch() {
-//     preconditioner_->Update(*A_, D_.get());
-//     const std::unordered_set<pair<int, int>, pair_hash>& cluster_pairs =
-//     get_cluster_pairs(); const BlockRandomAccessSparseMatrix* m = get_m();
-//     Matrix preconditioner_matrix;
-//     m->matrix()->ToDenseMatrix(&preconditioner_matrix);
-//     ConstMatrixRef full_schur_complement(schur_complement_->values(),
-//                                          m->num_rows(),
-//                                          m->num_rows());
-//     const int num_clusters = get_num_clusters();
-//     const int kDiagonalBlockSize =
-//         kCameraSize * num_camera_blocks_ / num_clusters;
-
-//     for (int i = 0; i < num_clusters; ++i) {
-//       for (int j = i; j < num_clusters; ++j) {
-//         double diff = 0.0;
-//         if (cluster_pairs.count(make_pair(i, j))) {
-//           diff =
-//               (preconditioner_matrix.block(kDiagonalBlockSize * i,
-//                                            kDiagonalBlockSize * j,
-//                                            kDiagonalBlockSize,
-//                                            kDiagonalBlockSize) -
-//                full_schur_complement.block(kDiagonalBlockSize * i,
-//                                            kDiagonalBlockSize * j,
-//                                            kDiagonalBlockSize,
-//                                            kDiagonalBlockSize)).norm();
-//         } else {
-//           diff = preconditioner_matrix.block(kDiagonalBlockSize * i,
-//                                              kDiagonalBlockSize * j,
-//                                              kDiagonalBlockSize,
-//                                              kDiagonalBlockSize).norm();
-//         }
-//         if (diff > kTolerance) {
-//           return AssertionFailure()
-//               << "Preconditioner block " << i << " " << j << " differs "
-//               << "from expected value by " << diff;
-//         }
-//       }
-//     }
-//     return AssertionSuccess();
-//   }
-
-//   // Accessors
-//   int get_num_blocks() { return preconditioner_->num_blocks_; }
-
-//   int get_num_clusters() { return preconditioner_->num_clusters_; }
-//   int* get_mutable_num_clusters() { return &preconditioner_->num_clusters_; }
-
-//   const vector<int>& get_block_size() {
-//     return preconditioner_->block_size_; }
-
-//   vector<int>* get_mutable_block_size() {
-//     return &preconditioner_->block_size_; }
-
-//   const vector<int>& get_cluster_membership() {
-//     return preconditioner_->cluster_membership_;
-//   }
-
-//   vector<int>* get_mutable_cluster_membership() {
-//     return &preconditioner_->cluster_membership_;
-//   }
-
-//   const set<pair<int, int>>& get_block_pairs() {
-//     return preconditioner_->block_pairs_;
-//   }
-
-//   set<pair<int, int>>* get_mutable_block_pairs() {
-//     return &preconditioner_->block_pairs_;
-//   }
-
-//   const std::unordered_set<pair<int, int>, pair_hash>& get_cluster_pairs() {
-//     return preconditioner_->cluster_pairs_;
-//   }
-
-//   std::unordered_set<pair<int, int>, pair_hash>* get_mutable_cluster_pairs()
-//   {
-//     return &preconditioner_->cluster_pairs_;
-//   }
-
-//   bool IsBlockPairInPreconditioner(const int block1, const int block2) {
-//     return preconditioner_->IsBlockPairInPreconditioner(block1, block2);
-//   }
-
-//   bool IsBlockPairOffDiagonal(const int block1, const int block2) {
-//     return preconditioner_->IsBlockPairOffDiagonal(block1, block2);
-//   }
-
-//   const BlockRandomAccessSparseMatrix* get_m() {
-//     return preconditioner_->m_.get();
-//   }
-
-//   int num_rows_;
-//   int num_cols_;
-//   int num_eliminate_blocks_;
-//   int num_camera_blocks_;
-
-//   std::unique_ptr<BlockSparseMatrix> A_;
-//   std::unique_ptr<double[]> b_;
-//   std::unique_ptr<double[]> D_;
-
-//   Preconditioner::Options options_;
-//   std::unique_ptr<VisibilityBasedPreconditioner> preconditioner_;
-//   std::unique_ptr<BlockRandomAccessDenseMatrix> schur_complement_;
-// };
-
-// TEST_F(VisibilityBasedPreconditionerTest, OneClusterClusterJacobi) {
-//   options_.type = CLUSTER_JACOBI;
-//   preconditioner_ =
-//       std::make_unique<VisibilityBasedPreconditioner>(
-//          *A_->block_structure(), options_);
-
-//   // Override the clustering to be a single clustering containing all
-//   // the cameras.
-//   vector<int>& cluster_membership = *get_mutable_cluster_membership();
-//   for (int i = 0; i < num_camera_blocks_; ++i) {
-//     cluster_membership[i] = 0;
-//   }
-
-//   *get_mutable_num_clusters() = 1;
-
-//   std::unordered_set<pair<int, int>, pair_hash>& cluster_pairs =
-//   *get_mutable_cluster_pairs(); cluster_pairs.clear();
-//   cluster_pairs.insert(make_pair(0, 0));
-
-//   EXPECT_TRUE(IsSparsityStructureValid());
-//   EXPECT_TRUE(PreconditionerValuesMatch());
-
-//   // Multiplication by the inverse of the preconditioner.
-//   const int num_rows = schur_complement_->num_rows();
-//   ConstMatrixRef full_schur_complement(schur_complement_->values(),
-//                                        num_rows,
-//                                        num_rows);
-//   Vector x(num_rows);
-//   Vector y(num_rows);
-//   Vector z(num_rows);
-
-//   for (int i = 0; i < num_rows; ++i) {
-//     x.setZero();
-//     y.setZero();
-//     z.setZero();
-//     x[i] = 1.0;
-//     preconditioner_->RightMultiplyAndAccumulate(x.data(), y.data());
-//     z = full_schur_complement
-//         .selfadjointView<Eigen::Upper>()
-//         .llt().solve(x);
-//     double max_relative_difference =
-//         ((y - z).array() / z.array()).matrix().lpNorm<Eigen::Infinity>();
-//     EXPECT_NEAR(max_relative_difference, 0.0, kTolerance);
-//   }
-// }
-
-// TEST_F(VisibilityBasedPreconditionerTest, ClusterJacobi) {
-//   options_.type = CLUSTER_JACOBI;
-//   preconditioner_ =
-//   std::make_unique<VisibilityBasedPreconditioner>(*A_->block_structure(),
-//   options_);
-
-//   // Override the clustering to be equal number of cameras.
-//   vector<int>& cluster_membership = *get_mutable_cluster_membership();
-//   cluster_membership.resize(num_camera_blocks_);
-//   static const int kNumClusters = 3;
-
-//   for (int i = 0; i < num_camera_blocks_; ++i) {
-//     cluster_membership[i] = (i * kNumClusters) / num_camera_blocks_;
-//   }
-//   *get_mutable_num_clusters() = kNumClusters;
-
-//   std::unordered_set<pair<int, int>, pair_hash>& cluster_pairs =
-//   *get_mutable_cluster_pairs(); cluster_pairs.clear(); for (int i = 0; i <
-//   kNumClusters; ++i) {
-//     cluster_pairs.insert(make_pair(i, i));
-//   }
-
-//   EXPECT_TRUE(IsSparsityStructureValid());
-//   EXPECT_TRUE(PreconditionerValuesMatch());
-// }
-
-// TEST_F(VisibilityBasedPreconditionerTest, ClusterTridiagonal) {
-//   options_.type = CLUSTER_TRIDIAGONAL;
-//   preconditioner_ =
-//     std::make_unique<VisibilityBasedPreconditioner>(*A_->block_structure(),
-//     options_);
-//   static const int kNumClusters = 3;
-
-//   // Override the clustering to be 3 clusters.
-//   vector<int>& cluster_membership = *get_mutable_cluster_membership();
-//   cluster_membership.resize(num_camera_blocks_);
-//   for (int i = 0; i < num_camera_blocks_; ++i) {
-//     cluster_membership[i] = (i * kNumClusters) / num_camera_blocks_;
-//   }
-//   *get_mutable_num_clusters() = kNumClusters;
-
-//   // Spanning forest has structure 0-1 2
-//   std::unordered_set<pair<int, int>, pair_hash>& cluster_pairs =
-//   *get_mutable_cluster_pairs(); cluster_pairs.clear(); for (int i = 0; i <
-//   kNumClusters; ++i) {
-//     cluster_pairs.insert(make_pair(i, i));
-//   }
-//   cluster_pairs.insert(make_pair(0, 1));
-
-//   EXPECT_TRUE(IsSparsityStructureValid());
-//   EXPECT_TRUE(PreconditionerValuesMatch());
-// }
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/visibility_test.cc b/third_party/ceres/internal/ceres/visibility_test.cc
deleted file mode 100644
index 3efc77c..0000000
--- a/third_party/ceres/internal/ceres/visibility_test.cc
+++ /dev/null
@@ -1,200 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: kushalav@google.com (Avanish Kushal)
-//         sameeragarwal@google.com (Sameer Agarwal)
-
-#include "ceres/visibility.h"
-
-#include <memory>
-#include <set>
-#include <vector>
-
-#include "ceres/block_structure.h"
-#include "ceres/graph.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
-
-namespace ceres::internal {
-
-class VisibilityTest : public ::testing::Test {};
-
-TEST(VisibilityTest, SimpleMatrix) {
-  //   A = [1 0 0 0 0 1
-  //        1 0 0 1 0 0
-  //        0 1 1 0 0 0
-  //        0 1 0 0 1 0]
-
-  int num_cols = 6;
-  int num_eliminate_blocks = 2;
-  CompressedRowBlockStructure bs;
-
-  // Row 1
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-    row.cells.emplace_back(5, 0);
-  }
-
-  // Row 2
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 2;
-    row.cells.emplace_back(0, 1);
-    row.cells.emplace_back(3, 1);
-  }
-
-  // Row 3
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 4;
-    row.cells.emplace_back(1, 2);
-    row.cells.emplace_back(2, 2);
-  }
-
-  // Row 4
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 6;
-    row.cells.emplace_back(1, 3);
-    row.cells.emplace_back(4, 3);
-  }
-  bs.cols.resize(num_cols);
-
-  std::vector<std::set<int>> visibility;
-  ComputeVisibility(bs, num_eliminate_blocks, &visibility);
-  ASSERT_EQ(visibility.size(), num_cols - num_eliminate_blocks);
-  for (const auto& visible : visibility) {
-    ASSERT_EQ(visible.size(), 1);
-  }
-
-  std::unique_ptr<WeightedGraph<int>> graph(
-      CreateSchurComplementGraph(visibility));
-  EXPECT_EQ(graph->vertices().size(), visibility.size());
-  for (int i = 0; i < visibility.size(); ++i) {
-    EXPECT_EQ(graph->VertexWeight(i), 1.0);
-  }
-
-  for (int i = 0; i < visibility.size(); ++i) {
-    for (int j = i; j < visibility.size(); ++j) {
-      double edge_weight = 0.0;
-      if ((i == 1 && j == 3) || (i == 0 && j == 2) || (i == j)) {
-        edge_weight = 1.0;
-      }
-
-      EXPECT_EQ(graph->EdgeWeight(i, j), edge_weight)
-          << "Edge: " << i << " " << j << " weight: " << graph->EdgeWeight(i, j)
-          << " expected weight: " << edge_weight;
-    }
-  }
-}
-
-TEST(VisibilityTest, NoEBlocks) {
-  //   A = [1 0 0 0 0 0
-  //        1 0 0 0 0 0
-  //        0 1 0 0 0 0
-  //        0 1 0 0 0 0]
-
-  int num_cols = 6;
-  int num_eliminate_blocks = 2;
-  CompressedRowBlockStructure bs;
-
-  // Row 1
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 0;
-    row.cells.emplace_back(0, 0);
-  }
-
-  // Row 2
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 2;
-    row.cells.emplace_back(0, 1);
-  }
-
-  // Row 3
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 4;
-    row.cells.emplace_back(1, 2);
-  }
-
-  // Row 4
-  {
-    bs.rows.emplace_back();
-    CompressedRow& row = bs.rows.back();
-    row.block.size = 2;
-    row.block.position = 6;
-    row.cells.emplace_back(1, 3);
-  }
-  bs.cols.resize(num_cols);
-
-  std::vector<std::set<int>> visibility;
-  ComputeVisibility(bs, num_eliminate_blocks, &visibility);
-  ASSERT_EQ(visibility.size(), num_cols - num_eliminate_blocks);
-  for (const auto& visible : visibility) {
-    ASSERT_EQ(visible.size(), 0);
-  }
-
-  std::unique_ptr<WeightedGraph<int>> graph(
-      CreateSchurComplementGraph(visibility));
-  EXPECT_EQ(graph->vertices().size(), visibility.size());
-  for (int i = 0; i < visibility.size(); ++i) {
-    EXPECT_EQ(graph->VertexWeight(i), 1.0);
-  }
-
-  for (int i = 0; i < visibility.size(); ++i) {
-    for (int j = i; j < visibility.size(); ++j) {
-      double edge_weight = 0.0;
-      if (i == j) {
-        edge_weight = 1.0;
-      }
-      EXPECT_EQ(graph->EdgeWeight(i, j), edge_weight)
-          << "Edge: " << i << " " << j << " weight: " << graph->EdgeWeight(i, j)
-          << " expected weight: " << edge_weight;
-    }
-  }
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/wall_time.cc b/third_party/ceres/internal/ceres/wall_time.cc
deleted file mode 100644
index 2f4cf28..0000000
--- a/third_party/ceres/internal/ceres/wall_time.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-
-#include "ceres/wall_time.h"
-
-#include <ctime>
-
-#include "ceres/internal/config.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#else
-#include <sys/time.h>
-#endif
-
-namespace ceres::internal {
-
-double WallTimeInSeconds() {
-#ifdef _WIN32
-  LARGE_INTEGER count;
-  LARGE_INTEGER frequency;
-  QueryPerformanceCounter(&count);
-  QueryPerformanceFrequency(&frequency);
-  return static_cast<double>(count.QuadPart) /
-         static_cast<double>(frequency.QuadPart);
-#else
-  timeval time_val;
-  gettimeofday(&time_val, nullptr);
-  return (time_val.tv_sec + time_val.tv_usec * 1e-6);
-#endif
-}
-
-EventLogger::EventLogger(const std::string& logger_name) {
-  if (!VLOG_IS_ON(3)) {
-    return;
-  }
-
-  start_time_ = WallTimeInSeconds();
-  last_event_time_ = start_time_;
-  events_ = StringPrintf(
-      "\n%s\n                                        Delta   Cumulative\n",
-      logger_name.c_str());
-}
-
-EventLogger::~EventLogger() {
-  if (!VLOG_IS_ON(3)) {
-    return;
-  }
-  AddEvent("Total");
-  VLOG(3) << "\n" << events_ << "\n";
-}
-
-void EventLogger::AddEvent(const std::string& event_name) {
-  if (!VLOG_IS_ON(3)) {
-    return;
-  }
-
-  const double current_time = WallTimeInSeconds();
-  const double relative_time_delta = current_time - last_event_time_;
-  const double absolute_time_delta = current_time - start_time_;
-  last_event_time_ = current_time;
-
-  StringAppendF(&events_,
-                "  %30s : %10.5f   %10.5f\n",
-                event_name.c_str(),
-                relative_time_delta,
-                absolute_time_delta);
-}
-
-}  // namespace ceres::internal
diff --git a/third_party/ceres/internal/ceres/wall_time.h b/third_party/ceres/internal/ceres/wall_time.h
deleted file mode 100644
index f99052b..0000000
--- a/third_party/ceres/internal/ceres/wall_time.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: strandmark@google.com (Petter Strandmark)
-
-#ifndef CERES_INTERNAL_WALL_TIME_H_
-#define CERES_INTERNAL_WALL_TIME_H_
-
-#include <map>
-#include <string>
-
-#include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/export.h"
-#include "ceres/stringprintf.h"
-#include "glog/logging.h"
-
-namespace ceres::internal {
-
-// Returns time, in seconds, from some arbitrary starting point. On unixes,
-// gettimeofday is used. The granularity is microseconds.
-CERES_NO_EXPORT double WallTimeInSeconds();
-
-// Log a series of events, recording for each event the time elapsed
-// since the last event and since the creation of the object.
-//
-// The information is output to VLOG(3) upon destruction. A
-// name::Total event is added as the final event right before
-// destruction.
-//
-// Example usage:
-//
-//  void Foo() {
-//    EventLogger event_logger("Foo");
-//    Bar1();
-//    event_logger.AddEvent("Bar1")
-//    Bar2();
-//    event_logger.AddEvent("Bar2")
-//    Bar3();
-//  }
-//
-// Will produce output that looks like
-//
-//  Foo
-//      Bar1:  time1  time1
-//      Bar2:  time2  time1 + time2;
-//     Total:  time3  time1 + time2 + time3;
-class CERES_NO_EXPORT EventLogger {
- public:
-  explicit EventLogger(const std::string& logger_name);
-  ~EventLogger();
-  void AddEvent(const std::string& event_name);
-
- private:
-  double start_time_;
-  double last_event_time_;
-  std::string events_;
-};
-
-}  // namespace ceres::internal
-
-#include "ceres/internal/reenable_warnings.h"
-
-#endif  // CERES_INTERNAL_WALL_TIME_H_
diff --git a/third_party/ceres/package.xml b/third_party/ceres/package.xml
deleted file mode 100644
index 9d43e43..0000000
--- a/third_party/ceres/package.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2023 Google Inc. All rights reserved.
-  http://ceres-solver.org/
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of Google Inc. nor the names of its contributors may be
-    used to endorse or promote products derived from this software without
-    specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
--->
-
-<package format="2">
-  <name>ceres-solver</name>
-  <version>2.2.0</version>
-  <description>A large scale non-linear optimization library.</description>
-  <maintainer email="ceres-solver@googlegroups.com">
-    The Ceres Solver Authors
-  </maintainer>
-  <license>New BSD</license>
-  <url type="website">http://ceres-solver.org/</url>
-
-  <buildtool_depend>cmake</buildtool_depend>
-
-  <build_depend>atlas</build_depend>
-  <build_depend>gfortran</build_depend>
-  <build_depend>suitesparse</build_depend>
-  <depend>eigen</depend>
-  <depend>libgflags-dev</depend>
-  <depend>libgoogle-glog-dev</depend>
-
-  <export>
-    <build_type>cmake</build_type>
-  </export>
-</package>
diff --git a/third_party/ceres/scripts/format_all.sh b/third_party/ceres/scripts/format_all.sh
deleted file mode 100755
index 565ac0c..0000000
--- a/third_party/ceres/scripts/format_all.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env bash
-
-# Format all source files in the project.
-#
-# Set CLANG_FORMAT_CMD environment variable to specify executable used (default: `clang-format`).
-
-set -e
-
-################################################################################
-# Configuration
-
-# folders to search
-FOLDERS="
-    include
-    internal
-    examples
-"
-
-# paths to ignore
-EXCLUDE_PATHS="
-    internal/ceres/gtest/*
-    internal/ceres/gmock/*
-    internal/ceres/gmock_gtest_all.cc
-    internal/ceres/gmock_main.cc
-    internal/ceres/generated/*
-    internal/ceres/generated_bundle_adjustment_tests/*
-    internal/ceres/schur_eliminator.cc
-    internal/ceres/partitioned_matrix_view.cc
-    internal/ceres/schur_templates.cc
-"
-
-################################################################################
-# Implementation
-
-# directory of this script and the repository root
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-REPO_DIR="$SCRIPT_DIR/.."
-
-# set default for CLANG_FORMAT_CMD
-CLANG_FORMAT_CMD=${CLANG_FORMAT_CMD:-clang-format}
-echo "Formatting with $CLANG_FORMAT_CMD (`$CLANG_FORMAT_CMD --version`)"
-
-# prepare arguments to exclude ignored paths
-EXCLUDE_ARGS=""
-for p in $EXCLUDE_PATHS; do
-    EXCLUDE_ARGS="-not -path */$p $EXCLUDE_ARGS"
-done
-
-# for each folder, format header and source dirs
-for d in $FOLDERS; do
-    d="$REPO_DIR/$d"
-    find "$d" \( -name "*.h" -or -name "*.cc" \) $EXCLUDE_ARGS | xargs $CLANG_FORMAT_CMD -verbose -i
-done
diff --git a/third_party/ceres/scripts/make_docs.py b/third_party/ceres/scripts/make_docs.py
deleted file mode 100644
index 9eab97e..0000000
--- a/third_party/ceres/scripts/make_docs.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/python3
-# encoding: utf-8
-#
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: sameeragarwal@google.com (Sameer Agarwal)
-#
-# Note: You will need Sphinx and Pygments installed for this to work.
-
-from __future__ import print_function
-import glob
-import io
-import os
-import sys
-
-# Number of arguments
-N = len(sys.argv)
-
-if N < 3:
-  print('make_docs.py src_root destination_root')
-  sys.exit(1)
-
-src_dir    = sys.argv[1] + '/docs/source'
-build_root = sys.argv[2]
-cache_dir  = build_root + '/doctrees'
-html_dir   = build_root + '/html'
-
-# Called from Command Line
-if N == 3:
-  sphinx_exe = 'sphinx-build'
-
-# Called from CMake (using the SPHINX_EXECUTABLE found)
-elif N == 4:
-  sphinx_exe = sys.argv[3]
-
-# Run Sphinx to build the documentation.
-os.system('%s -n -a -d %s %s %s' %(sphinx_exe, cache_dir, src_dir, html_dir))
-
-replacements = [
-  # The title for the homepage is not ideal, so change it.
-  ('<title>Ceres Solver &mdash; Ceres Solver</title>',
-   '<title>Ceres Solver &mdash; A Large Scale Non-linear Optimization Library</title>')
-]
-
-for name in glob.glob('%s/*.html' % html_dir):
-  print('Postprocessing: ', name)
-  with io.open(name, encoding="utf-8") as fptr:
-    out = fptr.read()
-
-  for input_pattern, output_pattern in replacements:
-    out = out.replace(input_pattern, output_pattern)
-
-  with io.open(name, 'w', encoding="utf-8") as fptr:
-    fptr.write(out)
diff --git a/third_party/ceres/scripts/make_release b/third_party/ceres/scripts/make_release
deleted file mode 100755
index 8ec84bf..0000000
--- a/third_party/ceres/scripts/make_release
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-#
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2023 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: mierle@gmail.com (Keir Mierle)
-#
-# Note: You will need Sphinx and Pygments installed for this to work.
-
-if [ -z $1 ] ; then
-  echo 'usage: scripts/make_release <version>'
-  echo '       must be run from toplevel Ceres source directory'
-  exit 1
-fi
-
-TMP="/tmp/ceres-solver-$1"
-DOCS_TMP="/tmp/ceres-solver-docs-$1"
-VERSION=$(grep '#define CERES_VERSION_' include/ceres/version.h | \
-          sed -e 's/#define CERES_VERSION_STRING.*$//' | \
-          sed -e 's/\(^#define CERES_VERSION_[MR^S].[A-Z]*\) \([0-9]\)/\2/' | \
-          tr '\n' '.' | \
-          sed -e 's/..$//')
-GIT_COMMIT=$(git log -1 HEAD |grep commit)
-
-if [[ $1 != $VERSION ]] ; then
-  echo "ERROR: Version from the command line $1 does not match CERES_VERSION"
-  echo "       in include/ceres/version.h, which is $VERSION. You may not be in the "
-  echo "       toplevel source dir."
-  exit 1
-fi
-
-# Export repository.
-git checkout-index -f -a --prefix=$TMP/
-
-# Build the VERSION file.
-VERSIONFILE=$TMP/VERSION
-echo "version $VERSION" >> $VERSIONFILE
-echo "$GIT_COMMIT" >> $VERSIONFILE
-
-# Build the documentation.
-python3 $TMP/scripts/make_docs.py $TMP $DOCS_TMP
-cp -pr $DOCS_TMP/html $TMP/docs
-
-# Build the tarball.
-cd /tmp
-tar -cvzf "ceres-solver-$1.tar.gz" "ceres-solver-$1"
-
-# Don't leave a mess behind.
-rm -rf $TMP
-rm -rf $DOCS_TMP
-
-# Reminder to upload.
-cat <<EOF
-
-TODO:
-  - Upload /tmp/ceres-solver-$1.tar.gz
-EOF
